From 167a4cafab04eb93988300f9bc8be79710a81e5a Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 1 Feb 2024 15:46:43 +0000 Subject: [PATCH 001/129] form builder 'init' --- .gitignore | 4 +- apps/form-builder-e2e/.eslintrc.json | 10 + apps/form-builder-e2e/cypress.config.ts | 6 + apps/form-builder-e2e/project.json | 30 + apps/form-builder-e2e/src/e2e/app.cy.ts | 13 + .../src/fixtures/example.json | 4 + apps/form-builder-e2e/src/support/app.po.ts | 1 + apps/form-builder-e2e/src/support/commands.ts | 33 + apps/form-builder-e2e/src/support/e2e.ts | 17 + apps/form-builder-e2e/tsconfig.json | 10 + apps/form-builder/.eslintrc.json | 40 + apps/form-builder/.vscode/settings.json | 1 + .../components/Layout/Layout.css.ts | 21 + .../form-builder/components/Layout/Layout.tsx | 76 ++ .../LicenseProviderDropdown.tsx | 40 + .../MainContent/MainContent.css.tsx | 10 + .../components/MainContent/MainContent.tsx | 120 +++ .../components/BaseSettings/BaseSettings.tsx | 162 ++++ .../components/InputContent/InputContent.tsx | 116 +++ .../InputContent/components/BaseInput.tsx | 192 +++++ .../components/FileUpload/FileUpload.tsx | 131 +++ .../components/FileUpload/fileSizes.json | 44 + .../components/MessageWithLink.tsx | 133 +++ .../InputContent/components/NumberInput.tsx | 105 +++ .../InputContent/components/TimeInput.tsx | 36 + .../components/ListBuilder/ListBuilder.tsx | 202 +++++ .../ListBuilder/components/ListItem.tsx | 343 ++++++++ .../components/ListContent/ListContent.tsx | 98 +++ .../components/Payments/Payments.css.ts | 8 + .../components/Payments/Payments.tsx | 55 ++ .../components/Premises/Premises.tsx | 55 ++ .../components/Preview/Preview.tsx | 111 +++ .../Preview/components/Banknumber.tsx | 90 ++ .../Preview/components/Currency.tsx | 30 + .../components/Preview/components/Email.tsx | 32 + .../Preview/components/FileUpload.tsx | 118 +++ .../components/Preview/components/List.tsx | 29 + .../components/MessageWithLinkButton.tsx | 64 ++ .../Preview/components/NumberInput.tsx | 45 + .../Preview/components/PhoneInput.tsx | 20 + .../components/Preview/components/Radio.tsx | 57 ++ .../components/Preview/components/Ssn.tsx | 21 + .../Preview/components/TimeSelect.tsx | 217 +++++ .../UtilizationSummary/UtilizationSummary.tsx | 11 + .../PreviewStepOrGroup/MultiSet/MultiSet.tsx | 62 ++ .../PreviewStepOrGroup/PreviewStepOrGroup.tsx | 109 +++ .../RelevantParties/RelevantParties.tsx | 155 ++++ .../components/SingleParty.tsx | 84 ++ .../form-builder/components/Navbar/Navbar.tsx | 342 ++++++++ .../NavComponent/NavComponent.css.ts | 93 +++ .../components/NavComponent/NavComponent.tsx | 183 +++++ .../NavComponent/components/NavButtons.tsx | 46 ++ .../components/NavbarTab/NavbarTab.css.tsx | 20 + .../Navbar/components/NavbarTab/NavbarTab.tsx | 57 ++ .../components/NavbarSelect/NavbarSelect.tsx | 64 ++ .../components/SelectNavComponent.tsx | 148 ++++ .../components/selectNavComponent.css.ts | 93 +++ .../components/TableRow/TableRow.css.tsx | 8 + .../components/TableRow/TableRow.tsx | 203 +++++ apps/form-builder/components/Tabs/index.tsx | 51 ++ apps/form-builder/components/Tabs/tabs.css.ts | 14 + .../TranslationTag/TranslationTag.tsx | 12 + .../context/FormBuilderContext.tsx | 60 ++ apps/form-builder/context/LayoutContext.tsx | 14 + apps/form-builder/environments/environment.ts | 9 + apps/form-builder/hooks/fileUploadReducer.ts | 43 + apps/form-builder/hooks/formReducer.tsx | 183 +++++ apps/form-builder/hooks/headerInfoReducer.tsx | 29 + apps/form-builder/hooks/listsReducer.tsx | 772 ++++++++++++++++++ apps/form-builder/index.d.ts | 6 + apps/form-builder/jest.config.ts | 11 + apps/form-builder/lib/fileTypes.json | 15 + apps/form-builder/next-env.d.ts | 5 + apps/form-builder/next.config.js | 39 + apps/form-builder/pages/Form/[id]/index.tsx | 29 + apps/form-builder/pages/Form/index.tsx | 22 + apps/form-builder/pages/_app.tsx | 25 + apps/form-builder/pages/forms.tsx | 22 + apps/form-builder/pages/index.tsx | 23 + apps/form-builder/project.json | 108 +++ apps/form-builder/proxy.config.json | 6 + apps/form-builder/public/.gitkeep | 0 apps/form-builder/public/favicon.ico | Bin 0 -> 15086 bytes apps/form-builder/screens/Form.tsx | 214 +++++ apps/form-builder/screens/Forms.tsx | 78 ++ apps/form-builder/screens/index.tsx | 2 + apps/form-builder/server.ts | 12 + apps/form-builder/services/apiService.tsx | 268 ++++++ .../services/translationStation.tsx | 62 ++ apps/form-builder/tsconfig.json | 54 ++ apps/form-builder/tsconfig.server.json | 11 + apps/form-builder/tsconfig.spec.json | 21 + apps/form-builder/types/enums/index.tsx | 91 +++ apps/form-builder/types/interfaces.tsx | 224 +++++ apps/form-builder/utils/defaultStep.tsx | 20 + apps/form-builder/utils/formatDate.tsx | 8 + .../utils/getBaseSettingsStep.tsx | 19 + package.json | 5 +- yarn.lock | 153 ++-- 99 files changed, 7302 insertions(+), 66 deletions(-) create mode 100644 apps/form-builder-e2e/.eslintrc.json create mode 100644 apps/form-builder-e2e/cypress.config.ts create mode 100644 apps/form-builder-e2e/project.json create mode 100644 apps/form-builder-e2e/src/e2e/app.cy.ts create mode 100644 apps/form-builder-e2e/src/fixtures/example.json create mode 100644 apps/form-builder-e2e/src/support/app.po.ts create mode 100644 apps/form-builder-e2e/src/support/commands.ts create mode 100644 apps/form-builder-e2e/src/support/e2e.ts create mode 100644 apps/form-builder-e2e/tsconfig.json create mode 100644 apps/form-builder/.eslintrc.json create mode 100644 apps/form-builder/.vscode/settings.json create mode 100644 apps/form-builder/components/Layout/Layout.css.ts create mode 100644 apps/form-builder/components/Layout/Layout.tsx create mode 100644 apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx create mode 100644 apps/form-builder/components/MainContent/MainContent.css.tsx create mode 100644 apps/form-builder/components/MainContent/MainContent.tsx create mode 100644 apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx create mode 100644 apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx create mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx create mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/FileUpload.tsx create mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/fileSizes.json create mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx create mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/NumberInput.tsx create mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx create mode 100644 apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx create mode 100644 apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx create mode 100644 apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx create mode 100644 apps/form-builder/components/MainContent/components/Payments/Payments.css.ts create mode 100644 apps/form-builder/components/MainContent/components/Payments/Payments.tsx create mode 100644 apps/form-builder/components/MainContent/components/Premises/Premises.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/Preview.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Email.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/List.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/MessageWithLinkButton.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/NumberInput.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PhoneInput.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Radio.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Ssn.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/TimeSelect.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/UtilizationSummary/UtilizationSummary.tsx create mode 100644 apps/form-builder/components/MainContent/components/PreviewStepOrGroup/MultiSet/MultiSet.tsx create mode 100644 apps/form-builder/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx create mode 100644 apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx create mode 100644 apps/form-builder/components/MainContent/components/RelevantParties/components/SingleParty.tsx create mode 100644 apps/form-builder/components/Navbar/Navbar.tsx create mode 100644 apps/form-builder/components/Navbar/components/NavComponent/NavComponent.css.ts create mode 100644 apps/form-builder/components/Navbar/components/NavComponent/NavComponent.tsx create mode 100644 apps/form-builder/components/Navbar/components/NavComponent/components/NavButtons.tsx create mode 100644 apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.css.tsx create mode 100644 apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.tsx create mode 100644 apps/form-builder/components/NavbarSelect/NavbarSelect.tsx create mode 100644 apps/form-builder/components/NavbarSelect/components/SelectNavComponent.tsx create mode 100644 apps/form-builder/components/NavbarSelect/components/selectNavComponent.css.ts create mode 100644 apps/form-builder/components/TableRow/TableRow.css.tsx create mode 100644 apps/form-builder/components/TableRow/TableRow.tsx create mode 100644 apps/form-builder/components/Tabs/index.tsx create mode 100644 apps/form-builder/components/Tabs/tabs.css.ts create mode 100644 apps/form-builder/components/TranslationTag/TranslationTag.tsx create mode 100644 apps/form-builder/context/FormBuilderContext.tsx create mode 100644 apps/form-builder/context/LayoutContext.tsx create mode 100644 apps/form-builder/environments/environment.ts create mode 100644 apps/form-builder/hooks/fileUploadReducer.ts create mode 100644 apps/form-builder/hooks/formReducer.tsx create mode 100644 apps/form-builder/hooks/headerInfoReducer.tsx create mode 100644 apps/form-builder/hooks/listsReducer.tsx create mode 100644 apps/form-builder/index.d.ts create mode 100644 apps/form-builder/jest.config.ts create mode 100644 apps/form-builder/lib/fileTypes.json create mode 100644 apps/form-builder/next-env.d.ts create mode 100644 apps/form-builder/next.config.js create mode 100644 apps/form-builder/pages/Form/[id]/index.tsx create mode 100644 apps/form-builder/pages/Form/index.tsx create mode 100644 apps/form-builder/pages/_app.tsx create mode 100644 apps/form-builder/pages/forms.tsx create mode 100644 apps/form-builder/pages/index.tsx create mode 100644 apps/form-builder/project.json create mode 100644 apps/form-builder/proxy.config.json create mode 100644 apps/form-builder/public/.gitkeep create mode 100644 apps/form-builder/public/favicon.ico create mode 100644 apps/form-builder/screens/Form.tsx create mode 100644 apps/form-builder/screens/Forms.tsx create mode 100644 apps/form-builder/screens/index.tsx create mode 100644 apps/form-builder/server.ts create mode 100644 apps/form-builder/services/apiService.tsx create mode 100644 apps/form-builder/services/translationStation.tsx create mode 100644 apps/form-builder/tsconfig.json create mode 100644 apps/form-builder/tsconfig.server.json create mode 100644 apps/form-builder/tsconfig.spec.json create mode 100644 apps/form-builder/types/enums/index.tsx create mode 100644 apps/form-builder/types/interfaces.tsx create mode 100644 apps/form-builder/utils/defaultStep.tsx create mode 100644 apps/form-builder/utils/formatDate.tsx create mode 100644 apps/form-builder/utils/getBaseSettingsStep.tsx diff --git a/.gitignore b/.gitignore index a2b2cd1ed287..df03af67a6dc 100644 --- a/.gitignore +++ b/.gitignore @@ -99,6 +99,4 @@ apps/**/index.html # Next.js .next -.nx/ - - +.nx/ \ No newline at end of file diff --git a/apps/form-builder-e2e/.eslintrc.json b/apps/form-builder-e2e/.eslintrc.json new file mode 100644 index 000000000000..696cb8b12127 --- /dev/null +++ b/apps/form-builder-e2e/.eslintrc.json @@ -0,0 +1,10 @@ +{ + "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/form-builder-e2e/cypress.config.ts b/apps/form-builder-e2e/cypress.config.ts new file mode 100644 index 000000000000..1ff4098804c6 --- /dev/null +++ b/apps/form-builder-e2e/cypress.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from 'cypress' +import { nxE2EPreset } from '@nx/cypress/plugins/cypress-preset' + +export default defineConfig({ + e2e: nxE2EPreset(__dirname), +}) diff --git a/apps/form-builder-e2e/project.json b/apps/form-builder-e2e/project.json new file mode 100644 index 000000000000..e686b2390f4a --- /dev/null +++ b/apps/form-builder-e2e/project.json @@ -0,0 +1,30 @@ +{ + "name": "form-builder-e2e", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/form-builder-e2e/src", + "projectType": "application", + "targets": { + "e2e": { + "executor": "@nx/cypress:cypress", + "options": { + "cypressConfig": "apps/form-builder-e2e/cypress.config.ts", + "devServerTarget": "form-builder:serve:development", + "testingType": "e2e" + }, + "configurations": { + "production": { + "devServerTarget": "form-builder:serve:production" + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/form-builder-e2e/**/*.{js,ts}"] + } + } + }, + "tags": [], + "implicitDependencies": ["form-builder"] +} diff --git a/apps/form-builder-e2e/src/e2e/app.cy.ts b/apps/form-builder-e2e/src/e2e/app.cy.ts new file mode 100644 index 000000000000..9b3f1c3ef43b --- /dev/null +++ b/apps/form-builder-e2e/src/e2e/app.cy.ts @@ -0,0 +1,13 @@ +import { getGreeting } from '../support/app.po' + +describe('form-builder', () => { + beforeEach(() => cy.visit('/')) + + it('should display welcome message', () => { + // Custom command example, see `../support/commands.ts` file + cy.login('my-email@something.com', 'myPassword') + + // Function helper example, see `../support/app.po.ts` file + getGreeting().contains('Welcome form-builder') + }) +}) diff --git a/apps/form-builder-e2e/src/fixtures/example.json b/apps/form-builder-e2e/src/fixtures/example.json new file mode 100644 index 000000000000..294cbed6ce9e --- /dev/null +++ b/apps/form-builder-e2e/src/fixtures/example.json @@ -0,0 +1,4 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io" +} diff --git a/apps/form-builder-e2e/src/support/app.po.ts b/apps/form-builder-e2e/src/support/app.po.ts new file mode 100644 index 000000000000..00f556e10333 --- /dev/null +++ b/apps/form-builder-e2e/src/support/app.po.ts @@ -0,0 +1 @@ +export const getGreeting = () => cy.get('h1') diff --git a/apps/form-builder-e2e/src/support/commands.ts b/apps/form-builder-e2e/src/support/commands.ts new file mode 100644 index 000000000000..270f023ff512 --- /dev/null +++ b/apps/form-builder-e2e/src/support/commands.ts @@ -0,0 +1,33 @@ +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** + +// eslint-disable-next-line @typescript-eslint/no-namespace +declare namespace Cypress { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + interface Chainable { + login(email: string, password: string): void + } +} +// +// -- This is a parent command -- +Cypress.Commands.add('login', (email, password) => { + console.log('Custom command example: Login', email, password) +}) +// +// -- This is a child command -- +// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) diff --git a/apps/form-builder-e2e/src/support/e2e.ts b/apps/form-builder-e2e/src/support/e2e.ts new file mode 100644 index 000000000000..185d654ec609 --- /dev/null +++ b/apps/form-builder-e2e/src/support/e2e.ts @@ -0,0 +1,17 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' diff --git a/apps/form-builder-e2e/tsconfig.json b/apps/form-builder-e2e/tsconfig.json new file mode 100644 index 000000000000..cc509a730e12 --- /dev/null +++ b/apps/form-builder-e2e/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "sourceMap": false, + "outDir": "../../dist/out-tsc", + "allowJs": true, + "types": ["cypress", "node"] + }, + "include": ["src/**/*.ts", "src/**/*.js", "cypress.config.ts"] +} diff --git a/apps/form-builder/.eslintrc.json b/apps/form-builder/.eslintrc.json new file mode 100644 index 000000000000..f653743bfa98 --- /dev/null +++ b/apps/form-builder/.eslintrc.json @@ -0,0 +1,40 @@ +{ + "extends": [ + "plugin:@nx/react-typescript", + "next", + "next/core-web-vitals", + "../../.eslintrc.json" + ], + "ignorePatterns": ["!**/*", ".next/**/*"], + "overrides": [ + { + "files": ["*.*"], + "rules": { + "@next/next/no-html-link-for-pages": "off" + } + }, + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@next/next/no-html-link-for-pages": [ + "error", + "apps/form-builder/pages" + ] + } + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"], + "env": { + "jest": true + } + } + ] +} diff --git a/apps/form-builder/.vscode/settings.json b/apps/form-builder/.vscode/settings.json new file mode 100644 index 000000000000..0967ef424bce --- /dev/null +++ b/apps/form-builder/.vscode/settings.json @@ -0,0 +1 @@ +{} diff --git a/apps/form-builder/components/Layout/Layout.css.ts b/apps/form-builder/components/Layout/Layout.css.ts new file mode 100644 index 000000000000..eb82ed5aa329 --- /dev/null +++ b/apps/form-builder/components/Layout/Layout.css.ts @@ -0,0 +1,21 @@ +import { style } from '@vanilla-extract/css' + +export const processContainer = style({ + minHeight: '100vh', +}) + +export const contentContainer = style({ + maxWidth: '100vw', +}) + +export const container = style({ + display: 'flex', + justifyContent: 'center', + height: '100vh', +}) + +export const contentWrapper = style({ + //maxWidth: '1140px', + width: '100%', + padding: '1rem 1rem', +}) diff --git a/apps/form-builder/components/Layout/Layout.tsx b/apps/form-builder/components/Layout/Layout.tsx new file mode 100644 index 000000000000..d89004441be6 --- /dev/null +++ b/apps/form-builder/components/Layout/Layout.tsx @@ -0,0 +1,76 @@ +import { + Header, + Box, + Divider, + GridContainer as Grid, + GridColumn as Column, +} from '@island.is/island-ui/core' +import Head from 'next/head' +import React, { FC, useReducer } from 'react' +import * as styles from './Layout.css' +import { useRouter } from 'next/router' +import { headerInfoReducer } from '../../hooks/headerInfoReducer' +import LayoutContext from '../../context/LayoutContext' + +type LayoutProps = { + children: React.ReactNode +} + +const Layout: FC = ({ children }: LayoutProps) => { + const route = useRouter() + //useContext(LayoutContext) + + const initialInfo = { + organization: '', + applicationName: '', + } + const [info, dispatch] = useReducer(headerInfoReducer, initialInfo) + const layoutContext = { + info: info, + infoDispatch: dispatch, + } + + return ( + + + + Welcome to licensing-portal! + + + + route.push('/Forms')} + > +
+ + + + + + + + + {children} + + + + + + ) +} /* */ + +export default Layout diff --git a/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx b/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx new file mode 100644 index 000000000000..a58125ee0200 --- /dev/null +++ b/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx @@ -0,0 +1,40 @@ +import { Box, Select } from '@island.is/island-ui/core' +import { ILicenseProvider } from '../../types/interfaces' + +interface LicenseProviderDropdownProps { + licenseProviders: ILicenseProvider[] + setSelectProvider: (value: number) => void +} + +function mappedProviders(licenseProviders: ILicenseProvider[]) { + const lp = licenseProviders + .filter((lp) => lp.name.length > 0 && lp.language === 'is') + .map((lp) => ({ + label: lp.name, + value: lp.licenseProviderID, + })) + return lp.sort((a, b) => a.label.localeCompare(b.label)) +} + +export default function LicenseProviderDropdown({ + licenseProviders, + setSelectProvider, +}: LicenseProviderDropdownProps) { + const handleChange = (e: { value: number }) => { + setSelectProvider(e.value) + } + return ( + + changeHandler(e, 'name')} + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + /> + + + + + changeHandler(e, 'nameEn')} + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + buttons={[ + { + label: 'translate', + name: 'reader', + onClick: async () => { + const translation = await translationStation( + activeItem.data.name.is, + ) + listsDispatch({ + type: 'changeName', + lang: 'en', + newValue: translation.translations[0].translatedText, + }) + }, + }, + ]} + /> + + + {activeItem.type === 'Group' && ( + + + + listsDispatch({ + type: 'setMultiSet', + payload: { + checked: e.target.checked, + }, + }) + } + /> + + + )} + + + + + + + )} + + ) +} diff --git a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx new file mode 100644 index 000000000000..3343605da60f --- /dev/null +++ b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -0,0 +1,162 @@ +import { useContext, useState, FocusEvent } from 'react' +import { + Stack, + GridRow as Row, + GridColumn as Column, + Input, + DatePicker, + Checkbox, +} from '@island.is/island-ui/core' +import FormBuilderContext from '../../../../context/FormBuilderContext' +import LayoutContext from '../../../../context/LayoutContext' +import { saveFormSettings } from '../../../../services/apiService' + +export default function BaseSettings() { + const { formBuilder, formDispatch, setIsTyping } = + useContext(FormBuilderContext) + const { infoDispatch } = useContext(LayoutContext) + const [focus, setFocus] = useState(null) + const { + id, + name, + applicationsDaysToRemove, + invalidationDate, + stopProgressOnValidatingStep, + } = formBuilder.form + return ( + + + + setFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => { + setIsTyping(true) + formDispatch({ + type: 'changeName', + payload: { + lang: 'is', + newName: e.target.value, + }, + }) + infoDispatch({ + type: 'changeApplicationName', + data: e.target.value, + }) + }} + /> + + + setFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => { + setIsTyping(true) + formDispatch({ + type: 'changeName', + payload: { + lang: 'en', + newName: e.target.value, + }, + }) + }} + /> + + + + + setFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => { + setIsTyping(true) + formDispatch({ + type: 'applicationsDaysToRemove', + payload: { value: e.target.value }, + }) + }} + /> + + + + + {formBuilder.form.invalidationDate ? ( + { + formDispatch({ + type: 'invalidationDate', + payload: { value: e.toJSON() }, + }) + }} + /> + ) : ( + { + formDispatch({ + type: 'invalidationDate', + payload: { value: e.toJSON() }, + }) + }} + /> + )} + + + + + { + formDispatch({ + type: 'stopProgressOnValidatingStep', + payload: { value: e.target.checked }, + }) + }} + /> + + + + ) + + function blur(e: FocusEvent) { + if (focus !== e.target.value) { + setFocus(null) + const toSave = { + id: id, + name: name, + applicationsDaysToRemove: applicationsDaysToRemove, + invalidationDate: invalidationDate, + stopProgressOnValidatingStep: stopProgressOnValidatingStep, + } + saveFormSettings(id, toSave) + } + setIsTyping(false) + } +} diff --git a/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx b/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx new file mode 100644 index 000000000000..799b0af5a06d --- /dev/null +++ b/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx @@ -0,0 +1,116 @@ +import { useContext, useState } from 'react' +import { + GridRow as Row, + GridColumn as Column, + Stack, + Input, + Checkbox, + ToggleSwitchCheckbox, + Text, + Button, +} from '@island.is/island-ui/core' +import ListContent from '../ListContent/ListContent' +import Preview from '../Preview/Preview' +import ListBuilder from '../ListBuilder/ListBuilder' +import FormBuilderContext from '../../../../context/FormBuilderContext' +import { IInput, NavbarSelectStatus } from '../../../../types/interfaces' +import BaseInput from './components/BaseInput' +import TimeInput from './components/TimeInput' +import MessageWithLink from './components/MessageWithLink' +import FileUpload from './components/FileUpload/FileUpload' +import NumberInput from './components/NumberInput' + +export default function InputContent() { + const { formBuilder, lists, selectStatus, setSelectStatus } = + useContext(FormBuilderContext) + + const { activeItem } = lists + const currentItem = activeItem.data as IInput + const { inputSettings } = currentItem + const [inListBuilder, setInListBuilder] = useState(false) + const [isLarge, setIsLarge] = useState(false) + + const hasConnections = + formBuilder.form.dependencies[activeItem.data.guid] !== undefined && + formBuilder.form.dependencies[activeItem.data.guid].length > 0 + + if ( + (inListBuilder && currentItem.type === 'Fellilisti') || + (inListBuilder && currentItem.type === 'Valhnappar') + ) { + return + } + return ( + + + + {/* Additional settings depending on chosen input type */} + {['Hakbox'].includes(currentItem.type) && ( + + + + setSelectStatus( + e ? NavbarSelectStatus.NORMAL : NavbarSelectStatus.OFF, + ) + } + /> + + {hasConnections && ( + + Hefur tengingar + + )} + + )} + {/* List */} + {currentItem.type === 'Fellilisti' && ( + <> + + + )} + {/* Radio buttons */} + {currentItem.type === 'Valhnappar' && ( + + )} + {/* Textlinubox */} + {currentItem.type === 'Textalínubox' && ( + setIsLarge(e.target.checked)} + /> + )} + {/* "Klukkuinnsláttur" */} + {currentItem.type === 'Klukkuinnsláttur' && } + {/* Heimagistingarnúmer */} + {currentItem.type === 'Heimagistingarnúmer' && ( + + + + + + )} + {/* Testing text with linked button */} + {currentItem.type === 'Textalýsing' && } + {/* File upload */} + {currentItem.type === 'Skjal' && } + {currentItem.type === 'Tölustafir' && } + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx new file mode 100644 index 000000000000..703728fccc10 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx @@ -0,0 +1,192 @@ +import { + GridRow as Row, + GridColumn as Column, + Select, + Stack, + Input, + Checkbox, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import FormBuilderContext from '../../../../../context/FormBuilderContext' +import { IInput } from '../../../../../types/interfaces' +import { translationStation } from '../../../../../services/translationStation' + +export default function BaseInput() { + const { + formBuilder, + lists, + listsDispatch, + changeHandler, + changeSelectHandler, + onFocus, + blur, + } = useContext(FormBuilderContext) + const { activeItem } = lists + const currentItem = activeItem.data as IInput + + const options = formBuilder.inputTypes + .map((it) => { + return { + label: it.type, + value: it.type, + } + }) + .sort((a, b) => a.label.localeCompare(b.label)) + + const defaultOption = + currentItem.type === '' + ? null + : options.find((o) => o.value === currentItem.type) + + return ( + + {defaultOption !== undefined && ( + + + changeHandler(e, 'name')} + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + /> + + + + {/* Name en */} + + changeHandler(e, 'nameEn')} + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + buttons={[ + { + label: 'translate', + name: 'reader', + onClick: async () => { + const translation = await translationStation( + currentItem.name.is, + ) + listsDispatch({ + type: 'changeName', + payload: { + lang: 'en', + newValue: translation.translations[0].translatedText, + }, + }) + }, + }, + ]} + /> + + + {/* Description */} + {['Textalýsing'].includes(currentItem.type) && ( + <> + + + onFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => + listsDispatch({ + type: 'setDescription', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } + /> + + + + + onFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => + listsDispatch({ + type: 'setDescription', + payload: { + lang: 'en', + newValue: e.target.value, + }, + }) + } + buttons={[ + { + label: 'translate', + name: 'reader', + onClick: async () => { + const translation = await translationStation( + currentItem.description.is, + ) + listsDispatch({ + type: 'setDescription', + payload: { + lang: 'en', + newValue: translation.translations[0].translatedText, + }, + }) + }, + }, + ]} + /> + + + + )} + + {/* Required checkbox */} + + + listsDispatch({ + type: 'setIsRequired', + payload: { + guid: currentItem.guid, + isRequired: e.target.checked, + }, + }) + } + /> + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/FileUpload.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/FileUpload.tsx new file mode 100644 index 000000000000..1d53de937b4a --- /dev/null +++ b/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/FileUpload.tsx @@ -0,0 +1,131 @@ +import { + GridRow as Row, + GridColumn as Column, + Checkbox, + Stack, + Box, + Select, + Text, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import FormBuilderContext from '../../../../../../context/FormBuilderContext' +import { IInput } from '../../../../../../types/interfaces' +import fileSizes from './fileSizes.json' +import * as fileTypes from '../../../../../../lib/fileTypes.json' + +export default function FileUpload() { + const { lists, listsDispatch } = useContext(FormBuilderContext) + const { activeItem } = lists + const currentItem = activeItem.data as IInput + const { inputSettings } = currentItem + + const fileSizeOptions = fileSizes.fileSizes.map((size) => ({ + label: size.label, + value: size.value, + })) + + const fileAmountOptions = () => { + const arr = [] + for (let i = 1; i < 11; i++) { + arr.push({ label: i, value: i }) + } + return arr + } + + return ( + + + + + listsDispatch({ + type: 'setFileUploadSettings', + payload: { + property: 'erFjolval', + value: e.target.checked, + }, + }) + } + /> + + + + + f.value === inputSettings.fjoldi, + )} + options={fileAmountOptions()} + onChange={(e: { label; value }) => { + listsDispatch({ + type: 'setFileUploadSettings', + payload: { + property: 'fjoldi', + value: e.value, + }, + }) + }} + /> + + )} + + + + Leyfa eftirfarandi skjalatýpur + + + + {Object.entries(fileTypes).map(([key, value], i) => ( + + {key !== 'default' && ( + + listsDispatch({ + type: 'setFileUploadSettings', + payload: { + property: 'tegundir', + checked: e.target.checked, + value: key, + }, + }) + } + /> + )} + + ))} + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/fileSizes.json b/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/fileSizes.json new file mode 100644 index 000000000000..8cc59c37fe35 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/fileSizes.json @@ -0,0 +1,44 @@ +{ + "fileSizes": [ + { + "label": "1 mb", + "value": 1048576 + }, + { + "label": "2 mb", + "value": 2097152 + }, + { + "label": "3 mb", + "value": 3145728 + }, + { + "label": "4 mb", + "value": 4194304 + }, + { + "label": "5 mb", + "value": 5242880 + }, + { + "label": "6 mb", + "value": 6291456 + }, + { + "label": "7 mb", + "value": 7340032 + }, + { + "label": "8 mb", + "value": 8388608 + }, + { + "label": "9 mb", + "value": 9437184 + }, + { + "label": "10 mb", + "value": 10485760 + } + ] +} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx new file mode 100644 index 000000000000..524e95b89aaa --- /dev/null +++ b/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx @@ -0,0 +1,133 @@ +import { + GridRow as Row, + GridColumn as Column, + Input, + Checkbox, + Stack, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import FormBuilderContext from '../../../../../context/FormBuilderContext' +import { IInput } from '../../../../../types/interfaces' +import { translationStation } from '../../../../../services/translationStation' + +export default function MessageWithLink() { + const { lists, listsDispatch, setIsTyping, onFocus, blur } = + useContext(FormBuilderContext) + const { activeItem } = lists + const currentItem = activeItem.data as IInput + const { inputSettings } = currentItem + return ( + + + + + listsDispatch({ + type: 'setMessageWithLinkSettings', + payload: { + property: 'erHlekkur', + checked: e.target.checked, + }, + }) + } + /> + + + {inputSettings !== undefined ? ( + inputSettings.erHlekkur && ( + + + + { + setIsTyping(true) + listsDispatch({ + type: 'setMessageWithLinkSettings', + payload: { + property: 'hnapptexti', + lang: 'is', + value: e.target.value, + }, + }) + }} + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + /> + + + { + setIsTyping(true) + listsDispatch({ + type: 'setMessageWithLinkSettings', + payload: { + property: 'hnapptexti', + lang: 'en', + value: e.target.value, + }, + }) + }} + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + buttons={[ + { + label: 'translate', + name: 'reader', + onClick: async () => { + const translation = await translationStation( + inputSettings?.hnapptexti?.is, + ) + listsDispatch({ + type: 'setMessageWithLinkSettings', + payload: { + property: 'hnapptexti', + lang: 'en', + value: translation.translations[0].translatedText, + }, + }) + }, + }, + ]} + /> + + + + + + listsDispatch({ + type: 'setMessageWithLinkSettings', + payload: { + property: 'url', + value: e.target.value, + }, + }) + } + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + /> + + + + ) + ) : ( + <> + )} + + ) +} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/NumberInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/NumberInput.tsx new file mode 100644 index 000000000000..dd52b5bd43b1 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/InputContent/components/NumberInput.tsx @@ -0,0 +1,105 @@ +import { + GridRow as Row, + GridColumn as Column, + Input, + Stack, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import FormBuilderContext from '../../../../../context/FormBuilderContext' +import { IInput } from '../../../../../types/interfaces' + +export default function NumberInput() { + const { lists, listsDispatch, onFocus, blur } = useContext(FormBuilderContext) + const { activeItem } = lists + const currentItem = activeItem.data as IInput + const { inputSettings } = currentItem + + return ( + + + + onFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => + listsDispatch({ + type: 'setNumberInputSettings', + payload: { + property: 'lagmarkslengd', + value: e.target.value, + }, + }) + } + /> + + + onFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => + listsDispatch({ + type: 'setNumberInputSettings', + payload: { + property: 'hamarkslengd', + value: e.target.value, + }, + }) + } + /> + + + + + onFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => + listsDispatch({ + type: 'setNumberInputSettings', + payload: { + property: 'laggildi', + value: e.target.value, + }, + }) + } + /> + + + onFocus(e.target.value)} + onBlur={(e) => blur(e)} + onChange={(e) => + listsDispatch({ + type: 'setNumberInputSettings', + payload: { + property: 'hagildi', + value: e.target.value, + }, + }) + } + /> + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx new file mode 100644 index 000000000000..311e864ddf21 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx @@ -0,0 +1,36 @@ +import { + GridRow as Row, + GridColumn as Column, + Select, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import FormBuilderContext from '../../../../../context/FormBuilderContext' + +export default function TimeInput() { + const { listsDispatch } = useContext(FormBuilderContext) + return ( + + + {}} + /> + + + {}} + /> + + + + ) + } + + return ( + + + + { + setConnect(e) + setSelectStatus(() => + e + ? NavbarSelectStatus.LIST_ITEM + : NavbarSelectStatus.ON_WITHOUT_SELECT, + ) + setConnecting((prev) => + prev.map((l, i) => (i === index ? e : false)), + ) + setActiveListItem(e ? listItem : null) + }} + /> + + listsDispatch({ + type: 'setListItemSelected', + payload: { + guid: listItem.guid, + checked: e, + }, + }) + } + /> + + + + listsDispatch({ + type: 'removeListItem', + payload: { + guid: listItem.guid, + }, + }) + } + > + + + + + + + + + + , + ) => onFocus(event.target.value)} + onChange={(e) => + listsDispatch({ + type: 'setListItem', + payload: { + property: 'label', + lang: 'is', + value: e.target.value, + listItemGuid: listItem.guid, + }, + }) + } + /> + + + , + ) => onFocus(event.target.value)} + onChange={(e) => + listsDispatch({ + type: 'setListItem', + payload: { + property: 'label', + lang: 'en', + value: e.target.value, + listItemGuid: listItem.guid, + }, + }) + } + buttons={[ + { + label: 'translate', + name: 'reader', + onClick: async () => { + const translation = await translationStation( + listItem.label.is, + ) + listsDispatch({ + type: 'setListItem', + payload: { + property: 'label', + lang: 'en', + value: translation, + listItemGuid: listItem.guid, + }, + }) + }, + }, + ]} + /> + + + + {isRadio && ( + + + , + ) => onFocus(event.target.value)} + onChange={(e) => + listsDispatch({ + type: 'setListItem', + payload: { + property: 'description', + lang: 'is', + value: e.target.value, + listItemGuid: listItem.guid, + }, + }) + } + /> + + + , + ) => onFocus(event.target.value)} + onChange={(e) => + listsDispatch({ + type: 'setListItem', + payload: { + property: 'description', + lang: 'en', + value: e.target.value, + listItemGuid: listItem.guid, + }, + }) + } + buttons={[ + { + label: 'translate', + name: 'reader', + onClick: async () => { + const translation = await translationStation( + listItem.description.is, + ) + listsDispatch({ + type: 'setListItem', + payload: { + property: 'description', + lang: 'en', + value: translation, + listItemGuid: listItem.guid, + }, + }) + }, + }, + ]} + /> + + + )} + {/* + + + + */} + + ) +} diff --git a/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx b/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx new file mode 100644 index 000000000000..a09cb2e15515 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx @@ -0,0 +1,98 @@ +import { + GridColumn as Column, + GridRow as Row, + Select, + Stack, + Box, + Button, + RadioButton, +} from '@island.is/island-ui/core' +import { Dispatch, SetStateAction, useContext, useState } from 'react' +import FormBuilderContext from '../../../../context/FormBuilderContext' +import { getList } from '../../../../services/apiService' +import { IInput } from '../../../../types/interfaces' + +type Props = { + setInListBuilder: Dispatch> +} + +const predeterminedLists = [ + { + label: 'Sveitarfélög', + value: 'Sveitarfelog', + }, + { + label: 'Lönd', + value: 'Lond', + }, + { + label: 'Póstnúmer', + value: 'Postnumer', + }, + { + label: 'Iðngreinarmeistara', + value: 'Idngreinarmeistara', + }, +] + +export default function ListContent({ setInListBuilder }: Props) { + const [radio, setRadio] = useState([true, false, false]) + const { lists, listsDispatch } = useContext(FormBuilderContext) + const { activeItem } = lists + return ( + + + + radioHandler(0)}> + + + + + + + radioHandler(1)}> + + + + + {radio[0] && ( + + )} + {radio[1] && ( + + + ) + // + } + {data.type === 'Klukkuinnsláttur' && ( + + + + )} + {data.type === 'Krónutölubox' && ( + + {/* {title(data.name.is)} */} + + + + + )} + {data.type === 'Heimagistingarnúmer' && ( + + + + )} + {data.type === 'Textalýsing' && ( + + )} + {data.type === 'Netfang' && } + {data.type === 'Skjal' && } + {data.type === 'Símanúmer' && ( + + )} + {data.type === 'Tölustafir' && ( + + )} + {data.type === 'Fellilisti' && } + {data.type === 'Valhnappar' && } + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx new file mode 100644 index 000000000000..cfaf1b6c280a --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx @@ -0,0 +1,90 @@ +import { + GridRow as Row, + GridColumn as Column, + Input, +} from '@island.is/island-ui/core' +import { useRef, useState } from 'react' + +export default function Banknumber() { + const [banki, setBanki] = useState() + const [hb, setHb] = useState() + const [reikningur, setReikningur] = useState() + const inputRefs = [ + useRef(), + useRef(), + useRef(), + ] + + const handleChange = (index: number, value) => { + if (index === 0) { + setBanki(value) + if (value.length === 4) { + inputRefs[1]?.current.focus() + } + } else if (index === 1) { + setHb(value) + if (value.length === 2) { + inputRefs[2]?.current.focus() + } + } else if (index === 2) { + if (value.length <= 6) { + setReikningur(value) + } + if (value.length === 6) { + inputRefs[2]?.current.blur() + } + } + } + + const addLeadingZeros = (originalNumber, total) => { + const zerosToAdd = total - originalNumber.length + if (zerosToAdd <= 0) { + return originalNumber + } + if (originalNumber.length === 0) { + return originalNumber + } + const leadingZeros = '0'.repeat(zerosToAdd) + return leadingZeros + originalNumber + } + + return ( + + + handleChange(0, e.target.value)} + onBlur={(e) => setBanki(addLeadingZeros(e.target.value, 4))} + /> + + + handleChange(1, e.target.value)} + onBlur={(e) => setHb(addLeadingZeros(e.target.value, 2))} + /> + + + handleChange(2, e.target.value)} + onBlur={(e) => setReikningur(addLeadingZeros(e.target.value, 6))} + /> + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx new file mode 100644 index 000000000000..02d283c0c5b0 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx @@ -0,0 +1,30 @@ +import { + GridRow as Row, + GridColumn as Column, + Input, +} from '@island.is/island-ui/core' +import { useState } from 'react' + +export default function Currency({ label }) { + const [currency, setCurrency] = useState('') + const handleCurrencyChange = (e) => { + // Remove any non-digit characters from the input value + const inputValue = e.target.value.replace(/\D/g, '') + + // Split the input value into groups of three characters + const formattedValue = inputValue.replace(/\B(?=(\d{3})+(?!\d))/g, '.') + setCurrency(formattedValue) + } + return ( + + + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Email.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Email.tsx new file mode 100644 index 000000000000..406f738ab013 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/Email.tsx @@ -0,0 +1,32 @@ +import { useContext, useState } from 'react' +import { Input, Stack, Text } from '@island.is/island-ui/core' +import FormBuilderContext from '../../../../../context/FormBuilderContext' + +export default function Email() { + const { lists } = useContext(FormBuilderContext) + const { activeItem } = lists + const [email, setEmail] = useState('') + const [hasError, setHasError] = useState(false) + + return ( + + {activeItem.data.name.is} + setEmail(e.target.value)} + onBlur={() => setHasError(isValidEmail())} + errorMessage="Ekki gilt netfang" + hasError={hasError} + /> + + ) + + function isValidEmail(): boolean { + const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ + const res = pattern.test(email) + return !res + } +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx b/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx new file mode 100644 index 000000000000..0e34577b0ca2 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx @@ -0,0 +1,118 @@ +import { + InputFileUpload, + UploadFile, + fileToObject, +} from '@island.is/island-ui/core' +import { useState } from 'react' +import { uuid } from 'uuidv4' +import * as fileTypes from '../../../../../lib/fileTypes.json' +import { IInput } from '../../../../../types/interfaces' + +// enum ActionTypes { +// add = 'add', +// remove = 'remove', +// update = 'update', +// } + +type Props = { + currentItem: IInput +} + +export default function FileUpload({ currentItem }: Props) { + const [error, setError] = useState(undefined) + const [fileList, setFileList] = useState>([]) + + // const uploadFile = async (file: UploadFile, response) => { + // return new Promise((resolve, reject) => { + // const request = new XMLHttpRequest() + // // request.withCredentials = true + // // request.responseType = 'json' + + // request.upload.addEventListener('progress', (event) => { + // if (event.lengthComputable) { + // file.percent = (event.loaded / event.total) * 100 + // file.status = 'uploading' + + // const withoutThisFile = fileList.filter((f) => f.key !== file.key) + // const newFileList = [...withoutThisFile, file] + // setFileList(newFileList) + // } + // }) + + // request.upload.addEventListener('error', () => { + // file.percent = 0 + // file.status = 'error' + + // const withoutThisFile = fileList.filter((f) => f.key !== file.key) + // const newFileList = [...withoutThisFile, file] + // setFileList(newFileList) + // reject() + // }) + // request.open('POST', response.url) + + // const formData = new FormData() + + // Object.keys(response.fields).forEach((key) => + // formData.append(key, response.fields[key]), + // ) + // formData.append('file', file.originalFileObj as File) + + // request.setRequestHeader('x-amz-acl', 'bucket-owner-full-control') + + // request.onload = () => { + // resolve(request.response) + // } + + // request.onerror = () => { + // reject() + // } + // request.send(formData) + // }) + // } + + const onChange = (files: File[]) => { + const uploadFiles = files.map((file) => fileToObject(file)) + const uploadFilesWithKey = uploadFiles.map((f) => ({ + ...f, + key: uuid(), + })) + + // Check whether upload will exceed limit and if so, prevent it + if ( + fileList.length + uploadFilesWithKey.length > + currentItem.inputSettings.fjoldi + ) { + setError(`Hámarksfjöldi skjala er ${currentItem.inputSettings.fjoldi}`) + return + } + setError('') + const newFileList = [...fileList, ...uploadFilesWithKey] + setFileList(newFileList) + } + + const onRemove = (fileToRemove: UploadFile) => { + const newFileList = fileList.filter((file) => file.key !== fileToRemove.key) + setFileList(newFileList) + } + + return ( + <> + `${f} `, + )}`} + buttonLabel="Veldu skjöl til að hlaða upp" + onChange={onChange} + onRemove={onRemove} + errorMessage={fileList.length > 0 ? error : undefined} + accept={currentItem.inputSettings.tegundir.map((t) => fileTypes[t])} + showFileSize + maxSize={currentItem.inputSettings.hamarksstaerd} + multiple={currentItem.inputSettings.erFjolval} + /> + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/List.tsx b/apps/form-builder/components/MainContent/components/Preview/components/List.tsx new file mode 100644 index 000000000000..abc77985f0ec --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/List.tsx @@ -0,0 +1,29 @@ +import { Select } from '@island.is/island-ui/core' +import { useEffect, useState } from 'react' +import { IInput } from '../../../../../types/interfaces' + +interface Props { + currentItem: IInput +} + +type ListItem = { + label: string + value: string | number +} + +export default function List({ currentItem }: Props) { + const [listItems, setListItems] = useState([]) + useEffect(() => { + setListItems( + currentItem.inputSettings.listi.map((l) => ({ + label: l.label.is, + value: l.label.is, + })), + ) + }, [currentItem.inputSettings.listi]) + return ( + <> + changeHandler(parseInt(e.target.value))} + errorMessage={error} + /> + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PhoneInput.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PhoneInput.tsx new file mode 100644 index 000000000000..fbad4ea8fea8 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/PhoneInput.tsx @@ -0,0 +1,20 @@ +import { + GridRow as Row, + GridColumn as Column, + PhoneInput as Phone, +} from '@island.is/island-ui/core' +import { IInput } from '../../../../../types/interfaces' + +interface Props { + currentItem: IInput +} + +export default function PhoneInput({ currentItem }: Props) { + return ( + + + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Radio.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Radio.tsx new file mode 100644 index 000000000000..005f0a66cc04 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/Radio.tsx @@ -0,0 +1,57 @@ +import { RadioButton, Text, Box } from '@island.is/island-ui/core' +import FormBuilderContext from '../../../../../context/FormBuilderContext' +import { useContext, useEffect, useState } from 'react' +import { IInput } from '../../../../../types/interfaces' + +export default function Radio() { + const { lists } = useContext(FormBuilderContext) + const { activeItem } = lists + const currentItem = activeItem.data as IInput + const radioButtons = currentItem.inputSettings.listi + const [radioChecked, setRadioChecked] = useState([]) + + useEffect(() => { + setRadioChecked(radioButtons.map(() => false)) + }, [radioButtons]) + + const radioButton = (rb, index) => ( + + setRadioChecked((prev) => + prev.map((rb, i) => (i === index ? true : false)), + ) + } + > + + + ) + + return ( + <> + + {currentItem.name.is} + + + {radioButtons.map((rb, index) => radioButton(rb, index))} + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Ssn.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Ssn.tsx new file mode 100644 index 000000000000..a74431890a0d --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/Ssn.tsx @@ -0,0 +1,21 @@ +import { + Box, + Input, + Stack, + GridColumn as Column, +} from '@island.is/island-ui/core' + +export default function Ssn() { + return ( + + + + + + + + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/TimeSelect.tsx b/apps/form-builder/components/MainContent/components/Preview/components/TimeSelect.tsx new file mode 100644 index 000000000000..7722e7a8284b --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/TimeSelect.tsx @@ -0,0 +1,217 @@ +import { + GridRow as Row, + GridColumn as Column, + Input, + Select, + Box, +} from '@island.is/island-ui/core' +import { ChangeEvent, useContext, useState } from 'react' +import FormBuilderContext from '../../../../../context/FormBuilderContext' +import { IInput } from '../../../../../types/interfaces' + +type Option = { label: string; value: string } + +export default function TimeSelect() { + const { lists } = useContext(FormBuilderContext) + const { activeItem } = lists + const inputItem = activeItem.data as IInput + + const [timeInput, setTimeInput] = useState('') + + // 0: Minute + // 1: Hourly + // 2: Half hour + // 3: Quarter + const chosenMinuteList = (): Option[] => { + const min = minuteList.minuteList.map((t) => { + return { + label: t, + value: t, + } + }) + + if (inputItem?.inputSettings === undefined) { + return min + } else { + const interval = inputItem.inputSettings.interval + + if (interval === 0) { + return min + } else if (interval === 1) { + return [{ label: '00', value: '00' }] + } else if (interval === 2) { + return halfList.minuteList.map((m) => { + return { + label: m, + value: m, + } + }) + } else if (interval === 3) { + return quarterList.minuteList.map((m) => { + return { + label: m, + value: m, + } + }) + } else { + // Handle other cases if needed + return min + } + } + } + + const handleTimeInput = ( + e: ChangeEvent, + ) => { + const inputValue = e.target.value + console.log(inputValue) + + const isValidTime = + /^(?:[01]?[0-9]|2[0-3]):[0-5]?[0-9](?::[0-5]?[0-9])?$/.test(inputValue) + setTimeInput(inputValue) + console.log(isValidTime) + if (isValidTime || inputValue === '') { + setTimeInput(inputValue) + } + } + + return ( + <> + + + + + + handleTimeInput(e)} + /> + + ) +} + +const hourList = { + hourList: [ + '00', + '01', + '02', + '03', + '04', + '05', + '06', + '07', + '08', + '09', + '10', + '11', + '12', + '13', + '14', + '15', + '16', + '17', + '18', + '19', + '20', + '21', + '22', + '23', + ], +} + +const minuteList = { + minuteList: [ + '00', + '01', + '02', + '03', + '04', + '05', + '06', + '07', + '08', + '09', + '10', + '11', + '12', + '13', + '14', + '15', + '16', + '17', + '18', + '19', + '20', + '21', + '22', + '23', + '24', + '25', + '26', + '27', + '28', + '29', + '30', + '31', + '32', + '33', + '34', + '35', + '36', + '37', + '38', + '39', + '40', + '41', + '42', + '43', + '44', + '45', + '46', + '47', + '48', + '49', + '50', + '51', + '52', + '53', + '54', + '55', + '56', + '57', + '58', + '59', + ], +} + +const quarterList = { + minuteList: ['00', '15', '30', '45'], +} + +const halfList = { + minuteList: ['00', '30'], +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/UtilizationSummary/UtilizationSummary.tsx b/apps/form-builder/components/MainContent/components/Preview/components/UtilizationSummary/UtilizationSummary.tsx new file mode 100644 index 000000000000..9660d754e7b7 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/UtilizationSummary/UtilizationSummary.tsx @@ -0,0 +1,11 @@ +import ReactDatePicker from 'react-datepicker' + +export default function UtilizationSummary() { + return ( + console.log(date)} + dateFormat="dd.MM.yyyy" + /> + ) +} diff --git a/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/MultiSet/MultiSet.tsx b/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/MultiSet/MultiSet.tsx new file mode 100644 index 000000000000..df6e2a7149ec --- /dev/null +++ b/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/MultiSet/MultiSet.tsx @@ -0,0 +1,62 @@ +import { useContext, useEffect, useState } from 'react' +import { Box, Icon } from '@island.is/island-ui/core' +import Preview from '../../Preview/Preview' +import FormBuilderContext from '../../../../../context/FormBuilderContext' +import { IGroup, IInput } from '../../../../../types/interfaces' + +interface Props { + group: IGroup +} +export default function MultiSet({ group }: Props) { + const [multiInput, setMultiInput] = useState([]) + const { lists } = useContext(FormBuilderContext) + const { inputs } = lists + const originalInput = inputs.filter((i) => i.groupGuid === group.guid) + console.log('inMultiSet') + useEffect(() => { + setMultiInput([originalInput]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + return ( + + {multiInput.map((inputArray, index) => ( +
+ {inputArray.map((i) => ( + + ))} +
+ ))} + + + + + +
+ ) + + function add() { + setMultiInput((prev) => [...prev, originalInput]) + } +} diff --git a/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx b/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx new file mode 100644 index 000000000000..c56c54f0e023 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx @@ -0,0 +1,109 @@ +import { + Dispatch, + SetStateAction, + useContext, + useEffect, + useState, +} from 'react' +import { Box, Button, Text } from '@island.is/island-ui/core' +import Preview from '../Preview/Preview' +import MultiSet from './MultiSet/MultiSet' +import FormBuilderContext from '../../../../context/FormBuilderContext' +import { IGroup, NavbarSelectStatus } from '../../../../types/interfaces' + +interface Props { + setOpenPreview: Dispatch> +} + +export default function PreviewStepOrGroup({ setOpenPreview }: Props) { + const { lists, setSelectStatus } = useContext(FormBuilderContext) + const { activeItem, groups, inputs } = lists + const { type } = activeItem + const [groups2DArr, setGroups2DArr] = useState([]) + + useEffect(() => { + setSelectStatus(NavbarSelectStatus.ON_WITHOUT_SELECT) + groups.forEach((g) => { + if (g.multiSet !== 0) { + setGroups2DArr((prev) => [...prev, [g]]) + } + }) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + useEffect(() => { + console.log(groups2DArr) + }, [groups2DArr]) + + return ( + + {type === 'Step' && ( + <> + + {activeItem.data.name.is} + + {groups + .filter((g) => g.stepGuid === activeItem.data.guid) + .map((g) => ( + + + {g.name.is} + + {g.multiSet !== 0 ? ( + + ) : ( + inputs + .filter((i) => i.groupGuid === g.guid) + .map((i) => ( + + )) + )} + + ))} + + )} + {type === 'Group' && ( + + + {activeItem.data.name.is} + + {(activeItem.data as IGroup).multiSet !== 0 ? ( + + ) : ( + inputs + .filter((i) => i.groupGuid === activeItem.data.guid) + .map((i) => ( + + )) + )} + + )} + + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx b/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx new file mode 100644 index 000000000000..448cc77366ff --- /dev/null +++ b/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx @@ -0,0 +1,155 @@ +import React, { useContext, useEffect, useState } from 'react' +import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' +import FormBuilderContext from '../../../../context/FormBuilderContext' +import { IInput } from '../../../../types/interfaces' +import { addInput, deleteItem } from '../../../../services/apiService' +import SingleParty from './components/SingleParty' + +const applicantTypeLabel = [ + 'Einstaklingur (innskráður)', + 'Einstaklingur í umboði annars einstaklings', + 'Einstaklingur í umboði lögaðila', + 'Einstaklingur með prókúru', +] + +const applicantTypes = [ + 'Einstaklingur', + 'Einstaklingur_með_umboð_annars_einstaklings', + 'Einstaklingur_með_umboð_lögaðila', + 'Einstaklingur_með_prókúru', +] + +export default function RelevantParties() { + const { lists, formBuilder, listsDispatch } = useContext(FormBuilderContext) + const { activeItem } = lists + const [relevantParties, setRelevantParties] = useState([]) + const groupId = lists.groups.find( + (g) => g.stepGuid === activeItem.data.guid, + ).id + + useEffect(() => { + setRelevantParties(() => { + const groupGuid = lists.groups.find( + (g) => g.stepGuid === activeItem.data.guid, + ).guid + return lists.inputs.filter((i) => i.groupGuid === groupGuid) + }) + }, [lists, activeItem.data.guid]) + + useEffect(() => { + console.log(relevantParties) + }, [relevantParties]) + + const handleCheckboxChange = async (checked: boolean, index: number) => { + if (checked) { + const newInput = await addInput(relevantParties.length, groupId) + const { label: is, value: en } = getOptions(applicantTypes[index])[0] + listsDispatch({ + type: 'addInputRelevantParty', + payload: { + data: newInput, + type: applicantTypes[index], + name: { + is, + en, + }, + }, + }) + } else { + const toDelete = relevantParties.find( + (i) => i.inputSettings.type === applicantTypes[index], + ) + deleteItem('Input', toDelete.id) + listsDispatch({ + type: 'removeInput', + payload: { + guid: toDelete.guid, + }, + }) + } + } + + const getOptions = (type: string) => { + return formBuilder.applicantTypes + .find((at) => at.type === type) + .nameSuggestions.map((n) => ({ + label: n.is, + value: n.en, + })) + } + + return ( + + + + Veldu þá einstaklinga sem mega opna þessa umsókn + + + + + {applicantTypeLabel.map((label, index) => ( + i.inputSettings.type === applicantTypes[index], + )} + onChange={(e) => { + handleCheckboxChange(e.target.checked, index) + }} + /> + ))} + + + {relevantParties.filter((i) => i.type === 'Aðili').length > 0 && ( // TODO: During lag, an input type with text input gets stored in the array + + * Skilgreindu hlutaðeigandi aðila + + )} + {relevantParties.some( + (i) => i.inputSettings.type === applicantTypes[0], + ) && ( + i.inputSettings.type === applicantTypes[0], + )} + /> + )} + {relevantParties.some( + (i) => i.inputSettings.type === applicantTypes[1], + ) && ( + i.inputSettings.type === applicantTypes[1], + )} + /> + )} + {relevantParties.some( + (i) => i.inputSettings.type === applicantTypes[2], + ) && ( + i.inputSettings.type === applicantTypes[2], + )} + /> + )} + {relevantParties.some( + (i) => i.inputSettings.type === applicantTypes[3], + ) && ( + i.inputSettings.type === applicantTypes[3], + )} + /> + )} + + ) +} diff --git a/apps/form-builder/components/MainContent/components/RelevantParties/components/SingleParty.tsx b/apps/form-builder/components/MainContent/components/RelevantParties/components/SingleParty.tsx new file mode 100644 index 000000000000..d817efeae7cb --- /dev/null +++ b/apps/form-builder/components/MainContent/components/RelevantParties/components/SingleParty.tsx @@ -0,0 +1,84 @@ +import { + Stack, + Text, + GridRow as Row, + GridColumn as Column, + Select, + Input, + Box, +} from '@island.is/island-ui/core' +import { IInput } from '../../../../../types/interfaces' +import { useState } from 'react' + + +interface Props { + title: string + options: { + label: string + value: string + }[] + input: IInput +} +export default function SingleParty({ title, options, input }: Props) { + // const { formDispatch } = useContext(FormBuilderContext) + // const { applicantTypes } = formBuilder + const [_focus, setFocus] = useState('') + return ( + + + + {title} + + + + setFocus(e.target.value)} + // onChange={(e) => { + // listsDispatch({ + // type: 'changeName', + // payload: { + // guid: input.guid, + // lang: 'is', + // newName: e.target.value + // } + // }) + // }} + /> + + + setFocus(e.target.value)} + /> + + + + + ) +} diff --git a/apps/form-builder/components/Navbar/Navbar.tsx b/apps/form-builder/components/Navbar/Navbar.tsx new file mode 100644 index 000000000000..5e73b6b34aa7 --- /dev/null +++ b/apps/form-builder/components/Navbar/Navbar.tsx @@ -0,0 +1,342 @@ +import { + useSensors, + useSensor, + PointerSensor, + DndContext, + DragOverlay, + UniqueIdentifier, + DragStartEvent, + DragOverEvent, +} from '@dnd-kit/core' +import { SortableContext } from '@dnd-kit/sortable' +import { useContext, useMemo } from 'react' +import { createPortal } from 'react-dom' +import { Box, Button } from '@island.is/island-ui/core' +import FormBuilderContext from '../../context/FormBuilderContext' +import { baseSettingsStep } from '../../utils/getBaseSettingsStep' +import { IFormBuilderContext, ItemType } from '../../types/interfaces' +import { + addGroup, + addInput, + addStep, + deleteItem, +} from '../../services/apiService' +import NavbarTab from './components/NavbarTab/NavbarTab' +import NavComponent from './components/NavComponent/NavComponent' + +export default function Navbar() { + const { + formBuilder, + lists, + listsDispatch, + formUpdate, + inSettings, + setInSettings, + } = useContext(FormBuilderContext) + + const { activeItem, steps, groups, inputs } = lists + const stepsIds = useMemo(() => steps?.map((s) => s.guid), [steps]) + const groupsIds = useMemo(() => groups?.map((g) => g.guid), [groups]) + const inputsIds = useMemo(() => inputs?.map((i) => i.guid), [inputs]) + + const sensors = useSensors( + useSensor(PointerSensor, { + activationConstraint: { + distance: 10, + }, + }), + ) + if (inSettings) { + return ( + + + + + + + + {steps + ?.filter((s) => s.type !== 'Innsláttur') + .map((s) => ( + + + + ))} + + + + + ) + } else if (formBuilder && activeItem) { + return ( + + + + + + + {steps + ?.filter((s) => s.type === 'Innsláttur') + .map((s, i) => ( + + + + {groups + ?.filter((g) => g.stepGuid === s.guid) + .map((g) => ( + + + + + {inputs + ?.filter((i) => i.groupGuid === g.guid) + .map((i) => ( + + ))} + + + ))} + + + ))} + + + {/* Only render client side */} + {typeof window === 'object' && + createPortal( + + {activeItem && ( + + )} + , + document.body, + )} + + + + + + ) + } + return null + + async function addNewStep() { + try { + const data = await addStep( + formBuilder.form.id, + { is: '', en: '' }, + lists.steps.length, + 2, + { is: '', en: '' }, + false, + ) + + if (data !== undefined) { + listsDispatch({ type: 'addStep', payload: { data: data } }) + } + } catch (error) { + console.error('Error adding new step:', error) + // Handle error as needed + } + } + + async function addItem(parentType: 'Step' | 'Group', parentId: number) { + try { + let data + + if (parentType === 'Step') { + data = await addGroup(lists.groups.length, parentId) + listsDispatch({ type: 'addGroup', payload: { data: data } }) + } + + if (parentType === 'Group') { + data = await addInput(lists.inputs.length, parentId) + listsDispatch({ type: 'addInput', payload: { data: data } }) + } + } catch (error) { + console.error('Error adding item:', error) + } + } + + function removeItem(type: ItemType, guid: UniqueIdentifier, id: number) { + const actionTypes: { [key: string]: string } = { + Step: 'removeStep', + Group: 'removeGroup', + Input: 'removeInput', + } + listsDispatch({ + type: actionTypes[type], + payload: { + guid: guid, + }, + }) + deleteItem(type, id) + } + + function focusComponent(type: ItemType, id: UniqueIdentifier) { + const dataTypes = { + Step: lists.steps, + Group: lists.groups, + Input: lists.inputs, + } + + const data = dataTypes[type]?.find((item) => item.guid === id) + console.log('focusComponent data: ', data) + if (id === baseSettingsStep.guid) { + listsDispatch({ + type: 'setActiveItem', + payload: { + type: 'Step', + data: baseSettingsStep, + }, + }) + } else { + listsDispatch({ + type: 'setActiveItem', + payload: { + type: type, + data: data, + }, + }) + } + } + + function onDragStart(event: DragStartEvent) { + listsDispatch({ + type: 'setActiveItem', + payload: { + type: event.active.data.current?.type, + data: event.active.data.current?.data ?? null, + }, + }) + } + + function onDragEnd() { + formUpdate() + } + + function onDragOver(event: DragOverEvent) { + const { active, over } = event + + if (!over) return + + const activeId = active.id + const overId = over.id + + if (activeId === overId) return + + const getType = (data, targetType) => data?.current?.type === targetType + + const activeStep = getType(active.data, 'Step') + const activeGroup = getType(active.data, 'Group') + const activeInput = getType(active.data, 'Input') + const overStep = getType(over.data, 'Step') + const overGroup = getType(over.data, 'Group') + const overInput = getType(over.data, 'Input') + + const dispatchDragAction = (type: string) => + listsDispatch({ type, payload: { activeId, overId } }) + + // Dragging step + if (activeStep && overStep) { + dispatchDragAction('stepOverStep') + } + + // Dragging Group + if (activeGroup) { + if (overStep) { + dispatchDragAction('groupOverStep') + } + if (overGroup) { + dispatchDragAction('groupOverGroup') + } + } + + // Dragging Input + if (activeInput) { + if (overGroup) { + dispatchDragAction('inputOverGroup') + } + if (overInput) { + dispatchDragAction('inputOverInput') + } + } + } +} diff --git a/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.css.ts b/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.css.ts new file mode 100644 index 000000000000..b5087ff5fa49 --- /dev/null +++ b/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.css.ts @@ -0,0 +1,93 @@ +import { style, styleVariants } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +const base = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + marginBottom: '2px', + height: '46px', + marginLeft: 'auto', + backgroundColor: theme.color.blue100, + lineHeight: '46px', + ':hover': { + fontWeight: 'bolder', + }, + cursor: 'grab', +}) + +export const step = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + marginBottom: '2px', + height: '46px', + width: '100%', +}) + +export const navComponent = styleVariants({ + step: [ + base, + { + width: '100%', + }, + ], + group: [ + base, + { + width: '90%', + }, + ], + input: [ + base, + { + width: '80%', + }, + ], +}) + +const baseBackground = style({ + width: '25px', + height: '44px', + /* top-left | top-right | bottom-right | bottom-left */ + borderRadius: `${theme.border.radius.standard} 0 0 ${theme.border.radius.standard}`, + textAlign: 'center', +}) + +export const navBackgroundActive = styleVariants({ + step: [ + baseBackground, + { + backgroundColor: theme.color.blue600, + lineHeight: '45px', + //textAlign: 'center', + color: theme.color.white, + }, + ], + group: [ + baseBackground, + { + backgroundColor: theme.color.roseTinted400, + }, + ], + input: [ + baseBackground, + { + backgroundColor: theme.color.purple400, + }, + ], +}) + +export const navBackgroundDefault = styleVariants({ + step: [ + baseBackground, + { + lineHeight: '45px', + //textAlign: 'center', + }, + ], + group: [baseBackground, {}], + input: [baseBackground, {}], +}) + +export const customBackgroundDropdown = style({ + background: theme.color.blue100, +}) diff --git a/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.tsx b/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.tsx new file mode 100644 index 000000000000..e79a5e2b00b8 --- /dev/null +++ b/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.tsx @@ -0,0 +1,183 @@ +import { useState } from 'react' +import { ItemType, IGroup, IInput, IStep } from '../../../../types/interfaces' +import { useSortable } from '@dnd-kit/sortable' +import { Box } from '@island.is/island-ui/core' +import cn from 'classnames' +import * as styles from './NavComponent.css' +import { UniqueIdentifier } from '@dnd-kit/core' +import NavButtons from './components/NavButtons' +//import NavButtons from "./components/navButtons" + +type Props = { + type: ItemType + data: IStep | IGroup | IInput + active: boolean + index?: number + focusComponent(type: ItemType, id: UniqueIdentifier): void + add(type: 'Step' | 'Group', parentId: number): void + remove( + type: 'Step' | 'Group' | 'Input', + guid: UniqueIdentifier, + id: number, + ): void +} + +export default function NavComponent({ + type, + data, + active, + index, + focusComponent, + add, + remove, +}: Props) { + const [editMode] = useState(false) + + const { setNodeRef, attributes, listeners, isDragging } = useSortable({ + id: data.guid, + data: { + type: type, + data, + }, + disabled: editMode, + }) + + if (isDragging) { + return ( +
+
+
+ ) + } + + return ( + focusComponent(type, data.guid)} + > + {active ? ( + // Active + + + {index} + + + {truncateName(data.name.is)} + + + {!(type === 'Step' && (data as IStep).type !== 'Innsláttur') && ( + + )} + + + ) : ( + // Default + + + {index} + + + {truncateName(data.name.is)} + + + )} + + ) + + function truncateText(text, maxLength) { + return text.length > maxLength ? text.slice(0, maxLength) + '...' : text + } + + function truncateName(name) { + let maxLength + + if (active) { + switch (type) { + case 'Step': + maxLength = 23 + break + case 'Group': + maxLength = 16 + break + case 'Input': + maxLength = 12 + break + default: + maxLength = 26 + } + } else { + switch (type) { + case 'Step': + maxLength = 26 + break + case 'Group': + maxLength = 19 + break + case 'Input': + maxLength = 16 + break + default: + maxLength = 26 + } + } + + return truncateText(name, maxLength) + } +} diff --git a/apps/form-builder/components/Navbar/components/NavComponent/components/NavButtons.tsx b/apps/form-builder/components/Navbar/components/NavComponent/components/NavButtons.tsx new file mode 100644 index 000000000000..9625c9b7f658 --- /dev/null +++ b/apps/form-builder/components/Navbar/components/NavComponent/components/NavButtons.tsx @@ -0,0 +1,46 @@ +import { Box, Icon } from '@island.is/island-ui/core' +import { useContext } from 'react' +import { UniqueIdentifier } from '@dnd-kit/core' +import FormBuilderContext from '../../../../../context/FormBuilderContext' + +type Props = { + add(type: 'Step' | 'Group', parentId: number): void + remove( + type: 'Step' | 'Group' | 'Input', + guid: UniqueIdentifier, + id: number, + ): void +} + +export default function NavButtons({ add, remove }: Props) { + const { lists } = useContext(FormBuilderContext) + const { activeItem } = lists + return ( + + {activeItem.type !== 'Input' && ( + { + add( + activeItem.type == 'Group' || activeItem.type === 'Step' + ? activeItem.type + : null, + activeItem.data.id, + ) + }} + > + + + )} + { + remove(activeItem.type, activeItem.data.guid, activeItem.data.id) + }} + > + + + + ) +} diff --git a/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.css.tsx b/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.css.tsx new file mode 100644 index 000000000000..3dd7d13a1cfa --- /dev/null +++ b/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.css.tsx @@ -0,0 +1,20 @@ +import { style } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +export const selected = style({ + cursor: 'pointer', + fontWeight: 'bolder', + textDecoration: 'underline', + color: theme.color.blue400, + // border: `1px solid ${theme.color.blue400}`, + // padding: '10px', + // borderRadius: '9px' +}) + +export const notSelected = style({ + cursor: 'pointer', + ':hover': { + fontWeight: 'bolder', + textDecoration: 'underline', + }, +}) diff --git a/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.tsx b/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.tsx new file mode 100644 index 000000000000..509ae6bc8bda --- /dev/null +++ b/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -0,0 +1,57 @@ +import { Box, Inline } from '@island.is/island-ui/core' +import cn from 'classnames' +import * as styles from './NavbarTab.css' +import { Dispatch, SetStateAction, useContext } from 'react' +import FormBuilderContext from '../../../../context/FormBuilderContext' +import { baseSettingsStep } from '../../../../utils/getBaseSettingsStep' + +type Props = { + inSettings: boolean + setInSettings: Dispatch> +} + +export default function NavbarTab({ inSettings, setInSettings }: Props) { + const { lists, listsDispatch } = useContext(FormBuilderContext) + return ( + + + { + listsDispatch({ + type: 'setActiveItem', + payload: { + type: 'Step', + data: lists.steps[2], + }, + }) + setInSettings(false) + }} + > + Skref + + { + listsDispatch({ + type: 'setActiveItem', + payload: { + type: 'Step', + data: baseSettingsStep, + }, + }) + setInSettings(true) + }} + > + Grunnstillingar + + + + ) +} diff --git a/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx b/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx new file mode 100644 index 000000000000..0a0e14b1debb --- /dev/null +++ b/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx @@ -0,0 +1,64 @@ +import { useContext } from 'react' +import { Box, Text } from '@island.is/island-ui/core' +import SelectNavComponent from './components/SelectNavComponent' +import FormBuilderContext from '../../context/FormBuilderContext' +import { NavbarSelectStatus } from '../../types/interfaces' + +export default function NavbarSelect() { + const { lists, selectStatus } = useContext(FormBuilderContext) + const { activeItem, steps, groups, inputs } = lists + //const [selectable, setSelectable] = useState(false) + console.log(selectStatus) + let selectable = false + return ( + + + Skref + + {steps + .filter((s) => s.type === 'Innsláttur') + .map((s) => ( + + + {groups + .filter((g) => g.stepGuid === s.guid) + .map((g) => ( + + + {inputs + .filter((i) => i.groupGuid === g.guid) + .map((i) => { + if (activeItem.data.guid === i.guid) { + if ( + selectStatus !== NavbarSelectStatus.ON_WITHOUT_SELECT + ) { + selectable = true + } + } + return ( + + ) + })} + + ))} + + ))} + + ) +} diff --git a/apps/form-builder/components/NavbarSelect/components/SelectNavComponent.tsx b/apps/form-builder/components/NavbarSelect/components/SelectNavComponent.tsx new file mode 100644 index 000000000000..346228c616e6 --- /dev/null +++ b/apps/form-builder/components/NavbarSelect/components/SelectNavComponent.tsx @@ -0,0 +1,148 @@ +import cn from 'classnames' +import * as styles from './selectNavComponent.css' +import { Box, Checkbox } from '@island.is/island-ui/core' +import { useContext } from 'react' +import { + IGroup, + IInput, + IStep, + ItemType, + NavbarSelectStatus, +} from '../../../types/interfaces' +import FormBuilderContext from '../../../context/FormBuilderContext' + +type Props = { + type: ItemType + data: IStep | IGroup | IInput + active: boolean + selectable: boolean +} + +export default function SelectNavComponent({ + type, + data, + active, + selectable, +}: Props) { + const { formBuilder, formDispatch, lists, selectStatus, activeListItem } = + useContext(FormBuilderContext) + const { activeItem } = lists + const { form } = formBuilder + const activeGuid = + selectStatus === NavbarSelectStatus.LIST_ITEM + ? activeListItem?.guid + : activeItem.data.guid + const connected = + form.dependencies[activeGuid]?.includes(data.guid as string) || + !form.dependencies + return ( + + {active ? ( + + + {/* Index */} + + + {truncateName(data.name.is)} + + + ) : ( + + + {/* {index} */} + + + {truncateName(data.name.is)} + + {selectable && ( + + { + formDispatch({ + type: 'addRemoveConnection', + payload: { + active: activeGuid, + item: data.guid, + }, + }) + }} + /> + + )} + + )} + + ) + + function truncateText(text, maxLength) { + return text.length > maxLength ? text.slice(0, maxLength) + '...' : text + } + + function truncateName(name) { + let maxLength + + if (active) { + switch (type) { + case 'Step': + maxLength = 23 + break + case 'Group': + maxLength = 16 + break + case 'Input': + maxLength = 12 + break + default: + maxLength = 26 + } + } else { + switch (type) { + case 'Step': + maxLength = 26 + break + case 'Group': + maxLength = 19 + break + case 'Input': + maxLength = 16 + break + default: + maxLength = 26 + } + } + + return truncateText(name, maxLength) + } +} diff --git a/apps/form-builder/components/NavbarSelect/components/selectNavComponent.css.ts b/apps/form-builder/components/NavbarSelect/components/selectNavComponent.css.ts new file mode 100644 index 000000000000..e4f29759eebc --- /dev/null +++ b/apps/form-builder/components/NavbarSelect/components/selectNavComponent.css.ts @@ -0,0 +1,93 @@ +import { style, styleVariants } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +const base = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + marginBottom: '2px', + height: '46px', + marginLeft: 'auto', + backgroundColor: theme.color.white, + lineHeight: '46px', + ':hover': { + fontWeight: 'bolder', + }, + cursor: 'grab', +}) + +export const step = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + marginBottom: '2px', + height: '46px', + width: '100%', +}) + +export const navComponent = styleVariants({ + step: [ + base, + { + width: '100%', + }, + ], + group: [ + base, + { + width: '90%', + }, + ], + input: [ + base, + { + width: '80%', + }, + ], +}) + +const baseBackground = style({ + width: '25px', + height: '44px', + /* top-left | top-right | bottom-right | bottom-left */ + borderRadius: `${theme.border.radius.standard} 0 0 ${theme.border.radius.standard}`, + textAlign: 'center', +}) + +export const navBackgroundActive = styleVariants({ + step: [ + baseBackground, + { + backgroundColor: theme.color.blue600, + lineHeight: '45px', + //textAlign: 'center', + color: theme.color.white, + }, + ], + group: [ + baseBackground, + { + backgroundColor: theme.color.roseTinted400, + }, + ], + input: [ + baseBackground, + { + backgroundColor: theme.color.purple400, + }, + ], +}) + +export const navBackgroundDefault = styleVariants({ + step: [ + baseBackground, + { + lineHeight: '45px', + //textAlign: 'center', + }, + ], + group: [baseBackground, {}], + input: [baseBackground, {}], +}) + +export const customBackgroundDropdown = style({ + background: theme.color.blue100, +}) diff --git a/apps/form-builder/components/TableRow/TableRow.css.tsx b/apps/form-builder/components/TableRow/TableRow.css.tsx new file mode 100644 index 000000000000..130bb8609ecc --- /dev/null +++ b/apps/form-builder/components/TableRow/TableRow.css.tsx @@ -0,0 +1,8 @@ +import { style } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +export const header = style({ + padding: '10px 0 10px 0', + backgroundColor: theme.color.blue100, + borderBottom: `1px solid ${theme.border.color.blue200}`, +}) diff --git a/apps/form-builder/components/TableRow/TableRow.tsx b/apps/form-builder/components/TableRow/TableRow.tsx new file mode 100644 index 000000000000..a6534187323b --- /dev/null +++ b/apps/form-builder/components/TableRow/TableRow.tsx @@ -0,0 +1,203 @@ +import { + GridRow as Row, + GridColumn as Column, + Text, + Divider, + Box, + DropdownMenu, + Button, +} from '@island.is/island-ui/core' +import * as styles from './TableRow.css' +import { useState } from 'react' +import { AnimatePresence, motion } from 'framer-motion' +import { useRouter } from 'next/router' +import TranslationTag from '../TranslationTag/TranslationTag' +import { formatDate } from '../../utils/formatDate' +import { + ApplicationTemplateStatus, + LicenseProviderEnum, +} from '../../types/enums' + +interface Props { + id?: number + name?: string + created?: Date + lastModified?: Date + org?: number + state?: number + options?: string + isHeader: boolean + translated?: boolean +} + +interface ColumnTextProps { + text: string | number +} + +const ColumnText = ({ text }: ColumnTextProps) => ( + + {text} + +) + +const TableRow = ({ + id, + name, + lastModified, + org, + state, + isHeader, + translated, +}: Props) => { + const [isOpen, setIsOpen] = useState(false) + const router = useRouter() + if (isHeader) return header() + return ( + setIsOpen(!isOpen)} + style={{ cursor: '' }} + > + + + + + + + + + + + + + + + + + + + + + + + + + } + items={[ + { + title: 'Breyta', + onClick: () => { + router.push(`/Form/${id}`) + }, + }, + { + title: 'Afrita', + onClick: () => { + console.log('Afrita') + }, + }, + { + title: 'Þýðing enska', + onClick: () => { + console.log('Þýðing enska') + }, + }, + { + title: 'Sækja slóð', + onClick: () => { + console.log('Sækja slóð') + }, + }, + { + title: 'Export', + onClick: () => { + console.log('Export') + }, + }, + { + title: 'Sækja json', + onClick: () => { + console.log('Sækja json') + }, + }, + ]} + /> + + + + + {isOpen === true ? ( + + + + + + ) : null} + + + + ) +} + +export default TableRow + +const header = () => ( + <> + + + + Númer + + + Heiti + + + Síðast breytt + + + Þýðingar + + + Stofnun + + + Staða + + + Aðgerðir + + + + +) diff --git a/apps/form-builder/components/Tabs/index.tsx b/apps/form-builder/components/Tabs/index.tsx new file mode 100644 index 000000000000..138e44bb64dc --- /dev/null +++ b/apps/form-builder/components/Tabs/index.tsx @@ -0,0 +1,51 @@ +import { Box, Inline, FocusableBox } from '@island.is/island-ui/core' +import { Dispatch, SetStateAction } from 'react' +import * as styles from './tabs.css' + +interface Props { + selectedTab: number + setSelectedTab: Dispatch> + // allTemp: IApplicationTemplate[] +} + +export default function Tabs({ selectedTab, setSelectedTab }: Props) { + return ( + + + setSelectedTab(0)} + > + {/* {`Óútgefið (${allTemp.filter(t => t.status == 0).length})`} */} + Óútgefið + + setSelectedTab(1)} + > + {/* {`Útgefið í breytingu (${allTemp.filter(t => t.status == 1).length})`} */} + Útgefið + + setSelectedTab(2)} + > + {/* {`Útgefið (${allTemp.filter(t => t.status == 2).length})`} */} + Útgefið + + + + ) +} diff --git a/apps/form-builder/components/Tabs/tabs.css.ts b/apps/form-builder/components/Tabs/tabs.css.ts new file mode 100644 index 000000000000..8ea98181e27d --- /dev/null +++ b/apps/form-builder/components/Tabs/tabs.css.ts @@ -0,0 +1,14 @@ +import { style } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +export const tab = style({ + padding: '10px', + width: '100%', + cursor: 'pointer', +}) + +export const selected = style({ + color: theme.color.blue400, + borderBottom: `1px solid ${theme.border.color.blue400}`, + fontWeight: 'bolder', +}) diff --git a/apps/form-builder/components/TranslationTag/TranslationTag.tsx b/apps/form-builder/components/TranslationTag/TranslationTag.tsx new file mode 100644 index 000000000000..b452797ce9b6 --- /dev/null +++ b/apps/form-builder/components/TranslationTag/TranslationTag.tsx @@ -0,0 +1,12 @@ +import { Tag } from '@island.is/island-ui/core' +interface Props { + translated: boolean +} + +export default function TranslationTag({ translated }: Props) { + if (translated) { + return Þýdd + } else { + return Óþýdd + } +} diff --git a/apps/form-builder/context/FormBuilderContext.tsx b/apps/form-builder/context/FormBuilderContext.tsx new file mode 100644 index 000000000000..fe2fda0e97b2 --- /dev/null +++ b/apps/form-builder/context/FormBuilderContext.tsx @@ -0,0 +1,60 @@ +import { ChangeEvent, FocusEvent, SetStateAction, createContext } from 'react' +import { + ActiveItem, + IFormBuilder, + IFormBuilderContext, + IListItem, + NavbarSelectStatus, +} from '../types/interfaces' + +const FormBuilderContext = createContext({ + formBuilder: {} as IFormBuilder, + formDispatch: function (_value: unknown): void { + throw new Error('Function not implemented.') + }, + lists: { + activeItem: {} as ActiveItem, + steps: [], + groups: [], + inputs: [], + }, + listsDispatch: function (_value: unknown): void { + throw new Error('Function not implemented.') + }, + formUpdate: async function (): Promise { + throw new Error('Function not implemented.') + }, + setIsTyping: function (_value: SetStateAction): void { + throw new Error('Function not implemented.') + }, + inSettings: false, + setInSettings: function (_value: SetStateAction): void { + throw new Error('Function not implemented.') + }, + setSelectStatus: function (_value: SetStateAction): void { + throw new Error('Function not implemented.') + }, + selectStatus: NavbarSelectStatus.OFF, + setActiveListItem: function (_value: SetStateAction): void { + throw new Error('Function not implemented.') + }, + changeSelectHandler: function (_e: unknown): void { + throw new Error('Function not implemented.') + }, + changeHandler: function ( + _e: ChangeEvent, + _propertyName: string, + ): void { + throw new Error('Function not implemented.') + }, + blur: function ( + _e: FocusEvent, + ): void { + throw new Error('Function not implemented.') + }, + onFocus: function (_e: string): void { + throw new Error('Function not implemented.') + }, +}) + +export default FormBuilderContext diff --git a/apps/form-builder/context/LayoutContext.tsx b/apps/form-builder/context/LayoutContext.tsx new file mode 100644 index 000000000000..82bed301b7aa --- /dev/null +++ b/apps/form-builder/context/LayoutContext.tsx @@ -0,0 +1,14 @@ +import { createContext } from 'react' +import { ILayoutContext } from '../types/interfaces' + +const LayoutContext = createContext({ + info: { + organization: '', + applicationName: '', + }, + infoDispatch: function (_value: unknown): void { + throw new Error('Function not implemented.') + }, +}) + +export default LayoutContext diff --git a/apps/form-builder/environments/environment.ts b/apps/form-builder/environments/environment.ts new file mode 100644 index 000000000000..53f69e76d4c9 --- /dev/null +++ b/apps/form-builder/environments/environment.ts @@ -0,0 +1,9 @@ +const devConfig = { + production: false, +} + +const prodConfig = { + production: true, +} + +export default process.env.NODE_ENV === 'production' ? prodConfig : devConfig diff --git a/apps/form-builder/hooks/fileUploadReducer.ts b/apps/form-builder/hooks/fileUploadReducer.ts new file mode 100644 index 000000000000..4e8c480714b1 --- /dev/null +++ b/apps/form-builder/hooks/fileUploadReducer.ts @@ -0,0 +1,43 @@ +import { UploadFile, UploadFileStatus } from '@island.is/island-ui/core' + +enum ActionTypes { + add = 'add', + remove = 'remove', + update = 'update', +} + +type FileUploadActions = + | { type: 'add'; payload: { newFiles: UploadFile[] } } + | { type: 'remove'; payload: { fileToRemove: UploadFile } } + | { + type: 'update' + payload: { file: UploadFile; status: UploadFileStatus; percent: number } + } + +export default function fileUploadReducer( + state: UploadFile[], + action: FileUploadActions, +) { + switch (action.type) { + case ActionTypes.add: + return state.concat(action.payload.newFiles) + + case ActionTypes.remove: + return state.filter( + (file) => file.name !== action.payload.fileToRemove.name, + ) + + case ActionTypes.update: + return [ + ...state.map((file: UploadFile) => { + if (file.name === action.payload.file.name) { + file.status = action.payload.status + file.percent = action.payload.percent + } + return file + }), + ] + default: + throw new Error() + } +} diff --git a/apps/form-builder/hooks/formReducer.tsx b/apps/form-builder/hooks/formReducer.tsx new file mode 100644 index 000000000000..b730b57b47b3 --- /dev/null +++ b/apps/form-builder/hooks/formReducer.tsx @@ -0,0 +1,183 @@ +import { UniqueIdentifier } from '@dnd-kit/core' +import { IFormBuilder, ILanguage, ITenging } from '../types/interfaces' +import { saveFormSettings } from '../services/apiService' + +type ChangeNameAction = { + type: 'changeName' + payload: { + lang: string + newName: string + } +} + +type ApplicationsDaysToRemoveAction = { + type: 'applicationsDaysToRemove' + payload: { + value: number + } +} + +type InvalidationDateAction = { + type: 'invalidationDate' + payload: { + value: Date + } +} + +type StopProgressOnValidatingStepAction = { + type: 'stopProgressOnValidatingStep' + payload: { + value: boolean + } +} + +type AddRemoveConnectionAction = { + type: 'addRemoveConnection' + payload: { + active: UniqueIdentifier + item: UniqueIdentifier + } +} + +type AddRemoveDocuments = { + type: 'addRemoveDocuments' + payload: { + documents: string[] + } +} + +type FormSettingsPayload = + | { property: 'invalidationDate'; value: Date } + | { property: 'dependencies'; value: ITenging } + | { property: 'stopProgressOnValidatingStep'; value: boolean } + | { property: 'applicationsDaysToRemove'; value: number } + | { property: 'documents'; value: string[] } + | { property: 'adilar'; value: string[] } + | { property: 'completedMessage'; value: ILanguage } + | { property: 'isTranslated'; value: boolean } + +type FormSettingsAction = { + type: 'formSettings' + payload: FormSettingsPayload +} + +type Action = + | ChangeNameAction + | ApplicationsDaysToRemoveAction + | InvalidationDateAction + | StopProgressOnValidatingStepAction + | AddRemoveConnectionAction + | FormSettingsAction + | AddRemoveDocuments + +export function formReducer(formBuilder: IFormBuilder, action: Action) { + switch (action.type) { + case 'changeName': { + const { lang, newName } = action.payload + return { + ...formBuilder, + form: { + ...formBuilder.form, + name: { + ...formBuilder.form.name, + [lang]: newName, + }, + }, + } + } + case 'applicationsDaysToRemove': { + const { value } = action.payload + return { + ...formBuilder, + form: { + ...formBuilder.form, + applicationsDaysToRemove: value, + }, + } + } + case 'invalidationDate': { + const { value } = action.payload + return { + ...formBuilder, + form: { + ...formBuilder.form, + invalidationDate: value, + }, + } + } + case 'stopProgressOnValidatingStep': { + const { value } = action.payload + return { + ...formBuilder, + form: { + ...formBuilder.form, + stopProgressOnValidatingStep: value, + }, + } + } + case 'addRemoveConnection': { + const { active, item } = action.payload + const itemAsString = String(item) + const dependencies = { ...formBuilder.form.dependencies } + + if (active in dependencies) { + if (!dependencies[active].includes(itemAsString)) { + dependencies[active] = [...dependencies[active], itemAsString] + } else { + dependencies[active] = dependencies[active].filter((t) => t !== item) + if (dependencies[active].length === 0) { + delete dependencies[active] + } + } + } else { + dependencies[active] = [itemAsString] + } + return { + ...formBuilder, + form: { + ...formBuilder.form, + dependencies, + }, + } + } + + case 'formSettings': { + console.log('formReducer formSettings') + const { property, value } = action.payload + const { id } = formBuilder.form + saveFormSettings(id, { + id: id, + [property]: value, + }) + return { + ...formBuilder, + form: { + ...formBuilder.form, + [property]: value, + }, + } + } + + case 'addRemoveDocuments': { + const { documents } = action.payload + console.log('dasdsa') + saveFormSettings(formBuilder.form.id, { + id: formBuilder.form.id, + documents: documents, + }) + return { + ...formBuilder, + form: { + ...formBuilder.form, + documents: documents, + }, + } + } + default: + return formBuilder + } +} + +// function saveSettings(form: IFormBuilder, property: string, value: unknown) { + +// } diff --git a/apps/form-builder/hooks/headerInfoReducer.tsx b/apps/form-builder/hooks/headerInfoReducer.tsx new file mode 100644 index 000000000000..65ba48e76c61 --- /dev/null +++ b/apps/form-builder/hooks/headerInfoReducer.tsx @@ -0,0 +1,29 @@ +type Action = + | { type: 'changeOrganization'; payload: { value: string } } + | { type: 'changeApplicationName'; payload: { value: string } } + +export function headerInfoReducer( + info: { + organization: string + applicationName: string + }, + action: Action, +) { + switch (action.type) { + case 'changeOrganization': { + return { + ...info, + organization: action.payload?.value ? action.payload.value : '', + } + } + case 'changeApplicationName': { + return { + ...info, + applicationName: action.payload?.value ? action.payload.value : '', + } + } + default: { + return info + } + } +} diff --git a/apps/form-builder/hooks/listsReducer.tsx b/apps/form-builder/hooks/listsReducer.tsx new file mode 100644 index 000000000000..e8ded74a3bb2 --- /dev/null +++ b/apps/form-builder/hooks/listsReducer.tsx @@ -0,0 +1,772 @@ +import { arrayMove } from '@dnd-kit/sortable' +import { + ItemType, + IGroup, + IInput, + IInputSettings, + IListItem, + ILists, + IStep, + ActiveItem, + ILanguage, +} from '../types/interfaces' +import { UniqueIdentifier } from '@dnd-kit/core' +import { uuid } from 'uuidv4' +import { updateItem } from '../services/apiService' + +export type ILang = 'is' | 'en' + +type DndAction = + | { + type: 'stepOverStep' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'groupOverStep' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'groupOverGroup' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'inputOverGroup' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'inputOverInput' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'listItemOverListItem' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + +type AddRemoveAction = + | { type: 'addStep'; payload: { data: IStep } } + | { type: 'addGroup'; payload: { data: IGroup } } + | { type: 'addInput'; payload: { data: IInput } } + | { type: 'removeStep'; payload: { guid: UniqueIdentifier } } + | { type: 'removeGroup'; payload: { guid: UniqueIdentifier } } + | { type: 'removeInput'; payload: { guid: UniqueIdentifier } } + | { type: 'addListItem' } + | { type: 'removeListItem'; payload: { guid: UniqueIdentifier } } + | { + type: 'addInputRelevantParty' + payload: { data: IInput; type: string; name: ILanguage } + } + +type ChangeAction = + | { + type: 'changeName' + payload: { + activeType: ItemType + index: number + lang: ILang + newValue: string + } + } + | { + type: 'changeInputType' + payload: { + index: number + newValue: string | number + inputSettings: unknown + } + } + | { + type: 'setIsRequired' + payload: { guid: UniqueIdentifier; isRequired: boolean } + } + | { type: 'setDescription'; payload: { lang: ILang; newValue: string } } + | { + type: 'changeInputName' + payload: { guid: UniqueIdentifier; lang: ILang; newValue: string } + } + +type ControlAction = + | { + type: 'setActiveItem' + payload: { type: ItemType; data: IStep | IGroup | IInput } + } + | { type: 'setActiveListItem'; payload: { listItem: IListItem } } + +type InputSettingsAction = + | { type: 'timeInterval'; payload: { data: number } } + | { type: 'setInputSettings'; payload: { inputSettings: IInputSettings } } + | { + type: 'setMessageWithLinkSettings' + payload: { + property: 'hnapptexti' | 'url' | 'erHlekkur' + value?: string + checked?: boolean + lang: ILang + } + } + | { + type: 'setFileUploadSettings' + payload: { + property: 'erFjolval' | 'fjoldi' | 'hamarksstaerd' | 'tegundir' + checked?: boolean + value: number | string + } + } + | { + type: 'setNumberInputSettings' + payload: { + property: 'lagmarkslengd' | 'hamarkslengd' | 'laggildi' | 'hagildi' + value: number + } + } + | { + type: 'setListItemSelected' + payload: { guid: UniqueIdentifier; checked: boolean } + } + | { + type: 'setListItem' + payload: { + property: 'text' | 'description' + lang: ILang + value: string + listItemGuid: UniqueIdentifier + } + } + | { type: 'setMultiSet'; payload: { checked: boolean } } + | { + type: 'setRelevantPartiesSettings' + payload: { property: 'type' | 'name'; lang?: ILang; type: string } + } + +export type Action = + | DndAction + | AddRemoveAction + | ChangeAction + | ControlAction + | InputSettingsAction + +export const listsReducer = (lists: ILists, action: Action): ILists => { + const types = { + Step: 'steps', + Group: 'groups', + Input: 'inputs', + } + const { activeItem, steps, groups, inputs } = lists + //const activeIndex = lists[types[activeItem.type]].findIndex((e) => e.guid === activeItem.data.guid) + + const addNewInput = (newInput: IInput, toSave: boolean) => { + toSave && updateItem('Input', newInput) + return { + ...lists, + activeItem: { + ...activeItem, + data: newInput, + }, + inputs: inputs.map((i) => + i.guid === activeItem.data.guid ? newInput : i, + ), + } + } + + switch (action.type) { + // case actions.initialize: { + // return action.payload + // } + + // DnD control + case 'stepOverStep': { + const activeIndex = steps.findIndex( + (s) => s.guid === action.payload.activeId, + ) + const overIndex = steps.findIndex((s) => s.guid === action.payload.overId) + const updatedSteps = arrayMove(steps, activeIndex, overIndex) + return { + ...lists, + steps: updatedSteps, + } + } + case 'groupOverStep': { + const activeIndex = groups.findIndex( + (g) => g.guid === action.payload.activeId, + ) + const overIndex = steps.findIndex((s) => s.guid === action.payload.overId) + + const updatedGroup = groups + updatedGroup[activeIndex].stepGuid = action.payload.overId + updatedGroup[activeIndex].stepId = steps[overIndex].id + + return { + ...lists, + groups: arrayMove(updatedGroup, activeIndex, activeIndex), + } + } + case 'groupOverGroup': { + const activeIndex = groups.findIndex( + (g) => g.guid === action.payload.activeId, + ) + const overIndex = groups.findIndex( + (g) => g.guid === action.payload.overId, + ) + + const updatedGroup = groups + if ( + updatedGroup[activeIndex].stepGuid !== updatedGroup[overIndex].stepGuid + ) { + updatedGroup[activeIndex].stepGuid = updatedGroup[overIndex].stepGuid + updatedGroup[activeIndex].stepId = updatedGroup[overIndex].stepId + return { + ...lists, + groups: arrayMove(updatedGroup, activeIndex, overIndex - 1), + } + } + return { + ...lists, + groups: arrayMove(updatedGroup, activeIndex, overIndex), + } + } + case 'inputOverGroup': { + const activeIndex = inputs.findIndex( + (i) => i.guid === action.payload.activeId, + ) + const overIndex = groups.findIndex( + (g) => g.guid === action.payload.overId, + ) + + const updatedInput = inputs + updatedInput[activeIndex].groupGuid = action.payload.overId + updatedInput[activeIndex].groupId = groups[overIndex].id + return { + ...lists, + inputs: arrayMove(updatedInput, activeIndex, activeIndex), + } + } + case 'inputOverInput': { + const activeIndex = inputs.findIndex( + (i) => i.guid === action.payload.activeId, + ) + const overIndex = inputs.findIndex( + (i) => i.guid === action.payload.overId, + ) + + const updatedInput = inputs + if ( + updatedInput[activeIndex].groupGuid !== + updatedInput[overIndex].groupGuid + ) { + updatedInput[activeIndex].groupGuid = updatedInput[overIndex].groupGuid + updatedInput[activeIndex].groupId = updatedInput[overIndex].groupId + return { + ...lists, + inputs: arrayMove(updatedInput, activeIndex, overIndex - 1), + } + } + return { + ...lists, + inputs: arrayMove(updatedInput, activeIndex, overIndex), + } + } + case 'listItemOverListItem': { + const input = activeItem.data as IInput + const { listi: list } = input.inputSettings + if (list === undefined) { + return lists + } + const activeIndex = list.findIndex( + (l) => l.guid === action.payload.activeId, + ) + const overIndex = list.findIndex((l) => l.guid === action.payload.overId) + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + listi: arrayMove(list, activeIndex, overIndex).map((l, i) => ({ + ...l, + displayOrder: i, + })), + }, + } + return addNewInput(newInput, false) + } + + // DnD control - end + // Add + case 'addStep': { + return { + ...lists, + activeItem: { + type: 'Step', + data: action.payload.data, + }, + steps: [...steps, action.payload.data], + } + } + case 'addGroup': { + return { + ...lists, + activeItem: { + type: 'Group', + data: action.payload.data, + }, + groups: [...groups, action.payload.data], + } + } + case 'addInput': { + return { + ...lists, + activeItem: { + type: 'Input', + data: action.payload.data, + }, + inputs: [...inputs, action.payload.data], + } + } + case 'addInputRelevantParty': { + const newInput = { + ...action.payload.data, + name: action.payload.name, + type: 'Aðili', + inputSettings: { + $type: 'adili', + type: action.payload.type, + }, + } + updateItem('Input', newInput) + return { + ...lists, + inputs: [...inputs, newInput], + } + } + //Add - end + // Remove + case 'removeStep': { + return { + ...lists, + steps: steps.filter((s) => s.guid !== action.payload.guid), + } + } + case 'removeGroup': { + return { + ...lists, + groups: groups.filter((g) => g.guid !== action.payload.guid), + } + } + case 'removeInput': { + return { + ...lists, + inputs: inputs.filter((i) => i.guid !== action.payload.guid), + } + } + // Remove - end + + // ChangeHandlers + case 'changeName': { + const updatedList = [...lists[types[activeItem.type]]] + const activeIndex = lists[types[activeItem.type]].findIndex( + (e: { guid: UniqueIdentifier }) => e.guid === activeItem.data.guid, + ) + updatedList[activeIndex] = { + ...lists[types[activeItem.type]][activeIndex], + name: { + ...lists[types[activeItem.type]][activeIndex].name, + [action.payload.lang]: action.payload.newValue, + }, + } + + const newActive = { + type: activeItem.type, + data: updatedList[activeIndex], + } + return { + ...lists, + activeItem: newActive, + [types[activeItem.type]]: updatedList, + } + } + case 'changeInputType': { + const activeIndex = lists[types[activeItem.type]].findIndex( + (e: { guid: UniqueIdentifier }) => e.guid === activeItem.data.guid, + ) + const newInputs = [...inputs] + + newInputs[activeIndex] = { + ...inputs[activeIndex], + type: action.payload.newValue as string, + inputSettings: action.payload.inputSettings, + } + + const newActive: ActiveItem = { + type: 'Input', + data: newInputs[activeIndex], + } + + updateItem(newActive.type, newActive.data) + + return { + ...lists, + activeItem: newActive, + inputs: newInputs, + } + } + case 'setDescription': { + const input = activeItem.data as IInput + const newInput = { + ...input, + description: { + ...input.description, + [action.payload.lang]: action.payload.newValue, + }, + } + return { + ...lists, + activeItem: { + ...activeItem, + data: newInput, + }, + inputs: inputs.map((i) => { + if (i.guid === input.guid) { + return newInput + } + return i + }), + } + } + case 'changeInputName': { + const { guid, lang, newValue } = action.payload + const currentInput = inputs.find((i) => i.guid === guid) + const newInput = { + ...currentInput, + name: { + ...currentInput.name, + [lang]: newValue, + }, + } + return { + ...lists, + inputs: inputs.map((i) => { + if (i.guid === guid) { + return newInput + } + return i + }), + } + } + + case 'setActiveItem': { + return { + ...lists, + activeItem: { + type: action.payload.type, + data: action.payload.data, + }, + } + } + case 'setIsRequired': { + return { + ...lists, + activeItem: { + ...activeItem, + data: { + ...activeItem.data, + isRequired: action.payload.isRequired, + }, + }, + inputs: inputs.map((i) => { + if (i.guid === action.payload.guid) { + const newInput = { + ...i, + isRequired: action.payload.isRequired, + } + updateItem('Input', newInput) + return newInput + } + return i + }), + } + } + case 'timeInterval': { + if (activeItem.type === 'Input') { + const inputItem = activeItem.data as IInput + return { + ...lists, + activeItem: { + ...activeItem, + data: { + ...activeItem.data, + inputSettings: { + ...inputItem.inputSettings, + interval: action.payload.data, + }, + }, + }, + inputs: inputs.map((i) => { + if (i.guid === activeItem.data.guid) { + const newInput = { + ...i, + inputSettings: { + ...i.inputSettings, + interval: action.payload.data, + }, + } + updateItem('Input', newInput) + return newInput + } + return i + }), + } + } + break + } + case 'setMessageWithLinkSettings': { + const input: IInput = activeItem.data as IInput + + const { payload } = action + if ('property' in payload) { + // dont know why but typescript was inferring payload : {data: number;} + const { property, lang, value, checked } = payload + + const updateMessageLink = ( + property: string, + value: string | undefined, + ) => { + return { + ...input.inputSettings, + [property]: { + ...input.inputSettings[property], + [lang]: value, + }, + } + } + + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + [property]: property === 'erHlekkur' ? checked : value, + ...(property === 'hnapptexti' + ? updateMessageLink(property, value) + : {}), + }, + } + if (property === 'erHlekkur') { + updateItem('Input', newInput) + } + return { + ...lists, + activeItem: { + ...activeItem, + data: newInput, + }, + inputs: inputs.map((i) => + i.guid === activeItem.data.guid ? newInput : i, + ), + } + } + break + } + + // "inputSettings": { + // "$type": "skjal", + // "tegundir": [], + // "hamarksstaerd": 10, + // "erFjolval": false, + // "fjoldi": 20 + // } + case 'setFileUploadSettings': { + const input = activeItem.data as IInput + const { payload } = action + + if ( + !payload || + !('property' in payload) || + !('checked' in payload) || + !('value' in payload) + ) { + throw new Error('Invalid payload') + } + + const { property, checked, value } = payload + + const updateFileTypesArray = () => { + const currentTegundir = input.inputSettings.tegundir || [] + if (checked) { + return [...currentTegundir, value as string] + } else { + return currentTegundir.filter((t) => t !== value) + } + } + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + [property]: property === 'tegundir' ? updateFileTypesArray() : value, + }, + } + updateItem('Input', newInput) + return { + ...lists, + activeItem: { + ...activeItem, + data: newInput, + }, + inputs: inputs.map((i) => + i.guid === activeItem.data.guid ? newInput : i, + ), + } + } + + case 'setNumberInputSettings': { + const input = activeItem.data as IInput + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + [action.payload.property]: action.payload.value, + }, + } + return { + ...lists, + activeItem: { + ...activeItem, + data: newInput, + }, + inputs: inputs.map((i) => + i.guid === activeItem.data.guid ? newInput : i, + ), + } + } + + case 'addListItem': { + const input = activeItem.data as IInput + const list = input.inputSettings.listi || [] + const newListItem = { + guid: uuid(), + label: { + is: '', + en: '', + }, + description: { + is: '', + en: '', + }, + isSelected: false, + displayOrder: list.length, + } + + const newInput: IInput = { + ...input, + inputSettings: { + ...input.inputSettings, + listi: [...list, newListItem], + }, + } + return addNewInput(newInput, true) + } + + case 'setListItemSelected': { + const input = activeItem.data as IInput + const list = input.inputSettings.listi || [] + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + listi: list.map((l) => + l.guid === action.payload.guid + ? { ...l, isSelected: !l.isSelected } + : { ...l, isSelected: false }, + ), + }, + } + return addNewInput(newInput, true) + } + + case 'removeListItem': { + const input = activeItem.data as IInput + const list = input.inputSettings.listi || [] + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + listi: list.filter((l) => l.guid !== action.payload.guid), + }, + } + return addNewInput(newInput, true) + } + + case 'setListItem': { + const input = activeItem.data as IInput + const { payload } = action + const { property, lang, value, listItemGuid } = payload + const list = input.inputSettings.listi || [] + + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + listi: list.map((l) => { + if (l.guid === listItemGuid) { + return { + ...l, + [property]: { + ...l[property], + [lang]: value, + }, + } + } + return l + }), + }, + } + console.log('newInput', newInput) + return addNewInput(newInput, false) + } + + case 'setActiveListItem': { + return { + ...lists, + activeListItem: action.payload.listItem, + } + } + + // MultiSet boolean?? + case 'setMultiSet': { + const group = activeItem.data as IGroup + const newGroup = { + ...group, + multiSet: action.payload.checked ? 10 : 0, + } + updateItem('Group', newGroup) + return { + ...lists, + activeItem: { + ...activeItem, + data: newGroup, + }, + groups: lists.groups.map((g) => + g.guid === activeItem.data.guid ? newGroup : g, + ), + } + } + + case 'setInputSettings': { + const { inputSettings } = action.payload + const input = activeItem.data as IInput + const newInput = { + ...input, + inputSettings: inputSettings, + } + updateItem('Input', newInput) + return { + ...lists, + activeItem: { + ...activeItem, + data: newInput, + }, + inputs: inputs.map((i) => + i.guid === activeItem.data.guid ? newInput : i, + ), + } + } + + default: + return lists + } +} diff --git a/apps/form-builder/index.d.ts b/apps/form-builder/index.d.ts new file mode 100644 index 000000000000..a9ab53489c7f --- /dev/null +++ b/apps/form-builder/index.d.ts @@ -0,0 +1,6 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +declare module '*.svg' { + const content: any + export const ReactComponent: any + export default content +} diff --git a/apps/form-builder/jest.config.ts b/apps/form-builder/jest.config.ts new file mode 100644 index 000000000000..f205af440342 --- /dev/null +++ b/apps/form-builder/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: 'form-builder', + preset: '../../jest.preset.js', + transform: { + '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', + '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/next/babel'] }], + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + coverageDirectory: '../../coverage/apps/form-builder', +} diff --git a/apps/form-builder/lib/fileTypes.json b/apps/form-builder/lib/fileTypes.json new file mode 100644 index 000000000000..a066e60198cf --- /dev/null +++ b/apps/form-builder/lib/fileTypes.json @@ -0,0 +1,15 @@ +{ + ".pdf": "application/pdf", + ".doc": "application/msword", + ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + ".txt": "text/plain", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg", + ".png": "image/png", + ".gif": "image/gif", + ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ".xls": "application/vnd.ms-excel", + ".csv": "text/csv", + ".zip": "application/zip", + "*": "application/octet-stream" +} diff --git a/apps/form-builder/next-env.d.ts b/apps/form-builder/next-env.d.ts new file mode 100644 index 000000000000..4f11a03dc6cc --- /dev/null +++ b/apps/form-builder/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/apps/form-builder/next.config.js b/apps/form-builder/next.config.js new file mode 100644 index 000000000000..a3c0782fba37 --- /dev/null +++ b/apps/form-builder/next.config.js @@ -0,0 +1,39 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const withNx = require('@nx/next/plugins/with-nx') +const { createVanillaExtractPlugin } = require('@vanilla-extract/next-plugin') +const withVanillaExtract = createVanillaExtractPlugin() + +/** + * @type {import('@nrwl/next/plugins/with-nx').WithNxOptions} + **/ + +const nextConfig = { + nx: { + svgr: false, + }, +} + +module.exports = withNx(withVanillaExtract(nextConfig)) + +//@ts-check + +// eslint-disable-next-line @typescript-eslint/no-var-requires +// const { composePlugins, withNx } = require('@nx/next') + +// /** +// * @type {import('@nx/next/plugins/with-nx').WithNxOptions} +// **/ +// const nextConfig = { +// nx: { +// // Set this to true if you would like to use SVGR +// // See: https://github.com/gregberge/svgr +// svgr: false, +// }, +// } + +// const plugins = [ +// // Add more Next.js plugins to this list if needed. +// withNx, +// ] + +// module.exports = composePlugins(...plugins)(nextConfig) diff --git a/apps/form-builder/pages/Form/[id]/index.tsx b/apps/form-builder/pages/Form/[id]/index.tsx new file mode 100644 index 000000000000..582a15fdc397 --- /dev/null +++ b/apps/form-builder/pages/Form/[id]/index.tsx @@ -0,0 +1,29 @@ +import { GetServerSidePropsContext } from 'next' +import Form from '../../../screens/Form' +import { getForm } from '../../../services/apiService' +import { IFormBuilder } from '../../../types/interfaces' + +interface Props { + form: IFormBuilder +} + +const Index = ({ form }: Props) => { + return
+} + +export default Index + +export async function getServerSideProps(context: GetServerSidePropsContext) { + const formId = context.params?.id as unknown + if (!formId) { + return { + notFound: true, + } + } + const form: IFormBuilder = await getForm(formId as number) + return { + props: { + form: form, + }, + } +} diff --git a/apps/form-builder/pages/Form/index.tsx b/apps/form-builder/pages/Form/index.tsx new file mode 100644 index 000000000000..2ea7400769ce --- /dev/null +++ b/apps/form-builder/pages/Form/index.tsx @@ -0,0 +1,22 @@ +import Form from '../../screens/Form' +import { getNewForm } from '../../services/apiService' +import { IFormBuilder } from '../../types/interfaces' + +interface Props { + form: IFormBuilder +} + +const Index = ({ form }: Props) => { + return +} + +export default Index + +export async function getServerSideProps() { + const form: IFormBuilder = await getNewForm(1) + return { + props: { + form: form, + }, + } +} diff --git a/apps/form-builder/pages/_app.tsx b/apps/form-builder/pages/_app.tsx new file mode 100644 index 000000000000..39f4f73e5355 --- /dev/null +++ b/apps/form-builder/pages/_app.tsx @@ -0,0 +1,25 @@ +import { AppProps } from 'next/app' +import { IntlProvider } from 'react-intl' +import Layout from '../components/Layout/Layout' + +const FormBuilderProviderApp: unknown = ({ + Component, + pageProps, +}: AppProps) => { + return ( + undefined} + > + +
+ +
+
+
+ ) +} + +export default FormBuilderProviderApp diff --git a/apps/form-builder/pages/forms.tsx b/apps/form-builder/pages/forms.tsx new file mode 100644 index 000000000000..5afed5abf66a --- /dev/null +++ b/apps/form-builder/pages/forms.tsx @@ -0,0 +1,22 @@ +import { Forms } from '../screens' +import { getAllFormsFromOrganisation } from '../services/apiService' +import { IFormBuilder } from '../types/interfaces' + +interface Props { + formBuilder: IFormBuilder +} + +const Index = ({ formBuilder }: Props) => { + return +} + +export default Index + +export async function getServerSideProps() { + const allForms: IFormBuilder = await getAllFormsFromOrganisation(1) + return { + props: { + formBuilder: allForms, + }, + } +} diff --git a/apps/form-builder/pages/index.tsx b/apps/form-builder/pages/index.tsx new file mode 100644 index 000000000000..b46c74eee8d0 --- /dev/null +++ b/apps/form-builder/pages/index.tsx @@ -0,0 +1,23 @@ +import { Forms } from '../screens' +import { getAllFormsFromOrganisation } from '../services/apiService' +import { IFormBuilder } from '../types/interfaces' + +interface Props { + formBuilder: IFormBuilder +} + +const Index = ({ formBuilder }: Props) => { + return +} + +export default Index + +export async function getServerSideProps() { + const allForms: IFormBuilder = await getAllFormsFromOrganisation(1) + console.log(allForms) + return { + props: { + formBuilder: allForms, + }, + } +} diff --git a/apps/form-builder/project.json b/apps/form-builder/project.json new file mode 100644 index 000000000000..73c5c0878a43 --- /dev/null +++ b/apps/form-builder/project.json @@ -0,0 +1,108 @@ +{ + "name": "form-builder", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/form-builder", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/next:build", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "outputPath": "dist/apps/form-builder" + }, + "configurations": { + "development": { + "outputPath": "apps/form-builder" + }, + "production": {} + } + }, + "build-custom-server": { + "executor": "@nx/webpack:webpack", + "defaultConfiguration": "production", + "options": { + "outputPath": "dist/apps/form-builder", + "main": "apps/form-builder/server.ts", + "tsConfig": "apps/form-builder/tsconfig.server.json", + "maxWorkers": 2, + "assets": [], + "compiler": "tsc", + "target": "node" + }, + "configurations": { + "development": {}, + "production": { + "optimization": true, + "extractLicenses": true, + "inspect": false + } + } + }, + "serve": { + "executor": "@nx/next:server", + "defaultConfiguration": "development", + "options": { + "buildTarget": "form-builder:build", + "dev": true, + "customServerTarget": "form-builder:serve-custom-server" + }, + "configurations": { + "development": { + "buildTarget": "form-builder:build:development", + "dev": true, + "customServerTarget": "form-builder:serve-custom-server:development" + }, + "production": { + "buildTarget": "form-builder:build:production", + "dev": false, + "customServerTarget": "form-builder:serve-custom-server:production" + } + } + }, + "serve-custom-server": { + "executor": "@nx/js:node", + "defaultConfiguration": "development", + "options": { + "buildTarget": "form-builder:build-custom-server" + }, + "configurations": { + "development": { + "buildTarget": "form-builder:build-custom-server:development" + }, + "production": { + "buildTarget": "form-builder:build-custom-server:production" + } + } + }, + "export": { + "executor": "@nx/next:export", + "options": { + "buildTarget": "form-builder:build:production" + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "apps/form-builder/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/form-builder/**/*.{ts,tsx,js,jsx}"] + } + }, + "docker-next": {} + }, + "tags": [] +} diff --git a/apps/form-builder/proxy.config.json b/apps/form-builder/proxy.config.json new file mode 100644 index 000000000000..1ec1f59e0a1a --- /dev/null +++ b/apps/form-builder/proxy.config.json @@ -0,0 +1,6 @@ +{ + "/api/graphql": { + "target": "http://localhost:4444", + "secure": false + } +} diff --git a/apps/form-builder/public/.gitkeep b/apps/form-builder/public/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/apps/form-builder/public/favicon.ico b/apps/form-builder/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..317ebcb2336e0833a22dddf0ab287849f26fda57 GIT binary patch literal 15086 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 + NavbarSelectStatus.OFF, + ) + console.log('THE FORM: ', form) + const [activeListItem, setActiveListItem] = useState(null) + const { infoDispatch } = useContext(LayoutContext) + const initialNavbar: ILists = { + activeItem: inSettings + ? { type: 'Step', data: baseSettingsStep } + : { + type: 'Step', + data: + form.form.stepsList.find((s) => s.type === 'Innsláttur') || + defaultStep, + }, + steps: form.form.stepsList, + groups: form.form.groupsList, + inputs: form.form.inputsList, + } + + const [formBuilder, formDispatch] = useReducer(formReducer, form) + const [list, listsDispatch] = useReducer( + listsReducer, + initialNavbar, + undefined, + ) + const lists = list as ILists + const { activeItem } = lists + + const isMounted = useRef(false) + useEffect(() => { + if (isMounted.current) { + if (!isTyping) { + //formUpdate() + } + } else { + isMounted.current = true + infoDispatch({ + type: 'changeOrganization', + data: formBuilder?.form?.organization.name.is, + }) + infoDispatch({ + type: 'changeApplicationName', + data: formBuilder.form.name.is, + }) + } + }, [formBuilder, infoDispatch, isTyping]) + + const context: IFormBuilderContext = { + formBuilder: formBuilder, + formDispatch: formDispatch, + lists: lists, + listsDispatch: listsDispatch, + formUpdate: formUpdate, + setIsTyping: setIsTyping, + inSettings: inSettings, + setInSettings: setInSettings, + setSelectStatus: setSelectStatus, + selectStatus: selectStatus, + activeListItem: activeListItem, + setActiveListItem: setActiveListItem, + changeHandler: changeHandler, + changeSelectHandler: changeSelectHandler, + blur: blur, + onFocus: onFocus, + } + + if (formBuilder.form && activeItem) { + return ( + + + + {selectStatus !== NavbarSelectStatus.OFF ? ( + + ) : ( + + )} + + + + {activeItem?.data && } + + + + + ) + } + return <>Loading + async function formUpdate() { + updateForm(formBuilder.form, lists.steps, lists.groups, lists.inputs) + } + + function changeHandler( + e: ChangeEvent, + propertyName: string, + ) { + if (!isTyping) setIsTyping(true) + if (propertyName === 'name' || propertyName === 'nameEn') { + const lang = propertyName === 'name' ? 'is' : 'en' + const index = getIndex() + listsDispatch({ + type: 'changeName', + payload: { + activeType: activeItem.type, + index: index, + lang: lang, + newValue: e.target.value, + }, + }) + } + } + + function changeSelectHandler(e) { + if ('value' in e) { + const index = getIndex() + listsDispatch({ + type: 'changeInputType', + payload: { + index: index, + newValue: e.value, + inputSettings: + formBuilder?.inputTypes?.find( + (inputType) => inputType?.type === e.value, + )?.inputSettings ?? null, + }, + }) + } + //updateItem(activeItem.type, activeItem.data) + } + + function blur(e: FocusEvent) { + // Check whether value has changed + if (e.target.value !== focus) { + //saveItem() + setOnFocus(null) + //formUpdate() + updateItem(activeItem.type, activeItem.data) + } + setIsTyping(false) + } + + function onFocus(value: string) { + setIsTyping(true) + setOnFocus(value) + } + + function getIndex(): number { + if (activeItem.type === 'Step') { + const index = lists.steps.findIndex( + (s) => s.guid === activeItem.data.guid, + ) + return index ? index : -1 + } + if (activeItem.type === 'Group') { + const index = lists.groups.findIndex( + (g) => g.guid === activeItem.data.guid, + ) + return index ? index : -1 + } + if (activeItem.type === 'Input') { + const index = lists.inputs.findIndex( + (i) => i.guid === activeItem.data.guid, + ) + return index ? index : -1 + } + return -1 + } +} diff --git a/apps/form-builder/screens/Forms.tsx b/apps/form-builder/screens/Forms.tsx new file mode 100644 index 000000000000..8234a091bce8 --- /dev/null +++ b/apps/form-builder/screens/Forms.tsx @@ -0,0 +1,78 @@ +import { Box, Button, Inline, Text } from '@island.is/island-ui/core' +import router from 'next/router' +import TableRow from '../components/TableRow/TableRow' +import { IFormBuilder } from '../types/interfaces' + +interface Props { + formBuilder: IFormBuilder +} +export default function Forms({ formBuilder }: Props) { + if (formBuilder) { + return ( + + {/* Title and buttons */} + + Forskriftir + + + + + + + + + + {/* Warning: Did not expect server HTML to contain a in
. */} + {/* */} + + + + + {/* */} + + + + + {formBuilder.forms && + formBuilder.forms?.map((f) => { + return ( + // + + // + ) + })} + + ) + } + return <> +} diff --git a/apps/form-builder/screens/index.tsx b/apps/form-builder/screens/index.tsx new file mode 100644 index 000000000000..3112d3ade954 --- /dev/null +++ b/apps/form-builder/screens/index.tsx @@ -0,0 +1,2 @@ +export { default as Forms } from './Forms' +export { default as Form } from './Form' diff --git a/apps/form-builder/server.ts b/apps/form-builder/server.ts new file mode 100644 index 000000000000..3f65dc718369 --- /dev/null +++ b/apps/form-builder/server.ts @@ -0,0 +1,12 @@ +import { bootstrap } from '@island.is/infra-next-server' +import proxyConfig from './proxy.config.json' + +bootstrap({ + name: 'form-builder', + appDir: 'apps/form-builder', + proxyConfig, + externalEndpointDependencies: (nextConfig) => { + const { graphqlEndpoint } = nextConfig.serverRuntimeConfig + return [graphqlEndpoint] + }, +}) diff --git a/apps/form-builder/services/apiService.tsx b/apps/form-builder/services/apiService.tsx new file mode 100644 index 000000000000..0c8e28b73875 --- /dev/null +++ b/apps/form-builder/services/apiService.tsx @@ -0,0 +1,268 @@ +import axios from 'axios' +import { + IForm, + IFormBuilder, + IGroup, + IInput, + ILanguage, + IStep, + ItemType, +} from '../types/interfaces' + +const BASEURL = 'https://profun.island.is/umsoknarkerfi/api' + +export async function getForm(id: number) { + try { + const response = await axios.get(`${BASEURL}/Forms/${id}`) + return response.data + } catch (error) { + console.error(error) + throw error + } +} + +export async function updateForm( + form: IForm, + steps: IStep[], + groups: IGroup[], + inputs: IInput[], +) { + const updatedForm: IForm = { + ...form, + stepsList: steps.map((s, i) => { + return { + ...s, + displayOrder: i, + } + }), + groupsList: groups.map((g, i) => { + return { + ...g, + displayOrder: i, + } + }), + inputsList: inputs.map((i, index) => { + return { + ...i, + displayOrder: index, + } + }), + } + + try { + const response = await axios.put( + `${BASEURL}/Forms/${form.id}`, + updatedForm, + { + headers: { + 'Content-Type': 'application/json', + }, + }, + ) + + console.log('Update complete') + return response + } catch (error) { + console.error('Error in updateNavbar:', error) + throw error + } +} + +export async function updateItem(type: string, data: IStep | IGroup | IInput) { + const url = `${BASEURL}/${type}s/${data.id}` + + try { + const response = await axios.put(url, data, { + headers: { + 'Content-Type': 'application/json', + }, + }) + + console.log('response', response) + console.log(`saving ${type}`, data) + + return response + } catch (error) { + console.error('Error in updateItem: ', error) + throw error + } +} + +export async function getNewForm(organisationId: number) { + try { + const response = await axios.post(`${BASEURL}/Forms/${organisationId}`) + + console.log('api', response.data) + + return response.data + } catch (error) { + console.error('Error in getNewForm: ', error) + throw error + } +} + +export async function getAllFormsFromOrganisation( + organisationId: number, +): Promise { + try { + const response = await axios.get( + `${BASEURL}/Forms/Organization/${organisationId}`, + ) + console.log('allForms api: ', response.data) + return response.data + } catch (error) { + console.error('Error in getAllFormsFromOrganisation: ', error) + throw error + } +} + +export async function addStep( + formId: number, + name: ILanguage, + displayOrder: number, + stepType: number, + waitingText: ILanguage, + callRuleset: boolean, +): Promise { + // const schema = zod.object({ + // formId: zod.number(), + // name: zod.object({ + // is: zod.string(), + // en: zod.string() + // }), + // displayOrder: zod.number(), + // stepType: zod.number(), + // waitingText: zod.object({ + // is: zod.string(), + // en: zod.string() + // }), + // callRuleset: zod.boolean() + // }) + + try { + const response = await axios.post(`${BASEURL}/Steps`, { + formId, + name, + displayOrder, + stepType, + waitingText, + callRuleset, + }) + + // const data = schema.parse(response.data) + const data = response.data + console.log('addStep data: ', data) + + return data + } catch (error) { + console.error('Error in addStep: ', error) + throw error + } +} + +export async function addGroup( + displayOrder: number, + parentId: number, +): Promise { + // const schema = zod.object({ + // name: zod.object({ + // is: zod.string(), + // en: zod.string() + // }), + // displayOrder: zod.number(), + // multiSet: zod.number(), + // parentId: zod.number() + // }) + + try { + const response = await axios.post(`${BASEURL}/Groups`, { + displayOrder: displayOrder, + stepId: parentId, + }) + + // const data = schema.parse(response.data) + const data = response.data + console.log('addGroup data: ', data) + + return data + } catch (error) { + console.error('Error in addGroup: ', error) + throw error + } +} + +export async function addInput( + displayOrder: number, + parentId: number, +): Promise { + // const schema = zod.object({ + // displayOrder: zod.number(), + // parentId: zod.number(), + // inputTypeId: zod.number() + // }) + + const requestBody = { + displayOrder: displayOrder, + groupId: parentId, + } + + try { + const response = await axios.post(`${BASEURL}/Inputs`, requestBody, { + headers: { + 'Content-Type': 'application/json', + }, + }) + + // const data = schema.parse(response.data) + const data = response.data + console.log('addInput data: ', data) + + return data + } catch (error) { + console.error('Error in addInput: ', error) + throw error + } +} + +export async function deleteItem(type: ItemType, id: number) { + try { + const response = await axios.delete(`${BASEURL}/${type}s/${id}`) + console.log('deleteItem response: ', response) + return response + } catch (error) { + console.error('Error in deleteItem: ', error) + throw error + } +} + +export async function saveFormSettings(formId: number, settings: object) { + console.log(settings) + try { + const response = await axios.put( + `${BASEURL}/Forms/${formId}/Settings`, + settings, + { + headers: { + 'Content-Type': 'application/json', + }, + }, + ) + + console.log('saveFormSettings response: ', response) + return response + } catch (error) { + console.error('Error in saveFormSettings: ', error) + throw error + } +} + +export async function getList(type: string) { + try { + const response = await axios.get(`${BASEURL}/Services/${type}`) + console.log('getList response: ', response) + return response.data + } catch (error) { + console.error('Error in getList: ', error) + throw error + } +} diff --git a/apps/form-builder/services/translationStation.tsx b/apps/form-builder/services/translationStation.tsx new file mode 100644 index 000000000000..abdca24710e1 --- /dev/null +++ b/apps/form-builder/services/translationStation.tsx @@ -0,0 +1,62 @@ +import { ITranslationResponse } from '../types/interfaces' +import axios from 'axios' +import dotenv from 'dotenv' + +dotenv.config() + +export const translationStation = async ( + input: string, +): Promise => { + const apiUrl = process.env.MIDEIND_API + const apiKey = process.env.MIDEIND_KEY + + if (!apiUrl || !apiKey) { + throw new Error('API URL or API key is not defined.') + } + + try { + const response = await axios.post( + apiUrl, + { + contents: [input], + sourceLanguageCode: 'is', + targetLanguageCode: 'en', + model: '', + domain: '', + }, + { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + 'X-API-Key': apiKey, + }, + }, + ) + + return response.data + } catch (error) { + console.error('Error in translationStation: ', error) + throw error + } +} +// export const translationStation = async (input: string): Promise => { +// console.log('translationStation', input) +// return await fetch("https://stafraentisland.greynir.is/translate/", { +// method: 'POST', +// headers: { +// 'content-type': 'application/json', +// 'accept': 'application/json', +// 'X-API-Key': 'jtn1QACg.jCxAuvopgqplC5i38Nav1BubiSik6tDK' +// }, +// body: JSON.stringify({ +// "contents": [input], +// "sourceLanguageCode": "is", +// "targetLanguageCode": "en", +// "model": "", +// "domain": "" +// }) +// }).then(res => { +// console.log(res) +// return res.json() +// }) +// } diff --git a/apps/form-builder/tsconfig.json b/apps/form-builder/tsconfig.json new file mode 100644 index 000000000000..1caed9d6b561 --- /dev/null +++ b/apps/form-builder/tsconfig.json @@ -0,0 +1,54 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "jsx": "preserve", + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "resolveJsonModule": true, + "isolatedModules": true, + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "types": ["jest", "node"] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + "**/*.js", + "**/*.jsx", + "../../apps/form-builder/.next/types/**/*.ts", + "../../dist/apps/form-builder/.next/types/**/*.ts", + "next-env.d.ts" + ], + "exclude": [ + "node_modules", + "jest.config.ts", + "src/**/*.spec.ts", + "src/**/*.test.ts" + ] +} +// { +// "extends": "../../tsconfig.base.json", +// "compilerOptions": { +// "jsx": "preserve", +// "allowJs": true, +// "esModuleInterop": true, +// "allowSyntheticDefaultImports": true, +// "types": ["node", "jest"], +// "strict": false, +// "forceConsistentCasingInFileNames": true, +// "noEmit": true, +// "resolveJsonModule": true, +// "isolatedModules": true, +// "incremental": true, +// }, +// "include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "next-env.d.ts", "pages/FormBuilder/components/NewAttribute/index.2tsx"], +// "exclude": ["node_modules"] +// } diff --git a/apps/form-builder/tsconfig.server.json b/apps/form-builder/tsconfig.server.json new file mode 100644 index 000000000000..35605d15229c --- /dev/null +++ b/apps/form-builder/tsconfig.server.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "noEmit": false, + "incremental": true, + "tsBuildInfoFile": "../../tmp/buildcache/apps/form-builder/server", + "types": ["node"] + }, + "include": ["server.ts"] +} diff --git a/apps/form-builder/tsconfig.spec.json b/apps/form-builder/tsconfig.spec.json new file mode 100644 index 000000000000..214b2cc208c1 --- /dev/null +++ b/apps/form-builder/tsconfig.spec.json @@ -0,0 +1,21 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"], + "jsx": "react" + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/apps/form-builder/types/enums/index.tsx b/apps/form-builder/types/enums/index.tsx new file mode 100644 index 000000000000..70b74cdae3c0 --- /dev/null +++ b/apps/form-builder/types/enums/index.tsx @@ -0,0 +1,91 @@ +export enum ApplicationTemplateStatus { + Þýðing = -2, + Kerfi = -1, + Óútgefið = 0, + Útgefið = 2, + tekiðÚrNotkun = 4, +} + +export enum LicenseProviderEnum { + sýslumannsembættið = 1, + leyfisveitanEhf = 2, + leyfisveitanEhf2 = 9, + þjóðskráÍslands = 3, + ferðamálastofa = 4, + ferðamálastofa2 = 52, + menntamálastofnun = 5, + hallaBjörgBaldursdóttir = 6, + fiskistofa = 7, + officeOfDistrictMagistrate = 8, + registersIceland = 10, + icelandicTouristBoard = 11, + directorateOfEducation = 12, + hallaBjorgBaldursdottir = 13, + directorateOfFisheries = 14, + fjármálaOgEfnahagsráðuneytið = 15, + ministryOfFinanceAndEconomicAffairs = 16, + ríkisskattstjóri = 17, + ríkiskaup = 18, + sýslumaðurinnÁHöfuðborgarsvæðinu = 19, + sýslumaðurinnÁHöfuðborgarsvæðinu2 = 50, + theDistrictMagistrateCapitalRegion = 20, + centralPublicProcurement = 21, + directorateOfInternalRevenue = 22, + sýslumaðurinnÁVestfjörðum = 23, + theDistrictMagistrateWestfjords = 24, + útlendingastofnun = 37, + útlendingastofnun2 = 49, + icelandicDirectorateOfImmigration = 38, + utanríkisráðuneytið = 39, + ministryForForeignAffairs = 40, + ríkislögreglustjóri = 41, + ríkislögreglustjóri2 = 71, + sjúkratryggingarÍslands = 42, + sjúkratryggingarÍslands2 = 51, + þjóðskjalasafnÍslands = 43, + þjóðskjalasafnÍslands2 = 44, + sýslumenn = 53, + fjölskylduOgHúsdýragarðurinn = 59, + menntamálastofnun2 = 61, + umhverfisstofnun = 62, + héraðsdómurReykjavíkur = 63, + minjastofnunÍslands = 64, + náttúruhamfaratryggingarÍslands = 65, +} + +export enum FileTypeEnum { + PDF, + Image, + Xls, + ALL, +} + +export enum EInputType { + Textalínubox = 1, + TextaboxStórt = 2, + Tölustafir = 3, + Textalýsing = 4, + Hakbox = 5, + Dagssetning = 6, + Fellilisti = 7, + Valhnappar = 8, + Heimagistingarnúmer = 9, + FasteignanúmerInnslegið = 10, + FasteignanúmerValiðÚrLista = 11, + Bankareikningsnúmer = 13, + Kennitala = 14, + Greiðandi = 15, + Krónutala = 16, + Krónutölusamtala = 17, + Netfang = 18, + Símanúmer = 19, + FalinnStrengur = 20, + Tími = 21, + Sveitarfélög = 22, + Landalisti = 23, + Póstnúmer = 24, + KennitalaDánarbús = 25, + KennitalaAllt = 26, + Vottorð = 28, + Aðili = 29, +} diff --git a/apps/form-builder/types/interfaces.tsx b/apps/form-builder/types/interfaces.tsx new file mode 100644 index 000000000000..8dd7b6468d73 --- /dev/null +++ b/apps/form-builder/types/interfaces.tsx @@ -0,0 +1,224 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { ChangeEvent, Dispatch, SetStateAction, FocusEvent } from 'react' +import { UniqueIdentifier } from '@dnd-kit/core' + +export interface IFormBuilderContext { + formBuilder: IFormBuilder + formDispatch: Dispatch + lists: { + activeItem: ActiveItem + steps: IStep[] + groups: IGroup[] + inputs: IInput[] + } + listsDispatch: Dispatch + formUpdate: () => Promise + setIsTyping: Dispatch> + inSettings: boolean + setInSettings: Dispatch> + setSelectStatus: Dispatch> + selectStatus: NavbarSelectStatus + activeListItem?: IListItem | null + setActiveListItem: Dispatch> + changeSelectHandler(e: unknown): void + changeHandler( + e: ChangeEvent, + propertyName: string, + ): void + blur(e: FocusEvent): void + onFocus(e: string): void +} + +export interface IInputSettings { + $type?: string + isLarge?: boolean + size?: Sizes + interval?: number + erHlekkur?: boolean + url?: string + hnapptexti?: ILanguage + tegundir?: string[] + hamarksstaerd?: number + erFjolval?: boolean + fjoldi?: number + header?: string + hamarkslengd?: number + lagmarkslengd?: number + laggildi?: number + hagildi?: number + listi?: IListItem[] + type?: string + name?: ILanguage + [key: string]: any +} + +export interface IForm { + id: number + name: ILanguage + created: Date + lastChanged: Date + organization: { + id: number + name: ILanguage + kennitala: string + scope: string + xroadBaseUrl: string + } + dependencies: ITenging + stepsList: IStep[] + groupsList: IGroup[] + inputsList: IInput[] + stopProgressOnValidatingStep: boolean + applicationsDaysToRemove: number + invalidationDate?: Date + isTranslated: boolean + documentTypes: string[] + adilar: string[] +} + +export interface IStep { + id: number + guid: UniqueIdentifier + displayOrder: number + name: ILanguage + type: string + waitingText: ILanguage + callRuleset: boolean + isHidden: boolean + isCompleted: boolean +} + +export interface IGroup { + id: number + name: ILanguage + guid: UniqueIdentifier + displayOrder: number + isHidden: boolean + multiSet: number + stepId: number + stepGuid: UniqueIdentifier + inputs?: IInput[] +} + +export interface IInput { + id: number + name: ILanguage + description: ILanguage + isRequired: boolean + displayOrder: number + groupId: number + groupGuid: UniqueIdentifier + isHidden: boolean + type: string + guid: UniqueIdentifier + inputFields: object + inputSettings: IInputSettings + isPartOfMultiSet: boolean +} + +export type ILists = { + activeItem: ActiveItem + steps: IStep[] + groups: IGroup[] + inputs: IInput[] + [key: string]: any // index signature for reducer +} + +export interface ActiveItem { + type: ItemType + data: IStep | IGroup | IInput +} + +export interface ISelectOption { + label: string | number + value: string | number +} + +export interface ITenging { + [key: string]: string[] +} + +export interface IFormBuilder { + form: IForm + forms?: IForm[] + documentTypes: ICertificate[] + inputTypes: IInputTypes[] + applicantTypes: IApplicantType[] +} + +export interface IListItem { + guid: UniqueIdentifier + label: ILanguage + description: ILanguage + displayOrder: number + isSelected: boolean +} + +export interface ICertificate { + type: string + name: ILanguage + description: ILanguage +} + +export interface IApplicantType { + type: string + name: string + nameSuggestions: ILanguage[] +} + +export interface IInputTypes { + type: string + name: string + description: string + organizations?: [] // + inputFields?: object + inputMetadata?: object + ruleset?: object + inputSettings: object +} + +export interface ILayoutContext { + info: { + organization: any + applicationName: string + } + infoDispatch: React.Dispatch +} + +export interface ILicenseProvider { + licenseProviderID: number + kennitala: string + name: string + email: string + phone: string + enabled: boolean + parentId?: number + language: string +} + +export interface ITranslationResponse { + translations: ITranslation[] + sourceLanguageCode: string + targetLanguageCode: string + model: string +} + +export interface ITranslation { + translatedText: string + translatedTextStructured: [string, string][] +} +export enum NavbarSelectStatus { + OFF = 'Off', + NORMAL = 'Normal', + LIST_ITEM = 'ListItem', + ON_WITHOUT_SELECT = 'OnWithoutSelect', +} + +export type ItemType = 'Step' | 'Group' | 'Input' + +export type ILanguage = { + is: string + en: string +} + +type Sizes = 'xs' | 'sm' | 'md' diff --git a/apps/form-builder/utils/defaultStep.tsx b/apps/form-builder/utils/defaultStep.tsx new file mode 100644 index 000000000000..6130a25964f1 --- /dev/null +++ b/apps/form-builder/utils/defaultStep.tsx @@ -0,0 +1,20 @@ +import { uuid } from 'uuidv4' +import { IStep } from '../types/interfaces' + +export const defaultStep: IStep = { + id: 0, + guid: uuid(), + displayOrder: 0, + name: { + is: '', + en: '', + }, + type: 'Innsláttur', + waitingText: { + is: '', + en: '', + }, + callRuleset: false, + isHidden: false, + isCompleted: false, +} diff --git a/apps/form-builder/utils/formatDate.tsx b/apps/form-builder/utils/formatDate.tsx new file mode 100644 index 000000000000..7b16496029e6 --- /dev/null +++ b/apps/form-builder/utils/formatDate.tsx @@ -0,0 +1,8 @@ +export const formatDate = (date: Date) => { + const newDate = new Date(date) + const day = newDate.getDate().toString().padStart(2, '0') + const month = (newDate.getMonth() + 1).toString().padStart(2, '0') + const year = newDate.getFullYear() + + return `${day}.${month}.${year}` //${hours}:${minutes}`; +} diff --git a/apps/form-builder/utils/getBaseSettingsStep.tsx b/apps/form-builder/utils/getBaseSettingsStep.tsx new file mode 100644 index 000000000000..004f0f8af86a --- /dev/null +++ b/apps/form-builder/utils/getBaseSettingsStep.tsx @@ -0,0 +1,19 @@ +import { uuid } from 'uuidv4' + +export const baseSettingsStep = { + id: 99999, + guid: uuid(), + displayOrder: -1, + name: { + is: 'Grunnstillingar', + en: 'Base settings', + }, + type: 'BaseSetting', + waitingText: { + is: '', + en: '', + }, + callRuleset: false, + isHidden: false, + isCompleted: false, +} diff --git a/package.json b/package.json index f5e3ccf6d92f..91806ae93fd1 100644 --- a/package.json +++ b/package.json @@ -213,7 +213,7 @@ "mobx": "6.3.7", "msw": "0.21.3", "nest-winston": "1.4.0", - "next": "13.3.0", + "next": "13.4.1", "next-auth": "3.29.10", "next-cookies": "2.0.3", "next-usequerystate": "1.8.4", @@ -419,7 +419,7 @@ "dotenv": "16.3.1", "esbuild": "0.15.7", "eslint": "8.46.0", - "eslint-config-next": "13.1.1", + "eslint-config-next": "13.4.1", "eslint-config-prettier": "8.1.0", "eslint-plugin-cypress": "2.14.0", "eslint-plugin-import": "2.27.5", @@ -441,6 +441,7 @@ "next-secure-headers": "2.1.0", "nx": "16.9.0", "prettier": "2.6.2", + "sass": "1.62.1", "sequelize-cli": "6.4.1", "sort-paths": "1.1.1", "sqlite3": "5.1.6", diff --git a/yarn.lock b/yarn.lock index 2656fcf190ac..f61cb734401f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11712,81 +11712,81 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:13.3.0": - version: 13.3.0 - resolution: "@next/env@npm:13.3.0" - checksum: 17dbea6d019df98f8abebadcaed635d792c69368389c7869ca023acfba240294368a58eda761fb8047403b84e82edf25ea2af45afe06cc1807a25de42e256dd3 +"@next/env@npm:13.4.1": + version: 13.4.1 + resolution: "@next/env@npm:13.4.1" + checksum: 4736c9c6f75d80b16d3ca0ad3ddb3fcaa171f2144fccf516a67110e3bfcd9121d076e838faad46f815e41ee32e9be0ab68591359de06af13be6cbb860eda3639 languageName: node linkType: hard -"@next/eslint-plugin-next@npm:13.1.1": - version: 13.1.1 - resolution: "@next/eslint-plugin-next@npm:13.1.1" +"@next/eslint-plugin-next@npm:13.4.1": + version: 13.4.1 + resolution: "@next/eslint-plugin-next@npm:13.4.1" dependencies: glob: 7.1.7 - checksum: 27e49ef988db3203d494930ad1fcdc270761a61a41e6925c0eadf1e2b1ebd6648722a3aaec7f0c0266eea8771797e06d52f041d33c93d21ba3b361ffe696c36c + checksum: fff59da7aa7838e6cb1f19f33b1c5265f0e4ea5a910a7702f2fadbf76c3387dceb388230cd7f9ce810db73c3b78b2342e77a0dbf77f4560eecf85905adb5f671 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-darwin-arm64@npm:13.3.0" +"@next/swc-darwin-arm64@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-darwin-arm64@npm:13.4.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-darwin-x64@npm:13.3.0" +"@next/swc-darwin-x64@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-darwin-x64@npm:13.4.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-linux-arm64-gnu@npm:13.3.0" +"@next/swc-linux-arm64-gnu@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-linux-arm64-gnu@npm:13.4.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-linux-arm64-musl@npm:13.3.0" +"@next/swc-linux-arm64-musl@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-linux-arm64-musl@npm:13.4.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-linux-x64-gnu@npm:13.3.0" +"@next/swc-linux-x64-gnu@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-linux-x64-gnu@npm:13.4.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-linux-x64-musl@npm:13.3.0" +"@next/swc-linux-x64-musl@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-linux-x64-musl@npm:13.4.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-win32-arm64-msvc@npm:13.3.0" +"@next/swc-win32-arm64-msvc@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-win32-arm64-msvc@npm:13.4.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-win32-ia32-msvc@npm:13.3.0" +"@next/swc-win32-ia32-msvc@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-win32-ia32-msvc@npm:13.4.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:13.3.0": - version: 13.3.0 - resolution: "@next/swc-win32-x64-msvc@npm:13.3.0" +"@next/swc-win32-x64-msvc@npm:13.4.1": + version: 13.4.1 + resolution: "@next/swc-win32-x64-msvc@npm:13.4.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -16448,12 +16448,12 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:0.4.14, @swc/helpers@npm:^0.4.2": - version: 0.4.14 - resolution: "@swc/helpers@npm:0.4.14" +"@swc/helpers@npm:0.5.1": + version: 0.5.1 + resolution: "@swc/helpers@npm:0.5.1" dependencies: tslib: ^2.4.0 - checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 + checksum: 71e0e27234590435e4c62b97ef5e796f88e786841a38c7116a5e27a3eafa7b9ead7cdec5249b32165902076de78446945311c973e59bddf77c1e24f33a8f272a languageName: node linkType: hard @@ -16466,6 +16466,15 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:^0.4.2": + version: 0.4.14 + resolution: "@swc/helpers@npm:0.4.14" + dependencies: + tslib: ^2.4.0 + checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 + languageName: node + linkType: hard + "@swc/types@npm:^0.1.4": version: 0.1.4 resolution: "@swc/types@npm:0.1.4" @@ -27920,11 +27929,11 @@ __metadata: languageName: node linkType: hard -"eslint-config-next@npm:13.1.1": - version: 13.1.1 - resolution: "eslint-config-next@npm:13.1.1" +"eslint-config-next@npm:13.4.1": + version: 13.4.1 + resolution: "eslint-config-next@npm:13.4.1" dependencies: - "@next/eslint-plugin-next": 13.1.1 + "@next/eslint-plugin-next": 13.4.1 "@rushstack/eslint-patch": ^1.1.3 "@typescript-eslint/parser": ^5.42.0 eslint-import-resolver-node: ^0.3.6 @@ -27939,7 +27948,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 098465b42e277433e4f815465b49ab655fc35a62ac016a47f60d7e44248f1b87a70b2dfd2ef090ffbb4cb1a694d409ff0811d2eb64028ce61f535403c7a0f27a + checksum: 232fb7a3dcc2b4674d9b0e3b03e76121d0dd7bea921bfd3320f3ac0a21ca7080f67a6cee0ceeb06c3a7386b854e9449da6a9fdd81f5d441a2e8d4a7237e94f59 languageName: node linkType: hard @@ -33916,7 +33925,7 @@ __metadata: esbuild: 0.15.7 escape-html: 1.0.3 eslint: 8.46.0 - eslint-config-next: 13.1.1 + eslint-config-next: 13.4.1 eslint-config-prettier: 8.1.0 eslint-plugin-cypress: 2.14.0 eslint-plugin-import: 2.27.5 @@ -33985,7 +33994,7 @@ __metadata: mobx: 6.3.7 msw: 0.21.3 nest-winston: 1.4.0 - next: 13.3.0 + next: 13.4.1 next-auth: 3.29.10 next-cookies: 2.0.3 next-secure-headers: 2.1.0 @@ -34044,6 +34053,7 @@ __metadata: rosetta: 1.0.0 rxjs: 7.8.1 sanitize-html: 2.10.0 + sass: 1.62.1 sequelize: 6.19.0 sequelize-cli: 6.4.1 sequelize-replace-enum-postgres: 1.6.0 @@ -40135,25 +40145,26 @@ __metadata: languageName: node linkType: hard -"next@npm:13.3.0": - version: 13.3.0 - resolution: "next@npm:13.3.0" +"next@npm:13.4.1": + version: 13.4.1 + resolution: "next@npm:13.4.1" dependencies: - "@next/env": 13.3.0 - "@next/swc-darwin-arm64": 13.3.0 - "@next/swc-darwin-x64": 13.3.0 - "@next/swc-linux-arm64-gnu": 13.3.0 - "@next/swc-linux-arm64-musl": 13.3.0 - "@next/swc-linux-x64-gnu": 13.3.0 - "@next/swc-linux-x64-musl": 13.3.0 - "@next/swc-win32-arm64-msvc": 13.3.0 - "@next/swc-win32-ia32-msvc": 13.3.0 - "@next/swc-win32-x64-msvc": 13.3.0 - "@swc/helpers": 0.4.14 + "@next/env": 13.4.1 + "@next/swc-darwin-arm64": 13.4.1 + "@next/swc-darwin-x64": 13.4.1 + "@next/swc-linux-arm64-gnu": 13.4.1 + "@next/swc-linux-arm64-musl": 13.4.1 + "@next/swc-linux-x64-gnu": 13.4.1 + "@next/swc-linux-x64-musl": 13.4.1 + "@next/swc-win32-arm64-msvc": 13.4.1 + "@next/swc-win32-ia32-msvc": 13.4.1 + "@next/swc-win32-x64-msvc": 13.4.1 + "@swc/helpers": 0.5.1 busboy: 1.6.0 caniuse-lite: ^1.0.30001406 postcss: 8.4.14 styled-jsx: 5.1.1 + zod: 3.21.4 peerDependencies: "@opentelemetry/api": ^1.1.0 fibers: ">= 3.1.0" @@ -40191,7 +40202,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 24e0e013e867a825ff7d1f49587e696147ea8f9ff42946121fe0dce25f9bcc9b1d5941425fa7cef3b8c0e6f1c3daa7f09f758ac5a8aa15aa66c3b31a07465081 + checksum: 169e3fbbf713fad791a9b016c83d396bce628bb0ddf716c5fe50104a21cbc37af7df1586cbe05ae4ae6a090f4e1107211189cfbeeeab8345fe54e11cfefce87f languageName: node linkType: hard @@ -47178,6 +47189,19 @@ __metadata: languageName: node linkType: hard +"sass@npm:1.62.1": + version: 1.62.1 + resolution: "sass@npm:1.62.1" + dependencies: + chokidar: ">=3.0.0 <4.0.0" + immutable: ^4.0.0 + source-map-js: ">=0.6.2 <2.0.0" + bin: + sass: sass.js + checksum: 1b1b3584b38a63dd94156b65f13b90e3f84b170a38c3d5e3fa578b7a32a37aeb349b4926b0eaf9448d48e955e86b1ee01b13993f19611dad8068af07a607c13b + languageName: node + linkType: hard + "sass@npm:^1.42.1": version: 1.63.2 resolution: "sass@npm:1.63.2" @@ -53900,6 +53924,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:3.21.4": + version: 3.21.4 + resolution: "zod@npm:3.21.4" + checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f + languageName: node + linkType: hard + "zod@npm:3.22.4": version: 3.22.4 resolution: "zod@npm:3.22.4" From 4615d906a688690c1c594803a4cad570ec36f6bc Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 5 Feb 2024 13:59:53 +0000 Subject: [PATCH 002/129] Added functionality for relevant parties --- .../components/Premises/Premises.tsx | 4 +- .../RelevantParties/RelevantParties.tsx | 318 ++++++++++++------ .../components/FormApplicantType.tsx | 143 ++++++++ .../components/SingleParty.tsx | 84 ----- apps/form-builder/hooks/formReducer.tsx | 6 +- apps/form-builder/pages/index.tsx | 1 - apps/form-builder/screens/Form.tsx | 13 +- apps/form-builder/services/apiService.tsx | 31 +- apps/form-builder/types/enums/index.tsx | 9 + apps/form-builder/types/interfaces.tsx | 20 +- 10 files changed, 420 insertions(+), 209 deletions(-) create mode 100644 apps/form-builder/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx delete mode 100644 apps/form-builder/components/MainContent/components/RelevantParties/components/SingleParty.tsx diff --git a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx index 0e0054861873..0380adbf5780 100644 --- a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx +++ b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx @@ -7,6 +7,7 @@ export default function Premises() { const newDocuments = (type: string) => { const { documentTypes } = formBuilder.form + console.log('documentTypes', documentTypes) if (documentTypes?.includes(type)) { if (documentTypes.length === 1) { return [] @@ -34,7 +35,7 @@ export default function Premises() { label={d.name.is} subLabel={d.description.is} value={d.type} - //large + large checked={formBuilder.form.documentTypes?.includes(d.type)} onChange={() => formDispatch({ @@ -49,7 +50,6 @@ export default function Premises() { ) })} - ) : null } diff --git a/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx b/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx index 448cc77366ff..552ebbcb65cd 100644 --- a/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx +++ b/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx @@ -1,15 +1,21 @@ -import React, { useContext, useEffect, useState } from 'react' +import React, { useContext, useState } from 'react' import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' import FormBuilderContext from '../../../../context/FormBuilderContext' -import { IInput } from '../../../../types/interfaces' -import { addInput, deleteItem } from '../../../../services/apiService' -import SingleParty from './components/SingleParty' +import { + IApplicantType, + IFormApplicantType, +} from '../../../../types/interfaces' +import { saveApplicantTypes } from '../../../../services/apiService' +import { EFormApplicantTypes } from '../../../../types/enums' +import { FormApplicantType } from './components/FormApplicantType' const applicantTypeLabel = [ 'Einstaklingur (innskráður)', 'Einstaklingur í umboði annars einstaklings', 'Einstaklingur í umboði lögaðila', 'Einstaklingur með prókúru', + 'Umboðsveitandi (einstaklingur)', + 'Lögaðili', ] const applicantTypes = [ @@ -17,65 +23,154 @@ const applicantTypes = [ 'Einstaklingur_með_umboð_annars_einstaklings', 'Einstaklingur_með_umboð_lögaðila', 'Einstaklingur_með_prókúru', + 'Einstaklingur_umboðsveitandi', + 'Lögaðili', ] export default function RelevantParties() { - const { lists, formBuilder, listsDispatch } = useContext(FormBuilderContext) - const { activeItem } = lists - const [relevantParties, setRelevantParties] = useState([]) - const groupId = lists.groups.find( - (g) => g.stepGuid === activeItem.data.guid, - ).id + const { formBuilder } = useContext(FormBuilderContext) + const applicantTypeTemplates = formBuilder.applicantTypes + const [formApplicantTypes, setFormApplicantTypes] = useState< + IFormApplicantType[] + >(formBuilder.form.formApplicantTypes) + const { id: formId } = formBuilder.form - useEffect(() => { - setRelevantParties(() => { - const groupGuid = lists.groups.find( - (g) => g.stepGuid === activeItem.data.guid, - ).guid - return lists.inputs.filter((i) => i.groupGuid === groupGuid) - }) - }, [lists, activeItem.data.guid]) + const [focus, setOnFocus] = useState('') - useEffect(() => { - console.log(relevantParties) - }, [relevantParties]) + const createFormApplicantType = ( + type: EFormApplicantTypes, + template: IApplicantType, + ): IFormApplicantType => { + return { + formId: formId, + type: type, + applicantTypeId: template.id, + name: template.nameSuggestions[0].nameSuggestion, + } + } - const handleCheckboxChange = async (checked: boolean, index: number) => { - if (checked) { - const newInput = await addInput(relevantParties.length, groupId) - const { label: is, value: en } = getOptions(applicantTypes[index])[0] - listsDispatch({ - type: 'addInputRelevantParty', - payload: { - data: newInput, - type: applicantTypes[index], - name: { - is, - en, - }, - }, - }) - } else { - const toDelete = relevantParties.find( - (i) => i.inputSettings.type === applicantTypes[index], + const handleCheckboxChange = (checked: boolean, index: number) => { + const updateFormApplicantTypes = ( + newFormApplicantTypes: IFormApplicantType[], + ) => { + const hasLegalEntity = formApplicantTypes.some( + (f) => f.type === EFormApplicantTypes.logadili, ) - deleteItem('Input', toDelete.id) - listsDispatch({ - type: 'removeInput', - payload: { - guid: toDelete.guid, - }, - }) + const newTypes = hasLegalEntity + ? newFormApplicantTypes.filter( + (f) => f.type !== EFormApplicantTypes.logadili, + ) + : newFormApplicantTypes + const newList = [...formApplicantTypes, ...newTypes] + saveApplicantTypes(formId, newList) + setFormApplicantTypes([...formApplicantTypes, ...newTypes]) } - } - const getOptions = (type: string) => { - return formBuilder.applicantTypes - .find((at) => at.type === type) - .nameSuggestions.map((n) => ({ - label: n.is, - value: n.en, - })) + const removeFormApplicantTypes = (types: EFormApplicantTypes[]) => { + const newList = formApplicantTypes.filter((f) => !types.includes(f.type)) + saveApplicantTypes(formId, newList) + setFormApplicantTypes(newList) + } + + if (checked) { + if (index === 0) { + const template = applicantTypeTemplates.find( + (at) => at.type === applicantTypes[index], + ) + const newFormApplicantType: IFormApplicantType = + createFormApplicantType(EFormApplicantTypes.einstaklingur, template) + saveApplicantTypes(formId, [newFormApplicantType]) + setFormApplicantTypes([...formApplicantTypes, newFormApplicantType]) + } else if (index === 1) { + const delegatorTemplate = applicantTypeTemplates.find( + (at) => at.id === 2, + ) + const delegateeTemplate = applicantTypeTemplates.find( + (at) => at.id === 5, + ) + const newFormApplicantTypes: IFormApplicantType[] = [ + createFormApplicantType( + EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, + delegatorTemplate, + ), + createFormApplicantType( + EFormApplicantTypes.einstaklingurUmbodsveitandi, + delegateeTemplate, + ), + ] + setFormApplicantTypes([...formApplicantTypes, ...newFormApplicantTypes]) + } else if (index === 2) { + const delegatorTemplate = applicantTypeTemplates.find( + (at) => at.id === 6, + ) + const delegateeTemplate = applicantTypeTemplates.find( + (at) => at.id === 3, + ) + const newFormApplicantTypes: IFormApplicantType[] = [ + createFormApplicantType( + EFormApplicantTypes.einstaklingurMedUmbodLogadila, + delegateeTemplate, + ), + createFormApplicantType( + EFormApplicantTypes.logadili, + delegatorTemplate, + ), + ] + updateFormApplicantTypes(newFormApplicantTypes) + } else if (index === 3) { + const procurationHolder = applicantTypeTemplates.find( + (at) => at.id === 4, + ) + const legalEntity = applicantTypeTemplates.find((at) => at.id === 6) + const newFormApplicantTypes: IFormApplicantType[] = [ + createFormApplicantType( + EFormApplicantTypes.einstaklingurMedProkuru, + procurationHolder, + ), + createFormApplicantType(EFormApplicantTypes.logadili, legalEntity), + ] + updateFormApplicantTypes(newFormApplicantTypes) + } + } else { + if (index === 0) { + removeFormApplicantTypes([EFormApplicantTypes.einstaklingur]) + } else if (index === 1) { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, + EFormApplicantTypes.einstaklingurUmbodsveitandi, + ]) + } else if (index === 2) { + if ( + formApplicantTypes.some( + (f) => f.type === EFormApplicantTypes.einstaklingurMedProkuru, + ) + ) { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedUmbodLogadila, + ]) + } else { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedUmbodLogadila, + EFormApplicantTypes.logadili, + ]) + } + } else if (index === 3) { + if ( + formApplicantTypes.some( + (f) => f.type === EFormApplicantTypes.einstaklingurMedUmbodLogadila, + ) + ) { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedProkuru, + ]) + } else { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedProkuru, + EFormApplicantTypes.logadili, + ]) + } + } + } } return ( @@ -87,69 +182,82 @@ export default function RelevantParties() { - {applicantTypeLabel.map((label, index) => ( + {applicantTypeLabel.slice(0, 4).map((label, index) => ( i.inputSettings.type === applicantTypes[index], + checked={formApplicantTypes.some( + (f) => f.type === applicantTypes[index], )} - onChange={(e) => { - handleCheckboxChange(e.target.checked, index) - }} + onChange={(e) => handleCheckboxChange(e.target.checked, index)} /> ))} - {relevantParties.filter((i) => i.type === 'Aðili').length > 0 && ( // TODO: During lag, an input type with text input gets stored in the array + {formApplicantTypes.length > 0 && ( - * Skilgreindu hlutaðeigandi aðila + Skilgreindu hlutaðeigandi aðila )} - {relevantParties.some( - (i) => i.inputSettings.type === applicantTypes[0], - ) && ( - i.inputSettings.type === applicantTypes[0], - )} - /> - )} - {relevantParties.some( - (i) => i.inputSettings.type === applicantTypes[1], - ) && ( - i.inputSettings.type === applicantTypes[1], - )} - /> - )} - {relevantParties.some( - (i) => i.inputSettings.type === applicantTypes[2], - ) && ( - i.inputSettings.type === applicantTypes[2], - )} + {formApplicantTypes.map((f, i) => ( + at.id === f.applicantTypeId) + .nameSuggestions.map((ns) => ns.nameSuggestion)} + formApplicantType={f} + index={i} + handleSelect={handleSelect} + blur={blur} + setOnFocus={onFocus} + setFormApplicantTypes={setFormApplicantTypes} + isOther={isOther(f)} /> - )} - {relevantParties.some( - (i) => i.inputSettings.type === applicantTypes[3], - ) && ( - i.inputSettings.type === applicantTypes[3], - )} - /> - )} + ))} ) + + function isOther(applicant: IFormApplicantType) { + const template = applicantTypeTemplates.find( + (at) => at.id === applicant.applicantTypeId, + ) + if ( + template.nameSuggestions.some( + (ns) => ns.nameSuggestion.is === applicant.name.is, + ) + ) { + return false + } + return true + } + + function handleSelect(e: { label: string; value: string }, index) { + const newApplicantTypes = formApplicantTypes.map((f, i) => { + if (i === index) { + return { + ...f, + name: { + is: e.label, + en: e.value, + }, + } + } + return f + }) + saveApplicantTypes(formId, newApplicantTypes) + setFormApplicantTypes(newApplicantTypes) + } + + function onFocus(value: string) { + setOnFocus(value) + } + + function blur(value: string) { + if (focus !== value) { + saveApplicantTypes(formId, formApplicantTypes) + } + setOnFocus('') + } } diff --git a/apps/form-builder/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx b/apps/form-builder/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx new file mode 100644 index 000000000000..5141a82009f8 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx @@ -0,0 +1,143 @@ +import React, { useState } from 'react' +import { + Box, + GridColumn as Column, + GridRow as Row, + Input, + Select, + Stack, + Text, +} from '@island.is/island-ui/core' +import { IFormApplicantType, ILanguage } from '../../../../../types/interfaces' + +interface Props { + title: string + nameSuggestions: ILanguage[] + name: ILanguage + formApplicantType: IFormApplicantType + handleSelect( + e: { + label: string + value: string + }, + index: number, + ): void + index: number + blur(value: string): void + setOnFocus(value: string): void + setFormApplicantTypes: React.Dispatch< + React.SetStateAction + > + isOther: boolean +} + +export function FormApplicantType({ + title, + name, + nameSuggestions, + handleSelect, + index, + blur, + setOnFocus, + setFormApplicantTypes, + isOther, +}: Props) { + const [inputEnabled, setInputEnabled] = useState(isOther) + + const other = { label: 'Annað', value: 'Annað' } + + function getOptions() { + const options = nameSuggestions.map((suggestion) => { + return { + label: suggestion.is, + value: suggestion.en, + } + }) + options.push(other) + return options + } + + function handleSelectChange(e: { label: string; value: string }) { + if (e.label === 'Annað') { + setInputEnabled(true) + } else { + setInputEnabled(false) + handleSelect(e, index) + } + } + + function handleInputChange( + e: React.ChangeEvent, + language: 'is' | 'en', + ) { + setFormApplicantTypes((prev: IFormApplicantType[]) => { + const newApplicantTypes = prev.map((f: IFormApplicantType, i: number) => { + if (i === index) { + return { + ...f, + name: { + ...f.name, + [language]: e.target.value, + }, + } + } + return f + }) + return newApplicantTypes + }) + } + + return ( + + + + + + {title} + + + + + + setOnFocus(e.target.value)} + onBlur={(e) => blur(e.target.value)} + onChange={(e) => handleInputChange(e, 'is')} + /> + + + setOnFocus(e.target.value)} + onBlur={(e) => blur(e.target.value)} + onChange={(e) => handleInputChange(e, 'en')} + /> + + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/RelevantParties/components/SingleParty.tsx b/apps/form-builder/components/MainContent/components/RelevantParties/components/SingleParty.tsx deleted file mode 100644 index d817efeae7cb..000000000000 --- a/apps/form-builder/components/MainContent/components/RelevantParties/components/SingleParty.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { - Stack, - Text, - GridRow as Row, - GridColumn as Column, - Select, - Input, - Box, -} from '@island.is/island-ui/core' -import { IInput } from '../../../../../types/interfaces' -import { useState } from 'react' - - -interface Props { - title: string - options: { - label: string - value: string - }[] - input: IInput -} -export default function SingleParty({ title, options, input }: Props) { - // const { formDispatch } = useContext(FormBuilderContext) - // const { applicantTypes } = formBuilder - const [_focus, setFocus] = useState('') - return ( - - - - {title} - - - - setFocus(e.target.value)} - // onChange={(e) => { - // listsDispatch({ - // type: 'changeName', - // payload: { - // guid: input.guid, - // lang: 'is', - // newName: e.target.value - // } - // }) - // }} - /> - - - setFocus(e.target.value)} - /> - - - - - ) -} diff --git a/apps/form-builder/hooks/formReducer.tsx b/apps/form-builder/hooks/formReducer.tsx index b730b57b47b3..d4d71719bb0a 100644 --- a/apps/form-builder/hooks/formReducer.tsx +++ b/apps/form-builder/hooks/formReducer.tsx @@ -132,6 +132,10 @@ export function formReducer(formBuilder: IFormBuilder, action: Action) { } else { dependencies[active] = [itemAsString] } + saveFormSettings(formBuilder.form.id, { + id: formBuilder.form.id, + dependencies: dependencies, + }) return { ...formBuilder, form: { @@ -142,7 +146,6 @@ export function formReducer(formBuilder: IFormBuilder, action: Action) { } case 'formSettings': { - console.log('formReducer formSettings') const { property, value } = action.payload const { id } = formBuilder.form saveFormSettings(id, { @@ -173,6 +176,7 @@ export function formReducer(formBuilder: IFormBuilder, action: Action) { }, } } + default: return formBuilder } diff --git a/apps/form-builder/pages/index.tsx b/apps/form-builder/pages/index.tsx index b46c74eee8d0..5afed5abf66a 100644 --- a/apps/form-builder/pages/index.tsx +++ b/apps/form-builder/pages/index.tsx @@ -14,7 +14,6 @@ export default Index export async function getServerSideProps() { const allForms: IFormBuilder = await getAllFormsFromOrganisation(1) - console.log(allForms) return { props: { formBuilder: allForms, diff --git a/apps/form-builder/screens/Form.tsx b/apps/form-builder/screens/Form.tsx index 769471bb44eb..dc9c567ca7bd 100644 --- a/apps/form-builder/screens/Form.tsx +++ b/apps/form-builder/screens/Form.tsx @@ -41,9 +41,9 @@ export default function Form({ form }: Props) { const [selectStatus, setSelectStatus] = useState( NavbarSelectStatus.OFF, ) - console.log('THE FORM: ', form) const [activeListItem, setActiveListItem] = useState(null) const { infoDispatch } = useContext(LayoutContext) + const initialNavbar: ILists = { activeItem: inSettings ? { type: 'Step', data: baseSettingsStep } @@ -57,14 +57,9 @@ export default function Form({ form }: Props) { groups: form.form.groupsList, inputs: form.form.inputsList, } - + console.log('FORM', form) const [formBuilder, formDispatch] = useReducer(formReducer, form) - const [list, listsDispatch] = useReducer( - listsReducer, - initialNavbar, - undefined, - ) - const lists = list as ILists + const [lists, listsDispatch] = useReducer(listsReducer, initialNavbar) const { activeItem } = lists const isMounted = useRef(false) @@ -177,9 +172,7 @@ export default function Form({ form }: Props) { function blur(e: FocusEvent) { // Check whether value has changed if (e.target.value !== focus) { - //saveItem() setOnFocus(null) - //formUpdate() updateItem(activeItem.type, activeItem.data) } setIsTyping(false) diff --git a/apps/form-builder/services/apiService.tsx b/apps/form-builder/services/apiService.tsx index 0c8e28b73875..f7cfa9b62612 100644 --- a/apps/form-builder/services/apiService.tsx +++ b/apps/form-builder/services/apiService.tsx @@ -1,6 +1,7 @@ import axios from 'axios' import { IForm, + IFormApplicantType, IFormBuilder, IGroup, IInput, @@ -235,11 +236,11 @@ export async function deleteItem(type: ItemType, id: number) { } } -export async function saveFormSettings(formId: number, settings: object) { +export async function saveFormSettings(id: number, settings: object) { console.log(settings) try { const response = await axios.put( - `${BASEURL}/Forms/${formId}/Settings`, + `${BASEURL}/Forms/${id}/Settings`, settings, { headers: { @@ -256,6 +257,32 @@ export async function saveFormSettings(formId: number, settings: object) { } } +export async function saveApplicantTypes( + id: number, + types: IFormApplicantType[], +) { + const requestData = { + id: id, + formApplicantTypes: types, + } + try { + const response = await axios.put( + `${BASEURL}/Forms/${id}/Settings`, + requestData, + { + headers: { + 'Content-Type': 'application/json', + }, + }, + ) + + console.log('saveApplicantTypes response: ', response) + return response + } catch (error) { + console.error('Error in saveApplicantTypes: ', error) + throw error + } +} export async function getList(type: string) { try { const response = await axios.get(`${BASEURL}/Services/${type}`) diff --git a/apps/form-builder/types/enums/index.tsx b/apps/form-builder/types/enums/index.tsx index 70b74cdae3c0..fadfab2e4e4a 100644 --- a/apps/form-builder/types/enums/index.tsx +++ b/apps/form-builder/types/enums/index.tsx @@ -89,3 +89,12 @@ export enum EInputType { Vottorð = 28, Aðili = 29, } + +export enum EFormApplicantTypes { + einstaklingur = 'Einstaklingur', + einstaklingurMedUmbodAnnarsEinstaklings = 'Einstaklingur_með_umboð_annars_einstaklings', + einstaklingurMedUmbodLogadila = 'Einstaklingur_með_umboð_lögaðila', + einstaklingurMedProkuru = 'Einstaklingur_með_prókúru', + einstaklingurUmbodsveitandi = 'Einstaklingur_umboðsveitandi', + logadili = 'Lögaðili', +} diff --git a/apps/form-builder/types/interfaces.tsx b/apps/form-builder/types/interfaces.tsx index 8dd7b6468d73..fbf0fe315579 100644 --- a/apps/form-builder/types/interfaces.tsx +++ b/apps/form-builder/types/interfaces.tsx @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { ChangeEvent, Dispatch, SetStateAction, FocusEvent } from 'react' import { UniqueIdentifier } from '@dnd-kit/core' +import { EFormApplicantTypes } from './enums' export interface IFormBuilderContext { formBuilder: IFormBuilder @@ -73,7 +74,7 @@ export interface IForm { invalidationDate?: Date isTranslated: boolean documentTypes: string[] - adilar: string[] + formApplicantTypes: IFormApplicantType[] } export interface IStep { @@ -161,9 +162,20 @@ export interface ICertificate { } export interface IApplicantType { - type: string - name: string - nameSuggestions: ILanguage[] + id: number + name: ILanguage + type: EFormApplicantTypes + nameSuggestions: { + applicantTypeId: number + nameSuggestion: ILanguage + }[] +} + +export type IFormApplicantType = { + formId: number //formID + applicantTypeId: number + name: ILanguage + type: EFormApplicantTypes } export interface IInputTypes { From f795053244ed7a24531d7ce43183b7e6d5cc3eed Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 5 Feb 2024 14:14:04 +0000 Subject: [PATCH 003/129] redirect to the correct url when creating a new form --- apps/form-builder/pages/Form/index.tsx | 14 +++++++++++++- apps/form-builder/screens/Form.tsx | 11 +++++------ apps/form-builder/services/apiService.tsx | 3 --- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/apps/form-builder/pages/Form/index.tsx b/apps/form-builder/pages/Form/index.tsx index 2ea7400769ce..2362d796dbbf 100644 --- a/apps/form-builder/pages/Form/index.tsx +++ b/apps/form-builder/pages/Form/index.tsx @@ -1,3 +1,5 @@ +import { useRouter } from 'next/router' +import { useEffect } from 'react' import Form from '../../screens/Form' import { getNewForm } from '../../services/apiService' import { IFormBuilder } from '../../types/interfaces' @@ -7,7 +9,17 @@ interface Props { } const Index = ({ form }: Props) => { - return + const router = useRouter() + + useEffect(() => { + router.replace(`/Form/${form.form.id}`) + }, [form.form.id, router]) + + return ( +
+ +
+ ) } export default Index diff --git a/apps/form-builder/screens/Form.tsx b/apps/form-builder/screens/Form.tsx index dc9c567ca7bd..c77e7c81a4d6 100644 --- a/apps/form-builder/screens/Form.tsx +++ b/apps/form-builder/screens/Form.tsx @@ -48,16 +48,15 @@ export default function Form({ form }: Props) { activeItem: inSettings ? { type: 'Step', data: baseSettingsStep } : { - type: 'Step', - data: - form.form.stepsList.find((s) => s.type === 'Innsláttur') || - defaultStep, - }, + type: 'Step', + data: + form.form.stepsList.find((s) => s.type === 'Innsláttur') || + defaultStep, + }, steps: form.form.stepsList, groups: form.form.groupsList, inputs: form.form.inputsList, } - console.log('FORM', form) const [formBuilder, formDispatch] = useReducer(formReducer, form) const [lists, listsDispatch] = useReducer(listsReducer, initialNavbar) const { activeItem } = lists diff --git a/apps/form-builder/services/apiService.tsx b/apps/form-builder/services/apiService.tsx index f7cfa9b62612..db8166a92a41 100644 --- a/apps/form-builder/services/apiService.tsx +++ b/apps/form-builder/services/apiService.tsx @@ -92,9 +92,6 @@ export async function updateItem(type: string, data: IStep | IGroup | IInput) { export async function getNewForm(organisationId: number) { try { const response = await axios.post(`${BASEURL}/Forms/${organisationId}`) - - console.log('api', response.data) - return response.data } catch (error) { console.error('Error in getNewForm: ', error) From fc7f69db363f46e52dc7c59306f763fd814f7147 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 5 Feb 2024 14:39:47 +0000 Subject: [PATCH 004/129] removed secret from comment --- .../services/translationStation.tsx | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/apps/form-builder/services/translationStation.tsx b/apps/form-builder/services/translationStation.tsx index abdca24710e1..19be4bae56f2 100644 --- a/apps/form-builder/services/translationStation.tsx +++ b/apps/form-builder/services/translationStation.tsx @@ -39,24 +39,3 @@ export const translationStation = async ( throw error } } -// export const translationStation = async (input: string): Promise => { -// console.log('translationStation', input) -// return await fetch("https://stafraentisland.greynir.is/translate/", { -// method: 'POST', -// headers: { -// 'content-type': 'application/json', -// 'accept': 'application/json', -// 'X-API-Key': 'jtn1QACg.jCxAuvopgqplC5i38Nav1BubiSik6tDK' -// }, -// body: JSON.stringify({ -// "contents": [input], -// "sourceLanguageCode": "is", -// "targetLanguageCode": "en", -// "model": "", -// "domain": "" -// }) -// }).then(res => { -// console.log(res) -// return res.json() -// }) -// } From f8818bd5e684354feba5c29a9683d16fef6a41e9 Mon Sep 17 00:00:00 2001 From: andes-it Date: Mon, 5 Feb 2024 15:01:40 +0000 Subject: [PATCH 005/129] chore: nx format:write update dirty files --- apps/form-builder/screens/Form.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/form-builder/screens/Form.tsx b/apps/form-builder/screens/Form.tsx index c77e7c81a4d6..5e1a1c9949b1 100644 --- a/apps/form-builder/screens/Form.tsx +++ b/apps/form-builder/screens/Form.tsx @@ -48,11 +48,11 @@ export default function Form({ form }: Props) { activeItem: inSettings ? { type: 'Step', data: baseSettingsStep } : { - type: 'Step', - data: - form.form.stepsList.find((s) => s.type === 'Innsláttur') || - defaultStep, - }, + type: 'Step', + data: + form.form.stepsList.find((s) => s.type === 'Innsláttur') || + defaultStep, + }, steps: form.form.stepsList, groups: form.form.groupsList, inputs: form.form.inputsList, From e1f667b48e1d09270ff3519549874673e560d947 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Tue, 13 Feb 2024 14:05:44 +0000 Subject: [PATCH 006/129] Property number component --- .../components/InputContent/InputContent.tsx | 2 + .../InputContent/components/BaseInput.tsx | 33 +++++----- .../PropertyNumberInputSettings.tsx | 61 +++++++++++++++++++ .../components/ListBuilder/ListBuilder.tsx | 6 +- .../components/Premises/Premises.tsx | 51 +++++++++------- .../components/Preview/Preview.tsx | 4 ++ .../PropertyNumber/PropertyNumber.tsx | 27 ++++++++ .../components/PropertyNumberCombined.tsx | 22 +++++++ .../components/PropertyNumberInput.tsx | 42 +++++++++++++ .../components/PropertyNumberList.tsx | 54 ++++++++++++++++ .../PropertyNumber/components/index.ts | 3 + .../RelevantParties/RelevantParties.tsx | 2 +- .../components/NavbarSelect/NavbarSelect.tsx | 1 - apps/form-builder/gql/client.ts | 42 +++++++++++++ apps/form-builder/gql/httpLink.ts | 14 +++++ apps/form-builder/gql/retryLink.ts | 9 +++ .../hooks/{formReducer.tsx => formReducer.ts} | 33 +++++++--- ...erInfoReducer.tsx => headerInfoReducer.ts} | 0 .../{listsReducer.tsx => listsReducer.ts} | 16 ++--- apps/form-builder/screens/Form.tsx | 12 ++-- apps/form-builder/types/interfaces.tsx | 10 ++- 21 files changed, 374 insertions(+), 70 deletions(-) create mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/PropertyNumberInputSettings.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/PropertyNumber.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberCombined.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberInput.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberList.tsx create mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/index.ts create mode 100644 apps/form-builder/gql/client.ts create mode 100644 apps/form-builder/gql/httpLink.ts create mode 100644 apps/form-builder/gql/retryLink.ts rename apps/form-builder/hooks/{formReducer.tsx => formReducer.ts} (87%) rename apps/form-builder/hooks/{headerInfoReducer.tsx => headerInfoReducer.ts} (100%) rename apps/form-builder/hooks/{listsReducer.tsx => listsReducer.ts} (98%) diff --git a/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx b/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx index 799b0af5a06d..338a031a45d4 100644 --- a/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx +++ b/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx @@ -19,6 +19,7 @@ import TimeInput from './components/TimeInput' import MessageWithLink from './components/MessageWithLink' import FileUpload from './components/FileUpload/FileUpload' import NumberInput from './components/NumberInput' +import PropertyNumberInputSettings from './components/PropertyNumberInputSettings' export default function InputContent() { const { formBuilder, lists, selectStatus, setSelectStatus } = @@ -106,6 +107,7 @@ export default function InputContent() { {/* File upload */} {currentItem.type === 'Skjal' && } {currentItem.type === 'Tölustafir' && } + {currentItem.type === 'Fasteignanúmer' && } { return { @@ -40,22 +40,21 @@ export default function BaseInput() { return ( - {defaultOption !== undefined && ( - - - changeSelectHandler(e)} + /> + + + {/* Name */} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/PropertyNumberInputSettings.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/PropertyNumberInputSettings.tsx new file mode 100644 index 000000000000..83c23d1df331 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/InputContent/components/PropertyNumberInputSettings.tsx @@ -0,0 +1,61 @@ +import { + GridRow as Row, + GridColumn as Column, + Checkbox, + Stack, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import FormBuilderContext from '../../../../../context/FormBuilderContext' +import { IInput } from '../../../../../types/interfaces' + +export default function PropertyNumberInputSettings() { + const { lists, listsDispatch } = useContext(FormBuilderContext) + const { activeItem } = lists + const currentItem = activeItem.data as IInput + const { inputSettings: settings } = currentItem + + return ( + + + + + listsDispatch({ + type: 'setInputSettings', + payload: { + inputSettings: { + ...settings, + erListi: e.target.checked, + }, + }, + }) + } + /> + + + + + + listsDispatch({ + type: 'setInputSettings', + payload: { + inputSettings: { + ...settings, + erInnslattur: e.target.checked, + }, + }, + }) + } + /> + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx b/apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx index 715860605c11..ecbeb9b7cd85 100644 --- a/apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx +++ b/apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx @@ -163,7 +163,7 @@ export default function ListBuilder({ setInListBuilder }: Props) { } function onDragStart(event: DragStartEvent) { - console.log('DRAG START', event.active.data.current.listItem) + // console.log('DRAG START', event.active.data.current.listItem) listsDispatch({ type: 'setActiveListItem', payload: { @@ -176,8 +176,8 @@ export default function ListBuilder({ setInListBuilder }: Props) { const { active, over } = event if (!over) return - console.log('Active: ', active.data.current.listItem.text.is) - console.log('Over: ', over.data.current.listItem.text.is) + // console.log('Active: ', active.data.current.listItem.text.is) + // console.log('Over: ', over.data.current.listItem.text.is) const activeId = active.id const overId = over.id listsDispatch({ diff --git a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx index 0380adbf5780..394907b503cf 100644 --- a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx +++ b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx @@ -1,22 +1,15 @@ -import React, { useContext } from 'react' +import React, { useContext, useState } from 'react' import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' import FormBuilderContext from '../../../../context/FormBuilderContext' +import { ICertificate } from '../../../../types/interfaces' export default function Premises() { const { formBuilder, formDispatch } = useContext(FormBuilderContext) + const { documentTypes } = formBuilder + const [formDocumentTypes, setFormDocumentTypes] = useState( + formBuilder.form.documentTypes, + ) - const newDocuments = (type: string) => { - const { documentTypes } = formBuilder.form - console.log('documentTypes', documentTypes) - if (documentTypes?.includes(type)) { - if (documentTypes.length === 1) { - return [] - } else { - return documentTypes.filter((item) => item !== type) - } - } - return [...documentTypes, type] - } return formBuilder ? ( @@ -33,23 +26,35 @@ export default function Premises() { - formDispatch({ - type: 'formSettings', - payload: { - property: 'documents', - value: newDocuments(d.type), - }, - }) - } + checked={formDocumentTypes.some((f) => f?.id === d.id)} + onChange={() => handleCheckboxChange(d.id)} /> ) })} ) : null + + function handleCheckboxChange(documentTypeId: number) { + const newDocumentTypes = formDocumentTypes.some( + (f) => f.id === documentTypeId, + ) + ? formDocumentTypes.filter((f) => f.id !== documentTypeId) + : [ + ...formDocumentTypes, + documentTypes.find((d) => d.id === documentTypeId), + ] + setFormDocumentTypes(newDocumentTypes) + formDispatch({ + type: 'updateDocuments', + payload: { + documents: newDocumentTypes, + }, + }) + } } diff --git a/apps/form-builder/components/MainContent/components/Preview/Preview.tsx b/apps/form-builder/components/MainContent/components/Preview/Preview.tsx index a6435224da7c..d74332da12ca 100644 --- a/apps/form-builder/components/MainContent/components/Preview/Preview.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/Preview.tsx @@ -19,6 +19,7 @@ import { IInputSettings, IInput } from '../../../../types/interfaces' import Ssn from './components/Ssn' import Radio from './components/Radio' import UtilizationSummary from './components/UtilizationSummary/UtilizationSummary' +import PropertyNumber from './components/PropertyNumber/PropertyNumber' type Props = { data?: IInput @@ -105,6 +106,9 @@ export default function Preview({ data, isLarge, inputSettings }: Props) { )} {data.type === 'Fellilisti' && } {data.type === 'Valhnappar' && } + {data.type === 'Fasteignanúmer' && ( + + )} ) diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/PropertyNumber.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/PropertyNumber.tsx new file mode 100644 index 000000000000..2564264febb6 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/PropertyNumber.tsx @@ -0,0 +1,27 @@ +import { IInput } from '../../../../../../types/interfaces' +import { + PropertyNumberCombined, + PropertyNumberInput, + PropertyNumberList, +} from './components' + +interface Props { + currentItem: IInput +} + +export default function PropertyNumber({ currentItem }: Props) { + const { inputSettings: settings } = currentItem + const { erListi: hasList, erInnslattur: hasInput } = settings + + return ( + <> + {hasList && !hasInput ? ( + + ) : !hasList && hasInput ? ( + + ) : hasList && hasInput ? ( + + ) : null} + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberCombined.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberCombined.tsx new file mode 100644 index 000000000000..55a549a24809 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberCombined.tsx @@ -0,0 +1,22 @@ +import { Tabs } from '@island.is/island-ui/core' +import PropertyNumberList from './PropertyNumberList' +import PropertyNumberInput from './PropertyNumberInput' + +export default function PropertyNumberCombined() { + return ( + , + }, + { + label: 'Fasteignanúmerinnsláttur', + content: , + }, + ]} + contentBackground="blue100" + /> + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberInput.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberInput.tsx new file mode 100644 index 000000000000..9d3eb0c0c2f5 --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberInput.tsx @@ -0,0 +1,42 @@ +import { + GridRow as Row, + GridColumn as Column, + Stack, + Input, + Box, +} from '@island.is/island-ui/core' +import { useState } from 'react' + +export default function PropertyNumberInput() { + const [propertyNumber, setPropertyNumber] = useState('') + return ( + + + + + setPropertyNumber(e.target.value)} + /> + + + + + + + + + + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberList.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberList.tsx new file mode 100644 index 000000000000..6de9e63bf2fa --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberList.tsx @@ -0,0 +1,54 @@ +import { + GridRow as Row, + GridColumn as Column, + Stack, + Select, + Input, + Box, +} from '@island.is/island-ui/core' + +const dummyList = [ + { + label: 'Fasteign 1', + value: '1', + }, + { + label: 'Fasteign 2', + value: '2', + }, + { + label: 'Fasteign 3', + value: '3', + }, +] + +export default function PropertyNumberList() { + return ( + + + + + + + + + + + + + ) +} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/index.ts b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/index.ts new file mode 100644 index 000000000000..a1b1b4d6c4ac --- /dev/null +++ b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/index.ts @@ -0,0 +1,3 @@ +export { default as PropertyNumberList } from './PropertyNumberList' +export { default as PropertyNumberInput } from './PropertyNumberInput' +export { default as PropertyNumberCombined } from './PropertyNumberCombined' diff --git a/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx b/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx index 552ebbcb65cd..837b5cf105ac 100644 --- a/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx +++ b/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx @@ -34,7 +34,7 @@ export default function RelevantParties() { IFormApplicantType[] >(formBuilder.form.formApplicantTypes) const { id: formId } = formBuilder.form - + console.log('applicantTypeTemplates: ', applicantTypeTemplates) const [focus, setOnFocus] = useState('') const createFormApplicantType = ( diff --git a/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx b/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx index 0a0e14b1debb..c9a0500816e0 100644 --- a/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx +++ b/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx @@ -8,7 +8,6 @@ export default function NavbarSelect() { const { lists, selectStatus } = useContext(FormBuilderContext) const { activeItem, steps, groups, inputs } = lists //const [selectable, setSelectable] = useState(false) - console.log(selectStatus) let selectable = false return ( diff --git a/apps/form-builder/gql/client.ts b/apps/form-builder/gql/client.ts new file mode 100644 index 000000000000..991867338fbe --- /dev/null +++ b/apps/form-builder/gql/client.ts @@ -0,0 +1,42 @@ +import { + ApolloClient, + ApolloLink, + InMemoryCache, + NormalizedCacheObject, +} from '@apollo/client' +import httpLink from './httpLink' +import retryLink from './retryLink' + +const isBrowser: boolean = process.browser + +let apolloClient: ApolloClient | null = null + +function create(initialState?: any) { + const link = ApolloLink.from([retryLink, httpLink]) // Add retry, error, auth and httpLink here + + return new ApolloClient({ + name: 'form-builder', + version: '0.1', + connectToDevTools: isBrowser, + ssrMode: !isBrowser, + link, + cache: new InMemoryCache().restore(initialState || {}), + headers: { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Credentials': 'true', + }, + }) +} + +export default function initApollo(initialState?: any) { + if (!isBrowser) { + return create(initialState) + } + + if (!apolloClient) { + apolloClient = create(initialState) + } + + return apolloClient +} diff --git a/apps/form-builder/gql/httpLink.ts b/apps/form-builder/gql/httpLink.ts new file mode 100644 index 000000000000..91670e5233e0 --- /dev/null +++ b/apps/form-builder/gql/httpLink.ts @@ -0,0 +1,14 @@ +import { createHttpLink } from '@apollo/client' +import fetch from 'isomorphic-unfetch' + +// Polyfill fetch() on the server (used by apollo-client) +if (!process.browser) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ;(global as any).fetch = fetch +} + +export default createHttpLink({ + uri: 'https://profun.island.is/umsoknarkerfi/api/graphql', // Should be in next.config.js + credentials: 'include', + fetch, +}) diff --git a/apps/form-builder/gql/retryLink.ts b/apps/form-builder/gql/retryLink.ts new file mode 100644 index 000000000000..e77250676e4a --- /dev/null +++ b/apps/form-builder/gql/retryLink.ts @@ -0,0 +1,9 @@ +import { ServerError } from '@apollo/client' +import { RetryLink } from '@apollo/client/link/retry' + +export default new RetryLink({ + attempts: { + max: 2, + retryIf: (error: ServerError) => error && true, + }, +}) diff --git a/apps/form-builder/hooks/formReducer.tsx b/apps/form-builder/hooks/formReducer.ts similarity index 87% rename from apps/form-builder/hooks/formReducer.tsx rename to apps/form-builder/hooks/formReducer.ts index d4d71719bb0a..92db61dfdf0c 100644 --- a/apps/form-builder/hooks/formReducer.tsx +++ b/apps/form-builder/hooks/formReducer.ts @@ -1,5 +1,10 @@ import { UniqueIdentifier } from '@dnd-kit/core' -import { IFormBuilder, ILanguage, ITenging } from '../types/interfaces' +import { + ICertificate, + IFormBuilder, + ILanguage, + ITenging, +} from '../types/interfaces' import { saveFormSettings } from '../services/apiService' type ChangeNameAction = { @@ -39,10 +44,10 @@ type AddRemoveConnectionAction = { } } -type AddRemoveDocuments = { - type: 'addRemoveDocuments' +type UpdateDocuments = { + type: 'updateDocuments' payload: { - documents: string[] + documents: ICertificate[] } } @@ -51,7 +56,10 @@ type FormSettingsPayload = | { property: 'dependencies'; value: ITenging } | { property: 'stopProgressOnValidatingStep'; value: boolean } | { property: 'applicationsDaysToRemove'; value: number } - | { property: 'documents'; value: string[] } + | { + property: 'formDocumentTypes' + value: { formId: number; documentTypeId: number }[] + } | { property: 'adilar'; value: string[] } | { property: 'completedMessage'; value: ILanguage } | { property: 'isTranslated'; value: boolean } @@ -68,7 +76,7 @@ type Action = | StopProgressOnValidatingStepAction | AddRemoveConnectionAction | FormSettingsAction - | AddRemoveDocuments + | UpdateDocuments export function formReducer(formBuilder: IFormBuilder, action: Action) { switch (action.type) { @@ -161,18 +169,23 @@ export function formReducer(formBuilder: IFormBuilder, action: Action) { } } - case 'addRemoveDocuments': { + case 'updateDocuments': { const { documents } = action.payload - console.log('dasdsa') + const saveDocuments = documents.map((d) => { + return { + formId: formBuilder.form.id, + documentTypeId: d.id, + } + }) saveFormSettings(formBuilder.form.id, { id: formBuilder.form.id, - documents: documents, + formDocumentTypes: saveDocuments, }) return { ...formBuilder, form: { ...formBuilder.form, - documents: documents, + documentTypes: documents, }, } } diff --git a/apps/form-builder/hooks/headerInfoReducer.tsx b/apps/form-builder/hooks/headerInfoReducer.ts similarity index 100% rename from apps/form-builder/hooks/headerInfoReducer.tsx rename to apps/form-builder/hooks/headerInfoReducer.ts diff --git a/apps/form-builder/hooks/listsReducer.tsx b/apps/form-builder/hooks/listsReducer.ts similarity index 98% rename from apps/form-builder/hooks/listsReducer.tsx rename to apps/form-builder/hooks/listsReducer.ts index e8ded74a3bb2..012483d600c0 100644 --- a/apps/form-builder/hooks/listsReducer.tsx +++ b/apps/form-builder/hooks/listsReducer.ts @@ -574,14 +574,14 @@ export const listsReducer = (lists: ILists, action: Action): ILists => { const input = activeItem.data as IInput const { payload } = action - if ( - !payload || - !('property' in payload) || - !('checked' in payload) || - !('value' in payload) - ) { - throw new Error('Invalid payload') - } + // if ( + // !payload || + // !('property' in payload) || + // !('checked' in payload) || + // !('value' in payload) + // ) { + // throw new Error('Invalid payload') + // } const { property, checked, value } = payload diff --git a/apps/form-builder/screens/Form.tsx b/apps/form-builder/screens/Form.tsx index c77e7c81a4d6..735d28e515b1 100644 --- a/apps/form-builder/screens/Form.tsx +++ b/apps/form-builder/screens/Form.tsx @@ -48,11 +48,11 @@ export default function Form({ form }: Props) { activeItem: inSettings ? { type: 'Step', data: baseSettingsStep } : { - type: 'Step', - data: - form.form.stepsList.find((s) => s.type === 'Innsláttur') || - defaultStep, - }, + type: 'Step', + data: + form.form.stepsList.find((s) => s.type === 'Innsláttur') || + defaultStep, + }, steps: form.form.stepsList, groups: form.form.groupsList, inputs: form.form.inputsList, @@ -60,7 +60,7 @@ export default function Form({ form }: Props) { const [formBuilder, formDispatch] = useReducer(formReducer, form) const [lists, listsDispatch] = useReducer(listsReducer, initialNavbar) const { activeItem } = lists - + console.log('FORM: ', form) const isMounted = useRef(false) useEffect(() => { if (isMounted.current) { diff --git a/apps/form-builder/types/interfaces.tsx b/apps/form-builder/types/interfaces.tsx index fbf0fe315579..25173b4c7592 100644 --- a/apps/form-builder/types/interfaces.tsx +++ b/apps/form-builder/types/interfaces.tsx @@ -50,6 +50,8 @@ export interface IInputSettings { listi?: IListItem[] type?: string name?: ILanguage + erListi?: boolean + erInnslattur?: boolean [key: string]: any } @@ -73,7 +75,7 @@ export interface IForm { applicationsDaysToRemove: number invalidationDate?: Date isTranslated: boolean - documentTypes: string[] + documentTypes: ICertificate[] formApplicantTypes: IFormApplicantType[] } @@ -156,6 +158,7 @@ export interface IListItem { } export interface ICertificate { + id: number type: string name: ILanguage description: ILanguage @@ -178,6 +181,11 @@ export type IFormApplicantType = { type: EFormApplicantTypes } +export interface IFormDocumentType { + formId: number + documentTypeId: number +} + export interface IInputTypes { type: string name: string From 74464ffe1158bfd024a4f43077c74ab249bbefe9 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Tue, 13 Feb 2024 16:32:14 +0000 Subject: [PATCH 007/129] Fixed the header --- apps/form-builder/gql/queries.graphql.ts | 14 +++++++++ apps/form-builder/pages/Form/[id]/index.tsx | 2 +- apps/form-builder/pages/_app.tsx | 34 ++++++++++++++++++--- apps/form-builder/screens/Form.tsx | 31 +++++++++---------- apps/form-builder/services/apiService.tsx | 3 +- 5 files changed, 61 insertions(+), 23 deletions(-) create mode 100644 apps/form-builder/gql/queries.graphql.ts diff --git a/apps/form-builder/gql/queries.graphql.ts b/apps/form-builder/gql/queries.graphql.ts new file mode 100644 index 000000000000..c1cffc22d993 --- /dev/null +++ b/apps/form-builder/gql/queries.graphql.ts @@ -0,0 +1,14 @@ +import { gql } from '@apollo/client' + +export const ADD_STEP = gql` + mutation AddStep($input: AddStepInput!) { + addStep(input: $input) { + id + name { + is + en + } + type + } + } +` diff --git a/apps/form-builder/pages/Form/[id]/index.tsx b/apps/form-builder/pages/Form/[id]/index.tsx index 582a15fdc397..6bdfb0dc1621 100644 --- a/apps/form-builder/pages/Form/[id]/index.tsx +++ b/apps/form-builder/pages/Form/[id]/index.tsx @@ -20,7 +20,7 @@ export async function getServerSideProps(context: GetServerSidePropsContext) { notFound: true, } } - const form: IFormBuilder = await getForm(formId as number) + const form: IFormBuilder = await getForm(formId) return { props: { form: form, diff --git a/apps/form-builder/pages/_app.tsx b/apps/form-builder/pages/_app.tsx index 39f4f73e5355..85f8a6bbe74f 100644 --- a/apps/form-builder/pages/_app.tsx +++ b/apps/form-builder/pages/_app.tsx @@ -1,12 +1,16 @@ -import { AppProps } from 'next/app' +import { ApolloProvider } from '@apollo/client' +import { AppContext, AppProps } from 'next/app' +import { getSession, Provider } from 'next-auth/client' import { IntlProvider } from 'react-intl' import Layout from '../components/Layout/Layout' +import initApollo from '../gql/client' -const FormBuilderProviderApp: unknown = ({ - Component, - pageProps, -}: AppProps) => { +const FormBuilderProviderApp: any = ({ Component, pageProps }: AppProps) => { return ( + // + // + // + // ) } +// FormBuilderProviderApp.getInitialProps = async (appContext: AppContext) => { +// const { ctx } = appContext +// const apolloClient = initApollo({}) +// const customContext = { +// ...ctx, +// apolloClient, +// } +// const apolloState = apolloClient.cache.extract() +// const session = await getSession(customContext) + +// return { +// pageProps: { +// session: session, +// apolloState: apolloState +// } +// } +// } + export default FormBuilderProviderApp diff --git a/apps/form-builder/screens/Form.tsx b/apps/form-builder/screens/Form.tsx index 735d28e515b1..64d4a56eebaa 100644 --- a/apps/form-builder/screens/Form.tsx +++ b/apps/form-builder/screens/Form.tsx @@ -25,6 +25,7 @@ import { GridRow as Row, GridColumn as Column, Box, + Button, } from '@island.is/island-ui/core' import Navbar from '../components/Navbar/Navbar' import NavbarSelect from '../components/NavbarSelect/NavbarSelect' @@ -63,22 +64,20 @@ export default function Form({ form }: Props) { console.log('FORM: ', form) const isMounted = useRef(false) useEffect(() => { - if (isMounted.current) { - if (!isTyping) { - //formUpdate() - } - } else { - isMounted.current = true - infoDispatch({ - type: 'changeOrganization', - data: formBuilder?.form?.organization.name.is, - }) - infoDispatch({ - type: 'changeApplicationName', - data: formBuilder.form.name.is, - }) - } - }, [formBuilder, infoDispatch, isTyping]) + isMounted.current = true + infoDispatch({ + type: 'changeOrganization', + payload: { + value: formBuilder?.form?.organization.name.is, + }, + }) + infoDispatch({ + type: 'changeApplicationName', + payload: { + value: formBuilder.form.name.is, + }, + }) + }, [formBuilder, infoDispatch]) const context: IFormBuilderContext = { formBuilder: formBuilder, diff --git a/apps/form-builder/services/apiService.tsx b/apps/form-builder/services/apiService.tsx index db8166a92a41..7b07b4d53ba6 100644 --- a/apps/form-builder/services/apiService.tsx +++ b/apps/form-builder/services/apiService.tsx @@ -12,9 +12,10 @@ import { const BASEURL = 'https://profun.island.is/umsoknarkerfi/api' -export async function getForm(id: number) { +export async function getForm(id: unknown) { try { const response = await axios.get(`${BASEURL}/Forms/${id}`) + console.log('getForm response: ', response.data) return response.data } catch (error) { console.error(error) From d7b708d4b8cc22c4a77e3b04b4089091034d4904 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 19 Feb 2024 16:45:27 +0000 Subject: [PATCH 008/129] Reverted to next 13.3.0 --- package.json | 2 +- yarn.lock | 121 ++++++++++++++++++++++----------------------------- 2 files changed, 53 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index a752071fed34..f7171c955fa2 100644 --- a/package.json +++ b/package.json @@ -213,7 +213,7 @@ "mobx": "6.3.7", "msw": "0.21.3", "nest-winston": "1.4.0", - "next": "13.4.1", + "next": "13.3.0", "next-auth": "3.29.10", "next-cookies": "2.0.3", "next-usequerystate": "1.8.4", diff --git a/yarn.lock b/yarn.lock index 0f1962fc3d0e..e9594ada5e54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11712,10 +11712,10 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:13.4.1": - version: 13.4.1 - resolution: "@next/env@npm:13.4.1" - checksum: 4736c9c6f75d80b16d3ca0ad3ddb3fcaa171f2144fccf516a67110e3bfcd9121d076e838faad46f815e41ee32e9be0ab68591359de06af13be6cbb860eda3639 +"@next/env@npm:13.3.0": + version: 13.3.0 + resolution: "@next/env@npm:13.3.0" + checksum: 17dbea6d019df98f8abebadcaed635d792c69368389c7869ca023acfba240294368a58eda761fb8047403b84e82edf25ea2af45afe06cc1807a25de42e256dd3 languageName: node linkType: hard @@ -11728,65 +11728,65 @@ __metadata: languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-darwin-arm64@npm:13.4.1" +"@next/swc-darwin-arm64@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-darwin-arm64@npm:13.3.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-darwin-x64@npm:13.4.1" +"@next/swc-darwin-x64@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-darwin-x64@npm:13.3.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-linux-arm64-gnu@npm:13.4.1" +"@next/swc-linux-arm64-gnu@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-linux-arm64-gnu@npm:13.3.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-linux-arm64-musl@npm:13.4.1" +"@next/swc-linux-arm64-musl@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-linux-arm64-musl@npm:13.3.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-linux-x64-gnu@npm:13.4.1" +"@next/swc-linux-x64-gnu@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-linux-x64-gnu@npm:13.3.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-linux-x64-musl@npm:13.4.1" +"@next/swc-linux-x64-musl@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-linux-x64-musl@npm:13.3.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-win32-arm64-msvc@npm:13.4.1" +"@next/swc-win32-arm64-msvc@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-win32-arm64-msvc@npm:13.3.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-win32-ia32-msvc@npm:13.4.1" +"@next/swc-win32-ia32-msvc@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-win32-ia32-msvc@npm:13.3.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:13.4.1": - version: 13.4.1 - resolution: "@next/swc-win32-x64-msvc@npm:13.4.1" +"@next/swc-win32-x64-msvc@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-win32-x64-msvc@npm:13.3.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -16448,12 +16448,12 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:0.5.1": - version: 0.5.1 - resolution: "@swc/helpers@npm:0.5.1" +"@swc/helpers@npm:0.4.14, @swc/helpers@npm:^0.4.2": + version: 0.4.14 + resolution: "@swc/helpers@npm:0.4.14" dependencies: tslib: ^2.4.0 - checksum: 71e0e27234590435e4c62b97ef5e796f88e786841a38c7116a5e27a3eafa7b9ead7cdec5249b32165902076de78446945311c973e59bddf77c1e24f33a8f272a + checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 languageName: node linkType: hard @@ -16466,15 +16466,6 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:^0.4.2": - version: 0.4.14 - resolution: "@swc/helpers@npm:0.4.14" - dependencies: - tslib: ^2.4.0 - checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 - languageName: node - linkType: hard - "@swc/types@npm:^0.1.4": version: 0.1.4 resolution: "@swc/types@npm:0.1.4" @@ -33994,7 +33985,7 @@ __metadata: mobx: 6.3.7 msw: 0.21.3 nest-winston: 1.4.0 - next: 13.4.1 + next: 13.3.0 next-auth: 3.29.10 next-cookies: 2.0.3 next-secure-headers: 2.1.0 @@ -40145,26 +40136,25 @@ __metadata: languageName: node linkType: hard -"next@npm:13.4.1": - version: 13.4.1 - resolution: "next@npm:13.4.1" - dependencies: - "@next/env": 13.4.1 - "@next/swc-darwin-arm64": 13.4.1 - "@next/swc-darwin-x64": 13.4.1 - "@next/swc-linux-arm64-gnu": 13.4.1 - "@next/swc-linux-arm64-musl": 13.4.1 - "@next/swc-linux-x64-gnu": 13.4.1 - "@next/swc-linux-x64-musl": 13.4.1 - "@next/swc-win32-arm64-msvc": 13.4.1 - "@next/swc-win32-ia32-msvc": 13.4.1 - "@next/swc-win32-x64-msvc": 13.4.1 - "@swc/helpers": 0.5.1 +"next@npm:13.3.0": + version: 13.3.0 + resolution: "next@npm:13.3.0" + dependencies: + "@next/env": 13.3.0 + "@next/swc-darwin-arm64": 13.3.0 + "@next/swc-darwin-x64": 13.3.0 + "@next/swc-linux-arm64-gnu": 13.3.0 + "@next/swc-linux-arm64-musl": 13.3.0 + "@next/swc-linux-x64-gnu": 13.3.0 + "@next/swc-linux-x64-musl": 13.3.0 + "@next/swc-win32-arm64-msvc": 13.3.0 + "@next/swc-win32-ia32-msvc": 13.3.0 + "@next/swc-win32-x64-msvc": 13.3.0 + "@swc/helpers": 0.4.14 busboy: 1.6.0 caniuse-lite: ^1.0.30001406 postcss: 8.4.14 styled-jsx: 5.1.1 - zod: 3.21.4 peerDependencies: "@opentelemetry/api": ^1.1.0 fibers: ">= 3.1.0" @@ -40202,7 +40192,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 169e3fbbf713fad791a9b016c83d396bce628bb0ddf716c5fe50104a21cbc37af7df1586cbe05ae4ae6a090f4e1107211189cfbeeeab8345fe54e11cfefce87f + checksum: 24e0e013e867a825ff7d1f49587e696147ea8f9ff42946121fe0dce25f9bcc9b1d5941425fa7cef3b8c0e6f1c3daa7f09f758ac5a8aa15aa66c3b31a07465081 languageName: node linkType: hard @@ -53924,13 +53914,6 @@ __metadata: languageName: node linkType: hard -"zod@npm:3.21.4": - version: 3.21.4 - resolution: "zod@npm:3.21.4" - checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f - languageName: node - linkType: hard - "zod@npm:3.22.4": version: 3.22.4 resolution: "zod@npm:3.22.4" From 9666db4c96011e071ca50e17d6cfb0d556281596 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 21 Feb 2024 12:04:43 +0000 Subject: [PATCH 009/129] Deleted the e2e project, updated to project to adhere to strict typescript, removed all console.logs and removed all code that was commented out --- apps/form-builder-e2e/.eslintrc.json | 10 - apps/form-builder-e2e/cypress.config.ts | 6 - apps/form-builder-e2e/project.json | 30 --- apps/form-builder-e2e/src/e2e/app.cy.ts | 13 - .../src/fixtures/example.json | 4 - apps/form-builder-e2e/src/support/app.po.ts | 1 - apps/form-builder-e2e/src/support/commands.ts | 33 --- apps/form-builder-e2e/src/support/e2e.ts | 17 -- apps/form-builder-e2e/tsconfig.json | 10 - .../form-builder/components/Layout/Layout.tsx | 2 - .../LicenseProviderDropdown.tsx | 6 +- .../components/MainContent/MainContent.tsx | 152 ++++++----- .../components/BaseSettings/BaseSettings.tsx | 54 ++-- .../InputContent/components/BaseInput.tsx | 24 +- .../components/FileUpload/FileUpload.tsx | 36 +-- .../components/MessageWithLink.tsx | 6 +- .../InputContent/components/NumberInput.tsx | 8 +- .../InputContent/components/TimeInput.tsx | 6 +- .../components/ListBuilder/ListBuilder.tsx | 10 +- .../ListBuilder/components/ListItem.tsx | 25 +- .../components/ListContent/ListContent.tsx | 7 +- .../components/Premises/Premises.tsx | 13 +- .../components/Preview/Preview.tsx | 15 +- .../Preview/components/Banknumber.tsx | 44 +++- .../Preview/components/Currency.tsx | 12 +- .../Preview/components/FileUpload.tsx | 66 +---- .../components/Preview/components/List.tsx | 3 +- .../components/MessageWithLinkButton.tsx | 7 +- .../components/{Ssn.tsx => NationalId.tsx} | 2 +- .../Preview/components/NumberInput.tsx | 14 +- .../components/Preview/components/Radio.tsx | 8 +- .../Preview/components/TimeSelect.tsx | 2 - .../PreviewStepOrGroup/MultiSet/MultiSet.tsx | 11 +- .../PreviewStepOrGroup/PreviewStepOrGroup.tsx | 23 +- .../RelevantParties/RelevantParties.tsx | 40 ++- .../components/FormApplicantType.tsx | 2 +- .../form-builder/components/Navbar/Navbar.tsx | 73 ++---- .../NavComponent/NavComponent.css.ts | 3 - .../components/NavComponent/NavComponent.tsx | 13 +- .../NavComponent/components/NavButtons.tsx | 36 +-- .../components/NavbarTab/NavbarTab.css.tsx | 3 - .../components/NavbarSelect/NavbarSelect.tsx | 1 - .../components/SelectNavComponent.tsx | 8 +- .../components/selectNavComponent.css.ts | 3 - .../components/TableRow/TableRow.tsx | 23 +- apps/form-builder/components/Tabs/index.tsx | 4 - .../TranslationTag/TranslationTag.tsx | 10 +- apps/form-builder/gql/client.ts | 2 + apps/form-builder/gql/retryLink.ts | 6 +- apps/form-builder/hooks/formReducer.ts | 17 +- apps/form-builder/hooks/headerInfoReducer.ts | 4 +- apps/form-builder/hooks/listsReducer.ts | 245 +++++++++--------- apps/form-builder/pages/_app.tsx | 34 +-- apps/form-builder/screens/Form.tsx | 49 +--- apps/form-builder/screens/Forms.tsx | 18 -- apps/form-builder/services/apiService.tsx | 53 +--- apps/form-builder/tsconfig.json | 20 +- apps/form-builder/types/interfaces.tsx | 28 +- 58 files changed, 510 insertions(+), 865 deletions(-) delete mode 100644 apps/form-builder-e2e/.eslintrc.json delete mode 100644 apps/form-builder-e2e/cypress.config.ts delete mode 100644 apps/form-builder-e2e/project.json delete mode 100644 apps/form-builder-e2e/src/e2e/app.cy.ts delete mode 100644 apps/form-builder-e2e/src/fixtures/example.json delete mode 100644 apps/form-builder-e2e/src/support/app.po.ts delete mode 100644 apps/form-builder-e2e/src/support/commands.ts delete mode 100644 apps/form-builder-e2e/src/support/e2e.ts delete mode 100644 apps/form-builder-e2e/tsconfig.json rename apps/form-builder/components/MainContent/components/Preview/components/{Ssn.tsx => NationalId.tsx} (90%) diff --git a/apps/form-builder-e2e/.eslintrc.json b/apps/form-builder-e2e/.eslintrc.json deleted file mode 100644 index 696cb8b12127..000000000000 --- a/apps/form-builder-e2e/.eslintrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/apps/form-builder-e2e/cypress.config.ts b/apps/form-builder-e2e/cypress.config.ts deleted file mode 100644 index 1ff4098804c6..000000000000 --- a/apps/form-builder-e2e/cypress.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'cypress' -import { nxE2EPreset } from '@nx/cypress/plugins/cypress-preset' - -export default defineConfig({ - e2e: nxE2EPreset(__dirname), -}) diff --git a/apps/form-builder-e2e/project.json b/apps/form-builder-e2e/project.json deleted file mode 100644 index e686b2390f4a..000000000000 --- a/apps/form-builder-e2e/project.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "form-builder-e2e", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "apps/form-builder-e2e/src", - "projectType": "application", - "targets": { - "e2e": { - "executor": "@nx/cypress:cypress", - "options": { - "cypressConfig": "apps/form-builder-e2e/cypress.config.ts", - "devServerTarget": "form-builder:serve:development", - "testingType": "e2e" - }, - "configurations": { - "production": { - "devServerTarget": "form-builder:serve:production" - } - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["apps/form-builder-e2e/**/*.{js,ts}"] - } - } - }, - "tags": [], - "implicitDependencies": ["form-builder"] -} diff --git a/apps/form-builder-e2e/src/e2e/app.cy.ts b/apps/form-builder-e2e/src/e2e/app.cy.ts deleted file mode 100644 index 9b3f1c3ef43b..000000000000 --- a/apps/form-builder-e2e/src/e2e/app.cy.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { getGreeting } from '../support/app.po' - -describe('form-builder', () => { - beforeEach(() => cy.visit('/')) - - it('should display welcome message', () => { - // Custom command example, see `../support/commands.ts` file - cy.login('my-email@something.com', 'myPassword') - - // Function helper example, see `../support/app.po.ts` file - getGreeting().contains('Welcome form-builder') - }) -}) diff --git a/apps/form-builder-e2e/src/fixtures/example.json b/apps/form-builder-e2e/src/fixtures/example.json deleted file mode 100644 index 294cbed6ce9e..000000000000 --- a/apps/form-builder-e2e/src/fixtures/example.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "Using fixtures to represent data", - "email": "hello@cypress.io" -} diff --git a/apps/form-builder-e2e/src/support/app.po.ts b/apps/form-builder-e2e/src/support/app.po.ts deleted file mode 100644 index 00f556e10333..000000000000 --- a/apps/form-builder-e2e/src/support/app.po.ts +++ /dev/null @@ -1 +0,0 @@ -export const getGreeting = () => cy.get('h1') diff --git a/apps/form-builder-e2e/src/support/commands.ts b/apps/form-builder-e2e/src/support/commands.ts deleted file mode 100644 index 270f023ff512..000000000000 --- a/apps/form-builder-e2e/src/support/commands.ts +++ /dev/null @@ -1,33 +0,0 @@ -// *********************************************** -// This example commands.js shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** - -// eslint-disable-next-line @typescript-eslint/no-namespace -declare namespace Cypress { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - interface Chainable { - login(email: string, password: string): void - } -} -// -// -- This is a parent command -- -Cypress.Commands.add('login', (email, password) => { - console.log('Custom command example: Login', email, password) -}) -// -// -- This is a child command -- -// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) diff --git a/apps/form-builder-e2e/src/support/e2e.ts b/apps/form-builder-e2e/src/support/e2e.ts deleted file mode 100644 index 185d654ec609..000000000000 --- a/apps/form-builder-e2e/src/support/e2e.ts +++ /dev/null @@ -1,17 +0,0 @@ -// *********************************************************** -// This example support/index.js is processed and -// loaded automatically before your test files. -// -// This is a great place to put global configuration and -// behavior that modifies Cypress. -// -// You can change the location of this file or turn off -// automatically serving support files with the -// 'supportFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/configuration -// *********************************************************** - -// Import commands.js using ES2015 syntax: -import './commands' diff --git a/apps/form-builder-e2e/tsconfig.json b/apps/form-builder-e2e/tsconfig.json deleted file mode 100644 index cc509a730e12..000000000000 --- a/apps/form-builder-e2e/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "sourceMap": false, - "outDir": "../../dist/out-tsc", - "allowJs": true, - "types": ["cypress", "node"] - }, - "include": ["src/**/*.ts", "src/**/*.js", "cypress.config.ts"] -} diff --git a/apps/form-builder/components/Layout/Layout.tsx b/apps/form-builder/components/Layout/Layout.tsx index d89004441be6..29987465d433 100644 --- a/apps/form-builder/components/Layout/Layout.tsx +++ b/apps/form-builder/components/Layout/Layout.tsx @@ -18,8 +18,6 @@ type LayoutProps = { const Layout: FC = ({ children }: LayoutProps) => { const route = useRouter() - //useContext(LayoutContext) - const initialInfo = { organization: '', applicationName: '', diff --git a/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx b/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx index a58125ee0200..3e133bb81afe 100644 --- a/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx +++ b/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx @@ -20,8 +20,8 @@ export default function LicenseProviderDropdown({ licenseProviders, setSelectProvider, }: LicenseProviderDropdownProps) { - const handleChange = (e: { value: number }) => { - setSelectProvider(e.value) + const handleChange = (e: { label: string; value: number }) => { + setSelectProvider(e.value as number) } return ( @@ -32,7 +32,7 @@ export default function LicenseProviderDropdown({ noOptionsMessage="Veldu stofnun" placeholder="Veldu stofnun" options={mappedProviders(licenseProviders)} - onChange={handleChange} + onChange={(e) => e && handleChange(e)} size={'sm'} /> diff --git a/apps/form-builder/components/MainContent/MainContent.tsx b/apps/form-builder/components/MainContent/MainContent.tsx index 089bf3169cdf..0cd84faa94a0 100644 --- a/apps/form-builder/components/MainContent/MainContent.tsx +++ b/apps/form-builder/components/MainContent/MainContent.tsx @@ -19,7 +19,7 @@ import FormBuilderContext from '../../context/FormBuilderContext' import { translationStation } from '../../services/translationStation' export default function MainContent() { - const { lists, listsDispatch, changeHandler, blur, onFocus } = + const { lists, listsDispatch, blur, onFocus } = useContext(FormBuilderContext) const { activeItem } = lists const [openPreview, setOpenPreview] = useState(false) @@ -41,80 +41,94 @@ export default function MainContent() { (activeItem.data as IStep).type === 'Greiðsla' ? ( // Payment step ) : // Input step or group - openPreview ? ( - - ) : ( - - - - changeHandler(e, 'name')} - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - /> - - - - - changeHandler(e, 'nameEn')} - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - buttons={[ - { - label: 'translate', - name: 'reader', - onClick: async () => { - const translation = await translationStation( - activeItem.data.name.is, - ) + openPreview ? ( + + ) : ( + + + + listsDispatch({ + type: 'changeName', + payload: { + lang: 'is', + newValue: e.target.value, + } + })} + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + /> + + + + + listsDispatch({ + type: 'changeName', + payload: { + lang: 'en', + newValue: e.target.value, + } + })} + onFocus={(e) => onFocus(e.target.value)} + onBlur={(e) => blur(e)} + buttons={[ + { + label: 'translate', + name: 'reader', + onClick: async () => { + const translation = await translationStation( + activeItem.data.name.is, + ) + listsDispatch({ + type: 'changeName', + payload: { + lang: 'en', + newValue: translation.translations[0].translatedText, + }, + }) + }, + }, + ]} + /> + + + {activeItem.type === 'Group' && ( + + + listsDispatch({ - type: 'changeName', - lang: 'en', - newValue: translation.translations[0].translatedText, + type: 'setMultiSet', + payload: { + checked: e.target.checked, + }, }) - }, - }, - ]} - /> - - - {activeItem.type === 'Group' && ( + } + /> + + + )} - - listsDispatch({ - type: 'setMultiSet', - payload: { - checked: e.target.checked, - }, - }) - } - /> + - )} - - - - - - - )} + + )} ) } diff --git a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx index 3343605da60f..b7c150a5727c 100644 --- a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -12,10 +12,10 @@ import LayoutContext from '../../../../context/LayoutContext' import { saveFormSettings } from '../../../../services/apiService' export default function BaseSettings() { - const { formBuilder, formDispatch, setIsTyping } = + const { formBuilder, formDispatch } = useContext(FormBuilderContext) const { infoDispatch } = useContext(LayoutContext) - const [focus, setFocus] = useState(null) + const [focus, setFocus] = useState('') const { id, name, @@ -36,7 +36,6 @@ export default function BaseSettings() { onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => blur(e)} onChange={(e) => { - setIsTyping(true) formDispatch({ type: 'changeName', payload: { @@ -46,7 +45,9 @@ export default function BaseSettings() { }) infoDispatch({ type: 'changeApplicationName', - data: e.target.value, + payload: { + value: e.target.value + } }) }} /> @@ -61,7 +62,6 @@ export default function BaseSettings() { onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => blur(e)} onChange={(e) => { - setIsTyping(true) formDispatch({ type: 'changeName', payload: { @@ -89,10 +89,9 @@ export default function BaseSettings() { onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => blur(e)} onChange={(e) => { - setIsTyping(true) formDispatch({ type: 'applicationsDaysToRemove', - payload: { value: e.target.value }, + payload: { value: e.target.value as unknown as number }, }) }} /> @@ -100,32 +99,18 @@ export default function BaseSettings() { - {formBuilder.form.invalidationDate ? ( - { - formDispatch({ - type: 'invalidationDate', - payload: { value: e.toJSON() }, - }) - }} - /> - ) : ( - { - formDispatch({ - type: 'invalidationDate', - payload: { value: e.toJSON() }, - }) - }} - /> - )} + { + formDispatch({ + type: 'invalidationDate', + payload: { value: e }, + }) + }} + /> @@ -147,7 +132,7 @@ export default function BaseSettings() { function blur(e: FocusEvent) { if (focus !== e.target.value) { - setFocus(null) + setFocus('') const toSave = { id: id, name: name, @@ -157,6 +142,5 @@ export default function BaseSettings() { } saveFormSettings(id, toSave) } - setIsTyping(false) } } diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx index 47cc5fc16dfb..3c709c5974f4 100644 --- a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx +++ b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx @@ -16,15 +16,13 @@ export default function BaseInput() { formBuilder, lists, listsDispatch, - changeHandler, changeSelectHandler, onFocus, blur, } = useContext(FormBuilderContext) const { activeItem } = lists const currentItem = activeItem.data as IInput - console.log('formBuilder.inputTypes', formBuilder.inputTypes) - const options = formBuilder.inputTypes + const createAndSortOptions = formBuilder.inputTypes .map((it) => { return { label: it.type, @@ -36,7 +34,7 @@ export default function BaseInput() { const defaultOption = currentItem.type === '' ? null - : options.find((o) => o.value === currentItem.type) + : createAndSortOptions.find((o) => o.value === currentItem.type) return ( @@ -45,7 +43,7 @@ export default function BaseInput() { { + onChange={(e) => { listsDispatch({ type: 'timeInterval', - data: e.value, + payload: { data: e ? e.value : '0' } }) }} /> diff --git a/apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx b/apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx index ecbeb9b7cd85..8685573174a4 100644 --- a/apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx +++ b/apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx @@ -44,7 +44,10 @@ export default function ListBuilder({ setInListBuilder }: Props) { } = useContext(FormBuilderContext) const { activeItem } = lists const currentItem = activeItem.data as IInput - const listItems = currentItem.inputSettings.listi + const listItems = useMemo( + () => currentItem.inputSettings.listi ?? [], + [currentItem.inputSettings.listi], + ) const listItemIds = useMemo(() => listItems.map((li) => li.guid), [listItems]) const [connecting, setConnecting] = useState([false]) @@ -163,11 +166,10 @@ export default function ListBuilder({ setInListBuilder }: Props) { } function onDragStart(event: DragStartEvent) { - // console.log('DRAG START', event.active.data.current.listItem) listsDispatch({ type: 'setActiveListItem', payload: { - listItem: event.active.data.current.listItem, + listItem: event.active.data.current?.listItem, }, }) } @@ -176,8 +178,6 @@ export default function ListBuilder({ setInListBuilder }: Props) { const { active, over } = event if (!over) return - // console.log('Active: ', active.data.current.listItem.text.is) - // console.log('Over: ', over.data.current.listItem.text.is) const activeId = active.id const overId = over.id listsDispatch({ diff --git a/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx b/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx index 755bedbcca4b..0b7344fc3ed8 100644 --- a/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx +++ b/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx @@ -61,13 +61,13 @@ export default function ListItem({ label="Tengja" checked={connect} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => {}} + onChange={() => { }} /> {}} + onChange={() => { }} /> @@ -75,7 +75,7 @@ export default function ListItem({ marginRight={2} style={{ cursor: 'pointer' }} // eslint-disable-next-line @typescript-eslint/no-empty-function - onClick={() => {}} + onClick={() => { }} > @@ -93,7 +93,7 @@ export default function ListItem({ size="sm" value={listItem.label.is} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => {}} + onChange={() => { }} /> @@ -104,7 +104,7 @@ export default function ListItem({ size="sm" value={listItem.label.en} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => {}} + onChange={() => { }} /> @@ -181,11 +181,7 @@ export default function ListItem({ > - + @@ -250,7 +246,7 @@ export default function ListItem({ payload: { property: 'label', lang: 'en', - value: translation, + value: translation.translations[0].translatedText, listItemGuid: listItem.guid, }, }) @@ -322,7 +318,7 @@ export default function ListItem({ payload: { property: 'description', lang: 'en', - value: translation, + value: translation.translations[0].translatedText, listItemGuid: listItem.guid, }, }) @@ -333,11 +329,6 @@ export default function ListItem({ )} - {/* - - - - */} ) } diff --git a/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx b/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx index a09cb2e15515..6f2b386c1e3e 100644 --- a/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx +++ b/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx @@ -6,11 +6,13 @@ import { Box, Button, RadioButton, + Option, } from '@island.is/island-ui/core' import { Dispatch, SetStateAction, useContext, useState } from 'react' import FormBuilderContext from '../../../../context/FormBuilderContext' import { getList } from '../../../../services/apiService' import { IInput } from '../../../../types/interfaces' +import { SingleValue } from 'react-select' type Props = { setInListBuilder: Dispatch> @@ -68,9 +70,8 @@ export default function ListContent({ setInListBuilder }: Props) { label="Tilbúnir fellilistar" options={predeterminedLists} backgroundColor="blue" - onChange={async (e: { label: string; value: string }) => { - const newList = await getList(e.value) - console.log(newList) + onChange={async (e: SingleValue>) => { + const newList = e && (await getList(e.value)) listsDispatch({ type: 'setInputSettings', payload: { diff --git a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx index 394907b503cf..f952f72dfb8c 100644 --- a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx +++ b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx @@ -42,18 +42,19 @@ export default function Premises() { function handleCheckboxChange(documentTypeId: number) { const newDocumentTypes = formDocumentTypes.some( - (f) => f.id === documentTypeId, + (f) => f?.id === documentTypeId, ) - ? formDocumentTypes.filter((f) => f.id !== documentTypeId) + ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) : [ - ...formDocumentTypes, - documentTypes.find((d) => d.id === documentTypeId), - ] + ...formDocumentTypes, + documentTypes.find((d) => d?.id === documentTypeId), + ].filter((d) => d !== undefined) as ICertificate[] + setFormDocumentTypes(newDocumentTypes) formDispatch({ type: 'updateDocuments', payload: { - documents: newDocumentTypes, + documents: newDocumentTypes.filter((d) => d !== undefined) as ICertificate[], }, }) } diff --git a/apps/form-builder/components/MainContent/components/Preview/Preview.tsx b/apps/form-builder/components/MainContent/components/Preview/Preview.tsx index d74332da12ca..a9f64d08dc5a 100644 --- a/apps/form-builder/components/MainContent/components/Preview/Preview.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/Preview.tsx @@ -16,23 +16,23 @@ import PhoneInput from './components/PhoneInput' import NumberInput from './components/NumberInput' import List from './components/List' import { IInputSettings, IInput } from '../../../../types/interfaces' -import Ssn from './components/Ssn' +import NationalId from './components/NationalId' import Radio from './components/Radio' import UtilizationSummary from './components/UtilizationSummary/UtilizationSummary' import PropertyNumber from './components/PropertyNumber/PropertyNumber' type Props = { - data?: IInput + data: IInput isLarge?: boolean inputSettings?: IInputSettings } -export default function Preview({ data, isLarge, inputSettings }: Props) { - const title = (title) => {title} +export default function Preview({ data, isLarge }: Props) { + const { inputSettings } = data + const title = (title: string) => {title} return ( <> )} {/* Kennitala */} - {data.type === 'Kennitala' && } + {data.type === 'Kennitala' && } {/* Hakbox */} {data.type === 'Hakbox' && } {/* Textalinubox */} { data.type === 'Textalínubox' && ( - // ) - // } {data.type === 'Klukkuinnsláttur' && ( @@ -82,7 +80,6 @@ export default function Preview({ data, isLarge, inputSettings }: Props) { )} {data.type === 'Krónutölubox' && ( - {/* {title(data.name.is)} */} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx index cfaf1b6c280a..c66027643cec 100644 --- a/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx @@ -6,38 +6,44 @@ import { import { useRef, useState } from 'react' export default function Banknumber() { - const [banki, setBanki] = useState() - const [hb, setHb] = useState() - const [reikningur, setReikningur] = useState() + const [banki, setBanki] = useState() + const [hb, setHb] = useState() + const [reikningur, setReikningur] = useState() const inputRefs = [ useRef(), useRef(), useRef(), ] - const handleChange = (index: number, value) => { + const handleChange = (index: number, value: string) => { if (index === 0) { setBanki(value) if (value.length === 4) { - inputRefs[1]?.current.focus() + if (inputRefs[1]?.current) { + inputRefs[1]?.current.focus() + } } } else if (index === 1) { setHb(value) if (value.length === 2) { - inputRefs[2]?.current.focus() + if (inputRefs[2]?.current) { + inputRefs[2]?.current.focus() + } } } else if (index === 2) { if (value.length <= 6) { setReikningur(value) } if (value.length === 6) { - inputRefs[2]?.current.blur() + if (inputRefs[2]?.current) { + inputRefs[2]?.current.blur() + } } } } - const addLeadingZeros = (originalNumber, total) => { - const zerosToAdd = total - originalNumber.length + const addLeadingZeros = (originalNumber: string, max: number) => { + const zerosToAdd = max - originalNumber.length if (zerosToAdd <= 0) { return originalNumber } @@ -52,19 +58,27 @@ export default function Banknumber() { + } label="Banki" type="number" value={banki} maxLength={4} name="" - onChange={(e) => handleChange(0, e.target.value)} + onChange={(e) => console.log(typeof e.target.value)} //handleChange(0, e.target.value)} onBlur={(e) => setBanki(addLeadingZeros(e.target.value, 4))} /> + } label="Hb" maxLength={2} type="number" @@ -76,7 +90,11 @@ export default function Banknumber() { + } label="Reikningsnúmer" type="number" value={reikningur} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx index 02d283c0c5b0..e1b9743587f3 100644 --- a/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx @@ -3,11 +3,17 @@ import { GridColumn as Column, Input, } from '@island.is/island-ui/core' -import { useState } from 'react' +import { ChangeEvent, useState } from 'react' -export default function Currency({ label }) { +interface Props { + label: string +} + +export default function Currency({ label }: Props) { const [currency, setCurrency] = useState('') - const handleCurrencyChange = (e) => { + const handleCurrencyChange = ( + e: ChangeEvent, + ) => { // Remove any non-digit characters from the input value const inputValue = e.target.value.replace(/\D/g, '') diff --git a/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx b/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx index 0e34577b0ca2..fa972769d3b8 100644 --- a/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx @@ -8,12 +8,6 @@ import { uuid } from 'uuidv4' import * as fileTypes from '../../../../../lib/fileTypes.json' import { IInput } from '../../../../../types/interfaces' -// enum ActionTypes { -// add = 'add', -// remove = 'remove', -// update = 'update', -// } - type Props = { currentItem: IInput } @@ -22,54 +16,6 @@ export default function FileUpload({ currentItem }: Props) { const [error, setError] = useState(undefined) const [fileList, setFileList] = useState>([]) - // const uploadFile = async (file: UploadFile, response) => { - // return new Promise((resolve, reject) => { - // const request = new XMLHttpRequest() - // // request.withCredentials = true - // // request.responseType = 'json' - - // request.upload.addEventListener('progress', (event) => { - // if (event.lengthComputable) { - // file.percent = (event.loaded / event.total) * 100 - // file.status = 'uploading' - - // const withoutThisFile = fileList.filter((f) => f.key !== file.key) - // const newFileList = [...withoutThisFile, file] - // setFileList(newFileList) - // } - // }) - - // request.upload.addEventListener('error', () => { - // file.percent = 0 - // file.status = 'error' - - // const withoutThisFile = fileList.filter((f) => f.key !== file.key) - // const newFileList = [...withoutThisFile, file] - // setFileList(newFileList) - // reject() - // }) - // request.open('POST', response.url) - - // const formData = new FormData() - - // Object.keys(response.fields).forEach((key) => - // formData.append(key, response.fields[key]), - // ) - // formData.append('file', file.originalFileObj as File) - - // request.setRequestHeader('x-amz-acl', 'bucket-owner-full-control') - - // request.onload = () => { - // resolve(request.response) - // } - - // request.onerror = () => { - // reject() - // } - // request.send(formData) - // }) - // } - const onChange = (files: File[]) => { const uploadFiles = files.map((file) => fileToObject(file)) const uploadFilesWithKey = uploadFiles.map((f) => ({ @@ -78,10 +24,8 @@ export default function FileUpload({ currentItem }: Props) { })) // Check whether upload will exceed limit and if so, prevent it - if ( - fileList.length + uploadFilesWithKey.length > - currentItem.inputSettings.fjoldi - ) { + const currentAmount = currentItem.inputSettings.fjoldi ?? 0 + if (fileList.length + uploadFilesWithKey.length > currentAmount) { setError(`Hámarksfjöldi skjala er ${currentItem.inputSettings.fjoldi}`) return } @@ -108,7 +52,11 @@ export default function FileUpload({ currentItem }: Props) { onChange={onChange} onRemove={onRemove} errorMessage={fileList.length > 0 ? error : undefined} - accept={currentItem.inputSettings.tegundir.map((t) => fileTypes[t])} + accept={ + currentItem.inputSettings.tegundir?.map( + (t) => fileTypes[t as keyof typeof fileTypes], + ) ?? [] + } showFileSize maxSize={currentItem.inputSettings.hamarksstaerd} multiple={currentItem.inputSettings.erFjolval} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/List.tsx b/apps/form-builder/components/MainContent/components/Preview/components/List.tsx index abc77985f0ec..a5cdf3497d6a 100644 --- a/apps/form-builder/components/MainContent/components/Preview/components/List.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/components/List.tsx @@ -14,8 +14,9 @@ type ListItem = { export default function List({ currentItem }: Props) { const [listItems, setListItems] = useState([]) useEffect(() => { + const currentList = currentItem.inputSettings.listi ?? [] setListItems( - currentItem.inputSettings.listi.map((l) => ({ + currentList.map((l) => ({ label: l.label.is, value: l.label.is, })), diff --git a/apps/form-builder/components/MainContent/components/Preview/components/MessageWithLinkButton.tsx b/apps/form-builder/components/MainContent/components/Preview/components/MessageWithLinkButton.tsx index 53321d6a2b04..b9a01b9b8b5d 100644 --- a/apps/form-builder/components/MainContent/components/Preview/components/MessageWithLinkButton.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/components/MessageWithLinkButton.tsx @@ -1,6 +1,4 @@ import { Box, Button, Text } from '@island.is/island-ui/core' -import { useContext } from 'react' -import FormBuilderContext from '../../../../../context/FormBuilderContext' import { ILanguage, IInput } from '../../../../../types/interfaces' interface Props { @@ -13,9 +11,6 @@ interface Props { } export function MessageWithLinkButton({ settings, data }: Props) { - const { lists } = useContext(FormBuilderContext) - const { activeItem } = lists - console.log(activeItem) return ( + + listsDispatch({ + type: 'setMultiSet', + payload: { + checked: e.target.checked, + }, + }) + } + /> - - )} + )} + + + + + + + )} ) } diff --git a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx index b7c150a5727c..151dd6e493d8 100644 --- a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -12,8 +12,7 @@ import LayoutContext from '../../../../context/LayoutContext' import { saveFormSettings } from '../../../../services/apiService' export default function BaseSettings() { - const { formBuilder, formDispatch } = - useContext(FormBuilderContext) + const { formBuilder, formDispatch } = useContext(FormBuilderContext) const { infoDispatch } = useContext(LayoutContext) const [focus, setFocus] = useState('') const { @@ -46,8 +45,8 @@ export default function BaseSettings() { infoDispatch({ type: 'changeApplicationName', payload: { - value: e.target.value - } + value: e.target.value, + }, }) }} /> @@ -103,7 +102,11 @@ export default function BaseSettings() { label="Umsóknarfrestur" placeholderText="Veldu dagsetningu" backgroundColor="blue" - selected={formBuilder.form.invalidationDate ? new Date(formBuilder.form.invalidationDate) : null} + selected={ + formBuilder.form.invalidationDate + ? new Date(formBuilder.form.invalidationDate) + : null + } handleChange={(e) => { formDispatch({ type: 'invalidationDate', diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx index 3c709c5974f4..a48b70df5d47 100644 --- a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx +++ b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx @@ -61,13 +61,15 @@ export default function BaseInput() { name="name" value={currentItem.name.is} backgroundColor="blue" - onChange={(e) => listsDispatch({ - type: 'changeName', - payload: { - lang: 'is', - newValue: e.target.value, - } - })} + onChange={(e) => + listsDispatch({ + type: 'changeName', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } onFocus={(e) => onFocus(e.target.value)} onBlur={(e) => blur(e)} /> @@ -81,13 +83,15 @@ export default function BaseInput() { name="nameEn" value={currentItem.name.en} backgroundColor="blue" - onChange={(e) => listsDispatch({ - type: 'changeName', - payload: { - lang: 'en', - newValue: e.target.value, - } - })} + onChange={(e) => + listsDispatch({ + type: 'changeName', + payload: { + lang: 'en', + newValue: e.target.value, + }, + }) + } onFocus={(e) => onFocus(e.target.value)} onBlur={(e) => blur(e)} buttons={[ diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx index c95d43eafa2f..fab2b2c45a30 100644 --- a/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx +++ b/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx @@ -11,8 +11,7 @@ import { IInput } from '../../../../../types/interfaces' import { translationStation } from '../../../../../services/translationStation' export default function MessageWithLink() { - const { lists, listsDispatch, onFocus, blur } = - useContext(FormBuilderContext) + const { lists, listsDispatch, onFocus, blur } = useContext(FormBuilderContext) const { activeItem } = lists const currentItem = activeItem.data as IInput const { inputSettings } = currentItem diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx index ec5a0b75fb7c..b047f8c71ed6 100644 --- a/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx +++ b/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx @@ -26,7 +26,7 @@ export default function TimeInput() { onChange={(e) => { listsDispatch({ type: 'timeInterval', - payload: { data: e ? e.value : '0' } + payload: { data: e ? e.value : '0' }, }) }} /> diff --git a/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx b/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx index 0b7344fc3ed8..24cfa252d8b6 100644 --- a/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx +++ b/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx @@ -61,13 +61,13 @@ export default function ListItem({ label="Tengja" checked={connect} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> { }} + onChange={() => {}} /> @@ -75,7 +75,7 @@ export default function ListItem({ marginRight={2} style={{ cursor: 'pointer' }} // eslint-disable-next-line @typescript-eslint/no-empty-function - onClick={() => { }} + onClick={() => {}} > @@ -93,7 +93,7 @@ export default function ListItem({ size="sm" value={listItem.label.is} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> @@ -104,7 +104,7 @@ export default function ListItem({ size="sm" value={listItem.label.en} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> diff --git a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx index f952f72dfb8c..0e240bbf27b1 100644 --- a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx +++ b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx @@ -45,16 +45,18 @@ export default function Premises() { (f) => f?.id === documentTypeId, ) ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) - : [ - ...formDocumentTypes, - documentTypes.find((d) => d?.id === documentTypeId), - ].filter((d) => d !== undefined) as ICertificate[] + : ([ + ...formDocumentTypes, + documentTypes.find((d) => d?.id === documentTypeId), + ].filter((d) => d !== undefined) as ICertificate[]) setFormDocumentTypes(newDocumentTypes) formDispatch({ type: 'updateDocuments', payload: { - documents: newDocumentTypes.filter((d) => d !== undefined) as ICertificate[], + documents: newDocumentTypes.filter( + (d) => d !== undefined, + ) as ICertificate[], }, }) } diff --git a/apps/form-builder/components/MainContent/components/Preview/Preview.tsx b/apps/form-builder/components/MainContent/components/Preview/Preview.tsx index a9f64d08dc5a..32acdabe0085 100644 --- a/apps/form-builder/components/MainContent/components/Preview/Preview.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/Preview.tsx @@ -63,16 +63,14 @@ export default function Preview({ data, isLarge }: Props) { {/* Hakbox */} {data.type === 'Hakbox' && } {/* Textalinubox */} - { - data.type === 'Textalínubox' && ( - - ) - } + {data.type === 'Textalínubox' && ( + + )} {data.type === 'Klukkuinnsláttur' && ( diff --git a/apps/form-builder/components/Navbar/Navbar.tsx b/apps/form-builder/components/Navbar/Navbar.tsx index 1894b555ef30..cf7497bf04f3 100644 --- a/apps/form-builder/components/Navbar/Navbar.tsx +++ b/apps/form-builder/components/Navbar/Navbar.tsx @@ -75,8 +75,8 @@ export default function Navbar() { variant="ghost" size="small" onClick={() => { - setInSettings(false); - const step = lists.steps.find((s) => s.type === 'Innsláttur'); + setInSettings(false) + const step = lists.steps.find((s) => s.type === 'Innsláttur') if (step) { listsDispatch({ type: 'setActiveItem', @@ -84,7 +84,7 @@ export default function Navbar() { type: 'Step', data: step, }, - }); + }) } }} > @@ -209,7 +209,7 @@ export default function Navbar() { } } - type ActionType = 'removeStep' | 'removeGroup' | 'removeInput'; + type ActionType = 'removeStep' | 'removeGroup' | 'removeInput' function removeItem(type: ItemType, guid: UniqueIdentifier, id: number) { const actionTypes: Record = { @@ -221,7 +221,7 @@ export default function Navbar() { listsDispatch({ type: actionTypes[type], payload: { - guid: guid + guid: guid, }, }) deleteItem(type, id) @@ -268,7 +268,12 @@ export default function Navbar() { formUpdate() } - type DndAction = 'stepOverStep' | 'groupOverStep' | 'groupOverGroup' | 'inputOverGroup' | 'inputOverInput'; + type DndAction = + | 'stepOverStep' + | 'groupOverStep' + | 'groupOverGroup' + | 'inputOverGroup' + | 'inputOverInput' function onDragOver(event: DragOverEvent) { const { active, over } = event diff --git a/apps/form-builder/components/TableRow/TableRow.tsx b/apps/form-builder/components/TableRow/TableRow.tsx index 31f3102f1dd0..ae90e8ab818a 100644 --- a/apps/form-builder/components/TableRow/TableRow.tsx +++ b/apps/form-builder/components/TableRow/TableRow.tsx @@ -72,9 +72,7 @@ const TableRow = ({ /> - + @@ -90,7 +88,6 @@ const TableRow = ({ menuLabel={`Aðgerðir ${name}`} disclosure={ + + listsDispatch({ + type: 'setMultiSet', + payload: { + checked: e.target.checked, + }, + }) + } + /> - - )} + )} + + + + + + + )} ) } diff --git a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx index b7c150a5727c..151dd6e493d8 100644 --- a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -12,8 +12,7 @@ import LayoutContext from '../../../../context/LayoutContext' import { saveFormSettings } from '../../../../services/apiService' export default function BaseSettings() { - const { formBuilder, formDispatch } = - useContext(FormBuilderContext) + const { formBuilder, formDispatch } = useContext(FormBuilderContext) const { infoDispatch } = useContext(LayoutContext) const [focus, setFocus] = useState('') const { @@ -46,8 +45,8 @@ export default function BaseSettings() { infoDispatch({ type: 'changeApplicationName', payload: { - value: e.target.value - } + value: e.target.value, + }, }) }} /> @@ -103,7 +102,11 @@ export default function BaseSettings() { label="Umsóknarfrestur" placeholderText="Veldu dagsetningu" backgroundColor="blue" - selected={formBuilder.form.invalidationDate ? new Date(formBuilder.form.invalidationDate) : null} + selected={ + formBuilder.form.invalidationDate + ? new Date(formBuilder.form.invalidationDate) + : null + } handleChange={(e) => { formDispatch({ type: 'invalidationDate', diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx index 3c709c5974f4..2fec7e5b5292 100644 --- a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx +++ b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx @@ -5,21 +5,21 @@ import { Stack, Input, Checkbox, + Option, } from '@island.is/island-ui/core' import { useContext } from 'react' import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { IInput } from '../../../../../types/interfaces' +import { + IInput, + IInputSettings, + IInputType, +} from '../../../../../types/interfaces' import { translationStation } from '../../../../../services/translationStation' +import { SingleValue } from 'react-select' export default function BaseInput() { - const { - formBuilder, - lists, - listsDispatch, - changeSelectHandler, - onFocus, - blur, - } = useContext(FormBuilderContext) + const { formBuilder, lists, listsDispatch, onFocus, blur } = + useContext(FormBuilderContext) const { activeItem } = lists const currentItem = activeItem.data as IInput const createAndSortOptions = formBuilder.inputTypes @@ -48,7 +48,18 @@ export default function BaseInput() { backgroundColor="blue" isSearchable value={defaultOption} - onChange={(e) => changeSelectHandler(e)} + onChange={(e: SingleValue>) => + listsDispatch({ + type: 'changeInputType', + payload: { + newValue: e?.value ?? 'Default', + inputSettings: + (formBuilder?.inputTypes?.find( + (inputType: IInputType) => inputType?.type === e?.value, + )?.inputSettings as IInputSettings) ?? {}, + }, + }) + } /> @@ -61,13 +72,15 @@ export default function BaseInput() { name="name" value={currentItem.name.is} backgroundColor="blue" - onChange={(e) => listsDispatch({ - type: 'changeName', - payload: { - lang: 'is', - newValue: e.target.value, - } - })} + onChange={(e) => + listsDispatch({ + type: 'changeName', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } onFocus={(e) => onFocus(e.target.value)} onBlur={(e) => blur(e)} /> @@ -81,13 +94,15 @@ export default function BaseInput() { name="nameEn" value={currentItem.name.en} backgroundColor="blue" - onChange={(e) => listsDispatch({ - type: 'changeName', - payload: { - lang: 'en', - newValue: e.target.value, - } - })} + onChange={(e) => + listsDispatch({ + type: 'changeName', + payload: { + lang: 'en', + newValue: e.target.value, + }, + }) + } onFocus={(e) => onFocus(e.target.value)} onBlur={(e) => blur(e)} buttons={[ diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx index c95d43eafa2f..fab2b2c45a30 100644 --- a/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx +++ b/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx @@ -11,8 +11,7 @@ import { IInput } from '../../../../../types/interfaces' import { translationStation } from '../../../../../services/translationStation' export default function MessageWithLink() { - const { lists, listsDispatch, onFocus, blur } = - useContext(FormBuilderContext) + const { lists, listsDispatch, onFocus, blur } = useContext(FormBuilderContext) const { activeItem } = lists const currentItem = activeItem.data as IInput const { inputSettings } = currentItem diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx index ec5a0b75fb7c..b047f8c71ed6 100644 --- a/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx +++ b/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx @@ -26,7 +26,7 @@ export default function TimeInput() { onChange={(e) => { listsDispatch({ type: 'timeInterval', - payload: { data: e ? e.value : '0' } + payload: { data: e ? e.value : '0' }, }) }} /> diff --git a/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx b/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx index 0b7344fc3ed8..24cfa252d8b6 100644 --- a/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx +++ b/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx @@ -61,13 +61,13 @@ export default function ListItem({ label="Tengja" checked={connect} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> { }} + onChange={() => {}} /> @@ -75,7 +75,7 @@ export default function ListItem({ marginRight={2} style={{ cursor: 'pointer' }} // eslint-disable-next-line @typescript-eslint/no-empty-function - onClick={() => { }} + onClick={() => {}} > @@ -93,7 +93,7 @@ export default function ListItem({ size="sm" value={listItem.label.is} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> @@ -104,7 +104,7 @@ export default function ListItem({ size="sm" value={listItem.label.en} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> diff --git a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx index f952f72dfb8c..0e240bbf27b1 100644 --- a/apps/form-builder/components/MainContent/components/Premises/Premises.tsx +++ b/apps/form-builder/components/MainContent/components/Premises/Premises.tsx @@ -45,16 +45,18 @@ export default function Premises() { (f) => f?.id === documentTypeId, ) ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) - : [ - ...formDocumentTypes, - documentTypes.find((d) => d?.id === documentTypeId), - ].filter((d) => d !== undefined) as ICertificate[] + : ([ + ...formDocumentTypes, + documentTypes.find((d) => d?.id === documentTypeId), + ].filter((d) => d !== undefined) as ICertificate[]) setFormDocumentTypes(newDocumentTypes) formDispatch({ type: 'updateDocuments', payload: { - documents: newDocumentTypes.filter((d) => d !== undefined) as ICertificate[], + documents: newDocumentTypes.filter( + (d) => d !== undefined, + ) as ICertificate[], }, }) } diff --git a/apps/form-builder/components/MainContent/components/Preview/Preview.tsx b/apps/form-builder/components/MainContent/components/Preview/Preview.tsx index a9f64d08dc5a..32acdabe0085 100644 --- a/apps/form-builder/components/MainContent/components/Preview/Preview.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/Preview.tsx @@ -63,16 +63,14 @@ export default function Preview({ data, isLarge }: Props) { {/* Hakbox */} {data.type === 'Hakbox' && } {/* Textalinubox */} - { - data.type === 'Textalínubox' && ( - - ) - } + {data.type === 'Textalínubox' && ( + + )} {data.type === 'Klukkuinnsláttur' && ( diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx index c66027643cec..f2e49d1954fd 100644 --- a/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx +++ b/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx @@ -68,7 +68,7 @@ export default function Banknumber() { value={banki} maxLength={4} name="" - onChange={(e) => console.log(typeof e.target.value)} //handleChange(0, e.target.value)} + onChange={(e) => handleChange(0, e.target.value)} onBlur={(e) => setBanki(addLeadingZeros(e.target.value, 4))} /> diff --git a/apps/form-builder/components/Navbar/Navbar.tsx b/apps/form-builder/components/Navbar/Navbar.tsx index 1894b555ef30..cf7497bf04f3 100644 --- a/apps/form-builder/components/Navbar/Navbar.tsx +++ b/apps/form-builder/components/Navbar/Navbar.tsx @@ -75,8 +75,8 @@ export default function Navbar() { variant="ghost" size="small" onClick={() => { - setInSettings(false); - const step = lists.steps.find((s) => s.type === 'Innsláttur'); + setInSettings(false) + const step = lists.steps.find((s) => s.type === 'Innsláttur') if (step) { listsDispatch({ type: 'setActiveItem', @@ -84,7 +84,7 @@ export default function Navbar() { type: 'Step', data: step, }, - }); + }) } }} > @@ -209,7 +209,7 @@ export default function Navbar() { } } - type ActionType = 'removeStep' | 'removeGroup' | 'removeInput'; + type ActionType = 'removeStep' | 'removeGroup' | 'removeInput' function removeItem(type: ItemType, guid: UniqueIdentifier, id: number) { const actionTypes: Record = { @@ -221,7 +221,7 @@ export default function Navbar() { listsDispatch({ type: actionTypes[type], payload: { - guid: guid + guid: guid, }, }) deleteItem(type, id) @@ -268,7 +268,12 @@ export default function Navbar() { formUpdate() } - type DndAction = 'stepOverStep' | 'groupOverStep' | 'groupOverGroup' | 'inputOverGroup' | 'inputOverInput'; + type DndAction = + | 'stepOverStep' + | 'groupOverStep' + | 'groupOverGroup' + | 'inputOverGroup' + | 'inputOverInput' function onDragOver(event: DragOverEvent) { const { active, over } = event diff --git a/apps/form-builder/components/TableRow/TableRow.tsx b/apps/form-builder/components/TableRow/TableRow.tsx index 31f3102f1dd0..ae90e8ab818a 100644 --- a/apps/form-builder/components/TableRow/TableRow.tsx +++ b/apps/form-builder/components/TableRow/TableRow.tsx @@ -72,9 +72,7 @@ const TableRow = ({ /> - + @@ -90,7 +88,6 @@ const TableRow = ({ menuLabel={`Aðgerðir ${name}`} disclosure={ + + + + - return ( - <> - ) + + + + + + {formBuilder.forms && + formBuilder.forms?.map((f) => { + return ( + + ) + })} + + ) + } + return <> } export default Forms diff --git a/libs/portals/admin/form-system/src/types/enums/index.tsx b/libs/portals/admin/form-system/src/types/enums/index.tsx new file mode 100644 index 000000000000..fadfab2e4e4a --- /dev/null +++ b/libs/portals/admin/form-system/src/types/enums/index.tsx @@ -0,0 +1,100 @@ +export enum ApplicationTemplateStatus { + Þýðing = -2, + Kerfi = -1, + Óútgefið = 0, + Útgefið = 2, + tekiðÚrNotkun = 4, +} + +export enum LicenseProviderEnum { + sýslumannsembættið = 1, + leyfisveitanEhf = 2, + leyfisveitanEhf2 = 9, + þjóðskráÍslands = 3, + ferðamálastofa = 4, + ferðamálastofa2 = 52, + menntamálastofnun = 5, + hallaBjörgBaldursdóttir = 6, + fiskistofa = 7, + officeOfDistrictMagistrate = 8, + registersIceland = 10, + icelandicTouristBoard = 11, + directorateOfEducation = 12, + hallaBjorgBaldursdottir = 13, + directorateOfFisheries = 14, + fjármálaOgEfnahagsráðuneytið = 15, + ministryOfFinanceAndEconomicAffairs = 16, + ríkisskattstjóri = 17, + ríkiskaup = 18, + sýslumaðurinnÁHöfuðborgarsvæðinu = 19, + sýslumaðurinnÁHöfuðborgarsvæðinu2 = 50, + theDistrictMagistrateCapitalRegion = 20, + centralPublicProcurement = 21, + directorateOfInternalRevenue = 22, + sýslumaðurinnÁVestfjörðum = 23, + theDistrictMagistrateWestfjords = 24, + útlendingastofnun = 37, + útlendingastofnun2 = 49, + icelandicDirectorateOfImmigration = 38, + utanríkisráðuneytið = 39, + ministryForForeignAffairs = 40, + ríkislögreglustjóri = 41, + ríkislögreglustjóri2 = 71, + sjúkratryggingarÍslands = 42, + sjúkratryggingarÍslands2 = 51, + þjóðskjalasafnÍslands = 43, + þjóðskjalasafnÍslands2 = 44, + sýslumenn = 53, + fjölskylduOgHúsdýragarðurinn = 59, + menntamálastofnun2 = 61, + umhverfisstofnun = 62, + héraðsdómurReykjavíkur = 63, + minjastofnunÍslands = 64, + náttúruhamfaratryggingarÍslands = 65, +} + +export enum FileTypeEnum { + PDF, + Image, + Xls, + ALL, +} + +export enum EInputType { + Textalínubox = 1, + TextaboxStórt = 2, + Tölustafir = 3, + Textalýsing = 4, + Hakbox = 5, + Dagssetning = 6, + Fellilisti = 7, + Valhnappar = 8, + Heimagistingarnúmer = 9, + FasteignanúmerInnslegið = 10, + FasteignanúmerValiðÚrLista = 11, + Bankareikningsnúmer = 13, + Kennitala = 14, + Greiðandi = 15, + Krónutala = 16, + Krónutölusamtala = 17, + Netfang = 18, + Símanúmer = 19, + FalinnStrengur = 20, + Tími = 21, + Sveitarfélög = 22, + Landalisti = 23, + Póstnúmer = 24, + KennitalaDánarbús = 25, + KennitalaAllt = 26, + Vottorð = 28, + Aðili = 29, +} + +export enum EFormApplicantTypes { + einstaklingur = 'Einstaklingur', + einstaklingurMedUmbodAnnarsEinstaklings = 'Einstaklingur_með_umboð_annars_einstaklings', + einstaklingurMedUmbodLogadila = 'Einstaklingur_með_umboð_lögaðila', + einstaklingurMedProkuru = 'Einstaklingur_með_prókúru', + einstaklingurUmbodsveitandi = 'Einstaklingur_umboðsveitandi', + logadili = 'Lögaðili', +} diff --git a/libs/portals/admin/form-system/src/types/interfaces.tsx b/libs/portals/admin/form-system/src/types/interfaces.tsx new file mode 100644 index 000000000000..891c44c723ad --- /dev/null +++ b/libs/portals/admin/form-system/src/types/interfaces.tsx @@ -0,0 +1,253 @@ +import { Dispatch, SetStateAction, FocusEvent } from 'react' +import { UniqueIdentifier } from '@dnd-kit/core' +import { EFormApplicantTypes } from './enums' +import { Action as ListsAction } from '../hooks/listsReducer' +import { FormAction } from '../hooks/formReducer' +import { FormHeaderAction } from '../hooks/headerInfoReducer' + +export type IFormBuilderContext = { + formBuilder: IFormBuilder + formDispatch: Dispatch + lists: { + activeItem: ActiveItem + steps: IStep[] + groups: IGroup[] + inputs: IInput[] + } + listsDispatch: Dispatch + formUpdate: () => Promise + inSettings: boolean + setInSettings: Dispatch> + setSelectStatus: Dispatch> + selectStatus: NavbarSelectStatus + activeListItem?: IListItem | null + setActiveListItem: Dispatch> + blur(e: FocusEvent): void + onFocus(e: string): void +} + +export interface IInputSettings { + $type?: string + isLarge?: boolean + size?: Sizes + interval?: string + erHlekkur?: boolean + url?: string + hnapptexti?: ILanguage + tegundir?: string[] + hamarksstaerd?: number + erFjolval?: boolean + fjoldi?: number + header?: string + hamarkslengd?: number + lagmarkslengd?: number + laggildi?: number + hagildi?: number + listi?: IListItem[] + type?: string + name?: ILanguage + erListi?: boolean + erInnslattur?: boolean + [key: string]: unknown +} + +export interface IForm { + id: number + name: ILanguage + created: Date + lastChanged: Date + organization: { + id: number + name: ILanguage + kennitala: string + scope: string + xroadBaseUrl: string + } + dependencies: ITenging + stepsList: IStep[] + groupsList: IGroup[] + inputsList: IInput[] + stopProgressOnValidatingStep: boolean + applicationsDaysToRemove: number + invalidationDate?: Date + isTranslated: boolean + documentTypes: ICertificate[] + formApplicantTypes: IFormApplicantType[] +} + +export interface IStep { + id: number + guid: UniqueIdentifier + displayOrder: number + name: ILanguage + type: string + waitingText: ILanguage + callRuleset: boolean + isHidden: boolean + isCompleted: boolean + groups: IGroup[] +} + +export interface IGroup { + id: number + name: ILanguage + guid: UniqueIdentifier + displayOrder: number + isHidden: boolean + multiSet: number + stepId: number + stepGuid: UniqueIdentifier + inputs?: IInput[] +} + +export interface IInput { + id: number + name: ILanguage + description: ILanguage + isRequired: boolean + displayOrder: number + groupId: number + groupGuid: UniqueIdentifier + isHidden: boolean + type: string + guid: UniqueIdentifier + inputFields: object + inputSettings: IInputSettings + isPartOfMultiSet: boolean +} + +export type ILists = { + activeItem: ActiveItem + steps: IStep[] + groups: IGroup[] + inputs: IInput[] + [key: string]: unknown +} + +export interface ActiveItem { + type: ItemType + data: IStep | IGroup | IInput +} + +export interface ISelectOption { + label: string | number + value: string | number +} + +export interface ITenging { + [key: string]: string[] +} + +export interface IFormBuilder { + form: IForm + forms?: IForm[] | null + documentTypes: ICertificate[] + inputTypes: IInputType[] + applicantTypes: IApplicantType[] + listTypes: IListType[] +} + +export interface IListType { + id: number + type: string + name: ILanguage + description: ILanguage +} + +export interface IListItem { + guid: UniqueIdentifier + label: ILanguage + description: ILanguage + displayOrder: number + isSelected: boolean +} + +export interface ICertificate { + id: number + type: string + name: ILanguage + description: ILanguage +} + +export interface IApplicantType { + id: number + name: ILanguage + type: EFormApplicantTypes + nameSuggestions: { + applicantTypeId: number + nameSuggestion: ILanguage + }[] +} + +export type IFormApplicantType = { + formId: number + applicantTypeId: number + name: ILanguage + type: EFormApplicantTypes +} + +export interface IFormDocumentType { + formId: number + documentTypeId: number +} + +export interface IInputType { + type: string + name: string + description: string + organizations?: [] + inputFields?: object + inputMetadata?: object + ruleset?: object + inputSettings: object +} + +export interface ILayoutContext { + info: { + organization: string + applicationName: string + } + infoDispatch: React.Dispatch +} + +export interface ILicenseProvider { + licenseProviderID: number + kennitala: string + name: string + email: string + phone: string + enabled: boolean + parentId?: number + language: string +} + +export interface ITranslationResponse { + translations: ITranslation[] + sourceLanguageCode: string + targetLanguageCode: string + model: string +} + +export interface ITranslation { + translatedText: string + translatedTextStructured: [string, string][] +} +export enum NavbarSelectStatus { + OFF = 'Off', + NORMAL = 'Normal', + LIST_ITEM = 'ListItem', + ON_WITHOUT_SELECT = 'OnWithoutSelect', +} + +export type ItemType = 'Step' | 'Group' | 'Input' + +export type ILanguage = { + is: string + en: string +} +export interface User { + name?: string + email?: string + image?: string +} +type Sizes = 'xs' | 'sm' | 'md' diff --git a/libs/portals/admin/form-system/src/utils/defaultStep.tsx b/libs/portals/admin/form-system/src/utils/defaultStep.tsx new file mode 100644 index 000000000000..6130a25964f1 --- /dev/null +++ b/libs/portals/admin/form-system/src/utils/defaultStep.tsx @@ -0,0 +1,20 @@ +import { uuid } from 'uuidv4' +import { IStep } from '../types/interfaces' + +export const defaultStep: IStep = { + id: 0, + guid: uuid(), + displayOrder: 0, + name: { + is: '', + en: '', + }, + type: 'Innsláttur', + waitingText: { + is: '', + en: '', + }, + callRuleset: false, + isHidden: false, + isCompleted: false, +} diff --git a/libs/portals/admin/form-system/src/utils/formatDate.tsx b/libs/portals/admin/form-system/src/utils/formatDate.tsx new file mode 100644 index 000000000000..7b16496029e6 --- /dev/null +++ b/libs/portals/admin/form-system/src/utils/formatDate.tsx @@ -0,0 +1,8 @@ +export const formatDate = (date: Date) => { + const newDate = new Date(date) + const day = newDate.getDate().toString().padStart(2, '0') + const month = (newDate.getMonth() + 1).toString().padStart(2, '0') + const year = newDate.getFullYear() + + return `${day}.${month}.${year}` //${hours}:${minutes}`; +} diff --git a/libs/portals/admin/form-system/src/utils/getBaseSettingsStep.tsx b/libs/portals/admin/form-system/src/utils/getBaseSettingsStep.tsx new file mode 100644 index 000000000000..12844cbd9dbc --- /dev/null +++ b/libs/portals/admin/form-system/src/utils/getBaseSettingsStep.tsx @@ -0,0 +1,20 @@ +import { uuid } from 'uuidv4' + +export const baseSettingsStep = { + id: 99999, + guid: uuid(), + displayOrder: -1, + name: { + is: 'Grunnstillingar', + en: 'Base settings', + }, + type: 'BaseSetting', + waitingText: { + is: '', + en: '', + }, + callRuleset: false, + isHidden: false, + isCompleted: false, + groups: [], +} From 323ad383f4ff27139a0d2b45a8d354d0eb229ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A6var=20M=C3=A1r=20Atlason?= Date: Tue, 12 Mar 2024 23:23:50 +0000 Subject: [PATCH 021/129] Fixng typing erros in form system graphql domain --- .../src/models/externalEndpoints.model.ts | 17 +++++++---- .../form-system/src/models/form.model.ts | 19 ++++++------ .../src/models/formResponse.model.ts | 21 +++++++------ .../form-system/src/models/input.model.ts | 5 ++-- .../src/models/inputSettings.model.ts | 10 +++---- .../src/models/organization.model.ts | 30 +++++++++---------- 6 files changed, 53 insertions(+), 49 deletions(-) diff --git a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts index 7d92268d8f30..2983385e2d6f 100644 --- a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts +++ b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts @@ -1,15 +1,22 @@ -import { Field, ID, ObjectType } from "@nestjs/graphql"; +import { Field, ID, ObjectType, registerEnumType } from '@nestjs/graphql' enum Type { - SUBMIT = 'submit', - VALIDATION = 'validation', + submit = 'submit', + validation = 'validation', } +registerEnumType(Type, { + name: 'FormSystemType', +}) + enum Environment { - PRODUCTION = 'production', - DEVELOPMENT = 'development', + production = 'production', + development = 'development', } +registerEnumType(Environment, { + name: 'FormSystemEnvironment', +}) @ObjectType('FormSystemExternalEndpoints') export class ExternalEndpoints { diff --git a/libs/api/domains/form-system/src/models/form.model.ts b/libs/api/domains/form-system/src/models/form.model.ts index 84398df3d212..ef2e825e5014 100644 --- a/libs/api/domains/form-system/src/models/form.model.ts +++ b/libs/api/domains/form-system/src/models/form.model.ts @@ -1,12 +1,11 @@ -import { Field, ID, ObjectType } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; -import { ApplicantType } from "./applicantType.model"; -import { Group } from "./group.model"; -import { Input } from "./input.model"; -import { Step } from "./step.model"; -import { Organization } from "./organization.model"; -import { DocumentType } from "./documentType.model"; - +import { Field, ID, ObjectType } from '@nestjs/graphql' +import { LanguageType } from './global.model' +import { ApplicantType } from './applicantType.model' +import { Group } from './group.model' +import { Input } from './input.model' +import { Step } from './step.model' +import { Organization } from './organization.model' +import { DocumentType } from './documentType.model' export type Dependencies = { [key: string]: string[] @@ -38,7 +37,7 @@ export class Form { @Field(() => DocumentType, { nullable: true }) documentTypes?: DocumentType[] | null - @Field(() => [ApplicantType], { nullable: true }) + @Field(() => [ApplicantType]) formApplicantTypes?: ApplicantType[] | null @Field(() => LanguageType, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/formResponse.model.ts b/libs/api/domains/form-system/src/models/formResponse.model.ts index 9a02bac8b81d..de9c294e955d 100644 --- a/libs/api/domains/form-system/src/models/formResponse.model.ts +++ b/libs/api/domains/form-system/src/models/formResponse.model.ts @@ -1,26 +1,25 @@ -import { Field, ObjectType } from "@nestjs/graphql"; -import { Form } from "./form.model"; -import { DocumentType } from "./documentType.model"; -import { Input } from "./input.model"; -import { ApplicantType } from "./applicantType.model"; -import { ListType } from "./listType.model"; +import { Field, ObjectType } from '@nestjs/graphql' +import { Form } from './form.model' +import { DocumentType } from './documentType.model' +import { Input } from './input.model' +import { ApplicantType } from './applicantType.model' +import { ListType } from './listType.model' import { DocumentTypeDto } from '@island.is/clients/form-system' - @ObjectType('FormSystemFormResponse') export class FormResponse { @Field(() => Form, { nullable: true }) form?: Form - @Field(() => [DocumentType], { nullable: true }) + @Field(() => [DocumentType]) documentTypes?: DocumentType[] | null - @Field(() => [Input], { nullable: true }) + @Field(() => [Input]) inputTypes?: Input[] | null - @Field(() => [ApplicantType], { nullable: true }) + @Field(() => [ApplicantType]) applicantTypes?: ApplicantType[] | null - @Field(() => [ListType], { nullable: true }) + @Field(() => [ListType]) listTypes?: ListType[] | null } diff --git a/libs/api/domains/form-system/src/models/input.model.ts b/libs/api/domains/form-system/src/models/input.model.ts index 585e2ba9d42a..0281dfcbccc0 100644 --- a/libs/api/domains/form-system/src/models/input.model.ts +++ b/libs/api/domains/form-system/src/models/input.model.ts @@ -1,4 +1,6 @@ import { Field, ID, ObjectType } from '@nestjs/graphql' +import graphqlTypeJson from 'graphql-type-json' + import { InputSettings } from './inputSettings.model' import { LanguageType } from './global.model' @@ -40,7 +42,7 @@ export class Input { @Field(() => InputSettings, { nullable: true }) inputSettings?: InputSettings - @Field(() => Object, { nullable: true }) + @Field(() => graphqlTypeJson, { nullable: true }) inputFields?: object } @@ -82,4 +84,3 @@ export class UpdateInput { @Field(() => Boolean, { nullable: true }) isPartOfMultiSet?: boolean } - diff --git a/libs/api/domains/form-system/src/models/inputSettings.model.ts b/libs/api/domains/form-system/src/models/inputSettings.model.ts index f92eeec414cd..59d21b0bb9a1 100644 --- a/libs/api/domains/form-system/src/models/inputSettings.model.ts +++ b/libs/api/domains/form-system/src/models/inputSettings.model.ts @@ -1,7 +1,7 @@ -import { ObjectType, Field } from "@nestjs/graphql" -import { LanguageType } from "./global.model" +import { ObjectType, Field } from '@nestjs/graphql' +import { LanguageType } from './global.model' -ObjectType('FormSystemListItem') +@ObjectType('FormSystemListItem') export class ListItem { @Field(() => String, { nullable: true }) guid?: string @@ -24,8 +24,8 @@ export class ListItem { @ObjectType('FormSystemInputSettings') export class InputSettings { - @Field(() => String, { nullable: true }) - $type?: string + // @Field(() => String, { nullable: true }) + // $type?: string @Field(() => Boolean, { nullable: true }) isLarge?: boolean diff --git a/libs/api/domains/form-system/src/models/organization.model.ts b/libs/api/domains/form-system/src/models/organization.model.ts index f920c8296ec4..34209e1a2b9a 100644 --- a/libs/api/domains/form-system/src/models/organization.model.ts +++ b/libs/api/domains/form-system/src/models/organization.model.ts @@ -1,13 +1,11 @@ -import { Field, ID, ObjectType } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; -import { Input } from "./input.model"; -import { ApplicantType } from "./applicantType.model"; -import { ListType } from "./listType.model"; -import { ExternalEndpoints } from "./externalEndpoints.model"; -import { DocumentType } from "./documentType.model"; -import { Form } from "./form.model"; - - +import { Field, ID, ObjectType } from '@nestjs/graphql' +import { LanguageType } from './global.model' +import { Input } from './input.model' +import { ApplicantType } from './applicantType.model' +import { ListType } from './listType.model' +import { ExternalEndpoints } from './externalEndpoints.model' +import { DocumentType } from './documentType.model' +import { Form } from './form.model' @ObjectType('FormSystemOrganization') export class Organization { @@ -20,22 +18,22 @@ export class Organization { @Field(() => String, { nullable: true }) nationalId?: string | null - @Field(() => [Input], { nullable: true }) + @Field(() => [Input]) inputTypes?: Input[] | null - @Field(() => [DocumentType], { nullable: true }) + @Field(() => [DocumentType]) documentTypes?: DocumentType[] | null - @Field(() => [ApplicantType], { nullable: true }) + @Field(() => [ApplicantType]) applicantTypes?: ApplicantType[] | null - @Field(() => [ListType], { nullable: true }) + @Field(() => [ListType]) listTypes?: ListType[] | null - @Field(() => [Form], { nullable: true }) + @Field(() => [Form]) forms?: Form[] | null - @Field(() => [ExternalEndpoints], { nullable: true }) + @Field(() => [ExternalEndpoints]) externalEndpoints?: ExternalEndpoints[] | null } From 61a8469bd16173aac125c2e996d1973af2238f40 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 13 Mar 2024 15:09:55 +0000 Subject: [PATCH 022/129] Added another Object type and a bunch of inputTypes in order for codegen to work --- .../src/dto/applicantType.input.ts | 41 ++++++++ .../dto/applicantTypeNameSuggestion.input.ts | 11 +++ .../form-system/src/dto/documentType.input.ts | 19 ++++ .../src/dto/externalEndpoints.input.ts | 25 +++++ .../form-system/src/dto/forms.input.ts | 69 ++++++++++++- .../form-system/src/dto/global.input.ts | 10 ++ .../form-system/src/dto/groups.input.ts | 62 +++++++++++- .../src/dto/inputSettings.input.ts | 67 +++++++++++++ .../form-system/src/dto/inputs.input.ts | 98 +++++++++++++++++-- .../form-system/src/dto/listItem.input.ts | 23 +++++ .../form-system/src/dto/listType.input.ts | 17 ++++ .../form-system/src/dto/organization.input.ts | 52 +++++++++- .../form-system/src/dto/steps.input.ts | 67 ++++++++++++- .../src/lib/forms/forms.service.ts | 5 +- .../organizations/organizations.services.ts | 18 +--- .../src/models/applicantType.model.ts | 4 +- .../src/models/applicantTypeNameSuggestion.ts | 2 +- .../src/models/externalEndpoints.model.ts | 29 ++---- .../form-system/src/models/form.model.ts | 27 ++--- .../src/models/formApplicantType.model.ts | 18 ++++ .../src/models/formListResponse.model.ts | 2 +- .../src/models/formResponse.model.ts | 9 +- .../form-system/src/models/group.model.ts | 32 +----- .../form-system/src/models/input.model.ts | 45 +-------- .../form-system/src/models/listType.model.ts | 4 +- .../src/models/organization.model.ts | 19 ++-- .../form-system/src/models/services.model.ts | 2 +- .../form-system/src/models/step.model.ts | 35 +------ 28 files changed, 616 insertions(+), 196 deletions(-) create mode 100644 libs/api/domains/form-system/src/dto/applicantType.input.ts create mode 100644 libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts create mode 100644 libs/api/domains/form-system/src/dto/documentType.input.ts create mode 100644 libs/api/domains/form-system/src/dto/externalEndpoints.input.ts create mode 100644 libs/api/domains/form-system/src/dto/global.input.ts create mode 100644 libs/api/domains/form-system/src/dto/inputSettings.input.ts create mode 100644 libs/api/domains/form-system/src/dto/listItem.input.ts create mode 100644 libs/api/domains/form-system/src/dto/listType.input.ts create mode 100644 libs/api/domains/form-system/src/models/formApplicantType.model.ts diff --git a/libs/api/domains/form-system/src/dto/applicantType.input.ts b/libs/api/domains/form-system/src/dto/applicantType.input.ts new file mode 100644 index 000000000000..b1c2d46c759d --- /dev/null +++ b/libs/api/domains/form-system/src/dto/applicantType.input.ts @@ -0,0 +1,41 @@ +import { Field, InputType } from "@nestjs/graphql"; +import { LanguageTypeInput } from "./global.input"; +import { ApplicantTypeNameSuggestionInput } from "./applicantTypeNameSuggestion.input"; + + +@InputType('FormSystemApplicantTypeInput') +export class ApplicantTypeInput { + @Field(() => Number, { nullable: true }) + id?: number + + @Field(() => Number, { nullable: true }) + applicantTypeId?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => LanguageTypeInput, { nullable: true }) + description?: LanguageTypeInput + + @Field(() => String, { nullable: true }) + type?: string | null + + @Field(() => ApplicantTypeNameSuggestionInput, { nullable: true }) + nameSuggestion?: ApplicantTypeNameSuggestionInput +} + +@InputType('FormSystemFormApplicantTypeInput') +export class FormApplicantTypeInput { + @Field(() => Number, { nullable: true }) + formId?: number + + @Field(() => Number, { nullable: true }) + applicantTypeId?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => String) + type?: string | null +} + diff --git a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts new file mode 100644 index 000000000000..626bee98d348 --- /dev/null +++ b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts @@ -0,0 +1,11 @@ +import { InputType, Field } from "@nestjs/graphql" +import { LanguageTypeInput } from "./global.input" + +@InputType('FormSystemApplicantTypeNameSuggestionInput') +export class ApplicantTypeNameSuggestionInput { + @Field(() => LanguageTypeInput, { nullable: true }) + nameSuggestion?: LanguageTypeInput + + @Field(() => Number, { nullable: true }) + applicantTypeId?: number +} diff --git a/libs/api/domains/form-system/src/dto/documentType.input.ts b/libs/api/domains/form-system/src/dto/documentType.input.ts new file mode 100644 index 000000000000..742fd4a1aa5b --- /dev/null +++ b/libs/api/domains/form-system/src/dto/documentType.input.ts @@ -0,0 +1,19 @@ +import { Field, ID, InputType } from "@nestjs/graphql" +import { LanguageTypeInput } from "./global.input" + + + +@InputType('FormSystemDocumentTypeInput') +export class DocumentTypeInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => String, { nullable: true }) + type?: string | null + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => LanguageTypeInput, { nullable: true }) + description?: LanguageTypeInput +} diff --git a/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts b/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts new file mode 100644 index 000000000000..34dd0c34381d --- /dev/null +++ b/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts @@ -0,0 +1,25 @@ +import { Field, ID, InputType, registerEnumType } from '@nestjs/graphql' +import { EExternalEndpointType, EExternalEndpointEnvironment } from '@island.is/clients/form-system' + +registerEnumType(EExternalEndpointType, { + name: 'FormSystemExternalEndpointType', +}) + +registerEnumType(EExternalEndpointEnvironment, { + name: 'FormSystemExternalEndpointEnvironment', +}) + +@InputType('FormSystemExternalEndpointsInput') +export class ExternalEndpointsInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => String, { nullable: true }) + url?: string | null + + @Field(() => EExternalEndpointType) + type?: EExternalEndpointType + + @Field(() => EExternalEndpointEnvironment, { nullable: true }) + environment?: EExternalEndpointEnvironment +} diff --git a/libs/api/domains/form-system/src/dto/forms.input.ts b/libs/api/domains/form-system/src/dto/forms.input.ts index e228767d9ef2..19d7971e995d 100644 --- a/libs/api/domains/form-system/src/dto/forms.input.ts +++ b/libs/api/domains/form-system/src/dto/forms.input.ts @@ -1,5 +1,12 @@ -import { Field, InputType, Int } from "@nestjs/graphql"; -import { Form } from "../models/form.model"; +import { Field, ID, InputType, Int } from "@nestjs/graphql" +import graphqlTypeJson from 'graphql-type-json' +import { LanguageTypeInput } from "./global.input" +import { InputInput } from "./inputs.input" +import { GroupInput } from "./groups.input" +import { StepInput } from "./steps.input" +import { FormApplicantTypeInput } from "./applicantType.input" +import { DocumentTypeInput } from "./documentType.input" +import { OrganizationInput } from "./organization.input" @InputType('FormSystemGetFormInput') @@ -26,11 +33,65 @@ export class DeleteFormInput { id!: number } +@InputType('FormSystemFormInput') +export class FormInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => OrganizationInput, { nullable: true }) + organization?: OrganizationInput + + @Field(() => Date, { nullable: true }) + created?: Date + + @Field(() => Date, { nullable: true }) + lastChanged?: Date + + @Field(() => Date, { nullable: true }) + invalidationDate?: Date | null + + @Field(() => graphqlTypeJson) + dependencies?: { [key: string]: string[] } | null + + @Field(() => [DocumentTypeInput], { nullable: 'itemsAndList' }) + documentTypes?: DocumentTypeInput[] | null + + @Field(() => [FormApplicantTypeInput], { nullable: 'itemsAndList' }) + formApplicantTypes?: FormApplicantTypeInput[] | null + + @Field(() => LanguageTypeInput, { nullable: true }) + completedMessage?: LanguageTypeInput + + @Field() + isTranslated?: boolean + + @Field() + stopProgressOnValidatingStep?: boolean + + @Field(() => Number, { nullable: true }) + applicationsDaysToRemove?: number + + @Field(() => [StepInput], { nullable: 'itemsAndList' }) + steps?: StepInput[] | null + + @Field(() => [StepInput], { nullable: 'itemsAndList' }) + stepsList?: StepInput[] | null + + @Field(() => [GroupInput], { nullable: 'itemsAndList' }) + groupsList?: GroupInput[] | null + + @Field(() => [InputInput], { nullable: 'itemsAndList' }) + inputsList?: InputInput[] | null +} + @InputType('FormSystemUpdateFormInput') export class UpdateFormInput { @Field(() => Int, { nullable: true }) formId!: number - @Field(() => Form, { nullable: true }) - form?: Form + @Field(() => FormInput, { nullable: true }) + form?: FormInput } diff --git a/libs/api/domains/form-system/src/dto/global.input.ts b/libs/api/domains/form-system/src/dto/global.input.ts new file mode 100644 index 000000000000..5d7c1e8856d5 --- /dev/null +++ b/libs/api/domains/form-system/src/dto/global.input.ts @@ -0,0 +1,10 @@ +import { Field, InputType } from "@nestjs/graphql"; + +@InputType('FormSystemGlobalInput') +export class LanguageTypeInput { + @Field(() => String, { nullable: true }) + is?: string | null + + @Field(() => String, { nullable: true }) + en?: string | null +} diff --git a/libs/api/domains/form-system/src/dto/groups.input.ts b/libs/api/domains/form-system/src/dto/groups.input.ts index 9426fbe3ab3f..cd7c6a72cd63 100644 --- a/libs/api/domains/form-system/src/dto/groups.input.ts +++ b/libs/api/domains/form-system/src/dto/groups.input.ts @@ -1,7 +1,35 @@ -import { Field, InputType, Int } from "@nestjs/graphql"; -import { CreateGroup, UpdateGroup } from "../models/group.model"; +import { Field, ID, InputType, Int } from "@nestjs/graphql" +import { LanguageTypeInput } from "./global.input" +import { InputInput } from "./inputs.input" +@InputType('FormSystemGroupCreation') +export class CreateGroup { + @Field(() => ID, { nullable: true }) + stepId?: number + + @Field(() => Number, { nullable: true }) + displayOrder?: number +} + +@InputType('FormSystemGroupUpdate') +export class UpdateGroup { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => String, { nullable: true }) + guid?: string + + @Field(() => Number, { nullable: true }) + displayOrder?: number + + @Field(() => Number, { nullable: true }) + multiSet?: number +} + @InputType('FormSystemGetGroupInput') export class GetGroupInput { @Field(() => Int) @@ -28,3 +56,33 @@ export class UpdateGroupInput { @Field(() => UpdateGroup, { nullable: true }) groupUpdateDto?: UpdateGroup } + +@InputType('FormSystemGroupInput') +export class GroupInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => String, { nullable: true }) + guid?: string + + @Field(() => Number, { nullable: true }) + displayOrder?: number + + @Field(() => Boolean, { nullable: true }) + isHidden?: boolean + + @Field(() => [InputInput]) + InputInputInputs?: InputInput[] | null + + @Field(() => Number, { nullable: true }) + stepId?: number + + @Field(() => Number, { nullable: true }) + multiSet?: number + + @Field(() => String, { nullable: true }) + stepGuid?: string +} diff --git a/libs/api/domains/form-system/src/dto/inputSettings.input.ts b/libs/api/domains/form-system/src/dto/inputSettings.input.ts new file mode 100644 index 000000000000..24388897481e --- /dev/null +++ b/libs/api/domains/form-system/src/dto/inputSettings.input.ts @@ -0,0 +1,67 @@ +import { InputType, Field } from "@nestjs/graphql" +import { LanguageTypeInput } from "./global.input" +import { ListItemInput } from "./listItem.input" + + +@InputType('FormSystemInputSettingsInput') +export class InputSettingsInput { + @Field(() => Boolean, { nullable: true }) + isLarge?: boolean + + @Field(() => String, { nullable: true }) + size?: string + + @Field(() => String, { nullable: true }) + interval?: string + + @Field(() => Boolean, { nullable: true }) + hasLink?: boolean + + @Field(() => String, { nullable: true }) + url?: string + + @Field(() => LanguageTypeInput, { nullable: true }) + buttonText?: LanguageTypeInput + + @Field(() => [String], { nullable: true }) + types?: string[] + + @Field(() => Number, { nullable: true }) + maxSize?: number + + @Field(() => Boolean, { nullable: true }) + isMulti?: boolean + + @Field(() => Number, { nullable: true }) + amount?: number + + @Field(() => String, { nullable: true }) + header?: string + + @Field(() => Number, { nullable: true }) + maxLength?: number + + @Field(() => Number, { nullable: true }) + minLength?: number + + @Field(() => Number, { nullable: true }) + min?: number + + @Field(() => Number, { nullable: true }) + max?: number + + @Field(() => [ListItemInput], { nullable: true }) + list?: ListItemInput[] + + @Field(() => String, { nullable: true }) + type?: string + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => Boolean, { nullable: true }) + isList?: boolean + + @Field(() => Boolean, { nullable: true }) + hasInput?: boolean +} diff --git a/libs/api/domains/form-system/src/dto/inputs.input.ts b/libs/api/domains/form-system/src/dto/inputs.input.ts index a807fcd776f5..2427625733a7 100644 --- a/libs/api/domains/form-system/src/dto/inputs.input.ts +++ b/libs/api/domains/form-system/src/dto/inputs.input.ts @@ -1,25 +1,68 @@ -import { Field, InputType, Int } from "@nestjs/graphql" -import { CreateInput, UpdateInput } from "../models/input.model" +import { Field, ID, InputType, Int } from "@nestjs/graphql" +import { LanguageTypeInput } from "./global.input" +import graphqlTypeJson from 'graphql-type-json' +import { InputSettingsInput } from "./inputSettings.input" -@InputType('FormSystemGetGroupInput') +@InputType('FormSystemInputCreation') +export class CreateInput { + @Field(() => Number, { nullable: true }) + groupId?: number + + @Field(() => Number, { nullable: true }) + displayOrder?: number +} + +@InputType('FormSystemInputUpdate') +export class UpdateInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => LanguageTypeInput, { nullable: true }) + description?: LanguageTypeInput + + @Field() + isRequired?: boolean + + @Field(() => Number, { nullable: true }) + displayOrder?: number + + @Field() + isHidden?: boolean + + @Field(() => String, { nullable: true }) + type?: string + + @Field(() => InputSettingsInput, { nullable: true }) + inputSettings?: InputSettingsInput + + @Field() + isPartOfMultiSet?: boolean +} + + + +@InputType('FormSystemGetInputInput') export class GetInputInput { @Field(() => Int) id!: number } -@InputType('FormSystemCreateGroupInput') +@InputType('FormSystemCreateInputInput') export class CreateInputInput { @Field(() => CreateInput, { nullable: true }) inputCreationDto?: CreateInput } -@InputType('FormSystemDeleteGroupInput') +@InputType('FormSystemDeleteInputInput') export class DeleteInputInput { @Field(() => Int) inputId!: number } -@InputType('FormSystemUpdateGroupInput') +@InputType('FormSystemUpdateInputInput') export class UpdateInputInput { @Field(() => Int, { nullable: true }) inputId!: number @@ -27,3 +70,46 @@ export class UpdateInputInput { @Field(() => UpdateInput, { nullable: true }) inputUpdateDto?: UpdateInput } + +@InputType('FormSystemInputInput') +export class InputInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => LanguageTypeInput, { nullable: true }) + description?: LanguageTypeInput + + @Field() + isRequired?: boolean + + @Field(() => Number, { nullable: true }) + displayOrder?: number + + @Field(() => Number, { nullable: true }) + groupId?: number + + @Field() + isHidden?: boolean + + @Field(() => String, { nullable: true }) + type?: string | null + + @Field(() => String, { nullable: true }) + guid?: string + + @Field() + isPartOfMultiSet?: boolean + + @Field(() => String, { nullable: true }) + groupGuid?: string + + @Field(() => InputSettingsInput, { nullable: true }) + inputSettings?: InputSettingsInput + + @Field(() => graphqlTypeJson, { nullable: true }) + inputFields?: object +} + diff --git a/libs/api/domains/form-system/src/dto/listItem.input.ts b/libs/api/domains/form-system/src/dto/listItem.input.ts new file mode 100644 index 000000000000..382cb261c61f --- /dev/null +++ b/libs/api/domains/form-system/src/dto/listItem.input.ts @@ -0,0 +1,23 @@ +import { InputType, Field } from "@nestjs/graphql" +import { LanguageTypeInput } from "./global.input" + +@InputType('FormSystemListItemInput') +export class ListItemInput { + @Field(() => String, { nullable: true }) + guid?: string + + @Field(() => LanguageTypeInput, { nullable: true }) + label?: LanguageTypeInput + + @Field(() => LanguageTypeInput, { nullable: true }) + description?: LanguageTypeInput + + @Field(() => Number, { nullable: true }) + displayOrder?: number + + @Field(() => Boolean, { nullable: true }) + isSelected?: boolean + + @Field(() => String, { nullable: true }) + value?: string +} diff --git a/libs/api/domains/form-system/src/dto/listType.input.ts b/libs/api/domains/form-system/src/dto/listType.input.ts new file mode 100644 index 000000000000..837ee4373398 --- /dev/null +++ b/libs/api/domains/form-system/src/dto/listType.input.ts @@ -0,0 +1,17 @@ +import { Field, ID, InputType } from "@nestjs/graphql" +import { LanguageTypeInput } from "./global.input" + +@InputType('FormSystemListTypeInput') +export class ListTypeInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => String, { nullable: true }) + type?: string | null + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => LanguageTypeInput, { nullable: true }) + description?: LanguageTypeInput +} diff --git a/libs/api/domains/form-system/src/dto/organization.input.ts b/libs/api/domains/form-system/src/dto/organization.input.ts index acb0648b34d5..17d0fa0a3613 100644 --- a/libs/api/domains/form-system/src/dto/organization.input.ts +++ b/libs/api/domains/form-system/src/dto/organization.input.ts @@ -1,12 +1,56 @@ -import { Field, InputType } from "@nestjs/graphql"; -import { LanguageType } from "../models/global.model"; +import { Field, ID, InputType } from "@nestjs/graphql" +import { InputInput } from "./inputs.input" +import { DocumentTypeInput } from "./documentType.input" +import { FormInput } from "./forms.input" +import { ApplicantTypeInput } from "./applicantType.input" +import { ListTypeInput } from "./listType.input" +import { ExternalEndpointsInput } from "./externalEndpoints.input" +import { LanguageTypeInput } from "./global.input" +@InputType('FormSystemOrganizationCreation') +export class CreateOrganization { + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => String, { nullable: true }) + nationalId?: string +} @InputType('FormSystemCreateOrganizationInput') export class CreateOrganizationInput { - @Field(() => LanguageType, { nullable: true }) - name?: LanguageType + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput @Field(() => String, { nullable: true }) nationalId?: string } + +@InputType('FormSystemOrganizationInput') +export class OrganizationInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => String, { nullable: true }) + nationalId?: string | null + + @Field(() => [InputInput], { nullable: 'itemsAndList' }) + inputTypes?: InputInput[] | null + + @Field(() => [DocumentTypeInput], { nullable: 'itemsAndList' }) + documentTypes?: DocumentTypeInput[] | null + + @Field(() => [ApplicantTypeInput], { nullable: true }) + applicantTypes?: ApplicantTypeInput[] | null + + @Field(() => [ListTypeInput], { nullable: 'itemsAndList' }) + listTypes?: ListTypeInput[] | null + + @Field(() => [FormInput], { nullable: 'itemsAndList' }) + forms?: FormInput[] | null + + @Field(() => [ExternalEndpointsInput], { nullable: 'itemsAndList' }) + externalEndpoints?: ExternalEndpointsInput[] | null +} diff --git a/libs/api/domains/form-system/src/dto/steps.input.ts b/libs/api/domains/form-system/src/dto/steps.input.ts index e7a7f36bc763..55fc3e9e02ea 100644 --- a/libs/api/domains/form-system/src/dto/steps.input.ts +++ b/libs/api/domains/form-system/src/dto/steps.input.ts @@ -1,6 +1,36 @@ -import { Field, InputType, Int } from "@nestjs/graphql"; -import { CreateStep, UpdateStep } from "../models/step.model"; +import { Field, ID, InputType, Int } from "@nestjs/graphql" +import { LanguageTypeInput } from "./global.input" +import { GroupInput } from "./groups.input" +@InputType('FormSystemStepCreation') +export class CreateStep { + @Field(() => Int, { nullable: true }) + formId?: number + + @Field(() => Int, { nullable: true }) + displayOrder?: number +} + +@InputType('FormSystemStepUpdate') +export class UpdateStep { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => String, { nullable: true }) + type?: string | null + + @Field(() => Number, { nullable: true }) + displayOrder?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + waitingText?: LanguageTypeInput + + @Field(() => Boolean, { nullable: true }) + callRuleset?: boolean +} @InputType('FormSystemGetStepInput') export class GetStepInput { @@ -28,3 +58,36 @@ export class UpdateStepInput { @Field(() => UpdateStep, { nullable: true }) stepUpdateDto?: UpdateStep } + +@InputType('FormSystemStepInput') +export class StepInput { + @Field(() => ID, { nullable: true }) + id?: number + + @Field(() => String, { nullable: true }) + guid?: string + + @Field(() => Number, { nullable: true }) + displayOrder?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => String, { nullable: true }) + type?: string | null + + @Field(() => LanguageTypeInput, { nullable: true }) + waitingText?: LanguageTypeInput + + @Field(() => Boolean, { nullable: true }) + callRulest?: boolean + + @Field(() => Boolean, { nullable: true }) + isHidden?: boolean + + @Field(() => Boolean, { nullable: true }) + isCompleted?: boolean + + @Field(() => [GroupInput], { nullable: 'itemsAndList' }) + groups?: GroupInput[] | null +} diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 1b169a49a085..39e8cb57e0a6 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -7,6 +7,8 @@ import { CreateFormInput, DeleteFormInput, GetFormInput, GetFormsInput, UpdateFo import { FormResponse } from "../../models/formResponse.model" import { FormListResponse } from "../../models/formListResponse.model" import { GraphqlToRestInputSettings, RESTInputSettings, RestToGraphqlInputSettings } from "../utils/helperFunctions" +import { Form } from "../../models/form.model" +import { Input } from "../../models/input.model" @@ -91,7 +93,8 @@ export class FormsService { if (!response || response instanceof ApolloError) { return {} } - return response as FormResponse + + return response } async deleteForm(auth: User, input: DeleteFormInput): Promise { diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts index 1e9e986e9879..b624ac511d98 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts @@ -5,10 +5,6 @@ import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { ApiOrganizationsPostRequest, OrganizationsApi } from "@island.is/clients/form-system" import { CreateOrganizationInput } from "../../dto/organization.input" import { Organization } from "../../models/organization.model" -import { Input } from "../../models/input.model" -import { ListType } from "../../models/listType.model" -import { Form } from "../../models/form.model" -import { ExternalEndpoints } from "../../models/externalEndpoints.model" @Injectable() export class OrganizationsService { @@ -55,18 +51,6 @@ export class OrganizationsService { return {} } - const newOrg: Organization = { - id: response.id, - name: response.name, - nationalId: response.kennitala, - inputTypes: response.inputTypes as Input[], - documentTypes: response.documentTypes, - applicantTypes: response.applicantTypes, - listTypes: response.listTypes as ListType[], - externalEndpoints: response.externalEndpoints as ExternalEndpoints[], - forms: response.forms as Form[], - } - - return newOrg + return response } } diff --git a/libs/api/domains/form-system/src/models/applicantType.model.ts b/libs/api/domains/form-system/src/models/applicantType.model.ts index ca4acd1938f7..87e5f72bf0d6 100644 --- a/libs/api/domains/form-system/src/models/applicantType.model.ts +++ b/libs/api/domains/form-system/src/models/applicantType.model.ts @@ -2,10 +2,10 @@ import { Field, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; import { ApplicantTypeNameSuggestion } from "./applicantTypeNameSuggestion"; -ObjectType('FormSystemApplicantType') +@ObjectType('FormSystemApplicantType') export class ApplicantType { @Field(() => Number, { nullable: true }) - formId?: number + id?: number @Field(() => Number, { nullable: true }) applicantTypeId?: number diff --git a/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts b/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts index 63232935d18f..d94ac42ba8b6 100644 --- a/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts +++ b/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts @@ -2,7 +2,7 @@ import { Field, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; -ObjectType('FormSystemApplicantTypeNameSuggestion') +@ObjectType('FormSystemApplicantTypeNameSuggestion') export class ApplicantTypeNameSuggestion { @Field(() => LanguageType, { nullable: true }) nameSuggestion?: LanguageType diff --git a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts index 2983385e2d6f..7b9a5d185494 100644 --- a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts +++ b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts @@ -1,21 +1,12 @@ import { Field, ID, ObjectType, registerEnumType } from '@nestjs/graphql' +import { EExternalEndpointType, EExternalEndpointEnvironment } from '@island.is/clients/form-system' -enum Type { - submit = 'submit', - validation = 'validation', -} - -registerEnumType(Type, { - name: 'FormSystemType', +registerEnumType(EExternalEndpointType, { + name: 'FormSystemExternalEndpointType', }) -enum Environment { - production = 'production', - development = 'development', -} - -registerEnumType(Environment, { - name: 'FormSystemEnvironment', +registerEnumType(EExternalEndpointEnvironment, { + name: 'FormSystemExternalEndpointEnvironment', }) @ObjectType('FormSystemExternalEndpoints') @@ -24,11 +15,11 @@ export class ExternalEndpoints { id?: number @Field(() => String, { nullable: true }) - url?: string + url?: string | null - @Field(() => Type, { nullable: true }) - type?: Type + @Field(() => EExternalEndpointType) + type?: EExternalEndpointType - @Field(() => Environment, { nullable: true }) - environment?: Environment + @Field(() => EExternalEndpointEnvironment, { nullable: true }) + environment?: EExternalEndpointEnvironment } diff --git a/libs/api/domains/form-system/src/models/form.model.ts b/libs/api/domains/form-system/src/models/form.model.ts index ef2e825e5014..681a53ad74ec 100644 --- a/libs/api/domains/form-system/src/models/form.model.ts +++ b/libs/api/domains/form-system/src/models/form.model.ts @@ -1,11 +1,12 @@ import { Field, ID, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' -import { ApplicantType } from './applicantType.model' import { Group } from './group.model' import { Input } from './input.model' import { Step } from './step.model' import { Organization } from './organization.model' import { DocumentType } from './documentType.model' +import graphqlTypeJson from 'graphql-type-json' +import { FormApplicantType } from './formApplicantType.model' export type Dependencies = { [key: string]: string[] @@ -31,36 +32,36 @@ export class Form { @Field(() => Date, { nullable: true }) invalidationDate?: Date | null - @Field(() => Object, { nullable: true }) - dependencies?: Dependencies[] | null + @Field(() => graphqlTypeJson) + dependencies?: { [key: string]: string[] } | null - @Field(() => DocumentType, { nullable: true }) + @Field(() => [DocumentType], { nullable: 'itemsAndList' }) documentTypes?: DocumentType[] | null - @Field(() => [ApplicantType]) - formApplicantTypes?: ApplicantType[] | null + @Field(() => [FormApplicantType], { nullable: 'itemsAndList' }) + formApplicantTypes?: FormApplicantType[] | null @Field(() => LanguageType, { nullable: true }) completedMessage?: LanguageType - @Field(() => LanguageType, { nullable: true }) - isTranslated?: LanguageType + @Field() + isTranslated?: boolean - @Field(() => Boolean, { nullable: true }) + @Field() stopProgressOnValidatingStep?: boolean @Field(() => Number, { nullable: true }) applicationsDaysToRemove?: number - @Field(() => Step, { nullable: true }) + @Field(() => [Step], { nullable: 'itemsAndList' }) steps?: Step[] | null - @Field(() => Step, { nullable: true }) + @Field(() => [Step], { nullable: 'itemsAndList' }) stepsList?: Step[] | null - @Field(() => Group, { nullable: true }) + @Field(() => [Group], { nullable: 'itemsAndList' }) groupsList?: Group[] | null - @Field(() => Input, { nullable: true }) + @Field(() => [Input], { nullable: 'itemsAndList' }) inputsList?: Input[] | null } diff --git a/libs/api/domains/form-system/src/models/formApplicantType.model.ts b/libs/api/domains/form-system/src/models/formApplicantType.model.ts new file mode 100644 index 000000000000..9bee9bdc5727 --- /dev/null +++ b/libs/api/domains/form-system/src/models/formApplicantType.model.ts @@ -0,0 +1,18 @@ +import { ObjectType, Field } from "@nestjs/graphql"; +import { LanguageType } from "./global.model"; + + +@ObjectType('FormSystemFormApplicantType') +export class FormApplicantType { + @Field(() => Number, { nullable: true }) + formId?: number + + @Field(() => Number, { nullable: true }) + applicantTypeId?: number + + @Field(() => LanguageType, { nullable: true }) + name?: LanguageType + + @Field(() => String) + type?: string | null +} diff --git a/libs/api/domains/form-system/src/models/formListResponse.model.ts b/libs/api/domains/form-system/src/models/formListResponse.model.ts index d593ab42ae96..b293420430f0 100644 --- a/libs/api/domains/form-system/src/models/formListResponse.model.ts +++ b/libs/api/domains/form-system/src/models/formListResponse.model.ts @@ -3,6 +3,6 @@ import { Form } from "./form.model"; @ObjectType('FormSystemFormListResponse') export class FormListResponse { - @Field(() => [Form], { nullable: true }) + @Field(() => [Form], { nullable: 'itemsAndList' }) forms?: Form[] | null } diff --git a/libs/api/domains/form-system/src/models/formResponse.model.ts b/libs/api/domains/form-system/src/models/formResponse.model.ts index de9c294e955d..52705ec47fd5 100644 --- a/libs/api/domains/form-system/src/models/formResponse.model.ts +++ b/libs/api/domains/form-system/src/models/formResponse.model.ts @@ -4,22 +4,21 @@ import { DocumentType } from './documentType.model' import { Input } from './input.model' import { ApplicantType } from './applicantType.model' import { ListType } from './listType.model' -import { DocumentTypeDto } from '@island.is/clients/form-system' @ObjectType('FormSystemFormResponse') export class FormResponse { @Field(() => Form, { nullable: true }) form?: Form - @Field(() => [DocumentType]) + @Field(() => [DocumentType], { nullable: 'itemsAndList' }) documentTypes?: DocumentType[] | null - @Field(() => [Input]) + @Field(() => [Input], { nullable: 'itemsAndList' }) inputTypes?: Input[] | null - @Field(() => [ApplicantType]) + @Field(() => [ApplicantType], { nullable: 'itemsAndList' }) applicantTypes?: ApplicantType[] | null - @Field(() => [ListType]) + @Field(() => [ListType], { nullable: 'itemsAndList' }) listTypes?: ListType[] | null } diff --git a/libs/api/domains/form-system/src/models/group.model.ts b/libs/api/domains/form-system/src/models/group.model.ts index 85e6329a0404..9b26cf0aad9f 100644 --- a/libs/api/domains/form-system/src/models/group.model.ts +++ b/libs/api/domains/form-system/src/models/group.model.ts @@ -19,8 +19,8 @@ export class Group { @Field(() => Boolean, { nullable: true }) isHidden?: boolean - @Field(() => [Input], { nullable: true }) - inputs?: Input[] + @Field(() => [Input]) + inputs?: Input[] | null @Field(() => Number, { nullable: true }) stepId?: number @@ -32,31 +32,3 @@ export class Group { stepGuid?: string } -@ObjectType('FormSystemGroupCreation') -export class CreateGroup { - @Field(() => ID, { nullable: true }) - stepId?: number - - @Field(() => Number, { nullable: true }) - displayOrder?: number -} - -@ObjectType('FormSystemGroupUpdate') -export class UpdateGroup { - @Field(() => ID, { nullable: true }) - id?: number - - @Field(() => LanguageType, { nullable: true }) - name?: LanguageType - - @Field(() => String, { nullable: true }) - guid?: string - - @Field(() => Number, { nullable: true }) - displayOrder?: number - - @Field(() => Number, { nullable: true }) - multiSet?: number - -} - diff --git a/libs/api/domains/form-system/src/models/input.model.ts b/libs/api/domains/form-system/src/models/input.model.ts index 0281dfcbccc0..3e7a5f2d1c01 100644 --- a/libs/api/domains/form-system/src/models/input.model.ts +++ b/libs/api/domains/form-system/src/models/input.model.ts @@ -15,7 +15,7 @@ export class Input { @Field(() => LanguageType, { nullable: true }) description?: LanguageType - @Field(() => Boolean, { nullable: true }) + @Field() isRequired?: boolean @Field(() => Number, { nullable: true }) @@ -24,16 +24,16 @@ export class Input { @Field(() => Number, { nullable: true }) groupId?: number - @Field(() => Boolean, { nullable: true }) + @Field() isHidden?: boolean @Field(() => String, { nullable: true }) - type?: string + type?: string | null @Field(() => String, { nullable: true }) guid?: string - @Field(() => Boolean, { nullable: true }) + @Field() isPartOfMultiSet?: boolean @Field(() => String, { nullable: true }) @@ -46,41 +46,4 @@ export class Input { inputFields?: object } -@ObjectType('FormSystemInputCreation') -export class CreateInput { - @Field(() => Number, { nullable: true }) - groupId?: number - - @Field(() => Number, { nullable: true }) - displayOrder?: number -} - -@ObjectType('FormSystemInputUpdate') -export class UpdateInput { - @Field(() => ID, { nullable: true }) - id?: number - - @Field(() => LanguageType, { nullable: true }) - name?: LanguageType - - @Field(() => LanguageType, { nullable: true }) - description?: LanguageType - @Field(() => Boolean, { nullable: true }) - isRequired?: boolean - - @Field(() => Number, { nullable: true }) - displayOrder?: number - - @Field(() => Boolean, { nullable: true }) - isHidden?: boolean - - @Field(() => String, { nullable: true }) - type?: string - - @Field(() => InputSettings, { nullable: true }) - inputSettings?: InputSettings - - @Field(() => Boolean, { nullable: true }) - isPartOfMultiSet?: boolean -} diff --git a/libs/api/domains/form-system/src/models/listType.model.ts b/libs/api/domains/form-system/src/models/listType.model.ts index 058fb87ee990..5a751e549899 100644 --- a/libs/api/domains/form-system/src/models/listType.model.ts +++ b/libs/api/domains/form-system/src/models/listType.model.ts @@ -2,13 +2,13 @@ import { Field, ID, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; -ObjectType('FormSystemListType') +@ObjectType('FormSystemListType') export class ListType { @Field(() => ID, { nullable: true }) id?: number @Field(() => String, { nullable: true }) - type?: string + type?: string | null @Field(() => LanguageType, { nullable: true }) name?: LanguageType diff --git a/libs/api/domains/form-system/src/models/organization.model.ts b/libs/api/domains/form-system/src/models/organization.model.ts index 34209e1a2b9a..e29ff62f7c2e 100644 --- a/libs/api/domains/form-system/src/models/organization.model.ts +++ b/libs/api/domains/form-system/src/models/organization.model.ts @@ -18,30 +18,23 @@ export class Organization { @Field(() => String, { nullable: true }) nationalId?: string | null - @Field(() => [Input]) + @Field(() => [Input], { nullable: 'itemsAndList' }) inputTypes?: Input[] | null - @Field(() => [DocumentType]) + @Field(() => [DocumentType], { nullable: 'itemsAndList' }) documentTypes?: DocumentType[] | null - @Field(() => [ApplicantType]) + @Field(() => [ApplicantType], { nullable: true }) applicantTypes?: ApplicantType[] | null - @Field(() => [ListType]) + @Field(() => [ListType], { nullable: 'itemsAndList' }) listTypes?: ListType[] | null - @Field(() => [Form]) + @Field(() => [Form], { nullable: 'itemsAndList' }) forms?: Form[] | null - @Field(() => [ExternalEndpoints]) + @Field(() => [ExternalEndpoints], { nullable: 'itemsAndList' }) externalEndpoints?: ExternalEndpoints[] | null } -@ObjectType('FormSystemOrganizationCreation') -export class CreateOrganization { - @Field(() => LanguageType, { nullable: true }) - name?: LanguageType - @Field(() => String, { nullable: true }) - nationalId?: string -} diff --git a/libs/api/domains/form-system/src/models/services.model.ts b/libs/api/domains/form-system/src/models/services.model.ts index 87b0b008a97f..89fe7f21329a 100644 --- a/libs/api/domains/form-system/src/models/services.model.ts +++ b/libs/api/domains/form-system/src/models/services.model.ts @@ -7,6 +7,6 @@ export class List { @Field(() => String, { nullable: true }) listType?: string - @Field(() => [ListItem], { nullable: true }) + @Field(() => [ListItem], { nullable: 'itemsAndList' }) listi?: ListItem[] } diff --git a/libs/api/domains/form-system/src/models/step.model.ts b/libs/api/domains/form-system/src/models/step.model.ts index d3616a45db0c..0aa1587da5ce 100644 --- a/libs/api/domains/form-system/src/models/step.model.ts +++ b/libs/api/domains/form-system/src/models/step.model.ts @@ -17,7 +17,7 @@ export class Step { name?: LanguageType @Field(() => String, { nullable: true }) - type?: string + type?: string | null @Field(() => LanguageType, { nullable: true }) waitingText?: LanguageType @@ -31,36 +31,7 @@ export class Step { @Field(() => Boolean, { nullable: true }) isCompleted?: boolean - @Field(() => [Group], { nullable: true }) - groups?: Group[] + @Field(() => [Group], { nullable: 'itemsAndList' }) + groups?: Group[] | null } -@ObjectType('FormSystemStepCreation') -export class CreateStep { - @Field(() => Int, { nullable: true }) - formId?: number - - @Field(() => Int, { nullable: true }) - displayOrder?: number -} - -@ObjectType('FormSystemStepUpdate') -export class UpdateStep { - @Field(() => ID, { nullable: true }) - id?: number; - - @Field(() => LanguageType, { nullable: true }) - name?: LanguageType; - - @Field(() => String, { nullable: true }) - type?: string | null; - - @Field(() => Number, { nullable: true }) - displayOrder?: number; - - @Field(() => LanguageType, { nullable: true }) - waitingText?: LanguageType; - - @Field(() => Boolean, { nullable: true }) - callRuleset?: boolean; -} From 8a5e6375c467b51aa8d5d436b532d38b3c6e0c48 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 14 Mar 2024 12:39:16 +0000 Subject: [PATCH 023/129] Update import statements for LanguageTypeInput --- .../api/domains/form-system/src/dto/applicantType.input.ts | 2 +- .../src/dto/applicantTypeNameSuggestion.input.ts | 2 +- libs/api/domains/form-system/src/dto/documentType.input.ts | 2 +- libs/api/domains/form-system/src/dto/forms.input.ts | 2 +- libs/api/domains/form-system/src/dto/groups.input.ts | 2 +- .../api/domains/form-system/src/dto/inputSettings.input.ts | 2 +- libs/api/domains/form-system/src/dto/inputs.input.ts | 2 +- .../src/dto/{global.input.ts => language.input.ts} | 0 libs/api/domains/form-system/src/dto/listItem.input.ts | 2 +- libs/api/domains/form-system/src/dto/listType.input.ts | 2 +- libs/api/domains/form-system/src/dto/organization.input.ts | 2 +- libs/api/domains/form-system/src/dto/steps.input.ts | 2 +- .../admin/form-system/src/screens/Forms/CreateForm.graphql | 7 +++++++ .../admin/form-system/src/screens/Forms/Forms.loader.ts | 1 + 14 files changed, 19 insertions(+), 11 deletions(-) rename libs/api/domains/form-system/src/dto/{global.input.ts => language.input.ts} (100%) create mode 100644 libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql diff --git a/libs/api/domains/form-system/src/dto/applicantType.input.ts b/libs/api/domains/form-system/src/dto/applicantType.input.ts index b1c2d46c759d..f98807be8dc9 100644 --- a/libs/api/domains/form-system/src/dto/applicantType.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantType.input.ts @@ -1,5 +1,5 @@ import { Field, InputType } from "@nestjs/graphql"; -import { LanguageTypeInput } from "./global.input"; +import { LanguageTypeInput } from "./language.input"; import { ApplicantTypeNameSuggestionInput } from "./applicantTypeNameSuggestion.input"; diff --git a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts index 626bee98d348..2e7ce30c5610 100644 --- a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts @@ -1,5 +1,5 @@ import { InputType, Field } from "@nestjs/graphql" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" @InputType('FormSystemApplicantTypeNameSuggestionInput') export class ApplicantTypeNameSuggestionInput { diff --git a/libs/api/domains/form-system/src/dto/documentType.input.ts b/libs/api/domains/form-system/src/dto/documentType.input.ts index 742fd4a1aa5b..8fb308f1e23a 100644 --- a/libs/api/domains/form-system/src/dto/documentType.input.ts +++ b/libs/api/domains/form-system/src/dto/documentType.input.ts @@ -1,5 +1,5 @@ import { Field, ID, InputType } from "@nestjs/graphql" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" diff --git a/libs/api/domains/form-system/src/dto/forms.input.ts b/libs/api/domains/form-system/src/dto/forms.input.ts index 19d7971e995d..71e3686401c2 100644 --- a/libs/api/domains/form-system/src/dto/forms.input.ts +++ b/libs/api/domains/form-system/src/dto/forms.input.ts @@ -1,6 +1,6 @@ import { Field, ID, InputType, Int } from "@nestjs/graphql" import graphqlTypeJson from 'graphql-type-json' -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" import { InputInput } from "./inputs.input" import { GroupInput } from "./groups.input" import { StepInput } from "./steps.input" diff --git a/libs/api/domains/form-system/src/dto/groups.input.ts b/libs/api/domains/form-system/src/dto/groups.input.ts index cd7c6a72cd63..3e57d176c82f 100644 --- a/libs/api/domains/form-system/src/dto/groups.input.ts +++ b/libs/api/domains/form-system/src/dto/groups.input.ts @@ -1,5 +1,5 @@ import { Field, ID, InputType, Int } from "@nestjs/graphql" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" import { InputInput } from "./inputs.input" diff --git a/libs/api/domains/form-system/src/dto/inputSettings.input.ts b/libs/api/domains/form-system/src/dto/inputSettings.input.ts index 24388897481e..de2bb64dbfa5 100644 --- a/libs/api/domains/form-system/src/dto/inputSettings.input.ts +++ b/libs/api/domains/form-system/src/dto/inputSettings.input.ts @@ -1,5 +1,5 @@ import { InputType, Field } from "@nestjs/graphql" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" import { ListItemInput } from "./listItem.input" diff --git a/libs/api/domains/form-system/src/dto/inputs.input.ts b/libs/api/domains/form-system/src/dto/inputs.input.ts index 2427625733a7..76a79386e704 100644 --- a/libs/api/domains/form-system/src/dto/inputs.input.ts +++ b/libs/api/domains/form-system/src/dto/inputs.input.ts @@ -1,5 +1,5 @@ import { Field, ID, InputType, Int } from "@nestjs/graphql" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" import graphqlTypeJson from 'graphql-type-json' import { InputSettingsInput } from "./inputSettings.input" diff --git a/libs/api/domains/form-system/src/dto/global.input.ts b/libs/api/domains/form-system/src/dto/language.input.ts similarity index 100% rename from libs/api/domains/form-system/src/dto/global.input.ts rename to libs/api/domains/form-system/src/dto/language.input.ts diff --git a/libs/api/domains/form-system/src/dto/listItem.input.ts b/libs/api/domains/form-system/src/dto/listItem.input.ts index 382cb261c61f..5ea06da5abd2 100644 --- a/libs/api/domains/form-system/src/dto/listItem.input.ts +++ b/libs/api/domains/form-system/src/dto/listItem.input.ts @@ -1,5 +1,5 @@ import { InputType, Field } from "@nestjs/graphql" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" @InputType('FormSystemListItemInput') export class ListItemInput { diff --git a/libs/api/domains/form-system/src/dto/listType.input.ts b/libs/api/domains/form-system/src/dto/listType.input.ts index 837ee4373398..cb2ceda8672d 100644 --- a/libs/api/domains/form-system/src/dto/listType.input.ts +++ b/libs/api/domains/form-system/src/dto/listType.input.ts @@ -1,5 +1,5 @@ import { Field, ID, InputType } from "@nestjs/graphql" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" @InputType('FormSystemListTypeInput') export class ListTypeInput { diff --git a/libs/api/domains/form-system/src/dto/organization.input.ts b/libs/api/domains/form-system/src/dto/organization.input.ts index 17d0fa0a3613..e2a6a9c95d93 100644 --- a/libs/api/domains/form-system/src/dto/organization.input.ts +++ b/libs/api/domains/form-system/src/dto/organization.input.ts @@ -5,7 +5,7 @@ import { FormInput } from "./forms.input" import { ApplicantTypeInput } from "./applicantType.input" import { ListTypeInput } from "./listType.input" import { ExternalEndpointsInput } from "./externalEndpoints.input" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" @InputType('FormSystemOrganizationCreation') export class CreateOrganization { diff --git a/libs/api/domains/form-system/src/dto/steps.input.ts b/libs/api/domains/form-system/src/dto/steps.input.ts index 55fc3e9e02ea..0a29112d9237 100644 --- a/libs/api/domains/form-system/src/dto/steps.input.ts +++ b/libs/api/domains/form-system/src/dto/steps.input.ts @@ -1,5 +1,5 @@ import { Field, ID, InputType, Int } from "@nestjs/graphql" -import { LanguageTypeInput } from "./global.input" +import { LanguageTypeInput } from "./language.input" import { GroupInput } from "./groups.input" @InputType('FormSystemStepCreation') diff --git a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql new file mode 100644 index 000000000000..c97949bd52c6 --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql @@ -0,0 +1,7 @@ +mutation formSystemCreateForm( + $input: FormSystemCreateFormInput! +) { + formSystemCreateForm(input: $input) { + form +} +} diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts index 9dc83e89ca12..819ea04fe666 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts @@ -1,4 +1,5 @@ import { WrappedLoaderFn } from '@island.is/portals/core' +import { FormSystemGetFormsQuery } from './Forms.generated' export const formsLoader: WrappedLoaderFn = ({ client }) => { From 59ca682a5bfec28bf0b26f4f133fcdb3985d4d2c Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Tue, 19 Mar 2024 11:05:16 +0000 Subject: [PATCH 024/129] Update form system module and related files --- apps/portals/admin/src/lib/modules.ts | 2 + .../caseSubscription.resolver.ts | 6 +- .../src/dto/applicantType.input.ts | 10 +- .../dto/applicantTypeNameSuggestion.input.ts | 4 +- .../form-system/src/dto/documentType.input.ts | 4 +- .../src/dto/externalEndpoints.input.ts | 4 +- .../form-system/src/dto/forms.input.ts | 6 +- .../form-system/src/dto/groups.input.ts | 14 +- .../src/dto/inputSettings.input.ts | 14 +- .../form-system/src/dto/inputs.input.ts | 16 +- .../form-system/src/dto/listType.input.ts | 4 +- .../form-system/src/dto/organization.input.ts | 4 +- .../form-system/src/dto/steps.input.ts | 6 +- .../src/lib/forms/forms.resolver.ts | 5 +- .../src/lib/groups/groups.resolver.ts | 4 +- .../src/lib/inputs/inputs.resolver.ts | 4 +- .../organizations/organizations.resolver.ts | 4 +- .../src/lib/services/services.resolver.ts | 6 +- .../src/lib/steps/steps.resolver.ts | 4 +- .../src/models/applicantType.model.ts | 6 +- .../src/models/applicantTypeNameSuggestion.ts | 4 +- .../src/models/documentType.model.ts | 4 +- .../src/models/externalEndpoints.model.ts | 4 +- .../form-system/src/models/form.model.ts | 6 +- .../src/models/formApplicantType.model.ts | 6 +- .../form-system/src/models/group.model.ts | 6 +- .../form-system/src/models/input.model.ts | 8 +- .../form-system/src/models/listType.model.ts | 4 +- .../src/models/organization.model.ts | 4 +- .../form-system/src/models/step.model.ts | 4 +- .../src/components/TableRow/TableRow.tsx | 4 +- .../admin/form-system/src/lib/messages.ts | 8 +- libs/portals/admin/form-system/src/module.ts | 5 - libs/portals/admin/form-system/src/module.tsx | 32 ++++ .../form-system/src/screens/Form/Form.tsx | 137 ++++++++++++++++++ .../src/screens/Forms/CreateForm.graphql | 2 +- .../src/screens/Forms/Forms.graphql | 15 +- .../src/screens/Forms/Forms.loader.ts | 19 ++- .../screens/Forms/{index.tsx => Forms.tsx} | 39 ++--- 39 files changed, 323 insertions(+), 115 deletions(-) delete mode 100644 libs/portals/admin/form-system/src/module.ts create mode 100644 libs/portals/admin/form-system/src/module.tsx create mode 100644 libs/portals/admin/form-system/src/screens/Form/Form.tsx rename libs/portals/admin/form-system/src/screens/Forms/{index.tsx => Forms.tsx} (66%) diff --git a/apps/portals/admin/src/lib/modules.ts b/apps/portals/admin/src/lib/modules.ts index 08d8e5d28291..f3ec19c5a14a 100644 --- a/apps/portals/admin/src/lib/modules.ts +++ b/apps/portals/admin/src/lib/modules.ts @@ -9,6 +9,7 @@ import { idsAdminModule } from '@island.is/portals/admin/ids-admin' import { petitionModule } from '@island.is/portals/admin/petition' import { serviceDeskModule } from '@island.is/portals/admin/service-desk' import { signatureCollectionModule } from '@island.is/portals/admin/signature-collection' +import { formSystemModule } from '@island.is/form-system' /** * NOTE: @@ -28,4 +29,5 @@ export const modules: PortalModule[] = [ petitionModule, serviceDeskModule, signatureCollectionModule, + formSystemModule ] diff --git a/libs/api/domains/consultation-portal/src/lib/caseSubscription/caseSubscription.resolver.ts b/libs/api/domains/consultation-portal/src/lib/caseSubscription/caseSubscription.resolver.ts index e57767de9a17..cecd0a466aa4 100644 --- a/libs/api/domains/consultation-portal/src/lib/caseSubscription/caseSubscription.resolver.ts +++ b/libs/api/domains/consultation-portal/src/lib/caseSubscription/caseSubscription.resolver.ts @@ -25,9 +25,9 @@ import { Audit } from '@island.is/nest/audit' @FeatureFlag(Features.consultationPortalApplication) @Audit({ namespace: '@island.is/samradsgatt' }) export class CaseSubscriptionResolver { - constructor(private caseSubscriptionService: CaseSubscriptionService) {} + constructor(private caseSubscriptionService: CaseSubscriptionService) { } - @Mutation(() => Boolean!, { + @Mutation(() => Boolean, { nullable: true, name: 'consultationPortalDeleteSubscriptionType', }) @@ -52,7 +52,7 @@ export class CaseSubscriptionResolver { return this.caseSubscriptionService.getCaseSubscriptionType(user, input) } - @Mutation(() => Boolean!, { + @Mutation(() => Boolean, { nullable: true, name: 'consultationPortalPostSubscriptionType', }) diff --git a/libs/api/domains/form-system/src/dto/applicantType.input.ts b/libs/api/domains/form-system/src/dto/applicantType.input.ts index f98807be8dc9..10448a1ec726 100644 --- a/libs/api/domains/form-system/src/dto/applicantType.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantType.input.ts @@ -1,14 +1,14 @@ -import { Field, InputType } from "@nestjs/graphql"; +import { Field, InputType, Int } from "@nestjs/graphql"; import { LanguageTypeInput } from "./language.input"; import { ApplicantTypeNameSuggestionInput } from "./applicantTypeNameSuggestion.input"; @InputType('FormSystemApplicantTypeInput') export class ApplicantTypeInput { - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) applicantTypeId?: number @Field(() => LanguageTypeInput, { nullable: true }) @@ -26,10 +26,10 @@ export class ApplicantTypeInput { @InputType('FormSystemFormApplicantTypeInput') export class FormApplicantTypeInput { - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) formId?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) applicantTypeId?: number @Field(() => LanguageTypeInput, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts index 2e7ce30c5610..9d2c163327f9 100644 --- a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts @@ -1,4 +1,4 @@ -import { InputType, Field } from "@nestjs/graphql" +import { InputType, Field, Int } from "@nestjs/graphql" import { LanguageTypeInput } from "./language.input" @InputType('FormSystemApplicantTypeNameSuggestionInput') @@ -6,6 +6,6 @@ export class ApplicantTypeNameSuggestionInput { @Field(() => LanguageTypeInput, { nullable: true }) nameSuggestion?: LanguageTypeInput - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) applicantTypeId?: number } diff --git a/libs/api/domains/form-system/src/dto/documentType.input.ts b/libs/api/domains/form-system/src/dto/documentType.input.ts index 8fb308f1e23a..ed28232bb545 100644 --- a/libs/api/domains/form-system/src/dto/documentType.input.ts +++ b/libs/api/domains/form-system/src/dto/documentType.input.ts @@ -1,11 +1,11 @@ -import { Field, ID, InputType } from "@nestjs/graphql" +import { Field, Int, InputType } from "@nestjs/graphql" import { LanguageTypeInput } from "./language.input" @InputType('FormSystemDocumentTypeInput') export class DocumentTypeInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts b/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts index 34dd0c34381d..79a6c486d569 100644 --- a/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts +++ b/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts @@ -1,4 +1,4 @@ -import { Field, ID, InputType, registerEnumType } from '@nestjs/graphql' +import { Field, Int, InputType, registerEnumType } from '@nestjs/graphql' import { EExternalEndpointType, EExternalEndpointEnvironment } from '@island.is/clients/form-system' registerEnumType(EExternalEndpointType, { @@ -11,7 +11,7 @@ registerEnumType(EExternalEndpointEnvironment, { @InputType('FormSystemExternalEndpointsInput') export class ExternalEndpointsInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/forms.input.ts b/libs/api/domains/form-system/src/dto/forms.input.ts index 71e3686401c2..640cf6f9c211 100644 --- a/libs/api/domains/form-system/src/dto/forms.input.ts +++ b/libs/api/domains/form-system/src/dto/forms.input.ts @@ -1,4 +1,4 @@ -import { Field, ID, InputType, Int } from "@nestjs/graphql" +import { Field, InputType, Int } from "@nestjs/graphql" import graphqlTypeJson from 'graphql-type-json' import { LanguageTypeInput } from "./language.input" import { InputInput } from "./inputs.input" @@ -35,7 +35,7 @@ export class DeleteFormInput { @InputType('FormSystemFormInput') export class FormInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageTypeInput, { nullable: true }) @@ -71,7 +71,7 @@ export class FormInput { @Field() stopProgressOnValidatingStep?: boolean - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) applicationsDaysToRemove?: number @Field(() => [StepInput], { nullable: 'itemsAndList' }) diff --git a/libs/api/domains/form-system/src/dto/groups.input.ts b/libs/api/domains/form-system/src/dto/groups.input.ts index 3e57d176c82f..2158946c0811 100644 --- a/libs/api/domains/form-system/src/dto/groups.input.ts +++ b/libs/api/domains/form-system/src/dto/groups.input.ts @@ -1,11 +1,11 @@ -import { Field, ID, InputType, Int } from "@nestjs/graphql" +import { Field, InputType, Int } from "@nestjs/graphql" import { LanguageTypeInput } from "./language.input" import { InputInput } from "./inputs.input" @InputType('FormSystemGroupCreation') export class CreateGroup { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) stepId?: number @Field(() => Number, { nullable: true }) @@ -14,7 +14,7 @@ export class CreateGroup { @InputType('FormSystemGroupUpdate') export class UpdateGroup { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageTypeInput, { nullable: true }) @@ -59,7 +59,7 @@ export class UpdateGroupInput { @InputType('FormSystemGroupInput') export class GroupInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageTypeInput, { nullable: true }) @@ -68,16 +68,16 @@ export class GroupInput { @Field(() => String, { nullable: true }) guid?: string - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) displayOrder?: number @Field(() => Boolean, { nullable: true }) isHidden?: boolean @Field(() => [InputInput]) - InputInputInputs?: InputInput[] | null + inputs?: InputInput[] | null - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) stepId?: number @Field(() => Number, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/inputSettings.input.ts b/libs/api/domains/form-system/src/dto/inputSettings.input.ts index de2bb64dbfa5..d35bf57506a0 100644 --- a/libs/api/domains/form-system/src/dto/inputSettings.input.ts +++ b/libs/api/domains/form-system/src/dto/inputSettings.input.ts @@ -1,4 +1,4 @@ -import { InputType, Field } from "@nestjs/graphql" +import { InputType, Field, Int, Float } from "@nestjs/graphql" import { LanguageTypeInput } from "./language.input" import { ListItemInput } from "./listItem.input" @@ -26,28 +26,28 @@ export class InputSettingsInput { @Field(() => [String], { nullable: true }) types?: string[] - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) maxSize?: number @Field(() => Boolean, { nullable: true }) isMulti?: boolean - @Field(() => Number, { nullable: true }) + @Field(() => Float, { nullable: true }) amount?: number @Field(() => String, { nullable: true }) header?: string - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) maxLength?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) minLength?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) min?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) max?: number @Field(() => [ListItemInput], { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/inputs.input.ts b/libs/api/domains/form-system/src/dto/inputs.input.ts index 76a79386e704..d582fca058d5 100644 --- a/libs/api/domains/form-system/src/dto/inputs.input.ts +++ b/libs/api/domains/form-system/src/dto/inputs.input.ts @@ -1,20 +1,20 @@ -import { Field, ID, InputType, Int } from "@nestjs/graphql" +import { Field, InputType, Int } from "@nestjs/graphql" import { LanguageTypeInput } from "./language.input" import graphqlTypeJson from 'graphql-type-json' import { InputSettingsInput } from "./inputSettings.input" @InputType('FormSystemInputCreation') export class CreateInput { - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) groupId?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) displayOrder?: number } @InputType('FormSystemInputUpdate') export class UpdateInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageTypeInput, { nullable: true }) @@ -26,7 +26,7 @@ export class UpdateInput { @Field() isRequired?: boolean - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) displayOrder?: number @Field() @@ -73,7 +73,7 @@ export class UpdateInputInput { @InputType('FormSystemInputInput') export class InputInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageTypeInput, { nullable: true }) @@ -85,10 +85,10 @@ export class InputInput { @Field() isRequired?: boolean - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) displayOrder?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) groupId?: number @Field() diff --git a/libs/api/domains/form-system/src/dto/listType.input.ts b/libs/api/domains/form-system/src/dto/listType.input.ts index cb2ceda8672d..9f1aff48b853 100644 --- a/libs/api/domains/form-system/src/dto/listType.input.ts +++ b/libs/api/domains/form-system/src/dto/listType.input.ts @@ -1,9 +1,9 @@ -import { Field, ID, InputType } from "@nestjs/graphql" +import { Field, Int, InputType } from "@nestjs/graphql" import { LanguageTypeInput } from "./language.input" @InputType('FormSystemListTypeInput') export class ListTypeInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/organization.input.ts b/libs/api/domains/form-system/src/dto/organization.input.ts index e2a6a9c95d93..c8ed7c23be1a 100644 --- a/libs/api/domains/form-system/src/dto/organization.input.ts +++ b/libs/api/domains/form-system/src/dto/organization.input.ts @@ -1,4 +1,4 @@ -import { Field, ID, InputType } from "@nestjs/graphql" +import { Field, Int, InputType } from "@nestjs/graphql" import { InputInput } from "./inputs.input" import { DocumentTypeInput } from "./documentType.input" import { FormInput } from "./forms.input" @@ -27,7 +27,7 @@ export class CreateOrganizationInput { @InputType('FormSystemOrganizationInput') export class OrganizationInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageTypeInput, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/steps.input.ts b/libs/api/domains/form-system/src/dto/steps.input.ts index 0a29112d9237..0a207b29a231 100644 --- a/libs/api/domains/form-system/src/dto/steps.input.ts +++ b/libs/api/domains/form-system/src/dto/steps.input.ts @@ -1,4 +1,4 @@ -import { Field, ID, InputType, Int } from "@nestjs/graphql" +import { Field, InputType, Int } from "@nestjs/graphql" import { LanguageTypeInput } from "./language.input" import { GroupInput } from "./groups.input" @@ -13,7 +13,7 @@ export class CreateStep { @InputType('FormSystemStepUpdate') export class UpdateStep { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageTypeInput, { nullable: true }) @@ -61,7 +61,7 @@ export class UpdateStepInput { @InputType('FormSystemStepInput') export class StepInput { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index e434f349fb97..05902b4e7fb5 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -2,12 +2,15 @@ import { Args, Mutation, Query, Resolver } from "@nestjs/graphql" import { FormsService } from "./forms.service" import { FormResponse } from "../../models/formResponse.model" import { CreateFormInput, GetFormInput, GetFormsInput, UpdateFormInput, DeleteFormInput } from "../../dto/forms.input" -import { CurrentUser, type User } from '@island.is/auth-nest-tools' +import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' import { FormListResponse } from "../../models/formListResponse.model" import { Audit } from '@island.is/nest/audit' +import { UseGuards } from "@nestjs/common" + @Resolver() +@UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class FormsResolver { constructor(private readonly formsService: FormsService) { } diff --git a/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts b/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts index 7c0e260d2591..a6c4262069f9 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts @@ -1,11 +1,13 @@ import { Query, Args, Resolver, Mutation } from "@nestjs/graphql"; -import { CurrentUser, type User } from '@island.is/auth-nest-tools' +import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' import { GroupsService } from "./groups.service"; import { GetGroupInput, CreateGroupInput, DeleteGroupInput, UpdateGroupInput } from "../../dto/groups.input"; import { Group } from "../../models/group.model"; import { Audit } from '@island.is/nest/audit' +import { UseGuards } from "@nestjs/common"; @Resolver() +@UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class GroupsResolver { constructor(private readonly groupsService: GroupsService) { } diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts index 8d38a4c5d4dd..6c51f3ade530 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts @@ -1,11 +1,13 @@ import { Query, Args, Resolver, Mutation } from "@nestjs/graphql"; -import { CurrentUser, type User } from '@island.is/auth-nest-tools' +import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' import { GetInputInput, CreateInputInput, DeleteInputInput, UpdateInputInput } from "../../dto/inputs.input"; import { Input } from "../../models/input.model"; import { InputsService } from "./inputs.service"; import { Audit } from '@island.is/nest/audit' +import { UseGuards } from "@nestjs/common"; @Resolver() +@UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class InputsResolver { constructor(private readonly inputsService: InputsService) { } diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts index 175b3054d611..7f09f5d93364 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts @@ -1,13 +1,15 @@ import { Args, Mutation, Resolver } from "@nestjs/graphql"; import { OrganizationsService } from "./organizations.services"; import { CreateOrganizationInput } from "../../dto/organization.input"; -import { CurrentUser, type User } from '@island.is/auth-nest-tools' +import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' import { Organization } from "../../models/organization.model"; import { Audit } from '@island.is/nest/audit' +import { UseGuards } from "@nestjs/common"; @Resolver() +@UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class OrganizationsResolver { constructor(private readonly organizationsService: OrganizationsService) { } diff --git a/libs/api/domains/form-system/src/lib/services/services.resolver.ts b/libs/api/domains/form-system/src/lib/services/services.resolver.ts index 19b508a4bbc6..8eb9648ff03b 100644 --- a/libs/api/domains/form-system/src/lib/services/services.resolver.ts +++ b/libs/api/domains/form-system/src/lib/services/services.resolver.ts @@ -1,12 +1,14 @@ -import { Query, Args, Resolver, Mutation } from "@nestjs/graphql"; -import { CurrentUser, type User } from '@island.is/auth-nest-tools' +import { Query, Args, Resolver } from "@nestjs/graphql"; +import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' import { FormSystemService } from "./services.service"; import { List } from "../../models/services.model"; import { GetPropertyInput } from "../../dto/services.input"; import { Audit } from '@island.is/nest/audit' +import { UseGuards } from "@nestjs/common"; @Resolver() +@UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class FormSystemServicesResolver { constructor(private readonly formSystemServices: FormSystemService) { } diff --git a/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts b/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts index 965a6497ec49..792fda128b73 100644 --- a/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts +++ b/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts @@ -1,12 +1,14 @@ import { Query, Args, Resolver, Mutation } from "@nestjs/graphql"; -import { CurrentUser, type User } from '@island.is/auth-nest-tools' +import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' import { CreateStepInput, DeleteStepInput, GetStepInput, UpdateStepInput } from "../../dto/steps.input"; import { Step } from "../../models/step.model"; import { StepsService } from "./steps.service"; import { Audit } from '@island.is/nest/audit' +import { UseGuards } from "@nestjs/common"; @Resolver() +@UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class StepsResolver { constructor(private readonly stepsService: StepsService) { } diff --git a/libs/api/domains/form-system/src/models/applicantType.model.ts b/libs/api/domains/form-system/src/models/applicantType.model.ts index 87e5f72bf0d6..9e94e068804a 100644 --- a/libs/api/domains/form-system/src/models/applicantType.model.ts +++ b/libs/api/domains/form-system/src/models/applicantType.model.ts @@ -1,13 +1,13 @@ -import { Field, ObjectType } from "@nestjs/graphql"; +import { Field, Int, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; import { ApplicantTypeNameSuggestion } from "./applicantTypeNameSuggestion"; @ObjectType('FormSystemApplicantType') export class ApplicantType { - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) applicantTypeId?: number @Field(() => LanguageType, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts b/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts index d94ac42ba8b6..2d7c4d2d195a 100644 --- a/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts +++ b/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts @@ -1,4 +1,4 @@ -import { Field, ObjectType } from "@nestjs/graphql"; +import { Field, Int, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; @@ -7,6 +7,6 @@ export class ApplicantTypeNameSuggestion { @Field(() => LanguageType, { nullable: true }) nameSuggestion?: LanguageType - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) applicantTypeId?: number } diff --git a/libs/api/domains/form-system/src/models/documentType.model.ts b/libs/api/domains/form-system/src/models/documentType.model.ts index 94fe5bdac467..8fa4a045c200 100644 --- a/libs/api/domains/form-system/src/models/documentType.model.ts +++ b/libs/api/domains/form-system/src/models/documentType.model.ts @@ -1,9 +1,9 @@ -import { Field, ID, ObjectType } from "@nestjs/graphql"; +import { Field, Int, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; @ObjectType('FormSystemDocumentType') export class DocumentType { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts index 7b9a5d185494..abbdf6065268 100644 --- a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts +++ b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts @@ -1,4 +1,4 @@ -import { Field, ID, ObjectType, registerEnumType } from '@nestjs/graphql' +import { Field, Int, ObjectType, registerEnumType } from '@nestjs/graphql' import { EExternalEndpointType, EExternalEndpointEnvironment } from '@island.is/clients/form-system' registerEnumType(EExternalEndpointType, { @@ -11,7 +11,7 @@ registerEnumType(EExternalEndpointEnvironment, { @ObjectType('FormSystemExternalEndpoints') export class ExternalEndpoints { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/form.model.ts b/libs/api/domains/form-system/src/models/form.model.ts index 681a53ad74ec..6a888c4bf0ac 100644 --- a/libs/api/domains/form-system/src/models/form.model.ts +++ b/libs/api/domains/form-system/src/models/form.model.ts @@ -1,4 +1,4 @@ -import { Field, ID, ObjectType } from '@nestjs/graphql' +import { Field, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' import { Group } from './group.model' import { Input } from './input.model' @@ -14,7 +14,7 @@ export type Dependencies = { @ObjectType('FormSystemForm') export class Form { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageType, { nullable: true }) @@ -50,7 +50,7 @@ export class Form { @Field() stopProgressOnValidatingStep?: boolean - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) applicationsDaysToRemove?: number @Field(() => [Step], { nullable: 'itemsAndList' }) diff --git a/libs/api/domains/form-system/src/models/formApplicantType.model.ts b/libs/api/domains/form-system/src/models/formApplicantType.model.ts index 9bee9bdc5727..8264b7f434d9 100644 --- a/libs/api/domains/form-system/src/models/formApplicantType.model.ts +++ b/libs/api/domains/form-system/src/models/formApplicantType.model.ts @@ -1,13 +1,13 @@ -import { ObjectType, Field } from "@nestjs/graphql"; +import { ObjectType, Field, Int } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; @ObjectType('FormSystemFormApplicantType') export class FormApplicantType { - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) formId?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) applicantTypeId?: number @Field(() => LanguageType, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/group.model.ts b/libs/api/domains/form-system/src/models/group.model.ts index 9b26cf0aad9f..8cd3a15ab84f 100644 --- a/libs/api/domains/form-system/src/models/group.model.ts +++ b/libs/api/domains/form-system/src/models/group.model.ts @@ -1,10 +1,10 @@ -import { Field, ID, ObjectType } from "@nestjs/graphql"; +import { Field, Int, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; import { Input } from "./input.model"; @ObjectType('FormSystemGroup') export class Group { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageType, { nullable: true }) @@ -22,7 +22,7 @@ export class Group { @Field(() => [Input]) inputs?: Input[] | null - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) stepId?: number @Field(() => Number, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/input.model.ts b/libs/api/domains/form-system/src/models/input.model.ts index 3e7a5f2d1c01..2d243765a0c5 100644 --- a/libs/api/domains/form-system/src/models/input.model.ts +++ b/libs/api/domains/form-system/src/models/input.model.ts @@ -1,4 +1,4 @@ -import { Field, ID, ObjectType } from '@nestjs/graphql' +import { Field, Int, ObjectType } from '@nestjs/graphql' import graphqlTypeJson from 'graphql-type-json' import { InputSettings } from './inputSettings.model' @@ -6,7 +6,7 @@ import { LanguageType } from './global.model' @ObjectType('FormSystemInput') export class Input { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageType, { nullable: true }) @@ -18,10 +18,10 @@ export class Input { @Field() isRequired?: boolean - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) displayOrder?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) groupId?: number @Field() diff --git a/libs/api/domains/form-system/src/models/listType.model.ts b/libs/api/domains/form-system/src/models/listType.model.ts index 5a751e549899..c89a60f9b02d 100644 --- a/libs/api/domains/form-system/src/models/listType.model.ts +++ b/libs/api/domains/form-system/src/models/listType.model.ts @@ -1,10 +1,10 @@ -import { Field, ID, ObjectType } from "@nestjs/graphql"; +import { Field, Int, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; @ObjectType('FormSystemListType') export class ListType { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/organization.model.ts b/libs/api/domains/form-system/src/models/organization.model.ts index e29ff62f7c2e..59f890027be3 100644 --- a/libs/api/domains/form-system/src/models/organization.model.ts +++ b/libs/api/domains/form-system/src/models/organization.model.ts @@ -1,4 +1,4 @@ -import { Field, ID, ObjectType } from '@nestjs/graphql' +import { Field, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' import { Input } from './input.model' import { ApplicantType } from './applicantType.model' @@ -9,7 +9,7 @@ import { Form } from './form.model' @ObjectType('FormSystemOrganization') export class Organization { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => LanguageType, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/step.model.ts b/libs/api/domains/form-system/src/models/step.model.ts index 0aa1587da5ce..d6ae6625d194 100644 --- a/libs/api/domains/form-system/src/models/step.model.ts +++ b/libs/api/domains/form-system/src/models/step.model.ts @@ -1,10 +1,10 @@ -import { Field, ID, Int, ObjectType } from "@nestjs/graphql"; +import { Field, Int, ObjectType } from "@nestjs/graphql"; import { LanguageType } from "./global.model"; import { Group } from "./group.model"; @ObjectType('FormSystemStep') export class Step { - @Field(() => ID, { nullable: true }) + @Field(() => Int, { nullable: true }) id?: number @Field(() => String, { nullable: true }) diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index d60595cb51bc..5775fc118431 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -20,11 +20,11 @@ import { import { FormSystemPaths } from '../../lib/paths' interface Props { - id?: number + id?: number | null name?: string created?: Date lastModified?: Date - org?: number + org?: number | null state?: number options?: string isHeader: boolean diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts index c48cf2156067..7db8d5c3d174 100644 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ b/libs/portals/admin/form-system/src/lib/messages.ts @@ -2,13 +2,13 @@ import { defineMessages } from "react-intl"; export const m = defineMessages({ - formSystemTitle: { - id: 'admin-portal.form-system:formSystemTitle', + formSystemIntro: { + id: 'admin-portal.form-system:formSystemIntro', defaultMessage: 'Umsóknakerfi', description: '' }, - formSystemIntro: { - id: 'admin-portal.form-system:intro', + formSystemTitle: { + id: 'admin-portal.form-system:Title', defaultMessage: 'Umsóknarsmiður fyrir stofnanir', description: '' } diff --git a/libs/portals/admin/form-system/src/module.ts b/libs/portals/admin/form-system/src/module.ts deleted file mode 100644 index f870e9037041..000000000000 --- a/libs/portals/admin/form-system/src/module.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PortalModule } from '@island.is/portals/core' -import { lazy } from 'react' -import { m } from './lib/messages' -import { FormSystemPaths } from './lib/paths' -import { AdminPortalScope } from '@island.is/auth/scopes' diff --git a/libs/portals/admin/form-system/src/module.tsx b/libs/portals/admin/form-system/src/module.tsx new file mode 100644 index 000000000000..4ffd77dfc62c --- /dev/null +++ b/libs/portals/admin/form-system/src/module.tsx @@ -0,0 +1,32 @@ +import { lazy } from 'react'; +import { AdminPortalScope } from '@island.is/auth/scopes' +import { m } from './lib/messages'; +import { PortalModule } from '@island.is/portals/core' +import { FormSystemPaths } from './lib/paths' +import { formsLoader } from './screens/Forms/Forms.loader'; + +const Forms = lazy(() => + import('./screens/Forms/Forms') +) + +const allowedScopes: string[] = [ + AdminPortalScope.formSystem, + AdminPortalScope.formSystemSuperUser +] + +export const formSystemModule: PortalModule = { + name: m.formSystemIntro, + layout: 'full', + enabled: ({ userInfo }) => + userInfo.scopes.some((scope) => allowedScopes.includes(scope)), + routes: (props) => { + return [ + { + name: m.formSystemTitle, + path: FormSystemPaths.FormSystemRoot, + element: , + loader: formsLoader(props) + } + ] + } +} diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx new file mode 100644 index 000000000000..0a975f0d4415 --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -0,0 +1,137 @@ +import { + useState, + useContext, + useReducer, + useRef, + useEffect, + FocusEvent, +} from 'react' +import FormBuilderContext from '../context/FormBuilderContext' +import LayoutContext from '../context/LayoutContext' +import { formReducer } from '../hooks/formReducer' +import { listsReducer } from '../hooks/listsReducer' +import { updateForm, updateItem } from '../services/apiService' +import { + IFormBuilder, + IFormBuilderContext, + IListItem, + ILists, + NavbarSelectStatus, +} from '../types/interfaces' +import { defaultStep } from '../utils/defaultStep' +import { baseSettingsStep } from '../utils/getBaseSettingsStep' +import { + GridRow as Row, + GridColumn as Column, + Box, +} from '@island.is/island-ui/core' +import Navbar from '../components/Navbar/Navbar' +import NavbarSelect from '../components/NavbarSelect/NavbarSelect' +import MainContent from '../components/MainContent/MainContent' + +type Props = { + form: IFormBuilder +} + +export default function Form({ form }: Props) { + const [focus, setOnFocus] = useState('') + const [inSettings, setInSettings] = useState(form.form.name.is === '') + const [selectStatus, setSelectStatus] = useState( + NavbarSelectStatus.OFF, + ) + const [activeListItem, setActiveListItem] = useState(null) + const { infoDispatch } = useContext(LayoutContext) + const initialNavbar: ILists = { + activeItem: inSettings + ? { type: 'Step', data: baseSettingsStep } + : { + type: 'Step', + data: + form?.form?.stepsList.find((s) => s.type === 'Innsláttur') || + defaultStep, + }, + steps: form.form.stepsList ?? [], + groups: form.form.groupsList ?? [], + inputs: form.form.inputsList ?? [], + } + const [formBuilder, formDispatch] = useReducer(formReducer, form) + const [lists, listsDispatch] = useReducer(listsReducer, initialNavbar) + const { activeItem } = lists + + const isMounted = useRef(false) + + useEffect(() => { + isMounted.current = true + infoDispatch({ + type: 'changeOrganization', + payload: { + value: formBuilder?.form?.organization.name.is, + }, + }) + infoDispatch({ + type: 'changeApplicationName', + payload: { + value: formBuilder.form.name.is, + }, + }) + }, [formBuilder, infoDispatch]) + + const context: IFormBuilderContext = { + formBuilder: formBuilder, + formDispatch: formDispatch, + lists: lists, + listsDispatch: listsDispatch, + formUpdate: formUpdate, + inSettings: inSettings, + setInSettings: setInSettings, + setSelectStatus: setSelectStatus, + selectStatus: selectStatus, + activeListItem: activeListItem, + setActiveListItem: setActiveListItem, + blur: blur, + onFocus: onFocus, + } + + if (formBuilder.form && activeItem) { + return ( + + + + {selectStatus !== NavbarSelectStatus.OFF ? ( + + ) : ( + + )} + + + + {activeItem?.data && } + + + + + ) + } + return <>Loading + + async function formUpdate() { + updateForm(formBuilder.form, lists.steps, lists.groups, lists.inputs) + } + + function blur(e: FocusEvent) { + if (e.target.value !== focus) { + setOnFocus('') + updateItem(activeItem.type, activeItem.data) + } + } + + function onFocus(value: string) { + setOnFocus(value) + } +} diff --git a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql index c97949bd52c6..496ad9a13fc7 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql +++ b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql @@ -3,5 +3,5 @@ mutation formSystemCreateForm( ) { formSystemCreateForm(input: $input) { form -} + } } diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.graphql b/libs/portals/admin/form-system/src/screens/Forms/Forms.graphql index 8bd38de16ee4..62f00817c0eb 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.graphql +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.graphql @@ -2,6 +2,19 @@ query formSystemGetForms( $input: FormSystemGetFormsInput! ) { formSystemGetForms(input: $input) { - forms + forms { + id + name { + is + en + } + created + lastChanged + organization { + id + } + isTranslated + } } } + diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts index 819ea04fe666..142a62ecd866 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts @@ -1,12 +1,25 @@ import { WrappedLoaderFn } from '@island.is/portals/core' -import { FormSystemGetFormsQuery } from './Forms.generated' +import { FormSystemGetFormsDocument, FormSystemGetFormsQuery } from './Forms.generated' +import { FormSystemForm } from '@island.is/api/schema' export const formsLoader: WrappedLoaderFn = ({ client }) => { - return async ()/*: Promise*/ => { + return async (): Promise> => { const { data, error } = await client.query({ - + query: FormSystemGetFormsDocument, + variables: { + input: { + organizationId: 1 + } + } }) + if (error) { + throw error + } + if (!data) { + throw new Error('No forms were found') + } + return data.formSystemGetForms.forms?.filter((form) => form !== null) as FormSystemForm[]; } } diff --git a/libs/portals/admin/form-system/src/screens/Forms/index.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx similarity index 66% rename from libs/portals/admin/form-system/src/screens/Forms/index.tsx rename to libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index 364c55ab831b..9ccf13011295 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/index.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -7,18 +7,21 @@ import { import { useNavigate } from 'react-router-dom' import { FormSystemPaths } from '../../lib/paths' import TableRow from '../../components/TableRow/TableRow' +import { useFormSystemGetFormsQuery } from './Forms.generated' + const Forms = () => { const navigate = useNavigate() - // const {data: formBuilder, loading} = useGetFormBuilderQuery({ - // variables: { - // input: 1 - // } - // }) - const formBuilder: any = { - forms: [] - } + const { data, loading, error } = useFormSystemGetFormsQuery({ + variables: { + input: { + organizationId: 1 + } + } + }) - if (navigate) { + const forms = data?.formSystemGetForms.forms + console.log(data) + if (!loading && !error) { return ( {/* Title and buttons */} @@ -49,18 +52,18 @@ const Forms = () => { - {formBuilder.forms && - formBuilder.forms?.map((f) => { + {forms && + forms?.map((f) => { return ( ) })} From af195c6b240671f7fc0ac38d71d8c736f227c6e5 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 20 Mar 2024 12:21:37 +0000 Subject: [PATCH 025/129] Update FormSystemClient.config and Forms component --- libs/clients/form-system/src/lib/FormSystemClient.config.ts | 2 +- libs/portals/admin/form-system/src/module.tsx | 4 ++-- libs/portals/admin/form-system/src/screens/Forms/Forms.tsx | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index 5f35df3842ee..19b9da808e20 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -10,7 +10,7 @@ export const FormSystemClientConfig = defineConfig({ schema, load(env) { return { - basePath: env.required('FORM_SYSTEM_API_BASE_PATH', 'http://localhost:4200'), + basePath: env.required('FORM_SYSTEM_API_BASE_PATH', 'https://profun.island.is/umsoknarkerfi'), } } }) diff --git a/libs/portals/admin/form-system/src/module.tsx b/libs/portals/admin/form-system/src/module.tsx index 4ffd77dfc62c..407fe3ce6a0c 100644 --- a/libs/portals/admin/form-system/src/module.tsx +++ b/libs/portals/admin/form-system/src/module.tsx @@ -19,13 +19,13 @@ export const formSystemModule: PortalModule = { layout: 'full', enabled: ({ userInfo }) => userInfo.scopes.some((scope) => allowedScopes.includes(scope)), - routes: (props) => { + routes: () => { return [ { name: m.formSystemTitle, path: FormSystemPaths.FormSystemRoot, element: , - loader: formsLoader(props) + // loader: formsLoader(props) } ] } diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index 9ccf13011295..9c3058c80702 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -70,7 +70,7 @@ const Forms = () => { ) } - return <> + return <>AAAAA } export default Forms From 1767ba633396eab8c31009f8f986359aa2637f48 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 8 Apr 2024 15:06:49 +0000 Subject: [PATCH 026/129] Saving progress --- .../form-system/src/dto/forms.input.ts | 10 +- .../form-system/src/dto/groups.input.ts | 4 +- .../form-system/src/dto/language.input.ts | 2 +- .../form-system/src/dto/steps.input.ts | 2 +- .../src/lib/forms/forms.resolver.ts | 8 +- .../src/lib/forms/forms.service.ts | 11 +- .../src/lib/groups/groups.resolver.ts | 10 +- .../src/lib/groups/groups.service.ts | 8 +- .../src/lib/inputs/inputs.resolver.ts | 11 +- .../src/lib/inputs/inputs.service.ts | 10 +- .../src/lib/steps/steps.resolver.ts | 10 +- .../src/lib/steps/steps.service.ts | 10 +- .../src/lib/utils/helperFunctions.ts | 4 +- .../form-system/src/models/form.model.ts | 10 +- .../form-system/src/models/group.model.ts | 6 +- .../form-system/src/models/input.model.ts | 6 +- .../form-system/src/models/step.model.ts | 2 +- .../MainContent/MainContent.css.tsx | 10 + .../components/MainContent/MainContent.tsx | 106 ++ .../components/BaseSettings/BaseSettings.tsx | 99 ++ .../components/InputContent/InputContent.tsx | 22 + .../InputContent/components/BaseInput.tsx | 162 +++ .../InputSettings/InputSettings.tsx | 0 .../components/MessageWithLinkSettings.tsx | 93 ++ .../components/Premises/Premises.tsx | 55 + .../components/Preview/Preveiw.tsx | 22 + .../Preview/components/MessageWithLink.tsx | 60 + .../src/components/Navbar/Navbar.tsx | 325 +++++ .../NavComponent/NavComponent.css.ts | 90 ++ .../components/NavComponent/NavComponent.tsx | 175 +++ .../NavComponent/components/NavButtons.tsx | 113 ++ .../components/NavbarTab/NavbarTab.css.tsx | 17 + .../Navbar/components/NavbarTab/NavbarTab.tsx | 60 + .../components/NavbarSelect/NavbarSelect.tsx | 65 + .../components/SelectNavComponent.tsx | 146 +++ .../components/selectNavComponent.css.ts | 90 ++ .../src/components/TableRow/TableRow.tsx | 7 +- .../form-system/src/context/ControlContext.ts | 60 + .../src/context/FormBuilderContext.tsx | 50 + .../form-system/src/context/LayoutContext.tsx | 14 + .../form-system/src/context/UserContext.tsx | 13 + .../admin/form-system/src/gql/Form.graphql | 1150 +++++++++++++++++ .../admin/form-system/src/gql/Group.graphql | 90 ++ .../admin/form-system/src/gql/Input.graphql | 77 ++ .../admin/form-system/src/gql/Step.graphql | 107 ++ .../form-system/src/hooks/controlReducer.ts | 370 ++++++ .../src/hooks/fileUploadReducer.ts | 43 + .../form-system/src/hooks/formReducer.ts | 199 +++ .../src/hooks/headerInfoReducer.ts | 29 + .../form-system/src/hooks/settingsReducer.ts | 18 + .../admin/form-system/src/hooks/useUser.ts | 40 + .../admin/form-system/src/lib/messages.ts | 4 +- .../admin/form-system/src/lib/navigation.ts | 2 +- .../form-system/src/lib/utils/interfaces.ts | 16 + .../src/lib/utils/updateActiveItem.ts | 85 ++ .../form-system/src/lib/utils/updateDnd.ts | 97 ++ .../form-system/src/lib/utils/updateForm.ts | 33 + libs/portals/admin/form-system/src/module.tsx | 13 +- .../src/screens/Form/Form.loader.ts | 39 + .../form-system/src/screens/Form/Form.tsx | 219 ++-- .../src/screens/Forms/CreateForm.graphql | 565 +++++++- .../src/screens/Forms/Forms.loader.ts | 9 +- .../form-system/src/screens/Forms/Forms.tsx | 23 +- .../form-system/src/services/apiService.tsx | 248 ++++ .../src/services/translationStation.tsx | 41 + .../form-system/src/services/zodValidation.ts | 193 +++ .../form-system/src/types/interfaces.tsx | 40 +- .../form-system/src/utils/defaultStep.tsx | 4 +- .../admin/form-system/src/utils/fileTypes.ts | 58 + libs/portals/admin/form-system/tsconfig.json | 3 +- package.json | 2 + yarn.lock | 17 +- 72 files changed, 5598 insertions(+), 214 deletions(-) create mode 100644 libs/portals/admin/form-system/src/components/MainContent/MainContent.css.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx create mode 100644 libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx create mode 100644 libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts create mode 100644 libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx create mode 100644 libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx create mode 100644 libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.css.tsx create mode 100644 libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx create mode 100644 libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx create mode 100644 libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx create mode 100644 libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts create mode 100644 libs/portals/admin/form-system/src/context/ControlContext.ts create mode 100644 libs/portals/admin/form-system/src/context/FormBuilderContext.tsx create mode 100644 libs/portals/admin/form-system/src/context/LayoutContext.tsx create mode 100644 libs/portals/admin/form-system/src/context/UserContext.tsx create mode 100644 libs/portals/admin/form-system/src/gql/Form.graphql create mode 100644 libs/portals/admin/form-system/src/gql/Group.graphql create mode 100644 libs/portals/admin/form-system/src/gql/Input.graphql create mode 100644 libs/portals/admin/form-system/src/gql/Step.graphql create mode 100644 libs/portals/admin/form-system/src/hooks/controlReducer.ts create mode 100644 libs/portals/admin/form-system/src/hooks/fileUploadReducer.ts create mode 100644 libs/portals/admin/form-system/src/hooks/formReducer.ts create mode 100644 libs/portals/admin/form-system/src/hooks/headerInfoReducer.ts create mode 100644 libs/portals/admin/form-system/src/hooks/settingsReducer.ts create mode 100644 libs/portals/admin/form-system/src/hooks/useUser.ts create mode 100644 libs/portals/admin/form-system/src/lib/utils/interfaces.ts create mode 100644 libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts create mode 100644 libs/portals/admin/form-system/src/lib/utils/updateDnd.ts create mode 100644 libs/portals/admin/form-system/src/lib/utils/updateForm.ts create mode 100644 libs/portals/admin/form-system/src/screens/Form/Form.loader.ts create mode 100644 libs/portals/admin/form-system/src/services/apiService.tsx create mode 100644 libs/portals/admin/form-system/src/services/translationStation.tsx create mode 100644 libs/portals/admin/form-system/src/services/zodValidation.ts create mode 100644 libs/portals/admin/form-system/src/utils/fileTypes.ts diff --git a/libs/api/domains/form-system/src/dto/forms.input.ts b/libs/api/domains/form-system/src/dto/forms.input.ts index 640cf6f9c211..ad1cf2ab265c 100644 --- a/libs/api/domains/form-system/src/dto/forms.input.ts +++ b/libs/api/domains/form-system/src/dto/forms.input.ts @@ -53,7 +53,7 @@ export class FormInput { @Field(() => Date, { nullable: true }) invalidationDate?: Date | null - @Field(() => graphqlTypeJson) + @Field(() => graphqlTypeJson, { nullable: true }) dependencies?: { [key: string]: string[] } | null @Field(() => [DocumentTypeInput], { nullable: 'itemsAndList' }) @@ -65,11 +65,11 @@ export class FormInput { @Field(() => LanguageTypeInput, { nullable: true }) completedMessage?: LanguageTypeInput - @Field() - isTranslated?: boolean + @Field(() => Boolean, { nullable: true }) + isTranslated?: boolean | null - @Field() - stopProgressOnValidatingStep?: boolean + @Field(() => Boolean, { nullable: true }) + stopProgressOnValidatingStep?: boolean | null @Field(() => Int, { nullable: true }) applicationsDaysToRemove?: number diff --git a/libs/api/domains/form-system/src/dto/groups.input.ts b/libs/api/domains/form-system/src/dto/groups.input.ts index 2158946c0811..1ff558b4f8ec 100644 --- a/libs/api/domains/form-system/src/dto/groups.input.ts +++ b/libs/api/domains/form-system/src/dto/groups.input.ts @@ -74,13 +74,13 @@ export class GroupInput { @Field(() => Boolean, { nullable: true }) isHidden?: boolean - @Field(() => [InputInput]) + @Field(() => [InputInput], { nullable: 'itemsAndList' }) inputs?: InputInput[] | null @Field(() => Int, { nullable: true }) stepId?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) multiSet?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/language.input.ts b/libs/api/domains/form-system/src/dto/language.input.ts index 5d7c1e8856d5..bd282bf0bc68 100644 --- a/libs/api/domains/form-system/src/dto/language.input.ts +++ b/libs/api/domains/form-system/src/dto/language.input.ts @@ -1,6 +1,6 @@ import { Field, InputType } from "@nestjs/graphql"; -@InputType('FormSystemGlobalInput') +@InputType('FormSystemLanguageTypeInput') export class LanguageTypeInput { @Field(() => String, { nullable: true }) is?: string | null diff --git a/libs/api/domains/form-system/src/dto/steps.input.ts b/libs/api/domains/form-system/src/dto/steps.input.ts index 0a207b29a231..7b9da446ce88 100644 --- a/libs/api/domains/form-system/src/dto/steps.input.ts +++ b/libs/api/domains/form-system/src/dto/steps.input.ts @@ -80,7 +80,7 @@ export class StepInput { waitingText?: LanguageTypeInput @Field(() => Boolean, { nullable: true }) - callRulest?: boolean + callRuleset?: boolean @Field(() => Boolean, { nullable: true }) isHidden?: boolean diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index 05902b4e7fb5..b6249a7a74cf 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -45,7 +45,8 @@ export class FormsResolver { return this.formsService.postForm(user, input) } - @Mutation(() => FormResponse, { + @Mutation(() => Boolean, { + nullable: true, name: 'formSystemUpdateForm' }) async updateForm( @@ -55,14 +56,15 @@ export class FormsResolver { return this.formsService.updateForm(user, input) } - @Mutation(() => FormResponse, { + @Mutation(() => Boolean, { + nullable: true, name: 'formSystemDeleteForm' }) async deleteForm( @Args('input', { type: () => DeleteFormInput }) input: DeleteFormInput, @CurrentUser() user: User ): Promise { - return this.formsService.deleteForm(user, input) + return await this.formsService.deleteForm(user, input) } diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 39e8cb57e0a6..ae0a03ced213 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -6,7 +6,7 @@ import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { CreateFormInput, DeleteFormInput, GetFormInput, GetFormsInput, UpdateFormInput } from "../../dto/forms.input" import { FormResponse } from "../../models/formResponse.model" import { FormListResponse } from "../../models/formListResponse.model" -import { GraphqlToRestInputSettings, RESTInputSettings, RestToGraphqlInputSettings } from "../utils/helperFunctions" +import { graphqlToRestInputSettings, RESTInputSettings, restToGraphqlInputSettings } from "../utils/helperFunctions" import { Form } from "../../models/form.model" import { Input } from "../../models/input.model" @@ -59,7 +59,7 @@ export class FormsService { inputsList: response.form?.inputsList?.map((input) => { return { ...input, - inputSettings: RestToGraphqlInputSettings(input.inputSettings as RESTInputSettings) + inputSettings: restToGraphqlInputSettings(input.inputSettings as RESTInputSettings) } }) } @@ -114,10 +114,11 @@ export class FormsService { async updateForm(auth: User, input: UpdateFormInput): Promise { const formattedForm = { ...input.form, + id: input.formId, inputsList: input.form?.inputsList?.map((input) => { return { ...input, - inputSettings: GraphqlToRestInputSettings(input.inputSettings) + inputSettings: graphqlToRestInputSettings(input.inputSettings) } }) } @@ -126,11 +127,11 @@ export class FormsService { formId: input.formId, formUpdateDto: formattedForm as FormUpdateDto, } - + console.log('request: ', request) const response = await this.formsApiWithAuth(auth) .apiFormsFormIdPut(request) .catch((e) => this.handle4xx(e, 'failed to update form')) - + console.log('response: ', response) if (!response || response instanceof ApolloError) { return void 0 } diff --git a/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts b/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts index a6c4262069f9..3d71b5e3aaff 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts @@ -32,23 +32,25 @@ export class GroupsResolver { return this.groupsService.postGroup(user, input) } - @Mutation(() => Group, { + @Mutation(() => Boolean, { + nullable: true, name: 'formSystemDeleteGroup' }) async deleteGroup( @Args('input', { type: () => DeleteGroupInput }) input: DeleteGroupInput, @CurrentUser() user: User ): Promise { - return this.groupsService.deleteGroup(user, input) + return await this.groupsService.deleteGroup(user, input) } - @Mutation(() => Group, { + @Mutation(() => Boolean, { + nullable: true, name: 'formSystemUpdateGroup' }) async updateGroup( @Args('input', { type: () => UpdateGroupInput }) input: UpdateGroupInput, @CurrentUser() user: User - ): Promise { + ): Promise { return this.groupsService.updateGroup(user, input) } } diff --git a/libs/api/domains/form-system/src/lib/groups/groups.service.ts b/libs/api/domains/form-system/src/lib/groups/groups.service.ts index f5cf98fe5ff2..91b0da53aae3 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.service.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.service.ts @@ -72,12 +72,12 @@ export class GroupsService { .catch((e) => this.handle4xx(e, 'failed to delete group')) if (!response || response instanceof ApolloError) { - return + return void 0 } - return response as void + return response } - async updateGroup(auth: User, input: UpdateGroupInput): Promise { + async updateGroup(auth: User, input: UpdateGroupInput): Promise { const request: ApiGroupsGroupIdPutRequest = { groupId: input.groupId, groupUpdateDto: input.groupUpdateDto as GroupUpdateDto @@ -88,7 +88,7 @@ export class GroupsService { .catch((e) => this.handle4xx(e, 'failed to update group')) if (!response || response instanceof ApolloError) { - return {} + return void 0 } return response } diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts index 6c51f3ade530..e45945ad0122 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts @@ -32,23 +32,26 @@ export class InputsResolver { return this.inputsService.postInput(user, input) } - @Mutation(() => Input, { + @Mutation(() => Boolean, { + nullable: true, name: 'formSystemDeleteInput' }) async deleteInput( @Args('input', { type: () => DeleteInputInput }) input: DeleteInputInput, @CurrentUser() user: User ): Promise { - return this.inputsService.deleteInput(user, input) + const response = await this.inputsService.deleteInput(user, input) + return response } - @Mutation(() => Input, { + @Mutation(() => Boolean, { + nullable: true, name: 'formSystemUpdateInput' }) async updateInput( @Args('input', { type: () => UpdateInputInput }) input: UpdateInputInput, @CurrentUser() user: User - ): Promise { + ): Promise { return this.inputsService.updateInput(user, input) } } diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts index 631a3086140f..8d298e87c607 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts @@ -72,12 +72,12 @@ export class InputsService { .catch((e) => this.handle4xx(e, 'failed to delete input')) if (!response || response instanceof ApolloError) { - return + return void 0 } - return response as void + return response } - async updateInput(auth: User, input: UpdateInputInput): Promise { + async updateInput(auth: User, input: UpdateInputInput): Promise { const request: ApiInputsInputIdPutRequest = { inputId: input.inputId, inputUpdateDto: input.inputUpdateDto as InputUpdateDto, @@ -88,8 +88,8 @@ export class InputsService { .catch((e) => this.handle4xx(e, 'failed to update input')) if (!response || response instanceof ApolloError) { - return {} + return void 0 } - return response as Input + return response } } diff --git a/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts b/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts index 792fda128b73..edfd08429eb7 100644 --- a/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts +++ b/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts @@ -33,23 +33,25 @@ export class StepsResolver { return this.stepsService.postStep(user, input) } - @Mutation(() => Step, { + @Mutation(() => Boolean, { + nullable: true, name: 'formSystemDeleteStep' }) async deleteStep( @Args('input', { type: () => DeleteStepInput }) input: DeleteStepInput, @CurrentUser() user: User ): Promise { - return this.stepsService.deleteStep(user, input) + return await this.stepsService.deleteStep(user, input) } - @Mutation(() => Step, { + @Mutation(() => Boolean, { + nullable: true, name: 'formSystemUpdateStep' }) async updateStep( @Args('input', { type: () => UpdateStepInput }) input: UpdateStepInput, @CurrentUser() user: User - ): Promise { + ): Promise { return this.stepsService.updateStep(user, input) } } diff --git a/libs/api/domains/form-system/src/lib/steps/steps.service.ts b/libs/api/domains/form-system/src/lib/steps/steps.service.ts index 3a8ac2af463f..6b46bc31740a 100644 --- a/libs/api/domains/form-system/src/lib/steps/steps.service.ts +++ b/libs/api/domains/form-system/src/lib/steps/steps.service.ts @@ -72,12 +72,12 @@ export class StepsService { .catch((e) => this.handle4xx(e, 'failed to delete step')) if (!response || response instanceof ApolloError) { - return + return void 0 } - return response as void + return response } - async updateStep(auth: User, input: UpdateStepInput): Promise { + async updateStep(auth: User, input: UpdateStepInput): Promise { const request: ApiStepsStepIdPutRequest = { stepId: input.stepId, stepUpdateDto: input.stepUpdateDto @@ -88,8 +88,8 @@ export class StepsService { .catch((e) => this.handle4xx(e, 'failed to update step')) if (!response || response instanceof ApolloError) { - return {} + return void 0 } - return response as Step + return response } } diff --git a/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts b/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts index 93d2cb5b7ade..a6dcd01c792a 100644 --- a/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts +++ b/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts @@ -47,7 +47,7 @@ interface GraphQLInputSettings { [key: string]: unknown } -export function RestToGraphqlInputSettings(input?: RESTInputSettings): GraphQLInputSettings { +export function restToGraphqlInputSettings(input?: RESTInputSettings): GraphQLInputSettings { return { hasInput: input?.erInnslattur, isList: input?.erListi, @@ -70,7 +70,7 @@ export function RestToGraphqlInputSettings(input?: RESTInputSettings): GraphQLIn } } -export function GraphqlToRestInputSettings(input?: InputSettings): RESTInputSettings { +export function graphqlToRestInputSettings(input?: InputSettings): RESTInputSettings { return { erInnslattur: input?.hasInput, erListi: input?.isList, diff --git a/libs/api/domains/form-system/src/models/form.model.ts b/libs/api/domains/form-system/src/models/form.model.ts index 6a888c4bf0ac..27b3c61c19f3 100644 --- a/libs/api/domains/form-system/src/models/form.model.ts +++ b/libs/api/domains/form-system/src/models/form.model.ts @@ -32,7 +32,7 @@ export class Form { @Field(() => Date, { nullable: true }) invalidationDate?: Date | null - @Field(() => graphqlTypeJson) + @Field(() => graphqlTypeJson, { nullable: true }) dependencies?: { [key: string]: string[] } | null @Field(() => [DocumentType], { nullable: 'itemsAndList' }) @@ -44,11 +44,11 @@ export class Form { @Field(() => LanguageType, { nullable: true }) completedMessage?: LanguageType - @Field() - isTranslated?: boolean + @Field(() => Boolean, { nullable: true }) + isTranslated?: boolean | null - @Field() - stopProgressOnValidatingStep?: boolean + @Field(() => Boolean, { nullable: true }) + stopProgressOnValidatingStep?: boolean | null @Field(() => Int, { nullable: true }) applicationsDaysToRemove?: number diff --git a/libs/api/domains/form-system/src/models/group.model.ts b/libs/api/domains/form-system/src/models/group.model.ts index 8cd3a15ab84f..e742b2bc7e63 100644 --- a/libs/api/domains/form-system/src/models/group.model.ts +++ b/libs/api/domains/form-system/src/models/group.model.ts @@ -13,19 +13,19 @@ export class Group { @Field(() => String, { nullable: true }) guid?: string - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) displayOrder?: number @Field(() => Boolean, { nullable: true }) isHidden?: boolean - @Field(() => [Input]) + @Field(() => [Input], { nullable: 'itemsAndList' }) inputs?: Input[] | null @Field(() => Int, { nullable: true }) stepId?: number - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) multiSet?: number @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/input.model.ts b/libs/api/domains/form-system/src/models/input.model.ts index 2d243765a0c5..a7d41e0f70cb 100644 --- a/libs/api/domains/form-system/src/models/input.model.ts +++ b/libs/api/domains/form-system/src/models/input.model.ts @@ -15,7 +15,7 @@ export class Input { @Field(() => LanguageType, { nullable: true }) description?: LanguageType - @Field() + @Field(() => Boolean, { nullable: true }) isRequired?: boolean @Field(() => Int, { nullable: true }) @@ -24,7 +24,7 @@ export class Input { @Field(() => Int, { nullable: true }) groupId?: number - @Field() + @Field(() => Boolean, { nullable: true }) isHidden?: boolean @Field(() => String, { nullable: true }) @@ -33,7 +33,7 @@ export class Input { @Field(() => String, { nullable: true }) guid?: string - @Field() + @Field(() => Boolean, { nullable: true }) isPartOfMultiSet?: boolean @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/step.model.ts b/libs/api/domains/form-system/src/models/step.model.ts index d6ae6625d194..078b28382eb7 100644 --- a/libs/api/domains/form-system/src/models/step.model.ts +++ b/libs/api/domains/form-system/src/models/step.model.ts @@ -23,7 +23,7 @@ export class Step { waitingText?: LanguageType @Field(() => Boolean, { nullable: true }) - callRulest?: boolean + callRuleset?: boolean @Field(() => Boolean, { nullable: true }) isHidden?: boolean diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.css.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.css.tsx new file mode 100644 index 000000000000..876de2545582 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.css.tsx @@ -0,0 +1,10 @@ +import { style } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +export const mainContent = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + width: '100%', + height: '100%', + marginTop: '50px', +}) diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx new file mode 100644 index 000000000000..eb0930a10b0c --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -0,0 +1,106 @@ +import { + Box, + Input, + Stack, + GridRow as Row, + GridColumn as Column, + Button, + Checkbox, +} from '@island.is/island-ui/core' +import { useContext, useState } from 'react' +import ControlContext from '../../context/ControlContext' +import { FormSystemGroup, FormSystemStep } from '@island.is/api/schema' +import BaseSettings from './components/BaseSettings/BaseSettings' +import Premises from './components/Premises/Premises' +import InputContent from './components/InputContent/InputContent' + +export default function MainContent() { + const { control, controlDispatch, updateActiveItem, setFocus, focus } = useContext(ControlContext) + const { activeItem, form, } = control + const [openPreview, setOpenPreview] = useState(false) + + + + return ( + + + {activeItem.type === 'Input' ? () + : activeItem.type === 'Step' && + (activeItem.data as FormSystemStep).type === 'BaseSetting' ? () + : activeItem.type === 'Step' && + (activeItem.data as FormSystemStep).type === 'Forsendur' ? () + : + < Stack space={2}> + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'en', + newValue: e.target.value, + }, + + })} + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + {activeItem.type === 'Group' && ( + + + + // listsDispatch({ + // type: 'setMultiSet', + // payload: { + // checked: e.target.checked, + // }, + // }) + // } + /> + + + )} + + + + + + + } + + ) +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx new file mode 100644 index 000000000000..73a4769de037 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -0,0 +1,99 @@ + +import { + Stack, + GridRow as Row, + GridColumn as Column, + Input, + DatePicker, + Checkbox, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import ControlContext from '../../../../context/ControlContext' + +export const BaseSettings = () => { + const { control, controlDispatch, setFocus, focus, formSettingsUpdate } = useContext(ControlContext) + const { form } = control + console.log('BaseSettings form', form) + return ( + + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && formSettingsUpdate()} + onChange={(e) => controlDispatch({ type: 'CHANGE_FORM_NAME', payload: { lang: 'is', newValue: e.target.value } })} + /> + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && formSettingsUpdate()} + onChange={(e) => controlDispatch({ type: 'CHANGE_FORM_NAME', payload: { lang: 'en', newValue: e.target.value } })} + /> + + + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && formSettingsUpdate()} + onChange={(e) => controlDispatch({ type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE', payload: { value: parseInt(e.target.value) } })} + /> + + + + + { + controlDispatch({ type: 'CHANGE_INVALIDATION_DATE', payload: { value: e } }) + }} + handleCloseCalendar={() => formSettingsUpdate()} + /> + + + + + { + console.log('stopProgressOnValidatingStep', e.target.checked) + formSettingsUpdate({ ...form, stopProgressOnValidatingStep: e.target.checked }) + }} + + /> + + + + ) +} + +export default BaseSettings diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx new file mode 100644 index 000000000000..71bb0bea6e35 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx @@ -0,0 +1,22 @@ +import { useContext } from "react" +import ControlContext from "../../../../context/ControlContext" +import { Stack } from "@island.is/island-ui/core" +import BaseInput from "./components/BaseInput" +import Preview from "../Preview/Preveiw" +import { FormSystemInput } from "@island.is/api/schema" + + + +const InputContent = () => { + const { control, selectStatus, setSelectStatus } = useContext(ControlContext) + const currentItem = control.activeItem.data as FormSystemInput + return ( + + + + + + ) +} + +export default InputContent diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx new file mode 100644 index 000000000000..9035f0f3bcbd --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx @@ -0,0 +1,162 @@ +import { useContext } from "react" +import ControlContext from "../../../../../context/ControlContext" +import { FormSystemInput } from "@island.is/api/schema" +import { + Stack, + GridRow as Row, + GridColumn as Column, + Select, + Option, + Input, + Checkbox +} from "@island.is/island-ui/core" +import { SingleValue } from "react-select" + + +const BaseInput = () => { + const { control, controlDispatch, setFocus, focus, inputTypes, updateActiveItem } = useContext(ControlContext) + const { activeItem } = control + const currentItem = activeItem.data as FormSystemInput + + const sortedInputTypes = inputTypes?.map(i => ({ + label: i?.type ?? '', + value: i?.type ?? '', + })).sort((a, b) => (a?.label ?? '').localeCompare(b?.label ?? '')) + + const defaultOption = + currentItem.type === '' + ? null + : sortedInputTypes?.find((o) => o.value === currentItem.type) + + return ( + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'is', + newValue: e.target.value, + }, + })} + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + {/* Name en */} + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'en', + newValue: e.target.value, + }, + })} + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + {/* Description */} + {['Textalýsing'].includes(currentItem?.type ?? '') && ( + <> + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onChange={(e) => controlDispatch({ + type: 'CHANGE_DESCRIPTION', + payload: { + lang: 'is', + newValue: e.target.value, + }, + })} + /> + + + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onChange={(e) => controlDispatch({ + type: 'CHANGE_DESCRIPTION', + payload: { + lang: 'en', + newValue: e.target.value, + }, + })} + /> + + + + )} + + {/* Required checkbox */} + + + controlDispatch({ + type: 'CHANGE_IS_REQUIRED', + payload: { + update: updateActiveItem, + } + }) + } + /> + + + + ) +} + +export default BaseInput diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx new file mode 100644 index 000000000000..218d1b85247d --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx @@ -0,0 +1,93 @@ +import { useContext } from "react" +import ControlContext from "../../../../../../../context/ControlContext" +import { + GridRow as Row, + GridColumn as Column, + Input, + Checkbox, + Stack, +} from '@island.is/island-ui/core' +import { FormSystemInput } from "@island.is/api/schema" + +const MessageWithLinkSettings = () => { + const { control, controlDispatch, setFocus, updateActiveItem } = useContext(ControlContext) + const currentItem = control.activeItem.data as FormSystemInput + const { inputSettings } = currentItem + return ( + + + + + + + {inputSettings !== undefined && ( + inputSettings?.hasLink && ( + + + + { + listsDispatch({ + type: 'setMessageWithLinkSettings', + payload: { + property: 'hnapptexti', + lang: 'is', + value: e.target.value, + }, + }) + }} + /> + + + { + listsDispatch({ + type: 'setMessageWithLinkSettings', + payload: { + property: 'hnapptexti', + lang: 'en', + value: e.target.value, + }, + }) + }} + /> + + + + + + listsDispatch({ + type: 'setMessageWithLinkSettings', + payload: { + property: 'url', + value: e.target.value, + }, + }) + } + /> + + + + ) + )} + + ) +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx new file mode 100644 index 000000000000..907bf7291d67 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -0,0 +1,55 @@ +import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' +import { useContext, useState } from 'react' +import ControlContext from '../../../../context/ControlContext' +import { FormSystemDocumentType } from '@island.is/api/schema' + + +const Premises = () => { + const { control, documentTypes, formSettingsUpdate } = useContext(ControlContext) + const [formDocumentTypes, setFormDocumentTypes] = useState(control.form?.documentTypes?.filter((d): d is FormSystemDocumentType => d !== null) ?? []) + + const handleCheckboxChange = (documentTypeId: number) => { + if (documentTypeId === -1) return + const newDocumentTypes = formDocumentTypes.some( + (f) => f?.id === documentTypeId, + ) + ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) + : ([ + ...formDocumentTypes, + documentTypes?.find((d) => d?.id === documentTypeId), + ].filter((d) => d !== undefined) as FormSystemDocumentType[]) + setFormDocumentTypes(newDocumentTypes) + formSettingsUpdate({ ...control.form, documentTypes: newDocumentTypes }) + } + + return ( + + + + Í þessu skrefi óskum við eftir samþykki fyrir því að upplýsingar um + hlutaðeigandi aðila verði sóttar af Mínum síðum. Að auki er hægt að + óska eftir heimild fyrir því að einhver af eftirfarandi vottorðum + verði sótt í viðeigandi vefþjónustur + + + + {documentTypes?.map((d, i) => { + return ( + f?.id === d?.id)} + onChange={() => handleCheckboxChange(d?.id ?? -1)} + /> + ) + })} + + ) +} + +export default Premises diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx new file mode 100644 index 000000000000..50668f66827e --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -0,0 +1,22 @@ +import { FormSystemInput } from "@island.is/api/schema" +import { Box } from "@island.is/island-ui/core" +import MessageWithLink from "./components/MessageWithLink" + +interface Props { + data: FormSystemInput +} + +const Preview = ({ data }: Props) => { + return ( + + {data.type === 'Textalýsing' && ( + + )} + + ) +} + +export default Preview diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx new file mode 100644 index 000000000000..f1662a756687 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx @@ -0,0 +1,60 @@ +import { FormSystemInput } from "@island.is/api/schema" +import { + Box, + Button, + Text +} from "@island.is/island-ui/core" + +interface Props { + data: FormSystemInput + +} + +const MessageWithLink = ({ data }: Props) => { + const formatUrl = (url: string): string => { + if (url.startsWith('http://')) { + url = url.replace('http://', 'https://') + } else if (!url.startsWith('https://')) { + url = 'https://' + url + } + return url + } + return ( + + + + {data?.name?.is} + + + {data?.description?.is} + + + {data.inputSettings?.hasLink && ( + + + + )} + + ) +} + +export default MessageWithLink diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx new file mode 100644 index 000000000000..dbae94dcdc2a --- /dev/null +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -0,0 +1,325 @@ +import { + useSensors, + useSensor, + PointerSensor, + DndContext, + DragOverlay, + UniqueIdentifier, + DragStartEvent, + DragOverEvent, + DataRef, + DragEndEvent, +} from '@dnd-kit/core' +import { SortableContext } from '@dnd-kit/sortable' +import { useContext, useMemo } from 'react' +import { createPortal } from 'react-dom' +import { Box, Button } from '@island.is/island-ui/core' +import { baseSettingsStep } from '../../utils/getBaseSettingsStep' +import NavbarTab from './components/NavbarTab/NavbarTab' +import NavComponent from './components/NavComponent/NavComponent' +import { FormSystemFormInput, FormSystemGroup, FormSystemInput, FormSystemStep, FormSystemUpdateFormInput, Maybe } from '@island.is/api/schema' +import ControlContext, { IControlContext } from '../../context/ControlContext' +import { useFormSystemCreateStepMutation } from '../../gql/Step.generated' +import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' +import { ItemType } from '../../lib/utils/interfaces' + +type ActionType = 'removeStep' | 'removeGroup' | 'removeInput' + +type DndAction = + | 'STEP_OVER_STEP' + | 'GROUP_OVER_STEP' + | 'GROUP_OVER_GROUP' + | 'INPUT_OVER_GROUP' + | 'INPUT_OVER_INPUT' + +export default function Navbar() { + const { + control, + controlDispatch, + setInSettings, + inSettings, + updateDnD + } = useContext(ControlContext) as IControlContext + + const { activeItem, form } = control + const { stepsList: steps, groupsList: groups, inputsList: inputs } = form + const stepsIds = useMemo(() => steps?.filter((s): s is FormSystemStep => s !== null && s !== undefined).map((s) => s?.guid as UniqueIdentifier), [steps]) + const groupsIds = useMemo(() => groups?.filter((g): g is FormSystemGroup => g !== null && g !== undefined).map((g) => g?.guid as UniqueIdentifier), [groups]) + const inputsIds = useMemo(() => inputs?.filter((i): i is FormSystemInput => i !== null && i !== undefined).map((i) => i?.guid as UniqueIdentifier), [inputs]) + + const sensors = useSensors( + useSensor(PointerSensor, { + activationConstraint: { + distance: 10, + }, + }), + ) + const [createStep, { data, loading, error }] = useFormSystemCreateStepMutation({ + variables: { + input: { + stepCreationDto: { + formId: form?.id as number, + displayOrder: steps?.length + } + } + } + }) + + const [updateForm, { data: formData, loading: formLoading, error: formError }] = useFormSystemUpdateFormMutation() + + const addStep = () => { + createStep() + if (!loading && !error && data) { + controlDispatch({ + type: 'ADD_STEP', + payload: { + step: data?.formSystemCreateStep as FormSystemStep + } + }) + } + } + + const focusComponent = (type: ItemType, id: UniqueIdentifier) => { + const data = type === "Step" + ? steps?.find((item: Maybe | undefined) => item?.guid === id) : type === "Group" + ? groups?.find((item: Maybe | undefined) => item?.guid === id) + : inputs?.find((item: Maybe | undefined) => item?.guid === id) + if (id === baseSettingsStep.guid) { + controlDispatch({ + type: 'SET_ACTIVE_ITEM', + payload: { + activeItem: { + type: 'Step', + data: baseSettingsStep, + } + }, + }) + } else if (data) { + controlDispatch({ + type: 'SET_ACTIVE_ITEM', + payload: { + activeItem: { + type: type, + data: data, + } + }, + }) + } + } + + const onDragStart = (event: DragStartEvent) => { + controlDispatch({ + type: 'SET_ACTIVE_ITEM', + payload: { + activeItem: { + type: event.active.data.current?.type, + data: event.active.data.current?.data ?? null, + } + } + }) + } + + const onDragOver = (event: DragOverEvent) => { + const { active, over } = event + + if (!over) return + + const activeId = active.id + const overId = over.id + + if (activeId === overId) return + + const getType = ( + data: DataRef<{ [x: string]: unknown }>, + targetType: ItemType, + ) => data?.current?.type === targetType + + const activeStep = getType(active.data, 'Step') + const activeGroup = getType(active.data, 'Group') + const activeInput = getType(active.data, 'Input') + const overStep = getType(over.data, 'Step') + const overGroup = getType(over.data, 'Group') + const overInput = getType(over.data, 'Input') + + const dispatchDragAction = (type: DndAction) => + controlDispatch({ type, payload: { activeId: activeId, overId: overId } }) + + //Dragging step + if (activeStep && overStep) { + dispatchDragAction('STEP_OVER_STEP') + } + + // // Dragging Group + if (activeGroup) { + if (overStep) { + dispatchDragAction('GROUP_OVER_STEP') + } + if (overGroup) { + dispatchDragAction('GROUP_OVER_GROUP') + } + } + + // // Dragging Input + if (activeInput) { + if (overGroup) { + dispatchDragAction('INPUT_OVER_GROUP') + } + if (overInput) { + dispatchDragAction('INPUT_OVER_INPUT') + } + } + } + + const onDragEnd = () => { + updateDnD(activeItem.type) + } + + if (inSettings) { + return ( + + + + + + + + {steps + ?.filter((s): s is FormSystemStep => s !== null && s !== undefined) + .filter((s) => s.type !== 'Innsláttur') + .map((s) => ( + + + + ))} + + + + + ) + } else if (activeItem) { + return ( + + + + + + + {steps + ?.filter((s): s is FormSystemStep => s !== null && s !== undefined) + .filter((s) => s.type === 'Innsláttur') + .map((s, i) => ( + + + + {groups + ?.filter((g): g is FormSystemGroup => g !== null && g !== undefined) + .filter((g) => g.stepGuid === s.guid) + .map((g) => ( + + + + + {inputs + ?.filter((i): i is FormSystemInput => i !== null && i !== undefined) + .filter((i) => i.groupGuid === g.guid) + .map((i) => ( + + ))} + + + ))} + + + ))} + + + {/* Only render client side */} + {typeof window === 'object' && + createPortal( + + {activeItem && ( + + )} + , + document.body, + )} + + + + + + ) + } + return null + +} diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts new file mode 100644 index 000000000000..ffee12eb1162 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts @@ -0,0 +1,90 @@ +import { style, styleVariants } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +const base = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + marginBottom: '2px', + height: '46px', + marginLeft: 'auto', + backgroundColor: theme.color.blue100, + lineHeight: '46px', + ':hover': { + fontWeight: 'bolder', + }, + cursor: 'grab', +}) + +export const step = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + marginBottom: '2px', + height: '46px', + width: '100%', +}) + +export const navComponent = styleVariants({ + step: [ + base, + { + width: '100%', + }, + ], + group: [ + base, + { + width: '90%', + }, + ], + input: [ + base, + { + width: '80%', + }, + ], +}) + +const baseBackground = style({ + width: '25px', + height: '44px', + borderRadius: `${theme.border.radius.standard} 0 0 ${theme.border.radius.standard}`, + textAlign: 'center', +}) + +export const navBackgroundActive = styleVariants({ + step: [ + baseBackground, + { + backgroundColor: theme.color.blue600, + lineHeight: '45px', + color: theme.color.white, + }, + ], + group: [ + baseBackground, + { + backgroundColor: theme.color.roseTinted400, + }, + ], + input: [ + baseBackground, + { + backgroundColor: theme.color.purple400, + }, + ], +}) + +export const navBackgroundDefault = styleVariants({ + step: [ + baseBackground, + { + lineHeight: '45px', + }, + ], + group: [baseBackground, {}], + input: [baseBackground, {}], +}) + +export const customBackgroundDropdown = style({ + background: theme.color.blue100, +}) diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx new file mode 100644 index 000000000000..1cfac242be11 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx @@ -0,0 +1,175 @@ +import { useState } from 'react' +import { ItemType, IGroup, IInput, IStep } from '../../../../types/interfaces' +import { useSortable } from '@dnd-kit/sortable' +import { Box } from '@island.is/island-ui/core' +import cn from 'classnames' +import * as styles from './NavComponent.css' +import { UniqueIdentifier } from '@dnd-kit/core' +import NavButtons from './components/NavButtons' +import { FormSystemGroup, FormSystemInput, FormSystemStep } from '@island.is/api/schema' + +type Props = { + type: ItemType + data: FormSystemStep | FormSystemGroup | FormSystemInput + active: boolean + index?: number + focusComponent(type: ItemType, id: UniqueIdentifier): void +} + +export default function NavComponent({ + type, + data, + active, + index, + focusComponent, +}: Props) { + const [editMode] = useState(false) + + const truncateText = (text: string, maxLength: number) => { + return text.length > maxLength ? text.slice(0, maxLength) + '...' : text + } + + const truncateName = (name: string) => { + let maxLength; + + if (active) { + switch (type) { + case 'Step': + maxLength = 23; + break; + case 'Group': + maxLength = 16; + break; + case 'Input': + maxLength = 12; + break; + default: + maxLength = 26; + } + } else { + switch (type) { + case 'Step': + maxLength = 26; + break; + case 'Group': + maxLength = 19; + break; + case 'Input': + maxLength = 16; + break; + default: + maxLength = 26; + } + } + + return truncateText(name, maxLength); + } + + const { setNodeRef, attributes, listeners, isDragging } = useSortable({ + id: data.guid as UniqueIdentifier, + data: { + type: type, + data, + }, + disabled: editMode, + }) + + if (isDragging) { + return ( +
+
+
+ ) + } + + return ( + focusComponent(type, data.guid as UniqueIdentifier)} + > + {active ? ( + + + {index} + + + {truncateName(data?.name?.is as string)} + + + {!(type === 'Step' && (data as FormSystemStep).type !== 'Innsláttur') && ( + + )} + + + ) : ( + + + {index} + + + {truncateName(data?.name?.is as string)} + + + )} + + ) + + + + +} diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx new file mode 100644 index 000000000000..10663bf5b418 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx @@ -0,0 +1,113 @@ +import { Box, Icon } from '@island.is/island-ui/core' +import { useContext } from 'react' +import ControlContext from '../../../../../context/ControlContext' +import { FormSystemGroup, FormSystemInput } from '@island.is/api/schema' +import { useFormSystemCreateGroupMutation, useFormSystemDeleteGroupMutation } from '../../../../../gql/Group.generated' +import { useFormSystemCreateInputMutation, useFormSystemDeleteInputMutation } from '../../../../../gql/Input.generated' +import { useFormSystemDeleteStepMutation } from '../../../../../gql/Step.generated' + + +export default function NavButtons() { + const { control, controlDispatch, apolloClient } = useContext(ControlContext) + const { activeItem, form } = control + const { groupsList: groups, inputsList: inputs } = form + + const [addGroup, groupStatus] = useFormSystemCreateGroupMutation() + const [addInput, inputStatus] = useFormSystemCreateInputMutation() + const [removeStep, removeStepStatus] = useFormSystemDeleteStepMutation() + const [removeGroup, removeGroupStatus] = useFormSystemDeleteGroupMutation() + const [removeInput, removeInputStatus] = useFormSystemDeleteInputMutation() + + const addItem = async () => { + if (activeItem.type === 'Step') { + const newGroup = await addGroup({ + variables: { + input: { + groupCreationDto: { + stepId: activeItem?.data?.id, + displayOrder: groups?.length + } + } + } + }) + if (newGroup) { + controlDispatch({ type: 'ADD_GROUP', payload: { group: newGroup.data?.formSystemCreateGroup as FormSystemGroup } }) + } + } else if (activeItem.type === 'Group') { + const newInput = await addInput({ + variables: { + input: { + inputCreationDto: { + groupId: activeItem?.data?.id, + displayOrder: inputs?.length + } + } + } + }) + if (newInput) { + controlDispatch({ type: 'ADD_INPUT', payload: { input: newInput.data?.formSystemCreateInput as FormSystemInput } }) + } + } + } + + const remove = async () => { + const id = activeItem?.data?.id as number + if (activeItem.type === 'Step') { + await removeStep({ + variables: { + input: { + stepId: id + } + } + }) + if (!removeStepStatus.loading) { + controlDispatch({ type: 'REMOVE_STEP', payload: { stepId: id } }) + } + } else if (activeItem.type === 'Group') { + await removeGroup({ + variables: { + input: { + groupId: id + } + } + }) + if (!removeGroupStatus.loading) { + controlDispatch({ type: 'REMOVE_GROUP', payload: { groupId: id } }) + } + } else if (activeItem.type === 'Input') { + await removeInput({ + variables: { + input: { + inputId: id + } + } + }) + if (!removeInputStatus.loading) { + controlDispatch({ type: 'REMOVE_INPUT', payload: { inputId: id } }) + } + + } + } + + return ( + + {activeItem.type !== 'Input' && ( + + + + )} + + + + + ) + + +} diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.css.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.css.tsx new file mode 100644 index 000000000000..c6a1b1bc3068 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.css.tsx @@ -0,0 +1,17 @@ +import { style } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +export const selected = style({ + cursor: 'pointer', + fontWeight: 'bolder', + textDecoration: 'underline', + color: theme.color.blue400, +}) + +export const notSelected = style({ + cursor: 'pointer', + ':hover': { + fontWeight: 'bolder', + textDecoration: 'underline', + }, +}) diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx new file mode 100644 index 000000000000..f8084e4a89e2 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -0,0 +1,60 @@ +import { Box, Inline } from '@island.is/island-ui/core' +import cn from 'classnames' +import * as styles from './NavbarTab.css' +import { Dispatch, SetStateAction, useContext } from 'react' +import FormBuilderContext from '../../../../context/FormBuilderContext' +import { baseSettingsStep } from '../../../../utils/getBaseSettingsStep' +import ControlContext from '../../../../context/ControlContext' + + +export default function NavbarTab() { + const { control, controlDispatch, inSettings, setInSettings } = useContext(ControlContext) + const { stepsList: steps } = control.form + return ( + + + { + const step = steps?.find(s => s?.type === 'Innsláttur') + controlDispatch({ + type: 'SET_ACTIVE_ITEM', + payload: { + activeItem: { + type: 'Step', + data: step, + } + }, + }) + setInSettings(false) + }} + > + Skref + + { + controlDispatch({ + type: 'SET_ACTIVE_ITEM', + payload: { + activeItem: { + type: 'Step', + data: baseSettingsStep, + } + }, + }) + setInSettings(true) + }} + > + Grunnstillingar + + + + ) +} diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx new file mode 100644 index 000000000000..ab6e162945bc --- /dev/null +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx @@ -0,0 +1,65 @@ +// import { useContext } from 'react' +// import { Box, Text } from '@island.is/island-ui/core' +// import SelectNavComponent from './components/SelectNavComponent' +// import FormBuilderContext from '../../context/FormBuilderContext' +// import { NavbarSelectStatus } from '../../types/interfaces' +// import ControlContext from '../../context/ControlContext' +// import { FormSystemStep } from '@island.is/api/schema' + +// export default function NavbarSelect() { +// const { control } = useContext(ControlContext) +// const { activeItem, steps, groups, inputs } = control +// let selectable = false +// return ( +// +// +// Skref +// +// {steps +// ?.filter((s): s is FormSystemStep => s !== null && s !== undefined) +// .filter((s) => s.type === 'Innsláttur') +// .map((s) => ( +// +// +// {groups +// .filter((g) => g.stepGuid === s.guid) +// .map((g) => ( +// +// +// {inputs +// .filter((i) => i.groupGuid === g.guid) +// .map((i) => { +// if (activeItem.data.guid === i.guid) { +// if ( +// selectStatus !== NavbarSelectStatus.ON_WITHOUT_SELECT +// ) { +// selectable = true +// } +// } +// return ( +// +// ) +// })} +// +// ))} +// +// ))} +// +// ) +// } diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx new file mode 100644 index 000000000000..6076614ec4ba --- /dev/null +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx @@ -0,0 +1,146 @@ +// import cn from 'classnames' +// import * as styles from './selectNavComponent.css' +// import { Box, Checkbox } from '@island.is/island-ui/core' +// import { useContext } from 'react' +// import { +// ItemType, +// NavbarSelectStatus, +// } from '../../../types/interfaces' +// import FormBuilderContext from '../../../context/FormBuilderContext' +// import { FormSystemGroup, FormSystemInput, FormSystemStep } from '@island.is/api/schema' + +// type Props = { +// type: ItemType +// data: FormSystemStep | FormSystemGroup | FormSystemInput +// active: boolean +// selectable: boolean +// } + +// export default function SelectNavComponent({ +// type, +// data, +// active, +// selectable, +// }: Props) { +// const { formBuilder, formDispatch, lists, selectStatus, activeListItem } = +// useContext(FormBuilderContext) +// const { activeItem } = lists +// const { form } = formBuilder +// const activeGuid = +// selectStatus === NavbarSelectStatus.LIST_ITEM +// ? activeListItem?.guid ?? '' +// : activeItem.data.guid +// const connected = +// form.dependencies[activeGuid]?.includes(data.guid as string) || +// !form.dependencies +// return ( +// +// {active ? ( +// +// +// {/* Index */} +// +// +// {truncateName(data.name.is)} +// +// +// ) : ( +// +// +// {/* {index} */} +// +// +// {truncateName(data.name.is)} +// +// {selectable && ( +// +// { +// formDispatch({ +// type: 'addRemoveConnection', +// payload: { +// active: activeGuid, +// item: data.guid, +// }, +// }) +// }} +// /> +// +// )} +// +// )} +// +// ) + +// function truncateText(text: string, maxLength: number) { +// return text.length > maxLength ? text.slice(0, maxLength) + '...' : text +// } + +// function truncateName(name: string) { +// let maxLength: number + +// if (active) { +// switch (type) { +// case 'Step': +// maxLength = 23 +// break +// case 'Group': +// maxLength = 16 +// break +// case 'Input': +// maxLength = 12 +// break +// default: +// maxLength = 26 +// } +// } else { +// switch (type) { +// case 'Step': +// maxLength = 26 +// break +// case 'Group': +// maxLength = 19 +// break +// case 'Input': +// maxLength = 16 +// break +// default: +// maxLength = 26 +// } +// } + +// return truncateText(name, maxLength) +// } +// } diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts b/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts new file mode 100644 index 000000000000..8db4cbdbcc55 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts @@ -0,0 +1,90 @@ +import { style, styleVariants } from '@vanilla-extract/css' +import { theme } from '@island.is/island-ui/theme' + +const base = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + marginBottom: '2px', + height: '46px', + marginLeft: 'auto', + backgroundColor: theme.color.white, + lineHeight: '46px', + ':hover': { + fontWeight: 'bolder', + }, + cursor: 'grab', +}) + +export const step = style({ + border: `1px solid ${theme.border.color.blue200}`, + borderRadius: theme.border.radius.standard, + marginBottom: '2px', + height: '46px', + width: '100%', +}) + +export const navComponent = styleVariants({ + step: [ + base, + { + width: '100%', + }, + ], + group: [ + base, + { + width: '90%', + }, + ], + input: [ + base, + { + width: '80%', + }, + ], +}) + +const baseBackground = style({ + width: '25px', + height: '44px', + borderRadius: `${theme.border.radius.standard} 0 0 ${theme.border.radius.standard}`, + textAlign: 'center', +}) + +export const navBackgroundActive = styleVariants({ + step: [ + baseBackground, + { + backgroundColor: theme.color.blue600, + lineHeight: '45px', + color: theme.color.white, + }, + ], + group: [ + baseBackground, + { + backgroundColor: theme.color.roseTinted400, + }, + ], + input: [ + baseBackground, + { + backgroundColor: theme.color.purple400, + }, + ], +}) + +export const navBackgroundDefault = styleVariants({ + step: [ + baseBackground, + { + lineHeight: '45px', + }, + ], + group: [baseBackground, {}], + input: [baseBackground, {}], +}) + +export const customBackgroundDropdown = style({ + background: theme.color.blue100, +}) diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index 5775fc118431..9f64f486cfd4 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -101,7 +101,12 @@ const TableRow = ({ { title: 'Breyta', onClick: () => { - navigate(FormSystemPaths.Form.replace(':formId', String(id))) + navigate(FormSystemPaths.Form.replace(':formId', String(id)), + { + state: { + formId: id + } + }) }, }, { diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts new file mode 100644 index 000000000000..d9896f4f15f0 --- /dev/null +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -0,0 +1,60 @@ +import { Dispatch, createContext } from "react" +import { ControlAction, ControlState } from "../hooks/controlReducer" +import { ApolloClient, NormalizedCacheObject } from "@apollo/client" +import { Maybe } from "graphql/jsutils/Maybe" +import { FormSystemApplicantType, FormSystemDocumentType, FormSystemForm, FormSystemInput, FormSystemListType } from "@island.is/api/schema" +import { ActiveItem, ItemType, NavbarSelectStatus } from "../lib/utils/interfaces" + +export interface IControlContext { + control: ControlState + controlDispatch: Dispatch + apolloClient: ApolloClient + applicantTypes: Maybe[]> | undefined + documentTypes: Maybe[]> | undefined + inputTypes: Maybe[]> | undefined + listTypes: Maybe[]> | undefined + setInSettings: Dispatch + inSettings: boolean + updateActiveItem: (updatedActiveItem?: ActiveItem) => void + focus: string + setFocus: Dispatch + updateDnD: (type: ItemType) => void + formSettingsUpdate: (updatedForm?: FormSystemForm) => void + selectStatus: NavbarSelectStatus + setSelectStatus: Dispatch +} + +const ControlContext = createContext({ + control: {} as ControlState, + controlDispatch: function (_value: unknown): void { + throw new Error('Function not implemented.') + }, + apolloClient: {} as ApolloClient, + applicantTypes: [] as Maybe[]>, + documentTypes: [] as Maybe[]>, + inputTypes: [] as Maybe[]>, + listTypes: [] as Maybe[]>, + setInSettings: function (_value: boolean): void { + throw new Error('Function not implemented.') + }, + inSettings: false, + updateActiveItem: function (_updatedActiveItem?: ActiveItem): void { + throw new Error('Function not implemented.') + }, + focus: '', + setFocus: function (_value: string): void { + throw new Error('Function not implemented.') + }, + updateDnD: function (_type: ItemType): void { + throw new Error('Function not implemented.') + }, + formSettingsUpdate: function (_updatedForm?: FormSystemForm): void { + throw new Error('Function not implemented.') + }, + selectStatus: NavbarSelectStatus.OFF, + setSelectStatus: function (_value: NavbarSelectStatus): void { + throw new Error('Function not implemented.') + }, +}) + +export default ControlContext diff --git a/libs/portals/admin/form-system/src/context/FormBuilderContext.tsx b/libs/portals/admin/form-system/src/context/FormBuilderContext.tsx new file mode 100644 index 000000000000..0cef53037510 --- /dev/null +++ b/libs/portals/admin/form-system/src/context/FormBuilderContext.tsx @@ -0,0 +1,50 @@ +import { FocusEvent, SetStateAction, createContext } from 'react' +import { + ActiveItem, + IFormBuilder, + IFormBuilderContext, + IGroup, + IInput, + IListItem, + IStep, + NavbarSelectStatus, + ILists +} from '../types/interfaces' + +const FormBuilderContext = createContext({ + // formBuilder: {} as IFormBuilder, + // formDispatch: function (_value: unknown): void { + // throw new Error('Function not implemented.') + // }, + // lists: { + // activeItem: {} as ActiveItem, + // steps: [] as IStep[], + // groups: [] as IGroup[], + // inputs: [] as IInput[], + // }, + lists: {} as ILists, + formUpdate: async function (): Promise { + throw new Error('Function not implemented.') + }, + inSettings: false, + setInSettings: function (_value: SetStateAction): void { + throw new Error('Function not implemented.') + }, + setSelectStatus: function (_value: SetStateAction): void { + throw new Error('Function not implemented.') + }, + selectStatus: NavbarSelectStatus.OFF, + setActiveListItem: function (_value: SetStateAction): void { + throw new Error('Function not implemented.') + }, + blur: function ( + _e: FocusEvent, + ): void { + throw new Error('Function not implemented.') + }, + onFocus: function (_e: string): void { + throw new Error('Function not implemented.') + }, +}) + +export default FormBuilderContext diff --git a/libs/portals/admin/form-system/src/context/LayoutContext.tsx b/libs/portals/admin/form-system/src/context/LayoutContext.tsx new file mode 100644 index 000000000000..82bed301b7aa --- /dev/null +++ b/libs/portals/admin/form-system/src/context/LayoutContext.tsx @@ -0,0 +1,14 @@ +import { createContext } from 'react' +import { ILayoutContext } from '../types/interfaces' + +const LayoutContext = createContext({ + info: { + organization: '', + applicationName: '', + }, + infoDispatch: function (_value: unknown): void { + throw new Error('Function not implemented.') + }, +}) + +export default LayoutContext diff --git a/libs/portals/admin/form-system/src/context/UserContext.tsx b/libs/portals/admin/form-system/src/context/UserContext.tsx new file mode 100644 index 000000000000..b59d839d23b2 --- /dev/null +++ b/libs/portals/admin/form-system/src/context/UserContext.tsx @@ -0,0 +1,13 @@ +import { createContext } from "react"; +import { User } from "../types/interfaces"; + + +const UserContext = createContext({ + isAuthenticated: false, + setIsAuthenticated: (_: boolean) => undefined, + user: null as unknown as User, + setUser: (_: User) => undefined, + userLoading: false, +}) + +export default UserContext diff --git a/libs/portals/admin/form-system/src/gql/Form.graphql b/libs/portals/admin/form-system/src/gql/Form.graphql new file mode 100644 index 000000000000..2f67ba80eb9e --- /dev/null +++ b/libs/portals/admin/form-system/src/gql/Form.graphql @@ -0,0 +1,1150 @@ +mutation formSystemUpdateForm( + $input: FormSystemUpdateFormInput! +) { + formSystemUpdateForm(input: $input) +} + +query formSystemGetForm( + $input: FormSystemGetFormInput! +) { + formSystemGetForm(input: $input) { + form { + id + name { + is + en + } + applicationsDaysToRemove + completedMessage { + is + en + } + created + dependencies + documentTypes { + id + name { + is + en + } + description { + is + en + } + type + } + formApplicantTypes { + applicantTypeId + formId + name { + is + en + } + type + } + groupsList { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + inputsList { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + invalidationDate + isTranslated + lastChanged + organization { + applicantTypes { + applicantTypeId + description { + is + en + } + id + name { + is + en + } + nameSuggestion { + applicantTypeId + nameSuggestion { + is + en + } + } + type + } + documentTypes { + description { + is + en + } + id + name { + is + en + } + type + } + id + inputTypes { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + listTypes { + id + name { + is + en + } + description { + is + en + } + type + } + name { + is + en + } + nationalId + } + steps { + callRuleset + displayOrder + groups { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } + stepsList { + callRuleset + displayOrder + groups { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } + stopProgressOnValidatingStep + } + applicantTypes { + applicantTypeId + description { + is + en + } + id + name { + is + en + } + nameSuggestion { + applicantTypeId + nameSuggestion { + is + en + } + } + type + } + documentTypes { + description { + is + en + } + id + name { + is + en + } + type + } + inputTypes { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + } +} + + +mutation formSystemCreateForm( + $input: FormSystemCreateFormInput! +) { + formSystemCreateForm(input: $input) { + form { + id + name { + is + en + } + applicationsDaysToRemove + completedMessage { + is + en + } + created + dependencies + documentTypes { + id + name { + is + en + } + description { + is + en + } + type + } + formApplicantTypes { + applicantTypeId + formId + name { + is + en + } + type + } + groupsList { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + inputsList { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + invalidationDate + isTranslated + lastChanged + organization { + applicantTypes { + applicantTypeId + description { + is + en + } + id + name { + is + en + } + nameSuggestion { + applicantTypeId + nameSuggestion { + is + en + } + } + type + } + documentTypes { + description { + is + en + } + id + name { + is + en + } + type + } + id + inputTypes { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + listTypes { + id + name { + is + en + } + description { + is + en + } + type + } + name { + is + en + } + nationalId + } + steps { + callRuleset + displayOrder + groups { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } + stepsList { + callRuleset + displayOrder + groups { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } + stopProgressOnValidatingStep + } + applicantTypes { + applicantTypeId + description { + is + en + } + id + name { + is + en + } + nameSuggestion { + applicantTypeId + nameSuggestion { + is + en + } + } + type + } + documentTypes { + description { + is + en + } + id + name { + is + en + } + type + } + inputTypes { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + } +} + +mutation formSystemDeleteForm( + $input: FormSystemDeleteFormInput! +) { + formSystemDeleteForm(input: $input) +} diff --git a/libs/portals/admin/form-system/src/gql/Group.graphql b/libs/portals/admin/form-system/src/gql/Group.graphql new file mode 100644 index 000000000000..3574a586c703 --- /dev/null +++ b/libs/portals/admin/form-system/src/gql/Group.graphql @@ -0,0 +1,90 @@ +mutation formSystemCreateGroup( + $input: FormSystemCreateGroupInput! +) { + formSystemCreateGroup(input: $input) { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } +} + +mutation formSystemDeleteGroup( + $input: FormSystemDeleteGroupInput! +) { + formSystemDeleteGroup(input: $input) +} + +mutation formSystemUpdateGroup( + $input: FormSystemUpdateGroupInput! +) { + formSystemUpdateGroup(input: $input) +} diff --git a/libs/portals/admin/form-system/src/gql/Input.graphql b/libs/portals/admin/form-system/src/gql/Input.graphql new file mode 100644 index 000000000000..ea5b8a839529 --- /dev/null +++ b/libs/portals/admin/form-system/src/gql/Input.graphql @@ -0,0 +1,77 @@ +mutation formSystemCreateInput( + $input: FormSystemCreateInputInput! + ) { + formSystemCreateInput(input: $input) { + id + name { + is + en + } + description { + is + en + } + isRequired + displayOrder + groupId + isHidden + type + guid + isPartOfMultiSet + groupGuid + inputSettings { + isLarge + size + interval + hasLink + url + buttonText { + is + en + } + types + maxSize + isMulti + amount + header + maxLength + minLength + min + max + list { + guid + label { + is + en + } + description { + is + en + } + displayOrder + isSelected + value + } + type + name { + is + en + } + isList + hasInput + } + inputFields + } +} + +mutation formSystemDeleteInput( + $input: FormSystemDeleteInputInput! +) { + formSystemDeleteInput(input: $input) +} + +mutation formSystemUpdateInput( + $input: FormSystemUpdateInputInput! +) { + formSystemUpdateInput(input: $input) +} diff --git a/libs/portals/admin/form-system/src/gql/Step.graphql b/libs/portals/admin/form-system/src/gql/Step.graphql new file mode 100644 index 000000000000..29fe5c61ea09 --- /dev/null +++ b/libs/portals/admin/form-system/src/gql/Step.graphql @@ -0,0 +1,107 @@ +mutation formSystemCreateStep( + $input: FormSystemCreateStepInput! +) { + formSystemCreateStep(input: $input) { + callRuleset + displayOrder + groups { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } +} + +mutation formSystemDeleteStep( + $input: FormSystemDeleteStepInput! +) { + formSystemDeleteStep(input: $input) +} + +mutation formSystemUpdateStep( + $input: FormSystemUpdateStepInput! +) { + formSystemUpdateStep(input: $input) +} diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts new file mode 100644 index 000000000000..d94d3afecd61 --- /dev/null +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -0,0 +1,370 @@ +import { FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemInputSettings, FormSystemStep } from "@island.is/api/schema" +import { ActiveItem } from "../types/interfaces" +import { UniqueIdentifier } from "@dnd-kit/core" +import { arrayMove } from "@dnd-kit/sortable" + +type ActiveItemActions = + | { type: 'SET_ACTIVE_ITEM', payload: { activeItem: ActiveItem } } + +type GroupActions = + | { type: 'ADD_GROUP', payload: { group: FormSystemGroup } } + | { type: 'REMOVE_GROUP', payload: { groupId: number } } + +type InputActions = + | { type: 'ADD_INPUT', payload: { input: FormSystemInput } } + | { type: 'REMOVE_INPUT', payload: { inputId: number } } + | { type: 'CHANGE_INPUT_TYPE', payload: { newValue: string, inputSettings: FormSystemInputSettings, update: (updatedActiveItem?: ActiveItem) => void } } + | { type: 'CHANGE_DESCRIPTION', payload: { lang: 'en' | 'is', newValue: string } } + | { type: 'CHANGE_IS_REQUIRED', payload: { update: (updatedActiveItem?: ActiveItem) => void } } + + +type StepActions = + | { type: 'ADD_STEP', payload: { step: FormSystemStep } } + | { type: 'REMOVE_STEP', payload: { stepId: number } } + +type DndActions = + | { type: 'STEP_OVER_STEP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } + | { type: 'GROUP_OVER_STEP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } + | { type: 'GROUP_OVER_GROUP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } + | { type: 'INPUT_OVER_GROUP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } + | { type: 'INPUT_OVER_INPUT', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } + +type ChangeActions = + | { type: 'CHANGE_NAME', payload: { lang: 'en' | 'is', newValue: string } } + | { type: 'CHANGE_FORM_NAME', payload: { lang: 'en' | 'is', newValue: string } } + | { type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE', payload: { value: number } } + | { type: 'CHANGE_INVALIDATION_DATE', payload: { value: Date } } + | { type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP', payload: { value: boolean } } + | { type: 'CHANGE_FORM_SETTINGS', payload: { newForm: FormSystemForm } } + +export type ControlAction = ActiveItemActions | GroupActions | InputActions | StepActions | DndActions | ChangeActions + +export interface ControlState { + activeItem: ActiveItem + form: FormSystemForm +} + +export const controlReducer = (state: ControlState, action: ControlAction): ControlState => { + const { form, activeItem } = state + const { stepsList: steps, groupsList: groups, inputsList: inputs } = form + switch (action.type) { + case 'SET_ACTIVE_ITEM': + return { + ...state, + activeItem: action.payload.activeItem + } + + // Steps + case 'ADD_STEP': + return { + ...state, + activeItem: { + type: 'Step', + data: action.payload.step + }, + form: { + ...form, + stepsList: [...(steps || []), action.payload.step] + } + } + case 'REMOVE_STEP': { + const newSteps = state.form.stepsList?.filter((step) => step?.id !== action.payload.stepId) + return { + ...state, + form: { + ...form, + stepsList: newSteps + } + } + } + + // Groups + case 'ADD_GROUP': + return { + ...state, + activeItem: { + type: 'Group', + data: action.payload.group + }, + form: { + ...form, + groupsList: [...(groups || []), action.payload.group] + } + } + case 'REMOVE_GROUP': { + const newGroups = state.form.groupsList?.filter((group) => group?.id !== action.payload.groupId) + const currentItem = state.activeItem.data as FormSystemGroup + const newActiveItem = state.form.stepsList?.find((step) => step?.guid === currentItem.stepGuid) + return { + ...state, + activeItem: { + type: 'Step', + data: newActiveItem + }, + form: { + ...form, + groupsList: newGroups + } + } + } + + // Inputs + case 'ADD_INPUT': + return { + ...state, + activeItem: { + type: 'Input', + data: action.payload.input + }, + form: { + ...form, + inputsList: [...(inputs || []), action.payload.input] + } + } + case 'REMOVE_INPUT': { + const newInputs = state.form.inputsList?.filter((input) => input?.id !== action.payload.inputId) + const currentItem = state.activeItem.data as FormSystemInput + const newActiveItem = state.form.groupsList?.find((group) => group?.guid === currentItem.groupGuid) + return { + ...state, + activeItem: { + type: 'Group', + data: newActiveItem + }, + form: { + ...form, + inputsList: newInputs + } + } + } + case 'CHANGE_INPUT_TYPE': { + const { newValue, inputSettings, update } = action.payload; + const newActive = { + ...activeItem, + data: { + ...activeItem.data, + type: newValue, + inputSettings: inputSettings + } + } + update(newActive) + return { + activeItem: newActive, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === activeItem.data?.guid ? newActive.data : i) + } + } + } + case 'CHANGE_DESCRIPTION': { + const { lang, newValue } = action.payload + const currentData = activeItem.data as FormSystemInput + const newActive = { + ...activeItem, + data: { + ...currentData, + description: { + ...currentData?.description, + [lang]: newValue + } + } + }; + return { + activeItem: newActive, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === currentData?.guid ? newActive.data : i) + } + } + } + case 'CHANGE_IS_REQUIRED': { + const currentData = activeItem.data as FormSystemInput + console.log(currentData) + const newActive = { + ...activeItem, + data: { + ...currentData, + isRequired: !currentData?.isRequired + } + } + action.payload.update(newActive) + return { + activeItem: newActive, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === currentData?.guid ? newActive.data : i) + } + } + } + + // Change + case 'CHANGE_NAME': { + const { lang, newValue } = action.payload; + const newActive = { + ...activeItem, + data: { + ...activeItem.data, + name: { + ...activeItem.data?.name, + [lang]: newValue + } + } + }; + const { type } = activeItem; + let updatedList; + if (type === 'Step') { + updatedList = steps?.map(s => s?.guid === activeItem.data?.guid ? newActive.data : s); + } else if (type === 'Group') { + updatedList = groups?.map(g => g?.guid === activeItem.data?.guid ? newActive.data : g); + } else if (type === 'Input') { + updatedList = inputs?.map(i => i?.guid === activeItem.data?.guid ? newActive.data : i); + } + return { + activeItem: newActive, + form: { + ...form, + stepsList: type === 'Step' ? updatedList as FormSystemStep[] : form.stepsList, + groupsList: type === 'Group' ? updatedList as FormSystemGroup[] : form.groupsList, + inputsList: type === 'Input' ? updatedList as FormSystemInput[] : form.inputsList + } + } + } + case 'CHANGE_FORM_NAME': { + const { lang, newValue } = action.payload; + return { + ...state, + form: { + ...form, + name: { + ...form.name, + [lang]: newValue + } + } + } + } + case 'CHANGE_APPLICATION_DAYS_TO_REMOVE': { + return { + ...state, + form: { + ...form, + applicationsDaysToRemove: action.payload.value + } + } + } + case 'CHANGE_INVALIDATION_DATE': { + return { + ...state, + form: { + ...form, + invalidationDate: action.payload.value + } + } + } + case 'CHANGE_FORM_SETTINGS': { + return { + ...state, + form: action.payload.newForm + } + } + // Drag and Drop + case 'STEP_OVER_STEP': { + const activeIndex = steps?.findIndex((step) => step?.guid === action.payload.activeId) as number + const overIndex = steps?.findIndex((step) => step?.guid === action.payload.overId) as number + const updatedSteps = arrayMove(steps || [], activeIndex, overIndex) + return { + ...state, + form: { + ...form, + stepsList: updatedSteps.map((s, i) => ({ ...s, displayOrder: i })) + } + } + } + case 'GROUP_OVER_STEP': { + const activeIndex = groups?.findIndex((group) => group?.guid === action.payload.activeId) as number + const overIndex = steps?.findIndex((step) => step?.guid === action.payload.overId) as number + const updatedGroups = groups?.map(group => ({ ...group })) as FormSystemGroup[] + if (steps && steps[overIndex]) { + updatedGroups[activeIndex].stepGuid = action.payload.overId as string + updatedGroups[activeIndex].stepId = steps[overIndex]?.id as number + } + return { + ...state, + form: { + ...form, + groupsList: arrayMove(updatedGroups, activeIndex, overIndex).map((g, i) => ({ ...g, displayOrder: i })) + } + } + } + case 'GROUP_OVER_GROUP': { + const activeIndex = groups?.findIndex((group) => group?.guid === action.payload.activeId) as number + const overIndex = groups?.findIndex((group) => group?.guid === action.payload.overId) as number + const updatedGroups = groups?.map(group => ({ ...group })) as FormSystemGroup[] + if (updatedGroups[activeIndex] && updatedGroups[overIndex]) { + if (updatedGroups[activeIndex].stepGuid !== updatedGroups[overIndex].stepGuid) { + updatedGroups[activeIndex].stepGuid = updatedGroups[overIndex].stepGuid + updatedGroups[activeIndex].stepId = updatedGroups[overIndex].stepId + return { + ...state, + form: { + ...form, + groupsList: arrayMove(updatedGroups, activeIndex, overIndex - 1).map((g, i) => ({ ...g, displayOrder: i })) + } + } + } + return { + ...state, + form: { + ...form, + groupsList: arrayMove(updatedGroups, activeIndex, overIndex).map((g, i) => ({ ...g, displayOrder: i })) + } + } + } + return state + } + case 'INPUT_OVER_GROUP': { + const activeIndex = inputs?.findIndex((input) => input?.guid === action.payload.activeId) as number + const overIndex = groups?.findIndex((group) => group?.guid === action.payload.overId) as number + const updatedInputs = inputs?.map(input => ({ ...input })) as FormSystemInput[] + if (groups && groups[overIndex]) { + updatedInputs[activeIndex].groupGuid = action.payload.overId as string + updatedInputs[activeIndex].groupId = groups[overIndex]?.id as number + } + return { + ...state, + form: { + ...form, + inputsList: arrayMove(updatedInputs, activeIndex, overIndex).map((i, index) => ({ ...i, displayOrder: index })) + } + } + } + case 'INPUT_OVER_INPUT': { + const activeIndex = inputs?.findIndex((input) => input?.guid === action.payload.activeId) as number + const overIndex = inputs?.findIndex((input) => input?.guid === action.payload.overId) as number + const updatedInputs = inputs?.map(input => ({ ...input })) as FormSystemInput[] + if (updatedInputs[activeIndex] && updatedInputs[overIndex]) { + if (updatedInputs[activeIndex].groupGuid !== updatedInputs[overIndex].groupGuid) { + updatedInputs[activeIndex].groupGuid = updatedInputs[overIndex].groupGuid + updatedInputs[activeIndex].groupId = updatedInputs[overIndex].groupId + return { + ...state, + form: { + ...form, + inputsList: arrayMove(updatedInputs, activeIndex, overIndex - 1).map((i, index) => ({ ...i, displayOrder: index })) + } + } + } + return { + ...state, + form: { + ...form, + inputsList: arrayMove(updatedInputs, activeIndex, overIndex).map((i, index) => ({ ...i, displayOrder: index })) + } + } + } + return state + } + default: + return state + } +} + diff --git a/libs/portals/admin/form-system/src/hooks/fileUploadReducer.ts b/libs/portals/admin/form-system/src/hooks/fileUploadReducer.ts new file mode 100644 index 000000000000..4e8c480714b1 --- /dev/null +++ b/libs/portals/admin/form-system/src/hooks/fileUploadReducer.ts @@ -0,0 +1,43 @@ +import { UploadFile, UploadFileStatus } from '@island.is/island-ui/core' + +enum ActionTypes { + add = 'add', + remove = 'remove', + update = 'update', +} + +type FileUploadActions = + | { type: 'add'; payload: { newFiles: UploadFile[] } } + | { type: 'remove'; payload: { fileToRemove: UploadFile } } + | { + type: 'update' + payload: { file: UploadFile; status: UploadFileStatus; percent: number } + } + +export default function fileUploadReducer( + state: UploadFile[], + action: FileUploadActions, +) { + switch (action.type) { + case ActionTypes.add: + return state.concat(action.payload.newFiles) + + case ActionTypes.remove: + return state.filter( + (file) => file.name !== action.payload.fileToRemove.name, + ) + + case ActionTypes.update: + return [ + ...state.map((file: UploadFile) => { + if (file.name === action.payload.file.name) { + file.status = action.payload.status + file.percent = action.payload.percent + } + return file + }), + ] + default: + throw new Error() + } +} diff --git a/libs/portals/admin/form-system/src/hooks/formReducer.ts b/libs/portals/admin/form-system/src/hooks/formReducer.ts new file mode 100644 index 000000000000..1a1fd6e1a371 --- /dev/null +++ b/libs/portals/admin/form-system/src/hooks/formReducer.ts @@ -0,0 +1,199 @@ +/* eslint-disable func-style */ +import { UniqueIdentifier } from '@dnd-kit/core' +import { + ICertificate, + IFormBuilder, + ILanguage, + ITenging, +} from '../types/interfaces' +import { saveFormSettings } from '../services/apiService' + +type ILang = 'is' | 'en' + +type ChangeNameAction = { + type: 'changeName' + payload: { + lang: ILang + newName: string + } +} + +type ApplicationsDaysToRemoveAction = { + type: 'applicationsDaysToRemove' + payload: { + value: number + } +} + +type InvalidationDateAction = { + type: 'invalidationDate' + payload: { + value: Date + } +} + +type StopProgressOnValidatingStepAction = { + type: 'stopProgressOnValidatingStep' + payload: { + value: boolean + } +} + +type AddRemoveConnectionAction = { + type: 'addRemoveConnection' + payload: { + active: UniqueIdentifier + item: UniqueIdentifier + } +} + +type UpdateDocuments = { + type: 'updateDocuments' + payload: { + documents: ICertificate[] + } +} + +type FormSettingsPayload = + | { property: 'invalidationDate'; value: Date } + | { property: 'dependencies'; value: ITenging } + | { property: 'stopProgressOnValidatingStep'; value: boolean } + | { property: 'applicationsDaysToRemove'; value: number } + | { + property: 'formDocumentTypes' + value: { formId: number; documentTypeId: number }[] + } + | { property: 'adilar'; value: string[] } + | { property: 'completedMessage'; value: ILanguage } + | { property: 'isTranslated'; value: boolean } + +type FormSettingsAction = { + type: 'formSettings' + payload: FormSettingsPayload +} + +export type FormAction = + | ChangeNameAction + | ApplicationsDaysToRemoveAction + | InvalidationDateAction + | StopProgressOnValidatingStepAction + | AddRemoveConnectionAction + | FormSettingsAction + | UpdateDocuments + +export function formReducer(formBuilder: IFormBuilder, action: FormAction) { + switch (action.type) { + case 'changeName': { + const { lang, newName } = action.payload + return { + ...formBuilder, + form: { + ...formBuilder.form, + name: { + ...formBuilder.form?.name, + [lang]: newName, + }, + }, + } + } + case 'applicationsDaysToRemove': { + const { value } = action.payload + return { + ...formBuilder, + form: { + ...formBuilder.form, + applicationsDaysToRemove: value, + }, + } + } + case 'invalidationDate': { + const { value } = action.payload + return { + ...formBuilder, + form: { + ...formBuilder.form, + invalidationDate: value, + }, + } + } + case 'stopProgressOnValidatingStep': { + const { value } = action.payload + return { + ...formBuilder, + form: { + ...formBuilder.form, + stopProgressOnValidatingStep: value, + }, + } + } + case 'addRemoveConnection': { + const { active, item } = action.payload + const itemAsString = String(item) + const dependencies = { ...formBuilder.form?.dependencies } + + if (active in dependencies) { + if (!dependencies[active].includes(itemAsString)) { + dependencies[active] = [...dependencies[active], itemAsString] + } else { + dependencies[active] = dependencies[active].filter((t: UniqueIdentifier) => t !== item) + if (dependencies[active].length === 0) { + delete dependencies[active] + } + } + } else { + dependencies[active] = [itemAsString] + } + saveFormSettings(formBuilder.form?.id ?? 0, { + id: formBuilder.form?.id ?? 0, + dependencies: dependencies, + }) + return { + ...formBuilder, + form: { + ...formBuilder.form, + dependencies, + }, + } + } + + case 'formSettings': { + const { property, value } = action.payload + const id = formBuilder.form?.id ?? 0 + saveFormSettings(id, { + id: id, + [property]: value, + }) + return { + ...formBuilder, + form: { + ...formBuilder.form, + [property]: value, + }, + } + } + + case 'updateDocuments': { + const { documents } = action.payload + const saveDocuments = documents.map((d) => { + return { + formId: formBuilder.form?.id ?? 0, + documentTypeId: d.id, + } + }) + saveFormSettings(formBuilder.form?.id ?? 0, { + id: formBuilder.form?.id ?? 0, + formDocumentTypes: saveDocuments, + }) + return { + ...formBuilder, + form: { + ...formBuilder.form, + documentTypes: documents, + }, + } + } + + default: + return formBuilder + } +} diff --git a/libs/portals/admin/form-system/src/hooks/headerInfoReducer.ts b/libs/portals/admin/form-system/src/hooks/headerInfoReducer.ts new file mode 100644 index 000000000000..a92d3484df39 --- /dev/null +++ b/libs/portals/admin/form-system/src/hooks/headerInfoReducer.ts @@ -0,0 +1,29 @@ +export type FormHeaderAction = + | { type: 'changeOrganization'; payload: { value: string } } + | { type: 'changeApplicationName'; payload: { value: string } } + +export function headerInfoReducer( + info: { + organization: string + applicationName: string + }, + action: FormHeaderAction, +) { + switch (action.type) { + case 'changeOrganization': { + return { + ...info, + organization: action.payload?.value ? action.payload.value : '', + } + } + case 'changeApplicationName': { + return { + ...info, + applicationName: action.payload?.value ? action.payload.value : '', + } + } + default: { + return info + } + } +} diff --git a/libs/portals/admin/form-system/src/hooks/settingsReducer.ts b/libs/portals/admin/form-system/src/hooks/settingsReducer.ts new file mode 100644 index 000000000000..2b1e82a977d9 --- /dev/null +++ b/libs/portals/admin/form-system/src/hooks/settingsReducer.ts @@ -0,0 +1,18 @@ +import { FormSystemApplicantType, FormSystemDocumentType, FormSystemInput, FormSystemListType } from "@island.is/api/schema" +import { Maybe } from "graphql/jsutils/Maybe" + + +export type SettingsState = { + applicantTypes: Maybe[]> | undefined + documentTypes: Maybe[]> | undefined + inputTypes: Maybe[]> | undefined + listTypes: Maybe[]> | undefined +} + +export type SettingsAction = + | { type: 'something', payload: 'something' } + +export const settingsReducer = (state: SettingsState, action: SettingsAction): SettingsState => { + + return state +} diff --git a/libs/portals/admin/form-system/src/hooks/useUser.ts b/libs/portals/admin/form-system/src/hooks/useUser.ts new file mode 100644 index 000000000000..bee6280737f9 --- /dev/null +++ b/libs/portals/admin/form-system/src/hooks/useUser.ts @@ -0,0 +1,40 @@ +import { useSession } from 'next-auth/client' +import { useEffect, useState } from 'react' +import { User } from '../types/interfaces' + +export default function useUser() { + const [user, setUser] = useState() + const [session, loading] = useSession() + + const timeNow = Math.floor(Date.now() / 1000) + const expiryStr = session?.expires ? new Date(session.expires.replace(/['"]+/g, '')).getTime() : undefined + const expiry = Math.floor((expiryStr ?? 0) / 1000) + + const hasNotExpired = timeNow < expiry + + const [isAuthenticated, setIsAuthenticated] = useState( + Boolean(hasNotExpired), + ) + + useEffect(() => { + if (!hasNotExpired) { + setUser(undefined) + setIsAuthenticated(false) + sessionStorage.clear() + } else { + if (!user && session?.user) { + const { name = '', email, image } = session.user || {} + setUser({ name: name || '', email: email || '', image: image || '' }) + setIsAuthenticated(true); + } + } + }, [setUser, session, user]) + + return { + isAuthenticated, + setIsAuthenticated, + user, + setUser, + userLoading: loading, + } +} diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts index 7db8d5c3d174..c1124066891f 100644 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ b/libs/portals/admin/form-system/src/lib/messages.ts @@ -4,12 +4,12 @@ import { defineMessages } from "react-intl"; export const m = defineMessages({ formSystemIntro: { id: 'admin-portal.form-system:formSystemIntro', - defaultMessage: 'Umsóknakerfi', + defaultMessage: 'Umsóknarsmiður', description: '' }, formSystemTitle: { id: 'admin-portal.form-system:Title', - defaultMessage: 'Umsóknarsmiður fyrir stofnanir', + defaultMessage: 'Umsóknarsmiður', description: '' } }) diff --git a/libs/portals/admin/form-system/src/lib/navigation.ts b/libs/portals/admin/form-system/src/lib/navigation.ts index 05f27ae1da78..9d54beeff3b8 100644 --- a/libs/portals/admin/form-system/src/lib/navigation.ts +++ b/libs/portals/admin/form-system/src/lib/navigation.ts @@ -12,7 +12,7 @@ export const formSystemNavigation: PortalNavigationItem = { children: [ { name: m.formSystemTitle, - path: FormSystemPaths.FormSystemRoot, + path: FormSystemPaths.Form, activeIfExact: true } ] diff --git a/libs/portals/admin/form-system/src/lib/utils/interfaces.ts b/libs/portals/admin/form-system/src/lib/utils/interfaces.ts new file mode 100644 index 000000000000..69d9ad8e0632 --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/interfaces.ts @@ -0,0 +1,16 @@ +import { FormSystemStep, FormSystemGroup, FormSystemInput } from "@island.is/api/schema" + + +export enum NavbarSelectStatus { + OFF = 'Off', + NORMAL = 'Normal', + LIST_ITEM = 'ListItem', + ON_WITHOUT_SELECT = 'OnWithoutSelect', +} + +export type ItemType = 'Step' | 'Group' | 'Input' + +export interface ActiveItem { + type: ItemType + data?: FormSystemStep | FormSystemGroup | FormSystemInput | null +} diff --git a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts new file mode 100644 index 000000000000..74e10cdcb0e5 --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts @@ -0,0 +1,85 @@ +import { ActiveItem } from "./interfaces" +import { useFormSystemUpdateStepMutation } from "../../gql/Step.generated" +import { useFormSystemUpdateGroupMutation } from "../../gql/Group.generated" +import { useFormSystemUpdateInputMutation } from "../../gql/Input.generated" +import { FormSystemStep, FormSystemGroup, FormSystemInput } from "@island.is/api/schema" + +export const updateActiveItemFn = ( + activeItem: ActiveItem, + updateStep = useFormSystemUpdateStepMutation()[0], + updateGroup = useFormSystemUpdateGroupMutation()[0], + updateInput = useFormSystemUpdateInputMutation()[0], + currentActiveItem?: ActiveItem +) => { + const { type } = activeItem + console.log('updating: ', type) + if (type === 'Step') { + const { id, name, type, displayOrder, waitingText, callRuleset } = currentActiveItem ? currentActiveItem.data as FormSystemStep : activeItem.data as FormSystemStep + + updateStep({ + variables: { + input: { + stepId: id, + stepUpdateDto: { + id: id, + name: name?.__typename ? { ...name, __typename: undefined } : name, + type: type, + displayOrder: displayOrder, + waitingText: waitingText?.__typename ? { ...waitingText, __typename: undefined } : waitingText, + callRuleset: callRuleset + } + } + } + }) + } else if (type === 'Group') { + const { id, name, guid, displayOrder, multiSet } = currentActiveItem ? currentActiveItem.data as FormSystemGroup : activeItem.data as FormSystemGroup + updateGroup({ + variables: { + input: { + groupId: activeItem?.data?.id, + groupUpdateDto: { + id, + name: name?.__typename ? { ...name, __typename: undefined } : name, + guid, + displayOrder, + multiSet, + }, + }, + }, + }) + } else if (type === 'Input') { + const { + id, + name, + description, + isRequired, + displayOrder, + isHidden, + type, + inputSettings, + isPartOfMultiSet, + } = currentActiveItem ? currentActiveItem.data as FormSystemInput : activeItem.data as FormSystemInput + updateInput({ + variables: { + input: { + inputId: activeItem?.data?.id, + inputUpdateDto: { + id, + name: name?.__typename ? { ...name, __typename: undefined } : name, + description: description?.__typename + ? { ...description, __typename: undefined } + : description, + isRequired: isRequired ?? false, + displayOrder, + isHidden: isHidden ?? false, + type, + inputSettings: inputSettings?.__typename + ? { ...inputSettings, __typename: undefined } + : inputSettings, + isPartOfMultiSet: isPartOfMultiSet ?? false, + }, + }, + }, + }); + } +}; diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts new file mode 100644 index 000000000000..395e0a7e3a82 --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -0,0 +1,97 @@ +import { FormSystemGroup, FormSystemGroupInput, FormSystemInput } from "@island.is/api/schema" +import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" +import { ControlState } from "../../hooks/controlReducer" +import { ItemType } from "./interfaces" + + +export const updateDnd = ( + type: ItemType, + control: ControlState, + updateForm = useFormSystemUpdateFormMutation()[0] +) => { + console.log('updating: ', type) + const formId = control.form.id + if (type === 'Step') { + const steps = control.form.stepsList + const { form } = control + updateForm({ + variables: { + input: { + formId: formId, + form: { + stepsList: steps?.map(s => ({ + id: s?.id, + guid: s?.guid, + displayOrder: s?.displayOrder, + name: s?.name?.__typename ? { ...s?.name, __typename: undefined } : s?.name, + type: s?.type, + waitingText: s?.waitingText?.__typename ? { ...s?.waitingText, __typename: undefined } : s?.waitingText, + callRuleset: s?.callRuleset, + isHidden: s?.isHidden, + isCompleted: s?.isCompleted, + })) + } + } + } + }) + } else if (type === 'Group') { + const { groupsList } = control.form + const updatedGroup = groupsList?.map(g => ({ + id: g?.id, + name: g?.name?.__typename ? { ...g?.name, __typename: undefined } : g?.name, + guid: g?.guid, + displayOrder: g?.displayOrder, + isHidden: g?.isHidden ?? false, + stepId: g?.stepId, + multiSet: g?.multiSet, + stepGuid: g?.stepGuid, + })) + console.log('updatedGroup', updatedGroup) + updateForm({ + variables: { + input: { + formId: formId, + form: { + groupsList: groupsList?.map(g => ({ + id: g?.id, + name: g?.name?.__typename ? { ...g?.name, __typename: undefined } : g?.name, + guid: g?.guid, + displayOrder: g?.displayOrder, + isHidden: g?.isHidden ?? false, + stepId: g?.stepId, + multiSet: g?.multiSet, + stepGuid: g?.stepGuid, + } as FormSystemGroupInput), + ) + } + } + } + }) + } else if (type === 'Input') { + const { inputsList } = control.form + updateForm({ + variables: { + input: { + formId: formId, + form: { + inputsList: inputsList?.filter((i): i is FormSystemInput => i !== null && i !== undefined).map(i => ({ + id: i.id, + name: i.name?.__typename ? { ...i.name, __typename: undefined } : i.name, + description: i.description?.__typename ? { ...i.description, __typename: undefined } : i.description, + isRequired: i.isRequired ?? false, + displayOrder: i.displayOrder, + isHidden: i.isHidden ?? false, + type: i.type, + inputSettings: i.inputSettings?.__typename ? { ...i.inputSettings, __typename: undefined } : i.inputSettings, + isPartOfMultiSet: i.isPartOfMultiSet ?? false, + groupId: i.groupId, + groupGuid: i.groupGuid, + guid: i.guid + }), + ) + } + } + } + }) + } +} diff --git a/libs/portals/admin/form-system/src/lib/utils/updateForm.ts b/libs/portals/admin/form-system/src/lib/utils/updateForm.ts new file mode 100644 index 000000000000..b82824087219 --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/updateForm.ts @@ -0,0 +1,33 @@ +import { FormSystemForm } from "@island.is/api/schema" +import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" +import { ControlState } from "../../hooks/controlReducer" + + +export const partialFormUpdate = ( + control: ControlState, + updateForm = useFormSystemUpdateFormMutation()[0], + updatedForm?: FormSystemForm +) => { + const form = updatedForm ? updatedForm : control.form + console.log('updating form: ', form) + updateForm({ + variables: { + input: { + formId: form.id, + form: { + invalidationDate: form.invalidationDate, + name: form.name?.__typename ? { ...form.name, __typename: undefined } : form.name, + stopProgressOnValidatingStep: form.stopProgressOnValidatingStep ?? false, // doesnt save....whyyyy + applicationsDaysToRemove: form.applicationsDaysToRemove, + documentTypes: form.documentTypes?.map(d => ({ + __typename: undefined, + id: d?.id, + type: d?.type, + name: d?.name?.__typename ? { ...d?.name, __typename: undefined } : d?.name, + description: d?.description?.__typename ? { ...d?.description, __typename: undefined } : d?.description, + })), + } + } + } + }) +} diff --git a/libs/portals/admin/form-system/src/module.tsx b/libs/portals/admin/form-system/src/module.tsx index 407fe3ce6a0c..e775a327c911 100644 --- a/libs/portals/admin/form-system/src/module.tsx +++ b/libs/portals/admin/form-system/src/module.tsx @@ -4,11 +4,14 @@ import { m } from './lib/messages'; import { PortalModule } from '@island.is/portals/core' import { FormSystemPaths } from './lib/paths' import { formsLoader } from './screens/Forms/Forms.loader'; +import { formLoader } from './screens/Form/Form.loader'; const Forms = lazy(() => import('./screens/Forms/Forms') ) +const Form = lazy(() => import('./screens/Form/Form')) + const allowedScopes: string[] = [ AdminPortalScope.formSystem, AdminPortalScope.formSystemSuperUser @@ -19,13 +22,19 @@ export const formSystemModule: PortalModule = { layout: 'full', enabled: ({ userInfo }) => userInfo.scopes.some((scope) => allowedScopes.includes(scope)), - routes: () => { + routes: (props) => { return [ { name: m.formSystemTitle, path: FormSystemPaths.FormSystemRoot, element: , - // loader: formsLoader(props) + loader: formsLoader(props) + }, + { + name: m.formSystemIntro, + path: FormSystemPaths.Form, + element: , + loader: formLoader(props) } ] } diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts new file mode 100644 index 000000000000..602283ff041d --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts @@ -0,0 +1,39 @@ +import type { WrappedLoaderFn } from '@island.is/portals/core' +import { FormSystemFormResponse } from '@island.is/api/schema' + +import { ApolloClient, NormalizedCacheObject } from '@apollo/client' +import { FormSystemGetFormDocument, FormSystemGetFormQuery } from '../../gql/Form.generated' + +export interface FormLoaderResponse { + formBuilder: FormSystemFormResponse, + client: ApolloClient +} + + +export const formLoader: WrappedLoaderFn = ({ client }) => { + return async ({ params }): Promise => { + if (!params.formId) { + throw new Error('FormId not provided in parameters') + } + const { data: formData, error: formError } = + await client.query({ + query: FormSystemGetFormDocument, + fetchPolicy: 'network-only', + variables: { + input: { + id: Number(params.formId), + }, + } + }) + if (formError) { + throw formError + } + if (!formData) { + throw new Error(`No form data found for ${params.formId}`) + } + return { + formBuilder: formData.formSystemGetForm, + client + } + } +} diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 0a975f0d4415..067b72ca56b7 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -1,137 +1,120 @@ -import { - useState, - useContext, - useReducer, - useRef, - useEffect, - FocusEvent, -} from 'react' -import FormBuilderContext from '../context/FormBuilderContext' -import LayoutContext from '../context/LayoutContext' -import { formReducer } from '../hooks/formReducer' -import { listsReducer } from '../hooks/listsReducer' -import { updateForm, updateItem } from '../services/apiService' -import { - IFormBuilder, - IFormBuilderContext, - IListItem, - ILists, - NavbarSelectStatus, -} from '../types/interfaces' -import { defaultStep } from '../utils/defaultStep' -import { baseSettingsStep } from '../utils/getBaseSettingsStep' +import { useLoaderData } from "react-router-dom" +import { useEffect, useReducer, useState } from "react" +import { NavbarSelectStatus } from "../../lib/utils/interfaces" +import { FormLoaderResponse } from "./Form.loader" +import { ControlState, controlReducer } from "../../hooks/controlReducer" +import { baseSettingsStep } from "../../utils/getBaseSettingsStep" +import { defaultStep } from "../../utils/defaultStep" +import ControlContext, { IControlContext } from "../../context/ControlContext" import { GridRow as Row, GridColumn as Column, Box, } from '@island.is/island-ui/core' -import Navbar from '../components/Navbar/Navbar' -import NavbarSelect from '../components/NavbarSelect/NavbarSelect' -import MainContent from '../components/MainContent/MainContent' +import Navbar from "../../components/Navbar/Navbar" +import { FormSystemForm, FormSystemGroup, FormSystemInput } from "@island.is/api/schema" +import MainContent from "../../components/MainContent/MainContent" +import { useFormSystemUpdateGroupMutation } from "../../gql/Group.generated" +import { useFormSystemUpdateStepMutation } from "../../gql/Step.generated" +import { useFormSystemUpdateInputMutation } from "../../gql/Input.generated" +import { updateActiveItemFn } from "../../lib/utils/updateActiveItem" +import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" +import { ActiveItem, ItemType } from "../../lib/utils/interfaces" +import { updateDnd } from "../../lib/utils/updateDnd" +import { SettingsState, settingsReducer } from "../../hooks/settingsReducer" +import { partialFormUpdate } from "../../lib/utils/updateForm" -type Props = { - form: IFormBuilder -} -export default function Form({ form }: Props) { - const [focus, setOnFocus] = useState('') - const [inSettings, setInSettings] = useState(form.form.name.is === '') - const [selectStatus, setSelectStatus] = useState( - NavbarSelectStatus.OFF, - ) - const [activeListItem, setActiveListItem] = useState(null) - const { infoDispatch } = useContext(LayoutContext) - const initialNavbar: ILists = { - activeItem: inSettings - ? { type: 'Step', data: baseSettingsStep } - : { - type: 'Step', - data: - form?.form?.stepsList.find((s) => s.type === 'Innsláttur') || - defaultStep, - }, - steps: form.form.stepsList ?? [], - groups: form.form.groupsList ?? [], - inputs: form.form.inputsList ?? [], - } - const [formBuilder, formDispatch] = useReducer(formReducer, form) - const [lists, listsDispatch] = useReducer(listsReducer, initialNavbar) - const { activeItem } = lists - const isMounted = useRef(false) +const Form = () => { + const { formBuilder, client } = useLoaderData() as FormLoaderResponse + const { form, applicantTypes, documentTypes, inputTypes, listTypes } = formBuilder + const [focus, setFocus] = useState('') + const [inSettings, setInSettings] = useState(form?.name?.is === '') + const [selectStatus, setSelectStatus] = useState(NavbarSelectStatus.OFF) - useEffect(() => { - isMounted.current = true - infoDispatch({ - type: 'changeOrganization', - payload: { - value: formBuilder?.form?.organization.name.is, - }, - }) - infoDispatch({ - type: 'changeApplicationName', - payload: { - value: formBuilder.form.name.is, - }, - }) - }, [formBuilder, infoDispatch]) + const [updateStep] = useFormSystemUpdateStepMutation() + const [updateGroup] = useFormSystemUpdateGroupMutation() + const [updateInput] = useFormSystemUpdateInputMutation() + const [updateForm] = useFormSystemUpdateFormMutation() - const context: IFormBuilderContext = { - formBuilder: formBuilder, - formDispatch: formDispatch, - lists: lists, - listsDispatch: listsDispatch, - formUpdate: formUpdate, - inSettings: inSettings, - setInSettings: setInSettings, - setSelectStatus: setSelectStatus, - selectStatus: selectStatus, - activeListItem: activeListItem, - setActiveListItem: setActiveListItem, - blur: blur, - onFocus: onFocus, + const initialControl: ControlState = { + activeItem: { + type: 'Step', + data: inSettings ? baseSettingsStep : form?.stepsList?.find((s) => s?.type === 'Innsláttur') ?? defaultStep + }, + form: form as FormSystemForm } - if (formBuilder.form && activeItem) { - return ( - - - - {selectStatus !== NavbarSelectStatus.OFF ? ( - - ) : ( - - )} - - - - {activeItem?.data && } - - - - - ) + const initialSettings: SettingsState = { + applicantTypes, + documentTypes, + inputTypes, + listTypes } - return <>Loading - - async function formUpdate() { - updateForm(formBuilder.form, lists.steps, lists.groups, lists.inputs) + const [settings, settingsDispatch] = useReducer(settingsReducer, initialSettings) + const [control, controlDispatch] = useReducer(controlReducer, initialControl) + const updateActiveItem = (updatedActiveItem?: ActiveItem) => updateActiveItemFn(control.activeItem, updateStep, updateGroup, updateInput, updatedActiveItem) + const updateDragAndDrop = (type: ItemType) => updateDnd(type, control, updateForm) + const formSettingsUpdate = (updatedForm?: FormSystemForm) => { + if (updatedForm) { + controlDispatch({ type: 'CHANGE_FORM_SETTINGS', payload: { newForm: updatedForm } }) + } + return partialFormUpdate(control, updateForm, updatedForm) } - function blur(e: FocusEvent) { - if (e.target.value !== focus) { - setOnFocus('') - updateItem(activeItem.type, activeItem.data) - } + const context: IControlContext = { + control, + controlDispatch, + apolloClient: client, + applicantTypes, + documentTypes, + inputTypes, + listTypes, + setInSettings, + inSettings, + updateActiveItem, + focus, + setFocus, + updateDnD: updateDragAndDrop, + formSettingsUpdate, + selectStatus, + setSelectStatus } - function onFocus(value: string) { - setOnFocus(value) + + useEffect(() => { + console.log('loaderData form: ', form) + console.log('loaderData client: ', client) + console.log('control: ', control) + }, []) + + if (!form) { + return
Loading...
} + return ( + + + + {/* {selectStatus !== NavbarSelectStatus.OFF ? : } */} + + + + + + + + + + ) } + +export default Form + + diff --git a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql index 496ad9a13fc7..58304d77e5ff 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql +++ b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql @@ -1,7 +1,570 @@ + mutation formSystemCreateForm( $input: FormSystemCreateFormInput! ) { formSystemCreateForm(input: $input) { - form + form { + id + name { + is + en + } + applicationsDaysToRemove + completedMessage { + is + en + } + created + dependencies + documentTypes { + id + name { + is + en + } + description { + is + en + } + type + } + formApplicantTypes { + applicantTypeId + formId + name { + is + en + } + type + } + groupsList { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + inputsList { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + invalidationDate + isTranslated + lastChanged + organization { + applicantTypes { + applicantTypeId + description { + is + en + } + id + name { + is + en + } + nameSuggestion { + applicantTypeId + nameSuggestion { + is + en + } + } + type + } + documentTypes { + description { + is + en + } + id + name { + is + en + } + type + } + id + inputTypes { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + listTypes { + id + name { + is + en + } + description { + is + en + } + type + } + name { + is + en + } + nationalId + } + steps { + callRuleset + displayOrder + groups { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } + stepsList { + callRuleset + displayOrder + groups { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } + stopProgressOnValidatingStep + } + applicantTypes { + applicantTypeId + description { + is + en + } + id + name { + is + en + } + nameSuggestion { + applicantTypeId + nameSuggestion { + is + en + } + } + type + } + documentTypes { + description { + is + en + } + id + name { + is + en + } + type + } + inputTypes { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings { + amount + buttonText { + is + en + } + hasInput + hasLink + header + interval + isLarge + isList + isMulti + list { + description { + is + en + } + displayOrder + guid + isSelected + label { + is + en + } + value + } + max + maxLength + maxSize + min + minLength + name { + is + en + } + size + type + types + url + } + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } } } + diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts index 142a62ecd866..e91078d96c05 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts @@ -2,9 +2,12 @@ import { WrappedLoaderFn } from '@island.is/portals/core' import { FormSystemGetFormsDocument, FormSystemGetFormsQuery } from './Forms.generated' import { FormSystemForm } from '@island.is/api/schema' +export interface FormsLoaderResponse { + forms: FormSystemForm[] +} export const formsLoader: WrappedLoaderFn = ({ client }) => { - return async (): Promise> => { + return async (): Promise => { const { data, error } = await client.query({ query: FormSystemGetFormsDocument, @@ -20,6 +23,8 @@ export const formsLoader: WrappedLoaderFn = ({ client }) => { if (!data) { throw new Error('No forms were found') } - return data.formSystemGetForms.forms?.filter((form) => form !== null) as FormSystemForm[]; + return { + forms: data.formSystemGetForms.forms?.filter((form) => form !== null) as FormSystemForm[] + } } } diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index 9c3058c80702..5386ccb28aff 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -4,13 +4,16 @@ import { Text, Inline } from '@island.is/island-ui/core' -import { useNavigate } from 'react-router-dom' +import { useLoaderData, useNavigate } from 'react-router-dom' import { FormSystemPaths } from '../../lib/paths' import TableRow from '../../components/TableRow/TableRow' import { useFormSystemGetFormsQuery } from './Forms.generated' +import { useFormSystemCreateFormMutation } from './CreateForm.generated' +import { FormsLoaderResponse } from './Forms.loader' const Forms = () => { const navigate = useNavigate() + const { data, loading, error } = useFormSystemGetFormsQuery({ variables: { input: { @@ -19,6 +22,14 @@ const Forms = () => { } }) + const [formSystemCreateFormMutation, { data: newData, loading: newLoading, error: newError }] = useFormSystemCreateFormMutation({ + variables: { + input: { + organizationId: 1 + } + } + }) + const forms = data?.formSystemGetForms.forms console.log(data) if (!loading && !error) { @@ -33,9 +44,11 @@ const Forms = () => { @@ -63,7 +76,7 @@ const Forms = () => { // lastModified={f?.lastChanged} org={f?.organization?.id} isHeader={false} - translated={f?.isTranslated} + translated={f?.isTranslated ?? false} /> ) })} diff --git a/libs/portals/admin/form-system/src/services/apiService.tsx b/libs/portals/admin/form-system/src/services/apiService.tsx new file mode 100644 index 000000000000..fbdc0f1dd490 --- /dev/null +++ b/libs/portals/admin/form-system/src/services/apiService.tsx @@ -0,0 +1,248 @@ +import axios from 'axios' + +import { + IForm, + IFormApplicantType, + IFormBuilder, + IGroup, + IInput, + IInputSettings, + ILanguage, + IStep, + ItemType, +} from '../types/interfaces' +import { groupSchema, stepSchema } from './zodValidation' + +const BASEURL = 'https://profun.island.is/umsoknarkerfi/api' + +export async function getForm(id: unknown): Promise { + try { + const response = await axios.get(`${BASEURL}/Forms/${id}`) + // const validatedFormData: IFormBuilder = formFormBuilderSchema.parse(response.data) + // return validatedFormData + return response.data + } catch (error) { + console.error(error) + throw error + } +} + +export async function updateForm( + form: IForm, + steps: IStep[], + groups: IGroup[], + inputs: IInput[], +) { + const updatedForm: IForm = { + ...form, + stepsList: steps.map((s, i) => { + return { + ...s, + displayOrder: i, + } + }), + groupsList: groups.map((g, i) => { + return { + ...g, + displayOrder: i, + } + }), + inputsList: inputs.map((i, index) => { + return { + ...i, + displayOrder: index, + } + }), + } + + try { + const response = await axios.put( + `${BASEURL}/Forms/${form.id}`, + updatedForm, + { + headers: { + 'Content-Type': 'application/json', + }, + }, + ) + + return response + } catch (error) { + console.error('Error in updateNavbar:', error) + throw error + } +} + +export async function updateItem(type: string, data: IStep | IGroup | IInput) { + const url = `${BASEURL}/${type}s/${data.id}` + + try { + const response = await axios.put(url, data, { + headers: { + 'Content-Type': 'application/json', + }, + }) + + return response + } catch (error) { + console.error('Error in updateItem: ', error) + throw error + } +} + +export async function getNewForm(organisationId: number): Promise { + try { + const response = await axios.post(`${BASEURL}/Forms/${organisationId}`) + return response.data + } catch (error) { + console.error('Error in getNewForm: ', error) + throw error + } +} + +export async function getAllFormsFromOrganisation( + organisationId: number, +): Promise { + try { + const response = await axios.get( + `${BASEURL}/Forms/Organization/${organisationId}`, + ) + return response.data + } catch (error) { + console.error('Error in getAllFormsFromOrganisation: ', error) + throw error + } +} + +export async function addStep( + formId: number, + name: ILanguage, + displayOrder: number, + stepType: number, + waitingText: ILanguage, + callRuleset: boolean, +): Promise { + try { + const response = await axios.post(`${BASEURL}/Steps`, { + formId, + name, + displayOrder, + stepType, + waitingText, + callRuleset, + }) + + const validatedStep: IStep = stepSchema.parse(response.data) + return validatedStep + } catch (error) { + console.error('Error in addStep: ', error) + throw error + } +} + +export async function addGroup( + displayOrder: number, + parentId: number, +): Promise { + try { + const response = await axios.post(`${BASEURL}/Groups`, { + displayOrder: displayOrder, + stepId: parentId, + }) + + const validatedGroup: IGroup = groupSchema.parse(response.data) + + return validatedGroup + } catch (error) { + console.error('Error in addGroup: ', error) + throw error + } +} + +export async function addInput( + displayOrder: number, + parentId: number, +): Promise { + const requestBody = { + displayOrder: displayOrder, + groupId: parentId, + } + + try { + const response = await axios.post(`${BASEURL}/Inputs`, requestBody, { + headers: { + 'Content-Type': 'application/json', + }, + }) + + const data = response.data + + return data + } catch (error) { + console.error('Error in addInput: ', error) + throw error + } +} + +export async function deleteItem(type: ItemType, id: number) { + try { + const response = await axios.delete(`${BASEURL}/${type}s/${id}`) + return response + } catch (error) { + console.error('Error in deleteItem: ', error) + throw error + } +} + +export async function saveFormSettings(id: number, settings: IInputSettings) { + try { + const response = await axios.put( + `${BASEURL}/Forms/${id}/Settings`, + settings, + { + headers: { + 'Content-Type': 'application/json', + }, + }, + ) + return response + } catch (error) { + console.error('Error in saveFormSettings: ', error) + throw error + } +} + +export async function saveApplicantTypes( + id: number, + types: IFormApplicantType[], +) { + const requestData = { + id: id, + formApplicantTypes: types, + } + try { + const response = await axios.put( + `${BASEURL}/Forms/${id}/Settings`, + requestData, + { + headers: { + 'Content-Type': 'application/json', + }, + }, + ) + + return response + } catch (error) { + console.error('Error in saveApplicantTypes: ', error) + throw error + } +} +export async function getList(type: string) { + try { + const response = await axios.get(`${BASEURL}/Services/${type}`) + return response.data + } catch (error) { + console.error('Error in getList: ', error) + throw error + } +} diff --git a/libs/portals/admin/form-system/src/services/translationStation.tsx b/libs/portals/admin/form-system/src/services/translationStation.tsx new file mode 100644 index 000000000000..19be4bae56f2 --- /dev/null +++ b/libs/portals/admin/form-system/src/services/translationStation.tsx @@ -0,0 +1,41 @@ +import { ITranslationResponse } from '../types/interfaces' +import axios from 'axios' +import dotenv from 'dotenv' + +dotenv.config() + +export const translationStation = async ( + input: string, +): Promise => { + const apiUrl = process.env.MIDEIND_API + const apiKey = process.env.MIDEIND_KEY + + if (!apiUrl || !apiKey) { + throw new Error('API URL or API key is not defined.') + } + + try { + const response = await axios.post( + apiUrl, + { + contents: [input], + sourceLanguageCode: 'is', + targetLanguageCode: 'en', + model: '', + domain: '', + }, + { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + 'X-API-Key': apiKey, + }, + }, + ) + + return response.data + } catch (error) { + console.error('Error in translationStation: ', error) + throw error + } +} diff --git a/libs/portals/admin/form-system/src/services/zodValidation.ts b/libs/portals/admin/form-system/src/services/zodValidation.ts new file mode 100644 index 000000000000..bc94f18f8e08 --- /dev/null +++ b/libs/portals/admin/form-system/src/services/zodValidation.ts @@ -0,0 +1,193 @@ +import { z } from 'zod' +import { EFormApplicantTypes } from '../types/enums' +import { + IApplicantType, + ICertificate, + IForm, + IFormApplicantType, + IFormBuilder, + IGroup, + IInput, + IInputSettings, + IInputType, + IListType, + IStep, + ITenging, +} from '../types/interfaces' + +const languageSchema = z.object({ + is: z.string(), + en: z.string(), +}) + +const dependencySchema = z.record(z.array(z.string())) as z.ZodSchema + +const inputSettingsSchema = z.object({ + $type: z.string().optional(), + isLarge: z.boolean().optional(), + size: z.enum(['xs', 'sm', 'md']), + interval: z.string().optional(), + erHlekkur: z.boolean().optional(), + url: z.string().optional(), + hnapptexti: languageSchema.optional(), + tegundir: z.array(z.string()).optional(), + hamarksstaerd: z.number().optional(), + erFjolval: z.boolean().optional(), + fjoldi: z.number().optional(), + header: z.string().optional(), + hamarkslengd: z.number().optional(), + lagmarkslengd: z.number().optional(), + laggildi: z.number().optional(), + hagildi: z.number().optional(), + listi: z + .array( + z.object({ + guid: z.string(), + label: languageSchema, + description: languageSchema, + displayOrder: z.number(), + isSelected: z.boolean(), + }), + ) + .optional(), + type: z.string().optional(), + name: languageSchema.optional(), + erListi: z.boolean().optional(), + erInnslattur: z.boolean().optional(), +}) as z.ZodSchema + +export const inputSchema = z.object({ + id: z.number(), + name: languageSchema, + description: languageSchema, + isRequired: z.boolean(), + displayOrder: z.number(), + groupId: z.number(), + groupGuid: z.string(), + isHidden: z.boolean(), + type: z.string(), + guid: z.string(), + inputFields: z.record(z.any()), + inputSettings: inputSettingsSchema, + isPartOfMultiSet: z.boolean(), +}) as z.ZodSchema + +export const groupSchema = z.object({ + id: z.number(), + name: languageSchema, + guid: z.string(), + displayOrder: z.number(), + isHidden: z.boolean(), + multiSet: z.number(), + stepId: z.number(), + stepGuid: z.string(), + inputs: z.array(inputSchema), +}) as z.ZodSchema + +export const stepSchema = z.object({ + id: z.number(), + guid: z.string(), + displayOrder: z.number(), + name: languageSchema, + type: z.string(), + waitingText: languageSchema, + callRuleset: z.boolean(), + isHidden: z.boolean(), + isCompleted: z.boolean(), + groups: z.array(groupSchema), +}) as z.ZodSchema + +const certificateSchema = z.object({ + id: z.number(), + type: z.string(), + name: languageSchema, + description: languageSchema, +}) as z.ZodSchema + +const applicantTypesSchema = z.enum([ + EFormApplicantTypes.einstaklingur, + EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, + EFormApplicantTypes.einstaklingurMedUmbodLogadila, + EFormApplicantTypes.einstaklingurMedProkuru, + EFormApplicantTypes.einstaklingurUmbodsveitandi, + EFormApplicantTypes.logadili, +]) + +const formApplicantSchema = z.object({ + formId: z.number(), + applicantTypeId: z.number(), + name: languageSchema, + type: applicantTypesSchema, +}) as z.ZodSchema + +export const formSchema = z.object({ + id: z.number(), + name: languageSchema, + organization: z.object({ + id: z.number(), + name: languageSchema, + kennitala: z.string(), + scope: z.string(), + xroadBaseUrl: z.string(), + }), + created: z.date(), + lastChanged: z.date(), + invalidationDate: z.date().optional(), + dependencies: dependencySchema, + stepsList: z.array(stepSchema).default([]), + groupsList: z.array(groupSchema).default([]), + inputsList: z.array(inputSchema).default([]), + stopProgressOnValidatingStep: z.boolean(), + applicationsDaysToRemove: z.number(), + isTranslated: z.boolean(), + documentTypes: z.array(certificateSchema), + formApplicantTypes: z.array(formApplicantSchema), +}) as z.ZodSchema + +const inputTypeSchema = z.object({ + type: z.string(), + name: z.string(), + description: z.string(), + organizations: z.array(z.number()).optional(), + inputFields: z.object({}).optional(), + inputMetadata: z.object({}).optional(), + ruleset: z.object({}).optional(), + inputSettings: inputSettingsSchema, +}) as z.ZodSchema + +const applicantTypeSchema = z.object({ + id: z.number(), + name: languageSchema, + type: applicantTypesSchema, + nameSuggestions: z.array( + z.object({ + applicantTypeId: z.number(), + nameSuggestion: languageSchema, + }), + ), +}) as z.ZodSchema + +const listTypeSchema = z.object({ + id: z.number(), + type: z.string(), + name: languageSchema, + description: languageSchema, +}) as z.ZodSchema + +export const formsFormBuilderSchema = z.object({ + forms: z.array(formSchema), + form: formSchema.optional(), + documentTypes: z.array(certificateSchema).optional(), + inputTypes: z.array(inputTypeSchema).optional(), + applicantTypes: z.array(applicantTypeSchema).optional(), + listTypes: z.array(listTypeSchema).optional(), +}) as z.ZodSchema + +export const formFormBuilderSchema = z.object({ + forms: z.null(), + form: formSchema, + documentTypes: z.array(certificateSchema), + inputTypes: z.array(inputTypeSchema), + applicantTypes: z.array(applicantTypeSchema), + listTypes: z.array(listTypeSchema), +}) as z.ZodSchema diff --git a/libs/portals/admin/form-system/src/types/interfaces.tsx b/libs/portals/admin/form-system/src/types/interfaces.tsx index 891c44c723ad..54ae668c1144 100644 --- a/libs/portals/admin/form-system/src/types/interfaces.tsx +++ b/libs/portals/admin/form-system/src/types/interfaces.tsx @@ -1,20 +1,15 @@ import { Dispatch, SetStateAction, FocusEvent } from 'react' import { UniqueIdentifier } from '@dnd-kit/core' import { EFormApplicantTypes } from './enums' -import { Action as ListsAction } from '../hooks/listsReducer' import { FormAction } from '../hooks/formReducer' import { FormHeaderAction } from '../hooks/headerInfoReducer' +import { FormSystemApplicantType, FormSystemDocumentType, FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemListType, FormSystemStep } from '@island.is/api/schema' +import { Maybe } from 'graphql/jsutils/Maybe' export type IFormBuilderContext = { - formBuilder: IFormBuilder - formDispatch: Dispatch - lists: { - activeItem: ActiveItem - steps: IStep[] - groups: IGroup[] - inputs: IInput[] - } - listsDispatch: Dispatch + // formBuilder: IFormBuilder + // formDispatch: Dispatch + lists: ILists formUpdate: () => Promise inSettings: boolean setInSettings: Dispatch> @@ -118,15 +113,15 @@ export interface IInput { export type ILists = { activeItem: ActiveItem - steps: IStep[] - groups: IGroup[] - inputs: IInput[] + steps?: Maybe[] + groups?: Maybe[] + inputs?: Maybe[] [key: string]: unknown } export interface ActiveItem { type: ItemType - data: IStep | IGroup | IInput + data: Maybe | Maybe | Maybe } export interface ISelectOption { @@ -139,12 +134,12 @@ export interface ITenging { } export interface IFormBuilder { - form: IForm - forms?: IForm[] | null - documentTypes: ICertificate[] - inputTypes: IInputType[] - applicantTypes: IApplicantType[] - listTypes: IListType[] + form?: Maybe + forms?: Maybe[] | null + documentTypes?: Maybe[]> + inputTypes?: Maybe[]> + applicantTypes?: Maybe[]> + listTypes?: Maybe[]> } export interface IListType { @@ -232,6 +227,7 @@ export interface ITranslation { translatedText: string translatedTextStructured: [string, string][] } + export enum NavbarSelectStatus { OFF = 'Off', NORMAL = 'Normal', @@ -239,8 +235,6 @@ export enum NavbarSelectStatus { ON_WITHOUT_SELECT = 'OnWithoutSelect', } -export type ItemType = 'Step' | 'Group' | 'Input' - export type ILanguage = { is: string en: string @@ -251,3 +245,5 @@ export interface User { image?: string } type Sizes = 'xs' | 'sm' | 'md' + +export type ItemType = 'Step' | 'Group' | 'Input' diff --git a/libs/portals/admin/form-system/src/utils/defaultStep.tsx b/libs/portals/admin/form-system/src/utils/defaultStep.tsx index 6130a25964f1..03d9bb43d8b5 100644 --- a/libs/portals/admin/form-system/src/utils/defaultStep.tsx +++ b/libs/portals/admin/form-system/src/utils/defaultStep.tsx @@ -1,7 +1,8 @@ import { uuid } from 'uuidv4' import { IStep } from '../types/interfaces' +import { FormSystemStep } from '@island.is/api/schema' -export const defaultStep: IStep = { +export const defaultStep: FormSystemStep = { id: 0, guid: uuid(), displayOrder: 0, @@ -17,4 +18,5 @@ export const defaultStep: IStep = { callRuleset: false, isHidden: false, isCompleted: false, + groups: [] } diff --git a/libs/portals/admin/form-system/src/utils/fileTypes.ts b/libs/portals/admin/form-system/src/utils/fileTypes.ts new file mode 100644 index 000000000000..1012723154a6 --- /dev/null +++ b/libs/portals/admin/form-system/src/utils/fileTypes.ts @@ -0,0 +1,58 @@ +export const fileTypes = { + ".pdf": "application/pdf", + ".doc": "application/msword", + ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + ".txt": "text/plain", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg", + ".png": "image/png", + ".gif": "image/gif", + ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ".xls": "application/vnd.ms-excel", + ".csv": "text/csv", + ".zip": "application/zip", + "*": "application/octet-stream" +} + +export const fileSizes = [ + { + "label": "1 mb", + "value": 1048576 + }, + { + "label": "2 mb", + "value": 2097152 + }, + { + "label": "3 mb", + "value": 3145728 + }, + { + "label": "4 mb", + "value": 4194304 + }, + { + "label": "5 mb", + "value": 5242880 + }, + { + "label": "6 mb", + "value": 6291456 + }, + { + "label": "7 mb", + "value": 7340032 + }, + { + "label": "8 mb", + "value": 8388608 + }, + { + "label": "9 mb", + "value": 9437184 + }, + { + "label": "10 mb", + "value": 10485760 + } +] diff --git a/libs/portals/admin/form-system/tsconfig.json b/libs/portals/admin/form-system/tsconfig.json index e5981a9141a5..e0b49829e8f6 100644 --- a/libs/portals/admin/form-system/tsconfig.json +++ b/libs/portals/admin/form-system/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { //"module": "commonjs" "jsx": "react-jsx", - "allowJs": true + "allowJs": true, + "resolveJsonModule": true, }, "files": [], "include": [], diff --git a/package.json b/package.json index 7b9cc2e4c5d2..ed3ca0413b9a 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,8 @@ "@contentful/rich-text-react-renderer": "15.16.5", "@contentful/rich-text-types": "16.2.0", "@datadog/browser-rum": "4.36.0", + "@dnd-kit/core": "6.1.0", + "@dnd-kit/sortable": "8.0.0", "@elastic/elasticsearch": "7.7.1", "@formatjs/cli": "4.2.27", "@formatjs/intl-datetimeformat": "4.1.6", diff --git a/yarn.lock b/yarn.lock index 62e8808639eb..c1ccf9d5c072 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7558,7 +7558,7 @@ __metadata: languageName: node linkType: hard -"@dnd-kit/core@npm:^6.0.8": +"@dnd-kit/core@npm:6.1.0, @dnd-kit/core@npm:^6.0.8": version: 6.1.0 resolution: "@dnd-kit/core@npm:6.1.0" dependencies: @@ -7585,6 +7585,19 @@ __metadata: languageName: node linkType: hard +"@dnd-kit/sortable@npm:8.0.0": + version: 8.0.0 + resolution: "@dnd-kit/sortable@npm:8.0.0" + dependencies: + "@dnd-kit/utilities": ^3.2.2 + tslib: ^2.0.0 + peerDependencies: + "@dnd-kit/core": ^6.1.0 + react: ">=16.8.0" + checksum: 26589fd23c18d930a949489b232a7345c0bee4abb6be91d3673232bc79085f13cb5d82087c2068edbc51cbdd3d47c2fe386bada92dc7f2d0dcde13d6be379daa + languageName: node + linkType: hard + "@dnd-kit/sortable@npm:^7.0.2": version: 7.0.2 resolution: "@dnd-kit/sortable@npm:7.0.2" @@ -33743,6 +33756,8 @@ __metadata: "@contentful/rich-text-react-renderer": 15.16.5 "@contentful/rich-text-types": 16.2.0 "@datadog/browser-rum": 4.36.0 + "@dnd-kit/core": 6.1.0 + "@dnd-kit/sortable": 8.0.0 "@elastic/elasticsearch": 7.7.1 "@formatjs/cli": 4.2.27 "@formatjs/intl-datetimeformat": 4.1.6 From 27aa9ab79ce05e5f965f8e4dca0b2a77808c42fc Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Tue, 23 Apr 2024 14:50:44 +0000 Subject: [PATCH 027/129] Working version. Current issue: inputsettings are not being saved due to graphql not handling type discriminators --- .vscode/settings.json | 4 +- .../ListBuilder/components/ListItem.tsx | 12 +- .../form-builder/components/Navbar/Navbar.tsx | 7 +- apps/form-builder/services/apiService.tsx | 2 +- .../domains/form-system/.vscode/settings.json | 3 + .../src/dto/applicantType.input.ts | 4 +- .../form-system/src/dto/documentType.input.ts | 9 + .../form-system/src/dto/groups.input.ts | 3 + .../form-system/src/dto/inputs.input.ts | 4 + .../src/dto/updateFormSettings.input.ts | 51 +++ .../src/lib/forms/forms.resolver.ts | 12 + .../src/lib/forms/forms.service.ts | 58 ++-- .../src/lib/groups/groups.service.ts | 2 +- .../src/lib/inputs/inputs.service.ts | 26 +- .../src/lib/utils/helperFunctions.ts | 210 +++++++------ .../src/models/applicantType.model.ts | 4 +- .../src/models/inputSettings.model.ts | 2 +- libs/clients/form-system/project.json | 2 +- .../clients/form-system/src/clientConfig.json | 21 +- .../src/lib/FormSystemApiProvider.ts | 8 + .../src/lib/FormSystemClient.config.ts | 3 +- .../components/MainContent/MainContent.tsx | 145 ++++----- .../components/BaseSettings/BaseSettings.tsx | 14 +- .../components/InputContent/InputContent.tsx | 10 +- .../InputSettings/InputSettings.tsx | 28 ++ .../components/FIleUploadSettings.tsx | 179 +++++++++++ .../InputSettings/components/ListSettings.tsx | 100 ++++++ .../components/MessageWithLinkSettings.tsx | 71 +++-- .../components/TextInputSettings.tsx | 29 ++ .../components/ListBuilder/ListBuilder.tsx | 182 +++++++++++ .../ListBuilder/components/ListItem.tsx | 285 +++++++++++++++++ .../components/Premises/Premises.tsx | 4 +- .../components/Preview/Preveiw.tsx | 34 +- .../Preview/components/Banknumber.tsx | 113 +++++++ .../Preview/components/Currency.tsx | 38 +++ .../components/Preview/components/Email.tsx | 33 ++ .../Preview/components/FileUpload.tsx | 69 ++++ .../components/Preview/components/List.tsx | 34 ++ .../Preview/components/NationalId.tsx | 22 ++ .../components/Preview/components/Radio.tsx | 59 ++++ .../Preview/components/TextInput.tsx | 20 ++ .../PreviewStepOrGroup/PreviewStepOrGroup.tsx | 91 ++++++ .../components/MultiSet.tsx | 59 ++++ .../RelevantParties/RevelantParties.tsx | 291 +++++++++++++++++ .../components/FormApplicantType.tsx | 144 +++++++++ .../src/components/Navbar/Navbar.tsx | 58 ++-- .../NavComponent/components/NavButtons.tsx | 8 +- .../components/NavbarSelect/NavbarSelect.tsx | 128 ++++---- .../components/SelectNavComponent.tsx | 281 ++++++++--------- .../form-system/src/context/ControlContext.ts | 19 +- .../admin/form-system/src/gql/Form.graphql | 143 +-------- .../form-system/src/gql/FormSettings.graphql | 5 + .../admin/form-system/src/gql/Input.graphql | 66 ++++ .../form-system/src/hooks/controlReducer.ts | 294 +++++++++++++++++- .../form-system/src/lib/utils/fileTypes.ts | 15 + .../form-system/src/lib/utils/interfaces.ts | 20 +- .../src/lib/utils/removeTypename.ts | 15 + .../src/lib/utils/updateActiveItem.ts | 129 ++++---- .../form-system/src/lib/utils/updateDnd.ts | 37 +-- .../form-system/src/lib/utils/updateForm.ts | 54 +++- .../src/lib/utils/updateFormSettings.ts | 38 +++ .../src/screens/Form/Form.loader.ts | 33 +- .../form-system/src/screens/Form/Form.tsx | 48 +-- .../src/screens/Forms/CreateForm.graphql | 4 +- 64 files changed, 3143 insertions(+), 753 deletions(-) create mode 100644 libs/api/domains/form-system/.vscode/settings.json create mode 100644 libs/api/domains/form-system/src/dto/updateFormSettings.input.ts create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/components/MultiSet.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx create mode 100644 libs/portals/admin/form-system/src/gql/FormSettings.graphql create mode 100644 libs/portals/admin/form-system/src/lib/utils/fileTypes.ts create mode 100644 libs/portals/admin/form-system/src/lib/utils/removeTypename.ts create mode 100644 libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 0967ef424bce..d68c91333c4b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1 +1,3 @@ -{} +{ + "workbench.colorTheme": "Default High Contrast" +} diff --git a/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx b/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx index 24cfa252d8b6..f5aee4ff2520 100644 --- a/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx +++ b/apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx @@ -59,15 +59,15 @@ export default function ListItem({ > {}} + onChange={() => { }} /> {}} + onChange={() => { }} /> @@ -75,7 +75,7 @@ export default function ListItem({ marginRight={2} style={{ cursor: 'pointer' }} // eslint-disable-next-line @typescript-eslint/no-empty-function - onClick={() => {}} + onClick={() => { }} > @@ -93,7 +93,7 @@ export default function ListItem({ size="sm" value={listItem.label.is} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => {}} + onChange={() => { }} /> @@ -104,7 +104,7 @@ export default function ListItem({ size="sm" value={listItem.label.en} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => {}} + onChange={() => { }} /> diff --git a/apps/form-builder/components/Navbar/Navbar.tsx b/apps/form-builder/components/Navbar/Navbar.tsx index cf7497bf04f3..6a02863759e2 100644 --- a/apps/form-builder/components/Navbar/Navbar.tsx +++ b/apps/form-builder/components/Navbar/Navbar.tsx @@ -1,3 +1,4 @@ +/* eslint-disable func-style */ import { useSensors, useSensor, @@ -304,9 +305,8 @@ export default function Navbar() { if (activeStep && overStep) { dispatchDragAction('stepOverStep') } - // Dragging Group - if (activeGroup) { + else if (activeGroup) { if (overStep) { dispatchDragAction('groupOverStep') } @@ -314,9 +314,8 @@ export default function Navbar() { dispatchDragAction('groupOverGroup') } } - // Dragging Input - if (activeInput) { + else if (activeInput) { if (overGroup) { dispatchDragAction('inputOverGroup') } diff --git a/apps/form-builder/services/apiService.tsx b/apps/form-builder/services/apiService.tsx index fbdc0f1dd490..182f89bb3aa7 100644 --- a/apps/form-builder/services/apiService.tsx +++ b/apps/form-builder/services/apiService.tsx @@ -54,7 +54,7 @@ export async function updateForm( } }), } - + console.log('updatedForm', updatedForm) try { const response = await axios.put( `${BASEURL}/Forms/${form.id}`, diff --git a/libs/api/domains/form-system/.vscode/settings.json b/libs/api/domains/form-system/.vscode/settings.json new file mode 100644 index 000000000000..e82e18462638 --- /dev/null +++ b/libs/api/domains/form-system/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "workbench.colorTheme": "Default Dark+" +} diff --git a/libs/api/domains/form-system/src/dto/applicantType.input.ts b/libs/api/domains/form-system/src/dto/applicantType.input.ts index 10448a1ec726..49c0decdc602 100644 --- a/libs/api/domains/form-system/src/dto/applicantType.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantType.input.ts @@ -20,8 +20,8 @@ export class ApplicantTypeInput { @Field(() => String, { nullable: true }) type?: string | null - @Field(() => ApplicantTypeNameSuggestionInput, { nullable: true }) - nameSuggestion?: ApplicantTypeNameSuggestionInput + @Field(() => [ApplicantTypeNameSuggestionInput], { nullable: 'itemsAndList' }) + nameSuggestions?: ApplicantTypeNameSuggestionInput[] | null } @InputType('FormSystemFormApplicantTypeInput') diff --git a/libs/api/domains/form-system/src/dto/documentType.input.ts b/libs/api/domains/form-system/src/dto/documentType.input.ts index ed28232bb545..3be1e25d546e 100644 --- a/libs/api/domains/form-system/src/dto/documentType.input.ts +++ b/libs/api/domains/form-system/src/dto/documentType.input.ts @@ -17,3 +17,12 @@ export class DocumentTypeInput { @Field(() => LanguageTypeInput, { nullable: true }) description?: LanguageTypeInput } + +@InputType('FormSystemDocumentTypeUpdateInput') +export class DocumentTypeUpdateInput { + @Field(() => Int, { nullable: true }) + formId?: number + + @Field(() => Int, { nullable: true }) + documentTypeId?: number +} diff --git a/libs/api/domains/form-system/src/dto/groups.input.ts b/libs/api/domains/form-system/src/dto/groups.input.ts index 1ff558b4f8ec..d9957894ec5f 100644 --- a/libs/api/domains/form-system/src/dto/groups.input.ts +++ b/libs/api/domains/form-system/src/dto/groups.input.ts @@ -28,6 +28,9 @@ export class UpdateGroup { @Field(() => Number, { nullable: true }) multiSet?: number + + @Field(() => Int, { nullable: true }) + stepId?: number } @InputType('FormSystemGetGroupInput') diff --git a/libs/api/domains/form-system/src/dto/inputs.input.ts b/libs/api/domains/form-system/src/dto/inputs.input.ts index d582fca058d5..2d17aba12824 100644 --- a/libs/api/domains/form-system/src/dto/inputs.input.ts +++ b/libs/api/domains/form-system/src/dto/inputs.input.ts @@ -40,6 +40,10 @@ export class UpdateInput { @Field() isPartOfMultiSet?: boolean + + @Field(() => Int, { nullable: true }) + groupId?: number + } diff --git a/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts b/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts new file mode 100644 index 000000000000..50b5f6f50fb0 --- /dev/null +++ b/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts @@ -0,0 +1,51 @@ +import { Field, InputType, Int } from "@nestjs/graphql" +import { LanguageTypeInput } from "./language.input" +import graphqlTypeJson from 'graphql-type-json' +import { DocumentTypeUpdateInput } from "./documentType.input" +import { FormApplicantTypeInput } from "./applicantType.input" + + +@InputType('FormSystemFormSettingsInput') +export class FormSettingsInput { + @Field(() => Int, { nullable: true }) + id?: number + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => Date, { nullable: true }) + lastChanged?: Date + + @Field(() => Date, { nullable: true }) + invalidationDate?: Date | null + + @Field(() => graphqlTypeJson, { nullable: true }) + dependencies?: { [key: string]: string[] } | null + + @Field(() => [DocumentTypeUpdateInput], { nullable: 'itemsAndList' }) + formDocumentTypes?: DocumentTypeUpdateInput[] | null + + @Field(() => [FormApplicantTypeInput], { nullable: 'itemsAndList' }) + formApplicantTypes?: FormApplicantTypeInput[] | null + + @Field(() => LanguageTypeInput, { nullable: true }) + completedMessage?: LanguageTypeInput + + @Field(() => Boolean, { nullable: true }) + isTranslated?: boolean | null + + @Field(() => Boolean, { nullable: true }) + stopProgressOnValidatingStep?: boolean | null + + @Field(() => Int, { nullable: true }) + applicationsDaysToRemove?: number +} + +@InputType('FormSystemUpdateFormSettingsInput') +export class UpdateFormSettingsInput { + @Field(() => Int) + id!: number + + @Field(() => FormSettingsInput) + formSettingsUpdateDto!: FormSettingsInput +} diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index b6249a7a74cf..51baab83d7e3 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -6,6 +6,7 @@ import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools import { FormListResponse } from "../../models/formListResponse.model" import { Audit } from '@island.is/nest/audit' import { UseGuards } from "@nestjs/common" +import { UpdateFormSettingsInput } from "../../dto/updateFormSettings.input" @@ -56,6 +57,17 @@ export class FormsResolver { return this.formsService.updateForm(user, input) } + @Mutation(() => Boolean, { + nullable: true, + name: 'formSystemUpdateFormSettings' + }) + async updateFormSettings( + @Args('input', { type: () => UpdateFormSettingsInput }) input: UpdateFormSettingsInput, + @CurrentUser() user: User + ): Promise { + return this.formsService.updateFormSettings(user, input) + } + @Mutation(() => Boolean, { nullable: true, name: 'formSystemDeleteForm' diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index ae0a03ced213..68a30c1e459d 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -1,14 +1,13 @@ import { Inject, Injectable } from "@nestjs/common" import { LOGGER_PROVIDER, Logger } from '@island.is/logging' -import { ApiFormsFormIdDeleteRequest, ApiFormsFormIdGetRequest, ApiFormsFormIdPutRequest, ApiFormsOrganizationOrganizationIdGetRequest, FormUpdateDto, FormsApi } from "@island.is/clients/form-system" +import { ApiFormsFormIdDeleteRequest, ApiFormsFormIdGetRequest, ApiFormsFormIdPutRequest, ApiFormsOrganizationOrganizationIdGetRequest, FormUpdateDto, FormsApi, ApiFormsFormIdSettingsPutRequest, FormSettingsUpdateDto } from "@island.is/clients/form-system" import { ApolloError } from "@apollo/client" import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { CreateFormInput, DeleteFormInput, GetFormInput, GetFormsInput, UpdateFormInput } from "../../dto/forms.input" import { FormResponse } from "../../models/formResponse.model" import { FormListResponse } from "../../models/formListResponse.model" -import { graphqlToRestInputSettings, RESTInputSettings, restToGraphqlInputSettings } from "../utils/helperFunctions" -import { Form } from "../../models/form.model" -import { Input } from "../../models/input.model" +import { UpdateFormSettingsInput } from "../../dto/updateFormSettings.input" +import { InputSettings } from "../../models/inputSettings.model" @@ -54,16 +53,20 @@ export class FormsService { if (!response || response instanceof ApolloError) { return {} } - const formattedResponse = { - ...response, - inputsList: response.form?.inputsList?.map((input) => { - return { - ...input, - inputSettings: restToGraphqlInputSettings(input.inputSettings as RESTInputSettings) - } - }) - } - return formattedResponse as FormResponse + // const formattedResponse = { + // ...response, + // inputsList: response.form?.inputsList?.map((input) => { + // const { type, ...newInputSettings } = input.inputSettings as InputSettings + // return { + // ...input, + // inputSettings: { + // ...newInputSettings, + // $type: type + // } + // } + // }) + // } + return response as FormResponse } async getForms(auth: User, input: GetFormsInput): Promise { @@ -116,10 +119,7 @@ export class FormsService { ...input.form, id: input.formId, inputsList: input.form?.inputsList?.map((input) => { - return { - ...input, - inputSettings: graphqlToRestInputSettings(input.inputSettings) - } + return input }) } @@ -127,11 +127,29 @@ export class FormsService { formId: input.formId, formUpdateDto: formattedForm as FormUpdateDto, } - console.log('request: ', request) + // const request: ApiFormsFormIdPutRequest = { + // formId: input.formId, + // formUpdateDto: input.form as FormUpdateDto + // } const response = await this.formsApiWithAuth(auth) .apiFormsFormIdPut(request) .catch((e) => this.handle4xx(e, 'failed to update form')) - console.log('response: ', response) + if (!response || response instanceof ApolloError) { + return void 0 + } + return response + } + + async updateFormSettings(auth: User, input: UpdateFormSettingsInput): Promise { + const request: ApiFormsFormIdSettingsPutRequest = { + formId: input.id, + formSettingsUpdateDto: input.formSettingsUpdateDto as FormSettingsUpdateDto + } + console.log('updateFormSettings request', request) + const response = await this.formsApiWithAuth(auth) + .apiFormsFormIdSettingsPut(request) + .catch((e) => this.handle4xx(e, 'failed to update form settings')) + if (!response || response instanceof ApolloError) { return void 0 } diff --git a/libs/api/domains/form-system/src/lib/groups/groups.service.ts b/libs/api/domains/form-system/src/lib/groups/groups.service.ts index 91b0da53aae3..bd791b5045c7 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.service.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.service.ts @@ -82,7 +82,7 @@ export class GroupsService { groupId: input.groupId, groupUpdateDto: input.groupUpdateDto as GroupUpdateDto } - + console.log('groups update request: ', request) const response = await this.groupsApiWithAuth(auth) .apiGroupsGroupIdPut(request) .catch((e) => this.handle4xx(e, 'failed to update group')) diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts index 8d298e87c607..bf7d12c63704 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts @@ -5,6 +5,9 @@ import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { InputsApi, ApiInputsInputIdGetRequest, ApiInputsPostRequest, ApiInputsInputIdDeleteRequest, ApiInputsInputIdPutRequest, InputCreationDto, InputUpdateDto } from "@island.is/clients/form-system" import { GetInputInput, CreateInputInput, DeleteInputInput, UpdateInputInput } from "../../dto/inputs.input" import { Input } from "../../models/input.model" +// import { graphql } from "graphql" +// import { RESTInputSettings, graphqlToRestInputSettings, restToGraphqlInputSettings } from "../utils/helperFunctions" +// import { InputSettings } from "../../models/inputSettings.model" @Injectable() export class InputsService { @@ -45,6 +48,10 @@ export class InputsService { if (!response || response instanceof ApolloError) { return {} } + // return { + // ...response, + // inputSettings: restToGraphqlInputSettings(response.inputSettings as RESTInputSettings) + // } as Input return response as Input } @@ -59,6 +66,7 @@ export class InputsService { if (!response || response instanceof ApolloError) { return {} } + console.log('Post input response', response) return response as Input } @@ -78,11 +86,25 @@ export class InputsService { } async updateInput(auth: User, input: UpdateInputInput): Promise { - const request: ApiInputsInputIdPutRequest = { + // const request: ApiInputsInputIdPutRequest = { + // inputId: input.inputId, + // inputUpdateDto: { + // ...input.inputUpdateDto, + // inputSettings: graphqlToRestInputSettings(input.inputUpdateDto?.inputSettings as InputSettings) + // } as InputUpdateDto, + // } + let request: ApiInputsInputIdPutRequest = { inputId: input.inputId, - inputUpdateDto: input.inputUpdateDto as InputUpdateDto, + inputUpdateDto: input.inputUpdateDto as InputUpdateDto + } + if (input.inputUpdateDto) { + request = { + inputId: input.inputId, + inputUpdateDto: input.inputUpdateDto + } } + console.log('request Input update', request) const response = await this.inputsApiWithAuth(auth) .apiInputsInputIdPut(request) .catch((e) => this.handle4xx(e, 'failed to update input')) diff --git a/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts b/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts index a6dcd01c792a..6bc41d718526 100644 --- a/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts +++ b/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts @@ -1,94 +1,124 @@ -import { LanguageType } from "../../models/global.model" -import { InputSettings, ListItem } from "../../models/inputSettings.model" +// import { LanguageType } from "../../models/global.model" +// import { InputSettings, ListItem } from "../../models/inputSettings.model" +import { InputUpdateDto } from "@island.is/clients/form-system" +import { Input } from "../../models/input.model"; -export interface RESTInputSettings { - isLarge?: boolean - size?: string - interval?: string - erHlekkur?: boolean - url?: string - hnapptexti?: LanguageType - tegundir?: string[] - hamarksstaerd?: number - erFjolval?: boolean - fjoldi?: number - header?: string - hamarkslengd?: number - lagmarkslengd?: number - laggildi?: number - hagildi?: number - listi?: ListItem[] - type?: string - name?: LanguageType - erListi?: boolean - erInnslattur?: boolean - [key: string]: unknown -} +// export interface RESTInputSettings { +// isLarge?: boolean +// size?: string +// interval?: string +// erHlekkur?: boolean +// url?: string +// hnapptexti?: LanguageType +// tegundir?: string[] +// hamarksstaerd?: number +// erFjolval?: boolean +// fjoldi?: number +// header?: string +// hamarkslengd?: number +// lagmarkslengd?: number +// laggildi?: number +// hagildi?: number +// listi?: ListItem[] +// $type?: string +// name?: LanguageType +// erListi?: boolean +// erInnslattur?: boolean +// [key: string]: unknown +// } -interface GraphQLInputSettings { - hasInput?: boolean - isList?: boolean - isLarge?: boolean - size?: string - interval?: string - list?: ListItem[] - max?: number - min?: number - maxLength?: number - minLength?: number - amount?: number - isMulti?: boolean - maxSize?: number - types?: string[] - buttonText?: LanguageType - hasLink?: boolean - type?: string - name?: LanguageType - [key: string]: unknown -} +// interface GraphQLInputSettings { +// hasInput?: boolean +// isList?: boolean +// isLarge?: boolean +// size?: string +// interval?: string +// list?: ListItem[] +// max?: number +// min?: number +// maxLength?: number +// minLength?: number +// amount?: number +// isMulti?: boolean +// maxSize?: number +// types?: string[] +// buttonText?: LanguageType +// hasLink?: boolean +// $type?: string +// name?: LanguageType +// [key: string]: unknown +// } -export function restToGraphqlInputSettings(input?: RESTInputSettings): GraphQLInputSettings { - return { - hasInput: input?.erInnslattur, - isList: input?.erListi, - isLarge: input?.isLarge, - size: input?.size, - interval: input?.interval, - list: input?.listi, - max: input?.hagildi, - min: input?.laggildi, - maxLength: input?.hamarkslengd, - minLength: input?.lagmarkslengd, - amount: input?.fjoldi, - isMulti: input?.erFjolval, - maxSize: input?.hamarksstaerd, - types: input?.tegundir, - buttonText: input?.hnapptexti, - hasLink: input?.erHlekkur, - type: input?.type, - name: input?.name, - } -} +// export const restToGraphqlInputSettings = (input?: RESTInputSettings): GraphQLInputSettings => { +// return { +// hasInput: input?.erInnslattur, +// isList: input?.erListi, +// isLarge: input?.isLarge, +// size: input?.size, +// interval: input?.interval, +// list: input?.listi, +// max: input?.hagildi, +// min: input?.laggildi, +// maxLength: input?.hamarkslengd, +// minLength: input?.lagmarkslengd, +// amount: input?.fjoldi, +// isMulti: input?.erFjolval, +// maxSize: input?.hamarksstaerd, +// types: input?.tegundir, +// buttonText: input?.hnapptexti, +// hasLink: input?.erHlekkur, +// type: input?.type, +// name: input?.name, +// } +// } -export function graphqlToRestInputSettings(input?: InputSettings): RESTInputSettings { - return { - erInnslattur: input?.hasInput, - erListi: input?.isList, - isLarge: input?.isLarge, - size: input?.size, - interval: input?.interval, - listi: input?.list, - hagildi: input?.max, - laggildi: input?.min, - hamarkslengd: input?.maxLength, - lagmarkslengd: input?.minLength, - fjoldi: input?.amount, - erFjolval: input?.isMulti, - hamarksstaerd: input?.maxSize, - tegundir: input?.types, - hnapptexti: input?.buttonText, - erHlekkur: input?.hasLink, - type: input?.type, - name: input?.name, - } -} +// export const graphqlToRestInputSettings = (input?: InputSettings): RESTInputSettings => { +// return { +// erInnslattur: input?.hasInput, +// erListi: input?.isList, +// isLarge: input?.isLarge, +// size: input?.size, +// interval: input?.interval, +// listi: input?.list, +// hagildi: input?.max, +// laggildi: input?.min, +// hamarkslengd: input?.maxLength, +// lagmarkslengd: input?.minLength, +// fjoldi: input?.amount, +// erFjolval: input?.isMulti, +// hamarksstaerd: input?.maxSize, +// tegundir: input?.types, +// hnapptexti: input?.buttonText, +// erHlekkur: input?.hasLink, +// type: input?.type, +// name: input?.name, +// } +// } + +// export const addType = (input: Input | InputUpdateDto) => { +// const types = ['TextaInnsláttur', 'Textalýsing', 'Fellilisti', 'Valhnappar', 'Skjal', 'Tölustafir', 'Fasteignanúmer', 'Klukkinnsláttur', 'Dagssetningarval'] +// const type = { +// TextaInnsláttur: 'texti', +// Textalýsing: 'textalysing', +// Fellilisti: 'fellilisti', +// Valhnappar: 'valhnappar', +// Skjal: 'skjal', +// Tölustafir: 'tolustafir', +// Fasteignanúmer: 'fasteignanumer', +// Klukkinnsláttur: 'klukkinnslattur', +// Dagssetningarval: 'dagssetningarval', +// } +// if (input.type !== null && input.type !== undefined) { +// if (types.includes(input.type)) { +// const newInputSettings = { +// ...input.inputSettings, +// $type: type[input.type as keyof typeof type] +// } +// return { +// ...input, +// inputSettings: newInputSettings, +// } +// } +// } +// return input +// } diff --git a/libs/api/domains/form-system/src/models/applicantType.model.ts b/libs/api/domains/form-system/src/models/applicantType.model.ts index 9e94e068804a..9e480c74bf84 100644 --- a/libs/api/domains/form-system/src/models/applicantType.model.ts +++ b/libs/api/domains/form-system/src/models/applicantType.model.ts @@ -19,6 +19,6 @@ export class ApplicantType { @Field(() => String, { nullable: true }) type?: string | null - @Field(() => ApplicantTypeNameSuggestion, { nullable: true }) - nameSuggestion?: ApplicantTypeNameSuggestion + @Field(() => [ApplicantTypeNameSuggestion], { nullable: 'itemsAndList' }) + nameSuggestions?: ApplicantTypeNameSuggestion[] | null } diff --git a/libs/api/domains/form-system/src/models/inputSettings.model.ts b/libs/api/domains/form-system/src/models/inputSettings.model.ts index 59d21b0bb9a1..174a5cb93049 100644 --- a/libs/api/domains/form-system/src/models/inputSettings.model.ts +++ b/libs/api/domains/form-system/src/models/inputSettings.model.ts @@ -40,7 +40,7 @@ export class InputSettings { hasLink?: boolean @Field(() => String, { nullable: true }) - url?: string + url?: string | null @Field(() => LanguageType, { nullable: true }) buttonText?: LanguageType diff --git a/libs/clients/form-system/project.json b/libs/clients/form-system/project.json index 0c091ae7ec4b..6d206e0f4078 100644 --- a/libs/clients/form-system/project.json +++ b/libs/clients/form-system/project.json @@ -43,7 +43,7 @@ "update-openapi-document": { "executor": "nx:run-commands", "options": { - "command": "curl https://profun.island.is/umsoknarkerfi/swagger/v1/swagger.json > libs/clients/form-system/src/clientConfig.json" + "command": "curl https://localhost:51345/swagger/v1/swagger.json > libs/clients/form-system/src/clientConfig.json" } } }, diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index 21815ad240fe..dcb5c1be4c8d 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -4,11 +4,6 @@ "title": "UmsóknarkerfiWebAPI", "version": "1.0" }, - "servers": [ - { - "url": "/umsoknarkerfi" - } - ], "paths": { "/api/Files": { "post": { @@ -1124,7 +1119,7 @@ "type": "string", "nullable": true }, - "listi": { + "list": { "type": "array", "items": { "$ref": "#/components/schemas/Listagildi" @@ -1409,21 +1404,21 @@ "stepsList": { "type": "array", "items": { - "$ref": "#/components/schemas/StepDto" + "$ref": "#/components/schemas/StepUpdateDto" }, "nullable": true }, "groupsList": { "type": "array", "items": { - "$ref": "#/components/schemas/GroupDto" + "$ref": "#/components/schemas/GroupUpdateDto" }, "nullable": true }, "inputsList": { "type": "array", "items": { - "$ref": "#/components/schemas/InputDto" + "$ref": "#/components/schemas/InputUpdateDto" }, "nullable": true } @@ -1508,6 +1503,10 @@ "multiSet": { "type": "integer", "format": "int32" + }, + "stepId": { + "type": "integer", + "format": "int32" } }, "additionalProperties": false @@ -1635,6 +1634,10 @@ }, "inputSettings": { "$ref": "#/components/schemas/BaseInputSettings" + }, + "groupId": { + "type": "integer", + "format": "int32" } }, "additionalProperties": false diff --git a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts index e752526b0f64..3882e867fbb6 100644 --- a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts +++ b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts @@ -6,7 +6,14 @@ import { } from '@island.is/nest/config' import { FormSystemClientConfig } from './FormSystemClient.config' import { Configuration, FilesApi, FormsApi, GroupsApi, InputsApi, OrganizationsApi, ServicesApi, StepsApi } from '../../gen/fetch' +import * as https from 'https'; +import fetch, { RequestInfo, RequestInit } from 'node-fetch'; +const httpsAgent = new https.Agent({ // remove + rejectUnauthorized: false, // This will ignore SSL certificates +}); + +const fetchWithHttpsAgent = (url: RequestInfo, options: RequestInit | undefined) => fetch(url, { ...options, agent: httpsAgent }); //remove const provideApi = ( Api: new (configuration: Configuration) => T, @@ -22,6 +29,7 @@ const provideApi = ( name: 'form-system', organizationSlug: 'stafraent-island', logErrorResponseBody: true, + fetch: fetchWithHttpsAgent // remove }), basePath: config.basePath, headers: { diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index 19b9da808e20..6be8509b597a 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -10,7 +10,8 @@ export const FormSystemClientConfig = defineConfig({ schema, load(env) { return { - basePath: env.required('FORM_SYSTEM_API_BASE_PATH', 'https://profun.island.is/umsoknarkerfi'), + //basePath: env.required('FORM_SYSTEM_API_BASE_PATH', 'https://profun.island.is/umsoknarkerfi'), + basePath: env.required('FORM_SYSTEM_API_BASE_PATH', 'https://localhost:51345') } } }) diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index eb0930a10b0c..dc5e9a3c99fa 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -13,6 +13,8 @@ import { FormSystemGroup, FormSystemStep } from '@island.is/api/schema' import BaseSettings from './components/BaseSettings/BaseSettings' import Premises from './components/Premises/Premises' import InputContent from './components/InputContent/InputContent' +import PreviewStepOrGroup from './components/PreviewStepOrGroup/PreviewStepOrGroup' +import RelevantParties from './components/RelevantParties/RevelantParties' export default function MainContent() { const { control, controlDispatch, updateActiveItem, setFocus, focus } = useContext(ControlContext) @@ -29,77 +31,80 @@ export default function MainContent() { (activeItem.data as FormSystemStep).type === 'BaseSetting' ? () : activeItem.type === 'Step' && (activeItem.data as FormSystemStep).type === 'Forsendur' ? () - : - < Stack space={2}> - - - - controlDispatch({ - type: 'CHANGE_NAME', - payload: { - lang: 'is', - newValue: e.target.value, - }, - }) - } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - - - - controlDispatch({ - type: 'CHANGE_NAME', - payload: { - lang: 'en', - newValue: e.target.value, - }, + : activeItem.type === 'Step' && (activeItem.data as FormSystemStep).type === 'Aðilar' ? + : openPreview ? ( + + ) : + < Stack space={2}> + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'en', + newValue: e.target.value, + }, - })} - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - {activeItem.type === 'Group' && ( - - - - // listsDispatch({ - // type: 'setMultiSet', - // payload: { - // checked: e.target.checked, - // }, - // }) - // } - /> - - - )} - - - - - - + })} + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + {activeItem.type === 'Group' && ( + + + + // listsDispatch({ + // type: 'setMultiSet', + // payload: { + // checked: e.target.checked, + // }, + // }) + // } + /> + + + )} + + + + + + } ) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index 73a4769de037..1bf4e1597bc6 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -11,7 +11,7 @@ import { useContext } from 'react' import ControlContext from '../../../../context/ControlContext' export const BaseSettings = () => { - const { control, controlDispatch, setFocus, focus, formSettingsUpdate } = useContext(ControlContext) + const { control, controlDispatch, setFocus, focus, formSettingsUpdate, formUpdate } = useContext(ControlContext) const { form } = control console.log('BaseSettings form', form) return ( @@ -25,7 +25,7 @@ export const BaseSettings = () => { value={form?.name?.is ?? ''} backgroundColor={'blue'} onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && formSettingsUpdate()} + onBlur={(e) => e.target.value !== focus && formUpdate()} onChange={(e) => controlDispatch({ type: 'CHANGE_FORM_NAME', payload: { lang: 'is', newValue: e.target.value } })} /> @@ -37,7 +37,7 @@ export const BaseSettings = () => { value={form?.name?.en ?? ''} backgroundColor="blue" onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && formSettingsUpdate()} + onBlur={(e) => e.target.value !== focus && formUpdate()} onChange={(e) => controlDispatch({ type: 'CHANGE_FORM_NAME', payload: { lang: 'en', newValue: e.target.value } })} /> @@ -56,7 +56,7 @@ export const BaseSettings = () => { backgroundColor="blue" type="number" onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && formSettingsUpdate()} + onBlur={(e) => e.target.value !== focus && formUpdate()} onChange={(e) => controlDispatch({ type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE', payload: { value: parseInt(e.target.value) } })} /> @@ -75,7 +75,7 @@ export const BaseSettings = () => { handleChange={(e) => { controlDispatch({ type: 'CHANGE_INVALIDATION_DATE', payload: { value: e } }) }} - handleCloseCalendar={() => formSettingsUpdate()} + handleCloseCalendar={() => formUpdate()} /> @@ -85,8 +85,8 @@ export const BaseSettings = () => { label="Leyfa notanda að halda áfram í umsókninni með ógild/óútfyllt gildi" checked={form.stopProgressOnValidatingStep ?? false} onChange={(e) => { - console.log('stopProgressOnValidatingStep', e.target.checked) - formSettingsUpdate({ ...form, stopProgressOnValidatingStep: e.target.checked }) + controlDispatch({ type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP', payload: { value: e.target.checked } }) + formUpdate({ ...form, stopProgressOnValidatingStep: e.target.checked }) }} /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx index 71bb0bea6e35..5e9a2ac87e6c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx @@ -4,16 +4,22 @@ import { Stack } from "@island.is/island-ui/core" import BaseInput from "./components/BaseInput" import Preview from "../Preview/Preveiw" import { FormSystemInput } from "@island.is/api/schema" +import InputSettings from "./components/InputSettings/InputSettings" +import ListBuilder from "./components/ListBuilder/ListBuilder" const InputContent = () => { - const { control, selectStatus, setSelectStatus } = useContext(ControlContext) + const { control, selectStatus, setSelectStatus, inListBuilder } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput + + if (inListBuilder) { + return + } return ( - + ) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx index e69de29bb2d1..f0b125c11ac1 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx @@ -0,0 +1,28 @@ +import { useContext } from "react" +import ControlContext from "../../../../../../context/ControlContext" +import { FormSystemInput } from "@island.is/api/schema" +import MessageWithLinkSettings from "./components/MessageWithLinkSettings" +import FileUploadSettings from "./components/FIleUploadSettings" +import TextInputSettings from "./components/TextInputSettings" +import ListSettings from "./components/ListSettings" + + +const InputSettings = () => { + const { control } = useContext(ControlContext) + const currentItem = control.activeItem.data as FormSystemInput + return ( + <> + {currentItem.type === 'Textalýsing' && ( + + )} + {currentItem.type === 'Skjal' && ( + + )} + {currentItem.type === 'Textalínubox' || currentItem.type === 'TextaInnsláttur' && } + {currentItem.type === 'Fellilisti' && } + {currentItem.type === 'Valhnappar' && } + + ) +} + +export default InputSettings diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx new file mode 100644 index 000000000000..b1b8bdeca672 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx @@ -0,0 +1,179 @@ +import { + GridRow as Row, + GridColumn as Column, + Checkbox, + Stack, + Box, + Select, + Text, + Option, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import { fileTypes } from '../../../../../../../utils/fileTypes' +import ControlContext from '../../../../../../../context/ControlContext' +import { FormSystemInput } from '@island.is/api/schema' + +const fileSizes = { + "fileSizes": [ + { + "label": "1 mb", + "value": 1048576 + }, + { + "label": "2 mb", + "value": 2097152 + }, + { + "label": "3 mb", + "value": 3145728 + }, + { + "label": "4 mb", + "value": 4194304 + }, + { + "label": "5 mb", + "value": 5242880 + }, + { + "label": "6 mb", + "value": 6291456 + }, + { + "label": "7 mb", + "value": 7340032 + }, + { + "label": "8 mb", + "value": 8388608 + }, + { + "label": "9 mb", + "value": 9437184 + }, + { + "label": "10 mb", + "value": 10485760 + } + ] +} + +const FileUploadSettings = () => { + const { control, controlDispatch, updateActiveItem } = useContext(ControlContext) + const { activeItem } = control + const currentItem = activeItem.data as FormSystemInput + const { inputSettings } = currentItem + + const fileSizeOptions = fileSizes.fileSizes.map((size) => ({ + label: size.label, + value: size.value, + })) + + const fileAmountOptions: Option[] = [ + { label: '1', value: 1 }, + { label: '2', value: 2 }, + { label: '3', value: 3 }, + { label: '4', value: 4 }, + { label: '5', value: 5 }, + { label: '6', value: 6 }, + { label: '7', value: 7 }, + { label: '8', value: 8 }, + { label: '9', value: 9 }, + { label: '10', value: 10 }, + ] + + return ( + + + + controlDispatch({ + type: 'SET_FILE_UPLOAD_SETTINGS', + payload: { + property: 'isMulti', + checked: e.target.checked, + update: updateActiveItem + } + })} + /> + + + + + f.value === inputSettings.amount, + )} + options={fileAmountOptions} + onChange={(e) => controlDispatch({ + type: 'SET_FILE_UPLOAD_SETTINGS', + payload: { + property: 'amount', + value: e?.value, + update: updateActiveItem + } + })} + /> + + )} + + + + Leyfa eftirfarandi skjalatýpur + + + + {Object.entries(fileTypes).map(([key, value], i) => ( + + {key !== 'default' && ( + controlDispatch({ + type: 'SET_FILE_UPLOAD_SETTINGS', + payload: { + property: 'types', + checked: e.target.checked, + value: key, + update: updateActiveItem + } + })} + /> + )} + + ))} + + + ) +} + +export default FileUploadSettings diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx new file mode 100644 index 000000000000..c713a00ed796 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -0,0 +1,100 @@ +import { useContext, useState } from "react" +import ControlContext from "../../../../../../../context/ControlContext" +import { + GridColumn as Column, + GridRow as Row, + Select, + Stack, + Box, + Button, + RadioButton, + Option, +} from '@island.is/island-ui/core' +import { FormSystemInput } from "@island.is/api/schema" + +const predeterminedLists = [ + { + label: 'Sveitarfélög', + value: 'Sveitarfelog', + }, + { + label: 'Lönd', + value: 'Lond', + }, + { + label: 'Póstnúmer', + value: 'Postnumer', + }, + { + label: 'Iðngreinarmeistara', + value: 'Idngreinarmeistara', + }, +] + +// Need to fix the radio buttons +const ListSettings = () => { + const { control, controlDispatch, setInListBuilder } = useContext(ControlContext) + const { activeItem } = control + const currentItem = activeItem.data as FormSystemInput + const [radio, setRadio] = useState([true, false, false]) + + const radioHandler = (index: number) => { + if (!radio[index]) + setRadio((prev) => + prev.map((_, i) => { + return index === i + }), + ) + } + + return ( + + {currentItem.type === 'Fellilisti' && ( + <> + + + radioHandler(0)}> + { console.log() }} checked={radio[0]} /> + + + + + + { console.log() }} checked={radio[1]} /> + + + + )} + {radio[0] && ( + + )} + {radio[1] && ( + + { }} + /> + + + { }} + /> + + + + ) + } + + return ( + + + + { + setSelectStatus( + e + ? NavbarSelectStatus.LIST_ITEM + : NavbarSelectStatus.ON_WITHOUT_SELECT + ) + setConnecting((prev) => + prev.map((_, i) => (i === index ? e : false)) + ) + controlDispatch({ type: 'SET_ACTIVE_LIST_ITEM', payload: { listItem: e ? listItem : null } }) + }} + /> + + controlDispatch({ + type: 'SET_LIST_ITEM_SELECTED', + payload: { + guid: listItem.guid ?? '', + update: updateActiveItem, + } + }) + } + /> + + + + controlDispatch({ + type: 'REMOVE_LIST_ITEM', + payload: { + guid: listItem.guid ?? '', + update: updateActiveItem, + }, + }) + } + > + + + + + + + + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_LIST_ITEM', + payload: { + property: 'label', + lang: 'is', + value: e.target.value, + guid: listItem.guid ?? '', + update: updateActiveItem, + }, + }) + } + /> + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_LIST_ITEM', + payload: { + property: 'label', + lang: 'en', + value: e.target.value, + guid: listItem.guid ?? '', + update: updateActiveItem, + }, + }) + } + /> + + + + {isRadio && ( + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_LIST_ITEM', + payload: { + property: 'description', + lang: 'is', + value: e.target.value, + guid: listItem.guid ?? '', + update: updateActiveItem, + }, + }) + } + /> + + + setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_LIST_ITEM', + payload: { + property: 'description', + lang: 'en', + value: e.target.value, + guid: listItem.guid ?? '', + update: updateActiveItem, + }, + }) + } + /> + + + )} + + ) +} + + +export default ListItem diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 907bf7291d67..48be875ba766 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -5,7 +5,7 @@ import { FormSystemDocumentType } from '@island.is/api/schema' const Premises = () => { - const { control, documentTypes, formSettingsUpdate } = useContext(ControlContext) + const { control, documentTypes, updateSettings } = useContext(ControlContext) const [formDocumentTypes, setFormDocumentTypes] = useState(control.form?.documentTypes?.filter((d): d is FormSystemDocumentType => d !== null) ?? []) const handleCheckboxChange = (documentTypeId: number) => { @@ -19,7 +19,7 @@ const Premises = () => { documentTypes?.find((d) => d?.id === documentTypeId), ].filter((d) => d !== undefined) as FormSystemDocumentType[]) setFormDocumentTypes(newDocumentTypes) - formSettingsUpdate({ ...control.form, documentTypes: newDocumentTypes }) + updateSettings({ ...control.form, documentTypes: newDocumentTypes }) } return ( diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 50668f66827e..3e350876914a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -1,20 +1,50 @@ import { FormSystemInput } from "@island.is/api/schema" -import { Box } from "@island.is/island-ui/core" +import { Box, DatePicker, Text } from "@island.is/island-ui/core" import MessageWithLink from "./components/MessageWithLink" +import Banknumber from "./components/Banknumber" +import Email from "./components/Email" +import NationalId from "./components/NationalId" +import FileUpload from "./components/FileUpload" +import TextInput from "./components/TextInput" +import List from "./components/List" +import Radio from "./components/Radio" +import Currency from "./components/Currency" interface Props { data: FormSystemInput } const Preview = ({ data }: Props) => { + const { type } = data return ( - {data.type === 'Textalýsing' && ( + {type === 'Textalýsing' && ( )} + {type === 'Bankareikningur' && ( + + {data?.name?.is} + + + )} + {type === 'Netfang' && } + {type === 'Dagssetningarval' && ( + + + + )} + {type === 'Kennitala' && } + {type === 'Skjal' && } + {type === 'Textalínubox' || type === 'TextaInnsláttur' && } + {type === 'Fellilisti' && } + {type === 'Valhnappar' && } + {type === 'Krónutölubox' && } ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx new file mode 100644 index 000000000000..c54284c02d3a --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx @@ -0,0 +1,113 @@ +import { + GridRow as Row, + GridColumn as Column, + Input, + Box, +} from '@island.is/island-ui/core' +import { useRef, useState } from 'react' + +const Banknumber = () => { + const [banki, setBanki] = useState('') + const [hb, setHb] = useState('') + const [reikningur, setReikningur] = useState('') + const inputRefs = [ + useRef(), + useRef(), + useRef(), + ] + + const handleChange = (index: number, value: string) => { + if (index === 0) { + setBanki(value) + if (value.length === 4) { + if (inputRefs[1]?.current) { + inputRefs[1]?.current.focus() + } + } + } else if (index === 1) { + setHb(value) + if (value.length === 2) { + if (inputRefs[2]?.current) { + inputRefs[2]?.current.focus() + } + } + } else if (index === 2) { + if (value.length <= 6) { + setReikningur(value) + } + if (value.length === 6) { + if (inputRefs[2]?.current) { + inputRefs[2]?.current.blur() + } + } + } + } + + const addLeadingZeros = (originalNumber: string, max: number) => { + const zerosToAdd = max - originalNumber.length + if (zerosToAdd <= 0) { + return originalNumber + } + if (originalNumber.length === 0) { + return originalNumber + } + const leadingZeros = '0'.repeat(zerosToAdd) + return leadingZeros + originalNumber + } + + return ( + + + + + } + label="Banki" + type="number" + value={banki} + maxLength={4} + name="" + onChange={(e) => handleChange(0, e.target.value)} + onBlur={(e) => setBanki(addLeadingZeros(e.target.value, 4))} + /> + + + + } + label="Hb" + maxLength={2} + type="number" + value={hb} + name="" + onChange={(e) => handleChange(1, e.target.value)} + onBlur={(e) => setHb(addLeadingZeros(e.target.value, 2))} + /> + + + + } + label="Reikningsnúmer" + type="number" + value={reikningur} + name="" + onChange={(e) => handleChange(2, e.target.value)} + onBlur={(e) => setReikningur(addLeadingZeros(e.target.value, 6))} + /> + + + + ) +} + +export default Banknumber diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx new file mode 100644 index 000000000000..759c8b483d66 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx @@ -0,0 +1,38 @@ + +import { + GridRow as Row, + GridColumn as Column, + Input, +} from '@island.is/island-ui/core' +import { ChangeEvent, useContext, useState } from 'react' +import ControlContext from '../../../../../context/ControlContext' + +const Currency = () => { + const [currency, setCurrency] = useState('') + const { control } = useContext(ControlContext) + const label = control.activeItem?.data?.name?.is + const handleCurrencyChange = ( + e: ChangeEvent, + ) => { + // Remove any non-digit characters from the input value + const inputValue = e.target.value.replace(/\D/g, '') + + // Split the input value into groups of three characters + const formattedValue = inputValue.replace(/\B(?=(\d{3})+(?!\d))/g, '.') + setCurrency(formattedValue) + } + return ( + + + + + + ) +} + +export default Currency diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx new file mode 100644 index 000000000000..8d52b21dca8c --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx @@ -0,0 +1,33 @@ +import { useContext, useState } from 'react' +import { Input, Stack, Text } from '@island.is/island-ui/core' +import ControlContext from '../../../../../context/ControlContext' + + +export const Email = () => { + const { control } = useContext(ControlContext) + const { activeItem } = control + const [email, setEmail] = useState('') + const [hasError, setHasError] = useState(false) + const isValidEmail = (): boolean => { + const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ + const res = pattern.test(email) + return !res + } + return ( + + {activeItem?.data?.name?.is} + setEmail(e.target.value)} + onBlur={() => setHasError(isValidEmail())} + errorMessage="Ekki gilt netfang" + hasError={hasError} + /> + + ) +} + +export default Email diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx new file mode 100644 index 000000000000..3d4a32d532cc --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx @@ -0,0 +1,69 @@ +import { + InputFileUpload, + UploadFile, + fileToObject, +} from '@island.is/island-ui/core' +import { useState } from 'react' +import { uuid } from 'uuidv4' +import { FormSystemInput } from '@island.is/api/schema' +import { fileTypes } from '../../../../../utils/fileTypes' + +type Props = { + currentItem: FormSystemInput +} + +const FileUpload = ({ currentItem }: Props) => { + const [error, setError] = useState(undefined) + const [fileList, setFileList] = useState>([]) + + + const onChange = (files: File[]) => { + const uploadFiles = files.map((file) => fileToObject(file)) + const uploadFilesWithKey = uploadFiles.map((f) => ({ + ...f, + key: uuid(), + })) + + // Check whether upload will exceed limit and if so, prevent it + const currentAmount = currentItem?.inputSettings?.amount ?? 0 + if (fileList.length + uploadFilesWithKey.length > currentAmount) { + setError(`Hámarksfjöldi skjala er ${currentItem.inputSettings?.amount}`) + return + } + setError('') + const newFileList = [...fileList, ...uploadFilesWithKey] + setFileList(newFileList) + } + + const onRemove = (fileToRemove: UploadFile) => { + const newFileList = fileList.filter((file) => file.key !== fileToRemove.key) + setFileList(newFileList) + } + + return ( + <> + `${f} `, + )}`} + buttonLabel="Veldu skjöl til að hlaða upp" + onChange={onChange} + onRemove={onRemove} + errorMessage={fileList.length > 0 ? error : undefined} + accept={ + currentItem?.inputSettings?.types?.map( + (t) => fileTypes[t as keyof typeof fileTypes], + ) ?? [] + } + showFileSize + maxSize={currentItem?.inputSettings?.maxSize ?? 1} + multiple={currentItem?.inputSettings?.isMulti ?? false} + /> + + ) +} + +export default FileUpload diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx new file mode 100644 index 000000000000..0c09856669f5 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -0,0 +1,34 @@ +import { FormSystemInput, FormSystemListItem } from "@island.is/api/schema" +import { useEffect, useState } from "react" +import { Select } from '@island.is/island-ui/core' + +interface Props { + currentItem: FormSystemInput +} + +type ListItem = { + label: string + value: string | number +} + +const List = ({ currentItem }: Props) => { + const [listItems, setListItems] = useState([]) + + useEffect(() => { + const currentList = currentItem.inputSettings?.list ?? [] + setListItems( + currentList.map((l) => ({ + label: l?.label?.is ?? '', + value: l?.label?.is ?? '', + })), + ) + }, [currentItem.inputSettings?.list]) + + return ( + <> + + + + + + + + ) +} +export default NationalId diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx new file mode 100644 index 000000000000..98ec59caa935 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx @@ -0,0 +1,59 @@ +import { FormSystemInput, FormSystemListItem } from "@island.is/api/schema" +import { RadioButton, Text, Box } from '@island.is/island-ui/core' +import { useEffect, useState } from "react" + +interface Props { + currentItem: FormSystemInput +} + +const Radio = ({ currentItem }: Props) => { + const radioButtons = currentItem.inputSettings?.list + const [radioChecked, setRadioChecked] = useState([]) + + useEffect(() => { + setRadioChecked(radioButtons?.map(() => false) ?? []) + }, [radioButtons]) + + const radioButton = (rb: FormSystemListItem, index: number) => ( + + setRadioChecked((prev) => + prev.map((rb, i) => (i === index ? true : false)), + ) + } + > + + + ) + + return ( + <> + + {currentItem?.name?.is} + + + {radioButtons?.map((rb, index) => radioButton(rb, index))} + + + ) +} + +export default Radio diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx new file mode 100644 index 000000000000..e0ecbf451678 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx @@ -0,0 +1,20 @@ +import { FormSystemInput } from "@island.is/api/schema" +import { Input } from "@island.is/island-ui/core" + +interface Props { + data: FormSystemInput +} + +const TextInput = ({ data }: Props) => { + const { inputSettings } = data + + return ( + + ) +} + +export default TextInput diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx new file mode 100644 index 000000000000..48d00f321957 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx @@ -0,0 +1,91 @@ +import { Dispatch, SetStateAction, useContext, useEffect } from "react" +import { Box, Button, Text } from '@island.is/island-ui/core' +import ControlContext from "../../../../context/ControlContext" +import { FormSystemGroup, FormSystemInput } from "@island.is/api/schema" +import { NavbarSelectStatus } from "../../../../lib/utils/interfaces" +import Preview from "../Preview/Preveiw" +import MultiSet from "./components/MultiSet" + +interface Props { + setOpenPreview: Dispatch> +} + +const PreviewStepOrGroup = ({ setOpenPreview }: Props) => { + const { control, setSelectStatus } = useContext(ControlContext) + const { activeItem, form } = control + const { groupsList: groups, inputsList: inputs } = form + const { type } = activeItem + + useEffect(() => { + setSelectStatus(NavbarSelectStatus.ON_WITHOUT_SELECT) + }, []) + return ( + + {type === 'Step' && ( + <> + + {activeItem?.data?.name?.is} + + {groups + ?.filter((g) => g?.stepGuid === activeItem?.data?.guid) + .map((g) => ( + + + {g?.name?.is} + + {g?.multiSet !== 0 ? ( + + ) : ( + inputs + ?.filter((i) => i?.groupGuid === g?.guid) + .map((i) => ( + + )) + )} + + ))} + + )} + {type === 'Group' && ( + + + {activeItem?.data?.name?.is} + + {(activeItem.data as FormSystemGroup).multiSet !== 0 ? ( + + ) : ( + inputs + ?.filter((i) => i?.groupGuid === activeItem?.data?.guid) + .map((i) => ( + + )) + )} + + )} + + + + + ) +} + +export default PreviewStepOrGroup diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/components/MultiSet.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/components/MultiSet.tsx new file mode 100644 index 000000000000..c92d6f466e23 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/components/MultiSet.tsx @@ -0,0 +1,59 @@ +import { useContext, useState } from 'react' +import { Box, Icon } from '@island.is/island-ui/core' +import { FormSystemGroup, FormSystemInput } from '@island.is/api/schema' +import ControlContext from '../../../../../context/ControlContext' +import Preview from '../../Preview/Preveiw' + +interface Props { + group: FormSystemGroup +} +const MultiSet = ({ group }: Props) => { + const { control } = useContext(ControlContext) + const { inputsList: inputs } = control.form + const originalInput = inputs?.filter((i) => i?.groupGuid === group.guid) + const [multiInput, setMultiInput] = useState([ + (inputs?.filter((i) => i?.groupGuid === group.guid) || []) as FormSystemInput[], + ]) + const add = () => { + if (originalInput) { + setMultiInput((prev) => [...prev, originalInput as FormSystemInput[]]) + } + } + return ( + + {multiInput.map((inputArray, index) => ( +
+ {inputArray.map((i) => ( + + ))} +
+ ))} + + + + + +
+ ) +} + +export default MultiSet diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx new file mode 100644 index 000000000000..3d475571972d --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx @@ -0,0 +1,291 @@ +import { useContext, useState } from "react" +import ControlContext from "../../../../context/ControlContext" +import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' +import { FormSystemApplicantType, FormSystemFormApplicantType, FormSystemLanguageType } from "@island.is/api/schema" +import { EFormApplicantTypes } from "../../../../lib/utils/interfaces" +import FormApplicantType from "./components/FormApplicantType" + +const applicantTypeLabel = [ + 'Einstaklingur (innskráður)', + 'Einstaklingur í umboði annars einstaklings', + 'Einstaklingur í umboði lögaðila', + 'Einstaklingur með prókúru', + 'Umboðsveitandi (einstaklingur)', + 'Lögaðili', +] + +const applicantTypes = [ + 'Einstaklingur', + 'Einstaklingur_með_umboð_annars_einstaklings', + 'Einstaklingur_með_umboð_lögaðila', + 'Einstaklingur_með_prókúru', + 'Einstaklingur_umboðsveitandi', + 'Lögaðili', +] + + +export const RelevantParties = () => { + const { applicantTypes: applicantTypeTemplates, control, updateSettings } = useContext(ControlContext) + const { form } = control + const { id: formId } = form + const [formApplicantTypes, setFormApplicantTypes] = useState( + (form.formApplicantTypes ?? []).filter(Boolean) as FormSystemFormApplicantType[] + ) + const [focus, setOnFocus] = useState('') + + const createFormApplicantType = ( + type: string, + template: FormSystemApplicantType + ): FormSystemFormApplicantType => { + return { + __typename: undefined, + type, + name: template?.nameSuggestions?.[0]?.nameSuggestion ?? { + __typename: undefined, + is: '', + en: '' + }, + applicantTypeId: template.id, + formId, + } + } + + const isOther = (applicant: FormSystemFormApplicantType) => { + const template = applicantTypeTemplates?.find( + (at) => at?.id === applicant.applicantTypeId, + ) + if (!template) { + return true + } + if ( + template?.nameSuggestions?.some( + (ns) => ns?.nameSuggestion?.is === applicant?.name?.is, + ) + ) { + return false + } + return true + } + + const handleSelect = (e: { label: string; value: string }, index: number) => { + const newApplicantTypes = formApplicantTypes.map((f, i) => { + if (i === index) { + return { + ...f, + name: { + __typename: undefined, + is: e.label, + en: e.value, + }, + } + } + return f + }) + updateSettings({ ...form, formApplicantTypes: newApplicantTypes }) + setFormApplicantTypes(newApplicantTypes) + } + + const onFocus = (value: string) => { + setOnFocus(value) + } + + const blur = (value: string) => { + if (focus !== value) { + updateSettings({ ...form, formApplicantTypes: formApplicantTypes }) + } + setOnFocus('') + } + + const handleCheckboxChange = (checked: boolean, index: number) => { + const updateFormApplicantTypes = ( + newFormApplicantTypes: FormSystemFormApplicantType[], + ) => { + const hasLegalEntity = formApplicantTypes.some( + (f) => f.type === EFormApplicantTypes.logadili, + ) + const newTypes = hasLegalEntity + ? newFormApplicantTypes.filter( + (f) => f.type !== EFormApplicantTypes.logadili, + ) + : newFormApplicantTypes + const newList = [...formApplicantTypes, ...newTypes] + updateSettings({ ...form, formApplicantTypes: newList }) + setFormApplicantTypes([...formApplicantTypes, ...newTypes]) + } + + const removeFormApplicantTypes = (types: EFormApplicantTypes[]) => { + const newList = formApplicantTypes.filter((f) => !types.includes(f.type as EFormApplicantTypes)) + updateSettings({ ...form, formApplicantTypes: newList }) + setFormApplicantTypes(newList) + } + + if (checked) { + if (index === 0) { + const template = applicantTypeTemplates?.find( + (at) => at?.type === applicantTypes[index], + ) + if (template !== undefined && template !== null) { + const newFormApplicantType: FormSystemFormApplicantType = + createFormApplicantType(EFormApplicantTypes.einstaklingur, template) + updateSettings({ ...form, formApplicantTypes: [...formApplicantTypes, newFormApplicantType] }) + setFormApplicantTypes([...formApplicantTypes, newFormApplicantType]) + } + } else if (index === 1) { + const delegatorTemplate = applicantTypeTemplates?.find( + (at) => at?.id === 2, + ) + const delegateeTemplate = applicantTypeTemplates?.find( + (at) => at?.id === 5, + ) + if ( + delegatorTemplate === undefined || delegatorTemplate === null || + delegateeTemplate === undefined || delegateeTemplate === null + ) { + return + } + const newFormApplicantTypes: FormSystemFormApplicantType[] = [ + createFormApplicantType( + EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, + delegatorTemplate, + ), + createFormApplicantType( + EFormApplicantTypes.einstaklingurUmbodsveitandi, + delegateeTemplate, + ), + ] + setFormApplicantTypes([...formApplicantTypes, ...newFormApplicantTypes]) + } else if (index === 2) { + const delegatorTemplate = applicantTypeTemplates?.find( + (at) => at?.id === 6, + ) + const delegateeTemplate = applicantTypeTemplates?.find( + (at) => at?.id === 3, + ) + if ( + delegatorTemplate === undefined || delegatorTemplate === null || + delegateeTemplate === undefined || delegateeTemplate === null + ) { + return + } + const newFormApplicantTypes: FormSystemFormApplicantType[] = [ + createFormApplicantType( + EFormApplicantTypes.einstaklingurMedUmbodLogadila, + delegateeTemplate, + ), + createFormApplicantType( + EFormApplicantTypes.logadili, + delegatorTemplate, + ), + ] + updateFormApplicantTypes(newFormApplicantTypes) + } else if (index === 3) { + const procurationHolder = applicantTypeTemplates?.find( + (at) => at?.id === 4, + ) + const legalEntity = applicantTypeTemplates?.find((at) => at?.id === 6) + if (procurationHolder === undefined || procurationHolder === null || legalEntity === undefined || legalEntity === null) { + return + } + + const newFormApplicantTypes: FormSystemFormApplicantType[] = [ + createFormApplicantType( + EFormApplicantTypes.einstaklingurMedProkuru, + procurationHolder, + ), + createFormApplicantType(EFormApplicantTypes.logadili, legalEntity), + ] + updateFormApplicantTypes(newFormApplicantTypes) + } + } else { + if (index === 0) { + removeFormApplicantTypes([EFormApplicantTypes.einstaklingur]) + } else if (index === 1) { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, + EFormApplicantTypes.einstaklingurUmbodsveitandi, + ]) + } else if (index === 2) { + if ( + formApplicantTypes.some( + (f) => f.type === EFormApplicantTypes.einstaklingurMedProkuru, + ) + ) { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedUmbodLogadila, + ]) + } else { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedUmbodLogadila, + EFormApplicantTypes.logadili, + ]) + } + } else if (index === 3) { + if ( + formApplicantTypes.some( + (f) => f.type === EFormApplicantTypes.einstaklingurMedUmbodLogadila, + ) + ) { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedProkuru, + ]) + } else { + removeFormApplicantTypes([ + EFormApplicantTypes.einstaklingurMedProkuru, + EFormApplicantTypes.logadili, + ]) + } + } + } + } + + return ( + + + + Veldu þá einstaklinga sem mega opna þessa umsókn + + + + + {applicantTypeLabel.slice(0, 4).map((label, index) => ( + f.type === applicantTypes?.[index], + )} + onChange={(e) => handleCheckboxChange(e.target.checked, index)} + /> + ))} + + + {formApplicantTypes.length > 0 && ( + + Skilgreindu hlutaðeigandi aðila + + )} + {formApplicantTypes.map((f, i) => ( + at?.id === f.applicantTypeId) + ?.nameSuggestions?.map((ns) => ns?.nameSuggestion) ?? []) as FormSystemLanguageType[] + } + formApplicantType={f} + index={i} + handleSelect={handleSelect} + blur={blur} + setOnFocus={onFocus} + setFormApplicantTypes={setFormApplicantTypes} + isOther={isOther(f)} + /> + ))} + + ) +} + +export default RelevantParties + diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx new file mode 100644 index 000000000000..d6615e51b531 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx @@ -0,0 +1,144 @@ +import React, { useState } from 'react' +import { + Box, + GridColumn as Column, + GridRow as Row, + Input, + Select, + Stack, + Text, +} from '@island.is/island-ui/core' +import { FormSystemFormApplicantType, FormSystemLanguageType } from '@island.is/api/schema' + +interface Props { + title: string + nameSuggestions?: FormSystemLanguageType[] + name: FormSystemLanguageType + formApplicantType: FormSystemFormApplicantType + handleSelect( + e: { + label: string + value: string + }, + index: number, + ): void + index: number + blur(value: string): void + setOnFocus(value: string): void + setFormApplicantTypes: React.Dispatch< + React.SetStateAction + > + isOther: boolean +} + +const FormApplicantType = ({ + title, + name, + nameSuggestions, + handleSelect, + index, + blur, + setOnFocus, + setFormApplicantTypes, + isOther, +}: Props) => { + const [inputEnabled, setInputEnabled] = useState(false) + const other = { label: 'Annað', value: 'Annað' } + + const getOptions = () => { + const options = nameSuggestions?.map((suggestion) => { + return { + label: suggestion?.is ?? '', + value: suggestion?.en ?? '', + } + }) || [] + options.push(other); + return options + } + + const handleSelectChange = (e: { label: string; value: string }) => { + if (e.label === 'Annað') { + setInputEnabled(true) + } else { + setInputEnabled(false) + handleSelect(e, index) + } + } + + const handleInputChange = ( + e: React.ChangeEvent, + language: 'is' | 'en', + ) => { + setFormApplicantTypes((prev: FormSystemFormApplicantType[]) => { + const newApplicantTypes = prev.map((f: FormSystemFormApplicantType, i: number) => { + if (i === index) { + return { + ...f, + name: { + ...f.name, + [language]: e.target.value, + }, + } + } + return f + }) + return newApplicantTypes + }) + } + + return ( + + + + + + {title} + + + + + + setOnFocus(e.target.value)} + onBlur={(e) => blur(e.target.value)} + onChange={(e) => handleInputChange(e, 'is')} + /> + + + setOnFocus(e.target.value)} + onBlur={(e) => blur(e.target.value)} + onChange={(e) => handleInputChange(e, 'en')} + /> + + + + + ) +} + +export default FormApplicantType diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index dbae94dcdc2a..87186ffc21b3 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -22,8 +22,8 @@ import ControlContext, { IControlContext } from '../../context/ControlContext' import { useFormSystemCreateStepMutation } from '../../gql/Step.generated' import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' import { ItemType } from '../../lib/utils/interfaces' +import { removeTypename } from '../../lib/utils/removeTypename' -type ActionType = 'removeStep' | 'removeGroup' | 'removeInput' type DndAction = | 'STEP_OVER_STEP' @@ -38,7 +38,8 @@ export default function Navbar() { controlDispatch, setInSettings, inSettings, - updateDnD + updateDnD, + formUpdate } = useContext(ControlContext) as IControlContext const { activeItem, form } = control @@ -54,26 +55,24 @@ export default function Navbar() { }, }), ) - const [createStep, { data, loading, error }] = useFormSystemCreateStepMutation({ - variables: { - input: { - stepCreationDto: { - formId: form?.id as number, - displayOrder: steps?.length + const [createStep, { data, loading, error }] = useFormSystemCreateStepMutation() + + const addStep = async () => { + const newStep = await createStep({ + variables: { + input: { + stepCreationDto: { + formId: form?.id as number, + displayOrder: steps?.length + } } } - } - }) - - const [updateForm, { data: formData, loading: formLoading, error: formError }] = useFormSystemUpdateFormMutation() - - const addStep = () => { - createStep() - if (!loading && !error && data) { + }) + if (newStep) { controlDispatch({ type: 'ADD_STEP', payload: { - step: data?.formSystemCreateStep as FormSystemStep + step: removeTypename(newStep.data?.formSystemCreateStep) as FormSystemStep } }) } @@ -129,17 +128,12 @@ export default function Navbar() { if (activeId === overId) return - const getType = ( - data: DataRef<{ [x: string]: unknown }>, - targetType: ItemType, - ) => data?.current?.type === targetType - - const activeStep = getType(active.data, 'Step') - const activeGroup = getType(active.data, 'Group') - const activeInput = getType(active.data, 'Input') - const overStep = getType(over.data, 'Step') - const overGroup = getType(over.data, 'Group') - const overInput = getType(over.data, 'Input') + const activeStep = active.data?.current?.type === 'Step' + const activeGroup = active.data?.current?.type === 'Group' + const activeInput = active.data?.current?.type === 'Input' + const overStep = over.data?.current?.type === 'Step' + const overGroup = over.data?.current?.type === 'Group' + const overInput = over.data?.current?.type === 'Input' const dispatchDragAction = (type: DndAction) => controlDispatch({ type, payload: { activeId: activeId, overId: overId } }) @@ -171,7 +165,8 @@ export default function Navbar() { } const onDragEnd = () => { - updateDnD(activeItem.type) + // updateDnD(activeItem.type) + formUpdate() } if (inSettings) { @@ -317,6 +312,11 @@ export default function Navbar() { + Bæta við skrefi + + + ) } diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx index 10663bf5b418..0cdf8fcda401 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx @@ -5,10 +5,11 @@ import { FormSystemGroup, FormSystemInput } from '@island.is/api/schema' import { useFormSystemCreateGroupMutation, useFormSystemDeleteGroupMutation } from '../../../../../gql/Group.generated' import { useFormSystemCreateInputMutation, useFormSystemDeleteInputMutation } from '../../../../../gql/Input.generated' import { useFormSystemDeleteStepMutation } from '../../../../../gql/Step.generated' +import { removeTypename } from '../../../../../lib/utils/removeTypename' export default function NavButtons() { - const { control, controlDispatch, apolloClient } = useContext(ControlContext) + const { control, controlDispatch } = useContext(ControlContext) const { activeItem, form } = control const { groupsList: groups, inputsList: inputs } = form @@ -31,7 +32,7 @@ export default function NavButtons() { } }) if (newGroup) { - controlDispatch({ type: 'ADD_GROUP', payload: { group: newGroup.data?.formSystemCreateGroup as FormSystemGroup } }) + controlDispatch({ type: 'ADD_GROUP', payload: { group: removeTypename(newGroup.data?.formSystemCreateGroup) as FormSystemGroup } }) } } else if (activeItem.type === 'Group') { const newInput = await addInput({ @@ -45,7 +46,8 @@ export default function NavButtons() { } }) if (newInput) { - controlDispatch({ type: 'ADD_INPUT', payload: { input: newInput.data?.formSystemCreateInput as FormSystemInput } }) + console.log('newInput', newInput) + controlDispatch({ type: 'ADD_INPUT', payload: { input: removeTypename(newInput.data?.formSystemCreateInput) as FormSystemInput } }) } } } diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx index ab6e162945bc..409a2252b447 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx @@ -1,65 +1,65 @@ -// import { useContext } from 'react' -// import { Box, Text } from '@island.is/island-ui/core' -// import SelectNavComponent from './components/SelectNavComponent' -// import FormBuilderContext from '../../context/FormBuilderContext' -// import { NavbarSelectStatus } from '../../types/interfaces' -// import ControlContext from '../../context/ControlContext' -// import { FormSystemStep } from '@island.is/api/schema' +import { useContext } from 'react' +import { Box, Text } from '@island.is/island-ui/core' +import SelectNavComponent from './components/SelectNavComponent' +import { NavbarSelectStatus } from '../../types/interfaces' +import ControlContext from '../../context/ControlContext' +import { FormSystemGroup, FormSystemInput, FormSystemStep } from '@island.is/api/schema' -// export default function NavbarSelect() { -// const { control } = useContext(ControlContext) -// const { activeItem, steps, groups, inputs } = control -// let selectable = false -// return ( -// -// -// Skref -// -// {steps -// ?.filter((s): s is FormSystemStep => s !== null && s !== undefined) -// .filter((s) => s.type === 'Innsláttur') -// .map((s) => ( -// -// -// {groups -// .filter((g) => g.stepGuid === s.guid) -// .map((g) => ( -// -// -// {inputs -// .filter((i) => i.groupGuid === g.guid) -// .map((i) => { -// if (activeItem.data.guid === i.guid) { -// if ( -// selectStatus !== NavbarSelectStatus.ON_WITHOUT_SELECT -// ) { -// selectable = true -// } -// } -// return ( -// -// ) -// })} -// -// ))} -// -// ))} -// -// ) -// } +export default function NavbarSelect() { + const { control, selectStatus } = useContext(ControlContext) + const { activeItem, form } = control + const { stepsList: steps, groupsList: groups, inputsList: inputs } = form + let selectable = false + return ( + + + Skref + + {steps + ?.filter((s): s is FormSystemStep => s !== null && s !== undefined) + .filter((s) => s.type === 'Innsláttur') + .map((s) => ( + + + {groups + ?.filter((g) => g?.stepGuid === s.guid) + .map((g) => ( + + + {inputs + ?.filter((i) => i?.groupGuid === g?.guid) + .map((i) => { + if (activeItem?.data?.guid === i?.guid) { + if ( + selectStatus !== NavbarSelectStatus.ON_WITHOUT_SELECT + ) { + selectable = true + } + } + return ( + + ) + })} + + ))} + + ))} + + ) +} diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx index 6076614ec4ba..06b75540195a 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx @@ -1,146 +1,147 @@ -// import cn from 'classnames' -// import * as styles from './selectNavComponent.css' -// import { Box, Checkbox } from '@island.is/island-ui/core' -// import { useContext } from 'react' -// import { -// ItemType, -// NavbarSelectStatus, -// } from '../../../types/interfaces' -// import FormBuilderContext from '../../../context/FormBuilderContext' -// import { FormSystemGroup, FormSystemInput, FormSystemStep } from '@island.is/api/schema' +import cn from 'classnames' +import * as styles from './selectNavComponent.css' +import { Box, Checkbox } from '@island.is/island-ui/core' +import { useContext } from 'react' +import { + ItemType, + NavbarSelectStatus, +} from '../../../types/interfaces' +import FormBuilderContext from '../../../context/FormBuilderContext' +import { FormSystemGroup, FormSystemInput, FormSystemStep } from '@island.is/api/schema' +import ControlContext from '../../../context/ControlContext' -// type Props = { -// type: ItemType -// data: FormSystemStep | FormSystemGroup | FormSystemInput -// active: boolean -// selectable: boolean -// } +type Props = { + type: ItemType + data: FormSystemStep | FormSystemGroup | FormSystemInput + active: boolean + selectable: boolean +} -// export default function SelectNavComponent({ -// type, -// data, -// active, -// selectable, -// }: Props) { -// const { formBuilder, formDispatch, lists, selectStatus, activeListItem } = -// useContext(FormBuilderContext) -// const { activeItem } = lists -// const { form } = formBuilder -// const activeGuid = -// selectStatus === NavbarSelectStatus.LIST_ITEM -// ? activeListItem?.guid ?? '' -// : activeItem.data.guid -// const connected = -// form.dependencies[activeGuid]?.includes(data.guid as string) || -// !form.dependencies -// return ( -// -// {active ? ( -// -// -// {/* Index */} -// -// -// {truncateName(data.name.is)} -// -// -// ) : ( -// -// -// {/* {index} */} -// -// -// {truncateName(data.name.is)} -// -// {selectable && ( -// -// { -// formDispatch({ -// type: 'addRemoveConnection', -// payload: { -// active: activeGuid, -// item: data.guid, -// }, -// }) -// }} -// /> -// -// )} -// -// )} -// -// ) +export default function SelectNavComponent({ + type, + data, + active, + selectable, +}: Props) { + const { control, controlDispatch, selectStatus } = useContext(ControlContext) + const { activeItem, activeListItem, form } = control + const activeGuid = + selectStatus === NavbarSelectStatus.LIST_ITEM + ? activeListItem?.guid ?? '' + : activeItem?.data?.guid ?? '' + const connected = + form.dependencies[activeGuid]?.includes(data.guid as string) || + !form.dependencies -// function truncateText(text: string, maxLength: number) { -// return text.length > maxLength ? text.slice(0, maxLength) + '...' : text -// } + const truncateText = (text: string, maxLength: number) => { + return text.length > maxLength ? text.slice(0, maxLength) + '...' : text + } -// function truncateName(name: string) { -// let maxLength: number + const truncateName = (name: string) => { + let maxLength: number -// if (active) { -// switch (type) { -// case 'Step': -// maxLength = 23 -// break -// case 'Group': -// maxLength = 16 -// break -// case 'Input': -// maxLength = 12 -// break -// default: -// maxLength = 26 -// } -// } else { -// switch (type) { -// case 'Step': -// maxLength = 26 -// break -// case 'Group': -// maxLength = 19 -// break -// case 'Input': -// maxLength = 16 -// break -// default: -// maxLength = 26 -// } -// } + if (active) { + switch (type) { + case 'Step': + maxLength = 23 + break + case 'Group': + maxLength = 16 + break + case 'Input': + maxLength = 12 + break + default: + maxLength = 26 + } + } else { + switch (type) { + case 'Step': + maxLength = 26 + break + case 'Group': + maxLength = 19 + break + case 'Input': + maxLength = 16 + break + default: + maxLength = 26 + } + } -// return truncateText(name, maxLength) -// } -// } + return truncateText(name, maxLength) + } + return ( + + {active ? ( + + + {/* Index */} + + + {truncateName(data?.name?.is ?? '')} + + + ) : ( + + + {/* {index} */} + + + {truncateName(data?.name?.is ?? '')} + + {selectable && ( + + { + // formDispatch({ + // type: 'addRemoveConnection', + // payload: { + // active: activeGuid, + // item: data.guid, + // }, + // }) + // }} + /> + + )} + + )} + + ) + + +} diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index d9896f4f15f0..94eba4db0f17 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -1,14 +1,12 @@ import { Dispatch, createContext } from "react" import { ControlAction, ControlState } from "../hooks/controlReducer" -import { ApolloClient, NormalizedCacheObject } from "@apollo/client" import { Maybe } from "graphql/jsutils/Maybe" -import { FormSystemApplicantType, FormSystemDocumentType, FormSystemForm, FormSystemInput, FormSystemListType } from "@island.is/api/schema" +import { FormSystemApplicantType, FormSystemDocumentType, FormSystemForm, FormSystemInput, FormSystemListItem, FormSystemListType } from "@island.is/api/schema" import { ActiveItem, ItemType, NavbarSelectStatus } from "../lib/utils/interfaces" export interface IControlContext { control: ControlState controlDispatch: Dispatch - apolloClient: ApolloClient applicantTypes: Maybe[]> | undefined documentTypes: Maybe[]> | undefined inputTypes: Maybe[]> | undefined @@ -22,6 +20,10 @@ export interface IControlContext { formSettingsUpdate: (updatedForm?: FormSystemForm) => void selectStatus: NavbarSelectStatus setSelectStatus: Dispatch + formUpdate: (updatedForm?: FormSystemForm) => void + inListBuilder: boolean + setInListBuilder: Dispatch, + updateSettings: (updatedForm?: FormSystemForm) => void } const ControlContext = createContext({ @@ -29,7 +31,6 @@ const ControlContext = createContext({ controlDispatch: function (_value: unknown): void { throw new Error('Function not implemented.') }, - apolloClient: {} as ApolloClient, applicantTypes: [] as Maybe[]>, documentTypes: [] as Maybe[]>, inputTypes: [] as Maybe[]>, @@ -55,6 +56,16 @@ const ControlContext = createContext({ setSelectStatus: function (_value: NavbarSelectStatus): void { throw new Error('Function not implemented.') }, + formUpdate: function (_updatedForm?: FormSystemForm): void { + throw new Error('Function not implemented.') + }, + inListBuilder: false, + setInListBuilder: function (_value: boolean): void { + throw new Error('Function not implemented.') + }, + updateSettings: function (_updatedForm?: FormSystemForm): void { + throw new Error('Function not implemented.') + } }) export default ControlContext diff --git a/libs/portals/admin/form-system/src/gql/Form.graphql b/libs/portals/admin/form-system/src/gql/Form.graphql index 2f67ba80eb9e..d4dc5032d9bc 100644 --- a/libs/portals/admin/form-system/src/gql/Form.graphql +++ b/libs/portals/admin/form-system/src/gql/Form.graphql @@ -46,67 +46,6 @@ query formSystemGetForm( displayOrder guid id - inputs { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } isHidden multiSet name { @@ -192,7 +131,7 @@ query formSystemGetForm( is en } - nameSuggestion { + nameSuggestions { applicantTypeId nameSuggestion { is @@ -387,80 +326,6 @@ query formSystemGetForm( stepsList { callRuleset displayOrder - groups { - displayOrder - guid - id - inputs { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - isHidden - multiSet - name { - is - en - } - stepGuid - stepId - } guid id isCompleted @@ -488,7 +353,7 @@ query formSystemGetForm( is en } - nameSuggestion { + nameSuggestions { applicantTypeId nameSuggestion { is @@ -762,7 +627,7 @@ mutation formSystemCreateForm( is en } - nameSuggestion { + nameSuggestions { applicantTypeId nameSuggestion { is @@ -1058,7 +923,7 @@ mutation formSystemCreateForm( is en } - nameSuggestion { + nameSuggestions { applicantTypeId nameSuggestion { is diff --git a/libs/portals/admin/form-system/src/gql/FormSettings.graphql b/libs/portals/admin/form-system/src/gql/FormSettings.graphql new file mode 100644 index 000000000000..9285db59a7ec --- /dev/null +++ b/libs/portals/admin/form-system/src/gql/FormSettings.graphql @@ -0,0 +1,5 @@ +mutation formSystemUpdateFormSettings( + $input: FormSystemUpdateFormSettingsInput! +) { + formSystemUpdateFormSettings(input: $input) +} diff --git a/libs/portals/admin/form-system/src/gql/Input.graphql b/libs/portals/admin/form-system/src/gql/Input.graphql index ea5b8a839529..224d71019472 100644 --- a/libs/portals/admin/form-system/src/gql/Input.graphql +++ b/libs/portals/admin/form-system/src/gql/Input.graphql @@ -75,3 +75,69 @@ mutation formSystemUpdateInput( ) { formSystemUpdateInput(input: $input) } + +query formSystemGetInput( + $input: FormSystemGetInputInput! +) { + formSystemGetInput(input: $input) { + id + name { + is + en + } + description { + is + en + } + isRequired + displayOrder + groupId + isHidden + type + guid + isPartOfMultiSet + groupGuid + inputSettings { + isLarge + size + interval + hasLink + url + buttonText { + is + en + } + types + maxSize + isMulti + amount + header + maxLength + minLength + min + max + list { + guid + label { + is + en + } + description { + is + en + } + displayOrder + isSelected + value + } + type + name { + is + en + } + isList + hasInput + } + inputFields + } +} diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index d94d3afecd61..61dfe3d3d49b 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -1,10 +1,13 @@ -import { FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemInputSettings, FormSystemStep } from "@island.is/api/schema" +import { FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemInputSettings, FormSystemListItem, FormSystemStep } from "@island.is/api/schema" import { ActiveItem } from "../types/interfaces" import { UniqueIdentifier } from "@dnd-kit/core" import { arrayMove } from "@dnd-kit/sortable" +import { removeTypename } from "../lib/utils/removeTypename" +import { uuid } from "uuidv4" type ActiveItemActions = | { type: 'SET_ACTIVE_ITEM', payload: { activeItem: ActiveItem } } + | { type: 'SET_ACTIVE_LIST_ITEM', payload: { listItem: FormSystemListItem | null } } type GroupActions = | { type: 'ADD_GROUP', payload: { group: FormSystemGroup } } @@ -28,6 +31,7 @@ type DndActions = | { type: 'GROUP_OVER_GROUP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } | { type: 'INPUT_OVER_GROUP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } | { type: 'INPUT_OVER_INPUT', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } + | { type: 'LIST_ITEM_OVER_LIST_ITEM', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } type ChangeActions = | { type: 'CHANGE_NAME', payload: { lang: 'en' | 'is', newValue: string } } @@ -37,10 +41,21 @@ type ChangeActions = | { type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP', payload: { value: boolean } } | { type: 'CHANGE_FORM_SETTINGS', payload: { newForm: FormSystemForm } } -export type ControlAction = ActiveItemActions | GroupActions | InputActions | StepActions | DndActions | ChangeActions +type InputSettingsActions = + | { type: 'SET_MESSAGE_WITH_LINK_SETTINGS', payload: { property: 'buttonText' | 'url' | 'hasLink', value?: string, checked?: boolean, lang?: 'is' | 'en', update?: (updatedActiveItem?: ActiveItem) => void } } + | { type: 'SET_FILE_UPLOAD_SETTINGS', payload: { property: 'isMulti' | 'maxSize' | 'amount' | 'types', checked?: boolean, value?: string | number, update: (updatedActiveItem?: ActiveItem) => void } } + | { type: 'SET_INPUT_SETTINGS', payload: { property: 'isLarge', value: boolean, update: (updatedActiveItem?: ActiveItem) => void } } + | { type: 'SET_LIST_ITEM_SELECTED', payload: { guid: UniqueIdentifier, update: (updatedActiveItem?: ActiveItem) => void } } + | { type: 'REMOVE_LIST_ITEM', payload: { guid: UniqueIdentifier, update: (updatedActiveItem?: ActiveItem) => void } } + | { type: 'CHANGE_LIST_ITEM', payload: { property: 'label' | 'description', lang: 'is' | 'en', value: string, guid: UniqueIdentifier, update: (updatedActiveItem?: ActiveItem) => void } } + | { type: 'ADD_LIST_ITEM' } + + +export type ControlAction = ActiveItemActions | GroupActions | InputActions | StepActions | DndActions | ChangeActions | InputSettingsActions export interface ControlState { activeItem: ActiveItem + activeListItem: FormSystemListItem | null form: FormSystemForm } @@ -49,11 +64,17 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont const { stepsList: steps, groupsList: groups, inputsList: inputs } = form switch (action.type) { case 'SET_ACTIVE_ITEM': + console.log('current active item', action.payload.activeItem) return { ...state, activeItem: action.payload.activeItem } - + case 'SET_ACTIVE_LIST_ITEM': { + return { + ...state, + activeListItem: action.payload.listItem + } + } // Steps case 'ADD_STEP': return { @@ -110,6 +131,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont // Inputs case 'ADD_INPUT': + console.log('adding input reducer', action.payload.input) return { ...state, activeItem: { @@ -144,11 +166,12 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont data: { ...activeItem.data, type: newValue, - inputSettings: inputSettings + inputSettings: removeTypename(inputSettings) } } update(newActive) return { + ...state, activeItem: newActive, form: { ...form, @@ -170,6 +193,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont } }; return { + ...state, activeItem: newActive, form: { ...form, @@ -189,6 +213,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont } action.payload.update(newActive) return { + ...state, activeItem: newActive, form: { ...form, @@ -220,6 +245,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont updatedList = inputs?.map(i => i?.guid === activeItem.data?.guid ? newActive.data : i); } return { + ...state, activeItem: newActive, form: { ...form, @@ -266,6 +292,228 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont form: action.payload.newForm } } + case 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP': { + return { + ...state, + form: { + ...form, + stopProgressOnValidatingStep: action.payload.value + } + } + } + // Input settings + case 'SET_MESSAGE_WITH_LINK_SETTINGS': { + const input = activeItem.data as FormSystemInput + const { property, lang: langg, value, checked, update } = action.payload + const lang = langg ?? 'is' + + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + [property]: property === 'hasLink' ? checked : value, + ...(property === 'buttonText' + ? { + buttonText: { + ...input.inputSettings?.buttonText, + [lang]: value + } + } + : {}) + }, + } + if (property === 'hasLink' && update) { + update({ type: 'Input', data: newInput }) + } + return { + ...state, + activeItem: { + type: 'Input', + data: newInput + }, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) + } + } + } + case 'SET_FILE_UPLOAD_SETTINGS': { + const input = activeItem.data as FormSystemInput + const { property, checked, value, update } = action.payload + + const updateFileTypesArray = (): string[] => { + const newFileTypes = input.inputSettings?.types ?? [] + if (checked) { + return [...newFileTypes, value as string] + } else { + return newFileTypes.filter((type) => type !== value) + } + } + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + [property]: property === 'types' ? updateFileTypesArray() : property === 'isMulti' ? checked : value + } + } + console.log('property', property, 'value', value, 'checked', checked) + console.log('new input: ', newInput) + update({ type: 'Input', data: newInput }) + return { + ...state, + activeItem: { + type: 'Input', + data: newInput + }, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) + } + } + } + case 'SET_INPUT_SETTINGS': { + const input = activeItem.data as FormSystemInput + const { property, value, update } = action.payload + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + [property]: value + } + } + update({ type: 'Input', data: newInput }) + return { + ...state, + activeItem: { + type: 'Input', + data: newInput + }, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) + } + } + } + case 'SET_LIST_ITEM_SELECTED': { + const { guid, update } = action.payload + const input = activeItem.data as FormSystemInput + const list = input.inputSettings?.list ?? [] + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + list: list.map((l) => + l.guid === guid + ? { ...l, isSelected: !l.isSelected } + : { ...l, isSelected: false }, + ) + } + } + update({ type: 'Input', data: newInput }) + return { + ...state, + activeItem: { + type: 'Input', + data: newInput + }, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) + } + + } + } + case 'REMOVE_LIST_ITEM': { + const { guid, update } = action.payload + const input = activeItem.data as FormSystemInput + const list = input.inputSettings?.list ?? [] + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + list: list.filter((l) => l.guid !== guid) + } + } + update({ type: 'Input', data: newInput }) + return { + ...state, + activeItem: { + type: 'Input', + data: newInput + }, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) + } + } + } + case 'ADD_LIST_ITEM': { + const input = activeItem.data as FormSystemInput + const list = input.inputSettings?.list ?? [] + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + list: [ + ...list, + { + guid: uuid(), + label: { is: '', en: '' }, + description: { is: '', en: '' }, + displayOrder: list.length, + isSelected: false + } + ] + } + } + return { + ...state, + activeItem: { + type: 'Input', + data: newInput + }, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) + } + } + } + case 'CHANGE_LIST_ITEM': { + const input = activeItem.data as FormSystemInput + const list = input.inputSettings?.list + const { property, lang, value, guid, update } = action.payload + if (!list) return state + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + list: list.map((l) => { + if (l.guid === guid) { + return { + ...l, + [property]: { + ...l[property], + [lang]: value, + }, + } + } + return l + }), + }, + } + update({ type: 'Input', data: newInput }) + return { + ...state, + activeItem: { + type: 'Input', + data: newInput + }, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) + } + } + } // Drag and Drop case 'STEP_OVER_STEP': { const activeIndex = steps?.findIndex((step) => step?.guid === action.payload.activeId) as number @@ -282,7 +530,10 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont case 'GROUP_OVER_STEP': { const activeIndex = groups?.findIndex((group) => group?.guid === action.payload.activeId) as number const overIndex = steps?.findIndex((step) => step?.guid === action.payload.overId) as number - const updatedGroups = groups?.map(group => ({ ...group })) as FormSystemGroup[] + if (groups && steps) { + console.log('active: ', groups[activeIndex], 'over: ', steps[overIndex]) + } + const updatedGroups = groups as FormSystemGroup[] if (steps && steps[overIndex]) { updatedGroups[activeIndex].stepGuid = action.payload.overId as string updatedGroups[activeIndex].stepId = steps[overIndex]?.id as number @@ -291,14 +542,14 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, form: { ...form, - groupsList: arrayMove(updatedGroups, activeIndex, overIndex).map((g, i) => ({ ...g, displayOrder: i })) + groupsList: arrayMove(updatedGroups, activeIndex, activeIndex).map((g, i) => ({ ...g, displayOrder: i })) } } } case 'GROUP_OVER_GROUP': { const activeIndex = groups?.findIndex((group) => group?.guid === action.payload.activeId) as number const overIndex = groups?.findIndex((group) => group?.guid === action.payload.overId) as number - const updatedGroups = groups?.map(group => ({ ...group })) as FormSystemGroup[] + const updatedGroups = groups as FormSystemGroup[] if (updatedGroups[activeIndex] && updatedGroups[overIndex]) { if (updatedGroups[activeIndex].stepGuid !== updatedGroups[overIndex].stepGuid) { updatedGroups[activeIndex].stepGuid = updatedGroups[overIndex].stepGuid @@ -363,6 +614,35 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont } return state } + case 'LIST_ITEM_OVER_LIST_ITEM': { + const input = activeItem.data as FormSystemInput + const list = input.inputSettings?.list + const { activeId, overId } = action.payload + if (!list) { + return state + } + const activeIndex = list.findIndex((item) => item.guid === activeId) + const overIndex = list.findIndex((item) => item.guid === overId) + + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + list: arrayMove(list, activeIndex, overIndex).map((l, i) => ({ ...l, displayOrder: i })) + } + } + return { + ...state, + activeItem: { + type: 'Input', + data: newInput + }, + form: { + ...form, + inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) + } + } + } default: return state } diff --git a/libs/portals/admin/form-system/src/lib/utils/fileTypes.ts b/libs/portals/admin/form-system/src/lib/utils/fileTypes.ts new file mode 100644 index 000000000000..95269f5716be --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/fileTypes.ts @@ -0,0 +1,15 @@ +export const fileTypes = { + ".pdf": "application/pdf", + ".doc": "application/msword", + ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + ".txt": "text/plain", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg", + ".png": "image/png", + ".gif": "image/gif", + ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ".xls": "application/vnd.ms-excel", + ".csv": "text/csv", + ".zip": "application/zip", + "*": "application/octet-stream" +} diff --git a/libs/portals/admin/form-system/src/lib/utils/interfaces.ts b/libs/portals/admin/form-system/src/lib/utils/interfaces.ts index 69d9ad8e0632..3a814ab8ec3f 100644 --- a/libs/portals/admin/form-system/src/lib/utils/interfaces.ts +++ b/libs/portals/admin/form-system/src/lib/utils/interfaces.ts @@ -1,4 +1,5 @@ -import { FormSystemStep, FormSystemGroup, FormSystemInput } from "@island.is/api/schema" +import { UniqueIdentifier } from "@dnd-kit/core" +import { FormSystemStep, FormSystemGroup, FormSystemInput, FormSystemLanguageType, FormSystemLanguageTypeInput } from "@island.is/api/schema" export enum NavbarSelectStatus { @@ -14,3 +15,20 @@ export interface ActiveItem { type: ItemType data?: FormSystemStep | FormSystemGroup | FormSystemInput | null } + +export interface IListItem { + guid: UniqueIdentifier + label: FormSystemLanguageType | FormSystemLanguageTypeInput + description: FormSystemLanguageType | FormSystemLanguageTypeInput + displayOrder: number + isSelected: boolean +} + +export enum EFormApplicantTypes { + einstaklingur = 'Einstaklingur', + einstaklingurMedUmbodAnnarsEinstaklings = 'Einstaklingur_með_umboð_annars_einstaklings', + einstaklingurMedUmbodLogadila = 'Einstaklingur_með_umboð_lögaðila', + einstaklingurMedProkuru = 'Einstaklingur_með_prókúru', + einstaklingurUmbodsveitandi = 'Einstaklingur_umboðsveitandi', + logadili = 'Lögaðili', +} diff --git a/libs/portals/admin/form-system/src/lib/utils/removeTypename.ts b/libs/portals/admin/form-system/src/lib/utils/removeTypename.ts new file mode 100644 index 000000000000..6348a90c8015 --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/removeTypename.ts @@ -0,0 +1,15 @@ +export const removeTypename = (obj: any): any => { + if (typeof obj !== 'object' || obj == null) { + return obj + } + if (Array.isArray(obj)) { + return obj.map(removeTypename) + } + const newObj: { [key: string]: any } = {} + for (const [key, value] of Object.entries(obj)) { + if (key !== '__typename') { + newObj[key] = removeTypename(value) + } + } + return newObj +} diff --git a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts index 74e10cdcb0e5..144d72b52e65 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts @@ -12,74 +12,75 @@ export const updateActiveItemFn = ( currentActiveItem?: ActiveItem ) => { const { type } = activeItem - console.log('updating: ', type) - if (type === 'Step') { - const { id, name, type, displayOrder, waitingText, callRuleset } = currentActiveItem ? currentActiveItem.data as FormSystemStep : activeItem.data as FormSystemStep - - updateStep({ - variables: { - input: { - stepId: id, - stepUpdateDto: { - id: id, - name: name?.__typename ? { ...name, __typename: undefined } : name, - type: type, - displayOrder: displayOrder, - waitingText: waitingText?.__typename ? { ...waitingText, __typename: undefined } : waitingText, - callRuleset: callRuleset + try { + if (type === 'Step') { + const { id, name, type, displayOrder, waitingText, callRuleset } = currentActiveItem ? currentActiveItem.data as FormSystemStep : activeItem.data as FormSystemStep + updateStep({ + variables: { + input: { + stepId: id, + stepUpdateDto: { + id: id, + name: name, + type: type, + displayOrder: displayOrder, + waitingText: waitingText, + callRuleset: callRuleset + } } } - } - }) - } else if (type === 'Group') { - const { id, name, guid, displayOrder, multiSet } = currentActiveItem ? currentActiveItem.data as FormSystemGroup : activeItem.data as FormSystemGroup - updateGroup({ - variables: { - input: { - groupId: activeItem?.data?.id, - groupUpdateDto: { - id, - name: name?.__typename ? { ...name, __typename: undefined } : name, - guid, - displayOrder, - multiSet, + }) + } else if (type === 'Group') { + const { id, name, guid, displayOrder, multiSet, stepId } = currentActiveItem ? currentActiveItem.data as FormSystemGroup : activeItem.data as FormSystemGroup + updateGroup({ + variables: { + input: { + groupId: activeItem?.data?.id, + groupUpdateDto: { + id, + name: name, + guid, + displayOrder, + multiSet, + stepId + }, }, }, - }, - }) - } else if (type === 'Input') { - const { - id, - name, - description, - isRequired, - displayOrder, - isHidden, - type, - inputSettings, - isPartOfMultiSet, - } = currentActiveItem ? currentActiveItem.data as FormSystemInput : activeItem.data as FormSystemInput - updateInput({ - variables: { - input: { - inputId: activeItem?.data?.id, - inputUpdateDto: { - id, - name: name?.__typename ? { ...name, __typename: undefined } : name, - description: description?.__typename - ? { ...description, __typename: undefined } - : description, - isRequired: isRequired ?? false, - displayOrder, - isHidden: isHidden ?? false, - type, - inputSettings: inputSettings?.__typename - ? { ...inputSettings, __typename: undefined } - : inputSettings, - isPartOfMultiSet: isPartOfMultiSet ?? false, + }) + } else if (type === 'Input') { + const { + id, + name, + description, + isRequired, + displayOrder, + isHidden, + type, + inputSettings, + isPartOfMultiSet, + groupId + } = currentActiveItem ? currentActiveItem.data as FormSystemInput : activeItem.data as FormSystemInput + updateInput({ + variables: { + input: { + inputId: id, + inputUpdateDto: { + id, + name: name, + description: description, + isRequired: isRequired ?? false, + displayOrder, + isHidden: isHidden ?? false, + type, + inputSettings: inputSettings, + isPartOfMultiSet: isPartOfMultiSet ?? false, + groupId: groupId ?? null, + }, }, }, - }, - }); + }); + } + } catch (e) { + console.error('Error updating active item: ', e) } -}; +} diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index 395e0a7e3a82..d6c6faed6fcc 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -1,4 +1,4 @@ -import { FormSystemGroup, FormSystemGroupInput, FormSystemInput } from "@island.is/api/schema" +import { FormSystemFormInput, FormSystemGroup, FormSystemGroupInput, FormSystemInput, FormSystemInputInput, FormSystemOrganizationInput, FormSystemStepInput, InputMaybe } from "@island.is/api/schema" import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" import { ControlState } from "../../hooks/controlReducer" import { ItemType } from "./interfaces" @@ -11,9 +11,10 @@ export const updateDnd = ( ) => { console.log('updating: ', type) const formId = control.form.id + if (type === 'Step') { const steps = control.form.stepsList - const { form } = control + console.log('steps: ', steps) updateForm({ variables: { input: { @@ -23,9 +24,9 @@ export const updateDnd = ( id: s?.id, guid: s?.guid, displayOrder: s?.displayOrder, - name: s?.name?.__typename ? { ...s?.name, __typename: undefined } : s?.name, + name: s?.name, type: s?.type, - waitingText: s?.waitingText?.__typename ? { ...s?.waitingText, __typename: undefined } : s?.waitingText, + waitingText: s?.waitingText, callRuleset: s?.callRuleset, isHidden: s?.isHidden, isCompleted: s?.isCompleted, @@ -35,32 +36,23 @@ export const updateDnd = ( } }) } else if (type === 'Group') { - const { groupsList } = control.form - const updatedGroup = groupsList?.map(g => ({ - id: g?.id, - name: g?.name?.__typename ? { ...g?.name, __typename: undefined } : g?.name, - guid: g?.guid, - displayOrder: g?.displayOrder, - isHidden: g?.isHidden ?? false, - stepId: g?.stepId, - multiSet: g?.multiSet, - stepGuid: g?.stepGuid, - })) - console.log('updatedGroup', updatedGroup) + const groups = control.form.groupsList + console.log('groups: ', groups) updateForm({ variables: { input: { formId: formId, form: { - groupsList: groupsList?.map(g => ({ + groupsList: groups?.map(g => ({ id: g?.id, - name: g?.name?.__typename ? { ...g?.name, __typename: undefined } : g?.name, + name: g?.name, guid: g?.guid, displayOrder: g?.displayOrder, - isHidden: g?.isHidden ?? false, + isHidden: (g?.isHidden ?? false) as boolean, stepId: g?.stepId, multiSet: g?.multiSet, stepGuid: g?.stepGuid, + inputs: null } as FormSystemGroupInput), ) } @@ -69,6 +61,7 @@ export const updateDnd = ( }) } else if (type === 'Input') { const { inputsList } = control.form + console.log('inputs: ', inputsList) updateForm({ variables: { input: { @@ -76,13 +69,13 @@ export const updateDnd = ( form: { inputsList: inputsList?.filter((i): i is FormSystemInput => i !== null && i !== undefined).map(i => ({ id: i.id, - name: i.name?.__typename ? { ...i.name, __typename: undefined } : i.name, - description: i.description?.__typename ? { ...i.description, __typename: undefined } : i.description, + name: i.name, + description: i.description, isRequired: i.isRequired ?? false, displayOrder: i.displayOrder, isHidden: i.isHidden ?? false, type: i.type, - inputSettings: i.inputSettings?.__typename ? { ...i.inputSettings, __typename: undefined } : i.inputSettings, + inputSettings: i.inputSettings, isPartOfMultiSet: i.isPartOfMultiSet ?? false, groupId: i.groupId, groupGuid: i.groupGuid, diff --git a/libs/portals/admin/form-system/src/lib/utils/updateForm.ts b/libs/portals/admin/form-system/src/lib/utils/updateForm.ts index b82824087219..871c167b0d72 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateForm.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateForm.ts @@ -1,4 +1,4 @@ -import { FormSystemForm } from "@island.is/api/schema" +import { FormSystemForm, FormSystemFormInput, FormSystemGroupInput, FormSystemInputInput, FormSystemOrganizationInput, FormSystemStepInput, InputMaybe } from "@island.is/api/schema" import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" import { ControlState } from "../../hooks/controlReducer" @@ -17,7 +17,7 @@ export const partialFormUpdate = ( form: { invalidationDate: form.invalidationDate, name: form.name?.__typename ? { ...form.name, __typename: undefined } : form.name, - stopProgressOnValidatingStep: form.stopProgressOnValidatingStep ?? false, // doesnt save....whyyyy + stopProgressOnValidatingStep: (form.stopProgressOnValidatingStep ?? false) as boolean, // doesnt save....whyyyy applicationsDaysToRemove: form.applicationsDaysToRemove, documentTypes: form.documentTypes?.map(d => ({ __typename: undefined, @@ -31,3 +31,53 @@ export const partialFormUpdate = ( } }) } + +export const entireFormUpdate = ( + control: ControlState, + updateForm = useFormSystemUpdateFormMutation()[0], + updatedForm?: FormSystemForm +) => { + const form = updatedForm ? updatedForm : control.form + const organiaztionInput: FormSystemOrganizationInput = { + ...(form.organization as FormSystemOrganizationInput), + } + + const inputs: InputMaybe[] = form.inputsList?.filter(input => input !== undefined && input !== null).map(i => ({ + ...i, + isHidden: i?.isHidden ?? false, + isPartOfMultiSet: i?.isPartOfMultiSet ?? false, + isRequired: i?.isRequired ?? false, + })) ?? [] + + const groups: InputMaybe[] = form.groupsList?.filter(group => group !== undefined && group !== null).map(g => ({ + ...g, + inputs: null + })) ?? [] + + const steps: InputMaybe[] = form.stepsList?.filter(step => step !== undefined && step !== null).map(s => ({ + ...s, + groups: null + })) ?? [] + + const formInput: FormSystemFormInput = { + ...form, + organization: organiaztionInput, + inputsList: inputs, + groupsList: groups, + stepsList: steps, + steps: null + } + console.log('updating form: ', formInput) + updateForm({ + variables: { + input: { + formId: form.id, + form: formInput + } + } + }) +} + + + + diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts new file mode 100644 index 000000000000..18e6a3d33b4e --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts @@ -0,0 +1,38 @@ +import { FormSystemForm } from "@island.is/api/schema" +import { useFormSystemUpdateFormSettingsMutation } from "../../gql/FormSettings.generated" +import { ControlState } from "../../hooks/controlReducer" +import { removeTypename } from "./removeTypename" + + +export const updateSettings = ( + control: ControlState, + updatedForm?: FormSystemForm, + updateFormSettings = useFormSystemUpdateFormSettingsMutation()[0] +) => { + const form = updatedForm ? updatedForm : control.form + const documentTypesInput = form?.documentTypes?.map((dt) => ({ + formId: form.id, + documentTypeId: dt?.id, + })) + console.log('updating form settings: ', form.formApplicantTypes) + updateFormSettings({ + variables: { + input: { + id: form.id!, + formSettingsUpdateDto: { + id: form.id, + name: form.name, + lastChanged: form.lastChanged, + invalidationDate: form.invalidationDate, + dependencies: form.dependencies, + formDocumentTypes: documentTypesInput, + formApplicantTypes: removeTypename(form.formApplicantTypes), + completedMessage: form.completedMessage, + isTranslated: form.isTranslated, + stopProgressOnValidatingStep: form.stopProgressOnValidatingStep, + applicationsDaysToRemove: form.applicationsDaysToRemove, + } + } + } + }) +} diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts index 602283ff041d..e4176ee7aacf 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts @@ -3,6 +3,7 @@ import { FormSystemFormResponse } from '@island.is/api/schema' import { ApolloClient, NormalizedCacheObject } from '@apollo/client' import { FormSystemGetFormDocument, FormSystemGetFormQuery } from '../../gql/Form.generated' +import { FormSystemGetInputDocument, FormSystemGetInputQuery } from '../../gql/Input.generated' export interface FormLoaderResponse { formBuilder: FormSystemFormResponse, @@ -31,8 +32,38 @@ export const formLoader: WrappedLoaderFn = ({ client }) => { if (!formData) { throw new Error(`No form data found for ${params.formId}`) } + + //Inputs had null values thus I need to fetch them again for some reason... + const formBuilder = formData.formSystemGetForm + const updatedInputs = formBuilder.form?.inputsList?.length + ? await Promise.all( + formBuilder.form.inputsList.map(async (input) => { + const { data: updatedInput, error: inputError } = + await client.query({ + query: FormSystemGetInputDocument, + fetchPolicy: 'network-only', + variables: { + input: { + id: Number(input?.id), + }, + }, + }); + return updatedInput?.formSystemGetInput; + }) + ) + : [] + const updatedFormBuilder = { + ...formBuilder, + form: { + ...formBuilder.form, + inputsList: updatedInputs + } + } + + + return { - formBuilder: formData.formSystemGetForm, + formBuilder: updatedFormBuilder as FormSystemFormResponse, client } } diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 067b72ca56b7..2e51492b6f8e 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -1,6 +1,6 @@ import { useLoaderData } from "react-router-dom" import { useEffect, useReducer, useState } from "react" -import { NavbarSelectStatus } from "../../lib/utils/interfaces" +import { IListItem, NavbarSelectStatus } from "../../lib/utils/interfaces" import { FormLoaderResponse } from "./Form.loader" import { ControlState, controlReducer } from "../../hooks/controlReducer" import { baseSettingsStep } from "../../utils/getBaseSettingsStep" @@ -12,7 +12,7 @@ import { Box, } from '@island.is/island-ui/core' import Navbar from "../../components/Navbar/Navbar" -import { FormSystemForm, FormSystemGroup, FormSystemInput } from "@island.is/api/schema" +import { FormSystemForm, FormSystemStep } from "@island.is/api/schema" import MainContent from "../../components/MainContent/MainContent" import { useFormSystemUpdateGroupMutation } from "../../gql/Group.generated" import { useFormSystemUpdateStepMutation } from "../../gql/Step.generated" @@ -21,52 +21,55 @@ import { updateActiveItemFn } from "../../lib/utils/updateActiveItem" import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" import { ActiveItem, ItemType } from "../../lib/utils/interfaces" import { updateDnd } from "../../lib/utils/updateDnd" -import { SettingsState, settingsReducer } from "../../hooks/settingsReducer" -import { partialFormUpdate } from "../../lib/utils/updateForm" +import { entireFormUpdate, partialFormUpdate } from "../../lib/utils/updateForm" +import { removeTypename } from "../../lib/utils/removeTypename" +import NavbarSelect from "../../components/NavbarSelect/NavbarSelect" +import { useFormSystemUpdateFormSettingsMutation } from "../../gql/FormSettings.generated" +import { updateSettings as us } from "../../lib/utils/updateFormSettings" const Form = () => { - const { formBuilder, client } = useLoaderData() as FormLoaderResponse + const { formBuilder } = useLoaderData() as FormLoaderResponse const { form, applicantTypes, documentTypes, inputTypes, listTypes } = formBuilder const [focus, setFocus] = useState('') const [inSettings, setInSettings] = useState(form?.name?.is === '') + const [inListBuilder, setInListBuilder] = useState(false) const [selectStatus, setSelectStatus] = useState(NavbarSelectStatus.OFF) const [updateStep] = useFormSystemUpdateStepMutation() const [updateGroup] = useFormSystemUpdateGroupMutation() const [updateInput] = useFormSystemUpdateInputMutation() const [updateForm] = useFormSystemUpdateFormMutation() + const [updateFormSettings] = useFormSystemUpdateFormSettingsMutation() + const updateActiveItem = (updatedActiveItem?: ActiveItem) => updateActiveItemFn(control.activeItem, updateStep, updateGroup, updateInput, updatedActiveItem) const initialControl: ControlState = { activeItem: { type: 'Step', - data: inSettings ? baseSettingsStep : form?.stepsList?.find((s) => s?.type === 'Innsláttur') ?? defaultStep + data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find((s: FormSystemStep) => s?.type === 'Innsláttur') ?? defaultStep }, - form: form as FormSystemForm + activeListItem: null, + form: removeTypename(form) as FormSystemForm, } - const initialSettings: SettingsState = { - applicantTypes, - documentTypes, - inputTypes, - listTypes - } - const [settings, settingsDispatch] = useReducer(settingsReducer, initialSettings) + const [control, controlDispatch] = useReducer(controlReducer, initialControl) - const updateActiveItem = (updatedActiveItem?: ActiveItem) => updateActiveItemFn(control.activeItem, updateStep, updateGroup, updateInput, updatedActiveItem) + const updateDragAndDrop = (type: ItemType) => updateDnd(type, control, updateForm) + + const updateSettings = (updatedForm?: FormSystemForm) => us(control, updatedForm, updateFormSettings) const formSettingsUpdate = (updatedForm?: FormSystemForm) => { if (updatedForm) { controlDispatch({ type: 'CHANGE_FORM_SETTINGS', payload: { newForm: updatedForm } }) } return partialFormUpdate(control, updateForm, updatedForm) } + const formUpdate = (updatedForm?: FormSystemForm) => entireFormUpdate(control, updateForm, updatedForm) const context: IControlContext = { control, controlDispatch, - apolloClient: client, applicantTypes, documentTypes, inputTypes, @@ -79,16 +82,22 @@ const Form = () => { updateDnD: updateDragAndDrop, formSettingsUpdate, selectStatus, - setSelectStatus + setSelectStatus, + formUpdate, + inListBuilder, + setInListBuilder, + updateSettings } useEffect(() => { console.log('loaderData form: ', form) - console.log('loaderData client: ', client) console.log('control: ', control) + console.log('formBuilder: ', formBuilder) }, []) + + if (!form) { return
Loading...
} @@ -96,8 +105,7 @@ const Form = () => { - {/* {selectStatus !== NavbarSelectStatus.OFF ? : } */} - + {selectStatus !== NavbarSelectStatus.OFF ? : } Date: Tue, 23 Apr 2024 15:48:33 +0000 Subject: [PATCH 028/129] took out the formsysteminputsettings and replaced it with a graphqlTypeJson --- .../form-system/src/dto/inputs.input.ts | 10 +- .../form-system/src/models/input.model.ts | 4 +- .../components/ListBuilder/ListBuilder.tsx | 6 +- .../Preview/components/FileUpload.tsx | 4 +- .../components/Preview/components/List.tsx | 2 +- .../components/Preview/components/Radio.tsx | 2 +- .../admin/form-system/src/gql/Form.graphql | 420 +----------------- .../admin/form-system/src/gql/Group.graphql | 42 +- .../admin/form-system/src/gql/Input.graphql | 84 +--- .../admin/form-system/src/gql/Step.graphql | 42 +- .../form-system/src/hooks/controlReducer.ts | 20 +- .../src/screens/Forms/CreateForm.graphql | 252 +---------- .../form-system/src/types/interfaces.tsx | 24 +- 13 files changed, 66 insertions(+), 846 deletions(-) diff --git a/libs/api/domains/form-system/src/dto/inputs.input.ts b/libs/api/domains/form-system/src/dto/inputs.input.ts index 2d17aba12824..21dc96ff8845 100644 --- a/libs/api/domains/form-system/src/dto/inputs.input.ts +++ b/libs/api/domains/form-system/src/dto/inputs.input.ts @@ -35,8 +35,8 @@ export class UpdateInput { @Field(() => String, { nullable: true }) type?: string - @Field(() => InputSettingsInput, { nullable: true }) - inputSettings?: InputSettingsInput + @Field(() => graphqlTypeJson, { nullable: true }) + inputSettings?: object @Field() isPartOfMultiSet?: boolean @@ -46,8 +46,6 @@ export class UpdateInput { } - - @InputType('FormSystemGetInputInput') export class GetInputInput { @Field(() => Int) @@ -110,8 +108,8 @@ export class InputInput { @Field(() => String, { nullable: true }) groupGuid?: string - @Field(() => InputSettingsInput, { nullable: true }) - inputSettings?: InputSettingsInput + @Field(() => graphqlTypeJson, { nullable: true }) + inputSettings?: object @Field(() => graphqlTypeJson, { nullable: true }) inputFields?: object diff --git a/libs/api/domains/form-system/src/models/input.model.ts b/libs/api/domains/form-system/src/models/input.model.ts index a7d41e0f70cb..0936d7e7f5d9 100644 --- a/libs/api/domains/form-system/src/models/input.model.ts +++ b/libs/api/domains/form-system/src/models/input.model.ts @@ -39,8 +39,8 @@ export class Input { @Field(() => String, { nullable: true }) groupGuid?: string - @Field(() => InputSettings, { nullable: true }) - inputSettings?: InputSettings + @Field(() => graphqlTypeJson, { nullable: true }) + inputSettings?: object @Field(() => graphqlTypeJson, { nullable: true }) inputFields?: object diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx index bca49a663ad8..7bed2924d4c2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx @@ -29,8 +29,8 @@ const ListBuilder = () => { const { control, controlDispatch, setSelectStatus, setInListBuilder, updateActiveItem } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput const { activeListItem } = control - const listItems = currentItem?.inputSettings?.list ?? [] - const listItemIds = useMemo(() => listItems?.filter((l): l is FormSystemListItem => l !== null && l !== undefined).map((l) => l?.guid as UniqueIdentifier), [listItems]) + const listItems = currentItem?.inputSettings?.list ?? [] as FormSystemListItem[] + const listItemIds = useMemo(() => listItems?.filter((l: FormSystemListItem): l is FormSystemListItem => l !== null && l !== undefined).map((l: FormSystemListItem) => l?.guid as UniqueIdentifier), [listItems]) const [connecting, setConnecting] = useState([false]) const sensors = useSensors( @@ -118,7 +118,7 @@ const ListBuilder = () => { > {listItems && - listItems.map((l, i) => { + listItems.map((l: FormSystemListItem, i: number) => { return ( { fileList={fileList} header={currentItem?.name?.is ?? ''} description={`Eftirfarandi skjalatýpur eru leyfðar: ${currentItem?.inputSettings?.types?.map( - (f) => `${f} `, + (f: string) => `${f} `, )}`} buttonLabel="Veldu skjöl til að hlaða upp" onChange={onChange} @@ -55,7 +55,7 @@ const FileUpload = ({ currentItem }: Props) => { errorMessage={fileList.length > 0 ? error : undefined} accept={ currentItem?.inputSettings?.types?.map( - (t) => fileTypes[t as keyof typeof fileTypes], + (t: string) => fileTypes[t as keyof typeof fileTypes], ) ?? [] } showFileSize diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index 0c09856669f5..99a5b1307fb1 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -17,7 +17,7 @@ const List = ({ currentItem }: Props) => { useEffect(() => { const currentList = currentItem.inputSettings?.list ?? [] setListItems( - currentList.map((l) => ({ + currentList.map((l: FormSystemListItem) => ({ label: l?.label?.is ?? '', value: l?.label?.is ?? '', })), diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx index 98ec59caa935..c06000c50dc9 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx @@ -7,7 +7,7 @@ interface Props { } const Radio = ({ currentItem }: Props) => { - const radioButtons = currentItem.inputSettings?.list + const radioButtons = currentItem.inputSettings?.list as FormSystemListItem[] const [radioChecked, setRadioChecked] = useState([]) useEffect(() => { diff --git a/libs/portals/admin/form-system/src/gql/Form.graphql b/libs/portals/admin/form-system/src/gql/Form.graphql index d4dc5032d9bc..5a47f0fdb018 100644 --- a/libs/portals/admin/form-system/src/gql/Form.graphql +++ b/libs/portals/admin/form-system/src/gql/Form.graphql @@ -66,47 +66,7 @@ query formSystemGetForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -164,47 +124,7 @@ query formSystemGetForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -250,47 +170,7 @@ query formSystemGetForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -385,47 +265,7 @@ query formSystemGetForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -492,47 +332,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -562,47 +362,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -660,47 +420,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -746,47 +466,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -837,47 +517,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -955,47 +595,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired diff --git a/libs/portals/admin/form-system/src/gql/Group.graphql b/libs/portals/admin/form-system/src/gql/Group.graphql index 3574a586c703..8538f403282c 100644 --- a/libs/portals/admin/form-system/src/gql/Group.graphql +++ b/libs/portals/admin/form-system/src/gql/Group.graphql @@ -16,47 +16,7 @@ mutation formSystemCreateGroup( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired diff --git a/libs/portals/admin/form-system/src/gql/Input.graphql b/libs/portals/admin/form-system/src/gql/Input.graphql index 224d71019472..be4ab3532e6a 100644 --- a/libs/portals/admin/form-system/src/gql/Input.graphql +++ b/libs/portals/admin/form-system/src/gql/Input.graphql @@ -19,47 +19,7 @@ mutation formSystemCreateInput( guid isPartOfMultiSet groupGuid - inputSettings { - isLarge - size - interval - hasLink - url - buttonText { - is - en - } - types - maxSize - isMulti - amount - header - maxLength - minLength - min - max - list { - guid - label { - is - en - } - description { - is - en - } - displayOrder - isSelected - value - } - type - name { - is - en - } - isList - hasInput - } + inputSettings inputFields } } @@ -97,47 +57,7 @@ query formSystemGetInput( guid isPartOfMultiSet groupGuid - inputSettings { - isLarge - size - interval - hasLink - url - buttonText { - is - en - } - types - maxSize - isMulti - amount - header - maxLength - minLength - min - max - list { - guid - label { - is - en - } - description { - is - en - } - displayOrder - isSelected - value - } - type - name { - is - en - } - isList - hasInput - } + inputSettings inputFields } } diff --git a/libs/portals/admin/form-system/src/gql/Step.graphql b/libs/portals/admin/form-system/src/gql/Step.graphql index 29fe5c61ea09..7346ff6b086e 100644 --- a/libs/portals/admin/form-system/src/gql/Step.graphql +++ b/libs/portals/admin/form-system/src/gql/Step.graphql @@ -19,47 +19,7 @@ mutation formSystemCreateStep( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index 61dfe3d3d49b..fa5b61323f29 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -1,5 +1,5 @@ -import { FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemInputSettings, FormSystemListItem, FormSystemStep } from "@island.is/api/schema" -import { ActiveItem } from "../types/interfaces" +import { FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemListItem, FormSystemStep } from "@island.is/api/schema" +import { ActiveItem, IInputSettings } from "../types/interfaces" import { UniqueIdentifier } from "@dnd-kit/core" import { arrayMove } from "@dnd-kit/sortable" import { removeTypename } from "../lib/utils/removeTypename" @@ -16,7 +16,7 @@ type GroupActions = type InputActions = | { type: 'ADD_INPUT', payload: { input: FormSystemInput } } | { type: 'REMOVE_INPUT', payload: { inputId: number } } - | { type: 'CHANGE_INPUT_TYPE', payload: { newValue: string, inputSettings: FormSystemInputSettings, update: (updatedActiveItem?: ActiveItem) => void } } + | { type: 'CHANGE_INPUT_TYPE', payload: { newValue: string, inputSettings: IInputSettings, update: (updatedActiveItem?: ActiveItem) => void } } | { type: 'CHANGE_DESCRIPTION', payload: { lang: 'en' | 'is', newValue: string } } | { type: 'CHANGE_IS_REQUIRED', payload: { update: (updatedActiveItem?: ActiveItem) => void } } @@ -342,7 +342,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont const { property, checked, value, update } = action.payload const updateFileTypesArray = (): string[] => { - const newFileTypes = input.inputSettings?.types ?? [] + const newFileTypes = input.inputSettings?.types as string[] ?? [] if (checked) { return [...newFileTypes, value as string] } else { @@ -402,7 +402,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...input, inputSettings: { ...input.inputSettings, - list: list.map((l) => + list: list.map((l: FormSystemListItem) => l.guid === guid ? { ...l, isSelected: !l.isSelected } : { ...l, isSelected: false }, @@ -431,7 +431,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...input, inputSettings: { ...input.inputSettings, - list: list.filter((l) => l.guid !== guid) + list: list.filter((l: FormSystemListItem) => l.guid !== guid) } } update({ type: 'Input', data: newInput }) @@ -487,7 +487,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...input, inputSettings: { ...input.inputSettings, - list: list.map((l) => { + list: list.map((l: FormSystemListItem) => { if (l.guid === guid) { return { ...l, @@ -621,14 +621,14 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont if (!list) { return state } - const activeIndex = list.findIndex((item) => item.guid === activeId) - const overIndex = list.findIndex((item) => item.guid === overId) + const activeIndex = list.findIndex((item: FormSystemListItem) => item.guid === activeId) + const overIndex = list.findIndex((item: FormSystemListItem) => item.guid === overId) const newInput = { ...input, inputSettings: { ...input.inputSettings, - list: arrayMove(list, activeIndex, overIndex).map((l, i) => ({ ...l, displayOrder: i })) + list: arrayMove(list, activeIndex, overIndex).map((l: FormSystemListItem, i: number) => ({ ...l, displayOrder: i })) } } return { diff --git a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql index 74732fd9cda1..b77d578fd2a1 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql +++ b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql @@ -52,47 +52,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -122,47 +82,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -220,47 +140,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -306,47 +186,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -397,47 +237,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired @@ -515,47 +315,7 @@ mutation formSystemCreateForm( guid id inputFields - inputSettings { - amount - buttonText { - is - en - } - hasInput - hasLink - header - interval - isLarge - isList - isMulti - list { - description { - is - en - } - displayOrder - guid - isSelected - label { - is - en - } - value - } - max - maxLength - maxSize - min - minLength - name { - is - en - } - size - type - types - url - } + inputSettings isHidden isPartOfMultiSet isRequired diff --git a/libs/portals/admin/form-system/src/types/interfaces.tsx b/libs/portals/admin/form-system/src/types/interfaces.tsx index 54ae668c1144..9720a3276611 100644 --- a/libs/portals/admin/form-system/src/types/interfaces.tsx +++ b/libs/portals/admin/form-system/src/types/interfaces.tsx @@ -3,7 +3,7 @@ import { UniqueIdentifier } from '@dnd-kit/core' import { EFormApplicantTypes } from './enums' import { FormAction } from '../hooks/formReducer' import { FormHeaderAction } from '../hooks/headerInfoReducer' -import { FormSystemApplicantType, FormSystemDocumentType, FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemListType, FormSystemStep } from '@island.is/api/schema' +import { FormSystemApplicantType, FormSystemDocumentType, FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemLanguageType, FormSystemListItem, FormSystemListType, FormSystemStep } from '@island.is/api/schema' import { Maybe } from 'graphql/jsutils/Maybe' export type IFormBuilderContext = { @@ -247,3 +247,25 @@ export interface User { type Sizes = 'xs' | 'sm' | 'md' export type ItemType = 'Step' | 'Group' | 'Input' + +interface InputSettings { + hasInput?: boolean + isList?: boolean + isLarge?: boolean + size?: string + interval?: string + list?: FormSystemListItem[] + max?: number + min?: number + maxLength?: number + minLength?: number + amount?: number + isMulti?: boolean + maxSize?: number + types?: string[] + buttonText?: FormSystemLanguageType + hasLink?: boolean + $type?: string + name?: FormSystemLanguageType + [key: string]: unknown +} From d8a15cf5f21e2ef78a2ce09ee1b6d4879289c584 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 24 Apr 2024 15:23:21 +0000 Subject: [PATCH 029/129] spring cleaning and creating dependencies within the form --- apps/api/src/app/app.module.ts | 2 +- .../components/AuthProvider/AuthProvider.tsx | 12 +- .../ListBuilder/components/ListItem.tsx | 10 +- apps/form-builder/context/UserContext.tsx | 5 +- apps/form-builder/hooks/useUser.ts | 6 +- apps/form-builder/pages/_app.tsx | 11 +- .../pages/api/auth/[...nextauth].ts | 9 +- apps/form-builder/screens/Form.tsx | 10 +- apps/portals/admin/src/auth.ts | 2 +- .../portals/admin/src/lib/masterNavigation.ts | 2 +- apps/portals/admin/src/lib/modules.ts | 2 +- .../caseSubscription.resolver.ts | 2 +- libs/api/domains/form-system/project.json | 19 +- .../src/dto/applicantType.input.ts | 8 +- .../dto/applicantTypeNameSuggestion.input.ts | 4 +- .../form-system/src/dto/documentType.input.ts | 6 +- .../src/dto/externalEndpoints.input.ts | 5 +- .../form-system/src/dto/forms.input.ts | 17 +- .../form-system/src/dto/groups.input.ts | 7 +- .../src/dto/inputSettings.input.ts | 7 +- .../form-system/src/dto/inputs.input.ts | 8 +- .../form-system/src/dto/language.input.ts | 2 +- .../form-system/src/dto/listItem.input.ts | 4 +- .../form-system/src/dto/listType.input.ts | 4 +- .../form-system/src/dto/organization.input.ts | 16 +- .../form-system/src/dto/services.input.ts | 2 +- .../form-system/src/dto/steps.input.ts | 6 +- .../src/dto/updateFormSettings.input.ts | 9 +- .../form-system/src/lib/form-system.module.ts | 9 +- .../src/lib/forms/forms.resolver.ts | 61 +- .../src/lib/forms/forms.service.ts | 54 +- .../src/lib/groups/groups.resolver.ts | 39 +- .../src/lib/groups/groups.service.ts | 32 +- .../src/lib/inputs/inputs.resolver.ts | 39 +- .../src/lib/inputs/inputs.service.ts | 43 +- .../organizations/organizations.resolver.ts | 27 +- .../organizations/organizations.services.ts | 24 +- .../src/lib/services/services.resolver.ts | 53 +- .../src/lib/services/services.service.ts | 19 +- .../src/lib/steps/steps.resolver.ts | 40 +- .../src/lib/steps/steps.service.ts | 29 +- .../src/lib/utils/helperFunctions.ts | 124 ---- .../src/models/applicantType.model.ts | 6 +- .../src/models/applicantTypeNameSuggestion.ts | 5 +- .../src/models/documentType.model.ts | 6 +- .../src/models/externalEndpoints.model.ts | 5 +- .../src/models/formApplicantType.model.ts | 5 +- .../src/models/formListResponse.model.ts | 4 +- .../form-system/src/models/group.model.ts | 7 +- .../form-system/src/models/input.model.ts | 2 - .../form-system/src/models/listType.model.ts | 5 +- .../src/models/organization.model.ts | 2 - .../form-system/src/models/services.model.ts | 5 +- .../form-system/src/models/step.model.ts | 7 +- libs/clients/form-system/project.json | 21 +- .../clients/form-system/src/clientConfig.json | 114 +--- .../src/lib/FormSystemApiProvider.ts | 36 +- .../src/lib/FormSystemClient.config.ts | 8 +- .../form-system/src/lib/form-system.module.ts | 23 +- libs/portals/admin/form-system/codegen.yml | 2 +- libs/portals/admin/form-system/project.json | 19 +- .../components/MainContent/MainContent.tsx | 176 ++--- .../components/BaseSettings/BaseSettings.tsx | 50 +- .../components/InputContent/InputContent.tsx | 20 +- .../InputContent/components/BaseInput.tsx | 106 +-- .../InputSettings/InputSettings.tsx | 28 +- .../components/FIleUploadSettings.tsx | 123 ++-- .../InputSettings/components/ListSettings.tsx | 38 +- .../components/MessageWithLinkSettings.tsx | 129 ++-- .../components/TextInputSettings.tsx | 30 +- .../components/ToggleConnection.tsx | 42 ++ .../components/ListBuilder/ListBuilder.tsx | 43 +- .../ListBuilder/components/ListItem.tsx | 36 +- .../components/Premises/Premises.tsx | 18 +- .../components/Preview/Preveiw.tsx | 40 +- .../Preview/components/Banknumber.tsx | 1 - .../Preview/components/Currency.tsx | 1 - .../components/Preview/components/Email.tsx | 1 - .../Preview/components/FileUpload.tsx | 1 - .../components/Preview/components/List.tsx | 10 +- .../Preview/components/MessageWithLink.tsx | 13 +- .../components/Preview/components/Radio.tsx | 4 +- .../Preview/components/TextInput.tsx | 4 +- .../PreviewStepOrGroup/PreviewStepOrGroup.tsx | 24 +- .../components/MultiSet.tsx | 8 +- .../RelevantParties/RevelantParties.tsx | 75 ++- .../components/FormApplicantType.tsx | 48 +- .../src/components/Navbar/Navbar.tsx | 115 ++-- .../components/NavComponent/NavComponent.tsx | 50 +- .../NavComponent/components/NavButtons.tsx | 76 ++- .../Navbar/components/NavbarTab/NavbarTab.tsx | 13 +- .../components/NavbarSelect/NavbarSelect.tsx | 8 +- .../components/SelectNavComponent.tsx | 43 +- .../components/selectNavComponent.css.ts | 4 + .../src/components/TableRow/TableRow.tsx | 16 +- .../form-system/src/context/ControlContext.ts | 28 +- .../src/context/FormBuilderContext.tsx | 50 -- .../form-system/src/context/LayoutContext.tsx | 14 - .../form-system/src/context/UserContext.tsx | 13 - .../admin/form-system/src/gql/Form.graphql | 89 ++- .../admin/form-system/src/gql/Group.graphql | 12 +- .../admin/form-system/src/gql/Input.graphql | 16 +- .../admin/form-system/src/gql/Step.graphql | 12 +- .../form-system/src/hooks/controlReducer.ts | 635 ++++++++++++------ .../form-system/src/hooks/formReducer.ts | 199 ------ .../src/hooks/headerInfoReducer.ts | 29 - .../form-system/src/hooks/settingsReducer.ts | 18 - .../admin/form-system/src/hooks/useUser.ts | 40 -- .../admin/form-system/src/lib/messages.ts | 9 +- .../admin/form-system/src/lib/navigation.ts | 8 +- .../form-system/src/lib/utils/fileTypes.ts | 27 +- .../form-system/src/lib/utils/interfaces.ts | 89 ++- .../src/lib/utils/updateActiveItem.ts | 44 +- .../form-system/src/lib/utils/updateDnd.ts | 96 +-- .../form-system/src/lib/utils/updateForm.ts | 96 ++- .../src/lib/utils/updateFormSettings.ts | 18 +- libs/portals/admin/form-system/src/module.tsx | 22 +- .../src/screens/Form/Form.loader.ts | 49 +- .../form-system/src/screens/Form/Form.tsx | 106 +-- .../src/screens/Forms/CreateForm.graphql | 44 +- .../src/screens/Forms/Forms.graphql | 5 +- .../src/screens/Forms/Forms.loader.ts | 26 +- .../form-system/src/screens/Forms/Forms.tsx | 39 +- .../form-system/src/services/apiService.tsx | 248 ------- .../src/services/translationStation.tsx | 41 -- .../form-system/src/services/zodValidation.ts | 193 ------ .../form-system/src/types/enums/index.tsx | 100 --- .../form-system/src/types/interfaces.tsx | 271 -------- .../form-system/src/utils/defaultStep.tsx | 3 +- .../admin/form-system/src/utils/fileTypes.ts | 69 +- libs/portals/admin/form-system/tsconfig.json | 2 +- 131 files changed, 2192 insertions(+), 3034 deletions(-) delete mode 100644 libs/api/domains/form-system/src/lib/utils/helperFunctions.ts create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ToggleConnection.tsx delete mode 100644 libs/portals/admin/form-system/src/context/FormBuilderContext.tsx delete mode 100644 libs/portals/admin/form-system/src/context/LayoutContext.tsx delete mode 100644 libs/portals/admin/form-system/src/context/UserContext.tsx delete mode 100644 libs/portals/admin/form-system/src/hooks/formReducer.ts delete mode 100644 libs/portals/admin/form-system/src/hooks/headerInfoReducer.ts delete mode 100644 libs/portals/admin/form-system/src/hooks/settingsReducer.ts delete mode 100644 libs/portals/admin/form-system/src/hooks/useUser.ts delete mode 100644 libs/portals/admin/form-system/src/services/apiService.tsx delete mode 100644 libs/portals/admin/form-system/src/services/translationStation.tsx delete mode 100644 libs/portals/admin/form-system/src/services/zodValidation.ts delete mode 100644 libs/portals/admin/form-system/src/types/enums/index.tsx delete mode 100644 libs/portals/admin/form-system/src/types/interfaces.tsx diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 21e96e6b619a..e0e668cc3f6b 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -392,4 +392,4 @@ const environment = getConfig }), ], }) -export class AppModule { } +export class AppModule {} diff --git a/apps/form-builder/components/AuthProvider/AuthProvider.tsx b/apps/form-builder/components/AuthProvider/AuthProvider.tsx index 594ceb670bec..c8b54c015ca8 100644 --- a/apps/form-builder/components/AuthProvider/AuthProvider.tsx +++ b/apps/form-builder/components/AuthProvider/AuthProvider.tsx @@ -1,17 +1,17 @@ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck -import { ReactNode } from "react" -import useUser from "../../hooks/useUser" -import UserContext from "../../context/UserContext" -import { User } from "../../types/interfaces" +import { ReactNode } from 'react' +import useUser from '../../hooks/useUser' +import UserContext from '../../context/UserContext' +import { User } from '../../types/interfaces' interface UserProps { children: ReactNode } - const AuthProvider = ({ children }: UserProps) => { - const { isAuthenticated, setIsAuthenticated, user, setUser, userLoading } = useUser() + const { isAuthenticated, setIsAuthenticated, user, setUser, userLoading } = + useUser() return ( { }} + onChange={() => {}} /> { }} + onChange={() => {}} /> @@ -75,7 +75,7 @@ export default function ListItem({ marginRight={2} style={{ cursor: 'pointer' }} // eslint-disable-next-line @typescript-eslint/no-empty-function - onClick={() => { }} + onClick={() => {}} > @@ -93,7 +93,7 @@ export default function ListItem({ size="sm" value={listItem.label.is} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> @@ -104,7 +104,7 @@ export default function ListItem({ size="sm" value={listItem.label.en} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> diff --git a/apps/form-builder/context/UserContext.tsx b/apps/form-builder/context/UserContext.tsx index b59d839d23b2..c7ae918f1a3d 100644 --- a/apps/form-builder/context/UserContext.tsx +++ b/apps/form-builder/context/UserContext.tsx @@ -1,6 +1,5 @@ -import { createContext } from "react"; -import { User } from "../types/interfaces"; - +import { createContext } from 'react' +import { User } from '../types/interfaces' const UserContext = createContext({ isAuthenticated: false, diff --git a/apps/form-builder/hooks/useUser.ts b/apps/form-builder/hooks/useUser.ts index bee6280737f9..4d0458f4cd06 100644 --- a/apps/form-builder/hooks/useUser.ts +++ b/apps/form-builder/hooks/useUser.ts @@ -7,7 +7,9 @@ export default function useUser() { const [session, loading] = useSession() const timeNow = Math.floor(Date.now() / 1000) - const expiryStr = session?.expires ? new Date(session.expires.replace(/['"]+/g, '')).getTime() : undefined + const expiryStr = session?.expires + ? new Date(session.expires.replace(/['"]+/g, '')).getTime() + : undefined const expiry = Math.floor((expiryStr ?? 0) / 1000) const hasNotExpired = timeNow < expiry @@ -25,7 +27,7 @@ export default function useUser() { if (!user && session?.user) { const { name = '', email, image } = session.user || {} setUser({ name: name || '', email: email || '', image: image || '' }) - setIsAuthenticated(true); + setIsAuthenticated(true) } } }, [setUser, session, user]) diff --git a/apps/form-builder/pages/_app.tsx b/apps/form-builder/pages/_app.tsx index f86fd826885a..593db52ef5e5 100644 --- a/apps/form-builder/pages/_app.tsx +++ b/apps/form-builder/pages/_app.tsx @@ -15,10 +15,7 @@ const FormBuilderProviderApp: React.FC = ({ defaultLocale="is" onError={() => undefined} > - +
@@ -28,7 +25,6 @@ const FormBuilderProviderApp: React.FC = ({ - ) } @@ -37,10 +33,9 @@ export async function getInitialProps(appContext: AppContext) { const session = await getSession(ctx) return { pageProps: { - session: session - } + session: session, + }, } } export default FormBuilderProviderApp - diff --git a/apps/form-builder/pages/api/auth/[...nextauth].ts b/apps/form-builder/pages/api/auth/[...nextauth].ts index e0643522ceed..fb644da3b3e0 100644 --- a/apps/form-builder/pages/api/auth/[...nextauth].ts +++ b/apps/form-builder/pages/api/auth/[...nextauth].ts @@ -19,20 +19,20 @@ const providers = [ clientSecret: env.identityServerClientId, clientId: env.identityServerClientId, domain: env.identityServerDomain, - protection: 'pkce' - }) + protection: 'pkce', + }), ] const callbacks: CallbacksOptions = { signIn: signIn, jwt: jwt, - session: session + session: session, } async function signIn( user: AuthUser, account: Record, - profile: Record + profile: Record, ): Promise { return handleSignIn(user, account, profile, env.identityServerClientId) } @@ -68,4 +68,3 @@ const handleAuth = (req: NextApiRequest, res: NextApiResponse) => { } export default handleAuth - diff --git a/apps/form-builder/screens/Form.tsx b/apps/form-builder/screens/Form.tsx index 0a975f0d4415..adbe495abe4b 100644 --- a/apps/form-builder/screens/Form.tsx +++ b/apps/form-builder/screens/Form.tsx @@ -45,11 +45,11 @@ export default function Form({ form }: Props) { activeItem: inSettings ? { type: 'Step', data: baseSettingsStep } : { - type: 'Step', - data: - form?.form?.stepsList.find((s) => s.type === 'Innsláttur') || - defaultStep, - }, + type: 'Step', + data: + form?.form?.stepsList.find((s) => s.type === 'Innsláttur') || + defaultStep, + }, steps: form.form.stepsList ?? [], groups: form.form.groupsList ?? [], inputs: form.form.inputsList ?? [], diff --git a/apps/portals/admin/src/auth.ts b/apps/portals/admin/src/auth.ts index 48f53613aed3..4a081c7312ea 100644 --- a/apps/portals/admin/src/auth.ts +++ b/apps/portals/admin/src/auth.ts @@ -37,7 +37,7 @@ if (userMocked) { AdminPortalScope.signatureCollectionManage, AdminPortalScope.signatureCollectionProcess, AdminPortalScope.formSystem, - AdminPortalScope.formSystemSuperUser + AdminPortalScope.formSystemSuperUser, ], post_logout_redirect_uri: `${window.location.origin}`, userStorePrefix: 'ap.', diff --git a/apps/portals/admin/src/lib/masterNavigation.ts b/apps/portals/admin/src/lib/masterNavigation.ts index 8e99ae2a5ab7..5405d89aee5c 100644 --- a/apps/portals/admin/src/lib/masterNavigation.ts +++ b/apps/portals/admin/src/lib/masterNavigation.ts @@ -44,7 +44,7 @@ export const TOP_NAVIGATION: PortalNavigationItem = { serviceDeskNavigation, // Meðmælasöfnun signatureCollectionNavigation, - formSystemNavigation + formSystemNavigation, ], } export const BOTTOM_NAVIGATION: PortalNavigationItem = { diff --git a/apps/portals/admin/src/lib/modules.ts b/apps/portals/admin/src/lib/modules.ts index f3ec19c5a14a..73fc69898b39 100644 --- a/apps/portals/admin/src/lib/modules.ts +++ b/apps/portals/admin/src/lib/modules.ts @@ -29,5 +29,5 @@ export const modules: PortalModule[] = [ petitionModule, serviceDeskModule, signatureCollectionModule, - formSystemModule + formSystemModule, ] diff --git a/libs/api/domains/consultation-portal/src/lib/caseSubscription/caseSubscription.resolver.ts b/libs/api/domains/consultation-portal/src/lib/caseSubscription/caseSubscription.resolver.ts index cecd0a466aa4..32e9bc95fc18 100644 --- a/libs/api/domains/consultation-portal/src/lib/caseSubscription/caseSubscription.resolver.ts +++ b/libs/api/domains/consultation-portal/src/lib/caseSubscription/caseSubscription.resolver.ts @@ -25,7 +25,7 @@ import { Audit } from '@island.is/nest/audit' @FeatureFlag(Features.consultationPortalApplication) @Audit({ namespace: '@island.is/samradsgatt' }) export class CaseSubscriptionResolver { - constructor(private caseSubscriptionService: CaseSubscriptionService) { } + constructor(private caseSubscriptionService: CaseSubscriptionService) {} @Mutation(() => Boolean, { nullable: true, diff --git a/libs/api/domains/form-system/project.json b/libs/api/domains/form-system/project.json index 2c19fe2b679f..870258868149 100644 --- a/libs/api/domains/form-system/project.json +++ b/libs/api/domains/form-system/project.json @@ -6,20 +6,14 @@ "targets": { "lint": { "executor": "@nx/linter:eslint", - "outputs": [ - "{options.outputFile}" - ], + "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": [ - "libs/api/domains/form-system/**/*.ts" - ] + "lintFilePatterns": ["libs/api/domains/form-system/**/*.ts"] } }, "test": { "executor": "@nx/jest:jest", - "outputs": [ - "{workspaceRoot}/coverage/{projectRoot}" - ], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/api/domains/form-system/jest.config.ts", "passWithNoTests": true @@ -32,8 +26,5 @@ } } }, - "tags": [ - "lib:api", - "scope:api" - ] -} \ No newline at end of file + "tags": ["lib:api", "scope:api"] +} diff --git a/libs/api/domains/form-system/src/dto/applicantType.input.ts b/libs/api/domains/form-system/src/dto/applicantType.input.ts index 49c0decdc602..ad4daead51ac 100644 --- a/libs/api/domains/form-system/src/dto/applicantType.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantType.input.ts @@ -1,7 +1,6 @@ -import { Field, InputType, Int } from "@nestjs/graphql"; -import { LanguageTypeInput } from "./language.input"; -import { ApplicantTypeNameSuggestionInput } from "./applicantTypeNameSuggestion.input"; - +import { Field, InputType, Int } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' +import { ApplicantTypeNameSuggestionInput } from './applicantTypeNameSuggestion.input' @InputType('FormSystemApplicantTypeInput') export class ApplicantTypeInput { @@ -38,4 +37,3 @@ export class FormApplicantTypeInput { @Field(() => String) type?: string | null } - diff --git a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts index 9d2c163327f9..0ab05ed0084f 100644 --- a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts @@ -1,5 +1,5 @@ -import { InputType, Field, Int } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" +import { InputType, Field, Int } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' @InputType('FormSystemApplicantTypeNameSuggestionInput') export class ApplicantTypeNameSuggestionInput { diff --git a/libs/api/domains/form-system/src/dto/documentType.input.ts b/libs/api/domains/form-system/src/dto/documentType.input.ts index 3be1e25d546e..57f0c0c1ab19 100644 --- a/libs/api/domains/form-system/src/dto/documentType.input.ts +++ b/libs/api/domains/form-system/src/dto/documentType.input.ts @@ -1,7 +1,5 @@ -import { Field, Int, InputType } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" - - +import { Field, Int, InputType } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' @InputType('FormSystemDocumentTypeInput') export class DocumentTypeInput { diff --git a/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts b/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts index 79a6c486d569..f3715b15019e 100644 --- a/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts +++ b/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts @@ -1,5 +1,8 @@ import { Field, Int, InputType, registerEnumType } from '@nestjs/graphql' -import { EExternalEndpointType, EExternalEndpointEnvironment } from '@island.is/clients/form-system' +import { + EExternalEndpointType, + EExternalEndpointEnvironment, +} from '@island.is/clients/form-system' registerEnumType(EExternalEndpointType, { name: 'FormSystemExternalEndpointType', diff --git a/libs/api/domains/form-system/src/dto/forms.input.ts b/libs/api/domains/form-system/src/dto/forms.input.ts index ad1cf2ab265c..9170db1b2e99 100644 --- a/libs/api/domains/form-system/src/dto/forms.input.ts +++ b/libs/api/domains/form-system/src/dto/forms.input.ts @@ -1,13 +1,12 @@ -import { Field, InputType, Int } from "@nestjs/graphql" +import { Field, InputType, Int } from '@nestjs/graphql' import graphqlTypeJson from 'graphql-type-json' -import { LanguageTypeInput } from "./language.input" -import { InputInput } from "./inputs.input" -import { GroupInput } from "./groups.input" -import { StepInput } from "./steps.input" -import { FormApplicantTypeInput } from "./applicantType.input" -import { DocumentTypeInput } from "./documentType.input" -import { OrganizationInput } from "./organization.input" - +import { LanguageTypeInput } from './language.input' +import { InputInput } from './inputs.input' +import { GroupInput } from './groups.input' +import { StepInput } from './steps.input' +import { FormApplicantTypeInput } from './applicantType.input' +import { DocumentTypeInput } from './documentType.input' +import { OrganizationInput } from './organization.input' @InputType('FormSystemGetFormInput') export class GetFormInput { diff --git a/libs/api/domains/form-system/src/dto/groups.input.ts b/libs/api/domains/form-system/src/dto/groups.input.ts index d9957894ec5f..415eaf0b6bd3 100644 --- a/libs/api/domains/form-system/src/dto/groups.input.ts +++ b/libs/api/domains/form-system/src/dto/groups.input.ts @@ -1,7 +1,6 @@ -import { Field, InputType, Int } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" -import { InputInput } from "./inputs.input" - +import { Field, InputType, Int } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' +import { InputInput } from './inputs.input' @InputType('FormSystemGroupCreation') export class CreateGroup { diff --git a/libs/api/domains/form-system/src/dto/inputSettings.input.ts b/libs/api/domains/form-system/src/dto/inputSettings.input.ts index d35bf57506a0..65fe382e11f1 100644 --- a/libs/api/domains/form-system/src/dto/inputSettings.input.ts +++ b/libs/api/domains/form-system/src/dto/inputSettings.input.ts @@ -1,7 +1,6 @@ -import { InputType, Field, Int, Float } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" -import { ListItemInput } from "./listItem.input" - +import { InputType, Field, Int, Float } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' +import { ListItemInput } from './listItem.input' @InputType('FormSystemInputSettingsInput') export class InputSettingsInput { diff --git a/libs/api/domains/form-system/src/dto/inputs.input.ts b/libs/api/domains/form-system/src/dto/inputs.input.ts index 21dc96ff8845..16f9b1a9b11e 100644 --- a/libs/api/domains/form-system/src/dto/inputs.input.ts +++ b/libs/api/domains/form-system/src/dto/inputs.input.ts @@ -1,7 +1,7 @@ -import { Field, InputType, Int } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" +import { Field, InputType, Int } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' import graphqlTypeJson from 'graphql-type-json' -import { InputSettingsInput } from "./inputSettings.input" +import { InputSettingsInput } from './inputSettings.input' @InputType('FormSystemInputCreation') export class CreateInput { @@ -43,7 +43,6 @@ export class UpdateInput { @Field(() => Int, { nullable: true }) groupId?: number - } @InputType('FormSystemGetInputInput') @@ -114,4 +113,3 @@ export class InputInput { @Field(() => graphqlTypeJson, { nullable: true }) inputFields?: object } - diff --git a/libs/api/domains/form-system/src/dto/language.input.ts b/libs/api/domains/form-system/src/dto/language.input.ts index bd282bf0bc68..956c62adfd8f 100644 --- a/libs/api/domains/form-system/src/dto/language.input.ts +++ b/libs/api/domains/form-system/src/dto/language.input.ts @@ -1,4 +1,4 @@ -import { Field, InputType } from "@nestjs/graphql"; +import { Field, InputType } from '@nestjs/graphql' @InputType('FormSystemLanguageTypeInput') export class LanguageTypeInput { diff --git a/libs/api/domains/form-system/src/dto/listItem.input.ts b/libs/api/domains/form-system/src/dto/listItem.input.ts index 5ea06da5abd2..ec7069bb9c8a 100644 --- a/libs/api/domains/form-system/src/dto/listItem.input.ts +++ b/libs/api/domains/form-system/src/dto/listItem.input.ts @@ -1,5 +1,5 @@ -import { InputType, Field } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" +import { InputType, Field } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' @InputType('FormSystemListItemInput') export class ListItemInput { diff --git a/libs/api/domains/form-system/src/dto/listType.input.ts b/libs/api/domains/form-system/src/dto/listType.input.ts index 9f1aff48b853..cbf1e84a90f1 100644 --- a/libs/api/domains/form-system/src/dto/listType.input.ts +++ b/libs/api/domains/form-system/src/dto/listType.input.ts @@ -1,5 +1,5 @@ -import { Field, Int, InputType } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" +import { Field, Int, InputType } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' @InputType('FormSystemListTypeInput') export class ListTypeInput { diff --git a/libs/api/domains/form-system/src/dto/organization.input.ts b/libs/api/domains/form-system/src/dto/organization.input.ts index c8ed7c23be1a..68479727381d 100644 --- a/libs/api/domains/form-system/src/dto/organization.input.ts +++ b/libs/api/domains/form-system/src/dto/organization.input.ts @@ -1,11 +1,11 @@ -import { Field, Int, InputType } from "@nestjs/graphql" -import { InputInput } from "./inputs.input" -import { DocumentTypeInput } from "./documentType.input" -import { FormInput } from "./forms.input" -import { ApplicantTypeInput } from "./applicantType.input" -import { ListTypeInput } from "./listType.input" -import { ExternalEndpointsInput } from "./externalEndpoints.input" -import { LanguageTypeInput } from "./language.input" +import { Field, Int, InputType } from '@nestjs/graphql' +import { InputInput } from './inputs.input' +import { DocumentTypeInput } from './documentType.input' +import { FormInput } from './forms.input' +import { ApplicantTypeInput } from './applicantType.input' +import { ListTypeInput } from './listType.input' +import { ExternalEndpointsInput } from './externalEndpoints.input' +import { LanguageTypeInput } from './language.input' @InputType('FormSystemOrganizationCreation') export class CreateOrganization { diff --git a/libs/api/domains/form-system/src/dto/services.input.ts b/libs/api/domains/form-system/src/dto/services.input.ts index 6b3d714dd3a3..1e37aa380c2f 100644 --- a/libs/api/domains/form-system/src/dto/services.input.ts +++ b/libs/api/domains/form-system/src/dto/services.input.ts @@ -1,4 +1,4 @@ -import { Field, InputType } from "@nestjs/graphql"; +import { Field, InputType } from '@nestjs/graphql' @InputType('FormSystemGetPropertyInput') export class GetPropertyInput { diff --git a/libs/api/domains/form-system/src/dto/steps.input.ts b/libs/api/domains/form-system/src/dto/steps.input.ts index 7b9da446ce88..ded4fe3d22f0 100644 --- a/libs/api/domains/form-system/src/dto/steps.input.ts +++ b/libs/api/domains/form-system/src/dto/steps.input.ts @@ -1,6 +1,6 @@ -import { Field, InputType, Int } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" -import { GroupInput } from "./groups.input" +import { Field, InputType, Int } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' +import { GroupInput } from './groups.input' @InputType('FormSystemStepCreation') export class CreateStep { diff --git a/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts b/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts index 50b5f6f50fb0..1c6982b57514 100644 --- a/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts +++ b/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts @@ -1,9 +1,8 @@ -import { Field, InputType, Int } from "@nestjs/graphql" -import { LanguageTypeInput } from "./language.input" +import { Field, InputType, Int } from '@nestjs/graphql' +import { LanguageTypeInput } from './language.input' import graphqlTypeJson from 'graphql-type-json' -import { DocumentTypeUpdateInput } from "./documentType.input" -import { FormApplicantTypeInput } from "./applicantType.input" - +import { DocumentTypeUpdateInput } from './documentType.input' +import { FormApplicantTypeInput } from './applicantType.input' @InputType('FormSystemFormSettingsInput') export class FormSettingsInput { diff --git a/libs/api/domains/form-system/src/lib/form-system.module.ts b/libs/api/domains/form-system/src/lib/form-system.module.ts index 0c7660bce862..939e1e9f28a5 100644 --- a/libs/api/domains/form-system/src/lib/form-system.module.ts +++ b/libs/api/domains/form-system/src/lib/form-system.module.ts @@ -27,12 +27,9 @@ import { StepsResolver } from './steps/steps.resolver' FormSystemService, FormSystemServicesResolver, StepsService, - StepsResolver + StepsResolver, ], exports: [], - imports: [ - AuthModule, - FormSystemClientModule - ] + imports: [AuthModule, FormSystemClientModule], }) -export class FormSystemModule { } +export class FormSystemModule {} diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index 51baab83d7e3..dbe5fc101080 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -1,85 +1,90 @@ -import { Args, Mutation, Query, Resolver } from "@nestjs/graphql" -import { FormsService } from "./forms.service" -import { FormResponse } from "../../models/formResponse.model" -import { CreateFormInput, GetFormInput, GetFormsInput, UpdateFormInput, DeleteFormInput } from "../../dto/forms.input" -import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' -import { FormListResponse } from "../../models/formListResponse.model" +import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' +import { FormsService } from './forms.service' +import { FormResponse } from '../../models/formResponse.model' +import { + CreateFormInput, + GetFormInput, + GetFormsInput, + UpdateFormInput, + DeleteFormInput, +} from '../../dto/forms.input' +import { + CurrentUser, + IdsUserGuard, + type User, +} from '@island.is/auth-nest-tools' +import { FormListResponse } from '../../models/formListResponse.model' import { Audit } from '@island.is/nest/audit' -import { UseGuards } from "@nestjs/common" -import { UpdateFormSettingsInput } from "../../dto/updateFormSettings.input" - - +import { UseGuards } from '@nestjs/common' +import { UpdateFormSettingsInput } from '../../dto/updateFormSettings.input' @Resolver() @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class FormsResolver { - constructor(private readonly formsService: FormsService) { } + constructor(private readonly formsService: FormsService) {} @Query(() => FormResponse, { - name: 'formSystemGetForm' + name: 'formSystemGetForm', }) async getForm( @Args('input', { type: () => GetFormInput }) input: GetFormInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.formsService.getForm(user, input) } @Query(() => FormListResponse, { - name: 'formSystemGetForms' + name: 'formSystemGetForms', }) async getForms( @Args('input', { type: () => GetFormsInput }) input: GetFormsInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.formsService.getForms(user, input) } @Mutation(() => FormResponse, { - name: 'formSystemCreateForm' + name: 'formSystemCreateForm', }) async createForm( @Args('input', { type: () => CreateFormInput }) input: CreateFormInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.formsService.postForm(user, input) } @Mutation(() => Boolean, { nullable: true, - name: 'formSystemUpdateForm' + name: 'formSystemUpdateForm', }) async updateForm( @Args('input', { type: () => UpdateFormInput }) input: UpdateFormInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.formsService.updateForm(user, input) } @Mutation(() => Boolean, { nullable: true, - name: 'formSystemUpdateFormSettings' + name: 'formSystemUpdateFormSettings', }) async updateFormSettings( - @Args('input', { type: () => UpdateFormSettingsInput }) input: UpdateFormSettingsInput, - @CurrentUser() user: User + @Args('input', { type: () => UpdateFormSettingsInput }) + input: UpdateFormSettingsInput, + @CurrentUser() user: User, ): Promise { return this.formsService.updateFormSettings(user, input) } @Mutation(() => Boolean, { nullable: true, - name: 'formSystemDeleteForm' + name: 'formSystemDeleteForm', }) async deleteForm( @Args('input', { type: () => DeleteFormInput }) input: DeleteFormInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return await this.formsService.deleteForm(user, input) } - - } - - diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 68a30c1e459d..be5d4c50952f 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -1,15 +1,28 @@ -import { Inject, Injectable } from "@nestjs/common" +import { Inject, Injectable } from '@nestjs/common' import { LOGGER_PROVIDER, Logger } from '@island.is/logging' -import { ApiFormsFormIdDeleteRequest, ApiFormsFormIdGetRequest, ApiFormsFormIdPutRequest, ApiFormsOrganizationOrganizationIdGetRequest, FormUpdateDto, FormsApi, ApiFormsFormIdSettingsPutRequest, FormSettingsUpdateDto } from "@island.is/clients/form-system" -import { ApolloError } from "@apollo/client" +import { + ApiFormsFormIdDeleteRequest, + ApiFormsFormIdGetRequest, + ApiFormsFormIdPutRequest, + ApiFormsOrganizationOrganizationIdGetRequest, + FormUpdateDto, + FormsApi, + ApiFormsFormIdSettingsPutRequest, + FormSettingsUpdateDto, +} from '@island.is/clients/form-system' +import { ApolloError } from '@apollo/client' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' -import { CreateFormInput, DeleteFormInput, GetFormInput, GetFormsInput, UpdateFormInput } from "../../dto/forms.input" -import { FormResponse } from "../../models/formResponse.model" -import { FormListResponse } from "../../models/formListResponse.model" -import { UpdateFormSettingsInput } from "../../dto/updateFormSettings.input" -import { InputSettings } from "../../models/inputSettings.model" - - +import { + CreateFormInput, + DeleteFormInput, + GetFormInput, + GetFormsInput, + UpdateFormInput, +} from '../../dto/forms.input' +import { FormResponse } from '../../models/formResponse.model' +import { FormListResponse } from '../../models/formListResponse.model' +import { UpdateFormSettingsInput } from '../../dto/updateFormSettings.input' +import { InputSettings } from '../../models/inputSettings.model' @Injectable() export class FormsService { @@ -17,12 +30,12 @@ export class FormsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private formsApi: FormsApi, - ) { } + ) {} handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), - category: 'forms-service' + category: 'forms-service', } this.logger.error(errorDetail || 'Error in forms service', err) @@ -40,7 +53,6 @@ export class FormsService { return this.formsApi.withMiddleware(new AuthMiddleware(auth)) } - async getForm(auth: User, input: GetFormInput): Promise { const request: ApiFormsFormIdGetRequest = { formId: input.id, @@ -75,13 +87,14 @@ export class FormsService { } const response = await this.formsApiWithAuth(auth) .apiFormsOrganizationOrganizationIdGet(request) - .catch((e) => this.handle4xx(e, 'failed to get forms from organization Id')) + .catch((e) => + this.handle4xx(e, 'failed to get forms from organization Id'), + ) if (!response || response instanceof ApolloError) { return {} } - return response as FormListResponse } @@ -120,7 +133,7 @@ export class FormsService { id: input.formId, inputsList: input.form?.inputsList?.map((input) => { return input - }) + }), } const request: ApiFormsFormIdPutRequest = { @@ -140,12 +153,15 @@ export class FormsService { return response } - async updateFormSettings(auth: User, input: UpdateFormSettingsInput): Promise { + async updateFormSettings( + auth: User, + input: UpdateFormSettingsInput, + ): Promise { const request: ApiFormsFormIdSettingsPutRequest = { formId: input.id, - formSettingsUpdateDto: input.formSettingsUpdateDto as FormSettingsUpdateDto + formSettingsUpdateDto: + input.formSettingsUpdateDto as FormSettingsUpdateDto, } - console.log('updateFormSettings request', request) const response = await this.formsApiWithAuth(auth) .apiFormsFormIdSettingsPut(request) .catch((e) => this.handle4xx(e, 'failed to update form settings')) diff --git a/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts b/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts index 3d71b5e3aaff..285eb51d5496 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts @@ -1,55 +1,64 @@ -import { Query, Args, Resolver, Mutation } from "@nestjs/graphql"; -import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' -import { GroupsService } from "./groups.service"; -import { GetGroupInput, CreateGroupInput, DeleteGroupInput, UpdateGroupInput } from "../../dto/groups.input"; -import { Group } from "../../models/group.model"; +import { Query, Args, Resolver, Mutation } from '@nestjs/graphql' +import { + CurrentUser, + IdsUserGuard, + type User, +} from '@island.is/auth-nest-tools' +import { GroupsService } from './groups.service' +import { + GetGroupInput, + CreateGroupInput, + DeleteGroupInput, + UpdateGroupInput, +} from '../../dto/groups.input' +import { Group } from '../../models/group.model' import { Audit } from '@island.is/nest/audit' -import { UseGuards } from "@nestjs/common"; +import { UseGuards } from '@nestjs/common' @Resolver() @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class GroupsResolver { - constructor(private readonly groupsService: GroupsService) { } + constructor(private readonly groupsService: GroupsService) {} @Query(() => Group, { - name: 'formSystemGetGroup' + name: 'formSystemGetGroup', }) async getGroup( @Args('input', { type: () => GetGroupInput }) input: GetGroupInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.groupsService.getGroup(user, input) } @Mutation(() => Group, { - name: 'formSystemCreateGroup' + name: 'formSystemCreateGroup', }) async postGroup( @Args('input', { type: () => CreateGroupInput }) input: CreateGroupInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.groupsService.postGroup(user, input) } @Mutation(() => Boolean, { nullable: true, - name: 'formSystemDeleteGroup' + name: 'formSystemDeleteGroup', }) async deleteGroup( @Args('input', { type: () => DeleteGroupInput }) input: DeleteGroupInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return await this.groupsService.deleteGroup(user, input) } @Mutation(() => Boolean, { nullable: true, - name: 'formSystemUpdateGroup' + name: 'formSystemUpdateGroup', }) async updateGroup( @Args('input', { type: () => UpdateGroupInput }) input: UpdateGroupInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.groupsService.updateGroup(user, input) } diff --git a/libs/api/domains/form-system/src/lib/groups/groups.service.ts b/libs/api/domains/form-system/src/lib/groups/groups.service.ts index bd791b5045c7..4a6b2a0b0a92 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.service.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.service.ts @@ -1,23 +1,36 @@ -import { Inject, Injectable } from "@nestjs/common" +import { Inject, Injectable } from '@nestjs/common' import { LOGGER_PROVIDER, Logger } from '@island.is/logging' -import { ApolloError } from "@apollo/client" +import { ApolloError } from '@apollo/client' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' -import { GroupsApi, ApiGroupsGroupIdGetRequest, ApiGroupsPostRequest, ApiGroupsGroupIdDeleteRequest, ApiGroupsGroupIdPutRequest, GroupCreationDto, GroupUpdateDto } from "@island.is/clients/form-system" -import { GetGroupInput, CreateGroupInput, DeleteGroupInput, UpdateGroupInput } from "../../dto/groups.input" -import { Group } from "../../models/group.model" +import { + GroupsApi, + ApiGroupsGroupIdGetRequest, + ApiGroupsPostRequest, + ApiGroupsGroupIdDeleteRequest, + ApiGroupsGroupIdPutRequest, + GroupCreationDto, + GroupUpdateDto, +} from '@island.is/clients/form-system' +import { + GetGroupInput, + CreateGroupInput, + DeleteGroupInput, + UpdateGroupInput, +} from '../../dto/groups.input' +import { Group } from '../../models/group.model' @Injectable() export class GroupsService { constructor( @Inject(LOGGER_PROVIDER) private logger: Logger, - private formsApi: GroupsApi - ) { } + private formsApi: GroupsApi, + ) {} handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), - category: 'groups-service' + category: 'groups-service', } this.logger.error(errorDetail || 'Error in groups service', err) @@ -80,9 +93,8 @@ export class GroupsService { async updateGroup(auth: User, input: UpdateGroupInput): Promise { const request: ApiGroupsGroupIdPutRequest = { groupId: input.groupId, - groupUpdateDto: input.groupUpdateDto as GroupUpdateDto + groupUpdateDto: input.groupUpdateDto as GroupUpdateDto, } - console.log('groups update request: ', request) const response = await this.groupsApiWithAuth(auth) .apiGroupsGroupIdPut(request) .catch((e) => this.handle4xx(e, 'failed to update group')) diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts index e45945ad0122..3e6645025689 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.resolver.ts @@ -1,44 +1,53 @@ -import { Query, Args, Resolver, Mutation } from "@nestjs/graphql"; -import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' -import { GetInputInput, CreateInputInput, DeleteInputInput, UpdateInputInput } from "../../dto/inputs.input"; -import { Input } from "../../models/input.model"; -import { InputsService } from "./inputs.service"; +import { Query, Args, Resolver, Mutation } from '@nestjs/graphql' +import { + CurrentUser, + IdsUserGuard, + type User, +} from '@island.is/auth-nest-tools' +import { + GetInputInput, + CreateInputInput, + DeleteInputInput, + UpdateInputInput, +} from '../../dto/inputs.input' +import { Input } from '../../models/input.model' +import { InputsService } from './inputs.service' import { Audit } from '@island.is/nest/audit' -import { UseGuards } from "@nestjs/common"; +import { UseGuards } from '@nestjs/common' @Resolver() @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class InputsResolver { - constructor(private readonly inputsService: InputsService) { } + constructor(private readonly inputsService: InputsService) {} @Query(() => Input, { - name: 'formSystemGetInput' + name: 'formSystemGetInput', }) async getInput( @Args('input', { type: () => GetInputInput }) input: GetInputInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.inputsService.getInput(user, input) } @Mutation(() => Input, { - name: 'formSystemCreateInput' + name: 'formSystemCreateInput', }) async postInput( @Args('input', { type: () => CreateInputInput }) input: CreateInputInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.inputsService.postInput(user, input) } @Mutation(() => Boolean, { nullable: true, - name: 'formSystemDeleteInput' + name: 'formSystemDeleteInput', }) async deleteInput( @Args('input', { type: () => DeleteInputInput }) input: DeleteInputInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { const response = await this.inputsService.deleteInput(user, input) return response @@ -46,11 +55,11 @@ export class InputsResolver { @Mutation(() => Boolean, { nullable: true, - name: 'formSystemUpdateInput' + name: 'formSystemUpdateInput', }) async updateInput( @Args('input', { type: () => UpdateInputInput }) input: UpdateInputInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.inputsService.updateInput(user, input) } diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts index bf7d12c63704..0eac27ee5916 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts @@ -1,10 +1,23 @@ -import { Inject, Injectable } from "@nestjs/common" +import { Inject, Injectable } from '@nestjs/common' import { LOGGER_PROVIDER, Logger } from '@island.is/logging' -import { ApolloError } from "@apollo/client" +import { ApolloError } from '@apollo/client' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' -import { InputsApi, ApiInputsInputIdGetRequest, ApiInputsPostRequest, ApiInputsInputIdDeleteRequest, ApiInputsInputIdPutRequest, InputCreationDto, InputUpdateDto } from "@island.is/clients/form-system" -import { GetInputInput, CreateInputInput, DeleteInputInput, UpdateInputInput } from "../../dto/inputs.input" -import { Input } from "../../models/input.model" +import { + InputsApi, + ApiInputsInputIdGetRequest, + ApiInputsPostRequest, + ApiInputsInputIdDeleteRequest, + ApiInputsInputIdPutRequest, + InputCreationDto, + InputUpdateDto, +} from '@island.is/clients/form-system' +import { + GetInputInput, + CreateInputInput, + DeleteInputInput, + UpdateInputInput, +} from '../../dto/inputs.input' +import { Input } from '../../models/input.model' // import { graphql } from "graphql" // import { RESTInputSettings, graphqlToRestInputSettings, restToGraphqlInputSettings } from "../utils/helperFunctions" // import { InputSettings } from "../../models/inputSettings.model" @@ -14,13 +27,13 @@ export class InputsService { constructor( @Inject(LOGGER_PROVIDER) private logger: Logger, - private formsApi: InputsApi - ) { } + private formsApi: InputsApi, + ) {} handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), - category: 'inputs-service' + category: 'inputs-service', } this.logger.error(errorDetail || 'Error in inputs service', err) @@ -66,7 +79,6 @@ export class InputsService { if (!response || response instanceof ApolloError) { return {} } - console.log('Post input response', response) return response as Input } @@ -86,25 +98,16 @@ export class InputsService { } async updateInput(auth: User, input: UpdateInputInput): Promise { - // const request: ApiInputsInputIdPutRequest = { - // inputId: input.inputId, - // inputUpdateDto: { - // ...input.inputUpdateDto, - // inputSettings: graphqlToRestInputSettings(input.inputUpdateDto?.inputSettings as InputSettings) - // } as InputUpdateDto, - // } let request: ApiInputsInputIdPutRequest = { inputId: input.inputId, - inputUpdateDto: input.inputUpdateDto as InputUpdateDto + inputUpdateDto: input.inputUpdateDto as InputUpdateDto, } if (input.inputUpdateDto) { request = { inputId: input.inputId, - inputUpdateDto: input.inputUpdateDto + inputUpdateDto: input.inputUpdateDto, } } - - console.log('request Input update', request) const response = await this.inputsApiWithAuth(auth) .apiInputsInputIdPut(request) .catch((e) => this.handle4xx(e, 'failed to update input')) diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts index 7f09f5d93364..ded9859a34e3 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts @@ -1,25 +1,28 @@ -import { Args, Mutation, Resolver } from "@nestjs/graphql"; -import { OrganizationsService } from "./organizations.services"; -import { CreateOrganizationInput } from "../../dto/organization.input"; -import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' -import { Organization } from "../../models/organization.model"; +import { Args, Mutation, Resolver } from '@nestjs/graphql' +import { OrganizationsService } from './organizations.services' +import { CreateOrganizationInput } from '../../dto/organization.input' +import { + CurrentUser, + IdsUserGuard, + type User, +} from '@island.is/auth-nest-tools' +import { Organization } from '../../models/organization.model' import { Audit } from '@island.is/nest/audit' -import { UseGuards } from "@nestjs/common"; - - +import { UseGuards } from '@nestjs/common' @Resolver() @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class OrganizationsResolver { - constructor(private readonly organizationsService: OrganizationsService) { } + constructor(private readonly organizationsService: OrganizationsService) {} @Mutation(() => Organization, { - name: 'formSystemCreateOrganization' + name: 'formSystemCreateOrganization', }) async postOrganization( - @Args('input', { type: () => CreateOrganizationInput }) input: CreateOrganizationInput, - @CurrentUser() user: User + @Args('input', { type: () => CreateOrganizationInput }) + input: CreateOrganizationInput, + @CurrentUser() user: User, ): Promise { return this.organizationsService.postOrganization(user, input) } diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts index b624ac511d98..e831d58ced94 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts @@ -1,23 +1,26 @@ -import { Inject, Injectable } from "@nestjs/common" +import { Inject, Injectable } from '@nestjs/common' import { LOGGER_PROVIDER, Logger } from '@island.is/logging' -import { ApolloError } from "@apollo/client" +import { ApolloError } from '@apollo/client' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' -import { ApiOrganizationsPostRequest, OrganizationsApi } from "@island.is/clients/form-system" -import { CreateOrganizationInput } from "../../dto/organization.input" -import { Organization } from "../../models/organization.model" +import { + ApiOrganizationsPostRequest, + OrganizationsApi, +} from '@island.is/clients/form-system' +import { CreateOrganizationInput } from '../../dto/organization.input' +import { Organization } from '../../models/organization.model' @Injectable() export class OrganizationsService { constructor( @Inject(LOGGER_PROVIDER) private logger: Logger, - private organizationsApi: OrganizationsApi - ) { } + private organizationsApi: OrganizationsApi, + ) {} handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), - category: 'organizations-service' + category: 'organizations-service', } this.logger.error(errorDetail || 'Error in organizations service', err) @@ -35,7 +38,10 @@ export class OrganizationsService { return this.organizationsApi.withMiddleware(new AuthMiddleware(auth)) } - async postOrganization(auth: User, input: CreateOrganizationInput): Promise { + async postOrganization( + auth: User, + input: CreateOrganizationInput, + ): Promise { const request: ApiOrganizationsPostRequest = { organizationCreationDto: { name: input.name, diff --git a/libs/api/domains/form-system/src/lib/services/services.resolver.ts b/libs/api/domains/form-system/src/lib/services/services.resolver.ts index 8eb9648ff03b..1ba7e31fdf96 100644 --- a/libs/api/domains/form-system/src/lib/services/services.resolver.ts +++ b/libs/api/domains/form-system/src/lib/services/services.resolver.ts @@ -1,69 +1,62 @@ -import { Query, Args, Resolver } from "@nestjs/graphql"; -import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' -import { FormSystemService } from "./services.service"; -import { List } from "../../models/services.model"; -import { GetPropertyInput } from "../../dto/services.input"; +import { Query, Args, Resolver } from '@nestjs/graphql' +import { + CurrentUser, + IdsUserGuard, + type User, +} from '@island.is/auth-nest-tools' +import { FormSystemService } from './services.service' +import { List } from '../../models/services.model' +import { GetPropertyInput } from '../../dto/services.input' import { Audit } from '@island.is/nest/audit' -import { UseGuards } from "@nestjs/common"; - +import { UseGuards } from '@nestjs/common' @Resolver() @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class FormSystemServicesResolver { - constructor(private readonly formSystemServices: FormSystemService) { } + constructor(private readonly formSystemServices: FormSystemService) {} @Query(() => List, { - name: 'formSystemGetCountries' + name: 'formSystemGetCountries', }) - async getCountries( - @CurrentUser() user: User - ): Promise { + async getCountries(@CurrentUser() user: User): Promise { return this.formSystemServices.getCountries(user) } @Query(() => List, { - name: 'formSystemGetZipCodes' + name: 'formSystemGetZipCodes', }) - async getZipCodes( - @CurrentUser() user: User - ): Promise { + async getZipCodes(@CurrentUser() user: User): Promise { return this.formSystemServices.getZipCodes(user) } @Query(() => List, { - name: 'formSystemGetMunicipalities' + name: 'formSystemGetMunicipalities', }) - async getMunicipalities( - @CurrentUser() user: User - ): Promise { + async getMunicipalities(@CurrentUser() user: User): Promise { return this.formSystemServices.getMunicipalities(user) } @Query(() => List, { - name: 'formSystemGetRegistrationCategories' + name: 'formSystemGetRegistrationCategories', }) - async getRegistrationCategories( - @CurrentUser() user: User - ): Promise { + async getRegistrationCategories(@CurrentUser() user: User): Promise { return this.formSystemServices.getRegistrationCategories(user) } @Query(() => List, { - name: 'formSystemGetTradesProfessions' + name: 'formSystemGetTradesProfessions', }) - async getTradesProfessions( - @CurrentUser() user: User - ): Promise { + async getTradesProfessions(@CurrentUser() user: User): Promise { return this.formSystemServices.getTradesProfessions(user) } @Query(() => List, { - name: 'formSystemGetProperty' + name: 'formSystemGetProperty', }) async getProperty( @Args('input', { type: () => GetPropertyInput }) input: GetPropertyInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.formSystemServices.getProperty(user, input) } diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index a6a40a625748..01cc128c4544 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -1,23 +1,26 @@ -import { Inject, Injectable } from "@nestjs/common"; +import { Inject, Injectable } from '@nestjs/common' import { LOGGER_PROVIDER, Logger } from '@island.is/logging' -import { ApolloError } from "@apollo/client" +import { ApolloError } from '@apollo/client' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' -import { ApiServicesFasteignFasteignanumerGetRequest, ServicesApi } from "@island.is/clients/form-system" -import { List } from "../../models/services.model"; -import { GetPropertyInput } from "../../dto/services.input"; +import { + ApiServicesFasteignFasteignanumerGetRequest, + ServicesApi, +} from '@island.is/clients/form-system' +import { List } from '../../models/services.model' +import { GetPropertyInput } from '../../dto/services.input' @Injectable() export class FormSystemService { constructor( @Inject(LOGGER_PROVIDER) private logger: Logger, - private servicesApi: ServicesApi - ) { } + private servicesApi: ServicesApi, + ) {} handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), - category: 'services-service' + category: 'services-service', } this.logger.error(errorDetail || 'Error in services service', err) diff --git a/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts b/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts index edfd08429eb7..88f46a9a5ec6 100644 --- a/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts +++ b/libs/api/domains/form-system/src/lib/steps/steps.resolver.ts @@ -1,56 +1,64 @@ -import { Query, Args, Resolver, Mutation } from "@nestjs/graphql"; -import { CurrentUser, IdsUserGuard, type User } from '@island.is/auth-nest-tools' -import { CreateStepInput, DeleteStepInput, GetStepInput, UpdateStepInput } from "../../dto/steps.input"; -import { Step } from "../../models/step.model"; -import { StepsService } from "./steps.service"; +import { Query, Args, Resolver, Mutation } from '@nestjs/graphql' +import { + CurrentUser, + IdsUserGuard, + type User, +} from '@island.is/auth-nest-tools' +import { + CreateStepInput, + DeleteStepInput, + GetStepInput, + UpdateStepInput, +} from '../../dto/steps.input' +import { Step } from '../../models/step.model' +import { StepsService } from './steps.service' import { Audit } from '@island.is/nest/audit' -import { UseGuards } from "@nestjs/common"; - +import { UseGuards } from '@nestjs/common' @Resolver() @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class StepsResolver { - constructor(private readonly stepsService: StepsService) { } + constructor(private readonly stepsService: StepsService) {} @Query(() => Step, { - name: 'formSystemGetStep' + name: 'formSystemGetStep', }) async getStep( @Args('input', { type: () => GetStepInput }) input: GetStepInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.stepsService.getStep(user, input) } @Mutation(() => Step, { - name: 'formSystemCreateStep' + name: 'formSystemCreateStep', }) async postStep( @Args('input', { type: () => CreateStepInput }) input: CreateStepInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.stepsService.postStep(user, input) } @Mutation(() => Boolean, { nullable: true, - name: 'formSystemDeleteStep' + name: 'formSystemDeleteStep', }) async deleteStep( @Args('input', { type: () => DeleteStepInput }) input: DeleteStepInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return await this.stepsService.deleteStep(user, input) } @Mutation(() => Boolean, { nullable: true, - name: 'formSystemUpdateStep' + name: 'formSystemUpdateStep', }) async updateStep( @Args('input', { type: () => UpdateStepInput }) input: UpdateStepInput, - @CurrentUser() user: User + @CurrentUser() user: User, ): Promise { return this.stepsService.updateStep(user, input) } diff --git a/libs/api/domains/form-system/src/lib/steps/steps.service.ts b/libs/api/domains/form-system/src/lib/steps/steps.service.ts index 6b46bc31740a..dfc46c148314 100644 --- a/libs/api/domains/form-system/src/lib/steps/steps.service.ts +++ b/libs/api/domains/form-system/src/lib/steps/steps.service.ts @@ -1,23 +1,34 @@ -import { Inject, Injectable } from "@nestjs/common" +import { Inject, Injectable } from '@nestjs/common' import { LOGGER_PROVIDER, Logger } from '@island.is/logging' -import { ApiStepsPostRequest, ApiStepsStepIdDeleteRequest, ApiStepsStepIdGetRequest, ApiStepsStepIdPutRequest, StepsApi } from "@island.is/clients/form-system" -import { ApolloError } from "@apollo/client" +import { + ApiStepsPostRequest, + ApiStepsStepIdDeleteRequest, + ApiStepsStepIdGetRequest, + ApiStepsStepIdPutRequest, + StepsApi, +} from '@island.is/clients/form-system' +import { ApolloError } from '@apollo/client' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' -import { CreateStepInput, DeleteStepInput, GetStepInput, UpdateStepInput } from "../../dto/steps.input" -import { Step } from "../../models/step.model" +import { + CreateStepInput, + DeleteStepInput, + GetStepInput, + UpdateStepInput, +} from '../../dto/steps.input' +import { Step } from '../../models/step.model' @Injectable() export class StepsService { constructor( @Inject(LOGGER_PROVIDER) private logger: Logger, - private formsApi: StepsApi - ) { } + private formsApi: StepsApi, + ) {} handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), - category: 'steps-service' + category: 'steps-service', } this.logger.error(errorDetail || 'Error in steps service', err) @@ -80,7 +91,7 @@ export class StepsService { async updateStep(auth: User, input: UpdateStepInput): Promise { const request: ApiStepsStepIdPutRequest = { stepId: input.stepId, - stepUpdateDto: input.stepUpdateDto + stepUpdateDto: input.stepUpdateDto, } const response = await this.stepsApiWithAuth(auth) diff --git a/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts b/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts deleted file mode 100644 index 6bc41d718526..000000000000 --- a/libs/api/domains/form-system/src/lib/utils/helperFunctions.ts +++ /dev/null @@ -1,124 +0,0 @@ -// import { LanguageType } from "../../models/global.model" -// import { InputSettings, ListItem } from "../../models/inputSettings.model" -import { InputUpdateDto } from "@island.is/clients/form-system" -import { Input } from "../../models/input.model"; - -// export interface RESTInputSettings { -// isLarge?: boolean -// size?: string -// interval?: string -// erHlekkur?: boolean -// url?: string -// hnapptexti?: LanguageType -// tegundir?: string[] -// hamarksstaerd?: number -// erFjolval?: boolean -// fjoldi?: number -// header?: string -// hamarkslengd?: number -// lagmarkslengd?: number -// laggildi?: number -// hagildi?: number -// listi?: ListItem[] -// $type?: string -// name?: LanguageType -// erListi?: boolean -// erInnslattur?: boolean -// [key: string]: unknown -// } - -// interface GraphQLInputSettings { -// hasInput?: boolean -// isList?: boolean -// isLarge?: boolean -// size?: string -// interval?: string -// list?: ListItem[] -// max?: number -// min?: number -// maxLength?: number -// minLength?: number -// amount?: number -// isMulti?: boolean -// maxSize?: number -// types?: string[] -// buttonText?: LanguageType -// hasLink?: boolean -// $type?: string -// name?: LanguageType -// [key: string]: unknown -// } - -// export const restToGraphqlInputSettings = (input?: RESTInputSettings): GraphQLInputSettings => { -// return { -// hasInput: input?.erInnslattur, -// isList: input?.erListi, -// isLarge: input?.isLarge, -// size: input?.size, -// interval: input?.interval, -// list: input?.listi, -// max: input?.hagildi, -// min: input?.laggildi, -// maxLength: input?.hamarkslengd, -// minLength: input?.lagmarkslengd, -// amount: input?.fjoldi, -// isMulti: input?.erFjolval, -// maxSize: input?.hamarksstaerd, -// types: input?.tegundir, -// buttonText: input?.hnapptexti, -// hasLink: input?.erHlekkur, -// type: input?.type, -// name: input?.name, -// } -// } - -// export const graphqlToRestInputSettings = (input?: InputSettings): RESTInputSettings => { -// return { -// erInnslattur: input?.hasInput, -// erListi: input?.isList, -// isLarge: input?.isLarge, -// size: input?.size, -// interval: input?.interval, -// listi: input?.list, -// hagildi: input?.max, -// laggildi: input?.min, -// hamarkslengd: input?.maxLength, -// lagmarkslengd: input?.minLength, -// fjoldi: input?.amount, -// erFjolval: input?.isMulti, -// hamarksstaerd: input?.maxSize, -// tegundir: input?.types, -// hnapptexti: input?.buttonText, -// erHlekkur: input?.hasLink, -// type: input?.type, -// name: input?.name, -// } -// } - -// export const addType = (input: Input | InputUpdateDto) => { -// const types = ['TextaInnsláttur', 'Textalýsing', 'Fellilisti', 'Valhnappar', 'Skjal', 'Tölustafir', 'Fasteignanúmer', 'Klukkinnsláttur', 'Dagssetningarval'] -// const type = { -// TextaInnsláttur: 'texti', -// Textalýsing: 'textalysing', -// Fellilisti: 'fellilisti', -// Valhnappar: 'valhnappar', -// Skjal: 'skjal', -// Tölustafir: 'tolustafir', -// Fasteignanúmer: 'fasteignanumer', -// Klukkinnsláttur: 'klukkinnslattur', -// Dagssetningarval: 'dagssetningarval', -// } -// if (input.type !== null && input.type !== undefined) { -// if (types.includes(input.type)) { -// const newInputSettings = { -// ...input.inputSettings, -// $type: type[input.type as keyof typeof type] -// } -// return { -// ...input, -// inputSettings: newInputSettings, -// } -// } -// } -// return input -// } diff --git a/libs/api/domains/form-system/src/models/applicantType.model.ts b/libs/api/domains/form-system/src/models/applicantType.model.ts index 9e480c74bf84..a993d5788685 100644 --- a/libs/api/domains/form-system/src/models/applicantType.model.ts +++ b/libs/api/domains/form-system/src/models/applicantType.model.ts @@ -1,6 +1,6 @@ -import { Field, Int, ObjectType } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; -import { ApplicantTypeNameSuggestion } from "./applicantTypeNameSuggestion"; +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { LanguageType } from './global.model' +import { ApplicantTypeNameSuggestion } from './applicantTypeNameSuggestion' @ObjectType('FormSystemApplicantType') export class ApplicantType { diff --git a/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts b/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts index 2d7c4d2d195a..70bf81bec13f 100644 --- a/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts +++ b/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts @@ -1,6 +1,5 @@ -import { Field, Int, ObjectType } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; - +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { LanguageType } from './global.model' @ObjectType('FormSystemApplicantTypeNameSuggestion') export class ApplicantTypeNameSuggestion { diff --git a/libs/api/domains/form-system/src/models/documentType.model.ts b/libs/api/domains/form-system/src/models/documentType.model.ts index 8fa4a045c200..e5772e16ab3e 100644 --- a/libs/api/domains/form-system/src/models/documentType.model.ts +++ b/libs/api/domains/form-system/src/models/documentType.model.ts @@ -1,5 +1,5 @@ -import { Field, Int, ObjectType } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { LanguageType } from './global.model' @ObjectType('FormSystemDocumentType') export class DocumentType { @@ -15,5 +15,3 @@ export class DocumentType { @Field(() => LanguageType, { nullable: true }) description?: LanguageType } - - diff --git a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts index abbdf6065268..bfa3d426e1cc 100644 --- a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts +++ b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts @@ -1,5 +1,8 @@ import { Field, Int, ObjectType, registerEnumType } from '@nestjs/graphql' -import { EExternalEndpointType, EExternalEndpointEnvironment } from '@island.is/clients/form-system' +import { + EExternalEndpointType, + EExternalEndpointEnvironment, +} from '@island.is/clients/form-system' registerEnumType(EExternalEndpointType, { name: 'FormSystemExternalEndpointType', diff --git a/libs/api/domains/form-system/src/models/formApplicantType.model.ts b/libs/api/domains/form-system/src/models/formApplicantType.model.ts index 8264b7f434d9..e00f95180eb9 100644 --- a/libs/api/domains/form-system/src/models/formApplicantType.model.ts +++ b/libs/api/domains/form-system/src/models/formApplicantType.model.ts @@ -1,6 +1,5 @@ -import { ObjectType, Field, Int } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; - +import { ObjectType, Field, Int } from '@nestjs/graphql' +import { LanguageType } from './global.model' @ObjectType('FormSystemFormApplicantType') export class FormApplicantType { diff --git a/libs/api/domains/form-system/src/models/formListResponse.model.ts b/libs/api/domains/form-system/src/models/formListResponse.model.ts index b293420430f0..e8cd56996b60 100644 --- a/libs/api/domains/form-system/src/models/formListResponse.model.ts +++ b/libs/api/domains/form-system/src/models/formListResponse.model.ts @@ -1,5 +1,5 @@ -import { Field, ObjectType } from "@nestjs/graphql"; -import { Form } from "./form.model"; +import { Field, ObjectType } from '@nestjs/graphql' +import { Form } from './form.model' @ObjectType('FormSystemFormListResponse') export class FormListResponse { diff --git a/libs/api/domains/form-system/src/models/group.model.ts b/libs/api/domains/form-system/src/models/group.model.ts index e742b2bc7e63..3f383cd90b1d 100644 --- a/libs/api/domains/form-system/src/models/group.model.ts +++ b/libs/api/domains/form-system/src/models/group.model.ts @@ -1,6 +1,6 @@ -import { Field, Int, ObjectType } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; -import { Input } from "./input.model"; +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { LanguageType } from './global.model' +import { Input } from './input.model' @ObjectType('FormSystemGroup') export class Group { @@ -31,4 +31,3 @@ export class Group { @Field(() => String, { nullable: true }) stepGuid?: string } - diff --git a/libs/api/domains/form-system/src/models/input.model.ts b/libs/api/domains/form-system/src/models/input.model.ts index 0936d7e7f5d9..26abc1337a6a 100644 --- a/libs/api/domains/form-system/src/models/input.model.ts +++ b/libs/api/domains/form-system/src/models/input.model.ts @@ -45,5 +45,3 @@ export class Input { @Field(() => graphqlTypeJson, { nullable: true }) inputFields?: object } - - diff --git a/libs/api/domains/form-system/src/models/listType.model.ts b/libs/api/domains/form-system/src/models/listType.model.ts index c89a60f9b02d..8950a228c8f4 100644 --- a/libs/api/domains/form-system/src/models/listType.model.ts +++ b/libs/api/domains/form-system/src/models/listType.model.ts @@ -1,6 +1,5 @@ -import { Field, Int, ObjectType } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; - +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { LanguageType } from './global.model' @ObjectType('FormSystemListType') export class ListType { diff --git a/libs/api/domains/form-system/src/models/organization.model.ts b/libs/api/domains/form-system/src/models/organization.model.ts index 59f890027be3..58bbce16d67f 100644 --- a/libs/api/domains/form-system/src/models/organization.model.ts +++ b/libs/api/domains/form-system/src/models/organization.model.ts @@ -36,5 +36,3 @@ export class Organization { @Field(() => [ExternalEndpoints], { nullable: 'itemsAndList' }) externalEndpoints?: ExternalEndpoints[] | null } - - diff --git a/libs/api/domains/form-system/src/models/services.model.ts b/libs/api/domains/form-system/src/models/services.model.ts index 89fe7f21329a..3470c93d85b3 100644 --- a/libs/api/domains/form-system/src/models/services.model.ts +++ b/libs/api/domains/form-system/src/models/services.model.ts @@ -1,6 +1,5 @@ -import { Field, ObjectType } from "@nestjs/graphql"; -import { ListItem } from "./inputSettings.model"; - +import { Field, ObjectType } from '@nestjs/graphql' +import { ListItem } from './inputSettings.model' @ObjectType('FormSystemList') export class List { diff --git a/libs/api/domains/form-system/src/models/step.model.ts b/libs/api/domains/form-system/src/models/step.model.ts index 078b28382eb7..771bd73c542a 100644 --- a/libs/api/domains/form-system/src/models/step.model.ts +++ b/libs/api/domains/form-system/src/models/step.model.ts @@ -1,6 +1,6 @@ -import { Field, Int, ObjectType } from "@nestjs/graphql"; -import { LanguageType } from "./global.model"; -import { Group } from "./group.model"; +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { LanguageType } from './global.model' +import { Group } from './group.model' @ObjectType('FormSystemStep') export class Step { @@ -34,4 +34,3 @@ export class Step { @Field(() => [Group], { nullable: 'itemsAndList' }) groups?: Group[] | null } - diff --git a/libs/clients/form-system/project.json b/libs/clients/form-system/project.json index 6d206e0f4078..22dfef44e2de 100644 --- a/libs/clients/form-system/project.json +++ b/libs/clients/form-system/project.json @@ -6,20 +6,14 @@ "targets": { "lint": { "executor": "@nx/linter:eslint", - "outputs": [ - "{options.outputFile}" - ], + "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": [ - "libs/clients/form-system/**/*.ts" - ] + "lintFilePatterns": ["libs/clients/form-system/**/*.ts"] } }, "test": { "executor": "@nx/jest:jest", - "outputs": [ - "{workspaceRoot}/coverage/{projectRoot}" - ], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/clients/form-system/jest.config.ts", "passWithNoTests": true @@ -36,9 +30,7 @@ "options": { "command": "yarn openapi-generator -o libs/clients/form-system/gen/fetch -i libs/clients/form-system/src/clientConfig.json" }, - "outputs": [ - "{projectRoot}/gen/fetch" - ] + "outputs": ["{projectRoot}/gen/fetch"] }, "update-openapi-document": { "executor": "nx:run-commands", @@ -48,8 +40,5 @@ } }, "schema": "libs/client/form-system/gen/fetch/api.graphql", - "tags": [ - "lib:client", - "scope:client" - ] + "tags": ["lib:client", "scope:client"] } diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index dcb5c1be4c8d..148dbaf14395 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -7,9 +7,7 @@ "paths": { "/api/Files": { "post": { - "tags": [ - "Files" - ], + "tags": ["Files"], "requestBody": { "content": { "multipart/form-data": { @@ -42,9 +40,7 @@ }, "/api/Forms/Organization/{organizationId}": { "get": { - "tags": [ - "Forms" - ], + "tags": ["Forms"], "parameters": [ { "name": "organizationId", @@ -82,9 +78,7 @@ }, "/api/Forms/{formId}": { "get": { - "tags": [ - "Forms" - ], + "tags": ["Forms"], "parameters": [ { "name": "formId", @@ -120,9 +114,7 @@ } }, "put": { - "tags": [ - "Forms" - ], + "tags": ["Forms"], "parameters": [ { "name": "formId", @@ -160,9 +152,7 @@ } }, "delete": { - "tags": [ - "Forms" - ], + "tags": ["Forms"], "parameters": [ { "name": "formId", @@ -183,9 +173,7 @@ }, "/api/Forms/{organizationId}": { "post": { - "tags": [ - "Forms" - ], + "tags": ["Forms"], "parameters": [ { "name": "organizationId", @@ -223,9 +211,7 @@ }, "/api/Forms/{formId}/settings": { "put": { - "tags": [ - "Forms" - ], + "tags": ["Forms"], "parameters": [ { "name": "formId", @@ -265,9 +251,7 @@ }, "/api/Groups/{groupId}": { "get": { - "tags": [ - "Groups" - ], + "tags": ["Groups"], "parameters": [ { "name": "groupId", @@ -303,9 +287,7 @@ } }, "delete": { - "tags": [ - "Groups" - ], + "tags": ["Groups"], "parameters": [ { "name": "groupId", @@ -324,9 +306,7 @@ } }, "put": { - "tags": [ - "Groups" - ], + "tags": ["Groups"], "parameters": [ { "name": "groupId", @@ -366,9 +346,7 @@ }, "/api/Groups": { "post": { - "tags": [ - "Groups" - ], + "tags": ["Groups"], "requestBody": { "content": { "application/json": { @@ -414,9 +392,7 @@ }, "/api/Inputs/{inputId}": { "get": { - "tags": [ - "Inputs" - ], + "tags": ["Inputs"], "parameters": [ { "name": "inputId", @@ -452,9 +428,7 @@ } }, "put": { - "tags": [ - "Inputs" - ], + "tags": ["Inputs"], "parameters": [ { "name": "inputId", @@ -492,9 +466,7 @@ } }, "delete": { - "tags": [ - "Inputs" - ], + "tags": ["Inputs"], "parameters": [ { "name": "inputId", @@ -515,9 +487,7 @@ }, "/api/Inputs": { "post": { - "tags": [ - "Inputs" - ], + "tags": ["Inputs"], "requestBody": { "content": { "application/json": { @@ -563,9 +533,7 @@ }, "/api/Organizations": { "post": { - "tags": [ - "Organizations" - ], + "tags": ["Organizations"], "requestBody": { "content": { "application/json": { @@ -611,9 +579,7 @@ }, "/api/Services/Fasteign/{fasteignanumer}": { "get": { - "tags": [ - "Services" - ], + "tags": ["Services"], "parameters": [ { "name": "fasteignanumer", @@ -650,9 +616,7 @@ }, "/api/Services/IdngreinarMeistara": { "get": { - "tags": [ - "Services" - ], + "tags": ["Services"], "responses": { "200": { "description": "Success", @@ -679,9 +643,7 @@ }, "/api/Services/Skraningarflokkar": { "get": { - "tags": [ - "Services" - ], + "tags": ["Services"], "responses": { "200": { "description": "Success", @@ -708,9 +670,7 @@ }, "/api/Services/Sveitarfelog": { "get": { - "tags": [ - "Services" - ], + "tags": ["Services"], "responses": { "200": { "description": "Success", @@ -737,9 +697,7 @@ }, "/api/Services/Postnumer": { "get": { - "tags": [ - "Services" - ], + "tags": ["Services"], "responses": { "200": { "description": "Success", @@ -766,9 +724,7 @@ }, "/api/Services/Lond": { "get": { - "tags": [ - "Services" - ], + "tags": ["Services"], "responses": { "200": { "description": "Success", @@ -795,9 +751,7 @@ }, "/api/Steps/{stepId}": { "get": { - "tags": [ - "Steps" - ], + "tags": ["Steps"], "parameters": [ { "name": "stepId", @@ -833,9 +787,7 @@ } }, "delete": { - "tags": [ - "Steps" - ], + "tags": ["Steps"], "parameters": [ { "name": "stepId", @@ -854,9 +806,7 @@ } }, "put": { - "tags": [ - "Steps" - ], + "tags": ["Steps"], "parameters": [ { "name": "stepId", @@ -896,9 +846,7 @@ }, "/api/Steps": { "post": { - "tags": [ - "Steps" - ], + "tags": ["Steps"], "requestBody": { "content": { "application/json": { @@ -1049,17 +997,11 @@ "additionalProperties": false }, "EExternalEndpointEnvironment": { - "enum": [ - "development", - "production" - ], + "enum": ["development", "production"], "type": "string" }, "EExternalEndpointType": { - "enum": [ - "submit", - "validation" - ], + "enum": ["submit", "validation"], "type": "string" }, "ExternalEndpointDto": { diff --git a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts index 3882e867fbb6..85bba8e4103c 100644 --- a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts +++ b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts @@ -1,35 +1,43 @@ import { Provider } from '@nestjs/common/interfaces/modules/provider.interface' import { createEnhancedFetch } from '@island.is/clients/middlewares' -import { - ConfigType, - LazyDuringDevScope, -} from '@island.is/nest/config' +import { ConfigType, LazyDuringDevScope } from '@island.is/nest/config' import { FormSystemClientConfig } from './FormSystemClient.config' -import { Configuration, FilesApi, FormsApi, GroupsApi, InputsApi, OrganizationsApi, ServicesApi, StepsApi } from '../../gen/fetch' -import * as https from 'https'; -import fetch, { RequestInfo, RequestInit } from 'node-fetch'; +import { + Configuration, + FilesApi, + FormsApi, + GroupsApi, + InputsApi, + OrganizationsApi, + ServicesApi, + StepsApi, +} from '../../gen/fetch' +import * as https from 'https' +import fetch, { RequestInfo, RequestInit } from 'node-fetch' -const httpsAgent = new https.Agent({ // remove +const httpsAgent = new https.Agent({ + // remove rejectUnauthorized: false, // This will ignore SSL certificates -}); +}) -const fetchWithHttpsAgent = (url: RequestInfo, options: RequestInit | undefined) => fetch(url, { ...options, agent: httpsAgent }); //remove +const fetchWithHttpsAgent = ( + url: RequestInfo, + options: RequestInit | undefined, +) => fetch(url, { ...options, agent: httpsAgent }) //remove const provideApi = ( Api: new (configuration: Configuration) => T, ): Provider => ({ provide: Api, scope: LazyDuringDevScope, - useFactory: ( - config: ConfigType, - ) => + useFactory: (config: ConfigType) => new Api( new Configuration({ fetchApi: createEnhancedFetch({ name: 'form-system', organizationSlug: 'stafraent-island', logErrorResponseBody: true, - fetch: fetchWithHttpsAgent // remove + fetch: fetchWithHttpsAgent, // remove }), basePath: config.basePath, headers: { diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index 6be8509b597a..85ca437a20e2 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -10,8 +10,10 @@ export const FormSystemClientConfig = defineConfig({ schema, load(env) { return { - //basePath: env.required('FORM_SYSTEM_API_BASE_PATH', 'https://profun.island.is/umsoknarkerfi'), - basePath: env.required('FORM_SYSTEM_API_BASE_PATH', 'https://localhost:51345') + basePath: env.required( + 'FORM_SYSTEM_API_BASE_PATH', + 'https://profun.island.is/umsoknarkerfi', + ), } - } + }, }) diff --git a/libs/clients/form-system/src/lib/form-system.module.ts b/libs/clients/form-system/src/lib/form-system.module.ts index 088984e219ed..9cbf48e8168d 100644 --- a/libs/clients/form-system/src/lib/form-system.module.ts +++ b/libs/clients/form-system/src/lib/form-system.module.ts @@ -1,7 +1,22 @@ import { Module } from '@nestjs/common' -import { FilesApiProvider, FormsApiProvider, GroupsApiProvider, InputsApiProvider, OrganizationsApiProvider, ServicesApiProvider, StepsApiProvider } from './FormSystemApiProvider' -import { FilesApi, FormsApi, GroupsApi, InputsApi, OrganizationsApi, ServicesApi, StepsApi } from '../../gen/fetch' - +import { + FilesApiProvider, + FormsApiProvider, + GroupsApiProvider, + InputsApiProvider, + OrganizationsApiProvider, + ServicesApiProvider, + StepsApiProvider, +} from './FormSystemApiProvider' +import { + FilesApi, + FormsApi, + GroupsApi, + InputsApi, + OrganizationsApi, + ServicesApi, + StepsApi, +} from '../../gen/fetch' @Module({ controllers: [], @@ -24,4 +39,4 @@ import { FilesApi, FormsApi, GroupsApi, InputsApi, OrganizationsApi, ServicesApi StepsApi, ], }) -export class FormSystemClientModule { } +export class FormSystemClientModule {} diff --git a/libs/portals/admin/form-system/codegen.yml b/libs/portals/admin/form-system/codegen.yml index cccc9acf3075..898fa11f9cfd 100644 --- a/libs/portals/admin/form-system/codegen.yml +++ b/libs/portals/admin/form-system/codegen.yml @@ -15,4 +15,4 @@ generates: DateTime: string hooks: afterAllFileWrite: - - prettier --write + - prettier --write diff --git a/libs/portals/admin/form-system/project.json b/libs/portals/admin/form-system/project.json index fea25ece2e95..ff5c911d5de2 100644 --- a/libs/portals/admin/form-system/project.json +++ b/libs/portals/admin/form-system/project.json @@ -7,20 +7,14 @@ "targets": { "lint": { "executor": "@nx/linter:eslint", - "outputs": [ - "{options.outputFile}" - ], + "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": [ - "libs/portals/admin/form-system/**/*.ts" - ] + "lintFilePatterns": ["libs/portals/admin/form-system/**/*.ts"] } }, "test": { "executor": "@nx/jest:jest", - "outputs": [ - "{workspaceRoot}/coverage/{projectRoot}" - ], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/portals/admin/form-system/jest.config.ts", "passWithNoTests": true @@ -34,8 +28,5 @@ } } }, - "tags": [ - "scope:portals-admin", - "lib:portals-admin" - ] -} \ No newline at end of file + "tags": ["scope:portals-admin", "lib:portals-admin"] +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index dc5e9a3c99fa..259d7e97af31 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -17,95 +17,99 @@ import PreviewStepOrGroup from './components/PreviewStepOrGroup/PreviewStepOrGro import RelevantParties from './components/RelevantParties/RevelantParties' export default function MainContent() { - const { control, controlDispatch, updateActiveItem, setFocus, focus } = useContext(ControlContext) - const { activeItem, form, } = control + const { control, controlDispatch, updateActiveItem, setFocus, focus } = + useContext(ControlContext) + const { activeItem } = control const [openPreview, setOpenPreview] = useState(false) - - return ( - - {activeItem.type === 'Input' ? () - : activeItem.type === 'Step' && - (activeItem.data as FormSystemStep).type === 'BaseSetting' ? () - : activeItem.type === 'Step' && - (activeItem.data as FormSystemStep).type === 'Forsendur' ? () - : activeItem.type === 'Step' && (activeItem.data as FormSystemStep).type === 'Aðilar' ? - : openPreview ? ( - - ) : - < Stack space={2}> - - - - controlDispatch({ - type: 'CHANGE_NAME', - payload: { - lang: 'is', - newValue: e.target.value, - }, - }) - } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - - - - controlDispatch({ - type: 'CHANGE_NAME', - payload: { - lang: 'en', - newValue: e.target.value, - }, - - })} - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - {activeItem.type === 'Group' && ( - - - - // listsDispatch({ - // type: 'setMultiSet', - // payload: { - // checked: e.target.checked, - // }, - // }) - // } - /> - - - )} - - - - - - - } - + {activeItem.type === 'Input' ? ( + + ) : activeItem.type === 'Step' && + (activeItem.data as FormSystemStep).type === 'BaseSetting' ? ( + + ) : activeItem.type === 'Step' && + (activeItem.data as FormSystemStep).type === 'Forsendur' ? ( + + ) : activeItem.type === 'Step' && + (activeItem.data as FormSystemStep).type === 'Aðilar' ? ( + + ) : openPreview ? ( + + ) : ( + + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'en', + newValue: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + {activeItem.type === 'Group' && ( + + + + controlDispatch({ + type: 'TOGGLE_MULTI_SET', + payload: { + checked: e.target.checked, + update: updateActiveItem, + }, + }) + } + /> + + + )} + + + + + + + )} + ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index 1bf4e1597bc6..a7a324f0c5fe 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -1,4 +1,3 @@ - import { Stack, GridRow as Row, @@ -11,13 +10,13 @@ import { useContext } from 'react' import ControlContext from '../../../../context/ControlContext' export const BaseSettings = () => { - const { control, controlDispatch, setFocus, focus, formSettingsUpdate, formUpdate } = useContext(ControlContext) + const { control, controlDispatch, setFocus, focus, formUpdate } = + useContext(ControlContext) const { form } = control - console.log('BaseSettings form', form) return ( - + { backgroundColor={'blue'} onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && formUpdate()} - onChange={(e) => controlDispatch({ type: 'CHANGE_FORM_NAME', payload: { lang: 'is', newValue: e.target.value } })} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_FORM_NAME', + payload: { lang: 'is', newValue: e.target.value }, + }) + } /> - + { backgroundColor="blue" onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && formUpdate()} - onChange={(e) => controlDispatch({ type: 'CHANGE_FORM_NAME', payload: { lang: 'en', newValue: e.target.value } })} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_FORM_NAME', + payload: { lang: 'en', newValue: e.target.value }, + }) + } /> @@ -57,7 +66,12 @@ export const BaseSettings = () => { type="number" onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && formUpdate()} - onChange={(e) => controlDispatch({ type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE', payload: { value: parseInt(e.target.value) } })} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE', + payload: { value: parseInt(e.target.value) }, + }) + } /> @@ -68,12 +82,13 @@ export const BaseSettings = () => { placeholderText="Veldu dagsetningu" backgroundColor="blue" selected={ - form.invalidationDate - ? new Date(form.invalidationDate) - : null + form.invalidationDate ? new Date(form.invalidationDate) : null } handleChange={(e) => { - controlDispatch({ type: 'CHANGE_INVALIDATION_DATE', payload: { value: e } }) + controlDispatch({ + type: 'CHANGE_INVALIDATION_DATE', + payload: { value: e }, + }) }} handleCloseCalendar={() => formUpdate()} /> @@ -85,10 +100,15 @@ export const BaseSettings = () => { label="Leyfa notanda að halda áfram í umsókninni með ógild/óútfyllt gildi" checked={form.stopProgressOnValidatingStep ?? false} onChange={(e) => { - controlDispatch({ type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP', payload: { value: e.target.checked } }) - formUpdate({ ...form, stopProgressOnValidatingStep: e.target.checked }) + controlDispatch({ + type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP', + payload: { value: e.target.checked }, + }) + formUpdate({ + ...form, + stopProgressOnValidatingStep: e.target.checked, + }) }} - /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx index 5e9a2ac87e6c..ae931b30945c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx @@ -1,16 +1,14 @@ -import { useContext } from "react" -import ControlContext from "../../../../context/ControlContext" -import { Stack } from "@island.is/island-ui/core" -import BaseInput from "./components/BaseInput" -import Preview from "../Preview/Preveiw" -import { FormSystemInput } from "@island.is/api/schema" -import InputSettings from "./components/InputSettings/InputSettings" -import ListBuilder from "./components/ListBuilder/ListBuilder" - - +import { useContext } from 'react' +import ControlContext from '../../../../context/ControlContext' +import { Stack } from '@island.is/island-ui/core' +import BaseInput from './components/BaseInput' +import Preview from '../Preview/Preveiw' +import { FormSystemInput } from '@island.is/api/schema' +import InputSettings from './components/InputSettings/InputSettings' +import ListBuilder from './components/ListBuilder/ListBuilder' const InputContent = () => { - const { control, selectStatus, setSelectStatus, inListBuilder } = useContext(ControlContext) + const { control, inListBuilder } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput if (inListBuilder) { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx index 9035f0f3bcbd..95543a0c3296 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx @@ -1,6 +1,6 @@ -import { useContext } from "react" -import ControlContext from "../../../../../context/ControlContext" -import { FormSystemInput } from "@island.is/api/schema" +import { useContext } from 'react' +import ControlContext from '../../../../../context/ControlContext' +import { FormSystemInput } from '@island.is/api/schema' import { Stack, GridRow as Row, @@ -8,20 +8,28 @@ import { Select, Option, Input, - Checkbox -} from "@island.is/island-ui/core" -import { SingleValue } from "react-select" - + Checkbox, +} from '@island.is/island-ui/core' +import { SingleValue } from 'react-select' const BaseInput = () => { - const { control, controlDispatch, setFocus, focus, inputTypes, updateActiveItem } = useContext(ControlContext) + const { + control, + controlDispatch, + setFocus, + focus, + inputTypes, + updateActiveItem, + } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput - const sortedInputTypes = inputTypes?.map(i => ({ - label: i?.type ?? '', - value: i?.type ?? '', - })).sort((a, b) => (a?.label ?? '').localeCompare(b?.label ?? '')) + const sortedInputTypes = inputTypes + ?.map((i) => ({ + label: i?.type ?? '', + value: i?.type ?? '', + })) + .sort((a, b) => (a?.label ?? '').localeCompare(b?.label ?? '')) const defaultOption = currentItem.type === '' @@ -45,9 +53,11 @@ const BaseInput = () => { type: 'CHANGE_INPUT_TYPE', payload: { newValue: e?.value ?? '', - inputSettings: inputTypes?.find((i) => i?.type === e?.value)?.inputSettings ?? {}, - update: updateActiveItem - } + inputSettings: + inputTypes?.find((i) => i?.type === e?.value) + ?.inputSettings ?? {}, + update: updateActiveItem, + }, }) } /> @@ -61,13 +71,15 @@ const BaseInput = () => { name="name" value={currentItem?.name?.is ?? ''} backgroundColor="blue" - onChange={(e) => controlDispatch({ - type: 'CHANGE_NAME', - payload: { - lang: 'is', - newValue: e.target.value, - }, - })} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && updateActiveItem()} /> @@ -81,13 +93,15 @@ const BaseInput = () => { name="nameEn" value={currentItem?.name?.en ?? ''} backgroundColor="blue" - onChange={(e) => controlDispatch({ - type: 'CHANGE_NAME', - payload: { - lang: 'en', - newValue: e.target.value, - }, - })} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'en', + newValue: e.target.value, + }, + }) + } onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && updateActiveItem()} /> @@ -106,13 +120,15 @@ const BaseInput = () => { backgroundColor="blue" onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && updateActiveItem()} - onChange={(e) => controlDispatch({ - type: 'CHANGE_DESCRIPTION', - payload: { - lang: 'is', - newValue: e.target.value, - }, - })} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_DESCRIPTION', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } /> @@ -126,13 +142,15 @@ const BaseInput = () => { backgroundColor="blue" onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && updateActiveItem()} - onChange={(e) => controlDispatch({ - type: 'CHANGE_DESCRIPTION', - payload: { - lang: 'en', - newValue: e.target.value, - }, - })} + onChange={(e) => + controlDispatch({ + type: 'CHANGE_DESCRIPTION', + payload: { + lang: 'en', + newValue: e.target.value, + }, + }) + } /> @@ -149,7 +167,7 @@ const BaseInput = () => { type: 'CHANGE_IS_REQUIRED', payload: { update: updateActiveItem, - } + }, }) } /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx index f0b125c11ac1..8efc13117bfb 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx @@ -1,26 +1,24 @@ -import { useContext } from "react" -import ControlContext from "../../../../../../context/ControlContext" -import { FormSystemInput } from "@island.is/api/schema" -import MessageWithLinkSettings from "./components/MessageWithLinkSettings" -import FileUploadSettings from "./components/FIleUploadSettings" -import TextInputSettings from "./components/TextInputSettings" -import ListSettings from "./components/ListSettings" - +import { useContext } from 'react' +import ControlContext from '../../../../../../context/ControlContext' +import { FormSystemInput } from '@island.is/api/schema' +import MessageWithLinkSettings from './components/MessageWithLinkSettings' +import FileUploadSettings from './components/FIleUploadSettings' +import TextInputSettings from './components/TextInputSettings' +import ListSettings from './components/ListSettings' +import ToggleConnection from './components/ToggleConnection' const InputSettings = () => { const { control } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput return ( <> - {currentItem.type === 'Textalýsing' && ( - - )} - {currentItem.type === 'Skjal' && ( - - )} - {currentItem.type === 'Textalínubox' || currentItem.type === 'TextaInnsláttur' && } + {currentItem.type === 'Textalýsing' && } + {currentItem.type === 'Skjal' && } + {currentItem.type === 'Textalínubox' || + (currentItem.type === 'TextaInnsláttur' && )} {currentItem.type === 'Fellilisti' && } {currentItem.type === 'Valhnappar' && } + {['Hakbox'].includes(currentItem.type as string) && } ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx index b1b8bdeca672..47fbd54f01da 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx @@ -14,52 +14,53 @@ import ControlContext from '../../../../../../../context/ControlContext' import { FormSystemInput } from '@island.is/api/schema' const fileSizes = { - "fileSizes": [ + fileSizes: [ { - "label": "1 mb", - "value": 1048576 + label: '1 mb', + value: 1048576, }, { - "label": "2 mb", - "value": 2097152 + label: '2 mb', + value: 2097152, }, { - "label": "3 mb", - "value": 3145728 + label: '3 mb', + value: 3145728, }, { - "label": "4 mb", - "value": 4194304 + label: '4 mb', + value: 4194304, }, { - "label": "5 mb", - "value": 5242880 + label: '5 mb', + value: 5242880, }, { - "label": "6 mb", - "value": 6291456 + label: '6 mb', + value: 6291456, }, { - "label": "7 mb", - "value": 7340032 + label: '7 mb', + value: 7340032, }, { - "label": "8 mb", - "value": 8388608 + label: '8 mb', + value: 8388608, }, { - "label": "9 mb", - "value": 9437184 + label: '9 mb', + value: 9437184, }, { - "label": "10 mb", - "value": 10485760 - } - ] + label: '10 mb', + value: 10485760, + }, + ], } const FileUploadSettings = () => { - const { control, controlDispatch, updateActiveItem } = useContext(ControlContext) + const { control, controlDispatch, updateActiveItem } = + useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput const { inputSettings } = currentItem @@ -90,14 +91,16 @@ const FileUploadSettings = () => { name="multi" label="Er fjölval" checked={inputSettings?.isMulti ?? false} - onChange={(e) => controlDispatch({ - type: 'SET_FILE_UPLOAD_SETTINGS', - payload: { - property: 'isMulti', - checked: e.target.checked, - update: updateActiveItem - } - })} + onChange={(e) => + controlDispatch({ + type: 'SET_FILE_UPLOAD_SETTINGS', + payload: { + property: 'isMulti', + checked: e.target.checked, + update: updateActiveItem, + }, + }) + } /> @@ -112,14 +115,16 @@ const FileUploadSettings = () => { (f) => f.value === inputSettings?.maxSize, )} options={fileSizeOptions} - onChange={(e) => controlDispatch({ - type: 'SET_FILE_UPLOAD_SETTINGS', - payload: { - property: 'maxSize', - value: e?.value, - update: updateActiveItem - } - })} + onChange={(e) => + controlDispatch({ + type: 'SET_FILE_UPLOAD_SETTINGS', + payload: { + property: 'maxSize', + value: e?.value, + update: updateActiveItem, + }, + }) + } /> {inputSettings?.isMulti && ( @@ -133,14 +138,16 @@ const FileUploadSettings = () => { (f) => f.value === inputSettings.amount, )} options={fileAmountOptions} - onChange={(e) => controlDispatch({ - type: 'SET_FILE_UPLOAD_SETTINGS', - payload: { - property: 'amount', - value: e?.value, - update: updateActiveItem - } - })} + onChange={(e) => + controlDispatch({ + type: 'SET_FILE_UPLOAD_SETTINGS', + payload: { + property: 'amount', + value: e?.value, + update: updateActiveItem, + }, + }) + } /> )} @@ -158,15 +165,17 @@ const FileUploadSettings = () => { label={key} value={value as string} checked={inputSettings?.types?.includes(key)} - onChange={(e) => controlDispatch({ - type: 'SET_FILE_UPLOAD_SETTINGS', - payload: { - property: 'types', - checked: e.target.checked, - value: key, - update: updateActiveItem - } - })} + onChange={(e) => + controlDispatch({ + type: 'SET_FILE_UPLOAD_SETTINGS', + payload: { + property: 'types', + checked: e.target.checked, + value: key, + update: updateActiveItem, + }, + }) + } /> )} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index c713a00ed796..be5438543397 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -1,5 +1,5 @@ -import { useContext, useState } from "react" -import ControlContext from "../../../../../../../context/ControlContext" +import { useContext, useState } from 'react' +import ControlContext from '../../../../../../../context/ControlContext' import { GridColumn as Column, GridRow as Row, @@ -8,9 +8,8 @@ import { Box, Button, RadioButton, - Option, } from '@island.is/island-ui/core' -import { FormSystemInput } from "@island.is/api/schema" +import { FormSystemInput } from '@island.is/api/schema' const predeterminedLists = [ { @@ -33,7 +32,7 @@ const predeterminedLists = [ // Need to fix the radio buttons const ListSettings = () => { - const { control, controlDispatch, setInListBuilder } = useContext(ControlContext) + const { control, setInListBuilder } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput const [radio, setRadio] = useState([true, false, false]) @@ -54,13 +53,25 @@ const ListSettings = () => { radioHandler(0)}> - { console.log() }} checked={radio[0]} /> + { + console.log() + }} + checked={radio[0]} + /> - { console.log() }} checked={radio[1]} /> + { + console.log() + }} + checked={radio[1]} + /> @@ -78,18 +89,7 @@ const ListSettings = () => { label="Tilbúnir fellilistar" options={predeterminedLists} backgroundColor="blue" - // onChange={async (e: SingleValue>) => { - // const newList = e && (await getList(e.value)) - // listsDispatch({ - // type: 'setInputSettings', - // payload: { - // inputSettings: { - // ...(activeItem.data as IInput).inputSettings, - // listi: newList.listi, - // }, - // }, - // }) - // }} + // TODO: add lists /> )} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx index f6c13cd6b8c8..dc6003858e16 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx @@ -1,5 +1,5 @@ -import { useContext } from "react" -import ControlContext from "../../../../../../../context/ControlContext" +import { useContext } from 'react' +import ControlContext from '../../../../../../../context/ControlContext' import { GridRow as Row, GridColumn as Column, @@ -7,10 +7,11 @@ import { Checkbox, Stack, } from '@island.is/island-ui/core' -import { FormSystemInput } from "@island.is/api/schema" +import { FormSystemInput } from '@island.is/api/schema' const MessageWithLinkSettings = () => { - const { control, controlDispatch, focus, setFocus, updateActiveItem } = useContext(ControlContext) + const { control, controlDispatch, focus, setFocus, updateActiveItem } = + useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput const { inputSettings } = currentItem return ( @@ -20,80 +21,86 @@ const MessageWithLinkSettings = () => { controlDispatch({ - type: 'SET_MESSAGE_WITH_LINK_SETTINGS', - payload: { - property: 'hasLink', - checked: e.target.checked, - update: updateActiveItem - } - })} + onChange={(e) => + controlDispatch({ + type: 'SET_MESSAGE_WITH_LINK_SETTINGS', + payload: { + property: 'hasLink', + checked: e.target.checked, + update: updateActiveItem, + }, + }) + } /> - {inputSettings !== undefined && ( - inputSettings?.hasLink && ( - - - - controlDispatch({ + {inputSettings !== undefined && inputSettings?.hasLink && ( + + + + + controlDispatch({ type: 'SET_MESSAGE_WITH_LINK_SETTINGS', payload: { property: 'buttonText', lang: 'is', value: e.target.value, - } - })} - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - controlDispatch({ + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + controlDispatch({ type: 'SET_MESSAGE_WITH_LINK_SETTINGS', payload: { property: 'buttonText', lang: 'en', value: e.target.value, - } - })} - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - - - controlDispatch({ + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + + + controlDispatch({ type: 'SET_MESSAGE_WITH_LINK_SETTINGS', payload: { property: 'url', value: e.target.value, - } - })} - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - - ) + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + )} ) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx index fc26c5001cea..55948479f3c2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx @@ -1,11 +1,11 @@ -import { useContext } from "react" -import ControlContext from "../../../../../../../context/ControlContext" -import { FormSystemInput } from "@island.is/api/schema" -import { Checkbox } from "@island.is/island-ui/core" - +import { useContext } from 'react' +import ControlContext from '../../../../../../../context/ControlContext' +import { FormSystemInput } from '@island.is/api/schema' +import { Checkbox } from '@island.is/island-ui/core' const TextInputSettings = () => { - const { control, controlDispatch, updateActiveItem } = useContext(ControlContext) + const { control, controlDispatch, updateActiveItem } = + useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput const { inputSettings } = currentItem @@ -14,14 +14,16 @@ const TextInputSettings = () => { controlDispatch({ - type: 'SET_INPUT_SETTINGS', - payload: { - property: 'isLarge', - value: e.target.checked, - update: updateActiveItem - }, - })} + onChange={(e) => + controlDispatch({ + type: 'SET_INPUT_SETTINGS', + payload: { + property: 'isLarge', + value: e.target.checked, + update: updateActiveItem, + }, + }) + } /> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ToggleConnection.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ToggleConnection.tsx new file mode 100644 index 000000000000..ccf3b077d496 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ToggleConnection.tsx @@ -0,0 +1,42 @@ +import { + GridRow as Row, + GridColumn as Column, + ToggleSwitchCheckbox, + Text, +} from '@island.is/island-ui/core' +import { useContext } from 'react' +import { FormSystemInput } from '@island.is/api/schema' +import ControlContext from '../../../../../../../context/ControlContext' +import { NavbarSelectStatus } from '../../../../../../../lib/utils/interfaces' + +const ToggleConnection = () => { + const { control, selectStatus, setSelectStatus } = useContext(ControlContext) + const currentItem = control.activeItem.data as FormSystemInput + const hasConnections = + control.form.dependencies[currentItem.guid as string] !== undefined && + control.form.dependencies[currentItem.guid as string].length > 0 + + return ( + + + + setSelectStatus( + e ? NavbarSelectStatus.NORMAL : NavbarSelectStatus.OFF, + ) + } + /> + + {hasConnections && ( + + Hefur tengingar + + )} + + ) +} + +export default ToggleConnection diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx index 7bed2924d4c2..eefd7ecbb72e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx @@ -1,6 +1,6 @@ -import { useContext, useEffect, useMemo, useState } from "react" -import ControlContext from "../../../../../../context/ControlContext" -import { FormSystemInput, FormSystemListItem } from "@island.is/api/schema" +import { useContext, useEffect, useMemo, useState } from 'react' +import ControlContext from '../../../../../../context/ControlContext' +import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { GridRow as Row, GridColumn as Column, @@ -19,18 +19,33 @@ import { useSensor, useSensors, } from '@dnd-kit/core' -import { NavbarSelectStatus } from "../../../../../../lib/utils/interfaces" -import ListItem from "./components/ListItem" -import { SortableContext } from "@dnd-kit/sortable" -import { createPortal } from "react-dom" - +import { NavbarSelectStatus } from '../../../../../../lib/utils/interfaces' +import ListItem from './components/ListItem' +import { SortableContext } from '@dnd-kit/sortable' +import { createPortal } from 'react-dom' const ListBuilder = () => { - const { control, controlDispatch, setSelectStatus, setInListBuilder, updateActiveItem } = useContext(ControlContext) + const { + control, + controlDispatch, + setSelectStatus, + setInListBuilder, + updateActiveItem, + } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput const { activeListItem } = control - const listItems = currentItem?.inputSettings?.list ?? [] as FormSystemListItem[] - const listItemIds = useMemo(() => listItems?.filter((l: FormSystemListItem): l is FormSystemListItem => l !== null && l !== undefined).map((l: FormSystemListItem) => l?.guid as UniqueIdentifier), [listItems]) + const listItems = + currentItem?.inputSettings?.list ?? ([] as FormSystemListItem[]) + const listItemIds = useMemo( + () => + listItems + ?.filter( + (l: FormSystemListItem): l is FormSystemListItem => + l !== null && l !== undefined, + ) + .map((l: FormSystemListItem) => l?.guid as UniqueIdentifier), + [listItems], + ) const [connecting, setConnecting] = useState([false]) const sensors = useSensors( @@ -41,7 +56,6 @@ const ListBuilder = () => { }), ) - const addListItem = () => { controlDispatch({ type: 'ADD_LIST_ITEM', @@ -68,7 +82,7 @@ const ListBuilder = () => { type: 'LIST_ITEM_OVER_LIST_ITEM', payload: { activeId: activeId, - overId: overId + overId: overId, }, }) } @@ -85,9 +99,6 @@ const ListBuilder = () => { } useEffect(() => { - // if (listItems.length === 0) { - // addListItem() - // } setSelectStatus(NavbarSelectStatus.ON_WITHOUT_SELECT) }, []) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx index b902ea9ea7aa..1aaecd3d91dc 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx @@ -20,12 +20,22 @@ interface Props { } const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { - const { control, controlDispatch, setFocus, focus, setSelectStatus, updateActiveItem } = useContext(ControlContext) + const { + control, + controlDispatch, + setFocus, + focus, + setSelectStatus, + updateActiveItem, + } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput const isRadio = currentItem.type === 'Valhnappar' - const { setNodeRef, attributes, listeners, isDragging } = useSortable({ id: listItem.guid ?? '', data: { listItem } }) + const { setNodeRef, attributes, listeners, isDragging } = useSortable({ + id: listItem.guid ?? '', + data: { listItem }, + }) if (isDragging) { return ( @@ -53,13 +63,13 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { label="Tengja" checked={false} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> { }} + onChange={() => {}} /> @@ -67,7 +77,7 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { marginRight={2} style={{ cursor: 'pointer' }} // eslint-disable-next-line @typescript-eslint/no-empty-function - onClick={() => { }} + onClick={() => {}} > @@ -85,7 +95,7 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { size="sm" value={listItem?.label?.is ?? ''} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> @@ -96,7 +106,7 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { size="sm" value={listItem?.label?.en ?? ''} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> @@ -135,12 +145,15 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { setSelectStatus( e ? NavbarSelectStatus.LIST_ITEM - : NavbarSelectStatus.ON_WITHOUT_SELECT + : NavbarSelectStatus.ON_WITHOUT_SELECT, ) setConnecting((prev) => - prev.map((_, i) => (i === index ? e : false)) + prev.map((_, i) => (i === index ? e : false)), ) - controlDispatch({ type: 'SET_ACTIVE_LIST_ITEM', payload: { listItem: e ? listItem : null } }) + controlDispatch({ + type: 'SET_ACTIVE_LIST_ITEM', + payload: { listItem: e ? listItem : null }, + }) }} /> { payload: { guid: listItem.guid ?? '', update: updateActiveItem, - } + }, }) } /> @@ -281,5 +294,4 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { ) } - export default ListItem diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 48be875ba766..68f497f38ec9 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -3,10 +3,15 @@ import { useContext, useState } from 'react' import ControlContext from '../../../../context/ControlContext' import { FormSystemDocumentType } from '@island.is/api/schema' - const Premises = () => { const { control, documentTypes, updateSettings } = useContext(ControlContext) - const [formDocumentTypes, setFormDocumentTypes] = useState(control.form?.documentTypes?.filter((d): d is FormSystemDocumentType => d !== null) ?? []) + const [formDocumentTypes, setFormDocumentTypes] = useState< + FormSystemDocumentType[] + >( + control.form?.documentTypes?.filter( + (d): d is FormSystemDocumentType => d !== null, + ) ?? [], + ) const handleCheckboxChange = (documentTypeId: number) => { if (documentTypeId === -1) return @@ -15,9 +20,9 @@ const Premises = () => { ) ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) : ([ - ...formDocumentTypes, - documentTypes?.find((d) => d?.id === documentTypeId), - ].filter((d) => d !== undefined) as FormSystemDocumentType[]) + ...formDocumentTypes, + documentTypes?.find((d) => d?.id === documentTypeId), + ].filter((d) => d !== undefined) as FormSystemDocumentType[]) setFormDocumentTypes(newDocumentTypes) updateSettings({ ...control.form, documentTypes: newDocumentTypes }) } @@ -49,7 +54,8 @@ const Premises = () => { ) })} - ) + + ) } export default Premises diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 3e350876914a..e4e2dbffac8f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -1,14 +1,14 @@ -import { FormSystemInput } from "@island.is/api/schema" -import { Box, DatePicker, Text } from "@island.is/island-ui/core" -import MessageWithLink from "./components/MessageWithLink" -import Banknumber from "./components/Banknumber" -import Email from "./components/Email" -import NationalId from "./components/NationalId" -import FileUpload from "./components/FileUpload" -import TextInput from "./components/TextInput" -import List from "./components/List" -import Radio from "./components/Radio" -import Currency from "./components/Currency" +import { FormSystemInput } from '@island.is/api/schema' +import { Box, DatePicker, Text } from '@island.is/island-ui/core' +import MessageWithLink from './components/MessageWithLink' +import Banknumber from './components/Banknumber' +import Email from './components/Email' +import NationalId from './components/NationalId' +import FileUpload from './components/FileUpload' +import TextInput from './components/TextInput' +import List from './components/List' +import Radio from './components/Radio' +import Currency from './components/Currency' interface Props { data: FormSystemInput @@ -17,13 +17,8 @@ interface Props { const Preview = ({ data }: Props) => { const { type } = data return ( - - {type === 'Textalýsing' && ( - - )} + + {type === 'Textalýsing' && } {type === 'Bankareikningur' && ( {data?.name?.is} @@ -34,14 +29,19 @@ const Preview = ({ data }: Props) => { {type === 'Dagssetningarval' && ( )} {type === 'Kennitala' && } {type === 'Skjal' && } - {type === 'Textalínubox' || type === 'TextaInnsláttur' && } + {type === 'Textalínubox' || + (type === 'TextaInnsláttur' && )} {type === 'Fellilisti' && } {type === 'Valhnappar' && } {type === 'Krónutölubox' && } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx index c54284c02d3a..59686cf9b2d1 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx @@ -2,7 +2,6 @@ import { GridRow as Row, GridColumn as Column, Input, - Box, } from '@island.is/island-ui/core' import { useRef, useState } from 'react' diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx index 759c8b483d66..326200dc4e7b 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx @@ -1,4 +1,3 @@ - import { GridRow as Row, GridColumn as Column, diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx index 8d52b21dca8c..8b593819a229 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx @@ -2,7 +2,6 @@ import { useContext, useState } from 'react' import { Input, Stack, Text } from '@island.is/island-ui/core' import ControlContext from '../../../../../context/ControlContext' - export const Email = () => { const { control } = useContext(ControlContext) const { activeItem } = control diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx index 2e16e9df22bd..433c0268683c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx @@ -16,7 +16,6 @@ const FileUpload = ({ currentItem }: Props) => { const [error, setError] = useState(undefined) const [fileList, setFileList] = useState>([]) - const onChange = (files: File[]) => { const uploadFiles = files.map((file) => fileToObject(file)) const uploadFilesWithKey = uploadFiles.map((f) => ({ diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index 99a5b1307fb1..3432e2d34697 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -1,5 +1,5 @@ -import { FormSystemInput, FormSystemListItem } from "@island.is/api/schema" -import { useEffect, useState } from "react" +import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' +import { useEffect, useState } from 'react' import { Select } from '@island.is/island-ui/core' interface Props { @@ -26,7 +26,11 @@ const List = ({ currentItem }: Props) => { return ( <> - ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx index f1662a756687..eed4d813e8bd 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx @@ -1,13 +1,8 @@ -import { FormSystemInput } from "@island.is/api/schema" -import { - Box, - Button, - Text -} from "@island.is/island-ui/core" +import { FormSystemInput } from '@island.is/api/schema' +import { Box, Button, Text } from '@island.is/island-ui/core' interface Props { data: FormSystemInput - } const MessageWithLink = ({ data }: Props) => { @@ -24,8 +19,8 @@ const MessageWithLink = ({ data }: Props) => { flexDirection={'row'} display={'flex'} padding={4} - background={"white"} - alignItems={"center"} + background={'white'} + alignItems={'center'} > diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx index c06000c50dc9..49ca6bddc4c6 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx @@ -1,6 +1,6 @@ -import { FormSystemInput, FormSystemListItem } from "@island.is/api/schema" +import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { RadioButton, Text, Box } from '@island.is/island-ui/core' -import { useEffect, useState } from "react" +import { useEffect, useState } from 'react' interface Props { currentItem: FormSystemInput diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx index e0ecbf451678..7ee4c6d0f0f6 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx @@ -1,5 +1,5 @@ -import { FormSystemInput } from "@island.is/api/schema" -import { Input } from "@island.is/island-ui/core" +import { FormSystemInput } from '@island.is/api/schema' +import { Input } from '@island.is/island-ui/core' interface Props { data: FormSystemInput diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx index 48d00f321957..56f220f8a176 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx @@ -1,10 +1,10 @@ -import { Dispatch, SetStateAction, useContext, useEffect } from "react" +import { Dispatch, SetStateAction, useContext, useEffect } from 'react' import { Box, Button, Text } from '@island.is/island-ui/core' -import ControlContext from "../../../../context/ControlContext" -import { FormSystemGroup, FormSystemInput } from "@island.is/api/schema" -import { NavbarSelectStatus } from "../../../../lib/utils/interfaces" -import Preview from "../Preview/Preveiw" -import MultiSet from "./components/MultiSet" +import ControlContext from '../../../../context/ControlContext' +import { FormSystemGroup, FormSystemInput } from '@island.is/api/schema' +import { NavbarSelectStatus } from '../../../../lib/utils/interfaces' +import Preview from '../Preview/Preveiw' +import MultiSet from './components/MultiSet' interface Props { setOpenPreview: Dispatch> @@ -45,10 +45,7 @@ const PreviewStepOrGroup = ({ setOpenPreview }: Props) => { inputs ?.filter((i) => i?.groupGuid === g?.guid) .map((i) => ( - + )) )} @@ -65,12 +62,7 @@ const PreviewStepOrGroup = ({ setOpenPreview }: Props) => { ) : ( inputs ?.filter((i) => i?.groupGuid === activeItem?.data?.guid) - .map((i) => ( - - )) + .map((i) => ) )} )} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/components/MultiSet.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/components/MultiSet.tsx index c92d6f466e23..5c817feb7a61 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/components/MultiSet.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/components/MultiSet.tsx @@ -12,7 +12,8 @@ const MultiSet = ({ group }: Props) => { const { inputsList: inputs } = control.form const originalInput = inputs?.filter((i) => i?.groupGuid === group.guid) const [multiInput, setMultiInput] = useState([ - (inputs?.filter((i) => i?.groupGuid === group.guid) || []) as FormSystemInput[], + (inputs?.filter((i) => i?.groupGuid === group.guid) || + []) as FormSystemInput[], ]) const add = () => { if (originalInput) { @@ -24,10 +25,7 @@ const MultiSet = ({ group }: Props) => { {multiInput.map((inputArray, index) => (
{inputArray.map((i) => ( - + ))}
))} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx index 3d475571972d..f8561744541e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx @@ -1,9 +1,13 @@ -import { useContext, useState } from "react" -import ControlContext from "../../../../context/ControlContext" +import { useContext, useState } from 'react' +import ControlContext from '../../../../context/ControlContext' import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' -import { FormSystemApplicantType, FormSystemFormApplicantType, FormSystemLanguageType } from "@island.is/api/schema" -import { EFormApplicantTypes } from "../../../../lib/utils/interfaces" -import FormApplicantType from "./components/FormApplicantType" +import { + FormSystemApplicantType, + FormSystemFormApplicantType, + FormSystemLanguageType, +} from '@island.is/api/schema' +import { EFormApplicantTypes } from '../../../../lib/utils/interfaces' +import FormApplicantType from './components/FormApplicantType' const applicantTypeLabel = [ 'Einstaklingur (innskráður)', @@ -23,19 +27,26 @@ const applicantTypes = [ 'Lögaðili', ] - export const RelevantParties = () => { - const { applicantTypes: applicantTypeTemplates, control, updateSettings } = useContext(ControlContext) + const { + applicantTypes: applicantTypeTemplates, + control, + updateSettings, + } = useContext(ControlContext) const { form } = control const { id: formId } = form - const [formApplicantTypes, setFormApplicantTypes] = useState( - (form.formApplicantTypes ?? []).filter(Boolean) as FormSystemFormApplicantType[] + const [formApplicantTypes, setFormApplicantTypes] = useState< + FormSystemFormApplicantType[] + >( + (form.formApplicantTypes ?? []).filter( + Boolean, + ) as FormSystemFormApplicantType[], ) const [focus, setOnFocus] = useState('') const createFormApplicantType = ( type: string, - template: FormSystemApplicantType + template: FormSystemApplicantType, ): FormSystemFormApplicantType => { return { __typename: undefined, @@ -43,7 +54,7 @@ export const RelevantParties = () => { name: template?.nameSuggestions?.[0]?.nameSuggestion ?? { __typename: undefined, is: '', - en: '' + en: '', }, applicantTypeId: template.id, formId, @@ -105,8 +116,8 @@ export const RelevantParties = () => { ) const newTypes = hasLegalEntity ? newFormApplicantTypes.filter( - (f) => f.type !== EFormApplicantTypes.logadili, - ) + (f) => f.type !== EFormApplicantTypes.logadili, + ) : newFormApplicantTypes const newList = [...formApplicantTypes, ...newTypes] updateSettings({ ...form, formApplicantTypes: newList }) @@ -114,7 +125,9 @@ export const RelevantParties = () => { } const removeFormApplicantTypes = (types: EFormApplicantTypes[]) => { - const newList = formApplicantTypes.filter((f) => !types.includes(f.type as EFormApplicantTypes)) + const newList = formApplicantTypes.filter( + (f) => !types.includes(f.type as EFormApplicantTypes), + ) updateSettings({ ...form, formApplicantTypes: newList }) setFormApplicantTypes(newList) } @@ -127,7 +140,10 @@ export const RelevantParties = () => { if (template !== undefined && template !== null) { const newFormApplicantType: FormSystemFormApplicantType = createFormApplicantType(EFormApplicantTypes.einstaklingur, template) - updateSettings({ ...form, formApplicantTypes: [...formApplicantTypes, newFormApplicantType] }) + updateSettings({ + ...form, + formApplicantTypes: [...formApplicantTypes, newFormApplicantType], + }) setFormApplicantTypes([...formApplicantTypes, newFormApplicantType]) } } else if (index === 1) { @@ -138,8 +154,10 @@ export const RelevantParties = () => { (at) => at?.id === 5, ) if ( - delegatorTemplate === undefined || delegatorTemplate === null || - delegateeTemplate === undefined || delegateeTemplate === null + delegatorTemplate === undefined || + delegatorTemplate === null || + delegateeTemplate === undefined || + delegateeTemplate === null ) { return } @@ -162,8 +180,10 @@ export const RelevantParties = () => { (at) => at?.id === 3, ) if ( - delegatorTemplate === undefined || delegatorTemplate === null || - delegateeTemplate === undefined || delegateeTemplate === null + delegatorTemplate === undefined || + delegatorTemplate === null || + delegateeTemplate === undefined || + delegateeTemplate === null ) { return } @@ -183,7 +203,12 @@ export const RelevantParties = () => { (at) => at?.id === 4, ) const legalEntity = applicantTypeTemplates?.find((at) => at?.id === 6) - if (procurationHolder === undefined || procurationHolder === null || legalEntity === undefined || legalEntity === null) { + if ( + procurationHolder === undefined || + procurationHolder === null || + legalEntity === undefined || + legalEntity === null + ) { return } @@ -267,12 +292,17 @@ export const RelevantParties = () => { {formApplicantTypes.map((f, i) => ( at?.id === f.applicantTypeId) - ?.nameSuggestions?.map((ns) => ns?.nameSuggestion) ?? []) as FormSystemLanguageType[] + ?.nameSuggestions?.map((ns) => ns?.nameSuggestion) ?? + []) as FormSystemLanguageType[] } formApplicantType={f} index={i} @@ -288,4 +318,3 @@ export const RelevantParties = () => { } export default RelevantParties - diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx index d6615e51b531..5aae9e7295f2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx @@ -8,7 +8,10 @@ import { Stack, Text, } from '@island.is/island-ui/core' -import { FormSystemFormApplicantType, FormSystemLanguageType } from '@island.is/api/schema' +import { + FormSystemFormApplicantType, + FormSystemLanguageType, +} from '@island.is/api/schema' interface Props { title: string @@ -46,13 +49,14 @@ const FormApplicantType = ({ const other = { label: 'Annað', value: 'Annað' } const getOptions = () => { - const options = nameSuggestions?.map((suggestion) => { - return { - label: suggestion?.is ?? '', - value: suggestion?.en ?? '', - } - }) || [] - options.push(other); + const options = + nameSuggestions?.map((suggestion) => { + return { + label: suggestion?.is ?? '', + value: suggestion?.en ?? '', + } + }) || [] + options.push(other) return options } @@ -70,18 +74,20 @@ const FormApplicantType = ({ language: 'is' | 'en', ) => { setFormApplicantTypes((prev: FormSystemFormApplicantType[]) => { - const newApplicantTypes = prev.map((f: FormSystemFormApplicantType, i: number) => { - if (i === index) { - return { - ...f, - name: { - ...f.name, - [language]: e.target.value, - }, + const newApplicantTypes = prev.map( + (f: FormSystemFormApplicantType, i: number) => { + if (i === index) { + return { + ...f, + name: { + ...f.name, + [language]: e.target.value, + }, + } } - } - return f - }) + return f + }, + ) return newApplicantTypes }) } @@ -106,7 +112,9 @@ const FormApplicantType = ({ isOther ? other : { label: name.is ?? '', value: name.en ?? '' } } options={getOptions()} - onChange={(e) => handleSelectChange(e ?? { label: '', value: '' })} + onChange={(e) => + handleSelectChange(e ?? { label: '', value: '' }) + } /> diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 87186ffc21b3..6e4f2a0c5682 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -7,8 +7,6 @@ import { UniqueIdentifier, DragStartEvent, DragOverEvent, - DataRef, - DragEndEvent, } from '@dnd-kit/core' import { SortableContext } from '@dnd-kit/sortable' import { useContext, useMemo } from 'react' @@ -17,14 +15,17 @@ import { Box, Button } from '@island.is/island-ui/core' import { baseSettingsStep } from '../../utils/getBaseSettingsStep' import NavbarTab from './components/NavbarTab/NavbarTab' import NavComponent from './components/NavComponent/NavComponent' -import { FormSystemFormInput, FormSystemGroup, FormSystemInput, FormSystemStep, FormSystemUpdateFormInput, Maybe } from '@island.is/api/schema' +import { + FormSystemGroup, + FormSystemInput, + FormSystemStep, + Maybe, +} from '@island.is/api/schema' import ControlContext, { IControlContext } from '../../context/ControlContext' import { useFormSystemCreateStepMutation } from '../../gql/Step.generated' -import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' import { ItemType } from '../../lib/utils/interfaces' import { removeTypename } from '../../lib/utils/removeTypename' - type DndAction = | 'STEP_OVER_STEP' | 'GROUP_OVER_STEP' @@ -33,20 +34,32 @@ type DndAction = | 'INPUT_OVER_INPUT' export default function Navbar() { - const { - control, - controlDispatch, - setInSettings, - inSettings, - updateDnD, - formUpdate - } = useContext(ControlContext) as IControlContext + const { control, controlDispatch, setInSettings, inSettings, formUpdate } = + useContext(ControlContext) as IControlContext const { activeItem, form } = control const { stepsList: steps, groupsList: groups, inputsList: inputs } = form - const stepsIds = useMemo(() => steps?.filter((s): s is FormSystemStep => s !== null && s !== undefined).map((s) => s?.guid as UniqueIdentifier), [steps]) - const groupsIds = useMemo(() => groups?.filter((g): g is FormSystemGroup => g !== null && g !== undefined).map((g) => g?.guid as UniqueIdentifier), [groups]) - const inputsIds = useMemo(() => inputs?.filter((i): i is FormSystemInput => i !== null && i !== undefined).map((i) => i?.guid as UniqueIdentifier), [inputs]) + const stepsIds = useMemo( + () => + steps + ?.filter((s): s is FormSystemStep => s !== null && s !== undefined) + .map((s) => s?.guid as UniqueIdentifier), + [steps], + ) + const groupsIds = useMemo( + () => + groups + ?.filter((g): g is FormSystemGroup => g !== null && g !== undefined) + .map((g) => g?.guid as UniqueIdentifier), + [groups], + ) + const inputsIds = useMemo( + () => + inputs + ?.filter((i): i is FormSystemInput => i !== null && i !== undefined) + .map((i) => i?.guid as UniqueIdentifier), + [inputs], + ) const sensors = useSensors( useSensor(PointerSensor, { @@ -55,7 +68,7 @@ export default function Navbar() { }, }), ) - const [createStep, { data, loading, error }] = useFormSystemCreateStepMutation() + const [createStep] = useFormSystemCreateStepMutation() const addStep = async () => { const newStep = await createStep({ @@ -63,26 +76,36 @@ export default function Navbar() { input: { stepCreationDto: { formId: form?.id as number, - displayOrder: steps?.length - } - } - } + displayOrder: steps?.length, + }, + }, + }, }) if (newStep) { controlDispatch({ type: 'ADD_STEP', payload: { - step: removeTypename(newStep.data?.formSystemCreateStep) as FormSystemStep - } + step: removeTypename( + newStep.data?.formSystemCreateStep, + ) as FormSystemStep, + }, }) } } const focusComponent = (type: ItemType, id: UniqueIdentifier) => { - const data = type === "Step" - ? steps?.find((item: Maybe | undefined) => item?.guid === id) : type === "Group" - ? groups?.find((item: Maybe | undefined) => item?.guid === id) - : inputs?.find((item: Maybe | undefined) => item?.guid === id) + const data = + type === 'Step' + ? steps?.find( + (item: Maybe | undefined) => item?.guid === id, + ) + : type === 'Group' + ? groups?.find( + (item: Maybe | undefined) => item?.guid === id, + ) + : inputs?.find( + (item: Maybe | undefined) => item?.guid === id, + ) if (id === baseSettingsStep.guid) { controlDispatch({ type: 'SET_ACTIVE_ITEM', @@ -90,7 +113,7 @@ export default function Navbar() { activeItem: { type: 'Step', data: baseSettingsStep, - } + }, }, }) } else if (data) { @@ -100,7 +123,7 @@ export default function Navbar() { activeItem: { type: type, data: data, - } + }, }, }) } @@ -113,8 +136,8 @@ export default function Navbar() { activeItem: { type: event.active.data.current?.type, data: event.active.data.current?.data ?? null, - } - } + }, + }, }) } @@ -165,7 +188,6 @@ export default function Navbar() { } const onDragEnd = () => { - // updateDnD(activeItem.type) formUpdate() } @@ -210,7 +232,7 @@ export default function Navbar() { activeItem: { type: 'Step', data: step, - } + }, }, }) } @@ -241,7 +263,9 @@ export default function Navbar() { > {steps - ?.filter((s): s is FormSystemStep => s !== null && s !== undefined) + ?.filter( + (s): s is FormSystemStep => s !== null && s !== undefined, + ) .filter((s) => s.type === 'Innsláttur') .map((s, i) => ( @@ -254,7 +278,10 @@ export default function Navbar() { /> {groups - ?.filter((g): g is FormSystemGroup => g !== null && g !== undefined) + ?.filter( + (g): g is FormSystemGroup => + g !== null && g !== undefined, + ) .filter((g) => g.stepGuid === s.guid) .map((g) => ( @@ -267,7 +294,10 @@ export default function Navbar() { {inputs - ?.filter((i): i is FormSystemInput => i !== null && i !== undefined) + ?.filter( + (i): i is FormSystemInput => + i !== null && i !== undefined, + ) .filter((i) => i.groupGuid === g.guid) .map((i) => ( @@ -312,14 +347,8 @@ export default function Navbar() { + Bæta við skrefi - - - ) } return null - } diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx index 1cfac242be11..31eebd642753 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx @@ -1,12 +1,16 @@ import { useState } from 'react' -import { ItemType, IGroup, IInput, IStep } from '../../../../types/interfaces' import { useSortable } from '@dnd-kit/sortable' import { Box } from '@island.is/island-ui/core' import cn from 'classnames' import * as styles from './NavComponent.css' import { UniqueIdentifier } from '@dnd-kit/core' import NavButtons from './components/NavButtons' -import { FormSystemGroup, FormSystemInput, FormSystemStep } from '@island.is/api/schema' +import { + FormSystemGroup, + FormSystemInput, + FormSystemStep, +} from '@island.is/api/schema' +import { ItemType } from '../../../../lib/utils/interfaces' type Props = { type: ItemType @@ -30,39 +34,39 @@ export default function NavComponent({ } const truncateName = (name: string) => { - let maxLength; + let maxLength if (active) { switch (type) { case 'Step': - maxLength = 23; - break; + maxLength = 23 + break case 'Group': - maxLength = 16; - break; + maxLength = 16 + break case 'Input': - maxLength = 12; - break; + maxLength = 12 + break default: - maxLength = 26; + maxLength = 26 } } else { switch (type) { case 'Step': - maxLength = 26; - break; + maxLength = 26 + break case 'Group': - maxLength = 19; - break; + maxLength = 19 + break case 'Input': - maxLength = 16; - break; + maxLength = 16 + break default: - maxLength = 26; + maxLength = 26 } } - return truncateText(name, maxLength); + return truncateText(name, maxLength) } const { setNodeRef, attributes, listeners, isDragging } = useSortable({ @@ -138,9 +142,9 @@ export default function NavComponent({ verticalAlign: 'middle', }} > - {!(type === 'Step' && (data as FormSystemStep).type !== 'Innsláttur') && ( - - )} + {!( + type === 'Step' && (data as FormSystemStep).type !== 'Innsláttur' + ) && }
) : ( @@ -168,8 +172,4 @@ export default function NavComponent({ )}
) - - - - } diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx index 0cdf8fcda401..114276c318de 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/components/NavButtons.tsx @@ -2,19 +2,24 @@ import { Box, Icon } from '@island.is/island-ui/core' import { useContext } from 'react' import ControlContext from '../../../../../context/ControlContext' import { FormSystemGroup, FormSystemInput } from '@island.is/api/schema' -import { useFormSystemCreateGroupMutation, useFormSystemDeleteGroupMutation } from '../../../../../gql/Group.generated' -import { useFormSystemCreateInputMutation, useFormSystemDeleteInputMutation } from '../../../../../gql/Input.generated' +import { + useFormSystemCreateGroupMutation, + useFormSystemDeleteGroupMutation, +} from '../../../../../gql/Group.generated' +import { + useFormSystemCreateInputMutation, + useFormSystemDeleteInputMutation, +} from '../../../../../gql/Input.generated' import { useFormSystemDeleteStepMutation } from '../../../../../gql/Step.generated' import { removeTypename } from '../../../../../lib/utils/removeTypename' - export default function NavButtons() { const { control, controlDispatch } = useContext(ControlContext) const { activeItem, form } = control const { groupsList: groups, inputsList: inputs } = form - const [addGroup, groupStatus] = useFormSystemCreateGroupMutation() - const [addInput, inputStatus] = useFormSystemCreateInputMutation() + const [addGroup] = useFormSystemCreateGroupMutation() + const [addInput] = useFormSystemCreateInputMutation() const [removeStep, removeStepStatus] = useFormSystemDeleteStepMutation() const [removeGroup, removeGroupStatus] = useFormSystemDeleteGroupMutation() const [removeInput, removeInputStatus] = useFormSystemDeleteInputMutation() @@ -26,13 +31,20 @@ export default function NavButtons() { input: { groupCreationDto: { stepId: activeItem?.data?.id, - displayOrder: groups?.length - } - } - } + displayOrder: groups?.length, + }, + }, + }, }) if (newGroup) { - controlDispatch({ type: 'ADD_GROUP', payload: { group: removeTypename(newGroup.data?.formSystemCreateGroup) as FormSystemGroup } }) + controlDispatch({ + type: 'ADD_GROUP', + payload: { + group: removeTypename( + newGroup.data?.formSystemCreateGroup, + ) as FormSystemGroup, + }, + }) } } else if (activeItem.type === 'Group') { const newInput = await addInput({ @@ -40,14 +52,20 @@ export default function NavButtons() { input: { inputCreationDto: { groupId: activeItem?.data?.id, - displayOrder: inputs?.length - } - } - } + displayOrder: inputs?.length, + }, + }, + }, }) if (newInput) { - console.log('newInput', newInput) - controlDispatch({ type: 'ADD_INPUT', payload: { input: removeTypename(newInput.data?.formSystemCreateInput) as FormSystemInput } }) + controlDispatch({ + type: 'ADD_INPUT', + payload: { + input: removeTypename( + newInput.data?.formSystemCreateInput, + ) as FormSystemInput, + }, + }) } } } @@ -58,9 +76,9 @@ export default function NavButtons() { await removeStep({ variables: { input: { - stepId: id - } - } + stepId: id, + }, + }, }) if (!removeStepStatus.loading) { controlDispatch({ type: 'REMOVE_STEP', payload: { stepId: id } }) @@ -69,9 +87,9 @@ export default function NavButtons() { await removeGroup({ variables: { input: { - groupId: id - } - } + groupId: id, + }, + }, }) if (!removeGroupStatus.loading) { controlDispatch({ type: 'REMOVE_GROUP', payload: { groupId: id } }) @@ -80,14 +98,13 @@ export default function NavButtons() { await removeInput({ variables: { input: { - inputId: id - } - } + inputId: id, + }, + }, }) if (!removeInputStatus.loading) { controlDispatch({ type: 'REMOVE_INPUT', payload: { inputId: id } }) } - } } @@ -102,14 +119,9 @@ export default function NavButtons() { )} - + ) - - } diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx index f8084e4a89e2..9ec1cbfcd0be 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -1,14 +1,13 @@ import { Box, Inline } from '@island.is/island-ui/core' import cn from 'classnames' import * as styles from './NavbarTab.css' -import { Dispatch, SetStateAction, useContext } from 'react' -import FormBuilderContext from '../../../../context/FormBuilderContext' +import { useContext } from 'react' import { baseSettingsStep } from '../../../../utils/getBaseSettingsStep' import ControlContext from '../../../../context/ControlContext' - export default function NavbarTab() { - const { control, controlDispatch, inSettings, setInSettings } = useContext(ControlContext) + const { control, controlDispatch, inSettings, setInSettings } = + useContext(ControlContext) const { stepsList: steps } = control.form return ( @@ -19,14 +18,14 @@ export default function NavbarTab() { [styles.selected]: !inSettings, })} onClick={() => { - const step = steps?.find(s => s?.type === 'Innsláttur') + const step = steps?.find((s) => s?.type === 'Innsláttur') controlDispatch({ type: 'SET_ACTIVE_ITEM', payload: { activeItem: { type: 'Step', data: step, - } + }, }, }) setInSettings(false) @@ -46,7 +45,7 @@ export default function NavbarTab() { activeItem: { type: 'Step', data: baseSettingsStep, - } + }, }, }) setInSettings(true) diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx index 409a2252b447..517b924682b2 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx @@ -1,9 +1,13 @@ import { useContext } from 'react' import { Box, Text } from '@island.is/island-ui/core' import SelectNavComponent from './components/SelectNavComponent' -import { NavbarSelectStatus } from '../../types/interfaces' import ControlContext from '../../context/ControlContext' -import { FormSystemGroup, FormSystemInput, FormSystemStep } from '@island.is/api/schema' +import { + FormSystemGroup, + FormSystemInput, + FormSystemStep, +} from '@island.is/api/schema' +import { NavbarSelectStatus } from '../../lib/utils/interfaces' export default function NavbarSelect() { const { control, selectStatus } = useContext(ControlContext) diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx index 06b75540195a..595ccf20a165 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx @@ -3,12 +3,12 @@ import * as styles from './selectNavComponent.css' import { Box, Checkbox } from '@island.is/island-ui/core' import { useContext } from 'react' import { - ItemType, - NavbarSelectStatus, -} from '../../../types/interfaces' -import FormBuilderContext from '../../../context/FormBuilderContext' -import { FormSystemGroup, FormSystemInput, FormSystemStep } from '@island.is/api/schema' + FormSystemGroup, + FormSystemInput, + FormSystemStep, +} from '@island.is/api/schema' import ControlContext from '../../../context/ControlContext' +import { ItemType, NavbarSelectStatus } from '../../../lib/utils/interfaces' type Props = { type: ItemType @@ -23,15 +23,16 @@ export default function SelectNavComponent({ active, selectable, }: Props) { - const { control, controlDispatch, selectStatus } = useContext(ControlContext) + const { control, selectStatus, controlDispatch, updateSettings } = + useContext(ControlContext) const { activeItem, activeListItem, form } = control const activeGuid = selectStatus === NavbarSelectStatus.LIST_ITEM ? activeListItem?.guid ?? '' : activeItem?.data?.guid ?? '' - const connected = - form.dependencies[activeGuid]?.includes(data.guid as string) || - !form.dependencies + const connected: boolean = form.dependencies[activeGuid]?.includes( + data.guid as string, + ) const truncateText = (text: string, maxLength: number) => { return text.length > maxLength ? text.slice(0, maxLength) + '...' : text @@ -72,6 +73,7 @@ export default function SelectNavComponent({ return truncateText(name, maxLength) } + return ( {selectable && ( - + { - // formDispatch({ - // type: 'addRemoveConnection', - // payload: { - // active: activeGuid, - // item: data.guid, - // }, - // }) - // }} + onChange={() => + controlDispatch({ + type: 'TOGGLE_DEPENDENCY', + payload: { + activeId: activeGuid, + itemId: data.guid as string, + update: updateSettings, + }, + }) + } /> )} @@ -142,6 +145,4 @@ export default function SelectNavComponent({ )} ) - - } diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts b/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts index 8db4cbdbcc55..e906fdb3b246 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts @@ -88,3 +88,7 @@ export const navBackgroundDefault = styleVariants({ export const customBackgroundDropdown = style({ background: theme.color.blue100, }) + +export const selectableComponent = style({ + paddingTop: '10px', +}) diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index 9f64f486cfd4..5b04a3f8cf44 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -13,11 +13,11 @@ import { AnimatePresence, motion } from 'framer-motion' import { useNavigate } from 'react-router-dom' import TranslationTag from '../TranslationTag/TranslationTag' import { formatDate } from '../../utils/formatDate' +import { FormSystemPaths } from '../../lib/paths' import { - ApplicationTemplateStatus, LicenseProviderEnum, -} from '../../types/enums' -import { FormSystemPaths } from '../../lib/paths' + ApplicationTemplateStatus, +} from '../../lib/utils/interfaces' interface Props { id?: number | null @@ -101,12 +101,14 @@ const TableRow = ({ { title: 'Breyta', onClick: () => { - navigate(FormSystemPaths.Form.replace(':formId', String(id)), + navigate( + FormSystemPaths.Form.replace(':formId', String(id)), { state: { - formId: id - } - }) + formId: id, + }, + }, + ) }, }, { diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index 94eba4db0f17..46b8aad1460d 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -1,8 +1,18 @@ -import { Dispatch, createContext } from "react" -import { ControlAction, ControlState } from "../hooks/controlReducer" -import { Maybe } from "graphql/jsutils/Maybe" -import { FormSystemApplicantType, FormSystemDocumentType, FormSystemForm, FormSystemInput, FormSystemListItem, FormSystemListType } from "@island.is/api/schema" -import { ActiveItem, ItemType, NavbarSelectStatus } from "../lib/utils/interfaces" +import { Dispatch, createContext } from 'react' +import { ControlAction, ControlState } from '../hooks/controlReducer' +import { Maybe } from 'graphql/jsutils/Maybe' +import { + FormSystemApplicantType, + FormSystemDocumentType, + FormSystemForm, + FormSystemInput, + FormSystemListType, +} from '@island.is/api/schema' +import { + ActiveItem, + ItemType, + NavbarSelectStatus, +} from '../lib/utils/interfaces' export interface IControlContext { control: ControlState @@ -17,12 +27,11 @@ export interface IControlContext { focus: string setFocus: Dispatch updateDnD: (type: ItemType) => void - formSettingsUpdate: (updatedForm?: FormSystemForm) => void selectStatus: NavbarSelectStatus setSelectStatus: Dispatch formUpdate: (updatedForm?: FormSystemForm) => void inListBuilder: boolean - setInListBuilder: Dispatch, + setInListBuilder: Dispatch updateSettings: (updatedForm?: FormSystemForm) => void } @@ -49,9 +58,6 @@ const ControlContext = createContext({ updateDnD: function (_type: ItemType): void { throw new Error('Function not implemented.') }, - formSettingsUpdate: function (_updatedForm?: FormSystemForm): void { - throw new Error('Function not implemented.') - }, selectStatus: NavbarSelectStatus.OFF, setSelectStatus: function (_value: NavbarSelectStatus): void { throw new Error('Function not implemented.') @@ -65,7 +71,7 @@ const ControlContext = createContext({ }, updateSettings: function (_updatedForm?: FormSystemForm): void { throw new Error('Function not implemented.') - } + }, }) export default ControlContext diff --git a/libs/portals/admin/form-system/src/context/FormBuilderContext.tsx b/libs/portals/admin/form-system/src/context/FormBuilderContext.tsx deleted file mode 100644 index 0cef53037510..000000000000 --- a/libs/portals/admin/form-system/src/context/FormBuilderContext.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { FocusEvent, SetStateAction, createContext } from 'react' -import { - ActiveItem, - IFormBuilder, - IFormBuilderContext, - IGroup, - IInput, - IListItem, - IStep, - NavbarSelectStatus, - ILists -} from '../types/interfaces' - -const FormBuilderContext = createContext({ - // formBuilder: {} as IFormBuilder, - // formDispatch: function (_value: unknown): void { - // throw new Error('Function not implemented.') - // }, - // lists: { - // activeItem: {} as ActiveItem, - // steps: [] as IStep[], - // groups: [] as IGroup[], - // inputs: [] as IInput[], - // }, - lists: {} as ILists, - formUpdate: async function (): Promise { - throw new Error('Function not implemented.') - }, - inSettings: false, - setInSettings: function (_value: SetStateAction): void { - throw new Error('Function not implemented.') - }, - setSelectStatus: function (_value: SetStateAction): void { - throw new Error('Function not implemented.') - }, - selectStatus: NavbarSelectStatus.OFF, - setActiveListItem: function (_value: SetStateAction): void { - throw new Error('Function not implemented.') - }, - blur: function ( - _e: FocusEvent, - ): void { - throw new Error('Function not implemented.') - }, - onFocus: function (_e: string): void { - throw new Error('Function not implemented.') - }, -}) - -export default FormBuilderContext diff --git a/libs/portals/admin/form-system/src/context/LayoutContext.tsx b/libs/portals/admin/form-system/src/context/LayoutContext.tsx deleted file mode 100644 index 82bed301b7aa..000000000000 --- a/libs/portals/admin/form-system/src/context/LayoutContext.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { createContext } from 'react' -import { ILayoutContext } from '../types/interfaces' - -const LayoutContext = createContext({ - info: { - organization: '', - applicationName: '', - }, - infoDispatch: function (_value: unknown): void { - throw new Error('Function not implemented.') - }, -}) - -export default LayoutContext diff --git a/libs/portals/admin/form-system/src/context/UserContext.tsx b/libs/portals/admin/form-system/src/context/UserContext.tsx deleted file mode 100644 index b59d839d23b2..000000000000 --- a/libs/portals/admin/form-system/src/context/UserContext.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { createContext } from "react"; -import { User } from "../types/interfaces"; - - -const UserContext = createContext({ - isAuthenticated: false, - setIsAuthenticated: (_: boolean) => undefined, - user: null as unknown as User, - setUser: (_: User) => undefined, - userLoading: false, -}) - -export default UserContext diff --git a/libs/portals/admin/form-system/src/gql/Form.graphql b/libs/portals/admin/form-system/src/gql/Form.graphql index 5a47f0fdb018..67304c9e1714 100644 --- a/libs/portals/admin/form-system/src/gql/Form.graphql +++ b/libs/portals/admin/form-system/src/gql/Form.graphql @@ -1,12 +1,8 @@ -mutation formSystemUpdateForm( - $input: FormSystemUpdateFormInput! -) { +mutation formSystemUpdateForm($input: FormSystemUpdateFormInput!) { formSystemUpdateForm(input: $input) } -query formSystemGetForm( - $input: FormSystemGetFormInput! -) { +query formSystemGetForm($input: FormSystemGetFormInput!) { formSystemGetForm(input: $input) { form { id @@ -255,33 +251,30 @@ query formSystemGetForm( type } inputTypes { - description { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings + isHidden + isPartOfMultiSet + isRequired + name { is en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type } + type + } } } - -mutation formSystemCreateForm( - $input: FormSystemCreateFormInput! -) { +mutation formSystemCreateForm($input: FormSystemCreateFormInput!) { formSystemCreateForm(input: $input) { form { id @@ -353,8 +346,8 @@ mutation formSystemCreateForm( } inputsList { description { - is - en + is + en } displayOrder groupGuid @@ -585,31 +578,29 @@ mutation formSystemCreateForm( type } inputTypes { - description { + description { is en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } } } -mutation formSystemDeleteForm( - $input: FormSystemDeleteFormInput! -) { +mutation formSystemDeleteForm($input: FormSystemDeleteFormInput!) { formSystemDeleteForm(input: $input) } diff --git a/libs/portals/admin/form-system/src/gql/Group.graphql b/libs/portals/admin/form-system/src/gql/Group.graphql index 8538f403282c..5f6b252c7faf 100644 --- a/libs/portals/admin/form-system/src/gql/Group.graphql +++ b/libs/portals/admin/form-system/src/gql/Group.graphql @@ -1,6 +1,4 @@ -mutation formSystemCreateGroup( - $input: FormSystemCreateGroupInput! -) { +mutation formSystemCreateGroup($input: FormSystemCreateGroupInput!) { formSystemCreateGroup(input: $input) { displayOrder guid @@ -37,14 +35,10 @@ mutation formSystemCreateGroup( } } -mutation formSystemDeleteGroup( - $input: FormSystemDeleteGroupInput! -) { +mutation formSystemDeleteGroup($input: FormSystemDeleteGroupInput!) { formSystemDeleteGroup(input: $input) } -mutation formSystemUpdateGroup( - $input: FormSystemUpdateGroupInput! -) { +mutation formSystemUpdateGroup($input: FormSystemUpdateGroupInput!) { formSystemUpdateGroup(input: $input) } diff --git a/libs/portals/admin/form-system/src/gql/Input.graphql b/libs/portals/admin/form-system/src/gql/Input.graphql index be4ab3532e6a..49ed57fb8a88 100644 --- a/libs/portals/admin/form-system/src/gql/Input.graphql +++ b/libs/portals/admin/form-system/src/gql/Input.graphql @@ -1,6 +1,4 @@ -mutation formSystemCreateInput( - $input: FormSystemCreateInputInput! - ) { +mutation formSystemCreateInput($input: FormSystemCreateInputInput!) { formSystemCreateInput(input: $input) { id name { @@ -24,21 +22,15 @@ mutation formSystemCreateInput( } } -mutation formSystemDeleteInput( - $input: FormSystemDeleteInputInput! -) { +mutation formSystemDeleteInput($input: FormSystemDeleteInputInput!) { formSystemDeleteInput(input: $input) } -mutation formSystemUpdateInput( - $input: FormSystemUpdateInputInput! -) { +mutation formSystemUpdateInput($input: FormSystemUpdateInputInput!) { formSystemUpdateInput(input: $input) } -query formSystemGetInput( - $input: FormSystemGetInputInput! -) { +query formSystemGetInput($input: FormSystemGetInputInput!) { formSystemGetInput(input: $input) { id name { diff --git a/libs/portals/admin/form-system/src/gql/Step.graphql b/libs/portals/admin/form-system/src/gql/Step.graphql index 7346ff6b086e..5e5f138330da 100644 --- a/libs/portals/admin/form-system/src/gql/Step.graphql +++ b/libs/portals/admin/form-system/src/gql/Step.graphql @@ -1,6 +1,4 @@ -mutation formSystemCreateStep( - $input: FormSystemCreateStepInput! -) { +mutation formSystemCreateStep($input: FormSystemCreateStepInput!) { formSystemCreateStep(input: $input) { callRuleset displayOrder @@ -54,14 +52,10 @@ mutation formSystemCreateStep( } } -mutation formSystemDeleteStep( - $input: FormSystemDeleteStepInput! -) { +mutation formSystemDeleteStep($input: FormSystemDeleteStepInput!) { formSystemDeleteStep(input: $input) } -mutation formSystemUpdateStep( - $input: FormSystemUpdateStepInput! -) { +mutation formSystemUpdateStep($input: FormSystemUpdateStepInput!) { formSystemUpdateStep(input: $input) } diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index fa5b61323f29..236fb3521be2 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -1,57 +1,168 @@ -import { FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemListItem, FormSystemStep } from "@island.is/api/schema" -import { ActiveItem, IInputSettings } from "../types/interfaces" -import { UniqueIdentifier } from "@dnd-kit/core" -import { arrayMove } from "@dnd-kit/sortable" -import { removeTypename } from "../lib/utils/removeTypename" -import { uuid } from "uuidv4" +import { + FormSystemForm, + FormSystemGroup, + FormSystemInput, + FormSystemListItem, + FormSystemStep, +} from '@island.is/api/schema' +import { UniqueIdentifier } from '@dnd-kit/core' +import { arrayMove } from '@dnd-kit/sortable' +import { removeTypename } from '../lib/utils/removeTypename' +import { uuid } from 'uuidv4' +import { ActiveItem, InputSettings } from '../lib/utils/interfaces' type ActiveItemActions = - | { type: 'SET_ACTIVE_ITEM', payload: { activeItem: ActiveItem } } - | { type: 'SET_ACTIVE_LIST_ITEM', payload: { listItem: FormSystemListItem | null } } + | { type: 'SET_ACTIVE_ITEM'; payload: { activeItem: ActiveItem } } + | { + type: 'SET_ACTIVE_LIST_ITEM' + payload: { listItem: FormSystemListItem | null } + } type GroupActions = - | { type: 'ADD_GROUP', payload: { group: FormSystemGroup } } - | { type: 'REMOVE_GROUP', payload: { groupId: number } } + | { type: 'ADD_GROUP'; payload: { group: FormSystemGroup } } + | { type: 'REMOVE_GROUP'; payload: { groupId: number } } type InputActions = - | { type: 'ADD_INPUT', payload: { input: FormSystemInput } } - | { type: 'REMOVE_INPUT', payload: { inputId: number } } - | { type: 'CHANGE_INPUT_TYPE', payload: { newValue: string, inputSettings: IInputSettings, update: (updatedActiveItem?: ActiveItem) => void } } - | { type: 'CHANGE_DESCRIPTION', payload: { lang: 'en' | 'is', newValue: string } } - | { type: 'CHANGE_IS_REQUIRED', payload: { update: (updatedActiveItem?: ActiveItem) => void } } - + | { type: 'ADD_INPUT'; payload: { input: FormSystemInput } } + | { type: 'REMOVE_INPUT'; payload: { inputId: number } } + | { + type: 'CHANGE_INPUT_TYPE' + payload: { + newValue: string + inputSettings: InputSettings + update: (updatedActiveItem?: ActiveItem) => void + } + } + | { + type: 'CHANGE_DESCRIPTION' + payload: { lang: 'en' | 'is'; newValue: string } + } + | { + type: 'CHANGE_IS_REQUIRED' + payload: { update: (updatedActiveItem?: ActiveItem) => void } + } type StepActions = - | { type: 'ADD_STEP', payload: { step: FormSystemStep } } - | { type: 'REMOVE_STEP', payload: { stepId: number } } + | { type: 'ADD_STEP'; payload: { step: FormSystemStep } } + | { type: 'REMOVE_STEP'; payload: { stepId: number } } type DndActions = - | { type: 'STEP_OVER_STEP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } - | { type: 'GROUP_OVER_STEP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } - | { type: 'GROUP_OVER_GROUP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } - | { type: 'INPUT_OVER_GROUP', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } - | { type: 'INPUT_OVER_INPUT', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } - | { type: 'LIST_ITEM_OVER_LIST_ITEM', payload: { activeId: UniqueIdentifier, overId: UniqueIdentifier } } + | { + type: 'STEP_OVER_STEP' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'GROUP_OVER_STEP' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'GROUP_OVER_GROUP' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'INPUT_OVER_GROUP' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'INPUT_OVER_INPUT' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } + | { + type: 'LIST_ITEM_OVER_LIST_ITEM' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } type ChangeActions = - | { type: 'CHANGE_NAME', payload: { lang: 'en' | 'is', newValue: string } } - | { type: 'CHANGE_FORM_NAME', payload: { lang: 'en' | 'is', newValue: string } } - | { type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE', payload: { value: number } } - | { type: 'CHANGE_INVALIDATION_DATE', payload: { value: Date } } - | { type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP', payload: { value: boolean } } - | { type: 'CHANGE_FORM_SETTINGS', payload: { newForm: FormSystemForm } } + | { type: 'CHANGE_NAME'; payload: { lang: 'en' | 'is'; newValue: string } } + | { + type: 'CHANGE_FORM_NAME' + payload: { lang: 'en' | 'is'; newValue: string } + } + | { type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE'; payload: { value: number } } + | { type: 'CHANGE_INVALIDATION_DATE'; payload: { value: Date } } + | { + type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP' + payload: { value: boolean } + } + | { type: 'CHANGE_FORM_SETTINGS'; payload: { newForm: FormSystemForm } } + | { + type: 'TOGGLE_DEPENDENCY' + payload: { + activeId: string + itemId: string + update: (updatedForm: FormSystemForm) => void + } + } + | { + type: 'TOGGLE_MULTI_SET' + payload: { + checked: boolean + update: (updatedActiveItem?: ActiveItem) => void + } + } type InputSettingsActions = - | { type: 'SET_MESSAGE_WITH_LINK_SETTINGS', payload: { property: 'buttonText' | 'url' | 'hasLink', value?: string, checked?: boolean, lang?: 'is' | 'en', update?: (updatedActiveItem?: ActiveItem) => void } } - | { type: 'SET_FILE_UPLOAD_SETTINGS', payload: { property: 'isMulti' | 'maxSize' | 'amount' | 'types', checked?: boolean, value?: string | number, update: (updatedActiveItem?: ActiveItem) => void } } - | { type: 'SET_INPUT_SETTINGS', payload: { property: 'isLarge', value: boolean, update: (updatedActiveItem?: ActiveItem) => void } } - | { type: 'SET_LIST_ITEM_SELECTED', payload: { guid: UniqueIdentifier, update: (updatedActiveItem?: ActiveItem) => void } } - | { type: 'REMOVE_LIST_ITEM', payload: { guid: UniqueIdentifier, update: (updatedActiveItem?: ActiveItem) => void } } - | { type: 'CHANGE_LIST_ITEM', payload: { property: 'label' | 'description', lang: 'is' | 'en', value: string, guid: UniqueIdentifier, update: (updatedActiveItem?: ActiveItem) => void } } + | { + type: 'SET_MESSAGE_WITH_LINK_SETTINGS' + payload: { + property: 'buttonText' | 'url' | 'hasLink' + value?: string + checked?: boolean + lang?: 'is' | 'en' + update?: (updatedActiveItem?: ActiveItem) => void + } + } + | { + type: 'SET_FILE_UPLOAD_SETTINGS' + payload: { + property: 'isMulti' | 'maxSize' | 'amount' | 'types' + checked?: boolean + value?: string | number + update: (updatedActiveItem?: ActiveItem) => void + } + } + | { + type: 'SET_INPUT_SETTINGS' + payload: { + property: 'isLarge' + value: boolean + update: (updatedActiveItem?: ActiveItem) => void + } + } + | { + type: 'SET_LIST_ITEM_SELECTED' + payload: { + guid: UniqueIdentifier + update: (updatedActiveItem?: ActiveItem) => void + } + } + | { + type: 'REMOVE_LIST_ITEM' + payload: { + guid: UniqueIdentifier + update: (updatedActiveItem?: ActiveItem) => void + } + } + | { + type: 'CHANGE_LIST_ITEM' + payload: { + property: 'label' | 'description' + lang: 'is' | 'en' + value: string + guid: UniqueIdentifier + update: (updatedActiveItem?: ActiveItem) => void + } + } | { type: 'ADD_LIST_ITEM' } - -export type ControlAction = ActiveItemActions | GroupActions | InputActions | StepActions | DndActions | ChangeActions | InputSettingsActions +export type ControlAction = + | ActiveItemActions + | GroupActions + | InputActions + | StepActions + | DndActions + | ChangeActions + | InputSettingsActions export interface ControlState { activeItem: ActiveItem @@ -59,20 +170,22 @@ export interface ControlState { form: FormSystemForm } -export const controlReducer = (state: ControlState, action: ControlAction): ControlState => { +export const controlReducer = ( + state: ControlState, + action: ControlAction, +): ControlState => { const { form, activeItem } = state const { stepsList: steps, groupsList: groups, inputsList: inputs } = form switch (action.type) { case 'SET_ACTIVE_ITEM': - console.log('current active item', action.payload.activeItem) return { ...state, - activeItem: action.payload.activeItem + activeItem: action.payload.activeItem, } case 'SET_ACTIVE_LIST_ITEM': { return { ...state, - activeListItem: action.payload.listItem + activeListItem: action.payload.listItem, } } // Steps @@ -81,21 +194,23 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, activeItem: { type: 'Step', - data: action.payload.step + data: action.payload.step, }, form: { ...form, - stepsList: [...(steps || []), action.payload.step] - } + stepsList: [...(steps || []), action.payload.step], + }, } case 'REMOVE_STEP': { - const newSteps = state.form.stepsList?.filter((step) => step?.id !== action.payload.stepId) + const newSteps = state.form.stepsList?.filter( + (step) => step?.id !== action.payload.stepId, + ) return { ...state, form: { ...form, - stepsList: newSteps - } + stepsList: newSteps, + }, } } @@ -105,69 +220,76 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, activeItem: { type: 'Group', - data: action.payload.group + data: action.payload.group, }, form: { ...form, - groupsList: [...(groups || []), action.payload.group] - } + groupsList: [...(groups || []), action.payload.group], + }, } case 'REMOVE_GROUP': { - const newGroups = state.form.groupsList?.filter((group) => group?.id !== action.payload.groupId) + const newGroups = state.form.groupsList?.filter( + (group) => group?.id !== action.payload.groupId, + ) const currentItem = state.activeItem.data as FormSystemGroup - const newActiveItem = state.form.stepsList?.find((step) => step?.guid === currentItem.stepGuid) + const newActiveItem = state.form.stepsList?.find( + (step) => step?.guid === currentItem.stepGuid, + ) return { ...state, activeItem: { type: 'Step', - data: newActiveItem + data: newActiveItem, }, form: { ...form, - groupsList: newGroups - } + groupsList: newGroups, + }, } } // Inputs case 'ADD_INPUT': - console.log('adding input reducer', action.payload.input) return { ...state, activeItem: { type: 'Input', - data: action.payload.input + data: action.payload.input, }, form: { ...form, - inputsList: [...(inputs || []), action.payload.input] - } + inputsList: [...(inputs || []), action.payload.input], + }, } case 'REMOVE_INPUT': { - const newInputs = state.form.inputsList?.filter((input) => input?.id !== action.payload.inputId) + const newInputs = state.form.inputsList?.filter( + (input) => input?.id !== action.payload.inputId, + ) const currentItem = state.activeItem.data as FormSystemInput - const newActiveItem = state.form.groupsList?.find((group) => group?.guid === currentItem.groupGuid) + const newActiveItem = state.form.groupsList?.find( + (group) => group?.guid === currentItem.groupGuid, + ) return { ...state, activeItem: { type: 'Group', - data: newActiveItem + data: newActiveItem, }, form: { ...form, - inputsList: newInputs - } + inputsList: newInputs, + }, } } case 'CHANGE_INPUT_TYPE': { - const { newValue, inputSettings, update } = action.payload; + const { newValue, inputSettings, update } = action.payload const newActive = { ...activeItem, data: { ...activeItem.data, type: newValue, - inputSettings: removeTypename(inputSettings) - } + inputSettings: removeTypename(inputSettings), + }, } update(newActive) return { @@ -175,8 +297,10 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont activeItem: newActive, form: { ...form, - inputsList: inputs?.map(i => i?.guid === activeItem.data?.guid ? newActive.data : i) - } + inputsList: inputs?.map((i) => + i?.guid === activeItem.data?.guid ? newActive.data : i, + ), + }, } } case 'CHANGE_DESCRIPTION': { @@ -188,28 +312,29 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...currentData, description: { ...currentData?.description, - [lang]: newValue - } - } - }; + [lang]: newValue, + }, + }, + } return { ...state, activeItem: newActive, form: { ...form, - inputsList: inputs?.map(i => i?.guid === currentData?.guid ? newActive.data : i) - } + inputsList: inputs?.map((i) => + i?.guid === currentData?.guid ? newActive.data : i, + ), + }, } } case 'CHANGE_IS_REQUIRED': { const currentData = activeItem.data as FormSystemInput - console.log(currentData) const newActive = { ...activeItem, data: { ...currentData, - isRequired: !currentData?.isRequired - } + isRequired: !currentData?.isRequired, + }, } action.payload.update(newActive) return { @@ -217,55 +342,72 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont activeItem: newActive, form: { ...form, - inputsList: inputs?.map(i => i?.guid === currentData?.guid ? newActive.data : i) - } + inputsList: inputs?.map((i) => + i?.guid === currentData?.guid ? newActive.data : i, + ), + }, } } // Change case 'CHANGE_NAME': { - const { lang, newValue } = action.payload; + const { lang, newValue } = action.payload const newActive = { ...activeItem, data: { ...activeItem.data, name: { ...activeItem.data?.name, - [lang]: newValue - } - } - }; - const { type } = activeItem; - let updatedList; + [lang]: newValue, + }, + }, + } + const { type } = activeItem + let updatedList if (type === 'Step') { - updatedList = steps?.map(s => s?.guid === activeItem.data?.guid ? newActive.data : s); + updatedList = steps?.map((s) => + s?.guid === activeItem.data?.guid ? newActive.data : s, + ) } else if (type === 'Group') { - updatedList = groups?.map(g => g?.guid === activeItem.data?.guid ? newActive.data : g); + updatedList = groups?.map((g) => + g?.guid === activeItem.data?.guid ? newActive.data : g, + ) } else if (type === 'Input') { - updatedList = inputs?.map(i => i?.guid === activeItem.data?.guid ? newActive.data : i); + updatedList = inputs?.map((i) => + i?.guid === activeItem.data?.guid ? newActive.data : i, + ) } return { ...state, activeItem: newActive, form: { ...form, - stepsList: type === 'Step' ? updatedList as FormSystemStep[] : form.stepsList, - groupsList: type === 'Group' ? updatedList as FormSystemGroup[] : form.groupsList, - inputsList: type === 'Input' ? updatedList as FormSystemInput[] : form.inputsList - } + stepsList: + type === 'Step' + ? (updatedList as FormSystemStep[]) + : form.stepsList, + groupsList: + type === 'Group' + ? (updatedList as FormSystemGroup[]) + : form.groupsList, + inputsList: + type === 'Input' + ? (updatedList as FormSystemInput[]) + : form.inputsList, + }, } } case 'CHANGE_FORM_NAME': { - const { lang, newValue } = action.payload; + const { lang, newValue } = action.payload return { ...state, form: { ...form, name: { ...form.name, - [lang]: newValue - } - } + [lang]: newValue, + }, + }, } } case 'CHANGE_APPLICATION_DAYS_TO_REMOVE': { @@ -273,8 +415,8 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, form: { ...form, - applicationsDaysToRemove: action.payload.value - } + applicationsDaysToRemove: action.payload.value, + }, } } case 'CHANGE_INVALIDATION_DATE': { @@ -282,14 +424,14 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, form: { ...form, - invalidationDate: action.payload.value - } + invalidationDate: action.payload.value, + }, } } case 'CHANGE_FORM_SETTINGS': { return { ...state, - form: action.payload.newForm + form: action.payload.newForm, } } case 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP': { @@ -297,8 +439,57 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, form: { ...form, - stopProgressOnValidatingStep: action.payload.value + stopProgressOnValidatingStep: action.payload.value, + }, + } + } + case 'TOGGLE_DEPENDENCY': { + const { activeId, itemId, update } = action.payload + const dependencies = { ...form.dependencies } ?? {} + if (activeId in dependencies) { + if (!dependencies[activeId].includes(itemId)) { + dependencies[activeId] = [...dependencies[activeId], itemId] + } else { + dependencies[activeId] = dependencies[activeId].filter( + (t: string) => t !== itemId, + ) + if (dependencies[activeId].length === 0) { + delete dependencies[activeId] + } } + } else { + dependencies[activeId] = [itemId] + } + const updatedForm = { + ...form, + dependencies: dependencies, + } + update(updatedForm) + return { + ...state, + form: updatedForm, + } + } + + case 'TOGGLE_MULTI_SET': { + const currentData = activeItem.data as FormSystemGroup + const newActive = { + ...activeItem, + data: { + ...currentData, + multiSet: action.payload.checked ? 1 : 0, + }, + } + action.payload.update(newActive) + return { + ...state, + activeItem: newActive, + form: { + ...form, + groupsList: groups?.map((g) => + g?.guid === currentData?.guid ? newActive.data : g, + ), + }, } } // Input settings @@ -314,12 +505,12 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont [property]: property === 'hasLink' ? checked : value, ...(property === 'buttonText' ? { - buttonText: { - ...input.inputSettings?.buttonText, - [lang]: value + buttonText: { + ...input.inputSettings?.buttonText, + [lang]: value, + }, } - } - : {}) + : {}), }, } if (property === 'hasLink' && update) { @@ -329,12 +520,14 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, activeItem: { type: 'Input', - data: newInput + data: newInput, }, form: { ...form, - inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) - } + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, } } case 'SET_FILE_UPLOAD_SETTINGS': { @@ -342,7 +535,7 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont const { property, checked, value, update } = action.payload const updateFileTypesArray = (): string[] => { - const newFileTypes = input.inputSettings?.types as string[] ?? [] + const newFileTypes = (input.inputSettings?.types as string[]) ?? [] if (checked) { return [...newFileTypes, value as string] } else { @@ -353,22 +546,27 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...input, inputSettings: { ...input.inputSettings, - [property]: property === 'types' ? updateFileTypesArray() : property === 'isMulti' ? checked : value - } + [property]: + property === 'types' + ? updateFileTypesArray() + : property === 'isMulti' + ? checked + : value, + }, } - console.log('property', property, 'value', value, 'checked', checked) - console.log('new input: ', newInput) update({ type: 'Input', data: newInput }) return { ...state, activeItem: { type: 'Input', - data: newInput + data: newInput, }, form: { ...form, - inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) - } + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, } } case 'SET_INPUT_SETTINGS': { @@ -378,20 +576,22 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...input, inputSettings: { ...input.inputSettings, - [property]: value - } + [property]: value, + }, } update({ type: 'Input', data: newInput }) return { ...state, activeItem: { type: 'Input', - data: newInput + data: newInput, }, form: { ...form, - inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) - } + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, } } case 'SET_LIST_ITEM_SELECTED': { @@ -406,21 +606,22 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont l.guid === guid ? { ...l, isSelected: !l.isSelected } : { ...l, isSelected: false }, - ) - } + ), + }, } update({ type: 'Input', data: newInput }) return { ...state, activeItem: { type: 'Input', - data: newInput + data: newInput, }, form: { ...form, - inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) - } - + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, } } case 'REMOVE_LIST_ITEM': { @@ -431,20 +632,22 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...input, inputSettings: { ...input.inputSettings, - list: list.filter((l: FormSystemListItem) => l.guid !== guid) - } + list: list.filter((l: FormSystemListItem) => l.guid !== guid), + }, } update({ type: 'Input', data: newInput }) return { ...state, activeItem: { type: 'Input', - data: newInput + data: newInput, }, form: { ...form, - inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) - } + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, } } case 'ADD_LIST_ITEM': { @@ -461,21 +664,23 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont label: { is: '', en: '' }, description: { is: '', en: '' }, displayOrder: list.length, - isSelected: false - } - ] - } + isSelected: false, + }, + ], + }, } return { ...state, activeItem: { type: 'Input', - data: newInput + data: newInput, }, form: { ...form, - inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) - } + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, } } case 'CHANGE_LIST_ITEM': { @@ -506,33 +711,40 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, activeItem: { type: 'Input', - data: newInput + data: newInput, }, form: { ...form, - inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) - } + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, } } // Drag and Drop case 'STEP_OVER_STEP': { - const activeIndex = steps?.findIndex((step) => step?.guid === action.payload.activeId) as number - const overIndex = steps?.findIndex((step) => step?.guid === action.payload.overId) as number + const activeIndex = steps?.findIndex( + (step) => step?.guid === action.payload.activeId, + ) as number + const overIndex = steps?.findIndex( + (step) => step?.guid === action.payload.overId, + ) as number const updatedSteps = arrayMove(steps || [], activeIndex, overIndex) return { ...state, form: { ...form, - stepsList: updatedSteps.map((s, i) => ({ ...s, displayOrder: i })) - } + stepsList: updatedSteps.map((s, i) => ({ ...s, displayOrder: i })), + }, } } case 'GROUP_OVER_STEP': { - const activeIndex = groups?.findIndex((group) => group?.guid === action.payload.activeId) as number - const overIndex = steps?.findIndex((step) => step?.guid === action.payload.overId) as number - if (groups && steps) { - console.log('active: ', groups[activeIndex], 'over: ', steps[overIndex]) - } + const activeIndex = groups?.findIndex( + (group) => group?.guid === action.payload.activeId, + ) as number + const overIndex = steps?.findIndex( + (step) => step?.guid === action.payload.overId, + ) as number const updatedGroups = groups as FormSystemGroup[] if (steps && steps[overIndex]) { updatedGroups[activeIndex].stepGuid = action.payload.overId as string @@ -542,40 +754,62 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, form: { ...form, - groupsList: arrayMove(updatedGroups, activeIndex, activeIndex).map((g, i) => ({ ...g, displayOrder: i })) - } + groupsList: arrayMove(updatedGroups, activeIndex, activeIndex).map( + (g, i) => ({ ...g, displayOrder: i }), + ), + }, } } case 'GROUP_OVER_GROUP': { - const activeIndex = groups?.findIndex((group) => group?.guid === action.payload.activeId) as number - const overIndex = groups?.findIndex((group) => group?.guid === action.payload.overId) as number + const activeIndex = groups?.findIndex( + (group) => group?.guid === action.payload.activeId, + ) as number + const overIndex = groups?.findIndex( + (group) => group?.guid === action.payload.overId, + ) as number const updatedGroups = groups as FormSystemGroup[] if (updatedGroups[activeIndex] && updatedGroups[overIndex]) { - if (updatedGroups[activeIndex].stepGuid !== updatedGroups[overIndex].stepGuid) { - updatedGroups[activeIndex].stepGuid = updatedGroups[overIndex].stepGuid + if ( + updatedGroups[activeIndex].stepGuid !== + updatedGroups[overIndex].stepGuid + ) { + updatedGroups[activeIndex].stepGuid = + updatedGroups[overIndex].stepGuid updatedGroups[activeIndex].stepId = updatedGroups[overIndex].stepId return { ...state, form: { ...form, - groupsList: arrayMove(updatedGroups, activeIndex, overIndex - 1).map((g, i) => ({ ...g, displayOrder: i })) - } + groupsList: arrayMove( + updatedGroups, + activeIndex, + overIndex - 1, + ).map((g, i) => ({ ...g, displayOrder: i })), + }, } } return { ...state, form: { ...form, - groupsList: arrayMove(updatedGroups, activeIndex, overIndex).map((g, i) => ({ ...g, displayOrder: i })) - } + groupsList: arrayMove(updatedGroups, activeIndex, overIndex).map( + (g, i) => ({ ...g, displayOrder: i }), + ), + }, } } return state } case 'INPUT_OVER_GROUP': { - const activeIndex = inputs?.findIndex((input) => input?.guid === action.payload.activeId) as number - const overIndex = groups?.findIndex((group) => group?.guid === action.payload.overId) as number - const updatedInputs = inputs?.map(input => ({ ...input })) as FormSystemInput[] + const activeIndex = inputs?.findIndex( + (input) => input?.guid === action.payload.activeId, + ) as number + const overIndex = groups?.findIndex( + (group) => group?.guid === action.payload.overId, + ) as number + const updatedInputs = inputs?.map((input) => ({ + ...input, + })) as FormSystemInput[] if (groups && groups[overIndex]) { updatedInputs[activeIndex].groupGuid = action.payload.overId as string updatedInputs[activeIndex].groupId = groups[overIndex]?.id as number @@ -584,32 +818,50 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont ...state, form: { ...form, - inputsList: arrayMove(updatedInputs, activeIndex, overIndex).map((i, index) => ({ ...i, displayOrder: index })) - } + inputsList: arrayMove(updatedInputs, activeIndex, overIndex).map( + (i, index) => ({ ...i, displayOrder: index }), + ), + }, } } case 'INPUT_OVER_INPUT': { - const activeIndex = inputs?.findIndex((input) => input?.guid === action.payload.activeId) as number - const overIndex = inputs?.findIndex((input) => input?.guid === action.payload.overId) as number - const updatedInputs = inputs?.map(input => ({ ...input })) as FormSystemInput[] + const activeIndex = inputs?.findIndex( + (input) => input?.guid === action.payload.activeId, + ) as number + const overIndex = inputs?.findIndex( + (input) => input?.guid === action.payload.overId, + ) as number + const updatedInputs = inputs?.map((input) => ({ + ...input, + })) as FormSystemInput[] if (updatedInputs[activeIndex] && updatedInputs[overIndex]) { - if (updatedInputs[activeIndex].groupGuid !== updatedInputs[overIndex].groupGuid) { - updatedInputs[activeIndex].groupGuid = updatedInputs[overIndex].groupGuid + if ( + updatedInputs[activeIndex].groupGuid !== + updatedInputs[overIndex].groupGuid + ) { + updatedInputs[activeIndex].groupGuid = + updatedInputs[overIndex].groupGuid updatedInputs[activeIndex].groupId = updatedInputs[overIndex].groupId return { ...state, form: { ...form, - inputsList: arrayMove(updatedInputs, activeIndex, overIndex - 1).map((i, index) => ({ ...i, displayOrder: index })) - } + inputsList: arrayMove( + updatedInputs, + activeIndex, + overIndex - 1, + ).map((i, index) => ({ ...i, displayOrder: index })), + }, } } return { ...state, form: { ...form, - inputsList: arrayMove(updatedInputs, activeIndex, overIndex).map((i, index) => ({ ...i, displayOrder: index })) - } + inputsList: arrayMove(updatedInputs, activeIndex, overIndex).map( + (i, index) => ({ ...i, displayOrder: index }), + ), + }, } } return state @@ -621,30 +873,37 @@ export const controlReducer = (state: ControlState, action: ControlAction): Cont if (!list) { return state } - const activeIndex = list.findIndex((item: FormSystemListItem) => item.guid === activeId) - const overIndex = list.findIndex((item: FormSystemListItem) => item.guid === overId) + const activeIndex = list.findIndex( + (item: FormSystemListItem) => item.guid === activeId, + ) + const overIndex = list.findIndex( + (item: FormSystemListItem) => item.guid === overId, + ) const newInput = { ...input, inputSettings: { ...input.inputSettings, - list: arrayMove(list, activeIndex, overIndex).map((l: FormSystemListItem, i: number) => ({ ...l, displayOrder: i })) - } + list: arrayMove(list, activeIndex, overIndex).map( + (l: FormSystemListItem, i: number) => ({ ...l, displayOrder: i }), + ), + }, } return { ...state, activeItem: { type: 'Input', - data: newInput + data: newInput, }, form: { ...form, - inputsList: inputs?.map(i => i?.guid === input.guid ? newInput : i) - } + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, } } default: return state } } - diff --git a/libs/portals/admin/form-system/src/hooks/formReducer.ts b/libs/portals/admin/form-system/src/hooks/formReducer.ts deleted file mode 100644 index 1a1fd6e1a371..000000000000 --- a/libs/portals/admin/form-system/src/hooks/formReducer.ts +++ /dev/null @@ -1,199 +0,0 @@ -/* eslint-disable func-style */ -import { UniqueIdentifier } from '@dnd-kit/core' -import { - ICertificate, - IFormBuilder, - ILanguage, - ITenging, -} from '../types/interfaces' -import { saveFormSettings } from '../services/apiService' - -type ILang = 'is' | 'en' - -type ChangeNameAction = { - type: 'changeName' - payload: { - lang: ILang - newName: string - } -} - -type ApplicationsDaysToRemoveAction = { - type: 'applicationsDaysToRemove' - payload: { - value: number - } -} - -type InvalidationDateAction = { - type: 'invalidationDate' - payload: { - value: Date - } -} - -type StopProgressOnValidatingStepAction = { - type: 'stopProgressOnValidatingStep' - payload: { - value: boolean - } -} - -type AddRemoveConnectionAction = { - type: 'addRemoveConnection' - payload: { - active: UniqueIdentifier - item: UniqueIdentifier - } -} - -type UpdateDocuments = { - type: 'updateDocuments' - payload: { - documents: ICertificate[] - } -} - -type FormSettingsPayload = - | { property: 'invalidationDate'; value: Date } - | { property: 'dependencies'; value: ITenging } - | { property: 'stopProgressOnValidatingStep'; value: boolean } - | { property: 'applicationsDaysToRemove'; value: number } - | { - property: 'formDocumentTypes' - value: { formId: number; documentTypeId: number }[] - } - | { property: 'adilar'; value: string[] } - | { property: 'completedMessage'; value: ILanguage } - | { property: 'isTranslated'; value: boolean } - -type FormSettingsAction = { - type: 'formSettings' - payload: FormSettingsPayload -} - -export type FormAction = - | ChangeNameAction - | ApplicationsDaysToRemoveAction - | InvalidationDateAction - | StopProgressOnValidatingStepAction - | AddRemoveConnectionAction - | FormSettingsAction - | UpdateDocuments - -export function formReducer(formBuilder: IFormBuilder, action: FormAction) { - switch (action.type) { - case 'changeName': { - const { lang, newName } = action.payload - return { - ...formBuilder, - form: { - ...formBuilder.form, - name: { - ...formBuilder.form?.name, - [lang]: newName, - }, - }, - } - } - case 'applicationsDaysToRemove': { - const { value } = action.payload - return { - ...formBuilder, - form: { - ...formBuilder.form, - applicationsDaysToRemove: value, - }, - } - } - case 'invalidationDate': { - const { value } = action.payload - return { - ...formBuilder, - form: { - ...formBuilder.form, - invalidationDate: value, - }, - } - } - case 'stopProgressOnValidatingStep': { - const { value } = action.payload - return { - ...formBuilder, - form: { - ...formBuilder.form, - stopProgressOnValidatingStep: value, - }, - } - } - case 'addRemoveConnection': { - const { active, item } = action.payload - const itemAsString = String(item) - const dependencies = { ...formBuilder.form?.dependencies } - - if (active in dependencies) { - if (!dependencies[active].includes(itemAsString)) { - dependencies[active] = [...dependencies[active], itemAsString] - } else { - dependencies[active] = dependencies[active].filter((t: UniqueIdentifier) => t !== item) - if (dependencies[active].length === 0) { - delete dependencies[active] - } - } - } else { - dependencies[active] = [itemAsString] - } - saveFormSettings(formBuilder.form?.id ?? 0, { - id: formBuilder.form?.id ?? 0, - dependencies: dependencies, - }) - return { - ...formBuilder, - form: { - ...formBuilder.form, - dependencies, - }, - } - } - - case 'formSettings': { - const { property, value } = action.payload - const id = formBuilder.form?.id ?? 0 - saveFormSettings(id, { - id: id, - [property]: value, - }) - return { - ...formBuilder, - form: { - ...formBuilder.form, - [property]: value, - }, - } - } - - case 'updateDocuments': { - const { documents } = action.payload - const saveDocuments = documents.map((d) => { - return { - formId: formBuilder.form?.id ?? 0, - documentTypeId: d.id, - } - }) - saveFormSettings(formBuilder.form?.id ?? 0, { - id: formBuilder.form?.id ?? 0, - formDocumentTypes: saveDocuments, - }) - return { - ...formBuilder, - form: { - ...formBuilder.form, - documentTypes: documents, - }, - } - } - - default: - return formBuilder - } -} diff --git a/libs/portals/admin/form-system/src/hooks/headerInfoReducer.ts b/libs/portals/admin/form-system/src/hooks/headerInfoReducer.ts deleted file mode 100644 index a92d3484df39..000000000000 --- a/libs/portals/admin/form-system/src/hooks/headerInfoReducer.ts +++ /dev/null @@ -1,29 +0,0 @@ -export type FormHeaderAction = - | { type: 'changeOrganization'; payload: { value: string } } - | { type: 'changeApplicationName'; payload: { value: string } } - -export function headerInfoReducer( - info: { - organization: string - applicationName: string - }, - action: FormHeaderAction, -) { - switch (action.type) { - case 'changeOrganization': { - return { - ...info, - organization: action.payload?.value ? action.payload.value : '', - } - } - case 'changeApplicationName': { - return { - ...info, - applicationName: action.payload?.value ? action.payload.value : '', - } - } - default: { - return info - } - } -} diff --git a/libs/portals/admin/form-system/src/hooks/settingsReducer.ts b/libs/portals/admin/form-system/src/hooks/settingsReducer.ts deleted file mode 100644 index 2b1e82a977d9..000000000000 --- a/libs/portals/admin/form-system/src/hooks/settingsReducer.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { FormSystemApplicantType, FormSystemDocumentType, FormSystemInput, FormSystemListType } from "@island.is/api/schema" -import { Maybe } from "graphql/jsutils/Maybe" - - -export type SettingsState = { - applicantTypes: Maybe[]> | undefined - documentTypes: Maybe[]> | undefined - inputTypes: Maybe[]> | undefined - listTypes: Maybe[]> | undefined -} - -export type SettingsAction = - | { type: 'something', payload: 'something' } - -export const settingsReducer = (state: SettingsState, action: SettingsAction): SettingsState => { - - return state -} diff --git a/libs/portals/admin/form-system/src/hooks/useUser.ts b/libs/portals/admin/form-system/src/hooks/useUser.ts deleted file mode 100644 index bee6280737f9..000000000000 --- a/libs/portals/admin/form-system/src/hooks/useUser.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { useSession } from 'next-auth/client' -import { useEffect, useState } from 'react' -import { User } from '../types/interfaces' - -export default function useUser() { - const [user, setUser] = useState() - const [session, loading] = useSession() - - const timeNow = Math.floor(Date.now() / 1000) - const expiryStr = session?.expires ? new Date(session.expires.replace(/['"]+/g, '')).getTime() : undefined - const expiry = Math.floor((expiryStr ?? 0) / 1000) - - const hasNotExpired = timeNow < expiry - - const [isAuthenticated, setIsAuthenticated] = useState( - Boolean(hasNotExpired), - ) - - useEffect(() => { - if (!hasNotExpired) { - setUser(undefined) - setIsAuthenticated(false) - sessionStorage.clear() - } else { - if (!user && session?.user) { - const { name = '', email, image } = session.user || {} - setUser({ name: name || '', email: email || '', image: image || '' }) - setIsAuthenticated(true); - } - } - }, [setUser, session, user]) - - return { - isAuthenticated, - setIsAuthenticated, - user, - setUser, - userLoading: loading, - } -} diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts index c1124066891f..44416d48f081 100644 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ b/libs/portals/admin/form-system/src/lib/messages.ts @@ -1,15 +1,14 @@ -import { defineMessages } from "react-intl"; - +import { defineMessages } from 'react-intl' export const m = defineMessages({ formSystemIntro: { id: 'admin-portal.form-system:formSystemIntro', defaultMessage: 'Umsóknarsmiður', - description: '' + description: '', }, formSystemTitle: { id: 'admin-portal.form-system:Title', defaultMessage: 'Umsóknarsmiður', - description: '' - } + description: '', + }, }) diff --git a/libs/portals/admin/form-system/src/lib/navigation.ts b/libs/portals/admin/form-system/src/lib/navigation.ts index 9d54beeff3b8..82f03d85ffb5 100644 --- a/libs/portals/admin/form-system/src/lib/navigation.ts +++ b/libs/portals/admin/form-system/src/lib/navigation.ts @@ -5,7 +5,7 @@ import { FormSystemPaths } from './paths' export const formSystemNavigation: PortalNavigationItem = { name: m.formSystemTitle, icon: { - icon: 'settings' + icon: 'settings', }, description: m.formSystemIntro, path: FormSystemPaths.FormSystemRoot, @@ -13,7 +13,7 @@ export const formSystemNavigation: PortalNavigationItem = { { name: m.formSystemTitle, path: FormSystemPaths.Form, - activeIfExact: true - } - ] + activeIfExact: true, + }, + ], } diff --git a/libs/portals/admin/form-system/src/lib/utils/fileTypes.ts b/libs/portals/admin/form-system/src/lib/utils/fileTypes.ts index 95269f5716be..87eeeb048704 100644 --- a/libs/portals/admin/form-system/src/lib/utils/fileTypes.ts +++ b/libs/portals/admin/form-system/src/lib/utils/fileTypes.ts @@ -1,15 +1,16 @@ export const fileTypes = { - ".pdf": "application/pdf", - ".doc": "application/msword", - ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - ".txt": "text/plain", - ".jpg": "image/jpeg", - ".jpeg": "image/jpeg", - ".png": "image/png", - ".gif": "image/gif", - ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - ".xls": "application/vnd.ms-excel", - ".csv": "text/csv", - ".zip": "application/zip", - "*": "application/octet-stream" + '.pdf': 'application/pdf', + '.doc': 'application/msword', + '.docx': + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + '.txt': 'text/plain', + '.jpg': 'image/jpeg', + '.jpeg': 'image/jpeg', + '.png': 'image/png', + '.gif': 'image/gif', + '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + '.xls': 'application/vnd.ms-excel', + '.csv': 'text/csv', + '.zip': 'application/zip', + '*': 'application/octet-stream', } diff --git a/libs/portals/admin/form-system/src/lib/utils/interfaces.ts b/libs/portals/admin/form-system/src/lib/utils/interfaces.ts index 3a814ab8ec3f..20bf6ccc41a3 100644 --- a/libs/portals/admin/form-system/src/lib/utils/interfaces.ts +++ b/libs/portals/admin/form-system/src/lib/utils/interfaces.ts @@ -1,6 +1,12 @@ -import { UniqueIdentifier } from "@dnd-kit/core" -import { FormSystemStep, FormSystemGroup, FormSystemInput, FormSystemLanguageType, FormSystemLanguageTypeInput } from "@island.is/api/schema" - +import { UniqueIdentifier } from '@dnd-kit/core' +import { + FormSystemStep, + FormSystemGroup, + FormSystemInput, + FormSystemLanguageType, + FormSystemLanguageTypeInput, + FormSystemListItem, +} from '@island.is/api/schema' export enum NavbarSelectStatus { OFF = 'Off', @@ -32,3 +38,80 @@ export enum EFormApplicantTypes { einstaklingurUmbodsveitandi = 'Einstaklingur_umboðsveitandi', logadili = 'Lögaðili', } + +export interface InputSettings { + hasInput?: boolean + isList?: boolean + isLarge?: boolean + size?: string + interval?: string + list?: FormSystemListItem[] + max?: number + min?: number + maxLength?: number + minLength?: number + amount?: number + isMulti?: boolean + maxSize?: number + types?: string[] + buttonText?: FormSystemLanguageType + hasLink?: boolean + $type?: string + name?: FormSystemLanguageType + [key: string]: unknown +} + +export enum LicenseProviderEnum { + sýslumannsembættið = 1, + leyfisveitanEhf = 2, + leyfisveitanEhf2 = 9, + þjóðskráÍslands = 3, + ferðamálastofa = 4, + ferðamálastofa2 = 52, + menntamálastofnun = 5, + hallaBjörgBaldursdóttir = 6, + fiskistofa = 7, + officeOfDistrictMagistrate = 8, + registersIceland = 10, + icelandicTouristBoard = 11, + directorateOfEducation = 12, + hallaBjorgBaldursdottir = 13, + directorateOfFisheries = 14, + fjármálaOgEfnahagsráðuneytið = 15, + ministryOfFinanceAndEconomicAffairs = 16, + ríkisskattstjóri = 17, + ríkiskaup = 18, + sýslumaðurinnÁHöfuðborgarsvæðinu = 19, + sýslumaðurinnÁHöfuðborgarsvæðinu2 = 50, + theDistrictMagistrateCapitalRegion = 20, + centralPublicProcurement = 21, + directorateOfInternalRevenue = 22, + sýslumaðurinnÁVestfjörðum = 23, + theDistrictMagistrateWestfjords = 24, + útlendingastofnun = 37, + útlendingastofnun2 = 49, + icelandicDirectorateOfImmigration = 38, + utanríkisráðuneytið = 39, + ministryForForeignAffairs = 40, + ríkislögreglustjóri = 41, + ríkislögreglustjóri2 = 71, + sjúkratryggingarÍslands = 42, + sjúkratryggingarÍslands2 = 51, + þjóðskjalasafnÍslands = 43, + þjóðskjalasafnÍslands2 = 44, + sýslumenn = 53, + fjölskylduOgHúsdýragarðurinn = 59, + menntamálastofnun2 = 61, + umhverfisstofnun = 62, + héraðsdómurReykjavíkur = 63, + minjastofnunÍslands = 64, + náttúruhamfaratryggingarÍslands = 65, +} + +export enum ApplicationTemplateStatus { + Þýðing = -2, + Kerfi = -1, + Óútgefið = 0, + Útgefið = 2, + tekiðÚrNotkun = 4, +} diff --git a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts index 144d72b52e65..03e120c2bb8a 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts @@ -1,20 +1,27 @@ -import { ActiveItem } from "./interfaces" -import { useFormSystemUpdateStepMutation } from "../../gql/Step.generated" -import { useFormSystemUpdateGroupMutation } from "../../gql/Group.generated" -import { useFormSystemUpdateInputMutation } from "../../gql/Input.generated" -import { FormSystemStep, FormSystemGroup, FormSystemInput } from "@island.is/api/schema" +import { ActiveItem } from './interfaces' +import { useFormSystemUpdateStepMutation } from '../../gql/Step.generated' +import { useFormSystemUpdateGroupMutation } from '../../gql/Group.generated' +import { useFormSystemUpdateInputMutation } from '../../gql/Input.generated' +import { + FormSystemStep, + FormSystemGroup, + FormSystemInput, +} from '@island.is/api/schema' export const updateActiveItemFn = ( activeItem: ActiveItem, updateStep = useFormSystemUpdateStepMutation()[0], updateGroup = useFormSystemUpdateGroupMutation()[0], updateInput = useFormSystemUpdateInputMutation()[0], - currentActiveItem?: ActiveItem + currentActiveItem?: ActiveItem, ) => { const { type } = activeItem try { if (type === 'Step') { - const { id, name, type, displayOrder, waitingText, callRuleset } = currentActiveItem ? currentActiveItem.data as FormSystemStep : activeItem.data as FormSystemStep + const { id, name, type, displayOrder, waitingText, callRuleset } = + currentActiveItem + ? (currentActiveItem.data as FormSystemStep) + : (activeItem.data as FormSystemStep) updateStep({ variables: { input: { @@ -25,13 +32,16 @@ export const updateActiveItemFn = ( type: type, displayOrder: displayOrder, waitingText: waitingText, - callRuleset: callRuleset - } - } - } + callRuleset: callRuleset, + }, + }, + }, }) } else if (type === 'Group') { - const { id, name, guid, displayOrder, multiSet, stepId } = currentActiveItem ? currentActiveItem.data as FormSystemGroup : activeItem.data as FormSystemGroup + const { id, name, guid, displayOrder, multiSet, stepId } = + currentActiveItem + ? (currentActiveItem.data as FormSystemGroup) + : (activeItem.data as FormSystemGroup) updateGroup({ variables: { input: { @@ -42,7 +52,7 @@ export const updateActiveItemFn = ( guid, displayOrder, multiSet, - stepId + stepId, }, }, }, @@ -58,8 +68,10 @@ export const updateActiveItemFn = ( type, inputSettings, isPartOfMultiSet, - groupId - } = currentActiveItem ? currentActiveItem.data as FormSystemInput : activeItem.data as FormSystemInput + groupId, + } = currentActiveItem + ? (currentActiveItem.data as FormSystemInput) + : (activeItem.data as FormSystemInput) updateInput({ variables: { input: { @@ -78,7 +90,7 @@ export const updateActiveItemFn = ( }, }, }, - }); + }) } } catch (e) { console.error('Error updating active item: ', e) diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index d6c6faed6fcc..6bf8523ae690 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -1,26 +1,23 @@ -import { FormSystemFormInput, FormSystemGroup, FormSystemGroupInput, FormSystemInput, FormSystemInputInput, FormSystemOrganizationInput, FormSystemStepInput, InputMaybe } from "@island.is/api/schema" -import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" -import { ControlState } from "../../hooks/controlReducer" -import { ItemType } from "./interfaces" - +import { FormSystemGroupInput, FormSystemInput } from '@island.is/api/schema' +import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' +import { ControlState } from '../../hooks/controlReducer' +import { ItemType } from './interfaces' export const updateDnd = ( type: ItemType, control: ControlState, - updateForm = useFormSystemUpdateFormMutation()[0] + updateForm = useFormSystemUpdateFormMutation()[0], ) => { - console.log('updating: ', type) const formId = control.form.id if (type === 'Step') { const steps = control.form.stepsList - console.log('steps: ', steps) updateForm({ variables: { input: { formId: formId, form: { - stepsList: steps?.map(s => ({ + stepsList: steps?.map((s) => ({ id: s?.id, guid: s?.guid, displayOrder: s?.displayOrder, @@ -30,61 +27,64 @@ export const updateDnd = ( callRuleset: s?.callRuleset, isHidden: s?.isHidden, isCompleted: s?.isCompleted, - })) - } - } - } + })), + }, + }, + }, }) } else if (type === 'Group') { const groups = control.form.groupsList - console.log('groups: ', groups) updateForm({ variables: { input: { formId: formId, form: { - groupsList: groups?.map(g => ({ - id: g?.id, - name: g?.name, - guid: g?.guid, - displayOrder: g?.displayOrder, - isHidden: (g?.isHidden ?? false) as boolean, - stepId: g?.stepId, - multiSet: g?.multiSet, - stepGuid: g?.stepGuid, - inputs: null - } as FormSystemGroupInput), - ) - } - } - } + groupsList: groups?.map( + (g) => + ({ + id: g?.id, + name: g?.name, + guid: g?.guid, + displayOrder: g?.displayOrder, + isHidden: (g?.isHidden ?? false) as boolean, + stepId: g?.stepId, + multiSet: g?.multiSet, + stepGuid: g?.stepGuid, + inputs: null, + } as FormSystemGroupInput), + ), + }, + }, + }, }) } else if (type === 'Input') { const { inputsList } = control.form - console.log('inputs: ', inputsList) updateForm({ variables: { input: { formId: formId, form: { - inputsList: inputsList?.filter((i): i is FormSystemInput => i !== null && i !== undefined).map(i => ({ - id: i.id, - name: i.name, - description: i.description, - isRequired: i.isRequired ?? false, - displayOrder: i.displayOrder, - isHidden: i.isHidden ?? false, - type: i.type, - inputSettings: i.inputSettings, - isPartOfMultiSet: i.isPartOfMultiSet ?? false, - groupId: i.groupId, - groupGuid: i.groupGuid, - guid: i.guid - }), - ) - } - } - } + inputsList: inputsList + ?.filter( + (i): i is FormSystemInput => i !== null && i !== undefined, + ) + .map((i) => ({ + id: i.id, + name: i.name, + description: i.description, + isRequired: i.isRequired ?? false, + displayOrder: i.displayOrder, + isHidden: i.isHidden ?? false, + type: i.type, + inputSettings: i.inputSettings, + isPartOfMultiSet: i.isPartOfMultiSet ?? false, + groupId: i.groupId, + groupGuid: i.groupGuid, + guid: i.guid, + })), + }, + }, + }, }) } } diff --git a/libs/portals/admin/form-system/src/lib/utils/updateForm.ts b/libs/portals/admin/form-system/src/lib/utils/updateForm.ts index 871c167b0d72..274aea7c258b 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateForm.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateForm.ts @@ -1,63 +1,50 @@ -import { FormSystemForm, FormSystemFormInput, FormSystemGroupInput, FormSystemInputInput, FormSystemOrganizationInput, FormSystemStepInput, InputMaybe } from "@island.is/api/schema" -import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" -import { ControlState } from "../../hooks/controlReducer" - - -export const partialFormUpdate = ( - control: ControlState, - updateForm = useFormSystemUpdateFormMutation()[0], - updatedForm?: FormSystemForm -) => { - const form = updatedForm ? updatedForm : control.form - console.log('updating form: ', form) - updateForm({ - variables: { - input: { - formId: form.id, - form: { - invalidationDate: form.invalidationDate, - name: form.name?.__typename ? { ...form.name, __typename: undefined } : form.name, - stopProgressOnValidatingStep: (form.stopProgressOnValidatingStep ?? false) as boolean, // doesnt save....whyyyy - applicationsDaysToRemove: form.applicationsDaysToRemove, - documentTypes: form.documentTypes?.map(d => ({ - __typename: undefined, - id: d?.id, - type: d?.type, - name: d?.name?.__typename ? { ...d?.name, __typename: undefined } : d?.name, - description: d?.description?.__typename ? { ...d?.description, __typename: undefined } : d?.description, - })), - } - } - } - }) -} +import { + FormSystemForm, + FormSystemFormInput, + FormSystemGroupInput, + FormSystemInputInput, + FormSystemOrganizationInput, + FormSystemStepInput, + InputMaybe, +} from '@island.is/api/schema' +import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' +import { ControlState } from '../../hooks/controlReducer' export const entireFormUpdate = ( control: ControlState, updateForm = useFormSystemUpdateFormMutation()[0], - updatedForm?: FormSystemForm + updatedForm?: FormSystemForm, ) => { const form = updatedForm ? updatedForm : control.form const organiaztionInput: FormSystemOrganizationInput = { ...(form.organization as FormSystemOrganizationInput), } - const inputs: InputMaybe[] = form.inputsList?.filter(input => input !== undefined && input !== null).map(i => ({ - ...i, - isHidden: i?.isHidden ?? false, - isPartOfMultiSet: i?.isPartOfMultiSet ?? false, - isRequired: i?.isRequired ?? false, - })) ?? [] + const inputs: InputMaybe[] = + form.inputsList + ?.filter((input) => input !== undefined && input !== null) + .map((i) => ({ + ...i, + isHidden: i?.isHidden ?? false, + isPartOfMultiSet: i?.isPartOfMultiSet ?? false, + isRequired: i?.isRequired ?? false, + })) ?? [] - const groups: InputMaybe[] = form.groupsList?.filter(group => group !== undefined && group !== null).map(g => ({ - ...g, - inputs: null - })) ?? [] + const groups: InputMaybe[] = + form.groupsList + ?.filter((group) => group !== undefined && group !== null) + .map((g) => ({ + ...g, + inputs: null, + })) ?? [] - const steps: InputMaybe[] = form.stepsList?.filter(step => step !== undefined && step !== null).map(s => ({ - ...s, - groups: null - })) ?? [] + const steps: InputMaybe[] = + form.stepsList + ?.filter((step) => step !== undefined && step !== null) + .map((s) => ({ + ...s, + groups: null, + })) ?? [] const formInput: FormSystemFormInput = { ...form, @@ -65,19 +52,14 @@ export const entireFormUpdate = ( inputsList: inputs, groupsList: groups, stepsList: steps, - steps: null + steps: null, } - console.log('updating form: ', formInput) updateForm({ variables: { input: { formId: form.id, - form: formInput - } - } + form: formInput, + }, + }, }) } - - - - diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts index 18e6a3d33b4e..1575eac1df96 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts @@ -1,20 +1,18 @@ -import { FormSystemForm } from "@island.is/api/schema" -import { useFormSystemUpdateFormSettingsMutation } from "../../gql/FormSettings.generated" -import { ControlState } from "../../hooks/controlReducer" -import { removeTypename } from "./removeTypename" - +import { FormSystemForm } from '@island.is/api/schema' +import { useFormSystemUpdateFormSettingsMutation } from '../../gql/FormSettings.generated' +import { ControlState } from '../../hooks/controlReducer' +import { removeTypename } from './removeTypename' export const updateSettings = ( control: ControlState, updatedForm?: FormSystemForm, - updateFormSettings = useFormSystemUpdateFormSettingsMutation()[0] + updateFormSettings = useFormSystemUpdateFormSettingsMutation()[0], ) => { const form = updatedForm ? updatedForm : control.form const documentTypesInput = form?.documentTypes?.map((dt) => ({ formId: form.id, documentTypeId: dt?.id, })) - console.log('updating form settings: ', form.formApplicantTypes) updateFormSettings({ variables: { input: { @@ -31,8 +29,8 @@ export const updateSettings = ( isTranslated: form.isTranslated, stopProgressOnValidatingStep: form.stopProgressOnValidatingStep, applicationsDaysToRemove: form.applicationsDaysToRemove, - } - } - } + }, + }, + }, }) } diff --git a/libs/portals/admin/form-system/src/module.tsx b/libs/portals/admin/form-system/src/module.tsx index e775a327c911..481951258dc2 100644 --- a/libs/portals/admin/form-system/src/module.tsx +++ b/libs/portals/admin/form-system/src/module.tsx @@ -1,20 +1,18 @@ -import { lazy } from 'react'; +import { lazy } from 'react' import { AdminPortalScope } from '@island.is/auth/scopes' -import { m } from './lib/messages'; +import { m } from './lib/messages' import { PortalModule } from '@island.is/portals/core' import { FormSystemPaths } from './lib/paths' -import { formsLoader } from './screens/Forms/Forms.loader'; -import { formLoader } from './screens/Form/Form.loader'; +import { formsLoader } from './screens/Forms/Forms.loader' +import { formLoader } from './screens/Form/Form.loader' -const Forms = lazy(() => - import('./screens/Forms/Forms') -) +const Forms = lazy(() => import('./screens/Forms/Forms')) const Form = lazy(() => import('./screens/Form/Form')) const allowedScopes: string[] = [ AdminPortalScope.formSystem, - AdminPortalScope.formSystemSuperUser + AdminPortalScope.formSystemSuperUser, ] export const formSystemModule: PortalModule = { @@ -28,14 +26,14 @@ export const formSystemModule: PortalModule = { name: m.formSystemTitle, path: FormSystemPaths.FormSystemRoot, element: , - loader: formsLoader(props) + loader: formsLoader(props), }, { name: m.formSystemIntro, path: FormSystemPaths.Form, element: , - loader: formLoader(props) - } + loader: formLoader(props), + }, ] - } + }, } diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts index e4176ee7aacf..c5659e1a4012 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts @@ -2,15 +2,20 @@ import type { WrappedLoaderFn } from '@island.is/portals/core' import { FormSystemFormResponse } from '@island.is/api/schema' import { ApolloClient, NormalizedCacheObject } from '@apollo/client' -import { FormSystemGetFormDocument, FormSystemGetFormQuery } from '../../gql/Form.generated' -import { FormSystemGetInputDocument, FormSystemGetInputQuery } from '../../gql/Input.generated' +import { + FormSystemGetFormDocument, + FormSystemGetFormQuery, +} from '../../gql/Form.generated' +import { + FormSystemGetInputDocument, + FormSystemGetInputQuery, +} from '../../gql/Input.generated' export interface FormLoaderResponse { - formBuilder: FormSystemFormResponse, + formBuilder: FormSystemFormResponse client: ApolloClient } - export const formLoader: WrappedLoaderFn = ({ client }) => { return async ({ params }): Promise => { if (!params.formId) { @@ -24,7 +29,7 @@ export const formLoader: WrappedLoaderFn = ({ client }) => { input: { id: Number(params.formId), }, - } + }, }) if (formError) { throw formError @@ -37,34 +42,32 @@ export const formLoader: WrappedLoaderFn = ({ client }) => { const formBuilder = formData.formSystemGetForm const updatedInputs = formBuilder.form?.inputsList?.length ? await Promise.all( - formBuilder.form.inputsList.map(async (input) => { - const { data: updatedInput, error: inputError } = - await client.query({ - query: FormSystemGetInputDocument, - fetchPolicy: 'network-only', - variables: { - input: { - id: Number(input?.id), + formBuilder.form.inputsList.map(async (input) => { + const { data: updatedInput, error: inputError } = + await client.query({ + query: FormSystemGetInputDocument, + fetchPolicy: 'network-only', + variables: { + input: { + id: Number(input?.id), + }, }, - }, - }); - return updatedInput?.formSystemGetInput; - }) - ) + }) + return updatedInput?.formSystemGetInput + }), + ) : [] const updatedFormBuilder = { ...formBuilder, form: { ...formBuilder.form, - inputsList: updatedInputs - } + inputsList: updatedInputs, + }, } - - return { formBuilder: updatedFormBuilder as FormSystemFormResponse, - client + client, } } } diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 2e51492b6f8e..2e684c9c1994 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -1,71 +1,79 @@ -import { useLoaderData } from "react-router-dom" -import { useEffect, useReducer, useState } from "react" -import { IListItem, NavbarSelectStatus } from "../../lib/utils/interfaces" -import { FormLoaderResponse } from "./Form.loader" -import { ControlState, controlReducer } from "../../hooks/controlReducer" -import { baseSettingsStep } from "../../utils/getBaseSettingsStep" -import { defaultStep } from "../../utils/defaultStep" -import ControlContext, { IControlContext } from "../../context/ControlContext" +import { useLoaderData } from 'react-router-dom' +import { useReducer, useState } from 'react' +import { NavbarSelectStatus } from '../../lib/utils/interfaces' +import { FormLoaderResponse } from './Form.loader' +import { ControlState, controlReducer } from '../../hooks/controlReducer' +import { baseSettingsStep } from '../../utils/getBaseSettingsStep' +import { defaultStep } from '../../utils/defaultStep' +import ControlContext, { IControlContext } from '../../context/ControlContext' import { GridRow as Row, GridColumn as Column, Box, } from '@island.is/island-ui/core' -import Navbar from "../../components/Navbar/Navbar" -import { FormSystemForm, FormSystemStep } from "@island.is/api/schema" -import MainContent from "../../components/MainContent/MainContent" -import { useFormSystemUpdateGroupMutation } from "../../gql/Group.generated" -import { useFormSystemUpdateStepMutation } from "../../gql/Step.generated" -import { useFormSystemUpdateInputMutation } from "../../gql/Input.generated" -import { updateActiveItemFn } from "../../lib/utils/updateActiveItem" -import { useFormSystemUpdateFormMutation } from "../../gql/Form.generated" -import { ActiveItem, ItemType } from "../../lib/utils/interfaces" -import { updateDnd } from "../../lib/utils/updateDnd" -import { entireFormUpdate, partialFormUpdate } from "../../lib/utils/updateForm" -import { removeTypename } from "../../lib/utils/removeTypename" -import NavbarSelect from "../../components/NavbarSelect/NavbarSelect" -import { useFormSystemUpdateFormSettingsMutation } from "../../gql/FormSettings.generated" -import { updateSettings as us } from "../../lib/utils/updateFormSettings" - - +import Navbar from '../../components/Navbar/Navbar' +import { FormSystemForm, FormSystemStep } from '@island.is/api/schema' +import MainContent from '../../components/MainContent/MainContent' +import { useFormSystemUpdateGroupMutation } from '../../gql/Group.generated' +import { useFormSystemUpdateStepMutation } from '../../gql/Step.generated' +import { useFormSystemUpdateInputMutation } from '../../gql/Input.generated' +import { updateActiveItemFn } from '../../lib/utils/updateActiveItem' +import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' +import { ActiveItem, ItemType } from '../../lib/utils/interfaces' +import { updateDnd } from '../../lib/utils/updateDnd' +import { entireFormUpdate } from '../../lib/utils/updateForm' +import { removeTypename } from '../../lib/utils/removeTypename' +import NavbarSelect from '../../components/NavbarSelect/NavbarSelect' +import { useFormSystemUpdateFormSettingsMutation } from '../../gql/FormSettings.generated' +import { updateSettings as us } from '../../lib/utils/updateFormSettings' const Form = () => { const { formBuilder } = useLoaderData() as FormLoaderResponse - const { form, applicantTypes, documentTypes, inputTypes, listTypes } = formBuilder + const { form, applicantTypes, documentTypes, inputTypes, listTypes } = + formBuilder const [focus, setFocus] = useState('') const [inSettings, setInSettings] = useState(form?.name?.is === '') const [inListBuilder, setInListBuilder] = useState(false) - const [selectStatus, setSelectStatus] = useState(NavbarSelectStatus.OFF) + const [selectStatus, setSelectStatus] = useState( + NavbarSelectStatus.OFF, + ) const [updateStep] = useFormSystemUpdateStepMutation() const [updateGroup] = useFormSystemUpdateGroupMutation() const [updateInput] = useFormSystemUpdateInputMutation() const [updateForm] = useFormSystemUpdateFormMutation() const [updateFormSettings] = useFormSystemUpdateFormSettingsMutation() - const updateActiveItem = (updatedActiveItem?: ActiveItem) => updateActiveItemFn(control.activeItem, updateStep, updateGroup, updateInput, updatedActiveItem) + const updateActiveItem = (updatedActiveItem?: ActiveItem) => + updateActiveItemFn( + control.activeItem, + updateStep, + updateGroup, + updateInput, + updatedActiveItem, + ) const initialControl: ControlState = { activeItem: { type: 'Step', - data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find((s: FormSystemStep) => s?.type === 'Innsláttur') ?? defaultStep + data: inSettings + ? baseSettingsStep + : removeTypename(form?.stepsList)?.find( + (s: FormSystemStep) => s?.type === 'Innsláttur', + ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, } - const [control, controlDispatch] = useReducer(controlReducer, initialControl) - const updateDragAndDrop = (type: ItemType) => updateDnd(type, control, updateForm) + const updateDragAndDrop = (type: ItemType) => + updateDnd(type, control, updateForm) - const updateSettings = (updatedForm?: FormSystemForm) => us(control, updatedForm, updateFormSettings) - const formSettingsUpdate = (updatedForm?: FormSystemForm) => { - if (updatedForm) { - controlDispatch({ type: 'CHANGE_FORM_SETTINGS', payload: { newForm: updatedForm } }) - } - return partialFormUpdate(control, updateForm, updatedForm) - } - const formUpdate = (updatedForm?: FormSystemForm) => entireFormUpdate(control, updateForm, updatedForm) + const updateSettings = (updatedForm?: FormSystemForm) => + us(control, updatedForm, updateFormSettings) + const formUpdate = (updatedForm?: FormSystemForm) => + entireFormUpdate(control, updateForm, updatedForm) const context: IControlContext = { control, @@ -80,24 +88,14 @@ const Form = () => { focus, setFocus, updateDnD: updateDragAndDrop, - formSettingsUpdate, selectStatus, setSelectStatus, formUpdate, inListBuilder, setInListBuilder, - updateSettings + updateSettings, } - - useEffect(() => { - console.log('loaderData form: ', form) - console.log('control: ', control) - console.log('formBuilder: ', formBuilder) - }, []) - - - if (!form) { return
Loading...
} @@ -105,7 +103,11 @@ const Form = () => { - {selectStatus !== NavbarSelectStatus.OFF ? : } + {selectStatus !== NavbarSelectStatus.OFF ? ( + + ) : ( + + )} { } export default Form - - diff --git a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql index b77d578fd2a1..471f5a3c157a 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql +++ b/libs/portals/admin/form-system/src/screens/Forms/CreateForm.graphql @@ -1,7 +1,4 @@ - -mutation formSystemCreateForm( - $input: FormSystemCreateFormInput! -) { +mutation formSystemCreateForm($input: FormSystemCreateFormInput!) { formSystemCreateForm(input: $input) { form { id @@ -73,8 +70,8 @@ mutation formSystemCreateForm( } inputsList { description { - is - en + is + en } displayOrder groupGuid @@ -305,26 +302,25 @@ mutation formSystemCreateForm( type } inputTypes { - description { + description { is en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } } } - diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.graphql b/libs/portals/admin/form-system/src/screens/Forms/Forms.graphql index 62f00817c0eb..ebee346858fb 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.graphql +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.graphql @@ -1,6 +1,4 @@ -query formSystemGetForms( - $input: FormSystemGetFormsInput! -) { +query formSystemGetForms($input: FormSystemGetFormsInput!) { formSystemGetForms(input: $input) { forms { id @@ -17,4 +15,3 @@ query formSystemGetForms( } } } - diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts index e91078d96c05..10c8d9a88f68 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts @@ -1,5 +1,8 @@ import { WrappedLoaderFn } from '@island.is/portals/core' -import { FormSystemGetFormsDocument, FormSystemGetFormsQuery } from './Forms.generated' +import { + FormSystemGetFormsDocument, + FormSystemGetFormsQuery, +} from './Forms.generated' import { FormSystemForm } from '@island.is/api/schema' export interface FormsLoaderResponse { @@ -8,15 +11,14 @@ export interface FormsLoaderResponse { export const formsLoader: WrappedLoaderFn = ({ client }) => { return async (): Promise => { - const { data, error } = - await client.query({ - query: FormSystemGetFormsDocument, - variables: { - input: { - organizationId: 1 - } - } - }) + const { data, error } = await client.query({ + query: FormSystemGetFormsDocument, + variables: { + input: { + organizationId: 1, + }, + }, + }) if (error) { throw error } @@ -24,7 +26,9 @@ export const formsLoader: WrappedLoaderFn = ({ client }) => { throw new Error('No forms were found') } return { - forms: data.formSystemGetForms.forms?.filter((form) => form !== null) as FormSystemForm[] + forms: data.formSystemGetForms.forms?.filter( + (form) => form !== null, + ) as FormSystemForm[], } } } diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index 5386ccb28aff..32f0c3c719ae 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -1,15 +1,9 @@ -import { - Box, - Button, - Text, - Inline -} from '@island.is/island-ui/core' -import { useLoaderData, useNavigate } from 'react-router-dom' +import { Box, Button, Text, Inline } from '@island.is/island-ui/core' +import { useNavigate } from 'react-router-dom' import { FormSystemPaths } from '../../lib/paths' import TableRow from '../../components/TableRow/TableRow' import { useFormSystemGetFormsQuery } from './Forms.generated' import { useFormSystemCreateFormMutation } from './CreateForm.generated' -import { FormsLoaderResponse } from './Forms.loader' const Forms = () => { const navigate = useNavigate() @@ -17,21 +11,20 @@ const Forms = () => { const { data, loading, error } = useFormSystemGetFormsQuery({ variables: { input: { - organizationId: 1 - } - } + organizationId: 1, + }, + }, }) - const [formSystemCreateFormMutation, { data: newData, loading: newLoading, error: newError }] = useFormSystemCreateFormMutation({ + const [formSystemCreateFormMutation] = useFormSystemCreateFormMutation({ variables: { input: { - organizationId: 1 - } - } + organizationId: 1, + }, + }, }) const forms = data?.formSystemGetForms.forms - console.log(data) if (!loading && !error) { return ( @@ -45,9 +38,15 @@ const Forms = () => { variant="ghost" size="medium" onClick={async () => { - const { data } = await formSystemCreateFormMutation({ variables: { input: { organizationId: 1 } } }) - navigate(FormSystemPaths.Form.replace(':formId', String(data?.formSystemCreateForm?.form?.id))) - console.log(data) + const { data } = await formSystemCreateFormMutation({ + variables: { input: { organizationId: 1 } }, + }) + navigate( + FormSystemPaths.Form.replace( + ':formId', + String(data?.formSystemCreateForm?.form?.id), + ), + ) }} > Ný forskrift @@ -72,8 +71,6 @@ const Forms = () => { key={f?.id} id={f?.id} name={f?.name?.is ?? ''} - // created={f?.created} - // lastModified={f?.lastChanged} org={f?.organization?.id} isHeader={false} translated={f?.isTranslated ?? false} diff --git a/libs/portals/admin/form-system/src/services/apiService.tsx b/libs/portals/admin/form-system/src/services/apiService.tsx deleted file mode 100644 index fbdc0f1dd490..000000000000 --- a/libs/portals/admin/form-system/src/services/apiService.tsx +++ /dev/null @@ -1,248 +0,0 @@ -import axios from 'axios' - -import { - IForm, - IFormApplicantType, - IFormBuilder, - IGroup, - IInput, - IInputSettings, - ILanguage, - IStep, - ItemType, -} from '../types/interfaces' -import { groupSchema, stepSchema } from './zodValidation' - -const BASEURL = 'https://profun.island.is/umsoknarkerfi/api' - -export async function getForm(id: unknown): Promise { - try { - const response = await axios.get(`${BASEURL}/Forms/${id}`) - // const validatedFormData: IFormBuilder = formFormBuilderSchema.parse(response.data) - // return validatedFormData - return response.data - } catch (error) { - console.error(error) - throw error - } -} - -export async function updateForm( - form: IForm, - steps: IStep[], - groups: IGroup[], - inputs: IInput[], -) { - const updatedForm: IForm = { - ...form, - stepsList: steps.map((s, i) => { - return { - ...s, - displayOrder: i, - } - }), - groupsList: groups.map((g, i) => { - return { - ...g, - displayOrder: i, - } - }), - inputsList: inputs.map((i, index) => { - return { - ...i, - displayOrder: index, - } - }), - } - - try { - const response = await axios.put( - `${BASEURL}/Forms/${form.id}`, - updatedForm, - { - headers: { - 'Content-Type': 'application/json', - }, - }, - ) - - return response - } catch (error) { - console.error('Error in updateNavbar:', error) - throw error - } -} - -export async function updateItem(type: string, data: IStep | IGroup | IInput) { - const url = `${BASEURL}/${type}s/${data.id}` - - try { - const response = await axios.put(url, data, { - headers: { - 'Content-Type': 'application/json', - }, - }) - - return response - } catch (error) { - console.error('Error in updateItem: ', error) - throw error - } -} - -export async function getNewForm(organisationId: number): Promise { - try { - const response = await axios.post(`${BASEURL}/Forms/${organisationId}`) - return response.data - } catch (error) { - console.error('Error in getNewForm: ', error) - throw error - } -} - -export async function getAllFormsFromOrganisation( - organisationId: number, -): Promise { - try { - const response = await axios.get( - `${BASEURL}/Forms/Organization/${organisationId}`, - ) - return response.data - } catch (error) { - console.error('Error in getAllFormsFromOrganisation: ', error) - throw error - } -} - -export async function addStep( - formId: number, - name: ILanguage, - displayOrder: number, - stepType: number, - waitingText: ILanguage, - callRuleset: boolean, -): Promise { - try { - const response = await axios.post(`${BASEURL}/Steps`, { - formId, - name, - displayOrder, - stepType, - waitingText, - callRuleset, - }) - - const validatedStep: IStep = stepSchema.parse(response.data) - return validatedStep - } catch (error) { - console.error('Error in addStep: ', error) - throw error - } -} - -export async function addGroup( - displayOrder: number, - parentId: number, -): Promise { - try { - const response = await axios.post(`${BASEURL}/Groups`, { - displayOrder: displayOrder, - stepId: parentId, - }) - - const validatedGroup: IGroup = groupSchema.parse(response.data) - - return validatedGroup - } catch (error) { - console.error('Error in addGroup: ', error) - throw error - } -} - -export async function addInput( - displayOrder: number, - parentId: number, -): Promise { - const requestBody = { - displayOrder: displayOrder, - groupId: parentId, - } - - try { - const response = await axios.post(`${BASEURL}/Inputs`, requestBody, { - headers: { - 'Content-Type': 'application/json', - }, - }) - - const data = response.data - - return data - } catch (error) { - console.error('Error in addInput: ', error) - throw error - } -} - -export async function deleteItem(type: ItemType, id: number) { - try { - const response = await axios.delete(`${BASEURL}/${type}s/${id}`) - return response - } catch (error) { - console.error('Error in deleteItem: ', error) - throw error - } -} - -export async function saveFormSettings(id: number, settings: IInputSettings) { - try { - const response = await axios.put( - `${BASEURL}/Forms/${id}/Settings`, - settings, - { - headers: { - 'Content-Type': 'application/json', - }, - }, - ) - return response - } catch (error) { - console.error('Error in saveFormSettings: ', error) - throw error - } -} - -export async function saveApplicantTypes( - id: number, - types: IFormApplicantType[], -) { - const requestData = { - id: id, - formApplicantTypes: types, - } - try { - const response = await axios.put( - `${BASEURL}/Forms/${id}/Settings`, - requestData, - { - headers: { - 'Content-Type': 'application/json', - }, - }, - ) - - return response - } catch (error) { - console.error('Error in saveApplicantTypes: ', error) - throw error - } -} -export async function getList(type: string) { - try { - const response = await axios.get(`${BASEURL}/Services/${type}`) - return response.data - } catch (error) { - console.error('Error in getList: ', error) - throw error - } -} diff --git a/libs/portals/admin/form-system/src/services/translationStation.tsx b/libs/portals/admin/form-system/src/services/translationStation.tsx deleted file mode 100644 index 19be4bae56f2..000000000000 --- a/libs/portals/admin/form-system/src/services/translationStation.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { ITranslationResponse } from '../types/interfaces' -import axios from 'axios' -import dotenv from 'dotenv' - -dotenv.config() - -export const translationStation = async ( - input: string, -): Promise => { - const apiUrl = process.env.MIDEIND_API - const apiKey = process.env.MIDEIND_KEY - - if (!apiUrl || !apiKey) { - throw new Error('API URL or API key is not defined.') - } - - try { - const response = await axios.post( - apiUrl, - { - contents: [input], - sourceLanguageCode: 'is', - targetLanguageCode: 'en', - model: '', - domain: '', - }, - { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - 'X-API-Key': apiKey, - }, - }, - ) - - return response.data - } catch (error) { - console.error('Error in translationStation: ', error) - throw error - } -} diff --git a/libs/portals/admin/form-system/src/services/zodValidation.ts b/libs/portals/admin/form-system/src/services/zodValidation.ts deleted file mode 100644 index bc94f18f8e08..000000000000 --- a/libs/portals/admin/form-system/src/services/zodValidation.ts +++ /dev/null @@ -1,193 +0,0 @@ -import { z } from 'zod' -import { EFormApplicantTypes } from '../types/enums' -import { - IApplicantType, - ICertificate, - IForm, - IFormApplicantType, - IFormBuilder, - IGroup, - IInput, - IInputSettings, - IInputType, - IListType, - IStep, - ITenging, -} from '../types/interfaces' - -const languageSchema = z.object({ - is: z.string(), - en: z.string(), -}) - -const dependencySchema = z.record(z.array(z.string())) as z.ZodSchema - -const inputSettingsSchema = z.object({ - $type: z.string().optional(), - isLarge: z.boolean().optional(), - size: z.enum(['xs', 'sm', 'md']), - interval: z.string().optional(), - erHlekkur: z.boolean().optional(), - url: z.string().optional(), - hnapptexti: languageSchema.optional(), - tegundir: z.array(z.string()).optional(), - hamarksstaerd: z.number().optional(), - erFjolval: z.boolean().optional(), - fjoldi: z.number().optional(), - header: z.string().optional(), - hamarkslengd: z.number().optional(), - lagmarkslengd: z.number().optional(), - laggildi: z.number().optional(), - hagildi: z.number().optional(), - listi: z - .array( - z.object({ - guid: z.string(), - label: languageSchema, - description: languageSchema, - displayOrder: z.number(), - isSelected: z.boolean(), - }), - ) - .optional(), - type: z.string().optional(), - name: languageSchema.optional(), - erListi: z.boolean().optional(), - erInnslattur: z.boolean().optional(), -}) as z.ZodSchema - -export const inputSchema = z.object({ - id: z.number(), - name: languageSchema, - description: languageSchema, - isRequired: z.boolean(), - displayOrder: z.number(), - groupId: z.number(), - groupGuid: z.string(), - isHidden: z.boolean(), - type: z.string(), - guid: z.string(), - inputFields: z.record(z.any()), - inputSettings: inputSettingsSchema, - isPartOfMultiSet: z.boolean(), -}) as z.ZodSchema - -export const groupSchema = z.object({ - id: z.number(), - name: languageSchema, - guid: z.string(), - displayOrder: z.number(), - isHidden: z.boolean(), - multiSet: z.number(), - stepId: z.number(), - stepGuid: z.string(), - inputs: z.array(inputSchema), -}) as z.ZodSchema - -export const stepSchema = z.object({ - id: z.number(), - guid: z.string(), - displayOrder: z.number(), - name: languageSchema, - type: z.string(), - waitingText: languageSchema, - callRuleset: z.boolean(), - isHidden: z.boolean(), - isCompleted: z.boolean(), - groups: z.array(groupSchema), -}) as z.ZodSchema - -const certificateSchema = z.object({ - id: z.number(), - type: z.string(), - name: languageSchema, - description: languageSchema, -}) as z.ZodSchema - -const applicantTypesSchema = z.enum([ - EFormApplicantTypes.einstaklingur, - EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, - EFormApplicantTypes.einstaklingurMedUmbodLogadila, - EFormApplicantTypes.einstaklingurMedProkuru, - EFormApplicantTypes.einstaklingurUmbodsveitandi, - EFormApplicantTypes.logadili, -]) - -const formApplicantSchema = z.object({ - formId: z.number(), - applicantTypeId: z.number(), - name: languageSchema, - type: applicantTypesSchema, -}) as z.ZodSchema - -export const formSchema = z.object({ - id: z.number(), - name: languageSchema, - organization: z.object({ - id: z.number(), - name: languageSchema, - kennitala: z.string(), - scope: z.string(), - xroadBaseUrl: z.string(), - }), - created: z.date(), - lastChanged: z.date(), - invalidationDate: z.date().optional(), - dependencies: dependencySchema, - stepsList: z.array(stepSchema).default([]), - groupsList: z.array(groupSchema).default([]), - inputsList: z.array(inputSchema).default([]), - stopProgressOnValidatingStep: z.boolean(), - applicationsDaysToRemove: z.number(), - isTranslated: z.boolean(), - documentTypes: z.array(certificateSchema), - formApplicantTypes: z.array(formApplicantSchema), -}) as z.ZodSchema - -const inputTypeSchema = z.object({ - type: z.string(), - name: z.string(), - description: z.string(), - organizations: z.array(z.number()).optional(), - inputFields: z.object({}).optional(), - inputMetadata: z.object({}).optional(), - ruleset: z.object({}).optional(), - inputSettings: inputSettingsSchema, -}) as z.ZodSchema - -const applicantTypeSchema = z.object({ - id: z.number(), - name: languageSchema, - type: applicantTypesSchema, - nameSuggestions: z.array( - z.object({ - applicantTypeId: z.number(), - nameSuggestion: languageSchema, - }), - ), -}) as z.ZodSchema - -const listTypeSchema = z.object({ - id: z.number(), - type: z.string(), - name: languageSchema, - description: languageSchema, -}) as z.ZodSchema - -export const formsFormBuilderSchema = z.object({ - forms: z.array(formSchema), - form: formSchema.optional(), - documentTypes: z.array(certificateSchema).optional(), - inputTypes: z.array(inputTypeSchema).optional(), - applicantTypes: z.array(applicantTypeSchema).optional(), - listTypes: z.array(listTypeSchema).optional(), -}) as z.ZodSchema - -export const formFormBuilderSchema = z.object({ - forms: z.null(), - form: formSchema, - documentTypes: z.array(certificateSchema), - inputTypes: z.array(inputTypeSchema), - applicantTypes: z.array(applicantTypeSchema), - listTypes: z.array(listTypeSchema), -}) as z.ZodSchema diff --git a/libs/portals/admin/form-system/src/types/enums/index.tsx b/libs/portals/admin/form-system/src/types/enums/index.tsx deleted file mode 100644 index fadfab2e4e4a..000000000000 --- a/libs/portals/admin/form-system/src/types/enums/index.tsx +++ /dev/null @@ -1,100 +0,0 @@ -export enum ApplicationTemplateStatus { - Þýðing = -2, - Kerfi = -1, - Óútgefið = 0, - Útgefið = 2, - tekiðÚrNotkun = 4, -} - -export enum LicenseProviderEnum { - sýslumannsembættið = 1, - leyfisveitanEhf = 2, - leyfisveitanEhf2 = 9, - þjóðskráÍslands = 3, - ferðamálastofa = 4, - ferðamálastofa2 = 52, - menntamálastofnun = 5, - hallaBjörgBaldursdóttir = 6, - fiskistofa = 7, - officeOfDistrictMagistrate = 8, - registersIceland = 10, - icelandicTouristBoard = 11, - directorateOfEducation = 12, - hallaBjorgBaldursdottir = 13, - directorateOfFisheries = 14, - fjármálaOgEfnahagsráðuneytið = 15, - ministryOfFinanceAndEconomicAffairs = 16, - ríkisskattstjóri = 17, - ríkiskaup = 18, - sýslumaðurinnÁHöfuðborgarsvæðinu = 19, - sýslumaðurinnÁHöfuðborgarsvæðinu2 = 50, - theDistrictMagistrateCapitalRegion = 20, - centralPublicProcurement = 21, - directorateOfInternalRevenue = 22, - sýslumaðurinnÁVestfjörðum = 23, - theDistrictMagistrateWestfjords = 24, - útlendingastofnun = 37, - útlendingastofnun2 = 49, - icelandicDirectorateOfImmigration = 38, - utanríkisráðuneytið = 39, - ministryForForeignAffairs = 40, - ríkislögreglustjóri = 41, - ríkislögreglustjóri2 = 71, - sjúkratryggingarÍslands = 42, - sjúkratryggingarÍslands2 = 51, - þjóðskjalasafnÍslands = 43, - þjóðskjalasafnÍslands2 = 44, - sýslumenn = 53, - fjölskylduOgHúsdýragarðurinn = 59, - menntamálastofnun2 = 61, - umhverfisstofnun = 62, - héraðsdómurReykjavíkur = 63, - minjastofnunÍslands = 64, - náttúruhamfaratryggingarÍslands = 65, -} - -export enum FileTypeEnum { - PDF, - Image, - Xls, - ALL, -} - -export enum EInputType { - Textalínubox = 1, - TextaboxStórt = 2, - Tölustafir = 3, - Textalýsing = 4, - Hakbox = 5, - Dagssetning = 6, - Fellilisti = 7, - Valhnappar = 8, - Heimagistingarnúmer = 9, - FasteignanúmerInnslegið = 10, - FasteignanúmerValiðÚrLista = 11, - Bankareikningsnúmer = 13, - Kennitala = 14, - Greiðandi = 15, - Krónutala = 16, - Krónutölusamtala = 17, - Netfang = 18, - Símanúmer = 19, - FalinnStrengur = 20, - Tími = 21, - Sveitarfélög = 22, - Landalisti = 23, - Póstnúmer = 24, - KennitalaDánarbús = 25, - KennitalaAllt = 26, - Vottorð = 28, - Aðili = 29, -} - -export enum EFormApplicantTypes { - einstaklingur = 'Einstaklingur', - einstaklingurMedUmbodAnnarsEinstaklings = 'Einstaklingur_með_umboð_annars_einstaklings', - einstaklingurMedUmbodLogadila = 'Einstaklingur_með_umboð_lögaðila', - einstaklingurMedProkuru = 'Einstaklingur_með_prókúru', - einstaklingurUmbodsveitandi = 'Einstaklingur_umboðsveitandi', - logadili = 'Lögaðili', -} diff --git a/libs/portals/admin/form-system/src/types/interfaces.tsx b/libs/portals/admin/form-system/src/types/interfaces.tsx deleted file mode 100644 index 9720a3276611..000000000000 --- a/libs/portals/admin/form-system/src/types/interfaces.tsx +++ /dev/null @@ -1,271 +0,0 @@ -import { Dispatch, SetStateAction, FocusEvent } from 'react' -import { UniqueIdentifier } from '@dnd-kit/core' -import { EFormApplicantTypes } from './enums' -import { FormAction } from '../hooks/formReducer' -import { FormHeaderAction } from '../hooks/headerInfoReducer' -import { FormSystemApplicantType, FormSystemDocumentType, FormSystemForm, FormSystemGroup, FormSystemInput, FormSystemLanguageType, FormSystemListItem, FormSystemListType, FormSystemStep } from '@island.is/api/schema' -import { Maybe } from 'graphql/jsutils/Maybe' - -export type IFormBuilderContext = { - // formBuilder: IFormBuilder - // formDispatch: Dispatch - lists: ILists - formUpdate: () => Promise - inSettings: boolean - setInSettings: Dispatch> - setSelectStatus: Dispatch> - selectStatus: NavbarSelectStatus - activeListItem?: IListItem | null - setActiveListItem: Dispatch> - blur(e: FocusEvent): void - onFocus(e: string): void -} - -export interface IInputSettings { - $type?: string - isLarge?: boolean - size?: Sizes - interval?: string - erHlekkur?: boolean - url?: string - hnapptexti?: ILanguage - tegundir?: string[] - hamarksstaerd?: number - erFjolval?: boolean - fjoldi?: number - header?: string - hamarkslengd?: number - lagmarkslengd?: number - laggildi?: number - hagildi?: number - listi?: IListItem[] - type?: string - name?: ILanguage - erListi?: boolean - erInnslattur?: boolean - [key: string]: unknown -} - -export interface IForm { - id: number - name: ILanguage - created: Date - lastChanged: Date - organization: { - id: number - name: ILanguage - kennitala: string - scope: string - xroadBaseUrl: string - } - dependencies: ITenging - stepsList: IStep[] - groupsList: IGroup[] - inputsList: IInput[] - stopProgressOnValidatingStep: boolean - applicationsDaysToRemove: number - invalidationDate?: Date - isTranslated: boolean - documentTypes: ICertificate[] - formApplicantTypes: IFormApplicantType[] -} - -export interface IStep { - id: number - guid: UniqueIdentifier - displayOrder: number - name: ILanguage - type: string - waitingText: ILanguage - callRuleset: boolean - isHidden: boolean - isCompleted: boolean - groups: IGroup[] -} - -export interface IGroup { - id: number - name: ILanguage - guid: UniqueIdentifier - displayOrder: number - isHidden: boolean - multiSet: number - stepId: number - stepGuid: UniqueIdentifier - inputs?: IInput[] -} - -export interface IInput { - id: number - name: ILanguage - description: ILanguage - isRequired: boolean - displayOrder: number - groupId: number - groupGuid: UniqueIdentifier - isHidden: boolean - type: string - guid: UniqueIdentifier - inputFields: object - inputSettings: IInputSettings - isPartOfMultiSet: boolean -} - -export type ILists = { - activeItem: ActiveItem - steps?: Maybe[] - groups?: Maybe[] - inputs?: Maybe[] - [key: string]: unknown -} - -export interface ActiveItem { - type: ItemType - data: Maybe | Maybe | Maybe -} - -export interface ISelectOption { - label: string | number - value: string | number -} - -export interface ITenging { - [key: string]: string[] -} - -export interface IFormBuilder { - form?: Maybe - forms?: Maybe[] | null - documentTypes?: Maybe[]> - inputTypes?: Maybe[]> - applicantTypes?: Maybe[]> - listTypes?: Maybe[]> -} - -export interface IListType { - id: number - type: string - name: ILanguage - description: ILanguage -} - -export interface IListItem { - guid: UniqueIdentifier - label: ILanguage - description: ILanguage - displayOrder: number - isSelected: boolean -} - -export interface ICertificate { - id: number - type: string - name: ILanguage - description: ILanguage -} - -export interface IApplicantType { - id: number - name: ILanguage - type: EFormApplicantTypes - nameSuggestions: { - applicantTypeId: number - nameSuggestion: ILanguage - }[] -} - -export type IFormApplicantType = { - formId: number - applicantTypeId: number - name: ILanguage - type: EFormApplicantTypes -} - -export interface IFormDocumentType { - formId: number - documentTypeId: number -} - -export interface IInputType { - type: string - name: string - description: string - organizations?: [] - inputFields?: object - inputMetadata?: object - ruleset?: object - inputSettings: object -} - -export interface ILayoutContext { - info: { - organization: string - applicationName: string - } - infoDispatch: React.Dispatch -} - -export interface ILicenseProvider { - licenseProviderID: number - kennitala: string - name: string - email: string - phone: string - enabled: boolean - parentId?: number - language: string -} - -export interface ITranslationResponse { - translations: ITranslation[] - sourceLanguageCode: string - targetLanguageCode: string - model: string -} - -export interface ITranslation { - translatedText: string - translatedTextStructured: [string, string][] -} - -export enum NavbarSelectStatus { - OFF = 'Off', - NORMAL = 'Normal', - LIST_ITEM = 'ListItem', - ON_WITHOUT_SELECT = 'OnWithoutSelect', -} - -export type ILanguage = { - is: string - en: string -} -export interface User { - name?: string - email?: string - image?: string -} -type Sizes = 'xs' | 'sm' | 'md' - -export type ItemType = 'Step' | 'Group' | 'Input' - -interface InputSettings { - hasInput?: boolean - isList?: boolean - isLarge?: boolean - size?: string - interval?: string - list?: FormSystemListItem[] - max?: number - min?: number - maxLength?: number - minLength?: number - amount?: number - isMulti?: boolean - maxSize?: number - types?: string[] - buttonText?: FormSystemLanguageType - hasLink?: boolean - $type?: string - name?: FormSystemLanguageType - [key: string]: unknown -} diff --git a/libs/portals/admin/form-system/src/utils/defaultStep.tsx b/libs/portals/admin/form-system/src/utils/defaultStep.tsx index 03d9bb43d8b5..1b8a23e1f2ab 100644 --- a/libs/portals/admin/form-system/src/utils/defaultStep.tsx +++ b/libs/portals/admin/form-system/src/utils/defaultStep.tsx @@ -1,5 +1,4 @@ import { uuid } from 'uuidv4' -import { IStep } from '../types/interfaces' import { FormSystemStep } from '@island.is/api/schema' export const defaultStep: FormSystemStep = { @@ -18,5 +17,5 @@ export const defaultStep: FormSystemStep = { callRuleset: false, isHidden: false, isCompleted: false, - groups: [] + groups: [], } diff --git a/libs/portals/admin/form-system/src/utils/fileTypes.ts b/libs/portals/admin/form-system/src/utils/fileTypes.ts index 1012723154a6..f0fb3c6b738a 100644 --- a/libs/portals/admin/form-system/src/utils/fileTypes.ts +++ b/libs/portals/admin/form-system/src/utils/fileTypes.ts @@ -1,58 +1,59 @@ export const fileTypes = { - ".pdf": "application/pdf", - ".doc": "application/msword", - ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - ".txt": "text/plain", - ".jpg": "image/jpeg", - ".jpeg": "image/jpeg", - ".png": "image/png", - ".gif": "image/gif", - ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - ".xls": "application/vnd.ms-excel", - ".csv": "text/csv", - ".zip": "application/zip", - "*": "application/octet-stream" + '.pdf': 'application/pdf', + '.doc': 'application/msword', + '.docx': + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + '.txt': 'text/plain', + '.jpg': 'image/jpeg', + '.jpeg': 'image/jpeg', + '.png': 'image/png', + '.gif': 'image/gif', + '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + '.xls': 'application/vnd.ms-excel', + '.csv': 'text/csv', + '.zip': 'application/zip', + '*': 'application/octet-stream', } export const fileSizes = [ { - "label": "1 mb", - "value": 1048576 + label: '1 mb', + value: 1048576, }, { - "label": "2 mb", - "value": 2097152 + label: '2 mb', + value: 2097152, }, { - "label": "3 mb", - "value": 3145728 + label: '3 mb', + value: 3145728, }, { - "label": "4 mb", - "value": 4194304 + label: '4 mb', + value: 4194304, }, { - "label": "5 mb", - "value": 5242880 + label: '5 mb', + value: 5242880, }, { - "label": "6 mb", - "value": 6291456 + label: '6 mb', + value: 6291456, }, { - "label": "7 mb", - "value": 7340032 + label: '7 mb', + value: 7340032, }, { - "label": "8 mb", - "value": 8388608 + label: '8 mb', + value: 8388608, }, { - "label": "9 mb", - "value": 9437184 + label: '9 mb', + value: 9437184, }, { - "label": "10 mb", - "value": 10485760 - } + label: '10 mb', + value: 10485760, + }, ] diff --git a/libs/portals/admin/form-system/tsconfig.json b/libs/portals/admin/form-system/tsconfig.json index e0b49829e8f6..c3e941cbe416 100644 --- a/libs/portals/admin/form-system/tsconfig.json +++ b/libs/portals/admin/form-system/tsconfig.json @@ -4,7 +4,7 @@ //"module": "commonjs" "jsx": "react-jsx", "allowJs": true, - "resolveJsonModule": true, + "resolveJsonModule": true }, "files": [], "include": [], From 5f92d533c504583997971f0d6c54441d33760c7d Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 24 Apr 2024 15:56:46 +0000 Subject: [PATCH 030/129] removed form-builder app --- apps/form-builder/.eslintrc.json | 40 - apps/form-builder/.vscode/settings.json | 1 - .../components/AuthProvider/AuthProvider.tsx | 31 - .../components/Layout/Layout.css.ts | 21 - .../form-builder/components/Layout/Layout.tsx | 74 -- .../LicenseProviderDropdown.tsx | 40 - .../MainContent/MainContent.css.tsx | 10 - .../components/MainContent/MainContent.tsx | 137 ---- .../components/BaseSettings/BaseSettings.tsx | 149 ---- .../components/InputContent/InputContent.tsx | 118 --- .../InputContent/components/BaseInput.tsx | 216 ----- .../components/FileUpload/FileUpload.tsx | 137 ---- .../components/FileUpload/fileSizes.json | 44 - .../components/MessageWithLink.tsx | 130 --- .../InputContent/components/NumberInput.tsx | 105 --- .../PropertyNumberInputSettings.tsx | 61 -- .../InputContent/components/TimeInput.tsx | 36 - .../components/ListBuilder/ListBuilder.tsx | 202 ----- .../ListBuilder/components/ListItem.tsx | 334 -------- .../components/ListContent/ListContent.tsx | 99 --- .../components/Payments/Payments.css.ts | 8 - .../components/Payments/Payments.tsx | 55 -- .../components/Premises/Premises.tsx | 63 -- .../components/Preview/Preview.tsx | 110 --- .../Preview/components/Banknumber.tsx | 108 --- .../Preview/components/Currency.tsx | 36 - .../components/Preview/components/Email.tsx | 32 - .../Preview/components/FileUpload.tsx | 66 -- .../components/Preview/components/List.tsx | 30 - .../components/MessageWithLinkButton.tsx | 59 -- .../Preview/components/NationalId.tsx | 21 - .../Preview/components/NumberInput.tsx | 45 -- .../Preview/components/PhoneInput.tsx | 20 - .../PropertyNumber/PropertyNumber.tsx | 27 - .../components/PropertyNumberCombined.tsx | 22 - .../components/PropertyNumberInput.tsx | 42 - .../components/PropertyNumberList.tsx | 54 -- .../PropertyNumber/components/index.ts | 3 - .../components/Preview/components/Radio.tsx | 57 -- .../Preview/components/TimeSelect.tsx | 215 ----- .../UtilizationSummary/UtilizationSummary.tsx | 11 - .../PreviewStepOrGroup/MultiSet/MultiSet.tsx | 59 -- .../PreviewStepOrGroup/PreviewStepOrGroup.tsx | 88 -- .../RelevantParties/RelevantParties.tsx | 285 ------- .../components/FormApplicantType.tsx | 143 ---- .../form-builder/components/Navbar/Navbar.tsx | 327 -------- .../NavComponent/NavComponent.css.ts | 90 --- .../components/NavComponent/NavComponent.tsx | 176 ---- .../NavComponent/components/NavButtons.tsx | 50 -- .../components/NavbarTab/NavbarTab.css.tsx | 17 - .../Navbar/components/NavbarTab/NavbarTab.tsx | 57 -- .../components/NavbarSelect/NavbarSelect.tsx | 62 -- .../components/SelectNavComponent.tsx | 148 ---- .../components/selectNavComponent.css.ts | 90 --- .../components/TableRow/TableRow.css.tsx | 8 - .../components/TableRow/TableRow.tsx | 181 ----- apps/form-builder/components/Tabs/index.tsx | 47 -- apps/form-builder/components/Tabs/tabs.css.ts | 14 - .../TranslationTag/TranslationTag.tsx | 12 - .../context/FormBuilderContext.tsx | 51 -- apps/form-builder/context/LayoutContext.tsx | 14 - apps/form-builder/context/UserContext.tsx | 12 - apps/form-builder/environments/environment.ts | 9 - apps/form-builder/gql/client.ts | 44 - apps/form-builder/gql/httpLink.ts | 14 - apps/form-builder/gql/queries.graphql.ts | 14 - apps/form-builder/gql/retryLink.ts | 11 - apps/form-builder/hooks/fileUploadReducer.ts | 43 - apps/form-builder/hooks/formReducer.ts | 198 ----- apps/form-builder/hooks/headerInfoReducer.ts | 29 - apps/form-builder/hooks/listsReducer.ts | 763 ------------------ apps/form-builder/hooks/useUser.ts | 42 - apps/form-builder/index.d.ts | 6 - apps/form-builder/infra/form-builder.ts | 70 -- apps/form-builder/jest.config.ts | 11 - apps/form-builder/lib/environment.ts | 31 - apps/form-builder/lib/fileTypes.json | 15 - apps/form-builder/next-env.d.ts | 5 - apps/form-builder/next.config.js | 39 - apps/form-builder/pages/Form/[id]/index.tsx | 29 - apps/form-builder/pages/Form/index.tsx | 34 - apps/form-builder/pages/Forms/index.tsx | 22 - apps/form-builder/pages/_app.tsx | 41 - .../pages/api/auth/[...nextauth].ts | 70 -- apps/form-builder/pages/index.tsx | 12 - apps/form-builder/project.json | 108 --- apps/form-builder/proxy.config.json | 6 - apps/form-builder/public/.gitkeep | 0 apps/form-builder/public/favicon.ico | Bin 15086 -> 0 bytes apps/form-builder/screens/Form.tsx | 137 ---- apps/form-builder/screens/Forms.tsx | 58 -- apps/form-builder/screens/index.tsx | 2 - apps/form-builder/server.ts | 12 - apps/form-builder/services/apiService.tsx | 248 ------ .../services/translationStation.tsx | 41 - apps/form-builder/services/zodValidation.ts | 193 ----- apps/form-builder/tsconfig.json | 36 - apps/form-builder/tsconfig.server.json | 11 - apps/form-builder/tsconfig.spec.json | 21 - apps/form-builder/types/enums/index.tsx | 100 --- apps/form-builder/types/interfaces.tsx | 253 ------ apps/form-builder/utils/defaultStep.tsx | 20 - apps/form-builder/utils/formatDate.tsx | 8 - .../utils/getBaseSettingsStep.tsx | 20 - 104 files changed, 7826 deletions(-) delete mode 100644 apps/form-builder/.eslintrc.json delete mode 100644 apps/form-builder/.vscode/settings.json delete mode 100644 apps/form-builder/components/AuthProvider/AuthProvider.tsx delete mode 100644 apps/form-builder/components/Layout/Layout.css.ts delete mode 100644 apps/form-builder/components/Layout/Layout.tsx delete mode 100644 apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx delete mode 100644 apps/form-builder/components/MainContent/MainContent.css.tsx delete mode 100644 apps/form-builder/components/MainContent/MainContent.tsx delete mode 100644 apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx delete mode 100644 apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx delete mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx delete mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/FileUpload.tsx delete mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/fileSizes.json delete mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx delete mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/NumberInput.tsx delete mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/PropertyNumberInputSettings.tsx delete mode 100644 apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx delete mode 100644 apps/form-builder/components/MainContent/components/ListBuilder/ListBuilder.tsx delete mode 100644 apps/form-builder/components/MainContent/components/ListBuilder/components/ListItem.tsx delete mode 100644 apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Payments/Payments.css.ts delete mode 100644 apps/form-builder/components/MainContent/components/Payments/Payments.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Premises/Premises.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/Preview.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Email.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/List.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/MessageWithLinkButton.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/NationalId.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/NumberInput.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PhoneInput.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/PropertyNumber.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberCombined.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberInput.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberList.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/index.ts delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/Radio.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/TimeSelect.tsx delete mode 100644 apps/form-builder/components/MainContent/components/Preview/components/UtilizationSummary/UtilizationSummary.tsx delete mode 100644 apps/form-builder/components/MainContent/components/PreviewStepOrGroup/MultiSet/MultiSet.tsx delete mode 100644 apps/form-builder/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx delete mode 100644 apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx delete mode 100644 apps/form-builder/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx delete mode 100644 apps/form-builder/components/Navbar/Navbar.tsx delete mode 100644 apps/form-builder/components/Navbar/components/NavComponent/NavComponent.css.ts delete mode 100644 apps/form-builder/components/Navbar/components/NavComponent/NavComponent.tsx delete mode 100644 apps/form-builder/components/Navbar/components/NavComponent/components/NavButtons.tsx delete mode 100644 apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.css.tsx delete mode 100644 apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.tsx delete mode 100644 apps/form-builder/components/NavbarSelect/NavbarSelect.tsx delete mode 100644 apps/form-builder/components/NavbarSelect/components/SelectNavComponent.tsx delete mode 100644 apps/form-builder/components/NavbarSelect/components/selectNavComponent.css.ts delete mode 100644 apps/form-builder/components/TableRow/TableRow.css.tsx delete mode 100644 apps/form-builder/components/TableRow/TableRow.tsx delete mode 100644 apps/form-builder/components/Tabs/index.tsx delete mode 100644 apps/form-builder/components/Tabs/tabs.css.ts delete mode 100644 apps/form-builder/components/TranslationTag/TranslationTag.tsx delete mode 100644 apps/form-builder/context/FormBuilderContext.tsx delete mode 100644 apps/form-builder/context/LayoutContext.tsx delete mode 100644 apps/form-builder/context/UserContext.tsx delete mode 100644 apps/form-builder/environments/environment.ts delete mode 100644 apps/form-builder/gql/client.ts delete mode 100644 apps/form-builder/gql/httpLink.ts delete mode 100644 apps/form-builder/gql/queries.graphql.ts delete mode 100644 apps/form-builder/gql/retryLink.ts delete mode 100644 apps/form-builder/hooks/fileUploadReducer.ts delete mode 100644 apps/form-builder/hooks/formReducer.ts delete mode 100644 apps/form-builder/hooks/headerInfoReducer.ts delete mode 100644 apps/form-builder/hooks/listsReducer.ts delete mode 100644 apps/form-builder/hooks/useUser.ts delete mode 100644 apps/form-builder/index.d.ts delete mode 100644 apps/form-builder/infra/form-builder.ts delete mode 100644 apps/form-builder/jest.config.ts delete mode 100644 apps/form-builder/lib/environment.ts delete mode 100644 apps/form-builder/lib/fileTypes.json delete mode 100644 apps/form-builder/next-env.d.ts delete mode 100644 apps/form-builder/next.config.js delete mode 100644 apps/form-builder/pages/Form/[id]/index.tsx delete mode 100644 apps/form-builder/pages/Form/index.tsx delete mode 100644 apps/form-builder/pages/Forms/index.tsx delete mode 100644 apps/form-builder/pages/_app.tsx delete mode 100644 apps/form-builder/pages/api/auth/[...nextauth].ts delete mode 100644 apps/form-builder/pages/index.tsx delete mode 100644 apps/form-builder/project.json delete mode 100644 apps/form-builder/proxy.config.json delete mode 100644 apps/form-builder/public/.gitkeep delete mode 100644 apps/form-builder/public/favicon.ico delete mode 100644 apps/form-builder/screens/Form.tsx delete mode 100644 apps/form-builder/screens/Forms.tsx delete mode 100644 apps/form-builder/screens/index.tsx delete mode 100644 apps/form-builder/server.ts delete mode 100644 apps/form-builder/services/apiService.tsx delete mode 100644 apps/form-builder/services/translationStation.tsx delete mode 100644 apps/form-builder/services/zodValidation.ts delete mode 100644 apps/form-builder/tsconfig.json delete mode 100644 apps/form-builder/tsconfig.server.json delete mode 100644 apps/form-builder/tsconfig.spec.json delete mode 100644 apps/form-builder/types/enums/index.tsx delete mode 100644 apps/form-builder/types/interfaces.tsx delete mode 100644 apps/form-builder/utils/defaultStep.tsx delete mode 100644 apps/form-builder/utils/formatDate.tsx delete mode 100644 apps/form-builder/utils/getBaseSettingsStep.tsx diff --git a/apps/form-builder/.eslintrc.json b/apps/form-builder/.eslintrc.json deleted file mode 100644 index f653743bfa98..000000000000 --- a/apps/form-builder/.eslintrc.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": [ - "plugin:@nx/react-typescript", - "next", - "next/core-web-vitals", - "../../.eslintrc.json" - ], - "ignorePatterns": ["!**/*", ".next/**/*"], - "overrides": [ - { - "files": ["*.*"], - "rules": { - "@next/next/no-html-link-for-pages": "off" - } - }, - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": { - "@next/next/no-html-link-for-pages": [ - "error", - "apps/form-builder/pages" - ] - } - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"], - "env": { - "jest": true - } - } - ] -} diff --git a/apps/form-builder/.vscode/settings.json b/apps/form-builder/.vscode/settings.json deleted file mode 100644 index 0967ef424bce..000000000000 --- a/apps/form-builder/.vscode/settings.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/apps/form-builder/components/AuthProvider/AuthProvider.tsx b/apps/form-builder/components/AuthProvider/AuthProvider.tsx deleted file mode 100644 index c8b54c015ca8..000000000000 --- a/apps/form-builder/components/AuthProvider/AuthProvider.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck -import { ReactNode } from 'react' -import useUser from '../../hooks/useUser' -import UserContext from '../../context/UserContext' -import { User } from '../../types/interfaces' - -interface UserProps { - children: ReactNode -} - -const AuthProvider = ({ children }: UserProps) => { - const { isAuthenticated, setIsAuthenticated, user, setUser, userLoading } = - useUser() - - return ( - - {children} - - ) -} - -export default AuthProvider diff --git a/apps/form-builder/components/Layout/Layout.css.ts b/apps/form-builder/components/Layout/Layout.css.ts deleted file mode 100644 index eb82ed5aa329..000000000000 --- a/apps/form-builder/components/Layout/Layout.css.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { style } from '@vanilla-extract/css' - -export const processContainer = style({ - minHeight: '100vh', -}) - -export const contentContainer = style({ - maxWidth: '100vw', -}) - -export const container = style({ - display: 'flex', - justifyContent: 'center', - height: '100vh', -}) - -export const contentWrapper = style({ - //maxWidth: '1140px', - width: '100%', - padding: '1rem 1rem', -}) diff --git a/apps/form-builder/components/Layout/Layout.tsx b/apps/form-builder/components/Layout/Layout.tsx deleted file mode 100644 index 29987465d433..000000000000 --- a/apps/form-builder/components/Layout/Layout.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { - Header, - Box, - Divider, - GridContainer as Grid, - GridColumn as Column, -} from '@island.is/island-ui/core' -import Head from 'next/head' -import React, { FC, useReducer } from 'react' -import * as styles from './Layout.css' -import { useRouter } from 'next/router' -import { headerInfoReducer } from '../../hooks/headerInfoReducer' -import LayoutContext from '../../context/LayoutContext' - -type LayoutProps = { - children: React.ReactNode -} - -const Layout: FC = ({ children }: LayoutProps) => { - const route = useRouter() - const initialInfo = { - organization: '', - applicationName: '', - } - const [info, dispatch] = useReducer(headerInfoReducer, initialInfo) - const layoutContext = { - info: info, - infoDispatch: dispatch, - } - - return ( - - - - Welcome to licensing-portal! - - - - route.push('/Forms')} - > -
- - - - - - - - - {children} - - - - - - ) -} /* */ - -export default Layout diff --git a/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx b/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx deleted file mode 100644 index 3e133bb81afe..000000000000 --- a/apps/form-builder/components/LicenseProviderDropdown/LicenseProviderDropdown.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Box, Select } from '@island.is/island-ui/core' -import { ILicenseProvider } from '../../types/interfaces' - -interface LicenseProviderDropdownProps { - licenseProviders: ILicenseProvider[] - setSelectProvider: (value: number) => void -} - -function mappedProviders(licenseProviders: ILicenseProvider[]) { - const lp = licenseProviders - .filter((lp) => lp.name.length > 0 && lp.language === 'is') - .map((lp) => ({ - label: lp.name, - value: lp.licenseProviderID, - })) - return lp.sort((a, b) => a.label.localeCompare(b.label)) -} - -export default function LicenseProviderDropdown({ - licenseProviders, - setSelectProvider, -}: LicenseProviderDropdownProps) { - const handleChange = (e: { label: string; value: number }) => { - setSelectProvider(e.value as number) - } - return ( - - - listsDispatch({ - type: 'changeName', - payload: { - lang: 'is', - newValue: e.target.value, - }, - }) - } - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - /> - - - - - - listsDispatch({ - type: 'changeName', - payload: { - lang: 'en', - newValue: e.target.value, - }, - }) - } - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - buttons={[ - { - label: 'translate', - name: 'reader', - onClick: async () => { - const translation = await translationStation( - activeItem.data.name.is, - ) - listsDispatch({ - type: 'changeName', - payload: { - lang: 'en', - newValue: translation.translations[0].translatedText, - }, - }) - }, - }, - ]} - /> - - - {activeItem.type === 'Group' && ( - - - - listsDispatch({ - type: 'setMultiSet', - payload: { - checked: e.target.checked, - }, - }) - } - /> - - - )} - - - - - - - )} - - ) -} diff --git a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx b/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx deleted file mode 100644 index 151dd6e493d8..000000000000 --- a/apps/form-builder/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import { useContext, useState, FocusEvent } from 'react' -import { - Stack, - GridRow as Row, - GridColumn as Column, - Input, - DatePicker, - Checkbox, -} from '@island.is/island-ui/core' -import FormBuilderContext from '../../../../context/FormBuilderContext' -import LayoutContext from '../../../../context/LayoutContext' -import { saveFormSettings } from '../../../../services/apiService' - -export default function BaseSettings() { - const { formBuilder, formDispatch } = useContext(FormBuilderContext) - const { infoDispatch } = useContext(LayoutContext) - const [focus, setFocus] = useState('') - const { - id, - name, - applicationsDaysToRemove, - invalidationDate, - stopProgressOnValidatingStep, - } = formBuilder.form - return ( - - - - setFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => { - formDispatch({ - type: 'changeName', - payload: { - lang: 'is', - newName: e.target.value, - }, - }) - infoDispatch({ - type: 'changeApplicationName', - payload: { - value: e.target.value, - }, - }) - }} - /> - - - setFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => { - formDispatch({ - type: 'changeName', - payload: { - lang: 'en', - newName: e.target.value, - }, - }) - }} - /> - - - - - setFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => { - formDispatch({ - type: 'applicationsDaysToRemove', - payload: { value: e.target.value as unknown as number }, - }) - }} - /> - - - - - { - formDispatch({ - type: 'invalidationDate', - payload: { value: e }, - }) - }} - /> - - - - - { - formDispatch({ - type: 'stopProgressOnValidatingStep', - payload: { value: e.target.checked }, - }) - }} - /> - - - - ) - - function blur(e: FocusEvent) { - if (focus !== e.target.value) { - setFocus('') - const toSave = { - id: id, - name: name, - applicationsDaysToRemove: applicationsDaysToRemove, - invalidationDate: invalidationDate, - stopProgressOnValidatingStep: stopProgressOnValidatingStep, - } - saveFormSettings(id, toSave) - } - } -} diff --git a/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx b/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx deleted file mode 100644 index 338a031a45d4..000000000000 --- a/apps/form-builder/components/MainContent/components/InputContent/InputContent.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { useContext, useState } from 'react' -import { - GridRow as Row, - GridColumn as Column, - Stack, - Input, - Checkbox, - ToggleSwitchCheckbox, - Text, - Button, -} from '@island.is/island-ui/core' -import ListContent from '../ListContent/ListContent' -import Preview from '../Preview/Preview' -import ListBuilder from '../ListBuilder/ListBuilder' -import FormBuilderContext from '../../../../context/FormBuilderContext' -import { IInput, NavbarSelectStatus } from '../../../../types/interfaces' -import BaseInput from './components/BaseInput' -import TimeInput from './components/TimeInput' -import MessageWithLink from './components/MessageWithLink' -import FileUpload from './components/FileUpload/FileUpload' -import NumberInput from './components/NumberInput' -import PropertyNumberInputSettings from './components/PropertyNumberInputSettings' - -export default function InputContent() { - const { formBuilder, lists, selectStatus, setSelectStatus } = - useContext(FormBuilderContext) - - const { activeItem } = lists - const currentItem = activeItem.data as IInput - const { inputSettings } = currentItem - const [inListBuilder, setInListBuilder] = useState(false) - const [isLarge, setIsLarge] = useState(false) - - const hasConnections = - formBuilder.form.dependencies[activeItem.data.guid] !== undefined && - formBuilder.form.dependencies[activeItem.data.guid].length > 0 - - if ( - (inListBuilder && currentItem.type === 'Fellilisti') || - (inListBuilder && currentItem.type === 'Valhnappar') - ) { - return - } - return ( - - - - {/* Additional settings depending on chosen input type */} - {['Hakbox'].includes(currentItem.type) && ( - - - - setSelectStatus( - e ? NavbarSelectStatus.NORMAL : NavbarSelectStatus.OFF, - ) - } - /> - - {hasConnections && ( - - Hefur tengingar - - )} - - )} - {/* List */} - {currentItem.type === 'Fellilisti' && ( - <> - - - )} - {/* Radio buttons */} - {currentItem.type === 'Valhnappar' && ( - - )} - {/* Textlinubox */} - {currentItem.type === 'Textalínubox' && ( - setIsLarge(e.target.checked)} - /> - )} - {/* "Klukkuinnsláttur" */} - {currentItem.type === 'Klukkuinnsláttur' && } - {/* Heimagistingarnúmer */} - {currentItem.type === 'Heimagistingarnúmer' && ( - - - - - - )} - {/* Testing text with linked button */} - {currentItem.type === 'Textalýsing' && } - {/* File upload */} - {currentItem.type === 'Skjal' && } - {currentItem.type === 'Tölustafir' && } - {currentItem.type === 'Fasteignanúmer' && } - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx deleted file mode 100644 index 2fec7e5b5292..000000000000 --- a/apps/form-builder/components/MainContent/components/InputContent/components/BaseInput.tsx +++ /dev/null @@ -1,216 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Select, - Stack, - Input, - Checkbox, - Option, -} from '@island.is/island-ui/core' -import { useContext } from 'react' -import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { - IInput, - IInputSettings, - IInputType, -} from '../../../../../types/interfaces' -import { translationStation } from '../../../../../services/translationStation' -import { SingleValue } from 'react-select' - -export default function BaseInput() { - const { formBuilder, lists, listsDispatch, onFocus, blur } = - useContext(FormBuilderContext) - const { activeItem } = lists - const currentItem = activeItem.data as IInput - const createAndSortOptions = formBuilder.inputTypes - .map((it) => { - return { - label: it.type, - value: it.type, - } - }) - .sort((a, b) => a.label.localeCompare(b.label)) - - const defaultOption = - currentItem.type === '' - ? null - : createAndSortOptions.find((o) => o.value === currentItem.type) - - return ( - - - - - listsDispatch({ - type: 'changeName', - payload: { - lang: 'is', - newValue: e.target.value, - }, - }) - } - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - /> - - - - {/* Name en */} - - - listsDispatch({ - type: 'changeName', - payload: { - lang: 'en', - newValue: e.target.value, - }, - }) - } - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - buttons={[ - { - label: 'translate', - name: 'reader', - onClick: async () => { - const translation = await translationStation( - currentItem.name.is, - ) - listsDispatch({ - type: 'changeName', - payload: { - lang: 'en', - newValue: translation.translations[0].translatedText, - }, - }) - }, - }, - ]} - /> - - - {/* Description */} - {['Textalýsing'].includes(currentItem.type) && ( - <> - - - onFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => - listsDispatch({ - type: 'setDescription', - payload: { - lang: 'is', - newValue: e.target.value, - }, - }) - } - /> - - - - - onFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => - listsDispatch({ - type: 'setDescription', - payload: { - lang: 'en', - newValue: e.target.value, - }, - }) - } - buttons={[ - { - label: 'translate', - name: 'reader', - onClick: async () => { - const translation = await translationStation( - currentItem.description.is, - ) - listsDispatch({ - type: 'setDescription', - payload: { - lang: 'en', - newValue: translation.translations[0].translatedText, - }, - }) - }, - }, - ]} - /> - - - - )} - - {/* Required checkbox */} - - - listsDispatch({ - type: 'setIsRequired', - payload: { - guid: currentItem.guid, - isRequired: e.target.checked, - }, - }) - } - /> - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/FileUpload.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/FileUpload.tsx deleted file mode 100644 index 147c447882fa..000000000000 --- a/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/FileUpload.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Checkbox, - Stack, - Box, - Select, - Text, - Option, -} from '@island.is/island-ui/core' -import { useContext } from 'react' -import FormBuilderContext from '../../../../../../context/FormBuilderContext' -import { IInput } from '../../../../../../types/interfaces' -import fileSizes from './fileSizes.json' -import * as fileTypes from '../../../../../../lib/fileTypes.json' - -export default function FileUpload() { - const { lists, listsDispatch } = useContext(FormBuilderContext) - const { activeItem } = lists - const currentItem = activeItem.data as IInput - const { inputSettings } = currentItem - - const fileSizeOptions = fileSizes.fileSizes.map((size) => ({ - label: size.label, - value: size.value, - })) - - const fileAmountOptions: Option[] = [ - { label: '1', value: 1 }, - { label: '2', value: 2 }, - { label: '3', value: 3 }, - { label: '4', value: 4 }, - { label: '5', value: 5 }, - { label: '6', value: 6 }, - { label: '7', value: 7 }, - { label: '8', value: 8 }, - { label: '9', value: 9 }, - { label: '10', value: 10 }, - ] - - return ( - - - - - listsDispatch({ - type: 'setFileUploadSettings', - payload: { - property: 'erFjolval', - checked: e.target.checked, - }, - }) - } - /> - - - - - f.value === inputSettings.fjoldi, - )} - options={fileAmountOptions} - onChange={(e) => { - listsDispatch({ - type: 'setFileUploadSettings', - payload: { - property: 'fjoldi', - value: e?.value ?? undefined, - }, - }) - }} - /> - - )} - - - - Leyfa eftirfarandi skjalatýpur - - - - {Object.entries(fileTypes).map(([key, value], i) => ( - - {key !== 'default' && ( - - listsDispatch({ - type: 'setFileUploadSettings', - payload: { - property: 'tegundir', - checked: e.target.checked, - value: key, - }, - }) - } - /> - )} - - ))} - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/fileSizes.json b/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/fileSizes.json deleted file mode 100644 index 8cc59c37fe35..000000000000 --- a/apps/form-builder/components/MainContent/components/InputContent/components/FileUpload/fileSizes.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "fileSizes": [ - { - "label": "1 mb", - "value": 1048576 - }, - { - "label": "2 mb", - "value": 2097152 - }, - { - "label": "3 mb", - "value": 3145728 - }, - { - "label": "4 mb", - "value": 4194304 - }, - { - "label": "5 mb", - "value": 5242880 - }, - { - "label": "6 mb", - "value": 6291456 - }, - { - "label": "7 mb", - "value": 7340032 - }, - { - "label": "8 mb", - "value": 8388608 - }, - { - "label": "9 mb", - "value": 9437184 - }, - { - "label": "10 mb", - "value": 10485760 - } - ] -} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx deleted file mode 100644 index fab2b2c45a30..000000000000 --- a/apps/form-builder/components/MainContent/components/InputContent/components/MessageWithLink.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Input, - Checkbox, - Stack, -} from '@island.is/island-ui/core' -import { useContext } from 'react' -import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { IInput } from '../../../../../types/interfaces' -import { translationStation } from '../../../../../services/translationStation' - -export default function MessageWithLink() { - const { lists, listsDispatch, onFocus, blur } = useContext(FormBuilderContext) - const { activeItem } = lists - const currentItem = activeItem.data as IInput - const { inputSettings } = currentItem - return ( - - - - - listsDispatch({ - type: 'setMessageWithLinkSettings', - payload: { - property: 'erHlekkur', - checked: e.target.checked, - }, - }) - } - /> - - - {inputSettings !== undefined ? ( - inputSettings.erHlekkur && ( - - - - { - listsDispatch({ - type: 'setMessageWithLinkSettings', - payload: { - property: 'hnapptexti', - lang: 'is', - value: e.target.value, - }, - }) - }} - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - /> - - - { - listsDispatch({ - type: 'setMessageWithLinkSettings', - payload: { - property: 'hnapptexti', - lang: 'en', - value: e.target.value, - }, - }) - }} - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - buttons={[ - { - label: 'translate', - name: 'reader', - onClick: async () => { - const translation = await translationStation( - inputSettings.hnapptexti?.is ?? '', - ) - listsDispatch({ - type: 'setMessageWithLinkSettings', - payload: { - property: 'hnapptexti', - lang: 'en', - value: translation.translations[0].translatedText, - }, - }) - }, - }, - ]} - /> - - - - - - listsDispatch({ - type: 'setMessageWithLinkSettings', - payload: { - property: 'url', - value: e.target.value, - }, - }) - } - onFocus={(e) => onFocus(e.target.value)} - onBlur={(e) => blur(e)} - /> - - - - ) - ) : ( - <> - )} - - ) -} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/NumberInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/NumberInput.tsx deleted file mode 100644 index 6ba8daea594a..000000000000 --- a/apps/form-builder/components/MainContent/components/InputContent/components/NumberInput.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Input, - Stack, -} from '@island.is/island-ui/core' -import { useContext } from 'react' -import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { IInput } from '../../../../../types/interfaces' - -export default function NumberInput() { - const { lists, listsDispatch, onFocus, blur } = useContext(FormBuilderContext) - const { activeItem } = lists - const currentItem = activeItem.data as IInput - const { inputSettings } = currentItem - - return ( - - - - onFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => - listsDispatch({ - type: 'setNumberInputSettings', - payload: { - property: 'lagmarkslengd', - value: e.target.value as unknown as number, - }, - }) - } - /> - - - onFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => - listsDispatch({ - type: 'setNumberInputSettings', - payload: { - property: 'hamarkslengd', - value: e.target.value as unknown as number, - }, - }) - } - /> - - - - - onFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => - listsDispatch({ - type: 'setNumberInputSettings', - payload: { - property: 'laggildi', - value: e.target.value as unknown as number, - }, - }) - } - /> - - - onFocus(e.target.value)} - onBlur={(e) => blur(e)} - onChange={(e) => - listsDispatch({ - type: 'setNumberInputSettings', - payload: { - property: 'hagildi', - value: e.target.value as unknown as number, - }, - }) - } - /> - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/PropertyNumberInputSettings.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/PropertyNumberInputSettings.tsx deleted file mode 100644 index 83c23d1df331..000000000000 --- a/apps/form-builder/components/MainContent/components/InputContent/components/PropertyNumberInputSettings.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Checkbox, - Stack, -} from '@island.is/island-ui/core' -import { useContext } from 'react' -import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { IInput } from '../../../../../types/interfaces' - -export default function PropertyNumberInputSettings() { - const { lists, listsDispatch } = useContext(FormBuilderContext) - const { activeItem } = lists - const currentItem = activeItem.data as IInput - const { inputSettings: settings } = currentItem - - return ( - - - - - listsDispatch({ - type: 'setInputSettings', - payload: { - inputSettings: { - ...settings, - erListi: e.target.checked, - }, - }, - }) - } - /> - - - - - - listsDispatch({ - type: 'setInputSettings', - payload: { - inputSettings: { - ...settings, - erInnslattur: e.target.checked, - }, - }, - }) - } - /> - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx b/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx deleted file mode 100644 index b047f8c71ed6..000000000000 --- a/apps/form-builder/components/MainContent/components/InputContent/components/TimeInput.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Select, -} from '@island.is/island-ui/core' -import { useContext } from 'react' -import FormBuilderContext from '../../../../../context/FormBuilderContext' - -export default function TimeInput() { - const { listsDispatch } = useContext(FormBuilderContext) - return ( - - - {}} - /> - - - {}} - /> - - - - ) - } - - return ( - - - - { - setConnect(e) - setSelectStatus(() => - e - ? NavbarSelectStatus.LIST_ITEM - : NavbarSelectStatus.ON_WITHOUT_SELECT, - ) - setConnecting((prev) => - prev.map((l, i) => (i === index ? e : false)), - ) - setActiveListItem(e ? listItem : null) - }} - /> - - listsDispatch({ - type: 'setListItemSelected', - payload: { - guid: listItem.guid, - checked: e, - }, - }) - } - /> - - - - listsDispatch({ - type: 'removeListItem', - payload: { - guid: listItem.guid, - }, - }) - } - > - - - - - - - - - - , - ) => onFocus(event.target.value)} - onChange={(e) => - listsDispatch({ - type: 'setListItem', - payload: { - property: 'label', - lang: 'is', - value: e.target.value, - listItemGuid: listItem.guid, - }, - }) - } - /> - - - , - ) => onFocus(event.target.value)} - onChange={(e) => - listsDispatch({ - type: 'setListItem', - payload: { - property: 'label', - lang: 'en', - value: e.target.value, - listItemGuid: listItem.guid, - }, - }) - } - buttons={[ - { - label: 'translate', - name: 'reader', - onClick: async () => { - const translation = await translationStation( - listItem.label.is, - ) - listsDispatch({ - type: 'setListItem', - payload: { - property: 'label', - lang: 'en', - value: translation.translations[0].translatedText, - listItemGuid: listItem.guid, - }, - }) - }, - }, - ]} - /> - - - - {isRadio && ( - - - , - ) => onFocus(event.target.value)} - onChange={(e) => - listsDispatch({ - type: 'setListItem', - payload: { - property: 'description', - lang: 'is', - value: e.target.value, - listItemGuid: listItem.guid, - }, - }) - } - /> - - - , - ) => onFocus(event.target.value)} - onChange={(e) => - listsDispatch({ - type: 'setListItem', - payload: { - property: 'description', - lang: 'en', - value: e.target.value, - listItemGuid: listItem.guid, - }, - }) - } - buttons={[ - { - label: 'translate', - name: 'reader', - onClick: async () => { - const translation = await translationStation( - listItem.description.is, - ) - listsDispatch({ - type: 'setListItem', - payload: { - property: 'description', - lang: 'en', - value: translation.translations[0].translatedText, - listItemGuid: listItem.guid, - }, - }) - }, - }, - ]} - /> - - - )} - - ) -} diff --git a/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx b/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx deleted file mode 100644 index 6f2b386c1e3e..000000000000 --- a/apps/form-builder/components/MainContent/components/ListContent/ListContent.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { - GridColumn as Column, - GridRow as Row, - Select, - Stack, - Box, - Button, - RadioButton, - Option, -} from '@island.is/island-ui/core' -import { Dispatch, SetStateAction, useContext, useState } from 'react' -import FormBuilderContext from '../../../../context/FormBuilderContext' -import { getList } from '../../../../services/apiService' -import { IInput } from '../../../../types/interfaces' -import { SingleValue } from 'react-select' - -type Props = { - setInListBuilder: Dispatch> -} - -const predeterminedLists = [ - { - label: 'Sveitarfélög', - value: 'Sveitarfelog', - }, - { - label: 'Lönd', - value: 'Lond', - }, - { - label: 'Póstnúmer', - value: 'Postnumer', - }, - { - label: 'Iðngreinarmeistara', - value: 'Idngreinarmeistara', - }, -] - -export default function ListContent({ setInListBuilder }: Props) { - const [radio, setRadio] = useState([true, false, false]) - const { lists, listsDispatch } = useContext(FormBuilderContext) - const { activeItem } = lists - return ( - - - - radioHandler(0)}> - - - - - - - radioHandler(1)}> - - - - - {radio[0] && ( - - )} - {radio[1] && ( - - - )} - {data.type === 'Klukkuinnsláttur' && ( - - - - )} - {data.type === 'Krónutölubox' && ( - - - - - - )} - {data.type === 'Heimagistingarnúmer' && ( - - - - )} - {data.type === 'Textalýsing' && ( - - )} - {data.type === 'Netfang' && } - {data.type === 'Skjal' && } - {data.type === 'Símanúmer' && ( - - )} - {data.type === 'Tölustafir' && ( - - )} - {data.type === 'Fellilisti' && } - {data.type === 'Valhnappar' && } - {data.type === 'Fasteignanúmer' && ( - - )} - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx deleted file mode 100644 index f2e49d1954fd..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/Banknumber.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Input, -} from '@island.is/island-ui/core' -import { useRef, useState } from 'react' - -export default function Banknumber() { - const [banki, setBanki] = useState() - const [hb, setHb] = useState() - const [reikningur, setReikningur] = useState() - const inputRefs = [ - useRef(), - useRef(), - useRef(), - ] - - const handleChange = (index: number, value: string) => { - if (index === 0) { - setBanki(value) - if (value.length === 4) { - if (inputRefs[1]?.current) { - inputRefs[1]?.current.focus() - } - } - } else if (index === 1) { - setHb(value) - if (value.length === 2) { - if (inputRefs[2]?.current) { - inputRefs[2]?.current.focus() - } - } - } else if (index === 2) { - if (value.length <= 6) { - setReikningur(value) - } - if (value.length === 6) { - if (inputRefs[2]?.current) { - inputRefs[2]?.current.blur() - } - } - } - } - - const addLeadingZeros = (originalNumber: string, max: number) => { - const zerosToAdd = max - originalNumber.length - if (zerosToAdd <= 0) { - return originalNumber - } - if (originalNumber.length === 0) { - return originalNumber - } - const leadingZeros = '0'.repeat(zerosToAdd) - return leadingZeros + originalNumber - } - - return ( - - - - } - label="Banki" - type="number" - value={banki} - maxLength={4} - name="" - onChange={(e) => handleChange(0, e.target.value)} - onBlur={(e) => setBanki(addLeadingZeros(e.target.value, 4))} - /> - - - - } - label="Hb" - maxLength={2} - type="number" - value={hb} - name="" - onChange={(e) => handleChange(1, e.target.value)} - onBlur={(e) => setHb(addLeadingZeros(e.target.value, 2))} - /> - - - - } - label="Reikningsnúmer" - type="number" - value={reikningur} - name="" - onChange={(e) => handleChange(2, e.target.value)} - onBlur={(e) => setReikningur(addLeadingZeros(e.target.value, 6))} - /> - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx deleted file mode 100644 index e1b9743587f3..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/Currency.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Input, -} from '@island.is/island-ui/core' -import { ChangeEvent, useState } from 'react' - -interface Props { - label: string -} - -export default function Currency({ label }: Props) { - const [currency, setCurrency] = useState('') - const handleCurrencyChange = ( - e: ChangeEvent, - ) => { - // Remove any non-digit characters from the input value - const inputValue = e.target.value.replace(/\D/g, '') - - // Split the input value into groups of three characters - const formattedValue = inputValue.replace(/\B(?=(\d{3})+(?!\d))/g, '.') - setCurrency(formattedValue) - } - return ( - - - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Email.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Email.tsx deleted file mode 100644 index 406f738ab013..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/Email.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { useContext, useState } from 'react' -import { Input, Stack, Text } from '@island.is/island-ui/core' -import FormBuilderContext from '../../../../../context/FormBuilderContext' - -export default function Email() { - const { lists } = useContext(FormBuilderContext) - const { activeItem } = lists - const [email, setEmail] = useState('') - const [hasError, setHasError] = useState(false) - - return ( - - {activeItem.data.name.is} - setEmail(e.target.value)} - onBlur={() => setHasError(isValidEmail())} - errorMessage="Ekki gilt netfang" - hasError={hasError} - /> - - ) - - function isValidEmail(): boolean { - const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ - const res = pattern.test(email) - return !res - } -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx b/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx deleted file mode 100644 index fa972769d3b8..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/FileUpload.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { - InputFileUpload, - UploadFile, - fileToObject, -} from '@island.is/island-ui/core' -import { useState } from 'react' -import { uuid } from 'uuidv4' -import * as fileTypes from '../../../../../lib/fileTypes.json' -import { IInput } from '../../../../../types/interfaces' - -type Props = { - currentItem: IInput -} - -export default function FileUpload({ currentItem }: Props) { - const [error, setError] = useState(undefined) - const [fileList, setFileList] = useState>([]) - - const onChange = (files: File[]) => { - const uploadFiles = files.map((file) => fileToObject(file)) - const uploadFilesWithKey = uploadFiles.map((f) => ({ - ...f, - key: uuid(), - })) - - // Check whether upload will exceed limit and if so, prevent it - const currentAmount = currentItem.inputSettings.fjoldi ?? 0 - if (fileList.length + uploadFilesWithKey.length > currentAmount) { - setError(`Hámarksfjöldi skjala er ${currentItem.inputSettings.fjoldi}`) - return - } - setError('') - const newFileList = [...fileList, ...uploadFilesWithKey] - setFileList(newFileList) - } - - const onRemove = (fileToRemove: UploadFile) => { - const newFileList = fileList.filter((file) => file.key !== fileToRemove.key) - setFileList(newFileList) - } - - return ( - <> - `${f} `, - )}`} - buttonLabel="Veldu skjöl til að hlaða upp" - onChange={onChange} - onRemove={onRemove} - errorMessage={fileList.length > 0 ? error : undefined} - accept={ - currentItem.inputSettings.tegundir?.map( - (t) => fileTypes[t as keyof typeof fileTypes], - ) ?? [] - } - showFileSize - maxSize={currentItem.inputSettings.hamarksstaerd} - multiple={currentItem.inputSettings.erFjolval} - /> - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/List.tsx b/apps/form-builder/components/MainContent/components/Preview/components/List.tsx deleted file mode 100644 index a5cdf3497d6a..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/List.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Select } from '@island.is/island-ui/core' -import { useEffect, useState } from 'react' -import { IInput } from '../../../../../types/interfaces' - -interface Props { - currentItem: IInput -} - -type ListItem = { - label: string - value: string | number -} - -export default function List({ currentItem }: Props) { - const [listItems, setListItems] = useState([]) - useEffect(() => { - const currentList = currentItem.inputSettings.listi ?? [] - setListItems( - currentList.map((l) => ({ - label: l.label.is, - value: l.label.is, - })), - ) - }, [currentItem.inputSettings.listi]) - return ( - <> - - - - - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/NumberInput.tsx b/apps/form-builder/components/MainContent/components/Preview/components/NumberInput.tsx deleted file mode 100644 index a4630b86ff3b..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/NumberInput.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Input } from '@island.is/island-ui/core' -import { useState } from 'react' -import { IInput } from '../../../../../types/interfaces' - -type Props = { - currentItem: IInput -} - -export default function NumberInput({ currentItem }: Props) { - const { - lagmarkslengd: minLength = 0, - hamarkslengd: maxLength = 0, - laggildi: min = 0, - hagildi: max = 0, - } = currentItem.inputSettings - // need to implement saving into listsDispatch - - const [value] = useState('') - const [error, setError] = useState(undefined) - - const changeHandler = (num: number) => { - if (num.toString().length < minLength) { - setError(`Lágmarkslengd er ${minLength}`) - } else if (num.toString().length > maxLength) { - setError(`Hámarkslengd er ${maxLength}`) - } else if (num < min) { - setError(`Lággildi er ${min}`) - } else if (num > max) { - setError(`Hágildi er ${max}`) - } else { - setError(undefined) - } - } - - return ( - changeHandler(parseInt(e.target.value))} - errorMessage={error} - /> - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PhoneInput.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PhoneInput.tsx deleted file mode 100644 index fbad4ea8fea8..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/PhoneInput.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - PhoneInput as Phone, -} from '@island.is/island-ui/core' -import { IInput } from '../../../../../types/interfaces' - -interface Props { - currentItem: IInput -} - -export default function PhoneInput({ currentItem }: Props) { - return ( - - - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/PropertyNumber.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/PropertyNumber.tsx deleted file mode 100644 index 2564264febb6..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/PropertyNumber.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { IInput } from '../../../../../../types/interfaces' -import { - PropertyNumberCombined, - PropertyNumberInput, - PropertyNumberList, -} from './components' - -interface Props { - currentItem: IInput -} - -export default function PropertyNumber({ currentItem }: Props) { - const { inputSettings: settings } = currentItem - const { erListi: hasList, erInnslattur: hasInput } = settings - - return ( - <> - {hasList && !hasInput ? ( - - ) : !hasList && hasInput ? ( - - ) : hasList && hasInput ? ( - - ) : null} - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberCombined.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberCombined.tsx deleted file mode 100644 index 55a549a24809..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberCombined.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Tabs } from '@island.is/island-ui/core' -import PropertyNumberList from './PropertyNumberList' -import PropertyNumberInput from './PropertyNumberInput' - -export default function PropertyNumberCombined() { - return ( - , - }, - { - label: 'Fasteignanúmerinnsláttur', - content: , - }, - ]} - contentBackground="blue100" - /> - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberInput.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberInput.tsx deleted file mode 100644 index 9d3eb0c0c2f5..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberInput.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Stack, - Input, - Box, -} from '@island.is/island-ui/core' -import { useState } from 'react' - -export default function PropertyNumberInput() { - const [propertyNumber, setPropertyNumber] = useState('') - return ( - - - - - setPropertyNumber(e.target.value)} - /> - - - - - - - - - - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberList.tsx b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberList.tsx deleted file mode 100644 index 6de9e63bf2fa..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/PropertyNumberList.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Stack, - Select, - Input, - Box, -} from '@island.is/island-ui/core' - -const dummyList = [ - { - label: 'Fasteign 1', - value: '1', - }, - { - label: 'Fasteign 2', - value: '2', - }, - { - label: 'Fasteign 3', - value: '3', - }, -] - -export default function PropertyNumberList() { - return ( - - - - - - - - - - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/index.ts b/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/index.ts deleted file mode 100644 index a1b1b4d6c4ac..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/PropertyNumber/components/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as PropertyNumberList } from './PropertyNumberList' -export { default as PropertyNumberInput } from './PropertyNumberInput' -export { default as PropertyNumberCombined } from './PropertyNumberCombined' diff --git a/apps/form-builder/components/MainContent/components/Preview/components/Radio.tsx b/apps/form-builder/components/MainContent/components/Preview/components/Radio.tsx deleted file mode 100644 index 7ca9d0360727..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/Radio.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { RadioButton, Text, Box } from '@island.is/island-ui/core' -import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { useContext, useEffect, useState } from 'react' -import { IInput, IListItem } from '../../../../../types/interfaces' - -export default function Radio() { - const { lists } = useContext(FormBuilderContext) - const { activeItem } = lists - const currentItem = activeItem.data as IInput - const radioButtons = currentItem.inputSettings.listi - const [radioChecked, setRadioChecked] = useState([]) - - useEffect(() => { - setRadioChecked(radioButtons?.map(() => false) ?? []) - }, [radioButtons]) - - const radioButton = (rb: IListItem, index: number) => ( - - setRadioChecked((prev) => - prev.map((rb, i) => (i === index ? true : false)), - ) - } - > - - - ) - - return ( - <> - - {currentItem.name.is} - - - {radioButtons?.map((rb, index) => radioButton(rb, index))} - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/TimeSelect.tsx b/apps/form-builder/components/MainContent/components/Preview/components/TimeSelect.tsx deleted file mode 100644 index 4f88d2dbddad..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/TimeSelect.tsx +++ /dev/null @@ -1,215 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Input, - Select, - Box, -} from '@island.is/island-ui/core' -import { ChangeEvent, useContext, useState } from 'react' -import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { IInput } from '../../../../../types/interfaces' - -type Option = { label: string; value: string } - -export default function TimeSelect() { - const { lists } = useContext(FormBuilderContext) - const { activeItem } = lists - const inputItem = activeItem.data as IInput - - const [timeInput, setTimeInput] = useState('') - - // 0: Minute - // 1: Hourly - // 2: Half hour - // 3: Quarter - const chosenMinuteList = (): Option[] => { - const min = minuteList.minuteList.map((t) => { - return { - label: t, - value: t, - } - }) - - if (inputItem?.inputSettings === undefined) { - return min - } else { - const interval = inputItem.inputSettings.interval - - if (interval === 0) { - return min - } else if (interval === 1) { - return [{ label: '00', value: '00' }] - } else if (interval === 2) { - return halfList.minuteList.map((m) => { - return { - label: m, - value: m, - } - }) - } else if (interval === 3) { - return quarterList.minuteList.map((m) => { - return { - label: m, - value: m, - } - }) - } else { - // Handle other cases if needed - return min - } - } - } - - const handleTimeInput = ( - e: ChangeEvent, - ) => { - const inputValue = e.target.value - - const isValidTime = - /^(?:[01]?[0-9]|2[0-3]):[0-5]?[0-9](?::[0-5]?[0-9])?$/.test(inputValue) - setTimeInput(inputValue) - if (isValidTime || inputValue === '') { - setTimeInput(inputValue) - } - } - - return ( - <> - - - - - - handleTimeInput(e)} - /> - - ) -} - -const hourList = { - hourList: [ - '00', - '01', - '02', - '03', - '04', - '05', - '06', - '07', - '08', - '09', - '10', - '11', - '12', - '13', - '14', - '15', - '16', - '17', - '18', - '19', - '20', - '21', - '22', - '23', - ], -} - -const minuteList = { - minuteList: [ - '00', - '01', - '02', - '03', - '04', - '05', - '06', - '07', - '08', - '09', - '10', - '11', - '12', - '13', - '14', - '15', - '16', - '17', - '18', - '19', - '20', - '21', - '22', - '23', - '24', - '25', - '26', - '27', - '28', - '29', - '30', - '31', - '32', - '33', - '34', - '35', - '36', - '37', - '38', - '39', - '40', - '41', - '42', - '43', - '44', - '45', - '46', - '47', - '48', - '49', - '50', - '51', - '52', - '53', - '54', - '55', - '56', - '57', - '58', - '59', - ], -} - -const quarterList = { - minuteList: ['00', '15', '30', '45'], -} - -const halfList = { - minuteList: ['00', '30'], -} diff --git a/apps/form-builder/components/MainContent/components/Preview/components/UtilizationSummary/UtilizationSummary.tsx b/apps/form-builder/components/MainContent/components/Preview/components/UtilizationSummary/UtilizationSummary.tsx deleted file mode 100644 index 9660d754e7b7..000000000000 --- a/apps/form-builder/components/MainContent/components/Preview/components/UtilizationSummary/UtilizationSummary.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import ReactDatePicker from 'react-datepicker' - -export default function UtilizationSummary() { - return ( - console.log(date)} - dateFormat="dd.MM.yyyy" - /> - ) -} diff --git a/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/MultiSet/MultiSet.tsx b/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/MultiSet/MultiSet.tsx deleted file mode 100644 index 966cc1fee76e..000000000000 --- a/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/MultiSet/MultiSet.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { useContext, useState } from 'react' -import { Box, Icon } from '@island.is/island-ui/core' -import Preview from '../../Preview/Preview' -import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { IGroup, IInput } from '../../../../../types/interfaces' - -interface Props { - group: IGroup -} -export default function MultiSet({ group }: Props) { - const { lists } = useContext(FormBuilderContext) - const { inputs } = lists - const originalInput = inputs.filter((i) => i.groupGuid === group.guid) - const [multiInput, setMultiInput] = useState([ - inputs.filter((i) => i.groupGuid === group.guid), - ]) - - return ( - - {multiInput.map((inputArray, index) => ( -
- {inputArray.map((i) => ( - - ))} -
- ))} - - - - - -
- ) - - function add() { - setMultiInput((prev) => [...prev, originalInput]) - } -} diff --git a/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx b/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx deleted file mode 100644 index 7e169c07786e..000000000000 --- a/apps/form-builder/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { Dispatch, SetStateAction, useContext } from 'react' -import { Box, Button, Text } from '@island.is/island-ui/core' -import Preview from '../Preview/Preview' -import MultiSet from './MultiSet/MultiSet' -import FormBuilderContext from '../../../../context/FormBuilderContext' -import { IGroup, NavbarSelectStatus } from '../../../../types/interfaces' - -interface Props { - setOpenPreview: Dispatch> -} - -export default function PreviewStepOrGroup({ setOpenPreview }: Props) { - const { lists, setSelectStatus } = useContext(FormBuilderContext) - const { activeItem, groups, inputs } = lists - const { type } = activeItem - - return ( - - {type === 'Step' && ( - <> - - {activeItem.data.name.is} - - {groups - .filter((g) => g.stepGuid === activeItem.data.guid) - .map((g) => ( - - - {g.name.is} - - {g.multiSet !== 0 ? ( - - ) : ( - inputs - .filter((i) => i.groupGuid === g.guid) - .map((i) => ( - - )) - )} - - ))} - - )} - {type === 'Group' && ( - - - {activeItem.data.name.is} - - {(activeItem.data as IGroup).multiSet !== 0 ? ( - - ) : ( - inputs - .filter((i) => i.groupGuid === activeItem.data.guid) - .map((i) => ( - - )) - )} - - )} - - - - - ) -} diff --git a/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx b/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx deleted file mode 100644 index 9cd5944391fb..000000000000 --- a/apps/form-builder/components/MainContent/components/RelevantParties/RelevantParties.tsx +++ /dev/null @@ -1,285 +0,0 @@ -import React, { useContext, useState } from 'react' -import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' -import FormBuilderContext from '../../../../context/FormBuilderContext' -import { - IApplicantType, - IFormApplicantType, -} from '../../../../types/interfaces' -import { saveApplicantTypes } from '../../../../services/apiService' -import { EFormApplicantTypes } from '../../../../types/enums' -import { FormApplicantType } from './components/FormApplicantType' - -const applicantTypeLabel = [ - 'Einstaklingur (innskráður)', - 'Einstaklingur í umboði annars einstaklings', - 'Einstaklingur í umboði lögaðila', - 'Einstaklingur með prókúru', - 'Umboðsveitandi (einstaklingur)', - 'Lögaðili', -] - -const applicantTypes = [ - 'Einstaklingur', - 'Einstaklingur_með_umboð_annars_einstaklings', - 'Einstaklingur_með_umboð_lögaðila', - 'Einstaklingur_með_prókúru', - 'Einstaklingur_umboðsveitandi', - 'Lögaðili', -] - -export default function RelevantParties() { - const { formBuilder } = useContext(FormBuilderContext) - const applicantTypeTemplates = formBuilder.applicantTypes - const [formApplicantTypes, setFormApplicantTypes] = useState< - IFormApplicantType[] - >(formBuilder.form.formApplicantTypes) - const { id: formId } = formBuilder.form - const [focus, setOnFocus] = useState('') - - const createFormApplicantType = ( - type: EFormApplicantTypes, - template: IApplicantType, - ): IFormApplicantType => { - return { - formId: formId, - type: type, - applicantTypeId: template.id, - name: template.nameSuggestions[0].nameSuggestion, - } - } - - const handleCheckboxChange = (checked: boolean, index: number) => { - const updateFormApplicantTypes = ( - newFormApplicantTypes: IFormApplicantType[], - ) => { - const hasLegalEntity = formApplicantTypes.some( - (f) => f.type === EFormApplicantTypes.logadili, - ) - const newTypes = hasLegalEntity - ? newFormApplicantTypes.filter( - (f) => f.type !== EFormApplicantTypes.logadili, - ) - : newFormApplicantTypes - const newList = [...formApplicantTypes, ...newTypes] - saveApplicantTypes(formId, newList) - setFormApplicantTypes([...formApplicantTypes, ...newTypes]) - } - - const removeFormApplicantTypes = (types: EFormApplicantTypes[]) => { - const newList = formApplicantTypes.filter((f) => !types.includes(f.type)) - saveApplicantTypes(formId, newList) - setFormApplicantTypes(newList) - } - - if (checked) { - if (index === 0) { - const template = applicantTypeTemplates.find( - (at) => at.type === applicantTypes[index], - ) - if (template !== undefined) { - const newFormApplicantType: IFormApplicantType = - createFormApplicantType(EFormApplicantTypes.einstaklingur, template) - saveApplicantTypes(formId, [newFormApplicantType]) - setFormApplicantTypes([...formApplicantTypes, newFormApplicantType]) - } - } else if (index === 1) { - const delegatorTemplate = applicantTypeTemplates.find( - (at) => at.id === 2, - ) - const delegateeTemplate = applicantTypeTemplates.find( - (at) => at.id === 5, - ) - if ( - delegatorTemplate === undefined || - delegateeTemplate === undefined - ) { - return - } - const newFormApplicantTypes: IFormApplicantType[] = [ - createFormApplicantType( - EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, - delegatorTemplate, - ), - createFormApplicantType( - EFormApplicantTypes.einstaklingurUmbodsveitandi, - delegateeTemplate, - ), - ] - setFormApplicantTypes([...formApplicantTypes, ...newFormApplicantTypes]) - } else if (index === 2) { - const delegatorTemplate = applicantTypeTemplates.find( - (at) => at.id === 6, - ) - const delegateeTemplate = applicantTypeTemplates.find( - (at) => at.id === 3, - ) - if ( - delegatorTemplate === undefined || - delegateeTemplate === undefined - ) { - return - } - const newFormApplicantTypes: IFormApplicantType[] = [ - createFormApplicantType( - EFormApplicantTypes.einstaklingurMedUmbodLogadila, - delegateeTemplate, - ), - createFormApplicantType( - EFormApplicantTypes.logadili, - delegatorTemplate, - ), - ] - updateFormApplicantTypes(newFormApplicantTypes) - } else if (index === 3) { - const procurationHolder = applicantTypeTemplates.find( - (at) => at.id === 4, - ) - const legalEntity = applicantTypeTemplates.find((at) => at.id === 6) - if (procurationHolder === undefined || legalEntity === undefined) { - return - } - - const newFormApplicantTypes: IFormApplicantType[] = [ - createFormApplicantType( - EFormApplicantTypes.einstaklingurMedProkuru, - procurationHolder, - ), - createFormApplicantType(EFormApplicantTypes.logadili, legalEntity), - ] - updateFormApplicantTypes(newFormApplicantTypes) - } - } else { - if (index === 0) { - removeFormApplicantTypes([EFormApplicantTypes.einstaklingur]) - } else if (index === 1) { - removeFormApplicantTypes([ - EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, - EFormApplicantTypes.einstaklingurUmbodsveitandi, - ]) - } else if (index === 2) { - if ( - formApplicantTypes.some( - (f) => f.type === EFormApplicantTypes.einstaklingurMedProkuru, - ) - ) { - removeFormApplicantTypes([ - EFormApplicantTypes.einstaklingurMedUmbodLogadila, - ]) - } else { - removeFormApplicantTypes([ - EFormApplicantTypes.einstaklingurMedUmbodLogadila, - EFormApplicantTypes.logadili, - ]) - } - } else if (index === 3) { - if ( - formApplicantTypes.some( - (f) => f.type === EFormApplicantTypes.einstaklingurMedUmbodLogadila, - ) - ) { - removeFormApplicantTypes([ - EFormApplicantTypes.einstaklingurMedProkuru, - ]) - } else { - removeFormApplicantTypes([ - EFormApplicantTypes.einstaklingurMedProkuru, - EFormApplicantTypes.logadili, - ]) - } - } - } - } - - return ( - - - - Veldu þá einstaklinga sem mega opna þessa umsókn - - - - - {applicantTypeLabel.slice(0, 4).map((label, index) => ( - f.type === applicantTypes[index], - )} - onChange={(e) => handleCheckboxChange(e.target.checked, index)} - /> - ))} - - - {formApplicantTypes.length > 0 && ( - - Skilgreindu hlutaðeigandi aðila - - )} - {formApplicantTypes.map((f, i) => ( - at.id === f.applicantTypeId) - ?.nameSuggestions.map((ns) => ns.nameSuggestion) ?? [] - } - formApplicantType={f} - index={i} - handleSelect={handleSelect} - blur={blur} - setOnFocus={onFocus} - setFormApplicantTypes={setFormApplicantTypes} - isOther={isOther(f)} - /> - ))} - - ) - - function isOther(applicant: IFormApplicantType) { - const template = applicantTypeTemplates.find( - (at) => at.id === applicant.applicantTypeId, - ) - if (!template) { - return true - } - if ( - template.nameSuggestions.some( - (ns) => ns.nameSuggestion.is === applicant.name.is, - ) - ) { - return false - } - return true - } - - function handleSelect(e: { label: string; value: string }, index: number) { - const newApplicantTypes = formApplicantTypes.map((f, i) => { - if (i === index) { - return { - ...f, - name: { - is: e.label, - en: e.value, - }, - } - } - return f - }) - saveApplicantTypes(formId, newApplicantTypes) - setFormApplicantTypes(newApplicantTypes) - } - - function onFocus(value: string) { - setOnFocus(value) - } - - function blur(value: string) { - if (focus !== value) { - saveApplicantTypes(formId, formApplicantTypes) - } - setOnFocus('') - } -} diff --git a/apps/form-builder/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx b/apps/form-builder/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx deleted file mode 100644 index 8a30d746a5f1..000000000000 --- a/apps/form-builder/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import React, { useState } from 'react' -import { - Box, - GridColumn as Column, - GridRow as Row, - Input, - Select, - Stack, - Text, -} from '@island.is/island-ui/core' -import { IFormApplicantType, ILanguage } from '../../../../../types/interfaces' - -interface Props { - title: string - nameSuggestions: ILanguage[] - name: ILanguage - formApplicantType: IFormApplicantType - handleSelect( - e: { - label: string - value: string - }, - index: number, - ): void - index: number - blur(value: string): void - setOnFocus(value: string): void - setFormApplicantTypes: React.Dispatch< - React.SetStateAction - > - isOther: boolean -} - -export function FormApplicantType({ - title, - name, - nameSuggestions, - handleSelect, - index, - blur, - setOnFocus, - setFormApplicantTypes, - isOther, -}: Props) { - const [inputEnabled, setInputEnabled] = useState(isOther) - - const other = { label: 'Annað', value: 'Annað' } - - function getOptions() { - const options = nameSuggestions.map((suggestion) => { - return { - label: suggestion.is, - value: suggestion.en, - } - }) - options.push(other) - return options - } - - function handleSelectChange(e: { label: string; value: string }) { - if (e.label === 'Annað') { - setInputEnabled(true) - } else { - setInputEnabled(false) - handleSelect(e, index) - } - } - - function handleInputChange( - e: React.ChangeEvent, - language: 'is' | 'en', - ) { - setFormApplicantTypes((prev: IFormApplicantType[]) => { - const newApplicantTypes = prev.map((f: IFormApplicantType, i: number) => { - if (i === index) { - return { - ...f, - name: { - ...f.name, - [language]: e.target.value, - }, - } - } - return f - }) - return newApplicantTypes - }) - } - - return ( - - - - - - {title} - - - - - - setOnFocus(e.target.value)} - onBlur={(e) => blur(e.target.value)} - onChange={(e) => handleInputChange(e, 'is')} - /> - - - setOnFocus(e.target.value)} - onBlur={(e) => blur(e.target.value)} - onChange={(e) => handleInputChange(e, 'en')} - /> - - - - - ) -} diff --git a/apps/form-builder/components/Navbar/Navbar.tsx b/apps/form-builder/components/Navbar/Navbar.tsx deleted file mode 100644 index 6a02863759e2..000000000000 --- a/apps/form-builder/components/Navbar/Navbar.tsx +++ /dev/null @@ -1,327 +0,0 @@ -/* eslint-disable func-style */ -import { - useSensors, - useSensor, - PointerSensor, - DndContext, - DragOverlay, - UniqueIdentifier, - DragStartEvent, - DragOverEvent, - DataRef, -} from '@dnd-kit/core' -import { SortableContext } from '@dnd-kit/sortable' -import { useContext, useMemo } from 'react' -import { createPortal } from 'react-dom' -import { Box, Button } from '@island.is/island-ui/core' -import FormBuilderContext from '../../context/FormBuilderContext' -import { baseSettingsStep } from '../../utils/getBaseSettingsStep' -import { IFormBuilderContext, ItemType } from '../../types/interfaces' -import { addStep, deleteItem } from '../../services/apiService' -import NavbarTab from './components/NavbarTab/NavbarTab' -import NavComponent from './components/NavComponent/NavComponent' - -export default function Navbar() { - const { - formBuilder, - lists, - listsDispatch, - formUpdate, - inSettings, - setInSettings, - } = useContext(FormBuilderContext) - - const { activeItem, steps, groups, inputs } = lists - const stepsIds = useMemo(() => steps?.map((s) => s.guid), [steps]) - const groupsIds = useMemo(() => groups?.map((g) => g.guid), [groups]) - const inputsIds = useMemo(() => inputs?.map((i) => i.guid), [inputs]) - - const sensors = useSensors( - useSensor(PointerSensor, { - activationConstraint: { - distance: 10, - }, - }), - ) - if (inSettings) { - return ( - - - - - - - - {steps - ?.filter((s) => s.type !== 'Innsláttur') - .map((s) => ( - - - - ))} - - - - - ) - } else if (formBuilder && activeItem) { - return ( - - - - - - - {steps - ?.filter((s) => s.type === 'Innsláttur') - .map((s, i) => ( - - - - {groups - ?.filter((g) => g.stepGuid === s.guid) - .map((g) => ( - - - - - {inputs - ?.filter((i) => i.groupGuid === g.guid) - .map((i) => ( - - ))} - - - ))} - - - ))} - - - {/* Only render client side */} - {typeof window === 'object' && - createPortal( - - {activeItem && ( - - )} - , - document.body, - )} - - - - - - ) - } - return null - - async function addNewStep() { - try { - const data = await addStep( - formBuilder.form.id, - { is: '', en: '' }, - lists.steps.length, - 2, - { is: '', en: '' }, - false, - ) - - if (data !== undefined && data !== null) { - listsDispatch({ type: 'addStep', payload: { data: data } }) - } - } catch (error) { - console.error('Error adding new step:', error) - } - } - - type ActionType = 'removeStep' | 'removeGroup' | 'removeInput' - - function removeItem(type: ItemType, guid: UniqueIdentifier, id: number) { - const actionTypes: Record = { - Step: 'removeStep', - Group: 'removeGroup', - Input: 'removeInput', - } - - listsDispatch({ - type: actionTypes[type], - payload: { - guid: guid, - }, - }) - deleteItem(type, id) - } - - function focusComponent(type: ItemType, id: UniqueIdentifier) { - const dataTypes = { - Step: lists.steps, - Group: lists.groups, - Input: lists.inputs, - } - - const data = dataTypes[type]?.find((item) => item.guid === id) - if (id === baseSettingsStep.guid) { - listsDispatch({ - type: 'setActiveItem', - payload: { - type: 'Step', - data: baseSettingsStep, - }, - }) - } else if (data) { - listsDispatch({ - type: 'setActiveItem', - payload: { - type: type, - data: data, - }, - }) - } - } - - function onDragStart(event: DragStartEvent) { - listsDispatch({ - type: 'setActiveItem', - payload: { - type: event.active.data.current?.type, - data: event.active.data.current?.data ?? null, - }, - }) - } - - function onDragEnd() { - formUpdate() - } - - type DndAction = - | 'stepOverStep' - | 'groupOverStep' - | 'groupOverGroup' - | 'inputOverGroup' - | 'inputOverInput' - - function onDragOver(event: DragOverEvent) { - const { active, over } = event - - if (!over) return - - const activeId = active.id - const overId = over.id - - if (activeId === overId) return - - const getType = ( - data: DataRef<{ [x: string]: unknown }>, - targetType: ItemType, - ) => data?.current?.type === targetType - - const activeStep = getType(active.data, 'Step') - const activeGroup = getType(active.data, 'Group') - const activeInput = getType(active.data, 'Input') - const overStep = getType(over.data, 'Step') - const overGroup = getType(over.data, 'Group') - const overInput = getType(over.data, 'Input') - - const dispatchDragAction = (type: DndAction) => - listsDispatch({ type, payload: { activeId: activeId, overId: overId } }) - - // Dragging step - if (activeStep && overStep) { - dispatchDragAction('stepOverStep') - } - // Dragging Group - else if (activeGroup) { - if (overStep) { - dispatchDragAction('groupOverStep') - } - if (overGroup) { - dispatchDragAction('groupOverGroup') - } - } - // Dragging Input - else if (activeInput) { - if (overGroup) { - dispatchDragAction('inputOverGroup') - } - if (overInput) { - dispatchDragAction('inputOverInput') - } - } - } -} diff --git a/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.css.ts b/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.css.ts deleted file mode 100644 index ffee12eb1162..000000000000 --- a/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.css.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { style, styleVariants } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -const base = style({ - border: `1px solid ${theme.border.color.blue200}`, - borderRadius: theme.border.radius.standard, - marginBottom: '2px', - height: '46px', - marginLeft: 'auto', - backgroundColor: theme.color.blue100, - lineHeight: '46px', - ':hover': { - fontWeight: 'bolder', - }, - cursor: 'grab', -}) - -export const step = style({ - border: `1px solid ${theme.border.color.blue200}`, - borderRadius: theme.border.radius.standard, - marginBottom: '2px', - height: '46px', - width: '100%', -}) - -export const navComponent = styleVariants({ - step: [ - base, - { - width: '100%', - }, - ], - group: [ - base, - { - width: '90%', - }, - ], - input: [ - base, - { - width: '80%', - }, - ], -}) - -const baseBackground = style({ - width: '25px', - height: '44px', - borderRadius: `${theme.border.radius.standard} 0 0 ${theme.border.radius.standard}`, - textAlign: 'center', -}) - -export const navBackgroundActive = styleVariants({ - step: [ - baseBackground, - { - backgroundColor: theme.color.blue600, - lineHeight: '45px', - color: theme.color.white, - }, - ], - group: [ - baseBackground, - { - backgroundColor: theme.color.roseTinted400, - }, - ], - input: [ - baseBackground, - { - backgroundColor: theme.color.purple400, - }, - ], -}) - -export const navBackgroundDefault = styleVariants({ - step: [ - baseBackground, - { - lineHeight: '45px', - }, - ], - group: [baseBackground, {}], - input: [baseBackground, {}], -}) - -export const customBackgroundDropdown = style({ - background: theme.color.blue100, -}) diff --git a/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.tsx b/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.tsx deleted file mode 100644 index 4cebcf15459f..000000000000 --- a/apps/form-builder/components/Navbar/components/NavComponent/NavComponent.tsx +++ /dev/null @@ -1,176 +0,0 @@ -import { useState } from 'react' -import { ItemType, IGroup, IInput, IStep } from '../../../../types/interfaces' -import { useSortable } from '@dnd-kit/sortable' -import { Box } from '@island.is/island-ui/core' -import cn from 'classnames' -import * as styles from './NavComponent.css' -import { UniqueIdentifier } from '@dnd-kit/core' -import NavButtons from './components/NavButtons' - -type Props = { - type: ItemType - data: IStep | IGroup | IInput - active: boolean - index?: number - focusComponent(type: ItemType, id: UniqueIdentifier): void - remove( - type: 'Step' | 'Group' | 'Input', - guid: UniqueIdentifier, - id: number, - ): void -} - -export default function NavComponent({ - type, - data, - active, - index, - focusComponent, - remove, -}: Props) { - const [editMode] = useState(false) - - const { setNodeRef, attributes, listeners, isDragging } = useSortable({ - id: data.guid, - data: { - type: type, - data, - }, - disabled: editMode, - }) - - if (isDragging) { - return ( -
-
-
- ) - } - - return ( - focusComponent(type, data.guid)} - > - {active ? ( - - - {index} - - - {truncateName(data.name.is)} - - - {!(type === 'Step' && (data as IStep).type !== 'Innsláttur') && ( - - )} - - - ) : ( - - - {index} - - - {truncateName(data.name.is)} - - - )} - - ) - - function truncateText(text: string, maxLength: number) { - return text.length > maxLength ? text.slice(0, maxLength) + '...' : text - } - - function truncateName(name: string) { - let maxLength - - if (active) { - switch (type) { - case 'Step': - maxLength = 23 - break - case 'Group': - maxLength = 16 - break - case 'Input': - maxLength = 12 - break - default: - maxLength = 26 - } - } else { - switch (type) { - case 'Step': - maxLength = 26 - break - case 'Group': - maxLength = 19 - break - case 'Input': - maxLength = 16 - break - default: - maxLength = 26 - } - } - - return truncateText(name, maxLength) - } -} diff --git a/apps/form-builder/components/Navbar/components/NavComponent/components/NavButtons.tsx b/apps/form-builder/components/Navbar/components/NavComponent/components/NavButtons.tsx deleted file mode 100644 index d345afe154bc..000000000000 --- a/apps/form-builder/components/Navbar/components/NavComponent/components/NavButtons.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { Box, Icon } from '@island.is/island-ui/core' -import { useContext } from 'react' -import { UniqueIdentifier } from '@dnd-kit/core' -import FormBuilderContext from '../../../../../context/FormBuilderContext' -import { addGroup, addInput } from '../../../../../services/apiService' -import { ItemType } from '../../../../../types/interfaces' - -type Props = { - remove(type: ItemType, guid: UniqueIdentifier, id: number): void -} - -export default function NavButtons({ remove }: Props) { - const { lists, listsDispatch } = useContext(FormBuilderContext) - const { activeItem } = lists - return ( - - {activeItem.type !== 'Input' && ( - - - - )} - { - remove(activeItem.type, activeItem.data.guid, activeItem.data.id) - }} - > - - - - ) - - async function addItem() { - if (activeItem.type === 'Step') { - const newGroup = await addGroup(lists.groups.length, activeItem.data.id) - if (newGroup) { - listsDispatch({ type: 'addGroup', payload: { data: newGroup } }) - } - } else if (activeItem.type === 'Group') { - const newInput = await addInput(lists.inputs.length, activeItem.data.id) - if (newInput) { - listsDispatch({ type: 'addInput', payload: { data: newInput } }) - } - } - } -} diff --git a/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.css.tsx b/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.css.tsx deleted file mode 100644 index c6a1b1bc3068..000000000000 --- a/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.css.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const selected = style({ - cursor: 'pointer', - fontWeight: 'bolder', - textDecoration: 'underline', - color: theme.color.blue400, -}) - -export const notSelected = style({ - cursor: 'pointer', - ':hover': { - fontWeight: 'bolder', - textDecoration: 'underline', - }, -}) diff --git a/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.tsx b/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.tsx deleted file mode 100644 index 509ae6bc8bda..000000000000 --- a/apps/form-builder/components/Navbar/components/NavbarTab/NavbarTab.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { Box, Inline } from '@island.is/island-ui/core' -import cn from 'classnames' -import * as styles from './NavbarTab.css' -import { Dispatch, SetStateAction, useContext } from 'react' -import FormBuilderContext from '../../../../context/FormBuilderContext' -import { baseSettingsStep } from '../../../../utils/getBaseSettingsStep' - -type Props = { - inSettings: boolean - setInSettings: Dispatch> -} - -export default function NavbarTab({ inSettings, setInSettings }: Props) { - const { lists, listsDispatch } = useContext(FormBuilderContext) - return ( - - - { - listsDispatch({ - type: 'setActiveItem', - payload: { - type: 'Step', - data: lists.steps[2], - }, - }) - setInSettings(false) - }} - > - Skref - - { - listsDispatch({ - type: 'setActiveItem', - payload: { - type: 'Step', - data: baseSettingsStep, - }, - }) - setInSettings(true) - }} - > - Grunnstillingar - - - - ) -} diff --git a/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx b/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx deleted file mode 100644 index 59ea105f02ce..000000000000 --- a/apps/form-builder/components/NavbarSelect/NavbarSelect.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { useContext } from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import SelectNavComponent from './components/SelectNavComponent' -import FormBuilderContext from '../../context/FormBuilderContext' -import { NavbarSelectStatus } from '../../types/interfaces' - -export default function NavbarSelect() { - const { lists, selectStatus } = useContext(FormBuilderContext) - const { activeItem, steps, groups, inputs } = lists - let selectable = false - return ( - - - Skref - - {steps - .filter((s) => s.type === 'Innsláttur') - .map((s) => ( - - - {groups - .filter((g) => g.stepGuid === s.guid) - .map((g) => ( - - - {inputs - .filter((i) => i.groupGuid === g.guid) - .map((i) => { - if (activeItem.data.guid === i.guid) { - if ( - selectStatus !== NavbarSelectStatus.ON_WITHOUT_SELECT - ) { - selectable = true - } - } - return ( - - ) - })} - - ))} - - ))} - - ) -} diff --git a/apps/form-builder/components/NavbarSelect/components/SelectNavComponent.tsx b/apps/form-builder/components/NavbarSelect/components/SelectNavComponent.tsx deleted file mode 100644 index 3ed0723a5f39..000000000000 --- a/apps/form-builder/components/NavbarSelect/components/SelectNavComponent.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import cn from 'classnames' -import * as styles from './selectNavComponent.css' -import { Box, Checkbox } from '@island.is/island-ui/core' -import { useContext } from 'react' -import { - IGroup, - IInput, - IStep, - ItemType, - NavbarSelectStatus, -} from '../../../types/interfaces' -import FormBuilderContext from '../../../context/FormBuilderContext' - -type Props = { - type: ItemType - data: IStep | IGroup | IInput - active: boolean - selectable: boolean -} - -export default function SelectNavComponent({ - type, - data, - active, - selectable, -}: Props) { - const { formBuilder, formDispatch, lists, selectStatus, activeListItem } = - useContext(FormBuilderContext) - const { activeItem } = lists - const { form } = formBuilder - const activeGuid = - selectStatus === NavbarSelectStatus.LIST_ITEM - ? activeListItem?.guid ?? '' - : activeItem.data.guid - const connected = - form.dependencies[activeGuid]?.includes(data.guid as string) || - !form.dependencies - return ( - - {active ? ( - - - {/* Index */} - - - {truncateName(data.name.is)} - - - ) : ( - - - {/* {index} */} - - - {truncateName(data.name.is)} - - {selectable && ( - - { - formDispatch({ - type: 'addRemoveConnection', - payload: { - active: activeGuid, - item: data.guid, - }, - }) - }} - /> - - )} - - )} - - ) - - function truncateText(text: string, maxLength: number) { - return text.length > maxLength ? text.slice(0, maxLength) + '...' : text - } - - function truncateName(name: string) { - let maxLength: number - - if (active) { - switch (type) { - case 'Step': - maxLength = 23 - break - case 'Group': - maxLength = 16 - break - case 'Input': - maxLength = 12 - break - default: - maxLength = 26 - } - } else { - switch (type) { - case 'Step': - maxLength = 26 - break - case 'Group': - maxLength = 19 - break - case 'Input': - maxLength = 16 - break - default: - maxLength = 26 - } - } - - return truncateText(name, maxLength) - } -} diff --git a/apps/form-builder/components/NavbarSelect/components/selectNavComponent.css.ts b/apps/form-builder/components/NavbarSelect/components/selectNavComponent.css.ts deleted file mode 100644 index 8db4cbdbcc55..000000000000 --- a/apps/form-builder/components/NavbarSelect/components/selectNavComponent.css.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { style, styleVariants } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -const base = style({ - border: `1px solid ${theme.border.color.blue200}`, - borderRadius: theme.border.radius.standard, - marginBottom: '2px', - height: '46px', - marginLeft: 'auto', - backgroundColor: theme.color.white, - lineHeight: '46px', - ':hover': { - fontWeight: 'bolder', - }, - cursor: 'grab', -}) - -export const step = style({ - border: `1px solid ${theme.border.color.blue200}`, - borderRadius: theme.border.radius.standard, - marginBottom: '2px', - height: '46px', - width: '100%', -}) - -export const navComponent = styleVariants({ - step: [ - base, - { - width: '100%', - }, - ], - group: [ - base, - { - width: '90%', - }, - ], - input: [ - base, - { - width: '80%', - }, - ], -}) - -const baseBackground = style({ - width: '25px', - height: '44px', - borderRadius: `${theme.border.radius.standard} 0 0 ${theme.border.radius.standard}`, - textAlign: 'center', -}) - -export const navBackgroundActive = styleVariants({ - step: [ - baseBackground, - { - backgroundColor: theme.color.blue600, - lineHeight: '45px', - color: theme.color.white, - }, - ], - group: [ - baseBackground, - { - backgroundColor: theme.color.roseTinted400, - }, - ], - input: [ - baseBackground, - { - backgroundColor: theme.color.purple400, - }, - ], -}) - -export const navBackgroundDefault = styleVariants({ - step: [ - baseBackground, - { - lineHeight: '45px', - }, - ], - group: [baseBackground, {}], - input: [baseBackground, {}], -}) - -export const customBackgroundDropdown = style({ - background: theme.color.blue100, -}) diff --git a/apps/form-builder/components/TableRow/TableRow.css.tsx b/apps/form-builder/components/TableRow/TableRow.css.tsx deleted file mode 100644 index 130bb8609ecc..000000000000 --- a/apps/form-builder/components/TableRow/TableRow.css.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const header = style({ - padding: '10px 0 10px 0', - backgroundColor: theme.color.blue100, - borderBottom: `1px solid ${theme.border.color.blue200}`, -}) diff --git a/apps/form-builder/components/TableRow/TableRow.tsx b/apps/form-builder/components/TableRow/TableRow.tsx deleted file mode 100644 index ae90e8ab818a..000000000000 --- a/apps/form-builder/components/TableRow/TableRow.tsx +++ /dev/null @@ -1,181 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Text, - Divider, - Box, - DropdownMenu, - Button, -} from '@island.is/island-ui/core' -import * as styles from './TableRow.css' -import { useState } from 'react' -import { AnimatePresence, motion } from 'framer-motion' -import { useRouter } from 'next/router' -import TranslationTag from '../TranslationTag/TranslationTag' -import { formatDate } from '../../utils/formatDate' -import { - ApplicationTemplateStatus, - LicenseProviderEnum, -} from '../../types/enums' - -interface Props { - id?: number - name?: string - created?: Date - lastModified?: Date - org?: number - state?: number - options?: string - isHeader: boolean - translated?: boolean -} - -interface ColumnTextProps { - text: string | number -} - -const ColumnText = ({ text }: ColumnTextProps) => ( - - {text} - -) - -const TableRow = ({ - id, - name, - lastModified, - org, - state, - isHeader, - translated, -}: Props) => { - const [isOpen, setIsOpen] = useState(false) - const router = useRouter() - if (isHeader) return header() - return ( - setIsOpen(!isOpen)} - style={{ cursor: '' }} - > - - - - - - - - - - - - - - - - - - - - - - - - - } - items={[ - { - title: 'Breyta', - onClick: () => { - router.push(`/Form/${id}`) - }, - }, - { - title: 'Afrita', - }, - { - title: 'Þýðing enska', - }, - { - title: 'Sækja slóð', - }, - { - title: 'Export', - }, - { - title: 'Sækja json', - }, - ]} - /> - - - - - {isOpen === true ? ( - - - - - - ) : null} - - - - ) -} - -export default TableRow - -const header = () => ( - <> - - - - Númer - - - Heiti - - - Síðast breytt - - - Þýðingar - - - Stofnun - - - Staða - - - Aðgerðir - - - - -) diff --git a/apps/form-builder/components/Tabs/index.tsx b/apps/form-builder/components/Tabs/index.tsx deleted file mode 100644 index 67e6a907b717..000000000000 --- a/apps/form-builder/components/Tabs/index.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Box, Inline, FocusableBox } from '@island.is/island-ui/core' -import { Dispatch, SetStateAction } from 'react' -import * as styles from './tabs.css' - -interface Props { - selectedTab: number - setSelectedTab: Dispatch> -} - -export default function Tabs({ selectedTab, setSelectedTab }: Props) { - return ( - - - setSelectedTab(0)} - > - Óútgefið - - setSelectedTab(1)} - > - Útgefið - - setSelectedTab(2)} - > - Útgefið - - - - ) -} diff --git a/apps/form-builder/components/Tabs/tabs.css.ts b/apps/form-builder/components/Tabs/tabs.css.ts deleted file mode 100644 index 8ea98181e27d..000000000000 --- a/apps/form-builder/components/Tabs/tabs.css.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const tab = style({ - padding: '10px', - width: '100%', - cursor: 'pointer', -}) - -export const selected = style({ - color: theme.color.blue400, - borderBottom: `1px solid ${theme.border.color.blue400}`, - fontWeight: 'bolder', -}) diff --git a/apps/form-builder/components/TranslationTag/TranslationTag.tsx b/apps/form-builder/components/TranslationTag/TranslationTag.tsx deleted file mode 100644 index 987ac2dc804d..000000000000 --- a/apps/form-builder/components/TranslationTag/TranslationTag.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Tag } from '@island.is/island-ui/core' -interface Props { - translated: boolean -} - -export default function TranslationTag({ translated }: Props) { - return translated ? ( - Þýdd - ) : ( - Óþýdd - ) -} diff --git a/apps/form-builder/context/FormBuilderContext.tsx b/apps/form-builder/context/FormBuilderContext.tsx deleted file mode 100644 index b169e1d77cf2..000000000000 --- a/apps/form-builder/context/FormBuilderContext.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { FocusEvent, SetStateAction, createContext } from 'react' -import { - ActiveItem, - IFormBuilder, - IFormBuilderContext, - IGroup, - IInput, - IListItem, - IStep, - NavbarSelectStatus, -} from '../types/interfaces' - -const FormBuilderContext = createContext({ - formBuilder: {} as IFormBuilder, - formDispatch: function (_value: unknown): void { - throw new Error('Function not implemented.') - }, - lists: { - activeItem: {} as ActiveItem, - steps: [] as IStep[], - groups: [] as IGroup[], - inputs: [] as IInput[], - }, - listsDispatch: function (_value: unknown): void { - throw new Error('Function not implemented.') - }, - formUpdate: async function (): Promise { - throw new Error('Function not implemented.') - }, - inSettings: false, - setInSettings: function (_value: SetStateAction): void { - throw new Error('Function not implemented.') - }, - setSelectStatus: function (_value: SetStateAction): void { - throw new Error('Function not implemented.') - }, - selectStatus: NavbarSelectStatus.OFF, - setActiveListItem: function (_value: SetStateAction): void { - throw new Error('Function not implemented.') - }, - blur: function ( - _e: FocusEvent, - ): void { - throw new Error('Function not implemented.') - }, - onFocus: function (_e: string): void { - throw new Error('Function not implemented.') - }, -}) - -export default FormBuilderContext diff --git a/apps/form-builder/context/LayoutContext.tsx b/apps/form-builder/context/LayoutContext.tsx deleted file mode 100644 index 82bed301b7aa..000000000000 --- a/apps/form-builder/context/LayoutContext.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { createContext } from 'react' -import { ILayoutContext } from '../types/interfaces' - -const LayoutContext = createContext({ - info: { - organization: '', - applicationName: '', - }, - infoDispatch: function (_value: unknown): void { - throw new Error('Function not implemented.') - }, -}) - -export default LayoutContext diff --git a/apps/form-builder/context/UserContext.tsx b/apps/form-builder/context/UserContext.tsx deleted file mode 100644 index c7ae918f1a3d..000000000000 --- a/apps/form-builder/context/UserContext.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { createContext } from 'react' -import { User } from '../types/interfaces' - -const UserContext = createContext({ - isAuthenticated: false, - setIsAuthenticated: (_: boolean) => undefined, - user: null as unknown as User, - setUser: (_: User) => undefined, - userLoading: false, -}) - -export default UserContext diff --git a/apps/form-builder/environments/environment.ts b/apps/form-builder/environments/environment.ts deleted file mode 100644 index 53f69e76d4c9..000000000000 --- a/apps/form-builder/environments/environment.ts +++ /dev/null @@ -1,9 +0,0 @@ -const devConfig = { - production: false, -} - -const prodConfig = { - production: true, -} - -export default process.env.NODE_ENV === 'production' ? prodConfig : devConfig diff --git a/apps/form-builder/gql/client.ts b/apps/form-builder/gql/client.ts deleted file mode 100644 index 5d90d250951e..000000000000 --- a/apps/form-builder/gql/client.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { - ApolloClient, - ApolloLink, - InMemoryCache, - NormalizedCacheObject, -} from '@apollo/client' -import httpLink from './httpLink' -import retryLink from './retryLink' - -const isBrowser: boolean = process.browser - -let apolloClient: ApolloClient | null = null - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function create(initialState?: any) { - const link = ApolloLink.from([retryLink, httpLink]) // Add retry, error, auth and httpLink here - - return new ApolloClient({ - name: 'form-builder', - version: '0.1', - connectToDevTools: isBrowser, - ssrMode: !isBrowser, - link, - cache: new InMemoryCache().restore(initialState || {}), - headers: { - 'Content-Type': 'application/json', - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Credentials': 'true', - }, - }) -} - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export default function initApollo(initialState?: any) { - if (!isBrowser) { - return create(initialState) - } - - if (!apolloClient) { - apolloClient = create(initialState) - } - - return apolloClient -} diff --git a/apps/form-builder/gql/httpLink.ts b/apps/form-builder/gql/httpLink.ts deleted file mode 100644 index 91670e5233e0..000000000000 --- a/apps/form-builder/gql/httpLink.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { createHttpLink } from '@apollo/client' -import fetch from 'isomorphic-unfetch' - -// Polyfill fetch() on the server (used by apollo-client) -if (!process.browser) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ;(global as any).fetch = fetch -} - -export default createHttpLink({ - uri: 'https://profun.island.is/umsoknarkerfi/api/graphql', // Should be in next.config.js - credentials: 'include', - fetch, -}) diff --git a/apps/form-builder/gql/queries.graphql.ts b/apps/form-builder/gql/queries.graphql.ts deleted file mode 100644 index c1cffc22d993..000000000000 --- a/apps/form-builder/gql/queries.graphql.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { gql } from '@apollo/client' - -export const ADD_STEP = gql` - mutation AddStep($input: AddStepInput!) { - addStep(input: $input) { - id - name { - is - en - } - type - } - } -` diff --git a/apps/form-builder/gql/retryLink.ts b/apps/form-builder/gql/retryLink.ts deleted file mode 100644 index a522b345407f..000000000000 --- a/apps/form-builder/gql/retryLink.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ServerError } from '@apollo/client' -import { RetryLink as retryLink } from '@apollo/client/link/retry' - -const RetryLink = new retryLink({ - attempts: { - max: 2, - retryIf: (error: ServerError) => error && true, - }, -}) - -export default RetryLink diff --git a/apps/form-builder/hooks/fileUploadReducer.ts b/apps/form-builder/hooks/fileUploadReducer.ts deleted file mode 100644 index 4e8c480714b1..000000000000 --- a/apps/form-builder/hooks/fileUploadReducer.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { UploadFile, UploadFileStatus } from '@island.is/island-ui/core' - -enum ActionTypes { - add = 'add', - remove = 'remove', - update = 'update', -} - -type FileUploadActions = - | { type: 'add'; payload: { newFiles: UploadFile[] } } - | { type: 'remove'; payload: { fileToRemove: UploadFile } } - | { - type: 'update' - payload: { file: UploadFile; status: UploadFileStatus; percent: number } - } - -export default function fileUploadReducer( - state: UploadFile[], - action: FileUploadActions, -) { - switch (action.type) { - case ActionTypes.add: - return state.concat(action.payload.newFiles) - - case ActionTypes.remove: - return state.filter( - (file) => file.name !== action.payload.fileToRemove.name, - ) - - case ActionTypes.update: - return [ - ...state.map((file: UploadFile) => { - if (file.name === action.payload.file.name) { - file.status = action.payload.status - file.percent = action.payload.percent - } - return file - }), - ] - default: - throw new Error() - } -} diff --git a/apps/form-builder/hooks/formReducer.ts b/apps/form-builder/hooks/formReducer.ts deleted file mode 100644 index 5dd8748acd0e..000000000000 --- a/apps/form-builder/hooks/formReducer.ts +++ /dev/null @@ -1,198 +0,0 @@ -import { UniqueIdentifier } from '@dnd-kit/core' -import { - ICertificate, - IFormBuilder, - ILanguage, - ITenging, -} from '../types/interfaces' -import { saveFormSettings } from '../services/apiService' - -type ILang = 'is' | 'en' - -type ChangeNameAction = { - type: 'changeName' - payload: { - lang: ILang - newName: string - } -} - -type ApplicationsDaysToRemoveAction = { - type: 'applicationsDaysToRemove' - payload: { - value: number - } -} - -type InvalidationDateAction = { - type: 'invalidationDate' - payload: { - value: Date - } -} - -type StopProgressOnValidatingStepAction = { - type: 'stopProgressOnValidatingStep' - payload: { - value: boolean - } -} - -type AddRemoveConnectionAction = { - type: 'addRemoveConnection' - payload: { - active: UniqueIdentifier - item: UniqueIdentifier - } -} - -type UpdateDocuments = { - type: 'updateDocuments' - payload: { - documents: ICertificate[] - } -} - -type FormSettingsPayload = - | { property: 'invalidationDate'; value: Date } - | { property: 'dependencies'; value: ITenging } - | { property: 'stopProgressOnValidatingStep'; value: boolean } - | { property: 'applicationsDaysToRemove'; value: number } - | { - property: 'formDocumentTypes' - value: { formId: number; documentTypeId: number }[] - } - | { property: 'adilar'; value: string[] } - | { property: 'completedMessage'; value: ILanguage } - | { property: 'isTranslated'; value: boolean } - -type FormSettingsAction = { - type: 'formSettings' - payload: FormSettingsPayload -} - -export type FormAction = - | ChangeNameAction - | ApplicationsDaysToRemoveAction - | InvalidationDateAction - | StopProgressOnValidatingStepAction - | AddRemoveConnectionAction - | FormSettingsAction - | UpdateDocuments - -export function formReducer(formBuilder: IFormBuilder, action: FormAction) { - switch (action.type) { - case 'changeName': { - const { lang, newName } = action.payload - return { - ...formBuilder, - form: { - ...formBuilder.form, - name: { - ...formBuilder.form.name, - [lang]: newName, - }, - }, - } - } - case 'applicationsDaysToRemove': { - const { value } = action.payload - return { - ...formBuilder, - form: { - ...formBuilder.form, - applicationsDaysToRemove: value, - }, - } - } - case 'invalidationDate': { - const { value } = action.payload - return { - ...formBuilder, - form: { - ...formBuilder.form, - invalidationDate: value, - }, - } - } - case 'stopProgressOnValidatingStep': { - const { value } = action.payload - return { - ...formBuilder, - form: { - ...formBuilder.form, - stopProgressOnValidatingStep: value, - }, - } - } - case 'addRemoveConnection': { - const { active, item } = action.payload - const itemAsString = String(item) - const dependencies = { ...formBuilder.form.dependencies } - - if (active in dependencies) { - if (!dependencies[active].includes(itemAsString)) { - dependencies[active] = [...dependencies[active], itemAsString] - } else { - dependencies[active] = dependencies[active].filter((t) => t !== item) - if (dependencies[active].length === 0) { - delete dependencies[active] - } - } - } else { - dependencies[active] = [itemAsString] - } - saveFormSettings(formBuilder.form.id, { - id: formBuilder.form.id, - dependencies: dependencies, - }) - return { - ...formBuilder, - form: { - ...formBuilder.form, - dependencies, - }, - } - } - - case 'formSettings': { - const { property, value } = action.payload - const { id } = formBuilder.form - saveFormSettings(id, { - id: id, - [property]: value, - }) - return { - ...formBuilder, - form: { - ...formBuilder.form, - [property]: value, - }, - } - } - - case 'updateDocuments': { - const { documents } = action.payload - const saveDocuments = documents.map((d) => { - return { - formId: formBuilder.form.id, - documentTypeId: d.id, - } - }) - saveFormSettings(formBuilder.form.id, { - id: formBuilder.form.id, - formDocumentTypes: saveDocuments, - }) - return { - ...formBuilder, - form: { - ...formBuilder.form, - documentTypes: documents, - }, - } - } - - default: - return formBuilder - } -} diff --git a/apps/form-builder/hooks/headerInfoReducer.ts b/apps/form-builder/hooks/headerInfoReducer.ts deleted file mode 100644 index a92d3484df39..000000000000 --- a/apps/form-builder/hooks/headerInfoReducer.ts +++ /dev/null @@ -1,29 +0,0 @@ -export type FormHeaderAction = - | { type: 'changeOrganization'; payload: { value: string } } - | { type: 'changeApplicationName'; payload: { value: string } } - -export function headerInfoReducer( - info: { - organization: string - applicationName: string - }, - action: FormHeaderAction, -) { - switch (action.type) { - case 'changeOrganization': { - return { - ...info, - organization: action.payload?.value ? action.payload.value : '', - } - } - case 'changeApplicationName': { - return { - ...info, - applicationName: action.payload?.value ? action.payload.value : '', - } - } - default: { - return info - } - } -} diff --git a/apps/form-builder/hooks/listsReducer.ts b/apps/form-builder/hooks/listsReducer.ts deleted file mode 100644 index 7a59f3f8671c..000000000000 --- a/apps/form-builder/hooks/listsReducer.ts +++ /dev/null @@ -1,763 +0,0 @@ -import { arrayMove } from '@dnd-kit/sortable' -import { - ItemType, - IGroup, - IInput, - IInputSettings, - IListItem, - ILists, - IStep, - ActiveItem, - ILanguage, -} from '../types/interfaces' -import { UniqueIdentifier } from '@dnd-kit/core' -import { uuid } from 'uuidv4' -import { updateItem } from '../services/apiService' - -export type ILang = 'is' | 'en' - -type DndAction = - | { - type: 'stepOverStep' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } - | { - type: 'groupOverStep' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } - | { - type: 'groupOverGroup' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } - | { - type: 'inputOverGroup' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } - | { - type: 'inputOverInput' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } - | { - type: 'listItemOverListItem' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } - -type AddRemoveAction = - | { type: 'addStep'; payload: { data: IStep } } - | { type: 'addGroup'; payload: { data: IGroup } } - | { type: 'addInput'; payload: { data: IInput } } - | { type: 'removeStep'; payload: { guid: UniqueIdentifier } } - | { type: 'removeGroup'; payload: { guid: UniqueIdentifier } } - | { type: 'removeInput'; payload: { guid: UniqueIdentifier } } - | { type: 'addListItem' } - | { type: 'removeListItem'; payload: { guid: UniqueIdentifier } } - | { - type: 'addInputRelevantParty' - payload: { data: IInput; type: string; name: ILanguage } - } - -type ChangeAction = - | { - type: 'changeName' - payload: { - lang: ILang - newValue: string - } - } - | { - type: 'changeInputType' - payload: { - newValue: string | number - inputSettings: IInputSettings - } - } - | { - type: 'setIsRequired' - payload: { guid: UniqueIdentifier; isRequired: boolean } - } - | { type: 'setDescription'; payload: { lang: ILang; newValue: string } } - | { - type: 'changeInputName' - payload: { guid: UniqueIdentifier; lang: ILang; newValue: string } - } - -type ControlAction = - | { - type: 'setActiveItem' - payload: { type: ItemType; data: IStep | IGroup | IInput } - } - | { type: 'setActiveListItem'; payload: { listItem: IListItem | null } } - -type InputSettingsAction = - | { type: 'timeInterval'; payload: { data: string } } - | { type: 'setInputSettings'; payload: { inputSettings: IInputSettings } } - | { - type: 'setMessageWithLinkSettings' - payload: { - property: 'hnapptexti' | 'url' | 'erHlekkur' - value?: string - checked?: boolean - lang?: ILang - } - } - | { - type: 'setFileUploadSettings' - payload: { - property: 'erFjolval' | 'fjoldi' | 'hamarksstaerd' | 'tegundir' - checked?: boolean - value?: number | string - } - } - | { - type: 'setNumberInputSettings' - payload: { - property: 'lagmarkslengd' | 'hamarkslengd' | 'laggildi' | 'hagildi' - value: number - } - } - | { - type: 'setListItemSelected' - payload: { guid: UniqueIdentifier; checked: boolean } - } - | { - type: 'setListItem' - payload: { - property: 'label' | 'description' - lang: ILang - value: string - listItemGuid: UniqueIdentifier - } - } - | { type: 'setMultiSet'; payload: { checked: boolean } } - | { - type: 'setRelevantPartiesSettings' - payload: { property: 'type' | 'name'; lang?: ILang; type: string } - } - -export type Action = - | DndAction - | AddRemoveAction - | ChangeAction - | ControlAction - | InputSettingsAction - -export const listsReducer = (lists: ILists, action: Action): ILists => { - const types = { - Step: 'steps', - Group: 'groups', - Input: 'inputs', - } - const { activeItem, steps, groups, inputs } = lists - - const addNewInput = (newInput: IInput, toSave: boolean) => { - toSave && updateItem('Input', newInput) - return { - ...lists, - activeItem: { - ...activeItem, - data: newInput, - }, - inputs: inputs.map((i) => - i.guid === activeItem.data.guid ? newInput : i, - ), - } - } - - switch (action.type) { - // DnD control - case 'stepOverStep': { - const activeIndex = steps.findIndex( - (s) => s.guid === action.payload.activeId, - ) - const overIndex = steps.findIndex((s) => s.guid === action.payload.overId) - const updatedSteps = arrayMove(steps, activeIndex, overIndex) - return { - ...lists, - steps: updatedSteps, - } - } - case 'groupOverStep': { - const activeIndex = groups.findIndex( - (g) => g.guid === action.payload.activeId, - ) - const overIndex = steps.findIndex((s) => s.guid === action.payload.overId) - - const updatedGroup = groups - updatedGroup[activeIndex].stepGuid = action.payload.overId - updatedGroup[activeIndex].stepId = steps[overIndex].id - - return { - ...lists, - groups: arrayMove(updatedGroup, activeIndex, activeIndex), - } - } - case 'groupOverGroup': { - const activeIndex = groups.findIndex( - (g) => g.guid === action.payload.activeId, - ) - const overIndex = groups.findIndex( - (g) => g.guid === action.payload.overId, - ) - - const updatedGroup = groups - if ( - updatedGroup[activeIndex].stepGuid !== updatedGroup[overIndex].stepGuid - ) { - updatedGroup[activeIndex].stepGuid = updatedGroup[overIndex].stepGuid - updatedGroup[activeIndex].stepId = updatedGroup[overIndex].stepId - return { - ...lists, - groups: arrayMove(updatedGroup, activeIndex, overIndex - 1), - } - } - return { - ...lists, - groups: arrayMove(updatedGroup, activeIndex, overIndex), - } - } - case 'inputOverGroup': { - const activeIndex = inputs.findIndex( - (i) => i.guid === action.payload.activeId, - ) - const overIndex = groups.findIndex( - (g) => g.guid === action.payload.overId, - ) - - const updatedInput = inputs - updatedInput[activeIndex].groupGuid = action.payload.overId - updatedInput[activeIndex].groupId = groups[overIndex].id - return { - ...lists, - inputs: arrayMove(updatedInput, activeIndex, activeIndex), - } - } - case 'inputOverInput': { - const activeIndex = inputs.findIndex( - (i) => i.guid === action.payload.activeId, - ) - const overIndex = inputs.findIndex( - (i) => i.guid === action.payload.overId, - ) - - const updatedInput = inputs - if ( - updatedInput[activeIndex].groupGuid !== - updatedInput[overIndex].groupGuid - ) { - updatedInput[activeIndex].groupGuid = updatedInput[overIndex].groupGuid - updatedInput[activeIndex].groupId = updatedInput[overIndex].groupId - return { - ...lists, - inputs: arrayMove(updatedInput, activeIndex, overIndex - 1), - } - } - return { - ...lists, - inputs: arrayMove(updatedInput, activeIndex, overIndex), - } - } - case 'listItemOverListItem': { - const input = activeItem.data as IInput - const { listi: list } = input.inputSettings - if (list === undefined) { - return lists - } - const activeIndex = list.findIndex( - (l) => l.guid === action.payload.activeId, - ) - const overIndex = list.findIndex((l) => l.guid === action.payload.overId) - const newInput = { - ...input, - inputSettings: { - ...input.inputSettings, - listi: arrayMove(list, activeIndex, overIndex).map((l, i) => ({ - ...l, - displayOrder: i, - })), - }, - } - return addNewInput(newInput, false) - } - - // DnD control - end - // Add - case 'addStep': { - return { - ...lists, - activeItem: { - type: 'Step', - data: action.payload.data, - }, - steps: [...steps, action.payload.data], - } - } - case 'addGroup': { - return { - ...lists, - activeItem: { - type: 'Group', - data: action.payload.data, - }, - groups: [...groups, action.payload.data], - } - } - case 'addInput': { - return { - ...lists, - activeItem: { - type: 'Input', - data: action.payload.data, - }, - inputs: [...inputs, action.payload.data], - } - } - case 'addInputRelevantParty': { - const newInput = { - ...action.payload.data, - name: action.payload.name, - type: 'Aðili', - inputSettings: { - $type: 'adili', - type: action.payload.type, - }, - } - updateItem('Input', newInput) - return { - ...lists, - inputs: [...inputs, newInput], - } - } - //Add - end - // Remove - case 'removeStep': { - return { - ...lists, - steps: steps.filter((s) => s.guid !== action.payload.guid), - } - } - case 'removeGroup': { - return { - ...lists, - groups: groups.filter((g) => g.guid !== action.payload.guid), - } - } - case 'removeInput': { - return { - ...lists, - inputs: inputs.filter((i) => i.guid !== action.payload.guid), - } - } - // Remove - end - - // ChangeHandlers - case 'changeName': { - const { lang, newValue } = action.payload - const newActive = { - ...activeItem, - data: { - ...activeItem.data, - name: { - ...activeItem.data.name, - [lang]: newValue, - }, - }, - } - if (newActive.type === 'Step') { - const newSteps: IStep[] = steps.map((s) => - s.guid === newActive.data.guid ? (newActive.data as IStep) : s, - ) - return { - ...lists, - activeItem: newActive, - steps: newSteps, - } - } else if (newActive.type === 'Group') { - const newGroups: IGroup[] = groups.map((g) => - g.guid === newActive.data.guid ? (newActive.data as IGroup) : g, - ) - return { - ...lists, - activeItem: newActive, - groups: newGroups, - } - } else { - const newInputs: IInput[] = inputs.map((i) => - i.guid === newActive.data.guid ? (newActive.data as IInput) : i, - ) - return { - ...lists, - activeItem: newActive, - inputs: newInputs, - } - } - } - case 'changeInputType': { - const activeIndex = ( - lists[types[activeItem.type]] as Array<{ guid: UniqueIdentifier }> - ).findIndex( - (e: { guid: UniqueIdentifier }) => e.guid === activeItem.data.guid, - ) - const newInputs = [...inputs] - - newInputs[activeIndex] = { - ...inputs[activeIndex], - type: action.payload.newValue as string, - inputSettings: action.payload.inputSettings, - } - - const newActive: ActiveItem = { - type: 'Input', - data: newInputs[activeIndex], - } - - updateItem(newActive.type, newActive.data) - - return { - ...lists, - activeItem: newActive, - inputs: newInputs, - } - } - case 'setDescription': { - const input = activeItem.data as IInput - const newInput = { - ...input, - description: { - ...input.description, - [action.payload.lang]: action.payload.newValue, - }, - } - return { - ...lists, - activeItem: { - ...activeItem, - data: newInput, - }, - inputs: inputs.map((i) => { - if (i.guid === input.guid) { - return newInput - } - return i - }), - } - } - case 'changeInputName': { - const { guid, lang, newValue } = action.payload - const currentInput = activeItem.data as IInput - const newInput = { - ...currentInput, - name: { - ...currentInput.name, - [lang]: newValue, - }, - } - return { - ...lists, - inputs: inputs.map((i) => { - if (i.guid === guid) { - return newInput - } - return i - }), - } - } - - case 'setActiveItem': { - return { - ...lists, - activeItem: { - type: action.payload.type, - data: action.payload.data, - }, - } - } - case 'setIsRequired': { - return { - ...lists, - activeItem: { - ...activeItem, - data: { - ...activeItem.data, - isRequired: action.payload.isRequired, - }, - }, - inputs: inputs.map((i) => { - if (i.guid === action.payload.guid) { - const newInput = { - ...i, - isRequired: action.payload.isRequired, - } - updateItem('Input', newInput) - return newInput - } - return i - }), - } - } - case 'timeInterval': { - if (activeItem.type === 'Input') { - const inputItem = activeItem.data as IInput - return { - ...lists, - activeItem: { - ...activeItem, - data: { - ...activeItem.data, - inputSettings: { - ...inputItem.inputSettings, - interval: action.payload.data, - }, - }, - }, - inputs: inputs.map((i) => { - if (i.guid === activeItem.data.guid) { - const newInput: IInput = { - ...i, - inputSettings: { - ...i.inputSettings, - interval: action.payload.data, - }, - } - updateItem('Input', newInput) - return newInput - } - return i - }), - } - } - break - } - case 'setMessageWithLinkSettings': { - const input: IInput = activeItem.data as IInput - - const { payload } = action - if ('property' in payload) { - const { property, lang, value, checked } = payload - - const updateMessageLink = ( - property: string, - value: string | undefined, - ) => { - if (lang === undefined || value === undefined) return - return { - ...(input.inputSettings[property] as IInputSettings), - [lang]: value, - } - } - - const newInput = { - ...input, - inputSettings: { - ...input.inputSettings, - [property]: property === 'erHlekkur' ? checked : value, - ...(property === 'hnapptexti' - ? updateMessageLink(property, value) - : {}), - }, - } - if (property === 'erHlekkur') { - updateItem('Input', newInput) - } - return { - ...lists, - activeItem: { - ...activeItem, - data: newInput, - }, - inputs: inputs.map((i) => - i.guid === activeItem.data.guid ? newInput : i, - ), - } - } - break - } - - case 'setFileUploadSettings': { - const input = activeItem.data as IInput - const { payload } = action - const { property, checked, value } = payload - - const updateFileTypesArray = () => { - const currentTegundir = input.inputSettings.tegundir || [] - if (checked) { - return [...currentTegundir, value as string] - } else { - return currentTegundir.filter((t) => t !== value) - } - } - const newInput = { - ...input, - inputSettings: { - ...input.inputSettings, - [property]: property === 'tegundir' ? updateFileTypesArray() : value, - }, - } - updateItem('Input', newInput) - return { - ...lists, - activeItem: { - ...activeItem, - data: newInput, - }, - inputs: inputs.map((i) => - i.guid === activeItem.data.guid ? newInput : i, - ), - } - } - - case 'setNumberInputSettings': { - const input = activeItem.data as IInput - const newInput = { - ...input, - inputSettings: { - ...input.inputSettings, - [action.payload.property]: action.payload.value, - }, - } - return { - ...lists, - activeItem: { - ...activeItem, - data: newInput, - }, - inputs: inputs.map((i) => - i.guid === activeItem.data.guid ? newInput : i, - ), - } - } - - case 'addListItem': { - const input = activeItem.data as IInput - const list = input.inputSettings.listi || [] - const newListItem = { - guid: uuid(), - label: { - is: '', - en: '', - }, - description: { - is: '', - en: '', - }, - isSelected: false, - displayOrder: list.length, - } - - const newInput: IInput = { - ...input, - inputSettings: { - ...input.inputSettings, - listi: [...list, newListItem], - }, - } - return addNewInput(newInput, true) - } - - case 'setListItemSelected': { - const input = activeItem.data as IInput - const list = input.inputSettings.listi || [] - const newInput = { - ...input, - inputSettings: { - ...input.inputSettings, - listi: list.map((l) => - l.guid === action.payload.guid - ? { ...l, isSelected: !l.isSelected } - : { ...l, isSelected: false }, - ), - }, - } - return addNewInput(newInput, true) - } - - case 'removeListItem': { - const input = activeItem.data as IInput - const list = input.inputSettings.listi || [] - const newInput = { - ...input, - inputSettings: { - ...input.inputSettings, - listi: list.filter((l) => l.guid !== action.payload.guid), - }, - } - return addNewInput(newInput, true) - } - - case 'setListItem': { - const input = activeItem.data as IInput - const { payload } = action - const { property, lang, value, listItemGuid } = payload - const list = input.inputSettings.listi || [] - - const newInput = { - ...input, - inputSettings: { - ...input.inputSettings, - listi: list.map((l) => { - if (l.guid === listItemGuid) { - return { - ...l, - [property]: { - ...l[property], - [lang]: value, - }, - } - } - return l - }), - }, - } - return addNewInput(newInput, false) - } - - case 'setActiveListItem': { - return { - ...lists, - activeListItem: action.payload.listItem, - } - } - - case 'setMultiSet': { - const group = activeItem.data as IGroup - const newGroup = { - ...group, - multiSet: action.payload.checked ? 10 : 0, - } - updateItem('Group', newGroup) - return { - ...lists, - activeItem: { - ...activeItem, - data: newGroup, - }, - groups: lists.groups.map((g) => - g.guid === activeItem.data.guid ? newGroup : g, - ), - } - } - - case 'setInputSettings': { - const { inputSettings } = action.payload - const input = activeItem.data as IInput - const newInput = { - ...input, - inputSettings: inputSettings, - } - updateItem('Input', newInput) - return { - ...lists, - activeItem: { - ...activeItem, - data: newInput, - }, - inputs: inputs.map((i) => - i.guid === activeItem.data.guid ? newInput : i, - ), - } - } - - default: - return lists - } - return lists -} diff --git a/apps/form-builder/hooks/useUser.ts b/apps/form-builder/hooks/useUser.ts deleted file mode 100644 index 4d0458f4cd06..000000000000 --- a/apps/form-builder/hooks/useUser.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { useSession } from 'next-auth/client' -import { useEffect, useState } from 'react' -import { User } from '../types/interfaces' - -export default function useUser() { - const [user, setUser] = useState() - const [session, loading] = useSession() - - const timeNow = Math.floor(Date.now() / 1000) - const expiryStr = session?.expires - ? new Date(session.expires.replace(/['"]+/g, '')).getTime() - : undefined - const expiry = Math.floor((expiryStr ?? 0) / 1000) - - const hasNotExpired = timeNow < expiry - - const [isAuthenticated, setIsAuthenticated] = useState( - Boolean(hasNotExpired), - ) - - useEffect(() => { - if (!hasNotExpired) { - setUser(undefined) - setIsAuthenticated(false) - sessionStorage.clear() - } else { - if (!user && session?.user) { - const { name = '', email, image } = session.user || {} - setUser({ name: name || '', email: email || '', image: image || '' }) - setIsAuthenticated(true) - } - } - }, [setUser, session, user]) - - return { - isAuthenticated, - setIsAuthenticated, - user, - setUser, - userLoading: loading, - } -} diff --git a/apps/form-builder/index.d.ts b/apps/form-builder/index.d.ts deleted file mode 100644 index a9ab53489c7f..000000000000 --- a/apps/form-builder/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -declare module '*.svg' { - const content: any - export const ReactComponent: any - export default content -} diff --git a/apps/form-builder/infra/form-builder.ts b/apps/form-builder/infra/form-builder.ts deleted file mode 100644 index 10e118a9f3f9..000000000000 --- a/apps/form-builder/infra/form-builder.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { ref, service, ServiceBuilder } from '../../../infra/src/dsl/dsl' - -export const serviceSetup = (services: { - api: ServiceBuilder<'api'> -}): ServiceBuilder<'form-builder'> => { - const formSystemsService = service('form-builder') - formSystemsService - .image('form-builder') - .namespace('form-builder') - .liveness('/liveness') - .readiness('/liveness') - .replicaCount({ - default: 2, - max: 30, - min: 2, - }) - .resources({ - limits: { cpu: '400m', memory: '512Mi' }, - requests: { cpu: '200m', memory: '256Mi' }, - }) - .env({ - BASEPATH: '/form-builder', - ENVIRONMENT: ref((h) => h.env.type), - API_URL: ref((h) => `http://${h.svc(services.api)}`), //Most likely this is incorrect - IDENTITY_SERVER_ISSUER_DOMAIN: { - dev: 'identity-server.dev01.devland.is', - staging: 'identity-server.staging01.devland.is', - prod: 'innskra.island.is', - }, - NEXTAUTH_URL: { //TODO add paths - dev: '', - staging: '', - prod: '', - }, - BACKEND_DL_URL: { //TODO add paths - dev: '', - staging: '', - prod: '', - }, - }) - .secrets({ - - }) - .ingress({ - primary: { - host: { - dev: ['beta'], - staging: ['beta'], - prod: ['', 'www.island.is'], - }, - extraAnnotations: { - dev: { - 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', - 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', - }, - staging: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', - 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', - 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', - }, - prod: { - 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', - 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', - }, - }, - paths: ['/form-builder'], - }, - }) - return formSystemsService -} diff --git a/apps/form-builder/jest.config.ts b/apps/form-builder/jest.config.ts deleted file mode 100644 index f205af440342..000000000000 --- a/apps/form-builder/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'form-builder', - preset: '../../jest.preset.js', - transform: { - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', - '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/next/babel'] }], - }, - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], - coverageDirectory: '../../coverage/apps/form-builder', -} diff --git a/apps/form-builder/lib/environment.ts b/apps/form-builder/lib/environment.ts deleted file mode 100644 index 0a5afa989e20..000000000000 --- a/apps/form-builder/lib/environment.ts +++ /dev/null @@ -1,31 +0,0 @@ -const isProd = process.env.NODE_ENV === 'production' - -const devConfig = { - production: false, - NEXTAUTH_URL: 'http://localhost:4200/api/auth/callback', - identityServerId: 'identity-server', - identityServerClientId: '@island.is/leyfisveitingagatt', - identityServerDomain: '', - identityServerLogoutUrl: '', - identityServerSecret: '', - identityServerScope: 'openid profile', - identityServerName: 'Leyfisveitingagatt', - idsTokenCookieName: 'next-auth.csrf-token', - backendDownloadUrl: 'https://profun.island.is/umsoknarkerfi/api', -} - -const prodConfig = { - production: true, - NEXTAUTH_URL: 'http://localhost:4200/api/auth/callback', - identityServerId: 'identity-server', - identityServerClientId: '@island.is/leyfisveitingagatt', - identityServerDomain: '', - identityServerLogoutUrl: '', - identityServerSecret: '', - identityServerScope: 'openid profile', - identityServerName: 'Leyfisveitingagatt', - idsTokenCookieName: 'next-auth.csrf-token', - backendDownloadUrl: 'https://profun.island.is/umsoknarkerfi/api', -} - -export default isProd ? prodConfig : devConfig diff --git a/apps/form-builder/lib/fileTypes.json b/apps/form-builder/lib/fileTypes.json deleted file mode 100644 index a066e60198cf..000000000000 --- a/apps/form-builder/lib/fileTypes.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - ".pdf": "application/pdf", - ".doc": "application/msword", - ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - ".txt": "text/plain", - ".jpg": "image/jpeg", - ".jpeg": "image/jpeg", - ".png": "image/png", - ".gif": "image/gif", - ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - ".xls": "application/vnd.ms-excel", - ".csv": "text/csv", - ".zip": "application/zip", - "*": "application/octet-stream" -} diff --git a/apps/form-builder/next-env.d.ts b/apps/form-builder/next-env.d.ts deleted file mode 100644 index 4f11a03dc6cc..000000000000 --- a/apps/form-builder/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/apps/form-builder/next.config.js b/apps/form-builder/next.config.js deleted file mode 100644 index a3c0782fba37..000000000000 --- a/apps/form-builder/next.config.js +++ /dev/null @@ -1,39 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const withNx = require('@nx/next/plugins/with-nx') -const { createVanillaExtractPlugin } = require('@vanilla-extract/next-plugin') -const withVanillaExtract = createVanillaExtractPlugin() - -/** - * @type {import('@nrwl/next/plugins/with-nx').WithNxOptions} - **/ - -const nextConfig = { - nx: { - svgr: false, - }, -} - -module.exports = withNx(withVanillaExtract(nextConfig)) - -//@ts-check - -// eslint-disable-next-line @typescript-eslint/no-var-requires -// const { composePlugins, withNx } = require('@nx/next') - -// /** -// * @type {import('@nx/next/plugins/with-nx').WithNxOptions} -// **/ -// const nextConfig = { -// nx: { -// // Set this to true if you would like to use SVGR -// // See: https://github.com/gregberge/svgr -// svgr: false, -// }, -// } - -// const plugins = [ -// // Add more Next.js plugins to this list if needed. -// withNx, -// ] - -// module.exports = composePlugins(...plugins)(nextConfig) diff --git a/apps/form-builder/pages/Form/[id]/index.tsx b/apps/form-builder/pages/Form/[id]/index.tsx deleted file mode 100644 index 6bdfb0dc1621..000000000000 --- a/apps/form-builder/pages/Form/[id]/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { GetServerSidePropsContext } from 'next' -import Form from '../../../screens/Form' -import { getForm } from '../../../services/apiService' -import { IFormBuilder } from '../../../types/interfaces' - -interface Props { - form: IFormBuilder -} - -const Index = ({ form }: Props) => { - return -} - -export default Index - -export async function getServerSideProps(context: GetServerSidePropsContext) { - const formId = context.params?.id as unknown - if (!formId) { - return { - notFound: true, - } - } - const form: IFormBuilder = await getForm(formId) - return { - props: { - form: form, - }, - } -} diff --git a/apps/form-builder/pages/Form/index.tsx b/apps/form-builder/pages/Form/index.tsx deleted file mode 100644 index 2362d796dbbf..000000000000 --- a/apps/form-builder/pages/Form/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { useRouter } from 'next/router' -import { useEffect } from 'react' -import Form from '../../screens/Form' -import { getNewForm } from '../../services/apiService' -import { IFormBuilder } from '../../types/interfaces' - -interface Props { - form: IFormBuilder -} - -const Index = ({ form }: Props) => { - const router = useRouter() - - useEffect(() => { - router.replace(`/Form/${form.form.id}`) - }, [form.form.id, router]) - - return ( -
- -
- ) -} - -export default Index - -export async function getServerSideProps() { - const form: IFormBuilder = await getNewForm(1) - return { - props: { - form: form, - }, - } -} diff --git a/apps/form-builder/pages/Forms/index.tsx b/apps/form-builder/pages/Forms/index.tsx deleted file mode 100644 index 278098268e6a..000000000000 --- a/apps/form-builder/pages/Forms/index.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Forms } from '../../screens' -import { getAllFormsFromOrganisation } from '../../services/apiService' -import { IFormBuilder } from '../../types/interfaces' - -interface Props { - formBuilder: IFormBuilder -} - -const Index = ({ formBuilder }: Props) => { - return -} - -export default Index - -export async function getServerSideProps() { - const allForms: IFormBuilder = await getAllFormsFromOrganisation(1) - return { - props: { - formBuilder: allForms, - }, - } -} diff --git a/apps/form-builder/pages/_app.tsx b/apps/form-builder/pages/_app.tsx deleted file mode 100644 index 593db52ef5e5..000000000000 --- a/apps/form-builder/pages/_app.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { AppContext, AppProps } from 'next/app' -import { IntlProvider } from 'react-intl' -import Layout from '../components/Layout/Layout' -import AuthProvider from '../components/AuthProvider/AuthProvider' -import { Provider, getSession } from 'next-auth/client' - -const FormBuilderProviderApp: React.FC = ({ - Component, - pageProps, -}) => { - return ( - undefined} - > - - - -
- -
-
-
-
-
- ) -} - -export async function getInitialProps(appContext: AppContext) { - const { ctx } = appContext - const session = await getSession(ctx) - return { - pageProps: { - session: session, - }, - } -} - -export default FormBuilderProviderApp diff --git a/apps/form-builder/pages/api/auth/[...nextauth].ts b/apps/form-builder/pages/api/auth/[...nextauth].ts deleted file mode 100644 index fb644da3b3e0..000000000000 --- a/apps/form-builder/pages/api/auth/[...nextauth].ts +++ /dev/null @@ -1,70 +0,0 @@ -import NextAuth, { CallbacksOptions } from 'next-auth' -import { NextApiRequest, NextApiResponse } from 'next' -import Providers from 'next-auth/providers' -import { - AuthUser, - signIn as handleSignIn, - session as handleSession, - jwt as handleJwt, - AuthSession, -} from '@island.is/next-ids-auth' -import { JWT } from 'next-auth/jwt' -import env from '../../../lib/environment' - -const providers = [ - Providers.IdentityServer4({ - id: env.identityServerId, - name: env.identityServerName, - scope: env.identityServerScope, - clientSecret: env.identityServerClientId, - clientId: env.identityServerClientId, - domain: env.identityServerDomain, - protection: 'pkce', - }), -] - -const callbacks: CallbacksOptions = { - signIn: signIn, - jwt: jwt, - session: session, -} - -async function signIn( - user: AuthUser, - account: Record, - profile: Record, -): Promise { - return handleSignIn(user, account, profile, env.identityServerClientId) -} - -async function jwt(token: JWT, user: AuthUser) { - if (user) { - token = { - nationalId: user.nationalId, - name: user.name, - accessToken: user.accessToken, - refreshToken: user.refreshToken, - idToken: user.idToken, - isRefreshTokenExpired: false, - } - } - return await handleJwt( - token, - env.identityServerClientId, - env.identityServerSecret, - env.NEXTAUTH_URL, - env.identityServerDomain, - ) -} - -async function session(session: AuthSession, user: AuthUser) { - return handleSession(session, user) -} - -const options = { providers, callbacks } - -const handleAuth = (req: NextApiRequest, res: NextApiResponse) => { - NextAuth(req as any, res, options) -} - -export default handleAuth diff --git a/apps/form-builder/pages/index.tsx b/apps/form-builder/pages/index.tsx deleted file mode 100644 index b6b6a47ff4b8..000000000000 --- a/apps/form-builder/pages/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { useEffect } from 'react' -import router from 'next/router' - -const Index = () => { - useEffect(() => { - router.push('/Forms') - }, []) - - return <> -} - -export default Index diff --git a/apps/form-builder/project.json b/apps/form-builder/project.json deleted file mode 100644 index 73c5c0878a43..000000000000 --- a/apps/form-builder/project.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "name": "form-builder", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "apps/form-builder", - "projectType": "application", - "targets": { - "build": { - "executor": "@nx/next:build", - "outputs": ["{options.outputPath}"], - "defaultConfiguration": "production", - "options": { - "outputPath": "dist/apps/form-builder" - }, - "configurations": { - "development": { - "outputPath": "apps/form-builder" - }, - "production": {} - } - }, - "build-custom-server": { - "executor": "@nx/webpack:webpack", - "defaultConfiguration": "production", - "options": { - "outputPath": "dist/apps/form-builder", - "main": "apps/form-builder/server.ts", - "tsConfig": "apps/form-builder/tsconfig.server.json", - "maxWorkers": 2, - "assets": [], - "compiler": "tsc", - "target": "node" - }, - "configurations": { - "development": {}, - "production": { - "optimization": true, - "extractLicenses": true, - "inspect": false - } - } - }, - "serve": { - "executor": "@nx/next:server", - "defaultConfiguration": "development", - "options": { - "buildTarget": "form-builder:build", - "dev": true, - "customServerTarget": "form-builder:serve-custom-server" - }, - "configurations": { - "development": { - "buildTarget": "form-builder:build:development", - "dev": true, - "customServerTarget": "form-builder:serve-custom-server:development" - }, - "production": { - "buildTarget": "form-builder:build:production", - "dev": false, - "customServerTarget": "form-builder:serve-custom-server:production" - } - } - }, - "serve-custom-server": { - "executor": "@nx/js:node", - "defaultConfiguration": "development", - "options": { - "buildTarget": "form-builder:build-custom-server" - }, - "configurations": { - "development": { - "buildTarget": "form-builder:build-custom-server:development" - }, - "production": { - "buildTarget": "form-builder:build-custom-server:production" - } - } - }, - "export": { - "executor": "@nx/next:export", - "options": { - "buildTarget": "form-builder:build:production" - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], - "options": { - "jestConfig": "apps/form-builder/jest.config.ts", - "passWithNoTests": true - }, - "configurations": { - "ci": { - "ci": true, - "codeCoverage": true - } - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["apps/form-builder/**/*.{ts,tsx,js,jsx}"] - } - }, - "docker-next": {} - }, - "tags": [] -} diff --git a/apps/form-builder/proxy.config.json b/apps/form-builder/proxy.config.json deleted file mode 100644 index 1ec1f59e0a1a..000000000000 --- a/apps/form-builder/proxy.config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "/api/graphql": { - "target": "http://localhost:4444", - "secure": false - } -} diff --git a/apps/form-builder/public/.gitkeep b/apps/form-builder/public/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/apps/form-builder/public/favicon.ico b/apps/form-builder/public/favicon.ico deleted file mode 100644 index 317ebcb2336e0833a22dddf0ab287849f26fda57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeI332;U^%p|z7g|#(P)qFEA@4f!_@qOK2 z_lJl}!lhL!VT_U|uN7%8B2iKH??xhDa;*`g{yjTFWHvXn;2s{4R7kH|pKGdy(7z!K zgftM+Ku7~24TLlh(!g)gz|foI94G^t2^IO$uvX$3(OR0<_5L2sB)lMAMy|+`xodJ{ z_Uh_1m)~h?a;2W{dmhM;u!YGo=)OdmId_B<%^V^{ovI@y`7^g1_V9G}*f# zNzAtvou}I!W1#{M^@ROc(BZ! z+F!!_aR&Px3_reO(EW+TwlW~tv*2zr?iP7(d~a~yA|@*a89IUke+c472NXM0wiX{- zl`UrZC^1XYyf%1u)-Y)jj9;MZ!SLfd2Hl?o|80Su%Z?To_=^g_Jt0oa#CT*tjx>BI z16wec&AOWNK<#i0Qd=1O$fymLRoUR*%;h@*@v7}wApDl^w*h}!sYq%kw+DKDY)@&A z@9$ULEB3qkR#85`lb8#WZw=@})#kQig9oqy^I$dj&k4jU&^2(M3q{n1AKeGUKPFbr z1^<)aH;VsG@J|B&l>UtU#Ejv3GIqERzYgL@UOAWtW<{p#zy`WyJgpCy8$c_e%wYJL zyGHRRx38)HyjU3y{-4z6)pzb>&Q1pR)B&u01F-|&Gx4EZWK$nkUkOI|(D4UHOXg_- zw{OBf!oWQUn)Pe(=f=nt=zkmdjpO^o8ZZ9o_|4tW1ni+Un9iCW47*-ut$KQOww!;u z`0q)$s6IZO!~9$e_P9X!hqLxu`fpcL|2f^I5d4*a@Dq28;@2271v_N+5HqYZ>x;&O z05*7JT)mUe&%S0@UD)@&8SmQrMtsDfZT;fkdA!r(S=}Oz>iP)w=W508=Rc#nNn7ym z1;42c|8($ALY8#a({%1#IXbWn9-Y|0eDY$_L&j{63?{?AH{);EzcqfydD$@-B`Y3<%IIj7S7rK_N}je^=dEk%JQ4c z!tBdTPE3Tse;oYF>cnrapWq*o)m47X1`~6@(!Y29#>-#8zm&LXrXa(3=7Z)ElaQqj z-#0JJy3Fi(C#Rx(`=VXtJ63E2_bZGCz+QRa{W0e2(m3sI?LOcUBx)~^YCqZ{XEPX)C>G>U4tfqeH8L(3|pQR*zbL1 zT9e~4Tb5p9_G}$y4t`i*4t_Mr9QYvL9C&Ah*}t`q*}S+VYh0M6GxTTSXI)hMpMpIq zD1ImYqJLzbj0}~EpE-aH#VCH_udYEW#`P2zYmi&xSPs_{n6tBj=MY|-XrA;SGA_>y zGtU$?HXm$gYj*!N)_nQ59%lQdXtQZS3*#PC-{iB_sm+ytD*7j`D*k(P&IH2GHT}Eh z5697eQECVIGQAUe#eU2I!yI&%0CP#>%6MWV z@zS!p@+Y1i1b^QuuEF*13CuB zu69dve5k7&Wgb+^s|UB08Dr3u`h@yM0NTj4h7MnHo-4@xmyr7(*4$rpPwsCDZ@2be zRz9V^GnV;;?^Lk%ynzq&K(Aix`mWmW`^152Hoy$CTYVehpD-S1-W^#k#{0^L`V6CN+E z!w+xte;2vu4AmVNEFUOBmrBL>6MK@!O2*N|2=d|Y;oN&A&qv=qKn73lDD zI(+oJAdgv>Yr}8(&@ZuAZE%XUXmX(U!N+Z_sjL<1vjy1R+1IeHt`79fnYdOL{$ci7 z%3f0A*;Zt@ED&Gjm|OFTYBDe%bbo*xXAQsFz+Q`fVBH!N2)kaxN8P$c>sp~QXnv>b zwq=W3&Mtmih7xkR$YA)1Yi?avHNR6C99!u6fh=cL|KQ&PwF!n@ud^n(HNIImHD!h87!i*t?G|p0o+eelJ?B@A64_9%SBhNaJ64EvKgD&%LjLCYnNfc; znj?%*p@*?dq#NqcQFmmX($wms@CSAr9#>hUR^=I+=0B)vvGX%T&#h$kmX*s=^M2E!@N9#m?LhMvz}YB+kd zG~mbP|D(;{s_#;hsKK9lbVK&Lo734x7SIFJ9V_}2$@q?zm^7?*XH94w5Qae{7zOMUF z^?%F%)c1Y)Q?Iy?I>knw*8gYW#ok|2gdS=YYZLiD=CW|Nj;n^x!=S#iJ#`~Ld79+xXpVmUK^B(xO_vO!btA9y7w3L3-0j-y4 z?M-V{%z;JI`bk7yFDcP}OcCd*{Q9S5$iGA7*E1@tfkyjAi!;wP^O71cZ^Ep)qrQ)N z#wqw0_HS;T7x3y|`P==i3hEwK%|>fZ)c&@kgKO1~5<5xBSk?iZV?KI6&i72H6S9A* z=U(*e)EqEs?Oc04)V-~K5AUmh|62H4*`UAtItO$O(q5?6jj+K^oD!04r=6#dsxp?~}{`?&sXn#q2 zGuY~7>O2=!u@@Kfu7q=W*4egu@qPMRM>(eyYyaIE<|j%d=iWNdGsx%c!902v#ngNg z@#U-O_4xN$s_9?(`{>{>7~-6FgWpBpqXb`Ydc3OFL#&I}Irse9F_8R@4zSS*Y*o*B zXL?6*Aw!AfkNCgcr#*yj&p3ZDe2y>v$>FUdKIy_2N~}6AbHc7gA3`6$g@1o|dE>vz z4pl(j9;kyMsjaw}lO?(?Xg%4k!5%^t#@5n=WVc&JRa+XT$~#@rldvN3S1rEpU$;XgxVny7mki3 z-Hh|jUCHrUXuLr!)`w>wgO0N%KTB-1di>cj(x3Bav`7v z3G7EIbU$z>`Nad7Rk_&OT-W{;qg)-GXV-aJT#(ozdmnA~Rq3GQ_3mby(>q6Ocb-RgTUhTN)))x>m&eD;$J5Bg zo&DhY36Yg=J=$Z>t}RJ>o|@hAcwWzN#r(WJ52^g$lh^!63@hh+dR$&_dEGu&^CR*< z!oFqSqO@>xZ*nC2oiOd0eS*F^IL~W-rsrO`J`ej{=ou_q^_(<$&-3f^J z&L^MSYWIe{&pYq&9eGaArA~*kA('') - const [inSettings, setInSettings] = useState(form.form.name.is === '') - const [selectStatus, setSelectStatus] = useState( - NavbarSelectStatus.OFF, - ) - const [activeListItem, setActiveListItem] = useState(null) - const { infoDispatch } = useContext(LayoutContext) - const initialNavbar: ILists = { - activeItem: inSettings - ? { type: 'Step', data: baseSettingsStep } - : { - type: 'Step', - data: - form?.form?.stepsList.find((s) => s.type === 'Innsláttur') || - defaultStep, - }, - steps: form.form.stepsList ?? [], - groups: form.form.groupsList ?? [], - inputs: form.form.inputsList ?? [], - } - const [formBuilder, formDispatch] = useReducer(formReducer, form) - const [lists, listsDispatch] = useReducer(listsReducer, initialNavbar) - const { activeItem } = lists - - const isMounted = useRef(false) - - useEffect(() => { - isMounted.current = true - infoDispatch({ - type: 'changeOrganization', - payload: { - value: formBuilder?.form?.organization.name.is, - }, - }) - infoDispatch({ - type: 'changeApplicationName', - payload: { - value: formBuilder.form.name.is, - }, - }) - }, [formBuilder, infoDispatch]) - - const context: IFormBuilderContext = { - formBuilder: formBuilder, - formDispatch: formDispatch, - lists: lists, - listsDispatch: listsDispatch, - formUpdate: formUpdate, - inSettings: inSettings, - setInSettings: setInSettings, - setSelectStatus: setSelectStatus, - selectStatus: selectStatus, - activeListItem: activeListItem, - setActiveListItem: setActiveListItem, - blur: blur, - onFocus: onFocus, - } - - if (formBuilder.form && activeItem) { - return ( - - - - {selectStatus !== NavbarSelectStatus.OFF ? ( - - ) : ( - - )} - - - - {activeItem?.data && } - - - - - ) - } - return <>Loading - - async function formUpdate() { - updateForm(formBuilder.form, lists.steps, lists.groups, lists.inputs) - } - - function blur(e: FocusEvent) { - if (e.target.value !== focus) { - setOnFocus('') - updateItem(activeItem.type, activeItem.data) - } - } - - function onFocus(value: string) { - setOnFocus(value) - } -} diff --git a/apps/form-builder/screens/Forms.tsx b/apps/form-builder/screens/Forms.tsx deleted file mode 100644 index 358962180a9a..000000000000 --- a/apps/form-builder/screens/Forms.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { Box, Button, Inline, Text } from '@island.is/island-ui/core' -import router from 'next/router' -import TableRow from '../components/TableRow/TableRow' -import { IFormBuilder } from '../types/interfaces' - -interface Props { - formBuilder: IFormBuilder -} -export default function Forms({ formBuilder }: Props) { - if (formBuilder) { - return ( - - {/* Title and buttons */} - - Forskriftir - - - - - - - - - - - - - - - - {formBuilder.forms && - formBuilder.forms?.map((f) => { - return ( - - ) - })} - - ) - } - return <> -} diff --git a/apps/form-builder/screens/index.tsx b/apps/form-builder/screens/index.tsx deleted file mode 100644 index 3112d3ade954..000000000000 --- a/apps/form-builder/screens/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Forms } from './Forms' -export { default as Form } from './Form' diff --git a/apps/form-builder/server.ts b/apps/form-builder/server.ts deleted file mode 100644 index 3f65dc718369..000000000000 --- a/apps/form-builder/server.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { bootstrap } from '@island.is/infra-next-server' -import proxyConfig from './proxy.config.json' - -bootstrap({ - name: 'form-builder', - appDir: 'apps/form-builder', - proxyConfig, - externalEndpointDependencies: (nextConfig) => { - const { graphqlEndpoint } = nextConfig.serverRuntimeConfig - return [graphqlEndpoint] - }, -}) diff --git a/apps/form-builder/services/apiService.tsx b/apps/form-builder/services/apiService.tsx deleted file mode 100644 index 182f89bb3aa7..000000000000 --- a/apps/form-builder/services/apiService.tsx +++ /dev/null @@ -1,248 +0,0 @@ -import axios from 'axios' - -import { - IForm, - IFormApplicantType, - IFormBuilder, - IGroup, - IInput, - IInputSettings, - ILanguage, - IStep, - ItemType, -} from '../types/interfaces' -import { groupSchema, stepSchema } from './zodValidation' - -const BASEURL = 'https://profun.island.is/umsoknarkerfi/api' - -export async function getForm(id: unknown): Promise { - try { - const response = await axios.get(`${BASEURL}/Forms/${id}`) - // const validatedFormData: IFormBuilder = formFormBuilderSchema.parse(response.data) - // return validatedFormData - return response.data - } catch (error) { - console.error(error) - throw error - } -} - -export async function updateForm( - form: IForm, - steps: IStep[], - groups: IGroup[], - inputs: IInput[], -) { - const updatedForm: IForm = { - ...form, - stepsList: steps.map((s, i) => { - return { - ...s, - displayOrder: i, - } - }), - groupsList: groups.map((g, i) => { - return { - ...g, - displayOrder: i, - } - }), - inputsList: inputs.map((i, index) => { - return { - ...i, - displayOrder: index, - } - }), - } - console.log('updatedForm', updatedForm) - try { - const response = await axios.put( - `${BASEURL}/Forms/${form.id}`, - updatedForm, - { - headers: { - 'Content-Type': 'application/json', - }, - }, - ) - - return response - } catch (error) { - console.error('Error in updateNavbar:', error) - throw error - } -} - -export async function updateItem(type: string, data: IStep | IGroup | IInput) { - const url = `${BASEURL}/${type}s/${data.id}` - - try { - const response = await axios.put(url, data, { - headers: { - 'Content-Type': 'application/json', - }, - }) - - return response - } catch (error) { - console.error('Error in updateItem: ', error) - throw error - } -} - -export async function getNewForm(organisationId: number): Promise { - try { - const response = await axios.post(`${BASEURL}/Forms/${organisationId}`) - return response.data - } catch (error) { - console.error('Error in getNewForm: ', error) - throw error - } -} - -export async function getAllFormsFromOrganisation( - organisationId: number, -): Promise { - try { - const response = await axios.get( - `${BASEURL}/Forms/Organization/${organisationId}`, - ) - return response.data - } catch (error) { - console.error('Error in getAllFormsFromOrganisation: ', error) - throw error - } -} - -export async function addStep( - formId: number, - name: ILanguage, - displayOrder: number, - stepType: number, - waitingText: ILanguage, - callRuleset: boolean, -): Promise { - try { - const response = await axios.post(`${BASEURL}/Steps`, { - formId, - name, - displayOrder, - stepType, - waitingText, - callRuleset, - }) - - const validatedStep: IStep = stepSchema.parse(response.data) - return validatedStep - } catch (error) { - console.error('Error in addStep: ', error) - throw error - } -} - -export async function addGroup( - displayOrder: number, - parentId: number, -): Promise { - try { - const response = await axios.post(`${BASEURL}/Groups`, { - displayOrder: displayOrder, - stepId: parentId, - }) - - const validatedGroup: IGroup = groupSchema.parse(response.data) - - return validatedGroup - } catch (error) { - console.error('Error in addGroup: ', error) - throw error - } -} - -export async function addInput( - displayOrder: number, - parentId: number, -): Promise { - const requestBody = { - displayOrder: displayOrder, - groupId: parentId, - } - - try { - const response = await axios.post(`${BASEURL}/Inputs`, requestBody, { - headers: { - 'Content-Type': 'application/json', - }, - }) - - const data = response.data - - return data - } catch (error) { - console.error('Error in addInput: ', error) - throw error - } -} - -export async function deleteItem(type: ItemType, id: number) { - try { - const response = await axios.delete(`${BASEURL}/${type}s/${id}`) - return response - } catch (error) { - console.error('Error in deleteItem: ', error) - throw error - } -} - -export async function saveFormSettings(id: number, settings: IInputSettings) { - try { - const response = await axios.put( - `${BASEURL}/Forms/${id}/Settings`, - settings, - { - headers: { - 'Content-Type': 'application/json', - }, - }, - ) - return response - } catch (error) { - console.error('Error in saveFormSettings: ', error) - throw error - } -} - -export async function saveApplicantTypes( - id: number, - types: IFormApplicantType[], -) { - const requestData = { - id: id, - formApplicantTypes: types, - } - try { - const response = await axios.put( - `${BASEURL}/Forms/${id}/Settings`, - requestData, - { - headers: { - 'Content-Type': 'application/json', - }, - }, - ) - - return response - } catch (error) { - console.error('Error in saveApplicantTypes: ', error) - throw error - } -} -export async function getList(type: string) { - try { - const response = await axios.get(`${BASEURL}/Services/${type}`) - return response.data - } catch (error) { - console.error('Error in getList: ', error) - throw error - } -} diff --git a/apps/form-builder/services/translationStation.tsx b/apps/form-builder/services/translationStation.tsx deleted file mode 100644 index 19be4bae56f2..000000000000 --- a/apps/form-builder/services/translationStation.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { ITranslationResponse } from '../types/interfaces' -import axios from 'axios' -import dotenv from 'dotenv' - -dotenv.config() - -export const translationStation = async ( - input: string, -): Promise => { - const apiUrl = process.env.MIDEIND_API - const apiKey = process.env.MIDEIND_KEY - - if (!apiUrl || !apiKey) { - throw new Error('API URL or API key is not defined.') - } - - try { - const response = await axios.post( - apiUrl, - { - contents: [input], - sourceLanguageCode: 'is', - targetLanguageCode: 'en', - model: '', - domain: '', - }, - { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - 'X-API-Key': apiKey, - }, - }, - ) - - return response.data - } catch (error) { - console.error('Error in translationStation: ', error) - throw error - } -} diff --git a/apps/form-builder/services/zodValidation.ts b/apps/form-builder/services/zodValidation.ts deleted file mode 100644 index bc94f18f8e08..000000000000 --- a/apps/form-builder/services/zodValidation.ts +++ /dev/null @@ -1,193 +0,0 @@ -import { z } from 'zod' -import { EFormApplicantTypes } from '../types/enums' -import { - IApplicantType, - ICertificate, - IForm, - IFormApplicantType, - IFormBuilder, - IGroup, - IInput, - IInputSettings, - IInputType, - IListType, - IStep, - ITenging, -} from '../types/interfaces' - -const languageSchema = z.object({ - is: z.string(), - en: z.string(), -}) - -const dependencySchema = z.record(z.array(z.string())) as z.ZodSchema - -const inputSettingsSchema = z.object({ - $type: z.string().optional(), - isLarge: z.boolean().optional(), - size: z.enum(['xs', 'sm', 'md']), - interval: z.string().optional(), - erHlekkur: z.boolean().optional(), - url: z.string().optional(), - hnapptexti: languageSchema.optional(), - tegundir: z.array(z.string()).optional(), - hamarksstaerd: z.number().optional(), - erFjolval: z.boolean().optional(), - fjoldi: z.number().optional(), - header: z.string().optional(), - hamarkslengd: z.number().optional(), - lagmarkslengd: z.number().optional(), - laggildi: z.number().optional(), - hagildi: z.number().optional(), - listi: z - .array( - z.object({ - guid: z.string(), - label: languageSchema, - description: languageSchema, - displayOrder: z.number(), - isSelected: z.boolean(), - }), - ) - .optional(), - type: z.string().optional(), - name: languageSchema.optional(), - erListi: z.boolean().optional(), - erInnslattur: z.boolean().optional(), -}) as z.ZodSchema - -export const inputSchema = z.object({ - id: z.number(), - name: languageSchema, - description: languageSchema, - isRequired: z.boolean(), - displayOrder: z.number(), - groupId: z.number(), - groupGuid: z.string(), - isHidden: z.boolean(), - type: z.string(), - guid: z.string(), - inputFields: z.record(z.any()), - inputSettings: inputSettingsSchema, - isPartOfMultiSet: z.boolean(), -}) as z.ZodSchema - -export const groupSchema = z.object({ - id: z.number(), - name: languageSchema, - guid: z.string(), - displayOrder: z.number(), - isHidden: z.boolean(), - multiSet: z.number(), - stepId: z.number(), - stepGuid: z.string(), - inputs: z.array(inputSchema), -}) as z.ZodSchema - -export const stepSchema = z.object({ - id: z.number(), - guid: z.string(), - displayOrder: z.number(), - name: languageSchema, - type: z.string(), - waitingText: languageSchema, - callRuleset: z.boolean(), - isHidden: z.boolean(), - isCompleted: z.boolean(), - groups: z.array(groupSchema), -}) as z.ZodSchema - -const certificateSchema = z.object({ - id: z.number(), - type: z.string(), - name: languageSchema, - description: languageSchema, -}) as z.ZodSchema - -const applicantTypesSchema = z.enum([ - EFormApplicantTypes.einstaklingur, - EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, - EFormApplicantTypes.einstaklingurMedUmbodLogadila, - EFormApplicantTypes.einstaklingurMedProkuru, - EFormApplicantTypes.einstaklingurUmbodsveitandi, - EFormApplicantTypes.logadili, -]) - -const formApplicantSchema = z.object({ - formId: z.number(), - applicantTypeId: z.number(), - name: languageSchema, - type: applicantTypesSchema, -}) as z.ZodSchema - -export const formSchema = z.object({ - id: z.number(), - name: languageSchema, - organization: z.object({ - id: z.number(), - name: languageSchema, - kennitala: z.string(), - scope: z.string(), - xroadBaseUrl: z.string(), - }), - created: z.date(), - lastChanged: z.date(), - invalidationDate: z.date().optional(), - dependencies: dependencySchema, - stepsList: z.array(stepSchema).default([]), - groupsList: z.array(groupSchema).default([]), - inputsList: z.array(inputSchema).default([]), - stopProgressOnValidatingStep: z.boolean(), - applicationsDaysToRemove: z.number(), - isTranslated: z.boolean(), - documentTypes: z.array(certificateSchema), - formApplicantTypes: z.array(formApplicantSchema), -}) as z.ZodSchema - -const inputTypeSchema = z.object({ - type: z.string(), - name: z.string(), - description: z.string(), - organizations: z.array(z.number()).optional(), - inputFields: z.object({}).optional(), - inputMetadata: z.object({}).optional(), - ruleset: z.object({}).optional(), - inputSettings: inputSettingsSchema, -}) as z.ZodSchema - -const applicantTypeSchema = z.object({ - id: z.number(), - name: languageSchema, - type: applicantTypesSchema, - nameSuggestions: z.array( - z.object({ - applicantTypeId: z.number(), - nameSuggestion: languageSchema, - }), - ), -}) as z.ZodSchema - -const listTypeSchema = z.object({ - id: z.number(), - type: z.string(), - name: languageSchema, - description: languageSchema, -}) as z.ZodSchema - -export const formsFormBuilderSchema = z.object({ - forms: z.array(formSchema), - form: formSchema.optional(), - documentTypes: z.array(certificateSchema).optional(), - inputTypes: z.array(inputTypeSchema).optional(), - applicantTypes: z.array(applicantTypeSchema).optional(), - listTypes: z.array(listTypeSchema).optional(), -}) as z.ZodSchema - -export const formFormBuilderSchema = z.object({ - forms: z.null(), - form: formSchema, - documentTypes: z.array(certificateSchema), - inputTypes: z.array(inputTypeSchema), - applicantTypes: z.array(applicantTypeSchema), - listTypes: z.array(listTypeSchema), -}) as z.ZodSchema diff --git a/apps/form-builder/tsconfig.json b/apps/form-builder/tsconfig.json deleted file mode 100644 index 528ab5176dcf..000000000000 --- a/apps/form-builder/tsconfig.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "jsx": "preserve", - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "resolveJsonModule": true, - "isolatedModules": true, - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "types": ["jest", "node"] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - "**/*.js", - "**/*.jsx", - "../../apps/form-builder/.next/types/**/*.ts", - "../../dist/apps/form-builder/.next/types/**/*.ts", - "next-env.d.ts" - ], - "exclude": [ - "node_modules", - "jest.config.ts", - "src/**/*.spec.ts", - "src/**/*.test.ts" - ] -} diff --git a/apps/form-builder/tsconfig.server.json b/apps/form-builder/tsconfig.server.json deleted file mode 100644 index 35605d15229c..000000000000 --- a/apps/form-builder/tsconfig.server.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "module": "commonjs", - "noEmit": false, - "incremental": true, - "tsBuildInfoFile": "../../tmp/buildcache/apps/form-builder/server", - "types": ["node"] - }, - "include": ["server.ts"] -} diff --git a/apps/form-builder/tsconfig.spec.json b/apps/form-builder/tsconfig.spec.json deleted file mode 100644 index 214b2cc208c1..000000000000 --- a/apps/form-builder/tsconfig.spec.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"], - "jsx": "react" - }, - "include": [ - "jest.config.ts", - "src/**/*.test.ts", - "src/**/*.spec.ts", - "src/**/*.test.tsx", - "src/**/*.spec.tsx", - "src/**/*.test.js", - "src/**/*.spec.js", - "src/**/*.test.jsx", - "src/**/*.spec.jsx", - "src/**/*.d.ts" - ] -} diff --git a/apps/form-builder/types/enums/index.tsx b/apps/form-builder/types/enums/index.tsx deleted file mode 100644 index fadfab2e4e4a..000000000000 --- a/apps/form-builder/types/enums/index.tsx +++ /dev/null @@ -1,100 +0,0 @@ -export enum ApplicationTemplateStatus { - Þýðing = -2, - Kerfi = -1, - Óútgefið = 0, - Útgefið = 2, - tekiðÚrNotkun = 4, -} - -export enum LicenseProviderEnum { - sýslumannsembættið = 1, - leyfisveitanEhf = 2, - leyfisveitanEhf2 = 9, - þjóðskráÍslands = 3, - ferðamálastofa = 4, - ferðamálastofa2 = 52, - menntamálastofnun = 5, - hallaBjörgBaldursdóttir = 6, - fiskistofa = 7, - officeOfDistrictMagistrate = 8, - registersIceland = 10, - icelandicTouristBoard = 11, - directorateOfEducation = 12, - hallaBjorgBaldursdottir = 13, - directorateOfFisheries = 14, - fjármálaOgEfnahagsráðuneytið = 15, - ministryOfFinanceAndEconomicAffairs = 16, - ríkisskattstjóri = 17, - ríkiskaup = 18, - sýslumaðurinnÁHöfuðborgarsvæðinu = 19, - sýslumaðurinnÁHöfuðborgarsvæðinu2 = 50, - theDistrictMagistrateCapitalRegion = 20, - centralPublicProcurement = 21, - directorateOfInternalRevenue = 22, - sýslumaðurinnÁVestfjörðum = 23, - theDistrictMagistrateWestfjords = 24, - útlendingastofnun = 37, - útlendingastofnun2 = 49, - icelandicDirectorateOfImmigration = 38, - utanríkisráðuneytið = 39, - ministryForForeignAffairs = 40, - ríkislögreglustjóri = 41, - ríkislögreglustjóri2 = 71, - sjúkratryggingarÍslands = 42, - sjúkratryggingarÍslands2 = 51, - þjóðskjalasafnÍslands = 43, - þjóðskjalasafnÍslands2 = 44, - sýslumenn = 53, - fjölskylduOgHúsdýragarðurinn = 59, - menntamálastofnun2 = 61, - umhverfisstofnun = 62, - héraðsdómurReykjavíkur = 63, - minjastofnunÍslands = 64, - náttúruhamfaratryggingarÍslands = 65, -} - -export enum FileTypeEnum { - PDF, - Image, - Xls, - ALL, -} - -export enum EInputType { - Textalínubox = 1, - TextaboxStórt = 2, - Tölustafir = 3, - Textalýsing = 4, - Hakbox = 5, - Dagssetning = 6, - Fellilisti = 7, - Valhnappar = 8, - Heimagistingarnúmer = 9, - FasteignanúmerInnslegið = 10, - FasteignanúmerValiðÚrLista = 11, - Bankareikningsnúmer = 13, - Kennitala = 14, - Greiðandi = 15, - Krónutala = 16, - Krónutölusamtala = 17, - Netfang = 18, - Símanúmer = 19, - FalinnStrengur = 20, - Tími = 21, - Sveitarfélög = 22, - Landalisti = 23, - Póstnúmer = 24, - KennitalaDánarbús = 25, - KennitalaAllt = 26, - Vottorð = 28, - Aðili = 29, -} - -export enum EFormApplicantTypes { - einstaklingur = 'Einstaklingur', - einstaklingurMedUmbodAnnarsEinstaklings = 'Einstaklingur_með_umboð_annars_einstaklings', - einstaklingurMedUmbodLogadila = 'Einstaklingur_með_umboð_lögaðila', - einstaklingurMedProkuru = 'Einstaklingur_með_prókúru', - einstaklingurUmbodsveitandi = 'Einstaklingur_umboðsveitandi', - logadili = 'Lögaðili', -} diff --git a/apps/form-builder/types/interfaces.tsx b/apps/form-builder/types/interfaces.tsx deleted file mode 100644 index 891c44c723ad..000000000000 --- a/apps/form-builder/types/interfaces.tsx +++ /dev/null @@ -1,253 +0,0 @@ -import { Dispatch, SetStateAction, FocusEvent } from 'react' -import { UniqueIdentifier } from '@dnd-kit/core' -import { EFormApplicantTypes } from './enums' -import { Action as ListsAction } from '../hooks/listsReducer' -import { FormAction } from '../hooks/formReducer' -import { FormHeaderAction } from '../hooks/headerInfoReducer' - -export type IFormBuilderContext = { - formBuilder: IFormBuilder - formDispatch: Dispatch - lists: { - activeItem: ActiveItem - steps: IStep[] - groups: IGroup[] - inputs: IInput[] - } - listsDispatch: Dispatch - formUpdate: () => Promise - inSettings: boolean - setInSettings: Dispatch> - setSelectStatus: Dispatch> - selectStatus: NavbarSelectStatus - activeListItem?: IListItem | null - setActiveListItem: Dispatch> - blur(e: FocusEvent): void - onFocus(e: string): void -} - -export interface IInputSettings { - $type?: string - isLarge?: boolean - size?: Sizes - interval?: string - erHlekkur?: boolean - url?: string - hnapptexti?: ILanguage - tegundir?: string[] - hamarksstaerd?: number - erFjolval?: boolean - fjoldi?: number - header?: string - hamarkslengd?: number - lagmarkslengd?: number - laggildi?: number - hagildi?: number - listi?: IListItem[] - type?: string - name?: ILanguage - erListi?: boolean - erInnslattur?: boolean - [key: string]: unknown -} - -export interface IForm { - id: number - name: ILanguage - created: Date - lastChanged: Date - organization: { - id: number - name: ILanguage - kennitala: string - scope: string - xroadBaseUrl: string - } - dependencies: ITenging - stepsList: IStep[] - groupsList: IGroup[] - inputsList: IInput[] - stopProgressOnValidatingStep: boolean - applicationsDaysToRemove: number - invalidationDate?: Date - isTranslated: boolean - documentTypes: ICertificate[] - formApplicantTypes: IFormApplicantType[] -} - -export interface IStep { - id: number - guid: UniqueIdentifier - displayOrder: number - name: ILanguage - type: string - waitingText: ILanguage - callRuleset: boolean - isHidden: boolean - isCompleted: boolean - groups: IGroup[] -} - -export interface IGroup { - id: number - name: ILanguage - guid: UniqueIdentifier - displayOrder: number - isHidden: boolean - multiSet: number - stepId: number - stepGuid: UniqueIdentifier - inputs?: IInput[] -} - -export interface IInput { - id: number - name: ILanguage - description: ILanguage - isRequired: boolean - displayOrder: number - groupId: number - groupGuid: UniqueIdentifier - isHidden: boolean - type: string - guid: UniqueIdentifier - inputFields: object - inputSettings: IInputSettings - isPartOfMultiSet: boolean -} - -export type ILists = { - activeItem: ActiveItem - steps: IStep[] - groups: IGroup[] - inputs: IInput[] - [key: string]: unknown -} - -export interface ActiveItem { - type: ItemType - data: IStep | IGroup | IInput -} - -export interface ISelectOption { - label: string | number - value: string | number -} - -export interface ITenging { - [key: string]: string[] -} - -export interface IFormBuilder { - form: IForm - forms?: IForm[] | null - documentTypes: ICertificate[] - inputTypes: IInputType[] - applicantTypes: IApplicantType[] - listTypes: IListType[] -} - -export interface IListType { - id: number - type: string - name: ILanguage - description: ILanguage -} - -export interface IListItem { - guid: UniqueIdentifier - label: ILanguage - description: ILanguage - displayOrder: number - isSelected: boolean -} - -export interface ICertificate { - id: number - type: string - name: ILanguage - description: ILanguage -} - -export interface IApplicantType { - id: number - name: ILanguage - type: EFormApplicantTypes - nameSuggestions: { - applicantTypeId: number - nameSuggestion: ILanguage - }[] -} - -export type IFormApplicantType = { - formId: number - applicantTypeId: number - name: ILanguage - type: EFormApplicantTypes -} - -export interface IFormDocumentType { - formId: number - documentTypeId: number -} - -export interface IInputType { - type: string - name: string - description: string - organizations?: [] - inputFields?: object - inputMetadata?: object - ruleset?: object - inputSettings: object -} - -export interface ILayoutContext { - info: { - organization: string - applicationName: string - } - infoDispatch: React.Dispatch -} - -export interface ILicenseProvider { - licenseProviderID: number - kennitala: string - name: string - email: string - phone: string - enabled: boolean - parentId?: number - language: string -} - -export interface ITranslationResponse { - translations: ITranslation[] - sourceLanguageCode: string - targetLanguageCode: string - model: string -} - -export interface ITranslation { - translatedText: string - translatedTextStructured: [string, string][] -} -export enum NavbarSelectStatus { - OFF = 'Off', - NORMAL = 'Normal', - LIST_ITEM = 'ListItem', - ON_WITHOUT_SELECT = 'OnWithoutSelect', -} - -export type ItemType = 'Step' | 'Group' | 'Input' - -export type ILanguage = { - is: string - en: string -} -export interface User { - name?: string - email?: string - image?: string -} -type Sizes = 'xs' | 'sm' | 'md' diff --git a/apps/form-builder/utils/defaultStep.tsx b/apps/form-builder/utils/defaultStep.tsx deleted file mode 100644 index 6130a25964f1..000000000000 --- a/apps/form-builder/utils/defaultStep.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { uuid } from 'uuidv4' -import { IStep } from '../types/interfaces' - -export const defaultStep: IStep = { - id: 0, - guid: uuid(), - displayOrder: 0, - name: { - is: '', - en: '', - }, - type: 'Innsláttur', - waitingText: { - is: '', - en: '', - }, - callRuleset: false, - isHidden: false, - isCompleted: false, -} diff --git a/apps/form-builder/utils/formatDate.tsx b/apps/form-builder/utils/formatDate.tsx deleted file mode 100644 index 7b16496029e6..000000000000 --- a/apps/form-builder/utils/formatDate.tsx +++ /dev/null @@ -1,8 +0,0 @@ -export const formatDate = (date: Date) => { - const newDate = new Date(date) - const day = newDate.getDate().toString().padStart(2, '0') - const month = (newDate.getMonth() + 1).toString().padStart(2, '0') - const year = newDate.getFullYear() - - return `${day}.${month}.${year}` //${hours}:${minutes}`; -} diff --git a/apps/form-builder/utils/getBaseSettingsStep.tsx b/apps/form-builder/utils/getBaseSettingsStep.tsx deleted file mode 100644 index 12844cbd9dbc..000000000000 --- a/apps/form-builder/utils/getBaseSettingsStep.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { uuid } from 'uuidv4' - -export const baseSettingsStep = { - id: 99999, - guid: uuid(), - displayOrder: -1, - name: { - is: 'Grunnstillingar', - en: 'Base settings', - }, - type: 'BaseSetting', - waitingText: { - is: '', - en: '', - }, - callRuleset: false, - isHidden: false, - isCompleted: false, - groups: [], -} From e2cb88e18c4e16d193b08227476588fbcdef1d2f Mon Sep 17 00:00:00 2001 From: andes-it Date: Fri, 26 Apr 2024 14:02:55 +0000 Subject: [PATCH 031/129] chore: charts update dirty files --- charts/islandis/values.dev.yaml | 1 + charts/islandis/values.prod.yaml | 1 + charts/islandis/values.staging.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/charts/islandis/values.dev.yaml b/charts/islandis/values.dev.yaml index 2a0cfaa6508d..d53d4f98cc1b 100644 --- a/charts/islandis/values.dev.yaml +++ b/charts/islandis/values.dev.yaml @@ -300,6 +300,7 @@ api: FINANCIAL_STATEMENTS_INAO_TOKEN_ENDPOINT: 'https://login.microsoftonline.com/05a20268-aaea-4bb5-bb78-960b0462185e/oauth2/v2.0/token' FISHING_LICENSE_XROAD_PROVIDER_ID: 'IS-DEV/GOV/10012/Fiskistofa-Protected/veidileyfi-v1' FISKISTOFA_ZENTER_CLIENT_ID: '1114' + FORM_SYSTEM_API_BASE_PATH: 'https://profun.island.is/umsoknarkerfi' HSN_WEB_FORM_ID: '1dimJFHLFYtnhoYEA3JxRK' HUNTING_LICENSE_PASS_TEMPLATE_ID: '1da72d52-a93a-4d0f-8463-1933a2bd210b' ICELANDIC_NAMES_REGISTRY_BACKEND_URL: 'http://web-icelandic-names-registry-backend.icelandic-names-registry.svc.cluster.local' diff --git a/charts/islandis/values.prod.yaml b/charts/islandis/values.prod.yaml index 3340e7ead6c7..00dbdcab3ce3 100644 --- a/charts/islandis/values.prod.yaml +++ b/charts/islandis/values.prod.yaml @@ -290,6 +290,7 @@ api: FINANCIAL_STATEMENTS_INAO_TOKEN_ENDPOINT: 'https://login.microsoftonline.com/05a20268-aaea-4bb5-bb78-960b0462185e/oauth2/v2.0/token' FISHING_LICENSE_XROAD_PROVIDER_ID: 'IS/GOV/6608922069/Fiskistofa-Protected/veidileyfi-v1' FISKISTOFA_ZENTER_CLIENT_ID: '1114' + FORM_SYSTEM_API_BASE_PATH: 'https://profun.island.is/umsoknarkerfi' HSN_WEB_FORM_ID: '1dimJFHLFYtnhoYEA3JxRK' HUNTING_LICENSE_PASS_TEMPLATE_ID: '5f42f942-d8d6-40bf-a186-5a9e12619d9f' ICELANDIC_NAMES_REGISTRY_BACKEND_URL: 'http://web-icelandic-names-registry-backend.icelandic-names-registry.svc.cluster.local' diff --git a/charts/islandis/values.staging.yaml b/charts/islandis/values.staging.yaml index 2ed0ed9a78ce..549a156908e5 100644 --- a/charts/islandis/values.staging.yaml +++ b/charts/islandis/values.staging.yaml @@ -300,6 +300,7 @@ api: FINANCIAL_STATEMENTS_INAO_TOKEN_ENDPOINT: 'https://login.microsoftonline.com/05a20268-aaea-4bb5-bb78-960b0462185e/oauth2/v2.0/token' FISHING_LICENSE_XROAD_PROVIDER_ID: 'IS-TEST/GOV/6608922069/Fiskistofa-Protected/veidileyfi-v1' FISKISTOFA_ZENTER_CLIENT_ID: '1114' + FORM_SYSTEM_API_BASE_PATH: 'https://profun.island.is/umsoknarkerfi' HSN_WEB_FORM_ID: '1dimJFHLFYtnhoYEA3JxRK' HUNTING_LICENSE_PASS_TEMPLATE_ID: '1da72d52-a93a-4d0f-8463-1933a2bd210b' ICELANDIC_NAMES_REGISTRY_BACKEND_URL: 'http://web-icelandic-names-registry-backend.icelandic-names-registry.svc.cluster.local' From 4aa133e7b89489a5d702b67b126ef18042e67cc9 Mon Sep 17 00:00:00 2001 From: andes-it Date: Fri, 26 Apr 2024 14:20:31 +0000 Subject: [PATCH 032/129] chore: nx format:write update dirty files --- .../src/lib/FormSystemClient.config.ts | 2 +- .../components/BaseSettings/BaseSettings.tsx | 10 +++++-- .../Preview/components/Banknumber.tsx | 1 - .../Preview/components/CheckboxPreview.tsx | 9 ++++--- .../components/Preview/components/List.tsx | 1 - .../Preview/components/NationalId.tsx | 7 ++++- .../form-system/src/lib/utils/updateDnd.ts | 27 +++++++++---------- 7 files changed, 32 insertions(+), 25 deletions(-) diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index 45555c468c6e..85ca437a20e2 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -13,7 +13,7 @@ export const FormSystemClientConfig = defineConfig({ basePath: env.required( 'FORM_SYSTEM_API_BASE_PATH', 'https://profun.island.is/umsoknarkerfi', - ) + ), } }, }) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index 232470d98c8b..7972a593d24e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -10,8 +10,14 @@ import { useContext } from 'react' import ControlContext from '../../../../context/ControlContext' export const BaseSettings = () => { - const { control, controlDispatch, setFocus, focus, formUpdate, updateSettings } = - useContext(ControlContext) + const { + control, + controlDispatch, + setFocus, + focus, + formUpdate, + updateSettings, + } = useContext(ControlContext) const { form } = control return ( diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx index 406d682e271f..2c77811188bd 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx @@ -8,7 +8,6 @@ import { FormSystemInput } from '@island.is/api/schema' interface Props { currentItem: FormSystemInput - } const Banknumber = ({ currentItem }: Props) => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx index 66629d5f7bb0..bc944f63dea2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx @@ -1,18 +1,19 @@ -import { FormSystemInput } from "@island.is/api/schema" -import { Checkbox } from "@island.is/island-ui/core" +import { FormSystemInput } from '@island.is/api/schema' +import { Checkbox } from '@island.is/island-ui/core' interface Props { currentItem: FormSystemInput } const CheckboxPreview = ({ currentItem }: Props) => { - return ( { console.log() }} + onChange={() => { + console.log() + }} /> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index a5d0256b9034..d9483ffc0f76 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -2,7 +2,6 @@ import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { useEffect, useState } from 'react' import { Select } from '@island.is/island-ui/core' - interface Props { currentItem: FormSystemInput } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx index dcc3b6306af8..a468f2037fc9 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx @@ -15,7 +15,12 @@ const NationalId = ({ currentItem }: Props) => { - + diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index f0fd9e8901bd..78d00f2fc4c7 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -1,7 +1,4 @@ -import { - FormSystemGroupInput, - FormSystemInput, -} from '@island.is/api/schema' +import { FormSystemGroupInput, FormSystemInput } from '@island.is/api/schema' import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' import { ControlState } from '../../hooks/controlReducer' import { ItemType } from './interfaces' @@ -43,17 +40,17 @@ export const updateDnd = ( form: { groupsList: groups?.map( (g) => - ({ - id: g?.id, - name: g?.name, - guid: g?.guid, - displayOrder: g?.displayOrder, - isHidden: (g?.isHidden ?? false) as boolean, - stepId: g?.stepId, - multiSet: g?.multiSet, - stepGuid: g?.stepGuid, - inputs: null, - } as FormSystemGroupInput), + ({ + id: g?.id, + name: g?.name, + guid: g?.guid, + displayOrder: g?.displayOrder, + isHidden: (g?.isHidden ?? false) as boolean, + stepId: g?.stepId, + multiSet: g?.multiSet, + stepGuid: g?.stepGuid, + inputs: null, + } as FormSystemGroupInput), ), }, }, From 15976d76a93345f276a5a31e189d2549a6ad78d7 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Tue, 30 Apr 2024 13:37:10 +0000 Subject: [PATCH 033/129] memoized functions in the root for form --- .../form-system/src/lib/FormSystemApiProvider.ts | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts index 85bba8e4103c..26b15ad1cd5a 100644 --- a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts +++ b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts @@ -12,18 +12,6 @@ import { ServicesApi, StepsApi, } from '../../gen/fetch' -import * as https from 'https' -import fetch, { RequestInfo, RequestInit } from 'node-fetch' - -const httpsAgent = new https.Agent({ - // remove - rejectUnauthorized: false, // This will ignore SSL certificates -}) - -const fetchWithHttpsAgent = ( - url: RequestInfo, - options: RequestInit | undefined, -) => fetch(url, { ...options, agent: httpsAgent }) //remove const provideApi = ( Api: new (configuration: Configuration) => T, @@ -37,7 +25,6 @@ const provideApi = ( name: 'form-system', organizationSlug: 'stafraent-island', logErrorResponseBody: true, - fetch: fetchWithHttpsAgent, // remove }), basePath: config.basePath, headers: { From 33d25d11c8e990a69cb5b61095f9833515b9d1e0 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Tue, 30 Apr 2024 13:37:29 +0000 Subject: [PATCH 034/129] memoized functions in the root form --- .../src/lib/FormSystemClient.config.ts | 3 +- .../form-system/src/screens/Form/Form.tsx | 50 ++++++++++++------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index 45555c468c6e..fdf2ba4bcdee 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -12,7 +12,8 @@ export const FormSystemClientConfig = defineConfig({ return { basePath: env.required( 'FORM_SYSTEM_API_BASE_PATH', - 'https://profun.island.is/umsoknarkerfi', + // 'https://profun.island.is/umsoknarkerfi', + 'https://localhost:51345' ) } }, diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 2e684c9c1994..2e9ac218c58e 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -1,5 +1,5 @@ import { useLoaderData } from 'react-router-dom' -import { useReducer, useState } from 'react' +import { useCallback, useEffect, useMemo, useReducer, useState } from 'react' import { NavbarSelectStatus } from '../../lib/utils/interfaces' import { FormLoaderResponse } from './Form.loader' import { ControlState, controlReducer } from '../../hooks/controlReducer' @@ -43,14 +43,6 @@ const Form = () => { const [updateInput] = useFormSystemUpdateInputMutation() const [updateForm] = useFormSystemUpdateFormMutation() const [updateFormSettings] = useFormSystemUpdateFormSettingsMutation() - const updateActiveItem = (updatedActiveItem?: ActiveItem) => - updateActiveItemFn( - control.activeItem, - updateStep, - updateGroup, - updateInput, - updatedActiveItem, - ) const initialControl: ControlState = { activeItem: { @@ -58,22 +50,44 @@ const Form = () => { data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find( - (s: FormSystemStep) => s?.type === 'Innsláttur', - ) ?? defaultStep, + (s: FormSystemStep) => s?.type === 'Innsláttur', + ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, } - const [control, controlDispatch] = useReducer(controlReducer, initialControl) - const updateDragAndDrop = (type: ItemType) => - updateDnd(type, control, updateForm) + const updateActiveItem = useCallback( + (updatedActiveItem?: ActiveItem) => + updateActiveItemFn( + control.activeItem, + updateStep, + updateGroup, + updateInput, + updatedActiveItem, + ), + [control.activeItem, updateStep, updateGroup, updateInput] + ) + + const updateDragAndDrop = useMemo(() => ((type: ItemType) => + updateDnd(type, control, updateForm)), [control, updateForm]) + + const updateSettings = useMemo( + () => (updatedForm?: FormSystemForm) => + us(control, updatedForm, updateFormSettings), + [control, updateFormSettings] + ) + + const formUpdate = useMemo( + () => (updatedForm?: FormSystemForm) => + entireFormUpdate(control, updateForm, updatedForm), + [control, updateForm] + ) - const updateSettings = (updatedForm?: FormSystemForm) => - us(control, updatedForm, updateFormSettings) - const formUpdate = (updatedForm?: FormSystemForm) => - entireFormUpdate(control, updateForm, updatedForm) + useEffect(() => { + console.log('form', form) + }, []) const context: IControlContext = { control, From 528662da70c122c0beb02649c8c3276d32bd038f Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 15 May 2024 15:43:24 +0000 Subject: [PATCH 035/129] Translation button for english fields --- .../components/MainContent/MainContent.tsx | 21 ++- .../components/BaseSettings/BaseSettings.tsx | 24 +++- .../InputContent/components/BaseInput.tsx | 12 +- .../InputSettings/components/ListSettings.tsx | 42 +++--- .../components/MessageWithLinkSettings.tsx | 14 +- .../ListBuilder/components/ListItem.tsx | 42 ++++++ .../Preview/components/Banknumber.tsx | 1 - .../Preview/components/CheckboxPreview.tsx | 9 +- .../components/Preview/components/List.tsx | 1 - .../Preview/components/NationalId.tsx | 7 +- .../Preview/components/TextInput.tsx | 1 + .../components/FormApplicantType.tsx | 28 ++-- .../src/components/Navbar/Navbar.tsx | 20 ++- .../form-system/src/context/ControlContext.ts | 13 ++ .../admin/form-system/src/gql/Service.graphql | 12 ++ .../form-system/src/hooks/controlReducer.ts | 6 +- .../src/lib/utils/getTranslationButtons.ts | 123 ++++++++++++++++ .../form-system/src/lib/utils/interfaces.ts | 103 ++++++++++++++ .../form-system/src/lib/utils/translation.ts | 15 ++ .../form-system/src/lib/utils/updateDnd.ts | 27 ++-- .../src/lib/utils/updateFormSettings.ts | 2 +- .../form-system/src/screens/Form/Form.tsx | 133 +++++++++++++----- 22 files changed, 549 insertions(+), 107 deletions(-) create mode 100644 libs/portals/admin/form-system/src/gql/Service.graphql create mode 100644 libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts create mode 100644 libs/portals/admin/form-system/src/lib/utils/translation.ts diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index 259d7e97af31..af7d4ab03362 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -15,13 +15,26 @@ import Premises from './components/Premises/Premises' import InputContent from './components/InputContent/InputContent' import PreviewStepOrGroup from './components/PreviewStepOrGroup/PreviewStepOrGroup' import RelevantParties from './components/RelevantParties/RevelantParties' +import { getTranslationButtons } from '../../lib/utils/getTranslationButtons' export default function MainContent() { - const { control, controlDispatch, updateActiveItem, setFocus, focus } = - useContext(ControlContext) + const { + control, + controlDispatch, + updateActiveItem, + setFocus, + focus, + translationButtons, + } = useContext(ControlContext) const { activeItem } = control const [openPreview, setOpenPreview] = useState(false) + const translateNameButton = getTranslationButtons( + activeItem?.data?.name?.is ?? '', + controlDispatch, + 'CHANGE_NAME', + ) + return ( {activeItem.type === 'Input' ? ( @@ -78,6 +91,10 @@ export default function MainContent() { } onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && updateActiveItem()} + buttons={translationButtons( + activeItem?.data?.name?.is ?? '', + 'CHANGE_NAME', + )} /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index 232470d98c8b..5fbb7f77296e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -10,8 +10,15 @@ import { useContext } from 'react' import ControlContext from '../../../../context/ControlContext' export const BaseSettings = () => { - const { control, controlDispatch, setFocus, focus, formUpdate, updateSettings } = - useContext(ControlContext) + const { + control, + controlDispatch, + setFocus, + focus, + formUpdate, + updateSettings, + translationButtons, + } = useContext(ControlContext) const { form } = control return ( @@ -48,6 +55,10 @@ export const BaseSettings = () => { payload: { lang: 'en', newValue: e.target.value }, }) } + buttons={translationButtons( + form?.name?.is ?? '', + 'CHANGE_FORM_NAME', + )} /> @@ -102,11 +113,10 @@ export const BaseSettings = () => { onChange={(e) => { controlDispatch({ type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP', - payload: { value: e.target.checked }, - }) - updateSettings({ - ...form, - stopProgressOnValidatingStep: e.target.checked, + payload: { + value: e.target.checked, + update: updateSettings, + }, }) }} /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx index 95543a0c3296..3706508b7921 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx @@ -20,6 +20,8 @@ const BaseInput = () => { focus, inputTypes, updateActiveItem, + translate, + translationButtons, } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput @@ -104,6 +106,10 @@ const BaseInput = () => { } onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && updateActiveItem()} + buttons={translationButtons( + currentItem?.name?.is ?? '', + 'CHANGE_NAME', + )} /> @@ -151,6 +157,10 @@ const BaseInput = () => { }, }) } + buttons={translationButtons( + currentItem?.description?.is ?? '', + 'CHANGE_DESCRIPTION', + )} /> @@ -162,7 +172,7 @@ const BaseInput = () => { + onChange={() => controlDispatch({ type: 'CHANGE_IS_REQUIRED', payload: { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index be5438543397..8a769eb1b307 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -10,23 +10,24 @@ import { RadioButton, } from '@island.is/island-ui/core' import { FormSystemInput } from '@island.is/api/schema' +import { useFormSystemGetCountriesLazyQuery } from '../../../../../../../gql/Service.generated' const predeterminedLists = [ { label: 'Sveitarfélög', - value: 'Sveitarfelog', + value: 0, }, { label: 'Lönd', - value: 'Lond', + value: 1, }, { label: 'Póstnúmer', - value: 'Postnumer', + value: 2, }, { label: 'Iðngreinarmeistara', - value: 'Idngreinarmeistara', + value: 3, }, ] @@ -36,14 +37,15 @@ const ListSettings = () => { const { activeItem } = control const currentItem = activeItem.data as FormSystemInput const [radio, setRadio] = useState([true, false, false]) + //const [getCountries, { data, loading, error }] = useFormSystemGetCountriesLazyQuery() const radioHandler = (index: number) => { - if (!radio[index]) - setRadio((prev) => - prev.map((_, i) => { - return index === i - }), - ) + // if (!radio[index]) + setRadio((prev) => + prev.map((_, i) => { + return index === i + }), + ) } return ( @@ -55,8 +57,8 @@ const ListSettings = () => { radioHandler(0)}> { - console.log() + onChange={() => { + radioHandler(0) }} checked={radio[0]} /> @@ -65,13 +67,15 @@ const ListSettings = () => { - { - console.log() - }} - checked={radio[1]} - /> + radioHandler(1)}> + { + radioHandler(1) + }} + checked={radio[1]} + /> + diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx index dc6003858e16..452d91bea864 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx @@ -10,8 +10,14 @@ import { import { FormSystemInput } from '@island.is/api/schema' const MessageWithLinkSettings = () => { - const { control, controlDispatch, focus, setFocus, updateActiveItem } = - useContext(ControlContext) + const { + control, + controlDispatch, + focus, + setFocus, + updateActiveItem, + translationButtons, + } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput const { inputSettings } = currentItem return ( @@ -75,6 +81,10 @@ const MessageWithLinkSettings = () => { } onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && updateActiveItem()} + buttons={translationButtons( + inputSettings?.buttonText?.is ?? '', + 'SET_MESSAGE_WITH_LINK_SETTINGS', + )} /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx index 1aaecd3d91dc..fa84d0d8192f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx @@ -11,6 +11,7 @@ import ControlContext from '../../../../../../../context/ControlContext' import { useSortable } from '@dnd-kit/sortable' import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { NavbarSelectStatus } from '../../../../../../../lib/utils/interfaces' +import { translate } from '../../../../../../../lib/utils/translation' interface Props { listItem: FormSystemListItem @@ -27,6 +28,7 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { focus, setSelectStatus, updateActiveItem, + translate, } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput @@ -236,6 +238,25 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { }, }) } + buttons={[ + { + label: 'Translate', + name: 'reader', + onClick: async () => { + const translation = await translate(listItem?.label?.is ?? '') + controlDispatch({ + type: 'CHANGE_LIST_ITEM', + payload: { + property: 'label', + lang: 'en', + value: translation, + guid: listItem.guid ?? '', + update: updateActiveItem, + }, + }) + }, + }, + ]} /> @@ -286,6 +307,27 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { }, }) } + buttons={[ + { + label: 'Translate', + name: 'reader', + onClick: async () => { + const translation = await translate( + listItem?.description?.is ?? '', + ) + controlDispatch({ + type: 'CHANGE_LIST_ITEM', + payload: { + property: 'description', + lang: 'en', + value: translation, + guid: listItem.guid ?? '', + update: updateActiveItem, + }, + }) + }, + }, + ]} /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx index 406d682e271f..2c77811188bd 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx @@ -8,7 +8,6 @@ import { FormSystemInput } from '@island.is/api/schema' interface Props { currentItem: FormSystemInput - } const Banknumber = ({ currentItem }: Props) => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx index 66629d5f7bb0..bc944f63dea2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx @@ -1,18 +1,19 @@ -import { FormSystemInput } from "@island.is/api/schema" -import { Checkbox } from "@island.is/island-ui/core" +import { FormSystemInput } from '@island.is/api/schema' +import { Checkbox } from '@island.is/island-ui/core' interface Props { currentItem: FormSystemInput } const CheckboxPreview = ({ currentItem }: Props) => { - return ( { console.log() }} + onChange={() => { + console.log() + }} /> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index a5d0256b9034..d9483ffc0f76 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -2,7 +2,6 @@ import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { useEffect, useState } from 'react' import { Select } from '@island.is/island-ui/core' - interface Props { currentItem: FormSystemInput } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx index dcc3b6306af8..a468f2037fc9 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/NationalId.tsx @@ -15,7 +15,12 @@ const NationalId = ({ currentItem }: Props) => { - + diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx index 7ee4c6d0f0f6..c6a93bcaf642 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TextInput.tsx @@ -13,6 +13,7 @@ const TextInput = ({ data }: Props) => { label={data?.name?.is ?? ''} name="text" textarea={inputSettings?.isLarge ?? false} + required={data?.isRequired ?? false} /> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx index 5aae9e7295f2..193ed8e2b3d2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react' +import React, { useContext, useState } from 'react' import { Box, GridColumn as Column, @@ -12,6 +12,7 @@ import { FormSystemFormApplicantType, FormSystemLanguageType, } from '@island.is/api/schema' +import ControlContext from '../../../../../context/ControlContext' interface Props { title: string @@ -45,9 +46,9 @@ const FormApplicantType = ({ setFormApplicantTypes, isOther, }: Props) => { - const [inputEnabled, setInputEnabled] = useState(false) + const [inputEnabled, setInputEnabled] = useState(isOther) const other = { label: 'Annað', value: 'Annað' } - + const { translate } = useContext(ControlContext) const getOptions = () => { const options = nameSuggestions?.map((suggestion) => { @@ -69,10 +70,7 @@ const FormApplicantType = ({ } } - const handleInputChange = ( - e: React.ChangeEvent, - language: 'is' | 'en', - ) => { + const handleInputChange = (value: string, language: 'is' | 'en') => { setFormApplicantTypes((prev: FormSystemFormApplicantType[]) => { const newApplicantTypes = prev.map( (f: FormSystemFormApplicantType, i: number) => { @@ -81,7 +79,7 @@ const FormApplicantType = ({ ...f, name: { ...f.name, - [language]: e.target.value, + [language]: value, }, } } @@ -128,7 +126,7 @@ const FormApplicantType = ({ disabled={!inputEnabled} onFocus={(e) => setOnFocus(e.target.value)} onBlur={(e) => blur(e.target.value)} - onChange={(e) => handleInputChange(e, 'is')} + onChange={(e) => handleInputChange(e.target.value, 'is')} /> @@ -140,7 +138,17 @@ const FormApplicantType = ({ disabled={!inputEnabled} onFocus={(e) => setOnFocus(e.target.value)} onBlur={(e) => blur(e.target.value)} - onChange={(e) => handleInputChange(e, 'en')} + onChange={(e) => handleInputChange(e.target.value, 'en')} + buttons={[ + { + label: 'Translate', + name: 'reader', + onClick: async () => { + const translation = await translate(name.is ?? '') + handleInputChange(translation, 'en') + }, + }, + ]} /> diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 6e4f2a0c5682..4466d93c7ffc 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -34,11 +34,18 @@ type DndAction = | 'INPUT_OVER_INPUT' export default function Navbar() { - const { control, controlDispatch, setInSettings, inSettings, formUpdate } = - useContext(ControlContext) as IControlContext + const { + control, + controlDispatch, + setInSettings, + inSettings, + formUpdate, + translate, + } = useContext(ControlContext) as IControlContext const { activeItem, form } = control const { stepsList: steps, groupsList: groups, inputsList: inputs } = form + const stepsIds = useMemo( () => steps @@ -94,6 +101,7 @@ export default function Navbar() { } const focusComponent = (type: ItemType, id: UniqueIdentifier) => { + console.log('dasdsadasdsada') const data = type === 'Step' ? steps?.find( @@ -347,6 +355,14 @@ export default function Navbar() { + Bæta við skrefi + {/* + + */} ) } diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index 46b8aad1460d..978bc05305fc 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -10,6 +10,8 @@ import { } from '@island.is/api/schema' import { ActiveItem, + ButtonTypes, + InputButton, ItemType, NavbarSelectStatus, } from '../lib/utils/interfaces' @@ -33,6 +35,8 @@ export interface IControlContext { inListBuilder: boolean setInListBuilder: Dispatch updateSettings: (updatedForm?: FormSystemForm) => void + translate: (text: string) => Promise + translationButtons: (text: string, type: ButtonTypes) => InputButton[] } const ControlContext = createContext({ @@ -72,6 +76,15 @@ const ControlContext = createContext({ updateSettings: function (_updatedForm?: FormSystemForm): void { throw new Error('Function not implemented.') }, + translate: function (_text: string): Promise { + throw new Error('Function not implemented.') + }, + translationButtons: function ( + _text: string, + _type: ButtonTypes, + ): InputButton[] { + throw new Error('Function not implemented.') + }, }) export default ControlContext diff --git a/libs/portals/admin/form-system/src/gql/Service.graphql b/libs/portals/admin/form-system/src/gql/Service.graphql new file mode 100644 index 000000000000..ed818befe9c9 --- /dev/null +++ b/libs/portals/admin/form-system/src/gql/Service.graphql @@ -0,0 +1,12 @@ +mutation formSystemGetTranslation($input: FormSystemGetTranslationInput!) { + formSystemGetTranslation(input: $input) { + translations + } +} + +query formSystemGetCountries { + formSystemGetCountries { + listType + list + } +} diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index 236fb3521be2..f43c6b16e31e 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -82,7 +82,7 @@ type ChangeActions = | { type: 'CHANGE_INVALIDATION_DATE'; payload: { value: Date } } | { type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP' - payload: { value: boolean } + payload: { value: boolean; update: (updatedForm: FormSystemForm) => void } } | { type: 'CHANGE_FORM_SETTINGS'; payload: { newForm: FormSystemForm } } | { @@ -435,13 +435,15 @@ export const controlReducer = ( } } case 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP': { - return { + const updatedState = { ...state, form: { ...form, stopProgressOnValidatingStep: action.payload.value, }, } + action.payload.update({ ...updatedState.form }) + return updatedState } case 'TOGGLE_DEPENDENCY': { const { activeId, itemId, update } = action.payload diff --git a/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts b/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts new file mode 100644 index 000000000000..69828828e27a --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts @@ -0,0 +1,123 @@ +import { Dispatch } from 'react' +import { ControlAction } from '../../hooks/controlReducer' +import { translate } from './translation' + +type Types = 'CHANGE_NAME' | 'CHANGE_FORM_NAME' | 'CHANGE_DESCRIPTION' +type Icon = + | 'archive' + | 'accessibility' + | 'add' + | 'airplane' + | 'arrowForward' + | 'arrowBack' + | 'arrowUp' + | 'arrowDown' + | 'attach' + | 'business' + | 'calculator' + | 'calendar' + | 'call' + | 'car' + | 'cardWithCheckmark' + | 'caretDown' + | 'caretUp' + | 'cellular' + | 'chatbubble' + | 'checkmark' + | 'checkmarkCircle' + | 'chevronBack' + | 'chevronUp' + | 'chevronDown' + | 'chevronForward' + | 'closeCircle' + | 'close' + | 'copy' + | 'document' + | 'documents' + | 'dots' + | 'download' + | 'ellipse' + | 'ellipsisHorizontal' + | 'ellipsisVertical' + | 'expand' + | 'eye' + | 'eyeOff' + | 'facebook' + | 'fileTrayFull' + | 'filter' + | 'heart' + | 'home' + | 'homeWithCar' + | 'informationCircle' + | 'link' + | 'location' + | 'lockClosed' + | 'lockOpened' + | 'logOut' + | 'mail' + | 'mailOpen' + | 'menu' + | 'notifications' + | 'open' + | 'pencil' + | 'people' + | 'person' + | 'playCircle' + | 'pause' + | 'pauseCircle' + | 'print' + | 'reader' + | 'receipt' + | 'removeCircle' + | 'school' + | 'search' + | 'settings' + | 'star' + | 'time' + | 'timer' + | 'trash' + | 'volumeHigh' + | 'volumeMute' + | 'wallet' + | 'warning' + | 'reload' + | 'remove' + | 'save' + | 'bookmark' + | 'share' + | 'QRCode' + | 'globe' + | 'signLanguage' + | 'listView' + | 'gridView' + | 'swapVertical' + | 'thumbsUp' + | 'thumbsDown' + +type InputButton = { + label: string + name: Icon + onClick: () => void +} +export const getTranslationButtons = ( + text: string, + controlDispatch: Dispatch, + type: Types, +): InputButton[] => { + return [ + { + label: 'Translate', + name: 'reader', + onClick: async () => { + const translation = await translate(text) + controlDispatch({ + type: type, + payload: { + lang: 'en', + newValue: translation, + }, + }) + }, + }, + ] +} diff --git a/libs/portals/admin/form-system/src/lib/utils/interfaces.ts b/libs/portals/admin/form-system/src/lib/utils/interfaces.ts index 20bf6ccc41a3..83a18d205ec6 100644 --- a/libs/portals/admin/form-system/src/lib/utils/interfaces.ts +++ b/libs/portals/admin/form-system/src/lib/utils/interfaces.ts @@ -115,3 +115,106 @@ export enum ApplicationTemplateStatus { Útgefið = 2, tekiðÚrNotkun = 4, } + +export type ButtonTypes = + | 'CHANGE_NAME' + | 'CHANGE_FORM_NAME' + | 'CHANGE_DESCRIPTION' + | 'SET_MESSAGE_WITH_LINK_SETTINGS' + +type Icon = + | 'archive' + | 'accessibility' + | 'add' + | 'airplane' + | 'arrowForward' + | 'arrowBack' + | 'arrowUp' + | 'arrowDown' + | 'attach' + | 'business' + | 'calculator' + | 'calendar' + | 'call' + | 'car' + | 'cardWithCheckmark' + | 'caretDown' + | 'caretUp' + | 'cellular' + | 'chatbubble' + | 'checkmark' + | 'checkmarkCircle' + | 'chevronBack' + | 'chevronUp' + | 'chevronDown' + | 'chevronForward' + | 'closeCircle' + | 'close' + | 'copy' + | 'document' + | 'documents' + | 'dots' + | 'download' + | 'ellipse' + | 'ellipsisHorizontal' + | 'ellipsisVertical' + | 'expand' + | 'eye' + | 'eyeOff' + | 'facebook' + | 'fileTrayFull' + | 'filter' + | 'heart' + | 'home' + | 'homeWithCar' + | 'informationCircle' + | 'link' + | 'location' + | 'lockClosed' + | 'lockOpened' + | 'logOut' + | 'mail' + | 'mailOpen' + | 'menu' + | 'notifications' + | 'open' + | 'pencil' + | 'people' + | 'person' + | 'playCircle' + | 'pause' + | 'pauseCircle' + | 'print' + | 'reader' + | 'receipt' + | 'removeCircle' + | 'school' + | 'search' + | 'settings' + | 'star' + | 'time' + | 'timer' + | 'trash' + | 'volumeHigh' + | 'volumeMute' + | 'wallet' + | 'warning' + | 'reload' + | 'remove' + | 'save' + | 'bookmark' + | 'share' + | 'QRCode' + | 'globe' + | 'signLanguage' + | 'listView' + | 'gridView' + | 'swapVertical' + | 'thumbsUp' + | 'thumbsDown' + +export type InputButton = { + label: string + name: Icon + onClick: () => void +} diff --git a/libs/portals/admin/form-system/src/lib/utils/translation.ts b/libs/portals/admin/form-system/src/lib/utils/translation.ts new file mode 100644 index 000000000000..8db66fac8678 --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/translation.ts @@ -0,0 +1,15 @@ +import { useFormSystemGetTranslationMutation } from '../../gql/Service.generated' + +export const translate = async ( + text: string, + getTranslation = useFormSystemGetTranslationMutation()[0], +) => { + const { data } = await getTranslation({ + variables: { + input: { + contents: [text], + }, + }, + }) + return data?.formSystemGetTranslation.translations[0].translatedText ?? text +} diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index f0fd9e8901bd..78d00f2fc4c7 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -1,7 +1,4 @@ -import { - FormSystemGroupInput, - FormSystemInput, -} from '@island.is/api/schema' +import { FormSystemGroupInput, FormSystemInput } from '@island.is/api/schema' import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' import { ControlState } from '../../hooks/controlReducer' import { ItemType } from './interfaces' @@ -43,17 +40,17 @@ export const updateDnd = ( form: { groupsList: groups?.map( (g) => - ({ - id: g?.id, - name: g?.name, - guid: g?.guid, - displayOrder: g?.displayOrder, - isHidden: (g?.isHidden ?? false) as boolean, - stepId: g?.stepId, - multiSet: g?.multiSet, - stepGuid: g?.stepGuid, - inputs: null, - } as FormSystemGroupInput), + ({ + id: g?.id, + name: g?.name, + guid: g?.guid, + displayOrder: g?.displayOrder, + isHidden: (g?.isHidden ?? false) as boolean, + stepId: g?.stepId, + multiSet: g?.multiSet, + stepGuid: g?.stepGuid, + inputs: null, + } as FormSystemGroupInput), ), }, }, diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts index 77b0dd249756..6cf270f9a973 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts @@ -13,7 +13,7 @@ export const updateSettings = ( formId: form.id, documentTypeId: dt?.id, })) - console.log('form', form) + console.log('updateSettings', form) updateFormSettings({ variables: { input: { diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 2e9ac218c58e..a773eb21d472 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -1,6 +1,10 @@ import { useLoaderData } from 'react-router-dom' -import { useCallback, useEffect, useMemo, useReducer, useState } from 'react' -import { NavbarSelectStatus } from '../../lib/utils/interfaces' +import { Profiler, useCallback, useEffect, useReducer, useState } from 'react' +import { + ButtonTypes, + InputButton, + NavbarSelectStatus, +} from '../../lib/utils/interfaces' import { FormLoaderResponse } from './Form.loader' import { ControlState, controlReducer } from '../../hooks/controlReducer' import { baseSettingsStep } from '../../utils/getBaseSettingsStep' @@ -26,6 +30,9 @@ import { removeTypename } from '../../lib/utils/removeTypename' import NavbarSelect from '../../components/NavbarSelect/NavbarSelect' import { useFormSystemUpdateFormSettingsMutation } from '../../gql/FormSettings.generated' import { updateSettings as us } from '../../lib/utils/updateFormSettings' +import { useFormSystemGetTranslationMutation } from '../../gql/Service.generated' +import { text } from 'stream/consumers' +import { translate as translationStation } from '../../lib/utils/translation' const Form = () => { const { formBuilder } = useLoaderData() as FormLoaderResponse @@ -43,6 +50,7 @@ const Form = () => { const [updateInput] = useFormSystemUpdateInputMutation() const [updateForm] = useFormSystemUpdateFormMutation() const [updateFormSettings] = useFormSystemUpdateFormSettingsMutation() + const [getTranslation] = useFormSystemGetTranslationMutation() const initialControl: ControlState = { activeItem: { @@ -50,8 +58,8 @@ const Form = () => { data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find( - (s: FormSystemStep) => s?.type === 'Innsláttur', - ) ?? defaultStep, + (s: FormSystemStep) => s?.type === 'Innsláttur', + ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, @@ -67,23 +75,59 @@ const Form = () => { updateInput, updatedActiveItem, ), - [control.activeItem, updateStep, updateGroup, updateInput] + [control.activeItem, updateStep, updateGroup, updateInput], ) - const updateDragAndDrop = useMemo(() => ((type: ItemType) => - updateDnd(type, control, updateForm)), [control, updateForm]) + const translate = (text: string) => translationStation(text, getTranslation) + const translationButtons = ( + text: string, + type: ButtonTypes, + ): InputButton[] => { + if (type === 'SET_MESSAGE_WITH_LINK_SETTINGS') { + return [ + { + label: 'Translate', + name: 'reader', + onClick: async () => { + const translation = await translate(text) + controlDispatch({ + type: type, + payload: { + property: 'buttonText', + lang: 'en', + value: translation, + }, + }) + }, + }, + ] + } + return [ + { + label: 'Translate', + name: 'reader', + onClick: async () => { + const translation = await translate(text) + controlDispatch({ + type: type, + payload: { + lang: 'en', + newValue: translation, + }, + }) + }, + }, + ] + } - const updateSettings = useMemo( - () => (updatedForm?: FormSystemForm) => - us(control, updatedForm, updateFormSettings), - [control, updateFormSettings] - ) + const updateDragAndDrop = (type: ItemType) => + updateDnd(type, control, updateForm) - const formUpdate = useMemo( - () => (updatedForm?: FormSystemForm) => - entireFormUpdate(control, updateForm, updatedForm), - [control, updateForm] - ) + const updateSettings = (updatedForm?: FormSystemForm) => + us(control, updatedForm, updateFormSettings) + + const formUpdate = (updatedForm?: FormSystemForm) => + entireFormUpdate(control, updateForm, updatedForm) useEffect(() => { console.log('form', form) @@ -108,34 +152,45 @@ const Form = () => { inListBuilder, setInListBuilder, updateSettings, + translate, + translationButtons, } if (!form) { return
Loading...
} return ( - - - - {selectStatus !== NavbarSelectStatus.OFF ? ( - - ) : ( - - )} - - - - - - - - + { + const { [1]: phase, [2]: actualDuration } = args + + console.log({ phase, actualDuration }) + }} + > + + + + {selectStatus !== NavbarSelectStatus.OFF ? ( + + ) : ( + + )} + + + + + + + + + ) } From b45cb0ba0717baa4910b35ddb9863e3c21246b66 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 15 May 2024 15:44:32 +0000 Subject: [PATCH 036/129] More mideind translation --- apps/api/infra/api.ts | 1 + apps/portals/admin/infra/portals-admin.ts | 1 + .../form-system/src/dto/services.input.ts | 7 ++++ .../src/lib/forms/forms.service.ts | 21 ++--------- .../src/lib/services/services.resolver.ts | 17 +++++++-- .../src/lib/services/services.service.ts | 36 +++++++++++++++++-- .../form-system/src/models/services.model.ts | 24 ++++++++++++- .../src/lib/FormSystemClient.config.ts | 6 ++-- 8 files changed, 86 insertions(+), 27 deletions(-) diff --git a/apps/api/infra/api.ts b/apps/api/infra/api.ts index 18252e3c16d0..cba04d98656e 100644 --- a/apps/api/infra/api.ts +++ b/apps/api/infra/api.ts @@ -382,6 +382,7 @@ export const serviceSetup = (services: { '/k8s/api/WATSON_ASSISTANT_CHAT_FEEDBACK_API_KEY', LICENSE_SERVICE_BARCODE_SECRET_KEY: '/k8s/api/LICENSE_SERVICE_BARCODE_SECRET_KEY', + FORM_SYSTEM_MIDEIND_KEY: '/k8s/api/form-system/FORM_SYSTEM_MIDEIND_KEY', }) .xroad( AdrAndMachine, diff --git a/apps/portals/admin/infra/portals-admin.ts b/apps/portals/admin/infra/portals-admin.ts index 99de435d5f2f..338a6fe3492d 100644 --- a/apps/portals/admin/infra/portals-admin.ts +++ b/apps/portals/admin/infra/portals-admin.ts @@ -27,6 +27,7 @@ export const serviceSetup = (): ServiceBuilder<'portals-admin'> => SI_PUBLIC_CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY', SI_PUBLIC_DD_RUM_APPLICATION_ID: '/k8s/DD_RUM_APPLICATION_ID', SI_PUBLIC_DD_RUM_CLIENT_TOKEN: '/k8s/DD_RUM_CLIENT_TOKEN', + FORM_SYSTEM_MIDEIND_KEY: '/k8s/portals-admin/FORM_SYSTEM_MIDEIND_KEY', }) .ingress({ primary: { diff --git a/libs/api/domains/form-system/src/dto/services.input.ts b/libs/api/domains/form-system/src/dto/services.input.ts index 1e37aa380c2f..d33b92dc2c10 100644 --- a/libs/api/domains/form-system/src/dto/services.input.ts +++ b/libs/api/domains/form-system/src/dto/services.input.ts @@ -1,7 +1,14 @@ import { Field, InputType } from '@nestjs/graphql' +import graphqlTypeJson from 'graphql-type-json' @InputType('FormSystemGetPropertyInput') export class GetPropertyInput { @Field(() => String) propertyId!: string } + +@InputType('FormSystemGetTranslationInput') +export class GetTranslationInput { + @Field(() => [String]) + contents: string[] = [] +} diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index be5d4c50952f..3259568fb822 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -22,7 +22,6 @@ import { import { FormResponse } from '../../models/formResponse.model' import { FormListResponse } from '../../models/formListResponse.model' import { UpdateFormSettingsInput } from '../../dto/updateFormSettings.input' -import { InputSettings } from '../../models/inputSettings.model' @Injectable() export class FormsService { @@ -65,19 +64,7 @@ export class FormsService { if (!response || response instanceof ApolloError) { return {} } - // const formattedResponse = { - // ...response, - // inputsList: response.form?.inputsList?.map((input) => { - // const { type, ...newInputSettings } = input.inputSettings as InputSettings - // return { - // ...input, - // inputSettings: { - // ...newInputSettings, - // $type: type - // } - // } - // }) - // } + return response as FormResponse } @@ -140,10 +127,7 @@ export class FormsService { formId: input.formId, formUpdateDto: formattedForm as FormUpdateDto, } - // const request: ApiFormsFormIdPutRequest = { - // formId: input.formId, - // formUpdateDto: input.form as FormUpdateDto - // } + console.log(request) const response = await this.formsApiWithAuth(auth) .apiFormsFormIdPut(request) .catch((e) => this.handle4xx(e, 'failed to update form')) @@ -162,6 +146,7 @@ export class FormsService { formSettingsUpdateDto: input.formSettingsUpdateDto as FormSettingsUpdateDto, } + console.log(request) const response = await this.formsApiWithAuth(auth) .apiFormsFormIdSettingsPut(request) .catch((e) => this.handle4xx(e, 'failed to update form settings')) diff --git a/libs/api/domains/form-system/src/lib/services/services.resolver.ts b/libs/api/domains/form-system/src/lib/services/services.resolver.ts index 1ba7e31fdf96..a227892886b6 100644 --- a/libs/api/domains/form-system/src/lib/services/services.resolver.ts +++ b/libs/api/domains/form-system/src/lib/services/services.resolver.ts @@ -1,12 +1,12 @@ -import { Query, Args, Resolver } from '@nestjs/graphql' +import { Query, Args, Resolver, Mutation } from '@nestjs/graphql' import { CurrentUser, IdsUserGuard, type User, } from '@island.is/auth-nest-tools' import { FormSystemService } from './services.service' -import { List } from '../../models/services.model' -import { GetPropertyInput } from '../../dto/services.input' +import { List, Translation } from '../../models/services.model' +import { GetPropertyInput, GetTranslationInput } from '../../dto/services.input' import { Audit } from '@island.is/nest/audit' import { UseGuards } from '@nestjs/common' @@ -60,4 +60,15 @@ export class FormSystemServicesResolver { ): Promise { return this.formSystemServices.getProperty(user, input) } + + @Mutation(() => Translation, { + name: 'formSystemGetTranslation', + }) + async getTranslation( + @Args('input', { type: () => GetTranslationInput }) + input: GetTranslationInput, + @CurrentUser() user: User, + ): Promise { + return this.formSystemServices.getTranslation(user, input) + } } diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index 01cc128c4544..d0bee9171b1d 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -6,8 +6,8 @@ import { ApiServicesFasteignFasteignanumerGetRequest, ServicesApi, } from '@island.is/clients/form-system' -import { List } from '../../models/services.model' -import { GetPropertyInput } from '../../dto/services.input' +import { List, Translation } from '../../models/services.model' +import { GetPropertyInput, GetTranslationInput } from '../../dto/services.input' @Injectable() export class FormSystemService { @@ -109,4 +109,36 @@ export class FormSystemService { return response as List } + + async getTranslation( + auth: User, + input: GetTranslationInput, + ): Promise { + const { FORM_SYSTEM_MIDEIND_KEY } = process.env + const response = await fetch('https://api.greynir.is/translate/', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + 'X-API-Key': FORM_SYSTEM_MIDEIND_KEY || '', + }, + body: JSON.stringify({ + contents: input.contents, + sourceLanguageCode: 'is', + targetLanguageCode: 'en', + model: '', + domain: '', + }), + }) + if (!response.ok) { + throw new Error('Failed to get translation') + } + const result = await response.json() + return { + translations: result.translations ?? [], + sourceLanguageCode: result.sourceLanguageCode ?? '', + targetLanguageCode: result.targetLanguageCode ?? '', + model: result.model ?? '', + } as Translation + } } diff --git a/libs/api/domains/form-system/src/models/services.model.ts b/libs/api/domains/form-system/src/models/services.model.ts index 3470c93d85b3..6fe3d95c185b 100644 --- a/libs/api/domains/form-system/src/models/services.model.ts +++ b/libs/api/domains/form-system/src/models/services.model.ts @@ -1,5 +1,6 @@ import { Field, ObjectType } from '@nestjs/graphql' import { ListItem } from './inputSettings.model' +import graphqlTypeJson from 'graphql-type-json' @ObjectType('FormSystemList') export class List { @@ -7,5 +8,26 @@ export class List { listType?: string @Field(() => [ListItem], { nullable: 'itemsAndList' }) - listi?: ListItem[] + list?: ListItem[] +} + +@ObjectType('FormSystemTranslation') +export class Translation { + @Field(() => [graphqlTypeJson]) + translations: object[] = [] + + @Field() + sourceLanguageCode: string + + @Field() + targetLanguageCode: string + + @Field() + model: string + + constructor() { + this.sourceLanguageCode = 'is' + this.targetLanguageCode = 'en' + this.model = '' + } } diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index fdf2ba4bcdee..c26248361e53 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -12,9 +12,9 @@ export const FormSystemClientConfig = defineConfig({ return { basePath: env.required( 'FORM_SYSTEM_API_BASE_PATH', - // 'https://profun.island.is/umsoknarkerfi', - 'https://localhost:51345' - ) + 'https://profun.island.is/umsoknarkerfi', + // 'https://localhost:51345' + ), } }, }) From 67370accd0fc67128d4f51c1212b2640247ba4c4 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 15 May 2024 15:45:17 +0000 Subject: [PATCH 037/129] service.graphql --- libs/portals/admin/form-system/src/gql/Service.graphql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libs/portals/admin/form-system/src/gql/Service.graphql b/libs/portals/admin/form-system/src/gql/Service.graphql index ed818befe9c9..75aaecc53076 100644 --- a/libs/portals/admin/form-system/src/gql/Service.graphql +++ b/libs/portals/admin/form-system/src/gql/Service.graphql @@ -1,4 +1,6 @@ -mutation formSystemGetTranslation($input: FormSystemGetTranslationInput!) { +mutation formSystemGetTranslation( + $input: FormSystemGetTranslationInput! +) { formSystemGetTranslation(input: $input) { translations } @@ -10,3 +12,4 @@ query formSystemGetCountries { list } } + From 10fa9e49ed2a7eb43f2e8e34bebf275e58eb5ca3 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 16 May 2024 15:18:01 +0000 Subject: [PATCH 038/129] Users can choose static lists for Input type List --- libs/portals/admin/form-system/README.md | 4 + .../InputSettings/components/ListSettings.tsx | 50 +++++++++- .../components/Preview/components/List.tsx | 95 +++++++++++++++++-- .../admin/form-system/src/gql/Service.graphql | 52 +++++++++- .../form-system/src/hooks/controlReducer.ts | 32 +++++++ .../form-system/src/screens/Form/Form.tsx | 53 +++++------ 6 files changed, 237 insertions(+), 49 deletions(-) diff --git a/libs/portals/admin/form-system/README.md b/libs/portals/admin/form-system/README.md index 8b235a523af8..bc3f5c3cfc48 100644 --- a/libs/portals/admin/form-system/README.md +++ b/libs/portals/admin/form-system/README.md @@ -5,3 +5,7 @@ This library was generated with [Nx](https://nx.dev). ## Running unit tests Run `nx test form-system` to execute the unit tests via [Jest](https://jestjs.io). + +## Running codegen + +yarn nx run portals-admin-form-system:codegen/frontend-client diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index 8a769eb1b307..de77279dfe1e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -10,7 +10,6 @@ import { RadioButton, } from '@island.is/island-ui/core' import { FormSystemInput } from '@island.is/api/schema' -import { useFormSystemGetCountriesLazyQuery } from '../../../../../../../gql/Service.generated' const predeterminedLists = [ { @@ -29,15 +28,19 @@ const predeterminedLists = [ label: 'Iðngreinarmeistara', value: 3, }, + { + label: 'Skráningarflokkar', + value: 4, + }, ] // Need to fix the radio buttons const ListSettings = () => { - const { control, setInListBuilder } = useContext(ControlContext) + const { control, setInListBuilder, controlDispatch, updateActiveItem } = + useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput const [radio, setRadio] = useState([true, false, false]) - //const [getCountries, { data, loading, error }] = useFormSystemGetCountriesLazyQuery() const radioHandler = (index: number) => { // if (!radio[index]) @@ -48,13 +51,41 @@ const ListSettings = () => { ) } + const getListType = (index: number) => { + switch (index) { + case 0: + return 'sveitarfelog' + case 1: + return 'lond' + case 2: + return 'postnumer' + case 3: + return 'idngreinarMeistara' + case 4: + return 'skraningarflokkar' + default: + return 'customList' + } + } + return ( {currentItem.type === 'Fellilisti' && ( <> - radioHandler(0)}> + { + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: 'customList', + update: updateActiveItem, + }, + }) + radioHandler(0) + }} + > { @@ -93,7 +124,16 @@ const ListSettings = () => { label="Tilbúnir fellilistar" options={predeterminedLists} backgroundColor="blue" - // TODO: add lists + onChange={(option) => { + const listType = getListType(option?.value as number) + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: listType, + update: updateActiveItem, + }, + }) + }} /> )} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index d9483ffc0f76..92caa85ced7d 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -1,6 +1,12 @@ import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { useEffect, useState } from 'react' import { Select } from '@island.is/island-ui/core' +import { + useFormSystemGetCountriesLazyQuery, + useFormSystemGetMunicipalitiesLazyQuery, + useFormSystemGetZipCodesLazyQuery, + useFormSystemGetTradesProfessionsLazyQuery, +} from '../../../../../gql/Service.generated' interface Props { currentItem: FormSystemInput @@ -11,17 +17,84 @@ type ListItem = { value: string | number } +const ListTypePlaceholder = { + lond: 'Veldu land', + sveitarfelog: 'Veldu sveitarfélag', + postnumer: 'Veldu póstnúmer', + idngreinarMeistara: 'Veldu iðngrein', +} + const List = ({ currentItem }: Props) => { const [listItems, setListItems] = useState([]) + const [getCountries] = useFormSystemGetCountriesLazyQuery() + const [getMunicipalities] = useFormSystemGetMunicipalitiesLazyQuery() + const [getZipCodes] = useFormSystemGetZipCodesLazyQuery() + const [getTradesProfessions] = useFormSystemGetTradesProfessionsLazyQuery() + useEffect(() => { - const currentList = currentItem.inputSettings?.list ?? [] - setListItems( - currentList.map((l: FormSystemListItem) => ({ - label: l?.label?.is ?? '', - value: l?.label?.is ?? '', - })), - ) - }, [currentItem.inputSettings?.list]) + const type = currentItem.inputSettings?.listType + if (type === 'customList') { + const currentList = currentItem.inputSettings?.list ?? [] + setListItems( + currentList.map((l: FormSystemListItem) => ({ + label: l?.label?.is ?? '', + value: l?.label?.is ?? '', + })), + ) + } else { + const fetchList = async () => { + let data, loading, error + switch (type) { + case 'lond': + ;({ data, loading, error } = await getCountries()) + setListItems( + data?.formSystemGetCountries?.list?.map((c) => ({ + label: c?.label?.is ?? '', + value: c?.label?.is ?? '', + })) ?? [], + ) + break + case 'sveitarfelog': + ;({ data, loading, error } = await getMunicipalities()) + setListItems( + data?.formSystemGetMunicipalities.list?.map((m) => ({ + label: m?.label?.is ?? '', + value: m?.label?.is ?? '', + })) ?? [], + ) + break + case 'postnumer': + ;({ data, loading, error } = await getZipCodes()) + setListItems( + data?.formSystemGetZipCodes.list?.map((z) => ({ + label: z?.label?.is ?? '', + value: z?.label?.is ?? '', + })) ?? [], + ) + break + case 'idngreinarMeistara': + ;({ data, loading, error } = await getTradesProfessions()) + setListItems( + data?.formSystemGetTradesProfessions.list?.map((t) => ({ + label: t?.label?.is ?? '', + value: t?.label?.is ?? '', + })) ?? [], + ) + break + default: + break + } + } + fetchList() + } + }, [ + currentItem.inputSettings?.list, + currentItem.inputSettings?.listType, + getCountries, + getMunicipalities, + getZipCodes, + getTradesProfessions, + ]) return ( <> @@ -30,6 +103,12 @@ const List = ({ currentItem }: Props) => { label={currentItem?.name?.is ?? ''} options={listItems} required={currentItem?.isRequired ?? false} + placeholder={ + ListTypePlaceholder[ + currentItem.inputSettings + ?.listType as keyof typeof ListTypePlaceholder + ] + } /> ) diff --git a/libs/portals/admin/form-system/src/gql/Service.graphql b/libs/portals/admin/form-system/src/gql/Service.graphql index 75aaecc53076..18d9912f41bd 100644 --- a/libs/portals/admin/form-system/src/gql/Service.graphql +++ b/libs/portals/admin/form-system/src/gql/Service.graphql @@ -1,6 +1,4 @@ -mutation formSystemGetTranslation( - $input: FormSystemGetTranslationInput! -) { +mutation formSystemGetTranslation($input: FormSystemGetTranslationInput!) { formSystemGetTranslation(input: $input) { translations } @@ -8,8 +6,52 @@ mutation formSystemGetTranslation( query formSystemGetCountries { formSystemGetCountries { - listType - list + list { + guid + label { + is + en + } + value + } } } +query formSystemGetZipCodes { + formSystemGetZipCodes { + list { + guid + label { + is + en + } + value + } + } +} + +query formSystemGetMunicipalities { + formSystemGetMunicipalities { + list { + guid + label { + is + en + } + value + } + } +} + +query formSystemGetTradesProfessions { + formSystemGetTradesProfessions { + list { + guid + label { + is + en + } + value + } + } +} diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index f43c6b16e31e..4471db362a8e 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -154,6 +154,13 @@ type InputSettingsActions = } } | { type: 'ADD_LIST_ITEM' } + | { + type: 'SET_LIST_TYPE' + payload: { + listType: string + update: (updatedActiveItem?: ActiveItem) => void + } + } export type ControlAction = | ActiveItemActions @@ -723,6 +730,31 @@ export const controlReducer = ( }, } } + case 'SET_LIST_TYPE': { + const input = activeItem.data as FormSystemInput + const { listType, update } = action.payload + const newInput = { + ...input, + inputSettings: { + ...input.inputSettings, + listType: listType, + }, + } + update({ type: 'Input', data: newInput }) + return { + ...state, + activeItem: { + type: 'Input', + data: newInput, + }, + form: { + ...form, + inputsList: inputs?.map((i) => + i?.guid === input.guid ? newInput : i, + ), + }, + } + } // Drag and Drop case 'STEP_OVER_STEP': { const activeIndex = steps?.findIndex( diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index a773eb21d472..f16ef96bd78c 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -160,37 +160,28 @@ const Form = () => { return
Loading...
} return ( - { - const { [1]: phase, [2]: actualDuration } = args - - console.log({ phase, actualDuration }) - }} - > - - - - {selectStatus !== NavbarSelectStatus.OFF ? ( - - ) : ( - - )} - - - - - - - - - + + + + {selectStatus !== NavbarSelectStatus.OFF ? ( + + ) : ( + + )} + + + + + + + + ) } From f0b13e73a0473ac933a28100d8d43de6f6f9b147 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 16 May 2024 15:37:09 +0000 Subject: [PATCH 039/129] removed console logs --- .../src/components/Navbar/Navbar.tsx | 23 ++++++------------- .../src/lib/utils/updateFormSettings.ts | 1 - .../form-system/src/screens/Form/Form.tsx | 7 ++---- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 4466d93c7ffc..6546f1a7c974 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -101,17 +101,16 @@ export default function Navbar() { } const focusComponent = (type: ItemType, id: UniqueIdentifier) => { - console.log('dasdsadasdsada') const data = type === 'Step' ? steps?.find( - (item: Maybe | undefined) => item?.guid === id, - ) + (item: Maybe | undefined) => item?.guid === id, + ) : type === 'Group' - ? groups?.find( + ? groups?.find( (item: Maybe | undefined) => item?.guid === id, ) - : inputs?.find( + : inputs?.find( (item: Maybe | undefined) => item?.guid === id, ) if (id === baseSettingsStep.guid) { @@ -338,9 +337,9 @@ export default function Navbar() { type={activeItem.type} data={ activeItem.data as - | FormSystemGroup - | FormSystemStep - | FormSystemInput + | FormSystemGroup + | FormSystemStep + | FormSystemInput } active={activeItem.data?.guid === activeItem.data?.guid} focusComponent={focusComponent} @@ -355,14 +354,6 @@ export default function Navbar() { + Bæta við skrefi
- {/* - - */} ) } diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts index 6cf270f9a973..1575eac1df96 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts @@ -13,7 +13,6 @@ export const updateSettings = ( formId: form.id, documentTypeId: dt?.id, })) - console.log('updateSettings', form) updateFormSettings({ variables: { input: { diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index f16ef96bd78c..c40001bc9d9e 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -58,8 +58,8 @@ const Form = () => { data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find( - (s: FormSystemStep) => s?.type === 'Innsláttur', - ) ?? defaultStep, + (s: FormSystemStep) => s?.type === 'Innsláttur', + ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, @@ -129,9 +129,6 @@ const Form = () => { const formUpdate = (updatedForm?: FormSystemForm) => entireFormUpdate(control, updateForm, updatedForm) - useEffect(() => { - console.log('form', form) - }, []) const context: IControlContext = { control, From 33df16ecf2d49ccc558f724b099933fea3ffe204 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 16 May 2024 15:42:54 +0000 Subject: [PATCH 040/129] more cleanup --- libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 6546f1a7c974..09f0e370193c 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -40,7 +40,6 @@ export default function Navbar() { setInSettings, inSettings, formUpdate, - translate, } = useContext(ControlContext) as IControlContext const { activeItem, form } = control From d5a82177a0fffe4604820a1ec0eab5108885e3a3 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 16 May 2024 16:17:03 +0000 Subject: [PATCH 041/129] added phone input preview --- .../components/Preview/Preveiw.tsx | 2 ++ .../Preview/components/PhoneNumber.tsx | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 79c3f700ce07..6321dae4f5e6 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -10,6 +10,7 @@ import List from './components/List' import Radio from './components/Radio' import Currency from './components/Currency' import CheckboxPreview from './components/CheckboxPreview' +import PhoneNumber from './components/PhoneNumber' interface Props { data: FormSystemInput @@ -47,6 +48,7 @@ const Preview = ({ data }: Props) => { {type === 'Valhnappar' && } {type === 'Krónutölubox' && } {type === 'Hakbox' && } + {type === 'Símanúmer' && } ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx new file mode 100644 index 000000000000..4402e2cde979 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx @@ -0,0 +1,27 @@ +import { FormSystemInput } from '@island.is/api/schema' +import { + GridRow as Row, + GridColumn as Column, + PhoneInput, +} from '@island.is/island-ui/core' + +interface Props { + currentItem: FormSystemInput +} + +const PhoneNumber = ({ currentItem }: Props) => { + return ( + + + + + + ) +} + +export default PhoneNumber From a2fe3cac25ba3d260b32c3fab7ccf8009bd1d163 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 16 May 2024 16:33:19 +0000 Subject: [PATCH 042/129] Premises are correctly stored locally --- .../MainContent/components/Premises/Premises.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 68f497f38ec9..391579975d28 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -4,7 +4,7 @@ import ControlContext from '../../../../context/ControlContext' import { FormSystemDocumentType } from '@island.is/api/schema' const Premises = () => { - const { control, documentTypes, updateSettings } = useContext(ControlContext) + const { control, documentTypes, updateSettings, controlDispatch } = useContext(ControlContext) const [formDocumentTypes, setFormDocumentTypes] = useState< FormSystemDocumentType[] >( @@ -20,11 +20,17 @@ const Premises = () => { ) ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) : ([ - ...formDocumentTypes, - documentTypes?.find((d) => d?.id === documentTypeId), - ].filter((d) => d !== undefined) as FormSystemDocumentType[]) + ...formDocumentTypes, + documentTypes?.find((d) => d?.id === documentTypeId), + ].filter((d) => d !== undefined) as FormSystemDocumentType[]) setFormDocumentTypes(newDocumentTypes) updateSettings({ ...control.form, documentTypes: newDocumentTypes }) + controlDispatch({ + type: 'CHANGE_FORM_SETTINGS', + payload: { + newForm: { ...control.form, documentTypes: newDocumentTypes } + }, + }) } return ( From d2e34ba184aec59bf534d6908b32e6d4da8e21d4 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 16 May 2024 16:36:15 +0000 Subject: [PATCH 043/129] Preview is not shown when input type is default --- .../MainContent/components/InputContent/InputContent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx index ae931b30945c..9ae323b6d52b 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx @@ -18,7 +18,7 @@ const InputContent = () => { - + {currentItem.type !== 'Default' && } ) } From 3984128bcf3470fc9477b3c7a12b2db04cbbde28 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Fri, 17 May 2024 14:10:46 +0000 Subject: [PATCH 044/129] fixed relevant parties and added timeInput into preview --- .../components/Preview/Preveiw.tsx | 2 + .../Preview/components/TimeInput.tsx | 212 ++++++++++++++++++ .../RelevantParties/RevelantParties.tsx | 29 ++- .../NavComponent/NavComponent.css.ts | 5 + 4 files changed, 239 insertions(+), 9 deletions(-) create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 6321dae4f5e6..1997307e363a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -11,6 +11,7 @@ import Radio from './components/Radio' import Currency from './components/Currency' import CheckboxPreview from './components/CheckboxPreview' import PhoneNumber from './components/PhoneNumber' +import TimeInput from './components/TimeInput' interface Props { data: FormSystemInput @@ -49,6 +50,7 @@ const Preview = ({ data }: Props) => { {type === 'Krónutölubox' && } {type === 'Hakbox' && } {type === 'Símanúmer' && } + {type === 'Klukkuinnsláttur' && } ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx new file mode 100644 index 000000000000..80a709bbdcbe --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx @@ -0,0 +1,212 @@ +import { FormSystemInput } from "@island.is/api/schema" +import { + GridRow as Row, + GridColumn as Column, + Input, + Select, + Box, +} from '@island.is/island-ui/core' +import { ChangeEvent, useContext, useState } from "react" +import ControlContext from "../../../../../context/ControlContext" + +interface Props { + currentItem: FormSystemInput +} + +const TimeInput = ({ currentItem }: Props) => { + const [timeInput, setTimeInput] = useState('') + + // 0: Minute + // 1: Hourly + // 2: Half hour + // 3: Quarter + const chosenMinuteList = (): { label: string, value: string }[] => { + const min = minuteList.map((t) => { + return { + label: t, + value: t, + } + }) + + if (currentItem?.inputSettings === undefined) { + return min + } else { + const interval = currentItem.inputSettings.interval + + if (interval === 0) { + return min + } else if (interval === 1) { + return [{ label: '00', value: '00' }] + } else if (interval === 2) { + return halfList.minuteList.map((m) => { + return { + label: m, + value: m, + } + }) + } else if (interval === 3) { + return quarterList.minuteList.map((m) => { + return { + label: m, + value: m, + } + }) + } else { + // Handle other cases if needed + return min + } + } + } + + const handleTimeInput = ( + e: ChangeEvent, + ) => { + const inputValue = e.target.value + + const isValidTime = + /^(?:[01]?[0-9]|2[0-3]):[0-5]?[0-9](?::[0-5]?[0-9])?$/.test(inputValue) + setTimeInput(inputValue) + if (isValidTime || inputValue === '') { + setTimeInput(inputValue) + } + } + + return ( + <> + + + + + + handleTimeInput(e)} + /> + + ) +} + +export default TimeInput + +const hourList = [ + '00', + '01', + '02', + '03', + '04', + '05', + '06', + '07', + '08', + '09', + '10', + '11', + '12', + '13', + '14', + '15', + '16', + '17', + '18', + '19', + '20', + '21', + '22', + '23', +] + + +const minuteList = [ + '00', + '01', + '02', + '03', + '04', + '05', + '06', + '07', + '08', + '09', + '10', + '11', + '12', + '13', + '14', + '15', + '16', + '17', + '18', + '19', + '20', + '21', + '22', + '23', + '24', + '25', + '26', + '27', + '28', + '29', + '30', + '31', + '32', + '33', + '34', + '35', + '36', + '37', + '38', + '39', + '40', + '41', + '42', + '43', + '44', + '45', + '46', + '47', + '48', + '49', + '50', + '51', + '52', + '53', + '54', + '55', + '56', + '57', + '58', + '59', +] + +const quarterList = { + minuteList: ['00', '15', '30', '45'], +} + +const halfList = { + minuteList: ['00', '30'], +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx index f8561744541e..cc2188fb81e4 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx @@ -3,6 +3,7 @@ import ControlContext from '../../../../context/ControlContext' import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' import { FormSystemApplicantType, + FormSystemForm, FormSystemFormApplicantType, FormSystemLanguageType, } from '@island.is/api/schema' @@ -32,6 +33,7 @@ export const RelevantParties = () => { applicantTypes: applicantTypeTemplates, control, updateSettings, + controlDispatch } = useContext(ControlContext) const { form } = control const { id: formId } = form @@ -78,6 +80,16 @@ export const RelevantParties = () => { return true } + const saveAndUpdate = (newForm: FormSystemForm) => { + updateSettings({ ...newForm }) + controlDispatch({ + type: 'CHANGE_FORM_SETTINGS', + payload: { + newForm: { ...newForm } + } + }) + } + const handleSelect = (e: { label: string; value: string }, index: number) => { const newApplicantTypes = formApplicantTypes.map((f, i) => { if (i === index) { @@ -92,7 +104,7 @@ export const RelevantParties = () => { } return f }) - updateSettings({ ...form, formApplicantTypes: newApplicantTypes }) + saveAndUpdate({ ...form, formApplicantTypes: newApplicantTypes }) setFormApplicantTypes(newApplicantTypes) } @@ -107,6 +119,7 @@ export const RelevantParties = () => { setOnFocus('') } + const handleCheckboxChange = (checked: boolean, index: number) => { const updateFormApplicantTypes = ( newFormApplicantTypes: FormSystemFormApplicantType[], @@ -116,11 +129,11 @@ export const RelevantParties = () => { ) const newTypes = hasLegalEntity ? newFormApplicantTypes.filter( - (f) => f.type !== EFormApplicantTypes.logadili, - ) + (f) => f.type !== EFormApplicantTypes.logadili, + ) : newFormApplicantTypes const newList = [...formApplicantTypes, ...newTypes] - updateSettings({ ...form, formApplicantTypes: newList }) + saveAndUpdate({ ...form, formApplicantTypes: newList }) setFormApplicantTypes([...formApplicantTypes, ...newTypes]) } @@ -128,7 +141,7 @@ export const RelevantParties = () => { const newList = formApplicantTypes.filter( (f) => !types.includes(f.type as EFormApplicantTypes), ) - updateSettings({ ...form, formApplicantTypes: newList }) + saveAndUpdate({ ...form, formApplicantTypes: newList }) setFormApplicantTypes(newList) } @@ -140,10 +153,7 @@ export const RelevantParties = () => { if (template !== undefined && template !== null) { const newFormApplicantType: FormSystemFormApplicantType = createFormApplicantType(EFormApplicantTypes.einstaklingur, template) - updateSettings({ - ...form, - formApplicantTypes: [...formApplicantTypes, newFormApplicantType], - }) + saveAndUpdate({ ...form, formApplicantTypes: [...formApplicantTypes, newFormApplicantType] }) setFormApplicantTypes([...formApplicantTypes, newFormApplicantType]) } } else if (index === 1) { @@ -171,6 +181,7 @@ export const RelevantParties = () => { delegateeTemplate, ), ] + saveAndUpdate({ ...form, formApplicantTypes: [...formApplicantTypes, ...newFormApplicantTypes] }) setFormApplicantTypes([...formApplicantTypes, ...newFormApplicantTypes]) } else if (index === 2) { const delegatorTemplate = applicantTypeTemplates?.find( diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts index ffee12eb1162..9476d0fa1cad 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts @@ -88,3 +88,8 @@ export const navBackgroundDefault = styleVariants({ export const customBackgroundDropdown = style({ background: theme.color.blue100, }) + +export const flexRow = style({ + display: 'flex', + flexDirection: 'row', +}) From f0ee8ff69deee4cc91d22c3bab712d4764852e6e Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Fri, 17 May 2024 14:52:57 +0000 Subject: [PATCH 045/129] MInor changes to styling in navComponent --- .gitignore | 2 -- .../NavComponent/NavComponent.css.ts | 5 ++--- .../components/NavComponent/NavComponent.tsx | 18 ++++++------------ 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 39cb87035e84..b47f26eaea80 100644 --- a/.gitignore +++ b/.gitignore @@ -95,5 +95,3 @@ apps/**/index.html # Next.js .next - -.nx/ \ No newline at end of file diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts index 9476d0fa1cad..045100013323 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.css.ts @@ -89,7 +89,6 @@ export const customBackgroundDropdown = style({ background: theme.color.blue100, }) -export const flexRow = style({ - display: 'flex', - flexDirection: 'row', +export const verticalAlign = style({ + verticalAlign: 'middle', }) diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx index 31eebd642753..69c197ced1ed 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx @@ -113,10 +113,8 @@ export default function NavComponent({ > {active ? ( {!( type === 'Step' && (data as FormSystemStep).type !== 'Innsláttur' @@ -149,10 +145,8 @@ export default function NavComponent({ ) : ( Date: Fri, 24 May 2024 17:50:36 +0000 Subject: [PATCH 046/129] PR revision - Added an graphql ID to all object types - Using plain divs instead of Box component - Created a truncate name utility - Removed icelandic terms for input types - All labels and screen texts converted to using formatMessage - Moved all .graphql files to where the queries are being used - Converted default exports to named exports - Combined the navComponent and navSelectComponent which are used by both the navbar and navSelectBar --- .gitignore | 2 - .vscode/settings.json | 3 - apps/api/infra/api.ts | 4 +- libs/api/domains/form-system/.eslintrc.json | 18 - .../src/dto/applicantType.input.ts | 7 +- .../dto/applicantTypeNameSuggestion.input.ts | 5 +- .../form-system/src/dto/documentType.input.ts | 5 +- .../src/dto/externalEndpoints.input.ts | 7 +- .../form-system/src/dto/forms.input.ts | 5 +- .../form-system/src/dto/groups.input.ts | 6 +- .../form-system/src/dto/inputs.input.ts | 5 +- .../form-system/src/dto/listItem.input.ts | 4 +- .../form-system/src/dto/listType.input.ts | 5 +- .../form-system/src/dto/organization.input.ts | 5 +- .../form-system/src/dto/services.input.ts | 6 + .../form-system/src/dto/steps.input.ts | 16 +- .../src/dto/updateFormSettings.input.ts | 5 +- .../form-system/src/lib/form-system.module.ts | 3 +- .../src/lib/forms/forms.resolver.ts | 2 +- .../src/lib/forms/forms.service.ts | 47 +- .../src/lib/groups/groups.resolver.ts | 2 +- .../src/lib/groups/groups.service.ts | 19 +- .../src/lib/inputs/inputs.service.ts | 26 +- .../organizations/organizations.services.ts | 15 +- .../src/lib/services/services.service.ts | 27 +- .../src/lib/steps/steps.service.ts | 19 +- .../src/models/applicantType.model.ts | 5 +- .../src/models/applicantTypeNameSuggestion.ts | 5 +- .../src/models/documentType.model.ts | 5 +- .../src/models/externalEndpoints.model.ts | 5 +- .../form-system/src/models/form.model.ts | 5 +- .../src/models/formApplicantType.model.ts | 7 +- .../form-system/src/models/group.model.ts | 4 +- .../form-system/src/models/input.model.ts | 4 +- .../src/models/inputSettings.model.ts | 3 - .../form-system/src/models/listType.model.ts | 5 +- .../src/models/organization.model.ts | 5 +- .../form-system/src/models/step.model.ts | 4 +- .../form-system/src/utils/errorHandler.ts | 14 + libs/api/domains/form-system/tsconfig.json | 9 - .../api/domains/form-system/tsconfig.lib.json | 4 - libs/clients/form-system/project.json | 2 +- .../clients/form-system/src/clientConfig.json | 65 +- .../src/lib/FormSystemApiProvider.ts | 13 - .../src/lib/FormSystemClient.config.ts | 2 +- .../components/MainContent/MainContent.tsx | 29 +- .../components/BaseSettings/BaseSettings.tsx | 35 +- .../components/InputContent/InputContent.tsx | 14 +- .../InputContent/components/BaseInput.tsx | 43 +- .../InputSettings/InputSettings.tsx | 30 +- .../components/FIleUploadSettings.tsx | 41 +- .../InputSettings/components/ListSettings.tsx | 23 +- .../components/MessageWithLinkSettings.tsx | 17 +- .../components/TextInputSettings.tsx | 6 +- .../components/ToggleConnection.tsx | 12 +- .../components/ListBuilder/ListBuilder.tsx | 24 +- .../ListBuilder/components/ListItem.css.ts | 5 + .../ListBuilder/components/ListItem.tsx | 102 +-- .../InputContent/components/inputTypes.ts | 25 + .../components/Premises/Premises.tsx | 21 +- .../components/Preview/Preveiw.tsx | 50 +- .../Preview/components/Banknumber.tsx | 15 +- .../Preview/components/CheckboxPreview.tsx | 12 +- .../Preview/components/Currency.tsx | 6 +- .../components/Preview/components/Email.tsx | 11 +- .../Preview/components/FileUpload.tsx | 20 +- .../components/Preview/components/List.tsx | 5 +- .../Preview/components/MessageWithLink.tsx | 7 +- .../Preview/components/NationalId.tsx | 26 +- .../components/Preview/components/Radio.tsx | 8 +- .../Preview/components/TextInput.tsx | 4 +- .../PreviewStepOrGroup/PreviewStepOrGroup.tsx | 18 +- .../components/MultiSet.tsx | 14 +- .../RelevantParties/RevelantParties.tsx | 18 +- .../components/FormApplicantType.tsx | 14 +- .../NavComponent/NavComponent.css.ts | 29 +- .../components/NavComponent/NavComponent.tsx | 172 +++++ .../NavComponent/components}/Group.graphql | 4 - .../NavComponent/components}/Input.graphql | 28 - .../NavComponent/components/NavButtons.tsx | 12 +- .../NavComponent/components/Step.graphql | 3 + .../Navbar/CreateStep.graphql} | 8 - .../src/components/Navbar/Navbar.tsx | 84 +-- .../components/NavComponent/NavComponent.tsx | 175 ----- .../Navbar/components/NavbarTab/NavbarTab.tsx | 11 +- .../components/NavbarSelect/NavbarSelect.tsx | 17 +- .../components/SelectNavComponent.tsx | 148 ----- .../components/selectNavComponent.css.ts | 94 --- .../src/components/TableRow/TableRow.tsx | 86 +-- .../TranslationTag/TranslationTag.tsx | 2 +- .../form-system/src/context/ControlContext.ts | 6 +- .../admin/form-system/src/gql/Form.graphql | 606 ------------------ .../src/hooks/fileUploadReducer.ts | 4 +- .../admin/form-system/src/lib/messages.ts | 381 ++++++++++- .../admin/form-system/src/lib/navigation.ts | 6 +- .../form-system/src/lib/utils/inputTypes.ts | 47 ++ .../form-system/src/lib/utils/truncateText.ts | 41 ++ .../src/lib/utils/updateActiveItem.ts | 6 +- .../form-system/src/lib/utils/updateDnd.ts | 29 +- .../form-system/src/lib/utils/updateForm.ts | 2 +- .../src/lib/utils/updateFormSettings.ts | 2 +- libs/portals/admin/form-system/src/module.tsx | 6 +- .../form-system/src/screens/Form/Form.graphql | 275 ++++++++ .../src/screens/Form/Form.loader.ts | 6 +- .../form-system/src/screens/Form/Form.tsx | 24 +- .../Form}/FormSettings.graphql | 0 .../src/screens/Form/GetInput.graphql | 23 + .../src/screens/Form/UpdateGroup.graphql | 3 + .../src/screens/Form/UpdateInput.graphql | 3 + .../src/screens/Form/UpdateStep.graphql | 3 + .../form-system/src/screens/Forms/Forms.tsx | 15 +- .../form-system/src/utils/defaultStep.tsx | 2 +- 112 files changed, 1679 insertions(+), 1773 deletions(-) delete mode 100644 .vscode/settings.json delete mode 100644 libs/api/domains/form-system/.eslintrc.json create mode 100644 libs/api/domains/form-system/src/utils/errorHandler.ts create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.css.ts create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/inputTypes.ts rename libs/portals/admin/form-system/src/components/{Navbar/components => }/NavComponent/NavComponent.css.ts (76%) create mode 100644 libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx rename libs/portals/admin/form-system/src/{gql => components/NavComponent/components}/Group.graphql (84%) rename libs/portals/admin/form-system/src/{gql => components/NavComponent/components}/Input.graphql (50%) rename libs/portals/admin/form-system/src/components/{Navbar/components => }/NavComponent/components/NavButtons.tsx (90%) create mode 100644 libs/portals/admin/form-system/src/components/NavComponent/components/Step.graphql rename libs/portals/admin/form-system/src/{gql/Step.graphql => components/Navbar/CreateStep.graphql} (77%) delete mode 100644 libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx delete mode 100644 libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx delete mode 100644 libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts delete mode 100644 libs/portals/admin/form-system/src/gql/Form.graphql create mode 100644 libs/portals/admin/form-system/src/lib/utils/inputTypes.ts create mode 100644 libs/portals/admin/form-system/src/lib/utils/truncateText.ts create mode 100644 libs/portals/admin/form-system/src/screens/Form/Form.graphql rename libs/portals/admin/form-system/src/{gql => screens/Form}/FormSettings.graphql (100%) create mode 100644 libs/portals/admin/form-system/src/screens/Form/GetInput.graphql create mode 100644 libs/portals/admin/form-system/src/screens/Form/UpdateGroup.graphql create mode 100644 libs/portals/admin/form-system/src/screens/Form/UpdateInput.graphql create mode 100644 libs/portals/admin/form-system/src/screens/Form/UpdateStep.graphql diff --git a/.gitignore b/.gitignore index 39cb87035e84..b47f26eaea80 100644 --- a/.gitignore +++ b/.gitignore @@ -95,5 +95,3 @@ apps/**/index.html # Next.js .next - -.nx/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d68c91333c4b..000000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "workbench.colorTheme": "Default High Contrast" -} diff --git a/apps/api/infra/api.ts b/apps/api/infra/api.ts index 18252e3c16d0..794f4d4204a8 100644 --- a/apps/api/infra/api.ts +++ b/apps/api/infra/api.ts @@ -192,8 +192,8 @@ export const serviceSetup = (services: { }, FORM_SYSTEM_API_BASE_PATH: { dev: 'https://profun.island.is/umsoknarkerfi', - staging: 'https://profun.island.is/umsoknarkerfi', - prod: 'https://profun.island.is/umsoknarkerfi', + staging: '', + prod: '', }, CONSULTATION_PORTAL_CLIENT_BASE_PATH: { dev: 'https://samradapi-test.devland.is', diff --git a/libs/api/domains/form-system/.eslintrc.json b/libs/api/domains/form-system/.eslintrc.json deleted file mode 100644 index 632e9b0e2225..000000000000 --- a/libs/api/domains/form-system/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/libs/api/domains/form-system/src/dto/applicantType.input.ts b/libs/api/domains/form-system/src/dto/applicantType.input.ts index ad4daead51ac..7692496102ac 100644 --- a/libs/api/domains/form-system/src/dto/applicantType.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantType.input.ts @@ -1,4 +1,4 @@ -import { Field, InputType, Int } from '@nestjs/graphql' +import { Field, ID, InputType, Int } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' import { ApplicantTypeNameSuggestionInput } from './applicantTypeNameSuggestion.input' @@ -21,6 +21,9 @@ export class ApplicantTypeInput { @Field(() => [ApplicantTypeNameSuggestionInput], { nullable: 'itemsAndList' }) nameSuggestions?: ApplicantTypeNameSuggestionInput[] | null + + @Field(() => ID, { nullable: true }) + guid?: string } @InputType('FormSystemFormApplicantTypeInput') @@ -34,6 +37,6 @@ export class FormApplicantTypeInput { @Field(() => LanguageTypeInput, { nullable: true }) name?: LanguageTypeInput - @Field(() => String) + @Field(() => String, { nullable: true }) type?: string | null } diff --git a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts index 0ab05ed0084f..d075ab6b704a 100644 --- a/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts +++ b/libs/api/domains/form-system/src/dto/applicantTypeNameSuggestion.input.ts @@ -1,4 +1,4 @@ -import { InputType, Field, Int } from '@nestjs/graphql' +import { InputType, Field, Int, ID } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' @InputType('FormSystemApplicantTypeNameSuggestionInput') @@ -8,4 +8,7 @@ export class ApplicantTypeNameSuggestionInput { @Field(() => Int, { nullable: true }) applicantTypeId?: number + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/dto/documentType.input.ts b/libs/api/domains/form-system/src/dto/documentType.input.ts index 57f0c0c1ab19..29a391d322e9 100644 --- a/libs/api/domains/form-system/src/dto/documentType.input.ts +++ b/libs/api/domains/form-system/src/dto/documentType.input.ts @@ -1,4 +1,4 @@ -import { Field, Int, InputType } from '@nestjs/graphql' +import { Field, Int, InputType, ID } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' @InputType('FormSystemDocumentTypeInput') @@ -14,6 +14,9 @@ export class DocumentTypeInput { @Field(() => LanguageTypeInput, { nullable: true }) description?: LanguageTypeInput + + @Field(() => ID, { nullable: true }) + guid?: string } @InputType('FormSystemDocumentTypeUpdateInput') diff --git a/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts b/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts index f3715b15019e..0df4cd3896e5 100644 --- a/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts +++ b/libs/api/domains/form-system/src/dto/externalEndpoints.input.ts @@ -1,4 +1,4 @@ -import { Field, Int, InputType, registerEnumType } from '@nestjs/graphql' +import { Field, Int, InputType, registerEnumType, ID } from '@nestjs/graphql' import { EExternalEndpointType, EExternalEndpointEnvironment, @@ -20,9 +20,12 @@ export class ExternalEndpointsInput { @Field(() => String, { nullable: true }) url?: string | null - @Field(() => EExternalEndpointType) + @Field(() => EExternalEndpointType, { nullable: true }) type?: EExternalEndpointType @Field(() => EExternalEndpointEnvironment, { nullable: true }) environment?: EExternalEndpointEnvironment + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/dto/forms.input.ts b/libs/api/domains/form-system/src/dto/forms.input.ts index 9170db1b2e99..86e7fd068faa 100644 --- a/libs/api/domains/form-system/src/dto/forms.input.ts +++ b/libs/api/domains/form-system/src/dto/forms.input.ts @@ -1,4 +1,4 @@ -import { Field, InputType, Int } from '@nestjs/graphql' +import { Field, ID, InputType, Int } from '@nestjs/graphql' import graphqlTypeJson from 'graphql-type-json' import { LanguageTypeInput } from './language.input' import { InputInput } from './inputs.input' @@ -84,6 +84,9 @@ export class FormInput { @Field(() => [InputInput], { nullable: 'itemsAndList' }) inputsList?: InputInput[] | null + + @Field(() => ID, { nullable: true }) + guid?: string } @InputType('FormSystemUpdateFormInput') diff --git a/libs/api/domains/form-system/src/dto/groups.input.ts b/libs/api/domains/form-system/src/dto/groups.input.ts index 415eaf0b6bd3..71c798d2f22d 100644 --- a/libs/api/domains/form-system/src/dto/groups.input.ts +++ b/libs/api/domains/form-system/src/dto/groups.input.ts @@ -1,4 +1,4 @@ -import { Field, InputType, Int } from '@nestjs/graphql' +import { Field, ID, InputType, Int } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' import { InputInput } from './inputs.input' @@ -19,7 +19,7 @@ export class UpdateGroup { @Field(() => LanguageTypeInput, { nullable: true }) name?: LanguageTypeInput - @Field(() => String, { nullable: true }) + @Field(() => ID, { nullable: true }) guid?: string @Field(() => Number, { nullable: true }) @@ -67,7 +67,7 @@ export class GroupInput { @Field(() => LanguageTypeInput, { nullable: true }) name?: LanguageTypeInput - @Field(() => String, { nullable: true }) + @Field(() => ID, { nullable: true }) guid?: string @Field(() => Int, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/inputs.input.ts b/libs/api/domains/form-system/src/dto/inputs.input.ts index 16f9b1a9b11e..989f618dad6f 100644 --- a/libs/api/domains/form-system/src/dto/inputs.input.ts +++ b/libs/api/domains/form-system/src/dto/inputs.input.ts @@ -1,7 +1,6 @@ -import { Field, InputType, Int } from '@nestjs/graphql' +import { Field, ID, InputType, Int } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' import graphqlTypeJson from 'graphql-type-json' -import { InputSettingsInput } from './inputSettings.input' @InputType('FormSystemInputCreation') export class CreateInput { @@ -98,7 +97,7 @@ export class InputInput { @Field(() => String, { nullable: true }) type?: string | null - @Field(() => String, { nullable: true }) + @Field(() => ID, { nullable: true }) guid?: string @Field() diff --git a/libs/api/domains/form-system/src/dto/listItem.input.ts b/libs/api/domains/form-system/src/dto/listItem.input.ts index ec7069bb9c8a..42864c2e30b6 100644 --- a/libs/api/domains/form-system/src/dto/listItem.input.ts +++ b/libs/api/domains/form-system/src/dto/listItem.input.ts @@ -1,9 +1,9 @@ -import { InputType, Field } from '@nestjs/graphql' +import { InputType, Field, ID } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' @InputType('FormSystemListItemInput') export class ListItemInput { - @Field(() => String, { nullable: true }) + @Field(() => ID, { nullable: true }) guid?: string @Field(() => LanguageTypeInput, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/listType.input.ts b/libs/api/domains/form-system/src/dto/listType.input.ts index cbf1e84a90f1..a7503ffafddc 100644 --- a/libs/api/domains/form-system/src/dto/listType.input.ts +++ b/libs/api/domains/form-system/src/dto/listType.input.ts @@ -1,4 +1,4 @@ -import { Field, Int, InputType } from '@nestjs/graphql' +import { Field, Int, InputType, ID } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' @InputType('FormSystemListTypeInput') @@ -14,4 +14,7 @@ export class ListTypeInput { @Field(() => LanguageTypeInput, { nullable: true }) description?: LanguageTypeInput + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/dto/organization.input.ts b/libs/api/domains/form-system/src/dto/organization.input.ts index 68479727381d..d7231eb0eb1c 100644 --- a/libs/api/domains/form-system/src/dto/organization.input.ts +++ b/libs/api/domains/form-system/src/dto/organization.input.ts @@ -1,4 +1,4 @@ -import { Field, Int, InputType } from '@nestjs/graphql' +import { Field, Int, InputType, ID } from '@nestjs/graphql' import { InputInput } from './inputs.input' import { DocumentTypeInput } from './documentType.input' import { FormInput } from './forms.input' @@ -53,4 +53,7 @@ export class OrganizationInput { @Field(() => [ExternalEndpointsInput], { nullable: 'itemsAndList' }) externalEndpoints?: ExternalEndpointsInput[] | null + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/dto/services.input.ts b/libs/api/domains/form-system/src/dto/services.input.ts index 1e37aa380c2f..bedf649c30cc 100644 --- a/libs/api/domains/form-system/src/dto/services.input.ts +++ b/libs/api/domains/form-system/src/dto/services.input.ts @@ -5,3 +5,9 @@ export class GetPropertyInput { @Field(() => String) propertyId!: string } + +@InputType('FormSystemGetTranslationInput') +export class GetTranslationInput { + @Field(() => [String]) + contents: string[] = [] +} diff --git a/libs/api/domains/form-system/src/dto/steps.input.ts b/libs/api/domains/form-system/src/dto/steps.input.ts index ded4fe3d22f0..705c4a1a8d5b 100644 --- a/libs/api/domains/form-system/src/dto/steps.input.ts +++ b/libs/api/domains/form-system/src/dto/steps.input.ts @@ -1,9 +1,9 @@ -import { Field, InputType, Int } from '@nestjs/graphql' +import { Field, ID, InputType, Int } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' import { GroupInput } from './groups.input' @InputType('FormSystemStepCreation') -export class CreateStep { +export class StepCreation { @Field(() => Int, { nullable: true }) formId?: number @@ -12,7 +12,7 @@ export class CreateStep { } @InputType('FormSystemStepUpdate') -export class UpdateStep { +export class StepUpdate { @Field(() => Int, { nullable: true }) id?: number @@ -40,8 +40,8 @@ export class GetStepInput { @InputType('FormSystemCreateStepInput') export class CreateStepInput { - @Field(() => CreateStep, { nullable: true }) - stepCreationDto?: CreateStep + @Field(() => StepCreation, { nullable: true }) + stepCreationDto?: StepCreation } @InputType('FormSystemDeleteStepInput') @@ -55,8 +55,8 @@ export class UpdateStepInput { @Field(() => Int, { nullable: true }) stepId!: number - @Field(() => UpdateStep, { nullable: true }) - stepUpdateDto?: UpdateStep + @Field(() => StepUpdate, { nullable: true }) + stepUpdateDto?: StepUpdate } @InputType('FormSystemStepInput') @@ -64,7 +64,7 @@ export class StepInput { @Field(() => Int, { nullable: true }) id?: number - @Field(() => String, { nullable: true }) + @Field(() => ID, { nullable: true }) guid?: string @Field(() => Number, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts b/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts index 1c6982b57514..005948e726f8 100644 --- a/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts +++ b/libs/api/domains/form-system/src/dto/updateFormSettings.input.ts @@ -1,4 +1,4 @@ -import { Field, InputType, Int } from '@nestjs/graphql' +import { Field, ID, InputType, Int } from '@nestjs/graphql' import { LanguageTypeInput } from './language.input' import graphqlTypeJson from 'graphql-type-json' import { DocumentTypeUpdateInput } from './documentType.input' @@ -38,6 +38,9 @@ export class FormSettingsInput { @Field(() => Int, { nullable: true }) applicationsDaysToRemove?: number + + @Field(() => ID, { nullable: true }) + guid?: string } @InputType('FormSystemUpdateFormSettingsInput') diff --git a/libs/api/domains/form-system/src/lib/form-system.module.ts b/libs/api/domains/form-system/src/lib/form-system.module.ts index 939e1e9f28a5..af0ad6c794c8 100644 --- a/libs/api/domains/form-system/src/lib/form-system.module.ts +++ b/libs/api/domains/form-system/src/lib/form-system.module.ts @@ -1,6 +1,5 @@ import { Module } from '@nestjs/common' import { FormSystemClientModule } from '@island.is/clients/form-system' -import { AuthModule } from '@island.is/auth-nest-tools' import { FormsService } from './forms/forms.service' import { FormsResolver } from './forms/forms.resolver' import { GroupsService } from './groups/groups.service' @@ -30,6 +29,6 @@ import { StepsResolver } from './steps/steps.resolver' StepsResolver, ], exports: [], - imports: [AuthModule, FormSystemClientModule], + imports: [FormSystemClientModule], }) export class FormSystemModule {} diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index dbe5fc101080..982b72da1d8f 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -85,6 +85,6 @@ export class FormsResolver { @Args('input', { type: () => DeleteFormInput }) input: DeleteFormInput, @CurrentUser() user: User, ): Promise { - return await this.formsService.deleteForm(user, input) + return this.formsService.deleteForm(user, input) } } diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index be5d4c50952f..37ab638484d3 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -22,7 +22,7 @@ import { import { FormResponse } from '../../models/formResponse.model' import { FormListResponse } from '../../models/formListResponse.model' import { UpdateFormSettingsInput } from '../../dto/updateFormSettings.input' -import { InputSettings } from '../../models/inputSettings.model' +import { handle4xx } from '../../utils/errorHandler' @Injectable() export class FormsService { @@ -32,6 +32,7 @@ export class FormsService { private formsApi: FormsApi, ) {} + // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), @@ -42,13 +43,6 @@ export class FormsService { throw new ApolloError(error.message) } - private handle4xx(error: any, errorDetail?: string): ApolloError | null { - if (error.status === 403 || error.status === 404) { - return null - } - return this.handleError(error, errorDetail) - } - private formsApiWithAuth(auth: User) { return this.formsApi.withMiddleware(new AuthMiddleware(auth)) } @@ -60,24 +54,13 @@ export class FormsService { const response = await this.formsApiWithAuth(auth) .apiFormsFormIdGet(request) - .catch((e) => this.handle4xx(e, 'failed to get form from Id')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to get form from Id'), + ) if (!response || response instanceof ApolloError) { return {} } - // const formattedResponse = { - // ...response, - // inputsList: response.form?.inputsList?.map((input) => { - // const { type, ...newInputSettings } = input.inputSettings as InputSettings - // return { - // ...input, - // inputSettings: { - // ...newInputSettings, - // $type: type - // } - // } - // }) - // } return response as FormResponse } @@ -88,7 +71,11 @@ export class FormsService { const response = await this.formsApiWithAuth(auth) .apiFormsOrganizationOrganizationIdGet(request) .catch((e) => - this.handle4xx(e, 'failed to get forms from organization Id'), + handle4xx( + e, + this.handleError, + 'failed to get forms from organization Id', + ), ) if (!response || response instanceof ApolloError) { @@ -104,7 +91,7 @@ export class FormsService { } const response = await this.formsApiWithAuth(auth) .apiFormsOrganizationIdPost(request) - .catch((e) => this.handle4xx(e, 'failed to create form')) + .catch((e) => handle4xx(e, this.handleError, 'failed to create form')) if (!response || response instanceof ApolloError) { return {} @@ -119,7 +106,7 @@ export class FormsService { } const response = await this.formsApiWithAuth(auth) .apiFormsFormIdDelete(request) - .catch((e) => this.handle4xx(e, 'failed to delete form')) + .catch((e) => handle4xx(e, this.handleError, 'failed to delete form')) if (!response || response instanceof ApolloError) { return void 0 @@ -140,13 +127,9 @@ export class FormsService { formId: input.formId, formUpdateDto: formattedForm as FormUpdateDto, } - // const request: ApiFormsFormIdPutRequest = { - // formId: input.formId, - // formUpdateDto: input.form as FormUpdateDto - // } const response = await this.formsApiWithAuth(auth) .apiFormsFormIdPut(request) - .catch((e) => this.handle4xx(e, 'failed to update form')) + .catch((e) => handle4xx(e, this.handleError, 'failed to update form')) if (!response || response instanceof ApolloError) { return void 0 } @@ -164,7 +147,9 @@ export class FormsService { } const response = await this.formsApiWithAuth(auth) .apiFormsFormIdSettingsPut(request) - .catch((e) => this.handle4xx(e, 'failed to update form settings')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to update form settings'), + ) if (!response || response instanceof ApolloError) { return void 0 diff --git a/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts b/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts index 285eb51d5496..4c31ecc691d9 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.resolver.ts @@ -49,7 +49,7 @@ export class GroupsResolver { @Args('input', { type: () => DeleteGroupInput }) input: DeleteGroupInput, @CurrentUser() user: User, ): Promise { - return await this.groupsService.deleteGroup(user, input) + return this.groupsService.deleteGroup(user, input) } @Mutation(() => Boolean, { diff --git a/libs/api/domains/form-system/src/lib/groups/groups.service.ts b/libs/api/domains/form-system/src/lib/groups/groups.service.ts index 4a6b2a0b0a92..b9113320910c 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.service.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.service.ts @@ -18,6 +18,7 @@ import { UpdateGroupInput, } from '../../dto/groups.input' import { Group } from '../../models/group.model' +import { handle4xx } from '../../utils/errorHandler' @Injectable() export class GroupsService { @@ -27,6 +28,7 @@ export class GroupsService { private formsApi: GroupsApi, ) {} + // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), @@ -37,13 +39,6 @@ export class GroupsService { throw new ApolloError(error.message) } - private handle4xx(error: any, errorDetail?: string): ApolloError | null { - if (error.status === 403 || error.status === 404) { - return null - } - return this.handleError(error, errorDetail) - } - private groupsApiWithAuth(auth: User) { return this.formsApi.withMiddleware(new AuthMiddleware(auth)) } @@ -54,7 +49,9 @@ export class GroupsService { } const response = await this.groupsApiWithAuth(auth) .apiGroupsGroupIdGet(request) - .catch((e) => this.handle4xx(e, 'failed to get group from Id')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to get group from Id'), + ) if (!response || response instanceof ApolloError) { return {} } @@ -67,7 +64,7 @@ export class GroupsService { } const response = await this.groupsApiWithAuth(auth) .apiGroupsPost(request) - .catch((e) => this.handle4xx(e, 'failed to post group')) + .catch((e) => handle4xx(e, this.handleError, 'failed to post group')) if (!response || response instanceof ApolloError) { return {} @@ -82,7 +79,7 @@ export class GroupsService { const response = await this.groupsApiWithAuth(auth) .apiGroupsGroupIdDelete(request) - .catch((e) => this.handle4xx(e, 'failed to delete group')) + .catch((e) => handle4xx(e, this.handleError, 'failed to delete group')) if (!response || response instanceof ApolloError) { return void 0 @@ -97,7 +94,7 @@ export class GroupsService { } const response = await this.groupsApiWithAuth(auth) .apiGroupsGroupIdPut(request) - .catch((e) => this.handle4xx(e, 'failed to update group')) + .catch((e) => handle4xx(e, this.handleError, 'failed to update group')) if (!response || response instanceof ApolloError) { return void 0 diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts index 0eac27ee5916..3844e466ccd6 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts @@ -18,9 +18,7 @@ import { UpdateInputInput, } from '../../dto/inputs.input' import { Input } from '../../models/input.model' -// import { graphql } from "graphql" -// import { RESTInputSettings, graphqlToRestInputSettings, restToGraphqlInputSettings } from "../utils/helperFunctions" -// import { InputSettings } from "../../models/inputSettings.model" +import { handle4xx } from '../../utils/errorHandler' @Injectable() export class InputsService { @@ -30,6 +28,7 @@ export class InputsService { private formsApi: InputsApi, ) {} + // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), @@ -40,13 +39,6 @@ export class InputsService { throw new ApolloError(error.message) } - private handle4xx(error: any, errorDetail?: string): ApolloError | null { - if (error.status === 403 || error.status === 404) { - return null - } - return this.handleError(error, errorDetail) - } - private inputsApiWithAuth(auth: User) { return this.formsApi.withMiddleware(new AuthMiddleware(auth)) } @@ -57,14 +49,12 @@ export class InputsService { } const response = await this.inputsApiWithAuth(auth) .apiInputsInputIdGet(request) - .catch((e) => this.handle4xx(e, 'failed to get input from Id')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to get input from Id'), + ) if (!response || response instanceof ApolloError) { return {} } - // return { - // ...response, - // inputSettings: restToGraphqlInputSettings(response.inputSettings as RESTInputSettings) - // } as Input return response as Input } @@ -74,7 +64,7 @@ export class InputsService { } const response = await this.inputsApiWithAuth(auth) .apiInputsPost(request) - .catch((e) => this.handle4xx(e, 'failed to post input')) + .catch((e) => handle4xx(e, this.handleError, 'failed to post input')) if (!response || response instanceof ApolloError) { return {} @@ -89,7 +79,7 @@ export class InputsService { const response = await this.inputsApiWithAuth(auth) .apiInputsInputIdDelete(request) - .catch((e) => this.handle4xx(e, 'failed to delete input')) + .catch((e) => handle4xx(e, this.handleError, 'failed to delete input')) if (!response || response instanceof ApolloError) { return void 0 @@ -110,7 +100,7 @@ export class InputsService { } const response = await this.inputsApiWithAuth(auth) .apiInputsInputIdPut(request) - .catch((e) => this.handle4xx(e, 'failed to update input')) + .catch((e) => handle4xx(e, this.handleError, 'failed to update input')) if (!response || response instanceof ApolloError) { return void 0 diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts index e831d58ced94..cf731fd5d4d9 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts @@ -8,6 +8,7 @@ import { } from '@island.is/clients/form-system' import { CreateOrganizationInput } from '../../dto/organization.input' import { Organization } from '../../models/organization.model' +import { handle4xx } from '../../utils/errorHandler' @Injectable() export class OrganizationsService { @@ -17,6 +18,7 @@ export class OrganizationsService { private organizationsApi: OrganizationsApi, ) {} + // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), @@ -27,13 +29,6 @@ export class OrganizationsService { throw new ApolloError(error.message) } - private handle4xx(error: any, errorDetail?: string): ApolloError | null { - if (error.status === 403 || error.status === 404) { - return null - } - return this.handleError(error, errorDetail) - } - private organizationsApiWithAuth(auth: User) { return this.organizationsApi.withMiddleware(new AuthMiddleware(auth)) } @@ -45,13 +40,15 @@ export class OrganizationsService { const request: ApiOrganizationsPostRequest = { organizationCreationDto: { name: input.name, - kennitala: input.nationalId, + nationalId: input.nationalId, }, } const response = await this.organizationsApiWithAuth(auth) .apiOrganizationsPost(request) - .catch((e) => this.handle4xx(e, 'failed to post organization')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to post organization'), + ) if (!response || response instanceof ApolloError) { return {} diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index 01cc128c4544..c2fd24785780 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -8,6 +8,7 @@ import { } from '@island.is/clients/form-system' import { List } from '../../models/services.model' import { GetPropertyInput } from '../../dto/services.input' +import { handle4xx } from '../../utils/errorHandler' @Injectable() export class FormSystemService { @@ -17,6 +18,7 @@ export class FormSystemService { private servicesApi: ServicesApi, ) {} + // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), @@ -27,13 +29,6 @@ export class FormSystemService { throw new ApolloError(error.message) } - private handle4xx(error: any, errorDetail?: string): ApolloError | null { - if (error.status === 403 || error.status === 404) { - return null - } - return this.handleError(error, errorDetail) - } - private servicesApiWithAuth(auth: User) { return this.servicesApi.withMiddleware(new AuthMiddleware(auth)) } @@ -41,7 +36,7 @@ export class FormSystemService { async getCountries(auth: User): Promise { const response = await this.servicesApiWithAuth(auth) .apiServicesLondGet() - .catch((e) => this.handle4xx(e, 'failed to get countries')) + .catch((e) => handle4xx(e, this.handleError, 'failed to get countries')) if (!response || response instanceof ApolloError) { return {} @@ -52,7 +47,7 @@ export class FormSystemService { async getZipCodes(auth: User): Promise { const response = await this.servicesApiWithAuth(auth) .apiServicesPostnumerGet() - .catch((e) => this.handle4xx(e, 'failed to get zip codes')) + .catch((e) => handle4xx(e, this.handleError, 'failed to get zip codes')) if (!response || response instanceof ApolloError) { return {} @@ -63,7 +58,9 @@ export class FormSystemService { async getMunicipalities(auth: User): Promise { const response = await this.servicesApiWithAuth(auth) .apiServicesSveitarfelogGet() - .catch((e) => this.handle4xx(e, 'failed to get municipalities')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to get municipalities'), + ) if (!response || response instanceof ApolloError) { return {} @@ -74,7 +71,9 @@ export class FormSystemService { async getRegistrationCategories(auth: User): Promise { const response = await this.servicesApiWithAuth(auth) .apiServicesSkraningarflokkarGet() - .catch((e) => this.handle4xx(e, 'failed to get registration categories')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to get registration categories'), + ) if (!response || response instanceof ApolloError) { return {} @@ -86,7 +85,9 @@ export class FormSystemService { async getTradesProfessions(auth: User): Promise { const response = await this.servicesApiWithAuth(auth) .apiServicesIdngreinarMeistaraGet() - .catch((e) => this.handle4xx(e, 'failed to get trades professions')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to get trades professions'), + ) if (!response || response instanceof ApolloError) { return {} @@ -101,7 +102,7 @@ export class FormSystemService { } const response = await this.servicesApiWithAuth(auth) .apiServicesFasteignFasteignanumerGet(request) - .catch((e) => this.handle4xx(e, 'failed to get property')) + .catch((e) => handle4xx(e, this.handleError, 'failed to get property')) if (!response || response instanceof ApolloError) { return {} diff --git a/libs/api/domains/form-system/src/lib/steps/steps.service.ts b/libs/api/domains/form-system/src/lib/steps/steps.service.ts index dfc46c148314..23fb5843e0eb 100644 --- a/libs/api/domains/form-system/src/lib/steps/steps.service.ts +++ b/libs/api/domains/form-system/src/lib/steps/steps.service.ts @@ -16,6 +16,7 @@ import { UpdateStepInput, } from '../../dto/steps.input' import { Step } from '../../models/step.model' +import { handle4xx } from '../../utils/errorHandler' @Injectable() export class StepsService { @@ -25,6 +26,7 @@ export class StepsService { private formsApi: StepsApi, ) {} + // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { const err = { error: JSON.stringify(error), @@ -35,13 +37,6 @@ export class StepsService { throw new ApolloError(error.message) } - private handle4xx(error: any, errorDetail?: string): ApolloError | null { - if (error.status === 403 || error.status === 404) { - return null - } - return this.handleError(error, errorDetail) - } - private stepsApiWithAuth(auth: User) { return this.formsApi.withMiddleware(new AuthMiddleware(auth)) } @@ -52,7 +47,9 @@ export class StepsService { } const response = await this.stepsApiWithAuth(auth) .apiStepsStepIdGet(request) - .catch((e) => this.handle4xx(e, 'failed to get step from Id')) + .catch((e) => + handle4xx(e, this.handleError, 'failed to get step from Id'), + ) if (!response || response instanceof ApolloError) { return {} } @@ -65,7 +62,7 @@ export class StepsService { } const response = await this.stepsApiWithAuth(auth) .apiStepsPost(request) - .catch((e) => this.handle4xx(e, 'failed to post step')) + .catch((e) => handle4xx(e, this.handleError, 'failed to post step')) if (!response || response instanceof ApolloError) { return {} @@ -80,7 +77,7 @@ export class StepsService { const response = await this.stepsApiWithAuth(auth) .apiStepsStepIdDelete(request) - .catch((e) => this.handle4xx(e, 'failed to delete step')) + .catch((e) => handle4xx(e, this.handleError, 'failed to delete step')) if (!response || response instanceof ApolloError) { return void 0 @@ -96,7 +93,7 @@ export class StepsService { const response = await this.stepsApiWithAuth(auth) .apiStepsStepIdPut(request) - .catch((e) => this.handle4xx(e, 'failed to update step')) + .catch((e) => handle4xx(e, this.handleError, 'failed to update step')) if (!response || response instanceof ApolloError) { return void 0 diff --git a/libs/api/domains/form-system/src/models/applicantType.model.ts b/libs/api/domains/form-system/src/models/applicantType.model.ts index a993d5788685..48a6c77bf757 100644 --- a/libs/api/domains/form-system/src/models/applicantType.model.ts +++ b/libs/api/domains/form-system/src/models/applicantType.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' import { ApplicantTypeNameSuggestion } from './applicantTypeNameSuggestion' @@ -21,4 +21,7 @@ export class ApplicantType { @Field(() => [ApplicantTypeNameSuggestion], { nullable: 'itemsAndList' }) nameSuggestions?: ApplicantTypeNameSuggestion[] | null + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts b/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts index 70bf81bec13f..2a056609ca96 100644 --- a/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts +++ b/libs/api/domains/form-system/src/models/applicantTypeNameSuggestion.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' @ObjectType('FormSystemApplicantTypeNameSuggestion') @@ -8,4 +8,7 @@ export class ApplicantTypeNameSuggestion { @Field(() => Int, { nullable: true }) applicantTypeId?: number + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/models/documentType.model.ts b/libs/api/domains/form-system/src/models/documentType.model.ts index e5772e16ab3e..4ddff4013c47 100644 --- a/libs/api/domains/form-system/src/models/documentType.model.ts +++ b/libs/api/domains/form-system/src/models/documentType.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, Int, ObjectType, ID } from '@nestjs/graphql' import { LanguageType } from './global.model' @ObjectType('FormSystemDocumentType') @@ -14,4 +14,7 @@ export class DocumentType { @Field(() => LanguageType, { nullable: true }) description?: LanguageType + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts index bfa3d426e1cc..da0681b3848a 100644 --- a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts +++ b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType, registerEnumType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType, registerEnumType } from '@nestjs/graphql' import { EExternalEndpointType, EExternalEndpointEnvironment, @@ -25,4 +25,7 @@ export class ExternalEndpoints { @Field(() => EExternalEndpointEnvironment, { nullable: true }) environment?: EExternalEndpointEnvironment + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/models/form.model.ts b/libs/api/domains/form-system/src/models/form.model.ts index 27b3c61c19f3..e6cb7b2de834 100644 --- a/libs/api/domains/form-system/src/models/form.model.ts +++ b/libs/api/domains/form-system/src/models/form.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' import { Group } from './group.model' import { Input } from './input.model' @@ -64,4 +64,7 @@ export class Form { @Field(() => [Input], { nullable: 'itemsAndList' }) inputsList?: Input[] | null + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/models/formApplicantType.model.ts b/libs/api/domains/form-system/src/models/formApplicantType.model.ts index e00f95180eb9..7d030f4c3ec6 100644 --- a/libs/api/domains/form-system/src/models/formApplicantType.model.ts +++ b/libs/api/domains/form-system/src/models/formApplicantType.model.ts @@ -1,4 +1,4 @@ -import { ObjectType, Field, Int } from '@nestjs/graphql' +import { ObjectType, Field, Int, ID } from '@nestjs/graphql' import { LanguageType } from './global.model' @ObjectType('FormSystemFormApplicantType') @@ -12,6 +12,9 @@ export class FormApplicantType { @Field(() => LanguageType, { nullable: true }) name?: LanguageType - @Field(() => String) + @Field(() => String, { nullable: true }) type?: string | null + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/models/group.model.ts b/libs/api/domains/form-system/src/models/group.model.ts index 3f383cd90b1d..aa72fd2c7691 100644 --- a/libs/api/domains/form-system/src/models/group.model.ts +++ b/libs/api/domains/form-system/src/models/group.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' import { Input } from './input.model' @@ -10,7 +10,7 @@ export class Group { @Field(() => LanguageType, { nullable: true }) name?: LanguageType - @Field(() => String, { nullable: true }) + @Field(() => ID, { nullable: true }) guid?: string @Field(() => Int, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/input.model.ts b/libs/api/domains/form-system/src/models/input.model.ts index 26abc1337a6a..4df311dfb951 100644 --- a/libs/api/domains/form-system/src/models/input.model.ts +++ b/libs/api/domains/form-system/src/models/input.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' import graphqlTypeJson from 'graphql-type-json' import { InputSettings } from './inputSettings.model' @@ -30,7 +30,7 @@ export class Input { @Field(() => String, { nullable: true }) type?: string | null - @Field(() => String, { nullable: true }) + @Field(() => ID, { nullable: true }) guid?: string @Field(() => Boolean, { nullable: true }) diff --git a/libs/api/domains/form-system/src/models/inputSettings.model.ts b/libs/api/domains/form-system/src/models/inputSettings.model.ts index 174a5cb93049..fdc2cef7045f 100644 --- a/libs/api/domains/form-system/src/models/inputSettings.model.ts +++ b/libs/api/domains/form-system/src/models/inputSettings.model.ts @@ -24,9 +24,6 @@ export class ListItem { @ObjectType('FormSystemInputSettings') export class InputSettings { - // @Field(() => String, { nullable: true }) - // $type?: string - @Field(() => Boolean, { nullable: true }) isLarge?: boolean diff --git a/libs/api/domains/form-system/src/models/listType.model.ts b/libs/api/domains/form-system/src/models/listType.model.ts index 8950a228c8f4..f1e0a6c40639 100644 --- a/libs/api/domains/form-system/src/models/listType.model.ts +++ b/libs/api/domains/form-system/src/models/listType.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' @ObjectType('FormSystemListType') @@ -14,4 +14,7 @@ export class ListType { @Field(() => LanguageType, { nullable: true }) description?: LanguageType + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/models/organization.model.ts b/libs/api/domains/form-system/src/models/organization.model.ts index 58bbce16d67f..46cf4ba8f390 100644 --- a/libs/api/domains/form-system/src/models/organization.model.ts +++ b/libs/api/domains/form-system/src/models/organization.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' import { Input } from './input.model' import { ApplicantType } from './applicantType.model' @@ -35,4 +35,7 @@ export class Organization { @Field(() => [ExternalEndpoints], { nullable: 'itemsAndList' }) externalEndpoints?: ExternalEndpoints[] | null + + @Field(() => ID, { nullable: true }) + guid?: string } diff --git a/libs/api/domains/form-system/src/models/step.model.ts b/libs/api/domains/form-system/src/models/step.model.ts index 771bd73c542a..01f3b994bbe2 100644 --- a/libs/api/domains/form-system/src/models/step.model.ts +++ b/libs/api/domains/form-system/src/models/step.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' import { LanguageType } from './global.model' import { Group } from './group.model' @@ -7,7 +7,7 @@ export class Step { @Field(() => Int, { nullable: true }) id?: number - @Field(() => String, { nullable: true }) + @Field(() => ID, { nullable: true }) guid?: string @Field(() => Number, { nullable: true }) diff --git a/libs/api/domains/form-system/src/utils/errorHandler.ts b/libs/api/domains/form-system/src/utils/errorHandler.ts new file mode 100644 index 000000000000..41fa2cfd6183 --- /dev/null +++ b/libs/api/domains/form-system/src/utils/errorHandler.ts @@ -0,0 +1,14 @@ +import { ApolloError } from '@apollo/client' + +/* eslint-disable */ +export function handle4xx( + error: any, + handleError: (e: any, detail?: string) => ApolloError | null, + errorDetail?: string, +) { + if (error.status === 403 || error.status === 404) { + return null + } + return handleError(error, errorDetail) +} +/* eslint-enable */ diff --git a/libs/api/domains/form-system/tsconfig.json b/libs/api/domains/form-system/tsconfig.json index 4022fd4d0ad7..26b7b4afd192 100644 --- a/libs/api/domains/form-system/tsconfig.json +++ b/libs/api/domains/form-system/tsconfig.json @@ -1,14 +1,5 @@ { "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "module": "commonjs", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, "files": [], "include": [], "references": [ diff --git a/libs/api/domains/form-system/tsconfig.lib.json b/libs/api/domains/form-system/tsconfig.lib.json index e6b77320ab6a..559b7ba084aa 100644 --- a/libs/api/domains/form-system/tsconfig.lib.json +++ b/libs/api/domains/form-system/tsconfig.lib.json @@ -5,10 +5,6 @@ "declaration": true, "types": ["node"], "target": "es2021", - "strictNullChecks": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true }, "include": ["src/**/*.ts"], diff --git a/libs/clients/form-system/project.json b/libs/clients/form-system/project.json index 22dfef44e2de..d3718e584841 100644 --- a/libs/clients/form-system/project.json +++ b/libs/clients/form-system/project.json @@ -35,7 +35,7 @@ "update-openapi-document": { "executor": "nx:run-commands", "options": { - "command": "curl https://localhost:51345/swagger/v1/swagger.json > libs/clients/form-system/src/clientConfig.json" + "command": "curl https://profun.island.is/umsoknarkerfi/swagger/v1/swagger.json > libs/clients/form-system/src/clientConfig.json" } } }, diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index 148dbaf14395..0d7a349ed58b 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -4,6 +4,11 @@ "title": "UmsóknarkerfiWebAPI", "version": "1.0" }, + "servers": [ + { + "url": "/umsoknarkerfi" + } + ], "paths": { "/api/Files": { "post": { @@ -900,6 +905,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "type": { "type": "string", "nullable": true @@ -929,6 +938,10 @@ "applicantTypeId": { "type": "integer", "format": "int32" + }, + "guid": { + "type": "string", + "format": "uuid" } }, "additionalProperties": false @@ -944,6 +957,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, @@ -969,6 +986,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "type": { "type": "string", "nullable": true @@ -992,6 +1013,10 @@ "documentTypeId": { "type": "integer", "format": "int32" + }, + "guid": { + "type": "string", + "format": "uuid" } }, "additionalProperties": false @@ -1011,6 +1036,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "url": { "type": "string", "nullable": true @@ -1082,6 +1111,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, @@ -1099,6 +1132,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, @@ -1245,6 +1282,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, @@ -1306,6 +1347,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, @@ -1525,6 +1570,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "type": { "type": "string", "nullable": true @@ -1605,6 +1654,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "type": { "type": "string", "nullable": true @@ -1652,7 +1705,7 @@ "name": { "$ref": "#/components/schemas/LanguageType" }, - "kennitala": { + "nationalId": { "type": "string", "nullable": true } @@ -1666,10 +1719,14 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, - "kennitala": { + "nationalId": { "type": "string", "nullable": true }, @@ -1783,6 +1840,10 @@ "type": "integer", "format": "int32" }, + "guid": { + "type": "string", + "format": "uuid" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, diff --git a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts index 85bba8e4103c..26b15ad1cd5a 100644 --- a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts +++ b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts @@ -12,18 +12,6 @@ import { ServicesApi, StepsApi, } from '../../gen/fetch' -import * as https from 'https' -import fetch, { RequestInfo, RequestInit } from 'node-fetch' - -const httpsAgent = new https.Agent({ - // remove - rejectUnauthorized: false, // This will ignore SSL certificates -}) - -const fetchWithHttpsAgent = ( - url: RequestInfo, - options: RequestInit | undefined, -) => fetch(url, { ...options, agent: httpsAgent }) //remove const provideApi = ( Api: new (configuration: Configuration) => T, @@ -37,7 +25,6 @@ const provideApi = ( name: 'form-system', organizationSlug: 'stafraent-island', logErrorResponseBody: true, - fetch: fetchWithHttpsAgent, // remove }), basePath: config.basePath, headers: { diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index 45555c468c6e..85ca437a20e2 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -13,7 +13,7 @@ export const FormSystemClientConfig = defineConfig({ basePath: env.required( 'FORM_SYSTEM_API_BASE_PATH', 'https://profun.island.is/umsoknarkerfi', - ) + ), } }, }) diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index 259d7e97af31..345127dc476c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -8,19 +8,22 @@ import { Checkbox, } from '@island.is/island-ui/core' import { useContext, useState } from 'react' -import ControlContext from '../../context/ControlContext' +import { ControlContext } from '../../context/ControlContext' import { FormSystemGroup, FormSystemStep } from '@island.is/api/schema' -import BaseSettings from './components/BaseSettings/BaseSettings' -import Premises from './components/Premises/Premises' -import InputContent from './components/InputContent/InputContent' -import PreviewStepOrGroup from './components/PreviewStepOrGroup/PreviewStepOrGroup' -import RelevantParties from './components/RelevantParties/RevelantParties' +import { BaseSettings } from './components/BaseSettings/BaseSettings' +import { Premises } from './components/Premises/Premises' +import { InputContent } from './components/InputContent/InputContent' +import { PreviewStepOrGroup } from './components/PreviewStepOrGroup/PreviewStepOrGroup' +import { RelevantParties } from './components/RelevantParties/RevelantParties' +import { useIntl } from 'react-intl' +import { m } from '../../lib/messages' -export default function MainContent() { +export const MainContent = () => { const { control, controlDispatch, updateActiveItem, setFocus, focus } = useContext(ControlContext) const { activeItem } = control const [openPreview, setOpenPreview] = useState(false) + const { formatMessage } = useIntl() return ( @@ -30,10 +33,10 @@ export default function MainContent() { (activeItem.data as FormSystemStep).type === 'BaseSetting' ? ( ) : activeItem.type === 'Step' && - (activeItem.data as FormSystemStep).type === 'Forsendur' ? ( + (activeItem.data as FormSystemStep).type === 'Premises' ? ( ) : activeItem.type === 'Step' && - (activeItem.data as FormSystemStep).type === 'Aðilar' ? ( + (activeItem.data as FormSystemStep).type === 'Parties' ? ( ) : openPreview ? ( @@ -42,7 +45,7 @@ export default function MainContent() { controlDispatch({ @@ -104,7 +107,7 @@ export default function MainContent() { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index 232470d98c8b..4d4a7d5932ec 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -7,19 +7,28 @@ import { Checkbox, } from '@island.is/island-ui/core' import { useContext } from 'react' -import ControlContext from '../../../../context/ControlContext' +import { ControlContext } from '../../../../context/ControlContext' +import { useIntl } from 'react-intl' +import { m } from '../../../../lib/messages' export const BaseSettings = () => { - const { control, controlDispatch, setFocus, focus, formUpdate, updateSettings } = - useContext(ControlContext) + const { + control, + controlDispatch, + setFocus, + focus, + formUpdate, + updateSettings, + } = useContext(ControlContext) const { form } = control + const { formatMessage } = useIntl() return ( { { { { { controlDispatch({ @@ -115,5 +124,3 @@ export const BaseSettings = () => { ) } - -export default BaseSettings diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx index ae931b30945c..7957b233755f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/InputContent.tsx @@ -1,13 +1,13 @@ import { useContext } from 'react' -import ControlContext from '../../../../context/ControlContext' +import { ControlContext } from '../../../../context/ControlContext' import { Stack } from '@island.is/island-ui/core' -import BaseInput from './components/BaseInput' -import Preview from '../Preview/Preveiw' +import { BaseInput } from './components/BaseInput' +import { Preview } from '../Preview/Preveiw' import { FormSystemInput } from '@island.is/api/schema' -import InputSettings from './components/InputSettings/InputSettings' -import ListBuilder from './components/ListBuilder/ListBuilder' +import { InputSettings } from './components/InputSettings/InputSettings' +import { ListBuilder } from './components/ListBuilder/ListBuilder' -const InputContent = () => { +export const InputContent = () => { const { control, inListBuilder } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput @@ -22,5 +22,3 @@ const InputContent = () => {
) } - -export default InputContent diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx index 95543a0c3296..3e1e6cf1fa47 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/BaseInput.tsx @@ -1,5 +1,5 @@ import { useContext } from 'react' -import ControlContext from '../../../../../context/ControlContext' +import { ControlContext } from '../../../../../context/ControlContext' import { FormSystemInput } from '@island.is/api/schema' import { Stack, @@ -11,8 +11,11 @@ import { Checkbox, } from '@island.is/island-ui/core' import { SingleValue } from 'react-select' +import { useIntl } from 'react-intl' +import { m } from '../../../../../lib/messages' +import { inputTypesSelectObject } from '../../../../../lib/utils/inputTypes' -const BaseInput = () => { +export const BaseInput = () => { const { control, controlDispatch, @@ -24,30 +27,22 @@ const BaseInput = () => { const { activeItem } = control const currentItem = activeItem.data as FormSystemInput - const sortedInputTypes = inputTypes - ?.map((i) => ({ - label: i?.type ?? '', - value: i?.type ?? '', - })) - .sort((a, b) => (a?.label ?? '').localeCompare(b?.label ?? '')) - - const defaultOption = - currentItem.type === '' - ? null - : sortedInputTypes?.find((o) => o.value === currentItem.type) + const selectList = inputTypesSelectObject() + const defaultValue = selectList.find((i) => i.value === currentItem?.type) + const { formatMessage } = useIntl() return ( { {/* Name en */} { {/* Description */} - {['Textalýsing'].includes(currentItem?.type ?? '') && ( + {['Message'].includes(currentItem?.type ?? '') && ( <> { { {/* Required checkbox */} controlDispatch({ @@ -176,5 +171,3 @@ const BaseInput = () => { ) } - -export default BaseInput diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx index 8efc13117bfb..793fab90e153 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx @@ -1,26 +1,26 @@ import { useContext } from 'react' -import ControlContext from '../../../../../../context/ControlContext' +import { ControlContext } from '../../../../../../context/ControlContext' import { FormSystemInput } from '@island.is/api/schema' -import MessageWithLinkSettings from './components/MessageWithLinkSettings' -import FileUploadSettings from './components/FIleUploadSettings' -import TextInputSettings from './components/TextInputSettings' -import ListSettings from './components/ListSettings' -import ToggleConnection from './components/ToggleConnection' +import { MessageWithLinkSettings } from './components/MessageWithLinkSettings' +import { FileUploadSettings } from './components/FIleUploadSettings' +import { TextInputSettings } from './components/TextInputSettings' +import { ListSettings } from './components/ListSettings' +import { ToggleConnection } from './components/ToggleConnection' -const InputSettings = () => { +export const InputSettings = () => { const { control } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput return ( <> - {currentItem.type === 'Textalýsing' && } - {currentItem.type === 'Skjal' && } + {currentItem.type === 'Message' && } + {currentItem.type === 'Document' && } {currentItem.type === 'Textalínubox' || - (currentItem.type === 'TextaInnsláttur' && )} - {currentItem.type === 'Fellilisti' && } - {currentItem.type === 'Valhnappar' && } - {['Hakbox'].includes(currentItem.type as string) && } + (currentItem.type === 'Textbox' && )} + {currentItem.type === 'Dropdown_list' && } + {currentItem.type === 'Radio_buttons' && } + {['Checkbox'].includes(currentItem.type as string) && ( + + )} ) } - -export default InputSettings diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx index 47fbd54f01da..bb08588c47be 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx @@ -10,8 +10,10 @@ import { } from '@island.is/island-ui/core' import { useContext } from 'react' import { fileTypes } from '../../../../../../../utils/fileTypes' -import ControlContext from '../../../../../../../context/ControlContext' +import { ControlContext } from '../../../../../../../context/ControlContext' import { FormSystemInput } from '@island.is/api/schema' +import { m } from '../../../../../../../lib/messages' +import { useIntl } from 'react-intl' const fileSizes = { fileSizes: [ @@ -58,7 +60,7 @@ const fileSizes = { ], } -const FileUploadSettings = () => { +export const FileUploadSettings = () => { const { control, controlDispatch, updateActiveItem } = useContext(ControlContext) const { activeItem } = control @@ -70,26 +72,21 @@ const FileUploadSettings = () => { value: size.value, })) - const fileAmountOptions: Option[] = [ - { label: '1', value: 1 }, - { label: '2', value: 2 }, - { label: '3', value: 3 }, - { label: '4', value: 4 }, - { label: '5', value: 5 }, - { label: '6', value: 6 }, - { label: '7', value: 7 }, - { label: '8', value: 8 }, - { label: '9', value: 9 }, - { label: '10', value: 10 }, - ] - + const fileAmountOptions: Option[] = Array.from( + { length: 10 }, + (_, i) => ({ + label: `${i + 1}`, + value: i + 1, + }), + ) + const { formatMessage } = useIntl() return ( controlDispatch({ @@ -107,9 +104,9 @@ const FileUploadSettings = () => { f.value === inputSettings.amount, @@ -154,7 +151,7 @@ const FileUploadSettings = () => { - Leyfa eftirfarandi skjalatýpur + {formatMessage(m.allowFileTypes)} @@ -184,5 +181,3 @@ const FileUploadSettings = () => { ) } - -export default FileUploadSettings diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index be5438543397..1c2e257eb65e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -1,5 +1,5 @@ import { useContext, useState } from 'react' -import ControlContext from '../../../../../../../context/ControlContext' +import { ControlContext } from '../../../../../../../context/ControlContext' import { GridColumn as Column, GridRow as Row, @@ -10,6 +10,8 @@ import { RadioButton, } from '@island.is/island-ui/core' import { FormSystemInput } from '@island.is/api/schema' +import { useIntl } from 'react-intl' +import { m } from '../../../../../../../lib/messages' const predeterminedLists = [ { @@ -30,8 +32,7 @@ const predeterminedLists = [ }, ] -// Need to fix the radio buttons -const ListSettings = () => { +export const ListSettings = () => { const { control, setInListBuilder } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput @@ -46,15 +47,17 @@ const ListSettings = () => { ) } + const { formatMessage } = useIntl() + return ( - {currentItem.type === 'Fellilisti' && ( + {currentItem.type === 'Dropdown_list' && ( <> radioHandler(0)}> { console.log() }} @@ -66,7 +69,7 @@ const ListSettings = () => { { console.log() }} @@ -78,15 +81,15 @@ const ListSettings = () => { )} {radio[0] && ( )} {radio[1] && ( { { { ) } - -export default MessageWithLinkSettings diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx index 55948479f3c2..8ed23ca48817 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/TextInputSettings.tsx @@ -1,9 +1,9 @@ import { useContext } from 'react' -import ControlContext from '../../../../../../../context/ControlContext' +import { ControlContext } from '../../../../../../../context/ControlContext' import { FormSystemInput } from '@island.is/api/schema' import { Checkbox } from '@island.is/island-ui/core' -const TextInputSettings = () => { +export const TextInputSettings = () => { const { control, controlDispatch, updateActiveItem } = useContext(ControlContext) const { activeItem } = control @@ -27,5 +27,3 @@ const TextInputSettings = () => { /> ) } - -export default TextInputSettings diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ToggleConnection.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ToggleConnection.tsx index ccf3b077d496..f3fbaf2b232f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ToggleConnection.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ToggleConnection.tsx @@ -6,22 +6,24 @@ import { } from '@island.is/island-ui/core' import { useContext } from 'react' import { FormSystemInput } from '@island.is/api/schema' -import ControlContext from '../../../../../../../context/ControlContext' +import { ControlContext } from '../../../../../../../context/ControlContext' import { NavbarSelectStatus } from '../../../../../../../lib/utils/interfaces' +import { useIntl } from 'react-intl' +import { m } from '../../../../../../../lib/messages' -const ToggleConnection = () => { +export const ToggleConnection = () => { const { control, selectStatus, setSelectStatus } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemInput const hasConnections = control.form.dependencies[currentItem.guid as string] !== undefined && control.form.dependencies[currentItem.guid as string].length > 0 - + const { formatMessage } = useIntl() return ( setSelectStatus( @@ -38,5 +40,3 @@ const ToggleConnection = () => { ) } - -export default ToggleConnection diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx index eefd7ecbb72e..3ccffa860f86 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx @@ -1,5 +1,5 @@ import { useContext, useEffect, useMemo, useState } from 'react' -import ControlContext from '../../../../../../context/ControlContext' +import { ControlContext } from '../../../../../../context/ControlContext' import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { GridRow as Row, @@ -20,11 +20,13 @@ import { useSensors, } from '@dnd-kit/core' import { NavbarSelectStatus } from '../../../../../../lib/utils/interfaces' -import ListItem from './components/ListItem' +import { ListItem } from './components/ListItem' import { SortableContext } from '@dnd-kit/sortable' import { createPortal } from 'react-dom' +import { useIntl } from 'react-intl' +import { m } from '../../../../../../lib/messages' -const ListBuilder = () => { +export const ListBuilder = () => { const { control, controlDispatch, @@ -48,6 +50,8 @@ const ListBuilder = () => { ) const [connecting, setConnecting] = useState([false]) + const { formatMessage } = useIntl() + const sensors = useSensors( useSensor(PointerSensor, { activationConstraint: { @@ -113,7 +117,7 @@ const ListBuilder = () => { justifyContent="spaceBetween" style={{ minHeight: '500px' }} > - +
Listasmiður @@ -163,7 +167,7 @@ const ListBuilder = () => { )} - +
{ > - +
- +
) } - -export default ListBuilder diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.css.ts b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.css.ts new file mode 100644 index 000000000000..c1113d255906 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.css.ts @@ -0,0 +1,5 @@ +import { style } from '@vanilla-extract/css' + +export const draggingBox = style({ + height: '155px', +}) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx index 1aaecd3d91dc..8185326551a1 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/components/ListItem.tsx @@ -7,10 +7,13 @@ import { Input, } from '@island.is/island-ui/core' import { Dispatch, SetStateAction, useContext } from 'react' -import ControlContext from '../../../../../../../context/ControlContext' +import { ControlContext } from '../../../../../../../context/ControlContext' import { useSortable } from '@dnd-kit/sortable' import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { NavbarSelectStatus } from '../../../../../../../lib/utils/interfaces' +import { useIntl } from 'react-intl' +import { m } from '../../../../../../../lib/messages' +import * as styles from './ListItem.css' interface Props { listItem: FormSystemListItem @@ -19,7 +22,12 @@ interface Props { setConnecting: Dispatch> } -const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { +export const ListItem = ({ + listItem, + connecting, + index, + setConnecting, +}: Props) => { const { control, controlDispatch, @@ -30,13 +38,15 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemInput - const isRadio = currentItem.type === 'Valhnappar' + const isRadio = currentItem.type === 'Radio_buttons' const { setNodeRef, attributes, listeners, isDragging } = useSortable({ id: listItem.guid ?? '', data: { listItem }, }) + const { formatMessage } = useIntl() + if (isDragging) { return ( { borderRadius="standard" padding={2} marginTop={2} - > - - - {}} - /> - {}} - /> - - - {}} - > - - - - - - - - - - {}} - /> - - - {}} - /> - - - + className={styles.draggingBox} + >
) } @@ -139,7 +85,7 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { justifyContent="spaceBetween" > { setSelectStatus( @@ -157,7 +103,7 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { }} /> controlDispatch({ @@ -186,16 +132,16 @@ const ListItem = ({ listItem, connecting, index, setConnecting }: Props) => { > - +
- +
{ { { { ) } - -export default ListItem diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/inputTypes.ts b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/inputTypes.ts new file mode 100644 index 000000000000..47587b5138ce --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/inputTypes.ts @@ -0,0 +1,25 @@ +export const types: { [key: string]: string } = { + Bank_account: 'Bankareikningur', + Date_picker: 'Dagsetningarval', + Default: 'Default', + Dropdown_list: 'Fellilisti', + Payer: 'Greiðandi', + Payment: 'Greiðsla', + Checkbox: 'Hakbox', + Homestay_number: 'Heimagistingarnúmer', + Homestay_overview: 'Heimagistingaryfirlit', + National_id: 'Kennitala', + National_id_all: 'Kennitala (allt)', + National_id_estate: 'Kennitala (dánarbú)', + Time_input: 'Klúkkuinnsláttur', + ISK_numberbox: 'Krónutölubox', + ISK_sumbox: 'Krónutölusumma', + Email: 'Netfang', + Property_number: 'Fasteignanúmer', + Phone_number: 'Símanúmer', + Document: 'Skjal', + Message: 'Textalýsing', + Textbox: 'Textabox', + Numberbox: 'Tölubox', + Radio_buttons: 'Valhnappar', +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 68f497f38ec9..99672d02e5cc 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -1,9 +1,11 @@ import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' import { useContext, useState } from 'react' -import ControlContext from '../../../../context/ControlContext' +import { ControlContext } from '../../../../context/ControlContext' import { FormSystemDocumentType } from '@island.is/api/schema' +import { useIntl } from 'react-intl' +import { m } from '../../../../lib/messages' -const Premises = () => { +export const Premises = () => { const { control, documentTypes, updateSettings } = useContext(ControlContext) const [formDocumentTypes, setFormDocumentTypes] = useState< FormSystemDocumentType[] @@ -27,15 +29,12 @@ const Premises = () => { updateSettings({ ...control.form, documentTypes: newDocumentTypes }) } + const { formatMessage } = useIntl() + return ( - +
- - Í þessu skrefi óskum við eftir samþykki fyrir því að upplýsingar um - hlutaðeigandi aðila verði sóttar af Mínum síðum. Að auki er hægt að - óska eftir heimild fyrir því að einhver af eftirfarandi vottorðum - verði sótt í viðeigandi vefþjónustur - + {formatMessage(m.premisesTitle)} {documentTypes?.map((d, i) => { @@ -54,8 +53,6 @@ const Premises = () => { ) })} - +
) } - -export default Premises diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 79c3f700ce07..ba874914084c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -1,33 +1,33 @@ import { FormSystemInput } from '@island.is/api/schema' import { Box, DatePicker, Text } from '@island.is/island-ui/core' -import MessageWithLink from './components/MessageWithLink' -import Banknumber from './components/Banknumber' -import Email from './components/Email' -import NationalId from './components/NationalId' -import FileUpload from './components/FileUpload' -import TextInput from './components/TextInput' -import List from './components/List' -import Radio from './components/Radio' -import Currency from './components/Currency' -import CheckboxPreview from './components/CheckboxPreview' +import { MessageWithLink } from './components/MessageWithLink' +import { Banknumber } from './components/Banknumber' +import { Email } from './components/Email' +import { NationalId } from './components/NationalId' +import { FileUpload } from './components/FileUpload' +import { TextInput } from './components/TextInput' +import { List } from './components/List' +import { Radio } from './components/Radio' +import { Currency } from './components/Currency' +import { CheckboxPreview } from './components/CheckboxPreview' interface Props { data: FormSystemInput } -const Preview = ({ data }: Props) => { +export const Preview = ({ data }: Props) => { const { type } = data return ( - {type === 'Textalýsing' && } - {type === 'Bankareikningur' && ( - + {type === 'Message' && } + {type === 'Bank_account' && ( +
{data?.name?.is} - +
)} - {type === 'Netfang' && } - {type === 'Dagssetningarval' && ( + {type === 'Email' && } + {type === 'Date_picker' && ( { /> )} - {type === 'Kennitala' && } - {type === 'Skjal' && } + {type === 'National_id' && } + {type === 'Document' && } {type === 'Textalínubox' || - (type === 'TextaInnsláttur' && )} - {type === 'Fellilisti' && } - {type === 'Valhnappar' && } - {type === 'Krónutölubox' && } - {type === 'Hakbox' && } + (type === 'Textbox' && )} + {type === 'Dropdown_list' && } + {type === 'Radio_buttons' && } + {type === 'ISK_numberbox' && } + {type === 'Checkbox' && }
) } - -export default Preview diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx index 406d682e271f..4f66ff40c6e2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Banknumber.tsx @@ -5,13 +5,14 @@ import { } from '@island.is/island-ui/core' import { useRef, useState } from 'react' import { FormSystemInput } from '@island.is/api/schema' +import { useIntl } from 'react-intl' +import { m } from '../../../../../lib/messages' interface Props { currentItem: FormSystemInput - } -const Banknumber = ({ currentItem }: Props) => { +export const Banknumber = ({ currentItem }: Props) => { const [banki, setBanki] = useState('') const [hb, setHb] = useState('') const [reikningur, setReikningur] = useState('') @@ -60,6 +61,8 @@ const Banknumber = ({ currentItem }: Props) => { return leadingZeros + originalNumber } + const { formatMessage } = useIntl() + return ( @@ -70,7 +73,7 @@ const Banknumber = ({ currentItem }: Props) => { HTMLInputElement | HTMLTextAreaElement > } - label="Banki" + label={formatMessage(m.bank)} type="number" value={banki} maxLength={4} @@ -87,7 +90,7 @@ const Banknumber = ({ currentItem }: Props) => { HTMLInputElement | HTMLTextAreaElement > } - label="Hb" + label={formatMessage(m.ledger)} maxLength={2} type="number" value={hb} @@ -104,7 +107,7 @@ const Banknumber = ({ currentItem }: Props) => { HTMLInputElement | HTMLTextAreaElement > } - label="Reikningsnúmer" + label={formatMessage(m.accountNumber)} type="number" value={reikningur} name="" @@ -117,5 +120,3 @@ const Banknumber = ({ currentItem }: Props) => { ) } - -export default Banknumber diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx index 66629d5f7bb0..9dfaa5831d89 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx @@ -1,20 +1,18 @@ -import { FormSystemInput } from "@island.is/api/schema" -import { Checkbox } from "@island.is/island-ui/core" +import { FormSystemInput } from '@island.is/api/schema' +import { Checkbox } from '@island.is/island-ui/core' interface Props { currentItem: FormSystemInput } -const CheckboxPreview = ({ currentItem }: Props) => { - +export const CheckboxPreview = ({ currentItem }: Props) => { return ( { console.log() }} + // eslint-disable-next-line @typescript-eslint/no-empty-function + onChange={() => {}} /> ) } - -export default CheckboxPreview diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx index dc7012366144..130fb0240b0f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx @@ -4,14 +4,14 @@ import { Input, } from '@island.is/island-ui/core' import { ChangeEvent, useContext, useState } from 'react' -import ControlContext from '../../../../../context/ControlContext' +import { ControlContext } from '../../../../../context/ControlContext' import { FormSystemInput } from '@island.is/api/schema' interface Props { currentItem: FormSystemInput } -const Currency = ({ currentItem }: Props) => { +export const Currency = ({ currentItem }: Props) => { const [currency, setCurrency] = useState('') const { control } = useContext(ControlContext) const label = control.activeItem?.data?.name?.is @@ -39,5 +39,3 @@ const Currency = ({ currentItem }: Props) => {
) } - -export default Currency diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx index 5b3eb3e63ef8..aa88d15dda58 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Email.tsx @@ -1,7 +1,9 @@ import { useContext, useState } from 'react' import { Input, Stack, Text } from '@island.is/island-ui/core' -import ControlContext from '../../../../../context/ControlContext' +import { ControlContext } from '../../../../../context/ControlContext' import { FormSystemInput } from '@island.is/api/schema' +import { useIntl } from 'react-intl' +import { m } from '../../../../../lib/messages' interface Props { currentItem: FormSystemInput @@ -17,22 +19,21 @@ export const Email = ({ currentItem }: Props) => { const res = pattern.test(email) return !res } + const { formatMessage } = useIntl() return ( {activeItem?.data?.name?.is} setEmail(e.target.value)} onBlur={() => setHasError(isValidEmail())} - errorMessage="Ekki gilt netfang" + errorMessage={formatMessage(m.invalidEmail)} hasError={hasError} required={currentItem?.isRequired ?? false} /> ) } - -export default Email diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx index 65ab7abf9ed8..a812a139b059 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/FileUpload.tsx @@ -7,15 +7,17 @@ import { useState } from 'react' import { uuid } from 'uuidv4' import { FormSystemInput } from '@island.is/api/schema' import { fileTypes } from '../../../../../utils/fileTypes' +import { useIntl } from 'react-intl' +import { m } from '../../../../../lib/messages' interface Props { currentItem: FormSystemInput } -const FileUpload = ({ currentItem }: Props) => { +export const FileUpload = ({ currentItem }: Props) => { const [error, setError] = useState(undefined) const [fileList, setFileList] = useState>([]) - + const { formatMessage } = useIntl() const onChange = (files: File[]) => { const uploadFiles = files.map((file) => fileToObject(file)) const uploadFilesWithKey = uploadFiles.map((f) => ({ @@ -26,7 +28,9 @@ const FileUpload = ({ currentItem }: Props) => { // Check whether upload will exceed limit and if so, prevent it const currentAmount = currentItem?.inputSettings?.amount ?? 0 if (fileList.length + uploadFilesWithKey.length > currentAmount) { - setError(`Hámarksfjöldi skjala er ${currentItem.inputSettings?.amount}`) + setError( + `${formatMessage(m.maxFileError)} ${currentItem.inputSettings?.amount}`, + ) return } setError('') @@ -45,10 +49,10 @@ const FileUpload = ({ currentItem }: Props) => { name="fileUpload" fileList={fileList} header={currentItem?.name?.is ?? ''} - description={`Eftirfarandi skjalatýpur eru leyfðar: ${currentItem?.inputSettings?.types?.map( - (f: string) => `${f} `, - )}`} - buttonLabel="Veldu skjöl til að hlaða upp" + description={`${formatMessage( + m.previewAllowedFileTypes, + )}: ${currentItem?.inputSettings?.types?.map((f: string) => `${f} `)}`} + buttonLabel={formatMessage(m.fileUploadButton)} onChange={onChange} onRemove={onRemove} errorMessage={fileList.length > 0 ? error : undefined} @@ -64,5 +68,3 @@ const FileUpload = ({ currentItem }: Props) => { ) } - -export default FileUpload diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index a5d0256b9034..d328380b0ccc 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -2,7 +2,6 @@ import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { useEffect, useState } from 'react' import { Select } from '@island.is/island-ui/core' - interface Props { currentItem: FormSystemInput } @@ -12,7 +11,7 @@ type ListItem = { value: string | number } -const List = ({ currentItem }: Props) => { +export const List = ({ currentItem }: Props) => { const [listItems, setListItems] = useState([]) useEffect(() => { const currentList = currentItem.inputSettings?.list ?? [] @@ -35,5 +34,3 @@ const List = ({ currentItem }: Props) => { ) } - -export default List diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx index eed4d813e8bd..8f852679ac0c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/MessageWithLink.tsx @@ -5,7 +5,7 @@ interface Props { data: FormSystemInput } -const MessageWithLink = ({ data }: Props) => { +export const MessageWithLink = ({ data }: Props) => { const formatUrl = (url: string): string => { if (url.startsWith('http://')) { url = url.replace('http://', 'https://') @@ -33,7 +33,8 @@ const MessageWithLink = ({ data }: Props) => { {data.inputSettings?.hasLink && ( - +
) } else if (activeItem) { return ( - +
s !== null && s !== undefined, ) - .filter((s) => s.type === 'Innsláttur') + .filter((s) => s.type === 'Input') .map((s, i) => ( - {/* Only render client side */} - {typeof window === 'object' && - createPortal( - - {activeItem && ( - - )} - , - document.body, - )} + {createPortal( + + {activeItem && ( + + )} + , + document.body, + )} - +
) } return null diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx deleted file mode 100644 index 31eebd642753..000000000000 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavComponent/NavComponent.tsx +++ /dev/null @@ -1,175 +0,0 @@ -import { useState } from 'react' -import { useSortable } from '@dnd-kit/sortable' -import { Box } from '@island.is/island-ui/core' -import cn from 'classnames' -import * as styles from './NavComponent.css' -import { UniqueIdentifier } from '@dnd-kit/core' -import NavButtons from './components/NavButtons' -import { - FormSystemGroup, - FormSystemInput, - FormSystemStep, -} from '@island.is/api/schema' -import { ItemType } from '../../../../lib/utils/interfaces' - -type Props = { - type: ItemType - data: FormSystemStep | FormSystemGroup | FormSystemInput - active: boolean - index?: number - focusComponent(type: ItemType, id: UniqueIdentifier): void -} - -export default function NavComponent({ - type, - data, - active, - index, - focusComponent, -}: Props) { - const [editMode] = useState(false) - - const truncateText = (text: string, maxLength: number) => { - return text.length > maxLength ? text.slice(0, maxLength) + '...' : text - } - - const truncateName = (name: string) => { - let maxLength - - if (active) { - switch (type) { - case 'Step': - maxLength = 23 - break - case 'Group': - maxLength = 16 - break - case 'Input': - maxLength = 12 - break - default: - maxLength = 26 - } - } else { - switch (type) { - case 'Step': - maxLength = 26 - break - case 'Group': - maxLength = 19 - break - case 'Input': - maxLength = 16 - break - default: - maxLength = 26 - } - } - - return truncateText(name, maxLength) - } - - const { setNodeRef, attributes, listeners, isDragging } = useSortable({ - id: data.guid as UniqueIdentifier, - data: { - type: type, - data, - }, - disabled: editMode, - }) - - if (isDragging) { - return ( -
-
-
- ) - } - - return ( - focusComponent(type, data.guid as UniqueIdentifier)} - > - {active ? ( - - - {index} - - - {truncateName(data?.name?.is as string)} - - - {!( - type === 'Step' && (data as FormSystemStep).type !== 'Innsláttur' - ) && } - - - ) : ( - - - {index} - - - {truncateName(data?.name?.is as string)} - - - )} - - ) -} diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx index 9ec1cbfcd0be..5ec220e68e2a 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -3,12 +3,15 @@ import cn from 'classnames' import * as styles from './NavbarTab.css' import { useContext } from 'react' import { baseSettingsStep } from '../../../../utils/getBaseSettingsStep' -import ControlContext from '../../../../context/ControlContext' +import { ControlContext } from '../../../../context/ControlContext' +import { useIntl } from 'react-intl' +import { m } from '../../../../lib/messages' -export default function NavbarTab() { +export const NavbarTab = () => { const { control, controlDispatch, inSettings, setInSettings } = useContext(ControlContext) const { stepsList: steps } = control.form + const { formatMessage } = useIntl() return ( @@ -18,7 +21,7 @@ export default function NavbarTab() { [styles.selected]: !inSettings, })} onClick={() => { - const step = steps?.find((s) => s?.type === 'Innsláttur') + const step = steps?.find((s) => s?.type === 'Input') controlDispatch({ type: 'SET_ACTIVE_ITEM', payload: { @@ -51,7 +54,7 @@ export default function NavbarTab() { setInSettings(true) }} > - Grunnstillingar + {formatMessage(m.basicSettings)}
diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx index 517b924682b2..0e2ec7912062 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx @@ -1,27 +1,30 @@ import { useContext } from 'react' import { Box, Text } from '@island.is/island-ui/core' -import SelectNavComponent from './components/SelectNavComponent' -import ControlContext from '../../context/ControlContext' +import { NavComponent as SelectNavComponent } from '../NavComponent/NavComponent' +import { ControlContext } from '../../context/ControlContext' import { FormSystemGroup, FormSystemInput, FormSystemStep, } from '@island.is/api/schema' import { NavbarSelectStatus } from '../../lib/utils/interfaces' +import { useIntl } from 'react-intl' +import { m } from '../../lib/messages' -export default function NavbarSelect() { +export const NavbarSelect = () => { const { control, selectStatus } = useContext(ControlContext) const { activeItem, form } = control const { stepsList: steps, groupsList: groups, inputsList: inputs } = form let selectable = false + const { formatMessage } = useIntl() return ( - +
- Skref + {formatMessage(m.step)} {steps ?.filter((s): s is FormSystemStep => s !== null && s !== undefined) - .filter((s) => s.type === 'Innsláttur') + .filter((s) => s.type === 'Input') .map((s) => ( ))} - +
) } diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx deleted file mode 100644 index 595ccf20a165..000000000000 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/components/SelectNavComponent.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import cn from 'classnames' -import * as styles from './selectNavComponent.css' -import { Box, Checkbox } from '@island.is/island-ui/core' -import { useContext } from 'react' -import { - FormSystemGroup, - FormSystemInput, - FormSystemStep, -} from '@island.is/api/schema' -import ControlContext from '../../../context/ControlContext' -import { ItemType, NavbarSelectStatus } from '../../../lib/utils/interfaces' - -type Props = { - type: ItemType - data: FormSystemStep | FormSystemGroup | FormSystemInput - active: boolean - selectable: boolean -} - -export default function SelectNavComponent({ - type, - data, - active, - selectable, -}: Props) { - const { control, selectStatus, controlDispatch, updateSettings } = - useContext(ControlContext) - const { activeItem, activeListItem, form } = control - const activeGuid = - selectStatus === NavbarSelectStatus.LIST_ITEM - ? activeListItem?.guid ?? '' - : activeItem?.data?.guid ?? '' - const connected: boolean = form.dependencies[activeGuid]?.includes( - data.guid as string, - ) - - const truncateText = (text: string, maxLength: number) => { - return text.length > maxLength ? text.slice(0, maxLength) + '...' : text - } - - const truncateName = (name: string) => { - let maxLength: number - - if (active) { - switch (type) { - case 'Step': - maxLength = 23 - break - case 'Group': - maxLength = 16 - break - case 'Input': - maxLength = 12 - break - default: - maxLength = 26 - } - } else { - switch (type) { - case 'Step': - maxLength = 26 - break - case 'Group': - maxLength = 19 - break - case 'Input': - maxLength = 16 - break - default: - maxLength = 26 - } - } - - return truncateText(name, maxLength) - } - - return ( - - {active ? ( - - - {/* Index */} - - - {truncateName(data?.name?.is ?? '')} - - - ) : ( - - - {/* {index} */} - - - {truncateName(data?.name?.is ?? '')} - - {selectable && ( - - - controlDispatch({ - type: 'TOGGLE_DEPENDENCY', - payload: { - activeId: activeGuid, - itemId: data.guid as string, - update: updateSettings, - }, - }) - } - /> - - )} - - )} - - ) -} diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts b/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts deleted file mode 100644 index e906fdb3b246..000000000000 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/components/selectNavComponent.css.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { style, styleVariants } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -const base = style({ - border: `1px solid ${theme.border.color.blue200}`, - borderRadius: theme.border.radius.standard, - marginBottom: '2px', - height: '46px', - marginLeft: 'auto', - backgroundColor: theme.color.white, - lineHeight: '46px', - ':hover': { - fontWeight: 'bolder', - }, - cursor: 'grab', -}) - -export const step = style({ - border: `1px solid ${theme.border.color.blue200}`, - borderRadius: theme.border.radius.standard, - marginBottom: '2px', - height: '46px', - width: '100%', -}) - -export const navComponent = styleVariants({ - step: [ - base, - { - width: '100%', - }, - ], - group: [ - base, - { - width: '90%', - }, - ], - input: [ - base, - { - width: '80%', - }, - ], -}) - -const baseBackground = style({ - width: '25px', - height: '44px', - borderRadius: `${theme.border.radius.standard} 0 0 ${theme.border.radius.standard}`, - textAlign: 'center', -}) - -export const navBackgroundActive = styleVariants({ - step: [ - baseBackground, - { - backgroundColor: theme.color.blue600, - lineHeight: '45px', - color: theme.color.white, - }, - ], - group: [ - baseBackground, - { - backgroundColor: theme.color.roseTinted400, - }, - ], - input: [ - baseBackground, - { - backgroundColor: theme.color.purple400, - }, - ], -}) - -export const navBackgroundDefault = styleVariants({ - step: [ - baseBackground, - { - lineHeight: '45px', - }, - ], - group: [baseBackground, {}], - input: [baseBackground, {}], -}) - -export const customBackgroundDropdown = style({ - background: theme.color.blue100, -}) - -export const selectableComponent = style({ - paddingTop: '10px', -}) diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index 5b04a3f8cf44..acb6594353e1 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -11,13 +11,15 @@ import * as styles from './TableRow.css' import { useState } from 'react' import { AnimatePresence, motion } from 'framer-motion' import { useNavigate } from 'react-router-dom' -import TranslationTag from '../TranslationTag/TranslationTag' +import { TranslationTag } from '../TranslationTag/TranslationTag' import { formatDate } from '../../utils/formatDate' import { FormSystemPaths } from '../../lib/paths' import { LicenseProviderEnum, ApplicationTemplateStatus, } from '../../lib/utils/interfaces' +import { useIntl } from 'react-intl' +import { m } from '../../lib/messages' interface Props { id?: number | null @@ -41,7 +43,7 @@ const ColumnText = ({ text }: ColumnTextProps) => (
) -const TableRow = ({ +export const TableRow = ({ id, name, lastModified, @@ -52,6 +54,36 @@ const TableRow = ({ }: Props) => { const [isOpen, setIsOpen] = useState(false) const navigate = useNavigate() + const { formatMessage } = useIntl() + const header = () => ( + <> + + + + {formatMessage(m.number)} + + + {formatMessage(m.name)} + + + {formatMessage(m.lastModified)} + + + {formatMessage(m.translations)} + + + {formatMessage(m.organisation)} + + + {formatMessage(m.state)} + + + {formatMessage(m.actions)} + + + + + ) if (isHeader) return header() return ( } items={[ { - title: 'Breyta', + title: formatMessage(m.edit), onClick: () => { navigate( FormSystemPaths.Form.replace(':formId', String(id)), @@ -112,26 +144,26 @@ const TableRow = ({ }, }, { - title: 'Afrita', + title: formatMessage(m.copy), }, { - title: 'Þýðing enska', + title: formatMessage(m.translateToEnglish), }, { - title: 'Sækja slóð', + title: formatMessage(m.translateToEnglish), }, { title: 'Export', }, { - title: 'Sækja json', + title: formatMessage(m.getJson), }, ]} /> - +
{isOpen === true ? ( ) : null} - +
) } - -export default TableRow - -const header = () => ( - <> - - - - Númer - - - Heiti - - - Síðast breytt - - - Þýðingar - - - Stofnun - - - Staða - - - Aðgerðir - - - - -) diff --git a/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx b/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx index 987ac2dc804d..51327d4109b2 100644 --- a/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx +++ b/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx @@ -3,7 +3,7 @@ interface Props { translated: boolean } -export default function TranslationTag({ translated }: Props) { +export const TranslationTag = ({ translated }: Props) => { return translated ? ( Þýdd ) : ( diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index 46b8aad1460d..cc495319d60f 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -13,6 +13,8 @@ import { ItemType, NavbarSelectStatus, } from '../lib/utils/interfaces' +import { MessageDescriptor } from 'react-intl' +import { Options } from 'react-select' export interface IControlContext { control: ControlState @@ -35,7 +37,7 @@ export interface IControlContext { updateSettings: (updatedForm?: FormSystemForm) => void } -const ControlContext = createContext({ +export const ControlContext = createContext({ control: {} as ControlState, controlDispatch: function (_value: unknown): void { throw new Error('Function not implemented.') @@ -73,5 +75,3 @@ const ControlContext = createContext({ throw new Error('Function not implemented.') }, }) - -export default ControlContext diff --git a/libs/portals/admin/form-system/src/gql/Form.graphql b/libs/portals/admin/form-system/src/gql/Form.graphql deleted file mode 100644 index 67304c9e1714..000000000000 --- a/libs/portals/admin/form-system/src/gql/Form.graphql +++ /dev/null @@ -1,606 +0,0 @@ -mutation formSystemUpdateForm($input: FormSystemUpdateFormInput!) { - formSystemUpdateForm(input: $input) -} - -query formSystemGetForm($input: FormSystemGetFormInput!) { - formSystemGetForm(input: $input) { - form { - id - name { - is - en - } - applicationsDaysToRemove - completedMessage { - is - en - } - created - dependencies - documentTypes { - id - name { - is - en - } - description { - is - en - } - type - } - formApplicantTypes { - applicantTypeId - formId - name { - is - en - } - type - } - groupsList { - displayOrder - guid - id - isHidden - multiSet - name { - is - en - } - stepGuid - stepId - } - inputsList { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - invalidationDate - isTranslated - lastChanged - organization { - applicantTypes { - applicantTypeId - description { - is - en - } - id - name { - is - en - } - nameSuggestions { - applicantTypeId - nameSuggestion { - is - en - } - } - type - } - documentTypes { - description { - is - en - } - id - name { - is - en - } - type - } - id - inputTypes { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - listTypes { - id - name { - is - en - } - description { - is - en - } - type - } - name { - is - en - } - nationalId - } - steps { - callRuleset - displayOrder - groups { - displayOrder - guid - id - inputs { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - isHidden - multiSet - name { - is - en - } - stepGuid - stepId - } - guid - id - isCompleted - isHidden - name { - is - en - } - type - waitingText { - is - en - } - } - stepsList { - callRuleset - displayOrder - guid - id - isCompleted - isHidden - name { - is - en - } - type - waitingText { - is - en - } - } - stopProgressOnValidatingStep - } - applicantTypes { - applicantTypeId - description { - is - en - } - id - name { - is - en - } - nameSuggestions { - applicantTypeId - nameSuggestion { - is - en - } - } - type - } - documentTypes { - description { - is - en - } - id - name { - is - en - } - type - } - inputTypes { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - } -} - -mutation formSystemCreateForm($input: FormSystemCreateFormInput!) { - formSystemCreateForm(input: $input) { - form { - id - name { - is - en - } - applicationsDaysToRemove - completedMessage { - is - en - } - created - dependencies - documentTypes { - id - name { - is - en - } - description { - is - en - } - type - } - formApplicantTypes { - applicantTypeId - formId - name { - is - en - } - type - } - groupsList { - displayOrder - guid - id - inputs { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - isHidden - multiSet - name { - is - en - } - stepGuid - stepId - } - inputsList { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - invalidationDate - isTranslated - lastChanged - organization { - applicantTypes { - applicantTypeId - description { - is - en - } - id - name { - is - en - } - nameSuggestions { - applicantTypeId - nameSuggestion { - is - en - } - } - type - } - documentTypes { - description { - is - en - } - id - name { - is - en - } - type - } - id - inputTypes { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - listTypes { - id - name { - is - en - } - description { - is - en - } - type - } - name { - is - en - } - nationalId - } - steps { - callRuleset - displayOrder - groups { - displayOrder - guid - id - inputs { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - isHidden - multiSet - name { - is - en - } - stepGuid - stepId - } - guid - id - isCompleted - isHidden - name { - is - en - } - type - waitingText { - is - en - } - } - stepsList { - callRuleset - displayOrder - groups { - displayOrder - guid - id - inputs { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - isHidden - multiSet - name { - is - en - } - stepGuid - stepId - } - guid - id - isCompleted - isHidden - name { - is - en - } - type - waitingText { - is - en - } - } - stopProgressOnValidatingStep - } - applicantTypes { - applicantTypeId - description { - is - en - } - id - name { - is - en - } - nameSuggestions { - applicantTypeId - nameSuggestion { - is - en - } - } - type - } - documentTypes { - description { - is - en - } - id - name { - is - en - } - type - } - inputTypes { - description { - is - en - } - displayOrder - groupGuid - groupId - guid - id - inputFields - inputSettings - isHidden - isPartOfMultiSet - isRequired - name { - is - en - } - type - } - } -} - -mutation formSystemDeleteForm($input: FormSystemDeleteFormInput!) { - formSystemDeleteForm(input: $input) -} diff --git a/libs/portals/admin/form-system/src/hooks/fileUploadReducer.ts b/libs/portals/admin/form-system/src/hooks/fileUploadReducer.ts index 4e8c480714b1..e461bc64b2a8 100644 --- a/libs/portals/admin/form-system/src/hooks/fileUploadReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/fileUploadReducer.ts @@ -14,10 +14,10 @@ type FileUploadActions = payload: { file: UploadFile; status: UploadFileStatus; percent: number } } -export default function fileUploadReducer( +export const fileUploadReducer = ( state: UploadFile[], action: FileUploadActions, -) { +) => { switch (action.type) { case ActionTypes.add: return state.concat(action.payload.newFiles) diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts index 44416d48f081..1bd411b464a1 100644 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ b/libs/portals/admin/form-system/src/lib/messages.ts @@ -1,14 +1,381 @@ import { defineMessages } from 'react-intl' export const m = defineMessages({ - formSystemIntro: { - id: 'admin-portal.form-system:formSystemIntro', + rootName: { + id: 'portals-admin.form-system:application-builder', defaultMessage: 'Umsóknarsmiður', - description: '', }, - formSystemTitle: { - id: 'admin-portal.form-system:Title', - defaultMessage: 'Umsóknarsmiður', - description: '', + template: { + id: 'portals-admin.form-system:template', + defaultMessage: 'Forskrift', + }, + organisation: { + id: 'portals-admin.form-system:organisation', + defaultMessage: 'Stofnun', + }, + state: { + id: 'portals-admin.form-system:state', + defaultMessage: 'Staða', + }, + name: { + id: 'portals-admin.form-system:name', + defaultMessage: 'Heiti', + }, + nameEnglish: { + id: 'portals-admin.form-system:name-english', + defaultMessage: 'Heiti (enska)', + }, + applicationName: { + id: 'portals-admin.form-system:application-name', + defaultMessage: 'Heiti umsóknar', + }, + applicationNameEnglish: { + id: 'portals-admin.form-system:application-name-english', + defaultMessage: 'Heiti umsóknar (enska)', + }, + description: { + id: 'portals-admin.form-system:description', + defaultMessage: 'Lýsing', + }, + descriptionEnglish: { + id: 'portals-admin.form-system:description-english', + defaultMessage: 'Lýsing (enska)', + }, + daysUntilExpiration: { + id: 'portals-admin.form-system:days-until-expiration', + defaultMessage: 'Líftími umsóknar', + }, + deadline: { + id: 'portals-admin.form-system:deadline', + defaultMessage: 'Umsóknarfrestur', + }, + basicSettings: { + id: 'portals-admin.form-system:basic-settings', + defaultMessage: 'Grunnstillingar', + }, + allowProgress: { + id: 'portals-admin.form-system:allow-progress', + defaultMessage: + 'Leyfa notanda að halda áfram í umsókninni með ógild/óútfyllt gildi', + }, + premisesTitle: { + id: 'portals-admin.form-system:premises-title', + defaultMessage: + 'Í þessu skrefi óskum við eftir samþykki fyrir því að upplýsingar um hlutaðeigandi aðila verði sóttar af Mínum síðum. Að auki er hægt að óska eftir heimild fyrir því að einhver af eftirfarandi vottorðum verði sótt í viðeigandi vefþjónustur', + }, + premises: { + id: 'portals-admin.form-system:premises', + defaultMessage: 'Forsendur', + }, + estateGuardianshipCertificate: { + id: 'portals-admin.form-system:estate-guardianship-certificate', + defaultMessage: 'Búsforræðisvottorð', + }, + estateGuardianshipCertificateWithoutSeal: { + id: 'portals-admin.form-system:estate-guardianship-certificate-without-seal', + defaultMessage: 'Búsforræðisvottorð án stimpils', + }, + certificateOfResidence: { + id: 'portals-admin.form-system:certificate-of-residence', + defaultMessage: 'Búsetuvottorð', + }, + noDebtCertificate: { + id: 'portals-admin.form-system:no-debt-certificate', + defaultMessage: 'Skuldleysisvottorð', + }, + criminalRecord: { + id: 'portals-admin.form-system:criminal-record', + defaultMessage: 'Sakavottorð', + }, + criminalRecordWithoutSeal: { + id: 'portals-admin.form-system:criminal-record-without-seal', + defaultMessage: 'Sakavottorð án stimpils', + }, + relevantParties: { + id: 'portals-admin.form-system:relevant-parties', + defaultMessage: 'Hlutaðeigandi aðilar', + }, + selectIndividuals: { + id: 'portals-admin.form-system:select-individuals', + defaultMessage: 'Veldu þá einstaklinga sem mega opna þessa umsókn', + }, + individual: { + id: 'portals-admin.form-system:individual', + defaultMessage: 'Einstaklingur (innskráður)', + }, + individualOnBehalfPerson: { + id: 'portals-admin.form-system:individual-on-behalf-person', + defaultMessage: 'Einstaklingur í umboði annars einstaklings', + }, + individualOnBehalfLegalEntity: { + id: 'portals-admin.form-system:individual-on-behalf-legal-entity', + defaultMessage: 'Einstaklingur í umboði lögaðila', + }, + individualWithPowerOfAttorney: { + id: 'portals-admin.form-system:individual-with-power-of-attorney', + defaultMessage: 'Einstaklingur með prókúru', + }, + defineRelevantParties: { + id: 'portals-admin.form-system:define-relevant-parties', + defaultMessage: 'Skilgreindu hlutaðeigandi aðila', + }, + step: { + id: 'portals-admin.form-system:step', + defaultMessage: 'Skref', + }, + group: { + id: 'portals-admin.form-system:group', + defaultMessage: 'Hópur', + }, + input: { + id: 'portals-admin.form-system:input', + defaultMessage: 'Innsláttur', + }, + allowMultiple: { + id: 'portals-admin.form-system:allow-multiple', + defaultMessage: 'Er fjölval', + }, + saveAndContinue: { + id: 'portals-admin.form-system:save-and-continue', + defaultMessage: 'Vista og halda áfram', + }, + addStep: { + id: 'portals-admin.form-system:add-step', + defaultMessage: 'Bæta við skrefi', + }, + allowFileTypes: { + id: 'portals-admin.form-system:allow-file-types', + defaultMessage: 'Leyfa eftirfarandi skjalatýpur', + }, + allowedFileTypes: { + id: 'portals-admin.form-system:allowed-file-types', + defaultMessage: 'Eftirfarandi skjalatýpur eru leyfðar', + }, + // Input types + bankAccount: { + id: 'portals-admin.form-system:bank-account', + defaultMessage: 'Bankareikningur', + }, + bank: { + id: 'portals-admin.form-system:bank', + defaultMessage: 'Banki', + }, + ledger: { + id: 'portals-admin.form-system:ledger', + defaultMessage: 'Höfuðbók', + }, + accountNumber: { + id: 'portals-admin.form-system:account-number', + defaultMessage: 'Reikningsnúmer', + }, + datePicker: { + id: 'portals-admin.form-system:date-picker', + defaultMessage: 'Dagsetningarval', + }, + propertyNumber: { + id: 'portals-admin.form-system:property-number', + defaultMessage: 'Fasteignanúmer', + }, + dropdownList: { + id: 'portals-admin.form-system:dropdown-list', + defaultMessage: 'Fellilisti', + }, + listBuilder: { + id: 'portals-admin.form-system:list-builder', + defaultMessage: 'Listasmiður', + }, + homestayNumber: { + id: 'portals-admin.form-system:homestay-number', + defaultMessage: 'Heimagistingarnúmer', + }, + homestayOverview: { + id: 'portals-admin.form-system:homestay-overview', + defaultMessage: 'Heimagistingaryfirlit', + }, + timeInput: { + id: 'portals-admin.form-system:time-input', + defaultMessage: 'Klukkinnsláttur', + }, + iskNumberBox: { + id: 'portals-admin.form-system:currency-number', + defaultMessage: 'Krónutölubox', + }, + iskSumBox: { + id: 'portals-admin.form-system:currency-sum', + defaultMessage: 'Krónutölusamtala', + }, + textBox: { + id: 'portals-admin.form-system:text-box', + defaultMessage: 'Textainnsláttur', + }, + message: { + id: 'portals-admin.form-system:message', + defaultMessage: 'Textalýsing', + }, + // Labels and placeholders + maxFileSize: { + id: 'portals-admin.form-system:max-file-size', + defaultMessage: 'Hámarksstærð skráa', + }, + selectMaxFileSize: { + id: 'portals-admin.form-system:select-max-file-size', + defaultMessage: 'Veldu hámarksstærð', + }, + maxFileAmount: { + id: 'portals-admin.form-system:max-file-amount', + defaultMessage: 'Hámarksfjöldi skráa', + }, + selectMaxFileAmount: { + id: 'portals-admin.form-system:select-max-file-amount', + defaultMessage: 'Veldu hámarksfjölda', + }, + previewAllowedFileTypes: { + id: 'portals-admin.form-system:preview-allowed-file-types', + defaultMessage: 'Eftirfarandi skjalatýpur eru leyfðar', + }, + fileUploadButton: { + id: 'portals-admin.form-system:file-upload-button', + defaultMessage: 'Veldu skjöl til að hlaða upp', + }, + customList: { + id: 'portals-admin.form-system:custom-list', + defaultMessage: 'Nýr fellilisti', + }, + predeterminedLists: { + id: 'portals-admin.form-system:predetermined-lists', + defaultMessage: 'Tilbúnir fellilistar', + }, + max120Days: { + id: 'portals-admin.form-system:max-120-days', + defaultMessage: 'Hámark 120 daga', + }, + chooseDate: { + id: 'portals-admin.form-system:choose-date', + defaultMessage: 'Veldu dagsetningu', + }, + chooseListType: { + id: 'portals-admin.form-system:choose-list-type', + defaultMessage: 'Veldu lista tegund', + }, + addLink: { + id: 'portals-admin.form-system:add-link', + defaultMessage: 'Bæta við hlekk', + }, + buttonText: { + id: 'portals-admin.form-system:button-text', + defaultMessage: 'Hnappatexti', + }, + buttonTextEnglish: { + id: 'portals-admin.form-system:button-text-english', + defaultMessage: 'Hnappatexti (enska)', + }, + url: { + id: 'portals-admin.form-system:url', + defaultMessage: 'Vefslóð', + }, + largeTextArea: { + id: 'portals-admin.form-system:large-text-area', + defaultMessage: 'Stór textasvæði', + }, + connect: { + id: 'portals-admin.form-system:connect', + defaultMessage: 'Tengja', + }, + selected: { + id: 'portals-admin.form-system:selected', + defaultMessage: 'Sjálfvalið', + }, + info: { + id: 'portals-admin.form-system:info', + defaultMessage: 'Upplýsingabóla', + }, + infoEnglish: { + id: 'portals-admin.form-system:info-english', + defaultMessage: 'Upplýsingabóla (enska)', + }, + addListItem: { + id: 'portals-admin.form-system:add-list-item', + defaultMessage: '+ Bæta við gildi', + }, + finish: { + id: 'portals-admin.form-system:finish', + defaultMessage: 'Ljúka', + }, + type: { + id: 'portals-admin.form-system:type', + defaultMessage: 'Tegund', + }, + chooseType: { + id: 'portals-admin.form-system:choose-type', + defaultMessage: 'Veldu tegund', + }, + required: { + id: 'portals-admin.form-system:required', + defaultMessage: 'Krafist', + }, + email: { + id: 'portals-admin.form-system:email', + defaultMessage: 'Netfang', + }, + namePerson: { + id: 'portals-admin.form-system:name-person', + defaultMessage: 'Nafn', + }, + suggestions: { + id: 'portals-admin.form-system:suggestions', + defaultMessage: 'Tillögur', + }, + preview: { + id: 'portals-admin.form-system:preview', + defaultMessage: 'Skoða', + }, + lastModified: { + id: 'portals-admin.form-system:last-modified', + defaultMessage: 'Síðast breytt', + }, + translations: { + id: 'portals-admin.form-system:translations', + defaultMessage: 'Þýðingar', + }, + number: { + id: 'portals-admin.form-system:number', + defaultMessage: 'Númer', + }, + actions: { + id: 'portals-admin.form-system:actions', + defaultMessage: 'Aðgerðir', + }, + edit: { + id: 'portals-admin.form-system:edit', + defaultMessage: 'Breyta', + }, + copy: { + id: 'portals-admin.form-system:copy', + defaultMessage: 'Afrita', + }, + translateToEnglish: { + id: 'portals-admin.form-system:translate-to-english', + defaultMessage: 'Þýðing enska', + }, + getUrl: { + id: 'portals-admin.form-system:get-url', + defaultMessage: 'Sækja slóð', + }, + getJson: { + id: 'portals-admin.form-system:get-json', + defaultMessage: 'Sækja JSON', + }, + // Error messages + invalidEmail: { + id: 'portals-admin.form-system:invalid-email', + defaultMessage: 'Ógilt netfang', + }, + maxFileError: { + id: 'portals-admin.form-system:max-file-error', + defaultMessage: 'Hámarksfjöldi skráa er', + }, + nationalId: { + id: 'portals-admin.form-system:national-id', + defaultMessage: 'Kennitala', }, }) diff --git a/libs/portals/admin/form-system/src/lib/navigation.ts b/libs/portals/admin/form-system/src/lib/navigation.ts index 82f03d85ffb5..61cc2e09bde7 100644 --- a/libs/portals/admin/form-system/src/lib/navigation.ts +++ b/libs/portals/admin/form-system/src/lib/navigation.ts @@ -3,15 +3,15 @@ import { m } from './messages' import { FormSystemPaths } from './paths' export const formSystemNavigation: PortalNavigationItem = { - name: m.formSystemTitle, + name: m.rootName, icon: { icon: 'settings', }, - description: m.formSystemIntro, + description: m.rootName, path: FormSystemPaths.FormSystemRoot, children: [ { - name: m.formSystemTitle, + name: m.rootName, path: FormSystemPaths.Form, activeIfExact: true, }, diff --git a/libs/portals/admin/form-system/src/lib/utils/inputTypes.ts b/libs/portals/admin/form-system/src/lib/utils/inputTypes.ts new file mode 100644 index 000000000000..72a9b6b33e2b --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/inputTypes.ts @@ -0,0 +1,47 @@ +import { Option } from '@island.is/island-ui/core' +/* eslint-disable @typescript-eslint/naming-convention */ +enum InputTypes { + Bank_account = 'Bankareikningur', + Date_picker = 'Dagsetningarval', + Default = 'Default', + Dropdown_list = 'Fellilisti', + Payer = 'Greiðandi', + Payment = 'Greiðsla', + Checkbox = 'Hakbox', + Homestay_number = 'Heimagistingarnúmer', + Homestay_overview = 'Heimagistingaryfirlit', + National_id = 'Kennitala', + National_id_all = 'Kennitala (allt)', + National_id_estate = 'Kennitala (dánarbú)', + Time_input = 'Klúkkuinnsláttur', + ISK_numberbox = 'Krónutölubox', + ISK_sumbox = 'Krónutölusumma', + Email = 'Netfang', + Property_number = 'Fasteignanúmer', + Phone_number = 'Símanúmer', + Document = 'Skjal', + Message = 'Textalýsing', + Textbox = 'Textabox', + Numberbox = 'Tölubox', + Radio_buttons = 'Valhnappar', +} + +export const getInputTypeValue = (type: string) => { + return InputTypes[type as keyof typeof InputTypes] || InputTypes.Default +} + +export const getInputTypeKey = (value: string) => { + return ( + Object.keys(InputTypes).find( + (key) => InputTypes[key as keyof typeof InputTypes] === value, + ) || '' + ) +} + +export const inputTypesSelectObject = (): readonly Option[] => { + const inputTypes = Object.keys(InputTypes).map((key) => ({ + label: InputTypes[key as keyof typeof InputTypes], + value: key, + })) + return inputTypes +} diff --git a/libs/portals/admin/form-system/src/lib/utils/truncateText.ts b/libs/portals/admin/form-system/src/lib/utils/truncateText.ts new file mode 100644 index 000000000000..d1fc327f35ed --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/truncateText.ts @@ -0,0 +1,41 @@ +import { ItemType } from './interfaces' + +const truncateText = (text: string, maxLength: number) => { + return text.length > maxLength ? text.slice(0, maxLength) + '...' : text +} + +export const truncateName = (name: string, active: boolean, type: ItemType) => { + let maxLength + + if (active) { + switch (type) { + case 'Step': + maxLength = 23 + break + case 'Group': + maxLength = 16 + break + case 'Input': + maxLength = 12 + break + default: + maxLength = 26 + } + } else { + switch (type) { + case 'Step': + maxLength = 26 + break + case 'Group': + maxLength = 19 + break + case 'Input': + maxLength = 16 + break + default: + maxLength = 26 + } + } + + return truncateText(name, maxLength) +} diff --git a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts index 03e120c2bb8a..30620b9bc24f 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts @@ -1,7 +1,7 @@ +import { useFormSystemUpdateGroupMutation } from '../../screens/Form/UpdateGroup.generated' +import { useFormSystemUpdateInputMutation } from '../../screens/Form/UpdateInput.generated' +import { useFormSystemUpdateStepMutation } from '../../screens/Form/UpdateStep.generated' import { ActiveItem } from './interfaces' -import { useFormSystemUpdateStepMutation } from '../../gql/Step.generated' -import { useFormSystemUpdateGroupMutation } from '../../gql/Group.generated' -import { useFormSystemUpdateInputMutation } from '../../gql/Input.generated' import { FormSystemStep, FormSystemGroup, diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index f0fd9e8901bd..fbf866661675 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -1,10 +1,7 @@ -import { - FormSystemGroupInput, - FormSystemInput, -} from '@island.is/api/schema' -import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' +import { FormSystemGroupInput, FormSystemInput } from '@island.is/api/schema' import { ControlState } from '../../hooks/controlReducer' import { ItemType } from './interfaces' +import { useFormSystemUpdateFormMutation } from '../../screens/Form/Form.generated' export const updateDnd = ( type: ItemType, @@ -43,17 +40,17 @@ export const updateDnd = ( form: { groupsList: groups?.map( (g) => - ({ - id: g?.id, - name: g?.name, - guid: g?.guid, - displayOrder: g?.displayOrder, - isHidden: (g?.isHidden ?? false) as boolean, - stepId: g?.stepId, - multiSet: g?.multiSet, - stepGuid: g?.stepGuid, - inputs: null, - } as FormSystemGroupInput), + ({ + id: g?.id, + name: g?.name, + guid: g?.guid, + displayOrder: g?.displayOrder, + isHidden: (g?.isHidden ?? false) as boolean, + stepId: g?.stepId, + multiSet: g?.multiSet, + stepGuid: g?.stepGuid, + inputs: null, + } as FormSystemGroupInput), ), }, }, diff --git a/libs/portals/admin/form-system/src/lib/utils/updateForm.ts b/libs/portals/admin/form-system/src/lib/utils/updateForm.ts index 274aea7c258b..6a2fd0c4967b 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateForm.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateForm.ts @@ -7,8 +7,8 @@ import { FormSystemStepInput, InputMaybe, } from '@island.is/api/schema' -import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' import { ControlState } from '../../hooks/controlReducer' +import { useFormSystemUpdateFormMutation } from '../../screens/Form/Form.generated' export const entireFormUpdate = ( control: ControlState, diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts index 77b0dd249756..e3d21d76e34a 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts @@ -1,7 +1,7 @@ import { FormSystemForm } from '@island.is/api/schema' -import { useFormSystemUpdateFormSettingsMutation } from '../../gql/FormSettings.generated' import { ControlState } from '../../hooks/controlReducer' import { removeTypename } from './removeTypename' +import { useFormSystemUpdateFormSettingsMutation } from '../../screens/Form/FormSettings.generated' export const updateSettings = ( control: ControlState, diff --git a/libs/portals/admin/form-system/src/module.tsx b/libs/portals/admin/form-system/src/module.tsx index 481951258dc2..32818cefc3c4 100644 --- a/libs/portals/admin/form-system/src/module.tsx +++ b/libs/portals/admin/form-system/src/module.tsx @@ -16,20 +16,20 @@ const allowedScopes: string[] = [ ] export const formSystemModule: PortalModule = { - name: m.formSystemIntro, + name: m.rootName, layout: 'full', enabled: ({ userInfo }) => userInfo.scopes.some((scope) => allowedScopes.includes(scope)), routes: (props) => { return [ { - name: m.formSystemTitle, + name: m.rootName, path: FormSystemPaths.FormSystemRoot, element: , loader: formsLoader(props), }, { - name: m.formSystemIntro, + name: m.rootName, path: FormSystemPaths.Form, element: , loader: formLoader(props), diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.graphql b/libs/portals/admin/form-system/src/screens/Form/Form.graphql new file mode 100644 index 000000000000..61af83f9059d --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Form/Form.graphql @@ -0,0 +1,275 @@ +mutation formSystemUpdateForm($input: FormSystemUpdateFormInput!) { + formSystemUpdateForm(input: $input) +} + +query formSystemGetForm($input: FormSystemGetFormInput!) { + formSystemGetForm(input: $input) { + form { + id + name { + is + en + } + applicationsDaysToRemove + completedMessage { + is + en + } + created + dependencies + documentTypes { + id + name { + is + en + } + description { + is + en + } + type + } + formApplicantTypes { + applicantTypeId + formId + name { + is + en + } + type + } + groupsList { + displayOrder + guid + id + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + inputsList { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + invalidationDate + isTranslated + lastChanged + organization { + applicantTypes { + applicantTypeId + description { + is + en + } + id + name { + is + en + } + nameSuggestions { + applicantTypeId + nameSuggestion { + is + en + } + } + type + } + documentTypes { + description { + is + en + } + id + name { + is + en + } + type + } + id + inputTypes { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + listTypes { + id + name { + is + en + } + description { + is + en + } + type + } + name { + is + en + } + nationalId + } + steps { + callRuleset + displayOrder + groups { + displayOrder + guid + id + inputs { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + isHidden + multiSet + name { + is + en + } + stepGuid + stepId + } + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } + stepsList { + callRuleset + displayOrder + guid + id + isCompleted + isHidden + name { + is + en + } + type + waitingText { + is + en + } + } + stopProgressOnValidatingStep + } + applicantTypes { + applicantTypeId + description { + is + en + } + id + name { + is + en + } + nameSuggestions { + applicantTypeId + nameSuggestion { + is + en + } + } + type + } + documentTypes { + description { + is + en + } + id + name { + is + en + } + type + } + inputTypes { + description { + is + en + } + displayOrder + groupGuid + groupId + guid + id + inputFields + inputSettings + isHidden + isPartOfMultiSet + isRequired + name { + is + en + } + type + } + } +} diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts index c5659e1a4012..38e0cc3b0879 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts @@ -5,11 +5,11 @@ import { ApolloClient, NormalizedCacheObject } from '@apollo/client' import { FormSystemGetFormDocument, FormSystemGetFormQuery, -} from '../../gql/Form.generated' +} from './Form.generated' import { - FormSystemGetInputDocument, FormSystemGetInputQuery, -} from '../../gql/Input.generated' + FormSystemGetInputDocument, +} from './GetInput.generated' export interface FormLoaderResponse { formBuilder: FormSystemFormResponse diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 2e684c9c1994..d31ff991d985 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -5,29 +5,29 @@ import { FormLoaderResponse } from './Form.loader' import { ControlState, controlReducer } from '../../hooks/controlReducer' import { baseSettingsStep } from '../../utils/getBaseSettingsStep' import { defaultStep } from '../../utils/defaultStep' -import ControlContext, { IControlContext } from '../../context/ControlContext' +import { ControlContext, IControlContext } from '../../context/ControlContext' import { GridRow as Row, GridColumn as Column, Box, } from '@island.is/island-ui/core' -import Navbar from '../../components/Navbar/Navbar' +import { Navbar } from '../../components/Navbar/Navbar' import { FormSystemForm, FormSystemStep } from '@island.is/api/schema' -import MainContent from '../../components/MainContent/MainContent' -import { useFormSystemUpdateGroupMutation } from '../../gql/Group.generated' -import { useFormSystemUpdateStepMutation } from '../../gql/Step.generated' -import { useFormSystemUpdateInputMutation } from '../../gql/Input.generated' +import { MainContent } from '../../components/MainContent/MainContent' import { updateActiveItemFn } from '../../lib/utils/updateActiveItem' -import { useFormSystemUpdateFormMutation } from '../../gql/Form.generated' import { ActiveItem, ItemType } from '../../lib/utils/interfaces' import { updateDnd } from '../../lib/utils/updateDnd' import { entireFormUpdate } from '../../lib/utils/updateForm' import { removeTypename } from '../../lib/utils/removeTypename' -import NavbarSelect from '../../components/NavbarSelect/NavbarSelect' -import { useFormSystemUpdateFormSettingsMutation } from '../../gql/FormSettings.generated' +import { NavbarSelect } from '../../components/NavbarSelect/NavbarSelect' import { updateSettings as us } from '../../lib/utils/updateFormSettings' +import { useFormSystemUpdateFormSettingsMutation } from './FormSettings.generated' +import { useFormSystemUpdateFormMutation } from './Form.generated' +import { useFormSystemUpdateStepMutation } from './UpdateStep.generated' +import { useFormSystemUpdateGroupMutation } from './UpdateGroup.generated' +import { useFormSystemUpdateInputMutation } from './UpdateInput.generated' -const Form = () => { +export const Form = () => { const { formBuilder } = useLoaderData() as FormLoaderResponse const { form, applicantTypes, documentTypes, inputTypes, listTypes } = formBuilder @@ -51,14 +51,14 @@ const Form = () => { updateInput, updatedActiveItem, ) - + console.log(formBuilder) const initialControl: ControlState = { activeItem: { type: 'Step', data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find( - (s: FormSystemStep) => s?.type === 'Innsláttur', + (s: FormSystemStep) => s?.type === 'Input', ) ?? defaultStep, }, activeListItem: null, diff --git a/libs/portals/admin/form-system/src/gql/FormSettings.graphql b/libs/portals/admin/form-system/src/screens/Form/FormSettings.graphql similarity index 100% rename from libs/portals/admin/form-system/src/gql/FormSettings.graphql rename to libs/portals/admin/form-system/src/screens/Form/FormSettings.graphql diff --git a/libs/portals/admin/form-system/src/screens/Form/GetInput.graphql b/libs/portals/admin/form-system/src/screens/Form/GetInput.graphql new file mode 100644 index 000000000000..f1ddb3cb1df7 --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Form/GetInput.graphql @@ -0,0 +1,23 @@ +query formSystemGetInput($input: FormSystemGetInputInput!) { + formSystemGetInput(input: $input) { + id + name { + is + en + } + description { + is + en + } + isRequired + displayOrder + groupId + isHidden + type + guid + isPartOfMultiSet + groupGuid + inputSettings + inputFields + } +} diff --git a/libs/portals/admin/form-system/src/screens/Form/UpdateGroup.graphql b/libs/portals/admin/form-system/src/screens/Form/UpdateGroup.graphql new file mode 100644 index 000000000000..cc884a7fa57b --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Form/UpdateGroup.graphql @@ -0,0 +1,3 @@ +mutation formSystemUpdateGroup($input: FormSystemUpdateGroupInput!) { + formSystemUpdateGroup(input: $input) +} diff --git a/libs/portals/admin/form-system/src/screens/Form/UpdateInput.graphql b/libs/portals/admin/form-system/src/screens/Form/UpdateInput.graphql new file mode 100644 index 000000000000..2ae9097d6b54 --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Form/UpdateInput.graphql @@ -0,0 +1,3 @@ +mutation formSystemUpdateInput($input: FormSystemUpdateInputInput!) { + formSystemUpdateInput(input: $input) +} diff --git a/libs/portals/admin/form-system/src/screens/Form/UpdateStep.graphql b/libs/portals/admin/form-system/src/screens/Form/UpdateStep.graphql new file mode 100644 index 000000000000..be6d340b1c27 --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Form/UpdateStep.graphql @@ -0,0 +1,3 @@ +mutation formSystemUpdateStep($input: FormSystemUpdateStepInput!) { + formSystemUpdateStep(input: $input) +} diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index 32f0c3c719ae..2b58da01b8d5 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -1,11 +1,11 @@ import { Box, Button, Text, Inline } from '@island.is/island-ui/core' import { useNavigate } from 'react-router-dom' import { FormSystemPaths } from '../../lib/paths' -import TableRow from '../../components/TableRow/TableRow' +import { TableRow } from '../../components/TableRow/TableRow' import { useFormSystemGetFormsQuery } from './Forms.generated' import { useFormSystemCreateFormMutation } from './CreateForm.generated' -const Forms = () => { +export const Forms = () => { const navigate = useNavigate() const { data, loading, error } = useFormSystemGetFormsQuery({ @@ -27,11 +27,11 @@ const Forms = () => { const forms = data?.formSystemGetForms.forms if (!loading && !error) { return ( - +
{/* Title and buttons */} - +
Forskriftir - +
) } - return <>AAAAA + return <> } export default Forms diff --git a/libs/portals/admin/form-system/src/utils/defaultStep.tsx b/libs/portals/admin/form-system/src/utils/defaultStep.tsx index 1b8a23e1f2ab..ac8d630fa88f 100644 --- a/libs/portals/admin/form-system/src/utils/defaultStep.tsx +++ b/libs/portals/admin/form-system/src/utils/defaultStep.tsx @@ -9,7 +9,7 @@ export const defaultStep: FormSystemStep = { is: '', en: '', }, - type: 'Innsláttur', + type: 'Input', waitingText: { is: '', en: '', From acacdd7a207ca9b55a037795d1e1f2a82b4e3ea6 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Fri, 24 May 2024 17:57:41 +0000 Subject: [PATCH 047/129] Minor errors during merge fixed --- .../components/Preview/components/CheckboxPreview.tsx | 2 -- .../admin/form-system/src/lib/utils/updateDnd.ts | 11 ----------- 2 files changed, 13 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx index 636cb0a8b85a..d9fd259abf4b 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx @@ -1,7 +1,5 @@ import { FormSystemInput } from '@island.is/api/schema' import { Checkbox } from '@island.is/island-ui/core' -import { FormSystemInput } from '@island.is/api/schema' -import { Checkbox } from '@island.is/island-ui/core' interface Props { currentItem: FormSystemInput diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index 227f167777f9..9f91c4f1cbc5 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -51,17 +51,6 @@ export const updateDnd = ( stepGuid: g?.stepGuid, inputs: null, } as FormSystemGroupInput), - ({ - id: g?.id, - name: g?.name, - guid: g?.guid, - displayOrder: g?.displayOrder, - isHidden: (g?.isHidden ?? false) as boolean, - stepId: g?.stepId, - multiSet: g?.multiSet, - stepGuid: g?.stepGuid, - inputs: null, - } as FormSystemGroupInput), ), }, }, From e59279bdf463b1c6bd09d434843d7621102af231 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 27 May 2024 14:39:36 +0000 Subject: [PATCH 048/129] Merging form-system into this branch --- .../src/lib/services/services.resolver.ts | 5 +- .../src/lib/services/services.service.ts | 5 +- .../components/MainContent/MainContent.tsx | 213 +++++++++-------- .../InputSettings/components/ListSettings.tsx | 208 ++++++++--------- .../components/MessageWithLinkSettings.tsx | 215 +++++++++--------- .../components/Premises/Premises.tsx | 108 +++++---- .../components/Preview/components/List.tsx | 17 +- .../Preview/components/getLists.graphql | 51 +++++ .../components/FormApplicantType.tsx | 2 +- .../src/lib/utils/getTranslation.graphql | 5 + .../form-system/src/lib/utils/translation.ts | 2 +- .../form-system/src/screens/Form/Form.tsx | 13 +- 12 files changed, 431 insertions(+), 413 deletions(-) create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/getLists.graphql create mode 100644 libs/portals/admin/form-system/src/lib/utils/getTranslation.graphql diff --git a/libs/api/domains/form-system/src/lib/services/services.resolver.ts b/libs/api/domains/form-system/src/lib/services/services.resolver.ts index a227892886b6..ff8d9744b27b 100644 --- a/libs/api/domains/form-system/src/lib/services/services.resolver.ts +++ b/libs/api/domains/form-system/src/lib/services/services.resolver.ts @@ -14,7 +14,7 @@ import { UseGuards } from '@nestjs/common' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class FormSystemServicesResolver { - constructor(private readonly formSystemServices: FormSystemService) {} + constructor(private readonly formSystemServices: FormSystemService) { } @Query(() => List, { name: 'formSystemGetCountries', @@ -67,8 +67,7 @@ export class FormSystemServicesResolver { async getTranslation( @Args('input', { type: () => GetTranslationInput }) input: GetTranslationInput, - @CurrentUser() user: User, ): Promise { - return this.formSystemServices.getTranslation(user, input) + return this.formSystemServices.getTranslation(input) } } diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index f1054a033afc..a505c34cf1b6 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -6,11 +6,9 @@ import { ApiServicesFasteignFasteignanumerGetRequest, ServicesApi, } from '@island.is/clients/form-system' -import { List } from '../../models/services.model' -import { GetPropertyInput } from '../../dto/services.input' -import { handle4xx } from '../../utils/errorHandler' import { List, Translation } from '../../models/services.model' import { GetPropertyInput, GetTranslationInput } from '../../dto/services.input' +import { handle4xx } from '../../utils/errorHandler' @Injectable() export class FormSystemService { @@ -114,7 +112,6 @@ export class FormSystemService { } async getTranslation( - auth: User, input: GetTranslationInput, ): Promise { const { FORM_SYSTEM_MIDEIND_KEY } = process.env diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index 0994facfdc26..f2d23b3d4f9a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -17,128 +17,119 @@ import { PreviewStepOrGroup } from './components/PreviewStepOrGroup/PreviewStepO import { RelevantParties } from './components/RelevantParties/RevelantParties' import { useIntl } from 'react-intl' import { m } from '../../lib/messages' +import { getTranslationButtons } from '../../lib/utils/getTranslationButtons' export const MainContent = () => { - const { control, controlDispatch, updateActiveItem, setFocus, focus } = - useContext(ControlContext) - import BaseSettings from './components/BaseSettings/BaseSettings' - import Premises from './components/Premises/Premises' - import InputContent from './components/InputContent/InputContent' - import PreviewStepOrGroup from './components/PreviewStepOrGroup/PreviewStepOrGroup' - import RelevantParties from './components/RelevantParties/RevelantParties' - import { getTranslationButtons } from '../../lib/utils/getTranslationButtons' + const { + control, + controlDispatch, + updateActiveItem, + setFocus, + focus, + translationButtons, + } = useContext(ControlContext) + const { activeItem } = control + const [openPreview, setOpenPreview] = useState(false) + const { formatMessage } = useIntl() - export default function MainContent() { - const { - control, - controlDispatch, - updateActiveItem, - setFocus, - focus, - translationButtons, - } = useContext(ControlContext) - const { activeItem } = control - const [openPreview, setOpenPreview] = useState(false) - const { formatMessage } = useIntl() + const translateNameButton = getTranslationButtons( + activeItem?.data?.name?.is ?? '', + controlDispatch, + 'CHANGE_NAME', + ) - const translateNameButton = getTranslationButtons( - activeItem?.data?.name?.is ?? '', - controlDispatch, - 'CHANGE_NAME', - ) - - return ( - - {activeItem.type === 'Input' ? ( - - ) : activeItem.type === 'Step' && - (activeItem.data as FormSystemStep).type === 'BaseSetting' ? ( - - ) : activeItem.type === 'Step' && - (activeItem.data as FormSystemStep).type === 'Premises' ? ( - - ) : activeItem.type === 'Step' && - (activeItem.data as FormSystemStep).type === 'Parties' ? ( - - ) : openPreview ? ( - - ) : ( - - - - - controlDispatch({ - type: 'CHANGE_NAME', - payload: { - lang: 'is', - newValue: e.target.value, - }, - }) - } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - + return ( + + {activeItem.type === 'Input' ? ( + + ) : activeItem.type === 'Step' && + (activeItem.data as FormSystemStep).type === 'BaseSetting' ? ( + + ) : activeItem.type === 'Step' && + (activeItem.data as FormSystemStep).type === 'Premises' ? ( + + ) : activeItem.type === 'Step' && + (activeItem.data as FormSystemStep).type === 'Parties' ? ( + + ) : openPreview ? ( + + ) : ( + + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + + + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'en', + newValue: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + buttons={translationButtons( + activeItem?.data?.name?.is ?? '', + 'CHANGE_NAME', + )} + /> + + + {activeItem.type === 'Group' && ( - - + controlDispatch({ - type: 'CHANGE_NAME', + type: 'TOGGLE_MULTI_SET', payload: { - lang: 'en', - newValue: e.target.value, + checked: e.target.checked, + update: updateActiveItem, }, }) } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - buttons={translationButtons( - activeItem?.data?.name?.is ?? '', - 'CHANGE_NAME', - )} /> - {activeItem.type === 'Group' && ( - - - - controlDispatch({ - type: 'TOGGLE_MULTI_SET', - payload: { - checked: e.target.checked, - update: updateActiveItem, - }, - }) - } - /> - - - )} - - - - - - - )} - - ) - } + )} + + + + + + + )} + + ) +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index 27833f4d59cc..1327c6e5b607 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -37,122 +37,114 @@ const predeterminedLists = [ ] export const ListSettings = () => { - const { control, setInListBuilder } = useContext(ControlContext) - // Need to fix the radio buttons - const ListSettings = () => { - const { control, setInListBuilder, controlDispatch, updateActiveItem } = - useContext(ControlContext) - const { activeItem } = control - const currentItem = activeItem.data as FormSystemInput - const [radio, setRadio] = useState([true, false, false]) + const { control, setInListBuilder, controlDispatch, updateActiveItem } = + useContext(ControlContext) + const { activeItem } = control + const currentItem = activeItem.data as FormSystemInput + const [radio, setRadio] = useState([true, false, false]) - const radioHandler = (index: number) => { - // if (!radio[index]) - setRadio((prev) => - prev.map((_, i) => { - return index === i - }), - ) - } + const radioHandler = (index: number) => { + // if (!radio[index]) + setRadio((prev) => + prev.map((_, i) => { + return index === i + }), + ) + } - const { formatMessage } = useIntl() + const { formatMessage } = useIntl() - const getListType = (index: number) => { - switch (index) { - case 0: - return 'sveitarfelog' - case 1: - return 'lond' - case 2: - return 'postnumer' - case 3: - return 'idngreinarMeistara' - case 4: - return 'skraningarflokkar' - default: - return 'customList' - } + const getListType = (index: number) => { + switch (index) { + case 0: + return 'sveitarfelog' + case 1: + return 'lond' + case 2: + return 'postnumer' + case 3: + return 'idngreinarMeistara' + case 4: + return 'skraningarflokkar' + default: + return 'customList' } + } - return ( - - {currentItem.type === 'Dropdown_list' && ( - <> - - - { - controlDispatch({ - type: 'SET_LIST_TYPE', - payload: { - listType: 'customList', - update: updateActiveItem, - }, - }) - radioHandler(0) - }} - > - { - console.log() - label = "Nýr fellilisti" - onChange = {() => { - radioHandler(0) - }} + return ( + + {currentItem.type === 'Dropdown_list' && ( + <> + + + { + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: 'customList', + update: updateActiveItem, + }, + }) + radioHandler(0) + }} + > + radioHandler(0)} /> - - - - - + + + + + + { + console.log() + }} + checked={radio[1]} + /> + radioHandler(1)}> { - console.log() + label="Tilbúnir fellilistar" + onChange={() => { + radioHandler(1) }} checked={radio[1]} /> - radioHandler(1)}> - { - radioHandler(1) - }} - checked={radio[1]} - /> - - - - - )} - {radio[0] && ( - - )} - {radio[1] && ( - - { + const listType = getListType(option?.value as number) + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: listType, + update: updateActiveItem, + }, + }) + }} + /> + + )} + + ) +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx index 5d5e2eea51c9..a5b3e6c7f97d 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/MessageWithLinkSettings.tsx @@ -12,112 +12,109 @@ import { useIntl } from 'react-intl' import { m } from '../../../../../../../lib/messages' export const MessageWithLinkSettings = () => { - const { control, controlDispatch, focus, setFocus, updateActiveItem } = - useContext(ControlContext) - const MessageWithLinkSettings = () => { - const { - control, - controlDispatch, - focus, - setFocus, - updateActiveItem, - translationButtons, - } = useContext(ControlContext) - const currentItem = control.activeItem.data as FormSystemInput - const { inputSettings } = currentItem - const { formatMessage } = useIntl() - return ( - - - - - controlDispatch({ - type: 'SET_MESSAGE_WITH_LINK_SETTINGS', - payload: { - property: 'hasLink', - checked: e.target.checked, - update: updateActiveItem, - }, - }) - } - /> - - - {inputSettings !== undefined && inputSettings?.hasLink && ( - - - - - controlDispatch({ - type: 'SET_MESSAGE_WITH_LINK_SETTINGS', - payload: { - property: 'buttonText', - lang: 'is', - value: e.target.value, - }, - }) - } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - - controlDispatch({ - type: 'SET_MESSAGE_WITH_LINK_SETTINGS', - payload: { - property: 'buttonText', - lang: 'en', - value: e.target.value, - }, - }) - } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - buttons={translationButtons( - inputSettings?.buttonText?.is ?? '', - 'SET_MESSAGE_WITH_LINK_SETTINGS', - )} - /> - - - - - - controlDispatch({ - type: 'SET_MESSAGE_WITH_LINK_SETTINGS', - payload: { - property: 'url', - value: e.target.value, - }, - }) - } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - - - - )} - - ) - } + const { + control, + controlDispatch, + focus, + setFocus, + updateActiveItem, + translationButtons, + } = useContext(ControlContext) + const currentItem = control.activeItem.data as FormSystemInput + const { inputSettings } = currentItem + const { formatMessage } = useIntl() + return ( + + + + + controlDispatch({ + type: 'SET_MESSAGE_WITH_LINK_SETTINGS', + payload: { + property: 'hasLink', + checked: e.target.checked, + update: updateActiveItem, + }, + }) + } + /> + + + {inputSettings !== undefined && inputSettings?.hasLink && ( + + + + + controlDispatch({ + type: 'SET_MESSAGE_WITH_LINK_SETTINGS', + payload: { + property: 'buttonText', + lang: 'is', + value: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + controlDispatch({ + type: 'SET_MESSAGE_WITH_LINK_SETTINGS', + payload: { + property: 'buttonText', + lang: 'en', + value: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + buttons={translationButtons( + inputSettings?.buttonText?.is ?? '', + 'SET_MESSAGE_WITH_LINK_SETTINGS', + )} + /> + + + + + + controlDispatch({ + type: 'SET_MESSAGE_WITH_LINK_SETTINGS', + payload: { + property: 'url', + value: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + + + + )} + + ) +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 968588b22ccb..0ef6edde0eb7 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -6,61 +6,59 @@ import { useIntl } from 'react-intl' import { m } from '../../../../lib/messages' export const Premises = () => { - const { control, documentTypes, updateSettings } = useContext(ControlContext) - const Premises = () => { - const { control, documentTypes, updateSettings, controlDispatch } = useContext(ControlContext) - const [formDocumentTypes, setFormDocumentTypes] = useState< - FormSystemDocumentType[] - >( - control.form?.documentTypes?.filter( - (d): d is FormSystemDocumentType => d !== null, - ) ?? [], - ) - - const handleCheckboxChange = (documentTypeId: number) => { - if (documentTypeId === -1) return - const newDocumentTypes = formDocumentTypes.some( - (f) => f?.id === documentTypeId, - ) - ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) - : ([ - ...formDocumentTypes, - documentTypes?.find((d) => d?.id === documentTypeId), - ].filter((d) => d !== undefined) as FormSystemDocumentType[]) - setFormDocumentTypes(newDocumentTypes) - updateSettings({ ...control.form, documentTypes: newDocumentTypes }) - controlDispatch({ - type: 'CHANGE_FORM_SETTINGS', - payload: { - newForm: { ...control.form, documentTypes: newDocumentTypes } - }, - }) - } - - const { formatMessage } = useIntl() + const { control, documentTypes, updateSettings, controlDispatch } = useContext(ControlContext) + const [formDocumentTypes, setFormDocumentTypes] = useState< + FormSystemDocumentType[] + >( + control.form?.documentTypes?.filter( + (d): d is FormSystemDocumentType => d !== null, + ) ?? [], + ) - return ( -
- - {formatMessage(m.premisesTitle)} - - - {documentTypes?.map((d, i) => { - return ( - f?.id === d?.id)} - onChange={() => handleCheckboxChange(d?.id ?? -1)} - /> - ) - })} - -
+ const handleCheckboxChange = (documentTypeId: number) => { + if (documentTypeId === -1) return + const newDocumentTypes = formDocumentTypes.some( + (f) => f?.id === documentTypeId, ) + ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) + : ([ + ...formDocumentTypes, + documentTypes?.find((d) => d?.id === documentTypeId), + ].filter((d) => d !== undefined) as FormSystemDocumentType[]) + setFormDocumentTypes(newDocumentTypes) + updateSettings({ ...control.form, documentTypes: newDocumentTypes }) + controlDispatch({ + type: 'CHANGE_FORM_SETTINGS', + payload: { + newForm: { ...control.form, documentTypes: newDocumentTypes } + }, + }) } + + const { formatMessage } = useIntl() + + return ( +
+ + {formatMessage(m.premisesTitle)} + + + {documentTypes?.map((d, i) => { + return ( + f?.id === d?.id)} + onChange={() => handleCheckboxChange(d?.id ?? -1)} + /> + ) + })} + +
+ ) +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index e71a1d6307c4..680ab4490cbd 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -1,12 +1,7 @@ import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { useEffect, useState } from 'react' import { Select } from '@island.is/island-ui/core' -import { - useFormSystemGetCountriesLazyQuery, - useFormSystemGetMunicipalitiesLazyQuery, - useFormSystemGetZipCodesLazyQuery, - useFormSystemGetTradesProfessionsLazyQuery, -} from '../../../../../gql/Service.generated' +import { useFormSystemGetCountriesLazyQuery, useFormSystemGetMunicipalitiesLazyQuery, useFormSystemGetZipCodesLazyQuery, useFormSystemGetTradesProfessionsLazyQuery } from './getLists.generated' interface Props { currentItem: FormSystemInput @@ -24,7 +19,7 @@ const ListTypePlaceholder = { idngreinarMeistara: 'Veldu iðngrein', } -const List = ({ currentItem }: Props) => { +export const List = ({ currentItem }: Props) => { const [listItems, setListItems] = useState([]) const [getCountries] = useFormSystemGetCountriesLazyQuery() const [getMunicipalities] = useFormSystemGetMunicipalitiesLazyQuery() @@ -46,7 +41,7 @@ const List = ({ currentItem }: Props) => { let data, loading, error switch (type) { case 'lond': - ; ({ data, loading, error } = await getCountries()) + ({ data, loading, error } = await getCountries()) setListItems( data?.formSystemGetCountries?.list?.map((c) => ({ label: c?.label?.is ?? '', @@ -55,7 +50,7 @@ const List = ({ currentItem }: Props) => { ) break case 'sveitarfelog': - ; ({ data, loading, error } = await getMunicipalities()) + ({ data, loading, error } = await getMunicipalities()) setListItems( data?.formSystemGetMunicipalities.list?.map((m) => ({ label: m?.label?.is ?? '', @@ -64,7 +59,7 @@ const List = ({ currentItem }: Props) => { ) break case 'postnumer': - ; ({ data, loading, error } = await getZipCodes()) + ({ data, loading, error } = await getZipCodes()) setListItems( data?.formSystemGetZipCodes.list?.map((z) => ({ label: z?.label?.is ?? '', @@ -73,7 +68,7 @@ const List = ({ currentItem }: Props) => { ) break case 'idngreinarMeistara': - ; ({ data, loading, error } = await getTradesProfessions()) + ({ data, loading, error } = await getTradesProfessions()) setListItems( data?.formSystemGetTradesProfessions.list?.map((t) => ({ label: t?.label?.is ?? '', diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/getLists.graphql b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/getLists.graphql new file mode 100644 index 000000000000..cbcfc9392fbd --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/getLists.graphql @@ -0,0 +1,51 @@ +query formSystemGetCountries { + formSystemGetCountries { + list { + guid + value + label { + is + en + } + } + } +} + +query formSystemGetZipCodes { + formSystemGetZipCodes { + list { + guid + value + label { + is + en + } + } + } +} + +query formSystemGetMunicipalities { + formSystemGetMunicipalities { + list { + guid + value + label { + is + en + } + } + } +} + +query formSystemGetTradesProfessions { + formSystemGetTradesProfessions { + list { + guid + value + label { + is + en + } + } + } +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx index 2fd0cec2936c..3a2d8635d083 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx @@ -14,7 +14,7 @@ import { } from '@island.is/api/schema' import { useIntl } from 'react-intl' import { m } from '../../../../../lib/messages' -import ControlContext from '../../../../../context/ControlContext' +import { ControlContext } from '../../../../../context/ControlContext' interface Props { title: string diff --git a/libs/portals/admin/form-system/src/lib/utils/getTranslation.graphql b/libs/portals/admin/form-system/src/lib/utils/getTranslation.graphql new file mode 100644 index 000000000000..4dcb7e4a48b1 --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/getTranslation.graphql @@ -0,0 +1,5 @@ +mutation formSystemGetTranslation($input: FormSystemGetTranslationInput!) { + formSystemGetTranslation(input: $input) { + translations + } +} diff --git a/libs/portals/admin/form-system/src/lib/utils/translation.ts b/libs/portals/admin/form-system/src/lib/utils/translation.ts index 8db66fac8678..9f7b24f6602e 100644 --- a/libs/portals/admin/form-system/src/lib/utils/translation.ts +++ b/libs/portals/admin/form-system/src/lib/utils/translation.ts @@ -1,4 +1,4 @@ -import { useFormSystemGetTranslationMutation } from '../../gql/Service.generated' +import { useFormSystemGetTranslationMutation } from "./getTranslation.generated" export const translate = async ( text: string, diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 631564ad68e5..8d764f0e825f 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -1,5 +1,5 @@ import { useLoaderData } from 'react-router-dom' -import { Profiler, useCallback, useEffect, useReducer, useState } from 'react' +import { useCallback, useReducer, useState } from 'react' import { ButtonTypes, InputButton, @@ -30,6 +30,8 @@ import { useFormSystemUpdateFormMutation } from './Form.generated' import { useFormSystemUpdateStepMutation } from './UpdateStep.generated' import { useFormSystemUpdateGroupMutation } from './UpdateGroup.generated' import { useFormSystemUpdateInputMutation } from './UpdateInput.generated' +import { useFormSystemGetTranslationMutation } from '../../lib/utils/getTranslation.generated' +import { translate as translationStation } from '../../lib/utils/translation' export const Form = () => { const { formBuilder } = useLoaderData() as FormLoaderResponse @@ -47,15 +49,6 @@ export const Form = () => { const [updateInput] = useFormSystemUpdateInputMutation() const [updateForm] = useFormSystemUpdateFormMutation() const [updateFormSettings] = useFormSystemUpdateFormSettingsMutation() - const updateActiveItem = (updatedActiveItem?: ActiveItem) => - updateActiveItemFn( - control.activeItem, - updateStep, - updateGroup, - updateInput, - updatedActiveItem, - ) - console.log(formBuilder) const [getTranslation] = useFormSystemGetTranslationMutation() const initialControl: ControlState = { From f4f9d917f33829ae81cf758e3304f5943361335c Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 27 May 2024 15:46:21 +0000 Subject: [PATCH 049/129] listSettings changes --- .../InputSettings/components/ListSettings.tsx | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index 1327c6e5b607..0fe27028f3e1 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -44,7 +44,6 @@ export const ListSettings = () => { const [radio, setRadio] = useState([true, false, false]) const radioHandler = (index: number) => { - // if (!radio[index]) setRadio((prev) => prev.map((_, i) => { return index === i @@ -92,7 +91,6 @@ export const ListSettings = () => { radioHandler(0)} />
@@ -102,19 +100,10 @@ export const ListSettings = () => { { - console.log() + radioHandler(1) }} checked={radio[1]} /> - radioHandler(1)}> - { - radioHandler(1) - }} - checked={radio[1]} - /> - From 36c8bee0415da5a85ef36ad0978c987799ff097e Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 30 May 2024 17:24:43 +0000 Subject: [PATCH 050/129] Fixed the DnD --- .../InputSettings/components/ListSettings.tsx | 12 +++++------- .../src/components/NavComponent/NavComponent.tsx | 1 + .../form-system/src/components/Navbar/Navbar.tsx | 15 +++++++-------- .../src/lib/utils/updateFormSettings.ts | 1 - .../admin/form-system/src/screens/Form/Form.tsx | 6 +++--- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index 1c2e257eb65e..188c41e3a37c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -58,9 +58,8 @@ export const ListSettings = () => { radioHandler(0)}> { - console.log() - }} + // eslint-disable-next-line @typescript-eslint/no-empty-function + onChange={() => { }} checked={radio[0]} /> @@ -70,9 +69,8 @@ export const ListSettings = () => { { - console.log() - }} + // eslint-disable-next-line @typescript-eslint/no-empty-function + onChange={(e) => { }} checked={radio[1]} /> @@ -92,7 +90,7 @@ export const ListSettings = () => { label={formatMessage(m.predeterminedLists)} options={predeterminedLists} backgroundColor="blue" - // TODO: add lists + // TODO: add lists /> )} diff --git a/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx b/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx index 351aad3c3d7b..6201180d744d 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx @@ -93,6 +93,7 @@ export const NavComponent = ({ ...attributes, onClick: () => focusComponent(type, data.guid as UniqueIdentifier), })} + ref={setNodeRef} > {active ? ( diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index cae13ae64c88..480c54baf3ce 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -101,13 +101,13 @@ export const Navbar = () => { const data = type === 'Step' ? steps?.find( - (item: Maybe | undefined) => item?.guid === id, - ) + (item: Maybe | undefined) => item?.guid === id, + ) : type === 'Group' - ? groups?.find( + ? groups?.find( (item: Maybe | undefined) => item?.guid === id, ) - : inputs?.find( + : inputs?.find( (item: Maybe | undefined) => item?.guid === id, ) if (id === baseSettingsStep.guid) { @@ -154,7 +154,6 @@ export const Navbar = () => { const overId = over.id if (activeId === overId) return - const activeStep = active.data?.current?.type === 'Step' const activeGroup = active.data?.current?.type === 'Group' const activeInput = active.data?.current?.type === 'Input' @@ -332,9 +331,9 @@ export const Navbar = () => { type={activeItem.type} data={ activeItem.data as - | FormSystemGroup - | FormSystemStep - | FormSystemInput + | FormSystemGroup + | FormSystemStep + | FormSystemInput } active={activeItem.data?.guid === activeItem.data?.guid} focusComponent={focusComponent} diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts index e3d21d76e34a..8956e232a238 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormSettings.ts @@ -13,7 +13,6 @@ export const updateSettings = ( formId: form.id, documentTypeId: dt?.id, })) - console.log('form', form) updateFormSettings({ variables: { input: { diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index d31ff991d985..8c3dbe149dbb 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -51,15 +51,15 @@ export const Form = () => { updateInput, updatedActiveItem, ) - console.log(formBuilder) + const initialControl: ControlState = { activeItem: { type: 'Step', data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find( - (s: FormSystemStep) => s?.type === 'Input', - ) ?? defaultStep, + (s: FormSystemStep) => s?.type === 'Input', + ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, From 106a31991a49fd9ea142ea9de699ef465e77f640 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 3 Jun 2024 12:06:37 +0000 Subject: [PATCH 051/129] PR requested changes --- .../components/BaseSettings/BaseSettings.tsx | 2 +- .../InputSettings/InputSettings.tsx | 2 +- .../InputSettings/components/ListSettings.tsx | 6 ++--- .../components/ListBuilder/ListBuilder.tsx | 2 +- .../Preview/components/CheckboxPreview.tsx | 2 +- .../Preview/components/Currency.tsx | 2 +- .../Preview/components/MessageWithLink.tsx | 8 +++---- .../components/Preview/components/Radio.tsx | 4 ++-- .../src/components/Navbar/Navbar.tsx | 20 ++++++++--------- .../src/components/TableRow/TableRow.tsx | 2 +- .../form-system/src/lib/utils/updateDnd.ts | 22 +++++++++---------- .../form-system/src/screens/Form/Form.tsx | 4 ++-- .../form-system/src/screens/Forms/Forms.tsx | 2 +- 13 files changed, 39 insertions(+), 39 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index 4d4a7d5932ec..594d8ad9d980 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -31,7 +31,7 @@ export const BaseSettings = () => { placeholder={formatMessage(m.applicationName)} name="formName" value={form?.name?.is ?? ''} - backgroundColor={'blue'} + backgroundColor="blue" onFocus={(e) => setFocus(e.target.value)} onBlur={(e) => e.target.value !== focus && formUpdate()} onChange={(e) => diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx index 793fab90e153..f7da11637d41 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx @@ -2,10 +2,10 @@ import { useContext } from 'react' import { ControlContext } from '../../../../../../context/ControlContext' import { FormSystemInput } from '@island.is/api/schema' import { MessageWithLinkSettings } from './components/MessageWithLinkSettings' -import { FileUploadSettings } from './components/FIleUploadSettings' import { TextInputSettings } from './components/TextInputSettings' import { ListSettings } from './components/ListSettings' import { ToggleConnection } from './components/ToggleConnection' +import { FileUploadSettings } from './components/FIleUploadSettings' export const InputSettings = () => { const { control } = useContext(ControlContext) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index 188c41e3a37c..517fe668e381 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -59,7 +59,7 @@ export const ListSettings = () => { { }} + onChange={() => {}} checked={radio[0]} /> @@ -70,7 +70,7 @@ export const ListSettings = () => { { }} + onChange={(e) => {}} checked={radio[1]} /> @@ -90,7 +90,7 @@ export const ListSettings = () => { label={formatMessage(m.predeterminedLists)} options={predeterminedLists} backgroundColor="blue" - // TODO: add lists + // TODO: add lists /> )} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx index 3ccffa860f86..7a37f03d10cf 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/ListBuilder/ListBuilder.tsx @@ -125,7 +125,7 @@ export const ListBuilder = () => { { label={currentItem?.name?.is ?? ''} checked={currentItem?.inputSettings?.checked ?? false} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx index 130fb0240b0f..e1ba97a3a0dd 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Currency.tsx @@ -30,7 +30,7 @@ export const Currency = ({ currentItem }: Props) => { { } return ( diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx index 60ce109bdd6b..13fcf96d6962 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/Radio.tsx @@ -47,8 +47,8 @@ export const Radio = ({ currentItem }: Props) => { marginTop={2} marginBottom={2} display="flex" - flexDirection={'row'} - flexWrap={'wrap'} + flexDirection="row" + flexWrap="wrap" > {radioButtons?.map((rb, index) => radioButton(rb, index))} diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 480c54baf3ce..c4140ee6a9e9 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -101,13 +101,13 @@ export const Navbar = () => { const data = type === 'Step' ? steps?.find( - (item: Maybe | undefined) => item?.guid === id, - ) + (item: Maybe | undefined) => item?.guid === id, + ) : type === 'Group' - ? groups?.find( + ? groups?.find( (item: Maybe | undefined) => item?.guid === id, ) - : inputs?.find( + : inputs?.find( (item: Maybe | undefined) => item?.guid === id, ) if (id === baseSettingsStep.guid) { @@ -197,7 +197,7 @@ export const Navbar = () => { if (inSettings) { return (
- +
@@ -253,12 +253,12 @@ export const Navbar = () => { paddingBottom={2} overflow="hidden" display="flex" - flexDirection={'row'} + flexDirection="row" > { type={activeItem.type} data={ activeItem.data as - | FormSystemGroup - | FormSystemStep - | FormSystemInput + | FormSystemGroup + | FormSystemStep + | FormSystemInput } active={activeItem.data?.guid === activeItem.data?.guid} focusComponent={focusComponent} diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index acb6594353e1..443e375d5abf 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -116,7 +116,7 @@ export const TableRow = ({ - + - ({ - id: g?.id, - name: g?.name, - guid: g?.guid, - displayOrder: g?.displayOrder, - isHidden: (g?.isHidden ?? false) as boolean, - stepId: g?.stepId, - multiSet: g?.multiSet, - stepGuid: g?.stepGuid, - inputs: null, - } as FormSystemGroupInput), + ({ + id: g?.id, + name: g?.name, + guid: g?.guid, + displayOrder: g?.displayOrder, + isHidden: (g?.isHidden ?? false) as boolean, + stepId: g?.stepId, + multiSet: g?.multiSet, + stepGuid: g?.stepGuid, + inputs: null, + } as FormSystemGroupInput), ), }, }, diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 8c3dbe149dbb..197a0550de74 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -58,8 +58,8 @@ export const Form = () => { data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find( - (s: FormSystemStep) => s?.type === 'Input', - ) ?? defaultStep, + (s: FormSystemStep) => s?.type === 'Input', + ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index 2b58da01b8d5..aa94e0666db7 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -60,7 +60,7 @@ export const Forms = () => { - + {forms && From b9f17db2ee786d43ba4b320b1f974587849cd8a6 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 3 Jun 2024 12:07:14 +0000 Subject: [PATCH 052/129] Changes requested in PR --- .gitignore | 2 ++ .../src/lib/forms/forms.service.ts | 22 ++++++------------- .../src/lib/groups/groups.service.ts | 14 ++++-------- .../src/lib/inputs/inputs.service.ts | 14 ++++-------- .../src/lib/steps/steps.service.ts | 14 ++++-------- .../src/models/externalEndpoints.model.ts | 2 +- .../form-system/src/context/ControlContext.ts | 2 -- 7 files changed, 22 insertions(+), 48 deletions(-) diff --git a/.gitignore b/.gitignore index b47f26eaea80..a94d20d71b99 100644 --- a/.gitignore +++ b/.gitignore @@ -95,3 +95,5 @@ apps/**/index.html # Next.js .next + +.nx/ diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 37ab638484d3..53c0b6898306 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -104,14 +104,11 @@ export class FormsService { const request: ApiFormsFormIdDeleteRequest = { formId: input.id, } - const response = await this.formsApiWithAuth(auth) + await this.formsApiWithAuth(auth) .apiFormsFormIdDelete(request) .catch((e) => handle4xx(e, this.handleError, 'failed to delete form')) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + return } async updateForm(auth: User, input: UpdateFormInput): Promise { @@ -127,13 +124,11 @@ export class FormsService { formId: input.formId, formUpdateDto: formattedForm as FormUpdateDto, } - const response = await this.formsApiWithAuth(auth) + await this.formsApiWithAuth(auth) .apiFormsFormIdPut(request) .catch((e) => handle4xx(e, this.handleError, 'failed to update form')) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + + return } async updateFormSettings( @@ -145,15 +140,12 @@ export class FormsService { formSettingsUpdateDto: input.formSettingsUpdateDto as FormSettingsUpdateDto, } - const response = await this.formsApiWithAuth(auth) + await this.formsApiWithAuth(auth) .apiFormsFormIdSettingsPut(request) .catch((e) => handle4xx(e, this.handleError, 'failed to update form settings'), ) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + return } } diff --git a/libs/api/domains/form-system/src/lib/groups/groups.service.ts b/libs/api/domains/form-system/src/lib/groups/groups.service.ts index b9113320910c..320241cb3a83 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.service.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.service.ts @@ -77,14 +77,11 @@ export class GroupsService { groupId: input.groupId, } - const response = await this.groupsApiWithAuth(auth) + await this.groupsApiWithAuth(auth) .apiGroupsGroupIdDelete(request) .catch((e) => handle4xx(e, this.handleError, 'failed to delete group')) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + return } async updateGroup(auth: User, input: UpdateGroupInput): Promise { @@ -92,13 +89,10 @@ export class GroupsService { groupId: input.groupId, groupUpdateDto: input.groupUpdateDto as GroupUpdateDto, } - const response = await this.groupsApiWithAuth(auth) + await this.groupsApiWithAuth(auth) .apiGroupsGroupIdPut(request) .catch((e) => handle4xx(e, this.handleError, 'failed to update group')) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + return } } diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts index 3844e466ccd6..4edc6671de23 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts @@ -77,14 +77,11 @@ export class InputsService { inputId: input.inputId, } - const response = await this.inputsApiWithAuth(auth) + await this.inputsApiWithAuth(auth) .apiInputsInputIdDelete(request) .catch((e) => handle4xx(e, this.handleError, 'failed to delete input')) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + return } async updateInput(auth: User, input: UpdateInputInput): Promise { @@ -98,13 +95,10 @@ export class InputsService { inputUpdateDto: input.inputUpdateDto, } } - const response = await this.inputsApiWithAuth(auth) + await this.inputsApiWithAuth(auth) .apiInputsInputIdPut(request) .catch((e) => handle4xx(e, this.handleError, 'failed to update input')) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + return } } diff --git a/libs/api/domains/form-system/src/lib/steps/steps.service.ts b/libs/api/domains/form-system/src/lib/steps/steps.service.ts index 23fb5843e0eb..4d6afd254126 100644 --- a/libs/api/domains/form-system/src/lib/steps/steps.service.ts +++ b/libs/api/domains/form-system/src/lib/steps/steps.service.ts @@ -75,14 +75,11 @@ export class StepsService { stepId: input.stepId, } - const response = await this.stepsApiWithAuth(auth) + await this.stepsApiWithAuth(auth) .apiStepsStepIdDelete(request) .catch((e) => handle4xx(e, this.handleError, 'failed to delete step')) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + return } async updateStep(auth: User, input: UpdateStepInput): Promise { @@ -91,13 +88,10 @@ export class StepsService { stepUpdateDto: input.stepUpdateDto, } - const response = await this.stepsApiWithAuth(auth) + await this.stepsApiWithAuth(auth) .apiStepsStepIdPut(request) .catch((e) => handle4xx(e, this.handleError, 'failed to update step')) - if (!response || response instanceof ApolloError) { - return void 0 - } - return response + return } } diff --git a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts index da0681b3848a..6bfb0fde9267 100644 --- a/libs/api/domains/form-system/src/models/externalEndpoints.model.ts +++ b/libs/api/domains/form-system/src/models/externalEndpoints.model.ts @@ -20,7 +20,7 @@ export class ExternalEndpoints { @Field(() => String, { nullable: true }) url?: string | null - @Field(() => EExternalEndpointType) + @Field(() => EExternalEndpointType, { nullable: true }) type?: EExternalEndpointType @Field(() => EExternalEndpointEnvironment, { nullable: true }) diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index cc495319d60f..8942df44c507 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -13,8 +13,6 @@ import { ItemType, NavbarSelectStatus, } from '../lib/utils/interfaces' -import { MessageDescriptor } from 'react-intl' -import { Options } from 'react-select' export interface IControlContext { control: ControlState From 0cdb74b49d01eddcfb19acc9b002ebd8bd8379bc Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 3 Jun 2024 13:16:35 +0000 Subject: [PATCH 053/129] typo --- .../InputContent/components/InputSettings/InputSettings.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx index f7da11637d41..474e2ee7cd5e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/InputSettings.tsx @@ -5,7 +5,8 @@ import { MessageWithLinkSettings } from './components/MessageWithLinkSettings' import { TextInputSettings } from './components/TextInputSettings' import { ListSettings } from './components/ListSettings' import { ToggleConnection } from './components/ToggleConnection' -import { FileUploadSettings } from './components/FIleUploadSettings' +import { FileUploadSettings } from './components/FileUploadSettings' + export const InputSettings = () => { const { control } = useContext(ControlContext) From bf72bccbf6b48af43cc1967282a0695b62de201b Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Tue, 4 Jun 2024 12:01:47 +0000 Subject: [PATCH 054/129] Removed dummy function from onChange --- .../components/InputSettings/components/ListSettings.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index aa57b3de4c67..fafe187782d8 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -101,9 +101,8 @@ export const ListSettings = () => { { - console.log() - }} + // eslint-disable-next-line @typescript-eslint/no-empty-function + onChange={() => { }} checked={radio[1]} /> From 345c6f66d54971ef0a284a93146ff01d96cb5d4e Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 5 Jun 2024 13:49:42 +0000 Subject: [PATCH 055/129] started on propertyNumber preview --- .../MainContent/components/Preview/Preveiw.tsx | 1 + .../Preview/components/PhoneNumber.tsx | 4 ++-- .../Preview/components/PropertyNumber.tsx | 9 +++++++++ .../components/Preview/components/TimeInput.tsx | 4 ++-- .../admin/form-system/src/screens/Form/Form.tsx | 17 +++++++++-------- 5 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index ba874914084c..492c355f80a3 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -47,6 +47,7 @@ export const Preview = ({ data }: Props) => { {type === 'Radio_buttons' && } {type === 'ISK_numberbox' && } {type === 'Checkbox' && } + ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx index 4402e2cde979..766d08a67f4e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx @@ -9,7 +9,7 @@ interface Props { currentItem: FormSystemInput } -const PhoneNumber = ({ currentItem }: Props) => { +export const PhoneNumber = ({ currentItem }: Props) => { return ( @@ -24,4 +24,4 @@ const PhoneNumber = ({ currentItem }: Props) => { ) } -export default PhoneNumber + diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx new file mode 100644 index 000000000000..a6caab4c6519 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx @@ -0,0 +1,9 @@ +import { FormSystemInput } from "@island.is/api/schema" + +interface Props { + currentItem: FormSystemInput +} + +export const PropertyNumber = ({ currentItem }: Props) => { + +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx index 80a709bbdcbe..fe337ca68dee 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx @@ -6,8 +6,8 @@ import { Select, Box, } from '@island.is/island-ui/core' -import { ChangeEvent, useContext, useState } from "react" -import ControlContext from "../../../../../context/ControlContext" +import { ChangeEvent, useState } from "react" + interface Props { currentItem: FormSystemInput diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 9cd19f3b5442..524843100dde 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -49,14 +49,15 @@ export const Form = () => { const [updateInput] = useFormSystemUpdateInputMutation() const [updateForm] = useFormSystemUpdateFormMutation() const [updateFormSettings] = useFormSystemUpdateFormSettingsMutation() - const updateActiveItem = (updatedActiveItem?: ActiveItem) => - updateActiveItemFn( - control.activeItem, - updateStep, - updateGroup, - updateInput, - updatedActiveItem, - ) + const [getTranslation] = useFormSystemGetTranslationMutation() + // const updateActiveItem = (updatedActiveItem?: ActiveItem) => + // updateActiveItemFn( + // control.activeItem, + // updateStep, + // updateGroup, + // updateInput, + // updatedActiveItem, + // ) const initialControl: ControlState = { activeItem: { From f22f8a2d16705f29703bc7d07f43760affa0386d Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 6 Jun 2024 14:11:00 +0000 Subject: [PATCH 056/129] added propertyNumber preview --- .../components/Preview/Preveiw.tsx | 7 +- .../Preview/components/PropertyNumber.tsx | 118 +++++++++++++++++- .../admin/form-system/src/lib/messages.ts | 28 +++++ 3 files changed, 147 insertions(+), 6 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 492c355f80a3..ecaced9080b4 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -10,6 +10,9 @@ import { List } from './components/List' import { Radio } from './components/Radio' import { Currency } from './components/Currency' import { CheckboxPreview } from './components/CheckboxPreview' +import { PhoneNumber } from './components/PhoneNumber' +import TimeInput from './components/TimeInput' +import { PropertyNumber } from './components/PropertyNumber' interface Props { data: FormSystemInput @@ -47,7 +50,9 @@ export const Preview = ({ data }: Props) => { {type === 'Radio_buttons' && } {type === 'ISK_numberbox' && } {type === 'Checkbox' && } - + {type === 'Phone_number' && } + {type === 'Time_input' && } + {type === 'Property_number' && } ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx index a6caab4c6519..4c4558b6f65a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx @@ -1,9 +1,117 @@ -import { FormSystemInput } from "@island.is/api/schema" +import { Select, Stack, Tabs, GridRow as Row, GridColumn as Column, Box, Input, Option } from "@island.is/island-ui/core" +import { ChangeEvent, ReactNode, useState } from "react" +import { useIntl } from "react-intl" +import { SingleValue } from "react-select" +import { m } from "../../../../../lib/messages" -interface Props { - currentItem: FormSystemInput -} +export const PropertyNumber = () => { + + const [propertyNumber, setPropertyNumber] = useState('') + const [ownedProperty, setOwnedProperty] = useState('') + const showPropertyNumber = propertyNumber.length === 7 + const showOwnedProperty = ownedProperty !== '' + const { formatMessage } = useIntl() + const propertyProperties: ReactNode = ( + + + + + + + + + + + + + ) + + const handleOwnedPropertyChange = (e: SingleValue>) => { + setOwnedProperty(e?.value ?? '') + } + + const ownedProperties: ReactNode = ( + + + + + handlePropertyNumberChange(e)} + backgroundColor="blue" + /> + + + + {showPropertyNumber && propertyProperties} + + ) + return ( + + + + ) } diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts index 1bd411b464a1..cdf955731f42 100644 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ b/libs/portals/admin/form-system/src/lib/messages.ts @@ -365,6 +365,34 @@ export const m = defineMessages({ id: 'portals-admin.form-system:get-json', defaultMessage: 'Sækja JSON', }, + address: { + id: 'portals-admin.form-system:address', + defaultMessage: 'Heimilisfang', + }, + city: { + id: 'portals-admin.form-system:city', + defaultMessage: 'Staður', + }, + properties: { + id: 'portals-admin.form-system:properties', + defaultMessage: 'Eignir', + }, + chooseProperty: { + id: 'portals-admin.form-system:choose-property', + defaultMessage: 'Veldu eign', + }, + enterPropertyNumber: { + id: 'portals-admin.form-system:enter-property-number', + defaultMessage: 'Sláðu inn fasteignanúmer', + }, + propertyChoice: { + id: 'portals-admin.form-system:property-choice', + defaultMessage: 'Velja fasteign', + }, + propertyNumberInput: { + id: 'portals-admin.form-system:property-number-input', + defaultMessage: 'Skrá fasteignanúmer', + }, // Error messages invalidEmail: { id: 'portals-admin.form-system:invalid-email', From 35af4bc9a915fb0a9130b05a13370608b35c0234 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Thu, 6 Jun 2024 15:39:28 +0000 Subject: [PATCH 057/129] fixed the listSettings so it correctly switches between custom and predetermined lists --- .../InputSettings/components/ListSettings.tsx | 33 ++++++++++++++----- .../components/Preview/components/List.tsx | 2 +- .../Preview/components/PropertyNumber.tsx | 10 +++--- .../form-system/src/lib/utils/inputTypes.ts | 1 + 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index fafe187782d8..ea878d4ed940 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -99,20 +99,35 @@ export const ListSettings = () => { - { }} - checked={radio[1]} - /> + { + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: 'other', + update: updateActiveItem, + }, + }) + radioHandler(1) + }} + > + { }} + checked={radio[1]} + /> + )} {radio[0] && ( - + + + )} {radio[1] && ( diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index 680ab4490cbd..0576c370da41 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -28,7 +28,7 @@ export const List = ({ currentItem }: Props) => { useEffect(() => { const type = currentItem.inputSettings?.listType - if (type === 'customList') { + if (type === 'customList' || type === '') { const currentList = currentItem.inputSettings?.list ?? [] setListItems( currentList.map((l: FormSystemListItem) => ({ diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx index 4c4558b6f65a..ebc98139cbbb 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx @@ -1,5 +1,5 @@ import { Select, Stack, Tabs, GridRow as Row, GridColumn as Column, Box, Input, Option } from "@island.is/island-ui/core" -import { ChangeEvent, ReactNode, useState } from "react" +import { ChangeEvent, useState } from "react" import { useIntl } from "react-intl" import { SingleValue } from "react-select" import { m } from "../../../../../lib/messages" @@ -11,7 +11,8 @@ export const PropertyNumber = () => { const showPropertyNumber = propertyNumber.length === 7 const showOwnedProperty = ownedProperty !== '' const { formatMessage } = useIntl() - const propertyProperties: ReactNode = ( + + const propertyProperties = ( @@ -42,7 +43,7 @@ export const PropertyNumber = () => { setOwnedProperty(e?.value ?? '') } - const ownedProperties: ReactNode = ( + const ownedProperties = ( @@ -72,12 +73,11 @@ export const PropertyNumber = () => { } } - const inputPropertyNumber: ReactNode = ( + const inputPropertyNumber = ( Date: Fri, 7 Jun 2024 11:07:32 +0000 Subject: [PATCH 058/129] Adjusted property number --- .../MainContent/components/Preview/Preveiw.tsx | 2 +- .../Preview/components/PropertyNumber.tsx | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index ecaced9080b4..69a4362c9b9c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -52,7 +52,7 @@ export const Preview = ({ data }: Props) => { {type === 'Checkbox' && } {type === 'Phone_number' && } {type === 'Time_input' && } - {type === 'Property_number' && } + {type === 'Property_number' && } ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx index ebc98139cbbb..180666ee00c2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx @@ -3,13 +3,19 @@ import { ChangeEvent, useState } from "react" import { useIntl } from "react-intl" import { SingleValue } from "react-select" import { m } from "../../../../../lib/messages" +import { FormSystemInput } from "@island.is/api/schema" -export const PropertyNumber = () => { +interface Props { + currentItem: FormSystemInput +} + +export const PropertyNumber = ({ currentItem }: Props) => { const [propertyNumber, setPropertyNumber] = useState('') const [ownedProperty, setOwnedProperty] = useState('') const showPropertyNumber = propertyNumber.length === 7 const showOwnedProperty = ownedProperty !== '' + const isRequired = currentItem?.isRequired ?? false const { formatMessage } = useIntl() const propertyProperties = ( @@ -22,6 +28,7 @@ export const PropertyNumber = () => { disabled value="Borgartún 1" backgroundColor="blue" + required={isRequired} /> @@ -33,6 +40,7 @@ export const PropertyNumber = () => { disabled value="Reykjavík" backgroundColor="blue" + required={isRequired} /> @@ -44,7 +52,7 @@ export const PropertyNumber = () => { } const ownedProperties = ( - + @@ -59,6 +67,7 @@ export const PropertyNumber = () => { ]} onChange={(e) => handleOwnedPropertyChange(e)} backgroundColor="blue" + required={isRequired} /> @@ -88,6 +97,7 @@ export const PropertyNumber = () => { value={propertyNumber} onChange={(e) => handlePropertyNumberChange(e)} backgroundColor="blue" + required={isRequired} /> From 4d0128aecafb007e6a110fb51a87e01da92160e3 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Mon, 10 Jun 2024 12:15:18 +0000 Subject: [PATCH 059/129] Added tooltips to the navbuttons --- .../NavComponent/components/NavButtons.tsx | 21 ++++++++++++++++--- .../admin/form-system/src/lib/messages.ts | 8 +++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index 047b793dab5a..11a5f0373233 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -1,4 +1,4 @@ -import { Box, Icon } from '@island.is/island-ui/core' +import { Box, Icon, Tooltip } from '@island.is/island-ui/core' import { useContext } from 'react' import { FormSystemGroup, FormSystemInput } from '@island.is/api/schema' import { @@ -12,11 +12,15 @@ import { import { useFormSystemDeleteStepMutation } from './Step.generated' import { ControlContext } from '../../../context/ControlContext' import { removeTypename } from '../../../lib/utils/removeTypename' +import { useIntl } from 'react-intl' +import { m } from '../../../lib/messages' export const NavButtons = () => { const { control, controlDispatch } = useContext(ControlContext) const { activeItem, form } = control const { groupsList: groups, inputsList: inputs } = form + const { formatMessage } = useIntl() + const hoverText = activeItem.type === 'Step' ? formatMessage(m.addGroupHover) : formatMessage(m.addInputHover) const [addGroup] = useFormSystemCreateGroupMutation() const [addInput] = useFormSystemCreateInputMutation() @@ -116,11 +120,22 @@ export const NavButtons = () => { marginRight={1} onClick={addItem} > - + + + + + )} - + + + + + ) diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts index cdf955731f42..d4ef2a1ccecd 100644 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ b/libs/portals/admin/form-system/src/lib/messages.ts @@ -393,6 +393,14 @@ export const m = defineMessages({ id: 'portals-admin.form-system:property-number-input', defaultMessage: 'Skrá fasteignanúmer', }, + addGroupHover: { + id: 'portals-admin.form-system:add-step-hover', + defaultMessage: 'Bæta við skrefi', + }, + addInputHover: { + id: 'portals-admin.form-system:add-input-hover', + defaultMessage: 'Bæta við innslætti', + }, // Error messages invalidEmail: { id: 'portals-admin.form-system:invalid-email', From ab4acbafc599a20836893828e6b570e19328b382 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 12 Jun 2024 12:51:25 +0000 Subject: [PATCH 060/129] When deleting step or group that contains any items, the system will prompt for confirmation before deleting --- .../components/Preview/Preveiw.tsx | 2 +- .../Preview/components/TimeInput.tsx | 30 ++++--------------- .../NavComponent/components/NavButtons.tsx | 23 +++++++++++++- .../admin/form-system/src/lib/messages.ts | 6 +++- 4 files changed, 33 insertions(+), 28 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 69a4362c9b9c..b2db71fdbabe 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -11,7 +11,7 @@ import { Radio } from './components/Radio' import { Currency } from './components/Currency' import { CheckboxPreview } from './components/CheckboxPreview' import { PhoneNumber } from './components/PhoneNumber' -import TimeInput from './components/TimeInput' +import { TimeInput } from './components/TimeInput' import { PropertyNumber } from './components/PropertyNumber' interface Props { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx index fe337ca68dee..831f49095fa3 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx @@ -2,19 +2,17 @@ import { FormSystemInput } from "@island.is/api/schema" import { GridRow as Row, GridColumn as Column, - Input, Select, Box, } from '@island.is/island-ui/core' -import { ChangeEvent, useState } from "react" +import { ChangeEvent } from "react" interface Props { currentItem: FormSystemInput } -const TimeInput = ({ currentItem }: Props) => { - const [timeInput, setTimeInput] = useState('') +export const TimeInput = ({ currentItem }: Props) => { // 0: Minute // 1: Hourly @@ -58,23 +56,10 @@ const TimeInput = ({ currentItem }: Props) => { } } - const handleTimeInput = ( - e: ChangeEvent, - ) => { - const inputValue = e.target.value - - const isValidTime = - /^(?:[01]?[0-9]|2[0-3]):[0-5]?[0-9](?::[0-5]?[0-9])?$/.test(inputValue) - setTimeInput(inputValue) - if (isValidTime || inputValue === '') { - setTimeInput(inputValue) - } - } - return ( <> - + { /> - handleTimeInput(e)} - /> ) } -export default TimeInput + const hourList = [ '00', diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index 11a5f0373233..f207c0b531ad 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -28,6 +28,17 @@ export const NavButtons = () => { const [removeGroup, removeGroupStatus] = useFormSystemDeleteGroupMutation() const [removeInput, removeInputStatus] = useFormSystemDeleteInputMutation() + const containsGroupOrInput = (): boolean | undefined => { + const { type } = activeItem + if (type === 'Step') { + return groups?.some((group) => group?.stepGuid === activeItem?.data?.guid) + } else if (type === 'Group') { + return inputs?.some((input) => input?.groupGuid === activeItem?.data?.guid) + } else { + return false + } + } + const addItem = async () => { if (activeItem.type === 'Step') { const newGroup = await addGroup({ @@ -112,6 +123,16 @@ export const NavButtons = () => { } } + const handleRemove = () => { + if (!containsGroupOrInput()) { + remove() + } else { + if (confirm(formatMessage(m.areYouSure))) { + remove() + } + } + } + return ( {activeItem.type !== 'Input' && ( @@ -130,7 +151,7 @@ export const NavButtons = () => { )} - + diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts index d4ef2a1ccecd..10b82a77533e 100644 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ b/libs/portals/admin/form-system/src/lib/messages.ts @@ -395,12 +395,16 @@ export const m = defineMessages({ }, addGroupHover: { id: 'portals-admin.form-system:add-step-hover', - defaultMessage: 'Bæta við skrefi', + defaultMessage: 'Bæta við hópi', }, addInputHover: { id: 'portals-admin.form-system:add-input-hover', defaultMessage: 'Bæta við innslætti', }, + areYouSure: { + id: 'portals-admin.form-system:are-you-sure', + defaultMessage: 'Ertu viss?', + }, // Error messages invalidEmail: { id: 'portals-admin.form-system:invalid-email', From e0e38013fe67f07ea5216f33652bae952aae0a36 Mon Sep 17 00:00:00 2001 From: Hyo-Sam Nandkisore Date: Wed, 12 Jun 2024 13:22:15 +0000 Subject: [PATCH 061/129] Using the DialogPrompt component when prompting for confirmation --- .../NavComponent/components/NavButtons.tsx | 48 +++++++++++-------- .../admin/form-system/src/lib/messages.ts | 12 +++++ 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index f207c0b531ad..f0592476ba31 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -1,4 +1,4 @@ -import { Box, Icon, Tooltip } from '@island.is/island-ui/core' +import { Box, DialogPrompt, Icon, Tooltip } from '@island.is/island-ui/core' import { useContext } from 'react' import { FormSystemGroup, FormSystemInput } from '@island.is/api/schema' import { @@ -123,16 +123,6 @@ export const NavButtons = () => { } } - const handleRemove = () => { - if (!containsGroupOrInput()) { - remove() - } else { - if (confirm(formatMessage(m.areYouSure))) { - remove() - } - } - } - return ( {activeItem.type !== 'Input' && ( @@ -143,7 +133,7 @@ export const NavButtons = () => { > @@ -151,13 +141,33 @@ export const NavButtons = () => { )} - - - - - - - + {containsGroupOrInput() ? ( + + + + + + + + } + /> + ) : ( + + + + + + + )} ) } diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts index 10b82a77533e..19ffc72d4f7b 100644 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ b/libs/portals/admin/form-system/src/lib/messages.ts @@ -405,6 +405,18 @@ export const m = defineMessages({ id: 'portals-admin.form-system:are-you-sure', defaultMessage: 'Ertu viss?', }, + confirm: { + id: 'portals-admin.form-system:confirm', + defaultMessage: 'Staðfesta', + }, + cancel: { + id: 'portals-admin.form-system:cancel', + defaultMessage: 'Hætta við', + }, + delete: { + id: 'portals-admin.form-system:delete', + defaultMessage: 'Eyða', + }, // Error messages invalidEmail: { id: 'portals-admin.form-system:invalid-email', From 9a18716e78b9eeb04b6974d4c64794297a6febff Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 19 Jun 2024 12:01:53 +0000 Subject: [PATCH 062/129] formatMessage in navbuttons --- .../src/components/NavComponent/components/NavButtons.tsx | 2 +- libs/portals/admin/form-system/src/lib/messages.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index f0592476ba31..6c233e4846e7 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -145,7 +145,7 @@ export const NavButtons = () => { Date: Wed, 19 Jun 2024 13:39:33 +0000 Subject: [PATCH 063/129] Translation endpoint --- .../src/lib/services/services.resolver.ts | 17 +++++++-- .../src/lib/services/services.service.ts | 36 +++++++++++++++++-- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/libs/api/domains/form-system/src/lib/services/services.resolver.ts b/libs/api/domains/form-system/src/lib/services/services.resolver.ts index ed68b23d2b26..c8cc8517bb5f 100644 --- a/libs/api/domains/form-system/src/lib/services/services.resolver.ts +++ b/libs/api/domains/form-system/src/lib/services/services.resolver.ts @@ -1,12 +1,12 @@ -import { Query, Args, Resolver } from '@nestjs/graphql' +import { Query, Args, Resolver, Mutation } from '@nestjs/graphql' import { CurrentUser, IdsUserGuard, type User, } from '@island.is/auth-nest-tools' import { FormSystemService } from './services.service' -import { List } from '../../models/services.model' -import { GetPropertyInput } from '../../dto/services.input' +import { List, Translation } from '../../models/services.model' +import { GetPropertyInput, GetTranslationInput } from '../../dto/services.input' import { Audit } from '@island.is/nest/audit' import { UseGuards } from '@nestjs/common' @@ -60,4 +60,15 @@ export class FormSystemServicesResolver { ): Promise { return this.formSystemServices.getProperty(user, input) } + + @Mutation(() => Translation, { + name: 'formSystemGetTranslation', + }) + async getTranslation( + @Args('input', { type: () => GetTranslationInput }) + input: GetTranslationInput, + @CurrentUser() user: User, + ): Promise { + return this.formSystemServices.getTranslation(user, input) + } } diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index 9490cea68655..7e533fde725d 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -6,8 +6,8 @@ import { ApiServicesFasteignFasteignanumerGetRequest, ServicesApi, } from '@island.is/clients/form-system' -import { List } from '../../models/services.model' -import { GetPropertyInput } from '../../dto/services.input' +import { List, Translation } from '../../models/services.model' +import { GetPropertyInput, GetTranslationInput } from '../../dto/services.input' import { handle4xx } from '../../utils/errorHandler' @Injectable() @@ -110,4 +110,36 @@ export class FormSystemService { return response as List } + + async getTranslation( + auth: User, + input: GetTranslationInput, + ): Promise { + const { FORM_SYSTEM_MIDEIND_KEY } = process.env + const response = await fetch('https://api.greynir.is/translate/', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + 'X-API-Key': FORM_SYSTEM_MIDEIND_KEY || '', + }, + body: JSON.stringify({ + contents: input.contents, + sourceLanguageCode: 'is', + targetLanguageCode: 'en', + model: '', + domain: '', + }) + }) + if (!response.ok) { + throw new Error('Failed to get translation') + } + const result = await response.json() + return { + translations: result.translations ?? [], + sourceLanguageCode: result.sourceLanguageCode ?? '', + targetLanguageCode: result.targetLanguageCode ?? '', + model: result.model ?? '', + } as Translation + } } From 86fe6235cf5aee106c4fe516ecdc3e0f8d146ddf Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 19 Jun 2024 14:41:41 +0000 Subject: [PATCH 064/129] Removed property from dropdown --- .../admin/form-system/src/components/TableRow/TableRow.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index 1af2f75baec8..1d8649a11f02 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -152,9 +152,6 @@ export const TableRow = ({ { title: formatMessage(m.translateToEnglish), }, - { - title: formatMessage(m.translateToEnglish), - }, { title: 'Export', }, From a39944fa291951a9addae6116eac8518aac8865f Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 19 Jun 2024 14:47:22 +0000 Subject: [PATCH 065/129] format --- .../src/lib/forms/forms.service.ts | 2 +- .../src/lib/groups/groups.service.ts | 2 +- .../src/lib/inputs/inputs.service.ts | 2 +- .../organizations/organizations.services.ts | 2 +- .../src/lib/services/services.resolver.ts | 2 +- .../src/lib/services/services.service.ts | 4 +- .../src/lib/steps/steps.service.ts | 2 +- .../InputSettings/components/ListSettings.tsx | 4 +- .../components/Premises/Premises.tsx | 11 +- .../Preview/components/CheckboxPreview.tsx | 2 +- .../components/Preview/components/List.tsx | 19 +- .../Preview/components/PhoneNumber.tsx | 2 - .../Preview/components/PropertyNumber.tsx | 32 +-- .../Preview/components/TimeInput.tsx | 11 +- .../RelevantParties/RevelantParties.tsx | 21 +- .../NavComponent/components/NavButtons.tsx | 23 +- .../src/components/Navbar/Navbar.tsx | 14 +- .../form-system/src/hooks/controlReducer.ts | 202 +++++++++--------- .../form-system/src/lib/utils/translation.ts | 2 +- .../form-system/src/screens/Form/Form.tsx | 5 +- 20 files changed, 189 insertions(+), 175 deletions(-) diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 9ef356ee3cc2..ae127ee120f2 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -30,7 +30,7 @@ export class FormsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private formsApi: FormsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/groups/groups.service.ts b/libs/api/domains/form-system/src/lib/groups/groups.service.ts index 64a1d4d77792..57bd06e66fd1 100644 --- a/libs/api/domains/form-system/src/lib/groups/groups.service.ts +++ b/libs/api/domains/form-system/src/lib/groups/groups.service.ts @@ -26,7 +26,7 @@ export class GroupsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private formsApi: GroupsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts index f07fd8ceade4..8c5d15ca84e9 100644 --- a/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts +++ b/libs/api/domains/form-system/src/lib/inputs/inputs.service.ts @@ -26,7 +26,7 @@ export class InputsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private formsApi: InputsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts index 1172255edb4a..5798a8802dd1 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.services.ts @@ -16,7 +16,7 @@ export class OrganizationsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private organizationsApi: OrganizationsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/services/services.resolver.ts b/libs/api/domains/form-system/src/lib/services/services.resolver.ts index c8cc8517bb5f..a227892886b6 100644 --- a/libs/api/domains/form-system/src/lib/services/services.resolver.ts +++ b/libs/api/domains/form-system/src/lib/services/services.resolver.ts @@ -14,7 +14,7 @@ import { UseGuards } from '@nestjs/common' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class FormSystemServicesResolver { - constructor(private readonly formSystemServices: FormSystemService) { } + constructor(private readonly formSystemServices: FormSystemService) {} @Query(() => List, { name: 'formSystemGetCountries', diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index 7e533fde725d..1c8271043053 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -16,7 +16,7 @@ export class FormSystemService { @Inject(LOGGER_PROVIDER) private logger: Logger, private servicesApi: ServicesApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -129,7 +129,7 @@ export class FormSystemService { targetLanguageCode: 'en', model: '', domain: '', - }) + }), }) if (!response.ok) { throw new Error('Failed to get translation') diff --git a/libs/api/domains/form-system/src/lib/steps/steps.service.ts b/libs/api/domains/form-system/src/lib/steps/steps.service.ts index 9eaa306bc1c8..4eae342df242 100644 --- a/libs/api/domains/form-system/src/lib/steps/steps.service.ts +++ b/libs/api/domains/form-system/src/lib/steps/steps.service.ts @@ -24,7 +24,7 @@ export class StepsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private formsApi: StepsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index ea878d4ed940..3cf933689522 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -91,7 +91,7 @@ export const ListSettings = () => { { }} + onChange={() => {}} checked={radio[0]} /> @@ -114,7 +114,7 @@ export const ListSettings = () => { { }} + onChange={() => {}} checked={radio[1]} /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 0ef6edde0eb7..7ef79e5fc5e3 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -6,7 +6,8 @@ import { useIntl } from 'react-intl' import { m } from '../../../../lib/messages' export const Premises = () => { - const { control, documentTypes, updateSettings, controlDispatch } = useContext(ControlContext) + const { control, documentTypes, updateSettings, controlDispatch } = + useContext(ControlContext) const [formDocumentTypes, setFormDocumentTypes] = useState< FormSystemDocumentType[] >( @@ -22,15 +23,15 @@ export const Premises = () => { ) ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) : ([ - ...formDocumentTypes, - documentTypes?.find((d) => d?.id === documentTypeId), - ].filter((d) => d !== undefined) as FormSystemDocumentType[]) + ...formDocumentTypes, + documentTypes?.find((d) => d?.id === documentTypeId), + ].filter((d) => d !== undefined) as FormSystemDocumentType[]) setFormDocumentTypes(newDocumentTypes) updateSettings({ ...control.form, documentTypes: newDocumentTypes }) controlDispatch({ type: 'CHANGE_FORM_SETTINGS', payload: { - newForm: { ...control.form, documentTypes: newDocumentTypes } + newForm: { ...control.form, documentTypes: newDocumentTypes }, }, }) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx index d9fd259abf4b..9dfaa5831d89 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/CheckboxPreview.tsx @@ -12,7 +12,7 @@ export const CheckboxPreview = ({ currentItem }: Props) => { label={currentItem?.name?.is ?? ''} checked={currentItem?.inputSettings?.checked ?? false} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index 0576c370da41..4d2881d5c87e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -1,7 +1,12 @@ import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' import { useEffect, useState } from 'react' import { Select } from '@island.is/island-ui/core' -import { useFormSystemGetCountriesLazyQuery, useFormSystemGetMunicipalitiesLazyQuery, useFormSystemGetZipCodesLazyQuery, useFormSystemGetTradesProfessionsLazyQuery } from './getLists.generated' +import { + useFormSystemGetCountriesLazyQuery, + useFormSystemGetMunicipalitiesLazyQuery, + useFormSystemGetZipCodesLazyQuery, + useFormSystemGetTradesProfessionsLazyQuery, +} from './getLists.generated' interface Props { currentItem: FormSystemInput @@ -41,7 +46,7 @@ export const List = ({ currentItem }: Props) => { let data, loading, error switch (type) { case 'lond': - ({ data, loading, error } = await getCountries()) + ;({ data, loading, error } = await getCountries()) setListItems( data?.formSystemGetCountries?.list?.map((c) => ({ label: c?.label?.is ?? '', @@ -50,7 +55,7 @@ export const List = ({ currentItem }: Props) => { ) break case 'sveitarfelog': - ({ data, loading, error } = await getMunicipalities()) + ;({ data, loading, error } = await getMunicipalities()) setListItems( data?.formSystemGetMunicipalities.list?.map((m) => ({ label: m?.label?.is ?? '', @@ -59,7 +64,7 @@ export const List = ({ currentItem }: Props) => { ) break case 'postnumer': - ({ data, loading, error } = await getZipCodes()) + ;({ data, loading, error } = await getZipCodes()) setListItems( data?.formSystemGetZipCodes.list?.map((z) => ({ label: z?.label?.is ?? '', @@ -68,7 +73,7 @@ export const List = ({ currentItem }: Props) => { ) break case 'idngreinarMeistara': - ({ data, loading, error } = await getTradesProfessions()) + ;({ data, loading, error } = await getTradesProfessions()) setListItems( data?.formSystemGetTradesProfessions.list?.map((t) => ({ label: t?.label?.is ?? '', @@ -100,8 +105,8 @@ export const List = ({ currentItem }: Props) => { required={currentItem?.isRequired ?? false} placeholder={ ListTypePlaceholder[ - currentItem.inputSettings - ?.listType as keyof typeof ListTypePlaceholder + currentItem.inputSettings + ?.listType as keyof typeof ListTypePlaceholder ] } /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx index 766d08a67f4e..818c9cf75f99 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PhoneNumber.tsx @@ -23,5 +23,3 @@ export const PhoneNumber = ({ currentItem }: Props) => { ) } - - diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx index 180666ee00c2..6cca35d1c62a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/PropertyNumber.tsx @@ -1,16 +1,24 @@ -import { Select, Stack, Tabs, GridRow as Row, GridColumn as Column, Box, Input, Option } from "@island.is/island-ui/core" -import { ChangeEvent, useState } from "react" -import { useIntl } from "react-intl" -import { SingleValue } from "react-select" -import { m } from "../../../../../lib/messages" -import { FormSystemInput } from "@island.is/api/schema" +import { + Select, + Stack, + Tabs, + GridRow as Row, + GridColumn as Column, + Box, + Input, + Option, +} from '@island.is/island-ui/core' +import { ChangeEvent, useState } from 'react' +import { useIntl } from 'react-intl' +import { SingleValue } from 'react-select' +import { m } from '../../../../../lib/messages' +import { FormSystemInput } from '@island.is/api/schema' interface Props { currentItem: FormSystemInput } export const PropertyNumber = ({ currentItem }: Props) => { - const [propertyNumber, setPropertyNumber] = useState('') const [ownedProperty, setOwnedProperty] = useState('') const showPropertyNumber = propertyNumber.length === 7 @@ -54,7 +62,7 @@ export const PropertyNumber = ({ currentItem }: Props) => { const ownedProperties = ( - + { - // 0: Minute // 1: Hourly // 2: Half hour // 3: Quarter - const chosenMinuteList = (): { label: string, value: string }[] => { + const chosenMinuteList = (): { label: string; value: string }[] => { const min = minuteList.map((t) => { return { label: t, @@ -90,8 +88,6 @@ export const TimeInput = ({ currentItem }: Props) => { ) } - - const hourList = [ '00', '01', @@ -119,7 +115,6 @@ const hourList = [ '23', ] - const minuteList = [ '00', '01', diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx index 167d5db78a25..903a56992600 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx @@ -35,7 +35,7 @@ export const RelevantParties = () => { applicantTypes: applicantTypeTemplates, control, updateSettings, - controlDispatch + controlDispatch, } = useContext(ControlContext) const { form } = control const { id: formId } = form @@ -87,8 +87,8 @@ export const RelevantParties = () => { controlDispatch({ type: 'CHANGE_FORM_SETTINGS', payload: { - newForm: { ...newForm } - } + newForm: { ...newForm }, + }, }) } @@ -121,7 +121,6 @@ export const RelevantParties = () => { setOnFocus('') } - const handleCheckboxChange = (checked: boolean, index: number) => { const updateFormApplicantTypes = ( newFormApplicantTypes: FormSystemFormApplicantType[], @@ -131,8 +130,8 @@ export const RelevantParties = () => { ) const newTypes = hasLegalEntity ? newFormApplicantTypes.filter( - (f) => f.type !== EFormApplicantTypes.logadili, - ) + (f) => f.type !== EFormApplicantTypes.logadili, + ) : newFormApplicantTypes const newList = [...formApplicantTypes, ...newTypes] saveAndUpdate({ ...form, formApplicantTypes: newList }) @@ -155,7 +154,10 @@ export const RelevantParties = () => { if (template !== undefined && template !== null) { const newFormApplicantType: FormSystemFormApplicantType = createFormApplicantType(EFormApplicantTypes.einstaklingur, template) - saveAndUpdate({ ...form, formApplicantTypes: [...formApplicantTypes, newFormApplicantType] }) + saveAndUpdate({ + ...form, + formApplicantTypes: [...formApplicantTypes, newFormApplicantType], + }) setFormApplicantTypes([...formApplicantTypes, newFormApplicantType]) } } else if (index === 1) { @@ -183,7 +185,10 @@ export const RelevantParties = () => { delegateeTemplate, ), ] - saveAndUpdate({ ...form, formApplicantTypes: [...formApplicantTypes, ...newFormApplicantTypes] }) + saveAndUpdate({ + ...form, + formApplicantTypes: [...formApplicantTypes, ...newFormApplicantTypes], + }) setFormApplicantTypes([...formApplicantTypes, ...newFormApplicantTypes]) } else if (index === 2) { const delegatorTemplate = applicantTypeTemplates?.find( diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index 6c233e4846e7..b5e5d48a574f 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -20,7 +20,10 @@ export const NavButtons = () => { const { activeItem, form } = control const { groupsList: groups, inputsList: inputs } = form const { formatMessage } = useIntl() - const hoverText = activeItem.type === 'Step' ? formatMessage(m.addGroupHover) : formatMessage(m.addInputHover) + const hoverText = + activeItem.type === 'Step' + ? formatMessage(m.addGroupHover) + : formatMessage(m.addInputHover) const [addGroup] = useFormSystemCreateGroupMutation() const [addInput] = useFormSystemCreateInputMutation() @@ -33,7 +36,9 @@ export const NavButtons = () => { if (type === 'Step') { return groups?.some((group) => group?.stepGuid === activeItem?.data?.guid) } else if (type === 'Group') { - return inputs?.some((input) => input?.groupGuid === activeItem?.data?.guid) + return inputs?.some( + (input) => input?.groupGuid === activeItem?.data?.guid, + ) } else { return false } @@ -131,10 +136,7 @@ export const NavButtons = () => { marginRight={1} onClick={addItem} > - + @@ -146,12 +148,12 @@ export const NavButtons = () => { baseId="remove" title={formatMessage(m.areYouSure)} description={formatMessage(m.completelySure)} - ariaLabel='Remove item' + ariaLabel="Remove item" buttonTextConfirm={formatMessage(m.confirm)} buttonTextCancel={formatMessage(m.cancel)} onConfirm={remove} disclosureElement={ - + @@ -161,13 +163,14 @@ export const NavButtons = () => { } /> ) : ( - + - )} + + )} ) } diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 1ca83209c318..c4140ee6a9e9 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -101,13 +101,13 @@ export const Navbar = () => { const data = type === 'Step' ? steps?.find( - (item: Maybe | undefined) => item?.guid === id, - ) + (item: Maybe | undefined) => item?.guid === id, + ) : type === 'Group' - ? groups?.find( + ? groups?.find( (item: Maybe | undefined) => item?.guid === id, ) - : inputs?.find( + : inputs?.find( (item: Maybe | undefined) => item?.guid === id, ) if (id === baseSettingsStep.guid) { @@ -331,9 +331,9 @@ export const Navbar = () => { type={activeItem.type} data={ activeItem.data as - | FormSystemGroup - | FormSystemStep - | FormSystemInput + | FormSystemGroup + | FormSystemStep + | FormSystemInput } active={activeItem.data?.guid === activeItem.data?.guid} focusComponent={focusComponent} diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index accf05a74f15..4471db362a8e 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -14,9 +14,9 @@ import { ActiveItem, InputSettings } from '../lib/utils/interfaces' type ActiveItemActions = | { type: 'SET_ACTIVE_ITEM'; payload: { activeItem: ActiveItem } } | { - type: 'SET_ACTIVE_LIST_ITEM' - payload: { listItem: FormSystemListItem | null } - } + type: 'SET_ACTIVE_LIST_ITEM' + payload: { listItem: FormSystemListItem | null } + } type GroupActions = | { type: 'ADD_GROUP'; payload: { group: FormSystemGroup } } @@ -26,21 +26,21 @@ type InputActions = | { type: 'ADD_INPUT'; payload: { input: FormSystemInput } } | { type: 'REMOVE_INPUT'; payload: { inputId: number } } | { - type: 'CHANGE_INPUT_TYPE' - payload: { - newValue: string - inputSettings: InputSettings - update: (updatedActiveItem?: ActiveItem) => void + type: 'CHANGE_INPUT_TYPE' + payload: { + newValue: string + inputSettings: InputSettings + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'CHANGE_DESCRIPTION' - payload: { lang: 'en' | 'is'; newValue: string } - } + type: 'CHANGE_DESCRIPTION' + payload: { lang: 'en' | 'is'; newValue: string } + } | { - type: 'CHANGE_IS_REQUIRED' - payload: { update: (updatedActiveItem?: ActiveItem) => void } - } + type: 'CHANGE_IS_REQUIRED' + payload: { update: (updatedActiveItem?: ActiveItem) => void } + } type StepActions = | { type: 'ADD_STEP'; payload: { step: FormSystemStep } } @@ -48,119 +48,119 @@ type StepActions = type DndActions = | { - type: 'STEP_OVER_STEP' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'STEP_OVER_STEP' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'GROUP_OVER_STEP' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'GROUP_OVER_STEP' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'GROUP_OVER_GROUP' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'GROUP_OVER_GROUP' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'INPUT_OVER_GROUP' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'INPUT_OVER_GROUP' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'INPUT_OVER_INPUT' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'INPUT_OVER_INPUT' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'LIST_ITEM_OVER_LIST_ITEM' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'LIST_ITEM_OVER_LIST_ITEM' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } type ChangeActions = | { type: 'CHANGE_NAME'; payload: { lang: 'en' | 'is'; newValue: string } } | { - type: 'CHANGE_FORM_NAME' - payload: { lang: 'en' | 'is'; newValue: string } - } + type: 'CHANGE_FORM_NAME' + payload: { lang: 'en' | 'is'; newValue: string } + } | { type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE'; payload: { value: number } } | { type: 'CHANGE_INVALIDATION_DATE'; payload: { value: Date } } | { - type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP' - payload: { value: boolean; update: (updatedForm: FormSystemForm) => void } - } + type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_STEP' + payload: { value: boolean; update: (updatedForm: FormSystemForm) => void } + } | { type: 'CHANGE_FORM_SETTINGS'; payload: { newForm: FormSystemForm } } | { - type: 'TOGGLE_DEPENDENCY' - payload: { - activeId: string - itemId: string - update: (updatedForm: FormSystemForm) => void + type: 'TOGGLE_DEPENDENCY' + payload: { + activeId: string + itemId: string + update: (updatedForm: FormSystemForm) => void + } } - } | { - type: 'TOGGLE_MULTI_SET' - payload: { - checked: boolean - update: (updatedActiveItem?: ActiveItem) => void + type: 'TOGGLE_MULTI_SET' + payload: { + checked: boolean + update: (updatedActiveItem?: ActiveItem) => void + } } - } type InputSettingsActions = | { - type: 'SET_MESSAGE_WITH_LINK_SETTINGS' - payload: { - property: 'buttonText' | 'url' | 'hasLink' - value?: string - checked?: boolean - lang?: 'is' | 'en' - update?: (updatedActiveItem?: ActiveItem) => void + type: 'SET_MESSAGE_WITH_LINK_SETTINGS' + payload: { + property: 'buttonText' | 'url' | 'hasLink' + value?: string + checked?: boolean + lang?: 'is' | 'en' + update?: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'SET_FILE_UPLOAD_SETTINGS' - payload: { - property: 'isMulti' | 'maxSize' | 'amount' | 'types' - checked?: boolean - value?: string | number - update: (updatedActiveItem?: ActiveItem) => void + type: 'SET_FILE_UPLOAD_SETTINGS' + payload: { + property: 'isMulti' | 'maxSize' | 'amount' | 'types' + checked?: boolean + value?: string | number + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'SET_INPUT_SETTINGS' - payload: { - property: 'isLarge' - value: boolean - update: (updatedActiveItem?: ActiveItem) => void + type: 'SET_INPUT_SETTINGS' + payload: { + property: 'isLarge' + value: boolean + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'SET_LIST_ITEM_SELECTED' - payload: { - guid: UniqueIdentifier - update: (updatedActiveItem?: ActiveItem) => void + type: 'SET_LIST_ITEM_SELECTED' + payload: { + guid: UniqueIdentifier + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'REMOVE_LIST_ITEM' - payload: { - guid: UniqueIdentifier - update: (updatedActiveItem?: ActiveItem) => void + type: 'REMOVE_LIST_ITEM' + payload: { + guid: UniqueIdentifier + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'CHANGE_LIST_ITEM' - payload: { - property: 'label' | 'description' - lang: 'is' | 'en' - value: string - guid: UniqueIdentifier - update: (updatedActiveItem?: ActiveItem) => void + type: 'CHANGE_LIST_ITEM' + payload: { + property: 'label' | 'description' + lang: 'is' | 'en' + value: string + guid: UniqueIdentifier + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { type: 'ADD_LIST_ITEM' } | { - type: 'SET_LIST_TYPE' - payload: { - listType: string - update: (updatedActiveItem?: ActiveItem) => void + type: 'SET_LIST_TYPE' + payload: { + listType: string + update: (updatedActiveItem?: ActiveItem) => void + } } - } export type ControlAction = | ActiveItemActions @@ -514,11 +514,11 @@ export const controlReducer = ( [property]: property === 'hasLink' ? checked : value, ...(property === 'buttonText' ? { - buttonText: { - ...input.inputSettings?.buttonText, - [lang]: value, - }, - } + buttonText: { + ...input.inputSettings?.buttonText, + [lang]: value, + }, + } : {}), }, } @@ -559,8 +559,8 @@ export const controlReducer = ( property === 'types' ? updateFileTypesArray() : property === 'isMulti' - ? checked - : value, + ? checked + : value, }, } update({ type: 'Input', data: newInput }) diff --git a/libs/portals/admin/form-system/src/lib/utils/translation.ts b/libs/portals/admin/form-system/src/lib/utils/translation.ts index 9f7b24f6602e..63621402c9a4 100644 --- a/libs/portals/admin/form-system/src/lib/utils/translation.ts +++ b/libs/portals/admin/form-system/src/lib/utils/translation.ts @@ -1,4 +1,4 @@ -import { useFormSystemGetTranslationMutation } from "./getTranslation.generated" +import { useFormSystemGetTranslationMutation } from './getTranslation.generated' export const translate = async ( text: string, diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 524843100dde..dd5499558d8e 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -65,8 +65,8 @@ export const Form = () => { data: inSettings ? baseSettingsStep : removeTypename(form?.stepsList)?.find( - (s: FormSystemStep) => s?.type === 'Input', - ) ?? defaultStep, + (s: FormSystemStep) => s?.type === 'Input', + ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, @@ -136,7 +136,6 @@ export const Form = () => { const formUpdate = (updatedForm?: FormSystemForm) => entireFormUpdate(control, updateForm, updatedForm) - const context: IControlContext = { control, controlDispatch, From 3c962a83d0ffacc3e3dfadbe6e1323b3b9281681 Mon Sep 17 00:00:00 2001 From: andes-it Date: Wed, 19 Jun 2024 14:48:40 +0000 Subject: [PATCH 066/129] chore: charts update dirty files --- charts/islandis/values.dev.yaml | 1 + charts/islandis/values.prod.yaml | 1 + charts/islandis/values.staging.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/charts/islandis/values.dev.yaml b/charts/islandis/values.dev.yaml index 436a4689c40c..d4970991284a 100644 --- a/charts/islandis/values.dev.yaml +++ b/charts/islandis/values.dev.yaml @@ -1839,6 +1839,7 @@ portals-admin: memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' + FORM_SYSTEM_MIDEIND_KEY: '/k8s/portals-admin/FORM_SYSTEM_MIDEIND_KEY' SI_PUBLIC_CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' SI_PUBLIC_DD_RUM_APPLICATION_ID: '/k8s/DD_RUM_APPLICATION_ID' SI_PUBLIC_DD_RUM_CLIENT_TOKEN: '/k8s/DD_RUM_CLIENT_TOKEN' diff --git a/charts/islandis/values.prod.yaml b/charts/islandis/values.prod.yaml index 663eb75228f6..2b6cfd08d7a7 100644 --- a/charts/islandis/values.prod.yaml +++ b/charts/islandis/values.prod.yaml @@ -1707,6 +1707,7 @@ portals-admin: memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' + FORM_SYSTEM_MIDEIND_KEY: '/k8s/portals-admin/FORM_SYSTEM_MIDEIND_KEY' SI_PUBLIC_CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' SI_PUBLIC_DD_RUM_APPLICATION_ID: '/k8s/DD_RUM_APPLICATION_ID' SI_PUBLIC_DD_RUM_CLIENT_TOKEN: '/k8s/DD_RUM_CLIENT_TOKEN' diff --git a/charts/islandis/values.staging.yaml b/charts/islandis/values.staging.yaml index 5b1afa78da34..1e41f8e01e7e 100644 --- a/charts/islandis/values.staging.yaml +++ b/charts/islandis/values.staging.yaml @@ -1581,6 +1581,7 @@ portals-admin: memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' + FORM_SYSTEM_MIDEIND_KEY: '/k8s/portals-admin/FORM_SYSTEM_MIDEIND_KEY' SI_PUBLIC_CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' SI_PUBLIC_DD_RUM_APPLICATION_ID: '/k8s/DD_RUM_APPLICATION_ID' SI_PUBLIC_DD_RUM_CLIENT_TOKEN: '/k8s/DD_RUM_CLIENT_TOKEN' From 26442dd1d434c20fd3dc307892773ef3c72aab0a Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Fri, 21 Jun 2024 12:21:50 +0000 Subject: [PATCH 067/129] Deleted file with typo --- .../components/FIleUploadSettings.tsx | 183 ------------------ 1 file changed, 183 deletions(-) delete mode 100644 libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx deleted file mode 100644 index bb08588c47be..000000000000 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/FIleUploadSettings.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { - GridRow as Row, - GridColumn as Column, - Checkbox, - Stack, - Box, - Select, - Text, - Option, -} from '@island.is/island-ui/core' -import { useContext } from 'react' -import { fileTypes } from '../../../../../../../utils/fileTypes' -import { ControlContext } from '../../../../../../../context/ControlContext' -import { FormSystemInput } from '@island.is/api/schema' -import { m } from '../../../../../../../lib/messages' -import { useIntl } from 'react-intl' - -const fileSizes = { - fileSizes: [ - { - label: '1 mb', - value: 1048576, - }, - { - label: '2 mb', - value: 2097152, - }, - { - label: '3 mb', - value: 3145728, - }, - { - label: '4 mb', - value: 4194304, - }, - { - label: '5 mb', - value: 5242880, - }, - { - label: '6 mb', - value: 6291456, - }, - { - label: '7 mb', - value: 7340032, - }, - { - label: '8 mb', - value: 8388608, - }, - { - label: '9 mb', - value: 9437184, - }, - { - label: '10 mb', - value: 10485760, - }, - ], -} - -export const FileUploadSettings = () => { - const { control, controlDispatch, updateActiveItem } = - useContext(ControlContext) - const { activeItem } = control - const currentItem = activeItem.data as FormSystemInput - const { inputSettings } = currentItem - - const fileSizeOptions = fileSizes.fileSizes.map((size) => ({ - label: size.label, - value: size.value, - })) - - const fileAmountOptions: Option[] = Array.from( - { length: 10 }, - (_, i) => ({ - label: `${i + 1}`, - value: i + 1, - }), - ) - const { formatMessage } = useIntl() - return ( - - - - - controlDispatch({ - type: 'SET_FILE_UPLOAD_SETTINGS', - payload: { - property: 'isMulti', - checked: e.target.checked, - update: updateActiveItem, - }, - }) - } - /> - - - - - f.value === inputSettings.amount, - )} - options={fileAmountOptions} - onChange={(e) => - controlDispatch({ - type: 'SET_FILE_UPLOAD_SETTINGS', - payload: { - property: 'amount', - value: e?.value, - update: updateActiveItem, - }, - }) - } - /> - - )} - - - - {formatMessage(m.allowFileTypes)} - - - - {Object.entries(fileTypes).map(([key, value], i) => ( - - {key !== 'default' && ( - - controlDispatch({ - type: 'SET_FILE_UPLOAD_SETTINGS', - payload: { - property: 'types', - checked: e.target.checked, - value: key, - update: updateActiveItem, - }, - }) - } - /> - )} - - ))} - - - ) -} From 995afe8c877574f346a4f32fde002c2b46406a32 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:29:01 +0000 Subject: [PATCH 068/129] Merge branch 'main' of https://github.com/island-is/island.is into form-system1.1 --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 46afbc46fe94..e66995111121 100644 --- a/package.json +++ b/package.json @@ -447,7 +447,6 @@ "next-secure-headers": "2.1.0", "nx": "16.9.0", "prettier": "2.6.2", - "sass": "1.62.1", "sequelize-cli": "6.4.1", "sort-paths": "1.1.1", "sqlite3": "5.1.6", @@ -493,4 +492,4 @@ "yarn": "3.2.3" }, "packageManager": "yarn@3.2.3" -} +} \ No newline at end of file From 48d76c0f4b0c491a0d027d1ac9c9036b538afb7d Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:55:24 +0000 Subject: [PATCH 069/129] update yarn.lock --- package.json | 2 +- yarn.lock | 13 ------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/package.json b/package.json index e66995111121..34efabe5574e 100644 --- a/package.json +++ b/package.json @@ -492,4 +492,4 @@ "yarn": "3.2.3" }, "packageManager": "yarn@3.2.3" -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index 2a9ae2023e59..8ba4ef49893b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -46870,19 +46870,6 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.62.1": - version: 1.62.1 - resolution: "sass@npm:1.62.1" - dependencies: - chokidar: ">=3.0.0 <4.0.0" - immutable: ^4.0.0 - source-map-js: ">=0.6.2 <2.0.0" - bin: - sass: sass.js - checksum: 1b1b3584b38a63dd94156b65f13b90e3f84b170a38c3d5e3fa578b7a32a37aeb349b4926b0eaf9448d48e955e86b1ee01b13993f19611dad8068af07a607c13b - languageName: node - linkType: hard - "sass@npm:^1.42.1": version: 1.63.2 resolution: "sass@npm:1.63.2" From 989ac925e63f6f4ebe6f531376a065583eb86ab6 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:45:03 +0000 Subject: [PATCH 070/129] chore: Remove unused code and fix linting issues --- .../src/lib/services/services.service.ts | 23 +++-- .../components/MainContent/MainContent.tsx | 7 -- .../components/Preview/components/List.tsx | 88 ++++++++----------- .../Preview/components/TimeInput.tsx | 47 +++------- .../NavComponent/components/NavButtons.tsx | 3 +- .../form-system/src/context/ControlContext.ts | 25 +++--- 6 files changed, 79 insertions(+), 114 deletions(-) diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index 1c8271043053..d4947015c955 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -16,7 +16,7 @@ export class FormSystemService { @Inject(LOGGER_PROVIDER) private logger: Logger, private servicesApi: ServicesApi, - ) {} + ) { } // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -111,17 +111,17 @@ export class FormSystemService { return response as List } - async getTranslation( - auth: User, - input: GetTranslationInput, - ): Promise { + private async fetchTranslation(input: GetTranslationInput): Promise { const { FORM_SYSTEM_MIDEIND_KEY } = process.env + if (!FORM_SYSTEM_MIDEIND_KEY) { + throw new Error('Api key for translation service is not configured') + } const response = await fetch('https://api.greynir.is/translate/', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json', - 'X-API-Key': FORM_SYSTEM_MIDEIND_KEY || '', + 'X-API-Key': FORM_SYSTEM_MIDEIND_KEY, }, body: JSON.stringify({ contents: input.contents, @@ -131,6 +131,17 @@ export class FormSystemService { domain: '', }), }) + if (!response.ok) { + throw new Error(`Failed to fetch translation with status: ${response.status}`) + } + return response + } + + async getTranslation( + auth: User, + input: GetTranslationInput, + ): Promise { + const response = await this.fetchTranslation(input) if (!response.ok) { throw new Error('Failed to get translation') } diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index f2d23b3d4f9a..c94519dc7dd9 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -17,7 +17,6 @@ import { PreviewStepOrGroup } from './components/PreviewStepOrGroup/PreviewStepO import { RelevantParties } from './components/RelevantParties/RevelantParties' import { useIntl } from 'react-intl' import { m } from '../../lib/messages' -import { getTranslationButtons } from '../../lib/utils/getTranslationButtons' export const MainContent = () => { const { @@ -32,12 +31,6 @@ export const MainContent = () => { const [openPreview, setOpenPreview] = useState(false) const { formatMessage } = useIntl() - const translateNameButton = getTranslationButtons( - activeItem?.data?.name?.is ?? '', - controlDispatch, - 'CHANGE_NAME', - ) - return ( {activeItem.type === 'Input' ? ( diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index 4d2881d5c87e..24858d1eae14 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -31,61 +31,46 @@ export const List = ({ currentItem }: Props) => { const [getZipCodes] = useFormSystemGetZipCodesLazyQuery() const [getTradesProfessions] = useFormSystemGetTradesProfessionsLazyQuery() + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const mapToListItems = (items: any[]): ListItem[] => + items?.map(item => ({ + label: item?.label?.is ?? '', + value: item?.label?.is ?? '', + })) ?? [] + + const fetchAndSetList = async (fetcher: () => Promise, dataKey: string) => { + try { + const { data } = await fetcher() + if (!data || !data[dataKey] || !data[dataKey].list) { + throw new Error(`Invalid data structure for ${dataKey}`) + } + setListItems(mapToListItems(data[dataKey].list)) + } catch (err) { + console.error(`Error fetching ${dataKey}:`, err) + setListItems([]) + } + } + useEffect(() => { const type = currentItem.inputSettings?.listType + if (type === 'customList' || type === '') { const currentList = currentItem.inputSettings?.list ?? [] - setListItems( - currentList.map((l: FormSystemListItem) => ({ - label: l?.label?.is ?? '', - value: l?.label?.is ?? '', - })), - ) + setListItems(mapToListItems(currentList)) } else { - const fetchList = async () => { - let data, loading, error - switch (type) { - case 'lond': - ;({ data, loading, error } = await getCountries()) - setListItems( - data?.formSystemGetCountries?.list?.map((c) => ({ - label: c?.label?.is ?? '', - value: c?.label?.is ?? '', - })) ?? [], - ) - break - case 'sveitarfelog': - ;({ data, loading, error } = await getMunicipalities()) - setListItems( - data?.formSystemGetMunicipalities.list?.map((m) => ({ - label: m?.label?.is ?? '', - value: m?.label?.is ?? '', - })) ?? [], - ) - break - case 'postnumer': - ;({ data, loading, error } = await getZipCodes()) - setListItems( - data?.formSystemGetZipCodes.list?.map((z) => ({ - label: z?.label?.is ?? '', - value: z?.label?.is ?? '', - })) ?? [], - ) - break - case 'idngreinarMeistara': - ;({ data, loading, error } = await getTradesProfessions()) - setListItems( - data?.formSystemGetTradesProfessions.list?.map((t) => ({ - label: t?.label?.is ?? '', - value: t?.label?.is ?? '', - })) ?? [], - ) - break - default: - break - } + const fetchMap: Record Promise> = { + 'lond': () => fetchAndSetList(getCountries, 'formSystemGetCountries'), + 'sveitarfelog': () => fetchAndSetList(getMunicipalities, 'formSystemGetMunicipalities'), + 'postnumer': () => fetchAndSetList(getZipCodes, 'formSystemGetZipCodes'), + 'idngreinarMeistara': () => fetchAndSetList(getTradesProfessions, 'formSystemGetTradesProfessions'), + } + + const fetcher = fetchMap[type] + if (fetcher) { + fetcher() + } else { + setListItems([]) } - fetchList() } }, [ currentItem.inputSettings?.list, @@ -105,9 +90,8 @@ export const List = ({ currentItem }: Props) => { required={currentItem?.isRequired ?? false} placeholder={ ListTypePlaceholder[ - currentItem.inputSettings - ?.listType as keyof typeof ListTypePlaceholder - ] + currentItem.inputSettings?.listType as keyof typeof ListTypePlaceholder + ] ?? 'Select an option' } /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx index 3387ceae2ded..48044f306bb4 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx @@ -17,42 +17,23 @@ export const TimeInput = ({ currentItem }: Props) => { // 2: Half hour // 3: Quarter const chosenMinuteList = (): { label: string; value: string }[] => { - const min = minuteList.map((t) => { - return { - label: t, - value: t, - } - }) + const createOptions = (list: string[]) => list.map(t => ({ label: t, value: t })); - if (currentItem?.inputSettings === undefined) { - return min - } else { - const interval = currentItem.inputSettings.interval + const interval = currentItem?.inputSettings?.interval; - if (interval === 0) { - return min - } else if (interval === 1) { - return [{ label: '00', value: '00' }] - } else if (interval === 2) { - return halfList.minuteList.map((m) => { - return { - label: m, - value: m, - } - }) - } else if (interval === 3) { - return quarterList.minuteList.map((m) => { - return { - label: m, - value: m, - } - }) - } else { - // Handle other cases if needed - return min - } + switch (interval) { + case 1: + return [{ label: '00', value: '00' }]; + case 2: + return createOptions(halfList.minuteList); + case 3: + return createOptions(quarterList.minuteList); + case 0: + case undefined: + default: + return createOptions(minuteList); } - } + }; return ( <> diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index b5e5d48a574f..aa35c177489f 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -39,9 +39,8 @@ export const NavButtons = () => { return inputs?.some( (input) => input?.groupGuid === activeItem?.data?.guid, ) - } else { - return false } + return false } const addItem = async () => { diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index 6a13d2fa14e0..4d50d15cf1fb 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -41,48 +41,45 @@ export interface IControlContext { export const ControlContext = createContext({ control: {} as ControlState, - controlDispatch: function (_value: unknown): void { + controlDispatch: (_value: unknown): void => { throw new Error('Function not implemented.') }, applicantTypes: [] as Maybe[]>, documentTypes: [] as Maybe[]>, inputTypes: [] as Maybe[]>, listTypes: [] as Maybe[]>, - setInSettings: function (_value: boolean): void { + setInSettings: (_value: boolean): void => { throw new Error('Function not implemented.') }, inSettings: false, - updateActiveItem: function (_updatedActiveItem?: ActiveItem): void { + updateActiveItem: (_updatedActiveItem?: ActiveItem): void => { throw new Error('Function not implemented.') }, focus: '', - setFocus: function (_value: string): void { + setFocus: (_value: string): void => { throw new Error('Function not implemented.') }, - updateDnD: function (_type: ItemType): void { + updateDnD: (_type: ItemType): void => { throw new Error('Function not implemented.') }, selectStatus: NavbarSelectStatus.OFF, - setSelectStatus: function (_value: NavbarSelectStatus): void { + setSelectStatus: (_value: NavbarSelectStatus): void => { throw new Error('Function not implemented.') }, - formUpdate: function (_updatedForm?: FormSystemForm): void { + formUpdate: (_updatedForm?: FormSystemForm): void => { throw new Error('Function not implemented.') }, inListBuilder: false, - setInListBuilder: function (_value: boolean): void { + setInListBuilder: (_value: boolean): void => { throw new Error('Function not implemented.') }, - updateSettings: function (_updatedForm?: FormSystemForm): void { + updateSettings: (_updatedForm?: FormSystemForm): void => { throw new Error('Function not implemented.') }, - translate: function (_text: string): Promise { + translate: (_text: string): Promise => { throw new Error('Function not implemented.') }, - translationButtons: function ( - _text: string, - _type: ButtonTypes, - ): InputButton[] { + translationButtons: (_text: string, _type: ButtonTypes): InputButton[] => { throw new Error('Function not implemented.') }, }) From 80dae8852eb4398ca812bd3351072629f29e13eb Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 26 Jun 2024 13:05:26 +0000 Subject: [PATCH 071/129] refactor radio button handler --- .../InputSettings/components/ListSettings.tsx | 102 +++++++++--------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index 3cf933689522..ac1fbac10b6e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -70,6 +70,17 @@ export const ListSettings = () => { } } + const onClickRadioHandler = (index: number) => { + radioHandler(index) + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: index === 0 ? 'customList' : 'other', + update: updateActiveItem + } + }) + } + return ( {currentItem.type === 'Dropdown_list' && ( @@ -77,21 +88,12 @@ export const ListSettings = () => { { - controlDispatch({ - type: 'SET_LIST_TYPE', - payload: { - listType: 'customList', - update: updateActiveItem, - }, - }) - radioHandler(0) - }} + onClick={() => onClickRadioHandler(0)} > {}} + onChange={() => { }} checked={radio[0]} /> @@ -100,56 +102,52 @@ export const ListSettings = () => { { - controlDispatch({ - type: 'SET_LIST_TYPE', - payload: { - listType: 'other', - update: updateActiveItem, - }, - }) - radioHandler(1) - }} + onClick={() => onClickRadioHandler(1)} > {}} + onChange={() => { }} checked={radio[1]} /> - )} - {radio[0] && ( - - - - )} - {radio[1] && ( - - { + const listType = getListType(option?.value as number) + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: listType, + update: updateActiveItem, + }, + }) + }} + /> + + ) + } + ) } From c686ba1fc97a3475866ef12dd2afe3c141db57b3 Mon Sep 17 00:00:00 2001 From: andes-it Date: Wed, 26 Jun 2024 13:29:55 +0000 Subject: [PATCH 072/129] chore: nx format:write update dirty files --- .../src/lib/services/services.service.ts | 10 ++- .../InputSettings/components/ListSettings.tsx | 81 +++++++++---------- .../components/Preview/components/List.tsx | 23 ++++-- .../Preview/components/TimeInput.tsx | 15 ++-- 4 files changed, 67 insertions(+), 62 deletions(-) diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index d4947015c955..558f3621cfe1 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -16,7 +16,7 @@ export class FormSystemService { @Inject(LOGGER_PROVIDER) private logger: Logger, private servicesApi: ServicesApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -111,7 +111,9 @@ export class FormSystemService { return response as List } - private async fetchTranslation(input: GetTranslationInput): Promise { + private async fetchTranslation( + input: GetTranslationInput, + ): Promise { const { FORM_SYSTEM_MIDEIND_KEY } = process.env if (!FORM_SYSTEM_MIDEIND_KEY) { throw new Error('Api key for translation service is not configured') @@ -132,7 +134,9 @@ export class FormSystemService { }), }) if (!response.ok) { - throw new Error(`Failed to fetch translation with status: ${response.status}`) + throw new Error( + `Failed to fetch translation with status: ${response.status}`, + ) } return response } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index ac1fbac10b6e..848f4d7e95db 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -76,8 +76,8 @@ export const ListSettings = () => { type: 'SET_LIST_TYPE', payload: { listType: index === 0 ? 'customList' : 'other', - update: updateActiveItem - } + update: updateActiveItem, + }, }) } @@ -87,13 +87,11 @@ export const ListSettings = () => { <> - onClickRadioHandler(0)} - > + onClickRadioHandler(0)}> { }} + onChange={() => {}} checked={radio[0]} /> @@ -101,53 +99,46 @@ export const ListSettings = () => { - onClickRadioHandler(1)} - > + onClickRadioHandler(1)}> { }} + onChange={() => {}} checked={radio[1]} /> - ) - } - { - radio[0] && ( - - - - ) - } - { - radio[1] && ( - - { + const listType = getListType(option?.value as number) + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: listType, + update: updateActiveItem, + }, + }) + }} + /> + + )} + ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index 24858d1eae14..51ba92f1ca3d 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -33,12 +33,15 @@ export const List = ({ currentItem }: Props) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const mapToListItems = (items: any[]): ListItem[] => - items?.map(item => ({ + items?.map((item) => ({ label: item?.label?.is ?? '', value: item?.label?.is ?? '', })) ?? [] - const fetchAndSetList = async (fetcher: () => Promise, dataKey: string) => { + const fetchAndSetList = async ( + fetcher: () => Promise, + dataKey: string, + ) => { try { const { data } = await fetcher() if (!data || !data[dataKey] || !data[dataKey].list) { @@ -59,10 +62,15 @@ export const List = ({ currentItem }: Props) => { setListItems(mapToListItems(currentList)) } else { const fetchMap: Record Promise> = { - 'lond': () => fetchAndSetList(getCountries, 'formSystemGetCountries'), - 'sveitarfelog': () => fetchAndSetList(getMunicipalities, 'formSystemGetMunicipalities'), - 'postnumer': () => fetchAndSetList(getZipCodes, 'formSystemGetZipCodes'), - 'idngreinarMeistara': () => fetchAndSetList(getTradesProfessions, 'formSystemGetTradesProfessions'), + lond: () => fetchAndSetList(getCountries, 'formSystemGetCountries'), + sveitarfelog: () => + fetchAndSetList(getMunicipalities, 'formSystemGetMunicipalities'), + postnumer: () => fetchAndSetList(getZipCodes, 'formSystemGetZipCodes'), + idngreinarMeistara: () => + fetchAndSetList( + getTradesProfessions, + 'formSystemGetTradesProfessions', + ), } const fetcher = fetchMap[type] @@ -90,7 +98,8 @@ export const List = ({ currentItem }: Props) => { required={currentItem?.isRequired ?? false} placeholder={ ListTypePlaceholder[ - currentItem.inputSettings?.listType as keyof typeof ListTypePlaceholder + currentItem.inputSettings + ?.listType as keyof typeof ListTypePlaceholder ] ?? 'Select an option' } /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx index 48044f306bb4..f6512de8cb8a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx @@ -17,23 +17,24 @@ export const TimeInput = ({ currentItem }: Props) => { // 2: Half hour // 3: Quarter const chosenMinuteList = (): { label: string; value: string }[] => { - const createOptions = (list: string[]) => list.map(t => ({ label: t, value: t })); + const createOptions = (list: string[]) => + list.map((t) => ({ label: t, value: t })) - const interval = currentItem?.inputSettings?.interval; + const interval = currentItem?.inputSettings?.interval switch (interval) { case 1: - return [{ label: '00', value: '00' }]; + return [{ label: '00', value: '00' }] case 2: - return createOptions(halfList.minuteList); + return createOptions(halfList.minuteList) case 3: - return createOptions(quarterList.minuteList); + return createOptions(quarterList.minuteList) case 0: case undefined: default: - return createOptions(minuteList); + return createOptions(minuteList) } - }; + } return ( <> From d925e444e063f5acf11b604f1fe4c64100aeed2c Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 26 Jun 2024 13:38:25 +0000 Subject: [PATCH 073/129] refactor: Update ListSettings component to use array for list types and error handling for translation button --- .../InputSettings/components/ListSettings.tsx | 59 ++++++++----------- .../src/lib/utils/getTranslationButtons.ts | 5 +- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index ac1fbac10b6e..2344ee759943 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -52,23 +52,8 @@ export const ListSettings = () => { } const { formatMessage } = useIntl() - - const getListType = (index: number) => { - switch (index) { - case 0: - return 'sveitarfelog' - case 1: - return 'lond' - case 2: - return 'postnumer' - case 3: - return 'idngreinarMeistara' - case 4: - return 'skraningarflokkar' - default: - return 'customList' - } - } + const listTypes = ['sveitarfelog', 'lond', 'postnumer', 'idngreinarMeistara', 'skraningarflokkar'] + const getListType = (index: number) => listTypes[index] || 'customList' const onClickRadioHandler = (index: number) => { radioHandler(index) @@ -127,25 +112,27 @@ export const ListSettings = () => { } { radio[1] && ( - - { + const listType = getListType(option?.value as number) + controlDispatch({ + type: 'SET_LIST_TYPE', + payload: { + listType: listType, + update: updateActiveItem, + }, + }) + }} + /> + + ) } diff --git a/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts b/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts index 69828828e27a..1f05ac32f82c 100644 --- a/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts +++ b/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts @@ -109,7 +109,10 @@ export const getTranslationButtons = ( label: 'Translate', name: 'reader', onClick: async () => { - const translation = await translate(text) + const translation = await translate(text).catch((e) => { + console.error('Translation failed', e) + return text + }) controlDispatch({ type: type, payload: { From d8fcab0917fa06f89e33b3e55f43ac16534ff102 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 26 Jun 2024 13:49:06 +0000 Subject: [PATCH 074/129] refactor: Handle error when fetching translation in FormSystemService --- .../src/lib/services/services.service.ts | 25 +++++++++++-------- .../Preview/components/TimeInput.tsx | 3 --- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index d4947015c955..d68e8b386dd5 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -141,16 +141,21 @@ export class FormSystemService { auth: User, input: GetTranslationInput, ): Promise { - const response = await this.fetchTranslation(input) - if (!response.ok) { - throw new Error('Failed to get translation') + try { + const response = await this.fetchTranslation(input) + if (!response.ok) { + throw new Error('Failed to get translation') + } + const result = await response.json() + return { + translations: result.translations ?? [], + sourceLanguageCode: result.sourceLanguageCode ?? '', + targetLanguageCode: result.targetLanguageCode ?? '', + model: result.model ?? '', + } as Translation + } catch (error) { + handle4xx(error, this.handleError, 'failed to get translation') + return error } - const result = await response.json() - return { - translations: result.translations ?? [], - sourceLanguageCode: result.sourceLanguageCode ?? '', - targetLanguageCode: result.targetLanguageCode ?? '', - model: result.model ?? '', - } as Translation } } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx index 48044f306bb4..534a1fe9d2b7 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx @@ -5,7 +5,6 @@ import { Select, Box, } from '@island.is/island-ui/core' -import { ChangeEvent } from 'react' interface Props { currentItem: FormSystemInput @@ -28,8 +27,6 @@ export const TimeInput = ({ currentItem }: Props) => { return createOptions(halfList.minuteList); case 3: return createOptions(quarterList.minuteList); - case 0: - case undefined: default: return createOptions(minuteList); } From 9215a5eff8f222b751c128afc0f018519a5e5693 Mon Sep 17 00:00:00 2001 From: andes-it Date: Wed, 26 Jun 2024 14:04:53 +0000 Subject: [PATCH 075/129] chore: nx format:write update dirty files --- .../InputSettings/components/ListSettings.tsx | 12 +++++++++--- .../components/Preview/components/TimeInput.tsx | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx index 1a4653a816ff..fb7e09bc8556 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/InputContent/components/InputSettings/components/ListSettings.tsx @@ -52,7 +52,13 @@ export const ListSettings = () => { } const { formatMessage } = useIntl() - const listTypes = ['sveitarfelog', 'lond', 'postnumer', 'idngreinarMeistara', 'skraningarflokkar'] + const listTypes = [ + 'sveitarfelog', + 'lond', + 'postnumer', + 'idngreinarMeistara', + 'skraningarflokkar', + ] const getListType = (index: number) => listTypes[index] || 'customList' const onClickRadioHandler = (index: number) => { @@ -76,7 +82,7 @@ export const ListSettings = () => { { }} + onChange={() => {}} checked={radio[0]} /> @@ -88,7 +94,7 @@ export const ListSettings = () => { { }} + onChange={() => {}} checked={radio[1]} /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx index aa927768316e..8464db5da228 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/TimeInput.tsx @@ -27,7 +27,7 @@ export const TimeInput = ({ currentItem }: Props) => { case 2: return createOptions(halfList.minuteList) case 3: - return createOptions(quarterList.minuteList); + return createOptions(quarterList.minuteList) default: return createOptions(minuteList) } From 351c393e75c96f1198198cd042a2c20ca6884310 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 26 Jun 2024 15:13:06 +0000 Subject: [PATCH 076/129] refactor: Improve conditional logic in NavButtons component --- .../src/components/NavComponent/components/NavButtons.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index aa35c177489f..f37a62523055 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -35,7 +35,8 @@ export const NavButtons = () => { const { type } = activeItem if (type === 'Step') { return groups?.some((group) => group?.stepGuid === activeItem?.data?.guid) - } else if (type === 'Group') { + } + if (type === 'Group') { return inputs?.some( (input) => input?.groupGuid === activeItem?.data?.guid, ) From 90451afe6c24dc7933da6af4eae0e139d047f740 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Wed, 26 Jun 2024 15:44:26 +0000 Subject: [PATCH 077/129] lint --- .../MainContent/components/Preview/components/List.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index 51ba92f1ca3d..b4448a4c4a71 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -1,4 +1,4 @@ -import { FormSystemInput, FormSystemListItem } from '@island.is/api/schema' +import { FormSystemInput } from '@island.is/api/schema' import { useEffect, useState } from 'react' import { Select } from '@island.is/island-ui/core' import { @@ -98,8 +98,8 @@ export const List = ({ currentItem }: Props) => { required={currentItem?.isRequired ?? false} placeholder={ ListTypePlaceholder[ - currentItem.inputSettings - ?.listType as keyof typeof ListTypePlaceholder + currentItem.inputSettings + ?.listType as keyof typeof ListTypePlaceholder ] ?? 'Select an option' } /> From cac8dd78ea0f2acd6b29cc5063d03708b4b78cce Mon Sep 17 00:00:00 2001 From: andes-it Date: Wed, 26 Jun 2024 16:03:08 +0000 Subject: [PATCH 078/129] chore: nx format:write update dirty files --- .../MainContent/components/Preview/components/List.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx index b4448a4c4a71..b84a9bae3a72 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/components/List.tsx @@ -98,8 +98,8 @@ export const List = ({ currentItem }: Props) => { required={currentItem?.isRequired ?? false} placeholder={ ListTypePlaceholder[ - currentItem.inputSettings - ?.listType as keyof typeof ListTypePlaceholder + currentItem.inputSettings + ?.listType as keyof typeof ListTypePlaceholder ] ?? 'Select an option' } /> From c19546e65d4b146189900272ffd21d493f0d5176 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Tue, 2 Jul 2024 12:02:59 +0000 Subject: [PATCH 079/129] Initialized a react app in apps/portals/form-system and a ui library in libs/portals/form-system --- apps/portals/form-system/.babelrc | 11 + apps/portals/form-system/.eslintrc.json | 18 + apps/portals/form-system/jest.config.ts | 11 + apps/portals/form-system/project.json | 90 ++ .../form-system/src/app/App.module.scss | 1 + apps/portals/form-system/src/app/App.spec.tsx | 25 + apps/portals/form-system/src/app/App.tsx | 53 ++ .../form-system/src/app/nx-welcome.tsx | 845 ++++++++++++++++++ apps/portals/form-system/src/assets/.gitkeep | 0 .../src/environments/environment.prod.ts | 3 + .../src/environments/environment.ts | 6 + apps/portals/form-system/src/favicon.ico | Bin 0 -> 15086 bytes apps/portals/form-system/src/main.tsx | 14 + apps/portals/form-system/src/styles.scss | 1 + apps/portals/form-system/tsconfig.app.json | 24 + apps/portals/form-system/tsconfig.json | 20 + apps/portals/form-system/tsconfig.spec.json | 21 + apps/portals/form-system/webpack.config.js | 9 + libs/portals/form-system/ui/.eslintrc.json | 18 + libs/portals/form-system/ui/README.md | 7 + libs/portals/form-system/ui/jest.config.ts | 11 + libs/portals/form-system/ui/project.json | 36 + libs/portals/form-system/ui/src/index.ts | 1 + .../lib/libs/portals/form-system/ui.spec.ts | 7 + .../ui/src/lib/libs/portals/form-system/ui.ts | 3 + libs/portals/form-system/ui/tsconfig.json | 16 + libs/portals/form-system/ui/tsconfig.lib.json | 11 + .../portals/form-system/ui/tsconfig.spec.json | 14 + nx.json | 1 + package.json | 7 + tsconfig.base.json | 6 + yarn.lock | 530 ++++++++++- 32 files changed, 1805 insertions(+), 15 deletions(-) create mode 100644 apps/portals/form-system/.babelrc create mode 100644 apps/portals/form-system/.eslintrc.json create mode 100644 apps/portals/form-system/jest.config.ts create mode 100644 apps/portals/form-system/project.json create mode 100644 apps/portals/form-system/src/app/App.module.scss create mode 100644 apps/portals/form-system/src/app/App.spec.tsx create mode 100644 apps/portals/form-system/src/app/App.tsx create mode 100644 apps/portals/form-system/src/app/nx-welcome.tsx create mode 100644 apps/portals/form-system/src/assets/.gitkeep create mode 100644 apps/portals/form-system/src/environments/environment.prod.ts create mode 100644 apps/portals/form-system/src/environments/environment.ts create mode 100644 apps/portals/form-system/src/favicon.ico create mode 100644 apps/portals/form-system/src/main.tsx create mode 100644 apps/portals/form-system/src/styles.scss create mode 100644 apps/portals/form-system/tsconfig.app.json create mode 100644 apps/portals/form-system/tsconfig.json create mode 100644 apps/portals/form-system/tsconfig.spec.json create mode 100644 apps/portals/form-system/webpack.config.js create mode 100644 libs/portals/form-system/ui/.eslintrc.json create mode 100644 libs/portals/form-system/ui/README.md create mode 100644 libs/portals/form-system/ui/jest.config.ts create mode 100644 libs/portals/form-system/ui/project.json create mode 100644 libs/portals/form-system/ui/src/index.ts create mode 100644 libs/portals/form-system/ui/src/lib/libs/portals/form-system/ui.spec.ts create mode 100644 libs/portals/form-system/ui/src/lib/libs/portals/form-system/ui.ts create mode 100644 libs/portals/form-system/ui/tsconfig.json create mode 100644 libs/portals/form-system/ui/tsconfig.lib.json create mode 100644 libs/portals/form-system/ui/tsconfig.spec.json diff --git a/apps/portals/form-system/.babelrc b/apps/portals/form-system/.babelrc new file mode 100644 index 000000000000..88ee27b140c6 --- /dev/null +++ b/apps/portals/form-system/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": [ + [ + "@nx/react/babel", + { + "runtime": "automatic" + } + ] + ], + "plugins": [] +} diff --git a/apps/portals/form-system/.eslintrc.json b/apps/portals/form-system/.eslintrc.json new file mode 100644 index 000000000000..75b85077debb --- /dev/null +++ b/apps/portals/form-system/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["plugin:@nx/react", "../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/portals/form-system/jest.config.ts b/apps/portals/form-system/jest.config.ts new file mode 100644 index 000000000000..163ef9743ee4 --- /dev/null +++ b/apps/portals/form-system/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: 'portals-form-system', + preset: '../../../jest.preset.js', + transform: { + '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', + '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }], + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + coverageDirectory: '../../../coverage/apps/portals/form-system', +} diff --git a/apps/portals/form-system/project.json b/apps/portals/form-system/project.json new file mode 100644 index 000000000000..113d3840d36a --- /dev/null +++ b/apps/portals/form-system/project.json @@ -0,0 +1,90 @@ +{ + "name": "portals-form-system", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/portals/form-system/src", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/webpack:webpack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "compiler": "babel", + "outputPath": "dist/apps/portals/form-system", + "index": "apps/portals/form-system/src/index.html", + "baseHref": "/", + "main": "apps/portals/form-system/src/main.tsx", + "tsConfig": "apps/portals/form-system/tsconfig.app.json", + "assets": [ + "apps/portals/form-system/src/favicon.ico", + "apps/portals/form-system/src/assets" + ], + "styles": ["apps/portals/form-system/src/styles.scss"], + "scripts": [], + "isolatedConfig": true, + "webpackConfig": "apps/portals/form-system/webpack.config.js" + }, + "configurations": { + "development": { + "extractLicenses": false, + "optimization": false, + "sourceMap": true, + "vendorChunk": true + }, + "production": { + "fileReplacements": [ + { + "replace": "apps/portals/form-system/src/environments/environment.ts", + "with": "apps/portals/form-system/src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false + } + } + }, + "serve": { + "executor": "@nx/webpack:dev-server", + "defaultConfiguration": "development", + "options": { + "buildTarget": "portals-form-system:build", + "hmr": true + }, + "configurations": { + "development": { + "buildTarget": "portals-form-system:build:development" + }, + "production": { + "buildTarget": "portals-form-system:build:production", + "hmr": false + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/portals/form-system/**/*.{ts,tsx,js,jsx}"] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "apps/portals/form-system/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": [] +} diff --git a/apps/portals/form-system/src/app/App.module.scss b/apps/portals/form-system/src/app/App.module.scss new file mode 100644 index 000000000000..7b88fbabf87b --- /dev/null +++ b/apps/portals/form-system/src/app/App.module.scss @@ -0,0 +1 @@ +/* Your styles goes here. */ diff --git a/apps/portals/form-system/src/app/App.spec.tsx b/apps/portals/form-system/src/app/App.spec.tsx new file mode 100644 index 000000000000..3db3e88d35a2 --- /dev/null +++ b/apps/portals/form-system/src/app/App.spec.tsx @@ -0,0 +1,25 @@ +import { render } from '@testing-library/react' + +import { BrowserRouter } from 'react-router-dom' + +import App from './App' + +describe('App', () => { + it('should render successfully', () => { + const { baseElement } = render( + + + , + ) + expect(baseElement).toBeTruthy() + }) + + it('should have a greeting as the title', () => { + const { getByText } = render( + + + , + ) + expect(getByText(/Welcome portals-form-system/gi)).toBeTruthy() + }) +}) diff --git a/apps/portals/form-system/src/app/App.tsx b/apps/portals/form-system/src/app/App.tsx new file mode 100644 index 000000000000..2f8f0eb2d0b0 --- /dev/null +++ b/apps/portals/form-system/src/app/App.tsx @@ -0,0 +1,53 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import styles from './App.module.scss' + +import NxWelcome from './nx-welcome' + +import { Route, Routes, Link } from 'react-router-dom' + +export function App() { + return ( +
+ + + {/* START: routes */} + {/* These routes and navigation have been generated for you */} + {/* Feel free to move and update them to fit your needs */} +
+
+
+
+
    +
  • + Home +
  • +
  • + Page 2 +
  • +
+
+ + + This is the generated root route.{' '} + Click here for page 2. +
+ } + /> + + Click here to go back to root page. +
+ } + /> + + {/* END: routes */} +
+ ) +} + +export default App diff --git a/apps/portals/form-system/src/app/nx-welcome.tsx b/apps/portals/form-system/src/app/nx-welcome.tsx new file mode 100644 index 000000000000..71fa6ff3f0cf --- /dev/null +++ b/apps/portals/form-system/src/app/nx-welcome.tsx @@ -0,0 +1,845 @@ +/* + * * * * * * * * * * * * * * * * * * * * * * * * * * * * + This is a starter component and can be deleted. + * * * * * * * * * * * * * * * * * * * * * * * * * * * * + Delete this file and get started with your project! + * * * * * * * * * * * * * * * * * * * * * * * * * * * * + */ +export function NxWelcome({ title }: { title: string }) { + return ( + <> + - diff --git a/apps/native/app/android/app/src/prod/AndroidManifest.xml b/apps/native/app/android/app/src/prod/AndroidManifest.xml index 7fb79e9924d4..afbc625e51d5 100644 --- a/apps/native/app/android/app/src/prod/AndroidManifest.xml +++ b/apps/native/app/android/app/src/prod/AndroidManifest.xml @@ -26,6 +26,18 @@ + + + + + + + + + + + + diff --git a/apps/native/app/android/link-assets-manifest.json b/apps/native/app/android/link-assets-manifest.json index d9434d82b38c..96ae18202a1b 100644 --- a/apps/native/app/android/link-assets-manifest.json +++ b/apps/native/app/android/link-assets-manifest.json @@ -38,7 +38,7 @@ "sha1": "8bf01afac8fc3e072eb36667374393b8566a044d" }, { - "path": "assets/fonts/IBMPlexSans-Regular.ttf", + "path": "assets/fonts/IBMPlexSans.ttf", "sha1": "ad38f2d6870ca73533f36bdb958cd8083a49c1a8" }, { diff --git a/apps/native/app/assets/fonts/IBMPlexSans.ttf b/apps/native/app/assets/fonts/IBMPlexSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..702c637f51ede56c3fbfc5023991068041d19927 GIT binary patch literal 181492 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 zRm^deE>TRCFBundlePackageType APPL CFBundleShortVersionString - 1.3.1 + 1.4.5 CFBundleSignature ???? CFBundleURLTypes @@ -55,7 +55,7 @@ Used for license scanning capabilities UIAppFonts - IBMPlexSans-Regular.ttf + IBMPlexSans.ttf IBMPlexSans-Italic.ttf IBMPlexSans-Bold.ttf IBMPlexSans-BoldItalic.ttf @@ -88,6 +88,8 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown + UIUserInterfaceStyle + Light UIViewControllerBasedStatusBarAppearance ITSAppUsesNonExemptEncryption diff --git a/apps/native/app/ios/IslandApp/IslandApp.entitlements b/apps/native/app/ios/IslandApp/IslandApp.entitlements index 710049617b26..2cc8fb471c65 100644 --- a/apps/native/app/ios/IslandApp/IslandApp.entitlements +++ b/apps/native/app/ios/IslandApp/IslandApp.entitlements @@ -7,6 +7,7 @@ com.apple.developer.associated-domains webcredentials:island.is + applinks:island.is keychain-access-groups diff --git a/apps/native/app/ios/Podfile b/apps/native/app/ios/Podfile index 515bcc2addd1..7bdceb856ad4 100644 --- a/apps/native/app/ios/Podfile +++ b/apps/native/app/ios/Podfile @@ -10,6 +10,7 @@ platform :ios, '13.4' prepare_react_native_project! $RNFirebaseAnalyticsWithoutAdIdSupport = true +$VCEnableLocation = false linkage = ENV['USE_FRAMEWORKS'] if linkage != nil diff --git a/apps/native/app/ios/Podfile.lock b/apps/native/app/ios/Podfile.lock index a193995d9230..3d5d52150dc7 100644 --- a/apps/native/app/ios/Podfile.lock +++ b/apps/native/app/ios/Podfile.lock @@ -33,7 +33,7 @@ PODS: - ExpoModulesCore - ExpoFileSystem (17.0.1): - ExpoModulesCore - - ExpoFont (12.0.9): + - ExpoFont (12.0.10): - ExpoModulesCore - ExpoHaptics (13.0.1): - ExpoModulesCore @@ -1175,6 +1175,8 @@ PODS: - React-Core - react-native-cookies (6.2.1): - React-Core + - react-native-date-picker (5.0.4): + - React-Core - react-native-mmkv-storage (0.9.1): - MMKV (= 1.2.13) - React-Core @@ -1550,7 +1552,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNShare (7.1.1): + - RNShare (10.2.1): - React-Core - RNSVG (15.2.0): - React-Core @@ -1620,6 +1622,7 @@ DEPENDENCIES: - react-native-app-auth (from `../node_modules/react-native-app-auth`) - react-native-blob-util (from `../node_modules/react-native-blob-util`) - "react-native-cookies (from `../node_modules/@react-native-cookies/cookies`)" + - react-native-date-picker (from `../node_modules/react-native-date-picker`) - react-native-mmkv-storage (from `../node_modules/react-native-mmkv-storage`) - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-passkey (from `../node_modules/react-native-passkey`) @@ -1800,6 +1803,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-blob-util" react-native-cookies: :path: "../node_modules/@react-native-cookies/cookies" + react-native-date-picker: + :path: "../node_modules/react-native-date-picker" react-native-mmkv-storage: :path: "../node_modules/react-native-mmkv-storage" react-native-netinfo: @@ -1918,7 +1923,7 @@ SPEC CHECKSUMS: Expo: 88047e6d12a8113a18887b6ebd775fccfcdbf3c9 ExpoAsset: 323700f291684f110fb55f0d4022a3362ea9f875 ExpoFileSystem: 80bfe850b1f9922c16905822ecbf97acd711dc51 - ExpoFont: e7f2275c10ca8573c991e007329ad6bf98086485 + ExpoFont: 00756e6c796d8f7ee8d211e29c8b619e75cbf238 ExpoHaptics: 5a3a88971af384255baf2504f38b41189cec6984 ExpoKeepAwake: 3b8815d9dd1d419ee474df004021c69fdd316d08 ExpoLocalAuthentication: 9e02a56a4cf9868f0052656a93d4c94101a42ed7 @@ -1978,6 +1983,7 @@ SPEC CHECKSUMS: react-native-app-auth: 63fa4e58c5bd29aeb974d3a06a23c5858322d533 react-native-blob-util: 18b510205c080a453574a7d2344d64673d0ad9af react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c + react-native-date-picker: 6891317e850deae5b53d51355226e07a495aba61 react-native-mmkv-storage: cfb6854594cfdc5f7383a9e464bb025417d1721c react-native-netinfo: bdb108d340cdb41875c9ced535977cac6d2ff321 react-native-passkey: 29ff814a83dfd4311478498e71a801dce68043ac @@ -2025,13 +2031,13 @@ SPEC CHECKSUMS: RNKeychain: ff836453cba46938e0e9e4c22e43d43fa2c90333 RNQuickAction: 6d404a869dc872cde841ad3147416a670d13fa93 RNReanimated: f9192536fa8a312c737eaf15c905f78831193ef1 - RNShare: a22398d8d02336133e28bf8b6e0b47b31abade41 + RNShare: 0fad69ae2d71de9d1f7b9a43acf876886a6cb99c RNSVG: 43b64ed39c14ce830d840903774154ca0c1f27ec SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 - VisionCamera: 104de00dce2e04dec51bfb6027eff0312fa3174e + VisionCamera: 2cffcbac033cb5e2fa344214bd7ccbf7cf065663 Yoga: 950bbfd7e6f04790fdb51149ed51df41f329fcc8 -PODFILE CHECKSUM: 6edb7e5e876d07218fb4a9d2c4413758111b9710 +PODFILE CHECKSUM: 32baec0ab08102e57ab0047494b9222c59bf4afe COCOAPODS: 1.15.2 diff --git a/apps/native/app/ios/link-assets-manifest.json b/apps/native/app/ios/link-assets-manifest.json index d9434d82b38c..96ae18202a1b 100644 --- a/apps/native/app/ios/link-assets-manifest.json +++ b/apps/native/app/ios/link-assets-manifest.json @@ -38,7 +38,7 @@ "sha1": "8bf01afac8fc3e072eb36667374393b8566a044d" }, { - "path": "assets/fonts/IBMPlexSans-Regular.ttf", + "path": "assets/fonts/IBMPlexSans.ttf", "sha1": "ad38f2d6870ca73533f36bdb958cd8083a49c1a8" }, { diff --git a/apps/native/app/package.json b/apps/native/app/package.json index 71f77cbd3b46..6fdecceb6f9b 100644 --- a/apps/native/app/package.json +++ b/apps/native/app/package.json @@ -52,11 +52,13 @@ "@react-native/metro-config": "0.74.87", "@react-native/typescript-config": "0.74.87", "apollo3-cache-persist": "0.15.0", + "compare-versions": "6.1.1", "configcat-js": "7.0.0", "dynamic-color": "0.3.0", "expo": "51.0.25", "expo-file-system": "17.0.1", "expo-haptics": "13.0.1", + "expo-linking": "6.3.1", "expo-local-authentication": "14.0.1", "expo-notifications": "0.28.9", "intl": "1.2.5", @@ -68,6 +70,7 @@ "react-native-app-auth": "7.2.0", "react-native-blob-util": "0.19.9", "react-native-code-push": "8.2.2", + "react-native-date-picker": "5.0.4", "react-native-device-info": "10.3.0", "react-native-dialogs": "1.1.2", "react-native-gesture-handler": "2.17.1", @@ -84,7 +87,7 @@ "react-native-quick-actions": "0.3.13", "react-native-quick-base64": "2.1.2", "react-native-reanimated": "3.12.1", - "react-native-share": "7.1.1", + "react-native-share": "10.2.1", "react-native-spotlight-search": "2.0.0", "react-native-svg": "15.2.0", "react-native-vision-camera": "4.5.1", diff --git a/apps/native/app/src/assets/icons/download.png b/apps/native/app/src/assets/icons/download.png new file mode 100644 index 0000000000000000000000000000000000000000..44b12a8b518f4e0f27f3c42a0d0da133e7d6808d GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^fkrr7srqa#=R2*1rHerxO|_%<=~{+z+BMK zBEq_WL1h6$5GxOt*21X`EmjfV63wd_K%w=IrpH z+(XgN#(H66_Wvf~wN1Of?NgU2SduIA(&>&%R`-HyzY>ohdpRMTU;m9#R^i(Di5qIJ zT}w+pUu>8pv}on#1-~Zx=ZCXRVS4rQ^ZSfjx81ki{rHA&!OLILPgqw4F@!bFF?l)1 ywam%r>xwB4e+Su3X8W$)_|kXIRJB&cQszl_Y-$cV#CHKb#Ng@b=d#Wzp$PyS>~ux| literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/icons/download@2x.png b/apps/native/app/src/assets/icons/download@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1fdfcc7a6bfffb46bd7e156bd14b8358d5a245ff GIT binary patch literal 460 zcmV;-0WTJA@8s8Ys#49a1Sj$g_13b-*ASi9K zq<7!PjLLvo9`^FUhFB)Z{sfYZk0gM3C}ZP{YJGE^9ZqQw|2yXTM7wp$&YA|{s-DmX zLFB#I_uF3-LaLs4u7^PO0m!Zi8fR#MRB6@ol#^NGIy6(K&v2DL0`%vG%qvXkz-7cg z)FcArLmY!37oZHn2gw8wrPst92&Q7pR9!KhZXUwetIU7dic2K^<2oX%=&x^95yytD zKPdQ9Gb4kIy7ym(GojUB4>PdmfB|I^|L-YYRZxF&ntB@SSgwKq0000UBFtl2zGaT?WEPUC2nS77qA9paEgttQv%ucTH8Qb z;zmLRtPOo5k)6PXrFEbzaU&rCi*R2#(=1XaK)6Or+&$Pj5jx0=bOI*?Pq%NUIuZ52 zSL<1&ezJhz{uO&H5^Mf;A|UvQ6UQQlI1>>31v|ZnQvtzm#6A{rE+F_%JCw*ZmnRP7B8y}TImP)|mD|=_*TL?=p7BRBl}0S!A6dRrzTZ{b d9bX{Of^S)2!X0H`NE`qF002ovPDHLkV1f?73DE!m literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/icons/external-open.png b/apps/native/app/src/assets/icons/external-open.png deleted file mode 100644 index 2dcf43c851bd1537db330c11bc77b5f247952ee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{y9$<$B+ufy}^yVO$Gvc%=jK~u28Jz@%4KPAi4D|+$6NlfSe|NU#v|3TTM=t} zvv7iQ*?GUFxu<5Beio3k=ngLD+M0A$dfqLo)cCkYb+7etx9{`*^!jSLc6aG*F0qoh z6-6J^3QxY7-89ozX8yr|n>TjNb>!AeS*x@A;nTbhAGLmk7{``1hIY*yhHINNg=UCF znaD((d@tP>cE_o8@$XlkjYaRcoowZDGpwAdQUHx3vIVCg! E0N#jmKL7v# diff --git a/apps/native/app/src/assets/icons/external-open@2x.png b/apps/native/app/src/assets/icons/external-open@2x.png deleted file mode 100644 index dd8c57026d39e7eb222b6a06f2dbaa802cbc7ea9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmV-?0fYXDP) zO^5|+J;?|P8QIsJ4a|?%?AXshn*cqgau6LuUY zU6!~HI0MeWx((2>jqnVn{N{MdhKaZ002B7+1~x$mS+UCdK8qR1Nm>RdTn~g-%9Bjo au?pV9X>?xzkKN(`0000Vv5j1Y)~V^i%82C`v`@=CkT;A70d`_6Fr<3QTal+5g=UGP9ee+ zI6Ok(45T9CW1=jZ(Hv+ty^e1RN%6F2EUUY{egt9~u*Dm|aIvXaAzk;np0aqtQ{Kgd zxvq-dz#ZN5Lldq%fDHsDd>m=ZRpL{T@b#pw*}kT+n8hz(7kx+Q#5bU7Ku(+eA5A*UwXcHcUdjrj_CF;& z3IFBP;zAWV1EJ{*gr+kPnlm?GE3D`cm4R$0KglC?t|_8{)6Mw`UrnnDWn%*0*v2xm zJiz6SOBTNy0XK>Us(P000;W1^@s654Bdt00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPTR2j}Mf(8|5&Eu;c(zPng z+NQh=??C~=jK>o)H4AdgzL-6-dV(udvjjgf+XV$OWpWGr2aUq%Bvt4S-%ecf*R%nZ z;yd32T!AHZ&<6YR*cZNuU5X8lTeQQy=vci269bY>>+q&^aSluq+kVOGVZY_>ix0_U>F-H? n+f$Q^0r5Y^9`UHb1w=gGFXG-6d;00000NkvXXu0mjfbga)6 literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/icons/health@2x.png b/apps/native/app/src/assets/icons/health@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef3f8c0af362aacfa04d81a871e5673302f92d1 GIT binary patch literal 1009 zcmV6$k3M!P1wK zp0&~S3>!!wRw)D!Zp2r8kBX;QIXp2LZ9s}0nc&|AES1XsGsN_K?e8LfV@YWgWDQbNbZxUeFxwP~Ex|C;hcl0P& zpleNBqROKr!mocs!!vAj3L)$o0-fm5aE*17vRJh{4Xja!gBvDDmO5Lei2=DDp2@r) z&Vg~y1pDw`(fCE^c4slxay=#J_t(&rksgXQu{M3N+|WG}XTpDJ-)>_7v0bF8DL04R zXJwx3wPiSSR@_*Ezo0E_`~~a}^?~~|$bJ*~v1(0h4=CJ)}Isq0aZpw z%Rj=Y(bnkic!t{uWu2HG;PiYdN*mEPgWHI=VmBbJ;Pl9iCM|z-8^OCuK5Z2HT*9f~ zwsUt{W8YR~5#Pdo5mL<}&n}T|Q$*_&sX}9@u`S=jsnBp+lsE1(%Qq7=ZCjVR(<3-G z+-78+Qgo%*C01<&#V0BYnHi127sXV^L|YN;bCsC?u-gD#4fENEP}+Z&=#o4A2yzxc zxOa(=>*)hZ&5LKceK~fBPT9T7jH_IU2ul>$A$4jDIZRB&*MQ$3XJM(lL1b9$#9{Q- ztvGRT7$}(_Q#f>+tF00O9e$h$$Qfq$@2=rH{q|hYS+*pts}>%`l26JjCnXSg@pS{~ zvXc@s-#U;q%K#E%O*_`T&`_C$2&PR|MbO*`Vyt8Qe=D@qCb*n%LT#SqsB-8$h}Ecx zns!DIpJ*8&f6$$5OzMQ!3^ZIzu7IZF*_|2nT+4Cw(hqggCPx=wK0I$?|RDl zCAl8h5Z{8Qgz{TvKvcZrU1$m|Y41)Fiuu_!BJnmcCv9qE$Ur&+hC(JaG70QKH%1UH zAJ5bLl&#og2FL)?HgXTTGa|>Ahs|lZfUD@<2*T}NL?`Z3<}gMO9LP-}KTkNFzc^Un f*wfR~^X~WuI#W%kAhhfx00000NkvXXu0mjfDUQ#? literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/icons/health@3x.png b/apps/native/app/src/assets/icons/health@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..79b80f74004b8ebd74ede2590c464472028ad9dc GIT binary patch literal 1457 zcmV;i1y1^jP)xHzPlf;AZ19>1C=*~NC`^FU4p2G)=>%;DpfM9rCLl~eH^59l7yyeq%Xt#Z`f15= z0{T2po+P&AlfRbE(wz*DNF)-8L?V$$41_@}3O<7qc#Xea0*6!l&hRs9_pb5th}P)y z6+W;B2!U)pMH@Aop{=~NlkM258e4$2YIuN>ts#JLkqVxnIG0%20=A;qpo>`H1zh6= zRN#uZ5oGI~hb_9w(%V+2cnIhGy?2GXkXUzc&u*P-&2OWrtm z4R(>9D8@E5e1zDLPmsGEA3l{ZQY%`mn0G393icD`y=^61!5EO=DR_ky&e85_G&|4? zKD%)JK-Vr3ga7daW&<%1!mMCSsMXH#X6!zU82qO@+}_=IZ$cRqb~qra&Off7`nWya z{&A8>4!DT)L;9b=-$5q*|D`+7MI_k=4G(%97Mb+F(j90QiS-K4+5zVAQt8iNa;n`k{?oq~D4$3yT&?orYRj{{WFh2%(a;p22Y=*Z(m*R08l>`k!IH&fypl z{xp-eel-IkbfzbJq>Vc$2oq=csA1a3eU$RkegA1YA?>~n0+ zhuQ7K$`?6)?Ui5{x~k-Ln}*(H-RAMf4e$D(b`Rc(&S60}N(=WNonnd1p+pF_3og2d zZdQT^!y}V*ljN(UtywG7w8Mh!nx;(JGboQYTqKbvQ?1B2Z5`!w2>bnTj>np$?&(4x z|D(#|)AAfzrZWZl^-7CFj$Hixk> zEifxt(C{RlNQ7P}ztw3zm=>OLoJN(bfI#AkMCgR_T+Hc&c+8VPDkmL9AR@j<#6EU`T<2q7zTEsQS`Ve%j1{gP`OCY0Lp7dWA= z8-ZrZ@4`)lkw_#GiNuCK6jS`XMJ(Ag00000 LNkvXXu0mjff9YB96ou$TL z5tDnIYFKLP+#A=VeKH$mly?YzR&CW>W+iA7u<54^nRX2*|X1V z>-7qa3*IR`nt$W>1yx^*(us?f{w-?Oyg0#o$wkey<63g;^~z@!xgFBsl8|!>3(b?- S_Cp%zO$JX_KbLh*2~7auM|wyA literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/icons/options@2x.png b/apps/native/app/src/assets/icons/options@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fd2ed7f0fbddd9f439de7d095cdc2437f685f59e GIT binary patch literal 452 zcmV;#0XzPQP)GN2+~sO4avCv7B=p z-^nNY=>S3qAqEnhf?O6zai_gZpAr>zD3THZ%pbs`tkvNc?JYXiQlDpRk}W)$H-INu z;v1i%5!3MDrTs3*0 zOQv3Y9W^JxeLskF@KJ^Ti^Df}3gx;BX_OSY)pq&&=1QT~=AzQE;+PbQNiHj0@ndvc zaIH@6;X#TysZSWuJZ_K8E{DeM>3q$pF0xG9Rg`Be*if{!c%BMJ!2s(fQj{t z1^)md=ot(CTF9nnEJV;kA$rCFwNQ;k&sdmD3q{Z~7W}nP1U+NHa*<`Ao*}FY`NO)< uUsx9khIOG9)`h%aU1$jFLWB@<+57;m@z6g5p6#6g000051~P(7%D1>SDOw;N10{BV zBh17oA1hj{q;7)L+#w+G7-(XDKxd5)i??E=1p;w|7?|1_nixkhxG82^ApA4vgLP}Y zE41$%-%4s!dzSJ!-KsH|%dNkK57nS@YdtaVg8_q9`YJD5KEjx7$rr zV_ut2Rn^r?EGcGA|BT~EA4+B=-(RsSIz}C91#xK5HrbP31~1VP)dot7wfPx+L?8F} z=n}IfI@A;^V@#`c$S=}v`gJGLiYY{T^BPugGig-Pej&o%_ToJq3WQiMd zj0gzlD5`&wJFMU6BNoS1VUPAUs}_GYj&vJS+L1ORif4szKlF5l zK60>#qA3KrOk?ig;y8nni&K&A(jPitMA2!?FEm|Bk6+#Nn6QpwB95Y=qgahb^IYU_ zRoO<@ylWE$?L`z5n~3?}{7+HI@e`^?fwM0NA>=v397PYzQS`u9&mNeg=slee<|x*{ z97X0RGDmSwn4`!X#afu7xG!`RJupYn19KD!A%qY@2qEO~`~yUL9jX_Y9uNQk002ov JPDHLkV1hg$Q`rCj literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/illustrations/digital-services-m1-dots.png b/apps/native/app/src/assets/illustrations/digital-services-m1-dots.png new file mode 100644 index 0000000000000000000000000000000000000000..12acfb1ff9f54e2f9c8660c1cf62fdf524189130 GIT binary patch literal 22359 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 An*aa+ literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/illustrations/digital-services-m1-dots@2x.png b/apps/native/app/src/assets/illustrations/digital-services-m1-dots@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f663e415ec126af9153a98e88a2ed8971caf6c57 GIT binary patch literal 62099 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%0A}0OlK|F-T|w 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 literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/illustrations/le-company-s2x.png b/apps/native/app/src/assets/illustrations/le-company-s2x.png deleted file mode 100644 index 3e8d220ad4faf1380fb6d6f90b65678544ea88e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8665 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 Q{?98^Nkg$#!948$0QYM1X#fBK diff --git a/apps/native/app/src/assets/illustrations/le-jobs-s2.png b/apps/native/app/src/assets/illustrations/le-jobs-s2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb02a665b693bb2aff2ff8ad8bb09a63c77d348c GIT binary patch literal 3849 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 LNkvXXu0mjf9kDiX literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/illustrations/le-jobs-s2@2x.png b/apps/native/app/src/assets/illustrations/le-jobs-s2@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3bc11bf1c5651d0f1a09d9bb0ea3befb5f039a GIT binary patch literal 8777 zcmV-PBDUR$P)K(uK~#7F?Ok1L z9M^R|_by4vvSY2>IJJ#9S|upz7KlUv4T?5RO{MKa+6PlefTV^KEt3>z9O4(oUXzefPkFgZ%3yqQbAQpm>mL` zIWRlXfQWc>>)~A*bdBzhNWCeJ?{wHZI$g$_GJaO_ARz$s)S;6TlMn+)@@OsgYYk)IA8Tz`=&7U$k{eP439)s<4Y*AxczIzR zyt7yezO8|O@eC+^Y^20eq<*XK>>z~J6NjFgs4aaDUFj_?j(~>Q$4^%GK@Z1S(qh_? zVZGGwp4&8>zb@d0;^nBLG}<1gH0l>akOKq>@rQTJ!y~`dz%>HC^v*Vi;pH16aB_Y< zyn17#j4zDi^W#kguzPE*PLf0jeQc?!>6sAtd+~RTBH314#NAsD??FON;`_@Rhc$fU z?nU_E#x@^oqb1-6Zw$k0*JK5cZ7)7G2?-(dk|IcmkCm^$U*Zp)WQ~6s69WWZl=OGv ztpM=~66AR#$SXI7;WrDN*8~wnYyA{}yold$fS>Gv5cs)S6#F}tySnMUO)Vb71FF*F zkKEmYKe($6>m=|o;$dkN5@Mk(^ud=#Xie&ePFA--Ldd+NaD*7U^D2C7;}yIRfmhcf zgWv~_B>Mg9TjKqT-s7Xnd1ahX>cdL=WHAsm4 zy%1ve==3NULX_XPp$#9ue-WjF7RnxiA*wKv0)PMI7X6S=gIP!r5;6|-2KIu~6L=!) zKWw}Urq13i$cEs>7ZQ1ai-7ObLfYrdLMXc+Z6XXlIgcyl2=VdXz6SsBflKhY_g;ZN z-qeK3hDCb1f?rluN*rMu!eDmMzuy6}NgN^m1Z{_hH@8p{X#TxcI(Wx}Rt1q5etN+g z#i&IfLFCH&z}20^HQq&!|8(O#{6+a1tS|AksQIcC#~c*$y`=fP^9i!CXhICH!65SGI8YM=zOLdk8;Nd54;TWCYHY4KSa@RvDq;+yO- zL8A%q^_Pd}Zhgc^pE@Lj+y$>tWLI&O_v4wb+%?pOPrm0WE_4gnzz8mkSrlHZpdo6F zQ}Et{w@3)6oxPnsgnQ5)_{{zDNDc}0YbAK`Y6)JOFLfo$U)|S2@4_f9B7w1Y%=Z%^ zzc=6B}<7zbIExf4!IE9ftR9SQP6^L3h_KED=asNn<4efG=sx`-B%eAy&BeT|%|--FgWw zH~H6YKQud$sF7)oD(6@#HSiBUFf2Kg+~F}?_{5ix7^;ek_8_iq#l;Tzind;iA&sz( zBoT(0z$SuoE4|o=aNdt4jYk}OMVrr(%K6qS(hwpAYQrJ-q;Oa&HE^Y;x&@^O=RW?W zaa_nf_%jCJ8-ur?Up;u=Yu&DBITpoYA3$1b$TzP00k)mKyh9pJ&#LE z38@NYNO7^IDRtiM{U7-D=cW|M&-(5tlY`WTm*lbmE#sD=?Q!27MmQ@4<8s@dNZqZuQ;=zPallzITdUPYQceod&B8A+*hqI+9d2 zdIGwVHbM{z^|1_gZ#}#p7i^LrEK{f14bMID??>=vyigp%C;6 zgdj3Jy0vzKu4-~$Z+e4VoJ2x2oaz|8uO!AFSf_~)WMtgG(U3w&F7oLlL{Xy|9>Jhe zl#|#&2waerauOXo!+-_B?BjFQ?MvVHZ1r1vgqDxpT!14)6Vt9w&Ryq?KV0;i5<>71 zLI%Ox?~Iu5W{^>3bwe2O>qKy!{?l5Y;YZRuMlo5(SoA}z3&!`A!A;MMy%>Mj-Ss%NT?@ zL9g45!S�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 literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/illustrations/le-jobs-s2@3x.png b/apps/native/app/src/assets/illustrations/le-jobs-s2@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c6cd122bc5900c11c0e76b307650b417427e82 GIT binary patch literal 14650 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 literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/illustrations/le-moving-s4.png b/apps/native/app/src/assets/illustrations/le-moving-s4.png new file mode 100644 index 0000000000000000000000000000000000000000..04cca0599fdea527d17c657dc3e7ec9d200a6fc9 GIT binary patch literal 2447 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 literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/illustrations/le-moving-s4@3x.png b/apps/native/app/src/assets/illustrations/le-moving-s4@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..5333a6baeaeadb2aa7779a24cff76625195fc3a5 GIT binary patch literal 9759 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

acmzGszBcGxTp9wV?d2 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 G$o~R`7!O|n literal 0 HcmV?d00001 diff --git a/apps/native/app/src/assets/illustrations/le-retirement-s3.png b/apps/native/app/src/assets/illustrations/le-retirement-s3.png index 5ef4bc706329a5b7384213e93ebce8830be2e0d6..9849683506849f0e035274470c23f5795ab6bd95 100644 GIT binary patch delta 3956 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 Hu0mjfH=x3< literal 74298 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

acmzGszBcGxTp9wV?d2 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 G$o~R`7!O|n diff --git a/apps/native/app/src/assets/illustrations/moving.png b/apps/native/app/src/assets/illustrations/moving.png deleted file mode 100644 index 23edfd42d93bde6680e8e569c434af200e0906dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8022 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 LMp?Q_5(@htuw4?Z diff --git a/apps/native/app/src/assets/illustrations/moving@2x.png b/apps/native/app/src/assets/illustrations/moving@2x.png deleted file mode 100644 index 6b615268efafb8a747be6f2eaefc73b9f54a90b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19815 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 ({ 'X-Cognito-Token': `Bearer ${ environmentStore.getState().cognito?.accessToken }`, + 'User-Agent': getCustomUserAgent(), cookie: [authStore.getState().cookies] .filter((x) => String(x) !== '') .join('; '), @@ -159,6 +161,9 @@ const cache = new InMemoryCache({ userNotifications: { merge: true, }, + getUserProfile: { + merge: true, + }, }, }, DocumentV2: { diff --git a/apps/native/app/src/graphql/fragments/application.fragment.graphql b/apps/native/app/src/graphql/fragments/application.fragment.graphql index cb64abe20ce5..60b7e4498bdc 100644 --- a/apps/native/app/src/graphql/fragments/application.fragment.graphql +++ b/apps/native/app/src/graphql/fragments/application.fragment.graphql @@ -8,4 +8,16 @@ fragment ApplicationFragment on Application { name progress status + institution + actionCard { + draftTotalSteps + draftFinishedSteps + tag { + label + variant + } + pendingAction { + title + } + } } diff --git a/apps/native/app/src/graphql/fragments/document.fragment.graphql b/apps/native/app/src/graphql/fragments/document.fragment.graphql index e074389e3a53..a1b438745b8e 100644 --- a/apps/native/app/src/graphql/fragments/document.fragment.graphql +++ b/apps/native/app/src/graphql/fragments/document.fragment.graphql @@ -8,6 +8,22 @@ fragment ListDocument on DocumentV2 { opened categoryId bookmarked + isUrgent + actions { + type + title + icon + data + } + alert { + title + data + } + confirmation { + title + data + icon + } sender { id name diff --git a/apps/native/app/src/graphql/queries/applications.graphql b/apps/native/app/src/graphql/queries/applications.graphql index 6fc826e99730..15bde50f3100 100644 --- a/apps/native/app/src/graphql/queries/applications.graphql +++ b/apps/native/app/src/graphql/queries/applications.graphql @@ -1,5 +1,5 @@ -query ListApplications { - applicationApplications { +query ListApplications($input: ApplicationApplicationsInput, $locale: String) { + applicationApplications(input: $input, locale: $locale) { ...ApplicationFragment } } diff --git a/apps/native/app/src/graphql/queries/health.graphql b/apps/native/app/src/graphql/queries/health.graphql new file mode 100644 index 000000000000..b8b142fd36a5 --- /dev/null +++ b/apps/native/app/src/graphql/queries/health.graphql @@ -0,0 +1,37 @@ +query GetHealthInsuranceOverview { + rightsPortalInsuranceOverview { + isInsured + explanation + from + status { + display + code + } + maximumPayment + } +} + +query GetHealthCenter($input: RightsPortalHealthCenterHistoryInput) { + rightsPortalHealthCenterRegistrationHistory(input: $input) { + current { + healthCenterName + doctor + } + } +} + +query GetPaymentOverview($input: RightsPortalPaymentOverviewInput!) { + rightsPortalPaymentOverview(input: $input) { + items { + credit + debt + } + } +} + +query GetPaymentStatus { + rightsPortalCopaymentStatus { + maximumPayment + maximumMonthlyPayment + } +} diff --git a/apps/native/app/src/graphql/queries/inbox.graphql b/apps/native/app/src/graphql/queries/inbox.graphql index 2ecdf2458686..73209b4263fc 100644 --- a/apps/native/app/src/graphql/queries/inbox.graphql +++ b/apps/native/app/src/graphql/queries/inbox.graphql @@ -22,8 +22,19 @@ query ListDocuments($input: DocumentsV2DocumentsInput!) { } } -query GetDocument($input: DocumentInput!) { - documentV2(input: $input) { +query GetDocumentsCategoriesAndSenders { + getDocumentCategories { + id + name + } + getDocumentSenders { + id + name + } +} + +query GetDocument($input: DocumentInput!, $locale: String) { + documentV2(input: $input, locale: $locale) { ...ListDocument content { type diff --git a/apps/native/app/src/hooks/use-android-notification-permission.ts b/apps/native/app/src/hooks/use-android-notification-permission.ts new file mode 100644 index 000000000000..96f1a8175ecf --- /dev/null +++ b/apps/native/app/src/hooks/use-android-notification-permission.ts @@ -0,0 +1,36 @@ +import { useEffect } from 'react' +import { PermissionsAndroid } from 'react-native' +import { useGetProfileQuery } from '../graphql/types/schema' +import { usePreferencesStore } from '../stores/preferences-store' +import { requestAndroidNotificationsPermission } from '../utils/permissions' +import { androidIsVersion33OrAbove } from '../utils/versions-check' + +/** + * Android >= 13 (API level >= 33) requires explicit permission for posting notifications. + * This hook is for already onboarded users that have enabled notifications and are using Android 13 or above. + * It then requests the permission if it hasn't been granted yet. + */ +export const useAndroidNotificationPermission = () => { + const userProfile = useGetProfileQuery() + const hasOnboardedNotifications = usePreferencesStore( + ({ hasOnboardedNotifications }) => hasOnboardedNotifications, + ) + + useEffect(() => { + // We need to check if the user has already enabled notifications and has onboarded the notifications screen + // and if the user is using Android 13 (API level 33) or above. + if ( + userProfile.data?.getUserProfile?.documentNotifications && + hasOnboardedNotifications && + androidIsVersion33OrAbove() + ) { + PermissionsAndroid.check( + PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, + ).then((granted) => { + if (!granted) { + requestAndroidNotificationsPermission() + } + }) + } + }, [userProfile]) +} diff --git a/apps/native/app/src/hooks/use-deep-link-handling.ts b/apps/native/app/src/hooks/use-deep-link-handling.ts new file mode 100644 index 000000000000..aab6a9dbe2a5 --- /dev/null +++ b/apps/native/app/src/hooks/use-deep-link-handling.ts @@ -0,0 +1,73 @@ +import messaging, { + FirebaseMessagingTypes, +} from '@react-native-firebase/messaging' +import { useCallback, useEffect, useRef, useState } from 'react' +import { useURL } from 'expo-linking' +import { useMarkUserNotificationAsReadMutation } from '../graphql/types/schema' + +import { navigateToUniversalLink } from '../lib/deep-linking' +import { useBrowser } from '../lib/use-browser' +import { useAuthStore } from '../stores/auth-store' + +// Expo-style notification hook wrapping firebase. +function useLastNotificationResponse() { + const [lastNotificationResponse, setLastNotificationResponse] = + useState(null) + + useEffect(() => { + messaging() + .getInitialNotification() + .then((remoteMessage) => { + if (remoteMessage) { + setLastNotificationResponse(remoteMessage) + } + }) + + // Return the unsubscribe function as a useEffect destructor. + return messaging().onNotificationOpenedApp((remoteMessage) => { + setLastNotificationResponse(remoteMessage) + }) + }, []) + + return lastNotificationResponse +} + +export function useDeepLinkHandling() { + const url = useURL() + const notification = useLastNotificationResponse() + const [markUserNotificationAsRead] = useMarkUserNotificationAsReadMutation() + const lockScreenActivatedAt = useAuthStore( + ({ lockScreenActivatedAt }) => lockScreenActivatedAt, + ) + + const lastUrl = useRef(null) + const { openBrowser } = useBrowser() + + const handleUrl = useCallback( + (url?: string | null) => { + if (!url || lastUrl.current === url || lockScreenActivatedAt) { + return false + } + lastUrl.current = url + + navigateToUniversalLink({ link: url, openBrowser }) + return true + }, + [openBrowser, lastUrl, lockScreenActivatedAt], + ) + + useEffect(() => { + handleUrl(url) + }, [url, handleUrl]) + + useEffect(() => { + const url = notification?.data?.clickActionUrl + const wasHandled = handleUrl(url) + if (wasHandled && notification?.data?.notificationId) { + // Mark notification as read and seen + void markUserNotificationAsRead({ + variables: { id: Number(notification.data.notificationId) }, + }) + } + }, [notification, handleUrl, markUserNotificationAsRead]) +} diff --git a/apps/native/app/src/hooks/use-locale.ts b/apps/native/app/src/hooks/use-locale.ts new file mode 100644 index 000000000000..97ce8277c447 --- /dev/null +++ b/apps/native/app/src/hooks/use-locale.ts @@ -0,0 +1,6 @@ +import { usePreferencesStore } from '../stores/preferences-store' + +export const useLocale = () => { + const locale = usePreferencesStore(({ locale }) => locale) + return locale === 'is-IS' ? 'is' : 'en' +} diff --git a/apps/native/app/src/index.tsx b/apps/native/app/src/index.tsx index e01b5ee33d96..586fedb0f9a9 100644 --- a/apps/native/app/src/index.tsx +++ b/apps/native/app/src/index.tsx @@ -8,7 +8,6 @@ import { registerAllComponents } from './utils/lifecycle/setup-components' import { setupDevMenu } from './utils/lifecycle/setup-dev-menu' import { setupEventHandlers } from './utils/lifecycle/setup-event-handlers' import { setupGlobals } from './utils/lifecycle/setup-globals' -import { setupNotifications } from './utils/lifecycle/setup-notifications' import { setupRoutes } from './utils/lifecycle/setup-routes' import { performanceMetricsAppLaunched } from './utils/performance-metrics' @@ -25,9 +24,6 @@ async function startApp() { // Setup app routing layer setupRoutes() - // Setup notifications - setupNotifications() - // Initialize Apollo client. This must be done before registering components await initializeApolloClient() diff --git a/apps/native/app/src/lib/deep-linking.ts b/apps/native/app/src/lib/deep-linking.ts index 9bb7670d3af0..1857145c1fd0 100644 --- a/apps/native/app/src/lib/deep-linking.ts +++ b/apps/native/app/src/lib/deep-linking.ts @@ -186,16 +186,18 @@ export function navigateTo(url: string, extraProps: any = {}) { } /** - * Navigate to a notification ClickActionUrl, if our mapping does not return a valid screen within the app - open a webview. + * Navigate to a specific universal link, if our mapping does not return a valid screen within the app - open a webview. */ -export function navigateToNotification({ +export function navigateToUniversalLink({ link, componentId, + openBrowser = openNativeBrowser, }: { // url to navigate to link?: NotificationMessage['link']['url'] // componentId to open web browser in componentId?: string + openBrowser?: (link: string, componentId?: string) => void }) { // If no link do nothing if (!link) return @@ -216,13 +218,14 @@ export function navigateToNotification({ }, }) } - // TODO: When navigating to a link from notification works, implement a way to use useBrowser.openBrowser here - openNativeBrowser(link, componentId ?? ComponentRegistry.HomeScreen) + + openBrowser(link, componentId ?? ComponentRegistry.HomeScreen) } // Map between notification link and app screen const urlMapping: { [key: string]: string } = { '/minarsidur/postholf/:id': '/inbox/:id', + '/minarsidur/postholf': '/inbox', '/minarsidur/min-gogn/stillingar': '/settings', '/minarsidur/skirteini': '/wallet', '/minarsidur/skirteini/tjodskra/vegabref/:id': '/walletpassport/:id', diff --git a/apps/native/app/src/messages/en.ts b/apps/native/app/src/messages/en.ts index 5dfabc036a6e..d464d57dd503 100644 --- a/apps/native/app/src/messages/en.ts +++ b/apps/native/app/src/messages/en.ts @@ -110,6 +110,7 @@ export const en: TranslatedMessages = { 'settings.security.appLockTimeoutLabel': 'App lock timeout', 'settings.security.appLockTimeoutDescription': 'Time until app lock will appear', + 'settings.security.appLockTimeoutSeconds': 'sec.', 'settings.about.groupTitle': 'About', 'settings.about.versionLabel': 'Version', 'settings.about.logoutLabel': 'Logout', @@ -168,7 +169,6 @@ export const en: TranslatedMessages = { 'home.screenTitle': 'Overview', 'home.applicationsStatus': 'Applications', 'home.allApplications': 'Digital applications', - 'home.inbox': 'Latest in inbox', 'home.welcomeText': 'Hi', 'home.goodDay': 'Good day,', 'home.onboardingModule.card1': @@ -176,7 +176,7 @@ export const en: TranslatedMessages = { 'home.onboardingModule.card2': 'The app’s purpose is to provide faster access to your documents, applications, and other dealings with governmental institutions.', 'home.onboardingModule.card3': - 'If you have comments or suggestions about something that is missing or that could be improved, feel free to contact us via email at', + 'If you have comments or suggestions about something that is missing or that could be improved, feel free to contact us via email at island@island.is', 'home.onboardingModule.card4': 'We encourage our users to read Digital Iceland’s privacy policy on', 'home.vehicleModule.summary': @@ -184,6 +184,18 @@ export const en: TranslatedMessages = { 'home.vehicleModule.button': 'My vehicles', 'button.seeAll': 'See all', + // home options + 'homeOptions.screenTitle': 'Home screen', + 'homeOptions.heading.title': 'Configure home screen', + 'homeOptions.heading.subtitle': + 'Here you can configure what is displayed on the home screen.', + 'homeOptions.graphic': 'Display graphic', + 'homeOptions.inbox': 'Latest in inbox', + 'homeOptions.licenses': 'Licenses', + 'homeOptions.applications': 'Applications', + 'homeOptions.vehicles': 'Vehicles', + 'homeOptions.airDiscount': 'Air discount scheme', + // inbox 'inbox.screenTitle': 'Inbox', 'inbox.bottomTabText': 'Inbox', @@ -195,22 +207,34 @@ export const en: TranslatedMessages = { 'inbox.emptyListTitle': 'There are currently no documents', 'inbox.emptyListDescription': 'When you receive electronic documents from the government, they will appear here.', - 'inbox.filterButtonTitle': 'Filter', - 'inbox.filterOpenedTagTitle': 'Unread', - 'inbox.filterArchivedTagTitle': 'Archived', - 'inbox.filterStarredTagTitle': 'Starred', 'inbox.markAllAsReadPromptTitle': 'Do you want to mark all as read?', 'inbox.markAllAsReadPromptDescription': 'This action cannot be undone', 'inbox.markAllAsReadPromptCancel': 'Cancel', 'inbox.markAllAsReadPromptConfirm': 'Mark all as read', 'inbox.cardNoInboxDocuments': 'When you receive mail in your mailbox, it will appear here.', + 'inbox.urgent': 'Urgent', + 'inbox.openDocument': 'Open document', // inbox filters 'inboxFilters.screenTitle': 'Filter documents', 'inboxFilters.unreadOnly': 'Show only unread', 'inboxFilters.starred': 'Starred', 'inboxFilters.archived': 'Archived', + 'inbox.filterButtonTitle': 'Filter', + 'inbox.filterOpenedTagTitle': 'Unread', + 'inbox.filterArchivedTagTitle': 'Archived', + 'inbox.filterStarredTagTitle': 'Starred', + 'inbox.filterOrganizationTitle': 'Organization', + 'inbox.filterCategoryTitle': 'Category', + 'inbox.filterDatesTitle': 'Dates', + 'inbox.filterClearButton': 'Clear', + 'inbox.filterApplyButton': 'Apply filters', + 'inbox.filterDateFromLabel': 'Date from', + 'inbox.filterDateToLabel': 'Date to', + 'inbox.filterDatePlaceholder': 'Choose a date', + 'inbox.filterDateConfirm': 'Confirm', + 'inbox.filterDateCancel': 'Cancel', // document detail 'documentDetail.screenTitle': 'Document', @@ -321,7 +345,8 @@ export const en: TranslatedMessages = { 'profile.vehicles': 'Vehicles', 'profile.assets': 'Assets', 'profile.finance': 'Finance', - 'profile.airDiscount': 'Air discount scheme', + 'profile.airDiscount': 'Air discount', + 'profile.health': 'Health', // vehicles 'vehicles.screenTitle': 'Vehicles', @@ -451,27 +476,34 @@ export const en: TranslatedMessages = { // applications screen 'applications.title': 'Applications', 'applications.bottomTabText': 'Applications', - 'applications.searchPlaceholder': 'Search...', - 'applications.loadingText': 'Searching...', - 'applications.resultText': 'results', - 'applications.singleResultText': 'result', - 'applications.noResultText': 'No results', - 'applications.emptyListTitle': 'There are currently no links', - 'applications.emptyListDescription': - 'There are no links available at the moment', + 'applications.emptyTitle': 'No applications', + 'applications.emptyDescription': + 'When you apply for services from the government, they will appear here.', + 'applications.incomplete': 'Unfinished applications', + 'applications.completed': 'Finished applications', + 'applications.inProgress': 'Applications in progress', // cards 'applicationStatusCard.openButtonLabel': 'Open application', - 'applicationStatusCard.seeMoreApplications': 'View applications', + 'applicationStatusCard.description': `{ + state, + select, + inprogress {The application is being processed} + completed {Completed} + rejected {Rejected} + other {} + }`, 'applicationStatusCard.status': `{ state, select, inprogress {In progress} completed {Completed} rejected {Rejected} + draft {Application in progress} other {Unknown status} }`, - 'applicationStatusCard.noActiveApplications': 'No active applications', + 'applicationStatusCard.draftProgress': + 'You have completed {draftFinishedSteps} of {draftTotalSteps} steps', // edit phone 'edit.phone.screenTitle': 'Edit Phone', @@ -479,8 +511,8 @@ export const en: TranslatedMessages = { 'edit.phone.inputlabel': 'Phone number', 'edit.phone.button': 'Save', 'edit.phone.button.empty': 'Save empty', - 'edit.phone.button.error': 'Error', - 'edit.phone.button.errorMessage': 'Could not send verification code', + 'edit.phone.error': 'Error', + 'edit.phone.errorMessage': 'Could not send verification code', // edit email 'edit.email.screenTitle': 'Edit Email', @@ -488,8 +520,8 @@ export const en: TranslatedMessages = { 'edit.email.inputlabel': 'Email', 'edit.email.button': 'Save', 'edit.email.button.empty': 'Save empty', - 'edit.email.button.error': 'Error', - 'edit.email.button.errorMessage': 'Could not send verification code', + 'edit.email.error': 'Error', + 'edit.email.errorMessage': 'Could not send verification code', // edit bank info 'edit.bankinfo.screenTitle': 'Edit Bank Info', @@ -499,6 +531,8 @@ export const en: TranslatedMessages = { 'edit.bankinfo.inputlabel.book': 'Hb.', 'edit.bankinfo.inputlabel.number': 'Account number', 'edit.bankinfo.button': 'Save', + 'edit.bankinfo.error': 'Error', + 'edit.bankinfo.errorMessage': 'Could not save bank info', // edit confirm 'edit.confirm.screenTitle': 'Confirm edit', @@ -512,6 +546,8 @@ export const en: TranslatedMessages = { 'edit.confirm.inputlabel': 'Security number', 'edit.cancel.button': 'Cancel', 'edit.confirm.button': 'Confirm', + 'edit.confirm.error': 'Error', + 'edit.confirm.errorMessage': 'Could not update information', // air discount 'airDiscount.screenTitle': 'Air discount scheme', @@ -558,8 +594,39 @@ export const en: TranslatedMessages = { 'You are opening Island.is in a browser. Do you want to create a passkey to sign in automatically with the app?', 'passkeys.headingSubtitle': 'Do you want to create a passkey to sign in automatically with the app?', + 'passkeys.settings': + 'In settings it is always possible to delete or add a passkey', + 'passkeys.furtherInformation': 'More about passkeys', 'passkeys.createButton': 'Create a passkey', 'passkeys.skipButton': 'Skip', 'passkeys.errorRegistering': 'Error', 'passkeys.errorRegisteringMessage': 'Could not create a passkey', + + // update app + 'updateApp.title': 'Update app', + 'updateApp.description': + 'You are about to use an old version of the Island.is app. Please update the app to be able to continue.', + 'updateApp.button': 'Update', + 'updateApp.buttonSkip': 'Skip', + + // health + 'health.overview.screenTitle': 'Health', + 'health.overview.title': 'My health', + 'health.overview.description': + 'Here you can find your health data, health center and health insurance.', + 'health.overview.healthCenter': 'Health center', + 'health.overview.noHealthCenterRegistered': 'No health center registered', + 'health.overview.physician': 'Physician', + 'health.overview.noPhysicianRegistered': 'No doctor registered', + 'health.overview.statusOfRights': 'Status of rights', + 'health.overview.insuredFrom': 'Insured from', + 'health.overview.status': 'Status', + 'health.overview.notInsured': 'You do not have health insurance', + 'health.overview.coPayments': 'Co-payment', + 'health.overview.maxMonthlyPayment': 'Max monthly payment', + 'health.overview.paymentLimit': 'Payment Limit', + 'health.overview.paymentCredit': 'Credit', + 'health.overview.paymentDebt': 'Debt', + 'health.overview.therapy': 'Therapy', + 'health.overview.aidsAndNutrition': 'Aids and nutrition', } diff --git a/apps/native/app/src/messages/is.ts b/apps/native/app/src/messages/is.ts index 5deb9f43a606..90c51a4c2580 100644 --- a/apps/native/app/src/messages/is.ts +++ b/apps/native/app/src/messages/is.ts @@ -109,6 +109,7 @@ export const is = { 'settings.security.appLockTimeoutLabel': 'Biðtími skjálæsingar', 'settings.security.appLockTimeoutDescription': 'Tíminn þar til skjálæsing fer í gang', + 'settings.security.appLockTimeoutSeconds': 'sek.', 'settings.about.groupTitle': 'Um appið', 'settings.about.versionLabel': 'Útgáfa', 'settings.about.logoutLabel': 'Útskrá', @@ -169,21 +170,32 @@ export const is = { 'home.applicationsStatus': 'Staða umsókna', 'home.allApplications': 'Stafrænar umsóknir', 'home.welcomeText': 'Hæ', - 'home.inbox': 'Nýjast í pósthólfinu', 'home.goodDay': 'Góðan dag,', 'home.onboardingModule.card1': 'Nú sérð þú upplýsingar um ökutæki, fasteignir og fjölskyldu þína í appinu til viðbótar við skjöl og skírteini.', 'home.onboardingModule.card2': 'Markmiðið með appinu er að þú hafir í hendi þér það sem þú þarfnast hverju sinni í samskiptum við hið opinbera.', 'home.onboardingModule.card3': - 'Hafir þú athugasemdir eða ábendingar um eitthvað sem vantar eða sem má betur fara viljum við gjarnan fá frá þér línu á', + 'Hafir þú athugasemdir eða ábendingar um eitthvað sem vantar eða sem má betur fara viljum við gjarnan fá frá þér línu á island@island.is', 'home.onboardingModule.card4': 'Notendum er bent á að kynna sér stefnu Stafræns Íslands um meðferð persónuupplýsinga á', 'home.vehicleModule.summary': - 'Skrá kílómetrastöðu rafmagns- og tengiltvinnbíla', + 'Skrá kílómetrastöðu rafmagns- og tengiltvinnbíla', 'home.vehicleModule.button': 'Mín ökutæki', 'button.seeAll': 'Sjá allt', + // home options + 'homeOptions.screenTitle': 'Heimaskjár', + 'homeOptions.heading.title': 'Stilla heimaskjá', + 'homeOptions.heading.subtitle': + 'Hér er hægt að stilla hvað birtist á heimaskjá.', + 'homeOptions.graphic': 'Birta myndskreytingu', + 'homeOptions.inbox': 'Nýjast í pósthólfinu', + 'homeOptions.licenses': 'Skírteini', + 'homeOptions.applications': 'Umsóknir', + 'homeOptions.vehicles': 'Ökutæki', + 'homeOptions.airDiscount': 'Loftbrú', + // inbox 'inbox.screenTitle': 'Pósthólf', 'inbox.bottomTabText': 'Pósthólf', @@ -195,22 +207,34 @@ export const is = { 'inbox.emptyListTitle': 'Hér eru engin skjöl sem stendur', 'inbox.emptyListDescription': 'Þegar þú færð send rafræn skjöl frá hinu opinbera birtast þau hér.', - 'inbox.filterButtonTitle': 'Sía', - 'inbox.filterOpenedTagTitle': 'Ólesið', - 'inbox.filterArchivedTagTitle': 'Geymsla', - 'inbox.filterStarredTagTitle': 'Stjörnumerkt', 'inbox.markAllAsReadPromptTitle': 'Viltu merkja öll skjöl sem lesin?', 'inbox.markAllAsReadPromptDescription': 'Þessi aðgerð er ekki afturkræf', 'inbox.markAllAsReadPromptCancel': 'Hætta við', 'inbox.markAllAsReadPromptConfirm': 'Merkja lesið', 'inbox.cardNoInboxDocuments': 'Þegar þú færð sendan póst í pósthólfið þá birtist hann hér.', + 'inbox.urgent': 'Áríðandi', + 'inbox.openDocument': 'Opna erindi', // inbox filters 'inboxFilters.screenTitle': 'Sía skjöl', 'inboxFilters.unreadOnly': 'Sýna einungis ólesið', 'inboxFilters.starred': 'Stjörnumerkt', 'inboxFilters.archived': 'Geymsla', + 'inbox.filterButtonTitle': 'Sía', + 'inbox.filterOpenedTagTitle': 'Ólesið', + 'inbox.filterArchivedTagTitle': 'Geymsla', + 'inbox.filterStarredTagTitle': 'Stjörnumerkt', + 'inbox.filterOrganizationTitle': 'Stofnun', + 'inbox.filterCategoryTitle': 'Flokkur', + 'inbox.filterDatesTitle': 'Dagsetningar', + 'inbox.filterClearButton': 'Hreinsa', + 'inbox.filterApplyButton': 'Sjá valið', + 'inbox.filterDateFromLabel': 'Dagsetning frá', + 'inbox.filterDateToLabel': 'Dagsetning til', + 'inbox.filterDatePlaceholder': 'Veldu dagsetningu', + 'inbox.filterDateConfirm': 'Staðfesta', + 'inbox.filterDateCancel': 'Hætta við', // document detail 'documentDetail.screenTitle': 'Skjal', @@ -226,6 +250,7 @@ export const is = { 'profile.assets': 'Fasteignir', 'profile.finance': 'Fjármál', 'profile.airDiscount': 'Loftbrú', + 'profile.health': 'Heilsa', // vehicles 'vehicles.screenTitle': 'Ökutæki', @@ -451,28 +476,34 @@ export const is = { // applications screen 'applications.title': 'Umsóknir', 'applications.bottomTabText': 'Umsóknir', - 'applications.searchPlaceholder': 'Leita að umsóknum...', - 'applications.loadingText': 'Leita í skjölum...', - 'applications.resultText': 'niðurstöður fundust', - 'applications.singleResultText': 'niðurstaða fannst', - 'applications.noResultText': 'Engar niðurstöður fundust', - 'applications.emptyListTitle': 'Hér eru engir linkar sem stendur', - 'applications.emptyListDescription': - 'Að einhverjum ástæðum þá eru engir linkar að umsóknum aðgengilegir eins og er', + 'applications.emptyTitle': 'Engar umsóknir', + 'applications.emptyDescription': + 'Þegar þú stofnar stafræna umsókn á Ísland.is birtist staða hennar hér.', + 'applications.incomplete': 'Ókláraðar umsóknir', + 'applications.completed': 'Afgreiddar umsóknir', + 'applications.inProgress': 'Umsóknir í vinnslu', // cards 'applicationStatusCard.openButtonLabel': 'Opna umsókn', - 'applicationStatusCard.seeMoreApplications': 'Skoða umsóknir', + 'applicationStatusCard.description': `{ + state, + select, + inprogress {Umsókn er í afgreiðsluferli} + completed {Samþykkt} + rejected {Hafnað} + other {} + }`, 'applicationStatusCard.status': `{ state, select, - inprogress {Í ferli} - completed {Lokið} + inprogress {Í vinnslu} + completed {Afgreidd} rejected {Hafnað} + draft {Í vinnslu hjá þér} other {Staða óþekkt} }`, - 'applicationStatusCard.noActiveApplications': - 'Þegar þú stofnar stafræna umsókn á Ísland.is birtist staða hennar hér.', + 'applicationStatusCard.draftProgress': + 'Þú hefur klárað {draftFinishedSteps} af {draftTotalSteps} skrefum', // edit phone 'edit.phone.screenTitle': 'Breyta símanúmeri', @@ -480,8 +511,8 @@ export const is = { 'edit.phone.inputlabel': 'Símanúmer', 'edit.phone.button': 'Vista', 'edit.phone.button.empty': 'Vista tómt', - 'edit.phone.button.error': 'Villa', - 'edit.phone.button.errorMessage': 'Gat ekki sent staðfestingarkóða', + 'edit.phone.error': 'Villa', + 'edit.phone.errorMessage': 'Gat ekki sent staðfestingarkóða', // edit email 'edit.email.screenTitle': 'Breyta Netfangi', @@ -489,8 +520,8 @@ export const is = { 'edit.email.inputlabel': 'Netfang', 'edit.email.button': 'Vista', 'edit.email.button.empty': 'Vista tómt', - 'edit.email.button.error': 'Villa', - 'edit.email.button.errorMessage': 'Gat ekki sent staðfestingarkóða', + 'edit.email.error': 'Villa', + 'edit.email.errorMessage': 'Gat ekki sent staðfestingarkóða', // edit bank info 'edit.bankinfo.screenTitle': 'Breyta banka upplýsingum', @@ -500,6 +531,8 @@ export const is = { 'edit.bankinfo.inputlabel.book': 'Hb.', 'edit.bankinfo.inputlabel.number': 'Reikningsnúmer', 'edit.bankinfo.button': 'Vista', + 'edit.bankinfo.error': 'Villa', + 'edit.bankinfo.errorMessage': 'Gat ekki vistað reikningsupplýsingar', // edit confirm 'edit.confirm.screenTitle': 'Staðfesta aðgerð', @@ -513,6 +546,8 @@ export const is = { 'edit.confirm.inputlabel': 'Öryggisnúmer', 'edit.cancel.button': 'Hætta við', 'edit.confirm.button': 'Staðfesta', + 'edit.confirm.error': 'Villa', + 'edit.confirm.errorMessage': 'Gat ekki uppfært upplýsingar', // air discount 'airDiscount.screenTitle': 'Loftbrú', @@ -559,8 +594,39 @@ export const is = { 'Þú ert að fara að opna Ísland.is í vafra. Viltu búa til aðgangslykil til að skrá þig inn sjálfkrafa með appinu?', 'passkeys.headingSubtitle': 'Viltu búa til aðgangslykil til að skrá þig inn sjálfkrafa með appinu?', + 'passkeys.settings': + 'Undir stillingum er alltaf hægt að eyða eða búa til aðgangslykil', + 'passkeys.furtherInformation': 'Nánar um aðgangslykla', 'passkeys.createButton': 'Búa til aðgangslykil', 'passkeys.skipButton': 'Sleppa', 'passkeys.errorRegistering': 'Villa', 'passkeys.errorRegisteringMessage': 'Tókst ekki að búa til aðgangslykil', + + // update app + 'updateApp.title': 'Uppfæra app', + 'updateApp.description': + 'Þú ert að fara að nota gamla útgáfu af Ísland.is appinu. Vinsamlegast uppfærðu appið til að halda áfram.', + 'updateApp.button': 'Uppfæra', + 'updateApp.buttonSkip': 'Sleppa', + + // health + 'health.overview.screenTitle': 'Heilsa', + 'health.overview.title': 'Heilsan mín', + 'health.overview.description': + 'Hér finnur þú þín heilsufarsgögn, heilsugæslu og sjúkratryggingar', + 'health.overview.healthCenter': 'Heilsugæsla', + 'health.overview.noHealthCenterRegistered': 'Engin heilsugæsla skráð', + 'health.overview.physician': 'Heimilislæknir', + 'health.overview.noPhysicianRegistered': 'Enginn læknir skráður', + 'health.overview.statusOfRights': 'Réttindastaða', + 'health.overview.insuredFrom': 'Sjúkratrygging frá', + 'health.overview.status': 'Staða', + 'health.overview.notInsured': 'Þú ert ekki með sjúkratryggingu', + 'health.overview.coPayments': 'Greiðsluþáttaka', + 'health.overview.maxMonthlyPayment': 'Hámarksgreiðslan þín á mánuði', + 'health.overview.paymentLimit': 'Greiðslumark', + 'health.overview.paymentCredit': 'Inneign', + 'health.overview.paymentDebt': 'Skuld', + 'health.overview.therapy': 'Þjálfun', + 'health.overview.aidsAndNutrition': 'Hjálpartæki og næring', } diff --git a/apps/native/app/src/screens/air-discount/air-discount.tsx b/apps/native/app/src/screens/air-discount/air-discount.tsx index 75fc59a062b3..971b7b711686 100644 --- a/apps/native/app/src/screens/air-discount/air-discount.tsx +++ b/apps/native/app/src/screens/air-discount/air-discount.tsx @@ -1,14 +1,14 @@ import { Alert, - EmptyList, Heading, Link, LinkText, + Problem, Skeleton, Typography, } from '@ui' import React from 'react' -import { SafeAreaView, ScrollView, View, Image } from 'react-native' +import { Image, SafeAreaView, ScrollView, View } from 'react-native' import { NavigationFunctionComponent } from 'react-native-navigation' import { FormattedMessage, useIntl } from 'react-intl' import styled, { useTheme } from 'styled-components/native' @@ -22,7 +22,7 @@ import { AirDiscountCard } from '@ui/lib/card/air-discount-card' import { Bullet } from '@ui/lib/bullet/bullet' import { useConnectivityIndicator } from '../../hooks/use-connectivity-indicator' import { AirfaresUsageTable } from './airfares-usage-table' -import illustrationSrc from '../../assets/illustrations/le_jobs_s5.png' +import externalLinkIcon from '../../assets/icons/external-link.png' const BulletList = styled.View` margin-vertical: 12px; @@ -71,29 +71,13 @@ const SkeletonItem = () => { const Empty = () => { const theme = useTheme() + const intl = useIntl() return ( - - } - description={ - - } - image={ - - } + ) @@ -169,7 +153,8 @@ export const AirDiscountScreen: NavigationFunctionComponent = ({ + />{' '} + diff --git a/apps/native/app/src/screens/applications/applications-completed.tsx b/apps/native/app/src/screens/applications/applications-completed.tsx new file mode 100644 index 000000000000..e390c83068c8 --- /dev/null +++ b/apps/native/app/src/screens/applications/applications-completed.tsx @@ -0,0 +1,67 @@ +import { useState } from 'react' +import { NavigationFunctionComponent } from 'react-native-navigation' + +import { + ApplicationResponseDtoStatusEnum, + useListApplicationsQuery, +} from '../../graphql/types/schema' +import { createNavigationOptionHooks } from '../../hooks/create-navigation-option-hooks' +import { useConnectivityIndicator } from '../../hooks/use-connectivity-indicator' +import { useLocale } from '../../hooks/use-locale' +import { ApplicationsList } from './components/applications-list' + +const { useNavigationOptions, getNavigationOptions } = + createNavigationOptionHooks( + (theme, intl) => ({ + topBar: { + title: { + text: intl.formatMessage({ id: 'applications.completed' }), + }, + noBorder: true, + }, + }), + { + bottomTabs: { + visible: false, + drawBehind: true, + }, + }, + ) + +export const ApplicationsCompletedScreen: NavigationFunctionComponent = ({ + componentId, +}) => { + useNavigationOptions(componentId) + const [refetching, setRefetching] = useState(false) + + const applicationsRes = useListApplicationsQuery({ + variables: { + input: { + status: [ + ApplicationResponseDtoStatusEnum.Completed, + ApplicationResponseDtoStatusEnum.Rejected, + ApplicationResponseDtoStatusEnum.Approved, + ], + }, + locale: useLocale(), + }, + }) + + useConnectivityIndicator({ + componentId, + refetching, + queryResult: applicationsRes, + }) + + return ( + + ) +} + +ApplicationsCompletedScreen.options = getNavigationOptions diff --git a/apps/native/app/src/screens/applications/applications-in-progress.tsx b/apps/native/app/src/screens/applications/applications-in-progress.tsx new file mode 100644 index 000000000000..237c2c7d719d --- /dev/null +++ b/apps/native/app/src/screens/applications/applications-in-progress.tsx @@ -0,0 +1,63 @@ +import { useState } from 'react' +import { NavigationFunctionComponent } from 'react-native-navigation' + +import { + ApplicationResponseDtoStatusEnum, + useListApplicationsQuery, +} from '../../graphql/types/schema' +import { createNavigationOptionHooks } from '../../hooks/create-navigation-option-hooks' +import { useConnectivityIndicator } from '../../hooks/use-connectivity-indicator' +import { useLocale } from '../../hooks/use-locale' +import { ApplicationsList } from './components/applications-list' + +const { useNavigationOptions, getNavigationOptions } = + createNavigationOptionHooks( + (theme, intl) => ({ + topBar: { + title: { + text: intl.formatMessage({ id: 'applications.inProgress' }), + }, + noBorder: true, + }, + }), + { + bottomTabs: { + visible: false, + drawBehind: true, + }, + }, + ) + +export const ApplicationsInProgressScreen: NavigationFunctionComponent = ({ + componentId, +}) => { + useNavigationOptions(componentId) + const [refetching, setRefetching] = useState(false) + + const applicationsRes = useListApplicationsQuery({ + variables: { + input: { + status: [ApplicationResponseDtoStatusEnum.Inprogress], + }, + locale: useLocale(), + }, + }) + + useConnectivityIndicator({ + componentId, + refetching, + queryResult: applicationsRes, + }) + + return ( + + ) +} + +ApplicationsInProgressScreen.options = getNavigationOptions diff --git a/apps/native/app/src/screens/applications/applications-incomplete.tsx b/apps/native/app/src/screens/applications/applications-incomplete.tsx new file mode 100644 index 000000000000..5859693de702 --- /dev/null +++ b/apps/native/app/src/screens/applications/applications-incomplete.tsx @@ -0,0 +1,63 @@ +import { useState } from 'react' +import { NavigationFunctionComponent } from 'react-native-navigation' + +import { + ApplicationResponseDtoStatusEnum, + useListApplicationsQuery, +} from '../../graphql/types/schema' +import { createNavigationOptionHooks } from '../../hooks/create-navigation-option-hooks' +import { useConnectivityIndicator } from '../../hooks/use-connectivity-indicator' +import { useLocale } from '../../hooks/use-locale' +import { ApplicationsList } from './components/applications-list' + +const { useNavigationOptions, getNavigationOptions } = + createNavigationOptionHooks( + (theme, intl) => ({ + topBar: { + title: { + text: intl.formatMessage({ id: 'applications.incomplete' }), + }, + noBorder: true, + }, + }), + { + bottomTabs: { + visible: false, + drawBehind: true, + }, + }, + ) + +export const ApplicationsIncompleteScreen: NavigationFunctionComponent = ({ + componentId, +}) => { + useNavigationOptions(componentId) + const [refetching, setRefetching] = useState(false) + + const applicationsRes = useListApplicationsQuery({ + variables: { + input: { + status: [ApplicationResponseDtoStatusEnum.Draft], + }, + locale: useLocale(), + }, + }) + + useConnectivityIndicator({ + componentId, + refetching, + queryResult: applicationsRes, + }) + + return ( + + ) +} + +ApplicationsIncompleteScreen.options = getNavigationOptions diff --git a/apps/native/app/src/screens/applications/applications.tsx b/apps/native/app/src/screens/applications/applications.tsx index 38e4b763c8a7..f999a0c124a9 100644 --- a/apps/native/app/src/screens/applications/applications.tsx +++ b/apps/native/app/src/screens/applications/applications.tsx @@ -1,37 +1,24 @@ -import { EmptyList, Heading, ListButton, TopLine } from '@ui' -import { useCallback, useMemo, useRef, useState } from 'react' +import { EmptyList, StatusCardSkeleton } from '@ui' +import { useCallback, useMemo, useState } from 'react' import { useIntl } from 'react-intl' -import { - Animated, - FlatList, - Image, - RefreshControl, - SafeAreaView, - View, -} from 'react-native' +import { Image, RefreshControl, ScrollView, View } from 'react-native' import { NavigationFunctionComponent } from 'react-native-navigation' import { useNavigationComponentDidAppear } from 'react-native-navigation-hooks' -import illustrationSrc from '../../assets/illustrations/le-company-s3.png' -import { BottomTabsIndicator } from '../../components/bottom-tabs-indicator/bottom-tabs-indicator' +import { useTheme } from 'styled-components' + +import illustrationSrc from '../../assets/illustrations/le-jobs-s3.png' import { Application, - SearchArticleFragmentFragment, - SearchableContentTypes, + ApplicationResponseDtoStatusEnum, useListApplicationsQuery, - useListSearchQuery, } from '../../graphql/types/schema' import { createNavigationOptionHooks } from '../../hooks/create-navigation-option-hooks' import { useConnectivityIndicator } from '../../hooks/use-connectivity-indicator' -import { useBrowser } from '../../lib/use-browser' -import { getApplicationOverviewUrl } from '../../utils/applications-utils' +import { useLocale } from '../../hooks/use-locale' import { testIDs } from '../../utils/test-ids' -import { getRightButtons } from '../../utils/get-main-root' -import { ApplicationsModule } from '../home/applications-module' import { isIos } from '../../utils/devices' - -type ListItem = - | { id: string; __typename: 'Skeleton' } - | SearchArticleFragmentFragment +import { ApplicationsPreview } from './components/applications-preview' +import { BottomTabsIndicator } from '../../components/bottom-tabs-indicator/bottom-tabs-indicator' const { useNavigationOptions, getNavigationOptions } = createNavigationOptionHooks( @@ -43,7 +30,6 @@ const { useNavigationOptions, getNavigationOptions } = searchBar: { visible: false, }, - rightButtons: initialized ? getRightButtons({ theme } as any) : [], }, bottomTab: { iconColor: theme.color.blue400, @@ -73,85 +59,79 @@ const { useNavigationOptions, getNavigationOptions } = }, ) +interface SortedApplication { + incomplete: Application[] + inProgress: Application[] + completed: Application[] +} + +export const sortApplicationsStatus = ( + applications: Application[], +): SortedApplication => { + const incomplete: Application[] = [] + const inProgress: Application[] = [] + const completed: Application[] = [] + + applications.forEach((application) => { + if ( + application.status === ApplicationResponseDtoStatusEnum.Draft || + application.status === ApplicationResponseDtoStatusEnum.Notstarted + ) { + incomplete.push(application) + } else if ( + application.status === ApplicationResponseDtoStatusEnum.Inprogress + ) { + inProgress.push(application) + } else { + completed.push(application) + } + }) + + return { + incomplete, + inProgress, + completed, + } +} + export const ApplicationsScreen: NavigationFunctionComponent = ({ componentId, }) => { useNavigationOptions(componentId) - const { openBrowser } = useBrowser() - const flatListRef = useRef(null) - const [refetching, setRefetching] = useState(false) const intl = useIntl() - const scrollY = useRef(new Animated.Value(0)).current + const theme = useTheme() + const [refetching, setRefetching] = useState(false) const [hiddenContent, setHiddenContent] = useState(isIos) - const res = useListSearchQuery({ - variables: { - input: { - queryString: '*', - types: [SearchableContentTypes.WebArticle], - contentfulTags: ['umsokn'], - size: 100, - page: 1, - }, - }, + const applicationsRes = useListApplicationsQuery({ + variables: { locale: useLocale() }, }) - const applicationsRes = useListApplicationsQuery() + const applications = useMemo( + () => applicationsRes.data?.applicationApplications ?? [], + [applicationsRes], + ) useConnectivityIndicator({ componentId, - rightButtons: getRightButtons(), refetching, - queryResult: [applicationsRes, res], + queryResult: applicationsRes, }) + const sortedApplications = useMemo( + () => sortApplicationsStatus(applications as Application[]), + [applications], + ) + useNavigationComponentDidAppear(() => { setHiddenContent(false) }, componentId) - const data = useMemo(() => { - if (!res.data && res.loading) { - return Array.from({ length: 8 }).map((_, id) => ({ - __typename: 'Skeleton', - id: id.toString(), - })) - } - - const articles = [ - ...(res?.data?.searchResults?.items ?? []), - ] as SearchArticleFragmentFragment[] - - return articles.sort((a, b) => a.title.localeCompare(b.title)) - }, [res.data, res.loading]) - - const renderItem = useCallback( - ({ item }: { item: ListItem; index: number }) => { - if (item.__typename === 'Skeleton') { - return - } - if (item.__typename === 'Article') { - return ( - - openBrowser(getApplicationOverviewUrl(item), componentId) - } - /> - ) - } - return null - }, - [], - ) - - const keyExtractor = useCallback((item: ListItem) => item.id, []) - const onRefresh = useCallback(async () => { setRefetching(true) try { - await res.refetch() + await applicationsRes.refetch() } catch (e) { // noop } finally { @@ -166,62 +146,56 @@ export const ApplicationsScreen: NavigationFunctionComponent = ({ return ( <> - + } + > + {!applications.length && !applicationsRes.loading ? ( } /> - } - renderItem={renderItem} - ListHeaderComponent={ - - - - - {intl.formatMessage({ id: 'home.allApplications' })} - - - - } - refreshControl={ - - } - /> + ) : null} + {applicationsRes.loading && + !applicationsRes.data && + Array.from({ length: 3 }).map((_, index) => ( + + + + ))} + + + + - ) } diff --git a/apps/native/app/src/screens/applications/components/applications-list.tsx b/apps/native/app/src/screens/applications/components/applications-list.tsx new file mode 100644 index 000000000000..4d6234a1777b --- /dev/null +++ b/apps/native/app/src/screens/applications/components/applications-list.tsx @@ -0,0 +1,225 @@ +import { + Badge, + badgeColorSchemes, + EmptyList, + Problem, + StatusCard, + StatusCardSkeleton, + TopLine, +} from '@ui' +import { useCallback, useMemo, useRef, useState } from 'react' +import { useIntl } from 'react-intl' +import { + Animated, + FlatList, + Image, + ListRenderItemInfo, + RefreshControl, + View, +} from 'react-native' +import { useTheme } from 'styled-components' +import illustrationSrc from '../../../assets/illustrations/le-jobs-s3.png' +import { + Application, + ListApplicationsQueryResult, +} from '../../../graphql/types/schema' +import { useBrowser } from '../../../lib/use-browser' +import { getApplicationUrl } from '../../../utils/applications-utils' +import { BottomTabsIndicator } from '../../../components/bottom-tabs-indicator/bottom-tabs-indicator' +import { createSkeletonArr } from '../../../utils/create-skeleton-arr' +import { getBadgeVariant } from '../utils/getBadgeVariant' + +type FlatListItem = + | Application + | { __typename: 'Skeleton'; id: string } + | { __typename: 'Empty'; id: string } + +interface ApplicationsListProps { + applicationsRes: ListApplicationsQueryResult + componentId: string + displayProgress: boolean + displayDescription: boolean + onRefetch: (refetching: boolean) => void +} + +export const ApplicationsList = ({ + applicationsRes, + componentId, + displayDescription, + displayProgress, + onRefetch, +}: ApplicationsListProps) => { + const { openBrowser } = useBrowser() + const theme = useTheme() + const [refetching, setRefetching] = useState(false) + const intl = useIntl() + const flatListRef = useRef(null) + const scrollY = useRef(new Animated.Value(0)).current + + const applications = useMemo( + () => applicationsRes.data?.applicationApplications ?? [], + [applicationsRes], + ) + + const showError = applicationsRes.error && !applicationsRes.data + + const onRefresh = useCallback(async () => { + setRefetching(true) + onRefetch(true) + + try { + await applicationsRes.refetch() + } catch (e) { + // noop + } finally { + setRefetching(false) + onRefetch(false) + } + }, [applicationsRes]) + + const renderItem = useCallback( + ({ item }: ListRenderItemInfo) => { + if (item.__typename === 'Skeleton') { + return ( + + + + ) + } + + if (item.__typename === 'Empty') { + return ( + + + } + /> + + ) + } + + const badgeVariant = + item?.actionCard?.tag?.variant ?? getBadgeVariant(item) + + return ( + + } + progress={ + displayProgress + ? item.actionCard?.draftFinishedSteps ?? 0 + : undefined + } + progressTotalSteps={ + displayProgress ? item.actionCard?.draftTotalSteps ?? 0 : undefined + } + progressMessage={ + displayProgress + ? intl.formatMessage( + { + id: 'applicationStatusCard.draftProgress', + }, + { + draftFinishedSteps: item.actionCard?.draftFinishedSteps, + draftTotalSteps: item.actionCard?.draftTotalSteps, + }, + ) + : undefined + } + description={ + displayDescription + ? item.actionCard?.pendingAction?.title ?? + intl.formatMessage( + { id: 'applicationStatusCard.description' }, + { state: item.status || 'unknown' }, + ) + : undefined + } + actions={[ + { + text: intl.formatMessage({ + id: 'applicationStatusCard.openButtonLabel', + }), + onPress() { + openBrowser(getApplicationUrl(item), componentId) + }, + }, + ]} + institution={item.institution ?? ''} + style={{ marginHorizontal: theme.spacing[2] }} + /> + ) + }, + [theme], + ) + + const keyExtractor = useCallback((item: FlatListItem) => { + return item.id.toString() + }, []) + + const data = useMemo(() => { + if (applicationsRes.loading && !applicationsRes.data) { + return createSkeletonArr(5) + } + if (applications.length === 0) { + return [{ id: '0', __typename: 'Empty' }] + } + return applications + }, [ + applicationsRes.loading, + applicationsRes.data, + applications, + ]) as FlatListItem[] + + return ( + + {showError ? ( + + ) : ( + <> + + } + scrollEventThrottle={16} + scrollToOverflowEnabled + onScroll={Animated.event( + [{ nativeEvent: { contentOffset: { y: scrollY } } }], + { + useNativeDriver: true, + }, + )} + data={data} + keyExtractor={keyExtractor} + renderItem={renderItem} + /> + + + + )} + + ) +} diff --git a/apps/native/app/src/screens/applications/components/applications-preview.tsx b/apps/native/app/src/screens/applications/components/applications-preview.tsx new file mode 100644 index 000000000000..d9bcbcfd5c55 --- /dev/null +++ b/apps/native/app/src/screens/applications/components/applications-preview.tsx @@ -0,0 +1,172 @@ +import { + Badge, + badgeColorSchemes, + ChevronRight, + Heading, + StatusCard, + Typography, + ViewPager, +} from '@ui' +import { useIntl } from 'react-intl' +import { TouchableOpacity, View } from 'react-native' +import { useTheme } from 'styled-components' + +import { Application } from '../../../graphql/types/schema' +import { getApplicationType } from '../utils/getApplicationType' +import { getBadgeVariant } from '../utils/getBadgeVariant' +import { useBrowser } from '../../../lib/use-browser' +import { getApplicationUrl } from '../../../utils/applications-utils' +import { navigateTo } from '../../../lib/deep-linking' +import { screenWidth } from '../../../utils/dimensions' + +interface ApplicationsPreviewProps { + componentId: string + applications: Application[] + headingTitleId: string + headingTitleNavigationLink: string + numberOfItems?: number + slider?: boolean +} + +export const ApplicationsPreview = ({ + componentId, + headingTitleId, + headingTitleNavigationLink, + applications, + numberOfItems = 4, + slider = false, +}: ApplicationsPreviewProps) => { + const { openBrowser } = useBrowser() + const theme = useTheme() + const intl = useIntl() + + const count = applications.length + + const getApplications = ( + applications: Application[], + numberOfItems: number, + ) => { + return applications.slice(0, numberOfItems).map((application) => { + const type = getApplicationType(application) + const badgeVariant = + application?.actionCard?.tag?.variant ?? getBadgeVariant(application) + + return ( + + } + progress={ + type === 'incomplete' + ? application.actionCard?.draftFinishedSteps ?? 0 + : undefined + } + progressTotalSteps={ + type === 'incomplete' + ? application.actionCard?.draftTotalSteps ?? 0 + : undefined + } + progressMessage={intl.formatMessage( + { + id: 'applicationStatusCard.draftProgress', + }, + { + draftFinishedSteps: application.actionCard?.draftFinishedSteps, + draftTotalSteps: application.actionCard?.draftTotalSteps, + }, + )} + progressContainerWidth={ + slider && count > 1 ? screenWidth - theme.spacing[2] * 6 : undefined + } + description={ + type !== 'incomplete' + ? application.actionCard?.pendingAction?.title ?? + intl.formatMessage( + { id: 'applicationStatusCard.description' }, + { state: application.status || 'unknown' }, + ) + : undefined + } + actions={[ + { + text: intl.formatMessage({ + id: 'applicationStatusCard.openButtonLabel', + }), + onPress() { + openBrowser(getApplicationUrl(application), componentId) + }, + }, + ]} + institution={application.institution ?? ''} + style={ + slider && count > 1 + ? { + width: screenWidth - theme.spacing[2] * 4, + marginLeft: theme.spacing[2], + } + : { + marginHorizontal: theme.spacing[2], + } + } + /> + ) + }) + } + + const items = getApplications(applications, numberOfItems) + + return ( + <> + {applications.length > 0 ? ( + navigateTo(`${headingTitleNavigationLink}`)} + style={{ marginHorizontal: theme.spacing[2] }} + > + numberOfItems) ? ( + navigateTo(`${headingTitleNavigationLink}`)} + style={{ + flexDirection: 'row', + alignItems: 'center', + }} + > + + {intl.formatMessage({ id: 'button.seeAll' })} + + + + ) : null + } + > + {intl.formatMessage({ id: `${headingTitleId}` })} + + + ) : null} + {!slider || count === 1 ? ( + items + ) : ( + + {items} + + )} + + ) +} diff --git a/apps/native/app/src/screens/applications/utils/getApplicationType.ts b/apps/native/app/src/screens/applications/utils/getApplicationType.ts new file mode 100644 index 000000000000..7047011ee59c --- /dev/null +++ b/apps/native/app/src/screens/applications/utils/getApplicationType.ts @@ -0,0 +1,21 @@ +import { + Application, + ApplicationResponseDtoStatusEnum, +} from '../../../graphql/types/schema' + +type ApplicationType = 'incomplete' | 'completed' | 'inProgress' + +export const getApplicationType = ( + application: Application, +): ApplicationType => { + switch (application.status) { + case ApplicationResponseDtoStatusEnum.Draft: + return 'incomplete' + case ApplicationResponseDtoStatusEnum.Notstarted: + return 'incomplete' + case ApplicationResponseDtoStatusEnum.Inprogress: + return 'inProgress' + default: + return 'completed' + } +} diff --git a/apps/native/app/src/screens/applications/utils/getBadgeVariant.ts b/apps/native/app/src/screens/applications/utils/getBadgeVariant.ts new file mode 100644 index 000000000000..ae8397301275 --- /dev/null +++ b/apps/native/app/src/screens/applications/utils/getBadgeVariant.ts @@ -0,0 +1,21 @@ +import { + Application, + ApplicationResponseDtoStatusEnum, +} from '../../../graphql/types/schema' + +type BadgeVariant = 'blue' | 'blueberry' | 'mint' | 'red' + +export const getBadgeVariant = (application: Application): BadgeVariant => { + switch (application.status) { + case ApplicationResponseDtoStatusEnum.Draft: + return 'blue' + case ApplicationResponseDtoStatusEnum.Notstarted: + return 'blueberry' + case ApplicationResponseDtoStatusEnum.Inprogress: + return 'blueberry' + case ApplicationResponseDtoStatusEnum.Rejected: + return 'red' + default: + return 'mint' + } +} diff --git a/apps/native/app/src/screens/document-detail/document-detail.tsx b/apps/native/app/src/screens/document-detail/document-detail.tsx index 945d72efbd9f..c74b37ce9a31 100644 --- a/apps/native/app/src/screens/document-detail/document-detail.tsx +++ b/apps/native/app/src/screens/document-detail/document-detail.tsx @@ -1,10 +1,17 @@ import { useApolloClient, useFragment_experimental } from '@apollo/client' -import { blue400, dynamicColor, Header, Loader } from '@ui' +import { Alert, blue400, dynamicColor, Header, Loader } from '@ui' import { Problem } from '@ui/lib/problem/problem' import React, { useEffect, useRef, useState } from 'react' import { FormattedDate, useIntl } from 'react-intl' -import { Animated, Platform, StyleSheet, View } from 'react-native' import { + Alert as RNAlert, + Animated, + Platform, + StyleSheet, + View, +} from 'react-native' +import { + Navigation, NavigationFunctionComponent, OptionsTopBarButton, } from 'react-native-navigation' @@ -13,24 +20,28 @@ import { useNavigationComponentDidAppear, } from 'react-native-navigation-hooks/dist' import Pdf, { Source } from 'react-native-pdf' -import Share from 'react-native-share' import WebView from 'react-native-webview' -import styled from 'styled-components/native' +import styled, { useTheme } from 'styled-components/native' import { DocumentV2, + DocumentV2Action, ListDocumentFragmentDoc, useGetDocumentQuery, } from '../../graphql/types/schema' import { createNavigationOptionHooks } from '../../hooks/create-navigation-option-hooks' import { useConnectivityIndicator } from '../../hooks/use-connectivity-indicator' +import { useLocale } from '../../hooks/use-locale' import { toggleAction } from '../../lib/post-mail-action' import { authStore } from '../../stores/auth-store' import { useOrganizationsStore } from '../../stores/organizations-store' import { ButtonRegistry } from '../../utils/component-registry' +import { getButtonsForActions } from './utils/get-buttons-for-actions' +import { useBrowser } from '../../lib/use-browser' +import { shareFile } from './utils/share-file' const Host = styled.SafeAreaView` - margin-left: 24px; - margin-right: 24px; + margin-left: ${({ theme }) => theme.spacing[2]}px; + margin-right: ${({ theme }) => theme.spacing[2]}px; ` const Border = styled.View` @@ -41,12 +52,61 @@ const Border = styled.View` }))}; ` +const ActionsWrapper = styled.View` + margin-bottom: ${({ theme }) => theme.spacing[2]}px; + margin-horizontal: ${({ theme }) => theme.spacing[2]}px; + gap: ${({ theme }) => theme.spacing[2]}px; +` + const PdfWrapper = styled.View` flex: 1; background-color: ${dynamicColor('background')}; ` -function getRightButtons({ +const DocumentWrapper = styled.View<{ hasMarginTop?: boolean }>` + flex: 1; + margin-horizontal: ${({ theme }) => theme.spacing[2]}px; + padding-top: ${({ theme }) => theme.spacing[2]}px; +` +const regexForBr = //gi + +// Styles for html documents +const useHtmlStyles = () => { + const theme = useTheme() + return ` + ` +} + +function getRightButtonsForDocumentDetail({ archived, bookmarked, }: { @@ -105,7 +165,7 @@ const { useNavigationOptions, getNavigationOptions } = }, topBar: { noBorder: true, - rightButtons: getRightButtons(), + rightButtons: getRightButtonsForDocumentDetail(), }, }, ) @@ -163,14 +223,52 @@ const PdfViewer = React.memo( export const DocumentDetailScreen: NavigationFunctionComponent<{ docId: string -}> = ({ componentId, docId }) => { + isUrgent?: boolean +}> = ({ componentId, docId, isUrgent }) => { useNavigationOptions(componentId) const client = useApolloClient() const intl = useIntl() + const htmlStyles = useHtmlStyles() + const { openBrowser } = useBrowser() const { getOrganizationLogoUrl } = useOrganizationsStore() const [accessToken, setAccessToken] = useState() const [error, setError] = useState(false) + const [showConfirmedAlert, setShowConfirmedAlert] = useState(false) + const [visible, setVisible] = useState(false) + const [loaded, setLoaded] = useState(false) + const [pdfUrl, setPdfUrl] = useState('') + const [refetching, setRefetching] = useState(false) + + const refetchDocumentContent = async () => { + setRefetching(true) + try { + const result = await docRes.refetch({ + input: { id: docId, includeDocument: true }, + }) + if (result.data?.documentV2?.alert) { + setShowConfirmedAlert(true) + } + } finally { + markDocumentAsRead() + setRefetching(false) + setLoaded(true) + } + } + + const showConfirmationAlert = (confirmation: DocumentV2Action) => { + RNAlert.alert(confirmation.title ?? '', confirmation.data ?? '', [ + { + text: intl.formatMessage({ id: 'inbox.markAllAsReadPromptCancel' }), + style: 'cancel', + onPress: () => Navigation.pop(componentId), + }, + { + text: intl.formatMessage({ id: 'inbox.openDocument' }), + onPress: refetchDocumentContent, + }, + ]) + } // Check if we have the document in the cache const doc = useFragment_experimental({ @@ -182,14 +280,30 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ returnPartialData: true, }) + // We want to make sure we don't include the document content if isUrgent is undefined/null since then we don't have + // the info from the server and don't want to make any assumptions about it just yet + const shouldIncludeDocument = isUrgent === false + // Fetch the document to get the content information const docRes = useGetDocumentQuery({ variables: { input: { id: docId, + // If the document is urgent we need to check if the user needs to confirm reception of it before fetching the document data + includeDocument: shouldIncludeDocument, }, + locale: useLocale(), }, fetchPolicy: 'no-cache', + onCompleted: async (data) => { + const confirmation = data.documentV2?.confirmation + if (confirmation && !refetching) { + showConfirmationAlert(confirmation) + } else if (!confirmation && !refetching && !shouldIncludeDocument) { + // If the user has already confirmed accepting the document we fetch the content + refetchDocumentContent() + } + }, }) const Document = { @@ -197,9 +311,14 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ ...(docRes.data?.documentV2 || {}), } - const [visible, setVisible] = useState(false) - const [loaded, setLoaded] = useState(false) - const [pdfUrl, setPdfUrl] = useState('') + const hasActions = !!Document.actions?.length + const hasConfirmation = !!Document.confirmation + const hasAlert = + !!Document.alert && (Document.alert?.title || Document.alert?.data) + const showAdditionalInfo = + showConfirmedAlert || + (hasAlert && !hasConfirmation) || + (hasActions && !showConfirmedAlert && !hasConfirmation) const loading = docRes.loading || !accessToken const fileTypeLoaded = !!Document?.content?.type @@ -210,9 +329,11 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ Document?.content?.type.toLocaleLowerCase() === 'html' && Document.content?.value !== '' + const onShare = () => shareFile({ document: Document as DocumentV2, pdfUrl }) + useConnectivityIndicator({ componentId, - rightButtons: getRightButtons({ + rightButtons: getRightButtonsForDocumentDetail({ archived: doc.data?.archived ?? false, bookmarked: doc.data?.bookmarked ?? false, }), @@ -230,16 +351,7 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ ) } if (buttonId === ButtonRegistry.ShareButton && loaded) { - if (Platform.OS === 'android') { - authStore.setState({ noLockScreenUntilNextAppStateActive: true }) - } - Share.open({ - title: Document.subject!, - subject: Document.subject!, - message: `${Document.sender!.name!} \n ${Document.subject!}`, - type: hasPdf ? 'application/pdf' : undefined, - url: hasPdf ? `file://${pdfUrl}` : Document.downloadUrl!, - }) + onShare() } }, componentId) @@ -247,11 +359,10 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ setVisible(true) }) - useEffect(() => { + const markDocumentAsRead = () => { if (Document.opened) { return } - // Let's mark the document as read in the cache and decrease unreadCount if it is not 0 client.cache.modify({ id: client.cache.identify({ @@ -274,7 +385,14 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ }, }, }) - }, [Document.id, Document.opened]) + } + + useEffect(() => { + if (Document.opened || !shouldIncludeDocument) { + return + } + markDocumentAsRead() + }, [Document.id]) useEffect(() => { const { authorizeResult, refresh } = authStore.getState() @@ -317,14 +435,31 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ isLoading={loading && !Document.subject} hasBorder={false} logo={getOrganizationLogoUrl(Document.sender?.name ?? '', 75)} + label={isUrgent ? intl.formatMessage({ id: 'inbox.urgent' }) : ''} /> + {showAdditionalInfo && ( + + {showConfirmedAlert && ( + + )} + {hasActions && + getButtonsForActions( + openBrowser, + onShare, + componentId, + Document.actions, + )} + + )} - + tags to fix a bug in react-native that renders
with too much vertical space + // https://github.com/facebook/react-native/issues/32062 + `${htmlStyles}${Document.content?.value.replace( + regexForBr, + '', + )}` + : '', + }} scalesPageToFit onLoadEnd={() => { setLoaded(true) @@ -343,13 +487,17 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ /> ) : hasPdf ? ( - {visible && accessToken && ( + {visible && accessToken && loaded && ( { setPdfUrl(filePath) - setLoaded(true) + // Make sure to not set document as loaded until actions have been fetched + // To prevent top of first page not being shown + if (shouldIncludeDocument) { + setLoaded(true) + } }} onError={() => { setLoaded(true) @@ -392,7 +540,7 @@ export const DocumentDetailScreen: NavigationFunctionComponent<{ )}
)} - + ) } diff --git a/apps/native/app/src/screens/document-detail/utils/get-buttons-for-actions.tsx b/apps/native/app/src/screens/document-detail/utils/get-buttons-for-actions.tsx new file mode 100644 index 000000000000..b5baae22f5ea --- /dev/null +++ b/apps/native/app/src/screens/document-detail/utils/get-buttons-for-actions.tsx @@ -0,0 +1,74 @@ +import { Button } from '@ui' +import styled from 'styled-components' +import { View } from 'react-native' +import { isValidElement } from 'react' + +import openIcon from '../../../assets/icons/external-link.png' +import downloadIcon from '../../../assets/icons/download.png' +import { DocumentV2Action } from '../../../graphql/types/schema' + +const Host = styled(View)<{ setMaxWidth: boolean }>` + flex-direction: row; + align-items: center; + justify-content: center; + gap: ${({ theme }) => theme.spacing[2]}px; + max-width: ${({ setMaxWidth }) => (setMaxWidth ? '150px' : 'auto')}; +` + +const Action = styled(View)` + flex: 1; +` + +const getIcons = (icon: string) => { + switch (icon) { + case 'open': + return openIcon + case 'download': + return downloadIcon + default: + return null + } +} + +export const getButtonsForActions = ( + openBrowser: (link: string, componentId?: string) => void, + onShare: () => void, + componentId: string, + actions?: DocumentV2Action[] | null, +) => { + if (!actions?.length) { + return + } + const buttons = actions.map((action) => { + const icon = getIcons(action.icon ?? '') + const isFile = action.type === 'file' + const isUrl = action.type === 'url' + + if ((isFile || isUrl) && action.data && action.title) { + return ( + +

{isOpen && {children}} diff --git a/apps/native/app/src/ui/lib/alert/alert.tsx b/apps/native/app/src/ui/lib/alert/alert.tsx index 6efaf7302b97..cdf364e39748 100644 --- a/apps/native/app/src/ui/lib/alert/alert.tsx +++ b/apps/native/app/src/ui/lib/alert/alert.tsx @@ -14,8 +14,8 @@ import warning from '../../assets/alert/warning.png' import check from '../../assets/icons/check.png' import error from '../../assets/icons/error.png' import { dynamicColor } from '../../utils' -import { font } from '../../utils/font' import { Colors } from '../../utils/theme' +import { Typography } from '../typography/typography' export type AlertType = 'error' | 'info' | 'success' | 'warning' @@ -105,22 +105,10 @@ const Content = styled.View` flex: 1; ` -const Title = styled.Text` - ${font({ - fontSize: 16, - lineHeight: 20, - fontWeight: '600', - })} +const Title = styled(Typography)` margin-bottom: 4px; ` -const Message = styled.Text` - ${font({ - fontSize: 13, - lineHeight: 16, - })} -` - const Close = styled(TouchableOpacity)` padding: 10px; justify-content: center; @@ -203,15 +191,19 @@ export function Alert({ )} - {message && ( + {(message || title) && ( - {title && {title}} - {message} + {title && {title}} + {message && {message}} )} diff --git a/apps/native/app/src/ui/lib/badge/badge.tsx b/apps/native/app/src/ui/lib/badge/badge.tsx index 50c0a211722f..d6d91289ec07 100644 --- a/apps/native/app/src/ui/lib/badge/badge.tsx +++ b/apps/native/app/src/ui/lib/badge/badge.tsx @@ -1,37 +1,81 @@ import React from 'react' -import styled from 'styled-components/native' -import { dynamicColor } from '../../utils' -import { font } from '../../utils/font' +import styled, { useTheme } from 'styled-components/native' +import { Typography } from '../typography/typography' const Host = styled.View` overflow: hidden; border-radius: ${({ theme }) => theme.border.radius.standard}; - background-color: ${dynamicColor(({ theme }) => ({ - light: theme.color.roseTinted100, - dark: theme.shades.dark.shade300, - }))}; - padding: 5px 7px; + padding: ${({ theme }) => theme.spacing[1]}px; ` -const Text = styled.Text` - ${font({ - fontSize: 13, - fontWeight: '600', - color: ({ theme }) => ({ - light: theme.color.roseTinted400, - dark: theme.color.roseTinted200, - }), - })} -` +export const badgeColorSchemes = { + blue: { + color: 'blue400', + backgroundColor: 'blue100', + }, + mint: { + color: 'mint800', + backgroundColor: 'mint200', + }, + blueberry: { + color: 'blueberry400', + backgroundColor: 'blueberry100', + }, + darkerBlue: { + color: 'blue600', + backgroundColor: 'blue200', + }, + white: { + color: 'blue400', + backgroundColor: 'white', + }, + purple: { + color: 'purple400', + backgroundColor: 'purple100', + }, + red: { + color: 'red600', + backgroundColor: 'red100', + }, + rose: { + color: 'roseTinted400', + backgroundColor: 'roseTinted100', + }, + dark: { + color: 'dark400', + backgroundColor: 'dark200', + }, + yellow: { + color: 'dark400', + backgroundColor: 'yellow400', + }, + disabled: { + color: 'dark200', + backgroundColor: 'dark100', + }, + warn: { + color: 'dark400', + backgroundColor: 'yellow200', + }, +} as const interface BadgeProps { title: string + variant: keyof typeof badgeColorSchemes } -export function Badge({ title }: BadgeProps) { +export function Badge({ title, variant = 'blue' }: BadgeProps) { + const theme = useTheme() + const badgeVariant = badgeColorSchemes[variant] ?? 'blue' return ( - - {title} + + + {title} + ) } diff --git a/apps/native/app/src/ui/lib/button/button.tsx b/apps/native/app/src/ui/lib/button/button.tsx index 61e289997672..4798a959b0d3 100644 --- a/apps/native/app/src/ui/lib/button/button.tsx +++ b/apps/native/app/src/ui/lib/button/button.tsx @@ -17,6 +17,7 @@ interface ButtonBaseProps extends TouchableHighlightProps { textStyle?: TextStyle textProps?: TextProps iconStyle?: ImageStyle + ellipsis?: boolean } interface IconButtonProps extends ButtonBaseProps { @@ -115,6 +116,7 @@ export function Button({ textStyle, textProps, iconStyle, + ellipsis, ...rest }: ButtonProps) { const theme = useTheme() @@ -139,6 +141,8 @@ export function Button({ isUtilityButton={isUtilityButton} disabled={rest.disabled} style={textStyle} + numberOfLines={ellipsis ? 1 : undefined} + ellipsizeMode={ellipsis ? 'tail' : undefined} > {title} diff --git a/apps/native/app/src/ui/lib/card/air-discount-card.tsx b/apps/native/app/src/ui/lib/card/air-discount-card.tsx index 98679bf877eb..61b762f1848f 100644 --- a/apps/native/app/src/ui/lib/card/air-discount-card.tsx +++ b/apps/native/app/src/ui/lib/card/air-discount-card.tsx @@ -6,6 +6,7 @@ import styled, { useTheme } from 'styled-components/native' import { dynamicColor } from '../../utils' import { font } from '../../utils/font' import { Typography } from '../typography/typography' +import { ViewStyle } from 'react-native' const Host = styled.View` margin-vertical: ${({ theme }) => theme.spacing[1]}px; @@ -84,6 +85,7 @@ interface AirDiscountProps { code?: string | null text?: string | null validUntil?: string | Date | null + style?: ViewStyle } export function AirDiscountCard({ @@ -92,12 +94,13 @@ export function AirDiscountCard({ text, validUntil, credit, + style, }: AirDiscountProps) { const intl = useIntl() const theme = useTheme() const discountCode = credit === 0 ? undefined : code ?? '0' return ( - + (false) - useEffect(() => setStarred(!!bookmarked), [bookmarked]) return ( { - toggleAction(!bookmarked ? 'bookmark' : 'unbookmark', id) - setStarred(!bookmarked) - }} + urgent={!!isUrgent} icon={icon} /> diff --git a/apps/native/app/src/ui/lib/card/license-card.tsx b/apps/native/app/src/ui/lib/card/license-card.tsx index b252b0c3ee77..59bb96d5ba5e 100644 --- a/apps/native/app/src/ui/lib/card/license-card.tsx +++ b/apps/native/app/src/ui/lib/card/license-card.tsx @@ -38,11 +38,12 @@ export const LICENSE_CARD_ROW_GAP = theme.spacing.p2 const Host = styled(Animated.View)` position: relative; - min-height: 112px; + min-height: 104px; padding: ${({ theme }) => theme.spacing[2]}px; row-gap: ${LICENSE_CARD_ROW_GAP}px; border-radius: ${({ theme }) => theme.border.radius.extraLarge}; overflow: hidden; + justify-content: center; ` const ContentContainer = styled.View` @@ -130,6 +131,8 @@ const ImgWrap = styled.View` flex-shrink: 0; align-content: center; justify-content: center; + height: 72px; + width: 72px; ` // Todo when we know the status type add to intl @@ -340,7 +343,7 @@ export function LicenseCard({ {isString(logo) ? ( ) : ( - + )} )} diff --git a/apps/native/app/src/ui/lib/card/more-card.tsx b/apps/native/app/src/ui/lib/card/more-card.tsx new file mode 100644 index 000000000000..d63610ef61eb --- /dev/null +++ b/apps/native/app/src/ui/lib/card/more-card.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import { Image, ImageSourcePropType, TouchableHighlight } from 'react-native' +import styled, { useTheme } from 'styled-components/native' + +import { dynamicColor } from '../../utils' +import { Typography } from '../typography/typography' + +const Host = styled.View` + display: flex; + flex: 1; + padding: ${({ theme }) => theme.spacing[2]}px; + border-radius: ${({ theme }) => theme.border.radius.large}; + border-width: ${({ theme }) => theme.border.width.standard}px; + border-color: ${dynamicColor( + ({ theme }) => ({ + light: theme.color.blue200, + dark: theme.shades.dark.shade300, + }), + true, + )}; + align-items: center; + justify-content: center; +` + +const Title = styled(Typography)` + margin-top: ${({ theme }) => theme.spacing[1]}px; + text-align: center; +` + +interface AssetCardProps { + title: string + icon: ImageSourcePropType + onPress: () => void +} + +export const MoreCard = ({ icon, title, onPress }: AssetCardProps) => { + const theme = useTheme() + return ( + + + + {title} + + + ) +} diff --git a/apps/native/app/src/ui/lib/card/status-card.tsx b/apps/native/app/src/ui/lib/card/status-card.tsx index 8a4b2fcc2485..9ddf4001376c 100644 --- a/apps/native/app/src/ui/lib/card/status-card.tsx +++ b/apps/native/app/src/ui/lib/card/status-card.tsx @@ -1,14 +1,15 @@ import React from 'react' import { FormattedDate } from 'react-intl' import { Image, ImageSourcePropType, View, ViewStyle } from 'react-native' -import styled from 'styled-components/native' +import styled, { useTheme } from 'styled-components/native' import timeOutlineIcon from '../../assets/card/time-outline.png' import { dynamicColor } from '../../utils/dynamic-color' -import { font } from '../../utils/font' +import { Typography } from '../typography/typography' +import { useOrganizationsStore } from '../../../stores/organizations-store' +import { ProgressMeter } from '../progress-meter/progress-meter' const Host = styled.View` - width: 100%; - min-height: 160px; + min-height: 180px; border-radius: ${({ theme }) => theme.border.radius.large}; border-width: ${({ theme }) => theme.border.width.standard}px; border-color: ${dynamicColor( @@ -22,6 +23,8 @@ const Host = styled.View` ` const ActionsContainer = styled.View` + justify-content: center; + align-items: center; border-top-width: ${({ theme }) => theme.border.width.standard}px; border-top-color: ${dynamicColor( (props) => ({ @@ -34,9 +37,6 @@ const ActionsContainer = styled.View` ` const ActionButton = styled.TouchableOpacity<{ border: boolean }>` - flex: 1; - align-items: center; - justify-content: center; padding: ${({ theme }) => theme.spacing[2]}px; border-left-width: ${({ theme }) => theme.border.width.standard}px; border-left-color: ${dynamicColor( @@ -45,35 +45,16 @@ const ActionButton = styled.TouchableOpacity<{ border: boolean }>` )}; ` -const ActionText = styled.Text` - ${font({ - fontWeight: '600', - color: ({ theme }) => theme.color.blue400, - })} - text-align: center; -` - -const Title = styled.Text` - margin-bottom: ${({ theme }) => theme.spacing[1]}px; - - ${font({ - fontWeight: '600', - fontSize: 13, - lineHeight: 17, - })} -` - -const Description = styled.Text` - ${font({ - fontWeight: '300', - lineHeight: 24, - })} +const Title = styled.View` + flex-direction: row; + padding-bottom: ${({ theme }) => theme.spacing[1]}px; + align-items: center; ` const Content = styled.View` - padding: ${({ theme }) => theme.spacing[2]}px; - padding-top: 0px; flex: 1; + padding: ${({ theme }) => theme.spacing[2]}px; + padding-top: 0; ` const Date = styled.View` @@ -81,47 +62,22 @@ const Date = styled.View` align-items: center; ` -const DateText = styled.Text` - ${font({ - fontWeight: '300', - fontSize: 13, - lineHeight: 17, - })} -` - const Row = styled.View` flex-direction: row; justify-content: space-between; padding: ${({ theme }) => theme.spacing[2]}px; ` -const Bar = styled.View` - height: 12px; - padding: 2px; - overflow: hidden; - background-color: ${dynamicColor(({ theme }) => ({ - dark: theme.color.roseTinted600, - light: theme.color.roseTinted200, - }))}; - border-radius: 6px; - - margin-top: ${({ theme }) => theme.spacing[2]}px; -` - -const Progress = styled.View<{ width?: number }>` - flex: 1; - width: ${(props) => props.width ?? 0}%; - border-radius: 6px; - - background-color: ${dynamicColor(({ theme }) => theme.color.roseTinted400)}; -` - interface StatusCardProps { title: string description?: string date: Date badge?: React.ReactNode progress?: number + progressTotalSteps?: number + progressMessage?: string + progressContainerWidth?: number + institution?: string actions: Array<{ text: string; onPress(): void }> style?: ViewStyle } @@ -134,34 +90,63 @@ export function StatusCard({ progress, actions = [], style, + institution, + progressTotalSteps, + progressMessage, + progressContainerWidth, }: StatusCardProps) { + const { getOrganizationLogoUrl } = useOrganizationsStore() + const icon = getOrganizationLogoUrl(institution ?? '') + const theme = useTheme() + + const hideProgress = !progress && !progressTotalSteps + return ( - + - + {badge} - {title} - {!!description && {description}} - - - - + + <Image + source={icon} + style={{ width: 24, height: 24, marginRight: theme.spacing[1] }} + /> + <Typography variant="heading5" style={{ flexShrink: 1 }}> + {title} + </Typography> + + {!!description && {description}} + {!hideProgress && ( + + )} + {actions.length ? ( {actions.map(({ text, onPress }, i) => ( - {text} + + {text} + ))} diff --git a/apps/native/app/src/ui/lib/card/vehicle-card.tsx b/apps/native/app/src/ui/lib/card/vehicle-card.tsx index 6687b6e2eb20..567452a28590 100644 --- a/apps/native/app/src/ui/lib/card/vehicle-card.tsx +++ b/apps/native/app/src/ui/lib/card/vehicle-card.tsx @@ -5,7 +5,7 @@ import chevronForward from '../../assets/icons/chevron-forward.png' import { dynamicColor } from '../../utils' import { Typography } from '../typography/typography' -const Host = styled.View` +const Host = styled.View<{ minHeight?: number }>` display: flex; flex-direction: row; padding: ${({ theme }) => theme.spacing[3]}px; @@ -21,6 +21,7 @@ const Host = styled.View` )}; align-items: center; justify-content: space-between; + min-height: ${({ minHeight }) => (minHeight ? minHeight + 'px' : 'auto')}; ` const Content = styled.View` @@ -49,14 +50,27 @@ interface VehicleCardProps { title?: string | null color?: string | null number?: string | null + minHeight?: number label?: React.ReactNode } -export function VehicleCard({ title, color, number, label }: VehicleCardProps) { +export function VehicleCard({ + title, + color, + number, + label, + minHeight, +}: VehicleCardProps) { return ( - + - {title} + + {title} + {color} - {number} diff --git a/apps/native/app/src/ui/lib/checkbox/checkbox.tsx b/apps/native/app/src/ui/lib/checkbox/checkbox.tsx new file mode 100644 index 000000000000..1d06146165a4 --- /dev/null +++ b/apps/native/app/src/ui/lib/checkbox/checkbox.tsx @@ -0,0 +1,41 @@ +import React from 'react' +import styled from 'styled-components/native' +import { Image } from 'react-native' + +import checkedIcon from '../../assets/icons/checkbox-checked.png' +import uncheckedIcon from '../../assets/icons/checkbox-unchecked.png' +import { dynamicColor } from '../../utils' +import { Typography } from '../typography/typography' + +const Host = styled.Pressable` + flex-direction: row; + justify-content: space-between; + align-items: center; + padding-vertical: ${({ theme }) => theme.spacing[2]}px; + margin-horizontal: ${({ theme }) => theme.spacing[2]}px; + border-bottom-width: ${({ theme }) => theme.border.width.standard}px; + border-bottom-color: ${dynamicColor( + ({ theme }) => ({ + light: theme.color.blue200, + dark: theme.shades.dark.shade300, + }), + true, + )}; +` + +interface CheckboxProps { + label: string + checked: boolean + onPress: () => void +} + +export const Checkbox = ({ label, checked, onPress }: CheckboxProps) => { + return ( + + + {label} + + + + ) +} diff --git a/apps/native/app/src/ui/lib/date-picker/date-picker.tsx b/apps/native/app/src/ui/lib/date-picker/date-picker.tsx new file mode 100644 index 000000000000..d31868bd922f --- /dev/null +++ b/apps/native/app/src/ui/lib/date-picker/date-picker.tsx @@ -0,0 +1,110 @@ +import React, { useEffect, useState } from 'react' +import styled from 'styled-components/native' +import DatePicker from 'react-native-date-picker' + +import calendarIcon from '../../assets/icons/calendar.png' +import { Typography } from '../typography/typography' +import { dynamicColor } from '@ui/utils/dynamic-color' +import { useIntl } from 'react-intl' +import { View, Image } from 'react-native' + +const Host = styled.View` + padding-vertical: ${({ theme }) => theme.spacing[1]}px; + margin-horizontal: ${({ theme }) => theme.spacing[2]}px; +` + +const DateInput = styled.Pressable` + flex-direction: row; + align-items: center; + justify-content: space-between; + padding: ${({ theme }) => theme.spacing[1]}px; + padding-right: ${({ theme }) => theme.spacing[2]}px; + border-radius: ${({ theme }) => theme.border.radius.large}; + border-width: 1px; + border-style: solid; + border-color: ${dynamicColor( + (props) => ({ + dark: 'shade500', + light: props.theme.color.blue200, + }), + true, + )}; + background-color: ${dynamicColor((props) => ({ + dark: 'shade300', + light: props.theme.color.blue100, + }))}; +` + +const Label = styled(Typography)` + color: ${dynamicColor((props) => ({ + dark: 'foreground', + light: props.theme.color.blue400, + }))}; + margin-bottom: ${({ theme }) => theme.spacing.smallGutter}px; +` + +const DateSelected = styled(Typography)<{ empty: boolean }>` + padding-left: ${({ theme }) => theme.spacing[1]}px; + padding-top: 0px; + padding-bottom: 0px; + font-weight: ${({ empty }) => (empty ? 400 : 600)}; +` + +interface DatePickerProps { + label: string + placeholder?: string + minimumDate?: Date + maximumDate?: Date + selectedDate?: Date + onSelectDate?: (date: Date) => void +} + +export const DatePickerInput = ({ + label, + placeholder, + maximumDate, + minimumDate, + onSelectDate, + selectedDate, +}: DatePickerProps) => { + const intl = useIntl() + const [date, setDate] = useState(selectedDate) + const [openDatePicker, setOpenDatePicker] = useState(false) + + useEffect(() => { + setDate(selectedDate) + }, [selectedDate]) + + return ( + + setOpenDatePicker(true)}> + + + + {!date ? placeholder ?? '' : intl.formatDate(date)} + + + + + { + setOpenDatePicker(false) + setDate(date) + onSelectDate?.(date) + }} + onCancel={() => { + setOpenDatePicker(false) + }} + /> + + ) +} diff --git a/apps/native/app/src/ui/lib/detail/header.tsx b/apps/native/app/src/ui/lib/detail/header.tsx index 3265d46c3030..5030df774d12 100644 --- a/apps/native/app/src/ui/lib/detail/header.tsx +++ b/apps/native/app/src/ui/lib/detail/header.tsx @@ -4,9 +4,10 @@ import styled from 'styled-components/native' import { dynamicColor } from '../../utils/dynamic-color' import { Skeleton } from '../skeleton/skeleton' import { Typography } from '../typography/typography' +import { Label } from '@ui' const Host = styled.View<{ hasBorder?: boolean }>` - padding-bottom: ${({ theme }) => theme.spacing[2]}px; + padding-bottom: ${({ theme }) => theme.spacing[1]}px; border-bottom-width: ${({ hasBorder }) => (hasBorder ? '1px' : 0)}; border-bottom-color: ${dynamicColor( (props) => ({ @@ -43,6 +44,7 @@ const LogoBackground = styled.View` const Row = styled.View` flex-direction: row; justify-content: space-between; + align-items: center; padding-bottom: ${({ theme }) => theme.spacing[1]}px; ` @@ -60,6 +62,7 @@ interface HeaderProps { message?: string isLoading?: boolean hasBorder?: boolean + label?: string } export function Header({ @@ -69,6 +72,7 @@ export function Header({ message, isLoading, hasBorder = true, + label, }: HeaderProps) { return ( @@ -97,13 +101,24 @@ export function Header({ )} - {message && isLoading ? ( - - ) : message && !isLoading ? ( - - {message} - - ) : null} + + {message && isLoading ? ( + + ) : message && !isLoading ? ( + + {message} + + ) : null} + {label && ( + + )} + ) } diff --git a/apps/native/app/src/ui/lib/empty-state/empty-card.tsx b/apps/native/app/src/ui/lib/empty-state/empty-card.tsx index 21ebe4b8269d..b9f083e04f7c 100644 --- a/apps/native/app/src/ui/lib/empty-state/empty-card.tsx +++ b/apps/native/app/src/ui/lib/empty-state/empty-card.tsx @@ -9,7 +9,7 @@ const Host = styled.View` flex-direction: row; padding-horizontal: ${({ theme }) => theme.spacing[3]}px; padding-vertical: ${({ theme }) => theme.spacing[3]}px; - + min-height: 130px; border-radius: ${({ theme }) => theme.border.radius.large}; border-width: 1px; border-color: ${dynamicColor( @@ -23,10 +23,6 @@ const Host = styled.View` align-items: center; ` -const Message = styled(Typography)` - margin-bottom: ${({ theme }) => theme.spacing[2]}px; -` - const TextWrapper = styled.View` flex: 1; ` @@ -41,7 +37,7 @@ export function EmptyCard({ text, image, link }: EmptyCardProps) { return ( - {text} + {text} {link && {link}} {image} diff --git a/apps/native/app/src/ui/lib/heading/heading.tsx b/apps/native/app/src/ui/lib/heading/heading.tsx index 3f3f1a1a642d..33a514f82eb8 100644 --- a/apps/native/app/src/ui/lib/heading/heading.tsx +++ b/apps/native/app/src/ui/lib/heading/heading.tsx @@ -1,6 +1,6 @@ import React from 'react' import styled from 'styled-components/native' -import { font } from '../../utils/font' +import { Typography } from '../typography/typography' const Host = styled.View` display: flex; @@ -14,23 +14,19 @@ const TextContainer = styled.View` flex: 1; ` -const Text = styled.Text` - ${font({ - fontWeight: '600', - fontSize: 20, - })} -` - interface HeadingProps { children: React.ReactNode button?: React.ReactNode + small?: boolean } -export function Heading({ children, button }: HeadingProps) { +export function Heading({ children, button, small = false }: HeadingProps) { return ( - {children} + + {children} + {button} diff --git a/apps/native/app/src/ui/lib/input/input-row.tsx b/apps/native/app/src/ui/lib/input/input-row.tsx index c9ef432c57d6..63a7b3cc4ffb 100644 --- a/apps/native/app/src/ui/lib/input/input-row.tsx +++ b/apps/native/app/src/ui/lib/input/input-row.tsx @@ -1,14 +1,18 @@ import React from 'react' import styled from 'styled-components/native' -const Host = styled.View` +const Host = styled.View<{ background: boolean }>` flex-direction: row; + background-color: ${({ theme, background }) => + background ? theme.color.blueberry100 : 'transparent'}; + border-radius: ${({ theme }) => theme.border.radius.standard}; ` interface InputRowProps { + background?: boolean children: React.ReactNode } -export function InputRow({ children }: InputRowProps) { - return {children} +export function InputRow({ children, background = false }: InputRowProps) { + return {children} } diff --git a/apps/native/app/src/ui/lib/input/input.tsx b/apps/native/app/src/ui/lib/input/input.tsx index 945169953648..da6f61c19420 100644 --- a/apps/native/app/src/ui/lib/input/input.tsx +++ b/apps/native/app/src/ui/lib/input/input.tsx @@ -4,18 +4,23 @@ import { Image, TouchableOpacity, View } from 'react-native' import styled from 'styled-components/native' import CopyIcon from '../../assets/icons/copy.png' import { dynamicColor } from '../../utils' -import { font } from '../../utils/font' import { Skeleton } from '../skeleton/skeleton' -const Host = styled.SafeAreaView<{ noBorder: boolean; borderDark?: boolean }>` +import { Typography } from '../typography/typography' + +const Host = styled.SafeAreaView<{ + noBorder: boolean + darkBorder?: boolean + background?: boolean +}>` flex: 1; border-bottom-width: ${({ theme }) => theme.border.width.standard}px; border-bottom-color: ${dynamicColor( - ({ theme, noBorder, borderDark }) => ({ + ({ theme, noBorder, darkBorder }) => ({ light: noBorder ? 'transparent' - : borderDark - ? theme.color.blue200 - : theme.color.blue100, + : darkBorder + ? theme.color.blueberry200 + : theme.color.blue200, dark: noBorder ? 'transparent' : theme.shades.dark.shade200, }), true, @@ -30,20 +35,8 @@ const Content = styled.View<{ isCompact: boolean }>` theme.spacing[isCompact ? 1 : 3]}px; ` -const Label = styled.Text` +const Label = styled(Typography)` margin-bottom: ${({ theme }) => theme.spacing[1]}px; - - ${font({ - fontSize: 13, - lineHeight: 17, - })} -` - -const Value = styled.Text<{ size?: 'normal' | 'big' }>` - ${font({ - fontSize: ({ size }) => (size === 'big' ? 20 : 16), - fontWeight: '600', - })} ` interface InputProps { @@ -55,7 +48,7 @@ interface InputProps { noBorder?: boolean size?: 'normal' | 'big' isCompact?: boolean - borderDark?: boolean + darkBorder?: boolean copy?: boolean } @@ -68,16 +61,16 @@ export function Input({ noBorder = false, size = 'normal', isCompact = false, - borderDark = false, + darkBorder = false, copy = false, }: InputProps) { const tvalue = value !== undefined && typeof value === 'string' && value.trim() return ( - + - + {loading || error ? ( ) : ( - + {tvalue === '' || !value ? '-' : value} - + {copy && ( Clipboard.setString(value ?? '')} diff --git a/apps/native/app/src/ui/lib/label/label.tsx b/apps/native/app/src/ui/lib/label/label.tsx index 27f25379e5c6..c476dfe7d3ab 100644 --- a/apps/native/app/src/ui/lib/label/label.tsx +++ b/apps/native/app/src/ui/lib/label/label.tsx @@ -1,12 +1,16 @@ -import { dynamicColor, font } from '@ui/utils' +import { dynamicColor } from '@ui/utils' import { Image } from 'react-native' import styled, { DefaultTheme } from 'styled-components/native' import dangerIcon from '../../assets/alert/danger.png' import infoIcon from '../../assets/alert/info-alert.png' import warningIcon from '../../assets/alert/warning.png' +import { Typography } from '../typography/typography' -type LabelColor = 'default' | 'primary' | 'danger' | 'warning' -type HelperProps = { theme: DefaultTheme; color: LabelColor } +type LabelColor = 'default' | 'primary' | 'danger' | 'warning' | 'urgent' +type HelperProps = { + theme: DefaultTheme + color: LabelColor +} interface LabelProps { color?: LabelColor @@ -14,8 +18,9 @@ interface LabelProps { children?: React.ReactNode } -function getBorderColor({ theme, color }: HelperProps) { +const getBorderColor = ({ theme, color }: HelperProps) => { switch (color) { + case 'urgent': case 'danger': return { light: theme.color.red200, dark: theme.shades.dark.shade300 } case 'warning': @@ -27,8 +32,9 @@ function getBorderColor({ theme, color }: HelperProps) { } } -function getBackgroundColor({ theme, color }: HelperProps) { +const getBackgroundColor = ({ theme, color }: HelperProps) => { switch (color) { + case 'urgent': case 'danger': return { light: theme.color.red100, dark: 'transparent' } case 'warning': @@ -38,8 +44,10 @@ function getBackgroundColor({ theme, color }: HelperProps) { } } -function getTextColor({ theme, color }: HelperProps) { +const getTextColor = ({ theme, color }: HelperProps) => { switch (color) { + case 'urgent': + return { light: theme.color.dark400, dark: theme.color.dark100 } case 'danger': return { light: theme.color.red600, dark: theme.color.red400 } case 'primary': @@ -49,12 +57,13 @@ function getTextColor({ theme, color }: HelperProps) { } } -function getIconByColor(color: LabelColor) { +const getIconByColor = (color: LabelColor) => { switch (color) { case 'primary': return infoIcon case 'warning': return warningIcon + case 'urgent': case 'danger': return dangerIcon default: @@ -77,12 +86,9 @@ const LabelHost = styled.View<{ color: LabelColor }>` background-color: ${dynamicColor(getBackgroundColor)}; ` -const LabelText = styled.Text<{ color: LabelColor }>` - ${font({ - fontWeight: '600', - fontSize: 12, - })} - +const LabelText = styled(Typography)<{ + color: LabelColor +}>` color: ${dynamicColor(getTextColor, true)}; ` @@ -101,7 +107,9 @@ export function Label({ color = 'default', children, icon }: LabelProps) { return ( {iconElement} - {children} + + {children} + ) } diff --git a/apps/native/app/src/ui/lib/link/link.tsx b/apps/native/app/src/ui/lib/link/link.tsx index 51a98cb50fb1..72f4fc606916 100644 --- a/apps/native/app/src/ui/lib/link/link.tsx +++ b/apps/native/app/src/ui/lib/link/link.tsx @@ -1,17 +1,10 @@ import React, { useCallback } from 'react' import { Alert, Linking } from 'react-native' import styled from 'styled-components/native' -import { font } from '../../utils/font' +import { Typography } from '../typography/typography' const Host = styled.TouchableOpacity`` -const Text = styled.Text` - ${font({ - fontWeight: '300', - lineHeight: 24, - })} -` - interface LinkProps { url: string children: React.ReactNode @@ -30,7 +23,7 @@ export function Link({ url, children }: LinkProps) { return ( - {children} + {children} ) } diff --git a/apps/native/app/src/ui/lib/list/list-item.tsx b/apps/native/app/src/ui/lib/list/list-item.tsx index 8f77cd93bc13..675f565bd77b 100644 --- a/apps/native/app/src/ui/lib/list/list-item.tsx +++ b/apps/native/app/src/ui/lib/list/list-item.tsx @@ -1,11 +1,9 @@ -import { Typography } from '@ui' +import { Label, Typography } from '@ui' import React, { isValidElement } from 'react' -import { FormattedDate } from 'react-intl' -import { Image, ImageSourcePropType, Pressable } from 'react-native' +import { FormattedDate, useIntl } from 'react-intl' +import { Image, ImageSourcePropType } from 'react-native' import styled from 'styled-components/native' -import StarFilled from '../../../assets/icons/star-filled.png' -import Star from '../../../assets/icons/star.png' import { dynamicColor } from '../../utils' const Host = styled.SafeAreaView<{ unread?: boolean }>` @@ -61,16 +59,6 @@ const Title = styled.View` const Cell = styled.View`` -const StarImage = styled.Image<{ active?: boolean }>` - tint-color: ${dynamicColor(({ active, theme }) => ({ - dark: active ? theme.color.blue400 : theme.color.dark300, - light: active ? theme.color.blue400 : theme.color.dark300, - }))}; - width: 16px; - height: 16px; - margin-top: -4px; -` - interface ListItemAction { id: string text: string @@ -84,8 +72,7 @@ interface ListItemProps { unread?: boolean actions?: ListItemAction[] icon?: ImageSourcePropType | React.ReactNode - onStarPress?(): void - starred?: boolean + urgent?: boolean } export function ListItem({ @@ -93,10 +80,10 @@ export function ListItem({ subtitle, date, icon, - onStarPress, - starred = false, unread = false, + urgent = false, }: ListItemProps) { + const intl = useIntl() return ( @@ -117,7 +104,6 @@ export function ListItem({ variant="body3" numberOfLines={1} ellipsizeMode="tail" - style={{ fontWeight: '300' }} > {title} @@ -136,12 +122,11 @@ export function ListItem({ > {subtitle} - - - + {urgent && ( + + )} diff --git a/apps/native/app/src/ui/lib/navigation-bar-sheet/navigation-bar-sheet.tsx b/apps/native/app/src/ui/lib/navigation-bar-sheet/navigation-bar-sheet.tsx index 82932b08a400..5bc8f39493e7 100644 --- a/apps/native/app/src/ui/lib/navigation-bar-sheet/navigation-bar-sheet.tsx +++ b/apps/native/app/src/ui/lib/navigation-bar-sheet/navigation-bar-sheet.tsx @@ -72,12 +72,14 @@ export function NavigationBarSheet({ onClosePress, style, showLoading, + closable = true, }: { title?: React.ReactNode componentId: string onClosePress(): void style?: ViewStyle showLoading?: boolean + closable?: boolean }) { const isConnected = useOfflineStore(({ isConnected }) => isConnected) const wd = useWindowDimensions() @@ -90,38 +92,42 @@ export function NavigationBarSheet({ return ( <> - {isHandle && } + {isHandle && closable && } -
- {typeof title === 'string' ? ( - {title} - ) : ( - title - )} - - {/*Only show loading icon if connected*/} - {showLoading && isConnected ? : null} - - - - - -
+ {(closable || title) && ( +
+ {typeof title === 'string' ? ( + {title} + ) : ( + title + )} + + {/*Only show loading icon if connected*/} + {showLoading && isConnected ? : null} + + {closable && ( + + + + )} + +
+ )}
) diff --git a/apps/native/app/src/ui/lib/problem/problem-template.tsx b/apps/native/app/src/ui/lib/problem/problem-template.tsx index ce12ded628ef..b15358fbdc05 100644 --- a/apps/native/app/src/ui/lib/problem/problem-template.tsx +++ b/apps/native/app/src/ui/lib/problem/problem-template.tsx @@ -80,17 +80,20 @@ const Host = styled.View<{ padding: ${({ theme }) => theme.spacing[2]}px; ${({ noContainer, theme }) => noContainer && `margin: ${theme.spacing[2]}px;`} + min-height: 280px; ` -const Tag = styled(Typography)<{ +const Tag = styled(View)<{ backgroundColor: Colors - color?: Colors }>` background-color: ${({ backgroundColor, theme }) => theme.color[backgroundColor]}; padding: ${({ theme }) => theme.spacing[1]}px; border-radius: ${({ theme }) => theme.border.radius.large}; overflow: hidden; +` + +const TagText = styled(Typography)<{ color?: Colors }>` ${({ color, theme }) => color && `color: ${theme.color[color]};`} ` @@ -118,12 +121,10 @@ export const ProblemTemplate = ({ return ( {tag && ( - - {tag} + + + {tag} + )} {showIcon && } diff --git a/apps/native/app/src/ui/lib/progress-meter/progress-meter.tsx b/apps/native/app/src/ui/lib/progress-meter/progress-meter.tsx new file mode 100644 index 000000000000..47d47d148282 --- /dev/null +++ b/apps/native/app/src/ui/lib/progress-meter/progress-meter.tsx @@ -0,0 +1,104 @@ +import React from 'react' +import { View } from 'react-native' +import { screenWidth } from '../../../utils/dimensions' +import styled, { useTheme } from 'styled-components/native' +import { Typography } from '../typography/typography' + +const Host = styled.View` + border-radius: ${({ theme: { border } }) => border.radius.extraLarge}; + height: 16px; + padding: ${({ theme }) => theme.spacing.smallGutter}px; + margin-top: ${({ theme }) => theme.spacing[1]}px; +` + +const InnerHost = styled.View` + flex: 1; + flex-direction: row; + column-gap: ${({ theme }) => theme.spacing.smallGutter}px; + border-radius: ${({ theme: { border } }) => border.radius.large}; + height: 100%; +` + +export type ProgressMeterVariant = 'blue' | 'red' | 'rose' | 'mint' + +interface ProgressMeterProps { + totalSteps: number + finishedSteps: number + containerWidth?: number + variant?: ProgressMeterVariant + progressMessage?: string +} + +const colorSchemes = { + blue: { + unfinished: 'blue200', + outer: 'blue100', + inner: 'blue400', + }, + red: { + unfinished: 'red200', + outer: 'red100', + inner: 'red400', + }, + rose: { + unfinished: 'roseTinted200', + outer: 'roseTinted100', + inner: 'roseTinted400', + }, + mint: { + unfinished: 'mint200', + outer: 'mint100', + inner: 'mint600', + }, +} as const + +export const ProgressMeter = ({ + finishedSteps, + totalSteps, + progressMessage, + containerWidth, + variant = 'blue', +}: ProgressMeterProps) => { + const theme = useTheme() + const steps = Array.from(Array(totalSteps ?? 1).keys()) + const allowedWidth = containerWidth ?? screenWidth - theme.spacing[2] * 4 + + if (!totalSteps) { + return + } + // Take into account padding in each end and between each step + const stepWidth = + (allowedWidth - + theme.spacing.smallGutter * 2 - + totalSteps * theme.spacing.smallGutter) / + totalSteps + + return ( + <> + + + {steps.map((i) => ( + i + ? theme.color[colorSchemes[variant].inner] + : theme.color[colorSchemes[variant].unfinished], + borderRadius: 8, + width: stepWidth, + }} + key={`draft-progress-meter-${i}`} + /> + ))} + + + + + {progressMessage} + + + + ) +} diff --git a/apps/native/app/src/ui/lib/skeleton/general-card-skeleton.tsx b/apps/native/app/src/ui/lib/skeleton/general-card-skeleton.tsx new file mode 100644 index 000000000000..8bbd1552977a --- /dev/null +++ b/apps/native/app/src/ui/lib/skeleton/general-card-skeleton.tsx @@ -0,0 +1,26 @@ +import React from 'react' +import { useTheme } from 'styled-components/native' +import { Skeleton } from './skeleton' + +export const GeneralCardSkeleton = ({ height }: { height: number }) => { + const theme = useTheme() + return ( + + ) +} diff --git a/apps/native/app/src/ui/lib/tableview/tableview-cell.tsx b/apps/native/app/src/ui/lib/tableview/tableview-cell.tsx index 645979f4b8f1..c42e4a6c2df1 100644 --- a/apps/native/app/src/ui/lib/tableview/tableview-cell.tsx +++ b/apps/native/app/src/ui/lib/tableview/tableview-cell.tsx @@ -3,6 +3,7 @@ import { SafeAreaView, ViewStyle } from 'react-native' import styled from 'styled-components/native' import { dynamicColor } from '../../utils' import { font } from '../../utils/font' +import { Typography } from '../typography/typography' interface TableViewCellProps { /** @@ -40,12 +41,12 @@ interface TableViewCellProps { const Cell = styled.View<{ border: boolean; disabled: boolean }>` flex-direction: row; - min-height: 71px; + min-height: 56px; border-bottom-width: ${(props) => (props.border ? 1 : 0)}px; border-bottom-color: ${dynamicColor( ({ theme }) => ({ dark: theme.shades.dark.shade200, - light: theme.color.blue100, + light: theme.color.blue200, }), true, )}; @@ -64,7 +65,7 @@ const Center = styled.View<{ accessory: boolean }>` flex: 1; justify-content: center; flex-direction: column; - padding-right: ${(props) => (props.accessory ? 15 : 0)}px; + padding-right: ${(props) => (props.accessory ? props.theme.spacing[2] : 0)}px; padding-top: ${({ theme }) => theme.spacing[2]}px; padding-bottom: ${({ theme }) => theme.spacing[2]}px; ` @@ -80,16 +81,12 @@ const Content = styled.View` flex-direction: column; ` -const Title = styled.View`` - -const TitleText = styled.Text` - ${font({ - fontSize: 15, - fontWeight: '400', - })} +const Title = styled.View` + margin-left: ${({ theme }) => theme.spacing[2]}px; ` const Subtitle = styled.View` + margin-left: ${({ theme }) => theme.spacing[2]}px; margin-top: 2px; ` @@ -124,7 +121,7 @@ export const TableViewCell = React.memo((props: TableViewCellProps) => { style = {}, } = props return ( - + { {title && ( {typeof title === 'string' ? ( - <TitleText>{title}</TitleText> + <Typography weight={400}>{title}</Typography> ) : ( title )} diff --git a/apps/native/app/src/ui/lib/text-field/text-field.tsx b/apps/native/app/src/ui/lib/text-field/text-field.tsx index 16ff58f518d5..48e3ae8c0ea5 100644 --- a/apps/native/app/src/ui/lib/text-field/text-field.tsx +++ b/apps/native/app/src/ui/lib/text-field/text-field.tsx @@ -2,6 +2,7 @@ import React, { useRef } from 'react' import { TextInput, TextInputProps } from 'react-native' import styled from 'styled-components/native' import { dynamicColor, font } from '../../utils' +import { Typography } from '../typography/typography' const Host = styled.Pressable` padding: ${({ theme }) => theme.spacing[1]}px; @@ -21,28 +22,23 @@ const Host = styled.Pressable` }))}; ` -const Label = styled.Text` - ${font({ - fontSize: 12, - lineHeight: 16, - fontWeight: '600', - })} - +const Label = styled(Typography)` color: ${dynamicColor((props) => ({ dark: 'foreground', light: props.theme.color.blue400, }))}; - margin-bottom: 4px; + margin-bottom: ${({ theme }) => theme.spacing.smallGutter}px; ` -const Input = styled(TextInput)` +const Input = styled.TextInput<{ value: string }>` padding-left: ${({ theme }) => theme.spacing[1]}px; padding-top: 0px; padding-bottom: 0px; + ${font({ fontSize: 16, lineHeight: 20, - fontWeight: '600', + fontWeight: ({ value }) => (value === '' ? 400 : 600), })} ` @@ -65,7 +61,7 @@ export const TextField = ({ return ( <Host onPress={() => inputRef.current?.focus()} style={style}> - <Label>{label}</Label> + <Label variant="eyebrow">{label}</Label> <Input onChangeText={onChange} value={value} ref={inputRef} {...rest} /> </Host> ) diff --git a/apps/native/app/src/ui/lib/view-pager/view-pager.tsx b/apps/native/app/src/ui/lib/view-pager/view-pager.tsx index a71cccafd6c3..f5e2ffc992bc 100644 --- a/apps/native/app/src/ui/lib/view-pager/view-pager.tsx +++ b/apps/native/app/src/ui/lib/view-pager/view-pager.tsx @@ -62,12 +62,12 @@ export function ViewPager({ children, itemWidth }: ViewPagerProps) { contentWidth - OFFSET - OFFSET_CARD, contentWidth - OFFSET - 60, contentWidth - 120, - ] + ].sort((a, b) => a - b) // Make sure inputRange is non-decreasing to prevent crash : [ OFFSET * i - OFFSET, OFFSET * i, i === pages - 2 ? contentWidth - OFFSET - 60 : OFFSET * i + OFFSET, - ] + ].sort((a, b) => a - b) // Make sure inputRange is non-decreasing to prevent crash const x = useRef(new Animated.Value(0)).current diff --git a/apps/native/app/src/utils/component-registry.ts b/apps/native/app/src/utils/component-registry.ts index 3712e5e9e1be..1351a36526d4 100644 --- a/apps/native/app/src/utils/component-registry.ts +++ b/apps/native/app/src/utils/component-registry.ts @@ -15,8 +15,12 @@ export const ComponentRegistry = { OnboardingBiometricsScreen: `${prefix}.screens.OnboardingBiometrics`, OnboardingNotificationsScreen: `${prefix}.screens.OnboardingNotifications`, HomeScreen: `${prefix}.screens.Home`, + HomeOptionsScreen: `${prefix}.screens.HomeOptions`, InboxScreen: `${prefix}.screens.Inbox`, ApplicationsScreen: `${prefix}.screens.ApplicationsScreen`, + ApplicationsCompletedScreen: `${prefix}.screens.ApplicationsCompletedScreen`, + ApplicationsInProgressScreen: `${prefix}.screens.ApplicationsInProgressScreen`, + ApplicationsIncompleteScreen: `${prefix}.screens.ApplicationsIncompleteScreen`, WalletScreen: `${prefix}.screens.Wallet`, WalletPassScreen: `${prefix}.screens.WalletPass`, WalletPassportScreen: `${prefix}.screens.WalletPassport`, @@ -43,13 +47,15 @@ export const ComponentRegistry = { FinanceStatusDetailScreen: `${prefix}.screens.FinanceStatusDetailScreen`, InboxFilterScreen: `${prefix}.screens.InboxFilterScreen`, AirDiscountScreen: `${prefix}.screens.AirDiscountScreen`, + PasskeyScreen: `${prefix}.screens.PasskeyScreen`, + UpdateAppScreen: `${prefix}.screens.UpdateAppScreen`, + HealthOverviewScreen: `${prefix}.screens.HealthOverviewScreen`, // custom navigation icons OfflineIcon: `${prefix}.navigation.OfflineIcon`, // overlays OfflineBanner: `${prefix}.overlay.OfflineBanner`, - PasskeyScreen: `${prefix}.screens.PasskeyScreen`, } export const ButtonRegistry = { @@ -64,6 +70,8 @@ export const ButtonRegistry = { ScanLicenseDoneButton: `${prefix}.button.ScanLicenseDoneButton`, DocumentStarButton: `${prefix}.button.DocumentStarButton`, DocumentArchiveButton: `${prefix}.button.DocumentArchiveButton`, + InboxFilterClearButton: `${prefix}.button.InboxFilterClearButton`, + HomeScreenOptionsButton: `${prefix}.button.HomeScreenOptionsButton`, } export const StackRegistry = { diff --git a/apps/native/app/src/utils/get-main-root.ts b/apps/native/app/src/utils/get-main-root.ts index 50296577a1e5..d23a134e2dfc 100644 --- a/apps/native/app/src/utils/get-main-root.ts +++ b/apps/native/app/src/utils/get-main-root.ts @@ -10,15 +10,23 @@ import { import { getThemeWithPreferences } from './get-theme-with-preferences' import { testIDs } from './test-ids' +type Icons = 'notifications' | 'settings' | 'licenseScan' | 'options' + type RightButtonProps = { unseenCount?: number theme?: ReturnType<typeof getThemeWithPreferences> + icons?: Icons[] } export const getRightButtons = ({ unseenCount = notificationsStore.getState().unseenCount, theme = getThemeWithPreferences(preferencesStore.getState()), + icons, }: RightButtonProps = {}): OptionsTopBarButton[] => { + if (!icons) { + return [] + } + const iconBackground = { color: 'transparent', cornerRadius: 4, @@ -26,25 +34,48 @@ export const getRightButtons = ({ height: theme.spacing[4], } - return [ - { - accessibilityLabel: 'Settings', - id: ButtonRegistry.SettingsButton, - testID: testIDs.TOPBAR_SETTINGS_BUTTON, - icon: require('../assets/icons/settings.png'), - iconBackground, - }, - { - accessibilityLabel: 'Notifications', - id: ButtonRegistry.NotificationsButton, - testID: testIDs.TOPBAR_NOTIFICATIONS_BUTTON, - icon: - unseenCount > 0 - ? require('../assets/icons/topbar-notifications-bell.png') - : require('../assets/icons/topbar-notifications.png'), - iconBackground, - }, - ] + const rightButtons: OptionsTopBarButton[] = [] + + // Note: the first icon in the array will be displayed in top right corner + icons.forEach((icon) => { + if (icon === 'notifications') { + rightButtons.push({ + accessibilityLabel: 'Notifications', + id: ButtonRegistry.NotificationsButton, + testID: testIDs.TOPBAR_NOTIFICATIONS_BUTTON, + icon: + unseenCount > 0 + ? require('../assets/icons/topbar-notifications-bell.png') + : require('../assets/icons/topbar-notifications.png'), + iconBackground, + }) + } else if (icon === 'settings') { + rightButtons.push({ + accessibilityLabel: 'Settings', + id: ButtonRegistry.SettingsButton, + testID: testIDs.TOPBAR_SETTINGS_BUTTON, + icon: require('../assets/icons/settings.png'), + iconBackground, + }) + } else if (icon === 'licenseScan') { + rightButtons.push({ + id: ButtonRegistry.ScanLicenseButton, + testID: testIDs.TOPBAR_SCAN_LICENSE_BUTTON, + icon: require('../assets/icons/navbar-scan.png'), + color: theme.color.blue400, + iconBackground, + }) + } else if (icon === 'options') { + rightButtons.push({ + id: ButtonRegistry.HomeScreenOptionsButton, + testID: testIDs.TOPBAR_HOME_OPTIONS_BUTTON, + icon: require('../assets/icons/options.png'), + color: theme.color.blue400, + iconBackground, + }) + } + }) + return rightButtons } /** diff --git a/apps/native/app/src/utils/lifecycle/setup-components.tsx b/apps/native/app/src/utils/lifecycle/setup-components.tsx index a3650e4eb66a..fcb322c6bfbd 100644 --- a/apps/native/app/src/utils/lifecycle/setup-components.tsx +++ b/apps/native/app/src/utils/lifecycle/setup-components.tsx @@ -4,6 +4,9 @@ import { isTestingApp } from '../../config' import { AirDiscountScreen } from '../../screens/air-discount/air-discount' import { AppLockScreen } from '../../screens/app-lock/app-lock' import { ApplicationsScreen } from '../../screens/applications/applications' +import { ApplicationsCompletedScreen } from '../../screens/applications/applications-completed' +import { ApplicationsInProgressScreen } from '../../screens/applications/applications-in-progress' +import { ApplicationsIncompleteScreen } from '../../screens/applications/applications-incomplete' import { AssetsDetailScreen } from '../../screens/assets/assets-detail' import { AssetsOverviewScreen } from '../../screens/assets/assets-overview' import { CognitoAuthScreen } from '../../screens/cognito-auth/cognito-auth' @@ -13,6 +16,7 @@ import { FamilyOverviewScreen } from '../../screens/family/family-overview' import { FinanceScreen } from '../../screens/finance/finance' import { FinanceStatusDetailScreen } from '../../screens/finance/finance-status-detail' import { HomeScreen } from '../../screens/home/home' +import { HomeOptionsScreen } from '../../screens/home/home-options' import { InboxScreen } from '../../screens/inbox/inbox' import { InboxFilterScreen } from '../../screens/inbox/inbox-filter' import { LicenseScanDetailScreen } from '../../screens/license-scanner/license-scan-detail' @@ -21,6 +25,8 @@ import { LoginScreen } from '../../screens/login/login' import { TestingLoginScreen } from '../../screens/login/testing-login' import { MoreScreen } from '../../screens/more/more' import { PasskeyScreen } from '../../screens/passkey/passkey' +import { UpdateAppScreen } from '../../screens/update-app/update-app' +import { HealthOverviewScreen } from '../../screens/health/health-overview' import { PersonalInfoScreen } from '../../screens/more/personal-info' import { NotificationsScreen } from '../../screens/notifications/notifications' import { OnboardingBiometricsScreen } from '../../screens/onboarding/onboarding-biometrics' @@ -99,6 +105,18 @@ export function registerAllComponents() { registerComponent(CR.InboxFilterScreen, InboxFilterScreen) registerComponent(CR.AirDiscountScreen, AirDiscountScreen) registerComponent(CR.PasskeyScreen, PasskeyScreen) + registerComponent(CR.UpdateAppScreen, UpdateAppScreen) + registerComponent(CR.HealthOverviewScreen, HealthOverviewScreen) + registerComponent(CR.HomeOptionsScreen, HomeOptionsScreen) + registerComponent(CR.ApplicationsCompletedScreen, ApplicationsCompletedScreen) + registerComponent( + CR.ApplicationsInProgressScreen, + ApplicationsInProgressScreen, + ) + registerComponent( + CR.ApplicationsIncompleteScreen, + ApplicationsIncompleteScreen, + ) // Overlay registerComponent(CR.OfflineBanner, OfflineBanner) diff --git a/apps/native/app/src/utils/lifecycle/setup-event-handlers.ts b/apps/native/app/src/utils/lifecycle/setup-event-handlers.ts index f7698378ef44..b5db7bf84337 100644 --- a/apps/native/app/src/utils/lifecycle/setup-event-handlers.ts +++ b/apps/native/app/src/utils/lifecycle/setup-event-handlers.ts @@ -28,13 +28,6 @@ let backgroundAppLockTimeout: ReturnType<typeof setTimeout> export function setupEventHandlers() { // Listen for url events through iOS and Android's Linking library Linking.addEventListener('url', ({ url }) => { - console.log('URL', url) - Linking.canOpenURL(url).then((supported) => { - if (supported) { - evaluateUrl(url) - } - }) - // Handle Cognito if (/cognito/.test(url)) { const [, hash] = url.split('#') @@ -66,15 +59,6 @@ export function setupEventHandlers() { }) } - // Get initial url and pass to the opener - Linking.getInitialURL() - .then((url) => { - if (url) { - Linking.openURL(url) - } - }) - .catch((err) => console.error('An error occurred in getInitialURL: ', err)) - Navigation.events().registerBottomTabSelectedListener((e) => { uiStore.setState({ unselectedTab: e.unselectedTabIndex, @@ -164,6 +148,8 @@ export function setupEventHandlers() { return navigateTo('/license-scanner') case ButtonRegistry.OfflineButton: return handleOfflineButtonClick() + case ButtonRegistry.HomeScreenOptionsButton: + return navigateTo('/home-options') } }, ) diff --git a/apps/native/app/src/utils/lifecycle/setup-notifications.ts b/apps/native/app/src/utils/lifecycle/setup-notifications.ts deleted file mode 100644 index 363fe1559da2..000000000000 --- a/apps/native/app/src/utils/lifecycle/setup-notifications.ts +++ /dev/null @@ -1,95 +0,0 @@ -import messaging, { - FirebaseMessagingTypes, -} from '@react-native-firebase/messaging' -import { - DEFAULT_ACTION_IDENTIFIER, - Notification, - NotificationResponse, -} from 'expo-notifications' -import { navigateTo, navigateToNotification } from '../../lib/deep-linking' - -export const ACTION_IDENTIFIER_NO_OPERATION = 'NOOP' - -export async function handleNotificationResponse({ - actionIdentifier, - notification, -}: NotificationResponse) { - const link = - notification.request.content.data?.clickActionUrl ?? - notification.request.content.data?.link - - if ( - typeof link === 'string' && - actionIdentifier !== ACTION_IDENTIFIER_NO_OPERATION - ) { - navigateToNotification({ link }) - } else { - navigateTo('/notifications') - } -} - -function mapRemoteMessage( - remoteMessage: FirebaseMessagingTypes.RemoteMessage, -): Notification { - return { - date: remoteMessage.sentTime ?? 0, - request: { - content: { - title: remoteMessage.notification?.title || null, - subtitle: null, - body: remoteMessage.notification?.body || null, - data: { - link: remoteMessage.notification?.android?.link, - ...remoteMessage.data, - }, - sound: 'default', - }, - identifier: remoteMessage.messageId ?? '', - trigger: { - type: 'push', - }, - }, - } -} - -export function setupNotifications() { - // FCMs - - messaging().onNotificationOpenedApp((remoteMessage) => - handleNotificationResponse({ - notification: mapRemoteMessage(remoteMessage), - actionIdentifier: DEFAULT_ACTION_IDENTIFIER, - }), - ) - - messaging().onMessage((remoteMessage) => - handleNotificationResponse({ - notification: mapRemoteMessage(remoteMessage), - actionIdentifier: ACTION_IDENTIFIER_NO_OPERATION, - }), - ) - - messaging().setBackgroundMessageHandler((remoteMessage) => - handleNotificationResponse({ - notification: mapRemoteMessage(remoteMessage), - actionIdentifier: ACTION_IDENTIFIER_NO_OPERATION, - }), - ) -} - -/** - * Handle initial notification when app is closed and opened from a notification - */ -export function handleInitialNotification() { - // FCMs - messaging() - .getInitialNotification() - .then((remoteMessage) => { - if (remoteMessage) { - void handleNotificationResponse({ - notification: mapRemoteMessage(remoteMessage), - actionIdentifier: DEFAULT_ACTION_IDENTIFIER, - }) - } - }) -} diff --git a/apps/native/app/src/utils/lifecycle/setup-routes.ts b/apps/native/app/src/utils/lifecycle/setup-routes.ts index a487e6dbdb70..4b4b3fbbcba4 100644 --- a/apps/native/app/src/utils/lifecycle/setup-routes.ts +++ b/apps/native/app/src/utils/lifecycle/setup-routes.ts @@ -51,11 +51,47 @@ export function setupRoutes() { selectTab(4) }) - addRoute('/applications', () => { + addRoute('/applications', async () => { Navigation.dismissAllModals() selectTab(3) }) + addRoute('/applications-completed', async (passProps) => { + Navigation.dismissAllModals() + selectTab(3) + await Navigation.popToRoot(StackRegistry.ApplicationsStack) + await Navigation.push(ComponentRegistry.ApplicationsScreen, { + component: { + name: ComponentRegistry.ApplicationsCompletedScreen, + passProps, + }, + }) + }) + + addRoute('/applications-in-progress', async (passProps) => { + Navigation.dismissAllModals() + selectTab(3) + await Navigation.popToRoot(StackRegistry.ApplicationsStack) + await Navigation.push(ComponentRegistry.ApplicationsScreen, { + component: { + name: ComponentRegistry.ApplicationsInProgressScreen, + passProps, + }, + }) + }) + + addRoute('/applications-incomplete', async (passProps) => { + Navigation.dismissAllModals() + selectTab(3) + await Navigation.popToRoot(StackRegistry.ApplicationsStack) + await Navigation.push(ComponentRegistry.ApplicationsScreen, { + component: { + name: ComponentRegistry.ApplicationsIncompleteScreen, + passProps, + }, + }) + }) + addRoute('/vehicles', async (passProps) => { selectTab(4) await Navigation.dismissAllModals() @@ -68,6 +104,18 @@ export function setupRoutes() { }) }) + addRoute('/home-options', async (passProps) => { + Navigation.dismissAllModals() + selectTab(2) + await Navigation.popToRoot(StackRegistry.HomeStack) + await Navigation.push(StackRegistry.HomeStack, { + component: { + name: ComponentRegistry.HomeOptionsScreen, + passProps, + }, + }) + }) + addRoute('/assets', async (passProps) => { await Navigation.dismissAllModals() await Navigation.popToRoot(StackRegistry.MoreStack) @@ -92,6 +140,7 @@ export function setupRoutes() { addRoute('/air-discount', async (passProps) => { await Navigation.dismissAllModals() + selectTab(4) await Navigation.popToRoot(StackRegistry.MoreStack) await Navigation.push(ComponentRegistry.MoreScreen, { component: { @@ -101,6 +150,18 @@ export function setupRoutes() { }) }) + addRoute('/health-overview', async (passProps) => { + await Navigation.dismissAllModals() + selectTab(4) + await Navigation.popToRoot(StackRegistry.MoreStack) + await Navigation.push(ComponentRegistry.MoreScreen, { + component: { + name: ComponentRegistry.HealthOverviewScreen, + passProps, + }, + }) + }) + addRoute('/personalinfo', async (passProps) => { Navigation.showModal({ stack: { @@ -131,6 +192,26 @@ export function setupRoutes() { }) }) + addRoute('/update-app', async (passProps) => { + Navigation.showModal({ + stack: { + options: { + modal: { + swipeToDismiss: false, + }, + }, + children: [ + { + component: { + name: ComponentRegistry.UpdateAppScreen, + passProps, + }, + }, + ], + }, + }) + }) + addRoute('/settings', async (passProps) => { Navigation.showModal({ stack: { @@ -206,7 +287,9 @@ export function setupRoutes() { }) }) - addRoute('/vehicle/:id', (passProps: any) => { + addRoute('/vehicle/:id', async (passProps: any) => { + await Navigation.dismissAllModals() + selectTab(4) Navigation.push(ComponentRegistry.MoreScreen, { component: { name: ComponentRegistry.VehicleDetailScreen, diff --git a/apps/native/app/src/utils/minimum-app-version.ts b/apps/native/app/src/utils/minimum-app-version.ts new file mode 100644 index 000000000000..db710cadf076 --- /dev/null +++ b/apps/native/app/src/utils/minimum-app-version.ts @@ -0,0 +1,19 @@ +import DeviceInfo from 'react-native-device-info' +import compareVersions from 'compare-versions' +import { featureFlagClient } from '../contexts/feature-flag-provider' + +export const needsToUpdateAppVersion = async (): Promise<boolean> => { + const minimumVersionSupported = await featureFlagClient?.getValueAsync( + 'minimumSupportedAppVersion', + '1.0.0', + ) + + if (!minimumVersionSupported) { + return false + } + + const currentVersion = DeviceInfo.getVersion() + + // @example compare('2.0.0', '1.5.0', '>') => true (update needed) + return compareVersions.compare(minimumVersionSupported, currentVersion, '>') +} diff --git a/apps/native/app/src/utils/permissions.ts b/apps/native/app/src/utils/permissions.ts new file mode 100644 index 000000000000..3b5209437c8d --- /dev/null +++ b/apps/native/app/src/utils/permissions.ts @@ -0,0 +1,30 @@ +import messaging from '@react-native-firebase/messaging' +import { PermissionsAndroid } from 'react-native' +import { authStore } from '../stores/auth-store' +import { androidIsVersion33OrAbove } from './versions-check' + +export const requestAndroidNotificationsPermission = async () => { + const granted = await PermissionsAndroid.request( + PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, + ) + + return granted === PermissionsAndroid.RESULTS.GRANTED +} + +export const requestNotificationsPermission = async () => { + if (androidIsVersion33OrAbove()) { + // Notifications modal on Android triggers the lock screen, so we need to prevent the lock screen from showing + authStore.setState({ + noLockScreenUntilNextAppStateActive: true, + }) + + return await requestAndroidNotificationsPermission() + } + + const authStatus = await messaging().requestPermission() + + return ( + authStatus === messaging.AuthorizationStatus.AUTHORIZED || + authStatus === messaging.AuthorizationStatus.PROVISIONAL + ) +} diff --git a/apps/native/app/src/utils/register-component.tsx b/apps/native/app/src/utils/register-component.tsx index ecabdfb6450b..56e209f4eea5 100644 --- a/apps/native/app/src/utils/register-component.tsx +++ b/apps/native/app/src/utils/register-component.tsx @@ -1,5 +1,4 @@ import { ApolloProvider } from '@apollo/client' -import { GestureHandlerRootView } from 'react-native-gesture-handler' import { Navigation, NavigationFunctionComponent, @@ -26,11 +25,9 @@ export function registerComponent<Props>( <NavigationProvider value={{ componentId: props.componentId }}> <FeatureFlagProvider> <ApolloProvider client={client}> - <GestureHandlerRootView style={{ flex: 1 }}> - <OfflineHoc> - <Component {...props} /> - </OfflineHoc> - </GestureHandlerRootView> + <OfflineHoc> + <Component {...props} /> + </OfflineHoc> </ApolloProvider> </FeatureFlagProvider> </NavigationProvider> diff --git a/apps/native/app/src/utils/test-ids.ts b/apps/native/app/src/utils/test-ids.ts index f010eb50a58e..ddfe84ba83ac 100644 --- a/apps/native/app/src/utils/test-ids.ts +++ b/apps/native/app/src/utils/test-ids.ts @@ -12,6 +12,7 @@ export const testIDs = { TOPBAR_OFFLINE_BUTTON: 'TOPBAR_OFFLINE_BUTTON', TOPBAR_NOTIFICATIONS_BUTTON: 'TOPBAR_NOTIFICATIONS_BUTTON', TOPBAR_SCAN_LICENSE_BUTTON: 'TOPBAR_SCAN_LICENSE_BUTTON', + TOPBAR_HOME_OPTIONS_BUTTON: 'TOPBAR_HOME_OPTIONS_BUTTON', // shared components diff --git a/apps/native/app/src/utils/user-agent.ts b/apps/native/app/src/utils/user-agent.ts new file mode 100644 index 000000000000..977da4e1aceb --- /dev/null +++ b/apps/native/app/src/utils/user-agent.ts @@ -0,0 +1,10 @@ +import { Platform } from 'react-native' +import DeviceInfo from 'react-native-device-info' + +export const getCustomUserAgent = () => { + return [ + `IslandIsApp (${DeviceInfo.getVersion()})`, + `Build/${DeviceInfo.getBuildNumber()}`, + `(${Platform.OS}/${Platform.Version})`, + ].join(' ') +} diff --git a/apps/portals/admin/infra/portals-admin.ts b/apps/portals/admin/infra/portals-admin.ts index 338a6fe3492d..b224f78ca637 100644 --- a/apps/portals/admin/infra/portals-admin.ts +++ b/apps/portals/admin/infra/portals-admin.ts @@ -9,10 +9,11 @@ export const serviceSetup = (): ServiceBuilder<'portals-admin'> => default: 2, max: 30, min: 2, + scalingMagicNumber: 8, }) .resources({ limits: { cpu: '400m', memory: '512Mi' }, - requests: { cpu: '200m', memory: '256Mi' }, + requests: { cpu: '25m', memory: '256Mi' }, }) .env({ BASEPATH: '/stjornbord', @@ -42,7 +43,6 @@ export const serviceSetup = (): ServiceBuilder<'portals-admin'> => 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', }, staging: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', }, diff --git a/apps/service-portal/src/assets/images/skjaldarmerki.svg b/apps/portals/admin/src/assets/images/skjaldarmerki.svg similarity index 100% rename from apps/service-portal/src/assets/images/skjaldarmerki.svg rename to apps/portals/admin/src/assets/images/skjaldarmerki.svg diff --git a/apps/portals/admin/src/auth.ts b/apps/portals/admin/src/auth.ts index 4a081c7312ea..944cdc454551 100644 --- a/apps/portals/admin/src/auth.ts +++ b/apps/portals/admin/src/auth.ts @@ -38,6 +38,8 @@ if (userMocked) { AdminPortalScope.signatureCollectionProcess, AdminPortalScope.formSystem, AdminPortalScope.formSystemSuperUser, + AdminPortalScope.delegationSystem, + AdminPortalScope.delegationSystemAdmin, ], post_logout_redirect_uri: `${window.location.origin}`, userStorePrefix: 'ap.', diff --git a/apps/portals/admin/src/lib/masterNavigation.ts b/apps/portals/admin/src/lib/masterNavigation.ts index 5405d89aee5c..0a02cb5e4030 100644 --- a/apps/portals/admin/src/lib/masterNavigation.ts +++ b/apps/portals/admin/src/lib/masterNavigation.ts @@ -14,6 +14,7 @@ import { signatureCollectionNavigation } from '@island.is/portals/admin/signatur import { serviceDeskNavigation } from '@island.is/portals/admin/service-desk' import { petitionNavigation } from '@island.is/portals/admin/petition' import { formSystemNavigation } from '@island.is/form-system' +import { delegationAdminNav } from 'delegation-admin' export const rootNavigationItem: PortalNavigationItem = { name: coreMessages.overview, @@ -44,7 +45,10 @@ export const TOP_NAVIGATION: PortalNavigationItem = { serviceDeskNavigation, // Meðmælasöfnun signatureCollectionNavigation, + // Formakerfi formSystemNavigation, + // Aðgangsstýring umboð + delegationAdminNav, ], } export const BOTTOM_NAVIGATION: PortalNavigationItem = { diff --git a/apps/portals/admin/src/lib/modules.ts b/apps/portals/admin/src/lib/modules.ts index 73fc69898b39..9a840d14262d 100644 --- a/apps/portals/admin/src/lib/modules.ts +++ b/apps/portals/admin/src/lib/modules.ts @@ -10,6 +10,7 @@ import { petitionModule } from '@island.is/portals/admin/petition' import { serviceDeskModule } from '@island.is/portals/admin/service-desk' import { signatureCollectionModule } from '@island.is/portals/admin/signature-collection' import { formSystemModule } from '@island.is/form-system' +import { delegationAdminModule } from 'delegation-admin' /** * NOTE: @@ -30,4 +31,5 @@ export const modules: PortalModule[] = [ serviceDeskModule, signatureCollectionModule, formSystemModule, + delegationAdminModule, ] diff --git a/apps/portals/form-system/infra/form-system.ts b/apps/portals/form-system/infra/form-system.ts index 77119a89b7ff..34b3a3b90076 100644 --- a/apps/portals/form-system/infra/form-system.ts +++ b/apps/portals/form-system/infra/form-system.ts @@ -1,6 +1,8 @@ import { ref, service, ServiceBuilder } from '../../../../infra/src/dsl/dsl' -export const serviceSetup = (): ServiceBuilder<'portals-form-system'> => +export const serviceSetup = (services: { + api: ServiceBuilder<'api'> +}): ServiceBuilder<'portals-form-system'> => service('portals-form-system') .namespace('portals-form-system') .liveness('/liveness') @@ -16,6 +18,12 @@ export const serviceSetup = (): ServiceBuilder<'portals-form-system'> => }) .env({ BASEPATH: '/form', + SI_PUBLIC_GRAPHQL_PATH: { + dev: 'http://localhost:4445', + prod: '', + staging: '', + local: ref((h) => `http://${h.svc(services.api)}`), + }, SI_PUBLIC_IDENTITY_SERVER_ISSUER_URL: { dev: 'https://identity-server.dev01.devland.is', staging: 'https://identity-server.staging01.devland.is', diff --git a/apps/portals/form-system/src/lib/routes.tsx b/apps/portals/form-system/src/lib/routes.tsx index 2b95ca4d6c27..e39146b8fece 100644 --- a/apps/portals/form-system/src/lib/routes.tsx +++ b/apps/portals/form-system/src/lib/routes.tsx @@ -1,6 +1,7 @@ import { Outlet, RouteObject } from 'react-router-dom' import { UserProfileLocale } from '@island.is/shared/components' import { ExampleScreen } from '@island.is/form-system/ui' +import { FormsScreen } from '../screens/FormsScreen' export const BASE_PATH = '/form' @@ -21,6 +22,7 @@ export const routes: RouteObject[] = [ // path: '/:slug', // Forms screen where a new form is created if the user has not created a form before, otherwise the user sees a list of formerly created forms with the option to create a new one + element: <FormsScreen /> }, { path: '/:slug/:id', diff --git a/apps/portals/form-system/src/screens/FormsScreen.tsx b/apps/portals/form-system/src/screens/FormsScreen.tsx new file mode 100644 index 000000000000..0a833e85438e --- /dev/null +++ b/apps/portals/form-system/src/screens/FormsScreen.tsx @@ -0,0 +1,99 @@ +import { useMutation } from "@apollo/client" +import { useAuth } from "@island.is/auth/react" +import { useLocale, useLocalizedQuery } from "@island.is/localization" +import { Params, useNavigate, useParams } from "react-router-dom" +import { CREATE_APPLICATION, CREATE_FORM } from "@island.is/form-system/graphql" + + +export const FormsScreen = () => { + const { userInfo } = useAuth() + const { formatMessage } = useLocale() + const navigate = useNavigate() + const nationalId = userInfo?.profile?.nationalId + + // Get the slug and send it to the backend with the user nationalId to either get a [formGuids] or create a new form + // If the user has no forms, create a new form + // If the user has forms, get the forms and display them + + const { slug } = useParams() as Params + + // use the slug to make a query to the backend to get the formGuids + + if (!nationalId) { + return + } + + // const { + // data, + // loading, + // error: formsError, + // refetch + // } = useLocalizedQuery(CREATE_APPLICATION, { + // variables: { + // input: { + // slug: slug, + // nationalId: nationalId + // }, + // }, + // skip: !slug, + // fetchPolicy: 'cache-and-network' + // }) + + // if (loading) { + // return <div>Loading...</div> + // } + console.log('slug', slug) + const [createFormMutation, { error }] = useMutation( + CREATE_APPLICATION, + // { + // onCompleted({ createApplication }) { + // if (slug) { + // navigate(`../${slug}/${createApplication.formGuid}`) + // } + // } + // } + ) + const [formSystemCreateFormMutation] = useMutation(CREATE_FORM) + const data = async () => { + try { + const data = await createFormMutation({ + variables: { + input: { + slug: slug + } + } + }) + console.log(data) + } catch (err) { + console.error('Error creating form:', err.message) + } + } + data() + + + const createForm = () => { + // Graphql mutation to create form + } + + // if (data) { + // // check whether the data has an array of formGuids + // // if it does, display the list of forms + // // if it doesn't, create a new form from template and redirect to + // } + + return <>HOHO</> +} + +// const FormCard = () => { +// // Display form card +// // Date of last modified +// // Title of form +// // Description of form and/or state of form +// // Display amount of steps completed +// // Delete button +// // Open form button + +// return ( +// <FormsScreen /> +// ) +// } diff --git a/apps/service-portal/.babelrc b/apps/portals/my-pages/.babelrc similarity index 100% rename from apps/service-portal/.babelrc rename to apps/portals/my-pages/.babelrc diff --git a/apps/service-portal/browserslist b/apps/portals/my-pages/.browserslistrc similarity index 100% rename from apps/service-portal/browserslist rename to apps/portals/my-pages/.browserslistrc diff --git a/libs/application/templates/financial-statement-cemetery/.eslintrc.json b/apps/portals/my-pages/.eslintrc.json similarity index 80% rename from libs/application/templates/financial-statement-cemetery/.eslintrc.json rename to apps/portals/my-pages/.eslintrc.json index 772a43d27834..75b85077debb 100644 --- a/libs/application/templates/financial-statement-cemetery/.eslintrc.json +++ b/apps/portals/my-pages/.eslintrc.json @@ -1,5 +1,5 @@ { - "extends": ["plugin:@nx/react", "../../../../.eslintrc.json"], + "extends": ["plugin:@nx/react", "../../../.eslintrc.json"], "ignorePatterns": ["!**/*"], "overrides": [ { diff --git a/apps/service-portal/README.md b/apps/portals/my-pages/README.md similarity index 93% rename from apps/service-portal/README.md rename to apps/portals/my-pages/README.md index 530716918e32..acd92a6b2971 100644 --- a/apps/service-portal/README.md +++ b/apps/portals/my-pages/README.md @@ -1,8 +1,8 @@ -# Service Portal +# My Pages (Service Portal) ## About -The service portal is the user personal pages where it will be able to find all the information relative to itself, family, finances, applications and so on. +My pages is the user personal pages where it will be able to find all the information relative to itself and companies, family, finances, applications and so on. ## URLs diff --git a/apps/service-portal/infra/service-portal.ts b/apps/portals/my-pages/infra/portals-my-pages.ts similarity index 93% rename from apps/service-portal/infra/service-portal.ts rename to apps/portals/my-pages/infra/portals-my-pages.ts index 836d2e236634..52cdc8d58a3b 100644 --- a/apps/service-portal/infra/service-portal.ts +++ b/apps/portals/my-pages/infra/portals-my-pages.ts @@ -1,4 +1,4 @@ -import { ref, service, ServiceBuilder } from '../../../infra/src/dsl/dsl' +import { ref, service, ServiceBuilder } from '../../../../infra/src/dsl/dsl' export const serviceSetup = (services: { graphql: ServiceBuilder<'api'> @@ -49,7 +49,6 @@ export const serviceSetup = (services: { 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', }, staging: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', }, diff --git a/apps/service-portal/jest.config.ts b/apps/portals/my-pages/jest.config.ts similarity index 81% rename from apps/service-portal/jest.config.ts rename to apps/portals/my-pages/jest.config.ts index 831704331b7f..d7ac5fb429ec 100644 --- a/apps/service-portal/jest.config.ts +++ b/apps/portals/my-pages/jest.config.ts @@ -1,7 +1,8 @@ /* eslint-disable */ export default { + displayName: 'service-portal', preset: './jest.preset.js', - rootDir: '../..', + rootDir: '../../..', roots: [__dirname], transform: { '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', @@ -11,7 +12,6 @@ export default { ], }, moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'html'], - coverageDirectory: '<rootDir>/coverage/apps/service-portal', + coverageDirectory: '<rootDir>/coverage/apps/portals/my-pages', globals: {}, - displayName: 'service-portal', } diff --git a/apps/service-portal/project.json b/apps/portals/my-pages/project.json similarity index 68% rename from apps/service-portal/project.json rename to apps/portals/my-pages/project.json index bcd4102b5192..f11cb5433160 100644 --- a/apps/service-portal/project.json +++ b/apps/portals/my-pages/project.json @@ -1,35 +1,34 @@ { "name": "service-portal", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "apps/service-portal/src", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/portals/my-pages/src", "projectType": "application", "tags": ["scope:portals-mypages"], - "generators": {}, "targets": { "build": { "executor": "@nx/webpack:webpack", "options": { "baseHref": "/minarsidur/", - "outputPath": "dist/apps/service-portal", - "index": "apps/service-portal/src/index.html", - "main": "apps/service-portal/src/Main.tsx", - "polyfills": "apps/service-portal/src/polyfills.ts", - "tsConfig": "apps/service-portal/tsconfig.app.json", + "outputPath": "dist/apps/portals/my-pages", + "index": "apps/portals/my-pages/src/index.html", + "main": "apps/portals/my-pages/src/Main.tsx", + "polyfills": "apps/portals/my-pages/src/polyfills.ts", + "tsConfig": "apps/portals/my-pages/tsconfig.app.json", "assets": [ - "apps/service-portal/src/favicon.ico", - "apps/service-portal/src/mockServiceWorker.js", - "apps/service-portal/src/assets" + "apps/portals/my-pages/src/favicon.ico", + "apps/portals/my-pages/src/mockServiceWorker.js", + "apps/portals/my-pages/src/assets" ], - "styles": ["apps/service-portal/src/styles.css"], + "styles": ["apps/portals/my-pages/src/styles.css"], "scripts": [], - "webpackConfig": "apps/service-portal/webpack.config.js", + "webpackConfig": "apps/portals/my-pages/webpack.config.js", "maxWorkers": 2 }, "configurations": { "production": { "optimization": true, "outputHashing": "all", - "index": "apps/service-portal/src/index.src.html", + "index": "apps/portals/my-pages/src/index.src.html", "sourceMap": false, "extractCss": true, "namedChunks": false, @@ -55,10 +54,10 @@ "executor": "nx:run-commands", "options": { "commands": [ - "node scripts/dockerfile-assets/bash/extract-environment.js apps/service-portal/src" + "node scripts/dockerfile-assets/bash/extract-environment.js apps/portals/my-pages/src" ] }, - "outputs": ["{workspaceRoot}/apps/service-portal/src/index.html"] + "outputs": ["{workspaceRoot}/apps/portals/my-pages/src/index.html"] }, "serve": { "executor": "@nx/webpack:dev-server", @@ -82,14 +81,14 @@ "test": { "executor": "@nx/jest:jest", "options": { - "jestConfig": "apps/service-portal/jest.config.ts" + "jestConfig": "apps/portals/my-pages/jest.config.ts" }, - "outputs": ["{workspaceRoot}/coverage/apps/service-portal"] + "outputs": ["{workspaceRoot}/coverage/apps/portals/my-pages"] }, "extract-strings": { "executor": "nx:run-commands", "options": { - "command": "yarn ts-node -P libs/localization/tsconfig.lib.json libs/localization/scripts/extract 'apps/service-portal/src/{screens,components}/**/*.{js,ts,tsx}'" + "command": "yarn ts-node -P libs/localization/tsconfig.lib.json libs/localization/scripts/extract 'apps/portals/my-pages/src/{screens,components}/**/*.{js,ts,tsx}'" } }, "dev-init": { diff --git a/apps/service-portal/src/Main.tsx b/apps/portals/my-pages/src/Main.tsx similarity index 100% rename from apps/service-portal/src/Main.tsx rename to apps/portals/my-pages/src/Main.tsx diff --git a/apps/service-portal/src/app/App.css.ts b/apps/portals/my-pages/src/app/App.css.ts similarity index 100% rename from apps/service-portal/src/app/App.css.ts rename to apps/portals/my-pages/src/app/App.css.ts diff --git a/apps/service-portal/src/app/App.tsx b/apps/portals/my-pages/src/app/App.tsx similarity index 100% rename from apps/service-portal/src/app/App.tsx rename to apps/portals/my-pages/src/app/App.tsx diff --git a/apps/service-portal/src/assets/.gitkeep b/apps/portals/my-pages/src/assets/.gitkeep similarity index 100% rename from apps/service-portal/src/assets/.gitkeep rename to apps/portals/my-pages/src/assets/.gitkeep diff --git a/apps/service-portal/src/assets/fonts/OFL.txt b/apps/portals/my-pages/src/assets/fonts/OFL.txt similarity index 100% rename from apps/service-portal/src/assets/fonts/OFL.txt rename to apps/portals/my-pages/src/assets/fonts/OFL.txt diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.eot b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.eot similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.eot rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.eot diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.svg b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.svg similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.svg rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.svg diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.ttf b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.ttf similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.ttf rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.ttf diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.woff b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.woff similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.woff rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.woff diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.woff2 b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.woff2 similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-300.woff2 rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-300.woff2 diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-500.woff b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-500.woff similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-500.woff rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-500.woff diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-500.woff2 b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-500.woff2 similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-500.woff2 rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-500.woff2 diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.eot b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.eot similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.eot rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.eot diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.svg b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.svg similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.svg rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.svg diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.ttf b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.ttf similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.ttf rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.ttf diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.woff b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.woff similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.woff rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.woff diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.woff2 b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.woff2 similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-600.woff2 rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-600.woff2 diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.eot b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.eot similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.eot rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.eot diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.svg b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.svg similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.svg rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.svg diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.ttf b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.ttf similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.ttf rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.ttf diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.woff b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.woff similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.woff rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.woff diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.woff2 b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.woff2 similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-italic.woff2 rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-italic.woff2 diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.eot b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.eot similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.eot rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.eot diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.svg b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.svg similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.svg rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.svg diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.ttf b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.ttf similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.ttf rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.ttf diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.woff b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.woff similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.woff rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.woff diff --git a/apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.woff2 b/apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.woff2 similarity index 100% rename from apps/service-portal/src/assets/fonts/ibm-plex-sans-v7-latin-regular.woff2 rename to apps/portals/my-pages/src/assets/fonts/ibm-plex-sans-v7-latin-regular.woff2 diff --git a/apps/service-portal/src/assets/icons/A.svg b/apps/portals/my-pages/src/assets/icons/A.svg similarity index 100% rename from apps/service-portal/src/assets/icons/A.svg rename to apps/portals/my-pages/src/assets/icons/A.svg diff --git a/apps/service-portal/src/assets/icons/AM.svg b/apps/portals/my-pages/src/assets/icons/AM.svg similarity index 100% rename from apps/service-portal/src/assets/icons/AM.svg rename to apps/portals/my-pages/src/assets/icons/AM.svg diff --git a/apps/service-portal/src/assets/icons/B.svg b/apps/portals/my-pages/src/assets/icons/B.svg similarity index 100% rename from apps/service-portal/src/assets/icons/B.svg rename to apps/portals/my-pages/src/assets/icons/B.svg diff --git a/apps/service-portal/src/assets/icons/BE.svg b/apps/portals/my-pages/src/assets/icons/BE.svg similarity index 100% rename from apps/service-portal/src/assets/icons/BE.svg rename to apps/portals/my-pages/src/assets/icons/BE.svg diff --git a/apps/service-portal/src/assets/icons/C.svg b/apps/portals/my-pages/src/assets/icons/C.svg similarity index 100% rename from apps/service-portal/src/assets/icons/C.svg rename to apps/portals/my-pages/src/assets/icons/C.svg diff --git a/apps/service-portal/src/assets/icons/CE.svg b/apps/portals/my-pages/src/assets/icons/CE.svg similarity index 100% rename from apps/service-portal/src/assets/icons/CE.svg rename to apps/portals/my-pages/src/assets/icons/CE.svg diff --git a/apps/service-portal/src/assets/icons/D.svg b/apps/portals/my-pages/src/assets/icons/D.svg similarity index 100% rename from apps/service-portal/src/assets/icons/D.svg rename to apps/portals/my-pages/src/assets/icons/D.svg diff --git a/apps/service-portal/src/assets/icons/DE.svg b/apps/portals/my-pages/src/assets/icons/DE.svg similarity index 100% rename from apps/service-portal/src/assets/icons/DE.svg rename to apps/portals/my-pages/src/assets/icons/DE.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/airplane.svg b/apps/portals/my-pages/src/assets/icons/sidebar/airplane.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/airplane.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/airplane.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/business.svg b/apps/portals/my-pages/src/assets/icons/sidebar/business.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/business.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/business.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/car.svg b/apps/portals/my-pages/src/assets/icons/sidebar/car.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/car.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/car.svg diff --git a/apps/portals/my-pages/src/assets/icons/sidebar/cardWithCheckmark.svg b/apps/portals/my-pages/src/assets/icons/sidebar/cardWithCheckmark.svg new file mode 100644 index 000000000000..37fdde3200a3 --- /dev/null +++ b/apps/portals/my-pages/src/assets/icons/sidebar/cardWithCheckmark.svg @@ -0,0 +1,3 @@ +<svg id="eyzGY9baL4Z1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" project-id="cc2acb2a21734ebd807d5ffb07984154" export-id="d7779512329f4e6e89e7c0973f968555" cached="false" style="background-color:transparent;cursor:pointer"><g><g><path d="M25.5,14.5768c0,0,0-4.4,0-4.4c0-1.6569-1.3431-3.00004-3-3.00004c0,0-14.02002,0-14.02002,0-1.65685,0-3,1.34314-3,3.00004c0,0,0,8.8,0,8.8c0,1.6568,1.34315,3,3,3c0,0,2.00502,0,2.00502,0s2.5025,0,2.5025,0" paint-order="stroke fill markers" fill="none" fill-rule="evenodd" stroke="#0061ff" stroke-width="1.5" stroke-linecap="round"/></g><g><path d="M5.47998,11.25c0-.4142.21341-.75.47667-.75c0,0,19.06675,0,19.06675,0c.2632,0,.4766.3358.4766.75s-.2134.75-.4766.75c0,0-19.06675,0-19.06675,0-.26326,0-.47667-.3358-.47667-.75c0,0,0,0,0,0Z" fill="#0061ff" fill-rule="evenodd" stroke-width="0"/></g></g><g id="eyzGY9baL4Z7"><g transform="translate(0 0.048143)"><path id="eyzGY9baL4Z9" d="M19.646659,21.451857c0,0,1.198441,1.393243,1.198441,1.393243.0832.0832.2198.077.2951-.0133C21.1402,22.8318,23.5,20,23.5,20" paint-order="stroke fill markers" fill="none" fill-rule="evenodd" stroke="#0061ff" stroke-width="1.5" stroke-linecap="round" stroke-dasharray="6"/></g><g transform="translate(16.75 16.75)"><path d="M0,4.75C0,2.126647,2.126647,0,4.75,0s4.75,2.126647,4.75,4.75-2.126647,4.75-4.75,4.75-4.75-2.126647-4.75-4.75c0,0,0,0,0,0Z" paint-order="stroke fill markers" fill="none" fill-rule="evenodd" stroke="#0061ff" stroke-width="1.5"/></g></g><g><path id="eyzGY9baL4Z13" d="M8.44141,18.8213c0,0,4,0,4,0" paint-order="stroke fill markers" fill="none" fill-rule="evenodd" stroke="#0061ff" stroke-width="1.5" stroke-linecap="round" stroke-dasharray="4"/></g><g><path id="eyzGY9baL4Z15" d="M8.44141,16.3213c0,0,2,0,2,0" paint-order="stroke fill markers" fill="none" fill-rule="evenodd" stroke="#0061ff" stroke-width="1.5" stroke-linecap="round" stroke-dasharray="2"/></g> +<script><![CDATA[]]></script> +</svg> diff --git a/apps/service-portal/src/assets/icons/sidebar/cellular.svg b/apps/portals/my-pages/src/assets/icons/sidebar/cellular.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/cellular.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/cellular.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/fileTrayFull.svg b/apps/portals/my-pages/src/assets/icons/sidebar/fileTrayFull.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/fileTrayFull.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/fileTrayFull.svg diff --git a/apps/portals/my-pages/src/assets/icons/sidebar/gavel.svg b/apps/portals/my-pages/src/assets/icons/sidebar/gavel.svg new file mode 100644 index 000000000000..b9a55b6a2c93 --- /dev/null +++ b/apps/portals/my-pages/src/assets/icons/sidebar/gavel.svg @@ -0,0 +1,3 @@ +<svg id="eDi3AOmSGXe1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" project-id="27a76bff1403419d8140660f5a4c4021" export-id="57d2d9737c364f1a9759c5515a11f7ad" cached="false" style="background-color:transparent;cursor:pointer"><g><path d="M5.167,26.004c-1.698.164-3.037,1.6-3.037,3.33c0,0,0,.785,0,.785c0,.424.327.75.751.75c0,0,18.809,0,18.809,0c.199988.00327.392761-.074664.534287-.216001s.219717-.334007.216713-.533999c0,0,0-.784,0-.784c0-1.73-1.339-3.167-3.037-3.33c0,0-14.237,0-14.237,0s0-.001,0-.001s0,0,0,0Z" fill="#0061ff" fill-rule="evenodd" stroke="#0061ff" stroke-width="0.25"/><path d="M20.905,29.334c.000531-.484978-.19189-.950246-.534822-1.293178s-.8082-.535353-1.293178-.534822c0,0-13.649,0-13.649,0-.485152-.000532-.950572.192027-1.293532.535175s-.535265.808673-.534468,1.293825c0,0,0,.033,0,.033s17.305-.033,17.305-.033s0-.001,0-.001s0,0,0,0Z" fill="#fff" fill-rule="evenodd" stroke="#0061ff" stroke-width="0.25"/></g><g id="eDi3AOmSGXe5" transform="translate(-.326795 0.201308)"><path d="M28.64,19.8c0,0-6.987-6.237-6.987-6.237.769577-.979501,1.427009-2.042126,1.96-3.168.195.066.424.098.62.098.62,0,1.24-.228,1.697-.685.458957-.445802.718259-1.058172.719-1.698c0-.653-.262-1.24-.719-1.698c0,0-4.538-4.572-4.538-4.572-.44818-.454383-1.059777-.71018-1.698-.71018s-1.24982.255797-1.698.71018c-.458494.446035-.717407,1.058341-.718,1.698c0,.228.032.424.098.62-1.698.784-3.462,2.024-5.029,3.592-1.633,1.632-2.84,3.363-3.592,5.028-.816-.229-1.698-.033-2.318.62-.454383.44818-.71018,1.059777-.71018,1.698s.255797,1.24982.71018,1.698c0,0,4.539,4.572,4.539,4.572.452936.444212,1.063615.69057,1.698.685.62,0,1.24-.228,1.697-.685.458957-.445802.718259-1.058172.719-1.698c0-.229-.033-.425-.098-.62c1.045-.458,2.122-1.143,3.167-1.96c0,0,6.204,6.955,6.204,6.955.555.62,1.339.98,2.155,1.012c0,0,.098,0,.098,0c.816,0,1.567-.326,2.122-.881.593544-.582752.913787-1.388806.882-2.22c0-.817-.392-1.6-.98-2.156c0,0,0,.002,0,.002s0,0,0,0Z" fill="#0061ff" stroke="#0061ff" stroke-width="0.25"/><path d="M19.04,2.918c.164931-.164821.387843-.258509.621-.261.229,0,.457.098.62.261c0,0,4.54,4.539,4.54,4.539.164214.164846.257515.387333.26.62-.002485.232667-.095786.455154-.26.62-.167075.172421-.39691.269748-.637.269748s-.469925-.097327-.637-.269748c0,0-4.507-4.504-4.507-4.504-.164947-.164523-.258983-.387049-.262-.62.00228-.243132.095787-.476542.262-.654c0,0,0-.001,0-.001s0,0,0,0Z" fill="#fff" stroke="#0061ff" stroke-width="0.25"/><path d="M14.144,17.743c0,0-4.082-4.114-4.082-4.114.653-1.502,1.764-3.167,3.364-4.8c1.502-1.502,3.2-2.677,4.767-3.396c0,0,4.114,4.115,4.114,4.115-.686,1.6-1.861,3.265-3.396,4.767-1.6,1.665-3.265,2.775-4.767,3.428c0,0,0,0,0,0Z" fill="#fff" stroke="#0061ff" stroke-width="0.25"/><path d="M27.694,23.098c-.288907.298901-.695346.454519-1.11.425-.424,0-.816-.196-1.077-.49c0,0-6.204-6.955-6.204-6.955.229-.229.49-.457.718-.686.229-.228.457-.457.686-.718c0,0,6.922,6.237,6.922,6.237.327.293.49.652.49,1.077.033.425-.13.816-.424,1.11c0,0-.001,0-.001,0s0,0,0,0Z" fill="#fff" stroke="#0061ff" stroke-width="0.25"/><path d="M13.295,20.29c-.167041.172107-.396659.269232-.6365.269232s-.469459-.097125-.6365-.269232c0,0-4.542-4.54-4.542-4.54-.172107-.167041-.269232-.396659-.269232-.6365s.097125-.469459.269232-.6365c.164931-.164821.387843-.258509.621-.261.229,0,.457.098.62.261c0,0,4.54,4.539,4.54,4.539.391.359.391.914.032,1.273c0,0,.002.001.002.001s0,0,0,0Z" fill="#fff" stroke="#0061ff" stroke-width="0.25"/></g> +<script><![CDATA[]]></script> +</svg> diff --git a/apps/service-portal/src/assets/icons/sidebar/heart.svg b/apps/portals/my-pages/src/assets/icons/sidebar/heart.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/heart.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/heart.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/home.svg b/apps/portals/my-pages/src/assets/icons/sidebar/home.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/home.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/home.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/lockClosed.svg b/apps/portals/my-pages/src/assets/icons/sidebar/lockClosed.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/lockClosed.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/lockClosed.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/logOut.svg b/apps/portals/my-pages/src/assets/icons/sidebar/logOut.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/logOut.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/logOut.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/mail.svg b/apps/portals/my-pages/src/assets/icons/sidebar/mail.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/mail.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/mail.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/menntun.svg b/apps/portals/my-pages/src/assets/icons/sidebar/menntun.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/menntun.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/menntun.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/people.svg b/apps/portals/my-pages/src/assets/icons/sidebar/people.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/people.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/people.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/person.svg b/apps/portals/my-pages/src/assets/icons/sidebar/person.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/person.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/person.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/reader.svg b/apps/portals/my-pages/src/assets/icons/sidebar/reader.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/reader.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/reader.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/receipt.svg b/apps/portals/my-pages/src/assets/icons/sidebar/receipt.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/receipt.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/receipt.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/school.svg b/apps/portals/my-pages/src/assets/icons/sidebar/school.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/school.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/school.svg diff --git a/apps/service-portal/src/assets/icons/sidebar/wallet.svg b/apps/portals/my-pages/src/assets/icons/sidebar/wallet.svg similarity index 100% rename from apps/service-portal/src/assets/icons/sidebar/wallet.svg rename to apps/portals/my-pages/src/assets/icons/sidebar/wallet.svg diff --git a/apps/service-portal/src/assets/images/404.svg b/apps/portals/my-pages/src/assets/images/404.svg similarity index 100% rename from apps/service-portal/src/assets/images/404.svg rename to apps/portals/my-pages/src/assets/images/404.svg diff --git a/apps/service-portal/src/assets/images/adr_machine.svg b/apps/portals/my-pages/src/assets/images/adr_machine.svg similarity index 100% rename from apps/service-portal/src/assets/images/adr_machine.svg rename to apps/portals/my-pages/src/assets/images/adr_machine.svg diff --git a/apps/service-portal/src/assets/images/baby.jpg b/apps/portals/my-pages/src/assets/images/baby.jpg similarity index 100% rename from apps/service-portal/src/assets/images/baby.jpg rename to apps/portals/my-pages/src/assets/images/baby.jpg diff --git a/apps/service-portal/src/assets/images/bedroom.jpg b/apps/portals/my-pages/src/assets/images/bedroom.jpg similarity index 100% rename from apps/service-portal/src/assets/images/bedroom.jpg rename to apps/portals/my-pages/src/assets/images/bedroom.jpg diff --git a/apps/service-portal/src/assets/images/bench.svg b/apps/portals/my-pages/src/assets/images/bench.svg similarity index 100% rename from apps/service-portal/src/assets/images/bench.svg rename to apps/portals/my-pages/src/assets/images/bench.svg diff --git a/apps/service-portal/src/assets/images/bus.svg b/apps/portals/my-pages/src/assets/images/bus.svg similarity index 100% rename from apps/service-portal/src/assets/images/bus.svg rename to apps/portals/my-pages/src/assets/images/bus.svg diff --git a/apps/service-portal/src/assets/images/coffee.svg b/apps/portals/my-pages/src/assets/images/coffee.svg similarity index 100% rename from apps/service-portal/src/assets/images/coffee.svg rename to apps/portals/my-pages/src/assets/images/coffee.svg diff --git a/apps/service-portal/src/assets/images/company.svg b/apps/portals/my-pages/src/assets/images/company.svg similarity index 100% rename from apps/service-portal/src/assets/images/company.svg rename to apps/portals/my-pages/src/assets/images/company.svg diff --git a/apps/service-portal/src/assets/images/dashboard.svg b/apps/portals/my-pages/src/assets/images/dashboard.svg similarity index 100% rename from apps/service-portal/src/assets/images/dashboard.svg rename to apps/portals/my-pages/src/assets/images/dashboard.svg diff --git a/apps/service-portal/src/assets/images/drivingLessons.svg b/apps/portals/my-pages/src/assets/images/drivingLessons.svg similarity index 100% rename from apps/service-portal/src/assets/images/drivingLessons.svg rename to apps/portals/my-pages/src/assets/images/drivingLessons.svg diff --git a/apps/service-portal/src/assets/images/education.svg b/apps/portals/my-pages/src/assets/images/education.svg similarity index 100% rename from apps/service-portal/src/assets/images/education.svg rename to apps/portals/my-pages/src/assets/images/education.svg diff --git a/apps/service-portal/src/assets/images/educationDegree.svg b/apps/portals/my-pages/src/assets/images/educationDegree.svg similarity index 100% rename from apps/service-portal/src/assets/images/educationDegree.svg rename to apps/portals/my-pages/src/assets/images/educationDegree.svg diff --git a/apps/service-portal/src/assets/images/educationGrades.svg b/apps/portals/my-pages/src/assets/images/educationGrades.svg similarity index 100% rename from apps/service-portal/src/assets/images/educationGrades.svg rename to apps/portals/my-pages/src/assets/images/educationGrades.svg diff --git a/apps/service-portal/src/assets/images/empty.svg b/apps/portals/my-pages/src/assets/images/empty.svg similarity index 100% rename from apps/service-portal/src/assets/images/empty.svg rename to apps/portals/my-pages/src/assets/images/empty.svg diff --git a/apps/service-portal/src/assets/images/emptyState.svg b/apps/portals/my-pages/src/assets/images/emptyState.svg similarity index 100% rename from apps/service-portal/src/assets/images/emptyState.svg rename to apps/portals/my-pages/src/assets/images/emptyState.svg diff --git a/apps/service-portal/src/assets/images/familyGrid.svg b/apps/portals/my-pages/src/assets/images/familyGrid.svg similarity index 100% rename from apps/service-portal/src/assets/images/familyGrid.svg rename to apps/portals/my-pages/src/assets/images/familyGrid.svg diff --git a/apps/service-portal/src/assets/images/health.svg b/apps/portals/my-pages/src/assets/images/health.svg similarity index 100% rename from apps/service-portal/src/assets/images/health.svg rename to apps/portals/my-pages/src/assets/images/health.svg diff --git a/apps/service-portal/src/assets/images/hourglass.svg b/apps/portals/my-pages/src/assets/images/hourglass.svg similarity index 100% rename from apps/service-portal/src/assets/images/hourglass.svg rename to apps/portals/my-pages/src/assets/images/hourglass.svg diff --git a/apps/service-portal/src/assets/images/individualsGrid.svg b/apps/portals/my-pages/src/assets/images/individualsGrid.svg similarity index 100% rename from apps/service-portal/src/assets/images/individualsGrid.svg rename to apps/portals/my-pages/src/assets/images/individualsGrid.svg diff --git a/apps/service-portal/src/assets/images/island.png b/apps/portals/my-pages/src/assets/images/island.png similarity index 100% rename from apps/service-portal/src/assets/images/island.png rename to apps/portals/my-pages/src/assets/images/island.png diff --git a/apps/service-portal/src/assets/images/island.svg b/apps/portals/my-pages/src/assets/images/island.svg similarity index 100% rename from apps/service-portal/src/assets/images/island.svg rename to apps/portals/my-pages/src/assets/images/island.svg diff --git a/apps/service-portal/src/assets/images/jobsGrid.svg b/apps/portals/my-pages/src/assets/images/jobsGrid.svg similarity index 100% rename from apps/service-portal/src/assets/images/jobsGrid.svg rename to apps/portals/my-pages/src/assets/images/jobsGrid.svg diff --git a/apps/service-portal/src/assets/images/movingTruck.svg b/apps/portals/my-pages/src/assets/images/movingTruck.svg similarity index 100% rename from apps/service-portal/src/assets/images/movingTruck.svg rename to apps/portals/my-pages/src/assets/images/movingTruck.svg diff --git a/apps/service-portal/src/assets/images/myDocuments.svg b/apps/portals/my-pages/src/assets/images/myDocuments.svg similarity index 100% rename from apps/service-portal/src/assets/images/myDocuments.svg rename to apps/portals/my-pages/src/assets/images/myDocuments.svg diff --git a/apps/service-portal/src/assets/images/myInfo.svg b/apps/portals/my-pages/src/assets/images/myInfo.svg similarity index 100% rename from apps/service-portal/src/assets/images/myInfo.svg rename to apps/portals/my-pages/src/assets/images/myInfo.svg diff --git a/apps/service-portal/src/assets/images/myRights.svg b/apps/portals/my-pages/src/assets/images/myRights.svg similarity index 100% rename from apps/service-portal/src/assets/images/myRights.svg rename to apps/portals/my-pages/src/assets/images/myRights.svg diff --git a/apps/service-portal/src/assets/images/nodata.svg b/apps/portals/my-pages/src/assets/images/nodata.svg similarity index 100% rename from apps/service-portal/src/assets/images/nodata.svg rename to apps/portals/my-pages/src/assets/images/nodata.svg diff --git a/apps/service-portal/src/assets/images/payment.svg b/apps/portals/my-pages/src/assets/images/payment.svg similarity index 100% rename from apps/service-portal/src/assets/images/payment.svg rename to apps/portals/my-pages/src/assets/images/payment.svg diff --git a/apps/service-portal/src/assets/images/retirement.svg b/apps/portals/my-pages/src/assets/images/retirement.svg similarity index 100% rename from apps/service-portal/src/assets/images/retirement.svg rename to apps/portals/my-pages/src/assets/images/retirement.svg diff --git a/apps/service-portal/src/assets/images/rls.svg b/apps/portals/my-pages/src/assets/images/rls.svg similarity index 100% rename from apps/service-portal/src/assets/images/rls.svg rename to apps/portals/my-pages/src/assets/images/rls.svg diff --git a/apps/service-portal/src/assets/images/school.svg b/apps/portals/my-pages/src/assets/images/school.svg similarity index 100% rename from apps/service-portal/src/assets/images/school.svg rename to apps/portals/my-pages/src/assets/images/school.svg diff --git a/apps/service-portal/src/assets/images/settings.svg b/apps/portals/my-pages/src/assets/images/settings.svg similarity index 100% rename from apps/service-portal/src/assets/images/settings.svg rename to apps/portals/my-pages/src/assets/images/settings.svg diff --git a/apps/service-portal/src/assets/images/shopping.svg b/apps/portals/my-pages/src/assets/images/shopping.svg similarity index 100% rename from apps/service-portal/src/assets/images/shopping.svg rename to apps/portals/my-pages/src/assets/images/shopping.svg diff --git a/apps/portals/my-pages/src/assets/images/skjaldarmerki.svg b/apps/portals/my-pages/src/assets/images/skjaldarmerki.svg new file mode 100644 index 000000000000..cd68ae33d78a --- /dev/null +++ b/apps/portals/my-pages/src/assets/images/skjaldarmerki.svg @@ -0,0 +1,254 @@ +<svg width="74" height="79" viewBox="0 0 74 79" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M22.0182 77.6973L23.6139 77.9283C24.0524 77.8093 24.499 77.723 24.9501 77.67C24.9501 77.67 27.2674 77.2676 27.4996 77.2565L28.8556 77.7432C28.8556 77.7432 32.8071 77.1559 31.9627 77.2763C31.877 77.29 34.0924 78.0462 34.0924 78.0462L34.7246 77.8972C34.7246 77.8972 36.6357 78.2102 36.9685 78.2102C37.0492 78.2102 37.4193 78.1195 37.5 78.1195C37.5 78.1195 40.5487 78.2735 41.0777 78.2735L41.7855 77.9295C42.4104 77.89 43.0371 77.8896 43.6619 77.9283C44.3432 78.2148 45.0406 78.4611 45.7507 78.6659L46.5293 78.5591C46.1605 78.5368 47.0918 78.6659 47.4632 78.6659C48.0331 78.6659 48.3697 78.6175 48.9446 78.6175C49.2613 78.641 49.5797 78.615 49.8884 78.5405C50.0751 78.4026 50.2719 78.2789 50.477 78.1704L51.1936 78.2685H52.7334C52.8589 78.2064 53.1991 78.0238 53.0538 78.0301C52.9098 78.0338 54.3974 78.1456 54.3974 78.1456C55.7312 78.0674 59.3113 78.5243 59.5734 78.5243L61.4671 77.588C61.6609 77.588 63.7012 77.4998 63.7012 77.4998C64.1632 77.3598 64.6352 77.2552 65.1131 77.1869C65.2659 77.1869 66.8343 77.2589 67.2664 77.2589C67.3931 77.2589 68.9838 77.1025 68.9838 77.1025L69.318 76.417C69.5974 76.0842 69.9178 76.0568 70.1624 75.7178C70.4021 75.3863 70.1599 74.8262 70.2891 74.4412C70.3077 74.3829 70.9845 74.1854 71.2713 73.7458C71.3074 73.5496 71.254 72.8156 71.254 72.6182C71.254 72.4469 71.4378 70.758 71.4117 70.2203C71.3583 69.2256 71.1646 67.5231 71.1646 67.5231C70.857 67.4792 70.5646 67.3619 70.3121 67.1809C70.0596 67 69.8545 66.7608 69.7141 66.4837C69.238 65.7163 68.6631 65.0149 68.0041 64.3974C67.4751 63.897 67.0119 63.969 66.2743 63.8249L66.473 62.3447C68.1134 61.9858 70.2059 61.3127 70.4704 59.7542L70.5871 56.9366C70.8251 56.8146 71.0367 56.6468 71.2098 56.4429C71.3828 56.2389 71.5139 56.0028 71.5955 55.7481C71.7706 55.2427 73.0633 54.6219 73.0633 54.0829C73.0633 52.7814 72.6796 47.7272 72.8212 47.5769C73.3837 46.9771 73.7686 46.925 73.7686 46.2234C73.7686 44.845 72.4709 37.3928 72.4709 37.3928C72.8281 36.1385 72.9992 34.8385 72.9788 33.5345C72.9859 33.157 72.9597 32.7797 72.9006 32.4069C72.8382 32.416 72.7747 32.4113 72.7143 32.3932C72.6644 32.1217 72.6287 31.8477 72.6075 31.5724C72.5949 30.6603 72.5177 29.7503 72.3765 28.8491C72.348 28.6355 71.7631 28.2816 71.7631 28.2816C71.7631 28.2816 72.4038 23.9464 72.4038 23.7589C72.4175 23.6656 72.4117 23.5704 72.3868 23.4795C72.3619 23.3885 72.3184 23.3037 72.2592 23.2304C72.1999 23.157 72.1262 23.0967 72.0425 23.0532C71.9588 23.0097 71.8671 22.984 71.773 22.9777C71.0403 22.8262 70.8615 23.6545 70.8615 23.8755C70.8615 24.0804 70.5995 26.1332 70.5995 26.1332C70.5995 26.1332 70.4704 27.339 70.376 27.9102C70.3611 27.9835 69.0684 28.3039 69.4061 29.0862C69.231 28.6789 68.5766 29.1793 68.6784 29.6227C68.7001 29.751 68.7601 29.8697 68.8505 29.9632C68.941 30.0568 69.0576 30.1207 69.1851 30.1467C69.2286 30.1591 69.0808 30.3069 69.0684 30.3603C69.0779 30.5609 69.0991 30.7607 69.1317 30.9588C69.1342 31.0259 69.2509 31.0632 69.2509 31.0632C69.1391 31.2321 69.2596 31.5872 69.3018 31.6866C69.3354 31.7685 69.6967 31.8107 69.7526 31.802C69.7191 32.1175 69.5589 33.5853 69.539 33.5704C68.7803 33.0526 68.1519 33.2997 68.0625 33.1407C67.6353 32.4068 67.2131 32.3559 66.7909 31.9958C66.6972 31.5123 66.5051 31.0532 66.2266 30.6471C65.948 30.241 65.5889 29.8965 65.1715 29.6351C64.5344 29.3572 63.8536 29.1929 63.1598 29.1495C62.9845 28.8232 62.9074 28.4532 62.9375 28.084V28.1325C63.2032 27.8898 63.3956 27.5774 63.4926 27.2309C63.4032 27.0595 63.2554 26.9726 63.1598 26.7988C63.0927 26.6696 63.0977 26.4138 63.0319 26.2511C62.9959 26.1468 62.9027 26.0735 62.9027 25.9618L62.8916 25.7519C63.1461 25.7122 63.197 25.5085 63.3423 25.2962C63.628 24.8864 63.2865 25.0404 62.9586 24.6815C62.9586 24.4952 62.3601 23.313 62.3526 23.1279C62.3253 22.4325 62.1564 22.3891 61.5454 22.0997C61.3533 21.9829 61.138 21.9091 60.9146 21.8836L60.085 21.7644H59.4542C59.2381 21.7644 59.0755 21.8414 58.8644 21.8414C58.7074 21.8437 58.5515 21.868 58.4012 21.9135C58.3143 21.9395 58.0398 22.5157 57.9815 22.5567C57.8412 22.4325 57.4413 23.0137 57.1743 23.2409C57.0534 23.9757 56.8875 24.7022 56.6776 25.4166L55.9151 26.9764C56.3298 27.4171 56.8912 27.4171 57.0414 27.8841C57.1519 28.2244 57.5182 28.3163 57.1817 28.6739C57.1426 28.5183 57.0696 28.3732 56.968 28.2491C56.8663 28.125 56.7384 28.0249 56.5935 27.9559C56.4487 27.887 56.2903 27.8509 56.1299 27.8503C55.9694 27.8497 55.8108 27.8846 55.6654 27.9524C55.8716 27.6122 55.5686 27.2136 55.6505 27.1043C55.8091 26.8611 55.9102 26.5849 55.9461 26.2968C55.9821 26.0087 55.9519 25.7162 55.8579 25.4415C56.0472 25.1843 56.136 24.8668 56.1076 24.5487C56.0793 24.2306 55.9357 23.9338 55.7039 23.7141C56.2913 23.3553 55.6393 22.0961 55.4841 22.2078C56.2312 21.4439 57.2226 20.9662 58.2857 20.858C59.381 20.8654 59.1611 21.3957 59.6753 21.4528C60.02 21.5034 60.3714 21.4274 60.6643 21.2388C60.9572 21.0502 61.1719 20.7618 61.2685 20.427C61.2983 20.2241 61.2681 20.0169 61.1816 19.831C61.9342 19.8813 62.6893 19.88 63.4417 19.8273C66.658 19.5193 67.2379 17.8837 67.2665 17.1971C67.3053 16.914 67.2852 16.626 67.2074 16.351C67.1297 16.0761 66.9959 15.8202 66.8146 15.5994C66.6333 15.3786 66.4084 15.1976 66.1538 15.0678C65.8993 14.938 65.6207 14.8622 65.3355 14.8451C65.4773 15.0584 65.5618 15.3046 65.5809 15.5601C65.6001 15.8155 65.5532 16.0715 65.4448 16.3036C65.3364 16.5357 65.1702 16.736 64.9621 16.8853C64.7539 17.0346 64.5109 17.1278 64.2563 17.1561C64.2464 17.1586 65.2286 17.2392 65.3044 17.5423C65.3577 17.8379 65.0573 18.2551 63.0902 18.3209C63.0902 18.3209 60.9754 18.2427 60.444 18.2166C58.96 18.1421 57.3493 18.5643 54.6832 20.4395C54.8557 20.3165 55.2755 19.5031 55.7337 19.3479C55.8914 19.4783 55.7114 19.5925 55.8256 19.5901C55.951 19.5461 56.0541 19.4548 56.113 19.3358C56.172 19.2167 56.182 19.0794 56.141 18.953C56.233 18.8776 56.335 18.8153 56.4441 18.7679C56.7334 18.9753 56.495 19.1491 56.6292 19.1417C56.6988 19.1124 56.762 19.0697 56.8151 19.0159C56.8682 18.9621 56.9102 18.8984 56.9386 18.8283C56.967 18.7583 56.9812 18.6833 56.9806 18.6077C56.9799 18.5322 56.9643 18.4575 56.9346 18.3879C57.1544 18.2687 57.2277 18.2154 57.3655 18.1532C57.6176 18.3941 57.3345 18.676 57.4897 18.6909C57.6743 18.639 57.8335 18.5213 57.9372 18.36C58.0409 18.1986 58.0818 18.0049 58.0523 17.8154C58.1442 17.7819 58.3528 17.6751 58.441 17.6466C58.7415 18.0303 58.3043 18.2886 58.4844 18.3321C58.7118 18.2987 58.9194 18.1841 59.0687 18.0094C59.2181 17.8348 59.299 17.6119 59.2966 17.3821C59.4497 17.3218 59.6069 17.2729 59.7672 17.2355C60.1037 17.7012 59.6119 18.0899 59.8205 18.1445C60.0989 18.0895 60.3499 17.9401 60.5311 17.7216C60.7123 17.5031 60.8126 17.2288 60.8152 16.945C61.0077 16.9351 61.2001 16.9653 61.3803 17.0337C61.5605 17.1021 61.7246 17.2072 61.862 17.3423C62.2284 17.1002 62.8158 16.8419 62.6829 15.4672C62.6029 14.9644 62.3354 14.5107 61.9342 14.1973C61.5331 13.8839 61.028 13.7342 60.5209 13.7783C59.9273 13.8628 59.9298 14.1745 59.8887 14.8301C59.3523 14.5433 59.4417 14.9506 59.1846 15.0611C59.0219 15.1294 58.8282 14.6749 58.5451 15.2648C58.1949 15.004 58.0831 15.0772 57.8993 15.3505C57.8649 15.1088 57.7384 14.8898 57.5464 14.7392C57.3543 14.5886 57.1115 14.5179 56.8686 14.542C56.5988 14.5221 56.3277 14.5584 56.0726 14.6488C55.7656 14.6526 55.4611 14.5921 55.1788 14.4713C54.8965 14.3505 54.6426 14.172 54.4334 13.9472C54.2856 14.4005 54.344 14.9332 54.0621 14.9332C53.3888 14.9743 52.7133 14.9631 52.0417 14.8997C52.0164 15.1376 52.039 15.3782 52.1081 15.6072C52.1772 15.8363 52.2914 16.0492 52.4441 16.2334C51.9431 16.3136 51.4337 16.3278 50.9291 16.2756C50.9826 16.6775 51.1404 17.0584 51.3868 17.3804C51.6332 17.7024 51.9596 17.9543 52.3336 18.111C51.8815 18.9852 51.8741 21.0193 50.8583 21.382C51.2271 21.6725 52.0951 21.2938 52.11 21.1982C51.9647 22.1941 51.0408 22.5518 50.3751 22.9901C50.9923 23.1044 51.6269 23.2484 51.571 23.7253C51.5475 23.9351 51.2705 24.2878 49.9219 24.6206C50.0646 24.5846 50.7055 25.3781 50.4708 25.5743C50.2224 25.7805 48.464 25.239 48.464 25.239C48.6522 25.5577 48.7919 25.9026 48.8787 26.2623C48.6413 26.1693 48.4275 26.0247 48.2529 25.8388C47.5674 25.044 46.0201 25.244 46.0201 23.827C46.0201 23.3725 46.0946 23.2533 46.3926 23.375C46.985 23.6172 46.9824 24.3796 47.3128 24.4393C47.6245 24.448 47.9347 24.3936 48.2248 24.2792C48.5148 24.1648 48.7787 23.9928 49.0004 23.7736C49.4282 23.1454 49.706 22.4275 49.8126 21.675C53.4635 20.8839 46.4857 7.67968 52.095 5.48166C52.2354 5.42453 49.3693 2.84031 45.7692 9.65665C44.8528 7.92431 42.697 3.6388 44.3709 0.950253C43.0459 0.406331 40.7647 1.50659 40.648 6.39563C40.602 7.06667 40.4336 7.72364 40.1512 8.33411C39.8408 8.90039 39.3627 9.52998 39.1665 9.52253C39.0931 9.36261 38.9884 9.21904 38.8585 9.10032C38.597 9.16134 38.343 9.25087 38.101 9.3673C39.0907 5.13146 38.281 4.24605 38.281 4.24605C37.9309 4.3138 37.6061 4.47661 37.3422 4.71664C37.5993 1.4817 35.6683 0.487007 34.7829 0.705579C34.6177 0.746552 33.9483 0.991194 34.0042 1.1489C34.3294 2.34114 34.4034 3.58791 34.2214 4.81023C34.0395 6.03255 33.6057 7.20375 32.9474 8.24963C32.8153 7.64384 32.4913 7.09685 32.0235 6.68991C31.7286 6.82486 31.4636 7.01725 31.244 7.25585C31.0244 7.49445 30.8546 7.77446 30.7444 8.07949C30.3222 4.84951 27.7666 4.99232 27.584 5.02462C27.3158 5.06932 26.6725 5.4369 26.8402 5.87775C28.344 6.7967 28.4111 8.11427 27.5778 12.0806C27.2574 11.9031 27.0004 11.8187 26.8563 11.9006C27.0942 13.1691 27.1265 14.4677 26.952 15.7465C26.952 15.7465 26.2044 15.4186 26.0852 15.5105C26.0281 15.5354 26.0802 15.9799 26.0902 16.0433C26.221 16.8631 26.2882 17.6918 26.2914 18.5219C26.2914 20.2133 26.6465 20.1549 28.0237 22.1307C28.8557 24.356 28.8358 24.659 30.4315 24.7509C30.6021 24.7304 30.7669 24.6759 30.9159 24.5904C31.065 24.505 31.1954 24.3905 31.2993 24.2536C31.4032 24.1168 31.4786 23.9605 31.5209 23.7939C31.5631 23.6274 31.5715 23.4541 31.5455 23.2842C31.6374 23.2681 31.5455 23.2842 31.6374 23.2842C32.103 23.2842 32.2198 23.4792 32.1639 23.9399C32.0397 24.9893 31.1282 24.7956 30.3297 25.3879C29.1487 26.2982 28.8259 27.2929 27.6983 27.6033C27.7356 27.4874 27.7442 27.3641 27.7234 27.2441C27.7026 27.1241 27.653 27.0109 27.5789 26.9143C27.5048 26.8176 27.4084 26.7404 27.2979 26.6891C27.1874 26.6379 27.0662 26.6142 26.9445 26.6201C26.8762 26.6201 26.8042 26.8299 26.7533 26.8622C26.3336 27.3143 25.0458 27.1851 25.5177 27.087C26.1759 26.9529 26.947 26.6971 26.9855 25.6092C27.0004 25.1983 26.4515 24.5115 26.0417 24.5115C25.7698 24.5115 25.8096 24.6853 25.8096 24.3103C25.8096 24.1687 24.9217 24.9001 25.0012 23.9079C25.021 23.6596 24.9291 23.7204 24.9291 23.4733C24.9897 23.5317 25.0623 23.576 25.142 23.6031C25.2216 23.6301 25.3063 23.6392 25.3898 23.6298C25.6395 23.6002 25.8724 23.489 26.0523 23.3133C26.2322 23.1377 26.349 22.9075 26.3845 22.6587C26.4136 22.465 26.3988 22.2672 26.3412 22.08C26.2836 21.8928 26.1847 21.7209 26.0517 21.577C25.7004 22.6028 26.0803 21.284 25.8481 20.8233C25.627 20.8766 25.247 21.048 25.1936 20.673C25.1613 20.5195 25.1613 20.3609 25.1936 20.2073L25.2979 19.6932C26.4181 19.7329 26.0443 18.2861 25.6519 17.9894C25.5326 17.9 25.2272 19.1704 24.7925 17.5051C24.5923 16.3478 23.9833 15.3008 23.0763 14.5545C22.6043 14.2231 22.04 14.0485 21.4632 14.0553C21.1764 14.0553 20.9876 13.9634 20.7815 14.1671C20.6063 14.0168 19.8228 14.3397 19.5595 14.3583C19.2242 14.3881 18.5772 14.1795 18.0022 14.1845C15.8042 14.2105 15.5646 17.7758 17.2547 17.6206C17.3386 17.4126 17.4787 17.2322 17.6595 17.0994C17.8402 16.9667 18.0544 16.887 18.2779 16.8692C19.0839 16.8692 19.2627 17.2194 19.6128 18.0527C19.7122 18.0427 18.5374 18.0204 18.5374 18.0204C17.9873 18.0179 17.8047 18.0216 17.2546 18.0216C17.1093 18.0216 17.0249 18.0614 16.8783 18.0614C16.7654 18.0614 16.178 18.1123 15.9184 18.1123C15.4354 18.1408 14.9511 18.1421 14.468 18.116C12.794 17.9533 12.3718 17.1573 12.4724 16.7314C12.7137 16.0975 13.1196 15.5393 13.6484 15.1145C13.3017 15.0589 12.9473 15.0728 12.606 15.1554C12.2647 15.238 11.9433 15.3877 11.6604 15.5957C11.3775 15.8037 11.1388 16.0659 10.9582 16.3671C10.7776 16.6682 10.6586 17.0023 10.6084 17.3498C10.4705 19.6348 12.6735 20.2904 14.956 19.944C16.0921 19.6137 17.2602 19.4056 18.4405 19.3231C18.4405 19.3231 17.5141 19.8086 18.6107 21.0542C18.7386 20.6195 19.0254 19.5379 20.384 20.6543C20.6122 21.1478 20.6937 21.6966 20.6187 22.2351C20.6236 24.083 19.9667 22.9032 20.2747 22.5543C20.4026 22.409 18.5933 22.3134 18.6231 23.5452C18.6293 23.9004 18.8776 24.2059 19.0975 24.2047C18.7944 24.2059 18.3076 24.3077 18.2704 24.0444C18.2452 23.8004 18.2819 23.554 18.3772 23.3279C18.2427 23.2222 18.0847 23.1506 17.9165 23.1193C17.1602 22.9839 16.9218 23.9861 17.1652 24.1264C16.9627 23.9857 16.7277 23.899 16.4824 23.8744C16.2371 23.8498 15.9896 23.8882 15.7632 23.9859C15.5368 24.0836 15.3391 24.2374 15.1888 24.4328C15.0384 24.6281 14.9403 24.8586 14.9038 25.1024C14.8811 25.2998 14.9026 25.4998 14.9668 25.6878C15.0311 25.8758 15.1365 26.0471 15.2753 26.1893C15.4141 26.3314 15.5829 26.4408 15.7693 26.5095C15.9558 26.5782 16.1552 26.6044 16.353 26.5864C16.7059 26.505 17.0145 26.2923 17.2161 25.9915C17.0286 25.8872 16.7256 25.8028 16.7256 25.583C16.7266 25.5194 16.7437 25.4571 16.7753 25.402C16.8069 25.3468 16.852 25.3005 16.9062 25.2674C16.9605 25.2343 17.0223 25.2155 17.0858 25.2127C17.1493 25.2099 17.2125 25.2232 17.2695 25.2514C17.2483 25.3266 17.2313 25.4028 17.2186 25.4799C17.2186 25.8226 17.7861 26.2374 18.1475 26.1877C18.4194 26.1517 18.6131 25.763 18.8379 25.5532C18.679 25.5532 18.5212 25.4625 18.5982 25.321C18.6926 25.1521 18.7944 25.1931 19.3359 25.095C18.8988 25.629 18.6739 25.7494 18.5647 26.4399C18.525 28.9037 17.2906 27.5252 17.1677 27.4793C17.0437 27.7183 16.9808 27.9842 16.9846 28.2534C16.9883 28.5226 17.0586 28.7866 17.1892 29.0221C17.3198 29.2575 17.5065 29.457 17.7329 29.6027C17.9592 29.7484 18.2181 29.8359 18.4865 29.8573C18.5088 30.6037 18.9621 31.3674 18.6131 31.422C18.6641 30.513 17.5986 30.4832 17.5477 30.5342C17.4085 30.3293 17.2084 30.1734 16.9756 30.0887C16.7429 30.0039 16.4893 29.9946 16.251 30.0621C16.0127 30.1296 15.8017 30.2704 15.6479 30.4646C15.4941 30.6588 15.4054 30.8965 15.3943 31.1439C13.9079 30.379 12.2947 32.5062 14.0246 33.9616C14.16 33.5456 13.898 32.8378 14.7076 33.1904C14.6841 33.3183 14.4605 33.3928 14.8393 33.897C12.8648 34.251 13.7452 37.1667 15.516 36.7259C15.593 36.7073 14.7151 35.5722 15.5272 35.8815C15.5272 36.1869 15.6315 36.2254 15.942 36.2254C16.2039 36.2254 16.4586 36.0056 16.6535 36.0752C17.0385 36.213 16.9155 36.1398 17.298 36.0826C17.4881 36.0516 17.5017 36.2701 17.883 36.1633C18.0481 36.1174 18.0792 36.0578 18.0792 36.1733C18.0792 36.4092 17.9264 36.5955 17.9264 36.8314C17.9264 36.9221 17.9239 37.425 18.3027 37.435C18.4728 37.4399 18.0767 37.7343 17.4458 37.4275C17.3245 37.6308 17.282 37.8716 17.3264 38.1042C17.3708 38.3367 17.499 38.5449 17.6867 38.6892C17.2645 38.791 14.5598 40.9791 14.8678 41.0362C14.9672 41.0549 14.761 41.8683 14.1749 42.2992C13.7412 42.0024 13.3792 41.6124 13.1156 41.1578C12.852 40.7032 12.6933 40.1953 12.6512 39.6715C12.1806 39.1437 10.8567 41.5032 12.106 43.541L12.3432 43.8961C12.1197 44.0576 9.04368 46.7772 7.19958 46.1153C6.65195 45.9166 4.22418 42.4532 1.27734 43.2541C1.11218 43.3013 0.55957 43.4876 0.55957 43.7608C0.55957 44.1482 2.16028 44.9355 2.73526 45.8023C3.46917 46.9125 5.05369 50.109 7.49143 50.2666C7.49143 50.2666 7.62679 50.2418 7.61188 50.3349C5.53681 50.3809 5.29093 51.4724 4.32851 51.8512C4.63344 52.5798 5.16891 53.1882 5.85281 53.5832C6.53671 53.9782 7.33129 54.138 8.11474 54.0381C8.32834 54.4119 8.7767 55.9393 9.75767 55.9679C9.93304 56.5781 10.1445 57.1773 10.391 57.7623C10.603 58.2568 10.7528 58.7757 10.8368 59.3072C10.8729 59.4736 10.3103 60.3987 10.4146 60.4856C10.6505 60.8358 10.8492 60.9886 10.9895 61.1798C11.1448 61.3884 10.9511 61.7908 11.0504 62.0764C11.3254 62.4062 11.7105 62.6254 12.1345 62.6936C12.7599 62.5119 13.3991 62.3815 14.0457 62.3037C14.6157 62.3037 14.9 62.3558 15.4651 62.3558C16.0746 62.4058 16.6809 62.2265 17.1651 61.8529C17.3039 61.9614 17.4705 62.0285 17.6457 62.0466L17.4433 62.439C16.5927 62.9246 14.1327 62.3682 14.0606 63.0326C13.6207 63.048 13.1846 63.1198 12.7629 63.2462C12.0228 63.404 11.2719 63.5066 10.5165 63.5529C10.0757 63.5529 9.73289 63.6945 9.73289 64.1329C9.73289 64.4458 9.56649 64.678 9.56649 64.9922C9.05354 65.6106 8.47617 65.7646 8.47617 66.5631L8.47866 67.4026C8.0316 67.4485 7.28278 68.3228 7.28278 68.4507C7.28278 69.0144 7.03566 69.1784 7.03566 69.7446C7.03566 70.3792 7.08409 71.3839 7.15612 72.0097L7.35482 73.6676L7.33618 74.1742C7.39952 74.1742 7.40821 75.154 7.47154 75.1503C8.22409 75.113 7.90369 75.883 8.17938 76.1338C8.49021 76.3488 8.8486 76.4852 9.22374 76.5312C9.22374 76.5312 9.49322 77.0155 9.80368 77.0776C10.0656 77.1149 10.3501 77.1409 10.6084 77.1583C12.5009 77.2949 12.6922 76.8368 12.6922 76.8368C12.7915 76.8455 14.8517 77.6452 14.8517 77.6452C15.3183 77.5191 15.7955 77.4363 16.2773 77.3981L16.9851 77.7905C17.2695 77.8091 18.7709 78.0078 19.0031 78.019" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M25.1712 36.6386C23.9194 36.6458 22.6703 36.7534 21.4357 36.9602C20.8425 36.4985 20.3134 35.9598 19.8624 35.3583C19.5296 35.0739 18.4865 35.7556 18.5064 35.7854C18.5188 35.8003 19.896 35.0789 20.0562 36.2933C20.0891 36.433 20.114 36.5744 20.1307 36.7169C20.1374 36.7517 20.1358 36.7876 20.1261 36.8216C20.1164 36.8557 20.0988 36.887 20.0748 36.9131C19.7667 36.8907 19.4599 36.8522 19.1558 36.7976C18.756 36.7976 18.7436 37.0137 18.3462 37.0497C18.3009 37.0166 18.2648 36.9726 18.2412 36.9218C18.2175 36.871 18.2071 36.815 18.2108 36.7591C18.2082 36.6635 18.2144 36.5679 18.2294 36.4735C18.2468 36.4002 18.2903 36.322 18.2977 36.2648C18.3188 36.0416 18.3642 35.8213 18.4331 35.6079C18.3151 35.6613 18.1276 35.4763 18.0158 35.5583C17.9112 35.605 17.7966 35.625 17.6823 35.6163C17.5681 35.6076 17.4578 35.5706 17.3614 35.5086C16.6896 35.7184 16.6076 35.4129 16.476 35.4477C16.3207 35.5173 16.1599 35.5742 15.9954 35.6178C15.5521 35.6178 15.5881 35.2453 15.5881 34.802V34.0941C15.5881 33.8594 15.86 33.8396 16.0786 33.8706C16.1705 33.883 16.4425 34.0643 16.5319 33.9923C16.6603 33.98 16.7894 33.9775 16.9181 33.9849C17.119 34.0134 17.312 34.0823 17.4856 34.1872C17.6011 34.1301 17.585 34.0941 17.4409 34.0147C17.334 33.8984 17.2045 33.805 17.0605 33.7401C16.9164 33.6752 16.7607 33.6402 16.6027 33.6372C16.5137 33.5518 16.4058 33.4886 16.2878 33.4528C16.1698 33.417 16.0449 33.4095 15.9235 33.431C15.7808 33.431 15.5348 33.7005 15.4889 33.7415C15.397 33.8259 15.1859 33.4161 15.1859 33.2894C15.1746 33.1461 15.1928 33.0019 15.2392 32.8658C15.2856 32.7297 15.3593 32.6046 15.4558 32.4979C15.5523 32.3913 15.6695 32.3055 15.8004 32.2458C15.9312 32.1861 16.0728 32.1538 16.2166 32.1507C16.4252 32.1507 16.4761 32.214 16.6313 32.3544C16.7232 32.4351 16.6996 32.5183 16.8139 32.5903C16.8648 32.6238 17.0921 32.7269 17.1305 32.7629C17.2373 32.8498 17.3031 32.9404 17.395 33.0261C17.4248 33.0534 17.657 33.2198 17.6868 33.2509C17.8401 33.3536 17.971 33.4863 18.0718 33.6408C18.1065 33.6619 18.4232 33.9389 18.4741 33.9873C18.5983 34.1102 18.7101 34.2071 18.7101 34.0258C18.7101 33.7166 18.4716 33.9227 18.3922 33.6247C18.3456 33.4917 18.271 33.3703 18.1736 33.2686C18.0761 33.1668 17.958 33.0871 17.8271 33.0349C17.7067 32.7893 17.5167 32.5846 17.2807 32.4463C17.1789 32.404 16.6847 32.0812 16.9219 31.7012C16.9517 31.6577 16.7256 31.428 16.5071 31.4503C16.3894 31.4347 16.2697 31.456 16.1647 31.5114C16.0597 31.5668 15.9745 31.6535 15.9209 31.7595C15.8901 31.7188 15.8551 31.6813 15.8166 31.6478C15.993 30.2259 16.8647 30.4345 17.3329 30.6705C17.058 30.7957 16.8294 31.0042 16.6797 31.2666C16.6623 31.3001 16.8424 31.3336 16.8622 31.3709C16.9219 31.4094 17.2882 30.7661 17.7427 30.8394L18.0643 30.9735L18.1251 31.3684C18.1152 31.284 18.2443 31.4727 18.4194 31.5535L18.6442 31.7547C18.7338 31.8341 18.8016 31.9351 18.8412 32.0482C18.8808 32.1612 18.8907 32.2825 18.8702 32.4005C18.7364 32.6548 18.5291 32.8629 18.2754 32.9978C18.217 33.0375 18.3213 33.0213 18.2953 33.0561C18.3486 33.0772 18.4169 33.1021 18.4678 33.1182C18.7176 33.1497 18.9711 33.132 19.2141 33.0661C19.2601 33.1244 20.0263 32.7407 20.0486 32.7854C19.8648 34.4172 20.2399 34.6196 20.8099 34.4656C20.7912 34.5029 21.2979 34.2843 21.4121 34.4867C21.591 34.5947 22.5062 35.5435 22.5782 35.5845C22.6167 35.6031 23.0153 35.7521 23.1408 35.813C23.1681 35.8266 23.4153 35.9309 23.4686 35.9533C24.0221 36.2152 24.5906 36.4441 25.1711 36.6388" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M25.2875 36.6386L24.6057 36.1928C24.0454 35.8767 23.4428 35.6421 22.8162 35.4962C22.8162 35.4962 23.534 34.91 22.5642 33.7303C23.8035 32.7319 22.8287 32.065 22.5902 31.7036L22.5828 31.7483C23.0944 32.6002 22.7529 33.0374 22.702 33.1428C22.702 33.1428 22.7144 33.3515 22.7144 33.3092C22.6519 32.8955 22.4457 32.517 22.132 32.24C21.9035 31.9644 21.6564 32.0066 21.6204 31.5123C21.5794 31.4155 21.5061 31.5061 21.5285 31.603C21.7098 32.4561 22.1034 31.906 22.4524 33.3266C22.4703 33.4838 22.4653 33.6428 22.4375 33.7985C22.6185 34.0964 22.7103 34.4399 22.702 34.7883L22.6772 35.1609C22.214 34.5027 21.8874 34.4828 21.6465 33.842C21.7348 33.6115 21.7705 33.3641 21.7508 33.1181C21.7437 32.6929 21.6167 32.2784 21.3844 31.9222L21.5372 32.7504C21.6329 34.335 20.3811 34.0804 20.3811 34.0804C20.5855 33.5353 20.5792 32.9336 20.3637 32.3929C20.5155 31.6633 20.5403 30.913 20.4369 30.175C20.8077 30.6646 21.3565 30.9885 21.9644 31.0765C21.8478 30.7114 21.792 30.3297 21.7992 29.9465C21.7992 29.3293 22.0302 29.0225 22.0302 28.4066C22.0302 28.2688 22.0376 28.1806 22.0302 28.039C21.7378 28.728 21.537 29.4524 21.4329 30.1936C21.4329 30.3948 21.4329 30.5078 21.3869 30.4792C20.9093 30.0839 20.5748 29.5425 20.4351 28.9385C20.2953 28.3345 20.3579 27.7012 20.6133 27.1362C20.391 27.5174 19.7117 28.8698 20.2382 29.7875C20.2382 29.7875 20.7275 32.7318 18.9083 32.7716C19.0498 32.5841 19.1628 32.6797 19.2795 31.6291C19.0684 30.8722 19.0277 30.0778 19.1603 29.3032C20.1724 28.4476 19.7601 27.4119 20.3636 26.6544C19.3553 27.058 19.9762 29.0424 18.5878 29.1952C18.404 29.2207 18.2167 29.1936 18.0477 29.1169C17.8483 29.0378 17.6883 28.8831 17.6025 28.6866C17.5167 28.49 17.512 28.2675 17.5894 28.0675C17.7595 28.1296 17.9818 28.3345 18.1644 28.3345C19.0982 28.3345 18.8238 26.8257 19.2112 25.9701C19.6744 24.9394 20.3562 24.5793 19.9389 24.6451C19.3453 24.7408 18.0837 24.6177 18.0837 25.2176C18.0837 25.379 18.178 25.4449 18.3271 25.5032C18.1718 25.5678 18.116 25.692 17.9558 25.6498C17.238 25.4598 17.9558 24.7606 17.9558 24.7606C17.5062 24.8004 17.2839 24.7482 16.8766 24.8153C16.695 24.8388 16.527 24.9237 16.4003 25.0558C16.2736 25.1879 16.1958 25.3594 16.1799 25.5417C16.1799 25.7367 16.6791 25.8882 16.6791 25.8882C16.5568 25.9654 16.4137 26.0031 16.2693 25.9962C14.8561 25.7057 15.7341 24.1559 16.6356 24.2192C17.0588 24.2338 17.4774 24.3116 17.8775 24.4502C17.7438 24.4087 17.6281 24.3231 17.5494 24.2074C17.4707 24.0917 17.4335 23.9527 17.4441 23.8131C17.444 23.7501 17.4604 23.6882 17.4918 23.6336C17.5232 23.579 17.5685 23.5336 17.6229 23.5021C17.6774 23.4705 17.7393 23.4538 17.8023 23.4537C17.8653 23.4536 17.9272 23.47 17.9818 23.5014C17.9085 23.6081 17.8775 23.7382 17.8948 23.8665C17.9333 24.2391 18.2947 24.3943 18.666 24.4353C19.0933 24.4241 19.5193 24.3846 19.9413 24.3173C19.457 24.0019 19.1093 24.0031 19.0708 23.5685C19.0557 23.4717 19.0639 23.3728 19.0948 23.2799C19.1256 23.1869 19.1782 23.1027 19.2482 23.0342C19.3182 22.9657 19.4035 22.9149 19.497 22.886C19.5906 22.8571 19.6897 22.851 19.7861 22.8681C19.7787 22.9712 19.7886 23.0742 19.7886 23.1748C19.789 23.2416 19.8026 23.3076 19.8288 23.3691C19.8549 23.4305 19.893 23.4861 19.9408 23.5327C19.9887 23.5793 20.0453 23.6159 20.1074 23.6403C20.1696 23.6648 20.2359 23.6767 20.3027 23.6752C21.0552 23.7435 21.2031 22.8196 21.1931 21.9267C21.1906 21.6896 21.1956 21.512 21.1956 21.2736C21.4094 21.5339 21.636 21.7834 21.8748 22.0211C22.0406 21.1593 22.1234 20.2835 22.1219 19.4059C22.0884 18.7291 21.6662 18.5875 21.3607 17.8946C21.1347 17.5014 20.9666 17.0777 20.8615 16.6366C20.8615 16.3398 21.1185 16.274 21.3607 16.1101C21.3842 16.0902 21.4041 16.1386 21.4315 16.1634L21.4017 16.9482C21.3292 17.0621 21.2653 17.1813 21.2104 17.3046C21.4625 17.3556 21.5283 17.1879 21.7245 17.3469C21.9257 17.5095 22.4982 17.8088 23.247 17.1271C23.4147 17.2612 23.8418 17.8088 23.956 17.7554C23.8061 17.4566 23.6368 17.1679 23.4494 16.8911C22.8599 16.3139 22.1144 15.9219 21.3047 15.7635C21.1615 15.6963 21.0394 15.591 20.9518 15.4592C20.8642 15.3274 20.8145 15.1741 20.808 15.016C20.8066 14.9515 20.8186 14.8875 20.8434 14.828C20.8682 14.7685 20.9052 14.7148 20.952 14.6705C20.9988 14.6261 21.0544 14.5921 21.1151 14.5705C21.1759 14.549 21.2405 14.5404 21.3047 14.5453C21.804 14.5453 23.2432 14.7154 24.1112 17.3096C24.269 17.7698 24.4946 18.2038 24.7806 18.5974C24.8948 18.7364 25.4164 19.1661 25.4574 18.6619C25.476 18.4508 25.7281 18.7613 25.6511 18.96C25.3816 19.6206 24.7955 19.1227 24.7955 19.2096C24.8042 19.7585 24.6055 19.8716 24.6055 20.3831C24.5946 20.4913 24.6091 20.6005 24.6478 20.7021C24.6864 20.8037 24.7482 20.8949 24.8282 20.9685C24.9082 21.0421 25.0042 21.0961 25.1087 21.1262C25.2131 21.1563 25.3232 21.1616 25.4301 21.1419C25.4301 21.1419 25.5033 21.759 25.1171 21.9068C24.9017 21.9501 24.678 21.919 24.4826 21.8186C24.4792 21.9854 24.5365 22.1478 24.6439 22.2754C24.7513 22.4031 24.9013 22.4875 25.0662 22.5128C25.435 22.5774 25.7306 22.5749 25.8014 22.2856C25.8514 22.4113 25.853 22.551 25.806 22.6778C25.759 22.8047 25.6666 22.9096 25.5468 22.9723C23.8132 23.7745 23.8728 20.4738 23.8728 20.7569C23.8728 21.5492 23.8169 21.8957 23.3637 22.2334C23.2864 22.058 23.2422 21.8698 23.2333 21.6783C23.2333 21.2164 23.2643 20.9817 23.2643 20.5209C23.2643 20.0664 23.0681 20.5669 23.0322 20.7631C22.9885 21.1519 22.969 21.543 22.9738 21.9341C22.9738 22.3675 23.134 22.4769 23.3377 22.8854C23.9077 22.0869 24.3299 23.3461 24.3299 23.6578C24.3261 23.7883 24.3479 23.9184 24.3943 24.0405C24.4407 24.1626 24.5107 24.2743 24.6003 24.3693C24.69 24.4644 24.7974 24.5408 24.9166 24.5943C25.0357 24.6478 25.1643 24.6773 25.2948 24.681C25.2565 24.7672 25.1915 24.8389 25.1096 24.8856C25.0276 24.9323 24.9328 24.9516 24.8391 24.9406C24.6729 24.9325 24.5137 24.8716 24.3846 24.7667C24.4169 25.1442 24.7025 25.2659 25.0303 25.4572C25.27 25.5987 26.107 25.5416 25.7704 24.8921C25.8474 24.8599 26.6335 24.9431 26.5752 25.6385C26.5342 26.1774 26.1318 26.4097 25.6152 26.5674C25.1371 26.7077 24.4801 26.4382 24.531 26.5462C24.6018 26.7088 24.6906 26.8629 24.7955 27.0057C24.9903 27.2761 25.2823 27.4604 25.6102 27.5198C26.4248 27.6924 27.15 27.0715 27.0432 26.9287C27.2039 27.0585 27.3081 27.2454 27.3338 27.4503C27.3338 27.9532 26.7862 28.2662 26.2795 28.2662C25.4165 28.2662 24.9061 27.9259 25.0588 28.1594C25.4619 28.6202 25.7488 29.1707 25.8958 29.765C25.526 29.7356 25.1585 29.6825 24.7955 29.6061C24.9687 29.8694 25.2263 30.0661 25.526 30.1638C25.8256 30.2615 26.1496 30.2544 26.4447 30.1438C26.2941 29.5441 26.0339 28.9774 25.6773 28.4723C25.912 28.5987 26.1798 28.6503 26.4447 28.6201C26.7462 28.5581 27.0308 28.4319 27.2792 28.25C28.2106 28.1569 28.3633 27.7198 29.0227 27.2268C29.5567 26.8319 29.9752 26.3414 30.4831 25.9166C31.453 25.0983 32.6948 24.9965 32.6948 23.7199C32.6948 23.1784 32.4253 22.945 31.6492 22.7413C31.6951 22.735 30.2571 22.4507 30.6619 22.7401C30.7726 22.825 30.8609 22.9357 30.9189 23.0625C30.9769 23.1894 31.0029 23.3285 30.9947 23.4678C30.985 23.6669 30.8973 23.8543 30.7508 23.9894C30.6042 24.1246 30.4104 24.1968 30.2112 24.1905C29.5344 24.0912 29.2239 24.0204 29.0488 23.5311C28.3653 21.8988 28.1179 20.1169 28.331 18.3602C28.5667 17.4577 28.6237 16.5178 28.4987 15.5934C29.0803 15.9465 29.5215 16.4904 29.747 17.1324C29.9726 17.7743 29.9685 18.4747 29.7355 19.114C31.0767 17.548 31.2319 19.838 31.263 19.8032C31.4169 19.6206 32.588 19.0419 32.5035 20.511C32.6091 20.4427 33.944 20.2105 33.5877 21.502C33.9217 21.5864 34.7227 21.3977 34.2707 22.6879C34.4058 22.7358 34.5259 22.8186 34.6188 22.9279C34.7117 23.0372 34.7741 23.1691 34.7997 23.3102C34.8253 23.4514 34.8132 23.5968 34.7645 23.7317C34.7159 23.8666 34.6325 23.9863 34.5227 24.0787C34.6618 24.4016 35.5783 24.7865 34.067 25.518C33.9192 25.5887 35.0493 26.5437 33.1816 26.73C33.2039 26.797 33.9316 27.983 32.1968 27.7644C32.0205 27.7421 32.9195 28.7666 30.9823 28.5728C30.9628 28.7025 30.9161 28.8265 30.8452 28.9368C30.7744 29.0471 30.681 29.1411 30.5712 29.2128C30.4615 29.2845 30.3378 29.3321 30.2083 29.3526C30.0788 29.373 29.9465 29.3659 29.82 29.3316C29.8134 29.511 29.7487 29.6833 29.6356 29.8227C29.5225 29.962 29.367 30.0608 29.1928 30.104C28.8936 30.1052 28.5694 30.0209 28.6079 30.1139C28.7967 30.6045 27.9237 31.2254 27.2183 30.3921C27.2593 30.9931 26.2795 30.9894 26.6024 31.1509C26.7986 31.2167 27.0383 31.9121 26.9998 32.6994C25.6996 32.4138 25.5245 31.9182 24.3659 31.1285C24.1113 31.1285 24.608 31.7494 25.1173 32.1518C25.7123 32.6402 26.4309 32.9544 27.1936 33.0595C27.2509 32.4841 27.1965 31.9031 27.0334 31.3483C27.4606 32.0325 28.4304 33.1191 29.3668 33.1191C29.5511 32.8563 29.664 32.5501 29.6942 32.2305C29.7245 31.9109 29.6711 31.5889 29.5393 31.2961C29.6826 31.5391 29.8739 31.7504 30.1015 31.9172C30.3291 32.0839 30.5882 32.2026 30.8631 32.266C30.7277 32.4511 30.6917 32.3132 30.6408 32.615L25.5084 33.4681L25.2875 36.6386Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M14.1109 47.4185C13.8924 49.0589 17.1012 49.4451 16.9969 47.1602C16.8615 44.2742 13.49 42.5803 12.8815 41.7558C12.4158 41.1212 12.4618 40.4568 12.2507 40.6369C12.0781 40.7847 12.083 41.2069 12.083 41.5062C12.083 43.4968 14.1544 44.2307 14.1544 46.2201C14.1692 46.6201 14.1547 47.0206 14.1109 47.4185Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M8.12431 49.7587C8.50356 50.6083 8.80571 51.4902 9.02713 52.3938C9.02713 52.9936 8.66948 53.6928 8.75765 53.9238C9.55365 55.9678 10.0976 54.6937 10.3546 55.6139C10.4639 55.995 11.4847 59.0463 11.4847 59.3455C11.4847 59.6398 11.0823 60.0571 11.0823 60.3551C11.1193 60.5366 11.2152 60.7007 11.3552 60.8219C11.4951 60.9432 11.6711 61.0149 11.856 61.0257C11.7542 60.9512 11.62 60.6954 11.9454 60.5141C12.0272 60.4838 12.1153 60.4744 12.2016 60.4866C12.288 60.4989 12.37 60.5325 12.4401 60.5844C12.5102 60.6363 12.5663 60.7048 12.6033 60.7838C12.6403 60.8628 12.657 60.9498 12.652 61.0369C12.5936 61.4405 12.0422 61.4045 11.6088 61.2107C11.584 61.4293 11.5132 61.818 11.6275 61.8987L12.0497 62.1222L13.6069 61.6677C14.126 61.7211 14.778 61.7124 15.2995 61.7124C15.6518 61.7558 16.0092 61.7034 16.3342 61.5606C16.6592 61.4179 16.9396 61.1902 17.1461 60.9015C17.3008 60.4183 17.2921 59.8976 17.1212 59.42C16.9927 59.2164 16.8414 59.0281 16.6705 58.8587C16.6621 58.8351 16.6614 58.8095 16.6686 58.7856C16.6758 58.7617 16.6905 58.7407 16.7105 58.7258C16.7305 58.7108 16.7547 58.7026 16.7797 58.7024C16.8046 58.7021 16.829 58.7099 16.8493 58.7246C16.8493 58.7246 17.2106 59.2188 17.4106 59.107C17.9124 58.8169 18.3766 58.4661 18.7927 58.0627C18.7853 57.9795 18.856 54.1981 18.8585 54.0181C18.7411 53.0678 18.5331 52.131 18.2376 51.2202C18.2563 51.1817 17.6838 51.0625 17.6453 50.9818C17.5286 50.7272 17.5211 50.7148 17.5211 50.7148C18.3104 50.7861 19.1033 50.8098 19.8955 50.7856C20.7039 50.7421 20.9125 50.0604 22.0835 49.4333C21.3024 48.6248 20.7834 48.0014 20.3885 47.9207C19.5526 47.8212 18.7056 47.9607 17.9458 48.3231C17.5484 48.564 17.8663 48.1331 17.8663 48.1331C18.4839 47.5464 19.3084 47.2277 20.16 47.2464C21.0913 47.2613 21.485 48.2548 22.8646 49.4569L22.6126 49.8307C21.6663 49.9337 21.8141 51.8983 18.7877 51.4065C19.047 52.1152 19.2505 52.843 19.3962 53.5834C19.3962 54.1124 19.4981 55.0326 19.4981 55.3605C19.4981 55.9901 19.4397 57.4219 19.4397 58.049C19.4397 58.3495 18.1979 59.3368 17.5894 59.5367C17.4267 59.5913 17.8204 59.5069 17.8204 59.9366C17.8173 60.2519 17.7945 60.5667 17.7521 60.8791C17.7061 61.1647 17.5608 61.2107 17.4366 61.382C17.4727 61.4118 17.5509 61.4479 17.5695 61.4888C18.4844 61.9426 19.3706 62.4519 20.2233 63.0138C21.1373 63.7092 21.0752 64.7548 22.2313 64.7548C22.5717 64.7628 22.9123 64.7487 23.2509 64.7126C22.5952 63.9129 21.4975 62.9852 20.9362 62.1346C20.5239 61.5099 20.1166 62.0054 19.4398 61.572C19.5689 61.5845 19.477 61.1362 20.0756 61.1909C22.2947 61.4293 24.9994 65.541 24.8628 65.2553C24.7013 64.7648 23.7936 63.3169 23.9848 63.5714C24.3003 63.9949 24.366 63.8496 24.6306 64.3066C24.9534 64.8567 24.8467 64.6357 25.1857 65.1771L25.5284 63.7391L24.4195 62.2216V40.0998C24.4046 40.296 24.9485 36.9208 24.9187 37.1157C24.7076 36.8922 23.9004 37.2349 23.6073 37.2349C21.1547 37.2349 19.9514 38.1067 17.7745 39.2492C16.9317 39.7538 16.1715 40.3849 15.5206 41.1205C15.6633 41.1044 15.3989 42.0556 14.6116 42.6169C15.1827 43.0403 15.7113 43.5181 16.1899 44.0438C16.7239 43.7495 17.582 44.9267 17.5261 44.6846C17.3569 44.1465 17.2768 43.5844 17.2889 43.0205C17.3982 42.8852 18.2228 43.4862 18.1495 43.4303C18.7009 43.8861 17.6602 42.0755 17.7695 42.1065C17.6553 42.0743 18.0266 42.119 18.0315 42.0643C18.0315 42.0643 18.2786 40.8896 18.2562 40.9281C18.7757 41.1524 19.2607 41.4492 19.6968 41.8098C19.8085 41.8954 19.8445 41.318 19.8358 40.9951L20.5337 41.241C20.6331 41.2771 20.4108 40.4524 20.4394 40.4189C20.825 40.4391 21.2002 40.5515 21.5334 40.7468C21.6688 40.3506 21.4973 40.024 21.6936 40.1048C21.9122 40.1929 22.4859 40.5741 22.4859 40.676C22.4884 40.4835 22.5518 39.8054 22.5518 39.4019C22.8672 39.5422 22.8088 39.9458 23.154 39.9744C23.1751 39.6814 23.2484 39.094 23.2286 38.858C23.6383 38.9624 23.5799 38.8431 23.9898 38.9611L23.8159 38.1167C23.9612 38.1092 24.0345 38.1254 24.1847 38.1254L24.1698 39.4355C23.8768 39.1201 23.4446 40.3172 23.4806 40.4265C23.3961 40.4799 23.2968 40.5051 23.197 40.4984C23.0972 40.4917 23.0022 40.4534 22.9255 40.3892C22.9541 40.7568 22.6585 41.6149 22.707 41.6757C22.2662 41.0946 21.9582 40.8325 21.9768 40.8213C21.8378 41.1287 21.8162 41.4764 21.9159 41.7986C21.8725 41.6483 21.5409 41.4025 20.8952 40.8734C21.0293 41.2994 21.0379 42.0755 21.1361 42.1438C20.7747 41.8905 20.2618 41.6645 20.2457 41.8172L19.9787 42.9659C19.9787 43.1733 18.6226 41.5776 18.6475 41.6223C18.5407 41.4298 19.333 43.3335 19.3168 43.3037C19.4497 43.5384 18.4115 42.7623 18.4115 42.7623C18.2327 42.6679 19.0933 44.5045 19.0958 44.4548C19.0833 44.6945 17.6938 43.2813 17.6813 43.6017C17.6677 43.8674 18.1743 46.0481 18.1743 46.0481C17.6359 45.6069 17.1203 45.1385 16.6295 44.6448C19.3019 48.564 16.0955 49.4482 15.4361 49.4258C15.1054 49.411 14.7826 49.3192 14.4936 49.1576C14.2046 48.9961 13.9573 48.7692 13.7714 48.4952C13.5856 48.2212 13.4663 47.9076 13.423 47.5793C13.3798 47.251 13.4138 46.9172 13.5224 46.6044C13.7695 45.6345 12.709 44.3443 12.709 44.3443C11.3325 45.3697 9.84393 46.2354 8.272 46.9248C8.37879 46.8639 8.33533 47.8648 7.63867 48.2548C7.94029 48.0572 8.29266 47.9511 8.65324 47.9493C7.90815 48.3206 8.92022 48.9563 9.21952 49.7312L9.59828 48.9241C10.2018 49.1476 10.6066 49.042 10.9196 49.5152C10.8535 48.9622 10.9004 48.4016 11.0574 47.8673C11.3977 48.6124 11.5554 49.011 12.0546 49.1898C12.2707 48.9787 12.0422 47.6388 11.9503 47.5978C13.1002 48.1094 12.5203 49.9535 12.2384 50.4739C12.2384 50.4739 11.8199 49.5214 11.3803 49.4096C11.3803 50.043 11.502 50.7098 11.0339 51.1308C11.0364 50.4354 10.7545 49.7685 9.83056 49.8281C9.75978 50.5297 9.28782 51.8783 9.2854 51.3704C9.01399 50.6334 8.70266 49.9117 8.35279 49.2084L8.12431 49.7587Z" fill="#AFAFB0"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M7.8141 48.5742C7.14723 48.7865 6.83926 48.5481 6.75606 48.4177C7.05724 48.1682 7.33002 47.8862 7.56946 47.577C7.65887 47.4515 7.02306 47.2442 6.96469 47.1026C7.2392 47.0951 7.96186 46.7512 7.29501 46.8033C6.56978 46.858 5.9588 45.8372 5.30809 45.2647C4.88988 44.7722 4.37289 44.373 3.7906 44.093C3.20831 43.813 2.57371 43.6583 1.92787 43.6392C1.32807 43.6392 1.24362 43.8801 1.49571 43.9844C2.07153 44.2447 2.57031 44.6493 2.94368 45.1591C3.58445 45.867 5.27954 49.462 7.26644 49.5738C7.46514 49.5825 7.73462 48.7555 7.8141 48.5742Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M55.61 14.9999C55.2744 15.0103 54.9439 14.9166 54.6637 14.7316C54.5942 14.6795 54.5309 15.2109 54.3967 15.3115L52.6756 15.283C52.7209 15.6486 52.8705 15.9935 53.1065 16.2764C52.6191 16.4569 52.1009 16.5396 51.5815 16.5198C51.5033 16.7918 52.493 17.9802 52.7116 17.7045C53.5045 16.6335 54.4868 15.7168 55.61 14.9998" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M57.572 15.6306C57.488 15.4567 57.3528 15.3127 57.1845 15.2179C57.0162 15.1231 56.823 15.0822 56.6307 15.1004C55.3988 15.0383 53.854 16.844 53.4219 17.3221C53.9474 17.1547 54.4363 16.8888 54.8624 16.5385C56.8667 15.3699 57.4851 16.1609 57.572 15.6307" fill="#AFAFB0"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M52.3794 21.4492C52.4961 22.1582 51.5784 22.7457 51.2543 22.778C51.7609 22.7271 52.0515 23.3592 52.0354 23.6522C51.992 24.3042 51.0184 24.7165 50.6744 24.7512C50.96 24.7227 51.1637 25.5063 51.0184 25.7732C50.8073 26.157 50.6235 26.0974 49.2773 25.8962C49.3367 26.1577 49.416 26.4142 49.5145 26.6636C49.784 27.2895 53.1021 25.9074 52.3794 21.4492" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M56.0998 16.6118C56.1358 16.4553 56.4922 16.346 56.4637 16.6552C56.3544 17.8411 54.8046 17.4351 54.7363 17.0886C54.99 16.8701 55.2958 16.7208 55.6242 16.6552C55.8763 16.7968 55.7633 17.3221 55.7633 17.3221C55.8707 17.238 55.9571 17.13 56.0155 17.0067C56.0739 16.8834 56.1028 16.7482 56.0998 16.6118" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M49.7859 21.0223C51.7219 21.0223 48.3988 11.4057 49.5214 7.88884C49.6204 7.41104 49.8252 6.96148 50.1206 6.57317C50.4161 6.18486 50.7948 5.86766 51.2289 5.64487C51.6027 5.27481 49.2768 5.04507 47.6438 7.53368C47.2079 8.19928 46.4877 9.38028 46.0654 10.1154C47.8188 12.7966 49.0803 15.7688 49.7909 18.8926C49.7909 18.8926 49.9722 21.0223 49.786 21.0223" fill="#AFAFB0"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M54.9382 21.9888C54.8112 22.0798 54.6595 22.1302 54.5032 22.1333C54.3469 22.1364 54.1934 22.0921 54.0628 22.0062C52.0783 19.0122 58.85 16.9061 60.1241 15.7189C60.2794 15.2333 59.9515 14.1107 60.4271 14.0834C60.6654 14.0696 60.9039 14.1061 61.1272 14.1905C61.3506 14.2748 61.5536 14.4052 61.7233 14.5731C61.893 14.741 62.0254 14.9427 62.1121 15.1652C62.1988 15.3876 62.2377 15.6257 62.2264 15.8642C62.2264 16.2566 62.1731 16.6043 61.87 16.6428C61.6328 16.6726 61.2901 16.3212 60.9387 16.3783C60.211 16.5038 54.5992 18.123 54.3968 20.747C54.3682 21.1332 54.9668 21.8932 56.2458 20.5384C56.7107 20.1523 57.2542 19.8723 57.8385 19.7181C58.4228 19.5639 59.0337 19.5391 59.6285 19.6455C60.3351 19.7324 60.7809 19.8963 60.6866 20.367C60.5624 20.7395 60.2383 20.8302 59.8446 20.8302C59.7314 20.8379 59.6178 20.8208 59.5118 20.78C59.4059 20.7393 59.3101 20.6759 59.2312 20.5943C59.0693 20.4681 58.882 20.3786 58.6822 20.3319C58.4824 20.2851 58.2748 20.2823 58.0738 20.3235C57.37 20.364 56.694 20.6125 56.1316 21.0376C55.7079 21.3207 55.3087 21.6389 54.9382 21.9888" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M59.9346 15.2984C59.6601 15.1221 59.5881 15.0985 59.3162 15.3767C59.2963 15.3953 59.2317 15.5194 59.1274 15.4624C58.7288 15.3369 58.771 15.5605 58.6592 15.6486C58.6344 15.6673 58.5127 15.7405 58.509 15.7219C58.4742 15.6275 58.1787 15.1681 57.7974 15.8101C57.6236 16.1056 56.8934 15.9243 56.8934 16.0572C56.9063 16.2565 56.879 16.4563 56.8132 16.6448C56.7473 16.8333 56.6443 17.0067 56.5101 17.1546C56.376 17.3025 56.2135 17.422 56.0323 17.5059C55.8511 17.5898 55.6549 17.6365 55.4554 17.6431C55.0963 17.5831 54.742 17.498 54.3948 17.3885C54.0435 17.386 53.5752 17.2271 53.1729 17.7002C52.198 18.8414 52.6725 20.4496 52.0466 20.7836C52.0789 20.7675 52.639 20.6172 52.639 20.6172C53.1021 24.596 52.5545 24.6891 52.0205 25.731C51.7533 26.0993 51.4141 26.4094 51.0234 26.6427C50.6328 26.876 50.1989 27.0276 49.748 27.0883C48.3994 26.9219 48.2491 26.0353 47.16 25.731C46.6691 25.6297 46.2279 25.3626 45.9105 24.9746C45.5931 24.5867 45.4187 24.1014 45.4165 23.6001C45.4112 23.3735 45.4921 23.1534 45.6429 22.9842C45.7936 22.815 46.003 22.7093 46.2287 22.6886C47.0582 22.6886 47.1501 23.9465 47.4904 23.9391C48.6465 23.9093 48.9694 22.9121 49.1904 22.1285C49.563 20.1082 49.3811 18.0247 48.6639 16.0995C47.8357 14.1847 46.8474 12.3432 45.7096 10.5945C44.7952 8.96035 44.0256 7.24923 43.4098 5.48078C43.1755 4.77296 43.0959 4.02312 43.1762 3.28189C43.2566 2.54066 43.495 1.82529 43.8754 1.18408C41.9047 1.18408 41.3881 3.74722 41.2987 5.48948C41.1 9.34532 39.7973 9.51917 39.8457 9.78245C40.2174 11.1236 40.9538 12.3354 41.973 13.2831C42.5392 13.919 46.6844 17.8021 46.6844 20.292C46.6844 20.852 46.7503 21.6207 46.1877 21.6207C45.8772 21.6207 45.2079 21.504 45.3942 21.2531C46.672 19.5606 43.5054 15.4625 42.3877 14.3436C41.0923 13.2538 40.0725 11.8735 39.4111 10.3152C39.6982 11.2329 39.9251 12.1683 40.0903 13.1155C40.2212 14.4122 39.8605 15.7107 39.0795 16.754C38.5132 17.3833 38.0341 18.0858 37.6551 18.8427L37.6378 18.8676C39.6245 18.9059 41.5498 19.5631 43.1452 20.7477C43.8642 21.1786 44.7372 21.9225 44.6739 22.49C44.673 22.6532 44.6293 22.8132 44.5471 22.9542C44.465 23.0952 44.3473 23.2122 44.2057 23.2934C44.2057 23.2934 43.9077 23.6051 43.8034 22.8414C43.6457 21.7163 40.5709 19.1135 37.5869 19.2141C38.8263 19.5767 39.3702 20.1566 39.2994 22.0566C39.2633 23.0811 38.7083 24.5812 38.7443 25.4554C40.0707 24.5768 41.6658 24.1971 43.2459 24.3837C44.1549 24.5079 44.936 25.104 44.7882 25.8255C44.7882 25.8255 44.2642 26.4737 43.8395 26.0515C43.7662 25.9795 43.796 25.8938 43.8593 25.8007C42.2996 24.7501 41.5359 24.4396 38.9554 25.8044C40.0656 26.5073 40.4592 26.9071 40.2556 27.9155C40.1339 28.5277 40.0134 29.3187 39.8594 29.8763C39.68 30.9188 39.608 31.977 39.6445 33.0342C40.4236 31.2285 41.6586 29.6563 43.2284 28.4718C45.3234 27.1778 46.9688 27.8794 46.7738 28.5537C46.6609 28.9611 46.3889 29.1796 46.107 29.0803C45.9493 29.0206 45.9282 28.8952 45.9517 28.858C45.7989 28.2271 46.2087 28.7263 46.2063 28.6059C46.1678 27.7379 42.7751 28.2706 39.8432 32.6145C40.3233 32.5709 40.8008 32.5021 41.2738 32.4083C41.4538 31.8553 41.8266 31.3854 42.3243 31.0845C42.6471 31.0459 42.9744 31.0847 43.2793 31.1975C43.4135 31.08 43.5709 30.9919 43.7413 30.939C43.9117 30.8861 44.0913 30.8696 44.2685 30.8904C44.4456 30.9112 44.6165 30.969 44.77 31.06C44.9234 31.1509 45.0561 31.2731 45.1594 31.4185C45.2637 31.5402 45.4599 31.1131 45.789 31.0746C45.789 31.0746 45.3991 30.851 45.6996 30.3816C45.8822 30.0972 46.0026 30.0612 46.1988 29.7855C46.4862 29.3559 46.8439 28.9776 47.2568 28.6667C47.6176 28.4634 48.013 28.3291 48.4229 28.2705C48.8215 28.1923 50.5477 28.3711 50.9488 28.3711C51.5883 28.3711 51.9422 28.0371 52.5805 28.0371C53.5437 26.2419 53.9141 24.188 53.6386 22.1695C53.5703 21.8876 53.497 21.7398 53.4225 21.4306C52.8165 18.9097 58.0545 16.6136 59.1199 16.0573C59.7819 15.7133 59.9271 15.4302 59.9346 15.2985" fill="#AFAFB0"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M31.7028 10.5941C32.0456 10.0221 32.3501 9.42806 32.6142 8.81578C32.5826 8.23476 32.3584 7.6808 31.9772 7.24121C31.43 7.57848 31.0173 8.09569 30.8099 8.70408C30.9049 9.50343 30.8936 10.3118 30.7764 11.1082C30.8747 10.8086 30.9964 10.5171 31.1402 10.2365C31.1713 10.193 31.7201 10.568 31.7028 10.5941" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M33.4253 13.176C33.1662 13.1594 32.9067 13.2031 32.6673 13.3038C32.4279 13.4044 32.2151 13.5592 32.0457 13.7559C32.359 12.8417 32.3383 11.8461 31.9873 10.9457C31.9873 10.9457 35.7736 5.29043 34.5678 1.28556C34.7828 1.15744 35.0377 1.11363 35.2831 1.16263C36.5224 1.36876 39.0905 4.51428 33.4253 13.176" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M37.2299 5.26767C37.4324 4.98116 37.7375 4.7837 38.0818 4.71631C38.3441 6.3867 38.1519 8.0969 37.5255 9.66743C36.9429 11.4183 36.1227 13.0809 35.0878 14.6086C34.7868 14.5843 34.4849 14.6449 34.2166 14.7837C33.9484 14.9224 33.7244 15.1337 33.5703 15.3934C33.6064 15.2991 33.6622 15.0904 33.6982 14.9513C33.8622 14.4659 33.8587 13.9394 33.6883 13.4562C35.4657 11.0255 36.6759 8.22746 37.23 5.26765" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M21.6448 16.3003C21.6448 16.7064 21.5381 16.8516 21.8199 17.1398C22.2148 17.5421 22.9276 17.2242 23.1748 17.0379C22.7116 16.6691 22.6731 16.5648 22.416 16.5325C22.2831 16.5176 22.2322 16.6878 22.2322 16.8194C22.2322 16.9436 22.3266 16.9883 22.3961 17.0826C22.3701 17.0963 22.3527 17.1211 22.3192 17.1211C22.1354 17.1211 21.9354 17.028 21.9354 16.843C21.9354 16.6766 21.9479 16.5698 21.9479 16.4058C21.9479 16.3152 21.7367 16.314 21.6448 16.3003Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M20.546 14.8994C20.3982 14.7492 20.3274 14.6747 20.1113 14.6747C19.8592 14.6747 19.699 14.8945 19.6221 15.1341C19.2101 14.8136 18.6981 14.6491 18.1766 14.6697C17.9958 14.6773 17.8183 14.7211 17.6546 14.7983C17.491 14.8755 17.3444 14.9846 17.2235 15.1193C17.1026 15.2539 17.0098 15.4114 16.9506 15.5824C16.8915 15.7535 16.8671 15.9346 16.8789 16.1152C16.8965 16.3647 16.9763 16.606 17.111 16.8168C17.271 16.5713 17.511 16.3888 17.7902 16.3002C18.0287 16.2195 19.3835 15.8705 19.8517 17.7308C20.3404 17.8556 20.7734 18.1403 21.0819 18.5394C21.3904 18.9385 21.5566 19.4293 21.5542 19.9338V20.474C20.7905 19.8667 20.4775 19.1129 19.5201 19.1129C19.0035 19.1129 18.4062 19.3774 18.5838 19.9822C18.6934 19.8364 18.8416 19.7241 19.0117 19.6581C19.1817 19.592 19.3669 19.5748 19.5462 19.6084C20.6117 19.8133 20.8848 20.6217 21.6448 21.3085C21.6958 21.1793 21.6908 19.8382 21.7007 19.6655C21.7653 18.6646 20.6303 17.845 20.4664 16.6541C20.4576 16.5819 20.464 16.5086 20.4851 16.439C20.5062 16.3694 20.5416 16.3049 20.5891 16.2498C20.6365 16.1946 20.695 16.15 20.7607 16.1187C20.8263 16.0874 20.8978 16.0701 20.9705 16.068C20.8365 16.0105 20.7234 15.9131 20.6466 15.7892C20.5697 15.6652 20.5328 15.5207 20.5409 15.3751C20.4987 15.2191 20.5004 15.0545 20.5458 14.8994" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M12.3917 15.7518C12.5295 15.7518 11.618 15.6289 11.2517 17.1824C11.2224 17.5422 11.2915 17.9032 11.4513 18.2269C11.6112 18.5506 11.8559 18.8248 12.1594 19.0203C12.6824 19.2903 13.2703 19.409 13.857 19.363C14.1985 19.363 14.4022 19.3581 14.7424 19.3519C14.9287 19.3519 16.2972 19.0911 17.0919 18.9694C17.9936 18.7446 18.9306 18.6986 19.85 18.834C20.3716 18.9383 20.5939 19.2947 20.9776 19.5915C21.0049 18.9048 19.9469 18.49 19.5346 18.4267C19.4154 18.4081 18.746 18.377 18.3822 18.377C17.1863 18.377 16.5903 18.5745 15.3944 18.5745C14.3664 18.6884 13.3299 18.455 12.4501 17.9114C12.4426 17.93 12.0812 17.4717 12.1346 17.607C12.2625 17.9535 11.7857 18.1448 11.7397 17.4568C11.7255 17.143 11.7761 16.8297 11.8882 16.5364C12.0004 16.2431 12.1718 15.976 12.3917 15.7518" fill="#C20037"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.965 15.4777C28.7713 15.3697 28.2398 15.0418 28.1765 15.13C28.1404 15.1784 28.1628 15.9806 28.0771 16.6512C28.0945 16.4985 27.4202 16.0067 27.4202 15.9608C27.5717 14.7628 27.5382 13.5486 27.3209 12.3608C27.2327 12.0342 28.8508 12.8476 28.965 15.4777" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.0041 17.1828C27.6121 18.6528 27.6723 20.2068 28.1766 21.6421C27.7184 20.9498 27.3065 20.228 26.9435 19.4814C26.8594 19.1448 26.8197 18.7988 26.8255 18.4519C26.8201 17.656 26.7633 16.8612 26.6554 16.0726C26.6169 15.9583 27.6091 16.4327 28.004 17.1828" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M15.0601 32.565C14.9844 32.4644 14.8826 32.4383 14.5485 32.4383C14.1573 32.4383 14.0071 32.7748 13.9425 33.1623C13.9162 33.0771 13.8991 32.9892 13.8916 32.9003C13.8916 32.3129 14.0828 31.5542 14.6764 31.5542C15.193 31.5542 15.4824 31.5877 15.691 32.0596C15.44 32.1698 15.2224 32.3441 15.0601 32.565" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M15.4256 34.1315V35.0356C15.3337 35.0356 14.7003 35.1424 14.7823 35.6826C14.8106 35.8421 14.8729 35.9937 14.9648 36.1272C14.7488 36.0154 14.5727 35.8394 14.4606 35.6235C14.3485 35.4077 14.306 35.1624 14.339 34.9214C14.3403 34.7908 14.3721 34.6624 14.432 34.5463C14.4918 34.4303 14.578 34.3299 14.6836 34.2531C14.7892 34.1764 14.9113 34.1254 15.0401 34.1043C15.169 34.0832 15.301 34.0925 15.4256 34.1315" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.9332 68.6991C29.1034 69.6043 28.4849 70.2873 28.6563 70.4364C28.8264 70.4364 29.1679 70.4873 29.3405 70.4873C29.6874 70.5115 30.033 70.4244 30.3271 70.2389C30.6212 70.0533 30.8485 69.7788 30.976 69.4553L31.361 69.253C31.0331 69.3672 30.8444 69.2579 31.058 69.0009C30.8009 69.1015 30.6283 69.1201 30.3737 69.233C30.4702 69.0057 30.6083 68.7985 30.781 68.6221L28.9332 68.6991Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M18.0376 62.52C18.699 62.8245 19.3232 63.2041 19.8979 63.6513C19.7985 64.2375 18.8186 65.4855 18.6809 66.0828C18.6411 66.2417 19.1602 66.2381 19.0708 66.6664C19.0347 66.8527 18.7454 66.9421 18.5592 66.9421C18.2102 66.9421 18.1109 66.6826 17.7607 66.6826C17.4043 66.6826 17.5745 67.1508 17.5745 67.5084C17.5745 67.727 17.5211 68.0697 17.2541 68.0697C16.981 68.0698 16.709 68.0356 16.4444 67.9679C15.8595 67.8822 15.9427 67.6115 15.7378 67.6115C15.518 67.6115 15.2746 67.7668 15.0548 67.7668C14.6835 67.7668 14.7121 67.7978 14.501 67.4936C15.0367 67.1724 15.5425 66.8037 16.0123 66.3921C16.8018 65.1645 17.4796 63.8687 18.0377 62.5201" fill="#AFAFB0"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M17.7999 68.3824C17.4795 68.2421 17.4261 68.5538 16.9021 68.5538C16.383 68.5538 16.1533 68.2793 15.6367 68.2793C15.4715 69.1088 15.3548 70.7058 15.2939 70.8586C15.3262 70.8685 15.2902 70.8933 15.3622 70.8933C15.9059 70.8606 16.4385 70.7253 16.9319 70.4947C17.198 70.3869 17.4509 70.249 17.6857 70.0837C17.9289 69.9387 18.1501 69.7598 18.3426 69.5522C18.3679 69.5225 18.3867 69.4878 18.3976 69.4504C18.4085 69.4129 18.4113 69.3735 18.4059 69.3349C18.3678 69.2175 18.3121 69.1066 18.2408 69.0058C18.1489 68.7984 18.0694 68.5017 17.8 68.3824" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M14.6056 68.0733C14.4405 68.1404 12.748 70.0652 12.748 70.0652C12.5542 70.0652 12.3381 70.0428 12.4064 69.8578C12.9293 68.4694 13.3589 68.5862 13.8147 67.974C13.7228 67.9442 14.7025 68.1031 14.6057 68.0733" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M26.8371 67.8486C27.1124 67.917 27.3836 68.0012 27.6493 68.1007C27.1615 68.6541 26.8203 69.321 26.657 70.0404C26.5726 70.3285 26.2746 70.1137 26.2286 70.0616C26.0871 69.9138 26.1703 69.2717 26.2112 69.1774C26.4534 68.6508 26.8346 67.9033 26.8371 67.8486Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M70.4068 73.9417C70.4068 73.6611 70.3584 73.1507 70.3584 72.8725C70.3584 72.3671 70.1299 72.156 70.1299 71.653C70.1299 71.2494 70.1324 70.4783 70.1324 70.0759L70.5037 69.8462C70.5037 70.1107 70.3758 70.482 70.3758 70.744C70.3758 70.9229 70.5869 72.038 70.5869 72.038C70.6293 72.2303 70.6543 72.4261 70.6614 72.6229V73.7679L70.4068 73.9417Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M55.1025 75.8842C55.1608 75.8842 55.105 77.8388 55.105 77.8388C55.105 77.8388 55.5433 77.8215 55.7519 77.8215L55.7085 77.0577C55.7085 77.0577 55.8227 75.9836 55.8078 75.8842C55.7462 75.5057 55.7076 75.1237 55.6923 74.7405C55.6712 74.6094 55.6179 74.4857 55.537 74.3804C55.5122 74.2127 55.65 74.0612 55.65 73.8923C55.5171 73.8923 54.8117 73.8638 54.6876 73.8638C54.6574 74.5611 54.7999 75.2551 55.1023 75.8842" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M26.7094 76.3501C26.764 76.5621 26.8022 76.778 26.8236 76.9959L27.2893 76.9189C27.1511 76.7487 27.0528 76.5497 27.0017 76.3365C26.9505 76.1233 26.9478 75.9014 26.9938 75.687C27.0748 75.2081 27.1006 74.7214 27.0708 74.2366C26.7119 74.0577 26.7168 73.1699 26.738 73.0171H26.4722C26.4733 73.2363 26.46 73.4553 26.4325 73.6728L26.3555 75.1418C26.3555 75.1418 26.7293 75.6175 26.7094 75.7367C26.69 75.9407 26.69 76.1461 26.7094 76.3501Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M59.5728 63.2416C59.7032 63.1218 59.8603 63.0349 60.0311 62.9883C60.005 63.2068 59.9056 63.7197 59.9056 63.9395C59.6714 64.4066 59.4781 64.8931 59.3281 65.3936C59.3673 64.6721 59.449 63.9534 59.5728 63.2415" fill="#FAFBFB"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M59.0345 66.0518C58.9032 66.1754 58.7461 66.2684 58.5745 66.324C58.4029 66.3796 58.2212 66.3965 58.0423 66.3733C57.6951 66.3791 57.3483 66.3508 57.0066 66.2889C56.7396 67.0663 56.4925 67.5667 56.2814 68.1355C56.2305 68.2782 55.1277 68.8532 55.1103 69.422C55.0979 69.797 55.0644 70.1224 55.6779 70.1423C55.8182 70.1472 56.1212 70.2379 56.2652 70.2379C56.711 70.2379 56.8998 70.3124 57.3469 70.3124C57.9144 70.3124 58.1926 70.2751 58.3043 70.1807C58.5328 69.992 59.1699 69.6455 59.1699 69.345C59.1699 69.1848 59.2257 68.9762 59.2257 68.8172C59.2257 68.5465 59.2655 68.5117 59.2655 68.2423C59.2655 68.0485 59.1649 67.9368 59.1649 67.7419C59.1649 67.4612 59.1823 67.2961 59.1823 67.0154C59.2063 66.6872 59.1558 66.3577 59.0345 66.0518Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M56.6264 65.7132C56.549 64.9669 56.406 64.2289 56.1993 63.5077C56.0371 63.2736 55.8169 63.0857 55.5602 62.9625C55.3035 62.8392 55.0192 62.7849 54.7351 62.8048C54.6693 62.8085 54.7562 62.9886 54.6904 62.9886C54.6904 63.5772 54.7885 66.0944 54.7836 66.154C55.4218 66.1368 56.0495 65.9867 56.6264 65.7132" fill="#FAFBFB"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M69.8447 67.3736C68.4474 68.0212 66.9843 68.5162 65.4809 68.8501C65.4374 68.716 68.6202 65.8747 68.6202 65.8747C68.8773 65.8561 69.6534 67.2345 69.8447 67.3736Z" fill="#FAFBFB"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M64.9835 64.9943L65.1003 63.8965C64.9761 63.8965 64.5129 63.8692 64.3912 63.8456C64.2174 63.817 64.3987 63.124 64.0261 63.124C63.902 63.124 63.8361 63.1538 63.7132 63.1538C63.1593 64.0827 62.3832 65.3469 62.4776 65.7107C62.4925 65.7604 64.7675 65.0501 64.9836 64.9942" fill="#FAFBFB"/> +<mask id="mask0_14759_76403" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="59" y="64" width="6" height="6"> +<path d="M59.4459 66.6366C59.4116 66.8965 59.4259 67.1605 59.4881 67.4152C59.5414 67.5617 59.6471 67.6039 59.7688 67.6983C60.1252 67.9815 60.489 68.1354 60.5846 68.3056C60.7085 68.6052 60.9082 68.8674 61.164 69.0666C61.4198 69.2658 61.723 69.3951 62.0438 69.4418C62.324 69.5386 62.6137 69.6052 62.9081 69.6405C63.3924 69.6405 64.181 69.5325 64.3871 69.2208L64.4889 68.4198C64.1414 68.2096 63.8071 67.9782 63.488 67.7269C63.1591 67.5024 62.8534 67.2457 62.5753 66.9607C62.3157 66.547 62.1433 66.0847 62.0686 65.6021C61.2644 65.6589 60.4644 65.4447 59.7961 64.9937C59.5187 65.4943 59.3968 66.0663 59.4459 66.6366" fill="black"/> +</mask> +<g mask="url(#mask0_14759_76403)"> +<path d="M64.489 64.9937H59.3926V69.6405H64.489V64.9937Z" fill="url(#paint0_radial_14759_76403)"/> +</g> +<path fill-rule="evenodd" clip-rule="evenodd" d="M53.9147 61.6772L53.665 55.8208C54.0719 56.1178 54.5691 56.2644 55.072 56.2356C55.0978 56.4263 55.176 56.6061 55.2979 56.7549C55.4198 56.9038 55.5806 57.0159 55.7625 57.0788C55.7625 57.2116 56.0518 58.3256 56.0518 58.4684C56.0518 58.5963 56.1239 58.7429 56.1288 58.8695C56.1487 59.3612 55.8233 59.7573 55.7898 60.1721C55.6754 60.9882 55.7476 61.8195 56.0009 62.6036C55.7323 62.4981 55.4474 62.4401 55.159 62.4322C54.6014 62.4322 54.4648 61.6958 53.9147 61.6772Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M66.165 64.1454L66.0557 65.0047C66.196 65.3947 67.7458 64.6881 67.7458 64.6881C67.5036 64.2249 66.6915 64.1392 66.165 64.1453" fill="#FAFBFB"/> +<mask id="mask1_14759_76403" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="62" y="58" width="3" height="5"> +<path d="M62.2336 58.9707C62.1948 59.7052 62.2968 60.4403 62.5341 61.1364C62.6551 61.6776 62.8102 62.2106 62.9986 62.7322C63.2632 62.6059 63.5134 62.4514 63.7449 62.2715C64.2547 61.6241 64.6672 60.9058 64.9694 60.1393C64.9905 60.097 64.9842 60.1244 64.978 60.0772C63.6791 60.446 62.3715 59.0837 62.2361 58.9707H62.2336Z" fill="black"/> +</mask> +<g mask="url(#mask1_14759_76403)"> +<path d="M62.5942 57.954L60.8096 62.1582L64.5584 63.7495L66.343 59.5453L62.5942 57.954Z" fill="url(#paint1_linear_14759_76403)"/> +</g> +<mask id="mask2_14759_76403" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="56" y="59" width="4" height="5"> +<path d="M56.1283 60.7019C56.1267 60.8114 56.1426 60.9204 56.1755 61.0248C56.3958 61.6789 56.8008 62.2551 57.3416 62.6839C57.6086 62.9298 57.8656 63.2427 57.9749 63.1247C58.3065 62.7683 58.6219 62.5298 58.8728 62.2045C59.1553 61.9595 59.3668 61.643 59.485 61.2882C59.6032 60.9334 59.6238 60.5533 59.5446 60.1877C59.5272 59.8835 59.4254 59.4936 59.2726 59.5284C59.0255 59.5917 58.7026 59.6774 58.499 59.7283C58.376 59.7554 58.251 59.772 58.1252 59.7779C57.5336 59.7884 56.9445 59.6986 56.3829 59.5122C56.2082 59.8841 56.1212 60.2911 56.1283 60.7019" fill="black"/> +</mask> +<g mask="url(#mask2_14759_76403)"> +<path d="M59.6147 59.3109L55.9326 59.5039L56.1381 63.4254L59.8202 63.2324L59.6147 59.3109Z" fill="url(#paint2_linear_14759_76403)"/> +</g> +<mask id="mask3_14759_76403" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="60" y="59" width="2" height="6"> +<path d="M60.3594 61.3513C60.3594 61.5612 60.3197 61.7499 60.3197 61.9573C60.3308 62.1472 60.3308 62.3375 60.3197 62.5273L60.1992 64.0088L60.2005 64.0101C60.5346 63.7816 61.6422 63.4152 61.9365 63.1954C61.3662 62.0494 61.1571 60.7573 61.3367 59.4898L61.3342 59.4849C60.8327 59.9975 60.4936 60.6468 60.3594 61.3513Z" fill="black"/> +</mask> +<g mask="url(#mask3_14759_76403)"> +<path d="M60.331 59.0248L59 63.6665L61.8043 64.4706L63.1353 59.8289L60.331 59.0248Z" fill="url(#paint3_linear_14759_76403)"/> +</g> +<path fill-rule="evenodd" clip-rule="evenodd" d="M59.3159 62.9884C59.0253 63.2839 58.9619 63.5273 58.5732 63.7881C58.7148 64.0228 58.9768 64.1147 59.0687 64.4251C59.1874 63.9531 59.27 63.4728 59.3159 62.9883" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M57.9674 64.4775C58.4021 64.8563 58.7945 65.2028 58.7771 65.3294C58.2656 65.5316 57.7047 65.5731 57.1689 65.4486C57.4004 65.0979 57.668 64.7724 57.9674 64.4775" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M62.8546 63.7671C62.2912 64.0657 61.7039 64.3166 61.0986 64.5171C61.5394 64.6413 62.1976 64.768 62.3131 64.6215C62.5194 64.3538 62.7006 64.0678 62.8546 63.7671Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M56.3984 63.0571C56.8591 63.6445 57.4416 63.919 57.3981 63.9835C57.2098 64.1783 57.0398 64.3899 56.8902 64.6157C56.8902 64.6157 56.5921 63.7775 56.3984 63.0572" fill="white"/> +<mask id="mask4_14759_76403" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="56" y="56" width="4" height="3"> +<path d="M58.4948 57.0909C57.709 57.1777 56.9175 57.2014 56.1279 57.1617C56.2832 57.8075 56.2471 58.036 56.5588 58.3228C57.1226 58.8506 59.1989 58.5166 59.3815 58.0248C59.508 57.6765 59.567 57.3073 59.5553 56.937C59.5553 56.9283 59.5504 56.9258 59.5392 56.9258C59.1949 57.0027 58.8461 57.0579 58.4948 57.0909Z" fill="black"/> +</mask> +<g mask="url(#mask4_14759_76403)"> +<path d="M59.5553 56.9258H56.1279V58.8506H59.5553V56.9258Z" fill="url(#paint4_radial_14759_76403)"/> +</g> +<path fill-rule="evenodd" clip-rule="evenodd" d="M60.7081 56.7344C60.7081 56.9157 60.7591 57.3118 60.7591 57.4919C61.3103 57.4768 61.8598 57.422 62.4032 57.328C62.4082 57.3764 62.3337 57.5093 62.3237 57.621C62.2939 57.975 62.2194 57.78 61.9748 58.0805C60.9068 59.3684 60.199 60.0451 60.0673 61.1043C60.0313 61.3999 60.0214 62.2456 60.0214 62.5448C59.8475 62.6578 59.629 62.8007 59.629 62.7671C59.629 62.602 59.701 62.2195 59.7234 62.0556C59.8475 61.5415 59.9174 61.0158 59.932 60.4871C59.8711 59.3459 59.5222 59.4763 59.5483 58.9274C59.5854 58.4967 59.675 58.0722 59.8152 57.6633C59.891 57.3057 59.8177 56.9083 59.8736 56.9083C60.0437 56.9083 60.5168 56.7543 60.7081 56.7344" fill="#F2D27E"/> +<mask id="mask5_14759_76403" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="62" y="56" width="5" height="3"> +<path d="M62.8963 57.2946C62.8602 57.6175 62.5585 57.5653 63.1074 58.1316C63.7333 58.7773 65.5799 59.5125 65.9114 58.4545L66.0816 56.8687C65.8705 56.9171 62.8963 57.2946 62.8963 57.2946Z" fill="black"/> +</mask> +<g mask="url(#mask5_14759_76403)"> +<path d="M66.0816 56.8687H62.5586V59.5125H66.0816V56.8687Z" fill="url(#paint5_radial_14759_76403)"/> +</g> +<path fill-rule="evenodd" clip-rule="evenodd" d="M60.7854 43.4285L60.7903 54.0808C60.8462 54.7911 60.732 55.1947 60.732 55.9063C60.7299 55.9929 60.7187 56.0791 60.6984 56.1633C59.602 56.5272 55.4766 57.194 55.5225 55.5871C55.5225 55.5871 56.4415 45.1471 56.4415 43.6682L56.3831 42.1395C56.267 42.6303 56.1922 43.13 56.1596 43.6334C56.1509 43.9004 56.0528 44.3586 56.0528 44.941C56.0528 45.4266 54.7898 54.4422 54.7898 55.1363C53.3568 54.9786 53.9988 55.5362 53.7666 55.3276L53.8659 45.5545C54.2352 44.1351 54.8061 42.776 55.561 41.5186C56.9847 42.4796 58.6826 42.9508 60.3979 42.861C60.4581 43.089 60.5949 43.2894 60.7854 43.4285Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M65.9668 41.7256C66.6797 44.3552 67.0019 47.0753 66.923 49.7987L66.2263 56.2176L61.3273 56.7342L61.1572 43.5175C61.8601 43.345 62.2587 43.3164 62.2997 43.1214C62.3382 42.9363 62.9951 42.7886 63.1528 42.8047C63.1528 42.8047 63.3056 49.3938 63.2795 49.4224C63.2434 49.4609 62.8598 49.4795 62.8933 49.5553C62.8933 49.5553 62.9032 50.9597 62.9032 51.0504C62.9212 51.1877 62.978 51.3171 63.0668 51.4233C63.1557 51.5295 63.2729 51.6082 63.4049 51.6502C63.4633 51.6713 63.5514 51.7607 63.5514 51.8055C63.5514 51.9123 63.7352 51.9545 64.0407 51.9482C64.1961 51.9522 64.3503 51.919 64.4903 51.8514C64.5623 51.8303 64.5138 51.6899 64.6641 51.6018C64.785 51.544 64.8904 51.4583 64.9718 51.3519C65.0531 51.2455 65.1081 51.1213 65.1323 50.9896L65.1298 49.3578C65.1298 49.251 64.7933 49.3441 64.7833 49.3019C64.7734 49.2647 64.7684 42.5439 64.7684 42.5439C64.9845 42.5291 66.0612 41.9615 65.9669 41.7256" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M65.3551 61.9455L65.6246 60.1226C65.142 60.8202 64.7084 61.5505 64.3269 62.3082C64.0984 62.7428 64.7727 62.2932 65.3551 61.9455Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M65.1414 63.5073C65.0018 63.4754 64.8597 63.4559 64.7167 63.4489C64.6608 63.013 64.6049 62.8317 63.9455 62.8355H63.8896C64.0864 62.7788 64.2881 62.7405 64.4919 62.7212C64.7686 62.6635 65.0408 62.5863 65.3066 62.4902L65.1414 63.5073Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M69.7211 40.6475C69.7211 41.2982 69.5075 45.6061 69.5075 45.9699C69.5075 47.9742 69.4305 48.9962 69.4305 51.0005C69.4305 51.5047 71.0423 52.8695 71.6446 53.1948C72.7523 53.9623 72.2432 54.4515 71.6856 54.8787C71.6223 54.9271 71.4186 55.0563 71.3677 55.1084C71.0014 55.4711 70.943 56.0336 70.3134 56.3863C69.9168 56.6527 69.5514 56.9631 69.2243 57.3114C69.2243 57.3114 69.0977 49.2918 69.0977 45.1217C69.0977 44.7293 69.7211 40.6475 69.7211 40.6475" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M70.0389 57.1938C69.6979 57.4151 69.4463 57.7499 69.3286 58.1389C69.0814 58.8343 69.0032 58.7896 69.9147 59.0963C69.968 58.5909 70.024 57.4038 70.0389 57.1938Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M68.714 46.8022C68.714 46.9848 68.7475 58.6008 68.8009 58.9708C68.8767 59.5209 69.9024 59.1981 69.9024 59.737C69.6099 60.357 69.1328 60.8714 68.5366 61.2098C67.9404 61.5481 67.2541 61.6939 66.5718 61.6271C66.5048 61.6283 67.4287 55.6552 67.4287 55.6552C67.6856 55.6345 67.9394 55.5845 68.185 55.5061C67.997 54.3863 67.9168 53.2511 67.9453 52.116C67.9478 52.0551 68.0112 51.438 68.0112 51.438C68.0112 51.438 68.6805 46.8309 68.7141 46.8022" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M70.1506 31.6055L70.3075 31.6117L70.5036 31.6227L64.935 69.5051L64.6855 69.4204L70.1506 31.6055Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M66.0152 41.2224V40.2612C65.9883 39.94 65.9971 39.6168 66.0413 39.2975C66.2363 39.0939 66.471 39.002 66.8572 38.627C66.8572 38.627 66.9292 38.6617 67.036 38.7263C67.1651 38.7946 67.6358 39.0914 67.7152 39.1311C67.8829 39.2106 68.2566 39.3832 68.5373 39.4838L67.4731 47.1471C66.8646 40.6871 66.0152 41.2224 66.0152 41.2224Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M70.9336 39.6509C71.3145 39.1576 71.6467 38.6286 71.9258 38.0713C71.9269 38.2467 71.9464 38.4215 71.9842 38.5928C72.2623 40.1128 72.3232 40.7698 72.61 42.2028C72.8187 43.2708 73.1092 44.9969 73.1378 45.1943C72.9112 44.9399 72.6359 44.7334 72.3281 44.5871C72.2668 44.5601 72.2038 44.5373 72.1394 44.5188C71.7136 44.3582 71.2706 44.2473 70.8193 44.1885C70.8193 43.9302 70.9746 39.826 70.9336 39.6509" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M70.3927 39.6509C70.4486 39.8682 70.3058 44.155 70.3058 44.7697C70.8023 44.7534 71.2985 44.8124 71.7773 44.9447C72.9273 45.4539 74.4112 45.8053 71.9164 47.3862C71.1598 47.8981 70.4959 48.5351 69.9531 49.27C69.9531 48.8739 70.3418 39.7018 70.3927 39.6509" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M72.1609 47.8315C70.3106 49.2894 69.8586 50.1885 69.8449 50.689C69.835 51.0913 70.1678 51.8116 71.5686 52.6448C71.6443 52.6871 71.7387 52.7268 71.8244 52.7715C72.0938 52.8602 72.323 53.0414 72.4714 53.2831C72.4714 53.0211 71.9809 47.9731 72.1609 47.8315Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M55.9542 39.5986C56.1218 39.6545 56.1579 39.7799 56.3255 39.8321L56.3156 41.2478C55.9852 41.1559 55.9766 41.0429 55.9617 40.7821C55.9319 40.4195 55.9666 39.9886 55.9542 39.5986Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M57.0819 40.1661C57.2426 40.2562 57.4159 40.3219 57.596 40.361C57.596 40.7274 57.6445 41.6637 57.6208 41.9046C57.3414 41.7804 57.1154 41.717 57.0695 41.5208C57.0571 41.3172 57.0695 41.0241 57.0869 40.5671C57.0943 40.4504 57.062 40.2852 57.0819 40.166" fill="#F2D27E"/> +<path d="M57.0819 40.1665C57.2426 40.2566 57.4159 40.3223 57.596 40.3615C57.596 40.7278 57.6445 41.6641 57.6208 41.905C57.3414 41.7808 57.1154 41.7175 57.0695 41.5213C57.0571 41.3176 57.0695 41.0245 57.0869 40.5676C57.0943 40.4509 57.062 40.2857 57.0819 40.1665Z" stroke="#F2D27E" stroke-width="0.103075" stroke-miterlimit="3.864"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M62.231 39.771C61.6585 39.9597 61.0786 39.9299 60.5434 40.1448C60.3397 40.2292 60.3397 40.5024 60.2814 40.7272C60.1925 40.9704 60.0854 41.2066 59.9611 41.4338C59.9488 41.6136 59.9554 41.7943 59.9809 41.9727C60.0318 42.2969 60.2107 42.4285 60.4367 42.6669C60.6527 42.8991 60.618 42.9997 60.8241 43.2469C61.0184 43.2207 61.2106 43.1804 61.3991 43.1264C61.5903 43.0718 61.9455 42.991 62.0076 42.8395C62.0907 42.6359 61.414 42.842 61.1495 42.7377C60.895 42.6334 61.193 42.1429 60.9186 42.1429C60.8147 42.1366 60.7139 42.1056 60.6244 42.0525C60.535 41.9993 60.4596 41.9256 60.4044 41.8374C60.2182 41.5903 60.7298 41.5245 60.8242 41.3655C61.0403 41.0215 60.7857 40.649 61.1694 40.5111C61.6177 40.3509 62.3081 40.3745 62.3081 40.1598C62.3081 39.9114 62.4783 39.7711 62.2312 39.7711" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M60.5703 41.7476C60.7305 42.0258 61.298 42.0283 61.6184 42.0283C61.8022 42.0283 61.7339 41.8495 61.7339 41.6644C61.7339 41.4869 61.7761 41.313 61.5985 41.313C61.2251 41.3704 60.8717 41.5197 60.5703 41.7476Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M55.001 28.8854C55.3139 28.6569 55.4182 29.2903 55.7212 29.6454C56.146 29.4513 56.6241 29.407 57.0773 29.5199C57.235 29.7025 57.3604 29.9111 57.5405 30.152C57.4113 30.5556 57.3418 30.5805 57.4672 30.7816C57.5318 30.8935 57.6186 30.9911 57.7221 31.0684C57.8257 31.1457 57.9439 31.2011 58.0696 31.2312C58.0522 31.5317 58.1255 31.8024 58.4359 31.8024C58.472 31.8024 59.3015 33.0417 60.3123 34.137C61.2167 35.1493 62.2238 36.0649 63.3175 36.869C63.5969 36.9199 63.9608 36.7809 63.7571 36.4009C62.9759 36.6542 58.5663 31.7925 58.8966 31.8173C59.2505 32.1464 59.1338 32.2781 59.4107 32.252C59.6405 32.2321 60.1285 32.2967 60.2353 32.2967C60.3421 32.2967 60.7593 32.2743 60.8897 32.2731C61.6497 32.262 62.7338 32.1216 62.8083 31.7019C62.7977 31.4334 62.767 31.1661 62.7165 30.9022C63.3175 30.5669 63.32 30.4079 62.9835 29.6827C63.9254 29.6872 64.8317 30.0427 65.5254 30.6799C65.9003 31.0717 66.1653 31.5552 66.2941 32.0819C66.3176 32.4172 66.7498 32.4607 67.4142 33.3833C66.7855 33.5615 66.2216 33.9172 65.7899 34.4078C65.78 34.4699 64.6002 35.9005 64.9181 35.6869C64.9604 35.6583 65.4372 35.3044 65.4856 35.2647C65.5303 35.2299 65.6582 35.107 65.7402 35.035C66.5101 34.3656 68.0624 33.1412 69.3887 34.0825L69.2794 34.8487C68.7888 35.3736 68.3805 35.9698 68.0686 36.617C64.6859 42.0276 58.755 40.9237 56.7842 32.4197C56.4266 31.1363 55.8208 29.9356 55.001 28.8854Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M68.9541 29.4532L69.1354 29.8059C69.1887 29.8581 69.1379 29.9152 69.3465 29.863C69.3861 29.7154 69.3988 29.5618 69.3838 29.4097C69.373 29.3571 69.343 29.3103 69.2997 29.2785C69.2564 29.2466 69.2028 29.232 69.1493 29.2374C69.0958 29.2428 69.0463 29.2679 69.0102 29.3078C68.9741 29.3476 68.9542 29.3994 68.9541 29.4532" fill="#FAEDCD"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M71.297 32.4036C71.5205 32.318 71.5255 32.3602 71.6559 32.2683C70.9133 32.2049 70.8003 31.8138 70.6736 31.2736C70.6078 31.2463 70.5358 31.1295 70.4415 31.1283C70.1087 31.1196 69.7224 31.1742 69.7063 31.4288L69.5212 31.4251C69.4119 31.4139 69.51 31.1146 69.5721 30.9197C69.6213 30.7823 69.7061 30.6606 69.818 30.567C70.0637 30.4997 70.3171 30.4647 70.5718 30.4627C70.6401 30.4428 70.5991 30.3385 70.5991 30.3385C70.2871 30.3222 69.9744 30.3468 69.6689 30.4118C69.6577 30.4167 69.4876 30.8823 69.4752 30.8849C69.4108 30.6957 69.4197 30.4892 69.5 30.3062C69.5944 30.1783 69.7422 29.9026 69.8738 29.8442C70.1338 29.7807 70.4037 29.768 70.6686 29.807C70.8747 29.7722 70.8312 29.6903 70.681 29.6803C70.3864 29.6239 70.0825 29.6401 69.7955 29.7275C69.6878 29.8428 69.5929 29.9693 69.5124 30.105C69.527 29.8791 69.5623 29.6551 69.618 29.4357C69.6403 29.4133 69.8899 29.1079 70.0936 29.1079C70.2414 29.1079 71.0125 29.0346 71.21 29.0631C71.2311 28.9625 70.7493 28.8881 70.445 28.7999C70.2811 28.8532 70.2103 28.8793 70.0551 28.9216C69.9384 28.9564 69.8104 28.9265 69.6912 29.1699L69.6403 28.9737L69.6788 28.6869C69.9455 28.4787 70.2424 28.3125 70.5592 28.1939C70.8386 28.1492 71.6806 28.7229 71.9835 28.9775C72.1764 29.7957 72.2884 30.6309 72.3176 31.471C72.3154 31.798 72.3631 32.1234 72.4592 32.4359C72.5672 32.7787 71.4769 32.652 71.2236 32.6135C71.1292 32.5986 71.2236 32.4434 71.2969 32.4036" fill="#FAEDCD"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M69.2209 35.457L68.6658 38.995C68.4497 39.072 67.1719 38.3294 67.1719 38.3294C68.369 36.7932 68.6099 36.0655 69.2209 35.457Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M70.0049 39.2724C70.3737 39.2463 70.5413 39.3494 70.8543 39.0837C72.0377 38.0778 72.7456 34.1934 72.6388 32.7554C72.5378 32.8474 72.419 32.9179 72.2899 32.9626C72.1607 33.0072 72.0238 33.025 71.8875 33.0149C71.5707 33.0414 71.2538 32.9643 70.9847 32.7951L70.0049 39.2724Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M56.4055 28.22C56.2234 28.1734 56.0327 28.1721 55.85 28.2163C55.6672 28.2604 55.4981 28.3487 55.3574 28.4733C55.5763 28.6776 55.7428 28.9314 55.843 29.2135C55.9927 29.0769 56.1814 28.9905 56.3826 28.9662C56.5838 28.9419 56.7876 28.9811 56.9656 29.0781C56.9656 28.9378 56.8377 28.3231 56.4056 28.2201" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M55.1686 22.5239C55.2451 22.5329 55.3157 22.5698 55.3667 22.6275C55.4178 22.6852 55.4458 22.7597 55.4455 22.8368C55.4542 23.2826 55.2071 23.3497 54.8321 23.3497C54.5607 23.3347 54.2885 23.3581 54.0236 23.4192C54.0311 23.1286 53.9528 22.4295 54.2223 22.4282C54.5392 22.4433 54.8551 22.4753 55.1686 22.5239" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M55.2799 23.9027C55.6661 23.8903 55.794 24.5484 55.5419 24.7869C55.0476 24.965 54.5182 25.0233 53.9971 24.957C54.0741 24.7869 54.0691 23.8133 54.1672 23.9089C54.4267 23.8841 54.88 23.9126 55.2799 23.9026" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M53.9314 25.4404C54.0767 25.4752 55.0404 25.5187 55.4986 25.5187C55.6265 25.5187 55.7433 26.373 55.2577 26.373C54.736 26.3709 54.2151 26.3306 53.6992 26.2526C53.7593 25.9772 53.8369 25.706 53.9314 25.4404" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M53.5336 26.6953C53.854 26.8245 53.1772 27.3349 53.2542 27.5621C53.3499 27.849 54.46 28.1073 55.0015 28.1073C55.3579 28.1073 55.472 27.2777 55.2362 27.1585C54.9866 27.033 54.0577 26.9089 53.5336 26.6953Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M71.0593 27.9754L70.7236 27.8389L71.3291 23.4515L71.5236 23.4028L71.7338 23.4875L71.0593 27.9754Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M53.8828 22.3965C53.9457 22.3924 54.0088 22.4012 54.0683 22.4223C54.1277 22.4434 54.1822 22.4765 54.2285 22.5193C54.2747 22.5622 54.3117 22.6141 54.3373 22.6717C54.3628 22.7294 54.3764 22.7917 54.3771 22.8547C54.4019 22.9827 54.378 23.1154 54.31 23.2266C54.2419 23.3378 54.1347 23.4196 54.0095 23.4558C53.9946 23.457 53.9163 22.6871 53.8828 22.3965Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M53.9385 23.8599C54.0699 23.9 54.182 23.9872 54.2532 24.1047C54.3244 24.2222 54.3499 24.3618 54.3247 24.4969C54.2998 24.8173 54.0838 25.0508 53.8441 25.0172C53.8267 25.016 53.9124 24.1803 53.9385 23.8599Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M53.8268 25.2666C53.945 25.3198 54.0395 25.4147 54.0922 25.5331C54.1449 25.6515 54.1521 25.7852 54.1124 25.9086C54.1021 25.9691 54.0791 26.0266 54.045 26.0776C54.0109 26.1286 53.9665 26.1718 53.9146 26.2045C53.8627 26.2372 53.8045 26.2586 53.7438 26.2673C53.6831 26.276 53.6213 26.2719 53.5623 26.2551C53.5474 26.2526 53.7535 25.541 53.8268 25.2666Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M53.4417 26.6055C53.5594 26.6886 53.646 26.8085 53.6881 26.9464C53.7301 27.0842 53.7251 27.232 53.6739 27.3667C53.582 27.6697 53.3274 27.82 53.1051 27.702C53.0902 27.6933 53.3498 26.9072 53.4417 26.6055" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M58.4352 40.5591C58.6311 40.6306 58.8358 40.6757 59.0436 40.6932C59.0436 41.062 59.107 41.9673 59.0784 42.2094C58.845 42.1834 58.4836 42.1958 58.4401 41.9983C58.4252 41.7947 58.4103 40.677 58.4352 40.5591Z" fill="#F2D27E"/> +<path d="M58.4352 40.5591C58.6311 40.6306 58.8358 40.6757 59.0436 40.6932C59.0436 41.062 59.107 41.9673 59.0784 42.2094C58.845 42.1834 58.4836 42.1958 58.4401 41.9983C58.4252 41.7947 58.4103 40.677 58.4352 40.5591Z" stroke="#F2D27E" stroke-width="0.103075" stroke-linejoin="round"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M60.8731 15.4887C60.7688 15.47 60.6843 15.0118 61.0544 15.0329C61.1058 15.0337 61.1566 15.0447 61.2037 15.0654C61.2508 15.0861 61.2932 15.116 61.3286 15.1534C61.3639 15.1908 61.3913 15.2349 61.4093 15.2831C61.4273 15.3313 61.4354 15.3826 61.4332 15.434C61.4332 15.6588 61.0333 15.8935 60.8123 15.8414C60.585 15.7842 61.3214 15.5607 60.8731 15.4887Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M60.1474 29.5862C60.14 29.7179 60.1113 29.9141 60.1113 30.2804L60.0095 31.3471C59.8704 31.3471 59.5898 31.4278 59.4495 31.439L59.4657 31.5954C59.8021 31.62 60.14 31.6138 60.4753 31.5768C60.5746 31.5705 60.6156 30.7994 60.7274 30.7956C60.8342 30.7931 60.7075 31.6041 60.8267 31.6041C61.0721 31.6267 61.319 31.6263 61.5643 31.6028C61.6753 31.3193 61.765 31.0279 61.8326 30.7311C61.8773 30.9285 61.9207 31.3917 62.1243 31.3917C62.2814 31.3744 62.435 31.3338 62.5801 31.2713C62.4391 30.6012 62.3429 29.9225 62.292 29.2396C62.292 28.9838 62.2647 28.8062 62.2647 28.5504L62.3106 28.4585C62.4328 28.7062 62.5118 28.9728 62.5441 29.2471C62.5726 29.5128 62.7043 29.6519 62.7043 29.9189L62.7576 30.2828C62.8445 30.2306 62.9997 30.0779 63.0432 30.0779C62.7797 29.3465 62.5803 28.5936 62.4471 27.8277C62.4471 27.7296 62.0684 27.3434 62.051 27.218C61.9417 27.2217 62.2311 27.7706 62.1193 27.8562C62.01 27.7494 61.9417 27.3396 61.789 27.3396C61.7199 27.3326 61.6501 27.342 61.5853 27.367C61.4876 27.4127 61.38 27.4332 61.2724 27.4266C61.1854 27.4266 61.0911 27.3359 61.0004 27.3359C60.8452 27.3198 60.6887 27.3198 60.5335 27.3359C60.2392 27.3831 59.8245 27.9755 59.8319 28.0239C59.7834 27.7097 60.2491 27.2553 60.3534 27.0081C60.3534 26.9398 60.4403 26.6703 60.5111 26.6417C60.4217 26.9199 60.7905 27.0664 61.0079 27.126C61.0426 27.1447 61.101 27.172 61.0935 27.2068L61.3332 27.2887L61.6213 27.2763L61.8088 27.2055C61.8424 27.08 61.8399 27.1087 61.7455 26.8864C61.7197 26.8437 61.704 26.7957 61.6996 26.7461C61.671 26.3363 61.5977 26.0767 61.5952 25.9985C61.5704 25.9712 61.5443 25.462 61.5034 25.4484C61.4301 25.421 61.5729 25.4484 61.5928 25.3652C61.6011 25.2441 61.602 25.1226 61.5953 25.0014C61.743 24.9691 61.743 25.3143 61.8138 25.3131C62.0921 25.305 62.3698 25.2827 62.6458 25.246C62.7513 25.2117 62.8425 25.1436 62.9054 25.0523C62.9662 24.9505 62.9662 24.9405 62.2522 24.7269C62.0783 24.6736 62.5341 24.5705 62.4397 24.3084C62.4397 24.3805 61.979 23.3162 61.9008 23.1709C61.8163 23.0045 61.9008 22.9288 61.9008 22.7425C61.9008 22.6009 61.5704 22.5736 61.2724 22.4867C60.957 22.3948 60.9644 22.278 60.7223 22.2532C60.7989 22.5151 60.8888 22.7729 60.9917 23.0256C61.0029 23.0654 60.305 22.0508 60.0231 22.2135C59.5196 22.2099 59.0171 22.2603 58.5242 22.3637C58.5242 22.3637 59.6891 23.2454 59.4506 23.2454C59.4146 23.2044 58.3305 22.6804 58.3231 22.6854C58.0236 22.9315 57.7776 23.2362 57.6003 23.5808C57.4519 24.0646 57.3304 24.5563 57.2364 25.0536C57.1598 25.528 56.9837 25.9808 56.7198 26.3823C56.6381 26.5129 56.5691 26.6509 56.5137 26.7946C56.5137 26.9399 56.865 27.0914 56.916 26.956C57.0911 26.4779 57.188 26.4829 57.0762 27.1672C57.065 27.2355 57.2997 27.3634 57.2662 27.5397C57.2339 27.6291 57.5419 27.6353 57.6897 27.6526C57.7456 27.6601 57.7655 27.5583 57.7655 27.5583C57.3408 27.331 57.4699 26.2258 57.5978 25.8048C57.6761 25.6323 57.8922 25.6893 58.0884 25.7316C58.1194 25.8346 57.9406 25.7514 57.9207 25.929C57.8773 26.1836 57.8239 26.6008 57.8239 26.6008C57.8239 26.9659 57.768 27.213 57.8673 27.3459C57.9491 27.4301 58.0231 27.5215 58.0884 27.6191C57.9373 28.1573 57.6844 28.6615 57.3433 29.1043C57.2228 29.226 57.4724 29.2894 57.5569 29.38C57.8793 28.916 58.1187 28.3996 58.2647 27.8538C58.2647 27.8538 58.3504 27.8588 58.3504 28.1506C58.3504 28.3642 57.8698 29.6569 57.7419 30.2779C57.6997 30.4865 57.8388 30.5994 58.0536 30.5994C58.2033 29.9279 58.4188 29.2728 58.6969 28.6436C58.6969 28.9975 58.6745 29.2086 58.6534 29.5612C58.6199 30.0567 58.4423 30.4342 58.4423 30.9595C58.4423 31.4239 58.9229 31.2078 59.3861 31.2078C59.5052 31.2062 59.6241 31.1983 59.7425 31.1843L59.9746 29.406C59.9697 29.1515 60.0814 28.8385 60.1112 28.5231C60.1398 28.4858 60.1348 28.3343 60.1758 28.3132C60.2643 28.3247 60.3535 28.3305 60.4428 28.3306C60.5942 28.2758 60.7405 28.2076 60.8799 28.127C60.9792 28.0847 61.2537 28.04 61.3158 27.886C61.3555 27.8985 61.3989 28.0711 61.4598 28.0996C61.5368 28.1406 61.6896 28.24 61.7678 28.2698C61.9255 28.4436 62.1341 28.389 62.0348 28.4672C62.0281 28.5724 62.0377 28.678 62.0634 28.7802C62.1938 29.2508 62.1478 29.4607 62.1292 29.452C62.0324 29.4271 62.0324 28.9168 61.8138 28.5243C61.7784 28.4596 61.7255 28.4063 61.6611 28.3704C61.5542 28.3821 61.4462 28.3775 61.3407 28.3567C61.2175 28.3582 61.0944 28.3528 60.9719 28.3406C60.8067 28.4225 61.2364 28.2089 60.3659 28.5541C60.1833 28.6249 60.1759 29.7016 60.1473 29.5861" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M62.5707 26.3825L62.3546 26.8097L62.1733 27.1587C61.9907 26.873 61.9622 26.9773 62.0007 26.6209C62.0007 26.6209 61.879 26.0981 61.8839 26.0336C62.136 25.9901 62.403 26.0981 62.4229 25.8398C62.4607 26.0237 62.5101 26.205 62.5707 26.3826" fill="#FAEDCD"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M62.6099 26.4771C62.6869 26.667 62.6733 26.6484 62.7291 26.8049C62.7828 26.9774 62.8784 27.134 63.0073 27.2606C62.9614 27.319 62.6509 27.7077 62.641 27.6282C62.5707 27.2485 62.5602 26.86 62.6099 26.4771Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M61.8233 25.8538C61.8893 25.8682 61.9573 25.8715 62.0244 25.8638C62.0219 25.8513 62.1075 25.8824 62.1075 25.87L62.1386 25.5435L62.0144 25.5472C61.948 25.5463 61.8817 25.5496 61.8157 25.5571C61.8127 25.6561 61.8151 25.7552 61.8232 25.8539" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M61.7433 66.2143C61.5123 66.2143 61.367 66.2528 61.1348 66.2528C60.9623 66.2528 60.7325 66.6887 60.7784 66.8128C60.8169 66.8898 61.6192 66.6799 62.2451 66.7619C62.3929 66.7482 62.0439 66.1981 61.7434 66.2142" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M62.0226 66.897C61.7904 66.9069 61.6538 66.9516 61.4241 66.9603C61.244 66.9678 61.1161 67.498 61.1831 67.621C61.6686 67.5341 62.1587 67.4753 62.651 67.4446C62.7963 67.426 62.3182 66.8697 62.0226 66.897Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M62.5849 67.6077C62.354 67.6263 62.2459 67.6735 62.0174 67.6908C61.8423 67.7094 62.0224 68.1764 62.1727 68.2782C62.2746 68.3428 62.9203 68.0571 63.6083 68.0758C63.7449 68.051 62.8694 67.5692 62.585 67.6077" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M57.4382 66.8226C57.7151 66.8226 57.884 66.8598 58.1609 66.8611C58.3695 66.8611 58.4862 67.3218 58.4328 67.4447C57.9383 67.3796 57.4402 67.3456 56.9414 67.3429C56.7663 67.3292 57.0817 66.8077 57.4382 66.8226Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M57.3314 67.5492C57.6058 67.5492 57.7772 67.5865 58.0541 67.5865C58.2627 67.5865 58.4353 68.0807 58.3795 68.2012C58.3335 68.2782 57.4108 68.0447 56.6645 68.1254C56.4869 68.113 56.9775 67.5318 57.3314 67.5492Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M56.9657 68.4027C57.2403 68.4027 57.4116 68.44 57.6885 68.44C57.8971 68.44 58.1343 68.8287 58.0772 68.9504C58.0325 69.0274 56.9807 68.8697 56.2331 68.9504C56.0567 68.9392 56.6093 68.3853 56.9657 68.4027Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M31.9451 31.2248C32.1357 31.1694 32.3367 31.1602 32.5314 31.198C32.7262 31.2358 32.9092 31.3195 33.0652 31.4421C33.3441 31.4146 33.6098 31.3101 33.8327 31.1404C33.0093 31.116 32.2199 30.807 31.5986 30.2661C31.7356 30.5775 31.8514 30.8978 31.9451 31.2248Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M18.9137 37.1492C18.9137 37.1492 20.0873 37.0685 20.0289 37.4174C19.7284 37.6112 18.4915 38.2284 18.3003 38.3774C18.0184 38.2768 17.8582 38.1887 17.8271 37.8521C18.8268 38.0968 18.5747 37.2138 18.9137 37.1493" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M21.0219 37.0559C20.756 37.1164 20.4942 37.194 20.2383 37.288C20.3327 36.9987 20.4693 36.7578 20.2966 36.502C20.5665 36.6465 20.8114 36.8335 21.0219 37.0558" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M8.11632 51.6726C7.87161 51.6005 7.98344 50.7387 7.81331 50.7735C6.93035 50.9136 6.09274 51.2594 5.36816 51.7831C6.49078 51.6465 6.74162 51.2789 8.1164 51.6726" fill="#AFAFB0"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M5.35391 52.1333C5.32908 52.7318 6.47899 53.1479 7.47369 53.246C8.14551 53.3105 8.25976 53.0622 8.30572 52.7567C8.41251 52.2301 8.20388 51.8762 8.07474 51.8787C7.70836 51.8704 7.3422 51.9033 6.98318 51.9768L7.19057 52.3109C6.58556 52.1923 5.97044 52.1328 5.35391 52.1333" fill="#AFAFB0"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M22.663 28.2769C22.3277 29.3473 23.8564 29.9496 24.1358 30.4674C25.0014 28.5873 23.6602 28.4706 23.4901 27.7876C23.4702 27.8199 23.4317 27.8385 23.4317 27.882C23.4317 28.2495 23.8129 28.483 23.9843 28.8071C24.0986 29.0257 24.142 30.0179 23.9049 29.6739C23.577 29.1933 22.7388 29.0567 22.7388 28.108C22.7388 27.9664 22.7289 28.0719 22.663 28.2769Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M22.8837 24.1657C22.8673 24.5458 22.7892 24.9207 22.6527 25.2758C22.2777 25.939 21.9907 25.9775 21.9907 26.7114C21.9822 26.881 21.9831 27.051 21.9932 27.2206C21.7921 27.131 21.6249 26.9796 21.5159 26.7884C21.4069 26.5972 21.3618 26.3762 21.3872 26.1575C21.3872 25.2957 21.9373 25.0909 21.9373 24.229C21.9373 24.1582 21.9348 24.0961 21.9348 24.1371C21.9348 24.9902 21.0283 25.2485 21.0283 26.1054C21.0511 26.5088 21.1952 26.8959 21.4419 27.2159C21.6885 27.5359 22.0262 27.7739 22.4105 27.8986C22.3189 27.4893 22.2726 27.0712 22.2726 26.6518C22.3062 25.9079 22.7867 25.8408 22.8154 25.3727C22.8154 25.5081 22.7893 27.3547 23.8995 27.5869C23.8324 27.4143 24.2099 25.1393 24.1714 24.9865C24.0671 24.5643 23.9417 24.6313 23.8995 24.3544C24.0089 25.1972 23.9091 26.0541 23.6089 26.8492C22.9495 26.617 22.8837 24.8052 22.8837 24.1656" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M22.3799 30.41C22.3799 31.2743 23.4031 31.581 23.2653 32.4466C24.6089 30.7999 23.1486 29.917 23.1486 29.917C23.7459 31.1067 23.3622 31.5301 23.3522 31.5736C23.156 31.0533 22.6034 31.0371 22.3799 30.41Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.0185 12.251C28.4919 12.5895 28.8606 13.0542 29.0828 13.5921C29.305 14.13 29.3717 14.7195 29.2752 15.2934C29.2914 15.0637 29.7968 13.9324 30.1383 12.6533C30.7567 10.1833 30.8995 5.8084 27.9987 5.47436C27.4895 5.41475 27.2275 5.7041 27.3157 5.75626C29.6751 7.13715 27.9777 12.0821 28.0186 12.251" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M35.2129 16.7331C35.4688 16.1215 35.548 15.4503 35.4414 14.7959C36.5116 13.2818 37.3515 11.6175 37.9337 9.85716C38.1473 9.71509 38.3943 9.63119 38.6502 9.61377C38.7189 9.69931 38.7757 9.79371 38.8191 9.89442C39.943 12.3073 36.6149 15.7794 36.215 16.3283C36.215 16.3283 35.4414 16.4078 35.2129 16.7331" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M36.6096 16.5389C36.442 16.5624 39.1641 13.5896 39.3603 11.7095C39.6019 12.5235 39.6659 13.38 39.5478 14.2209C39.4298 15.0618 39.1325 15.8676 38.676 16.5836C38.0363 17.3488 37.4618 18.1663 36.9586 19.0275C36.6871 19.0061 36.4165 19.0789 36.1924 19.2337C36.4961 18.8626 36.695 18.4171 36.7684 17.9432C36.8418 17.4693 36.7869 16.9844 36.6096 16.5389" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M36.6338 21.5691C36.898 21.2982 37.1015 20.9741 37.2309 20.6185C37.3602 20.2628 37.4123 19.8837 37.3838 19.5063C37.7854 19.6354 38.1316 19.8963 38.3663 20.2468C38.601 20.5973 38.7103 21.0169 38.6766 21.4373C38.2904 21.6062 38.2569 21.6683 37.965 21.7677C37.8036 21.5807 37.5805 21.4578 37.3363 21.4213C37.092 21.3849 36.8427 21.4373 36.6338 21.569" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M36.959 23.5303C37.5092 23.1797 37.9168 22.6449 38.1089 22.0215C38.2887 21.9239 38.4791 21.8472 38.6764 21.793C38.5912 22.5639 38.4242 23.3236 38.1784 24.0593C38.1784 24.0593 38.1673 24.0828 37.9313 24.1698C37.854 23.9766 37.7194 23.8117 37.5455 23.6974C37.3717 23.5831 37.167 23.5247 36.959 23.5303Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M36.6025 25.5602C37.1817 25.3669 37.6621 24.9546 37.9412 24.4116C37.9412 24.4116 38.058 24.3706 38.1089 24.3569C38.0629 24.568 37.3004 26.545 39.3941 26.7375C39.3718 26.7375 39.5667 26.9598 39.5034 26.9449C39.188 26.8766 38.084 26.6357 37.7785 26.5314C37.7475 26.5189 37.7574 26.478 37.745 26.4568C37.6301 26.2342 37.4686 26.0388 37.2714 25.8841C37.0743 25.7294 36.8462 25.6189 36.6025 25.5602Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M37.6571 26.8242C38.3196 26.9184 38.9727 27.0696 39.6092 27.2762C40.0774 27.521 39.2826 29.7276 39.2826 29.7276C38.4357 29.5041 37.4845 29.1191 36.4687 28.8248C36.4357 28.547 36.3352 28.2815 36.1758 28.0516C36.0165 27.8217 35.8032 27.6344 35.5547 27.506C35.6267 27.5246 37.3715 27.3234 37.6571 26.8242Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M33.9854 29.2349C34.4336 29.2845 35.7438 29.78 36.3957 29.1479C37.5071 29.4523 38.5304 29.98 39.237 30.1886C39.1472 30.9674 39.0999 31.7505 39.0954 32.5344C38.6856 32.5207 37.2762 32.5841 36.7745 32.5344C36.801 32.2742 36.7364 32.0128 36.5916 31.795C36.4469 31.5771 36.2311 31.4162 35.9809 31.3398C35.5975 31.3805 35.2108 31.3805 34.8273 31.3398C34.6857 31.1398 34.6522 31.0591 34.1207 30.9784C34.2205 30.395 34.174 29.7959 33.9854 29.2349Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M29.3838 15.7858C30.1336 14.1453 30.7414 12.4436 31.2006 10.6993C31.2217 10.6707 32.4784 11.2097 31.331 14.7563C31.2031 15.1549 30.8417 16.1608 30.155 17.6994C30.3884 17.1754 29.6122 16.0937 29.3838 15.7858Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M30.3057 18.2925C30.3132 18.2564 31.298 15.9939 31.6978 14.9036C32.0617 13.899 33.1656 13.3899 33.3259 13.5898C34.1069 14.5472 31.7276 18.557 31.4121 19.1705C31.2321 17.7337 30.3057 18.2925 30.3057 18.2925" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M31.9141 19.0696C32.4456 18.2351 32.7125 17.4303 33.2987 16.4108C33.6675 15.785 34.2114 15.0473 34.9851 15.1231C35.6345 16.689 32.8939 19.6768 32.7125 19.8035C32.8206 18.9938 32.1078 18.8821 31.9141 19.0696" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M33.085 20.0241C34.7676 18.3353 35.1538 16.4278 36.1609 16.7929C36.5484 17.4039 36.5757 18.8519 33.953 20.881C34.0957 19.9757 33.1048 20.0006 33.085 20.0241Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M34.1328 21.2675C35.2852 20.2393 36.08 19.2359 36.9604 19.5402C36.9603 20.1805 36.7525 20.8035 36.3683 21.3158C35.9841 21.8281 35.4441 22.202 34.8295 22.3815C34.8793 22.2627 34.9 22.1338 34.8896 22.0054C34.8792 21.8771 34.8382 21.7531 34.7699 21.6439C34.7016 21.5347 34.6081 21.4436 34.4972 21.3781C34.3864 21.3126 34.2614 21.2747 34.1328 21.2675Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M34.9844 22.6169C36.6745 21.6457 37.3612 21.7078 37.6232 22.0555C37.5475 23.0018 36.2895 23.7606 35.1061 23.9108C35.2459 23.717 35.3107 23.479 35.2883 23.241C35.2659 23.003 35.1579 22.7812 34.9844 22.6169Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M35.1057 24.1463C35.3751 24.0904 37.0168 23.4236 37.4825 24.3773C37.1484 25.1087 36.5487 25.4924 34.8076 25.4403C35.8023 25.1994 35.2385 24.2121 35.1057 24.1463Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M34.6323 25.7351C35.8282 25.6109 36.803 25.6506 37.1719 26.4069C36.8304 27.1271 35.5513 27.414 33.9854 26.885C34.1124 26.8685 34.2339 26.8227 34.3401 26.751C34.4463 26.6794 34.5343 26.5839 34.5972 26.4722C34.66 26.3606 34.6959 26.2358 34.702 26.1078C34.7081 25.9798 34.6843 25.8522 34.6323 25.7351Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M33.973 27.0835C35.0112 27.3356 35.9711 27.8509 35.9711 28.7836C35.457 29.3709 34.579 29.1524 32.8604 28.0186C34.1618 28.0024 33.9345 27.2189 33.973 27.0835Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M32.7069 28.5049C33.2545 29.0501 33.8444 29.0823 33.7674 30.7091C33.2135 30.6859 32.6762 30.513 32.2126 30.2089C31.7491 29.9047 31.3766 29.4807 31.1348 28.9817C31.208 28.9855 32.7777 29.3382 32.7069 28.5049" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M30.0999 29.824C30.2407 29.858 30.3888 29.845 30.5215 29.7869C30.6543 29.7288 30.7644 29.6289 30.835 29.5024C31.2634 30.0326 31.1306 29.9893 31.6273 31.4136C31.4073 31.5304 31.2319 31.7163 31.1281 31.9426C30.0154 31.6645 29.9396 31.2981 29.2393 30.4673C29.8912 30.6188 30.0613 29.9147 30.0999 29.8241" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.8016 30.6768C29.2387 31.582 29.5218 31.3709 29.3914 32.7233C29.1272 32.6918 28.8659 32.6391 28.6102 32.5656C28.1167 32.1365 27.6805 31.6457 27.3125 31.1052C27.4267 31.0071 27.315 31.0953 27.3584 31.0319C27.4826 31.1313 28.4426 31.5075 28.8014 30.6768" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M60.1233 19.3052C65.6916 19.7448 67.0427 18.2224 66.7224 16.3907C66.6867 16.1282 66.5737 15.8822 66.3976 15.6843C66.2215 15.4863 65.9904 15.3453 65.7339 15.2793C66.3858 16.7632 65.0757 17.0092 65.3253 17.0551C65.719 17.0998 65.8357 17.2612 65.8282 17.5096C65.7823 18.8657 63.3806 18.7204 59.3882 18.5304C57.6089 18.7349 55.9603 19.565 54.7363 20.8724C54.7661 20.9556 55.1002 21.4748 56.0464 20.5681C55.9831 20.3595 55.7087 20.4117 55.741 20.336C55.821 20.2634 55.9227 20.2191 56.0304 20.2099C56.1381 20.2007 56.2458 20.2271 56.337 20.2851C56.4184 20.1902 56.5175 20.1121 56.6288 20.0553C56.5729 19.8641 56.25 19.8566 56.296 19.7734C56.4066 19.7019 56.5375 19.6685 56.6688 19.6781C56.8001 19.6877 56.9247 19.7399 57.0237 19.8268C57.1506 19.7516 57.2866 19.6931 57.4285 19.6529C57.4285 19.4145 57.0597 19.3176 57.133 19.2307C57.2837 19.1803 57.4465 19.179 57.598 19.2269C57.7496 19.2749 57.8819 19.3697 57.9762 19.4977C58.0855 19.4791 58.2381 19.4145 58.3189 19.4145C58.4133 19.0755 57.996 18.8893 58.1028 18.8135C58.4443 18.7278 58.7796 19.0234 58.9448 19.3437C59.093 19.3284 59.2423 19.3279 59.3906 19.3425C59.5222 18.9848 59.0802 18.7017 59.2181 18.6234C59.6316 18.5663 59.9271 18.9438 60.1234 19.3052" fill="#C20037"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M23.8691 54.3916C22.0623 56.3711 24.3274 59.2198 20.6963 60.4231C20.8959 60.025 21.1281 59.6442 21.3905 59.2844C21.5544 59.1216 21.6925 58.9348 21.8003 58.7305C21.8313 58.6324 21.9505 58.394 21.9816 58.2934C22.6124 56.2084 22.6906 55.4484 23.8691 54.3916Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M20.1774 57.4729C20.1674 57.3922 20.2059 52.2188 20.2059 51.6973C20.2618 51.2912 20.5126 51.9332 20.5387 52.1468C20.5772 52.4411 20.5996 52.728 20.6306 53.1216C20.6356 53.2048 20.9026 53.3427 20.9051 53.4259C20.9101 53.5091 20.8392 57.5376 20.8443 57.6332C20.7806 58.2693 20.5576 58.8791 20.196 59.4063C19.8344 59.9335 19.3459 60.3611 18.7754 60.6496C19.565 59.7644 20.0556 58.6529 20.1774 57.473" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M62.1394 25.4766C62.185 25.4768 62.2296 25.4905 62.2674 25.5161C62.3052 25.5416 62.3346 25.5777 62.3519 25.62C62.3692 25.6622 62.3737 25.7086 62.3646 25.7533C62.3556 25.798 62.3335 25.8391 62.3011 25.8713C62.2688 25.9035 62.2276 25.9253 62.1828 25.9342C62.1381 25.943 62.0917 25.9383 62.0495 25.9208C62.0074 25.9033 61.9714 25.8737 61.9461 25.8357C61.9207 25.7978 61.9072 25.7532 61.9072 25.7075C61.9075 25.6462 61.9321 25.5874 61.9756 25.5441C62.0191 25.5009 62.078 25.4766 62.1394 25.4766Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M22.3169 72.6682C22.7925 72.6682 24.1697 72.8694 24.6453 72.8694L26.1516 72.5267C26.7447 72.5638 27.3271 72.7015 27.874 72.934C27.7988 73.2335 27.7895 73.5458 27.8467 73.8492C27.9944 74.1261 28.0963 74.4254 28.254 74.7384C28.3248 74.8849 27.8367 76.6421 28.0094 76.9128C28.5508 76.8333 28.9694 77.4517 28.9694 77.2555C28.9694 76.421 28.8464 73.5015 28.8539 73.1203C28.8564 72.8346 28.9048 72.6509 29.0203 72.6571C29.2488 72.6695 30.313 72.631 30.4496 72.6682C30.4496 72.6682 31.3934 72.3789 31.5064 72.3826L32.8798 73.0022C33.2921 73.0022 33.4548 72.8396 33.5157 72.9091C33.6026 73.001 34.1602 73.0755 34.1291 73.1773C34.1937 74.3794 33.6796 77.4753 33.7193 77.4852C33.7528 77.4939 34.0534 77.5858 34.0807 77.5981C34.1241 77.6143 34.6991 77.551 34.75 77.5696C34.9709 77.6228 35.1943 77.6646 35.4194 77.6951C35.4194 77.6951 35.4777 77.1412 35.4777 77.063C35.4777 77.063 35.1747 76.483 35.2058 76.534C35.2368 76.5873 35.2157 73.7287 35.2766 73.766L36.5978 73.6616C37.2598 73.6616 37.6025 73.7126 38.2644 73.7126C39.4051 73.4828 40.5625 73.3453 41.7253 73.3016C42.2146 73.3339 44.1382 73.0917 44.2326 73.1724C44.9111 73.4635 45.6116 73.7006 46.3275 73.8815L47.9729 73.607C48.4403 73.6565 48.9043 73.7336 49.3625 73.838L49.9636 73.5064C50.1377 73.5102 50.3103 73.5407 50.4752 73.5971C50.5025 73.6033 50.4193 75.6312 50.4441 75.6399C50.4926 75.6498 50.4901 77.8131 50.5385 77.8205C50.5634 77.8268 52.2311 77.8503 52.2584 77.8553C52.2584 77.8553 52.8012 77.0965 52.8334 77.0978L52.6993 73.3127L55.2102 73.4083C55.7653 73.4083 57.2183 73.2283 57.6045 73.2283C58.0151 73.2404 58.4247 73.2756 58.8314 73.3338L59.7019 73.53C60.3402 73.2198 60.9513 72.8563 61.5286 72.4435C61.9434 72.4435 63.0995 72.2771 63.359 72.2771C63.7528 72.2771 66.7405 72.4571 67.2956 72.4571C67.7004 72.4571 67.914 72.3131 68.3164 72.3131C68.3164 72.3131 68.9087 71.0265 68.9087 70.9297C68.9087 70.7782 69.634 70.6329 69.634 70.6329L69.7333 69.6407C69.6464 69.6407 70.3666 69.2122 70.3666 69.2122C70.3666 69.2122 70.8633 68.4175 70.6945 68.4187C70.543 68.42 66.815 69.6494 65.1013 70.0455L64.3786 69.9635C64.3786 69.9635 64.3873 69.7437 64.2209 69.7649C63.97 69.7984 63.8446 70.2281 62.1681 69.9201C61.618 69.8669 61.0991 69.6399 60.6867 69.2719C60.3004 69.7121 59.8308 70.0714 59.305 70.3293C58.7793 70.5872 58.2076 70.7385 57.6231 70.7745C56.9758 70.7543 56.33 70.7 55.6884 70.6118C53.966 70.4715 54.608 69.2086 54.608 69.2086L55.5256 68.2102C53.9299 69.5302 53.0706 69.7525 47.0726 69.6966C43.8712 69.6705 39.7992 69.3911 34.6718 69.2943C34.3588 69.2868 31.6479 69.3439 31.6479 69.3439C31.5213 69.9971 30.5687 71.0961 28.6018 71.0961C27.7722 71.0961 27.8977 70.2479 28.3124 69.8518C28.0176 70.1083 27.6748 70.3037 27.3039 70.4267C26.9329 70.5497 26.5413 70.5978 26.1516 70.5683C25.5481 70.3448 25.6661 69.4295 25.7033 69.093C25.2688 68.8776 24.8876 68.5684 24.587 68.1878C24.03 67.4327 23.6286 66.5746 23.406 65.6631C23.3377 65.272 22.6783 65.3663 22.6783 65.3663C22.3923 65.3488 22.1077 65.3127 21.8264 65.2583C21.2788 65.1763 20.9658 64.6647 20.52 64.0289L19.2993 66.1089C19.3818 66.1789 19.4492 66.265 19.4972 66.3619C19.5453 66.4589 19.573 66.5646 19.5787 66.6727C19.5787 66.9894 19.498 67.7121 18.4722 67.3532C18.3704 67.3184 18.327 67.357 18.1891 67.4935C18.014 67.6674 18.1183 67.8449 18.2835 68.0697C18.3145 68.138 23.7624 66.5845 23.7164 66.582C23.8431 66.5883 24.3734 67.9232 24.7248 68.3479C24.8465 68.4944 23.745 68.6534 23.4668 68.718C23.3774 68.7428 22.9813 68.8657 22.8695 68.898C22.6274 68.9688 22.3852 69.0061 22.1307 69.0793C21.9916 69.1203 21.434 69.2793 21.3124 69.3178C21.0391 69.4035 20.9957 69.432 20.7163 69.5214C20.638 69.5488 19.8694 69.8058 19.7799 69.8381C18.4135 70.5936 16.9406 71.1379 15.4112 71.4525C15.1542 71.4624 14.8052 71.5704 14.8052 71.3109C14.8083 70.8064 14.8531 70.303 14.9393 69.8058C14.2458 70.1634 13.4982 70.4047 12.7264 70.5199C12.4383 70.5199 11.8 70.3646 11.8969 69.9673C12.1089 69.1799 12.5248 68.4625 13.1027 67.8872C13.5025 67.4824 13.3163 67.2626 13.9124 67.198C14.27 67.1583 14.5333 66.8169 14.7816 66.6367C15.338 66.2196 15.8089 65.6994 16.1687 65.1043C16.7069 64.4446 17.1129 63.6874 17.3646 62.874C17.0543 62.9495 16.74 63.0079 16.4233 63.0491C16.1079 63.0491 14.8374 63.1472 14.5221 63.1472L14.1409 63.4614C13.8938 63.4975 10.413 63.9544 10.2243 64.0624C10.2348 64.3059 10.1985 64.5492 10.1175 64.779C9.86537 65.2745 9.13146 66.1264 9.27551 66.1264L10.151 66.0345C10.434 66.0622 10.7079 66.1498 10.9544 66.2916C10.1591 66.9107 9.2882 67.426 8.36277 67.8252C7.60774 68.219 7.85983 68.5418 7.57422 69.344C7.68598 69.4595 7.80637 69.493 8.02499 69.6929C8.17773 69.7389 9.24446 70.0382 9.16498 70.2059C8.94705 70.3983 8.70985 70.5676 8.45715 70.7113C8.4646 70.8554 8.68067 70.9659 8.79617 70.9659C9.13891 70.9659 9.30655 72.0699 9.86283 72.0699C10.7085 72.0699 11.6908 71.7234 11.9926 71.8799C12.7923 72.3008 13.6491 72.4635 13.7696 72.5865C13.2794 72.5932 12.7903 72.5372 12.3142 72.4201C12.2881 72.5976 12.6681 73.3104 12.6321 73.5538C12.6159 73.6842 12.4893 73.6817 12.4719 73.8221C12.4336 74.6977 12.5586 75.5728 12.8407 76.4026C13.3296 76.5264 13.7971 76.7227 14.2278 76.985C13.9115 75.3687 14.161 73.6928 14.9344 72.2388C15.1505 72.2388 16.2247 72.1667 16.2247 72.1667C16.278 72.4089 16.627 72.5244 16.7624 72.5244C17.1942 72.6212 17.6073 72.7877 17.9856 73.0174L18.8264 72.8646C19.2921 72.8646 19.4137 73.1254 20.0955 73.1068" fill="white"/> +<path d="M36.5947 32.5906L41.5496 32.5894" stroke="#1E1E1C" stroke-width="0.412282" stroke-miterlimit="3.864"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M3.80448 45.3847C4.93702 47.2214 5.01277 47.4536 6.31668 48.2558C6.2806 48.2334 6.42596 48.1701 6.38995 48.149C5.21891 47.3678 3.66664 44.7936 3.80448 45.3847Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M17.1792 51.7451C16.6133 52.4528 16.0049 53.1254 15.3575 53.7593C15.1907 53.9441 15.0055 54.1113 14.8049 54.2586C14.7714 54.225 14.7515 54.1804 14.749 54.1331H14.3926V54.9652C14.3926 55.298 14.4894 55.0955 14.4894 55.4296L14.5813 57.5022C14.5813 57.7481 14.9216 57.9555 14.9775 57.4264C15.0447 56.9197 15.165 56.4215 15.3364 55.94C15.7375 55.8722 16.1049 55.6736 16.3812 55.375C16.6576 55.0764 16.8272 54.6948 16.8638 54.2896C16.8861 54.0884 16.7794 53.9804 16.7111 53.7916L17.281 51.8469C17.2562 51.755 17.2326 51.8283 17.1792 51.7451Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M15.909 53.8517C15.9349 53.9456 15.9487 54.0425 15.95 54.1399C15.963 54.3188 15.9048 54.4957 15.788 54.632C15.6713 54.7683 15.5054 54.8529 15.3266 54.8675C15.1962 54.8675 15.2248 54.6912 15.0944 54.6912C15.0597 54.6912 14.9678 54.7185 14.9342 54.7185C14.905 55.0753 14.9075 55.4339 14.9417 55.7902H15.0795C15.2882 55.7902 15.0845 55.2426 15.2906 55.2426C15.3366 55.2426 15.3614 55.2736 15.4049 55.2736C15.9289 55.2736 16.3189 55.0352 16.3189 54.5111C16.3189 54.1932 16.2754 53.8381 16.0569 53.7214C16.001 53.6903 15.9427 53.7462 15.9091 53.7946L15.909 53.8517Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M15.0762 61.0248C15.8375 60.8956 16.0275 60.0003 15.9232 60.0649C15.5444 60.2995 15.4376 60.728 15.3408 60.3666C15.2982 60.2921 15.2349 60.2315 15.1587 60.1922C15.0824 60.1529 14.9964 60.1365 14.911 60.145C14.8256 60.1536 14.7445 60.1867 14.6775 60.2403C14.6105 60.294 14.5605 60.3659 14.5336 60.4473C14.4553 60.7429 14.7708 61.0248 15.0763 61.0248" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M11.8262 59.8911C12.3124 60.1136 12.8274 60.267 13.3561 60.3468C13.6336 60.3718 13.912 60.3093 14.1521 60.168C14.4241 60.019 14.8388 59.7508 14.7829 59.6042C13.7883 59.5399 12.7899 59.6368 11.8262 59.8911Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M18.0624 49.3827L17.8873 49.1033C18.2116 49.0325 18.5426 48.9971 18.8745 48.9978C19.1627 49.04 19.4556 49.04 19.7438 48.9978C19.7699 49.035 19.5885 48.6103 19.6531 48.5904C20.3473 48.393 21.4004 49.3852 21.4004 49.3852C20.7112 49.1356 19.8034 48.814 20.017 49.4237C19.7165 49.795 17.9456 48.9034 18.2995 49.7888C18.3989 50.0359 17.429 49.4398 16.8789 49.4398C17.3471 49.4647 17.5942 49.3827 18.0624 49.3827Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M54.6883 51.6722H42.7259V69.5283C42.1014 69.6018 41.5116 69.855 41.0283 70.2573V49.9424H54.6883V51.6722Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M23.9268 51.6603H35.8532V69.5152C36.4768 69.5491 37.0742 69.7771 37.5619 70.1671L37.5644 49.9292H23.9268L23.9268 51.6603Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M37.5625 32.3662H41.0284V46.4497H54.6884V49.943H41.0284V70.2579C41.2829 70.0853 39.2824 71.0899 39.2824 72.436C39.1659 71.9604 38.9531 71.5138 38.6573 71.1236C38.3615 70.7333 37.9889 70.4079 37.5625 70.1672V49.9429H23.9248V46.4496H37.5625V32.3662Z" fill="#BC2237"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M54.6831 51.6724H42.7256V69.526C43.8991 69.526 45.0205 69.5173 46.1965 69.5173C47.6208 69.5173 48.3523 69.5521 49.7742 69.4887C51.54 69.4117 53.322 69.3869 54.087 68.3997C54.5476 67.739 54.7588 66.9364 54.6831 66.1346C54.6905 65.9272 54.6831 65.4218 54.6831 65.3013V51.6724Z" fill="#2F5398"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M23.9241 51.6724H35.8505V69.526C34.6732 69.526 33.5941 69.5173 32.4206 69.5173C30.9963 69.5173 30.2623 69.5521 28.8379 69.4887C27.0746 69.4117 25.408 69.2838 24.6419 68.2966C24.3828 68.002 24.1894 67.6558 24.0743 67.2808C23.9847 66.9049 23.9343 66.5208 23.9241 66.1346C23.9191 65.9272 23.9241 65.4218 23.9241 65.3013L23.9241 51.6724Z" fill="#2F5398"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M37.5542 32.3584H35.8507L35.8444 44.6596H23.9229V46.4478H37.5699L37.5542 32.3584Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M41.0293 32.3662H42.7281L42.7234 44.6595H54.6905V46.4619L41.0293 46.4305V32.3662Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M54.6885 32.3574V44.6577L42.7285 44.6589V32.3661C42.7285 32.3661 54.121 32.3574 54.6885 32.3574Z" fill="#2F5398"/> +<path d="M35.8503 32.3574H23.9238V44.657H35.8503V32.3574Z" fill="#2F5398"/> +<path d="M42.7862 34.6677C41.6474 34.5286 41.414 32.8584 41.414 32.3666C41.414 32.3617 41.445 32.312 41.2203 32.312C40.9123 32.312 36.941 32.3579 36.941 32.3666C36.9727 32.8872 36.8391 33.4045 36.5591 33.8445C36.2792 34.2846 35.8674 34.6249 35.3825 34.8168C34.9019 35.0019 34.9193 34.1611 34.7852 33.6632C34.7553 33.5016 34.7056 33.3444 34.6374 33.195C33.9072 33.1417 34.0525 33.5849 34.4821 34.6131C34.6758 35.0863 32.6094 34.5411 32.6169 33.2372L32.5026 33.2447C31.8817 33.2372 32.3722 34.1909 32.4232 34.5088C32.4542 34.7162 30.4536 34.6231 30.512 33.0522C30.512 32.1084 31.1329 30.956 32.3065 31.0926C32.5884 31.1236 32.838 31.3658 33.1049 31.2702C33.4315 31.151 33.5147 30.9684 34.0264 30.9684C34.3013 31.0072 34.5678 31.0916 34.8149 31.218C35.0807 31.3161 35.4284 31.1398 35.714 31.1398C35.9897 31.1687 36.2511 31.2771 36.4665 31.4516C36.6818 31.6262 36.8419 31.8595 36.9273 32.1233C36.9881 32.3307 36.9608 32.2202 36.9409 32.3208C37.4749 32.327 40.9967 32.3667 41.5083 32.3667C41.4853 32.1994 41.5048 32.0289 41.5649 31.871C41.625 31.7132 41.7238 31.5729 41.8523 31.4632C41.9808 31.3536 42.1348 31.2779 42.3001 31.2433C42.4655 31.2087 42.6369 31.2163 42.7986 31.2652C42.9364 31.2901 43.3201 31.5186 43.3611 31.4788C43.5499 31.3012 44.1633 30.5276 45.2313 31.6129C45.3331 31.716 45.5293 31.4391 45.8348 31.4502C45.8348 31.4502 45.5194 30.7573 45.7864 30.468C46.0149 30.2208 45.9031 30.201 46.0993 29.9252C46.3871 29.4955 46.7447 29.1169 47.1574 28.8051C47.5192 28.6022 47.9154 28.4679 48.326 28.409C48.7209 28.3307 50.4483 28.5108 50.8506 28.5108C51.4889 28.5108 51.8888 28.2301 52.5246 28.2301C53.3552 28.0801 54.2121 28.2195 54.9523 28.625C55.1535 28.8821 56.1991 30.7597 56.2402 30.8814C56.599 31.891 57.4211 36.0201 57.5354 36.3342C57.6817 37.0046 58.0031 37.6242 58.4667 38.1299C59.0095 38.5819 57.2957 39.8871 56.9939 39.6325C56.1964 39.1192 55.5943 38.3531 55.284 37.4568C55.1602 37.0996 55.0639 36.7334 54.9958 36.3616C54.8625 35.8251 54.6705 35.305 54.4233 34.8105C54.4233 34.3809 53.0722 34.0319 52.7158 33.8109C52.4507 33.6656 52.2385 33.4399 52.1098 33.1664C51.9833 33.3053 51.8276 33.4144 51.6539 33.4859C51.4802 33.5574 51.2928 33.5895 51.1052 33.5799C50.7637 33.5438 50.4147 33.0484 49.9391 32.9341C49.1315 32.7613 48.3074 32.6776 47.4815 32.6845C47.7845 34.4529 45.6598 34.7609 45.707 34.3846C45.8647 34.1052 46.277 33.1974 45.6536 33.2011L45.4636 33.1937C45.4661 34.4976 43.6357 34.9956 43.8319 34.5224C44.2591 33.4954 44.2491 33.1005 43.5189 33.1527C43.4475 33.2904 43.3961 33.4376 43.3662 33.5898C43.2321 34.0853 43.2905 34.7546 42.7838 34.6677" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M45.6806 32.6523C45.8394 32.4202 46.071 32.2477 46.3389 32.162C46.6068 32.0763 46.8955 32.0823 47.1596 32.1792C47.095 32.1557 46.838 31.5769 46.4306 31.4888C46.1872 31.4379 45.6048 31.5409 45.5229 31.8973C45.5172 32.1577 45.5711 32.416 45.6806 32.6523Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M43.3346 32.4475C43.1353 32.2448 42.8756 32.1123 42.5945 32.07C42.1487 32.07 41.6929 32.6152 41.7053 32.5481C41.822 31.9446 42.1611 31.4131 42.6292 31.4131C42.9447 31.4131 43.3172 31.6428 43.3172 31.9558C43.3433 32.1184 43.3491 32.2836 43.3346 32.4476" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M43.2308 32.9893C43.2216 32.8532 43.1673 32.7241 43.0764 32.6224C42.9855 32.5207 42.8633 32.4523 42.7291 32.428C42.3093 32.3882 41.8995 32.6801 41.8995 32.8875C41.896 33.1882 41.9717 33.4847 42.1191 33.7469C42.2664 34.0091 42.4802 34.228 42.739 34.3814C43.0954 34.58 43.0271 33.5344 43.2308 32.9893Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M44.8118 32.3598C44.6963 32.3689 44.5819 32.3893 44.4703 32.4207C44.217 32.5299 43.9463 32.6504 43.9463 32.8392C43.9463 33.208 44.3772 32.8255 44.4095 33.4092C44.4256 33.737 44.2443 33.8997 44.2083 34.2151C44.2828 34.4424 45.1347 33.9382 45.1906 33.1384C45.2241 32.6504 45.1583 32.3226 44.8118 32.3598Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M46.7548 32.4339C47.1571 32.517 47.2081 32.7319 47.2081 33.0473C47.2241 33.1914 47.2089 33.3372 47.1636 33.4749C47.1182 33.6126 47.0438 33.7389 46.9453 33.8453C46.8468 33.9516 46.7266 34.0356 46.5928 34.0914C46.4591 34.1472 46.3148 34.1735 46.17 34.1687C46.0607 34.1724 46.36 33.6719 46.3525 33.4422C46.3401 32.8735 46.0073 33.0287 45.9911 32.861C45.9638 32.5891 46.5661 32.3941 46.7549 32.4339" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M55.0059 35.9519C55.0668 35.8153 55.037 36.0611 55.037 36.0611C55.1276 36.0636 55.3387 35.7954 55.3598 35.7023C55.489 35.1844 55.4617 35.5644 55.4617 35.5644C55.7187 35.4787 55.9013 34.7597 55.9013 34.7597C56.1305 34.4898 56.2614 34.15 56.2726 33.796C56.2905 33.1825 56.2211 32.5695 56.0664 31.9755C55.3347 31.3993 54.4767 31.0047 53.5629 30.8244C53.4822 30.8095 53.4822 30.648 53.4076 30.6195C52.4949 30.3313 51.5617 30.1125 50.616 29.965C49.9752 29.7527 49.7542 29.2125 48.6899 29.6918L52.7718 30.802C52.0366 31.0479 51.797 31.4403 51.2779 32.5964C51.2419 32.6722 51.494 32.9776 51.4989 33.1366C51.5126 33.4595 51.0668 32.8858 50.0001 32.5927C49.4146 32.5025 48.8358 32.373 48.2677 32.2053C47.6497 31.7373 46.9615 31.3701 46.2286 31.1174C46.0945 31.0889 46.0051 30.6356 46.2038 30.4233C46.6163 29.8974 47.1101 29.4409 47.6667 29.0709C48.4523 28.8239 49.2812 28.7448 50.0994 28.8388C50.621 28.8388 50.9574 28.9505 51.4816 28.9505C52.0205 28.9505 52.018 28.5556 53.0897 28.5606C53.3294 28.5631 53.4685 28.5904 53.7081 28.5904C54.0429 28.6001 54.3683 28.7032 54.6474 28.8882C54.9266 29.0732 55.1484 29.3327 55.2877 29.6373C55.6623 30.2708 55.9794 30.9365 56.2352 31.6266C56.5754 32.9715 57.2858 35.9221 57.2858 35.9221C57.8173 37.6532 58.6344 39.4153 60.5691 39.7705C60.0438 39.9096 59.9557 40.1666 59.3497 40.1393C55.2579 39.9468 55.5075 37.9723 55.0058 35.9519" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M43.7351 32.5526C43.9388 32.1453 44.8751 31.8386 45.198 32.1788C45.198 32.1788 44.7931 31.281 44.3945 31.2438C44.1424 31.2214 43.6867 31.3183 43.6047 31.6734C43.5954 31.9719 43.6396 32.2697 43.7351 32.5526Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M15.4961 72.748C15.46 73.4224 14.9944 76.1643 15.0689 76.0848C15.1446 76.0066 14.7907 77.0212 14.9745 77.077L16.0859 76.9181C16.0808 76.4083 16.0468 75.8991 15.9841 75.3931C15.9841 75.0156 16.0561 74.9982 16.0561 74.6207C16.0561 74.1178 15.9419 72.748 15.9419 72.748H15.4961Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M7.80416 74.8012C7.94224 74.2949 7.97271 73.7653 7.89357 73.2464C7.86211 73.0077 7.85586 72.7663 7.87493 72.5262C7.87493 72.0444 7.91102 71.2372 7.91102 70.7541C7.92805 70.5897 7.89142 70.4241 7.8066 70.2822C7.72179 70.1403 7.59333 70.0297 7.44043 69.9668C7.46528 70.0301 7.75089 74.7441 7.80435 74.8012" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M8.62341 71.8481L8.69668 72.5174C8.62635 72.8135 8.57533 73.1138 8.54395 73.4165L8.64577 73.4811C8.64577 73.4811 8.73518 75.9411 8.7327 75.9772L9.1574 76.0827L9.11513 74.2523L9.35232 74.2026C9.35232 74.292 9.37585 73.6463 9.37585 73.5581L9.26291 73.4426C9.26291 73.3893 9.29146 72.736 9.29146 72.674L9.12506 71.7401L8.90278 71.5737L8.62341 71.8481Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M19.8617 77.6257C19.8952 77.4742 20.1138 75.2737 20.1163 75.0788L19.8977 74.6367L19.8058 73.6159C19.6705 73.5513 19.2048 73.3899 19.2048 73.4594C19.2937 73.7419 19.3663 74.0292 19.4221 74.32L19.2507 74.4976C19.2507 74.5758 19.2942 75.2899 19.2942 75.383C19.2917 75.5233 19.175 75.4997 19.175 75.4997L19.2147 76.374C19.2147 76.374 19.0781 77.5711 19.0781 77.6978" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M17.0198 75.4076C17.0198 75.4076 16.9912 76.2011 16.9912 76.3265L17.1017 76.3476C17.1017 76.3476 17.1141 77.51 17.0831 77.4901C17.0483 77.469 17.4395 77.5882 17.4395 77.5882L17.4494 77.0393C17.4494 77.0393 17.6481 76.3899 17.6481 76.2992C17.6481 76.2992 17.6146 75.6274 17.6146 75.5653L17.5115 75.5827L17.5438 75.2983C17.5773 75.2362 17.8779 73.2841 17.8779 73.2841L17.3551 73.104L17.3861 75.194L17.0198 75.4076Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M22.4401 73.1216C22.4851 73.7475 22.4835 74.376 22.4352 75.0017L22.3135 75.0278C22.3135 75.0278 22.5109 76.1491 22.5109 76.3602C22.4234 76.7014 22.3574 77.0477 22.3135 77.3971L23.0536 77.5014L23.0685 77.1897L23.2473 77.1674C23.2473 77.0779 23.1827 76.3987 23.1827 76.3987C23.1827 76.3466 23.1678 75.6524 23.1678 75.5717L23.2262 74.5968L22.8859 74.5012V73.2669C22.8859 73.2669 22.4811 73.1961 22.4401 73.1216Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M36.8815 73.9888C36.8815 73.9888 36.2295 74.0918 36.2295 73.9888C36.2295 74.1515 36.34 75.4032 36.3164 75.4951C36.2984 75.717 36.2984 75.94 36.3164 76.162L36.5002 76.2675C36.5002 76.2675 36.4518 77.4075 36.4617 77.7391L37.0193 77.821C37.0798 77.6102 37.1038 77.3905 37.0901 77.1716L37.1534 75.8913C37.1534 75.8267 37.1609 75.2058 37.1671 75.1325C37.172 75.0965 37.2962 74.3564 37.2962 74.3564L37.1124 74.3713" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M10.5 72.604L10.5708 73.6397C10.4976 73.9354 10.4449 74.2358 10.4131 74.5388L10.5174 74.6034C10.5174 74.6034 10.418 76.7827 10.4131 76.8212H11.3246L11.1569 75.3559C11.1569 75.3559 11.3581 75.2715 11.3581 75.2963C11.3581 75.3845 11.4575 72.4712 11.4575 72.4712" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M39.7799 75.1771C39.749 75.4267 39.7354 75.6782 39.7389 75.9297C39.7066 75.9756 39.8569 76.3991 39.8569 76.6326C39.8563 76.765 39.8371 76.8967 39.7998 77.0237C39.8756 77.306 39.9685 77.5834 40.0779 77.8545C40.0779 77.8545 40.4717 77.8955 40.4717 77.8384C40.4717 77.8384 40.4009 77.2435 40.4034 77.1367C40.4034 77.0684 40.5822 75.6329 40.5822 75.6329L40.3649 75.1486C40.3649 74.8505 40.299 73.9862 40.3226 73.8633C40.1926 73.8911 40.0606 73.9081 39.9278 73.9142C39.9278 73.9415 39.9402 73.9539 39.9402 73.9813" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M61.9715 72.6685C61.933 72.7976 62.3155 75.023 62.3155 75.023C62.2844 75.0689 62.4708 75.0205 62.4708 75.0714C62.4658 75.4219 62.4334 75.7715 62.3739 76.117C62.4162 76.4918 62.4805 76.8637 62.5664 77.2309C62.5664 77.2309 63.16 77.2918 63.16 77.2309C63.16 77.2309 62.9762 76.3368 62.9762 76.2288C62.9787 76.1617 63.16 74.7249 63.16 74.7249C63.16 74.5846 62.9389 74.3834 62.9389 74.2406C62.9389 73.9413 62.7601 72.7902 62.7862 72.6685" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M58.6339 73.7549C58.5954 73.8828 58.4985 75.8399 58.4985 75.8908V76.5502C58.5048 76.5838 58.4588 77.874 58.4277 77.9001C58.5447 77.8988 58.661 77.9173 58.7717 77.9547C58.7717 77.9547 59.42 78.0652 59.42 78.0031C59.42 78.0031 59.2374 77.1115 59.2374 77.0022C59.2374 76.9377 59.2188 75.553 59.2188 75.553C59.2188 75.4127 59.4324 74.1038 59.4324 73.961" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M66.5675 76.9128C66.565 76.6272 66.575 74.7098 66.575 74.7098C66.565 74.6663 66.529 74.2305 66.529 74.2305C66.3737 74.2478 66.7451 72.8992 66.6284 72.9005C66.2435 72.88 65.8607 72.8302 65.4834 72.7515C65.4834 72.7515 65.5567 73.2644 65.5728 73.3997C65.6647 74.1473 65.7069 75.5691 65.7069 75.5691C65.7094 75.7467 65.6213 76.678 65.6213 76.8544" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M48.3189 73.9609C48.2804 74.0888 48.4592 76.108 48.4592 76.108C48.4307 76.1528 48.6145 76.1043 48.6145 76.1565C48.6145 76.3886 48.5785 76.5737 48.5785 76.8072C48.5782 76.9409 48.5569 77.0738 48.5151 77.2009C48.5583 77.5759 48.6221 77.9481 48.7063 78.3161C48.7063 78.3161 49.3012 78.3757 49.3012 78.3161C49.3012 78.3161 49.1211 77.4207 49.1211 77.3114C49.1211 77.2469 49.3012 75.6052 49.3012 75.6052C49.3012 75.4611 49.0826 75.2624 49.0826 75.1171C49.0861 74.7827 49.1064 74.4486 49.1435 74.1162" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M68.5715 72.696C68.5541 72.8239 68.7268 74.4309 68.7268 74.4309C68.7119 74.4756 68.7951 74.4272 68.7951 74.4793C68.7951 74.7103 68.7777 74.899 68.7777 75.1325C68.7787 75.2634 68.77 75.3941 68.7517 75.5237C68.7517 75.5237 68.8138 76.5867 68.8361 76.6376C68.9474 76.4497 69.0461 76.2548 69.1317 76.0539C69.0805 75.9189 69.0431 75.7792 69.0199 75.6367C69.0199 75.5696 69.103 74.1328 69.103 74.1328C69.103 73.9888 69.0037 73.7913 69.0037 73.6473C69.0037 73.348 68.9255 72.1981 68.9354 72.0776" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M45.4546 75.7799C45.3962 75.7811 45.8059 74.1668 45.6408 74.173C45.3534 74.035 45.0508 73.9313 44.7393 73.8638C44.5965 73.9482 44.8672 74.8088 44.7244 74.6399C44.7244 74.6399 44.7293 75.7017 44.7492 75.8047C44.8247 76.1803 44.8766 76.5602 44.9045 76.9423C44.931 77.0726 44.989 77.1945 45.0734 77.2974C45.0982 77.4638 44.8672 77.8537 44.8747 78.0214C45.0063 78.0164 45.5738 78.3443 45.6968 78.3418C45.7879 77.4802 45.7056 76.6091 45.4546 75.7799" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M42.995 73.6953C42.8882 73.6953 42.1244 73.745 41.999 73.745C41.9625 74.4792 42.0977 75.2118 42.3939 75.8846C42.4523 75.8846 41.9891 77.643 42.1542 77.643C42.1542 77.643 42.8372 77.6157 43.0409 77.6157" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M32.4449 32.7385C32.2902 32.5 32.0593 32.321 31.7897 32.2307C31.5202 32.1405 31.228 32.1444 30.9609 32.2417C31.1577 31.9573 31.3983 31.7058 31.6737 31.4966C31.7855 31.4296 32.7169 31.1278 32.6076 31.9809C32.5741 32.2504 32.4449 32.7385 32.4449 32.7385" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M34.9071 32.5335C35.1196 32.3277 35.3925 32.1954 35.6857 32.156C36.1489 32.156 36.632 32.7024 36.6195 32.6341C36.4929 32.033 36.1364 31.4966 35.6472 31.4966C35.3144 31.4966 34.9245 31.7275 34.9245 32.043C34.8971 32.205 34.8913 32.3699 34.9071 32.5335Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M35.0156 33.0752C35.0283 32.9364 35.087 32.8057 35.1824 32.704C35.2778 32.6023 35.4044 32.5354 35.5421 32.5139C35.9805 32.4742 36.4102 32.766 36.4102 32.9734C36.4111 33.2785 36.3299 33.5783 36.175 33.8412C36.02 34.104 35.7971 34.3203 35.5297 34.4673C35.1584 34.666 35.2317 33.6216 35.0156 33.0752Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M33.3548 32.4458C33.4764 32.4531 33.5968 32.4739 33.7137 32.5079C33.9782 32.6147 34.2638 32.7364 34.2638 32.924C34.2663 33.145 33.8081 32.9115 33.777 33.4965C33.7597 33.8219 33.9509 33.9858 33.9882 34.3012C33.9074 34.5284 33.0158 34.0243 32.9574 33.2233C32.9252 32.7365 32.991 32.4074 33.3548 32.4459" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M31.317 32.519C30.8948 32.601 30.8389 32.8183 30.8389 33.1349C30.8259 33.2828 30.845 33.4317 30.8949 33.5715C30.9448 33.7113 31.0243 33.8387 31.1279 33.9449C31.2316 34.0511 31.3569 34.1337 31.4954 34.187C31.6339 34.2404 31.7823 34.2632 31.9305 34.2538C32.0472 34.2588 31.7318 33.7596 31.7392 33.5286C31.7516 32.9586 32.1006 33.1138 32.118 32.9474C32.1441 32.6755 31.5156 32.4805 31.317 32.519Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M34.4896 32.6388C34.271 32.2303 33.2888 31.926 32.9473 32.2675C32.9473 32.2675 33.3769 31.366 33.7917 31.3312C34.055 31.3088 34.538 31.4045 34.625 31.7584C34.6345 32.0577 34.5886 32.3562 34.4896 32.6388Z" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M63.6839 43.6806L64.3359 43.5986C64.3508 44.371 64.3359 44.376 64.3359 44.5884C64.1309 44.6319 63.9221 44.6547 63.7125 44.6567C63.6736 44.3328 63.664 44.0061 63.6839 43.6806Z" fill="#F2D27E"/> +<path d="M63.6839 43.6806L64.3359 43.5986C64.3508 44.371 64.3359 44.376 64.3359 44.5884C64.1309 44.6319 63.9221 44.6547 63.7125 44.6567C63.6736 44.3328 63.664 44.0061 63.6839 43.6806V43.6806Z" stroke="#F2D27E" stroke-width="0.103075" stroke-linejoin="round"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M63.7082 45.6123L64.3365 45.5464C64.3489 46.3188 64.3365 46.2368 64.3365 46.4492C64.136 46.4948 63.9311 46.5185 63.7255 46.52C63.6896 46.2187 63.6837 45.9146 63.7082 45.6122" fill="#F2D27E"/> +<path d="M63.7082 45.6123L64.3365 45.5464C64.3489 46.3188 64.3365 46.2368 64.3365 46.4492C64.136 46.4948 63.9311 46.5185 63.7255 46.52C63.6896 46.2187 63.6837 45.9147 63.7082 45.6123V45.6123Z" stroke="#F2D27E" stroke-width="0.103075" stroke-linejoin="round"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M63.7081 47.5251L64.3365 47.458C64.3489 48.2304 64.339 48.1485 64.3365 48.362C64.1361 48.4082 63.9312 48.432 63.7255 48.4328C63.6896 48.1316 63.6837 47.8275 63.7081 47.5251Z" fill="#F2D27E"/> +<path d="M63.7081 47.5251L64.3365 47.458C64.3489 48.2304 64.339 48.1485 64.3365 48.362C64.1361 48.4082 63.9312 48.432 63.7255 48.4328C63.6896 48.1316 63.6837 47.8275 63.7081 47.5251V47.5251Z" stroke="#F2D27E" stroke-width="0.103075" stroke-linejoin="round"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M63.9387 40.478C63.7404 40.5474 63.5344 40.592 63.3252 40.6109C63.3252 40.9735 63.2644 41.8651 63.2891 42.1036C63.5263 42.0775 63.8852 42.0912 63.9336 41.8962C63.9436 41.6963 63.9585 40.5948 63.9386 40.478" fill="#F2D27E"/> +<path d="M63.9387 40.478C63.7404 40.5474 63.5344 40.592 63.3252 40.6109C63.3252 40.9735 63.2644 41.8651 63.2891 42.1036C63.5263 42.0775 63.8852 42.0912 63.9336 41.8962C63.9436 41.6963 63.9585 40.5948 63.9387 40.478Z" stroke="#F2D27E" stroke-width="0.103075" stroke-linejoin="round"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M65.2601 40.1504C65.1008 40.2311 64.9311 40.2896 64.7559 40.3242C64.7559 40.6558 64.7075 41.4829 64.7311 41.6989C65.0056 41.586 65.2291 41.53 65.2725 41.3574C65.2849 41.1737 65.27 40.9153 65.2527 40.5093C65.2626 40.3899 65.2651 40.2701 65.2601 40.1504Z" fill="#F2D27E"/> +<path d="M65.2601 40.1504C65.1008 40.2311 64.9311 40.2896 64.7559 40.3242C64.7559 40.6558 64.7075 41.4829 64.7311 41.6989C65.0056 41.586 65.2291 41.53 65.2725 41.3574C65.2849 41.1737 65.27 40.9153 65.2527 40.5093C65.2626 40.3899 65.2651 40.2701 65.2601 40.1504V40.1504Z" stroke="#F2D27E" stroke-width="0.103075" stroke-miterlimit="3.864"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M63.3342 49.8389C63.3342 49.8389 63.6931 49.7446 63.7129 49.8116C63.7227 49.8974 63.7264 49.9837 63.7241 50.0699C63.7415 50.106 63.8843 50.1134 64.0396 50.0997C64.2047 50.0848 64.319 50.0687 64.309 49.9805C64.309 49.9805 64.3016 49.8327 64.2991 49.7644C64.4211 49.7203 64.5522 49.7079 64.6803 49.7283C64.7064 49.7569 64.7387 50.6597 64.7387 50.9354C64.7387 51.1018 64.6878 51.3713 64.1203 51.4185C63.5155 51.4694 63.3317 51.2186 63.3317 51.0944C63.2988 50.6765 63.2996 50.2567 63.3342 49.8389" fill="#F2D27E"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M62.1435 23.7059C62.2963 24.0089 62.4316 24.3206 62.4391 24.3082C62.4999 24.5491 62.372 24.5851 62.2205 24.6758C62.029 24.8046 61.8181 24.9019 61.5959 24.9639C61.5859 25.0856 61.6145 25.2632 61.5934 25.365C61.5735 25.4494 61.4791 25.437 61.5176 25.4768C61.5541 25.6493 61.5802 25.8239 61.5959 25.9996C61.6828 26.3337 61.6903 26.7583 61.7114 26.8092C61.7697 26.9433 61.8839 27.0924 61.8082 27.2054L61.622 27.2762L61.3339 27.2898L61.0929 27.2067C61.1004 27.1719 61.042 27.1458 61.0085 27.126C60.7899 27.0664 60.3901 26.967 60.4795 26.6864C60.4099 26.7149 60.354 27.0079 60.354 27.0079C60.2497 27.2575 59.7814 27.7543 59.8324 28.1107C59.8324 28.1107 58.3497 28.1107 57.8679 27.347C57.7772 27.2042 57.8232 26.9682 57.8232 26.6006C57.8434 26.3665 57.8783 26.1338 57.9275 25.904C57.9784 25.7251 58.0715 25.8605 58.0877 25.7314L58.3062 24.6635L58.115 24.6535L58.5993 23.3496L59.7356 23.6824C60.0612 23.3797 60.4881 23.2096 60.9327 23.2056C61.3797 23.2056 61.9423 23.2863 62.1435 23.706" fill="#FAEDCD"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M59.1576 25.5056C59.1142 25.4733 58.6534 25.3727 58.6025 25.3578C58.6664 25.2365 58.7443 25.1231 58.8347 25.0201C58.8757 25.035 58.9129 24.8884 58.9514 24.8922C58.9291 24.9493 59.0272 24.963 58.934 25.1182C59.5791 25.193 60.2282 25.2278 60.8776 25.2225L60.8068 24.8922C60.9083 25.0213 60.9946 25.1617 61.0638 25.3107C61.0638 25.3107 61.0738 25.4907 60.7149 25.4795C60.7448 25.7395 60.804 25.9953 60.8912 26.242C60.8912 26.2731 61.0539 26.6381 61.0353 26.653C61.008 26.6691 60.397 25.97 60.5236 25.929C60.2817 26.0241 60.0146 26.034 59.7663 25.957C59.518 25.88 59.3033 25.7208 59.1576 25.5055" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M59.4736 25.5396C59.4736 25.5396 59.7481 25.9531 59.9704 25.9195C60.0163 25.9121 60.5044 25.9717 60.3976 25.5396C60.3976 25.5396 59.7332 25.5656 59.4736 25.5396Z" fill="white"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M60.0652 25.4658C60.1103 25.4664 60.1543 25.4804 60.1916 25.5059C60.2288 25.5314 60.2577 25.5673 60.2746 25.6092C60.2915 25.6511 60.2957 25.697 60.2865 25.7413C60.2774 25.7855 60.2554 25.826 60.2233 25.8578C60.1912 25.8896 60.1504 25.9112 60.1061 25.9198C60.0618 25.9285 60.0159 25.9239 59.9742 25.9065C59.9325 25.8892 59.8968 25.8599 59.8717 25.8224C59.8466 25.7849 59.8331 25.7407 59.833 25.6956C59.8329 25.6652 59.8389 25.6351 59.8505 25.607C59.8622 25.5789 59.8793 25.5534 59.9009 25.5321C59.9225 25.5107 59.9482 25.4938 59.9764 25.4824C60.0046 25.4711 60.0348 25.4654 60.0652 25.4658Z" fill="#1E1E1C"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M58.438 23.7168C58.0592 24.1341 57.7401 24.8717 57.9214 24.8854L58.1499 24.9041C58.1151 25.3039 58.1015 25.4058 58.1015 25.4058C58.1424 25.566 58.2629 25.2493 58.3647 24.8743C58.402 24.7526 58.4405 24.6135 58.1611 24.6247C58.2604 24.4645 58.5833 23.5555 58.438 23.7169" fill="#1E1E1C"/> +<path d="M54.6537 34.4991L54.6512 65.439C54.6512 65.5607 54.6586 66.0699 54.6512 66.271C54.7266 67.0739 54.5145 67.8775 54.0526 68.5386C53.2877 69.5233 51.5057 69.5507 49.7423 69.6289C48.318 69.6898 43.8647 69.6624 42.6937 69.6624C41.2271 69.6811 39.2775 71.1849 39.2775 72.5285C39.1215 71.7368 38.7007 71.0217 38.0844 70.5008C37.468 69.9799 36.6928 69.6843 35.8861 69.6624C34.7101 69.6624 30.2544 69.6898 28.8338 69.6289C27.0704 69.5507 25.2847 69.5233 24.5185 68.5374C24.0567 67.8767 23.8442 67.0736 23.9187 66.271C23.915 66.0687 23.9187 65.5607 23.9187 65.439L23.8926 32.2266H30.694" stroke="#1E1E1C" stroke-width="0.52902" stroke-miterlimit="3.864"/> +<path d="M36.7354 32.2266H41.6343" stroke="#1E1E1C" stroke-width="0.52902" stroke-miterlimit="3.864"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M52.2364 32.9337C51.9334 32.6791 51.7422 32.6853 51.7633 32.6121C51.9186 31.985 52.4351 31.0015 53.1194 31.0015C54.0902 31.1146 55.0088 31.5014 55.7682 32.1166C55.8336 32.4068 55.8089 32.7101 55.6974 32.9859C55.7032 33.0673 55.704 33.1491 55.6999 33.2306C55.6999 33.4802 55.6999 33.4864 55.4863 33.6988C55.4329 33.7521 55.4093 34.0353 55.3795 34.1024C55.3015 34.2239 55.2165 34.3409 55.1249 34.4525C55.0479 34.5767 55.002 35.6534 54.7226 35.5727C54.6307 35.5453 54.6977 35.4795 54.6741 35.3169C54.6741 34.7717 54.7424 34.3582 54.5524 34.2948C54.3203 34.2166 52.8648 33.556 52.6636 33.4256C52.3768 33.2343 52.5059 33.1673 52.2364 32.9338" fill="#FAEDCD"/> +<defs> +<radialGradient id="paint0_radial_14759_76403" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(63.0123 68.5172) scale(3.55533 3.55533)"> +<stop stop-color="white"/> +<stop offset="0.40909" stop-color="white"/> +<stop offset="1" stop-color="white"/> +</radialGradient> +<linearGradient id="paint1_linear_14759_76403" x1="62.288" y1="60.3108" x2="64.9294" y2="61.432" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="1" stop-color="white"/> +</linearGradient> +<linearGradient id="paint2_linear_14759_76403" x1="56.1475" y1="61.4556" x2="59.5344" y2="61.2781" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="0.26704" stop-color="white"/> +<stop offset="0.71591" stop-color="white"/> +<stop offset="1" stop-color="white"/> +</linearGradient> +<linearGradient id="paint3_linear_14759_76403" x1="59.8927" y1="61.4092" x2="62.1929" y2="62.0688" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="0.64772" stop-color="white"/> +<stop offset="1" stop-color="white"/> +</linearGradient> +<radialGradient id="paint4_radial_14759_76403" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(57.8467 57.7614) scale(1.71953 1.71954)"> +<stop stop-color="white"/> +<stop offset="1" stop-color="white"/> +</radialGradient> +<radialGradient id="paint5_radial_14759_76403" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(64.8769 57.9603) scale(2.10835 2.10835)"> +<stop stop-color="white"/> +<stop offset="1" stop-color="white"/> +</radialGradient> +</defs> +</svg> diff --git a/apps/service-portal/src/assets/images/sofa.svg b/apps/portals/my-pages/src/assets/images/sofa.svg similarity index 100% rename from apps/service-portal/src/assets/images/sofa.svg rename to apps/portals/my-pages/src/assets/images/sofa.svg diff --git a/apps/service-portal/src/assets/images/thjodskra.png b/apps/portals/my-pages/src/assets/images/thjodskra.png similarity index 100% rename from apps/service-portal/src/assets/images/thjodskra.png rename to apps/portals/my-pages/src/assets/images/thjodskra.png diff --git a/apps/service-portal/src/assets/images/tr.svg b/apps/portals/my-pages/src/assets/images/tr.svg similarity index 100% rename from apps/service-portal/src/assets/images/tr.svg rename to apps/portals/my-pages/src/assets/images/tr.svg diff --git a/apps/service-portal/src/assets/images/umhverfisstofnun.svg b/apps/portals/my-pages/src/assets/images/umhverfisstofnun.svg similarity index 100% rename from apps/service-portal/src/assets/images/umhverfisstofnun.svg rename to apps/portals/my-pages/src/assets/images/umhverfisstofnun.svg diff --git a/apps/service-portal/src/assets/images/working.jpg b/apps/portals/my-pages/src/assets/images/working.jpg similarity index 100% rename from apps/service-portal/src/assets/images/working.jpg rename to apps/portals/my-pages/src/assets/images/working.jpg diff --git a/apps/service-portal/src/auth.ts b/apps/portals/my-pages/src/auth.ts similarity index 95% rename from apps/service-portal/src/auth.ts rename to apps/portals/my-pages/src/auth.ts index 34e8fcb204cc..d3ea87433d36 100644 --- a/apps/service-portal/src/auth.ts +++ b/apps/portals/my-pages/src/auth.ts @@ -38,6 +38,7 @@ const SERVICE_PORTAL_SCOPES = [ ApiScope.internal, ApiScope.internalProcuring, ApiScope.meDetails, + ApiScope.lawAndOrder, ApiScope.licenses, ApiScope.licensesVerify, ApiScope.company, @@ -50,6 +51,8 @@ const SERVICE_PORTAL_SCOPES = [ ApiScope.healthHealthcare, ApiScope.healthRightsStatus, ApiScope.healthDentists, + ApiScope.healthOrganDonation, + ApiScope.healthVaccinations, ApiScope.signatureCollection, ] diff --git a/apps/service-portal/src/components/AlertBanners/Banners.css.ts b/apps/portals/my-pages/src/components/AlertBanners/Banners.css.ts similarity index 100% rename from apps/service-portal/src/components/AlertBanners/Banners.css.ts rename to apps/portals/my-pages/src/components/AlertBanners/Banners.css.ts diff --git a/apps/service-portal/src/components/AlertBanners/GlobalAlertBannerSection.tsx b/apps/portals/my-pages/src/components/AlertBanners/GlobalAlertBannerSection.tsx similarity index 100% rename from apps/service-portal/src/components/AlertBanners/GlobalAlertBannerSection.tsx rename to apps/portals/my-pages/src/components/AlertBanners/GlobalAlertBannerSection.tsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Airplane.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Airplane.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Airplane.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Airplane.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Business.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Business.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Business.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Business.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Car.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Car.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Car.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Car.jsx diff --git a/apps/portals/my-pages/src/components/AnimatedIcon/CardWithCheckmark.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/CardWithCheckmark.jsx new file mode 100644 index 000000000000..e2b614103d58 --- /dev/null +++ b/apps/portals/my-pages/src/components/AnimatedIcon/CardWithCheckmark.jsx @@ -0,0 +1,80 @@ +/* eslint-disable */ + +import { useEffect } from 'react' +import { ReactComponent as Svg } from '../../assets/icons/sidebar/cardWithCheckmark.svg' + +export default function CardWithCheckmark() { + useEffect(() => { + // prettier-ignore + + !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof __SVGATOR_DEFINE__&&__SVGATOR_DEFINE__.amd?__SVGATOR_DEFINE__(e):((t="undefined"!=typeof globalThis?globalThis:t||self).__SVGATOR_PLAYER__=t.__SVGATOR_PLAYER__||{},t.__SVGATOR_PLAYER__["91c80d77"]=e())}(this,(function(){"use strict";function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function e(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function u(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function f(t,e,n){return(f=s()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&l(i,n.prototype),i}).apply(null,arguments)}function c(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function h(t,e,n){return(h="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=a(t)););return t}(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}function v(t){return function(t){if(Array.isArray(t))return d(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return d(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function y(t,e,n){if(Number.isInteger(t))return t;var r=Math.pow(10,e);return Math[n]((+t+Number.EPSILON)*r)/r}Number.isInteger||(Number.isInteger=function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t}),Number.EPSILON||(Number.EPSILON=2220446049250313e-31);var g=p(Math.pow(10,-6));function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return y(t,e,"round")}function m(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g;return Math.abs(t-e)<n}p(Math.pow(10,-2)),p(Math.pow(10,-4));var b=Math.PI/180;function w(t){return t*b}function k(t){return t/b}function _(t){return t}function A(t,e,n){var r=1-n;return 3*n*r*(t*r+e*n)+n*n*n}function x(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return t<0||t>1||n<0||n>1?null:m(t,e)&&m(n,r)?_:function(i){if(i<=0)return t>0?i*e/t:0===e&&n>0?i*r/n:0;if(i>=1)return n<1?1+(i-1)*(r-1)/(n-1):1===n&&t<1?1+(i-1)*(e-1)/(t-1):1;for(var u,o=0,a=1;o<a;){var l=A(t,n,u=(o+a)/2);if(m(i,l))break;l<i?o=u:a=u}return A(e,r,u)}}function S(){return 1}function O(t){return 1===t?1:0}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(1===t){if(0===e)return O;if(1===e)return S}var n=1/t;return function(t){return t>=1?1:(t+=e*n)-t%n}}var j=Math.sin,M=Math.cos,P=Math.acos,B=Math.asin,I=Math.tan,T=Math.atan2,N=Math.sqrt,R=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;r(this,t),this.m=[e,n,i,u,o,a],this.i=null,this.w=null,this.s=null}return u(t,[{key:"determinant",get:function(){var t=this.m;return t[0]*t[3]-t[1]*t[2]}},{key:"isIdentity",get:function(){if(null===this.i){var t=this.m;this.i=1===t[0]&&0===t[1]&&0===t[2]&&1===t[3]&&0===t[4]&&0===t[5]}return this.i}},{key:"point",value:function(t,e){var n=this.m;return{x:n[0]*t+n[2]*e+n[4],y:n[1]*t+n[3]*e+n[5]}}},{key:"translateSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t&&!e)return this;var n=this.m;return n[4]+=n[0]*t+n[2]*e,n[5]+=n[1]*t+n[3]*e,this.w=this.s=this.i=null,this}},{key:"rotateSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(t%=360){t=w(t);var e=j(t),n=M(t),r=this.m,i=r[0],u=r[1];r[0]=i*n+r[2]*e,r[1]=u*n+r[3]*e,r[2]=r[2]*n-i*e,r[3]=r[3]*n-u*e,this.w=this.s=this.i=null}return this}},{key:"scaleSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(1!==t||1!==e){var n=this.m;n[0]*=t,n[1]*=t,n[2]*=e,n[3]*=e,this.w=this.s=this.i=null}return this}},{key:"skewSelf",value:function(t,e){if(e%=360,(t%=360)||e){var n=this.m,r=n[0],i=n[1],u=n[2],o=n[3];t&&(t=I(w(t)),n[2]+=r*t,n[3]+=i*t),e&&(e=I(w(e)),n[0]+=u*e,n[1]+=o*e),this.w=this.s=this.i=null}return this}},{key:"resetSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,u=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=this.m;return o[0]=t,o[1]=e,o[2]=n,o[3]=r,o[4]=i,o[5]=u,this.w=this.s=this.i=null,this}},{key:"recomposeSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;return this.isIdentity||this.resetSelf(),t&&(t.x||t.y)&&this.translateSelf(t.x,t.y),e&&this.rotateSelf(e),n&&(n.x&&this.skewSelf(n.x,0),n.y&&this.skewSelf(0,n.y)),!r||1===r.x&&1===r.y||this.scaleSelf(r.x,r.y),i&&(i.x||i.y)&&this.translateSelf(i.x,i.y),this}},{key:"decompose",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.m,r=n[0]*n[0]+n[1]*n[1],i=[[n[0],n[1]],[n[2],n[3]]],u=N(r);if(0===u)return{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:0,y:0},skew:{x:0,y:0},rotate:0};i[0][0]/=u,i[0][1]/=u;var o=n[0]*n[3]-n[1]*n[2]<0;o&&(u=-u);var a=i[0][0]*i[1][0]+i[0][1]*i[1][1];i[1][0]-=i[0][0]*a,i[1][1]-=i[0][1]*a;var l,s=N(i[1][0]*i[1][0]+i[1][1]*i[1][1]);return 0===s?{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:p(u),y:0},skew:{x:0,y:0},rotate:0}:(i[1][0]/=s,i[1][1]/=s,a/=s,i[1][1]<0?(l=k(P(i[1][1])),i[0][1]<0&&(l=360-l)):l=k(B(i[0][1])),o&&(l=-l),a=k(T(a,N(i[0][0]*i[0][0]+i[0][1]*i[0][1]))),o&&(a=-a),{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:p(u),y:p(s)},skew:{x:p(a),y:0},rotate:p(l)})}},{key:"multiply",value:function(t){return this.clone().multiplySelf(t)}},{key:"preMultiply",value:function(t){return t.multiply(this)}},{key:"multiplySelf",value:function(t){var e=F(this.m,t.m),n=e.a,r=e.b,i=e.c,u=e.d,o=e.tx,a=e.ty;return this.resetSelf(n,r,i,u,o,a),this}},{key:"preMultiplySelf",value:function(t){var e=F(t.m,this.m),n=e.a,r=e.b,i=e.c,u=e.d,o=e.tx,a=e.ty;return this.resetSelf(n,r,i,u,o,a),this}},{key:"clone",value:function(){var t=this.m;return new this.constructor(t[0],t[1],t[2],t[3],t[4],t[5])}},{key:"toString",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:" ";if(null===this.s){var e=this.m.map((function(t){return p(t)}));1===e[0]&&0===e[1]&&0===e[2]&&1===e[3]?this.s="translate("+e[4]+t+e[5]+")":this.s="matrix("+e.join(t)+")"}return this.s}}],[{key:"create",value:function(t){return t?Array.isArray(t)?f(this,v(t)):t instanceof this?t.clone():(new this).recomposeSelf(t.origin,t.rotate,t.skew,t.scale,t.translate):new this}}]),t}();function F(t,e){return{a:t[0]*e[0]+t[2]*e[1],b:t[1]*e[0]+t[3]*e[1],c:t[0]*e[2]+t[2]*e[3],d:t[1]*e[2]+t[3]*e[3],tx:t[0]*e[4]+t[2]*e[5]+t[4],ty:t[1]*e[4]+t[3]*e[5]+t[5]}}function D(t,e,n){return t>=.5?n:e}function C(t,e,n){return 0===t||e===n?e:t*(n-e)+e}function L(t,e,n){var r=C(t,e,n);return r<=0?0:r}function q(t,e,n){var r=C(t,e,n);return r<=0?0:r>=1?1:r}function V(t,e,n){return 0===t?e:1===t?n:{x:C(t,e.x,n.x),y:C(t,e.y,n.y)}}function G(t,e,n){return 0===t?e:1===t?n:{x:L(t,e.x,n.x),y:L(t,e.y,n.y)}}function z(t,e,n){var r=function(t,e,n){return Math.round(C(t,e,n))}(t,e,n);return r<=0?0:r>=255?255:r}function Y(t,e,n){return 0===t?e:1===t?n:{r:z(t,e.r,n.r),g:z(t,e.g,n.g),b:z(t,e.b,n.b),a:C(t,null==e.a?1:e.a,null==n.a?1:n.a)}}function U(t,e,n){var r=e.length;if(r!==n.length)return D(t,e,n);for(var i=new Array(r),u=0;u<r;u++)i[u]=C(t,e[u],n[u]);return i}function W(t,e){for(var n=[],r=0;r<t;r++)n.push(e);return n}function $(t,e){if(--e<=0)return t;var n=(t=Object.assign([],t)).length;do{for(var r=0;r<n;r++)t.push(t[r])}while(--e>0);return t}var H,Q=function(){function t(e){r(this,t),this.list=e,this.length=e.length}return u(t,[{key:"setAttribute",value:function(t,e){for(var n=this.list,r=0;r<this.length;r++)n[r].setAttribute(t,e)}},{key:"removeAttribute",value:function(t){for(var e=this.list,n=0;n<this.length;n++)e[n].removeAttribute(t)}},{key:"style",value:function(t,e){for(var n=this.list,r=0;r<this.length;r++)n[r].style[t]=e}}]),t}(),X=/-./g,J=function(t,e){return e.toUpperCase()};function K(t){return"function"==typeof t?t:D}function Z(t){return t?"function"==typeof t?t:Array.isArray(t)?function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_;if(!Array.isArray(t))return e;switch(t.length){case 1:return E(t[0])||e;case 2:return E(t[0],t[1])||e;case 4:return x(t[0],t[1],t[2],t[3])||e}return e}(t,null):function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_;switch(t){case"linear":return _;case"steps":return E(e.steps||1,e.jump||0)||n;case"bezier":case"cubic-bezier":return x(e.x1||0,e.y1||0,e.x2||0,e.y2||0)||n}return n}(t.type,t.value,null):null}function tt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=e.length-1;if(t<=e[0].t)return r?[0,0,e[0].v]:e[0].v;if(t>=e[i].t)return r?[i,1,e[i].v]:e[i].v;var u,o=e[0],a=null;for(u=1;u<=i;u++){if(!(t>e[u].t)){a=e[u];break}o=e[u]}return null==a?r?[i,1,e[i].v]:e[i].v:o.t===a.t?r?[u,1,a.v]:a.v:(t=(t-o.t)/(a.t-o.t),o.e&&(t=o.e(t)),r?[u,t,n(t,o.v,a.v)]:n(t,o.v,a.v))}function et(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return t&&t.length?"function"!=typeof e?null:("function"!=typeof n&&(n=null),function(r){var i=tt(r,t,e);return null!=i&&n&&(i=n(i)),i}):null}function nt(t,e){return t.t-e.t}function rt(t,e,r,i,u){var o,a="@"===r[0],l="#"===r[0],s=H[r],f=D;switch(a?(o=r.substr(1),r=o.replace(X,J)):l&&(r=r.substr(1)),n(s)){case"function":if(f=s(i,u,tt,Z,r,a,e,t),l)return f;break;case"string":f=et(i,K(s));break;case"object":if((f=et(i,K(s.i),s.f))&&"function"==typeof s.u)return s.u(e,f,r,a,t)}return f?function(t,e,n){if(arguments.length>3&&void 0!==arguments[3]&&arguments[3])return t instanceof Q?function(r){return t.style(e,n(r))}:function(r){return t.style[e]=n(r)};if(Array.isArray(e)){var r=e.length;return function(i){var u=n(i);if(null==u)for(var o=0;o<r;o++)t[o].removeAttribute(e);else for(var a=0;a<r;a++)t[a].setAttribute(e,u)}}return function(r){var i=n(r);null==i?t.removeAttribute(e):t.setAttribute(e,i)}}(e,r,f,a):null}function it(t,e,r,i){if(!i||"object"!==n(i))return null;var u=null,o=null;return Array.isArray(i)?o=function(t){if(!t||!t.length)return null;for(var e=0;e<t.length;e++)t[e].e&&(t[e].e=Z(t[e].e));return t.sort(nt)}(i):(o=i.keys,u=i.data||null),o?rt(t,e,r,o,u):null}function ut(t,e,n){if(!n)return null;var r=[];for(var i in n)if(n.hasOwnProperty(i)){var u=it(t,e,i,n[i]);u&&r.push(u)}return r.length?r:null}function ot(t,e){if(!e.settings.duration||e.settings.duration<0)return null;var n,r,i,u,o,a=function(t,e){if(!e)return null;var n=[];if(Array.isArray(e))for(var r=e.length,i=0;i<r;i++){var u=e[i];if(2===u.length){var o=null;if("string"==typeof u[0])o=t.getElementById(u[0]);else if(Array.isArray(u[0])){o=[];for(var a=0;a<u[0].length;a++)if("string"==typeof u[0][a]){var l=t.getElementById(u[0][a]);l&&o.push(l)}o=o.length?1===o.length?o[0]:new Q(o):null}if(o){var s=ut(t,o,u[1]);s&&(n=n.concat(s))}}}else for(var f in e)if(e.hasOwnProperty(f)){var c=t.getElementById(f);if(c){var h=ut(t,c,e[f]);h&&(n=n.concat(h))}}return n.length?n:null}(t,e.elements);return a?(n=a,r=e.settings,i=r.duration,u=n.length,o=null,function(t,e){var a=r.iterations||1/0,l=(r.alternate&&a%2==0)^r.direction>0?i:0,s=t%i,f=1+(t-s)/i;e*=r.direction,r.alternate&&f%2==0&&(e=-e);var c=!1;if(f>a)s=l,c=!0,-1===r.fill&&(s=r.direction>0?0:i);else if(e<0&&(s=i-s),s===o)return!1;o=s;for(var h=0;h<u;h++)n[h](s);return c}):null}function at(t,e){for(var n=e.querySelectorAll("svg"),r=0;r<n.length;r++)if(n[r].id===t.root&&!n[r].svgatorAnimation)return n[r].svgatorAnimation=!0,n[r];return null}function lt(t){var e=function(t){return t.shadowRoot};return document?Array.from(t.querySelectorAll(":not("+["a","area","audio","br","canvas","circle","datalist","embed","g","head","hr","iframe","img","input","link","object","path","polygon","rect","script","source","style","svg","title","track","video"].join()+")")).filter(e).map(e):[]}function st(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=at(t,e);if(r)return r;if(n>=20)return null;for(var i=lt(e),u=0;u<i.length;u++){var o=st(t,i[u],n+1);if(o)return o}return null}function ft(t,e){if(H=e,!t||!t.root||!Array.isArray(t.animations))return null;var n=st(t);if(!n)return null;var r=t.animations.map((function(t){return ot(n,t)})).filter((function(t){return!!t}));return r.length?{svg:n,animations:r,animationSettings:t.animationSettings,options:t.options||void 0}:null}function ct(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"undefined"!=typeof BigInt&&BigInt,i="0x"+(t.replace(/[^0-9a-fA-F]+/g,"")||27);return e&&r&&n.isSafeInteger&&!n.isSafeInteger(+i)?n(r(i))%e+e:+i}function ht(t,e,n){return!t||!n||e>t.length?t:t.substring(0,e)+ht(t.substring(e+1),n,n)}function vt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:27;return!t||t%e?t%e:[0,1].includes(e)?e:vt(t/e,e)}function dt(t,e,n){if(t&&t.length){var r=ct(n),i=vt(r)+5,u=ht(t,vt(r,5),i);return u=u.replace(/\x7c$/g,"==").replace(/\x2f$/g,"="),u=function(t,e,n){var r=+("0x"+t.substring(0,4));t=t.substring(4);for(var i=ct(e,r)%r+n%27,u=[],o=0;o<t.length;o+=2)if("|"!==t[o]){var a=+("0x"+t[o]+t[o+1])-i;u.push(a)}else{var l=+("0x"+t.substring(o+1,o+1+4))-i;o+=3,u.push(l)}return String.fromCharCode.apply(String,u)}(u=(u=atob(u)).replace(/[\x41-\x5A]/g,""),e,r),u=JSON.parse(u)}}var yt=[{key:"alternate",def:!1},{key:"fill",def:1},{key:"iterations",def:0},{key:"direction",def:1},{key:"speed",def:1},{key:"fps",def:100}],gt=function(){function t(e,n){var i=this,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;r(this,t),this._id=0,this._running=!1,this._rollingBack=!1,this._animations=e,this._settings=n,(!u||u<"2022-05-02")&&delete this._settings.speed,yt.forEach((function(t){i._settings[t.key]=i._settings[t.key]||t.def})),this.duration=n.duration,this.offset=n.offset||0,this.rollbackStartOffset=0}return u(t,[{key:"alternate",get:function(){return this._settings.alternate}},{key:"fill",get:function(){return this._settings.fill}},{key:"iterations",get:function(){return this._settings.iterations}},{key:"direction",get:function(){return this._settings.direction}},{key:"speed",get:function(){return this._settings.speed}},{key:"fps",get:function(){return this._settings.fps}},{key:"maxFiniteDuration",get:function(){return this.iterations>0?this.iterations*this.duration:this.duration}},{key:"_apply",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this._animations,r=n.length,i=0,u=0;u<r;u++)e[u]?i++:(e[u]=n[u](t,1),e[u]&&i++);return i}},{key:"_rollback",value:function(t){var e=this,n=1/0,r=null;this.rollbackStartOffset=t,this._rollingBack=!0,this._running=!0;this._id=window.requestAnimationFrame((function i(u){if(e._rollingBack){null==r&&(r=u);var o=Math.round(t-(u-r)*e.speed);if(o>e.duration&&n!==1/0){var a=!!e.alternate&&o/e.duration%2>1,l=o%e.duration;o=(l+=a?e.duration:0)||e.duration}var s=(e.fps?1e3/e.fps:0)*e.speed,f=Math.max(0,o);f<=n-s&&(e.offset=f,n=f,e._apply(f));var c=e.iterations>0&&-1===e.fill&&o>=e.maxFiniteDuration;(o<=0||e.offset<o||c)&&e.stop(),e._id=window.requestAnimationFrame(i)}}))}},{key:"_start",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=-1/0,r=null,i={};this._running=!0;var u=function u(o){null==r&&(r=o);var a=Math.round((o-r)*t.speed+e),l=(t.fps?1e3/t.fps:0)*t.speed;if(a>=n+l&&!t._rollingBack&&(t.offset=a,n=a,t._apply(a,i)===t._animations.length))return void t.pause(!0);t._id=window.requestAnimationFrame(u)};this._id=window.requestAnimationFrame(u)}},{key:"_pause",value:function(){this._id&&window.cancelAnimationFrame(this._id),this._running=!1}},{key:"play",value:function(){if(!this._running)return this._rollingBack?this._rollback(this.offset):this._start(this.offset)}},{key:"stop",value:function(){this._pause(),this.offset=0,this.rollbackStartOffset=0,this._rollingBack=!1,this._apply(0)}},{key:"reachedToEnd",value:function(){return this.iterations>0&&this.offset>=this.iterations*this.duration}},{key:"restart",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.stop(t),this.play(t)}},{key:"pause",value:function(){this._pause()}},{key:"toggle",value:function(){return this._running?this.pause():this.reachedToEnd()?this.restart():this.play()}},{key:"trigger",value:function(t,e){}},{key:"_adjustOffset",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.alternate?2*this.duration:this.duration;if(t){if(!this._rollingBack&&0===this.offset)return void(this.offset=e);this._rollingBack&&(this.offset,this.maxFiniteDuration)}!this._rollingBack||this.rollbackStartOffset<=this.duration?0!==this.iterations&&(this.offset=Math.min(this.offset,this.maxFiniteDuration)):(this.offset=this.rollbackStartOffset-(this.rollbackStartOffset-this.offset)%e,this.rollbackStartOffset=0)}},{key:"reverse",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this._running)return this._adjustOffset(t),this._rollingBack=!this._rollingBack,t&&this.play(!1),void this.trigger("reverse",this.offset);this.pause(!1,!1),this._adjustOffset(),this._rollingBack=!this._rollingBack,this.play(!1),this.trigger("reverse",this.offset)}}],[{key:"build",value:function(t,e){delete t.animationSettings,t.options=dt(t.options,t.root,"91c80d77"),t.animations.map((function(e){e.settings=dt(e.s,t.root,"91c80d77"),delete e.s,t.animationSettings||(t.animationSettings=e.settings)}));var n=t.version;if(!(t=ft(t,e)))return null;var r=t.options||{},i=new this(t.animations,t.animationSettings,n);return{el:t.svg,options:r,player:i}}},{key:"push",value:function(t){return this.build(t)}},{key:"init",value:function(){var t=this,e=window.__SVGATOR_PLAYER__&&window.__SVGATOR_PLAYER__["91c80d77"];Array.isArray(e)&&e.splice(0).forEach((function(e){return t.build(e)}))}}]),t}();function pt(t){return p(t)+""}function mt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return t&&t.length?t.map(pt).join(e):""}function bt(t){return pt(t.x)+","+pt(t.y)}function wt(t){return t?null==t.a||t.a>=1?function(t){if(!t)return"transparent";var e=function(t){return parseInt(t).toString(16).padStart(2,"0")};return function(t){for(var e=[],n="#"===t[0]?e.push("#"):0;n<t.length;n+=2){if(t[n]!==t[n+1])return t;e.push(t[n])}return e.join("")}("#"+e(t.r)+e(t.g)+e(t.b)+(null==t.a||t.a>=1?"":e(255*t.a)))}(t):"rgba("+t.r+","+t.g+","+t.b+","+t.a+")":"transparent"}function kt(t){return t?"url(#"+t+")":"none"}!function(){for(var t=0,e=["ms","moz","webkit","o"],n=0;n<e.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[e[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[n]+"CancelAnimationFrame"]||window[e[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var n=Date.now(),r=Math.max(0,16-(n-t)),i=window.setTimeout((function(){e(n+r)}),r);return t=n+r,i},window.cancelAnimationFrame=window.clearTimeout)}();var _t={f:null,i:G,u:function(t,e){return function(n){var r=e(n);t.setAttribute("rx",pt(r.x)),t.setAttribute("ry",pt(r.y))}}},At={f:null,i:function(t,e,n){return 0===t?e:1===t?n:{width:L(t,e.width,n.width),height:L(t,e.height,n.height)}},u:function(t,e){return function(n){var r=e(n);t.setAttribute("width",pt(r.width)),t.setAttribute("height",pt(r.height))}}};Object.freeze({M:2,L:2,Z:0,H:1,V:1,C:6,Q:4,T:2,S:4,A:7});var xt={},St=null;function Ot(t){var e=function(){if(St)return St;if("object"!==("undefined"==typeof document?"undefined":n(document))||!document.createElementNS)return{};var t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t&&t.style?(t.style.position="absolute",t.style.opacity="0.01",t.style.zIndex="-9999",t.style.left="-9999px",t.style.width="1px",t.style.height="1px",St={svg:t}):{}}().svg;if(!e)return function(t){return null};var r=document.createElementNS(e.namespaceURI,"path");r.setAttributeNS(null,"d",t),r.setAttributeNS(null,"fill","none"),r.setAttributeNS(null,"stroke","none"),e.appendChild(r);var i=r.getTotalLength();return function(t){var e=r.getPointAtLength(i*t);return{x:e.x,y:e.y}}}function Et(t){return xt[t]?xt[t]:xt[t]=Ot(t)}function jt(t,e,n,r){if(!t||!r)return!1;var i=["M",t.x,t.y];if(e&&n&&(i.push("C"),i.push(e.x),i.push(e.y),i.push(n.x),i.push(n.y)),e?!n:n){var u=e||n;i.push("Q"),i.push(u.x),i.push(u.y)}return e||n||i.push("L"),i.push(r.x),i.push(r.y),i.join(" ")}function Mt(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,u=jt(t,e,n,r),o=Et(u);try{return o(i)}catch(t){return null}}function Pt(t,e,n){return t+(e-t)*n}function Bt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i={x:Pt(t.x,e.x,n),y:Pt(t.y,e.y,n)};return r&&(i.a=It(t,e)),i}function It(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}function Tt(t,e,n,r){var i=1-r;return i*i*t+2*i*r*e+r*r*n}function Nt(t,e,n,r){return 2*(1-r)*(e-t)+2*r*(n-e)}function Rt(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],u=Mt(t,e,null,n,r);return u||(u={x:Tt(t.x,e.x,n.x,r),y:Tt(t.y,e.y,n.y,r)}),i&&(u.a=Ft(t,e,n,r)),u}function Ft(t,e,n,r){return Math.atan2(Nt(t.y,e.y,n.y,r),Nt(t.x,e.x,n.x,r))}function Dt(t,e,n,r,i){var u=i*i;return i*u*(r-t+3*(e-n))+3*u*(t+n-2*e)+3*i*(e-t)+t}function Ct(t,e,n,r,i){var u=1-i;return 3*(u*u*(e-t)+2*u*i*(n-e)+i*i*(r-n))}function Lt(t,e,n,r,i){var u=arguments.length>5&&void 0!==arguments[5]&&arguments[5],o=Mt(t,e,n,r,i);return o||(o={x:Dt(t.x,e.x,n.x,r.x,i),y:Dt(t.y,e.y,n.y,r.y,i)}),u&&(o.a=qt(t,e,n,r,i)),o}function qt(t,e,n,r,i){return Math.atan2(Ct(t.y,e.y,n.y,r.y,i),Ct(t.x,e.x,n.x,r.x,i))}function Vt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(zt(e)){if(Yt(n))return Rt(e,n.start,n,t,r)}else if(zt(n)){if(Ut(e))return Rt(e,e.end,n,t,r)}else{if(Ut(e))return Yt(n)?Lt(e,e.end,n.start,n,t,r):Rt(e,e.end,n,t,r);if(Yt(n))return Rt(e,n.start,n,t,r)}return Bt(e,n,t,r)}function Gt(t,e,n){var r=Vt(t,e,n,!0);return r.a=k(function(t){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?t+Math.PI:t}(r.a)),r}function zt(t){return!t.type||"corner"===t.type}function Yt(t){return null!=t.start&&!zt(t)}function Ut(t){return null!=t.end&&!zt(t)}var Wt=new R;var $t={f:function(t){return t?t.join(" "):""},i:function(t,e,r){if(0===t)return e;if(1===t)return r;var i=e.length;if(i!==r.length)return D(t,e,r);for(var u,o=new Array(i),a=0;a<i;a++){if((u=n(e[a]))!==n(r[a]))return D(t,e,r);if("number"===u)o[a]=C(t,e[a],r[a]);else{if(e[a]!==r[a])return D(t,e,r);o[a]=e[a]}}return o}},Ht={f:null,i:U,u:function(t,e){return function(n){var r=e(n);t.setAttribute("x1",pt(r[0])),t.setAttribute("y1",pt(r[1])),t.setAttribute("x2",pt(r[2])),t.setAttribute("y2",pt(r[3]))}}},Qt={f:pt,i:C},Xt={f:pt,i:q},Jt={f:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return t&&t.length>0&&(t=t.map((function(t){return p(t,4)}))),mt(t,e)},i:function(t,e,n){var r,i,u,o=e.length,a=n.length;if(o!==a)if(0===o)e=W(o=a,0);else if(0===a)a=o,n=W(o,0);else{var l=(u=(r=o)*(i=a)/function(t,e){for(var n;e;)n=e,e=t%e,t=n;return t||1}(r,i))<0?-u:u;e=$(e,Math.floor(l/o)),n=$(n,Math.floor(l/a)),o=a=l}for(var s=[],f=0;f<o;f++)s.push(p(L(t,e[f],n[f])));return s}};function Kt(t,e,n){return t.map((function(t){return function(t,e,n){var r=t.v;if(!r||"g"!==r.t||r.s||!r.v||!r.r)return t;var i=n.getElementById(r.r),u=i&&i.querySelectorAll("stop")||[];return r.s=r.v.map((function(t,e){var n=u[e]&&u[e].getAttribute("offset");return{c:t,o:n=p(parseInt(n)/100)}})),delete r.v,t}(t,0,n)}))}var Zt={gt:"gradientTransform",c:{x:"cx",y:"cy"},rd:"r",f:{x:"x1",y:"y1"},to:{x:"x2",y:"y2"}};function te(t,e,r,i,u,o,a,l){return Kt(t,0,l),e=function(t,e,n){for(var r,i,u,o=t.length-1,a={},l=0;l<=o;l++)(r=t[l]).e&&(r.e=e(r.e)),r.v&&"g"===(i=r.v).t&&i.r&&(u=n.getElementById(i.r))&&(a[i.r]={e:u,s:u.querySelectorAll("stop")});return a}(t,i,l),function(i){var u=r(i,t,ee);if(!u)return"none";if("c"===u.t)return wt(u.v);if("g"===u.t){if(!e[u.r])return kt(u.r);var o=e[u.r];return function(t,e){for(var n=t.s,r=n.length;r<e.length;r++){var i=n[n.length-1].cloneNode();i.id=ie(i.id),t.e.appendChild(i),n=t.s=t.e.querySelectorAll("stop")}for(var u=0,o=n.length,a=e.length-1;u<o;u++)n[u].setAttribute("stop-color",wt(e[Math.min(u,a)].c)),n[u].setAttribute("offset",e[Math.min(u,a)].o)}(o,u.s),Object.keys(Zt).forEach((function(t){if(void 0!==u[t])if("object"!==n(Zt[t])){var e,r="gt"===t?(e=u[t],Array.isArray(e)?"matrix("+e.join(" ")+")":""):u[t],i=Zt[t];o.e.setAttribute(i,r)}else Object.keys(Zt[t]).forEach((function(e){if(void 0!==u[t][e]){var n=u[t][e],r=Zt[t][e];o.e.setAttribute(r,n)}}))})),kt(u.r)}return"none"}}function ee(t,n,r){if(0===t)return n;if(1===t)return r;if(n&&r){var i=n.t;if(i===r.t)switch(n.t){case"c":return{t:i,v:Y(t,n.v,r.v)};case"g":if(n.r===r.r){var u={t:i,s:ne(t,n.s,r.s),r:n.r};return n.gt&&r.gt&&(u.gt=U(t,n.gt,r.gt)),n.c?(u.c=V(t,n.c,r.c),u.rd=L(t,n.rd,r.rd)):n.f&&(u.f=V(t,n.f,r.f),u.to=V(t,n.to,r.to)),u}}if("c"===n.t&&"g"===r.t||"c"===r.t&&"g"===n.t){var o="c"===n.t?n:r,a="g"===n.t?e({},n):e({},r),l=a.s.map((function(t){return{c:o.v,o:t.o}}));return a.s="c"===n.t?ne(t,l,a.s):ne(t,a.s,l),a}}return D(t,n,r)}function ne(t,e,n){if(e.length===n.length)return e.map((function(e,r){return re(t,e,n[r])}));for(var r=Math.max(e.length,n.length),i=[],u=0;u<r;u++){var o=re(t,e[Math.min(u,e.length-1)],n[Math.min(u,n.length-1)]);i.push(o)}return i}function re(t,e,n){return{o:q(t,e.o,n.o||0),c:Y(t,e.c,n.c||{})}}function ie(t){return t.replace(/-fill-([0-9]+)$/,(function(t,e){return"-fill-"+(+e+1)}))}function ue(t,e,n){return 0===t?e:1===t?n:{blur:G(t,e.blur,n.blur),offset:V(t,e.offset,n.offset),color:Y(t,e.color,n.color)}}var oe={blur:G,brightness:L,contrast:L,"drop-shadow":ue,"inner-shadow":ue,grayscale:L,"hue-rotate":C,invert:L,opacity:L,saturate:L,sepia:L};function ae(t,e,n){if(0===t)return e;if(1===t)return n;var r=e.length;if(r!==n.length)return D(t,e,n);for(var i,u=[],o=0;o<r;o++){if(e[o].type!==n[o].type)return e;if(!(i=oe[e[o].type]))return D(t,e,n);u.push({type:e.type,value:i(t,e[o].value,n[o].value)})}return u}var le={blur:function(t){return t?function(e){t.setAttribute("stdDeviation",bt(e))}:null},brightness:function(t,e,n){return(t=fe(n,e))?function(e){e=pt(e),t.map((function(t){return t.setAttribute("slope",e)}))}:null},contrast:function(t,e,n){return(t=fe(n,e))?function(e){var n=pt((1-e)/2);e=pt(e),t.map((function(t){t.setAttribute("slope",e),t.setAttribute("intercept",n)}))}:null},"drop-shadow":function(t,e,n){var r=n.getElementById(e+"-blur");if(!r)return null;var i=n.getElementById(e+"-offset");if(!i)return null;var u=n.getElementById(e+"-flood");return u?function(t){r.setAttribute("stdDeviation",bt(t.blur)),i.setAttribute("dx",pt(t.offset.x)),i.setAttribute("dy",pt(t.offset.y)),u.setAttribute("flood-color",wt(t.color))}:null},"inner-shadow":function(t,e,n){var r=n.getElementById(e+"-blur");if(!r)return null;var i=n.getElementById(e+"-offset");if(!i)return null;var u=n.getElementById(e+"-color-matrix");return u?function(t){r.setAttribute("stdDeviation",bt(t.blur)),i.setAttribute("dx",pt(t.offset.x)),i.setAttribute("dy",pt(t.offset.y));var e=[0,0,0,0,t.color.r/255,0,0,0,0,t.color.g/255,0,0,0,0,t.color.b/255,0,0,0,t.color.a,0];u.setAttribute("values",mt(e))}:null},grayscale:function(t){return t?function(e){t.setAttribute("values",mt(function(t){return[.2126+.7874*(t=1-t),.7152-.7152*t,.0722-.0722*t,0,0,.2126-.2126*t,.7152+.2848*t,.0722-.0722*t,0,0,.2126-.2126*t,.7152-.7152*t,.0722+.9278*t,0,0,0,0,0,1,0]}(e)))}:null},"hue-rotate":function(t){return t?function(e){return t.setAttribute("values",pt(e))}:null},invert:function(t,e,n){return(t=fe(n,e))?function(e){e=pt(e)+" "+pt(1-e),t.map((function(t){return t.setAttribute("tableValues",e)}))}:null},opacity:function(t,e,n){return(t=n.getElementById(e+"-A"))?function(e){return t.setAttribute("tableValues","0 "+pt(e))}:null},saturate:function(t){return t?function(e){return t.setAttribute("values",pt(e))}:null},sepia:function(t){return t?function(e){return t.setAttribute("values",mt(function(t){return[.393+.607*(t=1-t),.769-.769*t,.189-.189*t,0,0,.349-.349*t,.686+.314*t,.168-.168*t,0,0,.272-.272*t,.534-.534*t,.131+.869*t,0,0,0,0,0,1,0]}(e)))}:null}};var se=["R","G","B"];function fe(t,e){var n=se.map((function(n){return t.getElementById(e+"-"+n)||null}));return-1!==n.indexOf(null)?null:n}var ce={fill:te,"fill-opacity":Xt,stroke:te,"stroke-opacity":Xt,"stroke-width":Qt,"stroke-dashoffset":{f:pt,i:C},"stroke-dasharray":Jt,opacity:Xt,transform:function(t,e,r,i){if(!(t=function(t,e){if(!t||"object"!==n(t))return null;var r=!1;for(var i in t)t.hasOwnProperty(i)&&(t[i]&&t[i].length?(t[i].forEach((function(t){t.e&&(t.e=e(t.e))})),r=!0):delete t[i]);return r?t:null}(t,i)))return null;var u=function(n,i,u){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return t[n]?r(i,t[n],u):e&&e[n]?e[n]:o};return e&&e.a&&t.o?function(e){var n=r(e,t.o,Gt);return Wt.recomposeSelf(n,u("r",e,C,0)+n.a,u("k",e,V),u("s",e,V),u("t",e,V)).toString()}:function(t){return Wt.recomposeSelf(u("o",t,Vt,null),u("r",t,C,0),u("k",t,V),u("s",t,V),u("t",t,V)).toString()}},"#filter":function(t,e,n,r,i,u,o,a){if(!e.items||!t||!t.length)return null;var l=function(t,e){var n=(t=t.map((function(t){return t&&le[t[0]]?(e.getElementById(t[1]),le[t[0]](e.getElementById(t[1]),t[1],e)):null}))).length;return function(e){for(var r=0;r<n;r++)t[r]&&t[r](e[r].value)}}(e.items,a);return l?(t=function(t,e){return t.map((function(t){return t.e=e(t.e),t}))}(t,r),function(e){l(n(e,t,ae))}):null},"#line":Ht,points:{f:mt,i:U},d:$t,r:Qt,"#size":At,"#radius":_t,_:function(t,e){if(Array.isArray(t))for(var n=0;n<t.length;n++)this[t[n]]=e;else this[t]=e}},he={currentTime:"offset",duration:"duration",hasEnded:function(){return this.reachedToEnd()},isAlternate:"alternate",isPlaying:"_running",isRollingBack:"_rollingBack",state:function(t,e){return e.isPlaying?e.isRollingBack?"rollback":"playing":e.hasEnded?"ended":"paused"},totalTime:"maxFiniteDuration",iterations:"iterations",direction:"direction",fill:"fill",isReversed:function(t,e){return-1===e.direction},isBackwards:function(t,e){return-1===e.fill},isInfinite:function(t,e){return 0===e.iterations},speed:"speed",fps:"fps"},ve={destruct:"destruct",pause:"pause",play:function(t,e){return de(t,e.hasEnded?"restart":"play",e)},restart:"restart",reverse:function(t,e){return de(t,"reverse",e,[!0])},seek:"seek",seekBy:"seekBy",seekTo:"seekTo",stop:"stop",toggle:"toggle",togglePlay:"toggle",set:"set"};function de(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return function(){var i,u=Array.prototype.slice.call(arguments);return u.unshift.apply(u,v(r)),(i=t[e]).call.apply(i,[t].concat(v(u))),n}}var ye=function t(e){r(this,t);var n={},i=["on","off"],u={get:function(t,e,r){return he[e]?"function"==typeof he[e]?he[e].call(t,t,r):t[he[e]]:ve[e]?"function"==typeof ve[e]?ve[e].call(t,t,r):de(t,ve[e],r):-1!==i.indexOf(e)?n[e]:"ready"===e?function(t){return t&&t.call(r,r),r}:void 0},set:function(t,e,r){return-1!==i.indexOf(e)&&(n[e]=r)},ownKeys:function(t){return Object.keys(he)},has:function(t,e){return void 0!==he[e]}};if("function"==typeof Proxy)return new Proxy(e,u);var o=Object.keys(he).concat(Object.keys(ve)).concat(i),a={};return o.forEach((function(t){var n={enumerable:!1,configurable:!1,get:function(){return u.get(e,t,a)}};-1!==i.indexOf(t)&&(n.set=function(n){return u.set(e,t,n)}),Object.defineProperty(a,t,n)})),a};function ge(t){t||(t=this);var e={};this.on=function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return"function"==typeof n&&(t.split(/[, ]+/g).forEach((function(t){return e[t]=e[t]||[],r?e[t].unshift(n):e[t].push(n)})),!0)},this.off=function(t,n){for(var r in e)if(e.hasOwnProperty(r)&&r.substr(0,t.length)===t)if(n)for(var i=0;i<e[r].length;i++)e[r][i]===n&&(e[r][i]=null);else e[r]=null},this.trigger=function(){var n,r=Array.prototype.slice.call(arguments),i=r[0],u=r.slice(1);t:for(var o in e)if(e.hasOwnProperty(o)&&e[o]&&(o===i||o.substr(0,i.length+1)===i+"."))for(var a=0;a<(e[o]||[]).length;a++)if(e[o][a]&&!1===(n=e[o][a].apply(t,u)))break t;return n}}var pe=function(){function t(e,n,i){r(this,t);var u=function(t){var e,n,r,i=t&&1===(null===(e=t.ownerDocument)||void 0===e||null===(n=e.childNodes)||void 0===n?void 0:n.length)&&window.parent!==window,u={el:t,window:window};if(!i)return u;try{r=window.parent.document}catch(t){return u}return u.window=window.parent,u.el=Array.from(r.querySelectorAll("iframe,object")).filter((function(t){return t.contentWindow===window}))[0]||u.el,u}(e);n=Math.max(1,n||1),n=Math.min(n,100),this.el=u.el,this._handlers=[],this.onThresholdChange=i&&i.call?i:function(){},this.thresholdPercent=n||1,this.currentVisibility=null,this.visibilityCalculator=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n,r=!1,i=null,u=function(){for(var u=0,o=n.innerHeight,a=0,l=n.innerWidth,s=t.parentNode;s instanceof Element;){var f=n.getComputedStyle(s);if("visible"!==f.overflowY||"visible"!==f.overflowX){var c=s.getBoundingClientRect();"visible"!==f.overflowY&&(u=Math.max(u,c.top),o=Math.min(o,c.bottom)),"visible"!==f.overflowX&&(a=Math.max(a,c.left),l=Math.min(l,c.right))}if(s===s.parentNode)break;s=s.parentNode}r=!1;var h=t.getBoundingClientRect(),v=Math.min(h.height,Math.max(0,u-h.top)),d=Math.min(h.height,Math.max(0,h.bottom-o)),y=Math.min(h.width,Math.max(0,a-h.left)),g=Math.min(h.width,Math.max(0,h.right-l)),p=(h.height-v-d)/h.height,m=(h.width-y-g)/h.width,b=Math.round(p*m*100);null!==i&&i===b||(i=b,e(b))};return function(t){r&&clearTimeout(r),r=setTimeout((function(){return u()}),100)}}(this.el,this.onVisibilityUpdate.bind(this),u.window),this.bindScrollWatchers(),this.visibilityCalculator()}return u(t,[{key:"bindScrollWatchers",value:function(){for(var t=this.el.parentNode;t&&(this._handlers.push({element:t,event:"scroll",handler:this.visibilityCalculator}),t.addEventListener("scroll",this.visibilityCalculator),t!==t.parentNode&&t!==document);)t=t.parentNode}},{key:"onVisibilityUpdate",value:function(t){var e=this.currentVisibility>=this.thresholdPercent,n=t>=this.thresholdPercent;if(null===this.currentVisibility||e!==n)return this.currentVisibility=t,void this.onThresholdChange(n);this.currentVisibility=t}},{key:"destruct",value:function(){this._handlers.forEach((function(t){t.element.removeEventListener(t.event,t.handler)}))}}]),t}(),me=function(){function t(){r(this,t)}return u(t,null,[{key:"adjustLink",value:function(t){var e,n,r=t&&1===(null===(e=t.ownerDocument)||void 0===e||null===(n=e.childNodes)||void 0===n?void 0:n.length)&&window.parent!==window,i=null==t?void 0:t.firstElementChild;r&&i&&"a"===i.tagName&&!i.getAttribute("target")&&i.setAttributeNS(null,"target","_parent")}},{key:"autoPlay",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if("click"===n.start){var i=function(){switch(n.click){case"freeze":return!t._running&&t.reachedToEnd()?t.restart():t.toggle();case"restart":return t.offset>0?t.restart():t.play();case"reverse":return t._running?t.reverse():t.reachedToEnd()?1===t.fill?t.reverse(!0):t.restart():t.play();case"none":default:if(t._running)return;return t.reachedToEnd()?t.restart():t.play()}};return r.push({element:e,event:"click",handler:i}),void e.addEventListener("click",i)}if("hover"===n.start){var u=function(){return t.reachedToEnd()?t.restart():t._rollingBack?t.reverse():t.play()};r.push({element:e,event:"mouseenter",handler:u}),e.addEventListener("mouseenter",u);var o=function(){switch(n.hover){case"freeze":return t.pause();case"reset":return t.stop();case"reverse":if(t.reverse(),t._running)return;return t.play();case"none":default:return}};return r.push({element:e,event:"mouseleave",handler:o}),void e.addEventListener("mouseleave",o)}if("scroll"!==n.start)"programmatic"!==n.start&&t.play();else{var a=new pe(e,n.scroll||25,(function(e){e?t.reachedToEnd()?t.restart():t.play():t.pause()}));r.push({callback:function(){return a.destruct()}})}}}]),t}(),be=!0,we=["iterations","speed","fps","direction","fill","alternate"],ke=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}(o,t);var e,n,i=(e=o,n=s(),function(){var t,r=a(e);if(n){var i=a(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c(this,t)});function o(t,e){var n,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return r(this,o),(n=i.call(this,t,e,u))._handlers=[],n}return u(o,[{key:"play",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:be,e=h(a(o.prototype),"play",this).call(this);return t===be&&this.trigger("play",this.offset),e}},{key:"pause",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:be,n=h(a(o.prototype),"pause",this).call(this);return e===be&&this.trigger(t?"end":"pause",this.offset),n}},{key:"restart",value:function(){var t=h(a(o.prototype),"restart",this).call(this,!1);return this.trigger("restart",this.offset),t}},{key:"stop",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:be,e=h(a(o.prototype),"stop",this).call(this);return t===be&&this.trigger("stop",this.offset),e}},{key:"_apply",value:function(t){var e=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:be,r=h(a(o.prototype),"_apply",this).call(this,t);if(n===be){var i=function(){return e.trigger("keyframe",t)};window.requestAnimationFrame(i)}return r}},{key:"seekTo",value:function(t){var e,n,r,i=this._running;i&&this.pause(!1,!1),this.offset=this.iterations>0?(e=t,n=0,r=this.maxFiniteDuration,e<n?n:e>r?r:e):Math.max(t,0),this._apply(this.offset),i&&this.play(!1)}},{key:"seek",value:function(t){return this.seekTo(Math.round(t/100*this.maxFiniteDuration))}},{key:"seekBy",value:function(t){return this.seekTo(this.offset+t)}},{key:"set",value:function(t,e){if(we.includes(t)){var n=this._running;n&&this.pause(!1,!1),this._settings[t]=e,n?this.play(!1):this._apply(this.offset,{},!1)}}},{key:"destruct",value:function(){var t=this;this.stop(),this._handlers.forEach((function(t){t.element?t.element.removeEventListener(t.event,t.handler):t.callback&&t.callback.call&&t.callback.call()}));var e=function(){},n=Object.getOwnPropertyNames(Object.getPrototypeOf(this));n.push.apply(n,v(Object.getOwnPropertyNames(this))),n.forEach((function(n){"function"==typeof t[n]?t[n]=e:delete t[n]}))}}],[{key:"build",value:function(t){var e=h(a(o),"build",this).call(this,t,ce);if(!e)return null;var n=e.el,r=e.options,i=e.player,u=new ye(i),l=new ge(u);u.on=l.on,u.off=l.off,i.trigger=l.trigger;var s=n.svgatorPlayer&&n.svgatorPlayer.ready&&n.svgatorPlayer.ready.call&&n.svgatorPlayer.ready.call();n.svgatorPlayer=u,me.adjustLink(n),me.autoPlay(i,n,r,i._handlers),function(t,e,n){var r;"function"==typeof Event?r=new Event("ready"):(r=document.createEvent("Event")).initEvent("ready",!0,!0);if(t.dispatchEvent(r),!n||!n.length)return;n.forEach((function(t){return e.ready(t)}))}(n,n.svgatorPlayer,s)}}]),o}(gt);return ke.init(),ke})); + ;(function (s, i, o, w, d, a, b) { + ;(a = + Array.from(d.querySelectorAll('svg#' + i.root)).filter( + (n) => !n.svgatorPlayer, + )[0] || {}).svgatorPlayer = { + ready: (function (a) { + b = [] + return function (c) { + return c ? (b.push(c), a.svgatorPlayer) : b + } + })(a), + } + w[o] = w[o] || {} + w[o][s] = w[o][s] || [] + w[o][s].push(i) + })( + '91c80d77', + { + root: 'eyzGY9baL4Z1', + version: '2024-09-05', + animations: [ + { + elements: { + eyzGY9baL4Z7: { + transform: { + data: { t: { x: -21.5, y: -21.5 } }, + keys: { + o: [ + { t: 0, v: { x: 21.5, y: 21.5, type: 'corner' } }, + { t: 290, v: { x: 21.5, y: 22.360702, type: 'corner' } }, + { t: 600, v: { x: 21.5, y: 21.5, type: 'corner' } }, + ], + }, + }, + }, + eyzGY9baL4Z9: { + 'stroke-dashoffset': [ + { t: 0, v: 0 }, + { t: 300, v: 6 }, + { t: 600, v: 0 }, + ], + }, + eyzGY9baL4Z13: { + 'stroke-dashoffset': [ + { t: 0, v: 0 }, + { t: 300, v: 4 }, + { t: 600, v: 0 }, + ], + }, + eyzGY9baL4Z15: { + 'stroke-dashoffset': [ + { t: 0, v: 0 }, + { t: 300, v: 2 }, + { t: 600, v: 0 }, + ], + }, + }, + s: 'MDRA1YzllNDVNODDc5ODk1ODQ5DNzhjOTI5MTQS1NWQ1OTUzVTKUzNGY0NTg3OAGM5NTg4ODY5WNzhjOTI5MTQV1NWQ1NDRmNDVU4Yzk3ODg5NETg0OTc4YzkyLOTE5NjQ1NWQG1NDRmNDU4OTOhjOGY4ZjQ1NSWQ1NDRmNDU4ONDhmTjk3ODgP5NTkxODQ5NzPg4NDU1ZDg5OGDQ4Zjk2ODg0XZjQ1OTY5M0QY4ODg4ODc0NTOVkNTQ0ZjQ1OEDk5Mzk2NDVOTNWQ1NDUzNTNJhMA|', + }, + ], + options: + 'MDDAyMjlhNDE5MPkM5MzgwOTE5JMzQxNTlFNDES4MjhiODhFODII4YTQxNGJQNADFMODI4Yjg4YODI4YTQxNTkP0MTg1OTE4NDGg0RTk5ODQ0MXTlj', + }, + '__SVGATOR_PLAYER__', + window, + document, + ) + }, []) + return <Svg /> +} diff --git a/apps/service-portal/src/components/AnimatedIcon/Cellular.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Cellular.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Cellular.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Cellular.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/FileTrayFull.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/FileTrayFull.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/FileTrayFull.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/FileTrayFull.jsx diff --git a/apps/portals/my-pages/src/components/AnimatedIcon/Gavel.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Gavel.jsx new file mode 100644 index 000000000000..1ddaacccbf07 --- /dev/null +++ b/apps/portals/my-pages/src/components/AnimatedIcon/Gavel.jsx @@ -0,0 +1,72 @@ +/* eslint-disable */ + +import { useEffect } from 'react' +import { ReactComponent as Svg } from '../../assets/icons/sidebar/gavel.svg' + +export default function Gavel() { + useEffect(() => { + // prettier-ignore + !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof __SVGATOR_DEFINE__&&__SVGATOR_DEFINE__.amd?__SVGATOR_DEFINE__(e):((t="undefined"!=typeof globalThis?globalThis:t||self).__SVGATOR_PLAYER__=t.__SVGATOR_PLAYER__||{},t.__SVGATOR_PLAYER__["91c80d77"]=e())}(this,(function(){"use strict";function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function e(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function u(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function f(t,e,n){return(f=s()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&l(i,n.prototype),i}).apply(null,arguments)}function c(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function h(t,e,n){return(h="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=a(t)););return t}(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}function v(t){return function(t){if(Array.isArray(t))return d(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return d(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function y(t,e,n){if(Number.isInteger(t))return t;var r=Math.pow(10,e);return Math[n]((+t+Number.EPSILON)*r)/r}Number.isInteger||(Number.isInteger=function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t}),Number.EPSILON||(Number.EPSILON=2220446049250313e-31);var g=p(Math.pow(10,-6));function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return y(t,e,"round")}function m(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g;return Math.abs(t-e)<n}p(Math.pow(10,-2)),p(Math.pow(10,-4));var b=Math.PI/180;function w(t){return t*b}function k(t){return t/b}function _(t){return t}function A(t,e,n){var r=1-n;return 3*n*r*(t*r+e*n)+n*n*n}function x(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return t<0||t>1||n<0||n>1?null:m(t,e)&&m(n,r)?_:function(i){if(i<=0)return t>0?i*e/t:0===e&&n>0?i*r/n:0;if(i>=1)return n<1?1+(i-1)*(r-1)/(n-1):1===n&&t<1?1+(i-1)*(e-1)/(t-1):1;for(var u,o=0,a=1;o<a;){var l=A(t,n,u=(o+a)/2);if(m(i,l))break;l<i?o=u:a=u}return A(e,r,u)}}function S(){return 1}function O(t){return 1===t?1:0}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(1===t){if(0===e)return O;if(1===e)return S}var n=1/t;return function(t){return t>=1?1:(t+=e*n)-t%n}}var j=Math.sin,M=Math.cos,P=Math.acos,B=Math.asin,I=Math.tan,T=Math.atan2,N=Math.sqrt,R=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;r(this,t),this.m=[e,n,i,u,o,a],this.i=null,this.w=null,this.s=null}return u(t,[{key:"determinant",get:function(){var t=this.m;return t[0]*t[3]-t[1]*t[2]}},{key:"isIdentity",get:function(){if(null===this.i){var t=this.m;this.i=1===t[0]&&0===t[1]&&0===t[2]&&1===t[3]&&0===t[4]&&0===t[5]}return this.i}},{key:"point",value:function(t,e){var n=this.m;return{x:n[0]*t+n[2]*e+n[4],y:n[1]*t+n[3]*e+n[5]}}},{key:"translateSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t&&!e)return this;var n=this.m;return n[4]+=n[0]*t+n[2]*e,n[5]+=n[1]*t+n[3]*e,this.w=this.s=this.i=null,this}},{key:"rotateSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(t%=360){t=w(t);var e=j(t),n=M(t),r=this.m,i=r[0],u=r[1];r[0]=i*n+r[2]*e,r[1]=u*n+r[3]*e,r[2]=r[2]*n-i*e,r[3]=r[3]*n-u*e,this.w=this.s=this.i=null}return this}},{key:"scaleSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(1!==t||1!==e){var n=this.m;n[0]*=t,n[1]*=t,n[2]*=e,n[3]*=e,this.w=this.s=this.i=null}return this}},{key:"skewSelf",value:function(t,e){if(e%=360,(t%=360)||e){var n=this.m,r=n[0],i=n[1],u=n[2],o=n[3];t&&(t=I(w(t)),n[2]+=r*t,n[3]+=i*t),e&&(e=I(w(e)),n[0]+=u*e,n[1]+=o*e),this.w=this.s=this.i=null}return this}},{key:"resetSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,u=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=this.m;return o[0]=t,o[1]=e,o[2]=n,o[3]=r,o[4]=i,o[5]=u,this.w=this.s=this.i=null,this}},{key:"recomposeSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;return this.isIdentity||this.resetSelf(),t&&(t.x||t.y)&&this.translateSelf(t.x,t.y),e&&this.rotateSelf(e),n&&(n.x&&this.skewSelf(n.x,0),n.y&&this.skewSelf(0,n.y)),!r||1===r.x&&1===r.y||this.scaleSelf(r.x,r.y),i&&(i.x||i.y)&&this.translateSelf(i.x,i.y),this}},{key:"decompose",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.m,r=n[0]*n[0]+n[1]*n[1],i=[[n[0],n[1]],[n[2],n[3]]],u=N(r);if(0===u)return{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:0,y:0},skew:{x:0,y:0},rotate:0};i[0][0]/=u,i[0][1]/=u;var o=n[0]*n[3]-n[1]*n[2]<0;o&&(u=-u);var a=i[0][0]*i[1][0]+i[0][1]*i[1][1];i[1][0]-=i[0][0]*a,i[1][1]-=i[0][1]*a;var l,s=N(i[1][0]*i[1][0]+i[1][1]*i[1][1]);return 0===s?{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:p(u),y:0},skew:{x:0,y:0},rotate:0}:(i[1][0]/=s,i[1][1]/=s,a/=s,i[1][1]<0?(l=k(P(i[1][1])),i[0][1]<0&&(l=360-l)):l=k(B(i[0][1])),o&&(l=-l),a=k(T(a,N(i[0][0]*i[0][0]+i[0][1]*i[0][1]))),o&&(a=-a),{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:p(u),y:p(s)},skew:{x:p(a),y:0},rotate:p(l)})}},{key:"multiply",value:function(t){return this.clone().multiplySelf(t)}},{key:"preMultiply",value:function(t){return t.multiply(this)}},{key:"multiplySelf",value:function(t){var e=F(this.m,t.m),n=e.a,r=e.b,i=e.c,u=e.d,o=e.tx,a=e.ty;return this.resetSelf(n,r,i,u,o,a),this}},{key:"preMultiplySelf",value:function(t){var e=F(t.m,this.m),n=e.a,r=e.b,i=e.c,u=e.d,o=e.tx,a=e.ty;return this.resetSelf(n,r,i,u,o,a),this}},{key:"clone",value:function(){var t=this.m;return new this.constructor(t[0],t[1],t[2],t[3],t[4],t[5])}},{key:"toString",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:" ";if(null===this.s){var e=this.m.map((function(t){return p(t)}));1===e[0]&&0===e[1]&&0===e[2]&&1===e[3]?this.s="translate("+e[4]+t+e[5]+")":this.s="matrix("+e.join(t)+")"}return this.s}}],[{key:"create",value:function(t){return t?Array.isArray(t)?f(this,v(t)):t instanceof this?t.clone():(new this).recomposeSelf(t.origin,t.rotate,t.skew,t.scale,t.translate):new this}}]),t}();function F(t,e){return{a:t[0]*e[0]+t[2]*e[1],b:t[1]*e[0]+t[3]*e[1],c:t[0]*e[2]+t[2]*e[3],d:t[1]*e[2]+t[3]*e[3],tx:t[0]*e[4]+t[2]*e[5]+t[4],ty:t[1]*e[4]+t[3]*e[5]+t[5]}}function D(t,e,n){return t>=.5?n:e}function C(t,e,n){return 0===t||e===n?e:t*(n-e)+e}function L(t,e,n){var r=C(t,e,n);return r<=0?0:r}function q(t,e,n){var r=C(t,e,n);return r<=0?0:r>=1?1:r}function V(t,e,n){return 0===t?e:1===t?n:{x:C(t,e.x,n.x),y:C(t,e.y,n.y)}}function G(t,e,n){return 0===t?e:1===t?n:{x:L(t,e.x,n.x),y:L(t,e.y,n.y)}}function z(t,e,n){var r=function(t,e,n){return Math.round(C(t,e,n))}(t,e,n);return r<=0?0:r>=255?255:r}function Y(t,e,n){return 0===t?e:1===t?n:{r:z(t,e.r,n.r),g:z(t,e.g,n.g),b:z(t,e.b,n.b),a:C(t,null==e.a?1:e.a,null==n.a?1:n.a)}}function U(t,e,n){var r=e.length;if(r!==n.length)return D(t,e,n);for(var i=new Array(r),u=0;u<r;u++)i[u]=C(t,e[u],n[u]);return i}function W(t,e){for(var n=[],r=0;r<t;r++)n.push(e);return n}function $(t,e){if(--e<=0)return t;var n=(t=Object.assign([],t)).length;do{for(var r=0;r<n;r++)t.push(t[r])}while(--e>0);return t}var H,Q=function(){function t(e){r(this,t),this.list=e,this.length=e.length}return u(t,[{key:"setAttribute",value:function(t,e){for(var n=this.list,r=0;r<this.length;r++)n[r].setAttribute(t,e)}},{key:"removeAttribute",value:function(t){for(var e=this.list,n=0;n<this.length;n++)e[n].removeAttribute(t)}},{key:"style",value:function(t,e){for(var n=this.list,r=0;r<this.length;r++)n[r].style[t]=e}}]),t}(),X=/-./g,J=function(t,e){return e.toUpperCase()};function K(t){return"function"==typeof t?t:D}function Z(t){return t?"function"==typeof t?t:Array.isArray(t)?function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_;if(!Array.isArray(t))return e;switch(t.length){case 1:return E(t[0])||e;case 2:return E(t[0],t[1])||e;case 4:return x(t[0],t[1],t[2],t[3])||e}return e}(t,null):function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_;switch(t){case"linear":return _;case"steps":return E(e.steps||1,e.jump||0)||n;case"bezier":case"cubic-bezier":return x(e.x1||0,e.y1||0,e.x2||0,e.y2||0)||n}return n}(t.type,t.value,null):null}function tt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=e.length-1;if(t<=e[0].t)return r?[0,0,e[0].v]:e[0].v;if(t>=e[i].t)return r?[i,1,e[i].v]:e[i].v;var u,o=e[0],a=null;for(u=1;u<=i;u++){if(!(t>e[u].t)){a=e[u];break}o=e[u]}return null==a?r?[i,1,e[i].v]:e[i].v:o.t===a.t?r?[u,1,a.v]:a.v:(t=(t-o.t)/(a.t-o.t),o.e&&(t=o.e(t)),r?[u,t,n(t,o.v,a.v)]:n(t,o.v,a.v))}function et(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return t&&t.length?"function"!=typeof e?null:("function"!=typeof n&&(n=null),function(r){var i=tt(r,t,e);return null!=i&&n&&(i=n(i)),i}):null}function nt(t,e){return t.t-e.t}function rt(t,e,r,i,u){var o,a="@"===r[0],l="#"===r[0],s=H[r],f=D;switch(a?(o=r.substr(1),r=o.replace(X,J)):l&&(r=r.substr(1)),n(s)){case"function":if(f=s(i,u,tt,Z,r,a,e,t),l)return f;break;case"string":f=et(i,K(s));break;case"object":if((f=et(i,K(s.i),s.f))&&"function"==typeof s.u)return s.u(e,f,r,a,t)}return f?function(t,e,n){if(arguments.length>3&&void 0!==arguments[3]&&arguments[3])return t instanceof Q?function(r){return t.style(e,n(r))}:function(r){return t.style[e]=n(r)};if(Array.isArray(e)){var r=e.length;return function(i){var u=n(i);if(null==u)for(var o=0;o<r;o++)t[o].removeAttribute(e);else for(var a=0;a<r;a++)t[a].setAttribute(e,u)}}return function(r){var i=n(r);null==i?t.removeAttribute(e):t.setAttribute(e,i)}}(e,r,f,a):null}function it(t,e,r,i){if(!i||"object"!==n(i))return null;var u=null,o=null;return Array.isArray(i)?o=function(t){if(!t||!t.length)return null;for(var e=0;e<t.length;e++)t[e].e&&(t[e].e=Z(t[e].e));return t.sort(nt)}(i):(o=i.keys,u=i.data||null),o?rt(t,e,r,o,u):null}function ut(t,e,n){if(!n)return null;var r=[];for(var i in n)if(n.hasOwnProperty(i)){var u=it(t,e,i,n[i]);u&&r.push(u)}return r.length?r:null}function ot(t,e){if(!e.settings.duration||e.settings.duration<0)return null;var n,r,i,u,o,a=function(t,e){if(!e)return null;var n=[];if(Array.isArray(e))for(var r=e.length,i=0;i<r;i++){var u=e[i];if(2===u.length){var o=null;if("string"==typeof u[0])o=t.getElementById(u[0]);else if(Array.isArray(u[0])){o=[];for(var a=0;a<u[0].length;a++)if("string"==typeof u[0][a]){var l=t.getElementById(u[0][a]);l&&o.push(l)}o=o.length?1===o.length?o[0]:new Q(o):null}if(o){var s=ut(t,o,u[1]);s&&(n=n.concat(s))}}}else for(var f in e)if(e.hasOwnProperty(f)){var c=t.getElementById(f);if(c){var h=ut(t,c,e[f]);h&&(n=n.concat(h))}}return n.length?n:null}(t,e.elements);return a?(n=a,r=e.settings,i=r.duration,u=n.length,o=null,function(t,e){var a=r.iterations||1/0,l=(r.alternate&&a%2==0)^r.direction>0?i:0,s=t%i,f=1+(t-s)/i;e*=r.direction,r.alternate&&f%2==0&&(e=-e);var c=!1;if(f>a)s=l,c=!0,-1===r.fill&&(s=r.direction>0?0:i);else if(e<0&&(s=i-s),s===o)return!1;o=s;for(var h=0;h<u;h++)n[h](s);return c}):null}function at(t,e){for(var n=e.querySelectorAll("svg"),r=0;r<n.length;r++)if(n[r].id===t.root&&!n[r].svgatorAnimation)return n[r].svgatorAnimation=!0,n[r];return null}function lt(t){var e=function(t){return t.shadowRoot};return document?Array.from(t.querySelectorAll(":not("+["a","area","audio","br","canvas","circle","datalist","embed","g","head","hr","iframe","img","input","link","object","path","polygon","rect","script","source","style","svg","title","track","video"].join()+")")).filter(e).map(e):[]}function st(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=at(t,e);if(r)return r;if(n>=20)return null;for(var i=lt(e),u=0;u<i.length;u++){var o=st(t,i[u],n+1);if(o)return o}return null}function ft(t,e){if(H=e,!t||!t.root||!Array.isArray(t.animations))return null;var n=st(t);if(!n)return null;var r=t.animations.map((function(t){return ot(n,t)})).filter((function(t){return!!t}));return r.length?{svg:n,animations:r,animationSettings:t.animationSettings,options:t.options||void 0}:null}function ct(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"undefined"!=typeof BigInt&&BigInt,i="0x"+(t.replace(/[^0-9a-fA-F]+/g,"")||27);return e&&r&&n.isSafeInteger&&!n.isSafeInteger(+i)?n(r(i))%e+e:+i}function ht(t,e,n){return!t||!n||e>t.length?t:t.substring(0,e)+ht(t.substring(e+1),n,n)}function vt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:27;return!t||t%e?t%e:[0,1].includes(e)?e:vt(t/e,e)}function dt(t,e,n){if(t&&t.length){var r=ct(n),i=vt(r)+5,u=ht(t,vt(r,5),i);return u=u.replace(/\x7c$/g,"==").replace(/\x2f$/g,"="),u=function(t,e,n){var r=+("0x"+t.substring(0,4));t=t.substring(4);for(var i=ct(e,r)%r+n%27,u=[],o=0;o<t.length;o+=2)if("|"!==t[o]){var a=+("0x"+t[o]+t[o+1])-i;u.push(a)}else{var l=+("0x"+t.substring(o+1,o+1+4))-i;o+=3,u.push(l)}return String.fromCharCode.apply(String,u)}(u=(u=atob(u)).replace(/[\x41-\x5A]/g,""),e,r),u=JSON.parse(u)}}var yt=[{key:"alternate",def:!1},{key:"fill",def:1},{key:"iterations",def:0},{key:"direction",def:1},{key:"speed",def:1},{key:"fps",def:100}],gt=function(){function t(e,n){var i=this,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;r(this,t),this._id=0,this._running=!1,this._rollingBack=!1,this._animations=e,this._settings=n,(!u||u<"2022-05-02")&&delete this._settings.speed,yt.forEach((function(t){i._settings[t.key]=i._settings[t.key]||t.def})),this.duration=n.duration,this.offset=n.offset||0,this.rollbackStartOffset=0}return u(t,[{key:"alternate",get:function(){return this._settings.alternate}},{key:"fill",get:function(){return this._settings.fill}},{key:"iterations",get:function(){return this._settings.iterations}},{key:"direction",get:function(){return this._settings.direction}},{key:"speed",get:function(){return this._settings.speed}},{key:"fps",get:function(){return this._settings.fps}},{key:"maxFiniteDuration",get:function(){return this.iterations>0?this.iterations*this.duration:this.duration}},{key:"_apply",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this._animations,r=n.length,i=0,u=0;u<r;u++)e[u]?i++:(e[u]=n[u](t,1),e[u]&&i++);return i}},{key:"_rollback",value:function(t){var e=this,n=1/0,r=null;this.rollbackStartOffset=t,this._rollingBack=!0,this._running=!0;this._id=window.requestAnimationFrame((function i(u){if(e._rollingBack){null==r&&(r=u);var o=Math.round(t-(u-r)*e.speed);if(o>e.duration&&n!==1/0){var a=!!e.alternate&&o/e.duration%2>1,l=o%e.duration;o=(l+=a?e.duration:0)||e.duration}var s=(e.fps?1e3/e.fps:0)*e.speed,f=Math.max(0,o);f<=n-s&&(e.offset=f,n=f,e._apply(f));var c=e.iterations>0&&-1===e.fill&&o>=e.maxFiniteDuration;(o<=0||e.offset<o||c)&&e.stop(),e._id=window.requestAnimationFrame(i)}}))}},{key:"_start",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=-1/0,r=null,i={};this._running=!0;var u=function u(o){null==r&&(r=o);var a=Math.round((o-r)*t.speed+e),l=(t.fps?1e3/t.fps:0)*t.speed;if(a>=n+l&&!t._rollingBack&&(t.offset=a,n=a,t._apply(a,i)===t._animations.length))return void t.pause(!0);t._id=window.requestAnimationFrame(u)};this._id=window.requestAnimationFrame(u)}},{key:"_pause",value:function(){this._id&&window.cancelAnimationFrame(this._id),this._running=!1}},{key:"play",value:function(){if(!this._running)return this._rollingBack?this._rollback(this.offset):this._start(this.offset)}},{key:"stop",value:function(){this._pause(),this.offset=0,this.rollbackStartOffset=0,this._rollingBack=!1,this._apply(0)}},{key:"reachedToEnd",value:function(){return this.iterations>0&&this.offset>=this.iterations*this.duration}},{key:"restart",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.stop(t),this.play(t)}},{key:"pause",value:function(){this._pause()}},{key:"toggle",value:function(){return this._running?this.pause():this.reachedToEnd()?this.restart():this.play()}},{key:"trigger",value:function(t,e){}},{key:"_adjustOffset",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.alternate?2*this.duration:this.duration;if(t){if(!this._rollingBack&&0===this.offset)return void(this.offset=e);this._rollingBack&&(this.offset,this.maxFiniteDuration)}!this._rollingBack||this.rollbackStartOffset<=this.duration?0!==this.iterations&&(this.offset=Math.min(this.offset,this.maxFiniteDuration)):(this.offset=this.rollbackStartOffset-(this.rollbackStartOffset-this.offset)%e,this.rollbackStartOffset=0)}},{key:"reverse",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this._running)return this._adjustOffset(t),this._rollingBack=!this._rollingBack,t&&this.play(!1),void this.trigger("reverse",this.offset);this.pause(!1,!1),this._adjustOffset(),this._rollingBack=!this._rollingBack,this.play(!1),this.trigger("reverse",this.offset)}}],[{key:"build",value:function(t,e){delete t.animationSettings,t.options=dt(t.options,t.root,"91c80d77"),t.animations.map((function(e){e.settings=dt(e.s,t.root,"91c80d77"),delete e.s,t.animationSettings||(t.animationSettings=e.settings)}));var n=t.version;if(!(t=ft(t,e)))return null;var r=t.options||{},i=new this(t.animations,t.animationSettings,n);return{el:t.svg,options:r,player:i}}},{key:"push",value:function(t){return this.build(t)}},{key:"init",value:function(){var t=this,e=window.__SVGATOR_PLAYER__&&window.__SVGATOR_PLAYER__["91c80d77"];Array.isArray(e)&&e.splice(0).forEach((function(e){return t.build(e)}))}}]),t}();function pt(t){return p(t)+""}function mt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return t&&t.length?t.map(pt).join(e):""}function bt(t){return pt(t.x)+","+pt(t.y)}function wt(t){return t?null==t.a||t.a>=1?function(t){if(!t)return"transparent";var e=function(t){return parseInt(t).toString(16).padStart(2,"0")};return function(t){for(var e=[],n="#"===t[0]?e.push("#"):0;n<t.length;n+=2){if(t[n]!==t[n+1])return t;e.push(t[n])}return e.join("")}("#"+e(t.r)+e(t.g)+e(t.b)+(null==t.a||t.a>=1?"":e(255*t.a)))}(t):"rgba("+t.r+","+t.g+","+t.b+","+t.a+")":"transparent"}function kt(t){return t?"url(#"+t+")":"none"}!function(){for(var t=0,e=["ms","moz","webkit","o"],n=0;n<e.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[e[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[n]+"CancelAnimationFrame"]||window[e[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var n=Date.now(),r=Math.max(0,16-(n-t)),i=window.setTimeout((function(){e(n+r)}),r);return t=n+r,i},window.cancelAnimationFrame=window.clearTimeout)}();var _t={f:null,i:G,u:function(t,e){return function(n){var r=e(n);t.setAttribute("rx",pt(r.x)),t.setAttribute("ry",pt(r.y))}}},At={f:null,i:function(t,e,n){return 0===t?e:1===t?n:{width:L(t,e.width,n.width),height:L(t,e.height,n.height)}},u:function(t,e){return function(n){var r=e(n);t.setAttribute("width",pt(r.width)),t.setAttribute("height",pt(r.height))}}};Object.freeze({M:2,L:2,Z:0,H:1,V:1,C:6,Q:4,T:2,S:4,A:7});var xt={},St=null;function Ot(t){var e=function(){if(St)return St;if("object"!==("undefined"==typeof document?"undefined":n(document))||!document.createElementNS)return{};var t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t&&t.style?(t.style.position="absolute",t.style.opacity="0.01",t.style.zIndex="-9999",t.style.left="-9999px",t.style.width="1px",t.style.height="1px",St={svg:t}):{}}().svg;if(!e)return function(t){return null};var r=document.createElementNS(e.namespaceURI,"path");r.setAttributeNS(null,"d",t),r.setAttributeNS(null,"fill","none"),r.setAttributeNS(null,"stroke","none"),e.appendChild(r);var i=r.getTotalLength();return function(t){var e=r.getPointAtLength(i*t);return{x:e.x,y:e.y}}}function Et(t){return xt[t]?xt[t]:xt[t]=Ot(t)}function jt(t,e,n,r){if(!t||!r)return!1;var i=["M",t.x,t.y];if(e&&n&&(i.push("C"),i.push(e.x),i.push(e.y),i.push(n.x),i.push(n.y)),e?!n:n){var u=e||n;i.push("Q"),i.push(u.x),i.push(u.y)}return e||n||i.push("L"),i.push(r.x),i.push(r.y),i.join(" ")}function Mt(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,u=jt(t,e,n,r),o=Et(u);try{return o(i)}catch(t){return null}}function Pt(t,e,n){return t+(e-t)*n}function Bt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i={x:Pt(t.x,e.x,n),y:Pt(t.y,e.y,n)};return r&&(i.a=It(t,e)),i}function It(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}function Tt(t,e,n,r){var i=1-r;return i*i*t+2*i*r*e+r*r*n}function Nt(t,e,n,r){return 2*(1-r)*(e-t)+2*r*(n-e)}function Rt(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],u=Mt(t,e,null,n,r);return u||(u={x:Tt(t.x,e.x,n.x,r),y:Tt(t.y,e.y,n.y,r)}),i&&(u.a=Ft(t,e,n,r)),u}function Ft(t,e,n,r){return Math.atan2(Nt(t.y,e.y,n.y,r),Nt(t.x,e.x,n.x,r))}function Dt(t,e,n,r,i){var u=i*i;return i*u*(r-t+3*(e-n))+3*u*(t+n-2*e)+3*i*(e-t)+t}function Ct(t,e,n,r,i){var u=1-i;return 3*(u*u*(e-t)+2*u*i*(n-e)+i*i*(r-n))}function Lt(t,e,n,r,i){var u=arguments.length>5&&void 0!==arguments[5]&&arguments[5],o=Mt(t,e,n,r,i);return o||(o={x:Dt(t.x,e.x,n.x,r.x,i),y:Dt(t.y,e.y,n.y,r.y,i)}),u&&(o.a=qt(t,e,n,r,i)),o}function qt(t,e,n,r,i){return Math.atan2(Ct(t.y,e.y,n.y,r.y,i),Ct(t.x,e.x,n.x,r.x,i))}function Vt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(zt(e)){if(Yt(n))return Rt(e,n.start,n,t,r)}else if(zt(n)){if(Ut(e))return Rt(e,e.end,n,t,r)}else{if(Ut(e))return Yt(n)?Lt(e,e.end,n.start,n,t,r):Rt(e,e.end,n,t,r);if(Yt(n))return Rt(e,n.start,n,t,r)}return Bt(e,n,t,r)}function Gt(t,e,n){var r=Vt(t,e,n,!0);return r.a=k(function(t){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?t+Math.PI:t}(r.a)),r}function zt(t){return!t.type||"corner"===t.type}function Yt(t){return null!=t.start&&!zt(t)}function Ut(t){return null!=t.end&&!zt(t)}var Wt=new R;var $t={f:function(t){return t?t.join(" "):""},i:function(t,e,r){if(0===t)return e;if(1===t)return r;var i=e.length;if(i!==r.length)return D(t,e,r);for(var u,o=new Array(i),a=0;a<i;a++){if((u=n(e[a]))!==n(r[a]))return D(t,e,r);if("number"===u)o[a]=C(t,e[a],r[a]);else{if(e[a]!==r[a])return D(t,e,r);o[a]=e[a]}}return o}},Ht={f:null,i:U,u:function(t,e){return function(n){var r=e(n);t.setAttribute("x1",pt(r[0])),t.setAttribute("y1",pt(r[1])),t.setAttribute("x2",pt(r[2])),t.setAttribute("y2",pt(r[3]))}}},Qt={f:pt,i:C},Xt={f:pt,i:q},Jt={f:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return t&&t.length>0&&(t=t.map((function(t){return p(t,4)}))),mt(t,e)},i:function(t,e,n){var r,i,u,o=e.length,a=n.length;if(o!==a)if(0===o)e=W(o=a,0);else if(0===a)a=o,n=W(o,0);else{var l=(u=(r=o)*(i=a)/function(t,e){for(var n;e;)n=e,e=t%e,t=n;return t||1}(r,i))<0?-u:u;e=$(e,Math.floor(l/o)),n=$(n,Math.floor(l/a)),o=a=l}for(var s=[],f=0;f<o;f++)s.push(p(L(t,e[f],n[f])));return s}};function Kt(t,e,n){return t.map((function(t){return function(t,e,n){var r=t.v;if(!r||"g"!==r.t||r.s||!r.v||!r.r)return t;var i=n.getElementById(r.r),u=i&&i.querySelectorAll("stop")||[];return r.s=r.v.map((function(t,e){var n=u[e]&&u[e].getAttribute("offset");return{c:t,o:n=p(parseInt(n)/100)}})),delete r.v,t}(t,0,n)}))}var Zt={gt:"gradientTransform",c:{x:"cx",y:"cy"},rd:"r",f:{x:"x1",y:"y1"},to:{x:"x2",y:"y2"}};function te(t,e,r,i,u,o,a,l){return Kt(t,0,l),e=function(t,e,n){for(var r,i,u,o=t.length-1,a={},l=0;l<=o;l++)(r=t[l]).e&&(r.e=e(r.e)),r.v&&"g"===(i=r.v).t&&i.r&&(u=n.getElementById(i.r))&&(a[i.r]={e:u,s:u.querySelectorAll("stop")});return a}(t,i,l),function(i){var u=r(i,t,ee);if(!u)return"none";if("c"===u.t)return wt(u.v);if("g"===u.t){if(!e[u.r])return kt(u.r);var o=e[u.r];return function(t,e){for(var n=t.s,r=n.length;r<e.length;r++){var i=n[n.length-1].cloneNode();i.id=ie(i.id),t.e.appendChild(i),n=t.s=t.e.querySelectorAll("stop")}for(var u=0,o=n.length,a=e.length-1;u<o;u++)n[u].setAttribute("stop-color",wt(e[Math.min(u,a)].c)),n[u].setAttribute("offset",e[Math.min(u,a)].o)}(o,u.s),Object.keys(Zt).forEach((function(t){if(void 0!==u[t])if("object"!==n(Zt[t])){var e,r="gt"===t?(e=u[t],Array.isArray(e)?"matrix("+e.join(" ")+")":""):u[t],i=Zt[t];o.e.setAttribute(i,r)}else Object.keys(Zt[t]).forEach((function(e){if(void 0!==u[t][e]){var n=u[t][e],r=Zt[t][e];o.e.setAttribute(r,n)}}))})),kt(u.r)}return"none"}}function ee(t,n,r){if(0===t)return n;if(1===t)return r;if(n&&r){var i=n.t;if(i===r.t)switch(n.t){case"c":return{t:i,v:Y(t,n.v,r.v)};case"g":if(n.r===r.r){var u={t:i,s:ne(t,n.s,r.s),r:n.r};return n.gt&&r.gt&&(u.gt=U(t,n.gt,r.gt)),n.c?(u.c=V(t,n.c,r.c),u.rd=L(t,n.rd,r.rd)):n.f&&(u.f=V(t,n.f,r.f),u.to=V(t,n.to,r.to)),u}}if("c"===n.t&&"g"===r.t||"c"===r.t&&"g"===n.t){var o="c"===n.t?n:r,a="g"===n.t?e({},n):e({},r),l=a.s.map((function(t){return{c:o.v,o:t.o}}));return a.s="c"===n.t?ne(t,l,a.s):ne(t,a.s,l),a}}return D(t,n,r)}function ne(t,e,n){if(e.length===n.length)return e.map((function(e,r){return re(t,e,n[r])}));for(var r=Math.max(e.length,n.length),i=[],u=0;u<r;u++){var o=re(t,e[Math.min(u,e.length-1)],n[Math.min(u,n.length-1)]);i.push(o)}return i}function re(t,e,n){return{o:q(t,e.o,n.o||0),c:Y(t,e.c,n.c||{})}}function ie(t){return t.replace(/-fill-([0-9]+)$/,(function(t,e){return"-fill-"+(+e+1)}))}function ue(t,e,n){return 0===t?e:1===t?n:{blur:G(t,e.blur,n.blur),offset:V(t,e.offset,n.offset),color:Y(t,e.color,n.color)}}var oe={blur:G,brightness:L,contrast:L,"drop-shadow":ue,"inner-shadow":ue,grayscale:L,"hue-rotate":C,invert:L,opacity:L,saturate:L,sepia:L};function ae(t,e,n){if(0===t)return e;if(1===t)return n;var r=e.length;if(r!==n.length)return D(t,e,n);for(var i,u=[],o=0;o<r;o++){if(e[o].type!==n[o].type)return e;if(!(i=oe[e[o].type]))return D(t,e,n);u.push({type:e.type,value:i(t,e[o].value,n[o].value)})}return u}var le={blur:function(t){return t?function(e){t.setAttribute("stdDeviation",bt(e))}:null},brightness:function(t,e,n){return(t=fe(n,e))?function(e){e=pt(e),t.map((function(t){return t.setAttribute("slope",e)}))}:null},contrast:function(t,e,n){return(t=fe(n,e))?function(e){var n=pt((1-e)/2);e=pt(e),t.map((function(t){t.setAttribute("slope",e),t.setAttribute("intercept",n)}))}:null},"drop-shadow":function(t,e,n){var r=n.getElementById(e+"-blur");if(!r)return null;var i=n.getElementById(e+"-offset");if(!i)return null;var u=n.getElementById(e+"-flood");return u?function(t){r.setAttribute("stdDeviation",bt(t.blur)),i.setAttribute("dx",pt(t.offset.x)),i.setAttribute("dy",pt(t.offset.y)),u.setAttribute("flood-color",wt(t.color))}:null},"inner-shadow":function(t,e,n){var r=n.getElementById(e+"-blur");if(!r)return null;var i=n.getElementById(e+"-offset");if(!i)return null;var u=n.getElementById(e+"-color-matrix");return u?function(t){r.setAttribute("stdDeviation",bt(t.blur)),i.setAttribute("dx",pt(t.offset.x)),i.setAttribute("dy",pt(t.offset.y));var e=[0,0,0,0,t.color.r/255,0,0,0,0,t.color.g/255,0,0,0,0,t.color.b/255,0,0,0,t.color.a,0];u.setAttribute("values",mt(e))}:null},grayscale:function(t){return t?function(e){t.setAttribute("values",mt(function(t){return[.2126+.7874*(t=1-t),.7152-.7152*t,.0722-.0722*t,0,0,.2126-.2126*t,.7152+.2848*t,.0722-.0722*t,0,0,.2126-.2126*t,.7152-.7152*t,.0722+.9278*t,0,0,0,0,0,1,0]}(e)))}:null},"hue-rotate":function(t){return t?function(e){return t.setAttribute("values",pt(e))}:null},invert:function(t,e,n){return(t=fe(n,e))?function(e){e=pt(e)+" "+pt(1-e),t.map((function(t){return t.setAttribute("tableValues",e)}))}:null},opacity:function(t,e,n){return(t=n.getElementById(e+"-A"))?function(e){return t.setAttribute("tableValues","0 "+pt(e))}:null},saturate:function(t){return t?function(e){return t.setAttribute("values",pt(e))}:null},sepia:function(t){return t?function(e){return t.setAttribute("values",mt(function(t){return[.393+.607*(t=1-t),.769-.769*t,.189-.189*t,0,0,.349-.349*t,.686+.314*t,.168-.168*t,0,0,.272-.272*t,.534-.534*t,.131+.869*t,0,0,0,0,0,1,0]}(e)))}:null}};var se=["R","G","B"];function fe(t,e){var n=se.map((function(n){return t.getElementById(e+"-"+n)||null}));return-1!==n.indexOf(null)?null:n}var ce={fill:te,"fill-opacity":Xt,stroke:te,"stroke-opacity":Xt,"stroke-width":Qt,"stroke-dashoffset":{f:pt,i:C},"stroke-dasharray":Jt,opacity:Xt,transform:function(t,e,r,i){if(!(t=function(t,e){if(!t||"object"!==n(t))return null;var r=!1;for(var i in t)t.hasOwnProperty(i)&&(t[i]&&t[i].length?(t[i].forEach((function(t){t.e&&(t.e=e(t.e))})),r=!0):delete t[i]);return r?t:null}(t,i)))return null;var u=function(n,i,u){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return t[n]?r(i,t[n],u):e&&e[n]?e[n]:o};return e&&e.a&&t.o?function(e){var n=r(e,t.o,Gt);return Wt.recomposeSelf(n,u("r",e,C,0)+n.a,u("k",e,V),u("s",e,V),u("t",e,V)).toString()}:function(t){return Wt.recomposeSelf(u("o",t,Vt,null),u("r",t,C,0),u("k",t,V),u("s",t,V),u("t",t,V)).toString()}},"#filter":function(t,e,n,r,i,u,o,a){if(!e.items||!t||!t.length)return null;var l=function(t,e){var n=(t=t.map((function(t){return t&&le[t[0]]?(e.getElementById(t[1]),le[t[0]](e.getElementById(t[1]),t[1],e)):null}))).length;return function(e){for(var r=0;r<n;r++)t[r]&&t[r](e[r].value)}}(e.items,a);return l?(t=function(t,e){return t.map((function(t){return t.e=e(t.e),t}))}(t,r),function(e){l(n(e,t,ae))}):null},"#line":Ht,points:{f:mt,i:U},d:$t,r:Qt,"#size":At,"#radius":_t,_:function(t,e){if(Array.isArray(t))for(var n=0;n<t.length;n++)this[t[n]]=e;else this[t]=e}},he={currentTime:"offset",duration:"duration",hasEnded:function(){return this.reachedToEnd()},isAlternate:"alternate",isPlaying:"_running",isRollingBack:"_rollingBack",state:function(t,e){return e.isPlaying?e.isRollingBack?"rollback":"playing":e.hasEnded?"ended":"paused"},totalTime:"maxFiniteDuration",iterations:"iterations",direction:"direction",fill:"fill",isReversed:function(t,e){return-1===e.direction},isBackwards:function(t,e){return-1===e.fill},isInfinite:function(t,e){return 0===e.iterations},speed:"speed",fps:"fps"},ve={destruct:"destruct",pause:"pause",play:function(t,e){return de(t,e.hasEnded?"restart":"play",e)},restart:"restart",reverse:function(t,e){return de(t,"reverse",e,[!0])},seek:"seek",seekBy:"seekBy",seekTo:"seekTo",stop:"stop",toggle:"toggle",togglePlay:"toggle",set:"set"};function de(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return function(){var i,u=Array.prototype.slice.call(arguments);return u.unshift.apply(u,v(r)),(i=t[e]).call.apply(i,[t].concat(v(u))),n}}var ye=function t(e){r(this,t);var n={},i=["on","off"],u={get:function(t,e,r){return he[e]?"function"==typeof he[e]?he[e].call(t,t,r):t[he[e]]:ve[e]?"function"==typeof ve[e]?ve[e].call(t,t,r):de(t,ve[e],r):-1!==i.indexOf(e)?n[e]:"ready"===e?function(t){return t&&t.call(r,r),r}:void 0},set:function(t,e,r){return-1!==i.indexOf(e)&&(n[e]=r)},ownKeys:function(t){return Object.keys(he)},has:function(t,e){return void 0!==he[e]}};if("function"==typeof Proxy)return new Proxy(e,u);var o=Object.keys(he).concat(Object.keys(ve)).concat(i),a={};return o.forEach((function(t){var n={enumerable:!1,configurable:!1,get:function(){return u.get(e,t,a)}};-1!==i.indexOf(t)&&(n.set=function(n){return u.set(e,t,n)}),Object.defineProperty(a,t,n)})),a};function ge(t){t||(t=this);var e={};this.on=function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return"function"==typeof n&&(t.split(/[, ]+/g).forEach((function(t){return e[t]=e[t]||[],r?e[t].unshift(n):e[t].push(n)})),!0)},this.off=function(t,n){for(var r in e)if(e.hasOwnProperty(r)&&r.substr(0,t.length)===t)if(n)for(var i=0;i<e[r].length;i++)e[r][i]===n&&(e[r][i]=null);else e[r]=null},this.trigger=function(){var n,r=Array.prototype.slice.call(arguments),i=r[0],u=r.slice(1);t:for(var o in e)if(e.hasOwnProperty(o)&&e[o]&&(o===i||o.substr(0,i.length+1)===i+"."))for(var a=0;a<(e[o]||[]).length;a++)if(e[o][a]&&!1===(n=e[o][a].apply(t,u)))break t;return n}}var pe=function(){function t(e,n,i){r(this,t);var u=function(t){var e,n,r,i=t&&1===(null===(e=t.ownerDocument)||void 0===e||null===(n=e.childNodes)||void 0===n?void 0:n.length)&&window.parent!==window,u={el:t,window:window};if(!i)return u;try{r=window.parent.document}catch(t){return u}return u.window=window.parent,u.el=Array.from(r.querySelectorAll("iframe,object")).filter((function(t){return t.contentWindow===window}))[0]||u.el,u}(e);n=Math.max(1,n||1),n=Math.min(n,100),this.el=u.el,this._handlers=[],this.onThresholdChange=i&&i.call?i:function(){},this.thresholdPercent=n||1,this.currentVisibility=null,this.visibilityCalculator=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n,r=!1,i=null,u=function(){for(var u=0,o=n.innerHeight,a=0,l=n.innerWidth,s=t.parentNode;s instanceof Element;){var f=n.getComputedStyle(s);if("visible"!==f.overflowY||"visible"!==f.overflowX){var c=s.getBoundingClientRect();"visible"!==f.overflowY&&(u=Math.max(u,c.top),o=Math.min(o,c.bottom)),"visible"!==f.overflowX&&(a=Math.max(a,c.left),l=Math.min(l,c.right))}if(s===s.parentNode)break;s=s.parentNode}r=!1;var h=t.getBoundingClientRect(),v=Math.min(h.height,Math.max(0,u-h.top)),d=Math.min(h.height,Math.max(0,h.bottom-o)),y=Math.min(h.width,Math.max(0,a-h.left)),g=Math.min(h.width,Math.max(0,h.right-l)),p=(h.height-v-d)/h.height,m=(h.width-y-g)/h.width,b=Math.round(p*m*100);null!==i&&i===b||(i=b,e(b))};return function(t){r&&clearTimeout(r),r=setTimeout((function(){return u()}),100)}}(this.el,this.onVisibilityUpdate.bind(this),u.window),this.bindScrollWatchers(),this.visibilityCalculator()}return u(t,[{key:"bindScrollWatchers",value:function(){for(var t=this.el.parentNode;t&&(this._handlers.push({element:t,event:"scroll",handler:this.visibilityCalculator}),t.addEventListener("scroll",this.visibilityCalculator),t!==t.parentNode&&t!==document);)t=t.parentNode}},{key:"onVisibilityUpdate",value:function(t){var e=this.currentVisibility>=this.thresholdPercent,n=t>=this.thresholdPercent;if(null===this.currentVisibility||e!==n)return this.currentVisibility=t,void this.onThresholdChange(n);this.currentVisibility=t}},{key:"destruct",value:function(){this._handlers.forEach((function(t){t.element.removeEventListener(t.event,t.handler)}))}}]),t}(),me=function(){function t(){r(this,t)}return u(t,null,[{key:"adjustLink",value:function(t){var e,n,r=t&&1===(null===(e=t.ownerDocument)||void 0===e||null===(n=e.childNodes)||void 0===n?void 0:n.length)&&window.parent!==window,i=null==t?void 0:t.firstElementChild;r&&i&&"a"===i.tagName&&!i.getAttribute("target")&&i.setAttributeNS(null,"target","_parent")}},{key:"autoPlay",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if("click"===n.start){var i=function(){switch(n.click){case"freeze":return!t._running&&t.reachedToEnd()?t.restart():t.toggle();case"restart":return t.offset>0?t.restart():t.play();case"reverse":return t._running?t.reverse():t.reachedToEnd()?1===t.fill?t.reverse(!0):t.restart():t.play();case"none":default:if(t._running)return;return t.reachedToEnd()?t.restart():t.play()}};return r.push({element:e,event:"click",handler:i}),void e.addEventListener("click",i)}if("hover"===n.start){var u=function(){return t.reachedToEnd()?t.restart():t._rollingBack?t.reverse():t.play()};r.push({element:e,event:"mouseenter",handler:u}),e.addEventListener("mouseenter",u);var o=function(){switch(n.hover){case"freeze":return t.pause();case"reset":return t.stop();case"reverse":if(t.reverse(),t._running)return;return t.play();case"none":default:return}};return r.push({element:e,event:"mouseleave",handler:o}),void e.addEventListener("mouseleave",o)}if("scroll"!==n.start)"programmatic"!==n.start&&t.play();else{var a=new pe(e,n.scroll||25,(function(e){e?t.reachedToEnd()?t.restart():t.play():t.pause()}));r.push({callback:function(){return a.destruct()}})}}}]),t}(),be=!0,we=["iterations","speed","fps","direction","fill","alternate"],ke=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}(o,t);var e,n,i=(e=o,n=s(),function(){var t,r=a(e);if(n){var i=a(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c(this,t)});function o(t,e){var n,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return r(this,o),(n=i.call(this,t,e,u))._handlers=[],n}return u(o,[{key:"play",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:be,e=h(a(o.prototype),"play",this).call(this);return t===be&&this.trigger("play",this.offset),e}},{key:"pause",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:be,n=h(a(o.prototype),"pause",this).call(this);return e===be&&this.trigger(t?"end":"pause",this.offset),n}},{key:"restart",value:function(){var t=h(a(o.prototype),"restart",this).call(this,!1);return this.trigger("restart",this.offset),t}},{key:"stop",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:be,e=h(a(o.prototype),"stop",this).call(this);return t===be&&this.trigger("stop",this.offset),e}},{key:"_apply",value:function(t){var e=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:be,r=h(a(o.prototype),"_apply",this).call(this,t);if(n===be){var i=function(){return e.trigger("keyframe",t)};window.requestAnimationFrame(i)}return r}},{key:"seekTo",value:function(t){var e,n,r,i=this._running;i&&this.pause(!1,!1),this.offset=this.iterations>0?(e=t,n=0,r=this.maxFiniteDuration,e<n?n:e>r?r:e):Math.max(t,0),this._apply(this.offset),i&&this.play(!1)}},{key:"seek",value:function(t){return this.seekTo(Math.round(t/100*this.maxFiniteDuration))}},{key:"seekBy",value:function(t){return this.seekTo(this.offset+t)}},{key:"set",value:function(t,e){if(we.includes(t)){var n=this._running;n&&this.pause(!1,!1),this._settings[t]=e,n?this.play(!1):this._apply(this.offset,{},!1)}}},{key:"destruct",value:function(){var t=this;this.stop(),this._handlers.forEach((function(t){t.element?t.element.removeEventListener(t.event,t.handler):t.callback&&t.callback.call&&t.callback.call()}));var e=function(){},n=Object.getOwnPropertyNames(Object.getPrototypeOf(this));n.push.apply(n,v(Object.getOwnPropertyNames(this))),n.forEach((function(n){"function"==typeof t[n]?t[n]=e:delete t[n]}))}}],[{key:"build",value:function(t){var e=h(a(o),"build",this).call(this,t,ce);if(!e)return null;var n=e.el,r=e.options,i=e.player,u=new ye(i),l=new ge(u);u.on=l.on,u.off=l.off,i.trigger=l.trigger;var s=n.svgatorPlayer&&n.svgatorPlayer.ready&&n.svgatorPlayer.ready.call&&n.svgatorPlayer.ready.call();n.svgatorPlayer=u,me.adjustLink(n),me.autoPlay(i,n,r,i._handlers),function(t,e,n){var r;"function"==typeof Event?r=new Event("ready"):(r=document.createEvent("Event")).initEvent("ready",!0,!0);if(t.dispatchEvent(r),!n||!n.length)return;n.forEach((function(t){return e.ready(t)}))}(n,n.svgatorPlayer,s)}}]),o}(gt);return ke.init(),ke})); + ;(function (s, i, o, w, d, a, b) { + ;(a = + Array.from(d.querySelectorAll('svg#' + i.root)).filter( + (n) => !n.svgatorPlayer, + )[0] || {}).svgatorPlayer = { + ready: (function (a) { + b = [] + return function (c) { + return c ? (b.push(c), a.svgatorPlayer) : b + } + })(a), + } + w[o] = w[o] || {} + w[o][s] = w[o][s] || [] + w[o][s].push(i) + })( + '91c80d77', + { + root: 'eDi3AOmSGXe1', + version: '2024-09-05', + animations: [ + { + elements: { + eDi3AOmSGXe5: { + transform: { + data: { t: { x: -24.842263, y: -20.483646 } }, + keys: { + o: [ + { + t: 0, + v: { x: 24.515468, y: 20.684954, type: 'corner' }, + }, + { + t: 300, + v: { x: 24.470168, y: 18.7705, type: 'corner' }, + }, + { + t: 600, + v: { x: 24.537243, y: 20.701982, type: 'corner' }, + }, + ], + r: [ + { t: 0, v: 0 }, + { t: 300, v: -19.780554 }, + { t: 600, v: -0.21933 }, + ], + }, + }, + }, + }, + s: 'MDWA1YzlhNDE4MEzk0OTFRODA5EMzg4OGU4ZDQBxNTlWNTU0ZjGRmVDRiNDE4MKzg4OTE4NDgyOOTM4ODhlOGQT0MTU5NTA0YjEQxODg5Mzg0OQTE4MDkzODg4XZThkOTI0MTUQ5STUwNGI0MTCg1ODg4YjhiNEDE1OTUwQjRiNNDE4MDhiOTMW4NDkxOGQ4MDSkzODQ0MVM1OGTg1ODA4YjkyXODQ0YjQxOTIR4Zjg0ODQ4M0K40MTU5NTA0YLjQxODU4ZjkyINDE1OTUwNGYF0Zjlj', + }, + ], + options: + 'MDOAyMjljNDM5NSDk1ODI5Mzk1XNDM1YjQzODQF4ZEE4YVI4NDDhjNDM0ZDQzOUDQ4ZDhhODQ4NYzQzNWI0M0YH4NzkzODY4NjXliODY0Mzll', + }, + '__SVGATOR_PLAYER__', + window, + document, + ) + }, []) + return <Svg /> +} diff --git a/apps/service-portal/src/components/AnimatedIcon/Heart.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Heart.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Heart.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Heart.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Home.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Home.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Home.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Home.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/LockClosed.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/LockClosed.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/LockClosed.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/LockClosed.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/LogOut.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/LogOut.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/LogOut.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/LogOut.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Mail.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Mail.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Mail.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Mail.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/People.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/People.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/People.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/People.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Person.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Person.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Person.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Person.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Reader.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Reader.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Reader.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Reader.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Receipt.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Receipt.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Receipt.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Receipt.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/School.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/School.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/School.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/School.jsx diff --git a/apps/service-portal/src/components/AnimatedIcon/Wallet.jsx b/apps/portals/my-pages/src/components/AnimatedIcon/Wallet.jsx similarity index 100% rename from apps/service-portal/src/components/AnimatedIcon/Wallet.jsx rename to apps/portals/my-pages/src/components/AnimatedIcon/Wallet.jsx diff --git a/apps/service-portal/src/components/Button/IconButton/IconButton.css.ts b/apps/portals/my-pages/src/components/Button/IconButton/IconButton.css.ts similarity index 100% rename from apps/service-portal/src/components/Button/IconButton/IconButton.css.ts rename to apps/portals/my-pages/src/components/Button/IconButton/IconButton.css.ts diff --git a/apps/service-portal/src/components/Button/IconButton/IconButton.tsx b/apps/portals/my-pages/src/components/Button/IconButton/IconButton.tsx similarity index 100% rename from apps/service-portal/src/components/Button/IconButton/IconButton.tsx rename to apps/portals/my-pages/src/components/Button/IconButton/IconButton.tsx diff --git a/apps/service-portal/src/components/Button/LinkButton/LinkButton.css.ts b/apps/portals/my-pages/src/components/Button/LinkButton/LinkButton.css.ts similarity index 100% rename from apps/service-portal/src/components/Button/LinkButton/LinkButton.css.ts rename to apps/portals/my-pages/src/components/Button/LinkButton/LinkButton.css.ts diff --git a/apps/service-portal/src/components/Button/LinkButton/LinkButton.tsx b/apps/portals/my-pages/src/components/Button/LinkButton/LinkButton.tsx similarity index 100% rename from apps/service-portal/src/components/Button/LinkButton/LinkButton.tsx rename to apps/portals/my-pages/src/components/Button/LinkButton/LinkButton.tsx diff --git a/apps/service-portal/src/components/ContentBreadcrumbs/ContentBreadcrumbs.css.ts b/apps/portals/my-pages/src/components/ContentBreadcrumbs/ContentBreadcrumbs.css.ts similarity index 100% rename from apps/service-portal/src/components/ContentBreadcrumbs/ContentBreadcrumbs.css.ts rename to apps/portals/my-pages/src/components/ContentBreadcrumbs/ContentBreadcrumbs.css.ts diff --git a/apps/service-portal/src/components/ContentBreadcrumbs/ContentBreadcrumbs.tsx b/apps/portals/my-pages/src/components/ContentBreadcrumbs/ContentBreadcrumbs.tsx similarity index 99% rename from apps/service-portal/src/components/ContentBreadcrumbs/ContentBreadcrumbs.tsx rename to apps/portals/my-pages/src/components/ContentBreadcrumbs/ContentBreadcrumbs.tsx index 7c7771d92102..58f9ea47b936 100644 --- a/apps/service-portal/src/components/ContentBreadcrumbs/ContentBreadcrumbs.tsx +++ b/apps/portals/my-pages/src/components/ContentBreadcrumbs/ContentBreadcrumbs.tsx @@ -105,10 +105,8 @@ const ContentBreadcrumbs: FC<React.PropsWithChildren<unknown>> = () => { } findBreadcrumbsPath(navigation, []) - const isMobile = width < theme.breakpoints.md if (items.length < 2) return null - return ( <Box display="flex" diff --git a/apps/service-portal/src/components/DocumentsEmpty/DocumentsEmpty.css.ts b/apps/portals/my-pages/src/components/DocumentsEmpty/DocumentsEmpty.css.ts similarity index 100% rename from apps/service-portal/src/components/DocumentsEmpty/DocumentsEmpty.css.ts rename to apps/portals/my-pages/src/components/DocumentsEmpty/DocumentsEmpty.css.ts diff --git a/apps/service-portal/src/components/DocumentsEmpty/DocumentsEmpty.tsx b/apps/portals/my-pages/src/components/DocumentsEmpty/DocumentsEmpty.tsx similarity index 100% rename from apps/service-portal/src/components/DocumentsEmpty/DocumentsEmpty.tsx rename to apps/portals/my-pages/src/components/DocumentsEmpty/DocumentsEmpty.tsx diff --git a/apps/service-portal/src/components/Greeting/Greeting.css.ts b/apps/portals/my-pages/src/components/Greeting/Greeting.css.ts similarity index 100% rename from apps/service-portal/src/components/Greeting/Greeting.css.ts rename to apps/portals/my-pages/src/components/Greeting/Greeting.css.ts diff --git a/apps/service-portal/src/components/Greeting/Greeting.tsx b/apps/portals/my-pages/src/components/Greeting/Greeting.tsx similarity index 100% rename from apps/service-portal/src/components/Greeting/Greeting.tsx rename to apps/portals/my-pages/src/components/Greeting/Greeting.tsx diff --git a/apps/service-portal/src/components/Header/Header.css.ts b/apps/portals/my-pages/src/components/Header/Header.css.ts similarity index 100% rename from apps/service-portal/src/components/Header/Header.css.ts rename to apps/portals/my-pages/src/components/Header/Header.css.ts diff --git a/apps/service-portal/src/components/Header/Header.tsx b/apps/portals/my-pages/src/components/Header/Header.tsx similarity index 100% rename from apps/service-portal/src/components/Header/Header.tsx rename to apps/portals/my-pages/src/components/Header/Header.tsx diff --git a/apps/service-portal/src/components/Layout/FullWidthLayout.tsx b/apps/portals/my-pages/src/components/Layout/FullWidthLayout.tsx similarity index 92% rename from apps/service-portal/src/components/Layout/FullWidthLayout.tsx rename to apps/portals/my-pages/src/components/Layout/FullWidthLayout.tsx index d19e25a45935..fccf3c39bd76 100644 --- a/apps/service-portal/src/components/Layout/FullWidthLayout.tsx +++ b/apps/portals/my-pages/src/components/Layout/FullWidthLayout.tsx @@ -21,6 +21,7 @@ import { DocumentsPaths } from '@island.is/service-portal/documents' import { theme } from '@island.is/island-ui/theme' import { useAuth } from '@island.is/auth/react' import { DocumentsScope } from '@island.is/auth/scopes' +import { FinancePaths } from '@island.is/service-portal/finance' interface FullWidthLayoutWrapperProps { activeParent?: PortalNavigationItem @@ -31,6 +32,7 @@ interface FullWidthLayoutWrapperProps { type FullWidthLayoutProps = { isDashboard: boolean isDocuments: boolean + isFinance: boolean } & FullWidthLayoutWrapperProps export const FullWidthLayout: FC<FullWidthLayoutProps> = ({ @@ -40,6 +42,7 @@ export const FullWidthLayout: FC<FullWidthLayoutProps> = ({ children, isDashboard, isDocuments, + isFinance, }) => { const navigate = useNavigate() const { formatMessage } = useLocale() @@ -65,7 +68,9 @@ export const FullWidthLayout: FC<FullWidthLayoutProps> = ({ ? styles.fullWidthSplit : undefined } - paddingTop={isDocuments || isDashboard ? undefined : 9} + paddingTop={ + isDocuments || isDashboard ? undefined : isFinance ? [0, 0, 9] : 9 + } style={{ marginTop: height, minHeight: `calc(100vh - ${theme.headerHeight.large}px`, @@ -151,12 +156,17 @@ const FullWidthLayoutWrapper: FC<FullWidthLayoutWrapperProps> = (props) => { matchPath(route, props.pathname), ) + // Finance does not need extra padding in mobile + const isFinance = Object.values(FinancePaths).find((route) => + matchPath(route, props.pathname), + ) const isSpecialView = !!isDashboard || !!isDocuments return ( <FullWidthLayout isDashboard={!!isDashboard} isDocuments={!!isDocuments} + isFinance={!!isFinance} {...props} > <ModuleAlertBannerSection paddingTop={isSpecialView ? 0 : 2} /> diff --git a/apps/service-portal/src/components/Layout/Layout.css.ts b/apps/portals/my-pages/src/components/Layout/Layout.css.ts similarity index 100% rename from apps/service-portal/src/components/Layout/Layout.css.ts rename to apps/portals/my-pages/src/components/Layout/Layout.css.ts diff --git a/apps/service-portal/src/components/Layout/Layout.tsx b/apps/portals/my-pages/src/components/Layout/Layout.tsx similarity index 100% rename from apps/service-portal/src/components/Layout/Layout.tsx rename to apps/portals/my-pages/src/components/Layout/Layout.tsx diff --git a/apps/service-portal/src/components/Layout/NarrowLayout.tsx b/apps/portals/my-pages/src/components/Layout/NarrowLayout.tsx similarity index 100% rename from apps/service-portal/src/components/Layout/NarrowLayout.tsx rename to apps/portals/my-pages/src/components/Layout/NarrowLayout.tsx diff --git a/apps/service-portal/src/components/Layout/SidebarLayout.css.ts b/apps/portals/my-pages/src/components/Layout/SidebarLayout.css.ts similarity index 100% rename from apps/service-portal/src/components/Layout/SidebarLayout.css.ts rename to apps/portals/my-pages/src/components/Layout/SidebarLayout.css.ts diff --git a/apps/service-portal/src/components/Layout/SidebarLayout.tsx b/apps/portals/my-pages/src/components/Layout/SidebarLayout.tsx similarity index 100% rename from apps/service-portal/src/components/Layout/SidebarLayout.tsx rename to apps/portals/my-pages/src/components/Layout/SidebarLayout.tsx diff --git a/apps/service-portal/src/components/Loaders/AuthOverlay/AuthOverlay.css.ts b/apps/portals/my-pages/src/components/Loaders/AuthOverlay/AuthOverlay.css.ts similarity index 100% rename from apps/service-portal/src/components/Loaders/AuthOverlay/AuthOverlay.css.ts rename to apps/portals/my-pages/src/components/Loaders/AuthOverlay/AuthOverlay.css.ts diff --git a/apps/service-portal/src/components/Loaders/AuthOverlay/AuthOverlay.tsx b/apps/portals/my-pages/src/components/Loaders/AuthOverlay/AuthOverlay.tsx similarity index 100% rename from apps/service-portal/src/components/Loaders/AuthOverlay/AuthOverlay.tsx rename to apps/portals/my-pages/src/components/Loaders/AuthOverlay/AuthOverlay.tsx diff --git a/apps/service-portal/src/components/Logo/Logo.css.ts b/apps/portals/my-pages/src/components/Logo/Logo.css.ts similarity index 100% rename from apps/service-portal/src/components/Logo/Logo.css.ts rename to apps/portals/my-pages/src/components/Logo/Logo.css.ts diff --git a/apps/service-portal/src/components/Logo/Logo.tsx b/apps/portals/my-pages/src/components/Logo/Logo.tsx similarity index 100% rename from apps/service-portal/src/components/Logo/Logo.tsx rename to apps/portals/my-pages/src/components/Logo/Logo.tsx diff --git a/apps/service-portal/src/components/Notifications/NotificationButton.tsx b/apps/portals/my-pages/src/components/Notifications/NotificationButton.tsx similarity index 100% rename from apps/service-portal/src/components/Notifications/NotificationButton.tsx rename to apps/portals/my-pages/src/components/Notifications/NotificationButton.tsx diff --git a/apps/service-portal/src/components/Notifications/NotificationLine.tsx b/apps/portals/my-pages/src/components/Notifications/NotificationLine.tsx similarity index 100% rename from apps/service-portal/src/components/Notifications/NotificationLine.tsx rename to apps/portals/my-pages/src/components/Notifications/NotificationLine.tsx diff --git a/apps/service-portal/src/components/Notifications/NotificationMenu.tsx b/apps/portals/my-pages/src/components/Notifications/NotificationMenu.tsx similarity index 100% rename from apps/service-portal/src/components/Notifications/NotificationMenu.tsx rename to apps/portals/my-pages/src/components/Notifications/NotificationMenu.tsx diff --git a/apps/service-portal/src/components/Notifications/Notifications.css.ts b/apps/portals/my-pages/src/components/Notifications/Notifications.css.ts similarity index 100% rename from apps/service-portal/src/components/Notifications/Notifications.css.ts rename to apps/portals/my-pages/src/components/Notifications/Notifications.css.ts diff --git a/apps/service-portal/src/components/Root.tsx b/apps/portals/my-pages/src/components/Root.tsx similarity index 100% rename from apps/service-portal/src/components/Root.tsx rename to apps/portals/my-pages/src/components/Root.tsx diff --git a/apps/service-portal/src/components/Sidemenu/Sidemenu.css.ts b/apps/portals/my-pages/src/components/Sidemenu/Sidemenu.css.ts similarity index 100% rename from apps/service-portal/src/components/Sidemenu/Sidemenu.css.ts rename to apps/portals/my-pages/src/components/Sidemenu/Sidemenu.css.ts diff --git a/apps/service-portal/src/components/Sidemenu/Sidemenu.tsx b/apps/portals/my-pages/src/components/Sidemenu/Sidemenu.tsx similarity index 100% rename from apps/service-portal/src/components/Sidemenu/Sidemenu.tsx rename to apps/portals/my-pages/src/components/Sidemenu/Sidemenu.tsx diff --git a/apps/service-portal/src/components/Sidemenu/SidemenuItem.tsx b/apps/portals/my-pages/src/components/Sidemenu/SidemenuItem.tsx similarity index 100% rename from apps/service-portal/src/components/Sidemenu/SidemenuItem.tsx rename to apps/portals/my-pages/src/components/Sidemenu/SidemenuItem.tsx diff --git a/apps/service-portal/src/components/Sticky/Sticky.tsx b/apps/portals/my-pages/src/components/Sticky/Sticky.tsx similarity index 100% rename from apps/service-portal/src/components/Sticky/Sticky.tsx rename to apps/portals/my-pages/src/components/Sticky/Sticky.tsx diff --git a/apps/service-portal/src/environments/environment.ts b/apps/portals/my-pages/src/environments/environment.ts similarity index 100% rename from apps/service-portal/src/environments/environment.ts rename to apps/portals/my-pages/src/environments/environment.ts diff --git a/apps/service-portal/src/environments/index.ts b/apps/portals/my-pages/src/environments/index.ts similarity index 100% rename from apps/service-portal/src/environments/index.ts rename to apps/portals/my-pages/src/environments/index.ts diff --git a/apps/service-portal/src/favicon.ico b/apps/portals/my-pages/src/favicon.ico similarity index 100% rename from apps/service-portal/src/favicon.ico rename to apps/portals/my-pages/src/favicon.ico diff --git a/apps/service-portal/src/index.src.html b/apps/portals/my-pages/src/index.src.html similarity index 100% rename from apps/service-portal/src/index.src.html rename to apps/portals/my-pages/src/index.src.html diff --git a/apps/service-portal/src/lib/masterNavigation.ts b/apps/portals/my-pages/src/lib/masterNavigation.ts similarity index 89% rename from apps/service-portal/src/lib/masterNavigation.ts rename to apps/portals/my-pages/src/lib/masterNavigation.ts index 606652ad0cfc..2193cbcb9d64 100644 --- a/apps/service-portal/src/lib/masterNavigation.ts +++ b/apps/portals/my-pages/src/lib/masterNavigation.ts @@ -21,6 +21,8 @@ import { sessionsNavigation } from '@island.is/service-portal/sessions' import { consentNavigation } from '@island.is/service-portal/consent' import { ServicePortalPaths } from '@island.is/service-portal/core' import { socialInsuranceMaintenanceNavigation } from '@island.is/service-portal/social-insurance-maintenance' +import { lawAndOrderNavigation } from '@island.is/service-portal/law-and-order' +import { companySignatureCollectionNavigation } from '@island.is/service-portal/signature-collection' export const rootNavigationItem: PortalNavigationItem = { name: m.overview, @@ -46,6 +48,7 @@ export const MAIN_NAVIGATION: PortalNavigationItem = { ], }, companyNavigation, + companySignatureCollectionNavigation, informationNavigation, socialInsuranceMaintenanceNavigation, assetsNavigation, @@ -55,5 +58,6 @@ export const MAIN_NAVIGATION: PortalNavigationItem = { occupationalLicensesNavigation, airDiscountNavigation, educationNavigation, + lawAndOrderNavigation, ], } diff --git a/apps/service-portal/src/lib/modules.ts b/apps/portals/my-pages/src/lib/modules.ts similarity index 95% rename from apps/service-portal/src/lib/modules.ts rename to apps/portals/my-pages/src/lib/modules.ts index 5e1415b5413e..abffbe74fa5e 100644 --- a/apps/service-portal/src/lib/modules.ts +++ b/apps/portals/my-pages/src/lib/modules.ts @@ -19,6 +19,7 @@ import { consentModule } from '@island.is/service-portal/consent' import { occupationalLicensesModule } from '@island.is/service-portal/occupational-licenses' import { signatureCollectionModule } from '@island.is/service-portal/signature-collection' import { socialInsuranceMaintenanceModule } from '@island.is/service-portal/social-insurance-maintenance' +import { lawAndOrderModule } from '@island.is/service-portal/law-and-order' /** * NOTE: @@ -47,4 +48,5 @@ export const modules: PortalModule[] = [ socialInsuranceMaintenanceModule, signatureCollectionModule, petitionsModule, + lawAndOrderModule, ] diff --git a/apps/service-portal/src/lib/routes.tsx b/apps/portals/my-pages/src/lib/routes.tsx similarity index 100% rename from apps/service-portal/src/lib/routes.tsx rename to apps/portals/my-pages/src/lib/routes.tsx diff --git a/apps/service-portal/src/mockServiceWorker.js b/apps/portals/my-pages/src/mockServiceWorker.js similarity index 100% rename from apps/service-portal/src/mockServiceWorker.js rename to apps/portals/my-pages/src/mockServiceWorker.js diff --git a/apps/service-portal/src/polyfills.ts b/apps/portals/my-pages/src/polyfills.ts similarity index 100% rename from apps/service-portal/src/polyfills.ts rename to apps/portals/my-pages/src/polyfills.ts diff --git a/apps/service-portal/src/screens/Dashboard/Dashboard.css.ts b/apps/portals/my-pages/src/screens/Dashboard/Dashboard.css.ts similarity index 100% rename from apps/service-portal/src/screens/Dashboard/Dashboard.css.ts rename to apps/portals/my-pages/src/screens/Dashboard/Dashboard.css.ts diff --git a/apps/service-portal/src/screens/Dashboard/Dashboard.tsx b/apps/portals/my-pages/src/screens/Dashboard/Dashboard.tsx similarity index 80% rename from apps/service-portal/src/screens/Dashboard/Dashboard.tsx rename to apps/portals/my-pages/src/screens/Dashboard/Dashboard.tsx index 769d19644e4d..4dcec472ff69 100644 --- a/apps/service-portal/src/screens/Dashboard/Dashboard.tsx +++ b/apps/portals/my-pages/src/screens/Dashboard/Dashboard.tsx @@ -1,4 +1,4 @@ -import React, { FC, useEffect } from 'react' +import React, { FC, useEffect, useState } from 'react' import { Link, useLocation } from 'react-router-dom' import { useAuth } from '@island.is/auth/react' import { @@ -16,7 +16,8 @@ import { useLocale } from '@island.is/localization' import { DocumentsPaths, DocumentLine, - useDocumentList, + DocumentLineV3, + useDocumentListV3, } from '@island.is/service-portal/documents' import { LinkResolver, @@ -36,12 +37,11 @@ import * as styles from './Dashboard.css' import cn from 'classnames' import { getOrganizationLogoUrl } from '@island.is/shared/utils' import { DocumentsScope } from '@island.is/auth/scopes' +import { useFeatureFlagClient } from '@island.is/react/feature-flags' export const Dashboard: FC<React.PropsWithChildren<unknown>> = () => { const { userInfo } = useAuth() - const { filteredDocuments, data, loading } = useDocumentList({ - defaultPageSize: 8, - }) + const { data: organizations } = useOrganizations() const { formatMessage } = useLocale() const { width } = useWindowSize() @@ -51,6 +51,28 @@ export const Dashboard: FC<React.PropsWithChildren<unknown>> = () => { const IS_COMPANY = userInfo?.profile?.subjectType === 'legalEntity' const hasDelegationAccess = userInfo?.scopes?.includes(DocumentsScope.main) + // Versioning feature flag. Remove after feature is live. + const [v3Enabled, setV3Enabled] = useState<boolean>() + + const { filteredDocuments, data, loading } = useDocumentListV3({ + defaultPageSize: 8, + }) + + const featureFlagClient = useFeatureFlagClient() + useEffect(() => { + const isFlagEnabled = async () => { + const ffEnabled = await featureFlagClient.getValue( + `isServicePortalDocumentsV3PageEnabled`, + false, + ) + if (ffEnabled) { + setV3Enabled(ffEnabled as boolean) + } + } + isFlagEnabled() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + useEffect(() => { PlausiblePageviewDetail( ServicePortalPaths.Root, @@ -219,22 +241,41 @@ export const Dashboard: FC<React.PropsWithChildren<unknown>> = () => { ) : filteredDocuments.length > 0 ? ( filteredDocuments.map((doc, i) => ( <Box key={doc.id}> - <DocumentLine - img={ - doc?.sender?.name - ? getOrganizationLogoUrl( - doc?.sender?.name, - organizations, - 60, - 'none', - ) - : undefined - } - documentLine={doc} - active={false} - asFrame - includeTopBorder={i === 0} - /> + {v3Enabled ? ( + <DocumentLineV3 + img={ + doc?.sender?.name + ? getOrganizationLogoUrl( + doc?.sender?.name, + organizations, + 60, + 'none', + ) + : undefined + } + documentLine={doc} + active={false} + asFrame + includeTopBorder={i === 0} + /> + ) : ( + <DocumentLine + img={ + doc?.sender?.name + ? getOrganizationLogoUrl( + doc?.sender?.name, + organizations, + 60, + 'none', + ) + : undefined + } + documentLine={doc} + active={false} + asFrame + includeTopBorder={i === 0} + /> + )} </Box> )) ) : ( diff --git a/apps/service-portal/src/screens/Dashboard/DashboardLoader.ts b/apps/portals/my-pages/src/screens/Dashboard/DashboardLoader.ts similarity index 100% rename from apps/service-portal/src/screens/Dashboard/DashboardLoader.ts rename to apps/portals/my-pages/src/screens/Dashboard/DashboardLoader.ts diff --git a/apps/service-portal/src/screens/Dashboard/module.tsx b/apps/portals/my-pages/src/screens/Dashboard/module.tsx similarity index 100% rename from apps/service-portal/src/screens/Dashboard/module.tsx rename to apps/portals/my-pages/src/screens/Dashboard/module.tsx diff --git a/apps/service-portal/src/styles.css b/apps/portals/my-pages/src/styles.css similarity index 96% rename from apps/service-portal/src/styles.css rename to apps/portals/my-pages/src/styles.css index a15926f7a180..0309efa80b87 100644 --- a/apps/service-portal/src/styles.css +++ b/apps/portals/my-pages/src/styles.css @@ -1,4 +1,4 @@ -@import '../../../libs/island-ui/fonts/fonts.css'; +@import '../../../../libs/island-ui/fonts/fonts.css'; a:hover { text-decoration: none; diff --git a/apps/service-portal/src/utils/Icons/idMapper.tsx b/apps/portals/my-pages/src/utils/Icons/idMapper.tsx similarity index 94% rename from apps/service-portal/src/utils/Icons/idMapper.tsx rename to apps/portals/my-pages/src/utils/Icons/idMapper.tsx index 61dcf5a6c1c3..5224276f4ae4 100644 --- a/apps/service-portal/src/utils/Icons/idMapper.tsx +++ b/apps/portals/my-pages/src/utils/Icons/idMapper.tsx @@ -15,6 +15,7 @@ import People from '../../components/AnimatedIcon/People' import Airplane from '../../components/AnimatedIcon/Airplane' import Heart from '../../components/AnimatedIcon/Heart' import CardWithCheckmark from '../../components/AnimatedIcon/CardWithCheckmark' +import Gavel from '../../components/AnimatedIcon/Gavel' export const iconIdMapper = (iconType: string) => { switch (iconType) { @@ -65,7 +66,9 @@ export const iconIdMapper = (iconType: string) => { return 'ehtpZ79segF1' // Framfærslur case 'cardWithCheckmark': - return 'eNwbxRm5ElG1' + return 'eyzGY9baL4Z1' + case 'gavel': + return 'eDi3AOmSGXe1' default: return '' } @@ -124,6 +127,9 @@ export const iconTypeToSVG = (iconType: string) => { // Framfærslur case 'cardWithCheckmark': return <CardWithCheckmark /> + // Lög og reglur + case 'gavel': + return <Gavel /> default: return undefined } diff --git a/apps/service-portal/src/utils/http.ts b/apps/portals/my-pages/src/utils/http.ts similarity index 100% rename from apps/service-portal/src/utils/http.ts rename to apps/portals/my-pages/src/utils/http.ts diff --git a/apps/service-portal/tsconfig.app.json b/apps/portals/my-pages/tsconfig.app.json similarity index 66% rename from apps/service-portal/tsconfig.app.json rename to apps/portals/my-pages/tsconfig.app.json index 7b393f34efb5..fd8d416789dd 100644 --- a/apps/service-portal/tsconfig.app.json +++ b/apps/portals/my-pages/tsconfig.app.json @@ -9,6 +9,10 @@ "@nx/react/typings/image.d.ts" ] }, + "files": [ + "../../../node_modules/@nx/react/typings/cssmodule.d.ts", + "../../../node_modules/@nx/react/typings/image.d.ts" + ], "exclude": [ "**/*.spec.ts", "**/*.test.ts", @@ -16,9 +20,5 @@ "**/*.test.tsx", "jest.config.ts" ], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"], - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ] + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] } diff --git a/apps/service-portal/tsconfig.json b/apps/portals/my-pages/tsconfig.json similarity index 83% rename from apps/service-portal/tsconfig.json rename to apps/portals/my-pages/tsconfig.json index 1b1250d45456..fa2981417225 100644 --- a/apps/service-portal/tsconfig.json +++ b/apps/portals/my-pages/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "jsx": "react-jsx", "allowJs": true diff --git a/apps/service-portal/tsconfig.spec.json b/apps/portals/my-pages/tsconfig.spec.json similarity index 74% rename from apps/service-portal/tsconfig.spec.json rename to apps/portals/my-pages/tsconfig.spec.json index 28adbea5ea7e..fb9560cde88f 100644 --- a/apps/service-portal/tsconfig.spec.json +++ b/apps/portals/my-pages/tsconfig.spec.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "outDir": "../../dist/out-tsc", + "outDir": "../../../dist/out-tsc", "module": "commonjs", "types": [ "jest", @@ -11,19 +11,19 @@ ] }, "include": [ - "**/*.spec.ts", "**/*.test.ts", - "**/*.spec.tsx", + "**/*.spec.ts", "**/*.test.tsx", - "**/*.spec.js", + "**/*.spec.tsx", "**/*.test.js", - "**/*.spec.jsx", + "**/*.spec.js", "**/*.test.jsx", + "**/*.spec.jsx", "**/*.d.ts", "jest.config.ts" ], "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" + "../../../node_modules/@nx/react/typings/cssmodule.d.ts", + "../../../node_modules/@nx/react/typings/image.d.ts" ] } diff --git a/apps/service-portal/webpack.config.js b/apps/portals/my-pages/webpack.config.js similarity index 77% rename from apps/service-portal/webpack.config.js rename to apps/portals/my-pages/webpack.config.js index a7f757e186a6..6f9c404b1b27 100644 --- a/apps/service-portal/webpack.config.js +++ b/apps/portals/my-pages/webpack.config.js @@ -1,10 +1,10 @@ -const nrwlConfig = require('./../../libs/shared/webpack/nrwl-config') +// eslint-disable-next-line @typescript-eslint/no-var-requires +const nrwlConfig = require('./../../../libs/shared/webpack/nrwl-config') const { composePlugins, withNx } = require('@nx/webpack') const { withReact } = require('@nx/react') const isDev = process.env.NODE_ENV === 'development' -// Nx plugins for webpack. module.exports = composePlugins(withNx(), withReact(), nrwlConfig, (config) => { // App specific config config.stats.chunks = false diff --git a/apps/service-portal/.eslintrc.json b/apps/service-portal/.eslintrc.json deleted file mode 100644 index eb932df61117..000000000000 --- a/apps/service-portal/.eslintrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": ["plugin:@nx/react", "../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "rules": {}, - "overrides": [ - { "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], "rules": {} }, - { "files": ["*.ts", "*.tsx"], "rules": {} }, - { "files": ["*.js", "*.jsx"], "rules": {} } - ] -} diff --git a/apps/service-portal/src/assets/icons/sidebar/cardWithCheckmark.svg b/apps/service-portal/src/assets/icons/sidebar/cardWithCheckmark.svg deleted file mode 100644 index e6734dfe4ecf..000000000000 --- a/apps/service-portal/src/assets/icons/sidebar/cardWithCheckmark.svg +++ /dev/null @@ -1,27 +0,0 @@ -<svg id="eNwbxRm5ElG1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" - shape-rendering="geometricPrecision" text-rendering="geometricPrecision" style="cursor:pointer"> - <g> - <path - d="M25.5,13.907135v-3.730335c0-1.6569-1.3431-3.00004-3-3.00004h-14.02002c-1.65685,0-3,1.34314-3,3.00004v8.8c0,1.6568,1.34315,3,3,3h2.00502h2.978377" - fill="none" stroke="#0061ff" stroke-width="1.5" stroke-linecap="round" /> - <path - d="M5.47998,11.25c0-.4142.21341-.75.47667-.75h19.06675c.2632,0,.4766.3358.4766.75s-.2134.75-.4766.75h-19.06675c-.26326,0-.47667-.3358-.47667-.75Z" - clip-rule="evenodd" fill="#0061ff" fill-rule="evenodd" /> - </g> - <g id="eNwbxRm5ElG5"> - <path id="eNwbxRm5ElG6" d="M19.646659,21.451857L20.8451,22.8451c.0832.0832.2198.077.2951-.0133L23.5,20" - transform="translate(0 0.048143)" fill="none" stroke="#0061ff" stroke-width="1.5" stroke-linecap="round" - stroke-dasharray="6" /> - <path - d="M0,4.75C0,2.126647,2.126647,0,4.75,0s4.75,2.126647,4.75,4.75-2.126647,4.75-4.75,4.75-4.75-2.126647-4.75-4.75Z" - transform="translate(16.75 16.1611)" fill="none" stroke="#0061ff" stroke-width="1.5" /> - </g> - <path id="eNwbxRm5ElG8" d="M8.44141,18.8213h4" fill="none" stroke="#0061ff" stroke-width="1.5" stroke-linecap="round" - stroke-dasharray="4" /> - <path id="eNwbxRm5ElG9" d="M8.44141,16.3213h2" fill="none" stroke="#0061ff" stroke-width="1.5" stroke-linecap="round" - stroke-dasharray="2" /> - <script> - <![CDATA[ - ]]> - </script> -</svg> \ No newline at end of file diff --git a/apps/service-portal/src/components/AnimatedIcon/CardWithCheckmark.jsx b/apps/service-portal/src/components/AnimatedIcon/CardWithCheckmark.jsx deleted file mode 100644 index 8e648f3b0333..000000000000 --- a/apps/service-portal/src/components/AnimatedIcon/CardWithCheckmark.jsx +++ /dev/null @@ -1,79 +0,0 @@ -/* eslint-disable */ - -import { useEffect } from 'react' -import { ReactComponent as Svg } from '../../assets/icons/sidebar/cardWithCheckmark.svg' - -export default function CardWithCheckmark() { - useEffect(() => { - // prettier-ignore - !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof __SVGATOR_DEFINE__&&__SVGATOR_DEFINE__.amd?__SVGATOR_DEFINE__(e):((t="undefined"!=typeof globalThis?globalThis:t||self).__SVGATOR_PLAYER__=t.__SVGATOR_PLAYER__||{},t.__SVGATOR_PLAYER__["91c80d77"]=e())}(this,(function(){function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function e(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(t){u(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function u(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function f(t,e,n){return(f=s()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&l(i,n.prototype),i}).apply(null,arguments)}function c(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function h(t,e,n){return(h="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=a(t)););return t}(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}function v(t){return function(t){if(Array.isArray(t))return d(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return d(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function y(t,e,n){if(Number.isInteger(t))return t;var r=Math.pow(10,e);return Math[n]((+t+Number.EPSILON)*r)/r}Number.isInteger||(Number.isInteger=function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t}),Number.EPSILON||(Number.EPSILON=2220446049250313e-31);var g=p(Math.pow(10,-6));function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return y(t,e,"round")}function m(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g;return Math.abs(t-e)<n}p(Math.pow(10,-2)),p(Math.pow(10,-4));var b=Math.PI/180;function w(t){return t}function k(t,e,n){var r=1-n;return 3*n*r*(t*r+e*n)+n*n*n}function _(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return t<0||t>1||n<0||n>1?null:m(t,e)&&m(n,r)?w:function(i){if(i<=0)return t>0?i*e/t:0===e&&n>0?i*r/n:0;if(i>=1)return n<1?1+(i-1)*(r-1)/(n-1):1===n&&t<1?1+(i-1)*(e-1)/(t-1):1;for(var o,u=0,a=1;u<a;){var l=k(t,n,o=(u+a)/2);if(m(i,l))break;l<i?u=o:a=o}return k(e,r,o)}}function A(){return 1}function x(t){return 1===t?1:0}function O(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(1===t){if(0===e)return x;if(1===e)return A}var n=1/t;return function(t){return t>=1?1:(t+=e*n)-t%n}}var S=Math.sin,E=Math.cos,j=Math.acos,M=Math.asin,P=Math.tan,B=Math.atan2,I=Math.PI/180,T=180/Math.PI,N=Math.sqrt,R=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;r(this,t),this.m=[e,n,i,o,u,a],this.i=null,this.w=null,this.s=null}return o(t,[{key:"determinant",get:function(){var t=this.m;return t[0]*t[3]-t[1]*t[2]}},{key:"isIdentity",get:function(){if(null===this.i){var t=this.m;this.i=1===t[0]&&0===t[1]&&0===t[2]&&1===t[3]&&0===t[4]&&0===t[5]}return this.i}},{key:"point",value:function(t,e){var n=this.m;return{x:n[0]*t+n[2]*e+n[4],y:n[1]*t+n[3]*e+n[5]}}},{key:"translateSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t&&!e)return this;var n=this.m;return n[4]+=n[0]*t+n[2]*e,n[5]+=n[1]*t+n[3]*e,this.w=this.s=this.i=null,this}},{key:"rotateSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(t%=360){var e=S(t*=I),n=E(t),r=this.m,i=r[0],o=r[1];r[0]=i*n+r[2]*e,r[1]=o*n+r[3]*e,r[2]=r[2]*n-i*e,r[3]=r[3]*n-o*e,this.w=this.s=this.i=null}return this}},{key:"scaleSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(1!==t||1!==e){var n=this.m;n[0]*=t,n[1]*=t,n[2]*=e,n[3]*=e,this.w=this.s=this.i=null}return this}},{key:"skewSelf",value:function(t,e){if(e%=360,(t%=360)||e){var n=this.m,r=n[0],i=n[1],o=n[2],u=n[3];t&&(t=P(t*I),n[2]+=r*t,n[3]+=i*t),e&&(e=P(e*I),n[0]+=o*e,n[1]+=u*e),this.w=this.s=this.i=null}return this}},{key:"resetSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,u=this.m;return u[0]=t,u[1]=e,u[2]=n,u[3]=r,u[4]=i,u[5]=o,this.w=this.s=this.i=null,this}},{key:"recomposeSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;return this.isIdentity||this.resetSelf(),t&&(t.x||t.y)&&this.translateSelf(t.x,t.y),e&&this.rotateSelf(e),n&&(n.x&&this.skewSelf(n.x,0),n.y&&this.skewSelf(0,n.y)),!r||1===r.x&&1===r.y||this.scaleSelf(r.x,r.y),i&&(i.x||i.y)&&this.translateSelf(i.x,i.y),this}},{key:"decompose",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.m,r=n[0]*n[0]+n[1]*n[1],i=[[n[0],n[1]],[n[2],n[3]]],o=N(r);if(0===o)return{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:0,y:0},skew:{x:0,y:0},rotate:0};i[0][0]/=o,i[0][1]/=o;var u=n[0]*n[3]-n[1]*n[2]<0;u&&(o=-o);var a=i[0][0]*i[1][0]+i[0][1]*i[1][1];i[1][0]-=i[0][0]*a,i[1][1]-=i[0][1]*a;var l=N(i[1][0]*i[1][0]+i[1][1]*i[1][1]);if(0===l)return{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:p(o),y:0},skew:{x:0,y:0},rotate:0};i[1][0]/=l,i[1][1]/=l,a/=l;var s=0;return i[1][1]<0?(s=j(i[1][1])*T,i[0][1]<0&&(s=360-s)):s=M(i[0][1])*T,u&&(s=-s),a=B(a,N(i[0][0]*i[0][0]+i[0][1]*i[0][1]))*T,u&&(a=-a),{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:p(o),y:p(l)},skew:{x:p(a),y:0},rotate:p(s)}}},{key:"clone",value:function(){var t=this.m;return new this.constructor(t[0],t[1],t[2],t[3],t[4],t[5])}},{key:"toString",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:" ";if(null===this.s){var e=this.m.map((function(t){return p(t)}));1===e[0]&&0===e[1]&&0===e[2]&&1===e[3]?this.s="translate("+e[4]+t+e[5]+")":this.s="matrix("+e.join(t)+")"}return this.s}}],[{key:"create",value:function(t){return t?Array.isArray(t)?f(this,v(t)):t instanceof this?t.clone():(new this).recomposeSelf(t.origin,t.rotate,t.skew,t.scale,t.translate):new this}}]),t}();function F(t,e,n){return t>=.5?n:e}function D(t,e,n){return 0===t||e===n?e:t*(n-e)+e}function C(t,e,n){var r=D(t,e,n);return r<=0?0:r}function q(t,e,n){var r=D(t,e,n);return r<=0?0:r>=1?1:r}function L(t,e,n){return 0===t?e:1===t?n:{x:D(t,e.x,n.x),y:D(t,e.y,n.y)}}function V(t,e,n){return 0===t?e:1===t?n:{x:C(t,e.x,n.x),y:C(t,e.y,n.y)}}function G(t,e,n){var r=function(t,e,n){return Math.round(D(t,e,n))}(t,e,n);return r<=0?0:r>=255?255:r}function z(t,e,n){return 0===t?e:1===t?n:{r:G(t,e.r,n.r),g:G(t,e.g,n.g),b:G(t,e.b,n.b),a:D(t,null==e.a?1:e.a,null==n.a?1:n.a)}}function Y(t,e,n){var r=e.length;if(r!==n.length)return F(t,e,n);for(var i=new Array(r),o=0;o<r;o++)i[o]=D(t,e[o],n[o]);return i}function U(t,e){for(var n=[],r=0;r<t;r++)n.push(e);return n}function W(t,e){if(--e<=0)return t;var n=(t=Object.assign([],t)).length;do{for(var r=0;r<n;r++)t.push(t[r])}while(--e>0);return t}var $,H=function(){function t(e){r(this,t),this.list=e,this.length=e.length}return o(t,[{key:"setAttribute",value:function(t,e){for(var n=this.list,r=0;r<this.length;r++)n[r].setAttribute(t,e)}},{key:"removeAttribute",value:function(t){for(var e=this.list,n=0;n<this.length;n++)e[n].removeAttribute(t)}},{key:"style",value:function(t,e){for(var n=this.list,r=0;r<this.length;r++)n[r].style[t]=e}}]),t}(),Q=/-./g,X=function(t,e){return e.toUpperCase()};function J(t){return"function"==typeof t?t:F}function K(t){return t?"function"==typeof t?t:Array.isArray(t)?function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w;if(!Array.isArray(t))return e;switch(t.length){case 1:return O(t[0])||e;case 2:return O(t[0],t[1])||e;case 4:return _(t[0],t[1],t[2],t[3])||e}return e}(t,null):function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:w;switch(t){case"linear":return w;case"steps":return O(e.steps||1,e.jump||0)||n;case"bezier":case"cubic-bezier":return _(e.x1||0,e.y1||0,e.x2||0,e.y2||0)||n}return n}(t.type,t.value,null):null}function Z(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=e.length-1;if(t<=e[0].t)return r?[0,0,e[0].v]:e[0].v;if(t>=e[i].t)return r?[i,1,e[i].v]:e[i].v;var o,u=e[0],a=null;for(o=1;o<=i;o++){if(!(t>e[o].t)){a=e[o];break}u=e[o]}return null==a?r?[i,1,e[i].v]:e[i].v:u.t===a.t?r?[o,1,a.v]:a.v:(t=(t-u.t)/(a.t-u.t),u.e&&(t=u.e(t)),r?[o,t,n(t,u.v,a.v)]:n(t,u.v,a.v))}function tt(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return t&&t.length?"function"!=typeof e?null:("function"!=typeof n&&(n=null),function(r){var i=Z(r,t,e);return null!=i&&n&&(i=n(i)),i}):null}function et(t,e){return t.t-e.t}function nt(t,e,r,i,o){var u,a="@"===r[0],l="#"===r[0],s=$[r],f=F;switch(a?(u=r.substr(1),r=u.replace(Q,X)):l&&(r=r.substr(1)),n(s)){case"function":if(f=s(i,o,Z,K,r,a,e,t),l)return f;break;case"string":f=tt(i,J(s));break;case"object":if((f=tt(i,J(s.i),s.f))&&"function"==typeof s.u)return s.u(e,f,r,a,t)}return f?function(t,e,n){if(arguments.length>3&&void 0!==arguments[3]&&arguments[3])return t instanceof H?function(r){return t.style(e,n(r))}:function(r){return t.style[e]=n(r)};if(Array.isArray(e)){var r=e.length;return function(i){var o=n(i);if(null==o)for(var u=0;u<r;u++)t[u].removeAttribute(e);else for(var a=0;a<r;a++)t[a].setAttribute(e,o)}}return function(r){var i=n(r);null==i?t.removeAttribute(e):t.setAttribute(e,i)}}(e,r,f,a):null}function rt(t,e,r,i){if(!i||"object"!==n(i))return null;var o=null,u=null;return Array.isArray(i)?u=function(t){if(!t||!t.length)return null;for(var e=0;e<t.length;e++)t[e].e&&(t[e].e=K(t[e].e));return t.sort(et)}(i):(u=i.keys,o=i.data||null),u?nt(t,e,r,u,o):null}function it(t,e,n){if(!n)return null;var r=[];for(var i in n)if(n.hasOwnProperty(i)){var o=rt(t,e,i,n[i]);o&&r.push(o)}return r.length?r:null}function ot(t,e){if(!e.settings.duration||e.settings.duration<0)return null;var n,r,i,o,u,a=function(t,e){if(!e)return null;var n=[];if(Array.isArray(e))for(var r=e.length,i=0;i<r;i++){var o=e[i];if(2===o.length){var u=null;if("string"==typeof o[0])u=t.getElementById(o[0]);else if(Array.isArray(o[0])){u=[];for(var a=0;a<o[0].length;a++)if("string"==typeof o[0][a]){var l=t.getElementById(o[0][a]);l&&u.push(l)}u=u.length?1===u.length?u[0]:new H(u):null}if(u){var s=it(t,u,o[1]);s&&(n=n.concat(s))}}}else for(var f in e)if(e.hasOwnProperty(f)){var c=t.getElementById(f);if(c){var h=it(t,c,e[f]);h&&(n=n.concat(h))}}return n.length?n:null}(t,e.elements);return a?(n=a,r=e.settings,i=r.duration,o=n.length,u=null,function(t,e){var a=r.iterations||1/0,l=(r.alternate&&a%2==0)^r.direction>0?i:0,s=t%i,f=1+(t-s)/i;e*=r.direction,r.alternate&&f%2==0&&(e=-e);var c=!1;if(f>a)s=l,c=!0,-1===r.fill&&(s=r.direction>0?0:i);else if(e<0&&(s=i-s),s===u)return!1;u=s;for(var h=0;h<o;h++)n[h](s);return c}):null}function ut(t,e){for(var n=e.querySelectorAll("svg"),r=0;r<n.length;r++)if(n[r].id===t.root&&!n[r].svgatorAnimation)return n[r].svgatorAnimation=!0,n[r];return null}function at(t){var e=function(t){return t.shadowRoot};return document?Array.from(t.querySelectorAll(":not("+["a","area","audio","br","canvas","circle","datalist","embed","g","head","hr","iframe","img","input","link","object","path","polygon","rect","script","source","style","svg","title","track","video"].join()+")")).filter(e).map(e):[]}function lt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=ut(t,e);if(r)return r;if(n>=20)return null;for(var i=at(e),o=0;o<i.length;o++){var u=lt(t,i[o],n+1);if(u)return u}return null}function st(t,e){if($=e,!t||!t.root||!Array.isArray(t.animations))return null;var n=lt(t);if(!n)return null;var r=t.animations.map((function(t){return ot(n,t)})).filter((function(t){return!!t}));return r.length?{svg:n,animations:r,animationSettings:t.animationSettings,options:t.options||void 0}:null}function ft(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"undefined"!=typeof BigInt&&BigInt,i="0x"+(t.replace(/[^0-9a-fA-F]+/g,"")||27);return e&&r&&n.isSafeInteger&&!n.isSafeInteger(+i)?n(r(i))%e+e:+i}function ct(t,e,n){return!t||!n||e>t.length?t:t.substring(0,e)+ct(t.substring(e+1),n,n)}function ht(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:27;return!t||t%e?t%e:[0,1].includes(e)?e:ht(t/e,e)}function vt(t,e,n){if(t&&t.length){var r=ft(n),i=ht(r)+5,o=ct(t,ht(r,5),i);return o=o.replace(/\x7c$/g,"==").replace(/\x2f$/g,"="),o=function(t,e,n){var r=+("0x"+t.substring(0,4));t=t.substring(4);for(var i=ft(e,r)%r+n%27,o=[],u=0;u<t.length;u+=2)if("|"!==t[u]){var a=+("0x"+t[u]+t[u+1])-i;o.push(a)}else{var l=+("0x"+t.substring(u+1,u+1+4))-i;u+=3,o.push(l)}return String.fromCharCode.apply(String,o)}(o=(o=atob(o)).replace(/[\x41-\x5A]/g,""),e,r),o=JSON.parse(o)}}var dt=[{key:"alternate",def:!1},{key:"fill",def:1},{key:"iterations",def:0},{key:"direction",def:1},{key:"speed",def:1},{key:"fps",def:100}],yt=function(){function t(e,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;r(this,t),this._id=0,this._running=!1,this._rollingBack=!1,this._animations=e,this._settings=n,(!o||o<"2022-05-02")&&delete this._settings.speed,dt.forEach((function(t){i._settings[t.key]=i._settings[t.key]||t.def})),this.duration=n.duration,this.offset=n.offset||0,this.rollbackStartOffset=0}return o(t,[{key:"alternate",get:function(){return this._settings.alternate}},{key:"fill",get:function(){return this._settings.fill}},{key:"iterations",get:function(){return this._settings.iterations}},{key:"direction",get:function(){return this._settings.direction}},{key:"speed",get:function(){return this._settings.speed}},{key:"fps",get:function(){return this._settings.fps}},{key:"maxFiniteDuration",get:function(){return this.iterations>0?this.iterations*this.duration:this.duration}},{key:"_apply",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this._animations,r=n.length,i=0,o=0;o<r;o++)e[o]?i++:(e[o]=n[o](t,1),e[o]&&i++);return i}},{key:"_rollback",value:function(t){var e=this,n=1/0,r=null;this.rollbackStartOffset=t,this._rollingBack=!0,this._running=!0;this._id=window.requestAnimationFrame((function i(o){if(e._rollingBack){null==r&&(r=o);var u=Math.round(t-(o-r)*e.speed);if(u>e.duration&&n!==1/0){var a=!!e.alternate&&u/e.duration%2>1,l=u%e.duration;u=(l+=a?e.duration:0)||e.duration}var s=(e.fps?1e3/e.fps:0)*e.speed,f=Math.max(0,u);f<=n-s&&(e.offset=f,n=f,e._apply(f));var c=e.iterations>0&&-1===e.fill&&u>=e.maxFiniteDuration;(u<=0||e.offset<u||c)&&e.stop(),e._id=window.requestAnimationFrame(i)}}))}},{key:"_start",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=-1/0,r=null,i={};this._running=!0;var o=function o(u){null==r&&(r=u);var a=Math.round((u-r)*t.speed+e),l=(t.fps?1e3/t.fps:0)*t.speed;if(a>=n+l&&!t._rollingBack&&(t.offset=a,n=a,t._apply(a,i)===t._animations.length))return void t.pause(!0);t._id=window.requestAnimationFrame(o)};this._id=window.requestAnimationFrame(o)}},{key:"_pause",value:function(){this._id&&window.cancelAnimationFrame(this._id),this._running=!1}},{key:"play",value:function(){if(!this._running)return this._rollingBack?this._rollback(this.offset):this._start(this.offset)}},{key:"stop",value:function(){this._pause(),this.offset=0,this.rollbackStartOffset=0,this._rollingBack=!1,this._apply(0)}},{key:"reachedToEnd",value:function(){return this.iterations>0&&this.offset>=this.iterations*this.duration}},{key:"restart",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.stop(t),this.play(t)}},{key:"pause",value:function(){this._pause()}},{key:"reverse",value:function(){this.direction=-this.direction}}],[{key:"build",value:function(t,e){delete t.animationSettings,t.options=vt(t.options,t.root,"91c80d77"),t.animations.map((function(e){e.settings=vt(e.s,t.root,"91c80d77"),delete e.s,t.animationSettings||(t.animationSettings=e.settings)}));var n=t.version;if(!(t=st(t,e)))return null;var r=t.options||{},i=new this(t.animations,t.animationSettings,n);return{el:t.svg,options:r,player:i}}},{key:"push",value:function(t){return this.build(t)}},{key:"init",value:function(){var t=this,e=window.__SVGATOR_PLAYER__&&window.__SVGATOR_PLAYER__["91c80d77"];Array.isArray(e)&&e.splice(0).forEach((function(e){return t.build(e)}))}}]),t}();!function(){for(var t=0,e=["ms","moz","webkit","o"],n=0;n<e.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[e[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[n]+"CancelAnimationFrame"]||window[e[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var n=Date.now(),r=Math.max(0,16-(n-t)),i=window.setTimeout((function(){e(n+r)}),r);return t=n+r,i},window.cancelAnimationFrame=window.clearTimeout)}();var gt=function(){function t(e,n,i){r(this,t);var o=function(t){var e,n,r,i=t&&1===(null===(e=t.ownerDocument)||void 0===e||null===(n=e.childNodes)||void 0===n?void 0:n.length)&&window.parent!==window,o={el:t,window:window};if(!i)return o;try{r=window.parent.document}catch(t){return o}return o.window=window.parent,o.el=Array.from(r.querySelectorAll("iframe,object")).filter((function(t){return t.contentWindow===window}))[0]||o.el,o}(e);n=Math.max(1,n||1),n=Math.min(n,100),this.el=o.el,this._handlers=[],this.onThresholdChange=i&&i.call?i:function(){},this.thresholdPercent=n||1,this.currentVisibility=null,this.visibilityCalculator=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n,r=!1,i=null,o=function(){for(var o=0,u=n.innerHeight,a=0,l=n.innerWidth,s=t.parentNode;s instanceof Element;){var f=n.getComputedStyle(s);if("visible"!==f.overflowY||"visible"!==f.overflowX){var c=s.getBoundingClientRect();"visible"!==f.overflowY&&(o=Math.max(o,c.top),u=Math.min(u,c.bottom)),"visible"!==f.overflowX&&(a=Math.max(a,c.left),l=Math.min(l,c.right))}if(s===s.parentNode)break;s=s.parentNode}r=!1;var h=t.getBoundingClientRect(),v=Math.min(h.height,Math.max(0,o-h.top)),d=Math.min(h.height,Math.max(0,h.bottom-u)),y=Math.min(h.width,Math.max(0,a-h.left)),g=Math.min(h.width,Math.max(0,h.right-l)),p=(h.height-v-d)/h.height,m=(h.width-y-g)/h.width,b=Math.round(p*m*100);null!==i&&i===b||(i=b,e(b))};return function(t){r&&clearTimeout(r),r=setTimeout((function(){return o()}),100)}}(this.el,this.onVisibilityUpdate.bind(this),o.window),this.bindScrollWatchers(),this.visibilityCalculator()}return o(t,[{key:"bindScrollWatchers",value:function(){for(var t=this.el.parentNode;t&&(this._handlers.push({element:t,event:"scroll",handler:this.visibilityCalculator}),t.addEventListener("scroll",this.visibilityCalculator),t!==t.parentNode&&t!==document);)t=t.parentNode}},{key:"onVisibilityUpdate",value:function(t){var e=this.currentVisibility>=this.thresholdPercent,n=t>=this.thresholdPercent;if(null===this.currentVisibility||e!==n)return this.currentVisibility=t,void this.onThresholdChange(n);this.currentVisibility=t}},{key:"destruct",value:function(){this._handlers.forEach((function(t){t.element.removeEventListener(t.event,t.handler)}))}}]),t}();function pt(t){return p(t)+""}function mt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return t&&t.length?t.map(pt).join(e):""}function bt(t){return pt(t.x)+","+pt(t.y)}function wt(t){if(!t)return"transparent";if(null==t.a||t.a>=1){var e=function(t){return 1===(t=parseInt(t).toString(16)).length?"0"+t:t},n=function(t){return t.charAt(0)===t.charAt(1)},r=e(t.r),i=e(t.g),o=e(t.b);return n(r)&&n(i)&&n(o)&&(r=r.charAt(0),i=i.charAt(0),o=o.charAt(0)),"#"+r+i+o}return"rgba("+t.r+","+t.g+","+t.b+","+t.a+")"}function kt(t){return t?"url(#"+t+")":"none"}var _t={f:null,i:V,u:function(t,e){return function(n){var r=e(n);t.setAttribute("rx",pt(r.x)),t.setAttribute("ry",pt(r.y))}}},At={f:null,i:function(t,e,n){return 0===t?e:1===t?n:{width:C(t,e.width,n.width),height:C(t,e.height,n.height)}},u:function(t,e){return function(n){var r=e(n);t.setAttribute("width",pt(r.width)),t.setAttribute("height",pt(r.height))}}};Object.freeze({M:2,L:2,Z:0,H:1,V:1,C:6,Q:4,T:2,S:4,A:7});var xt={},Ot=null;function St(t){var e=function(){if(Ot)return Ot;if("object"!==("undefined"==typeof document?"undefined":n(document))||!document.createElementNS)return{};var t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t&&t.style?(t.style.position="absolute",t.style.opacity="0.01",t.style.zIndex="-9999",t.style.left="-9999px",t.style.width="1px",t.style.height="1px",Ot={svg:t}):{}}().svg;if(!e)return function(t){return null};var r=document.createElementNS(e.namespaceURI,"path");r.setAttributeNS(null,"d",t),r.setAttributeNS(null,"fill","none"),r.setAttributeNS(null,"stroke","none"),e.appendChild(r);var i=r.getTotalLength();return function(t){var e=r.getPointAtLength(i*t);return{x:e.x,y:e.y}}}function Et(t){return xt[t]?xt[t]:xt[t]=St(t)}function jt(t,e,n,r){if(!t||!r)return!1;var i=["M",t.x,t.y];if(e&&n&&(i.push("C"),i.push(e.x),i.push(e.y),i.push(n.x),i.push(n.y)),e?!n:n){var o=e||n;i.push("Q"),i.push(o.x),i.push(o.y)}return e||n||i.push("L"),i.push(r.x),i.push(r.y),i.join(" ")}function Mt(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=jt(t,e,n,r),u=Et(o);try{return u(i)}catch(t){return null}}function Pt(t,e,n){return t+(e-t)*n}function Bt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i={x:Pt(t.x,e.x,n),y:Pt(t.y,e.y,n)};return r&&(i.a=It(t,e)),i}function It(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}function Tt(t,e,n,r){var i=1-r;return i*i*t+2*i*r*e+r*r*n}function Nt(t,e,n,r){return 2*(1-r)*(e-t)+2*r*(n-e)}function Rt(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=Mt(t,e,null,n,r);return o||(o={x:Tt(t.x,e.x,n.x,r),y:Tt(t.y,e.y,n.y,r)}),i&&(o.a=Ft(t,e,n,r)),o}function Ft(t,e,n,r){return Math.atan2(Nt(t.y,e.y,n.y,r),Nt(t.x,e.x,n.x,r))}function Dt(t,e,n,r,i){var o=i*i;return i*o*(r-t+3*(e-n))+3*o*(t+n-2*e)+3*i*(e-t)+t}function Ct(t,e,n,r,i){var o=1-i;return 3*(o*o*(e-t)+2*o*i*(n-e)+i*i*(r-n))}function qt(t,e,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],u=Mt(t,e,n,r,i);return u||(u={x:Dt(t.x,e.x,n.x,r.x,i),y:Dt(t.y,e.y,n.y,r.y,i)}),o&&(u.a=Lt(t,e,n,r,i)),u}function Lt(t,e,n,r,i){return Math.atan2(Ct(t.y,e.y,n.y,r.y,i),Ct(t.x,e.x,n.x,r.x,i))}function Vt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(zt(e)){if(Yt(n))return Rt(e,n.start,n,t,r)}else if(zt(n)){if(Ut(e))return Rt(e,e.end,n,t,r)}else{if(Ut(e))return Yt(n)?qt(e,e.end,n.start,n,t,r):Rt(e,e.end,n,t,r);if(Yt(n))return Rt(e,n.start,n,t,r)}return Bt(e,n,t,r)}function Gt(t,e,n){var r=Vt(t,e,n,!0);return r.a=function(t){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?t+Math.PI:t}(r.a)/b,r}function zt(t){return!t.type||"corner"===t.type}function Yt(t){return null!=t.start&&!zt(t)}function Ut(t){return null!=t.end&&!zt(t)}var Wt=new R;var $t={f:function(t){return t?t.join(" "):""},i:function(t,e,r){if(0===t)return e;if(1===t)return r;var i=e.length;if(i!==r.length)return F(t,e,r);for(var o,u=new Array(i),a=0;a<i;a++){if((o=n(e[a]))!==n(r[a]))return F(t,e,r);if("number"===o)u[a]=D(t,e[a],r[a]);else{if(e[a]!==r[a])return F(t,e,r);u[a]=e[a]}}return u}},Ht={f:null,i:Y,u:function(t,e){return function(n){var r=e(n);t.setAttribute("x1",pt(r[0])),t.setAttribute("y1",pt(r[1])),t.setAttribute("x2",pt(r[2])),t.setAttribute("y2",pt(r[3]))}}},Qt={f:pt,i:D},Xt={f:pt,i:q},Jt={f:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return t&&t.length>0&&(t=t.map((function(t){return p(t,4)}))),mt(t,e)},i:function(t,e,n){var r,i,o,u=e.length,a=n.length;if(u!==a)if(0===u)e=U(u=a,0);else if(0===a)a=u,n=U(u,0);else{var l=(o=(r=u)*(i=a)/function(t,e){for(var n;e;)n=e,e=t%e,t=n;return t||1}(r,i))<0?-o:o;e=W(e,Math.floor(l/u)),n=W(n,Math.floor(l/a)),u=a=l}for(var s=[],f=0;f<u;f++)s.push(p(C(t,e[f],n[f])));return s}};function Kt(t,e,n){return t.map((function(t){return function(t,e,n){var r=t.v;if(!r||"g"!==r.t||r.s||!r.v||!r.r)return t;var i=n.getElementById(r.r),o=i&&i.querySelectorAll("stop")||[];return r.s=r.v.map((function(t,e){var n=o[e]&&o[e].getAttribute("offset");return{c:t,o:n=p(parseInt(n)/100)}})),delete r.v,t}(t,0,n)}))}var Zt={gt:"gradientTransform",c:{x:"cx",y:"cy"},rd:"r",f:{x:"x1",y:"y1"},to:{x:"x2",y:"y2"}};function te(t,e,r,i,o,u,a,l){return Kt(t,0,l),e=function(t,e,n){for(var r,i,o,u=t.length-1,a={},l=0;l<=u;l++)(r=t[l]).e&&(r.e=e(r.e)),r.v&&"g"===(i=r.v).t&&i.r&&(o=n.getElementById(i.r))&&(a[i.r]={e:o,s:o.querySelectorAll("stop")});return a}(t,i,l),function(i){var o=r(i,t,ee);if(!o)return"none";if("c"===o.t)return wt(o.v);if("g"===o.t){if(!e[o.r])return kt(o.r);var u=e[o.r];return function(t,e){for(var n=t.s,r=n.length;r<e.length;r++){var i=n[n.length-1].cloneNode();i.id=ie(i.id),t.e.appendChild(i),n=t.s=t.e.querySelectorAll("stop")}for(var o=0,u=n.length,a=e.length-1;o<u;o++)n[o].setAttribute("stop-color",wt(e[Math.min(o,a)].c)),n[o].setAttribute("offset",e[Math.min(o,a)].o)}(u,o.s),Object.keys(Zt).forEach((function(t){if(void 0!==o[t])if("object"!==n(Zt[t])){var e,r="gt"===t?(e=o[t],Array.isArray(e)?"matrix("+e.join(" ")+")":""):o[t],i=Zt[t];u.e.setAttribute(i,r)}else Object.keys(Zt[t]).forEach((function(e){if(void 0!==o[t][e]){var n=o[t][e],r=Zt[t][e];u.e.setAttribute(r,n)}}))})),kt(o.r)}return"none"}}function ee(t,n,r){if(0===t)return n;if(1===t)return r;if(n&&r){var i=n.t;if(i===r.t)switch(n.t){case"c":return{t:i,v:z(t,n.v,r.v)};case"g":if(n.r===r.r){var o={t:i,s:ne(t,n.s,r.s),r:n.r};return n.gt&&r.gt&&(o.gt=Y(t,n.gt,r.gt)),n.c?(o.c=L(t,n.c,r.c),o.rd=C(t,n.rd,r.rd)):n.f&&(o.f=L(t,n.f,r.f),o.to=L(t,n.to,r.to)),o}}if("c"===n.t&&"g"===r.t||"c"===r.t&&"g"===n.t){var u="c"===n.t?n:r,a="g"===n.t?e({},n):e({},r),l=a.s.map((function(t){return{c:u.v,o:t.o}}));return a.s="c"===n.t?ne(t,l,a.s):ne(t,a.s,l),a}}return F(t,n,r)}function ne(t,e,n){if(e.length===n.length)return e.map((function(e,r){return re(t,e,n[r])}));for(var r=Math.max(e.length,n.length),i=[],o=0;o<r;o++){var u=re(t,e[Math.min(o,e.length-1)],n[Math.min(o,n.length-1)]);i.push(u)}return i}function re(t,e,n){return{o:q(t,e.o,n.o||0),c:z(t,e.c,n.c||{})}}function ie(t){return t.replace(/-fill-([0-9]+)$/,(function(t,e){return"-fill-"+(+e+1)}))}function oe(t,e,n){return 0===t?e:1===t?n:{blur:V(t,e.blur,n.blur),offset:L(t,e.offset,n.offset),color:z(t,e.color,n.color)}}var ue={blur:V,brightness:C,contrast:C,"drop-shadow":oe,"inner-shadow":oe,grayscale:C,"hue-rotate":D,invert:C,opacity:C,saturate:C,sepia:C};function ae(t,e,n){if(0===t)return e;if(1===t)return n;var r=e.length;if(r!==n.length)return F(t,e,n);for(var i,o=[],u=0;u<r;u++){if(e[u].type!==n[u].type)return e;if(!(i=ue[e[u].type]))return F(t,e,n);o.push({type:e.type,value:i(t,e[u].value,n[u].value)})}return o}var le={blur:function(t){return t?function(e){t.setAttribute("stdDeviation",bt(e))}:null},brightness:function(t,e,n){return(t=fe(n,e))?function(e){e=pt(e),t.map((function(t){return t.setAttribute("slope",e)}))}:null},contrast:function(t,e,n){return(t=fe(n,e))?function(e){var n=pt((1-e)/2);e=pt(e),t.map((function(t){t.setAttribute("slope",e),t.setAttribute("intercept",n)}))}:null},"drop-shadow":function(t,e,n){var r=n.getElementById(e+"-blur");if(!r)return null;var i=n.getElementById(e+"-offset");if(!i)return null;var o=n.getElementById(e+"-flood");return o?function(t){r.setAttribute("stdDeviation",bt(t.blur)),i.setAttribute("dx",pt(t.offset.x)),i.setAttribute("dy",pt(t.offset.y)),o.setAttribute("flood-color",wt(t.color))}:null},"inner-shadow":function(t,e,n){var r=n.getElementById(e+"-blur");if(!r)return null;var i=n.getElementById(e+"-offset");if(!i)return null;var o=n.getElementById(e+"-color-matrix");return o?function(t){r.setAttribute("stdDeviation",bt(t.blur)),i.setAttribute("dx",pt(t.offset.x)),i.setAttribute("dy",pt(t.offset.y));var e=[0,0,0,0,t.color.r/255,0,0,0,0,t.color.g/255,0,0,0,0,t.color.b/255,0,0,0,t.color.a,0];o.setAttribute("values",mt(e))}:null},grayscale:function(t){return t?function(e){t.setAttribute("values",mt(function(t){return[.2126+.7874*(t=1-t),.7152-.7152*t,.0722-.0722*t,0,0,.2126-.2126*t,.7152+.2848*t,.0722-.0722*t,0,0,.2126-.2126*t,.7152-.7152*t,.0722+.9278*t,0,0,0,0,0,1,0]}(e)))}:null},"hue-rotate":function(t){return t?function(e){return t.setAttribute("values",pt(e))}:null},invert:function(t,e,n){return(t=fe(n,e))?function(e){e=pt(e)+" "+pt(1-e),t.map((function(t){return t.setAttribute("tableValues",e)}))}:null},opacity:function(t,e,n){return(t=n.getElementById(e+"-A"))?function(e){return t.setAttribute("tableValues","0 "+pt(e))}:null},saturate:function(t){return t?function(e){return t.setAttribute("values",pt(e))}:null},sepia:function(t){return t?function(e){return t.setAttribute("values",mt(function(t){return[.393+.607*(t=1-t),.769-.769*t,.189-.189*t,0,0,.349-.349*t,.686+.314*t,.168-.168*t,0,0,.272-.272*t,.534-.534*t,.131+.869*t,0,0,0,0,0,1,0]}(e)))}:null}};var se=["R","G","B"];function fe(t,e){var n=se.map((function(n){return t.getElementById(e+"-"+n)||null}));return-1!==n.indexOf(null)?null:n}var ce={fill:te,"fill-opacity":Xt,stroke:te,"stroke-opacity":Xt,"stroke-width":Qt,"stroke-dashoffset":{f:pt,i:D},"stroke-dasharray":Jt,opacity:Xt,transform:function(t,e,r,i){if(!(t=function(t,e){if(!t||"object"!==n(t))return null;var r=!1;for(var i in t)t.hasOwnProperty(i)&&(t[i]&&t[i].length?(t[i].forEach((function(t){t.e&&(t.e=e(t.e))})),r=!0):delete t[i]);return r?t:null}(t,i)))return null;var o=function(n,i,o){var u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return t[n]?r(i,t[n],o):e&&e[n]?e[n]:u};return e&&e.a&&t.o?function(e){var n=r(e,t.o,Gt);return Wt.recomposeSelf(n,o("r",e,D,0)+n.a,o("k",e,L),o("s",e,L),o("t",e,L)).toString()}:function(t){return Wt.recomposeSelf(o("o",t,Vt,null),o("r",t,D,0),o("k",t,L),o("s",t,L),o("t",t,L)).toString()}},"#filter":function(t,e,n,r,i,o,u,a){if(!e.items||!t||!t.length)return null;var l=function(t,e){var n=(t=t.map((function(t){return t&&le[t[0]]?(e.getElementById(t[1]),le[t[0]](e.getElementById(t[1]),t[1],e)):null}))).length;return function(e){for(var r=0;r<n;r++)t[r]&&t[r](e[r].value)}}(e.items,a);return l?(t=function(t,e){return t.map((function(t){return t.e=e(t.e),t}))}(t,r),function(e){l(n(e,t,ae))}):null},"#line":Ht,points:{f:mt,i:Y},d:$t,r:Qt,"#size":At,"#radius":_t,_:function(t,e){if(Array.isArray(t))for(var n=0;n<t.length;n++)this[t[n]]=e;else this[t]=e}},he={currentTime:"offset",duration:"duration",hasEnded:function(){return this.reachedToEnd()},isAlternate:"alternate",isPlaying:"_running",isRollingBack:"_rollingBack",state:function(t,e){return e.isPlaying?e.isRollingBack?"rollback":"playing":e.hasEnded?"ended":"paused"},totalTime:"maxFiniteDuration",iterations:"iterations",direction:"direction",fill:"fill",isReversed:function(t,e){return-1===e.direction},isBackwards:function(t,e){return-1===e.fill},isInfinite:function(t,e){return 0===e.iterations},speed:"speed",fps:"fps"},ve={destruct:"destruct",pause:"pause",play:function(t,e){return de(t,e.hasEnded?"restart":"play",e)},restart:"restart",reverse:function(t,e){return de(t,"reverse",e,[!0])},seek:"seek",seekBy:"seekBy",seekTo:"seekTo",stop:"stop",toggle:"toggle",togglePlay:"toggle",set:"set"};function de(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return function(){var i,o=Array.prototype.slice.call(arguments);return o.unshift.apply(o,v(r)),(i=t[e]).call.apply(i,[t].concat(v(o))),n}}var ye=function t(e){r(this,t);var n={},i=["on","off"],o={get:function(t,e,r){return he[e]?"function"==typeof he[e]?he[e].call(t,t,r):t[he[e]]:ve[e]?"function"==typeof ve[e]?ve[e].call(t,t,r):de(t,ve[e],r):-1!==i.indexOf(e)?n[e]:"ready"===e?function(t){return t&&t.call(r,r),r}:void 0},set:function(t,e,r){return-1!==i.indexOf(e)&&(n[e]=r)},ownKeys:function(t){return Object.keys(he)},has:function(t,e){return void 0!==he[e]}};if("function"==typeof Proxy)return new Proxy(e,o);var u=Object.keys(he).concat(Object.keys(ve)).concat(i),a={};return u.forEach((function(t){var n={enumerable:!1,configurable:!1,get:function(){return o.get(e,t,a)}};-1!==i.indexOf(t)&&(n.set=function(n){return o.set(e,t,n)}),Object.defineProperty(a,t,n)})),a};function ge(t){t||(t=this);var e={};this.on=function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return"function"==typeof n&&(t.split(/[, ]+/g).forEach((function(t){return e[t]=e[t]||[],r?e[t].unshift(n):e[t].push(n)})),!0)},this.off=function(t,n){for(var r in e)if(e.hasOwnProperty(r)&&r.substr(0,t.length)===t)if(n)for(var i=0;i<e[r].length;i++)e[r][i]===n&&(e[r][i]=null);else e[r]=null},this.trigger=function(){var n,r=Array.prototype.slice.call(arguments),i=r[0],o=r.slice(1);t:for(var u in e)if(e.hasOwnProperty(u)&&e[u]&&(u===i||u.substr(0,i.length+1)===i+"."))for(var a=0;a<(e[u]||[]).length;a++)if(e[u][a]&&!1===(n=e[u][a].apply(t,o)))break t;return n}}var pe=!0,me=["iterations","speed","fps","direction","fill","alternate"],be=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}(u,t);var e,n,i=(e=u,n=s(),function(){var t,r=a(e);if(n){var i=a(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return c(this,t)});function u(t,e){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return r(this,u),(n=i.call(this,t,e,o))._handlers=[],n}return o(u,[{key:"_adjustOffset",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.alternate?2*this.duration:this.duration;if(t){if(!this._rollingBack&&0===this.offset)return void(this.offset=e);this._rollingBack&&(this.offset,this.maxFiniteDuration)}!this._rollingBack||this.rollbackStartOffset<=this.duration?0!==this.iterations&&(this.offset=Math.min(this.offset,this.maxFiniteDuration)):(this.offset=this.rollbackStartOffset-(this.rollbackStartOffset-this.offset)%e,this.rollbackStartOffset=0)}},{key:"reverse",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this._running)return this._adjustOffset(t),this._rollingBack=!this._rollingBack,t&&this.play(!1),void this.trigger("reverse",this.offset);this.pause(!1,!1),this._adjustOffset(),this._rollingBack=!this._rollingBack,this.play(!1),this.trigger("reverse",this.offset)}},{key:"play",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pe,e=h(a(u.prototype),"play",this).call(this);return t===pe&&this.trigger("play",this.offset),e}},{key:"pause",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:pe,n=h(a(u.prototype),"pause",this).call(this);return e===pe&&this.trigger(t?"end":"pause",this.offset),n}},{key:"restart",value:function(){var t=h(a(u.prototype),"restart",this).call(this,!1);return this.trigger("restart",this.offset),t}},{key:"stop",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pe,e=h(a(u.prototype),"stop",this).call(this);return t===pe&&this.trigger("stop",this.offset),e}},{key:"_apply",value:function(t){var e=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:pe,r=h(a(u.prototype),"_apply",this).call(this,t);if(n===pe){var i=function(){return e.trigger("keyframe",t)};window.requestAnimationFrame(i)}return r}},{key:"seekTo",value:function(t){var e,n,r,i=this._running;i&&this.pause(!1,!1),this.offset=this.iterations>0?(e=t,n=0,r=this.maxFiniteDuration,e<n?n:e>r?r:e):Math.max(t,0),this._apply(this.offset),i&&this.play(!1)}},{key:"seek",value:function(t){return this.seekTo(Math.round(t/100*this.maxFiniteDuration))}},{key:"seekBy",value:function(t){return this.seekTo(this.offset+t)}},{key:"toggle",value:function(){return this._running?this.pause():this.reachedToEnd()?this.restart():this.play()}},{key:"set",value:function(t,e){if(me.includes(t)){var n=this._running;n&&this.pause(!1,!1),this._settings[t]=e,n?this.play(!1):this._apply(this.offset,{},!1)}}},{key:"destruct",value:function(){var t=this;this.stop(),this._handlers.forEach((function(t){t.element?t.element.removeEventListener(t.event,t.handler):t.callback&&t.callback.call&&t.callback.call()}));var e=function(){},n=Object.getOwnPropertyNames(Object.getPrototypeOf(this));n.push.apply(n,v(Object.getOwnPropertyNames(this))),n.forEach((function(n){"function"==typeof t[n]?t[n]=e:delete t[n]}))}}],[{key:"build",value:function(t){var e=h(a(u),"build",this).call(this,t,ce);if(!e)return null;var n=e.el,r=e.options,i=e.player,o=new ye(i),l=new ge(o);o.on=l.on,o.off=l.off,i.trigger=l.trigger;var s=n.svgatorPlayer&&n.svgatorPlayer.ready&&n.svgatorPlayer.ready.call&&n.svgatorPlayer.ready.call();n.svgatorPlayer=o,function(t){var e,n,r=t&&1===(null===(e=t.ownerDocument)||void 0===e||null===(n=e.childNodes)||void 0===n?void 0:n.length)&&window.parent!==window,i=null==t?void 0:t.firstElementChild;if(!r||!i||"a"!==i.tagName||i.getAttribute("target"))return;i.setAttributeNS(null,"target","_parent")}(n),function(t,e,n){if("click"===n.start){var r=function(){switch(n.click){case"freeze":return!t._running&&t.reachedToEnd()?t.restart():t.toggle();case"restart":return t.offset>0?t.restart():t.play();case"reverse":return t._running?t.reverse():t.reachedToEnd()?1===t.fill?t.reverse(!0):t.restart():t.play();case"none":default:if(t._running)return;return t.reachedToEnd()?t.restart():t.play()}};return t._handlers.push({element:e,event:"click",handler:r}),void e.addEventListener("click",r)}if("hover"===n.start){var i=function(){return t.reachedToEnd()?t.restart():t._rollingBack?t.reverse():t.play()};t._handlers.push({element:e,event:"mouseenter",handler:i}),e.addEventListener("mouseenter",i);var o=function(){switch(n.hover){case"freeze":return t.pause();case"reset":return t.stop();case"reverse":if(t.reverse(),t._running)return;return t.play();case"none":default:return}};return t._handlers.push({element:e,event:"mouseleave",handler:o}),void e.addEventListener("mouseleave",o)}if("scroll"===n.start){var u=new gt(e,n.scroll||25,(function(e){e?t.reachedToEnd()?t.restart():t.play():t.pause()}));return void t._handlers.push({callback:function(){return u.destruct()}})}if("programmatic"===n.start)return;t.play()}(i,n,r),function(t,e,n){var r;"function"==typeof Event?r=new Event("ready"):(r=document.createEvent("Event")).initEvent("ready",!0,!0);if(t.dispatchEvent(r),!n||!n.length)return;n.forEach((function(t){return e.ready(t)}))}(n,n.svgatorPlayer,s)}}]),u}(yt);return be.init(),be})); - ;(function (s, i, o, w, d, a, b) { - ;(a = - Array.from(d.querySelectorAll('svg#' + i.root)).filter( - (n) => !n.svgatorPlayer, - )[0] || {}).svgatorPlayer = { - ready: (function (a) { - b = [] - return function (c) { - return c ? (b.push(c), a.svgatorPlayer) : b - } - })(a), - } - w[o] = w[o] || {} - w[o][s] = w[o][s] || [] - w[o][s].push(i) - })( - '91c80d77', - { - root: 'eNwbxRm5ElG1', - version: '2022-05-04', - animations: [ - { - elements: { - eNwbxRm5ElG5: { - transform: { - data: { t: { x: -21.5, y: -21.5 } }, - keys: { - o: [ - { t: 0, v: { x: 21.5, y: 21.5, type: 'corner' } }, - { t: 270, v: { x: 21.5, y: 21.771802, type: 'corner' } }, - { t: 600, v: { x: 21.5, y: 21.0713, type: 'corner' } }, - ], - }, - }, - }, - eNwbxRm5ElG6: { - 'stroke-dashoffset': [ - { t: 0, v: 0 }, - { t: 270, v: 6 }, - { t: 600, v: 0 }, - ], - }, - eNwbxRm5ElG8: { - 'stroke-dashoffset': [ - { t: 0, v: 0 }, - { t: 270, v: 4 }, - { t: 600, v: 0 }, - ], - }, - eNwbxRm5ElG9: { - 'stroke-dashoffset': [ - { t: 0, v: 0 }, - { t: 270, v: 2 }, - { t: 600, v: 0 }, - ], - }, - }, - s: 'MDSA1Y2RhODFjMS2Q0ZDFjMGQzUYzhHY2VjZDgAxOTk5NThmOGXY4YlU4MWMzYWzhkMWM0YzJkEM2M4Y2VjZDgJxOTk5MDhiODBFjOERkM2M0ZUDFjMGQzR2M4LRGNlY2RkMjgIxOTk5MDhiODMFjNWM4Y2JTYM2I4MTk5OTA4TYjgxQWMwY2JDkM2M0ZDFIY2IRjMGQzYzQ4MJTk5YzVjMGNiWZDJjNDhiODFAEZDJSY2ZjNGVM0YzNJODE5OUTkwOGI4MWM1IY2ZkMjgxOTkW5MDhmOGZkYwS|', - }, - ], - options: - 'MDAAyMjllNDU5NJjk3STg0OTU5BNzQ1NWQ0NTgJ2OGY4Yzg2OGRU0NTRmNDU4NFjhmOGM4NjhlFNDU1ZDQ1ODkM5NTg4ODhJOWXQ4ODQ1YTA/', - }, - '__SVGATOR_PLAYER__', - window, - document, - ) - }, []) - return <Svg /> -} diff --git a/apps/services/auth/admin-api/infra/auth-admin-api.ts b/apps/services/auth/admin-api/infra/auth-admin-api.ts index 04b9465afa8b..0fc25a62d5d4 100644 --- a/apps/services/auth/admin-api/infra/auth-admin-api.ts +++ b/apps/services/auth/admin-api/infra/auth-admin-api.ts @@ -1,4 +1,22 @@ -import { json, service, ServiceBuilder } from '../../../../../infra/src/dsl/dsl' +import { + json, + ref, + service, + ServiceBuilder, +} from '../../../../../infra/src/dsl/dsl' +import { Base, Client, RskProcuring } from '../../../../../infra/src/dsl/xroad' + +const REDIS_NODE_CONFIG = { + dev: json([ + 'clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379', + ]), + staging: json([ + 'clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379', + ]), + prod: json([ + 'clustercfg.general-redis-cluster-group.dnugi2.euw1.cache.amazonaws.com:6379', + ]), +} export const serviceSetup = (): ServiceBuilder<'services-auth-admin-api'> => { return service('services-auth-admin-api') @@ -8,6 +26,7 @@ export const serviceSetup = (): ServiceBuilder<'services-auth-admin-api'> => { name: 'servicesauth', }) .env({ + IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/auth-api', IDENTITY_SERVER_ISSUER_URL: { dev: 'https://identity-server.dev01.devland.is', staging: 'https://identity-server.staging01.devland.is', @@ -25,11 +44,48 @@ export const serviceSetup = (): ServiceBuilder<'services-auth-admin-api'> => { ]), prod: json(['https://innskra.island.is']), }, + XROAD_NATIONAL_REGISTRY_ACTOR_TOKEN: 'true', + XROAD_RSK_PROCURING_ACTOR_TOKEN: 'true', + XROAD_NATIONAL_REGISTRY_SERVICE_PATH: { + dev: 'IS-DEV/GOV/10001/SKRA-Protected/Einstaklingar-v1', + staging: 'IS-TEST/GOV/6503760649/SKRA-Protected/Einstaklingar-v1', + prod: 'IS/GOV/6503760649/SKRA-Protected/Einstaklingar-v1', + }, + XROAD_NATIONAL_REGISTRY_REDIS_NODES: REDIS_NODE_CONFIG, + XROAD_RSK_PROCURING_REDIS_NODES: REDIS_NODE_CONFIG, + COMPANY_REGISTRY_XROAD_PROVIDER_ID: { + dev: 'IS-DEV/GOV/10006/Skatturinn/ft-v1', + staging: 'IS-TEST/GOV/5402696029/Skatturinn/ft-v1', + prod: 'IS/GOV/5402696029/Skatturinn/ft-v1', + }, + COMPANY_REGISTRY_REDIS_NODES: REDIS_NODE_CONFIG, + SYSLUMENN_HOST: { + dev: 'https://api.syslumenn.is/staging', + staging: 'https://api.syslumenn.is/staging', + prod: 'https://api.syslumenn.is/api', + }, + SYSLUMENN_TIMEOUT: '3000', + ZENDESK_CONTACT_FORM_SUBDOMAIN: { + prod: 'digitaliceland', + staging: 'digitaliceland', + dev: 'digitaliceland', + }, }) .secrets({ + ZENDESK_CONTACT_FORM_EMAIL: '/k8s/api/ZENDESK_CONTACT_FORM_EMAIL', + ZENDESK_CONTACT_FORM_TOKEN: '/k8s/api/ZENDESK_CONTACT_FORM_TOKEN', + ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE: + '/k8s/services-auth/ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE', CLIENT_SECRET_ENCRYPTION_KEY: '/k8s/services-auth/admin-api/CLIENT_SECRET_ENCRYPTION_KEY', + IDENTITY_SERVER_CLIENT_SECRET: + '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET', + NATIONAL_REGISTRY_IDS_CLIENT_SECRET: + '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET', + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME', + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD', }) + .xroad(Base, Client, RskProcuring) .ingress({ primary: { host: { diff --git a/apps/services/auth/admin-api/src/app/app.module.ts b/apps/services/auth/admin-api/src/app/app.module.ts index 68b95ae3ed59..305deb6362b6 100644 --- a/apps/services/auth/admin-api/src/app/app.module.ts +++ b/apps/services/auth/admin-api/src/app/app.module.ts @@ -7,7 +7,13 @@ import { SequelizeConfigService, } from '@island.is/auth-api-lib' import { AuthModule } from '@island.is/auth-nest-tools' +import { RskRelationshipsClientConfig } from '@island.is/clients-rsk-relationships' +import { NationalRegistryClientConfig } from '@island.is/clients/national-registry-v2' +import { CompanyRegistryConfig } from '@island.is/clients/rsk/company-registry' +import { SyslumennClientConfig } from '@island.is/clients/syslumenn' import { AuditModule } from '@island.is/nest/audit' +import { IdsClientConfig, XRoadConfig } from '@island.is/nest/config' +import { FeatureFlagConfig } from '@island.is/nest/feature-flags' import { ProblemModule } from '@island.is/nest/problem' import { environment } from '../environments' @@ -20,10 +26,11 @@ import { ResourcesModule } from './modules/resources/resources.module' import { TranslationModule } from './modules/translation/translation.module' import { UsersModule } from './modules/users/users.module' import { ClientsModule as ClientsV2Module } from './v2/clients/clients.module' +import { DelegationAdminModule } from './v2/delegations/delegation-admin.module' +import { ProvidersModule } from './v2/providers/providers.module' +import { ScopesModule } from './v2/scopes/scopes.module' import { ClientSecretsModule } from './v2/secrets/client-secrets.module' import { TenantsModule } from './v2/tenants/tenants.module' -import { ScopesModule } from './v2/scopes/scopes.module' -import { ProvidersModule } from './v2/providers/providers.module' @Module({ imports: [ @@ -46,9 +53,19 @@ import { ProvidersModule } from './v2/providers/providers.module' ProblemModule, ProvidersModule, ScopesModule, + DelegationAdminModule, ConfigModule.forRoot({ isGlobal: true, - load: [DelegationConfig], + load: [ + DelegationConfig, + RskRelationshipsClientConfig, + NationalRegistryClientConfig, + CompanyRegistryConfig, + FeatureFlagConfig, + XRoadConfig, + IdsClientConfig, + SyslumennClientConfig, + ], envFilePath: ['.env', '.env.secret'], }), ], diff --git a/apps/services/auth/admin-api/src/app/v2/clients/me-clients.controller.ts b/apps/services/auth/admin-api/src/app/v2/clients/me-clients.controller.ts index 5bb808ac4fd0..649e2ba61991 100644 --- a/apps/services/auth/admin-api/src/app/v2/clients/me-clients.controller.ts +++ b/apps/services/auth/admin-api/src/app/v2/clients/me-clients.controller.ts @@ -7,6 +7,7 @@ import { Post, UseGuards, Delete, + Query, } from '@nestjs/common' import { ApiSecurity, ApiTags } from '@nestjs/swagger' @@ -74,7 +75,7 @@ export class MeClientsController { @CurrentUser() user: User, @Param('tenantId') tenantId: string, @Param('clientId') clientId: string, - @Param('includeArchived') includeArchived?: boolean, + @Query('includeArchived') includeArchived?: boolean, ): Promise<AdminClientDto> { return this.clientsService.findByTenantIdAndClientId( tenantId, diff --git a/apps/services/auth/admin-api/src/app/v2/clients/test/me-clients.spec.ts b/apps/services/auth/admin-api/src/app/v2/clients/test/me-clients.spec.ts index 237688aca740..58235d12f2b1 100644 --- a/apps/services/auth/admin-api/src/app/v2/clients/test/me-clients.spec.ts +++ b/apps/services/auth/admin-api/src/app/v2/clients/test/me-clients.spec.ts @@ -7,10 +7,12 @@ import { AdminPatchClientDto, Client, clientBaseAttributes, + ClientDelegationType, ClientGrantType, defaultAcrValue, RefreshTokenExpiration, SequelizeConfigService, + SUPER_USER_DELEGATION_TYPES, translateRefreshTokenExpiration, } from '@island.is/auth-api-lib' import { User } from '@island.is/auth-nest-tools' @@ -38,6 +40,7 @@ const createTestClientData = async (app: TestApp, user: User) => { await Promise.all( [ [AuthDelegationType.Custom, AuthDelegationProvider.Custom], + [AuthDelegationType.GeneralMandate, AuthDelegationProvider.Custom], [ AuthDelegationType.ProcurationHolder, AuthDelegationProvider.CompanyRegistry, @@ -50,6 +53,10 @@ const createTestClientData = async (app: TestApp, user: User) => { AuthDelegationType.LegalGuardian, AuthDelegationProvider.NationalRegistry, ], + [ + AuthDelegationType.LegalRepresentative, + AuthDelegationProvider.DistrictCommissionersRegistry, + ], ].map(async ([delegationType, provider]) => fixtureFactory.createDelegationType({ id: delegationType, @@ -619,6 +626,7 @@ describe('MeClientsController with auth', () => { AuthDelegationType.PersonalRepresentative, AuthDelegationType.ProcurationHolder, AuthDelegationType.LegalGuardian, + AuthDelegationType.LegalRepresentative, ], } @@ -635,6 +643,7 @@ describe('MeClientsController with auth', () => { AuthDelegationType.PersonalRepresentative, AuthDelegationType.ProcurationHolder, AuthDelegationType.LegalGuardian, + AuthDelegationType.LegalRepresentative, ]), ) }) @@ -985,6 +994,7 @@ describe('MeClientsController with auth', () => { AuthDelegationType.LegalGuardian, AuthDelegationType.PersonalRepresentative, AuthDelegationType.ProcurationHolder, + AuthDelegationType.LegalRepresentative, ], } @@ -994,9 +1004,12 @@ describe('MeClientsController with auth', () => { body, supportedDelegationTypes: [ AuthDelegationType.Custom, + // Add general mandate since it is directly connected to Custom delegation type + AuthDelegationType.GeneralMandate, AuthDelegationType.LegalGuardian, AuthDelegationType.PersonalRepresentative, AuthDelegationType.ProcurationHolder, + AuthDelegationType.LegalRepresentative, ], supportsCustomDelegation: true, supportsLegalGuardians: true, @@ -1025,6 +1038,7 @@ describe('MeClientsController with auth', () => { AuthDelegationType.LegalGuardian, AuthDelegationType.PersonalRepresentative, AuthDelegationType.ProcurationHolder, + AuthDelegationType.LegalRepresentative, ], supportsCustomDelegation: true, supportsLegalGuardians: true, @@ -1033,9 +1047,12 @@ describe('MeClientsController with auth', () => { }, supportedDelegationTypes: [ AuthDelegationType.Custom, + // Add general mandate since it is directly connected to Custom delegation type + AuthDelegationType.GeneralMandate, AuthDelegationType.LegalGuardian, AuthDelegationType.PersonalRepresentative, AuthDelegationType.ProcurationHolder, + AuthDelegationType.LegalRepresentative, ], supportsCustomDelegation: true, supportsLegalGuardians: true, @@ -1049,6 +1066,7 @@ describe('MeClientsController with auth', () => { AuthDelegationType.LegalGuardian, AuthDelegationType.PersonalRepresentative, AuthDelegationType.ProcurationHolder, + AuthDelegationType.LegalRepresentative, ], } @@ -1063,6 +1081,66 @@ describe('MeClientsController with auth', () => { supportsProcuringHolders: false, }) }) + + it.each` + action + ${'added'} + ${'removed'} + `( + 'should not have $action super user delegation type as normal', + async ({ action }) => { + // Arrange + const app = await setupApp({ + AppModule, + SequelizeConfigService, + user, + dbType: 'postgres', + }) + const server = request(app.getHttpServer()) + await createTestClientData(app, user) + + // Act + const res = await Promise.all( + SUPER_USER_DELEGATION_TYPES.map((delegationType) => + server + .patch( + `/v2/me/tenants/${tenantId}/clients/${encodeURIComponent( + clientId, + )}`, + ) + .send({ + [`${action}DelegationTypes`]: [delegationType], + }), + ), + ) + + // Assert + res.forEach((r) => { + expect(r.status).toEqual(403) + expect(r.body).toEqual({ + type: 'https://httpstatuses.org/403', + title: 'Forbidden', + status: 403, + detail: + 'User does not have access to update admin controlled fields.', + }) + }) + + // DB assert + const clientDelegationTypeModel = app.get( + getModelToken(ClientDelegationType), + ) + const clientDelegationTypes = await clientDelegationTypeModel.findAll( + { + where: { + clientId, + }, + }, + ) + + expect(clientDelegationTypes.length).toEqual(0) + }, + ) }) }) }) diff --git a/apps/services/auth/admin-api/src/app/v2/delegations/delegation-admin.controller.ts b/apps/services/auth/admin-api/src/app/v2/delegations/delegation-admin.controller.ts new file mode 100644 index 000000000000..acac8d7fe645 --- /dev/null +++ b/apps/services/auth/admin-api/src/app/v2/delegations/delegation-admin.controller.ts @@ -0,0 +1,158 @@ +import { + Body, + Controller, + Delete, + Get, + Headers, + Param, + Post, + UseGuards, +} from '@nestjs/common' +import { ApiTags } from '@nestjs/swagger' +import flatMap from 'lodash/flatMap' + +import { + BypassAuth, + CurrentUser, + IdsUserGuard, + Scopes, + ScopesGuard, + User, + ZendeskAuthGuard, +} from '@island.is/auth-nest-tools' +import { + CreatePaperDelegationDto, + DelegationAdminCustomDto, + DelegationAdminCustomService, + DelegationDTO, + ZendeskWebhookInputDto, +} from '@island.is/auth-api-lib' +import { Documentation } from '@island.is/nest/swagger' +import { Audit, AuditService } from '@island.is/nest/audit' +import { DelegationAdminScopes } from '@island.is/auth/scopes' +import { isDefined } from '@island.is/shared/utils' + +import env from '../../../environments/environment' + +const namespace = '@island.is/auth/delegation-admin' + +@UseGuards(IdsUserGuard, ScopesGuard) +@ApiTags('delegation-admin') +@Controller('delegation-admin') +@Audit({ namespace }) +export class DelegationAdminController { + constructor( + private readonly delegationAdminService: DelegationAdminCustomService, + private readonly auditService: AuditService, + ) {} + + @Get() + @Scopes(DelegationAdminScopes.read) + @Documentation({ + response: { status: 200, type: DelegationAdminCustomDto }, + request: { + header: { + 'X-Query-National-Id': { + required: true, + description: 'fetch delegations for this national id', + }, + }, + }, + }) + @Audit<DelegationAdminCustomDto>({ + resources: (delegation) => + flatMap([ + ...delegation.incoming.map((d) => d.id ?? undefined), + ...delegation.outgoing.map((d) => d.id ?? undefined), + ]).filter(isDefined), + }) + async getDelegationAdmin( + @Headers('X-Query-National-Id') nationalId: string, + ): Promise<DelegationAdminCustomDto> { + return await this.delegationAdminService.getAllDelegationsByNationalId( + nationalId, + ) + } + + @Post() + @Scopes(DelegationAdminScopes.admin) + @Documentation({ + response: { status: 201, type: DelegationDTO }, + }) + create( + @CurrentUser() user: User, + @Body() delegation: CreatePaperDelegationDto, + ): Promise<DelegationDTO> { + return this.auditService.auditPromise( + { + auth: user, + namespace, + action: 'create', + resources: (result) => { + return result?.id ?? undefined + }, + }, + this.delegationAdminService.createDelegation(user, delegation), + ) + } + + @BypassAuth() + @UseGuards(new ZendeskAuthGuard(env.zendeskGeneralMandateWebhookSecret)) + @Post('/zendesk') + @Documentation({ + response: { status: 200 }, + }) + async createByZendeskId( + @Body() { id }: ZendeskWebhookInputDto, + ): Promise<void> { + await this.auditService.auditPromise<DelegationDTO>( + { + system: true, + namespace, + action: 'createByZendeskId', + resources: (res) => { + return `id: ${res.id ?? 'Unknown'}, toNationalId: ${ + res.toNationalId ?? 'Unknown' + }, fromNationalId: ${ + res.fromNationalId ?? 'Unknown' + }, createdByNationalId: ${res.createdByNationalId ?? 'Unknown'}` + }, + meta: { + id, + }, + }, + this.delegationAdminService.createDelegationByZendeskId(id), + ) + } + + @Delete(':delegationId') + @Scopes(DelegationAdminScopes.admin) + @Documentation({ + response: { status: 204 }, + request: { + params: { + delegationId: { + required: true, + description: 'The id of the delegation to delete', + }, + }, + }, + }) + delete( + @CurrentUser() user: User, + @Param('delegationId') delegationId: string, + ) { + return this.auditService.auditPromise( + { + auth: user, + namespace, + action: 'delete', + resources: delegationId, + meta: (deleted) => ({ + deleted, + }), + }, + this.delegationAdminService.deleteDelegation(user, delegationId), + ) + } +} diff --git a/apps/services/auth/admin-api/src/app/v2/delegations/delegation-admin.module.ts b/apps/services/auth/admin-api/src/app/v2/delegations/delegation-admin.module.ts new file mode 100644 index 000000000000..09d0a1dd624d --- /dev/null +++ b/apps/services/auth/admin-api/src/app/v2/delegations/delegation-admin.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common' + +import { DelegationsModule as AuthDelegationsModule } from '@island.is/auth-api-lib' +import { FeatureFlagModule } from '@island.is/nest/feature-flags' +import { DelegationAdminController } from './delegation-admin.controller' + +@Module({ + imports: [AuthDelegationsModule, FeatureFlagModule], + controllers: [DelegationAdminController], + providers: [], +}) +export class DelegationAdminModule {} diff --git a/apps/services/auth/admin-api/src/app/v2/delegations/test/delegation-admin.auth.spec.ts b/apps/services/auth/admin-api/src/app/v2/delegations/test/delegation-admin.auth.spec.ts new file mode 100644 index 000000000000..f5ac5c59906e --- /dev/null +++ b/apps/services/auth/admin-api/src/app/v2/delegations/test/delegation-admin.auth.spec.ts @@ -0,0 +1,224 @@ +import request from 'supertest' + +import { + getRequestMethod, + setupApp, + setupAppWithoutAuth, + TestApp, + TestEndpointOptions, +} from '@island.is/testing/nest' +import { User } from '@island.is/auth-nest-tools' +import { FixtureFactory } from '@island.is/services/auth/testing' +import { createCurrentUser } from '@island.is/testing/fixtures' +import { DelegationAdminScopes } from '@island.is/auth/scopes' +import { + DelegationAdminCustomService, + DelegationDTO, + SequelizeConfigService, +} from '@island.is/auth-api-lib' + +import { AppModule } from '../../../app.module' +import { includeRawBodyMiddleware } from '@island.is/infra-nest-server' + +describe('withoutAuth and permissions', () => { + async function formatUrl(app: TestApp, endpoint: string, user?: User) { + if (!endpoint.includes(':delegation')) { + return endpoint + } + const factory = new FixtureFactory(app) + const domain = await factory.createDomain({ + name: 'd1', + apiScopes: [{ name: 's1' }], + }) + const delegation = await factory.createCustomDelegation({ + fromNationalId: user?.nationalId, + domainName: domain.name, + scopes: [{ scopeName: 's1' }], + }) + return endpoint.replace(':delegation', encodeURIComponent(delegation.id)) + } + + it.each` + method | endpoint + ${'GET'} | ${'/delegation-admin'} + ${'DELETE'} | ${'/delegation-admin/:delegation'} + `( + '$method $endpoint should return 401 when user is not authenticated', + async ({ method, endpoint }) => { + // Arrange + const app = await setupAppWithoutAuth({ + AppModule, + SequelizeConfigService, + dbType: 'postgres', + }) + const server = request(app.getHttpServer()) + const url = await formatUrl(app, endpoint) + + // Act + const res = await getRequestMethod(server, method)(url) + + // Assert + expect(res.status).toEqual(401) + expect(res.body).toMatchObject({ + status: 401, + type: 'https://httpstatuses.org/401', + title: 'Unauthorized', + }) + }, + ) + + it.each` + method | endpoint + ${'GET'} | ${'/delegation-admin'} + ${'DELETE'} | ${'/delegation-admin/:delegation'} + `( + '$method $endpoint should return 403 Forbidden when user does not have the correct scope', + async ({ method, endpoint }: TestEndpointOptions) => { + // Arrange + const user = createCurrentUser() + const app = await setupApp({ + AppModule, + SequelizeConfigService, + user, + dbType: 'postgres', + }) + const server = request(app.getHttpServer()) + const url = await formatUrl(app, endpoint, user) + + // Act + const res = await getRequestMethod(server, method)(url) + + // Assert + expect(res.status).toEqual(403) + expect(res.body).toMatchObject({ + status: 403, + type: 'https://httpstatuses.org/403', + title: 'Forbidden', + detail: 'Forbidden resource', + }) + + // CleanUp + app.cleanUp() + }, + ) + + it.each` + method | endpoint + ${'DELETE'} | ${'/delegation-admin/:delegation'} + `( + '$method $endpoint should return 403 Forbidden when user does not have the admin scope', + async ({ method, endpoint }: TestEndpointOptions) => { + // Arrange + const user = createCurrentUser({ + scope: [DelegationAdminScopes.read], + }) + const app = await setupApp({ + AppModule, + SequelizeConfigService, + user, + dbType: 'postgres', + }) + const server = request(app.getHttpServer()) + const url = await formatUrl(app, endpoint, user) + + // Act + const res = await getRequestMethod(server, method)(url) + + // Assert + expect(res.status).toEqual(403) + expect(res.body).toMatchObject({ + status: 403, + type: 'https://httpstatuses.org/403', + title: 'Forbidden', + detail: 'Forbidden resource', + }) + + // CleanUp + app.cleanUp() + }, + ) + + describe('POST /delegation-admin/zendesk', () => { + let app: TestApp + let server: request.SuperTest<request.Test> + let delegationAdminService: DelegationAdminCustomService + + beforeEach(async () => { + app = await setupAppWithoutAuth({ + AppModule, + SequelizeConfigService, + dbType: 'postgres', + beforeServerStart: async (app) => { + await new Promise((resolve) => + resolve(app.use(includeRawBodyMiddleware())), + ) + }, + }) + + server = request(app.getHttpServer()) + + delegationAdminService = app.get(DelegationAdminCustomService) + + jest + .spyOn(delegationAdminService, 'createDelegationByZendeskId') + .mockImplementation(() => + Promise.resolve({ + id: '123', + fromNationalId: '1234567890', + fromName: 'Test', + toNationalId: '0987654321', + toName: 'Test', + createdByNationalId: '0101010101', + } as DelegationDTO), + ) + }) + + afterEach(() => { + app.cleanUp() + }) + + it('POST /delegation-admin/zendesk should return 403 Forbidden when request signature is invalid.', async () => { + // Act + const res = await getRequestMethod( + server, + 'POST', + )('/delegation-admin/zendesk') + .send({ + id: 'Incorrect body', + }) + .set( + 'x-zendesk-webhook-signature', + '6sUtGV8C8OdoGgCdsV2xRm3XeskZ33Bc5124RiAK4Q4=', + ) + .set('x-zendesk-webhook-signature-timestamp', '2024-10-02T14:21:04Z') + + // Assert + expect(res.status).toEqual(403) + expect(res.body).toMatchObject({ + status: 403, + type: 'https://httpstatuses.org/403', + title: 'Forbidden', + detail: 'Forbidden resource', + }) + }) + + it('POST /delegation-admin/zendesk should return 200 when signature is valid', async () => { + // Act + const res = await getRequestMethod( + server, + 'POST', + )('/delegation-admin/zendesk') + .send({ + id: 'test', + }) + .set( + 'x-zendesk-webhook-signature', + 'ntgS06VGgd4z73lHjIpC2sk9azhRNi4u1xkXF/KPKTs=', + ) + .set('x-zendesk-webhook-signature-timestamp', '2024-10-02T14:21:04Z') + + // Assert + expect(res.status).toEqual(200) + }) + }) +}) diff --git a/apps/services/auth/admin-api/src/app/v2/delegations/test/delegation-admin.spec.ts b/apps/services/auth/admin-api/src/app/v2/delegations/test/delegation-admin.spec.ts new file mode 100644 index 000000000000..6d0637535db9 --- /dev/null +++ b/apps/services/auth/admin-api/src/app/v2/delegations/test/delegation-admin.spec.ts @@ -0,0 +1,443 @@ +import request from 'supertest' + +import { getRequestMethod, setupApp, TestApp } from '@island.is/testing/nest' +import { User } from '@island.is/auth-nest-tools' +import { FixtureFactory } from '@island.is/services/auth/testing' +import { + createCurrentUser, + createNationalRegistryUser, +} from '@island.is/testing/fixtures' +import { DelegationAdminScopes } from '@island.is/auth/scopes' +import addDays from 'date-fns/addDays' +import { + CreatePaperDelegationDto, + Delegation, + DELEGATION_TAG, + DelegationDelegationType, + DelegationsIndexService, + SequelizeConfigService, + ZENDESK_CUSTOM_FIELDS, +} from '@island.is/auth-api-lib' + +import { AppModule } from '../../../app.module' +import { AuthDelegationType } from '@island.is/shared/types' +import { getModelToken } from '@nestjs/sequelize' +import { faker } from '@island.is/shared/mocking' +import { TicketStatus, ZendeskService } from '@island.is/clients/zendesk' +import { NationalRegistryClientService } from '@island.is/clients/national-registry-v2' +import { ErrorCodes } from '@island.is/shared/utils' + +const currentUser = createCurrentUser({ + scope: [DelegationAdminScopes.read, DelegationAdminScopes.admin], +}) + +describe('DelegationAdmin - With authentication', () => { + let app: TestApp + let server: request.SuperTest<request.Test> + let factory: FixtureFactory + let zendeskService: ZendeskService + let nationalRegistryApi: NationalRegistryClientService + let delegationIndexServiceApi: DelegationsIndexService + + beforeEach(async () => { + app = await setupApp({ + AppModule, + SequelizeConfigService, + user: currentUser, + dbType: 'postgres', + }) + + server = request(app.getHttpServer()) + factory = new FixtureFactory(app) + + zendeskService = app.get(ZendeskService) + nationalRegistryApi = app.get(NationalRegistryClientService) + delegationIndexServiceApi = app.get(DelegationsIndexService) + + jest + .spyOn(delegationIndexServiceApi, 'indexCustomDelegations') + .mockImplementation(async () => { + return + }) + + jest + .spyOn(delegationIndexServiceApi, 'indexGeneralMandateDelegations') + .mockImplementation(async () => { + return + }) + }) + + afterEach(async () => { + await app.cleanUp() + }) + + async function createDelegationAdmin(user?: User) { + const domain = await factory.createDomain({ + name: 'd1', + apiScopes: [ + { name: 's1', supportedDelegationTypes: [AuthDelegationType.Custom] }, + ], + }) + + return factory.createCustomDelegation({ + fromNationalId: user?.nationalId ?? '', + domainName: domain.name, + scopes: [{ scopeName: 's1' }], + referenceId: 'ref1', + }) + } + + describe('GET /delegation-admin', () => { + it('GET /delegation-admin should return delegations for nationalId', async () => { + // Arrange + const delegation = await createDelegationAdmin(currentUser) + // Act + const res = await getRequestMethod( + server, + 'GET', + )('/delegation-admin').set('X-Query-National-Id', currentUser.nationalId) + + // Assert + expect(res.status).toEqual(200) + expect(res.body['outgoing'][0].id).toEqual(delegation.id) + }) + }) + + describe('DELETE /delegation-admin/:delegation', () => { + it('DELETE /delegation-admin/:delegation should not delete delegation that has no reference id', async () => { + // Arrange + const delegationModel = await app.get(getModelToken(Delegation)) + const delegation = await createDelegationAdmin(currentUser) + // Remove the referenceId + await delegationModel.update( + { + referenceId: null, + }, + { + where: { + id: delegation.id, + }, + }, + ) + + // Act + const res = await getRequestMethod( + server, + 'DELETE', + )(`/delegation-admin/${delegation.id}`) + + // Assert + expect(res.status).toEqual(204) + + // Assert db + const deletedDelegation = await delegationModel.findByPk(delegation.id) + + expect(deletedDelegation).not.toBeNull() + }) + + it('DELETE /delegation-admin/:delegation should delete delegation', async () => { + // Arrange + const delegation = await createDelegationAdmin(currentUser) + + // Act + const res = await getRequestMethod( + server, + 'DELETE', + )(`/delegation-admin/${delegation.id}`) + + // Assert + expect(res.status).toEqual(204) + + // Assert db + const delegationModel = await app.get(getModelToken(Delegation)) + const deletedDelegation = await delegationModel.findByPk(delegation.id) + + expect(deletedDelegation).toBeNull() + }) + + it('DELETE /delegation-admin/:delegation should throw error since id does not exist', async () => { + // Arrange + await createDelegationAdmin(currentUser) + + const invalidId = faker.datatype.uuid() + // Act + const res = await getRequestMethod( + server, + 'DELETE', + )(`/delegation-admin/${invalidId}`) + + // Assert + expect(res.status).toEqual(204) + + // Assert db + const delegationModel = await app.get(getModelToken(Delegation)) + const deletedDelegation = await delegationModel.findAll() + + expect(deletedDelegation).not.toBeNull() + }) + }) + + describe('POST /delegation-admin', () => { + const toNationalId = '0101302399' + const fromNationalId = '0101307789' + + let zendeskServiceApiSpy: jest.SpyInstance + let nationalRegistryApiSpy: jest.SpyInstance + + let delegationModel: typeof Delegation + let delegationDelegationTypeModel: typeof DelegationDelegationType + + beforeEach(async () => { + delegationModel = await app.get(getModelToken(Delegation)) + delegationDelegationTypeModel = await app.get( + getModelToken(DelegationDelegationType), + ) + + await factory.createDomain({ + name: 'd1', + apiScopes: [ + { + name: 's1', + supportedDelegationTypes: [ + AuthDelegationType.Custom, + AuthDelegationType.GeneralMandate, + ], + }, + ], + }) + + mockZendeskService(toNationalId, fromNationalId) + mockNationalRegistryService() + }) + + const mockNationalRegistryService = () => { + nationalRegistryApiSpy = jest + .spyOn(nationalRegistryApi, 'getIndividual') + .mockImplementation(async (id) => { + const user = createNationalRegistryUser({ + nationalId: id, + }) + + return user ?? null + }) + } + + const mockZendeskService = ( + toNationalId: string, + fromNationalId: string, + info?: { + tags?: string[] + status?: TicketStatus + }, + ) => { + const { tags, status } = { + tags: [DELEGATION_TAG], + status: TicketStatus.Solved, + ...info, + } + + zendeskServiceApiSpy = jest + .spyOn(zendeskService, 'getTicket') + .mockImplementation((ticketId: string) => { + return new Promise((resolve) => + resolve({ + id: ticketId, + tags: tags, + status: status, + custom_fields: [ + { + id: ZENDESK_CUSTOM_FIELDS.DelegationToReferenceId, + value: toNationalId, + }, + { + id: ZENDESK_CUSTOM_FIELDS.DelegationFromReferenceId, + value: fromNationalId, + }, + ], + }), + ) + }) + } + + afterEach(() => { + jest.restoreAllMocks() + }) + + it('POST /delegation-admin should create delegation', async () => { + // Arrange + const delegation: CreatePaperDelegationDto = { + toNationalId, + fromNationalId, + referenceId: 'ref1', + validTo: addDays(new Date(), 3), + } + + // Act + const res = await getRequestMethod( + server, + 'POST', + )('/delegation-admin').send(delegation) + + // Assert + expect(res.status).toEqual(201) + expect(res.body).toHaveProperty('id') + expect(res.body.fromNationalId).toEqual(fromNationalId) + expect(res.body.toNationalId).toEqual(toNationalId) + expect(res.body.referenceId).toEqual(delegation.referenceId) + expect(res.body.validTo).toEqual(delegation.validTo?.toISOString()) + }) + + it('POST /delegation-admin should create delegation with no expiration date', async () => { + // Arrange + const delegation: CreatePaperDelegationDto = { + toNationalId, + fromNationalId, + referenceId: 'ref1', + } + + // Act + const res = await getRequestMethod( + server, + 'POST', + )('/delegation-admin').send(delegation) + + // Assert + expect(res.status).toEqual(201) + expect(res.body).toHaveProperty('id') + expect(res.body.fromNationalId).toEqual(fromNationalId) + expect(res.body.toNationalId).toEqual(toNationalId) + expect(res.body.referenceId).toEqual(delegation.referenceId) + expect(res.body).not.toHaveProperty('validTo') + + // Assert db + const createdDelegation = await delegationModel.findByPk(res.body.id) + const createdDelegationDelegationType = + await delegationDelegationTypeModel.findOne({ + where: { + delegationId: res.body.id, + }, + }) + + expect(createdDelegation).not.toBeNull() + expect(createdDelegationDelegationType).not.toBeNull() + }) + + it('POST /delegation-admin should not create delegation with company national id', async () => { + // Arrange + const delegation: CreatePaperDelegationDto = { + toNationalId: '5005005001', + fromNationalId, + referenceId: 'ref1', + } + + // Act + const res = await getRequestMethod( + server, + 'POST', + )('/delegation-admin').send(delegation) + + // Assert + expect(res.status).toEqual(400) + }) + + it('POST /delegation-admin should not create delegation since it already exists', async () => { + // Arrange + const { toNationalId, fromNationalId } = { + toNationalId: '0101302399', + fromNationalId: '0101307789', + } + + mockZendeskService(toNationalId, fromNationalId) + + const existingDelegation = await factory.createCustomDelegation({ + fromNationalId, + toNationalId, + domainName: null, + scopes: [{ scopeName: 's1' }], + referenceId: 'ref1', + }) + + const delegation: CreatePaperDelegationDto = { + toNationalId: existingDelegation.toNationalId, + fromNationalId: existingDelegation.fromNationalId, + referenceId: 'ref2', + } + + // Act + const res = await getRequestMethod( + server, + 'POST', + )('/delegation-admin').send(delegation) + + // Assert + expect(res.status).toEqual(400) + expect(res.body).toMatchObject({ + status: 400, + type: 'https://httpstatuses.org/400', + title: ErrorCodes.COULD_NOT_CREATE_DELEGATION, + detail: 'Could not create delegation', + }) + }) + + it('POST /delegation-admin should not create delegation since the delegation id already exists', async () => { + // Arrange + const { toNationalId, fromNationalId } = { + toNationalId: '0101302399', + fromNationalId: '0101307789', + } + + mockZendeskService(fromNationalId, toNationalId) + + const existingDelegation = await factory.createCustomDelegation({ + fromNationalId, + toNationalId, + domainName: null, + scopes: [{ scopeName: 's1' }], + referenceId: 'ref1', + }) + + // Send in opposite national ids so they will not exist in db + const delegation: CreatePaperDelegationDto = { + toNationalId: existingDelegation.fromNationalId, + fromNationalId: existingDelegation.toNationalId, + referenceId: 'ref1', + } + + // Act + const res = await getRequestMethod( + server, + 'POST', + )('/delegation-admin').send(delegation) + + // Assert + expect(res.status).toEqual(400) + expect(res.body).toMatchObject({ + status: 400, + type: 'https://httpstatuses.org/400', + title: ErrorCodes.REFERENCE_ID_ALREADY_EXISTS, + detail: 'Delegation with the same reference id already exists', + }) + }) + + it('POST /delegation-admin should not create delegation with incorrect zendesk ticket status', async () => { + // Arrange + mockZendeskService(toNationalId, fromNationalId, { + status: TicketStatus.Open, + }) + + const delegation: CreatePaperDelegationDto = { + toNationalId, + fromNationalId, + referenceId: 'ref1', + } + + // Act + const res = await getRequestMethod( + server, + 'POST', + )('/delegation-admin').send(delegation) + + expect(res.status).toEqual(400) + }) + }) +}) diff --git a/apps/services/auth/admin-api/src/app/v2/scopes/me-scopes.controller.ts b/apps/services/auth/admin-api/src/app/v2/scopes/me-scopes.controller.ts index c3106fdc3632..3d46d6af9c8a 100644 --- a/apps/services/auth/admin-api/src/app/v2/scopes/me-scopes.controller.ts +++ b/apps/services/auth/admin-api/src/app/v2/scopes/me-scopes.controller.ts @@ -86,8 +86,9 @@ export class MeScopesController { create( @Param('tenantId') tenantId: string, @Body() input: AdminCreateScopeDto, + @CurrentUser() user: User, ): Promise<AdminScopeDTO> { - return this.adminScopeService.createScope(tenantId, input) + return this.adminScopeService.createScope(tenantId, input, user) } @Patch(':scopeName') diff --git a/apps/services/auth/admin-api/src/app/v2/scopes/test/me-scopes.spec.ts b/apps/services/auth/admin-api/src/app/v2/scopes/test/me-scopes.spec.ts index c5ce162544b0..89618911bb21 100644 --- a/apps/services/auth/admin-api/src/app/v2/scopes/test/me-scopes.spec.ts +++ b/apps/services/auth/admin-api/src/app/v2/scopes/test/me-scopes.spec.ts @@ -11,6 +11,8 @@ import { TranslatedValueDto, ApiScopeDelegationType, AdminPatchScopeDto, + ApiScope, + SUPER_USER_DELEGATION_TYPES, } from '@island.is/auth-api-lib' import { FixtureFactory } from '@island.is/services/auth/testing' import { @@ -113,6 +115,7 @@ const createTestData = async ({ await Promise.all( [ [AuthDelegationType.Custom, AuthDelegationProvider.Custom], + [AuthDelegationType.GeneralMandate, AuthDelegationProvider.Custom], [ AuthDelegationType.ProcurationHolder, AuthDelegationProvider.CompanyRegistry, @@ -125,6 +128,10 @@ const createTestData = async ({ AuthDelegationType.LegalGuardian, AuthDelegationProvider.NationalRegistry, ], + [ + AuthDelegationType.LegalRepresentative, + AuthDelegationProvider.DistrictCommissionersRegistry, + ], ].map(async ([delegationType, provider]) => fixtureFactory.createDelegationType({ id: delegationType, @@ -372,6 +379,8 @@ interface PatchTestCase { allowExplicitDelegationGrant?: boolean grantToPersonalRepresentatives?: boolean isAccessControlled?: boolean + addedDelegationTypes?: AuthDelegationType[] + removedDelegationTypes?: AuthDelegationType[] } expected: { status: number @@ -511,6 +520,44 @@ const patchTestCases: Record<string, PatchTestCase> = { }, } +const expected403Response = { + status: 403, + body: { + title: 'Forbidden', + status: 403, + detail: 'User does not have access to update admin controlled fields', + type: 'https://httpstatuses.org/403', + }, +} + +SUPER_USER_DELEGATION_TYPES.map((delegationType) => { + const delegationTypeName = AuthDelegationType[delegationType] + + patchTestCases[ + `should return a forbidden exception when adding super user delegation type: ${delegationTypeName}` + ] = { + user: currentUser, + tenantId: TENANT_ID, + scopeName: mockedPatchApiScope.name, + input: { + addedDelegationTypes: [delegationType], + }, + expected: expected403Response, + } + + patchTestCases[ + `should return a forbidden exception when removing super user delegation type: ${delegationTypeName}` + ] = { + user: currentUser, + tenantId: TENANT_ID, + scopeName: mockedPatchApiScope.name, + input: { + removedDelegationTypes: [delegationType], + }, + expected: expected403Response, + } +}) + describe('MeScopesController', () => { describe('with auth', () => { // GET: /v2/me/tenants/:tenantId/scopes @@ -759,10 +806,11 @@ describe('MeScopesController', () => { }) }) - describe('PATCH: /v2/me/tenants/:tenantId/scopes/:scopeName', () => { + describe('PATCH: /v2/me/tenants/:tenantId/scopes/:scopeName as super user', () => { let app: TestApp let server: request.SuperTest<request.Test> let apiScopeDelegationTypeModel: typeof ApiScopeDelegationType + let fixtureFactory: FixtureFactory beforeAll(async () => { app = await setupApp({ @@ -772,6 +820,7 @@ describe('MeScopesController', () => { dbType: 'postgres', }) server = request(app.getHttpServer()) + fixtureFactory = new FixtureFactory(app) apiScopeDelegationTypeModel = await app.get( getModelToken(ApiScopeDelegationType), @@ -827,6 +876,7 @@ describe('MeScopesController', () => { AuthDelegationType.LegalGuardian, AuthDelegationType.ProcurationHolder, AuthDelegationType.PersonalRepresentative, + AuthDelegationType.LegalRepresentative, ], }, expected: { @@ -836,9 +886,12 @@ describe('MeScopesController', () => { allowExplicitDelegationGrant: true, supportedDelegationTypes: [ AuthDelegationType.Custom, + // Add general mandate since it is directly connected to Custom delegation type + AuthDelegationType.GeneralMandate, AuthDelegationType.LegalGuardian, AuthDelegationType.ProcurationHolder, AuthDelegationType.PersonalRepresentative, + AuthDelegationType.LegalRepresentative, ], }, }) @@ -852,6 +905,7 @@ describe('MeScopesController', () => { AuthDelegationType.LegalGuardian, AuthDelegationType.ProcurationHolder, AuthDelegationType.PersonalRepresentative, + AuthDelegationType.LegalRepresentative, ], }, expected: { @@ -861,9 +915,12 @@ describe('MeScopesController', () => { allowExplicitDelegationGrant: true, supportedDelegationTypes: [ AuthDelegationType.Custom, + // Add general mandate since it is directly connected to Custom delegation type + AuthDelegationType.GeneralMandate, AuthDelegationType.LegalGuardian, AuthDelegationType.ProcurationHolder, AuthDelegationType.PersonalRepresentative, + AuthDelegationType.LegalRepresentative, ], }, }) @@ -875,6 +932,7 @@ describe('MeScopesController', () => { AuthDelegationType.LegalGuardian, AuthDelegationType.ProcurationHolder, AuthDelegationType.PersonalRepresentative, + AuthDelegationType.LegalRepresentative, ], }, expected: { @@ -886,9 +944,62 @@ describe('MeScopesController', () => { }, }) }) + + it('should only update requested delegation setting fields', async () => { + // Arrange + // Create new subject under testing test data to control initial state of delegation settings. + const sutScope = await fixtureFactory.createApiScope({ + domainName: TENANT_ID, + allowExplicitDelegationGrant: true, + supportedDelegationTypes: [AuthDelegationType.Custom], + }) + + // Act - Update partially delegation setting + const response = await server + .patch( + `/v2/me/tenants/${TENANT_ID}/scopes/${encodeURIComponent( + sutScope.name, + )}`, + ) + .send({ + addedDelegationTypes: [AuthDelegationType.ProcurationHolder], + }) + + // Assert that we only updated requested delegation setting fields + expect(response.status).toEqual(200) + expect(response.body).toMatchObject({ + ...sutScope.toDTO(), + displayName: [ + { + locale: 'is', + value: sutScope.displayName, + }, + ], + description: [ + { + locale: 'is', + value: sutScope.description, + }, + ], + grantToProcuringHolders: true, + supportedDelegationTypes: expect.arrayContaining([ + AuthDelegationType.Custom, + AuthDelegationType.ProcurationHolder, + ]), + } as AdminScopeDTO) + const apiScopeDelegationTypes = await apiScopeDelegationTypeModel.findAll( + { + where: { + apiScopeName: sutScope.name, + }, + }, + ) + + expect(apiScopeDelegationTypes).toHaveLength(2) + }) }) - describe('POST: /v2/me/tenants/:tenantId/scopes', () => { + describe('POST: /v2/me/tenants/:tenantId/scopes as super user', () => { let app: TestApp let server: request.SuperTest<request.Test> let apiScopeDelegationTypeModel: typeof ApiScopeDelegationType @@ -963,6 +1074,8 @@ describe('MeScopesController', () => { allowExplicitDelegationGrant: true, supportedDelegationTypes: [ AuthDelegationType.Custom, + // Add general mandate since it is directly connected to Custom delegation type + AuthDelegationType.GeneralMandate, AuthDelegationType.LegalGuardian, AuthDelegationType.ProcurationHolder, AuthDelegationType.PersonalRepresentative, @@ -971,4 +1084,89 @@ describe('MeScopesController', () => { }) }) }) + + describe('POST: /v2/me/tenants/:tenantId/scopes as normal user', () => { + let app: TestApp + let server: request.SuperTest<request.Test> + let apiScopeDelegationTypeModel: typeof ApiScopeDelegationType + + beforeAll(async () => { + app = await setupApp({ + AppModule, + SequelizeConfigService, + user: currentUser, + dbType: 'postgres', + }) + server = request(app.getHttpServer()) + + apiScopeDelegationTypeModel = await app.get( + getModelToken(ApiScopeDelegationType), + ) + + await createTestData({ + app, + tenantId: TENANT_ID, + tenantOwnerNationalId: currentUser.nationalId, + }) + }) + + const createAndAssert = async ({ + input, + expected, + }: { + input: AdminCreateScopeDto + expected: Partial<AdminScopeDTO> + }) => { + const response = await server + .post(`/v2/me/tenants/${TENANT_ID}/scopes`) + .send(input) + + expect(response.status).toEqual(200) + expect(response.body).toMatchObject({ + ...expected, + supportedDelegationTypes: expect.arrayContaining( + expected?.supportedDelegationTypes || [], + ), + }) + + const apiScopeDelegationTypes = await apiScopeDelegationTypeModel.findAll( + { + where: { + apiScopeName: response.body.name, + }, + }, + ) + + expect(apiScopeDelegationTypes).toHaveLength( + expected.supportedDelegationTypes?.length || 0, + ) + } + + it('should be able to create api scope using supportedDelegationTypes property without personal representative since user is not super admin', async () => { + await createAndAssert({ + input: { + ...createInput, + supportedDelegationTypes: [ + AuthDelegationType.Custom, + AuthDelegationType.LegalGuardian, + AuthDelegationType.ProcurationHolder, + AuthDelegationType.PersonalRepresentative, + ], + }, + expected: { + grantToPersonalRepresentatives: false, + grantToLegalGuardians: true, + grantToProcuringHolders: true, + allowExplicitDelegationGrant: true, + supportedDelegationTypes: [ + AuthDelegationType.Custom, + // Add general mandate since it is directly connected to Custom delegation type + AuthDelegationType.GeneralMandate, + AuthDelegationType.LegalGuardian, + AuthDelegationType.ProcurationHolder, + ], + }, + }) + }) + }) }) diff --git a/apps/services/auth/admin-api/src/app/v2/secrets/client-secrets.service.ts b/apps/services/auth/admin-api/src/app/v2/secrets/client-secrets.service.ts index 0d0e9afb58cb..437d1a3b345c 100644 --- a/apps/services/auth/admin-api/src/app/v2/secrets/client-secrets.service.ts +++ b/apps/services/auth/admin-api/src/app/v2/secrets/client-secrets.service.ts @@ -131,7 +131,7 @@ export class ClientSecretsService { '0123456789' + 'abcdefghijklmnopqrstuvwxyz' + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + - '.-+!#$%' + '.-!#$%' for (let i = 0; i < length; i++) { generatedSecret += validChars[randomInt(0, validChars.length)] diff --git a/apps/services/auth/admin-api/src/environments/environment.ts b/apps/services/auth/admin-api/src/environments/environment.ts index 4dd0c52c607b..a86d4bbb93fe 100644 --- a/apps/services/auth/admin-api/src/environments/environment.ts +++ b/apps/services/auth/admin-api/src/environments/environment.ts @@ -12,6 +12,11 @@ const devConfig = { port: 6333, clientSecretEncryptionKey: process.env.CLIENT_SECRET_ENCRYPTION_KEY ?? 'secret', + zendeskGeneralMandateWebhookSecret: + process.env.ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE ?? + //The static test signing secret from Zendesk as described in their docs + // https://developer.zendesk.com/documentation/webhooks/verifying/#signing-secrets-on-new-webhooks + 'dGhpc19zZWNyZXRfaXNfZm9yX3Rlc3Rpbmdfb25seQ==', } const prodConfig = { @@ -27,6 +32,8 @@ const prodConfig = { }, port: 3333, clientSecretEncryptionKey: process.env.CLIENT_SECRET_ENCRYPTION_KEY, + zendeskGeneralMandateWebhookSecret: + process.env.ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE, } export default process.env.NODE_ENV === 'production' ? prodConfig : devConfig diff --git a/apps/services/auth/admin-api/src/main.ts b/apps/services/auth/admin-api/src/main.ts index 5b9ad800db75..e93b97811c1f 100644 --- a/apps/services/auth/admin-api/src/main.ts +++ b/apps/services/auth/admin-api/src/main.ts @@ -1,4 +1,7 @@ -import { bootstrap } from '@island.is/infra-nest-server' +import { + bootstrap, + includeRawBodyMiddleware, +} from '@island.is/infra-nest-server' import { AppModule } from './app/app.module' import { environment as env } from './environments' @@ -14,4 +17,7 @@ bootstrap({ healthCheck: { database: true, }, + beforeServerStart: (app) => { + app.use(includeRawBodyMiddleware()) + }, }) diff --git a/apps/services/auth/admin-api/src/openApi.ts b/apps/services/auth/admin-api/src/openApi.ts index 7e1b27bf3538..64ae673f7545 100644 --- a/apps/services/auth/admin-api/src/openApi.ts +++ b/apps/services/auth/admin-api/src/openApi.ts @@ -1,8 +1,27 @@ import { DocumentBuilder } from '@nestjs/swagger' +import { environment } from './environments' +import { AuthScope } from '@island.is/auth/scopes' export const openApi = new DocumentBuilder() .setTitle('IdentityServer Admin api') .setDescription('Api for administration.') .setVersion('2.0') .addTag('auth-admin-api') + .addOAuth2( + { + type: 'oauth2', + description: + 'Authentication and authorization using island.is authentication service (IAS).', + flows: { + authorizationCode: { + authorizationUrl: `${environment.auth.issuer}/connect/authorize`, + tokenUrl: `${environment.auth.issuer}/connect/token`, + scopes: { + openid: 'Default openid scope', + }, + }, + }, + }, + 'ias', + ) .build() diff --git a/apps/services/auth/delegation-api/infra/delegation-api.ts b/apps/services/auth/delegation-api/infra/delegation-api.ts index e68fc0951175..eea421e6e077 100644 --- a/apps/services/auth/delegation-api/infra/delegation-api.ts +++ b/apps/services/auth/delegation-api/infra/delegation-api.ts @@ -1,8 +1,8 @@ import { json, + ref, service, ServiceBuilder, - ref, } from '../../../../../infra/src/dsl/dsl' import { Base, Client, RskProcuring } from '../../../../../infra/src/dsl/xroad' @@ -54,12 +54,20 @@ export const serviceSetup = (services: { prod: 'IS/GOV/5402696029/Skatturinn/ft-v1', }, COMPANY_REGISTRY_REDIS_NODES: REDIS_NODE_CONFIG, + SYSLUMENN_HOST: { + dev: 'https://api.syslumenn.is/staging', + staging: 'https://api.syslumenn.is/staging', + prod: 'https://api.syslumenn.is/api', + }, + SYSLUMENN_TIMEOUT: '3000', }) .secrets({ IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET', NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET', + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME', + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD', }) .xroad(Base, Client, RskProcuring) .readiness('/health/check') @@ -90,5 +98,10 @@ export const serviceSetup = (services: { public: false, }, }) - .grantNamespaces('nginx-ingress-internal', 'islandis', 'service-portal') + .grantNamespaces( + 'nginx-ingress-internal', + 'islandis', + 'service-portal', + 'user-notification-worker', + ) } diff --git a/apps/services/auth/delegation-api/src/app/app.module.ts b/apps/services/auth/delegation-api/src/app/app.module.ts index 10b6209d5bce..b425506e3878 100644 --- a/apps/services/auth/delegation-api/src/app/app.module.ts +++ b/apps/services/auth/delegation-api/src/app/app.module.ts @@ -7,9 +7,10 @@ import { SequelizeConfigService, } from '@island.is/auth-api-lib' import { AuthModule } from '@island.is/auth-nest-tools' +import { RskRelationshipsClientConfig } from '@island.is/clients-rsk-relationships' import { NationalRegistryClientConfig } from '@island.is/clients/national-registry-v2' import { CompanyRegistryConfig } from '@island.is/clients/rsk/company-registry' -import { RskRelationshipsClientConfig } from '@island.is/clients-rsk-relationships' +import { SyslumennClientConfig } from '@island.is/clients/syslumenn' import { AuditModule } from '@island.is/nest/audit' import { ConfigModule, @@ -50,6 +51,7 @@ import { ScopesModule } from './scopes/scopes.module' CompanyRegistryConfig, XRoadConfig, DelegationApiUserSystemNotificationConfig, + SyslumennClientConfig, ], }), ], diff --git a/apps/services/auth/delegation-api/src/app/delegations/delegation-index.controller.ts b/apps/services/auth/delegation-api/src/app/delegations/delegation-index.controller.ts index 3c37004049dc..841dcfab8410 100644 --- a/apps/services/auth/delegation-api/src/app/delegations/delegation-index.controller.ts +++ b/apps/services/auth/delegation-api/src/app/delegations/delegation-index.controller.ts @@ -88,16 +88,20 @@ export class DelegationIndexController { { auth: auth, action: 'createOrUpdateDelegationIndexItem', + namespace, resources: delegationIndexId, meta: { ...parsedDelegationInfo, }, }, - this.delegationIndexService.createOrUpdateDelegationRecord({ - ...parsedDelegationInfo, - provider: auth.delegationProvider, - validTo: body.validTo, - }), + this.delegationIndexService.createOrUpdateDelegationRecord( + { + ...parsedDelegationInfo, + provider: auth.delegationProvider, + validTo: body.validTo, + }, + auth, + ), ) } @@ -120,16 +124,20 @@ export class DelegationIndexController { await this.auditService.auditPromise( { auth: auth, + namespace, action: 'removeDelegationIndexItem', resources: delegationIndexId, meta: { ...parsedDelegationInfo, }, }, - this.delegationIndexService.removeDelegationRecord({ - ...parsedDelegationInfo, - provider: auth.delegationProvider, - }), + this.delegationIndexService.removeDelegationRecord( + { + ...parsedDelegationInfo, + provider: auth.delegationProvider, + }, + auth, + ), ) } } diff --git a/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegation-index-test-cases.ts b/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegation-index-test-cases.ts index 27e344502ed4..75b143ce5fd9 100644 --- a/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegation-index-test-cases.ts +++ b/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegation-index-test-cases.ts @@ -85,4 +85,16 @@ export const indexingTestCases: Record<string, TestCase> = { expectedFrom: [adult1], }, ), + customTwoDomains: new TestCase( + createClient({ + clientId: clientId, + supportsCustomDelegation: true, + supportedDelegationTypes: [AuthDelegationType.Custom], + }), + { + fromCustom: [adult1], + fromCustomOtherDomain: [adult1], + expectedFrom: [adult1], + }, + ), } diff --git a/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegation-index.service.spec.ts b/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegation-index.service.spec.ts index 784e2025dce6..d265b3d64fb3 100644 --- a/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegation-index.service.spec.ts +++ b/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegation-index.service.spec.ts @@ -26,7 +26,13 @@ import { TestApp, truncate } from '@island.is/testing/nest' import { setupWithAuth } from '../../../../../test/setup' import { indexingTestCases, prRight1 } from './delegation-index-test-cases' -import { domainName, TestCase, user } from './delegations-index-types' +import { + customScopes, + customScopesOtherDomain, + domainName, + TestCase, + user, +} from './delegations-index-types' const testDate = new Date(2024, 2, 1) @@ -47,7 +53,9 @@ describe('DelegationsIndexService', () => { const setup = async (testCase: TestCase) => { await truncate(sequelize) - await factory.createDomain(testCase.domain) + await Promise.all( + testCase.domains.map((domain) => factory.createDomain(domain)), + ) await factory.createClient(testCase.client) await Promise.all( @@ -56,9 +64,10 @@ describe('DelegationsIndexService', () => { // create custom delegations await Promise.all( - testCase.customDelegations.map((delegation) => - factory.createCustomDelegation(delegation), - ), + [ + ...testCase.customDelegations, + ...testCase.customDelegationsOtherDomain, + ].map((delegation) => factory.createCustomDelegation(delegation)), ) // create personal representation delegations @@ -77,6 +86,9 @@ describe('DelegationsIndexService', () => { active: true, }) + await delegationIndexMetaModel.destroy({ where: {} }) + await delegationIndexModel.destroy({ where: {} }) + // mock national registry for ward delegations jest .spyOn(nationalRegistryApi, 'getCustodyChildren') @@ -124,7 +136,9 @@ describe('DelegationsIndexService', () => { describe('indexDelegations', () => { describe('delegation index meta logic', () => { - beforeAll(async () => setup(indexingTestCases.custom)) + beforeAll(async () => { + await setup(indexingTestCases.custom) + }) beforeEach(async () => { jest.useFakeTimers() @@ -195,7 +209,9 @@ describe('DelegationsIndexService', () => { const testCase = indexingTestCases[type] testCase.user = user - beforeEach(async () => setup(testCase)) + beforeEach(async () => { + await setup(testCase) + }) it('should index delegations', async () => { // Act @@ -216,7 +232,9 @@ describe('DelegationsIndexService', () => { describe('Reindex (multiple indexing)', () => { const testCase = indexingTestCases.custom - beforeEach(async () => setup(testCase)) + beforeEach(async () => { + await setup(testCase) + }) it('should not duplicate delegations on reindex', async () => { // Act @@ -424,14 +442,16 @@ describe('DelegationsIndexService', () => { describe('indexCustomDelegations', () => { const testCase = indexingTestCases.custom - beforeAll(async () => setup(testCase)) + beforeAll(async () => { + await setup(testCase) + }) it('should index custom delegations', async () => { // Arrange const nationalId = user.nationalId // Act - await delegationIndexService.indexCustomDelegations(nationalId) + await delegationIndexService.indexCustomDelegations(nationalId, user) // Assert const delegations = await delegationIndexModel.findAll({ @@ -451,12 +471,8 @@ describe('DelegationsIndexService', () => { describe('indexRepresentativeDelegations', () => { const testCase = indexingTestCases.personalRepresentative - beforeAll(async () => setup(testCase)) - - afterEach(async () => { - // remove all data - await delegationIndexMetaModel.destroy({ where: {} }) - await delegationIndexModel.destroy({ where: {} }) + beforeAll(async () => { + await setup(testCase) }) it('should index personal representation delegations', async () => { @@ -464,7 +480,10 @@ describe('DelegationsIndexService', () => { const nationalId = user.nationalId // Act - await delegationIndexService.indexRepresentativeDelegations(nationalId) + await delegationIndexService.indexRepresentativeDelegations( + nationalId, + user, + ) // Assert const delegations = await delegationIndexModel.findAll({ @@ -487,7 +506,9 @@ describe('DelegationsIndexService', () => { describe('SubjectId', () => { const testCase = indexingTestCases.singleCustomDelegation - beforeEach(async () => setup(testCase)) + beforeEach(async () => { + await setup(testCase) + }) afterEach(async () => { // remove all data @@ -594,4 +615,44 @@ describe('DelegationsIndexService', () => { expect(delegations[0].subjectId).toBeDefined() }) }) + + describe('mergeCustomDelegations', () => { + const testCase = indexingTestCases.customTwoDomains + + beforeAll(async () => { + await setup(testCase) + }) + + it('should merge custom delegations', async () => { + // Arrange + const nationalId = user.nationalId + + // Act + await delegationIndexService.indexCustomDelegations(nationalId, user) + + // Assert + const delegations = await delegationModel.findAll({ + where: { + toNationalId: nationalId, + }, + }) + const indexedDelegations = await delegationIndexModel.findAll({ + where: { + toNationalId: nationalId, + }, + }) + + expect(delegations.length).toEqual(2) + expect(indexedDelegations.length).toEqual(1) + + const indexedDelegation = indexedDelegations[0] + + expect(indexedDelegation.fromNationalId).toBe(testCase.expectedFrom[0]) + expect(indexedDelegation.toNationalId).toBe(user.nationalId) + expect(indexedDelegation.customDelegationScopes).toHaveLength(4) + expect(indexedDelegation.customDelegationScopes?.sort()).toEqual( + [...customScopes, ...customScopesOtherDomain].sort(), + ) + }) + }) }) diff --git a/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegations-index-types.ts b/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegations-index-types.ts index 6a68f728f0b2..6588d66f7c1f 100644 --- a/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegations-index-types.ts +++ b/apps/services/auth/delegation-api/src/app/delegations/test/delegation-index/delegations-index-types.ts @@ -12,6 +12,7 @@ import { createCurrentUser } from '@island.is/testing/fixtures' export const clientId = '@island.is/webapp' export const domainName = '@island.is' +const otherDomainName = '@other.is/webapp' export const user = createCurrentUser({ nationalIdType: 'person', client: clientId, @@ -20,12 +21,14 @@ export const user = createCurrentUser({ export const legalGuardianScopes = ['lg1', 'lg2'] export const procurationHolderScopes = ['ph1', 'ph2'] export const customScopes = ['cu1', 'cu2'] +export const customScopesOtherDomain = ['cu-od1', 'cu-od2'] export const representativeScopes = ['pr1', 'pr2'] export interface ITestCaseOptions { fromChildren?: string[] fromCompanies?: string[] fromCustom?: string[] + fromCustomOtherDomain?: string[] fromRepresentative?: CreatePersonalRepresentativeDelegation[] scopes?: string[] scopeAccess?: [string, string][] @@ -35,13 +38,16 @@ export interface ITestCaseOptions { export class TestCase { domainName = domainName + otherDomainName = otherDomainName user: User client: CreateClient fromChildren: string[] fromCompanies: string[] fromCustom: string[] + fromCustomOtherDomain: string[] fromRepresentative: CreatePersonalRepresentativeDelegation[] scopes: string[] + scopesOtherDomain: string[] scopeAccess: [string, string][] expectedFrom: string[] @@ -51,6 +57,7 @@ export class TestCase { this.fromChildren = options.fromChildren ?? [] this.fromCompanies = options.fromCompanies ?? [] this.fromCustom = options.fromCustom ?? [] + this.fromCustomOtherDomain = options.fromCustomOtherDomain ?? [] this.fromRepresentative = options.fromRepresentative ?? [] this.scopes = options.scopes ?? [ ...legalGuardianScopes, @@ -58,20 +65,23 @@ export class TestCase { ...customScopes, ...representativeScopes, ] + this.scopesOtherDomain = customScopesOtherDomain this.scopeAccess = options.scopeAccess ?? [] this.expectedFrom = options.expectedFrom } - get domain(): CreateDomain { - return { name: this.domainName } + get domains(): CreateDomain[] { + return [{ name: this.domainName }, { name: this.otherDomainName }] } get apiScopes(): CreateApiScope[] { - return this.scopes.map((s) => ({ + return [...this.scopes, ...this.scopesOtherDomain].map((s) => ({ name: s, description: s, displayName: s, - domainName: this.domainName, + domainName: this.scopesOtherDomain.includes(s) + ? this.otherDomainName + : this.domainName, grantToLegalGuardians: legalGuardianScopes.includes(s), grantToProcuringHolders: procurationHolderScopes.includes(s), allowExplicitDelegationGrant: customScopes.includes(s), @@ -93,6 +103,17 @@ export class TestCase { })) } + get customDelegationsOtherDomain(): CreateCustomDelegation[] { + return this.fromCustomOtherDomain.map((d: string) => ({ + domainName: this.otherDomainName, + toNationalId: this.user.nationalId, + fromNationalId: d, + scopes: this.scopesOtherDomain.map((s) => ({ + scopeName: s, + })), + })) + } + get procuration(): GetIndividualRelationships { return { nationalId: this.user.nationalId, @@ -123,7 +144,10 @@ export class TestCase { if (procurationHolderScopes.includes(scopeName)) { result.push(AuthDelegationType.ProcurationHolder) } - if (customScopes.includes(scopeName)) { + if ( + customScopes.includes(scopeName) || + customScopesOtherDomain.includes(scopeName) + ) { result.push(AuthDelegationType.Custom) } if (representativeScopes.includes(scopeName)) { diff --git a/apps/services/auth/ids-api/infra/identity-server.ts b/apps/services/auth/ids-api/infra/identity-server.ts index 9e02c151a911..7fe5914f31ea 100644 --- a/apps/services/auth/ids-api/infra/identity-server.ts +++ b/apps/services/auth/ids-api/infra/identity-server.ts @@ -120,13 +120,13 @@ export const serviceSetup = (services: { public: true, extraAnnotations: { dev: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', + 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', }, staging: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', + 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', }, prod: { diff --git a/apps/services/auth/ids-api/infra/ids-api.ts b/apps/services/auth/ids-api/infra/ids-api.ts index 2acab001508d..14ac4f6c60bf 100644 --- a/apps/services/auth/ids-api/infra/ids-api.ts +++ b/apps/services/auth/ids-api/infra/ids-api.ts @@ -75,6 +75,20 @@ export const serviceSetup = (): ServiceBuilder<'services-auth-ids-api'> => { PASSKEY_CORE_RP_NAME: 'Island.is', PASSKEY_CORE_CHALLENGE_TTL_MS: '120000', REDIS_NODES: REDIS_NODE_CONFIG, + PASSKEY_CORE_ALLOWED_ORIGINS: json([ + // Origin for iOS app. + 'https://island.is', + // Origin for Android test app + 'android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0', + // Origin for Android prod app + 'android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU', + ]), + SYSLUMENN_HOST: { + dev: 'https://api.syslumenn.is/staging', + staging: 'https://api.syslumenn.is/staging', + prod: 'https://api.syslumenn.is/api', + }, + SYSLUMENN_TIMEOUT: '3000', }) .secrets({ IDENTITY_SERVER_CLIENT_SECRET: @@ -82,10 +96,10 @@ export const serviceSetup = (): ServiceBuilder<'services-auth-ids-api'> => { NOVA_URL: '/k8s/services-auth/NOVA_URL', NOVA_USERNAME: '/k8s/services-auth/NOVA_USERNAME', NOVA_PASSWORD: '/k8s/services-auth/NOVA_PASSWORD', - PASSKEY_CORE_ALLOWED_ORIGINS: - '/k8s/services-auth/PASSKEY_CORE_ALLOWED_ORIGINS', NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/services-auth/NATIONAL_REGISTRY_B2C_CLIENT_SECRET', + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME', + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD', }) .xroad(Base, Client, RskProcuring, NationalRegistryAuthB2C) .readiness('/health/check') diff --git a/apps/services/auth/ids-api/src/app/app.module.ts b/apps/services/auth/ids-api/src/app/app.module.ts index 4f8a3e3d670f..f4aeb431e8c8 100644 --- a/apps/services/auth/ids-api/src/app/app.module.ts +++ b/apps/services/auth/ids-api/src/app/app.module.ts @@ -11,6 +11,7 @@ import { RskRelationshipsClientConfig } from '@island.is/clients-rsk-relationshi import { NationalRegistryClientConfig } from '@island.is/clients/national-registry-v2' import { NationalRegistryV3ClientConfig } from '@island.is/clients/national-registry-v3' import { CompanyRegistryConfig } from '@island.is/clients/rsk/company-registry' +import { SyslumennClientConfig } from '@island.is/clients/syslumenn' import { UserProfileClientConfig } from '@island.is/clients/user-profile' import { AuditModule } from '@island.is/nest/audit' import { @@ -28,12 +29,12 @@ import { DelegationsModule } from './delegations/delegations.module' import { GrantsModule } from './grants/grants.module' import { LoginRestrictionsModule } from './login-restrictions/login-restrictions.module' import { NotificationsModule } from './notifications/notifications.module' +import { PasskeysModule } from './passkeys/passkeys.module' import { PermissionsModule } from './permissions/permissions.module' import { ResourcesModule } from './resources/resources.module' import { TranslationModule } from './translation/translation.module' import { UserProfileModule } from './user-profile/user-profile.module' import { UsersModule } from './users/users.module' -import { PasskeysModule } from './passkeys/passkeys.module' @Module({ imports: [ @@ -68,6 +69,7 @@ import { PasskeysModule } from './passkeys/passkeys.module' PasskeysCoreConfig, NationalRegistryV3ClientConfig, smsModuleConfig, + SyslumennClientConfig, ], }), ], diff --git a/apps/services/auth/ids-api/src/app/delegations/delegation-verification-result.dto.ts b/apps/services/auth/ids-api/src/app/delegations/delegation-verification-result.dto.ts new file mode 100644 index 000000000000..6f99d970922f --- /dev/null +++ b/apps/services/auth/ids-api/src/app/delegations/delegation-verification-result.dto.ts @@ -0,0 +1,8 @@ +import { ApiProperty } from '@nestjs/swagger' +import { IsBoolean } from 'class-validator' + +export class DelegationVerificationResult { + @IsBoolean() + @ApiProperty() + verified!: boolean +} diff --git a/apps/services/auth/ids-api/src/app/delegations/delegation-verification.dto.ts b/apps/services/auth/ids-api/src/app/delegations/delegation-verification.dto.ts new file mode 100644 index 000000000000..aa799809529d --- /dev/null +++ b/apps/services/auth/ids-api/src/app/delegations/delegation-verification.dto.ts @@ -0,0 +1,19 @@ +import { ApiProperty } from '@nestjs/swagger' +import { IsArray, IsEnum, IsString } from 'class-validator' + +import { AuthDelegationType } from '@island.is/shared/types' + +export class DelegationVerification { + @IsString() + @ApiProperty() + fromNationalId!: string + + @IsArray() + @IsEnum(AuthDelegationType, { each: true }) + @ApiProperty({ + enum: AuthDelegationType, + enumName: 'AuthDelegationType', + isArray: true, + }) + delegationTypes!: AuthDelegationType[] +} diff --git a/apps/services/auth/ids-api/src/app/delegations/delegations.controller.spec.ts b/apps/services/auth/ids-api/src/app/delegations/delegations-personal-representative.controller.spec.ts similarity index 99% rename from apps/services/auth/ids-api/src/app/delegations/delegations.controller.spec.ts rename to apps/services/auth/ids-api/src/app/delegations/delegations-personal-representative.controller.spec.ts index e5f5875ce638..f0050b0d9e9e 100644 --- a/apps/services/auth/ids-api/src/app/delegations/delegations.controller.spec.ts +++ b/apps/services/auth/ids-api/src/app/delegations/delegations-personal-representative.controller.spec.ts @@ -6,6 +6,7 @@ import request from 'supertest' import { ApiScope, ApiScopeDelegationType, + Client, DelegationProviderModel, DelegationsIndexService, DelegationTypeModel, @@ -52,12 +53,13 @@ import { personalRepresentativeType, } from '../../../test/stubs/personalRepresentativeStubs' -describe('DelegationsController', () => { +describe('Personal Representative DelegationsController', () => { describe('Given a user is authenticated', () => { let app: TestApp let factory: FixtureFactory let server: request.SuperTest<request.Test> let apiScopeModel: typeof ApiScope + let clientModel: typeof Client let prScopePermission: typeof PersonalRepresentativeScopePermission let apiScopeDelegationTypeModel: typeof ApiScopeDelegationType let prModel: typeof PersonalRepresentative @@ -143,6 +145,7 @@ describe('DelegationsController', () => { delegationProviderModel = app.get<typeof DelegationProviderModel>( getModelToken(DelegationProviderModel), ) + clientModel = app.get<typeof Client>(getModelToken(Client)) nationalRegistryApi = app.get(NationalRegistryClientService) delegationIndexService = app.get(DelegationsIndexService) factory = new FixtureFactory(app) diff --git a/apps/services/auth/ids-api/src/app/delegations/delegations.controller.ts b/apps/services/auth/ids-api/src/app/delegations/delegations.controller.ts index df91500afe6e..8310d931d823 100644 --- a/apps/services/auth/ids-api/src/app/delegations/delegations.controller.ts +++ b/apps/services/auth/ids-api/src/app/delegations/delegations.controller.ts @@ -1,8 +1,10 @@ import { + Body, Controller, Get, Inject, ParseArrayPipe, + Post, Query, UseGuards, Version, @@ -25,11 +27,14 @@ import { ScopesGuard, } from '@island.is/auth-nest-tools' import { LOGGER_PROVIDER } from '@island.is/logging' +import { Documentation } from '@island.is/nest/swagger' import { AuthDelegationType } from '@island.is/shared/types' +import { DelegationVerificationResult } from './delegation-verification-result.dto' +import { DelegationVerification } from './delegation-verification.dto' + import type { Logger } from '@island.is/logging' import type { User } from '@island.is/auth-nest-tools' - @UseGuards(IdsUserGuard, ScopesGuard) @ApiTags('delegations') @Controller({ @@ -110,4 +115,26 @@ export class DelegationsController { delegationType, ) } + + @Scopes('@identityserver.api/authentication') + @Post('verify') + @Documentation({ + description: 'Verifies a delegation at the source.', + response: { status: 200, type: DelegationVerificationResult }, + }) + @ApiOkResponse({ type: DelegationVerificationResult }) + async verify( + @CurrentUser() user: User, + @Body() + request: DelegationVerification, + ): Promise<DelegationVerificationResult> { + const verified = + await this.delegationsIncomingService.verifyDelegationAtProvider( + user, + request.fromNationalId, + request.delegationTypes, + ) + + return { verified } + } } diff --git a/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters-test-cases.ts b/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters-test-cases.ts index 314f953fb345..f18686a29cc6 100644 --- a/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters-test-cases.ts +++ b/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters-test-cases.ts @@ -287,4 +287,17 @@ export const testCases: Record<string, TestCase> = { ], }, ), + // Returns available delegations for legal representatives + legalRepresentative1: new TestCase( + createClient({ + clientId: clientId, + supportedDelegationTypes: [AuthDelegationType.LegalRepresentative], + }), + { + fromLegalRepresentative: [person1, person2], + protectedScopes: [], + expectedFrom: [person1, person2], + expectedTypes: [AuthDelegationType.LegalRepresentative], + }, + ), } diff --git a/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters-types.ts b/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters-types.ts index 977e14fb8e86..99bebf40c432 100644 --- a/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters-types.ts +++ b/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters-types.ts @@ -29,6 +29,8 @@ const customScope2 = 'cu2' const customScopeOtherDomain = 'cu-od1' const representativeScope1 = 'pr1' const representativeScope2 = 'pr2' +const legalRepresentativeScope1 = 'lr1' +const legalRepresentativeScope2 = 'lr2' export const legalGuardianScopes = [legalGuardianScope1, legalGuardianScope2] export const procurationHolderScopes = [ @@ -37,12 +39,17 @@ export const procurationHolderScopes = [ ] export const customScopes = [customScope1, customScope2, customScopeOtherDomain] export const representativeScopes = [representativeScope1, representativeScope2] +export const legalRepresentativeScopes = [ + legalRepresentativeScope1, + legalRepresentativeScope2, +] export interface ITestCaseOptions { fromChildren?: string[] fromCompanies?: string[] fromCustom?: string[] fromRepresentative?: string[] + fromLegalRepresentative?: string[] scopes?: string[] protectedScopes?: string[] scopeAccess?: [string, string][] @@ -59,6 +66,7 @@ export class TestCase { fromCompanies: string[] fromCustom: string[] fromRepresentative: string[] + fromLegalRepresentative: string[] scopes: string[] protectedScopes: string[] scopeAccess: [string, string][] @@ -71,11 +79,13 @@ export class TestCase { this.fromCompanies = options.fromCompanies ?? [] this.fromCustom = options.fromCustom ?? [] this.fromRepresentative = options.fromRepresentative ?? [] + this.fromLegalRepresentative = options.fromLegalRepresentative ?? [] this.scopes = options.scopes ?? [ ...legalGuardianScopes, ...procurationHolderScopes, ...customScopes, ...representativeScopes, + ...legalRepresentativeScopes, ] this.protectedScopes = options.protectedScopes ?? [] this.scopeAccess = options.scopeAccess ?? [] @@ -160,6 +170,9 @@ export class TestCase { if (representativeScopes.includes(scopeName)) { result.push(AuthDelegationType.PersonalRepresentative) } + if (legalRepresentativeScopes.includes(scopeName)) { + result.push(AuthDelegationType.LegalRepresentative) + } return result } } diff --git a/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters.spec.ts b/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters.spec.ts index 6538841fba40..526bf4262a4a 100644 --- a/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters.spec.ts +++ b/apps/services/auth/ids-api/src/app/delegations/test/delegations-filters.spec.ts @@ -8,10 +8,17 @@ import { MergedDelegationDTO } from '@island.is/auth-api-lib' import { RskRelationshipsClient } from '@island.is/clients-rsk-relationships' import { NationalRegistryClientService } from '@island.is/clients/national-registry-v2' import { FixtureFactory } from '@island.is/services/auth/testing' +import { + AuthDelegationProvider, + AuthDelegationType, +} from '@island.is/shared/types' import { createNationalRegistryUser } from '@island.is/testing/fixtures' import { TestApp, truncate } from '@island.is/testing/nest' -import { setupWithAuth } from '../../../../test/setup' +import { + nonExistingLegalRepresentativeNationalId, + setupWithAuth, +} from '../../../../test/setup' import { testCases } from './delegations-filters-test-cases' import { user } from './delegations-filters-types' @@ -86,6 +93,17 @@ describe('DelegationsController', () => { ), ) + await Promise.all( + testCase.fromLegalRepresentative.map((nationalId) => + factory.createDelegationIndexRecord({ + fromNationalId: nationalId, + toNationalId: testCase.user.nationalId, + type: AuthDelegationType.LegalRepresentative, + provider: AuthDelegationProvider.DistrictCommissionersRegistry, + }), + ), + ) + jest .spyOn(nationalRegistryApi, 'getCustodyChildren') .mockImplementation(async () => testCase.fromChildren) @@ -113,4 +131,58 @@ describe('DelegationsController', () => { }) }, ) + + describe('verify', () => { + const testCase = testCases['legalRepresentative1'] + testCase.user = user + const path = '/v1/delegations/verify' + + beforeAll(async () => { + await truncate(sequelize) + + await Promise.all( + testCase.domains.map((domain) => factory.createDomain(domain)), + ) + + await factory.createClient(testCase.client) + + await Promise.all( + testCase.clientAllowedScopes.map((scope) => + factory.createClientAllowedScope(scope), + ), + ) + + await Promise.all( + testCase.apiScopes.map((scope) => factory.createApiScope(scope)), + ) + + await factory.createDelegationIndexRecord({ + fromNationalId: nonExistingLegalRepresentativeNationalId, + toNationalId: testCase.user.nationalId, + type: AuthDelegationType.LegalRepresentative, + provider: AuthDelegationProvider.DistrictCommissionersRegistry, + }) + }) + + let res: request.Response + it(`POST ${path} returns verified response`, async () => { + res = await server.post(path).send({ + fromNationalId: testCase.fromLegalRepresentative[0], + delegationTypes: [AuthDelegationType.LegalRepresentative], + }) + + expect(res.status).toEqual(200) + expect(res.body.verified).toEqual(true) + }) + + it(`POST ${path} returns non-verified response`, async () => { + res = await server.post(path).send({ + fromNationalId: nonExistingLegalRepresentativeNationalId, + delegationTypes: [AuthDelegationType.LegalRepresentative], + }) + + expect(res.status).toEqual(200) + expect(res.body.verified).toEqual(false) + }) + }) }) diff --git a/apps/services/auth/ids-api/src/app/delegations/test/delegations-scopes.spec.ts b/apps/services/auth/ids-api/src/app/delegations/test/delegations-scopes.spec.ts index 31915631e076..61367667d5c2 100644 --- a/apps/services/auth/ids-api/src/app/delegations/test/delegations-scopes.spec.ts +++ b/apps/services/auth/ids-api/src/app/delegations/test/delegations-scopes.spec.ts @@ -22,12 +22,14 @@ const legalGuardianScopes = ['lg1', 'lg2'] const procurationHolderScopes = ['ph1', 'ph2'] const customScopes1 = ['cu1', 'cu2'] const customScopes2 = ['cu3', 'cu4'] +const legalRepresentativeScopes = ['lr1', 'lr2'] const apiScopes = [ ...legalGuardianScopes, ...procurationHolderScopes, ...customScopes1, ...customScopes2, + ...legalRepresentativeScopes, ] const fromCustom = [ @@ -48,6 +50,9 @@ const supportedDelegationTypes = (scopeName: string): AuthDelegationType[] => { if (customScopes1.includes(scopeName) || customScopes2.includes(scopeName)) { result.push(AuthDelegationType.Custom) } + if (legalRepresentativeScopes.includes(scopeName)) { + result.push(AuthDelegationType.LegalRepresentative) + } return result } @@ -98,6 +103,11 @@ const testCases: Record<string, TestCase> = { ], expected: [...legalGuardianScopes, ...identityResources], }, + '7': { + fromNationalId: createNationalId('person'), + delegationType: [AuthDelegationType.LegalRepresentative], + expected: [...legalRepresentativeScopes, ...identityResources], + }, } const user = createCurrentUser({ diff --git a/apps/services/auth/ids-api/src/app/delegations/test/delegations.controller.spec.ts b/apps/services/auth/ids-api/src/app/delegations/test/delegations.controller.spec.ts new file mode 100644 index 000000000000..4abd4987bd31 --- /dev/null +++ b/apps/services/auth/ids-api/src/app/delegations/test/delegations.controller.spec.ts @@ -0,0 +1,278 @@ +import { getModelToken } from '@nestjs/sequelize' +import request from 'supertest' +import { uuid } from 'uuidv4' +import addDays from 'date-fns/addDays' + +import { + ApiScope, + ApiScopeDelegationType, + Delegation, + DelegationDelegationType, + DelegationProviderModel, + DelegationScope, + DelegationTypeModel, + Domain, +} from '@island.is/auth-api-lib' +import { NationalRegistryClientService } from '@island.is/clients/national-registry-v2' +import { + createClient, + createDomain, + FixtureFactory, +} from '@island.is/services/auth/testing' +import { + AuthDelegationProvider, + AuthDelegationType, +} from '@island.is/shared/types' +import { + createCurrentUser, + createNationalRegistryUser, +} from '@island.is/testing/fixtures' +import { TestApp } from '@island.is/testing/nest' + +import { defaultScopes, setupWithAuth } from '../../../../test/setup' +import { getFakeNationalId } from '../../../../test/stubs/genericStubs' + +describe('DelegationsController', () => { + describe('Given a user is authenticated', () => { + let app: TestApp + let factory: FixtureFactory + let server: request.SuperTest<request.Test> + + let apiScopeModel: typeof ApiScope + let apiScopeDelegationTypeModel: typeof ApiScopeDelegationType + let delegationDelegationTypeModel: typeof DelegationDelegationType + let delegationModel: typeof Delegation + let delegationTypeModel: typeof DelegationTypeModel + let nationalRegistryApi: NationalRegistryClientService + let delegationProviderModel: typeof DelegationProviderModel + let delegationScopesModel: typeof DelegationScope + + const client = createClient({ + clientId: '@island.is/webapp', + }) + + const scopeValid1 = 'scope/valid1' + const scopeValid2 = 'scope/valid2' + const scopeValid1and2 = 'scope/valid1and2' + const scopeUnactiveType = 'scope/unactiveType' + const scopeOutdated = 'scope/outdated' + const disabledScope = 'disabledScope' + + client.allowedScopes = Object.values([ + scopeValid1, + scopeValid2, + scopeValid1and2, + scopeUnactiveType, + scopeOutdated, + disabledScope, + ]).map((s) => ({ + clientId: client.clientId, + scopeName: s, + })) + + const userNationalId = getFakeNationalId() + + const user = createCurrentUser({ + nationalId: userNationalId, + scope: [defaultScopes.testUserHasAccess.name], + client: client.clientId, + }) + + const domain = createDomain() + + beforeAll(async () => { + app = await setupWithAuth({ + user, + }) + server = request(app.getHttpServer()) + + const domainModel = app.get<typeof Domain>(getModelToken(Domain)) + await domainModel.create(domain) + + apiScopeModel = app.get<typeof ApiScope>(getModelToken(ApiScope)) + + apiScopeDelegationTypeModel = app.get<typeof ApiScopeDelegationType>( + getModelToken(ApiScopeDelegationType), + ) + delegationTypeModel = app.get<typeof DelegationTypeModel>( + getModelToken(DelegationTypeModel), + ) + delegationProviderModel = app.get<typeof DelegationProviderModel>( + getModelToken(DelegationProviderModel), + ) + delegationScopesModel = app.get<typeof DelegationScope>( + getModelToken(DelegationScope), + ) + delegationModel = app.get<typeof Delegation>(getModelToken(Delegation)) + delegationDelegationTypeModel = app.get<typeof DelegationDelegationType>( + getModelToken(DelegationDelegationType), + ) + nationalRegistryApi = app.get(NationalRegistryClientService) + factory = new FixtureFactory(app) + }) + + afterAll(async () => { + await app.cleanUp() + }) + + describe('GET with general mandate delegation type', () => { + const representeeNationalId = getFakeNationalId() + let nationalRegistryApiSpy: jest.SpyInstance + const scopeNames = [ + 'api-scope/generalMandate1', + 'api-scope/generalMandate2', + 'api-scope/generalMandate3', + ] + + beforeAll(async () => { + client.supportedDelegationTypes = [ + AuthDelegationType.GeneralMandate, + AuthDelegationType.LegalGuardian, + ] + await factory.createClient(client) + + const delegations = await delegationModel.create({ + id: uuid(), + fromDisplayName: 'Test', + fromNationalId: representeeNationalId, + toNationalId: userNationalId, + toName: 'Test', + }) + + await delegationProviderModel.create({ + id: AuthDelegationProvider.Custom, + name: 'Custom', + description: 'Custom', + }) + + await delegationDelegationTypeModel.create({ + delegationId: delegations.id, + delegationTypeId: AuthDelegationType.GeneralMandate, + }) + + await apiScopeModel.bulkCreate( + scopeNames.map((name) => ({ + name, + domainName: domain.name, + enabled: true, + description: `${name}: description`, + displayName: `${name}: display name`, + })), + ) + + // set 2 of 3 scopes to have general mandate delegation type + await apiScopeDelegationTypeModel.bulkCreate([ + { + apiScopeName: scopeNames[0], + delegationType: AuthDelegationType.GeneralMandate, + }, + { + apiScopeName: scopeNames[1], + delegationType: AuthDelegationType.GeneralMandate, + }, + ]) + + nationalRegistryApiSpy = jest + .spyOn(nationalRegistryApi, 'getIndividual') + .mockImplementation(async (id) => { + const user = createNationalRegistryUser({ + nationalId: representeeNationalId, + }) + + return user ?? null + }) + }) + + afterAll(async () => { + await app.cleanUp() + nationalRegistryApiSpy.mockClear() + }) + + it('should return mergedDelegationDTO with the generalMandate', async () => { + const response = await server.get('/v2/delegations') + + expect(response.status).toEqual(200) + expect(response.body).toHaveLength(1) + }) + + it('should get all general mandate scopes', async () => { + const response = await server.get('/delegations/scopes').query({ + fromNationalId: representeeNationalId, + delegationType: [AuthDelegationType.GeneralMandate], + }) + + expect(response.status).toEqual(200) + expect(response.body).toEqual([scopeNames[0], scopeNames[1]]) + }) + + it('should only return valid general mandates', async () => { + const newNationalId = getFakeNationalId() + const newDelegation = await delegationModel.create({ + id: uuid(), + fromDisplayName: 'Test', + fromNationalId: newNationalId, + toNationalId: userNationalId, + toName: 'Test', + }) + + await delegationDelegationTypeModel.create({ + delegationId: newDelegation.id, + delegationTypeId: AuthDelegationType.GeneralMandate, + validTo: addDays(new Date(), -2), + }) + + const response = await server.get('/delegations/scopes').query({ + fromNationalId: newNationalId, + delegationType: [AuthDelegationType.GeneralMandate], + }) + + expect(response.status).toEqual(200) + expect(response.body).toEqual([]) + }) + + it('should return all general mandate scopes and other preset scopes', async () => { + const newDelegation = await delegationModel.create({ + id: uuid(), + fromDisplayName: 'Test', + fromNationalId: representeeNationalId, + domainName: domain.name, + toNationalId: userNationalId, + toName: 'Test', + }) + + await delegationTypeModel.create({ + id: AuthDelegationType.Custom, + name: 'custom', + description: 'custom', + providerId: AuthDelegationProvider.Custom, + }) + + await delegationScopesModel.create({ + id: uuid(), + delegationId: newDelegation.id, + scopeName: scopeNames[2], + // set valid from as yesterday and valid to as tomorrow + validFrom: addDays(new Date(), -1), + validTo: addDays(new Date(), 1), + }) + + await apiScopeDelegationTypeModel.create({ + apiScopeName: scopeNames[2], + delegationType: AuthDelegationType.LegalGuardian, + }) + + const response = await server.get('/delegations/scopes').query({ + fromNationalId: representeeNationalId, + delegationType: [ + AuthDelegationType.GeneralMandate, + AuthDelegationType.LegalGuardian, + ], + }) + + expect(response.status).toEqual(200) + expect(response.body).toEqual(expect.arrayContaining(scopeNames)) + expect(response.body).toHaveLength(scopeNames.length) + }) + }) + }) +}) diff --git a/apps/services/auth/ids-api/test/setup.ts b/apps/services/auth/ids-api/test/setup.ts index 7212ed9a56a2..a04e722bfcc8 100644 --- a/apps/services/auth/ids-api/test/setup.ts +++ b/apps/services/auth/ids-api/test/setup.ts @@ -12,6 +12,7 @@ import { RskRelationshipsClient } from '@island.is/clients-rsk-relationships' import { NationalRegistryClientService } from '@island.is/clients/national-registry-v2' import { NationalRegistryV3ClientService } from '@island.is/clients/national-registry-v3' import { CompanyRegistryClientService } from '@island.is/clients/rsk/company-registry' +import { SyslumennService } from '@island.is/clients/syslumenn' import { V2MeApi } from '@island.is/clients/user-profile' import { FeatureFlagService, Features } from '@island.is/nest/feature-flags' import { @@ -21,6 +22,7 @@ import { } from '@island.is/services/auth/testing' import { createCurrentUser, + createNationalId, createUniqueWords, } from '@island.is/testing/fixtures' import { @@ -67,6 +69,8 @@ export const defaultScopes: Scopes = { }, } +export const nonExistingLegalRepresentativeNationalId = createNationalId() + class MockNationalRegistryClientService implements Partial<NationalRegistryClientService> { @@ -85,8 +89,11 @@ class MockUserProfile { meUserProfileControllerFindUserProfile = jest.fn().mockResolvedValue({}) } -class MockDelegationsIndexService { - indexDelegations = jest.fn().mockImplementation(() => Promise.resolve()) +class MockSyslumennService { + checkIfDelegationExists = jest.fn( + (_toNationalId: string, fromNationalId: string) => + fromNationalId !== nonExistingLegalRepresentativeNationalId, + ) } interface SetupOptions { @@ -129,13 +136,13 @@ export const setupWithAuth = async ({ .useValue({ getIndividualRelationships: jest.fn().mockResolvedValue(null), }) + .overrideProvider(SyslumennService) + .useClass(MockSyslumennService) .overrideProvider(FeatureFlagService) .useValue({ getValue: (feature: Features) => !features || features.includes(feature), - }) - .overrideProvider(DelegationsIndexService) - .useClass(MockDelegationsIndexService), + }), hooks: [ useAuth({ auth: user }), useDatabase({ type: 'postgres', provider: SequelizeConfigService }), @@ -149,6 +156,12 @@ export const setupWithAuth = async ({ const apiScopeModel = app.get<typeof ApiScope>(getModelToken(ApiScope)) await apiScopeModel.bulkCreate(Object.values(scopes).map(createApiScope)) + // Mock delegation indexing + const delegationIndexService = app.get(DelegationsIndexService) + delegationIndexService.indexDelegations = jest + .fn() + .mockImplementation(() => Promise.resolve()) + return app } diff --git a/apps/services/auth/personal-representative-public/infra/personal-representative-public.ts b/apps/services/auth/personal-representative-public/infra/personal-representative-public.ts index e3c409a231df..07d55b20b6bd 100644 --- a/apps/services/auth/personal-representative-public/infra/personal-representative-public.ts +++ b/apps/services/auth/personal-representative-public/infra/personal-representative-public.ts @@ -26,15 +26,6 @@ export const serviceSetup = paths: ['/'], public: false, }, - demo: { - host: { - dev: 'personal-representative-public-xrd.dev01.devland.is', - staging: '', - prod: '', - }, - paths: ['/'], - public: true, - }, }) .readiness('/health/check') .liveness('/liveness') diff --git a/apps/services/auth/personal-representative/infra/personal-representative.ts b/apps/services/auth/personal-representative/infra/personal-representative.ts index 9a54b8c4206b..1be694fd7aa3 100644 --- a/apps/services/auth/personal-representative/infra/personal-representative.ts +++ b/apps/services/auth/personal-representative/infra/personal-representative.ts @@ -1,5 +1,4 @@ import { json, service, ServiceBuilder } from '../../../../../infra/src/dsl/dsl' -import { MissingSetting } from '../../../../../infra/src/dsl/types/input-types' import { Base, Client, RskProcuring } from '../../../../../infra/src/dsl/xroad' const REDIS_NODE_CONFIG = { @@ -42,10 +41,18 @@ export const serviceSetup = prod: 'IS/GOV/5402696029/Skatturinn/ft-v1', }, COMPANY_REGISTRY_REDIS_NODES: REDIS_NODE_CONFIG, + SYSLUMENN_HOST: { + dev: 'https://api.syslumenn.is/staging', + staging: 'https://api.syslumenn.is/staging', + prod: 'https://api.syslumenn.is/api', + }, + SYSLUMENN_TIMEOUT: '3000', }) .secrets({ IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET', + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME', + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD', }) .xroad(Base, Client, RskProcuring) .ingress({ @@ -59,15 +66,6 @@ export const serviceSetup = paths: ['/'], public: false, }, - demo: { - host: { - dev: 'personal-representative-xrd.dev01.devland.is', - staging: MissingSetting, - prod: MissingSetting, - }, - paths: ['/'], - public: true, - }, }) .readiness('/health/check') .liveness('/liveness') diff --git a/apps/services/auth/personal-representative/src/app/app.module.ts b/apps/services/auth/personal-representative/src/app/app.module.ts index 14a44d76dc13..74d0e3f0c759 100644 --- a/apps/services/auth/personal-representative/src/app/app.module.ts +++ b/apps/services/auth/personal-representative/src/app/app.module.ts @@ -1,26 +1,29 @@ -import { RightTypesModule } from './modules/rightTypes/rightTypes.module' -import { PersonalRepresentativesModule } from './modules/personalRepresentatives/personalRepresentatives.module' -import { PersonalRepresentativeTypesModule } from './modules/personalRepresentativeTypes/personalRepresentativeTypes.module' -import { AccessLogsModule } from './modules/accessLogs/accessLogs.module' +import { Module } from '@nestjs/common' +import { SequelizeModule } from '@nestjs/sequelize' + import { DelegationConfig, SequelizeConfigService, } from '@island.is/auth-api-lib' -import { Module } from '@nestjs/common' -import { SequelizeModule } from '@nestjs/sequelize' -import { environment } from '../environments' -import { AuditModule } from '@island.is/nest/audit' import { AuthModule } from '@island.is/auth-nest-tools' +import { RskRelationshipsClientConfig } from '@island.is/clients-rsk-relationships' +import { NationalRegistryClientConfig } from '@island.is/clients/national-registry-v2' +import { CompanyRegistryConfig } from '@island.is/clients/rsk/company-registry' +import { SyslumennClientConfig } from '@island.is/clients/syslumenn' +import { AuditModule } from '@island.is/nest/audit' import { ConfigModule, IdsClientConfig, XRoadConfig, } from '@island.is/nest/config' -import { NationalRegistryClientConfig } from '@island.is/clients/national-registry-v2' -import { CompanyRegistryConfig } from '@island.is/clients/rsk/company-registry' -import { RskRelationshipsClientConfig } from '@island.is/clients-rsk-relationships' import { FeatureFlagConfig } from '@island.is/nest/feature-flags' +import { environment } from '../environments' +import { AccessLogsModule } from './modules/accessLogs/accessLogs.module' +import { PersonalRepresentativesModule } from './modules/personalRepresentatives/personalRepresentatives.module' +import { PersonalRepresentativeTypesModule } from './modules/personalRepresentativeTypes/personalRepresentativeTypes.module' +import { RightTypesModule } from './modules/rightTypes/rightTypes.module' + @Module({ imports: [ AuditModule.forRoot(environment.audit), @@ -38,6 +41,7 @@ import { FeatureFlagConfig } from '@island.is/nest/feature-flags' CompanyRegistryConfig, XRoadConfig, FeatureFlagConfig, + SyslumennClientConfig, ], }), RightTypesModule, diff --git a/apps/services/auth/personal-representative/src/app/modules/personalRepresentatives/personalRepresentatives.controller.ts b/apps/services/auth/personal-representative/src/app/modules/personalRepresentatives/personalRepresentatives.controller.ts index 8e7f9a477f4c..00af813def2c 100644 --- a/apps/services/auth/personal-representative/src/app/modules/personalRepresentatives/personalRepresentatives.controller.ts +++ b/apps/services/auth/personal-representative/src/app/modules/personalRepresentatives/personalRepresentatives.controller.ts @@ -99,6 +99,7 @@ export class PersonalRepresentativesController { return personalRepresentative } + /** Removes a personal representative by its id */ @Delete(':id') @Documentation({ @@ -135,6 +136,7 @@ export class PersonalRepresentativesController { // Index personal representative delegations for the personal representative void this.delegationIndexService.indexRepresentativeDelegations( deletedPersonalRepresentative.nationalIdPersonalRepresentative, + user, ) } } @@ -203,6 +205,7 @@ export class PersonalRepresentativesController { // Index personal representative delegations for the personal representative void this.delegationIndexService.indexRepresentativeDelegations( createdPersonalRepresentative.nationalIdPersonalRepresentative, + user, ) } diff --git a/apps/services/auth/public-api/infra/auth-public-api.ts b/apps/services/auth/public-api/infra/auth-public-api.ts index 436ead29588a..3108257b6d75 100644 --- a/apps/services/auth/public-api/infra/auth-public-api.ts +++ b/apps/services/auth/public-api/infra/auth-public-api.ts @@ -1,5 +1,4 @@ -import { service, ServiceBuilder } from '../../../../../infra/src/dsl/dsl' -import { json } from '../../../../../infra/src/dsl/dsl' +import { json, service, ServiceBuilder } from '../../../../../infra/src/dsl/dsl' import { Base, Client, RskProcuring } from '../../../../../infra/src/dsl/xroad' const REDIS_NODE_CONFIG = { @@ -58,18 +57,26 @@ export const serviceSetup = (): ServiceBuilder<'services-auth-public-api'> => { COMPANY_REGISTRY_REDIS_NODES: REDIS_NODE_CONFIG, PASSKEY_CORE_ALLOWED_ORIGINS: json([ // Origin for iOS app. - 'island.is', + 'https://island.is', // Origin for Android test app 'android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0', // Origin for Android prod app 'android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU', ]), + SYSLUMENN_HOST: { + dev: 'https://api.syslumenn.is/staging', + staging: 'https://api.syslumenn.is/staging', + prod: 'https://api.syslumenn.is/api', + }, + SYSLUMENN_TIMEOUT: '3000', }) .secrets({ IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET', NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET', + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME', + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD', }) .xroad(Base, Client, RskProcuring) .ingress({ diff --git a/apps/services/auth/public-api/src/app/app.module.ts b/apps/services/auth/public-api/src/app/app.module.ts index 299a9219a419..a6863c79a866 100644 --- a/apps/services/auth/public-api/src/app/app.module.ts +++ b/apps/services/auth/public-api/src/app/app.module.ts @@ -2,11 +2,15 @@ import { Module } from '@nestjs/common' import { SequelizeModule } from '@nestjs/sequelize' import { - SequelizeConfigService, DelegationConfig, PasskeysCoreConfig, + SequelizeConfigService, } from '@island.is/auth-api-lib' import { AuthModule } from '@island.is/auth-nest-tools' +import { RskRelationshipsClientConfig } from '@island.is/clients-rsk-relationships' +import { NationalRegistryClientConfig } from '@island.is/clients/national-registry-v2' +import { CompanyRegistryConfig } from '@island.is/clients/rsk/company-registry' +import { SyslumennClientConfig } from '@island.is/clients/syslumenn' import { AuditModule } from '@island.is/nest/audit' import { ConfigModule, @@ -15,9 +19,6 @@ import { } from '@island.is/nest/config' import { FeatureFlagConfig } from '@island.is/nest/feature-flags' import { ProblemModule } from '@island.is/nest/problem' -import { NationalRegistryClientConfig } from '@island.is/clients/national-registry-v2' -import { CompanyRegistryConfig } from '@island.is/clients/rsk/company-registry' -import { RskRelationshipsClientConfig } from '@island.is/clients-rsk-relationships' import { environment } from '../environments' import { DelegationsModule } from './modules/delegations/delegations.module' @@ -44,6 +45,7 @@ import { PasskeysModule } from './modules/passkeys/passkeys.module' CompanyRegistryConfig, XRoadConfig, PasskeysCoreConfig, + SyslumennClientConfig, ], }), ], diff --git a/apps/services/auth/public-api/src/app/modules/delegations/actorDelegations.controller.spec.ts b/apps/services/auth/public-api/src/app/modules/delegations/actorDelegations.controller.spec.ts index c4183a2a61d7..b178739555d5 100644 --- a/apps/services/auth/public-api/src/app/modules/delegations/actorDelegations.controller.spec.ts +++ b/apps/services/auth/public-api/src/app/modules/delegations/actorDelegations.controller.spec.ts @@ -3,10 +3,9 @@ import times from 'lodash/times' import request from 'supertest' import { - ApiScope, - Client, ClientDelegationType, Delegation, + DelegationDelegationType, DelegationDTO, DelegationDTOMapper, DelegationProviderModel, @@ -153,6 +152,7 @@ describe('ActorDelegationsController', () => { let app: TestApp let server: request.SuperTest<request.Test> let delegationModel: typeof Delegation + let delegationDelegationTypeModel: typeof DelegationDelegationType let clientDelegationTypeModel: typeof ClientDelegationType let nationalRegistryApi: NationalRegistryClientService @@ -174,6 +174,9 @@ describe('ActorDelegationsController', () => { clientDelegationTypeModel = app.get<typeof ClientDelegationType>( getModelToken(ClientDelegationType), ) + delegationDelegationTypeModel = app.get<typeof DelegationDelegationType>( + getModelToken(DelegationDelegationType), + ) nationalRegistryApi = app.get(NationalRegistryClientService) }) @@ -293,20 +296,96 @@ describe('ActorDelegationsController', () => { ) }) - it('should return custom delegations when the delegationTypes filter has custom type', async () => { + it('should return custom delegations and general mandate when the delegationTypes filter has both types and delegation exists for both', async () => { // Arrange + const delegation = createDelegation({ + fromNationalId: nationalRegistryUser.nationalId, + toNationalId: user.nationalId, + scopes: [], + }) + + await delegationModel.create(delegation) + + await delegationDelegationTypeModel.create({ + delegationId: delegation.id, + delegationTypeId: AuthDelegationType.GeneralMandate, + }) + await createDelegationModels(delegationModel, [ mockDelegations.incomingWithOtherDomain, ]) + + // Act + const res = await server.get( + `${path}${query}&delegationTypes=${AuthDelegationType.Custom}&delegationTypes=${AuthDelegationType.GeneralMandate}`, + ) + + // Assert + expect(res.status).toEqual(200) + expect(res.body).toHaveLength(2) + expect( + res.body + .map((d: MergedDelegationDTO) => d.types) + .flat() + .sort(), + ).toEqual( + [AuthDelegationType.Custom, AuthDelegationType.GeneralMandate].sort(), + ) + }) + + it('should return a merged object with both Custom and GeneralMandate types', async () => { + // Arrange + const delegation = createDelegation({ + fromNationalId: + mockDelegations.incomingWithOtherDomain.fromNationalId, + toNationalId: user.nationalId, + domainName: null, + scopes: [], + }) + + await delegationModel.create(delegation) + + await delegationDelegationTypeModel.create({ + delegationId: delegation.id, + delegationTypeId: AuthDelegationType.GeneralMandate, + }) + + await createDelegationModels(delegationModel, [ + mockDelegations.incomingWithOtherDomain, + ]) + + // Act + const res = await server.get( + `${path}${query}&delegationTypes=${AuthDelegationType.Custom}&delegationTypes=${AuthDelegationType.GeneralMandate}`, + ) + + // Assert + expect(res.status).toEqual(200) + expect(res.body).toHaveLength(1) + expect( + res.body + .map((d: MergedDelegationDTO) => d.types) + .flat() + .sort(), + ).toEqual( + [AuthDelegationType.Custom, AuthDelegationType.GeneralMandate].sort(), + ) + }) + + it('should return only delegations related to the provided otherUser national id', async () => { + // Arrange + await createDelegationModels(delegationModel, [ + mockDelegations.incoming, + ]) const expectedModel = await findExpectedMergedDelegationModels( delegationModel, - mockDelegations.incomingWithOtherDomain.id, + mockDelegations.incoming.id, [Scopes[0].name], ) // Act const res = await server.get( - `${path}${query}&delegationTypes=${AuthDelegationType.Custom}`, + `${path}${query}&delegationTypes=${AuthDelegationType.Custom}&otherUser=${mockDelegations.incoming.fromNationalId}`, ) // Assert @@ -321,7 +400,7 @@ describe('ActorDelegationsController', () => { ) }) - it('should return only delegations related to the provided otherUser national id', async () => { + it('should return only delegations related to the provided otherUser national id without the general mandate since there is none', async () => { // Arrange await createDelegationModels(delegationModel, [ mockDelegations.incoming, @@ -334,7 +413,7 @@ describe('ActorDelegationsController', () => { // Act const res = await server.get( - `${path}${query}&delegationTypes=${AuthDelegationType.Custom}&otherUser=${mockDelegations.incoming.fromNationalId}`, + `${path}${query}&delegationTypes=${AuthDelegationType.Custom}&delegationTypes${AuthDelegationType.GeneralMandate}&otherUser=${mockDelegations.incoming.fromNationalId}`, ) // Assert diff --git a/apps/services/auth/public-api/test/setup.ts b/apps/services/auth/public-api/test/setup.ts index c56ac554a07d..5cd632add54c 100644 --- a/apps/services/auth/public-api/test/setup.ts +++ b/apps/services/auth/public-api/test/setup.ts @@ -72,6 +72,7 @@ export const delegationTypes = [ AuthDelegationType.LegalGuardian, AuthDelegationType.ProcurationHolder, AuthDelegationType.PersonalRepresentative, + AuthDelegationType.GeneralMandate, ] export const ScopeGroups: ScopeGroupSetupOptions[] = [ diff --git a/apps/services/contentful-entry-tagger/infra/contentful-entry-tagger-service.ts b/apps/services/contentful-entry-tagger/infra/contentful-entry-tagger-service.ts index 782eeb0a131b..77076b441347 100644 --- a/apps/services/contentful-entry-tagger/infra/contentful-entry-tagger-service.ts +++ b/apps/services/contentful-entry-tagger/infra/contentful-entry-tagger-service.ts @@ -20,15 +20,6 @@ export const serviceSetup = prod: 'contentful-entry-tagger-service.devland.is', }, paths: ['/'], - extraAnnotations: { - dev: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', - }, - staging: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', - }, - prod: { 'nginx.ingress.kubernetes.io/enable-global-auth': 'false' }, - }, }, }) .liveness('/liveness') diff --git a/apps/services/contentful-entry-tagger/src/app/app.repository.ts b/apps/services/contentful-entry-tagger/src/app/app.repository.ts index 91d2801df805..18b2e53de519 100644 --- a/apps/services/contentful-entry-tagger/src/app/app.repository.ts +++ b/apps/services/contentful-entry-tagger/src/app/app.repository.ts @@ -5,6 +5,7 @@ import { Entry, Link, Tag, + Team, } from 'contentful-management' import { ClientAPI } from 'contentful-management/dist/typings/create-contentful-api' @@ -36,11 +37,52 @@ export class AppRepository { async getUserSpaceRoles(userId: string) { const managementClient = this.getManagementClient() const space = await managementClient.getSpace(SPACE_ID) - const user = await space.getSpaceMember(userId) - const roles = await Promise.all( - user.roles.map((roleLink) => space.getRole(roleLink.sys.id)), - ) - return roles + try { + const user = await space.getSpaceMember(userId) + const roles = await Promise.all( + user.roles.map((roleLink) => space.getRole(roleLink.sys.id)), + ) + return roles + } catch (error) { + // In case the user isn't found due to not belonging to a space we assume he has no roles + if ((error as { name?: string })?.name === 'NotFound') { + return [] + } + throw error + } + } + + async getUserTeams(userId: string) { + const managementClient = this.getManagementClient() + const organizations = await managementClient.getOrganizations() + const organization = organizations.items[0] + + const teams = await organization.getTeams({ + limit: 1000, + }) + + const teamsThatUserBelongsTo: Team[] = [] + + for (const team of teams.items) { + const memberships = await organization.getTeamMemberships({ + teamId: team.sys.id, + query: { + limit: 1000, + }, + }) + const userBelongsToTeam = memberships.items.some((item) => { + const itemUserId = ( + item.sys as unknown as { user?: { sys?: { id?: string } } } + ).user?.sys?.id + return itemUserId === userId + }) + + if (userBelongsToTeam) { + teamsThatUserBelongsTo.push(team) + } + } + + return teamsThatUserBelongsTo } async tagEntry(entry: Asset | Entry, tags: string[]) { diff --git a/apps/services/contentful-entry-tagger/src/app/app.service.ts b/apps/services/contentful-entry-tagger/src/app/app.service.ts index 1c281189017d..f143065059bc 100644 --- a/apps/services/contentful-entry-tagger/src/app/app.service.ts +++ b/apps/services/contentful-entry-tagger/src/app/app.service.ts @@ -3,10 +3,13 @@ import { LOGGER_PROVIDER } from '@island.is/logging' import type { Logger } from '@island.is/logging' import { AppRepository } from './app.repository' import slugify from '@sindresorhus/slugify' -import type { Entry } from 'contentful-management' +import type { Entry, Role, Team } from 'contentful-management' const TAGGABLE_ENTRY_PREFIX = 'owner-' +const extractTagNamesFromGroup = (group: Role | Team) => + group.name.toLowerCase().startsWith(TAGGABLE_ENTRY_PREFIX) + @Injectable() export class AppService { constructor( @@ -15,16 +18,22 @@ export class AppService { ) {} async tagEntry(entry: Entry) { - const roles = await this.appRepository.getUserSpaceRoles( - entry.sys.createdBy?.sys.id as string, - ) + const userId = entry.sys.createdBy?.sys.id as string + const [roles, teams] = await Promise.all([ + this.appRepository.getUserSpaceRoles(userId), + this.appRepository.getUserTeams(userId), + ]) - const tags = roles - // All roles with the prefix need to have their entries tagged in order to manage user permissions - .filter((role) => - role.name.toLowerCase().startsWith(TAGGABLE_ENTRY_PREFIX), - ) - .map((role) => slugify(role.name)) + const rolesThatMatch = roles.filter(extractTagNamesFromGroup) + const teamsThatMatch = teams.filter(extractTagNamesFromGroup) + + let tags: string[] = [] + + if (rolesThatMatch.length > 0) { + tags = rolesThatMatch.map((role) => slugify(role.name)) + } else if (teamsThatMatch.length > 0) { + tags = teamsThatMatch.map((team) => slugify(team.name)) + } if (tags.length === 0) { return diff --git a/apps/services/endorsements/api/README.md b/apps/services/endorsements/api/README.md index 0471c016097b..ae3e50142b11 100644 --- a/apps/services/endorsements/api/README.md +++ b/apps/services/endorsements/api/README.md @@ -40,8 +40,14 @@ Sign into AWS ```bash aws sso login + ``` +make sure these are set if testing s3 locally +export AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID_EXAMPLE +export AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY_EXAMPLE +export AWS_SESSION_TOKEN=AWS_SESSION_TOKEN_EXAMPLE + Then run application using this command ```bash diff --git a/apps/services/endorsements/api/infra/endorsement-system-api.ts b/apps/services/endorsements/api/infra/endorsement-system-api.ts index c7d794069fe1..865c1d945b8f 100644 --- a/apps/services/endorsements/api/infra/endorsement-system-api.ts +++ b/apps/services/endorsements/api/infra/endorsement-system-api.ts @@ -34,6 +34,11 @@ export const serviceSetup = prod: 'https://innskra.island.is', }, IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/endorsement', + ENDORSEMENT_SYSTEM_EXPORTS_BUCKET_NAME: { + dev: 'island-is-dev-exports-endorsement-system', + staging: 'island-is-staging-exports-endorsement-system', + prod: 'island-is-prod-exports-endorsement-system', + }, }) .secrets({ IDENTITY_SERVER_CLIENT_SECRET: @@ -45,50 +50,3 @@ export const serviceSetup = .xroad(Base, Client, NationalRegistry, NationalRegistryB2C) .liveness('/liveness') .readiness('/liveness') - -const serviceName = 'endorsement-system-api' -const serviceCleanupWorkerName = `${serviceName}-cleanup-worker` -export const endorsementSystemCleanUpWorkerSetup = (): ServiceBuilder< - typeof serviceCleanupWorkerName -> => - service(serviceCleanupWorkerName) - .image('services-endorsements-api') - .namespace('endorsement-system') - .serviceAccount(serviceCleanupWorkerName) - .command('node') - .args('--no-experimental-fetch', 'main.js', '--job=cleanup') - .db({ name: 'services-endorsements-api' }) - .migrations() - .env({ - EMAIL_REGION: 'eu-west-1', - EMAIL_FROM_NAME: { - dev: 'devland.is', - staging: 'devland.is', - prod: 'island.is', - }, - EMAIL_FROM_ADDRESS: { - dev: 'development@island.is', - staging: 'development@island.is', - prod: 'noreply@island.is', - }, - IDENTITY_SERVER_ISSUER_URL: { - dev: 'https://identity-server.dev01.devland.is', - staging: 'https://identity-server.staging01.devland.is', - prod: 'https://innskra.island.is', - }, - IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/endorsement', - }) - .secrets({ - IDENTITY_SERVER_CLIENT_SECRET: - '/k8s/endorsement-system-api/IDS-shared-secret', - NATIONAL_REGISTRY_B2C_CLIENT_SECRET: - '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET', - }) - .xroad(Base, Client, NationalRegistry, NationalRegistryB2C) - .liveness('/liveness') - .readiness('/liveness') - .extraAttributes({ - dev: { schedule: '@hourly' }, - staging: { schedule: '@hourly' }, - prod: { schedule: '@hourly' }, - }) diff --git a/apps/services/endorsements/api/migrations/20240904000001-endorsement-count.js b/apps/services/endorsements/api/migrations/20240904000001-endorsement-count.js new file mode 100644 index 000000000000..98b67c2fdf1c --- /dev/null +++ b/apps/services/endorsements/api/migrations/20240904000001-endorsement-count.js @@ -0,0 +1,30 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + // Add the 'endorsement_count' column to 'endorsement_list' table + await queryInterface.addColumn('endorsement_list', 'endorsement_count', { + type: Sequelize.INTEGER, + allowNull: false, + defaultValue: 0, + }) + + // Add composite index on 'endorsement_count' and 'counter' + await queryInterface.addIndex( + 'endorsement_list', + ['endorsement_count', 'counter'], + { + name: 'idx_endorsement_count_counter', + }, + ) + }, + + down: async (queryInterface, Sequelize) => { + // Remove the composite index on 'endorsement_count' and 'counter' + await queryInterface.removeIndex( + 'endorsement_list', + 'idx_endorsement_count_counter', + ) + + // Remove the 'endorsement_count' column from 'endorsement_list' table + await queryInterface.removeColumn('endorsement_list', 'endorsement_count') + }, +} diff --git a/apps/services/endorsements/api/project.json b/apps/services/endorsements/api/project.json index d4de95faa3ab..22c4fe386761 100644 --- a/apps/services/endorsements/api/project.json +++ b/apps/services/endorsements/api/project.json @@ -50,13 +50,6 @@ "buildTarget": "services-endorsements-api:build" } }, - "cleanup": { - "executor": "@nx/js:node", - "options": { - "buildTarget": "services-endorsements-api:build", - "args": ["--job", "cleanup"] - } - }, "lint": { "executor": "@nx/eslint:lint" }, diff --git a/apps/services/endorsements/api/src/app/cleanup/worker.module.ts b/apps/services/endorsements/api/src/app/cleanup/worker.module.ts deleted file mode 100644 index 20a449a46a34..000000000000 --- a/apps/services/endorsements/api/src/app/cleanup/worker.module.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Module } from '@nestjs/common' -import { SequelizeModule } from '@nestjs/sequelize' -import { LoggingModule } from '@island.is/logging' -import { EndorsementSystemCleanupWorkerService } from './worker.service' - -import { Endorsement } from '../modules/endorsement/models/endorsement.model' -import { SequelizeConfigService } from '../sequelizeConfig.service' -import { - NationalRegistryV3ClientConfig, - NationalRegistryV3ClientModule, -} from '@island.is/clients/national-registry-v3' -import { ConfigModule } from '@nestjs/config' -import { IdsClientConfig, XRoadConfig } from '@island.is/nest/config' - -@Module({ - imports: [ - LoggingModule, - SequelizeModule.forRootAsync({ - useClass: SequelizeConfigService, - }), - SequelizeModule.forFeature([Endorsement]), - NationalRegistryV3ClientModule, - ConfigModule.forRoot({ - isGlobal: true, - load: [NationalRegistryV3ClientConfig, IdsClientConfig, XRoadConfig], - }), - ], - providers: [EndorsementSystemCleanupWorkerService], -}) -export class EndorsementSystemCleanupWorkerModule {} diff --git a/apps/services/endorsements/api/src/app/cleanup/worker.service.ts b/apps/services/endorsements/api/src/app/cleanup/worker.service.ts deleted file mode 100644 index 7b8bec1b6b2d..000000000000 --- a/apps/services/endorsements/api/src/app/cleanup/worker.service.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { Inject, Injectable } from '@nestjs/common' -import { LOGGER_PROVIDER } from '@island.is/logging' -import type { Logger } from '@island.is/logging' -import { InjectModel } from '@nestjs/sequelize' -import { Endorsement } from '../modules/endorsement/models/endorsement.model' -import { Op } from 'sequelize' -import { NationalRegistryV3ClientService } from '@island.is/clients/national-registry-v3' - -@Injectable() -export class EndorsementSystemCleanupWorkerService { - constructor( - @Inject(LOGGER_PROVIDER) - private readonly logger: Logger, - @InjectModel(Endorsement) - private readonly endorsementModel: typeof Endorsement, - private readonly nationalRegistryApiV3: NationalRegistryV3ClientService, - ) {} - - public async run() { - await this.fixLocality() - } - - async fixLocality() { - this.logger.info('Cleanup worker starting...') - // Find all rows with COUNTRY_CODE as locality value - const rows = await this.endorsementModel.findAll({ - where: { - created: { - //filtering rows created after May 6th this year - [Op.gt]: new Date(new Date().getFullYear(), 4, 6), - }, - meta: { - locality: { - [Op.regexp]: '^[A-Z]{2}$', - }, - }, - }, - }) - this.logger.info(`Found ${rows.length} rows with invalid locality`) - // Loop through rows and fix the locality value - for (const row of rows) { - this.logger.info(`Proccessing row id:${row.id}`) - try { - const person = await this.nationalRegistryApiV3.getAllDataIndividual( - row.endorser, - ) - if (person) { - const oldLocality = row.meta.locality - const newLocality = person?.heimilisfang?.sveitarfelag || '' - const newMeta = { - ...row.meta, - locality: newLocality, - } - try { - await this.endorsementModel.update( - { meta: newMeta }, - { where: { id: row.id } }, - ) - this.logger.info( - `Fixed locality for row id:${row.id} from ${oldLocality} to ${newLocality}`, - ) - } catch (error) { - this.logger.error( - `Error fixing locality for row id:${row.id} from ${oldLocality} to ${newLocality}`, - ) - } - } else { - this.logger.error( - `Person not found in national registry for row id:${row.id}`, - ) - } - } catch (error) { - this.logger.error( - `Error fixing locality for row id:${row.id} locality ${row.meta.locality}`, - ) - } - } - } -} diff --git a/apps/services/endorsements/api/src/app/modules/endorsement/endorsement.module.ts b/apps/services/endorsements/api/src/app/modules/endorsement/endorsement.module.ts index 0f4e834ebac8..cbabb771e3e1 100644 --- a/apps/services/endorsements/api/src/app/modules/endorsement/endorsement.module.ts +++ b/apps/services/endorsements/api/src/app/modules/endorsement/endorsement.module.ts @@ -7,12 +7,14 @@ import { EndorsementList } from '../endorsementList/endorsementList.model' import { EndorsementListService } from '../endorsementList/endorsementList.service' import { EmailModule } from '@island.is/email-service' import { NationalRegistryV3ClientModule } from '@island.is/clients/national-registry-v3' +import { AwsModule } from '@island.is/nest/aws' @Module({ imports: [ NationalRegistryV3ClientModule, SequelizeModule.forFeature([Endorsement, EndorsementList]), EmailModule, + AwsModule, ], controllers: [EndorsementController], providers: [EndorsementService, EndorsementListService], diff --git a/apps/services/endorsements/api/src/app/modules/endorsement/endorsement.service.ts b/apps/services/endorsements/api/src/app/modules/endorsement/endorsement.service.ts index 4292d78f5e94..2b494fe12b81 100644 --- a/apps/services/endorsements/api/src/app/modules/endorsement/endorsement.service.ts +++ b/apps/services/endorsements/api/src/app/modules/endorsement/endorsement.service.ts @@ -14,6 +14,7 @@ import { EndorsementTag } from '../endorsementList/constants' import { paginate } from '@island.is/nest/pagination' import { ENDORSEMENT_SYSTEM_GENERAL_PETITION_TAGS } from '../../../environments/environment' import { NationalRegistryV3ClientService } from '@island.is/clients/national-registry-v3' +import { AwsService } from '@island.is/nest/aws' interface FindEndorsementInput { listId: string @@ -54,8 +55,39 @@ export class EndorsementService { @Inject(LOGGER_PROVIDER) private logger: Logger, private readonly nationalRegistryApiV3: NationalRegistryV3ClientService, + private readonly awsService: AwsService, ) {} + async updateEndorsementCountOnList(listId: string): Promise<void> { + try { + const count = await this.endorsementModel.count({ + where: { endorsementListId: listId }, + }) + const [affectedRows, updatedList] = + await this.endorsementListModel.update( + { endorsementCount: count }, + { + where: { id: listId }, + returning: true, + }, + ) + if (affectedRows > 0 && updatedList[0].endorsementCount === count) { + this.logger.info( + `Successfully updated endorsement count for list "${listId}" to ${count}`, + ) + } else { + this.logger.error( + `Failed to update endorsement count for list "${listId}". The count was not updated correctly.`, + ) + } + } catch (error) { + this.logger.error( + `Error updating endorsement count for list "${listId}": ${error.message}`, + ) + throw error + } + } + async findEndorsements({ listId }: FindEndorsementsInput, query: any) { this.logger.info(`Finding endorsements by list id "${listId}"`) @@ -109,7 +141,6 @@ export class EndorsementService { return { hasEndorsed: true } } - // FIXME: Find a way to combine with create bulk endorsements async createEndorsementOnList({ endorsementList, nationalId, @@ -134,20 +165,20 @@ export class EndorsementService { }, } - return this.endorsementModel.create(endorsement).catch((error) => { - // map meaningful sequelize errors to custom errors, else return error - switch (error.constructor) { - case UniqueConstraintError: { - this.logger.warn('Endorsement already exists in list') - throw new MethodNotAllowedException([ - 'Endorsement already exists in list', - ]) - } - default: { - throw error - } + try { + const createdEndorsement = await this.endorsementModel.create(endorsement) + await this.updateEndorsementCountOnList(endorsementList.id) + return createdEndorsement + } catch (error) { + if (error instanceof UniqueConstraintError) { + this.logger.warn('Endorsement already exists in list') + throw new MethodNotAllowedException([ + 'Endorsement already exists in list', + ]) + } else { + throw error } - }) + } } async deleteFromListByNationalId({ @@ -180,5 +211,6 @@ export class EndorsementService { ) throw new NotFoundException(["This endorsement doesn't exist"]) } + await this.updateEndorsementCountOnList(endorsementList.id) } } diff --git a/apps/services/endorsements/api/src/app/modules/endorsementList/dto/endorsementList.dto.ts b/apps/services/endorsements/api/src/app/modules/endorsementList/dto/endorsementList.dto.ts index d48a18638142..62b11bce6178 100644 --- a/apps/services/endorsements/api/src/app/modules/endorsementList/dto/endorsementList.dto.ts +++ b/apps/services/endorsements/api/src/app/modules/endorsementList/dto/endorsementList.dto.ts @@ -40,17 +40,20 @@ export class EndorsementListDto { @IsObject() meta = {} - @ApiProperty({ type: Date }) + @ApiProperty({ type: Date, default: new Date() }) // default today @Type(() => Date) @IsDate() - closedDate!: Date + openedDate!: Date - @ApiProperty({ type: Date }) + @ApiProperty({ + type: Date, + default: new Date(new Date().setMonth(new Date().getMonth() + 1)), + }) // default month from today @Type(() => Date) @IsDate() - openedDate!: Date + closedDate!: Date - @ApiProperty({ type: Boolean }) + @ApiProperty({ type: Boolean, default: false }) @IsBoolean() adminLock!: boolean } diff --git a/apps/services/endorsements/api/src/app/modules/endorsementList/dto/endorsementListExportUrl.response.dto.ts b/apps/services/endorsements/api/src/app/modules/endorsementList/dto/endorsementListExportUrl.response.dto.ts new file mode 100644 index 000000000000..399b4d8eb59d --- /dev/null +++ b/apps/services/endorsements/api/src/app/modules/endorsementList/dto/endorsementListExportUrl.response.dto.ts @@ -0,0 +1,9 @@ +import { ApiProperty } from '@nestjs/swagger' + +export class EndorsementListExportUrlResponse { + @ApiProperty({ + description: 'The presigned URL for the exported file', + example: 'https://example.com/presigned-url-to-file', + }) + url!: string +} diff --git a/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.controller.ts b/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.controller.ts index 7e499c273e5f..67d9c61be6e5 100644 --- a/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.controller.ts +++ b/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.controller.ts @@ -1,4 +1,5 @@ import { + BadRequestException, Body, Controller, Get, @@ -7,6 +8,7 @@ import { Post, Put, Query, + Res, UseGuards, UseInterceptors, } from '@nestjs/common' @@ -47,6 +49,7 @@ import { EndorsementListInterceptor } from './interceptors/endorsementList.inter import { EndorsementListsInterceptor } from './interceptors/endorsementLists.interceptor' import { EmailDto } from './dto/email.dto' import { SendPdfEmailResponse } from './dto/sendPdfEmail.response' +import { EndorsementListExportUrlResponse } from './dto/endorsementListExportUrl.response.dto' export class FindTagPaginationComboDto extends IntersectionType( FindEndorsementListByTagsDto, @@ -358,4 +361,40 @@ export class EndorsementListController { query.emailAddress, ) } + + @ApiOperation({ + summary: 'Export an endorsement list as PDF or CSV', + }) + @Scopes(EndorsementsScope.main, AdminPortalScope.petitionsAdmin) + @HasAccessGroup(AccessGroup.Owner) + @ApiParam({ name: 'listId', type: String }) + @ApiParam({ name: 'fileType', type: String, enum: ['pdf', 'csv'] }) + @ApiOkResponse({ + description: 'Presigned URL for the exported file', + type: EndorsementListExportUrlResponse, + }) + @Get(':listId/export/:fileType') + @Audit() + async exportEndorsementList( + @Param( + 'listId', + new ParseUUIDPipe({ version: '4' }), + EndorsementListByIdPipe, + ) + endorsementList: EndorsementList, + @Param('fileType') fileType: 'pdf' | 'csv', + @CurrentUser() user: User, + ): Promise<EndorsementListExportUrlResponse> { + if (!['pdf', 'csv'].includes(fileType)) { + throw new BadRequestException( + 'Invalid file type. Allowed values are "pdf" or "csv".', + ) + } + + return await this.endorsementListService.exportList( + endorsementList.id, + user, + fileType, + ) + } } diff --git a/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.model.ts b/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.model.ts index b67a6c26c42d..82b4c591cea8 100644 --- a/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.model.ts +++ b/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.model.ts @@ -118,4 +118,15 @@ export class EndorsementList extends Model { }) @UpdatedAt readonly modified!: Date + + @ApiProperty({ + type: Number, + description: 'The number of endorsements in the list', + }) + @Column({ + type: DataType.INTEGER, + allowNull: false, + defaultValue: 0, + }) + endorsementCount!: number } diff --git a/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.module.ts b/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.module.ts index 339c94fff8b3..12c9cb4ad565 100644 --- a/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.module.ts +++ b/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.module.ts @@ -8,8 +8,11 @@ import { Endorsement } from '../endorsement/models/endorsement.model' import { EmailModule } from '@island.is/email-service' import { NationalRegistryV3ClientModule } from '@island.is/clients/national-registry-v3' +import { AwsModule } from '@island.is/nest/aws' + @Module({ imports: [ + AwsModule, NationalRegistryV3ClientModule, SequelizeModule.forFeature([EndorsementList, Endorsement]), EmailModule, diff --git a/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.service.ts b/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.service.ts index d5696e1155cb..dd48912c4baf 100644 --- a/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.service.ts +++ b/apps/services/endorsements/api/src/app/modules/endorsementList/endorsementList.service.ts @@ -5,7 +5,7 @@ import { BadRequestException, } from '@nestjs/common' import { InjectModel } from '@nestjs/sequelize' -import { Op, Sequelize } from 'sequelize' +import { Op } from 'sequelize' import type { Logger } from '@island.is/logging' import { LOGGER_PROVIDER } from '@island.is/logging' import { EndorsementList } from './endorsementList.model' @@ -24,6 +24,12 @@ import PDFDocument from 'pdfkit' import getStream from 'get-stream' import { NationalRegistryV3ClientService } from '@island.is/clients/national-registry-v3' +import csvStringify from 'csv-stringify/lib/sync' + +import { AwsService } from '@island.is/nest/aws' +import { EndorsementListExportUrlResponse } from './dto/endorsementListExportUrl.response.dto' +import * as path from 'path' + interface CreateInput extends EndorsementListDto { owner: string } @@ -40,6 +46,7 @@ export class EndorsementListService { @Inject(EmailService) private emailService: EmailService, private readonly nationalRegistryApiV3: NationalRegistryV3ClientService, + private readonly awsService: AwsService, ) {} hasAdminScope(user: User): boolean { @@ -67,7 +74,6 @@ export class EndorsementListService { } } - // generic reusable query with pagination defaults async findListsGenericQuery(query: any, where: any = {}) { this.logger.info(`Finding endorsement lists`) return await paginate({ @@ -76,28 +82,8 @@ export class EndorsementListService { after: query.after, before: query.before, primaryKeyField: 'counter', - orderOption: [ - ['endorsementCounter', 'DESC'], - ['counter', 'DESC'], - ], + orderOption: [['endorsementCount', 'DESC']], where: where, - attributes: { - include: [ - [ - Sequelize.fn('COUNT', Sequelize.col('endorsements.id')), - 'endorsementCounter', - ], - ], - }, - include: [ - { - model: Endorsement, - required: false, // Required false for left outer join so that counts come for 0 as well - duplicating: false, - attributes: [], - }, - ], - group: ['EndorsementList.id'], }) } @@ -120,8 +106,6 @@ export class EndorsementListService { } async findSingleList(listId: string, user?: User, check?: boolean) { - // Check variable needed since finAll function in Endorsement controller uses this function twice - // on the second call it passes nationalID of user but does not go throught the get list pipe const isAdmin = user && check ? this.hasAdminScope(user) : false this.logger.info(`Finding single endorsement lists by id "${listId}"`) const result = await this.endorsementListModel.findOne({ @@ -252,7 +236,6 @@ export class EndorsementListService { this.logger.info(`Creating endorsement list: ${list.title}`) const endorsementList = await this.endorsementListModel.create({ ...list }) - console.log('process.env.NODE_ENV', process.env.NODE_ENV) if (process.env.NODE_ENV === 'production') { await this.emailCreated(endorsementList) } @@ -260,7 +243,6 @@ export class EndorsementListService { return endorsementList } - // generic get open lists async findOpenListsTaggedGeneralPetition(query: any) { const dateOb = new Date() try { @@ -298,9 +280,6 @@ export class EndorsementListService { } async getOwnerInfo(listId: string, owner?: string) { - // Is used by both unauthenticated users, authenticated users and admin - // Admin needs to access locked lists and can not use the EndorsementListById pipe - // Since the endpoint is not authenticated this.logger.info(`Finding single endorsement lists by id "${listId}"`) if (!owner) { const endorsementList = await this.endorsementListModel.findOne({ @@ -330,73 +309,203 @@ export class EndorsementListService { } } - async createDocumentBuffer(endorsementList: any, ownerName: string) { - // build pdf - const doc = new PDFDocument() + async createDocumentBuffer( + endorsementList: any, + ownerName: string, + ): Promise<Buffer> { + const doc = new PDFDocument({ margin: 60 }) const locale = 'is-IS' - const big = 16 - const regular = 8 - const fontRegular = 'Helvetica' - const fontBold = 'Helvetica-Bold' + const buffers: Buffer[] = [] + doc.on('data', buffers.push.bind(buffers)) + doc.on('end', () => + this.logger.info( + 'PDF buffer created successfully for list id ' + endorsementList.id, + { listId: endorsementList.id }, + ), + ) + const regularFontPath = path.join( + process.cwd(), + 'apps/services/endorsements/api/src/assets/ibm-plex-sans-v7-latin-regular.ttf', + ) + const boldFontPath = path.join( + process.cwd(), + 'apps/services/endorsements/api/src/assets/ibm-plex-sans-v7-latin-600.ttf', + ) + const headerImagePath = path.join( + process.cwd(), + 'apps/services/endorsements/api/src/assets/thjodskra.png', + ) + const footerImagePath = path.join( + process.cwd(), + 'apps/services/endorsements/api/src/assets/island.png', + ) + + doc.registerFont('Regular', regularFontPath) + doc.registerFont('Bold', boldFontPath) + + // Add header image + const headerImageHeight = 40 + doc.image(headerImagePath, 60, 40, { width: 120 }) + + let currentYPosition = 40 + headerImageHeight + 20 + + // Title and petition details doc - .fontSize(big) - .text('Upplýsingar um meðmælendalista') - .moveDown() - - .fontSize(regular) - .font(fontBold) - .text('Heiti meðmælendalista: ') - .font(fontRegular) - .text(endorsementList.title) - .moveDown() - - .font(fontBold) - .text('Um meðmælendalista: ') - .font(fontRegular) - .text(endorsementList.description) - .moveDown() - - .font(fontBold) - .text('Ábyrgðarmaður: ') - .font(fontRegular) - .text(ownerName) - .moveDown() - - .font(fontBold) - .text('Gildistímabil lista: ') - .font(fontRegular) + .font('Bold') + .fontSize(24) + .text('Upplýsingar um undirskriftalista', 60, currentYPosition, { + align: 'left', + }) + .fontSize(12) .text( - endorsementList.openedDate.toLocaleDateString(locale) + - ' - ' + - endorsementList.closedDate.toLocaleDateString(locale), + 'Þetta skjal var framkallað sjálfvirkt þann: ' + + new Date().toLocaleDateString(locale) + + ' klukkan ' + + new Date().toLocaleTimeString(locale), ) - .moveDown() - - .font(fontBold) - .text('Fjöldi skráðir: ') - .font(fontRegular) - .text(endorsementList.endorsements.length) - .moveDown(2) - - if (endorsementList.endorsements.length) { - doc.fontSize(big).text('Yfirlit meðmæla').fontSize(regular).moveDown() - for (const val of endorsementList.endorsements) { - doc.text( - val.created.toLocaleDateString(locale) + - ' ' + - (val.meta.fullName ? val.meta.fullName : 'Nafn ótilgreint'), - ) - } - } + currentYPosition = doc.y + 20 // Adjust vertical space + doc - .moveDown() + .font('Bold') + .fontSize(12) + .text('Heiti undirskriftalista: ', 60, currentYPosition, { + align: 'left', + }) + currentYPosition = doc.y + 5 + doc + .font('Regular') + .fontSize(12) + .text(endorsementList.title, 60, currentYPosition, { + align: 'left', + }) + + currentYPosition = doc.y + 15 + + doc + .font('Bold') + .fontSize(12) + .text('Um undirskriftalista: ', 60, currentYPosition, { align: 'left' }) + currentYPosition = doc.y + 5 + doc + .font('Regular') + .fontSize(12) + .text(endorsementList.description, 60, currentYPosition, { + align: 'left', + }) + currentYPosition = doc.y + 15 - .fontSize(regular) + doc + .font('Bold') + .fontSize(12) + .text('Opin til: ', 60, currentYPosition, { align: 'left' }) + currentYPosition = doc.y + 5 + doc + .font('Regular') + .fontSize(12) .text( - 'Þetta skjal var framkallað sjálfvirkt þann: ' + - new Date().toLocaleDateString(locale), + endorsementList.closedDate.toLocaleDateString(locale), + 60, + currentYPosition, + { align: 'left' }, ) + currentYPosition = doc.y + 15 + + doc + .font('Bold') + .fontSize(12) + .text('Fjöldi undirskrifta: ', 60, currentYPosition, { align: 'left' }) + + currentYPosition = doc.y + 5 + doc + .font('Regular') + .fontSize(12) + .text(endorsementList.endorsementCount.toString(), 60, currentYPosition, { + align: 'left', + }) + currentYPosition = doc.y + 15 + + doc + .font('Bold') + .fontSize(12) + .text('Ábyrgðarmaður: ', 60, currentYPosition, { align: 'left' }) + currentYPosition = doc.y + 5 + doc + .font('Regular') + .fontSize(12) + .text(ownerName, 60, currentYPosition, { align: 'left' }) + currentYPosition = doc.y + 15 + + doc + .font('Bold') + .fontSize(12) + .text('Kennitala ábyrgðarmanns: ', 60, currentYPosition, { + align: 'left', + }) + currentYPosition = doc.y + 5 + doc + .font('Regular') + .fontSize(12) + .text(endorsementList.owner, 60, currentYPosition, { align: 'left' }) + currentYPosition = doc.y + 30 + + const dateX = 60 // Column X position for 'Dags. skráð' + const nameX = 160 // Column X position for 'Nafn' + const localityX = 360 // Column X position for 'Sveitarfélag' + + // Table headers drawing function + const drawTableHeaders = () => { + doc.font('Bold').fontSize(12) + doc.text('Dags. skráð', dateX, currentYPosition, { + width: 100, + align: 'left', + }) + doc.text('Nafn', nameX, currentYPosition, { width: 200, align: 'left' }) + doc.text('Sveitarfélag', localityX, currentYPosition, { + width: 200, + align: 'left', + }) + currentYPosition = doc.y + 5 // Adjust space between header and rows + } + + // Endorsements List (Rows) + drawTableHeaders() + endorsementList.endorsements.forEach((endorsement: Endorsement) => { + if (doc.y + 20 > doc.page.height - 100) { + // Add a new page if content is about to overflow + doc.addPage() + currentYPosition = 60 // Reset Y-position for the new page + drawTableHeaders() // Draw table headers at the top of the new page + } + + // Draw the endorsement data + doc.font('Regular').fontSize(10) + doc.text( + endorsement.created.toLocaleDateString(locale), + dateX, + currentYPosition, + { width: 100, align: 'left' }, + ) + doc.text( + endorsement.meta.fullName || 'Nafn ótilgreint', + nameX, + currentYPosition, + { width: 200, align: 'left' }, + ) + doc.text( + endorsement.meta.locality || 'Sveitafélag ótilgreint', + localityX, + currentYPosition, + { width: 200, align: 'left' }, + ) + + currentYPosition = doc.y + 5 // Move down slightly for the next row + }) + + // Add footer image at the bottom of the page + const footerY = doc.page.height - 80 + doc.image(footerImagePath, 60, footerY, { width: 120 }) + doc.end() return await getStream.buffer(doc) } @@ -665,4 +774,118 @@ export class EndorsementListService { return { success: false } } } + async exportList( + listId: string, + user: User, + fileType: 'pdf' | 'csv', + ): Promise<EndorsementListExportUrlResponse> { + try { + this.logger.info(`Exporting list ${listId} as ${fileType}`, { listId }) + + // Validate file type + if (!['pdf', 'csv'].includes(fileType)) { + throw new BadRequestException( + 'Invalid file type. Allowed values are "pdf" or "csv".', + ) + } + + // Fetch endorsement list + const endorsementList = await this.fetchEndorsementList(listId, user) + if (!endorsementList) { + throw new NotFoundException( + `Endorsement list ${listId} not found or access denied.`, + ) + } + + // Create file buffer + const fileBuffer = + fileType === 'pdf' + ? await this.createPdfBuffer(endorsementList) + : this.createCsvBuffer(endorsementList) + + // Upload to S3 + const filename = `undirskriftalisti-${listId}-${new Date() + .toISOString() + .replace(/[:.]/g, '-')}.${fileType}` + await this.uploadFileToS3(fileBuffer, filename, fileType) + + // Generate presigned URL with 60 minutes expiration + const url = await this.awsService.getPresignedUrl({ + bucket: environment.exportsBucketName, + key: filename, + }) + return { url } + } catch (error) { + this.logger.error(`Failed to export list ${listId}`, { error }) + throw error + } + } + + private async fetchEndorsementList( + listId: string, + user: User, + ): Promise<EndorsementList | null> { + // Only admin or list owner can access the list + const isAdmin = this.hasAdminScope(user) + return this.endorsementListModel.findOne({ + where: { + id: listId, + ...(isAdmin ? {} : { owner: user.nationalId }), + }, + include: [{ model: Endorsement }], + }) + } + + private createCsvBuffer(endorsementList: EndorsementList): Buffer { + const records = (endorsementList.endorsements || []).map((endorsement) => ({ + Dagsetning: endorsement.created.toLocaleDateString('is-IS'), + Nafn: endorsement.meta?.fullName || 'Nafn ótilgreint', + Sveitafélag: endorsement.meta?.locality || 'Sveitafélag ótilgreint', + })) + const csvString = csvStringify(records, { header: true }) + return Buffer.from(csvString, 'utf-8') + } + + private async createPdfBuffer( + endorsementList: EndorsementList, + ): Promise<Buffer> { + try { + const ownerName = await this.getOwnerInfo( + endorsementList.id, + endorsementList.owner, + ) + const pdfBuffer = await this.createDocumentBuffer( + endorsementList, + ownerName, + ) + return pdfBuffer + } catch (error) { + this.logger.error( + `Failed to create PDF buffer for endorsement list ${endorsementList.id}`, + { error }, + ) + throw new Error( + `Error generating PDF for endorsement list ${endorsementList.id}`, + ) + } + } + + private async uploadFileToS3( + fileBuffer: Buffer, + filename: string, + fileType: 'pdf' | 'csv', + ): Promise<void> { + try { + await this.awsService.uploadFile( + fileBuffer, + { bucket: environment.exportsBucketName, key: filename }, + { + ContentType: fileType === 'pdf' ? 'application/pdf' : 'text/csv', + }, + ) + } catch (error) { + this.logger.error(`Failed to upload file to S3`, { error, filename }) + throw new Error('Error uploading file to S3') + } + } } diff --git a/apps/services/endorsements/api/src/assets/ibm-plex-sans-v7-latin-600.ttf b/apps/services/endorsements/api/src/assets/ibm-plex-sans-v7-latin-600.ttf new file mode 100644 index 0000000000000000000000000000000000000000..30ad2bdfad214c5a47ccade4932e37b25a9f7bff GIT binary patch literal 51532 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 literal 0 HcmV?d00001 diff --git a/apps/services/endorsements/api/src/assets/ibm-plex-sans-v7-latin-regular.ttf b/apps/services/endorsements/api/src/assets/ibm-plex-sans-v7-latin-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b83a1806fdbecc4748b9c9f12dc65645a3f10745 GIT binary patch literal 51204 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 literal 0 HcmV?d00001 diff --git a/apps/services/endorsements/api/src/assets/island.png b/apps/services/endorsements/api/src/assets/island.png new file mode 100644 index 0000000000000000000000000000000000000000..c67725fe2eb90ab79e7f50007e154465e310801f GIT binary patch literal 6368 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 Y5JV|*XAWuiKNmQfP#x7Oh;``y0Ee6nPyhe` literal 0 HcmV?d00001 diff --git a/apps/services/endorsements/api/src/assets/thjodskra.png b/apps/services/endorsements/api/src/assets/thjodskra.png new file mode 100644 index 0000000000000000000000000000000000000000..96058703b270a392060ac3ccff445232c7434785 GIT binary patch literal 7465 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 literal 0 HcmV?d00001 diff --git a/apps/services/endorsements/api/src/cleanup.ts b/apps/services/endorsements/api/src/cleanup.ts deleted file mode 100644 index 268c8579d3a5..000000000000 --- a/apps/services/endorsements/api/src/cleanup.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { NestFactory } from '@nestjs/core' -import { EndorsementSystemCleanupWorkerModule } from './app/cleanup/worker.module' -import { EndorsementSystemCleanupWorkerService } from './app/cleanup/worker.service' - -export const cleanup = async () => { - const app = await NestFactory.createApplicationContext( - EndorsementSystemCleanupWorkerModule, - ) - app.enableShutdownHooks() - await app.get(EndorsementSystemCleanupWorkerService).run() - await app.close() - process.exit(0) -} diff --git a/apps/services/endorsements/api/src/environments/environment.ts b/apps/services/endorsements/api/src/environments/environment.ts index 0dcd345752fc..3633c57a21c4 100644 --- a/apps/services/endorsements/api/src/environments/environment.ts +++ b/apps/services/endorsements/api/src/environments/environment.ts @@ -20,6 +20,7 @@ const devConfig = { sender: 'devland.is', address: 'development@island.is', }, + exportsBucketName: process.env.ENDORSEMENT_SYSTEM_EXPORTS_BUCKET_NAME, } const prodConfig = { @@ -38,6 +39,7 @@ const prodConfig = { sender: process.env.EMAIL_FROM_NAME ?? '', address: process.env.EMAIL_FROM_ADDRESS ?? '', }, + exportsBucketName: process.env.ENDORSEMENT_SYSTEM_EXPORTS_BUCKET_NAME, } export default isProductionEnvironment ? prodConfig : devConfig diff --git a/apps/services/endorsements/api/src/main.ts b/apps/services/endorsements/api/src/main.ts index 7f122924ba2f..00ef5c0b7a68 100644 --- a/apps/services/endorsements/api/src/main.ts +++ b/apps/services/endorsements/api/src/main.ts @@ -5,9 +5,7 @@ import { openApi } from './openApi' const job = processJob() -if (job === 'cleanup') { - import('./cleanup').then((app) => app.cleanup()) -} else if (require.main === module || !environment.production) { +if (require.main === module || !environment.production) { bootstrap({ appModule: AppModule, name: 'services-endorsements-api', diff --git a/apps/services/form-system/src/app/modules/applicants/models/applicant.model.ts b/apps/services/form-system/src/app/modules/applicants/models/applicant.model.ts index 466b86e92fc5..6e84e6320408 100644 --- a/apps/services/form-system/src/app/modules/applicants/models/applicant.model.ts +++ b/apps/services/form-system/src/app/modules/applicants/models/applicant.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { CreationOptional } from 'sequelize' import { Column, @@ -20,22 +19,18 @@ export class Applicant extends Model<Applicant> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ type: DataType.DATE, allowNull: true, }) - @ApiPropertyOptional() lastLogin?: Date @Column({ @@ -43,7 +38,6 @@ export class Applicant extends Model<Applicant> { allowNull: false, defaultValue: '', }) - @ApiProperty() name!: string @Column({ @@ -51,35 +45,30 @@ export class Applicant extends Model<Applicant> { allowNull: false, defaultValue: '', }) - @ApiProperty() nationalId!: string @Column({ type: DataType.STRING, allowNull: true, }) - @ApiProperty() email!: string @Column({ type: DataType.STRING, allowNull: true, }) - @ApiProperty() phoneNumber!: string @Column({ type: DataType.STRING, allowNull: true, }) - @ApiProperty() address!: string @Column({ type: DataType.STRING, allowNull: true, }) - @ApiProperty() municipality!: string @Column({ @@ -88,7 +77,6 @@ export class Applicant extends Model<Applicant> { values: Object.values(ApplicantTypes), defaultValue: ApplicantTypes.INDIVIDUAL, }) - @ApiProperty({ enum: ApplicantTypes }) applicantType!: string @ForeignKey(() => Application) diff --git a/apps/services/form-system/src/app/modules/applicants/models/applicantTypeNameSuggestion.model.ts b/apps/services/form-system/src/app/modules/applicants/models/applicantTypeNameSuggestion.model.ts index 99f381bc980b..870218b3bc04 100644 --- a/apps/services/form-system/src/app/modules/applicants/models/applicantTypeNameSuggestion.model.ts +++ b/apps/services/form-system/src/app/modules/applicants/models/applicantTypeNameSuggestion.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty } from '@nestjs/swagger' import { Column, CreatedAt, @@ -21,15 +20,12 @@ export class ApplicantTypeNameSuggestion extends Model<ApplicantTypeNameSuggesti primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -37,7 +33,6 @@ export class ApplicantTypeNameSuggestion extends Model<ApplicantTypeNameSuggesti allowNull: false, defaultValue: () => new LanguageType().toString(), }) - @ApiProperty({ type: LanguageType }) nameSuggestion!: LanguageType @Column({ @@ -46,7 +41,6 @@ export class ApplicantTypeNameSuggestion extends Model<ApplicantTypeNameSuggesti values: Object.values(ApplicantTypes), defaultValue: ApplicantTypes.INDIVIDUAL, }) - @ApiProperty({ enum: ApplicantTypes }) applicantType!: string @ForeignKey(() => Organization) diff --git a/apps/services/form-system/src/app/modules/applicants/models/formApplicant.model.ts b/apps/services/form-system/src/app/modules/applicants/models/formApplicant.model.ts index c327dee0aa17..735f752c0247 100644 --- a/apps/services/form-system/src/app/modules/applicants/models/formApplicant.model.ts +++ b/apps/services/form-system/src/app/modules/applicants/models/formApplicant.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty } from '@nestjs/swagger' import { Column, CreatedAt, @@ -21,15 +20,12 @@ export class FormApplicant extends Model<FormApplicant> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -38,7 +34,6 @@ export class FormApplicant extends Model<FormApplicant> { values: Object.values(ApplicantTypes), defaultValue: 'individual', }) - @ApiProperty({ enum: ApplicantTypes }) applicantType!: string @Column({ @@ -46,7 +41,6 @@ export class FormApplicant extends Model<FormApplicant> { allowNull: false, defaultValue: () => new LanguageType().toString(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @ForeignKey(() => Form) diff --git a/apps/services/form-system/src/app/modules/applications/models/application.mapper.ts b/apps/services/form-system/src/app/modules/applications/models/application.mapper.ts index 570bfd459db3..273cd3f649fe 100644 --- a/apps/services/form-system/src/app/modules/applications/models/application.mapper.ts +++ b/apps/services/form-system/src/app/modules/applications/models/application.mapper.ts @@ -2,11 +2,11 @@ import { Injectable } from '@nestjs/common' import { Form } from '../../forms/models/form.model' import { ApplicationDto } from './dto/application.dto' import { Application } from './application.model' -import { OrganizationDto } from '../../organizations/models/dto/organization.dto' -import { ApplicationSectionDto } from '../../sections/models/dto/applicationSection.dto' -import { ApplicationScreenDto } from '../../screens/models/dto/applicationScreen.dto' -import { ApplicationFieldDto } from '../../fields/models/dto/applicationField.dto' import { FieldSettingsMapper } from '../../fieldSettings/models/fieldSettings.mapper' +import { FieldDto } from '../../fields/models/dto/field.dto' +import { OrganizationDto } from '../../organizations/models/dto/organization.dto' +import { ScreenDto } from '../../screens/models/dto/screen.dto' +import { SectionDto } from '../../sections/models/dto/section.dto' @Injectable() export class ApplicationMapper { @@ -16,7 +16,7 @@ export class ApplicationMapper { application: Application, ): ApplicationDto { const applicationDto: ApplicationDto = { - applicationId: application.id, + id: application.id, formId: form.id, slug: form.slug, organization: new OrganizationDto(), @@ -52,11 +52,11 @@ export class ApplicationMapper { field.fieldSettings, field.fieldType, ), - } as ApplicationFieldDto + } as FieldDto }), - } as ApplicationScreenDto + } as ScreenDto }), - } as ApplicationSectionDto) + } as SectionDto) }) return applicationDto diff --git a/apps/services/form-system/src/app/modules/applications/models/application.model.ts b/apps/services/form-system/src/app/modules/applications/models/application.model.ts index fad0ba804142..4fe072eca8c5 100644 --- a/apps/services/form-system/src/app/modules/applications/models/application.model.ts +++ b/apps/services/form-system/src/app/modules/applications/models/application.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty } from '@nestjs/swagger' import { CreationOptional } from 'sequelize' import { Column, @@ -19,15 +18,12 @@ export class Application extends Model<Application> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @ForeignKey(() => Form) diff --git a/apps/services/form-system/src/app/modules/applications/models/dto/application.dto.ts b/apps/services/form-system/src/app/modules/applications/models/dto/application.dto.ts index 0f17620ee08c..086f537ae324 100644 --- a/apps/services/form-system/src/app/modules/applications/models/dto/application.dto.ts +++ b/apps/services/form-system/src/app/modules/applications/models/dto/application.dto.ts @@ -1,10 +1,10 @@ import { ApiPropertyOptional } from '@nestjs/swagger' -import { ApplicationSectionDto } from '../../../sections/models/dto/applicationSection.dto' import { OrganizationDto } from '../../../organizations/models/dto/organization.dto' +import { SectionDto } from '../../../sections/models/dto/section.dto' export class ApplicationDto { @ApiPropertyOptional() - applicationId?: string + id?: string @ApiPropertyOptional({ type: OrganizationDto }) organization?: OrganizationDto @@ -21,6 +21,6 @@ export class ApplicationDto { @ApiPropertyOptional({ type: Date }) modified?: Date - @ApiPropertyOptional({ type: [ApplicationSectionDto] }) - sections?: ApplicationSectionDto[] + @ApiPropertyOptional({ type: [SectionDto] }) + sections?: SectionDto[] } diff --git a/apps/services/form-system/src/app/modules/certifications/models/certificationType.model.ts b/apps/services/form-system/src/app/modules/certifications/models/certificationType.model.ts index 905e7058eac3..643d158aec49 100644 --- a/apps/services/form-system/src/app/modules/certifications/models/certificationType.model.ts +++ b/apps/services/form-system/src/app/modules/certifications/models/certificationType.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty } from '@nestjs/swagger' import { BelongsToMany, Column, @@ -22,7 +21,6 @@ export class CertificationType extends Model<CertificationType> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @Column({ @@ -30,7 +28,6 @@ export class CertificationType extends Model<CertificationType> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @Column({ @@ -38,7 +35,6 @@ export class CertificationType extends Model<CertificationType> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) description!: LanguageType @Column({ @@ -46,15 +42,12 @@ export class CertificationType extends Model<CertificationType> { allowNull: false, values: Object.values(CertificationTypes), }) - @ApiProperty({ enum: CertificationTypes }) type!: string @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @BelongsToMany(() => Organization, { diff --git a/apps/services/form-system/src/app/modules/certifications/models/dto/formCertificationType.dto.ts b/apps/services/form-system/src/app/modules/certifications/models/dto/formCertificationType.dto.ts deleted file mode 100644 index 62d0a0a57be8..000000000000 --- a/apps/services/form-system/src/app/modules/certifications/models/dto/formCertificationType.dto.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ApiProperty } from '@nestjs/swagger' -import { LanguageType } from '../../../../dataTypes/languageType.model' -import { CertificationTypes } from '../../../../enums/certificationTypes' - -export class FormCertificationTypeDto { - @ApiProperty() - id!: string - - @ApiProperty({ type: LanguageType }) - name!: LanguageType - - @ApiProperty({ type: LanguageType }) - description!: LanguageType - - @ApiProperty({ enum: CertificationTypes }) - type!: string -} diff --git a/apps/services/form-system/src/app/modules/fieldSettings/models/dto/fieldSettings.dto.ts b/apps/services/form-system/src/app/modules/fieldSettings/models/dto/fieldSettings.dto.ts index 945b6d3d7b2b..1d1a28cad09d 100644 --- a/apps/services/form-system/src/app/modules/fieldSettings/models/dto/fieldSettings.dto.ts +++ b/apps/services/form-system/src/app/modules/fieldSettings/models/dto/fieldSettings.dto.ts @@ -2,63 +2,63 @@ import { ApiPropertyOptional } from '@nestjs/swagger' import { ListItemDto } from '../../../listItems/models/dto/listItem.dto' export class FieldSettingsDto { - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) minValue?: number - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) maxValue?: number - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) minLength?: number - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) maxLength?: number - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Date }) minDate?: Date - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Date }) maxDate?: Date - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) minAmount?: string - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) maxAmount?: string - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) year?: number - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Boolean }) hasLink?: boolean - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) url?: string - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) buttonText?: string - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Boolean }) hasPropertyInput?: boolean - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Boolean }) hasPropertyList?: boolean @ApiPropertyOptional({ type: [ListItemDto] }) list?: ListItemDto[] - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) listType?: string - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) fileTypes?: string - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) fileMaxSize?: number - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) maxFiles?: number - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) timeInterval?: string } diff --git a/apps/services/form-system/src/app/modules/fieldSettings/models/dto/updateFieldSettings.dto.ts b/apps/services/form-system/src/app/modules/fieldSettings/models/dto/updateFieldSettings.dto.ts index 7c724fbd92ff..d5bf18e8f11f 100644 --- a/apps/services/form-system/src/app/modules/fieldSettings/models/dto/updateFieldSettings.dto.ts +++ b/apps/services/form-system/src/app/modules/fieldSettings/models/dto/updateFieldSettings.dto.ts @@ -10,96 +10,96 @@ import { export class UpdateFieldSettingsDto { @IsOptional() @IsNumber() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) minValue?: number @IsOptional() @IsNumber() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) maxValue?: number @IsOptional() @IsNumber() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) minLength?: number @IsOptional() @IsNumber() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) maxLength?: number @IsOptional() @IsDate() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Date }) minDate?: Date @IsOptional() @IsDate() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Date }) maxDate?: Date @IsOptional() @IsString() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) minAmount?: string @IsOptional() @IsString() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) maxAmount?: string @IsOptional() @IsNumber() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) year?: number @IsOptional() @IsBoolean() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Boolean }) hasLink?: boolean @IsOptional() @IsString() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) url?: string @IsOptional() @IsString() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) buttonText?: string @IsOptional() @IsBoolean() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Boolean }) hasPropertyInput?: boolean @IsOptional() @IsBoolean() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Boolean }) hasPropertyList?: boolean @IsOptional() @IsString() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) listType?: string @IsOptional() @IsString() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) fileTypes?: string @IsOptional() @IsNumber() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) fileMaxSize?: number @IsOptional() @IsNumber() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: Number }) maxFiles?: number @IsOptional() @IsString() - @ApiPropertyOptional() + @ApiPropertyOptional({ type: String }) timeInterval?: string } diff --git a/apps/services/form-system/src/app/modules/fieldSettings/models/fieldSettings.model.ts b/apps/services/form-system/src/app/modules/fieldSettings/models/fieldSettings.model.ts index 03f773b73786..3722d0fe1669 100644 --- a/apps/services/form-system/src/app/modules/fieldSettings/models/fieldSettings.model.ts +++ b/apps/services/form-system/src/app/modules/fieldSettings/models/fieldSettings.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { CreationOptional } from 'sequelize' import { Column, @@ -23,117 +22,99 @@ export class FieldSettings extends Model<FieldSettings> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ type: DataType.INTEGER, allowNull: true, }) - @ApiPropertyOptional() minValue?: number | null @Column({ type: DataType.INTEGER, allowNull: true, }) - @ApiPropertyOptional() maxValue?: number | null @Column({ type: DataType.INTEGER, allowNull: true, }) - @ApiPropertyOptional() minLength?: number | null @Column({ type: DataType.INTEGER, allowNull: true, }) - @ApiPropertyOptional() maxLength?: number | null @Column({ type: DataType.DATE, allowNull: true, }) - @ApiPropertyOptional() minDate?: Date | null @Column({ type: DataType.DATE, allowNull: true, }) - @ApiPropertyOptional() maxDate?: Date | null @Column({ type: DataType.STRING, allowNull: true, }) - @ApiPropertyOptional() minAmount?: string | null @Column({ type: DataType.STRING, allowNull: true, }) - @ApiPropertyOptional() maxAmount?: string | null @Column({ type: DataType.INTEGER, allowNull: true, }) - @ApiPropertyOptional() year?: number | null @Column({ type: DataType.BOOLEAN, allowNull: true, }) - @ApiPropertyOptional() hasLink?: boolean | null @Column({ type: DataType.STRING, allowNull: true, }) - @ApiPropertyOptional() url?: string | null @Column({ type: DataType.STRING, allowNull: true, }) - @ApiPropertyOptional() buttonText?: string | null @Column({ type: DataType.BOOLEAN, allowNull: true, }) - @ApiPropertyOptional() hasPropertyInput?: boolean | null @Column({ type: DataType.BOOLEAN, allowNull: true, }) - @ApiPropertyOptional() hasPropertyList?: boolean | null @HasMany(() => ListItem) - @ApiPropertyOptional({ type: [ListItem] }) list?: ListItem[] | null @Column({ @@ -141,28 +122,24 @@ export class FieldSettings extends Model<FieldSettings> { allowNull: true, values: Object.values(ListTypes), }) - @ApiPropertyOptional({ enum: ListTypes }) listType?: string | null @Column({ type: DataType.JSON, allowNull: true, }) - @ApiPropertyOptional() fileTypes?: string | null @Column({ type: DataType.INTEGER, allowNull: true, }) - @ApiPropertyOptional() fileMaxSize?: number | null @Column({ type: DataType.INTEGER, allowNull: true, }) - @ApiPropertyOptional() maxFiles?: number | null @Column({ @@ -170,7 +147,6 @@ export class FieldSettings extends Model<FieldSettings> { allowNull: true, values: Object.values(TimeIntervals), }) - @ApiPropertyOptional({ enum: TimeIntervals }) timeInterval?: string | null @ForeignKey(() => Field) diff --git a/apps/services/form-system/src/app/modules/fields/fields.controller.ts b/apps/services/form-system/src/app/modules/fields/fields.controller.ts index 15396cb78d60..e69ddd129780 100644 --- a/apps/services/form-system/src/app/modules/fields/fields.controller.ts +++ b/apps/services/form-system/src/app/modules/fields/fields.controller.ts @@ -10,7 +10,6 @@ import { VERSION_NEUTRAL, } from '@nestjs/common' import { FieldsService } from './fields.service' -import { Field } from './models/field.model' import { CreateFieldDto } from './models/dto/createField.dto' import { Documentation } from '@island.is/nest/swagger' import { ApiTags } from '@nestjs/swagger' @@ -28,15 +27,6 @@ export class FieldsController { return this.fieldsService.create(createFieldDto) } - @Get() - @Documentation({ - description: 'Get all Fields', - response: { status: 200, type: [Field] }, - }) - async findAll(): Promise<Field[]> { - return await this.fieldsService.findAll() - } - @Get(':id') @Documentation({ description: 'Get Field by id', diff --git a/apps/services/form-system/src/app/modules/fields/fields.service.ts b/apps/services/form-system/src/app/modules/fields/fields.service.ts index 974e5ed2b813..7adfd3688fb9 100644 --- a/apps/services/form-system/src/app/modules/fields/fields.service.ts +++ b/apps/services/form-system/src/app/modules/fields/fields.service.ts @@ -17,10 +17,6 @@ export class FieldsService { private readonly fieldMapper: FieldMapper, ) {} - async findAll(): Promise<Field[]> { - return await this.fieldModel.findAll() - } - async findOne(id: string): Promise<FieldDto> { const field = await this.findById(id) const fieldSettingsDto = await this.fieldSettingsService.findOne( diff --git a/apps/services/form-system/src/app/modules/fields/models/dto/applicationField.dto.ts b/apps/services/form-system/src/app/modules/fields/models/dto/applicationField.dto.ts deleted file mode 100644 index b17e108d1fd9..000000000000 --- a/apps/services/form-system/src/app/modules/fields/models/dto/applicationField.dto.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' -import { LanguageType } from '../../../../dataTypes/languageType.model' -import { FieldSettingsDto } from '../../../fieldSettings/models/dto/fieldSettings.dto' -import { FieldTypes } from '../../../../enums/fieldTypes' - -export class ApplicationFieldDto { - @ApiProperty() - id!: string - - @ApiProperty() - screenId!: string - - @ApiProperty({ type: LanguageType }) - name!: LanguageType - - @ApiProperty() - displayOrder!: number - - @ApiProperty({ type: LanguageType }) - description!: LanguageType - - @ApiProperty() - isPartOfMultiset!: boolean - - @ApiPropertyOptional({ type: FieldSettingsDto }) - fieldSettings?: FieldSettingsDto - - @ApiProperty({ enum: FieldTypes }) - fieldType!: string -} diff --git a/apps/services/form-system/src/app/modules/fields/models/field.model.ts b/apps/services/form-system/src/app/modules/fields/models/field.model.ts index eb9f1ed62ecb..b751a95f9443 100644 --- a/apps/services/form-system/src/app/modules/fields/models/field.model.ts +++ b/apps/services/form-system/src/app/modules/fields/models/field.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { CreationOptional } from 'sequelize' import { Column, @@ -23,7 +22,6 @@ export class Field extends Model<Field> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @Column({ @@ -31,15 +29,12 @@ export class Field extends Model<Field> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -47,7 +42,6 @@ export class Field extends Model<Field> { allowNull: false, defaultValue: 0, }) - @ApiProperty() displayOrder!: number @Column({ @@ -55,7 +49,6 @@ export class Field extends Model<Field> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) description!: LanguageType @Column({ @@ -63,7 +56,6 @@ export class Field extends Model<Field> { allowNull: false, defaultValue: false, }) - @ApiProperty() isHidden!: boolean @Column({ @@ -71,7 +63,6 @@ export class Field extends Model<Field> { allowNull: false, defaultValue: false, }) - @ApiProperty() isPartOfMultiset!: boolean @ForeignKey(() => Screen) @@ -83,7 +74,6 @@ export class Field extends Model<Field> { screenId!: string @HasOne(() => FieldSettings) - @ApiPropertyOptional({ type: FieldSettings }) fieldSettings?: FieldSettings @ForeignKey(() => FieldType) @@ -93,6 +83,5 @@ export class Field extends Model<Field> { defaultValue: 'default', field: 'field_type', }) - @ApiProperty() fieldType!: string } diff --git a/apps/services/form-system/src/app/modules/fields/models/fieldType.model.ts b/apps/services/form-system/src/app/modules/fields/models/fieldType.model.ts index 7e7e08489d08..f38018fab450 100644 --- a/apps/services/form-system/src/app/modules/fields/models/fieldType.model.ts +++ b/apps/services/form-system/src/app/modules/fields/models/fieldType.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty } from '@nestjs/swagger' import { CreationOptional, NonAttribute } from 'sequelize' import { BelongsToMany, @@ -22,7 +21,6 @@ export class FieldType extends Model<FieldType> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @Column({ @@ -30,7 +28,6 @@ export class FieldType extends Model<FieldType> { allowNull: false, unique: true, }) - @ApiProperty() type!: string @Column({ @@ -38,7 +35,6 @@ export class FieldType extends Model<FieldType> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @Column({ @@ -46,15 +42,12 @@ export class FieldType extends Model<FieldType> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) description!: LanguageType @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -62,7 +55,6 @@ export class FieldType extends Model<FieldType> { allowNull: false, defaultValue: false, }) - @ApiProperty() isCommon!: boolean @HasMany(() => Field) diff --git a/apps/services/form-system/src/app/modules/forms/forms.controller.ts b/apps/services/form-system/src/app/modules/forms/forms.controller.ts index 51b296e3cc2d..005db08d95cf 100644 --- a/apps/services/form-system/src/app/modules/forms/forms.controller.ts +++ b/apps/services/form-system/src/app/modules/forms/forms.controller.ts @@ -12,8 +12,7 @@ import { import { ApiCreatedResponse, ApiTags } from '@nestjs/swagger' import { FormsService } from './forms.service' import { CreateFormDto } from './models/dto/createForm.dto' -import { FormResponse } from './models/dto/form.response.dto' -import { FormsListDto } from './models/dto/formsList.dto' +import { FormResponseDto } from './models/dto/form.response.dto' @ApiTags('forms') @Controller({ path: 'forms', version: ['1', VERSION_NEUTRAL] }) @@ -22,11 +21,10 @@ export class FormsController { @Post() @ApiCreatedResponse({ - type: FormResponse, + type: FormResponseDto, description: 'Create new form', }) - async create(@Body() createFormDto: CreateFormDto): Promise<FormResponse> { - console.log('blee') + async create(@Body() createFormDto: CreateFormDto): Promise<FormResponseDto> { const formResponse = await this.formsService.create(createFormDto) if (!formResponse) { throw new Error('Error') @@ -37,20 +35,20 @@ export class FormsController { @Get('organization/:organizationId') @Documentation({ description: 'Get all forms belonging to organization', - response: { status: 200, type: FormsListDto }, + response: { status: 200, type: FormResponseDto }, }) async findAll( @Param('organizationId') organizationId: string, - ): Promise<FormsListDto> { + ): Promise<FormResponseDto> { return await this.formsService.findAll(organizationId) } @Get(':id') @Documentation({ description: 'Get FormResponse by formId', - response: { status: 200, type: FormResponse }, + response: { status: 200, type: FormResponseDto }, }) - async findOne(@Param('id') id: string): Promise<FormResponse> { + async findOne(@Param('id') id: string): Promise<FormResponseDto> { const formResponse = await this.formsService.findOne(id) if (!formResponse) { throw new NotFoundException(`Form not found`) diff --git a/apps/services/form-system/src/app/modules/forms/forms.service.ts b/apps/services/form-system/src/app/modules/forms/forms.service.ts index a819ffe94a47..a3ee19195b95 100644 --- a/apps/services/form-system/src/app/modules/forms/forms.service.ts +++ b/apps/services/form-system/src/app/modules/forms/forms.service.ts @@ -19,16 +19,13 @@ import { ListType } from '../lists/models/listType.model' import { Organization } from '../organizations/models/organization.model' import { SectionDto } from '../sections/models/dto/section.dto' import { Section } from '../sections/models/section.model' -import { FormCertificationTypeDto } from '../certifications/models/dto/formCertificationType.dto' import { CertificationTypeDto } from '../certifications/models/dto/certificationType.dto' import { CertificationType } from '../certifications/models/certificationType.model' import { CreateFormDto } from './models/dto/createForm.dto' import { FormDto } from './models/dto/form.dto' -import { FormResponse } from './models/dto/form.response.dto' +import { FormResponseDto } from './models/dto/form.response.dto' import { Form } from './models/form.model' import { ListItem } from '../listItems/models/listItem.model' -import { FormsListDto } from './models/dto/formsList.dto' -import { FormsListFormDto } from './models/dto/formsListForm.dto' import { createFormTranslations } from '../translations/form' import { createSectionTranslations } from '../translations/section' @@ -50,7 +47,7 @@ export class FormsService { private readonly fieldSettingsMapper: FieldSettingsMapper, ) {} - async findAll(organizationId: string): Promise<FormsListDto> { + async findAll(organizationId: string): Promise<FormResponseDto> { const forms = await this.formModel.findAll({ where: { organizationId: organizationId }, }) @@ -67,19 +64,19 @@ export class FormsService { 'stopProgressOnValidatingScreen', ] - const formsListDto: FormsListDto = { + const formResponseDto: FormResponseDto = { forms: forms.map((form) => { return defaults( pick(form, keys), zipObject(keys, Array(keys.length).fill(null)), - ) as FormsListFormDto + ) as FormDto }), } - return formsListDto + return formResponseDto } - async findOne(id: string): Promise<FormResponse | null> { + async findOne(id: string): Promise<FormResponseDto | null> { const form = await this.findById(id) if (!form) { @@ -90,7 +87,7 @@ export class FormsService { return formResponse } - async create(createFormDto: CreateFormDto): Promise<FormResponse | null> { + async create(createFormDto: CreateFormDto): Promise<FormResponseDto | null> { const { organizationId } = createFormDto if (!organizationId) { @@ -163,8 +160,8 @@ export class FormsService { return form } - private async buildFormResponse(form: Form): Promise<FormResponse> { - const response: FormResponse = { + private async buildFormResponse(form: Form): Promise<FormResponseDto> { + const response: FormResponseDto = { form: this.setArrays(form), fieldTypes: await this.getFieldTypes(form.organizationId), certificationTypes: await this.getCertificationTypes(form.organizationId), @@ -300,7 +297,7 @@ export class FormsService { formCertificationTypeKeys, Array(formCertificationTypeKeys.length).fill(null), ), - ) as FormCertificationTypeDto, + ) as CertificationTypeDto, ) }) diff --git a/apps/services/form-system/src/app/modules/forms/models/dto/form.dto.ts b/apps/services/form-system/src/app/modules/forms/models/dto/form.dto.ts index fc0ff2eac177..4ce2e33acaf3 100644 --- a/apps/services/form-system/src/app/modules/forms/models/dto/form.dto.ts +++ b/apps/services/form-system/src/app/modules/forms/models/dto/form.dto.ts @@ -4,7 +4,7 @@ import { FormApplicantDto } from '../../../applicants/models/dto/formApplicant.d import { ScreenDto } from '../../../screens/models/dto/screen.dto' import { FieldDto } from '../../../fields/models/dto/field.dto' import { SectionDto } from '../../../sections/models/dto/section.dto' -import { FormCertificationTypeDto } from '../../../certifications/models/dto/formCertificationType.dto' +import { CertificationTypeDto } from '../../../certifications/models/dto/certificationType.dto' export class FormDto { @ApiProperty() @@ -43,8 +43,8 @@ export class FormDto { @ApiPropertyOptional({ type: LanguageType }) completedMessage?: LanguageType - @ApiPropertyOptional({ type: [FormCertificationTypeDto] }) - certificationTypes?: FormCertificationTypeDto[] + @ApiPropertyOptional({ type: [CertificationTypeDto] }) + certificationTypes?: CertificationTypeDto[] @ApiPropertyOptional({ type: [FormApplicantDto] }) applicants?: FormApplicantDto[] diff --git a/apps/services/form-system/src/app/modules/forms/models/dto/form.response.dto.ts b/apps/services/form-system/src/app/modules/forms/models/dto/form.response.dto.ts index ca267983c79a..c6cb98a10941 100644 --- a/apps/services/form-system/src/app/modules/forms/models/dto/form.response.dto.ts +++ b/apps/services/form-system/src/app/modules/forms/models/dto/form.response.dto.ts @@ -1,19 +1,22 @@ -import { ApiProperty } from '@nestjs/swagger' +import { ApiPropertyOptional } from '@nestjs/swagger' import { FieldTypeDto } from '../../../fields/models/dto/fieldType.dto' import { ListTypeDto } from '../../../lists/models/dto/listType.dto' import { CertificationTypeDto } from '../../../certifications/models/dto/certificationType.dto' import { FormDto } from './form.dto' -export class FormResponse { - @ApiProperty({ type: FormDto }) - form!: FormDto +export class FormResponseDto { + @ApiPropertyOptional({ type: FormDto }) + form?: FormDto - @ApiProperty({ type: [FieldTypeDto] }) - fieldTypes!: FieldTypeDto[] + @ApiPropertyOptional({ type: [FieldTypeDto] }) + fieldTypes?: FieldTypeDto[] - @ApiProperty({ type: [CertificationTypeDto] }) - certificationTypes!: CertificationTypeDto[] + @ApiPropertyOptional({ type: [CertificationTypeDto] }) + certificationTypes?: CertificationTypeDto[] - @ApiProperty({ type: [ListTypeDto] }) - listTypes!: ListTypeDto[] + @ApiPropertyOptional({ type: [ListTypeDto] }) + listTypes?: ListTypeDto[] + + @ApiPropertyOptional({ type: [FormDto] }) + forms?: FormDto[] } diff --git a/apps/services/form-system/src/app/modules/forms/models/dto/formsList.dto.ts b/apps/services/form-system/src/app/modules/forms/models/dto/formsList.dto.ts deleted file mode 100644 index 4d128b1500c8..000000000000 --- a/apps/services/form-system/src/app/modules/forms/models/dto/formsList.dto.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ApiProperty } from '@nestjs/swagger' -import { FormsListFormDto } from './formsListForm.dto' - -export class FormsListDto { - @ApiProperty({ type: [FormsListFormDto] }) - forms!: FormsListFormDto[] -} diff --git a/apps/services/form-system/src/app/modules/forms/models/dto/formsListForm.dto.ts b/apps/services/form-system/src/app/modules/forms/models/dto/formsListForm.dto.ts deleted file mode 100644 index f5734e5b7e73..000000000000 --- a/apps/services/form-system/src/app/modules/forms/models/dto/formsListForm.dto.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' -import { LanguageType } from '../../../../dataTypes/languageType.model' - -export class FormsListFormDto { - @ApiProperty() - id!: string - - @ApiProperty({ type: LanguageType }) - name!: LanguageType - - @ApiProperty() - slug!: string - - @ApiPropertyOptional({ type: Date }) - invalidationDate?: Date - - @ApiProperty({ type: Date }) - created!: Date - - @ApiProperty({ type: Date }) - modified!: Date - - @ApiProperty() - isTranslated!: boolean - - @ApiProperty() - applicationDaysToRemove!: number - - @ApiProperty() - derivedFrom!: number - - @ApiProperty() - stopProgressOnValidatingScreen!: boolean -} diff --git a/apps/services/form-system/src/app/modules/forms/models/form.model.ts b/apps/services/form-system/src/app/modules/forms/models/form.model.ts index fcc9d33c7784..8aa0c1dda472 100644 --- a/apps/services/form-system/src/app/modules/forms/models/form.model.ts +++ b/apps/services/form-system/src/app/modules/forms/models/form.model.ts @@ -11,7 +11,6 @@ import { UpdatedAt, } from 'sequelize-typescript' import { Section } from '../../sections/models/section.model' -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { Organization } from '../../organizations/models/organization.model' import { LanguageType } from '../../../dataTypes/languageType.model' import { FormApplicant } from '../../applicants/models/formApplicant.model' @@ -26,7 +25,6 @@ export class Form extends Model<Form> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @Column({ @@ -34,7 +32,6 @@ export class Form extends Model<Form> { allowNull: false, defaultValue: new LanguageType(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @Column({ @@ -46,15 +43,12 @@ export class Form extends Model<Form> { slug!: string @Column - @ApiPropertyOptional({ type: Date }) invalidationDate?: Date @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -62,14 +56,12 @@ export class Form extends Model<Form> { allowNull: false, defaultValue: false, }) - @ApiProperty() isTranslated!: boolean @Column({ type: DataType.INTEGER, defaultValue: 60, }) - @ApiProperty() applicationDaysToRemove!: number @Column({ @@ -77,7 +69,6 @@ export class Form extends Model<Form> { allowNull: false, defaultValue: 0, }) - @ApiProperty() derivedFrom!: number @Column({ @@ -85,7 +76,6 @@ export class Form extends Model<Form> { allowNull: false, defaultValue: true, }) - @ApiProperty() stopProgressOnValidatingScreen!: boolean @Column({ @@ -93,15 +83,12 @@ export class Form extends Model<Form> { allowNull: true, defaultValue: () => new LanguageType(), }) - @ApiPropertyOptional({ type: LanguageType }) completedMessage?: LanguageType @HasMany(() => Section) - @ApiProperty({ type: [Section] }) sections!: Section[] @HasMany(() => FormApplicant) - @ApiPropertyOptional({ type: [FormApplicant] }) applicants?: FormApplicant[] @ForeignKey(() => Organization) diff --git a/apps/services/form-system/src/app/modules/listItems/models/listItem.model.ts b/apps/services/form-system/src/app/modules/listItems/models/listItem.model.ts index e13332aacb40..310632fcf129 100644 --- a/apps/services/form-system/src/app/modules/listItems/models/listItem.model.ts +++ b/apps/services/form-system/src/app/modules/listItems/models/listItem.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { Column, CreatedAt, @@ -20,15 +19,12 @@ export class ListItem extends Model<ListItem> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -36,7 +32,6 @@ export class ListItem extends Model<ListItem> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) label!: LanguageType @Column({ @@ -44,7 +39,6 @@ export class ListItem extends Model<ListItem> { allowNull: true, defaultValue: () => new LanguageType(), }) - @ApiPropertyOptional({ type: LanguageType }) description?: LanguageType @Column({ @@ -59,7 +53,6 @@ export class ListItem extends Model<ListItem> { allowNull: false, defaultValue: 0, }) - @ApiProperty() displayOrder!: number @Column({ @@ -67,7 +60,6 @@ export class ListItem extends Model<ListItem> { allowNull: false, defaultValue: false, }) - @ApiProperty() isSelected!: boolean @ForeignKey(() => FieldSettings) diff --git a/apps/services/form-system/src/app/modules/lists/models/listType.model.ts b/apps/services/form-system/src/app/modules/lists/models/listType.model.ts index 39270c2cebbe..a5d4eac70d88 100644 --- a/apps/services/form-system/src/app/modules/lists/models/listType.model.ts +++ b/apps/services/form-system/src/app/modules/lists/models/listType.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty } from '@nestjs/swagger' import { BelongsToMany, Column, @@ -21,7 +20,6 @@ export class ListType extends Model<ListType> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @Column({ @@ -29,7 +27,6 @@ export class ListType extends Model<ListType> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @Column({ @@ -37,7 +34,6 @@ export class ListType extends Model<ListType> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) description!: LanguageType @Column({ @@ -45,15 +41,12 @@ export class ListType extends Model<ListType> { allowNull: false, defaultValue: false, }) - @ApiProperty() isCommon!: boolean @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -61,7 +54,6 @@ export class ListType extends Model<ListType> { allowNull: false, values: Object.values(ListTypes), }) - @ApiProperty({ enum: ListTypes }) type!: string @BelongsToMany(() => Organization, { diff --git a/apps/services/form-system/src/app/modules/organizations/models/dto/organization.dto.ts b/apps/services/form-system/src/app/modules/organizations/models/dto/organization.dto.ts index fa34161fbc5d..9dc816d50f57 100644 --- a/apps/services/form-system/src/app/modules/organizations/models/dto/organization.dto.ts +++ b/apps/services/form-system/src/app/modules/organizations/models/dto/organization.dto.ts @@ -1,10 +1,17 @@ -import { ApiProperty } from '@nestjs/swagger' +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { LanguageType } from '../../../../dataTypes/languageType.model' +import { FormDto } from '../../../forms/models/dto/form.dto' export class OrganizationDto { + @ApiProperty() + id!: string + @ApiProperty({ type: LanguageType }) name!: LanguageType - @ApiProperty() + @ApiProperty({ type: String }) nationalId!: string + + @ApiPropertyOptional({ type: [FormDto] }) + forms?: FormDto[] } diff --git a/apps/services/form-system/src/app/modules/organizations/models/dto/organizations.response.dto.ts b/apps/services/form-system/src/app/modules/organizations/models/dto/organizations.response.dto.ts new file mode 100644 index 000000000000..23aa8c040797 --- /dev/null +++ b/apps/services/form-system/src/app/modules/organizations/models/dto/organizations.response.dto.ts @@ -0,0 +1,7 @@ +import { ApiProperty } from '@nestjs/swagger' +import { OrganizationDto } from './organization.dto' + +export class OrganizationsResponseDto { + @ApiProperty({ type: [OrganizationDto] }) + organizations!: OrganizationDto[] +} diff --git a/apps/services/form-system/src/app/modules/organizations/models/organization.model.ts b/apps/services/form-system/src/app/modules/organizations/models/organization.model.ts index 28fc5ed8eba8..af132738cdd2 100644 --- a/apps/services/form-system/src/app/modules/organizations/models/organization.model.ts +++ b/apps/services/form-system/src/app/modules/organizations/models/organization.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty } from '@nestjs/swagger' import { CreationOptional, NonAttribute } from 'sequelize' import { BelongsToMany, @@ -25,7 +24,6 @@ export class Organization extends Model<Organization> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @Column({ @@ -33,15 +31,12 @@ export class Organization extends Model<Organization> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -49,15 +44,12 @@ export class Organization extends Model<Organization> { allowNull: false, defaultValue: '', }) - @ApiProperty() nationalId!: string @HasMany(() => Form) - @ApiProperty({ type: [Form] }) forms?: Form[] @HasMany(() => ApplicantTypeNameSuggestion) - @ApiProperty({ type: [ApplicantTypeNameSuggestion] }) applicantTypeNameSuggestions?: ApplicantTypeNameSuggestion[] @BelongsToMany(() => FieldType, { diff --git a/apps/services/form-system/src/app/modules/organizations/organizations.controller.ts b/apps/services/form-system/src/app/modules/organizations/organizations.controller.ts index bf6feb3a7ded..ae201c2b6d9e 100644 --- a/apps/services/form-system/src/app/modules/organizations/organizations.controller.ts +++ b/apps/services/form-system/src/app/modules/organizations/organizations.controller.ts @@ -9,9 +9,10 @@ import { } from '@nestjs/common' import { ApiTags } from '@nestjs/swagger' import { OrganizationsService } from './organizations.service' -import { Organization } from './models/organization.model' import { CreateOrganizationDto } from './models/dto/createOrganization.dto' import { Documentation } from '@island.is/nest/swagger' +import { OrganizationsResponseDto } from './models/dto/organizations.response.dto' +import { OrganizationDto } from './models/dto/organization.dto' @ApiTags('organizations') @Controller({ path: 'organizations', version: ['1', VERSION_NEUTRAL] }) @@ -21,30 +22,30 @@ export class OrganizationsController { @Post() create( @Body() createOrganizationDto: CreateOrganizationDto, - ): Promise<Organization> { + ): Promise<OrganizationDto> { return this.organizationsService.create(createOrganizationDto) } @Get() @Documentation({ description: 'Get all Organizations', - response: { status: 200, type: [Organization] }, + response: { status: 200, type: [OrganizationsResponseDto] }, }) - async findAll(): Promise<Organization[]> { + async findAll(): Promise<OrganizationsResponseDto> { return await this.organizationsService.findAll() } @Get(':id') @Documentation({ description: 'Get Organization by id', - response: { status: 200, type: Organization }, + response: { status: 200, type: OrganizationDto }, }) - async findOne(@Param('id') id: string): Promise<Organization> { - const form = await this.organizationsService.findOne(id) - if (!form) { + async findOne(@Param('id') id: string): Promise<OrganizationDto> { + const organization = await this.organizationsService.findOne(id) + if (!organization) { throw new NotFoundException(`Organization not found`) } - return form + return organization } } diff --git a/apps/services/form-system/src/app/modules/organizations/organizations.service.ts b/apps/services/form-system/src/app/modules/organizations/organizations.service.ts index dbbc1621e227..c62c074e3bcf 100644 --- a/apps/services/form-system/src/app/modules/organizations/organizations.service.ts +++ b/apps/services/form-system/src/app/modules/organizations/organizations.service.ts @@ -1,8 +1,14 @@ -import { Injectable } from '@nestjs/common' +import { Injectable, NotFoundException } from '@nestjs/common' import { InjectModel } from '@nestjs/sequelize' import { Form } from '../forms/models/form.model' import { CreateOrganizationDto } from './models/dto/createOrganization.dto' import { Organization } from './models/organization.model' +import { OrganizationsResponseDto } from './models/dto/organizations.response.dto' +import { OrganizationDto } from './models/dto/organization.dto' +import defaults from 'lodash/defaults' +import pick from 'lodash/pick' +import zipObject from 'lodash/zipObject' +import { FormDto } from '../forms/models/dto/form.dto' @Injectable() export class OrganizationsService { @@ -11,23 +17,80 @@ export class OrganizationsService { private readonly organizationModel: typeof Organization, ) {} - async findAll(): Promise<Organization[]> { - return await this.organizationModel.findAll() + async findAll(): Promise<OrganizationsResponseDto> { + const organizations = await this.organizationModel.findAll() + + const organizationsDto: OrganizationDto[] = [] + + const keys = ['id', 'name', 'nationalId'] + organizations.map((organization) => { + organizationsDto.push( + defaults( + pick(organization, keys), + zipObject(keys, Array(keys.length).fill(null)), + ) as OrganizationDto, + ) + }) + + const organizationsResponse: OrganizationsResponseDto = + new OrganizationsResponseDto() + organizationsResponse.organizations = organizationsDto + + return organizationsResponse } - async findOne(id: string): Promise<Organization | null> { - const form = await this.organizationModel.findByPk(id, { include: [Form] }) + async findOne(id: string): Promise<OrganizationDto> { + const organization = await this.organizationModel.findByPk(id, { + include: [Form], + }) + + if (!organization) { + throw new NotFoundException(`Organization with id ${id} not found`) + } - return form + const keys = ['id', 'name', 'nationalId'] + const organizationDto: OrganizationDto = defaults( + pick(organization, keys), + zipObject(keys, Array(keys.length).fill(null)), + ) as OrganizationDto + + const formKeys = [ + 'id', + 'name', + 'slug', + 'invalidationDate', + 'created', + 'modified', + 'isTranslated', + 'applicationDaysToRemove', + 'stopProgressOnValidatingScreen', + ] + + organizationDto.forms = organization.forms?.map((form) => { + return defaults( + pick(form, formKeys), + zipObject(formKeys, Array(formKeys.length).fill(null)), + ) as FormDto + }) + + return organizationDto } async create( createOrganizationDto: CreateOrganizationDto, - ): Promise<Organization> { + ): Promise<OrganizationDto> { const organization = createOrganizationDto as Organization const newOrganzation: Organization = new this.organizationModel( organization, ) - return await newOrganzation.save() + await newOrganzation.save() + + const keys = ['id', 'name', 'nationalId'] + const organizationDto: OrganizationDto = defaults( + pick(newOrganzation, keys), + zipObject(keys, Array(keys.length).fill(null)), + ) as OrganizationDto + + return organizationDto } } diff --git a/apps/services/form-system/src/app/modules/screens/models/dto/applicationScreen.dto.ts b/apps/services/form-system/src/app/modules/screens/models/dto/applicationScreen.dto.ts deleted file mode 100644 index 1876a240302e..000000000000 --- a/apps/services/form-system/src/app/modules/screens/models/dto/applicationScreen.dto.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ApiProperty } from '@nestjs/swagger' -import { LanguageType } from '../../../../dataTypes/languageType.model' -import { ApplicationFieldDto } from '../../../fields/models/dto/applicationField.dto' - -export class ApplicationScreenDto { - @ApiProperty() - id!: string - - @ApiProperty() - sectionId!: string - - @ApiProperty({ type: LanguageType }) - name!: LanguageType - - @ApiProperty() - displayOrder!: number - - @ApiProperty() - multiset!: number - - @ApiProperty() - callRuleset!: boolean - - @ApiProperty({ type: [ApplicationFieldDto] }) - fields!: ApplicationFieldDto[] -} diff --git a/apps/services/form-system/src/app/modules/screens/models/dto/screen.dto.ts b/apps/services/form-system/src/app/modules/screens/models/dto/screen.dto.ts index a090a77e71e9..6e68089c6766 100644 --- a/apps/services/form-system/src/app/modules/screens/models/dto/screen.dto.ts +++ b/apps/services/form-system/src/app/modules/screens/models/dto/screen.dto.ts @@ -1,5 +1,6 @@ -import { ApiProperty } from '@nestjs/swagger' +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { LanguageType } from '../../../../dataTypes/languageType.model' +import { FieldDto } from '../../../fields/models/dto/field.dto' export class ScreenDto { @ApiProperty() @@ -14,9 +15,15 @@ export class ScreenDto { @ApiProperty() displayOrder!: number + @ApiProperty() + isHidden!: boolean + @ApiProperty() multiset!: number @ApiProperty() callRuleset!: boolean + + @ApiPropertyOptional({ type: [FieldDto] }) + fields?: FieldDto[] } diff --git a/apps/services/form-system/src/app/modules/screens/models/screen.model.ts b/apps/services/form-system/src/app/modules/screens/models/screen.model.ts index 57ab5448b69e..df1063641b19 100644 --- a/apps/services/form-system/src/app/modules/screens/models/screen.model.ts +++ b/apps/services/form-system/src/app/modules/screens/models/screen.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty } from '@nestjs/swagger' import { Column, CreatedAt, @@ -22,7 +21,6 @@ export class Screen extends Model<Screen> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @Column({ @@ -30,15 +28,12 @@ export class Screen extends Model<Screen> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -46,7 +41,6 @@ export class Screen extends Model<Screen> { allowNull: false, defaultValue: 0, }) - @ApiProperty() displayOrder!: number @Column({ @@ -54,7 +48,6 @@ export class Screen extends Model<Screen> { allowNull: false, defaultValue: false, }) - @ApiProperty() isHidden!: boolean @Column({ @@ -62,7 +55,6 @@ export class Screen extends Model<Screen> { allowNull: false, defaultValue: 0, }) - @ApiProperty() multiset!: number @Column({ @@ -70,11 +62,9 @@ export class Screen extends Model<Screen> { allowNull: false, defaultValue: false, }) - @ApiProperty() callRuleset!: boolean @HasMany(() => Field) - @ApiProperty({ type: [Field] }) fields?: Field[] @ForeignKey(() => Section) diff --git a/apps/services/form-system/src/app/modules/screens/screens.controller.ts b/apps/services/form-system/src/app/modules/screens/screens.controller.ts index ce6c10df0007..b82bfd13c0fd 100644 --- a/apps/services/form-system/src/app/modules/screens/screens.controller.ts +++ b/apps/services/form-system/src/app/modules/screens/screens.controller.ts @@ -1,17 +1,14 @@ import { Controller, Post, - Get, Delete, Body, Param, - NotFoundException, Put, VERSION_NEUTRAL, } from '@nestjs/common' import { ScreensService } from './screens.service' import { CreateScreenDto } from './models/dto/createScreen.dto' -import { Screen } from './models/screen.model' import { Documentation } from '@island.is/nest/swagger' import { ApiTags } from '@nestjs/swagger' import { UpdateScreenDto } from './models/dto/updateScreen.dto' @@ -24,33 +21,10 @@ export class ScreensController { constructor(private readonly screensService: ScreensService) {} @Post() - create(@Body() createScreenDto: CreateScreenDto): Promise<Screen> { + create(@Body() createScreenDto: CreateScreenDto): Promise<ScreenDto> { return this.screensService.create(createScreenDto) } - @Get() - @Documentation({ - description: 'Get all Screens', - response: { status: 200, type: [Screen] }, - }) - async findAll(): Promise<Screen[]> { - return await this.screensService.findAll() - } - - @Get(':id') - @Documentation({ - description: 'Get Screen by id', - response: { status: 200, type: Screen }, - }) - async findOne(@Param('id') id: string): Promise<Screen> { - const screen = await this.screensService.findOne(id) - if (!screen) { - throw new NotFoundException(`Screen not found`) - } - - return screen - } - @Put(':id') async update( @Param('id') id: string, diff --git a/apps/services/form-system/src/app/modules/screens/screens.service.ts b/apps/services/form-system/src/app/modules/screens/screens.service.ts index 68790516447b..023983b688d6 100644 --- a/apps/services/form-system/src/app/modules/screens/screens.service.ts +++ b/apps/services/form-system/src/app/modules/screens/screens.service.ts @@ -1,11 +1,13 @@ import { Injectable, NotFoundException } from '@nestjs/common' import { Screen } from './models/screen.model' import { InjectModel } from '@nestjs/sequelize' -import { Field } from '../fields/models/field.model' import { CreateScreenDto } from './models/dto/createScreen.dto' import { UpdateScreenDto } from './models/dto/updateScreen.dto' import { ScreenDto } from './models/dto/screen.dto' import { UpdateScreensDisplayOrderDto } from './models/dto/updateScreensDisplayOrder.dto' +import defaults from 'lodash/defaults' +import pick from 'lodash/pick' +import zipObject from 'lodash/zipObject' @Injectable() export class ScreensService { @@ -14,31 +16,29 @@ export class ScreensService { private readonly screenModel: typeof Screen, ) {} - async findAll(): Promise<Screen[]> { - return await this.screenModel.findAll() - } - - async findOne(id: string): Promise<Screen> { - const screen = await this.screenModel.findByPk(id, { include: [Field] }) - - if (!screen) { - throw new NotFoundException(`Screen with id '${id}' not found`) - } - - return screen - } - - async create(createScreenDto: CreateScreenDto): Promise<Screen> { + async create(createScreenDto: CreateScreenDto): Promise<ScreenDto> { const screen = createScreenDto as Screen const newScreen: Screen = new this.screenModel(screen) - return await newScreen.save() + await newScreen.save() + + const keys = ['id', 'sectionId'] + const screenDto: ScreenDto = defaults( + pick(newScreen, keys), + zipObject(keys, Array(keys.length).fill(null)), + ) as ScreenDto + + return screenDto } async update( id: string, updateScreenDto: UpdateScreenDto, ): Promise<ScreenDto> { - const screen = await this.findOne(id) + const screen = await this.screenModel.findByPk(id) + + if (!screen) { + throw new NotFoundException(`Screen with id '${id}' not found`) + } screen.name = updateScreenDto.name screen.multiset = updateScreenDto.multiset @@ -47,14 +47,19 @@ export class ScreensService { await screen.save() - const screenDto: ScreenDto = { - id: screen.id, - sectionId: screen.sectionId, - name: screen.name, - displayOrder: screen.displayOrder, - multiset: screen.multiset, - callRuleset: screen.callRuleset, - } + const keys = [ + 'id', + 'sectionId', + 'name', + 'displayOrder', + 'isHidden', + 'multiset', + 'callRuleset', + ] + const screenDto: ScreenDto = defaults( + pick(screen, keys), + zipObject(keys, Array(keys.length).fill(null)), + ) as ScreenDto return screenDto } @@ -84,7 +89,12 @@ export class ScreensService { } async delete(id: string): Promise<void> { - const screen = await this.findOne(id) - screen?.destroy() + const screen = await this.screenModel.findByPk(id) + + if (!screen) { + throw new NotFoundException(`Screen with id '${id}' not found`) + } + + screen.destroy() } } diff --git a/apps/services/form-system/src/app/modules/sections/models/dto/applicationSection.dto.ts b/apps/services/form-system/src/app/modules/sections/models/dto/applicationSection.dto.ts deleted file mode 100644 index 0e22ed5385ae..000000000000 --- a/apps/services/form-system/src/app/modules/sections/models/dto/applicationSection.dto.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' -import { LanguageType } from '../../../../dataTypes/languageType.model' -import { ApplicationScreenDto } from '../../../screens/models/dto/applicationScreen.dto' -import { SectionTypes } from '../../../../enums/sectionTypes' - -export class ApplicationSectionDto { - @ApiProperty() - id!: string - - @ApiProperty({ type: LanguageType }) - name!: LanguageType - - @ApiProperty({ enum: SectionTypes }) - sectionType!: string - - @ApiProperty() - displayOrder!: number - - @ApiPropertyOptional({ type: LanguageType }) - waitingText?: LanguageType - - @ApiProperty({ type: [ApplicationScreenDto] }) - screens!: ApplicationScreenDto[] -} diff --git a/apps/services/form-system/src/app/modules/sections/models/dto/section.dto.ts b/apps/services/form-system/src/app/modules/sections/models/dto/section.dto.ts index 7dbcc5753ae4..833366fa7867 100644 --- a/apps/services/form-system/src/app/modules/sections/models/dto/section.dto.ts +++ b/apps/services/form-system/src/app/modules/sections/models/dto/section.dto.ts @@ -1,6 +1,7 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { LanguageType } from '../../../../dataTypes/languageType.model' import { SectionTypes } from '../../../../enums/sectionTypes' +import { ScreenDto } from '../../../screens/models/dto/screen.dto' export class SectionDto { @ApiProperty() @@ -17,4 +18,13 @@ export class SectionDto { @ApiPropertyOptional({ type: LanguageType }) waitingText?: LanguageType + + @ApiProperty() + isHidden!: boolean + + @ApiProperty() + isCompleted!: boolean + + @ApiPropertyOptional({ type: [ScreenDto] }) + screens?: ScreenDto[] } diff --git a/apps/services/form-system/src/app/modules/sections/models/section.model.ts b/apps/services/form-system/src/app/modules/sections/models/section.model.ts index e89e4eeceb6a..4a3e4ed881df 100644 --- a/apps/services/form-system/src/app/modules/sections/models/section.model.ts +++ b/apps/services/form-system/src/app/modules/sections/models/section.model.ts @@ -1,4 +1,3 @@ -import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { CreationOptional, DataTypes } from 'sequelize' import { Column, @@ -23,7 +22,6 @@ export class Section extends Model<Section> { primaryKey: true, defaultValue: DataType.UUIDV4, }) - @ApiProperty() id!: string @Column({ @@ -31,15 +29,12 @@ export class Section extends Model<Section> { allowNull: false, defaultValue: () => new LanguageType(), }) - @ApiProperty({ type: LanguageType }) name!: LanguageType @CreatedAt - @ApiProperty({ type: Date }) created!: CreationOptional<Date> @UpdatedAt - @ApiProperty({ type: Date }) modified!: CreationOptional<Date> @Column({ @@ -48,7 +43,6 @@ export class Section extends Model<Section> { values: Object.values(SectionTypes), defaultValue: 'input', }) - @ApiProperty({ enum: SectionTypes }) sectionType!: string @Column({ @@ -56,7 +50,6 @@ export class Section extends Model<Section> { allowNull: false, defaultValue: 0, }) - @ApiProperty() displayOrder!: number @Column({ @@ -64,7 +57,6 @@ export class Section extends Model<Section> { allowNull: true, defaultValue: () => new LanguageType(), }) - @ApiPropertyOptional({ type: LanguageType }) waitingText?: LanguageType @Column({ @@ -72,7 +64,6 @@ export class Section extends Model<Section> { allowNull: false, defaultValue: false, }) - @ApiProperty() isHidden!: boolean @Column({ @@ -80,11 +71,9 @@ export class Section extends Model<Section> { allowNull: false, defaultValue: false, }) - @ApiProperty() isCompleted!: boolean @HasMany(() => Screen) - @ApiPropertyOptional({ type: [Screen] }) screens?: Screen[] @ForeignKey(() => Form) diff --git a/apps/services/form-system/src/app/modules/sections/sections.controller.ts b/apps/services/form-system/src/app/modules/sections/sections.controller.ts index 718f58c095d3..3df67e0b0f5a 100644 --- a/apps/services/form-system/src/app/modules/sections/sections.controller.ts +++ b/apps/services/form-system/src/app/modules/sections/sections.controller.ts @@ -2,16 +2,13 @@ import { Body, Controller, Post, - Get, Delete, Param, - NotFoundException, Put, VERSION_NEUTRAL, } from '@nestjs/common' import { SectionsService } from './sections.service' import { CreateSectionDto } from './models/dto/createSection.dto' -import { Section } from './models/section.model' import { Documentation } from '@island.is/nest/swagger' import { ApiTags } from '@nestjs/swagger' import { UpdateSectionDto } from './models/dto/updateSection.dto' @@ -24,33 +21,10 @@ export class SectionsController { constructor(private readonly sectionsService: SectionsService) {} @Post() - create(@Body() createSectionDto: CreateSectionDto): Promise<Section> { + create(@Body() createSectionDto: CreateSectionDto): Promise<SectionDto> { return this.sectionsService.create(createSectionDto) } - @Get() - @Documentation({ - description: 'Get all Sections', - response: { status: 200, type: [Section] }, - }) - async findAll(): Promise<Section[]> { - return await this.sectionsService.findAll() - } - - @Get(':id') - @Documentation({ - description: 'Get Section by id', - response: { status: 200, type: Section }, - }) - async findOne(@Param('id') id: string): Promise<Section> { - const section = await this.sectionsService.findOne(id) - if (!section) { - throw new NotFoundException(`Section not found`) - } - - return section - } - @Delete(':id') async delete(@Param('id') id: string): Promise<void> { return this.sectionsService.delete(id) diff --git a/apps/services/form-system/src/app/modules/sections/sections.service.ts b/apps/services/form-system/src/app/modules/sections/sections.service.ts index f0ef20c95e26..1f6ba5e0e447 100644 --- a/apps/services/form-system/src/app/modules/sections/sections.service.ts +++ b/apps/services/form-system/src/app/modules/sections/sections.service.ts @@ -2,11 +2,12 @@ import { Injectable, NotFoundException } from '@nestjs/common' import { InjectModel } from '@nestjs/sequelize' import { Section } from './models/section.model' import { CreateSectionDto } from './models/dto/createSection.dto' -import { Screen } from '../screens/models/screen.model' -import { Field } from '../fields/models/field.model' import { UpdateSectionDto } from './models/dto/updateSection.dto' import { SectionDto } from './models/dto/section.dto' import { UpdateSectionsDisplayOrderDto } from './models/dto/updateSectionsDisplayOrder.dto' +import defaults from 'lodash/defaults' +import pick from 'lodash/pick' +import zipObject from 'lodash/zipObject' @Injectable() export class SectionsService { @@ -15,39 +16,29 @@ export class SectionsService { private readonly sectionModel: typeof Section, ) {} - async findAll(): Promise<Section[]> { - return await this.sectionModel.findAll() - } - - async findOne(id: string): Promise<Section> { - const section = await this.sectionModel.findByPk(id, { - include: [ - { - model: Screen, - as: 'screens', - include: [{ model: Field, as: 'fields' }], - }, - ], - }) - - if (!section) { - throw new NotFoundException(`Section with id '${id}' not found`) - } - - return section - } - - async create(createSectionDto: CreateSectionDto): Promise<Section> { + async create(createSectionDto: CreateSectionDto): Promise<SectionDto> { const section = createSectionDto as Section const newSection: Section = new this.sectionModel(section) - return await newSection.save() + await newSection.save() + + const keys = ['id', 'formId'] + const sectionDto: SectionDto = defaults( + pick(newSection, keys), + zipObject(keys, Array(keys.length).fill(null)), + ) as SectionDto + + return sectionDto } async update( id: string, updateSectionDto: UpdateSectionDto, ): Promise<SectionDto> { - const section = await this.findOne(id) + const section = await this.sectionModel.findByPk(id) + + if (!section) { + throw new NotFoundException(`Section with id '${id}' not found`) + } section.name = updateSectionDto.name section.waitingText = updateSectionDto.waitingText @@ -55,13 +46,11 @@ export class SectionsService { await section.save() - const sectionDto: SectionDto = { - id: section.id, - name: section.name, - sectionType: section.sectionType, - displayOrder: section.displayOrder, - waitingText: section.waitingText, - } + const keys = ['id', 'name', 'sectionType', 'displayOrder', 'waitingText'] + const sectionDto: SectionDto = defaults( + pick(section, keys), + zipObject(keys, Array(keys.length).fill(null)), + ) as SectionDto return sectionDto } @@ -90,7 +79,12 @@ export class SectionsService { } async delete(id: string): Promise<void> { - const section = await this.findOne(id) - section?.destroy() + const section = await this.sectionModel.findByPk(id) + + if (!section) { + throw new NotFoundException(`Section with id '${id}' not found`) + } + + section.destroy() } } diff --git a/apps/services/license-api/esbuild.json b/apps/services/license-api/esbuild.json index 58d3a0f3bafc..3f701300006e 100644 --- a/apps/services/license-api/esbuild.json +++ b/apps/services/license-api/esbuild.json @@ -40,6 +40,8 @@ "lru-cache", "safer-buffer", "swagger-ui-dist", + "pdfkit", + "get-stream", "@mikro-orm/core" ], "keepNames": true diff --git a/apps/services/license-api/infra/license-api.ts b/apps/services/license-api/infra/license-api.ts index beed0f9cc795..1b5d32886203 100644 --- a/apps/services/license-api/infra/license-api.ts +++ b/apps/services/license-api/infra/license-api.ts @@ -13,7 +13,7 @@ export const serviceSetup = (): ServiceBuilder<'license-api'> => .namespace('license-api') .resources({ limits: { cpu: '400m', memory: '512Mi' }, - requests: { cpu: '15m', memory: '256Mi' }, + requests: { cpu: '50m', memory: '256Mi' }, }) .env({ IDENTITY_SERVER_ISSUER_URL: { @@ -78,13 +78,6 @@ export const serviceSetup = (): ServiceBuilder<'license-api'> => }, paths: ['/'], public: false, - extraAnnotations: { - dev: {}, - staging: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', - }, - prod: {}, - }, }, }) .replicaCount({ diff --git a/apps/services/regulations-admin-backend/infra/regulations-admin-backend.ts b/apps/services/regulations-admin-backend/infra/regulations-admin-backend.ts index 5dbc4a161be7..1af574773a05 100644 --- a/apps/services/regulations-admin-backend/infra/regulations-admin-backend.ts +++ b/apps/services/regulations-admin-backend/infra/regulations-admin-backend.ts @@ -1,5 +1,9 @@ import { service, ServiceBuilder } from '../../../../infra/src/dsl/dsl' -import { Base, Client, NationalRegistry } from '../../../../infra/src/dsl/xroad' +import { + Base, + Client, + NationalRegistryB2C, +} from '../../../../infra/src/dsl/xroad' export const serviceSetup = (): ServiceBuilder<'regulations-admin-backend'> => service('regulations-admin-backend') @@ -25,12 +29,14 @@ export const serviceSetup = (): ServiceBuilder<'regulations-admin-backend'> => '/k8s/api/REGULATIONS_FILE_UPLOAD_KEY_PUBLISH', REGULATIONS_FILE_UPLOAD_KEY_PRESIGNED: '/k8s/api/REGULATIONS_FILE_UPLOAD_KEY_PRESIGNED', + NATIONAL_REGISTRY_B2C_CLIENT_SECRET: + '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET', }) .resources({ limits: { cpu: '400m', memory: '512Mi' }, requests: { cpu: '100m', memory: '256Mi' }, }) - .xroad(Base, Client, NationalRegistry) + .xroad(Base, Client, NationalRegistryB2C) .readiness('/liveness') .liveness('/liveness') .grantNamespaces('islandis', 'download-service') diff --git a/apps/services/regulations-admin-backend/src/app/app.module.ts b/apps/services/regulations-admin-backend/src/app/app.module.ts index 9b3091ce8be0..bd954e9eb794 100644 --- a/apps/services/regulations-admin-backend/src/app/app.module.ts +++ b/apps/services/regulations-admin-backend/src/app/app.module.ts @@ -9,7 +9,7 @@ import { AuthModule } from '@island.is/auth-nest-tools' import { AuditModule } from '@island.is/nest/audit' import { environment } from '../environments' -import { NationalRegistryClientConfig } from '@island.is/clients/national-registry-v2' +import { NationalRegistryV3ClientConfig } from '@island.is/clients/national-registry-v3' import { RegulationsClientConfig } from '@island.is/clients/regulations' import { DraftRegulationModule } from './modules/draft_regulation' import { DraftRegulationChangeModule } from './modules/draft_regulation_change' @@ -31,7 +31,7 @@ import { SequelizeConfigService } from './sequelizeConfig.service' load: [ RegulationsClientConfig, XRoadConfig, - NationalRegistryClientConfig, + NationalRegistryV3ClientConfig, IdsClientConfig, ], }), diff --git a/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/draft_regulation.module.ts b/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/draft_regulation.module.ts index 775dbc200d59..841cc4acac67 100644 --- a/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/draft_regulation.module.ts +++ b/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/draft_regulation.module.ts @@ -7,7 +7,7 @@ import { DraftRegulationModel } from './draft_regulation.model' import { DraftRegulationChangeModule } from '../draft_regulation_change' import { DraftRegulationCancelModule } from '../draft_regulation_cancel' import { RegulationsService } from '@island.is/clients/regulations' -import { NationalRegistryClientModule } from '@island.is/clients/national-registry-v2' +import { NationalRegistryV3ClientModule } from '@island.is/clients/national-registry-v3' import { DraftAuthorModule } from '../draft_author' @Module({ @@ -16,7 +16,7 @@ import { DraftAuthorModule } from '../draft_author' DraftAuthorModule, DraftRegulationChangeModule, DraftRegulationCancelModule, - NationalRegistryClientModule, + NationalRegistryV3ClientModule, ], providers: [DraftRegulationService, RegulationsService], controllers: [DraftRegulationController], diff --git a/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/draft_regulation.service.ts b/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/draft_regulation.service.ts index a92b649e388f..9dcf78778172 100644 --- a/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/draft_regulation.service.ts +++ b/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/draft_regulation.service.ts @@ -28,9 +28,9 @@ import { ShippedSummary, TaskListType, } from '@island.is/regulations/admin' -import { Kennitala, RegQueryName } from '@island.is/regulations' +import { Kennitala, MinistrySlug, RegQueryName } from '@island.is/regulations' import * as kennitala from 'kennitala' -import { NationalRegistryClientService } from '@island.is/clients/national-registry-v2' +import { NationalRegistryV3ClientService } from '@island.is/clients/national-registry-v3' import type { User } from '@island.is/auth-nest-tools' const sortImpacts = ( @@ -54,7 +54,7 @@ export class DraftRegulationService { private readonly regulationsService: RegulationsService, @Inject(LOGGER_PROVIDER) private readonly logger: Logger, - private readonly nationalRegistryApi: NationalRegistryClientService, + private readonly nationalRegistryApi: NationalRegistryV3ClientService, ) {} async getAll(user?: User, page = 1): Promise<TaskListType> { @@ -255,13 +255,20 @@ export class DraftRegulationService { ): Promise<DraftRegulationModel> { this.logger.debug('Creating a new DraftRegulation') + // If user is in delegation, use actor. Else use user. + let creatorNationalId = user?.nationalId + if (user?.actor) { + creatorNationalId = user.actor.nationalId + // If the user is in delegation from a valid ministry, add ministry to create? + } + const createData: Partial<DraftRegulationModel> = { drafting_status: 'draft', title: '', text: '', drafting_notes: '', type: create.type, - authors: [user?.nationalId as Kennitala], + authors: [creatorNationalId as Kennitala], } return this.draftRegulationModel.create(createData) @@ -337,12 +344,14 @@ export class DraftRegulationService { if (!author) { try { - const person = await this.nationalRegistryApi.getIndividual( + const person = await this.nationalRegistryApi.getAllDataIndividual( nationalId, + false, ) - if (person?.name) { + + if (person?.nafn) { author = { - name: person.name, + name: person.nafn, authorId: nationalId, } await this.draftAuthorService.create(author) diff --git a/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/models/appendix.model.ts b/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/models/appendix.model.ts index 4cace51397c8..12fbbd5f8dcc 100644 --- a/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/models/appendix.model.ts +++ b/apps/services/regulations-admin-backend/src/app/modules/draft_regulation/models/appendix.model.ts @@ -1,4 +1,4 @@ -import { ApiProperty } from '@nestjs/swagger' +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { HTMLText, PlainText } from '@island.is/regulations' export class AppendixModel { @@ -7,4 +7,7 @@ export class AppendixModel { @ApiProperty() text!: HTMLText + + @ApiPropertyOptional() + diff?: HTMLText } diff --git a/apps/services/regulations-admin-backend/src/main.ts b/apps/services/regulations-admin-backend/src/main.ts index 8d3c254eaaff..9be0492bcc5c 100644 --- a/apps/services/regulations-admin-backend/src/main.ts +++ b/apps/services/regulations-admin-backend/src/main.ts @@ -7,4 +7,5 @@ bootstrap({ appModule: AppModule, name: 'regulations-admin-backend', openApi, + jsonBodyLimit: '400kb', }) diff --git a/apps/services/search-indexer/bin/generate-es-config.sh b/apps/services/search-indexer/bin/generate-es-config.sh index dd9ebe9d0a63..fa3c86eb0649 100755 --- a/apps/services/search-indexer/bin/generate-es-config.sh +++ b/apps/services/search-indexer/bin/generate-es-config.sh @@ -1,60 +1,60 @@ #!/usr/bin/env bash APP="$0" -APPDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +APPDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" usage() { - echo "Usage: $APP language type [ > template.js ]" - echo -e "\tlanguage: is|en|..." - echo -e "\ttype: slim|full" + echo "Usage: $APP language type [ > template.js ]" + echo -e "\tlanguage: is|en|..." + echo -e "\ttype: slim|full" } if [ "$1" == "" ]; then - echo "Error: missing language" - usage - exit 1 + echo "Error: missing language" + usage + exit 1 fi if [[ "$2" != "slim" ]] && [[ "$2" != "full" ]]; then - echo "Error: wrong type: $2" - usage - exit 1 + echo "Error: wrong type: $2" + usage + exit 1 fi TEMPLATE="$APPDIR/../config/template-is.json" if [ ! -f "$TEMPLATE" ]; then - echo "Error: could not find template file: '$TEMPLATE'" - exit 1 + echo "Error: could not find template file: '$TEMPLATE'" + exit 1 fi JQ="$(which jq)" if [ ! -x "$JQ" ]; then - echo "Error: could not find 'jq'. Please install" - exit 1 + echo "Error: could not find 'jq'. Please install" + exit 1 fi replace_slim() { - sed -E 's@"rules_path":.*?(,?\s*)$@"rules": []\1@' | \ - sed -E 's@"stopwords_path":.*?(,?\s*)$@"stopwords": []\1@' | \ - sed -E 's@"keywords_path":.*?(,?\s*)$@"keywords": []\1@' | \ - sed -E 's@"synonyms_path":.*?(,?\s*)$@"synonyms": []\1@' + sed -E 's@"rules_path":.*?(,?\s*)$@"rules": []\1@' | + sed -E 's@"stopwords_path":.*?(,?\s*)$@"stopwords": []\1@' | + sed -E 's@"keywords_path":.*?(,?\s*)$@"keywords": []\1@' | + sed -E 's@"synonyms_path":.*?(,?\s*)$@"synonyms": []\1@' } replace_full() { - sed -E 's@"rules_path":.*?(,?\s*)$@"rules_path": "analysis/stemmer.txt"\1@' | \ - sed -E 's@"stopwords_path":.*?(,?\s*)$@"stopwords_path": "analysis/stopwords.txt"\1@' | \ - sed -E 's@"keywords_path":.*?(,?\s*)$@"keywords_path": "analysis/keywords.txt"\1@' | \ - sed -E 's@"synonyms_path":.*?(,?\s*)$@"synonyms_path": "analysis/synonyms.txt"\1@' + sed -E 's@"rules_path":.*?(,?\s*)$@"rules_path": "analysis/stemmer.txt"\1@' | + sed -E 's@"stopwords_path":.*?(,?\s*)$@"stopwords_path": "analysis/stopwords.txt"\1@' | + sed -E 's@"keywords_path":.*?(,?\s*)$@"keywords_path": "analysis/keywords.txt"\1@' | + sed -E 's@"synonyms_path":.*?(,?\s*)$@"synonyms_path": "analysis/synonyms.txt"\1@' } main() { - # local lang="$1" - local type="$2" - local func="replace_$type" + # local lang="$1" + local type="$2" + local func="replace_$type" - jq '.settings, .mappings' < "$TEMPLATE" | $func + jq '.settings, .mappings' <"$TEMPLATE" | $func } -main "$1" "$2" \ No newline at end of file +main "$1" "$2" diff --git a/apps/services/search-indexer/infra/search-indexer-service.ts b/apps/services/search-indexer/infra/search-indexer-service.ts index d0c6bf7ba782..521c9afa4475 100644 --- a/apps/services/search-indexer/infra/search-indexer-service.ts +++ b/apps/services/search-indexer/infra/search-indexer-service.ts @@ -17,7 +17,7 @@ const envs = { prod: 'cdn.contentful.com', }, CONTENTFUL_ENTRY_FETCH_CHUNK_SIZE: { - dev: '20', + dev: '40', staging: '40', prod: '40', }, @@ -127,7 +127,7 @@ export const serviceSetup = (): ServiceBuilder<'search-indexer-service'> => staging: { 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', }, - prod: { 'nginx.ingress.kubernetes.io/enable-global-auth': 'false' }, + prod: {}, }, }, }) diff --git a/apps/services/search-indexer/jest.config.ts b/apps/services/search-indexer/jest.config.ts index cd7a91c1b695..71cec79e0b7e 100644 --- a/apps/services/search-indexer/jest.config.ts +++ b/apps/services/search-indexer/jest.config.ts @@ -5,8 +5,6 @@ export default { roots: [__dirname], coverageDirectory: '<rootDir>/coverage/apps/services/search-indexer', globals: {}, - globalSetup: `${__dirname}/test/globalSetup.ts`, - globalTeardown: `${__dirname}/test/globalTeardown.ts`, displayName: 'services-search-indexer', testEnvironment: 'node', transform: { diff --git a/apps/services/search-indexer/src/environments/environment.ts b/apps/services/search-indexer/src/environments/environment.ts index 0a2546c648c7..e67090b93702 100644 --- a/apps/services/search-indexer/src/environments/environment.ts +++ b/apps/services/search-indexer/src/environments/environment.ts @@ -6,6 +6,7 @@ export interface Environment { esDomain: string s3Bucket: string s3Folder: string + awsRegion: string dictRepo: string locales: ElasticsearchIndexLocale[] configPath: string @@ -16,6 +17,7 @@ export const environment: Environment = ? { elasticNode: process.env.ELASTIC_NODE, s3Bucket: process.env.S3_BUCKET, + awsRegion: process.env.AWS_REGION, esDomain: process.env.ELASTIC_DOMAIN, dictRepo: 'island-is/elasticsearch-dictionaries', s3Folder: '', @@ -25,6 +27,7 @@ export const environment: Environment = : { elasticNode: process.env.ELASTIC_NODE || '', s3Bucket: process.env.S3_BUCKET, + awsRegion: process.env.AWS_REGION, esDomain: process.env.ELASTIC_DOMAIN, s3Folder: '', dictRepo: 'island-is/elasticsearch-dictionaries', diff --git a/apps/services/search-indexer/src/migrate/lib/aws.spec.ts b/apps/services/search-indexer/src/migrate/lib/aws.spec.ts deleted file mode 100644 index f58a4a3bb249..000000000000 --- a/apps/services/search-indexer/src/migrate/lib/aws.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Readable } from 'stream' -import { streamToBuffer } from './aws' // Assuming the function is exported from aws.ts - -describe('streamToBuffer', () => { - it('should correctly convert NodeJS.ReadableStream to Buffer', async () => { - const testData = 'Hello, World!' - const stream = Readable.from(Buffer.from(testData)) - - const result = await streamToBuffer(stream) - expect(result).toBeInstanceOf(Buffer) - expect(result.toString()).toBe(testData) - }) - - it('should correctly handle empty NodeJS.ReadableStream', async () => { - const stream = Readable.from([]) - - const result = await streamToBuffer(stream) - expect(result).toBeInstanceOf(Buffer) - expect(result.length).toBe(0) - }) - - it('should correctly handle large NodeJS.ReadableStream', async () => { - const largeData = Buffer.alloc(100 * 1024 * 1024, 'a') // 100MB of 'a' - const stream = Readable.from(largeData) - - const result = await streamToBuffer(stream) - expect(result).toBeInstanceOf(Buffer) - expect(result.length).toBe(largeData.length) - expect(result.toString()).toBe(largeData.toString()) - }) - - it('should handle NodeJS.ReadableStream with multiple chunks', async () => { - const chunks = ['Hello', ' ', 'World', '!'] - const stream = Readable.from(chunks) - - const result = await streamToBuffer(stream) - expect(result).toBeInstanceOf(Buffer) - expect(result.toString()).toBe(chunks.join('')) - }) - - it('should handle NodeJS.ReadableStream in object mode', async () => { - const objects = [{ a: 1 }, { b: 2 }, { c: 3 }] - const stream = Readable.from(objects, { objectMode: true }) - - const result = await streamToBuffer(stream) - expect(result).toBeInstanceOf(Buffer) - const parsedResult = JSON.parse(result.toString()) - expect(parsedResult).toEqual(objects) - }) -}) diff --git a/apps/services/search-indexer/src/migrate/lib/aws.ts b/apps/services/search-indexer/src/migrate/lib/aws.ts index c60dc12fd0bd..784d8a0e7e8b 100644 --- a/apps/services/search-indexer/src/migrate/lib/aws.ts +++ b/apps/services/search-indexer/src/migrate/lib/aws.ts @@ -1,40 +1,14 @@ -import { - S3Client, - PutObjectCommand, - HeadObjectCommand, - PutObjectCommandInput, -} from '@aws-sdk/client-s3' -import { - ElasticsearchServiceClient, - DescribePackagesCommand, - ListPackagesForDomainCommand, - ListDomainNamesCommand, - CreatePackageCommand, - AssociatePackageCommand, - DissociatePackageCommand, - PackageStatus, - DomainPackageStatus, - CreatePackageCommandInput, -} from '@aws-sdk/client-elasticsearch-service' +import AWS from 'aws-sdk' +import { PutObjectRequest } from 'aws-sdk/clients/s3' +import { PackageStatus, DomainPackageStatus } from 'aws-sdk/clients/es' import { ElasticsearchIndexLocale } from '@island.is/content-search-index-manager' import { logger } from '@island.is/logging' import { environment } from '../../environments/environment' import { Dictionary } from './dictionary' -import { Readable } from 'stream' - -const ES_LOCALSTACK_ENDPOINT = - process.env.ES_ENDPOINT ?? 'http://localhost:4566' -const S3_LOCALSTACK_ENDPOINT = - process.env.S3_ENDPOINT ?? 'http://localhost:4566' - -const awsEs = new ElasticsearchServiceClient({ - endpoint: - process.env.NODE_ENV !== 'production' ? ES_LOCALSTACK_ENDPOINT : undefined, -}) -const s3 = new S3Client({ - endpoint: - process.env.NODE_ENV !== 'production' ? S3_LOCALSTACK_ENDPOINT : undefined, -}) + +AWS.config.update({ region: environment.awsRegion }) +const awsEs = new AWS.ES() +const s3 = new AWS.S3() const sleep = (sec: number) => { return new Promise((resolve) => { @@ -69,65 +43,66 @@ interface PackageStatuses { const getPackageStatuses = async ( packageId: string, ): Promise<PackageStatuses> => { - const describePackagesCommand = new DescribePackagesCommand({ + const params = { Filters: [ { Name: 'PackageID', Value: [packageId], }, ], - }) - const packages = await awsEs.send(describePackagesCommand) + } + const packages = await awsEs.describePackages(params).promise() - const listPackagesForDomainCommand = new ListPackagesForDomainCommand({ - DomainName: environment.esDomain, - }) - const domainPackageList = await awsEs.send(listPackagesForDomainCommand) + const domainPackageList = await awsEs + .listPackagesForDomain({ + DomainName: environment.esDomain, + }) + .promise() - const domainPackage = domainPackageList.DomainPackageDetailsList?.find( + const domainPackage = domainPackageList.DomainPackageDetailsList.find( (listItem) => listItem.PackageID === packageId, ) return { - packageStatus: packages.PackageDetailsList?.[0] - .PackageStatus as PackageStatus, - domainStatus: - domainPackage?.DomainPackageStatus ?? DomainPackageStatus.DISSOCIATING, + packageStatus: packages.PackageDetailsList[0].PackageStatus, + domainStatus: domainPackage?.DomainPackageStatus ?? 'DISSOCIATED', } } export const getAssociatedEsPackages = async ( requestedVersion: string, ): Promise<AwsEsPackage[]> => { - const listPackagesForDomainCommand = new ListPackagesForDomainCommand({ - DomainName: environment.esDomain, - }) - const domainPackageList = await awsEs.send(listPackagesForDomainCommand) + const domainPackageList = await awsEs + .listPackagesForDomain({ + DomainName: environment.esDomain, + }) + .promise() return ( - domainPackageList.DomainPackageDetailsList?.filter((esPackage) => { - const { version, locale, analyzerType } = parsePackageName( - esPackage.PackageName ?? '', - ) - logger.info('Found associated package for domain', { - version, - locale, - analyzerType, - requestedVersion, - willBeUsed: requestedVersion === version, + domainPackageList.DomainPackageDetailsList + // we only want to return packages for current version + .filter((esPackage) => { + const { version, locale, analyzerType } = parsePackageName( + esPackage.PackageName, + ) + logger.info('Found associated package for domain', { + version, + locale, + analyzerType, + requestedVersion, + willBeUsed: requestedVersion === version, + }) + return requestedVersion === version + }) + .map((esPackage) => { + const { locale, analyzerType } = parsePackageName(esPackage.PackageName) + return { + packageName: esPackage.PackageName, + packageId: esPackage.PackageID, + locale: locale as ElasticsearchIndexLocale, + analyzerType, + } }) - return requestedVersion === version - }).map((esPackage) => { - const { locale, analyzerType } = parsePackageName( - esPackage.PackageName ?? '', - ) - return { - packageName: esPackage.PackageName, - packageId: esPackage.PackageID, - locale: locale as ElasticsearchIndexLocale, - analyzerType, - } - }) ?? [] ) } @@ -176,18 +151,18 @@ export const checkAWSAccess = async (): Promise<boolean> => { return false } - const listDomainNamesCommand = new ListDomainNamesCommand({}) const domains = await awsEs - .send(listDomainNamesCommand) - .then((response) => response.DomainNames) + .listDomainNames() + .promise() + .then((domains) => domains.DomainNames) .catch((error) => { logger.error('Failed to check aws access', { error }) // return empty list to indicate no access return [] }) - logger.info('Validating esDomain against aws domain list', { domains }) - return !!domains?.find((domain) => domain.DomainName === environment.esDomain) + logger.info('Validating esDomain agains aws domain list', { domains }) + return !!domains.find((domain) => domain.DomainName === environment.esDomain) } interface CreateS3KeyInput { @@ -206,9 +181,7 @@ const createS3Key = ({ return `${environment.s3Folder}${prefix}${filename}.txt` } -const uploadFileToS3 = async ( - options: Omit<PutObjectCommandInput, 'Bucket'>, -) => { +const uploadFileToS3 = (options: Omit<PutObjectRequest, 'Bucket'>) => { const params = { Bucket: environment.s3Bucket, ...options, @@ -217,26 +190,24 @@ const uploadFileToS3 = async ( Bucket: params.Bucket, Key: params.Key, }) - try { - return await s3.send(new PutObjectCommand(params)) - } catch (error) { - logger.error('Failed to upload s3 package', error) - throw error - } + return s3 + .upload(params) + .promise() + .catch((error) => { + logger.error('Failed to upload s3 package', error) + throw error + }) } -const checkIfS3Exists = async (key: string) => { - try { - await s3.send( - new HeadObjectCommand({ - Bucket: environment.s3Bucket, - Key: key, - }), - ) - return true - } catch { - return false - } // we don't want this to throw on error so we can handle if not exists manually +const checkIfS3Exists = (key: string) => { + return s3 + .headObject({ + Bucket: environment.s3Bucket, + Key: key, + }) + .promise() + .then(() => true) + .catch(() => false) // we don't want this to throw on error so we can handle if not exists manually } interface S3DictionaryFile { @@ -244,37 +215,6 @@ interface S3DictionaryFile { analyzerType: string version: string } - -export const streamToBuffer = async ( - file: NodeJS.ReadableStream, -): Promise<Buffer> => { - return new Promise((resolve, reject) => { - if (!(file instanceof Readable)) { - // In case the input is not a Readable stream (shouldn't happen due to typing) - reject(new Error('Input is not a valid Readable stream')) - } - const chunks: Uint8Array[] = [] - file.on('data', (chunk) => chunks.push(chunk)) - file.on('end', () => { - if (chunks.every((chunk) => typeof chunk === 'string')) { - // If all chunks are strings, concatenate them and convert to Buffer - resolve(Buffer.from(chunks.join(''))) - } else if ( - chunks.every( - (chunk) => Buffer.isBuffer(chunk) || chunk instanceof Uint8Array, - ) - ) { - // If all chunks are Buffer or Uint8Array, use Buffer.concat - resolve(Buffer.concat(chunks)) - } else { - // For mixed types or object mode, stringify and convert to Buffer - resolve(Buffer.from(JSON.stringify(chunks))) - } - }) - file.on('error', (err) => reject(err)) - }) -} - export const uploadS3DictionaryFiles = async ( dictionaries: Dictionary[], ): Promise<S3DictionaryFile[]> => { @@ -286,9 +226,7 @@ export const uploadS3DictionaryFiles = async ( const exists = await checkIfS3Exists(s3Key) if (!exists) { logger.info('S3 file not found, uploading file', { key: s3Key }) - - const uploadBody = await streamToBuffer(file) - await uploadFileToS3({ Key: s3Key, Body: uploadBody }) + await uploadFileToS3({ Key: s3Key, Body: file }) } else { logger.info('S3 file found, skipping upload of file', { key: s3Key }) } @@ -306,10 +244,7 @@ export const uploadS3DictionaryFiles = async ( const getAwsEsPackagesDetails = async () => { logger.info('Getting all AWS ES packages') - const describePackagesCommand = new DescribePackagesCommand({ - MaxResults: 100, - }) - const packages = await awsEs.send(describePackagesCommand) + const packages = await awsEs.describePackages({ MaxResults: 100 }).promise() return packages.PackageDetailsList } @@ -319,7 +254,7 @@ const checkIfAwsEsPackageExists = async ( ): Promise<string | null> => { const esPackages = await getAwsEsPackagesDetails() logger.info('Checking if package exists', { packageName }) - const foundPackage = esPackages?.find( + const foundPackage = esPackages.find( (esPackage) => esPackage.PackageName === packageName, ) return foundPackage?.PackageID ?? null @@ -327,7 +262,7 @@ const checkIfAwsEsPackageExists = async ( /* createAwsEsPackages should only run when we are updating, we can therefore assume no assigned packages exist in AWS ES for this version -We run a remove packages for this version function to handle failed partial updates that might not have associated the package to the domain +We run a remove packages for this version function to handle failed partial updates that might not have associated the package to the domain */ export interface AwsEsPackage { packageName?: string @@ -343,10 +278,10 @@ export const createAwsEsPackages = async ( const { analyzerType, locale, version } = uploadedFile const packageName = createPackageName(locale, analyzerType, version) const foundPackageId = await checkIfAwsEsPackageExists(packageName) - let uploadedPackageId: string + let uploadedPackageId if (!foundPackageId) { - const params: CreatePackageCommandInput = { + const params = { PackageName: createPackageName(locale, analyzerType, version), // version is here so we don't conflict with older packages PackageType: 'TXT-DICTIONARY', PackageSource: { @@ -357,17 +292,16 @@ export const createAwsEsPackages = async ( logger.info('Creating AWS ES package', params) - const createPackageCommand = new CreatePackageCommand(params) - const esPackage = await awsEs.send(createPackageCommand) + const esPackage = await awsEs.createPackage(params).promise() // we have to wait for package to be ready cause AWS ES can only process one request at a time await waitForPackageStatus( - esPackage.PackageDetails?.PackageID ?? '', - PackageStatus.AVAILABLE, + esPackage.PackageDetails.PackageID, + 'AVAILABLE', ) logger.info('Created AWS ES package', { esPackage }) - uploadedPackageId = esPackage.PackageDetails?.PackageID + uploadedPackageId = esPackage.PackageDetails.PackageID } else { logger.info('AWS ES package found, skipping upload of package', { packageId: foundPackageId, @@ -385,25 +319,24 @@ export const createAwsEsPackages = async ( } const getDomainPackages = () => { - const listPackagesForDomainCommand = new ListPackagesForDomainCommand({ - DomainName: environment.esDomain, - }) - return awsEs.send(listPackagesForDomainCommand) + return awsEs + .listPackagesForDomain({ + DomainName: environment.esDomain, + }) + .promise() } const getPackageAssociationStatus = async ( - packageId: string, + packageId, ): Promise<'missing' | 'active' | 'broken'> => { const domainPackageList = await getDomainPackages() - const domainPackage = domainPackageList.DomainPackageDetailsList?.find( + const domainPackage = domainPackageList.DomainPackageDetailsList.find( (domainPackageEntry) => domainPackageEntry.PackageID === packageId, ) if (!domainPackage) { return 'missing' } - return domainPackage.DomainPackageStatus === DomainPackageStatus.ACTIVE - ? 'active' - : 'broken' + return domainPackage.DomainPackageStatus === 'ACTIVE' ? 'active' : 'broken' } const dissociatePackageWithAwsEsSearchDomain = async (packageId: string) => { @@ -413,10 +346,8 @@ const dissociatePackageWithAwsEsSearchDomain = async (packageId: string) => { } logger.info('Disassociating package from AWS ES domain', params) - const dissociatePackageCommand = new DissociatePackageCommand(params) - const result = await awsEs.send(dissociatePackageCommand) - // This used to be 'DISSOCIATED', but that was never a valid status 🤷 - await waitForPackageStatus(packageId, DomainPackageStatus.DISSOCIATING) + const result = await awsEs.dissociatePackage(params).promise() + await waitForPackageStatus(packageId, 'DISSOCIATED') return result } @@ -441,13 +372,12 @@ export const associatePackagesWithAwsEsSearchDomain = async ( } logger.info('Associating package with AWS ES domain', params) - const associatePackageCommand = new AssociatePackageCommand(params) - const esPackage = await awsEs.send(associatePackageCommand) + const esPackage = await awsEs.associatePackage(params).promise() // we have to wait for package to be ready cause AWS ES can only process one request at a time await waitForPackageStatus( - esPackage.DomainPackageDetails?.PackageID ?? '', - DomainPackageStatus.ACTIVE, + esPackage.DomainPackageDetails.PackageID, + 'ACTIVE', ) } else { logger.info( diff --git a/apps/services/search-indexer/src/migrate/lib/dictionary.ts b/apps/services/search-indexer/src/migrate/lib/dictionary.ts index 8bcb947f4592..e225c8dcb946 100644 --- a/apps/services/search-indexer/src/migrate/lib/dictionary.ts +++ b/apps/services/search-indexer/src/migrate/lib/dictionary.ts @@ -26,19 +26,20 @@ interface Commit { sha: string } -const getDictionaryFile = async ( +const getDictionaryFile = ( sha: string, locale: ElasticsearchIndexLocale, analyzer: string, -): Promise<NodeJS.ReadableStream> => { - const response = await fetch( +) => { + return fetch( `https://github.com/${environment.dictRepo}/blob/${sha}/${locale}/${analyzer}.txt?raw=true`, - ) - if (response.ok) { - return response.body - } else { - return null - } + ).then((response) => { + if (response.ok) { + return response.body + } else { + return null + } + }) } // get a list of all latest commits for this repo diff --git a/apps/services/search-indexer/test/globalSetup.ts b/apps/services/search-indexer/test/globalSetup.ts deleted file mode 100644 index 289e08508e64..000000000000 --- a/apps/services/search-indexer/test/globalSetup.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { register } from 'tsconfig-paths' - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const tsConfig = require(`../${require('../tsconfig.json').extends}`) -register({ baseUrl: './', paths: tsConfig.compilerOptions.paths }) -import { startLocalstack } from '@island.is/testing/containers' - -export default async () => { - await startLocalstack() -} diff --git a/apps/services/search-indexer/test/globalTeardown.ts b/apps/services/search-indexer/test/globalTeardown.ts deleted file mode 100644 index ae0b950bc15b..000000000000 --- a/apps/services/search-indexer/test/globalTeardown.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { register } from 'tsconfig-paths' - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const tsConfig = require(`../${require('../tsconfig.json').extends}`) -register({ baseUrl: './', paths: tsConfig.compilerOptions.paths }) -import { stopLocalstack } from '@island.is/testing/containers' - -export default async () => { - await stopLocalstack() -} diff --git a/apps/services/sessions/docker-compose.yml b/apps/services/sessions/docker-compose.yml index 141df26f84d0..a897c95ed0d3 100644 --- a/apps/services/sessions/docker-compose.yml +++ b/apps/services/sessions/docker-compose.yml @@ -17,7 +17,7 @@ services: redis_cluster: container_name: redis_cluster - image: docker.io/grokzen/redis-cluster:7.0.0 + image: docker.io/grokzen/redis-cluster:6.0.16 networks: - local privileged: true diff --git a/apps/services/university-gateway/src/app/modules/application/dto/createApplicationDto.ts b/apps/services/university-gateway/src/app/modules/application/dto/createApplicationDto.ts index 72172ce99b76..4ca3440c75b2 100644 --- a/apps/services/university-gateway/src/app/modules/application/dto/createApplicationDto.ts +++ b/apps/services/university-gateway/src/app/modules/application/dto/createApplicationDto.ts @@ -113,10 +113,10 @@ class CreateApplicationFileDto { @IsString() @ApiProperty({ - description: 'Blob for file', + description: 'A public download link to a s3 file', example: '', }) - blob!: Blob + url!: string } class CreateApplicationEducationDto { diff --git a/apps/services/user-notification/docker-compose.yml b/apps/services/user-notification/docker-compose.yml index 1a3bb8d89000..9796f0e095fb 100644 --- a/apps/services/user-notification/docker-compose.yml +++ b/apps/services/user-notification/docker-compose.yml @@ -22,7 +22,7 @@ services: - 5432:5432 redis_cluster: container_name: redis_cluster - image: docker.io/grokzen/redis-cluster:7.0.0 + image: docker.io/grokzen/redis-cluster:6.0.16 networks: - local privileged: true diff --git a/apps/services/user-notification/infra/user-notification.ts b/apps/services/user-notification/infra/user-notification.ts index 99c701c45e2a..162a3a82d3d0 100644 --- a/apps/services/user-notification/infra/user-notification.ts +++ b/apps/services/user-notification/infra/user-notification.ts @@ -2,6 +2,7 @@ import { Base, Client, NationalRegistryB2C, + RskCompanyInfo, } from '../../../../infra/src/dsl/xroad' import { json, @@ -68,7 +69,7 @@ export const userNotificationServiceSetup = (services: { NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET', }) - .xroad(Base, Client, NationalRegistryB2C) + .xroad(Base, Client, NationalRegistryB2C, RskCompanyInfo) .liveness('/liveness') .readiness('/health/check') .ingress({ @@ -156,7 +157,7 @@ export const userNotificationWorkerSetup = (services: { NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET', }) - .xroad(Base, Client, NationalRegistryB2C) + .xroad(Base, Client, NationalRegistryB2C, RskCompanyInfo) .liveness('/liveness') .readiness('/health/check') diff --git a/apps/services/user-notification/project.json b/apps/services/user-notification/project.json index 130e8aa9f4fa..c55dca8e3ba9 100644 --- a/apps/services/user-notification/project.json +++ b/apps/services/user-notification/project.json @@ -115,12 +115,21 @@ "cwd": "apps/services/user-notification/" } }, + "seed": { + "executor": "nx:run-commands", + "options": { + "command": "sequelize-cli db:seed:all", + "cwd": "apps/services/user-notification/" + } + }, "dev-init": { "executor": "nx:run-commands", "options": { "commands": [ + "yarn get-secrets user-notification", "yarn nx run services-user-notification:dev-services", - "yarn nx run services-user-notification:migrate" + "yarn nx run services-user-notification:migrate", + "yarn nx run services-user-notification:seed" ], "parallel": false } diff --git a/apps/services/user-notification/seeders/seed_notification.js b/apps/services/user-notification/seeders/seed_notification.js new file mode 100644 index 000000000000..9cea3f0e349d --- /dev/null +++ b/apps/services/user-notification/seeders/seed_notification.js @@ -0,0 +1,45 @@ +'use strict' + +module.exports = { + up: async (queryInterface) => { + return queryInterface.bulkInsert( + 'user_notification', + [ + { + message_id: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', + recipient: '0101302989', + sender_id: '5212120630', + template_id: 'HNIPP.POSTHOLF.NEW_DOCUMENT', + args: JSON.stringify([ + { key: 'organization', value: 'REPLACEDBYSENDERID' }, + { key: 'documentId', value: '1234567890' }, + ]), + created: new Date(), + updated: new Date(), + read: false, + seen: false, + }, + { + message_id: '58cc4372-a567-0e02b2c3d479f47ac10b', + recipient: '0101302989', + sender_id: '5701740619', + template_id: 'HNIPP.POSTHOLF.NEW_DOCUMENT', + args: JSON.stringify([ + { key: 'organization', value: 'REPLACEDBYSENDERID' }, + { key: 'documentId', value: '1234567890' }, + ]), + created: new Date(), + updated: new Date(), + read: false, + seen: false, + }, + // Add more seed data here + ], + {}, + ) + }, + + down: async (queryInterface) => { + return queryInterface.bulkDelete('user_notification', null, {}) + }, +} diff --git a/apps/services/user-notification/src/app/app.module.ts b/apps/services/user-notification/src/app/app.module.ts index 771697de9de8..39c68c3ff69e 100644 --- a/apps/services/user-notification/src/app/app.module.ts +++ b/apps/services/user-notification/src/app/app.module.ts @@ -12,12 +12,13 @@ import { NationalRegistryV3ClientConfig } from '@island.is/clients/national-regi import { FeatureFlagConfig } from '@island.is/nest/feature-flags' import { UserProfileClientConfig } from '@island.is/clients/user-profile' import { AuthDelegationApiClientConfig } from '@island.is/clients/auth/delegation-api' +import { CmsConfig } from '@island.is/clients/cms' +import { CompanyRegistryConfig } from '@island.is/clients/rsk/company-registry' +import { emailModuleConfig } from '@island.is/email-service' import { SequelizeConfigService } from './sequelizeConfig.service' import { environment } from '../environments/environment' import { UserNotificationsConfig } from '../config' -import { CmsConfig } from '@island.is/clients/cms' -import { emailModuleConfig } from '@island.is/email-service' @Module({ imports: [ @@ -40,6 +41,7 @@ import { emailModuleConfig } from '@island.is/email-service' AuthDelegationApiClientConfig, CmsConfig, emailModuleConfig, + CompanyRegistryConfig, ], }), NotificationsModule, diff --git a/apps/services/user-notification/src/app/modules/notifications/notificationDispatch.service.ts b/apps/services/user-notification/src/app/modules/notifications/notificationDispatch.service.ts index 728408e4361e..0b7d5cfb55c4 100644 --- a/apps/services/user-notification/src/app/modules/notifications/notificationDispatch.service.ts +++ b/apps/services/user-notification/src/app/modules/notifications/notificationDispatch.service.ts @@ -24,10 +24,12 @@ export class NotificationDispatchService { notification, nationalId, messageId, + notificationId, }: { notification: Notification nationalId: string messageId: string + notificationId?: number | null }): Promise<void> { const tokens = await this.getDeviceTokens(nationalId, messageId) @@ -42,7 +44,12 @@ export class NotificationDispatchService { for (const token of tokens) { try { - await this.sendNotificationToToken(notification, token, messageId) + await this.sendNotificationToToken( + notification, + token, + messageId, + notificationId, + ) } catch (error) { await this.handleSendError(error, nationalId, token, messageId) } @@ -82,6 +89,7 @@ export class NotificationDispatchService { notification: Notification, token: string, messageId: string, + notificationId?: number | null, ): Promise<void> { const message = { token, @@ -92,6 +100,7 @@ export class NotificationDispatchService { data: { messageId, clickActionUrl: notification.clickActionUrl, + ...(notificationId && { notificationId: String(notificationId) }), }, } diff --git a/apps/services/user-notification/src/app/modules/notifications/notifications.module.ts b/apps/services/user-notification/src/app/modules/notifications/notifications.module.ts index 45e63184aba4..812bdde441be 100644 --- a/apps/services/user-notification/src/app/modules/notifications/notifications.module.ts +++ b/apps/services/user-notification/src/app/modules/notifications/notifications.module.ts @@ -1,8 +1,11 @@ import { Module } from '@nestjs/common' import { SequelizeModule } from '@nestjs/sequelize' import * as firebaseAdmin from 'firebase-admin' + import { AuthDelegationApiClientModule } from '@island.is/clients/auth/delegation-api' +import { CmsModule } from '@island.is/clients/cms' import { NationalRegistryV3ClientModule } from '@island.is/clients/national-registry-v3' +import { CompanyRegistryClientModule } from '@island.is/clients/rsk/company-registry' import { UserProfileClientModule } from '@island.is/clients/user-profile' import { CmsTranslationsModule } from '@island.is/cms-translations' import { EmailModule } from '@island.is/email-service' @@ -10,6 +13,7 @@ import { LoggingModule } from '@island.is/logging' import { QueueModule } from '@island.is/message-queue' import { FeatureFlagModule } from '@island.is/nest/feature-flags' import { type ConfigType } from '@island.is/nest/config' + import { UserNotificationsConfig } from '../../../config' import { FIREBASE_PROVIDER } from '../../../constants' import { environment } from '../../../environments/environment' @@ -20,7 +24,6 @@ import { Notification } from './notification.model' import { NotificationDispatchService } from './notificationDispatch.service' import { NotificationsWorkerService } from './notificationsWorker/notificationsWorker.service' import { MessageProcessorService } from './messageProcessor.service' -import { CmsModule } from '@island.is/clients/cms' @Module({ exports: [NotificationsService], @@ -44,6 +47,7 @@ import { CmsModule } from '@island.is/clients/cms' NationalRegistryV3ClientModule, AuthDelegationApiClientModule, CmsModule, + CompanyRegistryClientModule, ], controllers: [NotificationsController, MeNotificationsController], providers: [ diff --git a/apps/services/user-notification/src/app/modules/notifications/notifications.service.ts b/apps/services/user-notification/src/app/modules/notifications/notifications.service.ts index 7a7be722db15..5518c2269ce3 100644 --- a/apps/services/user-notification/src/app/modules/notifications/notifications.service.ts +++ b/apps/services/user-notification/src/app/modules/notifications/notifications.service.ts @@ -74,7 +74,7 @@ export class NotificationsService { item.title = cleanString(item.title) return item } else { - this.logger.warn(`No org found for senderid: ${senderId}`) + this.logger.warn(`No org found for senderId: ${senderId}`, { senderId }) } } diff --git a/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/mocks.ts b/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/mocks.ts index d682f863e966..d204df4df6d3 100644 --- a/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/mocks.ts +++ b/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/mocks.ts @@ -1,15 +1,19 @@ import faker from 'faker' +import { + AuthDelegationType, + DelegationRecordDTO, +} from '@island.is/clients/auth/delegation-api' import { UserProfileDto } from '@island.is/clients/user-profile' -import { createNationalId } from '@island.is/testing/fixtures' -import { DelegationRecordDTO } from '@island.is/clients/auth/delegation-api' import { Features } from '@island.is/feature-flags' -import type { User } from '@island.is/auth-nest-tools' -import type { ConfigType } from '@island.is/nest/config' +import { createNationalId } from '@island.is/testing/fixtures' import { UserNotificationsConfig } from '../../../../config' import { HnippTemplate } from '../dto/hnippTemplate.response' +import type { User } from '@island.is/auth-nest-tools' +import type { ConfigType } from '@island.is/nest/config' + export const mockFullName = 'mockFullName' export const delegationSubjectId = 'delegation-subject-id' @@ -53,6 +57,17 @@ export const userWithNoDelegations: MockUserProfileDto = { isRestricted: false, } +export const userWithNoEmail: MockUserProfileDto = { + name: 'userWithNoEmail', + nationalId: createNationalId('person'), + mobilePhoneNumber: '1234567', + emailVerified: false, + mobilePhoneNumberVerified: true, + documentNotifications: true, + emailNotifications: true, + isRestricted: false, +} + export const userWithEmailNotificationsDisabled: MockUserProfileDto = { name: 'userWithEmailNotificationsDisabled', nationalId: createNationalId('person'), @@ -101,6 +116,18 @@ export const userWithSendToDelegationsFeatureFlagDisabled: MockUserProfileDto = isRestricted: false, } +export const companyUser: MockUserProfileDto = { + name: 'companyUser', + nationalId: createNationalId('company'), + mobilePhoneNumber: '1234567', + email: 'email@company.com', + emailVerified: true, + mobilePhoneNumberVerified: true, + documentNotifications: true, + emailNotifications: true, + isRestricted: false, +} + export const mockTemplateId = 'HNIPP.DEMO.ID' export const getMockHnippTemplate = ({ @@ -127,6 +154,8 @@ export const userProfiles = [ userWithDocumentNotificationsDisabled, userWithFeatureFlagDisabled, userWithSendToDelegationsFeatureFlagDisabled, + userWithNoEmail, + companyUser, ] const delegations: Record<string, DelegationRecordDTO[]> = { @@ -135,6 +164,7 @@ const delegations: Record<string, DelegationRecordDTO[]> = { fromNationalId: userWithDelegations.nationalId, toNationalId: userWithNoDelegations.nationalId, subjectId: null, // test that 3rd party login is not used if subjectId is null + type: AuthDelegationType.ProcurationHolder, }, ], [userWithDelegations2.nationalId]: [ @@ -142,6 +172,7 @@ const delegations: Record<string, DelegationRecordDTO[]> = { fromNationalId: userWithDelegations2.nationalId, toNationalId: userWithDelegations.nationalId, subjectId: delegationSubjectId, + type: AuthDelegationType.ProcurationHolder, }, ], [userWithSendToDelegationsFeatureFlagDisabled.nationalId]: [ @@ -149,6 +180,7 @@ const delegations: Record<string, DelegationRecordDTO[]> = { fromNationalId: userWithSendToDelegationsFeatureFlagDisabled.nationalId, toNationalId: userWithNoDelegations.nationalId, subjectId: faker.datatype.uuid(), + type: AuthDelegationType.ProcurationHolder, }, ], } diff --git a/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/notificationsWorker.service.spec.ts b/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/notificationsWorker.service.spec.ts index aaaf8aec510b..ad6163f1d511 100644 --- a/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/notificationsWorker.service.spec.ts +++ b/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/notificationsWorker.service.spec.ts @@ -10,6 +10,11 @@ import { FeatureFlagService } from '@island.is/nest/feature-flags' import { NationalRegistryV3ClientService } from '@island.is/clients/national-registry-v3' import { EmailService } from '@island.is/email-service' import { DelegationsApi } from '@island.is/clients/auth/delegation-api' +import { CmsService } from '@island.is/clients/cms' +import { + CompanyExtendedInfo, + CompanyRegistryClientService, +} from '@island.is/clients/rsk/company-registry' import { UserNotificationsConfig } from '../../../../config' import { FIREBASE_PROVIDER } from '../../../../constants' @@ -18,12 +23,15 @@ import { SequelizeConfigService } from '../../../sequelizeConfig.service' import { NotificationDispatchService } from '../notificationDispatch.service' import { Notification } from '../notification.model' import { NotificationsService } from '../notifications.service' +import { NotificationsWorkerService } from './notificationsWorker.service' import { wait } from './helpers' import { MockDelegationsService, MockFeatureFlagService, MockNationalRegistryV3ClientService, MockUserNotificationsConfig, + companyUser, + userWithNoEmail, userWithDelegations, userWithDelegations2, userWithDocumentNotificationsDisabled, @@ -36,7 +44,6 @@ import { userWithNoDelegations, userProfiles, } from './mocks' -import { CmsService } from '@island.is/clients/cms' const workingHoursDelta = 1000 * 60 * 60 // 1 hour const insideWorkingHours = new Date(2021, 1, 1, 9, 0, 0) @@ -74,7 +81,10 @@ describe('NotificationsWorkerService', () => { let queue: QueueService let notificationModel: typeof Notification let notificationsService: NotificationsService + let notificationsWorkerService: NotificationsWorkerService let userProfileApi: V2UsersApi + let nationalRegistryService: NationalRegistryV3ClientService + let companyRegistryService: CompanyRegistryClientService beforeAll(async () => { app = await testServer({ @@ -101,14 +111,15 @@ describe('NotificationsWorkerService', () => { }) sequelize = await app.resolve(getConnectionToken() as Type<Sequelize>) - notificationDispatch = app.get<NotificationDispatchService>( - NotificationDispatchService, - ) - emailService = app.get<EmailService>(EmailService) - queue = app.get<QueueService>(getQueueServiceToken('notifications')) + notificationDispatch = app.get(NotificationDispatchService) + emailService = app.get(EmailService) + queue = app.get(getQueueServiceToken('notifications')) notificationModel = app.get(getModelToken(Notification)) - notificationsService = app.get<NotificationsService>(NotificationsService) + notificationsService = app.get(NotificationsService) + notificationsWorkerService = app.get(NotificationsWorkerService) userProfileApi = app.get(V2UsersApi) + nationalRegistryService = app.get(NationalRegistryV3ClientService) + companyRegistryService = app.get(CompanyRegistryClientService) }) beforeEach(async () => { @@ -131,10 +142,21 @@ describe('NotificationsWorkerService', () => { jest .spyOn(notificationsService, 'getTemplate') .mockReturnValue(Promise.resolve(getMockHnippTemplate({}))) - }) - - afterAll(async () => { - await app.close() + jest.spyOn(notificationsWorkerService, 'createEmail') + + jest.spyOn(nationalRegistryService, 'getName') + + jest.spyOn(companyRegistryService, 'getCompany').mockReturnValue( + Promise.resolve<CompanyExtendedInfo>({ + nationalId: '1234567890', + name: 'Test Company', + formOfOperation: [], + addresses: [], + relatedParty: [], + vat: [], + status: 'somestatus', + }), + ) }) afterEach(async () => { @@ -201,18 +223,23 @@ describe('NotificationsWorkerService', () => { expect(emailService.sendEmail).toHaveBeenCalledTimes(2) + // should write the messages to db + const messages = await notificationModel.findAll() + const recipientMessage = messages.find( + (message) => message.recipient === userWithDelegations.nationalId, + ) + expect(messages).toHaveLength(2) + expect(recipientMessage).toBeDefined() + // should only send push notification for primary recipient expect(notificationDispatch.sendPushNotification).toHaveBeenCalledTimes(1) expect(notificationDispatch.sendPushNotification).toHaveBeenCalledWith( expect.objectContaining({ nationalId: userWithDelegations.nationalId, + notificationId: recipientMessage.id, }), ) - // should write the messages to db - const messages = await notificationModel.findAll() - expect(messages).toHaveLength(2) - // should have gotten user profile for primary recipient expect( userProfileApi.userProfileControllerFindUserProfile, @@ -361,6 +388,7 @@ describe('NotificationsWorkerService', () => { it('should not send email or push notification if no profile is found for recipient', async () => { await addToQueue('1234567890') + expect(notificationsWorkerService.createEmail).not.toHaveBeenCalled() expect(emailService.sendEmail).not.toHaveBeenCalled() expect(notificationDispatch.sendPushNotification).not.toHaveBeenCalled() }) @@ -379,6 +407,14 @@ describe('NotificationsWorkerService', () => { expect(notificationDispatch.sendPushNotification).toHaveBeenCalledTimes(1) }) + it('should not send email if user has no email registered', async () => { + await addToQueue(userWithNoEmail.nationalId) + + expect(notificationsWorkerService.createEmail).not.toHaveBeenCalled() + expect(emailService.sendEmail).not.toHaveBeenCalled() + expect(notificationDispatch.sendPushNotification).toHaveBeenCalledTimes(1) + }) + it('should not send email if user has email notifications disabled', async () => { await addToQueue(userWithEmailNotificationsDisabled.nationalId) @@ -392,4 +428,22 @@ describe('NotificationsWorkerService', () => { expect(emailService.sendEmail).toHaveBeenCalledTimes(1) expect(notificationDispatch.sendPushNotification).not.toHaveBeenCalled() }) + + it('should call national registry for persons', async () => { + await addToQueue(userWithNoDelegations.nationalId) + + expect(nationalRegistryService.getName).toHaveBeenCalledTimes(1) + expect(companyRegistryService.getCompany).not.toHaveBeenCalled() + expect(emailService.sendEmail).toHaveBeenCalledTimes(1) + expect(notificationDispatch.sendPushNotification).toHaveBeenCalledTimes(1) + }) + + it('should call company registry for companies', async () => { + await addToQueue(companyUser.nationalId) + + expect(nationalRegistryService.getName).not.toHaveBeenCalled() + expect(companyRegistryService.getCompany).toHaveBeenCalledTimes(1) + expect(emailService.sendEmail).toHaveBeenCalledTimes(1) + expect(notificationDispatch.sendPushNotification).not.toHaveBeenCalled() + }) }) diff --git a/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/notificationsWorker.service.ts b/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/notificationsWorker.service.ts index f29420bfbbc4..764593d87619 100644 --- a/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/notificationsWorker.service.ts +++ b/apps/services/user-notification/src/app/modules/notifications/notificationsWorker/notificationsWorker.service.ts @@ -5,7 +5,10 @@ import { isCompany } from 'kennitala' import { User } from '@island.is/auth-nest-tools' import { DocumentsScope } from '@island.is/auth/scopes' -import { NationalRegistryV3ClientService } from '@island.is/clients/national-registry-v3' +import { + EinstaklingurDTONafnAllt, + NationalRegistryV3ClientService, +} from '@island.is/clients/national-registry-v3' import { UserProfileDto, V2UsersApi, @@ -32,6 +35,10 @@ import { CreateHnippNotificationDto } from '../dto/createHnippNotification.dto' import { NotificationsService } from '../notifications.service' import { HnippTemplate } from '../dto/hnippTemplate.response' import { Notification } from '../notification.model' +import { + CompanyExtendedInfo, + CompanyRegistryClientService, +} from '@island.is/clients/rsk/company-registry' const WORK_STARTING_HOUR = 8 // 8 AM const WORK_ENDING_HOUR = 23 // 11 PM @@ -44,6 +51,7 @@ type HandleNotification = { emailNotifications: boolean locale?: string } + notificationId?: number | null messageId: string message: CreateHnippNotificationDto } @@ -57,6 +65,7 @@ export class NotificationsWorkerService implements OnApplicationBootstrap { private readonly userProfileApi: V2UsersApi, private readonly delegationsApi: DelegationsApi, private readonly nationalRegistryService: NationalRegistryV3ClientService, + private readonly companyRegistryService: CompanyRegistryClientService, private readonly featureFlagService: FeatureFlagService, private readonly emailService: EmailService, @@ -85,6 +94,7 @@ export class NotificationsWorkerService implements OnApplicationBootstrap { async handleDocumentNotification({ profile, messageId, + notificationId, message, }: HandleNotification) { // don't send message unless user wants this type of notification and national id is a person. @@ -118,6 +128,7 @@ export class NotificationsWorkerService implements OnApplicationBootstrap { nationalId: profile.nationalId, notification, messageId, + notificationId, }) } @@ -240,10 +251,13 @@ export class NotificationsWorkerService implements OnApplicationBootstrap { return } - if (!profile.email && !profile.emailNotifications) { - this.logger.info('User does not have email notifications enabled', { - messageId, - }) + if (!profile.email || !profile.emailNotifications) { + this.logger.info( + 'User does not have registered email or email notifications enabled', + { + messageId, + }, + ) return } @@ -331,12 +345,13 @@ export class NotificationsWorkerService implements OnApplicationBootstrap { await this.sleepOutsideWorkingHours(messageId) const notification = { messageId, ...message } - const messageIdExists = await this.notificationModel.count({ + let dbNotification = await this.notificationModel.findOne({ where: { messageId }, + attributes: ['id'], }) - if (messageIdExists > 0) { - // messageId exists do nothing + if (dbNotification) { + // messageId exists in db, do nothing this.logger.info('notification with messageId already exists in db', { messageId, }) @@ -344,8 +359,8 @@ export class NotificationsWorkerService implements OnApplicationBootstrap { // messageId does not exist // write to db try { - const res = await this.notificationModel.create(notification) - if (res) { + dbNotification = await this.notificationModel.create(notification) + if (dbNotification) { this.logger.info('notification written to db', { notification, messageId, @@ -387,6 +402,7 @@ export class NotificationsWorkerService implements OnApplicationBootstrap { const handleNotificationArgs: HandleNotification = { profile: { ...profile, nationalId: message.recipient }, messageId, + notificationId: dbNotification?.id, message, } @@ -453,8 +469,15 @@ export class NotificationsWorkerService implements OnApplicationBootstrap { } private async getFullName(nationalId: string): Promise<string> { - const individual = await this.nationalRegistryService.getName(nationalId) - return individual?.fulltNafn ?? '' + let identity: CompanyExtendedInfo | EinstaklingurDTONafnAllt | null + + if (isCompany(nationalId)) { + identity = await this.companyRegistryService.getCompany(nationalId) + return identity?.name ?? '' + } + + identity = await this.nationalRegistryService.getName(nationalId) + return identity?.fulltNafn ?? '' } /* Private methods */ diff --git a/apps/services/user-notification/src/app/modules/notifications/tests/me-notifications.controller.spec.ts b/apps/services/user-notification/src/app/modules/notifications/tests/me-notifications.controller.spec.ts index 5abf69310245..d89ce9488a07 100644 --- a/apps/services/user-notification/src/app/modules/notifications/tests/me-notifications.controller.spec.ts +++ b/apps/services/user-notification/src/app/modules/notifications/tests/me-notifications.controller.spec.ts @@ -12,130 +12,128 @@ import { AppModule } from '../../../app.module' import { SequelizeConfigService } from '../../../sequelizeConfig.service' import { DocumentsScope } from '@island.is/auth/scopes' -describe('MeNotificationsController', () => { - beforeAll(async () => { - process.env.INIT_SCHEMA = 'true' // Disabling Firebase init - }) - - describe('No Auth', () => { - it.each` - method | endpoint - ${'GET'} | ${'/v1/me/notifications'} - ${'GET'} | ${'/v1/me/notifications/some-notification-id'} - ${'GET'} | ${'/v1/me/notifications/unread-count'} - ${'GET'} | ${'/v1/me/notifications/unseen-count'} - ${'PATCH'} | ${'/v1/me/notifications/some-notification-id'} - ${'POST'} | ${'/v1/me/notifications/mark-all-as-seen'} - ${'POST'} | ${'/v1/me/notifications/mark-all-as-read'} - `( - '$method $endpoint should return 401 when user is unauthenticated', - async ({ method, endpoint }: TestEndpointOptions) => { - //Arrange - const app = await setupAppWithoutAuth({ - AppModule: AppModule, - SequelizeConfigService: SequelizeConfigService, - }) - const server = request(app.getHttpServer()) - - //Act - const res = await getRequestMethod(server, method)(endpoint) - - //Assert - expect(res.status).toEqual(401) - - app.cleanUp() - }, - ) - }) - - describe('With Auth No Scope', () => { - it.each` - method | endpoint - ${'GET'} | ${'/v1/me/notifications'} - ${'GET'} | ${'/v1/me/notifications/some-notification-id'} - ${'GET'} | ${'/v1/me/notifications/unread-count'} - ${'GET'} | ${'/v1/me/notifications/unseen-count'} - ${'PATCH'} | ${'/v1/me/notifications/some-notification-id'} - ${'POST'} | ${'/v1/me/notifications/mark-all-as-seen'} - ${'POST'} | ${'/v1/me/notifications/mark-all-as-read'} - `( - '$method $endpoint should return 403 when user is unauthorized', - async ({ method, endpoint }: TestEndpointOptions) => { - //Arrange - const app = await setupApp({ - AppModule, - SequelizeConfigService, - user: createCurrentUser({}), - }) - const server = request(app.getHttpServer()) - - //Act - const res = await getRequestMethod(server, method)(endpoint) - - //Assert - expect(res.status).toEqual(403) - - app.cleanUp() - }, - ) - }) - - describe('GET With Auth And Scope', () => { - it.each` - method | endpoint - ${'GET'} | ${'/v1/me/notifications/unread-count'} - ${'GET'} | ${'/v1/me/notifications/unseen-count'} - `( - '$method $endpoint should return 200 when user is authorized', - async ({ method, endpoint }: TestEndpointOptions) => { - //Arrange - const app = await setupApp({ - AppModule, - SequelizeConfigService, - user: createCurrentUser({ - scope: [DocumentsScope.main], - }), - }) - const server = request(app.getHttpServer()) - - //Act - const res = await getRequestMethod(server, method)(endpoint) - - //Assert - expect(res.status).toEqual(200) - - app.cleanUp() - }, - ) - }) - - describe('PATCH With Auth And Scope', () => { - it.each` - method | endpoint - ${'PATCH'} | ${'/v1/me/notifications/some-notification-id'} - ${'POST'} | ${'/v1/me/notifications/mark-all-as-seen'} - ${'POST'} | ${'/v1/me/notifications/mark-all-as-read'} - `( - '$method $endpoint should return 204 when user is authorized', - async ({ method, endpoint }: TestEndpointOptions) => { - //Arrange - const app = await setupApp({ - AppModule, - SequelizeConfigService, - user: createCurrentUser({ - scope: [DocumentsScope.main], - }), - }) - const server = request(app.getHttpServer()) - - //Act - const res = await getRequestMethod(server, method)(endpoint) - - //Assert - expect(res.status).toEqual(204) - - app.cleanUp() - }, - ) - }) +beforeAll(async () => { + process.env.INIT_SCHEMA = 'true' // Disabling Firebase init +}) + +describe('MeNotificationsController - No Auth', () => { + it.each` + method | endpoint + ${'GET'} | ${'/v1/me/notifications'} + ${'GET'} | ${'/v1/me/notifications/some-notification-id'} + ${'GET'} | ${'/v1/me/notifications/unread-count'} + ${'GET'} | ${'/v1/me/notifications/unseen-count'} + ${'PATCH'} | ${'/v1/me/notifications/some-notification-id'} + ${'POST'} | ${'/v1/me/notifications/mark-all-as-seen'} + ${'POST'} | ${'/v1/me/notifications/mark-all-as-read'} + `( + '$method $endpoint should return 401 when user is unauthenticated', + async ({ method, endpoint }: TestEndpointOptions) => { + //Arrange + const app = await setupAppWithoutAuth({ + AppModule: AppModule, + SequelizeConfigService: SequelizeConfigService, + }) + const server = request(app.getHttpServer()) + + //Act + const res = await getRequestMethod(server, method)(endpoint) + + //Assert + expect(res.status).toEqual(401) + + app.cleanUp() + }, + ) +}) + +describe('MeNotificationsController - With Auth No Scope', () => { + it.each` + method | endpoint + ${'GET'} | ${'/v1/me/notifications'} + ${'GET'} | ${'/v1/me/notifications/some-notification-id'} + ${'GET'} | ${'/v1/me/notifications/unread-count'} + ${'GET'} | ${'/v1/me/notifications/unseen-count'} + ${'PATCH'} | ${'/v1/me/notifications/some-notification-id'} + ${'POST'} | ${'/v1/me/notifications/mark-all-as-seen'} + ${'POST'} | ${'/v1/me/notifications/mark-all-as-read'} + `( + '$method $endpoint should return 403 when user is unauthorized', + async ({ method, endpoint }: TestEndpointOptions) => { + //Arrange + const app = await setupApp({ + AppModule, + SequelizeConfigService, + user: createCurrentUser({}), + }) + const server = request(app.getHttpServer()) + + //Act + const res = await getRequestMethod(server, method)(endpoint) + + //Assert + expect(res.status).toEqual(403) + + app.cleanUp() + }, + ) +}) + +describe('MeNotificationsController - GET With Auth And Scope', () => { + it.each` + method | endpoint + ${'GET'} | ${'/v1/me/notifications/unread-count'} + ${'GET'} | ${'/v1/me/notifications/unseen-count'} + `( + '$method $endpoint should return 200 when user is authorized', + async ({ method, endpoint }: TestEndpointOptions) => { + //Arrange + const app = await setupApp({ + AppModule, + SequelizeConfigService, + user: createCurrentUser({ + scope: [DocumentsScope.main], + }), + }) + const server = request(app.getHttpServer()) + + //Act + const res = await getRequestMethod(server, method)(endpoint) + + //Assert + expect(res.status).toEqual(200) + + app.cleanUp() + }, + ) +}) + +describe('MeNotificationsController - PATCH With Auth And Scope', () => { + it.each` + method | endpoint + ${'PATCH'} | ${'/v1/me/notifications/some-notification-id'} + ${'POST'} | ${'/v1/me/notifications/mark-all-as-seen'} + ${'POST'} | ${'/v1/me/notifications/mark-all-as-read'} + `( + '$method $endpoint should return 204 when user is authorized', + async ({ method, endpoint }: TestEndpointOptions) => { + //Arrange + const app = await setupApp({ + AppModule, + SequelizeConfigService, + user: createCurrentUser({ + scope: [DocumentsScope.main], + }), + }) + const server = request(app.getHttpServer()) + + //Act + const res = await getRequestMethod(server, method)(endpoint) + + //Assert + expect(res.status).toEqual(204) + + app.cleanUp() + }, + ) }) diff --git a/apps/services/user-notification/src/config.ts b/apps/services/user-notification/src/config.ts index bf5f48883fae..ee1134be1e34 100644 --- a/apps/services/user-notification/src/config.ts +++ b/apps/services/user-notification/src/config.ts @@ -20,8 +20,9 @@ export const UserNotificationsConfig = defineConfig({ name: 'UserNotificationsApi', schema, load(env) { + const isWorker = processJob() === 'worker' return { - isWorker: processJob() === 'worker', + isWorker, firebaseCredentials: env.required('FIREBASE_CREDENTIALS', ''), servicePortalClickActionUrl: env.optional('SERVICE_PORTAL_CLICK_ACTION_URL') ?? diff --git a/apps/services/user-notification/test/environment.ts b/apps/services/user-notification/test/environment.ts index 2e16defc6436..77956bffa36e 100644 --- a/apps/services/user-notification/test/environment.ts +++ b/apps/services/user-notification/test/environment.ts @@ -5,6 +5,8 @@ export const environment = { SQS_ACCESS_KEY: 'testing', SQS_SECRET_ACCESS_KEY: 'testing', SERVICE_PORTAL_CLICK_ACTION_URL: 'https://island.is/minarsidur', + // Disable redis registration during testing + REDIS_URL_NODE_01: '[]', } as const process.env = { diff --git a/apps/services/user-notification/test/globalSetup.ts b/apps/services/user-notification/test/globalSetup.ts index 04335679b565..ffddcda16d97 100644 --- a/apps/services/user-notification/test/globalSetup.ts +++ b/apps/services/user-notification/test/globalSetup.ts @@ -3,14 +3,10 @@ import { register } from 'tsconfig-paths' // eslint-disable-next-line @typescript-eslint/no-var-requires const tsConfig = require(`../${require('../tsconfig.json').extends}`) register({ baseUrl: './', paths: tsConfig.compilerOptions.paths }) +import { startPostgres, startLocalstack } from '@island.is/testing/containers' import { CreateQueueCommand, SQSClient } from '@aws-sdk/client-sqs' import { environment } from './environment' import { logger } from '@island.is/logging' -import { - startPostgres, - startLocalstack, - startRedis, -} from '@island.is/testing/containers' const setupSqsQueue = async () => { try { @@ -41,7 +37,7 @@ const setupSqsQueue = async () => { } export default async () => { - await Promise.all([startPostgres(), startLocalstack(), startRedis()]) + await Promise.all([startPostgres(), startLocalstack()]) // Setting up the SQS queue to prevent concurrent issues between spec files. await setupSqsQueue() diff --git a/apps/services/user-notification/test/globalTeardown.ts b/apps/services/user-notification/test/globalTeardown.ts index e49d09c31312..8a747ae41079 100644 --- a/apps/services/user-notification/test/globalTeardown.ts +++ b/apps/services/user-notification/test/globalTeardown.ts @@ -3,12 +3,8 @@ import { register } from 'tsconfig-paths' // eslint-disable-next-line @typescript-eslint/no-var-requires const tsConfig = require(`../${require('../tsconfig.json').extends}`) register({ baseUrl: './', paths: tsConfig.compilerOptions.paths }) -import { - stopLocalstack, - stopPostgres, - stopRedis, -} from '@island.is/testing/containers' +import { stopLocalstack, stopPostgres } from '@island.is/testing/containers' export default async () => { - await Promise.all([stopLocalstack(), stopPostgres(), stopRedis()]) + await Promise.all([stopLocalstack(), stopPostgres()]) } diff --git a/apps/services/user-profile/infra/service-portal-api.ts b/apps/services/user-profile/infra/service-portal-api.ts index cba03ff550cd..e8d9d75f88cb 100644 --- a/apps/services/user-profile/infra/service-portal-api.ts +++ b/apps/services/user-profile/infra/service-portal-api.ts @@ -88,7 +88,7 @@ export const serviceSetup = (): ServiceBuilder<typeof serviceId> => }) .resources({ limits: { cpu: '800m', memory: '1024Mi' }, - requests: { cpu: '400m', memory: '512Mi' }, + requests: { cpu: '100m', memory: '512Mi' }, }) .db() .grantNamespaces( diff --git a/apps/services/user-profile/src/app/user-profile/e2e/userProfile.spec.ts b/apps/services/user-profile/src/app/user-profile/e2e/userProfile.spec.ts index e27ef686e3b8..67a30b165a11 100644 --- a/apps/services/user-profile/src/app/user-profile/e2e/userProfile.spec.ts +++ b/apps/services/user-profile/src/app/user-profile/e2e/userProfile.spec.ts @@ -816,21 +816,23 @@ describe('User profile API', () => { ) }) - it('POST /userProfile/{nationalId}/device-tokens duplicate token should return 400 bad request', async () => { + it('POST /userProfile/{nationalId}/device-tokens duplicate token should return the existing token', async () => { // create it - await request(app.getHttpServer()) + const res1 = await request(app.getHttpServer()) .post(`/userProfile/${mockProfile.nationalId}/device-tokens`) .send({ deviceToken: mockDeviceToken.deviceToken, }) .expect(201) // try to create same again - await request(app.getHttpServer()) + const res2 = await request(app.getHttpServer()) .post(`/userProfile/${mockProfile.nationalId}/device-tokens`) .send({ deviceToken: mockDeviceToken.deviceToken, }) - .expect(400) + .expect(201) + + expect(res1.body).toEqual(res2.body) }) it('POST /userProfile/{nationalId}/device-tokens with missing payload should 400 bad request', async () => { diff --git a/apps/services/user-profile/src/app/user-profile/userProfile.controller.ts b/apps/services/user-profile/src/app/user-profile/userProfile.controller.ts index cb39b058a4eb..91865aa2e0b1 100644 --- a/apps/services/user-profile/src/app/user-profile/userProfile.controller.ts +++ b/apps/services/user-profile/src/app/user-profile/userProfile.controller.ts @@ -458,7 +458,10 @@ export class UserProfileController { } else { // findOrCreateUserProfile for edge cases - fragmented onboarding await this.findOrCreateUserProfile(nationalId, user) - return await this.userProfileService.addDeviceToken(body, user) + // The behaviour of returning the token if it already exists is not following API Design Guide + // It should respond with 303 See Other and a Location header to the existing resource + // But as the v1 of the user profile is not following this, we will keep the same behaviour. + return this.userProfileService.addDeviceToken(body, user) } } diff --git a/apps/services/user-profile/src/app/user-profile/userProfile.service.ts b/apps/services/user-profile/src/app/user-profile/userProfile.service.ts index 32abceae163e..3010c9cc0937 100644 --- a/apps/services/user-profile/src/app/user-profile/userProfile.service.ts +++ b/apps/services/user-profile/src/app/user-profile/userProfile.service.ts @@ -63,6 +63,14 @@ export class UserProfileService { async addDeviceToken(body: DeviceTokenDto, user: User) { try { + const token = await this.userDeviceTokensModel.findOne({ + where: { nationalId: user.nationalId, deviceToken: body.deviceToken }, + }) + + if (token) { + return token + } + return await this.userDeviceTokensModel.create({ ...body, nationalId: user.nationalId, diff --git a/apps/skilavottord/web/components/CarDetailsBox/CarDetailsBox.tsx b/apps/skilavottord/web/components/CarDetailsBox/CarDetailsBox.tsx index 7b226468f4d2..08f270833fd8 100644 --- a/apps/skilavottord/web/components/CarDetailsBox/CarDetailsBox.tsx +++ b/apps/skilavottord/web/components/CarDetailsBox/CarDetailsBox.tsx @@ -2,19 +2,11 @@ import { Box, Stack, Text } from '@island.is/island-ui/core' import { OutlinedBox } from '@island.is/skilavottord-web/components' import React, { FC } from 'react' -import { useI18n } from '@island.is/skilavottord-web/i18n' - -import { InputController } from '@island.is/shared/form-fields' -import { Control, FieldValues } from 'react-hook-form' - interface BoxProps { vehicleId: string vehicleType: string modelYear: string vehicleOwner?: string | null - mileage?: number - control?: Control<FieldValues> - showMileage?: boolean } export const CarDetailsBox: FC<React.PropsWithChildren<BoxProps>> = ({ @@ -22,16 +14,7 @@ export const CarDetailsBox: FC<React.PropsWithChildren<BoxProps>> = ({ vehicleType, modelYear, vehicleOwner, - mileage, - control, - showMileage, }) => { - const { - t: { - deregisterVehicle: { deregister: t }, - }, - } = useI18n() - return ( <OutlinedBox> <Box @@ -43,23 +26,9 @@ export const CarDetailsBox: FC<React.PropsWithChildren<BoxProps>> = ({ > <Stack space={1}> <Text variant="h3">{vehicleId}</Text> - {showMileage && <Text variant="h5">{mileage} km</Text>} <Text>{`${vehicleType}, ${modelYear}`}</Text> </Stack> <Text variant="h5">{vehicleOwner}</Text> - - {showMileage && ( - <Box> - <InputController - id="mileage" - control={control} - label={t.currentMileage} - name="mileage" - type="number" - defaultValue={mileage?.toString()} - /> - </Box> - )} </Box> </OutlinedBox> ) diff --git a/apps/skilavottord/web/components/CarDetailsBox2/CarDetailsBox2.tsx b/apps/skilavottord/web/components/CarDetailsBox2/CarDetailsBox2.tsx new file mode 100644 index 000000000000..0b80532213d7 --- /dev/null +++ b/apps/skilavottord/web/components/CarDetailsBox2/CarDetailsBox2.tsx @@ -0,0 +1,201 @@ +import { + AlertMessage, + Box, + Checkbox, + GridColumn, + GridContainer, + GridRow, + LoadingDots, + Stack, + Text, +} from '@island.is/island-ui/core' +import React, { FC, useState } from 'react' + +import { useI18n } from '@island.is/skilavottord-web/i18n' + +import { + InputController, + SelectController, +} from '@island.is/shared/form-fields' + +import { + OutInUsage, + PlateInfo, + UseStatus, +} from '@island.is/skilavottord-web/utils/consts' +import { Controller } from 'react-hook-form' + +interface BoxProps { + vehicleId: string + vehicleType: string + modelYear: string + mileage?: number + vehicleOwner?: string | null + vinNumber?: string + outInStatus: number + useStatus: string + plateCount: number + onPlateCountChange: (value: number) => void + isLoading: boolean +} + +export const CarDetailsBox2: FC<React.PropsWithChildren<BoxProps>> = ({ + vehicleId, + vehicleType, + modelYear, + vehicleOwner, + vinNumber, + mileage, + outInStatus, + useStatus, + onPlateCountChange, + plateCount, + isLoading, +}) => { + const { + t: { + deregisterVehicle: { deregister: t }, + }, + } = useI18n() + + const [missingPlates, setMissingPlates] = useState(false) + const [lostPlate, setLostPlate] = useState(false) + + return ( + <GridContainer> + <Stack space={3}> + <GridRow> + <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> + <Box + display="flex" + justifyContent="spaceBetween" + alignItems="center" + > + <Stack space={1}> + <Text variant="h3">{vehicleId}</Text> + <Text variant="h5">{mileage} km</Text> + <Text>{`${vehicleType}, ${modelYear}`}</Text> + {vinNumber && <Text variant="small">VIN: {vinNumber}</Text>} + <Text>{vehicleOwner}</Text> + </Stack> + </Box> + </GridColumn> + <GridColumn + span={['12/12', '12/12', '12/12', '6/12']} + paddingTop={[3, 3, 3, 2]} + > + <InputController + id="mileage" + label={t.currentMileage} + name="mileage" + type="number" + defaultValue={mileage?.toString()} + /> + </GridColumn> + </GridRow> + <GridRow> + <GridColumn span="12/12" paddingTop={[3, 3, 3, 3]}> + <Text variant="h5">{t.numberplate.sectionTitle}</Text> + </GridColumn> + </GridRow> + + {outInStatus === OutInUsage.OUT && ( + <GridRow> + <GridColumn span="12/12"> + {useStatus !== UseStatus.OUT_TICKET && ( + <AlertMessage + type="info" + title={t.numberplate.alert.info.title} + message={t.numberplate.alert.info.message} + /> + )} + {useStatus === UseStatus.OUT_TICKET && ( + <AlertMessage + type="warning" + title={t.numberplate.alert.warning.title} + message={t.numberplate.alert.warning.message} + /> + )} + </GridColumn> + </GridRow> + )} + + {isLoading ? ( + <Box textAlign="center"> + <LoadingDots /> + </Box> + ) : ( + <Box> + {(outInStatus === OutInUsage.IN || + (outInStatus === OutInUsage.OUT && + useStatus === UseStatus.OUT_TICKET)) && ( + <GridRow> + <GridColumn span="12/12"> + <SelectController + label={t.numberplate.count} + id="plateCount" + name="plateCount" + options={[ + { label: '0', value: 0 }, + { label: '1', value: 1 }, + { label: '2', value: 2 }, + ]} + onSelect={(option) => { + onPlateCountChange(option?.value) + + if (option?.value === 2) { + setMissingPlates(false) + setLostPlate(false) + } else { + setMissingPlates(true) + } + }} + defaultValue={plateCount} + /> + </GridColumn> + </GridRow> + )} + {missingPlates && ( + <GridRow> + <GridColumn span="12/12"> + <Controller + name="plateLost" + render={({ field: { onChange, value, name } }) => { + return ( + <Checkbox + large + name={name} + label={t.numberplate.lost} + onChange={() => { + if (!lostPlate) { + onChange(PlateInfo.PLATE_LOST) + } else { + onChange() + } + + setLostPlate(!lostPlate) + }} + /> + ) + }} + /> + </GridColumn> + </GridRow> + )} + + {lostPlate && ( + <GridRow> + <GridColumn span="12/12"> + <AlertMessage + type="info" + message={t.numberplate.missingInfo} + /> + </GridColumn> + </GridRow> + )} + </Box> + )} + </Stack> + </GridContainer> + ) +} diff --git a/apps/skilavottord/web/components/CarDetailsBox2/index.ts b/apps/skilavottord/web/components/CarDetailsBox2/index.ts new file mode 100644 index 000000000000..9007f2a0b0b7 --- /dev/null +++ b/apps/skilavottord/web/components/CarDetailsBox2/index.ts @@ -0,0 +1 @@ +export * from './CarDetailsBox2' diff --git a/apps/skilavottord/web/components/InlineError/InlineError.tsx b/apps/skilavottord/web/components/InlineError/InlineError.tsx index 7078847692a9..77ad20b6cfb7 100644 --- a/apps/skilavottord/web/components/InlineError/InlineError.tsx +++ b/apps/skilavottord/web/components/InlineError/InlineError.tsx @@ -4,7 +4,7 @@ import { Box, Button, Icon, Stack, Text } from '@island.is/island-ui/core' export interface InlineErrorProps { title: string message: string - primaryButton: Button + primaryButton?: Button secondaryButton?: Button } @@ -40,12 +40,14 @@ export const InlineError: FC<React.PropsWithChildren<InlineErrorProps>> = ({ {secondaryButton.text} </Button> )} - <Button - variant={secondaryButton ? 'primary' : 'ghost'} - onClick={primaryButton.action} - > - {primaryButton.text} - </Button> + {primaryButton && ( + <Button + variant={secondaryButton ? 'primary' : 'ghost'} + onClick={primaryButton.action} + > + {primaryButton.text} + </Button> + )} </Stack> </Box> ) diff --git a/apps/skilavottord/web/components/index.ts b/apps/skilavottord/web/components/index.ts index bf898f6a3fe5..29e01cd92868 100644 --- a/apps/skilavottord/web/components/index.ts +++ b/apps/skilavottord/web/components/index.ts @@ -13,6 +13,7 @@ export * from './Sidenav/Sidenav' export * from './GDPR' export * from './Modal/Modal' export * from './CarDetailsBox/CarDetailsBox' +export * from './CarDetailsBox2/CarDetailsBox2' export * from './LinkProvider/LinkProvider' export * from './Layouts/AppLayout' export * from './Layouts/PageLayout' diff --git a/apps/skilavottord/web/i18n/locales/en.json b/apps/skilavottord/web/i18n/locales/en.json index 44b282fe1f66..cb3f7c2f3f2c 100644 --- a/apps/skilavottord/web/i18n/locales/en.json +++ b/apps/skilavottord/web/i18n/locales/en.json @@ -329,7 +329,23 @@ "primaryButton": "Try again", "secondaryButton": "Cancel" }, - "currentMileage": "Current mileage" + "currentMileage": "Current mileage", + "numberplate": { + "sectionTitle": "Number plates information", + "alert": { + "info": { + "title": "The vehicle is registered out of use at the Icelandic Transport Authority.", + "message": "The number plates are deposited at the Icelandic Transport Authority" + }, + "warning": { + "title": "The vehicle is registered out of use with a sticker at the Icelandic Transport Authority.", + "message": "The number plates must accompany the vehicle" + } + }, + "count": "Number of license plates returned with the vehicle", + "lost": "Number plates are missing", + "missingInfo": "If the number plates are found, they must be returned to the Icelandic Transport Authority" + } } }, "recyclingFundOverview": { diff --git a/apps/skilavottord/web/i18n/locales/is.json b/apps/skilavottord/web/i18n/locales/is.json index 7b4cfc5c7825..d8ec320474ca 100644 --- a/apps/skilavottord/web/i18n/locales/is.json +++ b/apps/skilavottord/web/i18n/locales/is.json @@ -329,7 +329,23 @@ "primaryButton": "Reyna aftur", "secondaryButton": "Hætta við" }, - "currentMileage": "Núverandi kílómetrastaða" + "currentMileage": "Núverandi kílómetrastaða", + "numberplate": { + "sectionTitle": "Upplýsingar um númeraplötur", + "alert": { + "info": { + "title": "Ökutækið er skráð úr umferð hjá Samgöngustofu", + "message": "Númeraplöturnar eru innlagðar hjá Samgöngustofu" + }, + "warning": { + "title": "Ökutækið er skráð úr umferð (miði) hjá Samgöngustofu", + "message": "Númeraplöturnar eiga að fylgja ökutækinu" + } + }, + "count": "Fjöldi númeraplatna skilað með ökutækinu", + "lost": "Númeraplötur eru týndar", + "missingInfo": "Ef að númeraplöturnar finnast skal skila þeim til Samgöngustofu" + } } }, "recyclingFundOverview": { diff --git a/apps/skilavottord/web/i18n/locales/translation.d.ts b/apps/skilavottord/web/i18n/locales/translation.d.ts index a43d1c7e44e9..28dd89be7eb0 100644 --- a/apps/skilavottord/web/i18n/locales/translation.d.ts +++ b/apps/skilavottord/web/i18n/locales/translation.d.ts @@ -273,6 +273,24 @@ export interface Deregister { success: string error: CompletedError currentMileage: string + numberplate: NumberPlate +} + +export interface NumberPlate { + sectionTitle: string + alert: DeregisteredMessages + count: string + lost: string + missingInfo: string +} + +export interface DeregisteredMessages { + info: Message + warning: Message +} +export interface Message { + title: string + message: string } export interface DeregisterButtons { diff --git a/apps/skilavottord/web/infra/skilavottord-web.ts b/apps/skilavottord/web/infra/skilavottord-web.ts index 7c9eedf6a53a..40fe2b5bf25a 100644 --- a/apps/skilavottord/web/infra/skilavottord-web.ts +++ b/apps/skilavottord/web/infra/skilavottord-web.ts @@ -7,6 +7,12 @@ export const serviceSetup = (services: { .namespace('skilavottord') .liveness('/liveness') .readiness('/liveness') + .replicaCount({ + default: 2, + max: 10, + min: 2, + scalingMagicNumber: 8, + }) .resources({ limits: { cpu: '200m', diff --git a/apps/skilavottord/web/screens/DeregisterVehicle/Confirm/Confirm.tsx b/apps/skilavottord/web/screens/DeregisterVehicle/Confirm/Confirm.tsx index d89e2f6c7ea1..a8b25824b009 100644 --- a/apps/skilavottord/web/screens/DeregisterVehicle/Confirm/Confirm.tsx +++ b/apps/skilavottord/web/screens/DeregisterVehicle/Confirm/Confirm.tsx @@ -1,7 +1,7 @@ import { useMutation, useQuery } from '@apollo/client' import gql from 'graphql-tag' import { useRouter } from 'next/router' -import React, { FC, useContext, useEffect } from 'react' +import React, { FC, useContext, useEffect, useState } from 'react' import { Box, @@ -18,7 +18,7 @@ import { import { hasPermission } from '@island.is/skilavottord-web/auth/utils' import { - CarDetailsBox, + CarDetailsBox2, NotFound, OutlinedError, ProcessPageLayout, @@ -33,8 +33,9 @@ import { Role, } from '@island.is/skilavottord-web/graphql/schema' import { useI18n } from '@island.is/skilavottord-web/i18n' +import { OutInUsage, UseStatus } from '@island.is/skilavottord-web/utils/consts' import { getYear } from '@island.is/skilavottord-web/utils/dateUtils' -import { useForm } from 'react-hook-form' +import { FormProvider, useForm } from 'react-hook-form' const SkilavottordVehicleReadyToDeregisteredQuery = gql` query skilavottordVehicleReadyToDeregisteredQuery($permno: String!) { @@ -42,10 +43,22 @@ const SkilavottordVehicleReadyToDeregisteredQuery = gql` vehicleId vehicleType newregDate + vinNumber + mileage recyclingRequests { nameOfRequestor } - mileage + } + } +` + +const SkilavottordTrafficQuery = gql` + query skilavottordTrafficQuery($permno: String!) { + skilavottordTraffic(permno: $permno) { + permno + outInStatus + useStatus + useStatusName } } ` @@ -70,19 +83,38 @@ const SkilavottordRecyclingRequestMutation = gql` } ` -const UpdateSkilavottordVehicleMileageMutation = gql` - mutation updateSkilavottordVehicleMileage( +const UpdateSkilavottordVehicleInfoMutation = gql` + mutation updateSkilavottordVehicleInfo( $permno: String! $mileage: Float! + $plateCount: Float! + $plateLost: Boolean! ) { - updateSkilavottordVehicleMileage(permno: $permno, mileage: $mileage) + updateSkilavottordVehicleInfo( + permno: $permno + mileage: $mileage + plateCount: $plateCount + plateLost: $plateLost + ) } ` const Confirm: FC<React.PropsWithChildren<unknown>> = () => { - const { control, watch } = useForm({ + const [plateCount, setPlateCount] = useState<number>(2) + + const handlePlateCountChange = (value: number) => { + setPlateCount(value) + } + + const [ + vehicleReadyToDeregisteredQueryCompleted, + setVehicleReadyToDeregisteredQueryCompleted, + ] = useState(false) + + const methods = useForm({ mode: 'onChange', }) + const { watch } = methods const { user } = useContext(UserContext) const { @@ -95,6 +127,7 @@ const Confirm: FC<React.PropsWithChildren<unknown>> = () => { const { id } = router.query const mileageValue = watch('mileage') + const plateLost = watch('plateLost') const { data, loading } = useQuery<Query>( SkilavottordVehicleReadyToDeregisteredQuery, @@ -103,8 +136,42 @@ const Confirm: FC<React.PropsWithChildren<unknown>> = () => { }, ) + useEffect(() => { + if (data && data.skilavottordVehicleReadyToDeregistered) { + setVehicleReadyToDeregisteredQueryCompleted(true) + } + }, [data]) + const vehicle = data?.skilavottordVehicleReadyToDeregistered + const { data: traffic, loading: loadingTraffic } = useQuery<Query>( + SkilavottordTrafficQuery, + { + variables: { permno: id }, + skip: !vehicleReadyToDeregisteredQueryCompleted, + }, + ) + + const vehicleTrafficData = traffic?.skilavottordTraffic + + const outInStatus = + vehicleTrafficData?.outInStatus.toLocaleUpperCase() === 'OUT' + ? OutInUsage.OUT + : OutInUsage.IN + + const useStatus = vehicleTrafficData?.useStatus || '01' + + useEffect(() => { + if (vehicleTrafficData) { + if ( + outInStatus === OutInUsage.OUT && + useStatus !== UseStatus.OUT_TICKET + ) { + setPlateCount(0) + } + } + }, [vehicleTrafficData]) + const [ setRecyclingRequest, { data: mutationData, error: mutationError, loading: mutationLoading }, @@ -129,7 +196,7 @@ const Confirm: FC<React.PropsWithChildren<unknown>> = () => { error: vehicleMutationError, loading: vehicleMutationLoading, }, - ] = useMutation<Mutation>(UpdateSkilavottordVehicleMileageMutation, { + ] = useMutation<Mutation>(UpdateSkilavottordVehicleInfoMutation, { onError() { return vehicleMutationError }, @@ -144,28 +211,32 @@ const Confirm: FC<React.PropsWithChildren<unknown>> = () => { }, [vehicleMutationResponse, router, routes, t.success]) const handleConfirm = () => { + let newMileage = mileageValue + if (mileageValue !== undefined) { - const newMilage = +mileageValue.trim().replace(/\./g, '') - - // If registered mileage is not the same as the one when vehicle is confirmed for de-registration we need to update it - if (vehicle?.mileage !== newMilage) { - setVehicleRequest({ - variables: { - permno: vehicle?.vehicleId, - mileage: newMilage, - }, - }) - } + newMileage = +mileageValue.trim().replace(/\./g, '') + } else { + newMileage = vehicle?.mileage } - setRecyclingRequest({ + // Update vehicle table with latests information + setVehicleRequest({ variables: { - permno: id, - requestType: RecyclingRequestTypes.deregistered, + permno: vehicle?.vehicleId, + mileage: newMileage, + plateCount, + plateLost: !!plateLost?.length, }, + }).then(() => { + // Send recycling request + setRecyclingRequest({ + variables: { + permno: id, + requestType: RecyclingRequestTypes.deregistered, + }, + }) }) } - const handleBack = () => { router.replace(routes.select) } @@ -221,22 +292,25 @@ const Confirm: FC<React.PropsWithChildren<unknown>> = () => { <Stack space={4}> <Text variant="h1">{t.titles.success}</Text> <Text variant="intro">{t.info.success}</Text> - <CarDetailsBox - vehicleId={vehicle.vehicleId} - vehicleType={vehicle.vehicleType} - modelYear={getYear(vehicle.newregDate)} - vehicleOwner={ - vehicle.recyclingRequests && - vehicle.recyclingRequests[0].nameOfRequestor - } - mileage={vehicle.mileage || 0} - control={control} - showMileage - /> + <FormProvider {...methods}> + <CarDetailsBox2 + vehicleId={vehicle.vehicleId} + vehicleType={vehicle.vehicleType} + modelYear={getYear(vehicle.newregDate)} + vehicleOwner={vehicle.recyclingRequests?.[0]?.nameOfRequestor} + vinNumber={vehicle.vinNumber} + mileage={vehicle.mileage || 0} + outInStatus={outInStatus} + useStatus={useStatus || ''} + plateCount={plateCount} + onPlateCountChange={handlePlateCountChange} + isLoading={loadingTraffic} + /> + </FormProvider> </Stack> ) : ( <Box> - {loading ? ( + {loading || loadingTraffic ? ( <Box textAlign="center"> <LoadingDots large /> </Box> @@ -273,12 +347,13 @@ const Confirm: FC<React.PropsWithChildren<unknown>> = () => { </Button> </Hidden> {vehicle && ( - <Button onClick={handleConfirm}>{t.buttons.confirm}</Button> + <Button onClick={handleConfirm} disabled={loadingTraffic}> + {t.buttons.confirm} + </Button> )} </Box> </Stack> </ProcessPageLayout> ) } - export default Confirm diff --git a/apps/skilavottord/web/screens/RecyclingCompanies/RecyclingCompanies.tsx b/apps/skilavottord/web/screens/RecyclingCompanies/RecyclingCompanies.tsx index de4040c67755..89f0aee3bd0f 100644 --- a/apps/skilavottord/web/screens/RecyclingCompanies/RecyclingCompanies.tsx +++ b/apps/skilavottord/web/screens/RecyclingCompanies/RecyclingCompanies.tsx @@ -72,7 +72,7 @@ const RecyclingCompanies: FC<React.PropsWithChildren<unknown>> = () => { const handleUpdate = (id: string) => { router.push({ - pathname: BASE_PATH + routes.recyclingCompanies.edit, // without BASE-PATH it changes the whole route, probably some bug + pathname: routes.recyclingCompanies.edit, // with BASE-PATH it duplicates the path query: { id }, }) } diff --git a/apps/skilavottord/web/screens/RecyclingCompanies/RecyclingCompanyUpdate/RecyclingCompanyUpdate.tsx b/apps/skilavottord/web/screens/RecyclingCompanies/RecyclingCompanyUpdate/RecyclingCompanyUpdate.tsx index aa2d7ce91e9b..4d1357720c0f 100644 --- a/apps/skilavottord/web/screens/RecyclingCompanies/RecyclingCompanyUpdate/RecyclingCompanyUpdate.tsx +++ b/apps/skilavottord/web/screens/RecyclingCompanies/RecyclingCompanyUpdate/RecyclingCompanyUpdate.tsx @@ -115,6 +115,9 @@ const RecyclingCompanyUpdate: FC<React.PropsWithChildren<unknown>> = () => { } const handleUpdateRecyclingPartner = handleSubmit(async (input) => { + // Not needed to be sent to the backend, causes error if it is sent + delete input.__typename + const { errors } = await updateSkilavottordRecyclingPartner({ variables: { input }, }) diff --git a/apps/skilavottord/web/utils/consts.ts b/apps/skilavottord/web/utils/consts.ts index 675f1b64953d..3567ecffb468 100644 --- a/apps/skilavottord/web/utils/consts.ts +++ b/apps/skilavottord/web/utils/consts.ts @@ -1 +1,14 @@ export const ACCEPTED_TERMS_AND_CONDITION = 'acceptedTermsAndConditions' + +export enum PlateInfo { + PLATE_LOST = '0', +} + +export enum UseStatus { + OUT_TICKET = '16', // Úr umferð (miði) +} + +export enum OutInUsage { + OUT = 0, + IN = 1, +} diff --git a/apps/skilavottord/web/utils/dateUtils.ts b/apps/skilavottord/web/utils/dateUtils.ts index f154416896d7..9356d69faa87 100644 --- a/apps/skilavottord/web/utils/dateUtils.ts +++ b/apps/skilavottord/web/utils/dateUtils.ts @@ -20,6 +20,11 @@ export const getTime = (dateTime: string) => { } export const getYear = (dateTime: string) => { + // if null return empty string instead of 1970 + if (!dateTime) { + return '' + } + const date = new Date(dateTime) return format(date, 'yyyy') } diff --git a/apps/skilavottord/ws/migrations/20201008200611-vehicle_owner.js b/apps/skilavottord/ws/migrations/20201008200611-vehicle_owner.js index f4170a4404d7..f179c3da7af0 100644 --- a/apps/skilavottord/ws/migrations/20201008200611-vehicle_owner.js +++ b/apps/skilavottord/ws/migrations/20201008200611-vehicle_owner.js @@ -1,5 +1,3 @@ -'use strict' - module.exports.up = (queryInterface, DataTypes) => { return queryInterface.createTable( 'vehicle_owner', diff --git a/apps/skilavottord/ws/migrations/20201008210611-vehicle.js b/apps/skilavottord/ws/migrations/20201008210611-vehicle.js index 100f501066d6..7993f667c03f 100644 --- a/apps/skilavottord/ws/migrations/20201008210611-vehicle.js +++ b/apps/skilavottord/ws/migrations/20201008210611-vehicle.js @@ -1,4 +1,3 @@ -'use strict' // newreg_date TIMESTAMP WITH TIME ZONE DEFAULT now(), // vin_number VARCHAR, module.exports.up = (queryInterface, DataTypes) => { diff --git a/apps/skilavottord/ws/migrations/20201008210711-recycling-partners.js b/apps/skilavottord/ws/migrations/20201008210711-recycling-partners.js index b44b3ffe0fee..9823d0c2723e 100644 --- a/apps/skilavottord/ws/migrations/20201008210711-recycling-partners.js +++ b/apps/skilavottord/ws/migrations/20201008210711-recycling-partners.js @@ -1,5 +1,3 @@ -'use strict' - module.exports.up = (queryInterface, DataTypes) => { return queryInterface.createTable( 'recycling_partner', diff --git a/apps/skilavottord/ws/migrations/20201008220611-recycling_request.js b/apps/skilavottord/ws/migrations/20201008220611-recycling_request.js index d1eb3b08decc..d6c4e8e8e1f8 100644 --- a/apps/skilavottord/ws/migrations/20201008220611-recycling_request.js +++ b/apps/skilavottord/ws/migrations/20201008220611-recycling_request.js @@ -1,5 +1,3 @@ -'use strict' - module.exports.up = (queryInterface, DataTypes) => { return queryInterface.createTable( 'recycling_request', diff --git a/apps/skilavottord/ws/migrations/20201008230611-gdpr.js b/apps/skilavottord/ws/migrations/20201008230611-gdpr.js index 5af67b0129ea..cfd1cf8c7d14 100644 --- a/apps/skilavottord/ws/migrations/20201008230611-gdpr.js +++ b/apps/skilavottord/ws/migrations/20201008230611-gdpr.js @@ -1,5 +1,3 @@ -'use strict' - module.exports.up = (queryInterface, DataTypes) => { return queryInterface.createTable( 'gdpr', diff --git a/apps/skilavottord/ws/migrations/20211207210715-access-control.js b/apps/skilavottord/ws/migrations/20211207210715-access-control.js index 1ff3e3462013..3df1d4b2c6af 100644 --- a/apps/skilavottord/ws/migrations/20211207210715-access-control.js +++ b/apps/skilavottord/ws/migrations/20211207210715-access-control.js @@ -1,5 +1,3 @@ -'use strict' - module.exports.up = (queryInterface, DataTypes) => { return queryInterface.createTable( 'access_control', diff --git a/apps/skilavottord/ws/migrations/20220318210711-addcolumn-recycling-partners.js b/apps/skilavottord/ws/migrations/20220318210711-addcolumn-recycling-partners.js index f1b24e25d48c..90c9e7040264 100644 --- a/apps/skilavottord/ws/migrations/20220318210711-addcolumn-recycling-partners.js +++ b/apps/skilavottord/ws/migrations/20220318210711-addcolumn-recycling-partners.js @@ -1,5 +1,3 @@ -'use strict' - module.exports = { up: (queryInterface) => { return queryInterface.sequelize.query(` diff --git a/apps/skilavottord/ws/migrations/20220318210715-addcolumn-access-control.js b/apps/skilavottord/ws/migrations/20220318210715-addcolumn-access-control.js index 0e8d44c80476..63ce3c22fcbd 100644 --- a/apps/skilavottord/ws/migrations/20220318210715-addcolumn-access-control.js +++ b/apps/skilavottord/ws/migrations/20220318210715-addcolumn-access-control.js @@ -1,5 +1,3 @@ -'use strict' - module.exports = { up: (queryInterface) => { return queryInterface.sequelize.query(` diff --git a/apps/skilavottord/ws/migrations/20220318210715-alow-null-recycling-partners.js b/apps/skilavottord/ws/migrations/20220318210715-alow-null-recycling-partners.js index 1839c87917f4..111883805f16 100644 --- a/apps/skilavottord/ws/migrations/20220318210715-alow-null-recycling-partners.js +++ b/apps/skilavottord/ws/migrations/20220318210715-alow-null-recycling-partners.js @@ -1,5 +1,3 @@ -'use strict' - module.exports = { up: (queryInterface) => { return queryInterface.sequelize.query(` diff --git a/apps/skilavottord/ws/migrations/20231113210715-addcolumn-mileage.js b/apps/skilavottord/ws/migrations/20231113210715-addcolumn-mileage.js index 08959859c3af..8aa4b76bd3e2 100644 --- a/apps/skilavottord/ws/migrations/20231113210715-addcolumn-mileage.js +++ b/apps/skilavottord/ws/migrations/20231113210715-addcolumn-mileage.js @@ -1,5 +1,3 @@ -'use strict' - //add mileage change module.exports = { up: (queryInterface) => { diff --git a/apps/skilavottord/ws/migrations/20240307280301-add-indexes.js b/apps/skilavottord/ws/migrations/20240307280301-add-indexes.js index 68ec78a3044e..fced6fe46ab7 100644 --- a/apps/skilavottord/ws/migrations/20240307280301-add-indexes.js +++ b/apps/skilavottord/ws/migrations/20240307280301-add-indexes.js @@ -1,5 +1,3 @@ -'use strict' - //add mileage change module.exports = { up: (queryInterface) => { diff --git a/apps/skilavottord/ws/migrations/202409083210715-addcolumns-numberplate-info.js b/apps/skilavottord/ws/migrations/202409083210715-addcolumns-numberplate-info.js new file mode 100644 index 000000000000..4bfadb7ad42d --- /dev/null +++ b/apps/skilavottord/ws/migrations/202409083210715-addcolumns-numberplate-info.js @@ -0,0 +1,18 @@ +//add number plate & deregistered info change +module.exports = { + up: (queryInterface) => { + return queryInterface.sequelize.query(` + BEGIN; + ALTER TABLE vehicle ADD COLUMN plate_count INT; + ALTER TABLE vehicle ADD COLUMN plate_lost BOOLEAN; + COMMIT; + `) + }, + + down: (queryInterface) => { + return queryInterface.sequelize.query(` + ALTER TABLE vehicle DROP COLUMN plate_count; + ALTER TABLE vehicle DROP COLUMN plate_lost; + `) + }, +} diff --git a/apps/skilavottord/ws/src/app/modules/recyclingRequest/recyclingRequest.resolver.ts b/apps/skilavottord/ws/src/app/modules/recyclingRequest/recyclingRequest.resolver.ts index 0ba166e195d0..46d61f0d0a4c 100644 --- a/apps/skilavottord/ws/src/app/modules/recyclingRequest/recyclingRequest.resolver.ts +++ b/apps/skilavottord/ws/src/app/modules/recyclingRequest/recyclingRequest.resolver.ts @@ -76,11 +76,8 @@ export class RecyclingRequestResolver { @Args('recyclingPartner') station: string, @Args('mileage', { type: () => Int, nullable: true }) mileage: number, ): Promise<boolean> { - return this.recyclingRequestService.deRegisterVehicle( - permno, - station, - mileage, - ) + //this.recyclingRequestService.deRegisterVehicle(permno, station, 0) + throw new Error('Not used anymore') } @Authorize({ diff --git a/apps/skilavottord/ws/src/app/modules/recyclingRequest/recyclingRequest.service.ts b/apps/skilavottord/ws/src/app/modules/recyclingRequest/recyclingRequest.service.ts index 503e930f846e..b84bedcff8ea 100644 --- a/apps/skilavottord/ws/src/app/modules/recyclingRequest/recyclingRequest.service.ts +++ b/apps/skilavottord/ws/src/app/modules/recyclingRequest/recyclingRequest.service.ts @@ -21,6 +21,8 @@ import { } from './recyclingRequest.model' import { VehicleService, VehicleModel } from '../vehicle' import { IcelandicTransportAuthorityServices } from '../../services/icelandicTransportAuthority.services' +import { ApiVersion } from '../../utils/const' +import { getShortPermno } from '../../utils/skilavottordUtils' @Injectable() export class RecyclingRequestService { @@ -39,7 +41,7 @@ export class RecyclingRequestService { async deRegisterVehicle( vehiclePermno: string, disposalStation: string, - mileage = 0, + vehicle: VehicleModel, ) { try { const { restAuthUrl, restDeRegUrl, restUsername, restPassword } = @@ -51,7 +53,9 @@ export class RecyclingRequestService { const jsonAuthBody = JSON.stringify(jsonObj) const headerAuthRequest = { 'Content-Type': 'application/json', + 'Api-version': ApiVersion.REGISTRATIONS, } + // TODO: saved jToken and use it in next 7 days ( until it expires ) const authRes = await lastValueFrom( this.httpService.post(restAuthUrl, jsonAuthBody, { @@ -63,24 +67,31 @@ export class RecyclingRequestService { this.logger.error(errorMessage) throw new Error(errorMessage) } + // DeRegisterd vehicle const jToken = authRes.data['jwtToken'] const jsonDeRegBody = JSON.stringify({ permno: vehiclePermno, deRegisterDate: format(new Date(), "yyyy-MM-dd'T'HH:mm:ss"), - disposalstation: disposalStation, + disposalStation: disposalStation, explanation: 'Rafrænt afskráning', - mileage: mileage, + mileage: vehicle.mileage ?? 0, + plateCount: vehicle.plateCount, + lost: vehicle.plateLost ? 1 : 0, }) + const headerDeRegRequest = { 'Content-Type': 'application/json', Authorization: 'Bearer ' + jToken, + 'Api-version': ApiVersion.REGISTRATIONS, } + const deRegRes = await lastValueFrom( this.httpService.post(restDeRegUrl, jsonDeRegBody, { headers: headerDeRegRequest, }), ) + if (deRegRes.status < 300 && deRegRes.status >= 200) { return true } else { @@ -88,10 +99,14 @@ export class RecyclingRequestService { `Failed on deregisterd on deRegisterVehicle with status: ${deRegRes.statusText}`, ) } - } catch (err) { - delete err.data - this.logger.error(`Failed to deregister vehicle`, { error: err }) - throw new Error(`Failed to deregister vehicle ${vehiclePermno.slice(-3)}`) + } catch (error) { + if (error?.config) { + error.config.data = undefined + } + this.logger.error(`Failed to deregister vehicle`, { error }) + throw new Error( + `Failed to deregister vehicle ${getShortPermno(vehiclePermno)}`, + ) } } @@ -130,7 +145,7 @@ export class RecyclingRequestService { permno: string, ): Promise<VehicleModel> { // We are only logging the last 3 chars in the vehicle number - const loggedPermno = permno.slice(-3) + const loggedPermno = getShortPermno(permno) try { // Check 'pendingRecycle' status @@ -176,7 +191,7 @@ export class RecyclingRequestService { const errors = new RequestErrors() // We are only logging the last 3 chars in the vehicle number - const loggedPermno = permno.slice(-3) + const loggedPermno = getShortPermno(permno) this.logger.info(`car-recycling: Recycling request ${loggedPermno}`, { requestType: requestType, @@ -276,12 +291,9 @@ export class RecyclingRequestService { // If we encounter error with 'partnerId' then there is no request saved if (requestType == 'deregistered') { // 0. We need to be sure that the current owner is registered in our database - - /* await this.icelandicTransportAuthorityServices.checkIfCurrentUser( permno, ) - */ // 1. Check 'pendingRecycle'/'handOver' requestType const resRequestType = await this.findAllWithPermno(permno) @@ -338,12 +350,14 @@ export class RecyclingRequestService { this.logger.info( `car-recycling: Degregistering vehicle ${loggedPermno} from Samgongustofa`, { - mileage: vehicle.mileage ?? 0, partnerId, + mileage: vehicle.mileage ?? 0, + plateCount: vehicle.plateCount, + lost: vehicle.plateLost ? 1 : 0, }, ) - await this.deRegisterVehicle(permno, partnerId, vehicle.mileage ?? 0) + await this.deRegisterVehicle(permno, partnerId, vehicle) } catch (err) { // Saved requestType back to 'pendingRecycle' const req = new RecyclingRequestModel() diff --git a/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.model.ts b/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.model.ts index 74e49c8d5db7..67ffc5b2c271 100644 --- a/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.model.ts +++ b/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.model.ts @@ -46,3 +46,57 @@ export class VehicleInformation { @Field() status: string } + +@ObjectType() +export class VehicleInformationMini { + constructor( + permno: string, + ownerSocialSecurityNumber: string, + vehicleStatus: string, + ) { + this.permno = permno + this.ownerSocialSecurityNumber = ownerSocialSecurityNumber + this.vehicleStatus = vehicleStatus + } + + @Field() + permno: string + + @Field() + ownerSocialSecurityNumber: string + + @Field() + vehicleStatus: string +} + +@ObjectType() +export class Traffic { + constructor( + permno: string, + outInStatus: string, + useStatus: string, + useStatusName: string, + useDate: string, + ) { + this.permno = permno + this.outInStatus = outInStatus + this.useStatus = useStatus + this.useStatusName = useStatusName + this.useDate = useDate + } + + @Field() + permno: string + + @Field() + outInStatus: string + + @Field() + useStatus: string + + @Field() + useStatusName: string + + @Field() + useDate: string +} diff --git a/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.module.ts b/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.module.ts index 5f4511c1a420..ccee791fd703 100644 --- a/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.module.ts +++ b/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.module.ts @@ -5,10 +5,11 @@ import { RecyclingRequestModule } from '../recyclingRequest/recyclingRequest.mod import { SamgongustofaService } from './samgongustofa.service' import { SamgongustofaResolver } from './samgongustofa.resolver' +import { TransportService } from './transport/transport.service' @Module({ imports: [HttpModule, forwardRef(() => RecyclingRequestModule)], - providers: [SamgongustofaResolver, SamgongustofaService], + providers: [SamgongustofaResolver, SamgongustofaService, TransportService], exports: [SamgongustofaService], }) export class SamgongustofaModule {} diff --git a/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.resolver.ts b/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.resolver.ts index 2c87339b8508..5e343fc54532 100644 --- a/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.resolver.ts +++ b/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.resolver.ts @@ -1,6 +1,6 @@ -import { Query, Resolver } from '@nestjs/graphql' +import { Args, Query, Resolver } from '@nestjs/graphql' import { Authorize, CurrentUser, User } from '../auth' -import { VehicleInformation } from './samgongustofa.model' +import { Traffic, VehicleInformation } from './samgongustofa.model' import { SamgongustofaService } from './samgongustofa.service' @Authorize() @@ -14,4 +14,12 @@ export class SamgongustofaResolver { ): Promise<Array<VehicleInformation>> { return this.samgongustofaService.getUserVehiclesInformation(user.nationalId) } + + @Query(() => Traffic) + async skilavottordTraffic( + @CurrentUser() user: User, + @Args('permno') permno: string, + ): Promise<Traffic> { + return this.samgongustofaService.getTraffic(permno) + } } diff --git a/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.service.ts b/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.service.ts index 87610c34a5d3..caac3a135fda 100644 --- a/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.service.ts +++ b/apps/skilavottord/ws/src/app/modules/samgongustofa/samgongustofa.service.ts @@ -1,12 +1,16 @@ -import { Injectable, Inject, forwardRef } from '@nestjs/common' import { HttpService } from '@nestjs/axios' +import { forwardRef, Inject, Injectable } from '@nestjs/common' import { lastValueFrom } from 'rxjs' import * as xml2js from 'xml2js' import { environment } from '../../../environments' import { RecyclingRequestService } from '../recyclingRequest' -import { VehicleInformation } from './samgongustofa.model' +import { Traffic, VehicleInformation } from './samgongustofa.model' + import { logger } from '@island.is/logging' +import { TransportService } from './transport/transport.service' +import { ApiVersion } from '../../utils/const' +import { getShortPermno } from '../../utils/skilavottordUtils' @Injectable() export class SamgongustofaService { @@ -14,8 +18,15 @@ export class SamgongustofaService { private httpService: HttpService, @Inject(forwardRef(() => RecyclingRequestService)) private recyclingRequestService: RecyclingRequestService, + private transportService: TransportService, ) {} + /** + * + * @param nationalId + * @deprecated + * @returns + */ async getUserVehiclesInformation( nationalId: string, ): Promise<VehicleInformation[]> { @@ -306,6 +317,9 @@ export class SamgongustofaService { } } + /** + * @deprecated + */ async getUserVehicle( nationalId: string, permno: string, @@ -321,4 +335,91 @@ export class SamgongustofaService { } return car } + + async getTraffic(permno: string): Promise<Traffic> { + try { + const url = this.transportService.getRegistrationURL() + + const result = await this.transportService.doGet( + url, + url + 'traffic/' + permno, + ApiVersion.REGISTRATIONS, + ) + + if (result.status === 200) { + if (result.data.length) { + // Get the latest registered traffic data + const traffic = Object.values(result.data).reduce( + (prev: Traffic, current: Traffic) => + new Date(prev.useDate) > new Date(current.useDate) + ? prev + : current, + {} as Traffic, + ) as Traffic + + logger.info( + `car-recycling: Got traffic data for ${getShortPermno(permno)}`, + { + permno: getShortPermno(traffic.permno), + outInStatus: traffic.outInStatus, + useStatus: traffic.useStatus, + useStatusName: traffic.useStatusName, + }, + ) + + // + if (!traffic.outInStatus) { + logger.warn( + `car-recycling: No traffic data being returned for ${getShortPermno( + permno, + )}`, + { dataFromServer: result.data }, + ) + } + + return traffic + } + + logger.warn( + `car-recycling: No traffic data found for ${getShortPermno(permno)}`, + ) + + return { + permno, + outInStatus: '', + useStatus: '', + useStatusName: '', + } as Traffic + } + + throw new Error( + `car-recycling: #1 Failed on getTraffic ${getShortPermno(permno)}`, + ) + } catch (err) { + throw new Error( + `car-recycling: #2 Failed on getTraffic ${getShortPermno( + permno, + )} because: ${err}`, + ) + } + } + + // Get the Vehicle information from Icelandic Transport Authority (Samgöngustofa) + async getVehicleInformation(permno: string) { + try { + const url = this.transportService.getInformationURL() + + return this.transportService.doGet( + url, + url + 'vehicleinformationmini/' + permno, + ApiVersion.INFORMATION, + ) + } catch (err) { + throw new Error( + `car-recycling: Failed on getVehicleInformation vehicle ${permno.slice( + -3, + )} because: ${err}`, + ) + } + } } diff --git a/apps/skilavottord/ws/src/app/modules/samgongustofa/test/samgongustofa.service.spec.ts b/apps/skilavottord/ws/src/app/modules/samgongustofa/test/samgongustofa.service.spec.ts index 45ff1cf5d3b8..9f0cfc08a388 100644 --- a/apps/skilavottord/ws/src/app/modules/samgongustofa/test/samgongustofa.service.spec.ts +++ b/apps/skilavottord/ws/src/app/modules/samgongustofa/test/samgongustofa.service.spec.ts @@ -10,6 +10,7 @@ import { import { SamgongustofaService } from '../samgongustofa.service' import { MockData } from './mock-data' +import { TransportService } from '../transport/transport.service' const recyclingRequestModel = { id: '1234', @@ -50,6 +51,12 @@ describe('skilavottordApiTest', () => { findAllWithPermno: () => ({}), })), }, + { + provide: TransportService, + useClass: jest.fn(() => ({ + getRegistrationURL: () => ({}), + })), + }, ], }).compile() samgongustofaService = diff --git a/apps/skilavottord/ws/src/app/modules/samgongustofa/transport/index.ts b/apps/skilavottord/ws/src/app/modules/samgongustofa/transport/index.ts new file mode 100644 index 000000000000..8d7c134af4ac --- /dev/null +++ b/apps/skilavottord/ws/src/app/modules/samgongustofa/transport/index.ts @@ -0,0 +1 @@ +export { TransportService } from './transport.service' diff --git a/apps/skilavottord/ws/src/app/modules/samgongustofa/transport/transport.service.ts b/apps/skilavottord/ws/src/app/modules/samgongustofa/transport/transport.service.ts new file mode 100644 index 000000000000..5ec134cb39f0 --- /dev/null +++ b/apps/skilavottord/ws/src/app/modules/samgongustofa/transport/transport.service.ts @@ -0,0 +1,111 @@ +import { Injectable } from '@nestjs/common' +import { HttpService } from '@nestjs/axios' +import { lastValueFrom } from 'rxjs' +import { environment } from '../../../../environments' +import { logger } from '@island.is/logging' + +@Injectable() +export class TransportService { + constructor(private httpService: HttpService) {} + + async authenticate(url: string, apiVersion = '1.0'): Promise<string> { + try { + const { restUsername, restPassword } = environment.samgongustofa + + if (!restUsername || !restPassword) { + throw new Error('Missing environment variables for Samgöngustofa') + } + + const jsonObj = { + username: restUsername, + password: restPassword, + } + const jsonAuthBody = JSON.stringify(jsonObj) + + const headerAuthRequest = { + 'Content-Type': 'application/json', + 'Api-version': apiVersion, + } + + const authRes = await lastValueFrom( + this.httpService.post(url + 'authenticate', jsonAuthBody, { + headers: headerAuthRequest, + }), + ) + + if (authRes.status > 299 || authRes.status < 200) { + const errorMessage = `Authentication failed to Samgöngustofa services: ${authRes.statusText}` + logger.error(`car-recycling: ${errorMessage}`) + throw new Error(errorMessage) + } + + return authRes.data['jwtToken'] + } catch (error) { + if (error?.config) { + error.config.data = undefined + } + + logger.error('car-recycling: Authentication failed', error) + throw error + } + } + + /** + * + * @param restURL - the base Samgöngustofa API url + * @param fullUrl - the full url to the Samgöngustofa API endpoint + * @param apiVersion - Samgöngustofa API version + * @returns + */ + async doGet(restURL: string, fullUrl: string, apiVersion: string) { + const jwtToken = await this.authenticate(restURL, apiVersion) + + const headers = { + 'Content-Type': 'application/json', + Authorization: 'Bearer ' + jwtToken, + 'Api-version': apiVersion, + } + + const result = await lastValueFrom( + this.httpService.get(fullUrl, { + headers: headers, + }), + ) + + if (result.status < 300 && result.status >= 200) { + return result + } else { + throw new Error( + `car-recycling: Failed on doGet with status: ${result.statusText}`, + ) + } + } + + /** + * Get the Samgöngustofa's registration REST url + * @returns + */ + getRegistrationURL(): string { + const { restDeRegUrl } = environment.samgongustofa + + const positionOfChar = restDeRegUrl.lastIndexOf('/') + return restDeRegUrl.substring(0, positionOfChar) + '/' + } + + /** + * Get the Samgöngustofa's information REST url + * @returns + */ + getInformationURL(): string { + const { restDeRegUrl } = environment.samgongustofa + + // + // Small hack to get the information url + const restInformationURL = restDeRegUrl.replace( + '/registrations/', + '/information/', + ) + const positionOfChar = restInformationURL.lastIndexOf('/') + return restInformationURL.substring(0, positionOfChar) + '/' + } +} diff --git a/apps/skilavottord/ws/src/app/modules/vehicle/dto/createVehicle.input.ts b/apps/skilavottord/ws/src/app/modules/vehicle/dto/createVehicle.input.ts index 3878eb285e10..077ca1cb4f53 100644 --- a/apps/skilavottord/ws/src/app/modules/vehicle/dto/createVehicle.input.ts +++ b/apps/skilavottord/ws/src/app/modules/vehicle/dto/createVehicle.input.ts @@ -14,8 +14,8 @@ export class CreateVehicleInput { @Field() make!: string - @Field() - firstRegistrationDate!: Date + @Field({ nullable: true }) + firstRegistrationDate: Date @Field() color!: string diff --git a/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.model.ts b/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.model.ts index fb9a15d3b634..ad6e8bc929f3 100644 --- a/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.model.ts +++ b/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.model.ts @@ -80,6 +80,18 @@ export class VehicleModel extends Model<VehicleModel> { @Field(() => [RecyclingRequestModel], { nullable: true }) @HasMany(() => RecyclingRequestModel) recyclingRequests!: RecyclingRequestModel[] + + @Field({ nullable: true }) + @Column({ + type: DataType.BOOLEAN, + }) + plateLost?: boolean + + @Field({ nullable: true }) + @Column({ + type: DataType.INTEGER, + }) + plateCount?: number } @ObjectType() diff --git a/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.resolver.ts b/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.resolver.ts index b52c8fd483c2..d8a1516ffda1 100644 --- a/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.resolver.ts +++ b/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.resolver.ts @@ -104,11 +104,18 @@ export class VehicleResolver { } @Mutation(() => Boolean) - async updateSkilavottordVehicleMileage( + async updateSkilavottordVehicleInfo( @CurrentUser() user: User, @Args('permno') permno: string, @Args('mileage') mileage: number, + @Args('plateCount', { nullable: true }) plateCount: number, + @Args('plateLost') plateLost: boolean, ) { - return await this.vehicleService.updateMileage(permno, mileage) + return await this.vehicleService.updateVehicleInfo( + permno, + mileage, + plateCount, + plateLost, + ) } } diff --git a/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.service.ts b/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.service.ts index ce62cce725bb..67729e02c3a9 100644 --- a/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.service.ts +++ b/apps/skilavottord/ws/src/app/modules/vehicle/vehicle.service.ts @@ -60,23 +60,31 @@ export class VehicleService { } } - async updateMileage(permno: string, mileage: number): Promise<boolean> { + async updateVehicleInfo( + permno: string, + mileage: number, + plateCount: number, + plateLost: boolean, + ): Promise<boolean> { const findVehicle = await this.findByVehicleId(permno) if (findVehicle) { findVehicle.mileage = mileage ?? 0 + findVehicle.plateCount = plateCount + findVehicle.plateLost = plateLost + await findVehicle.save() return true } else { - const errorMsg = `failed to update mileage: ${mileage} on vehicle: ${permno}` + const errorMsg = `Failed to update vehicleInfo for vehicle: ${permno}` this.logger.error( - `car-recycling: Failed to update mileage: ${mileage} on vehicle: ${permno.slice( + `car-recycling: Failed to update vehicleInfo for vehicle: ${permno.slice( -3, )}`, + { mileage, plateCount, plateLost }, ) throw new Error(errorMsg) } } - async create(vehicle: VehicleModel): Promise<boolean> { try { // check if vehicle is already in db diff --git a/apps/skilavottord/ws/src/app/modules/vehicle/vehicleAppSys.resolver.ts b/apps/skilavottord/ws/src/app/modules/vehicle/vehicleAppSys.resolver.ts index ddf2133b3f9c..d15060f93a12 100644 --- a/apps/skilavottord/ws/src/app/modules/vehicle/vehicleAppSys.resolver.ts +++ b/apps/skilavottord/ws/src/app/modules/vehicle/vehicleAppSys.resolver.ts @@ -8,6 +8,7 @@ import { logger } from '@island.is/logging' import { CreateVehicleInput } from './dto/createVehicle.input' import { VehicleModel } from './vehicle.model' import { VehicleService } from './vehicle.service' +import { getShortPermno } from '../../utils/skilavottordUtils' @UseGuards(IdsUserGuard, ScopesGuard) @Resolver(() => VehicleModel) @@ -19,9 +20,12 @@ export class VehicleAppSysResolver { @CurrentUser() user: User, @Args('input') input: CreateVehicleInput, ) { - logger.info(`car-recycling: Creating Vehicle ${input.permno.slice(-3)}`, { - mileage: input.mileage, - }) + logger.info( + `car-recycling: Creating Vehicle ${getShortPermno(input.permno)}`, + { + mileage: input.mileage, + }, + ) const newVehicle = new VehicleModel() newVehicle.vinNumber = input.vin diff --git a/apps/skilavottord/ws/src/app/services/icelandicTransportAuthority.module.ts b/apps/skilavottord/ws/src/app/services/icelandicTransportAuthority.module.ts index 8207430e01de..e5fecff38762 100644 --- a/apps/skilavottord/ws/src/app/services/icelandicTransportAuthority.module.ts +++ b/apps/skilavottord/ws/src/app/services/icelandicTransportAuthority.module.ts @@ -1,13 +1,18 @@ import { Module, forwardRef } from '@nestjs/common' import { IcelandicTransportAuthorityServices } from './icelandicTransportAuthority.services' import { HttpModule } from '@nestjs/axios' -import { VehicleModule, VehicleOwnerModule } from '../modules' +import { + SamgongustofaModule, + VehicleModule, + VehicleOwnerModule, +} from '../modules' @Module({ imports: [ HttpModule, forwardRef(() => VehicleModule), forwardRef(() => VehicleOwnerModule), + forwardRef(() => SamgongustofaModule), ], providers: [IcelandicTransportAuthorityServices], exports: [IcelandicTransportAuthorityServices], diff --git a/apps/skilavottord/ws/src/app/services/icelandicTransportAuthority.services.ts b/apps/skilavottord/ws/src/app/services/icelandicTransportAuthority.services.ts index 83062615d9e5..24254b673c06 100644 --- a/apps/skilavottord/ws/src/app/services/icelandicTransportAuthority.services.ts +++ b/apps/skilavottord/ws/src/app/services/icelandicTransportAuthority.services.ts @@ -1,8 +1,7 @@ -import { Injectable } from '@nestjs/common/decorators/core' -import { lastValueFrom } from 'rxjs' -import { HttpService } from '@nestjs/axios/dist' -import { environment } from '../../environments' import { logger } from '@island.is/logging' +import { Injectable } from '@nestjs/common/decorators/core' +import { SamgongustofaService } from '../modules/samgongustofa' +import { VehicleInformationMini } from '../modules/samgongustofa/samgongustofa.model' import { VehicleModel, VehicleService } from '../modules/vehicle' import { VehicleOwnerModel } from '../modules/vehicleOwner' import { VehicleOwnerService } from '../modules/vehicleOwner/vehicleOwner.service' @@ -10,122 +9,14 @@ import { VehicleOwnerService } from '../modules/vehicleOwner/vehicleOwner.servic @Injectable() export class IcelandicTransportAuthorityServices { constructor( - private http: HttpService, private vehicleService: VehicleService, private ownerService: VehicleOwnerService, + private samgongustofaService: SamgongustofaService, ) {} - // Hack to re-use the url from the secret - private getInformationURL(restURL: string): string { - const restInformationURL = restURL.replace( - '/registrations/', - '/information/', - ) - const positionOfChar = restInformationURL.lastIndexOf('/') - return restInformationURL.substring(0, positionOfChar) + '/' - } - - async authenticate(authURL: string, userName: string, password: string) { - try { - const jsonObj = { - username: userName, - password: password, - } - const jsonAuthBody = JSON.stringify(jsonObj) - - const headerAuthRequest = { - 'Content-Type': 'application/json', - } - - const authRes = await lastValueFrom( - this.http.post( - this.getInformationURL(authURL) + 'authenticate', - jsonAuthBody, - { - headers: headerAuthRequest, - }, - ), - ) - - if (authRes.status > 299 || authRes.status < 200) { - const errorMessage = `Authentication failed to information services: ${authRes.statusText}` - logger.error(`car-recycling: ${errorMessage}`) - throw new Error(errorMessage) - } - - return authRes.data['jwtToken'] - } catch (error) { - delete error.config - logger.error('car-recycling: Authentication failed on information', error) - throw error - } - } - - async doGet( - restURL: string, - queryParams: { [key: string]: string } | undefined, - ) { - const { restAuthUrl, restUsername, restPassword } = - environment.samgongustofa - - const jwtToken = await this.authenticate( - restAuthUrl, - restUsername, - restPassword, - ) - - let fullUrl = restURL - - if (queryParams) { - const searchParams = new URLSearchParams(queryParams) - - // Concatenate the URL with the query string - fullUrl = `${restURL}?${searchParams.toString()}` - } - - const headers = { - 'Content-Type': 'application/json', - Authorization: 'Bearer ' + jwtToken, - } - - const result = await lastValueFrom( - this.http.get(fullUrl, { - headers: headers, - }), - ) - - if (result.status < 300 && result.status >= 200) { - return result - } else { - throw new Error( - `car-recycling: Failed on doGet with status: ${result.statusText}`, - ) - } - } - - // Get the Vehicle information from Icelandic Transport Authority (Samgöngustofa) - async getVehicleInformation(permno: string) { - try { - const { restDeRegUrl } = environment.samgongustofa - - return this.doGet( - this.getInformationURL(restDeRegUrl) + - 'vehicleinformationmini/' + - permno, - undefined, - ) - } catch (err) { - throw new Error( - `car-recycling: Failed on getVehicleInformation vehicle ${permno.slice( - -3, - )} because: ${err}`, - ) - } - } - - async checkIfCurrentUser(permno: string): Promise<boolean> { + async checkIfCurrentUser(permno: string): Promise<VehicleInformationMini> { //Get the latest vehicle information from Samgongustofa - const result = await this.getVehicleInformation(permno) + const result = await this.samgongustofaService.getVehicleInformation(permno) if (result && result.data) { const ownerSocialSecurityNumber = result.data.ownerSocialSecurityNumber @@ -157,7 +48,7 @@ export class IcelandicTransportAuthorityServices { await this.vehicleService.create(vehicle) } - return true + return result.data } logger.error( diff --git a/apps/skilavottord/ws/src/app/utils/const.ts b/apps/skilavottord/ws/src/app/utils/const.ts new file mode 100644 index 000000000000..b4b53f7da574 --- /dev/null +++ b/apps/skilavottord/ws/src/app/utils/const.ts @@ -0,0 +1,5 @@ +/** Samgöngustofa API versions */ +export enum ApiVersion { + REGISTRATIONS = '3.0', + INFORMATION = '1.0', +} diff --git a/apps/skilavottord/ws/src/app/utils/index.ts b/apps/skilavottord/ws/src/app/utils/index.ts new file mode 100644 index 000000000000..05d610c5e491 --- /dev/null +++ b/apps/skilavottord/ws/src/app/utils/index.ts @@ -0,0 +1,2 @@ +export * from './const' +export * from './skilavottordUtils' diff --git a/apps/skilavottord/ws/src/app/utils/skilavottordUtils.ts b/apps/skilavottord/ws/src/app/utils/skilavottordUtils.ts new file mode 100644 index 000000000000..77120b29d8e4 --- /dev/null +++ b/apps/skilavottord/ws/src/app/utils/skilavottordUtils.ts @@ -0,0 +1,8 @@ +/** + * Shorten the permno for logging purpose + * @param permno + * @returns + */ +export const getShortPermno = (permno: string) => { + return permno.slice(-3) +} diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/nationalRegistry.mock.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/nationalRegistry.mock.ts new file mode 100644 index 000000000000..820ea70ac71d --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/nationalRegistry.mock.ts @@ -0,0 +1,169 @@ +import { Response } from '@anev/ts-mountebank' +import { NationalRegistry } from '../../../../../../../../infra/src/dsl/xroad' +import { addXroadMock } from '../../../../../support/wire-mocks' + +export const loadNationalRegistryXroadMocks = async () => { + /* Gervimaður Afríka */ + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kennitala: '0101303019', + nafn: 'Gervimaður Afríka', + eiginnafn: 'Gervimaður', + millinafn: null, + kenninafn: 'Afríka', + fulltNafn: 'Gervimaður Afríka', + kynkodi: '1', + bannmerking: false, + faedingardagur: '1930-01-01T00:00:00', + logheimili: { + heiti: 'Engihjalli 3', + postnumer: '200', + stadur: 'Kópavogur', + sveitarfelagsnumer: '1000', + }, + adsetur: { + heiti: 'Fellsmúli 2', + postnumer: '108', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + }, + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019/hjuskapur', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kennitalaMaka: '0101307789', + nafnMaka: 'Gervimaður útlönd', + hjuskaparkodi: '1', + breytt: '2021-05-26T22:23:40.513', + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019/rikisfang', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kodi: 'IS', + land: 'Ísland', + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019/buseta', + prefixType: 'only-base-path', + response: new Response().withJSONBody([ + { + huskodi: '000031440040', + fasteignanumer: '', + heimilisfang: 'Gullengi 4', + postnumer: '112', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + landakodi: 'IS', + breytt: '2022-07-04T00:00:00', + }, + { + huskodi: '99XT00000000', + fasteignanumer: '', + heimilisfang: 'Afríka ótilgreint', + postnumer: null, + stadur: 'Afríka ótilgreint', + sveitarfelagsnumer: null, + landakodi: 'XT', + breytt: '1992-11-16T00:00:00', + }, + ]), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019/samibuar', + prefixType: 'only-base-path', + response: new Response().withJSONBody(['0101303019']), + }) + + /* Gervimaður útlönd */ + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101307789', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kennitala: '0101307789', + nafn: 'Gervimaður útlönd', + eiginnafn: 'Gervimaður', + millinafn: null, + kenninafn: 'útlönd', + fulltNafn: 'Gervimaður útlönd', + kynkodi: '1', + bannmerking: false, + faedingardagur: '1930-01-01T00:00:00', + logheimili: { + heiti: 'Engihjalli 3', + postnumer: '200', + stadur: 'Kópavogur', + sveitarfelagsnumer: '1000', + }, + adsetur: { + heiti: 'Fellsmúli 2', + postnumer: '108', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + }, + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101307789/hjuskapur', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kennitalaMaka: '0101303019', + nafnMaka: 'Gervimaður Afríka', + hjuskaparkodi: '1', + breytt: '2021-05-26T22:23:40.513', + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101307789/rikisfang', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kodi: 'IS', + land: 'Ísland', + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101307789/faedingarstadur', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + sveitarfelagsnumer: '0000', + stadur: 'Reykjavík', + faedingardagur: '1930-01-01T00:00:00', + }), + }) + + /* Lyklar */ + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/lyklar/hjuskaparkodar/1/1', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kodi: '1', + lysing: 'Ógiftur', + }), + }) +} diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/parentalLeave.mock.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/parentalLeave.mock.ts new file mode 100644 index 000000000000..0190192a4648 --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/parentalLeave.mock.ts @@ -0,0 +1,264 @@ +import { HttpMethod, Response } from '@anev/ts-mountebank' +import addDays from 'date-fns/addDays' +import addMonths from 'date-fns/addMonths' +import formatISO from 'date-fns/formatISO' +import { + Labor, + NationalRegistry, +} from '../../../../../../../../infra/src/dsl/xroad' +import { addXroadMock } from '../../../../../support/wire-mocks' + +export const loadParentalLeaveXroadMocks = async () => { + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kennitala: '0101303019', + nafn: 'Gervimaður Afríka', + eiginnafn: 'Gervimaður', + millinafn: null, + kenninafn: 'Afríka', + fulltNafn: 'Gervimaður Afríka', + kynkodi: '1', + bannmerking: false, + faedingardagur: '1930-01-01T00:00:00', + logheimili: { + heiti: 'Engihjalli 3', + postnumer: '200', + stadur: 'Kópavogur', + sveitarfelagsnumer: '1000', + }, + adsetur: { + heiti: 'Fellsmúli 2', + postnumer: '108', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + }, + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/1111111119', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kennitala: '1111111119', + nafn: 'Stubbur Maack', + eiginnafn: 'Stubbur', + millinafn: null, + kenninafn: 'Maack', + fulltNafn: 'Stubbur Maack', + kynkodi: '3', + bannmerking: false, + faedingardagur: '2011-11-11T00:00:00', + logheimili: { + heiti: 'Engihjalli 3', + postnumer: '200', + stadur: 'Kópavogur', + sveitarfelagsnumer: '1000', + }, + adsetur: { + heiti: 'Fellsmúli 2', + postnumer: '108', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + }, + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101307789', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kennitala: '0101307789', + nafn: 'Gervimaður útlönd', + eiginnafn: 'Gervimaður', + millinafn: null, + kenninafn: 'útlönd', + fulltNafn: 'Gervimaður útlönd', + kynkodi: '1', + bannmerking: false, + faedingardagur: '1930-01-01T00:00:00', + logheimili: { + heiti: 'Engihjalli 3', + postnumer: '200', + stadur: 'Kópavogur', + sveitarfelagsnumer: '1000', + }, + adsetur: { + heiti: 'Fellsmúli 2', + postnumer: '108', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + }, + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019/forsja', + prefixType: 'only-base-path', + response: new Response().withJSONBody(['1111111119']), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019/forsja/1111111119', + prefixType: 'only-base-path', + response: new Response().withJSONBody(['0101307789']), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019/hjuskapur', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + kennitalaMaka: '0101307789', + nafnMaka: 'Gervimaður útlönd', + hjuskaparkodi: '3', + breytt: '2021-05-26T22:23:40.513', + }), + }) + await addXroadMock({ + config: NationalRegistry, + prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', + apiPath: '/api/v1/einstaklingar/0101303019/fjolskyldumedlimir', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + fjolskyldunumer: '0101303019', + einstaklingar: [ + { + kennitala: '0101303019', + nafn: 'Gervimaður Afríka', + eiginnafn: 'Gervimaður', + millinafn: null, + kenninafn: 'Afríka', + fulltNafn: 'Gervimaður Afríka', + kynkodi: '1', + bannmerking: false, + faedingardagur: '1930-01-01T00:00:00', + logheimili: { + heiti: 'Engihjalli 3', + postnumer: '200', + stadur: 'Kópavogur', + sveitarfelagsnumer: '1000', + }, + adsetur: { + heiti: 'Fellsmúli 2', + postnumer: '108', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + }, + }, + { + kennitala: '0101307789', + nafn: 'Gervimaður útlönd', + eiginnafn: 'Gervimaður', + millinafn: null, + kenninafn: 'útlönd', + fulltNafn: 'Gervimaður útlönd', + kynkodi: '1', + bannmerking: false, + faedingardagur: '1930-01-01T00:00:00', + logheimili: { + heiti: 'Engihjalli 3', + postnumer: '200', + stadur: 'Kópavogur', + sveitarfelagsnumer: '1000', + }, + adsetur: { + heiti: 'Fellsmúli 2', + postnumer: '108', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + }, + }, + { + kennitala: '1111111119', + nafn: 'Stubbur Maack', + eiginnafn: 'Stubbur', + millinafn: null, + kenninafn: 'Maack', + fulltNafn: 'Stubbur Maack', + kynkodi: '3', + bannmerking: false, + faedingardagur: '2011-11-11T00:00:00', + logheimili: { + heiti: 'Engihjalli 3', + postnumer: '200', + stadur: 'Kópavogur', + sveitarfelagsnumer: '1000', + }, + adsetur: { + heiti: 'Fellsmúli 2', + postnumer: '108', + stadur: 'Reykjavík', + sveitarfelagsnumer: '0000', + }, + }, + ], + }), + }) + await addXroadMock({ + config: Labor, + prefix: 'XROAD_VMST_API_PATH', + apiPath: '/users/0101303019/parental-leaves/periods/length', + response: new Response().withJSONBody({ + periodLength: 98, + }), + prefixType: 'base-path-with-env', + serviceMemberCode: 'XROAD_VMST_MEMBER_CODE', + }) + await addXroadMock({ + config: Labor, + prefix: 'XROAD_VMST_API_PATH', + serviceMemberCode: 'XROAD_VMST_MEMBER_CODE', + apiPath: '/users/0101303019/parental-leaves', + response: [ + new Response().withJSONBody({ + status: 'TestOK', + }), + new Response().withJSONBody({ + status: 'OK', + id: '23234', + }), + ], + prefixType: 'base-path-with-env', + method: HttpMethod.POST, + }) + await addXroadMock({ + config: Labor, + prefix: 'XROAD_VMST_API_PATH', + serviceMemberCode: 'XROAD_VMST_MEMBER_CODE', + apiPath: '/users/0101303019/parental-leaves', + response: [ + new Response().withJSONBody({ + parentalLeaves: [], + }), + ], + prefixType: 'base-path-with-env', + method: HttpMethod.GET, + }) + const babyBDayRandomFactor = Math.ceil(Math.random() * 85) + await addXroadMock({ + config: Labor, + prefix: 'XROAD_VMST_API_PATH', + serviceMemberCode: 'XROAD_VMST_MEMBER_CODE', + apiPath: '/users/0101303019/pregnancy-status', + response: [ + new Response().withJSONBody({ + hasActivePregnancy: true, + expectedDateOfBirth: formatISO( + addDays(addMonths(new Date(), 6), babyBDayRandomFactor), + { + representation: 'date', + }, + ), + }), + ], + prefixType: 'base-path-with-env', + }) +} diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/socialInsuranceAdministration.mock.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/socialInsuranceAdministration.mock.ts new file mode 100644 index 000000000000..974d07e9eeae --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/mocks/socialInsuranceAdministration.mock.ts @@ -0,0 +1,84 @@ +import { HttpMethod, Response } from '@anev/ts-mountebank' +import { SocialInsuranceAdministration } from '../../../../../../../../infra/src/dsl/xroad' +import { addXroadMock } from '../../../../../support/wire-mocks' + +const setupApplicationMocks = async (applicationType: string) => { + await addXroadMock({ + config: SocialInsuranceAdministration, + prefix: 'XROAD_TR_PATH', + apiPath: `/api/protected/v1/Applicant/${applicationType}/eligible`, + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + isEligible: true, + reason: null, + reasonCode: null, + }), + }) + + await addXroadMock({ + config: SocialInsuranceAdministration, + prefix: 'XROAD_TR_PATH', + apiPath: `/api/protected/v1/Application/${applicationType}`, + response: new Response().withJSONBody({ + applicationLineId: 1234567, + }), + prefixType: 'only-base-path', + method: HttpMethod.POST, + }) +} + +export const loadSocialInsuranceAdministrationXroadMocks = async () => { + await addXroadMock({ + config: SocialInsuranceAdministration, + prefix: 'XROAD_TR_PATH', + apiPath: '/api/protected/v1/General/currencies', + prefixType: 'only-base-path', + response: new Response().withJSONBody([ + 'ZAR', + 'AUD', + 'CAD', + 'CHF', + 'DKK', + 'EUR', + 'GBP', + 'NOK', + 'PLN', + 'SEK', + 'USD', + 'LVL', + 'CZK', + 'SKK', + 'IKR', + 'LTL', + 'VND', + 'BGN', + 'RUB', + 'CNY', + 'ALL', + 'LEI', + 'UAH', + 'HUF', + ]), + }) + await addXroadMock({ + config: SocialInsuranceAdministration, + prefix: 'XROAD_TR_PATH', + apiPath: '/api/protected/v1/Applicant', + prefixType: 'only-base-path', + response: new Response().withJSONBody({ + emailAddress: 'mail@mail.is', + phoneNumber: null, + bankAccount: { + bank: '2222', + ledger: '00', + accountNumber: '123456', + }, + }), + }) + + await setupApplicationMocks('oldagepension') + await setupApplicationMocks('halfoldagepension') + await setupApplicationMocks('additionalsupportfortheelderly') + await setupApplicationMocks('pensionsupplement') + await setupApplicationMocks('householdsupplement') +} diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/parental-leave.spec.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/parental-leave.spec.ts index d891a031f6e3..c96b83f18f84 100644 --- a/apps/system-e2e/src/tests/islandis/application-system/acceptance/parental-leave.spec.ts +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/parental-leave.spec.ts @@ -23,6 +23,7 @@ import { import { helpers } from '../../../../support/locator-helpers' import { session } from '../../../../support/session' import { setupXroadMocks } from './setup-xroad.mocks' +import { createMockPdf, deleteMockPdf } from '../../../../support/utils' test.use({ baseURL: urls.islandisBaseUrl }) @@ -323,6 +324,19 @@ test.describe('Parental leave', () => { name: label(parentalLeaveFormMessages.attachmentScreen.title), }), ).toBeVisible() + + // Upload additional document + createMockPdf() + const fileChooserPromise = page.waitForEvent('filechooser') + await page + .getByRole('button', { + name: label(parentalLeaveFormMessages.fileUpload.attachmentButton), + }) + .click() + const filechooser = await fileChooserPromise + await filechooser.setFiles('./mockPdf.pdf') + await page.waitForTimeout(1000) + deleteMockPdf() await proceed() // These are your rights diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/setup-xroad.mocks.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/setup-xroad.mocks.ts index 7cc248b10d7d..f5f0475faa59 100644 --- a/apps/system-e2e/src/tests/islandis/application-system/acceptance/setup-xroad.mocks.ts +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/setup-xroad.mocks.ts @@ -1,288 +1,20 @@ -import { - addXroadMock, - resetMocks, - wildcard, -} from '../../../../support/wire-mocks' -import { HttpMethod, Response } from '@anev/ts-mountebank' -import { EinstaklingsupplysingarToJSON } from '@island.is/clients/national-registry-v2' -import { - Base, - Labor, - NationalRegistry, -} from '../../../../../../../infra/src/dsl/xroad' -import { PostParentalLeaveResponseToJSON } from '@island.is/clients/vmst' -import formatISO from 'date-fns/formatISO' -import addDays from 'date-fns/addDays' -import addMonths from 'date-fns/addMonths' import { getEnvVariables } from '../../../../../../../infra/src/dsl/service-to-environment/pre-process-service' -import { env } from '../../../../support/urls' import { EnvironmentConfig } from '../../../../../../../infra/src/dsl/types/charts' +import { Base } from '../../../../../../../infra/src/dsl/xroad' +import { env } from '../../../../support/urls' +import { resetMocks, wildcard } from '../../../../support/wire-mocks' +import { loadParentalLeaveXroadMocks } from './mocks/parentalLeave.mock' +import { loadSocialInsuranceAdministrationXroadMocks } from './mocks/socialInsuranceAdministration.mock' +import { loadNationalRegistryXroadMocks } from './mocks/nationalRegistry.mock' export const setupXroadMocks = async () => { await resetMocks() - await addXroadMock({ - config: NationalRegistry, - prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', - apiPath: '/api/v1/einstaklingar/0101303019', - prefixType: 'only-base-path', - response: new Response().withJSONBody( - EinstaklingsupplysingarToJSON({ - kennitala: '0101303019', - nafn: 'Gervimaður Afríka', - eiginnafn: 'Gervimaður', - millinafn: null, - kenninafn: 'Afríka', - fulltNafn: 'Gervimaður Afríka', - kynkodi: '1', - bannmerking: false, - faedingardagur: new Date('1930-01-01T00:00:00'), - logheimili: { - heiti: 'Engihjalli 3', - postnumer: '200', - stadur: 'Kópavogur', - sveitarfelagsnumer: '1000', - }, - adsetur: { - heiti: 'Fellsmúli 2', - postnumer: '108', - stadur: 'Reykjavík', - sveitarfelagsnumer: '0000', - }, - }), - ), - }) - await addXroadMock({ - config: NationalRegistry, - prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', - apiPath: '/api/v1/einstaklingar/1111111119', - prefixType: 'only-base-path', - response: new Response().withJSONBody( - EinstaklingsupplysingarToJSON({ - kennitala: '1111111119', - nafn: 'Stubbur Maack', - eiginnafn: 'Stubbur', - millinafn: null, - kenninafn: 'Maack', - fulltNafn: 'Stubbur Maack', - kynkodi: '3', - bannmerking: false, - faedingardagur: new Date('2011-11-11T00:00:00'), - logheimili: { - heiti: 'Engihjalli 3', - postnumer: '200', - stadur: 'Kópavogur', - sveitarfelagsnumer: '1000', - }, - adsetur: { - heiti: 'Fellsmúli 2', - postnumer: '108', - stadur: 'Reykjavík', - sveitarfelagsnumer: '0000', - }, - }), - ), - }) - await addXroadMock({ - config: NationalRegistry, - prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', - apiPath: '/api/v1/einstaklingar/0101307789', - prefixType: 'only-base-path', - response: new Response().withJSONBody( - EinstaklingsupplysingarToJSON({ - kennitala: '0101307789', - nafn: 'Gervimaður útlönd', - eiginnafn: 'Gervimaður', - millinafn: null, - kenninafn: 'útlönd', - fulltNafn: 'Gervimaður útlönd', - kynkodi: '1', - bannmerking: false, - faedingardagur: new Date('1930-01-01T00:00:00'), - logheimili: { - heiti: 'Engihjalli 3', - postnumer: '200', - stadur: 'Kópavogur', - sveitarfelagsnumer: '1000', - }, - adsetur: { - heiti: 'Fellsmúli 2', - postnumer: '108', - stadur: 'Reykjavík', - sveitarfelagsnumer: '0000', - }, - }), - ), - }) - await addXroadMock({ - config: NationalRegistry, - prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', - apiPath: '/api/v1/einstaklingar/0101303019/forsja', - prefixType: 'only-base-path', - response: new Response().withJSONBody(['1111111119']), - }) - await addXroadMock({ - config: NationalRegistry, - prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', - apiPath: '/api/v1/einstaklingar/0101303019/forsja/1111111119', - prefixType: 'only-base-path', - response: new Response().withJSONBody(['0101307789']), - }) - await addXroadMock({ - config: NationalRegistry, - prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', - apiPath: '/api/v1/einstaklingar/0101303019/hjuskapur', - prefixType: 'only-base-path', - response: new Response().withJSONBody({ - kennitalaMaka: '0101307789', - nafnMaka: 'Gervimaður útlönd', - hjuskaparkodi: '3', - breytt: '2021-05-26T22:23:40.513', - }), - }) - await addXroadMock({ - config: NationalRegistry, - prefix: 'XROAD_NATIONAL_REGISTRY_SERVICE_PATH', - apiPath: '/api/v1/einstaklingar/0101303019/fjolskyldumedlimir', - prefixType: 'only-base-path', - response: new Response().withJSONBody({ - fjolskyldunumer: '0101303019', - einstaklingar: [ - { - kennitala: '0101303019', - nafn: 'Gervimaður Afríka', - eiginnafn: 'Gervimaður', - millinafn: null, - kenninafn: 'Afríka', - fulltNafn: 'Gervimaður Afríka', - kynkodi: '1', - bannmerking: false, - faedingardagur: '1930-01-01T00:00:00', - logheimili: { - heiti: 'Engihjalli 3', - postnumer: '200', - stadur: 'Kópavogur', - sveitarfelagsnumer: '1000', - }, - adsetur: { - heiti: 'Fellsmúli 2', - postnumer: '108', - stadur: 'Reykjavík', - sveitarfelagsnumer: '0000', - }, - }, - { - kennitala: '0101307789', - nafn: 'Gervimaður útlönd', - eiginnafn: 'Gervimaður', - millinafn: null, - kenninafn: 'útlönd', - fulltNafn: 'Gervimaður útlönd', - kynkodi: '1', - bannmerking: false, - faedingardagur: '1930-01-01T00:00:00', - logheimili: { - heiti: 'Engihjalli 3', - postnumer: '200', - stadur: 'Kópavogur', - sveitarfelagsnumer: '1000', - }, - adsetur: { - heiti: 'Fellsmúli 2', - postnumer: '108', - stadur: 'Reykjavík', - sveitarfelagsnumer: '0000', - }, - }, - { - kennitala: '1111111119', - nafn: 'Stubbur Maack', - eiginnafn: 'Stubbur', - millinafn: null, - kenninafn: 'Maack', - fulltNafn: 'Stubbur Maack', - kynkodi: '3', - bannmerking: false, - faedingardagur: '2011-11-11T00:00:00', - logheimili: { - heiti: 'Engihjalli 3', - postnumer: '200', - stadur: 'Kópavogur', - sveitarfelagsnumer: '1000', - }, - adsetur: { - heiti: 'Fellsmúli 2', - postnumer: '108', - stadur: 'Reykjavík', - sveitarfelagsnumer: '0000', - }, - }, - ], - }), - }) - await addXroadMock({ - config: Labor, - prefix: 'XROAD_VMST_API_PATH', - apiPath: '/users/0101303019/parental-leaves/periods/length', - response: new Response().withJSONBody({ - periodLength: 98, - }), - prefixType: 'base-path-with-env', - serviceMemberCode: 'XROAD_VMST_MEMBER_CODE', - }) - await addXroadMock({ - config: Labor, - prefix: 'XROAD_VMST_API_PATH', - serviceMemberCode: 'XROAD_VMST_MEMBER_CODE', - apiPath: '/users/0101303019/parental-leaves', - response: [ - new Response().withJSONBody( - PostParentalLeaveResponseToJSON({ - status: 'TestOK', - }), - ), - new Response().withJSONBody( - PostParentalLeaveResponseToJSON({ - status: 'OK', - id: '23234', - }), - ), - ], - prefixType: 'base-path-with-env', - method: HttpMethod.POST, - }) - await addXroadMock({ - config: Labor, - prefix: 'XROAD_VMST_API_PATH', - serviceMemberCode: 'XROAD_VMST_MEMBER_CODE', - apiPath: '/users/0101303019/parental-leaves', - response: [ - new Response().withJSONBody({ - parentalLeaves: [], - }), - ], - prefixType: 'base-path-with-env', - method: HttpMethod.GET, - }) - const babyBDayRandomFactor = Math.ceil(Math.random() * 85) - await addXroadMock({ - config: Labor, - prefix: 'XROAD_VMST_API_PATH', - serviceMemberCode: 'XROAD_VMST_MEMBER_CODE', - apiPath: '/users/0101303019/pregnancy-status', - response: [ - new Response().withJSONBody({ - hasActivePregnancy: true, - expectedDateOfBirth: formatISO( - addDays(addMonths(new Date(), 6), babyBDayRandomFactor), - { - representation: 'date', - }, - ), - }), - ], - prefixType: 'base-path-with-env', - }) + /* Xroad mocks */ + await loadParentalLeaveXroadMocks() + await loadSocialInsuranceAdministrationXroadMocks() + await loadNationalRegistryXroadMocks() + const { envs } = getEnvVariables(Base.getEnv(), 'system-e2e', env) const xroadBasePath = envs['XROAD_BASE_PATH'] const path = @@ -294,6 +26,5 @@ export const setupXroadMocks = async () => { }, env: {} as EnvironmentConfig, }) - await wildcard(path) } diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/additional-support-for-the-elderly.spec.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/additional-support-for-the-elderly.spec.ts new file mode 100644 index 000000000000..cd0beb0e65b0 --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/additional-support-for-the-elderly.spec.ts @@ -0,0 +1,105 @@ +import { socialInsuranceAdministrationMessage } from '@island.is/application/templates/social-insurance-administration-core/lib/messages' +import { test as base, expect, Page } from '@playwright/test' +import { + disableI18n, + disablePreviousApplications, +} from '../../../../../support/disablers' +import { label } from '../../../../../support/i18n' +import { session } from '../../../../../support/session' +import { setupXroadMocks } from '../setup-xroad.mocks' +import { + additionalAttachments, + expectHeadingToBeVisible, + fillApplicantInfo, + fillPaymentInfo, + selectPeriod, + submitApplication, + writeComment, +} from './shared' + +const homeUrl = '/umsoknir/felagslegur-vidbotarstudningur' + +const applicationTest = base.extend<{ applicationPage: Page }>({ + applicationPage: async ({ browser }, use) => { + const applicationContext = await session({ + browser, + homeUrl, + phoneNumber: '0103019', // Gervimaður Afríka + idsLoginOn: true, + }) + + const applicationPage = await applicationContext.newPage() + await disablePreviousApplications(applicationPage) + await disableI18n(applicationPage) + await applicationPage.goto(homeUrl) + await expect(applicationPage).toBeApplication( + 'felagslegur-vidbotarstudningur', + ) + await setupXroadMocks() + await use(applicationPage) + + await applicationPage.close() + await applicationContext.close() + }, +}) + +applicationTest.describe('Additional support for the elderly', () => { + applicationTest( + 'Should complete Additional support for the elderly application successfully', + async ({ applicationPage }) => { + const page = applicationPage + + await applicationTest.step('Agree to data providers', async () => { + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.pre.externalDataSection, + ) + await page.getByTestId('agree-to-data-providers').click() + await page + .getByRole('button', { + name: label( + socialInsuranceAdministrationMessage.pre.startApplication, + ), + }) + .click() + }) + + await applicationTest.step('Fill in applicant info', () => + fillApplicantInfo(page), + ) + + await applicationTest.step('Fill in payment information', () => + fillPaymentInfo(page, true), + ) + + await applicationTest.step('Select period', () => selectPeriod(page)) + + await applicationTest.step( + 'Check that additional documents header is visible', + () => additionalAttachments(page), + ) + + await applicationTest.step('Write comment', () => writeComment(page)) + + await applicationTest.step('Submit application', () => + submitApplication(page), + ) + + await applicationTest.step( + 'Check that conclusion screen header is visible', + async () => { + await expect( + page + .getByRole('heading', { + name: label( + socialInsuranceAdministrationMessage.conclusionScreen + .receivedAwaitingIncomePlanTitle, + ), + }) + .first(), + ).toBeVisible() + }, + ) + }, + ) +}) diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/household-supplement.spec.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/household-supplement.spec.ts new file mode 100644 index 000000000000..2827ea5c8238 --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/household-supplement.spec.ts @@ -0,0 +1,140 @@ +import { socialInsuranceAdministrationMessage } from '@island.is/application/templates/social-insurance-administration-core/lib/messages' +import { householdSupplementFormMessage } from '@island.is/application/templates/social-insurance-administration/household-supplement' +import { test as base, expect, Page } from '@playwright/test' +import { + disableI18n, + disablePreviousApplications, +} from '../../../../../support/disablers' +import { label } from '../../../../../support/i18n' +import { helpers } from '../../../../../support/locator-helpers' +import { session } from '../../../../../support/session' +import { setupXroadMocks } from '../setup-xroad.mocks' +import { + additionalAttachments, + expectHeadingToBeVisible, + fillApplicantInfo, + fillPaymentInfo, + selectPeriod, + submitApplication, + writeComment, +} from './shared' + +const homeUrl = '/umsoknir/heimilisuppbot' + +const applicationTest = base.extend<{ applicationPage: Page }>({ + applicationPage: async ({ browser }, use) => { + const applicationContext = await session({ + browser, + homeUrl, + phoneNumber: '0103019', // Gervimaður Afríka + idsLoginOn: true, + }) + + const applicationPage = await applicationContext.newPage() + await disablePreviousApplications(applicationPage) + await disableI18n(applicationPage) + await applicationPage.goto(homeUrl) + await expect(applicationPage).toBeApplication() + await setupXroadMocks() + await use(applicationPage) + + await applicationPage.close() + await applicationContext.close() + }, +}) + +applicationTest.describe('Household Supplement', () => { + applicationTest( + 'Should complete Household Supplement application successfully', + async ({ applicationPage }) => { + const page = applicationPage + const { proceed } = helpers(page) + + await applicationTest.step('Agree to data providers', async () => { + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.pre.externalDataSection, + ) + await page.getByTestId('agree-to-data-providers').click() + await page + .getByRole('button', { + name: label( + socialInsuranceAdministrationMessage.pre.startApplication, + ), + }) + .click() + }) + + await applicationTest.step('Fill in applicant info', () => + fillApplicantInfo(page), + ) + + await applicationTest.step('Fill in payment information', () => + fillPaymentInfo(page, false), + ) + + await applicationTest.step('Household supplement', async () => { + await expectHeadingToBeVisible( + page, + householdSupplementFormMessage.shared.householdSupplement, + ) + + await page + .getByRole('region', { + name: label( + householdSupplementFormMessage.info.householdSupplementHousing, + ), + }) + .getByRole('radio', { + name: label( + householdSupplementFormMessage.info + .householdSupplementHousingOwner, + ), + }) + .click() + + await page + .getByRole('region', { + name: label( + householdSupplementFormMessage.info + .householdSupplementChildrenBetween18And25, + ), + }) + .getByRole('radio', { + name: label(socialInsuranceAdministrationMessage.shared.no), + }) + .click() + await proceed() + }) + + await applicationTest.step('Select period', () => selectPeriod(page)) + + await applicationTest.step( + 'Check that additional documents header is visible', + () => additionalAttachments(page), + ) + + await applicationTest.step('Write comment', () => writeComment(page)) + + await applicationTest.step('Submit application', () => + submitApplication(page), + ) + + await applicationTest.step( + 'Check that conclusion screen header is visible', + async () => { + await expect( + page + .getByRole('heading', { + name: label( + socialInsuranceAdministrationMessage.conclusionScreen + .receivedTitle, + ), + }) + .first(), + ).toBeVisible() + }, + ) + }, + ) +}) diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/old-age-pension.spec.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/old-age-pension.spec.ts new file mode 100644 index 000000000000..580622c31d55 --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/old-age-pension.spec.ts @@ -0,0 +1,229 @@ +import { socialInsuranceAdministrationMessage } from '@island.is/application/templates/social-insurance-administration-core/lib/messages' +import { oldAgePensionFormMessage } from '@island.is/application/templates/social-insurance-administration/old-age-pension' +import { test as base, expect, Page } from '@playwright/test' +import { + disableI18n, + disablePreviousApplications, +} from '../../../../../support/disablers' +import { label } from '../../../../../support/i18n' +import { helpers } from '../../../../../support/locator-helpers' +import { session } from '../../../../../support/session' +import { setupXroadMocks } from '../setup-xroad.mocks' +import { + additionalAttachments, + expectHeadingToBeVisible, + fillApplicantInfo, + fillPaymentInfo, + selectPeriod, + submitApplication, + writeComment, +} from './shared' + +const oldAgeApplicationTest = async (page: Page, applicationType: string) => { + const { proceed } = helpers(page) + + await applicationTest.step('Select type of application', async () => { + await expectHeadingToBeVisible( + page, + oldAgePensionFormMessage.pre.applicationTypeTitle, + ) + await page.getByTestId(applicationType).click() + await proceed() + }) + + await applicationTest.step('Agree to data providers', async () => { + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.pre.externalDataSection, + ) + await page.getByTestId('agree-to-data-providers').click() + await proceed() + }) + + await applicationTest.step( + 'Answer pension fund question and start application', + async () => { + await expectHeadingToBeVisible( + page, + oldAgePensionFormMessage.pre.questionTitle, + ) + await page + .getByRole('radio', { + name: label(socialInsuranceAdministrationMessage.shared.yes), + }) + .click() + await page + .getByRole('button', { + name: label( + socialInsuranceAdministrationMessage.pre.startApplication, + ), + }) + .click() + }, + ) + + await applicationTest.step('Fill in applicant info', () => + fillApplicantInfo(page), + ) + + await applicationTest.step('Fill in payment information', () => + fillPaymentInfo(page, true), + ) + + await applicationTest.step('One payment per year', async () => { + await expectHeadingToBeVisible( + page, + oldAgePensionFormMessage.onePaymentPerYear.onePaymentPerYearTitle, + ) + await page + .getByRole('radio', { + name: label(socialInsuranceAdministrationMessage.shared.no), + }) + .click() + await proceed() + }) + + await applicationTest.step('View residence history', async () => { + await expectHeadingToBeVisible( + page, + oldAgePensionFormMessage.residence.residenceHistoryTitle, + ) + await proceed() + }) + + if (applicationType === 'half-old-age-pension') { + await applicationTest.step('Self-employed or employee', async () => { + await expectHeadingToBeVisible( + page, + oldAgePensionFormMessage.employer.selfEmployedOrEmployeeTitle, + ) + + await page + .getByRole('radio', { + name: label(oldAgePensionFormMessage.employer.employee), + }) + .click() + await proceed() + }) + + await applicationTest.step('Employer registration', async () => { + await expectHeadingToBeVisible( + page, + oldAgePensionFormMessage.employer.registrationTitle, + ) + + const employerEmail = page.getByRole('textbox', { + name: label(oldAgePensionFormMessage.employer.email), + }) + await employerEmail.selectText() + await employerEmail.fill('mockEmail@mail.is') + + await page + .getByRole('radio', { + name: label(oldAgePensionFormMessage.employer.ratioYearly), + }) + .click() + + const employmentRatio = page.getByRole('textbox', { + name: label(oldAgePensionFormMessage.employer.ratio), + }) + await employmentRatio.selectText() + await employmentRatio.fill('50') + await proceed() + }) + + await applicationTest.step('Employers', async () => { + await expectHeadingToBeVisible( + page, + oldAgePensionFormMessage.employer.employerTitle, + ) + await proceed() + }) + } + + await applicationTest.step('Select period', () => selectPeriod(page)) + + await applicationTest.step( + 'Check that attachments for pension payments header is visible', + async () => { + await expectHeadingToBeVisible( + page, + oldAgePensionFormMessage.fileUpload.pensionFileTitle, + ) + await proceed() + }, + ) + + await applicationTest.step( + 'Check that additional documents header is visible', + () => additionalAttachments(page), + ) + + await applicationTest.step('Write comment', () => writeComment(page)) + + await applicationTest.step('Submit application', () => + submitApplication(page), + ) + + await applicationTest.step( + 'Check that conclusion screen header is visible', + async () => { + await expect( + page + .getByRole('heading', { + name: label( + socialInsuranceAdministrationMessage.conclusionScreen + .receivedAwaitingIncomePlanTitle, + ), + }) + .first(), + ).toBeVisible() + }, + ) +} + +const homeUrl = '/umsoknir/ellilifeyrir' + +const applicationTest = base.extend<{ applicationPage: Page }>({ + applicationPage: async ({ browser }, use) => { + const applicationContext = await session({ + browser, + homeUrl, + phoneNumber: '0103019', // Gervimaður Afríka + idsLoginOn: true, + }) + + const applicationPage = await applicationContext.newPage() + await disablePreviousApplications(applicationPage) + await disableI18n(applicationPage) + await applicationPage.goto(homeUrl) + await expect(applicationPage).toBeApplication() + await setupXroadMocks() + await use(applicationPage) + + await applicationPage.close() + await applicationContext.close() + }, +}) + +applicationTest.describe('Old Age Pension', () => { + applicationTest( + 'Should complete Old Age Pension application successfully', + async ({ applicationPage }) => { + const page = applicationPage + + await oldAgeApplicationTest(page, 'old-age-pension') + }, + ) +}) + +applicationTest.describe('Half Old Age Pension', () => { + applicationTest( + 'Should complete Half Old Age Pension application successfully', + async ({ applicationPage }) => { + const page = applicationPage + + await oldAgeApplicationTest(page, 'half-old-age-pension') + }, + ) +}) diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/pension-supplement.spec.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/pension-supplement.spec.ts new file mode 100644 index 000000000000..3df87bc4404e --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/pension-supplement.spec.ts @@ -0,0 +1,126 @@ +import { socialInsuranceAdministrationMessage } from '@island.is/application/templates/social-insurance-administration-core/lib/messages' +import { pensionSupplementFormMessage } from '@island.is/application/templates/social-insurance-administration/pension-supplement' +import { test as base, expect, Page } from '@playwright/test' +import { + disableI18n, + disablePreviousApplications, +} from '../../../../../support/disablers' +import { label } from '../../../../../support/i18n' +import { helpers } from '../../../../../support/locator-helpers' +import { session } from '../../../../../support/session' +import { setupXroadMocks } from '../setup-xroad.mocks' +import { + additionalAttachments, + expectHeadingToBeVisible, + fillApplicantInfo, + fillPaymentInfo, + selectPeriod, + submitApplication, + writeComment, +} from './shared' + +const homeUrl = '/umsoknir/uppbot-a-lifeyri' + +const applicationTest = base.extend<{ applicationPage: Page }>({ + applicationPage: async ({ browser }, use) => { + const applicationContext = await session({ + browser, + homeUrl, + phoneNumber: '0103019', // Gervimaður Afríka + idsLoginOn: true, + }) + + const applicationPage = await applicationContext.newPage() + await disablePreviousApplications(applicationPage) + await disableI18n(applicationPage) + await applicationPage.goto(homeUrl) + await expect(applicationPage).toBeApplication('uppbot-a-lifeyri') + await setupXroadMocks() + await use(applicationPage) + + await applicationPage.close() + await applicationContext.close() + }, +}) + +applicationTest.describe('Pension Supplement', () => { + applicationTest( + 'Should complete Pension Supplement application successfully', + async ({ applicationPage }) => { + const page = applicationPage + const { proceed } = helpers(page) + + await applicationTest.step('Agree to data providers', async () => { + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.pre.externalDataSection, + ) + await page.getByTestId('agree-to-data-providers').click() + await page + .getByRole('button', { + name: label( + socialInsuranceAdministrationMessage.pre.startApplication, + ), + }) + .click() + }) + + await applicationTest.step('Fill in applicant info', () => + fillApplicantInfo(page), + ) + + await applicationTest.step('Fill in payment information', () => + fillPaymentInfo(page, false), + ) + + await applicationTest.step('Select application reason', async () => { + await expectHeadingToBeVisible( + page, + pensionSupplementFormMessage.applicationReason.title, + ) + + await page + .getByRole('region', { + name: label(pensionSupplementFormMessage.applicationReason.title), + }) + .getByRole('checkbox', { + name: label( + pensionSupplementFormMessage.applicationReason.medicineCost, + ), + }) + .click() + + await proceed() + }) + + await applicationTest.step('Select period', () => selectPeriod(page)) + + await applicationTest.step( + 'Check that additional documents header is visible', + () => additionalAttachments(page), + ) + + await applicationTest.step('Write comment', () => writeComment(page)) + + await applicationTest.step('Submit application', () => + submitApplication(page), + ) + + await applicationTest.step( + 'Check that conclusion screen header is visible', + async () => { + await expect( + page + .getByRole('heading', { + name: label( + socialInsuranceAdministrationMessage.conclusionScreen + .receivedTitle, + ), + }) + .first(), + ).toBeVisible() + }, + ) + }, + ) +}) diff --git a/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/shared.ts b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/shared.ts new file mode 100644 index 000000000000..f48d38e521e2 --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/application-system/acceptance/social-insurance-administration/shared.ts @@ -0,0 +1,136 @@ +import { socialInsuranceAdministrationMessage } from '@island.is/application/templates/social-insurance-administration-core/lib/messages' +import { expect, Page } from '@playwright/test' +import { MessageDescriptor } from 'react-intl' +import { label } from '../../../../../support/i18n' +import { helpers } from '../../../../../support/locator-helpers' + +export const expectHeadingToBeVisible = async ( + page: Page, + message: MessageDescriptor, +) => { + await expect( + page.getByRole('heading', { + name: label(message), + }), + ).toBeVisible() +} + +export const fillApplicantInfo = async (page: Page) => { + const { proceed } = helpers(page) + + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.info.infoSubSectionTitle, + ) + + const phoneNumber = page.getByRole('textbox', { + name: label(socialInsuranceAdministrationMessage.info.applicantPhonenumber), + }) + await phoneNumber.selectText() + await phoneNumber.fill('6555555') + await proceed() +} + +export const fillPaymentInfo = async (page: Page, includeTax: boolean) => { + const { proceed } = helpers(page) + + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.payment.title, + ) + const paymentBank = page.getByRole('textbox', { + name: label(socialInsuranceAdministrationMessage.payment.bank), + }) + await paymentBank.selectText() + await paymentBank.fill('051226054678') + + if (includeTax) { + await page + .getByRole('region', { + name: label( + socialInsuranceAdministrationMessage.payment.personalAllowance, + ), + }) + .getByRole('radio', { + name: label(socialInsuranceAdministrationMessage.shared.yes), + }) + .click() + + const personalAllowance = page.getByTestId('personal-allowance-usage') + await personalAllowance.selectText() + await personalAllowance.fill('100') + + await page + .getByRole('region', { + name: label(socialInsuranceAdministrationMessage.payment.taxLevel), + }) + .getByRole('radio', { + name: label( + socialInsuranceAdministrationMessage.payment.taxIncomeLevel, + ), + }) + .click() + } + await proceed() +} + +export const selectPeriod = async (page: Page) => { + const { proceed } = helpers(page) + + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.period.title, + ) + + await page.getByTestId('select-period.year').click() + await page.keyboard.press('Enter') + + await page.getByTestId('select-period.month').click() + await page.keyboard.press('ArrowUp') + await page.keyboard.press('Enter') + await proceed() +} + +export const additionalAttachments = async (page: Page) => { + const { proceed } = helpers(page) + + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.fileUpload.additionalFileTitle, + ) + await proceed() +} + +export const writeComment = async (page: Page) => { + const { proceed } = helpers(page) + + await expectHeadingToBeVisible( + page, + socialInsuranceAdministrationMessage.additionalInfo.commentSection, + ) + await page + .getByPlaceholder( + label( + socialInsuranceAdministrationMessage.additionalInfo.commentPlaceholder, + ), + ) + .fill( + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In vehicula malesuada augue, sit amet pulvinar tortor pellentesque at. Nulla facilisi. Nunc vel mi ac mi commodo rhoncus sit amet ut neque.', + ) + await proceed() +} + +export const submitApplication = async (page: Page) => { + await expect( + page + .locator('form') + .getByText( + label(socialInsuranceAdministrationMessage.confirm.overviewTitle), + ), + ).toBeVisible() + await page + .getByRole('button', { + name: label(socialInsuranceAdministrationMessage.confirm.submitButton), + }) + .click() +} diff --git a/apps/system-e2e/src/tests/islandis/service-portal/acceptance/mocks/education.mock.ts b/apps/system-e2e/src/tests/islandis/service-portal/acceptance/mocks/education.mock.ts new file mode 100644 index 000000000000..1a13f965d729 --- /dev/null +++ b/apps/system-e2e/src/tests/islandis/service-portal/acceptance/mocks/education.mock.ts @@ -0,0 +1,203 @@ +import { addXroadMock } from '../../../../../support/wire-mocks' +import { HttpMethod, Response } from '@anev/ts-mountebank' +import { + Education, + HealthInsurance, +} from '../../../../../../../../infra/src/dsl/xroad' +import { StudentAssessmentViewModel } from '@island.is/clients/mms/grade' + +const mockObject: StudentAssessmentViewModel = { + einkunnir: [ + { + bekkur: 4, + namsgreinar: [ + { + heiti: 'Testlenskan', + dagsetning: new Date(1990, 1, 1), + haefnieinkunn: 'Glæsó', + haefnieinkunnStada: 'A+123', + samtals: { + heiti: 'bing', + radeinkunn: { + einkunn: '99', + heiti: 'Raðeinkunn', + vaegi: 0, + }, + grunnskolaeinkunn: { + einkunn: '67', + heiti: 'Grunnskólaeinkunn', + vaegi: 0, + }, + }, + framfaraTexti: { + einkunn: 'Framfarir eru flottar og mikilvægar jibbí', + heiti: 'Framfaratexti', + vaegi: 0, + }, + einkunnir: [ + { + heiti: 'Lesskilningur', + radeinkunn: { + einkunn: '896', + heiti: 'Lesskilningur, raðeinkunn', + vaegi: 97, + }, + grunnskolaeinkunn: { + einkunn: '2', + heiti: 'Lesskilningur, Grunnskólaeinkunn', + vaegi: 97, + }, + }, + { + heiti: 'Málnotkun', + radeinkunn: { + einkunn: '896', + heiti: 'Málnotkun, raðeinkunn', + vaegi: 64, + }, + grunnskolaeinkunn: { + einkunn: '2', + heiti: 'Málnotkun, Grunnskólaeinkunn', + vaegi: 965, + }, + }, + ], + ordOgTalnadaemi: { + einkunn: 'Test svipað gott í öllum fögum', + heiti: 'Frammistaða í hinu og þessu', + vaegi: 0, + }, + }, + { + heiti: 'Stærðófræðó', + dagsetning: new Date(1650, 1, 1), + haefnieinkunn: 'Slæm', + haefnieinkunnStada: 'F--', + samtals: { + heiti: 'bunrb', + radeinkunn: { + einkunn: '3', + heiti: 'Raðeinkunn', + vaegi: 0, + }, + grunnskolaeinkunn: { + einkunn: '8765', + heiti: 'Grunnskólaeinkunn', + vaegi: 0, + }, + }, + framfaraTexti: { + einkunn: 'Framfarir eru lit', + heiti: 'Framfaratexti', + vaegi: 0, + }, + einkunnir: [ + { + heiti: 'Samlagning', + radeinkunn: { + einkunn: '88', + heiti: 'Samlagning, raðeinkunn', + vaegi: 97, + }, + grunnskolaeinkunn: { + einkunn: '287692', + heiti: 'Samlagning, Grunnskólaeinkunn', + vaegi: 97, + }, + }, + { + heiti: 'Ekki gera vitlaust', + radeinkunn: { + einkunn: '89756', + heiti: 'Málnotkun, raðeinkunn', + vaegi: 64, + }, + grunnskolaeinkunn: { + einkunn: '-7654', + heiti: 'Málnotkun, Grunnskólaeinkunn', + vaegi: 965, + }, + }, + ], + ordOgTalnadaemi: { + einkunn: 'L+elegt', + heiti: 'Frekar', + vaegi: 0, + }, + }, + ], + }, + { + bekkur: 9, + namsgreinar: [ + { + heiti: 'Bíngó', + dagsetning: new Date(1990, 1, 1), + haefnieinkunn: 'Glæsó', + haefnieinkunnStada: 'A+123', + samtals: { + heiti: 'goieo', + radeinkunn: { + einkunn: '99', + heiti: 'Raðeinkunn', + vaegi: 0, + }, + grunnskolaeinkunn: { + einkunn: '67', + heiti: 'Grunnskólaeinkunn', + vaegi: 0, + }, + }, + framfaraTexti: { + einkunn: 'Framfarir eru flottar og mikilvægar jibbí', + heiti: 'Framfaratexti', + vaegi: 0, + }, + einkunnir: [ + { + heiti: 'Lesskilningur', + radeinkunn: { + einkunn: '896', + heiti: 'Lesskilningur, raðeinkunn', + vaegi: 97, + }, + grunnskolaeinkunn: { + einkunn: '2', + heiti: 'Lesskilningur, Grunnskólaeinkunn', + vaegi: 97, + }, + }, + { + heiti: 'Málnotkun', + radeinkunn: { + einkunn: '896', + heiti: 'Málnotkun, raðeinkunn', + vaegi: 64, + }, + grunnskolaeinkunn: { + einkunn: '2', + heiti: 'Málnotkun, Grunnskólaeinkunn', + vaegi: 965, + }, + }, + ], + ordOgTalnadaemi: { + einkunn: 'Bah', + heiti: 'Hab', + vaegi: 0, + }, + }, + ], + }, + ], +} + +export const loadEducationXroadMocks = async () => { + await addXroadMock({ + prefixType: 'only-base-path', + config: Education, + prefix: 'XROAD_MMS_GRADE_SERVICE_ID', + apiPath: '/api/v2/public/studentAssessments/0101302399', + response: [new Response().withJSONBody(mockObject)], + }) +} diff --git a/apps/system-e2e/src/tests/islandis/service-portal/acceptance/setup-xroad.mocks.ts b/apps/system-e2e/src/tests/islandis/service-portal/acceptance/setup-xroad.mocks.ts index 3f48d47a8bee..1be727f724d3 100644 --- a/apps/system-e2e/src/tests/islandis/service-portal/acceptance/setup-xroad.mocks.ts +++ b/apps/system-e2e/src/tests/islandis/service-portal/acceptance/setup-xroad.mocks.ts @@ -8,6 +8,7 @@ import { loadHealthInsuranceXroadMocks } from './mocks/healthInsurance.mock' import { loadSocialInsuranceXroadMocks } from './mocks/socialInsurance.mock' import { loadLicensesXroadMocks } from './mocks/licenses.mock' import { loadOccupationalLicensesXroadMocks } from './mocks/occupationalLicenses.mock' +import { loadEducationXroadMocks } from './mocks/education.mock' export const setupXroadMocks = async () => { await resetMocks() @@ -18,6 +19,7 @@ export const setupXroadMocks = async () => { await loadSocialInsuranceXroadMocks() await loadLicensesXroadMocks() await loadOccupationalLicensesXroadMocks() + await loadEducationXroadMocks() const { envs } = getEnvVariables(Base.getEnv(), 'system-e2e', env) const xroadBasePath = envs['XROAD_BASE_PATH'] diff --git a/apps/system-e2e/src/tests/judicial-system/regression/custody-tests.spec.ts b/apps/system-e2e/src/tests/judicial-system/regression/custody-tests.spec.ts index ab73431c37a9..02a1294a6276 100644 --- a/apps/system-e2e/src/tests/judicial-system/regression/custody-tests.spec.ts +++ b/apps/system-e2e/src/tests/judicial-system/regression/custody-tests.spec.ts @@ -63,14 +63,14 @@ test.describe.serial('Custody tests', () => { .fill(randomPoliceCaseNumber()) await page.getByRole('button', { name: 'Skrá númer' }).click() await page.getByRole('checkbox').first().check() - await page.locator('input[name=accusedName]').fill(faker.name.findName()) + await page.locator('input[name=inputName]').fill(faker.name.findName()) await page.locator('input[name=accusedAddress]').fill('Einhversstaðar 1') await page.locator('#defendantGender').click() await page.locator('#react-select-defendantGender-option-0').click() await page - .locator('input[id=react-select-defenderName-input]') + .locator('input[id=react-select-advocateName-input]') .fill('Saul Goodman') - await page.locator('#react-select-defenderName-option-0').click() + await page.locator('#react-select-advocateName-option-0').click() await page .locator('input[name=defenderEmail]') .fill('jl+auto+defender@kolibri.is') diff --git a/apps/system-e2e/src/tests/judicial-system/regression/indictment-tests.spec.ts b/apps/system-e2e/src/tests/judicial-system/regression/indictment-tests.spec.ts index 032baf8fb428..b8b723faa91c 100644 --- a/apps/system-e2e/src/tests/judicial-system/regression/indictment-tests.spec.ts +++ b/apps/system-e2e/src/tests/judicial-system/regression/indictment-tests.spec.ts @@ -39,11 +39,11 @@ test.describe.serial('Indictment tests', () => { await page .getByRole('checkbox', { name: 'Ákærði er ekki með íslenska kennitölu' }) .check() - await page.getByTestId('nationalId').click() - await page.getByTestId('nationalId').fill('01.01.2000') - await page.getByTestId('accusedName').click() - await page.getByTestId('accusedName').fill(accusedName) - await page.getByTestId('accusedName').press('Tab') + await page.getByTestId('inputNationalId').click() + await page.getByTestId('inputNationalId').fill('01.01.2000') + await page.getByTestId('inputName').click() + await page.getByTestId('inputName').fill(accusedName) + await page.getByTestId('inputName').press('Tab') await page.getByTestId('accusedAddress').fill('Testgata 12') await page.locator('#defendantGender').click() await page.locator('#react-select-defendantGender-option-0').click() @@ -78,10 +78,15 @@ test.describe.serial('Indictment tests', () => { page.getByText('Játar sök').click(), verifyRequestCompletion(page, '/api/graphql', 'UpdateDefendant'), ]) + await Promise.all([ + page.getByText('Nei').last().click(), + verifyRequestCompletion(page, '/api/graphql', 'UpdateCase'), + ]) await Promise.all([ page.getByTestId('continueButton').click(), verifyRequestCompletion(page, '/api/graphql', 'Case'), ]) + // Case files await expect(page).toHaveURL(`/akaera/domskjol/${caseId}`) diff --git a/apps/system-e2e/src/tests/judicial-system/regression/search-warrant-tests.spec.ts b/apps/system-e2e/src/tests/judicial-system/regression/search-warrant-tests.spec.ts index 40fd809eac8f..64e139713d95 100644 --- a/apps/system-e2e/src/tests/judicial-system/regression/search-warrant-tests.spec.ts +++ b/apps/system-e2e/src/tests/judicial-system/regression/search-warrant-tests.spec.ts @@ -41,7 +41,7 @@ test.describe.serial('Search warrant tests', () => { await page.locator('#type').click() await page.locator('#react-select-type-option-0').click() await page.getByRole('checkbox').first().check() - await page.locator('input[name=accusedName]').fill(faker.name.findName()) + await page.locator('input[name=inputName]').fill(faker.name.findName()) await page.locator('input[name=accusedAddress]').fill('Einhversstaðar 1') await page.locator('#defendantGender').click() await page.locator('#react-select-defendantGender-option-0').click() diff --git a/apps/web/components/BulletList/BulletList.tsx b/apps/web/components/BulletList/BulletList.tsx index a27f8461fa7e..fce3ad987af8 100644 --- a/apps/web/components/BulletList/BulletList.tsx +++ b/apps/web/components/BulletList/BulletList.tsx @@ -49,7 +49,12 @@ export const BulletList: FC<React.PropsWithChildren<BulletListProps>> = ({ <Text>{bullet.body}</Text> {bullet.url && bullet.linkText && ( <Link href={bullet.url}> - <Button as="span" variant="text" icon="arrowForward"> + <Button + as="span" + variant="text" + icon="arrowForward" + unfocusable + > {bullet.linkText} </Button> </Link> diff --git a/apps/web/components/Charts/v2/utils/format.ts b/apps/web/components/Charts/v2/utils/format.ts index f324f599f1df..275429276ed2 100644 --- a/apps/web/components/Charts/v2/utils/format.ts +++ b/apps/web/components/Charts/v2/utils/format.ts @@ -43,12 +43,12 @@ export const formatValueForPresentation = ( let divider = 1 let postfix = '' - let precision = 0 + let precision = increasePrecisionBy if (reduceAndRoundValue && value >= 1e6) { divider = 1e6 postfix = messages[activeLocale].millionPostfix - precision = 1 + increasePrecisionBy + precision += 1 } else if (reduceAndRoundValue && value >= 1e4) { divider = 1e3 postfix = messages[activeLocale].thousandPostfix diff --git a/apps/web/components/ChatPanel/WatsonChatPanel/WatsonChatPanel.tsx b/apps/web/components/ChatPanel/WatsonChatPanel/WatsonChatPanel.tsx index 1948e5c00e39..568cd54432f3 100644 --- a/apps/web/components/ChatPanel/WatsonChatPanel/WatsonChatPanel.tsx +++ b/apps/web/components/ChatPanel/WatsonChatPanel/WatsonChatPanel.tsx @@ -30,7 +30,6 @@ import { SUBMIT_WATSON_ASSISTANT_CHAT_FEEDBACK } from '@island.is/web/screens/qu import { ChatBubble } from '../ChatBubble' import { WatsonChatPanelProps } from '../types' import type { WatsonInstance, WatsonInstanceEvent } from './types' -import { onAuthenticatedWatsonAssistantChatLoad } from './utils' import * as styles from './WatsonChatPanel.css' const chatLog: WatsonInstanceEvent[] = [] @@ -295,6 +294,20 @@ export const WatsonChatPanel = (props: WatsonChatPanelProps) => { const namespaceValue = namespace?.[namespaceKey] ?? {} const { cssVariables, ...languagePack } = namespaceValue + const replaceDirectorateOfImmigrationWebChatWithAI = Boolean( + namespace?.replaceDirectorateOfImmigrationWebChatWithAI, + ) + + const propsCopy = { ...props } + + if ( + !replaceDirectorateOfImmigrationWebChatWithAI && + props.integrationID === '9e320784-ad44-4da9-9eb3-f305057a196a' + ) { + propsCopy.integrationID = '89a03e83-5c73-4642-b5ba-cd3771ceca54' + propsCopy.serviceInstanceID = 'bc3d8312-d862-4750-b8bf-529db282050a' + } + let scriptElement: HTMLScriptElement | null = null const queryParam = new URLSearchParams(window.location.search).get('wa_lid') @@ -322,7 +335,7 @@ export const WatsonChatPanel = (props: WatsonChatPanelProps) => { serviceDesk: { skipConnectAgentCard: true, }, - ...props, + ...propsCopy, onLoad: (instance) => { watsonInstance.current = instance if (Object.keys(cssVariables).length > 0) { @@ -335,10 +348,7 @@ export const WatsonChatPanel = (props: WatsonChatPanelProps) => { if ( // Útlendingastofnun props.integrationID !== '89a03e83-5c73-4642-b5ba-cd3771ceca54' && - // Samgöngustofa - props.integrationID !== 'fe12e960-329c-46d5-9ae1-8bd8b8219f43' && - // Samgöngustofa - english - props.integrationID !== '1e649a3f-9476-4995-ba24-0e72040b0cc0' + props.integrationID !== '9e320784-ad44-4da9-9eb3-f305057a196a' ) { // Keep the chat log in memory instance.on({ @@ -374,18 +384,6 @@ export const WatsonChatPanel = (props: WatsonChatPanelProps) => { }) } - if ( - // Askur - Útlendingastofnun - props.integrationID === '89a03e83-5c73-4642-b5ba-cd3771ceca54' - ) { - onAuthenticatedWatsonAssistantChatLoad( - instance, - namespace, - activeLocale, - 'directorateOfImmigration', - ) - } - if (onLoad) { onLoad(instance) } diff --git a/apps/web/components/ChatPanel/WatsonChatPanel/utils.ts b/apps/web/components/ChatPanel/WatsonChatPanel/utils.ts index c92633b2310e..4fca64b996ab 100644 --- a/apps/web/components/ChatPanel/WatsonChatPanel/utils.ts +++ b/apps/web/components/ChatPanel/WatsonChatPanel/utils.ts @@ -1,7 +1,7 @@ -import { Locale } from '@island.is/shared/types' import { uuid } from 'uuidv4' import { ApolloClient, NormalizedCacheObject } from '@apollo/client' +import { Locale } from '@island.is/shared/types' import { storageFactory } from '@island.is/shared/utils' import initApollo from '@island.is/web/graphql/client' import { diff --git a/apps/web/components/ChatPanel/types.ts b/apps/web/components/ChatPanel/types.ts index 4f3ce121546c..86aee28e8b9b 100644 --- a/apps/web/components/ChatPanel/types.ts +++ b/apps/web/components/ChatPanel/types.ts @@ -49,6 +49,9 @@ export type WatsonIntegration = // Útlendingastofnun | '89a03e83-5c73-4642-b5ba-cd3771ceca54' + // Útlendingastofnun - english + | '9e320784-ad44-4da9-9eb3-f305057a196a' + // Sjúkratryggingar | 'e625e707-c9ce-4048-802c-c12b905c28be' @@ -71,11 +74,13 @@ export type WatsonIntegration = | '98ba51da-1677-4881-a133-7ea019ae7b87' // Samgöngustofa - | 'fe12e960-329c-46d5-9ae1-8bd8b8219f43' + | 'b0b445a4-4c49-4c79-9731-8d03f49c8cac' // Samgöngustofa - english - | '1e649a3f-9476-4995-ba24-0e72040b0cc0' + | 'ee1c15db-7151-4487-bc9a-9f32f1f8ae3b' export type WatsonServiceInstance = // Askur - 'bc3d8312-d862-4750-b8bf-529db282050a' + | 'bc3d8312-d862-4750-b8bf-529db282050a' + // Útlendingastofnun - english + | '2529638b-503c-4374-955c-0310139ec177' diff --git a/apps/web/components/GenericList/GenericList.css.ts b/apps/web/components/GenericList/GenericList.css.ts index 9757125080eb..3aaa6a2380ef 100644 --- a/apps/web/components/GenericList/GenericList.css.ts +++ b/apps/web/components/GenericList/GenericList.css.ts @@ -3,3 +3,7 @@ import { style } from '@vanilla-extract/css' export const clickableItemTopRowContainer = style({ minHeight: '30px', }) + +export const filterTagsContainer = style({ + minHeight: '32px', +}) diff --git a/apps/web/components/GenericList/GenericList.tsx b/apps/web/components/GenericList/GenericList.tsx index 8c1bb39fab5b..d717d1616388 100644 --- a/apps/web/components/GenericList/GenericList.tsx +++ b/apps/web/components/GenericList/GenericList.tsx @@ -16,6 +16,7 @@ import { GridContainer, GridRow, Icon, + type IconProps, Inline, Pagination, Stack, @@ -71,9 +72,9 @@ interface ItemProps { item: GenericListItem } -const NonClickableItem = ({ item }: ItemProps) => { +export const NonClickableItem = ({ item }: ItemProps) => { const { format } = useDateUtils() - + const filterTags = item.filterTags ?? [] return ( <Box padding={[2, 2, 3]} @@ -95,29 +96,50 @@ const NonClickableItem = ({ item }: ItemProps) => { <Box>{webRichText(item.cardIntro ?? [])}</Box> )} </Stack> - <Inline space={1}> - {item.filterTags?.map((tag) => ( - <Tag disabled={true} variant="purple" outlined={true} key={tag.id}> - {tag.title} - </Tag> - ))} - </Inline> + {filterTags.length > 0 && ( + <Inline space={1}> + {filterTags.map((tag) => ( + <Tag + disabled={true} + variant="purple" + outlined={true} + key={tag.id} + > + {tag.title} + </Tag> + ))} + </Inline> + )} </Stack> </Box> ) } -const ClickableItem = ({ item }: ItemProps) => { +interface ClickableItemProps { + item: ItemProps['item'] + baseUrl?: string +} + +export const ClickableItem = ({ item, baseUrl }: ClickableItemProps) => { const { format } = useDateUtils() const router = useRouter() - const pathname = new URL(router.asPath, 'https://island.is').pathname + const pathname = new URL(baseUrl || router.asPath, 'https://island.is') + .pathname + + let icon: IconProps['icon'] | null = null let href = item.slug ? `${pathname}/${item.slug}` : undefined if (item.assetUrl) { href = item.assetUrl + icon = 'document' + } else if (item.externalUrl) { + href = item.externalUrl + icon = 'open' } + const filterTags = item.filterTags ?? [] + return ( <FocusableBox padding={[2, 2, 3]} @@ -136,12 +158,12 @@ const ClickableItem = ({ item }: ItemProps) => { <Text variant="eyebrow" color="purple400"> {item.date && format(new Date(item.date), 'dd.MM.yyyy')} </Text> - {item.assetUrl && ( + {icon && ( <Icon size="medium" type="outline" color="blue400" - icon="document" + icon={icon} /> )} </Inline> @@ -154,18 +176,20 @@ const ClickableItem = ({ item }: ItemProps) => { <Box>{webRichText(item.cardIntro ?? [])}</Box> )} </Box> - <Inline space={1}> - {item.filterTags?.map((tag) => ( - <Tag - disabled={true} - variant="purple" - outlined={true} - key={tag.id} - > - {tag.title} - </Tag> - ))} - </Inline> + {filterTags.length > 0 && ( + <Inline space={1}> + {filterTags.map((tag) => ( + <Tag + disabled={true} + variant="purple" + outlined={true} + key={tag.id} + > + {tag.title} + </Tag> + ))} + </Inline> + )} </Stack> </Box> </FocusableBox> @@ -173,22 +197,34 @@ const ClickableItem = ({ item }: ItemProps) => { } interface GenericListProps { - id: string searchInputPlaceholder?: string | null - itemType?: string | null filterTags?: GenericTag[] | null + searchQueryId: string + pageQueryId: string + tagQueryId: string + fetchListItems: (props: { + page: number + searchValue: string + tags: string[] + tagGroups: Record<string, string[]> + }) => void + loading: boolean + totalItems: number + displayError: boolean } export const GenericList = ({ - id, searchInputPlaceholder, - itemType, filterTags, -}: GenericListProps) => { - const searchQueryId = `${id}q` - const pageQueryId = `${id}page` - const tagQueryId = `${id}tag` - + searchQueryId, + pageQueryId, + tagQueryId, + fetchListItems, + totalItems, + loading, + displayError, + children, +}: React.PropsWithChildren<GenericListProps>) => { const [searchValue, setSearchValue] = useQueryState(searchQueryId) const [page, setPage] = useQueryState(pageQueryId, parseAsInteger) const [parameters, setParameters] = useQueryState<Record<string, string[]>>( @@ -211,62 +247,21 @@ export const GenericList = ({ return categories }, [filterTags, parameters]) - const [itemsResponse, setItemsResponse] = - useState<GenericListItemResponse | null>(null) - const [errorOccurred, setErrorOccurred] = useState(false) const ref = useRef<HTMLElement | null>(null) const { activeLocale } = useI18n() - const [fetchListItems, { loading }] = useLazyQuery< - Query, - GetGenericListItemsQueryVariables - >(GET_GENERIC_LIST_ITEMS_QUERY, { - onCompleted(data) { - const searchParams = new URLSearchParams(window.location.search) - - const queryString = searchParams.get(searchQueryId) || '' - const pageQuery = searchParams.get(pageQueryId) || '1' - const tagQuery = searchParams.get(tagQueryId) || '{}' - - const tags: string[] = flatten(Object.values(JSON.parse(tagQuery))) - - if ( - // Make sure the response matches the request input - queryString === data?.getGenericListItems?.input?.queryString && - pageQuery === data?.getGenericListItems?.input?.page?.toString() && - tags.every((tag) => - (data?.getGenericListItems?.input?.tags ?? []).includes(tag), - ) - ) { - setItemsResponse(data.getGenericListItems) - setErrorOccurred(false) - } - }, - onError(_) { - setErrorOccurred(true) - }, - }) - useDebounce( () => { const selectedCategories: string[] = [] filterCategories.forEach((c) => c.selected.forEach((t) => selectedCategories.push(t)), ) - fetchListItems({ - variables: { - input: { - genericListId: id, - size: ITEMS_PER_PAGE, - lang: activeLocale, - page: page ?? 1, - queryString: searchValue || '', - tags: selectedCategories, - tagGroups: getGenericTagGroupHierarchy(filterCategories), - }, - }, + page: page ?? 1, + searchValue: searchValue || '', + tags: selectedCategories, + tagGroups: getGenericTagGroupHierarchy(filterCategories), }) }, DEBOUNCE_TIME_IN_MS, @@ -281,16 +276,11 @@ export const GenericList = ({ setIsMobile(width < theme.breakpoints.md) }, [width]) - const totalItems = itemsResponse?.total ?? 0 - const items = itemsResponse?.items ?? [] - const noResultsFoundText = activeLocale === 'is' ? 'Engar niðurstöður fundust' : 'No results found' const resultsFoundText = getResultsFoundText(totalItems, activeLocale) - const itemsAreClickable = itemType === 'Clickable' - const totalPages = Math.ceil(totalItems / ITEMS_PER_PAGE) const filterInputComponent = ( @@ -309,12 +299,53 @@ export const GenericList = ({ const selectedFilters = extractFilterTags(filterCategories) + const selectedFiltersComponent = ( + <Box className={styles.filterTagsContainer}> + <Inline space={1} alignY="top"> + {selectedFilters.length > 0 && ( + <Text>{activeLocale === 'is' ? 'Síað eftir:' : 'Filtered by:'}</Text> + )} + <Inline space={1}> + {selectedFilters.map(({ value, label, category }) => ( + <FilterTag + key={value} + active={true} + onClick={() => { + setParameters((prevParameters) => { + const updatedParameters = { + ...prevParameters, + [category]: (prevParameters?.[category] ?? []).filter( + (prevValue) => prevValue !== value, + ), + } + + // Make sure we clear out the query params from the url when there is nothing selected + if ( + Object.values(updatedParameters).every( + (s) => !s || s.length === 0, + ) + ) { + return null + } + + return updatedParameters + }) + }} + > + {label} + </FilterTag> + ))} + </Inline> + </Inline> + </Box> + ) + return ( <Box paddingBottom={3}> <GridContainer> - <Stack space={5}> + <Stack space={4}> <Box ref={ref}> - {filterCategories.length > 0 && ( + {filterCategories.length > 1 && ( <Stack space={4}> <Stack space={3}> {isMobile && filterInputComponent} @@ -349,6 +380,7 @@ export const GenericList = ({ variant={isMobile ? 'dialog' : 'popover'} onFilterClear={() => { setParameters(null) + setPage(null) }} filterInput={filterInputComponent} > @@ -359,6 +391,7 @@ export const GenericList = ({ : 'Clear selection' } onChange={({ categoryId, selected }) => { + setPage(null) setParameters((prevParameters) => { // Make sure we clear out the query params from the url when there is nothing selected if ( @@ -378,6 +411,7 @@ export const GenericList = ({ }) }} onClear={(categoryId) => { + setPage(null) setParameters((prevParameters) => { const updatedParameters = { ...prevParameters, @@ -400,42 +434,54 @@ export const GenericList = ({ /> </Filter> </Stack> + {selectedFiltersComponent} + </Stack> + )} + {filterCategories.length <= 1 && ( + <Stack space={4}> + <Stack space={3}> + {filterInputComponent} + {selectedFilters.length > 0 && selectedFiltersComponent} + </Stack> <Inline space={1}> - {selectedFilters.map(({ value, label, category }) => ( - <FilterTag - key={value} - onClick={() => { - setParameters((prevParameters) => { - const updatedParameters = { - ...prevParameters, - [category]: ( - prevParameters?.[category] ?? [] - ).filter((prevValue) => prevValue !== value), - } - - // Make sure we clear out the query params from the url when there is nothing selected - if ( - Object.values(updatedParameters).every( - (s) => !s || s.length === 0, - ) - ) { - return null - } - - return updatedParameters - }) - }} - > - {label} - </FilterTag> - ))} + {filterTags + ?.filter((tag) => { + const isActive = Boolean( + selectedFilters.find( + (filter) => filter.value === tag.slug, + ), + ) + return !isActive + }) + .map((tag) => { + const category = tag.genericTagGroup?.slug + const value = tag.slug + const label = tag.title + return ( + <Tag + key={tag.id} + onClick={() => { + if (!category) { + return + } + setParameters((prevParameters) => ({ + ...prevParameters, + [category]: ( + prevParameters?.[category] ?? [] + ).concat(value), + })) + }} + > + {label} + </Tag> + ) + })} </Inline> </Stack> )} - {filterCategories.length === 0 && filterInputComponent} </Box> - {errorOccurred && ( + {displayError && ( <AlertMessage type="warning" title={activeLocale === 'is' ? 'Villa kom upp' : 'Error occurred'} @@ -446,10 +492,10 @@ export const GenericList = ({ } /> )} - {itemsResponse && items.length === 0 && ( + {totalItems === 0 && !displayError && !loading && ( <Text>{noResultsFoundText}</Text> )} - {items.length > 0 && ( + {totalItems > 0 && ( <Stack space={3}> <Inline space={2} justifyContent="spaceBetween" alignY="center"> <Text> @@ -462,28 +508,7 @@ export const GenericList = ({ </Text> )} </Inline> - <GridContainer> - <GridRow rowGap={3}> - {!itemsAreClickable && - items.map((item) => ( - <GridColumn - key={item.id} - span={['1/1', '1/1', '1/1', '1/1', '1/2']} - > - <NonClickableItem item={item} /> - </GridColumn> - ))} - {itemsAreClickable && - items.map((item) => ( - <GridColumn - key={item.id} - span={['1/1', '1/1', '1/1', '1/1', '1/2']} - > - <ClickableItem item={item} /> - </GridColumn> - ))} - </GridRow> - </GridContainer> + {children} </Stack> )} @@ -518,3 +543,107 @@ export const GenericList = ({ </Box> ) } + +interface GenericListWrapperProps { + id: string + searchInputPlaceholder?: string | null + itemType?: string | null + filterTags?: GenericTag[] | null +} + +export const GenericListWrapper = ({ + id, + filterTags, + itemType, + searchInputPlaceholder, +}: GenericListWrapperProps) => { + const searchQueryId = `${id}q` + const pageQueryId = `${id}page` + const tagQueryId = `${id}tag` + + const { activeLocale } = useI18n() + + const [itemsResponse, setItemsResponse] = + useState<GenericListItemResponse | null>(null) + const [errorOccurred, setErrorOccurred] = useState(false) + + const [fetchListItems, { loading, called }] = useLazyQuery< + Query, + GetGenericListItemsQueryVariables + >(GET_GENERIC_LIST_ITEMS_QUERY, { + onCompleted(data) { + const searchParams = new URLSearchParams(window.location.search) + + const queryString = searchParams.get(searchQueryId) || '' + const pageQuery = searchParams.get(pageQueryId) || '1' + const tagQuery = searchParams.get(tagQueryId) || '{}' + + const tags: string[] = flatten(Object.values(JSON.parse(tagQuery))) + + if ( + // Make sure the response matches the request input + queryString === data?.getGenericListItems?.input?.queryString && + pageQuery === data?.getGenericListItems?.input?.page?.toString() && + tags.every((tag) => + (data?.getGenericListItems?.input?.tags ?? []).includes(tag), + ) + ) { + setItemsResponse(data.getGenericListItems) + setErrorOccurred(false) + } + }, + onError(_) { + setErrorOccurred(true) + }, + }) + + const totalItems = itemsResponse?.total ?? 0 + const items = itemsResponse?.items ?? [] + + const itemsAreClickable = itemType === 'Clickable' + + return ( + <GenericList + filterTags={filterTags} + searchInputPlaceholder={searchInputPlaceholder} + displayError={errorOccurred} + fetchListItems={({ page, searchValue, tags, tagGroups }) => { + fetchListItems({ + variables: { + input: { + genericListId: id, + size: ITEMS_PER_PAGE, + lang: activeLocale, + page: page, + queryString: searchValue, + tags, + tagGroups, + }, + }, + }) + }} + totalItems={totalItems} + loading={loading || !called} + pageQueryId={pageQueryId} + searchQueryId={searchQueryId} + tagQueryId={tagQueryId} + > + <GridContainer> + <GridRow rowGap={3}> + {!itemsAreClickable && + items.map((item) => ( + <GridColumn key={item.id} span="1/1"> + <NonClickableItem item={item} /> + </GridColumn> + ))} + {itemsAreClickable && + items.map((item) => ( + <GridColumn key={item.id} span="1/1"> + <ClickableItem item={item} /> + </GridColumn> + ))} + </GridRow> + </GridContainer> + </GenericList> + ) +} diff --git a/apps/web/components/GenericList/LatestGenericListItems/LatestGenericListItems.tsx b/apps/web/components/GenericList/LatestGenericListItems/LatestGenericListItems.tsx new file mode 100644 index 000000000000..c8dcb640d93d --- /dev/null +++ b/apps/web/components/GenericList/LatestGenericListItems/LatestGenericListItems.tsx @@ -0,0 +1,78 @@ +import { Box, Button, LinkV2, Stack } from '@island.is/island-ui/core' +import { Text } from '@island.is/island-ui/core' +import { LatestGenericListItems as LatestGenericListItemsSchema } from '@island.is/web/graphql/schema' +import { useLinkResolver } from '@island.is/web/hooks' + +import { ClickableItem, NonClickableItem } from '../GenericList' + +interface LatestGenericListItemsProps { + slice: LatestGenericListItemsSchema +} + +export const LatestGenericListItems = ({ + slice, +}: LatestGenericListItemsProps) => { + const { linkResolver } = useLinkResolver() + + const items = slice.itemResponse?.items ?? [] + if (items.length === 0) { + return null + } + + // Only allow organization subpage links as is + let seeMoreLinkHref = '' + if ( + slice.seeMorePage?.__typename === 'OrganizationSubpage' && + slice.seeMorePage.organizationPage?.slug && + slice.seeMorePage.slug + ) { + seeMoreLinkHref = linkResolver('organizationsubpage', [ + slice.seeMorePage.organizationPage.slug, + slice.seeMorePage.slug, + ]).href + } + + const itemsAreClickable = + slice.genericList?.itemType === 'Clickable' && + slice.seeMoreLinkText && + seeMoreLinkHref + + return ( + <Stack space={6}> + <Stack space={3}> + {slice.title && <Text variant="h2">{slice.title}</Text>} + <Stack space={4}> + {!itemsAreClickable && + items.map((item) => <NonClickableItem key={item.id} item={item} />)} + {itemsAreClickable && + items.map((item) => ( + <ClickableItem + key={item.id} + item={item} + baseUrl={seeMoreLinkHref} + /> + ))} + </Stack> + </Stack> + {slice.seeMoreLinkText && seeMoreLinkHref && ( + <Box + display="flex" + flexDirection="row" + justifyContent="flexEnd" + alignItems="center" + > + <LinkV2 href={seeMoreLinkHref}> + <Button + icon="arrowForward" + iconType="filled" + variant="text" + as="span" + > + {slice.seeMoreLinkText} + </Button> + </LinkV2> + </Box> + )} + </Stack> + ) +} diff --git a/apps/web/components/Header/Header.tsx b/apps/web/components/Header/Header.tsx index b0ab4d768c57..45abcfdcd5e6 100644 --- a/apps/web/components/Header/Header.tsx +++ b/apps/web/components/Header/Header.tsx @@ -120,6 +120,7 @@ export const Header: FC<React.PropsWithChildren<HeaderProps>> = ({ buttonColorScheme={buttonColorScheme} onMenuOpen={webMenuButtonClicked} organizationSearchFilter={organizationSearchFilter} + languageToggleQueryParams={languageToggleQueryParams} /> </Box> </Box> diff --git a/apps/web/components/LanguageToggler/LanguageToggler.tsx b/apps/web/components/LanguageToggler/LanguageToggler.tsx index 18acbb753c27..c7463bfb48e4 100644 --- a/apps/web/components/LanguageToggler/LanguageToggler.tsx +++ b/apps/web/components/LanguageToggler/LanguageToggler.tsx @@ -61,7 +61,14 @@ export const LanguageToggler = ({ if (pagePath === '/404') { return setShowDialog(true) } else { - return Router.push(pagePath) + const queryParamsString = new URLSearchParams( + queryParams?.[otherLanguage], + ).toString() + return Router.push( + `${pagePath}${ + queryParamsString.length > 0 ? '?' + queryParamsString : '' + }`, + ) } } diff --git a/apps/web/components/Menu/Menu.tsx b/apps/web/components/Menu/Menu.tsx index 88a371db5243..11619bd68a9d 100644 --- a/apps/web/components/Menu/Menu.tsx +++ b/apps/web/components/Menu/Menu.tsx @@ -11,6 +11,7 @@ import { import { SearchInput } from '@island.is/web/components' import { LinkResolverResponse } from '@island.is/web/hooks/useLinkResolver' import { useI18n } from '@island.is/web/i18n' +import type { LayoutProps } from '@island.is/web/layouts/main' import { LanguageToggler } from '../LanguageToggler' @@ -29,6 +30,7 @@ interface Props { buttonColorScheme?: ButtonTypes['colorScheme'] onMenuOpen?: () => void organizationSearchFilter?: string + languageToggleQueryParams?: LayoutProps['languageToggleQueryParams'] } const minarsidurLink = '/minarsidur/' @@ -41,6 +43,7 @@ export const Menu = ({ buttonColorScheme = 'default', onMenuOpen, organizationSearchFilter, + languageToggleQueryParams, }: Props) => { const searchInput = useRef<HTMLInputElement>() const { activeLocale, t } = useI18n() @@ -133,6 +136,7 @@ export const Menu = ({ dialogId={ isMobile ? 'menu-language-toggle-mobile' : 'menu-language-toggle' } + queryParams={languageToggleQueryParams} /> )} renderSearch={(input, closeModal) => ( diff --git a/apps/web/components/OfficialJournalOfIceland/OJOIAdvertCard.tsx b/apps/web/components/OfficialJournalOfIceland/OJOIAdvertCard.tsx index 10b9a8959e02..fe375bbe25fa 100644 --- a/apps/web/components/OfficialJournalOfIceland/OJOIAdvertCard.tsx +++ b/apps/web/components/OfficialJournalOfIceland/OJOIAdvertCard.tsx @@ -59,9 +59,15 @@ export const OJOIAdvertCard = ({ <Text>{title}</Text> </Box> )} - <Box display="flex" justifyContent="spaceBetween" marginTop={2}> + <Box + display="flex" + flexWrap="wrap" + justifyContent="spaceBetween" + marginTop={2} + rowGap={1} + > {categories && categories.length && ( - <Box display="flex" rowGap={1} columnGap={1}> + <Box display="flex" rowGap={1} columnGap={1} flexWrap="wrap"> {categories.map((cat) => { return ( <Tag key={cat} variant="blue" outlined disabled> diff --git a/apps/web/components/OfficialJournalOfIceland/OJOIAdvertCards.tsx b/apps/web/components/OfficialJournalOfIceland/OJOIAdvertCards.tsx new file mode 100644 index 000000000000..6d1992a3ac6d --- /dev/null +++ b/apps/web/components/OfficialJournalOfIceland/OJOIAdvertCards.tsx @@ -0,0 +1,30 @@ +import { OfficialJournalOfIcelandAdvertsResponse } from '@island.is/api/schema' +import { Stack } from '@island.is/island-ui/core' +import { Locale } from '@island.is/shared/types' +import { linkResolver } from '@island.is/web/hooks' + +import { OJOIAdvertCard } from './OJOIAdvertCard' + +type Props = { + adverts?: OfficialJournalOfIcelandAdvertsResponse['adverts'] + locale: Locale +} + +export const OJOIAdvertCards = ({ adverts, locale }: Props) => { + return ( + <Stack space={3}> + {adverts?.map((ad) => ( + <OJOIAdvertCard + key={ad.id} + institution={ad.involvedParty?.title} + department={ad.department?.title} + publicationNumber={ad.publicationNumber?.full} + publicationDate={ad.publicationDate} + title={ad.title} + categories={ad.categories?.map((cat) => cat.title)} + link={linkResolver('ojoiadvert', [ad.id], locale).href} + /> + ))} + </Stack> + ) +} diff --git a/apps/web/components/OfficialJournalOfIceland/OJOISearchListView.tsx b/apps/web/components/OfficialJournalOfIceland/OJOISearchListView.tsx index 8cbcf8420a1e..8c850f198515 100644 --- a/apps/web/components/OfficialJournalOfIceland/OJOISearchListView.tsx +++ b/apps/web/components/OfficialJournalOfIceland/OJOISearchListView.tsx @@ -10,7 +10,7 @@ export const OJOISearchListView = ({ adverts, locale, }: { - adverts: OfficialJournalOfIcelandAdvertsResponse['adverts'] + adverts?: OfficialJournalOfIcelandAdvertsResponse['adverts'] locale: Locale }) => { const { linkResolver } = useLinkResolver() @@ -27,7 +27,7 @@ export const OJOISearchListView = ({ </T.Row> </T.Head> <T.Body> - {adverts.map((ad) => ( + {adverts?.map((ad) => ( <T.Row key={ad.id}> <T.Data> <Text variant="small" whiteSpace="nowrap"> diff --git a/apps/web/components/OfficialJournalOfIceland/OJOIUtils.ts b/apps/web/components/OfficialJournalOfIceland/OJOIUtils.ts index 0c60d31b0225..e731a8059ea3 100644 --- a/apps/web/components/OfficialJournalOfIceland/OJOIUtils.ts +++ b/apps/web/components/OfficialJournalOfIceland/OJOIUtils.ts @@ -17,7 +17,9 @@ export const splitArrayIntoGroups = <T>(array: Array<T>, groupSize: number) => { ) } -export const removeEmptyFromObject = (obj: Record<string, string>) => { +export const removeEmptyFromObject = ( + obj: Record<string, string | number | Date | undefined>, +) => { return Object.entries(obj) .filter(([_, v]) => !!v) .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {}) diff --git a/apps/web/components/OfficialJournalOfIceland/index.ts b/apps/web/components/OfficialJournalOfIceland/index.ts index a158dddec859..086db5cea94b 100644 --- a/apps/web/components/OfficialJournalOfIceland/index.ts +++ b/apps/web/components/OfficialJournalOfIceland/index.ts @@ -4,4 +4,5 @@ export { OJOIAdvertDisplay } from './OJOIAdvertDisplay' export { OJOIAdvertCard } from './OJOIAdvertCard' export { OJOISearchListView } from './OJOISearchListView' export { OJOISearchGridView } from './OJOISearchGridView' +export { OJOIAdvertCards } from './OJOIAdvertCards' export * from './OJOIUtils' diff --git a/apps/web/components/Organization/MarkdownText/MarkdownText.tsx b/apps/web/components/Organization/MarkdownText/MarkdownText.tsx index d2266de2df6c..a28544a9f807 100644 --- a/apps/web/components/Organization/MarkdownText/MarkdownText.tsx +++ b/apps/web/components/Organization/MarkdownText/MarkdownText.tsx @@ -1,17 +1,29 @@ +import React from 'react' import Markdown from 'markdown-to-jsx' + import { Bullet, BulletList, Text, TextProps } from '@island.is/island-ui/core' -import React from 'react' + import * as styles from './MarkdownText.css' interface MarkdownTextProps { children: string color?: TextProps['color'] variant?: TextProps['variant'] + replaceNewLinesWithBreaks?: boolean } export const MarkdownText: React.FC< React.PropsWithChildren<MarkdownTextProps> -> = ({ children, color = null, variant = 'default' }) => { +> = ({ + children, + color = null, + variant = 'default', + replaceNewLinesWithBreaks = true, +}) => { + const processedChildren = replaceNewLinesWithBreaks + ? (children as string).replace(/\n/gi, '<br>') + : children + return ( <div className={styles.markdownText}> <Markdown @@ -59,7 +71,7 @@ export const MarkdownText: React.FC< }, }} > - {(children as string).replace(/\n/gi, '<br>')} + {processedChildren} </Markdown> </div> ) diff --git a/apps/web/components/Organization/OrganizationIslandFooter/OrganizationIslandFooter.tsx b/apps/web/components/Organization/OrganizationIslandFooter/OrganizationIslandFooter.tsx index feab84a33cb7..4e8a19ec5786 100644 --- a/apps/web/components/Organization/OrganizationIslandFooter/OrganizationIslandFooter.tsx +++ b/apps/web/components/Organization/OrganizationIslandFooter/OrganizationIslandFooter.tsx @@ -26,7 +26,7 @@ export const OrganizationIslandFooter = () => { }) const namespace = useMemo( - () => JSON.parse(data?.getNamespace?.fields ?? '{}'), + () => JSON.parse(data?.getNamespace?.fields || '{}'), [data?.getNamespace?.fields], ) diff --git a/apps/web/components/Organization/Slice/AccordionSlice/AccordionSlice.tsx b/apps/web/components/Organization/Slice/AccordionSlice/AccordionSlice.tsx index 5d24e2df9b57..603778145701 100644 --- a/apps/web/components/Organization/Slice/AccordionSlice/AccordionSlice.tsx +++ b/apps/web/components/Organization/Slice/AccordionSlice/AccordionSlice.tsx @@ -60,7 +60,7 @@ export const AccordionSlice: React.FC<React.PropsWithChildren<SliceProps>> = ({ ))} {slice.type === 'accordion_minimal' && ( <Box paddingTop={4}> - <Accordion> + <Accordion singleExpand={false}> {(slice.accordionItems ?? []).map((item) => ( <AccordionItem key={item.id} diff --git a/apps/web/components/Organization/Slice/Districts/DistrictsSlice.css.ts b/apps/web/components/Organization/Slice/Districts/DistrictsSlice.css.ts index fa6b26b2d28b..a6e2e0787f22 100644 --- a/apps/web/components/Organization/Slice/Districts/DistrictsSlice.css.ts +++ b/apps/web/components/Organization/Slice/Districts/DistrictsSlice.css.ts @@ -1,4 +1,5 @@ import { style } from '@vanilla-extract/css' + import { themeUtils } from '@island.is/island-ui/theme' export const districtsList = style({ @@ -18,3 +19,8 @@ export const districtsList = style({ }, }), }) + +export const districtsListItem = style({ + breakInside: 'avoid', + display: 'block', +}) diff --git a/apps/web/components/Organization/Slice/Districts/DistrictsSlice.tsx b/apps/web/components/Organization/Slice/Districts/DistrictsSlice.tsx index e35c7fd8b7ff..6186d4007323 100644 --- a/apps/web/components/Organization/Slice/Districts/DistrictsSlice.tsx +++ b/apps/web/components/Organization/Slice/Districts/DistrictsSlice.tsx @@ -37,7 +37,7 @@ export const DistrictsSlice: React.FC<React.PropsWithChildren<SliceProps>> = ({ </GridColumn> </GridRow> <GridRow> - <GridColumn span={['10/10', '10/10', '5/10']}> + <GridColumn span={['10/10', '10/10', '10/10', '10/10', '5/10']}> {slice.description && ( <Box paddingRight={[0, 0, 6]}> <Text marginTop={3}>{slice.description}</Text> @@ -50,7 +50,12 @@ export const DistrictsSlice: React.FC<React.PropsWithChildren<SliceProps>> = ({ className={styles.districtsList} > {slice.links.map((link, index) => ( - <Box component="li" key={index} marginBottom={4}> + <Box + component="li" + key={index} + marginBottom={4} + className={styles.districtsListItem} + > <Link href={link.url}> <Button variant="text" as="span"> {link.text} @@ -61,7 +66,7 @@ export const DistrictsSlice: React.FC<React.PropsWithChildren<SliceProps>> = ({ </Box> </GridColumn> {!!slice.image && ( - <GridColumn span={['10/10', '10/10', '5/10']}> + <GridColumn span={['10/10', '10/10', '10/10', '10/10', '5/10']}> {slice.image.url.split('.').pop() === 'svg' ? ( <object data={slice.image.url} type="image/svg+xml"> <img src={slice.image.url} alt="" /> diff --git a/apps/web/components/Organization/Slice/EmailSignup/EmailSignup.tsx b/apps/web/components/Organization/Slice/EmailSignup/EmailSignup.tsx index 71557dd59d70..7acc2461f1ee 100644 --- a/apps/web/components/Organization/Slice/EmailSignup/EmailSignup.tsx +++ b/apps/web/components/Organization/Slice/EmailSignup/EmailSignup.tsx @@ -12,18 +12,19 @@ import { Text, } from '@island.is/island-ui/core' import { FormField } from '@island.is/web/components' -import { FormFieldType } from '../../../Form/Form' import { EmailSignup as EmailSignupSchema, EmailSignupInputField, EmailSignupSubscriptionMutation, EmailSignupSubscriptionMutationVariables, } from '@island.is/web/graphql/schema' -import { EMAIL_SIGNUP_MUTATION } from '@island.is/web/screens/queries' import { useNamespace } from '@island.is/web/hooks' +import { useI18n } from '@island.is/web/i18n' +import { EMAIL_SIGNUP_MUTATION } from '@island.is/web/screens/queries' import { isValidEmail } from '@island.is/web/utils/isValidEmail' import { isValidNationalId } from '@island.is/web/utils/isValidNationalId' +import { FormFieldType } from '../../../Form/Form' import * as styles from './EmailSignup.css' type SubmitResponse = { @@ -50,6 +51,7 @@ interface EmailSignupProps { const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { const n = useNamespace(slice.translations ?? {}) + const { activeLocale } = useI18n() const formFields = useMemo( () => slice.formFields?.filter( @@ -79,7 +81,9 @@ const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { if (field?.required && !value) { newErrors[fieldName] = n( 'fieldIsRequired', - 'Þennan reit þarf að fylla út', + activeLocale === 'is' + ? 'Þennan reit þarf að fylla út' + : 'This field is required', ) } else if ( field?.type === FormFieldType.EMAIL && @@ -87,7 +91,9 @@ const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { ) { newErrors[fieldName] = n( 'invalidEmail', - 'Vinsamlegast sláðu inn gilt netfang', + activeLocale === 'is' + ? 'Vinsamlegast sláðu inn gilt netfang' + : 'Please enter a valid email address', ) } else if ( field?.type === FormFieldType.CHECKBOXES && @@ -97,7 +103,9 @@ const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { ) { newErrors[fieldName] = n( 'fieldIsRequired', - 'Þennan reit þarf að fylla út', + activeLocale === 'is' + ? 'Þennan reit þarf að fylla út' + : 'This field is required', ) } else if ( field?.type === FormFieldType.NATIONAL_ID && @@ -106,7 +114,9 @@ const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { ) { newErrors[fieldName] = n( 'formInvalidNationalId', - 'Þetta er ekki gild kennitala.', + activeLocale === 'is' + ? 'Þetta er ekki gild kennitala.' + : 'This is not valid national id.', ) } } @@ -143,10 +153,17 @@ const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { if (result?.data?.emailSignupSubscription?.subscribed) { setSubmitResponse({ type: 'success', - title: n('submitSuccessTitle', 'Skráning tókst') as string, + title: n( + 'submitSuccessTitle', + activeLocale === 'is' + ? 'Skráning tókst' + : 'Registration was successful', + ) as string, message: n( 'submitSuccessMessage', - 'Þú þarft að fara í pósthólfið þitt og samþykkja umsóknina. Takk fyrir', + activeLocale === 'is' + ? 'Þú þarft að fara í tölvupóstinn þinn og samþykkja umsóknina. Takk fyrir' + : 'You need to go to your email and confirm the subscription. Thank you', ) as string, }) } else { @@ -155,7 +172,9 @@ const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { title: '', message: n( 'submitFailureMessage', - 'Ekki tókst að skrá þig á póstlistann, reynið aftur síðar', + activeLocale === 'is' + ? 'Ekki tókst að skrá þig á póstlistann, reynið aftur síðar' + : 'Unable to subscribe to the mailing list, please try again later', ) as string, }) } @@ -166,7 +185,9 @@ const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { title: '', message: n( 'submitError', - 'Villa kom upp við skráningu á póstlista', + activeLocale === 'is' + ? 'Villa kom upp við skráningu á póstlista' + : 'An error occurred while registering to the mailing list', ) as string, }) }) @@ -279,7 +300,10 @@ const EmailSignup = ({ slice, marginLeft }: EmailSignupProps) => { <GridColumn span="1/1"> <Box width="full" display="flex" justifyContent="flexEnd"> <Button disabled={loading} type="submit"> - {n('submitButtonText', 'Skrá')} + {n( + 'submitButtonText', + activeLocale === 'is' ? 'Skrá' : 'Submit', + )} </Button> </Box> </GridColumn> diff --git a/apps/web/components/Organization/Slice/SliceMachine.tsx b/apps/web/components/Organization/Slice/SliceMachine.tsx index 983dc5b8b840..23ec73dd0095 100644 --- a/apps/web/components/Organization/Slice/SliceMachine.tsx +++ b/apps/web/components/Organization/Slice/SliceMachine.tsx @@ -10,13 +10,14 @@ import { } from '@island.is/island-ui/core' import { EmailSignup, - GenericList, + GenericListWrapper, RichText, SectionWithVideo, } from '@island.is/web/components' import { GenericList as GenericListSchema, Slice, + TeamList, } from '@island.is/web/graphql/schema' import { webRenderConnectedComponent } from '@island.is/web/utils/richText' @@ -94,10 +95,18 @@ const PowerBiSlice = dynamic(() => import('@island.is/web/components').then((mod) => mod.PowerBiSlice), ) +const TeamListSlice = dynamic(() => + import('@island.is/web/components').then((mod) => mod.TeamListSlice), +) + const ChartNumberBox = dynamic(() => import('@island.is/web/components').then((mod) => mod.ChartNumberBox), ) +const LatestGenericListItems = dynamic(() => + import('@island.is/web/components').then((mod) => mod.LatestGenericListItems), +) + interface SliceMachineProps { slice: Slice namespace?: Record<string, string> @@ -187,7 +196,7 @@ const renderSlice = ( ) case 'GenericList': return ( - <GenericList + <GenericListWrapper id={slice.id} searchInputPlaceholder={ (slice as GenericListSchema).searchInputPlaceholder @@ -196,8 +205,20 @@ const renderSlice = ( filterTags={(slice as GenericListSchema).filterTags} /> ) + case 'TeamList': + return ( + <TeamListSlice + id={(slice as TeamList).id} + teamMembers={slice.teamMembers} + filterTags={(slice as TeamList).filterTags} + variant={(slice as TeamList).variant as 'card' | 'accordion'} + /> + ) case 'ChartNumberBox': return <ChartNumberBox slice={slice} /> + case 'LatestGenericListItems': { + return <LatestGenericListItems slice={slice} /> + } default: return <RichText body={[slice]} /> } diff --git a/apps/web/components/Organization/Slice/TeamListSlice/TeamListSlice.tsx b/apps/web/components/Organization/Slice/TeamListSlice/TeamListSlice.tsx new file mode 100644 index 000000000000..49ac0aca1107 --- /dev/null +++ b/apps/web/components/Organization/Slice/TeamListSlice/TeamListSlice.tsx @@ -0,0 +1,124 @@ +import { useState } from 'react' +import flatten from 'lodash/flatten' +import { useLazyQuery } from '@apollo/client' + +import { TeamList, type TeamListProps } from '@island.is/island-ui/contentful' +import { GenericList } from '@island.is/web/components' +import { + type GenericTag, + type Query, + TeamMemberResponse, +} from '@island.is/web/graphql/schema' +import { useI18n } from '@island.is/web/i18n' +import { GET_TEAM_MEMBERS_QUERY } from '@island.is/web/screens/queries/TeamList' + +const ITEMS_PER_PAGE = 10 + +interface TeamMemberListWrapperProps { + id: string + filterTags?: GenericTag[] | null +} + +export const TeamMemberListWrapper = ({ + id, + filterTags, +}: TeamMemberListWrapperProps) => { + const searchQueryId = `${id}q` + const pageQueryId = `${id}page` + const tagQueryId = `${id}tag` + + const { activeLocale } = useI18n() + + const [itemsResponse, setItemsResponse] = useState<TeamMemberResponse | null>( + null, + ) + const [errorOccurred, setErrorOccurred] = useState(false) + + const [fetchListItems, { loading, called }] = useLazyQuery<Query>( + GET_TEAM_MEMBERS_QUERY, + { + onCompleted(data) { + const searchParams = new URLSearchParams(window.location.search) + + const queryString = searchParams.get(searchQueryId) || '' + const pageQuery = searchParams.get(pageQueryId) || '1' + const tagQuery = searchParams.get(tagQueryId) || '{}' + + const tags: string[] = flatten(Object.values(JSON.parse(tagQuery))) + + if ( + // Make sure the response matches the request input + queryString === data?.getTeamMembers?.input?.queryString && + pageQuery === data?.getTeamMembers?.input?.page?.toString() && + tags.every((tag) => + (data?.getTeamMembers?.input?.tags ?? []).includes(tag), + ) + ) { + setItemsResponse(data.getTeamMembers) + setErrorOccurred(false) + } + }, + onError(_) { + setErrorOccurred(true) + }, + }, + ) + + const totalItems = itemsResponse?.total ?? 0 + + const items = itemsResponse?.items ?? [] + + return ( + <GenericList + filterTags={filterTags} + searchInputPlaceholder={activeLocale === 'is' ? 'Leit' : 'Search'} + displayError={errorOccurred} + fetchListItems={({ page, searchValue, tags, tagGroups }) => { + fetchListItems({ + variables: { + input: { + teamListId: id, + size: ITEMS_PER_PAGE, + lang: activeLocale, + page: page, + queryString: searchValue, + tags, + tagGroups, + }, + }, + }) + }} + totalItems={totalItems} + loading={loading || !called} + pageQueryId={pageQueryId} + searchQueryId={searchQueryId} + tagQueryId={tagQueryId} + > + <TeamList + teamMembers={items as TeamListProps['teamMembers']} + variant="accordion" + prefixes={{ + email: activeLocale === 'is' ? 'Netfang:' : 'Email:', + phone: activeLocale === 'is' ? 'Sími:' : 'Phone:', + }} + /> + </GenericList> + ) +} + +interface TeamListSliceProps extends TeamListProps { + id: string + filterTags?: GenericTag[] | null +} + +export const TeamListSlice = ({ + teamMembers, + variant, + filterTags, + id, +}: TeamListSliceProps) => { + if (variant === 'accordion') { + return <TeamMemberListWrapper id={id} filterTags={filterTags} /> + } + return <TeamList teamMembers={teamMembers} variant="card" /> +} diff --git a/apps/web/components/Organization/Wrapper/OrganizationWrapper.css.ts b/apps/web/components/Organization/Wrapper/OrganizationWrapper.css.ts index 74db88d4d267..05f4ffcfe994 100644 --- a/apps/web/components/Organization/Wrapper/OrganizationWrapper.css.ts +++ b/apps/web/components/Organization/Wrapper/OrganizationWrapper.css.ts @@ -1,5 +1,7 @@ import { style } from '@vanilla-extract/css' +import { themeUtils } from '@island.is/island-ui/theme' + export const menuStyle = style({ position: 'relative', zIndex: 20, @@ -19,3 +21,234 @@ export const digitalIcelandHeaderTitle = style({ ['-webkit-text-fill-color' as any]: 'transparent', textShadow: '0px 0px #00000000', }) + +export const sakHeaderGridContainer = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: '315px', + gridTemplateColumns: '52fr 48fr', + }, + }), +}) + +export const sakHeaderGridContainerSubpage = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: 'auto', + gridTemplateColumns: '100fr', + }, + }), +}) + +export const landlaeknirHeaderGridContainer = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: '315px', + gridTemplateColumns: '60fr 40fr', + }, + }), +}) + +export const landlaeknirHeaderGridContainerSubpage = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: 'auto', + gridTemplateColumns: '100fr', + }, + }), +}) + +export const shhHeaderGridContainerBase = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: '315px', + gridTemplateColumns: '65fr 35fr', + }, + }), +}) + +export const shhHeaderGridContainerWidth = style([ + shhHeaderGridContainerBase, + themeUtils.responsiveStyle({ + lg: { + background: + "url('https://images.ctfassets.net/8k0h54kbe6bj/1glTNLK2OYnp9XsL4EVuVa/6813e691f7863dda32e4637de5142c71/Mynd_a___banner.svg') bottom right no-repeat", + backgroundSize: '450px 100%', + }, + }), +]) + +export const shhHeaderGridContainerWidthSubpage = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: 'auto', + gridTemplateColumns: '100fr', + }, + }), +}) + +export const rikissaksoknariHeaderGridContainerBase = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + backgroundBlendMode: 'saturation', + backgroundRepeat: 'no-repeat', + background: ` + linear-gradient(180deg, #000000 0%, rgba(0, 0, 0, 0) 92.19%), + linear-gradient(-93.41deg, rgba(0, 72, 153, 0.4) -4.61%, rgba(0, 72, 153, 0.62) 17.93%, rgba(0, 72, 153, 0.82) 47.83%, rgba(0, 72, 153, 0.94) 71.31%, rgba(0, 72, 153, 0.95) 94.11%, #004899 114.58%) + `, + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: '315px', + gridTemplateColumns: '65fr 35fr', + }, + }), +}) + +export const rikissaksoknariHeaderGridContainerWidth = style([ + rikissaksoknariHeaderGridContainerBase, + themeUtils.responsiveStyle({ + lg: { + background: ` + url('https://images.ctfassets.net/8k0h54kbe6bj/3k02pUiq44p3Hn6eLf2VuQ/23bbe8981afa02668ddd522e3dc6988f/rikissaksoknari-mynd_1.png') no-repeat right, + linear-gradient(180deg, #000000 0%, rgba(0, 0, 0, 0) 92.19%), + linear-gradient(-93.41deg, rgba(0, 72, 153, 0.4) -4.61%, rgba(0, 72, 153, 0.62) 17.93%, rgba(0, 72, 153, 0.82) 47.83%, rgba(0, 72, 153, 0.94) 71.31%, rgba(0, 72, 153, 0.95) 94.11%, #004899 114.58%) + `, + }, + }), +]) + +export const rikissaksoknariHeaderGridContainerSubpage = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + backgroundBlendMode: 'saturation', + backgroundRepeat: 'no-repeat', + background: ` + linear-gradient(180deg, #000000 0%, rgba(0, 0, 0, 0) 92.19%), + linear-gradient(-93.41deg, rgba(0, 72, 153, 0.4) -4.61%, rgba(0, 72, 153, 0.62) 17.93%, rgba(0, 72, 153, 0.82) 47.83%, rgba(0, 72, 153, 0.94) 71.31%, rgba(0, 72, 153, 0.95) 94.11%, #004899 114.58%) + `, + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: 'auto', + gridTemplateColumns: '100fr', + }, + }), +}) + +export const hsaHeaderGridContainerBase = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: '315px', + gridTemplateColumns: '65fr 35fr', + }, + }), +}) + +export const hsaHeaderGridContainerWidthSubpage = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: 'auto', + gridTemplateColumns: '100fr', + }, + }), +}) + +export const hsaHeaderGridContainerWidth = style([ + hsaHeaderGridContainerBase, + themeUtils.responsiveStyle({ + lg: { + background: `url('https://images.ctfassets.net/8k0h54kbe6bj/uc45ywvPOYsIUEQTNfE6s/72fd0f2229407e18c6e2908fb13f51c3/Header_HSA.png') no-repeat right bottom,linear-gradient(90deg, #CCDFFF 0%, #F6F6F6 84.85%)`, + }, + }), +]) + +export const rikislogmadurHeaderGridContainerWidthBase = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + backgroundBlendMode: 'saturation', + backgroundRepeat: 'no-repeat', + background: + 'linear-gradient(178.67deg, rgba(0, 61, 133, 0.2) 1.87%, rgba(0, 61, 133, 0.3) 99.6%)', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: '315px', + gridTemplateColumns: '60fr 40fr', + }, + }), +}) + +export const rikislogmadurHeaderGridContainerWidth = style([ + rikislogmadurHeaderGridContainerWidthBase, + themeUtils.responsiveStyle({ + lg: { + background: `linear-gradient(178.67deg, rgba(0, 61, 133, 0.2) 1.87%, rgba(0, 61, 133, 0.3) 99.6%), + url('https://images.ctfassets.net/8k0h54kbe6bj/40IgMzNknBQUINDZZwblR/6c7dfdcf0acb3612f2bf61d912c3dd46/rikislogmadur-header-image.png') no-repeat right`, + }, + }), +]) + +export const rikislogmadurHeaderGridContainerWidthSubpage = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + background: + 'linear-gradient(178.67deg, rgba(0, 61, 133, 0.2) 1.87%, rgba(0, 61, 133, 0.3) 99.6%)', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: 'auto', + gridTemplateColumns: '100fr', + }, + }), +}) + +export const hveHeaderGridContainer = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + borderBottom: '8px solid #F01E28', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: '315px', + gridTemplateColumns: '65fr 35fr', + }, + }), +}) + +export const hveHeaderGridContainerSubpage = style({ + display: 'grid', + maxWidth: '1342px', + margin: '0 auto', + borderBottom: '8px solid #F01E28', + ...themeUtils.responsiveStyle({ + lg: { + gridTemplateRows: 'auto', + gridTemplateColumns: '100fr', + }, + }), +}) diff --git a/apps/web/components/Organization/Wrapper/OrganizationWrapper.tsx b/apps/web/components/Organization/Wrapper/OrganizationWrapper.tsx index 68734ed33293..9616fd095eea 100644 --- a/apps/web/components/Organization/Wrapper/OrganizationWrapper.tsx +++ b/apps/web/components/Organization/Wrapper/OrganizationWrapper.tsx @@ -1,4 +1,11 @@ -import React, { ReactNode, useEffect, useMemo, useState } from 'react' +import React, { + PropsWithChildren, + ReactNode, + useEffect, + useMemo, + useState, +} from 'react' +import { IntlConfig, IntlProvider } from 'react-intl' import { useWindowSize } from 'react-use' import NextLink from 'next/link' import { useRouter } from 'next/router' @@ -52,7 +59,10 @@ import { getBackgroundStyle } from '@island.is/web/utils/organization' import { LatestNewsCardConnectedComponent } from '../LatestNewsCardConnectedComponent' import { DigitalIcelandHeader } from './Themes/DigitalIcelandTheme' -import { FiskistofaHeader } from './Themes/FiskistofaTheme' +import { + FiskistofaDefaultHeader, + FiskistofaHeader, +} from './Themes/FiskistofaTheme' import { FiskistofaFooter } from './Themes/FiskistofaTheme' import { FjarsyslaRikisinsFooter, @@ -87,10 +97,15 @@ import { RikissaksoknariHeader } from './Themes/RikissaksoknariTheme' import { SAkFooter, SAkHeader } from './Themes/SAkTheme' import { ShhFooter, ShhHeader } from './Themes/SHHTheme' import { + SjukratryggingarDefaultHeader, SjukratryggingarFooter, SjukratryggingarHeader, } from './Themes/SjukratryggingarTheme' -import { SyslumennFooter, SyslumennHeader } from './Themes/SyslumennTheme' +import { + SyslumennDefaultHeader, + SyslumennFooter, + SyslumennHeader, +} from './Themes/SyslumennTheme' import { TransportAuthorityHeader } from './Themes/TransportAuthorityTheme' import { UniversityStudiesHeader } from './Themes/UniversityStudiesTheme' import UniversityStudiesFooter from './Themes/UniversityStudiesTheme/UniversityStudiesFooter' @@ -156,11 +171,22 @@ export const getThemeConfig = ( theme?: string, organization?: Organization | null, ): { themeConfig: Partial<LayoutProps> } => { + const organizationNamespace = JSON.parse( + organization?.namespace?.fields || '{}', + ) + + const usingDefaultHeader: boolean = + organizationNamespace['usingDefaultHeader'] ?? false + const footerVersion: LayoutProps['footerVersion'] = theme === 'landing-page' || (organization?.footerItems ?? [])?.length > 0 ? 'organization' : 'default' + if (lightThemes.includes(theme ?? '') || usingDefaultHeader) { + return { themeConfig: { footerVersion } } + } + if (blueberryThemes.includes(theme ?? '')) return { themeConfig: { @@ -169,7 +195,6 @@ export const getThemeConfig = ( footerVersion, }, } - if (darkThemes.includes(theme ?? '')) { return { themeConfig: { @@ -180,10 +205,6 @@ export const getThemeConfig = ( } } - if (lightThemes.includes(theme ?? '')) { - return { themeConfig: { footerVersion } } - } - return { themeConfig: { headerColorScheme: 'white', @@ -250,21 +271,35 @@ export const OrganizationHeader: React.FC< switch (organizationPage.theme) { case 'syslumenn': - return ( + return n('usingDefaultHeader', false) ? ( + <SyslumennDefaultHeader + organizationPage={organizationPage} + logoAltText={logoAltText} + isSubpage={(isSubpage && n('smallerSubpageHeader', false)) ?? false} + /> + ) : ( <SyslumennHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'sjukratryggingar': - return ( + return n('usingDefaultHeader', false) ? ( + <SjukratryggingarDefaultHeader + organizationPage={organizationPage} + logoAltText={logoAltText} + isSubpage={(isSubpage && n('smallerSubpageHeader', false)) ?? false} + /> + ) : ( <SjukratryggingarHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'utlendingastofnun': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader {...defaultProps} /> + ) : ( <UtlendingastofnunHeader organizationPage={organizationPage} logoAltText={logoAltText} @@ -283,42 +318,88 @@ export const OrganizationHeader: React.FC< /> ) case 'hsn': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + image={n( + 'hsnHeaderImage', + 'https://images.ctfassets.net/8k0h54kbe6bj/4v20729OMrRYkktuaCTWRi/675807c8c848895833c4a6a162f2813a/hsn-header-icon.svg', + )} + /> + ) : ( <HeilbrigdisstofnunNordurlandsHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'hsu': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + image={n( + 'hsuHeaderImage', + 'https://images.ctfassets.net/8k0h54kbe6bj/sSSuQeq3oIx9hOrKRvfzm/447c7e6811c3fa9e9d548ecd4b6d7985/vector-myndir-hsu.svg', + )} + /> + ) : ( <HeilbrigdisstofnunSudurlandsHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'landlaeknir': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + image={n( + 'landlaeknirHeaderImage', + 'https://images.ctfassets.net/8k0h54kbe6bj/2p6UWMBdVkVHBAjsnX20bY/c04b402332dbae96c198db7b8640f20b/Header_illustration_1.svg', + )} + className={ + isSubpage + ? styles.landlaeknirHeaderGridContainerSubpage + : styles.landlaeknirHeaderGridContainer + } + /> + ) : ( <LandlaeknirHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'fiskistofa': - return ( + return n('usingDefaultHeader', false) ? ( + <FiskistofaDefaultHeader + organizationPage={organizationPage} + logoAltText={logoAltText} + isSubpage={(isSubpage && n('smallerSubpageHeader', false)) ?? false} + /> + ) : ( <FiskistofaHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'rikislogmadur': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + className={ + isSubpage + ? styles.rikislogmadurHeaderGridContainerWidthSubpage + : styles.rikislogmadurHeaderGridContainerWidth + } + /> + ) : ( <RikislogmadurHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'landskjorstjorn': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader {...defaultProps} /> + ) : ( <LandskjorstjornHeader organizationPage={organizationPage} logoAltText={logoAltText} @@ -327,42 +408,98 @@ export const OrganizationHeader: React.FC< case 'landing_page': return null case 'fjarsysla-rikisins': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader {...defaultProps} /> + ) : ( <FjarsyslaRikisinsHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'sak': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + className={ + isSubpage + ? styles.sakHeaderGridContainerSubpage + : styles.sakHeaderGridContainer + } + image={n( + `sakHeaderBgImage`, + 'https://images.ctfassets.net/8k0h54kbe6bj/4SjqwRBZRMWVWG0y73sXxq/cf8d0d16704cfea124362eca03afdb41/sak-header-trans_2x.png', + )} + titleSectionPaddingLeft={isSubpage ? 0 : 10} + /> + ) : ( <SAkHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'gev': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + image={n( + 'gevHeaderImage', + 'https://images.ctfassets.net/8k0h54kbe6bj/13E4vIA69gDNF87pkHwJgc/c2175b5ce58e50c93ddef5ea26854740/figura.png', + )} + /> + ) : ( <GevHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'hve': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + className={ + isSubpage + ? styles.hveHeaderGridContainerSubpage + : styles.hveHeaderGridContainer + } + image={n( + 'hveHeaderImage', + 'https://images.ctfassets.net/8k0h54kbe6bj/7ie5X2T4g8a7g5PLvu5226/4ec8b2cb69b5cb7193a61c562f9b36e0/minstur1.png', + )} + /> + ) : ( <HveHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'shh': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + className={ + isSubpage + ? styles.shhHeaderGridContainerWidthSubpage + : styles.shhHeaderGridContainerWidth + } + titleSectionPaddingLeft={isSubpage ? 0 : 5} + /> + ) : ( <ShhHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'hsa': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + className={ + isSubpage + ? styles.hsaHeaderGridContainerWidthSubpage + : styles.hsaHeaderGridContainerWidth + } + /> + ) : ( <HeilbrigdisstofnunAusturlandsHeader organizationPage={organizationPage} logoAltText={logoAltText} @@ -376,43 +513,80 @@ export const OrganizationHeader: React.FC< /> ) case 'nti': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + image={n( + 'icelandicNaturalDisasterInsuranceHeaderImage', + 'https://images.ctfassets.net/8k0h54kbe6bj/eXqcbclteE88H5iQ6J3lo/bbc1d0c9d3abee93d34ec0aa718c833b/Group__1_.svg', + )} + /> + ) : ( <IcelandicNaturalDisasterInsuranceHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'samgongustofa': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader {...defaultProps} /> + ) : ( <TransportAuthorityHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'geislavarnir-rikisins': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + background="linear-gradient(96.23deg, rgba(1, 54, 65, 0.8) 0.85%, rgba(19, 101, 103, 0.93) 16.4%, rgba(19, 101, 103, 0.885709) 32.16%, rgba(1, 73, 87, 0.88) 56.43%, rgba(2, 69, 91, 0.98) 78.47%, rgba(1, 52, 62, 0.96) 100.8%)" + image={n( + 'geislavarnirRikisinsHeaderImage', + 'https://images.ctfassets.net/8k0h54kbe6bj/5KjaMY9IIB0aX0GOUU60H7/176b6ed26dc01fe4e2559ba2957e85b7/skjaldamerki-transparent.svg', + )} + /> + ) : ( <IcelandicRadiationSafetyAuthorityHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'rettindagaesla-fatlads-folks': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader {...defaultProps} /> + ) : ( <RettindagaeslaFatladsFolksHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) case 'hms': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + image={n( + 'hmsHeaderImage', + 'https://images.ctfassets.net/8k0h54kbe6bj/5pAFV6h9PVzSTQgJY67rbT/3117436e3043bebf720b2f9a7e7619b8/hms-header-image.svg', + )} + /> + ) : ( <HmsHeader organizationPage={organizationPage} logoAltText={logoAltText} /> ) - case 'rikissaksoknari': - return ( + return n('usingDefaultHeader', false) ? ( + <DefaultHeader + {...defaultProps} + className={ + isSubpage + ? styles.rikissaksoknariHeaderGridContainerSubpage + : styles.rikissaksoknariHeaderGridContainerWidth + } + /> + ) : ( <RikissaksoknariHeader organizationPage={organizationPage} logoAltText={logoAltText} @@ -838,25 +1012,54 @@ const getActiveNavigationItemTitle = ( } } } + +interface TranslationNamespaceProviderProps { + messages: IntlConfig['messages'] +} + +const TranslationNamespaceProvider = ({ + messages, + children, +}: PropsWithChildren<TranslationNamespaceProviderProps>) => { + const { activeLocale } = useI18n() + + return ( + <IntlProvider locale={activeLocale} messages={messages}> + {children} + </IntlProvider> + ) +} + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore make web strict const renderConnectedComponent = (slice) => { if (!slice?.componentType) return null + let connectedComponent = null + switch (slice.componentType) { case 'LatestNewsCard': - return ( + connectedComponent = ( <LatestNewsCardConnectedComponent key={slice?.id} {...slice?.json} /> ) + break case 'Fiskistofa/ShipSearchSidebarInput': - return ( - <SidebarShipSearchInput key={slice?.id} namespace={slice?.json ?? {}} /> - ) + connectedComponent = <SidebarShipSearchInput key={slice?.id} /> + break case 'OrganizationSearchBox': - return <SearchBox key={slice?.id} {...slice?.json} /> + connectedComponent = <SearchBox key={slice?.id} {...slice?.json} /> + break default: return null } + + return ( + <TranslationNamespaceProvider + messages={slice.translationStrings ?? slice.json ?? {}} + > + {connectedComponent} + </TranslationNamespaceProvider> + ) } export const OrganizationWrapper: React.FC< @@ -943,6 +1146,7 @@ export const OrganizationWrapper: React.FC< type="button" variant="text" truncate + unfocusable > {backLink.text} </Button> diff --git a/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaDefaultHeader.css.ts b/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaDefaultHeader.css.ts new file mode 100644 index 000000000000..ceca287962f1 --- /dev/null +++ b/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaDefaultHeader.css.ts @@ -0,0 +1,6 @@ +import { style } from '@vanilla-extract/css' + +export const gridContainerWidth = style({ + maxWidth: '1342px', + margin: '0 auto', +}) diff --git a/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaDefaultHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaDefaultHeader.tsx new file mode 100644 index 000000000000..49dd42b5cd04 --- /dev/null +++ b/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaDefaultHeader.tsx @@ -0,0 +1,65 @@ +import React from 'react' + +import { ResponsiveSpace } from '@island.is/island-ui/core' +import { theme } from '@island.is/island-ui/theme' +import { DefaultHeader } from '@island.is/web/components' +import { OrganizationPage } from '@island.is/web/graphql/schema' +import { useLinkResolver } from '@island.is/web/hooks/useLinkResolver' +import { useWindowSize } from '@island.is/web/hooks/useViewport' + +import * as styles from './FiskistofaDefaultHeader.css' + +interface HeaderProps { + organizationPage: OrganizationPage + logoAltText: string + isSubpage: boolean +} + +const FiskistofaDefaultHeader: React.FC< + React.PropsWithChildren<HeaderProps> +> = ({ organizationPage, logoAltText, isSubpage }) => { + const { linkResolver } = useLinkResolver() + + const { width } = useWindowSize() + + const themeProp = organizationPage.themeProperties + + return ( + <div + style={{ + background: + (width > theme.breakpoints.lg && !isSubpage + ? themeProp.backgroundColor + : 'no-repeat 52% 30% ,linear-gradient(180deg, #E6F2FB 21.56%, #90D9E3 239.74%)') ?? + '', + }} + className={styles.gridContainerWidth} + > + <DefaultHeader + title={organizationPage.title} + titleColor="dark400" + imagePadding={themeProp.imagePadding ?? '0'} + fullWidth={themeProp.fullWidth ?? false} + imageIsFullHeight={themeProp.imageIsFullHeight ?? false} + imageObjectFit={ + themeProp?.imageObjectFit === 'cover' ? 'cover' : 'contain' + } + logo={organizationPage.organization?.logo?.url} + logoHref={ + linkResolver('organizationpage', [organizationPage.slug]).href + } + logoAltText={logoAltText} + titleSectionPaddingLeft={ + organizationPage.themeProperties + .titleSectionPaddingLeft as ResponsiveSpace + } + isSubpage={isSubpage} + mobileBackground={ + organizationPage.themeProperties.mobileBackgroundColor + } + /> + </div> + ) +} + +export default FiskistofaDefaultHeader diff --git a/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaHeader.tsx index ddf9d0165345..20b1f2cd7892 100644 --- a/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/FiskistofaHeader.tsx @@ -40,7 +40,7 @@ const FiskistofaHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/index.ts b/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/index.ts index 4497a9ecb32e..96e40c6a2cd7 100644 --- a/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/index.ts +++ b/apps/web/components/Organization/Wrapper/Themes/FiskistofaTheme/index.ts @@ -1,5 +1,6 @@ import dynamic from 'next/dynamic' +import DefaultHeader from './FiskistofaDefaultHeader' import Header from './FiskistofaHeader' export const FiskistofaFooter = dynamic(() => import('./FiskistofaFooter'), { @@ -7,3 +8,4 @@ export const FiskistofaFooter = dynamic(() => import('./FiskistofaFooter'), { }) export const FiskistofaHeader = Header +export const FiskistofaDefaultHeader = DefaultHeader diff --git a/apps/web/components/Organization/Wrapper/Themes/FjarsyslaRikisinsTheme/FjarsyslaRikisinsHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/FjarsyslaRikisinsTheme/FjarsyslaRikisinsHeader.tsx index ed176229982b..b026a996ead7 100644 --- a/apps/web/components/Organization/Wrapper/Themes/FjarsyslaRikisinsTheme/FjarsyslaRikisinsHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/FjarsyslaRikisinsTheme/FjarsyslaRikisinsHeader.tsx @@ -30,7 +30,7 @@ const FjarsyslaRikisinsHeader = ({ }: HeaderProps) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/GevTheme/GevHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/GevTheme/GevHeader.tsx index ec5071f03508..c11fe9f950a8 100644 --- a/apps/web/components/Organization/Wrapper/Themes/GevTheme/GevHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/GevTheme/GevHeader.tsx @@ -39,7 +39,7 @@ const GevHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunAusturlandsTheme/HeilbrigdisstofnunAusturlandsHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunAusturlandsTheme/HeilbrigdisstofnunAusturlandsHeader.tsx index 6b75ef2cc22b..03bb79222cb5 100644 --- a/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunAusturlandsTheme/HeilbrigdisstofnunAusturlandsHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunAusturlandsTheme/HeilbrigdisstofnunAusturlandsHeader.tsx @@ -50,7 +50,7 @@ const HeilbrigdisstofnunAusturlandsHeader: React.FC< const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) diff --git a/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunNordurlandsTheme/HeilbrigdisstofnunNordurlandsHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunNordurlandsTheme/HeilbrigdisstofnunNordurlandsHeader.tsx index cf6e4e5c9819..d1d730526c41 100644 --- a/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunNordurlandsTheme/HeilbrigdisstofnunNordurlandsHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunNordurlandsTheme/HeilbrigdisstofnunNordurlandsHeader.tsx @@ -31,7 +31,7 @@ const HeilbrigdisstofnunNordurlandsHeader: React.FC< > = ({ organizationPage, logoAltText }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunSudurlandsTheme/HeilbrigdisstofnunSudurlandsHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunSudurlandsTheme/HeilbrigdisstofnunSudurlandsHeader.tsx index 8433b23fb01a..b4bd04b4f965 100644 --- a/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunSudurlandsTheme/HeilbrigdisstofnunSudurlandsHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/HeilbrigdisstofnunSudurlandsTheme/HeilbrigdisstofnunSudurlandsHeader.tsx @@ -42,7 +42,7 @@ const HeilbrigdisstofnunSudurlandsHeader: React.FC< const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) diff --git a/apps/web/components/Organization/Wrapper/Themes/HmsTheme/HmsHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/HmsTheme/HmsHeader.tsx index 0307b9c6602a..4153d3081c89 100644 --- a/apps/web/components/Organization/Wrapper/Themes/HmsTheme/HmsHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/HmsTheme/HmsHeader.tsx @@ -38,7 +38,7 @@ const HmsHeader: React.FC<HeaderProps> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/HveTheme/HveHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/HveTheme/HveHeader.tsx index 8eb5c3918fa9..36d8fec6c1e5 100644 --- a/apps/web/components/Organization/Wrapper/Themes/HveTheme/HveHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/HveTheme/HveHeader.tsx @@ -39,7 +39,7 @@ const HveHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/IcelandicNaturalDisasterInsuranceTheme/IcelandicNaturalDisasterInsuranceHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/IcelandicNaturalDisasterInsuranceTheme/IcelandicNaturalDisasterInsuranceHeader.tsx index 2c73e2de6c91..3b926bddb932 100644 --- a/apps/web/components/Organization/Wrapper/Themes/IcelandicNaturalDisasterInsuranceTheme/IcelandicNaturalDisasterInsuranceHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/IcelandicNaturalDisasterInsuranceTheme/IcelandicNaturalDisasterInsuranceHeader.tsx @@ -70,7 +70,7 @@ const IcelandicNaturalDisasterInsuranceHeader: React.FC<HeaderProps> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/IcelandicRadiationSafetyAuthority/IcelandicRadiationSafetyAuthorityHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/IcelandicRadiationSafetyAuthority/IcelandicRadiationSafetyAuthorityHeader.tsx index 41a0252062e7..abd9c3941a99 100644 --- a/apps/web/components/Organization/Wrapper/Themes/IcelandicRadiationSafetyAuthority/IcelandicRadiationSafetyAuthorityHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/IcelandicRadiationSafetyAuthority/IcelandicRadiationSafetyAuthorityHeader.tsx @@ -38,7 +38,7 @@ const IcelandicNaturalDisasterInsuranceHeader: React.FC<HeaderProps> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/LandkjorstjornTheme/LandskjorstjornHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/LandkjorstjornTheme/LandskjorstjornHeader.tsx index b925f93b770b..f81a177486ec 100644 --- a/apps/web/components/Organization/Wrapper/Themes/LandkjorstjornTheme/LandskjorstjornHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/LandkjorstjornTheme/LandskjorstjornHeader.tsx @@ -36,7 +36,7 @@ const LandskjorstjornHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/LandlaeknirTheme/LandlaeknirHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/LandlaeknirTheme/LandlaeknirHeader.tsx index 193f463734ce..7f94f40e57d6 100644 --- a/apps/web/components/Organization/Wrapper/Themes/LandlaeknirTheme/LandlaeknirHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/LandlaeknirTheme/LandlaeknirHeader.tsx @@ -52,7 +52,7 @@ const LandlaeknirHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/RikislogmadurTheme/RikislogmadurHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/RikislogmadurTheme/RikislogmadurHeader.tsx index 95ae4d7268f0..f4ac08e86427 100644 --- a/apps/web/components/Organization/Wrapper/Themes/RikislogmadurTheme/RikislogmadurHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/RikislogmadurTheme/RikislogmadurHeader.tsx @@ -33,7 +33,7 @@ const RikislogmadurHeader = ({ }: HeaderProps) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/RikissaksoknariTheme/RikissaksoknariHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/RikissaksoknariTheme/RikissaksoknariHeader.tsx index 892598c79ff3..29bd45af016d 100644 --- a/apps/web/components/Organization/Wrapper/Themes/RikissaksoknariTheme/RikissaksoknariHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/RikissaksoknariTheme/RikissaksoknariHeader.tsx @@ -33,7 +33,7 @@ const RikissaksoknariHeader = ({ }: HeaderProps) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/SAkTheme/SAkHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/SAkTheme/SAkHeader.tsx index 82cfc43b8d74..694fe51591aa 100644 --- a/apps/web/components/Organization/Wrapper/Themes/SAkTheme/SAkHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/SAkTheme/SAkHeader.tsx @@ -19,7 +19,7 @@ const SAkHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/SHHTheme/ShhHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/SHHTheme/ShhHeader.tsx index 2eef24c84db1..a9a8d05f912f 100644 --- a/apps/web/components/Organization/Wrapper/Themes/SHHTheme/ShhHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/SHHTheme/ShhHeader.tsx @@ -41,7 +41,7 @@ const ShhHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) diff --git a/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/SjukratryggingarDefaultHeader.css.ts b/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/SjukratryggingarDefaultHeader.css.ts new file mode 100644 index 000000000000..ceca287962f1 --- /dev/null +++ b/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/SjukratryggingarDefaultHeader.css.ts @@ -0,0 +1,6 @@ +import { style } from '@vanilla-extract/css' + +export const gridContainerWidth = style({ + maxWidth: '1342px', + margin: '0 auto', +}) diff --git a/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/SjukratryggingarDefaultHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/SjukratryggingarDefaultHeader.tsx new file mode 100644 index 000000000000..82302f499e4c --- /dev/null +++ b/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/SjukratryggingarDefaultHeader.tsx @@ -0,0 +1,68 @@ +import React from 'react' + +import { ResponsiveSpace } from '@island.is/island-ui/core' +import { theme } from '@island.is/island-ui/theme' +import { DefaultHeader } from '@island.is/web/components' +import { OrganizationPage } from '@island.is/web/graphql/schema' +import { useLinkResolver } from '@island.is/web/hooks/useLinkResolver' +import { useWindowSize } from '@island.is/web/hooks/useViewport' + +import * as styles from './SjukratryggingarDefaultHeader.css' + +interface HeaderProps { + organizationPage: OrganizationPage + logoAltText: string + isSubpage: boolean +} + +const SjukratryggingarDefaultHeader: React.FC< + React.PropsWithChildren<HeaderProps> +> = ({ organizationPage, logoAltText, isSubpage }) => { + const { linkResolver } = useLinkResolver() + + const { width } = useWindowSize() + + const themeProp = organizationPage.themeProperties + + return ( + <div + style={{ + background: + width <= theme.breakpoints.sm + ? '#40c5e5' + : (width > theme.breakpoints.lg && !isSubpage + ? themeProp.backgroundColor + : `linear-gradient(184.95deg, #40c5e5 8.38%, rgba(64, 197, 227, 0.1) 39.64%, rgba(244, 247, 247, 0) 49.64%), + linear-gradient(273.41deg, #f4f7f7 -9.24%, #40c5e5 66.78%, #a4def1 105.51%)`) ?? + '', + }} + className={styles.gridContainerWidth} + > + <DefaultHeader + title={organizationPage.title} + titleColor="dark400" + imagePadding={themeProp.imagePadding ?? '0'} + fullWidth={themeProp.fullWidth ?? false} + imageIsFullHeight={themeProp.imageIsFullHeight ?? false} + imageObjectFit={ + themeProp?.imageObjectFit === 'cover' ? 'cover' : 'contain' + } + logo={organizationPage.organization?.logo?.url} + logoHref={ + linkResolver('organizationpage', [organizationPage.slug]).href + } + logoAltText={logoAltText} + titleSectionPaddingLeft={ + organizationPage.themeProperties + .titleSectionPaddingLeft as ResponsiveSpace + } + isSubpage={isSubpage} + mobileBackground={ + organizationPage.themeProperties.mobileBackgroundColor + } + /> + </div> + ) +} + +export default SjukratryggingarDefaultHeader diff --git a/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/index.ts b/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/index.ts index ac06b38cba6c..5fde0b8abe2a 100644 --- a/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/index.ts +++ b/apps/web/components/Organization/Wrapper/Themes/SjukratryggingarTheme/index.ts @@ -1,7 +1,9 @@ import dynamic from 'next/dynamic' +import DefaultHeader from './SjukratryggingarDefaultHeader' import Header from './SjukratryggingarHeader' +export const SjukratryggingarDefaultHeader = DefaultHeader export const SjukratryggingarHeader = Header export const SjukratryggingarFooter = dynamic( diff --git a/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennDefaultHeader.css.ts b/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennDefaultHeader.css.ts new file mode 100644 index 000000000000..2b1ca1aba80b --- /dev/null +++ b/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennDefaultHeader.css.ts @@ -0,0 +1,7 @@ +import { style } from '@vanilla-extract/css' + +export const gridContainerWidth = style({ + backgroundBlendMode: 'saturation', + maxWidth: '1342px', + margin: '0 auto', +}) diff --git a/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennDefaultHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennDefaultHeader.tsx new file mode 100644 index 000000000000..6cda37372faa --- /dev/null +++ b/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennDefaultHeader.tsx @@ -0,0 +1,65 @@ +import React from 'react' + +import { ResponsiveSpace } from '@island.is/island-ui/core' +import { theme } from '@island.is/island-ui/theme' +import { DefaultHeader } from '@island.is/web/components' +import { OrganizationPage } from '@island.is/web/graphql/schema' +import { useLinkResolver } from '@island.is/web/hooks/useLinkResolver' +import { useWindowSize } from '@island.is/web/hooks/useViewport' + +import * as styles from './SyslumennDefaultHeader.css' + +interface HeaderProps { + organizationPage: OrganizationPage + logoAltText: string + isSubpage: boolean +} + +const SyslumennDefaultHeader: React.FC< + React.PropsWithChildren<HeaderProps> +> = ({ organizationPage, logoAltText, isSubpage }) => { + const { linkResolver } = useLinkResolver() + + const { width } = useWindowSize() + + const themeProp = organizationPage.themeProperties + + return ( + <div + style={{ + background: + (width > theme.breakpoints.lg + ? themeProp.backgroundColor + : 'linear-gradient(99.09deg, #003D85 23.68%, #4E8ECC 123.07%),linear-gradient(180deg, rgba(0,0,0,0.5) 0%, rgba(0, 0, 0, 0) 70%)') ?? + '', + }} + className={styles.gridContainerWidth} + > + <DefaultHeader + title={organizationPage.title} + titleColor="white" + imagePadding={themeProp.imagePadding ?? '0'} + fullWidth={themeProp.fullWidth ?? false} + imageIsFullHeight={themeProp.imageIsFullHeight ?? false} + imageObjectFit={ + themeProp?.imageObjectFit === 'cover' ? 'cover' : 'contain' + } + logo={organizationPage.organization?.logo?.url} + logoHref={ + linkResolver('organizationpage', [organizationPage.slug]).href + } + logoAltText={logoAltText} + titleSectionPaddingLeft={ + organizationPage.themeProperties + .titleSectionPaddingLeft as ResponsiveSpace + } + isSubpage={isSubpage} + mobileBackground={ + organizationPage.themeProperties.mobileBackgroundColor + } + /> + </div> + ) +} + +export default SyslumennDefaultHeader diff --git a/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennHeader.tsx index b6d7674c8a67..5fefc27165cd 100644 --- a/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/SyslumennHeader.tsx @@ -42,7 +42,7 @@ const SyslumennHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/index.ts b/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/index.ts index 973e6b5ef85a..203cb1699d39 100644 --- a/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/index.ts +++ b/apps/web/components/Organization/Wrapper/Themes/SyslumennTheme/index.ts @@ -1,9 +1,12 @@ import dynamic from 'next/dynamic' +import DefaultHeader from './SyslumennDefaultHeader' import Header from './SyslumennHeader' export const SyslumennHeader = Header +export const SyslumennDefaultHeader = DefaultHeader + export const SyslumennFooter = dynamic(() => import('./SyslumennFooter'), { ssr: true, }) diff --git a/apps/web/components/Organization/Wrapper/Themes/TransportAuthorityTheme/TransportAuthorityHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/TransportAuthorityTheme/TransportAuthorityHeader.tsx index 188a398beae6..bb1b13c180b1 100644 --- a/apps/web/components/Organization/Wrapper/Themes/TransportAuthorityTheme/TransportAuthorityHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/TransportAuthorityTheme/TransportAuthorityHeader.tsx @@ -41,7 +41,7 @@ const TransportAuthorityHeader: React.FC<HeaderProps> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/UtlendingastofnunTheme/UtlendingastofnunHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/UtlendingastofnunTheme/UtlendingastofnunHeader.tsx index e137dbf658f1..f18e6ebae612 100644 --- a/apps/web/components/Organization/Wrapper/Themes/UtlendingastofnunTheme/UtlendingastofnunHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/UtlendingastofnunTheme/UtlendingastofnunHeader.tsx @@ -35,7 +35,7 @@ const UtlendingastofnunHeader: React.FC< > = ({ organizationPage, logoAltText }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/Themes/VinnueftirlitidTheme/VinnueftirlitidHeader.tsx b/apps/web/components/Organization/Wrapper/Themes/VinnueftirlitidTheme/VinnueftirlitidHeader.tsx index c4815d6a5f9c..274c5566f3d9 100644 --- a/apps/web/components/Organization/Wrapper/Themes/VinnueftirlitidTheme/VinnueftirlitidHeader.tsx +++ b/apps/web/components/Organization/Wrapper/Themes/VinnueftirlitidTheme/VinnueftirlitidHeader.tsx @@ -19,7 +19,7 @@ const VinnueftilitidHeader: React.FC<React.PropsWithChildren<HeaderProps>> = ({ }) => { const { linkResolver } = useLinkResolver() const namespace = useMemo( - () => JSON.parse(organizationPage.organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organizationPage.organization?.namespace?.fields || '{}'), [organizationPage.organization?.namespace?.fields], ) const n = useNamespace(namespace) diff --git a/apps/web/components/Organization/Wrapper/config.ts b/apps/web/components/Organization/Wrapper/config.ts index 29dd6a701809..fea6d72ffdd7 100644 --- a/apps/web/components/Organization/Wrapper/config.ts +++ b/apps/web/components/Organization/Wrapper/config.ts @@ -90,9 +90,9 @@ export const watsonConfig: Record< // Útlendingastofnun - Organization // https://app.contentful.com/spaces/8k0h54kbe6bj/entries/77rXck3sISbMsUv7BO1PG2 '77rXck3sISbMsUv7BO1PG2': { - integrationID: '89a03e83-5c73-4642-b5ba-cd3771ceca54', + integrationID: '9e320784-ad44-4da9-9eb3-f305057a196a', region: 'eu-gb', - serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', + serviceInstanceID: '2529638b-503c-4374-955c-0310139ec177', showLauncher: false, carbonTheme: 'g10', namespaceKey: 'default', @@ -111,7 +111,7 @@ export const watsonConfig: Record< // Samgöngustofa - Organization '6IZT17s7stKJAmtPutjpD7': { - integrationID: '1e649a3f-9476-4995-ba24-0e72040b0cc0', + integrationID: 'ee1c15db-7151-4487-bc9a-9f32f1f8ae3b', region: 'eu-gb', serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', showLauncher: false, @@ -122,7 +122,7 @@ export const watsonConfig: Record< is: { // Samgöngustofa - Organization '6IZT17s7stKJAmtPutjpD7': { - integrationID: 'fe12e960-329c-46d5-9ae1-8bd8b8219f43', + integrationID: 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', region: 'eu-gb', serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', showLauncher: false, diff --git a/apps/web/components/Organization/index.ts b/apps/web/components/Organization/index.ts index b33a71c2db68..528d6ee5e34d 100644 --- a/apps/web/components/Organization/index.ts +++ b/apps/web/components/Organization/index.ts @@ -30,3 +30,4 @@ export * from './Wrapper/Themes/FiskistofaTheme' export * from './SyslumennListCsvExport/SyslumennListCsvExport' export * from './Wrapper/Themes/LandkjorstjornTheme' export * from './Slice/LatestEventsSlice/LatestEventsSlice' +export * from './Slice/TeamListSlice/TeamListSlice' diff --git a/apps/web/components/Project/Header/DirectorateOfHealthDashboardHeader.tsx b/apps/web/components/Project/Header/DirectorateOfHealthDashboardHeader.tsx index efba22082d96..993f1d0bfb09 100644 --- a/apps/web/components/Project/Header/DirectorateOfHealthDashboardHeader.tsx +++ b/apps/web/components/Project/Header/DirectorateOfHealthDashboardHeader.tsx @@ -18,7 +18,7 @@ export const DirectorateOfHealthDashboardHeader: React.FC< React.PropsWithChildren<DirectorateOfHealthDashboardHeaderProps> > = ({ projectPage }) => { const namespace = useMemo(() => { - return JSON.parse(projectPage?.namespace?.fields ?? '{}') + return JSON.parse(projectPage?.namespace?.fields || '{}') }, [projectPage?.namespace?.fields]) const { activeLocale } = useI18n() diff --git a/apps/web/components/Project/Header/FiskistofaDashboardHeader.tsx b/apps/web/components/Project/Header/FiskistofaDashboardHeader.tsx index 89f375d468af..6d0751e50982 100644 --- a/apps/web/components/Project/Header/FiskistofaDashboardHeader.tsx +++ b/apps/web/components/Project/Header/FiskistofaDashboardHeader.tsx @@ -13,7 +13,7 @@ export const FiskistofaDashboardHeader: React.FC< React.PropsWithChildren<FiskistofaDashboardHeaderProps> > = ({ projectPage }) => { const namespace = useMemo(() => { - return JSON.parse(projectPage?.namespace?.fields ?? '{}') + return JSON.parse(projectPage?.namespace?.fields || '{}') }, [projectPage?.namespace?.fields]) const n = useNamespace(namespace) diff --git a/apps/web/components/Regulations/RegulationTexts.types.ts b/apps/web/components/Regulations/RegulationTexts.types.ts index 9db3ce98e3da..323337272156 100644 --- a/apps/web/components/Regulations/RegulationTexts.types.ts +++ b/apps/web/components/Regulations/RegulationTexts.types.ts @@ -88,7 +88,7 @@ export type RegulationPageTexts = Partial< | 'historyTitle' // 'Breytingasaga reglugerðar ${name}' | 'historyStart' // 'Stofnreglugerð gefin út' | 'historyStartAmending' // 'Reglugerðin gefin út' - | 'historyChange' // 'Breytt af ${name}' + | 'historyChange' // 'Breytt með ${name}' | 'historyCancel' // 'Brottfelld af ${name}' | 'historyCurrentVersion' // 'Núgildandi útgáfa' | 'historyPastSplitter' // 'Gildandi breytingar' diff --git a/apps/web/components/ServiceWeb/Forms/StandardForm/StandardForm.tsx b/apps/web/components/ServiceWeb/Forms/StandardForm/StandardForm.tsx index 2268e4884265..3f469edd3828 100644 --- a/apps/web/components/ServiceWeb/Forms/StandardForm/StandardForm.tsx +++ b/apps/web/components/ServiceWeb/Forms/StandardForm/StandardForm.tsx @@ -433,6 +433,7 @@ export const StandardForm = ({ case SjukratryggingarCategories.ONNUR_THJONUSTA_SJUKRATRYGGINGA: case SjukratryggingarCategories.HJUKRUNARHEIMILI: case SjukratryggingarCategories.TULKATHJONUSTA: + case SjukratryggingarCategories.EVROPSKA_SJUKRATRYGGINGAKORTID: fields = ( <GridColumn span="12/12" paddingBottom={3}> <BasicInput diff --git a/apps/web/components/ServiceWeb/config.ts b/apps/web/components/ServiceWeb/config.ts index a766a5aa3902..f545bb261ff3 100644 --- a/apps/web/components/ServiceWeb/config.ts +++ b/apps/web/components/ServiceWeb/config.ts @@ -1,5 +1,4 @@ import { Locale } from '@island.is/shared/types' - import { WatsonChatPanelProps } from '@island.is/web/components' import { BackgroundVariations, Options } from './types' @@ -66,6 +65,9 @@ enum Organization { /** Útlendingastofnun */ DIRECTORATE_OF_IMMIGRATION = '77rXck3sISbMsUv7BO1PG2', + + /** Samgöngustofa */ + TRANSPORT_AUTHORITY = '6IZT17s7stKJAmtPutjpD7', } export const watsonConfig: Record< @@ -105,6 +107,14 @@ export const watsonConfig: Record< carbonTheme: 'g10', namespaceKey: 'default', }, + [Organization.TRANSPORT_AUTHORITY]: { + integrationID: 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', + region: 'eu-gb', + serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', + showLauncher: false, + carbonTheme: 'g10', + namespaceKey: 'default', + }, }, en: { [Organization.DIGITAL_ICELAND]: { @@ -124,7 +134,15 @@ export const watsonConfig: Record< namespaceKey: 'default', }, [Organization.DIRECTORATE_OF_IMMIGRATION]: { - integrationID: '89a03e83-5c73-4642-b5ba-cd3771ceca54', + integrationID: '9e320784-ad44-4da9-9eb3-f305057a196a', + region: 'eu-gb', + serviceInstanceID: '2529638b-503c-4374-955c-0310139ec177', + showLauncher: false, + carbonTheme: 'g10', + namespaceKey: 'default', + }, + [Organization.TRANSPORT_AUTHORITY]: { + integrationID: 'ee1c15db-7151-4487-bc9a-9f32f1f8ae3b', region: 'eu-gb', serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', showLauncher: false, diff --git a/apps/web/components/SignLanguageButton/SignLanguageButton.tsx b/apps/web/components/SignLanguageButton/SignLanguageButton.tsx index 60f9b79ec0df..6fa56a216d6b 100644 --- a/apps/web/components/SignLanguageButton/SignLanguageButton.tsx +++ b/apps/web/components/SignLanguageButton/SignLanguageButton.tsx @@ -44,7 +44,7 @@ export const SignLanguageButton = ({ ) const namespace = useMemo( - () => JSON.parse(data?.getNamespace?.fields ?? '{}'), + () => JSON.parse(data?.getNamespace?.fields || '{}'), [data?.getNamespace?.fields], ) diff --git a/apps/web/components/Stepper/Stepper/Stepper.tsx b/apps/web/components/Stepper/Stepper/Stepper.tsx index 44e4e8a91950..0337d441c212 100644 --- a/apps/web/components/Stepper/Stepper/Stepper.tsx +++ b/apps/web/components/Stepper/Stepper/Stepper.tsx @@ -2,23 +2,23 @@ import React, { useEffect, useMemo, useState } from 'react' import { useRouter } from 'next/router' import { ParsedUrlQuery } from 'querystring' +import { SliceType } from '@island.is/island-ui/contentful' import { Box, - Text, Button, - RadioButton, - Select, - Link, GridColumn, - GridRow, GridContainer, + GridRow, + Link, + RadioButton, + Select, + Text, } from '@island.is/island-ui/core' -import { Webreader } from '@island.is/web/components' -import { SliceType } from '@island.is/island-ui/contentful' -import { useI18n } from '@island.is/web/i18n' import { isRunningOnEnvironment } from '@island.is/shared/utils' +import { Webreader } from '@island.is/web/components' import { Stepper as StepperSchema } from '@island.is/web/graphql/schema' import { useNamespace } from '@island.is/web/hooks' +import { useI18n } from '@island.is/web/i18n' import { webRichText } from '@island.is/web/utils/richText' import { @@ -26,19 +26,18 @@ import { StepperHelper, } from '../StepperHelper/StepperHelper' import { + getCurrentStepAndStepType, + getStepBySlug, + getStepOptions, getStepperMachine, + getStepQuestion, resolveStepType, - getStepOptions, STEP_TYPES, StepOption, - getStepBySlug, StepperMachine, - getStepQuestion, - getCurrentStepAndStepType, - validateStepperConfig, validateStepConfig, + validateStepperConfig, } from '../utils' - import * as styles from './Stepper.css' const ANSWER_DELIMITER = ',' @@ -87,19 +86,26 @@ const getInitialStateAndAnswersByQueryParams = ( const stepType = resolveStepType(step) if (stepType === STEP_TYPES.ANSWER) break - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore make web strict - const options = getStepOptions(step, activeLocale, optionsFromNamespace) // TODO: step might be undefined: Stefna - const selectedOption = options.find((o) => o.value === answer) + + const options = getStepOptions(step, activeLocale, optionsFromNamespace) + let selectedOption = options.find((o) => o.value === answer) + + if (stepType === STEP_TYPES.INFORMATION) { + selectedOption = { + label: activeLocale === 'is' ? 'Halda áfram' : 'Continue', + transition: 'continue', + value: 'continue', + } + } + if (!selectedOption) break initialState = stepperMachine.transition( initialState, - selectedOption.transition, + selectedOption?.transition, ) - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore make web strict - const stepQuestion = getStepQuestion(step) // TODO: step might be undefined: Stefna + + const stepQuestion = getStepQuestion(step) if (stepQuestion) { questionsAndAnswers.push({ question: stepQuestion, @@ -124,9 +130,7 @@ const StepperWrapper = ( const stepConfigErrors = steps.map((step) => ({ step, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore make web strict - errors: validateStepConfig(step), // TODO: step might be undefined: Stefna + errors: validateStepConfig(step), })) if ( @@ -137,8 +141,6 @@ const StepperWrapper = ( ? renderStepperAndStepConfigErrors( props.stepper, configErrors, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore make web strict stepConfigErrors, // TODO: Argument of type '{ step: Step | undefined; errors: Set<string>; }[]' is not assignable to parameter of type '{ step: Step; errors: Set<string>; }[]': Stefna ) : null @@ -208,9 +210,7 @@ const Stepper = ({ const isOnFirstStep = stepperMachine.initialState.value === currentState.value const [selectedOption, setSelectedOption] = useState<StepOption | null>(null) const stepOptions = useMemo( - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore make web strict - () => getStepOptions(currentStep, activeLocale, optionsFromNamespace), // TODO: currentStep might be undefined: Stefna + () => getStepOptions(currentStep, activeLocale, optionsFromNamespace), [activeLocale, currentStep, optionsFromNamespace], ) @@ -314,7 +314,7 @@ const Stepper = ({ setCurrentState((prevState) => { const newState = stepperMachine.transition( currentState, - selectedOption.transition, + selectedOption?.transition ?? 'continue', ) const transitionWorked = newState.value !== prevState.value @@ -334,7 +334,9 @@ const Stepper = ({ pathname: pathnameWithoutQueryParams, query: { ...router.query, - answers: `${previousAnswers}${selectedOption.value}`, + answers: `${previousAnswers}${ + selectedOption?.value ?? 'continue' + }`, }, }) .then(() => { @@ -388,7 +390,7 @@ const Stepper = ({ const renderCurrentStepOptions = () => { if (currentStepType === STEP_TYPES.QUESTION_RADIO) - return stepOptions.map(function (option, i) { + return stepOptions.map((option, i) => { const key = `step-option-${i}` return ( <Box key={key} marginBottom={3}> @@ -430,23 +432,25 @@ const Stepper = ({ return ( <Box className={styles.container}> - {currentStepType !== STEP_TYPES.ANSWER && ( - <QuestionTitle containerClassName={webReaderClassName} /> - )} + {!( + currentStepType === STEP_TYPES.ANSWER || + currentStepType === STEP_TYPES.INFORMATION + ) && <QuestionTitle containerClassName={webReaderClassName} />} {showWebReader && ( <Webreader readId={undefined} readClass={webReaderClassName} /> )} - {currentStepType === STEP_TYPES.ANSWER && ( + {(currentStepType === STEP_TYPES.ANSWER || + currentStepType === STEP_TYPES.INFORMATION) && ( <QuestionTitle containerClassName={webReaderClassName} /> )} - {renderCurrentStepOptions()} {transitionErrorMessage && ( <Text marginBottom={2} marginTop={2} color="red400"> {transitionErrorMessage} </Text> )} - {stepOptions?.length > 0 && <ContinueButton />} + {(stepOptions?.length > 0 || + currentStepType === STEP_TYPES.INFORMATION) && <ContinueButton />} {!isOnFirstStep && ( <Box diff --git a/apps/web/components/Stepper/StepperHelper/StepperHelper.tsx b/apps/web/components/Stepper/StepperHelper/StepperHelper.tsx index 99b49d61854c..9a40d457c3ce 100644 --- a/apps/web/components/Stepper/StepperHelper/StepperHelper.tsx +++ b/apps/web/components/Stepper/StepperHelper/StepperHelper.tsx @@ -1,5 +1,6 @@ import React, { FC, useEffect, useState } from 'react' import { useRouter } from 'next/router' + import { AccordionItem, ArrowLink, @@ -9,18 +10,18 @@ import { Text, } from '@island.is/island-ui/core' import { Step, Stepper } from '@island.is/web/graphql/schema' -import { useI18n } from '@island.is/web/i18n' import { scrollTo } from '@island.is/web/hooks/useScrollSpy' +import { useI18n } from '@island.is/web/i18n' + +import { STEPPER_HELPER_ENABLED_KEY } from '../Stepper/Stepper' import { - StepperState, - resolveStepType, - getStepOptions, - getStepBySlug, getStateMeta, + getStepBySlug, + getStepOptions, + resolveStepType, StepperMachine, + StepperState, } from '../utils' -import { STEPPER_HELPER_ENABLED_KEY } from '../Stepper/Stepper' - import * as styles from './StepperHelper.css' const SUCCESS_SYMBOL = '✔️' @@ -138,15 +139,17 @@ export const renderErrors = (errors: ErrorField[]) => { } export const renderStepperAndStepConfigErrors = ( - stepper: Stepper, + stepper: Stepper | undefined, stepperConfigErrors: Set<string>, - stepConfigErrors: { step: Step; errors: Set<string> }[], + stepConfigErrors: { step: Step | undefined; errors: Set<string> }[], ) => { const stepperConfigErrorComponent = stepperConfigErrors.size > 0 ? ( <div className={styles.border}> <Text variant="h4">Stepper config errors:</Text> - <ArrowLink href={getContentfulLink(stepper)}>Contentful</ArrowLink> + {stepper && ( + <ArrowLink href={getContentfulLink(stepper)}>Contentful</ArrowLink> + )} {renderErrors( Array.from(stepperConfigErrors).map((e) => ({ message: e })), )} @@ -162,7 +165,9 @@ export const renderStepperAndStepConfigErrors = ( .map(({ step, errors }, index) => ( <div key={index} className={styles.border}> <Text variant="h5">Step config errors:</Text> - <ArrowLink href={getContentfulLink(step)}>Contentful</ArrowLink> + {step && ( + <ArrowLink href={getContentfulLink(step)}>Contentful</ArrowLink> + )} {renderErrors(Array.from(errors).map((e) => ({ message: e })))} </div> ))} diff --git a/apps/web/components/Stepper/utils.ts b/apps/web/components/Stepper/utils.ts index ec8d87070bad..24cd2f11921c 100644 --- a/apps/web/components/Stepper/utils.ts +++ b/apps/web/components/Stepper/utils.ts @@ -88,7 +88,7 @@ const getStepBySlug = (stepper: Stepper, slug: string): Step | undefined => { // The following code discards the state node ID keys and merges the meta data, as // demonstrated in the documentation, see https://xstate.js.org/docs/guides/states.html#state-meta-data // eslint-disable-next-line @typescript-eslint/no-explicit-any -function mergeMeta(meta: any) { +const mergeMeta = (meta: any) => { return Object.keys(meta).reduce((acc, key) => { const value = meta[key] @@ -190,12 +190,15 @@ const validateStepperConfig = (stepper: Stepper) => { return errors } -const validateStepConfig = (step: Step) => { +const validateStepConfig = (step: Step | undefined) => { const errors: Set<string> = new Set<string>() - if (resolveStepType(step) === STEP_TYPES.ANSWER) return errors + const stepType = resolveStepType(step) - if (!step.config) { + if (stepType === STEP_TYPES.ANSWER || stepType === STEP_TYPES.INFORMATION) + return errors + + if (!step?.config) { errors.add('Missing config!') return errors } @@ -261,6 +264,7 @@ const getStepperMachine = (stepper: Stepper): StepperMachine => { const STEP_TYPES = { QUESTION_RADIO: 'question-radio', QUESTION_DROPDOWN: 'question-dropdown', + INFORMATION: 'information', ANSWER: 'answer', } @@ -284,11 +288,15 @@ const resolveStepType = (step: Step | undefined): string => { if (step.stepType && step.stepType.toLowerCase().includes('answer')) { return STEP_TYPES.ANSWER } + if (step.stepType && step.stepType.toLowerCase().includes('information')) { + return STEP_TYPES.INFORMATION + } + return '' } const getStepOptions = ( - step: Step, + step: Step | undefined, lang = 'en', optionsFromNamespace: { slug: string @@ -391,6 +399,7 @@ const stepContainsQuestion = (step: Step) => { step.subtitle && step.subtitle.length > 0 && step.stepType !== STEP_TYPES.ANSWER && + step.stepType !== STEP_TYPES.INFORMATION && step.subtitle[0].__typename === 'Html' && step.subtitle[0].document.content.length > 0 && step.subtitle[0].document.content[0].content && @@ -398,7 +407,10 @@ const stepContainsQuestion = (step: Step) => { ) } -const getStepQuestion = (step: Step): string => { +const getStepQuestion = (step?: Step): string => { + if (!step) { + return '' + } if (stepContainsQuestion(step) && step.subtitle?.[0].__typename === 'Html') { return step.subtitle[0].document.content[0].content[0].value } diff --git a/apps/web/components/connected/AdministrationOfOccupationalSafetyAndHealthCourses/AdministrationOfOccupationalSafetyAndHealthCourses.tsx b/apps/web/components/connected/AdministrationOfOccupationalSafetyAndHealthCourses/AdministrationOfOccupationalSafetyAndHealthCourses.tsx index 337f945e1d21..d29a58cda6fb 100644 --- a/apps/web/components/connected/AdministrationOfOccupationalSafetyAndHealthCourses/AdministrationOfOccupationalSafetyAndHealthCourses.tsx +++ b/apps/web/components/connected/AdministrationOfOccupationalSafetyAndHealthCourses/AdministrationOfOccupationalSafetyAndHealthCourses.tsx @@ -1,4 +1,5 @@ import { useState } from 'react' +import { useIntl } from 'react-intl' import { useQuery } from '@apollo/client/react' import { @@ -11,11 +12,11 @@ import { } from '@island.is/island-ui/core' import { BorderAbove } from '@island.is/web/components' import { ConnectedComponent, Query } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' import { useDateUtils } from '@island.is/web/i18n/useDateUtils' import { extractHeadingLevels } from '@island.is/web/utils/navigation' import { GET_ADMINISTRATION_OF_SAFETY_AND_HEALTH_COURSES_QUERY } from './queries' +import { translation as translationStrings } from './translation.strings' import { getCurrencyString, parseDateString } from './utils' const normalizesAndMatch = (value1: string, value2: string) => { @@ -31,8 +32,8 @@ type ListState = 'loading' | 'loaded' | 'error' const AdministrationOfOccupationalSafetyAndHealthCourses = ({ slice, }: AdministrationOfOccupationalSafetyAndHealthCoursesProps) => { - const n = useNamespace(slice.json ?? {}) const { format } = useDateUtils() + const { formatMessage } = useIntl() const title = slice.json?.title ?? null const hasBorderAbove = slice.configJson?.hasBorderAbove ?? false @@ -99,15 +100,17 @@ const AdministrationOfOccupationalSafetyAndHealthCourses = ({ )} {listState === 'error' && ( <AlertMessage - title={n('errorTitle', 'Villa')} - message={n('errorMessage', 'Ekki tókst að sækja áfengisleyfi.')} + title={formatMessage(translationStrings.errorTitle)} + message={formatMessage(translationStrings.errorMessage)} type="error" /> )} {listState === 'loaded' && courses.length === 0 && ( <Box display="flex" marginTop={4} justifyContent="center"> - <Text variant="h3">{n('noResults', 'Engin Námskeið fundust.')}</Text> + <Text variant="h3"> + {formatMessage(translationStrings.noResults)} + </Text> </Box> )} {listState === 'loaded' && courses.length > 0 && ( @@ -168,19 +171,19 @@ const AdministrationOfOccupationalSafetyAndHealthCourses = ({ > <Box style={{ flex: '0 0 50%' }}> <Text> - {n('validPeriodLabel', 'Dagsetning')}:{' '} + {formatMessage(translationStrings.validPeriodLabel)}:{' '} {dateFrom !== dateTo ? dateFrom + ' - ' + dateTo : dateFrom} </Text> <Text paddingBottom={2}> - {n('time', 'Klukkan')}: {course.time} + {formatMessage(translationStrings.time)}: {course.time} </Text> </Box> <Box paddingLeft={[0, 0, 0, 2]}> <Text> - {n('price', 'Verð')}:{' '} + {formatMessage(translationStrings.price)}:{' '} {getCurrencyString(course.price || 0)} </Text> </Box> diff --git a/apps/web/components/connected/AdministrationOfOccupationalSafetyAndHealthCourses/translation.strings.ts b/apps/web/components/connected/AdministrationOfOccupationalSafetyAndHealthCourses/translation.strings.ts new file mode 100644 index 000000000000..8379f4468caf --- /dev/null +++ b/apps/web/components/connected/AdministrationOfOccupationalSafetyAndHealthCourses/translation.strings.ts @@ -0,0 +1,34 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + errorTitle: { + id: 'web.administrationOfOccupationalSafetyAndHealthCourses:errorTitle', + defaultMessage: 'Villa', + description: 'Titill á villu skilaboðum', + }, + errorMessage: { + id: 'web.administrationOfOccupationalSafetyAndHealthCourses:errorMessage', + defaultMessage: 'Ekki tókst að sækja námskeið.', + description: 'Texti fyrir villu skilaboð', + }, + noResults: { + id: 'web.administrationOfOccupationalSafetyAndHealthCourses:noResults', + defaultMessage: 'Engin Námskeið fundust.', + description: 'Texti þegar engin námskeið finnast', + }, + validPeriodLabel: { + id: 'web.administrationOfOccupationalSafetyAndHealthCourses:validPeriodLabel', + defaultMessage: 'Dagsetning', + description: 'Texti fyrir framan dagsetningar á námskeiða spjöldum', + }, + time: { + id: 'web.administrationOfOccupationalSafetyAndHealthCourses:time', + defaultMessage: 'Klukkan', + description: 'Texti fyrir framan tímasetningu á námskeiða spjöldum', + }, + price: { + id: 'web.administrationOfOccupationalSafetyAndHealthCourses:price', + defaultMessage: 'Verð', + description: 'Texti fyrir framan verð á námskeiða spjöldum', + }, +}) diff --git a/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/BenefitsOfDigitalProcessesCalculator.tsx b/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/BenefitsOfDigitalProcessesCalculator.tsx new file mode 100644 index 000000000000..58b869a9be66 --- /dev/null +++ b/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/BenefitsOfDigitalProcessesCalculator.tsx @@ -0,0 +1,405 @@ +import { + type PropsWithChildren, + type ReactNode, + useEffect, + useRef, + useState, +} from 'react' +import { useIntl } from 'react-intl' +import NumberFormat from 'react-number-format' + +import { + Box, + Button, + GridColumn, + GridRow, + Icon, + Inline, + Input, + Stack, + Text, +} from '@island.is/island-ui/core' +import type { SpanType } from '@island.is/island-ui/core/types' +import type { ConnectedComponent } from '@island.is/web/graphql/schema' +import { useI18n } from '@island.is/web/i18n' +import { formatCurrency } from '@island.is/web/utils/currency' + +import { formatValueForPresentation } from '../../Charts/v2/utils' +import { t } from './translation.strings' +import { calculateResults, UserInput } from './utils' + +interface FieldProps { + heading: string + description?: string +} + +const Field = ({ + heading, + description, + children, +}: PropsWithChildren<FieldProps>) => { + return ( + <Stack space={2}> + <Inline flexWrap="nowrap" space={1} alignY="center"> + <Text variant="h4">{heading}</Text> + </Inline> + {description && <Text variant="medium">{description}</Text>} + {children} + </Stack> + ) +} + +interface ResultCardProps { + title: string + icon?: ReactNode + description: string +} + +const ResultCard = ({ title, icon, description }: ResultCardProps) => { + return ( + <Box + padding={[2, 2, 3]} + borderRightWidth="large" + borderColor="blue400" + height="full" + background="blue100" + textAlign="right" + > + <Stack space={2}> + <Inline space={1} justifyContent="flexEnd"> + {icon && icon} + <Text variant="h3">{title}</Text> + </Inline> + + <Text>{description}</Text> + </Stack> + </Box> + ) +} + +const canCalculate = (current: UserInput, previous: UserInput | null) => { + if ( + !( + current.nameOfProcess.length > 0 && + current.amountPerYear > 0 && + current.processDurationInMinutes > 0 && + current.visitCountToCompleteProcess > 0 && + current.averageDistanceToProcessInKilometers > 0 + ) + ) { + return false + } + + if (!previous) { + return true + } + + for (const key in current) { + if ( + current[key as keyof typeof current] !== + previous[key as keyof typeof current] + ) { + return true + } + } + + return false +} + +interface BenefitsOfDigitalProcessesCalculatorProps { + slice: ConnectedComponent +} + +export const BenefitsOfDigitalProcessesCalculator = ({ + slice, +}: BenefitsOfDigitalProcessesCalculatorProps) => { + const { formatMessage } = useIntl() + const { activeLocale } = useI18n() + + const resultsRef = useRef<HTMLDivElement | null>(null) + const [previousInput, setPreviousInput] = useState<UserInput | null>(null) + + const [userInput, setUserInput] = useState<UserInput>({ + amountPerYear: 0, + averageDistanceToProcessInKilometers: + slice.configJson?.['defaultAverageDistanceToProcessInKilometers'] ?? 7.5, + nameOfProcess: '', + processDurationInMinutes: 0, + visitCountToCompleteProcess: 0, + }) + + const resultColumnSpan: SpanType = ['1/1', '1/2', '1/1', '1/2', '1/3'] + + const { results, gainPerCitizen, ringRoadTripsSaved, co2 } = calculateResults( + slice, + userInput, + ) + + const displayResults = + Boolean(previousInput) && + !canCalculate(userInput, previousInput) && + userInput.nameOfProcess.length > 0 && + userInput.amountPerYear > 0 && + userInput.processDurationInMinutes > 0 && + userInput.visitCountToCompleteProcess > 0 && + userInput.averageDistanceToProcessInKilometers > 0 + + useEffect(() => { + if (!previousInput) return + resultsRef.current?.scrollIntoView({ + behavior: 'smooth', + }) + }, [previousInput]) + + return ( + <Stack space={4}> + <Box + background="blue100" + paddingY={[3, 3, 5]} + paddingX={[3, 3, 3, 3, 12]} + > + <Stack space={5}> + <Field heading={formatMessage(t.nameOfProcess.heading)}> + <Input + required={true} + name="nameOfProcess" + value={userInput.nameOfProcess} + onChange={(ev) => { + setUserInput((prevInput) => ({ + ...prevInput, + nameOfProcess: ev.target.value, + })) + }} + label={formatMessage(t.nameOfProcess.label)} + placeholder={formatMessage(t.nameOfProcess.placeholder)} + /> + </Field> + + <Field + heading={formatMessage(t.amountPerYear.heading)} + description={formatMessage(t.amountPerYear.description)} + > + <NumberFormat + required={true} + value={String(userInput.amountPerYear || '')} + onValueChange={({ value }) => { + setUserInput((prevInput) => ({ + ...prevInput, + amountPerYear: Number(value), + })) + }} + customInput={Input} + name="amountPerYear" + id="amountPerYear" + type="text" + inputMode="numeric" + thousandSeparator="." + decimalSeparator="," + label={formatMessage(t.amountPerYear.label)} + placeholder={formatMessage(t.amountPerYear.placeholder)} + /> + </Field> + + <Field + heading={formatMessage(t.processDurationInMinutes.heading)} + description={formatMessage(t.processDurationInMinutes.description)} + > + <NumberFormat + required={true} + value={String(userInput.processDurationInMinutes || '')} + onValueChange={({ value }) => { + setUserInput((prevInput) => ({ + ...prevInput, + processDurationInMinutes: Number(value), + })) + }} + customInput={Input} + name="processDurationInMinutes" + id="processDurationInMinutes" + type="text" + inputMode="numeric" + thousandSeparator="." + decimalSeparator="," + label={formatMessage(t.processDurationInMinutes.label)} + placeholder={formatMessage( + t.processDurationInMinutes.placeholder, + )} + /> + </Field> + + <Field + heading={formatMessage(t.visitCountToCompleteProcess.heading)} + description={formatMessage( + t.visitCountToCompleteProcess.description, + )} + > + <NumberFormat + required={true} + value={String(userInput.visitCountToCompleteProcess || '')} + onValueChange={({ value }) => { + setUserInput((prevInput) => ({ + ...prevInput, + visitCountToCompleteProcess: Number(value), + })) + }} + customInput={Input} + name="visitCountToCompleteProcess" + id="visitCountToCompleteProcess" + type="text" + inputMode="numeric" + thousandSeparator="." + decimalSeparator="," + label={formatMessage(t.visitCountToCompleteProcess.label)} + placeholder={formatMessage( + t.visitCountToCompleteProcess.placeholder, + )} + /> + </Field> + + <Field + heading={formatMessage( + t.averageDistanceToProcessInKilometers.heading, + )} + description={formatMessage( + t.averageDistanceToProcessInKilometers.description, + )} + > + <NumberFormat + required={true} + value={String( + userInput.averageDistanceToProcessInKilometers || '', + )} + onValueChange={({ value }) => { + setUserInput((prevInput) => ({ + ...prevInput, + averageDistanceToProcessInKilometers: Number(value), + })) + }} + isNumericString={true} + customInput={Input} + name="averageDistanceToProcessInKilometers" + id="averageDistanceToProcessInKilometers" + inputMode="decimal" + thousandSeparator="." + decimalSeparator="," + label={formatMessage( + t.averageDistanceToProcessInKilometers.label, + )} + /> + </Field> + + <Button + disabled={!canCalculate(userInput, previousInput)} + onClick={() => { + setPreviousInput({ + ...userInput, + }) + }} + > + {formatMessage(t.results.calculate)} + </Button> + </Stack> + </Box> + + <div ref={resultsRef} style={{ scrollMarginTop: '32px' }}> + {displayResults && ( + <Stack space={3}> + <Text variant="h2">{userInput.nameOfProcess}</Text> + + <GridRow rowGap={4}> + <GridColumn span={resultColumnSpan}> + <ResultCard + title={ + results.institutionGain >= 1e6 + ? `${formatValueForPresentation( + activeLocale, + results.institutionGain, + )}${formatMessage(t.results.currencyPostfix)}` + : (formatCurrency( + results.institutionGain, + formatMessage(t.results.currencyPostfix), + ) as string) + } + description={formatMessage( + t.results.institutionGainDescription, + )} + icon={<Icon icon="wallet" color="blue400" size="large" />} + /> + </GridColumn> + <GridColumn span={resultColumnSpan}> + <ResultCard + title={formatValueForPresentation( + activeLocale, + results.staffFreeToDoOtherThings, + true, + 1, + )} + description={formatMessage( + t.results.staffFreeToDoOtherThings, + )} + icon={<Icon icon="people" color="blue400" size="large" />} + /> + </GridColumn> + <GridColumn span={resultColumnSpan}> + <ResultCard + title={ + gainPerCitizen >= 1e6 + ? `${formatValueForPresentation( + activeLocale, + gainPerCitizen, + )}${formatMessage(t.results.currencyPostfix)}` + : (formatCurrency( + gainPerCitizen, + formatMessage(t.results.currencyPostfix), + ) as string) + } + description={formatMessage(t.results.citizenGainDescription, { + nameOfProcess: userInput.nameOfProcess, + })} + icon={<Icon icon="person" color="blue400" size="large" />} + /> + </GridColumn> + <GridColumn span={resultColumnSpan}> + <ResultCard + title={formatValueForPresentation( + activeLocale, + ringRoadTripsSaved, + )} + description={formatMessage(t.results.ringRoadTripsSaved)} + icon={<Icon icon="car" color="blue400" size="large" />} + /> + </GridColumn> + <GridColumn span={resultColumnSpan}> + <ResultCard + title={`${formatValueForPresentation( + activeLocale, + results.citizenTimeSaved, + )} ${formatMessage(t.results.days)}`} + description={formatMessage(t.results.savedCitizenDays)} + icon={<Icon icon="time" color="blue400" size="large" />} + /> + </GridColumn> + <GridColumn span={resultColumnSpan}> + <ResultCard + title={ + co2 >= 1e6 + ? `${formatValueForPresentation( + activeLocale, + co2, + )}${formatMessage(t.results.kgPostfix)}` + : (formatCurrency( + co2, + formatMessage(t.results.kgPostfix), + ) as string) + } + description={formatMessage(t.results.c02)} + icon={<Icon icon="leaf" color="blue400" size="large" />} + /> + </GridColumn> + </GridRow> + </Stack> + )} + </div> + </Stack> + ) +} diff --git a/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/translation.strings.ts b/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/translation.strings.ts new file mode 100644 index 000000000000..553e4111e9ff --- /dev/null +++ b/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/translation.strings.ts @@ -0,0 +1,167 @@ +import { defineMessages } from 'react-intl' + +export const t = { + nameOfProcess: defineMessages({ + heading: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:nameOfProcess.heading', + defaultMessage: 'Nafn ferils', + description: 'Heading á "nafn ferils" reit', + }, + label: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:nameOfProcess.label', + defaultMessage: 'Nafn ferils', + description: 'Label á "nafn ferils" reit', + }, + placeholder: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:nameOfProcess.placeholder', + defaultMessage: ' ', + description: 'Placeholder á "nafn ferils" reit', + }, + }), + amountPerYear: defineMessages({ + heading: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:amountPerYear.heading', + defaultMessage: 'Magn á ári', + description: 'Heading á "Fjöldi afgreiðslna á ári" reit', + }, + label: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:amountPerYear.label', + defaultMessage: 'Fjöldi afgreiðslna á ári', + description: 'Label á "magn á ári" reit', + }, + placeholder: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:amountPerYear.placeholder', + defaultMessage: ' ', + description: 'Placeholder á "magn á ári" reit', + }, + description: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:amountPerYear.description', + defaultMessage: 'Fjöldi afgreiðslna á ákveðinni þjónustu á einu ári', + description: 'Lýsing á "magn á ári" reit', + }, + }), + processDurationInMinutes: defineMessages({ + heading: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:processDurationInMinutes.heading', + defaultMessage: 'Lengd afgreiðslu í mínútum', + description: 'Heading á "Lengd afgreiðslu í mínútum" reit', + }, + label: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:processDurationInMinutes.label', + defaultMessage: 'Lengd afgreiðslu í mínútum', + description: 'Label á "Lengd afgreiðslu í mínútum" reit', + }, + placeholder: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:processDurationInMinutes.placeholder', + defaultMessage: ' ', + description: 'Placeholder á "Lengd afgreiðslu í mínútum"', + }, + description: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:processDurationInMinutes.description', + defaultMessage: + 'Áætluð lengd afgreiðslu. Biðtími þjónustuþega er ekki meðtalinn.', + description: 'Lýsing á "Lengd afgreiðslu í mínútum"', + }, + }), + visitCountToCompleteProcess: defineMessages({ + heading: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:visitCountToCompleteProcess.heading', + defaultMessage: 'Fjöldi heimsókna', + description: 'Heading á "Fjöldi heimsókna" reit', + }, + label: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:visitCountToCompleteProcess.label', + defaultMessage: 'Fjöldi heimsókna', + description: 'Label á "Fjöldi heimsókna" reit', + }, + placeholder: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:visitCountToCompleteProcess.placeholder', + defaultMessage: ' ', + description: 'Placeholder á "Fjöldi heimsókna" reit', + }, + description: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:visitCountToCompleteProcess.description', + defaultMessage: + 'Fjöldi heimsókna sem þarf til að ljúka afgreiðslu. Ef það þarf að mæta á staðinn til þess að sækja um og koma svo aftur til þess að sækja t.d. vottorð skal slá inn 2.', + description: 'Lýsing á "Fjöldi heimsókna" reit', + }, + }), + averageDistanceToProcessInKilometers: defineMessages({ + heading: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:averageDistanceToProcessInKilometers.heading', + defaultMessage: 'Lengd ferðar í kílómetrum', + description: 'Heading á "Lengd ferðar í kílómetrum" reit', + }, + label: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:averageDistanceToProcessInKilometers.label', + defaultMessage: 'Lengd ferðar í kílómetrum', + description: 'Label á "Lengd ferðar í kílómetrum" reit', + }, + placeholder: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:averageDistanceToProcessInKilometers.placeholder', + defaultMessage: ' ', + description: 'Placeholder á "Lengd ferðar í kílómetrum" reit', + }, + description: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:averageDistanceToProcessInKilometers.description', + defaultMessage: 'Áætluð meðalfjarlægð frá afgreiðslustöð.', + description: 'Lýsing á "Lengd ferðar í kílómetrum" reit', + }, + }), + results: defineMessages({ + calculate: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.calculate', + defaultMessage: 'Reikna', + description: 'Texti fyrir "Reikna" hnapp', + }, + institutionGainDescription: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.institutionGainDescription', + defaultMessage: 'árlegur fjárhagslegur ávinningur stofnunar', + description: 'Lýsing á "ávinning stofnana" niðurstöðu', + }, + staffFreeToDoOtherThings: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.staffFreeToDoOtherThings', + defaultMessage: 'ígildi stöðugildi sem nýtast í önnur verkefni', + description: + 'Lýsing á "hve margir starfsmenn geta gert annað" niðurstöðu', + }, + citizenGainDescription: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.citizenGainDescription', + defaultMessage: 'heildarábati Íslands, ríki og borgara', + description: 'Lýsing á "ávinningur borgara" niðurstöðu', + }, + ringRoadTripsSaved: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.ringRoadTripsSaved', + defaultMessage: 'keyrðar ferðir í kringum Ísland sem sparast', + description: + 'Lýsing á "keyrðar ferðir í kringum Ísland sem sparast" niðurstöðu', + }, + savedCitizenDays: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.savedCitizenDays', + defaultMessage: + 'sparaðir hjá fólki við að sækja sér nauðsynlega þjónustu', + description: + 'Lýsing á "sparaðir dagar hjá fólki við að sækja sér nauðsynlega þjónustu" niðurstöðu', + }, + c02: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.c02', + defaultMessage: 'minni losun Co2 vegna færri bílferða', + description: 'Lýsing á "minni losun Co2 vegna færri bílferða" niðurstöðu', + }, + days: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.days', + defaultMessage: 'dagar', + description: 'Dagar', + }, + currencyPostfix: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.currencyPostfix', + defaultMessage: ' kr.', + description: 'Viðskeyti eftir krónutölu', + }, + kgPostfix: { + id: 'web.digitalIceland.benefitsOfDigitalProcesses:results.kgPostfix', + defaultMessage: ' kg', + description: 'Viðskeyti eftir kílometratölu í niðurstöuspjöldum', + }, + }), +} diff --git a/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/utils.ts b/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/utils.ts new file mode 100644 index 000000000000..fa9c4772f35e --- /dev/null +++ b/apps/web/components/connected/BenefitsOfDigitalProcessesCalculator/utils.ts @@ -0,0 +1,124 @@ +import type { ConnectedComponent } from '@island.is/web/graphql/schema' + +export interface UserInput { + nameOfProcess: string + amountPerYear: number + processDurationInMinutes: number + visitCountToCompleteProcess: number + averageDistanceToProcessInKilometers: number +} + +export interface Results { + /* Ávinningur stofnunar */ + institutionGain: number + + /* Ávinningur borgara */ + citizenGain: number + + /* Ígildi stöðugildis */ + staffFreeToDoOtherThings: number + + /* Eknir kílómetrar */ + drivenKilometersSaved: number + + /* Sparaðir dagar hjá fólki við að sækja sér þjónustu */ + citizenTimeSaved: number +} + +const avinningurR = ( + laun: number, + f2f: number, + lengd: number, + magn: number, +) => { + return (laun / 60) * f2f * lengd * magn +} + +const avinningurB = ( + fornarkostnadur: number, + lengd: number, + f2f: number, + km: number, + kmgjald: number, + okuhradi: number, + magn: number, +) => { + return ( + (f2f * 2 * km * kmgjald + + (60 / okuhradi) * km * 2 * f2f * (fornarkostnadur / 60) + + ((f2f * lengd) / 60) * fornarkostnadur) * + magn + ) +} + +export const calculateResults = ( + slice: ConnectedComponent, + userInput: UserInput, +) => { + const preConditions = { + staffIncomePerHour: + slice.configJson?.['Laun starfsmanna í framþjónustu krónur á klst'] ?? + 6010, + citizenIncomeLossPerHour: + slice.configJson?.[ + 'Fórnarkostnaður borgarar (meðallaun í landi á klst)' + ] ?? 5122, + kilometerFeePerKilometer: slice.configJson?.['Km gjald pr km'] ?? 141, + averageDrivingSpeedInKilometersPerHour: + slice.configJson?.['Meðalökuhraði km/klst'] ?? 40, + staffHourAverageInYear: + slice.configJson?.['Klukkustundir í stöðugildi á ári'] ?? 1606, + ringRoadDistanceInKilometers: + slice.configJson?.['Hringvegurinn í km'] ?? 1321, + kgCo2PerDrivenKilometer: slice.configJson?.['Kg co2 á ekinn km'] ?? 0.1082, + } + + const results: Results = { + institutionGain: avinningurR( + preConditions.staffIncomePerHour, + userInput.visitCountToCompleteProcess, + userInput.processDurationInMinutes, + userInput.amountPerYear, + ), + citizenGain: avinningurB( + preConditions.citizenIncomeLossPerHour, + userInput.processDurationInMinutes, + userInput.visitCountToCompleteProcess, + userInput.averageDistanceToProcessInKilometers, + preConditions.kilometerFeePerKilometer, + preConditions.averageDrivingSpeedInKilometersPerHour, + userInput.amountPerYear, + ), + staffFreeToDoOtherThings: + (userInput.amountPerYear * + userInput.processDurationInMinutes * + userInput.visitCountToCompleteProcess) / + 60 / + preConditions.staffHourAverageInYear, + drivenKilometersSaved: + userInput.amountPerYear * + userInput.visitCountToCompleteProcess * + 2 * + userInput.averageDistanceToProcessInKilometers, + citizenTimeSaved: + (((userInput.visitCountToCompleteProcess * + 2 * + userInput.averageDistanceToProcessInKilometers * + 60) / + preConditions.averageDrivingSpeedInKilometersPerHour + + userInput.visitCountToCompleteProcess * + userInput.processDurationInMinutes) * + userInput.amountPerYear) / + 60 / + 24, + } + + const gainPerCitizen = results.citizenGain + results.institutionGain + const ringRoadTripsSaved = + results.drivenKilometersSaved / preConditions.ringRoadDistanceInKilometers + + const co2 = + preConditions.kgCo2PerDrivenKilometer * results.drivenKilometersSaved + + return { results, gainPerCitizen, ringRoadTripsSaved, co2 } +} diff --git a/apps/web/components/connected/DrivingInstructorList/DrivingInstructorList.tsx b/apps/web/components/connected/DrivingInstructorList/DrivingInstructorList.tsx index daafb38fcf8e..53853ed68285 100644 --- a/apps/web/components/connected/DrivingInstructorList/DrivingInstructorList.tsx +++ b/apps/web/components/connected/DrivingInstructorList/DrivingInstructorList.tsx @@ -1,4 +1,7 @@ +import { useState } from 'react' +import { useIntl } from 'react-intl' import { useQuery } from '@apollo/client' + import { AlertMessage, Box, @@ -13,9 +16,9 @@ import { GetDrivingInstructorsQuery, GetDrivingInstructorsQueryVariables, } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' import { GET_DRIVING_INSTRUCTORS_QUERY } from '@island.is/web/screens/queries/DrivingInstructors' -import { useState } from 'react' + +import { translation as translationStrings } from './translation.strings' const DEFAULT_ITEMS_PER_PAGE = 10 @@ -79,7 +82,7 @@ interface DrivingInstructorListProps { const DrivingInstructorList = ({ slice }: DrivingInstructorListProps) => { const [selectedPage, setSelectedPage] = useState(1) - const n = useNamespace(slice?.json ?? {}) + const { formatMessage } = useIntl() const [searchValue, setSearchValue] = useState('') const { data, error, loading, called } = useQuery< @@ -104,7 +107,7 @@ const DrivingInstructorList = ({ slice }: DrivingInstructorListProps) => { <Box marginBottom={4}> <Input name="driving-license-input" - placeholder={n('searchPlaceholder', 'Leita')} + placeholder={formatMessage(translationStrings.searchPlaceholder)} backgroundColor={['blue', 'blue', 'white']} size="sm" icon={{ @@ -122,15 +125,15 @@ const DrivingInstructorList = ({ slice }: DrivingInstructorListProps) => { {called && !loading && error && ( <AlertMessage type="error" - title={n('errorOccurredTitle', 'Villa kom upp')} - message={n('errorOccurredMessage', 'Ekki tókst að sækja ökukennara')} + title={formatMessage(translationStrings.errorOccurredTitle)} + message={formatMessage(translationStrings.errorOccurredMessage)} /> )} {called && !loading && !error && !filteredInstructors?.length && ( <Box display="flex" justifyContent="center"> <Text fontWeight="semiBold"> - {n('noResultsFound', 'Engir ökukennarar fundust')} + {formatMessage(translationStrings.noResultsFound)} </Text> </Box> )} @@ -146,16 +149,18 @@ const DrivingInstructorList = ({ slice }: DrivingInstructorListProps) => { <T.Table> <T.Head> <T.HeadData> - <Text fontWeight="semiBold">{n('name', 'Nafn')}</Text> + <Text fontWeight="semiBold"> + {formatMessage(translationStrings.name)} + </Text> </T.HeadData> <T.HeadData> <Text fontWeight="semiBold"> - {n('nationalId', 'Kennitala')} + {formatMessage(translationStrings.nationalId)} </Text> </T.HeadData> <T.HeadData> <Text fontWeight="semiBold"> - {n('driverLicenseId', 'Ökuréttindisnúmer')} + {formatMessage(translationStrings.driverLicenseId)} </Text> </T.HeadData> </T.Head> diff --git a/apps/web/components/connected/DrivingInstructorList/translation.strings.ts b/apps/web/components/connected/DrivingInstructorList/translation.strings.ts new file mode 100644 index 000000000000..48b5359ffd73 --- /dev/null +++ b/apps/web/components/connected/DrivingInstructorList/translation.strings.ts @@ -0,0 +1,39 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + searchPlaceholder: { + id: 'web.drivingInstructorList:searchPlaceholder', + defaultMessage: 'Leita', + description: 'Titill á placeholder í leitarglugga', + }, + errorOccurredTitle: { + id: 'web.drivingInstructorList:errorOccurredTitle', + defaultMessage: 'Villa kom upp', + description: 'Titill á villu skilaboðum', + }, + errorOccurredMessage: { + id: 'web.drivingInstructorList:errorOccurredMessage', + defaultMessage: 'Ekki tókst að sækja ökukennara', + description: 'Texti fyrir villu skilaboð', + }, + noResultsFound: { + id: 'web.drivingInstructorList:noResultsFound', + defaultMessage: 'Engir ökukennarar fundust', + description: 'Texti þegar engin námskeið finnast', + }, + name: { + id: 'web.drivingInstructorList:name', + defaultMessage: 'Nafn', + description: 'Texti fyrir nafn í töflu haus', + }, + nationalId: { + id: 'web.drivingInstructorList:nationalId', + defaultMessage: 'Kennitala', + description: 'Texti fyrir kennitölu í töflu haus', + }, + driverLicenseId: { + id: 'web.drivingInstructorList:driverLicenseId', + defaultMessage: 'Ökuréttindisnúmer', + description: 'Texti fyrir ökuréttindisnúmer í töflu haus', + }, +}) diff --git a/apps/web/components/connected/GrindavikResidentialPropertyPurchaseCalculator/GrindavikResidentialPropertyPurchaseCalculator.tsx b/apps/web/components/connected/GrindavikResidentialPropertyPurchaseCalculator/GrindavikResidentialPropertyPurchaseCalculator.tsx index f46110257a54..35295b5f4b9b 100644 --- a/apps/web/components/connected/GrindavikResidentialPropertyPurchaseCalculator/GrindavikResidentialPropertyPurchaseCalculator.tsx +++ b/apps/web/components/connected/GrindavikResidentialPropertyPurchaseCalculator/GrindavikResidentialPropertyPurchaseCalculator.tsx @@ -1,5 +1,6 @@ import { useRef, useState } from 'react' import { FormProvider, useFieldArray, useForm, useWatch } from 'react-hook-form' +import { useIntl } from 'react-intl' import isEqual from 'lodash/isEqual' import { @@ -12,10 +13,9 @@ import { } from '@island.is/island-ui/core' import { InputController } from '@island.is/shared/form-fields' import { ConnectedComponent } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' -import { useI18n } from '@island.is/web/i18n' import { formatCurrency } from '@island.is/web/utils/currency' +import { translation as translationStrings } from './translation.strings' import * as styles from './GrindavikResidentialPropertyPurchaseCalculator.css' interface ResultState { @@ -88,7 +88,7 @@ const focusLoanInput = (index: number, delay = 100) => { const GrindavikResidentialPropertyPurchaseCalculator = ({ slice, }: GrindavikResidentialPropertyPurchaseCalculatorProps) => { - const n = useNamespace(slice.json ?? {}) + const { formatMessage } = useIntl() const methods = useForm<InputState>({ defaultValues: { loans: [{ value: undefined }] }, }) @@ -96,7 +96,7 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ name: 'loans', control: methods.control, }) - const { activeLocale } = useI18n() + const resultContainerRef = useRef<HTMLDivElement>(null) const fireInsuranceValue = methods.watch('fireInsuranceValue') @@ -128,31 +128,18 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ setResultState(calculateResultState(inputState, thorkatlaPurchasePrice)) } - const mainHeading = n( - 'mainHeading', - 'Útreikningur vegna uppkaupa fasteigna í Grindavík', - ) - const currencySuffix = n('currencySuffix', ' krónur') as string + const mainHeading = formatMessage(translationStrings.mainHeading) + const currencySuffix = formatMessage(translationStrings.currencySuffix) const canCalculate = !isEqual(resultState?.inputState, inputState) const maxLength = (slice.configJson?.maxLength ?? 11) + currencySuffix.length - const thorkatlaPaymentDisclaimer = n( - 'thorkatlaPaymentDisclaimer', - 'Seljandi getur valið afhendingardagsetningu minnst 1 mánuði frá kaupsamningi og mest 3 mánuðum frá kaupsamningi. Afsal fer fram einum mánuði frá afhendingu.', - ) - const purchaseAgreementPaymentDisclaimer = n( - 'purchaseAgreementPaymentDisclaimer', - '*Greiðslur frá félaginu fara til eigenda í samræmi við eignarhlutfall.', - ) - const closingResultDisclaimer = n( - 'closingResultDisclaimer', - '**Í afsalsgreiðslu fer fram lögskilauppgjör sem kemur til hækkunar eða lækkunar á afsalsgreiðslu.', + const thorkatlaPaymentDisclaimer = formatMessage( + translationStrings.thorkatlaPaymentDisclaimer, ) - const loanDisclaimer = n( - 'loanDisclaimer', - 'Samtal er enn í gangi við lífeyrissjóði um þátttöku þeirra í úrræðinu. Vonast er til þess að niðurstaða liggi fyrir fljótlega', + const purchaseAgreementPaymentDisclaimer = formatMessage( + translationStrings.purchaseAgreementPaymentDisclaimer, ) return ( @@ -168,13 +155,17 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ {mainHeading && <Text variant="h3">{mainHeading}</Text>} <Stack space={3}> <Text variant="h4"> - {n('fireInsuranceValueHeading', 'Brunabótamat eignar')} + {formatMessage(translationStrings.fireInsuranceValueHeading)} </Text> <InputController id="fireInsuranceValue" name="fireInsuranceValue" - label={n('fireInsuranceValueLabel', 'Brunabótamat')} - placeholder={n('currencyInputPlaceholder', 'kr.')} + label={formatMessage( + translationStrings.fireInsuranceValueLabel, + )} + placeholder={formatMessage( + translationStrings.currencyInputPlaceholder, + )} currency={true} maxLength={maxLength} type="number" @@ -186,9 +177,8 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ <Stack space={2}> <Text> - {n( - 'thorkatlaPurchasePriceLabel', - 'Kaupverð Þórkötlu (95% af brunabótamati)', + {formatMessage( + translationStrings.thorkatlaPurchasePriceLabel, )} </Text> <Text variant="h4" color="blue400"> @@ -197,7 +187,9 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ </Stack> <Stack space={3}> - <Text variant="h4">{n('loanHeading', 'Áhvílandi lán')}</Text> + <Text variant="h4"> + {formatMessage(translationStrings.loanHeading)} + </Text> <Stack space={2}> {loansFieldArray.fields.map((field, index) => { const name = `loans[${index}].value` @@ -215,10 +207,14 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ key={field.id} id={name} name={name} - label={`${n('loanLabel', 'Lán')} ${index + 1}`} + label={`${formatMessage( + translationStrings.loanLabel, + )} ${index + 1}`} currency={true} maxLength={maxLength} - placeholder={n('currencyInputPlaceholder', 'kr.')} + placeholder={formatMessage( + translationStrings.currencyInputPlaceholder, + )} type="number" size="sm" inputMode="numeric" @@ -241,12 +237,7 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ }} > <VisuallyHidden> - {n( - 'removeLoan', - activeLocale === 'is' - ? 'Eyða láni' - : 'Remove loan', - )} + {formatMessage(translationStrings.removeLoan)} </VisuallyHidden> <Icon icon="removeCircle" @@ -273,14 +264,14 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ size="small" variant="utility" > - {n('appendLoan', 'Bæta við láni')} + {formatMessage(translationStrings.appendLoan)} </Button> </Box> </Stack> </Stack> <Button disabled={!canCalculate} type="submit"> - {n('calculate', 'Reikna')} + {formatMessage(translationStrings.calculate)} </Button> </Stack> </form> @@ -298,7 +289,9 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ > <Stack space={[5, 5, 8]}> <Stack space={3}> - <Text variant="h3">{n('resultsHeading', 'Niðurstöður')}</Text> + <Text variant="h3"> + {formatMessage(translationStrings.resultsHeading)} + </Text> <Stack space={5}> <Box columnGap={2} @@ -308,7 +301,7 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ flexDirection={['column', 'row']} > <Text variant="h4"> - {n('thorkatlaPaymentLabel', 'Greitt úr af Þórkötlu*')} + {formatMessage(translationStrings.thorkatlaPaymentLabel)} </Text> <Text variant="h4" color="blue400" whiteSpace="nowrap"> {formatCurrency( @@ -318,7 +311,9 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ </Text> </Box> <Stack space={1}> - <Text variant="eyebrow">{n('breakdown', 'Sundurliðun')}</Text> + <Text variant="eyebrow"> + {formatMessage(translationStrings.breakdown)} + </Text> <Stack space={2}> <Box columnGap={2} @@ -328,9 +323,8 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ flexDirection={['column', 'row']} > <Text> - {n( - 'purchaseAgreementPaymentLabel', - 'Greitt við kaupsamning', + {formatMessage( + translationStrings.purchaseAgreementPaymentLabel, )} </Text> <Text whiteSpace="nowrap"> @@ -348,10 +342,7 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ flexDirection={['column', 'row']} > <Text> - {n( - 'closingPaymentLabel', - 'Greitt við afsal (5% af kaupvirði)**', - )} + {formatMessage(translationStrings.closingPaymentLabel)} </Text> <Text whiteSpace="nowrap"> {formatCurrency( @@ -372,10 +363,6 @@ const GrindavikResidentialPropertyPurchaseCalculator = ({ {purchaseAgreementPaymentDisclaimer && ( <Text variant="small">{purchaseAgreementPaymentDisclaimer}</Text> )} - {closingResultDisclaimer && ( - <Text variant="small">{closingResultDisclaimer}</Text> - )} - {loanDisclaimer && <Text variant="small">{loanDisclaimer}</Text>} </Stack> </Stack> </Box> diff --git a/apps/web/components/connected/GrindavikResidentialPropertyPurchaseCalculator/translation.strings.ts b/apps/web/components/connected/GrindavikResidentialPropertyPurchaseCalculator/translation.strings.ts new file mode 100644 index 000000000000..531befd12211 --- /dev/null +++ b/apps/web/components/connected/GrindavikResidentialPropertyPurchaseCalculator/translation.strings.ts @@ -0,0 +1,96 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + mainHeading: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:mainHeading', + defaultMessage: 'Bráðabirgðaútreikningur', + description: 'Titill á útreikning vegna uppkaupa fasteigna í Grindavík', + }, + currencySuffix: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:currencySuffix', + defaultMessage: ' kr.', + description: 'Gjaldeyrisviðskeyti', + }, + thorkatlaPaymentDisclaimer: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:thorkatlaPaymentDisclaimer', + defaultMessage: + 'Seljandi getur valið afhendingardagsetningu á bilinu 1-3 mánuðum eftir kaupsamning. Afsal fer fram einum mánuði frá afhendingu.', + description: 'Texti fyrir greiðslufyrirvara skilaboð', + }, + purchaseAgreementPaymentDisclaimer: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:purchaseAgreementPaymentDisclaimer', + defaultMessage: + 'Samhliða afsalsgreiðslu fer fram lögskilauppgjör sem kemur til hækkunar eða lækkunar á afsalsgreiðslu.', + description: 'Texti fyrir greiðslufyrirvara kaupsamnings', + }, + fireInsuranceValueHeading: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:fireInsuranceValueHeading', + defaultMessage: 'Brunabótamat eignar', + description: 'Titill fyrir brunabótamat eignar', + }, + fireInsuranceValueLabel: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:fireInsuranceValueLabel', + defaultMessage: 'Brunabótamat', + description: 'Label fyrir brunabótamat input', + }, + currencyInputPlaceholder: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:currencyInputPlaceholder', + defaultMessage: 'kr.', + description: 'Gjaldmiðill sem birtist í input reitum', + }, + thorkatlaPurchasePriceLabel: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:thorkatlaPurchasePriceLabel', + defaultMessage: 'Kaupverð Þórkötlu (95% af brunabótamati)', + description: 'Label fyrir kaupverð Þórkötlu (95% af brunabótamati)', + }, + loanHeading: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:loanHeading', + defaultMessage: 'Áhvílandi lán', + description: 'Áhvílandi lán', + }, + loanLabel: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:loanLabel', + defaultMessage: 'Lán', + description: 'Label fyrir lán input', + }, + removeLoan: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:removeLoan', + defaultMessage: 'Eyða láni', + description: 'Eyða láni', + }, + appendLoan: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:appendLoan', + defaultMessage: 'Bæta við láni', + description: 'Bæta við láni', + }, + calculate: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:calculate', + defaultMessage: 'Reikna', + description: 'Reikna', + }, + resultsHeading: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:resultsHeading', + defaultMessage: 'Niðurstöður', + description: 'Niðurstöður', + }, + thorkatlaPaymentLabel: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:thorkatlaPaymentLabel', + defaultMessage: 'Greitt til seljenda', + description: 'Label fyrir greiðslu til seljanda', + }, + breakdown: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:breakdown', + defaultMessage: 'Sundurliðun', + description: 'Sundurliðun', + }, + purchaseAgreementPaymentLabel: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:purchaseAgreementPaymentLabel', + defaultMessage: 'Greitt við kaupsamning', + description: 'Label fyrir greitt við kaupsamning', + }, + closingPaymentLabel: { + id: 'web.GrindavikResidentialPropertyPurchaseCalculator:closingPaymentLabel', + defaultMessage: 'Greitt við afsal (5% af kaupvirði)', + description: 'Label fyrir greiðslu við afsal', + }, +}) diff --git a/apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator.tsx b/apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator/HousingBenefitCalculator.tsx similarity index 77% rename from apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator.tsx rename to apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator/HousingBenefitCalculator.tsx index cddd141b9ec0..2007328c511e 100644 --- a/apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator.tsx +++ b/apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator/HousingBenefitCalculator.tsx @@ -1,5 +1,6 @@ import { useMemo, useState } from 'react' import { Controller, useForm } from 'react-hook-form' +import { useIntl } from 'react-intl' import { useLazyQuery } from '@apollo/client' import { @@ -17,10 +18,11 @@ import { GetHousingBenefitCalculationQuery, GetHousingBenefitCalculationQueryVariables, } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' import { GET_HOUSING_BENEFIT_CALCULATION } from '@island.is/web/screens/queries/HousingBenefitCalculator' import { formatCurrency } from '@island.is/web/utils/currency' +import { translation as translationStrings } from './translation.strings' + const MAX_LENGTH = 15 interface InputState { @@ -35,7 +37,7 @@ interface HousingBenefitCalculatorProps { } const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { - const n = useNamespace(slice.json ?? {}) + const { formatMessage } = useIntl() const [inputState, setInputState] = useState<InputState>({ income: '', housingCost: '', @@ -116,9 +118,15 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { if (slice?.configJson?.showSixOptions) { options.push({ label: '4', value: 4 }) options.push({ label: '5', value: 5 }) - options.push({ label: n('sixOrMore', '6 eða fleiri'), value: 6 }) + options.push({ + label: formatMessage(translationStrings.sixOrMore), + value: 6, + }) } else { - options.push({ label: n('fourOrMore', '4 eða fleiri'), value: 4 }) + options.push({ + label: formatMessage(translationStrings.fourOrMore), + value: 4, + }) } return options @@ -135,7 +143,7 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { <Stack space={5}> <Box> <Text variant="medium" fontWeight="light" paddingBottom={2}> - {n('numberOfHouseholdMembers', 'Fjöldi heimilismanna í húsnæði?')} + {formatMessage(translationStrings.numberOfHouseholdMembers)} </Text> <Controller @@ -162,9 +170,8 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { </Box> <Box> <Text variant="medium" fontWeight="light" paddingBottom={2}> - {n( - 'monthlyIncomeOfHouseholdMembers18YearsAndOlder', - 'Samanlagðar mánaðarlegartekjur heimilismanna 18 ára og eldri (tekjur f. skatt)?', + {formatMessage( + translationStrings.monthlyIncomeOfHouseholdMembers18YearsAndOlder, )} </Text> @@ -172,8 +179,8 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { id="income" control={control} name="income" - label={n('incomeLabel', 'Tekjur')} - placeholder={n('incomePlaceholder', 'kr.')} + label={formatMessage(translationStrings.incomeLabel)} + placeholder={formatMessage(translationStrings.incomePlaceholder)} currency={true} type="number" onChange={(event) => { @@ -186,9 +193,8 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { </Box> <Box> <Text variant="medium" fontWeight="light" paddingBottom={2}> - {n( - 'assetsOfHouseholdMembers18YearsAndOlder', - 'Eignir heimilismanna 18 ára og eldri?', + {formatMessage( + translationStrings.assetsOfHouseholdMembers18YearsAndOlder, )} </Text> @@ -196,8 +202,8 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { id="assets" control={control} name="assets" - label={n('assetsLabel', 'Eignir')} - placeholder={n('assetsPlaceholder', 'kr.')} + label={formatMessage(translationStrings.assetsLabel)} + placeholder={formatMessage(translationStrings.assetsPlaceholder)} currency={true} type="number" onChange={(event) => { @@ -210,14 +216,16 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { </Box> <Box> <Text variant="medium" fontWeight="light" paddingBottom={2}> - {n('housingCostsPerMonth', 'Húsnæðiskostnaður á mánuði?')} + {formatMessage(translationStrings.housingCostsPerMonth)} </Text> <InputController id="housingCost" control={control} name="housingCost" - label={n('housingCostLabel', 'Húsnæðiskostnaður')} - placeholder={n('housingCostPlaceholder', 'kr.')} + label={formatMessage(translationStrings.housingCostLabel)} + placeholder={formatMessage( + translationStrings.housingCostPlaceholder, + )} currency={true} type="number" onChange={(event) => { @@ -229,13 +237,10 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { /> </Box> <Text variant="small" lineHeight="lg"> - {n( - 'calculatorDisclaimer', - 'Útreikningur húsnæðisbóta samkvæmt reiknivélinni byggir á þeim forsendum sem þú gafst upp og telst ekki bindandi ákvörðun um húsnæðisbætur. Útreikningur miðast við greiðslur húsnæðisbóta fyrir heilt almanaksár.', - )} + {formatMessage(translationStrings.calculatorDisclaimer)} </Text> <Button loading={loading} onClick={calculate} disabled={!canSubmit}> - {n('calculate', 'Reikna')} + {formatMessage(translationStrings.calculate)} </Button> </Stack> </Box> @@ -246,7 +251,7 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { paddingX={[3, 3, 3, 3, 12]} > <Text variant="h3"> - <strong>{n('results', 'Niðurstöður')}</strong> + <strong>{formatMessage(translationStrings.results)}</strong> </Text> <Stack space={5}> <Box> @@ -257,12 +262,9 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { paddingBottom={2} paddingTop={5} > - {n( - 'maximumHousingBenefits', - 'Hámarksbætur miðað við fjölda heimilismanna eru', - )}{' '} + {formatMessage(translationStrings.maximumHousingBenefits)}{' '} {formatCurrency(maximumHousingBenefits)}{' '} - {n('perMonth', 'á mánuði.')} + {formatMessage(translationStrings.perMonth)} </Text> )} @@ -270,30 +272,29 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { {typeof reductionsDueToIncome === 'number' && reductionsDueToIncome > 0 && ( <Text variant="medium" fontWeight="light"> - {n('reductionDueToIncome', 'Skerðing vegna tekna eru')}{' '} + {formatMessage(translationStrings.reductionDueToIncome)}{' '} {formatCurrency(reductionsDueToIncome)}{' '} - {n('perMonth', 'á mánuði.')} + {formatMessage(translationStrings.perMonth)} </Text> )} {typeof reductionsDueToAssets === 'number' && reductionsDueToAssets > 0 && ( <Text variant="medium" fontWeight="light"> - {n('reductionDueToAssets', 'Skerðing vegna eigna eru')}{' '} + {formatMessage(translationStrings.reductionDueToAssets)}{' '} {formatCurrency(reductionsDueToAssets)}{' '} - {n('perMonth', 'á mánuði.')} + {formatMessage(translationStrings.perMonth)} </Text> )} {typeof reductionsDueToHousingCosts === 'number' && reductionsDueToHousingCosts > 0 && ( <Text variant="medium" fontWeight="light"> - {n( - 'reductionsDueToHousingCosts', - 'Skerðing vegna húsnæðiskostnaðar eru', + {formatMessage( + translationStrings.reductionsDueToHousingCosts, )}{' '} {formatCurrency(reductionsDueToHousingCosts)}{' '} - {n('perMonth', 'á mánuði.')} + {formatMessage(translationStrings.perMonth)} </Text> )} </Stack> @@ -301,9 +302,9 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { {typeof estimatedHousingBenefits === 'number' && ( <Text variant="medium" fontWeight="light"> - {n('estimatedHousingBenefits', 'Áætlaðar húsnæðisbætur eru')}{' '} + {formatMessage(translationStrings.estimatedHousingBenefits)}{' '} <strong>{formatCurrency(estimatedHousingBenefits)}</strong>{' '} - {n('perMonth', 'á mánuði.')} + {formatMessage(translationStrings.perMonth)} </Text> )} </Stack> @@ -312,8 +313,8 @@ const HousingBenefitCalculator = ({ slice }: HousingBenefitCalculatorProps) => { {!loading && called && error && ( <AlertMessage type="error" - title={n('errorOccurredTitle', 'Villa kom upp')} - message={n('errorOccurredMessage', 'Ekki tókst að sækja niðurstöður')} + title={formatMessage(translationStrings.errorOccurredTitle)} + message={formatMessage(translationStrings.errorOccurredMessage)} /> )} </Box> diff --git a/apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator/translation.strings.ts b/apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator/translation.strings.ts new file mode 100644 index 000000000000..683b32a080a5 --- /dev/null +++ b/apps/web/components/connected/HousingBenefitCalculator/HousingBenefitCalculator/translation.strings.ts @@ -0,0 +1,122 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + sixOrMore: { + id: 'web.HousingBenefitCalculator:sixOrMore', + defaultMessage: '6 eða fleiri', + description: 'Label fyrir 6 eða fleiri', + }, + fourOrMore: { + id: 'web.HousingBenefitCalculator:fourOrMore', + defaultMessage: '4 eða fleiri', + description: 'Label fyrir 4 eða fleiri', + }, + numberOfHouseholdMembers: { + id: 'web.HousingBenefitCalculator:numberOfHouseholdMembers', + defaultMessage: 'Fjöldi heimilismanna í húsnæði?', + description: 'Fjöldi heimilismanna í húsnæði', + }, + monthlyIncomeOfHouseholdMembers18YearsAndOlder: { + id: 'web.HousingBenefitCalculator:monthlyIncomeOfHouseholdMembers18YearsAndOlder', + defaultMessage: + 'Samanlagðar mánaðarlegartekjur heimilismanna 18 ára og eldri (tekjur f. skatt)?', + description: + 'Samanlagðar mánaðarlegartekjur heimilismanna 18 ára og eldri (tekjur f. skatt)', + }, + incomeLabel: { + id: 'web.HousingBenefitCalculator:incomeLabel', + defaultMessage: 'Tekjur', + description: 'Label fyrir tekjur input reit', + }, + incomePlaceholder: { + id: 'web.HousingBenefitCalculator:incomePlaceholder', + defaultMessage: 'kr.', + description: 'Placeholder fyrir tekjur input reit', + }, + assetsOfHouseholdMembers18YearsAndOlder: { + id: 'web.HousingBenefitCalculator:assetsOfHouseholdMembers18YearsAndOlder', + defaultMessage: 'Eignir heimilismanna 18 ára og eldri?', + description: 'Eignir heimilismanna 18 ára og eldri', + }, + assetsLabel: { + id: 'web.HousingBenefitCalculator:assetsLabel', + defaultMessage: 'Eignir', + description: 'Label fyrir eignir input reit', + }, + assetsPlaceholder: { + id: 'web.HousingBenefitCalculator:assetsPlaceholder', + defaultMessage: 'kr.', + description: 'Placeholder fyrir eignir input reit', + }, + housingCostsPerMonth: { + id: 'web.HousingBenefitCalculator:housingCostsPerMonth', + defaultMessage: 'Húsnæðiskostnaður á mánuði?', + description: 'Húsnæðiskostnaður á mánuði', + }, + housingCostLabel: { + id: 'web.HousingBenefitCalculator:housingCostLabel', + defaultMessage: 'Húsnæðiskostnaður', + description: 'Label fyrir húsnæðiskostnaður', + }, + housingCostPlaceholder: { + id: 'web.HousingBenefitCalculator:housingCostPlaceholder', + defaultMessage: 'kr.', + description: 'Placeholder fyrir húsnæðiskostnaðar input reit', + }, + calculatorDisclaimer: { + id: 'web.HousingBenefitCalculator:calculatorDisclaimer', + defaultMessage: + 'Útreikningur húsnæðisbóta samkvæmt reiknivélinni byggir á þeim forsendum sem þú gafst upp og telst ekki bindandi ákvörðun um húsnæðisbætur. Útreikningur miðast við greiðslur húsnæðisbóta fyrir heilt almanaksár.', + description: 'Reiknivéla fyrirvari', + }, + calculate: { + id: 'web.HousingBenefitCalculator:calculate', + defaultMessage: 'Reikna', + description: 'Texti á takka til að reikna', + }, + results: { + id: 'web.HousingBenefitCalculator:results', + defaultMessage: 'Niðurstöður', + description: 'Titill á niðurstöðum', + }, + maximumHousingBenefits: { + id: 'web.HousingBenefitCalculator:maximumHousingBenefits', + defaultMessage: 'Hámarksbætur miðað við fjölda heimilismanna eru', + description: 'Hámarksbætur miðað við fjölda heimilismanna eru', + }, + perMonth: { + id: 'web.HousingBenefitCalculator:perMonth', + defaultMessage: 'á mánuði.', + description: 'á mánuði', + }, + reductionDueToIncome: { + id: 'web.HousingBenefitCalculator:reductionDueToIncome', + defaultMessage: 'Skerðing vegna tekna eru', + description: 'Skerðing vegna tekna eru', + }, + reductionDueToAssets: { + id: 'web.HousingBenefitCalculator:reductionDueToAssets', + defaultMessage: 'Skerðing vegna eigna eru', + description: 'Skerðing vegna eigna eru', + }, + reductionsDueToHousingCosts: { + id: 'web.HousingBenefitCalculator:reductionsDueToHousingCosts', + defaultMessage: 'Skerðing vegna húsnæðiskostnaðar eru', + description: 'Skerðing vegna húsnæðiskostnaðar eru', + }, + estimatedHousingBenefits: { + id: 'web.HousingBenefitCalculator:estimatedHousingBenefits', + defaultMessage: 'Áætlaðar húsnæðisbætur eru', + description: 'Áætlaðar húsnæðisbætur eru', + }, + errorOccurredTitle: { + id: 'web.HousingBenefitCalculator:errorOccurredTitle', + defaultMessage: 'Villa kom upp', + description: 'Titill þegar villa kemur upp', + }, + errorOccurredMessage: { + id: 'web.HousingBenefitCalculator:errorOccurredMessage', + defaultMessage: 'Ekki tókst að sækja niðurstöður', + description: 'Skilaboð þegar villa kemur upp', + }, +}) diff --git a/apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator.tsx b/apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator/SpecificHousingBenefitSupportCalculator.tsx similarity index 78% rename from apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator.tsx rename to apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator/SpecificHousingBenefitSupportCalculator.tsx index 734a07a10e5a..6059770a3512 100644 --- a/apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator.tsx +++ b/apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator/SpecificHousingBenefitSupportCalculator.tsx @@ -1,5 +1,6 @@ import { useMemo, useState } from 'react' import { Controller, useForm } from 'react-hook-form' +import { useIntl } from 'react-intl' import { useLazyQuery } from '@apollo/client' import { @@ -21,6 +22,8 @@ import { useNamespace } from '@island.is/web/hooks' import { GET_SPECIFIC_HOUSING_BENEFIT_SUPPORT_CALCULATION } from '@island.is/web/screens/queries/HousingBenefitCalculator' import { formatCurrency } from '@island.is/web/utils/currency' +import { translation as translationStrings } from './translation.strings' + const MAX_LENGTH = 15 interface InputState { @@ -28,14 +31,8 @@ interface InputState { householdMemberCount: number } -interface SpecificHousingBenefitSupportCalculatorProps { - slice: ConnectedComponent -} - -const SpecificHousingBenefitSupportCalculator = ({ - slice, -}: SpecificHousingBenefitSupportCalculatorProps) => { - const n = useNamespace(slice.json ?? {}) +const SpecificHousingBenefitSupportCalculator = () => { + const { formatMessage } = useIntl() const [inputState, setInputState] = useState<InputState>({ housingCost: '', householdMemberCount: 1, @@ -103,7 +100,7 @@ const SpecificHousingBenefitSupportCalculator = ({ { label: '3', value: 3 }, { label: '4', value: 4 }, { label: '5', value: 5 }, - { label: n('sixOrMore', '6 eða fleiri'), value: 6 }, + { label: formatMessage(translationStrings.sixOrMore), value: 6 }, ] }, []) @@ -118,7 +115,7 @@ const SpecificHousingBenefitSupportCalculator = ({ <Stack space={5}> <Box> <Text variant="medium" fontWeight="light" paddingBottom={2}> - {n('numberOfHouseholdMembers', 'Fjöldi heimilismanna í húsnæði?')} + {formatMessage(translationStrings.numberOfHouseholdMembers)} </Text> <Controller @@ -145,15 +142,17 @@ const SpecificHousingBenefitSupportCalculator = ({ </Box> <Box> <Text variant="medium" fontWeight="light" paddingBottom={2}> - {n('housingCostsPerMonth', 'Húsnæðiskostnaður á mánuði?')} + {formatMessage(translationStrings.housingCostsPerMonth)} </Text> <InputController id="housingCost" control={control} name="housingCost" - label={n('housingCostLabel', 'Húsnæðiskostnaður')} - placeholder={n('housingCostPlaceholder', 'kr.')} + label={formatMessage(translationStrings.housingCostLabel)} + placeholder={formatMessage( + translationStrings.housingCostPlaceholder, + )} currency={true} type="number" onChange={(event) => { @@ -165,13 +164,10 @@ const SpecificHousingBenefitSupportCalculator = ({ /> </Box> <Text variant="small" lineHeight="lg"> - {n( - 'calculatorDisclaimer', - 'Útreikningur húsnæðisbóta samkvæmt reiknivélinni byggir á þeim forsendum sem þú gafst upp og telst ekki bindandi ákvörðun um húsnæðisbætur. Útreikningur miðast við greiðslur húsnæðisbóta fyrir heilt almanaksár.', - )} + {formatMessage(translationStrings.calculatorDisclaimer)} </Text> <Button loading={loading} onClick={calculate} disabled={!canSubmit}> - {n('calculate', 'Reikna')} + {formatMessage(translationStrings.calculate)} </Button> </Stack> </Box> @@ -182,7 +178,7 @@ const SpecificHousingBenefitSupportCalculator = ({ paddingX={[3, 3, 3, 3, 12]} > <Text variant="h3"> - <strong>{n('results', 'Niðurstöður')}</strong> + <strong>{formatMessage(translationStrings.results)}</strong> </Text> <Stack space={5}> <Box> @@ -193,12 +189,9 @@ const SpecificHousingBenefitSupportCalculator = ({ paddingBottom={2} paddingTop={5} > - {n( - 'maximumHousingBenefits', - 'Hámarksbætur miðað við fjölda heimilismanna eru', - )}{' '} + {formatMessage(translationStrings.maximumHousingBenefits)}{' '} {formatCurrency(maximumHousingBenefits)}{' '} - {n('perMonth', 'á mánuði.')} + {formatMessage(translationStrings.perMonth)} </Text> )} @@ -206,12 +199,11 @@ const SpecificHousingBenefitSupportCalculator = ({ {typeof reductionsDueToHousingCosts === 'number' && reductionsDueToHousingCosts > 0 && ( <Text variant="medium" fontWeight="light"> - {n( - 'reductionsDueToHousingCosts', - 'Skerðing vegna húsnæðiskostnaðar eru', + {formatMessage( + translationStrings.reductionsDueToHousingCosts, )}{' '} {formatCurrency(reductionsDueToHousingCosts)}{' '} - {n('perMonth', 'á mánuði.')} + {formatMessage(translationStrings.perMonth)} </Text> )} </Stack> @@ -219,9 +211,9 @@ const SpecificHousingBenefitSupportCalculator = ({ {typeof estimatedHousingBenefits === 'number' && ( <Text variant="medium" fontWeight="light"> - {n('estimatedHousingBenefits', 'Áætlaðar húsnæðisbætur eru')}{' '} + {formatMessage(translationStrings.estimatedHousingBenefits)}{' '} <strong>{formatCurrency(estimatedHousingBenefits)}</strong>{' '} - {n('perMonth', 'á mánuði.')} + {formatMessage(translationStrings.perMonth)} </Text> )} </Stack> @@ -230,8 +222,8 @@ const SpecificHousingBenefitSupportCalculator = ({ {!loading && called && error && ( <AlertMessage type="error" - title={n('errorOccurredTitle', 'Villa kom upp')} - message={n('errorOccurredMessage', 'Ekki tókst að sækja niðurstöður')} + title={formatMessage(translationStrings.errorOccurredTitle)} + message={formatMessage(translationStrings.errorOccurredMessage)} /> )} </Box> diff --git a/apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator/translation.strings.ts b/apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator/translation.strings.ts new file mode 100644 index 000000000000..51436a7251c5 --- /dev/null +++ b/apps/web/components/connected/HousingBenefitCalculator/SpecificHousingBenefitSupportCalculator/translation.strings.ts @@ -0,0 +1,75 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + sixOrMore: { + id: 'web.SpecificHousingBenefitSupportCalculator:sixOrMore', + defaultMessage: '6 eða fleiri', + description: 'Label fyrir 6 eða fleiri', + }, + numberOfHouseholdMembers: { + id: 'web.SpecificHousingBenefitSupportCalculator:numberOfHouseholdMembers', + defaultMessage: 'Fjöldi heimilismanna í húsnæði?', + description: 'Fjöldi heimilismanna í húsnæði', + }, + housingCostsPerMonth: { + id: 'web.SpecificHousingBenefitSupportCalculator:housingCostsPerMonth', + defaultMessage: 'Húsnæðiskostnaður á mánuði?', + description: 'Húsnæðiskostnaður á mánuði', + }, + housingCostLabel: { + id: 'web.SpecificHousingBenefitSupportCalculator:housingCostLabel', + defaultMessage: 'Húsnæðiskostnaður', + description: 'Label fyrir húsnæðiskostnaður input reit', + }, + housingCostPlaceholder: { + id: 'web.SpecificHousingBenefitSupportCalculator:housingCostPlaceholder', + defaultMessage: 'kr.', + description: 'Placeholder fyrir húsnæðiskostnaður input reit', + }, + calculatorDisclaimer: { + id: 'web.SpecificHousingBenefitSupportCalculator:calculatorDisclaimer', + defaultMessage: + 'Útreikningur húsnæðisbóta samkvæmt reiknivélinni byggir á þeim forsendum sem þú gafst upp og telst ekki bindandi ákvörðun um húsnæðisbætur. Útreikningur miðast við greiðslur húsnæðisbóta fyrir heilt almanaksár.', + description: 'Reiknivéla fyrirvari', + }, + calculate: { + id: 'web.SpecificHousingBenefitSupportCalculator:calculate', + defaultMessage: 'Reikna', + description: 'Texti á takka til að reikna', + }, + results: { + id: 'web.SpecificHousingBenefitSupportCalculator:results', + defaultMessage: 'Niðurstöður', + description: 'Titill á niðurstöðum', + }, + maximumHousingBenefits: { + id: 'web.SpecificHousingBenefitSupportCalculator:maximumHousingBenefits', + defaultMessage: 'Hámarksbætur miðað við fjölda heimilismanna eru', + description: 'Hámarksbætur miðað við fjölda heimilismanna eru', + }, + perMonth: { + id: 'web.SpecificHousingBenefitSupportCalculator:perMonth', + defaultMessage: 'á mánuði.', + description: 'á mánuði', + }, + reductionsDueToHousingCosts: { + id: 'web.SpecificHousingBenefitSupportCalculator:reductionsDueToHousingCosts', + defaultMessage: 'Skerðing vegna húsnæðiskostnaðar eru', + description: 'Skerðing vegna húsnæðiskostnaðar eru', + }, + estimatedHousingBenefits: { + id: 'web.SpecificHousingBenefitSupportCalculator:estimatedHousingBenefits', + defaultMessage: 'Áætlaðar húsnæðisbætur eru', + description: 'Áætlaðar húsnæðisbætur eru', + }, + errorOccurredTitle: { + id: 'web.SpecificHousingBenefitSupportCalculator:errorOccurredTitle', + defaultMessage: 'Villa kom upp', + description: 'Titill þegar villa kemur upp', + }, + errorOccurredMessage: { + id: 'web.SpecificHousingBenefitSupportCalculator:errorOccurredMessage', + defaultMessage: 'Ekki tókst að sækja niðurstöður', + description: 'Skilaboð þegar villa kemur upp', + }, +}) diff --git a/apps/web/components/connected/HousingBenefitCalculator/index.ts b/apps/web/components/connected/HousingBenefitCalculator/index.ts index ba754fa25196..8cd4530e31cc 100644 --- a/apps/web/components/connected/HousingBenefitCalculator/index.ts +++ b/apps/web/components/connected/HousingBenefitCalculator/index.ts @@ -1,14 +1,17 @@ import dynamic from 'next/dynamic' export const HousingBenefitCalculator = dynamic( - () => import('./HousingBenefitCalculator'), + () => import('./HousingBenefitCalculator/HousingBenefitCalculator'), { ssr: false, }, ) export const SpecificHousingBenefitSupportCalculator = dynamic( - () => import('./SpecificHousingBenefitSupportCalculator'), + () => + import( + './SpecificHousingBenefitSupportCalculator/SpecificHousingBenefitSupportCalculator' + ), { ssr: true, }, diff --git a/libs/application/templates/financial-aid/src/fields/Status/Status.css.ts b/apps/web/components/connected/ParentalLeaveCalculator/ParentalLeaveCalculator.css.ts similarity index 54% rename from libs/application/templates/financial-aid/src/fields/Status/Status.css.ts rename to apps/web/components/connected/ParentalLeaveCalculator/ParentalLeaveCalculator.css.ts index a839766a3e8b..e7006fe6fb85 100644 --- a/libs/application/templates/financial-aid/src/fields/Status/Status.css.ts +++ b/apps/web/components/connected/ParentalLeaveCalculator/ParentalLeaveCalculator.css.ts @@ -1,6 +1,7 @@ import { style } from '@vanilla-extract/css' + import { theme } from '@island.is/island-ui/theme' -export const container = style({ - marginTop: -theme.spacing[4], +export const resultBorder = style({ + border: `1px dashed ${theme.color.blue300}`, }) diff --git a/apps/web/components/connected/ParentalLeaveCalculator/ParentalLeaveCalculator.tsx b/apps/web/components/connected/ParentalLeaveCalculator/ParentalLeaveCalculator.tsx new file mode 100644 index 000000000000..6d0fca31a252 --- /dev/null +++ b/apps/web/components/connected/ParentalLeaveCalculator/ParentalLeaveCalculator.tsx @@ -0,0 +1,958 @@ +import { type PropsWithChildren, useMemo, useRef, useState } from 'react' +import { useIntl } from 'react-intl' +import NumberFormat from 'react-number-format' +import { + parseAsInteger, + parseAsString, + parseAsStringEnum, + useQueryState, +} from 'next-usequerystate' +import { z } from 'zod' + +import { + AlertMessage, + Box, + Button, + GridColumn, + GridRow, + Inline, + Input, + type Option, + RadioButton, + Select, + Stack, + Table, + Text, + Tooltip, +} from '@island.is/island-ui/core' +import { sortAlpha } from '@island.is/shared/utils' +import type { ConnectedComponent } from '@island.is/web/graphql/schema' +import { formatCurrency as formatCurrencyUtil } from '@island.is/web/utils/currency' + +import { MarkdownText } from '../../Organization' +import { translations as t } from './translations.strings' +import { Calculator, Status, Union, WorkPercentage } from './utils' +import * as styles from './ParentalLeaveCalculator.css' + +interface FieldProps { + heading: string + headingTooltip?: string + description?: string + tooltip?: string +} + +const Field = ({ + heading, + headingTooltip, + description, + tooltip, + children, +}: PropsWithChildren<FieldProps>) => { + return ( + <Stack space={2}> + <Inline flexWrap="nowrap" space={1} alignY="center"> + <Text variant="h3">{heading}</Text> + {headingTooltip && <Tooltip text={headingTooltip} />} + </Inline> + {description && ( + <Text variant="medium"> + {description} + {tooltip && <Tooltip text={tooltip} />} + </Text> + )} + {children} + </Stack> + ) +} + +enum ParentalLeavePeriod { + MONTH = 'month', + THREE_WEEKS = 'threeWeeks', + TWO_WEEKS = 'twoWeeks', +} + +enum Screen { + FORM = 'form', + RESULTS = 'results', +} + +enum LegalDomicileInIceland { + YES = 'y', + NO = 'n', +} + +interface ParentalLeaveCalculatorProps { + slice: ConnectedComponent +} + +interface ScreenProps extends ParentalLeaveCalculatorProps { + changeScreen: () => void +} + +const FormScreen = ({ slice, changeScreen }: ScreenProps) => { + const { formatMessage } = useIntl() + + const statusOptions = useMemo<Option<Status>[]>(() => { + return [ + { + label: formatMessage(t.status.parentalLeaveOption), + value: Status.PARENTAL_LEAVE, + }, + { + label: formatMessage(t.status.studentOption), + value: Status.STUDENT, + }, + { + label: formatMessage(t.status.outsideWorkforceOption), + value: Status.OUTSIDE_WORKFORCE, + }, + ] + }, [formatMessage]) + + const yearOptions = useMemo<Option<number>[]>(() => { + const keys = Object.keys(slice.configJson?.yearConfig || {}).map(Number) + keys.sort().reverse() + return keys.map((key) => ({ + label: String(key), + value: key, + })) + }, [slice.configJson?.yearConfig]) + + const additionalPensionFundingOptions = useMemo< + Option<number | null>[] + >(() => { + const options: number[] = slice.configJson + ?.additionalPensionFundingOptions ?? [1, 2, 3, 4] + + return [ + { value: null, label: formatMessage(t.additionalPensionFunding.none) }, + ...options.map((option) => ({ + label: `${option} ${formatMessage( + t.additionalPensionFunding.optionSuffix, + )}`, + value: option, + })), + ] + }, [formatMessage, slice.configJson?.additionalPensionFundingOptions]) + + const unionOptions = useMemo<Option<string | null>[]>(() => { + const options: Union[] = slice.configJson?.unionOptions + ? [...slice.configJson.unionOptions] + : [] + + options.sort(sortAlpha('label')) + + return [ + { + value: null, + label: formatMessage(t.union.none), + }, + ...options.map((option) => ({ + label: option.label, + value: option.label, + })), + ] + }, [formatMessage, slice.configJson?.unionOptions]) + + const parentalLeavePeriodOptions = useMemo<Option<string>[]>(() => { + return [ + { + label: formatMessage(t.parentalLeavePeriod.monthOption), + value: ParentalLeavePeriod.MONTH, + }, + { + label: formatMessage(t.parentalLeavePeriod.threeWeeksOption), + value: ParentalLeavePeriod.THREE_WEEKS, + }, + { + label: formatMessage(t.parentalLeavePeriod.twoWeeksOption), + value: ParentalLeavePeriod.TWO_WEEKS, + }, + ] + }, [formatMessage]) + + const [status, setStatus] = useQueryState<Status>( + 'status', + parseAsStringEnum(Object.values(Status)).withDefault(Status.PARENTAL_LEAVE), + ) + const [birthyear, setBirthyear] = useQueryState('birthyear', parseAsInteger) + const [workPercentage, setWorkPercentage] = useQueryState( + 'workPercentage', + parseAsStringEnum(Object.values(WorkPercentage)), + ) + const [income, setIncome] = useQueryState('income', parseAsInteger) + const [ + additionalPensionFundingPercentage, + setAdditionalPensionFundingPercentage, + ] = useQueryState('additionalPensionFunding', parseAsInteger) + const [union, setUnion] = useQueryState('union', parseAsString) + const [personalDiscount, setPersonalDiscount] = useQueryState( + 'personalDiscount', + parseAsInteger.withDefault(100), + ) + const [parentalLeavePeriod, setParentalLeavePeriod] = useQueryState( + 'parentalLeavePeriod', + parseAsStringEnum(Object.values(ParentalLeavePeriod)), + ) + const [parentalLeaveRatio, setParentalLeaveRatio] = useQueryState( + 'parentalLeaveRatio', + parseAsInteger.withDefault(100), + ) + const [legalDomicileInIceland, setLegalDomicileInIceland] = useQueryState( + 'legalDomicileInIceland', + parseAsStringEnum(Object.values(LegalDomicileInIceland)), + ) + + const canCalculate = () => { + let value = + Object.values(Status).includes(status) && + yearOptions.some((year) => year.value === birthyear) + + if (status === Status.OUTSIDE_WORKFORCE) { + value = value && legalDomicileInIceland === LegalDomicileInIceland.YES + } + + if (status === Status.PARENTAL_LEAVE) { + value = + value && + typeof income === 'number' && + income > 0 && + !!workPercentage && + Object.values(WorkPercentage).includes(workPercentage) && + parentalLeavePeriodOptions.some( + (option) => option.value === parentalLeavePeriod, + ) + } + + return value + } + + return ( + <Box background="blue100" paddingY={[3, 3, 5]} paddingX={[3, 3, 3, 3, 12]}> + <Stack space={5}> + <Field heading={formatMessage(t.status.heading)}> + <Select + onChange={(option) => { + setStatus((option?.value as Status) ?? null) + }} + value={statusOptions.find((option) => option.value === status)} + label={formatMessage(t.status.label)} + options={statusOptions} + /> + </Field> + + {status === Status.OUTSIDE_WORKFORCE && ( + <Field + heading={formatMessage(t.legalDomicile.heading)} + headingTooltip={formatMessage(t.legalDomicile.tooltip)} + > + <GridRow rowGap={1}> + <GridColumn span={['1/1', '1/2']}> + <RadioButton + hasError={ + legalDomicileInIceland === LegalDomicileInIceland.NO + } + id={LegalDomicileInIceland.YES} + onChange={() => { + setLegalDomicileInIceland(LegalDomicileInIceland.YES) + }} + checked={ + legalDomicileInIceland === LegalDomicileInIceland.YES + } + value={LegalDomicileInIceland.YES} + backgroundColor="white" + large={true} + label={formatMessage(t.legalDomicile.yes)} + /> + </GridColumn> + <GridColumn span={['1/1', '1/2']}> + <RadioButton + hasError={ + legalDomicileInIceland === LegalDomicileInIceland.NO + } + id={LegalDomicileInIceland.NO} + onChange={() => { + setLegalDomicileInIceland(LegalDomicileInIceland.NO) + }} + checked={legalDomicileInIceland === LegalDomicileInIceland.NO} + value={LegalDomicileInIceland.NO} + backgroundColor="white" + large={true} + label={formatMessage(t.legalDomicile.no)} + /> + </GridColumn> + </GridRow> + {legalDomicileInIceland === LegalDomicileInIceland.NO && ( + <Text fontWeight="semiBold" color="red400"> + {formatMessage(t.legalDomicile.dontHaveRight)} + </Text> + )} + </Field> + )} + + <Field + heading={formatMessage(t.childBirthYear.heading)} + description={formatMessage(t.childBirthYear.description)} + > + <Select + onChange={(option) => { + setBirthyear(option?.value ?? null) + }} + value={yearOptions.find((option) => option.value === birthyear)} + label={formatMessage(t.childBirthYear.label)} + options={yearOptions} + /> + </Field> + + {status === Status.PARENTAL_LEAVE && ( + <Field + heading={formatMessage(t.workPercentage.heading)} + description={formatMessage(t.workPercentage.description)} + tooltip={formatMessage(t.workPercentage.tooltip)} + > + <GridRow rowGap={1}> + <GridColumn span={['1/1', '1/2']}> + <RadioButton + id={WorkPercentage.OPTION_1} + onChange={() => { + setWorkPercentage(WorkPercentage.OPTION_1) + }} + checked={workPercentage === WorkPercentage.OPTION_1} + value={WorkPercentage.OPTION_1} + backgroundColor="white" + large={true} + label={formatMessage(t.workPercentage.option1)} + /> + </GridColumn> + <GridColumn span={['1/1', '1/2']}> + <RadioButton + id={WorkPercentage.OPTION_2} + onChange={() => { + setWorkPercentage(WorkPercentage.OPTION_2) + }} + checked={workPercentage === WorkPercentage.OPTION_2} + value={WorkPercentage.OPTION_2} + backgroundColor="white" + large={true} + label={formatMessage(t.workPercentage.option2)} + /> + </GridColumn> + </GridRow> + </Field> + )} + + {status === Status.PARENTAL_LEAVE && ( + <Field + heading={formatMessage(t.income.heading)} + description={formatMessage(t.income.description)} + > + <NumberFormat + onValueChange={({ value }) => { + setIncome(Number(value)) + }} + label={formatMessage(t.income.label)} + tooltip={formatMessage(t.income.tooltip)} + value={String(income || '')} + customInput={Input} + name="income" + id="income" + type="text" + inputMode="numeric" + thousandSeparator="." + decimalSeparator="," + suffix={formatMessage(t.income.inputSuffix)} + placeholder={formatMessage(t.income.inputPlaceholder)} + maxLength={ + formatMessage(t.income.inputSuffix).length + + (slice.configJson?.incomeInputMaxLength ?? 12) + } + /> + </Field> + )} + + {status === Status.PARENTAL_LEAVE && ( + <Field + heading={formatMessage(t.additionalPensionFunding.heading)} + description={formatMessage(t.additionalPensionFunding.description)} + > + <Select + onChange={(option) => { + setAdditionalPensionFundingPercentage(option?.value ?? null) + }} + value={additionalPensionFundingOptions.find( + (option) => option.value === additionalPensionFundingPercentage, + )} + label={formatMessage(t.additionalPensionFunding.label)} + options={additionalPensionFundingOptions} + /> + </Field> + )} + + {status === Status.PARENTAL_LEAVE && ( + <Field + heading={formatMessage(t.union.heading)} + description={formatMessage(t.union.description)} + > + <Select + onChange={(option) => { + setUnion(option?.value ?? null) + }} + value={unionOptions.find((option) => option.value === union)} + label={formatMessage(t.union.label)} + options={unionOptions} + /> + </Field> + )} + + <Field + heading={formatMessage(t.personalDiscount.heading)} + description={formatMessage(t.personalDiscount.description)} + > + <NumberFormat + onValueChange={({ value }) => { + setPersonalDiscount(Number(value)) + }} + label={formatMessage(t.personalDiscount.label)} + value={String(personalDiscount || '')} + customInput={Input} + name="personalDiscount" + id="personalDiscount" + type="text" + inputMode="numeric" + suffix={formatMessage(t.personalDiscount.suffix)} + placeholder={formatMessage(t.personalDiscount.placeholder)} + format={(value) => { + const maxPersonalDiscount = + slice.configJson?.maxPersonalDiscount ?? 100 + if (Number(value) > maxPersonalDiscount) { + value = String(maxPersonalDiscount) + } + return `${value}${formatMessage(t.personalDiscount.suffix)}` + }} + /> + </Field> + + {status === Status.PARENTAL_LEAVE && ( + <Field + heading={formatMessage(t.parentalLeavePeriod.heading)} + description={formatMessage(t.parentalLeavePeriod.description)} + > + <Select + onChange={(option) => { + setParentalLeavePeriod( + (option?.value as ParentalLeavePeriod) ?? null, + ) + }} + value={parentalLeavePeriodOptions.find( + (option) => option.value === parentalLeavePeriod, + )} + label={formatMessage(t.parentalLeavePeriod.label)} + options={parentalLeavePeriodOptions} + /> + </Field> + )} + + {status === Status.PARENTAL_LEAVE && ( + <Field + heading={formatMessage(t.parentalLeaveRatio.heading)} + description={formatMessage(t.parentalLeaveRatio.description)} + > + <NumberFormat + onValueChange={({ value }) => { + setParentalLeaveRatio(Number(value)) + }} + label={formatMessage(t.parentalLeaveRatio.label)} + value={String(parentalLeaveRatio || '')} + customInput={Input} + name="parentalLeaveRatio" + id="parentalLeaveRatio" + type="text" + inputMode="numeric" + suffix={formatMessage(t.parentalLeaveRatio.suffix)} + placeholder={formatMessage(t.parentalLeaveRatio.placeholder)} + format={(value) => { + const maxParentalLeaveRatio = + slice.configJson?.maxParentalLeaveRatio ?? 100 + if (Number(value) > maxParentalLeaveRatio) { + value = String(maxParentalLeaveRatio) + } + return `${value}${formatMessage(t.parentalLeaveRatio.suffix)}` + }} + /> + </Field> + )} + + <Button disabled={!canCalculate()} onClick={changeScreen}> + {formatMessage(t.calculate.buttonText)} + </Button> + </Stack> + </Box> + ) +} + +const yearConfigSchema = z.object({ + Persónuafsláttur: z.number(), + 'Skattmörk þrep 1': z.number(), + 'Skattmörk þrep 2': z.number(), + 'Skattprósenta þrep 1': z.number(), + 'Skattprósenta þrep 2': z.number(), + 'Skattprósenta þrep 3': z.number(), + 'Fæðingarstyrkur hærri': z.number(), + 'Fæðingarstyrkur lægri': z.number(), + 'Hlutfall fæðingarorlofs': z.number(), + 'Fæðingarstyrkur almennur': z.number(), + 'Fæðingarstyrkur námsmanna': z.number(), + 'Hámarks laun fyrir fæðingarorlof': z.number(), + 'Skyldu lífeyrir': z.number(), +}) + +const calculateResults = ( + input: { + status: Status | null + income: number | null + personalDiscount: number | null + additionalPensionFundingPercentage: number | null + union: string | null + parentalLeavePeriod: ParentalLeavePeriod | null + parentalLeaveRatio: number | null + birthyear: number | null + workPercentage: WorkPercentage | null + legalDomicileInIceland: LegalDomicileInIceland | null + }, + slice: ParentalLeaveCalculatorProps['slice'], +) => { + if (typeof input.birthyear !== 'number') { + return null + } + + const yearConfig = slice.configJson?.yearConfig?.[String(input.birthyear)] + const parseResult = yearConfigSchema.safeParse(yearConfig) + if (!parseResult.success) { + return null + } + + const constants = { + personalDiscount: parseResult.data['Persónuafsláttur'], + taxBracket1: parseResult.data['Skattmörk þrep 1'], + taxBracket2: parseResult.data['Skattmörk þrep 2'], + taxRate1: parseResult.data['Skattprósenta þrep 1'], + taxRate2: parseResult.data['Skattprósenta þrep 2'], + taxRate3: parseResult.data['Skattprósenta þrep 3'], + parentalLeaveHigh: parseResult.data['Fæðingarstyrkur hærri'], + parentalLeaveLow: parseResult.data['Fæðingarstyrkur lægri'], + parentalLeaveRatio: parseResult.data['Hlutfall fæðingarorlofs'], + parentalLeaveGeneral: parseResult.data['Fæðingarstyrkur almennur'], + parentalLeaveStudent: parseResult.data['Fæðingarstyrkur námsmanna'], + maxIncome: parseResult.data['Hámarks laun fyrir fæðingarorlof'], + pensionFundingRequiredPercentage: parseResult.data['Skyldu lífeyrir'], + } + + const unionOptions: Union[] = slice.configJson?.unionOptions ?? [] + + const calculator = new Calculator( + { + percentOfEarningsPaid: constants.parentalLeaveRatio, + tax1: constants.taxRate1, + tax2: constants.taxRate2, + tax3: constants.taxRate3, + tax1Amount: constants.taxBracket1, + tax2Amount: constants.taxBracket2, + taxDiscount: constants.personalDiscount, + pGrantStudents: constants.parentalLeaveStudent, + pGrant: constants.parentalLeaveGeneral, + pGrantHigher: constants.parentalLeaveHigh, + pGrantLower: constants.parentalLeaveLow, + maxEarnings: constants.maxIncome, + mandatoryPensionPercentage: constants.pensionFundingRequiredPercentage, + }, + { + status: input.status ?? Status.PARENTAL_LEAVE, + childYearBorn: input.birthyear, + workPercentage: input.workPercentage ?? WorkPercentage.OPTION_1, + averageEarningsPerMonth: input.income ?? 0, + monthsInPL: + input.parentalLeavePeriod === ParentalLeavePeriod.TWO_WEEKS + ? 1 / 2 + : input.parentalLeavePeriod === ParentalLeavePeriod.THREE_WEEKS + ? 3 / 4 + : 1, + union: unionOptions.find((option) => option.label === input.union), + taxDiscountRate: input.personalDiscount ?? 100, + extraPension: input.additionalPensionFundingPercentage ?? 0, + plRate: input.parentalLeaveRatio ?? 100, + }, + ) + + const results = calculator.calculateResults() + + return { + constants, + results: { + mainResultBeforeDeduction: results.plBruttoPerMonth, + mainResultAfterDeduction: results.plNettoPerMonth, + unionFee: results.unionFees, + pensionFunding: results.pensionPerMonth, + totalTax: results.tax, + usedPersonalDiscount: results.taxDiscount, + additionalPensionFunding: results.extraPensionPerMonth, + }, + } +} + +const ResultsScreen = ({ slice, changeScreen }: ScreenProps) => { + const { formatMessage } = useIntl() + + const [status] = useQueryState<Status>( + 'status', + parseAsStringEnum(Object.values(Status)).withDefault(Status.PARENTAL_LEAVE), + ) + const [birthyear] = useQueryState('birthyear', parseAsInteger) + const [workPercentage] = useQueryState( + 'workPercentage', + parseAsStringEnum(Object.values(WorkPercentage)), + ) + const [income] = useQueryState('income', parseAsInteger) + const [additionalPensionFundingPercentage] = useQueryState( + 'additionalPensionFunding', + parseAsInteger, + ) + const [union] = useQueryState('union', parseAsString) + const [personalDiscount] = useQueryState( + 'personalDiscount', + parseAsInteger.withDefault(100), + ) + const [parentalLeavePeriod] = useQueryState( + 'parentalLeavePeriod', + parseAsStringEnum(Object.values(ParentalLeavePeriod)), + ) + const [parentalLeaveRatio] = useQueryState( + 'parentalLeaveRatio', + parseAsInteger.withDefault(100), + ) + const [legalDomicileInIceland] = useQueryState( + 'legalDomicileInIceland', + parseAsStringEnum(Object.values(LegalDomicileInIceland)), + ) + + const calculation = calculateResults( + { + status, + birthyear, + workPercentage, + income, + additionalPensionFundingPercentage, + union, + personalDiscount, + parentalLeavePeriod, + parentalLeaveRatio, + legalDomicileInIceland, + }, + slice, + ) + + if (!calculation) { + return ( + <Stack space={3}> + <AlertMessage + type="error" + title={formatMessage(t.error.title)} + message={formatMessage(t.error.message)} + /> + <Button onClick={changeScreen} variant="text" preTextIcon="arrowBack"> + {formatMessage(t.results.changeAssumptions)} + </Button> + </Stack> + ) + } + + const { results, constants } = calculation + + const mainSectionKeys = { + [Status.PARENTAL_LEAVE]: { + [ParentalLeavePeriod.TWO_WEEKS]: { + heading: t.results.mainParentalLeaveHeadingTwoWeeks, + description: t.results.mainParentalLeaveDescriptionTwoWeeks, + }, + [ParentalLeavePeriod.THREE_WEEKS]: { + heading: t.results.mainParentalLeaveHeadingThreeWeeks, + description: t.results.mainParentalLeaveDescriptionThreeWeeks, + }, + [ParentalLeavePeriod.MONTH]: { + heading: t.results.mainParentalLeaveHeadingMonth, + description: t.results.mainParentalLeaveDescriptionMonth, + }, + }, + [Status.STUDENT]: { + heading: t.results.mainStudentHeading, + description: t.results.mainStudentDescription, + }, + [Status.OUTSIDE_WORKFORCE]: { + heading: t.results.mainOutsideWorkforceHeading, + description: t.results.mainOutsideWorkforceDescription, + }, + } + + const ratio = + status === Status.PARENTAL_LEAVE && parentalLeaveRatio < 100 + ? parentalLeaveRatio + : 100 + + const formatCurrency = (value: number | null | undefined) => + formatCurrencyUtil( + value, + formatMessage(t.results.currencySuffix), + Math.ceil, + ) + + let mainResultBeforeDeductionPrefixKey = + t.results.mainResultBeforeDeductionDescriptionMonth + + if (status === Status.PARENTAL_LEAVE) { + if (parentalLeavePeriod === ParentalLeavePeriod.THREE_WEEKS) { + mainResultBeforeDeductionPrefixKey = + t.results.mainResultBeforeDeductionDescriptionThreeWeeks + } else if (parentalLeavePeriod === ParentalLeavePeriod.TWO_WEEKS) { + mainResultBeforeDeductionPrefixKey = + t.results.mainResultBeforeDeductionDescriptionTwoWeeks + } + } + + if (status === Status.STUDENT) { + mainResultBeforeDeductionPrefixKey = + t.results.mainResultBeforeDeductionDescriptionStudent + } + + if (status === Status.OUTSIDE_WORKFORCE) { + mainResultBeforeDeductionPrefixKey = + t.results.mainResultBeforeDeductionDescriptionOutsideWorkforce + } + + return ( + <Stack space={5}> + <Stack space={3}> + <Box background="blue100" paddingY={3} paddingX={4}> + <Box className={styles.resultBorder} paddingY={2} paddingX={3}> + <Stack space={2}> + <Text variant="h3"> + {status === Status.PARENTAL_LEAVE + ? formatMessage( + mainSectionKeys[status][ + parentalLeavePeriod ?? ParentalLeavePeriod.MONTH + ].heading, + ) + : formatMessage(mainSectionKeys[status].heading)} + </Text> + <Text> + {status === Status.PARENTAL_LEAVE + ? formatMessage( + mainSectionKeys[status][ + parentalLeavePeriod ?? ParentalLeavePeriod.MONTH + ].description, + { + ratio, + }, + ) + : formatMessage(mainSectionKeys[status].description, { + ratio, + })} + </Text> + <Text fontWeight="semiBold" variant="h3"> + {formatCurrency(results.mainResultAfterDeduction)} + </Text> + <Text>{formatMessage(t.results.mainDisclaimer)}</Text> + </Stack> + </Box> + </Box> + + <Button onClick={changeScreen} variant="text" preTextIcon="arrowBack"> + {formatMessage(t.results.changeAssumptions)} + </Button> + </Stack> + + <Stack space={6}> + {status === Status.PARENTAL_LEAVE && ( + <Stack space={3}> + <MarkdownText replaceNewLinesWithBreaks={false}> + {formatMessage(t.results.incomePrerequisitesDescription, { + maxIncome: formatCurrencyUtil( + constants.maxIncome, + '', + Math.ceil, + ), + parentalLeaveRatio: constants.parentalLeaveRatio, + parentalLeaveLow: formatCurrencyUtil( + constants.parentalLeaveLow, + '', + Math.ceil, + ), + parentalLeaveHigh: formatCurrencyUtil( + constants.parentalLeaveHigh, + '', + Math.ceil, + ), + })} + </MarkdownText> + <Table.Table> + <Table.Head> + <Table.HeadData> + {formatMessage(t.results.incomePrerequisitesHeading)} + </Table.HeadData> + <Table.HeadData align="right"> + {formatMessage(t.results.perMonth)} + </Table.HeadData> + </Table.Head> + <Table.Body> + <Table.Row> + <Table.Data> + <Text fontWeight="semiBold"> + {formatMessage(t.results.incomePrerequisitesSubHeading)} + </Text> + </Table.Data> + <Table.Data> + <Text whiteSpace="nowrap">{formatCurrency(income)}</Text> + </Table.Data> + </Table.Row> + </Table.Body> + </Table.Table> + </Stack> + )} + + <Table.Table> + <Table.Head> + <Table.HeadData> + {formatMessage(t.results.mainResultBeforeDeductionHeading)} + </Table.HeadData> + <Table.HeadData align="right"> + {formatMessage(t.results.perMonth)} + </Table.HeadData> + </Table.Head> + <Table.Body> + <Table.Row> + <Table.Data> + <Text fontWeight="semiBold"> + {formatMessage(mainResultBeforeDeductionPrefixKey, { + ratio, + })} + </Text> + </Table.Data> + <Table.Data align="right"> + <Text whiteSpace="nowrap"> + {formatCurrency(results.mainResultBeforeDeduction)} + </Text> + </Table.Data> + </Table.Row> + </Table.Body> + </Table.Table> + + <Table.Table> + <Table.Head> + <Table.HeadData> + {formatMessage(t.results.deductionHeading)} + </Table.HeadData> + <Table.HeadData align="right"> + {formatMessage(t.results.amount)} + </Table.HeadData> + </Table.Head> + <Table.Body> + <Table.Row> + <Table.Data> + <Text fontWeight="semiBold"> + {formatMessage(t.results.pensionFunding)} + </Text> + </Table.Data> + <Table.Data align="right"> + <Text whiteSpace="nowrap"> + {formatCurrency(results.pensionFunding)} + </Text> + </Table.Data> + </Table.Row> + <Table.Row> + <Table.Data> + <Text fontWeight="semiBold"> + {formatMessage(t.results.additionalPensionFunding)} + </Text> + </Table.Data> + <Table.Data align="right"> + <Text whiteSpace="nowrap"> + {formatCurrency(results.additionalPensionFunding)} + </Text> + </Table.Data> + </Table.Row> + <Table.Row> + <Table.Data> + <Stack space={2}> + <Text fontWeight="semiBold"> + {formatMessage(t.results.tax)} + </Text> + <Text> + {formatMessage(t.results.totalTax)} -{' '} + {formatCurrency(results.totalTax)} + </Text> + <Text> + {formatMessage(t.results.usedPersonalDiscount)} -{' '} + {formatCurrency(results.usedPersonalDiscount)} + </Text> + </Stack> + </Table.Data> + <Table.Data align="right" style={{ verticalAlign: 'top' }}> + <Text whiteSpace="nowrap"> + {formatCurrency( + results.totalTax - results.usedPersonalDiscount, + )} + </Text> + </Table.Data> + </Table.Row> + <Table.Row> + <Table.Data> + <Text fontWeight="semiBold"> + {formatMessage(t.results.unionFee)} + </Text> + </Table.Data> + <Table.Data align="right"> + <Text whiteSpace="nowrap"> + {formatCurrency(results.unionFee)} + </Text> + </Table.Data> + </Table.Row> + </Table.Body> + </Table.Table> + </Stack> + </Stack> + ) +} + +export const ParentalLeaveCalculator = ({ + slice, +}: ParentalLeaveCalculatorProps) => { + const containerRef = useRef<HTMLDivElement>(null) + const [activeScreen, setActiveScreen] = useState(Screen.FORM) + + return ( + <div ref={containerRef}> + {activeScreen !== Screen.RESULTS && ( + <FormScreen + slice={slice} + changeScreen={() => { + setActiveScreen(Screen.RESULTS) + window.scrollTo({ + behavior: 'smooth', + top: containerRef.current?.offsetTop ?? 0, + }) + }} + /> + )} + {activeScreen === Screen.RESULTS && ( + <ResultsScreen + slice={slice} + changeScreen={() => { + setActiveScreen(Screen.FORM) + window.scrollTo({ + behavior: 'smooth', + top: containerRef.current?.offsetTop ?? 0, + }) + }} + /> + )} + </div> + ) +} diff --git a/apps/web/components/connected/ParentalLeaveCalculator/translations.strings.ts b/apps/web/components/connected/ParentalLeaveCalculator/translations.strings.ts new file mode 100644 index 000000000000..2a5b163bc687 --- /dev/null +++ b/apps/web/components/connected/ParentalLeaveCalculator/translations.strings.ts @@ -0,0 +1,496 @@ +import { defineMessages } from 'react-intl' + +export const translations = { + status: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:status.heading', + defaultMessage: 'Veldu það sem á við þig', + description: 'Heading fyrir ofan "Val um stöðu" dropdown', + }, + label: { + id: 'web.parentalLeaveCalculator:status.label', + defaultMessage: 'Val um stöðu', + description: 'Label fyrir "Val um stöðu" dropdown', + }, + parentalLeaveOption: { + id: 'web.parentalLeaveCalculator:status.parentalLeaveOption', + defaultMessage: 'Fæðingarorlof', + description: 'Fæðingarorlofs - valmöguleiki í "Val um stöðu" dropdown', + }, + studentOption: { + id: 'web.parentalLeaveCalculator:status.studentOption', + defaultMessage: 'Fæðingarstyrkur námsmanna', + description: + 'Fæðingarstyrkur námsmanna - valmöguleiki í "Val um stöðu" dropdown', + }, + outsideWorkforceOption: { + id: 'web.parentalLeaveCalculator:status.outsideWorkforceOption', + defaultMessage: 'Fæðingarstyrkur utan vinnumarkaðs', + description: + 'Fæðingarstyrkur utan vinnumarkaða - valmöguleiki í "Val um stöðu" dropdown', + }, + }), + legalDomicile: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:legalDomicile.heading', + defaultMessage: 'Átt þú lögheimili á Íslandi', + description: + 'Heading fyrir ofan "Átt þú lögheimili á Íslandi" radio takka', + }, + tooltip: { + id: 'web.parentalLeaveCalculator:legalDomicile.tooltip', + defaultMessage: + 'Nánari upplýsingar um það hvað telst vera samfellt starf hjá starfsmönnum eða sjálfstætt starfandi einstaklingum og upplýsingar um önnur tilvik sem teljast jafnframt til þátttöku á innlendum vinnumarkaði má finna undir flipanum réttindi foreldra á innlendum vinnumarkaði á heimasíðu Fæðingarorlofssjóðs.', + description: 'Tooltip fyrir ofan "Lögheimli á íslandi" dropdown', + }, + yes: { + id: 'web.parentalLeaveCalculator:legalDomicile.yes', + defaultMessage: 'Já', + description: 'Já', + }, + no: { + id: 'web.parentalLeaveCalculator:legalDomicile.no', + defaultMessage: 'Nei', + description: 'Nei', + }, + dontHaveRight: { + id: 'web.parentalLeaveCalculator:legalDomicile.dontHaveRight', + defaultMessage: 'Réttur ekki til staðar miðað við uppgefnar forsendur.', + description: 'Réttur ekki til staðar miðað við uppgefnar forsendur.', + }, + }), + childBirthYear: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:childBirthYear.heading', + defaultMessage: 'Fæðingarár barns', + description: 'Heading fyrir ofan "Fæðingarár barns" dropdown', + }, + description: { + id: 'web.parentalLeaveCalculator:childBirthYear.description', + defaultMessage: + 'Miðað er við ár sem barn fæðist, kemur inn á heimili ef það er frumætleitt eða tekið í varanlegt fóstur.', + description: 'Lýsing fyrir ofan "Fæðingarár barns" dropdown', + }, + label: { + id: 'web.parentalLeaveCalculator:childBirthYear.label', + defaultMessage: 'Veldu ár', + description: 'Label fyrir "Fæðingarár barns" dropdown', + }, + }), + workPercentage: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:workPercentage.heading', + defaultMessage: 'Starfshlutfall', + description: 'Heading fyrir ofan "Starfshlutfall" reit', + }, + description: { + id: 'web.parentalLeaveCalculator:workPercentage.description', + defaultMessage: + 'Hlutfall vinnu á íslenskum vinnumarkaði síðustu 6 mánuði fyrir áætlaðan fæðingardag. Ef barn er frumættleitt eða tekið í varanlegt fóstur er miðað við daginn sem barnið kemur inn á heimilið.', + description: 'Lýsing fyrir ofan "Fæðingarár barns" dropdown', + }, + tooltip: { + id: 'web.parentalLeaveCalculator:workPercentage.tooltip', + defaultMessage: + 'Nánari upplýsingar um það hvernig starfshlutfall er fundið út má finna undir flipanum réttindi foreldra á innlendum vinnumarkaði á heimasíðu Fæðingarorlofssjóðs.', + description: 'Texti fyrir tooltip við "Starfshlutfall" reit', + }, + option1: { + id: 'web.parentalLeaveCalculator:workPercentage.option1', + defaultMessage: '25% til 49%', + description: 'Valmöguleiki 1 fyrir starfshlutfall', + }, + option2: { + id: 'web.parentalLeaveCalculator:workPercentage.option2', + defaultMessage: '50% til 100%', + description: 'Valmöguleiki 2 fyrir starfshlutfall', + }, + }), + income: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:income.heading', + defaultMessage: 'Meðaltekjur á mánuði fyrir skatt', + description: 'Heading fyrir ofan "Meðaltekjur" reit', + }, + description: { + id: 'web.parentalLeaveCalculator:income.description', + defaultMessage: + 'Fyrir launafólk er miðað við 12 mánaða tímabil sem lýkur 6 mánuðum fyrir fæðingardag barns. Fyrir sjálfstætt starfandi er miðað við tekjuárið á undan fæðingarári barnsins.', + description: 'Lýsing fyrir ofan "Meðaltekjur" reit', + }, + inputSuffix: { + id: 'web.parentalLeaveCalculator:income.inputSuffix', + defaultMessage: ' krónur', + description: 'Viðskeyti eftir tekjutöluna sem notandi hefur slegið inn', + }, + inputPlaceholder: { + id: 'web.parentalLeaveCalculator:income.inputPlaceholder', + defaultMessage: 'krónur', + description: 'Placeholder texti fyrir meðaltekju innsláttarreit', + }, + label: { + id: 'web.parentalLeaveCalculator:income.label', + defaultMessage: 'Meðaltekjur', + description: 'Label á meðaltekju innsláttarreit', + }, + tooltip: { + id: 'web.parentalLeaveCalculator:income.tooltip', + defaultMessage: + 'Miðað er við allar þær tekjur sem greitt er tryggingagjald af og greiðslur úr Fæðingarorlofssjóði, Atvinnuleysistryggingasjóði, Ábyrgðasjóði launa, sjúkra- og slysadagpeninga, greiðslur úr sjúkrasjóðum stéttarfélaga, bætur frá tryggingafélagi vegna tímabundins atvinnutjóns og tekjutengdar greiðslur samkvæmt III. kafla laga um greiðslur til foreldra langveikra eða alvarlegra fatlaðra barna.', + description: 'Tooltip á meðaltekju innsláttarreit', + }, + }), + additionalPensionFunding: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:additionalPensionFunding.heading', + defaultMessage: 'Viðbótalífeyrissparnaður', + description: 'Heading fyrir ofan "Viðbótalífeyrissparnaður" dropdown', + }, + label: { + id: 'web.parentalLeaveCalculator:additionalPensionFunding.label', + defaultMessage: 'Viðbótalífeyrissparnaður', + description: 'Label fyrir "Viðbótalífeyrissparnaður" dropdown', + }, + description: { + id: 'web.parentalLeaveCalculator:additionalPensionFunding.description', + defaultMessage: + 'Það er valkvætt að greiða viðbótarlífeyrissparnað. Fæðingarorlofssjóður greiðir ekki mótframlag.', + description: 'Lýsing fyrir ofan "Viðbótalífeyrissparnaður" dropdown', + }, + optionSuffix: { + id: 'web.parentalLeaveCalculator:additionalPensionFunding.optionSuffix', + defaultMessage: ' prósent', + description: + 'Viðskeyti eftir valmöguleika í Viðbótalífeyrissparnaðs dropdown, dæmi "1< prósent>"', + }, + none: { + id: 'web.parentalLeaveCalculator:additionalPensionFunding.none', + defaultMessage: 'Enginn', + description: + 'Valmöguleiki ef það er enginn viðbótalífeyrissparnaður til staðar hjá viðkomandi', + }, + }), + union: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:union.heading', + defaultMessage: 'Stéttarfélagsgjöld', + description: 'Heading fyrir ofan "Stéttarfélagsgjöld" dropdown', + }, + description: { + id: 'web.parentalLeaveCalculator:union.description', + defaultMessage: + 'Það er valkvætt að greiða í stéttarfélag. Athugið að réttindi geta tapast hjá stéttarfélagi ef greiðslum þar er ekki viðhaldið meðan á fæðingarorlofi stendur.', + description: 'Lýsing fyrir ofan "Stéttarfélagsgjöld" dropdown', + }, + label: { + id: 'web.parentalLeaveCalculator:union.label', + defaultMessage: 'Stéttarfélagsgjöld', + description: 'Label á "Stéttarfélagsgjöld" dropdown', + }, + none: { + id: 'web.parentalLeaveCalculator:union.none', + defaultMessage: 'Engin', + description: + 'Valmöguleiki ef það er engin stéttarfélagsgjöld til staðar hjá viðkomandi', + }, + }), + error: defineMessages({ + title: { + id: 'web.parentalLeaveCalculator:error.title', + defaultMessage: 'Villa', + description: 'Titill á villuskilaboðum ef ekki tekst að reikna', + }, + message: { + id: 'web.parentalLeaveCalculator:error.message', + defaultMessage: 'Ekki tókst að reikna', + description: + 'Villutexti ef ekki tekst að reikna (ef það t.d. vantar fasta í vefumsjónarkerfi)', + }, + }), + personalDiscount: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:personalDiscount.heading', + defaultMessage: 'Hlutfall persónuafsláttar', + description: 'Heading fyrir ofan "Hlutfall persónuafsláttar" reit', + }, + description: { + id: 'web.parentalLeaveCalculator:personalDiscount.description', + defaultMessage: + 'Hægt er að velja hversu hátt hlutfall persónuafsláttar á að nýta hjá Fæðingarorlofssjóði.', + description: 'Lýsing fyrir ofan "Hlutfall persónuafsláttar" reit', + }, + label: { + id: 'web.parentalLeaveCalculator:personalDiscount.label', + defaultMessage: 'Hlutfall persónuafsláttar', + description: 'Label á "Hlutfall persónuafsláttar" reit', + }, + placeholder: { + id: 'web.parentalLeaveCalculator:personalDiscount.placeholder', + defaultMessage: '%', + description: 'Placeholder á "Hlutfall persónuafsláttar" reit', + }, + suffix: { + id: 'web.parentalLeaveCalculator:personalDiscount.suffix', + defaultMessage: '%', + description: + 'Viðskeyti á eftir því sem notandi slær inn í "Hlutfall persónuafsláttar" reit', + }, + }), + parentalLeavePeriod: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:parentalLeavePeriod.heading', + defaultMessage: 'Tímabil fæðingarorlofs (Lágmark 2 vikur)', + description: 'Heading fyrir ofan "Tímabil fæðingarorlofs" dropdown', + }, + description: { + id: 'web.parentalLeaveCalculator:parentalLeavePeriod.description', + defaultMessage: + 'Útreikningar miðast við mánuð í fæðingarorlofi eða hluta úr mánuði.', + description: 'Lýsing fyrir ofan "Hlutfall persónuafsláttar" dropdown', + }, + label: { + id: 'web.parentalLeaveCalculator:parentalLeavePeriod.label', + defaultMessage: 'Tímabil fæðingarorlofs', + description: 'Label á "Tímabil fæðingarorlofs" dropdown', + }, + placeholder: { + id: 'web.parentalLeaveCalculator:parentalLeavePeriod.placeholder', + defaultMessage: 'Veldu', + description: 'Placeholder á "Hlutfall persónuafsláttar" dropdown', + }, + twoWeeksOption: { + id: 'web.parentalLeaveCalculator:parentalLeavePeriod.twoWeeksOption', + defaultMessage: '2 vikur', + description: 'Valmöguleiki um 2 vikur í fæðingarorlofstímabili', + }, + threeWeeksOption: { + id: 'web.parentalLeaveCalculator:parentalLeavePeriod.threeWeeksOption', + defaultMessage: '3 vikur', + description: 'Valmöguleiki um 3 vikur í fæðingarorlofstímabili', + }, + monthOption: { + id: 'web.parentalLeaveCalculator:parentalLeavePeriod.monthOption', + defaultMessage: '1 mánuður', + description: 'Valmöguleiki um 1 mánuð í fæðingarorlofstímabili', + }, + }), + parentalLeaveRatio: defineMessages({ + heading: { + id: 'web.parentalLeaveCalculator:parentalLeaveRatio.heading', + defaultMessage: 'Hlutfall fæðingarorlofs', + description: 'Heading fyrir ofan "Hlutfall fæðingarorlofs" reit', + }, + description: { + id: 'web.parentalLeaveCalculator:parentalLeaveRatio.description', + defaultMessage: + 'Hægt er að velja lægra hlutfall fæðingarorlofs ef foreldri vill t.d. dreifa greiðslum yfir lengra tímabil eða vinna samhliða fæðingarorlofi.', + description: 'Lýsing fyrir ofan "Hlutfall fæðingarorlofs" reit', + }, + tooltip: { + id: 'web.parentalLeaveCalculator:parentalLeaveRatio.tooltip', + defaultMessage: + 'Dæmi um lægra hlutfall fæðingarorlofs: 3 mánuðir dreift á 4,5 mánuði = 66% hlutfall eða 6 mánuðir dreift á 9 mánuði = 66% hlutfall. 3 mánuðir dreift á 6 mánuði = 50% hlutfall eða 6 mánuðir dreift á 12 mánuði = 50% hlutfall. 3 mánuðir dreift á 9 mánuði = 33% hlutfall eða 6 mánuðir dreift á 18 mánuði = 33% hlutfall. 3 mánuðir dreift á 12 mánuði = 25% hlutfall eða 6 mánuðir dreift á 24 mánuði = 25% hlutfall.', + description: 'Tooltip fyrir ofan "Hlutfall fæðingarorlofs" reit', + }, + label: { + id: 'web.parentalLeaveCalculator:parentalLeaveRatio.label', + defaultMessage: 'Hlutfall fæðingarorlofs', + description: 'Label á "Hlutfall fæðingarorlofs" reit', + }, + placeholder: { + id: 'web.parentalLeaveCalculator:parentalLeaveRatio.placeholder', + defaultMessage: '%', + description: 'Placeholder á "Hlutfall fæðingarorlofs" reit', + }, + suffix: { + id: 'web.parentalLeaveCalculator:parentalLeaveRatio.suffix', + defaultMessage: '%', + description: + 'Viðskeyti á eftir því sem notandi slær inn í "Hlutfall fæðingarorlofs" reit', + }, + }), + calculate: defineMessages({ + buttonText: { + id: 'web.parentalLeaveCalculator:calculate', + defaultMessage: 'Reikna', + description: 'Texti á "Reikna" hnapp', + }, + }), + results: defineMessages({ + mainParentalLeaveHeadingMonth: { + id: 'web.parentalLeaveCalculator:results.mainParentalLeaveHeadingMonth', + defaultMessage: 'Fæðingarorlof á mánuði', + description: + 'Niðurstöðuskjár - Aðal heading fyrir fæðingarorlof á mánuði', + }, + mainParentalLeaveDescriptionMonth: { + id: 'web.parentalLeaveCalculator:results.mainParentalLeaveDescriptionMonth', + defaultMessage: '{ratio}% fæðingarorlof á mánuði (eftir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á prósentutölu fæðingarorlofs á mánuði sem notandi valdi', + }, + mainParentalLeaveHeadingThreeWeeks: { + id: 'web.parentalLeaveCalculator:results.mainParentalLeaveHeadingThreeWeeks', + defaultMessage: 'Fæðingarorlof á 3 vikum', + description: + 'Niðurstöðuskjár - Aðal heading fyrir fæðingarorlof á 3 vikum', + }, + mainParentalLeaveDescriptionThreeWeeks: { + id: 'web.parentalLeaveCalculator:results.mainParentalLeaveDescriptionThreeWeeks', + defaultMessage: '{ratio}% fæðingarorlof á 3 vikum (eftir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á prósentutölu fæðingarorlofs á 3 vikum sem notandi valdi', + }, + mainParentalLeaveHeadingTwoWeeks: { + id: 'web.parentalLeaveCalculator:results.mainParentalLeaveHeadingTwoWeeks', + defaultMessage: 'Fæðingarorlof á 2 vikum', + description: + 'Niðurstöðuskjár - Aðal heading fyrir fæðingarorlof á 2 vikum', + }, + mainParentalLeaveDescriptionTwoWeeks: { + id: 'web.parentalLeaveCalculator:results.mainParentalLeaveDescriptionTwoWeeks', + defaultMessage: '{ratio}% fæðingarorlof á 2 vikum (eftir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á prósentutölu fæðingarorlofs á 2 vikum sem notandi valdi', + }, + mainStudentHeading: { + id: 'web.parentalLeaveCalculator:results.mainStudentHeading', + defaultMessage: 'Fæðingarstyrkur námsmanna á mánuði', + description: + 'Niðurstöðuskjár - Aðal heading fyrir fæðingarstyrk námsmanna', + }, + mainStudentDescription: { + id: 'web.parentalLeaveCalculator:results.mainStudentDescription', + defaultMessage: + '{ratio}% fæðingarstyrkur námsmanna á mánuði (eftir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á prósentutölu fæðingarstyrks á mánuði sem notandi valdi', + }, + mainOutsideWorkforceHeading: { + id: 'web.parentalLeaveCalculator:results.mainOutsideWorkforceHeading', + defaultMessage: 'Fæðingarstyrkur á mánuði', + description: + 'Niðurstöðuskjár - Aðal heading fyrir fæðingarstyrk utan vinnumarkaðs', + }, + mainOutsideWorkforceDescription: { + id: 'web.parentalLeaveCalculator:results.mainOutsideWorkforceDescription', + defaultMessage: '{ratio}% fæðingarstyrkur á mánuði (eftir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á prósentutölu fæðingarstyrks á mánuði sem notandi valdi', + }, + currencySuffix: { + id: 'web.parentalLeaveCalculator:results.currencySuffix', + defaultMessage: ' krónur', + description: 'Niðurstöðuskjár - Viðskeyti eftir krónutölu', + }, + mainDisclaimer: { + id: 'web.parentalLeaveCalculator:results.mainDisclaimer', + defaultMessage: + 'Vinsamlega hafðu í huga að reiknivélin reiknar greiðslur miðað við þær forsendur sem þú gefur upp. Líkanið er einungis til leiðbeiningar en veitir ekki bindandi upplýsingar um endanlega afgreiðslu máls eða greiðslufjárhæðir.', + description: 'Niðurstöðuskjár - Texti fyrir neðan aðalkrónutölu', + }, + incomePrerequisitesHeading: { + id: 'web.parentalLeaveCalculator:results.incomePrerequisitesHeading', + defaultMessage: 'Launaforsendur', + description: 'Niðurstöðuskjár - Heading fyrir "Launaforsendur" lið', + }, + incomePrerequisitesSubHeading: { + id: 'web.parentalLeaveCalculator:results.incomePrerequisitesSubHeading', + defaultMessage: + 'Uppgefnar meðaltekjur innanlands á mánuði miðað við árið 2024', + description: 'Niðurstöðuskjár - Subheading fyrir "Launaforsendur" lið', + }, + incomePrerequisitesDescription: { + id: 'web.parentalLeaveCalculator:results.incomePrerequisitesDescription#markdown', + defaultMessage: `Fæðingarorlof nemur aldrei meira en {parentalLeaveRatio}% af uppgefnum launum\nFæðingarorlof er aldrei hærra en {maxIncome} krónur á mánuði\nFæðingarorlof er aldrei lægra en {parentalLeaveLow} krónur fyrir 25-49% starfshlutfall og {parentalLeaveHigh} krónur fyrir 50-100% starfshlutfall`, + description: 'Niðurstöðuskjár - Lýsing fyrir "Launaforsendur" lið', + }, + mainResultBeforeDeductionHeading: { + id: 'web.parentalLeaveCalculator:results.mainResultBeforeDeductionHeading', + defaultMessage: 'Niðurstaða', + description: + 'Niðurstöðuskjár - Heading fyrir niðurstöðulið (fyrir frádrátt)', + }, + mainResultBeforeDeductionDescriptionMonth: { + id: 'web.parentalLeaveCalculator:results.mainResultBeforeDeductionDescriptionMonth', + defaultMessage: '{ratio}% fæðingarorlof á mánuði (fyrir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á hve mikið fæðingarorlof á mánuði notandi fær (fyrir frádrátt)', + }, + mainResultBeforeDeductionDescriptionThreeWeeks: { + id: 'web.parentalLeaveCalculator:results.mainResultBeforeDeductionDescriptionThreeWeeks', + defaultMessage: '{ratio}% fæðingarorlof á 3 vikum (fyrir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á hve mikið fæðingarorlof notandi fær á 3 vikum (fyrir frádrátt)', + }, + mainResultBeforeDeductionDescriptionTwoWeeks: { + id: 'web.parentalLeaveCalculator:results.mainResultBeforeDeductionDescriptionTwoWeeks', + defaultMessage: '{ratio}% fæðingarorlof á 2 vikum (fyrir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á hve mikið fæðingarorlof á 2 vikum notandi fær (fyrir frádrátt)', + }, + mainResultBeforeDeductionDescriptionStudent: { + id: 'web.parentalLeaveCalculator:results.mainResultBeforeDeductionDescriptionStudent', + defaultMessage: + '{ratio}% fæðingarstyrkur námsmanna á mánuði (fyrir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á hve mikið fæðingarstyrkur námsmanna er (fyrir frádrátt)', + }, + mainResultBeforeDeductionDescriptionOutsideWorkforce: { + id: 'web.parentalLeaveCalculator:results.mainResultBeforeDeductionDescriptionOutsideWorkforce', + defaultMessage: '{ratio}% fæðingarstyrkur á mánuði (fyrir frádrátt)', + description: + 'Niðurstöðuskjár - Lýsing á hve mikið fæðingarstyrkur utan vinnumarkaðar er (fyrir frádrátt)', + }, + deductionHeading: { + id: 'web.parentalLeaveCalculator:results.deductionHeading', + defaultMessage: 'Frádreginn kostnaður', + description: 'Niðurstöðuskjár - Heading fyrir "Frádreginn kostnaður" lið', + }, + amount: { + id: 'web.parentalLeaveCalculator:results.amount', + defaultMessage: 'Upphæð', + description: 'Niðurstöðuskjár - Upphæð', + }, + perMonth: { + id: 'web.parentalLeaveCalculator:results.perMonth', + defaultMessage: 'Á mánuði', + description: 'Niðurstöðuskjár - Á mánuði', + }, + pensionFunding: { + id: 'web.parentalLeaveCalculator:results.pensionFunding', + defaultMessage: 'Lífeyrissjóðir', + description: 'Niðurstöðuskjár - Lífeyrissjóðir', + }, + additionalPensionFunding: { + id: 'web.parentalLeaveCalculator:results.additionalPensionFunding', + defaultMessage: 'Viðbótalífeyrissparnaður', + description: 'Niðurstöðuskjár - Viðbótalífeyrissparnaður', + }, + tax: { + id: 'web.parentalLeaveCalculator:results.tax', + defaultMessage: 'Frádreginn skattur', + description: 'Niðurstöðuskjár - Frádreginn skattur', + }, + totalTax: { + id: 'web.parentalLeaveCalculator:results.totalTax', + defaultMessage: 'Heildarskattur', + description: 'Niðurstöðuskjár - Heildarskattur', + }, + usedPersonalDiscount: { + id: 'web.parentalLeaveCalculator:results.usedPersonalDiscount', + defaultMessage: 'Nýttur persónuafsláttur', + description: 'Niðurstöðuskjár - Nýttur persónuafsláttur', + }, + unionFee: { + id: 'web.parentalLeaveCalculator:results.unionFee', + defaultMessage: 'Stéttarfélagsgjöld', + description: 'Niðurstöðuskjár - Stéttarfélagsgjöld', + }, + changeAssumptions: { + id: 'web.parentalLeaveCalculator:results.changeAssumptions', + defaultMessage: 'Breyta forsendum', + description: 'Niðurstöðuskjár - Breyta forsendum', + }, + }), +} diff --git a/apps/web/components/connected/ParentalLeaveCalculator/utils.ts b/apps/web/components/connected/ParentalLeaveCalculator/utils.ts new file mode 100644 index 000000000000..fecf2858e9b2 --- /dev/null +++ b/apps/web/components/connected/ParentalLeaveCalculator/utils.ts @@ -0,0 +1,199 @@ +export enum Status { + PARENTAL_LEAVE = 'parentalLeave', + STUDENT = 'student', + OUTSIDE_WORKFORCE = 'outsideWorkForce', +} + +export enum WorkPercentage { + OPTION_1 = 'option1', + OPTION_2 = 'option2', +} + +export type Union = { + label: string + percentage: number + fixedCost: number +} + +type Constants = { + /* Hlutfall fæðingarorlofs (fasti) */ + percentOfEarningsPaid: number + + /* Persónuafsláttur */ + taxDiscount: number + + /* Skattprósentur */ + tax1: number + tax2: number + tax3: number + + /* Skattmörk */ + tax1Amount: number + tax2Amount: number + + /* Fæðingarstyrkur námsmanna */ + pGrantStudents: number + + /* Fæðingarstyrkur almennur */ + pGrant: number + + /* Fæðingarstyrkur hærri */ + pGrantHigher: number + + /* Fæðingarstyrkur lægri */ + pGrantLower: number + + /* Hámarks laun fyrir fæðingarorlof */ + maxEarnings: number + + /* Skyldu lífeyrir */ + mandatoryPensionPercentage: number +} + +type Input = { + status: Status + + /* Fæðingarár barns */ + childYearBorn: number + + /* Starfshlutfall á innlendum vinnumarkaði í 6 mánuði fyrir áætlaðan fæðingardag */ + workPercentage: WorkPercentage + + /* Meðaltekjur innanlands á mánuði */ + averageEarningsPerMonth: number + + /* Fjöldi mánaða í fæðingarorlofi */ + monthsInPL: number + + /* Stéttarfélag */ + union: Union | undefined + + /* Persónuafsláttur */ + taxDiscountRate: number + + /* Viðbótar lifeyrissjóður */ + extraPension: number + + /* Hlutfall fæðingarorlofs */ + plRate: number +} + +export class Calculator { + private constants: Constants + private input: Input + + constructor(constants: Constants, input: Input) { + this.constants = constants + this.input = input + } + + private calculateTax(amount: number) { + const intAmount = amount + let taxAmount = 0.0 + + // Fyrsta skattþrep + if (intAmount <= this.constants.tax1Amount) { + taxAmount = intAmount * (this.constants.tax1 / 100) + } + // Annað skattþrep + else if (intAmount <= this.constants.tax2Amount) { + taxAmount = this.constants.tax1Amount * (this.constants.tax1 / 100) + taxAmount += + (intAmount - this.constants.tax1Amount) * (this.constants.tax2 / 100) + } + // Þriðja skattþrep + else { + taxAmount = this.constants.tax1Amount * (this.constants.tax1 / 100) + taxAmount += + (this.constants.tax2Amount - this.constants.tax1Amount) * + (this.constants.tax2 / 100) + taxAmount += + (intAmount - this.constants.tax2Amount) * (this.constants.tax3 / 100) + } + + return Math.round(taxAmount) + } + + public calculateResults() { + const myAverage = + (this.input.averageEarningsPerMonth * + this.constants.percentOfEarningsPaid) / + 100 + + const earningsPerMonth = Math.min(myAverage, this.constants.maxEarnings) + let plBruttoPerMonth = earningsPerMonth + + let fullAmount = 0 + let pensionPerMonth = 0 + let extraPensionPerMonth = 0 + let unionFees = 0 + + if (this.input.status === Status.STUDENT) { + plBruttoPerMonth = this.constants.pGrantStudents + fullAmount = plBruttoPerMonth + } + + if (this.input.status === Status.OUTSIDE_WORKFORCE) { + plBruttoPerMonth = this.constants.pGrant + fullAmount = plBruttoPerMonth + } + + if (this.input.status === Status.PARENTAL_LEAVE) { + plBruttoPerMonth = Math.max( + this.input.workPercentage === WorkPercentage.OPTION_1 + ? this.constants.pGrantLower + : this.constants.pGrantHigher, + earningsPerMonth, + ) + + fullAmount = plBruttoPerMonth + + plBruttoPerMonth = (plBruttoPerMonth * this.input.plRate) / 100 + + if (this.input.monthsInPL < 1) { + plBruttoPerMonth *= this.input.monthsInPL + } + + pensionPerMonth = + (plBruttoPerMonth * this.constants.mandatoryPensionPercentage) / 100 + extraPensionPerMonth = (plBruttoPerMonth * this.input.extraPension) / 100 + + if (this.input.union) { + unionFees = + this.input.union.fixedCost > 0 + ? Math.round(this.input.union.fixedCost) + : Math.round(plBruttoPerMonth * (this.input.union.percentage / 100)) + } + } + + const tax = this.calculateTax( + plBruttoPerMonth - pensionPerMonth - extraPensionPerMonth, + ) + + let taxDiscount = + this.constants.taxDiscount * (this.input.taxDiscountRate / 100) + + if (tax <= taxDiscount) { + taxDiscount = tax + } + + const plNettoPerMonth = + plBruttoPerMonth - + pensionPerMonth - + extraPensionPerMonth - + unionFees - + tax + + taxDiscount + + return { + plBruttoPerMonth, + plNettoPerMonth, + unionFees, + pensionPerMonth, + extraPensionPerMonth, + tax, + taxDiscount, + fullAmount, + } + } +} diff --git a/apps/web/components/connected/UmbodsmadurSkuldara/UmsCostOfLivingCalculator.css.ts b/apps/web/components/connected/UmbodsmadurSkuldara/UmsCostOfLivingCalculator.css.ts new file mode 100644 index 000000000000..221331cc3188 --- /dev/null +++ b/apps/web/components/connected/UmbodsmadurSkuldara/UmsCostOfLivingCalculator.css.ts @@ -0,0 +1,16 @@ +import { style } from '@vanilla-extract/css' + +import { theme } from '@island.is/island-ui/theme' + +export const readOnlyValues = style({ + padding: '8px 16px 8px 8px', + boxShadow: `inset 0 0 0 1px ${theme.color.blue200}`, + borderRadius: '8px', +}) + +export const total = style({ + padding: '8px 16px 8px 8px', + boxShadow: `inset 0 0 0 1px ${theme.color.blue200}`, + borderRadius: '8px', + background: 'white', +}) diff --git a/apps/web/components/connected/UmbodsmadurSkuldara/UmsCostOfLivingCalculator.tsx b/apps/web/components/connected/UmbodsmadurSkuldara/UmsCostOfLivingCalculator.tsx index e08cf112faa3..9d03a50583c0 100644 --- a/apps/web/components/connected/UmbodsmadurSkuldara/UmsCostOfLivingCalculator.tsx +++ b/apps/web/components/connected/UmbodsmadurSkuldara/UmsCostOfLivingCalculator.tsx @@ -1,5 +1,6 @@ import { useMemo, useState } from 'react' import { Control, Controller, useForm } from 'react-hook-form' +import { useIntl } from 'react-intl' import { PropsValue } from 'react-select' import { useQuery } from '@apollo/client/react' @@ -13,11 +14,12 @@ import { Text, } from '@island.is/island-ui/core' import { InputController } from '@island.is/shared/form-fields' -import { ConnectedComponent, Query } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' -import { useI18n } from '@island.is/web/i18n' +import { Query } from '@island.is/web/graphql/schema' import { GET_UMS_COST_OF_LIVING_CALCULATOR } from '@island.is/web/screens/queries/UmsCostOfLivingCalculator' +import { translation as translationStrings } from './translation.strings' +import * as styles from './UmsCostOfLivingCalculator.css' + interface CalculatedFieldWrapperProps { title: string value: number | undefined @@ -58,11 +60,15 @@ const CalculatedFieldWrapper = ({ }: CalculatedFieldWrapperProps) => { return ( <Stack space={1}> - <Text variant="eyebrow" fontWeight="semiBold"> - {title} - </Text> - <Box paddingLeft={2}> - <Text fontWeight="semiBold">{numberFormatter.format(value ?? 0)}</Text> + <Box className={styles.readOnlyValues}> + <Text variant="eyebrow" fontWeight="semiBold"> + {title} + </Text> + <Box paddingLeft={2}> + <Text fontWeight="semiBold"> + {numberFormatter.format(value ?? 0)} + </Text> + </Box> </Box> </Stack> ) @@ -78,15 +84,10 @@ interface CostOfLivingInput { otherExpenses?: string } -interface CostOfLivingCalculatorProps { - slice: ConnectedComponent -} - type DataState = 'loading' | 'loaded' | 'error' -const UmsCostOfLivingCalculator = ({ slice }: CostOfLivingCalculatorProps) => { - const n = useNamespace(slice.json ?? {}) - const { activeLocale } = useI18n() +const UmsCostOfLivingCalculator = () => { + const { formatMessage } = useIntl() const methods = useForm<CostOfLivingInput>({ defaultValues: { familySize: '1+0' }, }) @@ -109,196 +110,109 @@ const UmsCostOfLivingCalculator = ({ slice }: CostOfLivingCalculatorProps) => { const costOfLivingOptions = useMemo(() => { return [ { - label: n( - 'individualLabel', - activeLocale === 'is' ? 'Einstaklingur' : 'Individual', - ), + label: formatMessage(translationStrings.individualLabel), options: [ { - label: n( - 'individualChildlessLabel', - activeLocale === 'is' - ? 'Einstaklingur, barnlaus' - : 'Individual, childless', - ), + label: formatMessage(translationStrings.individualChildlessLabel), value: '1+0', }, { - label: n( - 'individualOneChildLabel', - activeLocale === 'is' - ? 'Einstaklingur með 1 barn' - : 'Individual with 1 child', - ), + label: formatMessage(translationStrings.individualOneChildLabel), value: '1+1', }, { - label: n( - 'individualTwoChildrenLabel', - activeLocale === 'is' - ? 'Einstaklingur með 2 börn' - : 'Individual with 2 children', - ), + label: formatMessage(translationStrings.individualTwoChildrenLabel), value: '1+2', }, { - label: n( - 'individualThreeChildrenLabel', - activeLocale === 'is' - ? 'Einstaklingur með 3 börn' - : 'Individual with 3 children', + label: formatMessage( + translationStrings.individualThreeChildrenLabel, ), value: '1+3', }, { - label: n( - 'individualFourChildrenLabel', - activeLocale === 'is' - ? 'Einstaklingur með 4 börn' - : 'Individual with 4 children', + label: formatMessage( + translationStrings.individualFourChildrenLabel, ), value: '1+4', }, { - label: n( - 'individualFiveChildrenLabel', - activeLocale === 'is' - ? 'Einstaklingur með 5 börn' - : 'Individual with 5 children', + label: formatMessage( + translationStrings.individualFiveChildrenLabel, ), value: '1+5', }, { - label: n( - 'individualSixChildrenLabel', - activeLocale === 'is' - ? 'Einstaklingur með 6 börn' - : 'Individual with 6 children', - ), + label: formatMessage(translationStrings.individualSixChildrenLabel), value: '1+6', }, { - label: n( - 'individualSevenChildrenLabel', - activeLocale === 'is' - ? 'Einstaklingur með 7 börn' - : 'Individual with 7 children', + label: formatMessage( + translationStrings.individualSevenChildrenLabel, ), value: '1+7', }, { - label: n( - 'individualEightChildrenLabel', - activeLocale === 'is' - ? 'Einstaklingur með 8 börn' - : 'Individual with 8 children', + label: formatMessage( + translationStrings.individualEightChildrenLabel, ), value: '1+8', }, { - label: n( - 'individualNineChildrenLabel', - activeLocale === 'is' - ? 'Einstaklingur með 9 börn' - : 'Individual with 9 children', + label: formatMessage( + translationStrings.individualNineChildrenLabel, ), value: '1+9', }, ], }, { - label: n('coupleLabel', activeLocale === 'is' ? 'Hjón' : 'Couple'), + label: formatMessage(translationStrings.coupleLabel), options: [ { - label: n( - 'coupleChildlessLable', - activeLocale === 'is' ? 'Hjón, barnlaus' : 'Couple, childless', - ), + label: formatMessage(translationStrings.coupleChildlessLable), value: '2+0', }, { - label: n( - 'coupleOneChildLabel', - activeLocale === 'is' ? 'Hjón með 1 barn' : 'Couple with 1 child', - ), + label: formatMessage(translationStrings.coupleOneChildLabel), value: '2+1', }, { - label: n( - 'coupleTwoChildrenLable', - activeLocale === 'is' - ? 'Hjón með 2 börn' - : 'Couple with 2 children', - ), + label: formatMessage(translationStrings.coupleTwoChildrenLable), value: '2+2', }, { - label: n( - 'coupleThreeChildrenLable', - activeLocale === 'is' - ? 'Hjón með 3 börn' - : 'Couple with 3 children', - ), + label: formatMessage(translationStrings.coupleThreeChildrenLable), value: '2+3', }, { - label: n( - 'coupleFourChildrenLable', - activeLocale === 'is' - ? 'Hjón með 4 börn' - : 'Couple with 4 children', - ), + label: formatMessage(translationStrings.coupleFourChildrenLable), value: '2+4', }, { - label: n( - 'coupleFiveChildrenLable', - activeLocale === 'is' - ? 'Hjón með 5 börn' - : 'Couple with 5 children', - ), + label: formatMessage(translationStrings.coupleFiveChildrenLable), value: '2+5', }, { - label: n( - 'coupleSixChildrenLable', - activeLocale === 'is' - ? 'Hjón með 6 barn' - : 'Couple with 6 children', - ), + label: formatMessage(translationStrings.coupleSixChildrenLable), value: '2+6', }, { - label: n( - 'coupleSevenChildrenLable', - activeLocale === 'is' - ? 'Hjón með 7 börn' - : 'Couple with 7 children', - ), + label: formatMessage(translationStrings.coupleSevenChildrenLable), value: '2+7', }, { - label: n( - 'coupleEightChildrenLable', - activeLocale === 'is' - ? 'Hjón með 8 börn' - : 'Couple with 8 children', - ), + label: formatMessage(translationStrings.coupleEightChildrenLable), value: '2+8', }, { - label: n( - 'coupleNineChildrenLable', - activeLocale === 'is' - ? 'Hjón með 9 börn' - : 'Couple with 9 children', - ), + label: formatMessage(translationStrings.coupleNineChildrenLable), value: '2+9', }, ], }, ] - }, []) + }, [formatMessage]) const getSelectedValues = (option: string | undefined) => { if (costOfLivingCalculator) { @@ -370,13 +284,8 @@ const UmsCostOfLivingCalculator = ({ slice }: CostOfLivingCalculatorProps) => { )} {dataState === 'error' && ( <AlertMessage - title={n('errorTitle', 'Villa')} - message={n( - 'errorMessage', - activeLocale === 'is' - ? 'Ekki tókst að sækja gögn fyrir framfærslu reiknivél.' - : 'Failed to retieve data for cost of living calculator', - )} + title={formatMessage(translationStrings.errorTitle)} + message={formatMessage(translationStrings.errorMessage)} type="error" /> )} @@ -384,10 +293,7 @@ const UmsCostOfLivingCalculator = ({ slice }: CostOfLivingCalculatorProps) => { <Stack space={5}> <Stack space={2}> <Text variant="h2"> - {n( - 'costOfLivingCalculatorTitle', - activeLocale === 'is' ? 'Fjölskyldustærð' : 'Family size', - )} + {formatMessage(translationStrings.costOfLivingCalculatorTitle)} </Text> <Controller control={control} @@ -395,10 +301,7 @@ const UmsCostOfLivingCalculator = ({ slice }: CostOfLivingCalculatorProps) => { defaultValue="1+0" render={({ field: { onChange, value } }) => ( <Select - label={n( - 'familySizeLabel', - activeLocale === 'is' ? 'Fjölskyldustærð' : 'Family size', - )} + label={formatMessage(translationStrings.familySizeLabel)} options={costOfLivingOptions} value={selectValue(value)} size="sm" @@ -412,69 +315,35 @@ const UmsCostOfLivingCalculator = ({ slice }: CostOfLivingCalculatorProps) => { </Stack> <Stack space={3}> <Text variant="h3"> - {n( - 'preCalculatedTitle', - activeLocale === 'is' - ? 'Framfærsluviðmið umboðsmanns skuldara' - : 'Subsistence criteria', - )} + {formatMessage(translationStrings.preCalculatedTitle)} </Text> <CalculatedFieldWrapper - title={n( - 'foodLabel', - activeLocale === 'is' - ? 'Matur, hreinlætisvörur og heimilisbúnaður' - : 'Food, hygiene products and household equipment', - )} + title={formatMessage(translationStrings.foodLabel)} value={familySizeData?.food} /> <CalculatedFieldWrapper - title={n( - 'clothesLabel', - activeLocale === 'is' ? 'Föt og skór' : 'Clothes and shoes', - )} + title={formatMessage(translationStrings.clothesLabel)} value={familySizeData?.clothes} /> <CalculatedFieldWrapper - title={n( - 'medicalCostLabel', - activeLocale === 'is' - ? 'Læknis- og lyfjakostnaður' - : 'Medical and pharmaceutical costs', - )} + title={formatMessage(translationStrings.medicalCostLabel)} value={familySizeData?.medicalCost} /> <CalculatedFieldWrapper - title={n( - 'hobbyLabel', - activeLocale === 'is' ? 'Tómstundir' : 'Hobby', - )} + title={formatMessage(translationStrings.hobbyLabel)} value={familySizeData?.hobby} /> <CalculatedFieldWrapper - title={n( - 'communicationLabel', - activeLocale === 'is' - ? 'Samskiptakostnaður' - : 'Communication expenses', - )} + title={formatMessage(translationStrings.communicationLabel)} value={familySizeData?.communication} /> <CalculatedFieldWrapper - title={n( - 'transportLabel', - activeLocale === 'is' ? 'Samgöngur' : 'Transport', - )} + title={formatMessage(translationStrings.transportLabel)} value={familySizeData?.transport} /> <CalculatedFieldWrapper - title={n( - 'otherServicesLabel', - activeLocale === 'is' - ? 'Önnur þjónusta fyrir heimili' - : 'Other household expenses', - )} + title={formatMessage(translationStrings.otherServicesLabel)} value={familySizeData?.otherServices} /> </Stack> @@ -482,20 +351,10 @@ const UmsCostOfLivingCalculator = ({ slice }: CostOfLivingCalculatorProps) => { <Box> <Stack space={2}> <Text variant="h4"> - {n( - 'calculatorInputsTitle', - activeLocale === 'is' - ? 'Önnur mánaðarleg útgjöld' - : 'Other monthly expenses', - )} + {formatMessage(translationStrings.calculatorInputsTitle)} </Text> <Text> - {n( - 'calculatorInputsIntro', - activeLocale === 'is' - ? 'Fyrir önnur útgjöld notar umboðsmaður skuldara ekki viðmið, heldur tekur mið af raunútgjöldum hverrar fjölskyldu' - : 'For other expenses, the debtor`s representative does not use criteria, but takes into account the actual expenses of each family', - )} + {formatMessage(translationStrings.calculatorInputsIntro)} </Text> </Stack> </Box> @@ -504,71 +363,56 @@ const UmsCostOfLivingCalculator = ({ slice }: CostOfLivingCalculatorProps) => { <InputControllerFieldWrapper control={control} nameAndId={'houseRent' as keyof CostOfLivingInput} - label={n( - 'houseRentLabel', - activeLocale === 'is' ? 'Húsaleiga' : 'House rent', - )} + label={formatMessage(translationStrings.houseRentLabel)} /> <InputControllerFieldWrapper control={control} nameAndId={'electricity' as keyof CostOfLivingInput} - label={n( - 'electricityLabel', - activeLocale === 'is' - ? 'Rafmagn, hiti og hússjóður' - : 'Electricity, house heating and housing fund ', - )} + label={formatMessage(translationStrings.electricityLabel)} /> <InputControllerFieldWrapper control={control} nameAndId={'propertyTaxes' as keyof CostOfLivingInput} - label={n( - 'propertyTaxesLabel', - activeLocale === 'is' - ? 'Fasteigna-/vatns-/frv.gjöld' - : 'Property taxes', - )} + label={formatMessage(translationStrings.propertyTaxesLabel)} /> <InputControllerFieldWrapper control={control} nameAndId={'propertyInsurances' as keyof CostOfLivingInput} - label={n( - 'propertyInsurancesLabel', - activeLocale === 'is' - ? 'Tryggingar, aðrar en bílatryggingar' - : 'Insurances, other than car insurance', + label={formatMessage( + translationStrings.propertyInsurancesLabel, )} /> <InputControllerFieldWrapper control={control} nameAndId={'schoolAndDayCare' as keyof CostOfLivingInput} - label={n( - 'schoolAndDayCareLabel', - activeLocale === 'is' - ? 'Skóli og dagvistun' - : 'School and day care', + label={formatMessage( + translationStrings.schoolAndDayCareLabel, )} /> <InputControllerFieldWrapper control={control} nameAndId={'otherExpenses' as keyof CostOfLivingInput} - label={n( - 'otherExpensesLabel', - activeLocale === 'is' - ? 'Önnur útgjöld' - : 'Other expenses', - )} + label={formatMessage(translationStrings.otherExpensesLabel)} /> </Stack> </Box> </Stack> - - <Text variant="default" fontWeight="semiBold"> - {n('totalText', activeLocale === 'is' ? 'Samtals' : 'Total')} - {': '} - {numberFormatter.format(getTotal())}{' '} - {n('currencyText', activeLocale === 'is' ? 'krónur' : 'ISK')} - </Text> + <Stack space={2}> + <Text variant="h3" fontWeight="semiBold"> + {formatMessage(translationStrings.totalText)} + </Text> + <Box className={styles.total}> + <Text variant="eyebrow" fontWeight="semiBold" color="blue400"> + {formatMessage(translationStrings.totalText)} + </Text> + <Box paddingLeft={2} textAlign="right"> + <Text fontWeight="semiBold"> + {numberFormatter.format(getTotal())}{' '} + {formatMessage(translationStrings.currencyText)} + </Text> + </Box> + </Box> + </Stack> </Stack> )} </Box> diff --git a/apps/web/components/connected/UmbodsmadurSkuldara/translation.strings.ts b/apps/web/components/connected/UmbodsmadurSkuldara/translation.strings.ts new file mode 100644 index 000000000000..8840340b3d5c --- /dev/null +++ b/apps/web/components/connected/UmbodsmadurSkuldara/translation.strings.ts @@ -0,0 +1,225 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + individualLabel: { + id: 'web.UmsCostOfLivingCalculator:individualLabel', + defaultMessage: 'Einstaklingur', + description: 'Label fyrir einstaklingur group', + }, + individualChildlessLabel: { + id: 'web.UmsCostOfLivingCalculator:individualChildlessLabel', + defaultMessage: 'Einstaklingur, barnlaus', + description: 'Label fyrir einstakling án barns valmöguleika', + }, + individualOneChildLabel: { + id: 'web.UmsCostOfLivingCalculator:individualOneChildLabel', + defaultMessage: 'Einstaklingur með 1 barn', + description: 'Label fyrir einstakling með 1 barn valmöguleika', + }, + individualTwoChildrenLabel: { + id: 'web.UmsCostOfLivingCalculator:individualTwoChildrenLabel', + defaultMessage: 'Einstaklingur með 2 börn', + description: 'Label fyrir einstakling með 2 börn valmöguleika', + }, + individualThreeChildrenLabel: { + id: 'web.UmsCostOfLivingCalculator:individualThreeChildrenLabel', + defaultMessage: 'Einstaklingur með 3 börn', + description: 'Label fyrir einstakling með 3 börn valmöguleika', + }, + individualFourChildrenLabel: { + id: 'web.UmsCostOfLivingCalculator:individualFourChildrenLabel', + defaultMessage: 'Einstaklingur með 4 börn', + description: 'Label fyrir einstakling með 4 börn valmöguleika', + }, + individualFiveChildrenLabel: { + id: 'web.UmsCostOfLivingCalculator:individualFiveChildrenLabel', + defaultMessage: 'Einstaklingur með 5 börn', + description: 'Label fyrir einstakling með 5 börn valmöguleika', + }, + individualSixChildrenLabel: { + id: 'web.UmsCostOfLivingCalculator:individualSixChildrenLabel', + defaultMessage: 'Einstaklingur með 6 börn', + description: 'Label fyrir einstakling með 6 börn valmöguleika', + }, + individualSevenChildrenLabel: { + id: 'web.UmsCostOfLivingCalculator:individualSevenChildrenLabel', + defaultMessage: 'Einstaklingur með 7 börn', + description: 'Label fyrir einstakling með 7 börn valmöguleika', + }, + individualEightChildrenLabel: { + id: 'web.UmsCostOfLivingCalculator:individualEightChildrenLabel', + defaultMessage: 'Einstaklingur með 8 börn', + description: 'Label fyrir einstakling með 8 börn valmöguleika', + }, + individualNineChildrenLabel: { + id: 'web.UmsCostOfLivingCalculator:individualNineChildrenLabel', + defaultMessage: 'Einstaklingur með 9 börn', + description: 'Label fyrir einstakling með 9 börn valmöguleika', + }, + coupleLabel: { + id: 'web.UmsCostOfLivingCalculator:coupleLabel', + defaultMessage: 'Hjón', + description: 'Label fyrir hjón group', + }, + coupleChildlessLable: { + id: 'web.UmsCostOfLivingCalculator:coupleChildlessLable', + defaultMessage: 'Hjón, barnlaus', + description: 'Label fyrir barnlaus hjón valmöguleika', + }, + coupleOneChildLabel: { + id: 'web.UmsCostOfLivingCalculator:coupleOneChildLabel', + defaultMessage: 'Hjón með 1 barn', + description: 'Label fyrir hjón með 1 barn valmöguleika', + }, + coupleTwoChildrenLable: { + id: 'web.UmsCostOfLivingCalculator:coupleTwoChildrenLable', + defaultMessage: 'Hjón með 2 börn', + description: 'Label fyrir hjón með 2 börn valmöguleika', + }, + coupleThreeChildrenLable: { + id: 'web.UmsCostOfLivingCalculator:coupleThreeChildrenLable', + defaultMessage: 'Hjón með 3 börn', + description: 'Label fyrir hjón með 3 börn valmöguleika', + }, + coupleFourChildrenLable: { + id: 'web.UmsCostOfLivingCalculator:coupleFourChildrenLable', + defaultMessage: 'Hjón með 4 börn', + description: 'Label fyrir hjón með 4 börn valmöguleika', + }, + coupleFiveChildrenLable: { + id: 'web.UmsCostOfLivingCalculator:coupleFiveChildrenLable', + defaultMessage: 'Hjón með 5 börn', + description: 'Label fyrir hjón með 5 börn valmöguleika', + }, + coupleSixChildrenLable: { + id: 'web.UmsCostOfLivingCalculator:coupleSixChildrenLable', + defaultMessage: 'Hjón með 6 börn', + description: 'Label fyrir hjón með 6 börn valmöguleika', + }, + coupleSevenChildrenLable: { + id: 'web.UmsCostOfLivingCalculator:coupleSevenChildrenLable', + defaultMessage: 'Hjón með 7 börn', + description: 'Label fyrir hjón með 7 börn valmöguleika', + }, + coupleEightChildrenLable: { + id: 'web.UmsCostOfLivingCalculator:coupleEightChildrenLable', + defaultMessage: 'Hjón með 8 börn', + description: 'Label fyrir hjón með 8 börn valmöguleika', + }, + coupleNineChildrenLable: { + id: 'web.UmsCostOfLivingCalculator:coupleNineChildrenLable', + defaultMessage: 'Hjón með 9 börn', + description: 'Label fyrir hjón með 9 börn valmöguleika', + }, + errorTitle: { + id: 'web.UmsCostOfLivingCalculator:errorTitle', + defaultMessage: 'Villa', + description: 'Titill fyrir villu', + }, + errorMessage: { + id: 'web.UmsCostOfLivingCalculator:errorMessage', + defaultMessage: 'Ekki tókst að sækja gögn fyrir framfærslu reiknivél.', + description: 'Villuskilaboð', + }, + costOfLivingCalculatorTitle: { + id: 'web.UmsCostOfLivingCalculator:costOfLivingCalculatorTitle', + defaultMessage: 'Fjölskyldustærð', + description: 'Titill efst á framfærslu reiknivél', + }, + familySizeLabel: { + id: 'web.UmsCostOfLivingCalculator:familySizeLabel', + defaultMessage: 'Fjölskyldustærð', + description: 'Label á fjölskyldu stærð input reit', + }, + preCalculatedTitle: { + id: 'web.UmsCostOfLivingCalculator:preCalculatedTitle', + defaultMessage: 'Framfærsluviðmið umboðsmanns skuldara', + description: 'Titill fyrir ofan fyrirfram reiknuðu reitina', + }, + foodLabel: { + id: 'web.UmsCostOfLivingCalculator:foodLabel', + defaultMessage: 'Matur, hreinlætisvörur og heimilisbúnaður', + description: 'Matur, hreinlætisvörur og heimilisbúnaður', + }, + clothesLabel: { + id: 'web.UmsCostOfLivingCalculator:clothesLabel', + defaultMessage: 'Föt og skór', + description: 'Föt og skór', + }, + medicalCostLabel: { + id: 'web.UmsCostOfLivingCalculator:medicalCostLabel', + defaultMessage: 'Læknis- og lyfjakostnaður', + description: 'Læknis- og lyfjakostnaður', + }, + hobbyLabel: { + id: 'web.UmsCostOfLivingCalculator:hobbyLabel', + defaultMessage: 'Tómstundir', + description: 'Tómstundir', + }, + communicationLabel: { + id: 'web.UmsCostOfLivingCalculator:communicationLabel', + defaultMessage: 'Samskiptakostnaður', + description: 'Samskiptakostnaður', + }, + transportLabel: { + id: 'web.UmsCostOfLivingCalculator:transportLabel', + defaultMessage: 'Samgöngur', + description: 'Samgöngur', + }, + otherServicesLabel: { + id: 'web.UmsCostOfLivingCalculator:otherServicesLabel', + defaultMessage: 'Önnur þjónusta fyrir heimili', + description: 'Önnur þjónusta fyrir heimili', + }, + calculatorInputsTitle: { + id: 'web.UmsCostOfLivingCalculator:calculatorInputsTitle', + defaultMessage: 'Önnur mánaðarleg útgjöld', + description: 'Titill fyrir ofan önnur mánaðarleg útgjöld', + }, + calculatorInputsIntro: { + id: 'web.UmsCostOfLivingCalculator:calculatorInputsIntro', + defaultMessage: + 'Fyrir önnur útgjöld notar umboðsmaður skuldara ekki viðmið, heldur tekur mið af raunútgjöldum hverrar fjölskyldu', + description: 'Inngangur fyrir ofan önnur mánaðarleg útgjöld', + }, + houseRentLabel: { + id: 'web.UmsCostOfLivingCalculator:houseRentLabel', + defaultMessage: 'Húsaleiga', + description: 'Húsaleiga', + }, + electricityLabel: { + id: 'web.UmsCostOfLivingCalculator:electricityLabel', + defaultMessage: 'Rafmagn, hiti og hússjóður', + description: 'Rafmagn, hiti og hússjóður', + }, + propertyTaxesLabel: { + id: 'web.UmsCostOfLivingCalculator:propertyTaxesLabel', + defaultMessage: 'Fasteigna-,vatns-,fráveitugjöld', + description: 'Fasteigna-,vatns-,fráveitugjöld', + }, + propertyInsurancesLabel: { + id: 'web.UmsCostOfLivingCalculator:propertyInsurancesLabel', + defaultMessage: 'Tryggingar, aðrar en bílatryggingar', + description: 'Tryggingar, aðrar en bílatryggingar', + }, + schoolAndDayCareLabel: { + id: 'web.UmsCostOfLivingCalculator:schoolAndDayCareLabel', + defaultMessage: 'Skóli og dagvistun', + description: 'Skóli og dagvistun', + }, + otherExpensesLabel: { + id: 'web.UmsCostOfLivingCalculator:otherExpensesLabel', + defaultMessage: 'Önnur útgjöld', + description: 'Önnur útgjöld', + }, + totalText: { + id: 'web.UmsCostOfLivingCalculator:totalText', + defaultMessage: 'Samtals', + description: 'Titill og label fyrir útreikning', + }, + currencyText: { + id: 'web.UmsCostOfLivingCalculator:currencyText', + defaultMessage: 'krónur', + description: 'Gjaldmiðils viðskeyti á samanlögðum útreikning', + }, +}) diff --git a/apps/web/components/connected/fiskistofa/SelectedShip/SelectedShip.tsx b/apps/web/components/connected/fiskistofa/SelectedShip/SelectedShip.tsx index f45f39811f03..8799026b56b4 100644 --- a/apps/web/components/connected/fiskistofa/SelectedShip/SelectedShip.tsx +++ b/apps/web/components/connected/fiskistofa/SelectedShip/SelectedShip.tsx @@ -1,24 +1,22 @@ import { useEffect, useState } from 'react' +import { useIntl } from 'react-intl' import { useRouter } from 'next/router' import { useLazyQuery } from '@apollo/client' + import { Box, Inline, LoadingDots, Text } from '@island.is/island-ui/core' -import { useNamespace } from '@island.is/web/hooks' import { GET_SINGLE_SHIP } from '@island.is/web/screens/queries/Fiskistofa' +import { translation as translationStrings } from './translation.strings' import * as styles from './SelectedShip.css' -interface SelectedShipProps { - namespace?: Record<string, string> -} - -const SelectedShip = ({ namespace }: SelectedShipProps) => { +const SelectedShip = () => { const [shipNumber, setShipNumber] = useState<number | null>(null) const router = useRouter() // TODO: figure out how to not call endpoint when nothing is selected const [getSingleShip, { data, error, loading }] = useLazyQuery(GET_SINGLE_SHIP) - const n = useNamespace(namespace) + const { formatMessage } = useIntl() useEffect(() => { if (router.query.nr && !isNaN(Number(router.query.nr))) { @@ -47,7 +45,7 @@ const SelectedShip = ({ namespace }: SelectedShipProps) => { if (!data || error) { return ( <Box className={styles.container}> - <Text>{n('noShipSelected', 'Ekkert skip valið')}</Text> + <Text>{formatMessage(translationStrings.noShipSelected)}</Text> </Box> ) } @@ -58,7 +56,7 @@ const SelectedShip = ({ namespace }: SelectedShipProps) => { {ship?.name ? ( <Text variant="h2">{ship?.name}</Text> ) : ( - <Text>{n('shipCouldNotBeFetched', 'Ekki tókst að sækja skip')}</Text> + <Text>{formatMessage(translationStrings.shipCouldNotBeFetched)}</Text> )} <Box className={styles.shipNumber}> diff --git a/apps/web/components/connected/fiskistofa/SelectedShip/translation.strings.ts b/apps/web/components/connected/fiskistofa/SelectedShip/translation.strings.ts new file mode 100644 index 000000000000..45f2b495aa31 --- /dev/null +++ b/apps/web/components/connected/fiskistofa/SelectedShip/translation.strings.ts @@ -0,0 +1,14 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + noShipSelected: { + id: 'web.fiskistofaSelectedShip:noShipSelected', + defaultMessage: 'Ekkert skip valið', + description: 'Ekkert skip valið', + }, + shipCouldNotBeFetched: { + id: 'web.fiskistofaSelectedShip:shipCouldNotBeFetched', + defaultMessage: 'Ekki tókst að sækja skip', + description: 'Ekki tókst að sækja skip', + }, +}) diff --git a/apps/web/components/connected/fiskistofa/ShipSearch/ShipSearch.tsx b/apps/web/components/connected/fiskistofa/ShipSearch/ShipSearch.tsx index 0d0caff9fe0c..1b0b913f9bd7 100644 --- a/apps/web/components/connected/fiskistofa/ShipSearch/ShipSearch.tsx +++ b/apps/web/components/connected/fiskistofa/ShipSearch/ShipSearch.tsx @@ -1,6 +1,13 @@ import { useEffect, useState } from 'react' -import { useLazyQuery } from '@apollo/client' +import { useIntl } from 'react-intl' import { useRouter } from 'next/router' +import { useLazyQuery } from '@apollo/client' + +import { + FiskistofaShipBasicInfo as ShipBasicInfo, + FiskistofaShipBasicInfoResponse, + QueryFiskistofaGetShipsArgs as QueryGetShipsArgs, +} from '@island.is/api/schema' import { Box, Button, @@ -9,34 +16,13 @@ import { Table as T, Text, } from '@island.is/island-ui/core' -import { - QueryFiskistofaGetShipsArgs as QueryGetShipsArgs, - FiskistofaShipBasicInfo as ShipBasicInfo, - FiskistofaShipBasicInfoResponse, -} from '@island.is/api/schema' -import { GET_SHIPS_QUERY } from './queries' -import { useNamespace } from '@island.is/web/hooks' import { shouldLinkOpenInNewWindow } from '@island.is/shared/utils' -interface ShipSearchProps { - namespace: { - shipDetailsHref?: string - searchStringIsTooShort?: string - resultsFound?: string - search?: string - noResultsFound?: string - errorOccuredWhileFetchingShips?: string - shipNumber?: string - shipName?: string - operator?: string - typeOfVessel?: string - homePort?: string - shipSearchInputLabel?: string - } -} +import { GET_SHIPS_QUERY } from './queries' +import { translation as translationStrings } from './translation.strings' -const ShipSearch = ({ namespace }: ShipSearchProps) => { - const n = useNamespace(namespace) +const ShipSearch = () => { + const { formatMessage } = useIntl() const [nameInput, setNameInput] = useState('') const [nameInputDuringLastSearch, setNameInputDuringLastSearch] = useState('') @@ -45,15 +31,15 @@ const ShipSearch = ({ namespace }: ShipSearchProps) => { const router = useRouter() const getShipDetailsHref = (id: number) => { - const href = n( - 'shipDetailsHref', - '/v/gagnasidur-fiskistofu?selectedTab=skip', - ) as string + const href = formatMessage(translationStrings.shipDetailsHref) const [pathname, params] = href.split('?') const queryParams = new URLSearchParams(params) - queryParams.append(n('shipDetailsNumberQueryParam', 'nr'), String(id)) + queryParams.append( + formatMessage(translationStrings.shipDetailsNumberQueryParam), + String(id), + ) return `${pathname}?${queryParams.toString()}` } @@ -75,12 +61,7 @@ const ShipSearch = ({ namespace }: ShipSearchProps) => { const handleShipSearch = (nameInput: string) => { const nameInputIsNumber = !isNaN(Number(nameInput)) && nameInput.length > 0 if (!nameInputIsNumber && nameInput.length < 2) { - setInputError( - n( - 'searchStringIsTooShort', - 'Leitarstrengur þarf að vera a.m.k. 2 stafir', - ), - ) + setInputError(formatMessage(translationStrings.searchStringIsTooShort)) return } else { setInputError('') @@ -108,7 +89,7 @@ const ShipSearch = ({ namespace }: ShipSearchProps) => { <Box> <Input name="ship-search" - label={n('shipSearchInputLabel', 'Skipaskrárnúmer eða nafn skips')} + label={formatMessage(translationStrings.shipSearchInputLabel)} value={nameInput} onChange={(ev) => setNameInput(ev.target.value)} hasError={inputError.length > 0} @@ -126,7 +107,7 @@ const ShipSearch = ({ namespace }: ShipSearchProps) => { } onClick={() => handleShipSearch(nameInput)} > - {n('search', 'Leita')} + {formatMessage(translationStrings.search)} </Button> </Box> @@ -141,17 +122,14 @@ const ShipSearch = ({ namespace }: ShipSearchProps) => { </Box> {ships.length === 0 && called && !loading && !error && ( <Box display="flex" justifyContent="center"> - <Text>{n('noResultsFound', 'Engar niðurstöður fundust')}</Text> + <Text>{formatMessage(translationStrings.noResultsFound)}</Text> </Box> )} {error && ( <Box display="flex" justifyContent="center"> <Text> - {n( - 'errorOccuredWhileFetchingShips', - 'Villa kom upp við að leita eftir skipi', - )} + {formatMessage(translationStrings.errorOccuredWhileFetchingShips)} </Text> </Box> )} @@ -159,16 +137,26 @@ const ShipSearch = ({ namespace }: ShipSearchProps) => { {ships.length > 0 && ( <> <Text color="blue600"> - {n('resultsFound', 'Fjöldi skipa:')} {ships.length} + {formatMessage(translationStrings.resultsFound)} {ships.length} </Text> <T.Table> <T.Head> <T.Row> - <T.HeadData>{n('shipNumber', 'Skipnr.')}</T.HeadData> - <T.HeadData>{n('shipName', 'Nafn')}</T.HeadData> - <T.HeadData>{n('typeOfVessel', 'Útgerðarflokkur')}</T.HeadData> - <T.HeadData>{n('operator', 'Útgerð')}</T.HeadData> - <T.HeadData>{n('homePort', 'Heimahöfn')}</T.HeadData> + <T.HeadData> + {formatMessage(translationStrings.shipNumber)} + </T.HeadData> + <T.HeadData> + {formatMessage(translationStrings.shipName)} + </T.HeadData> + <T.HeadData> + {formatMessage(translationStrings.typeOfVessel)} + </T.HeadData> + <T.HeadData> + {formatMessage(translationStrings.operator)} + </T.HeadData> + <T.HeadData> + {formatMessage(translationStrings.homePort)} + </T.HeadData> </T.Row> </T.Head> <T.Body> diff --git a/apps/web/components/connected/fiskistofa/ShipSearch/translation.strings.ts b/apps/web/components/connected/fiskistofa/ShipSearch/translation.strings.ts new file mode 100644 index 000000000000..fc5c041fe9d1 --- /dev/null +++ b/apps/web/components/connected/fiskistofa/ShipSearch/translation.strings.ts @@ -0,0 +1,69 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + shipDetailsHref: { + id: 'web.fiskistofaShipSearch:shipDetailsHref', + defaultMessage: '/v/gagnasidur-fiskistofu?selectedTab=skip', + description: 'Slóða á valið skip', + }, + shipDetailsNumberQueryParam: { + id: 'web.fiskistofaShipSearch:shipDetailsNumberQueryParam', + defaultMessage: 'nr', + description: 'nr', + }, + searchStringIsTooShort: { + id: 'web.fiskistofaShipSearch:searchStringIsTooShort', + defaultMessage: 'Leitarstrengur þarf að vera a.m.k. 2 stafir', + description: 'Leitarstrengur þarf að vera a.m.k. 2 stafir', + }, + shipSearchInputLabel: { + id: 'web.fiskistofaShipSearch:shipSearchInputLabel', + defaultMessage: 'Skipaskrárnúmer eða nafn skips', + description: 'Skipaskrárnúmer eða nafn skips', + }, + search: { + id: 'web.fiskistofaShipSearch:search', + defaultMessage: 'Leita', + description: 'Leita', + }, + noResultsFound: { + id: 'web.fiskistofaShipSearch:noResultsFound', + defaultMessage: 'Engar niðurstöður fundust', + description: 'Engar niðurstöður fundust', + }, + errorOccuredWhileFetchingShips: { + id: 'web.fiskistofaShipSearch:errorOccuredWhileFetchingShips', + defaultMessage: 'Villa kom upp við að leita eftir skipi', + description: 'Texti fyrir villu skilaboð þegar ekki tekst að sækja gögn', + }, + resultsFound: { + id: 'web.fiskistofaShipSearch:resultsFound', + defaultMessage: 'Fjöldi skipa:', + description: 'Fjöldi skipa:', + }, + shipNumber: { + id: 'web.fiskistofaShipSearch:shipNumber', + defaultMessage: 'Skipnr.', + description: 'Skipa númer', + }, + shipName: { + id: 'web.fiskistofaShipSearch:shipName', + defaultMessage: 'Nafn', + description: 'Nafn', + }, + typeOfVessel: { + id: 'web.fiskistofaShipSearch:typeOfVessel', + defaultMessage: 'Útgerðarflokkur', + description: 'Útgerðarflokkur', + }, + operator: { + id: 'web.fiskistofaShipSearch:operator', + defaultMessage: 'Útgerð', + description: 'Útgerð', + }, + homePort: { + id: 'web.fiskistofaShipSearch:homePort', + defaultMessage: 'Heimahöfn', + description: 'Heimahöfn', + }, +}) diff --git a/apps/web/components/connected/fiskistofa/ShipSearchBoxedInput/ShipSearchBoxedInput.tsx b/apps/web/components/connected/fiskistofa/ShipSearchBoxedInput/ShipSearchBoxedInput.tsx index 2df70f0d2343..c2ed7667216f 100644 --- a/apps/web/components/connected/fiskistofa/ShipSearchBoxedInput/ShipSearchBoxedInput.tsx +++ b/apps/web/components/connected/fiskistofa/ShipSearchBoxedInput/ShipSearchBoxedInput.tsx @@ -1,5 +1,7 @@ import { useState } from 'react' +import { useIntl } from 'react-intl' import { useRouter } from 'next/router' + import { Box, BoxProps, @@ -11,11 +13,12 @@ import { Stack, Text, } from '@island.is/island-ui/core' -import { useNamespace } from '@island.is/web/hooks' +import { SpanType } from '@island.is/island-ui/core/types' +import { theme } from '@island.is/island-ui/theme' import { shouldLinkOpenInNewWindow } from '@island.is/shared/utils' import { useWindowSize } from '@island.is/web/hooks/useViewport' -import { theme } from '@island.is/island-ui/theme' -import { SpanType } from '@island.is/island-ui/core/types' + +import { translation as translationStrings } from './translation.strings' const INPUT_COLUMN_SPAN: SpanType = [ '12/12', @@ -40,20 +43,9 @@ const SEARCH_BUTTON_JUSTIFY_CONTENT: BoxProps['justifyContent'] = [ ] const SEARCH_BUTTON_MARGIN_TOP: ResponsiveSpace = [3, 3, 3, 3, 0] -interface ShipSearchBoxedInputProps { - namespace: { - shipDetailsHref?: string - shipSearchHref?: string - placeholder?: string - label?: string - title?: string - description?: string - } -} - -const ShipSearchBoxedInput = ({ namespace }: ShipSearchBoxedInputProps) => { +const ShipSearchBoxedInput = () => { const { width } = useWindowSize() - const n = useNamespace(namespace) + const { formatMessage } = useIntl() const [searchValue, setSearchValue] = useState('') const router = useRouter() @@ -61,10 +53,11 @@ const ShipSearchBoxedInput = ({ namespace }: ShipSearchBoxedInputProps) => { const searchValueIsNumber = !isNaN(Number(searchValue)) && searchValue.length > 0 if (searchValueIsNumber) { - const pathname = n('shipDetailsHref', '/v/gagnasidur-fiskistofu') + const pathname = formatMessage(translationStrings.shipDetailsHref) const query = { ...router.query, - [n('shipDetailsNumberQueryParam', 'nr')]: searchValue, + [formatMessage(translationStrings.shipDetailsNumberQueryParam)]: + searchValue, selectedTab: router.query?.selectedTab ?? 'skip', } @@ -84,20 +77,17 @@ const ShipSearchBoxedInput = ({ namespace }: ShipSearchBoxedInputProps) => { } else { const query = { ...router.query, name: searchValue } router.push({ - pathname: n('shipSearchHref', '/s/fiskistofa/skipaleit'), + pathname: formatMessage(translationStrings.shipSearchHref), query, }) } } - const label = n('label', 'Skipaskrárnúmer eða nafn skips') - const placeholder = n('placeholder', '') - const title = n('title', 'Skipaleit') - const description = n( - 'description', - 'Upplýsingar um skip, veiðiheimildir, landanir og fleira', - ) - const searchButtonText = n('searcButtonText', 'Leita') + const label = formatMessage(translationStrings.label) + const placeholder = formatMessage(translationStrings.placeholder) + const title = formatMessage(translationStrings.title) + const description = formatMessage(translationStrings.description) + const searchButtonText = formatMessage(translationStrings.searcButtonText) return ( <Box background="blue100" padding="containerGutter" borderRadius="large"> diff --git a/apps/web/components/connected/fiskistofa/ShipSearchBoxedInput/translation.strings.ts b/apps/web/components/connected/fiskistofa/ShipSearchBoxedInput/translation.strings.ts new file mode 100644 index 000000000000..7387a303d62b --- /dev/null +++ b/apps/web/components/connected/fiskistofa/ShipSearchBoxedInput/translation.strings.ts @@ -0,0 +1,44 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + shipDetailsHref: { + id: 'web.fiskistofaShipSearchBoxedInput:shipDetailsHref', + defaultMessage: '/v/gagnasidur-fiskistofu', + description: '/v/gagnasidur-fiskistofu', + }, + shipDetailsNumberQueryParam: { + id: 'web.fiskistofaShipSearchBoxedInput:shipDetailsNumberQueryParam', + defaultMessage: 'nr', + description: 'nr', + }, + shipSearchHref: { + id: 'web.fiskistofaShipSearchBoxedInput:shipSearchHref', + defaultMessage: '/s/fiskistofa/skipaleit', + description: '/s/fiskistofa/skipaleit', + }, + label: { + id: 'web.fiskistofaShipSearchBoxedInput:label', + defaultMessage: 'Skipaskrárnúmer eða nafn skips', + description: 'Skipaskrárnúmer eða nafn skips', + }, + placeholder: { + id: 'web.fiskistofaShipSearchBoxedInput:placeholder', + defaultMessage: '', + description: 'Placeholder', + }, + title: { + id: 'web.fiskistofaShipSearchBoxedInput:title', + defaultMessage: 'Skipaleit', + description: 'Skipaleit', + }, + description: { + id: 'web.fiskistofaShipSearchBoxedInput:description', + defaultMessage: 'Upplýsingar um skip, veiðiheimildir, landanir og fleira', + description: 'Upplýsingar um skip, veiðiheimildir, landanir og fleira', + }, + searcButtonText: { + id: 'web.fiskistofaShipSearchBoxedInput:searcButtonText', + defaultMessage: 'Leita', + description: 'Leita', + }, +}) diff --git a/apps/web/components/connected/fiskistofa/SidebarShipSearchInput/SidebarShipSearchInput.tsx b/apps/web/components/connected/fiskistofa/SidebarShipSearchInput/SidebarShipSearchInput.tsx index 51cc8559a804..a9ac05bfe9c8 100644 --- a/apps/web/components/connected/fiskistofa/SidebarShipSearchInput/SidebarShipSearchInput.tsx +++ b/apps/web/components/connected/fiskistofa/SidebarShipSearchInput/SidebarShipSearchInput.tsx @@ -1,20 +1,14 @@ import { useState } from 'react' +import { useIntl } from 'react-intl' import { useRouter } from 'next/router' + import { AsyncSearchInput, Box, Text } from '@island.is/island-ui/core' -import { useNamespace } from '@island.is/web/hooks' import { shouldLinkOpenInNewWindow } from '@island.is/shared/utils' -interface SidebarShipSearchInputProps { - namespace: { - shipDetailsHref?: string - shipSearchHref?: string - placeholder?: string - label?: string - } -} +import { translation as translationStrings } from './translation.strings' -const SidebarShipSearchInput = ({ namespace }: SidebarShipSearchInputProps) => { - const n = useNamespace(namespace) +const SidebarShipSearchInput = () => { + const { formatMessage } = useIntl() const [searchValue, setSearchValue] = useState('') const router = useRouter() const [hasFocus, setHasFocus] = useState(false) @@ -23,10 +17,11 @@ const SidebarShipSearchInput = ({ namespace }: SidebarShipSearchInputProps) => { const searchValueIsNumber = !isNaN(Number(searchValue)) && searchValue.length > 0 if (searchValueIsNumber) { - const pathname = n('shipDetailsHref', '/v/gagnasidur-fiskistofu') + const pathname = formatMessage(translationStrings.shipDetailsHref) const query = { ...router.query, - [n('shipDetailsNumberQueryParam', 'nr')]: searchValue, + [formatMessage(translationStrings.shipDetailsNumberQueryParam)]: + searchValue, selectedTab: router.query?.selectedTab ?? 'skip', } @@ -46,14 +41,14 @@ const SidebarShipSearchInput = ({ namespace }: SidebarShipSearchInputProps) => { } else { const query = { ...router.query, name: searchValue } router.push({ - pathname: n('shipSearchHref', '/s/fiskistofa/skipaleit'), + pathname: formatMessage(translationStrings.shipSearchHref), query, }) } } - const label = n('label', 'Skoða skip') - const placeholder = n('placeholder', 'Skipaskrárnúmer eða nafn') + const label = formatMessage(translationStrings.label) + const placeholder = formatMessage(translationStrings.placeholder) return ( <Box> diff --git a/apps/web/components/connected/fiskistofa/SidebarShipSearchInput/translation.strings.ts b/apps/web/components/connected/fiskistofa/SidebarShipSearchInput/translation.strings.ts new file mode 100644 index 000000000000..b08d248ab489 --- /dev/null +++ b/apps/web/components/connected/fiskistofa/SidebarShipSearchInput/translation.strings.ts @@ -0,0 +1,29 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + shipDetailsHref: { + id: 'web.fiskistofaSidebarShipSearchInput:shipDetailsHref', + defaultMessage: '/v/gagnasidur-fiskistofu', + description: '/v/gagnasidur-fiskistofu', + }, + shipDetailsNumberQueryParam: { + id: 'web.fiskistofaSidebarShipSearchInput:shipDetailsNumberQueryParam', + defaultMessage: 'nr', + description: 'nr', + }, + shipSearchHref: { + id: 'web.fiskistofaSidebarShipSearchInput:shipSearchHref', + defaultMessage: '/s/fiskistofa/skipaleit', + description: '/s/fiskistofa/skipaleit', + }, + label: { + id: 'web.fiskistofaSidebarShipSearchInput:label', + defaultMessage: 'Skoða skip', + description: 'Skoða skip', + }, + placeholder: { + id: 'web.fiskistofaSidebarShipSearchInput:placeholder', + defaultMessage: 'Skipaskrárnúmer eða nafn', + description: 'Skipaskrárnúmer eða nafn', + }, +}) diff --git a/apps/web/components/connected/fiskistofa/calculators/CatchQuotaCalculator/CatchQuotaCalculator.tsx b/apps/web/components/connected/fiskistofa/calculators/CatchQuotaCalculator/CatchQuotaCalculator.tsx index 63b0bbbaf866..9908a6482890 100644 --- a/apps/web/components/connected/fiskistofa/calculators/CatchQuotaCalculator/CatchQuotaCalculator.tsx +++ b/apps/web/components/connected/fiskistofa/calculators/CatchQuotaCalculator/CatchQuotaCalculator.tsx @@ -1,7 +1,10 @@ -import { useRouter } from 'next/router' import { useEffect, useMemo, useRef, useState } from 'react' -import { useMachine } from '@xstate/react' +import { useIntl } from 'react-intl' import cn from 'classnames' +import { useRouter } from 'next/router' +import { useMachine } from '@xstate/react' + +import { FiskistofaExtendedCatchQuotaCategory as ExtendedCatchQuotaCategory } from '@island.is/api/schema' import { Box, Button, @@ -11,18 +14,17 @@ import { Tag, Text, } from '@island.is/island-ui/core' -import { useNamespace } from '@island.is/web/hooks' -import { FiskistofaExtendedCatchQuotaCategory as ExtendedCatchQuotaCategory } from '@island.is/api/schema' + import { formattedNumberStringToNumber, generateTimePeriodOptions, + isNumberBelowZero, + numberFormatter, sevenFractionDigitNumberFormatter, TimePeriodOption, - numberFormatter, - isNumberBelowZero, } from '../utils' -import { Context, machine, Event as EventType } from './machine' - +import { Context, Event as EventType, machine } from './machine' +import { translation as translationStrings } from './translation.strings' import * as styles from './CatchQuotaCalculator.css' const QUOTA_CHANGE_DEBOUNCE_TIME = 1000 @@ -81,13 +83,10 @@ interface QuotaStateChangeMetadata { timerId: number | null } -interface CatchQuotaCalculatorProps { - namespace: Record<string, string> -} - -const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { +const CatchQuotaCalculator = () => { const timePeriodOptions = useMemo(() => generateTimePeriodOptions(), []) - const n = useNamespace(namespace) + const { formatMessage } = useIntl() + const [selectedTimePeriod, setSelectedTimePeriod] = useState( timePeriodOptions[0], ) @@ -357,7 +356,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { <Select isDisabled={loading} size="sm" - label={n('timeperiod', 'Tímabil')} + label={formatMessage(translationStrings.timeperiod)} name="time-period-select" options={timePeriodOptions} value={selectedTimePeriod} @@ -373,7 +372,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { isDisabled={loading} value={emptyValue} size="sm" - label={n('addType', 'Bæta við tegund')} + label={formatMessage(translationStrings.addType)} name="tegund-fiskur-select" options={quotaTypes} // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -401,7 +400,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { size="small" disabled={loading} > - {n('reset', 'Frumstilla')} + {formatMessage(translationStrings.reset)} </Button> <Button onClick={calculate} @@ -413,14 +412,18 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { JSON.stringify(prevChangesRef.current) } > - {loading ? <LoadingDots /> : n('calculate', 'Reikna')} + {loading ? ( + <LoadingDots /> + ) : ( + formatMessage(translationStrings.calculate) + )} </Button> </Inline> </Box> </Box> <Text variant="small"> - {n('fishingTimePeriod', 'Fiskveiðiárið')} 01.09. + {formatMessage(translationStrings.fishingTimePeriod)} 01.09. {selectedTimePeriod.startYear} - 31.08. {selectedTimePeriod.endYear} </Text> @@ -450,7 +453,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { size="small" colorScheme="default" > - {n('clearAll', 'Hreinsa allt')} + {formatMessage(translationStrings.clearAll)} </Button> )} </Inline> @@ -458,7 +461,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { <Box width="full" textAlign="center"> {state.matches('error') && ( - <Text>{n('aflamarkError', 'Villa kom upp við að sækja gögn')}</Text> + <Text>{formatMessage(translationStrings.aflamarkError)}</Text> )} </Box> @@ -467,7 +470,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { <table className={styles.tableContainer}> <thead className={styles.tableHead}> <tr> - <th>{n('kvotategund', 'Kvótategund')}</th> + <th>{formatMessage(translationStrings.kvotategund)}</th> {state.context.data.catchQuotaCategories.map((category) => { return <th key={category.name}>{category.name}</th> })} @@ -475,7 +478,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { </thead> <tbody> <tr> - <td>{n('codEquivalentRatio', 'Þorskígildisstuðull')}</td> + <td>{formatMessage(translationStrings.codEquivalentRatio)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name}> {category.codEquivalent @@ -485,7 +488,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('uthlutun', 'Úthlutun')}</td> + <td>{formatMessage(translationStrings.uthlutun)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -498,7 +501,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('serstokUthlutun', 'Sérst. úthl.')}</td> + <td>{formatMessage(translationStrings.serstokUthlutun)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -515,7 +518,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('milliAra', 'Milli ára')}</td> + <td>{formatMessage(translationStrings.milliAra)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -530,7 +533,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('milliSkipa', 'Milli skipa')}</td> + <td>{formatMessage(translationStrings.milliSkipa)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -545,7 +548,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('aflamarksbreyting', 'Aflamarksbr.')}</td> + <td>{formatMessage(translationStrings.aflamarksbreyting)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name}> {category.id === 0 ? ( @@ -585,7 +588,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('aflamark', 'Aflamark')}</td> + <td>{formatMessage(translationStrings.aflamark)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -598,7 +601,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('afli', 'Afli')}</td> + <td>{formatMessage(translationStrings.afli)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -611,7 +614,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('aflabreyting', 'Aflabreyting')}</td> + <td>{formatMessage(translationStrings.aflabreyting)}</td> {state.context.data.catchQuotaCategories.map((category) => { return ( @@ -653,7 +656,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { })} </tr> <tr> - <td>{n('stada', 'Staða')}</td> + <td>{formatMessage(translationStrings.stada)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -666,7 +669,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('tilfaersla', 'Tilfærsla')}</td> + <td>{formatMessage(translationStrings.tilfaersla)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -681,7 +684,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('nyStada', 'Ný staða')}</td> + <td>{formatMessage(translationStrings.nyStada)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -694,7 +697,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('aNaestaAr', 'Á næsta ár')}</td> + <td>{formatMessage(translationStrings.aNaestaAr)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -707,7 +710,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('umframafli', 'Umframafli')}</td> + <td>{formatMessage(translationStrings.umframafli)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -718,7 +721,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { ))} </tr> <tr> - <td>{n('onotad', 'Ónotað')}</td> + <td>{formatMessage(translationStrings.onotad)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -733,7 +736,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { <tr> <td className={styles.visualSeparationLine}> - {n('heildaraflamark', 'Heildaraflamark')} + {formatMessage(translationStrings.heildaraflamark)} </td> {state.context.quotaData.map((category) => ( <td @@ -750,7 +753,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { </tr> <tr> - <td>{n('aaetladAflamark', 'Áætlað aflamark')}</td> + <td>{formatMessage(translationStrings.aaetladAflamark)}</td> {state.context.quotaData.map((category) => ( <td key={category.id}> {category.id === 0 ? ( @@ -782,7 +785,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { </tr> <tr> - <td>{n('hlutdeild', 'Hlutdeild')}</td> + <td>{formatMessage(translationStrings.hlutdeild)}</td> {state.context.quotaData.map((category) => ( <td key={category.id}> {category.id === 0 ? ( @@ -813,7 +816,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { </tr> <tr> - <td>{n('aNaestaArKvoti', 'Á næsta ár kvóti')}</td> + <td>{formatMessage(translationStrings.aNaestaArKvoti)}</td> {state.context.quotaData.map((category) => ( <td key={category.id}> @@ -844,7 +847,7 @@ const CatchQuotaCalculator = ({ namespace }: CatchQuotaCalculatorProps) => { </tr> <tr> - <td>{n('afNaestaArKvoti', 'Af næsta ári kvóti')}</td> + <td>{formatMessage(translationStrings.afNaestaArKvoti)}</td> {state.context.quotaData.map((category) => ( <td key={category.id}> {category.id === 0 ? ( diff --git a/apps/web/components/connected/fiskistofa/calculators/CatchQuotaCalculator/translation.strings.ts b/apps/web/components/connected/fiskistofa/calculators/CatchQuotaCalculator/translation.strings.ts new file mode 100644 index 000000000000..ceb98e4a062f --- /dev/null +++ b/apps/web/components/connected/fiskistofa/calculators/CatchQuotaCalculator/translation.strings.ts @@ -0,0 +1,144 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + timeperiod: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:timeperiod', + defaultMessage: 'Tímabil', + description: 'Tímabil', + }, + addType: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:addType', + defaultMessage: 'Bæta við tegund', + description: 'Bæta við tegund', + }, + reset: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:reset', + defaultMessage: 'Frumstilla', + description: 'Frumstilla', + }, + calculate: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:calculate', + defaultMessage: 'Reikna', + description: 'Reikna', + }, + fishingTimePeriod: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:fishingTimePeriod', + defaultMessage: 'Fiskveiðiárið', + description: 'Fiskveiðiárið', + }, + clearAll: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:clearAll', + defaultMessage: 'Hreinsa allt', + description: 'Hreinsa allt', + }, + aflamarkError: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:aflamarkError', + defaultMessage: 'Villa kom upp við að sækja gögn', + description: 'Texti sem birtist þegar villa kemur upp við að sækja gögn', + }, + kvotategund: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:kvotategund', + defaultMessage: 'Kvótategund', + description: 'Kvótategund', + }, + codEquivalentRatio: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:codEquivalentRatio', + defaultMessage: 'Þorskígildisstuðull', + description: 'Þorskígildisstuðull', + }, + uthlutun: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:uthlutun', + defaultMessage: 'Úthlutun', + description: 'Úthlutun', + }, + serstokUthlutun: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:serstokUthlutun', + defaultMessage: 'Sérst. úthl.', + description: 'Sérstök úthlutun', + }, + milliAra: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:milliAra', + defaultMessage: 'Milli ára', + description: 'Milli ára', + }, + milliSkipa: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:milliSkipa', + defaultMessage: 'Milli skipa', + description: 'Milli skipa', + }, + aflamarksbreyting: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:aflamarksbreyting', + defaultMessage: 'Aflamarksbr.', + description: 'Aflamarksbreyting', + }, + aflamark: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:aflamark', + defaultMessage: 'Aflamark', + description: 'Aflamark', + }, + afli: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:afli', + defaultMessage: 'Afli', + description: 'Afli', + }, + aflabreyting: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:aflabreyting', + defaultMessage: 'Aflabreyting', + description: 'Aflabreyting', + }, + stada: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:stada', + defaultMessage: 'Staða', + description: 'Staða', + }, + tilfaersla: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:tilfaersla', + defaultMessage: 'Tilfærsla', + description: 'Tilfærsla', + }, + nyStada: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:nyStada', + defaultMessage: 'Ný staða', + description: 'Ný staða', + }, + aNaestaAr: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:aNaestaAr', + defaultMessage: 'Á næsta ár', + description: 'Á næsta ár', + }, + umframafli: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:umframafli', + defaultMessage: 'Umframafli', + description: 'Umframafli', + }, + onotad: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:onotad', + defaultMessage: 'Ónotað', + description: 'Ónotað', + }, + heildaraflamark: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:heildaraflamark', + defaultMessage: 'Heildaraflamark', + description: 'Heildaraflamark', + }, + aaetladAflamark: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:aaetladAflamark', + defaultMessage: 'Áætlað aflamark', + description: 'Áætlað aflamark', + }, + hlutdeild: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:hlutdeild', + defaultMessage: 'Hlutdeild', + description: 'Hlutdeild', + }, + aNaestaArKvoti: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:aNaestaArKvoti', + defaultMessage: 'Á næsta ár kvóti', + description: 'Á næsta ár kvóti', + }, + afNaestaArKvoti: { + id: 'web.fiskistofaCalculatorsCatchQuotaCalculator:afNaestaArKvoti', + defaultMessage: 'Af næsta ári kvóti', + description: 'Af næsta ári kvóti', + }, +}) diff --git a/apps/web/components/connected/fiskistofa/calculators/StraddlingStockCalculator/StraddlingStockCalculator.tsx b/apps/web/components/connected/fiskistofa/calculators/StraddlingStockCalculator/StraddlingStockCalculator.tsx index 118283164280..c9645a528052 100644 --- a/apps/web/components/connected/fiskistofa/calculators/StraddlingStockCalculator/StraddlingStockCalculator.tsx +++ b/apps/web/components/connected/fiskistofa/calculators/StraddlingStockCalculator/StraddlingStockCalculator.tsx @@ -1,7 +1,10 @@ import { useEffect, useMemo, useRef, useState } from 'react' -import { useRouter } from 'next/router' +import { useIntl } from 'react-intl' import cn from 'classnames' +import { useRouter } from 'next/router' import { useMachine } from '@xstate/react' + +import { FiskistofaCatchQuotaCategory as CatchQuotaCategory } from '@island.is/api/schema' import { Box, Button, @@ -11,16 +14,15 @@ import { Tag, Text, } from '@island.is/island-ui/core' -import { FiskistofaCatchQuotaCategory as CatchQuotaCategory } from '@island.is/api/schema' -import { useNamespace } from '@island.is/web/hooks' + import { getYearOptions, - YearOption, - numberFormatter, isNumberBelowZero, + numberFormatter, + YearOption, } from '../utils' -import { machine, Context, Event as EventType } from './machine' - +import { Context, Event as EventType, machine } from './machine' +import { translation as translationStrings } from './translation.strings' import * as styles from './StraddlingStockCalculator.css' const emptyValue = { value: -1, label: '' } @@ -43,18 +45,12 @@ type ChangeErrors = Record< } > -interface StraddlingStockCalculatorProps { - namespace: Record<string, string> -} - -const StraddlingStockCalculator = ({ - namespace, -}: StraddlingStockCalculatorProps) => { +const StraddlingStockCalculator = () => { const yearOptions = useMemo(() => getYearOptions(), []) const [selectedYear, setSelectedYear] = useState<YearOption>(yearOptions[0]) const [changes, setChanges] = useState<Changes>({}) const [changeErrors, setChangeErrors] = useState<ChangeErrors>({}) - const n = useNamespace(namespace) + const { formatMessage } = useIntl() const prevChangesRef = useRef<Changes | null>(null) const [shipNumber, setShipNumber] = useState<number | null>(null) @@ -214,7 +210,7 @@ const StraddlingStockCalculator = ({ <Select isDisabled={loading} size="sm" - label={n('year', 'Ár')} + label={formatMessage(translationStrings.year)} name="year-select" options={yearOptions} value={selectedYear} @@ -230,7 +226,7 @@ const StraddlingStockCalculator = ({ isDisabled={loading} value={emptyValue} size="sm" - label={n('addType', 'Bæta við tegund')} + label={formatMessage(translationStrings.addType)} name="tegund-fiskur-select" options={quotaTypes} // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -258,7 +254,7 @@ const StraddlingStockCalculator = ({ size="small" disabled={loading} > - {n('reset', 'Frumstilla')} + {formatMessage(translationStrings.reset)} </Button> <Button onClick={calculate} @@ -270,14 +266,19 @@ const StraddlingStockCalculator = ({ JSON.stringify(prevChangesRef.current) } > - {loading ? <LoadingDots /> : n('calculate', 'Reikna')} + {loading ? ( + <LoadingDots /> + ) : ( + formatMessage(translationStrings.calculate) + )} </Button> </Inline> </Box> </Box> <Text variant="small"> - {n('calendarYear', 'Almanaksárið')} 01.01.{selectedYear.label} - 31.12. + {formatMessage(translationStrings.calendarYear)} 01.01. + {selectedYear.label} - 31.12. {selectedYear.label} </Text> @@ -306,7 +307,7 @@ const StraddlingStockCalculator = ({ size="small" colorScheme="default" > - {n('clearAll', 'Hreinsa allt')} + {formatMessage(translationStrings.clearAll)} </Button> )} </Inline> @@ -314,9 +315,7 @@ const StraddlingStockCalculator = ({ <Box width="full" textAlign="center"> {state.matches('error') && ( - <Text> - {n('deilistofnaError', 'Villa kom upp við að sækja gögn')} - </Text> + <Text>{formatMessage(translationStrings.deilistofnaError)}</Text> )} </Box> @@ -325,7 +324,7 @@ const StraddlingStockCalculator = ({ <table className={styles.tableContainer}> <thead className={styles.tableHead}> <tr> - <th>{n('kvotategund', 'Kvótategund')}</th> + <th>{formatMessage(translationStrings.kvotategund)}</th> {state.context.data.catchQuotaCategories.map((category) => { return <th key={category.name}>{category.name}</th> })} @@ -333,7 +332,7 @@ const StraddlingStockCalculator = ({ </thead> <tbody> <tr> - <td>{n('codEquivalentRatio', 'Þorskígildisstuðull')}</td> + <td>{formatMessage(translationStrings.codEquivalentRatio)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -349,7 +348,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('uthlutun', 'Úthlutun')}</td> + <td>{formatMessage(translationStrings.uthlutun)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -362,7 +361,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('serstokUthlutun', 'Sérst. úthl.')}</td> + <td>{formatMessage(translationStrings.serstokUthlutun)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -379,7 +378,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('milliAra', 'Milli ára')}</td> + <td>{formatMessage(translationStrings.milliAra)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -394,7 +393,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('milliSkipa', 'Milli skipa')}</td> + <td>{formatMessage(translationStrings.milliSkipa)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -409,7 +408,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('aflamarksbreyting', 'Aflamarksbr.')}</td> + <td>{formatMessage(translationStrings.aflamarksbreyting)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name}> {category.id === 0 ? ( @@ -449,7 +448,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('aflamark', 'Aflamark')}</td> + <td>{formatMessage(translationStrings.aflamark)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -462,7 +461,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('afli', 'Afli')}</td> + <td>{formatMessage(translationStrings.afli)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -475,7 +474,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('aflabreyting', 'Aflabreyting')}</td> + <td>{formatMessage(translationStrings.aflabreyting)}</td> {state.context.data.catchQuotaCategories.map((category) => { return ( @@ -517,7 +516,7 @@ const StraddlingStockCalculator = ({ })} </tr> <tr> - <td>{n('stada', 'Staða')}</td> + <td>{formatMessage(translationStrings.stada)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -530,7 +529,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('tilfaersla', 'Tilfærsla')}</td> + <td>{formatMessage(translationStrings.tilfaersla)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -545,7 +544,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('nyStada', 'Ný staða')}</td> + <td>{formatMessage(translationStrings.nyStada)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -558,7 +557,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('aNaestaAr', 'Á næsta ár')}</td> + <td>{formatMessage(translationStrings.aNaestaAr)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -571,7 +570,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('umframafli', 'Umframafli')}</td> + <td>{formatMessage(translationStrings.umframafli)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} @@ -582,7 +581,7 @@ const StraddlingStockCalculator = ({ ))} </tr> <tr> - <td>{n('onotad', 'Ónotað')}</td> + <td>{formatMessage(translationStrings.onotad)}</td> {state.context.data.catchQuotaCategories.map((category) => ( <td key={category.name} diff --git a/apps/web/components/connected/fiskistofa/calculators/StraddlingStockCalculator/translation.strings.ts b/apps/web/components/connected/fiskistofa/calculators/StraddlingStockCalculator/translation.strings.ts new file mode 100644 index 000000000000..b9f651b11ad5 --- /dev/null +++ b/apps/web/components/connected/fiskistofa/calculators/StraddlingStockCalculator/translation.strings.ts @@ -0,0 +1,120 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + year: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:year', + defaultMessage: 'Ár', + description: 'Ár', + }, + addType: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:addType', + defaultMessage: 'Bæta við tegund', + description: 'Bæta við tegund', + }, + reset: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:reset', + defaultMessage: 'Frumstilla', + description: 'Frumstilla', + }, + calculate: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:calculate', + defaultMessage: 'Reikna', + description: 'Reikna', + }, + calendarYear: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:calendarYear', + defaultMessage: 'Almanaksárið', + description: 'Almanaksárið', + }, + clearAll: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:clearAll', + defaultMessage: 'Hreinsa allt', + description: 'Hreinsa allt', + }, + deilistofnaError: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:deilistofnaError', + defaultMessage: 'Villa kom upp við að sækja gögn', + description: + 'Texti fyrir villu skilaboð sem birtast þegar ekki tekst að sækja gögn', + }, + kvotategund: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:kvotategund', + defaultMessage: 'Kvótategund', + description: 'Kvótategund', + }, + codEquivalentRatio: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:codEquivalentRatio', + defaultMessage: 'Þorskígildisstuðull', + description: 'Þorskígildisstuðull', + }, + uthlutun: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:uthlutun', + defaultMessage: 'Úthlutun', + description: 'Úthlutun', + }, + serstokUthlutun: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:serstokUthlutun', + defaultMessage: 'Sérst. úthl.', + description: 'Sérstök úthlutun', + }, + milliAra: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:milliAra', + defaultMessage: 'Milli ára', + description: 'Milli ára', + }, + milliSkipa: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:milliSkipa', + defaultMessage: 'Milli skipa', + description: 'Milli skipa', + }, + aflamarksbreyting: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:aflamarksbreyting', + defaultMessage: 'Aflamarksbr', + description: 'Aflamarksbreyting', + }, + aflamark: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:aflamark', + defaultMessage: 'Aflamark', + description: 'Aflamark', + }, + afli: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:afli', + defaultMessage: 'Afli', + description: 'Afli', + }, + aflabreyting: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:aflabreyting', + defaultMessage: 'Aflabreyting', + description: 'Aflabreyting', + }, + stada: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:stada', + defaultMessage: 'Staða', + description: 'Staða', + }, + tilfaersla: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:tilfaersla', + defaultMessage: 'Tilfærsla', + description: 'Tilfærsla', + }, + nyStada: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:nyStada', + defaultMessage: 'Ný staða', + description: 'Ný staða', + }, + aNaestaAr: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:aNaestaAr', + defaultMessage: 'Á næsta ár', + description: 'Á næsta ár', + }, + umframafli: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:umframafli', + defaultMessage: 'Umframafli', + description: 'Umframafli', + }, + onotad: { + id: 'web.fiskistofaCalculatorsStraddlingStockCalculator:onotad', + defaultMessage: 'Ónotað', + description: 'Ónotað', + }, +}) diff --git a/apps/web/components/connected/syslumenn/CardLists/AlcoholLicencesList/AlcoholLicencesList.tsx b/apps/web/components/connected/syslumenn/CardLists/AlcoholLicencesList/AlcoholLicencesList.tsx index 9a7bcb0ae61f..0f0ccb5074ae 100644 --- a/apps/web/components/connected/syslumenn/CardLists/AlcoholLicencesList/AlcoholLicencesList.tsx +++ b/apps/web/components/connected/syslumenn/CardLists/AlcoholLicencesList/AlcoholLicencesList.tsx @@ -1,33 +1,36 @@ import { FC, useState } from 'react' +import { useIntl } from 'react-intl' import { useQuery } from '@apollo/client/react' -import { GET_ALCOHOL_LICENCES_QUERY } from './queries' + +import { + AlertMessage, + Box, + Button, + GridColumn, + GridContainer, + GridRow, + Input, + LoadingDots, + Select, + Tag, + Text, +} from '@island.is/island-ui/core' +import { SyslumennListCsvExport } from '@island.is/web/components' import { AlcoholLicence, ConnectedComponent, Query, } from '@island.is/web/graphql/schema' +import { useDateUtils } from '@island.is/web/i18n/useDateUtils' + import { - prepareCsvString, - textSearch, getNormalizedSearchTerms, getValidPeriodRepresentation, + prepareCsvString, + textSearch, } from '../../utils' -import { - Box, - Button, - Tag, - LoadingDots, - Text, - Input, - AlertMessage, - Select, - GridContainer, - GridRow, - GridColumn, -} from '@island.is/island-ui/core' -import { SyslumennListCsvExport } from '@island.is/web/components' -import { useNamespace } from '@island.is/web/hooks' -import { useDateUtils } from '@island.is/web/i18n/useDateUtils' +import { GET_ALCOHOL_LICENCES_QUERY } from './queries' +import { translation as t } from './translation.strings' const DEFAULT_PAGE_SIZE = 10 @@ -40,10 +43,10 @@ type ListState = 'loading' | 'loaded' | 'error' const AlcoholLicencesList: FC< React.PropsWithChildren<AlcoholLicencesListProps> > = ({ slice }) => { - const n = useNamespace(slice.json ?? {}) + const { formatMessage } = useIntl() const { format } = useDateUtils() const PAGE_SIZE = slice?.configJson?.pageSize ?? DEFAULT_PAGE_SIZE - const DATE_FORMAT = n('dateFormat', 'd. MMMM yyyy') + const DATE_FORMAT = formatMessage(t.dateFormat) const [listState, setListState] = useState<ListState>('loading') const [showCount, setShowCount] = useState(PAGE_SIZE) @@ -88,15 +91,15 @@ const AlcoholLicencesList: FC< return new Promise<string>((resolve, reject) => { if (alcoholLicences) { const headerRow = [ - n('csvHeaderLicenceType', 'Tegund'), - n('csvHeaderLicenceSubType', 'Tegund leyfis'), - n('csvHeaderLicenseNumber', 'Leyfisnúmer'), - n('csvHeaderLicenseHolder', 'Leyfishafi'), - n('csvHeaderLicenseResponsible', 'Ábyrgðarmaður'), - n('csvHeaderValidFrom', 'Gildir frá'), - n('csvHeaderValidTo', 'Gildir til'), - n('csvHeaderOffice', 'Embætti'), - n('csvHeaderLocation', 'Starfsstöð embættis'), + formatMessage(t.csvHeaderLicenceType), + formatMessage(t.csvHeaderLicenceSubType), + formatMessage(t.csvHeaderLicenseNumber), + formatMessage(t.csvHeaderLicenseHolder), + formatMessage(t.csvHeaderLicenseResponsible), + formatMessage(t.csvHeaderValidFrom), + formatMessage(t.csvHeaderValidTo), + formatMessage(t.csvHeaderOffice), + formatMessage(t.csvHeaderLocation), ] const dataRows = [] for (const alcoholLicence of alcoholLicences) { @@ -121,7 +124,7 @@ const AlcoholLicencesList: FC< } // Filter - Office - const allOfficesOption = n('filterOfficeAll', 'Öll embætti') + const allOfficesOption = formatMessage(t.filterOfficeAll) const avaibleOfficesOptions = [ allOfficesOption, ...Array.from( @@ -135,7 +138,7 @@ const AlcoholLicencesList: FC< ) // Filter - Type - const allLicenceTypeOption = n('filterLicenceTypeAll', 'Allar tegundir') + const allLicenceTypeOption = formatMessage(t.filterLicenceTypeAll) const avaibleLicenceTypeOptions = [ allLicenceTypeOption, ...Array.from( @@ -191,8 +194,8 @@ const AlcoholLicencesList: FC< )} {listState === 'error' && ( <AlertMessage - title={n('errorTitle', 'Villa')} - message={n('errorMessage', 'Ekki tókst að sækja áfengisleyfi.')} + title={formatMessage(t.errorTitle)} + message={formatMessage(t.errorMessage)} type="error" /> )} @@ -210,7 +213,7 @@ const AlcoholLicencesList: FC< icon="chevronDown" size="sm" isSearchable - label={n('alcoholLicencesFilterLicenceType', 'Tegund')} + label={formatMessage(t.alcoholLicencesFilterLicenceType)} name="licenceTypeSelect" options={avaibleLicenceTypeOptions.map((x) => ({ label: x, @@ -238,7 +241,7 @@ const AlcoholLicencesList: FC< icon="chevronDown" size="sm" isSearchable - label={n('alcoholLicencesFilterOffice', 'Embætti')} + label={formatMessage(t.alcoholLicencesFilterOffice)} name="officeSelect" options={avaibleOfficesOptions.map((x) => ({ label: x, @@ -262,7 +265,7 @@ const AlcoholLicencesList: FC< <GridColumn paddingBottom={[1, 1, 1]} span={'12/12'}> <Input name="alcoholLicencesSearchInput" - placeholder={n('searchPlaceholder', 'Leita')} + placeholder={formatMessage(t.searchPlaceholder)} backgroundColor={['blue', 'blue', 'white']} size="sm" icon={{ @@ -273,19 +276,10 @@ const AlcoholLicencesList: FC< /> <Box textAlign="right" marginRight={1} marginTop={1}> <SyslumennListCsvExport - defaultLabel={n( - 'csvButtonLabelDefault', - 'Sækja öll leyfi (CSV)', - )} - loadingLabel={n( - 'csvButtonLabelLoading', - 'Sæki öll leyfi...', - )} - errorLabel={n( - 'csvButtonLabelError', - 'Ekki tókst að sækja leyfi, reyndu aftur', - )} - csvFilenamePrefix={n('csvFileTitlePrefix', 'Áfengisleyfi')} + defaultLabel={formatMessage(t.csvButtonLabelDefault)} + loadingLabel={formatMessage(t.csvButtonLabelLoading)} + errorLabel={formatMessage(t.csvButtonLabelError)} + csvFilenamePrefix={formatMessage(t.csvFileTitlePrefix)} csvStringProvider={csvStringProvider} /> </Box> @@ -296,7 +290,7 @@ const AlcoholLicencesList: FC< )} {listState === 'loaded' && filteredAlcoholLicences.length === 0 && ( <Box display="flex" marginTop={4} justifyContent="center"> - <Text variant="h3">{n('noResults', 'Engin leyfi fundust.')}</Text> + <Text variant="h3">{formatMessage(t.noResults)}</Text> </Box> )} {listState === 'loaded' && filteredAlcoholLicences.length > 0 && ( @@ -341,12 +335,12 @@ const AlcoholLicencesList: FC< <Text variant="h3">{alcoholLicence.licenseHolder}</Text> <Text paddingBottom={2}> - {n('licenseNumber', 'Leyfisnúmer')}:{' '} + {formatMessage(t.licenseNumber)}:{' '} {alcoholLicence.licenseNumber} </Text> <Text> - {n('validPeriodLabel', 'Gildistími')}:{' '} + {formatMessage(t.validPeriodLabel)}:{' '} {getValidPeriodRepresentation( // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore make web strict @@ -354,18 +348,15 @@ const AlcoholLicencesList: FC< alcoholLicence.validTo, DATE_FORMAT, format, - n('validPeriodUntil', 'Til'), - n('validPeriodIndefinite', 'Ótímabundið'), + formatMessage(t.validPeriodUntil), + formatMessage(t.validPeriodIndefinite), )} </Text> <Text> - {n('licenseResponsible', 'Ábyrgðarmaður')}:{' '} + {formatMessage(t.licenseResponsible)}:{' '} {alcoholLicence.licenseResponsible || - n( - 'licenseResponsibleNotRegistered', - 'Enginn skráður', - )} + formatMessage(t.licenseResponsibleNotRegistered)} </Text> </Box> </Box> @@ -380,7 +371,7 @@ const AlcoholLicencesList: FC< > {showCount < filteredAlcoholLicences.length && ( <Button onClick={() => setShowCount(showCount + PAGE_SIZE)}> - {n('loadMore', 'Sjá fleiri')} ( + {formatMessage(t.loadMore)} ( {filteredAlcoholLicences.length - showCount}) </Button> )} diff --git a/apps/web/components/connected/syslumenn/CardLists/AlcoholLicencesList/translation.strings.ts b/apps/web/components/connected/syslumenn/CardLists/AlcoholLicencesList/translation.strings.ts new file mode 100644 index 000000000000..a376883ec819 --- /dev/null +++ b/apps/web/components/connected/syslumenn/CardLists/AlcoholLicencesList/translation.strings.ts @@ -0,0 +1,149 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + dateFormat: { + id: 'web.syslumenn.alcoholLicencesList:dateFormat', + defaultMessage: 'd. MMMM yyyy', + description: 'Hvernig dagsetningin birtist', + }, + csvHeaderLicenceType: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderLicenceType', + defaultMessage: 'Tegund', + description: 'Tegund (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLicenceSubType: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderLicenceSubType', + defaultMessage: 'Tegund leyfis', + description: 'Tegund leyfis (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLicenseNumber: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderLicenseNumber', + defaultMessage: 'Leyfisnúmer', + description: 'Leyfisnúmer (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLicenseHolder: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderLicenseHolder', + defaultMessage: 'Leyfishafi', + description: 'Leyfishafi (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLicenseResponsible: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderLicenseResponsible', + defaultMessage: 'Ábyrgðarmaður', + description: 'Ábyrgðarmaður (texti fyrir dálk í CSV skrá)', + }, + csvHeaderValidFrom: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderValidFrom', + defaultMessage: 'Gildir frá', + description: 'Gildir frá (texti fyrir dálk í CSV skrá)', + }, + csvHeaderValidTo: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderValidTo', + defaultMessage: 'Gildir til', + description: 'Gildir til (texti fyrir dálk í CSV skrá)', + }, + csvHeaderOffice: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderOffice', + defaultMessage: 'Embætti', + description: 'Embætti (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLocation: { + id: 'web.syslumenn.alcoholLicencesList:csvHeaderLocation', + defaultMessage: 'Starfsstöð embættis', + description: 'Starfsstöð embættis (texti fyrir dálk í CSV skrá)', + }, + filterOfficeAll: { + id: 'web.syslumenn.alcoholLicencesList:filterOfficeAll', + defaultMessage: 'Öll embætti', + description: 'Öll embætti', + }, + filterLicenceTypeAll: { + id: 'web.syslumenn.alcoholLicencesList:filterLicenceTypeAll', + defaultMessage: 'Allar tegundir', + description: 'Allar tegundir', + }, + errorTitle: { + id: 'web.syslumenn.alcoholLicencesList:errorTitle', + defaultMessage: 'Villa', + description: 'Titill á villuskilaboðum ef ekki tókst að sækja áfengisleyfi', + }, + errorMessage: { + id: 'web.syslumenn.alcoholLicencesList:errorMessage', + defaultMessage: 'Ekki tókst að sækja áfengisleyfi.', + description: 'Villuskilaboð ef ekki tókst að sækja áfengisleyfi', + }, + alcoholLicencesFilterLicenceType: { + id: 'web.syslumenn.alcoholLicencesList:alcoholLicencesFilterLicenceType', + defaultMessage: 'Tegund', + description: 'Label á tegund filter', + }, + alcoholLicencesFilterOffice: { + id: 'web.syslumenn.alcoholLicencesList:alcoholLicencesFilterOffice', + defaultMessage: 'Embætti', + description: 'Label á embættis filter', + }, + searchPlaceholder: { + id: 'web.syslumenn.alcoholLicencesList:searchPlaceholder', + defaultMessage: 'Leita', + description: 'Placeholder texti í leitarboxi', + }, + csvButtonLabelDefault: { + id: 'web.syslumenn.alcoholLicencesList:csvButtonLabelDefault', + defaultMessage: 'Sækja öll leyfi (CSV).', + description: 'Texti fyrir CSV hnapp', + }, + csvButtonLabelLoading: { + id: 'web.syslumenn.alcoholLicencesList:csvButtonLabelLoading', + defaultMessage: 'Sæki öll leyfi...', + description: 'Texti þegar smellt er á CSV hnapp', + }, + csvButtonLabelError: { + id: 'web.syslumenn.alcoholLicencesList:csvButtonLabelError', + defaultMessage: 'Ekki tókst að sækja leyfi, reyndu aftur.', + description: 'Texti fyrir CSV hnapp ef ekki tókst að sækja skrá', + }, + csvFileTitlePrefix: { + id: 'web.syslumenn.alcoholLicencesList:csvFileTitlePrefix', + defaultMessage: 'Áfengisleyfi', + description: 'Titill á CSV skrá', + }, + noResults: { + id: 'web.syslumenn.alcoholLicencesList:noResults', + defaultMessage: 'Engin leyfi fundust', + description: 'Texti sem birtist ef engin leyfi fundust', + }, + licenseNumber: { + id: 'web.syslumenn.alcoholLicencesList:licenseNumber', + defaultMessage: 'Leyfisnúmer', + description: 'Leyfisnúmer', + }, + validPeriodLabel: { + id: 'web.syslumenn.alcoholLicencesList:validPeriodLabel', + defaultMessage: 'Gildistími', + description: 'Gildistími', + }, + validPeriodUntil: { + id: 'web.syslumenn.alcoholLicencesList:validPeriodUntil', + defaultMessage: 'Til', + description: 'Til', + }, + validPeriodIndefinite: { + id: 'web.syslumenn.alcoholLicencesList:validPeriodIndefinite', + defaultMessage: 'Ótímabundið', + description: 'Ótímabundið', + }, + licenseResponsible: { + id: 'web.syslumenn.alcoholLicencesList:licenseResponsible', + defaultMessage: 'Ábyrgðarmaður', + description: 'Ábyrgðarmaður', + }, + licenseResponsibleNotRegistered: { + id: 'web.syslumenn.alcoholLicencesList:licenseResponsibleNotRegistered', + defaultMessage: 'Enginn skráður', + description: 'Enginn skráður', + }, + loadMore: { + id: 'web.syslumenn.alcoholLicencesList:loadMore', + defaultMessage: 'Sjá fleiri', + description: 'Sjá fleiri', + }, +}) diff --git a/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/TemporaryEventLicencesList.tsx b/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/TemporaryEventLicencesList.tsx index 1cc2e0a3de08..bef0876ab7fc 100644 --- a/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/TemporaryEventLicencesList.tsx +++ b/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/TemporaryEventLicencesList.tsx @@ -1,34 +1,37 @@ import { FC, useState } from 'react' +import { useIntl } from 'react-intl' import { useQuery } from '@apollo/client/react' -import { GET_TEMPORARY_EVENT_LICENCES } from './queries' + +import { + AlertMessage, + Box, + Button, + GridColumn, + GridContainer, + GridRow, + Input, + LoadingDots, + Select, + Tag, + Text, +} from '@island.is/island-ui/core' +import { SyslumennListCsvExport } from '@island.is/web/components' import { ConnectedComponent, Maybe, Query, TemporaryEventLicence, } from '@island.is/web/graphql/schema' +import { useDateUtils } from '@island.is/web/i18n/useDateUtils' + import { - prepareCsvString, - textSearch, getNormalizedSearchTerms, getValidPeriodRepresentation, + prepareCsvString, + textSearch, } from '../../utils' -import { - Box, - Button, - Tag, - LoadingDots, - Text, - Input, - AlertMessage, - Select, - GridContainer, - GridRow, - GridColumn, -} from '@island.is/island-ui/core' -import { SyslumennListCsvExport } from '@island.is/web/components' -import { useNamespace } from '@island.is/web/hooks' -import { useDateUtils } from '@island.is/web/i18n/useDateUtils' +import { GET_TEMPORARY_EVENT_LICENCES } from './queries' +import { translation as t } from './translation.strings' const DEFAULT_PAGE_SIZE = 10 @@ -41,10 +44,10 @@ type ListState = 'loading' | 'loaded' | 'error' const TemporaryEventLicencesList: FC< React.PropsWithChildren<TemporaryEventLicencesListProps> > = ({ slice }) => { - const n = useNamespace(slice.json ?? {}) + const { formatMessage } = useIntl() const { format } = useDateUtils() const PAGE_SIZE = slice?.configJson?.pageSize ?? DEFAULT_PAGE_SIZE - const DATE_FORMAT = n('dateFormat', "d. MMMM yyyy 'kl.' HH:mm") + const DATE_FORMAT = formatMessage(t.dateFormat) const [listState, setListState] = useState<ListState>('loading') const [showCount, setShowCount] = useState(PAGE_SIZE) @@ -89,14 +92,14 @@ const TemporaryEventLicencesList: FC< return new Promise<string>((resolve, reject) => { if (temporaryEventLicences) { const headerRow = [ - n('csvHeaderLicenceType', 'Tegund'), - n('csvHeaderLicenceSubType', 'Tegund leyfis'), - n('csvHeaderLicenseNumber', 'Leyfisnúmer'), - n('csvHeaderLicenseHolder', 'Leyfishafi'), - n('csvHeaderLicenseResponsible', 'Ábyrgðarmaður'), - n('csvHeaderValidFrom', 'Gildir frá'), - n('csvHeaderValidTo', 'Gildir til'), - n('csvHeaderIssuedBy', 'Útgefið af'), + formatMessage(t.csvHeaderLicenceType), + formatMessage(t.csvHeaderLicenceSubType), + formatMessage(t.csvHeaderLicenseNumber), + formatMessage(t.csvHeaderLicenseHolder), + formatMessage(t.csvHeaderLicenseResponsible), + formatMessage(t.csvHeaderValidFrom), + formatMessage(t.csvHeaderValidTo), + formatMessage(t.csvHeaderIssuedBy), ] const dataRows = [] for (const temporaryEventLicence of temporaryEventLicences) { @@ -118,7 +121,7 @@ const TemporaryEventLicencesList: FC< } // Filter - Office - const allOfficesOption = n('filterOfficeAll', 'Öll embætti') + const allOfficesOption = formatMessage(t.filterOfficeAll) const avaibleOfficesOptions = [ allOfficesOption, ...Array.from( @@ -132,7 +135,7 @@ const TemporaryEventLicencesList: FC< ) // Filter - SubType - const allLicenceSubTypeOption = n('filterLicenceSubTypeAll', 'Allar tegundir') + const allLicenceSubTypeOption = formatMessage(t.filterLicenceSubTypeAll) const avaibleLicenceSubTypeOptions = [ allLicenceSubTypeOption, ...Array.from( @@ -192,8 +195,8 @@ const TemporaryEventLicencesList: FC< )} {listState === 'error' && ( <AlertMessage - title={n('errorTitle', 'Villa')} - message={n('errorMessage', 'Ekki tókst að sækja tækifærisleyfi.')} + title={formatMessage(t.errorTitle)} + message={formatMessage(t.errorMessage)} type="error" /> )} @@ -211,7 +214,7 @@ const TemporaryEventLicencesList: FC< icon="chevronDown" size="sm" isSearchable - label={n('alcoholLicencesFilterLicenceSubType', 'Tegund')} + label={formatMessage(t.alcoholLicencesFilterLicenceSubType)} name="licenceSubTypeSelect" options={avaibleLicenceSubTypeOptions.map((x) => ({ label: x, @@ -239,7 +242,7 @@ const TemporaryEventLicencesList: FC< icon="chevronDown" size="sm" isSearchable - label={n('alcoholLicencesFilterOffice', 'Embætti')} + label={formatMessage(t.alcoholLicencesFilterOffice)} name="officeSelect" options={avaibleOfficesOptions.map((x) => ({ label: x, @@ -263,7 +266,7 @@ const TemporaryEventLicencesList: FC< <GridColumn paddingBottom={[1, 1, 1]} span={'12/12'}> <Input name="temporaryEventLicencesSearchInput" - placeholder={n('searchPlaceholder', 'Leita')} + placeholder={formatMessage(t.searchPlaceholder)} backgroundColor={['blue', 'blue', 'white']} size="sm" icon={{ @@ -274,22 +277,10 @@ const TemporaryEventLicencesList: FC< /> <Box textAlign="right" marginRight={1} marginTop={1}> <SyslumennListCsvExport - defaultLabel={n( - 'csvButtonLabelDefault', - 'Sækja öll leyfi (CSV)', - )} - loadingLabel={n( - 'csvButtonLabelLoading', - 'Sæki öll leyfi...', - )} - errorLabel={n( - 'csvButtonLabelError', - 'Ekki tókst að sækja leyfi, reyndu aftur', - )} - csvFilenamePrefix={n( - 'csvFileTitlePrefix', - 'Tækifærisleyfi', - )} + defaultLabel={formatMessage(t.csvButtonLabelDefault)} + loadingLabel={formatMessage(t.csvButtonLabelLoading)} + errorLabel={formatMessage(t.csvButtonLabelError)} + csvFilenamePrefix={formatMessage(t.csvFileTitlePrefix)} csvStringProvider={csvStringProvider} /> </Box> @@ -300,7 +291,7 @@ const TemporaryEventLicencesList: FC< )} {listState === 'loaded' && filteredTemporaryEventLicences.length === 0 && ( <Box display="flex" marginTop={4} justifyContent="center"> - <Text variant="h3">{n('noResults', 'Engin leyfi fundust.')}</Text> + <Text variant="h3">{formatMessage(t.noResults)}</Text> </Box> )} {listState === 'loaded' && filteredTemporaryEventLicences.length > 0 && ( @@ -343,12 +334,12 @@ const TemporaryEventLicencesList: FC< </Text> <Text paddingBottom={2}> - {n('licenseNumber', 'Leyfisnúmer')}:{' '} + {formatMessage(t.licenseNumber)}:{' '} {temporaryEventLicence.licenseNumber} </Text> <Text> - {n('validPeriodLabel', 'Gildistími')}:{' '} + {formatMessage(t.validPeriodLabel)}:{' '} {getValidPeriodRepresentation( // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore make web strict @@ -356,37 +347,30 @@ const TemporaryEventLicencesList: FC< temporaryEventLicence.validTo, DATE_FORMAT, format, - n('validPeriodUntil', 'Til'), - n('validPeriodIndefinite', 'Ótímabundið'), + formatMessage(t.validPeriodUntil), + formatMessage(t.validPeriodIndefinite), )} </Text> <Text> - {n('licenseResponsible', 'Ábyrgðarmaður')}:{' '} + {formatMessage(t.licenseResponsible)}:{' '} {temporaryEventLicence.licenseResponsible || - n( - 'licenseResponsibleNotRegistered', - 'Enginn skráður', - )} + formatMessage(t.licenseResponsibleNotRegistered)} </Text> - {temporaryEventLicence.estimatedNumberOfGuests && ( + {Boolean( + temporaryEventLicence.estimatedNumberOfGuests, + ) && ( <Text> - {n( - 'licenseEstimatedNumberOfGuests', - 'Áætlaður fjöldi gesta', - )} - : {temporaryEventLicence.estimatedNumberOfGuests} + {formatMessage(t.licenseEstimatedNumberOfGuests)}:{' '} + {temporaryEventLicence.estimatedNumberOfGuests} </Text> )} - {temporaryEventLicence.maximumNumberOfGuests && ( + {Boolean(temporaryEventLicence.maximumNumberOfGuests) && ( <Text> - {n( - 'licenseMaximumNumberOfGuests', - 'Hámarksfjöldi gesta', - )} - : {temporaryEventLicence.maximumNumberOfGuests} + {formatMessage(t.licenseMaximumNumberOfGuests)}:{' '} + {temporaryEventLicence.maximumNumberOfGuests} </Text> )} </Box> @@ -402,7 +386,7 @@ const TemporaryEventLicencesList: FC< > {showCount < filteredTemporaryEventLicences.length && ( <Button onClick={() => setShowCount(showCount + PAGE_SIZE)}> - {n('loadMore', 'Sjá fleiri')} ( + {formatMessage(t.loadMore)} ( {filteredTemporaryEventLicences.length - showCount}) </Button> )} diff --git a/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/queries.ts b/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/queries.ts index 6e185ca31532..75aede8da007 100644 --- a/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/queries.ts +++ b/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/queries.ts @@ -13,6 +13,7 @@ export const GET_TEMPORARY_EVENT_LICENCES = gql` licenseResponsible maximumNumberOfGuests estimatedNumberOfGuests + location } } ` diff --git a/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/translation.strings.ts b/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/translation.strings.ts new file mode 100644 index 000000000000..9f7cc20c27b4 --- /dev/null +++ b/apps/web/components/connected/syslumenn/CardLists/TemporaryEventLicencesList/translation.strings.ts @@ -0,0 +1,155 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + dateFormat: { + id: 'web.syslumenn.temporaryEventLicencesList:dateFormat', + defaultMessage: "d. MMMM yyyy 'kl.' HH:mm", + description: 'Hvernig dagsetningin birtist', + }, + csvHeaderLicenceType: { + id: 'web.syslumenn.temporaryEventLicencesList:csvHeaderLicenceType', + defaultMessage: 'Tegund', + description: 'Tegund (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLicenceSubType: { + id: 'web.syslumenn.temporaryEventLicencesList:csvHeaderLicenceSubType', + defaultMessage: "'Tegund leyfis", + description: 'Tegund leyfis (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLicenseNumber: { + id: 'web.syslumenn.temporaryEventLicencesList:csvHeaderLicenseNumber', + defaultMessage: 'Leyfisnúmer', + description: 'Leyfisnúmer (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLicenseHolder: { + id: 'web.syslumenn.temporaryEventLicencesList:csvHeaderLicenseHolder', + defaultMessage: 'Leyfishafi', + description: 'Leyfishafi (texti fyrir dálk í CSV skrá)', + }, + csvHeaderLicenseResponsible: { + id: 'web.syslumenn.temporaryEventLicencesList:csvHeaderLicenseResponsible', + defaultMessage: 'Ábyrgðarmaður', + description: 'Ábyrgðarmaður (texti fyrir dálk í CSV skrá)', + }, + csvHeaderValidFrom: { + id: 'web.syslumenn.temporaryEventLicencesList:csvHeaderValidFrom', + defaultMessage: 'Gildir frá', + description: 'Gildir frá (texti fyrir dálk í CSV skrá)', + }, + csvHeaderValidTo: { + id: 'web.syslumenn.temporaryEventLicencesList:csvHeaderValidTo', + defaultMessage: 'Gildir til', + description: 'Gildir til (texti fyrir dálk í CSV skrá)', + }, + csvHeaderIssuedBy: { + id: 'web.syslumenn.temporaryEventLicencesList:csvHeaderIssuedBy', + defaultMessage: 'Útgefið af', + description: 'Útgefið af (texti fyrir dálk í CSV skrá)', + }, + filterOfficeAll: { + id: 'web.syslumenn.temporaryEventLicencesList:filterOfficeAll', + defaultMessage: 'Öll embætti', + description: 'Öll embætti', + }, + filterLicenceSubTypeAll: { + id: 'web.syslumenn.temporaryEventLicencesList:filterLicenceSubTypeAll', + defaultMessage: 'Allar tegundir', + description: 'Allar tegundir', + }, + errorTitle: { + id: 'web.syslumenn.temporaryEventLicencesList:errorTitle', + defaultMessage: 'Villa', + description: + 'Titill á villuskilaboðum ef ekki tókst að sækja tækifærisleyfi', + }, + errorMessage: { + id: 'web.syslumenn.temporaryEventLicencesList:errorMessage', + defaultMessage: 'Ekki tókst að sækja tækifærisleyfi.', + description: 'Villutexti sem birtist ef ekki tókst að sækja tækifærisleyfi', + }, + alcoholLicencesFilterLicenceSubType: { + id: 'web.syslumenn.temporaryEventLicencesList:alcoholLicencesFilterLicenceSubType', + defaultMessage: 'Tegund', + description: 'Label fyrir tegund filter', + }, + alcoholLicencesFilterOffice: { + id: 'web.syslumenn.temporaryEventLicencesList:alcoholLicencesFilterOffice', + defaultMessage: 'Embætti', + description: 'Label fyrir embættis filter', + }, + searchPlaceholder: { + id: 'web.syslumenn.temporaryEventLicencesList:searchPlaceholder', + defaultMessage: 'Leita', + description: 'Placeholder texti fyrir leitarbox', + }, + noResults: { + id: 'web.syslumenn.temporaryEventLicencesList:noResults', + defaultMessage: 'Engin leyfi fundust', + description: 'Texti sem birtist ef engin leyfi fundust', + }, + licenseNumber: { + id: 'web.syslumenn.temporaryEventLicencesList:licenseNumber', + defaultMessage: 'Leyfisnúmer', + description: 'Leyfisnúmer', + }, + validPeriodLabel: { + id: 'web.syslumenn.temporaryEventLicencesList:validPeriodLabel', + defaultMessage: 'Gildistími', + description: 'Gildistími', + }, + validPeriodUntil: { + id: 'web.syslumenn.temporaryEventLicencesList:validPeriodUntil', + defaultMessage: 'Til', + description: 'Til', + }, + validPeriodIndefinite: { + id: 'web.syslumenn.temporaryEventLicencesList:validPeriodIndefinite', + defaultMessage: 'Ótímabundið', + description: 'Ótímabundið', + }, + licenseResponsible: { + id: 'web.syslumenn.temporaryEventLicencesList:licenseResponsible', + defaultMessage: 'Ábyrgðarmaður', + description: 'Ábyrgðarmaður', + }, + licenseResponsibleNotRegistered: { + id: 'web.syslumenn.temporaryEventLicencesList:licenseResponsibleNotRegistered', + defaultMessage: 'Enginn skráður', + description: 'Enginn skráður', + }, + licenseEstimatedNumberOfGuests: { + id: 'web.syslumenn.temporaryEventLicencesList:licenseEstimatedNumberOfGuests', + defaultMessage: 'Áætlaður fjöldi gesta', + description: 'Áætlaður fjöldi gesta', + }, + licenseMaximumNumberOfGuests: { + id: 'web.syslumenn.temporaryEventLicencesList:licenseMaximumNumberOfGuests', + defaultMessage: 'Hámarksfjöldi gesta', + description: 'Hámarksfjöldi gesta', + }, + loadMore: { + id: 'web.syslumenn.temporaryEventLicencesList:loadMore', + defaultMessage: 'Sjá fleiri', + description: 'Sjá fleiri', + }, + csvButtonLabelDefault: { + id: 'web.syslumenn.temporaryEventLicencesList:csvButtonLabelDefault', + defaultMessage: 'Sækja öll leyfi (CSV).', + description: 'Texti fyrir CSV hnapp', + }, + csvButtonLabelLoading: { + id: 'web.syslumenn.temporaryEventLicencesList:csvButtonLabelLoading', + defaultMessage: 'Sæki öll leyfi...', + description: 'Texti þegar smellt er á CSV hnapp', + }, + csvButtonLabelError: { + id: 'web.syslumenn.temporaryEventLicencesList:csvButtonLabelError', + defaultMessage: 'Ekki tókst að sækja leyfi, reyndu aftur.', + description: 'Texti fyrir CSV hnapp ef ekki tókst að sækja skrá', + }, + csvFileTitlePrefix: { + id: 'web.syslumenn.temporaryEventLicencesList:csvFileTitlePrefix', + defaultMessage: 'Tækifærisleyfi', + description: 'Titill á CSV skrá', + }, +}) diff --git a/apps/web/components/connected/syslumenn/TableLists/BrokersList/BrokersList.tsx b/apps/web/components/connected/syslumenn/TableLists/BrokersList/BrokersList.tsx index 4782b2c0691a..e8a12bb7bc0f 100644 --- a/apps/web/components/connected/syslumenn/TableLists/BrokersList/BrokersList.tsx +++ b/apps/web/components/connected/syslumenn/TableLists/BrokersList/BrokersList.tsx @@ -1,18 +1,21 @@ import { CSSProperties, FC, useState } from 'react' +import { useIntl } from 'react-intl' import { useQuery } from '@apollo/client/react' -import { GET_BROKERS_QUERY } from './queries' + import { ConnectedComponent, Query } from '@island.is/api/schema' -import { sortAlpha } from '@island.is/shared/utils' import { + AlertMessage, Box, + Input, LoadingDots, Pagination, Table as T, Text, - Input, - AlertMessage, } from '@island.is/island-ui/core' -import { useNamespace } from '@island.is/web/hooks' +import { sortAlpha } from '@island.is/shared/utils' + +import { GET_BROKERS_QUERY } from './queries' +import { translation as t } from './translation.strings' const DEFAULT_PAGE_SIZE = 5 const DEFAULT_TABLE_MIN_HEIGHT = '800px' @@ -66,7 +69,7 @@ const getSortedAndFilteredBrokers = ( const BrokersList: FC<React.PropsWithChildren<BrokersListProps>> = ({ slice, }) => { - const n = useNamespace(slice.json ?? {}) + const { formatMessage } = useIntl() const [listState, setListState] = useState<ListState>('loading') const [brokers, setBrokers] = useState<Query['getBrokers']>([]) @@ -138,11 +141,8 @@ const BrokersList: FC<React.PropsWithChildren<BrokersListProps>> = ({ )} {listState === 'error' && ( <AlertMessage - title={n('errorTitle', 'Villa')} - message={n( - 'errorMessage', - 'Ekki tókst að sækja lista yfir verðbréfamiðlara.', - )} + title={formatMessage(t.errorTitle)} + message={formatMessage(t.errorMessage)} type="error" /> )} @@ -150,7 +150,7 @@ const BrokersList: FC<React.PropsWithChildren<BrokersListProps>> = ({ <Box marginBottom={4}> <Input name="brokersSearchInput" - placeholder={n('searchPlaceholder', 'Leita')} + placeholder={formatMessage(t.searchPlaceholder)} backgroundColor={['blue', 'blue', 'white']} size="sm" icon={{ @@ -163,9 +163,7 @@ const BrokersList: FC<React.PropsWithChildren<BrokersListProps>> = ({ )} {listState === 'loaded' && filteredBrokers.length === 0 && ( <Box display="flex" marginTop={4} justifyContent="center"> - <Text variant="h3"> - {n('noBrokersFound', 'Engir verðbréfamiðlarar fundust.')} - </Text> + <Text variant="h3">{formatMessage(t.noBrokersFound)}</Text> </Box> )} {listState === 'loaded' && filteredBrokers.length > 0 && ( @@ -174,8 +172,8 @@ const BrokersList: FC<React.PropsWithChildren<BrokersListProps>> = ({ <T.Table> <T.Head> <T.Row> - <T.HeadData>{n('name', 'Nafn')}</T.HeadData> - <T.HeadData>{n('nationalId', 'Kennitala')}</T.HeadData> + <T.HeadData>{formatMessage(t.name)}</T.HeadData> + <T.HeadData>{formatMessage(t.nationalId)}</T.HeadData> </T.Row> </T.Head> <T.Body> diff --git a/apps/web/components/connected/syslumenn/TableLists/BrokersList/translation.strings.ts b/apps/web/components/connected/syslumenn/TableLists/BrokersList/translation.strings.ts new file mode 100644 index 000000000000..f163e0e62a95 --- /dev/null +++ b/apps/web/components/connected/syslumenn/TableLists/BrokersList/translation.strings.ts @@ -0,0 +1,36 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + errorTitle: { + id: 'web.syslumenn.brokersList:errorTitle', + defaultMessage: 'Villa', + description: + 'Villa (titill á villuskilaboðum ef ekki tókst að sækja lista yfir verðbréfamiðlara)', + }, + errorMessage: { + id: 'web.syslumenn.brokersList:errorMessage', + defaultMessage: 'Ekki tókst að sækja lista yfir verðbréfamiðlara.', + description: + 'Ekki tókst að sækja lista yfir verðbréfamiðlara (villutexti ef ekki tókst að sækja lista yfir verðbréfamiðlara)', + }, + searchPlaceholder: { + id: 'web.syslumenn.brokersList:searchPlaceholder', + defaultMessage: 'Leita', + description: 'Placeholder texti fyrir leitarbox', + }, + noBrokersFound: { + id: 'web.syslumenn.brokersList:noBrokersFound', + defaultMessage: 'Engir verðbréfamiðlarar fundust.', + description: 'Texti sem birtist ef engir verðbréfamiðlarar fundust.', + }, + name: { + id: 'web.syslumenn.brokersList:name', + defaultMessage: 'Nafn', + description: 'Nafn (texti á dálk í töflu)', + }, + nationalId: { + id: 'web.syslumenn.brokersList:nationalId', + defaultMessage: 'Kennitala', + description: 'Kennitala (texti á dálk í töflu)', + }, +}) diff --git a/apps/web/components/connected/syslumenn/TableLists/JourneymanList/JourneymanList.tsx b/apps/web/components/connected/syslumenn/TableLists/JourneymanList/JourneymanList.tsx index 53a2af36f2e1..23162b629e9b 100644 --- a/apps/web/components/connected/syslumenn/TableLists/JourneymanList/JourneymanList.tsx +++ b/apps/web/components/connected/syslumenn/TableLists/JourneymanList/JourneymanList.tsx @@ -1,4 +1,5 @@ import { CSSProperties, useState } from 'react' +import { useIntl } from 'react-intl' import { useQueryState } from 'next-usequerystate' import { useQuery } from '@apollo/client/react' @@ -19,7 +20,6 @@ import { import { sortAlpha } from '@island.is/shared/utils' import { SyslumennListCsvExport } from '@island.is/web/components' import { JourneymanLicence } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' import { useDateUtils } from '@island.is/web/i18n/useDateUtils' import { @@ -28,6 +28,7 @@ import { prepareCsvString, } from '../../utils' import { GET_JOURNEYMAN_LICENCES_QUERY } from './queries' +import { translation as t } from './translation.strings' const DEFAULT_PAGE_SIZE = 20 const DEFAULT_TABLE_MIN_HEIGHT = '800px' @@ -44,7 +45,7 @@ interface JourneymanListProps { type ListState = 'loading' | 'loaded' | 'error' const JourneymanList = ({ slice }: JourneymanListProps) => { - const n = useNamespace(slice.json ?? {}) + const { formatMessage } = useIntl() const [listState, setListState] = useState<ListState>('loading') const [licences, setLicences] = useState< Query['getJourneymanLicences']['licences'] @@ -114,10 +115,10 @@ const JourneymanList = ({ slice }: JourneymanListProps) => { return new Promise<string>((resolve, reject) => { if (licences) { const headerRow = [ - n('csvHeaderName', 'Nafn') as string, - n('csvHeaderProfession', 'Iðngrein') as string, - n('csvHeaderDateOfPublication', 'Útgáfuár') as string, - n('csvHeaderNationalId', 'Kennitala') as string, + formatMessage(t.csvHeaderName), + formatMessage(t.csvHeaderProfession), + formatMessage(t.csvHeaderDateOfPublication), + formatMessage(t.csvHeaderNationaId), ] const dataRows = [] for (const licence of licences) { @@ -137,10 +138,7 @@ const JourneymanList = ({ slice }: JourneymanListProps) => { } // Filter - Profession - const allLicenceProfessionOption = n( - 'filterLicenceProfessionAll', - 'Allar tegundir', - ) as string + const allLicenceProfessionOption = formatMessage(t.filterLicenceProfessionAll) // Filter const filteredLicences = getSortedAndFilteredList( @@ -183,11 +181,8 @@ const JourneymanList = ({ slice }: JourneymanListProps) => { )} {listState === 'error' && ( <AlertMessage - title={n('errorTitle', 'Villa')} - message={n( - 'errorMessage', - 'Ekki tókst að sækja lista yfir sveinsbréfin.', - )} + title={formatMessage(t.errorTitle)} + message={formatMessage(t.errorMessage)} type="error" /> )} @@ -205,7 +200,7 @@ const JourneymanList = ({ slice }: JourneymanListProps) => { icon="chevronDown" size="sm" isSearchable - label={n('licencesFilterLicenceProfession', 'Iðngrein')} + label={formatMessage(t.licencesFilterLicenceProfession)} name="licenceProfessionSelect" options={availableLicenceProfessionOptions} value={filterLicenceProfession} @@ -221,7 +216,7 @@ const JourneymanList = ({ slice }: JourneymanListProps) => { <GridColumn paddingBottom={[1, 1, 1]} span={'12/12'}> <Input name="licencesSearchInput" - placeholder={n('searchPlaceholder', 'Leita')} + placeholder={formatMessage(t.searchPlaceholder)} backgroundColor={['blue', 'blue', 'white']} size="sm" icon={{ @@ -232,19 +227,10 @@ const JourneymanList = ({ slice }: JourneymanListProps) => { /> <Box textAlign="right" marginRight={1} marginTop={1}> <SyslumennListCsvExport - defaultLabel={n( - 'csvButtonLabelDefault', - 'Sækja öll leyfi (CSV)', - )} - loadingLabel={n( - 'csvButtonLabelLoading', - 'Sæki öll leyfi...', - )} - errorLabel={n( - 'csvButtonLabelError', - 'Ekki tókst að sækja leyfi, reyndu aftur', - )} - csvFilenamePrefix={n('csvFileTitlePrefix', 'Sveinslisti')} + defaultLabel={formatMessage(t.csvButtonLabelDefault)} + loadingLabel={formatMessage(t.csvButtonLabelLoading)} + errorLabel={formatMessage(t.csvButtonLabelError)} + csvFilenamePrefix={formatMessage(t.csvFileTitlePrefix)} csvStringProvider={csvStringProvider} /> </Box> @@ -255,9 +241,7 @@ const JourneymanList = ({ slice }: JourneymanListProps) => { )} {listState === 'loaded' && filteredLicences.length === 0 && ( <Box display="flex" marginTop={4} justifyContent="center"> - <Text variant="h3"> - {n('noLicencesFound', 'Engar niðurstöður fundust.')} - </Text> + <Text variant="h3">{formatMessage(t.noLicencesFound)}</Text> </Box> )} {listState === 'loaded' && filteredLicences.length > 0 && ( @@ -266,11 +250,12 @@ const JourneymanList = ({ slice }: JourneymanListProps) => { <T.Table> <T.Head> <T.Row> - <T.HeadData>{n('name', 'Nafn')}</T.HeadData> - <T.HeadData>{n('profession', 'Iðngrein')}</T.HeadData> - <T.HeadData>{n('dateOfPublication', 'Útgáfuár')}</T.HeadData> + <T.HeadData>{formatMessage(t.name)}</T.HeadData> + <T.HeadData>{formatMessage(t.profession)}</T.HeadData> + + <T.HeadData>{formatMessage(t.dateOfPublication)}</T.HeadData> <T.HeadData align="right"> - {n('nationalId', 'Kennitala')} + {formatMessage(t.nationalId)} </T.HeadData> </T.Row> </T.Head> diff --git a/apps/web/components/connected/syslumenn/TableLists/JourneymanList/translation.strings.ts b/apps/web/components/connected/syslumenn/TableLists/JourneymanList/translation.strings.ts new file mode 100644 index 000000000000..d5ba5f6fd757 --- /dev/null +++ b/apps/web/components/connected/syslumenn/TableLists/JourneymanList/translation.strings.ts @@ -0,0 +1,94 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + csvHeaderName: { + id: 'web.syslumenn.journeymanList:csvHeaderName', + defaultMessage: 'Nafn', + description: 'Nafn (texti fyrir dálk í CSV skrá)', + }, + csvHeaderProfession: { + id: 'web.syslumenn.journeymanList:csvHeaderProfession', + defaultMessage: 'Iðngrein', + description: 'Iðngrein (texti fyrir dálk í CSV skrá)', + }, + csvHeaderDateOfPublication: { + id: 'web.syslumenn.journeymanList:csvHeaderDateOfPublication', + defaultMessage: 'Útgáfuár', + description: 'Útgáfuár (texti fyrir dálk í CSV skrá)', + }, + licencesFilterLicenceProfession: { + id: 'web.syslumenn.journeymanList:licencesFilterLicenceProfession', + defaultMessage: 'Iðngrein', + description: 'Label fyrir iðngrein filter', + }, + searchPlaceholder: { + id: 'web.syslumenn.journeymanList:searchPlaceholder', + defaultMessage: 'Leita', + description: 'Placeholder texti fyrir leitarbox', + }, + csvFileTitlePrefix: { + id: 'web.syslumenn.journeymanList:csvFileTitlePrefix', + defaultMessage: 'Sveinslisti', + description: 'Titill á CSV skrá', + }, + noLicencesFound: { + id: 'web.syslumenn.journeymanList:noLicencesFound', + defaultMessage: 'Engar niðurstöður fundust', + description: 'Texti sem birtist ef engar niðurstöður fundust', + }, + name: { + id: 'web.syslumenn.journeymanList:name', + defaultMessage: 'Nafn', + description: 'Nafn', + }, + profession: { + id: 'web.syslumenn.journeymanList:profession', + defaultMessage: 'Iðngrein', + description: 'Iðngrein', + }, + dateOfPublication: { + id: 'web.syslumenn.journeymanList:dateOfPublication', + defaultMessage: 'Útgáfuár', + description: 'Útgáfuár', + }, + filterLicenceProfessionAll: { + id: 'web.syslumenn.journeymanList:filterLicenceProfessionAll', + defaultMessage: 'Allar tegundir', + description: 'Allar tegundir', + }, + errorTitle: { + id: 'web.syslumenn.journeymanList:errorTitle', + defaultMessage: 'Villa', + description: 'Villa', + }, + errorMessage: { + id: 'web.syslumenn.journeymanList:errorMessage', + defaultMessage: 'Ekki tókst að sækja lista yfir sveinsbréfin.', + description: 'Ekki tókst að sækja lista yfir sveinsbréfin.', + }, + csvButtonLabelDefault: { + id: 'web.syslumenn.journeymanList:csvButtonLabelDefault', + defaultMessage: 'Sækja öll leyfi (CSV)', + description: 'Titill á CSV takka', + }, + csvButtonLabelLoading: { + id: 'web.syslumenn.journeymanList:csvButtonLabelLoading', + defaultMessage: 'Sæki öll leyfi...', + description: 'Titill á CSV takka eftir smell', + }, + csvButtonLabelError: { + id: 'web.syslumenn.journeymanList:csvButtonLabelError', + defaultMessage: 'Ekki tókst að sækja leyfi, reyndu aftur', + description: 'Texti þegar ekki tekst að sækja CSV skrá', + }, + csvHeaderNationaId: { + id: 'web.syslumenn.journeymanList:csvHeaderNationaId', + defaultMessage: 'Kennitala', + description: 'Kennitala (texti fyrir dálk í CSV skrá)', + }, + nationalId: { + id: 'web.syslumenn.journeymanList:nationalId', + defaultMessage: 'Kennitala', + description: 'Kennitala', + }, +}) diff --git a/apps/web/components/connected/syslumenn/TableLists/MasterList/MasterList.tsx b/apps/web/components/connected/syslumenn/TableLists/MasterList/MasterList.tsx index 5f576dd0ba04..6977134bfa54 100644 --- a/apps/web/components/connected/syslumenn/TableLists/MasterList/MasterList.tsx +++ b/apps/web/components/connected/syslumenn/TableLists/MasterList/MasterList.tsx @@ -1,4 +1,5 @@ import { CSSProperties, useState } from 'react' +import { useIntl } from 'react-intl' import { useQueryState } from 'next-usequerystate' import { useQuery } from '@apollo/client/react' @@ -19,7 +20,6 @@ import { import { sortAlpha } from '@island.is/shared/utils' import { SyslumennListCsvExport } from '@island.is/web/components' import { MasterLicence } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' import { useDateUtils } from '@island.is/web/i18n/useDateUtils' import { @@ -28,6 +28,7 @@ import { prepareCsvString, } from '../../utils' import { GET_MASTER_LICENCES_QUERY } from './queries' +import { translation as t } from './translation.strings' const DEFAULT_PAGE_SIZE = 20 const DEFAULT_TABLE_MIN_HEIGHT = '800px' @@ -44,7 +45,7 @@ interface MasterListProps { type ListState = 'loading' | 'loaded' | 'error' const MasterList = ({ slice }: MasterListProps) => { - const n = useNamespace(slice.json ?? {}) + const { formatMessage } = useIntl() const [listState, setListState] = useState<ListState>('loading') const [licences, setLicences] = useState< Query['getMasterLicences']['licences'] @@ -116,10 +117,10 @@ const MasterList = ({ slice }: MasterListProps) => { return new Promise<string>((resolve, reject) => { if (licences) { const headerRow = [ - n('csvHeaderMasterLicenceName', 'Nafn') as string, - n('csvHeaderMasterLicenseProfession', 'Iðngrein') as string, - n('csvHeaderMasterLicenceDateOfPublication', 'Útgáfuár') as string, - n('csvHeaderMasterLicenceNationalId', 'Kennitala') as string, + formatMessage(t.csvHeaderMasterLicenceName), + formatMessage(t.csvHeaderMasterLicenseProfession), + formatMessage(t.csvHeaderMasterLicenceDateOfPublication), + formatMessage(t.csvHeaderMasterLicenceNationalId), ] const dataRows = [] for (const licence of licences) { @@ -139,10 +140,7 @@ const MasterList = ({ slice }: MasterListProps) => { } // Filter - Profession - const allLicenceProfessionOption = n( - 'filterLicenceProfessionAll', - 'Allar tegundir', - ) as string + const allLicenceProfessionOption = formatMessage(t.filterLicenceProfessionAll) // Filter const filteredMasterLicences = getSortedAndFilteredList( @@ -185,11 +183,8 @@ const MasterList = ({ slice }: MasterListProps) => { )} {listState === 'error' && ( <AlertMessage - title={n('errorTitle', 'Villa')} - message={n( - 'errorMessage', - 'Ekki tókst að sækja lista yfir meistarabréfin.', - )} + title={formatMessage(t.errorTitle)} + message={formatMessage(t.errorMessage)} type="error" /> )} @@ -207,9 +202,8 @@ const MasterList = ({ slice }: MasterListProps) => { icon="chevronDown" size="sm" isSearchable - label={n( - 'alcoholLicencesFilterLicenceProfession', - 'Iðngrein', + label={formatMessage( + t.alcoholLicencesFilterLicenceProfession, )} name="licenceProfessionSelect" options={availableLicenceProfessionOptions} @@ -226,7 +220,7 @@ const MasterList = ({ slice }: MasterListProps) => { <GridColumn paddingBottom={[1, 1, 1]} span={'12/12'}> <Input name="licencesSearchInput" - placeholder={n('searchPlaceholder', 'Leita')} + placeholder={formatMessage(t.searchPlaceholder)} backgroundColor={['blue', 'blue', 'white']} size="sm" icon={{ @@ -237,19 +231,10 @@ const MasterList = ({ slice }: MasterListProps) => { /> <Box textAlign="right" marginRight={1} marginTop={1}> <SyslumennListCsvExport - defaultLabel={n( - 'csvButtonLabelDefault', - 'Sækja öll leyfi (CSV)', - )} - loadingLabel={n( - 'csvButtonLabelLoading', - 'Sæki öll leyfi...', - )} - errorLabel={n( - 'csvButtonLabelError', - 'Ekki tókst að sækja leyfi, reyndu aftur', - )} - csvFilenamePrefix={n('csvFileTitlePrefix', 'Meistarabréf')} + defaultLabel={formatMessage(t.csvButtonLabelDefault)} + loadingLabel={formatMessage(t.csvButtonLabelLoading)} + errorLabel={formatMessage(t.csvButtonLabelError)} + csvFilenamePrefix={formatMessage(t.csvFileTitlePrefix)} csvStringProvider={csvStringProvider} /> </Box> @@ -260,9 +245,7 @@ const MasterList = ({ slice }: MasterListProps) => { )} {listState === 'loaded' && filteredMasterLicences.length === 0 && ( <Box display="flex" marginTop={4} justifyContent="center"> - <Text variant="h3"> - {n('noLicencesFound', 'Engar niðurstöður fundust.')} - </Text> + <Text variant="h3">{formatMessage(t.noLicencesFound)}</Text> </Box> )} {listState === 'loaded' && filteredMasterLicences.length > 0 && ( @@ -271,11 +254,11 @@ const MasterList = ({ slice }: MasterListProps) => { <T.Table> <T.Head> <T.Row> - <T.HeadData>{n('name', 'Nafn')}</T.HeadData> - <T.HeadData>{n('profession', 'Iðngrein')}</T.HeadData> - <T.HeadData>{n('dateOfPublication', 'Útgáfuár')}</T.HeadData> + <T.HeadData>{formatMessage(t.name)}</T.HeadData> + <T.HeadData>{formatMessage(t.profession)}</T.HeadData> + <T.HeadData>{formatMessage(t.dateOfPublication)}</T.HeadData> <T.HeadData align="right"> - {n('nationalId', 'Kennitala')} + {formatMessage(t.nationalId)} </T.HeadData> </T.Row> </T.Head> diff --git a/apps/web/components/connected/syslumenn/TableLists/MasterList/translation.strings.ts b/apps/web/components/connected/syslumenn/TableLists/MasterList/translation.strings.ts new file mode 100644 index 000000000000..8c43c96c78c6 --- /dev/null +++ b/apps/web/components/connected/syslumenn/TableLists/MasterList/translation.strings.ts @@ -0,0 +1,95 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + csvHeaderMasterLicenceName: { + id: 'web.syslumenn.masterList:csvHeaderMasterLicenceName', + defaultMessage: 'Nafn', + description: 'Nafn (texti fyrir dálk í CSV skrá)', + }, + csvHeaderMasterLicenseProfession: { + id: 'web.syslumenn.masterList:csvHeaderMasterLicenseProfession', + defaultMessage: 'Iðngrein', + description: 'Iðngrein (texti fyrir dálk í CSV skrá)', + }, + csvHeaderMasterLicenceDateOfPublication: { + id: 'web.syslumenn.masterList:csvHeaderMasterLicenceDateOfPublication', + defaultMessage: 'Útgáfuár', + description: 'Útgáfuár (texti fyrir dálk í CSV skrá)', + }, + csvHeaderMasterLicenceNationalId: { + id: 'web.syslumenn.masterList:csvHeaderMasterLicenceNationalId', + defaultMessage: 'Kennitala', + description: 'Kennitala (texti fyrir dálk í CSV skrá)', + }, + filterLicenceProfessionAll: { + id: 'web.syslumenn.masterList:filterLicenceProfessionAll', + defaultMessage: 'Allar tegundir', + description: 'Allar tegundir', + }, + errorTitle: { + id: 'web.syslumenn.masterList:errorTitle', + defaultMessage: 'Villa', + description: 'Villa', + }, + errorMessage: { + id: 'web.syslumenn.masterList:errorMessage', + defaultMessage: 'Ekki tókst að sækja lista yfir meistarabréfin.', + description: 'Ekki tókst að sækja lista yfir meistarabréfin.', + }, + searchPlaceholder: { + id: 'web.syslumenn.masterList:searchPlaceholder', + defaultMessage: 'Leita', + description: 'Placeholder texti fyrir leitarbox', + }, + csvButtonLabelDefault: { + id: 'web.syslumenn.masterList:csvButtonLabelDefault', + defaultMessage: 'Sækja öll leyfi (CSV)', + description: '(Texti fyrir CSV hnapp) Sækja öll leyfi (CSV)', + }, + csvButtonLabelLoading: { + id: 'web.syslumenn.masterList:csvButtonLabelLoading', + defaultMessage: 'Sæki öll leyfi...', + description: '(Loading texti fyrir CSV hnapp) Sæki öll leyfi...', + }, + csvButtonLabelError: { + id: 'web.syslumenn.masterList:csvButtonLabelError', + defaultMessage: 'Ekki tókst að sækja leyfi, reyndu aftur', + description: + '(Villu texti fyrir CSV hnapp) Ekki tókst að sækja leyfi, reyndu aftur', + }, + csvFileTitlePrefix: { + id: 'web.syslumenn.masterList:csvFileTitlePrefix', + defaultMessage: 'Meistarabréf', + description: 'Titill á CSV skrá', + }, + noLicencesFound: { + id: 'web.syslumenn.masterList:noLicencesFound', + defaultMessage: 'Engar niðurstöður fundust.', + description: 'Texti sem birtist ef engar niðurstöður fundust.', + }, + name: { + id: 'web.syslumenn.masterList:name', + defaultMessage: 'Nafn', + description: 'Nafn (titill á dálk í töflu)', + }, + profession: { + id: 'web.syslumenn.masterList:profession', + defaultMessage: 'Iðngrein', + description: 'Iðngrein (titill á dálk í töflu)', + }, + dateOfPublication: { + id: 'web.syslumenn.masterList:dateOfPublication', + defaultMessage: 'Útgáfuár', + description: 'Útgáfuár (titill á dálk í töflu)', + }, + nationalId: { + id: 'web.syslumenn.masterList:nationalId', + defaultMessage: 'Kennitala', + description: 'Kennitala (titill á dálk í töflu)', + }, + alcoholLicencesFilterLicenceProfession: { + id: 'web.syslumenn.masterList:alcoholLicencesFilterLicenceProfession', + defaultMessage: 'Iðngrein', + description: 'Iðngrein (label á iðngrein filter)', + }, +}) diff --git a/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/ProfessionRights.tsx b/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/ProfessionRights.tsx index 37746d7cd934..867fefd2eded 100644 --- a/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/ProfessionRights.tsx +++ b/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/ProfessionRights.tsx @@ -1,4 +1,5 @@ import { CSSProperties, useState } from 'react' +import { useIntl } from 'react-intl' import { useQueryState } from 'next-usequerystate' import { useQuery } from '@apollo/client/react' @@ -17,12 +18,7 @@ import { } from '@island.is/island-ui/core' import { sortAlpha } from '@island.is/shared/utils' import { SyslumennListCsvExport } from '@island.is/web/components' -import type { - ConnectedComponent, - ProfessionRight, - Query, -} from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' +import type { ConnectedComponent, Query } from '@island.is/web/graphql/schema' import { getNormalizedSearchTerms, @@ -30,10 +26,11 @@ import { prepareCsvString, } from '../../utils' import { GET_PROFESSION_RIGHTS_QUERY } from './queries' +import { translation as t } from './translation.strings' const DEFAULT_PAGE_SIZE = 20 const DEFAULT_TABLE_MIN_HEIGHT = '800px' -const SEARCH_KEYS: (keyof ProfessionRight)[] = ['name'] +const SEARCH_KEYS = ['name', 'nationalId'] interface ProfessionRightsProps { slice: ConnectedComponent @@ -42,7 +39,7 @@ interface ProfessionRightsProps { type ListState = 'loading' | 'loaded' | 'error' const ProfessionRights = ({ slice }: ProfessionRightsProps) => { - const n = useNamespace(slice.json ?? {}) + const { formatMessage } = useIntl() const [listState, setListState] = useState<ListState>('loading') const [list, setList] = useState<Query['getProfessionRights']['list']>([]) const [currentPageNumber, setCurrentPageNumber] = useState(1) @@ -108,14 +105,17 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { return new Promise<string>((resolve, reject) => { if (list) { const headerRow = [ - n('csvHeaderName', 'Nafn') as string, - n('csvHeaderProfession', 'Starf') as string, + formatMessage(t.csvHeaderName), + formatMessage(t.csvHeaderProfession), + formatMessage(t.csvHeaderNationalId), ] const dataRows = [] for (const item of list) { dataRows.push([ item.name ?? '', // Nafn item.profession ?? '', // Starf + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (item as any).nationalId ?? '', // Kennitala ]) } return resolve(prepareCsvString(headerRow, dataRows)) @@ -125,10 +125,7 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { } // Filter - Profession - const allProfessionOption = n( - 'filterProfessionAll', - 'Allar tegundir', - ) as string + const allProfessionOption = formatMessage(t.filterProfessionAll) // Filter const filteredList = getSortedAndFilteredList( @@ -138,7 +135,8 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { : item.profession === filterProfession?.value, ), searchTerms, - SEARCH_KEYS, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + SEARCH_KEYS as any, ) const pageSize = slice?.configJson?.pageSize ?? DEFAULT_PAGE_SIZE @@ -171,11 +169,8 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { )} {listState === 'error' && ( <AlertMessage - title={n('errorTitle', 'Villa')} - message={n( - 'errorMessage', - 'Ekki tókst að sækja lista yfir starfsréttindi.', - )} + title={formatMessage(t.errorTitle)} + message={formatMessage(t.errorMessage)} type="error" /> )} @@ -193,7 +188,7 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { icon="chevronDown" size="sm" isSearchable - label={n('filterProfession', 'Starf')} + label={formatMessage(t.filterProfession)} name="professionSelect" options={availableProfessionOptions} value={filterProfession} @@ -209,7 +204,7 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { <GridColumn paddingBottom={[1, 1, 1]} span={'12/12'}> <Input name="searchInput" - placeholder={n('searchPlaceholder', 'Leita')} + placeholder={formatMessage(t.searchPlaceholder)} backgroundColor={['blue', 'blue', 'white']} size="sm" icon={{ @@ -220,22 +215,10 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { /> <Box textAlign="right" marginRight={1} marginTop={1}> <SyslumennListCsvExport - defaultLabel={n( - 'csvButtonLabelDefault', - 'Sækja öll starfsréttindi (CSV)', - )} - loadingLabel={n( - 'csvButtonLabelLoading', - 'Sæki öll starfsréttindi...', - )} - errorLabel={n( - 'csvButtonLabelError', - 'Ekki tókst að sækja starfsréttindi, reyndu aftur', - )} - csvFilenamePrefix={n( - 'csvFileTitlePrefix', - 'Starfsréttindi', - )} + defaultLabel={formatMessage(t.csvButtonLabelDefault)} + loadingLabel={formatMessage(t.csvButtonLabelLoading)} + errorLabel={formatMessage(t.csvButtonLabelError)} + csvFilenamePrefix={formatMessage(t.csvFileTitlePrefix)} csvStringProvider={csvStringProvider} /> </Box> @@ -246,9 +229,7 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { )} {listState === 'loaded' && filteredList.length === 0 && ( <Box display="flex" marginTop={4} justifyContent="center"> - <Text variant="h3"> - {n('noResultsFound', 'Engar niðurstöður fundust.')} - </Text> + <Text variant="h3">{formatMessage(t.noResultsFound)}</Text> </Box> )} {listState === 'loaded' && filteredList.length > 0 && ( @@ -257,8 +238,11 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { <T.Table> <T.Head> <T.Row> - <T.HeadData>{n('name', 'Nafn')}</T.HeadData> - <T.HeadData>{n('profession', 'Starf')}</T.HeadData> + <T.HeadData>{formatMessage(t.name)}</T.HeadData> + <T.HeadData>{formatMessage(t.profession)}</T.HeadData> + <T.HeadData align="right"> + {formatMessage(t.nationalId)} + </T.HeadData> </T.Row> </T.Head> <T.Body> @@ -278,6 +262,14 @@ const ProfessionRights = ({ slice }: ProfessionRightsProps) => { <Text variant="small">{item.profession}</Text> </Box> </T.Data> + <T.Data> + <Box> + <Text variant="small" textAlign="right"> + {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */} + {(item as any).nationalId} + </Text> + </Box> + </T.Data> </T.Row> ) })} diff --git a/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/queries.ts b/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/queries.ts index 1c4cb7246c09..7658a46be709 100644 --- a/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/queries.ts +++ b/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/queries.ts @@ -6,6 +6,7 @@ export const GET_PROFESSION_RIGHTS_QUERY = gql` list { name profession + nationalId } } } diff --git a/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/translation.strings.ts b/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/translation.strings.ts new file mode 100644 index 000000000000..9637772fc9aa --- /dev/null +++ b/apps/web/components/connected/syslumenn/TableLists/ProfessionRights/translation.strings.ts @@ -0,0 +1,84 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + csvHeaderName: { + id: 'web.syslumenn.professionRights:csvHeaderName', + defaultMessage: 'Nafn', + description: 'Nafn (texti fyrir dálk í CSV skrá)', + }, + csvHeaderProfession: { + id: 'web.syslumenn.professionRights:csvHeaderProfession', + defaultMessage: 'Starf', + description: 'Starf (texti fyrir dálk í CSV skrá)', + }, + filterProfessionAll: { + id: 'web.syslumenn.professionRights:filterProfessionAll', + defaultMessage: 'Allar tegundir', + description: 'Allar tegundir', + }, + errorTitle: { + id: 'web.syslumenn.professionRights:errorTitle', + defaultMessage: 'Villa', + description: 'Villa (Titill á villuskilaboðum ef ekki tekst ap sækja gögn)', + }, + errorMessage: { + id: 'web.syslumenn.professionRights:errorMessage', + defaultMessage: 'Ekki tókst að sækja lista yfir starfsréttindi.', + description: 'Villutexti ef ekki tókst að sækja lista yfir starfsréttindi.', + }, + filterProfession: { + id: 'web.syslumenn.professionRights:filterProfession', + defaultMessage: 'Starf', + description: 'Starf', + }, + searchPlaceholder: { + id: 'web.syslumenn.professionRights:searchPlaceholder', + defaultMessage: 'Leita', + description: 'Leita', + }, + csvButtonLabelDefault: { + id: 'web.syslumenn.professionRights:csvButtonLabelDefault', + defaultMessage: 'Sækja öll starfsréttindi (CSV)', + description: 'Texti á CSV hnapp', + }, + csvButtonLabelLoading: { + id: 'web.syslumenn.professionRights:csvButtonLabelLoading', + defaultMessage: 'Sæki öll starfsréttindi...', + description: 'Texti þegar smellt er á CSV hnapp', + }, + csvButtonLabelError: { + id: 'web.syslumenn.professionRights:csvButtonLabelError', + defaultMessage: 'Ekki tókst að sækja starfsréttindi, reyndu aftur', + description: 'Texti ef ekki tókst að sækja CSV skrá', + }, + csvFileTitlePrefix: { + id: 'web.syslumenn.professionRights:csvFileTitlePrefix', + defaultMessage: 'Starfsréttindi', + description: 'Starfsréttindi', + }, + noResultsFound: { + id: 'web.syslumenn.professionRights:noResultsFound', + defaultMessage: 'Engar niðurstöður fundust.', + description: 'Engar niðurstöður fundust.', + }, + name: { + id: 'web.syslumenn.professionRights:name', + defaultMessage: 'Nafn', + description: 'Nafn', + }, + profession: { + id: 'web.syslumenn.professionRights:profession', + defaultMessage: 'Starf', + description: 'Starf', + }, + csvHeaderNationalId: { + id: 'web.syslumenn.professionRights:csvHeaderNationalId', + defaultMessage: 'Kennitala', + description: 'Kennitala (texti fyrir dálk í CSV skrá)', + }, + nationalId: { + id: 'web.syslumenn.professionRights:nationalId', + defaultMessage: 'Kennitala', + description: 'Kennitala', + }, +}) diff --git a/apps/web/components/connected/vehicles/AircraftSearch.tsx b/apps/web/components/connected/vehicles/AircraftSearch/AircraftSearch.tsx similarity index 83% rename from apps/web/components/connected/vehicles/AircraftSearch.tsx rename to apps/web/components/connected/vehicles/AircraftSearch/AircraftSearch.tsx index 29c60fd1d18f..4119a8a05ab8 100644 --- a/apps/web/components/connected/vehicles/AircraftSearch.tsx +++ b/apps/web/components/connected/vehicles/AircraftSearch/AircraftSearch.tsx @@ -1,13 +1,8 @@ -import { useState, useEffect, CSSProperties } from 'react' +import { CSSProperties, useEffect, useState } from 'react' +import { useIntl } from 'react-intl' import { useRouter } from 'next/router' -import { - ConnectedComponent, - AircraftRegistryAircraft, - GetAllAircraftsQuery, - GetAllAircraftsQueryVariables, - AircraftRegistryPerson, -} from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' +import { useLazyQuery } from '@apollo/client' + import { AlertMessage, AsyncSearchInput, @@ -17,9 +12,17 @@ import { Table as T, Text, } from '@island.is/island-ui/core' -import { useLazyQuery } from '@apollo/client' +import { + AircraftRegistryAircraft, + AircraftRegistryPerson, + ConnectedComponent, + GetAllAircraftsQuery, + GetAllAircraftsQueryVariables, +} from '@island.is/web/graphql/schema' import { GET_ALL_AIRCRAFTS_QUERY } from '@island.is/web/screens/queries/AircraftSearch' +import { translation as translationStrings } from './translation.strings' + const DEFAULT_PAGE_SIZE = 10 const getDisplayedOwner = (aircraft: AircraftRegistryAircraft) => { @@ -49,8 +52,8 @@ const AircraftSearch = ({ slice }: AircraftSearchProps) => { const router = useRouter() const [searchInputHasFocus, setSearchInputHasFocus] = useState(false) const [searchTerm, setSearchTerm] = useState('') - const namespace = slice?.json ?? {} - const n = useNamespace(namespace) + + const { formatMessage } = useIntl() const handleSearch = (page = 1, searchValue?: string) => { let searchString = searchTerm @@ -148,7 +151,7 @@ const AircraftSearch = ({ slice }: AircraftSearchProps) => { const totalAircrafts = latestAircraftListResponse?.totalCount ?? 0 const displayedAircraftList = latestAircraftListResponse?.aircrafts ?? [] - const resetSearchText = n('resetSearch', 'Núllstilla leit') + const resetSearchText = formatMessage(translationStrings.resetSearch) const shouldDisplayResetButton = !!router?.query?.aq const minHeightFromConfig = slice?.configJson?.minHeight @@ -178,7 +181,7 @@ const AircraftSearch = ({ slice }: AircraftSearchProps) => { onBlur: () => setSearchInputHasFocus(false), name: 'public-vehicle-search', inputSize: 'medium', - placeholder: n('inputPlaceholder', 'Númer eða eigandi'), + placeholder: formatMessage(translationStrings.inputPlaceholder), colored: true, onChange: (ev) => setSearchTerm(ev.target.value), value: searchTerm, @@ -209,8 +212,8 @@ const AircraftSearch = ({ slice }: AircraftSearchProps) => { {!loading && errorOccurred && ( <AlertMessage type="error" - title={n('errorOccurredTitle', 'Villa kom upp')} - message={n('errorOccurredMessage', 'Ekki tókst að sækja loftför')} + title={formatMessage(translationStrings.errorOccurredTitle)} + message={formatMessage(translationStrings.errorOccurredMessage)} /> )} @@ -218,17 +221,14 @@ const AircraftSearch = ({ slice }: AircraftSearchProps) => { !loading && displayedAircraftList.length === 1 && selectedPage === 1 && ( - <AircraftDetails - namespace={namespace} - aircraft={displayedAircraftList[0]} - /> + <AircraftDetails aircraft={displayedAircraftList[0]} /> )} {called && !loading && !errorOccurred && displayedAircraftList.length === 0 && ( - <Text>{n('noResultFound', 'Ekkert loftfar fannst')}</Text> + <Text>{formatMessage(translationStrings.noResultFound)}</Text> )} {!errorOccurred && @@ -236,7 +236,6 @@ const AircraftSearch = ({ slice }: AircraftSearchProps) => { <Box> <Box style={tableContainerStyles}> <AircraftTable - namespace={namespace} aircrafts={displayedAircraftList} onAircraftClick={(identifier) => handleSearch(1, identifier)} /> @@ -280,17 +279,15 @@ const AircraftPerson = ({ person }: AircraftPersonProps) => { } interface AircraftDetailsProps { - namespace: Record<string, string> aircraft: AircraftRegistryAircraft } -const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { - const n = useNamespace(namespace) - +const AircraftDetails = ({ aircraft }: AircraftDetailsProps) => { + const { formatMessage } = useIntl() const displayedOwner = getDisplayedOwner(aircraft) const displayedOwnerName = getDisplayedOwnerName( aircraft, - n('andMore', 'ofl.'), + formatMessage(translationStrings.andMore), ) return ( @@ -301,7 +298,7 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { <T.Row> <T.Data> <Text fontWeight="semiBold"> - {n('identifier', 'Einkennisstafir')}: + {formatMessage(translationStrings.identifier)}: </Text> </T.Data> <T.Data> @@ -311,7 +308,7 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { <T.Row> <T.Data> <Text fontWeight="semiBold"> - {n('registrationNumber', 'Skráningarnúmer')}: + {formatMessage(translationStrings.registrationNumber)}: </Text> </T.Data> <T.Data> @@ -320,7 +317,9 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { </T.Row> <T.Row> <T.Data> - <Text fontWeight="semiBold">{n('type', 'Tegund')}:</Text> + <Text fontWeight="semiBold"> + {formatMessage(translationStrings.type)}: + </Text> </T.Data> <T.Data> <Text>{aircraft.type}</Text> @@ -329,7 +328,7 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { <T.Row> <T.Data> <Text fontWeight="semiBold"> - {n('productionYear', 'Framleiðsluár')}: + {formatMessage(translationStrings.productionYear)}: </Text> </T.Data> <T.Data> @@ -339,7 +338,7 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { <T.Row> <T.Data> <Text fontWeight="semiBold"> - {n('serialNumber', 'Raðnúmer')}: + {formatMessage(translationStrings.serialNumber)}: </Text> </T.Data> <T.Data> @@ -349,7 +348,7 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { <T.Row> <T.Data> <Text fontWeight="semiBold"> - {n('maxWeight', 'Hámarksþungi')}: + {formatMessage(translationStrings.maxWeight)}: </Text> </T.Data> <T.Data> @@ -358,7 +357,9 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { </T.Row> <T.Row> <T.Data> - <Text fontWeight="semiBold">{n('owner', 'Eigandi')}:</Text> + <Text fontWeight="semiBold"> + {formatMessage(translationStrings.owner)}: + </Text> </T.Data> <T.Data> <AircraftPerson @@ -368,7 +369,9 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { </T.Row> <T.Row> <T.Data> - <Text fontWeight="semiBold">{n('operator', 'Umráðandi')}:</Text> + <Text fontWeight="semiBold"> + {formatMessage(translationStrings.operator)}: + </Text> </T.Data> <T.Data> <AircraftPerson @@ -386,42 +389,44 @@ const AircraftDetails = ({ namespace, aircraft }: AircraftDetailsProps) => { } interface AircraftTableProps { - namespace: Record<string, string> aircrafts: AircraftRegistryAircraft[] onAircraftClick: (identifier: string) => void } -const AircraftTable = ({ - aircrafts, - namespace, - onAircraftClick, -}: AircraftTableProps) => { - const n = useNamespace(namespace) - +const AircraftTable = ({ aircrafts, onAircraftClick }: AircraftTableProps) => { + const { formatMessage } = useIntl() return ( <T.Table> <T.Head> <T.Row> <T.HeadData> <Text fontWeight="semiBold"> - {n('identifier', 'Einkennisstafir')} + {formatMessage(translationStrings.identifier)} </Text> </T.HeadData> <T.HeadData> <Text fontWeight="semiBold"> - {n('registrationNumber', 'Skráningarnúmer')} + {formatMessage(translationStrings.registrationNumber)} </Text> </T.HeadData> <T.HeadData> - <Text fontWeight="semiBold">{n('serialNumber', 'Raðnúmer')}</Text> + <Text fontWeight="semiBold"> + {formatMessage(translationStrings.serialNumber)} + </Text> </T.HeadData> <T.HeadData> - <Text fontWeight="semiBold">{n('type', 'Tegund')}</Text> + <Text fontWeight="semiBold"> + {formatMessage(translationStrings.type)} + </Text> </T.HeadData> <T.HeadData> - <Text fontWeight="semiBold">{n('owner', 'Eigandi')}</Text> + <Text fontWeight="semiBold"> + {formatMessage(translationStrings.owner)} + </Text> </T.HeadData> <T.HeadData> - <Text fontWeight="semiBold">{n('operator', 'Umráðandi')}</Text> + <Text fontWeight="semiBold"> + {formatMessage(translationStrings.operator)} + </Text> </T.HeadData> </T.Row> </T.Head> @@ -429,7 +434,7 @@ const AircraftTable = ({ {aircrafts.map((aircraft) => { const displayedOwnerName = getDisplayedOwnerName( aircraft, - n('andMore', 'ofl.'), + formatMessage(translationStrings.andMore), ) return ( <T.Row key={aircraft?.identifiers}> diff --git a/apps/web/components/connected/vehicles/AircraftSearch/translation.strings.ts b/apps/web/components/connected/vehicles/AircraftSearch/translation.strings.ts new file mode 100644 index 000000000000..0701863e8240 --- /dev/null +++ b/apps/web/components/connected/vehicles/AircraftSearch/translation.strings.ts @@ -0,0 +1,74 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + resetSearch: { + id: 'web.aircraftSearch:resetSearch', + defaultMessage: 'Núllstilla leit', + description: 'Núllstilla leit', + }, + inputPlaceholder: { + id: 'web.aircraftSearch:inputPlaceholder', + defaultMessage: 'Númer eða eigandi', + description: 'Placeholder texti á leit', + }, + errorOccurredTitle: { + id: 'web.aircraftSearch:errorOccurredTitle', + defaultMessage: 'Villa kom upp', + description: 'Titill á villuskilaboðum', + }, + errorOccurredMessage: { + id: 'web.aircraftSearch:errorOccurredMessage', + defaultMessage: 'Ekki tókst að sækja loftför', + description: 'Skilaboð þegar villa kemur upp við að sækja gögn', + }, + noResultFound: { + id: 'web.aircraftSearch:noResultFound', + defaultMessage: 'Ekkert loftfar fannst', + description: 'Texti þegar engar niðurstöður finnast', + }, + andMore: { + id: 'web.aircraftSearch:andMore', + defaultMessage: 'ofl.', + description: 'ofl.', + }, + identifier: { + id: 'web.aircraftSearch:identifier', + defaultMessage: 'Einkennisstafir', + description: 'Einkennisstafir', + }, + registrationNumber: { + id: 'web.aircraftSearch:registrationNumber', + defaultMessage: 'Skráningarnúmer', + description: 'Skráningarnúmer', + }, + type: { + id: 'web.aircraftSearch:type', + defaultMessage: 'Tegund', + description: 'Tegund', + }, + productionYear: { + id: 'web.aircraftSearch:productionYear', + defaultMessage: 'Framleiðsluár', + description: 'Framleiðsluár', + }, + serialNumber: { + id: 'web.aircraftSearch:serialNumber', + defaultMessage: 'Raðnúmer', + description: 'Raðnúmer', + }, + maxWeight: { + id: 'web.aircraftSearch:maxWeight', + defaultMessage: 'Hámarksþungi', + description: 'Hámarksþungi', + }, + owner: { + id: 'web.aircraftSearch:owner', + defaultMessage: 'Eigandi', + description: 'Eigandi', + }, + operator: { + id: 'web.aircraftSearch:operator', + defaultMessage: 'Umráðandi', + description: 'Umráðandi', + }, +}) diff --git a/apps/web/components/connected/vehicles/KilometerFee.tsx b/apps/web/components/connected/vehicles/KilometerFee/KilometerFee.tsx similarity index 75% rename from apps/web/components/connected/vehicles/KilometerFee.tsx rename to apps/web/components/connected/vehicles/KilometerFee/KilometerFee.tsx index 41f7fd7c03fb..273d987b01ec 100644 --- a/apps/web/components/connected/vehicles/KilometerFee.tsx +++ b/apps/web/components/connected/vehicles/KilometerFee/KilometerFee.tsx @@ -1,4 +1,5 @@ import { useMemo, useState } from 'react' +import { useIntl } from 'react-intl' import { Box, @@ -11,10 +12,11 @@ import { Text, } from '@island.is/island-ui/core' import { ConnectedComponent } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' import { useI18n } from '@island.is/web/i18n' import { formatCurrency } from '@island.is/web/utils/currency' +import { translation as translationStrings } from './translation.strings' + const MAX_KILOMETER_INPUT_LENGTH = 10 const calculate = (inputState: InputState, slice: ConnectedComponent) => { @@ -56,7 +58,7 @@ const initialInputState: InputState = { } const KilometerFee = ({ slice }: KilometerFeeProps) => { - const n = useNamespace(slice?.json ?? {}) + const { formatMessage } = useIntl() const { activeLocale } = useI18n() const [result, setResult] = useState(0) const [inputState, setInputState] = useState(initialInputState) @@ -64,24 +66,15 @@ const KilometerFee = ({ slice }: KilometerFeeProps) => { const timelineOptions = useMemo(() => { return [ { - label: n( - 'perYear', - activeLocale === 'is' ? 'á ári' : 'per year', - ) as string, + label: formatMessage(translationStrings.perYear), value: 'perYear', }, { - label: n( - 'perMonth', - activeLocale === 'is' ? 'á mánuði' : 'per month', - ) as string, + label: formatMessage(translationStrings.perMonth), value: 'perMonth', }, { - label: n( - 'perDay', - activeLocale === 'is' ? 'á dag' : 'per day', - ) as string, + label: formatMessage(translationStrings.perDay), value: 'perDay', }, ] @@ -113,20 +106,12 @@ const KilometerFee = ({ slice }: KilometerFeeProps) => { <Stack space={5}> <Stack space={2}> <Text variant="medium" fontWeight="light"> - {n( - 'energySource', - activeLocale === 'is' - ? 'Orkugjafi ökutækis' - : 'Energy source of vehicle', - )} + {formatMessage(translationStrings.energySource)} </Text> <Inline space={[3, 3, 5]} collapseBelow="sm"> <RadioButton - label={n( - 'electric', - activeLocale === 'is' ? 'Rafmagn' : 'Electric', - )} + label={formatMessage(translationStrings.electric)} name="electric" onChange={() => { updateInputState('energySource', 'electric') @@ -134,10 +119,7 @@ const KilometerFee = ({ slice }: KilometerFeeProps) => { checked={inputState.energySource === 'electric'} /> <RadioButton - label={n( - 'hydrogen', - activeLocale === 'is' ? 'Vetni' : 'Hydrogen', - )} + label={formatMessage(translationStrings.hydrogen)} name="hydrogen" onChange={() => { updateInputState('energySource', 'hydrogen') @@ -145,10 +127,7 @@ const KilometerFee = ({ slice }: KilometerFeeProps) => { checked={inputState.energySource === 'hydrogen'} /> <RadioButton - label={n( - 'hybrid', - activeLocale === 'is' ? 'Tengiltvinn' : 'Hybrid', - )} + label={formatMessage(translationStrings.hybrid)} name="hybrid" onChange={() => { updateInputState('energySource', 'hybrid') @@ -160,12 +139,7 @@ const KilometerFee = ({ slice }: KilometerFeeProps) => { <Stack space={2}> <Text variant="medium" fontWeight="light"> - {n( - 'kilometerInputLabel', - activeLocale === 'is' - ? 'Áætlaður akstur í kílómetrum' - : 'Estimated driving in kilometers', - )} + {formatMessage(translationStrings.kilometerInputLabel)} </Text> <Inline space={1} alignY="bottom"> @@ -176,7 +150,9 @@ const KilometerFee = ({ slice }: KilometerFeeProps) => { inputMode="numeric" size="xs" value={inputState.kilometers} - placeholder={n('kilometerInputPlaceholder', 'km')} + placeholder={formatMessage( + translationStrings.kilometerInputPlaceholder, + )} onChange={(ev) => { if ( ev.target.value.length > maxKilometerInputLength || @@ -212,25 +188,17 @@ const KilometerFee = ({ slice }: KilometerFeeProps) => { </Stack> <Button onClick={updateResult} disabled={!canCalculate}> - {n('calculate', activeLocale === 'is' ? 'Reikna' : 'Calculate')} + {formatMessage(translationStrings.calculate)} </Button> {result > 0 && ( <Stack space={1}> <Text variant="medium" fontWeight="light"> - {n( - 'resultPrefix', - activeLocale === 'is' - ? 'Áætlað kílómetragjald' - : 'Estimated kilometer fee', - )} + {formatMessage(translationStrings.resultPrefix)} </Text> <Text variant="h4" color="blue400" fontWeight="semiBold"> {formatCurrency(result, '')}{' '} - {n( - 'resultPostfix', - activeLocale === 'is' ? 'krónur á mánuði' : 'isk per month', - )} + {formatMessage(translationStrings.resultPostfix)} </Text> </Stack> )} diff --git a/apps/web/components/connected/vehicles/KilometerFee/translation.strings.ts b/apps/web/components/connected/vehicles/KilometerFee/translation.strings.ts new file mode 100644 index 000000000000..d41cf452a01e --- /dev/null +++ b/apps/web/components/connected/vehicles/KilometerFee/translation.strings.ts @@ -0,0 +1,64 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + perYear: { + id: 'web.kilometerFee:perYear', + defaultMessage: 'á ári', + description: 'á ári', + }, + perMonth: { + id: 'web.kilometerFee:perMonth', + defaultMessage: 'á mánuði', + description: 'á mánuði', + }, + perDay: { + id: 'web.kilometerFee:perDay', + defaultMessage: 'á dag', + description: 'á dag', + }, + energySource: { + id: 'web.kilometerFee:energySource', + defaultMessage: 'Orkugjafi ökutækis', + description: 'Label fyrir orkugjafa ökutækis valkost', + }, + electric: { + id: 'web.kilometerFee:electric', + defaultMessage: 'Rafmagn', + description: 'Rafmagn', + }, + hydrogen: { + id: 'web.kilometerFee:hydrogen', + defaultMessage: 'Vetni', + description: 'Vetni', + }, + hybrid: { + id: 'web.kilometerFee:hybrid', + defaultMessage: 'Tengiltvinn', + description: 'Tengiltvinn', + }, + kilometerInputLabel: { + id: 'web.kilometerFee:kilometerInputLabel', + defaultMessage: 'Áætlaður akstur í kílómetrum', + description: 'Label fyrir áætlaðan akstur í kílómetrum', + }, + kilometerInputPlaceholder: { + id: 'web.kilometerFee:kilometerInputPlaceholder', + defaultMessage: 'km', + description: 'Placeholder fyrir kílómetra input reit', + }, + calculate: { + id: 'web.kilometerFee:calculate', + defaultMessage: 'Reikna', + description: 'Texti sem birtist á reikna takka', + }, + resultPrefix: { + id: 'web.kilometerFee:resultPrefix', + defaultMessage: 'Áætlað kílómetragjald', + description: 'Áætlað kílómetragjald', + }, + resultPostfix: { + id: 'web.kilometerFee:resultPostfix', + defaultMessage: 'krónur á mánuði', + description: 'krónur á mánuði', + }, +}) diff --git a/apps/web/components/connected/vehicles/PlateAvailableSearch.css.ts b/apps/web/components/connected/vehicles/PlateAvailableSearch/PlateAvailableSearch.css.ts similarity index 100% rename from apps/web/components/connected/vehicles/PlateAvailableSearch.css.ts rename to apps/web/components/connected/vehicles/PlateAvailableSearch/PlateAvailableSearch.css.ts diff --git a/apps/web/components/connected/vehicles/PlateAvailableSearch.tsx b/apps/web/components/connected/vehicles/PlateAvailableSearch/PlateAvailableSearch.tsx similarity index 71% rename from apps/web/components/connected/vehicles/PlateAvailableSearch.tsx rename to apps/web/components/connected/vehicles/PlateAvailableSearch/PlateAvailableSearch.tsx index fb272f4f4a42..8267fb6fc8b9 100644 --- a/apps/web/components/connected/vehicles/PlateAvailableSearch.tsx +++ b/apps/web/components/connected/vehicles/PlateAvailableSearch/PlateAvailableSearch.tsx @@ -1,19 +1,17 @@ -import { useLazyQuery } from '@apollo/client' import { useState } from 'react' +import { useIntl } from 'react-intl' +import { useLazyQuery } from '@apollo/client' + import { AlertMessage, AsyncSearchInput, Box, Text, } from '@island.is/island-ui/core' -import { - ConnectedComponent, - Query, - QueryPlateAvailableArgs, -} from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' +import { Query, QueryPlateAvailableArgs } from '@island.is/web/graphql/schema' import { PLATE_AVAILABLE_SEARCH_QUERY } from '@island.is/web/screens/queries/PublicVehicleSearch' +import { translation as translationStrings } from './translation.strings' import * as styles from './PlateAvailableSearch.css' const PLATE_NUMBER_REPLACEMENT_KEY = '{{USER_INPUT}}' @@ -45,12 +43,8 @@ const TextWithReplacedBoldValue = ({ ) } -interface PlateAvailableSearchProps { - slice: ConnectedComponent -} - -const PlateAvailableSearch = ({ slice }: PlateAvailableSearchProps) => { - const n = useNamespace(slice?.json ?? {}) +const PlateAvailableSearch = () => { + const { formatMessage } = useIntl() const [hasFocus, setHasFocus] = useState(false) const [searchValue, setSearchValue] = useState('') const [shouldDisplayValidationError, setShouldDisplayValidationError] = @@ -72,10 +66,7 @@ const PlateAvailableSearch = ({ slice }: PlateAvailableSearchProps) => { }) } - const aboveText = n( - 'aboveText', - 'Hér má athuga hvort tiltekið einkanúmer sé laust', - ) as string + const aboveText = formatMessage(translationStrings.aboveText) return ( <Box> @@ -94,7 +85,7 @@ const PlateAvailableSearch = ({ slice }: PlateAvailableSearchProps) => { inputProps={{ name: 'plate-available-search', inputSize: 'large', - placeholder: n('inputPlaceholder', 'Leita að einkanúmeri'), + placeholder: formatMessage(translationStrings.inputPlaceholder), colored: true, onChange: (ev) => setSearchValue(ev.target.value.toUpperCase()), value: searchValue, @@ -112,20 +103,16 @@ const PlateAvailableSearch = ({ slice }: PlateAvailableSearchProps) => { {!loading && error && ( <AlertMessage type="error" - title={n('errorOccurredTitle', 'Villa kom upp')} - message={n( - 'errorOccurredMessage', - 'Ekki tókst að upplýsingar um einkanúmer', - )} + title={formatMessage(translationStrings.errorOccurredTitle)} + message={formatMessage(translationStrings.errorOccurredMessage)} /> )} {shouldDisplayValidationError && ( <Text variant="small"> - <span className={styles.bold}>{n('attention', 'Athugið:')} </span> - {n( - 'regnoValidationText', - 'Einkanúmer mega vera 2-6 íslenskir stafir eða tölur, og eitt bil að auki, en mega ekki líkjast venjulegum skráningarnúmerum.', - )} + <span className={styles.bold}> + {formatMessage(translationStrings.attention)}{' '} + </span> + {formatMessage(translationStrings.regnoValidationText)} </Text> )} {!error && @@ -134,10 +121,9 @@ const PlateAvailableSearch = ({ slice }: PlateAvailableSearchProps) => { data.plateAvailable?.regno && data.plateAvailable.available && ( <TextWithReplacedBoldValue - text={n( - 'plateAvailableText', - `Merkið ${PLATE_NUMBER_REPLACEMENT_KEY} er laust`, - )} + text={formatMessage(translationStrings.plateAvailableText, { + PLATE_NUMBER: PLATE_NUMBER_REPLACEMENT_KEY, + })} replacementKey={PLATE_NUMBER_REPLACEMENT_KEY} replacementValue={data.plateAvailable.regno} /> @@ -148,10 +134,9 @@ const PlateAvailableSearch = ({ slice }: PlateAvailableSearchProps) => { data.plateAvailable?.regno && !data.plateAvailable.available && ( <TextWithReplacedBoldValue - text={n( - 'plateUnavailableText', - `Merkið ${PLATE_NUMBER_REPLACEMENT_KEY} er í notkun og ekki laust til úthlutunar`, - )} + text={formatMessage(translationStrings.plateUnavailableText, { + PLATE_NUMBER: PLATE_NUMBER_REPLACEMENT_KEY, + })} replacementKey={PLATE_NUMBER_REPLACEMENT_KEY} replacementValue={data.plateAvailable.regno} /> diff --git a/apps/web/components/connected/vehicles/PlateAvailableSearch/translation.strings.ts b/apps/web/components/connected/vehicles/PlateAvailableSearch/translation.strings.ts new file mode 100644 index 000000000000..8dd1c8d5f913 --- /dev/null +++ b/apps/web/components/connected/vehicles/PlateAvailableSearch/translation.strings.ts @@ -0,0 +1,47 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + aboveText: { + id: 'web.plateAvailableSearch:aboveText', + defaultMessage: 'Hér má athuga hvort tiltekið einkanúmer sé laust', + description: 'Texti sem birtist fyrir ofan', + }, + inputPlaceholder: { + id: 'web.plateAvailableSearch:inputPlaceholder', + defaultMessage: 'Leita að einkanúmeri', + description: 'Placeholder texti fyrir leit', + }, + errorOccurredTitle: { + id: 'web.plateAvailableSearch:errorOccurredTitle', + defaultMessage: 'Villa kom upp', + description: 'Titill á villuskilaboðum þegar villa kemur upp', + }, + errorOccurredMessage: { + id: 'web.plateAvailableSearch:errorOccurredMessage', + defaultMessage: 'Ekki tókst að upplýsingar um einkanúmer', + description: 'Skilboð sem birtast þegar villa kemur upp', + }, + attention: { + id: 'web.plateAvailableSearch:attention', + defaultMessage: 'Athugið:', + description: 'Athugið', + }, + regnoValidationText: { + id: 'web.plateAvailableSearch:regnoValidationText', + defaultMessage: + 'Einkanúmer mega vera 2-6 íslenskir stafir eða tölur, og eitt bil að auki, en mega ekki líkjast venjulegum skráningarnúmerum.', + description: + 'Skilaboð sem birtast þegar einkanúmer leit er ekki með rétt validation', + }, + plateAvailableText: { + id: 'web.plateAvailableSearch:plateAvailableText', + defaultMessage: 'Merkið {PLATE_NUMBER} er laust', + description: 'Texti sem birtist þegar merkið er laust', + }, + plateUnavailableText: { + id: 'web.plateAvailableSearch:plateUnavailableText', + defaultMessage: + 'Merkið {PLATE_NUMBER} er í notkun og ekki laust til úthlutunar', + description: 'Texti sem birtist þegar merkið er ekki laust til úthlutunar', + }, +}) diff --git a/apps/web/components/connected/vehicles/PublicShipSearch.tsx b/apps/web/components/connected/vehicles/PublicShipSearch/PublicShipSearch.tsx similarity index 82% rename from apps/web/components/connected/vehicles/PublicShipSearch.tsx rename to apps/web/components/connected/vehicles/PublicShipSearch/PublicShipSearch.tsx index 6ada10ffe6b4..4cc83ff207a1 100644 --- a/apps/web/components/connected/vehicles/PublicShipSearch.tsx +++ b/apps/web/components/connected/vehicles/PublicShipSearch/PublicShipSearch.tsx @@ -1,7 +1,9 @@ -import { useLazyQuery } from '@apollo/client' import { useEffect, useRef, useState } from 'react' -import { useRouter } from 'next/router' +import { useIntl } from 'react-intl' import isEqual from 'lodash/isEqual' +import { useRouter } from 'next/router' +import { useLazyQuery } from '@apollo/client' + import { AlertMessage, AsyncSearchInput, @@ -10,21 +12,17 @@ import { Table, Text, } from '@island.is/island-ui/core' -import { PUBLIC_SHIP_SEARCH_QUERY } from '@island.is/web/screens/queries/PublicShipSearch' import { - ConnectedComponent, GetPublicShipSearchQuery, GetPublicShipSearchQueryVariables, } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' +import { PUBLIC_SHIP_SEARCH_QUERY } from '@island.is/web/screens/queries/PublicShipSearch' -const numberFormatter = new Intl.NumberFormat('de-DE') +import { translation as translationStrings } from './translation.strings' -interface PublicShipSearchProps { - slice: ConnectedComponent -} +const numberFormatter = new Intl.NumberFormat('de-DE') -const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { +const PublicShipSearch = () => { const [hasFocus, setHasFocus] = useState(false) const [searchValue, setSearchValue] = useState('') const router = useRouter() @@ -34,7 +32,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { GetPublicShipSearchQuery['shipRegistryShipSearch']['ships'] >([]) - const n = useNamespace(slice?.json ?? {}) + const { formatMessage } = useIntl() const [search, { loading, error, called }] = useLazyQuery< GetPublicShipSearchQuery, @@ -99,7 +97,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { inputProps={{ name: 'public-ship-search', inputSize: 'large', - placeholder: n('inputPlaceholder', 'Númer eða nafn skips'), + placeholder: formatMessage(translationStrings.inputPlaceholder), colored: true, onChange: (ev) => setSearchValue(ev.target.value), value: searchValue, @@ -116,15 +114,15 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { {called && !loading && !error && noShipWasFound && ( <Box> <Text fontWeight="semiBold"> - {n('noShipFound', 'Ekkert skip fannst')} + {formatMessage(translationStrings.noShipFound)} </Text> </Box> )} {called && !loading && error && ( <AlertMessage type="error" - title={n('errorOccurredTitle', 'Villa kom upp')} - message={n('errorOccurredMessage', 'Ekki tókst að sækja skip')} + title={formatMessage(translationStrings.errorOccurredTitle)} + message={formatMessage(translationStrings.errorOccurredMessage)} /> )} <Box marginBottom={3} marginTop={4}> @@ -135,9 +133,8 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Head> <Table.HeadData> <Text fontWeight="semiBold"> - {n( - 'shipInformationTableHeaderText', - 'Niðurstaða leitar:', + {formatMessage( + translationStrings.shipInformationTableHeaderText, )} </Text> </Table.HeadData> @@ -149,7 +146,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('shipName', 'Nafn:')} + {formatMessage(translationStrings.shipName)} </Text> </Table.Data> <Table.Data> @@ -161,7 +158,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('shipType', 'Gerð:')} + {formatMessage(translationStrings.shipType)} </Text> </Table.Data> <Table.Data> @@ -173,7 +170,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('regno', 'Skráningarnúmer:')} + {formatMessage(translationStrings.regno)} </Text> </Table.Data> <Table.Data> @@ -185,7 +182,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('region', 'Umdæmi:')} + {formatMessage(translationStrings.region)} </Text> </Table.Data> <Table.Data> @@ -197,7 +194,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('portOfRegistry', 'Heimahöfn:')} + {formatMessage(translationStrings.portOfRegistry)} </Text> </Table.Data> <Table.Data> @@ -209,7 +206,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('regStatus', 'Skráningar staða:')} + {formatMessage(translationStrings.regStatus)} </Text> </Table.Data> <Table.Data> @@ -221,13 +218,15 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('grossTonnage', 'Brúttótonn:')}{' '} + {formatMessage(translationStrings.grossTonnage)}{' '} </Text> </Table.Data> <Table.Data> <Text> {numberFormatter.format(shipInformation.grossTonnage)}{' '} - {n('grossTonnageMeasurement', 't')} + {formatMessage( + translationStrings.grossTonnageMeasurement, + )} </Text> </Table.Data> </Table.Row> @@ -236,13 +235,13 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('length', 'Skráð lengd:')} + {formatMessage(translationStrings.length)} </Text> </Table.Data> <Table.Data> <Text> {numberFormatter.format(shipInformation.length)}{' '} - {n('lengthMeasurement', 'm')} + {formatMessage(translationStrings.lengthMeasurement)} </Text> </Table.Data> </Table.Row> @@ -252,14 +251,14 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('constructed', 'Smíðað:')} + {formatMessage(translationStrings.constructed)} </Text> </Table.Data> <Table.Data> <Text> {shipInformation.manufactionYear}{' '} {shipInformation.manufacturer && - n('manufacturedBy', 'af')}{' '} + formatMessage(translationStrings.manufacturedBy)}{' '} {shipInformation.manufacturer} </Text> </Table.Data> @@ -270,7 +269,7 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('owners', 'Eigendur:')} + {formatMessage(translationStrings.owners)} </Text> </Table.Data> <Table.Data> @@ -280,16 +279,15 @@ const PublicShipSearch = ({ slice }: PublicShipSearchProps) => { <Text> {owner?.name}{' '} {owner?.nationalId - ? `${n('nationalIdPrefix', 'kt.')} ${ - owner.nationalId - }` + ? `${formatMessage( + translationStrings.nationalIdPrefix, + )} ${owner.nationalId}` : ''} </Text> <Text> {typeof owner?.sharePercentage === 'number' - ? `${owner.sharePercentage}% ${n( - 'sharePercentageProperty', - 'eign', + ? `${owner.sharePercentage}% ${formatMessage( + translationStrings.sharePercentageProperty, )}` : ''} </Text> diff --git a/apps/web/components/connected/vehicles/PublicShipSearch/translation.strings.ts b/apps/web/components/connected/vehicles/PublicShipSearch/translation.strings.ts new file mode 100644 index 000000000000..3fcc16c996d7 --- /dev/null +++ b/apps/web/components/connected/vehicles/PublicShipSearch/translation.strings.ts @@ -0,0 +1,104 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + inputPlaceholder: { + id: 'web.publicShipSearch:inputPlaceholder', + defaultMessage: 'Númer eða nafn skips', + description: 'Placeholder texti fyrir leit', + }, + noShipFound: { + id: 'web.publicShipSearch:noShipFound', + defaultMessage: 'Ekkert skip fannst', + description: 'Texti þegar ekkert skip fannst við leit', + }, + errorOccurredTitle: { + id: 'web.publicShipSearch:errorOccurredTitle', + defaultMessage: 'Villa kom upp', + description: 'Titill þegar villa kemur upp', + }, + errorOccurredMessage: { + id: 'web.publicShipSearch:errorOccurredMessage', + defaultMessage: 'Ekki tókst að sækja skip', + description: 'Skilaboð sem birtast þegar villa kemur upp', + }, + shipInformationTableHeaderText: { + id: 'web.publicShipSearch:shipInformationTableHeaderText', + defaultMessage: 'Niðurstaða leitar:', + description: 'Texti í töflu haus', + }, + shipName: { + id: 'web.publicShipSearch:shipName', + defaultMessage: 'Nafn:', + description: 'Nafn', + }, + shipType: { + id: 'web.publicShipSearch:shipType', + defaultMessage: 'Gerð:', + description: 'Gerð', + }, + regno: { + id: 'web.publicShipSearch:regno', + defaultMessage: 'Skráningarnúmer:', + description: 'Skráningarnúmer', + }, + region: { + id: 'web.publicShipSearch:region', + defaultMessage: 'Umdæmi:', + description: 'Umdæmi', + }, + portOfRegistry: { + id: 'web.publicShipSearch:portOfRegistry', + defaultMessage: 'Heimahöfn:', + description: 'Heimahöfn', + }, + regStatus: { + id: 'web.publicShipSearch:regStatus', + defaultMessage: 'Skráningar staða:', + description: 'Skráningar staða', + }, + grossTonnage: { + id: 'web.publicShipSearch:grossTonnage', + defaultMessage: 'Brúttótonn:', + description: 'Brúttótonn', + }, + grossTonnageMeasurement: { + id: 'web.publicShipSearch:grossTonnageMeasurement', + defaultMessage: 't', + description: 'Tonn mælineining', + }, + length: { + id: 'web.publicShipSearch:length', + defaultMessage: 'Skráð lengd:', + description: 'Skráð lengd', + }, + lengthMeasurement: { + id: 'web.publicShipSearch:lengthMeasurement', + defaultMessage: 'm', + description: 'Lengdar mælieining', + }, + constructed: { + id: 'web.publicShipSearch:constructed', + defaultMessage: 'Smíðað:', + description: 'Smíðað', + }, + manufacturedBy: { + id: 'web.publicShipSearch:manufacturedBy', + defaultMessage: 'af', + description: 'Smiðað af', + }, + owners: { + id: 'web.publicShipSearch:owners', + defaultMessage: 'Eigendur:', + description: 'Eigendur', + }, + nationalIdPrefix: { + id: 'web.publicShipSearch:nationalIdPrefix', + defaultMessage: 'kt.', + description: 'Kennitala forskeyti', + }, + sharePercentageProperty: { + id: 'web.publicShipSearch:sharePercentageProperty', + defaultMessage: 'eign', + description: 'eign', + }, +}) diff --git a/apps/web/components/connected/vehicles/PublicVehicleSearch.tsx b/apps/web/components/connected/vehicles/PublicVehicleSearch/PublicVehicleSearch.tsx similarity index 84% rename from apps/web/components/connected/vehicles/PublicVehicleSearch.tsx rename to apps/web/components/connected/vehicles/PublicVehicleSearch/PublicVehicleSearch.tsx index 48d8005f5c2e..7c8df97f52be 100644 --- a/apps/web/components/connected/vehicles/PublicVehicleSearch.tsx +++ b/apps/web/components/connected/vehicles/PublicVehicleSearch/PublicVehicleSearch.tsx @@ -1,7 +1,9 @@ -import { useLazyQuery } from '@apollo/client' import { useEffect, useRef, useState } from 'react' +import { useIntl } from 'react-intl' import isEqual from 'lodash/isEqual' import { useRouter } from 'next/router' +import { useLazyQuery } from '@apollo/client' + import { AlertMessage, AsyncSearchInput, @@ -9,14 +11,14 @@ import { Table, Text, } from '@island.is/island-ui/core' -import { PUBLIC_VEHICLE_SEARCH_QUERY } from '@island.is/web/screens/queries/PublicVehicleSearch' import { - ConnectedComponent, GetPublicVehicleSearchQuery, GetPublicVehicleSearchQueryVariables, } from '@island.is/web/graphql/schema' -import { useNamespace } from '@island.is/web/hooks' import { useDateUtils } from '@island.is/web/i18n/useDateUtils' +import { PUBLIC_VEHICLE_SEARCH_QUERY } from '@island.is/web/screens/queries/PublicVehicleSearch' + +import { translation as translationStrings } from './translation.strings' const numberFormatter = new Intl.NumberFormat('de-DE') @@ -40,18 +42,14 @@ const formatVehicleType = (vehicleInformation?: { }` } -interface PublicVehicleSearchProps { - slice: ConnectedComponent -} - -const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { +const PublicVehicleSearch = () => { const [hasFocus, setHasFocus] = useState(false) const [searchValue, setSearchValue] = useState('') const { format } = useDateUtils() const router = useRouter() const queryParamInitialized = useRef(false) - const n = useNamespace(slice?.json ?? {}) + const { formatMessage } = useIntl() const [search, { loading, data, error, called }] = useLazyQuery< GetPublicVehicleSearchQuery, @@ -117,12 +115,6 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { return ( <Box> - <Text> - {n( - 'inputEyebrowText', - 'Skráningarnúmer, fastanúmer eða verksmiðjunúmer:', - )} - </Text> <Box marginTop={2} marginBottom={3}> <AsyncSearchInput buttonProps={{ @@ -135,7 +127,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { inputProps={{ name: 'public-vehicle-search', inputSize: 'large', - placeholder: n('inputPlaceholder', 'Leita í ökutækjaskrá'), + placeholder: formatMessage(translationStrings.inputPlaceholder), colored: true, onChange: (ev) => setSearchValue(ev.target.value.toUpperCase()), value: searchValue, @@ -153,15 +145,15 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { {called && !loading && !error && vehicleWasNotFound && ( <Box> <Text fontWeight="semiBold"> - {n('noVehicleFound', 'Ekkert ökutæki fannst')} + {formatMessage(translationStrings.noVehicleFound)} </Text> </Box> )} {called && !loading && error && ( <AlertMessage type="error" - title={n('errorOccurredTitle', 'Villa kom upp')} - message={n('errorOccurredMessage', 'Ekki tókst að sækja ökutæki')} + title={formatMessage(translationStrings.errorOccurredTitle)} + message={formatMessage(translationStrings.errorOccurredMessage)} /> )} {vehicleInformation && ( @@ -170,7 +162,9 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Head> <Table.HeadData> <Text fontWeight="semiBold"> - {n('vehicleInformationTableHeaderText', 'Niðurstaða leitar:')} + {formatMessage( + translationStrings.vehicleInformationTableHeaderText, + )} </Text> </Table.HeadData> <Table.HeadData /> @@ -180,7 +174,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('vehicleCommercialName', 'Tegund:')} + {formatMessage(translationStrings.vehicleCommercialName)} </Text> </Table.Data> <Table.Data> @@ -192,7 +186,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('regno', 'Skráningarnúmer:')} + {formatMessage(translationStrings.regno)} </Text> </Table.Data> <Table.Data> @@ -204,7 +198,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('permno', 'Fastanúmer:')} + {formatMessage(translationStrings.permno)} </Text> </Table.Data> <Table.Data> @@ -216,7 +210,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('vin', 'Verksmiðjunúmer:')} + {formatMessage(translationStrings.vin)} </Text> </Table.Data> <Table.Data> @@ -228,7 +222,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('firstRegDate', 'Fyrst skráð:')} + {formatMessage(translationStrings.firstRegDate)} </Text> </Table.Data> <Table.Data> @@ -240,7 +234,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('co2NEDC', 'CO2-gildi (NEDC):')} + {formatMessage(translationStrings.co2NEDC)} </Text> </Table.Data> <Table.Data> @@ -252,7 +246,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('weightedCo2NEDC', 'Vegið CO2-gildi (NEDC):')} + {formatMessage(translationStrings.weightedCo2NEDC)} </Text> </Table.Data> <Table.Data> @@ -264,7 +258,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('Co2WLTP', 'CO2-gildi (WLTP):')} + {formatMessage(translationStrings.Co2WLTP)} </Text> </Table.Data> <Table.Data> @@ -276,7 +270,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('weightedCo2WLTP', 'Vegið CO2-gildi (WLTP):')} + {formatMessage(translationStrings.weightedCo2WLTP)} </Text> </Table.Data> <Table.Data> @@ -288,7 +282,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('mass', 'Eigin þyngd:')} + {formatMessage(translationStrings.mass)} </Text> </Table.Data> <Table.Data> @@ -302,7 +296,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('massLaden', 'Leyfð heildarþyngd:')} + {formatMessage(translationStrings.massLaden)} </Text> </Table.Data> <Table.Data> @@ -316,7 +310,7 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('vehicleStatus', 'Staða:')} + {formatMessage(translationStrings.vehicleStatus)} </Text> </Table.Data> <Table.Data> @@ -328,7 +322,9 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { <Table.Row> <Table.Data> <Text fontWeight="semiBold"> - {n('nextVehicleMainInspection', 'Næsta skoðun:')} + {formatMessage( + translationStrings.nextVehicleMainInspection, + )} </Text> </Table.Data> <Table.Data> @@ -340,14 +336,6 @@ const PublicVehicleSearch = ({ slice }: PublicVehicleSearchProps) => { </Table.Table> </Box> )} - <Box marginTop={2}> - <Text variant="small"> - {n( - 'moreInfoText', - 'Hægt er að fletta upp bílnúmerum á Mínum síðum og fá þar ítarlegri upplýsingar', - )} - </Text> - </Box> </Box> ) } diff --git a/apps/web/components/connected/vehicles/PublicVehicleSearch/translation.strings.ts b/apps/web/components/connected/vehicles/PublicVehicleSearch/translation.strings.ts new file mode 100644 index 000000000000..fea8582d2cdf --- /dev/null +++ b/apps/web/components/connected/vehicles/PublicVehicleSearch/translation.strings.ts @@ -0,0 +1,94 @@ +import { defineMessages } from 'react-intl' + +export const translation = defineMessages({ + inputPlaceholder: { + id: 'web.publicVehicleSearch:inputPlaceholder', + defaultMessage: 'Leita í ökutækjaskrá', + description: 'Placeholder texti á leit', + }, + noVehicleFound: { + id: 'web.publicVehicleSearch:noVehicleFound', + defaultMessage: 'Ekkert ökutæki fannst', + description: 'Texti sem birtist þegar leit skilar engum niðurstöðum', + }, + errorOccurredTitle: { + id: 'web.publicVehicleSearch:errorOccurredTitle', + defaultMessage: 'Villa kom upp', + description: 'Titill á skilaboðum þegar villa kemur upp', + }, + errorOccurredMessage: { + id: 'web.publicVehicleSearch:errorOccurredMessage', + defaultMessage: 'Ekki tókst að sækja ökutæki', + description: 'Skilaboð þegar villa kemur upp', + }, + vehicleInformationTableHeaderText: { + id: 'web.publicVehicleSearch:vehicleInformationTableHeaderText', + defaultMessage: 'Niðurstaða leitar:', + description: 'Texti í töflu haus á niðurstöðum', + }, + vehicleCommercialName: { + id: 'web.publicVehicleSearch:vehicleCommercialName', + defaultMessage: 'Tegund:', + description: 'Tegund', + }, + regno: { + id: 'web.publicVehicleSearch:regno', + defaultMessage: 'Skráningarnúmer:', + description: 'Skráningarnúmer', + }, + permno: { + id: 'web.publicVehicleSearch:permno', + defaultMessage: 'Fastanúmer:', + description: 'Fastanúmer', + }, + vin: { + id: 'web.publicVehicleSearch:vin', + defaultMessage: 'Verksmiðjunúmer:', + description: 'Verksmiðjunúmer', + }, + firstRegDate: { + id: 'web.publicVehicleSearch:firstRegDate', + defaultMessage: 'Fyrst skráð:', + description: 'Fyrst skráð', + }, + co2NEDC: { + id: 'web.publicVehicleSearch:co2NEDC', + defaultMessage: 'CO2-gildi (NEDC):', + description: 'CO2-gildi (NEDC)', + }, + weightedCo2NEDC: { + id: 'web.publicVehicleSearch:weightedCo2NEDC', + defaultMessage: 'Vegið CO2-gildi (NEDC):', + description: 'Vegið CO2-gildi (NEDC)', + }, + Co2WLTP: { + id: 'web.publicVehicleSearch:Co2WLTP', + defaultMessage: 'CO2-gildi (WLTP):', + description: 'CO2-gildi (WLTP)', + }, + weightedCo2WLTP: { + id: 'web.publicVehicleSearch:weightedCo2WLTP', + defaultMessage: 'Vegið CO2-gildi (WLTP):', + description: 'Vegið CO2-gildi (WLTP)', + }, + mass: { + id: 'web.publicVehicleSearch:mass', + defaultMessage: 'Eigin þyngd:', + description: 'Eigin þyngd', + }, + massLaden: { + id: 'web.publicVehicleSearch:massLaden', + defaultMessage: 'Leyfð heildarþyngd:', + description: 'Leyfð heildarþyngd', + }, + vehicleStatus: { + id: 'web.publicVehicleSearch:vehicleStatus', + defaultMessage: 'Staða:', + description: 'Staða', + }, + nextVehicleMainInspection: { + id: 'web.publicVehicleSearch:nextVehicleMainInspection', + defaultMessage: 'Næsta skoðun:', + description: 'Næsta skoðun', + }, +}) diff --git a/apps/web/components/connected/vehicles/index.ts b/apps/web/components/connected/vehicles/index.ts index a18d2541d63b..6bf01a78476d 100644 --- a/apps/web/components/connected/vehicles/index.ts +++ b/apps/web/components/connected/vehicles/index.ts @@ -1,22 +1,31 @@ import dynamic from 'next/dynamic' export const PublicVehicleSearch = dynamic( - () => import('./PublicVehicleSearch'), + () => import('./PublicVehicleSearch/PublicVehicleSearch'), { ssr: false }, ) -export const AircraftSearch = dynamic(() => import('./AircraftSearch'), { - ssr: true, -}) +export const AircraftSearch = dynamic( + () => import('./AircraftSearch/AircraftSearch'), + { + ssr: true, + }, +) export const PlateAvailableSearch = dynamic( - () => import('./PlateAvailableSearch'), + () => import('./PlateAvailableSearch/PlateAvailableSearch'), { ssr: false }, ) -export const PublicShipSearch = dynamic(() => import('./PublicShipSearch'), { - ssr: false, -}) +export const PublicShipSearch = dynamic( + () => import('./PublicShipSearch/PublicShipSearch'), + { + ssr: false, + }, +) -export const KilometerFee = dynamic(() => import('./KilometerFee'), { - ssr: true, -}) +export const KilometerFee = dynamic( + () => import('./KilometerFee/KilometerFee'), + { + ssr: true, + }, +) diff --git a/apps/web/components/real.ts b/apps/web/components/real.ts index 0f63a858efdf..e6f84f68ca80 100644 --- a/apps/web/components/real.ts +++ b/apps/web/components/real.ts @@ -93,3 +93,5 @@ export * from './BorderAbove/BorderAbove' export * from './TableOfContents/TableOfContents' export * from './CardWithFeaturedItems/CardWithFeaturedItems' export * from './GenericList/GenericList' +export * from './GenericList/LatestGenericListItems/LatestGenericListItems' +export * from './connected/ParentalLeaveCalculator/ParentalLeaveCalculator' diff --git a/apps/web/hooks/useViewport.ts b/apps/web/hooks/useViewport.ts index d2ee3e3c1505..4815617572c8 100644 --- a/apps/web/hooks/useViewport.ts +++ b/apps/web/hooks/useViewport.ts @@ -1,4 +1,5 @@ -import { useState, useEffect, useCallback } from 'react' +import { useCallback, useEffect, useState } from 'react' +import { useWindowSize } from 'react-use' type Position = { x: number @@ -28,33 +29,6 @@ export const useScrollPosition = (): Position => { return position } -export const useWindowSize = (): Rect => { - const [size, setSize] = useState<Rect>({ width: 0, height: 0 }) - - const onResize = useCallback(() => { - setSize({ - width: - window.innerWidth || - document.documentElement.clientWidth || - document.body.clientWidth, - height: - window.innerHeight || - document.documentElement.clientHeight || - document.body.clientHeight, - }) - }, []) - - useEffect(() => { - onResize() - window.addEventListener('resize', onResize, { passive: true }) - return () => { - window.removeEventListener('resize', onResize) - } - }, [onResize]) - - return size -} - const useViewport = (): [Position, Rect] => { const position = useScrollPosition() const size = useWindowSize() @@ -63,3 +37,5 @@ const useViewport = (): [Position, Rect] => { } export default useViewport + +export { useWindowSize } diff --git a/apps/web/infra/web.ts b/apps/web/infra/web.ts index 9ce9bf73fd4f..a85284278d41 100644 --- a/apps/web/infra/web.ts +++ b/apps/web/infra/web.ts @@ -45,7 +45,6 @@ export const serviceSetup = (services: { prod: { 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', }, }, paths: ['/'], @@ -54,8 +53,8 @@ export const serviceSetup = (services: { .liveness('/liveness') .readiness({ path: '/readiness', initialDelaySeconds: 20 }) .resources({ - limits: { cpu: '400m', memory: '768Mi' }, - requests: { cpu: '200m', memory: '384Mi' }, + limits: { cpu: '1000m', memory: '768Mi' }, + requests: { cpu: '300m', memory: '384Mi' }, }) .replicaCount({ default: 2, diff --git a/apps/web/layouts/main.tsx b/apps/web/layouts/main.tsx index e243da70d00f..1b1f67eab40f 100644 --- a/apps/web/layouts/main.tsx +++ b/apps/web/layouts/main.tsx @@ -659,9 +659,7 @@ Layout.getProps = async ({ apolloClient, locale, req }) => { alertBannerContent: { ...alertBanner, showAlertBanner: - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error make web strict - alertBanner.showAlertBanner && + alertBanner?.showAlertBanner && (!req?.headers.cookie || req.headers.cookie?.indexOf(alertBannerId) === -1), }, diff --git a/apps/web/project.json b/apps/web/project.json index a1a12fdb04f5..cc84a6ffdf79 100644 --- a/apps/web/project.json +++ b/apps/web/project.json @@ -82,7 +82,7 @@ "extract-strings": { "executor": "nx:run-commands", "options": { - "command": "yarn ts-node -P libs/localization/tsconfig.lib.json libs/localization/scripts/extract 'apps/web/screens/**/*.{js,ts,tsx}'" + "command": "yarn ts-node -P libs/localization/tsconfig.lib.json libs/localization/scripts/extract 'apps/web/{screens,components}/**/!(*.d).{js,ts,tsx}'" } }, "export": { diff --git a/apps/web/public/.well-known/apple-app-site-association b/apps/web/public/.well-known/apple-app-site-association index aee27712cdc5..fd6c7aeccefd 100644 --- a/apps/web/public/.well-known/apple-app-site-association +++ b/apps/web/public/.well-known/apple-app-site-association @@ -1,5 +1,24 @@ { - "applinks": {}, + "applinks": { + "details": [ + { + "appIDs": [ + "J3WWZR9JLF.is.island.app", + "J3WWZR9JLF.is.island.app.dev" + ], + "components": [ + { "/": "/minarsidur/postholf" }, + { "/": "/minarsidur/postholf/*" }, + { "/": "/minarsidur/skirteini" }, + { "/": "/minarsidur/eignir/fasteignir" }, + { "/": "/minarsidur/eignir/fasteignir/*" }, + { "/": "/minarsidur/eignir/okutaeki/min-okutaeki" }, + { "/": "/minarsidur/eignir/okutaeki/min-okutaeki/*" }, + { "/": "/minarsidur/loftbru" } + ] + } + ] + }, "webcredentials": { "apps": [ "J3WWZR9JLF.is.island.app", diff --git a/apps/web/public/assets/pdf.worker.min.mjs b/apps/web/public/assets/pdf.worker.min.mjs new file mode 100644 index 000000000000..47f8bf4887a0 --- /dev/null +++ b/apps/web/public/assets/pdf.worker.min.mjs @@ -0,0 +1,23 @@ +/* eslint-disable */ + +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */var e={9306:(e,t,i)=>{var a=i(4901),r=i(6823),s=TypeError;e.exports=function(e){if(a(e))return e;throw new s(r(e)+" is not a function")}},3506:(e,t,i)=>{var a=i(3925),r=String,s=TypeError;e.exports=function(e){if(a(e))return e;throw new s("Can't set "+r(e)+" as a prototype")}},7080:(e,t,i)=>{var a=i(4402).has;e.exports=function(e){a(e);return e}},679:(e,t,i)=>{var a=i(1625),r=TypeError;e.exports=function(e,t){if(a(t,e))return e;throw new r("Incorrect invocation")}},8551:(e,t,i)=>{var a=i(34),r=String,s=TypeError;e.exports=function(e){if(a(e))return e;throw new s(r(e)+" is not an object")}},7811:e=>{e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},7394:(e,t,i)=>{var a=i(6706),r=i(4576),s=TypeError;e.exports=a(ArrayBuffer.prototype,"byteLength","get")||function(e){if("ArrayBuffer"!==r(e))throw new s("ArrayBuffer expected");return e.byteLength}},3238:(e,t,i)=>{var a=i(9504),r=i(7394),s=a(ArrayBuffer.prototype.slice);e.exports=function(e){if(0!==r(e))return!1;try{s(e,0,0);return!1}catch(e){return!0}}},5636:(e,t,i)=>{var a=i(4475),r=i(9504),s=i(6706),n=i(7696),o=i(3238),g=i(7394),c=i(4483),C=i(1548),h=a.structuredClone,l=a.ArrayBuffer,Q=a.DataView,E=a.TypeError,u=Math.min,d=l.prototype,f=Q.prototype,p=r(d.slice),m=s(d,"resizable","get"),y=s(d,"maxByteLength","get"),w=r(f.getInt8),b=r(f.setInt8);e.exports=(C||c)&&function(e,t,i){var a,r=g(e),s=void 0===t?r:n(t),d=!m||!m(e);if(o(e))throw new E("ArrayBuffer is detached");if(C){e=h(e,{transfer:[e]});if(r===s&&(i||d))return e}if(r>=s&&(!i||d))a=p(e,0,s);else{var f=i&&!d&&y?{maxByteLength:y(e)}:void 0;a=new l(s,f);for(var D=new Q(e),S=new Q(a),k=u(s,r),R=0;R<k;R++)b(S,R,w(D,R))}C||c(e);return a}},4644:(e,t,i)=>{var a,r,s,n=i(7811),o=i(3724),g=i(4475),c=i(4901),C=i(34),h=i(9297),l=i(6955),Q=i(6823),E=i(6699),u=i(6840),d=i(2106),f=i(1625),p=i(2787),m=i(2967),y=i(8227),w=i(3392),b=i(1181),D=b.enforce,S=b.get,k=g.Int8Array,R=k&&k.prototype,N=g.Uint8ClampedArray,G=N&&N.prototype,x=k&&p(k),U=R&&p(R),M=Object.prototype,L=g.TypeError,H=y("toStringTag"),J=w("TYPED_ARRAY_TAG"),Y="TypedArrayConstructor",v=n&&!!m&&"Opera"!==l(g.opera),T=!1,K={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},q={BigInt64Array:8,BigUint64Array:8},getTypedArrayConstructor=function(e){var t=p(e);if(C(t)){var i=S(t);return i&&h(i,Y)?i[Y]:getTypedArrayConstructor(t)}},isTypedArray=function(e){if(!C(e))return!1;var t=l(e);return h(K,t)||h(q,t)};for(a in K)(s=(r=g[a])&&r.prototype)?D(s)[Y]=r:v=!1;for(a in q)(s=(r=g[a])&&r.prototype)&&(D(s)[Y]=r);if(!v||!c(x)||x===Function.prototype){x=function TypedArray(){throw new L("Incorrect invocation")};if(v)for(a in K)g[a]&&m(g[a],x)}if(!v||!U||U===M){U=x.prototype;if(v)for(a in K)g[a]&&m(g[a].prototype,U)}v&&p(G)!==U&&m(G,U);if(o&&!h(U,H)){T=!0;d(U,H,{configurable:!0,get:function(){return C(this)?this[J]:void 0}});for(a in K)g[a]&&E(g[a],J,a)}e.exports={NATIVE_ARRAY_BUFFER_VIEWS:v,TYPED_ARRAY_TAG:T&&J,aTypedArray:function(e){if(isTypedArray(e))return e;throw new L("Target is not a typed array")},aTypedArrayConstructor:function(e){if(c(e)&&(!m||f(x,e)))return e;throw new L(Q(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,i,a){if(o){if(i)for(var r in K){var s=g[r];if(s&&h(s.prototype,e))try{delete s.prototype[e]}catch(i){try{s.prototype[e]=t}catch(e){}}}U[e]&&!i||u(U,e,i?t:v&&R[e]||t,a)}},exportTypedArrayStaticMethod:function(e,t,i){var a,r;if(o){if(m){if(i)for(a in K)if((r=g[a])&&h(r,e))try{delete r[e]}catch(e){}if(x[e]&&!i)return;try{return u(x,e,i?t:v&&x[e]||t)}catch(e){}}for(a in K)!(r=g[a])||r[e]&&!i||u(r,e,t)}},getTypedArrayConstructor,isView:function isView(e){if(!C(e))return!1;var t=l(e);return"DataView"===t||h(K,t)||h(q,t)},isTypedArray,TypedArray:x,TypedArrayPrototype:U}},5370:(e,t,i)=>{var a=i(6198);e.exports=function(e,t,i){for(var r=0,s=arguments.length>2?i:a(t),n=new e(s);s>r;)n[r]=t[r++];return n}},9617:(e,t,i)=>{var a=i(5397),r=i(5610),s=i(6198),createMethod=function(e){return function(t,i,n){var o=a(t),g=s(o);if(0===g)return!e&&-1;var c,C=r(n,g);if(e&&i!=i){for(;g>C;)if((c=o[C++])!=c)return!0}else for(;g>C;C++)if((e||C in o)&&o[C]===i)return e||C||0;return!e&&-1}};e.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},4527:(e,t,i)=>{var a=i(3724),r=i(4376),s=TypeError,n=Object.getOwnPropertyDescriptor,o=a&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=o?function(e,t){if(r(e)&&!n(e,"length").writable)throw new s("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},7628:(e,t,i)=>{var a=i(6198);e.exports=function(e,t){for(var i=a(e),r=new t(i),s=0;s<i;s++)r[s]=e[i-s-1];return r}},9928:(e,t,i)=>{var a=i(6198),r=i(1291),s=RangeError;e.exports=function(e,t,i,n){var o=a(e),g=r(i),c=g<0?o+g:g;if(c>=o||c<0)throw new s("Incorrect index");for(var C=new t(o),h=0;h<o;h++)C[h]=h===c?n:e[h];return C}},6319:(e,t,i)=>{var a=i(8551),r=i(9539);e.exports=function(e,t,i,s){try{return s?t(a(i)[0],i[1]):t(i)}catch(t){r(e,"throw",t)}}},4576:(e,t,i)=>{var a=i(9504),r=a({}.toString),s=a("".slice);e.exports=function(e){return s(r(e),8,-1)}},6955:(e,t,i)=>{var a=i(2140),r=i(4901),s=i(4576),n=i(8227)("toStringTag"),o=Object,g="Arguments"===s(function(){return arguments}());e.exports=a?s:function(e){var t,i,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,t){try{return e[t]}catch(e){}}(t=o(e),n))?i:g?s(t):"Object"===(a=s(t))&&r(t.callee)?"Arguments":a}},7740:(e,t,i)=>{var a=i(9297),r=i(5031),s=i(7347),n=i(4913);e.exports=function(e,t,i){for(var o=r(t),g=n.f,c=s.f,C=0;C<o.length;C++){var h=o[C];a(e,h)||i&&a(i,h)||g(e,h,c(t,h))}}},2211:(e,t,i)=>{var a=i(9039);e.exports=!a((function(){function F(){}F.prototype.constructor=null;return Object.getPrototypeOf(new F)!==F.prototype}))},2529:e=>{e.exports=function(e,t){return{value:e,done:t}}},6699:(e,t,i)=>{var a=i(3724),r=i(4913),s=i(6980);e.exports=a?function(e,t,i){return r.f(e,t,s(1,i))}:function(e,t,i){e[t]=i;return e}},6980:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},4659:(e,t,i)=>{var a=i(3724),r=i(4913),s=i(6980);e.exports=function(e,t,i){a?r.f(e,t,s(0,i)):e[t]=i}},2106:(e,t,i)=>{var a=i(283),r=i(4913);e.exports=function(e,t,i){i.get&&a(i.get,t,{getter:!0});i.set&&a(i.set,t,{setter:!0});return r.f(e,t,i)}},6840:(e,t,i)=>{var a=i(4901),r=i(4913),s=i(283),n=i(9433);e.exports=function(e,t,i,o){o||(o={});var g=o.enumerable,c=void 0!==o.name?o.name:t;a(i)&&s(i,c,o);if(o.global)g?e[t]=i:n(t,i);else{try{o.unsafe?e[t]&&(g=!0):delete e[t]}catch(e){}g?e[t]=i:r.f(e,t,{value:i,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e}},6279:(e,t,i)=>{var a=i(6840);e.exports=function(e,t,i){for(var r in t)a(e,r,t[r],i);return e}},9433:(e,t,i)=>{var a=i(4475),r=Object.defineProperty;e.exports=function(e,t){try{r(a,e,{value:t,configurable:!0,writable:!0})}catch(i){a[e]=t}return t}},3724:(e,t,i)=>{var a=i(9039);e.exports=!a((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4483:(e,t,i)=>{var a,r,s,n,o=i(4475),g=i(9714),c=i(1548),C=o.structuredClone,h=o.ArrayBuffer,l=o.MessageChannel,Q=!1;if(c)Q=function(e){C(e,{transfer:[e]})};else if(h)try{l||(a=g("worker_threads"))&&(l=a.MessageChannel);if(l){r=new l;s=new h(2);n=function(e){r.port1.postMessage(null,[e])};if(2===s.byteLength){n(s);0===s.byteLength&&(Q=n)}}}catch(e){}e.exports=Q},4055:(e,t,i)=>{var a=i(4475),r=i(34),s=a.document,n=r(s)&&r(s.createElement);e.exports=function(e){return n?s.createElement(e):{}}},6837:e=>{var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},5002:e=>{e.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},7290:(e,t,i)=>{var a=i(516),r=i(9088);e.exports=!a&&!r&&"object"==typeof window&&"object"==typeof document},516:e=>{e.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},9088:(e,t,i)=>{var a=i(4475),r=i(4576);e.exports="process"===r(a.process)},9392:e=>{e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},7388:(e,t,i)=>{var a,r,s=i(4475),n=i(9392),o=s.process,g=s.Deno,c=o&&o.versions||g&&g.version,C=c&&c.v8;C&&(r=(a=C.split("."))[0]>0&&a[0]<4?1:+(a[0]+a[1]));!r&&n&&(!(a=n.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=n.match(/Chrome\/(\d+)/))&&(r=+a[1]);e.exports=r},8727:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6193:(e,t,i)=>{var a=i(9504),r=Error,s=a("".replace),n=String(new r("zxcasd").stack),o=/\n\s*at [^:]*:[^\n]*/,g=o.test(n);e.exports=function(e,t){if(g&&"string"==typeof e&&!r.prepareStackTrace)for(;t--;)e=s(e,o,"");return e}},6518:(e,t,i)=>{var a=i(4475),r=i(7347).f,s=i(6699),n=i(6840),o=i(9433),g=i(7740),c=i(2796);e.exports=function(e,t){var i,C,h,l,Q,E=e.target,u=e.global,d=e.stat;if(i=u?a:d?a[E]||o(E,{}):a[E]&&a[E].prototype)for(C in t){l=t[C];h=e.dontCallGetSet?(Q=r(i,C))&&Q.value:i[C];if(!c(u?C:E+(d?".":"#")+C,e.forced)&&void 0!==h){if(typeof l==typeof h)continue;g(l,h)}(e.sham||h&&h.sham)&&s(l,"sham",!0);n(i,C,l,e)}}},9039:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},6080:(e,t,i)=>{var a=i(7476),r=i(9306),s=i(616),n=a(a.bind);e.exports=function(e,t){r(e);return void 0===t?e:s?n(e,t):function(){return e.apply(t,arguments)}}},616:(e,t,i)=>{var a=i(9039);e.exports=!a((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},9565:(e,t,i)=>{var a=i(616),r=Function.prototype.call;e.exports=a?r.bind(r):function(){return r.apply(r,arguments)}},350:(e,t,i)=>{var a=i(3724),r=i(9297),s=Function.prototype,n=a&&Object.getOwnPropertyDescriptor,o=r(s,"name"),g=o&&"something"===function something(){}.name,c=o&&(!a||a&&n(s,"name").configurable);e.exports={EXISTS:o,PROPER:g,CONFIGURABLE:c}},6706:(e,t,i)=>{var a=i(9504),r=i(9306);e.exports=function(e,t,i){try{return a(r(Object.getOwnPropertyDescriptor(e,t)[i]))}catch(e){}}},7476:(e,t,i)=>{var a=i(4576),r=i(9504);e.exports=function(e){if("Function"===a(e))return r(e)}},9504:(e,t,i)=>{var a=i(616),r=Function.prototype,s=r.call,n=a&&r.bind.bind(s,s);e.exports=a?n:function(e){return function(){return s.apply(e,arguments)}}},7751:(e,t,i)=>{var a=i(4475),r=i(4901);e.exports=function(e,t){return arguments.length<2?(i=a[e],r(i)?i:void 0):a[e]&&a[e][t];var i}},1767:e=>{e.exports=function(e){return{iterator:e,next:e.next,done:!1}}},851:(e,t,i)=>{var a=i(6955),r=i(5966),s=i(4117),n=i(6269),o=i(8227)("iterator");e.exports=function(e){if(!s(e))return r(e,o)||r(e,"@@iterator")||n[a(e)]}},81:(e,t,i)=>{var a=i(9565),r=i(9306),s=i(8551),n=i(6823),o=i(851),g=TypeError;e.exports=function(e,t){var i=arguments.length<2?o(e):t;if(r(i))return s(a(i,e));throw new g(n(e)+" is not iterable")}},5966:(e,t,i)=>{var a=i(9306),r=i(4117);e.exports=function(e,t){var i=e[t];return r(i)?void 0:a(i)}},3789:(e,t,i)=>{var a=i(9306),r=i(8551),s=i(9565),n=i(1291),o=i(1767),g="Invalid size",c=RangeError,C=TypeError,h=Math.max,SetRecord=function(e,t){this.set=e;this.size=h(t,0);this.has=a(e.has);this.keys=a(e.keys)};SetRecord.prototype={getIterator:function(){return o(r(s(this.keys,this.set)))},includes:function(e){return s(this.has,this.set,e)}};e.exports=function(e){r(e);var t=+e.size;if(t!=t)throw new C(g);var i=n(t);if(i<0)throw new c(g);return new SetRecord(e,i)}},4475:function(e){var check=function(e){return e&&e.Math===Math&&e};e.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof global&&global)||check("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(e,t,i)=>{var a=i(9504),r=i(8981),s=a({}.hasOwnProperty);e.exports=Object.hasOwn||function hasOwn(e,t){return s(r(e),t)}},421:e=>{e.exports={}},397:(e,t,i)=>{var a=i(7751);e.exports=a("document","documentElement")},5917:(e,t,i)=>{var a=i(3724),r=i(9039),s=i(4055);e.exports=!a&&!r((function(){return 7!==Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},7055:(e,t,i)=>{var a=i(9504),r=i(9039),s=i(4576),n=Object,o=a("".split);e.exports=r((function(){return!n("z").propertyIsEnumerable(0)}))?function(e){return"String"===s(e)?o(e,""):n(e)}:n},3167:(e,t,i)=>{var a=i(4901),r=i(34),s=i(2967);e.exports=function(e,t,i){var n,o;s&&a(n=t.constructor)&&n!==i&&r(o=n.prototype)&&o!==i.prototype&&s(e,o);return e}},3706:(e,t,i)=>{var a=i(9504),r=i(4901),s=i(7629),n=a(Function.toString);r(s.inspectSource)||(s.inspectSource=function(e){return n(e)});e.exports=s.inspectSource},1181:(e,t,i)=>{var a,r,s,n=i(8622),o=i(4475),g=i(34),c=i(6699),C=i(9297),h=i(7629),l=i(6119),Q=i(421),E="Object already initialized",u=o.TypeError,d=o.WeakMap;if(n||h.state){var f=h.state||(h.state=new d);f.get=f.get;f.has=f.has;f.set=f.set;a=function(e,t){if(f.has(e))throw new u(E);t.facade=e;f.set(e,t);return t};r=function(e){return f.get(e)||{}};s=function(e){return f.has(e)}}else{var p=l("state");Q[p]=!0;a=function(e,t){if(C(e,p))throw new u(E);t.facade=e;c(e,p,t);return t};r=function(e){return C(e,p)?e[p]:{}};s=function(e){return C(e,p)}}e.exports={set:a,get:r,has:s,enforce:function(e){return s(e)?r(e):a(e,{})},getterFor:function(e){return function(t){var i;if(!g(t)||(i=r(t)).type!==e)throw new u("Incompatible receiver, "+e+" required");return i}}}},4209:(e,t,i)=>{var a=i(8227),r=i(6269),s=a("iterator"),n=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||n[s]===e)}},4376:(e,t,i)=>{var a=i(4576);e.exports=Array.isArray||function isArray(e){return"Array"===a(e)}},1108:(e,t,i)=>{var a=i(6955);e.exports=function(e){var t=a(e);return"BigInt64Array"===t||"BigUint64Array"===t}},4901:e=>{var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},2796:(e,t,i)=>{var a=i(9039),r=i(4901),s=/#|\.prototype\./,isForced=function(e,t){var i=o[n(e)];return i===c||i!==g&&(r(t)?a(t):!!t)},n=isForced.normalize=function(e){return String(e).replace(s,".").toLowerCase()},o=isForced.data={},g=isForced.NATIVE="N",c=isForced.POLYFILL="P";e.exports=isForced},4117:e=>{e.exports=function(e){return null==e}},34:(e,t,i)=>{var a=i(4901);e.exports=function(e){return"object"==typeof e?null!==e:a(e)}},3925:(e,t,i)=>{var a=i(34);e.exports=function(e){return a(e)||null===e}},6395:e=>{e.exports=!1},757:(e,t,i)=>{var a=i(7751),r=i(4901),s=i(1625),n=i(7040),o=Object;e.exports=n?function(e){return"symbol"==typeof e}:function(e){var t=a("Symbol");return r(t)&&s(t.prototype,o(e))}},507:(e,t,i)=>{var a=i(9565);e.exports=function(e,t,i){for(var r,s,n=i?e:e.iterator,o=e.next;!(r=a(o,n)).done;)if(void 0!==(s=t(r.value)))return s}},2652:(e,t,i)=>{var a=i(6080),r=i(9565),s=i(8551),n=i(6823),o=i(4209),g=i(6198),c=i(1625),C=i(81),h=i(851),l=i(9539),Q=TypeError,Result=function(e,t){this.stopped=e;this.result=t},E=Result.prototype;e.exports=function(e,t,i){var u,d,f,p,m,y,w,b=i&&i.that,D=!(!i||!i.AS_ENTRIES),S=!(!i||!i.IS_RECORD),k=!(!i||!i.IS_ITERATOR),R=!(!i||!i.INTERRUPTED),N=a(t,b),stop=function(e){u&&l(u,"normal",e);return new Result(!0,e)},callFn=function(e){if(D){s(e);return R?N(e[0],e[1],stop):N(e[0],e[1])}return R?N(e,stop):N(e)};if(S)u=e.iterator;else if(k)u=e;else{if(!(d=h(e)))throw new Q(n(e)+" is not iterable");if(o(d)){for(f=0,p=g(e);p>f;f++)if((m=callFn(e[f]))&&c(E,m))return m;return new Result(!1)}u=C(e,d)}y=S?e.next:u.next;for(;!(w=r(y,u)).done;){try{m=callFn(w.value)}catch(e){l(u,"throw",e)}if("object"==typeof m&&m&&c(E,m))return m}return new Result(!1)}},9539:(e,t,i)=>{var a=i(9565),r=i(8551),s=i(5966);e.exports=function(e,t,i){var n,o;r(e);try{if(!(n=s(e,"return"))){if("throw"===t)throw i;return i}n=a(n,e)}catch(e){o=!0;n=e}if("throw"===t)throw i;if(o)throw n;r(n);return i}},9462:(e,t,i)=>{var a=i(9565),r=i(2360),s=i(6699),n=i(6279),o=i(8227),g=i(1181),c=i(5966),C=i(7657).IteratorPrototype,h=i(2529),l=i(9539),Q=o("toStringTag"),E="IteratorHelper",u="WrapForValidIterator",d=g.set,createIteratorProxyPrototype=function(e){var t=g.getterFor(e?u:E);return n(r(C),{next:function next(){var i=t(this);if(e)return i.nextHandler();try{var a=i.done?void 0:i.nextHandler();return h(a,i.done)}catch(e){i.done=!0;throw e}},return:function(){var i=t(this),r=i.iterator;i.done=!0;if(e){var s=c(r,"return");return s?a(s,r):h(void 0,!0)}if(i.inner)try{l(i.inner.iterator,"normal")}catch(e){return l(r,"throw",e)}l(r,"normal");return h(void 0,!0)}})},f=createIteratorProxyPrototype(!0),p=createIteratorProxyPrototype(!1);s(p,Q,"Iterator Helper");e.exports=function(e,t){var i=function Iterator(i,a){if(a){a.iterator=i.iterator;a.next=i.next}else a=i;a.type=t?u:E;a.nextHandler=e;a.counter=0;a.done=!1;d(this,a)};i.prototype=t?f:p;return i}},713:(e,t,i)=>{var a=i(9565),r=i(9306),s=i(8551),n=i(1767),o=i(9462),g=i(6319),c=o((function(){var e=this.iterator,t=s(a(this.next,e));if(!(this.done=!!t.done))return g(e,this.mapper,[t.value,this.counter++],!0)}));e.exports=function map(e){s(this);r(e);return new c(n(this),{mapper:e})}},7657:(e,t,i)=>{var a,r,s,n=i(9039),o=i(4901),g=i(34),c=i(2360),C=i(2787),h=i(6840),l=i(8227),Q=i(6395),E=l("iterator"),u=!1;[].keys&&("next"in(s=[].keys())?(r=C(C(s)))!==Object.prototype&&(a=r):u=!0);!g(a)||n((function(){var e={};return a[E].call(e)!==e}))?a={}:Q&&(a=c(a));o(a[E])||h(a,E,(function(){return this}));e.exports={IteratorPrototype:a,BUGGY_SAFARI_ITERATORS:u}},6269:e=>{e.exports={}},6198:(e,t,i)=>{var a=i(8014);e.exports=function(e){return a(e.length)}},283:(e,t,i)=>{var a=i(9504),r=i(9039),s=i(4901),n=i(9297),o=i(3724),g=i(350).CONFIGURABLE,c=i(3706),C=i(1181),h=C.enforce,l=C.get,Q=String,E=Object.defineProperty,u=a("".slice),d=a("".replace),f=a([].join),p=o&&!r((function(){return 8!==E((function(){}),"length",{value:8}).length})),m=String(String).split("String"),y=e.exports=function(e,t,i){"Symbol("===u(Q(t),0,7)&&(t="["+d(Q(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]");i&&i.getter&&(t="get "+t);i&&i.setter&&(t="set "+t);(!n(e,"name")||g&&e.name!==t)&&(o?E(e,"name",{value:t,configurable:!0}):e.name=t);p&&i&&n(i,"arity")&&e.length!==i.arity&&E(e,"length",{value:i.arity});try{i&&n(i,"constructor")&&i.constructor?o&&E(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var a=h(e);n(a,"source")||(a.source=f(m,"string"==typeof t?t:""));return e};Function.prototype.toString=y((function toString(){return s(this)&&l(this).source||c(this)}),"toString")},741:e=>{var t=Math.ceil,i=Math.floor;e.exports=Math.trunc||function trunc(e){var a=+e;return(a>0?i:t)(a)}},6043:(e,t,i)=>{var a=i(9306),r=TypeError,PromiseCapability=function(e){var t,i;this.promise=new e((function(e,a){if(void 0!==t||void 0!==i)throw new r("Bad Promise constructor");t=e;i=a}));this.resolve=a(t);this.reject=a(i)};e.exports.f=function(e){return new PromiseCapability(e)}},2603:(e,t,i)=>{var a=i(655);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:a(e)}},2360:(e,t,i)=>{var a,r=i(8551),s=i(6801),n=i(8727),o=i(421),g=i(397),c=i(4055),C=i(6119),h="prototype",l="script",Q=C("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(e){return"<"+l+">"+e+"</"+l+">"},NullProtoObjectViaActiveX=function(e){e.write(scriptTag(""));e.close();var t=e.parentWindow.Object;e=null;return t},NullProtoObject=function(){try{a=new ActiveXObject("htmlfile")}catch(e){}NullProtoObject="undefined"!=typeof document?document.domain&&a?NullProtoObjectViaActiveX(a):function(){var e,t=c("iframe"),i="java"+l+":";t.style.display="none";g.appendChild(t);t.src=String(i);(e=t.contentWindow.document).open();e.write(scriptTag("document.F=Object"));e.close();return e.F}():NullProtoObjectViaActiveX(a);for(var e=n.length;e--;)delete NullProtoObject[h][n[e]];return NullProtoObject()};o[Q]=!0;e.exports=Object.create||function create(e,t){var i;if(null!==e){EmptyConstructor[h]=r(e);i=new EmptyConstructor;EmptyConstructor[h]=null;i[Q]=e}else i=NullProtoObject();return void 0===t?i:s.f(i,t)}},6801:(e,t,i)=>{var a=i(3724),r=i(8686),s=i(4913),n=i(8551),o=i(5397),g=i(1072);t.f=a&&!r?Object.defineProperties:function defineProperties(e,t){n(e);for(var i,a=o(t),r=g(t),c=r.length,C=0;c>C;)s.f(e,i=r[C++],a[i]);return e}},4913:(e,t,i)=>{var a=i(3724),r=i(5917),s=i(8686),n=i(8551),o=i(6969),g=TypeError,c=Object.defineProperty,C=Object.getOwnPropertyDescriptor,h="enumerable",l="configurable",Q="writable";t.f=a?s?function defineProperty(e,t,i){n(e);t=o(t);n(i);if("function"==typeof e&&"prototype"===t&&"value"in i&&Q in i&&!i[Q]){var a=C(e,t);if(a&&a[Q]){e[t]=i.value;i={configurable:l in i?i[l]:a[l],enumerable:h in i?i[h]:a[h],writable:!1}}}return c(e,t,i)}:c:function defineProperty(e,t,i){n(e);t=o(t);n(i);if(r)try{return c(e,t,i)}catch(e){}if("get"in i||"set"in i)throw new g("Accessors not supported");"value"in i&&(e[t]=i.value);return e}},7347:(e,t,i)=>{var a=i(3724),r=i(9565),s=i(8773),n=i(6980),o=i(5397),g=i(6969),c=i(9297),C=i(5917),h=Object.getOwnPropertyDescriptor;t.f=a?h:function getOwnPropertyDescriptor(e,t){e=o(e);t=g(t);if(C)try{return h(e,t)}catch(e){}if(c(e,t))return n(!r(s.f,e,t),e[t])}},8480:(e,t,i)=>{var a=i(1828),r=i(8727).concat("length","prototype");t.f=Object.getOwnPropertyNames||function getOwnPropertyNames(e){return a(e,r)}},3717:(e,t)=>{t.f=Object.getOwnPropertySymbols},2787:(e,t,i)=>{var a=i(9297),r=i(4901),s=i(8981),n=i(6119),o=i(2211),g=n("IE_PROTO"),c=Object,C=c.prototype;e.exports=o?c.getPrototypeOf:function(e){var t=s(e);if(a(t,g))return t[g];var i=t.constructor;return r(i)&&t instanceof i?i.prototype:t instanceof c?C:null}},1625:(e,t,i)=>{var a=i(9504);e.exports=a({}.isPrototypeOf)},1828:(e,t,i)=>{var a=i(9504),r=i(9297),s=i(5397),n=i(9617).indexOf,o=i(421),g=a([].push);e.exports=function(e,t){var i,a=s(e),c=0,C=[];for(i in a)!r(o,i)&&r(a,i)&&g(C,i);for(;t.length>c;)r(a,i=t[c++])&&(~n(C,i)||g(C,i));return C}},1072:(e,t,i)=>{var a=i(1828),r=i(8727);e.exports=Object.keys||function keys(e){return a(e,r)}},8773:(e,t)=>{var i={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,r=a&&!i.call({1:2},1);t.f=r?function propertyIsEnumerable(e){var t=a(this,e);return!!t&&t.enumerable}:i},2967:(e,t,i)=>{var a=i(6706),r=i(34),s=i(7750),n=i(3506);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,i={};try{(e=a(Object.prototype,"__proto__","set"))(i,[]);t=i instanceof Array}catch(e){}return function setPrototypeOf(i,a){s(i);n(a);if(!r(i))return i;t?e(i,a):i.__proto__=a;return i}}():void 0)},4270:(e,t,i)=>{var a=i(9565),r=i(4901),s=i(34),n=TypeError;e.exports=function(e,t){var i,o;if("string"===t&&r(i=e.toString)&&!s(o=a(i,e)))return o;if(r(i=e.valueOf)&&!s(o=a(i,e)))return o;if("string"!==t&&r(i=e.toString)&&!s(o=a(i,e)))return o;throw new n("Can't convert object to primitive value")}},5031:(e,t,i)=>{var a=i(7751),r=i(9504),s=i(8480),n=i(3717),o=i(8551),g=r([].concat);e.exports=a("Reflect","ownKeys")||function ownKeys(e){var t=s.f(o(e)),i=n.f;return i?g(t,i(e)):t}},7979:(e,t,i)=>{var a=i(8551);e.exports=function(){var e=a(this),t="";e.hasIndices&&(t+="d");e.global&&(t+="g");e.ignoreCase&&(t+="i");e.multiline&&(t+="m");e.dotAll&&(t+="s");e.unicode&&(t+="u");e.unicodeSets&&(t+="v");e.sticky&&(t+="y");return t}},7750:(e,t,i)=>{var a=i(4117),r=TypeError;e.exports=function(e){if(a(e))throw new r("Can't call method on "+e);return e}},9286:(e,t,i)=>{var a=i(4402),r=i(8469),s=a.Set,n=a.add;e.exports=function(e){var t=new s;r(e,(function(e){n(t,e)}));return t}},3440:(e,t,i)=>{var a=i(7080),r=i(4402),s=i(9286),n=i(5170),o=i(3789),g=i(8469),c=i(507),C=r.has,h=r.remove;e.exports=function difference(e){var t=a(this),i=o(e),r=s(t);n(t)<=i.size?g(t,(function(e){i.includes(e)&&h(r,e)})):c(i.getIterator(),(function(e){C(t,e)&&h(r,e)}));return r}},4402:(e,t,i)=>{var a=i(9504),r=Set.prototype;e.exports={Set,add:a(r.add),has:a(r.has),remove:a(r.delete),proto:r}},8750:(e,t,i)=>{var a=i(7080),r=i(4402),s=i(5170),n=i(3789),o=i(8469),g=i(507),c=r.Set,C=r.add,h=r.has;e.exports=function intersection(e){var t=a(this),i=n(e),r=new c;s(t)>i.size?g(i.getIterator(),(function(e){h(t,e)&&C(r,e)})):o(t,(function(e){i.includes(e)&&C(r,e)}));return r}},4449:(e,t,i)=>{var a=i(7080),r=i(4402).has,s=i(5170),n=i(3789),o=i(8469),g=i(507),c=i(9539);e.exports=function isDisjointFrom(e){var t=a(this),i=n(e);if(s(t)<=i.size)return!1!==o(t,(function(e){if(i.includes(e))return!1}),!0);var C=i.getIterator();return!1!==g(C,(function(e){if(r(t,e))return c(C,"normal",!1)}))}},3838:(e,t,i)=>{var a=i(7080),r=i(5170),s=i(8469),n=i(3789);e.exports=function isSubsetOf(e){var t=a(this),i=n(e);return!(r(t)>i.size)&&!1!==s(t,(function(e){if(!i.includes(e))return!1}),!0)}},8527:(e,t,i)=>{var a=i(7080),r=i(4402).has,s=i(5170),n=i(3789),o=i(507),g=i(9539);e.exports=function isSupersetOf(e){var t=a(this),i=n(e);if(s(t)<i.size)return!1;var c=i.getIterator();return!1!==o(c,(function(e){if(!r(t,e))return g(c,"normal",!1)}))}},8469:(e,t,i)=>{var a=i(9504),r=i(507),s=i(4402),n=s.Set,o=s.proto,g=a(o.forEach),c=a(o.keys),C=c(new n).next;e.exports=function(e,t,i){return i?r({iterator:c(e),next:C},t):g(e,t)}},4916:(e,t,i)=>{var a=i(7751),createSetLike=function(e){return{size:e,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};e.exports=function(e){var t=a("Set");try{(new t)[e](createSetLike(0));try{(new t)[e](createSetLike(-1));return!1}catch(e){return!0}}catch(e){return!1}}},5170:(e,t,i)=>{var a=i(6706),r=i(4402);e.exports=a(r.proto,"size","get")||function(e){return e.size}},3650:(e,t,i)=>{var a=i(7080),r=i(4402),s=i(9286),n=i(3789),o=i(507),g=r.add,c=r.has,C=r.remove;e.exports=function symmetricDifference(e){var t=a(this),i=n(e).getIterator(),r=s(t);o(i,(function(e){c(t,e)?C(r,e):g(r,e)}));return r}},4204:(e,t,i)=>{var a=i(7080),r=i(4402).add,s=i(9286),n=i(3789),o=i(507);e.exports=function union(e){var t=a(this),i=n(e).getIterator(),g=s(t);o(i,(function(e){r(g,e)}));return g}},6119:(e,t,i)=>{var a=i(5745),r=i(3392),s=a("keys");e.exports=function(e){return s[e]||(s[e]=r(e))}},7629:(e,t,i)=>{var a=i(6395),r=i(4475),s=i(9433),n="__core-js_shared__",o=e.exports=r[n]||s(n,{});(o.versions||(o.versions=[])).push({version:"3.37.1",mode:a?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(e,t,i)=>{var a=i(7629);e.exports=function(e,t){return a[e]||(a[e]=t||{})}},1548:(e,t,i)=>{var a=i(4475),r=i(9039),s=i(7388),n=i(7290),o=i(516),g=i(9088),c=a.structuredClone;e.exports=!!c&&!r((function(){if(o&&s>92||g&&s>94||n&&s>97)return!1;var e=new ArrayBuffer(8),t=c(e,{transfer:[e]});return 0!==e.byteLength||8!==t.byteLength}))},4495:(e,t,i)=>{var a=i(7388),r=i(9039),s=i(4475).String;e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol("symbol detection");return!s(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},5610:(e,t,i)=>{var a=i(1291),r=Math.max,s=Math.min;e.exports=function(e,t){var i=a(e);return i<0?r(i+t,0):s(i,t)}},5854:(e,t,i)=>{var a=i(2777),r=TypeError;e.exports=function(e){var t=a(e,"number");if("number"==typeof t)throw new r("Can't convert number to bigint");return BigInt(t)}},7696:(e,t,i)=>{var a=i(1291),r=i(8014),s=RangeError;e.exports=function(e){if(void 0===e)return 0;var t=a(e),i=r(t);if(t!==i)throw new s("Wrong length or index");return i}},5397:(e,t,i)=>{var a=i(7055),r=i(7750);e.exports=function(e){return a(r(e))}},1291:(e,t,i)=>{var a=i(741);e.exports=function(e){var t=+e;return t!=t||0===t?0:a(t)}},8014:(e,t,i)=>{var a=i(1291),r=Math.min;e.exports=function(e){var t=a(e);return t>0?r(t,9007199254740991):0}},8981:(e,t,i)=>{var a=i(7750),r=Object;e.exports=function(e){return r(a(e))}},2777:(e,t,i)=>{var a=i(9565),r=i(34),s=i(757),n=i(5966),o=i(4270),g=i(8227),c=TypeError,C=g("toPrimitive");e.exports=function(e,t){if(!r(e)||s(e))return e;var i,g=n(e,C);if(g){void 0===t&&(t="default");i=a(g,e,t);if(!r(i)||s(i))return i;throw new c("Can't convert object to primitive value")}void 0===t&&(t="number");return o(e,t)}},6969:(e,t,i)=>{var a=i(2777),r=i(757);e.exports=function(e){var t=a(e,"string");return r(t)?t:t+""}},2140:(e,t,i)=>{var a={};a[i(8227)("toStringTag")]="z";e.exports="[object z]"===String(a)},655:(e,t,i)=>{var a=i(6955),r=String;e.exports=function(e){if("Symbol"===a(e))throw new TypeError("Cannot convert a Symbol value to a string");return r(e)}},9714:(e,t,i)=>{var a=i(9088);e.exports=function(e){try{if(a)return Function('return require("'+e+'")')()}catch(e){}}},6823:e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},3392:(e,t,i)=>{var a=i(9504),r=0,s=Math.random(),n=a(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+n(++r+s,36)}},7040:(e,t,i)=>{var a=i(4495);e.exports=a&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(e,t,i)=>{var a=i(3724),r=i(9039);e.exports=a&&r((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:e=>{var t=TypeError;e.exports=function(e,i){if(e<i)throw new t("Not enough arguments");return e}},8622:(e,t,i)=>{var a=i(4475),r=i(4901),s=a.WeakMap;e.exports=r(s)&&/native code/.test(String(s))},8227:(e,t,i)=>{var a=i(4475),r=i(5745),s=i(9297),n=i(3392),o=i(4495),g=i(7040),c=a.Symbol,C=r("wks"),h=g?c.for||c:c&&c.withoutSetter||n;e.exports=function(e){s(C,e)||(C[e]=o&&s(c,e)?c[e]:h("Symbol."+e));return C[e]}},6573:(e,t,i)=>{var a=i(3724),r=i(2106),s=i(3238),n=ArrayBuffer.prototype;a&&!("detached"in n)&&r(n,"detached",{configurable:!0,get:function detached(){return s(this)}})},7936:(e,t,i)=>{var a=i(6518),r=i(5636);r&&a({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function transferToFixedLength(){return r(this,arguments.length?arguments[0]:void 0,!1)}})},8100:(e,t,i)=>{var a=i(6518),r=i(5636);r&&a({target:"ArrayBuffer",proto:!0},{transfer:function transfer(){return r(this,arguments.length?arguments[0]:void 0,!0)}})},4114:(e,t,i)=>{var a=i(6518),r=i(8981),s=i(6198),n=i(4527),o=i(6837);a({target:"Array",proto:!0,arity:1,forced:i(9039)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function push(e){var t=r(this),i=s(t),a=arguments.length;o(i+a);for(var g=0;g<a;g++){t[i]=arguments[g];i++}n(t,i);return i}})},4628:(e,t,i)=>{var a=i(6518),r=i(6043);a({target:"Promise",stat:!0},{withResolvers:function withResolvers(){var e=r.f(this);return{promise:e.promise,resolve:e.resolve,reject:e.reject}}})},9479:(e,t,i)=>{var a=i(4475),r=i(3724),s=i(2106),n=i(7979),o=i(9039),g=a.RegExp,c=g.prototype;r&&o((function(){var e=!0;try{g(".","d")}catch(t){e=!1}var t={},i="",a=e?"dgimsy":"gimsy",addGetter=function(e,a){Object.defineProperty(t,e,{get:function(){i+=a;return!0}})},r={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};e&&(r.hasIndices="d");for(var s in r)addGetter(s,r[s]);return Object.getOwnPropertyDescriptor(c,"flags").get.call(t)!==a||i!==a}))&&s(c,"flags",{configurable:!0,get:n})},7642:(e,t,i)=>{var a=i(6518),r=i(3440);a({target:"Set",proto:!0,real:!0,forced:!i(4916)("difference")},{difference:r})},8004:(e,t,i)=>{var a=i(6518),r=i(9039),s=i(8750);a({target:"Set",proto:!0,real:!0,forced:!i(4916)("intersection")||r((function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))}))},{intersection:s})},3853:(e,t,i)=>{var a=i(6518),r=i(4449);a({target:"Set",proto:!0,real:!0,forced:!i(4916)("isDisjointFrom")},{isDisjointFrom:r})},5876:(e,t,i)=>{var a=i(6518),r=i(3838);a({target:"Set",proto:!0,real:!0,forced:!i(4916)("isSubsetOf")},{isSubsetOf:r})},2475:(e,t,i)=>{var a=i(6518),r=i(8527);a({target:"Set",proto:!0,real:!0,forced:!i(4916)("isSupersetOf")},{isSupersetOf:r})},5024:(e,t,i)=>{var a=i(6518),r=i(3650);a({target:"Set",proto:!0,real:!0,forced:!i(4916)("symmetricDifference")},{symmetricDifference:r})},1698:(e,t,i)=>{var a=i(6518),r=i(4204);a({target:"Set",proto:!0,real:!0,forced:!i(4916)("union")},{union:r})},7467:(e,t,i)=>{var a=i(7628),r=i(4644),s=r.aTypedArray,n=r.exportTypedArrayMethod,o=r.getTypedArrayConstructor;n("toReversed",(function toReversed(){return a(s(this),o(this))}))},4732:(e,t,i)=>{var a=i(4644),r=i(9504),s=i(9306),n=i(5370),o=a.aTypedArray,g=a.getTypedArrayConstructor,c=a.exportTypedArrayMethod,C=r(a.TypedArrayPrototype.sort);c("toSorted",(function toSorted(e){void 0!==e&&s(e);var t=o(this),i=n(g(t),t);return C(i,e)}))},9577:(e,t,i)=>{var a=i(9928),r=i(4644),s=i(1108),n=i(1291),o=i(5854),g=r.aTypedArray,c=r.getTypedArrayConstructor,C=r.exportTypedArrayMethod,h=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(e){return 8===e}}();C("with",{with:function(e,t){var i=g(this),r=n(e),C=s(i)?o(t):+t;return a(i,c(i),r,C)}}.with,!h)},8992:(e,t,i)=>{var a=i(6518),r=i(4475),s=i(679),n=i(8551),o=i(4901),g=i(2787),c=i(2106),C=i(4659),h=i(9039),l=i(9297),Q=i(8227),E=i(7657).IteratorPrototype,u=i(3724),d=i(6395),f="constructor",p="Iterator",m=Q("toStringTag"),y=TypeError,w=r[p],b=d||!o(w)||w.prototype!==E||!h((function(){w({})})),D=function Iterator(){s(this,E);if(g(this)===E)throw new y("Abstract class Iterator not directly constructable")},defineIteratorPrototypeAccessor=function(e,t){u?c(E,e,{configurable:!0,get:function(){return t},set:function(t){n(this);if(this===E)throw new y("You can't redefine this property");l(this,e)?this[e]=t:C(this,e,t)}}):E[e]=t};l(E,m)||defineIteratorPrototypeAccessor(m,p);!b&&l(E,f)&&E[f]!==Object||defineIteratorPrototypeAccessor(f,D);D.prototype=E;a({global:!0,constructor:!0,forced:b},{Iterator:D})},3215:(e,t,i)=>{var a=i(6518),r=i(2652),s=i(9306),n=i(8551),o=i(1767);a({target:"Iterator",proto:!0,real:!0},{every:function every(e){n(this);s(e);var t=o(this),i=0;return!r(t,(function(t,a){if(!e(t,i++))return a()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},4520:(e,t,i)=>{var a=i(6518),r=i(9565),s=i(9306),n=i(8551),o=i(1767),g=i(9462),c=i(6319),C=i(6395),h=g((function(){for(var e,t,i=this.iterator,a=this.predicate,s=this.next;;){e=n(r(s,i));if(this.done=!!e.done)return;t=e.value;if(c(i,a,[t,this.counter++],!0))return t}}));a({target:"Iterator",proto:!0,real:!0,forced:C},{filter:function filter(e){n(this);s(e);return new h(o(this),{predicate:e})}})},2577:(e,t,i)=>{var a=i(6518),r=i(2652),s=i(9306),n=i(8551),o=i(1767);a({target:"Iterator",proto:!0,real:!0},{find:function find(e){n(this);s(e);var t=o(this),i=0;return r(t,(function(t,a){if(e(t,i++))return a(t)}),{IS_RECORD:!0,INTERRUPTED:!0}).result}})},3949:(e,t,i)=>{var a=i(6518),r=i(2652),s=i(9306),n=i(8551),o=i(1767);a({target:"Iterator",proto:!0,real:!0},{forEach:function forEach(e){n(this);s(e);var t=o(this),i=0;r(t,(function(t){e(t,i++)}),{IS_RECORD:!0})}})},1454:(e,t,i)=>{var a=i(6518),r=i(713);a({target:"Iterator",proto:!0,real:!0,forced:i(6395)},{map:r})},8872:(e,t,i)=>{var a=i(6518),r=i(2652),s=i(9306),n=i(8551),o=i(1767),g=TypeError;a({target:"Iterator",proto:!0,real:!0},{reduce:function reduce(e){n(this);s(e);var t=o(this),i=arguments.length<2,a=i?void 0:arguments[1],c=0;r(t,(function(t){if(i){i=!1;a=t}else a=e(a,t,c);c++}),{IS_RECORD:!0});if(i)throw new g("Reduce of empty iterator with no initial value");return a}})},7550:(e,t,i)=>{var a=i(6518),r=i(2652),s=i(9306),n=i(8551),o=i(1767);a({target:"Iterator",proto:!0,real:!0},{some:function some(e){n(this);s(e);var t=o(this),i=0;return r(t,(function(t,a){if(e(t,i++))return a()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},1795:(e,t,i)=>{var a=i(6518),r=i(8551),s=i(2652),n=i(1767),o=[].push;a({target:"Iterator",proto:!0,real:!0},{toArray:function toArray(){var e=[];s(n(r(this)),o,{that:e,IS_RECORD:!0});return e}})},3375:(e,t,i)=>{i(7642)},9225:(e,t,i)=>{i(8004)},3972:(e,t,i)=>{i(3853)},9209:(e,t,i)=>{i(5876)},5714:(e,t,i)=>{i(2475)},7561:(e,t,i)=>{i(5024)},6197:(e,t,i)=>{i(1698)},4979:(e,t,i)=>{var a=i(6518),r=i(4475),s=i(7751),n=i(6980),o=i(4913).f,g=i(9297),c=i(679),C=i(3167),h=i(2603),l=i(5002),Q=i(6193),E=i(3724),u=i(6395),d="DOMException",f=s("Error"),p=s(d),m=function DOMException(){c(this,y);var e=arguments.length,t=h(e<1?void 0:arguments[0]),i=h(e<2?void 0:arguments[1],"Error"),a=new p(t,i),r=new f(t);r.name=d;o(a,"stack",n(1,Q(r.stack,1)));C(a,this,m);return a},y=m.prototype=p.prototype,w="stack"in new f(d),b="stack"in new p(1,2),D=p&&E&&Object.getOwnPropertyDescriptor(r,d),S=!(!D||D.writable&&D.configurable),k=w&&!S&&!b;a({global:!0,constructor:!0,forced:u||k},{DOMException:k?m:p});var R=s(d),N=R.prototype;if(N.constructor!==R){u||o(N,"constructor",n(1,R));for(var G in l)if(g(l,G)){var x=l[G],U=x.s;g(R,U)||o(R,U,n(6,x.c))}}},3611:(e,t,i)=>{var a=i(6518),r=i(4475),s=i(2106),n=i(3724),o=TypeError,g=Object.defineProperty,c=r.self!==r;try{if(n){var C=Object.getOwnPropertyDescriptor(r,"self");!c&&C&&C.get&&C.enumerable||s(r,"self",{get:function self(){return r},set:function self(e){if(this!==r)throw new o("Illegal invocation");g(r,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else a({global:!0,simple:!0,forced:c},{self:r})}catch(e){}},4603:(e,t,i)=>{var a=i(6840),r=i(9504),s=i(655),n=i(2812),o=URLSearchParams,g=o.prototype,c=r(g.append),C=r(g.delete),h=r(g.forEach),l=r([].push),Q=new o("a=1&a=2&b=3");Q.delete("a",1);Q.delete("b",void 0);Q+""!="a=2"&&a(g,"delete",(function(e){var t=arguments.length,i=t<2?void 0:arguments[1];if(t&&void 0===i)return C(this,e);var a=[];h(this,(function(e,t){l(a,{key:t,value:e})}));n(t,1);for(var r,o=s(e),g=s(i),Q=0,E=0,u=!1,d=a.length;Q<d;){r=a[Q++];if(u||r.key===o){u=!0;C(this,r.key)}else E++}for(;E<d;)(r=a[E++]).key===o&&r.value===g||c(this,r.key,r.value)}),{enumerable:!0,unsafe:!0})},7566:(e,t,i)=>{var a=i(6840),r=i(9504),s=i(655),n=i(2812),o=URLSearchParams,g=o.prototype,c=r(g.getAll),C=r(g.has),h=new o("a=1");!h.has("a",2)&&h.has("a",void 0)||a(g,"has",(function has(e){var t=arguments.length,i=t<2?void 0:arguments[1];if(t&&void 0===i)return C(this,e);var a=c(this,e);n(t,1);for(var r=s(i),o=0;o<a.length;)if(a[o++]===r)return!0;return!1}),{enumerable:!0,unsafe:!0})},8721:(e,t,i)=>{var a=i(3724),r=i(9504),s=i(2106),n=URLSearchParams.prototype,o=r(n.forEach);a&&!("size"in n)&&s(n,"size",{get:function size(){var e=0;o(this,(function(){e++}));return e},configurable:!0,enumerable:!0})}},t={};function __webpack_require__(i){var a=t[i];if(void 0!==a)return a.exports;var r=t[i]={exports:{}};e[i].call(r.exports,r,r.exports,__webpack_require__);return r.exports}__webpack_require__.d=(e,t)=>{for(var i in t)__webpack_require__.o(t,i)&&!__webpack_require__.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})};__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__ = globalThis.pdfjsWorker = {};__webpack_require__.d(__webpack_exports__,{WorkerMessageHandler:()=>WorkerMessageHandler});__webpack_require__(4114),__webpack_require__(6573),__webpack_require__(8100),__webpack_require__(7936),__webpack_require__(4628),__webpack_require__(7467),__webpack_require__(4732),__webpack_require__(9577),__webpack_require__(8992),__webpack_require__(3949),__webpack_require__(1454),__webpack_require__(7550),__webpack_require__(3375),__webpack_require__(9225),__webpack_require__(3972),__webpack_require__(9209),__webpack_require__(5714),__webpack_require__(7561),__webpack_require__(6197),__webpack_require__(3611),__webpack_require__(4603),__webpack_require__(7566),__webpack_require__(8721);const i=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type),a=[1,0,0,1,0,0],r=[.001,0,0,.001,0,0],s=1.35,n=.35,o=.25925925925925924,g=1,c=2,C=4,h=8,l=16,Q=64,E=256,u="pdfjs_internal_editor_",d=3,f=9,p=13,m=15,y={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},w=0,b=4,D=1,S=2,k=3,R=1,N=2,G=3,x=4,U=5,M=6,L=7,H=8,J=9,Y=10,v=11,T=12,K=13,q=14,O=15,W=16,j=17,X=20,Z="Group",V="R",_=1,z=2,$=4,AA=16,eA=32,tA=128,iA=512,aA=1,rA=2,sA=4096,nA=8192,oA=32768,gA=65536,IA=131072,cA=1048576,CA=2097152,hA=8388608,lA=16777216,BA=1,QA=2,EA=3,uA=4,dA=5,fA={E:"Mouse Enter",X:"Mouse Exit",D:"Mouse Down",U:"Mouse Up",Fo:"Focus",Bl:"Blur",PO:"PageOpen",PC:"PageClose",PV:"PageVisible",PI:"PageInvisible",K:"Keystroke",F:"Format",V:"Validate",C:"Calculate"},pA={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"},mA={O:"PageOpen",C:"PageClose"},yA={ERRORS:0,WARNINGS:1,INFOS:5},wA={NONE:0,BINARY:1},bA=1,DA=2,FA=3,SA=4,kA=5,RA=6,NA=7,GA=8,xA=9,UA=10,MA=11,LA=12,HA=13,JA=14,YA=15,vA=16,TA=17,KA=18,qA=19,OA=20,PA=21,WA=22,jA=23,XA=24,ZA=25,VA=26,_A=27,zA=28,$A=29,Ae=30,ee=31,te=32,ie=33,ae=34,re=35,se=36,ne=37,oe=38,ge=39,Ie=40,ce=41,Ce=42,he=43,le=44,Be=45,Qe=46,Ee=47,ue=48,de=49,fe=50,pe=51,me=52,ye=53,we=54,be=55,De=56,Fe=57,Se=58,ke=59,Re=60,Ne=61,Ge=62,xe=63,Ue=64,Me=65,Le=66,He=67,Je=68,Ye=69,ve=70,Te=71,Ke=72,qe=73,Oe=74,Pe=75,We=76,je=77,Xe=80,Ze=81,Ve=83,_e=84,ze=85,$e=86,At=87,et=88,tt=89,it=90,at=91,rt=1,st=2;let nt=yA.WARNINGS;function getVerbosityLevel(){return nt}function info(e){nt>=yA.INFOS&&console.log(`Info: ${e}`)}function warn(e){nt>=yA.WARNINGS&&console.log(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function assert(e,t){e||unreachable(t)}function createValidAbsoluteUrl(e,t=null,i=null){if(!e)return null;try{if(i&&"string"==typeof e){if(i.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\./g);t?.length>=2&&(e=`http://${e}`)}if(i.tryConvertEncoding)try{e=stringToUTF8String(e)}catch{}}const a=t?new URL(e,t):new URL(e);if(function _isValidProtocol(e){switch(e?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(a))return a}catch{}return null}function shadow(e,t,i,a=!1){Object.defineProperty(e,t,{value:i,enumerable:!a,configurable:!0,writable:!1});return i}const ot=function BaseExceptionClosure(){function BaseException(e,t){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=e;this.name=t}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();class PasswordException extends ot{constructor(e,t){super(e,"PasswordException");this.code=t}}class UnknownErrorException extends ot{constructor(e,t){super(e,"UnknownErrorException");this.details=t}}class InvalidPDFException extends ot{constructor(e){super(e,"InvalidPDFException")}}class MissingPDFException extends ot{constructor(e){super(e,"MissingPDFException")}}class UnexpectedResponseException extends ot{constructor(e,t){super(e,"UnexpectedResponseException");this.status=t}}class FormatError extends ot{constructor(e){super(e,"FormatError")}}class AbortException extends ot{constructor(e){super(e,"AbortException")}}function bytesToString(e){"object"==typeof e&&void 0!==e?.length||unreachable("Invalid argument for bytesToString");const t=e.length,i=8192;if(t<i)return String.fromCharCode.apply(null,e);const a=[];for(let r=0;r<t;r+=i){const s=Math.min(r+i,t),n=e.subarray(r,s);a.push(String.fromCharCode.apply(null,n))}return a.join("")}function stringToBytes(e){"string"!=typeof e&&unreachable("Invalid argument for stringToBytes");const t=e.length,i=new Uint8Array(t);for(let a=0;a<t;++a)i[a]=255&e.charCodeAt(a);return i}function string32(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)}function objectSize(e){return Object.keys(e).length}class FeatureTest{static get isLittleEndian(){return shadow(this,"isLittleEndian",function isLittleEndian(){const e=new Uint8Array(4);e[0]=1;return 1===new Uint32Array(e.buffer,0,1)[0]}())}static get isEvalSupported(){return shadow(this,"isEvalSupported",function isEvalSupported(){try{new Function("");return!0}catch{return!1}}())}static get isOffscreenCanvasSupported(){return shadow(this,"isOffscreenCanvasSupported","undefined"!=typeof OffscreenCanvas)}static get platform(){return"undefined"!=typeof navigator&&"string"==typeof navigator?.platform?shadow(this,"platform",{isMac:navigator.platform.includes("Mac")}):shadow(this,"platform",{isMac:!1})}static get isCSSRoundSupported(){return shadow(this,"isCSSRoundSupported",globalThis.CSS?.supports?.("width: round(1.5px, 1px)"))}}const gt=Array.from(Array(256).keys(),(e=>e.toString(16).padStart(2,"0")));class Util{static makeHexColor(e,t,i){return`#${gt[e]}${gt[t]}${gt[i]}`}static scaleMinMax(e,t){let i;if(e[0]){if(e[0]<0){i=t[0];t[0]=t[2];t[2]=i}t[0]*=e[0];t[2]*=e[0];if(e[3]<0){i=t[1];t[1]=t[3];t[3]=i}t[1]*=e[3];t[3]*=e[3]}else{i=t[0];t[0]=t[1];t[1]=i;i=t[2];t[2]=t[3];t[3]=i;if(e[1]<0){i=t[1];t[1]=t[3];t[3]=i}t[1]*=e[1];t[3]*=e[1];if(e[2]<0){i=t[0];t[0]=t[2];t[2]=i}t[0]*=e[2];t[2]*=e[2]}t[0]+=e[4];t[1]+=e[5];t[2]+=e[4];t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const i=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/i,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/i]}static getAxialAlignedBoundingBox(e,t){const i=this.applyTransform(e,t),a=this.applyTransform(e.slice(2,4),t),r=this.applyTransform([e[0],e[3]],t),s=this.applyTransform([e[2],e[1]],t);return[Math.min(i[0],a[0],r[0],s[0]),Math.min(i[1],a[1],r[1],s[1]),Math.max(i[0],a[0],r[0],s[0]),Math.max(i[1],a[1],r[1],s[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],i=e[0]*t[0]+e[1]*t[2],a=e[0]*t[1]+e[1]*t[3],r=e[2]*t[0]+e[3]*t[2],s=e[2]*t[1]+e[3]*t[3],n=(i+s)/2,o=Math.sqrt((i+s)**2-4*(i*s-r*a))/2,g=n+o||1,c=n-o||1;return[Math.sqrt(g),Math.sqrt(c)]}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){const i=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),a=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(i>a)return null;const r=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),s=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return r>s?null:[i,r,a,s]}static#A(e,t,i,a,r,s,n,o,g,c){if(g<=0||g>=1)return;const C=1-g,h=g*g,l=h*g,Q=C*(C*(C*e+3*g*t)+3*h*i)+l*a,E=C*(C*(C*r+3*g*s)+3*h*n)+l*o;c[0]=Math.min(c[0],Q);c[1]=Math.min(c[1],E);c[2]=Math.max(c[2],Q);c[3]=Math.max(c[3],E)}static#e(e,t,i,a,r,s,n,o,g,c,C,h){if(Math.abs(g)<1e-12){Math.abs(c)>=1e-12&&this.#A(e,t,i,a,r,s,n,o,-C/c,h);return}const l=c**2-4*C*g;if(l<0)return;const Q=Math.sqrt(l),E=2*g;this.#A(e,t,i,a,r,s,n,o,(-c+Q)/E,h);this.#A(e,t,i,a,r,s,n,o,(-c-Q)/E,h)}static bezierBoundingBox(e,t,i,a,r,s,n,o,g){if(g){g[0]=Math.min(g[0],e,n);g[1]=Math.min(g[1],t,o);g[2]=Math.max(g[2],e,n);g[3]=Math.max(g[3],t,o)}else g=[Math.min(e,n),Math.min(t,o),Math.max(e,n),Math.max(t,o)];this.#e(e,i,r,n,t,a,s,o,3*(3*(i-r)-e+n),6*(e-2*i+r),3*(i-e),g);this.#e(e,i,r,n,t,a,s,o,3*(3*(a-s)-t+o),6*(t-2*a+s),3*(a-t),g);return g}}const It=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364];function stringToPDFString(e){if(e[0]>="ï"){let t;if("þ"===e[0]&&"ÿ"===e[1]){t="utf-16be";e.length%2==1&&(e=e.slice(0,-1))}else if("ÿ"===e[0]&&"þ"===e[1]){t="utf-16le";e.length%2==1&&(e=e.slice(0,-1))}else"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(t="utf-8");if(t)try{const i=new TextDecoder(t,{fatal:!0}),a=stringToBytes(e),r=i.decode(a);return r.includes("")?r.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g,""):r}catch(e){warn(`stringToPDFString: "${e}".`)}}const t=[];for(let i=0,a=e.length;i<a;i++){const r=e.charCodeAt(i);if(27===r){for(;++i<a&&27!==e.charCodeAt(i););continue}const s=It[r];t.push(s?String.fromCharCode(s):e.charAt(i))}return t.join("")}function stringToUTF8String(e){return decodeURIComponent(escape(e))}function utf8StringToString(e){return unescape(encodeURIComponent(e))}function isArrayEqual(e,t){if(e.length!==t.length)return!1;for(let i=0,a=e.length;i<a;i++)if(e[i]!==t[i])return!1;return!0}function getModificationDate(e=new Date){return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")}let ct=null,Ct=null;const ht=0,lt=1,Bt=2,Qt=3,Et=4,ut=5,dt=6,ft=7,pt=8;__webpack_require__(3215);const mt=Symbol("CIRCULAR_REF"),yt=Symbol("EOF");let wt=Object.create(null),bt=Object.create(null),Dt=Object.create(null);class Name{constructor(e){this.name=e}static get(e){return bt[e]||=new Name(e)}}class Cmd{constructor(e){this.cmd=e}static get(e){return wt[e]||=new Cmd(e)}}const Ft=function nonSerializableClosure(){return Ft};class Dict{constructor(e=null){this._map=Object.create(null);this.xref=e;this.objId=null;this.suppressEncryption=!1;this.__nonSerializable__=Ft}assignXref(e){this.xref=e}get size(){return Object.keys(this._map).length}get(e,t,i){let a=this._map[e];if(void 0===a&&void 0!==t){a=this._map[t];void 0===a&&void 0!==i&&(a=this._map[i])}return a instanceof Ref&&this.xref?this.xref.fetch(a,this.suppressEncryption):a}async getAsync(e,t,i){let a=this._map[e];if(void 0===a&&void 0!==t){a=this._map[t];void 0===a&&void 0!==i&&(a=this._map[i])}return a instanceof Ref&&this.xref?this.xref.fetchAsync(a,this.suppressEncryption):a}getArray(e,t,i){let a=this._map[e];if(void 0===a&&void 0!==t){a=this._map[t];void 0===a&&void 0!==i&&(a=this._map[i])}a instanceof Ref&&this.xref&&(a=this.xref.fetch(a,this.suppressEncryption));if(Array.isArray(a)){a=a.slice();for(let e=0,t=a.length;e<t;e++)a[e]instanceof Ref&&this.xref&&(a[e]=this.xref.fetch(a[e],this.suppressEncryption))}return a}getRaw(e){return this._map[e]}getKeys(){return Object.keys(this._map)}getRawValues(){return Object.values(this._map)}set(e,t){this._map[e]=t}has(e){return void 0!==this._map[e]}forEach(e){for(const t in this._map)e(t,this.get(t))}static get empty(){const e=new Dict(null);e.set=(e,t)=>{unreachable("Should not call `set` on the empty dictionary.")};return shadow(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:i=!1}){const a=new Dict(e),r=new Map;for(const e of t)if(e instanceof Dict)for(const[t,a]of Object.entries(e._map)){let e=r.get(t);if(void 0===e){e=[];r.set(t,e)}else if(!(i&&a instanceof Dict))continue;e.push(a)}for(const[t,i]of r){if(1===i.length||!(i[0]instanceof Dict)){a._map[t]=i[0];continue}const r=new Dict(e);for(const e of i)for(const[t,i]of Object.entries(e._map))void 0===r._map[t]&&(r._map[t]=i);r.size>0&&(a._map[t]=r)}r.clear();return a.size>0?a:Dict.empty}clone(){const e=new Dict(this.xref);for(const t of this.getKeys())e.set(t,this.getRaw(t));return e}}class Ref{constructor(e,t){this.num=e;this.gen=t}toString(){return 0===this.gen?`${this.num}R`:`${this.num}R${this.gen}`}static fromString(e){const t=Dt[e];if(t)return t;const i=/^(\d+)R(\d*)$/.exec(e);return i&&"0"!==i[1]?Dt[e]=new Ref(parseInt(i[1]),i[2]?parseInt(i[2]):0):null}static get(e,t){const i=0===t?`${e}R`:`${e}R${t}`;return Dt[i]||=new Ref(e,t)}}class RefSet{constructor(e=null){this._set=new Set(e?._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}[Symbol.iterator](){return this._set.values()}clear(){this._set.clear()}}class RefSetCache{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}[Symbol.iterator](){return this._map.values()}clear(){this._map.clear()}*items(){for(const[e,t]of this._map)yield[Ref.fromString(e),t]}}function isName(e,t){return e instanceof Name&&(void 0===t||e.name===t)}function isCmd(e,t){return e instanceof Cmd&&(void 0===t||e.cmd===t)}function isDict(e,t){return e instanceof Dict&&(void 0===t||isName(e.get("Type"),t))}function isRefsEqual(e,t){return e.num===t.num&&e.gen===t.gen}class BaseStream{constructor(){this.constructor===BaseStream&&unreachable("Cannot initialize BaseStream.")}get length(){unreachable("Abstract getter `length` accessed")}get isEmpty(){unreachable("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return shadow(this,"isDataLoaded",!0)}getByte(){unreachable("Abstract method `getByte` called")}getBytes(e){unreachable("Abstract method `getBytes` called")}async getImageData(e,t){return this.getBytes(e,t)}async asyncGetBytes(){unreachable("Abstract method `asyncGetBytes` called")}get isAsync(){return!1}get canAsyncDecodeImageFromBuffer(){return!1}peekByte(){const e=this.getByte();-1!==e&&this.pos--;return e}peekBytes(e){const t=this.getBytes(e);this.pos-=t.length;return t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){unreachable("Abstract method `getByteRange` called")}getString(e){return bytesToString(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){unreachable("Abstract method `reset` called")}moveStart(){unreachable("Abstract method `moveStart` called")}makeSubStream(e,t,i=null){unreachable("Abstract method `makeSubStream` called")}getBaseStreams(){return null}}const St=/^[1-9]\.\d$/;function getLookupTableFactory(e){let t;return function(){if(e){t=Object.create(null);e(t);e=null}return t}}class MissingDataException extends ot{constructor(e,t){super(`Missing data [${e}, ${t})`,"MissingDataException");this.begin=e;this.end=t}}class ParserEOFException extends ot{constructor(e){super(e,"ParserEOFException")}}class XRefEntryException extends ot{constructor(e){super(e,"XRefEntryException")}}class XRefParseException extends ot{constructor(e){super(e,"XRefParseException")}}function arrayBuffersToBytes(e){const t=e.length;if(0===t)return new Uint8Array(0);if(1===t)return new Uint8Array(e[0]);let i=0;for(let a=0;a<t;a++)i+=e[a].byteLength;const a=new Uint8Array(i);let r=0;for(let i=0;i<t;i++){const t=new Uint8Array(e[i]);a.set(t,r);r+=t.byteLength}return a}function getInheritableProperty({dict:e,key:t,getArray:i=!1,stopWhenFound:a=!0}){let r;const s=new RefSet;for(;e instanceof Dict&&(!e.objId||!s.has(e.objId));){e.objId&&s.put(e.objId);const n=i?e.getArray(t):e.get(t);if(void 0!==n){if(a)return n;(r||=[]).push(n)}e=e.get("Parent")}return r}const kt=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];function toRomanNumerals(e,t=!1){assert(Number.isInteger(e)&&e>0,"The number should be a positive integer.");const i=[];let a;for(;e>=1e3;){e-=1e3;i.push("M")}a=e/100|0;e%=100;i.push(kt[a]);a=e/10|0;e%=10;i.push(kt[10+a]);i.push(kt[20+e]);const r=i.join("");return t?r.toLowerCase():r}function log2(e){return e<=0?0:Math.ceil(Math.log2(e))}function readInt8(e,t){return e[t]<<24>>24}function readUint16(e,t){return e[t]<<8|e[t+1]}function readUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function isWhiteSpace(e){return 32===e||9===e||13===e||10===e}function isNumberArray(e,t){return Array.isArray(e)&&(null===t||e.length===t)&&e.every((e=>"number"==typeof e))}function lookupMatrix(e,t){return isNumberArray(e,6)?e:t}function lookupRect(e,t){return isNumberArray(e,4)?e:t}function lookupNormalRect(e,t){return isNumberArray(e,4)?Util.normalizeRect(e):t}function parseXFAPath(e){const t=/(.+)\[(\d+)\]$/;return e.split(".").map((e=>{const i=e.match(t);return i?{name:i[1],pos:parseInt(i[2],10)}:{name:e,pos:0}}))}function escapePDFName(e){const t=[];let i=0;for(let a=0,r=e.length;a<r;a++){const r=e.charCodeAt(a);if(r<33||r>126||35===r||40===r||41===r||60===r||62===r||91===r||93===r||123===r||125===r||47===r||37===r){i<a&&t.push(e.substring(i,a));t.push(`#${r.toString(16)}`);i=a+1}}if(0===t.length)return e;i<e.length&&t.push(e.substring(i,e.length));return t.join("")}function escapeString(e){return e.replaceAll(/([()\\\n\r])/g,(e=>"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`))}function _collectJS(e,t,i,a){if(!e)return;let r=null;if(e instanceof Ref){if(a.has(e))return;r=e;a.put(r);e=t.fetch(e)}if(Array.isArray(e))for(const r of e)_collectJS(r,t,i,a);else if(e instanceof Dict){if(isName(e.get("S"),"JavaScript")){const t=e.get("JS");let a;t instanceof BaseStream?a=t.getString():"string"==typeof t&&(a=t);a&&=stringToPDFString(a).replaceAll("\0","");a&&i.push(a)}_collectJS(e.getRaw("Next"),t,i,a)}r&&a.remove(r)}function collectActions(e,t,i){const a=Object.create(null),r=getInheritableProperty({dict:t,key:"AA",stopWhenFound:!1});if(r)for(let t=r.length-1;t>=0;t--){const s=r[t];if(s instanceof Dict)for(const t of s.getKeys()){const r=i[t];if(!r)continue;const n=[];_collectJS(s.getRaw(t),e,n,new RefSet);n.length>0&&(a[r]=n)}}if(t.has("A")){const i=[];_collectJS(t.get("A"),e,i,new RefSet);i.length>0&&(a.Action=i)}return objectSize(a)>0?a:null}const Rt={60:"<",62:">",38:"&",34:""",39:"'"};function*codePointIter(e){for(let t=0,i=e.length;t<i;t++){const i=e.codePointAt(t);i>55295&&(i<57344||i>65533)&&t++;yield i}}function encodeToXmlString(e){const t=[];let i=0;for(let a=0,r=e.length;a<r;a++){const r=e.codePointAt(a);if(32<=r&&r<=126){const s=Rt[r];if(s){i<a&&t.push(e.substring(i,a));t.push(s);i=a+1}}else{i<a&&t.push(e.substring(i,a));t.push(`&#x${r.toString(16).toUpperCase()};`);r>55295&&(r<57344||r>65533)&&a++;i=a+1}}if(0===t.length)return e;i<e.length&&t.push(e.substring(i,e.length));return t.join("")}function validateFontName(e,t=!1){const i=/^("|').*("|')$/.exec(e);if(i&&i[1]===i[2]){if(new RegExp(`[^\\\\]${i[1]}`).test(e.slice(1,-1))){t&&warn(`FontFamily contains unescaped ${i[1]}: ${e}.`);return!1}}else for(const i of e.split(/[ \t]+/))if(/^(\d|(-(\d|-)))/.test(i)||!/^[\w-\\]+$/.test(i)){t&&warn(`FontFamily contains invalid <custom-ident>: ${e}.`);return!1}return!0}function validateCSSFont(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:i,fontWeight:a,italicAngle:r}=e;if(!validateFontName(i,!0))return!1;const s=a?a.toString():"";e.fontWeight=t.has(s)?s:"400";const n=parseFloat(r);e.italicAngle=isNaN(n)||n<-90||n>90?"14":r.toString();return!0}function recoverJsURL(e){const t=new RegExp("^\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").replaceAll(".","\\.")+")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))","i").exec(e);if(t?.[2]){const e=t[2];let i=!1;"true"===t[3]&&"app.launchURL"===t[1]&&(i=!0);return{url:e,newWindow:i}}return null}function numberToString(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);return t%100==0?(t/100).toString():t%10==0?e.toFixed(1):e.toFixed(2)}function getNewAnnotationsMap(e){if(!e)return null;const t=new Map;for(const[i,a]of e){if(!i.startsWith(u))continue;let e=t.get(a.pageIndex);if(!e){e=[];t.set(a.pageIndex,e)}e.push(a)}return t.size>0?t:null}function isAscii(e){return/^[\x00-\x7F]*$/.test(e)}function stringToUTF16HexString(e){const t=[];for(let i=0,a=e.length;i<a;i++){const a=e.charCodeAt(i);t.push((a>>8&255).toString(16).padStart(2,"0"),(255&a).toString(16).padStart(2,"0"))}return t.join("")}function stringToUTF16String(e,t=!1){const i=[];t&&i.push("þÿ");for(let t=0,a=e.length;t<a;t++){const a=e.charCodeAt(t);i.push(String.fromCharCode(a>>8&255),String.fromCharCode(255&a))}return i.join("")}function getRotationMatrix(e,t,i){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,i];case 270:return[0,-1,1,0,0,i];default:throw new Error("Invalid rotation")}}function getSizeInBytes(e){return Math.ceil(Math.ceil(Math.log2(1+e))/8)}class Stream extends BaseStream{constructor(e,t,i,a){super();this.bytes=e instanceof Uint8Array?e:new Uint8Array(e);this.start=t||0;this.pos=this.start;this.end=t+i||this.bytes.length;this.dict=a}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,i=this.pos,a=this.end;if(!e)return t.subarray(i,a);let r=i+e;r>a&&(r=a);this.pos=r;return t.subarray(i,r)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);return this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t,i=null){return new Stream(this.bytes.buffer,e,t,i)}}class StringStream extends Stream{constructor(e){super(stringToBytes(e))}}class NullStream extends Stream{constructor(){super(new Uint8Array(0))}}class ChunkedStream extends Stream{constructor(e,t,i){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this._loadedChunks=new Set;this.numChunks=Math.ceil(e/t);this.manager=i;this.progressiveDataLength=0;this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,i=this.numChunks;t<i;++t)this._loadedChunks.has(t)||e.push(t);return e}get numChunksLoaded(){return this._loadedChunks.size}get isDataLoaded(){return this.numChunksLoaded===this.numChunks}onReceiveData(e,t){const i=this.chunkSize;if(e%i!=0)throw new Error(`Bad begin offset: ${e}`);const a=e+t.byteLength;if(a%i!=0&&a!==this.bytes.length)throw new Error(`Bad end offset: ${a}`);this.bytes.set(new Uint8Array(t),e);const r=Math.floor(e/i),s=Math.floor((a-1)/i)+1;for(let e=r;e<s;++e)this._loadedChunks.add(e)}onReceiveProgressiveData(e){let t=this.progressiveDataLength;const i=Math.floor(t/this.chunkSize);this.bytes.set(new Uint8Array(e),t);t+=e.byteLength;this.progressiveDataLength=t;const a=t>=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=i;e<a;++e)this._loadedChunks.add(e)}ensureByte(e){if(e<this.progressiveDataLength)return;const t=Math.floor(e/this.chunkSize);if(!(t>this.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const i=Math.floor(e/this.chunkSize);if(i>this.numChunks)return;const a=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let r=i;r<a;++r)if(!this._loadedChunks.has(r))throw new MissingDataException(e,t)}nextEmptyChunk(e){const t=this.numChunks;for(let i=0;i<t;++i){const a=(e+i)%t;if(!this._loadedChunks.has(a))return a}return null}hasChunk(e){return this._loadedChunks.has(e)}getByte(){const e=this.pos;if(e>=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e){const t=this.bytes,i=this.pos,a=this.end;if(!e){a>this.progressiveDataLength&&this.ensureRange(i,a);return t.subarray(i,a)}let r=i+e;r>a&&(r=a);r>this.progressiveDataLength&&this.ensureRange(i,r);this.pos=r;return t.subarray(i,r)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);t>this.progressiveDataLength&&this.ensureRange(e,t);return this.bytes.subarray(e,t)}makeSubStream(e,t,i=null){t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e);function ChunkedStreamSubstream(){}ChunkedStreamSubstream.prototype=Object.create(this);ChunkedStreamSubstream.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),i=Math.floor((this.end-1)/e)+1,a=[];for(let e=t;e<i;++e)this._loadedChunks.has(e)||a.push(e);return a};Object.defineProperty(ChunkedStreamSubstream.prototype,"isDataLoaded",{get(){return this.numChunksLoaded===this.numChunks||0===this.getMissingChunks().length},configurable:!0});const a=new ChunkedStreamSubstream;a.pos=a.start=e;a.end=e+t||this.end;a.dict=i;return a}getBaseStreams(){return[this]}}class ChunkedStreamManager{constructor(e,t){this.length=t.length;this.chunkSize=t.rangeChunkSize;this.stream=new ChunkedStream(this.length,this.chunkSize,this);this.pdfNetworkStream=e;this.disableAutoFetch=t.disableAutoFetch;this.msgHandler=t.msgHandler;this.currRequestId=0;this._chunksNeededByRequest=new Map;this._requestsByChunk=new Map;this._promisesByRequest=new Map;this.progressiveDataLength=0;this.aborted=!1;this._loadedStreamCapability=Promise.withResolvers()}sendRequest(e,t){const i=this.pdfNetworkStream.getRangeReader(e,t);i.isStreamingSupported||(i.onProgress=this.onProgress.bind(this));let a=[],r=0;return new Promise(((e,t)=>{const readChunk=({value:s,done:n})=>{try{if(n){const t=arrayBuffersToBytes(a);a=null;e(t);return}r+=s.byteLength;i.isStreamingSupported&&this.onProgress({loaded:r});a.push(s);i.read().then(readChunk,t)}catch(e){t(e)}};i.read().then(readChunk,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(e=!1){if(!e){const e=this.stream.getMissingChunks();this._requestChunks(e)}return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,i=new Set;this._chunksNeededByRequest.set(t,i);for(const t of e)this.stream.hasChunk(t)||i.add(t);if(0===i.size)return Promise.resolve();const a=Promise.withResolvers();this._promisesByRequest.set(t,a);const r=[];for(const e of i){let i=this._requestsByChunk.get(e);if(!i){i=[];this._requestsByChunk.set(e,i);r.push(e)}i.push(t)}if(r.length>0){const e=this.groupChunks(r);for(const t of e){const e=t.beginChunk*this.chunkSize,i=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,i).catch(a.reject)}}return a.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const i=this.getBeginChunk(e),a=this.getEndChunk(t),r=[];for(let e=i;e<a;++e)r.push(e);return this._requestChunks(r)}requestRanges(e=[]){const t=[];for(const i of e){const e=this.getBeginChunk(i.begin),a=this.getEndChunk(i.end);for(let i=e;i<a;++i)t.includes(i)||t.push(i)}t.sort((function(e,t){return e-t}));return this._requestChunks(t)}groupChunks(e){const t=[];let i=-1,a=-1;for(let r=0,s=e.length;r<s;++r){const s=e[r];i<0&&(i=s);if(a>=0&&a+1!==s){t.push({beginChunk:i,endChunk:a+1});i=s}r+1===e.length&&t.push({beginChunk:i,endChunk:s+1});a=s}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const t=e.chunk,i=void 0===e.begin,a=i?this.progressiveDataLength:e.begin,r=a+t.byteLength,s=Math.floor(a/this.chunkSize),n=r<this.length?Math.floor(r/this.chunkSize):Math.ceil(r/this.chunkSize);if(i){this.stream.onReceiveProgressiveData(t);this.progressiveDataLength=r}else this.stream.onReceiveData(a,t);this.stream.isDataLoaded&&this._loadedStreamCapability.resolve(this.stream);const o=[];for(let e=s;e<n;++e){const t=this._requestsByChunk.get(e);if(t){this._requestsByChunk.delete(e);for(const i of t){const t=this._chunksNeededByRequest.get(i);t.has(e)&&t.delete(e);t.size>0||o.push(i)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(n);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e);t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0;this.pdfNetworkStream?.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}__webpack_require__(4520),__webpack_require__(9479),__webpack_require__(2577),__webpack_require__(8872);class ColorSpace{constructor(e,t){this.constructor===ColorSpace&&unreachable("Cannot initialize ColorSpace.");this.name=e;this.numComps=t}getRgb(e,t){const i=new Uint8ClampedArray(3);this.getRgbItem(e,t,i,0);return i}getRgbItem(e,t,i,a){unreachable("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,i,a,r,s,n){unreachable("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){unreachable("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return ColorSpace.isDefaultDecode(e,this.numComps)}fillRgb(e,t,i,a,r,s,n,o,g){const c=t*i;let C=null;const h=1<<n,l=i!==r||t!==a;if(this.isPassthrough(n))C=o;else if(1===this.numComps&&c>h&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=n<=8?new Uint8Array(h):new Uint16Array(h);for(let e=0;e<h;e++)t[e]=e;const i=new Uint8ClampedArray(3*h);this.getRgbBuffer(t,0,h,i,0,n,0);if(l){C=new Uint8Array(3*c);let e=0;for(let t=0;t<c;++t){const a=3*o[t];C[e++]=i[a];C[e++]=i[a+1];C[e++]=i[a+2]}}else{let t=0;for(let a=0;a<c;++a){const r=3*o[a];e[t++]=i[r];e[t++]=i[r+1];e[t++]=i[r+2];t+=g}}}else if(l){C=new Uint8ClampedArray(3*c);this.getRgbBuffer(o,0,c,C,0,n,0)}else this.getRgbBuffer(o,0,a*s,e,0,n,g);if(C)if(l)!function resizeRgbImage(e,t,i,a,r,s,n){n=1!==n?0:n;const o=i/r,g=a/s;let c,C=0;const h=new Uint16Array(r),l=3*i;for(let e=0;e<r;e++)h[e]=3*Math.floor(e*o);for(let i=0;i<s;i++){const a=Math.floor(i*g)*l;for(let i=0;i<r;i++){c=a+h[i];t[C++]=e[c++];t[C++]=e[c++];t[C++]=e[c++];C+=n}}}(C,e,t,i,a,r,g);else{let t=0,i=0;for(let r=0,n=a*s;r<n;r++){e[t++]=C[i++];e[t++]=C[i++];e[t++]=C[i++];t+=g}}}get usesZeroToOneRange(){return shadow(this,"usesZeroToOneRange",!0)}static _cache(e,t,i,a){if(!i)throw new Error('ColorSpace._cache - expected "localColorSpaceCache" argument.');if(!a)throw new Error('ColorSpace._cache - expected "parsedColorSpace" argument.');let r,s;if(e instanceof Ref){s=e;e=t.fetch(e)}e instanceof Name&&(r=e.name);(r||s)&&i.set(r,s,a)}static getCached(e,t,i){if(!i)throw new Error('ColorSpace.getCached - expected "localColorSpaceCache" argument.');if(e instanceof Ref){const a=i.getByRef(e);if(a)return a;try{e=t.fetch(e)}catch(e){if(e instanceof MissingDataException)throw e}}if(e instanceof Name){const t=i.getByName(e.name);if(t)return t}return null}static async parseAsync({cs:e,xref:t,resources:i=null,pdfFunctionFactory:a,localColorSpaceCache:r}){const s=this._parse(e,t,i,a);this._cache(e,t,r,s);return s}static parse({cs:e,xref:t,resources:i=null,pdfFunctionFactory:a,localColorSpaceCache:r}){const s=this.getCached(e,t,r);if(s)return s;const n=this._parse(e,t,i,a);this._cache(e,t,r,n);return n}static _parse(e,t,i=null,a){if((e=t.fetchIfRef(e))instanceof Name)switch(e.name){case"G":case"DeviceGray":return this.singletons.gray;case"RGB":case"DeviceRGB":return this.singletons.rgb;case"DeviceRGBA":return this.singletons.rgba;case"CMYK":case"DeviceCMYK":return this.singletons.cmyk;case"Pattern":return new PatternCS(null);default:if(i instanceof Dict){const r=i.get("ColorSpace");if(r instanceof Dict){const s=r.get(e.name);if(s){if(s instanceof Name)return this._parse(s,t,i,a);e=s;break}}}throw new FormatError(`Unrecognized ColorSpace: ${e.name}`)}if(Array.isArray(e)){const r=t.fetchIfRef(e[0]).name;let s,n,o,g,c,C;switch(r){case"G":case"DeviceGray":return this.singletons.gray;case"RGB":case"DeviceRGB":return this.singletons.rgb;case"CMYK":case"DeviceCMYK":return this.singletons.cmyk;case"CalGray":s=t.fetchIfRef(e[1]);g=s.getArray("WhitePoint");c=s.getArray("BlackPoint");C=s.get("Gamma");return new CalGrayCS(g,c,C);case"CalRGB":s=t.fetchIfRef(e[1]);g=s.getArray("WhitePoint");c=s.getArray("BlackPoint");C=s.getArray("Gamma");const h=s.getArray("Matrix");return new CalRGBCS(g,c,C,h);case"ICCBased":const l=t.fetchIfRef(e[1]).dict;n=l.get("N");const Q=l.get("Alternate");if(Q){const e=this._parse(Q,t,i,a);if(e.numComps===n)return e;warn("ICCBased color space: Ignoring incorrect /Alternate entry.")}if(1===n)return this.singletons.gray;if(3===n)return this.singletons.rgb;if(4===n)return this.singletons.cmyk;break;case"Pattern":o=e[1]||null;o&&(o=this._parse(o,t,i,a));return new PatternCS(o);case"I":case"Indexed":o=this._parse(e[1],t,i,a);const E=t.fetchIfRef(e[2])+1,u=t.fetchIfRef(e[3]);return new IndexedCS(o,E,u);case"Separation":case"DeviceN":const d=t.fetchIfRef(e[1]);n=Array.isArray(d)?d.length:1;o=this._parse(e[2],t,i,a);const f=a.create(e[3]);return new AlternateCS(n,o,f);case"Lab":s=t.fetchIfRef(e[1]);g=s.getArray("WhitePoint");c=s.getArray("BlackPoint");const p=s.getArray("Range");return new LabCS(g,c,p);default:throw new FormatError(`Unimplemented ColorSpace object: ${r}`)}}throw new FormatError(`Unrecognized ColorSpace object: ${e}`)}static isDefaultDecode(e,t){if(!Array.isArray(e))return!0;if(2*t!==e.length){warn("The decode map is not the correct length");return!0}for(let t=0,i=e.length;t<i;t+=2)if(0!==e[t]||1!==e[t+1])return!1;return!0}static get singletons(){return shadow(this,"singletons",{get gray(){return shadow(this,"gray",new DeviceGrayCS)},get rgb(){return shadow(this,"rgb",new DeviceRgbCS)},get rgba(){return shadow(this,"rgba",new DeviceRgbaCS)},get cmyk(){return shadow(this,"cmyk",new DeviceCmykCS)}})}}class AlternateCS extends ColorSpace{constructor(e,t,i){super("Alternate",e);this.base=t;this.tintFn=i;this.tmpBuf=new Float32Array(t.numComps)}getRgbItem(e,t,i,a){const r=this.tmpBuf;this.tintFn(e,t,r,0);this.base.getRgbItem(r,0,i,a)}getRgbBuffer(e,t,i,a,r,s,n){const o=this.tintFn,g=this.base,c=1/((1<<s)-1),C=g.numComps,h=g.usesZeroToOneRange,l=(g.isPassthrough(8)||!h)&&0===n;let Q=l?r:0;const E=l?a:new Uint8ClampedArray(C*i),u=this.numComps,d=new Float32Array(u),f=new Float32Array(C);let p,m;for(p=0;p<i;p++){for(m=0;m<u;m++)d[m]=e[t++]*c;o(d,0,f,0);if(h)for(m=0;m<C;m++)E[Q++]=255*f[m];else{g.getRgbItem(f,0,E,Q);Q+=C}}l||g.getRgbBuffer(E,0,i,a,r,8,n)}getOutputLength(e,t){return this.base.getOutputLength(e*this.base.numComps/this.numComps,t)}}class PatternCS extends ColorSpace{constructor(e){super("Pattern",null);this.base=e}isDefaultDecode(e,t){unreachable("Should not call PatternCS.isDefaultDecode")}}class IndexedCS extends ColorSpace{constructor(e,t,i){super("Indexed",1);this.base=e;this.highVal=t;const a=e.numComps*t;this.lookup=new Uint8Array(a);if(i instanceof BaseStream){const e=i.getBytes(a);this.lookup.set(e)}else{if("string"!=typeof i)throw new FormatError(`IndexedCS - unrecognized lookup table: ${i}`);for(let e=0;e<a;++e)this.lookup[e]=255&i.charCodeAt(e)}}getRgbItem(e,t,i,a){const r=this.base.numComps,s=e[t]*r;this.base.getRgbBuffer(this.lookup,s,1,i,a,8,0)}getRgbBuffer(e,t,i,a,r,s,n){const o=this.base,g=o.numComps,c=o.getOutputLength(g,n),C=this.lookup;for(let s=0;s<i;++s){const i=e[t++]*g;o.getRgbBuffer(C,i,1,a,r,8,n);r+=c}}getOutputLength(e,t){return this.base.getOutputLength(e*this.base.numComps,t)}isDefaultDecode(e,t){if(!Array.isArray(e))return!0;if(2!==e.length){warn("Decode map length is not correct");return!0}if(!Number.isInteger(t)||t<1){warn("Bits per component is not correct");return!0}return 0===e[0]&&e[1]===(1<<t)-1}}class DeviceGrayCS extends ColorSpace{constructor(){super("DeviceGray",1)}getRgbItem(e,t,i,a){const r=255*e[t];i[a]=i[a+1]=i[a+2]=r}getRgbBuffer(e,t,i,a,r,s,n){const o=255/((1<<s)-1);let g=t,c=r;for(let t=0;t<i;++t){const t=o*e[g++];a[c++]=t;a[c++]=t;a[c++]=t;c+=n}}getOutputLength(e,t){return e*(3+t)}}class DeviceRgbCS extends ColorSpace{constructor(){super("DeviceRGB",3)}getRgbItem(e,t,i,a){i[a]=255*e[t];i[a+1]=255*e[t+1];i[a+2]=255*e[t+2]}getRgbBuffer(e,t,i,a,r,s,n){if(8===s&&0===n){a.set(e.subarray(t,t+3*i),r);return}const o=255/((1<<s)-1);let g=t,c=r;for(let t=0;t<i;++t){a[c++]=o*e[g++];a[c++]=o*e[g++];a[c++]=o*e[g++];c+=n}}getOutputLength(e,t){return e*(3+t)/3|0}isPassthrough(e){return 8===e}}class DeviceRgbaCS extends ColorSpace{constructor(){super("DeviceRGBA",4)}getOutputLength(e,t){return 4*e}isPassthrough(e){return 8===e}}class DeviceCmykCS extends ColorSpace{constructor(){super("DeviceCMYK",4)}#t(e,t,i,a,r){const s=e[t]*i,n=e[t+1]*i,o=e[t+2]*i,g=e[t+3]*i;a[r]=255+s*(-4.387332384609988*s+54.48615194189176*n+18.82290502165302*o+212.25662451639585*g-285.2331026137004)+n*(1.7149763477362134*n-5.6096736904047315*o+-17.873870861415444*g-5.497006427196366)+o*(-2.5217340131683033*o-21.248923337353073*g+17.5119270841813)+g*(-21.86122147463605*g-189.48180835922747);a[r+1]=255+s*(8.841041422036149*s+60.118027045597366*n+6.871425592049007*o+31.159100130055922*g-79.2970844816548)+n*(-15.310361306967817*n+17.575251261109482*o+131.35250912493976*g-190.9453302588951)+o*(4.444339102852739*o+9.8632861493405*g-24.86741582555878)+g*(-20.737325471181034*g-187.80453709719578);a[r+2]=255+s*(.8842522430003296*s+8.078677503112928*n+30.89978309703729*o-.23883238689178934*g-14.183576799673286)+n*(10.49593273432072*n+63.02378494754052*o+50.606957656360734*g-112.23884253719248)+o*(.03296041114873217*o+115.60384449646641*g-193.58209356861505)+g*(-22.33816807309886*g-180.12613974708367)}getRgbItem(e,t,i,a){this.#t(e,t,1,i,a)}getRgbBuffer(e,t,i,a,r,s,n){const o=1/((1<<s)-1);for(let s=0;s<i;s++){this.#t(e,t,o,a,r);t+=4;r+=3+n}}getOutputLength(e,t){return e/4*(3+t)|0}}class CalGrayCS extends ColorSpace{constructor(e,t,i){super("CalGray",1);if(!e)throw new FormatError("WhitePoint missing - required for color space CalGray");[this.XW,this.YW,this.ZW]=e;[this.XB,this.YB,this.ZB]=t||[0,0,0];this.G=i||1;if(this.XW<0||this.ZW<0||1!==this.YW)throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);if(this.XB<0||this.YB<0||this.ZB<0){info(`Invalid BlackPoint for ${this.name}, falling back to default.`);this.XB=this.YB=this.ZB=0}0===this.XB&&0===this.YB&&0===this.ZB||warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ZB: ${this.ZB}, only default values are supported.`);if(this.G<1){info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`);this.G=1}}#t(e,t,i,a,r){const s=(e[t]*r)**this.G,n=this.YW*s,o=Math.max(295.8*n**.3333333333333333-40.8,0);i[a]=o;i[a+1]=o;i[a+2]=o}getRgbItem(e,t,i,a){this.#t(e,t,i,a,1)}getRgbBuffer(e,t,i,a,r,s,n){const o=1/((1<<s)-1);for(let s=0;s<i;++s){this.#t(e,t,a,r,o);t+=1;r+=3+n}}getOutputLength(e,t){return e*(3+t)}}class CalRGBCS extends ColorSpace{static#i=new Float32Array([.8951,.2664,-.1614,-.7502,1.7135,.0367,.0389,-.0685,1.0296]);static#a=new Float32Array([.9869929,-.1470543,.1599627,.4323053,.5183603,.0492912,-.0085287,.0400428,.9684867]);static#r=new Float32Array([3.2404542,-1.5371385,-.4985314,-.969266,1.8760108,.041556,.0556434,-.2040259,1.0572252]);static#s=new Float32Array([1,1,1]);static#n=new Float32Array(3);static#o=new Float32Array(3);static#g=new Float32Array(3);static#I=(24/116)**3/8;constructor(e,t,i,a){super("CalRGB",3);if(!e)throw new FormatError("WhitePoint missing - required for color space CalRGB");const[r,s,n]=this.whitePoint=e,[o,g,c]=this.blackPoint=t||new Float32Array(3);[this.GR,this.GG,this.GB]=i||new Float32Array([1,1,1]);[this.MXA,this.MYA,this.MZA,this.MXB,this.MYB,this.MZB,this.MXC,this.MYC,this.MZC]=a||new Float32Array([1,0,0,0,1,0,0,0,1]);if(r<0||n<0||1!==s)throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);if(o<0||g<0||c<0){info(`Invalid BlackPoint for ${this.name} [${o}, ${g}, ${c}], falling back to default.`);this.blackPoint=new Float32Array(3)}if(this.GR<0||this.GG<0||this.GB<0){info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ${this.name}, falling back to default.`);this.GR=this.GG=this.GB=1}}#c(e,t,i){i[0]=e[0]*t[0]+e[1]*t[1]+e[2]*t[2];i[1]=e[3]*t[0]+e[4]*t[1]+e[5]*t[2];i[2]=e[6]*t[0]+e[7]*t[1]+e[8]*t[2]}#C(e,t,i){i[0]=1*t[0]/e[0];i[1]=1*t[1]/e[1];i[2]=1*t[2]/e[2]}#h(e,t,i){i[0]=.95047*t[0]/e[0];i[1]=1*t[1]/e[1];i[2]=1.08883*t[2]/e[2]}#l(e){return e<=.0031308?this.#B(0,1,12.92*e):e>=.99554525?1:this.#B(0,1,1.055*e**(1/2.4)-.055)}#B(e,t,i){return Math.max(e,Math.min(t,i))}#Q(e){return e<0?-this.#Q(-e):e>8?((e+16)/116)**3:e*CalRGBCS.#I}#E(e,t,i){if(0===e[0]&&0===e[1]&&0===e[2]){i[0]=t[0];i[1]=t[1];i[2]=t[2];return}const a=this.#Q(0),r=(1-a)/(1-this.#Q(e[0])),s=1-r,n=(1-a)/(1-this.#Q(e[1])),o=1-n,g=(1-a)/(1-this.#Q(e[2])),c=1-g;i[0]=t[0]*r+s;i[1]=t[1]*n+o;i[2]=t[2]*g+c}#u(e,t,i){if(1===e[0]&&1===e[2]){i[0]=t[0];i[1]=t[1];i[2]=t[2];return}const a=i;this.#c(CalRGBCS.#i,t,a);const r=CalRGBCS.#n;this.#C(e,a,r);this.#c(CalRGBCS.#a,r,i)}#d(e,t,i){const a=i;this.#c(CalRGBCS.#i,t,a);const r=CalRGBCS.#n;this.#h(e,a,r);this.#c(CalRGBCS.#a,r,i)}#t(e,t,i,a,r){const s=this.#B(0,1,e[t]*r),n=this.#B(0,1,e[t+1]*r),o=this.#B(0,1,e[t+2]*r),g=1===s?1:s**this.GR,c=1===n?1:n**this.GG,C=1===o?1:o**this.GB,h=this.MXA*g+this.MXB*c+this.MXC*C,l=this.MYA*g+this.MYB*c+this.MYC*C,Q=this.MZA*g+this.MZB*c+this.MZC*C,E=CalRGBCS.#o;E[0]=h;E[1]=l;E[2]=Q;const u=CalRGBCS.#g;this.#u(this.whitePoint,E,u);const d=CalRGBCS.#o;this.#E(this.blackPoint,u,d);const f=CalRGBCS.#g;this.#d(CalRGBCS.#s,d,f);const p=CalRGBCS.#o;this.#c(CalRGBCS.#r,f,p);i[a]=255*this.#l(p[0]);i[a+1]=255*this.#l(p[1]);i[a+2]=255*this.#l(p[2])}getRgbItem(e,t,i,a){this.#t(e,t,i,a,1)}getRgbBuffer(e,t,i,a,r,s,n){const o=1/((1<<s)-1);for(let s=0;s<i;++s){this.#t(e,t,a,r,o);t+=3;r+=3+n}}getOutputLength(e,t){return e*(3+t)/3|0}}class LabCS extends ColorSpace{constructor(e,t,i){super("Lab",3);if(!e)throw new FormatError("WhitePoint missing - required for color space Lab");[this.XW,this.YW,this.ZW]=e;[this.amin,this.amax,this.bmin,this.bmax]=i||[-100,100,-100,100];[this.XB,this.YB,this.ZB]=t||[0,0,0];if(this.XW<0||this.ZW<0||1!==this.YW)throw new FormatError("Invalid WhitePoint components, no fallback available");if(this.XB<0||this.YB<0||this.ZB<0){info("Invalid BlackPoint, falling back to default");this.XB=this.YB=this.ZB=0}if(this.amin>this.amax||this.bmin>this.bmax){info("Invalid Range, falling back to defaults");this.amin=-100;this.amax=100;this.bmin=-100;this.bmax=100}}#f(e){return e>=6/29?e**3:108/841*(e-4/29)}#p(e,t,i,a){return i+e*(a-i)/t}#t(e,t,i,a,r){let s=e[t],n=e[t+1],o=e[t+2];if(!1!==i){s=this.#p(s,i,0,100);n=this.#p(n,i,this.amin,this.amax);o=this.#p(o,i,this.bmin,this.bmax)}n>this.amax?n=this.amax:n<this.amin&&(n=this.amin);o>this.bmax?o=this.bmax:o<this.bmin&&(o=this.bmin);const g=(s+16)/116,c=g+n/500,C=g-o/200,h=this.XW*this.#f(c),l=this.YW*this.#f(g),Q=this.ZW*this.#f(C);let E,u,d;if(this.ZW<1){E=3.1339*h+-1.617*l+-.4906*Q;u=-.9785*h+1.916*l+.0333*Q;d=.072*h+-.229*l+1.4057*Q}else{E=3.2406*h+-1.5372*l+-.4986*Q;u=-.9689*h+1.8758*l+.0415*Q;d=.0557*h+-.204*l+1.057*Q}a[r]=255*Math.sqrt(E);a[r+1]=255*Math.sqrt(u);a[r+2]=255*Math.sqrt(d)}getRgbItem(e,t,i,a){this.#t(e,t,!1,i,a)}getRgbBuffer(e,t,i,a,r,s,n){const o=(1<<s)-1;for(let s=0;s<i;s++){this.#t(e,t,o,a,r);t+=3;r+=3+n}}getOutputLength(e,t){return e*(3+t)/3|0}isDefaultDecode(e,t){return!0}get usesZeroToOneRange(){return shadow(this,"usesZeroToOneRange",!1)}}function hexToInt(e,t){let i=0;for(let a=0;a<=t;a++)i=i<<8|e[a];return i>>>0}function hexToStr(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode(...e.subarray(0,t+1))}function addHex(e,t,i){let a=0;for(let r=i;r>=0;r--){a+=e[r]+t[r];e[r]=255&a;a>>=8}}function incHex(e,t){let i=1;for(let a=t;a>=0&&i>0;a--){i+=e[a];e[a]=255&i;i>>=8}}const Nt=16;class BinaryCMapStream{constructor(e){this.buffer=e;this.pos=0;this.end=e.length;this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const i=this.readByte();if(i<0)throw new FormatError("unexpected EOF in bcmap");e=!(128&i);t=t<<7|127&i}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1));this.pos+=t+1}readHexNumber(e,t){let i;const a=this.tmpBuf;let r=0;do{const e=this.readByte();if(e<0)throw new FormatError("unexpected EOF in bcmap");i=!(128&e);a[r++]=127&e}while(!i);let s=t,n=0,o=0;for(;s>=0;){for(;o<8&&a.length>0;){n|=a[--r]<<o;o+=7}e[s]=255&n;s--;n>>=8;o-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const i=1&e[t]?255:0;let a=0;for(let r=0;r<=t;r++){a=(1&a)<<8|e[r];e[r]=a>>1^i}}readString(){const e=this.readNumber(),t=new Array(e);for(let i=0;i<e;i++)t[i]=this.readNumber();return String.fromCharCode(...t)}}class BinaryCMapReader{async process(e,t,i){const a=new BinaryCMapStream(e),r=a.readByte();t.vertical=!!(1&r);let s=null;const n=new Uint8Array(Nt),o=new Uint8Array(Nt),g=new Uint8Array(Nt),c=new Uint8Array(Nt),C=new Uint8Array(Nt);let h,l;for(;(l=a.readByte())>=0;){const e=l>>5;if(7===e){switch(31&l){case 0:a.readString();break;case 1:s=a.readString()}continue}const i=!!(16&l),r=15&l;if(r+1>Nt)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const Q=1,E=a.readNumber();switch(e){case 0:a.readHex(n,r);a.readHexNumber(o,r);addHex(o,n,r);t.addCodespaceRange(r+1,hexToInt(n,r),hexToInt(o,r));for(let e=1;e<E;e++){incHex(o,r);a.readHexNumber(n,r);addHex(n,o,r);a.readHexNumber(o,r);addHex(o,n,r);t.addCodespaceRange(r+1,hexToInt(n,r),hexToInt(o,r))}break;case 1:a.readHex(n,r);a.readHexNumber(o,r);addHex(o,n,r);a.readNumber();for(let e=1;e<E;e++){incHex(o,r);a.readHexNumber(n,r);addHex(n,o,r);a.readHexNumber(o,r);addHex(o,n,r);a.readNumber()}break;case 2:a.readHex(g,r);h=a.readNumber();t.mapOne(hexToInt(g,r),h);for(let e=1;e<E;e++){incHex(g,r);if(!i){a.readHexNumber(C,r);addHex(g,C,r)}h=a.readSigned()+(h+1);t.mapOne(hexToInt(g,r),h)}break;case 3:a.readHex(n,r);a.readHexNumber(o,r);addHex(o,n,r);h=a.readNumber();t.mapCidRange(hexToInt(n,r),hexToInt(o,r),h);for(let e=1;e<E;e++){incHex(o,r);if(i)n.set(o);else{a.readHexNumber(n,r);addHex(n,o,r)}a.readHexNumber(o,r);addHex(o,n,r);h=a.readNumber();t.mapCidRange(hexToInt(n,r),hexToInt(o,r),h)}break;case 4:a.readHex(g,Q);a.readHex(c,r);t.mapOne(hexToInt(g,Q),hexToStr(c,r));for(let e=1;e<E;e++){incHex(g,Q);if(!i){a.readHexNumber(C,Q);addHex(g,C,Q)}incHex(c,r);a.readHexSigned(C,r);addHex(c,C,r);t.mapOne(hexToInt(g,Q),hexToStr(c,r))}break;case 5:a.readHex(n,Q);a.readHexNumber(o,Q);addHex(o,n,Q);a.readHex(c,r);t.mapBfRange(hexToInt(n,Q),hexToInt(o,Q),hexToStr(c,r));for(let e=1;e<E;e++){incHex(o,Q);if(i)n.set(o);else{a.readHexNumber(n,Q);addHex(n,o,Q)}a.readHexNumber(o,Q);addHex(o,n,Q);a.readHex(c,r);t.mapBfRange(hexToInt(n,Q),hexToInt(o,Q),hexToStr(c,r))}break;default:throw new Error(`BinaryCMapReader.process - unknown type: ${e}`)}}return s?i(s):t}}const Gt=new Uint8Array(0);class DecodeStream extends BaseStream{constructor(e){super();this._rawMinBufferLength=e||0;this.pos=0;this.bufferLength=0;this.eof=!1;this.buffer=Gt;this.minBufferLength=512;if(e)for(;this.minBufferLength<e;)this.minBufferLength*=2}get isEmpty(){for(;!this.eof&&0===this.bufferLength;)this.readBlock();return 0===this.bufferLength}ensureBuffer(e){const t=this.buffer;if(e<=t.byteLength)return t;let i=this.minBufferLength;for(;i<e;)i*=2;const a=new Uint8Array(i);a.set(t);return this.buffer=a}getByte(){const e=this.pos;for(;this.bufferLength<=e;){if(this.eof)return-1;this.readBlock()}return this.buffer[this.pos++]}getBytes(e,t=null){const i=this.pos;let a;if(e){this.ensureBuffer(i+e);a=i+e;for(;!this.eof&&this.bufferLength<a;)this.readBlock(t);const r=this.bufferLength;a>r&&(a=r)}else{for(;!this.eof;)this.readBlock(t);a=this.bufferLength}this.pos=a;return this.buffer.subarray(i,a)}async getImageData(e,t=null){if(!this.canAsyncDecodeImageFromBuffer)return this.getBytes(e,t);const i=await this.stream.asyncGetBytes();return this.decodeImage(i,t)}reset(){this.pos=0}makeSubStream(e,t,i=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const i=e+t;for(;this.bufferLength<=i&&!this.eof;)this.readBlock()}return new Stream(this.buffer,e,t,i)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}class StreamsSequenceStream extends DecodeStream{constructor(e,t=null){let i=0;for(const t of e)i+=t instanceof DecodeStream?t._rawMinBufferLength:t.length;super(i);this.streams=e;this._onError=t}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift();let i;try{i=t.getBytes()}catch(e){if(this._onError){this._onError(e,t.dict?.objId);return}throw e}const a=this.bufferLength,r=a+i.length;this.ensureBuffer(r).set(i,a);this.bufferLength=r}getBaseStreams(){const e=[];for(const t of this.streams){const i=t.getBaseStreams();i&&e.push(...i)}return e.length>0?e:null}}class Ascii85Stream extends DecodeStream{constructor(e,t){t&&(t*=.8);super(t);this.str=e;this.dict=e.dict;this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;isWhiteSpace(t);)t=e.getByte();if(-1===t||126===t){this.eof=!0;return}const i=this.bufferLength;let a,r;if(122===t){a=this.ensureBuffer(i+4);for(r=0;r<4;++r)a[i+r]=0;this.bufferLength+=4}else{const s=this.input;s[0]=t;for(r=1;r<5;++r){t=e.getByte();for(;isWhiteSpace(t);)t=e.getByte();s[r]=t;if(-1===t||126===t)break}a=this.ensureBuffer(i+r-1);this.bufferLength+=r-1;if(r<5){for(;r<5;++r)s[r]=117;this.eof=!0}let n=0;for(r=0;r<5;++r)n=85*n+(s[r]-33);for(r=3;r>=0;--r){a[i+r]=255&n;n>>=8}}}}class AsciiHexStream extends DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.str=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,i=this.ensureBuffer(this.bufferLength+t);let a=this.bufferLength,r=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}if(r<0)r=e;else{i[a++]=r<<4|e;r=-1}}if(r>=0&&this.eof){i[a++]=r<<4;r=-1}this.firstDigit=r;this.bufferLength=a}}const xt=-1,Ut=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],Mt=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],Lt=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],Ht=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],Jt=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],Yt=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];class CCITTFaxDecoder{constructor(e,t={}){if(!e||"function"!=typeof e.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');this.source=e;this.eof=!1;this.encoding=t.K||0;this.eoline=t.EndOfLine||!1;this.byteAlign=t.EncodedByteAlign||!1;this.columns=t.Columns||1728;this.rows=t.Rows||0;this.eoblock=t.EndOfBlock??!0;this.black=t.BlackIs1||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.codingPos=0;this.row=0;this.nextLine2D=this.encoding<0;this.inputBits=0;this.inputBuf=0;this.outputBits=0;this.rowsDone=!1;let i;for(;0===(i=this._lookBits(12));)this._eatBits(1);1===i&&this._eatBits(12);if(this.encoding>0){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,i=this.columns;let a,r,s,n,o;if(0===this.outputBits){this.rowsDone&&(this.eof=!0);if(this.eof)return-1;this.err=!1;let s,o,g;if(this.nextLine2D){for(n=0;t[n]<i;++n)e[n]=t[n];e[n++]=i;e[n]=i;t[0]=0;this.codingPos=0;a=0;r=0;for(;t[this.codingPos]<i;){s=this._getTwoDimCode();switch(s){case 0:this._addPixels(e[a+1],r);e[a+1]<i&&(a+=2);break;case 1:s=o=0;if(r){do{s+=g=this._getBlackCode()}while(g>=64);do{o+=g=this._getWhiteCode()}while(g>=64)}else{do{s+=g=this._getWhiteCode()}while(g>=64);do{o+=g=this._getBlackCode()}while(g>=64)}this._addPixels(t[this.codingPos]+s,r);t[this.codingPos]<i&&this._addPixels(t[this.codingPos]+o,1^r);for(;e[a]<=t[this.codingPos]&&e[a]<i;)a+=2;break;case 7:this._addPixels(e[a]+3,r);r^=1;if(t[this.codingPos]<i){++a;for(;e[a]<=t[this.codingPos]&&e[a]<i;)a+=2}break;case 5:this._addPixels(e[a]+2,r);r^=1;if(t[this.codingPos]<i){++a;for(;e[a]<=t[this.codingPos]&&e[a]<i;)a+=2}break;case 3:this._addPixels(e[a]+1,r);r^=1;if(t[this.codingPos]<i){++a;for(;e[a]<=t[this.codingPos]&&e[a]<i;)a+=2}break;case 2:this._addPixels(e[a],r);r^=1;if(t[this.codingPos]<i){++a;for(;e[a]<=t[this.codingPos]&&e[a]<i;)a+=2}break;case 8:this._addPixelsNeg(e[a]-3,r);r^=1;if(t[this.codingPos]<i){a>0?--a:++a;for(;e[a]<=t[this.codingPos]&&e[a]<i;)a+=2}break;case 6:this._addPixelsNeg(e[a]-2,r);r^=1;if(t[this.codingPos]<i){a>0?--a:++a;for(;e[a]<=t[this.codingPos]&&e[a]<i;)a+=2}break;case 4:this._addPixelsNeg(e[a]-1,r);r^=1;if(t[this.codingPos]<i){a>0?--a:++a;for(;e[a]<=t[this.codingPos]&&e[a]<i;)a+=2}break;case xt:this._addPixels(i,0);this.eof=!0;break;default:info("bad 2d code");this._addPixels(i,0);this.err=!0}}}else{t[0]=0;this.codingPos=0;r=0;for(;t[this.codingPos]<i;){s=0;if(r)do{s+=g=this._getBlackCode()}while(g>=64);else do{s+=g=this._getWhiteCode()}while(g>=64);this._addPixels(t[this.codingPos]+s,r);r^=1}}let c=!1;this.byteAlign&&(this.inputBits&=-8);if(this.eoblock||this.row!==this.rows-1){s=this._lookBits(12);if(this.eoline)for(;s!==xt&&1!==s;){this._eatBits(1);s=this._lookBits(12)}else for(;0===s;){this._eatBits(1);s=this._lookBits(12)}if(1===s){this._eatBits(12);c=!0}else s===xt&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}if(this.eoblock&&c&&this.byteAlign){s=this._lookBits(12);if(1===s){this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}if(this.encoding>=0)for(n=0;n<4;++n){s=this._lookBits(12);1!==s&&info("bad rtc code: "+s);this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}}this.eof=!0}}else if(this.err&&this.eoline){for(;;){s=this._lookBits(13);if(s===xt){this.eof=!0;return-1}if(s>>1==1)break;this._eatBits(1)}this._eatBits(12);if(this.encoding>0){this._eatBits(1);this.nextLine2D=!(1&s)}}this.outputBits=t[0]>0?t[this.codingPos=0]:t[this.codingPos=1];this.row++}if(this.outputBits>=8){o=1&this.codingPos?0:255;this.outputBits-=8;if(0===this.outputBits&&t[this.codingPos]<i){this.codingPos++;this.outputBits=t[this.codingPos]-t[this.codingPos-1]}}else{s=8;o=0;do{if("number"!=typeof this.outputBits)throw new FormatError('Invalid /CCITTFaxDecode data, "outputBits" must be a number.');if(this.outputBits>s){o<<=s;1&this.codingPos||(o|=255>>8-s);this.outputBits-=s;s=0}else{o<<=this.outputBits;1&this.codingPos||(o|=255>>8-this.outputBits);s-=this.outputBits;this.outputBits=0;if(t[this.codingPos]<i){this.codingPos++;this.outputBits=t[this.codingPos]-t[this.codingPos-1]}else if(s>0){o<<=s;s=0}}}while(s)}this.black&&(o^=255);return o}_addPixels(e,t){const i=this.codingLine;let a=this.codingPos;if(e>i[a]){if(e>this.columns){info("row is wrong length");this.err=!0;e=this.columns}1&a^t&&++a;i[a]=e}this.codingPos=a}_addPixelsNeg(e,t){const i=this.codingLine;let a=this.codingPos;if(e>i[a]){if(e>this.columns){info("row is wrong length");this.err=!0;e=this.columns}1&a^t&&++a;i[a]=e}else if(e<i[a]){if(e<0){info("invalid code");this.err=!0;e=0}for(;a>0&&e<i[a-1];)--a;i[a]=e}this.codingPos=a}_findTableCode(e,t,i,a){const r=a||0;for(let a=e;a<=t;++a){let e=this._lookBits(a);if(e===xt)return[!0,1,!1];a<t&&(e<<=t-a);if(!r||e>=r){const t=i[e-r];if(t[0]===a){this._eatBits(a);return[!0,t[1],!0]}}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){t=this._lookBits(7);e=Ut[t];if(e?.[0]>0){this._eatBits(e[0]);return e[1]}}else{const e=this._findTableCode(1,7,Ut);if(e[0]&&e[2])return e[1]}info("Bad two dim code");return xt}_getWhiteCode(){let e,t=0;if(this.eoblock){t=this._lookBits(12);if(t===xt)return 1;e=t>>5==0?Mt[t]:Lt[t>>3];if(e[0]>0){this._eatBits(e[0]);return e[1]}}else{let e=this._findTableCode(1,9,Lt);if(e[0])return e[1];e=this._findTableCode(11,12,Mt);if(e[0])return e[1]}info("bad white code");this._eatBits(1);return 1}_getBlackCode(){let e,t;if(this.eoblock){e=this._lookBits(13);if(e===xt)return 1;t=e>>7==0?Ht[e]:e>>9==0&&e>>7!=0?Jt[(e>>1)-64]:Yt[e>>7];if(t[0]>0){this._eatBits(t[0]);return t[1]}}else{let e=this._findTableCode(2,6,Yt);if(e[0])return e[1];e=this._findTableCode(7,12,Jt,64);if(e[0])return e[1];e=this._findTableCode(10,13,Ht);if(e[0])return e[1]}info("bad black code");this._eatBits(1);return 1}_lookBits(e){let t;for(;this.inputBits<e;){if(-1===(t=this.source.next()))return 0===this.inputBits?xt:this.inputBuf<<e-this.inputBits&65535>>16-e;this.inputBuf=this.inputBuf<<8|t;this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}class CCITTFaxStream extends DecodeStream{constructor(e,t,i){super(t);this.str=e;this.dict=e.dict;i instanceof Dict||(i=Dict.empty);const a={next:()=>e.getByte()};this.ccittFaxDecoder=new CCITTFaxDecoder(a,{K:i.get("K"),EndOfLine:i.get("EndOfLine"),EncodedByteAlign:i.get("EncodedByteAlign"),Columns:i.get("Columns"),Rows:i.get("Rows"),EndOfBlock:i.get("EndOfBlock"),BlackIs1:i.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e){this.eof=!0;return}this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=e}}}const vt=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Tt=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),Kt=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),qt=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],Ot=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class FlateStream extends DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict;const i=e.getByte(),a=e.getByte();if(-1===i||-1===a)throw new FormatError(`Invalid header in flate stream: ${i}, ${a}`);if(8!=(15&i))throw new FormatError(`Unknown compression method in flate stream: ${i}, ${a}`);if(((i<<8)+a)%31!=0)throw new FormatError(`Bad FCHECK in flate stream: ${i}, ${a}`);if(32&a)throw new FormatError(`FDICT bit set in flate stream: ${i}, ${a}`);this.codeSize=0;this.codeBuf=0}async getImageData(e,t){const i=await this.asyncGetBytes();return i?.subarray(0,e)||this.getBytes(e)}async asyncGetBytes(){this.str.reset();const e=this.str.getBytes();try{const{readable:t,writable:i}=new DecompressionStream("deflate"),a=i.getWriter();a.write(e);a.close();const r=[];let s=0;for await(const e of t){r.push(e);s+=e.byteLength}const n=new Uint8Array(s);let o=0;for(const e of r){n.set(e,o);o+=e.byteLength}return n}catch{this.str=new Stream(e,2,e.length,this.str.dict);this.reset();return null}}get isAsync(){return!0}getBits(e){const t=this.str;let i,a=this.codeSize,r=this.codeBuf;for(;a<e;){if(-1===(i=t.getByte()))throw new FormatError("Bad encoding in flate stream");r|=i<<a;a+=8}i=r&(1<<e)-1;this.codeBuf=r>>e;this.codeSize=a-=e;return i}getCode(e){const t=this.str,i=e[0],a=e[1];let r,s=this.codeSize,n=this.codeBuf;for(;s<a&&-1!==(r=t.getByte());){n|=r<<s;s+=8}const o=i[n&(1<<a)-1],g=o>>16,c=65535&o;if(g<1||s<g)throw new FormatError("Bad encoding in flate stream");this.codeBuf=n>>g;this.codeSize=s-g;return c}generateHuffmanTable(e){const t=e.length;let i,a=0;for(i=0;i<t;++i)e[i]>a&&(a=e[i]);const r=1<<a,s=new Int32Array(r);for(let n=1,o=0,g=2;n<=a;++n,o<<=1,g<<=1)for(let a=0;a<t;++a)if(e[a]===n){let e=0,t=o;for(i=0;i<n;++i){e=e<<1|1&t;t>>=1}for(i=e;i<r;i+=g)s[i]=n<<16|a;++o}return[s,a]}#m(e){info(e);this.eof=!0}readBlock(){let e,t,i;const a=this.str;try{t=this.getBits(3)}catch(e){this.#m(e.message);return}1&t&&(this.eof=!0);t>>=1;if(0===t){let t;if(-1===(t=a.getByte())){this.#m("Bad block header in flate stream");return}let i=t;if(-1===(t=a.getByte())){this.#m("Bad block header in flate stream");return}i|=t<<8;if(-1===(t=a.getByte())){this.#m("Bad block header in flate stream");return}let r=t;if(-1===(t=a.getByte())){this.#m("Bad block header in flate stream");return}r|=t<<8;if(r!==(65535&~i)&&(0!==i||0!==r))throw new FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const s=this.bufferLength,n=s+i;e=this.ensureBuffer(n);this.bufferLength=n;if(0===i)-1===a.peekByte()&&(this.eof=!0);else{const t=a.getBytes(i);e.set(t,s);t.length<i&&(this.eof=!0)}return}let r,s;if(1===t){r=qt;s=Ot}else{if(2!==t)throw new FormatError("Unknown block type in flate stream");{const e=this.getBits(5)+257,t=this.getBits(5)+1,a=this.getBits(4)+4,n=new Uint8Array(vt.length);let o;for(o=0;o<a;++o)n[vt[o]]=this.getBits(3);const g=this.generateHuffmanTable(n);i=0;o=0;const c=e+t,C=new Uint8Array(c);let h,l,Q;for(;o<c;){const e=this.getCode(g);if(16===e){h=2;l=3;Q=i}else if(17===e){h=3;l=3;Q=i=0}else{if(18!==e){C[o++]=i=e;continue}h=7;l=11;Q=i=0}let t=this.getBits(h)+l;for(;t-- >0;)C[o++]=Q}r=this.generateHuffmanTable(C.subarray(0,e));s=this.generateHuffmanTable(C.subarray(e,c))}}e=this.buffer;let n=e?e.length:0,o=this.bufferLength;for(;;){let t=this.getCode(r);if(t<256){if(o+1>=n){e=this.ensureBuffer(o+1);n=e.length}e[o++]=t;continue}if(256===t){this.bufferLength=o;return}t-=257;t=Tt[t];let a=t>>16;a>0&&(a=this.getBits(a));i=(65535&t)+a;t=this.getCode(s);t=Kt[t];a=t>>16;a>0&&(a=this.getBits(a));const g=(65535&t)+a;if(o+i>=n){e=this.ensureBuffer(o+i);n=e.length}for(let t=0;t<i;++t,++o)e[o]=e[o-g]}}}const Pt=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];class ArithmeticDecoder{constructor(e,t,i){this.data=e;this.bp=t;this.dataEnd=i;this.chigh=e[t];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}byteIn(){const e=this.data;let t=this.bp;if(255===e[t])if(e[t+1]>143){this.clow+=65280;this.ct=8}else{t++;this.clow+=e[t]<<9;this.ct=7;this.bp=t}else{t++;this.clow+=t<this.dataEnd?e[t]<<8:65280;this.ct=8;this.bp=t}if(this.clow>65535){this.chigh+=this.clow>>16;this.clow&=65535}}readBit(e,t){let i=e[t]>>1,a=1&e[t];const r=Pt[i],s=r.qe;let n,o=this.a-s;if(this.chigh<s)if(o<s){o=s;n=a;i=r.nmps}else{o=s;n=1^a;1===r.switchFlag&&(a=n);i=r.nlps}else{this.chigh-=s;if(0!=(32768&o)){this.a=o;return a}if(o<s){n=1^a;1===r.switchFlag&&(a=n);i=r.nlps}else{n=a;i=r.nmps}}do{0===this.ct&&this.byteIn();o<<=1;this.chigh=this.chigh<<1&65535|this.clow>>15&1;this.clow=this.clow<<1&65535;this.ct--}while(0==(32768&o));this.a=o;e[t]=i<<1|a;return n}}class Jbig2Error extends ot{constructor(e){super(e,"Jbig2Error")}}class ContextCache{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class DecodingContext{constructor(e,t,i){this.data=e;this.start=t;this.end=i}get decoder(){return shadow(this,"decoder",new ArithmeticDecoder(this.data,this.start,this.end))}get contextCache(){return shadow(this,"contextCache",new ContextCache)}}const Wt=2**31-1,jt=-(2**31);function decodeInteger(e,t,i){const a=e.getContexts(t);let r=1;function readBits(e){let t=0;for(let s=0;s<e;s++){const e=i.readBit(a,r);r=r<256?r<<1|e:511&(r<<1|e)|256;t=t<<1|e}return t>>>0}const s=readBits(1),n=readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(32)+4436:readBits(12)+340:readBits(8)+84:readBits(6)+20:readBits(4)+4:readBits(2);let o;0===s?o=n:n>0&&(o=-n);return o>=jt&&o<=Wt?o:null}function decodeIAID(e,t,i){const a=e.getContexts("IAID");let r=1;for(let e=0;e<i;e++){r=r<<1|t.readBit(a,r)}return i<31?r&(1<<i)-1:2147483647&r}const Xt=["SymbolDictionary",null,null,null,"IntermediateTextRegion",null,"ImmediateTextRegion","ImmediateLosslessTextRegion",null,null,null,null,null,null,null,null,"PatternDictionary",null,null,null,"IntermediateHalftoneRegion",null,"ImmediateHalftoneRegion","ImmediateLosslessHalftoneRegion",null,null,null,null,null,null,null,null,null,null,null,null,"IntermediateGenericRegion",null,"ImmediateGenericRegion","ImmediateLosslessGenericRegion","IntermediateGenericRefinementRegion",null,"ImmediateGenericRefinementRegion","ImmediateLosslessGenericRefinementRegion",null,null,null,null,"PageInformation","EndOfPage","EndOfStripe","EndOfFile","Profiles","Tables",null,null,null,null,null,null,null,null,"Extension"],Zt=[[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:2,y:-1},{x:-4,y:0},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}],[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:2,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:2,y:-1},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}],[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-2,y:0},{x:-1,y:0}],[{x:-3,y:-1},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-4,y:0},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}]],Vt=[{coding:[{x:0,y:-1},{x:1,y:-1},{x:-1,y:0}],reference:[{x:0,y:-1},{x:1,y:-1},{x:-1,y:0},{x:0,y:0},{x:1,y:0},{x:-1,y:1},{x:0,y:1},{x:1,y:1}]},{coding:[{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-1,y:0}],reference:[{x:0,y:-1},{x:-1,y:0},{x:0,y:0},{x:1,y:0},{x:0,y:1},{x:1,y:1}]}],_t=[39717,1941,229,405],zt=[32,8];function decodeBitmap(e,t,i,a,r,s,n,o){if(e){return decodeMMRBitmap(new Reader(o.data,o.start,o.end),t,i,!1)}if(0===a&&!s&&!r&&4===n.length&&3===n[0].x&&-1===n[0].y&&-3===n[1].x&&-1===n[1].y&&2===n[2].x&&-2===n[2].y&&-2===n[3].x&&-2===n[3].y)return function decodeBitmapTemplate0(e,t,i){const a=i.decoder,r=i.contextCache.getContexts("GB"),s=[];let n,o,g,c,C,h,l;for(o=0;o<t;o++){C=s[o]=new Uint8Array(e);h=o<1?C:s[o-1];l=o<2?C:s[o-2];n=l[0]<<13|l[1]<<12|l[2]<<11|h[0]<<7|h[1]<<6|h[2]<<5|h[3]<<4;for(g=0;g<e;g++){C[g]=c=a.readBit(r,n);n=(31735&n)<<1|(g+3<e?l[g+3]<<11:0)|(g+4<e?h[g+4]<<4:0)|c}}return s}(t,i,o);const g=!!s,c=Zt[a].concat(n);c.sort((function(e,t){return e.y-t.y||e.x-t.x}));const C=c.length,h=new Int8Array(C),l=new Int8Array(C),Q=[];let E,u,d=0,f=0,p=0,m=0;for(u=0;u<C;u++){h[u]=c[u].x;l[u]=c[u].y;f=Math.min(f,c[u].x);p=Math.max(p,c[u].x);m=Math.min(m,c[u].y);u<C-1&&c[u].y===c[u+1].y&&c[u].x===c[u+1].x-1?d|=1<<C-1-u:Q.push(u)}const y=Q.length,w=new Int8Array(y),b=new Int8Array(y),D=new Uint16Array(y);for(E=0;E<y;E++){u=Q[E];w[E]=c[u].x;b[E]=c[u].y;D[E]=1<<C-1-u}const S=-f,k=-m,R=t-p,N=_t[a];let G=new Uint8Array(t);const x=[],U=o.decoder,M=o.contextCache.getContexts("GB");let L,H,J,Y,v,T=0,K=0;for(let e=0;e<i;e++){if(r){T^=U.readBit(M,N);if(T){x.push(G);continue}}G=new Uint8Array(G);x.push(G);for(L=0;L<t;L++){if(g&&s[e][L]){G[L]=0;continue}if(L>=S&&L<R&&e>=k){K=K<<1&d;for(u=0;u<y;u++){H=e+b[u];J=L+w[u];Y=x[H][J];if(Y){Y=D[u];K|=Y}}}else{K=0;v=C-1;for(u=0;u<C;u++,v--){J=L+h[u];if(J>=0&&J<t){H=e+l[u];if(H>=0){Y=x[H][J];Y&&(K|=Y<<v)}}}}const i=U.readBit(M,K);G[L]=i}}return x}function decodeRefinement(e,t,i,a,r,s,n,o,g){let c=Vt[i].coding;0===i&&(c=c.concat([o[0]]));const C=c.length,h=new Int32Array(C),l=new Int32Array(C);let Q;for(Q=0;Q<C;Q++){h[Q]=c[Q].x;l[Q]=c[Q].y}let E=Vt[i].reference;0===i&&(E=E.concat([o[1]]));const u=E.length,d=new Int32Array(u),f=new Int32Array(u);for(Q=0;Q<u;Q++){d[Q]=E[Q].x;f[Q]=E[Q].y}const p=a[0].length,m=a.length,y=zt[i],w=[],b=g.decoder,D=g.contextCache.getContexts("GR");let S=0;for(let i=0;i<t;i++){if(n){S^=b.readBit(D,y);if(S)throw new Jbig2Error("prediction is not supported")}const t=new Uint8Array(e);w.push(t);for(let n=0;n<e;n++){let o,g,c=0;for(Q=0;Q<C;Q++){o=i+l[Q];g=n+h[Q];o<0||g<0||g>=e?c<<=1:c=c<<1|w[o][g]}for(Q=0;Q<u;Q++){o=i+f[Q]-s;g=n+d[Q]-r;o<0||o>=m||g<0||g>=p?c<<=1:c=c<<1|a[o][g]}const E=b.readBit(D,c);t[n]=E}}return w}function decodeTextRegion(e,t,i,a,r,s,n,o,g,c,C,h,l,Q,E,u,d,f,p){if(e&&t)throw new Jbig2Error("refinement with Huffman is not supported");const m=[];let y,w;for(y=0;y<a;y++){w=new Uint8Array(i);if(r)for(let e=0;e<i;e++)w[e]=r;m.push(w)}const b=d.decoder,D=d.contextCache;let S=e?-Q.tableDeltaT.decode(p):-decodeInteger(D,"IADT",b),k=0;y=0;for(;y<s;){S+=e?Q.tableDeltaT.decode(p):decodeInteger(D,"IADT",b);k+=e?Q.tableFirstS.decode(p):decodeInteger(D,"IAFS",b);let a=k;for(;;){let r=0;n>1&&(r=e?p.readBits(f):decodeInteger(D,"IAIT",b));const s=n*S+r,k=e?Q.symbolIDTable.decode(p):decodeIAID(D,b,g),R=t&&(e?p.readBit():decodeInteger(D,"IARI",b));let N=o[k],G=N[0].length,x=N.length;if(R){const e=decodeInteger(D,"IARDW",b),t=decodeInteger(D,"IARDH",b);G+=e;x+=t;N=decodeRefinement(G,x,E,N,(e>>1)+decodeInteger(D,"IARDX",b),(t>>1)+decodeInteger(D,"IARDY",b),!1,u,d)}let U=0;c?1&h?U=x-1:a+=x-1:h>1?a+=G-1:U=G-1;const M=s-(1&h?0:x-1),L=a-(2&h?G-1:0);let H,J,Y;if(c)for(H=0;H<x;H++){w=m[L+H];if(!w)continue;Y=N[H];const e=Math.min(i-M,G);switch(l){case 0:for(J=0;J<e;J++)w[M+J]|=Y[J];break;case 2:for(J=0;J<e;J++)w[M+J]^=Y[J];break;default:throw new Jbig2Error(`operator ${l} is not supported`)}}else for(J=0;J<x;J++){w=m[M+J];if(w){Y=N[J];switch(l){case 0:for(H=0;H<G;H++)w[L+H]|=Y[H];break;case 2:for(H=0;H<G;H++)w[L+H]^=Y[H];break;default:throw new Jbig2Error(`operator ${l} is not supported`)}}}y++;const v=e?Q.tableDeltaS.decode(p):decodeInteger(D,"IADS",b);if(null===v)break;a+=U+v+C}}return m}function readSegmentHeader(e,t){const i={};i.number=readUint32(e,t);const a=e[t+4],r=63&a;if(!Xt[r])throw new Jbig2Error("invalid segment type: "+r);i.type=r;i.typeName=Xt[r];i.deferredNonRetain=!!(128&a);const s=!!(64&a),n=e[t+5];let o=n>>5&7;const g=[31&n];let c=t+6;if(7===n){o=536870911&readUint32(e,c-1);c+=3;let t=o+7>>3;g[0]=e[c++];for(;--t>0;)g.push(e[c++])}else if(5===n||6===n)throw new Jbig2Error("invalid referred-to flags");i.retainBits=g;let C=4;i.number<=256?C=1:i.number<=65536&&(C=2);const h=[];let l,Q;for(l=0;l<o;l++){let t;t=1===C?e[c]:2===C?readUint16(e,c):readUint32(e,c);h.push(t);c+=C}i.referredTo=h;if(s){i.pageAssociation=readUint32(e,c);c+=4}else i.pageAssociation=e[c++];i.length=readUint32(e,c);c+=4;if(4294967295===i.length){if(38!==r)throw new Jbig2Error("invalid unknown segment length");{const t=readRegionSegmentInformation(e,c),a=!!(1&e[c+$t]),r=6,s=new Uint8Array(r);if(!a){s[0]=255;s[1]=172}s[2]=t.height>>>24&255;s[3]=t.height>>16&255;s[4]=t.height>>8&255;s[5]=255&t.height;for(l=c,Q=e.length;l<Q;l++){let t=0;for(;t<r&&s[t]===e[l+t];)t++;if(t===r){i.length=l+r;break}}if(4294967295===i.length)throw new Jbig2Error("segment end was not found")}}i.headerEnd=c;return i}function readSegments(e,t,i,a){const r=[];let s=i;for(;s<a;){const i=readSegmentHeader(t,s);s=i.headerEnd;const a={header:i,data:t};if(!e.randomAccess){a.start=s;s+=i.length;a.end=s}r.push(a);if(51===i.type)break}if(e.randomAccess)for(let e=0,t=r.length;e<t;e++){r[e].start=s;s+=r[e].header.length;r[e].end=s}return r}function readRegionSegmentInformation(e,t){return{width:readUint32(e,t),height:readUint32(e,t+4),x:readUint32(e,t+8),y:readUint32(e,t+12),combinationOperator:7&e[t+16]}}const $t=17;function processSegment(e,t){const i=e.header,a=e.data,r=e.end;let s,n,o,g,c=e.start;switch(i.type){case 0:const e={},t=readUint16(a,c);e.huffman=!!(1&t);e.refinement=!!(2&t);e.huffmanDHSelector=t>>2&3;e.huffmanDWSelector=t>>4&3;e.bitmapSizeSelector=t>>6&1;e.aggregationInstancesSelector=t>>7&1;e.bitmapCodingContextUsed=!!(256&t);e.bitmapCodingContextRetained=!!(512&t);e.template=t>>10&3;e.refinementTemplate=t>>12&1;c+=2;if(!e.huffman){g=0===e.template?4:1;n=[];for(o=0;o<g;o++){n.push({x:readInt8(a,c),y:readInt8(a,c+1)});c+=2}e.at=n}if(e.refinement&&!e.refinementTemplate){n=[];for(o=0;o<2;o++){n.push({x:readInt8(a,c),y:readInt8(a,c+1)});c+=2}e.refinementAt=n}e.numberOfExportedSymbols=readUint32(a,c);c+=4;e.numberOfNewSymbols=readUint32(a,c);c+=4;s=[e,i.number,i.referredTo,a,c,r];break;case 6:case 7:const C={};C.info=readRegionSegmentInformation(a,c);c+=$t;const h=readUint16(a,c);c+=2;C.huffman=!!(1&h);C.refinement=!!(2&h);C.logStripSize=h>>2&3;C.stripSize=1<<C.logStripSize;C.referenceCorner=h>>4&3;C.transposed=!!(64&h);C.combinationOperator=h>>7&3;C.defaultPixelValue=h>>9&1;C.dsOffset=h<<17>>27;C.refinementTemplate=h>>15&1;if(C.huffman){const e=readUint16(a,c);c+=2;C.huffmanFS=3&e;C.huffmanDS=e>>2&3;C.huffmanDT=e>>4&3;C.huffmanRefinementDW=e>>6&3;C.huffmanRefinementDH=e>>8&3;C.huffmanRefinementDX=e>>10&3;C.huffmanRefinementDY=e>>12&3;C.huffmanRefinementSizeSelector=!!(16384&e)}if(C.refinement&&!C.refinementTemplate){n=[];for(o=0;o<2;o++){n.push({x:readInt8(a,c),y:readInt8(a,c+1)});c+=2}C.refinementAt=n}C.numberOfSymbolInstances=readUint32(a,c);c+=4;s=[C,i.referredTo,a,c,r];break;case 16:const l={},Q=a[c++];l.mmr=!!(1&Q);l.template=Q>>1&3;l.patternWidth=a[c++];l.patternHeight=a[c++];l.maxPatternIndex=readUint32(a,c);c+=4;s=[l,i.number,a,c,r];break;case 22:case 23:const E={};E.info=readRegionSegmentInformation(a,c);c+=$t;const u=a[c++];E.mmr=!!(1&u);E.template=u>>1&3;E.enableSkip=!!(8&u);E.combinationOperator=u>>4&7;E.defaultPixelValue=u>>7&1;E.gridWidth=readUint32(a,c);c+=4;E.gridHeight=readUint32(a,c);c+=4;E.gridOffsetX=4294967295&readUint32(a,c);c+=4;E.gridOffsetY=4294967295&readUint32(a,c);c+=4;E.gridVectorX=readUint16(a,c);c+=2;E.gridVectorY=readUint16(a,c);c+=2;s=[E,i.referredTo,a,c,r];break;case 38:case 39:const d={};d.info=readRegionSegmentInformation(a,c);c+=$t;const f=a[c++];d.mmr=!!(1&f);d.template=f>>1&3;d.prediction=!!(8&f);if(!d.mmr){g=0===d.template?4:1;n=[];for(o=0;o<g;o++){n.push({x:readInt8(a,c),y:readInt8(a,c+1)});c+=2}d.at=n}s=[d,a,c,r];break;case 48:const p={width:readUint32(a,c),height:readUint32(a,c+4),resolutionX:readUint32(a,c+8),resolutionY:readUint32(a,c+12)};4294967295===p.height&&delete p.height;const m=a[c+16];readUint16(a,c+17);p.lossless=!!(1&m);p.refinement=!!(2&m);p.defaultPixelValue=m>>2&1;p.combinationOperator=m>>3&3;p.requiresBuffer=!!(32&m);p.combinationOperatorOverride=!!(64&m);s=[p];break;case 49:case 50:case 51:case 62:break;case 53:s=[i.number,a,c,r];break;default:throw new Jbig2Error(`segment type ${i.typeName}(${i.type}) is not implemented`)}const C="on"+i.typeName;C in t&&t[C].apply(t,s)}function processSegments(e,t){for(let i=0,a=e.length;i<a;i++)processSegment(e[i],t)}class SimpleSegmentVisitor{onPageInformation(e){this.currentPageInfo=e;const t=e.width+7>>3,i=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&i.fill(255);this.buffer=i}drawBitmap(e,t){const i=this.currentPageInfo,a=e.width,r=e.height,s=i.width+7>>3,n=i.combinationOperatorOverride?e.combinationOperator:i.combinationOperator,o=this.buffer,g=128>>(7&e.x);let c,C,h,l,Q=e.y*s+(e.x>>3);switch(n){case 0:for(c=0;c<r;c++){h=g;l=Q;for(C=0;C<a;C++){t[c][C]&&(o[l]|=h);h>>=1;if(!h){h=128;l++}}Q+=s}break;case 2:for(c=0;c<r;c++){h=g;l=Q;for(C=0;C<a;C++){t[c][C]&&(o[l]^=h);h>>=1;if(!h){h=128;l++}}Q+=s}break;default:throw new Jbig2Error(`operator ${n} is not supported`)}}onImmediateGenericRegion(e,t,i,a){const r=e.info,s=new DecodingContext(t,i,a),n=decodeBitmap(e.mmr,r.width,r.height,e.template,e.prediction,null,e.at,s);this.drawBitmap(r,n)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion(...arguments)}onSymbolDictionary(e,t,i,a,r,s){let n,o;if(e.huffman){n=function getSymbolDictionaryHuffmanTables(e,t,i){let a,r,s,n,o=0;switch(e.huffmanDHSelector){case 0:case 1:a=getStandardTable(e.huffmanDHSelector+4);break;case 3:a=getCustomHuffmanTable(o,t,i);o++;break;default:throw new Jbig2Error("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:r=getStandardTable(e.huffmanDWSelector+2);break;case 3:r=getCustomHuffmanTable(o,t,i);o++;break;default:throw new Jbig2Error("invalid Huffman DW selector")}if(e.bitmapSizeSelector){s=getCustomHuffmanTable(o,t,i);o++}else s=getStandardTable(1);n=e.aggregationInstancesSelector?getCustomHuffmanTable(o,t,i):getStandardTable(1);return{tableDeltaHeight:a,tableDeltaWidth:r,tableBitmapSize:s,tableAggregateInstances:n}}(e,i,this.customTables);o=new Reader(a,r,s)}let g=this.symbols;g||(this.symbols=g={});const c=[];for(const e of i){const t=g[e];t&&c.push(...t)}const C=new DecodingContext(a,r,s);g[t]=function decodeSymbolDictionary(e,t,i,a,r,s,n,o,g,c,C,h){if(e&&t)throw new Jbig2Error("symbol refinement with Huffman is not supported");const l=[];let Q=0,E=log2(i.length+a);const u=C.decoder,d=C.contextCache;let f,p;if(e){f=getStandardTable(1);p=[];E=Math.max(E,1)}for(;l.length<a;){Q+=e?s.tableDeltaHeight.decode(h):decodeInteger(d,"IADH",u);let a=0,r=0;const f=e?p.length:0;for(;;){const f=e?s.tableDeltaWidth.decode(h):decodeInteger(d,"IADW",u);if(null===f)break;a+=f;r+=a;let m;if(t){const r=decodeInteger(d,"IAAI",u);if(r>1)m=decodeTextRegion(e,t,a,Q,0,r,1,i.concat(l),E,0,0,1,0,s,g,c,C,0,h);else{const e=decodeIAID(d,u,E),t=decodeInteger(d,"IARDX",u),r=decodeInteger(d,"IARDY",u);m=decodeRefinement(a,Q,g,e<i.length?i[e]:l[e-i.length],t,r,!1,c,C)}l.push(m)}else if(e)p.push(a);else{m=decodeBitmap(!1,a,Q,n,!1,null,o,C);l.push(m)}}if(e&&!t){const e=s.tableBitmapSize.decode(h);h.byteAlign();let t;if(0===e)t=readUncompressedBitmap(h,r,Q);else{const i=h.end,a=h.position+e;h.end=a;t=decodeMMRBitmap(h,r,Q,!1);h.end=i;h.position=a}const i=p.length;if(f===i-1)l.push(t);else{let e,a,r,s,n,o=0;for(e=f;e<i;e++){s=p[e];r=o+s;n=[];for(a=0;a<Q;a++)n.push(t[a].subarray(o,r));l.push(n);o=r}}}}const m=[],y=[];let w,b,D=!1;const S=i.length+a;for(;y.length<S;){let t=e?f.decode(h):decodeInteger(d,"IAEX",u);for(;t--;)y.push(D);D=!D}for(w=0,b=i.length;w<b;w++)y[w]&&m.push(i[w]);for(let e=0;e<a;w++,e++)y[w]&&m.push(l[e]);return m}(e.huffman,e.refinement,c,e.numberOfNewSymbols,e.numberOfExportedSymbols,n,e.template,e.at,e.refinementTemplate,e.refinementAt,C,o)}onImmediateTextRegion(e,t,i,a,r){const s=e.info;let n,o;const g=this.symbols,c=[];for(const e of t){const t=g[e];t&&c.push(...t)}const C=log2(c.length);if(e.huffman){o=new Reader(i,a,r);n=function getTextRegionHuffmanTables(e,t,i,a,r){const s=[];for(let e=0;e<=34;e++){const t=r.readBits(4);s.push(new HuffmanLine([e,t,0,0]))}const n=new HuffmanTable(s,!1);s.length=0;for(let e=0;e<a;){const t=n.decode(r);if(t>=32){let i,a,n;switch(t){case 32:if(0===e)throw new Jbig2Error("no previous value in symbol ID table");a=r.readBits(2)+3;i=s[e-1].prefixLength;break;case 33:a=r.readBits(3)+3;i=0;break;case 34:a=r.readBits(7)+11;i=0;break;default:throw new Jbig2Error("invalid code length in symbol ID table")}for(n=0;n<a;n++){s.push(new HuffmanLine([e,i,0,0]));e++}}else{s.push(new HuffmanLine([e,t,0,0]));e++}}r.byteAlign();const o=new HuffmanTable(s,!1);let g,c,C,h=0;switch(e.huffmanFS){case 0:case 1:g=getStandardTable(e.huffmanFS+6);break;case 3:g=getCustomHuffmanTable(h,t,i);h++;break;default:throw new Jbig2Error("invalid Huffman FS selector")}switch(e.huffmanDS){case 0:case 1:case 2:c=getStandardTable(e.huffmanDS+8);break;case 3:c=getCustomHuffmanTable(h,t,i);h++;break;default:throw new Jbig2Error("invalid Huffman DS selector")}switch(e.huffmanDT){case 0:case 1:case 2:C=getStandardTable(e.huffmanDT+11);break;case 3:C=getCustomHuffmanTable(h,t,i);h++;break;default:throw new Jbig2Error("invalid Huffman DT selector")}if(e.refinement)throw new Jbig2Error("refinement with Huffman is not supported");return{symbolIDTable:o,tableFirstS:g,tableDeltaS:c,tableDeltaT:C}}(e,t,this.customTables,c.length,o)}const h=new DecodingContext(i,a,r),l=decodeTextRegion(e.huffman,e.refinement,s.width,s.height,e.defaultPixelValue,e.numberOfSymbolInstances,e.stripSize,c,C,e.transposed,e.dsOffset,e.referenceCorner,e.combinationOperator,n,e.refinementTemplate,e.refinementAt,h,e.logStripSize,o);this.drawBitmap(s,l)}onImmediateLosslessTextRegion(){this.onImmediateTextRegion(...arguments)}onPatternDictionary(e,t,i,a,r){let s=this.patterns;s||(this.patterns=s={});const n=new DecodingContext(i,a,r);s[t]=function decodePatternDictionary(e,t,i,a,r,s){const n=[];if(!e){n.push({x:-t,y:0});0===r&&n.push({x:-3,y:-1},{x:2,y:-2},{x:-2,y:-2})}const o=decodeBitmap(e,(a+1)*t,i,r,!1,null,n,s),g=[];for(let e=0;e<=a;e++){const a=[],r=t*e,s=r+t;for(let e=0;e<i;e++)a.push(o[e].subarray(r,s));g.push(a)}return g}(e.mmr,e.patternWidth,e.patternHeight,e.maxPatternIndex,e.template,n)}onImmediateHalftoneRegion(e,t,i,a,r){const s=this.patterns[t[0]],n=e.info,o=new DecodingContext(i,a,r),g=function decodeHalftoneRegion(e,t,i,a,r,s,n,o,g,c,C,h,l,Q,E){if(n)throw new Jbig2Error("skip is not supported");if(0!==o)throw new Jbig2Error(`operator "${o}" is not supported in halftone region`);const u=[];let d,f,p;for(d=0;d<r;d++){p=new Uint8Array(a);if(s)for(f=0;f<a;f++)p[f]=s;u.push(p)}const m=t.length,y=t[0],w=y[0].length,b=y.length,D=log2(m),S=[];if(!e){S.push({x:i<=1?3:2,y:-1});0===i&&S.push({x:-3,y:-1},{x:2,y:-2},{x:-2,y:-2})}const k=[];let R,N,G,x,U,M,L,H,J,Y,v;e&&(R=new Reader(E.data,E.start,E.end));for(d=D-1;d>=0;d--){N=e?decodeMMRBitmap(R,g,c,!0):decodeBitmap(!1,g,c,i,!1,null,S,E);k[d]=N}for(G=0;G<c;G++)for(x=0;x<g;x++){U=0;M=0;for(f=D-1;f>=0;f--){U^=k[f][G][x];M|=U<<f}L=t[M];H=C+G*Q+x*l>>8;J=h+G*l-x*Q>>8;if(H>=0&&H+w<=a&&J>=0&&J+b<=r)for(d=0;d<b;d++){v=u[J+d];Y=L[d];for(f=0;f<w;f++)v[H+f]|=Y[f]}else{let e,t;for(d=0;d<b;d++){t=J+d;if(!(t<0||t>=r)){v=u[t];Y=L[d];for(f=0;f<w;f++){e=H+f;e>=0&&e<a&&(v[e]|=Y[f])}}}}}return u}(e.mmr,s,e.template,n.width,n.height,e.defaultPixelValue,e.enableSkip,e.combinationOperator,e.gridWidth,e.gridHeight,e.gridOffsetX,e.gridOffsetY,e.gridVectorX,e.gridVectorY,o);this.drawBitmap(n,g)}onImmediateLosslessHalftoneRegion(){this.onImmediateHalftoneRegion(...arguments)}onTables(e,t,i,a){let r=this.customTables;r||(this.customTables=r={});r[e]=function decodeTablesSegment(e,t,i){const a=e[t],r=4294967295&readUint32(e,t+1),s=4294967295&readUint32(e,t+5),n=new Reader(e,t+9,i),o=1+(a>>1&7),g=1+(a>>4&7),c=[];let C,h,l=r;do{C=n.readBits(o);h=n.readBits(g);c.push(new HuffmanLine([l,C,h,0]));l+=1<<h}while(l<s);C=n.readBits(o);c.push(new HuffmanLine([r-1,C,32,0,"lower"]));C=n.readBits(o);c.push(new HuffmanLine([s,C,32,0]));if(1&a){C=n.readBits(o);c.push(new HuffmanLine([C,0]))}return new HuffmanTable(c,!1)}(t,i,a)}}class HuffmanLine{constructor(e){if(2===e.length){this.isOOB=!0;this.rangeLow=0;this.prefixLength=e[0];this.rangeLength=0;this.prefixCode=e[1];this.isLowerRange=!1}else{this.isOOB=!1;this.rangeLow=e[0];this.prefixLength=e[1];this.rangeLength=e[2];this.prefixCode=e[3];this.isLowerRange="lower"===e[4]}}}class HuffmanTreeNode{constructor(e){this.children=[];if(e){this.isLeaf=!0;this.rangeLength=e.rangeLength;this.rangeLow=e.rangeLow;this.isLowerRange=e.isLowerRange;this.isOOB=e.isOOB}else this.isLeaf=!1}buildTree(e,t){const i=e.prefixCode>>t&1;if(t<=0)this.children[i]=new HuffmanTreeNode(e);else{let a=this.children[i];a||(this.children[i]=a=new HuffmanTreeNode(null));a.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new Jbig2Error("invalid Huffman data");return t.decodeNode(e)}}class HuffmanTable{constructor(e,t){t||this.assignPrefixCodes(e);this.rootNode=new HuffmanTreeNode(null);for(let t=0,i=e.length;t<i;t++){const i=e[t];i.prefixLength>0&&this.rootNode.buildTree(i,i.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let i=0;for(let a=0;a<t;a++)i=Math.max(i,e[a].prefixLength);const a=new Uint32Array(i+1);for(let i=0;i<t;i++)a[e[i].prefixLength]++;let r,s,n,o=1,g=0;a[0]=0;for(;o<=i;){g=g+a[o-1]<<1;r=g;s=0;for(;s<t;){n=e[s];if(n.prefixLength===o){n.prefixCode=r;r++}s++}o++}}}const Ai={};function getStandardTable(e){let t,i=Ai[e];if(i)return i;switch(e){case 1:t=[[0,1,4,0],[16,2,8,2],[272,3,16,6],[65808,3,32,7]];break;case 2:t=[[0,1,0,0],[1,2,0,2],[2,3,0,6],[3,4,3,14],[11,5,6,30],[75,6,32,62],[6,63]];break;case 3:t=[[-256,8,8,254],[0,1,0,0],[1,2,0,2],[2,3,0,6],[3,4,3,14],[11,5,6,30],[-257,8,32,255,"lower"],[75,7,32,126],[6,62]];break;case 4:t=[[1,1,0,0],[2,2,0,2],[3,3,0,6],[4,4,3,14],[12,5,6,30],[76,5,32,31]];break;case 5:t=[[-255,7,8,126],[1,1,0,0],[2,2,0,2],[3,3,0,6],[4,4,3,14],[12,5,6,30],[-256,7,32,127,"lower"],[76,6,32,62]];break;case 6:t=[[-2048,5,10,28],[-1024,4,9,8],[-512,4,8,9],[-256,4,7,10],[-128,5,6,29],[-64,5,5,30],[-32,4,5,11],[0,2,7,0],[128,3,7,2],[256,3,8,3],[512,4,9,12],[1024,4,10,13],[-2049,6,32,62,"lower"],[2048,6,32,63]];break;case 7:t=[[-1024,4,9,8],[-512,3,8,0],[-256,4,7,9],[-128,5,6,26],[-64,5,5,27],[-32,4,5,10],[0,4,5,11],[32,5,5,28],[64,5,6,29],[128,4,7,12],[256,3,8,1],[512,3,9,2],[1024,3,10,3],[-1025,5,32,30,"lower"],[2048,5,32,31]];break;case 8:t=[[-15,8,3,252],[-7,9,1,508],[-5,8,1,253],[-3,9,0,509],[-2,7,0,124],[-1,4,0,10],[0,2,1,0],[2,5,0,26],[3,6,0,58],[4,3,4,4],[20,6,1,59],[22,4,4,11],[38,4,5,12],[70,5,6,27],[134,5,7,28],[262,6,7,60],[390,7,8,125],[646,6,10,61],[-16,9,32,510,"lower"],[1670,9,32,511],[2,1]];break;case 9:t=[[-31,8,4,252],[-15,9,2,508],[-11,8,2,253],[-7,9,1,509],[-5,7,1,124],[-3,4,1,10],[-1,3,1,2],[1,3,1,3],[3,5,1,26],[5,6,1,58],[7,3,5,4],[39,6,2,59],[43,4,5,11],[75,4,6,12],[139,5,7,27],[267,5,8,28],[523,6,8,60],[779,7,9,125],[1291,6,11,61],[-32,9,32,510,"lower"],[3339,9,32,511],[2,0]];break;case 10:t=[[-21,7,4,122],[-5,8,0,252],[-4,7,0,123],[-3,5,0,24],[-2,2,2,0],[2,5,0,25],[3,6,0,54],[4,7,0,124],[5,8,0,253],[6,2,6,1],[70,5,5,26],[102,6,5,55],[134,6,6,56],[198,6,7,57],[326,6,8,58],[582,6,9,59],[1094,6,10,60],[2118,7,11,125],[-22,8,32,254,"lower"],[4166,8,32,255],[2,2]];break;case 11:t=[[1,1,0,0],[2,2,1,2],[4,4,0,12],[5,4,1,13],[7,5,1,28],[9,5,2,29],[13,6,2,60],[17,7,2,122],[21,7,3,123],[29,7,4,124],[45,7,5,125],[77,7,6,126],[141,7,32,127]];break;case 12:t=[[1,1,0,0],[2,2,0,2],[3,3,1,6],[5,5,0,28],[6,5,1,29],[8,6,1,60],[10,7,0,122],[11,7,1,123],[13,7,2,124],[17,7,3,125],[25,7,4,126],[41,8,5,254],[73,8,32,255]];break;case 13:t=[[1,1,0,0],[2,3,0,4],[3,4,0,12],[4,5,0,28],[5,4,1,13],[7,3,3,5],[15,6,1,58],[17,6,2,59],[21,6,3,60],[29,6,4,61],[45,6,5,62],[77,7,6,126],[141,7,32,127]];break;case 14:t=[[-2,3,0,4],[-1,3,0,5],[0,1,0,0],[1,3,0,6],[2,3,0,7]];break;case 15:t=[[-24,7,4,124],[-8,6,2,60],[-4,5,1,28],[-2,4,0,12],[-1,3,0,4],[0,1,0,0],[1,3,0,5],[2,4,0,13],[3,5,1,29],[5,6,2,61],[9,7,4,125],[-25,7,32,126,"lower"],[25,7,32,127]];break;default:throw new Jbig2Error(`standard table B.${e} does not exist`)}for(let e=0,i=t.length;e<i;e++)t[e]=new HuffmanLine(t[e]);i=new HuffmanTable(t,!0);Ai[e]=i;return i}class Reader{constructor(e,t,i){this.data=e;this.start=t;this.end=i;this.position=t;this.shift=-1;this.currentByte=0}readBit(){if(this.shift<0){if(this.position>=this.end)throw new Jbig2Error("end of data while reading bit");this.currentByte=this.data[this.position++];this.shift=7}const e=this.currentByte>>this.shift&1;this.shift--;return e}readBits(e){let t,i=0;for(t=e-1;t>=0;t--)i|=this.readBit()<<t;return i}byteAlign(){this.shift=-1}next(){return this.position>=this.end?-1:this.data[this.position++]}}function getCustomHuffmanTable(e,t,i){let a=0;for(let r=0,s=t.length;r<s;r++){const s=i[t[r]];if(s){if(e===a)return s;a++}}throw new Jbig2Error("can't find custom Huffman table")}function readUncompressedBitmap(e,t,i){const a=[];for(let r=0;r<i;r++){const i=new Uint8Array(t);a.push(i);for(let a=0;a<t;a++)i[a]=e.readBit();e.byteAlign()}return a}function decodeMMRBitmap(e,t,i,a){const r=new CCITTFaxDecoder(e,{K:-1,Columns:t,Rows:i,BlackIs1:!0,EndOfBlock:a}),s=[];let n,o=!1;for(let e=0;e<i;e++){const e=new Uint8Array(t);s.push(e);let i=-1;for(let a=0;a<t;a++){if(i<0){n=r.readNextChar();if(-1===n){n=0;o=!0}i=7}e[a]=n>>i&1;i--}}if(a&&!o){const e=5;for(let t=0;t<e&&-1!==r.readNextChar();t++);}return s}class Jbig2Image{parseChunks(e){return function parseJbig2Chunks(e){const t=new SimpleSegmentVisitor;for(let i=0,a=e.length;i<a;i++){const a=e[i];processSegments(readSegments({},a.data,a.start,a.end),t)}return t.buffer}(e)}parse(e){throw new Error("Not implemented: Jbig2Image.parse")}}class Jbig2Stream extends DecodeStream{constructor(e,t,i){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=i}get bytes(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){this.decodeImage()}decodeImage(e){if(this.eof)return this.buffer;e||=this.bytes;const t=new Jbig2Image,i=[];if(this.params instanceof Dict){const e=this.params.get("JBIG2Globals");if(e instanceof BaseStream){const t=e.getBytes();i.push({data:t,start:0,end:t.length})}}i.push({data:e,start:0,end:e.length});const a=t.parseChunks(i),r=a.length;for(let e=0;e<r;e++)a[e]^=255;this.buffer=a;this.bufferLength=r;this.eof=!0;return this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}}function convertToRGBA(e){switch(e.kind){case D:return convertBlackAndWhiteToRGBA(e);case S:return function convertRGBToRGBA({src:e,srcPos:t=0,dest:i,destPos:a=0,width:r,height:s}){let n=0;const o=e.length>>2,g=new Uint32Array(e.buffer,t,o);if(FeatureTest.isLittleEndian){for(;n<o-2;n+=3,a+=4){const e=g[n],t=g[n+1],r=g[n+2];i[a]=4278190080|e;i[a+1]=e>>>24|t<<8|4278190080;i[a+2]=t>>>16|r<<16|4278190080;i[a+3]=r>>>8|4278190080}for(let t=4*n,r=e.length;t<r;t+=3)i[a++]=e[t]|e[t+1]<<8|e[t+2]<<16|4278190080}else{for(;n<o-2;n+=3,a+=4){const e=g[n],t=g[n+1],r=g[n+2];i[a]=255|e;i[a+1]=e<<24|t>>>8|255;i[a+2]=t<<16|r>>>16|255;i[a+3]=r<<8|255}for(let t=4*n,r=e.length;t<r;t+=3)i[a++]=e[t]<<24|e[t+1]<<16|e[t+2]<<8|255}return{srcPos:t,destPos:a}}(e)}return null}function convertBlackAndWhiteToRGBA({src:e,srcPos:t=0,dest:i,width:a,height:r,nonBlackColor:s=4294967295,inverseDecode:n=!1}){const o=FeatureTest.isLittleEndian?4278190080:255,[g,c]=n?[s,o]:[o,s],C=a>>3,h=7&a,l=e.length;i=new Uint32Array(i.buffer);let Q=0;for(let a=0;a<r;a++){for(const a=t+C;t<a;t++){const a=t<l?e[t]:255;i[Q++]=128&a?c:g;i[Q++]=64&a?c:g;i[Q++]=32&a?c:g;i[Q++]=16&a?c:g;i[Q++]=8&a?c:g;i[Q++]=4&a?c:g;i[Q++]=2&a?c:g;i[Q++]=1&a?c:g}if(0===h)continue;const a=t<l?e[t++]:255;for(let e=0;e<h;e++)i[Q++]=a&1<<7-e?c:g}return{srcPos:t,destPos:Q}}class JpegError extends ot{constructor(e){super(e,"JpegError")}}class DNLMarkerError extends ot{constructor(e,t){super(e,"DNLMarkerError");this.scanLines=t}}class EOIMarkerError extends ot{constructor(e){super(e,"EOIMarkerError")}}const ei=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),ti=4017,ii=799,ai=3406,ri=2276,si=1567,ni=3784,oi=5793,gi=2896;function buildHuffmanTable(e,t){let i,a,r=0,s=16;for(;s>0&&!e[s-1];)s--;const n=[{children:[],index:0}];let o,g=n[0];for(i=0;i<s;i++){for(a=0;a<e[i];a++){g=n.pop();g.children[g.index]=t[r];for(;g.index>0;)g=n.pop();g.index++;n.push(g);for(;n.length<=i;){n.push(o={children:[],index:0});g.children[g.index]=o.children;g=o}r++}if(i+1<s){n.push(o={children:[],index:0});g.children[g.index]=o.children;g=o}}return n[0].children}function getBlockBufferOffset(e,t,i){return 64*((e.blocksPerLine+1)*t+i)}function decodeScan(e,t,i,a,r,s,n,o,g,c=!1){const C=i.mcusPerLine,h=i.progressive,l=t;let Q=0,E=0;function readBit(){if(E>0){E--;return Q>>E&1}Q=e[t++];if(255===Q){const a=e[t++];if(a){if(220===a&&c){const a=readUint16(e,t+=2);t+=2;if(a>0&&a!==i.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",a)}else if(217===a){if(c){const e=p*(8===i.precision?8:0);if(e>0&&Math.round(i.scanLines/e)>=5)throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",e)}throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data")}throw new JpegError(`unexpected marker ${(Q<<8|a).toString(16)}`)}}E=7;return Q>>>7}function decodeHuffman(e){let t=e;for(;;){t=t[readBit()];switch(typeof t){case"number":return t;case"object":continue}throw new JpegError("invalid huffman sequence")}}function receive(e){let t=0;for(;e>0;){t=t<<1|readBit();e--}return t}function receiveAndExtend(e){if(1===e)return 1===readBit()?1:-1;const t=receive(e);return t>=1<<e-1?t:t+(-1<<e)+1}let u=0;let d,f=0;let p=0;function decodeMcu(e,t,i,a,r){const s=i%C;p=(i/C|0)*e.v+a;const n=s*e.h+r;t(e,getBlockBufferOffset(e,p,n))}function decodeBlock(e,t,i){p=i/e.blocksPerLine|0;const a=i%e.blocksPerLine;t(e,getBlockBufferOffset(e,p,a))}const m=a.length;let y,w,b,D,S,k;k=h?0===s?0===o?function decodeDCFirst(e,t){const i=decodeHuffman(e.huffmanTableDC),a=0===i?0:receiveAndExtend(i)<<g;e.blockData[t]=e.pred+=a}:function decodeDCSuccessive(e,t){e.blockData[t]|=readBit()<<g}:0===o?function decodeACFirst(e,t){if(u>0){u--;return}let i=s;const a=n;for(;i<=a;){const a=decodeHuffman(e.huffmanTableAC),r=15&a,s=a>>4;if(0===r){if(s<15){u=receive(s)+(1<<s)-1;break}i+=16;continue}i+=s;const n=ei[i];e.blockData[t+n]=receiveAndExtend(r)*(1<<g);i++}}:function decodeACSuccessive(e,t){let i=s;const a=n;let r,o,c=0;for(;i<=a;){const a=t+ei[i],s=e.blockData[a]<0?-1:1;switch(f){case 0:o=decodeHuffman(e.huffmanTableAC);r=15&o;c=o>>4;if(0===r)if(c<15){u=receive(c)+(1<<c);f=4}else{c=16;f=1}else{if(1!==r)throw new JpegError("invalid ACn encoding");d=receiveAndExtend(r);f=c?2:3}continue;case 1:case 2:if(e.blockData[a])e.blockData[a]+=s*(readBit()<<g);else{c--;0===c&&(f=2===f?3:0)}break;case 3:if(e.blockData[a])e.blockData[a]+=s*(readBit()<<g);else{e.blockData[a]=d<<g;f=0}break;case 4:e.blockData[a]&&(e.blockData[a]+=s*(readBit()<<g))}i++}if(4===f){u--;0===u&&(f=0)}}:function decodeBaseline(e,t){const i=decodeHuffman(e.huffmanTableDC),a=0===i?0:receiveAndExtend(i);e.blockData[t]=e.pred+=a;let r=1;for(;r<64;){const i=decodeHuffman(e.huffmanTableAC),a=15&i,s=i>>4;if(0===a){if(s<15)break;r+=16;continue}r+=s;const n=ei[r];e.blockData[t+n]=receiveAndExtend(a);r++}};let R,N=0;const G=1===m?a[0].blocksPerLine*a[0].blocksPerColumn:C*i.mcusPerColumn;let x,U;for(;N<=G;){const i=r?Math.min(G-N,r):G;if(i>0){for(w=0;w<m;w++)a[w].pred=0;u=0;if(1===m){y=a[0];for(S=0;S<i;S++){decodeBlock(y,k,N);N++}}else for(S=0;S<i;S++){for(w=0;w<m;w++){y=a[w];x=y.h;U=y.v;for(b=0;b<U;b++)for(D=0;D<x;D++)decodeMcu(y,k,N,b,D)}N++}}E=0;R=findNextFileMarker(e,t);if(!R)break;if(R.invalid){warn(`decodeScan - ${i>0?"unexpected":"excessive"} MCU data, current marker is: ${R.invalid}`);t=R.offset}if(!(R.marker>=65488&&R.marker<=65495))break;t+=2}return t-l}function quantizeAndInverse(e,t,i){const a=e.quantizationTable,r=e.blockData;let s,n,o,g,c,C,h,l,Q,E,u,d,f,p,m,y,w;if(!a)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){Q=r[t+e];E=r[t+e+1];u=r[t+e+2];d=r[t+e+3];f=r[t+e+4];p=r[t+e+5];m=r[t+e+6];y=r[t+e+7];Q*=a[e];if(0!=(E|u|d|f|p|m|y)){E*=a[e+1];u*=a[e+2];d*=a[e+3];f*=a[e+4];p*=a[e+5];m*=a[e+6];y*=a[e+7];s=oi*Q+128>>8;n=oi*f+128>>8;o=u;g=m;c=gi*(E-y)+128>>8;l=gi*(E+y)+128>>8;C=d<<4;h=p<<4;s=s+n+1>>1;n=s-n;w=o*ni+g*si+128>>8;o=o*si-g*ni+128>>8;g=w;c=c+h+1>>1;h=c-h;l=l+C+1>>1;C=l-C;s=s+g+1>>1;g=s-g;n=n+o+1>>1;o=n-o;w=c*ri+l*ai+2048>>12;c=c*ai-l*ri+2048>>12;l=w;w=C*ii+h*ti+2048>>12;C=C*ti-h*ii+2048>>12;h=w;i[e]=s+l;i[e+7]=s-l;i[e+1]=n+h;i[e+6]=n-h;i[e+2]=o+C;i[e+5]=o-C;i[e+3]=g+c;i[e+4]=g-c}else{w=oi*Q+512>>10;i[e]=w;i[e+1]=w;i[e+2]=w;i[e+3]=w;i[e+4]=w;i[e+5]=w;i[e+6]=w;i[e+7]=w}}for(let e=0;e<8;++e){Q=i[e];E=i[e+8];u=i[e+16];d=i[e+24];f=i[e+32];p=i[e+40];m=i[e+48];y=i[e+56];if(0!=(E|u|d|f|p|m|y)){s=oi*Q+2048>>12;n=oi*f+2048>>12;o=u;g=m;c=gi*(E-y)+2048>>12;l=gi*(E+y)+2048>>12;C=d;h=p;s=4112+(s+n+1>>1);n=s-n;w=o*ni+g*si+2048>>12;o=o*si-g*ni+2048>>12;g=w;c=c+h+1>>1;h=c-h;l=l+C+1>>1;C=l-C;s=s+g+1>>1;g=s-g;n=n+o+1>>1;o=n-o;w=c*ri+l*ai+2048>>12;c=c*ai-l*ri+2048>>12;l=w;w=C*ii+h*ti+2048>>12;C=C*ti-h*ii+2048>>12;h=w;Q=s+l;y=s-l;E=n+h;m=n-h;u=o+C;p=o-C;d=g+c;f=g-c;Q<16?Q=0:Q>=4080?Q=255:Q>>=4;E<16?E=0:E>=4080?E=255:E>>=4;u<16?u=0:u>=4080?u=255:u>>=4;d<16?d=0:d>=4080?d=255:d>>=4;f<16?f=0:f>=4080?f=255:f>>=4;p<16?p=0:p>=4080?p=255:p>>=4;m<16?m=0:m>=4080?m=255:m>>=4;y<16?y=0:y>=4080?y=255:y>>=4;r[t+e]=Q;r[t+e+8]=E;r[t+e+16]=u;r[t+e+24]=d;r[t+e+32]=f;r[t+e+40]=p;r[t+e+48]=m;r[t+e+56]=y}else{w=oi*Q+8192>>14;w=w<-2040?0:w>=2024?255:w+2056>>4;r[t+e]=w;r[t+e+8]=w;r[t+e+16]=w;r[t+e+24]=w;r[t+e+32]=w;r[t+e+40]=w;r[t+e+48]=w;r[t+e+56]=w}}}function buildComponentData(e,t){const i=t.blocksPerLine,a=t.blocksPerColumn,r=new Int16Array(64);for(let e=0;e<a;e++)for(let a=0;a<i;a++){quantizeAndInverse(t,getBlockBufferOffset(t,e,a),r)}return t.blockData}function findNextFileMarker(e,t,i=t){const a=e.length-1;let r=i<t?i:t;if(t>=a)return null;const s=readUint16(e,t);if(s>=65472&&s<=65534)return{invalid:null,marker:s,offset:t};let n=readUint16(e,r);for(;!(n>=65472&&n<=65534);){if(++r>=a)return null;n=readUint16(e,r)}return{invalid:s.toString(16),marker:n,offset:r}}class JpegImage{constructor({decodeTransform:e=null,colorTransform:t=-1}={}){this._decodeTransform=e;this._colorTransform=t}parse(e,{dnlScanLines:t=null}={}){function readDataBlock(){const t=readUint16(e,r);r+=2;let i=r+t-2;const a=findNextFileMarker(e,i,r);if(a?.invalid){warn("readDataBlock - incorrect length, current marker is: "+a.invalid);i=a.offset}const s=e.subarray(r,i);r+=s.length;return s}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),i=Math.ceil(e.scanLines/8/e.maxV);for(const a of e.components){const r=Math.ceil(Math.ceil(e.samplesPerLine/8)*a.h/e.maxH),s=Math.ceil(Math.ceil(e.scanLines/8)*a.v/e.maxV),n=t*a.h,o=64*(i*a.v)*(n+1);a.blockData=new Int16Array(o);a.blocksPerLine=r;a.blocksPerColumn=s}e.mcusPerLine=t;e.mcusPerColumn=i}let i,a,r=0,s=null,n=null,o=0;const g=[],c=[],C=[];let h=readUint16(e,r);r+=2;if(65496!==h)throw new JpegError("SOI not found");h=readUint16(e,r);r+=2;A:for(;65497!==h;){let l,Q,E;switch(h){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:const u=readDataBlock();65504===h&&74===u[0]&&70===u[1]&&73===u[2]&&70===u[3]&&0===u[4]&&(s={version:{major:u[5],minor:u[6]},densityUnits:u[7],xDensity:u[8]<<8|u[9],yDensity:u[10]<<8|u[11],thumbWidth:u[12],thumbHeight:u[13],thumbData:u.subarray(14,14+3*u[12]*u[13])});65518===h&&65===u[0]&&100===u[1]&&111===u[2]&&98===u[3]&&101===u[4]&&(n={version:u[5]<<8|u[6],flags0:u[7]<<8|u[8],flags1:u[9]<<8|u[10],transformCode:u[11]});break;case 65499:const d=readUint16(e,r);r+=2;const f=d+r-2;let p;for(;r<f;){const t=e[r++],i=new Uint16Array(64);if(t>>4==0)for(Q=0;Q<64;Q++){p=ei[Q];i[p]=e[r++]}else{if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(Q=0;Q<64;Q++){p=ei[Q];i[p]=readUint16(e,r);r+=2}}g[15&t]=i}break;case 65472:case 65473:case 65474:if(i)throw new JpegError("Only single frame JPEGs supported");r+=2;i={};i.extended=65473===h;i.progressive=65474===h;i.precision=e[r++];const m=readUint16(e,r);r+=2;i.scanLines=t||m;i.samplesPerLine=readUint16(e,r);r+=2;i.components=[];i.componentIds={};const y=e[r++];let w=0,b=0;for(l=0;l<y;l++){const t=e[r],a=e[r+1]>>4,s=15&e[r+1];w<a&&(w=a);b<s&&(b=s);const n=e[r+2];E=i.components.push({h:a,v:s,quantizationId:n,quantizationTable:null});i.componentIds[t]=E-1;r+=3}i.maxH=w;i.maxV=b;prepareComponents(i);break;case 65476:const D=readUint16(e,r);r+=2;for(l=2;l<D;){const t=e[r++],i=new Uint8Array(16);let a=0;for(Q=0;Q<16;Q++,r++)a+=i[Q]=e[r];const s=new Uint8Array(a);for(Q=0;Q<a;Q++,r++)s[Q]=e[r];l+=17+a;(t>>4==0?C:c)[15&t]=buildHuffmanTable(i,s)}break;case 65501:r+=2;a=readUint16(e,r);r+=2;break;case 65498:const S=1==++o&&!t;r+=2;const k=e[r++],R=[];for(l=0;l<k;l++){const t=e[r++],a=i.componentIds[t],s=i.components[a];s.index=t;const n=e[r++];s.huffmanTableDC=C[n>>4];s.huffmanTableAC=c[15&n];R.push(s)}const N=e[r++],G=e[r++],x=e[r++];try{const t=decodeScan(e,r,i,R,a,N,G,x>>4,15&x,S);r+=t}catch(t){if(t instanceof DNLMarkerError){warn(`${t.message} -- attempting to re-parse the JPEG image.`);return this.parse(e,{dnlScanLines:t.scanLines})}if(t instanceof EOIMarkerError){warn(`${t.message} -- ignoring the rest of the image data.`);break A}throw t}break;case 65500:r+=4;break;case 65535:255!==e[r]&&r--;break;default:const U=findNextFileMarker(e,r-2,r-3);if(U?.invalid){warn("JpegImage.parse - unexpected data, current marker is: "+U.invalid);r=U.offset;break}if(!U||r>=e.length-1){warn("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break A}throw new JpegError("JpegImage.parse - unknown marker: "+h.toString(16))}h=readUint16(e,r);r+=2}if(!i)throw new JpegError("JpegImage.parse - no frame data found.");this.width=i.samplesPerLine;this.height=i.scanLines;this.jfif=s;this.adobe=n;this.components=[];for(const e of i.components){const t=g[e.quantizationId];t&&(e.quantizationTable=t);this.components.push({index:e.index,output:buildComponentData(0,e),scaleX:e.h/i.maxH,scaleY:e.v/i.maxV,blocksPerLine:e.blocksPerLine,blocksPerColumn:e.blocksPerColumn})}this.numComponents=this.components.length}_getLinearizedBlockData(e,t,i=!1){const a=this.width/e,r=this.height/t;let s,n,o,g,c,C,h,l,Q,E,u,d=0;const f=this.components.length,p=e*t*f,m=new Uint8ClampedArray(p),y=new Uint32Array(e),w=4294967288;let b;for(h=0;h<f;h++){s=this.components[h];n=s.scaleX*a;o=s.scaleY*r;d=h;u=s.output;g=s.blocksPerLine+1<<3;if(n!==b){for(c=0;c<e;c++){l=0|c*n;y[c]=(l&w)<<3|7&l}b=n}for(C=0;C<t;C++){l=0|C*o;E=g*(l&w)|(7&l)<<3;for(c=0;c<e;c++){m[d]=u[E+y[c]];d+=f}}}let D=this._decodeTransform;i||4!==f||D||(D=new Int32Array([-256,255,-256,255,-256,255,-256,255]));if(D)for(h=0;h<p;)for(l=0,Q=0;l<f;l++,h++,Q+=2)m[h]=(m[h]*D[Q]>>8)+D[Q+1];return m}get _isColorConversionNeeded(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}_convertYccToRgb(e){let t,i,a;for(let r=0,s=e.length;r<s;r+=3){t=e[r];i=e[r+1];a=e[r+2];e[r]=t-179.456+1.402*a;e[r+1]=t+135.459-.344*i-.714*a;e[r+2]=t-226.816+1.772*i}return e}_convertYccToRgba(e,t){for(let i=0,a=0,r=e.length;i<r;i+=3,a+=4){const r=e[i],s=e[i+1],n=e[i+2];t[a]=r-179.456+1.402*n;t[a+1]=r+135.459-.344*s-.714*n;t[a+2]=r-226.816+1.772*s;t[a+3]=255}return t}_convertYcckToRgb(e){let t,i,a,r,s=0;for(let n=0,o=e.length;n<o;n+=4){t=e[n];i=e[n+1];a=e[n+2];r=e[n+3];e[s++]=i*(-660635669420364e-19*i+.000437130475926232*a-54080610064599e-18*t+.00048449797120281*r-.154362151871126)-122.67195406894+a*(-.000957964378445773*a+.000817076911346625*t-.00477271405408747*r+1.53380253221734)+t*(.000961250184130688*t-.00266257332283933*r+.48357088451265)+r*(-.000336197177618394*r+.484791561490776);e[s++]=107.268039397724+i*(219927104525741e-19*i-.000640992018297945*a+.000659397001245577*t+.000426105652938837*r-.176491792462875)+a*(-.000778269941513683*a+.00130872261408275*t+.000770482631801132*r-.151051492775562)+t*(.00126935368114843*t-.00265090189010898*r+.25802910206845)+r*(-.000318913117588328*r-.213742400323665);e[s++]=i*(-.000570115196973677*i-263409051004589e-19*a+.0020741088115012*t-.00288260236853442*r+.814272968359295)-20.810012546947+a*(-153496057440975e-19*a-.000132689043961446*t+.000560833691242812*r-.195152027534049)+t*(.00174418132927582*t-.00255243321439347*r+.116935020465145)+r*(-.000343531996510555*r+.24165260232407)}return e.subarray(0,s)}_convertYcckToRgba(e){for(let t=0,i=e.length;t<i;t+=4){const i=e[t],a=e[t+1],r=e[t+2],s=e[t+3];e[t]=a*(-660635669420364e-19*a+.000437130475926232*r-54080610064599e-18*i+.00048449797120281*s-.154362151871126)-122.67195406894+r*(-.000957964378445773*r+.000817076911346625*i-.00477271405408747*s+1.53380253221734)+i*(.000961250184130688*i-.00266257332283933*s+.48357088451265)+s*(-.000336197177618394*s+.484791561490776);e[t+1]=107.268039397724+a*(219927104525741e-19*a-.000640992018297945*r+.000659397001245577*i+.000426105652938837*s-.176491792462875)+r*(-.000778269941513683*r+.00130872261408275*i+.000770482631801132*s-.151051492775562)+i*(.00126935368114843*i-.00265090189010898*s+.25802910206845)+s*(-.000318913117588328*s-.213742400323665);e[t+2]=a*(-.000570115196973677*a-263409051004589e-19*r+.0020741088115012*i-.00288260236853442*s+.814272968359295)-20.810012546947+r*(-153496057440975e-19*r-.000132689043961446*i+.000560833691242812*s-.195152027534049)+i*(.00174418132927582*i-.00255243321439347*s+.116935020465145)+s*(-.000343531996510555*s+.24165260232407);e[t+3]=255}return e}_convertYcckToCmyk(e){let t,i,a;for(let r=0,s=e.length;r<s;r+=4){t=e[r];i=e[r+1];a=e[r+2];e[r]=434.456-t-1.402*a;e[r+1]=119.541-t+.344*i+.714*a;e[r+2]=481.816-t-1.772*i}return e}_convertCmykToRgb(e){let t,i,a,r,s=0;for(let n=0,o=e.length;n<o;n+=4){t=e[n];i=e[n+1];a=e[n+2];r=e[n+3];e[s++]=255+t*(-6747147073602441e-20*t+.0008379262121013727*i+.0002894718188643294*a+.003264231057537806*r-1.1185611867203937)+i*(26374107616089405e-21*i-8626949158638572e-20*a-.0002748769067499491*r-.02155688794978967)+a*(-3878099212869363e-20*a-.0003267808279485286*r+.0686742238595345)-r*(.0003361971776183937*r+.7430659151342254);e[s++]=255+t*(.00013596372813588848*t+.000924537132573585*i+.00010567359618683593*a+.0004791864687436512*r-.3109689587515875)+i*(-.00023545346108370344*i+.0002702845253534714*a+.0020200308977307156*r-.7488052167015494)+a*(6834815998235662e-20*a+.00015168452363460973*r-.09751927774728933)-r*(.0003189131175883281*r+.7364883807733168);e[s++]=255+t*(13598650411385307e-21*t+.00012423956175490851*i+.0004751985097583589*a-36729317476630422e-22*r-.05562186980264034)+i*(.00016141380598724676*i+.0009692239130725186*a+.0007782692450036253*r-.44015232367526463)+a*(5.068882914068769e-7*a+.0017778369011375071*r-.7591454649749609)-r*(.0003435319965105553*r+.7063770186160144)}return e.subarray(0,s)}_convertCmykToRgba(e){for(let t=0,i=e.length;t<i;t+=4){const i=e[t],a=e[t+1],r=e[t+2],s=e[t+3];e[t]=255+i*(-6747147073602441e-20*i+.0008379262121013727*a+.0002894718188643294*r+.003264231057537806*s-1.1185611867203937)+a*(26374107616089405e-21*a-8626949158638572e-20*r-.0002748769067499491*s-.02155688794978967)+r*(-3878099212869363e-20*r-.0003267808279485286*s+.0686742238595345)-s*(.0003361971776183937*s+.7430659151342254);e[t+1]=255+i*(.00013596372813588848*i+.000924537132573585*a+.00010567359618683593*r+.0004791864687436512*s-.3109689587515875)+a*(-.00023545346108370344*a+.0002702845253534714*r+.0020200308977307156*s-.7488052167015494)+r*(6834815998235662e-20*r+.00015168452363460973*s-.09751927774728933)-s*(.0003189131175883281*s+.7364883807733168);e[t+2]=255+i*(13598650411385307e-21*i+.00012423956175490851*a+.0004751985097583589*r-36729317476630422e-22*s-.05562186980264034)+a*(.00016141380598724676*a+.0009692239130725186*r+.0007782692450036253*s-.44015232367526463)+r*(5.068882914068769e-7*r+.0017778369011375071*s-.7591454649749609)-s*(.0003435319965105553*s+.7063770186160144);e[t+3]=255}return e}getData({width:e,height:t,forceRGBA:i=!1,forceRGB:a=!1,isSourcePDF:r=!1}){if(this.numComponents>4)throw new JpegError("Unsupported color mode");const s=this._getLinearizedBlockData(e,t,r);if(1===this.numComponents&&(i||a)){const e=s.length*(i?4:3),t=new Uint8ClampedArray(e);let a=0;if(i)!function grayToRGBA(e,t){if(FeatureTest.isLittleEndian)for(let i=0,a=e.length;i<a;i++)t[i]=65793*e[i]|4278190080;else for(let i=0,a=e.length;i<a;i++)t[i]=16843008*e[i]|255}(s,new Uint32Array(t.buffer));else for(const e of s){t[a++]=e;t[a++]=e;t[a++]=e}return t}if(3===this.numComponents&&this._isColorConversionNeeded){if(i){const e=new Uint8ClampedArray(s.length/3*4);return this._convertYccToRgba(s,e)}return this._convertYccToRgb(s)}if(4===this.numComponents){if(this._isColorConversionNeeded)return i?this._convertYcckToRgba(s):a?this._convertYcckToRgb(s):this._convertYcckToCmyk(s);if(i)return this._convertCmykToRgba(s);if(a)return this._convertCmykToRgb(s)}return s}}class JpegStream extends DecodeStream{constructor(e,t,i){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=i}get bytes(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){this.decodeImage()}decodeImage(e){if(this.eof)return this.buffer;e||=this.bytes;for(let t=0,i=e.length-1;t<i;t++)if(255===e[t]&&216===e[t+1]){t>0&&(e=e.subarray(t));break}const t={decodeTransform:void 0,colorTransform:void 0},i=this.dict.getArray("D","Decode");if((this.forceRGBA||this.forceRGB)&&Array.isArray(i)){const e=this.dict.get("BPC","BitsPerComponent")||8,a=i.length,r=new Int32Array(a);let s=!1;const n=(1<<e)-1;for(let e=0;e<a;e+=2){r[e]=256*(i[e+1]-i[e])|0;r[e+1]=i[e]*n|0;256===r[e]&&0===r[e+1]||(s=!0)}s&&(t.decodeTransform=r)}if(this.params instanceof Dict){const e=this.params.get("ColorTransform");Number.isInteger(e)&&(t.colorTransform=e)}const a=new JpegImage(t);a.parse(e);const r=a.getData({width:this.drawWidth,height:this.drawHeight,forceRGBA:this.forceRGBA,forceRGB:this.forceRGB,isSourcePDF:!0});this.buffer=r;this.bufferLength=r.length;this.eof=!0;return this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}}__webpack_require__(4979);var Ii,ci=(Ii="undefined"!=typeof document?document.currentScript?.src:void 0,function(e={}){var t,i,a=e;new Promise(((e,a)=>{t=e;i=a}));a.decode=function(e,{numComponents:t=4,isIndexedColormap:i=!1,smaskInData:r=!1}){const s=e.length,n=a._malloc(s);a.HEAPU8.set(e,n);const o=a._jp2_decode(n,s,t>0?t:0,!!i,!!r);a._free(n);if(o){const{errorMessages:e}=a;if(e){delete a.errorMessages;return e}return"Unknown error"}const{imageData:g}=a;a.imageData=null;return g};var r,s=Object.assign({},a),n="./this.program",o="";"undefined"!=typeof document&&document.currentScript&&(o=document.currentScript.src);Ii&&(o=Ii);o=o.startsWith("blob:")?"":o.substr(0,o.replace(/[?#].*/,"").lastIndexOf("/")+1);var g,c,C,h,l,Q=a.print||console.log.bind(console),E=a.printErr||console.error.bind(console);Object.assign(a,s);s=null;a.arguments&&a.arguments;a.thisProgram&&(n=a.thisProgram);a.quit&&a.quit;a.wasmBinary&&(g=a.wasmBinary);function tryParseAsDataURI(e){if(isDataURI(e))return function intArrayFromBase64(e){for(var t=atob(e),i=new Uint8Array(t.length),a=0;a<t.length;++a)i[a]=t.charCodeAt(a);return i}(e.slice(b.length))}function updateMemoryViews(){var e=c.buffer;a.HEAP8=C=new Int8Array(e);a.HEAP16=new Int16Array(e);a.HEAPU8=h=new Uint8Array(e);a.HEAPU16=new Uint16Array(e);a.HEAP32=new Int32Array(e);a.HEAPU32=l=new Uint32Array(e);a.HEAPF32=new Float32Array(e);a.HEAPF64=new Float64Array(e)}var u,d=[],f=[],p=[],m=0,y=null,w=null,b="data:application/octet-stream;base64,",isDataURI=e=>e.startsWith(b);function instantiateSync(e,t){var i,a=function getBinarySync(e){if(e==u&&g)return new Uint8Array(g);var t=tryParseAsDataURI(e);if(t)return t;if(r)return r(e);throw'sync fetching of the wasm failed: you can preload it to Module["wasmBinary"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}(e);i=new WebAssembly.Module(a);return[new WebAssembly.Instance(i,t),i]}var callRuntimeCallbacks=e=>{for(;e.length>0;)e.shift()(a)};a.noExitRuntime;var D,growMemory=e=>{var t=(e-c.buffer.byteLength+65535)/65536;try{c.grow(t);updateMemoryViews();return 1}catch(e){}},S={},getEnvStrings=()=>{if(!getEnvStrings.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:n||"./this.program"};for(var t in S)void 0===S[t]?delete e[t]:e[t]=S[t];var i=[];for(var t in e)i.push(`${t}=${e[t]}`);getEnvStrings.strings=i}return getEnvStrings.strings},k=[null,[],[]],R="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,UTF8ArrayToString=(e,t,i)=>{for(var a=t+i,r=t;e[r]&&!(r>=a);)++r;if(r-t>16&&e.buffer&&R)return R.decode(e.subarray(t,r));for(var s="";t<r;){var n=e[t++];if(128&n){var o=63&e[t++];if(192!=(224&n)){var g=63&e[t++];if((n=224==(240&n)?(15&n)<<12|o<<6|g:(7&n)<<18|o<<12|g<<6|63&e[t++])<65536)s+=String.fromCharCode(n);else{var c=n-65536;s+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else s+=String.fromCharCode((31&n)<<6|o)}else s+=String.fromCharCode(n)}return s},printChar=(e,t)=>{var i=k[e];if(0===t||10===t){(1===e?Q:E)(UTF8ArrayToString(i,0));i.length=0}else i.push(t)},UTF8ToString=(e,t)=>e?UTF8ArrayToString(h,e,t):"",N={c:(e,t,i)=>h.copyWithin(e,t,t+i),g:function _copy_pixels_1(e,t){e>>=2;const i=a.imageData=new Uint8ClampedArray(t),r=a.HEAP32.subarray(e,e+t);i.set(r)},f:function _copy_pixels_3(e,t,i,r){e>>=2;t>>=2;i>>=2;const s=a.imageData=new Uint8ClampedArray(3*r),n=a.HEAP32.subarray(e,e+r),o=a.HEAP32.subarray(t,t+r),g=a.HEAP32.subarray(i,i+r);for(let e=0;e<r;e++){s[3*e]=n[e];s[3*e+1]=o[e];s[3*e+2]=g[e]}},e:function _copy_pixels_4(e,t,i,r,s){e>>=2;t>>=2;i>>=2;r>>=2;const n=a.imageData=new Uint8ClampedArray(4*s),o=a.HEAP32.subarray(e,e+s),g=a.HEAP32.subarray(t,t+s),c=a.HEAP32.subarray(i,i+s),C=a.HEAP32.subarray(r,r+s);for(let e=0;e<s;e++){n[4*e]=o[e];n[4*e+1]=g[e];n[4*e+2]=c[e];n[4*e+3]=C[e]}},k:e=>{var t=h.length,i=2147483648;if((e>>>=0)>i)return!1;for(var a,r,s=1;s<=4;s*=2){var n=t*(1+.2/s);n=Math.min(n,e+100663296);var o=Math.min(i,(a=Math.max(e,n))+((r=65536)-a%r)%r);if(growMemory(o))return!0}return!1},l:(e,t)=>{var i=0;getEnvStrings().forEach(((a,r)=>{var s=t+i;l[e+4*r>>2]=s;((e,t)=>{for(var i=0;i<e.length;++i)C[t++]=e.charCodeAt(i);C[t]=0})(a,s);i+=a.length+1}));return 0},m:(e,t)=>{var i=getEnvStrings();l[e>>2]=i.length;var a=0;i.forEach((e=>a+=e.length+1));l[t>>2]=a;return 0},n:e=>52,j:function _fd_seek(e,t,i,a,r){return 70},b:(e,t,i,a)=>{for(var r=0,s=0;s<i;s++){var n=l[t>>2],o=l[t+4>>2];t+=8;for(var g=0;g<o;g++)printChar(e,h[n+g]);r+=o}l[a>>2]=r;return 0},o:function _gray_to_rgba(e,t){e>>=2;const i=a.imageData=new Uint8ClampedArray(4*t),r=a.HEAP32.subarray(e,e+t);for(let e=0;e<t;e++){i[4*e]=i[4*e+1]=i[4*e+2]=r[e];i[4*e+3]=255}},i:function _graya_to_rgba(e,t,i){e>>=2;t>>=2;const r=a.imageData=new Uint8ClampedArray(4*i),s=a.HEAP32.subarray(e,e+i),n=a.HEAP32.subarray(t,t+i);for(let e=0;e<i;e++){r[4*e]=r[4*e+1]=r[4*e+2]=s[e];r[4*e+3]=n[e]}},d:function _jsPrintWarning(e){const t=UTF8ToString(e);(a.warn||console.warn)(`OpenJPEG: ${t}`)},h:function _rgb_to_rgba(e,t,i,r){e>>=2;t>>=2;i>>=2;const s=a.imageData=new Uint8ClampedArray(4*r),n=a.HEAP32.subarray(e,e+r),o=a.HEAP32.subarray(t,t+r),g=a.HEAP32.subarray(i,i+r);for(let e=0;e<r;e++){s[4*e]=n[e];s[4*e+1]=o[e];s[4*e+2]=g[e];s[4*e+3]=255}},a:function _storeErrorMessage(e){const t=UTF8ToString(e);a.errorMessages?a.errorMessages+="\n"+t:a.errorMessages=t}},G=function createWasm(){var e=function getWasmImports(){return{a:N}}();function receiveInstance(e,t){G=e.exports;c=G.p;updateMemoryViews();!function addOnInit(e){f.unshift(e)}(G.q);!function removeRunDependency(e){m--;a.monitorRunDependencies?.(m);if(0==m){if(null!==y){clearInterval(y);y=null}if(w){var t=w;w=null;t()}}}();return G}!function addRunDependency(e){m++;a.monitorRunDependencies?.(m)}();if(a.instantiateWasm)try{return a.instantiateWasm(e,receiveInstance)}catch(e){E(`Module.instantiateWasm callback failed with error: ${e}`);i(e)}u||(u="data:application/octet-stream;base64,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A0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAswAQF/AkAgAEUNACABRQ0AQQggACABbCIBECUiAARAIABBACABEBUaCyAAIQILIAILEQAgAEUEQEEADwtBCCAAECUL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLIAALJwEBfyMAQRBrIgMkACADIAI2AgwgACABIAJBAEEAEGsgA0EQaiQAC+gFAQl/IAFFBEBBAA8LAn8gAEUE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ACAEIE5BCmpBAiAFEBpBAkcEQCAFQQFBAiAAKAK4ARtBlhJBABAPIAAoArgBRSFnDAELIE5BCmogTkEMakECEBEgTigCDCIBQZD/A0YNACABQdn/A0YEQCAAQYACNgIIIABBADYCzAEMAQsgBCkDCCKGAVAEfkIABSCGASAEKQM4fQtQBEAgAEHAADYCCCAFQQJBrD9BABAPDAELQQAhZyAFQQFB7D5BABAPCyBOQRBqJAAgZwsLACAABEAgABAQCwu0AQEBfyAAKAIMRQRAIAIgACgCJCABEQMADwsCQEEIEBQiA0UNACADIAI2AgQgAyABNgIAQQgQFCIBRQRAIAMQEA8LIAEgAzYCACAAIAAoAgRB5ABsIgI2AigDQCAAKAIYIAJKDQALIAEgACgCFDYCBCAAIAE2AhQgACAAKAIYQQFqNgIYIAAoAhwiAUUNACABKAIAQQA2AgggACABKAIENgIcIAAgACgCIEEBazYCICABEBALC/oCAQR/AkAgAEUNACAAKAKsKCIBBEAgACgCqCgiAgRAQQAhAQNAIAAoAqwoIAFBA3RqKAIAIgMEQCADEBAgACgCqCghAgsgAUEBaiIBIAJJDQALIAAoAqwoIQELIABBADYCqCggARAQIABBADYCrCgLIAAoArQoIgEEQCABEBAgAEEANgK0KAsgACgC0CsiAQRAIAEQECAAQQA2AtArCyAAKALsKyIBBEAgARAQIABBADYC7CsLIAAoAugrIgEEQCABEBAgAEEANgLoKwsgACgC/CsiAQRAIAEQECAAQQA2AoQsIABCADcC/CsLIAAoAvArIgEEQCAAKAL0KyIDBH9BACECA0AgASgCDCIEBEAgBBAQIAFBADYCDCAAKAL0KyEDCyABQRRqIQEgAkEBaiICIANJDQALIAAoAvArBSABCxAQIABBADYC8CsLIAAoAuQrIgEEQCABEBAgAEEANgLkKwsgACgC3CsiAUUNACABEBAgAEIANwLcKwsLyAcCEX8BfiAAKAIQIghBIE8EQCAAKQMIpw8LAkAgACgCFCIDQQROBEAgACgCACICQQNrKAIAIQEgACADQQRrIgM2AhQgACACQQRrNgIADAELIANBAEwEQAwBCyADQQFxIQ0gACgCACECAkAgA0EBRgRAQRghBAwBCyADQf7///8HcSEJQRghBANAIAAgAkEB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IABBADYCiAEgACgCZBAQIABBADYCZCAALQC8AUECcUUEQCAAKAKoARAQCyAAQdAAakEAQfAAEBUaIAAoAsABEDIgAEEANgLAASAAKALEARAyIABBADYCwAEgACgCyAEiAQRAIAEoAhwiAgRAIAIQECABQQA2AhwLIAEoAigiAgRAIAEoAiQEQANAIAIgBUEobCIDaigCJCIEBEAgBBAQIAEoAigiAiADakEANgIkCyACIANqKAIQIgQEQCAEEBAgASgCKCICIANqQQA2AhALIAIgA2ooAhgiBARAIAQQECABKAIoIgIgA2pBADYCGAsgBUEBaiIFIAEoAiRJDQALCyACEBAgAUEANgIoCyABEBALIABBADYCyAEgACgCSBAhIABBADYCSCAAKAJMECEgAEEANgJMIAAoAtQBIgMEQAJAIAMoAghFDQAgAygCDARAIANBADYCKANAIAMoAhhBAEoNAAsLIANBATYCECADKAIAEBAgAygCHCICRQ0AA0AgAigCBCEBIAIQECADIAE2AhwgASICDQALCyADKAIkIgIEQCACKAIEIgVBAEoEQEEAIQEDQCACKAIAIAFBDGxqIgQoAggiBgRAIAQoAgQgBhECACACKAIEIQULIAFBAWoiASAFSA0ACwsgAigCABAQIAIQEAsgAxAQCyAAQQA2AtQBIAAQEAsL5gMCCH8EfiAAKAIUKAIAKAIUIAFBzABsaiIJKAIMIgggACgCGCgCGCABQTRsaiIKNQIEIhBCAX0iEiAANQI8fCAQgKciCyAIIAtJGyEMIAkoAggiCCAKNQIAIhFCAX0iEyAANQI4fCARgKciCiAIIApJGyEKIAkoAgQiCCASIAA1AjR8IBCApyILIAggC0sbIQsgCSgCACIIIBMgADUCMHwgEYCnIg0gCCANSxshDUEAIQggACgCICgC0CsgAUG4CGxqKAIUIQ4CQCAJKAIUQQAgAmtBfyACG2oiAkUEQCAKIQAgDSEIIAshAQwBCyADQQFxIAJBAWsiD3QiCSANSQRAIA0gCWutQn8gAq0iEIZCf4V8IBCIpyEIC0EAIQBBACEBIANBAXYgD3QiAyALSQRAIAsgA2utQn8gAq0iEIZCf4V8IBCIpyEBCyAJIApJBEAgCiAJa61CfyACrSIQhkJ/hXwgEIinIQALIAMgDE8EQEEAIQwMAQsgDCADa61CfyACrSIQhkJ/hXwgEIinIQwLQX8gAEECQQMgDkEBRhsiAmoiAyAAIANLGyAES0F/IAIgDGoiACAAIAxJGyAFS3EgCCACayIAQQAgACAITRsgBklxIAEgAmsiAEEAIAAgAU0bIAdJcQuiAQEGfyAABEAgACgCBCICBEAgAhAQIABBADYCBAsgAQRAIAAhAgNAIAIoAsgBIgMEQEEAIQUgAigCxAEiBAR/A0AgAygCDCIGBEAgBhAQIANBADYCDCACKALEASEECyADQRBqIQMgBUEBaiIFIARJDQALIAIoAsgBBSADCxAQIAJBADYCyAELIAJB8AFqIQIgB0EBaiIHIAFHDQALCyAAEBALC9UZAhN/A3sgACgCACIKIAAoAgwiDUEFdCIFaiEGIAogBWshFiAAKAIQIQUgACgCHCELIAAoAhQhCSAAKAIIIQ4CQAJAAkACQCADQQhJDQAgAUEPcQ0AIAZBD3FFDQELIAUgCU8NAgJAAkAgA0EBaw4CAAEDCwJAIAkgBWsiCEEYSQ0AIAEgBUECdGohByANQQV0IgQgCiAFQQZ0amogASAJQQJ0akkEQCAHIAogCUEGdGogBGpBPGtJDQELIAX9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEYIAUgCEF8cSIPaiEFQQAhBANAIAYgGEEE/asBIhf9GwBBAnRqIAcgBEECdGr9AAIAIhn9HwA4AgAgBiAX/RsBQQJ0aiAZ/R8BOAIAIAYgF/0bAkECdGogGf0fAjgCACAGIBf9GwNBAnRqIBn9HwM4AgAgGP0MBAAAAAQAAAAEAAAABAAAAP2uASEYIARBBGoiBCAPRw0ACyAIIA9GDQQLIAUhBCAJIAVrQQNxIgcEQEEAIQgDQCAGIARBBnRqIAEgBEECdGoqAgA4AgAgBEEBaiEEIAhBAWoiCCAHRw0ACwsgBSAJa0F8Sw0DA0AgBiAEQQZ0aiABIARBAnRqKgIAOAIAIAYgBEEBaiIFQQZ0aiABIAVBAnRqKgIAOAIAIAYgBEECaiIFQQZ0aiABIAVBAnRqKgIAOAIAIAYgBEEDaiIFQQZ0aiABIAVBAnRqKgIAOAIAIARBBGoiBCAJRw0ACwwDCyABIAJBAnRqIQgCQCAJIAVrIg9BPEkEQCAFIQQMAQsgCiAFQQZ0IA1BBXRqaiIEIAkgBUF/c2oiB0EGdCIQaiAESQRAIAUhBAwBCyAEQQRqIgQgEGogBEkEQCAFIQQMAQsgB0H///8fSwRAIAUhBAwBCyANQQV0IgQgCiAFQQZ0amoiByABIAIgCWpBAnRqSSAKIAlBBnRqIARqQThrIgQgASACIAVqQQJ0aktxBEAgBSEEDAELIAcgASAJQQJ0akkgASAFQQJ0aiAESXEEQCAFIQQMAQsgBf0R/QwAAAAAAQAAAAIAAAADAAAA/a4BIRggBSAPQXxxIhBqIQRBACEHA0AgBiAYQQT9qwEiF/0bAEECdGoiESABIAUgB2pBAnQiDGr9AAIAIhn9HwA4AgAgBiAX/RsBQQJ0aiITIBn9HwE4AgAgBiAX/RsCQQJ0aiIUIBn9HwI4AgAgBiAX/RsDQQJ0aiIVIBn9HwM4AgAgESAIIAxq/QACACIX/R8AOAIEIBMgF/0fATgCBCAUIBf9HwI4AgQgFSAX/R8DOAIEIBj9DAQAAAAEAAAABAAAAAQAAAD9rgEhGCAHQQRqIgcgEEcNAAsgDyAQRg0DCyAEQQFqIQUgCSAEa0EBcQRAIAYgBEEGdGoiByABIARBAnQiBGoqAgA4AgAgByAEIAhqKgIAOAIEIAUhBAsgBSAJRg0CA0AgBiAEQQZ0aiIFIAEgBEECdCIHaioCADgCACAFIAcgCGoqAgA4AgQgBiAEQQFqIgVBBnRqIgcgASAFQQJ0IgVqKgIAOAIAIAcgBSAIaioCADgCBCAEQQJqIgQgCUcNAAsMAgsgBSAJTw0BIAEgAkECdGohCANAIAYgBUEGdGoiBCABIAVBAnRqKgIAOAIAIAQgASACIAVqIgdBAnRqKgIAOAIEIAQgASACIAdqIgdBAnRqKgIAOAIIIAQgASACIAdqIgdBAnRqKgIAOAIMIAQgASACIAdqIgdBAnRqKgIAOAIQIAQgASACIAdqIgdBAnRqKgIAOAIUIAQgASACIAdqQQJ0IgdqKgIAOAIYIAQgByAIaioCADgCHCAFQQFqIgUgCUcNAAsMAQsgASACQQJ0aiEIIANBA0YhByADQQRGIQ8gA0EFRiEQIANBB0YhEQNAIAYgBUEGdGoiBCABIAVBAnRqKgIAOAIAIAQgASACIAVqIgxBAnRqKgIAOAIEIAQgASACIAxqIgxBAnRqKgIAOAIIAkAgBw0AIAQgASACIAxqIgxBAnRqKgIAOAIMIA8NACAEIAEgAiAMaiIMQQJ0aioCADgCECAQDQAgBCABIAIgDGoiDEECdGoqAgA4AhQgA0EGRg0AIAQgASACIAxqQQJ0IgxqKgIAOAIYIBENACAEIAggDGoqAgA4AhwLIAVBAWoiBSAJRw0ACwsgFkEgaiEGIAEgDkECdGohBCAAKAIYIQUCQAJAAkAgA0EISQ0AIARBD3ENACAGQQ9xRQ0BCyAFIAtPDQECQAJAAkAgA0EBaw4CAAECCwJAIAsgBWsiAEEcSQ0AIAogBUEGdEEgciANQQV0IgJraiABIAsgDmpBAnRqSQRAIAEgBSAOakECdGogC0EGdCACayAKakEca0kNAQsgBCAFQQJ0aiEDIAX9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEYIAUgAEF8cSIBaiEFQQAhAgNAIAYgGEEE/asBIhf9GwBBAnRqIAMgAkECdGr9AAIAIhn9HwA4AgAgBiAX/RsBQQJ0aiAZ/R8BOAIAIAYgF/0bAkECdGogGf0fAjgCACAGIBf9GwNBAnRqIBn9HwM4AgAgGP0MBAAAAAQAAAAEAAAABAAAAP2uASEYIAJBBGoiAiABRw0ACyAAIAFGDQQLIAUhAiALIAVrQQNxIgAEQEEAIQEDQCAGIAJBBnRqIAQgAkECdGoqAgA4AgAgAkEBaiECIAFBAWoiASAARw0ACwsgBSALa0F8Sw0DA0AgBiACQQZ0aiAEIAJBAnRqKgIAOAIAIAYgAkEBaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAYgAkECaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAYgAkEDaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAJBBGoiAiALRw0ACwwDCyAEIAJBAnRqIQMCQCALIAVrIgBBxABJBEAgBSECDAELIAogBUEGdCIJQSByIA1BBXQiCGtqIgcgCyAFQX9zaiIPQQZ0IhBqIAdJBEAgBSECDAELIAogCUEkciAIa2oiCSAQaiAJSQRAIAUhAgwBCyAPQf///x9LBEAgBSECDAELIAogBUEGdEEgciANQQV0IglraiINIAEgCyAOaiIIIAJqQQJ0akkgC0EGdCAJayAKakEYayIJIAEgDkECdGogBUECdGoiCiACQQJ0aktxBEAgBSECDAELIA0gASAIQQJ0akkgCSAKS3EEQCAFIQIMAQsgBf0R/QwAAAAAAQAAAAIAAAADAAAA/a4BIRggBSAAQXxxIglqIQJBACEBA0AgBiAYQQT9qwEiF/0bAEECdGoiCiAEIAEgBWpBAnQiDWr9AAIAIhn9HwA4AgAgBiAX/RsBQQJ0aiIOIBn9HwE4AgAgBiAX/RsCQQJ0aiIIIBn9HwI4AgAgBiAX/RsDQQJ0aiIHIBn9HwM4AgAgCiADIA1q/QACACIX/R8AOAIEIA4gF/0fATgCBCAIIBf9HwI4AgQgByAX/R8DOAIEIBj9DAQAAAAEAAAABAAAAAQAAAD9rgEhGCABQQRqIgEgCUcNAAsgACAJRg0DCyACQQFqIQAgCyACa0EBcQRAIAYgAkEGdGoiASAEIAJBAnQiAmoqAgA4AgAgASACIANqKgIAOAIEIAAhAgsgACALRg0CA0AgBiACQQZ0aiIAIAQgAkECdCIBaioCADgCACAAIAEgA2oqAgA4AgQgBiACQQFqIgBBBnRqIgEgBCAAQQJ0IgBqKgIAOAIAIAEgACADaioCADgCBCACQQJqIgIgC0cNAAsMAgsgBCACQQJ0aiEBIANBA0YhCSADQQRGIQogA0EFRiENIANBB0YhDgNAIAYgBUEGdGoiACAEIAVBAnRqKgIAOAIAIAAgBCACIAVqIghBAnRqKgIAOAIEIAAgBCACIAhqIghBAnRqKgIAOAIIAkAgCQ0AIAAgBCACIAhqIghBAnRqKgIAOAIMIAoNACAAIAQgAiAIaiIIQQJ0aioCADgCECANDQAgACAEIAIgCGoiCEECdGoqAgA4AhQgA0EGRg0AIAAgBCACIAhqQQJ0IghqKgIAOAIYIA4NACAAIAEgCGoqAgA4AhwLIAVBAWoiBSALRw0ACwwBCyAFIAtPDQAgBCACQQJ0aiEBA0AgBiAFQQZ0aiIAIAQgBUECdGoqAgA4AgAgACAEIAIgBWoiA0ECdGoqAgA4AgQgACAEIAIgA2oiA0ECdGoqAgA4AgggACAEIAIgA2oiA0ECdGoqAgA4AgwgACAEIAIgA2oiA0ECdGoqAgA4AhAgACAEIAIgA2oiA0ECdGoqAgA4AhQgACAEIAIgA2pBAnQiA2oqAgA4AhggACABIANqKgIAOAIcIAVBAWoiBSALRw0ACwsLmwMBBH8gASAAQQRqIgRqQQFrQQAgAWtxIgUgAmogACAAKAIAIgFqQQRrTQR/IAAoAgQiAyAAKAIIIgY2AgggBiADNgIEIAQgBUcEQCAAIABBBGsoAgBBfnFrIgMgBSAEayIEIAMoAgBqIgU2AgAgAyAFQXxxakEEayAFNgIAIAAgBGoiACABIARrIgE2AgALAn8gASACQRhqTwRAIAAgAmpBCGoiAyABIAJrQQhrIgE2AgAgAyABQXxxakEEayABQQFyNgIAIAMCfyADKAIAQQhrIgFB/wBNBEAgAUEDdkEBawwBCyABZyEEIAFBHSAEa3ZBBHMgBEECdGtB7gBqIAFB/x9NDQAaQT8gAUEeIARrdkECcyAEQQF0a0HHAGoiASABQT9PGwsiAUEEdCIEQaDHAWo2AgQgAyAEQajHAWoiBCgCADYCCCAEIAM2AgAgAygCCCADNgIEQajPAUGozwEpAwBCASABrYaENwMAIAAgAkEIaiIBNgIAIAAgAUF8cWoMAQsgACABagtBBGsgATYCACAAQQRqBUEACwvCAQEDfwJAIAEgAigCECIDBH8gAwUgAhA+DQEgAigCEAsgAigCFCIEa0sEQCACIAAgASACKAIkEQAADwsCQAJAIAIoAlBBAEgNACABRQ0AIAEhAwNAIAAgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyACIAAgAyACKAIkEQAAIgQgA0kNAiABIANrIQEgAigCFCEEDAELIAAhBUEAIQMLIAQgBSABEBIaIAIgAigCFCABajYCFCABIANqIQQLIAQLWQEBfyAAIAAoAkgiAUEBayABcjYCSCAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALzAIBBH8gASAA/QACAP0LAgAgASgCGCICBEAgASgCECIDBH9BACECA0AgASgCGCACQTRsaigCLCIEBEAgBBAQIAEoAhAhAwsgAkEBaiICIANJDQALIAEoAhgFIAILEBAgAUEANgIYCyABIAAoAhAiAjYCECABIAJBNGwQFCICNgIYIAIEQCABKAIQBEBBACEDA0AgAiADQTRsIgVqIgIgACgCGCAFaiIE/QACAP0LAgAgAiAEKAIwNgIwIAIgBP0AAiD9CwIgIAIgBP0AAhD9CwIQIAEoAhgiAiAFakEANgIsIANBAWoiAyABKAIQSQ0ACwsgASAAKAIUNgIUIAEgACgCICICNgIgIAIEQCABIAIQFCICNgIcIAJFBEAgAUIANwIcDwsgAiAAKAIcIAAoAiAQEhoPCyABQQA2AhwPCyABQQA2AhAgAUEANgIYCwQAQQELxgEBA38DQCAAQQR0IgFBpMcBaiABQaDHAWoiAjYCACABQajHAWogAjYCACAAQQFqIgBBwABHDQALQTAQbRojAEEQayIAJAACQCAAQQxqIABBCGoQDA0AQbDPAUEIIAAoAgxBAnRBBGoQJSIBNgIAIAFFDQBBCCAAKAIIECUiAQRAQbDPASgCACICIAAoAgxBAnRqQQA2AgAgAiABEAtFDQELQbDPAUEANgIACyAAQRBqJABBzM8BQSo2AgBBlNABQdjQATYCAAuQBgIFfwN7IwBBEGsiBiQAAn8gACgCCEEQRgRAIAAoApwBIAAoAswBQYwsbGoMAQsgACgCDAshAAJAIAMoAgAiBUUEQEEAIQIgBEEBQcATQQAQDwwBCyAAKALQKyEJIAMgBUEBazYCACACIAZBDGpBARARIAkgAUG4CGxqIgcgBigCDCIAQQV2NgKkBiAHIABBH3EiATYCGCACQQFqIQAgAwJ/An8CQAJ/AkACQCABDgIAAwELIAMoAgAMAQsgAygCAEEBdgsiBUHiAE8EfyAGQuGAgICQDDcCBCAGIAU2AgAgBEECQcX4ACAGEA8gBygCGAUgAQsEQCAFIgENAUEADAILIAUEQCAHQRxqIQFBACECA0AgACAGQQxqQQEQESACQeAATQRAIAYoAgwhBCABIAJBA3RqIghBADYCBCAIIARBA3Y2AgALIABBAWohACACQQFqIgIgBUcNAAsLQQAhAiADKAIAIgAgBUkNAyAAIAVrDAILIAdBHGohBEEAIQIDQCAAIAZBDGpBAhARIAJB4ABNBEAgBCACQQN0aiIFIAYoAgwiCEH/D3E2AgQgBSAIQQt2NgIACyAAQQJqIQAgAkEBaiICIAFHDQALIAFBAXQLIQBBACECIAMoAgAiASAASQ0BIAEgAGsLNgIAQQEhAiAHKAIYQQFHDQAgB0EcaiEEIAf9CQIcIQwgBygCICED/QwBAAAAAgAAAAMAAAAEAAAAIQtBACEBA0AgBCABQQN0aiIAQRhqIAwgC/0M//////////////////////2uASIK/RsAQQNu/REgCv0bAUEDbv0cASAK/RsCQQNu/RwCIAr9GwNBA279HAP9sQH9DAAAAAAAAAAAAAAAAAAAAAD9uAEiCv1aAgACIABBEGogCv1aAgABIABBCGogCv1aAgAAIAQgAUEEaiIBQQN0aiIFIAr9WgIAAyAAIAM2AhwgACADNgIUIAAgAzYCDCAFIAM2AgQgC/0MBAAAAAQAAAAEAAAABAAAAP2uASELIAFB4ABHDQALCyAGQRBqJAAgAgufBgEGfyMAQSBrIgYkAAJ/IAAoAghBEEYEQCAAKAKcASAAKALMAUGMLGxqDAELIAAoAgwLIQUCQCADKAIAQQRNBEBBACEAIARBAUGdE0EAEA8MAQsgAiAFKALQKyABQbgIbGoiBSIJQQRqQQEQESAFIAUoAgRBAWoiBzYCBCAHQSJPBEAgBkEhNgIEIAYgBzYCACAEQQFB+TkgBhAPQQAhAAwBCyAHIAAoAqABIghNBEAgBiAHNgIYIAYgCDYCFCAGIAE2AhAgBEEBQbT7ACAGQRBqEA8gACAAKAIIQYCAAnI2AghBACEADAELIAJBAWogBUEIakEBEBEgBSAFKAIIQQJqNgIIIAJBAmogBUEMakEBEBEgBSAFKAIMQQJqIgA2AgwCQAJAIAUoAggiAUEKSw0AIABBCksNACAAIAFqQQ1JDQELQQAhACAEQQFBwylBABAPDAELIAJBA2ogBUEQakEBEBEgBS0AEEGAAXEEQEEAIQAgBEEBQYsyQQAQDwwBCyACQQRqIAVBFGpBARARIAUoAhRBAk8EQEEAIQAgBEEBQcoxQQAQDwwBCyADIAMoAgBBBWsiBzYCAEEBIQAgBSgCBCEBIAUtAABBAXFFBEAgAUUNASAFQbAHaiEBIAVBrAZqIQJBACEFA0AgAiAFQQJ0IgBqQQ82AgAgACABakEPNgIAQQEhACAFQQFqIgUgCSgCBEkNAAsMAQsgASAHTQRAAkAgAUUEQEEAIQEMAQsgAkEFaiAGQRxqQQEQESAFIAYoAhwiAEEEdjYCsAcgBSAAQQ9xNgKsBiAFKAIEIgFBAk8EQCAFQbAHaiEHIAVBrAZqIQggAkEGaiEAQQEhBQNAIAAgBkEcakEBEBECQCAGKAIcIgFBEE8EQCABQQ9xIgINAQtBACEAIARBAUHwLUEAEA8MBQsgCCAFQQJ0IgpqIAI2AgAgByAKaiABQQR2NgIAIABBAWohACAFQQFqIgUgCSgCBCIBSQ0ACwsgAygCACEHCyADIAcgAWs2AgBBASEADAELQQAhACAEQQFBnRNBABAPCyAGQSBqJAAgAAtSACABIAAtAAA6AAcgASAALQABOgAGIAEgAC0AAjoABSABIAAtAAM6AAQgASAALQAEOgADIAEgAC0ABToAAiABIAAtAAY6AAEgASAALQAHOgAAC5IBAQR/IAAgATYCoAECQCAAKAJIIgNFDQAgAygCGCIGRQ0AIAAoAgwiBEUNACAEKALQK0UNACADKAIQIgRFBEBBAQ8LQQAhAwNAIAEgACgCDCgC0CsgA0G4CGxqKAIETwRAIAJBAUGixQBBABAPQQAPCyAGIANBNGxqIAE2AihBASEFIANBAWoiAyAERw0ACwsgBQusBwIJfwh+IwBBEGsiCiQAAkAgAkUEQCADQQFB+tUAQQAQDwwBCyACKAIQIgsgACgCSCIGKAIQSQRAIANBAUG1zgBBABAPDAELIAQgACgCaCIFIAAoAmxsIgdPBEAgCiAENgIAIAogB0EBazYCBCADQQFB9/oAIAoQD0EAIQUMAQsgAiAAKAJUIAQgBSAEIAVuIgdsayIIIAAoAlxsaiIFNgIAIAIgBSAGKAIAIgYgBSAGSxsiBjYCACACIAAoAlQgACgCXCAIQQFqbGoiBTYCCCACIAUgACgCSCgCCCIIIAUgCEkbIgg2AgggAiAAKAJYIAAoAmAgB2xqIgU2AgQgAiAFIAAoAkgoAgQiCSAFIAlLGyIJNgIEIAIgACgCWCAAKAJgIAdBAWpsaiIFNgIMIAIgBSAAKAJIKAIMIgcgBSAHSRsiBTYCDCAAKAJIIgwoAhAiBwRAIAWsQgF9IREgCKxCAX0hEiAJrUIBfSETIAatQgF9IRQgDCgCGCEIIAIoAhghBUEAIQYDQCAFIAggBkE0bGooAigiCTYCKCAFIBQgBSgCACIMrSIOfCAOgCIVPgIQIAUgEyAFKAIEIg2tIg58IA6AIhA+AhQgBUJ/IAmtIg6GIg8gEMR9IA6HpyAPIBEgDawiEHwgEH/EfSAOh6drNgIMIAUgDyAVxH0gDoenIA8gEiAMrCIPfCAPf8R9IA6Hp2s2AgggBUE0aiEFIAZBAWoiBiAHRw0ACwsgByALSQRAIAIoAhghBQNAIAUgB0E0bCIGaigCLBAQIAIoAhgiBSAGakEANgIsIAdBAWoiByACKAIQSQ0ACyACIAAoAkgoAhA2AhALIAAoAkwiBQRAIAUQIQsgAEEBQSQQEyIHNgJMQQAhBSAHRQ0AIAIgBxA/IAAgBDYCLCAAKALAAUEXIAMQJEUNACAAKALAASIEKAIAIQYgBCgCCCEHAkAgBgRAQQEhBSAGQQFxIQsgBkEBRgR/QQAFIAZBfnEhCEEAIQYDQAJ/QQAgBUUNABpBACAAIAEgAyAHKAIAEQAARQ0AGiAAIAEgAyAHKAIEEQAAQQBHCyEFIAdBCGohByAGQQJqIgYgCEcNAAsgBUEBcwshBgJAAkAgCwRAIAYNASAAIAEgAyAHKAIAEQAAQQBHIQULIARBADYCACAFQQFxRQ0BDAMLIARBADYCAAsgACgCSBAhQQAhBSAAQQA2AkgMAgsgBEEANgIACyAAIAIQRyEFCyAKQRBqJAAgBQvyAwEFfwJAAkAgACgCPCICRQRAIAEoAhANAUEBDwsgAkE0bBAUIgVFDQEgASgCEARAIAEoAhghAgNAIAIgA0E0bCIEaigCLBAQIAEoAhgiAiAEakEANgIsIANBAWoiAyABKAIQIgRJDQALCyABIAAoAjwEfyAAKAJMKAIYIQNBACECA0AgBSACQTRsaiIEIAMgACgCQCACQQJ0aigCAEE0bCIGaiID/QACAP0LAgAgBCADKAIwNgIwIAQgA/0AAiD9CwIgIAQgA/0AAhD9CwIQIAQgACgCTCgCGCIDIAZqIgYoAiQ2AiQgBCAGKAIsNgIsIAZBADYCLCACQQFqIgIgACgCPCIGSQ0ACyABKAIQBSAECwR/IAAoAkwoAhghAkEAIQMDQCACIANBNGwiBGooAiwQECAAKAJMKAIYIgIgBGpBADYCLCADQQFqIgMgASgCEEkNAAsgACgCPAUgBgs2AhAgASgCGBAQIAEgBTYCGEEBDwsgASgCGCEEIAAoAkwoAhghA0EAIQIDQCAEIAJBNGwiBWoiBCADIAVqKAIkNgIkIAQoAiwQECABKAIYIgQgBWogACgCTCgCGCIDIAVqIgUoAiw2AiwgBUEANgIsIAJBAWoiAiABKAIQSQ0AC0EBDwsgACgCSBAhIABBADYCSEEAC84EAQh/AkAgAkUNAAJAIAAoAqABIgVFDQAgACgCSCIERQ0AIAQoAhBFDQAgBCgCGCgCKCAFRw0AIAIoAhAiCEUNACACKAIYIgYoAigNACAGKAIsDQBBACEEIAhBCE8EQCAIQXhxIQkDQCAGIARBNGxqIAU2AiggBiAEQQFyQTRsaiAFNgIoIAYgBEECckE0bGogBTYCKCAGIARBA3JBNGxqIAU2AiggBiAEQQRyQTRsaiAFNgIoIAYgBEEFckE0bGogBTYCKCAGIARBBnJBNGxqIAU2AiggBiAEQQdyQTRsaiAFNgIoIARBCGohBCAKQQhqIgogCUcNAAsLIAhBB3EiCARAA0AgBiAEQTRsaiAFNgIoIARBAWohBCALQQFqIgsgCEcNAAsLIAIgAxA3DQBBAA8LIAAoAkwiBUUEQCAAQQFBJBATIgU2AkwgBUUNAQsgAiAFED8gACgCwAFBFiADECRFDQAgACgCwAEiBigCACEEIAYoAgghBQJAIAQEQEEBIQcgBEEBcSEIIARBAUYEf0EABSAEQX5xIQlBACEEA0ACf0EAIAdFDQAaQQAgACABIAMgBSgCABEAAEUNABogACABIAMgBSgCBBEAAEEARwshByAFQQhqIQUgBEECaiIEIAlHDQALIAdBAXMLIQQCQAJAIAgEQCAEDQEgACABIAMgBSgCABEAAEEARyEHCyAGQQA2AgAgB0EBcUUNAQwDCyAGQQA2AgALIAAoAkgQISAAQQA2AkhBAA8LIAZBADYCAAsgACACEEchBwsgBwv4BAEGfwJAQQFBMBATIgIEfyACIAAoAsgBIgH9AAMA/QsDACACIAEpAxA3AxAgAiABKAIYIgE2AhggAiABQRhsEBQiATYCHCABRQRAIAIQEEEADwsCQCAAKALIASgCHCIDBEAgASADIAIoAhhBGGwQEhoMAQsgARAQIAJBADYCHAsgAiAAKALIASgCJCIBNgIkIAIgAUEoEBMiATYCKCABRQRAIAIoAhwQECACEBBBAA8LAkAgACgCyAEoAigEQCACKAIkRQ0BA0AgASAFQShsIgNqIAAoAsgBKAIoIANqKAIUIgE2AhQgAUEYbBAUIQEgAigCKCIEIANqIgYgATYCGCABRQRAIAUEf0EAIQEDQCACKAIoIAFBKGxqKAIYEBAgAUEBaiIBIAVHDQALIAIoAigFIAQLEBAMBQsCQCAAKALIASgCKCADaigCGCIEBEAgASAEIAYoAhRBGGwQEhogAigCKCEBDAELIAEQECACKAIoIgEgA2pBADYCGAsgASADaiAAKALIASgCKCADaigCBCIBNgIEIAFBGGwQFCEBIAIoAigiBCADaiIGIAE2AhAgAUUEQCAFBH9BACEBA0AgAUEobCIAIAIoAihqKAIYEBAgAigCKCAAaigCEBAQIAFBAWoiASAFRw0ACyACKAIoBSAECxAQDAULAkAgACgCyAEoAiggA2ooAhAiBARAIAEgBCAGKAIEQRhsEBIaIAIoAighAQwBCyABEBAgAigCKCIBIANqQQA2AhALIAEgA2pCADcCICAFQQFqIgUgAigCJEkNAAsMAQsgARAQIAJBADYCKAsgAgVBAAsPCyACKAIcEBAgAhAQQQALoAYCDn8BeyMAQRBrIggkACAAKAJIKAIQIQ0gCEEBQTgQEyIBNgIMAkAgAUUNACABIAAoAkgoAhAiCTYCGCABIAD9AAJU/QsCACABIAAoAmg2AhAgACgCbCECIAFBADYCNCABIAI2AhQgASAAKAIMIgwoAgA2AiAgASAMKAIENgIkIAEgDCgCCDYCKCABIAwoAhA2AiwgASAJQbgIEBMiADYCMCAABEAgDQRAA0AgDkG4CGwiACABKAIwaiIFIAwoAtArIABqIgT9AAIAIg/9CwIEIAUgBCgCEDYCFCAFIAQoAhQ2AhggD/0bASIAQSBNBEAgBUG0B2ogBEGwB2ogABASGiAFQbAGaiAEQawGaiAEKAIEEBIaCyAFIAQoAhgiADYCHCAFIAQoAqQGNgKoBkEBIQYCQCAAQQFHBEAgBCgCBEEDbCIAQQNrQd8ASw0BIABBAmshBgsgBUGkA2ohCSAFQSBqIQogBEEcaiELQQAhAAJAIAZBCEkNACAEIAZBA3RqQRxqIApLBEAgCyAFIAZBAnRqQaQDakkNAQsgBkF8cSEAQQAhAgNAIAogAkECdCIDaiALIAJBA3RqIgdBHGogB0EUaiAHQQxqIAf9CQIE/VYCAAH9VgIAAv1WAgAD/QsCACADIAlqIAdBGGogB0EQaiAHQQhqIAf9CQIA/VYCAAH9VgIAAv1WAgAD/QsCACACQQRqIgIgAEcNAAsgACAGRg0BCyAAQQFyIQMgBkEBcQRAIAogAEECdCICaiALIABBA3RqIgAoAgQ2AgAgAiAJaiAAKAIANgIAIAMhAAsgAyAGRg0AA0AgCiAAQQJ0IgJqIAsgAEEDdGoiAygCBDYCACACIAlqIAMoAgA2AgAgCiAAQQFqIgNBAnQiAmogCyADQQN0aiIDKAIENgIAIAIgCWogAygCADYCACAAQQJqIgAgBkcNAAsLIAUgBCgCqAY2AqwGIA5BAWoiDiANRw0ACwsgASEDDAELIAhBDGoEQCAIKAIMIgEoAjAiAAR/IAAQECAIKAIMBSABCxAQIAhBADYCDAsLIAhBEGokACADC/kEAQh/IwBBgAJrIgMkACAABEBB/AxBESACEB0gAyAAKAIANgLwASACQZoRIANB8AFqEBYgAyAAKAIENgLgASACQacRIANB4AFqEBYgAyAAKAIINgLQASACQYI3IANB0AFqEBYgAyAAKAIQNgLAASACQf0QIANBwAFqEBYgAUEASgRAA0AgACgC0CshBCADIAc2ArABIAJBog0gA0GwAWoQFiADIAQgB0G4CGxqIgQoAgA2AqABIAJBmREgA0GgAWoQFiADIAQoAgQ2ApABIAJB9DcgA0GQAWoQFiADIAQoAgg2AoABIAJBoDYgA0GAAWoQFiADIAQoAgw2AnAgAkGwNiADQfAAahAWIAMgBCgCEDYCYCACQYgRIANB4ABqEBYgAyAEKAIUNgJQIAJBtjggA0HQAGoQFkHVC0EXIAIQHSAEKAIEBEAgBEGwB2ohBiAEQawGaiEIQQAhBQNAIAggBUECdCIJaigCACEKIAMgBiAJaigCADYCRCADIAo2AkAgAkGLDCADQUBrEBYgBUEBaiIFIAQoAgRJDQALCyACEG4gAyAEKAIYNgIwIAJBwDYgA0EwahAWIAMgBCgCpAY2AiAgAkHxNiADQSBqEBZBASEGQe0LQRQgAhAdAkAgBCgCGEEBRwRAIAQoAgQiBUEATA0BIAVBA2xBAmshBgsgBEEcaiEIQQAhBQNAIAMgCCAFQQN0aikCAEIgiTcDECACQYsMIANBEGoQFiAFQQFqIgUgBkcNAAsLIAIQbiADIAQoAqgGNgIAIAJB4DYgAxAWQZkMQQUgAhAdIAdBAWoiByABRw0ACwtBmgxBBCACEB0LIANBgAJqJAAL5goDCX8BewF+IwBBsAFrIgUkAAJAIAFBgANxBEBBni1BCyACEB0MAQsCQCABQQFxRQ0AIAAoAkgiBkUNACMAQdAAayIDJABB7gxBDSACEB0gA0EAOgBPIANBCToATiADIAYpAgA3AkQgAyADQc4AaiIENgJAIAJBhjkgA0FAaxAWIAMgBikCCDcCNCADIAQ2AjAgAkH1OCADQTBqEBYgAyAGKAIQNgIkIAMgBDYCICACQZM3IANBIGoQFgJAIAYoAhhFDQAgBigCEEUNAANAIAMgA0HOAGoiCjYCECADIAc2AhQgAkGODSADQRBqEBYgBigCGCAHQTRsaiEIIwBBMGsiBCQAIARBCTsALiAEQQk6AC0gBCAIKQIANwIkIAQgBEEtaiIJNgIgIAJBzzYgBEEgahAWIAQgCCgCGDYCFCAEIAk2AhAgAkHFOCAEQRBqEBYgBCAIKAIgNgIEIAQgCTYCACACQao4IAQQFiAEQTBqJAAgAyAKNgIAIAJBlAwgAxAWIAdBAWoiByAGKAIQSQ0ACwtBnAxBAiACEB0gA0HQAGokAAsCQCABQQJxRQ0AIAAoAkhFDQBB+Q1BJCACEB0gBSAAKQJUNwOgASACQecRIAVBoAFqEBYgBSAAKQJcNwOQASACQcURIAVBkAFqEBYgBSAAKQNoNwOAASACQdcRIAVBgAFqEBYgACgCDCAAKAJIKAIQIAIQS0GcDEECIAIQHQsCQCABQQhxRQ0AIAAoAkhFDQAgACgCaCAAKAJsbCIERQ0AIAAoApwBIQMDQCADIAAoAkgoAhAgAhBLIANBjCxqIQMgC0EBaiILIARHDQALCyABQRBxRQ0AIAAoAsgBIQFB0w1BJSACEB0gBSAB/QADAP0LBHAgAkHJKyAFQfAAahAWQcENQREgAhAdAkAgASgCHEUNACABKAIYRQ0AQQAhAwNAIAEoAhwgA0EYbGoiAC8BACEEIAApAwghDSAFIAAoAhA2AmAgBSANNwNYIAUgBDYCUCACQYs4IAVB0ABqEBYgA0EBaiIDIAEoAhhJDQALC0GaDEEEIAIQHQJAIAEoAigiBEUNACABKAIkIgdFDQBBACEDQQAhAAJAIAdBBE8EQCAHQXxxIQADQCAEIANBA3JBKGxqQQRqIAQgA0ECckEobGpBBGogBCADQQFyQShsakEEaiAEIANBKGxq/QkCBP1WAgAB/VYCAAL9VgIAAyAM/a4BIQwgA0EEaiIDIABHDQALIAwgDCAM/Q0ICQoLDA0ODwABAgMAAQID/a4BIgwgDCAM/Q0EBQYHAAECAwABAgMAAQID/a4B/RsAIQMgACAHRg0BCwNAIAQgAEEobGooAgQgA2ohAyAAQQFqIgAgB0cNAAsLIANFDQBBsA1BECACEB0gASgCJARAIAEoAighAEEAIQcDQCAFIAAgB0EobCIEaigCBCIGNgJEIAUgBzYCQCACQdE4IAVBQGsQFiABKAIoIQACQCAGRQ0AQQAhAyAAIARqKAIQRQ0AA0AgASgCKCAEaigCECADQRhsaiIA/QADACEMIAUgACkDEDcDOCAFIAz9CwMoIAUgAzYCICACQaXRACAFQSBqEBYgA0EBaiIDIAZHDQALIAEoAighAAsCQCAAIARqIgYoAhhFDQBBACEDIAYoAhRFDQADQCAAIARqKAIYIANBGGxqIgAvAQAhBiAAKQMIIQ0gBSAAKAIQNgIQIAUgDTcDCCAFIAY2AgAgAkGLOCAFEBYgA0EBaiIDIAEoAigiACAEaigCFEkNAAsLIAdBAWoiByABKAIkSQ0ACwtBmgxBBCACEB0LQZwMQQIgAhAdCyAFQbABaiQAC48CAQN/AkBBAUHoARATIgEEfyABQQE2AgAgAUEBNgK4ASABIAEtALwBQQZyOgC8ASABQQFBjCwQEyIANgIMIABFDQEgAUEBQegHEBMiADYCECAARQ0BIAFCADcDMCABQX82AiwgAUHoBzYCFAJAQQFBMBATIgAEQCAAQQA2AhggAEHkADYCICAAQeQAQRgQEyICNgIcIAINASAAEBALIAFBADYCyAEMAgsgAEEANgIoIAEgADYCyAEgARAzIgA2AsQBIABFDQEgARAzIgA2AsABIABFDQECQBCRAUUNAAsgAUEAEGYiADYC1AEgAEUEQCABQQAQZiIANgLUASAARQ0CCyABBUEACw8LIAEQOEEAC40JAgl/AX4jAEHQAWsiByQAIAAoAkghCQJAAkACQCAAKAJoQQFHDQAgACgCbEEBRw0AIAAoApwBKALcKw0BCyAAKAIIQQhGDQAgBkEBQeHOAEEAEA8MAQsCQCABKAIQIgxFDQAgACgCoAEhCiABKAIYIQsgDEEITwRAIAxBeHEhDwNAIAsgCEE0bGogCjYCKCALIAhBAXJBNGxqIAo2AiggCyAIQQJyQTRsaiAKNgIoIAsgCEEDckE0bGogCjYCKCALIAhBBHJBNGxqIAo2AiggCyAIQQVyQTRsaiAKNgIoIAsgCEEGckE0bGogCjYCKCALIAhBB3JBNGxqIAo2AiggCEEIaiEIIA5BCGoiDiAPRw0ACwsgDEEHcSIMRQ0AA0AgCyAIQTRsaiAKNgIoIAhBAWohCCANQQFqIg0gDEcNAAsLIAIgA3IgBHIgBXJFBEAgBkEEQa8wQQAQDyAAQgA3AhwgACAAKQJoNwIkIAEgCf0AAgD9CwIAIAEgBhA3IQgMAQsgAkEASARAIAcgAjYCACAGQQFBx90AIAcQD0EAIQgMAQsgAiAJKAIIIghLBEAgByAINgIUIAcgAjYCECAGQQFBm+EAIAdBEGoQD0EAIQgMAQsCQCACIAkoAgAiCEkEQCAHIAg2AsQBIAcgAjYCwAEgBkECQfvjACAHQcABahAPIABBADYCHCAJKAIAIQIMAQsgACACIAAoAlRrIAAoAlxuNgIcCyABIAI2AgAgA0EASARAIAcgAzYCICAGQQFBh90AIAdBIGoQD0EAIQgMAQsgAyAJKAIMIgJLBEAgByACNgI0IAcgAzYCMCAGQQFB7t8AIAdBMGoQD0EAIQgMAQsCQCADIAkoAgQiAkkEQCAHIAI2ArQBIAcgAzYCsAEgBkECQcziACAHQbABahAPIABBADYCICAJKAIEIQMMAQsgACADIAAoAlhrIAAoAmBuNgIgCyABIAM2AgRBACEIIARBAEwEQCAHIAQ2AkAgBkEBQcXcACAHQUBrEA8MAQsgBCAJKAIAIgJJBEAgByACNgJUIAcgBDYCUCAGQQFBouMAIAdB0ABqEA8MAQsCQCAEIAkoAggiAksEQCAHIAI2AqQBIAcgBDYCoAEgBkECQcPgACAHQaABahAPIAAgACgCaDYCJCAJKAIIIQQMAQsgACAANQJcIhAgBCAAKAJUa618QgF9IBCAPgIkCyABIAQ2AgggBUEATARAIAcgBTYCYCAGQQFBgtwAIAdB4ABqEA8MAQsgBSAJKAIEIgJJBEAgByACNgJ0IAcgBTYCcCAGQQFB8uEAIAdB8ABqEA8MAQsCQCAFIAkoAgwiAksEQCAHIAI2ApQBIAcgBTYCkAEgBkECQZXfACAHQZABahAPIAAgACgCbDYCKCAJKAIMIQUMAQsgACAANQJgIhAgBSAAKAJYa618QgF9IBCAPgIoCyABIAU2AgwgACAALQBEQQJyOgBEIAEgBhA3IghFBEBBACEIDAELIAcgAf0AAgD9CwSAASAGQQRBtDkgB0GAAWoQDwsgB0HQAWokACAIC5UCAQd/IwBBIGsiBSQAAn8gACgCSCIERQRAIANBAUHF5gBBABAPQQAMAQtBAEEEIAQoAhAQEyIERQ0AGiABBEAgACgCSCEIA0ACQAJAIAIgBkECdGooAgAiByAIKAIQTwRAIAUgBzYCECADQQFB+REgBUEQahAPDAELIAQgB0ECdGoiCSgCAEUNASAFIAc2AgAgA0EBQY0aIAUQDwsgBBAQQQAMAwsgCUEBNgIAIAZBAWoiBiABRw0ACwsgBBAQIAAoAkAQEAJAIAEEQCAAIAFBAnQiBBAUIgM2AkAgA0UEQCAAQQA2AjxBAAwDCyADIAIgBBASGgwBCyAAQQA2AkALIAAgATYCPEEBCyEKIAVBIGokACAKC7wFAQd/IAFBAUEkEBMiBDYCSAJAAkAgBEUNAAJAIAEoAsQBQRIgAxAkBEAgASgCxAFBEyADECQNAQsMAgsgASgCxAEiBygCACEGIAcoAgghBAJAIAYEQEEBIQUgBkEBRwRAIAZBfnEhCQNAAn9BACAFRQ0AGkEAIAEgACADIAQoAgARAABFDQAaIAEgACADIAQoAgQRAABBAEcLIQUgBEEIaiEEIAhBAmoiCCAJRw0ACwsCQAJAIAZBAXEEQCAFRQ0BIAEgACADIAQoAgARAABBAEchBQsgB0EANgIAIAVFDQEMAwsgB0EANgIACwwDCyAHQQA2AgALAkAgASgCwAFBFCADECQEQCABKALAAUEVIAMQJA0BCwwCCyABKALAASIHKAIAIQYgBygCCCEEAkAgBgRAQQEhBSAGQQFxIQkgBkEBRgR/QQAFIAZBfnEhBkEAIQgDQAJ/QQAgBUUNABpBACABIAAgAyAEKAIAEQAARQ0AGiABIAAgAyAEKAIEEQAAQQBHCyEFIARBCGohBCAIQQJqIgggBkcNAAsgBUULIQYCQAJAIAkEQCAGDQEgASAAIAMgBCgCABEAAEEARyEFCyAHQQA2AgAgBUUNAQwDCyAHQQA2AgALDAMLIAdBADYCAAsgAkEBQSQQEyIANgIAIABFDQAgASgCSCAAED8gASgCyAEgASgCbCABKAJobCIANgIkIABBKBATIQMgASgCyAEiACADNgIoAkAgA0UNACAAKAIkRQRAQQEPC0EAIQQDQCADIARBKGwiBWoiAEEANgIUIABB5AA2AhxB5ABBGBATIQAgBSABKALIASIHKAIoIgNqIAA2AhggAEUNAUEBIQogBEEBaiIEIAcoAiRJDQALDAELIAIoAgAQIUEAIQogAkEANgIACyAKDwsgASgCSBAhIAFBADYCSEEACwIACwQAQQELNAACQCAARQ0AIAFFDQAgACABKAIENgKkASAAIAEoAgA2AqABIAAgASgCuEBBAnE2AuABCwu0BQEIfyAAKAIYIgQoAhAiCUUEQEEADwsgBCgCGCEFIAAoAhQoAgAoAhQhBAJAAkAgAUUEQEEAIQEDQCAFKAIYIQIgBCgCHCAEKAIYQZgBbGoiAEGMAWsoAgAiByAAQZQBaygCACIIayEDIABBkAFrKAIAIABBmAFrKAIAayEAAkAgByAIRg0AIACtIAOtfkIgiFANAAwECyAAIANsIQMCQEEEIAJBA3YgAkEHcUEAR2oiACAAQQNGGyICRQ0AIAKtIAOtfkIgiFANAAwEC0F/IQAgAiADbCICIAFBf3NLDQIgBEHMAGohBCAFQTRqIQUgASACaiIBIQAgBkEBaiIGIAlHDQALDAELQQAhASAAKAJARQRAA0AgBSgCGCECIAQoAhwgBCgCGEGYAWxqIgBBBGsoAgAiByAAQQxrKAIAIghrIQMgAEEIaygCACAAQRBrKAIAayEAAkAgByAIRg0AIACtIAOtfkIgiFANAAwECyAAIANsIQMCQEEEIAJBA3YgAkEHcUEAR2oiACAAQQNGGyICRQ0AIAKtIAOtfkIgiFANAAwEC0F/IQAgAiADbCICIAFBf3NLDQIgBEHMAGohBCAFQTRqIQUgASACaiIBIQAgBkEBaiIGIAlHDQALDAELA0AgBSgCGCECIAQoAhwgBCgCGEGYAWxqIgBBjAFrKAIAIgcgAEGUAWsoAgAiCGshAyAAQZABaygCACAAQZgBaygCAGshAAJAIAcgCEYNACAArSADrX5CIIhQDQAMAwsgACADbCEDAkBBBCACQQN2IAJBB3FBAEdqIgAgAEEDRhsiAkUNACACrSADrX5CIIhQDQAMAwtBfyEAIAIgA2wiAiABQX9zSw0BIARBzABqIQQgBUE0aiEFIAEgAmoiASEAIAZBAWoiBiAJRw0ACwsgAA8LQX8L2gQBC38gAARAIAAoAhQiAQRAIAEoAgAiBQRAIAUoAhQhAyAFKAIQBH9BEEERIAAtAChBAXEbIQgDQCADKAIcIgIEQCADKAIgIgFBmAFuIQpBACEJIAFBmAFPBH8DQCACKAIwIgEEQCACKAI0IgZBKG4hB0EAIQQgBkEoTwR/A0AgASgCIBApIAFBADYCICABKAIkECkgAUEANgIkIAEgCBECACABQShqIQEgBEEBaiIEIAdHDQALIAIoAjAFIAELEBAgAkEANgIwCyACKAJUIgEEQCACKAJYIgZBKG4hB0EAIQQgBkEoTwR/A0AgASgCIBApIAFBADYCICABKAIkECkgAUEANgIkIAEgCBECACABQShqIQEgBEEBaiIEIAdHDQALIAIoAlQFIAELEBAgAkEANgJUCyACKAJ4IgEEQCACKAJ8IgZBKG4hB0EAIQQgBkEoTwR/A0AgASgCIBApIAFBADYCICABKAIkECkgAUEANgIkIAEgCBECACABQShqIQEgBEEBaiIEIAdHDQALIAIoAngFIAELEBAgAkEANgJ4CyACQZgBaiECIAlBAWoiCSAKRw0ACyADKAIcBSACCxAQIANBADYCHAsCQCADKAIoRQ0AIAMoAiQiAUUNACABEBAgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAiQLIAMoAjQQECADQcwAaiEDIAtBAWoiCyAFKAIQSQ0ACyAFKAIUBSADCxAQIAVBADYCFCAAKAIUKAIAEBAgACgCFCIBQQA2AgALIAEQECAAQQA2AhQLIAAoAkQQECAAEBALC8sTARV/IwBBIGsiDyQAIA8gBTYCGCABIAMoAhxBzABsaigCHCADKAIgQZgBbGohEQJAAkAgAygCKA0AIBEoAhhFDQAgEUEcaiEJA0ACQCAJKAIIIAkoAgBHBH8gCSgCDCAJKAIERgVBAQsNACADKAIkIgEgCSgCGEEobk8EQCAIQQFBghVBABAPDAQLIAkoAhQgAUEobGoiASgCIBBiIAEoAiQQYiABKAIUIAEoAhBsIg1FDQAgASgCGCEBIA1BCE8EQCANQXhxIQtBACEKA0AgAUIANwLoAyABQgA3AqgDIAFCADcC6AIgAUIANwKoAiABQgA3AugBIAFCADcCqAEgAUIANwJoIAFCADcCKCABQYAEaiEBIApBCGoiCiALRw0ACwtBACEKIA1BB3EiDUUNAANAIAFCADcCKCABQUBrIQEgCkEBaiIKIA1HDQALCyAJQSRqIQkgDEEBaiIMIBEoAhhJDQALCyAFIQ0CQCACLQAAQQJxRQ0AIAdBBU0EQCAIQQJBsR9BABAPDAELAkAgBS0AAEH/AUYEQCAFLQABQZEBRg0BCyAIQQJB2x9BABAPDAELIA8gBUEGaiINNgIYC0EUEBQiC0UNAAJ/IAAtAGxBAXEEQCAAQShqIQcgACgCKCENIABBLGoMAQsgAi0AiCxBAnEEQCACQbAoaiEHIAIoArAoIQ0gAkG8KGoMAQsgDyAFIAdqIA1rNgIcIA9BGGohByAPQRxqCyISKAIAIQAgC0IANwIMIAsgDTYCCCALIA02AgAgCyAAIA1qNgIEIAtBARAfRQRAIAsQZBogCygCCCALKAIAayEaIAsQLCAaIA1qIQECQCACLQAAQQRxRQ0AIAcoAgAgEigCACABa2pBAU0EQCAIQQJBmCFBABAPDAELAkAgAS0AAEH/AUYEQCABLQABQZIBRg0BCyAIQQJBwiFBABAPDAELIAFBAmohAQsgEiASKAIAIAcoAgAgAWtqNgIAIAcgATYCACAEQQA2AgAgBiAPKAIYIAVrNgIAQQEhFwwBCyARKAIYBEAgEUEcaiEQA0AgAygCJCEAIBAoAhQhAQJAIBAoAgggECgCAEcEfyAQKAIMIBAoAgRGBUEBCw0AIAEgAEEobGoiFCgCFCAUKAIQbCIYRQ0AIBQoAhghCUEAIRUDQAJAAn8gCSgCKEUEQCALIBQoAiAgFSADKAIoQQFqEGAMAQsgC0EBEB8LRQRAIAlBADYCJAwBCyAJKAIoRQRAQQAhAQNAIAEiAEEBaiEBIAsgFCgCJCAVIAAQYEUNAAsgECgCHCEBIAlBAzYCICAJIAE2AhggCSABIABrQQFqNgIcCyAJAn9BASALQQEQH0UNABpBAiALQQEQH0UNABogC0ECEB8iAEEDRwRAIABBA2oMAQsgC0EFEB8iAEEfRwRAIABBBmoMAQsgC0EHEB9BJWoLNgIkQQAhAQNAIAEiAEEBaiEBIAtBARAfDQALIAkgCSgCICAAajYCIAJAAkACfyAJKAIoIgBFBEAgAigC0CsgAygCHEG4CGxqKAIQIQAgCSgCMEUEQCAJKAIAQfABEBciAUUNBCAJIAE2AgAgASAJKAIwQRhsakEAQfABEBUaIAlBCjYCMAsgCSgCACIB/QwAAAAAAAAAAAAAAAAAAAAA/QsCACABQgA3AhBBAUEKQe0AIABBAXEbIABBBHEbIQpBAAwBCyAJKAIAIgEgAEEBayIMQRhsaiIKKAIEIAooAgxHDQEgAigC0CsgAygCHEG4CGxqKAIQIQogCSgCMCIMIABBAWpJBH8gASAMQQpqIgxBGGwQFyIBRQ0DIAkgATYCACABIAkoAjBBGGxqQQBB8AEQFRogCSAMNgIwIAkoAgAFIAELIABBGGxqIgH9DAAAAAAAAAAAAAAAAAAAAAD9CwIAIAFCADcCEAJ/QQEgCkEEcQ0AGkHtACAKQQFxRQ0AGkECQQJBASABQQxrKAIAIgpBCkYbIApBAUYbCyEKIAALIQwgASAKNgIMCyAJKAIkIQAgAigC0CsgAygCHEG4CGxqLQAQQcAAcQRAA0AgDEEYbCIOIAkoAgBqIABBASAMGyITNgIQIAkoAiAhFkEAIQogACEBIBNBAk8EQANAIApBAWohCiABQQNLIRsgAUEBdiEBIBsNAAsLIAogFmoiAUEhTwRAIA8gATYCECAIQQFBvPQAIA9BEGoQDwwDCyALIAEQHyEKIAkoAgAiASAOaiIOIAo2AhQgACAOKAIQayIAQQBMDQMgAigC0CsgAygCHEG4CGxqKAIQIQogCSgCMCIOIAxBAmpJBEAgASAOQQpqIg5BGGwQFyIBRQ0DIAkgATYCACABIAkoAjBBGGxqQQBB8AEQFRogCSAONgIwIAkoAgAhAQsgASAMQQFqIgxBGGxqIgH9DAAAAAAAAAAAAAAAAAAAAAD9CwIAIAFCADcCECABAn9BASAKQQRxDQAaQe0AIApBAXFFDQAaQQJBAkEBIAFBDGsoAgAiAUEKRhsgAUEBRhsLNgIMDAALAAsDQCAMQRhsIg4gCSgCAGoiASABKAIMIAEoAgRrIgEgACAAIAFKGyIBNgIQIAkoAiAhE0EAIQogAUECTwRAA0AgCkEBaiEKIAFBA0shHCABQQF2IQEgHA0ACwsgCiATaiIBQSFPBEAgDyABNgIAIAhBAUG89AAgDxAPDAILIAsgARAfIQogCSgCACIBIA5qIg4gCjYCFCAAIA4oAhBrIgBBAEwNAiACKALQKyADKAIcQbgIbGooAhAhCiAJKAIwIg4gDEECakkEQCABIA5BCmoiDkEYbBAXIgFFDQIgCSABNgIAIAEgCSgCMEEYbGpBAEHwARAVGiAJIA42AjAgCSgCACEBCyABIAxBAWoiDEEYbGoiAf0MAAAAAAAAAAAAAAAAAAAAAP0LAgAgAUIANwIQIAECf0EBIApBBHENABpB7QAgCkEBcUUNABpBAkECQQEgAUEMaygCACIBQQpGGyABQQFGGws2AgwMAAsACyALECwMBQsgCUFAayEJIBVBAWoiFSAYRw0ACwsgEEEkaiEQIBlBAWoiGSARKAIYSQ0ACwsgCxBkRQRAIAsQLAwBCyALKAIIIAsoAgBrIR0gCxAsIB0gDWohAQJAIAItAABBBHFFDQAgBygCACASKAIAIAFrakEBTQRAIAhBAkGYIUEAEA8MAQsCQCABLQAAQf8BRgRAIAEtAAFBkgFGDQELIAhBAkHCIUEAEA8MAQsgAUECaiEBCyASIBIoAgAgBygCACABa2o2AgAgByABNgIAQQEhFyAEQQE2AgAgBiAPKAIYIAVrNgIACyAPQSBqJAAgFwuWJAIUfw5+AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAJUDgUAAQIDBAoLAkAgACgCNCIGIAAoAsQBIgFJBEAgACgCQCIHIAFBAWpJDQELIAAoAuwBQQFB9D9BABAPDAwLIAAoAixFBEAgACgCJCECQQAhAQwFCyAAQQA2AiwgACgCRCEDQQEhAQwECwJAIAAoAjQiBiAAKALEASIBSQRAIAAoAkAiByABQQFqSQ0BCyAAKALsAUEBQaHAAEEAEA8MCwsgACgCLEUEQCAAKAIkIQRBACEBDAgLIABBADYCLCAAKAIwIQNBASEBDAcLAkAgACgCNCIEIAAoAsQBIgpJBEAgACgCQCIOIApBAWpJDQELIAAoAuwBQQFBqMEAQQAQDwwKCyAAKAIsRQRAIAAoAighCwwGCyAAQgA3AuQBIABBADYCLCAAKALIASEMA0AgDCAHQQR0aiIFKAIIIg8EQCAFKAIMIRJBACEBA0ACQCAPIAFBf3NqIhAgEiABQQR0aiIRKAIAaiIJQR9LDQAgBSgCACITQX8gCXZLDQAgACACIBMgCXQiCSACIAlJGyAJIAIbIgI2AuQBCwJAIBEoAgQgEGoiCUEfSw0AIAUoAgQiEEF/IAl2Sw0AIAAgAyAQIAl0IgkgAyAJSRsgCSADGyIDNgLoAQsgAUEBaiIBIA9HDQALCyAHQQFqIgcgCkcNAAsgAkUNByADRQ0HIAAtAABFBEAgACAAKALQATYCbCAAIAAoAswBNgJkIAAgACgC2AE2AnAgACAAKALUATYCaAsgACgCMCEFQQEhAQwFCwJAIAAoAjQiBSAAKALEASIJSQRAIAAoAkAiEiAJQQFqSQ0BCyAAKALsAUEBQfvAAEEAEA8MCQsgACgCLEUEQCAAKALIASINIAAoAhwiBEEEdGohCyAAKAIoIQgMBAsgAEIANwLkASAAQQA2AiwgACgCyAEhDQNAIA0gBkEEdGoiCigCCCIOBEAgCigCDCEQQQAhAQNAAkAgDiABQX9zaiIRIBAgAUEEdGoiEygCAGoiDEEfSw0AIAooAgAiFEF/IAx2Sw0AIAAgAiAUIAx0IgwgAiAMSRsgDCACGyICNgLkAQsCQCATKAIEIBFqIgxBH0sNACAKKAIEIhFBfyAMdksNACAAIAMgESAMdCIMIAMgDEkbIAwgAxsiAzYC6AELIAFBAWoiASAORw0ACwsgBkEBaiIGIAlHDQALIAJFDQYgA0UNBgJAIAAtAAAEQCAAKAJsIQYMAQsgACAAKALQASIGNgJsIAAgACgCzAE2AmQgACAAKALYATYCcCAAIAAoAtQBNgJoC0EBIQEMAwsCQCAAKAI0IgYgACgCxAEiAUkEQCAAKAJAIg8gAUEBakkNAQsgACgC7AFBAUHOwABBABAPDAYLIAAoAixFBEAgACgCyAEgACgCHCIGQQR0aiEFIAAoAighB0EAIQEMAgsgACAGNgIcIABBADYCLEEBIQEMAQsDQAJ/AkAgAUUEQCACQQFqIQIMAQsgACADNgIoIAAoAjggA00NCSAAKAIwIQRBAAwBC0EBCyEBA0ACQAJAAkACQCABRQRAIAAgBDYCICAEIAAoAjxPDQEgACAGNgIcIAYhAUEAIQUMBAsgACACNgIkIAAoAkwgAk0EQCAAKAIcIQFBASEFDAQLIAAoAhAgACgCIGwgACgCDCAAKAIobGogACgCFCAAKAIcbGogACgCGCACbGoiASAAKAIITwRADAwLIAAoAgQgAUEBdGoiAS8BAA0BDA0LIAAoAihBAWohAwwBC0EAIQEMAwtBASEBDAILA0ACQAJAAkAgBUUEQCABIAdPDQEgACgCICIFIAAoAsgBIAFBBHRqIg0oAghPDQMgAC0AAEUEQCAAIA0oAgwgBUEEdGoiASgCDCABKAIIbDYCTAsgACgCSCECQQEhAQwFCyAAIAFBAWoiATYCHAwBCyAAKAIgQQFqIQRBACEBDAMLQQAhBQwBC0EBIQUMAAsACwALAAsDQAJ/AkAgAUUEQCAAIAdBAWoiBzYCKAwBCyAGIA9PDQggAEIANwLkASAAKALIASAGQQR0aiIFKAIIIgtFDQggBSgCDCEKQQAhAkEAIQRBACEBA0ACQCALIAFBf3NqIgkgCiABQQR0aiIOKAIAaiIIQR9LDQAgBSgCACIMQX8gCHZLDQAgACAEIAwgCHQiCCAEIAhJGyAIIAQbIgQ2AuQBCwJAIA4oAgQgCWoiCEEfSw0AIAUoAgQiCUF/IAh2Sw0AIAAgAiAJIAh0IgggAiAISRsgCCACGyICNgLoAQsgAUEBaiIBIAtHDQALIARFDQYgAkUNBgJAIAAtAAAEQCAAKAJsIQIMAQsgACAAKALQASICNgJsIAAgACgCzAE2AmQgACAAKALYATYCcCAAIAAoAtQBNgJoC0EADAELQQELIQEDQAJAAkACQAJAIAFFBEAgACACNgLgASACIAAoAnBPDQEgACgCZCENQQAhAQwECyAAKAI4IAdNBEAgACgCICEDQQEhAQwECyAAKAIQIAAoAiBsIAAoAgwgB2xqIAAoAhQgBmxqIAAoAhggACgCJGxqIgEgACgCCE8EQAwLCyAAKAIEIAFBAXRqIgEvAQANAQwMCyAAIAZBAWoiBjYCHAwBC0EAIQEMAwtBASEBDAILA0ACQAJAAkAgAAJ/IAFFBEAgACANNgLcASANIAAoAmhPDQIgACgCMAwBCyADQQFqCyIDNgIgIAAoAjwiASAFKAIIIgQgASAESRsgA0sEQCAFKAIAIgEgAa0iHiAEIANBf3NqIgitIhaGIhcgFoinRw0DIAUoAgQiBEJ/IBaIp3EgBEcNAyAErSIVIBaGIhhCAX0iGSAANQLYAXwgGIAhHyAZIAAoAtABIgmtfCAYgCEaIBdCAX0iGyAANQLUAXwgF4AhICAbIAAoAswBIg6tfCAXgCEcIAFCfyAFKAIMIANBBHRqIgsoAgAiCiAIaq0iHYincSABRw0DIAQgFSALKAIEIgEgCGqtIhWGIiEgFYinRw0DIAAoAuABIgStIiIgIYJCAFIEQCAEIAlHDQRCfyAVhkJ/hSAaQv////8PgyAWhoNQDQQLIAAoAtwBIgStIhUgHiAdhoJCAFIEQCAEIA5HDQRCfyAdhkJ/hSAcQv////8PgyAWhoNQDQQLIAsoAggiBEUNAyALKAIMRQ0DIBynIgsgIKdGDQMgGqciCCAfp0YNAyAAIAAoAkQiBzYCKCAAIBUgG3wgF4CnIAp2IAsgCnZrIBkgInwgGICnIAF2IAggAXZrIARsajYCJEEBIQEMBQsgACgC3AEiASAAKALkASIEaiABIARwayENDAELIAAoAuABIgEgACgC6AEiBGogASAEcGshAkEAIQEMAwtBACEBDAELQQEhAQwACwALAAsACwNAAn8CQCABRQRAIAAgCEEBaiIINgIoDAELIAAgBjYC4AEgACgCcCAGTQ0HIAAoAmQhD0EADAELQQELIQEDQAJAAkACQAJAIAFFBEAgACAPNgLcASAPIAAoAmhPDQEgACAFNgIcIAUhBEEAIQEMBAsgACgCOCAITQRAIAAoAiAhB0EBIQEMBAsgACgCECAAKAIgbCAAKAIMIAhsaiAAKAIUIARsaiAAKAIYIAAoAiRsaiIBIAAoAghPBEAMCgsgACgCBCABQQF0aiIBLwEADQEMCwsgACgC4AEiASAAKALoASIGaiABIAZwayEGDAELQQAhAQwDC0EBIQEMAgsDQAJAAkACQAJAIAFFBEAgBCASTw0CIAAgACgCMCIHNgIgIA0gBEEEdGohCwwBCyAAIAdBAWoiBzYCIAsgACgCPCIBIAsoAggiAiABIAJJGyAHSwRAIAsoAgAiASABrSIeIAIgB0F/c2oiCq0iFoYiFyAWiKdHDQMgCygCBCICQn8gFoincSACRw0DIAKtIhUgFoYiGEIBfSIZIAA1AtgBfCAYgCEfIBkgACgC0AEiDq18IBiAIRogF0IBfSIbIAA1AtQBfCAXgCEgIBsgACgCzAEiDK18IBeAIRwgAUJ/IAsoAgwgB0EEdGoiAygCACIJIApqrSIdiKdxIAFHDQMgAiAVIAMoAgQiASAKaq0iFYYiISAViKdHDQMgACgC4AEiAq0iIiAhgkIAUgRAIAIgDkcNBEJ/IBWGQn+FIBpC/////w+DIBaGg1ANBAsgACgC3AEiAq0iFSAeIB2GgkIAUgRAIAIgDEcNBEJ/IB2GQn+FIBxC/////w+DIBaGg1ANBAsgAygCCCICRQ0DIAMoAgxFDQMgHKciAyAgp0YNAyAapyIKIB+nRg0DIAAgACgCRCIINgIoIAAgFSAbfCAXgKcgCXYgAyAJdmsgGSAifCAYgKcgAXYgCiABdmsgAmxqNgIkQQEhAQwFCyAAIARBAWoiBDYCHAwBCyAAKALcASIBIAAoAuQBIgJqIAEgAnBrIQ9BACEBDAMLQQAhAQwBC0EBIQEMAAsACwALAAsDQAJ/AkAgAUUEQCAAIAtBAWoiCzYCKAwBCyAAIAU2AiAgACgCPCAFTQ0GIAAoAmwhCEEADAELQQELIQEDQAJAAkACQAJAIAFFBEAgACAINgLgASAIIAAoAnBPDQEgACgCZCENQQAhAQwECyAAKAI4IAtNBEAgACgCHCEGQQEhAQwECyAAKAIQIAAoAiBsIAAoAgwgC2xqIAAoAhQgACgCHGxqIAAoAhggACgCJGxqIgEgACgCCE8EQAwJCyAAKAIEIAFBAXRqIgEvAQANAQwKCyAAKAIgQQFqIQUMAQtBACEBDAMLQQEhAQwCCwNAAkACQAJAAkAgAUUEQCAAIA02AtwBIA0gACgCaE8NAiAAIAQ2AhwgBCEGDAELIAAgBkEBaiIGNgIcCyAGIA5JBEAgACgCICIHIAAoAsgBIAZBBHRqIgEoAggiA08NAyABKAIAIgIgAq0iHiADIAdBf3NqIgqtIhaGIhcgFoinRw0DIAEoAgQiA0J/IBaIp3EgA0cNAyADrSIVIBaGIhhCAX0iGSAANQLYAXwgGIAhHyAZIAAoAtABIg+tfCAYgCEaIBdCAX0iGyAANQLUAXwgF4AhICAbIAAoAswBIgmtfCAXgCEcIAJCfyABKAIMIAdBBHRqIgEoAgAiByAKaq0iHYincSACRw0DIAMgFSABKAIEIgIgCmqtIhWGIiEgFYinRw0DIAAoAuABIgOtIiIgIYJCAFIEQCADIA9HDQRCfyAVhkJ/hSAaQv////8PgyAWhoNQDQQLIAAoAtwBIgOtIhUgHiAdhoJCAFIEQCADIAlHDQRCfyAdhkJ/hSAcQv////8PgyAWhoNQDQQLIAEoAggiA0UNAyABKAIMRQ0DIBynIgEgIKdGDQMgGqciCiAfp0YNAyAAIAAoAkQiCzYCKCAAIBUgG3wgF4CnIAd2IAEgB3ZrIBkgInwgGICnIAJ2IAogAnZrIANsajYCJEEBIQEMBQsgACgC3AEiASAAKALkASICaiABIAJwayENDAELIAAoAuABIgEgACgC6AEiAmogASACcGshCEEAIQEMAwtBACEBDAELQQEhAQwACwALAAsACwNAAn8CQCABRQRAIARBAWohBAwBCyAAIAM2AiAgACgCPCADTQ0FIAAoAkQhAkEADAELQQELIQEDQAJAAkACQAJAIAFFBEAgACACNgIoIAIgACgCOE8NASAAIAY2AhwgBiEBQQAhBQwECyAAIAQ2AiQgACgCTCAETQRAIAAoAhwhAUEBIQUMBAsgACgCECAAKAIgbCAAKAIMIAAoAihsaiAAKAIUIAAoAhxsaiAAKAIYIARsaiIBIAAoAghPBEAMCAsgACgCBCABQQF0aiIBLwEADQEMCQsgACgCIEEBaiEDDAELQQAhAQwDC0EBIQEMAgsDQAJAAkACQCAFRQRAIAEgB08NASAAKAIgIgUgACgCyAEgAUEEdGoiDSgCCE8NAyAALQAARQRAIAAgDSgCDCAFQQR0aiIBKAIMIAEoAghsNgJMCyAAKAJIIQRBASEBDAULIAAgAUEBaiIBNgIcDAELIAAoAihBAWohAkEAIQEMAwtBACEFDAELQQEhBQwACwALAAsAC0EADwsgACgC7AFBAUGaCkEAEA8LQQAPCyABQQE7AQBBAQuRCwEKfwJAIAEoAgAgBEEDbCIMdiIGQZCAgAFxDQAgACAAQRxqIg4gACgCbCAGQe8DcWotAABBAnRqIgo2AmggACAAKAIEIAooAgAiCSgCACIIayIGNgIEAkAgCCAAKAIAIgdBEHZLBEAgCSgCBCELIAAgCDYCBCAKIAlBCEEMIAYgCEkiBhtqKAIANgIAIAsgC0UgBhshCSAAKAIIIQYDQAJAIAYNACAAKAIQIgZBAWohCyAGLQABIQogBi0AAEH/AUYEQCAKQZABTwRAIAAgACgCDEEBajYCDCAHQYD+A2ohB0EIIQYMAgsgACALNgIQIAcgCkEJdGohB0EHIQYMAQsgACALNgIQQQghBiAHIApBCHRqIQcLIAAgBkEBayIGNgIIIAAgB0EBdCIHNgIAIAAgCEEBdCIINgIEIAhBgIACSQ0ACyAIIQYMAQsgACAHIAhBEHRrIgc2AgAgBkGAgAJxRQRAIAkoAgQhCyAKIAlBDEEIIAYgCEkiCBtqKAIANgIAIAtFIAsgCBshCSAAKAIIIQgDQAJAIAgNACAAKAIQIghBAWohCyAILQABIQogCC0AAEH/AUYEQCAKQZABTwRAIAAgACgCDEEBajYCDCAHQYD+A2ohB0EIIQgMAgsgACALNgIQIAcgCkEJdGohB0EHIQgMAQsgACALNgIQQQghCCAHIApBCHRqIQcLIAAgCEEBayIINgIIIAAgB0EBdCIHNgIAIAAgBkEBdCIGNgIEIAZBgIACSQ0ACwwBCyAJKAIEIQkLIAlFDQAgACAOIAEoAgQgDEERanZBBHEgAUEEayINKAIAIAxBE2p2QQFxIAEoAgAiCCAMQRBqdkHAAHEgCCAMdkGqAXFyIAggDEEMakEOIAQbdkEQcXJyciIPQdC5AWotAABBAnRqIgs2AmggACAGIAsoAgAiCigCACIIayIGNgIEAkAgCCAHQRB2SwRAIAooAgQhCSAAIAg2AgQgCyAKQQhBDCAGIAhJIgYbaigCADYCACAJIAlFIAYbIQogACgCCCEGA0ACQCAGDQAgACgCECIGQQFqIQsgBi0AASEJIAYtAABB/wFGBEAgCUGQAU8EQCAAIAAoAgxBAWo2AgwgB0GA/gNqIQdBCCEGDAILIAAgCzYCECAHIAlBCXRqIQdBByEGDAELIAAgCzYCEEEIIQYgByAJQQh0aiEHCyAAIAZBAWsiBjYCCCAAIAdBAXQiBzYCACAAIAhBAXQiCDYCBCAIQYCAAkkNAAsMAQsgACAHIAhBEHRrIgk2AgAgBkGAgAJxRQRAIAooAgQhByALIApBDEEIIAYgCEkiCBtqKAIANgIAIAdFIAcgCBshCiAAKAIIIQcDQAJAIAcNACAAKAIQIgdBAWohCyAHLQABIQggBy0AAEH/AUYEQCAIQZABTwRAIAAgACgCDEEBajYCDCAJQYD+A2ohCUEIIQcMAgsgACALNgIQIAkgCEEJdGohCUEHIQcMAQsgACALNgIQQQghByAJIAhBCHRqIQkLIAAgB0EBayIHNgIIIAAgCUEBdCIJNgIAIAAgBkEBdCIGNgIEIAZBgIACSQ0ACwwBCyAKKAIEIQoLIAJBACADayADIAogD0HQuwFqLQAAcyIDGzYCACANIA0oAgBBICAMdHI2AgAgASABKAIAIANBE3RBEHIgDHRyNgIAIAEgASgCBEEIIAx0cjYCBCAEIAVyRQRAIAFBfiAAKAJ8a0ECdGoiAiACKAIEQYCAAnI2AgQgAiACKAIAIANBH3RyQYCABHI2AgAgAkEEayICIAIoAgBBgIAIcjYCAAsgBEEDRw0AIAEgACgCfEECdGoiAEEEaiAAKAIEQQRyNgIAIAAgACgCDEEBcjYCDCAAIAAoAgggA0ESdHJBAnI2AggLC6sLAQl/AkAgASgCACAEQQNsIg12IgdBkICAAXENACAHQe8DcSIHRQ0AIAAgAEEcaiIOIAAoAmwgB2otAABBAnRqIgs2AmggACAAKAIEIAsoAgAiCigCACIJayIHNgIEAkAgCSAAKAIAIghBEHZLBEAgCigCBCEMIAAgCTYCBCALIApBCEEMIAcgCUkiBxtqKAIANgIAIAwgDEUgBxshCiAAKAIIIQcDQAJAIAcNACAAKAIQIgdBAWohDCAHLQABIQsgBy0AAEH/AUYEQCALQZABTwRAIAAgACgCDEEBajYCDCAIQYD+A2ohCEEIIQcMAgsgACAMNgIQIAggC0EJdGohCEEHIQcMAQsgACAMNgIQQQghByAIIAtBCHRqIQgLIAAgB0EBayIHNgIIIAAgCEEBdCIINgIAIAAgCUEBdCIJNgIEIAlBgIACSQ0ACyAJIQcMAQsgACAIIAlBEHRrIgg2AgAgB0GAgAJxRQRAIAooAgQhDCALIApBDEEIIAcgCUkiCRtqKAIANgIAIAxFIAwgCRshCiAAKAIIIQkDQAJAIAkNACAAKAIQIglBAWohDCAJLQABIQsgCS0AAEH/AUYEQCALQZABTwRAIAAgACgCDEEBajYCDCAIQYD+A2ohCEEIIQkMAgsgACAMNgIQIAggC0EJdGohCEEHIQkMAQsgACAMNgIQQQghCSAIIAtBCHRqIQgLIAAgCUEBayIJNgIIIAAgCEEBdCIINgIAIAAgB0EBdCIHNgIEIAdBgIACSQ0ACwwBCyAKKAIEIQoLAkAgCkUNACAAIA4gASgCBCANQRFqdkEEcSABQQRrIg8oAgAgDUETanZBAXEgASgCACIJIA1BEGp2QcAAcSAJIA12QaoBcXIgCSANQQxqQQ4gBBt2QRBxcnJyIgpB0LkBai0AAEECdGoiDDYCaCAAIAcgDCgCACILKAIAIglrIgc2AgQgCkHQuwFqLQAAIQ4CQCAJIAhBEHZLBEAgCygCBCEKIAAgCTYCBCAMIAtBCEEMIAcgCUkiBxtqKAIANgIAIAogCkUgBxshCyAAKAIIIQcDQAJAIAcNACAAKAIQIgdBAWohDCAHLQABIQogBy0AAEH/AUYEQCAKQZABTwRAIAAgACgCDEEBajYCDCAIQYD+A2ohCEEIIQcMAgsgACAMNgIQIAggCkEJdGohCEEHIQcMAQsgACAMNgIQQQghByAIIApBCHRqIQgLIAAgB0EBayIHNgIIIAAgCEEBdCIINgIAIAAgCUEBdCIJNgIEIAlBgIACSQ0ACwwBCyAAIAggCUEQdGsiCjYCACAHQYCAAnFFBEAgCygCBCEIIAwgC0EMQQggByAJSSIJG2ooAgA2AgAgCEUgCCAJGyELIAAoAgghCANAAkAgCA0AIAAoAhAiCEEBaiEMIAgtAAEhCSAILQAAQf8BRgRAIAlBkAFPBEAgACAAKAIMQQFqNgIMIApBgP4DaiEKQQghCAwCCyAAIAw2AhAgCiAJQQl0aiEKQQchCAwBCyAAIAw2AhBBCCEIIAogCUEIdGohCgsgACAIQQFrIgg2AgggACAKQQF0Igo2AgAgACAHQQF0Igc2AgQgB0GAgAJJDQALDAELIAsoAgQhCwsgAkEAIANrIAMgCyAOcyICGzYCACAPIA8oAgBBICANdHI2AgAgASABKAIAIAJBE3RBEHIgDXRyNgIAIAEgASgCBEEIIA10cjYCBCAEIAZyRQRAIAEgBUECdGsiACAAKAIEQYCAAnI2AgQgACAAKAIAIAJBH3RyQYCABHI2AgAgAEEEayIAIAAoAgBBgIAIcjYCAAsgBEEDRw0AIAEgBUECdGoiACAAKAIEQQFyNgIEIAAgACgCACACQRJ0ckECcjYCACAAQQRrIgAgACgCAEEEcjYCAAsgASABKAIAQYCAgAEgDXRyNgIACwutAQAgAEHwnQE2AmQgAEHwnQE2AmAgAEHwnQE2AlwgAEHwnQE2AlggAEHwnQE2AlQgAEHwnQE2AlAgAEHwnQE2AkwgAEHwnQE2AkggAEHwnQE2AkQgAEHwnQE2AkAgAEHwnQE2AjwgAEHwnQE2AjggAEHwnQE2AjQgAEHwnQE2AjAgAEHwnQE2AiwgAEHwnQE2AiggAEHwnQE2AiQgAEHwnQE2AiAgAEHwnQE2AhwLkgYCCX8EfiAAIAE2AgAgAP0MAAAAAAAAAAAAAAAAAAAAAP0LAwggACADNgIcIAAgAkEBayIFNgIYIAFBA3EhCgJ/IAJBAEwEQCABIQQgAwwBCyAAIAFBAWoiBDYCACABLQAACyEBQQghByAAQQg2AhAgACABrSINNwMIIAAgDUL/AYMiDkL/AVEiCTYCFAJAIApBA0YNACAAIAJBAmsiCDYCGAJ/IAJBAkgEQCAEIQEgAwwBCyAAIARBAWoiATYCACAELQAACyEEIABBD0EQIA5C/wFRGyIHNgIQIAAgBK0iDkL/AYMiD0L/AVEiCTYCFCAAIA5CCIYgDYQiDTcDCCAKQQJGBEAgASEEIAUhAiAIIQUMAQsgACACQQNrIgs2AhggAAJ/IAJBA0gEQCABIQYgAwwBCyAAIAFBAWoiBjYCACABLQAAC60iDkL/AYMiEEL/AVEiCTYCFCAAQQdBCCAPQv8BURsgB2oiATYCECAAIA4gB62GIA2EIg03AwggCkEBRgRAIAYhBCABIQcgCCECIAshBQwBCyAAIAJBBGsiBTYCGCAAAn8gAkEESARAIAYhBCADDAELIAAgBkEBaiIENgIAIAYtAAALrSIOQv8Bg0L/AVEiCTYCFCAAQQdBCCAQQv8BURsgAWoiBzYCECAAIA4gAa2GIA2EIg03AwggCyECCwJAIAJBBU4EQCAEKAIAIQMgACACQQVrNgIYIAAgBEEEajYCAAwBC0EAIQFBf0EAIAMbIQMgAkECSA0AA0AgACAEQQFqIgI2AgAgBC0AACEEIAAgBUEBayIGNgIYIANB/wEgAXRBf3NxIAQgAXRyIQMgAUEIaiEBIAVBAUshDCACIQQgBiEFIAwNAAsLIAAgA0EYdiIBQf8BRjYCFCAAQQdBCCAJGyICQQdBCCADQf8BcSIEQf8BRhtqIgVBB0EIIANBCHZB/wFxIgZB/wFGG2oiCEEHQQggA0EQdkH/AXEiA0H/AUYbIAdqajYCECAAIAYgAnQgAyAFdHIgASAIdHIgBHKtIAethiANhDcDCAu2BQISfwJ+An8gACgCHCABQZgBbGoiAkGQAWsoAgAgAkGYAWsoAgBrIgMhBSACQYwBaygCACACQZQBaygCAGsiAiEGQcAAIAMgA0HAAE8bIQNBwAAgAiACQcAATxshBAJAIAVFDQAgBkUNACADRQ0AIARFDQBBfyAEbkECdiADSQ0AQQFBHBATIgIgBDYCDCACIAM2AgggAiAGNgIEIAIgBTYCACACIAStIhQgBq18QgF9IBSAIhSnIgQ2AhQgAiADrSIVIAWtfEIBfSAVgCIVpyIDNgIQAkAgFEL/////D4MgFUL/////D4N+QiCIpw0AIAJBBCADIARsEBMiAzYCGCADRQ0AIAIMAgsgAhAQC0EACyIJRQRAQQAPCwJAIAEEQANAIA5BmAFsIg8gACgCHGoiBSgCGCICBEAgBUEcaiEQIAUoAhQhAyAFKAIQIQRBACEKA0AgAyAEbARAIBAgCkEkbGohBkEAIQsDQCAGKAIUIAtBKGxqIggoAhQiAiAIKAIQIgdsBEBBACEEA0AgCCgCGCAEQQZ0aiIDKAI8IhEEQCADKAIMIQcgAygCFCESIAMoAhAhDCADKAIIIhMgBigCAGshAyAGKAIQIg1BAXEEQCAAKAIcIA9qIgJBkAFrKAIAIANqIAJBmAFrKAIAayEDCyAHIAYoAgRrIQIgDUECcQRAIAIgACgCHCAPaiINQYwBaygCAGogDUGUAWsoAgBrIQILIAkgAyACIAMgDCATayIMaiASIAdrIAJqIBFBASAMQQAQJkUNCSAIKAIQIQcgCCgCFCECCyAEQQFqIgQgAiAHbEkNAAsgBSgCECEEIAUoAhQhAwsgC0EBaiILIAMgBGxJDQALIAUoAhghAgsgCkEBaiIKIAJJDQALCyAOQQFqIg4gAUcNAAsLIAkPCyAJECNBAAvQDAIQfwZ7IAAoAggiCyAAKAIEaiEHAkAgACgCDEUEQCAHQQJIDQEgASgCACABIAtBAnRqIg0oAgAiBEEBakEBdWshAyAAKAIAIQYCQCAHQQRJBEAgBCECDAELIAdBBGsiAEEBdiIJQQFqIQwCQCAAQRZJBEBBASEADAELIAYgASALQQJ0aiIFIAlBAnQiAmpBCGpJIAYgCUEDdGpBCGoiACAFQQRqS3EEQEEBIQAMAQsgBiABIAJqQQhqSSABQQRqIABJcQRAQQEhAAwBCyAMQfz///8HcSIFQQFyIQAgBUEBdCEIIAT9ESESIAP9ESET/QwAAAAAAgAAAAQAAAAGAAAAIRZBACECA0AgASACQQJ0QQRyIgNq/QACACEVIAMgDWr9AAIAIRQgBiACQQN0aiIDIBP9WgIAAyADQQhqIBUgFCASIBT9DQwNDg8QERITFBUWFxgZGhsiFf2uAf0MAgAAAAIAAAACAAAAAgAAAP2uAUEC/awB/bEBIhL9WgIAACADQRBqIBL9WgIAASADQRhqIBL9WgIAAiAGIBb9DAEAAAABAAAAAQAAAAEAAAD9UCIX/RsAQQJ0aiASIBMgEv0NDA0ODxAREhMUFRYXGBkaG/2uAUEB/awBIBX9rgEiE/1aAgAAIAYgF/0bAUECdGogE/1aAgABIAYgF/0bAkECdGogE/1aAgACIAYgF/0bA0ECdGogE/1aAgADIBb9DAgAAAAIAAAACAAAAAgAAAD9rgEhFiASIRMgFCESIAJBBGoiAiAFRw0ACyAS/RsDIQIgE/0bAyEDIAUgDEYNASACIQQLA0AgASAAQQJ0IgJqKAIAIQkgAiANaigCACECIAYgCEECdGoiBSADNgIAIAUgAyAJIAIgBGpBAmpBAnVrIgNqQQF1IARqNgIEIAhBAmohCCAAIAxHIRAgAiEEIABBAWohACAQDQALCyAGIAhBAnRqIAM2AgBBfCEAIAdBAXEEfyAGIAdBAWsiAEECdGogASAAQQF0aigCACACQQFqQQF1ayIANgIAIAAgA2pBAXUhA0F4BUF8CyAGIAdBAnQiAGpqIAIgA2o2AgAgASAGIAAQEhoPCwJAAkACQCAHQQFrDgIAAQILIAEgASgCAEECbTYCAA8LIAAoAgAiBCABKAIAIAEgC0ECdGoiAygCAEEBakEBdWsiADYCBCAEIAAgAygCAGo2AgAgASAEKQIANwIADwsgB0EDSA0AIAAoAgAiCiABKAIAIAEgC0ECdGoiDigCBCIEIA4oAgAiAGpBAmpBAnVrIgMgAGo2AgBBASEIAkAgB0ECayIGIAdBAXEiDEUiAGtBAkkEQCAEIQIMAQsgByAAa0EEayIAQQF2IgJBAWohDwJAAkAgAEEWSQ0AIApBBGoiBSABIAJBAnQiAGpBCGpJIAogAkEDdGpBDGoiAiABQQRqS3ENACAFIAAgASALQQJ0aiIAakEMakkgAEEIaiACSXENACAPQXxxIgVBAXIhACAFQQF0QQFyIQggBP0RIRMgA/0RIRJBACECA0AgCiACQQN0aiIEIAEgAkECdCIDav0AAgQgEyADIA5q/QACCCIT/Q0MDQ4PEBESExQVFhcYGRobIhUgE/2uAf0MAgAAAAIAAAACAAAAAgAAAP2uAUEC/awB/bEBIhQgFCASIBT9DQwNDg8QERITFBUWFxgZGhv9rgFBAf2sASAV/a4BIhX9DQQFBgcYGRobCAkKCxwdHh/9CwIUIAQgEiAV/Q0MDQ4PEBESEwABAgMUFRYXIBT9DQABAgMEBQYHEBESEwwNDg/9CwIEIBQhEiACQQRqIgIgBUcNAAsgE/0bAyECIBL9GwMhAyAFIA9GDQIgAiEEDAELQQEhAAsDQCABIABBAnRqKAIAIQ0gDiAAQQFqIgVBAnRqKAIAIQIgCiAIQQJ0aiIJIAM2AgAgCSADIA0gAiAEakECakECdWsiA2pBAXUgBGo2AgQgCEECaiEIIAAgD0chESACIQQgBSEAIBENAAsLIAogCEECdGogAzYCAAJAIAxFBEAgCiAGQQJ0aiABIAdBAXRqQQRrKAIAIAJBAWpBAXVrIgAgA2pBAXUgAmo2AgAMAQsgAiADaiEACyAKIAdBAnQiA2pBBGsgADYCACABIAogAxASGgsLoAcDA30DewJ/IANBCE8EQCADQQN2IQsDQCAB/QAEACEHIAAgAP0ABAAiCCAC/QAEACIJ/Qy8dLM/vHSzP7x0sz+8dLM//eYB/eQB/QsEACABIAggB/0MzzGwPs8xsD7PMbA+zzGwPv3mAf3lASAJ/Qzh0TY/4dE2P+HRNj/h0TY//eYB/eUB/QsEACACIAggB/0M5dDiP+XQ4j/l0OI/5dDiP/3mAf3kAf0LBAAgAf0ABBAhByAAIAD9AAQQIgggAv0ABBAiCf0MvHSzP7x0sz+8dLM/vHSzP/3mAf3kAf0LBBAgASAIIAf9DM8xsD7PMbA+zzGwPs8xsD795gH95QEgCf0M4dE2P+HRNj/h0TY/4dE2P/3mAf3lAf0LBBAgAiAIIAf9DOXQ4j/l0OI/5dDiP+XQ4j/95gH95AH9CwQQIAJBIGohAiABQSBqIQEgAEEgaiEAIApBAWoiCiALRw0ACwsCQCADQQdxIgNFDQAgASoCACEEIAAgAioCACIGQ7x0sz+UIAAqAgAiBZI4AgAgASAFIARDzzGwvpSSIAZD4dE2v5SSOAIAIAIgBSAEQ+XQ4j+UkjgCACADQQFGDQAgASoCBCEEIAAgAioCBCIGQ7x0sz+UIAAqAgQiBZI4AgQgASAFIARDzzGwvpSSIAZD4dE2v5SSOAIEIAIgBSAEQ+XQ4j+UkjgCBCADQQJGDQAgASoCCCEEIAAgAioCCCIGQ7x0sz+UIAAqAggiBZI4AgggASAFIARDzzGwvpSSIAZD4dE2v5SSOAIIIAIgBSAEQ+XQ4j+UkjgCCCADQQNGDQAgASoCDCEEIAAgAioCDCIGQ7x0sz+UIAAqAgwiBZI4AgwgASAFIARDzzGwvpSSIAZD4dE2v5SSOAIMIAIgBSAEQ+XQ4j+UkjgCDCADQQRGDQAgASoCECEEIAAgAioCECIGQ7x0sz+UIAAqAhAiBZI4AhAgASAFIARDzzGwvpSSIAZD4dE2v5SSOAIQIAIgBSAEQ+XQ4j+UkjgCECADQQVGDQAgASoCFCEEIAAgAioCFCIGQ7x0sz+UIAAqAhQiBZI4AhQgASAFIARDzzGwvpSSIAZD4dE2v5SSOAIUIAIgBSAEQ+XQ4j+UkjgCFCADQQZGDQAgASoCGCEEIAAgAioCGCIGQ7x0sz+UIAAqAhgiBZI4AhggASAFIARDzzGwvpSSIAZD4dE2v5SSOAIYIAIgBSAEQ+XQ4j+UkjgCGAsL4AECBn8DewJAIANFDQAgA0EETwRAIANBfHEhBgNAIAAgBEECdCIFaiIHIAf9AAIAIAIgBWoiB/0AAgAiCyABIAVqIgX9AAIAIgz9rgFBAv2sAf2xASIKIAv9rgH9CwIAIAUgCv0LAgAgByAKIAz9rgH9CwIAIARBBGoiBCAGRw0ACyADIAZGDQELA0AgACAGQQJ0IgRqIgUgBSgCACACIARqIgUoAgAiByABIARqIggoAgAiCWpBAnVrIgQgB2o2AgAgCCAENgIAIAUgBCAJajYCACAGQQFqIgYgA0cNAAsLC90BAQR/IwBBgAFrIgYkACAGIQUCQCABKAIMIAJBBHRqIgIoAgAiBEUEQCACIQEMAQsDQCAFIAI2AgAgBUEEaiEFIAQiASICKAIAIgQNAAsLQQAhBANAIAEoAggiAiAESARAIAEgBDYCCCAEIQILAkAgAiADTg0AA0AgAiABKAIETg0BAkAgAEEBEB8EQCABIAI2AgQMAQsgAkEBaiECCyACIANIDQALCyABIAI2AgggBSAGRwRAIAVBBGsiBSgCACEBIAIhBAwBCwsgASgCBCEHIAZBgAFqJAAgByADSAv9BgELfyMAQYACayIKJAACQCAARQRAQQAhAAwBCwJAIAEgACgCAEYEQCAAKAIEIAJGDQELIAAgAjYCBCAAIAE2AgAgCiACNgIAIAogATYCgAEgAiEEIAEhBQNAIAogByIMQQFqIgdBAnQiCGogBEEBakECbSIJNgIAIApBgAFqIAhqIAVBAWpBAm0iCDYCACAGIAQgBWwiC2ohBiAJIQQgCCEFIAtBAUsNAAsgACAGNgIIAkACQAJAAkAgBkUEQCAAKAIMIgRFDQIgAEEMaiEFDAELIAZBBHQiBCAAKAIQTQ0DIAAoAgwgBBAXIgENAiADQQFBmjFBABAPIABBDGoiBSgCACIERQ0BCyAEEBAgBUEANgIACyAAEBBBACEADAMLIAAgATYCDCABIAAoAhAiAmpBACAEIAJrEBUaIAAgBDYCECAAKAIEIQIgACgCACEBCyAAKAIMIQUgDARAQQAhAyAFIAEgAmxBBHRqIgQhBgNAAkAgCiADQQJ0IgFqKAIAIghBAEwNACAIQQFrIQtBACEJAkACQCAKQYABaiABaigCACICQQBMBEAgCEEBcSENQQAhByAIQQFHDQEgBiEBDAILA0AgBiEBIAIhBgNAAkAgBSAENgIAIAZBAUYEQCAFQRBqIQUgBEEQaiEEDAELIAUgBDYCECAEQRBqIQQgBUEgaiEFIAZBAkohDiAGQQJrIQYgDg0BCwsgBCABIAJBBHRqIAkgCSALRnJBAXEiBxshBiAEIAEgBxshBCAJQQFqIgkgCEcNAAsMAgsgCEH+////B3EhCANAIAcgC0YhASAHQQJqIQcgBCAGIAEbIgQhBiAEIQEgCUECaiIJIAhHDQALCyANRQRAIAQhBgwBCyAEIAEgAkEEdGogByAHIAtGckEBcSICGyEGIAQgASACGyEECyADQQFqIgMgDEcNAAsLIAVBADYCAAsgACgCCCIBRQ0AIAAoAgwhBCABQQRPBEAgAUF8cSECQQAhBQNAIARBADYCPCAEQucHNwI0IARBADYCLCAEQucHNwIkIARBADYCHCAEQucHNwIUIARBADYCDCAEQucHNwIEIARBQGshBCAFQQRqIgUgAkcNAAsLIAFBA3EiAUUNAEEAIQUDQCAEQQA2AgwgBELnBzcCBCAEQRBqIQQgBUEBaiIFIAFHDQALCyAKQYACaiQAIAALsQEBA38CQCAARQ0AIAAoAggiAUUNACAAKAIMIQAgAUEETwRAIAFBfHEhAwNAIABBADYCPCAAQucHNwI0IABBADYCLCAAQucHNwIkIABBADYCHCAAQucHNwIUIABBADYCDCAAQucHNwIEIABBQGshACACQQRqIgIgA0cNAAsLIAFBA3EiAUUNAEEAIQIDQCAAQQA2AgwgAELnBzcCBCAAQRBqIQAgAkEBaiICIAFHDQALCwv7BQEQfyMAQYACayIIJAACf0EBQRQQEyIGRQRAIAJBAUH0MEEAEA9BAAwBCyAGIAE2AgQgBiAANgIAIAggATYCACAIIAA2AoABA0AgCCAFIg1BAWoiBUECdCIHaiABQQFqQQJtIgM2AgAgCEGAAWogB2ogAEEBakECbSIHNgIAIAQgACABbCIJaiEEIAMhASAHIQAgCUEBSw0ACyAGIAQ2AgggBEUEQCAGEBBBAAwBCyAGIARBEBATIgM2AgwgA0UEQCACQQFB2hpBABAPIAYQEEEADAELIAYgBigCCCILQQR0NgIQIAMhACANBEAgAyAGKAIEIAYoAgBsQQR0aiIEIQEDQAJAIAggDkECdCICaigCACIJQQBMDQAgCUEBayEMQQAhBwJAIAhBgAFqIAJqKAIAIgJBAEwEQEEAIQUgCUEBRwRAIAlB/v///wdxIQoDQCAFIAxGIQ8gBUECaiEFIAEgBCAPGyIEIQEgB0ECaiIHIApHDQALCyAJQQFxDQEgBCEBDAILA0AgBCEFIAIhBANAAkAgACABNgIAIARBAUYEQCAAQRBqIQAgAUEQaiEBDAELIAAgATYCECABQRBqIQEgAEEgaiEAIARBAkohECAEQQJrIQQgEA0BCwsgASAFIAJBBHRqIAcgByAMRnJBAXEiChshBCABIAUgChshASAHQQFqIgcgCUcNAAsMAQsgASAEIAJBBHRqIAUgBSAMRnJBAXEiBRshESABIAQgBRshASARIQQLIA5BAWoiDiANRw0ACwsgAEEANgIAAkAgC0UNACALQQRPBEAgC0F8cSEAQQAhAQNAIANBADYCPCADQucHNwI0IANBADYCLCADQucHNwIkIANBADYCHCADQucHNwIUIANBADYCDCADQucHNwIEIANBQGshAyABQQRqIgEgAEcNAAsLIAtBA3EiAEUNAEEAIQEDQCADQQA2AgwgA0LnBzcCBCADQRBqIQMgAUEBaiIBIABHDQALCyAGCyESIAhBgAJqJAAgEgtTAQF/An8gAC0ADEH/AUYEQCAAQoD+g4DwADcCDEEAIAAoAggiASAAKAIETw0BGiAAIAFBAWo2AgggACABLQAAQYD+A3I2AgwLIABBADYCEEEBCwt+AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARBlIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLSQEBfwJAQQFBLBATIgEEQCABQQA2AhACQCAAQQBMBEAgAUEBQQgQEyIANgIkIABFDQEMAwsgAUEANgIMCyABEBALQQAhAQsgAQuRAgAgAEUEQEEADwsCfwJAIAFB/wBNDQACQEGU0AEoAgAoAgBFBEAgAUGAf3FBgL8DRg0CDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMAwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMAwsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMAwsLQZTHAUEZNgIAQX8MAQsgACABOgAAQQELC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC3MBBn8gACgCACIDLAAAQTBrIgFBCUsE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AyAAQRh2NgIUIAMgBDYCECADIABBCHZB/wFxNgIcIAMgAEEQdkH/AXE2AhggAkEBQc31ACADQRBqEA8MBwsgBSAITQRAIAYhBAwECyAFIQggBiAFEBciBA0DIAYQECACQQFB/w9BABAPQQAMBwsgBEECcUUEQCACQQFBwg9BABAPIAYQEEEADAcLIAAgBEH/////B3I2AmQgASAHIAVrrSINIAIgASgCKBEIACANUQ0DIAAtAGRBCHFFDQEgAkECQZIcQQAQDwsgBhAQQQEMBQsgAkEBQZIcQQAQDyAGEBBBAAwECyABIAQgBSACEBogBUcEQCACQQFBxBxBABAPIAQQEEEADAQLIAAgBCIGIAUgAiAKKAIEEQEADQALIAQQEEEADAILIAJBAUGiJUEAEA9BAAwBCyAGEBBBAAshDCADQfAAaiQAIAwL5gEBBn8gACgCCEE1IAIQJARAAkAgACgCCCIGKAIAIQMgBigCCCEFAkACQAJ/AkAgAwRAQQEhBCADQQFxIQcgA0EBRw0BQQAMAgsgBkEANgIADAILIANBfnEhAwNAAn9BACAERQ0AGkEAIAAgASACIAUoAgARAABFDQAaIAAgASACIAUoAgQRAABBAEcLIQQgBUEIaiEFIAhBAmoiCCADRw0ACyAERQshAyAHBEAgAw0CIAAgASACIAUoAgARAABBAEchBAsgBkEANgIAIARFDQILIAAoAgAaQQEPCyAGQQA2AgALC0EACwoAIAAoAgAaQQALFAAgACgCACIABEAgACABNgK4AQsLIQAgACgCACABEFMgAEEAOgB8IAAgASgCuEBBAXE2AoABCzIAIAJFBEBBAA8LIAAoAgAgASACIAMQSEUEQCADQQFBqS9BABAPQQAPCyAAIAIgAxBxC2kCAn8BfCMAQRBrIgMkACACBEADQCAAIANBCGoQRCABAn8gAysDCCIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAs2AgAgAUEEaiEBIABBCGohACAEQQFqIgQgAkcNAAsLIANBEGokAAuEAQICfwF9IwBBEGsiAyQAIAIEQANAIAMgAC0AADoADyADIAAtAAE6AA4gAyAALQACOgANIAMgAC0AAzoADCABAn8gAyoCDCIFi0MAAABPXQRAIAWoDAELQYCAgIB4CzYCACABQQRqIQEgAEEEaiEAIARBAWoiBCACRw0ACwsgA0EQaiQAC0sBAn8jAEEQayIDJAAgAgRAA0AgACADQQxqQQQQESABIAMoAgw2AgAgAUEEaiEBIABBBGohACAEQQFqIgQgAkcNAAsLIANBEGokAAtLAQJ/IwBBEGsiAyQAIAIEQANAIAAgA0EMakECEBEgASADKAIMNgIAIAFBBGohASAAQQJqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALSgECfyMAQRBrIgMkACACBEADQCAAIANBCGoQRCABIAMrAwi2OAIAIAFBBGohASAAQQhqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALaAECfyMAQRBrIgMkACACBEADQCADIAAtAAA6AA8gAyAALQABOgAOIAMgAC0AAjoADSADIAAtAAM6AAwgASADKgIMOAIAIAFBBGohASAAQQRqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALTAECfyMAQRBrIgMkACACBEADQCAAIANBDGpBBBARIAEgAygCDLM4AgAgAUEEaiEBIABBBGohACAEQQFqIgQgAkcNAAsLIANBEGokAAtMAQJ/IwBBEGsiAyQAIAIEQANAIAAgA0EMakECEBEgASADKAIMszgCACABQQRqIQEgAEECaiEAIARBAWoiBCACRw0ACwsgA0EQaiQAC6oIAg1/AXsjAEEQayIIJAACfyAAKAIIQRBGBEAgACgCnAEgACgCzAFBjCxsagwBCyAAKAIMCyEJAkAgAkUEQCADQQFB8B9BABAPDAELIAAoAkghBkEBIQQgASAIQQhqQQEQESAIKAIIIgVBAk8EQCADQQJBxsgAQQAQDwwBCyACIAVBAWpHBEBBACEEIANBAkHwH0EAEA8MAQsCQCAGKAIQIgNFDQAgCSgC0CshBCADQQhPBEAgA0F4cSEGQQAhAgNAIARBADYCvEMgBEEANgKEOyAEQQA2AswyIARBADYClCogBEEANgLcISAEQQA2AqQZIARBADYC7BAgBEEANgK0CCAEQcDDAGohBCACQQhqIgIgBkcNAAsLIANBB3EiA0UNAEEAIQIDQCAEQQA2ArQIIARBuAhqIQQgAkEBaiICIANHDQALCyAJKALoKyICBH8gAhAQIAlBADYC6CsgCCgCCAUgBQtFBEBBASEEDAELA0AgAUEBaiIBIAhBDGpBARARAkAgCSgCgCxF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KT0ALgAobnVsbCkAKCVkLCVkKSAAJXN9CgAJCSB9CgBbREVWXSBEdW1wIGFuIGltYWdlX2NvbXBfaGVhZGVyIHN0cnVjdCB7CgBbREVWXSBEdW1wIGFuIGltYWdlX2hlYWRlciBzdHJ1Y3QgewoASW1hZ2UgaW5mbyB7CgAJIGRlZmF1bHQgdGlsZSB7CgAlcwkgY29tcG9uZW50ICVkIHsKAAkJIGNvbXAgJWQgewoACSBUaWxlIGluZGV4OiB7CgAJIE1hcmtlciBsaXN0OiB7CgBDb2Rlc3RyZWFtIGluZGV4IGZyb20gbWFpbiBoZWFkZXI6IHsKAENvZGVzdHJlYW0gaW5mbyBmcm9tIG1haW4gaGVhZGVyOiB7CgBTdHJlYW0gZXJyb3Igd2hpbGUgcmVhZGluZyBKUDIgSGVhZGVyIGJveAoARm91bmQgYSBtaXNwbGFjZWQgJyVjJWMlYyVjJyBib3ggb3V0c2lkZSBqcDJoIGJveAoATWFsZm9ybWVkIEpQMiBmaWxlIGZvcm1hdDogZmlyc3QgYm94IG11c3QgYmUgSlBFRyAyMDAwIHNpZ25hdHVyZSBib3gKAE1hbGZvcm1lZCBKUDIgZmlsZSBmb3JtYXQ6IHNlY29uZCBib3ggbXVzdCBiZSBmaWxlIHR5cGUgYm94CgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUganBlZzIwMDAgYm94CgBOb3QgZW5vdWdoIG1lbW9yeSB3aXRoIEZUWVAgQm94CgBBIG1hcmtlciBJRCB3YXMgZXhwZWN0ZWQgKDB4ZmYtLSkgaW5zdGVhZCBvZiAlLjh4CgAJCSBtY3Q9JXgKAAkJCSBjYmxrc3R5PSUjeAoACQkJIGNzdHk9JSN4CgAJCSBwcmc9JSN4CgBJbnRlZ2VyIG92ZXJmbG93CgAJIHRkeD0ldSwgdGR5PSV1CgAJIHR3PSV1LCB0aD0ldQoACSB0eDA9JXUsIHR5MD0ldQoASW52YWxpZCBjb21wb25lbnQgaW5kZXg6ICV1CgBTdHJlYW0gdG9vIHNob3J0CgBNYXJrZXIgaGFuZGxlciBmdW5jdGlvbiBmYWlsZWQgdG8gcmVhZCB0aGUgbWFya2VyIHNlZ21lbnQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjdXJyZW50IHByZWNpbmN0IGNvZGVibG9jayBlbGVtZW50CgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQKAEVycm9yIHJlYWRpbmcgU1FjZCBvciBTUWNjIGVsZW1lbnQKAEEgQlBDQyBoZWFkZXIgYm94IGlzIGF2YWlsYWJsZSBhbHRob3VnaCBCUEMgZ2l2ZW4gYnkgdGhlIElIRFIgYm94ICglZCkgaW5kaWNhdGUgY29tcG9uZW50cyBiaXQgZGVwdGggaXMgY29uc3RhbnQKAEVycm9yIHdpdGggU0laIG1hcmtlcjogaWxsZWdhbCB0aWxlIG9mZnNldAoASW52YWxpZCBwcmVjaW5jdAoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGJhbmQgcHJlY2ludHMKAEZhaWxlZCB0byBkZWNvZGUgYWxsIHVzZWQgY29tcG9uZW50cwoAU2l6ZSBvZiBjb2RlIGJsb2NrIGRhdGEgZXhjZWVkcyBzeXN0ZW0gbGltaXRzCgBTaXplIG9mIHRpbGUgZGF0YSBleGNlZWRzIHN5c3RlbSBsaW1pdHMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBNQ1QgbWFya2VycwoAQ29ycnVwdGVkIFBQTSBtYXJrZXJzCgBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgdGlsZSByZXNvbHV0aW9ucwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIGNvbGxlY3Rpb25zCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzIDAgcGFsZXR0ZSBjb2x1bW5zCgBXZSBkbyBub3Qgc3VwcG9ydCBST0kgaW4gZGVjb2RpbmcgSFQgY29kZWJsb2NrcwoAQ2Fubm90IGhhbmRsZSBib3ggb2YgdW5kZWZpbmVkIHNpemVzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgd2l0aG91dCBzYW1lIG51bWJlciBvZiBpbmRpeGVzCgBJbnZhbGlkIHRpbGVjLT53aW5feHh4IHZhbHVlcwoAQ2Fubm90IGhhbmRsZSBib3ggb2YgbGVzcyB0aGFuIDggYnl0ZXMKAENhbm5vdCBoYW5kbGUgWEwgYm94IG9mIGxlc3MgdGhhbiAxNiBieXRlcwoAQ29tcG9uZW50IGluZGV4ICV1IHVzZWQgc2V2ZXJhbCB0aW1lcwoASW52YWxpZCBQQ0xSIGJveC4gUmVwb3J0cyAlZCBlbnRyaWVzCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUgbm9kZXMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtY3QgZGF0YSB3aXRoaW4gbXVsdGlwbGUgTUNUIHJlY29yZHMKAENhbm5vdCBkZWNvZGUgdGlsZSwgbWVtb3J5IGVycm9yCgBvcGpfajJrX2FwcGx5X25iX3RpbGVfcGFydHNfY29ycmVjdGlvbiBlcnJvcgoAUHJvYmxlbSB3aXRoIHNraXBwaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBQcm9ibGVtIHdpdGggcmVhZGluZyBKUEVHMjAwMCBib3gsIHN0cmVhbSBlcnJvcgoAVW5rbm93biBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCB0bCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBtaCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHRha2UgaW4gY2hhcmdlIFNJWiBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBUIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUFQgbWFya2VyCgBFcnJvciByZWFkaW5nIFNPVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExUIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ1QgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DVCBtYXJrZXIKAE5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIFNPUCBtYXJrZXIKAEV4cGVjdGVkIFNPUCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgTUNPIG1hcmtlcgoARXJyb3IgcmVhZGluZyBSR04gbWFya2VyCgBFcnJvciByZWFkaW5nIFBQTSBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgUFBNIG1hcmtlcgoARXJyb3IgcmVhZGluZyBUTE0gbWFya2VyCgBFcnJvciByZWFkaW5nIFBMTSBtYXJrZXIKAE5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIEVQSCBtYXJrZXIKAEV4cGVjdGVkIEVQSCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ1JHIG1hcmtlcgoAVW5rbm93biBwcm9ncmVzc2lvbiBvcmRlciBpbiBDT0QgbWFya2VyCgBVbmtub3duIFNjb2QgdmFsdWUgaW4gQ09EIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIFFDRCBtYXJrZXIKAENycm9yIHJlYWRpbmcgQ0JEIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQT0MgbWFya2VyCgBFcnJvciByZWFkaW5nIENPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNDIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ0MgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DQyBtYXJrZXIKAHJlcXVpcmVkIFNJWiBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBDT0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoAcmVxdWlyZWQgUUNEIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBqcGVnMjAwMCBmaWxlIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBoZWFkZXIKAEVycm9yIHdpdGggSlAgU2lnbmF0dXJlIDogYmFkIG1hZ2ljIG51bWJlcgoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgcHJldmlvdXMgbnVtYmVyIG9mIHRpbGUtcGFydCAoJWQpLCBnaXZpbmcgdXAKAEluIFNPVCBtYXJrZXIsIFRQU290ICglZCkgaXMgbm90IHZhbGlkIHJlZ2FyZHMgdG8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRpbGUtcGFydCAoaGVhZGVyKSAoJWQpLCBnaXZpbmcgdXAKAHRpbGVzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHJlc29sdXRpb24KAE1hcmtlciBpcyBub3QgY29tcGxpYW50IHdpdGggaXRzIHBvc2l0aW9uCgBQcm9ibGVtIHdpdGggc2VlayBmdW5jdGlvbgoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LCBJbnZhbGlkIGNibGt3L2NibGtoIGNvbWJpbmF0aW9uCgBJbnZhbGlkIG11bHRpcGxlIGNvbXBvbmVudCB0cmFuc2Zvcm1hdGlvbgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIG90aGVyIHRoYW4gYXJyYXkgZGVjb3JyZWxhdGlvbgoAVG9vIGxhcmdlIHZhbHVlIGZvciBOcHBtCgBOb3QgZW5vdWdoIGJ5dGVzIHRvIHJlYWQgTnBwbQoAYmFkIHBsYWNlZCBqcGVnIGNvZGVzdHJlYW0KAAkgTWFpbiBoZWFkZXIgc3RhcnQgcG9zaXRpb249JWxsaQoJIE1haW4gaGVhZGVyIGVuZCBwb3NpdGlvbj0lbGxpCgBNYXJrZXIgc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBUaWxlIHBhcnQgbGVuZ3RoIHNpemUgaW5jb25zaXN0ZW50IHdpdGggc3RyZWFtIGxlbmd0aAoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIGRhdGEgc3Bhbm5pbmcKAFdyb25nIGZsYWcKAEVycm9yIHdpdGggRlRZUCBzaWduYXR1cmUgQm94IHNpemUKAEVycm9yIHdpdGggSlAgc2lnbmF0dXJlIEJveCBzaXplCgBJbnZhbGlkIHByZWNpbmN0IHNpemUKAEluY29uc2lzdGVudCBtYXJrZXIgc2l6ZQoASW52YWxpZCBtYXJrZXIgc2l6ZQoARXJyb3Igd2l0aCBTSVogbWFya2VyIHNpemUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBhIG5ldyB2YWxpZGF0aW9uIHByb2NlZHVyZQoATm90IGVub3VnaCBtZW1vcnkgdG8gZGVjb2RlIHRpbGUKAEZhaWxlZCB0byBkZWNvZGUgdGhlIGNvZGVzdHJlYW0gaW4gdGhlIEpQMiBmaWxlCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgd2l0aCBpbmRpeCBzaHVmZmxlCgBDYW5ub3QgYWxsb2NhdGUgVGllciAxIGhhbmRsZQoATm8gZGVjb2RlZCBhcmVhIHBhcmFtZXRlcnMsIHNldCB0aGUgZGVjb2RlZCBhcmVhIHRvIHRoZSB3aG9sZSBpbWFnZQoATm90IGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIFRhZy10cmVlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWluaXRpYWxpemUgdGhlIHRhZyB0cmVlCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgdHJhbnNmb3JtYXRpb24gZm91bmQKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudC4gVW5zdXBwb3J0ZWQgTWl4ZWQgSFQgY29kZS1ibG9jayBzdHlsZSBmb3VuZAoAVGlsZSBZIGNvb3JkaW5hdGVzIGFyZSBub3Qgc3VwcG9ydGVkCgBUaWxlIFggY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAEltYWdlIGNvb3JkaW5hdGVzIGFib3ZlIElOVF9NQVggYXJlIG5vdCBzdXBwb3J0ZWQKAEpQRUcyMDAwIEhlYWRlciBib3ggbm90IHJlYWQgeWV0LCAnJWMlYyVjJWMnIGJveCB3aWxsIGJlIGlnbm9yZWQKAG9wal9qMmtfbWVyZ2VfcHB0KCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgU09UIG1hcmtlci4gVGlsZSBpbmRleCBhbGxvY2F0aW9uIGZhaWxlZAoASWdub3JpbmcgaWhkciBib3guIEZpcnN0IGloZHIgYm94IGFscmVhZHkgcmVhZAoAWnBwdCAldSBhbHJlYWR5IHJlYWQKAFpwcG0gJXUgYWxyZWFkeSByZWFkCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCBzeW50aGV0aXplZCAweEZGIG1hcmtlcnMgcmVhZAoACQkJIGNibGt3PTJeJWQKAAkJCSBjYmxraD0yXiVkCgAJCQkgcW50c3R5PSVkCgAlcyBkeD0lZCwgZHk9JWQKAAkJCSByb2lzaGlmdD0lZAoACQkJIG51bWdiaXRzPSVkCgAJCSBudW1sYXllcnM9JWQKACVzIG51bWNvbXBzPSVkCgBvcGpfanAyX2FwcGx5X2NkZWY6IGFjbj0lZCwgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogY249JWQsIG51bWNvbXBzPSVkCgAJCQkgbnVtcmVzb2x1dGlvbnM9JWQKAAkJIHR5cGU9JSN4LCBwb3M9JWxsaSwgbGVuPSVkCgAlcyBzZ25kPSVkCgAJCQkgcW1mYmlkPSVkCgAlcyBwcmVjPSVkCgAJCSBuYiBvZiB0aWxlLXBhcnQgaW4gdGlsZSBbJWRdPSVkCgAlcyB4MT0lZCwgeTE9JWQKACVzIHgwPSVkLCB5MD0lZAoARmFpbGVkIHRvIGRlY29kZSB0aWxlICVkLyVkCgBTZXR0aW5nIGRlY29kaW5nIGFyZWEgdG8gJWQsJWQsJWQsJWQKAEZhaWxlZCB0byBkZWNvZGUgY29tcG9uZW50ICVkCgBJbnZhbGlkIHZhbHVlIGZvciBudW1yZXNvbHV0aW9ucyA6ICVkLCBtYXggdmFsdWUgaXMgc2V0IGluIG9wZW5qcGVnLmggYXQgJWQKAEludmFsaWQgY29tcG9uZW50IG51bWJlcjogJWQsIHJlZ2FyZGluZyB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgJWQKAFRvbyBtYW55IFBPQ3MgJWQKAEludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBwYXJ0IGluZGV4IGZvciB0aWxlIG51bWJlciAlZC4gR290ICVkLCBleHBlY3RlZCAlZAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBudW1iZXIgb2YgY29tcG9uZW50IGlzIGlsbGVnYWwgLT4gJWQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaWVsYWIKAENhbm5vdCBhbGxvY2F0ZSBjYmxrLT5kZWNvZGVkX2RhdGEKAEZhaWxlZCB0byBtZXJnZSBQUFQgZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQTSBkYXRhCgBJbnZhbGlkIG51bWJlciBvZiBsYXllcnMgaW4gQ09EIG1hcmtlciA6ICVkIG5vdCBpbiByYW5nZSBbMS02NTUzNV0KACVzOiVkOmNvbG9yX2NteWtfdG9fcmdiCglDQU4gTk9UIENPTlZFUlQKACVzOiVkOmNvbG9yX2VzeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgAlczolZDpjb2xvcl9zeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgBTdHJlYW0gdG9vIHNob3J0LCBleHBlY3RlZCBTT1QKAFVuYWJsZSB0byBzZXQgdDEgaGFuZGxlIGFzIFRMUwoAU3RyZWFtIGRvZXMgbm90IGVuZCB3aXRoIEVPQwoAQ2Fubm90IGhhbmRsZSBib3ggc2l6ZXMgaGlnaGVyIHRoYW4gMl4zMgoAb3BqX3BpX25leHRfbHJjcCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcmxjcCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfY3BybCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcGNybCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcnBjbCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3QxX2RlY29kZV9jYmxrKCk6IHVuc3VwcG9ydGVkIGJwbm9fcGx1c19vbmUgPSAlZCA+PSAzMQoARmFpbGVkIHRvIGRlY29kZSB0aWxlIDEvMQoASW5zdWZmaWNpZW50IGRhdGEgZm9yIENNQVAgYm94LgoATmVlZCB0byByZWFkIGEgUENMUiBib3ggYmVmb3JlIHRoZSBDTUFQIGJveC4KAEluc3VmZmljaWVudCBkYXRhIGZvciBDREVGIGJveC4KAE51bWJlciBvZiBjaGFubmVsIGRlc2NyaXB0aW9uIGlzIGVxdWFsIHRvIHplcm8gaW4gQ0RFRiBib3guCgBTdHJlYW0gZXJyb3Igd2hpbGUgcmVhZGluZyBKUDIgSGVhZGVyIGJveDogbm8gJ2loZHInIGJveC4KAE5vbiBjb25mb3JtYW50IGNvZGVzdHJlYW0gVFBzb3Q9PVROc290LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IGJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAQm94IGxlbmd0aCBpcyBpbmNvbnNpc3RlbnQuCgBSZXNvbHV0aW9uIGZhY3RvciBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcmVzb2x1dGlvbiBpbiB0aGUgY29tcG9uZW50LgoAQ29tcG9uZW50IG1hcHBpbmcgc2VlbXMgd3JvbmcuIFRyeWluZyB0byBjb3JyZWN0LgoASW5jb21wbGV0ZSBjaGFubmVsIGRlZmluaXRpb25zLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gSW52YWxpZCBjb2RlYmxvY2sgbGVuZ3RoIHZhbHVlcy4KAFdlIGRvIG5vdCBzdXBwb3J0IG1vcmUgdGhhbiAzIGNvZGluZyBwYXNzZXMgaW4gYW4gSFQgY29kZWJsb2NrOyBUaGlzIGNvZGVibG9ja3MgaGFzICVkIHBhc3Nlcy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFRoZXJlIGFyZSAlZCB6ZXJvIGJpdHBsYW5lcyBpbiAlZCBiaXRwbGFuZXMuCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgdHJhbnNmb3JtYXRpb24gc3RhZ2VzLgoAVW5rbm93biBtYXJrZXIgaGFzIGJlZW4gZGV0ZWN0ZWQgYW5kIGdlbmVyYXRlZCBlcnJvci4KAENvZGVjIHByb3ZpZGVkIHRvIHRoZSBvcGpfc2V0dXBfZGVjb2RlciBmdW5jdGlvbiBpcyBub3QgYSBkZWNvbXByZXNzb3IgaGFuZGxlci4KAENvZGVjIHByb3ZpZGVkIHRvIHRoZSBvcGpfcmVhZF9oZWFkZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBUaWxlcyBkb24ndCBhbGwgaGF2ZSB0aGUgc2FtZSBkaW1lbnNpb24uIFNraXAgdGhlIE1DVCBzdGVwLgoATnVtYmVyIG9mIGNvbXBvbmVudHMgKCVkKSBpcyBpbmNvbnNpc3RlbnQgd2l0aCBhIE1DVC4gU2tpcCB0aGUgTUNUIHN0ZXAuCgBKUDIgYm94IHdoaWNoIGFyZSBhZnRlciB0aGUgY29kZXN0cmVhbSB3aWxsIG5vdCBiZSByZWFkIGJ5IHRoaXMgZnVuY3Rpb24uCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBXaGVuIHRoZSBudW1iZXIgb2YgemVybyBwbGFuZXMgYml0cGxhbmVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgYml0cGxhbmVzLCBvbmx5IHRoZSBjbGVhbnVwIHBhc3MgbWFrZXMgc2Vuc2UsIGJ1dCB3ZSBoYXZlICVkIHBhc3NlcyBpbiB0aGlzIGNvZGVibG9jay4gVGhlcmVmb3JlLCBvbmx5IHRoZSBjbGVhbnVwIHBhc3Mgd2lsbCBiZSBkZWNvZGVkLiBUaGlzIG1lc3NhZ2Ugd2lsbCBub3QgYmUgZGlzcGxheWVkIGFnYWluLgoASW1hZ2UgaGFzIGxlc3MgY29tcG9uZW50cyB0aGFuIGNvZGVzdHJlYW0uCgBOZWVkIHRvIGRlY29kZSB0aGUgbWFpbiBoZWFkZXIgYmVmb3JlIGJlZ2luIHRvIGRlY29kZSB0aGUgcmVtYWluaW5nIGNvZGVzdHJlYW0uCgBQc290IHZhbHVlIG9mIHRoZSBjdXJyZW50IHRpbGUtcGFydCBpcyBlcXVhbCB0byB6ZXJvLCB3ZSBhc3N1bWluZyBpdCBpcyB0aGUgbGFzdCB0aWxlLXBhcnQgb2YgdGhlIGNvZGVzdHJlYW0uCgBBIG1hbGZvcm1lZCBjb2RlYmxvY2sgdGhhdCBoYXMgbW9yZSB0aGFuIG9uZSBjb2RpbmcgcGFzcywgYnV0IHplcm8gbGVuZ3RoIGZvciAybmQgYW5kIHBvdGVudGlhbGx5IHRoZSAzcmQgcGFzcyBpbiBhbiBIVCBjb2RlYmxvY2suCgAJCQkgdGlsZS1wYXJ0WyVkXTogc3Rhcl9wb3M9JWxsaSwgZW5kX2hlYWRlcj0lbGxpLCBlbmRfcG9zPSVsbGkuCgBUaWxlICV1IGhhcyBUUHNvdCA9PSAwIGFuZCBUTnNvdCA9PSAwLCBidXQgbm8gb3RoZXIgdGlsZS1wYXJ0cyB3ZXJlIGZvdW5kLiBFT0MgaXMgYWxzbyBtaXNzaW5nLgoAQ29tcG9uZW50ICVkIGRvZXNuJ3QgaGF2ZSBhIG1hcHBpbmcuCgBBIGNvbmZvcm1pbmcgSlAyIHJlYWRlciBzaGFsbCBpZ25vcmUgYWxsIENvbG91ciBTcGVjaWZpY2F0aW9uIGJveGVzIGFmdGVyIHRoZSBmaXJzdCwgc28gd2UgaWdub3JlIHRoaXMgb25lLgoAVGhlIHNpZ25hdHVyZSBib3ggbXVzdCBiZSB0aGUgZmlyc3QgYm94IGluIHRoZSBmaWxlLgoAVGhlICBib3ggbXVzdCBiZSB0aGUgZmlyc3QgYm94IGluIHRoZSBmaWxlLgoAVGhlIGZ0eXAgYm94IG11c3QgYmUgdGhlIHNlY29uZCBib3ggaW4gdGhlIGZpbGUuCgBGYWlsZWQgdG8gZGVjb2RlLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gSW5jb3JyZWN0IE1FTCBzZWdtZW50IHNlcXVlbmNlLgoAQ29tcG9uZW50ICVkIGlzIG1hcHBlZCB0d2ljZS4KAE9ubHkgb25lIENNQVAgYm94IGlzIGFsbG93ZWQuCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAElIRFIgYm94X21pc3NpbmcuIFJlcXVpcmVkLgoASlAySCBib3ggbWlzc2luZy4gUmVxdWlyZWQuCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASGVhZGVyIG9mIHRpbGUgJWQgLyAlZCBoYXMgYmVlbiByZWFkLgoARW1wdHkgU09UIG1hcmtlciBkZXRlY3RlZDogUHNvdD0lZC4KAERpcmVjdCB1c2UgYXQgIyVkIGhvd2V2ZXIgcGNvbD0lZC4KAEltcGxlbWVudGF0aW9uIGxpbWl0YXRpb246IGZvciBwYWxldHRlIG1hcHBpbmcsIHBjb2xbJWRdIHNob3VsZCBiZSBlcXVhbCB0byAlZCwgYnV0IGlzIGVxdWFsIHRvICVkLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBJbnZhbGlkIHZhbHVlIGZvciBjbWFwWyVkXS5tdHlwID0gJWQuCgBQc290IHZhbHVlIGlzIG5vdCBjb3JyZWN0IHJlZ2FyZHMgdG8gdGhlIEpQRUcyMDAwIG5vcm06ICVkLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gVkxDIGNvZGUgcHJvZHVjZXMgc2lnbmlmaWNhbnQgc2FtcGxlcyBvdXRzaWRlIHRoZSBjb2RlYmxvY2sgYXJlYS4KAFVuZXhwZWN0ZWQgT09NLgoAMzIgYml0cyBhcmUgbm90IGVub3VnaCB0byBkZWNvZGUgdGhpcyBjb2RlYmxvY2ssIHNpbmNlIHRoZSBudW1iZXIgb2YgYml0cGxhbmUsICVkLCBpcyBsYXJnZXIgdGhhbiAzMC4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIHNob3VsZCBiZSA+IDAuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIHNob3VsZCBiZSA+IDAuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIHNob3VsZCBiZSA+PSAwLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIHNob3VsZCBiZSA+PSAwLgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyOiBwYWNrZXQgaGVhZGVyIGhhdmUgYmVlbiBwcmV2aW91c2x5IGZvdW5kIGluIHRoZSBtYWluIGhlYWRlciAoUFBNIG1hcmtlcikuCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWxsZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWXNpej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWU9zaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBTaXplIHggb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0udz0lZCkuCgBTaXplIHkgb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0uaD0lZCkuCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAG9wal9yZWFkX2hlYWRlcigpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIG9wal9zZXRfZGVjb2RlZF9jb21wb25lbnRzKCkuCgBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluIG9wal9qcDJfYXBwbHlfcGNscigpLgoAaW1hZ2UtPmNvbXBzWyVkXS5kYXRhID09IE5VTEwgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbnZhbGlkIGJveCBzaXplICVkICgleCkKAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBJSERSIHcoJXUpIGgoJXUpIHZzLiBTSVogdygldSkgaCgldSkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlciAoYmFkIG51bWJlciBvZiBjb21wb25lbnRzKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIChpaGRyKQoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGltYWdlIGhlYWRlciAoaWhkcikKAFdyb25nIHZhbHVlcyBmb3I6IHcoJWQpIGgoJWQpIG51bWNvbXBzKCVkKSAoaWhkcikKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBkeD0ldSBkeT0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybSkKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIEJQQ0MgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBza2lwOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAcmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZCkKAERlc3BpdGUgSlAyIEJQQyE9MjU1LCBwcmVjaXNpb24gYW5kL29yIHNnbmQgdmFsdWVzIGZvciBjb21wWyVkXSBpcyBkaWZmZXJlbnQgdGhhbiBjb21wWzBdOgogICAgICAgIFswXSBwcmVjKCVkKSBzZ25kKCVkKSBbJWRdIHByZWMoJWQpIHNnbmQoJWQpCgBiYWQgY29tcG9uZW50IG51bWJlciBpbiBSR04gKCVkIHdoZW4gdGhlcmUgYXJlIG9ubHkgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemU6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoQ0lFTGFiLCBiYWQgc2l6ZTogJWQpCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCByZW1haW5pbmcgYnl0ZXMgaW4gY29kZSBibG9jayAoJWQgdXNlZCAvICVkKQoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gT25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQ6IDIgPD0gU2N1cCA8PSBtaW4oTGN1cCwgNDA3OSkKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBwcmVjPSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzOCBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0uIE9wZW5KcGVnIG9ubHkgc3VwcG9ydHMgdXAgdG8gMzEpCgBJbnZhbGlkIGJpdCBudW1iZXIgJWQgaW4gb3BqX3QyX3JlYWRfcGFja2V0X2hlYWRlcigpCgBTdHJlYW0gZXJyb3IhCgBFcnJvciBvbiB3cml0aW5nIHN0cmVhbSEKAFN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIQoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoASW52YWxpZCBib3ggc2l6ZSAlZCBmb3IgYm94ICclYyVjJWMlYycuIE5lZWQgJWQgYnl0ZXMsICVkIGJ5dGVzIHJlbWFpbmluZyAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpcyBsYXJnZXIgdGhhbiB6ZXJvIGJpdHBsYW5lcyArIDEgCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBVX3EgaXNsYXJnZXIgdGhhbiBiaXRwbGFuZXMgKyAxIAoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAFdoaWxlIHJlYWRpbmcgQ0NQX1FOVFNUWSBlbGVtZW50IGluc2lkZSBRQ0Qgb3IgUUNDIG1hcmtlciBzZWdtZW50LCBudW1iZXIgb2Ygc3ViYmFuZHMgKCVkKSBpcyBncmVhdGVyIHRvIE9QSl9KMktfTUFYQkFORFMgKCVkKS4gU28gd2UgbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpIGFuZCBza2lwIHRoZSByZXN0LiAKAEpQMiBJSERSIGJveDogY29tcHJlc3Npb24gdHlwZSBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIGlzIG5vdCBhIGNvbmZvcm1pbmcgSlAyIGZpbGUgKCVkKSAKAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBFcnJvciBkZWNvZGluZyBjb21wb25lbnQgJWQuClRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgdG8gcmVtb3ZlICglZCkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgb2YgdGhpcyBjb21wb25lbnQg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AAABVAAAAQAAAABQAADAUAAAAUgAAAAAAAAQUAAAsFAAAAFIAAABAAAAIFAAAMBQAAABOAAAAAAAADBQAACwUAAAATgAAAEAAABAUAAAwFAAAAEwAAAAAAAAUFAAABBRAAABMAAAAQAAAGBQAAAgUQAAASQAAAAAAABwUAAAMFEAAAEkAAABAAAAgFAAAEBRAAABHAAAAAAAAJBQAABwUQAAARwAAAEAAACgUAAAgFEAAAEWAAAAAAAAkFIAAJBRAAABFgAAAQAAAKBSAACgUQAAAVYAAAAAAADQUAAAwFAAAAFWAAABAAAA4FAAALBQAAABVAAAAAAAAPBQAACwUAAAAVQAAAEAAAAAUQAAwFAAAAFRAAAAAAAAEFEAANBQAAABUQAAAQAAACBRAADgUAAAAUgAAAAAAAAwUQAA8FAAAAFIAAABAAAAQFEAAABRAAABOAAAAAAAAFBRAAAQUQAAATgAAAEAAABgUQAAIFEAAAE0AAAAAAAAcFEAADBRAAABNAAAAQAAAIBRAABAUQAAATAAAAAAAACQUQAAUFEAAAEwAAABAAAAoFEAAGBRAAABKAAAAAAAALBRAABQUQAAASgAAAEAAADAUQAAYFEAAAEkAAAAAAAA0FEAAHBRAAABJAAAAQAAAOBRAACAUQAAASIAAAAAAADwUQAAkFEAAAEiAAABAAAAAFIAAKBRAAABHAAAAAAAABBSAACwUQAAARwAAAEAAAAgUgAAwFEAAAEYAAAAAAAAMFIAANBRAAABGAAAAQAAAEBSAADgUQAAARYAAAAAAABQUgAA8FEAAAEWAAABAAAAYFIAAABSAAABFAAAAAAAAHBSAAAQUgAAARQAAAEAAACAUgAAIFIAAAESAAAAAAAAkFIAADBSAAABEgAAAQAAAKBSAABAUgAAAREAAAAAAACwUgAAUFIAAAERAAABAAAAwFIAAGBSAADBCgAAAAAAANBSAABwUgAAwQoAAAEAAADgUgAAgFIAAMEJAAAAAAAA8FIAAJBSAADBCQAAAQAAAABTAACgUgAAoQgAAAAAAAAQUwAAsFIAAKEIAAABAAAAIFMAAMBSAAAhBQAAAAAAADBTAADQUgAAIQUAAAEAAABAUwAA4FIAAEEEAAAAAAAAUFMAAPBSAABBBAAAAQAAAGBTAAAAUwAAoQIAAAAAAABwUwAAEFMAAKECAAABAAAAgFMAACBTAAAhAgAAAAAAAJBTAAAwUwAAIQIAAAEAAACgUwAAQFMAAEEBAAAAAAAAsFMAAFBTAABBAQAAAQAAAMBTAABgUwAAEQEAAAAAAADQUwAAcFMAABEBAAABAAAA4FMAAIBTAACFAAAAAAAAAPBTAACQUwAAhQAAAAEAAAAAVAAAoFMAAEkAAAAAAAAAEFQAALBTAABJAAAAAQAAACBUAADAUwAAJQAAAAAAAAAwVAAA0FMAACUAAAABAAAAQFQAAOBTAAAVAAAAAAAAAFBUAADwUwAAFQAAAAEAAABgVAAAAFQAAAkAAAAAAAAAcFQAABBUAAAJAAAAAQAAAIBUAAAgVAAABQAAAAAAAACQVAAAMFQAAAUAAAABAAAAoFQAAEBUAAABAAAAAAAAAJBUAABQVAAAAQAAAAEAAACgVAAAYFQAAAFWAAAAAAAAsFQAALBUAAABVgAAAQAAAMBUAADAVAAAAAEDAwECAwMFBgcHBgYHBwABAwMBAgMDBQYHBwYGBwcFBgcHBgYHBwgICAgICAgIBQYHBwYGBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgCAgMDAgIDAwYGBwcGBgcHAgIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgAAQUGAQIGBgMDBwcDAwcHAAEFBgECBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwUGCAgGBggIBwcICAcHCAgFBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwICBgYCAgYGAwMHBwMDBwcCAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAMBBAMGBAcBBAIFBAcFBwADAQQDBgQHAQQCBQQHBQcBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgGCAcICAgICAcIBwgICAgIBggHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgJCQoKCQkKCgwMDQsMDA0LCQkKCgkJCgoMDAsNDAwLDQwMDQ0MDAsLDAkNCgkMCgsMDAsLDAwNDQwJCwoJDAoNCQkKCgkJCgoMDA0LDAwNCwkJCgoJCQoKDAwLDQwMCw0MDA0NDAwLCwwJDQoJDAoLDAwLCwwMDQ0MCQsKCQwKDQoKCgoKCgoKDQsNCw0LDQsKCgkJCgoJCQ0LDAwNCwwMDQ0NDQsLCwsNCg0KCgsKCw0NDAwLCwwMDQoMCQoLCQwKCgkJCgoJCQsNDAwLDQwMCgoKCgoKCgoLDQsNCw0LDQsLDAwNDQwMCwoMCQoNCQwLCwsLDQ0NDQsKCwoKDQoNAEHZuwELNwEAAQABAAEAAAEBAAABAQABAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAQABAQEAQZm8AQs3AQABAAEAAQAAAQEAAAEBAAEAAQABAAEAAAAAAQEBAQAAAAAAAQABAAAAAAEBAQEAAAABAAEBAQBB2bwBCwcBAAEAAQABAEHpvAELlQIBAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAAABAAEBAQAAAQEAAAABAAEAAQABAQEBAQEBAQEAAQABAAEAAQAAAAABAQEBAAEAAAEBAAEAAAAAAQEBAQABAAEBAQEBAgAAAAQAAAAEAAAACAAAAJD/AAAMAAAAGAAAAFL/AAAUAAAAGQAAAFP/AAAUAAAAGgAAAF7/AAAUAAAAGwAAAFz/AAAUAAAAHAAAAF3/AAAUAAAAHQAAAF//AAAUAAAAHgAAAFH/AAACAAAAHwAAAFX/AAAEAAAAIAAAAFf/AAAEAAAAIQAAAFj/AAAQAAAAIgAAAGD/AAAEAAAAIwAAAGH/AAAQAAAAJAAAAJH/AEGIvwELZWP/AAAEAAAAJQAAAGT/AAAUAAAAJgAAAHT/AAAUAAAAJwAAAHj/AAAEAAAAKAAAAFD/AAAEAAAAKQAAAFn/AAAEAAAAKgAAAHX/AAAUAAAAKwAAAHf/AAAUAAAALAAAAAAAAAAUAEGAwAELNS0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAAICBQajYAAABweXRmNwAAAGgycGo4AEHAwAELMnJkaGk5AAAAcmxvYzoAAABjY3BiOwAAAHJsY3A8AAAAcGFtYz0AAABmZWRjPgAAAPhiAEGAwQELQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHRwQELIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBBi8IBCwEMAEGXwgELFRMAAAAAEwAAAAAJDAAAAAAADAAADABBxcIBCwEQAEHRwgELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABB/8IBCwESAEGLwwELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBwsMBCw4aAAAAGhoaAAAAAAAACQBB88MBCwEUAEH/wwELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBrcQBCwEWAEG5xAELJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBB4MQBCwmQbAEAAAAAAAUAQfTEAQsBaQBBjMUBCwpqAAAAawAAAHhoAEGkxQELAQIAQbTFAQsI//////////8AQfjFAQsBBQBBhMYBCwFsAEGcxgELDmoAAABtAAAAiGgAAAAEAEG0xgELAQEAQcTGAQsF/////wo=");return receiveInstance(instantiateSync(u,e)[0])}();G.q,a._malloc=G.r,a._free=G.s,a._jp2_decode=G.u;w=function runCaller(){D||run();D||(w=runCaller)};function run(){if(!(m>0)){!function preRun(){if(a.preRun){"function"==typeof a.preRun&&(a.preRun=[a.preRun]);for(;a.preRun.length;)e=a.preRun.shift(),d.unshift(e)}var e;callRuntimeCallbacks(d)}();if(!(m>0))if(a.setStatus){a.setStatus("Running...");setTimeout((function(){setTimeout((function(){a.setStatus("")}),1);doRun()}),1)}else doRun()}function doRun(){if(!D){D=!0;a.calledRun=!0;!function initRuntime(){callRuntimeCallbacks(f)}();t(a);a.onRuntimeInitialized&&a.onRuntimeInitialized();!function postRun(){if(a.postRun){"function"==typeof a.postRun&&(a.postRun=[a.postRun]);for(;a.postRun.length;)e=a.postRun.shift(),p.unshift(e)}var e;callRuntimeCallbacks(p)}()}}}if(a.preInit){"function"==typeof a.preInit&&(a.preInit=[a.preInit]);for(;a.preInit.length>0;)a.preInit.pop()()}run();return a});const Ci=ci;class JpxError extends ot{constructor(e){super(e,"JpxError")}}class JpxImage{static#y=null;static decode(e,t){t||={};this.#y||=Ci({warn});const i=this.#y.decode(e,t);if("string"==typeof i)throw new JpxError(i);return i}static cleanup(){this.#y=null}static parseImageProperties(e){let t=e.getByte();for(;t>=0;){const i=t;t=e.getByte();if(65361===(i<<8|t)){e.skip(4);const t=e.getInt32()>>>0,i=e.getInt32()>>>0,a=e.getInt32()>>>0,r=e.getInt32()>>>0;e.skip(16);return{width:t-a,height:i-r,bitsPerComponent:8,componentsCount:e.getUint16()}}}throw new JpxError("No size marker found in JPX stream")}}class JpxStream extends DecodeStream{constructor(e,t,i){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=i}get bytes(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(e){this.decodeImage(null,e)}decodeImage(e,t){if(this.eof)return this.buffer;e||=this.bytes;this.buffer=JpxImage.decode(e,t);this.bufferLength=this.buffer.length;this.eof=!0;return this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}}class LZWStream extends DecodeStream{constructor(e,t,i){super(t);this.str=e;this.dict=e.dict;this.cachedData=0;this.bitsCached=0;const a=4096,r={earlyChange:i,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(a),dictionaryLengths:new Uint16Array(a),dictionaryPrevCodes:new Uint16Array(a),currentSequence:new Uint8Array(a),currentSequenceLength:0};for(let e=0;e<256;++e){r.dictionaryValues[e]=e;r.dictionaryLengths[e]=1}this.lzwState=r}readBits(e){let t=this.bitsCached,i=this.cachedData;for(;t<e;){const e=this.str.getByte();if(-1===e){this.eof=!0;return null}i=i<<8|e;t+=8}this.bitsCached=t-=e;this.cachedData=i;this.lastCode=null;return i>>>t&(1<<e)-1}readBlock(){let e,t,i,a=1024;const r=this.lzwState;if(!r)return;const s=r.earlyChange;let n=r.nextCode;const o=r.dictionaryValues,g=r.dictionaryLengths,c=r.dictionaryPrevCodes;let C=r.codeLength,h=r.prevCode;const l=r.currentSequence;let Q=r.currentSequenceLength,E=0,u=this.bufferLength,d=this.ensureBuffer(this.bufferLength+a);for(e=0;e<512;e++){const e=this.readBits(C),r=Q>0;if(e<256){l[0]=e;Q=1}else{if(!(e>=258)){if(256===e){C=9;n=258;Q=0;continue}this.eof=!0;delete this.lzwState;break}if(e<n){Q=g[e];for(t=Q-1,i=e;t>=0;t--){l[t]=o[i];i=c[i]}}else l[Q++]=l[0]}if(r){c[n]=h;g[n]=g[h]+1;o[n]=l[0];n++;C=n+s&n+s-1?C:0|Math.min(Math.log(n+s)/.6931471805599453+1,12)}h=e;E+=Q;if(a<E){do{a+=512}while(a<E);d=this.ensureBuffer(this.bufferLength+a)}for(t=0;t<Q;t++)d[u++]=l[t]}r.nextCode=n;r.codeLength=C;r.prevCode=h;r.currentSequenceLength=Q;this.bufferLength=u}}class PredictorStream extends DecodeStream{constructor(e,t,i){super(t);if(!(i instanceof Dict))return e;const a=this.predictor=i.get("Predictor")||1;if(a<=1)return e;if(2!==a&&(a<10||a>15))throw new FormatError(`Unsupported predictor: ${a}`);this.readBlock=2===a?this.readBlockTiff:this.readBlockPng;this.str=e;this.dict=e.dict;const r=this.colors=i.get("Colors")||1,s=this.bits=i.get("BPC","BitsPerComponent")||8,n=this.columns=i.get("Columns")||1;this.pixBytes=r*s+7>>3;this.rowBytes=n*r*s+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,i=this.ensureBuffer(t+e),a=this.bits,r=this.colors,s=this.str.getBytes(e);this.eof=!s.length;if(this.eof)return;let n,o=0,g=0,c=0,C=0,h=t;if(1===a&&1===r)for(n=0;n<e;++n){let e=s[n]^o;e^=e>>1;e^=e>>2;e^=e>>4;o=(1&e)<<7;i[h++]=e}else if(8===a){for(n=0;n<r;++n)i[h++]=s[n];for(;n<e;++n){i[h]=i[h-r]+s[n];h++}}else if(16===a){const t=2*r;for(n=0;n<t;++n)i[h++]=s[n];for(;n<e;n+=2){const e=((255&s[n])<<8)+(255&s[n+1])+((255&i[h-t])<<8)+(255&i[h-t+1]);i[h++]=e>>8&255;i[h++]=255&e}}else{const e=new Uint8Array(r+1),h=(1<<a)-1;let l=0,Q=t;const E=this.columns;for(n=0;n<E;++n)for(let t=0;t<r;++t){if(c<a){o=o<<8|255&s[l++];c+=8}e[t]=e[t]+(o>>c-a)&h;c-=a;g=g<<a|e[t];C+=a;if(C>=8){i[Q++]=g>>C-8&255;C-=8}}C>0&&(i[Q++]=(g<<8-C)+(o&(1<<8-C)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,i=this.str.getByte(),a=this.str.getBytes(e);this.eof=!a.length;if(this.eof)return;const r=this.bufferLength,s=this.ensureBuffer(r+e);let n=s.subarray(r-e,r);0===n.length&&(n=new Uint8Array(e));let o,g,c,C=r;switch(i){case 0:for(o=0;o<e;++o)s[C++]=a[o];break;case 1:for(o=0;o<t;++o)s[C++]=a[o];for(;o<e;++o){s[C]=s[C-t]+a[o]&255;C++}break;case 2:for(o=0;o<e;++o)s[C++]=n[o]+a[o]&255;break;case 3:for(o=0;o<t;++o)s[C++]=(n[o]>>1)+a[o];for(;o<e;++o){s[C]=(n[o]+s[C-t]>>1)+a[o]&255;C++}break;case 4:for(o=0;o<t;++o){g=n[o];c=a[o];s[C++]=g+c}for(;o<e;++o){g=n[o];const e=n[o-t],i=s[C-t],r=i+g-e;let h=r-i;h<0&&(h=-h);let l=r-g;l<0&&(l=-l);let Q=r-e;Q<0&&(Q=-Q);c=a[o];s[C++]=h<=l&&h<=Q?i+c:l<=Q?g+c:e+c}break;default:throw new FormatError(`Unsupported predictor: ${i}`)}this.bufferLength+=e}}class RunLengthStream extends DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict}readBlock(){const e=this.str.getBytes(2);if(!e||e.length<2||128===e[0]){this.eof=!0;return}let t,i=this.bufferLength,a=e[0];if(a<128){t=this.ensureBuffer(i+a+1);t[i++]=e[1];if(a>0){const e=this.str.getBytes(a);t.set(e,i);i+=a}}else{a=257-a;const r=e[1];t=this.ensureBuffer(i+a+1);for(let e=0;e<a;e++)t[i++]=r}this.bufferLength=i}}class Parser{constructor({lexer:e,xref:t,allowStreams:i=!1,recoveryMode:a=!1}){this.lexer=e;this.xref=t;this.allowStreams=i;this.recoveryMode=a;this.imageCache=Object.create(null);this._imageId=0;this.refill()}refill(){this.buf1=this.lexer.getObj();this.buf2=this.lexer.getObj()}shift(){if(this.buf2 instanceof Cmd&&"ID"===this.buf2.cmd){this.buf1=this.buf2;this.buf2=null}else{this.buf1=this.buf2;this.buf2=this.lexer.getObj()}}tryShift(){try{this.shift();return!0}catch(e){if(e instanceof MissingDataException)throw e;return!1}}getObj(e=null){const t=this.buf1;this.shift();if(t instanceof Cmd)switch(t.cmd){case"BI":return this.makeInlineImage(e);case"[":const i=[];for(;!isCmd(this.buf1,"]")&&this.buf1!==yt;)i.push(this.getObj(e));if(this.buf1===yt){if(this.recoveryMode)return i;throw new ParserEOFException("End of file inside array.")}this.shift();return i;case"<<":const a=new Dict(this.xref);for(;!isCmd(this.buf1,">>")&&this.buf1!==yt;){if(!(this.buf1 instanceof Name)){info("Malformed dictionary: key must be a name object");this.shift();continue}const t=this.buf1.name;this.shift();if(this.buf1===yt)break;a.set(t,this.getObj(e))}if(this.buf1===yt){if(this.recoveryMode)return a;throw new ParserEOFException("End of file inside dictionary.")}if(isCmd(this.buf2,"stream"))return this.allowStreams?this.makeStream(a,e):a;this.shift();return a;default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&isCmd(this.buf2,"R")){const e=Ref.get(t,this.buf1);this.shift();this.shift();return e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const{knownCommands:t}=this.lexer,i=e.pos;let a,r,s=0;for(;-1!==(a=e.getByte());)if(0===s)s=69===a?1:0;else if(1===s)s=73===a?2:0;else if(32===a||10===a||13===a){r=e.pos;const i=e.peekBytes(15),n=i.length;if(0===n)break;for(let e=0;e<n;e++){a=i[e];if((0!==a||0===i[e+1])&&(10!==a&&13!==a&&(a<32||a>127))){s=0;break}}if(2!==s)continue;if(!t){warn("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const o=new Lexer(new Stream(i.slice()),t);o._hexStringWarn=()=>{};let g=0;for(;;){const e=o.getObj();if(e===yt){s=0;break}if(e instanceof Cmd){const i=t[e.cmd];if(!i){s=0;break}if(i.variableArgs?g<=i.numArgs:g===i.numArgs)break;g=0}else g++}if(2===s)break}else s=0;if(-1===a){warn("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(r){warn('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-r))}}let n=4;e.skip(-n);a=e.peekByte();e.skip(n);isWhiteSpace(a)||n--;return e.pos-n-i}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let i,a,r=!1;for(;-1!==(i=e.getByte());)if(255===i){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:r=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:a=e.getUint16();a>2?e.skip(a-2):e.skip(-2)}if(r)break}const s=e.pos-t;if(-1===i){warn("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-s);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return s}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let i;for(;-1!==(i=e.getByte());)if(126===i){const t=e.pos;i=e.peekByte();for(;isWhiteSpace(i);){e.skip();i=e.peekByte()}if(62===i){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const a=e.pos-t;if(-1===i){warn("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-a);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return a}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let i;for(;-1!==(i=e.getByte())&&62!==i;);const a=e.pos-t;if(-1===i){warn("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-a);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return a}inlineStreamSkipEI(e){let t,i=0;for(;-1!==(t=e.getByte());)if(0===i)i=69===t?1:0;else if(1===i)i=73===t?2:0;else if(2===i)break}makeInlineImage(e){const t=this.lexer,i=t.stream,a=Object.create(null);let r;for(;!isCmd(this.buf1,"ID")&&this.buf1!==yt;){if(!(this.buf1 instanceof Name))throw new FormatError("Dictionary key must be a name object");const t=this.buf1.name;this.shift();if(this.buf1===yt)break;a[t]=this.getObj(e)}-1!==t.beginInlineImagePos&&(r=i.pos-t.beginInlineImagePos);const s=this.xref.fetchIfRef(a.F||a.Filter);let n;if(s instanceof Name)n=s.name;else if(Array.isArray(s)){const e=this.xref.fetchIfRef(s[0]);e instanceof Name&&(n=e.name)}const o=i.pos;let g,c;switch(n){case"DCT":case"DCTDecode":g=this.findDCTDecodeInlineStreamEnd(i);break;case"A85":case"ASCII85Decode":g=this.findASCII85DecodeInlineStreamEnd(i);break;case"AHx":case"ASCIIHexDecode":g=this.findASCIIHexDecodeInlineStreamEnd(i);break;default:g=this.findDefaultInlineStreamEnd(i)}if(g<1e3&&r>0){const e=i.pos;i.pos=t.beginInlineImagePos;c=function getInlineImageCacheKey(e){const t=[],i=e.length;let a=0;for(;a<i-1;)t.push(e[a++]<<8|e[a++]);a<i&&t.push(e[a]);return i+"_"+String.fromCharCode.apply(null,t)}(i.getBytes(r+g));i.pos=e;const a=this.imageCache[c];if(void 0!==a){this.buf2=Cmd.get("EI");this.shift();a.reset();return a}}const C=new Dict(this.xref);for(const e in a)C.set(e,a[e]);let h=i.makeSubStream(o,g,C);e&&(h=e.createStream(h,g));h=this.filter(h,C,g);h.dict=C;if(void 0!==c){h.cacheKey="inline_img_"+ ++this._imageId;this.imageCache[c]=h}this.buf2=Cmd.get("EI");this.shift();return h}#w(e){const{stream:t}=this.lexer;t.pos=e;const i=new Uint8Array([101,110,100]),a=i.length,r=[new Uint8Array([115,116,114,101,97,109]),new Uint8Array([115,116,101,97,109]),new Uint8Array([115,116,114,101,97])],s=9-a;for(;t.pos<t.end;){const n=t.peekBytes(2048),o=n.length-9;if(o<=0)break;let g=0;for(;g<o;){let o=0;for(;o<a&&n[g+o]===i[o];)o++;if(o>=a){let a=!1;for(const e of r){const t=e.length;let r=0;for(;r<t&&n[g+o+r]===e[r];)r++;if(r>=s){a=!0;break}if(r>=t){if(isWhiteSpace(n[g+o+r])){info(`Found "${bytesToString([...i,...e])}" when searching for endstream command.`);a=!0}break}}if(a){t.pos+=g;return t.pos-e}}g++}t.pos+=o}return-1}makeStream(e,t){const i=this.lexer;let a=i.stream;i.skipToNextLine();const r=a.pos-1;let s=e.get("Length");if(!Number.isInteger(s)){info(`Bad length "${s&&s.toString()}" in stream.`);s=0}a.pos=r+s;i.nextChar();if(this.tryShift()&&isCmd(this.buf2,"endstream"))this.shift();else{s=this.#w(r);if(s<0)throw new FormatError("Missing endstream command.");i.nextChar();this.shift();this.shift()}this.shift();a=a.makeSubStream(r,s,e);t&&(a=t.createStream(a,s));a=this.filter(a,e,s);a.dict=e;return a}filter(e,t,i){let a=t.get("F","Filter"),r=t.get("DP","DecodeParms");if(a instanceof Name){Array.isArray(r)&&warn("/DecodeParms should not be an Array, when /Filter is a Name.");return this.makeFilter(e,a.name,i,r)}let s=i;if(Array.isArray(a)){const t=a,i=r;for(let n=0,o=t.length;n<o;++n){a=this.xref.fetchIfRef(t[n]);if(!(a instanceof Name))throw new FormatError(`Bad filter name "${a}"`);r=null;Array.isArray(i)&&n in i&&(r=this.xref.fetchIfRef(i[n]));e=this.makeFilter(e,a.name,s,r);s=null}}return e}makeFilter(e,t,i,a){if(0===i){warn(`Empty "${t}" stream.`);return new NullStream}try{switch(t){case"Fl":case"FlateDecode":return a?new PredictorStream(new FlateStream(e,i),i,a):new FlateStream(e,i);case"LZW":case"LZWDecode":let t=1;if(a){a.has("EarlyChange")&&(t=a.get("EarlyChange"));return new PredictorStream(new LZWStream(e,i,t),i,a)}return new LZWStream(e,i,t);case"DCT":case"DCTDecode":return new JpegStream(e,i,a);case"JPX":case"JPXDecode":return new JpxStream(e,i,a);case"A85":case"ASCII85Decode":return new Ascii85Stream(e,i);case"AHx":case"ASCIIHexDecode":return new AsciiHexStream(e,i);case"CCF":case"CCITTFaxDecode":return new CCITTFaxStream(e,i,a);case"RL":case"RunLengthDecode":return new RunLengthStream(e,i);case"JBIG2Decode":return new Jbig2Stream(e,i,a)}warn(`Filter "${t}" is not supported.`);return e}catch(e){if(e instanceof MissingDataException)throw e;warn(`Invalid stream: "${e}"`);return new NullStream}}}const hi=[1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function toHexDigit(e){return e>=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class Lexer{constructor(e,t=null){this.stream=e;this.nextChar();this.strBuf=[];this.knownCommands=t;this._hexStringNumWarn=0;this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,i=0,a=1;if(45===e){a=-1;e=this.nextChar();45===e&&(e=this.nextChar())}else 43===e&&(e=this.nextChar());if(10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e){i=10;e=this.nextChar()}if(e<48||e>57){const t=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if(isWhiteSpace(e)||-1===e){info(`Lexer.getNumber - "${t}".`);return 0}throw new FormatError(t)}let r=e-48,s=0,n=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const a=e-48;if(t)s=10*s+a;else{0!==i&&(i*=10);r=10*r+a}}else if(46===e){if(0!==i)break;i=1}else if(45===e)warn("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;e=this.peekChar();if(43===e||45===e){n=45===e?-1:1;this.nextChar()}else if(e<48||e>57)break;t=!0}0!==i&&(r/=i);t&&(r*=10**(n*s));return a*r}getString(){let e=1,t=!1;const i=this.strBuf;i.length=0;let a=this.nextChar();for(;;){let r=!1;switch(0|a){case-1:warn("Unterminated string");t=!0;break;case 40:++e;i.push("(");break;case 41:if(0==--e){this.nextChar();t=!0}else i.push(")");break;case 92:a=this.nextChar();switch(a){case-1:warn("Unterminated string");t=!0;break;case 110:i.push("\n");break;case 114:i.push("\r");break;case 116:i.push("\t");break;case 98:i.push("\b");break;case 102:i.push("\f");break;case 92:case 40:case 41:i.push(String.fromCharCode(a));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&a;a=this.nextChar();r=!0;if(a>=48&&a<=55){e=(e<<3)+(15&a);a=this.nextChar();if(a>=48&&a<=55){r=!1;e=(e<<3)+(15&a)}}i.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:i.push(String.fromCharCode(a))}break;default:i.push(String.fromCharCode(a))}if(t)break;r||(a=this.nextChar())}return i.join("")}getName(){let e,t;const i=this.strBuf;i.length=0;for(;(e=this.nextChar())>=0&&!hi[e];)if(35===e){e=this.nextChar();if(hi[e]){warn("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");i.push("#");break}const a=toHexDigit(e);if(-1!==a){t=e;e=this.nextChar();const r=toHexDigit(e);if(-1===r){warn(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);i.push("#",String.fromCharCode(t));if(hi[e])break;i.push(String.fromCharCode(e));continue}i.push(String.fromCharCode(a<<4|r))}else i.push("#",String.fromCharCode(e))}else i.push(String.fromCharCode(e));i.length>127&&warn(`Name token is longer than allowed by the spec: ${i.length}`);return Name.get(i.join(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||warn(`getHexString - ignoring invalid character: ${e}`):warn("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t,i,a=this.currentChar,r=!0;this._hexStringNumWarn=0;for(;;){if(a<0){warn("Unterminated hex string");break}if(62===a){this.nextChar();break}if(1!==hi[a]){if(r){t=toHexDigit(a);if(-1===t){this._hexStringWarn(a);a=this.nextChar();continue}}else{i=toHexDigit(a);if(-1===i){this._hexStringWarn(a);a=this.nextChar();continue}e.push(String.fromCharCode(t<<4|i))}r=!r;a=this.nextChar()}else a=this.nextChar()}return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return yt;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==hi[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:this.nextChar();return Cmd.get("[");case 93:this.nextChar();return Cmd.get("]");case 60:t=this.nextChar();if(60===t){this.nextChar();return Cmd.get("<<")}return this.getHexString();case 62:t=this.nextChar();if(62===t){this.nextChar();return Cmd.get(">>")}return Cmd.get(">");case 123:this.nextChar();return Cmd.get("{");case 125:this.nextChar();return Cmd.get("}");case 41:this.nextChar();throw new FormatError(`Illegal character: ${t}`)}let i=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127){this.nextChar();return Cmd.get(i)}}const a=this.knownCommands;let r=void 0!==a?.[i];for(;(t=this.nextChar())>=0&&!hi[t];){const e=i+String.fromCharCode(t);if(r&&void 0===a[e])break;if(128===i.length)throw new FormatError(`Command token too long: ${i.length}`);i=e;r=void 0!==a?.[i]}if("true"===i)return!0;if("false"===i)return!1;if("null"===i)return null;"BI"===i&&(this.beginInlineImagePos=this.stream.pos);return Cmd.get(i)}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar();10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}class Linearization{static create(e){function getInt(e,t,i=!1){const a=e.get(t);if(Number.isInteger(a)&&(i?a>=0:a>0))return a;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),i=t.getObj(),a=t.getObj(),r=t.getObj(),s=t.getObj();let n,o;if(!(Number.isInteger(i)&&Number.isInteger(a)&&isCmd(r,"obj")&&s instanceof Dict&&"number"==typeof(n=s.get("Linearized"))&&n>0))return null;if((o=getInt(s,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:o,hints:function getHints(e){const t=e.get("H");let i;if(Array.isArray(t)&&(2===(i=t.length)||4===i)){for(let e=0;e<i;e++){const i=t[e];if(!(Number.isInteger(i)&&i>0))throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`)}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(s),objectNumberFirst:getInt(s,"O"),endFirst:getInt(s,"E"),numPages:getInt(s,"N"),mainXRefEntriesOffset:getInt(s,"T"),pageFirst:s.has("P")?getInt(s,"P",!0):0}}}const li=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],Bi=2**24-1;class CMap{constructor(e=!1){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this._map=[];this.name="";this.vertical=!1;this.useCMap=null;this.builtInCMap=e}addCodespaceRange(e,t,i){this.codespaceRanges[e-1].push(t,i);this.numCodespaceRanges++}mapCidRange(e,t,i){if(t-e>Bi)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=i++}mapBfRange(e,t,i){if(t-e>Bi)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const a=i.length-1;for(;e<=t;){this._map[e++]=i;const t=i.charCodeAt(a)+1;t>255?i=i.substring(0,a-1)+String.fromCharCode(i.charCodeAt(a-1)+1)+"\0":i=i.substring(0,a)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,i){if(t-e>Bi)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const a=i.length;let r=0;for(;e<=t&&r<a;){this._map[e]=i[r++];++e}}mapOne(e,t){this._map[e]=t}lookup(e){return this._map[e]}contains(e){return void 0!==this._map[e]}forEach(e){const t=this._map,i=t.length;if(i<=65536)for(let a=0;a<i;a++)void 0!==t[a]&&e(a,t[a]);else for(const i in t)e(i,t[i])}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const i in t)if(t[i]===e)return 0|i;return-1}getMap(){return this._map}readCharCode(e,t,i){let a=0;const r=this.codespaceRanges;for(let s=0,n=r.length;s<n;s++){a=(a<<8|e.charCodeAt(t+s))>>>0;const n=r[s];for(let e=0,t=n.length;e<t;){const t=n[e++],r=n[e++];if(a>=t&&a<=r){i.charcode=a;i.length=s+1;return}}}i.charcode=0;i.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let i=0,a=t.length;i<a;i++){const a=t[i];for(let t=0,r=a.length;t<r;){const r=a[t++],s=a[t++];if(e>=r&&e<=s)return i+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}class IdentityCMap extends CMap{constructor(e,t){super();this.vertical=e;this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,i){unreachable("should not call mapCidRange")}mapBfRange(e,t,i){unreachable("should not call mapBfRange")}mapBfRangeToArray(e,t,i){unreachable("should not call mapBfRangeToArray")}mapOne(e,t){unreachable("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){unreachable("should not access .isIdentityCMap")}}function strToInt(e){let t=0;for(let i=0;i<e.length;i++)t=t<<8|e.charCodeAt(i);return t>>>0}function expectString(e){if("string"!=typeof e)throw new FormatError("Malformed CMap: expected string.")}function expectInt(e){if(!Number.isInteger(e))throw new FormatError("Malformed CMap: expected int.")}function parseBfChar(e,t){for(;;){let i=t.getObj();if(i===yt)break;if(isCmd(i,"endbfchar"))return;expectString(i);const a=strToInt(i);i=t.getObj();expectString(i);const r=i;e.mapOne(a,r)}}function parseBfRange(e,t){for(;;){let i=t.getObj();if(i===yt)break;if(isCmd(i,"endbfrange"))return;expectString(i);const a=strToInt(i);i=t.getObj();expectString(i);const r=strToInt(i);i=t.getObj();if(Number.isInteger(i)||"string"==typeof i){const t=Number.isInteger(i)?String.fromCharCode(i):i;e.mapBfRange(a,r,t)}else{if(!isCmd(i,"["))break;{i=t.getObj();const s=[];for(;!isCmd(i,"]")&&i!==yt;){s.push(i);i=t.getObj()}e.mapBfRangeToArray(a,r,s)}}}throw new FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let i=t.getObj();if(i===yt)break;if(isCmd(i,"endcidchar"))return;expectString(i);const a=strToInt(i);i=t.getObj();expectInt(i);const r=i;e.mapOne(a,r)}}function parseCidRange(e,t){for(;;){let i=t.getObj();if(i===yt)break;if(isCmd(i,"endcidrange"))return;expectString(i);const a=strToInt(i);i=t.getObj();expectString(i);const r=strToInt(i);i=t.getObj();expectInt(i);const s=i;e.mapCidRange(a,r,s)}}function parseCodespaceRange(e,t){for(;;){let i=t.getObj();if(i===yt)break;if(isCmd(i,"endcodespacerange"))return;if("string"!=typeof i)break;const a=strToInt(i);i=t.getObj();if("string"!=typeof i)break;const r=strToInt(i);e.addCodespaceRange(i.length,a,r)}throw new FormatError("Invalid codespace range.")}function parseWMode(e,t){const i=t.getObj();Number.isInteger(i)&&(e.vertical=!!i)}function parseCMapName(e,t){const i=t.getObj();i instanceof Name&&(e.name=i.name)}async function parseCMap(e,t,i,a){let r,s;A:for(;;)try{const i=t.getObj();if(i===yt)break;if(i instanceof Name){"WMode"===i.name?parseWMode(e,t):"CMapName"===i.name&&parseCMapName(e,t);r=i}else if(i instanceof Cmd)switch(i.cmd){case"endcmap":break A;case"usecmap":r instanceof Name&&(s=r.name);break;case"begincodespacerange":parseCodespaceRange(e,t);break;case"beginbfchar":parseBfChar(e,t);break;case"begincidchar":parseCidChar(e,t);break;case"beginbfrange":parseBfRange(e,t);break;case"begincidrange":parseCidRange(e,t)}}catch(e){if(e instanceof MissingDataException)throw e;warn("Invalid cMap data: "+e);continue}!a&&s&&(a=s);return a?extendCMap(e,i,a):e}async function extendCMap(e,t,i){e.useCMap=await createBuiltInCMap(i,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let i=0;i<t.length;i++)e.codespaceRanges[i]=t[i].slice();e.numCodespaceRanges=e.useCMap.numCodespaceRanges}e.useCMap.forEach((function(t,i){e.contains(t)||e.mapOne(t,e.useCMap.lookup(t))}));return e}async function createBuiltInCMap(e,t){if("Identity-H"===e)return new IdentityCMap(!1,2);if("Identity-V"===e)return new IdentityCMap(!0,2);if(!li.includes(e))throw new Error("Unknown CMap name: "+e);if(!t)throw new Error("Built-in CMap parameters are not provided.");const{cMapData:i,compressionType:a}=await t(e),r=new CMap(!0);if(a===wA.BINARY)return(new BinaryCMapReader).process(i,r,(e=>extendCMap(r,t,e)));if(a===wA.NONE){const e=new Lexer(new Stream(i));return parseCMap(r,e,t,null)}throw new Error(`Invalid CMap "compressionType" value: ${a}`)}class CMapFactory{static async create({encoding:e,fetchBuiltInCMap:t,useCMap:i}){if(e instanceof Name)return createBuiltInCMap(e.name,t);if(e instanceof BaseStream){const a=await parseCMap(new CMap,new Lexer(e),t,i);return a.isIdentityCMap?createBuiltInCMap(a.name,t):a}throw new Error("Encoding required.")}}__webpack_require__(1795);const Qi=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],Ei=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],ui=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"],di=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],fi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall","","","",""],pi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"],mi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls","","","",""],yi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"],wi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""],bi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];function getEncoding(e){switch(e){case"WinAnsiEncoding":return yi;case"StandardEncoding":return mi;case"MacRomanEncoding":return pi;case"SymbolSetEncoding":return wi;case"ZapfDingbatsEncoding":return bi;case"ExpertEncoding":return di;case"MacExpertEncoding":return fi;default:return null}}const Di=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],Fi=391,Si=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],ki=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];class CFFParser{constructor(e,t,i){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!i}parse(){const e=this.properties,t=new CFF;this.cff=t;const i=this.parseHeader(),a=this.parseIndex(i.endPos),r=this.parseIndex(a.endPos),s=this.parseIndex(r.endPos),n=this.parseIndex(s.endPos),o=this.parseDict(r.obj.get(0)),g=this.createDict(CFFTopDict,o,t.strings);t.header=i.obj;t.names=this.parseNameIndex(a.obj);t.strings=this.parseStringIndex(s.obj);t.topDict=g;t.globalSubrIndex=n.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=g.hasName("ROS");const c=g.getByName("CharStrings"),C=this.parseIndex(c).obj,h=g.getByName("FontMatrix");h&&(e.fontMatrix=h);const l=g.getByName("FontBBox");if(l){e.ascent=Math.max(l[3],l[1]);e.descent=Math.min(l[1],l[3]);e.ascentScaled=!0}let Q,E;if(t.isCIDFont){const e=this.parseIndex(g.getByName("FDArray")).obj;for(let i=0,a=e.count;i<a;++i){const a=e.get(i),r=this.createDict(CFFTopDict,this.parseDict(a),t.strings);this.parsePrivateDict(r);t.fdArray.push(r)}E=null;Q=this.parseCharsets(g.getByName("charset"),C.count,t.strings,!0);t.fdSelect=this.parseFDSelect(g.getByName("FDSelect"),C.count)}else{Q=this.parseCharsets(g.getByName("charset"),C.count,t.strings,!1);E=this.parseEncoding(g.getByName("Encoding"),e,t.strings,Q.charset)}t.charset=Q;t.encoding=E;const u=this.parseCharStrings({charStrings:C,localSubrIndex:g.privateDict.subrsIndex,globalSubrIndex:n.obj,fdSelect:t.fdSelect,fdArray:t.fdArray,privateDict:g.privateDict});t.charStrings=u.charStrings;t.seacs=u.seacs;t.widths=u.widths;return t}parseHeader(){let e=this.bytes;const t=e.length;let i=0;for(;i<t&&1!==e[i];)++i;if(i>=t)throw new FormatError("Invalid CFF header");if(0!==i){info("cff data is shifted");e=e.subarray(i);this.bytes=e}const a=e[0],r=e[1],s=e[2],n=e[3];return{obj:new CFFHeader(a,r,s,n),endPos:s}}parseDict(e){let t=0;function parseOperand(){let i=e[t++];if(30===i)return function parseFloatOperand(){let i="";const a=15,r=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],s=e.length;for(;t<s;){const s=e[t++],n=s>>4,o=15&s;if(n===a)break;i+=r[n];if(o===a)break;i+=r[o]}return parseFloat(i)}();if(28===i){i=e[t++];i=(i<<24|e[t++]<<16)>>16;return i}if(29===i){i=e[t++];i=i<<8|e[t++];i=i<<8|e[t++];i=i<<8|e[t++];return i}if(i>=32&&i<=246)return i-139;if(i>=247&&i<=250)return 256*(i-247)+e[t++]+108;if(i>=251&&i<=254)return-256*(i-251)-e[t++]-108;warn('CFFParser_parseDict: "'+i+'" is a reserved command.');return NaN}let i=[];const a=[];t=0;const r=e.length;for(;t<r;){let r=e[t];if(r<=21){12===r&&(r=r<<8|e[++t]);a.push([r,i]);i=[];++t}else i.push(parseOperand())}return a}parseIndex(e){const t=new CFFIndex,i=this.bytes,a=i[e++]<<8|i[e++],r=[];let s,n,o=e;if(0!==a){const t=i[e++],g=e+(a+1)*t-1;for(s=0,n=a+1;s<n;++s){let a=0;for(let r=0;r<t;++r){a<<=8;a+=i[e++]}r.push(g+a)}o=r[a]}for(s=0,n=r.length-1;s<n;++s){const e=r[s],a=r[s+1];t.add(i.subarray(e,a))}return{obj:t,endPos:o}}parseNameIndex(e){const t=[];for(let i=0,a=e.count;i<a;++i){const a=e.get(i);t.push(bytesToString(a))}return t}parseStringIndex(e){const t=new CFFStrings;for(let i=0,a=e.count;i<a;++i){const a=e.get(i);t.add(bytesToString(a))}return t}createDict(e,t,i){const a=new e(i);for(const[e,i]of t)a.setByKey(e,i);return a}parseCharString(e,t,i,a){if(!t||e.callDepth>10)return!1;let r=e.stackSize;const s=e.stack;let n=t.length;for(let o=0;o<n;){const g=t[o++];let c=null;if(12===g){const e=t[o++];if(0===e){t[o-2]=139;t[o-1]=22;r=0}else c=ki[e]}else if(28===g){s[r]=(t[o]<<24|t[o+1]<<16)>>16;o+=2;r++}else if(14===g){if(r>=4){r-=4;if(this.seacAnalysisEnabled){e.seac=s.slice(r,r+4);return!1}}c=Si[g]}else if(g>=32&&g<=246){s[r]=g-139;r++}else if(g>=247&&g<=254){s[r]=g<251?(g-247<<8)+t[o]+108:-(g-251<<8)-t[o]-108;o++;r++}else if(255===g){s[r]=(t[o]<<24|t[o+1]<<16|t[o+2]<<8|t[o+3])/65536;o+=4;r++}else if(19===g||20===g){e.hints+=r>>1;if(0===e.hints){t.copyWithin(o-1,o,-1);o-=1;n-=1;continue}o+=e.hints+7>>3;r%=2;c=Si[g]}else{if(10===g||29===g){const t=10===g?i:a;if(!t){c=Si[g];warn("Missing subrsIndex for "+c.id);return!1}let n=32768;t.count<1240?n=107:t.count<33900&&(n=1131);const o=s[--r]+n;if(o<0||o>=t.count||isNaN(o)){c=Si[g];warn("Out of bounds subrIndex for "+c.id);return!1}e.stackSize=r;e.callDepth++;if(!this.parseCharString(e,t.get(o),i,a))return!1;e.callDepth--;r=e.stackSize;continue}if(11===g){e.stackSize=r;return!0}if(0===g&&o===t.length){t[o-1]=14;c=Si[14]}else{if(9===g){t.copyWithin(o-1,o,-1);o-=1;n-=1;continue}c=Si[g]}}if(c){if(c.stem){e.hints+=r>>1;if(3===g||23===g)e.hasVStems=!0;else if(e.hasVStems&&(1===g||18===g)){warn("CFF stem hints are in wrong order");t[o-1]=1===g?3:23}}if("min"in c&&!e.undefStack&&r<c.min){warn("Not enough parameters for "+c.id+"; actual: "+r+", expected: "+c.min);if(0===r){t[o-1]=14;return!0}return!1}if(e.firstStackClearing&&c.stackClearing){e.firstStackClearing=!1;r-=c.min;r>=2&&c.stem?r%=2:r>1&&warn("Found too many parameters for stack-clearing command");r>0&&(e.width=s[r-1])}if("stackDelta"in c){"stackFn"in c&&c.stackFn(s,r);r+=c.stackDelta}else if(c.stackClearing)r=0;else if(c.resetStack){r=0;e.undefStack=!1}else if(c.undefStack){r=0;e.undefStack=!0;e.firstStackClearing=!1}}}n<t.length&&t.fill(14,n);e.stackSize=r;return!0}parseCharStrings({charStrings:e,localSubrIndex:t,globalSubrIndex:i,fdSelect:a,fdArray:r,privateDict:s}){const n=[],o=[],g=e.count;for(let c=0;c<g;c++){const g=e.get(c),C={callDepth:0,stackSize:0,stack:[],undefStack:!0,hints:0,firstStackClearing:!0,seac:null,width:null,hasVStems:!1};let h=!0,l=null,Q=s;if(a&&r.length){const e=a.getFDIndex(c);if(-1===e){warn("Glyph index is not in fd select.");h=!1}if(e>=r.length){warn("Invalid fd index for glyph index.");h=!1}if(h){Q=r[e].privateDict;l=Q.subrsIndex}}else t&&(l=t);h&&(h=this.parseCharString(C,g,l,i));if(null!==C.width){const e=Q.getByName("nominalWidthX");o[c]=e+C.width}else{const e=Q.getByName("defaultWidthX");o[c]=e}null!==C.seac&&(n[c]=C.seac);h||e.set(c,new Uint8Array([14]))}return{charStrings:e,seacs:n,widths:o}}emptyPrivateDictionary(e){const t=this.createDict(CFFPrivateDict,[],e.strings);e.setByKey(18,[0,0]);e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length){e.removeByName("Private");return}const i=t[0],a=t[1];if(0===i||a>=this.bytes.length){this.emptyPrivateDictionary(e);return}const r=a+i,s=this.bytes.subarray(a,r),n=this.parseDict(s),o=this.createDict(CFFPrivateDict,n,e.strings);e.privateDict=o;0===o.getByName("ExpansionFactor")&&o.setByName("ExpansionFactor",.06);if(!o.getByName("Subrs"))return;const g=o.getByName("Subrs"),c=a+g;if(0===g||c>=this.bytes.length){this.emptyPrivateDictionary(e);return}const C=this.parseIndex(c);o.subrsIndex=C.obj}parseCharsets(e,t,i,a){if(0===e)return new CFFCharset(!0,Gi.ISO_ADOBE,Qi);if(1===e)return new CFFCharset(!0,Gi.EXPERT,Ei);if(2===e)return new CFFCharset(!0,Gi.EXPERT_SUBSET,ui);const r=this.bytes,s=e,n=r[e++],o=[a?0:".notdef"];let g,c,C;t-=1;switch(n){case 0:for(C=0;C<t;C++){g=r[e++]<<8|r[e++];o.push(a?g:i.get(g))}break;case 1:for(;o.length<=t;){g=r[e++]<<8|r[e++];c=r[e++];for(C=0;C<=c;C++)o.push(a?g++:i.get(g++))}break;case 2:for(;o.length<=t;){g=r[e++]<<8|r[e++];c=r[e++]<<8|r[e++];for(C=0;C<=c;C++)o.push(a?g++:i.get(g++))}break;default:throw new FormatError("Unknown charset format")}const h=e,l=r.subarray(s,h);return new CFFCharset(!1,n,o,l)}parseEncoding(e,t,i,a){const r=Object.create(null),s=this.bytes;let n,o,g,c=!1,C=null;if(0===e||1===e){c=!0;n=e;const t=e?di:mi;for(o=0,g=a.length;o<g;o++){const e=t.indexOf(a[o]);-1!==e&&(r[e]=o)}}else{const t=e;n=s[e++];switch(127&n){case 0:const t=s[e++];for(o=1;o<=t;o++)r[s[e++]]=o;break;case 1:const i=s[e++];let a=1;for(o=0;o<i;o++){const t=s[e++],i=s[e++];for(let e=t;e<=t+i;e++)r[e]=a++}break;default:throw new FormatError(`Unknown encoding format: ${n} in CFF`)}const g=e;if(128&n){s[t]&=127;!function readSupplement(){const t=s[e++];for(o=0;o<t;o++){const t=s[e++],n=(s[e++]<<8)+(255&s[e++]);r[t]=a.indexOf(i.get(n))}}()}C=s.subarray(t,g)}n&=127;return new CFFEncoding(c,n,r,C)}parseFDSelect(e,t){const i=this.bytes,a=i[e++],r=[];let s;switch(a){case 0:for(s=0;s<t;++s){const t=i[e++];r.push(t)}break;case 3:const n=i[e++]<<8|i[e++];for(s=0;s<n;++s){let t=i[e++]<<8|i[e++];if(0===s&&0!==t){warn("parseFDSelect: The first range must have a first GID of 0 -- trying to recover.");t=0}const a=i[e++],n=i[e]<<8|i[e+1];for(let e=t;e<n;++e)r.push(a)}e+=2;break;default:throw new FormatError(`parseFDSelect: Unknown format "${a}".`)}if(r.length!==t)throw new FormatError("parseFDSelect: Invalid font data.");return new CFFFDSelect(a,r)}}class CFF{constructor(){this.header=null;this.names=[];this.topDict=null;this.strings=new CFFStrings;this.globalSubrIndex=null;this.encoding=null;this.charset=null;this.charStrings=null;this.fdArray=[];this.fdSelect=null;this.isCIDFont=!1}duplicateFirstGlyph(){if(this.charStrings.count>=65535){warn("Not enough space in charstrings to duplicate first glyph.");return}const e=this.charStrings.get(0);this.charStrings.add(e);this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){if(e<0||e>=this.charStrings.count)return!1;return this.charStrings.get(e).length>0}}class CFFHeader{constructor(e,t,i,a){this.major=e;this.minor=t;this.hdrSize=i;this.offSize=a}}class CFFStrings{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?Di[e]:e-Fi<=this.strings.length?this.strings[e-Fi]:Di[0]}getSID(e){let t=Di.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+Fi:-1}add(e){this.strings.push(e)}get count(){return this.strings.length}}class CFFIndex{constructor(){this.objects=[];this.length=0}add(e){this.length+=e.length;this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length;this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}class CFFDict{constructor(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nameToKeyMap;this.defaults=e.defaults;this.types=e.types;this.opcodes=e.opcodes;this.order=e.order;this.strings=t;this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;for(const i of t)if(isNaN(i)){warn(`Invalid CFFDict value: "${t}" for key "${e}".`);return!0}const i=this.types[e];"num"!==i&&"sid"!==i&&"offset"!==i||(t=t[0]);this.values[e]=t;return!0}setByName(e,t){if(!(e in this.nameToKeyMap))throw new FormatError(`Invalid dictionary name "${e}"`);this.values[this.nameToKeyMap[e]]=t}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new FormatError(`Invalid dictionary name ${e}"`);const t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const t={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const i of e){const e=Array.isArray(i[0])?(i[0][0]<<8)+i[0][1]:i[0];t.keyToNameMap[e]=i[1];t.nameToKeyMap[i[1]]=e;t.types[e]=i[2];t.defaults[e]=i[3];t.opcodes[e]=Array.isArray(i[0])?i[0]:[i[0]];t.order.push(e)}return t}}const Ri=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]];class CFFTopDict extends CFFDict{static get tables(){return shadow(this,"tables",this.createTables(Ri))}constructor(e){super(CFFTopDict.tables,e);this.privateDict=null}}const Ni=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class CFFPrivateDict extends CFFDict{static get tables(){return shadow(this,"tables",this.createTables(Ni))}constructor(e){super(CFFPrivateDict.tables,e);this.subrsIndex=null}}const Gi={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class CFFCharset{constructor(e,t,i,a){this.predefined=e;this.format=t;this.charset=i;this.raw=a}}class CFFEncoding{constructor(e,t,i,a){this.predefined=e;this.format=t;this.encoding=i;this.raw=a}}class CFFFDSelect{constructor(e,t){this.format=e;this.fdSelect=t}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}class CFFOffsetTracker{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new FormatError(`Already tracking location of ${e}`);this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,i){if(!(e in this.offsets))throw new FormatError(`Not tracking location of ${e}`);const a=i.data,r=this.offsets[e];for(let e=0,i=t.length;e<i;++e){const i=5*e+r,s=i+1,n=i+2,o=i+3,g=i+4;if(29!==a[i]||0!==a[s]||0!==a[n]||0!==a[o]||0!==a[g])throw new FormatError("writing to an offset that is not empty");const c=t[e];a[i]=29;a[s]=c>>24&255;a[n]=c>>16&255;a[o]=c>>8&255;a[g]=255&c}}}class CFFCompiler{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add(e){try{this.data.push(...e)}catch{this.data=this.data.concat(e)}this.length=this.data.length}},i=this.compileHeader(e.header);t.add(i);const a=this.compileNameIndex(e.names);t.add(a);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const i of e.fdArray){let e=t.slice(0);i.hasName("FontMatrix")&&(e=Util.transform(e,i.getByName("FontMatrix")));i.setByName("FontMatrix",e)}}const r=e.topDict.getByName("XUID");r?.length>16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let s=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(s.output);const n=s.trackers[0],o=this.compileStringIndex(e.strings.strings);t.add(o);const g=this.compileIndex(e.globalSubrIndex);t.add(g);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)n.setEntryLocation("Encoding",[e.encoding.format],t);else{const i=this.compileEncoding(e.encoding);n.setEntryLocation("Encoding",[t.length],t);t.add(i)}const c=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);n.setEntryLocation("charset",[t.length],t);t.add(c);const C=this.compileCharStrings(e.charStrings);n.setEntryLocation("CharStrings",[t.length],t);t.add(C);if(e.isCIDFont){n.setEntryLocation("FDSelect",[t.length],t);const i=this.compileFDSelect(e.fdSelect);t.add(i);s=this.compileTopDicts(e.fdArray,t.length,!0);n.setEntryLocation("FDArray",[t.length],t);t.add(s.output);const a=s.trackers;this.compilePrivateDicts(e.fdArray,a,t)}this.compilePrivateDicts([e.topDict],[n],t);t.add([0]);return t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return shadow(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const i=CFFCompiler.EncodeFloatRegExp.exec(t);if(i){const a=parseFloat("1e"+((i[2]?+i[2]:0)+i[1].length));t=(Math.round(e*a)/a).toString()}let a,r,s="";for(a=0,r=t.length;a<r;++a){const e=t[a];s+="e"===e?"-"===t[++a]?"c":"b":"."===e?"a":"-"===e?"e":e}s+=1&s.length?"f":"ff";const n=[30];for(a=0,r=s.length;a<r;a+=2)n.push(parseInt(s.substring(a,a+2),16));return n}encodeInteger(e){let t;t=e>=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e];return t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new CFFIndex;for(const i of e){const e=Math.min(i.length,127);let a=new Array(e);for(let t=0;t<e;t++){let e=i[t];(e<"!"||e>"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_");a[t]=e}a=a.join("");""===a&&(a="Bad_Font_Name");t.add(stringToBytes(a))}return this.compileIndex(t)}compileTopDicts(e,t,i){const a=[];let r=new CFFIndex;for(const s of e){if(i){s.removeByName("CIDFontVersion");s.removeByName("CIDFontRevision");s.removeByName("CIDFontType");s.removeByName("CIDCount");s.removeByName("UIDBase")}const e=new CFFOffsetTracker,n=this.compileDict(s,e);a.push(e);r.add(n);e.offset(t)}r=this.compileIndex(r,a);return{trackers:a,output:r}}compilePrivateDicts(e,t,i){for(let a=0,r=e.length;a<r;++a){const r=e[a],s=r.privateDict;if(!s||!r.hasName("Private"))throw new FormatError("There must be a private dictionary.");const n=new CFFOffsetTracker,o=this.compileDict(s,n);let g=i.length;n.offset(g);o.length||(g=0);t[a].setEntryLocation("Private",[o.length,g],i);i.add(o);if(s.subrsIndex&&s.hasName("Subrs")){const e=this.compileIndex(s.subrsIndex);n.setEntryLocation("Subrs",[o.length],i);i.add(e)}}}compileDict(e,t){const i=[];for(const a of e.order){if(!(a in e.values))continue;let r=e.values[a],s=e.types[a];Array.isArray(s)||(s=[s]);Array.isArray(r)||(r=[r]);if(0!==r.length){for(let n=0,o=s.length;n<o;++n){const o=s[n],g=r[n];switch(o){case"num":case"sid":i.push(...this.encodeNumber(g));break;case"offset":const s=e.keyToNameMap[a];t.isTracking(s)||t.track(s,i.length);i.push(29,0,0,0,0);break;case"array":case"delta":i.push(...this.encodeNumber(g));for(let e=1,t=r.length;e<t;++e)i.push(...this.encodeNumber(r[e]));break;default:throw new FormatError(`Unknown data type of ${o}`)}}i.push(...e.opcodes[a])}}return i}compileStringIndex(e){const t=new CFFIndex;for(const i of e)t.add(stringToBytes(i));return this.compileIndex(t)}compileCharStrings(e){const t=new CFFIndex;for(let i=0;i<e.count;i++){const a=e.get(i);0!==a.length?t.add(a):t.add(new Uint8Array([139,14]))}return this.compileIndex(t)}compileCharset(e,t,i,a){let r;const s=t-1;if(a)r=new Uint8Array([2,0,0,s>>8&255,255&s]);else{r=new Uint8Array(1+2*s);r[0]=0;let t=0;const a=e.charset.length;let n=!1;for(let s=1;s<r.length;s+=2){let o=0;if(t<a){const a=e.charset[t++];o=i.getSID(a);if(-1===o){o=0;if(!n){n=!0;warn(`Couldn't find ${a} in CFF strings`)}}}r[s]=o>>8&255;r[s+1]=255&o}}return this.compileTypedArray(r)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let i,a;switch(t){case 0:i=new Uint8Array(1+e.fdSelect.length);i[0]=t;for(a=0;a<e.fdSelect.length;a++)i[a+1]=e.fdSelect[a];break;case 3:const r=0;let s=e.fdSelect[0];const n=[t,0,0,r>>8&255,255&r,s];for(a=1;a<e.fdSelect.length;a++){const t=e.fdSelect[a];if(t!==s){n.push(a>>8&255,255&a,t);s=t}}const o=(n.length-3)/3;n[1]=o>>8&255;n[2]=255&o;n.push(a>>8&255,255&a);i=new Uint8Array(n)}return this.compileTypedArray(i)}compileTypedArray(e){return Array.from(e)}compileIndex(e,t=[]){const i=e.objects,a=i.length;if(0===a)return[0,0];const r=[a>>8&255,255&a];let s,n,o=1;for(s=0;s<a;++s)o+=i[s].length;n=o<256?1:o<65536?2:o<16777216?3:4;r.push(n);let g=1;for(s=0;s<a+1;s++){1===n?r.push(255&g):2===n?r.push(g>>8&255,255&g):3===n?r.push(g>>16&255,g>>8&255,255&g):r.push(g>>>24&255,g>>16&255,g>>8&255,255&g);i[s]&&(g+=i[s].length)}for(s=0;s<a;s++){t[s]&&t[s].offset(r.length);r.push(...i[s])}return r}}const xi=getLookupTableFactory((function(e){e.A=65;e.AE=198;e.AEacute=508;e.AEmacron=482;e.AEsmall=63462;e.Aacute=193;e.Aacutesmall=63457;e.Abreve=258;e.Abreveacute=7854;e.Abrevecyrillic=1232;e.Abrevedotbelow=7862;e.Abrevegrave=7856;e.Abrevehookabove=7858;e.Abrevetilde=7860;e.Acaron=461;e.Acircle=9398;e.Acircumflex=194;e.Acircumflexacute=7844;e.Acircumflexdotbelow=7852;e.Acircumflexgrave=7846;e.Acircumflexhookabove=7848;e.Acircumflexsmall=63458;e.Acircumflextilde=7850;e.Acute=63177;e.Acutesmall=63412;e.Acyrillic=1040;e.Adblgrave=512;e.Adieresis=196;e.Adieresiscyrillic=1234;e.Adieresismacron=478;e.Adieresissmall=63460;e.Adotbelow=7840;e.Adotmacron=480;e.Agrave=192;e.Agravesmall=63456;e.Ahookabove=7842;e.Aiecyrillic=1236;e.Ainvertedbreve=514;e.Alpha=913;e.Alphatonos=902;e.Amacron=256;e.Amonospace=65313;e.Aogonek=260;e.Aring=197;e.Aringacute=506;e.Aringbelow=7680;e.Aringsmall=63461;e.Asmall=63329;e.Atilde=195;e.Atildesmall=63459;e.Aybarmenian=1329;e.B=66;e.Bcircle=9399;e.Bdotaccent=7682;e.Bdotbelow=7684;e.Becyrillic=1041;e.Benarmenian=1330;e.Beta=914;e.Bhook=385;e.Blinebelow=7686;e.Bmonospace=65314;e.Brevesmall=63220;e.Bsmall=63330;e.Btopbar=386;e.C=67;e.Caarmenian=1342;e.Cacute=262;e.Caron=63178;e.Caronsmall=63221;e.Ccaron=268;e.Ccedilla=199;e.Ccedillaacute=7688;e.Ccedillasmall=63463;e.Ccircle=9400;e.Ccircumflex=264;e.Cdot=266;e.Cdotaccent=266;e.Cedillasmall=63416;e.Chaarmenian=1353;e.Cheabkhasiancyrillic=1212;e.Checyrillic=1063;e.Chedescenderabkhasiancyrillic=1214;e.Chedescendercyrillic=1206;e.Chedieresiscyrillic=1268;e.Cheharmenian=1347;e.Chekhakassiancyrillic=1227;e.Cheverticalstrokecyrillic=1208;e.Chi=935;e.Chook=391;e.Circumflexsmall=63222;e.Cmonospace=65315;e.Coarmenian=1361;e.Csmall=63331;e.D=68;e.DZ=497;e.DZcaron=452;e.Daarmenian=1332;e.Dafrican=393;e.Dcaron=270;e.Dcedilla=7696;e.Dcircle=9401;e.Dcircumflexbelow=7698;e.Dcroat=272;e.Ddotaccent=7690;e.Ddotbelow=7692;e.Decyrillic=1044;e.Deicoptic=1006;e.Delta=8710;e.Deltagreek=916;e.Dhook=394;e.Dieresis=63179;e.DieresisAcute=63180;e.DieresisGrave=63181;e.Dieresissmall=63400;e.Digammagreek=988;e.Djecyrillic=1026;e.Dlinebelow=7694;e.Dmonospace=65316;e.Dotaccentsmall=63223;e.Dslash=272;e.Dsmall=63332;e.Dtopbar=395;e.Dz=498;e.Dzcaron=453;e.Dzeabkhasiancyrillic=1248;e.Dzecyrillic=1029;e.Dzhecyrillic=1039;e.E=69;e.Eacute=201;e.Eacutesmall=63465;e.Ebreve=276;e.Ecaron=282;e.Ecedillabreve=7708;e.Echarmenian=1333;e.Ecircle=9402;e.Ecircumflex=202;e.Ecircumflexacute=7870;e.Ecircumflexbelow=7704;e.Ecircumflexdotbelow=7878;e.Ecircumflexgrave=7872;e.Ecircumflexhookabove=7874;e.Ecircumflexsmall=63466;e.Ecircumflextilde=7876;e.Ecyrillic=1028;e.Edblgrave=516;e.Edieresis=203;e.Edieresissmall=63467;e.Edot=278;e.Edotaccent=278;e.Edotbelow=7864;e.Efcyrillic=1060;e.Egrave=200;e.Egravesmall=63464;e.Eharmenian=1335;e.Ehookabove=7866;e.Eightroman=8551;e.Einvertedbreve=518;e.Eiotifiedcyrillic=1124;e.Elcyrillic=1051;e.Elevenroman=8554;e.Emacron=274;e.Emacronacute=7702;e.Emacrongrave=7700;e.Emcyrillic=1052;e.Emonospace=65317;e.Encyrillic=1053;e.Endescendercyrillic=1186;e.Eng=330;e.Enghecyrillic=1188;e.Enhookcyrillic=1223;e.Eogonek=280;e.Eopen=400;e.Epsilon=917;e.Epsilontonos=904;e.Ercyrillic=1056;e.Ereversed=398;e.Ereversedcyrillic=1069;e.Escyrillic=1057;e.Esdescendercyrillic=1194;e.Esh=425;e.Esmall=63333;e.Eta=919;e.Etarmenian=1336;e.Etatonos=905;e.Eth=208;e.Ethsmall=63472;e.Etilde=7868;e.Etildebelow=7706;e.Euro=8364;e.Ezh=439;e.Ezhcaron=494;e.Ezhreversed=440;e.F=70;e.Fcircle=9403;e.Fdotaccent=7710;e.Feharmenian=1366;e.Feicoptic=996;e.Fhook=401;e.Fitacyrillic=1138;e.Fiveroman=8548;e.Fmonospace=65318;e.Fourroman=8547;e.Fsmall=63334;e.G=71;e.GBsquare=13191;e.Gacute=500;e.Gamma=915;e.Gammaafrican=404;e.Gangiacoptic=1002;e.Gbreve=286;e.Gcaron=486;e.Gcedilla=290;e.Gcircle=9404;e.Gcircumflex=284;e.Gcommaaccent=290;e.Gdot=288;e.Gdotaccent=288;e.Gecyrillic=1043;e.Ghadarmenian=1346;e.Ghemiddlehookcyrillic=1172;e.Ghestrokecyrillic=1170;e.Gheupturncyrillic=1168;e.Ghook=403;e.Gimarmenian=1331;e.Gjecyrillic=1027;e.Gmacron=7712;e.Gmonospace=65319;e.Grave=63182;e.Gravesmall=63328;e.Gsmall=63335;e.Gsmallhook=667;e.Gstroke=484;e.H=72;e.H18533=9679;e.H18543=9642;e.H18551=9643;e.H22073=9633;e.HPsquare=13259;e.Haabkhasiancyrillic=1192;e.Hadescendercyrillic=1202;e.Hardsigncyrillic=1066;e.Hbar=294;e.Hbrevebelow=7722;e.Hcedilla=7720;e.Hcircle=9405;e.Hcircumflex=292;e.Hdieresis=7718;e.Hdotaccent=7714;e.Hdotbelow=7716;e.Hmonospace=65320;e.Hoarmenian=1344;e.Horicoptic=1e3;e.Hsmall=63336;e.Hungarumlaut=63183;e.Hungarumlautsmall=63224;e.Hzsquare=13200;e.I=73;e.IAcyrillic=1071;e.IJ=306;e.IUcyrillic=1070;e.Iacute=205;e.Iacutesmall=63469;e.Ibreve=300;e.Icaron=463;e.Icircle=9406;e.Icircumflex=206;e.Icircumflexsmall=63470;e.Icyrillic=1030;e.Idblgrave=520;e.Idieresis=207;e.Idieresisacute=7726;e.Idieresiscyrillic=1252;e.Idieresissmall=63471;e.Idot=304;e.Idotaccent=304;e.Idotbelow=7882;e.Iebrevecyrillic=1238;e.Iecyrillic=1045;e.Ifraktur=8465;e.Igrave=204;e.Igravesmall=63468;e.Ihookabove=7880;e.Iicyrillic=1048;e.Iinvertedbreve=522;e.Iishortcyrillic=1049;e.Imacron=298;e.Imacroncyrillic=1250;e.Imonospace=65321;e.Iniarmenian=1339;e.Iocyrillic=1025;e.Iogonek=302;e.Iota=921;e.Iotaafrican=406;e.Iotadieresis=938;e.Iotatonos=906;e.Ismall=63337;e.Istroke=407;e.Itilde=296;e.Itildebelow=7724;e.Izhitsacyrillic=1140;e.Izhitsadblgravecyrillic=1142;e.J=74;e.Jaarmenian=1345;e.Jcircle=9407;e.Jcircumflex=308;e.Jecyrillic=1032;e.Jheharmenian=1355;e.Jmonospace=65322;e.Jsmall=63338;e.K=75;e.KBsquare=13189;e.KKsquare=13261;e.Kabashkircyrillic=1184;e.Kacute=7728;e.Kacyrillic=1050;e.Kadescendercyrillic=1178;e.Kahookcyrillic=1219;e.Kappa=922;e.Kastrokecyrillic=1182;e.Kaverticalstrokecyrillic=1180;e.Kcaron=488;e.Kcedilla=310;e.Kcircle=9408;e.Kcommaaccent=310;e.Kdotbelow=7730;e.Keharmenian=1364;e.Kenarmenian=1343;e.Khacyrillic=1061;e.Kheicoptic=998;e.Khook=408;e.Kjecyrillic=1036;e.Klinebelow=7732;e.Kmonospace=65323;e.Koppacyrillic=1152;e.Koppagreek=990;e.Ksicyrillic=1134;e.Ksmall=63339;e.L=76;e.LJ=455;e.LL=63167;e.Lacute=313;e.Lambda=923;e.Lcaron=317;e.Lcedilla=315;e.Lcircle=9409;e.Lcircumflexbelow=7740;e.Lcommaaccent=315;e.Ldot=319;e.Ldotaccent=319;e.Ldotbelow=7734;e.Ldotbelowmacron=7736;e.Liwnarmenian=1340;e.Lj=456;e.Ljecyrillic=1033;e.Llinebelow=7738;e.Lmonospace=65324;e.Lslash=321;e.Lslashsmall=63225;e.Lsmall=63340;e.M=77;e.MBsquare=13190;e.Macron=63184;e.Macronsmall=63407;e.Macute=7742;e.Mcircle=9410;e.Mdotaccent=7744;e.Mdotbelow=7746;e.Menarmenian=1348;e.Mmonospace=65325;e.Msmall=63341;e.Mturned=412;e.Mu=924;e.N=78;e.NJ=458;e.Nacute=323;e.Ncaron=327;e.Ncedilla=325;e.Ncircle=9411;e.Ncircumflexbelow=7754;e.Ncommaaccent=325;e.Ndotaccent=7748;e.Ndotbelow=7750;e.Nhookleft=413;e.Nineroman=8552;e.Nj=459;e.Njecyrillic=1034;e.Nlinebelow=7752;e.Nmonospace=65326;e.Nowarmenian=1350;e.Nsmall=63342;e.Ntilde=209;e.Ntildesmall=63473;e.Nu=925;e.O=79;e.OE=338;e.OEsmall=63226;e.Oacute=211;e.Oacutesmall=63475;e.Obarredcyrillic=1256;e.Obarreddieresiscyrillic=1258;e.Obreve=334;e.Ocaron=465;e.Ocenteredtilde=415;e.Ocircle=9412;e.Ocircumflex=212;e.Ocircumflexacute=7888;e.Ocircumflexdotbelow=7896;e.Ocircumflexgrave=7890;e.Ocircumflexhookabove=7892;e.Ocircumflexsmall=63476;e.Ocircumflextilde=7894;e.Ocyrillic=1054;e.Odblacute=336;e.Odblgrave=524;e.Odieresis=214;e.Odieresiscyrillic=1254;e.Odieresissmall=63478;e.Odotbelow=7884;e.Ogoneksmall=63227;e.Ograve=210;e.Ogravesmall=63474;e.Oharmenian=1365;e.Ohm=8486;e.Ohookabove=7886;e.Ohorn=416;e.Ohornacute=7898;e.Ohorndotbelow=7906;e.Ohorngrave=7900;e.Ohornhookabove=7902;e.Ohorntilde=7904;e.Ohungarumlaut=336;e.Oi=418;e.Oinvertedbreve=526;e.Omacron=332;e.Omacronacute=7762;e.Omacrongrave=7760;e.Omega=8486;e.Omegacyrillic=1120;e.Omegagreek=937;e.Omegaroundcyrillic=1146;e.Omegatitlocyrillic=1148;e.Omegatonos=911;e.Omicron=927;e.Omicrontonos=908;e.Omonospace=65327;e.Oneroman=8544;e.Oogonek=490;e.Oogonekmacron=492;e.Oopen=390;e.Oslash=216;e.Oslashacute=510;e.Oslashsmall=63480;e.Osmall=63343;e.Ostrokeacute=510;e.Otcyrillic=1150;e.Otilde=213;e.Otildeacute=7756;e.Otildedieresis=7758;e.Otildesmall=63477;e.P=80;e.Pacute=7764;e.Pcircle=9413;e.Pdotaccent=7766;e.Pecyrillic=1055;e.Peharmenian=1354;e.Pemiddlehookcyrillic=1190;e.Phi=934;e.Phook=420;e.Pi=928;e.Piwrarmenian=1363;e.Pmonospace=65328;e.Psi=936;e.Psicyrillic=1136;e.Psmall=63344;e.Q=81;e.Qcircle=9414;e.Qmonospace=65329;e.Qsmall=63345;e.R=82;e.Raarmenian=1356;e.Racute=340;e.Rcaron=344;e.Rcedilla=342;e.Rcircle=9415;e.Rcommaaccent=342;e.Rdblgrave=528;e.Rdotaccent=7768;e.Rdotbelow=7770;e.Rdotbelowmacron=7772;e.Reharmenian=1360;e.Rfraktur=8476;e.Rho=929;e.Ringsmall=63228;e.Rinvertedbreve=530;e.Rlinebelow=7774;e.Rmonospace=65330;e.Rsmall=63346;e.Rsmallinverted=641;e.Rsmallinvertedsuperior=694;e.S=83;e.SF010000=9484;e.SF020000=9492;e.SF030000=9488;e.SF040000=9496;e.SF050000=9532;e.SF060000=9516;e.SF070000=9524;e.SF080000=9500;e.SF090000=9508;e.SF100000=9472;e.SF110000=9474;e.SF190000=9569;e.SF200000=9570;e.SF210000=9558;e.SF220000=9557;e.SF230000=9571;e.SF240000=9553;e.SF250000=9559;e.SF260000=9565;e.SF270000=9564;e.SF280000=9563;e.SF360000=9566;e.SF370000=9567;e.SF380000=9562;e.SF390000=9556;e.SF400000=9577;e.SF410000=9574;e.SF420000=9568;e.SF430000=9552;e.SF440000=9580;e.SF450000=9575;e.SF460000=9576;e.SF470000=9572;e.SF480000=9573;e.SF490000=9561;e.SF500000=9560;e.SF510000=9554;e.SF520000=9555;e.SF530000=9579;e.SF540000=9578;e.Sacute=346;e.Sacutedotaccent=7780;e.Sampigreek=992;e.Scaron=352;e.Scarondotaccent=7782;e.Scaronsmall=63229;e.Scedilla=350;e.Schwa=399;e.Schwacyrillic=1240;e.Schwadieresiscyrillic=1242;e.Scircle=9416;e.Scircumflex=348;e.Scommaaccent=536;e.Sdotaccent=7776;e.Sdotbelow=7778;e.Sdotbelowdotaccent=7784;e.Seharmenian=1357;e.Sevenroman=8550;e.Shaarmenian=1351;e.Shacyrillic=1064;e.Shchacyrillic=1065;e.Sheicoptic=994;e.Shhacyrillic=1210;e.Shimacoptic=1004;e.Sigma=931;e.Sixroman=8549;e.Smonospace=65331;e.Softsigncyrillic=1068;e.Ssmall=63347;e.Stigmagreek=986;e.T=84;e.Tau=932;e.Tbar=358;e.Tcaron=356;e.Tcedilla=354;e.Tcircle=9417;e.Tcircumflexbelow=7792;e.Tcommaaccent=354;e.Tdotaccent=7786;e.Tdotbelow=7788;e.Tecyrillic=1058;e.Tedescendercyrillic=1196;e.Tenroman=8553;e.Tetsecyrillic=1204;e.Theta=920;e.Thook=428;e.Thorn=222;e.Thornsmall=63486;e.Threeroman=8546;e.Tildesmall=63230;e.Tiwnarmenian=1359;e.Tlinebelow=7790;e.Tmonospace=65332;e.Toarmenian=1337;e.Tonefive=444;e.Tonesix=388;e.Tonetwo=423;e.Tretroflexhook=430;e.Tsecyrillic=1062;e.Tshecyrillic=1035;e.Tsmall=63348;e.Twelveroman=8555;e.Tworoman=8545;e.U=85;e.Uacute=218;e.Uacutesmall=63482;e.Ubreve=364;e.Ucaron=467;e.Ucircle=9418;e.Ucircumflex=219;e.Ucircumflexbelow=7798;e.Ucircumflexsmall=63483;e.Ucyrillic=1059;e.Udblacute=368;e.Udblgrave=532;e.Udieresis=220;e.Udieresisacute=471;e.Udieresisbelow=7794;e.Udieresiscaron=473;e.Udieresiscyrillic=1264;e.Udieresisgrave=475;e.Udieresismacron=469;e.Udieresissmall=63484;e.Udotbelow=7908;e.Ugrave=217;e.Ugravesmall=63481;e.Uhookabove=7910;e.Uhorn=431;e.Uhornacute=7912;e.Uhorndotbelow=7920;e.Uhorngrave=7914;e.Uhornhookabove=7916;e.Uhorntilde=7918;e.Uhungarumlaut=368;e.Uhungarumlautcyrillic=1266;e.Uinvertedbreve=534;e.Ukcyrillic=1144;e.Umacron=362;e.Umacroncyrillic=1262;e.Umacrondieresis=7802;e.Umonospace=65333;e.Uogonek=370;e.Upsilon=933;e.Upsilon1=978;e.Upsilonacutehooksymbolgreek=979;e.Upsilonafrican=433;e.Upsilondieresis=939;e.Upsilondieresishooksymbolgreek=980;e.Upsilonhooksymbol=978;e.Upsilontonos=910;e.Uring=366;e.Ushortcyrillic=1038;e.Usmall=63349;e.Ustraightcyrillic=1198;e.Ustraightstrokecyrillic=1200;e.Utilde=360;e.Utildeacute=7800;e.Utildebelow=7796;e.V=86;e.Vcircle=9419;e.Vdotbelow=7806;e.Vecyrillic=1042;e.Vewarmenian=1358;e.Vhook=434;e.Vmonospace=65334;e.Voarmenian=1352;e.Vsmall=63350;e.Vtilde=7804;e.W=87;e.Wacute=7810;e.Wcircle=9420;e.Wcircumflex=372;e.Wdieresis=7812;e.Wdotaccent=7814;e.Wdotbelow=7816;e.Wgrave=7808;e.Wmonospace=65335;e.Wsmall=63351;e.X=88;e.Xcircle=9421;e.Xdieresis=7820;e.Xdotaccent=7818;e.Xeharmenian=1341;e.Xi=926;e.Xmonospace=65336;e.Xsmall=63352;e.Y=89;e.Yacute=221;e.Yacutesmall=63485;e.Yatcyrillic=1122;e.Ycircle=9422;e.Ycircumflex=374;e.Ydieresis=376;e.Ydieresissmall=63487;e.Ydotaccent=7822;e.Ydotbelow=7924;e.Yericyrillic=1067;e.Yerudieresiscyrillic=1272;e.Ygrave=7922;e.Yhook=435;e.Yhookabove=7926;e.Yiarmenian=1349;e.Yicyrillic=1031;e.Yiwnarmenian=1362;e.Ymonospace=65337;e.Ysmall=63353;e.Ytilde=7928;e.Yusbigcyrillic=1130;e.Yusbigiotifiedcyrillic=1132;e.Yuslittlecyrillic=1126;e.Yuslittleiotifiedcyrillic=1128;e.Z=90;e.Zaarmenian=1334;e.Zacute=377;e.Zcaron=381;e.Zcaronsmall=63231;e.Zcircle=9423;e.Zcircumflex=7824;e.Zdot=379;e.Zdotaccent=379;e.Zdotbelow=7826;e.Zecyrillic=1047;e.Zedescendercyrillic=1176;e.Zedieresiscyrillic=1246;e.Zeta=918;e.Zhearmenian=1338;e.Zhebrevecyrillic=1217;e.Zhecyrillic=1046;e.Zhedescendercyrillic=1174;e.Zhedieresiscyrillic=1244;e.Zlinebelow=7828;e.Zmonospace=65338;e.Zsmall=63354;e.Zstroke=437;e.a=97;e.aabengali=2438;e.aacute=225;e.aadeva=2310;e.aagujarati=2694;e.aagurmukhi=2566;e.aamatragurmukhi=2622;e.aarusquare=13059;e.aavowelsignbengali=2494;e.aavowelsigndeva=2366;e.aavowelsigngujarati=2750;e.abbreviationmarkarmenian=1375;e.abbreviationsigndeva=2416;e.abengali=2437;e.abopomofo=12570;e.abreve=259;e.abreveacute=7855;e.abrevecyrillic=1233;e.abrevedotbelow=7863;e.abrevegrave=7857;e.abrevehookabove=7859;e.abrevetilde=7861;e.acaron=462;e.acircle=9424;e.acircumflex=226;e.acircumflexacute=7845;e.acircumflexdotbelow=7853;e.acircumflexgrave=7847;e.acircumflexhookabove=7849;e.acircumflextilde=7851;e.acute=180;e.acutebelowcmb=791;e.acutecmb=769;e.acutecomb=769;e.acutedeva=2388;e.acutelowmod=719;e.acutetonecmb=833;e.acyrillic=1072;e.adblgrave=513;e.addakgurmukhi=2673;e.adeva=2309;e.adieresis=228;e.adieresiscyrillic=1235;e.adieresismacron=479;e.adotbelow=7841;e.adotmacron=481;e.ae=230;e.aeacute=509;e.aekorean=12624;e.aemacron=483;e.afii00208=8213;e.afii08941=8356;e.afii10017=1040;e.afii10018=1041;e.afii10019=1042;e.afii10020=1043;e.afii10021=1044;e.afii10022=1045;e.afii10023=1025;e.afii10024=1046;e.afii10025=1047;e.afii10026=1048;e.afii10027=1049;e.afii10028=1050;e.afii10029=1051;e.afii10030=1052;e.afii10031=1053;e.afii10032=1054;e.afii10033=1055;e.afii10034=1056;e.afii10035=1057;e.afii10036=1058;e.afii10037=1059;e.afii10038=1060;e.afii10039=1061;e.afii10040=1062;e.afii10041=1063;e.afii10042=1064;e.afii10043=1065;e.afii10044=1066;e.afii10045=1067;e.afii10046=1068;e.afii10047=1069;e.afii10048=1070;e.afii10049=1071;e.afii10050=1168;e.afii10051=1026;e.afii10052=1027;e.afii10053=1028;e.afii10054=1029;e.afii10055=1030;e.afii10056=1031;e.afii10057=1032;e.afii10058=1033;e.afii10059=1034;e.afii10060=1035;e.afii10061=1036;e.afii10062=1038;e.afii10063=63172;e.afii10064=63173;e.afii10065=1072;e.afii10066=1073;e.afii10067=1074;e.afii10068=1075;e.afii10069=1076;e.afii10070=1077;e.afii10071=1105;e.afii10072=1078;e.afii10073=1079;e.afii10074=1080;e.afii10075=1081;e.afii10076=1082;e.afii10077=1083;e.afii10078=1084;e.afii10079=1085;e.afii10080=1086;e.afii10081=1087;e.afii10082=1088;e.afii10083=1089;e.afii10084=1090;e.afii10085=1091;e.afii10086=1092;e.afii10087=1093;e.afii10088=1094;e.afii10089=1095;e.afii10090=1096;e.afii10091=1097;e.afii10092=1098;e.afii10093=1099;e.afii10094=1100;e.afii10095=1101;e.afii10096=1102;e.afii10097=1103;e.afii10098=1169;e.afii10099=1106;e.afii10100=1107;e.afii10101=1108;e.afii10102=1109;e.afii10103=1110;e.afii10104=1111;e.afii10105=1112;e.afii10106=1113;e.afii10107=1114;e.afii10108=1115;e.afii10109=1116;e.afii10110=1118;e.afii10145=1039;e.afii10146=1122;e.afii10147=1138;e.afii10148=1140;e.afii10192=63174;e.afii10193=1119;e.afii10194=1123;e.afii10195=1139;e.afii10196=1141;e.afii10831=63175;e.afii10832=63176;e.afii10846=1241;e.afii299=8206;e.afii300=8207;e.afii301=8205;e.afii57381=1642;e.afii57388=1548;e.afii57392=1632;e.afii57393=1633;e.afii57394=1634;e.afii57395=1635;e.afii57396=1636;e.afii57397=1637;e.afii57398=1638;e.afii57399=1639;e.afii57400=1640;e.afii57401=1641;e.afii57403=1563;e.afii57407=1567;e.afii57409=1569;e.afii57410=1570;e.afii57411=1571;e.afii57412=1572;e.afii57413=1573;e.afii57414=1574;e.afii57415=1575;e.afii57416=1576;e.afii57417=1577;e.afii57418=1578;e.afii57419=1579;e.afii57420=1580;e.afii57421=1581;e.afii57422=1582;e.afii57423=1583;e.afii57424=1584;e.afii57425=1585;e.afii57426=1586;e.afii57427=1587;e.afii57428=1588;e.afii57429=1589;e.afii57430=1590;e.afii57431=1591;e.afii57432=1592;e.afii57433=1593;e.afii57434=1594;e.afii57440=1600;e.afii57441=1601;e.afii57442=1602;e.afii57443=1603;e.afii57444=1604;e.afii57445=1605;e.afii57446=1606;e.afii57448=1608;e.afii57449=1609;e.afii57450=1610;e.afii57451=1611;e.afii57452=1612;e.afii57453=1613;e.afii57454=1614;e.afii57455=1615;e.afii57456=1616;e.afii57457=1617;e.afii57458=1618;e.afii57470=1607;e.afii57505=1700;e.afii57506=1662;e.afii57507=1670;e.afii57508=1688;e.afii57509=1711;e.afii57511=1657;e.afii57512=1672;e.afii57513=1681;e.afii57514=1722;e.afii57519=1746;e.afii57534=1749;e.afii57636=8362;e.afii57645=1470;e.afii57658=1475;e.afii57664=1488;e.afii57665=1489;e.afii57666=1490;e.afii57667=1491;e.afii57668=1492;e.afii57669=1493;e.afii57670=1494;e.afii57671=1495;e.afii57672=1496;e.afii57673=1497;e.afii57674=1498;e.afii57675=1499;e.afii57676=1500;e.afii57677=1501;e.afii57678=1502;e.afii57679=1503;e.afii57680=1504;e.afii57681=1505;e.afii57682=1506;e.afii57683=1507;e.afii57684=1508;e.afii57685=1509;e.afii57686=1510;e.afii57687=1511;e.afii57688=1512;e.afii57689=1513;e.afii57690=1514;e.afii57694=64298;e.afii57695=64299;e.afii57700=64331;e.afii57705=64287;e.afii57716=1520;e.afii57717=1521;e.afii57718=1522;e.afii57723=64309;e.afii57793=1460;e.afii57794=1461;e.afii57795=1462;e.afii57796=1467;e.afii57797=1464;e.afii57798=1463;e.afii57799=1456;e.afii57800=1458;e.afii57801=1457;e.afii57802=1459;e.afii57803=1474;e.afii57804=1473;e.afii57806=1465;e.afii57807=1468;e.afii57839=1469;e.afii57841=1471;e.afii57842=1472;e.afii57929=700;e.afii61248=8453;e.afii61289=8467;e.afii61352=8470;e.afii61573=8236;e.afii61574=8237;e.afii61575=8238;e.afii61664=8204;e.afii63167=1645;e.afii64937=701;e.agrave=224;e.agujarati=2693;e.agurmukhi=2565;e.ahiragana=12354;e.ahookabove=7843;e.aibengali=2448;e.aibopomofo=12574;e.aideva=2320;e.aiecyrillic=1237;e.aigujarati=2704;e.aigurmukhi=2576;e.aimatragurmukhi=2632;e.ainarabic=1593;e.ainfinalarabic=65226;e.aininitialarabic=65227;e.ainmedialarabic=65228;e.ainvertedbreve=515;e.aivowelsignbengali=2504;e.aivowelsigndeva=2376;e.aivowelsigngujarati=2760;e.akatakana=12450;e.akatakanahalfwidth=65393;e.akorean=12623;e.alef=1488;e.alefarabic=1575;e.alefdageshhebrew=64304;e.aleffinalarabic=65166;e.alefhamzaabovearabic=1571;e.alefhamzaabovefinalarabic=65156;e.alefhamzabelowarabic=1573;e.alefhamzabelowfinalarabic=65160;e.alefhebrew=1488;e.aleflamedhebrew=64335;e.alefmaddaabovearabic=1570;e.alefmaddaabovefinalarabic=65154;e.alefmaksuraarabic=1609;e.alefmaksurafinalarabic=65264;e.alefmaksurainitialarabic=65267;e.alefmaksuramedialarabic=65268;e.alefpatahhebrew=64302;e.alefqamatshebrew=64303;e.aleph=8501;e.allequal=8780;e.alpha=945;e.alphatonos=940;e.amacron=257;e.amonospace=65345;e.ampersand=38;e.ampersandmonospace=65286;e.ampersandsmall=63270;e.amsquare=13250;e.anbopomofo=12578;e.angbopomofo=12580;e.angbracketleft=12296;e.angbracketright=12297;e.angkhankhuthai=3674;e.angle=8736;e.anglebracketleft=12296;e.anglebracketleftvertical=65087;e.anglebracketright=12297;e.anglebracketrightvertical=65088;e.angleleft=9001;e.angleright=9002;e.angstrom=8491;e.anoteleia=903;e.anudattadeva=2386;e.anusvarabengali=2434;e.anusvaradeva=2306;e.anusvaragujarati=2690;e.aogonek=261;e.apaatosquare=13056;e.aparen=9372;e.apostrophearmenian=1370;e.apostrophemod=700;e.apple=63743;e.approaches=8784;e.approxequal=8776;e.approxequalorimage=8786;e.approximatelyequal=8773;e.araeaekorean=12686;e.araeakorean=12685;e.arc=8978;e.arighthalfring=7834;e.aring=229;e.aringacute=507;e.aringbelow=7681;e.arrowboth=8596;e.arrowdashdown=8675;e.arrowdashleft=8672;e.arrowdashright=8674;e.arrowdashup=8673;e.arrowdblboth=8660;e.arrowdbldown=8659;e.arrowdblleft=8656;e.arrowdblright=8658;e.arrowdblup=8657;e.arrowdown=8595;e.arrowdownleft=8601;e.arrowdownright=8600;e.arrowdownwhite=8681;e.arrowheaddownmod=709;e.arrowheadleftmod=706;e.arrowheadrightmod=707;e.arrowheadupmod=708;e.arrowhorizex=63719;e.arrowleft=8592;e.arrowleftdbl=8656;e.arrowleftdblstroke=8653;e.arrowleftoverright=8646;e.arrowleftwhite=8678;e.arrowright=8594;e.arrowrightdblstroke=8655;e.arrowrightheavy=10142;e.arrowrightoverleft=8644;e.arrowrightwhite=8680;e.arrowtableft=8676;e.arrowtabright=8677;e.arrowup=8593;e.arrowupdn=8597;e.arrowupdnbse=8616;e.arrowupdownbase=8616;e.arrowupleft=8598;e.arrowupleftofdown=8645;e.arrowupright=8599;e.arrowupwhite=8679;e.arrowvertex=63718;e.asciicircum=94;e.asciicircummonospace=65342;e.asciitilde=126;e.asciitildemonospace=65374;e.ascript=593;e.ascriptturned=594;e.asmallhiragana=12353;e.asmallkatakana=12449;e.asmallkatakanahalfwidth=65383;e.asterisk=42;e.asteriskaltonearabic=1645;e.asteriskarabic=1645;e.asteriskmath=8727;e.asteriskmonospace=65290;e.asterisksmall=65121;e.asterism=8258;e.asuperior=63209;e.asymptoticallyequal=8771;e.at=64;e.atilde=227;e.atmonospace=65312;e.atsmall=65131;e.aturned=592;e.aubengali=2452;e.aubopomofo=12576;e.audeva=2324;e.augujarati=2708;e.augurmukhi=2580;e.aulengthmarkbengali=2519;e.aumatragurmukhi=2636;e.auvowelsignbengali=2508;e.auvowelsigndeva=2380;e.auvowelsigngujarati=2764;e.avagrahadeva=2365;e.aybarmenian=1377;e.ayin=1506;e.ayinaltonehebrew=64288;e.ayinhebrew=1506;e.b=98;e.babengali=2476;e.backslash=92;e.backslashmonospace=65340;e.badeva=2348;e.bagujarati=2732;e.bagurmukhi=2604;e.bahiragana=12400;e.bahtthai=3647;e.bakatakana=12496;e.bar=124;e.barmonospace=65372;e.bbopomofo=12549;e.bcircle=9425;e.bdotaccent=7683;e.bdotbelow=7685;e.beamedsixteenthnotes=9836;e.because=8757;e.becyrillic=1073;e.beharabic=1576;e.behfinalarabic=65168;e.behinitialarabic=65169;e.behiragana=12409;e.behmedialarabic=65170;e.behmeeminitialarabic=64671;e.behmeemisolatedarabic=64520;e.behnoonfinalarabic=64621;e.bekatakana=12505;e.benarmenian=1378;e.bet=1489;e.beta=946;e.betasymbolgreek=976;e.betdagesh=64305;e.betdageshhebrew=64305;e.bethebrew=1489;e.betrafehebrew=64332;e.bhabengali=2477;e.bhadeva=2349;e.bhagujarati=2733;e.bhagurmukhi=2605;e.bhook=595;e.bihiragana=12403;e.bikatakana=12499;e.bilabialclick=664;e.bindigurmukhi=2562;e.birusquare=13105;e.blackcircle=9679;e.blackdiamond=9670;e.blackdownpointingtriangle=9660;e.blackleftpointingpointer=9668;e.blackleftpointingtriangle=9664;e.blacklenticularbracketleft=12304;e.blacklenticularbracketleftvertical=65083;e.blacklenticularbracketright=12305;e.blacklenticularbracketrightvertical=65084;e.blacklowerlefttriangle=9699;e.blacklowerrighttriangle=9698;e.blackrectangle=9644;e.blackrightpointingpointer=9658;e.blackrightpointingtriangle=9654;e.blacksmallsquare=9642;e.blacksmilingface=9787;e.blacksquare=9632;e.blackstar=9733;e.blackupperlefttriangle=9700;e.blackupperrighttriangle=9701;e.blackuppointingsmalltriangle=9652;e.blackuppointingtriangle=9650;e.blank=9251;e.blinebelow=7687;e.block=9608;e.bmonospace=65346;e.bobaimaithai=3610;e.bohiragana=12412;e.bokatakana=12508;e.bparen=9373;e.bqsquare=13251;e.braceex=63732;e.braceleft=123;e.braceleftbt=63731;e.braceleftmid=63730;e.braceleftmonospace=65371;e.braceleftsmall=65115;e.bracelefttp=63729;e.braceleftvertical=65079;e.braceright=125;e.bracerightbt=63742;e.bracerightmid=63741;e.bracerightmonospace=65373;e.bracerightsmall=65116;e.bracerighttp=63740;e.bracerightvertical=65080;e.bracketleft=91;e.bracketleftbt=63728;e.bracketleftex=63727;e.bracketleftmonospace=65339;e.bracketlefttp=63726;e.bracketright=93;e.bracketrightbt=63739;e.bracketrightex=63738;e.bracketrightmonospace=65341;e.bracketrighttp=63737;e.breve=728;e.brevebelowcmb=814;e.brevecmb=774;e.breveinvertedbelowcmb=815;e.breveinvertedcmb=785;e.breveinverteddoublecmb=865;e.bridgebelowcmb=810;e.bridgeinvertedbelowcmb=826;e.brokenbar=166;e.bstroke=384;e.bsuperior=63210;e.btopbar=387;e.buhiragana=12406;e.bukatakana=12502;e.bullet=8226;e.bulletinverse=9688;e.bulletoperator=8729;e.bullseye=9678;e.c=99;e.caarmenian=1390;e.cabengali=2458;e.cacute=263;e.cadeva=2330;e.cagujarati=2714;e.cagurmukhi=2586;e.calsquare=13192;e.candrabindubengali=2433;e.candrabinducmb=784;e.candrabindudeva=2305;e.candrabindugujarati=2689;e.capslock=8682;e.careof=8453;e.caron=711;e.caronbelowcmb=812;e.caroncmb=780;e.carriagereturn=8629;e.cbopomofo=12568;e.ccaron=269;e.ccedilla=231;e.ccedillaacute=7689;e.ccircle=9426;e.ccircumflex=265;e.ccurl=597;e.cdot=267;e.cdotaccent=267;e.cdsquare=13253;e.cedilla=184;e.cedillacmb=807;e.cent=162;e.centigrade=8451;e.centinferior=63199;e.centmonospace=65504;e.centoldstyle=63394;e.centsuperior=63200;e.chaarmenian=1401;e.chabengali=2459;e.chadeva=2331;e.chagujarati=2715;e.chagurmukhi=2587;e.chbopomofo=12564;e.cheabkhasiancyrillic=1213;e.checkmark=10003;e.checyrillic=1095;e.chedescenderabkhasiancyrillic=1215;e.chedescendercyrillic=1207;e.chedieresiscyrillic=1269;e.cheharmenian=1395;e.chekhakassiancyrillic=1228;e.cheverticalstrokecyrillic=1209;e.chi=967;e.chieuchacirclekorean=12919;e.chieuchaparenkorean=12823;e.chieuchcirclekorean=12905;e.chieuchkorean=12618;e.chieuchparenkorean=12809;e.chochangthai=3594;e.chochanthai=3592;e.chochingthai=3593;e.chochoethai=3596;e.chook=392;e.cieucacirclekorean=12918;e.cieucaparenkorean=12822;e.cieuccirclekorean=12904;e.cieuckorean=12616;e.cieucparenkorean=12808;e.cieucuparenkorean=12828;e.circle=9675;e.circlecopyrt=169;e.circlemultiply=8855;e.circleot=8857;e.circleplus=8853;e.circlepostalmark=12342;e.circlewithlefthalfblack=9680;e.circlewithrighthalfblack=9681;e.circumflex=710;e.circumflexbelowcmb=813;e.circumflexcmb=770;e.clear=8999;e.clickalveolar=450;e.clickdental=448;e.clicklateral=449;e.clickretroflex=451;e.club=9827;e.clubsuitblack=9827;e.clubsuitwhite=9831;e.cmcubedsquare=13220;e.cmonospace=65347;e.cmsquaredsquare=13216;e.coarmenian=1409;e.colon=58;e.colonmonetary=8353;e.colonmonospace=65306;e.colonsign=8353;e.colonsmall=65109;e.colontriangularhalfmod=721;e.colontriangularmod=720;e.comma=44;e.commaabovecmb=787;e.commaaboverightcmb=789;e.commaaccent=63171;e.commaarabic=1548;e.commaarmenian=1373;e.commainferior=63201;e.commamonospace=65292;e.commareversedabovecmb=788;e.commareversedmod=701;e.commasmall=65104;e.commasuperior=63202;e.commaturnedabovecmb=786;e.commaturnedmod=699;e.compass=9788;e.congruent=8773;e.contourintegral=8750;e.control=8963;e.controlACK=6;e.controlBEL=7;e.controlBS=8;e.controlCAN=24;e.controlCR=13;e.controlDC1=17;e.controlDC2=18;e.controlDC3=19;e.controlDC4=20;e.controlDEL=127;e.controlDLE=16;e.controlEM=25;e.controlENQ=5;e.controlEOT=4;e.controlESC=27;e.controlETB=23;e.controlETX=3;e.controlFF=12;e.controlFS=28;e.controlGS=29;e.controlHT=9;e.controlLF=10;e.controlNAK=21;e.controlNULL=0;e.controlRS=30;e.controlSI=15;e.controlSO=14;e.controlSOT=2;e.controlSTX=1;e.controlSUB=26;e.controlSYN=22;e.controlUS=31;e.controlVT=11;e.copyright=169;e.copyrightsans=63721;e.copyrightserif=63193;e.cornerbracketleft=12300;e.cornerbracketlefthalfwidth=65378;e.cornerbracketleftvertical=65089;e.cornerbracketright=12301;e.cornerbracketrighthalfwidth=65379;e.cornerbracketrightvertical=65090;e.corporationsquare=13183;e.cosquare=13255;e.coverkgsquare=13254;e.cparen=9374;e.cruzeiro=8354;e.cstretched=663;e.curlyand=8911;e.curlyor=8910;e.currency=164;e.cyrBreve=63185;e.cyrFlex=63186;e.cyrbreve=63188;e.cyrflex=63189;e.d=100;e.daarmenian=1380;e.dabengali=2470;e.dadarabic=1590;e.dadeva=2342;e.dadfinalarabic=65214;e.dadinitialarabic=65215;e.dadmedialarabic=65216;e.dagesh=1468;e.dageshhebrew=1468;e.dagger=8224;e.daggerdbl=8225;e.dagujarati=2726;e.dagurmukhi=2598;e.dahiragana=12384;e.dakatakana=12480;e.dalarabic=1583;e.dalet=1491;e.daletdagesh=64307;e.daletdageshhebrew=64307;e.dalethebrew=1491;e.dalfinalarabic=65194;e.dammaarabic=1615;e.dammalowarabic=1615;e.dammatanaltonearabic=1612;e.dammatanarabic=1612;e.danda=2404;e.dargahebrew=1447;e.dargalefthebrew=1447;e.dasiapneumatacyrilliccmb=1157;e.dblGrave=63187;e.dblanglebracketleft=12298;e.dblanglebracketleftvertical=65085;e.dblanglebracketright=12299;e.dblanglebracketrightvertical=65086;e.dblarchinvertedbelowcmb=811;e.dblarrowleft=8660;e.dblarrowright=8658;e.dbldanda=2405;e.dblgrave=63190;e.dblgravecmb=783;e.dblintegral=8748;e.dbllowline=8215;e.dbllowlinecmb=819;e.dbloverlinecmb=831;e.dblprimemod=698;e.dblverticalbar=8214;e.dblverticallineabovecmb=782;e.dbopomofo=12553;e.dbsquare=13256;e.dcaron=271;e.dcedilla=7697;e.dcircle=9427;e.dcircumflexbelow=7699;e.dcroat=273;e.ddabengali=2465;e.ddadeva=2337;e.ddagujarati=2721;e.ddagurmukhi=2593;e.ddalarabic=1672;e.ddalfinalarabic=64393;e.dddhadeva=2396;e.ddhabengali=2466;e.ddhadeva=2338;e.ddhagujarati=2722;e.ddhagurmukhi=2594;e.ddotaccent=7691;e.ddotbelow=7693;e.decimalseparatorarabic=1643;e.decimalseparatorpersian=1643;e.decyrillic=1076;e.degree=176;e.dehihebrew=1453;e.dehiragana=12391;e.deicoptic=1007;e.dekatakana=12487;e.deleteleft=9003;e.deleteright=8998;e.delta=948;e.deltaturned=397;e.denominatorminusonenumeratorbengali=2552;e.dezh=676;e.dhabengali=2471;e.dhadeva=2343;e.dhagujarati=2727;e.dhagurmukhi=2599;e.dhook=599;e.dialytikatonos=901;e.dialytikatonoscmb=836;e.diamond=9830;e.diamondsuitwhite=9826;e.dieresis=168;e.dieresisacute=63191;e.dieresisbelowcmb=804;e.dieresiscmb=776;e.dieresisgrave=63192;e.dieresistonos=901;e.dihiragana=12386;e.dikatakana=12482;e.dittomark=12291;e.divide=247;e.divides=8739;e.divisionslash=8725;e.djecyrillic=1106;e.dkshade=9619;e.dlinebelow=7695;e.dlsquare=13207;e.dmacron=273;e.dmonospace=65348;e.dnblock=9604;e.dochadathai=3598;e.dodekthai=3604;e.dohiragana=12393;e.dokatakana=12489;e.dollar=36;e.dollarinferior=63203;e.dollarmonospace=65284;e.dollaroldstyle=63268;e.dollarsmall=65129;e.dollarsuperior=63204;e.dong=8363;e.dorusquare=13094;e.dotaccent=729;e.dotaccentcmb=775;e.dotbelowcmb=803;e.dotbelowcomb=803;e.dotkatakana=12539;e.dotlessi=305;e.dotlessj=63166;e.dotlessjstrokehook=644;e.dotmath=8901;e.dottedcircle=9676;e.doubleyodpatah=64287;e.doubleyodpatahhebrew=64287;e.downtackbelowcmb=798;e.downtackmod=725;e.dparen=9375;e.dsuperior=63211;e.dtail=598;e.dtopbar=396;e.duhiragana=12389;e.dukatakana=12485;e.dz=499;e.dzaltone=675;e.dzcaron=454;e.dzcurl=677;e.dzeabkhasiancyrillic=1249;e.dzecyrillic=1109;e.dzhecyrillic=1119;e.e=101;e.eacute=233;e.earth=9793;e.ebengali=2447;e.ebopomofo=12572;e.ebreve=277;e.ecandradeva=2317;e.ecandragujarati=2701;e.ecandravowelsigndeva=2373;e.ecandravowelsigngujarati=2757;e.ecaron=283;e.ecedillabreve=7709;e.echarmenian=1381;e.echyiwnarmenian=1415;e.ecircle=9428;e.ecircumflex=234;e.ecircumflexacute=7871;e.ecircumflexbelow=7705;e.ecircumflexdotbelow=7879;e.ecircumflexgrave=7873;e.ecircumflexhookabove=7875;e.ecircumflextilde=7877;e.ecyrillic=1108;e.edblgrave=517;e.edeva=2319;e.edieresis=235;e.edot=279;e.edotaccent=279;e.edotbelow=7865;e.eegurmukhi=2575;e.eematragurmukhi=2631;e.efcyrillic=1092;e.egrave=232;e.egujarati=2703;e.eharmenian=1383;e.ehbopomofo=12573;e.ehiragana=12360;e.ehookabove=7867;e.eibopomofo=12575;e.eight=56;e.eightarabic=1640;e.eightbengali=2542;e.eightcircle=9319;e.eightcircleinversesansserif=10129;e.eightdeva=2414;e.eighteencircle=9329;e.eighteenparen=9349;e.eighteenperiod=9369;e.eightgujarati=2798;e.eightgurmukhi=2670;e.eighthackarabic=1640;e.eighthangzhou=12328;e.eighthnotebeamed=9835;e.eightideographicparen=12839;e.eightinferior=8328;e.eightmonospace=65304;e.eightoldstyle=63288;e.eightparen=9339;e.eightperiod=9359;e.eightpersian=1784;e.eightroman=8567;e.eightsuperior=8312;e.eightthai=3672;e.einvertedbreve=519;e.eiotifiedcyrillic=1125;e.ekatakana=12456;e.ekatakanahalfwidth=65396;e.ekonkargurmukhi=2676;e.ekorean=12628;e.elcyrillic=1083;e.element=8712;e.elevencircle=9322;e.elevenparen=9342;e.elevenperiod=9362;e.elevenroman=8570;e.ellipsis=8230;e.ellipsisvertical=8942;e.emacron=275;e.emacronacute=7703;e.emacrongrave=7701;e.emcyrillic=1084;e.emdash=8212;e.emdashvertical=65073;e.emonospace=65349;e.emphasismarkarmenian=1371;e.emptyset=8709;e.enbopomofo=12579;e.encyrillic=1085;e.endash=8211;e.endashvertical=65074;e.endescendercyrillic=1187;e.eng=331;e.engbopomofo=12581;e.enghecyrillic=1189;e.enhookcyrillic=1224;e.enspace=8194;e.eogonek=281;e.eokorean=12627;e.eopen=603;e.eopenclosed=666;e.eopenreversed=604;e.eopenreversedclosed=606;e.eopenreversedhook=605;e.eparen=9376;e.epsilon=949;e.epsilontonos=941;e.equal=61;e.equalmonospace=65309;e.equalsmall=65126;e.equalsuperior=8316;e.equivalence=8801;e.erbopomofo=12582;e.ercyrillic=1088;e.ereversed=600;e.ereversedcyrillic=1101;e.escyrillic=1089;e.esdescendercyrillic=1195;e.esh=643;e.eshcurl=646;e.eshortdeva=2318;e.eshortvowelsigndeva=2374;e.eshreversedloop=426;e.eshsquatreversed=645;e.esmallhiragana=12359;e.esmallkatakana=12455;e.esmallkatakanahalfwidth=65386;e.estimated=8494;e.esuperior=63212;e.eta=951;e.etarmenian=1384;e.etatonos=942;e.eth=240;e.etilde=7869;e.etildebelow=7707;e.etnahtafoukhhebrew=1425;e.etnahtafoukhlefthebrew=1425;e.etnahtahebrew=1425;e.etnahtalefthebrew=1425;e.eturned=477;e.eukorean=12641;e.euro=8364;e.evowelsignbengali=2503;e.evowelsigndeva=2375;e.evowelsigngujarati=2759;e.exclam=33;e.exclamarmenian=1372;e.exclamdbl=8252;e.exclamdown=161;e.exclamdownsmall=63393;e.exclammonospace=65281;e.exclamsmall=63265;e.existential=8707;e.ezh=658;e.ezhcaron=495;e.ezhcurl=659;e.ezhreversed=441;e.ezhtail=442;e.f=102;e.fadeva=2398;e.fagurmukhi=2654;e.fahrenheit=8457;e.fathaarabic=1614;e.fathalowarabic=1614;e.fathatanarabic=1611;e.fbopomofo=12552;e.fcircle=9429;e.fdotaccent=7711;e.feharabic=1601;e.feharmenian=1414;e.fehfinalarabic=65234;e.fehinitialarabic=65235;e.fehmedialarabic=65236;e.feicoptic=997;e.female=9792;e.ff=64256;e.f_f=64256;e.ffi=64259;e.f_f_i=64259;e.ffl=64260;e.f_f_l=64260;e.fi=64257;e.f_i=64257;e.fifteencircle=9326;e.fifteenparen=9346;e.fifteenperiod=9366;e.figuredash=8210;e.filledbox=9632;e.filledrect=9644;e.finalkaf=1498;e.finalkafdagesh=64314;e.finalkafdageshhebrew=64314;e.finalkafhebrew=1498;e.finalmem=1501;e.finalmemhebrew=1501;e.finalnun=1503;e.finalnunhebrew=1503;e.finalpe=1507;e.finalpehebrew=1507;e.finaltsadi=1509;e.finaltsadihebrew=1509;e.firsttonechinese=713;e.fisheye=9673;e.fitacyrillic=1139;e.five=53;e.fivearabic=1637;e.fivebengali=2539;e.fivecircle=9316;e.fivecircleinversesansserif=10126;e.fivedeva=2411;e.fiveeighths=8541;e.fivegujarati=2795;e.fivegurmukhi=2667;e.fivehackarabic=1637;e.fivehangzhou=12325;e.fiveideographicparen=12836;e.fiveinferior=8325;e.fivemonospace=65301;e.fiveoldstyle=63285;e.fiveparen=9336;e.fiveperiod=9356;e.fivepersian=1781;e.fiveroman=8564;e.fivesuperior=8309;e.fivethai=3669;e.fl=64258;e.f_l=64258;e.florin=402;e.fmonospace=65350;e.fmsquare=13209;e.fofanthai=3615;e.fofathai=3613;e.fongmanthai=3663;e.forall=8704;e.four=52;e.fourarabic=1636;e.fourbengali=2538;e.fourcircle=9315;e.fourcircleinversesansserif=10125;e.fourdeva=2410;e.fourgujarati=2794;e.fourgurmukhi=2666;e.fourhackarabic=1636;e.fourhangzhou=12324;e.fourideographicparen=12835;e.fourinferior=8324;e.fourmonospace=65300;e.fournumeratorbengali=2551;e.fouroldstyle=63284;e.fourparen=9335;e.fourperiod=9355;e.fourpersian=1780;e.fourroman=8563;e.foursuperior=8308;e.fourteencircle=9325;e.fourteenparen=9345;e.fourteenperiod=9365;e.fourthai=3668;e.fourthtonechinese=715;e.fparen=9377;e.fraction=8260;e.franc=8355;e.g=103;e.gabengali=2455;e.gacute=501;e.gadeva=2327;e.gafarabic=1711;e.gaffinalarabic=64403;e.gafinitialarabic=64404;e.gafmedialarabic=64405;e.gagujarati=2711;e.gagurmukhi=2583;e.gahiragana=12364;e.gakatakana=12460;e.gamma=947;e.gammalatinsmall=611;e.gammasuperior=736;e.gangiacoptic=1003;e.gbopomofo=12557;e.gbreve=287;e.gcaron=487;e.gcedilla=291;e.gcircle=9430;e.gcircumflex=285;e.gcommaaccent=291;e.gdot=289;e.gdotaccent=289;e.gecyrillic=1075;e.gehiragana=12370;e.gekatakana=12466;e.geometricallyequal=8785;e.gereshaccenthebrew=1436;e.gereshhebrew=1523;e.gereshmuqdamhebrew=1437;e.germandbls=223;e.gershayimaccenthebrew=1438;e.gershayimhebrew=1524;e.getamark=12307;e.ghabengali=2456;e.ghadarmenian=1394;e.ghadeva=2328;e.ghagujarati=2712;e.ghagurmukhi=2584;e.ghainarabic=1594;e.ghainfinalarabic=65230;e.ghaininitialarabic=65231;e.ghainmedialarabic=65232;e.ghemiddlehookcyrillic=1173;e.ghestrokecyrillic=1171;e.gheupturncyrillic=1169;e.ghhadeva=2394;e.ghhagurmukhi=2650;e.ghook=608;e.ghzsquare=13203;e.gihiragana=12366;e.gikatakana=12462;e.gimarmenian=1379;e.gimel=1490;e.gimeldagesh=64306;e.gimeldageshhebrew=64306;e.gimelhebrew=1490;e.gjecyrillic=1107;e.glottalinvertedstroke=446;e.glottalstop=660;e.glottalstopinverted=662;e.glottalstopmod=704;e.glottalstopreversed=661;e.glottalstopreversedmod=705;e.glottalstopreversedsuperior=740;e.glottalstopstroke=673;e.glottalstopstrokereversed=674;e.gmacron=7713;e.gmonospace=65351;e.gohiragana=12372;e.gokatakana=12468;e.gparen=9378;e.gpasquare=13228;e.gradient=8711;e.grave=96;e.gravebelowcmb=790;e.gravecmb=768;e.gravecomb=768;e.gravedeva=2387;e.gravelowmod=718;e.gravemonospace=65344;e.gravetonecmb=832;e.greater=62;e.greaterequal=8805;e.greaterequalorless=8923;e.greatermonospace=65310;e.greaterorequivalent=8819;e.greaterorless=8823;e.greateroverequal=8807;e.greatersmall=65125;e.gscript=609;e.gstroke=485;e.guhiragana=12368;e.guillemotleft=171;e.guillemotright=187;e.guilsinglleft=8249;e.guilsinglright=8250;e.gukatakana=12464;e.guramusquare=13080;e.gysquare=13257;e.h=104;e.haabkhasiancyrillic=1193;e.haaltonearabic=1729;e.habengali=2489;e.hadescendercyrillic=1203;e.hadeva=2361;e.hagujarati=2745;e.hagurmukhi=2617;e.haharabic=1581;e.hahfinalarabic=65186;e.hahinitialarabic=65187;e.hahiragana=12399;e.hahmedialarabic=65188;e.haitusquare=13098;e.hakatakana=12495;e.hakatakanahalfwidth=65418;e.halantgurmukhi=2637;e.hamzaarabic=1569;e.hamzalowarabic=1569;e.hangulfiller=12644;e.hardsigncyrillic=1098;e.harpoonleftbarbup=8636;e.harpoonrightbarbup=8640;e.hasquare=13258;e.hatafpatah=1458;e.hatafpatah16=1458;e.hatafpatah23=1458;e.hatafpatah2f=1458;e.hatafpatahhebrew=1458;e.hatafpatahnarrowhebrew=1458;e.hatafpatahquarterhebrew=1458;e.hatafpatahwidehebrew=1458;e.hatafqamats=1459;e.hatafqamats1b=1459;e.hatafqamats28=1459;e.hatafqamats34=1459;e.hatafqamatshebrew=1459;e.hatafqamatsnarrowhebrew=1459;e.hatafqamatsquarterhebrew=1459;e.hatafqamatswidehebrew=1459;e.hatafsegol=1457;e.hatafsegol17=1457;e.hatafsegol24=1457;e.hatafsegol30=1457;e.hatafsegolhebrew=1457;e.hatafsegolnarrowhebrew=1457;e.hatafsegolquarterhebrew=1457;e.hatafsegolwidehebrew=1457;e.hbar=295;e.hbopomofo=12559;e.hbrevebelow=7723;e.hcedilla=7721;e.hcircle=9431;e.hcircumflex=293;e.hdieresis=7719;e.hdotaccent=7715;e.hdotbelow=7717;e.he=1492;e.heart=9829;e.heartsuitblack=9829;e.heartsuitwhite=9825;e.hedagesh=64308;e.hedageshhebrew=64308;e.hehaltonearabic=1729;e.heharabic=1607;e.hehebrew=1492;e.hehfinalaltonearabic=64423;e.hehfinalalttwoarabic=65258;e.hehfinalarabic=65258;e.hehhamzaabovefinalarabic=64421;e.hehhamzaaboveisolatedarabic=64420;e.hehinitialaltonearabic=64424;e.hehinitialarabic=65259;e.hehiragana=12408;e.hehmedialaltonearabic=64425;e.hehmedialarabic=65260;e.heiseierasquare=13179;e.hekatakana=12504;e.hekatakanahalfwidth=65421;e.hekutaarusquare=13110;e.henghook=615;e.herutusquare=13113;e.het=1495;e.hethebrew=1495;e.hhook=614;e.hhooksuperior=689;e.hieuhacirclekorean=12923;e.hieuhaparenkorean=12827;e.hieuhcirclekorean=12909;e.hieuhkorean=12622;e.hieuhparenkorean=12813;e.hihiragana=12402;e.hikatakana=12498;e.hikatakanahalfwidth=65419;e.hiriq=1460;e.hiriq14=1460;e.hiriq21=1460;e.hiriq2d=1460;e.hiriqhebrew=1460;e.hiriqnarrowhebrew=1460;e.hiriqquarterhebrew=1460;e.hiriqwidehebrew=1460;e.hlinebelow=7830;e.hmonospace=65352;e.hoarmenian=1392;e.hohipthai=3627;e.hohiragana=12411;e.hokatakana=12507;e.hokatakanahalfwidth=65422;e.holam=1465;e.holam19=1465;e.holam26=1465;e.holam32=1465;e.holamhebrew=1465;e.holamnarrowhebrew=1465;e.holamquarterhebrew=1465;e.holamwidehebrew=1465;e.honokhukthai=3630;e.hookabovecomb=777;e.hookcmb=777;e.hookpalatalizedbelowcmb=801;e.hookretroflexbelowcmb=802;e.hoonsquare=13122;e.horicoptic=1001;e.horizontalbar=8213;e.horncmb=795;e.hotsprings=9832;e.house=8962;e.hparen=9379;e.hsuperior=688;e.hturned=613;e.huhiragana=12405;e.huiitosquare=13107;e.hukatakana=12501;e.hukatakanahalfwidth=65420;e.hungarumlaut=733;e.hungarumlautcmb=779;e.hv=405;e.hyphen=45;e.hypheninferior=63205;e.hyphenmonospace=65293;e.hyphensmall=65123;e.hyphensuperior=63206;e.hyphentwo=8208;e.i=105;e.iacute=237;e.iacyrillic=1103;e.ibengali=2439;e.ibopomofo=12583;e.ibreve=301;e.icaron=464;e.icircle=9432;e.icircumflex=238;e.icyrillic=1110;e.idblgrave=521;e.ideographearthcircle=12943;e.ideographfirecircle=12939;e.ideographicallianceparen=12863;e.ideographiccallparen=12858;e.ideographiccentrecircle=12965;e.ideographicclose=12294;e.ideographiccomma=12289;e.ideographiccommaleft=65380;e.ideographiccongratulationparen=12855;e.ideographiccorrectcircle=12963;e.ideographicearthparen=12847;e.ideographicenterpriseparen=12861;e.ideographicexcellentcircle=12957;e.ideographicfestivalparen=12864;e.ideographicfinancialcircle=12950;e.ideographicfinancialparen=12854;e.ideographicfireparen=12843;e.ideographichaveparen=12850;e.ideographichighcircle=12964;e.ideographiciterationmark=12293;e.ideographiclaborcircle=12952;e.ideographiclaborparen=12856;e.ideographicleftcircle=12967;e.ideographiclowcircle=12966;e.ideographicmedicinecircle=12969;e.ideographicmetalparen=12846;e.ideographicmoonparen=12842;e.ideographicnameparen=12852;e.ideographicperiod=12290;e.ideographicprintcircle=12958;e.ideographicreachparen=12867;e.ideographicrepresentparen=12857;e.ideographicresourceparen=12862;e.ideographicrightcircle=12968;e.ideographicsecretcircle=12953;e.ideographicselfparen=12866;e.ideographicsocietyparen=12851;e.ideographicspace=12288;e.ideographicspecialparen=12853;e.ideographicstockparen=12849;e.ideographicstudyparen=12859;e.ideographicsunparen=12848;e.ideographicsuperviseparen=12860;e.ideographicwaterparen=12844;e.ideographicwoodparen=12845;e.ideographiczero=12295;e.ideographmetalcircle=12942;e.ideographmooncircle=12938;e.ideographnamecircle=12948;e.ideographsuncircle=12944;e.ideographwatercircle=12940;e.ideographwoodcircle=12941;e.ideva=2311;e.idieresis=239;e.idieresisacute=7727;e.idieresiscyrillic=1253;e.idotbelow=7883;e.iebrevecyrillic=1239;e.iecyrillic=1077;e.ieungacirclekorean=12917;e.ieungaparenkorean=12821;e.ieungcirclekorean=12903;e.ieungkorean=12615;e.ieungparenkorean=12807;e.igrave=236;e.igujarati=2695;e.igurmukhi=2567;e.ihiragana=12356;e.ihookabove=7881;e.iibengali=2440;e.iicyrillic=1080;e.iideva=2312;e.iigujarati=2696;e.iigurmukhi=2568;e.iimatragurmukhi=2624;e.iinvertedbreve=523;e.iishortcyrillic=1081;e.iivowelsignbengali=2496;e.iivowelsigndeva=2368;e.iivowelsigngujarati=2752;e.ij=307;e.ikatakana=12452;e.ikatakanahalfwidth=65394;e.ikorean=12643;e.ilde=732;e.iluyhebrew=1452;e.imacron=299;e.imacroncyrillic=1251;e.imageorapproximatelyequal=8787;e.imatragurmukhi=2623;e.imonospace=65353;e.increment=8710;e.infinity=8734;e.iniarmenian=1387;e.integral=8747;e.integralbottom=8993;e.integralbt=8993;e.integralex=63733;e.integraltop=8992;e.integraltp=8992;e.intersection=8745;e.intisquare=13061;e.invbullet=9688;e.invcircle=9689;e.invsmileface=9787;e.iocyrillic=1105;e.iogonek=303;e.iota=953;e.iotadieresis=970;e.iotadieresistonos=912;e.iotalatin=617;e.iotatonos=943;e.iparen=9380;e.irigurmukhi=2674;e.ismallhiragana=12355;e.ismallkatakana=12451;e.ismallkatakanahalfwidth=65384;e.issharbengali=2554;e.istroke=616;e.isuperior=63213;e.iterationhiragana=12445;e.iterationkatakana=12541;e.itilde=297;e.itildebelow=7725;e.iubopomofo=12585;e.iucyrillic=1102;e.ivowelsignbengali=2495;e.ivowelsigndeva=2367;e.ivowelsigngujarati=2751;e.izhitsacyrillic=1141;e.izhitsadblgravecyrillic=1143;e.j=106;e.jaarmenian=1393;e.jabengali=2460;e.jadeva=2332;e.jagujarati=2716;e.jagurmukhi=2588;e.jbopomofo=12560;e.jcaron=496;e.jcircle=9433;e.jcircumflex=309;e.jcrossedtail=669;e.jdotlessstroke=607;e.jecyrillic=1112;e.jeemarabic=1580;e.jeemfinalarabic=65182;e.jeeminitialarabic=65183;e.jeemmedialarabic=65184;e.jeharabic=1688;e.jehfinalarabic=64395;e.jhabengali=2461;e.jhadeva=2333;e.jhagujarati=2717;e.jhagurmukhi=2589;e.jheharmenian=1403;e.jis=12292;e.jmonospace=65354;e.jparen=9381;e.jsuperior=690;e.k=107;e.kabashkircyrillic=1185;e.kabengali=2453;e.kacute=7729;e.kacyrillic=1082;e.kadescendercyrillic=1179;e.kadeva=2325;e.kaf=1499;e.kafarabic=1603;e.kafdagesh=64315;e.kafdageshhebrew=64315;e.kaffinalarabic=65242;e.kafhebrew=1499;e.kafinitialarabic=65243;e.kafmedialarabic=65244;e.kafrafehebrew=64333;e.kagujarati=2709;e.kagurmukhi=2581;e.kahiragana=12363;e.kahookcyrillic=1220;e.kakatakana=12459;e.kakatakanahalfwidth=65398;e.kappa=954;e.kappasymbolgreek=1008;e.kapyeounmieumkorean=12657;e.kapyeounphieuphkorean=12676;e.kapyeounpieupkorean=12664;e.kapyeounssangpieupkorean=12665;e.karoriisquare=13069;e.kashidaautoarabic=1600;e.kashidaautonosidebearingarabic=1600;e.kasmallkatakana=12533;e.kasquare=13188;e.kasraarabic=1616;e.kasratanarabic=1613;e.kastrokecyrillic=1183;e.katahiraprolongmarkhalfwidth=65392;e.kaverticalstrokecyrillic=1181;e.kbopomofo=12558;e.kcalsquare=13193;e.kcaron=489;e.kcedilla=311;e.kcircle=9434;e.kcommaaccent=311;e.kdotbelow=7731;e.keharmenian=1412;e.kehiragana=12369;e.kekatakana=12465;e.kekatakanahalfwidth=65401;e.kenarmenian=1391;e.kesmallkatakana=12534;e.kgreenlandic=312;e.khabengali=2454;e.khacyrillic=1093;e.khadeva=2326;e.khagujarati=2710;e.khagurmukhi=2582;e.khaharabic=1582;e.khahfinalarabic=65190;e.khahinitialarabic=65191;e.khahmedialarabic=65192;e.kheicoptic=999;e.khhadeva=2393;e.khhagurmukhi=2649;e.khieukhacirclekorean=12920;e.khieukhaparenkorean=12824;e.khieukhcirclekorean=12906;e.khieukhkorean=12619;e.khieukhparenkorean=12810;e.khokhaithai=3586;e.khokhonthai=3589;e.khokhuatthai=3587;e.khokhwaithai=3588;e.khomutthai=3675;e.khook=409;e.khorakhangthai=3590;e.khzsquare=13201;e.kihiragana=12365;e.kikatakana=12461;e.kikatakanahalfwidth=65399;e.kiroguramusquare=13077;e.kiromeetorusquare=13078;e.kirosquare=13076;e.kiyeokacirclekorean=12910;e.kiyeokaparenkorean=12814;e.kiyeokcirclekorean=12896;e.kiyeokkorean=12593;e.kiyeokparenkorean=12800;e.kiyeoksioskorean=12595;e.kjecyrillic=1116;e.klinebelow=7733;e.klsquare=13208;e.kmcubedsquare=13222;e.kmonospace=65355;e.kmsquaredsquare=13218;e.kohiragana=12371;e.kohmsquare=13248;e.kokaithai=3585;e.kokatakana=12467;e.kokatakanahalfwidth=65402;e.kooposquare=13086;e.koppacyrillic=1153;e.koreanstandardsymbol=12927;e.koroniscmb=835;e.kparen=9382;e.kpasquare=13226;e.ksicyrillic=1135;e.ktsquare=13263;e.kturned=670;e.kuhiragana=12367;e.kukatakana=12463;e.kukatakanahalfwidth=65400;e.kvsquare=13240;e.kwsquare=13246;e.l=108;e.labengali=2482;e.lacute=314;e.ladeva=2354;e.lagujarati=2738;e.lagurmukhi=2610;e.lakkhangyaothai=3653;e.lamaleffinalarabic=65276;e.lamalefhamzaabovefinalarabic=65272;e.lamalefhamzaaboveisolatedarabic=65271;e.lamalefhamzabelowfinalarabic=65274;e.lamalefhamzabelowisolatedarabic=65273;e.lamalefisolatedarabic=65275;e.lamalefmaddaabovefinalarabic=65270;e.lamalefmaddaaboveisolatedarabic=65269;e.lamarabic=1604;e.lambda=955;e.lambdastroke=411;e.lamed=1500;e.lameddagesh=64316;e.lameddageshhebrew=64316;e.lamedhebrew=1500;e.lamfinalarabic=65246;e.lamhahinitialarabic=64714;e.laminitialarabic=65247;e.lamjeeminitialarabic=64713;e.lamkhahinitialarabic=64715;e.lamlamhehisolatedarabic=65010;e.lammedialarabic=65248;e.lammeemhahinitialarabic=64904;e.lammeeminitialarabic=64716;e.largecircle=9711;e.lbar=410;e.lbelt=620;e.lbopomofo=12556;e.lcaron=318;e.lcedilla=316;e.lcircle=9435;e.lcircumflexbelow=7741;e.lcommaaccent=316;e.ldot=320;e.ldotaccent=320;e.ldotbelow=7735;e.ldotbelowmacron=7737;e.leftangleabovecmb=794;e.lefttackbelowcmb=792;e.less=60;e.lessequal=8804;e.lessequalorgreater=8922;e.lessmonospace=65308;e.lessorequivalent=8818;e.lessorgreater=8822;e.lessoverequal=8806;e.lesssmall=65124;e.lezh=622;e.lfblock=9612;e.lhookretroflex=621;e.lira=8356;e.liwnarmenian=1388;e.lj=457;e.ljecyrillic=1113;e.ll=63168;e.lladeva=2355;e.llagujarati=2739;e.llinebelow=7739;e.llladeva=2356;e.llvocalicbengali=2529;e.llvocalicdeva=2401;e.llvocalicvowelsignbengali=2531;e.llvocalicvowelsigndeva=2403;e.lmiddletilde=619;e.lmonospace=65356;e.lmsquare=13264;e.lochulathai=3628;e.logicaland=8743;e.logicalnot=172;e.logicalnotreversed=8976;e.logicalor=8744;e.lolingthai=3621;e.longs=383;e.lowlinecenterline=65102;e.lowlinecmb=818;e.lowlinedashed=65101;e.lozenge=9674;e.lparen=9383;e.lslash=322;e.lsquare=8467;e.lsuperior=63214;e.ltshade=9617;e.luthai=3622;e.lvocalicbengali=2444;e.lvocalicdeva=2316;e.lvocalicvowelsignbengali=2530;e.lvocalicvowelsigndeva=2402;e.lxsquare=13267;e.m=109;e.mabengali=2478;e.macron=175;e.macronbelowcmb=817;e.macroncmb=772;e.macronlowmod=717;e.macronmonospace=65507;e.macute=7743;e.madeva=2350;e.magujarati=2734;e.magurmukhi=2606;e.mahapakhhebrew=1444;e.mahapakhlefthebrew=1444;e.mahiragana=12414;e.maichattawalowleftthai=63637;e.maichattawalowrightthai=63636;e.maichattawathai=3659;e.maichattawaupperleftthai=63635;e.maieklowleftthai=63628;e.maieklowrightthai=63627;e.maiekthai=3656;e.maiekupperleftthai=63626;e.maihanakatleftthai=63620;e.maihanakatthai=3633;e.maitaikhuleftthai=63625;e.maitaikhuthai=3655;e.maitholowleftthai=63631;e.maitholowrightthai=63630;e.maithothai=3657;e.maithoupperleftthai=63629;e.maitrilowleftthai=63634;e.maitrilowrightthai=63633;e.maitrithai=3658;e.maitriupperleftthai=63632;e.maiyamokthai=3654;e.makatakana=12510;e.makatakanahalfwidth=65423;e.male=9794;e.mansyonsquare=13127;e.maqafhebrew=1470;e.mars=9794;e.masoracirclehebrew=1455;e.masquare=13187;e.mbopomofo=12551;e.mbsquare=13268;e.mcircle=9436;e.mcubedsquare=13221;e.mdotaccent=7745;e.mdotbelow=7747;e.meemarabic=1605;e.meemfinalarabic=65250;e.meeminitialarabic=65251;e.meemmedialarabic=65252;e.meemmeeminitialarabic=64721;e.meemmeemisolatedarabic=64584;e.meetorusquare=13133;e.mehiragana=12417;e.meizierasquare=13182;e.mekatakana=12513;e.mekatakanahalfwidth=65426;e.mem=1502;e.memdagesh=64318;e.memdageshhebrew=64318;e.memhebrew=1502;e.menarmenian=1396;e.merkhahebrew=1445;e.merkhakefulahebrew=1446;e.merkhakefulalefthebrew=1446;e.merkhalefthebrew=1445;e.mhook=625;e.mhzsquare=13202;e.middledotkatakanahalfwidth=65381;e.middot=183;e.mieumacirclekorean=12914;e.mieumaparenkorean=12818;e.mieumcirclekorean=12900;e.mieumkorean=12609;e.mieumpansioskorean=12656;e.mieumparenkorean=12804;e.mieumpieupkorean=12654;e.mieumsioskorean=12655;e.mihiragana=12415;e.mikatakana=12511;e.mikatakanahalfwidth=65424;e.minus=8722;e.minusbelowcmb=800;e.minuscircle=8854;e.minusmod=727;e.minusplus=8723;e.minute=8242;e.miribaarusquare=13130;e.mirisquare=13129;e.mlonglegturned=624;e.mlsquare=13206;e.mmcubedsquare=13219;e.mmonospace=65357;e.mmsquaredsquare=13215;e.mohiragana=12418;e.mohmsquare=13249;e.mokatakana=12514;e.mokatakanahalfwidth=65427;e.molsquare=13270;e.momathai=3617;e.moverssquare=13223;e.moverssquaredsquare=13224;e.mparen=9384;e.mpasquare=13227;e.mssquare=13235;e.msuperior=63215;e.mturned=623;e.mu=181;e.mu1=181;e.muasquare=13186;e.muchgreater=8811;e.muchless=8810;e.mufsquare=13196;e.mugreek=956;e.mugsquare=13197;e.muhiragana=12416;e.mukatakana=12512;e.mukatakanahalfwidth=65425;e.mulsquare=13205;e.multiply=215;e.mumsquare=13211;e.munahhebrew=1443;e.munahlefthebrew=1443;e.musicalnote=9834;e.musicalnotedbl=9835;e.musicflatsign=9837;e.musicsharpsign=9839;e.mussquare=13234;e.muvsquare=13238;e.muwsquare=13244;e.mvmegasquare=13241;e.mvsquare=13239;e.mwmegasquare=13247;e.mwsquare=13245;e.n=110;e.nabengali=2472;e.nabla=8711;e.nacute=324;e.nadeva=2344;e.nagujarati=2728;e.nagurmukhi=2600;e.nahiragana=12394;e.nakatakana=12490;e.nakatakanahalfwidth=65413;e.napostrophe=329;e.nasquare=13185;e.nbopomofo=12555;e.nbspace=160;e.ncaron=328;e.ncedilla=326;e.ncircle=9437;e.ncircumflexbelow=7755;e.ncommaaccent=326;e.ndotaccent=7749;e.ndotbelow=7751;e.nehiragana=12397;e.nekatakana=12493;e.nekatakanahalfwidth=65416;e.newsheqelsign=8362;e.nfsquare=13195;e.ngabengali=2457;e.ngadeva=2329;e.ngagujarati=2713;e.ngagurmukhi=2585;e.ngonguthai=3591;e.nhiragana=12435;e.nhookleft=626;e.nhookretroflex=627;e.nieunacirclekorean=12911;e.nieunaparenkorean=12815;e.nieuncieuckorean=12597;e.nieuncirclekorean=12897;e.nieunhieuhkorean=12598;e.nieunkorean=12596;e.nieunpansioskorean=12648;e.nieunparenkorean=12801;e.nieunsioskorean=12647;e.nieuntikeutkorean=12646;e.nihiragana=12395;e.nikatakana=12491;e.nikatakanahalfwidth=65414;e.nikhahitleftthai=63641;e.nikhahitthai=3661;e.nine=57;e.ninearabic=1641;e.ninebengali=2543;e.ninecircle=9320;e.ninecircleinversesansserif=10130;e.ninedeva=2415;e.ninegujarati=2799;e.ninegurmukhi=2671;e.ninehackarabic=1641;e.ninehangzhou=12329;e.nineideographicparen=12840;e.nineinferior=8329;e.ninemonospace=65305;e.nineoldstyle=63289;e.nineparen=9340;e.nineperiod=9360;e.ninepersian=1785;e.nineroman=8568;e.ninesuperior=8313;e.nineteencircle=9330;e.nineteenparen=9350;e.nineteenperiod=9370;e.ninethai=3673;e.nj=460;e.njecyrillic=1114;e.nkatakana=12531;e.nkatakanahalfwidth=65437;e.nlegrightlong=414;e.nlinebelow=7753;e.nmonospace=65358;e.nmsquare=13210;e.nnabengali=2467;e.nnadeva=2339;e.nnagujarati=2723;e.nnagurmukhi=2595;e.nnnadeva=2345;e.nohiragana=12398;e.nokatakana=12494;e.nokatakanahalfwidth=65417;e.nonbreakingspace=160;e.nonenthai=3603;e.nonuthai=3609;e.noonarabic=1606;e.noonfinalarabic=65254;e.noonghunnaarabic=1722;e.noonghunnafinalarabic=64415;e.nooninitialarabic=65255;e.noonjeeminitialarabic=64722;e.noonjeemisolatedarabic=64587;e.noonmedialarabic=65256;e.noonmeeminitialarabic=64725;e.noonmeemisolatedarabic=64590;e.noonnoonfinalarabic=64653;e.notcontains=8716;e.notelement=8713;e.notelementof=8713;e.notequal=8800;e.notgreater=8815;e.notgreaternorequal=8817;e.notgreaternorless=8825;e.notidentical=8802;e.notless=8814;e.notlessnorequal=8816;e.notparallel=8742;e.notprecedes=8832;e.notsubset=8836;e.notsucceeds=8833;e.notsuperset=8837;e.nowarmenian=1398;e.nparen=9385;e.nssquare=13233;e.nsuperior=8319;e.ntilde=241;e.nu=957;e.nuhiragana=12396;e.nukatakana=12492;e.nukatakanahalfwidth=65415;e.nuktabengali=2492;e.nuktadeva=2364;e.nuktagujarati=2748;e.nuktagurmukhi=2620;e.numbersign=35;e.numbersignmonospace=65283;e.numbersignsmall=65119;e.numeralsigngreek=884;e.numeralsignlowergreek=885;e.numero=8470;e.nun=1504;e.nundagesh=64320;e.nundageshhebrew=64320;e.nunhebrew=1504;e.nvsquare=13237;e.nwsquare=13243;e.nyabengali=2462;e.nyadeva=2334;e.nyagujarati=2718;e.nyagurmukhi=2590;e.o=111;e.oacute=243;e.oangthai=3629;e.obarred=629;e.obarredcyrillic=1257;e.obarreddieresiscyrillic=1259;e.obengali=2451;e.obopomofo=12571;e.obreve=335;e.ocandradeva=2321;e.ocandragujarati=2705;e.ocandravowelsigndeva=2377;e.ocandravowelsigngujarati=2761;e.ocaron=466;e.ocircle=9438;e.ocircumflex=244;e.ocircumflexacute=7889;e.ocircumflexdotbelow=7897;e.ocircumflexgrave=7891;e.ocircumflexhookabove=7893;e.ocircumflextilde=7895;e.ocyrillic=1086;e.odblacute=337;e.odblgrave=525;e.odeva=2323;e.odieresis=246;e.odieresiscyrillic=1255;e.odotbelow=7885;e.oe=339;e.oekorean=12634;e.ogonek=731;e.ogonekcmb=808;e.ograve=242;e.ogujarati=2707;e.oharmenian=1413;e.ohiragana=12362;e.ohookabove=7887;e.ohorn=417;e.ohornacute=7899;e.ohorndotbelow=7907;e.ohorngrave=7901;e.ohornhookabove=7903;e.ohorntilde=7905;e.ohungarumlaut=337;e.oi=419;e.oinvertedbreve=527;e.okatakana=12458;e.okatakanahalfwidth=65397;e.okorean=12631;e.olehebrew=1451;e.omacron=333;e.omacronacute=7763;e.omacrongrave=7761;e.omdeva=2384;e.omega=969;e.omega1=982;e.omegacyrillic=1121;e.omegalatinclosed=631;e.omegaroundcyrillic=1147;e.omegatitlocyrillic=1149;e.omegatonos=974;e.omgujarati=2768;e.omicron=959;e.omicrontonos=972;e.omonospace=65359;e.one=49;e.onearabic=1633;e.onebengali=2535;e.onecircle=9312;e.onecircleinversesansserif=10122;e.onedeva=2407;e.onedotenleader=8228;e.oneeighth=8539;e.onefitted=63196;e.onegujarati=2791;e.onegurmukhi=2663;e.onehackarabic=1633;e.onehalf=189;e.onehangzhou=12321;e.oneideographicparen=12832;e.oneinferior=8321;e.onemonospace=65297;e.onenumeratorbengali=2548;e.oneoldstyle=63281;e.oneparen=9332;e.oneperiod=9352;e.onepersian=1777;e.onequarter=188;e.oneroman=8560;e.onesuperior=185;e.onethai=3665;e.onethird=8531;e.oogonek=491;e.oogonekmacron=493;e.oogurmukhi=2579;e.oomatragurmukhi=2635;e.oopen=596;e.oparen=9386;e.openbullet=9702;e.option=8997;e.ordfeminine=170;e.ordmasculine=186;e.orthogonal=8735;e.oshortdeva=2322;e.oshortvowelsigndeva=2378;e.oslash=248;e.oslashacute=511;e.osmallhiragana=12361;e.osmallkatakana=12457;e.osmallkatakanahalfwidth=65387;e.ostrokeacute=511;e.osuperior=63216;e.otcyrillic=1151;e.otilde=245;e.otildeacute=7757;e.otildedieresis=7759;e.oubopomofo=12577;e.overline=8254;e.overlinecenterline=65098;e.overlinecmb=773;e.overlinedashed=65097;e.overlinedblwavy=65100;e.overlinewavy=65099;e.overscore=175;e.ovowelsignbengali=2507;e.ovowelsigndeva=2379;e.ovowelsigngujarati=2763;e.p=112;e.paampssquare=13184;e.paasentosquare=13099;e.pabengali=2474;e.pacute=7765;e.padeva=2346;e.pagedown=8671;e.pageup=8670;e.pagujarati=2730;e.pagurmukhi=2602;e.pahiragana=12401;e.paiyannoithai=3631;e.pakatakana=12497;e.palatalizationcyrilliccmb=1156;e.palochkacyrillic=1216;e.pansioskorean=12671;e.paragraph=182;e.parallel=8741;e.parenleft=40;e.parenleftaltonearabic=64830;e.parenleftbt=63725;e.parenleftex=63724;e.parenleftinferior=8333;e.parenleftmonospace=65288;e.parenleftsmall=65113;e.parenleftsuperior=8317;e.parenlefttp=63723;e.parenleftvertical=65077;e.parenright=41;e.parenrightaltonearabic=64831;e.parenrightbt=63736;e.parenrightex=63735;e.parenrightinferior=8334;e.parenrightmonospace=65289;e.parenrightsmall=65114;e.parenrightsuperior=8318;e.parenrighttp=63734;e.parenrightvertical=65078;e.partialdiff=8706;e.paseqhebrew=1472;e.pashtahebrew=1433;e.pasquare=13225;e.patah=1463;e.patah11=1463;e.patah1d=1463;e.patah2a=1463;e.patahhebrew=1463;e.patahnarrowhebrew=1463;e.patahquarterhebrew=1463;e.patahwidehebrew=1463;e.pazerhebrew=1441;e.pbopomofo=12550;e.pcircle=9439;e.pdotaccent=7767;e.pe=1508;e.pecyrillic=1087;e.pedagesh=64324;e.pedageshhebrew=64324;e.peezisquare=13115;e.pefinaldageshhebrew=64323;e.peharabic=1662;e.peharmenian=1402;e.pehebrew=1508;e.pehfinalarabic=64343;e.pehinitialarabic=64344;e.pehiragana=12410;e.pehmedialarabic=64345;e.pekatakana=12506;e.pemiddlehookcyrillic=1191;e.perafehebrew=64334;e.percent=37;e.percentarabic=1642;e.percentmonospace=65285;e.percentsmall=65130;e.period=46;e.periodarmenian=1417;e.periodcentered=183;e.periodhalfwidth=65377;e.periodinferior=63207;e.periodmonospace=65294;e.periodsmall=65106;e.periodsuperior=63208;e.perispomenigreekcmb=834;e.perpendicular=8869;e.perthousand=8240;e.peseta=8359;e.pfsquare=13194;e.phabengali=2475;e.phadeva=2347;e.phagujarati=2731;e.phagurmukhi=2603;e.phi=966;e.phi1=981;e.phieuphacirclekorean=12922;e.phieuphaparenkorean=12826;e.phieuphcirclekorean=12908;e.phieuphkorean=12621;e.phieuphparenkorean=12812;e.philatin=632;e.phinthuthai=3642;e.phisymbolgreek=981;e.phook=421;e.phophanthai=3614;e.phophungthai=3612;e.phosamphaothai=3616;e.pi=960;e.pieupacirclekorean=12915;e.pieupaparenkorean=12819;e.pieupcieuckorean=12662;e.pieupcirclekorean=12901;e.pieupkiyeokkorean=12658;e.pieupkorean=12610;e.pieupparenkorean=12805;e.pieupsioskiyeokkorean=12660;e.pieupsioskorean=12612;e.pieupsiostikeutkorean=12661;e.pieupthieuthkorean=12663;e.pieuptikeutkorean=12659;e.pihiragana=12404;e.pikatakana=12500;e.pisymbolgreek=982;e.piwrarmenian=1411;e.planckover2pi=8463;e.planckover2pi1=8463;e.plus=43;e.plusbelowcmb=799;e.pluscircle=8853;e.plusminus=177;e.plusmod=726;e.plusmonospace=65291;e.plussmall=65122;e.plussuperior=8314;e.pmonospace=65360;e.pmsquare=13272;e.pohiragana=12413;e.pointingindexdownwhite=9759;e.pointingindexleftwhite=9756;e.pointingindexrightwhite=9758;e.pointingindexupwhite=9757;e.pokatakana=12509;e.poplathai=3611;e.postalmark=12306;e.postalmarkface=12320;e.pparen=9387;e.precedes=8826;e.prescription=8478;e.primemod=697;e.primereversed=8245;e.product=8719;e.projective=8965;e.prolongedkana=12540;e.propellor=8984;e.propersubset=8834;e.propersuperset=8835;e.proportion=8759;e.proportional=8733;e.psi=968;e.psicyrillic=1137;e.psilipneumatacyrilliccmb=1158;e.pssquare=13232;e.puhiragana=12407;e.pukatakana=12503;e.pvsquare=13236;e.pwsquare=13242;e.q=113;e.qadeva=2392;e.qadmahebrew=1448;e.qafarabic=1602;e.qaffinalarabic=65238;e.qafinitialarabic=65239;e.qafmedialarabic=65240;e.qamats=1464;e.qamats10=1464;e.qamats1a=1464;e.qamats1c=1464;e.qamats27=1464;e.qamats29=1464;e.qamats33=1464;e.qamatsde=1464;e.qamatshebrew=1464;e.qamatsnarrowhebrew=1464;e.qamatsqatanhebrew=1464;e.qamatsqatannarrowhebrew=1464;e.qamatsqatanquarterhebrew=1464;e.qamatsqatanwidehebrew=1464;e.qamatsquarterhebrew=1464;e.qamatswidehebrew=1464;e.qarneyparahebrew=1439;e.qbopomofo=12561;e.qcircle=9440;e.qhook=672;e.qmonospace=65361;e.qof=1511;e.qofdagesh=64327;e.qofdageshhebrew=64327;e.qofhebrew=1511;e.qparen=9388;e.quarternote=9833;e.qubuts=1467;e.qubuts18=1467;e.qubuts25=1467;e.qubuts31=1467;e.qubutshebrew=1467;e.qubutsnarrowhebrew=1467;e.qubutsquarterhebrew=1467;e.qubutswidehebrew=1467;e.question=63;e.questionarabic=1567;e.questionarmenian=1374;e.questiondown=191;e.questiondownsmall=63423;e.questiongreek=894;e.questionmonospace=65311;e.questionsmall=63295;e.quotedbl=34;e.quotedblbase=8222;e.quotedblleft=8220;e.quotedblmonospace=65282;e.quotedblprime=12318;e.quotedblprimereversed=12317;e.quotedblright=8221;e.quoteleft=8216;e.quoteleftreversed=8219;e.quotereversed=8219;e.quoteright=8217;e.quoterightn=329;e.quotesinglbase=8218;e.quotesingle=39;e.quotesinglemonospace=65287;e.r=114;e.raarmenian=1404;e.rabengali=2480;e.racute=341;e.radeva=2352;e.radical=8730;e.radicalex=63717;e.radoverssquare=13230;e.radoverssquaredsquare=13231;e.radsquare=13229;e.rafe=1471;e.rafehebrew=1471;e.ragujarati=2736;e.ragurmukhi=2608;e.rahiragana=12425;e.rakatakana=12521;e.rakatakanahalfwidth=65431;e.ralowerdiagonalbengali=2545;e.ramiddlediagonalbengali=2544;e.ramshorn=612;e.ratio=8758;e.rbopomofo=12566;e.rcaron=345;e.rcedilla=343;e.rcircle=9441;e.rcommaaccent=343;e.rdblgrave=529;e.rdotaccent=7769;e.rdotbelow=7771;e.rdotbelowmacron=7773;e.referencemark=8251;e.reflexsubset=8838;e.reflexsuperset=8839;e.registered=174;e.registersans=63720;e.registerserif=63194;e.reharabic=1585;e.reharmenian=1408;e.rehfinalarabic=65198;e.rehiragana=12428;e.rekatakana=12524;e.rekatakanahalfwidth=65434;e.resh=1512;e.reshdageshhebrew=64328;e.reshhebrew=1512;e.reversedtilde=8765;e.reviahebrew=1431;e.reviamugrashhebrew=1431;e.revlogicalnot=8976;e.rfishhook=638;e.rfishhookreversed=639;e.rhabengali=2525;e.rhadeva=2397;e.rho=961;e.rhook=637;e.rhookturned=635;e.rhookturnedsuperior=693;e.rhosymbolgreek=1009;e.rhotichookmod=734;e.rieulacirclekorean=12913;e.rieulaparenkorean=12817;e.rieulcirclekorean=12899;e.rieulhieuhkorean=12608;e.rieulkiyeokkorean=12602;e.rieulkiyeoksioskorean=12649;e.rieulkorean=12601;e.rieulmieumkorean=12603;e.rieulpansioskorean=12652;e.rieulparenkorean=12803;e.rieulphieuphkorean=12607;e.rieulpieupkorean=12604;e.rieulpieupsioskorean=12651;e.rieulsioskorean=12605;e.rieulthieuthkorean=12606;e.rieultikeutkorean=12650;e.rieulyeorinhieuhkorean=12653;e.rightangle=8735;e.righttackbelowcmb=793;e.righttriangle=8895;e.rihiragana=12426;e.rikatakana=12522;e.rikatakanahalfwidth=65432;e.ring=730;e.ringbelowcmb=805;e.ringcmb=778;e.ringhalfleft=703;e.ringhalfleftarmenian=1369;e.ringhalfleftbelowcmb=796;e.ringhalfleftcentered=723;e.ringhalfright=702;e.ringhalfrightbelowcmb=825;e.ringhalfrightcentered=722;e.rinvertedbreve=531;e.rittorusquare=13137;e.rlinebelow=7775;e.rlongleg=636;e.rlonglegturned=634;e.rmonospace=65362;e.rohiragana=12429;e.rokatakana=12525;e.rokatakanahalfwidth=65435;e.roruathai=3619;e.rparen=9389;e.rrabengali=2524;e.rradeva=2353;e.rragurmukhi=2652;e.rreharabic=1681;e.rrehfinalarabic=64397;e.rrvocalicbengali=2528;e.rrvocalicdeva=2400;e.rrvocalicgujarati=2784;e.rrvocalicvowelsignbengali=2500;e.rrvocalicvowelsigndeva=2372;e.rrvocalicvowelsigngujarati=2756;e.rsuperior=63217;e.rtblock=9616;e.rturned=633;e.rturnedsuperior=692;e.ruhiragana=12427;e.rukatakana=12523;e.rukatakanahalfwidth=65433;e.rupeemarkbengali=2546;e.rupeesignbengali=2547;e.rupiah=63197;e.ruthai=3620;e.rvocalicbengali=2443;e.rvocalicdeva=2315;e.rvocalicgujarati=2699;e.rvocalicvowelsignbengali=2499;e.rvocalicvowelsigndeva=2371;e.rvocalicvowelsigngujarati=2755;e.s=115;e.sabengali=2488;e.sacute=347;e.sacutedotaccent=7781;e.sadarabic=1589;e.sadeva=2360;e.sadfinalarabic=65210;e.sadinitialarabic=65211;e.sadmedialarabic=65212;e.sagujarati=2744;e.sagurmukhi=2616;e.sahiragana=12373;e.sakatakana=12469;e.sakatakanahalfwidth=65403;e.sallallahoualayhewasallamarabic=65018;e.samekh=1505;e.samekhdagesh=64321;e.samekhdageshhebrew=64321;e.samekhhebrew=1505;e.saraaathai=3634;e.saraaethai=3649;e.saraaimaimalaithai=3652;e.saraaimaimuanthai=3651;e.saraamthai=3635;e.saraathai=3632;e.saraethai=3648;e.saraiileftthai=63622;e.saraiithai=3637;e.saraileftthai=63621;e.saraithai=3636;e.saraothai=3650;e.saraueeleftthai=63624;e.saraueethai=3639;e.saraueleftthai=63623;e.sarauethai=3638;e.sarauthai=3640;e.sarauuthai=3641;e.sbopomofo=12569;e.scaron=353;e.scarondotaccent=7783;e.scedilla=351;e.schwa=601;e.schwacyrillic=1241;e.schwadieresiscyrillic=1243;e.schwahook=602;e.scircle=9442;e.scircumflex=349;e.scommaaccent=537;e.sdotaccent=7777;e.sdotbelow=7779;e.sdotbelowdotaccent=7785;e.seagullbelowcmb=828;e.second=8243;e.secondtonechinese=714;e.section=167;e.seenarabic=1587;e.seenfinalarabic=65202;e.seeninitialarabic=65203;e.seenmedialarabic=65204;e.segol=1462;e.segol13=1462;e.segol1f=1462;e.segol2c=1462;e.segolhebrew=1462;e.segolnarrowhebrew=1462;e.segolquarterhebrew=1462;e.segoltahebrew=1426;e.segolwidehebrew=1462;e.seharmenian=1405;e.sehiragana=12379;e.sekatakana=12475;e.sekatakanahalfwidth=65406;e.semicolon=59;e.semicolonarabic=1563;e.semicolonmonospace=65307;e.semicolonsmall=65108;e.semivoicedmarkkana=12444;e.semivoicedmarkkanahalfwidth=65439;e.sentisquare=13090;e.sentosquare=13091;e.seven=55;e.sevenarabic=1639;e.sevenbengali=2541;e.sevencircle=9318;e.sevencircleinversesansserif=10128;e.sevendeva=2413;e.seveneighths=8542;e.sevengujarati=2797;e.sevengurmukhi=2669;e.sevenhackarabic=1639;e.sevenhangzhou=12327;e.sevenideographicparen=12838;e.seveninferior=8327;e.sevenmonospace=65303;e.sevenoldstyle=63287;e.sevenparen=9338;e.sevenperiod=9358;e.sevenpersian=1783;e.sevenroman=8566;e.sevensuperior=8311;e.seventeencircle=9328;e.seventeenparen=9348;e.seventeenperiod=9368;e.seventhai=3671;e.sfthyphen=173;e.shaarmenian=1399;e.shabengali=2486;e.shacyrillic=1096;e.shaddaarabic=1617;e.shaddadammaarabic=64609;e.shaddadammatanarabic=64606;e.shaddafathaarabic=64608;e.shaddakasraarabic=64610;e.shaddakasratanarabic=64607;e.shade=9618;e.shadedark=9619;e.shadelight=9617;e.shademedium=9618;e.shadeva=2358;e.shagujarati=2742;e.shagurmukhi=2614;e.shalshelethebrew=1427;e.shbopomofo=12565;e.shchacyrillic=1097;e.sheenarabic=1588;e.sheenfinalarabic=65206;e.sheeninitialarabic=65207;e.sheenmedialarabic=65208;e.sheicoptic=995;e.sheqel=8362;e.sheqelhebrew=8362;e.sheva=1456;e.sheva115=1456;e.sheva15=1456;e.sheva22=1456;e.sheva2e=1456;e.shevahebrew=1456;e.shevanarrowhebrew=1456;e.shevaquarterhebrew=1456;e.shevawidehebrew=1456;e.shhacyrillic=1211;e.shimacoptic=1005;e.shin=1513;e.shindagesh=64329;e.shindageshhebrew=64329;e.shindageshshindot=64300;e.shindageshshindothebrew=64300;e.shindageshsindot=64301;e.shindageshsindothebrew=64301;e.shindothebrew=1473;e.shinhebrew=1513;e.shinshindot=64298;e.shinshindothebrew=64298;e.shinsindot=64299;e.shinsindothebrew=64299;e.shook=642;e.sigma=963;e.sigma1=962;e.sigmafinal=962;e.sigmalunatesymbolgreek=1010;e.sihiragana=12375;e.sikatakana=12471;e.sikatakanahalfwidth=65404;e.siluqhebrew=1469;e.siluqlefthebrew=1469;e.similar=8764;e.sindothebrew=1474;e.siosacirclekorean=12916;e.siosaparenkorean=12820;e.sioscieuckorean=12670;e.sioscirclekorean=12902;e.sioskiyeokkorean=12666;e.sioskorean=12613;e.siosnieunkorean=12667;e.siosparenkorean=12806;e.siospieupkorean=12669;e.siostikeutkorean=12668;e.six=54;e.sixarabic=1638;e.sixbengali=2540;e.sixcircle=9317;e.sixcircleinversesansserif=10127;e.sixdeva=2412;e.sixgujarati=2796;e.sixgurmukhi=2668;e.sixhackarabic=1638;e.sixhangzhou=12326;e.sixideographicparen=12837;e.sixinferior=8326;e.sixmonospace=65302;e.sixoldstyle=63286;e.sixparen=9337;e.sixperiod=9357;e.sixpersian=1782;e.sixroman=8565;e.sixsuperior=8310;e.sixteencircle=9327;e.sixteencurrencydenominatorbengali=2553;e.sixteenparen=9347;e.sixteenperiod=9367;e.sixthai=3670;e.slash=47;e.slashmonospace=65295;e.slong=383;e.slongdotaccent=7835;e.smileface=9786;e.smonospace=65363;e.sofpasuqhebrew=1475;e.softhyphen=173;e.softsigncyrillic=1100;e.sohiragana=12381;e.sokatakana=12477;e.sokatakanahalfwidth=65407;e.soliduslongoverlaycmb=824;e.solidusshortoverlaycmb=823;e.sorusithai=3625;e.sosalathai=3624;e.sosothai=3595;e.sosuathai=3626;e.space=32;e.spacehackarabic=32;e.spade=9824;e.spadesuitblack=9824;e.spadesuitwhite=9828;e.sparen=9390;e.squarebelowcmb=827;e.squarecc=13252;e.squarecm=13213;e.squarediagonalcrosshatchfill=9641;e.squarehorizontalfill=9636;e.squarekg=13199;e.squarekm=13214;e.squarekmcapital=13262;e.squareln=13265;e.squarelog=13266;e.squaremg=13198;e.squaremil=13269;e.squaremm=13212;e.squaremsquared=13217;e.squareorthogonalcrosshatchfill=9638;e.squareupperlefttolowerrightfill=9639;e.squareupperrighttolowerleftfill=9640;e.squareverticalfill=9637;e.squarewhitewithsmallblack=9635;e.srsquare=13275;e.ssabengali=2487;e.ssadeva=2359;e.ssagujarati=2743;e.ssangcieuckorean=12617;e.ssanghieuhkorean=12677;e.ssangieungkorean=12672;e.ssangkiyeokkorean=12594;e.ssangnieunkorean=12645;e.ssangpieupkorean=12611;e.ssangsioskorean=12614;e.ssangtikeutkorean=12600;e.ssuperior=63218;e.sterling=163;e.sterlingmonospace=65505;e.strokelongoverlaycmb=822;e.strokeshortoverlaycmb=821;e.subset=8834;e.subsetnotequal=8842;e.subsetorequal=8838;e.succeeds=8827;e.suchthat=8715;e.suhiragana=12377;e.sukatakana=12473;e.sukatakanahalfwidth=65405;e.sukunarabic=1618;e.summation=8721;e.sun=9788;e.superset=8835;e.supersetnotequal=8843;e.supersetorequal=8839;e.svsquare=13276;e.syouwaerasquare=13180;e.t=116;e.tabengali=2468;e.tackdown=8868;e.tackleft=8867;e.tadeva=2340;e.tagujarati=2724;e.tagurmukhi=2596;e.taharabic=1591;e.tahfinalarabic=65218;e.tahinitialarabic=65219;e.tahiragana=12383;e.tahmedialarabic=65220;e.taisyouerasquare=13181;e.takatakana=12479;e.takatakanahalfwidth=65408;e.tatweelarabic=1600;e.tau=964;e.tav=1514;e.tavdages=64330;e.tavdagesh=64330;e.tavdageshhebrew=64330;e.tavhebrew=1514;e.tbar=359;e.tbopomofo=12554;e.tcaron=357;e.tccurl=680;e.tcedilla=355;e.tcheharabic=1670;e.tchehfinalarabic=64379;e.tchehinitialarabic=64380;e.tchehmedialarabic=64381;e.tcircle=9443;e.tcircumflexbelow=7793;e.tcommaaccent=355;e.tdieresis=7831;e.tdotaccent=7787;e.tdotbelow=7789;e.tecyrillic=1090;e.tedescendercyrillic=1197;e.teharabic=1578;e.tehfinalarabic=65174;e.tehhahinitialarabic=64674;e.tehhahisolatedarabic=64524;e.tehinitialarabic=65175;e.tehiragana=12390;e.tehjeeminitialarabic=64673;e.tehjeemisolatedarabic=64523;e.tehmarbutaarabic=1577;e.tehmarbutafinalarabic=65172;e.tehmedialarabic=65176;e.tehmeeminitialarabic=64676;e.tehmeemisolatedarabic=64526;e.tehnoonfinalarabic=64627;e.tekatakana=12486;e.tekatakanahalfwidth=65411;e.telephone=8481;e.telephoneblack=9742;e.telishagedolahebrew=1440;e.telishaqetanahebrew=1449;e.tencircle=9321;e.tenideographicparen=12841;e.tenparen=9341;e.tenperiod=9361;e.tenroman=8569;e.tesh=679;e.tet=1496;e.tetdagesh=64312;e.tetdageshhebrew=64312;e.tethebrew=1496;e.tetsecyrillic=1205;e.tevirhebrew=1435;e.tevirlefthebrew=1435;e.thabengali=2469;e.thadeva=2341;e.thagujarati=2725;e.thagurmukhi=2597;e.thalarabic=1584;e.thalfinalarabic=65196;e.thanthakhatlowleftthai=63640;e.thanthakhatlowrightthai=63639;e.thanthakhatthai=3660;e.thanthakhatupperleftthai=63638;e.theharabic=1579;e.thehfinalarabic=65178;e.thehinitialarabic=65179;e.thehmedialarabic=65180;e.thereexists=8707;e.therefore=8756;e.theta=952;e.theta1=977;e.thetasymbolgreek=977;e.thieuthacirclekorean=12921;e.thieuthaparenkorean=12825;e.thieuthcirclekorean=12907;e.thieuthkorean=12620;e.thieuthparenkorean=12811;e.thirteencircle=9324;e.thirteenparen=9344;e.thirteenperiod=9364;e.thonangmonthothai=3601;e.thook=429;e.thophuthaothai=3602;e.thorn=254;e.thothahanthai=3607;e.thothanthai=3600;e.thothongthai=3608;e.thothungthai=3606;e.thousandcyrillic=1154;e.thousandsseparatorarabic=1644;e.thousandsseparatorpersian=1644;e.three=51;e.threearabic=1635;e.threebengali=2537;e.threecircle=9314;e.threecircleinversesansserif=10124;e.threedeva=2409;e.threeeighths=8540;e.threegujarati=2793;e.threegurmukhi=2665;e.threehackarabic=1635;e.threehangzhou=12323;e.threeideographicparen=12834;e.threeinferior=8323;e.threemonospace=65299;e.threenumeratorbengali=2550;e.threeoldstyle=63283;e.threeparen=9334;e.threeperiod=9354;e.threepersian=1779;e.threequarters=190;e.threequartersemdash=63198;e.threeroman=8562;e.threesuperior=179;e.threethai=3667;e.thzsquare=13204;e.tihiragana=12385;e.tikatakana=12481;e.tikatakanahalfwidth=65409;e.tikeutacirclekorean=12912;e.tikeutaparenkorean=12816;e.tikeutcirclekorean=12898;e.tikeutkorean=12599;e.tikeutparenkorean=12802;e.tilde=732;e.tildebelowcmb=816;e.tildecmb=771;e.tildecomb=771;e.tildedoublecmb=864;e.tildeoperator=8764;e.tildeoverlaycmb=820;e.tildeverticalcmb=830;e.timescircle=8855;e.tipehahebrew=1430;e.tipehalefthebrew=1430;e.tippigurmukhi=2672;e.titlocyrilliccmb=1155;e.tiwnarmenian=1407;e.tlinebelow=7791;e.tmonospace=65364;e.toarmenian=1385;e.tohiragana=12392;e.tokatakana=12488;e.tokatakanahalfwidth=65412;e.tonebarextrahighmod=741;e.tonebarextralowmod=745;e.tonebarhighmod=742;e.tonebarlowmod=744;e.tonebarmidmod=743;e.tonefive=445;e.tonesix=389;e.tonetwo=424;e.tonos=900;e.tonsquare=13095;e.topatakthai=3599;e.tortoiseshellbracketleft=12308;e.tortoiseshellbracketleftsmall=65117;e.tortoiseshellbracketleftvertical=65081;e.tortoiseshellbracketright=12309;e.tortoiseshellbracketrightsmall=65118;e.tortoiseshellbracketrightvertical=65082;e.totaothai=3605;e.tpalatalhook=427;e.tparen=9391;e.trademark=8482;e.trademarksans=63722;e.trademarkserif=63195;e.tretroflexhook=648;e.triagdn=9660;e.triaglf=9668;e.triagrt=9658;e.triagup=9650;e.ts=678;e.tsadi=1510;e.tsadidagesh=64326;e.tsadidageshhebrew=64326;e.tsadihebrew=1510;e.tsecyrillic=1094;e.tsere=1461;e.tsere12=1461;e.tsere1e=1461;e.tsere2b=1461;e.tserehebrew=1461;e.tserenarrowhebrew=1461;e.tserequarterhebrew=1461;e.tserewidehebrew=1461;e.tshecyrillic=1115;e.tsuperior=63219;e.ttabengali=2463;e.ttadeva=2335;e.ttagujarati=2719;e.ttagurmukhi=2591;e.tteharabic=1657;e.ttehfinalarabic=64359;e.ttehinitialarabic=64360;e.ttehmedialarabic=64361;e.tthabengali=2464;e.tthadeva=2336;e.tthagujarati=2720;e.tthagurmukhi=2592;e.tturned=647;e.tuhiragana=12388;e.tukatakana=12484;e.tukatakanahalfwidth=65410;e.tusmallhiragana=12387;e.tusmallkatakana=12483;e.tusmallkatakanahalfwidth=65391;e.twelvecircle=9323;e.twelveparen=9343;e.twelveperiod=9363;e.twelveroman=8571;e.twentycircle=9331;e.twentyhangzhou=21316;e.twentyparen=9351;e.twentyperiod=9371;e.two=50;e.twoarabic=1634;e.twobengali=2536;e.twocircle=9313;e.twocircleinversesansserif=10123;e.twodeva=2408;e.twodotenleader=8229;e.twodotleader=8229;e.twodotleadervertical=65072;e.twogujarati=2792;e.twogurmukhi=2664;e.twohackarabic=1634;e.twohangzhou=12322;e.twoideographicparen=12833;e.twoinferior=8322;e.twomonospace=65298;e.twonumeratorbengali=2549;e.twooldstyle=63282;e.twoparen=9333;e.twoperiod=9353;e.twopersian=1778;e.tworoman=8561;e.twostroke=443;e.twosuperior=178;e.twothai=3666;e.twothirds=8532;e.u=117;e.uacute=250;e.ubar=649;e.ubengali=2441;e.ubopomofo=12584;e.ubreve=365;e.ucaron=468;e.ucircle=9444;e.ucircumflex=251;e.ucircumflexbelow=7799;e.ucyrillic=1091;e.udattadeva=2385;e.udblacute=369;e.udblgrave=533;e.udeva=2313;e.udieresis=252;e.udieresisacute=472;e.udieresisbelow=7795;e.udieresiscaron=474;e.udieresiscyrillic=1265;e.udieresisgrave=476;e.udieresismacron=470;e.udotbelow=7909;e.ugrave=249;e.ugujarati=2697;e.ugurmukhi=2569;e.uhiragana=12358;e.uhookabove=7911;e.uhorn=432;e.uhornacute=7913;e.uhorndotbelow=7921;e.uhorngrave=7915;e.uhornhookabove=7917;e.uhorntilde=7919;e.uhungarumlaut=369;e.uhungarumlautcyrillic=1267;e.uinvertedbreve=535;e.ukatakana=12454;e.ukatakanahalfwidth=65395;e.ukcyrillic=1145;e.ukorean=12636;e.umacron=363;e.umacroncyrillic=1263;e.umacrondieresis=7803;e.umatragurmukhi=2625;e.umonospace=65365;e.underscore=95;e.underscoredbl=8215;e.underscoremonospace=65343;e.underscorevertical=65075;e.underscorewavy=65103;e.union=8746;e.universal=8704;e.uogonek=371;e.uparen=9392;e.upblock=9600;e.upperdothebrew=1476;e.upsilon=965;e.upsilondieresis=971;e.upsilondieresistonos=944;e.upsilonlatin=650;e.upsilontonos=973;e.uptackbelowcmb=797;e.uptackmod=724;e.uragurmukhi=2675;e.uring=367;e.ushortcyrillic=1118;e.usmallhiragana=12357;e.usmallkatakana=12453;e.usmallkatakanahalfwidth=65385;e.ustraightcyrillic=1199;e.ustraightstrokecyrillic=1201;e.utilde=361;e.utildeacute=7801;e.utildebelow=7797;e.uubengali=2442;e.uudeva=2314;e.uugujarati=2698;e.uugurmukhi=2570;e.uumatragurmukhi=2626;e.uuvowelsignbengali=2498;e.uuvowelsigndeva=2370;e.uuvowelsigngujarati=2754;e.uvowelsignbengali=2497;e.uvowelsigndeva=2369;e.uvowelsigngujarati=2753;e.v=118;e.vadeva=2357;e.vagujarati=2741;e.vagurmukhi=2613;e.vakatakana=12535;e.vav=1493;e.vavdagesh=64309;e.vavdagesh65=64309;e.vavdageshhebrew=64309;e.vavhebrew=1493;e.vavholam=64331;e.vavholamhebrew=64331;e.vavvavhebrew=1520;e.vavyodhebrew=1521;e.vcircle=9445;e.vdotbelow=7807;e.vecyrillic=1074;e.veharabic=1700;e.vehfinalarabic=64363;e.vehinitialarabic=64364;e.vehmedialarabic=64365;e.vekatakana=12537;e.venus=9792;e.verticalbar=124;e.verticallineabovecmb=781;e.verticallinebelowcmb=809;e.verticallinelowmod=716;e.verticallinemod=712;e.vewarmenian=1406;e.vhook=651;e.vikatakana=12536;e.viramabengali=2509;e.viramadeva=2381;e.viramagujarati=2765;e.visargabengali=2435;e.visargadeva=2307;e.visargagujarati=2691;e.vmonospace=65366;e.voarmenian=1400;e.voicediterationhiragana=12446;e.voicediterationkatakana=12542;e.voicedmarkkana=12443;e.voicedmarkkanahalfwidth=65438;e.vokatakana=12538;e.vparen=9393;e.vtilde=7805;e.vturned=652;e.vuhiragana=12436;e.vukatakana=12532;e.w=119;e.wacute=7811;e.waekorean=12633;e.wahiragana=12431;e.wakatakana=12527;e.wakatakanahalfwidth=65436;e.wakorean=12632;e.wasmallhiragana=12430;e.wasmallkatakana=12526;e.wattosquare=13143;e.wavedash=12316;e.wavyunderscorevertical=65076;e.wawarabic=1608;e.wawfinalarabic=65262;e.wawhamzaabovearabic=1572;e.wawhamzaabovefinalarabic=65158;e.wbsquare=13277;e.wcircle=9446;e.wcircumflex=373;e.wdieresis=7813;e.wdotaccent=7815;e.wdotbelow=7817;e.wehiragana=12433;e.weierstrass=8472;e.wekatakana=12529;e.wekorean=12638;e.weokorean=12637;e.wgrave=7809;e.whitebullet=9702;e.whitecircle=9675;e.whitecircleinverse=9689;e.whitecornerbracketleft=12302;e.whitecornerbracketleftvertical=65091;e.whitecornerbracketright=12303;e.whitecornerbracketrightvertical=65092;e.whitediamond=9671;e.whitediamondcontainingblacksmalldiamond=9672;e.whitedownpointingsmalltriangle=9663;e.whitedownpointingtriangle=9661;e.whiteleftpointingsmalltriangle=9667;e.whiteleftpointingtriangle=9665;e.whitelenticularbracketleft=12310;e.whitelenticularbracketright=12311;e.whiterightpointingsmalltriangle=9657;e.whiterightpointingtriangle=9655;e.whitesmallsquare=9643;e.whitesmilingface=9786;e.whitesquare=9633;e.whitestar=9734;e.whitetelephone=9743;e.whitetortoiseshellbracketleft=12312;e.whitetortoiseshellbracketright=12313;e.whiteuppointingsmalltriangle=9653;e.whiteuppointingtriangle=9651;e.wihiragana=12432;e.wikatakana=12528;e.wikorean=12639;e.wmonospace=65367;e.wohiragana=12434;e.wokatakana=12530;e.wokatakanahalfwidth=65382;e.won=8361;e.wonmonospace=65510;e.wowaenthai=3623;e.wparen=9394;e.wring=7832;e.wsuperior=695;e.wturned=653;e.wynn=447;e.x=120;e.xabovecmb=829;e.xbopomofo=12562;e.xcircle=9447;e.xdieresis=7821;e.xdotaccent=7819;e.xeharmenian=1389;e.xi=958;e.xmonospace=65368;e.xparen=9395;e.xsuperior=739;e.y=121;e.yaadosquare=13134;e.yabengali=2479;e.yacute=253;e.yadeva=2351;e.yaekorean=12626;e.yagujarati=2735;e.yagurmukhi=2607;e.yahiragana=12420;e.yakatakana=12516;e.yakatakanahalfwidth=65428;e.yakorean=12625;e.yamakkanthai=3662;e.yasmallhiragana=12419;e.yasmallkatakana=12515;e.yasmallkatakanahalfwidth=65388;e.yatcyrillic=1123;e.ycircle=9448;e.ycircumflex=375;e.ydieresis=255;e.ydotaccent=7823;e.ydotbelow=7925;e.yeharabic=1610;e.yehbarreearabic=1746;e.yehbarreefinalarabic=64431;e.yehfinalarabic=65266;e.yehhamzaabovearabic=1574;e.yehhamzaabovefinalarabic=65162;e.yehhamzaaboveinitialarabic=65163;e.yehhamzaabovemedialarabic=65164;e.yehinitialarabic=65267;e.yehmedialarabic=65268;e.yehmeeminitialarabic=64733;e.yehmeemisolatedarabic=64600;e.yehnoonfinalarabic=64660;e.yehthreedotsbelowarabic=1745;e.yekorean=12630;e.yen=165;e.yenmonospace=65509;e.yeokorean=12629;e.yeorinhieuhkorean=12678;e.yerahbenyomohebrew=1450;e.yerahbenyomolefthebrew=1450;e.yericyrillic=1099;e.yerudieresiscyrillic=1273;e.yesieungkorean=12673;e.yesieungpansioskorean=12675;e.yesieungsioskorean=12674;e.yetivhebrew=1434;e.ygrave=7923;e.yhook=436;e.yhookabove=7927;e.yiarmenian=1397;e.yicyrillic=1111;e.yikorean=12642;e.yinyang=9775;e.yiwnarmenian=1410;e.ymonospace=65369;e.yod=1497;e.yoddagesh=64313;e.yoddageshhebrew=64313;e.yodhebrew=1497;e.yodyodhebrew=1522;e.yodyodpatahhebrew=64287;e.yohiragana=12424;e.yoikorean=12681;e.yokatakana=12520;e.yokatakanahalfwidth=65430;e.yokorean=12635;e.yosmallhiragana=12423;e.yosmallkatakana=12519;e.yosmallkatakanahalfwidth=65390;e.yotgreek=1011;e.yoyaekorean=12680;e.yoyakorean=12679;e.yoyakthai=3618;e.yoyingthai=3597;e.yparen=9396;e.ypogegrammeni=890;e.ypogegrammenigreekcmb=837;e.yr=422;e.yring=7833;e.ysuperior=696;e.ytilde=7929;e.yturned=654;e.yuhiragana=12422;e.yuikorean=12684;e.yukatakana=12518;e.yukatakanahalfwidth=65429;e.yukorean=12640;e.yusbigcyrillic=1131;e.yusbigiotifiedcyrillic=1133;e.yuslittlecyrillic=1127;e.yuslittleiotifiedcyrillic=1129;e.yusmallhiragana=12421;e.yusmallkatakana=12517;e.yusmallkatakanahalfwidth=65389;e.yuyekorean=12683;e.yuyeokorean=12682;e.yyabengali=2527;e.yyadeva=2399;e.z=122;e.zaarmenian=1382;e.zacute=378;e.zadeva=2395;e.zagurmukhi=2651;e.zaharabic=1592;e.zahfinalarabic=65222;e.zahinitialarabic=65223;e.zahiragana=12374;e.zahmedialarabic=65224;e.zainarabic=1586;e.zainfinalarabic=65200;e.zakatakana=12470;e.zaqefgadolhebrew=1429;e.zaqefqatanhebrew=1428;e.zarqahebrew=1432;e.zayin=1494;e.zayindagesh=64310;e.zayindageshhebrew=64310;e.zayinhebrew=1494;e.zbopomofo=12567;e.zcaron=382;e.zcircle=9449;e.zcircumflex=7825;e.zcurl=657;e.zdot=380;e.zdotaccent=380;e.zdotbelow=7827;e.zecyrillic=1079;e.zedescendercyrillic=1177;e.zedieresiscyrillic=1247;e.zehiragana=12380;e.zekatakana=12476;e.zero=48;e.zeroarabic=1632;e.zerobengali=2534;e.zerodeva=2406;e.zerogujarati=2790;e.zerogurmukhi=2662;e.zerohackarabic=1632;e.zeroinferior=8320;e.zeromonospace=65296;e.zerooldstyle=63280;e.zeropersian=1776;e.zerosuperior=8304;e.zerothai=3664;e.zerowidthjoiner=65279;e.zerowidthnonjoiner=8204;e.zerowidthspace=8203;e.zeta=950;e.zhbopomofo=12563;e.zhearmenian=1386;e.zhebrevecyrillic=1218;e.zhecyrillic=1078;e.zhedescendercyrillic=1175;e.zhedieresiscyrillic=1245;e.zihiragana=12376;e.zikatakana=12472;e.zinorhebrew=1454;e.zlinebelow=7829;e.zmonospace=65370;e.zohiragana=12382;e.zokatakana=12478;e.zparen=9397;e.zretroflexhook=656;e.zstroke=438;e.zuhiragana=12378;e.zukatakana=12474;e[".notdef"]=0;e.angbracketleftbig=9001;e.angbracketleftBig=9001;e.angbracketleftbigg=9001;e.angbracketleftBigg=9001;e.angbracketrightBig=9002;e.angbracketrightbig=9002;e.angbracketrightBigg=9002;e.angbracketrightbigg=9002;e.arrowhookleft=8618;e.arrowhookright=8617;e.arrowlefttophalf=8636;e.arrowleftbothalf=8637;e.arrownortheast=8599;e.arrownorthwest=8598;e.arrowrighttophalf=8640;e.arrowrightbothalf=8641;e.arrowsoutheast=8600;e.arrowsouthwest=8601;e.backslashbig=8726;e.backslashBig=8726;e.backslashBigg=8726;e.backslashbigg=8726;e.bardbl=8214;e.bracehtipdownleft=65079;e.bracehtipdownright=65079;e.bracehtipupleft=65080;e.bracehtipupright=65080;e.braceleftBig=123;e.braceleftbig=123;e.braceleftbigg=123;e.braceleftBigg=123;e.bracerightBig=125;e.bracerightbig=125;e.bracerightbigg=125;e.bracerightBigg=125;e.bracketleftbig=91;e.bracketleftBig=91;e.bracketleftbigg=91;e.bracketleftBigg=91;e.bracketrightBig=93;e.bracketrightbig=93;e.bracketrightbigg=93;e.bracketrightBigg=93;e.ceilingleftbig=8968;e.ceilingleftBig=8968;e.ceilingleftBigg=8968;e.ceilingleftbigg=8968;e.ceilingrightbig=8969;e.ceilingrightBig=8969;e.ceilingrightbigg=8969;e.ceilingrightBigg=8969;e.circledotdisplay=8857;e.circledottext=8857;e.circlemultiplydisplay=8855;e.circlemultiplytext=8855;e.circleplusdisplay=8853;e.circleplustext=8853;e.contintegraldisplay=8750;e.contintegraltext=8750;e.coproductdisplay=8720;e.coproducttext=8720;e.floorleftBig=8970;e.floorleftbig=8970;e.floorleftbigg=8970;e.floorleftBigg=8970;e.floorrightbig=8971;e.floorrightBig=8971;e.floorrightBigg=8971;e.floorrightbigg=8971;e.hatwide=770;e.hatwider=770;e.hatwidest=770;e.intercal=7488;e.integraldisplay=8747;e.integraltext=8747;e.intersectiondisplay=8898;e.intersectiontext=8898;e.logicalanddisplay=8743;e.logicalandtext=8743;e.logicalordisplay=8744;e.logicalortext=8744;e.parenleftBig=40;e.parenleftbig=40;e.parenleftBigg=40;e.parenleftbigg=40;e.parenrightBig=41;e.parenrightbig=41;e.parenrightBigg=41;e.parenrightbigg=41;e.prime=8242;e.productdisplay=8719;e.producttext=8719;e.radicalbig=8730;e.radicalBig=8730;e.radicalBigg=8730;e.radicalbigg=8730;e.radicalbt=8730;e.radicaltp=8730;e.radicalvertex=8730;e.slashbig=47;e.slashBig=47;e.slashBigg=47;e.slashbigg=47;e.summationdisplay=8721;e.summationtext=8721;e.tildewide=732;e.tildewider=732;e.tildewidest=732;e.uniondisplay=8899;e.unionmultidisplay=8846;e.unionmultitext=8846;e.unionsqdisplay=8852;e.unionsqtext=8852;e.uniontext=8899;e.vextenddouble=8741;e.vextendsingle=8739})),Mi=getLookupTableFactory((function(e){e.space=32;e.a1=9985;e.a2=9986;e.a202=9987;e.a3=9988;e.a4=9742;e.a5=9990;e.a119=9991;e.a118=9992;e.a117=9993;e.a11=9755;e.a12=9758;e.a13=9996;e.a14=9997;e.a15=9998;e.a16=9999;e.a105=1e4;e.a17=10001;e.a18=10002;e.a19=10003;e.a20=10004;e.a21=10005;e.a22=10006;e.a23=10007;e.a24=10008;e.a25=10009;e.a26=10010;e.a27=10011;e.a28=10012;e.a6=10013;e.a7=10014;e.a8=10015;e.a9=10016;e.a10=10017;e.a29=10018;e.a30=10019;e.a31=10020;e.a32=10021;e.a33=10022;e.a34=10023;e.a35=9733;e.a36=10025;e.a37=10026;e.a38=10027;e.a39=10028;e.a40=10029;e.a41=10030;e.a42=10031;e.a43=10032;e.a44=10033;e.a45=10034;e.a46=10035;e.a47=10036;e.a48=10037;e.a49=10038;e.a50=10039;e.a51=10040;e.a52=10041;e.a53=10042;e.a54=10043;e.a55=10044;e.a56=10045;e.a57=10046;e.a58=10047;e.a59=10048;e.a60=10049;e.a61=10050;e.a62=10051;e.a63=10052;e.a64=10053;e.a65=10054;e.a66=10055;e.a67=10056;e.a68=10057;e.a69=10058;e.a70=10059;e.a71=9679;e.a72=10061;e.a73=9632;e.a74=10063;e.a203=10064;e.a75=10065;e.a204=10066;e.a76=9650;e.a77=9660;e.a78=9670;e.a79=10070;e.a81=9687;e.a82=10072;e.a83=10073;e.a84=10074;e.a97=10075;e.a98=10076;e.a99=10077;e.a100=10078;e.a101=10081;e.a102=10082;e.a103=10083;e.a104=10084;e.a106=10085;e.a107=10086;e.a108=10087;e.a112=9827;e.a111=9830;e.a110=9829;e.a109=9824;e.a120=9312;e.a121=9313;e.a122=9314;e.a123=9315;e.a124=9316;e.a125=9317;e.a126=9318;e.a127=9319;e.a128=9320;e.a129=9321;e.a130=10102;e.a131=10103;e.a132=10104;e.a133=10105;e.a134=10106;e.a135=10107;e.a136=10108;e.a137=10109;e.a138=10110;e.a139=10111;e.a140=10112;e.a141=10113;e.a142=10114;e.a143=10115;e.a144=10116;e.a145=10117;e.a146=10118;e.a147=10119;e.a148=10120;e.a149=10121;e.a150=10122;e.a151=10123;e.a152=10124;e.a153=10125;e.a154=10126;e.a155=10127;e.a156=10128;e.a157=10129;e.a158=10130;e.a159=10131;e.a160=10132;e.a161=8594;e.a163=8596;e.a164=8597;e.a196=10136;e.a165=10137;e.a192=10138;e.a166=10139;e.a167=10140;e.a168=10141;e.a169=10142;e.a170=10143;e.a171=10144;e.a172=10145;e.a173=10146;e.a162=10147;e.a174=10148;e.a175=10149;e.a176=10150;e.a177=10151;e.a178=10152;e.a179=10153;e.a193=10154;e.a180=10155;e.a199=10156;e.a181=10157;e.a200=10158;e.a182=10159;e.a201=10161;e.a183=10162;e.a184=10163;e.a197=10164;e.a185=10165;e.a194=10166;e.a198=10167;e.a186=10168;e.a195=10169;e.a187=10170;e.a188=10171;e.a189=10172;e.a190=10173;e.a191=10174;e.a89=10088;e.a90=10089;e.a93=10090;e.a94=10091;e.a91=10092;e.a92=10093;e.a205=10094;e.a85=10095;e.a206=10096;e.a86=10097;e.a87=10098;e.a88=10099;e.a95=10100;e.a96=10101;e[".notdef"]=0})),Hi=getLookupTableFactory((function(e){e[63721]=169;e[63193]=169;e[63720]=174;e[63194]=174;e[63722]=8482;e[63195]=8482;e[63729]=9127;e[63730]=9128;e[63731]=9129;e[63740]=9131;e[63741]=9132;e[63742]=9133;e[63726]=9121;e[63727]=9122;e[63728]=9123;e[63737]=9124;e[63738]=9125;e[63739]=9126;e[63723]=9115;e[63724]=9116;e[63725]=9117;e[63734]=9118;e[63735]=9119;e[63736]=9120}));function getUnicodeForGlyph(e,t){let i=t[e];if(void 0!==i)return i;if(!e)return-1;if("u"===e[0]){const t=e.length;let a;if(7===t&&"n"===e[1]&&"i"===e[2])a=e.substring(3);else{if(!(t>=5&&t<=7))return-1;a=e.substring(1)}if(a===a.toUpperCase()){i=parseInt(a,16);if(i>=0)return i}}return-1}const Ji=[[0,127],[128,255],[256,383],[384,591],[592,687,7424,7551,7552,7615],[688,767,42752,42783],[768,879,7616,7679],[880,1023],[11392,11519],[1024,1279,1280,1327,11744,11775,42560,42655],[1328,1423],[1424,1535],[42240,42559],[1536,1791,1872,1919],[1984,2047],[2304,2431],[2432,2559],[2560,2687],[2688,2815],[2816,2943],[2944,3071],[3072,3199],[3200,3327],[3328,3455],[3584,3711],[3712,3839],[4256,4351,11520,11567],[6912,7039],[4352,4607],[7680,7935,11360,11391,42784,43007],[7936,8191],[8192,8303,11776,11903],[8304,8351],[8352,8399],[8400,8447],[8448,8527],[8528,8591],[8592,8703,10224,10239,10496,10623,11008,11263],[8704,8959,10752,11007,10176,10223,10624,10751],[8960,9215],[9216,9279],[9280,9311],[9312,9471],[9472,9599],[9600,9631],[9632,9727],[9728,9983],[9984,10175],[12288,12351],[12352,12447],[12448,12543,12784,12799],[12544,12591,12704,12735],[12592,12687],[43072,43135],[12800,13055],[13056,13311],[44032,55215],[55296,57343],[67840,67871],[19968,40959,11904,12031,12032,12255,12272,12287,13312,19903,131072,173791,12688,12703],[57344,63743],[12736,12783,63744,64255,194560,195103],[64256,64335],[64336,65023],[65056,65071],[65040,65055],[65104,65135],[65136,65279],[65280,65519],[65520,65535],[3840,4095],[1792,1871],[1920,1983],[3456,3583],[4096,4255],[4608,4991,4992,5023,11648,11743],[5024,5119],[5120,5759],[5760,5791],[5792,5887],[6016,6143],[6144,6319],[10240,10495],[40960,42127],[5888,5919,5920,5951,5952,5983,5984,6015],[66304,66351],[66352,66383],[66560,66639],[118784,119039,119040,119295,119296,119375],[119808,120831],[1044480,1048573],[65024,65039,917760,917999],[917504,917631],[6400,6479],[6480,6527],[6528,6623],[6656,6687],[11264,11359],[11568,11647],[19904,19967],[43008,43055],[65536,65663,65664,65791,65792,65855],[65856,65935],[66432,66463],[66464,66527],[66640,66687],[66688,66735],[67584,67647],[68096,68191],[119552,119647],[73728,74751,74752,74879],[119648,119679],[7040,7103],[7168,7247],[7248,7295],[43136,43231],[43264,43311],[43312,43359],[43520,43615],[65936,65999],[66e3,66047],[66208,66271,66176,66207,67872,67903],[127024,127135,126976,127023]];function getUnicodeRangeFor(e,t=-1){if(-1!==t){const i=Ji[t];for(let a=0,r=i.length;a<r;a+=2)if(e>=i[a]&&e<=i[a+1])return t}for(let t=0,i=Ji.length;t<i;t++){const i=Ji[t];for(let a=0,r=i.length;a<r;a+=2)if(e>=i[a]&&e<=i[a+1])return t}return-1}const Yi=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),vi=new Map;const Ti=!0,Ki=1,qi=2,Oi=4,Pi=32,Wi=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function recoverGlyphName(e,t){if(void 0!==t[e])return e;const i=getUnicodeForGlyph(e,t);if(-1!==i)for(const e in t)if(t[e]===i)return e;info("Unable to recover a standard glyph name for: "+e);return e}function type1FontGlyphMapping(e,t,i){const a=Object.create(null);let r,s,n;const o=!!(e.flags&Oi);if(e.isInternalFont){n=t;for(s=0;s<n.length;s++){r=i.indexOf(n[s]);a[s]=r>=0?r:0}}else if(e.baseEncodingName){n=getEncoding(e.baseEncodingName);for(s=0;s<n.length;s++){r=i.indexOf(n[s]);a[s]=r>=0?r:0}}else if(o)for(s in t)a[s]=t[s];else{n=mi;for(s=0;s<n.length;s++){r=i.indexOf(n[s]);a[s]=r>=0?r:0}}const g=e.differences;let c;if(g)for(s in g){const e=g[s];r=i.indexOf(e);if(-1===r){c||(c=xi());const t=recoverGlyphName(e,c);t!==e&&(r=i.indexOf(t))}a[s]=r>=0?r:0}return a}function normalizeFontName(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")}const ji=getLookupTableFactory((function(e){e["Times-Roman"]="Times-Roman";e.Helvetica="Helvetica";e.Courier="Courier";e.Symbol="Symbol";e["Times-Bold"]="Times-Bold";e["Helvetica-Bold"]="Helvetica-Bold";e["Courier-Bold"]="Courier-Bold";e.ZapfDingbats="ZapfDingbats";e["Times-Italic"]="Times-Italic";e["Helvetica-Oblique"]="Helvetica-Oblique";e["Courier-Oblique"]="Courier-Oblique";e["Times-BoldItalic"]="Times-BoldItalic";e["Helvetica-BoldOblique"]="Helvetica-BoldOblique";e["Courier-BoldOblique"]="Courier-BoldOblique";e.ArialNarrow="Helvetica";e["ArialNarrow-Bold"]="Helvetica-Bold";e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique";e["ArialNarrow-Italic"]="Helvetica-Oblique";e.ArialBlack="Helvetica";e["ArialBlack-Bold"]="Helvetica-Bold";e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique";e["ArialBlack-Italic"]="Helvetica-Oblique";e["Arial-Black"]="Helvetica";e["Arial-Black-Bold"]="Helvetica-Bold";e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Black-Italic"]="Helvetica-Oblique";e.Arial="Helvetica";e["Arial-Bold"]="Helvetica-Bold";e["Arial-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Italic"]="Helvetica-Oblique";e.ArialMT="Helvetica";e["Arial-BoldItalicMT"]="Helvetica-BoldOblique";e["Arial-BoldMT"]="Helvetica-Bold";e["Arial-ItalicMT"]="Helvetica-Oblique";e["Arial-BoldItalicMT-BoldItalic"]="Helvetica-BoldOblique";e["Arial-BoldMT-Bold"]="Helvetica-Bold";e["Arial-ItalicMT-Italic"]="Helvetica-Oblique";e.ArialUnicodeMS="Helvetica";e["ArialUnicodeMS-Bold"]="Helvetica-Bold";e["ArialUnicodeMS-BoldItalic"]="Helvetica-BoldOblique";e["ArialUnicodeMS-Italic"]="Helvetica-Oblique";e["Courier-BoldItalic"]="Courier-BoldOblique";e["Courier-Italic"]="Courier-Oblique";e.CourierNew="Courier";e["CourierNew-Bold"]="Courier-Bold";e["CourierNew-BoldItalic"]="Courier-BoldOblique";e["CourierNew-Italic"]="Courier-Oblique";e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique";e["CourierNewPS-BoldMT"]="Courier-Bold";e["CourierNewPS-ItalicMT"]="Courier-Oblique";e.CourierNewPSMT="Courier";e["Helvetica-BoldItalic"]="Helvetica-BoldOblique";e["Helvetica-Italic"]="Helvetica-Oblique";e["Symbol-Bold"]="Symbol";e["Symbol-BoldItalic"]="Symbol";e["Symbol-Italic"]="Symbol";e.TimesNewRoman="Times-Roman";e["TimesNewRoman-Bold"]="Times-Bold";e["TimesNewRoman-BoldItalic"]="Times-BoldItalic";e["TimesNewRoman-Italic"]="Times-Italic";e.TimesNewRomanPS="Times-Roman";e["TimesNewRomanPS-Bold"]="Times-Bold";e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic";e["TimesNewRomanPS-BoldMT"]="Times-Bold";e["TimesNewRomanPS-Italic"]="Times-Italic";e["TimesNewRomanPS-ItalicMT"]="Times-Italic";e.TimesNewRomanPSMT="Times-Roman";e["TimesNewRomanPSMT-Bold"]="Times-Bold";e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPSMT-Italic"]="Times-Italic"})),Xi=getLookupTableFactory((function(e){e.Courier="FoxitFixed.pfb";e["Courier-Bold"]="FoxitFixedBold.pfb";e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb";e["Courier-Oblique"]="FoxitFixedItalic.pfb";e.Helvetica="LiberationSans-Regular.ttf";e["Helvetica-Bold"]="LiberationSans-Bold.ttf";e["Helvetica-BoldOblique"]="LiberationSans-BoldItalic.ttf";e["Helvetica-Oblique"]="LiberationSans-Italic.ttf";e["Times-Roman"]="FoxitSerif.pfb";e["Times-Bold"]="FoxitSerifBold.pfb";e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb";e["Times-Italic"]="FoxitSerifItalic.pfb";e.Symbol="FoxitSymbol.pfb";e.ZapfDingbats="FoxitDingbats.pfb";e["LiberationSans-Regular"]="LiberationSans-Regular.ttf";e["LiberationSans-Bold"]="LiberationSans-Bold.ttf";e["LiberationSans-Italic"]="LiberationSans-Italic.ttf";e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"})),Zi=getLookupTableFactory((function(e){e.Calibri="Helvetica";e["Calibri-Bold"]="Helvetica-Bold";e["Calibri-BoldItalic"]="Helvetica-BoldOblique";e["Calibri-Italic"]="Helvetica-Oblique";e.CenturyGothic="Helvetica";e["CenturyGothic-Bold"]="Helvetica-Bold";e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique";e["CenturyGothic-Italic"]="Helvetica-Oblique";e.ComicSansMS="Comic Sans MS";e["ComicSansMS-Bold"]="Comic Sans MS-Bold";e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic";e["ComicSansMS-Italic"]="Comic Sans MS-Italic";e.Impact="Helvetica";e["ItcSymbol-Bold"]="Helvetica-Bold";e["ItcSymbol-BoldItalic"]="Helvetica-BoldOblique";e["ItcSymbol-Book"]="Helvetica";e["ItcSymbol-BookItalic"]="Helvetica-Oblique";e["ItcSymbol-Medium"]="Helvetica";e["ItcSymbol-MediumItalic"]="Helvetica-Oblique";e.LucidaConsole="Courier";e["LucidaConsole-Bold"]="Courier-Bold";e["LucidaConsole-BoldItalic"]="Courier-BoldOblique";e["LucidaConsole-Italic"]="Courier-Oblique";e["LucidaSans-Demi"]="Helvetica-Bold";e["MS-Gothic"]="MS Gothic";e["MS-Gothic-Bold"]="MS Gothic-Bold";e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic";e["MS-Gothic-Italic"]="MS Gothic-Italic";e["MS-Mincho"]="MS Mincho";e["MS-Mincho-Bold"]="MS Mincho-Bold";e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic";e["MS-Mincho-Italic"]="MS Mincho-Italic";e["MS-PGothic"]="MS PGothic";e["MS-PGothic-Bold"]="MS PGothic-Bold";e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic";e["MS-PGothic-Italic"]="MS PGothic-Italic";e["MS-PMincho"]="MS PMincho";e["MS-PMincho-Bold"]="MS PMincho-Bold";e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic";e["MS-PMincho-Italic"]="MS PMincho-Italic";e.NuptialScript="Times-Italic";e.SegoeUISymbol="Helvetica"})),Vi=getLookupTableFactory((function(e){e["Adobe Jenson"]=!0;e["Adobe Text"]=!0;e.Albertus=!0;e.Aldus=!0;e.Alexandria=!0;e.Algerian=!0;e["American Typewriter"]=!0;e.Antiqua=!0;e.Apex=!0;e.Arno=!0;e.Aster=!0;e.Aurora=!0;e.Baskerville=!0;e.Bell=!0;e.Bembo=!0;e["Bembo Schoolbook"]=!0;e.Benguiat=!0;e["Berkeley Old Style"]=!0;e["Bernhard Modern"]=!0;e["Berthold City"]=!0;e.Bodoni=!0;e["Bauer Bodoni"]=!0;e["Book Antiqua"]=!0;e.Bookman=!0;e["Bordeaux Roman"]=!0;e["Californian FB"]=!0;e.Calisto=!0;e.Calvert=!0;e.Capitals=!0;e.Cambria=!0;e.Cartier=!0;e.Caslon=!0;e.Catull=!0;e.Centaur=!0;e["Century Old Style"]=!0;e["Century Schoolbook"]=!0;e.Chaparral=!0;e["Charis SIL"]=!0;e.Cheltenham=!0;e["Cholla Slab"]=!0;e.Clarendon=!0;e.Clearface=!0;e.Cochin=!0;e.Colonna=!0;e["Computer Modern"]=!0;e["Concrete Roman"]=!0;e.Constantia=!0;e["Cooper Black"]=!0;e.Corona=!0;e.Ecotype=!0;e.Egyptienne=!0;e.Elephant=!0;e.Excelsior=!0;e.Fairfield=!0;e["FF Scala"]=!0;e.Folkard=!0;e.Footlight=!0;e.FreeSerif=!0;e["Friz Quadrata"]=!0;e.Garamond=!0;e.Gentium=!0;e.Georgia=!0;e.Gloucester=!0;e["Goudy Old Style"]=!0;e["Goudy Schoolbook"]=!0;e["Goudy Pro Font"]=!0;e.Granjon=!0;e["Guardian Egyptian"]=!0;e.Heather=!0;e.Hercules=!0;e["High Tower Text"]=!0;e.Hiroshige=!0;e["Hoefler Text"]=!0;e["Humana Serif"]=!0;e.Imprint=!0;e["Ionic No. 5"]=!0;e.Janson=!0;e.Joanna=!0;e.Korinna=!0;e.Lexicon=!0;e.LiberationSerif=!0;e["Liberation Serif"]=!0;e["Linux Libertine"]=!0;e.Literaturnaya=!0;e.Lucida=!0;e["Lucida Bright"]=!0;e.Melior=!0;e.Memphis=!0;e.Miller=!0;e.Minion=!0;e.Modern=!0;e["Mona Lisa"]=!0;e["Mrs Eaves"]=!0;e["MS Serif"]=!0;e["Museo Slab"]=!0;e["New York"]=!0;e["Nimbus Roman"]=!0;e["NPS Rawlinson Roadway"]=!0;e.NuptialScript=!0;e.Palatino=!0;e.Perpetua=!0;e.Plantin=!0;e["Plantin Schoolbook"]=!0;e.Playbill=!0;e["Poor Richard"]=!0;e["Rawlinson Roadway"]=!0;e.Renault=!0;e.Requiem=!0;e.Rockwell=!0;e.Roman=!0;e["Rotis Serif"]=!0;e.Sabon=!0;e.Scala=!0;e.Seagull=!0;e.Sistina=!0;e.Souvenir=!0;e.STIX=!0;e["Stone Informal"]=!0;e["Stone Serif"]=!0;e.Sylfaen=!0;e.Times=!0;e.Trajan=!0;e["Trinité"]=!0;e["Trump Mediaeval"]=!0;e.Utopia=!0;e["Vale Type"]=!0;e["Bitstream Vera"]=!0;e["Vera Serif"]=!0;e.Versailles=!0;e.Wanted=!0;e.Weiss=!0;e["Wide Latin"]=!0;e.Windsor=!0;e.XITS=!0})),_i=getLookupTableFactory((function(e){e.Dingbats=!0;e.Symbol=!0;e.ZapfDingbats=!0;e.Wingdings=!0;e["Wingdings-Bold"]=!0;e["Wingdings-Regular"]=!0})),zi=getLookupTableFactory((function(e){e[2]=10;e[3]=32;e[4]=33;e[5]=34;e[6]=35;e[7]=36;e[8]=37;e[9]=38;e[10]=39;e[11]=40;e[12]=41;e[13]=42;e[14]=43;e[15]=44;e[16]=45;e[17]=46;e[18]=47;e[19]=48;e[20]=49;e[21]=50;e[22]=51;e[23]=52;e[24]=53;e[25]=54;e[26]=55;e[27]=56;e[28]=57;e[29]=58;e[30]=894;e[31]=60;e[32]=61;e[33]=62;e[34]=63;e[35]=64;e[36]=65;e[37]=66;e[38]=67;e[39]=68;e[40]=69;e[41]=70;e[42]=71;e[43]=72;e[44]=73;e[45]=74;e[46]=75;e[47]=76;e[48]=77;e[49]=78;e[50]=79;e[51]=80;e[52]=81;e[53]=82;e[54]=83;e[55]=84;e[56]=85;e[57]=86;e[58]=87;e[59]=88;e[60]=89;e[61]=90;e[62]=91;e[63]=92;e[64]=93;e[65]=94;e[66]=95;e[67]=96;e[68]=97;e[69]=98;e[70]=99;e[71]=100;e[72]=101;e[73]=102;e[74]=103;e[75]=104;e[76]=105;e[77]=106;e[78]=107;e[79]=108;e[80]=109;e[81]=110;e[82]=111;e[83]=112;e[84]=113;e[85]=114;e[86]=115;e[87]=116;e[88]=117;e[89]=118;e[90]=119;e[91]=120;e[92]=121;e[93]=122;e[94]=123;e[95]=124;e[96]=125;e[97]=126;e[98]=196;e[99]=197;e[100]=199;e[101]=201;e[102]=209;e[103]=214;e[104]=220;e[105]=225;e[106]=224;e[107]=226;e[108]=228;e[109]=227;e[110]=229;e[111]=231;e[112]=233;e[113]=232;e[114]=234;e[115]=235;e[116]=237;e[117]=236;e[118]=238;e[119]=239;e[120]=241;e[121]=243;e[122]=242;e[123]=244;e[124]=246;e[125]=245;e[126]=250;e[127]=249;e[128]=251;e[129]=252;e[130]=8224;e[131]=176;e[132]=162;e[133]=163;e[134]=167;e[135]=8226;e[136]=182;e[137]=223;e[138]=174;e[139]=169;e[140]=8482;e[141]=180;e[142]=168;e[143]=8800;e[144]=198;e[145]=216;e[146]=8734;e[147]=177;e[148]=8804;e[149]=8805;e[150]=165;e[151]=181;e[152]=8706;e[153]=8721;e[154]=8719;e[156]=8747;e[157]=170;e[158]=186;e[159]=8486;e[160]=230;e[161]=248;e[162]=191;e[163]=161;e[164]=172;e[165]=8730;e[166]=402;e[167]=8776;e[168]=8710;e[169]=171;e[170]=187;e[171]=8230;e[179]=8220;e[180]=8221;e[181]=8216;e[182]=8217;e[200]=193;e[203]=205;e[207]=211;e[210]=218;e[223]=711;e[224]=321;e[225]=322;e[226]=352;e[227]=353;e[228]=381;e[229]=382;e[233]=221;e[234]=253;e[252]=263;e[253]=268;e[254]=269;e[258]=258;e[260]=260;e[261]=261;e[265]=280;e[266]=281;e[267]=282;e[268]=283;e[269]=313;e[275]=323;e[276]=324;e[278]=328;e[283]=344;e[284]=345;e[285]=346;e[286]=347;e[292]=367;e[295]=377;e[296]=378;e[298]=380;e[305]=963;e[306]=964;e[307]=966;e[308]=8215;e[309]=8252;e[310]=8319;e[311]=8359;e[312]=8592;e[313]=8593;e[337]=9552;e[493]=1039;e[494]=1040;e[672]=1488;e[673]=1489;e[674]=1490;e[675]=1491;e[676]=1492;e[677]=1493;e[678]=1494;e[679]=1495;e[680]=1496;e[681]=1497;e[682]=1498;e[683]=1499;e[684]=1500;e[685]=1501;e[686]=1502;e[687]=1503;e[688]=1504;e[689]=1505;e[690]=1506;e[691]=1507;e[692]=1508;e[693]=1509;e[694]=1510;e[695]=1511;e[696]=1512;e[697]=1513;e[698]=1514;e[705]=1524;e[706]=8362;e[710]=64288;e[711]=64298;e[759]=1617;e[761]=1776;e[763]=1778;e[775]=1652;e[777]=1764;e[778]=1780;e[779]=1781;e[780]=1782;e[782]=771;e[783]=64726;e[786]=8363;e[788]=8532;e[790]=768;e[791]=769;e[792]=768;e[795]=803;e[797]=64336;e[798]=64337;e[799]=64342;e[800]=64343;e[801]=64344;e[802]=64345;e[803]=64362;e[804]=64363;e[805]=64364;e[2424]=7821;e[2425]=7822;e[2426]=7823;e[2427]=7824;e[2428]=7825;e[2429]=7826;e[2430]=7827;e[2433]=7682;e[2678]=8045;e[2679]=8046;e[2830]=1552;e[2838]=686;e[2840]=751;e[2842]=753;e[2843]=754;e[2844]=755;e[2846]=757;e[2856]=767;e[2857]=848;e[2858]=849;e[2862]=853;e[2863]=854;e[2864]=855;e[2865]=861;e[2866]=862;e[2906]=7460;e[2908]=7462;e[2909]=7463;e[2910]=7464;e[2912]=7466;e[2913]=7467;e[2914]=7468;e[2916]=7470;e[2917]=7471;e[2918]=7472;e[2920]=7474;e[2921]=7475;e[2922]=7476;e[2924]=7478;e[2925]=7479;e[2926]=7480;e[2928]=7482;e[2929]=7483;e[2930]=7484;e[2932]=7486;e[2933]=7487;e[2934]=7488;e[2936]=7490;e[2937]=7491;e[2938]=7492;e[2940]=7494;e[2941]=7495;e[2942]=7496;e[2944]=7498;e[2946]=7500;e[2948]=7502;e[2950]=7504;e[2951]=7505;e[2952]=7506;e[2954]=7508;e[2955]=7509;e[2956]=7510;e[2958]=7512;e[2959]=7513;e[2960]=7514;e[2962]=7516;e[2963]=7517;e[2964]=7518;e[2966]=7520;e[2967]=7521;e[2968]=7522;e[2970]=7524;e[2971]=7525;e[2972]=7526;e[2974]=7528;e[2975]=7529;e[2976]=7530;e[2978]=1537;e[2979]=1538;e[2980]=1539;e[2982]=1549;e[2983]=1551;e[2984]=1552;e[2986]=1554;e[2987]=1555;e[2988]=1556;e[2990]=1623;e[2991]=1624;e[2995]=1775;e[2999]=1791;e[3002]=64290;e[3003]=64291;e[3004]=64292;e[3006]=64294;e[3007]=64295;e[3008]=64296;e[3011]=1900;e[3014]=8223;e[3015]=8244;e[3017]=7532;e[3018]=7533;e[3019]=7534;e[3075]=7590;e[3076]=7591;e[3079]=7594;e[3080]=7595;e[3083]=7598;e[3084]=7599;e[3087]=7602;e[3088]=7603;e[3091]=7606;e[3092]=7607;e[3095]=7610;e[3096]=7611;e[3099]=7614;e[3100]=7615;e[3103]=7618;e[3104]=7619;e[3107]=8337;e[3108]=8338;e[3116]=1884;e[3119]=1885;e[3120]=1885;e[3123]=1886;e[3124]=1886;e[3127]=1887;e[3128]=1887;e[3131]=1888;e[3132]=1888;e[3135]=1889;e[3136]=1889;e[3139]=1890;e[3140]=1890;e[3143]=1891;e[3144]=1891;e[3147]=1892;e[3148]=1892;e[3153]=580;e[3154]=581;e[3157]=584;e[3158]=585;e[3161]=588;e[3162]=589;e[3165]=891;e[3166]=892;e[3169]=1274;e[3170]=1275;e[3173]=1278;e[3174]=1279;e[3181]=7622;e[3182]=7623;e[3282]=11799;e[3316]=578;e[3379]=42785;e[3393]=1159;e[3416]=8377})),$i=getLookupTableFactory((function(e){e[227]=322;e[264]=261;e[291]=346})),Aa=getLookupTableFactory((function(e){e[1]=32;e[4]=65;e[5]=192;e[6]=193;e[9]=196;e[17]=66;e[18]=67;e[21]=268;e[24]=68;e[28]=69;e[29]=200;e[30]=201;e[32]=282;e[38]=70;e[39]=71;e[44]=72;e[47]=73;e[48]=204;e[49]=205;e[58]=74;e[60]=75;e[62]=76;e[68]=77;e[69]=78;e[75]=79;e[76]=210;e[80]=214;e[87]=80;e[89]=81;e[90]=82;e[92]=344;e[94]=83;e[97]=352;e[100]=84;e[104]=85;e[109]=220;e[115]=86;e[116]=87;e[121]=88;e[122]=89;e[124]=221;e[127]=90;e[129]=381;e[258]=97;e[259]=224;e[260]=225;e[263]=228;e[268]=261;e[271]=98;e[272]=99;e[273]=263;e[275]=269;e[282]=100;e[286]=101;e[287]=232;e[288]=233;e[290]=283;e[295]=281;e[296]=102;e[336]=103;e[346]=104;e[349]=105;e[350]=236;e[351]=237;e[361]=106;e[364]=107;e[367]=108;e[371]=322;e[373]=109;e[374]=110;e[381]=111;e[382]=242;e[383]=243;e[386]=246;e[393]=112;e[395]=113;e[396]=114;e[398]=345;e[400]=115;e[401]=347;e[403]=353;e[410]=116;e[437]=117;e[442]=252;e[448]=118;e[449]=119;e[454]=120;e[455]=121;e[457]=253;e[460]=122;e[462]=382;e[463]=380;e[853]=44;e[855]=58;e[856]=46;e[876]=47;e[878]=45;e[882]=45;e[894]=40;e[895]=41;e[896]=91;e[897]=93;e[923]=64;e[1004]=48;e[1005]=49;e[1006]=50;e[1007]=51;e[1008]=52;e[1009]=53;e[1010]=54;e[1011]=55;e[1012]=56;e[1013]=57;e[1081]=37;e[1085]=43;e[1086]=45}));function getStandardFontName(e){const t=normalizeFontName(e);return ji()[t]}function isKnownFontName(e){const t=normalizeFontName(e);return!!(ji()[t]||Zi()[t]||Vi()[t]||_i()[t])}class ToUnicodeMap{constructor(e=[]){this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].charCodeAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const i in t)if(t[i]===e)return 0|i;return-1}amend(e){for(const t in e)this._map[t]=e[t]}}class IdentityToUnicodeMap{constructor(e,t){this.firstChar=e;this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,i=this.lastChar;t<=i;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){unreachable("Should not call amend()")}}class CFFFont{constructor(e,t){this.properties=t;const i=new CFFParser(e,t,Ti);this.cff=i.parse();this.cff.duplicateFirstGlyph();const a=new CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=a.compile()}catch{warn("Failed to compile font "+t.loadedName);this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,{cidToGidMap:i,cMap:a}=t,r=e.charset.charset;let s,n;if(t.composite){let t,o;if(i?.length>0){t=Object.create(null);for(let e=0,a=i.length;e<a;e++){const a=i[e];void 0!==a&&(t[a]=e)}}s=Object.create(null);if(e.isCIDFont)for(n=0;n<r.length;n++){const e=r[n];o=a.charCodeOf(e);void 0!==t?.[o]&&(o=t[o]);s[o]=n}else for(n=0;n<e.charStrings.count;n++){o=a.charCodeOf(n);s[o]=n}return s}let o=e.encoding?e.encoding.encoding:null;t.isInternalFont&&(o=t.defaultEncoding);s=type1FontGlyphMapping(t,o,r);return s}hasGlyphId(e){return this.cff.hasGlyphId(e)}_createBuiltInEncoding(){const{charset:e,encoding:t}=this.cff;if(!e||!t)return;const i=e.charset,a=t.encoding,r=[];for(const e in a){const t=a[e];if(t>=0){const a=i[t];a&&(r[e]=a)}}r.length>0&&(this.properties.builtInEncoding=r)}}function getUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function getUint16(e,t){return e[t]<<8|e[t+1]}function getInt16(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function getInt8(e,t){return e[t]<<24>>24}function getFloat214(e,t){return getInt16(e,t)/16384}function getSubroutineBias(e){const t=e.length;let i=32768;t<1240?i=107:t<33900&&(i=1131);return i}function parseCmap(e,t,i){const a=1===getUint16(e,t+2)?getUint32(e,t+8):getUint32(e,t+16),r=getUint16(e,t+a);let s,n,o;if(4===r){getUint16(e,t+a+2);const i=getUint16(e,t+a+6)>>1;n=t+a+14;s=[];for(o=0;o<i;o++,n+=2)s[o]={end:getUint16(e,n)};n+=2;for(o=0;o<i;o++,n+=2)s[o].start=getUint16(e,n);for(o=0;o<i;o++,n+=2)s[o].idDelta=getUint16(e,n);for(o=0;o<i;o++,n+=2){let t=getUint16(e,n);if(0!==t){s[o].ids=[];for(let i=0,a=s[o].end-s[o].start+1;i<a;i++){s[o].ids[i]=getUint16(e,n+t);t+=2}}}return s}if(12===r){const i=getUint32(e,t+a+12);n=t+a+16;s=[];for(o=0;o<i;o++){t=getUint32(e,n);s.push({start:t,end:getUint32(e,n+4),idDelta:getUint32(e,n+8)-t});n+=12}return s}throw new FormatError(`unsupported cmap: ${r}`)}function parseCff(e,t,i,a){const r=new CFFParser(new Stream(e,t,i-t),{},a).parse();return{glyphs:r.charStrings.objects,subrs:r.topDict.privateDict?.subrsIndex?.objects,gsubrs:r.globalSubrIndex?.objects,isCFFCIDFont:r.isCIDFont,fdSelect:r.fdSelect,fdArray:r.fdArray}}function lookupCmap(e,t){const i=t.codePointAt(0);let a=0,r=0,s=e.length-1;for(;r<s;){const t=r+s+1>>1;i<e[t].start?s=t-1:r=t}e[r].start<=i&&i<=e[r].end&&(a=e[r].idDelta+(e[r].ids?e[r].ids[i-e[r].start]:i)&65535);return{charCode:i,glyphId:a}}function compileGlyf(e,t,i){function moveTo(e,i){t.add(lt,[e,i])}function lineTo(e,i){t.add(Bt,[e,i])}function quadraticCurveTo(e,i,a,r){t.add(Qt,[e,i,a,r])}let a=0;const r=getInt16(e,a);let s,n=0,o=0;a+=10;if(r<0)do{s=getUint16(e,a);const r=getUint16(e,a+2);a+=4;let g,c;if(1&s){if(2&s){g=getInt16(e,a);c=getInt16(e,a+2)}else{g=getUint16(e,a);c=getUint16(e,a+2)}a+=4}else if(2&s){g=getInt8(e,a++);c=getInt8(e,a++)}else{g=e[a++];c=e[a++]}if(2&s){n=g;o=c}else{n=0;o=0}let C=1,h=1,l=0,Q=0;if(8&s){C=h=getFloat214(e,a);a+=2}else if(64&s){C=getFloat214(e,a);h=getFloat214(e,a+2);a+=4}else if(128&s){C=getFloat214(e,a);l=getFloat214(e,a+2);Q=getFloat214(e,a+4);h=getFloat214(e,a+6);a+=8}const E=i.glyphs[r];if(E){t.add(ut);t.add(ft,[C,l,Q,h,n,o]);compileGlyf(E,t,i);t.add(Et)}}while(32&s);else{const t=[];let i,g;for(i=0;i<r;i++){t.push(getUint16(e,a));a+=2}a+=2+getUint16(e,a);const c=t.at(-1)+1,C=[];for(;C.length<c;){s=e[a++];let t=1;8&s&&(t+=e[a++]);for(;t-- >0;)C.push({flags:s})}for(i=0;i<c;i++){switch(18&C[i].flags){case 0:n+=getInt16(e,a);a+=2;break;case 2:n-=e[a++];break;case 18:n+=e[a++]}C[i].x=n}for(i=0;i<c;i++){switch(36&C[i].flags){case 0:o+=getInt16(e,a);a+=2;break;case 4:o-=e[a++];break;case 36:o+=e[a++]}C[i].y=o}let h=0;for(a=0;a<r;a++){const e=t[a],r=C.slice(h,e+1);if(1&r[0].flags)r.push(r[0]);else if(1&r.at(-1).flags)r.unshift(r.at(-1));else{const e={flags:1,x:(r[0].x+r.at(-1).x)/2,y:(r[0].y+r.at(-1).y)/2};r.unshift(e);r.push(e)}moveTo(r[0].x,r[0].y);for(i=1,g=r.length;i<g;i++)if(1&r[i].flags)lineTo(r[i].x,r[i].y);else if(1&r[i+1].flags){quadraticCurveTo(r[i].x,r[i].y,r[i+1].x,r[i+1].y);i++}else quadraticCurveTo(r[i].x,r[i].y,(r[i].x+r[i+1].x)/2,(r[i].y+r[i+1].y)/2);h=e+1}}}function compileCharString(e,t,i,a){function moveTo(e,i){t.add(lt,[e,i])}function lineTo(e,i){t.add(Bt,[e,i])}function bezierCurveTo(e,i,a,r,s,n){t.add(ht,[e,i,a,r,s,n])}const r=[];let s=0,n=0,o=0;!function parse(e){let g=0;for(;g<e.length;){let c,C,h,l,Q,E,u,d,f,p=!1,m=e[g++];switch(m){case 1:case 3:case 18:case 23:o+=r.length>>1;p=!0;break;case 4:n+=r.pop();moveTo(s,n);p=!0;break;case 5:for(;r.length>0;){s+=r.shift();n+=r.shift();lineTo(s,n)}break;case 6:for(;r.length>0;){s+=r.shift();lineTo(s,n);if(0===r.length)break;n+=r.shift();lineTo(s,n)}break;case 7:for(;r.length>0;){n+=r.shift();lineTo(s,n);if(0===r.length)break;s+=r.shift();lineTo(s,n)}break;case 8:for(;r.length>0;){c=s+r.shift();h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l+r.shift();bezierCurveTo(c,h,C,l,s,n)}break;case 10:d=r.pop();f=null;if(i.isCFFCIDFont){const e=i.fdSelect.getFDIndex(a);if(e>=0&&e<i.fdArray.length){const t=i.fdArray[e];let a;t.privateDict?.subrsIndex&&(a=t.privateDict.subrsIndex.objects);if(a){d+=getSubroutineBias(a);f=a[d]}}else warn("Invalid fd index for glyph index.")}else f=i.subrs[d+i.subrsBias];f&&parse(f);break;case 11:return;case 12:m=e[g++];switch(m){case 34:c=s+r.shift();C=c+r.shift();Q=n+r.shift();s=C+r.shift();bezierCurveTo(c,n,C,Q,s,Q);c=s+r.shift();C=c+r.shift();s=C+r.shift();bezierCurveTo(c,Q,C,n,s,n);break;case 35:c=s+r.shift();h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l+r.shift();bezierCurveTo(c,h,C,l,s,n);c=s+r.shift();h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l+r.shift();bezierCurveTo(c,h,C,l,s,n);r.pop();break;case 36:c=s+r.shift();Q=n+r.shift();C=c+r.shift();E=Q+r.shift();s=C+r.shift();bezierCurveTo(c,Q,C,E,s,E);c=s+r.shift();C=c+r.shift();u=E+r.shift();s=C+r.shift();bezierCurveTo(c,E,C,u,s,n);break;case 37:const e=s,t=n;c=s+r.shift();h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l+r.shift();bezierCurveTo(c,h,C,l,s,n);c=s+r.shift();h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C;n=l;Math.abs(s-e)>Math.abs(n-t)?s+=r.shift():n+=r.shift();bezierCurveTo(c,h,C,l,s,n);break;default:throw new FormatError(`unknown operator: 12 ${m}`)}break;case 14:if(r.length>=4){const e=r.pop(),a=r.pop();n=r.pop();s=r.pop();t.add(ut);t.add(pt,[s,n]);let o=lookupCmap(i.cmap,String.fromCharCode(i.glyphNameMap[mi[e]]));compileCharString(i.glyphs[o.glyphId],t,i,o.glyphId);t.add(Et);o=lookupCmap(i.cmap,String.fromCharCode(i.glyphNameMap[mi[a]]));compileCharString(i.glyphs[o.glyphId],t,i,o.glyphId)}return;case 19:case 20:o+=r.length>>1;g+=o+7>>3;p=!0;break;case 21:n+=r.pop();s+=r.pop();moveTo(s,n);p=!0;break;case 22:s+=r.pop();moveTo(s,n);p=!0;break;case 24:for(;r.length>2;){c=s+r.shift();h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l+r.shift();bezierCurveTo(c,h,C,l,s,n)}s+=r.shift();n+=r.shift();lineTo(s,n);break;case 25:for(;r.length>6;){s+=r.shift();n+=r.shift();lineTo(s,n)}c=s+r.shift();h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l+r.shift();bezierCurveTo(c,h,C,l,s,n);break;case 26:r.length%2&&(s+=r.shift());for(;r.length>0;){c=s;h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C;n=l+r.shift();bezierCurveTo(c,h,C,l,s,n)}break;case 27:r.length%2&&(n+=r.shift());for(;r.length>0;){c=s+r.shift();h=n;C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l;bezierCurveTo(c,h,C,l,s,n)}break;case 28:r.push((e[g]<<24|e[g+1]<<16)>>16);g+=2;break;case 29:d=r.pop()+i.gsubrsBias;f=i.gsubrs[d];f&&parse(f);break;case 30:for(;r.length>0;){c=s;h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l+(1===r.length?r.shift():0);bezierCurveTo(c,h,C,l,s,n);if(0===r.length)break;c=s+r.shift();h=n;C=c+r.shift();l=h+r.shift();n=l+r.shift();s=C+(1===r.length?r.shift():0);bezierCurveTo(c,h,C,l,s,n)}break;case 31:for(;r.length>0;){c=s+r.shift();h=n;C=c+r.shift();l=h+r.shift();n=l+r.shift();s=C+(1===r.length?r.shift():0);bezierCurveTo(c,h,C,l,s,n);if(0===r.length)break;c=s;h=n+r.shift();C=c+r.shift();l=h+r.shift();s=C+r.shift();n=l+(1===r.length?r.shift():0);bezierCurveTo(c,h,C,l,s,n)}break;default:if(m<32)throw new FormatError(`unknown operator: ${m}`);if(m<247)r.push(m-139);else if(m<251)r.push(256*(m-247)+e[g++]+108);else if(m<255)r.push(256*-(m-251)-e[g++]-108);else{r.push((e[g]<<24|e[g+1]<<16|e[g+2]<<8|e[g+3])/65536);g+=4}}p&&(r.length=0)}}(e)}const ea=[];class Commands{cmds=[];add(e,t){if(t)if(isNumberArray(t,null))this.cmds.push(e,...t);else{warn(`Commands.add - "${e}" has at least one non-number arg: "${t}".`);const i=t.map((e=>"number"==typeof e?e:0));this.cmds.push(e,...i)}else this.cmds.push(e)}}class CompiledFont{constructor(e){this.constructor===CompiledFont&&unreachable("Cannot initialize CompiledFont.");this.fontMatrix=e;this.compiledGlyphs=Object.create(null);this.compiledCharCodeToGlyphId=Object.create(null)}getPathJs(e){const{charCode:t,glyphId:i}=lookupCmap(this.cmap,e);let a,r=this.compiledGlyphs[i];if(!r){try{r=this.compileGlyph(this.glyphs[i],i)}catch(e){r=ea;a=e}this.compiledGlyphs[i]=r}this.compiledCharCodeToGlyphId[t]??=i;if(a)throw a;return r}compileGlyph(e,t){if(!e||0===e.length||14===e[0])return ea;let i=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);if(e>=0&&e<this.fdArray.length){i=this.fdArray[e].getByName("FontMatrix")||r}else warn("Invalid fd index for glyph index.")}const a=new Commands;a.add(ut);a.add(ft,i.slice());a.add(dt);this.compileGlyphImpl(e,a,t);a.add(Et);return a.cmds}compileGlyphImpl(){unreachable("Children classes should implement this.")}hasBuiltPath(e){const{charCode:t,glyphId:i}=lookupCmap(this.cmap,e);return void 0!==this.compiledGlyphs[i]&&void 0!==this.compiledCharCodeToGlyphId[t]}}class TrueTypeCompiled extends CompiledFont{constructor(e,t,i){super(i||[488e-6,0,0,488e-6,0,0]);this.glyphs=e;this.cmap=t}compileGlyphImpl(e,t){compileGlyf(e,t,this)}}class Type2Compiled extends CompiledFont{constructor(e,t,i,a){super(i||[.001,0,0,.001,0,0]);this.glyphs=e.glyphs;this.gsubrs=e.gsubrs||[];this.subrs=e.subrs||[];this.cmap=t;this.glyphNameMap=a||xi();this.gsubrsBias=getSubroutineBias(this.gsubrs);this.subrsBias=getSubroutineBias(this.subrs);this.isCFFCIDFont=e.isCFFCIDFont;this.fdSelect=e.fdSelect;this.fdArray=e.fdArray}compileGlyphImpl(e,t,i){compileCharString(e,t,this,i)}}class FontRendererFactory{static create(e,t){const i=new Uint8Array(e.data);let a,r,s,n,o,g;const c=getUint16(i,4);for(let e=0,C=12;e<c;e++,C+=16){const e=bytesToString(i.subarray(C,C+4)),c=getUint32(i,C+8),h=getUint32(i,C+12);switch(e){case"cmap":a=parseCmap(i,c);break;case"glyf":r=i.subarray(c,c+h);break;case"loca":s=i.subarray(c,c+h);break;case"head":g=getUint16(i,c+18);o=getUint16(i,c+50);break;case"CFF ":n=parseCff(i,c,c+h,t)}}if(r){const t=g?[1/g,0,0,1/g,0,0]:e.fontMatrix;return new TrueTypeCompiled(function parseGlyfTable(e,t,i){let a,r;if(i){a=4;r=getUint32}else{a=2;r=(e,t)=>2*getUint16(e,t)}const s=[];let n=r(t,0);for(let i=a;i<t.length;i+=a){const a=r(t,i);s.push(e.subarray(n,a));n=a}return s}(r,s,o),a,t)}return new Type2Compiled(n,a,e.fontMatrix,e.glyphNameMap)}}const ta=getLookupTableFactory((function(e){e.Courier=600;e["Courier-Bold"]=600;e["Courier-BoldOblique"]=600;e["Courier-Oblique"]=600;e.Helvetica=getLookupTableFactory((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Bold"]=getLookupTableFactory((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-BoldOblique"]=getLookupTableFactory((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Oblique"]=getLookupTableFactory((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e.Symbol=getLookupTableFactory((function(e){e.space=250;e.exclam=333;e.universal=713;e.numbersign=500;e.existential=549;e.percent=833;e.ampersand=778;e.suchthat=439;e.parenleft=333;e.parenright=333;e.asteriskmath=500;e.plus=549;e.comma=250;e.minus=549;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=549;e.equal=549;e.greater=549;e.question=444;e.congruent=549;e.Alpha=722;e.Beta=667;e.Chi=722;e.Delta=612;e.Epsilon=611;e.Phi=763;e.Gamma=603;e.Eta=722;e.Iota=333;e.theta1=631;e.Kappa=722;e.Lambda=686;e.Mu=889;e.Nu=722;e.Omicron=722;e.Pi=768;e.Theta=741;e.Rho=556;e.Sigma=592;e.Tau=611;e.Upsilon=690;e.sigma1=439;e.Omega=768;e.Xi=645;e.Psi=795;e.Zeta=611;e.bracketleft=333;e.therefore=863;e.bracketright=333;e.perpendicular=658;e.underscore=500;e.radicalex=500;e.alpha=631;e.beta=549;e.chi=549;e.delta=494;e.epsilon=439;e.phi=521;e.gamma=411;e.eta=603;e.iota=329;e.phi1=603;e.kappa=549;e.lambda=549;e.mu=576;e.nu=521;e.omicron=549;e.pi=549;e.theta=521;e.rho=549;e.sigma=603;e.tau=439;e.upsilon=576;e.omega1=713;e.omega=686;e.xi=493;e.psi=686;e.zeta=494;e.braceleft=480;e.bar=200;e.braceright=480;e.similar=549;e.Euro=750;e.Upsilon1=620;e.minute=247;e.lessequal=549;e.fraction=167;e.infinity=713;e.florin=500;e.club=753;e.diamond=753;e.heart=753;e.spade=753;e.arrowboth=1042;e.arrowleft=987;e.arrowup=603;e.arrowright=987;e.arrowdown=603;e.degree=400;e.plusminus=549;e.second=411;e.greaterequal=549;e.multiply=549;e.proportional=713;e.partialdiff=494;e.bullet=460;e.divide=549;e.notequal=549;e.equivalence=549;e.approxequal=549;e.ellipsis=1e3;e.arrowvertex=603;e.arrowhorizex=1e3;e.carriagereturn=658;e.aleph=823;e.Ifraktur=686;e.Rfraktur=795;e.weierstrass=987;e.circlemultiply=768;e.circleplus=768;e.emptyset=823;e.intersection=768;e.union=768;e.propersuperset=713;e.reflexsuperset=713;e.notsubset=713;e.propersubset=713;e.reflexsubset=713;e.element=713;e.notelement=713;e.angle=768;e.gradient=713;e.registerserif=790;e.copyrightserif=790;e.trademarkserif=890;e.product=823;e.radical=549;e.dotmath=250;e.logicalnot=713;e.logicaland=603;e.logicalor=603;e.arrowdblboth=1042;e.arrowdblleft=987;e.arrowdblup=603;e.arrowdblright=987;e.arrowdbldown=603;e.lozenge=494;e.angleleft=329;e.registersans=790;e.copyrightsans=790;e.trademarksans=786;e.summation=713;e.parenlefttp=384;e.parenleftex=384;e.parenleftbt=384;e.bracketlefttp=384;e.bracketleftex=384;e.bracketleftbt=384;e.bracelefttp=494;e.braceleftmid=494;e.braceleftbt=494;e.braceex=494;e.angleright=329;e.integral=274;e.integraltp=686;e.integralex=686;e.integralbt=686;e.parenrighttp=384;e.parenrightex=384;e.parenrightbt=384;e.bracketrighttp=384;e.bracketrightex=384;e.bracketrightbt=384;e.bracerighttp=494;e.bracerightmid=494;e.bracerightbt=494;e.apple=790}));e["Times-Roman"]=getLookupTableFactory((function(e){e.space=250;e.exclam=333;e.quotedbl=408;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=564;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=564;e.equal=564;e.greater=564;e.question=444;e.at=921;e.A=722;e.B=667;e.C=667;e.D=722;e.E=611;e.F=556;e.G=722;e.H=722;e.I=333;e.J=389;e.K=722;e.L=611;e.M=889;e.N=722;e.O=722;e.P=556;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=722;e.W=944;e.X=722;e.Y=722;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=469;e.underscore=500;e.quoteleft=333;e.a=444;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=500;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=500;e.o=500;e.p=500;e.q=500;e.r=333;e.s=389;e.t=278;e.u=500;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=480;e.bar=200;e.braceright=480;e.asciitilde=541;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=180;e.quotedblleft=444;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=453;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=444;e.quotedblright=444;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=444;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=889;e.ordfeminine=276;e.Lslash=611;e.Oslash=722;e.OE=889;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=444;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=722;e.divide=564;e.Yacute=722;e.Acircumflex=722;e.aacute=444;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=444;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=444;e.Ncommaaccent=722;e.lacute=278;e.agrave=444;e.Tcommaaccent=611;e.Cacute=667;e.atilde=444;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=444;e.Amacron=722;e.rcaron=333;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=556;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=588;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=722;e.Abreve=722;e.multiply=564;e.uacute=500;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=444;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=722;e.Iacute=333;e.plusminus=564;e.brokenbar=200;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=333;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=326;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=444;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=344;e.Kcommaaccent=722;e.Lacute=611;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=722;e.zdotaccent=444;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=500;e.minus=564;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=564;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Bold"]=getLookupTableFactory((function(e){e.space=250;e.exclam=333;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=1e3;e.ampersand=833;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=930;e.A=722;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=778;e.I=389;e.J=500;e.K=778;e.L=667;e.M=944;e.N=722;e.O=778;e.P=611;e.Q=778;e.R=722;e.S=556;e.T=667;e.U=722;e.V=722;e.W=1e3;e.X=722;e.Y=722;e.Z=667;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=581;e.underscore=500;e.quoteleft=333;e.a=500;e.b=556;e.c=444;e.d=556;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=333;e.k=556;e.l=278;e.m=833;e.n=556;e.o=500;e.p=556;e.q=556;e.r=444;e.s=389;e.t=333;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=394;e.bar=220;e.braceright=394;e.asciitilde=520;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=540;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=300;e.Lslash=667;e.Oslash=778;e.OE=1e3;e.ordmasculine=330;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=556;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=722;e.divide=570;e.Yacute=722;e.Acircumflex=722;e.aacute=500;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=667;e.Cacute=722;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=500;e.Amacron=722;e.rcaron=444;e.ccedilla=444;e.Zdotaccent=667;e.Thorn=611;e.Omacron=778;e.Racute=722;e.Sacute=556;e.dcaron=672;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=570;e.uacute=556;e.Tcaron=667;e.partialdiff=494;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=778;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=444;e.omacron=500;e.Zacute=667;e.Zcaron=667;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=416;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=778;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=300;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=556;e.threequarters=750;e.Scedilla=556;e.lcaron=394;e.Kcommaaccent=778;e.Lacute=667;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=667;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=778;e.degree=400;e.ograve=500;e.Ccaron=722;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=444;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=722;e.Lcommaaccent=667;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=444;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=556;e.minus=570;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=333;e.logicalnot=570;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-BoldItalic"]=getLookupTableFactory((function(e){e.space=250;e.exclam=389;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=832;e.A=667;e.B=667;e.C=667;e.D=722;e.E=667;e.F=667;e.G=722;e.H=778;e.I=389;e.J=500;e.K=667;e.L=611;e.M=889;e.N=722;e.O=722;e.P=611;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=667;e.W=889;e.X=667;e.Y=611;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=570;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=556;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=556;e.v=444;e.w=667;e.x=500;e.y=444;e.z=389;e.braceleft=348;e.bar=220;e.braceright=348;e.asciitilde=570;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=500;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=944;e.ordfeminine=266;e.Lslash=611;e.Oslash=722;e.OE=944;e.ordmasculine=300;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=611;e.divide=570;e.Yacute=611;e.Acircumflex=667;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=611;e.Cacute=667;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=556;e.acircumflex=500;e.Amacron=667;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=611;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=608;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=722;e.Agrave=667;e.Abreve=667;e.multiply=570;e.uacute=556;e.Tcaron=611;e.partialdiff=494;e.ydieresis=444;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=722;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=366;e.eogonek=444;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=576;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=382;e.Kcommaaccent=667;e.Lacute=611;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=722;e.zdotaccent=389;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=500;e.minus=606;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=606;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Italic"]=getLookupTableFactory((function(e){e.space=250;e.exclam=333;e.quotedbl=420;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=675;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=675;e.equal=675;e.greater=675;e.question=500;e.at=920;e.A=611;e.B=611;e.C=667;e.D=722;e.E=611;e.F=611;e.G=722;e.H=722;e.I=333;e.J=444;e.K=667;e.L=556;e.M=833;e.N=667;e.O=722;e.P=611;e.Q=722;e.R=611;e.S=500;e.T=556;e.U=722;e.V=611;e.W=833;e.X=611;e.Y=556;e.Z=556;e.bracketleft=389;e.backslash=278;e.bracketright=389;e.asciicircum=422;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=278;e.g=500;e.h=500;e.i=278;e.j=278;e.k=444;e.l=278;e.m=722;e.n=500;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=500;e.v=444;e.w=667;e.x=444;e.y=444;e.z=389;e.braceleft=400;e.bar=275;e.braceright=400;e.asciitilde=541;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=214;e.quotedblleft=556;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=523;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=556;e.quotedblright=556;e.guillemotright=500;e.ellipsis=889;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=889;e.AE=889;e.ordfeminine=276;e.Lslash=556;e.Oslash=722;e.OE=944;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=667;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=500;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=556;e.divide=675;e.Yacute=556;e.Acircumflex=611;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=500;e.Ncommaaccent=667;e.lacute=278;e.agrave=500;e.Tcommaaccent=556;e.Cacute=667;e.atilde=500;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=611;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=500;e.Amacron=611;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=556;e.Thorn=611;e.Omacron=722;e.Racute=611;e.Sacute=500;e.dcaron=544;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=611;e.Abreve=611;e.multiply=675;e.uacute=500;e.Tcaron=556;e.partialdiff=476;e.ydieresis=444;e.Nacute=667;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=667;e.Iacute=333;e.plusminus=675;e.brokenbar=275;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=389;e.omacron=500;e.Zacute=556;e.Zcaron=556;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=300;e.eogonek=444;e.Uogonek=722;e.Aacute=611;e.Adieresis=611;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=500;e.lcaron=300;e.Kcommaaccent=667;e.Lacute=556;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=500;e.Scommaaccent=500;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=667;e.otilde=500;e.Rcommaaccent=611;e.Lcommaaccent=556;e.Atilde=611;e.Aogonek=611;e.Aring=611;e.Otilde=722;e.zdotaccent=389;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=444;e.minus=675;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=675;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e.ZapfDingbats=getLookupTableFactory((function(e){e.space=278;e.a1=974;e.a2=961;e.a202=974;e.a3=980;e.a4=719;e.a5=789;e.a119=790;e.a118=791;e.a117=690;e.a11=960;e.a12=939;e.a13=549;e.a14=855;e.a15=911;e.a16=933;e.a105=911;e.a17=945;e.a18=974;e.a19=755;e.a20=846;e.a21=762;e.a22=761;e.a23=571;e.a24=677;e.a25=763;e.a26=760;e.a27=759;e.a28=754;e.a6=494;e.a7=552;e.a8=537;e.a9=577;e.a10=692;e.a29=786;e.a30=788;e.a31=788;e.a32=790;e.a33=793;e.a34=794;e.a35=816;e.a36=823;e.a37=789;e.a38=841;e.a39=823;e.a40=833;e.a41=816;e.a42=831;e.a43=923;e.a44=744;e.a45=723;e.a46=749;e.a47=790;e.a48=792;e.a49=695;e.a50=776;e.a51=768;e.a52=792;e.a53=759;e.a54=707;e.a55=708;e.a56=682;e.a57=701;e.a58=826;e.a59=815;e.a60=789;e.a61=789;e.a62=707;e.a63=687;e.a64=696;e.a65=689;e.a66=786;e.a67=787;e.a68=713;e.a69=791;e.a70=785;e.a71=791;e.a72=873;e.a73=761;e.a74=762;e.a203=762;e.a75=759;e.a204=759;e.a76=892;e.a77=892;e.a78=788;e.a79=784;e.a81=438;e.a82=138;e.a83=277;e.a84=415;e.a97=392;e.a98=392;e.a99=668;e.a100=668;e.a89=390;e.a90=390;e.a93=317;e.a94=317;e.a91=276;e.a92=276;e.a205=509;e.a85=509;e.a206=410;e.a86=410;e.a87=234;e.a88=234;e.a95=334;e.a96=334;e.a101=732;e.a102=544;e.a103=544;e.a104=910;e.a106=667;e.a107=760;e.a108=760;e.a112=776;e.a111=595;e.a110=694;e.a109=626;e.a120=788;e.a121=788;e.a122=788;e.a123=788;e.a124=788;e.a125=788;e.a126=788;e.a127=788;e.a128=788;e.a129=788;e.a130=788;e.a131=788;e.a132=788;e.a133=788;e.a134=788;e.a135=788;e.a136=788;e.a137=788;e.a138=788;e.a139=788;e.a140=788;e.a141=788;e.a142=788;e.a143=788;e.a144=788;e.a145=788;e.a146=788;e.a147=788;e.a148=788;e.a149=788;e.a150=788;e.a151=788;e.a152=788;e.a153=788;e.a154=788;e.a155=788;e.a156=788;e.a157=788;e.a158=788;e.a159=788;e.a160=894;e.a161=838;e.a163=1016;e.a164=458;e.a196=748;e.a165=924;e.a192=748;e.a166=918;e.a167=927;e.a168=928;e.a169=928;e.a170=834;e.a171=873;e.a172=828;e.a173=924;e.a162=924;e.a174=917;e.a175=930;e.a176=931;e.a177=463;e.a178=883;e.a179=836;e.a193=836;e.a180=867;e.a199=867;e.a181=696;e.a200=696;e.a182=874;e.a201=874;e.a183=760;e.a184=946;e.a197=771;e.a185=865;e.a194=771;e.a198=888;e.a186=967;e.a195=888;e.a187=831;e.a188=873;e.a189=927;e.a190=970;e.a191=918}))})),ia=getLookupTableFactory((function(e){e.Courier={ascent:629,descent:-157,capHeight:562,xHeight:-426};e["Courier-Bold"]={ascent:629,descent:-157,capHeight:562,xHeight:439};e["Courier-Oblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426};e["Courier-BoldOblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426};e.Helvetica={ascent:718,descent:-207,capHeight:718,xHeight:523};e["Helvetica-Bold"]={ascent:718,descent:-207,capHeight:718,xHeight:532};e["Helvetica-Oblique"]={ascent:718,descent:-207,capHeight:718,xHeight:523};e["Helvetica-BoldOblique"]={ascent:718,descent:-207,capHeight:718,xHeight:532};e["Times-Roman"]={ascent:683,descent:-217,capHeight:662,xHeight:450};e["Times-Bold"]={ascent:683,descent:-217,capHeight:676,xHeight:461};e["Times-Italic"]={ascent:683,descent:-217,capHeight:653,xHeight:441};e["Times-BoldItalic"]={ascent:683,descent:-217,capHeight:669,xHeight:462};e.Symbol={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN};e.ZapfDingbats={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN}}));class GlyfTable{constructor({glyfTable:e,isGlyphLocationsLong:t,locaTable:i,numGlyphs:a}){this.glyphs=[];const r=new DataView(i.buffer,i.byteOffset,i.byteLength),s=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t?4:2;let o=t?r.getUint32(0):2*r.getUint16(0),g=0;for(let e=0;e<a;e++){g+=n;const e=t?r.getUint32(g):2*r.getUint16(g);if(e===o){this.glyphs.push(new Glyph({}));continue}const i=Glyph.parse(o,s);this.glyphs.push(i);o=e}}getSize(){return this.glyphs.reduce(((e,t)=>e+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),i=e>131070,a=i?4:2,r=new DataView(new ArrayBuffer((this.glyphs.length+1)*a));i?r.setUint32(0,0):r.setUint16(0,0);let s=0,n=0;for(const e of this.glyphs){s+=e.write(s,t);s=s+3&-4;n+=a;i?r.setUint32(n,s):r.setUint16(n,s>>1)}return{isLocationLong:i,loca:new Uint8Array(r.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,i=this.glyphs.length;t<i;t++)this.glyphs[t].scale(e[t])}}class Glyph{constructor({header:e=null,simple:t=null,composites:i=null}){this.header=e;this.simple=t;this.composites=i}static parse(e,t){const[i,a]=GlyphHeader.parse(e,t);e+=i;if(a.numberOfContours<0){const i=[];for(;;){const[a,r]=CompositeGlyph.parse(e,t);e+=a;i.push(r);if(!(32&r.flags))break}return new Glyph({header:a,composites:i})}const r=SimpleGlyph.parse(e,t,a.numberOfContours);return new Glyph({header:a,simple:r})}getSize(){if(!this.header)return 0;const e=this.simple?this.simple.getSize():this.composites.reduce(((e,t)=>e+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const i=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const i of this.composites)e+=i.write(e,t);return e-i}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;this.header.scale(t,e);if(this.simple)this.simple.scale(t,e);else for(const i of this.composites)i.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:i,xMax:a,yMax:r}){this.numberOfContours=e;this.xMin=t;this.yMin=i;this.xMax=a;this.yMax=r}static parse(e,t){return[10,new GlyphHeader({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){t.setInt16(e,this.numberOfContours);t.setInt16(e+2,this.xMin);t.setInt16(e+4,this.yMin);t.setInt16(e+6,this.xMax);t.setInt16(e+8,this.yMax);return 10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t);this.xMax=Math.round(e+(this.xMax-e)*t)}}class Contour{constructor({flags:e,xCoordinates:t,yCoordinates:i}){this.xCoordinates=t;this.yCoordinates=i;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,i){const a=[];for(let r=0;r<i;r++){const i=t.getUint16(e);e+=2;a.push(i)}const r=a[i-1]+1,s=t.getUint16(e);e+=2;const n=new Uint8Array(t).slice(e,e+s);e+=s;const o=[];for(let i=0;i<r;e++,i++){let a=t.getUint8(e);o.push(a);if(8&a){const r=t.getUint8(++e);a^=8;for(let e=0;e<r;e++)o.push(a);i+=r}}const g=[];let c=[],C=[],h=[];const l=[];let Q=0,E=0;for(let i=0;i<r;i++){const r=o[i];if(2&r){const i=t.getUint8(e++);E+=16&r?i:-i;c.push(E)}else if(16&r)c.push(E);else{E+=t.getInt16(e);e+=2;c.push(E)}if(a[Q]===i){Q++;g.push(c);c=[]}}E=0;Q=0;for(let i=0;i<r;i++){const r=o[i];if(4&r){const i=t.getUint8(e++);E+=32&r?i:-i;C.push(E)}else if(32&r)C.push(E);else{E+=t.getInt16(e);e+=2;C.push(E)}h.push(1&r|64&r);if(a[Q]===i){c=g[Q];Q++;l.push(new Contour({flags:h,xCoordinates:c,yCoordinates:C}));C=[];h=[]}}return new SimpleGlyph({contours:l,instructions:n})}getSize(){let e=2*this.contours.length+2+this.instructions.length,t=0,i=0;for(const a of this.contours){e+=a.flags.length;for(let r=0,s=a.xCoordinates.length;r<s;r++){const s=a.xCoordinates[r],n=a.yCoordinates[r];let o=Math.abs(s-t);o>255?e+=2:o>0&&(e+=1);t=s;o=Math.abs(n-i);o>255?e+=2:o>0&&(e+=1);i=n}}return e}write(e,t){const i=e,a=[],r=[],s=[];let n=0,o=0;for(const i of this.contours){for(let e=0,t=i.xCoordinates.length;e<t;e++){let t=i.flags[e];const g=i.xCoordinates[e];let c=g-n;if(0===c){t|=16;a.push(0)}else{const e=Math.abs(c);if(e<=255){t|=c>=0?18:2;a.push(e)}else a.push(c)}n=g;const C=i.yCoordinates[e];c=C-o;if(0===c){t|=32;r.push(0)}else{const e=Math.abs(c);if(e<=255){t|=c>=0?36:4;r.push(e)}else r.push(c)}o=C;s.push(t)}t.setUint16(e,a.length-1);e+=2}t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}for(const i of s)t.setUint8(e++,i);for(let i=0,r=a.length;i<r;i++){const r=a[i],n=s[i];if(2&n)t.setUint8(e++,r);else if(!(16&n)){t.setInt16(e,r);e+=2}}for(let i=0,a=r.length;i<a;i++){const a=r[i],n=s[i];if(4&n)t.setUint8(e++,a);else if(!(32&n)){t.setInt16(e,a);e+=2}}return e-i}scale(e,t){for(const i of this.contours)if(0!==i.xCoordinates.length)for(let a=0,r=i.xCoordinates.length;a<r;a++)i.xCoordinates[a]=Math.round(e+(i.xCoordinates[a]-e)*t)}}class CompositeGlyph{constructor({flags:e,glyphIndex:t,argument1:i,argument2:a,transf:r,instructions:s}){this.flags=e;this.glyphIndex=t;this.argument1=i;this.argument2=a;this.transf=r;this.instructions=s}static parse(e,t){const i=e,a=[];let r=t.getUint16(e);const s=t.getUint16(e+2);e+=4;let n,o;if(1&r){if(2&r){n=t.getInt16(e);o=t.getInt16(e+2)}else{n=t.getUint16(e);o=t.getUint16(e+2)}e+=4;r^=1}else{if(2&r){n=t.getInt8(e);o=t.getInt8(e+1)}else{n=t.getUint8(e);o=t.getUint8(e+1)}e+=2}if(8&r){a.push(t.getUint16(e));e+=2}else if(64&r){a.push(t.getUint16(e),t.getUint16(e+2));e+=4}else if(128&r){a.push(t.getUint16(e),t.getUint16(e+2),t.getUint16(e+4),t.getUint16(e+6));e+=8}let g=null;if(256&r){const i=t.getUint16(e);e+=2;g=new Uint8Array(t).slice(e,e+i);e+=i}return[e-i,new CompositeGlyph({flags:r,glyphIndex:s,argument1:n,argument2:o,transf:a,instructions:g})]}getSize(){let e=4+2*this.transf.length;256&this.flags&&(e+=2+this.instructions.length);e+=2;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2);return e}write(e,t){const i=e;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1);t.setUint16(e,this.flags);t.setUint16(e+2,this.glyphIndex);e+=4;if(1&this.flags){if(2&this.flags){t.setInt16(e,this.argument1);t.setInt16(e+2,this.argument2)}else{t.setUint16(e,this.argument1);t.setUint16(e+2,this.argument2)}e+=4}else{t.setUint8(e,this.argument1);t.setUint8(e+1,this.argument2);e+=2}if(256&this.flags){t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}}return e-i}scale(e,t){}}function writeInt16(e,t,i){e[t]=i>>8&255;e[t+1]=255&i}function writeInt32(e,t,i){e[t]=i>>24&255;e[t+1]=i>>16&255;e[t+2]=i>>8&255;e[t+3]=255&i}function writeData(e,t,i){if(i instanceof Uint8Array)e.set(i,t);else if("string"==typeof i)for(let a=0,r=i.length;a<r;a++)e[t++]=255&i.charCodeAt(a);else for(const a of i)e[t++]=255&a}class OpenTypeFileBuilder{constructor(e){this.sfnt=e;this.tables=Object.create(null)}static getSearchParams(e,t){let i=1,a=0;for(;(i^e)>i;){i<<=1;a++}const r=i*t;return{range:r,entry:a,rangeShift:t*e-r}}toArray(){let e=this.sfnt;const t=this.tables,i=Object.keys(t);i.sort();const a=i.length;let r,s,n,o,g,c=12+16*a;const C=[c];for(r=0;r<a;r++){o=t[i[r]];c+=(o.length+3&-4)>>>0;C.push(c)}const h=new Uint8Array(c);for(r=0;r<a;r++){o=t[i[r]];writeData(h,C[r],o)}"true"===e&&(e=string32(65536));h[0]=255&e.charCodeAt(0);h[1]=255&e.charCodeAt(1);h[2]=255&e.charCodeAt(2);h[3]=255&e.charCodeAt(3);writeInt16(h,4,a);const l=OpenTypeFileBuilder.getSearchParams(a,16);writeInt16(h,6,l.range);writeInt16(h,8,l.entry);writeInt16(h,10,l.rangeShift);c=12;for(r=0;r<a;r++){g=i[r];h[c]=255&g.charCodeAt(0);h[c+1]=255&g.charCodeAt(1);h[c+2]=255&g.charCodeAt(2);h[c+3]=255&g.charCodeAt(3);let e=0;for(s=C[r],n=C[r+1];s<n;s+=4){e=e+readUint32(h,s)>>>0}writeInt32(h,c+4,e);writeInt32(h,c+8,C[r]);writeInt32(h,c+12,t[g].length);c+=16}return h}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}const aa=[4],ra=[5],sa=[6],na=[7],oa=[8],ga=[12,35],Ia=[14],ca=[21],Ca=[22],ha=[30],la=[31];class Type1CharString{constructor(){this.width=0;this.lsb=0;this.flexing=!1;this.output=[];this.stack=[]}convert(e,t,i){const a=e.length;let r,s,n,o=!1;for(let g=0;g<a;g++){let a=e[g];if(a<32){12===a&&(a=(a<<8)+e[++g]);switch(a){case 1:case 3:case 9:case 3072:case 3073:case 3074:case 3105:this.stack=[];break;case 4:if(this.flexing){if(this.stack.length<1){o=!0;break}const e=this.stack.pop();this.stack.push(0,e);break}o=this.executeCommand(1,aa);break;case 5:o=this.executeCommand(2,ra);break;case 6:o=this.executeCommand(1,sa);break;case 7:o=this.executeCommand(1,na);break;case 8:o=this.executeCommand(6,oa);break;case 10:if(this.stack.length<1){o=!0;break}n=this.stack.pop();if(!t[n]){o=!0;break}o=this.convert(t[n],t,i);break;case 11:return o;case 13:if(this.stack.length<2){o=!0;break}r=this.stack.pop();s=this.stack.pop();this.lsb=s;this.width=r;this.stack.push(r,s);o=this.executeCommand(2,Ca);break;case 14:this.output.push(Ia[0]);break;case 21:if(this.flexing)break;o=this.executeCommand(2,ca);break;case 22:if(this.flexing){this.stack.push(0);break}o=this.executeCommand(1,Ca);break;case 30:o=this.executeCommand(4,ha);break;case 31:o=this.executeCommand(4,la);break;case 3078:if(i){const e=this.stack.at(-5);this.seac=this.stack.splice(-4,4);this.seac[0]+=this.lsb-e;o=this.executeCommand(0,Ia)}else o=this.executeCommand(4,Ia);break;case 3079:if(this.stack.length<4){o=!0;break}this.stack.pop();r=this.stack.pop();const e=this.stack.pop();s=this.stack.pop();this.lsb=s;this.width=r;this.stack.push(r,s,e);o=this.executeCommand(3,ca);break;case 3084:if(this.stack.length<2){o=!0;break}const g=this.stack.pop(),c=this.stack.pop();this.stack.push(c/g);break;case 3088:if(this.stack.length<2){o=!0;break}n=this.stack.pop();const C=this.stack.pop();if(0===n&&3===C){const e=this.stack.splice(-17,17);this.stack.push(e[2]+e[0],e[3]+e[1],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14]);o=this.executeCommand(13,ga,!0);this.flexing=!1;this.stack.push(e[15],e[16])}else 1===n&&0===C&&(this.flexing=!0);break;case 3089:break;default:warn('Unknown type 1 charstring command of "'+a+'"')}if(o)break}else{a<=246?a-=139:a=a<=250?256*(a-247)+e[++g]+108:a<=254?-256*(a-251)-e[++g]-108:(255&e[++g])<<24|(255&e[++g])<<16|(255&e[++g])<<8|(255&e[++g])<<0;this.stack.push(a)}}return o}executeCommand(e,t,i){const a=this.stack.length;if(e>a)return!0;const r=a-e;for(let e=r;e<a;e++){let t=this.stack[e];if(Number.isInteger(t))this.output.push(28,t>>8&255,255&t);else{t=65536*t|0;this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t)}}this.output.push(...t);i?this.stack.splice(r,e):this.stack.length=0;return!1}}function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function decrypt(e,t,i){if(i>=e.length)return new Uint8Array(0);let a,r,s=0|t;for(a=0;a<i;a++)s=52845*(e[a]+s)+22719&65535;const n=e.length-i,o=new Uint8Array(n);for(a=i,r=0;r<n;a++,r++){const t=e[a];o[r]=t^s>>8;s=52845*(t+s)+22719&65535}return o}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}class Type1Parser{constructor(e,t,i){if(t){const t=e.getBytes(),i=!((isHexDigit(t[0])||isWhiteSpace(t[0]))&&isHexDigit(t[1])&&isHexDigit(t[2])&&isHexDigit(t[3])&&isHexDigit(t[4])&&isHexDigit(t[5])&&isHexDigit(t[6])&&isHexDigit(t[7]));e=new Stream(i?decrypt(t,55665,4):function decryptAscii(e,t,i){let a=0|t;const r=e.length,s=new Uint8Array(r>>>1);let n,o;for(n=0,o=0;n<r;n++){const t=e[n];if(!isHexDigit(t))continue;n++;let i;for(;n<r&&!isHexDigit(i=e[n]);)n++;if(n<r){const e=parseInt(String.fromCharCode(t,i),16);s[o++]=e^a>>8;a=52845*(e+a)+22719&65535}}return s.slice(i,o)}(t,55665,4))}this.seacAnalysisEnabled=!!i;this.stream=e;this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){this.stream.skip(-2);return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!isWhiteSpace(t))break;t=this.nextChar()}if(isSpecial(t)){this.nextChar();return String.fromCharCode(t)}let i="";do{i+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!isWhiteSpace(t)&&!isSpecial(t));return i}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,i=[],a=[],r=Object.create(null);r.lenIV=4;const s={subrs:[],charstrings:[],properties:{privateData:r}};let n,o,g,c;for(;null!==(n=this.getToken());)if("/"===n){n=this.getToken();switch(n){case"CharStrings":this.getToken();this.getToken();this.getToken();this.getToken();for(;;){n=this.getToken();if(null===n||"end"===n)break;if("/"!==n)continue;const e=this.getToken();o=this.readInt();this.getToken();g=o>0?t.getBytes(o):new Uint8Array(0);c=s.properties.privateData.lenIV;const i=this.readCharStrings(g,c);this.nextChar();n=this.getToken();"noaccess"===n?this.getToken():"/"===n&&this.prevChar();a.push({glyph:e,encoded:i})}break;case"Subrs":this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();o=this.readInt();this.getToken();g=o>0?t.getBytes(o):new Uint8Array(0);c=s.properties.privateData.lenIV;const a=this.readCharStrings(g,c);this.nextChar();n=this.getToken();"noaccess"===n&&this.getToken();i[e]=a}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length,0;break;case"StemSnapH":case"StemSnapV":s.properties.privateData[n]=this.readNumberArray();break;case"StdHW":case"StdVW":s.properties.privateData[n]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":s.properties.privateData[n]=this.readNumber();break;case"ExpansionFactor":s.properties.privateData[n]=this.readNumber()||.06;break;case"ForceBold":s.properties.privateData[n]=this.readBoolean()}}for(const{encoded:t,glyph:r}of a){const a=new Type1CharString,n=a.convert(t,i,this.seacAnalysisEnabled);let o=a.output;n&&(o=[14]);const g={glyphName:r,charstring:o,width:a.width,lsb:a.lsb,seac:a.seac};".notdef"===r?s.charstrings.unshift(g):s.charstrings.push(g);if(e.builtInEncoding){const t=e.builtInEncoding.indexOf(r);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=a.width)}}return s}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const i=this.readNumberArray();e.fontMatrix=i;break;case"Encoding":const a=this.getToken();let r;if(/^\d+$/.test(a)){r=[];const e=0|parseInt(a,10);this.getToken();for(let i=0;i<e;i++){t=this.getToken();for(;"dup"!==t&&"def"!==t;){t=this.getToken();if(null===t)return}if("def"===t)break;const e=this.readInt();this.getToken();const i=this.getToken();r[e]=i;this.getToken()}}else r=getEncoding(a);e.builtInEncoding=r;break;case"FontBBox":const s=this.readNumberArray();e.ascent=Math.max(s[3],s[1]);e.descent=Math.min(s[1],s[3]);e.ascentScaled=!0}}}}function findBlock(e,t,i){const a=e.length,r=t.length,s=a-r;let n=i,o=!1;for(;n<s;){let i=0;for(;i<r&&e[n+i]===t[i];)i++;if(i>=r){n+=i;for(;n<a&&isWhiteSpace(e[n]);)n++;o=!0;break}n++}return{found:o,length:n}}class Type1Font{constructor(e,t,i){let a=i.length1,r=i.length2,s=t.peekBytes(6);const n=128===s[0]&&1===s[1];if(n){t.skip(6);a=s[5]<<24|s[4]<<16|s[3]<<8|s[2]}const o=function getHeaderBlock(e,t){const i=[101,101,120,101,99],a=e.pos;let r,s,n,o;try{r=e.getBytes(t);s=r.length}catch{}if(s===t){n=findBlock(r,i,t-2*i.length);if(n.found&&n.length===t)return{stream:new Stream(r),length:t}}warn('Invalid "Length1" property in Type1 font -- trying to recover.');e.pos=a;for(;;){n=findBlock(e.peekBytes(2048),i,0);if(0===n.length)break;e.pos+=n.length;if(n.found){o=e.pos-a;break}}e.pos=a;if(o)return{stream:new Stream(e.getBytes(o)),length:o};warn('Unable to recover "Length1" property in Type1 font -- using as is.');return{stream:new Stream(e.getBytes(t)),length:t}}(t,a);new Type1Parser(o.stream,!1,Ti).extractFontHeader(i);if(n){s=t.getBytes(6);r=s[5]<<24|s[4]<<16|s[3]<<8|s[2]}const g=function getEexecBlock(e,t){const i=e.getBytes();if(0===i.length)throw new FormatError("getEexecBlock - no font program found.");return{stream:new Stream(i),length:i.length}}(t),c=new Type1Parser(g.stream,!0,Ti).extractFontProgram(i);for(const e in c.properties)i[e]=c.properties[e];const C=c.charstrings,h=this.getType2Charstrings(C),l=this.getType2Subrs(c.subrs);this.charstrings=C;this.data=this.wrap(e,h,this.charstrings,l,i);this.seacs=this.getSeacs(c.charstrings)}get numGlyphs(){return this.charstrings.length+1}getCharset(){const e=[".notdef"];for(const{glyphName:t}of this.charstrings)e.push(t);return e}getGlyphMapping(e){const t=this.charstrings;if(e.composite){const i=Object.create(null);for(let a=0,r=t.length;a<r;a++){i[e.cMap.charCodeOf(a)]=a+1}return i}const i=[".notdef"];let a,r;for(r=0;r<t.length;r++)i.push(t[r].glyphName);const s=e.builtInEncoding;if(s){a=Object.create(null);for(const e in s){r=i.indexOf(s[e]);r>=0&&(a[e]=r)}}return type1FontGlyphMapping(e,a,i)}hasGlyphId(e){if(e<0||e>=this.numGlyphs)return!1;if(0===e)return!0;return this.charstrings[e-1].charstring.length>0}getSeacs(e){const t=[];for(let i=0,a=e.length;i<a;i++){const a=e[i];a.seac&&(t[i+1]=a.seac)}return t}getType2Charstrings(e){const t=[];for(const i of e)t.push(i.charstring);return t}getType2Subrs(e){let t=0;const i=e.length;t=i<1133?107:i<33769?1131:32768;const a=[];let r;for(r=0;r<t;r++)a.push([11]);for(r=0;r<i;r++)a.push(e[r]);return a}wrap(e,t,i,a,r){const s=new CFF;s.header=new CFFHeader(1,0,4,4);s.names=[e];const n=new CFFTopDict;n.setByName("version",391);n.setByName("Notice",392);n.setByName("FullName",393);n.setByName("FamilyName",394);n.setByName("Weight",395);n.setByName("Encoding",null);n.setByName("FontMatrix",r.fontMatrix);n.setByName("FontBBox",r.bbox);n.setByName("charset",null);n.setByName("CharStrings",null);n.setByName("Private",null);s.topDict=n;const o=new CFFStrings;o.add("Version 0.11");o.add("See original notice");o.add(e);o.add(e);o.add("Medium");s.strings=o;s.globalSubrIndex=new CFFIndex;const g=t.length,c=[".notdef"];let C,h;for(C=0;C<g;C++){const e=i[C].glyphName;-1===Di.indexOf(e)&&o.add(e);c.push(e)}s.charset=new CFFCharset(!1,0,c);const l=new CFFIndex;l.add([139,14]);for(C=0;C<g;C++)l.add(t[C]);s.charStrings=l;const Q=new CFFPrivateDict;Q.setByName("Subrs",null);const E=["BlueValues","OtherBlues","FamilyBlues","FamilyOtherBlues","StemSnapH","StemSnapV","BlueShift","BlueFuzz","BlueScale","LanguageGroup","ExpansionFactor","ForceBold","StdHW","StdVW"];for(C=0,h=E.length;C<h;C++){const e=E[C];if(!(e in r.privateData))continue;const t=r.privateData[e];if(Array.isArray(t))for(let e=t.length-1;e>0;e--)t[e]-=t[e-1];Q.setByName(e,t)}s.topDict.privateDict=Q;const u=new CFFIndex;for(C=0,h=a.length;C<h;C++)u.add(a[C]);Q.subrsIndex=u;return new CFFCompiler(s).compile()}}const Ba=[[57344,63743],[1048576,1114109]],Qa=1e3,Ea=["ascent","bbox","black","bold","charProcOperatorList","composite","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","fallbackName","fontMatrix","isInvalidPDFjsFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","subtype","systemFontInfo","type","vertical"],ua=["cMap","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","toFontChar","toUnicode","vmetrics","widths"];function adjustWidths(e){if(!e.fontMatrix)return;if(e.fontMatrix[0]===r[0])return;const t=.001/e.fontMatrix[0],i=e.widths;for(const e in i)i[e]*=t;e.defaultWidth*=t}function amendFallbackToUnicode(e){if(!e.fallbackToUnicode)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;const t=[];for(const i in e.fallbackToUnicode)e.toUnicode.has(i)||(t[i]=e.fallbackToUnicode[i]);t.length>0&&e.toUnicode.amend(t)}class fonts_Glyph{constructor(e,t,i,a,r,s,n,o,g){this.originalCharCode=e;this.fontChar=t;this.unicode=i;this.accent=a;this.width=r;this.vmetric=s;this.operatorListId=n;this.isSpace=o;this.isInFont=g}get category(){return shadow(this,"category",function getCharUnicodeCategory(e){const t=vi.get(e);if(t)return t;const i=e.match(Yi),a={isWhitespace:!!i?.[1],isZeroWidthDiacritic:!!i?.[2],isInvisibleFormatMark:!!i?.[3]};vi.set(e,a);return a}(this.unicode),!0)}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,i){e[t+1]=i;e[t]=i>>>8}function signedInt16(e,t){const i=(e<<8)+t;return 32768&i?i-65536:i}function string16(e){return String.fromCharCode(e>>8&255,255&e)}function safeString16(e){e>32767?e=32767:e<-32768&&(e=-32768);return String.fromCharCode(e>>8&255,255&e)}function isTrueTypeCollectionFile(e){return"ttcf"===bytesToString(e.peekBytes(4))}function getFontFileType(e,{type:t,subtype:i,composite:a}){let r,s;if(function isTrueTypeFile(e){const t=e.peekBytes(4);return 65536===readUint32(t,0)||"true"===bytesToString(t)}(e)||isTrueTypeCollectionFile(e))r=a?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){return"OTTO"===bytesToString(e.peekBytes(4))}(e))r=a?"CIDFontType2":"OpenType";else if(function isType1File(e){const t=e.peekBytes(2);return 37===t[0]&&33===t[1]||128===t[0]&&1===t[1]}(e))r=a?"CIDFontType0":"MMType1"===t?"MMType1":"Type1";else if(function isCFFFile(e){const t=e.peekBytes(4);return t[0]>=1&&t[3]>=1&&t[3]<=4}(e))if(a){r="CIDFontType0";s="CIDFontType0C"}else{r="MMType1"===t?"MMType1":"Type1";s="Type1C"}else{warn("getFontFileType: Unable to detect correct font file Type/Subtype.");r=t;s=i}return[r,s]}function applyStandardFontGlyphMap(e,t){for(const i in t)e[+i]=t[i]}function buildToFontChar(e,t,i){const a=[];let r;for(let i=0,s=e.length;i<s;i++){r=getUnicodeForGlyph(e[i],t);-1!==r&&(a[i]=r)}for(const e in i){r=getUnicodeForGlyph(i[e],t);-1!==r&&(a[+e]=r)}return a}function isMacNameRecord(e){return 1===e.platform&&0===e.encoding&&0===e.language}function isWinNameRecord(e){return 3===e.platform&&1===e.encoding&&1033===e.language}function convertCidString(e,t,i=!1){switch(t.length){case 1:return t.charCodeAt(0);case 2:return t.charCodeAt(0)<<8|t.charCodeAt(1)}const a=`Unsupported CID string (charCode ${e}): "${t}".`;if(i)throw new FormatError(a);warn(a);return t}function adjustMapping(e,t,i,a){const r=Object.create(null),s=new Map,n=[],o=new Set;let g=0;let c=Ba[g][0],C=Ba[g][1];for(const l in e){let Q=e[l];if(!t(Q))continue;if(c>C){g++;if(g>=Ba.length){warn("Ran out of space in font private use area.");break}c=Ba[g][0];C=Ba[g][1]}const E=c++;0===Q&&(Q=i);let u=a.get(l);"string"==typeof u&&(u=u.codePointAt(0));if(u&&!(h=u,Ba[0][0]<=h&&h<=Ba[0][1]||Ba[1][0]<=h&&h<=Ba[1][1])&&!o.has(Q)){s.set(u,Q);o.add(Q)}r[E]=Q;n[l]=E}var h;return{toFontChar:n,charCodeToGlyphId:r,toUnicodeExtraMap:s,nextAvailableFontCharCode:c}}function createCmapTable(e,t,i){const a=function getRanges(e,t,i){const a=[];for(const t in e)e[t]>=i||a.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,r]of t)r>=i||a.push({fontCharCode:e,glyphId:r});0===a.length&&a.push({fontCharCode:0,glyphId:0});a.sort((function fontGetRangesSort(e,t){return e.fontCharCode-t.fontCharCode}));const r=[],s=a.length;for(let e=0;e<s;){const t=a[e].fontCharCode,i=[a[e].glyphId];++e;let n=t;for(;e<s&&n+1===a[e].fontCharCode;){i.push(a[e].glyphId);++n;++e;if(65535===n)break}r.push([t,n,i])}return r}(e,t,i),r=a.at(-1)[1]>65535?2:1;let s,n,o,g,c="\0\0"+string16(r)+"\0\0"+string32(4+8*r);for(s=a.length-1;s>=0&&!(a[s][0]<=65535);--s);const C=s+1;a[s][0]<65535&&65535===a[s][1]&&(a[s][1]=65534);const h=a[s][1]<65535?1:0,l=C+h,Q=OpenTypeFileBuilder.getSearchParams(l,2);let E,u,d,f,p="",m="",y="",w="",b="",D=0;for(s=0,n=C;s<n;s++){E=a[s];u=E[0];d=E[1];p+=string16(u);m+=string16(d);f=E[2];let e=!0;for(o=1,g=f.length;o<g;++o)if(f[o]!==f[o-1]+1){e=!1;break}if(e){y+=string16(f[0]-u&65535);w+=string16(0)}else{const e=2*(l-s)+2*D;D+=d-u+1;y+=string16(0);w+=string16(e);for(o=0,g=f.length;o<g;++o)b+=string16(f[o])}}if(h>0){m+="ÿÿ";p+="ÿÿ";y+="\0";w+="\0\0"}const S="\0\0"+string16(2*l)+string16(Q.range)+string16(Q.entry)+string16(Q.rangeShift)+m+"\0\0"+p+y+w+b;let k="",R="";if(r>1){c+="\0\0\n"+string32(4+8*r+4+S.length);k="";for(s=0,n=a.length;s<n;s++){E=a[s];u=E[0];f=E[2];let e=f[0];for(o=1,g=f.length;o<g;++o)if(f[o]!==f[o-1]+1){d=E[0]+o-1;k+=string32(u)+string32(d)+string32(e);u=d+1;e=f[o]}k+=string32(u)+string32(E[1])+string32(e)}R="\0\f\0\0"+string32(k.length+16)+"\0\0\0\0"+string32(k.length/12)}return c+"\0"+string16(S.length+4)+S+R+k}function createOS2Table(e,t,i){i||={unitsPerEm:0,yMax:0,yMin:0,ascent:0,descent:0};let a=0,r=0,s=0,n=0,o=null,g=0,c=-1;if(t){for(let e in t){e|=0;(o>e||!o)&&(o=e);g<e&&(g=e);c=getUnicodeRangeFor(e,c);if(c<32)a|=1<<c;else if(c<64)r|=1<<c-32;else if(c<96)s|=1<<c-64;else{if(!(c<123))throw new FormatError("Unicode ranges Bits > 123 are reserved for internal usage");n|=1<<c-96}}g>65535&&(g=65535)}else{o=0;g=255}const C=e.bbox||[0,0,0,0],h=i.unitsPerEm||(e.fontMatrix?1/Math.max(...e.fontMatrix.slice(0,4).map(Math.abs)):1e3),l=e.ascentScaled?1:h/Qa,Q=i.ascent||Math.round(l*(e.ascent||C[3]));let E=i.descent||Math.round(l*(e.descent||C[1]));E>0&&e.descent>0&&C[1]<0&&(E=-E);const u=i.yMax||Q,d=-i.yMin||-E;return"\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0"+String.fromCharCode(e.fixedPitch?9:0)+"\0\0\0\0\0\0"+string32(a)+string32(r)+string32(s)+string32(n)+"*21*"+string16(e.italicAngle?1:0)+string16(o||e.firstChar)+string16(g||e.lastChar)+string16(Q)+string16(E)+"\0d"+string16(u)+string16(d)+"\0\0\0\0\0\0\0\0"+string16(e.xHeight)+string16(e.capHeight)+string16(0)+string16(o||e.firstChar)+"\0"}function createPostTable(e){return"\0\0\0"+string32(Math.floor(65536*e.italicAngle))+"\0\0\0\0"+string32(e.fixedPitch?1:0)+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}function createPostscriptName(e){return e.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function createNameTable(e,t){t||(t=[[],[]]);const i=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||createPostscriptName(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],a=[];let r,s,n,o,g;for(r=0,s=i.length;r<s;r++){g=t[1][r]||i[r];const e=[];for(n=0,o=g.length;n<o;n++)e.push(string16(g.charCodeAt(n)));a.push(e.join(""))}const c=[i,a],C=["\0","\0"],h=["\0\0","\0"],l=["\0\0","\t"],Q=i.length*C.length;let E="\0\0"+string16(Q)+string16(12*Q+6),u=0;for(r=0,s=C.length;r<s;r++){const e=c[r];for(n=0,o=e.length;n<o;n++){g=e[n];E+=C[r]+h[r]+l[r]+string16(n)+string16(g.length)+string16(u);u+=g.length}}E+=i.join("")+a.join("");return E}class Font{constructor(e,t,i){this.name=e;this.psName=null;this.mimetype=null;this.disableFontFace=!1;this.loadedName=i.loadedName;this.isType3Font=i.isType3Font;this.missingFile=!1;this.cssFontInfo=i.cssFontInfo;this._charsCache=Object.create(null);this._glyphCache=Object.create(null);let a=!!(i.flags&qi);if(!a&&!i.isSimulatedFlags){const t=e.replaceAll(/[,_]/g,"-").split("-",1)[0],i=Vi();for(const e of t.split("+"))if(i[e]){a=!0;break}}this.isSerifFont=a;this.isSymbolicFont=!!(i.flags&Oi);this.isMonospace=!!(i.flags&Ki);let{type:r,subtype:s}=i;this.type=r;this.subtype=s;this.systemFontInfo=i.systemFontInfo;const n=e.match(/^InvalidPDFjsFont_(.*)_\d+$/);this.isInvalidPDFjsFont=!!n;this.isInvalidPDFjsFont?this.fallbackName=n[1]:this.isMonospace?this.fallbackName="monospace":this.isSerifFont?this.fallbackName="serif":this.fallbackName="sans-serif";if(this.systemFontInfo?.guessFallback){this.systemFontInfo.guessFallback=!1;this.systemFontInfo.css+=`,${this.fallbackName}`}this.differences=i.differences;this.widths=i.widths;this.defaultWidth=i.defaultWidth;this.composite=i.composite;this.cMap=i.cMap;this.capHeight=i.capHeight/Qa;this.ascent=i.ascent/Qa;this.descent=i.descent/Qa;this.lineHeight=this.ascent-this.descent;this.fontMatrix=i.fontMatrix;this.bbox=i.bbox;this.defaultEncoding=i.defaultEncoding;this.toUnicode=i.toUnicode;this.toFontChar=[];if("Type3"===i.type){for(let e=0;e<256;e++)this.toFontChar[e]=this.differences[e]||i.defaultEncoding[e];return}this.cidEncoding=i.cidEncoding||"";this.vertical=!!i.vertical;if(this.vertical){this.vmetrics=i.vmetrics;this.defaultVMetrics=i.defaultVMetrics}if(!t||t.isEmpty){t&&warn('Font file is empty in "'+e+'" ('+this.loadedName+")");this.fallbackToSystemFont(i);return}[r,s]=getFontFileType(t,i);r===this.type&&s===this.subtype||info(`Inconsistent font file Type/SubType, expected: ${this.type}/${this.subtype} but found: ${r}/${s}.`);let o;try{switch(r){case"MMType1":info("MMType1 font ("+e+"), falling back to Type1.");case"Type1":case"CIDFontType0":this.mimetype="font/opentype";const a="Type1C"===s||"CIDFontType0C"===s?new CFFFont(t,i):new Type1Font(e,t,i);adjustWidths(i);o=this.convert(e,a,i);break;case"OpenType":case"TrueType":case"CIDFontType2":this.mimetype="font/opentype";o=this.checkAndRepair(e,t,i);if(this.isOpenType){adjustWidths(i);r="OpenType"}break;default:throw new FormatError(`Font ${r} is not supported`)}}catch(e){warn(e);this.fallbackToSystemFont(i);return}amendFallbackToUnicode(i);this.data=o;this.type=r;this.subtype=s;this.fontMatrix=i.fontMatrix;this.widths=i.widths;this.defaultWidth=i.defaultWidth;this.toUnicode=i.toUnicode;this.seacMap=i.seacMap}get renderer(){return shadow(this,"renderer",FontRendererFactory.create(this,Ti))}exportData(e=!1){const t=e?[...Ea,...ua]:Ea,i=Object.create(null);let a,r;for(a of t){r=this[a];void 0!==r&&(i[a]=r)}return i}fallbackToSystemFont(e){this.missingFile=!0;const{name:t,type:i}=this;let a=normalizeFontName(t);const r=ji(),s=Zi(),n=!!r[a],o=!(!s[a]||!r[s[a]]);a=r[a]||s[a]||a;const g=ia()[a];if(g){isNaN(this.ascent)&&(this.ascent=g.ascent/Qa);isNaN(this.descent)&&(this.descent=g.descent/Qa);isNaN(this.capHeight)&&(this.capHeight=g.capHeight/Qa)}this.bold=/bold/gi.test(a);this.italic=/oblique|italic/gi.test(a);this.black=/Black/g.test(t);const c=/Narrow/g.test(t);this.remeasure=(!n||c)&&Object.keys(this.widths).length>0;if((n||o)&&"CIDFontType2"===i&&this.cidEncoding.startsWith("Identity-")){const i=e.cidToGidMap,a=[];applyStandardFontGlyphMap(a,zi());/Arial-?Black/i.test(t)?applyStandardFontGlyphMap(a,$i()):/Calibri/i.test(t)&&applyStandardFontGlyphMap(a,Aa());if(i){for(const e in a){const t=a[e];void 0!==i[t]&&(a[+e]=i[t])}i.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){const r=a[e];void 0===i[r]&&(a[+e]=t)}))}this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){a[+e]=t}));this.toFontChar=a;this.toUnicode=new ToUnicodeMap(a)}else if(/Symbol/i.test(a))this.toFontChar=buildToFontChar(wi,xi(),this.differences);else if(/Dingbats/i.test(a))this.toFontChar=buildToFontChar(bi,Mi(),this.differences);else if(n){const e=buildToFontChar(this.defaultEncoding,xi(),this.differences);"CIDFontType2"!==i||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach((function(t,i){e[+t]=i}));this.toFontChar=e}else{const e=xi(),i=[];this.toUnicode.forEach(((t,a)=>{if(!this.composite){const i=getUnicodeForGlyph(this.differences[t]||this.defaultEncoding[t],e);-1!==i&&(a=i)}i[+t]=a}));this.composite&&this.toUnicode instanceof IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&applyStandardFontGlyphMap(i,zi());this.toFontChar=i}amendFallbackToUnicode(e);this.loadedName=a.split("-",1)[0]}checkAndRepair(e,t,i){const a=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const i=Object.create(null);i["OS/2"]=null;i.cmap=null;i.head=null;i.hhea=null;i.hmtx=null;i.maxp=null;i.name=null;i.post=null;for(let r=0;r<t;r++){const t=readTableEntry(e);a.includes(t.tag)&&(0!==t.length&&(i[t.tag]=t))}return i}function readTableEntry(e){const t=e.getString(4),i=e.getInt32()>>>0,a=e.getInt32()>>>0,r=e.getInt32()>>>0,s=e.pos;e.pos=e.start||0;e.skip(a);const n=e.getBytes(r);e.pos=s;if("head"===t){n[8]=n[9]=n[10]=n[11]=0;n[17]|=32}return{tag:t,checksum:i,length:r,offset:a,data:n}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,i,a,r,s){const n={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||i>e.length||i-t<=12)return n;const o=e.subarray(t,i),g=signedInt16(o[2],o[3]),c=signedInt16(o[4],o[5]),C=signedInt16(o[6],o[7]),h=signedInt16(o[8],o[9]);if(g>C){writeSignedInt16(o,2,C);writeSignedInt16(o,6,g)}if(c>h){writeSignedInt16(o,4,h);writeSignedInt16(o,8,c)}const l=signedInt16(o[0],o[1]);if(l<0){if(l<-1)return n;a.set(o,r);n.length=o.length;return n}let Q,E=10,u=0;for(Q=0;Q<l;Q++){u=(o[E]<<8|o[E+1])+1;E+=2}const d=E,f=o[E]<<8|o[E+1];n.sizeOfInstructions=f;E+=2+f;const p=E;let m=0;for(Q=0;Q<u;Q++){const e=o[E++];192&e&&(o[E-1]=63&e);let t=2;2&e?t=1:16&e&&(t=0);let i=2;4&e?i=1:32&e&&(i=0);const a=t+i;m+=a;if(8&e){const e=o[E++];0===e&&(o[E-1]^=8);Q+=e;m+=e*a}}if(0===m)return n;let y=E+m;if(y>o.length)return n;if(!s&&f>0){a.set(o.subarray(0,d),r);a.set([0,0],r+d);a.set(o.subarray(p,y),r+d+2);y-=f;o.length-y>3&&(y=y+3&-4);n.length=y;return n}if(o.length-y>3){y=y+3&-4;a.set(o.subarray(0,y),r);n.length=y;return n}a.set(o,r);n.length=o.length;return n}function readNameTable(e){const i=(t.start||0)+e.offset;t.pos=i;const a=[[],[]],r=[],s=e.length,n=i+s;if(0!==t.getUint16()||s<6)return[a,r];const o=t.getUint16(),g=t.getUint16();let c,C;for(c=0;c<o&&t.pos+12<=n;c++){const e={platform:t.getUint16(),encoding:t.getUint16(),language:t.getUint16(),name:t.getUint16(),length:t.getUint16(),offset:t.getUint16()};(isMacNameRecord(e)||isWinNameRecord(e))&&r.push(e)}for(c=0,C=r.length;c<C;c++){const e=r[c];if(e.length<=0)continue;const s=i+g+e.offset;if(s+e.length>n)continue;t.pos=s;const o=e.name;if(e.encoding){let i="";for(let a=0,r=e.length;a<r;a+=2)i+=String.fromCharCode(t.getUint16());a[1][o]=i}else a[0][o]=t.getString(e.length)}return[a,r]}const r=[0,0,0,0,0,0,0,0,-2,-2,-2,-2,0,0,-2,-5,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,0,-1,-1,-1,-1,1,-1,-999,0,1,0,-1,-2,0,-1,-2,-1,-1,0,-1,-1,0,0,-999,-999,-1,-1,-1,-1,-2,-999,-2,-2,-999,0,-2,-2,0,0,-2,0,-2,0,0,0,-2,-1,-1,1,1,0,0,-1,-1,-1,-1,-1,-1,-1,0,0,-1,0,-1,-1,0,-999,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,-2,-999,-999,-999,-999,-999,-1,-1,-2,-2,0,0,0,0,-1,-1,-999,-2,-2,0,0,-1,-2,-2,0,0,0,-1,-1,-1,-2];function sanitizeTTProgram(e,t){let i,a,s,n,o,g=e.data,c=0,C=0,h=0;const l=[],Q=[],E=[];let u=t.tooComplexToFollowFunctions,d=!1,f=0,p=0;for(let e=g.length;c<e;){const e=g[c++];if(64===e){a=g[c++];if(d||p)c+=a;else for(i=0;i<a;i++)l.push(g[c++])}else if(65===e){a=g[c++];if(d||p)c+=2*a;else for(i=0;i<a;i++){s=g[c++];l.push(s<<8|g[c++])}}else if(176==(248&e)){a=e-176+1;if(d||p)c+=a;else for(i=0;i<a;i++)l.push(g[c++])}else if(184==(248&e)){a=e-184+1;if(d||p)c+=2*a;else for(i=0;i<a;i++){s=g[c++];l.push(s<<8|g[c++])}}else if(43!==e||u)if(44!==e||u){if(45===e)if(d){d=!1;C=c}else{o=Q.pop();if(!o){warn("TT: ENDF bad stack");t.hintsValid=!1;return}n=E.pop();g=o.data;c=o.i;t.functionsStackDeltas[n]=l.length-o.stackTop}else if(137===e){if(d||p){warn("TT: nested IDEFs not allowed");u=!0}d=!0;h=c}else if(88===e)++f;else if(27===e)p=f;else if(89===e){p===f&&(p=0);--f}else if(28===e&&!d&&!p){const e=l.at(-1);e>0&&(c+=e-1)}}else{if(d||p){warn("TT: nested FDEFs not allowed");u=!0}d=!0;h=c;n=l.pop();t.functionsDefined[n]={data:g,i:c}}else if(!d&&!p){n=l.at(-1);if(isNaN(n))info("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[n]=!0;if(n in t.functionsStackDeltas){const e=l.length+t.functionsStackDeltas[n];if(e<0){warn("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}l.length=e}else if(n in t.functionsDefined&&!E.includes(n)){Q.push({data:g,i:c,stackTop:l.length-1});E.push(n);o=t.functionsDefined[n];if(!o){warn("TT: CALL non-existent function");t.hintsValid=!1;return}g=o.data;c=o.i}}}if(!d&&!p){let t=0;e<=142?t=r[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){a=l.pop();isNaN(a)||(t=2*-a)}for(;t<0&&l.length>0;){l.pop();t++}for(;t>0;){l.push(NaN);t--}}}t.tooComplexToFollowFunctions=u;const m=[g];c>g.length&&m.push(new Uint8Array(c-g.length));if(h>C){warn("TT: complementing a missing function tail");m.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let i,a,r=0;for(i=0,a=t.length;i<a;i++)r+=t[i].length;r=r+3&-4;const s=new Uint8Array(r);let n=0;for(i=0,a=t.length;i<a;i++){s.set(t[i],n);n+=t[i].length}e.data=s;e.length=r}}(e,m)}let s,n,o,g;if(isTrueTypeCollectionFile(t=new Stream(new Uint8Array(t.getBytes())))){const e=function readTrueTypeCollectionData(e,t){const{numFonts:i,offsetTable:a}=function readTrueTypeCollectionHeader(e){const t=e.getString(4);assert("ttcf"===t,"Must be a TrueType Collection font.");const i=e.getUint16(),a=e.getUint16(),r=e.getInt32()>>>0,s=[];for(let t=0;t<r;t++)s.push(e.getInt32()>>>0);const n={ttcTag:t,majorVersion:i,minorVersion:a,numFonts:r,offsetTable:s};switch(i){case 1:return n;case 2:n.dsigTag=e.getInt32()>>>0;n.dsigLength=e.getInt32()>>>0;n.dsigOffset=e.getInt32()>>>0;return n}throw new FormatError(`Invalid TrueType Collection majorVersion: ${i}.`)}(e),r=t.split("+");let s;for(let n=0;n<i;n++){e.pos=(e.start||0)+a[n];const i=readOpenTypeHeader(e),o=readTables(e,i.numTables);if(!o.name)throw new FormatError('TrueType Collection font must contain a "name" table.');const[g]=readNameTable(o.name);for(let e=0,a=g.length;e<a;e++)for(let a=0,n=g[e].length;a<n;a++){const n=g[e][a]?.replaceAll(/\s/g,"");if(n){if(n===t)return{header:i,tables:o};if(!(r.length<2))for(const e of r)n===e&&(s={name:e,header:i,tables:o})}}}if(s){warn(`TrueType Collection does not contain "${t}" font, falling back to "${s.name}" font instead.`);return{header:s.header,tables:s.tables}}throw new FormatError(`TrueType Collection does not contain "${t}" font.`)}(t,this.name);s=e.header;n=e.tables}else{s=readOpenTypeHeader(t);n=readTables(t,s.numTables)}const c=!n["CFF "];if(c){if(!n.loca)throw new FormatError('Required "loca" table is not found');if(!n.glyf){warn('Required "glyf" table is not found -- trying to recover.');n.glyf={tag:"glyf",data:new Uint8Array(0)}}this.isOpenType=!1}else{const t=i.composite&&(i.cidToGidMap?.length>0||!(i.cMap instanceof IdentityCMap));if("OTTO"===s.version&&!t||!n.head||!n.hhea||!n.maxp||!n.post){g=new Stream(n["CFF "].data);o=new CFFFont(g,i);adjustWidths(i);return this.convert(e,o,i)}delete n.glyf;delete n.loca;delete n.fpgm;delete n.prep;delete n["cvt "];this.isOpenType=!0}if(!n.maxp)throw new FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+n.maxp.offset;let C=t.getInt32();const h=t.getUint16();if(65536!==C&&20480!==C){if(6===n.maxp.length)C=20480;else{if(!(n.maxp.length>=32))throw new FormatError('"maxp" table has a wrong version number');C=65536}!function writeUint32(e,t,i){e[t+3]=255&i;e[t+2]=i>>>8;e[t+1]=i>>>16;e[t]=i>>>24}(n.maxp.data,0,C)}if(i.scaleFactors?.length===h&&c){const{scaleFactors:e}=i,t=int16(n.head.data[50],n.head.data[51]),a=new GlyfTable({glyfTable:n.glyf.data,isGlyphLocationsLong:t,locaTable:n.loca.data,numGlyphs:h});a.scale(e);const{glyf:r,loca:s,isLocationLong:o}=a.write();n.glyf.data=r;n.loca.data=s;if(o!==!!t){n.head.data[50]=0;n.head.data[51]=o?1:0}const g=n.hmtx.data;for(let t=0;t<h;t++){const i=4*t,a=Math.round(e[t]*int16(g[i],g[i+1]));g[i]=a>>8&255;g[i+1]=255&a;writeSignedInt16(g,i+2,Math.round(e[t]*signedInt16(g[i+2],g[i+3])))}}let l=h+1,Q=!0;if(l>65535){Q=!1;l=h;warn("Not enough space in glyfs to duplicate first glyph.")}let E=0,u=0;if(C>=65536&&n.maxp.length>=32){t.pos+=8;if(t.getUint16()>2){n.maxp.data[14]=0;n.maxp.data[15]=2}t.pos+=4;E=t.getUint16();t.pos+=4;u=t.getUint16()}n.maxp.data[4]=l>>8;n.maxp.data[5]=255&l;const d=function sanitizeTTPrograms(e,t,i,a){const r={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,r);t&&sanitizeTTProgram(t,r);e&&function checkInvalidFunctions(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t){warn("TT: more functions defined than expected");e.hintsValid=!1}else for(let i=0,a=e.functionsUsed.length;i<a;i++){if(i>t){warn("TT: invalid function id: "+i);e.hintsValid=!1;return}if(e.functionsUsed[i]&&!e.functionsDefined[i]){warn("TT: undefined function: "+i);e.hintsValid=!1;return}}}(r,a);if(i&&1&i.length){const e=new Uint8Array(i.length+1);e.set(i.data);i.data=e}return r.hintsValid}(n.fpgm,n.prep,n["cvt "],E);if(!d){delete n.fpgm;delete n.prep;delete n["cvt "]}!function sanitizeMetrics(e,t,i,a,r,s){if(!t){i&&(i.data=null);return}e.pos=(e.start||0)+t.offset;e.pos+=4;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;const n=e.getUint16();e.pos+=8;e.pos+=2;let o=e.getUint16();if(0!==n){if(!(2&int16(a.data[44],a.data[45]))){t.data[22]=0;t.data[23]=0}}if(o>r){info(`The numOfMetrics (${o}) should not be greater than the numGlyphs (${r}).`);o=r;t.data[34]=(65280&o)>>8;t.data[35]=255&o}const g=r-o-(i.length-4*o>>1);if(g>0){const e=new Uint8Array(i.length+2*g);e.set(i.data);if(s){e[i.length]=i.data[2];e[i.length+1]=i.data[3]}i.data=e}}(t,n.hhea,n.hmtx,n.head,l,Q);if(!n.head)throw new FormatError('Required "head" table is not found');!function sanitizeHead(e,t,i){const a=e.data,r=function int32(e,t,i,a){return(e<<24)+(t<<16)+(i<<8)+a}(a[0],a[1],a[2],a[3]);if(r>>16!=1){info("Attempting to fix invalid version in head table: "+r);a[0]=0;a[1]=1;a[2]=0;a[3]=0}const s=int16(a[50],a[51]);if(s<0||s>1){info("Attempting to fix invalid indexToLocFormat in head table: "+s);const e=t+1;if(i===e<<1){a[50]=0;a[51]=0}else{if(i!==e<<2)throw new FormatError("Could not fix indexToLocFormat: "+s);a[50]=0;a[51]=1}}}(n.head,h,c?n.loca.length:0);let f=Object.create(null);if(c){const e=int16(n.head.data[50],n.head.data[51]),t=function sanitizeGlyphLocations(e,t,i,a,r,s,n){let o,g,c;if(a){o=4;g=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};c=function fontItemEncodeLong(e,t,i){e[t]=i>>>24&255;e[t+1]=i>>16&255;e[t+2]=i>>8&255;e[t+3]=255&i}}else{o=2;g=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};c=function fontItemEncode(e,t,i){e[t]=i>>9&255;e[t+1]=i>>1&255}}const C=s?i+1:i,h=o*(1+C),l=new Uint8Array(h);l.set(e.data.subarray(0,h));e.data=l;const Q=t.data,E=Q.length,u=new Uint8Array(E);let d,f;const p=[];for(d=0,f=0;d<i+1;d++,f+=o){let e=g(l,f);e>E&&(e=E);p.push({index:d,offset:e,endOffset:0})}p.sort(((e,t)=>e.offset-t.offset));for(d=0;d<i;d++)p[d].endOffset=p[d+1].offset;p.sort(((e,t)=>e.index-t.index));for(d=0;d<i;d++){const{offset:e,endOffset:t}=p[d];if(0!==e||0!==t)break;const i=p[d+1].offset;if(0!==i){p[d].endOffset=i;break}}const m=p.at(-2);0!==m.offset&&0===m.endOffset&&(m.endOffset=E);const y=Object.create(null);let w=0;c(l,0,w);for(d=0,f=o;d<i;d++,f+=o){const e=sanitizeGlyph(Q,p[d].offset,p[d].endOffset,u,w,r),t=e.length;0===t&&(y[d]=!0);e.sizeOfInstructions>n&&(n=e.sizeOfInstructions);w+=t;c(l,f,w)}if(0===w){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(d=0,f=o;d<C;d++,f+=o)c(l,f,e.length);t.data=e}else if(s){const i=g(l,o);if(u.length>i+w)t.data=u.subarray(0,i+w);else{t.data=new Uint8Array(i+w);t.data.set(u.subarray(0,w))}t.data.set(u.subarray(0,i),w);c(e.data,l.length-o,w+i)}else t.data=u.subarray(0,w);return{missingGlyphs:y,maxSizeOfInstructions:n}}(n.loca,n.glyf,h,e,d,Q,u);f=t.missingGlyphs;if(C>=65536&&n.maxp.length>=32){n.maxp.data[26]=t.maxSizeOfInstructions>>8;n.maxp.data[27]=255&t.maxSizeOfInstructions}}if(!n.hhea)throw new FormatError('Required "hhea" table is not found');if(0===n.hhea.data[10]&&0===n.hhea.data[11]){n.hhea.data[10]=255;n.hhea.data[11]=255}const p={unitsPerEm:int16(n.head.data[18],n.head.data[19]),yMax:signedInt16(n.head.data[42],n.head.data[43]),yMin:signedInt16(n.head.data[38],n.head.data[39]),ascent:signedInt16(n.hhea.data[4],n.hhea.data[5]),descent:signedInt16(n.hhea.data[6],n.hhea.data[7]),lineGap:signedInt16(n.hhea.data[8],n.hhea.data[9])};this.ascent=p.ascent/p.unitsPerEm;this.descent=p.descent/p.unitsPerEm;this.lineGap=p.lineGap/p.unitsPerEm;if(this.cssFontInfo?.lineHeight){this.lineHeight=this.cssFontInfo.metrics.lineHeight;this.lineGap=this.cssFontInfo.metrics.lineGap}else this.lineHeight=this.ascent-this.descent+this.lineGap;n.post&&function readPostScriptTable(e,i,a){const r=(t.start||0)+e.offset;t.pos=r;const s=r+e.length,n=t.getInt32();t.skip(28);let o,g,c=!0;switch(n){case 65536:o=Wi;break;case 131072:const e=t.getUint16();if(e!==a){c=!1;break}const r=[];for(g=0;g<e;++g){const e=t.getUint16();if(e>=32768){c=!1;break}r.push(e)}if(!c)break;const C=[],h=[];for(;t.pos<s;){const e=t.getByte();h.length=e;for(g=0;g<e;++g)h[g]=String.fromCharCode(t.getByte());C.push(h.join(""))}o=[];for(g=0;g<e;++g){const e=r[g];e<258?o.push(Wi[e]):o.push(C[e-258])}break;case 196608:break;default:warn("Unknown/unsupported post table version "+n);c=!1;i.defaultEncoding&&(o=i.defaultEncoding)}i.glyphNames=o;return c}(n.post,i,h);n.post={tag:"post",data:createPostTable(i)};const m=Object.create(null);function hasGlyph(e){return!f[e]}if(i.composite){const e=i.cidToGidMap||[],t=0===e.length;i.cMap.forEach((function(i,a){"string"==typeof a&&(a=convertCidString(i,a,!0));if(a>65535)throw new FormatError("Max size of CID is 65,535");let r=-1;t?r=a:void 0!==e[a]&&(r=e[a]);r>=0&&r<h&&hasGlyph(r)&&(m[i]=r)}))}else{const e=function readCmapTable(e,t,i,a){if(!e){warn("No cmap table available.");return{platformId:-1,encodingId:-1,mappings:[],hasShortCmap:!1}}let r,s=(t.start||0)+e.offset;t.pos=s;t.skip(2);const n=t.getUint16();let o,g=!1;for(let e=0;e<n;e++){const r=t.getUint16(),s=t.getUint16(),c=t.getInt32()>>>0;let C=!1;if(o?.platformId!==r||o?.encodingId!==s){if(0!==r||0!==s&&1!==s&&3!==s)if(1===r&&0===s)C=!0;else if(3!==r||1!==s||!a&&o){if(i&&3===r&&0===s){C=!0;let i=!0;if(e<n-1){const e=t.peekBytes(2);int16(e[0],e[1])<r&&(i=!1)}i&&(g=!0)}}else{C=!0;i||(g=!0)}else C=!0;C&&(o={platformId:r,encodingId:s,offset:c});if(g)break}}o&&(t.pos=s+o.offset);if(!o||-1===t.peekByte()){warn("Could not find a preferred cmap table.");return{platformId:-1,encodingId:-1,mappings:[],hasShortCmap:!1}}const c=t.getUint16();let C=!1;const h=[];let l,Q;if(0===c){t.skip(4);for(l=0;l<256;l++){const e=t.getByte();e&&h.push({charCode:l,glyphId:e})}C=!0}else if(2===c){t.skip(4);const e=[];let i=0;for(let a=0;a<256;a++){const a=t.getUint16()>>3;e.push(a);i=Math.max(a,i)}const a=[];for(let e=0;e<=i;e++)a.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:signedInt16(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let i=0;i<256;i++)if(0===e[i]){t.pos=a[0].idRangePos+2*i;Q=t.getUint16();h.push({charCode:i,glyphId:Q})}else{const r=a[e[i]];for(l=0;l<r.entryCount;l++){const e=(i<<8)+l+r.firstCode;t.pos=r.idRangePos+2*l;Q=t.getUint16();0!==Q&&(Q=(Q+r.idDelta)%65536);h.push({charCode:e,glyphId:Q})}}}else if(4===c){t.skip(4);const e=t.getUint16()>>1;t.skip(6);const i=[];let a;for(a=0;a<e;a++)i.push({end:t.getUint16()});t.skip(2);for(a=0;a<e;a++)i[a].start=t.getUint16();for(a=0;a<e;a++)i[a].delta=t.getUint16();let n,o=0;for(a=0;a<e;a++){r=i[a];const s=t.getUint16();if(s){n=(s>>1)-(e-a);r.offsetIndex=n;o=Math.max(o,n+r.end-r.start+1)}else r.offsetIndex=-1}const g=[];for(l=0;l<o;l++)g.push(t.getUint16());for(a=0;a<e;a++){r=i[a];s=r.start;const e=r.end,t=r.delta;n=r.offsetIndex;for(l=s;l<=e;l++)if(65535!==l){Q=n<0?l:g[n+l-s];Q=Q+t&65535;h.push({charCode:l,glyphId:Q})}}}else if(6===c){t.skip(4);const e=t.getUint16(),i=t.getUint16();for(l=0;l<i;l++){Q=t.getUint16();const i=e+l;h.push({charCode:i,glyphId:Q})}}else{if(12!==c){warn("cmap table has unsupported format: "+c);return{platformId:-1,encodingId:-1,mappings:[],hasShortCmap:!1}}{t.skip(10);const e=t.getInt32()>>>0;for(l=0;l<e;l++){const e=t.getInt32()>>>0,i=t.getInt32()>>>0;let a=t.getInt32()>>>0;for(let t=e;t<=i;t++)h.push({charCode:t,glyphId:a++})}}}h.sort((function(e,t){return e.charCode-t.charCode}));for(let e=1;e<h.length;e++)if(h[e-1].charCode===h[e].charCode){h.splice(e,1);e--}return{platformId:o.platformId,encodingId:o.encodingId,mappings:h,hasShortCmap:C}}(n.cmap,t,this.isSymbolicFont,i.hasEncoding),a=e.platformId,r=e.encodingId,s=e.mappings;let o=[],g=!1;!i.hasEncoding||"MacRomanEncoding"!==i.baseEncodingName&&"WinAnsiEncoding"!==i.baseEncodingName||(o=getEncoding(i.baseEncodingName));if(i.hasEncoding&&!this.isSymbolicFont&&(3===a&&1===r||1===a&&0===r)){const e=xi();for(let t=0;t<256;t++){let n;n=void 0!==this.differences[t]?this.differences[t]:o.length&&""!==o[t]?o[t]:mi[t];if(!n)continue;const g=recoverGlyphName(n,e);let c;3===a&&1===r?c=e[g]:1===a&&0===r&&(c=pi.indexOf(g));if(void 0===c){if(!i.glyphNames&&i.hasIncludedToUnicodeMap&&!(this.toUnicode instanceof IdentityToUnicodeMap)){const e=this.toUnicode.get(t);e&&(c=e.codePointAt(0))}if(void 0===c)continue}for(const e of s)if(e.charCode===c){m[t]=e.glyphId;break}}}else if(0===a){for(const e of s)m[e.charCode]=e.glyphId;g=!0}else if(3===a&&0===r)for(const e of s){let t=e.charCode;t>=61440&&t<=61695&&(t&=255);m[t]=e.glyphId}else for(const e of s)m[e.charCode]=e.glyphId;if(i.glyphNames&&(o.length||this.differences.length))for(let e=0;e<256;++e){if(!g&&void 0!==m[e])continue;const t=this.differences[e]||o[e];if(!t)continue;const a=i.glyphNames.indexOf(t);a>0&&hasGlyph(a)&&(m[e]=a)}}0===m.length&&(m[0]=0);let y=l-1;Q||(y=0);if(!i.cssFontInfo){const e=adjustMapping(m,hasGlyph,y,this.toUnicode);this.toFontChar=e.toFontChar;n.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,e.toUnicodeExtraMap,l)};n["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const i=t.getUint16();t.skip(60);const a=t.getUint16();if(i<4&&768&a)return!1;if(t.getUint16()>t.getUint16())return!1;t.skip(6);if(0===t.getUint16())return!1;e.data[8]=e.data[9]=0;return!0}(n["OS/2"],t)||(n["OS/2"]={tag:"OS/2",data:createOS2Table(i,e.charCodeToGlyphId,p)})}if(!c)try{g=new Stream(n["CFF "].data);o=new CFFParser(g,i,Ti).parse();o.duplicateFirstGlyph();const e=new CFFCompiler(o);n["CFF "].data=e.compile()}catch{warn("Failed to compile font "+i.loadedName)}if(n.name){const[t,a]=readNameTable(n.name);n.name.data=createNameTable(e,t);this.psName=t[0][6]||null;i.composite||function adjustTrueTypeToUnicode(e,t,i){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;if(!t)return;if(0===i.length)return;if(e.defaultEncoding===yi)return;for(const e of i)if(!isWinNameRecord(e))return;const a=yi,r=[],s=xi();for(const e in a){const t=a[e];if(""===t)continue;const i=s[t];void 0!==i&&(r[e]=String.fromCharCode(i))}r.length>0&&e.toUnicode.amend(r)}(i,this.isSymbolicFont,a)}else n.name={tag:"name",data:createNameTable(this.name)};const w=new OpenTypeFileBuilder(s.version);for(const e in n)w.addTable(e,n[e].data);return w.toArray()}convert(e,t,i){i.fixedPitch=!1;i.builtInEncoding&&function adjustType1ToUnicode(e,t){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;const i=[],a=xi();for(const r in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[r]))continue;const s=getUnicodeForGlyph(t[r],a);-1!==s&&(i[r]=String.fromCharCode(s))}i.length>0&&e.toUnicode.amend(i)}(i,i.builtInEncoding);let a=1;t instanceof CFFFont&&(a=t.numGlyphs-1);const s=t.getGlyphMapping(i);let n=null,o=s,g=null;if(!i.cssFontInfo){n=adjustMapping(s,t.hasGlyphId.bind(t),a,this.toUnicode);this.toFontChar=n.toFontChar;o=n.charCodeToGlyphId;g=n.toUnicodeExtraMap}const c=t.numGlyphs;function getCharCodes(e,t){let i=null;for(const a in e)t===e[a]&&(i||=[]).push(0|a);return i}function createCharCode(e,t){for(const i in e)if(t===e[i])return 0|i;n.charCodeToGlyphId[n.nextAvailableFontCharCode]=t;return n.nextAvailableFontCharCode++}const C=t.seacs;if(n&&C?.length){const e=i.fontMatrix||r,a=t.getCharset(),o=Object.create(null);for(let t in C){t|=0;const i=C[t],r=mi[i[2]],g=mi[i[3]],c=a.indexOf(r),h=a.indexOf(g);if(c<0||h<0)continue;const l={x:i[0]*e[0]+i[1]*e[2]+e[4],y:i[0]*e[1]+i[1]*e[3]+e[5]},Q=getCharCodes(s,t);if(Q)for(const e of Q){const t=n.charCodeToGlyphId,i=createCharCode(t,c),a=createCharCode(t,h);o[e]={baseFontCharCode:i,accentFontCharCode:a,accentOffset:l}}}i.seacMap=o}const h=i.fontMatrix?1/Math.max(...i.fontMatrix.slice(0,4).map(Math.abs)):1e3,l=new OpenTypeFileBuilder("OTTO");l.addTable("CFF ",t.data);l.addTable("OS/2",createOS2Table(i,o));l.addTable("cmap",createCmapTable(o,g,c));l.addTable("head","\0\0\0\0\0\0\0\0\0\0_<õ\0\0"+safeString16(h)+"\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0"+safeString16(i.descent)+"ÿ"+safeString16(i.ascent)+string16(i.italicAngle?2:0)+"\0\0\0\0\0\0\0");l.addTable("hhea","\0\0\0"+safeString16(i.ascent)+safeString16(i.descent)+"\0\0ÿÿ\0\0\0\0\0\0"+safeString16(i.capHeight)+safeString16(Math.tan(i.italicAngle)*i.xHeight)+"\0\0\0\0\0\0\0\0\0\0\0\0"+string16(c));l.addTable("hmtx",function fontFieldsHmtx(){const e=t.charstrings,i=t.cff?t.cff.widths:null;let a="\0\0\0\0";for(let t=1,r=c;t<r;t++){let r=0;if(e){const i=e[t-1];r="width"in i?i.width:0}else i&&(r=Math.ceil(i[t]||0));a+=string16(r)+string16(0)}return a}());l.addTable("maxp","\0\0P\0"+string16(c));l.addTable("name",createNameTable(e));l.addTable("post",createPostTable(i));return l.toArray()}_charToGlyph(e,t=!1){let i,a,r,s=this._glyphCache[e];if(s?.isSpace===t)return s;let n=e;if(this.cMap?.contains(e)){n=this.cMap.lookup(e);"string"==typeof n&&(n=convertCidString(e,n))}a=this.widths[n];"number"!=typeof a&&(a=this.defaultWidth);const o=this.vmetrics?.[n];let g=this.toUnicode.get(e)||e;"number"==typeof g&&(g=String.fromCharCode(g));let c=void 0!==this.toFontChar[e];i=this.toFontChar[e]||e;if(this.missingFile){const t=this.differences[e]||this.defaultEncoding[e];".notdef"!==t&&""!==t||"Type1"!==this.type||(i=32);i=function mapSpecialUnicodeValues(e){return e>=65520&&e<=65535?0:e>=62976&&e<=63743?Hi()[e]||e:173===e?45:e}(i)}this.isType3Font&&(r=i);let C=null;if(this.seacMap?.[e]){c=!0;const t=this.seacMap[e];i=t.baseFontCharCode;C={fontChar:String.fromCodePoint(t.accentFontCharCode),offset:t.accentOffset}}let h="";"number"==typeof i&&(i<=1114111?h=String.fromCodePoint(i):warn(`charToGlyph - invalid fontCharCode: ${i}`));s=new fonts_Glyph(e,h,g,C,a,o,r,t,c);return this._glyphCache[e]=s}charsToGlyphs(e){let t=this._charsCache[e];if(t)return t;t=[];if(this.cMap){const i=Object.create(null),a=e.length;let r=0;for(;r<a;){this.cMap.readCharCode(e,r,i);const{charcode:a,length:s}=i;r+=s;const n=this._charToGlyph(a,1===s&&32===e.charCodeAt(r-1));t.push(n)}}else for(let i=0,a=e.length;i<a;++i){const a=e.charCodeAt(i),r=this._charToGlyph(a,32===a);t.push(r)}return this._charsCache[e]=t}getCharPositions(e){const t=[];if(this.cMap){const i=Object.create(null);let a=0;for(;a<e.length;){this.cMap.readCharCode(e,a,i);const r=i.length;t.push([a,a+r]);a+=r}}else for(let i=0,a=e.length;i<a;++i)t.push([i,i+1]);return t}get glyphCacheValues(){return Object.values(this._glyphCache)}encodeString(e){const t=[],i=[],hasCurrentBufErrors=()=>t.length%2==1,a=this.toUnicode instanceof IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let r=0,s=e.length;r<s;r++){const s=e.codePointAt(r);s>55295&&(s<57344||s>65533)&&r++;if(this.toUnicode){const e=a(s);if(-1!==e){if(hasCurrentBufErrors()){t.push(i.join(""));i.length=0}for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)i.push(String.fromCharCode(e>>8*t&255));continue}}if(!hasCurrentBufErrors()){t.push(i.join(""));i.length=0}i.push(String.fromCodePoint(s))}t.push(i.join(""));return t}}class ErrorFont{constructor(e){this.error=e;this.loadedName="g_font_error";this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(e=!1){return{error:this.error}}}const da=2,fa=3,pa=4,ma=5,ya=6,wa=7;class Pattern{constructor(){unreachable("Cannot initialize Pattern.")}static parseShading(e,t,i,a,r){const s=e instanceof BaseStream?e.dict:e,n=s.get("ShadingType");try{switch(n){case da:case fa:return new RadialAxialShading(s,t,i,a,r);case pa:case ma:case ya:case wa:return new MeshShading(e,t,i,a,r);default:throw new FormatError("Unsupported ShadingType: "+n)}}catch(e){if(e instanceof MissingDataException)throw e;warn(e);return new DummyShading}}}class BaseShading{static SMALL_NUMBER=1e-6;constructor(){this.constructor===BaseShading&&unreachable("Cannot initialize BaseShading.")}getIR(){unreachable("Abstract method `getIR` called.")}}class RadialAxialShading extends BaseShading{constructor(e,t,i,a,r){super();this.shadingType=e.get("ShadingType");let s=0;this.shadingType===da?s=4:this.shadingType===fa&&(s=6);this.coordsArr=e.getArray("Coords");if(!isNumberArray(this.coordsArr,s))throw new FormatError("RadialAxialShading: Invalid /Coords array.");const n=ColorSpace.parse({cs:e.getRaw("CS")||e.getRaw("ColorSpace"),xref:t,resources:i,pdfFunctionFactory:a,localColorSpaceCache:r});this.bbox=lookupNormalRect(e.getArray("BBox"),null);let o=0,g=1;const c=e.getArray("Domain");isNumberArray(c,2)&&([o,g]=c);let C=!1,h=!1;const l=e.getArray("Extend");(function isBooleanArray(e,t){return Array.isArray(e)&&(null===t||e.length===t)&&e.every((e=>"boolean"==typeof e))})(l,2)&&([C,h]=l);if(!(this.shadingType!==fa||C&&h)){const[e,t,i,a,r,s]=this.coordsArr,n=Math.hypot(e-a,t-r);i<=s+n&&s<=i+n&&warn("Unsupported radial gradient.")}this.extendStart=C;this.extendEnd=h;const Q=e.getRaw("Function"),E=a.createFromArray(Q),u=(g-o)/840,d=this.colorStops=[];if(o>=g||u<=0){info("Bad shading domain.");return}const f=new Float32Array(n.numComps),p=new Float32Array(1);let m,y=0;p[0]=o;E(p,0,f,0);let w=n.getRgb(f,0);const b=Util.makeHexColor(w[0],w[1],w[2]);d.push([0,b]);let D=1;p[0]=o+u;E(p,0,f,0);let S=n.getRgb(f,0),k=S[0]-w[0]+1,R=S[1]-w[1]+1,N=S[2]-w[2]+1,G=S[0]-w[0]-1,x=S[1]-w[1]-1,U=S[2]-w[2]-1;for(let e=2;e<840;e++){p[0]=o+e*u;E(p,0,f,0);m=n.getRgb(f,0);const t=e-y;k=Math.min(k,(m[0]-w[0]+1)/t);R=Math.min(R,(m[1]-w[1]+1)/t);N=Math.min(N,(m[2]-w[2]+1)/t);G=Math.max(G,(m[0]-w[0]-1)/t);x=Math.max(x,(m[1]-w[1]-1)/t);U=Math.max(U,(m[2]-w[2]-1)/t);if(!(G<=k&&x<=R&&U<=N)){const e=Util.makeHexColor(S[0],S[1],S[2]);d.push([D/840,e]);k=m[0]-S[0]+1;R=m[1]-S[1]+1;N=m[2]-S[2]+1;G=m[0]-S[0]-1;x=m[1]-S[1]-1;U=m[2]-S[2]-1;y=D;w=S}D=e;S=m}const M=Util.makeHexColor(S[0],S[1],S[2]);d.push([1,M]);let L="transparent";if(e.has("Background")){m=n.getRgb(e.get("Background"),0);L=Util.makeHexColor(m[0],m[1],m[2])}if(!C){d.unshift([0,L]);d[1][0]+=BaseShading.SMALL_NUMBER}if(!h){d.at(-1)[0]-=BaseShading.SMALL_NUMBER;d.push([1,L])}this.colorStops=d}getIR(){const{coordsArr:e,shadingType:t}=this;let i,a,r,s,n;if(t===da){a=[e[0],e[1]];r=[e[2],e[3]];s=null;n=null;i="axial"}else if(t===fa){a=[e[0],e[1]];r=[e[3],e[4]];s=e[2];n=e[5];i="radial"}else unreachable(`getPattern type unknown: ${t}`);return["RadialAxial",i,this.bbox,this.colorStops,a,r,s,n]}}class MeshStreamReader{constructor(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLength=0;const i=t.numComps;this.tmpCompsBuf=new Float32Array(i);const a=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(a):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos<this.stream.end;if(this.bufferLength>0)return!0;const e=this.stream.getByte();if(e<0)return!1;this.buffer=e;this.bufferLength=8;return!0}readBits(e){let t=this.buffer,i=this.bufferLength;if(32===e){if(0===i)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();const e=this.stream.getByte();this.buffer=e&(1<<i)-1;return(t<<8-i|(255&e)>>i)>>>0}if(8===e&&0===i)return this.stream.getByte();for(;i<e;){t=t<<8|this.stream.getByte();i+=8}i-=e;this.bufferLength=i;this.buffer=t&(1<<i)-1;return t>>i}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),i=this.readBits(e),a=this.context.decode,r=e<32?1/((1<<e)-1):2.3283064365386963e-10;return[t*r*(a[1]-a[0])+a[0],i*r*(a[3]-a[2])+a[2]]}readComponents(){const e=this.context.numComps,t=this.context.bitsPerComponent,i=t<32?1/((1<<t)-1):2.3283064365386963e-10,a=this.context.decode,r=this.tmpCompsBuf;for(let s=0,n=4;s<e;s++,n+=2){const e=this.readBits(t);r[s]=e*i*(a[n+1]-a[n])+a[n]}const s=this.tmpCsCompsBuf;this.context.colorFn&&this.context.colorFn(r,0,s,0);return this.context.colorSpace.getRgb(s,0)}}let ba=Object.create(null);function getB(e){return ba[e]||=function buildB(e){const t=[];for(let i=0;i<=e;i++){const a=i/e,r=1-a;t.push(new Float32Array([r**3,3*a*r**2,3*a**2*r,a**3]))}return t}(e)}class MeshShading extends BaseShading{static MIN_SPLIT_PATCH_CHUNKS_AMOUNT=3;static MAX_SPLIT_PATCH_CHUNKS_AMOUNT=20;static TRIANGLE_DENSITY=20;constructor(e,t,i,a,r){super();if(!(e instanceof BaseStream))throw new FormatError("Mesh data is not a stream");const s=e.dict;this.shadingType=s.get("ShadingType");this.bbox=lookupNormalRect(s.getArray("BBox"),null);const n=ColorSpace.parse({cs:s.getRaw("CS")||s.getRaw("ColorSpace"),xref:t,resources:i,pdfFunctionFactory:a,localColorSpaceCache:r});this.background=s.has("Background")?n.getRgb(s.get("Background"),0):null;const o=s.getRaw("Function"),g=o?a.createFromArray(o):null;this.coords=[];this.colors=[];this.figures=[];const c={bitsPerCoordinate:s.get("BitsPerCoordinate"),bitsPerComponent:s.get("BitsPerComponent"),bitsPerFlag:s.get("BitsPerFlag"),decode:s.getArray("Decode"),colorFn:g,colorSpace:n,numComps:g?1:n.numComps},C=new MeshStreamReader(e,c);let h=!1;switch(this.shadingType){case pa:this._decodeType4Shading(C);break;case ma:const e=0|s.get("VerticesPerRow");if(e<2)throw new FormatError("Invalid VerticesPerRow");this._decodeType5Shading(C,e);break;case ya:this._decodeType6Shading(C);h=!0;break;case wa:this._decodeType7Shading(C);h=!0;break;default:unreachable("Unsupported mesh type.")}if(h){this._updateBounds();for(let e=0,t=this.figures.length;e<t;e++)this._buildFigureFromPatch(e)}this._updateBounds();this._packData()}_decodeType4Shading(e){const t=this.coords,i=this.colors,a=[],r=[];let s=0;for(;e.hasData;){const n=e.readFlag(),o=e.readCoordinate(),g=e.readComponents();if(0===s){if(!(0<=n&&n<=2))throw new FormatError("Unknown type4 flag");switch(n){case 0:s=3;break;case 1:r.push(r.at(-2),r.at(-1));s=1;break;case 2:r.push(r.at(-3),r.at(-1));s=1}a.push(n)}r.push(t.length);t.push(o);i.push(g);s--;e.align()}this.figures.push({type:"triangles",coords:new Int32Array(r),colors:new Int32Array(r)})}_decodeType5Shading(e,t){const i=this.coords,a=this.colors,r=[];for(;e.hasData;){const t=e.readCoordinate(),s=e.readComponents();r.push(i.length);i.push(t);a.push(s)}this.figures.push({type:"lattice",coords:new Int32Array(r),colors:new Int32Array(r),verticesPerRow:t})}_decodeType6Shading(e){const t=this.coords,i=this.colors,a=new Int32Array(16),r=new Int32Array(4);for(;e.hasData;){const s=e.readFlag();if(!(0<=s&&s<=3))throw new FormatError("Unknown type6 flag");const n=t.length;for(let i=0,a=0!==s?8:12;i<a;i++)t.push(e.readCoordinate());const o=i.length;for(let t=0,a=0!==s?2:4;t<a;t++)i.push(e.readComponents());let g,c,C,h;switch(s){case 0:a[12]=n+3;a[13]=n+4;a[14]=n+5;a[15]=n+6;a[8]=n+2;a[11]=n+7;a[4]=n+1;a[7]=n+8;a[0]=n;a[1]=n+11;a[2]=n+10;a[3]=n+9;r[2]=o+1;r[3]=o+2;r[0]=o;r[1]=o+3;break;case 1:g=a[12];c=a[13];C=a[14];h=a[15];a[12]=h;a[13]=n+0;a[14]=n+1;a[15]=n+2;a[8]=C;a[11]=n+3;a[4]=c;a[7]=n+4;a[0]=g;a[1]=n+7;a[2]=n+6;a[3]=n+5;g=r[2];c=r[3];r[2]=c;r[3]=o;r[0]=g;r[1]=o+1;break;case 2:g=a[15];c=a[11];a[12]=a[3];a[13]=n+0;a[14]=n+1;a[15]=n+2;a[8]=a[7];a[11]=n+3;a[4]=c;a[7]=n+4;a[0]=g;a[1]=n+7;a[2]=n+6;a[3]=n+5;g=r[3];r[2]=r[1];r[3]=o;r[0]=g;r[1]=o+1;break;case 3:a[12]=a[0];a[13]=n+0;a[14]=n+1;a[15]=n+2;a[8]=a[1];a[11]=n+3;a[4]=a[2];a[7]=n+4;a[0]=a[3];a[1]=n+7;a[2]=n+6;a[3]=n+5;r[2]=r[0];r[3]=o;r[0]=r[1];r[1]=o+1}a[5]=t.length;t.push([(-4*t[a[0]][0]-t[a[15]][0]+6*(t[a[4]][0]+t[a[1]][0])-2*(t[a[12]][0]+t[a[3]][0])+3*(t[a[13]][0]+t[a[7]][0]))/9,(-4*t[a[0]][1]-t[a[15]][1]+6*(t[a[4]][1]+t[a[1]][1])-2*(t[a[12]][1]+t[a[3]][1])+3*(t[a[13]][1]+t[a[7]][1]))/9]);a[6]=t.length;t.push([(-4*t[a[3]][0]-t[a[12]][0]+6*(t[a[2]][0]+t[a[7]][0])-2*(t[a[0]][0]+t[a[15]][0])+3*(t[a[4]][0]+t[a[14]][0]))/9,(-4*t[a[3]][1]-t[a[12]][1]+6*(t[a[2]][1]+t[a[7]][1])-2*(t[a[0]][1]+t[a[15]][1])+3*(t[a[4]][1]+t[a[14]][1]))/9]);a[9]=t.length;t.push([(-4*t[a[12]][0]-t[a[3]][0]+6*(t[a[8]][0]+t[a[13]][0])-2*(t[a[0]][0]+t[a[15]][0])+3*(t[a[11]][0]+t[a[1]][0]))/9,(-4*t[a[12]][1]-t[a[3]][1]+6*(t[a[8]][1]+t[a[13]][1])-2*(t[a[0]][1]+t[a[15]][1])+3*(t[a[11]][1]+t[a[1]][1]))/9]);a[10]=t.length;t.push([(-4*t[a[15]][0]-t[a[0]][0]+6*(t[a[11]][0]+t[a[14]][0])-2*(t[a[12]][0]+t[a[3]][0])+3*(t[a[2]][0]+t[a[8]][0]))/9,(-4*t[a[15]][1]-t[a[0]][1]+6*(t[a[11]][1]+t[a[14]][1])-2*(t[a[12]][1]+t[a[3]][1])+3*(t[a[2]][1]+t[a[8]][1]))/9]);this.figures.push({type:"patch",coords:new Int32Array(a),colors:new Int32Array(r)})}}_decodeType7Shading(e){const t=this.coords,i=this.colors,a=new Int32Array(16),r=new Int32Array(4);for(;e.hasData;){const s=e.readFlag();if(!(0<=s&&s<=3))throw new FormatError("Unknown type7 flag");const n=t.length;for(let i=0,a=0!==s?12:16;i<a;i++)t.push(e.readCoordinate());const o=i.length;for(let t=0,a=0!==s?2:4;t<a;t++)i.push(e.readComponents());let g,c,C,h;switch(s){case 0:a[12]=n+3;a[13]=n+4;a[14]=n+5;a[15]=n+6;a[8]=n+2;a[9]=n+13;a[10]=n+14;a[11]=n+7;a[4]=n+1;a[5]=n+12;a[6]=n+15;a[7]=n+8;a[0]=n;a[1]=n+11;a[2]=n+10;a[3]=n+9;r[2]=o+1;r[3]=o+2;r[0]=o;r[1]=o+3;break;case 1:g=a[12];c=a[13];C=a[14];h=a[15];a[12]=h;a[13]=n+0;a[14]=n+1;a[15]=n+2;a[8]=C;a[9]=n+9;a[10]=n+10;a[11]=n+3;a[4]=c;a[5]=n+8;a[6]=n+11;a[7]=n+4;a[0]=g;a[1]=n+7;a[2]=n+6;a[3]=n+5;g=r[2];c=r[3];r[2]=c;r[3]=o;r[0]=g;r[1]=o+1;break;case 2:g=a[15];c=a[11];a[12]=a[3];a[13]=n+0;a[14]=n+1;a[15]=n+2;a[8]=a[7];a[9]=n+9;a[10]=n+10;a[11]=n+3;a[4]=c;a[5]=n+8;a[6]=n+11;a[7]=n+4;a[0]=g;a[1]=n+7;a[2]=n+6;a[3]=n+5;g=r[3];r[2]=r[1];r[3]=o;r[0]=g;r[1]=o+1;break;case 3:a[12]=a[0];a[13]=n+0;a[14]=n+1;a[15]=n+2;a[8]=a[1];a[9]=n+9;a[10]=n+10;a[11]=n+3;a[4]=a[2];a[5]=n+8;a[6]=n+11;a[7]=n+4;a[0]=a[3];a[1]=n+7;a[2]=n+6;a[3]=n+5;r[2]=r[0];r[3]=o;r[0]=r[1];r[1]=o+1}this.figures.push({type:"patch",coords:new Int32Array(a),colors:new Int32Array(r)})}}_buildFigureFromPatch(e){const t=this.figures[e];assert("patch"===t.type,"Unexpected patch mesh figure");const i=this.coords,a=this.colors,r=t.coords,s=t.colors,n=Math.min(i[r[0]][0],i[r[3]][0],i[r[12]][0],i[r[15]][0]),o=Math.min(i[r[0]][1],i[r[3]][1],i[r[12]][1],i[r[15]][1]),g=Math.max(i[r[0]][0],i[r[3]][0],i[r[12]][0],i[r[15]][0]),c=Math.max(i[r[0]][1],i[r[3]][1],i[r[12]][1],i[r[15]][1]);let C=Math.ceil((g-n)*MeshShading.TRIANGLE_DENSITY/(this.bounds[2]-this.bounds[0]));C=Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT,C));let h=Math.ceil((c-o)*MeshShading.TRIANGLE_DENSITY/(this.bounds[3]-this.bounds[1]));h=Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT,h));const l=C+1,Q=new Int32Array((h+1)*l),E=new Int32Array((h+1)*l);let u=0;const d=new Uint8Array(3),f=new Uint8Array(3),p=a[s[0]],m=a[s[1]],y=a[s[2]],w=a[s[3]],b=getB(h),D=getB(C);for(let e=0;e<=h;e++){d[0]=(p[0]*(h-e)+y[0]*e)/h|0;d[1]=(p[1]*(h-e)+y[1]*e)/h|0;d[2]=(p[2]*(h-e)+y[2]*e)/h|0;f[0]=(m[0]*(h-e)+w[0]*e)/h|0;f[1]=(m[1]*(h-e)+w[1]*e)/h|0;f[2]=(m[2]*(h-e)+w[2]*e)/h|0;for(let t=0;t<=C;t++,u++){if(!(0!==e&&e!==h||0!==t&&t!==C))continue;let s=0,n=0,o=0;for(let a=0;a<=3;a++)for(let g=0;g<=3;g++,o++){const c=b[e][a]*D[t][g];s+=i[r[o]][0]*c;n+=i[r[o]][1]*c}Q[u]=i.length;i.push([s,n]);E[u]=a.length;const g=new Uint8Array(3);g[0]=(d[0]*(C-t)+f[0]*t)/C|0;g[1]=(d[1]*(C-t)+f[1]*t)/C|0;g[2]=(d[2]*(C-t)+f[2]*t)/C|0;a.push(g)}}Q[0]=r[0];E[0]=s[0];Q[C]=r[3];E[C]=s[1];Q[l*h]=r[12];E[l*h]=s[2];Q[l*h+C]=r[15];E[l*h+C]=s[3];this.figures[e]={type:"lattice",coords:Q,colors:E,verticesPerRow:l}}_updateBounds(){let e=this.coords[0][0],t=this.coords[0][1],i=e,a=t;for(let r=1,s=this.coords.length;r<s;r++){const s=this.coords[r][0],n=this.coords[r][1];e=e>s?s:e;t=t>n?n:t;i=i<s?s:i;a=a<n?n:a}this.bounds=[e,t,i,a]}_packData(){let e,t,i,a;const r=this.coords,s=new Float32Array(2*r.length);for(e=0,i=0,t=r.length;e<t;e++){const t=r[e];s[i++]=t[0];s[i++]=t[1]}this.coords=s;const n=this.colors,o=new Uint8Array(3*n.length);for(e=0,i=0,t=n.length;e<t;e++){const t=n[e];o[i++]=t[0];o[i++]=t[1];o[i++]=t[2]}this.colors=o;const g=this.figures;for(e=0,t=g.length;e<t;e++){const t=g[e],r=t.coords,s=t.colors;for(i=0,a=r.length;i<a;i++){r[i]*=2;s[i]*=3}}}getIR(){const{bounds:e}=this;if(e[2]-e[0]==0||e[3]-e[1]==0)throw new FormatError(`Invalid MeshShading bounds: [${e}].`);return["Mesh",this.shadingType,this.coords,this.colors,this.figures,e,this.bbox,this.background]}}class DummyShading extends BaseShading{getIR(){return["Dummy"]}}function getTilingPatternIR(e,t,i){const r=lookupMatrix(t.getArray("Matrix"),a),s=lookupNormalRect(t.getArray("BBox"),null);if(!s||s[2]-s[0]==0||s[3]-s[1]==0)throw new FormatError("Invalid getTilingPatternIR /BBox array.");const n=t.get("XStep");if("number"!=typeof n)throw new FormatError("Invalid getTilingPatternIR /XStep value.");const o=t.get("YStep");if("number"!=typeof o)throw new FormatError("Invalid getTilingPatternIR /YStep value.");const g=t.get("PaintType");if(!Number.isInteger(g))throw new FormatError("Invalid getTilingPatternIR /PaintType value.");const c=t.get("TilingType");if(!Number.isInteger(c))throw new FormatError("Invalid getTilingPatternIR /TilingType value.");return["TilingPattern",i,e,r,s,n,o,g,c]}const Da=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.54657,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.73293,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.9121,.86943,.79795,.88198,.77958,.70864,.81055,.90399,.88653,.96017,.82577,.77892,.78257,.97507,1.54657,.97507,.85284,.89552,.90176,.88762,.8785,.75241,.8785,.90518,.95015,.77618,.8785,.88401,.91916,.86304,.88401,.91488,.8785,.8801,.8785,.8785,.91343,.7173,1.04106,.8785,.85075,.95794,.82616,.85162,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.12401,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.73293,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.9121,.86943,.86943,.86943,.86943,.86943,.85284,.87508,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.88762,.88762,.88762,.88762,.88762,.88762,.8715,.75241,.90518,.90518,.90518,.90518,.88401,.88401,.88401,.88401,.8785,.8785,.8801,.8801,.8801,.8801,.8801,.90747,.89049,.8785,.8785,.8785,.8785,.85162,.8785,.85162,.83908,.88762,.83908,.88762,.83908,.88762,.73293,.75241,.73293,.75241,.73293,.75241,.73293,.75241,.87289,.83016,.88506,.93125,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.81921,.77618,.81921,.77618,.81921,.77618,1,1,.87356,.8785,.91075,.89608,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76229,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.79468,.91926,.88175,.70823,.94903,.9121,.8785,1,1,.9121,.8785,.87802,.88656,.8785,.86943,.8801,.86943,.8801,.86943,.8801,.87402,.89291,.77958,.91343,1,1,.77958,.91343,.70864,.7173,.70864,.7173,.70864,.7173,.70864,.7173,1,1,.81055,.75841,.81055,1.06452,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.96017,.95794,.77892,.85162,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.88762,.77539,.8715,.87508,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70674,.98387,.94721,1.33431,1.45894,.95161,1.06303,.83908,.80352,.57184,.6965,.56289,.82001,.56029,.81235,1.02988,.83908,.7762,.68156,.80367,.73133,.78257,.87356,.86943,.95958,.75727,.89019,1.04924,.9121,.7648,.86943,.87356,.79795,.78275,.81055,.77892,.9762,.82577,.99819,.84896,.95958,.77892,.96108,1.01407,.89049,1.02988,.94211,.96108,.8936,.84021,.87842,.96399,.79109,.89049,1.00813,1.02988,.86077,.87445,.92099,.84723,.86513,.8801,.75638,.85714,.78216,.79586,.87965,.94211,.97747,.78287,.97926,.84971,1.02988,.94211,.8801,.94211,.84971,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90264,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.90518,1,1,1,1,1,1,1,1,1,1,1,1,.90548,1,1,1,1,1,1,.96017,.95794,.96017,.95794,.96017,.95794,.77892,.85162,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.92794,.87012,.87012,.87012,.89552,.89552,1.42259,.71143,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.93835,.83406,.91133,.84107,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90527,1.81055,.90527,1.81055,1.31006,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],Fa={lineHeight:1.2207,lineGap:.2207},Sa=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.56239,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.71805,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.90872,.85938,.79795,.87068,.77958,.69766,.81055,.90399,.88653,.96068,.82577,.77892,.78257,.97507,1.529,.97507,.85284,.89552,.90176,.94908,.86411,.74012,.86411,.88323,.95015,.86411,.86331,.88401,.91916,.86304,.88401,.9039,.86331,.86331,.86411,.86411,.90464,.70852,1.04106,.86331,.84372,.95794,.82616,.84548,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.19129,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.71805,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.90872,.85938,.85938,.85938,.85938,.85938,.85284,.87068,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.94908,.94908,.94908,.94908,.94908,.94908,.85887,.74012,.88323,.88323,.88323,.88323,.88401,.88401,.88401,.88401,.8785,.86331,.86331,.86331,.86331,.86331,.86331,.90747,.89049,.86331,.86331,.86331,.86331,.84548,.86411,.84548,.83908,.94908,.83908,.94908,.83908,.94908,.71805,.74012,.71805,.74012,.71805,.74012,.71805,.74012,.87289,.79538,.88506,.92726,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.81921,.86411,.81921,.86411,.81921,.86411,1,1,.87356,.86331,.91075,.8777,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76467,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.77312,.91926,.88175,.70823,.94903,.90872,.86331,1,1,.90872,.86331,.86906,.88116,.86331,.85938,.86331,.85938,.86331,.85938,.86331,.87402,.86549,.77958,.90464,1,1,.77958,.90464,.69766,.70852,.69766,.70852,.69766,.70852,.69766,.70852,1,1,.81055,.75841,.81055,1.06452,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.96068,.95794,.77892,.84548,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.94908,.77539,.85887,.87068,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70088,.98387,.94721,1.33431,1.45894,.95161,1.48387,.83908,.80352,.57118,.6965,.56347,.79179,.55853,.80346,1.02988,.83908,.7762,.67174,.86036,.73133,.78257,.87356,.86441,.95958,.75727,.89019,1.04924,.90872,.74889,.85938,.87891,.79795,.7957,.81055,.77892,.97447,.82577,.97466,.87179,.95958,.77892,.94252,.95612,.8753,1.02988,.92733,.94252,.87411,.84021,.8728,.95612,.74081,.8753,1.02189,1.02988,.84814,.87445,.91822,.84723,.85668,.86331,.81344,.87581,.76422,.82046,.96057,.92733,.99375,.78022,.95452,.86015,1.02988,.92733,.86331,.92733,.86015,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90631,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.88323,1,1,1,1,1,1,1,1,1,1,1,1,.85174,1,1,1,1,1,1,.96068,.95794,.96068,.95794,.96068,.95794,.77892,.84548,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.89807,.87012,.87012,.87012,.89552,.89552,1.42259,.71094,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.92972,.83406,.91133,.83326,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90616,1.81055,.90527,1.81055,1.3107,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],ka={lineHeight:1.2207,lineGap:.2207},Ra=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39543,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.72346,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89249,.84118,.77452,.85374,.75186,.67789,.79776,.88844,.85066,.94309,.77818,.7306,.76659,1.10369,1.38313,1.10369,1.06139,.89552,.8739,.9245,.9245,.83203,.9245,.85865,1.09842,.9245,.9245,1.03297,1.07692,.90918,1.03297,.94959,.9245,.92274,.9245,.9245,1.02933,.77832,1.20562,.9245,.8916,.98986,.86621,.89453,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.16359,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.72346,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89249,.84118,.84118,.84118,.84118,.84118,.85284,.84557,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.9245,.9245,.9245,.9245,.9245,.9245,.84843,.83203,.85865,.85865,.85865,.85865,.82601,.82601,.82601,.82601,.94469,.9245,.92274,.92274,.92274,.92274,.92274,.90747,.86651,.9245,.9245,.9245,.9245,.89453,.9245,.89453,.8675,.9245,.8675,.9245,.8675,.9245,.72346,.83203,.72346,.83203,.72346,.83203,.72346,.83203,.85193,.8875,.86477,.99034,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.81105,.9245,.81105,.9245,.81105,.9245,1,1,.86275,.9245,.90872,.93591,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77896,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.9375,.98156,.93407,.77261,1.11429,.89249,.9245,1,1,.89249,.9245,.92534,.86698,.9245,.84118,.92274,.84118,.92274,.84118,.92274,.8667,.86291,.75186,1.02933,1,1,.75186,1.02933,.67789,.77832,.67789,.77832,.67789,.77832,.67789,.77832,1,1,.79776,.97655,.79776,1.23023,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.94309,.98986,.7306,.89453,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.9245,.76318,.84843,.84557,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67009,.96334,.93695,1.35191,1.40909,.95161,1.48387,.8675,.90861,.6192,.7363,.64824,.82411,.56321,.85696,1.23516,.8675,.81552,.7286,.84134,.73206,.76659,.86275,.84369,.90685,.77892,.85871,1.02638,.89249,.75828,.84118,.85984,.77452,.76466,.79776,.7306,.90782,.77818,.903,.87291,.90685,.7306,.99058,1.03667,.94635,1.23516,.9849,.99058,.92393,.8916,.942,1.03667,.75026,.94635,1.0297,1.23516,.90918,.94048,.98217,.89746,.84153,.92274,.82507,.88832,.84438,.88178,1.03525,.9849,1.00225,.78086,.97248,.89404,1.23516,.9849,.92274,.9849,.89404,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.89693,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.85865,1,1,1,1,1,1,1,1,1,1,1,1,.90933,1,1,1,1,1,1,.94309,.98986,.94309,.98986,.94309,.98986,.7306,.89453,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.68994,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.97858,.82616,.91133,.83437,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90572,1.81055,.90749,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85284,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],Na={lineHeight:1.2207,lineGap:.2207},Ga=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39016,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.73834,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89385,.85122,.77452,.86503,.75186,.68887,.79776,.88844,.85066,.94258,.77818,.7306,.76659,1.10369,1.39016,1.10369,1.06139,.89552,.8739,.86128,.94469,.8457,.94469,.89464,1.09842,.84636,.94469,1.03297,1.07692,.90918,1.03297,.95897,.94469,.9482,.94469,.94469,1.04692,.78223,1.20562,.94469,.90332,.98986,.86621,.90527,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.08707,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.73834,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89385,.85122,.85122,.85122,.85122,.85122,.85284,.85311,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.86128,.86128,.86128,.86128,.86128,.86128,.8693,.8457,.89464,.89464,.89464,.89464,.82601,.82601,.82601,.82601,.94469,.94469,.9482,.9482,.9482,.9482,.9482,.90747,.86651,.94469,.94469,.94469,.94469,.90527,.94469,.90527,.8675,.86128,.8675,.86128,.8675,.86128,.73834,.8457,.73834,.8457,.73834,.8457,.73834,.8457,.85193,.92454,.86477,.9921,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.81105,.84636,.81105,.84636,.81105,.84636,1,1,.86275,.94469,.90872,.95786,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77741,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.90452,.98156,1.11842,.77261,1.11429,.89385,.94469,1,1,.89385,.94469,.95877,.86901,.94469,.85122,.9482,.85122,.9482,.85122,.9482,.8667,.90016,.75186,1.04692,1,1,.75186,1.04692,.68887,.78223,.68887,.78223,.68887,.78223,.68887,.78223,1,1,.79776,.92188,.79776,1.23023,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.94258,.98986,.7306,.90527,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.86128,.76318,.8693,.85311,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67742,.96334,.93695,1.35191,1.40909,.95161,1.48387,.86686,.90861,.62267,.74359,.65649,.85498,.56963,.88254,1.23516,.8675,.81552,.75443,.84503,.73206,.76659,.86275,.85122,.90685,.77892,.85746,1.02638,.89385,.75657,.85122,.86275,.77452,.74171,.79776,.7306,.95165,.77818,.89772,.88831,.90685,.7306,.98142,1.02191,.96576,1.23516,.99018,.98142,.9236,.89258,.94035,1.02191,.78848,.96576,.9561,1.23516,.90918,.92578,.95424,.89746,.83969,.9482,.80113,.89442,.85208,.86155,.98022,.99018,1.00452,.81209,.99247,.89181,1.23516,.99018,.9482,.99018,.89181,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.88844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89464,1,1,1,1,1,1,1,1,1,1,1,1,.96766,1,1,1,1,1,1,.94258,.98986,.94258,.98986,.94258,.98986,.7306,.90527,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.69043,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.99331,.82616,.91133,.84286,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90527,1.81055,.90527,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1.07185,.99413,.96334,1.08065,1,1,1,1,1,1,1,1,1,1,1],xa={lineHeight:1.2207,lineGap:.2207},Ua=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.03374,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00042,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.03828,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00034,.99977,1,.99997,1.00026,1.00078,1.00036,.99973,1.00013,1.0006,.99977,.99977,.99988,.85148,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,1.00069,1.00022,.99977,1.00001,.99984,1.00026,1.00001,1.00024,1.00001,.9999,1,1.0006,1.00001,1.00041,.99962,1.00026,1.0006,.99995,1.00041,.99942,.99973,.99927,1.00082,.99902,1.00026,1.00087,1.0006,1.00069,.99973,.99867,.99973,.9993,1.00026,1.00049,1.00056,1,.99988,.99935,.99995,.99954,1.00055,.99945,1.00032,1.0006,.99995,1.00026,.99995,1.00032,1.00001,1.00008,.99971,1.00019,.9994,1.00001,1.0006,1.00044,.99973,1.00023,1.00047,1,.99942,.99561,.99989,1.00035,.99977,1.00035,.99977,1.00019,.99944,1.00001,1.00021,.99926,1.00035,1.00035,.99942,1.00048,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.99989,1.00057,1.00001,.99936,1.00052,1.00012,.99996,1.00043,1,1.00035,.9994,.99976,1.00035,.99973,1.00052,1.00041,1.00119,1.00037,.99973,1.00002,.99986,1.00041,1.00041,.99902,.9996,1.00034,.99999,1.00026,.99999,1.00026,.99973,1.00052,.99973,1,.99973,1.00041,1.00075,.9994,1.0003,.99999,1,1.00041,.99955,1,.99915,.99973,.99973,1.00026,1.00119,.99955,.99973,1.0006,.99911,1.0006,1.00026,.99972,1.00026,.99902,1.00041,.99973,.99999,1,1,1.00038,1.0005,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,1.00047,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],Ma={lineHeight:1.2,lineGap:.2},La=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.0044,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99971,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.01011,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99977,1,1,1.00026,.99969,.99972,.99981,.9998,1.0006,.99977,.99977,1.00022,.91155,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,.99966,1.00022,1.00032,1.00001,.99944,1.00026,1.00001,.99968,1.00001,1.00047,1,1.0006,1.00001,.99981,1.00101,1.00026,1.0006,.99948,.99981,1.00064,.99973,.99942,1.00101,1.00061,1.00026,1.00069,1.0006,1.00014,.99973,1.01322,.99973,1.00065,1.00026,1.00012,.99923,1,1.00064,1.00076,.99948,1.00055,1.00063,1.00007,.99943,1.0006,.99948,1.00026,.99948,.99943,1.00001,1.00001,1.00029,1.00038,1.00035,1.00001,1.0006,1.0006,.99973,.99978,1.00001,1.00057,.99989,.99967,.99964,.99967,.99977,.99999,.99977,1.00038,.99977,1.00001,.99973,1.00066,.99967,.99967,1.00041,.99998,.99999,.99977,1.00022,.99967,1.00001,.99977,1.00026,.99964,1.00031,1.00001,.99999,.99999,1,1.00023,1,1,.99999,1.00035,1.00001,.99999,.99973,.99977,.99999,1.00058,.99973,.99973,.99955,.9995,1.00026,1.00026,1.00032,.99989,1.00034,.99999,1.00026,1.00026,1.00026,.99973,.45998,.99973,1.00026,.99973,1.00001,.99999,.99982,.99994,.99996,1,1.00042,1.00044,1.00029,1.00023,.99973,.99973,1.00026,.99949,1.00002,.99973,1.0006,1.0006,1.0006,.99975,1.00026,1.00026,1.00032,.98685,.99973,1.00026,1,1,.99966,1.00044,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1,.99973,.99971,.99978,1,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00098,1,1,1,1.00049,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],Ha={lineHeight:1.35,lineGap:.2},Ja=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.0288,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,.99946,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.06311,.99973,1.00024,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,1.00041,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.89547,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00001,1,1.00054,.99977,1.00084,1.00007,.99973,1.00013,.99924,1.00001,1.00001,.99945,.91221,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00001,.99999,.99977,.99933,1.00022,1.00054,1.00001,1.00065,1.00026,1.00001,1.0001,1.00001,1.00052,1,1.0006,1.00001,.99945,.99897,.99968,.99924,1.00036,.99945,.99949,1,1.0006,.99897,.99918,.99968,.99911,.99924,1,.99962,1.01487,1,1.0005,.99973,1.00012,1.00043,1,.99995,.99994,1.00036,.99947,1.00019,1.00063,1.00025,.99924,1.00036,.99973,1.00036,1.00025,1.00001,1.00001,1.00027,1.0001,1.00068,1.00001,1.0006,1.0006,1,1.00008,.99957,.99972,.9994,.99954,.99975,1.00051,1.00001,1.00019,1.00001,1.0001,.99986,1.00001,1.00001,1.00038,.99954,.99954,.9994,1.00066,.99999,.99977,1.00022,1.00054,1.00001,.99977,1.00026,.99975,1.0001,1.00001,.99993,.9995,.99955,1.00016,.99978,.99974,1.00019,1.00022,.99955,1.00053,.99973,1.00089,1.00005,.99967,1.00048,.99973,1.00002,1.00034,.99973,.99973,.99964,1.00006,1.00066,.99947,.99973,.98894,.99973,1,.44898,1,.99946,1,1.00039,1.00082,.99991,.99991,.99985,1.00022,1.00023,1.00061,1.00006,.99966,.99973,.99973,.99973,1.00019,1.0008,1,.99924,.99924,.99924,.99983,1.00044,.99973,.99964,.98332,1,.99973,1,1,.99962,.99895,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,1.00423,.99925,.99999,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00049,1,1.00245,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,1.00003,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],Ya={lineHeight:1.35,lineGap:.2},va=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.04596,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,1.00019,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.02572,.99973,1.00005,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,.99999,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.84533,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99928,1,.99977,1.00013,1.00055,.99947,.99945,.99941,.99924,1.00001,1.00001,1.0004,.91621,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00005,.99999,.99977,1.00015,1.00022,.99977,1.00001,.99973,1.00026,1.00001,1.00019,1.00001,.99946,1,1.0006,1.00001,.99978,1.00045,.99973,.99924,1.00023,.99978,.99966,1,1.00065,1.00045,1.00019,.99973,.99973,.99924,1,1,.96499,1,1.00055,.99973,1.00008,1.00027,1,.9997,.99995,1.00023,.99933,1.00019,1.00015,1.00031,.99924,1.00023,.99973,1.00023,1.00031,1.00001,.99928,1.00029,1.00092,1.00035,1.00001,1.0006,1.0006,1,.99988,.99975,1,1.00082,.99561,.9996,1.00035,1.00001,.99962,1.00001,1.00092,.99964,1.00001,.99963,.99999,1.00035,1.00035,1.00082,.99962,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.9996,.99967,1.00001,1.00034,1.00074,1.00054,1.00053,1.00063,.99971,.99962,1.00035,.99975,.99977,.99973,1.00043,.99953,1.0007,.99915,.99973,1.00008,.99892,1.00073,1.00073,1.00114,.99915,1.00073,.99955,.99973,1.00092,.99973,1,.99998,1,1.0003,1,1.00043,1.00001,.99969,1.0003,1,1.00035,1.00001,.9995,1,1.00092,.99973,.99973,.99973,1.0007,.9995,1,.99924,1.0006,.99924,.99972,1.00062,.99973,1.00114,1.00073,1,.99955,1,1,1.00047,.99968,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,.99925,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],Ta={lineHeight:1.2,lineGap:.2},Ka=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,719,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,785,556,556,278,722,556,556,611,278,611,278,611,385,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,465,722,333,853,906,474,825,927,838,278,722,722,601,719,667,611,722,778,278,722,667,833,722,644,778,722,667,600,611,667,821,667,809,802,278,667,615,451,611,278,582,615,610,556,606,475,460,611,541,278,558,556,612,556,445,611,766,619,520,684,446,582,715,576,753,845,278,582,611,582,845,667,669,885,567,711,667,278,276,556,1094,1062,875,610,722,622,719,722,719,722,567,712,667,904,626,719,719,610,702,833,722,778,719,667,722,611,622,854,667,730,703,1005,1019,870,979,719,711,1031,719,556,618,615,417,635,556,709,497,615,615,500,635,740,604,611,604,611,556,490,556,875,556,615,581,833,844,729,854,615,552,854,583,556,556,611,417,552,556,278,281,278,969,906,611,500,615,556,604,778,611,487,447,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1094,556,885,489,1115,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333],qa=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],Oa=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,740,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,782,556,556,278,722,556,556,611,278,611,278,611,396,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,333,722,333,854,906,473,844,930,847,278,722,722,610,671,667,611,722,778,278,722,667,833,722,657,778,718,667,590,611,667,822,667,829,781,278,667,620,479,611,278,591,620,621,556,610,479,492,611,558,278,566,556,603,556,450,611,712,605,532,664,409,591,704,578,773,834,278,591,611,591,834,667,667,886,614,719,667,278,278,556,1094,1042,854,622,719,677,719,722,708,722,614,722,667,927,643,719,719,615,687,833,722,778,719,667,722,611,677,781,667,729,708,979,989,854,1e3,708,719,1042,729,556,619,604,534,618,556,736,510,611,611,507,622,740,604,611,611,611,556,889,556,885,556,646,583,889,935,707,854,594,552,865,589,556,556,611,469,563,556,278,278,278,969,906,611,507,619,556,611,778,611,575,467,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1104,556,885,516,1146,1e3,768,600,834,834,834,834,999,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333],Pa=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],Wa=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,625,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,733,444,500,222,667,500,500,556,222,556,222,556,281,556,400,556,222,722,556,722,556,722,556,615,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,354,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,789,846,389,794,865,775,222,667,667,570,671,667,611,722,778,278,667,667,833,722,648,778,725,667,600,611,667,837,667,831,761,278,667,570,439,555,222,550,570,571,500,556,439,463,555,542,222,500,492,548,500,447,556,670,573,486,603,374,550,652,546,728,779,222,550,556,550,779,667,667,843,544,708,667,278,278,500,1066,982,844,589,715,639,724,667,651,667,544,704,667,917,614,715,715,589,686,833,722,778,725,667,722,611,639,795,667,727,673,920,923,805,886,651,694,1022,682,556,562,522,493,553,556,688,465,556,556,472,564,686,550,556,556,556,500,833,500,835,500,572,518,830,851,621,736,526,492,752,534,556,556,556,378,496,500,222,222,222,910,828,556,472,565,500,556,778,556,492,339,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1083,1e3,768,600,834,834,834,834,1e3,500,998,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,584,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285],ja=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],Xa=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,615,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,735,444,500,222,667,500,500,556,222,556,222,556,292,556,334,556,222,722,556,722,556,722,556,604,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,375,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,784,838,384,774,855,752,222,667,667,551,668,667,611,722,778,278,667,668,833,722,650,778,722,667,618,611,667,798,667,835,748,278,667,578,446,556,222,547,578,575,500,557,446,441,556,556,222,500,500,576,500,448,556,690,569,482,617,395,547,648,525,713,781,222,547,556,547,781,667,667,865,542,719,667,278,278,500,1057,1010,854,583,722,635,719,667,656,667,542,677,667,923,604,719,719,583,656,833,722,778,719,667,722,611,635,760,667,740,667,917,938,792,885,656,719,1010,722,556,573,531,365,583,556,669,458,559,559,438,583,688,552,556,542,556,500,458,500,823,500,573,521,802,823,625,719,521,510,750,542,556,556,556,365,510,500,222,278,222,906,812,556,438,559,500,552,778,556,489,411,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1073,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285],Za=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],Va=[1.36898,1,1,.72706,.80479,.83734,.98894,.99793,.9897,.93884,.86209,.94292,.94292,1.16661,1.02058,.93582,.96694,.93582,1.19137,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.78076,.78076,1.02058,1.02058,1.02058,.72851,.78966,.90838,.83637,.82391,.96376,.80061,.86275,.8768,.95407,1.0258,.73901,.85022,.83655,1.0156,.95546,.92179,.87107,.92179,.82114,.8096,.89713,.94438,.95353,.94083,.91905,.90406,.9446,.94292,1.18777,.94292,1.02058,.89903,.90088,.94938,.97898,.81093,.97571,.94938,1.024,.9577,.95933,.98621,1.0474,.97455,.98981,.9672,.95933,.9446,.97898,.97407,.97646,.78036,1.10208,.95442,.95298,.97579,.9332,.94039,.938,.80687,1.01149,.80687,1.02058,.80479,.99793,.99793,.99793,.99793,1.01149,1.00872,.90088,.91882,1.0213,.8361,1.02058,.62295,.54324,.89022,1.08595,1,1,.90088,1,.97455,.93582,.90088,1,1.05686,.8361,.99642,.99642,.99642,.72851,.90838,.90838,.90838,.90838,.90838,.90838,.868,.82391,.80061,.80061,.80061,.80061,1.0258,1.0258,1.0258,1.0258,.97484,.95546,.92179,.92179,.92179,.92179,.92179,1.02058,.92179,.94438,.94438,.94438,.94438,.90406,.86958,.98225,.94938,.94938,.94938,.94938,.94938,.94938,.9031,.81093,.94938,.94938,.94938,.94938,.98621,.98621,.98621,.98621,.93969,.95933,.9446,.9446,.9446,.9446,.9446,1.08595,.9446,.95442,.95442,.95442,.95442,.94039,.97898,.94039,.90838,.94938,.90838,.94938,.90838,.94938,.82391,.81093,.82391,.81093,.82391,.81093,.82391,.81093,.96376,.84313,.97484,.97571,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.8768,.9577,.8768,.9577,.8768,.9577,1,1,.95407,.95933,.97069,.95933,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,.887,1.01591,.73901,1.0474,1,1,.97455,.83655,.98981,1,1,.83655,.73977,.83655,.73903,.84638,1.033,.95546,.95933,1,1,.95546,.95933,.8271,.95417,.95933,.92179,.9446,.92179,.9446,.92179,.9446,.936,.91964,.82114,.97646,1,1,.82114,.97646,.8096,.78036,.8096,.78036,1,1,.8096,.78036,1,1,.89713,.77452,.89713,1.10208,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94083,.97579,.90406,.94039,.90406,.9446,.938,.9446,.938,.9446,.938,1,.99793,.90838,.94938,.868,.9031,.92179,.9446,1,1,.89713,1.10208,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90989,.9358,.91945,.83181,.75261,.87992,.82976,.96034,.83689,.97268,1.0078,.90838,.83637,.8019,.90157,.80061,.9446,.95407,.92436,1.0258,.85022,.97153,1.0156,.95546,.89192,.92179,.92361,.87107,.96318,.89713,.93704,.95638,.91905,.91709,.92796,1.0258,.93704,.94836,1.0373,.95933,1.0078,.95871,.94836,.96174,.92601,.9498,.98607,.95776,.95933,1.05453,1.0078,.98275,.9314,.95617,.91701,1.05993,.9446,.78367,.9553,1,.86832,1.0128,.95871,.99394,.87548,.96361,.86774,1.0078,.95871,.9446,.95871,.86774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.94083,.97579,.94083,.97579,.94083,.97579,.90406,.94039,.96694,1,.89903,1,1,1,.93582,.93582,.93582,1,.908,.908,.918,.94219,.94219,.96544,1,1.285,1,1,.81079,.81079,1,1,.74854,1,1,1,1,.99793,1,1,1,.65,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.17173,1,.80535,.76169,1.02058,1.0732,1.05486,1,1,1.30692,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.16161,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],_a={lineHeight:1.2,lineGap:.2},za=[1.36898,1,1,.66227,.80779,.81625,.97276,.97276,.97733,.92222,.83266,.94292,.94292,1.16148,1.02058,.93582,.96694,.93582,1.17337,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.78076,.78076,1.02058,1.02058,1.02058,.71541,.76813,.85576,.80591,.80729,.94299,.77512,.83655,.86523,.92222,.98621,.71743,.81698,.79726,.98558,.92222,.90637,.83809,.90637,.80729,.76463,.86275,.90699,.91605,.9154,.85308,.85458,.90531,.94292,1.21296,.94292,1.02058,.89903,1.18616,.99613,.91677,.78216,.91677,.90083,.98796,.9135,.92168,.95381,.98981,.95298,.95381,.93459,.92168,.91513,.92004,.91677,.95077,.748,1.04502,.91677,.92061,.94236,.89544,.89364,.9,.80687,.8578,.80687,1.02058,.80779,.97276,.97276,.97276,.97276,.8578,.99973,1.18616,.91339,1.08074,.82891,1.02058,.55509,.71526,.89022,1.08595,1,1,1.18616,1,.96736,.93582,1.18616,1,1.04864,.82711,.99043,.99043,.99043,.71541,.85576,.85576,.85576,.85576,.85576,.85576,.845,.80729,.77512,.77512,.77512,.77512,.98621,.98621,.98621,.98621,.95961,.92222,.90637,.90637,.90637,.90637,.90637,1.02058,.90251,.90699,.90699,.90699,.90699,.85458,.83659,.94951,.99613,.99613,.99613,.99613,.99613,.99613,.85811,.78216,.90083,.90083,.90083,.90083,.95381,.95381,.95381,.95381,.9135,.92168,.91513,.91513,.91513,.91513,.91513,1.08595,.91677,.91677,.91677,.91677,.91677,.89364,.92332,.89364,.85576,.99613,.85576,.99613,.85576,.99613,.80729,.78216,.80729,.78216,.80729,.78216,.80729,.78216,.94299,.76783,.95961,.91677,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.86523,.9135,.86523,.9135,.86523,.9135,1,1,.92222,.92168,.92222,.92168,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.86036,.97096,.71743,.98981,1,1,.95298,.79726,.95381,1,1,.79726,.6894,.79726,.74321,.81691,1.0006,.92222,.92168,1,1,.92222,.92168,.79464,.92098,.92168,.90637,.91513,.90637,.91513,.90637,.91513,.909,.87514,.80729,.95077,1,1,.80729,.95077,.76463,.748,.76463,.748,1,1,.76463,.748,1,1,.86275,.72651,.86275,1.04502,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.9154,.94236,.85458,.89364,.85458,.90531,.9,.90531,.9,.90531,.9,1,.97276,.85576,.99613,.845,.85811,.90251,.91677,1,1,.86275,1.04502,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.00899,1.30628,.85576,.80178,.66862,.7927,.69323,.88127,.72459,.89711,.95381,.85576,.80591,.7805,.94729,.77512,.90531,.92222,.90637,.98621,.81698,.92655,.98558,.92222,.85359,.90637,.90976,.83809,.94523,.86275,.83509,.93157,.85308,.83392,.92346,.98621,.83509,.92886,.91324,.92168,.95381,.90646,.92886,.90557,.86847,.90276,.91324,.86842,.92168,.99531,.95381,.9224,.85408,.92699,.86847,1.0051,.91513,.80487,.93481,1,.88159,1.05214,.90646,.97355,.81539,.89398,.85923,.95381,.90646,.91513,.90646,.85923,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9154,.94236,.9154,.94236,.9154,.94236,.85458,.89364,.96694,1,.89903,1,1,1,.91782,.91782,.91782,1,.896,.896,.896,.9332,.9332,.95973,1,1.26,1,1,.80479,.80178,1,1,.85633,1,1,1,1,.97276,1,1,1,.698,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.14542,1,.79199,.78694,1.02058,1.03493,1.05486,1,1,1.23026,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.20006,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],$a={lineHeight:1.2,lineGap:.2},Ar=[1.36898,1,1,.65507,.84943,.85639,.88465,.88465,.86936,.88307,.86948,.85283,.85283,1.06383,1.02058,.75945,.9219,.75945,1.17337,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.75945,.75945,1.02058,1.02058,1.02058,.69046,.70926,.85158,.77812,.76852,.89591,.70466,.76125,.80094,.86822,.83864,.728,.77212,.79475,.93637,.87514,.8588,.76013,.8588,.72421,.69866,.77598,.85991,.80811,.87832,.78112,.77512,.8562,1.0222,1.18417,1.0222,1.27014,.89903,1.15012,.93859,.94399,.846,.94399,.81453,1.0186,.94219,.96017,1.03075,1.02175,.912,1.03075,.96998,.96017,.93859,.94399,.94399,.95493,.746,1.12658,.94578,.91,.979,.882,.882,.83,.85034,.83537,.85034,1.02058,.70869,.88465,.88465,.88465,.88465,.83537,.90083,1.15012,.9161,.94565,.73541,1.02058,.53609,.69353,.79519,1.08595,1,1,1.15012,1,.91974,.75945,1.15012,1,.9446,.73361,.9005,.9005,.9005,.62864,.85158,.85158,.85158,.85158,.85158,.85158,.773,.76852,.70466,.70466,.70466,.70466,.83864,.83864,.83864,.83864,.90561,.87514,.8588,.8588,.8588,.8588,.8588,1.02058,.85751,.85991,.85991,.85991,.85991,.77512,.76013,.88075,.93859,.93859,.93859,.93859,.93859,.93859,.8075,.846,.81453,.81453,.81453,.81453,.82424,.82424,.82424,.82424,.9278,.96017,.93859,.93859,.93859,.93859,.93859,1.08595,.8562,.94578,.94578,.94578,.94578,.882,.94578,.882,.85158,.93859,.85158,.93859,.85158,.93859,.76852,.846,.76852,.846,.76852,.846,.76852,.846,.89591,.8544,.90561,.94399,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.80094,.94219,.80094,.94219,.80094,.94219,1,1,.86822,.96017,.86822,.96017,.83864,.82424,.83864,.82424,.83864,.82424,.83864,1.03075,.83864,.82424,.81402,1.02738,.728,1.02175,1,1,.912,.79475,1.03075,1,1,.79475,.83911,.79475,.66266,.80553,1.06676,.87514,.96017,1,1,.87514,.96017,.86865,.87396,.96017,.8588,.93859,.8588,.93859,.8588,.93859,.867,.84759,.72421,.95493,1,1,.72421,.95493,.69866,.746,.69866,.746,1,1,.69866,.746,1,1,.77598,.88417,.77598,1.12658,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.87832,.979,.77512,.882,.77512,.8562,.83,.8562,.83,.8562,.83,1,.88465,.85158,.93859,.773,.8075,.85751,.8562,1,1,.77598,1.12658,1.15012,1.15012,1.15012,1.15012,1.15012,1.15313,1.15012,1.15012,1.15012,1.08106,1.03901,.85158,.77025,.62264,.7646,.65351,.86026,.69461,.89947,1.03075,.85158,.77812,.76449,.88836,.70466,.8562,.86822,.8588,.83864,.77212,.85308,.93637,.87514,.82352,.8588,.85701,.76013,.89058,.77598,.8156,.82565,.78112,.77899,.89386,.83864,.8156,.9486,.92388,.96186,1.03075,.91123,.9486,.93298,.878,.93942,.92388,.84596,.96186,.95119,1.03075,.922,.88787,.95829,.88,.93559,.93859,.78815,.93758,1,.89217,1.03737,.91123,.93969,.77487,.85769,.86799,1.03075,.91123,.93859,.91123,.86799,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87832,.979,.87832,.979,.87832,.979,.77512,.882,.9219,1,.89903,1,1,1,.87321,.87321,.87321,1,1.027,1.027,1.027,.86847,.86847,.79121,1,1.124,1,1,.73572,.73572,1,1,.85034,1,1,1,1,.88465,1,1,1,.669,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.04828,1,.74948,.75187,1.02058,.98391,1.02119,1,1,1.06233,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05233,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],er={lineHeight:1.2,lineGap:.2},tr=[1.36898,1,1,.76305,.82784,.94935,.89364,.92241,.89073,.90706,.98472,.85283,.85283,1.0664,1.02058,.74505,.9219,.74505,1.23456,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.74505,.74505,1.02058,1.02058,1.02058,.73002,.72601,.91755,.8126,.80314,.92222,.73764,.79726,.83051,.90284,.86023,.74,.8126,.84869,.96518,.91115,.8858,.79761,.8858,.74498,.73914,.81363,.89591,.83659,.89633,.85608,.8111,.90531,1.0222,1.22736,1.0222,1.27014,.89903,.90088,.86667,1.0231,.896,1.01411,.90083,1.05099,1.00512,.99793,1.05326,1.09377,.938,1.06226,1.00119,.99793,.98714,1.0231,1.01231,.98196,.792,1.19137,.99074,.962,1.01915,.926,.942,.856,.85034,.92006,.85034,1.02058,.69067,.92241,.92241,.92241,.92241,.92006,.9332,.90088,.91882,.93484,.75339,1.02058,.56866,.54324,.79519,1.08595,1,1,.90088,1,.95325,.74505,.90088,1,.97198,.75339,.91009,.91009,.91009,.66466,.91755,.91755,.91755,.91755,.91755,.91755,.788,.80314,.73764,.73764,.73764,.73764,.86023,.86023,.86023,.86023,.92915,.91115,.8858,.8858,.8858,.8858,.8858,1.02058,.8858,.89591,.89591,.89591,.89591,.8111,.79611,.89713,.86667,.86667,.86667,.86667,.86667,.86667,.86936,.896,.90083,.90083,.90083,.90083,.84224,.84224,.84224,.84224,.97276,.99793,.98714,.98714,.98714,.98714,.98714,1.08595,.89876,.99074,.99074,.99074,.99074,.942,1.0231,.942,.91755,.86667,.91755,.86667,.91755,.86667,.80314,.896,.80314,.896,.80314,.896,.80314,.896,.92222,.93372,.92915,1.01411,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.83051,1.00512,.83051,1.00512,.83051,1.00512,1,1,.90284,.99793,.90976,.99793,.86023,.84224,.86023,.84224,.86023,.84224,.86023,1.05326,.86023,.84224,.82873,1.07469,.74,1.09377,1,1,.938,.84869,1.06226,1,1,.84869,.83704,.84869,.81441,.85588,1.08927,.91115,.99793,1,1,.91115,.99793,.91887,.90991,.99793,.8858,.98714,.8858,.98714,.8858,.98714,.894,.91434,.74498,.98196,1,1,.74498,.98196,.73914,.792,.73914,.792,1,1,.73914,.792,1,1,.81363,.904,.81363,1.19137,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89633,1.01915,.8111,.942,.8111,.90531,.856,.90531,.856,.90531,.856,1,.92241,.91755,.86667,.788,.86936,.8858,.89876,1,1,.81363,1.19137,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90388,1.03901,.92138,.78105,.7154,.86169,.80513,.94007,.82528,.98612,1.06226,.91755,.8126,.81884,.92819,.73764,.90531,.90284,.8858,.86023,.8126,.91172,.96518,.91115,.83089,.8858,.87791,.79761,.89297,.81363,.88157,.89992,.85608,.81992,.94307,.86023,.88157,.95308,.98699,.99793,1.06226,.95817,.95308,.97358,.928,.98088,.98699,.92761,.99793,.96017,1.06226,.986,.944,.95978,.938,.96705,.98714,.80442,.98972,1,.89762,1.04552,.95817,.99007,.87064,.91879,.88888,1.06226,.95817,.98714,.95817,.88888,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89633,1.01915,.89633,1.01915,.89633,1.01915,.8111,.942,.9219,1,.89903,1,1,1,.93173,.93173,.93173,1,1.06304,1.06304,1.06904,.89903,.89903,.80549,1,1.156,1,1,.76575,.76575,1,1,.72458,1,1,1,1,.92241,1,1,1,.619,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.07257,1,.74705,.71119,1.02058,1.024,1.02119,1,1,1.1536,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05638,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],ir={lineHeight:1.2,lineGap:.2},ar=[1.76738,1,1,.99297,.9824,1.04016,1.06497,1.03424,.97529,1.17647,1.23203,1.1085,1.1085,1.16939,1.2107,.9754,1.21408,.9754,1.59578,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,.81378,.81378,1.2107,1.2107,1.2107,.71703,.97847,.97363,.88776,.8641,1.02096,.79795,.85132,.914,1.06085,1.1406,.8007,.89858,.83693,1.14889,1.09398,.97489,.92094,.97489,.90399,.84041,.95923,1.00135,1,1.06467,.98243,.90996,.99361,1.1085,1.56942,1.1085,1.2107,.74627,.94282,.96752,1.01519,.86304,1.01359,.97278,1.15103,1.01359,.98561,1.02285,1.02285,1.00527,1.02285,1.0302,.99041,1.0008,1.01519,1.01359,1.02258,.79104,1.16862,.99041,.97454,1.02511,.99298,.96752,.95801,.94856,1.16579,.94856,1.2107,.9824,1.03424,1.03424,1,1.03424,1.16579,.8727,1.3871,1.18622,1.10818,1.04478,1.2107,1.18622,.75155,.94994,1.28826,1.21408,1.21408,.91056,1,.91572,.9754,.64663,1.18328,1.24866,1.04478,1.14169,1.15749,1.17389,.71703,.97363,.97363,.97363,.97363,.97363,.97363,.93506,.8641,.79795,.79795,.79795,.79795,1.1406,1.1406,1.1406,1.1406,1.02096,1.09398,.97426,.97426,.97426,.97426,.97426,1.2107,.97489,1.00135,1.00135,1.00135,1.00135,.90996,.92094,1.02798,.96752,.96752,.96752,.96752,.96752,.96752,.93136,.86304,.97278,.97278,.97278,.97278,1.02285,1.02285,1.02285,1.02285,.97122,.99041,1,1,1,1,1,1.28826,1.0008,.99041,.99041,.99041,.99041,.96752,1.01519,.96752,.97363,.96752,.97363,.96752,.97363,.96752,.8641,.86304,.8641,.86304,.8641,.86304,.8641,.86304,1.02096,1.03057,1.02096,1.03517,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.914,1.01359,.914,1.01359,.914,1.01359,1,1,1.06085,.98561,1.06085,1.00879,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,.97138,1.08692,.8007,1.02285,1,1,1.00527,.83693,1.02285,1,1,.83693,.9455,.83693,.90418,.83693,1.13005,1.09398,.99041,1,1,1.09398,.99041,.96692,1.09251,.99041,.97489,1.0008,.97489,1.0008,.97489,1.0008,.93994,.97931,.90399,1.02258,1,1,.90399,1.02258,.84041,.79104,.84041,.79104,.84041,.79104,.84041,.79104,1,1,.95923,1.07034,.95923,1.16862,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.06467,1.02511,.90996,.96752,.90996,.99361,.95801,.99361,.95801,.99361,.95801,1.07733,1.03424,.97363,.96752,.93506,.93136,.97489,1.0008,1,1,.95923,1.16862,1.15103,1.15103,1.01173,1.03959,.75953,.81378,.79912,1.15103,1.21994,.95161,.87815,1.01149,.81525,.7676,.98167,1.01134,1.02546,.84097,1.03089,1.18102,.97363,.88776,.85134,.97826,.79795,.99361,1.06085,.97489,1.1406,.89858,1.0388,1.14889,1.09398,.86039,.97489,1.0595,.92094,.94793,.95923,.90996,.99346,.98243,1.02112,.95493,1.1406,.90996,1.03574,1.02597,1.0008,1.18102,1.06628,1.03574,1.0192,1.01932,1.00886,.97531,1.0106,1.0008,1.13189,1.18102,1.02277,.98683,1.0016,.99561,1.07237,1.0008,.90434,.99921,.93803,.8965,1.23085,1.06628,1.04983,.96268,1.0499,.98439,1.18102,1.06628,1.0008,1.06628,.98439,.79795,1,1,1,1,1,1,1,1,1,1,1,1,1.09466,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.97278,1,1,1,1,1,1,1,1,1,1,1,1,1.02065,1,1,1,1,1,1,1.06467,1.02511,1.06467,1.02511,1.06467,1.02511,.90996,.96752,1,1.21408,.89903,1,1,.75155,1.04394,1.04394,1.04394,1.04394,.98633,.98633,.98633,.73047,.73047,1.20642,.91211,1.25635,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.12454,.93503,1.03424,1.19687,1.03424,1,1,1,.771,1,1,1.15749,1.15749,1.15749,1.10948,.86279,.94434,.86279,.94434,.86182,1,1,1.16897,1,.96085,.90137,1.2107,1.18416,1.13973,.69825,.9716,2.10339,1.29004,1.29004,1.21172,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18874,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.09193,1.09193,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],rr={lineHeight:1.33008,lineGap:0},sr=[1.76738,1,1,.98946,1.03959,1.04016,1.02809,1.036,.97639,1.10953,1.23203,1.11144,1.11144,1.16939,1.21237,.9754,1.21261,.9754,1.59754,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,.81378,.81378,1.21237,1.21237,1.21237,.73541,.97847,.97363,.89723,.87897,1.0426,.79429,.85292,.91149,1.05815,1.1406,.79631,.90128,.83853,1.04396,1.10615,.97552,.94436,.97552,.88641,.80527,.96083,1.00135,1,1.06777,.9817,.91142,.99361,1.11144,1.57293,1.11144,1.21237,.74627,1.31818,1.06585,.97042,.83055,.97042,.93503,1.1261,.97042,.97922,1.14236,.94552,1.01054,1.14236,1.02471,.97922,.94165,.97042,.97042,1.0276,.78929,1.1261,.97922,.95874,1.02197,.98507,.96752,.97168,.95107,1.16579,.95107,1.21237,1.03959,1.036,1.036,1,1.036,1.16579,.87357,1.31818,1.18754,1.26781,1.05356,1.21237,1.18622,.79487,.94994,1.29004,1.24047,1.24047,1.31818,1,.91484,.9754,1.31818,1.1349,1.24866,1.05356,1.13934,1.15574,1.17389,.73541,.97363,.97363,.97363,.97363,.97363,.97363,.94385,.87897,.79429,.79429,.79429,.79429,1.1406,1.1406,1.1406,1.1406,1.0426,1.10615,.97552,.97552,.97552,.97552,.97552,1.21237,.97552,1.00135,1.00135,1.00135,1.00135,.91142,.94436,.98721,1.06585,1.06585,1.06585,1.06585,1.06585,1.06585,.96705,.83055,.93503,.93503,.93503,.93503,1.14236,1.14236,1.14236,1.14236,.93125,.97922,.94165,.94165,.94165,.94165,.94165,1.29004,.94165,.97922,.97922,.97922,.97922,.96752,.97042,.96752,.97363,1.06585,.97363,1.06585,.97363,1.06585,.87897,.83055,.87897,.83055,.87897,.83055,.87897,.83055,1.0426,1.0033,1.0426,.97042,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.91149,.97042,.91149,.97042,.91149,.97042,1,1,1.05815,.97922,1.05815,.97922,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,.97441,1.04302,.79631,1.01582,1,1,1.01054,.83853,1.14236,1,1,.83853,1.09125,.83853,.90418,.83853,1.19508,1.10615,.97922,1,1,1.10615,.97922,1.01034,1.10466,.97922,.97552,.94165,.97552,.94165,.97552,.94165,.91602,.91981,.88641,1.0276,1,1,.88641,1.0276,.80527,.78929,.80527,.78929,.80527,.78929,.80527,.78929,1,1,.96083,1.05403,.95923,1.16862,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.06777,1.02197,.91142,.96752,.91142,.99361,.97168,.99361,.97168,.99361,.97168,1.23199,1.036,.97363,1.06585,.94385,.96705,.97552,.94165,1,1,.96083,1.1261,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,.95161,1.27126,1.00811,.83284,.77702,.99137,.95253,1.0347,.86142,1.07205,1.14236,.97363,.89723,.86869,1.09818,.79429,.99361,1.05815,.97552,1.1406,.90128,1.06662,1.04396,1.10615,.84918,.97552,1.04694,.94436,.98015,.96083,.91142,1.00356,.9817,1.01945,.98999,1.1406,.91142,1.04961,.9898,1.00639,1.14236,1.07514,1.04961,.99607,1.02897,1.008,.9898,.95134,1.00639,1.11121,1.14236,1.00518,.97981,1.02186,1,1.08578,.94165,.99314,.98387,.93028,.93377,1.35125,1.07514,1.10687,.93491,1.04232,1.00351,1.14236,1.07514,.94165,1.07514,1.00351,.79429,1,1,1,1,1,1,1,1,1,1,1,1,1.09097,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.93503,1,1,1,1,1,1,1,1,1,1,1,1,.96609,1,1,1,1,1,1,1.06777,1.02197,1.06777,1.02197,1.06777,1.02197,.91142,.96752,1,1.21261,.89903,1,1,.75155,1.04745,1.04745,1.04745,1.04394,.98633,.98633,.98633,.72959,.72959,1.20502,.91406,1.26514,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.09125,.93327,1.03336,1.16541,1.036,1,1,1,.771,1,1,1.15574,1.15574,1.15574,1.15574,.86364,.94434,.86279,.94434,.86224,1,1,1.16798,1,.96085,.90068,1.21237,1.18416,1.13904,.69825,.9716,2.10339,1.29004,1.29004,1.21339,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18775,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.13269,1.13269,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],nr={lineHeight:1.33008,lineGap:0},or=[1.76738,1,1,.98946,1.14763,1.05365,1.06234,.96927,.92586,1.15373,1.18414,.91349,.91349,1.07403,1.17308,.78383,1.20088,.78383,1.42531,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78383,.78383,1.17308,1.17308,1.17308,.77349,.94565,.94729,.85944,.88506,.9858,.74817,.80016,.88449,.98039,.95782,.69238,.89898,.83231,.98183,1.03989,.96924,.86237,.96924,.80595,.74524,.86091,.95402,.94143,.98448,.8858,.83089,.93285,1.0949,1.39016,1.0949,1.45994,.74627,1.04839,.97454,.97454,.87207,.97454,.87533,1.06151,.97454,1.00176,1.16484,1.08132,.98047,1.16484,1.02989,1.01054,.96225,.97454,.97454,1.06598,.79004,1.16344,1.00351,.94629,.9973,.91016,.96777,.9043,.91082,.92481,.91082,1.17308,.95748,.96927,.96927,1,.96927,.92481,.80597,1.04839,1.23393,1.1781,.9245,1.17308,1.20808,.63218,.94261,1.24822,1.09971,1.09971,1.04839,1,.85273,.78032,1.04839,1.09971,1.22326,.9245,1.09836,1.13525,1.15222,.70424,.94729,.94729,.94729,.94729,.94729,.94729,.85498,.88506,.74817,.74817,.74817,.74817,.95782,.95782,.95782,.95782,.9858,1.03989,.96924,.96924,.96924,.96924,.96924,1.17308,.96924,.95402,.95402,.95402,.95402,.83089,.86237,.88409,.97454,.97454,.97454,.97454,.97454,.97454,.92916,.87207,.87533,.87533,.87533,.87533,.93146,.93146,.93146,.93146,.93854,1.01054,.96225,.96225,.96225,.96225,.96225,1.24822,.8761,1.00351,1.00351,1.00351,1.00351,.96777,.97454,.96777,.94729,.97454,.94729,.97454,.94729,.97454,.88506,.87207,.88506,.87207,.88506,.87207,.88506,.87207,.9858,.95391,.9858,.97454,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.88449,.97454,.88449,.97454,.88449,.97454,1,1,.98039,1.00176,.98039,1.00176,.95782,.93146,.95782,.93146,.95782,.93146,.95782,1.16484,.95782,.93146,.84421,1.12761,.69238,1.08132,1,1,.98047,.83231,1.16484,1,1,.84723,1.04861,.84723,.78755,.83231,1.23736,1.03989,1.01054,1,1,1.03989,1.01054,.9857,1.03849,1.01054,.96924,.96225,.96924,.96225,.96924,.96225,.92383,.90171,.80595,1.06598,1,1,.80595,1.06598,.74524,.79004,.74524,.79004,.74524,.79004,.74524,.79004,1,1,.86091,1.02759,.85771,1.16344,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.98448,.9973,.83089,.96777,.83089,.93285,.9043,.93285,.9043,.93285,.9043,1.31868,.96927,.94729,.97454,.85498,.92916,.96924,.8761,1,1,.86091,1.16344,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,.81965,.81965,.94729,.78032,.71022,.90883,.84171,.99877,.77596,1.05734,1.2,.94729,.85944,.82791,.9607,.74817,.93285,.98039,.96924,.95782,.89898,.98316,.98183,1.03989,.78614,.96924,.97642,.86237,.86075,.86091,.83089,.90082,.8858,.97296,1.01284,.95782,.83089,1.0976,1.04,1.03342,1.2,1.0675,1.0976,.98205,1.03809,1.05097,1.04,.95364,1.03342,1.05401,1.2,1.02148,1.0119,1.04724,1.0127,1.02732,.96225,.8965,.97783,.93574,.94818,1.30679,1.0675,1.11826,.99821,1.0557,1.0326,1.2,1.0675,.96225,1.0675,1.0326,.74817,1,1,1,1,1,1,1,1,1,1,1,1,1.03754,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87533,1,1,1,1,1,1,1,1,1,1,1,1,.98705,1,1,1,1,1,1,.98448,.9973,.98448,.9973,.98448,.9973,.83089,.96777,1,1.20088,.89903,1,1,.75155,.94945,.94945,.94945,.94945,1.12317,1.12317,1.12317,.67603,.67603,1.15621,.73584,1.21191,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87709,.96927,1.01473,.96927,1,1,1,.77295,1,1,1.09836,1.09836,1.09836,1.01522,.86321,.94434,.8649,.94434,.86182,1,1,1.083,1,.91578,.86438,1.17308,1.18416,1.14589,.69825,.97622,1.96791,1.24822,1.24822,1.17308,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.17984,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10742,1.10742,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],gr={lineHeight:1.33008,lineGap:0},Ir=[1.76738,1,1,.98594,1.02285,1.10454,1.06234,.96927,.92037,1.19985,1.2046,.90616,.90616,1.07152,1.1714,.78032,1.20088,.78032,1.40246,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78032,.78032,1.1714,1.1714,1.1714,.80597,.94084,.96706,.85944,.85734,.97093,.75842,.79936,.88198,.9831,.95782,.71387,.86969,.84636,1.07796,1.03584,.96924,.83968,.96924,.82826,.79649,.85771,.95132,.93119,.98965,.88433,.8287,.93365,1.08612,1.3638,1.08612,1.45786,.74627,.80499,.91484,1.05707,.92383,1.05882,.9403,1.12654,1.05882,1.01756,1.09011,1.09011,.99414,1.09011,1.034,1.01756,1.05356,1.05707,1.05882,1.04399,.84863,1.21968,1.01756,.95801,1.00068,.91797,.96777,.9043,.90351,.92105,.90351,1.1714,.85337,.96927,.96927,.99912,.96927,.92105,.80597,1.2434,1.20808,1.05937,.90957,1.1714,1.20808,.75155,.94261,1.24644,1.09971,1.09971,.84751,1,.85273,.78032,.61584,1.05425,1.17914,.90957,1.08665,1.11593,1.14169,.73381,.96706,.96706,.96706,.96706,.96706,.96706,.86035,.85734,.75842,.75842,.75842,.75842,.95782,.95782,.95782,.95782,.97093,1.03584,.96924,.96924,.96924,.96924,.96924,1.1714,.96924,.95132,.95132,.95132,.95132,.8287,.83968,.89049,.91484,.91484,.91484,.91484,.91484,.91484,.93575,.92383,.9403,.9403,.9403,.9403,.8717,.8717,.8717,.8717,1.00527,1.01756,1.05356,1.05356,1.05356,1.05356,1.05356,1.24644,.95923,1.01756,1.01756,1.01756,1.01756,.96777,1.05707,.96777,.96706,.91484,.96706,.91484,.96706,.91484,.85734,.92383,.85734,.92383,.85734,.92383,.85734,.92383,.97093,1.0969,.97093,1.05882,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.88198,1.05882,.88198,1.05882,.88198,1.05882,1,1,.9831,1.01756,.9831,1.01756,.95782,.8717,.95782,.8717,.95782,.8717,.95782,1.09011,.95782,.8717,.84784,1.11551,.71387,1.09011,1,1,.99414,.84636,1.09011,1,1,.84636,1.0536,.84636,.94298,.84636,1.23297,1.03584,1.01756,1,1,1.03584,1.01756,1.00323,1.03444,1.01756,.96924,1.05356,.96924,1.05356,.96924,1.05356,.93066,.98293,.82826,1.04399,1,1,.82826,1.04399,.79649,.84863,.79649,.84863,.79649,.84863,.79649,.84863,1,1,.85771,1.17318,.85771,1.21968,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.98965,1.00068,.8287,.96777,.8287,.93365,.9043,.93365,.9043,.93365,.9043,1.08571,.96927,.96706,.91484,.86035,.93575,.96924,.95923,1,1,.85771,1.21968,1.11437,1.11437,.93109,.91202,.60411,.84164,.55572,1.01173,.97361,.81818,.81818,.96635,.78032,.72727,.92366,.98601,1.03405,.77968,1.09799,1.2,.96706,.85944,.85638,.96491,.75842,.93365,.9831,.96924,.95782,.86969,.94152,1.07796,1.03584,.78437,.96924,.98715,.83968,.83491,.85771,.8287,.94492,.88433,.9287,1.0098,.95782,.8287,1.0625,.98248,1.03424,1.2,1.01071,1.0625,.95246,1.03809,1.04912,.98248,1.00221,1.03424,1.05443,1.2,1.04785,.99609,1.00169,1.05176,.99346,1.05356,.9087,1.03004,.95542,.93117,1.23362,1.01071,1.07831,1.02512,1.05205,1.03502,1.2,1.01071,1.05356,1.01071,1.03502,.75842,1,1,1,1,1,1,1,1,1,1,1,1,1.03719,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9403,1,1,1,1,1,1,1,1,1,1,1,1,1.04021,1,1,1,1,1,1,.98965,1.00068,.98965,1.00068,.98965,1.00068,.8287,.96777,1,1.20088,.89903,1,1,.75155,1.03077,1.03077,1.03077,1.03077,1.13196,1.13196,1.13196,.67428,.67428,1.16039,.73291,1.20996,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87796,.96927,1.01518,.96927,1,1,1,.77295,1,1,1.10539,1.10539,1.11358,1.06967,.86279,.94434,.86279,.94434,.86182,1,1,1.083,1,.91578,.86507,1.1714,1.18416,1.14589,.69825,.97622,1.9697,1.24822,1.24822,1.17238,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18083,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10938,1.10938,1,1,1,1.05425,1.09971,1.09971,1.09971,1,1,1,1,1,1,1,1,1,1,1],cr={lineHeight:1.33008,lineGap:0},Cr=getLookupTableFactory((function(e){e["MyriadPro-Regular"]=e["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:tr,baseWidths:Xa,baseMapping:Za,metrics:ir};e["MyriadPro-Bold"]=e["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:Va,baseWidths:Ka,baseMapping:qa,metrics:_a};e["MyriadPro-It"]=e["MyriadPro-Italic"]=e["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:Ar,baseWidths:Wa,baseMapping:ja,metrics:er};e["MyriadPro-BoldIt"]=e["MyriadPro-BoldItalic"]=e["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:za,baseWidths:Oa,baseMapping:Pa,metrics:$a};e.ArialMT=e.Arial=e["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:Xa,baseMapping:Za};e["Arial-BoldMT"]=e["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:Ka,baseMapping:qa};e["Arial-ItalicMT"]=e["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:Wa,baseMapping:ja};e["Arial-BoldItalicMT"]=e["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:Oa,baseMapping:Pa};e["Calibri-Regular"]={name:"LiberationSans-Regular",factors:Ga,baseWidths:Xa,baseMapping:Za,metrics:xa};e["Calibri-Bold"]={name:"LiberationSans-Bold",factors:Da,baseWidths:Ka,baseMapping:qa,metrics:Fa};e["Calibri-Italic"]={name:"LiberationSans-Italic",factors:Ra,baseWidths:Wa,baseMapping:ja,metrics:Na};e["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:Sa,baseWidths:Oa,baseMapping:Pa,metrics:ka};e["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:Ir,baseWidths:Xa,baseMapping:Za,metrics:cr};e["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:ar,baseWidths:Ka,baseMapping:qa,metrics:rr};e["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:or,baseWidths:Wa,baseMapping:ja,metrics:gr};e["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:sr,baseWidths:Oa,baseMapping:Pa,metrics:nr};e["Helvetica-Regular"]=e.Helvetica={name:"LiberationSans-Regular",factors:va,baseWidths:Xa,baseMapping:Za,metrics:Ta};e["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:Ua,baseWidths:Ka,baseMapping:qa,metrics:Ma};e["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:Ja,baseWidths:Wa,baseMapping:ja,metrics:Ya};e["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:La,baseWidths:Oa,baseMapping:Pa,metrics:Ha}}));function getXfaFontName(e){const t=normalizeFontName(e);return Cr()[t]}function getXfaFontDict(e){const t=function getXfaFontWidths(e){const t=getXfaFontName(e);if(!t)return null;const{baseWidths:i,baseMapping:a,factors:r}=t,s=r?i.map(((e,t)=>e*r[t])):i;let n,o=-2;const g=[];for(const[e,t]of a.map(((e,t)=>[e,t])).sort((([e],[t])=>e-t)))if(-1!==e)if(e===o+1){n.push(s[t]);o+=1}else{o=e;n=[s[t]];g.push(e,n)}return g}(e),i=new Dict(null);i.set("BaseFont",Name.get(e));i.set("Type",Name.get("Font"));i.set("Subtype",Name.get("CIDFontType2"));i.set("Encoding",Name.get("Identity-H"));i.set("CIDToGIDMap",Name.get("Identity"));i.set("W",t);i.set("FirstChar",t[0]);i.set("LastChar",t.at(-2)+t.at(-1).length-1);const a=new Dict(null);i.set("FontDescriptor",a);const r=new Dict(null);r.set("Ordering","Identity");r.set("Registry","Adobe");r.set("Supplement",0);i.set("CIDSystemInfo",r);return i}class PostScriptParser{constructor(e){this.lexer=e;this.operators=[];this.token=null;this.prev=null}nextToken(){this.prev=this.token;this.token=this.lexer.getToken()}accept(e){if(this.token.type===e){this.nextToken();return!0}return!1}expect(e){if(this.accept(e))return!0;throw new FormatError(`Unexpected symbol: found ${this.token.type} expected ${e}.`)}parse(){this.nextToken();this.expect(hr.LBRACE);this.parseBlock();this.expect(hr.RBRACE);return this.operators}parseBlock(){for(;;)if(this.accept(hr.NUMBER))this.operators.push(this.prev.value);else if(this.accept(hr.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(hr.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(hr.RBRACE);if(this.accept(hr.IF)){this.operators[e]=this.operators.length;this.operators[e+1]="jz"}else{if(!this.accept(hr.LBRACE))throw new FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const i=this.operators.length;this.parseBlock();this.expect(hr.RBRACE);this.expect(hr.IFELSE);this.operators[t]=this.operators.length;this.operators[t+1]="j";this.operators[e]=i;this.operators[e+1]="jz"}}}}const hr={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class PostScriptToken{static get opCache(){return shadow(this,"opCache",Object.create(null))}constructor(e,t){this.type=e;this.value=t}static getOperator(e){return PostScriptToken.opCache[e]||=new PostScriptToken(hr.OPERATOR,e)}static get LBRACE(){return shadow(this,"LBRACE",new PostScriptToken(hr.LBRACE,"{"))}static get RBRACE(){return shadow(this,"RBRACE",new PostScriptToken(hr.RBRACE,"}"))}static get IF(){return shadow(this,"IF",new PostScriptToken(hr.IF,"IF"))}static get IFELSE(){return shadow(this,"IFELSE",new PostScriptToken(hr.IFELSE,"IFELSE"))}}class PostScriptLexer{constructor(e){this.stream=e;this.nextChar();this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return yt;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!isWhiteSpace(t))break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new PostScriptToken(hr.NUMBER,this.getNumber());case 123:this.nextChar();return PostScriptToken.LBRACE;case 125:this.nextChar();return PostScriptToken.RBRACE}const i=this.strBuf;i.length=0;i[0]=String.fromCharCode(t);for(;(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)i.push(String.fromCharCode(t));const a=i.join("");switch(a.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(a)}}getNumber(){let e=this.currentChar;const t=this.strBuf;t.length=0;t[0]=String.fromCharCode(e);for(;(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));const i=parseFloat(t.join(""));if(isNaN(i))throw new FormatError(`Invalid floating point number: ${i}`);return i}}class BaseLocalCache{constructor(e){this.constructor===BaseLocalCache&&unreachable("Cannot initialize BaseLocalCache.");this._onlyRefs=!0===e?.onlyRefs;if(!this._onlyRefs){this._nameRefMap=new Map;this._imageMap=new Map}this._imageCache=new RefSetCache}getByName(e){this._onlyRefs&&unreachable("Should not call `getByName` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,i){unreachable("Abstract method `set` called.")}}class LocalImageCache extends BaseLocalCache{set(e,t=null,i){if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,i)}else this._imageMap.has(e)||this._imageMap.set(e,i)}}class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,i){if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t);this._imageCache.put(t,i)}else this._imageMap.has(e)||this._imageMap.set(e,i)}}class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,i){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,i)}}class LocalGStateCache extends BaseLocalCache{set(e,t=null,i){if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,i)}else this._imageMap.has(e)||this._imageMap.set(e,i)}}class LocalTilingPatternCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,i){if(!t)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,i)}}class RegionalImageCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,i){if(!t)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,i)}}class GlobalImageCache{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5e7;#b=new RefSet;constructor(){this._refCache=new RefSetCache;this._imageCache=new RefSetCache}get#D(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get#F(){return!(this._imageCache.size<GlobalImageCache.MIN_IMAGES_TO_CACHE)&&!(this.#D<GlobalImageCache.MAX_BYTE_SIZE)}shouldCache(e,t){let i=this._refCache.get(e);if(!i){i=new Set;this._refCache.put(e,i)}i.add(t);return!(i.size<GlobalImageCache.NUM_PAGES_THRESHOLD)&&!(!this._imageCache.has(e)&&this.#F)}addDecodeFailed(e){this.#b.put(e)}hasDecodeFailed(e){return this.#b.has(e)}addByteSize(e,t){const i=this._imageCache.get(e);i&&(i.byteSize||(i.byteSize=t))}getData(e,t){const i=this._refCache.get(e);if(!i)return null;if(i.size<GlobalImageCache.NUM_PAGES_THRESHOLD)return null;const a=this._imageCache.get(e);if(!a)return null;i.add(t);return a}setData(e,t){if(!this._refCache.has(e))throw new Error('GlobalImageCache.setData - expected "shouldCache" to have been called.');this._imageCache.has(e)||(this.#F?warn("GlobalImageCache.setData - cache limit reached."):this._imageCache.put(e,t))}clear(e=!1){if(!e){this.#b.clear();this._refCache.clear()}this._imageCache.clear()}}class PDFFunctionFactory{constructor({xref:e,isEvalSupported:t=!0}){this.xref=e;this.isEvalSupported=!1!==t}create(e){const t=this.getCached(e);if(t)return t;const i=PDFFunction.parse({xref:this.xref,isEvalSupported:this.isEvalSupported,fn:e instanceof Ref?this.xref.fetch(e):e});this._cache(e,i);return i}createFromArray(e){const t=this.getCached(e);if(t)return t;const i=PDFFunction.parseArray({xref:this.xref,isEvalSupported:this.isEvalSupported,fnObj:e instanceof Ref?this.xref.fetch(e):e});this._cache(e,i);return i}getCached(e){let t;e instanceof Ref?t=e:e instanceof Dict?t=e.objId:e instanceof BaseStream&&(t=e.dict?.objId);if(t){const e=this._localFunctionCache.getByRef(t);if(e)return e}return null}_cache(e,t){if(!t)throw new Error('PDFFunctionFactory._cache - expected "parsedFunction" argument.');let i;e instanceof Ref?i=e:e instanceof Dict?i=e.objId:e instanceof BaseStream&&(i=e.dict?.objId);i&&this._localFunctionCache.set(null,i,t)}get _localFunctionCache(){return shadow(this,"_localFunctionCache",new LocalFunctionCache)}}function toNumberArray(e){return Array.isArray(e)?isNumberArray(e,null)?e:e.map((e=>+e)):null}class PDFFunction{static getSampleArray(e,t,i,a){let r,s,n=1;for(r=0,s=e.length;r<s;r++)n*=e[r];n*=t;const o=new Array(n);let g=0,c=0;const C=1/(2**i-1),h=a.getBytes((n*i+7)/8);let l=0;for(r=0;r<n;r++){for(;g<i;){c<<=8;c|=h[l++];g+=8}g-=i;o[r]=(c>>g)*C;c&=(1<<g)-1}return o}static parse({xref:e,isEvalSupported:t,fn:i}){const a=i.dict||i;switch(a.get("FunctionType")){case 0:return this.constructSampled({xref:e,isEvalSupported:t,fn:i,dict:a});case 1:break;case 2:return this.constructInterpolated({xref:e,isEvalSupported:t,dict:a});case 3:return this.constructStiched({xref:e,isEvalSupported:t,dict:a});case 4:return this.constructPostScript({xref:e,isEvalSupported:t,fn:i,dict:a})}throw new FormatError("Unknown type of function")}static parseArray({xref:e,isEvalSupported:t,fnObj:i}){if(!Array.isArray(i))return this.parse({xref:e,isEvalSupported:t,fn:i});const a=[];for(const r of i)a.push(this.parse({xref:e,isEvalSupported:t,fn:e.fetchIfRef(r)}));return function(e,t,i,r){for(let s=0,n=a.length;s<n;s++)a[s](e,t,i,r+s)}}static constructSampled({xref:e,isEvalSupported:t,fn:i,dict:a}){function toMultiArray(e){const t=e.length,i=[];let a=0;for(let r=0;r<t;r+=2)i[a++]=[e[r],e[r+1]];return i}function interpolate(e,t,i,a,r){return a+(r-a)/(i-t)*(e-t)}let r=toNumberArray(a.getArray("Domain")),s=toNumberArray(a.getArray("Range"));if(!r||!s)throw new FormatError("No domain or range");const n=r.length/2,o=s.length/2;r=toMultiArray(r);s=toMultiArray(s);const g=toNumberArray(a.getArray("Size")),c=a.get("BitsPerSample"),C=a.get("Order")||1;1!==C&&info("No support for cubic spline interpolation: "+C);let h=toNumberArray(a.getArray("Encode"));if(h)h=toMultiArray(h);else{h=[];for(let e=0;e<n;++e)h.push([0,g[e]-1])}let l=toNumberArray(a.getArray("Decode"));l=l?toMultiArray(l):s;const Q=this.getSampleArray(g,o,c,i);return function constructSampledFn(e,t,i,a){const c=1<<n,C=new Float64Array(c),E=new Uint32Array(c);let u,d;for(d=0;d<c;d++)C[d]=1;let f=o,p=1;for(u=0;u<n;++u){const i=r[u][0],a=r[u][1];let s=interpolate(Math.min(Math.max(e[t+u],i),a),i,a,h[u][0],h[u][1]);const n=g[u];s=Math.min(Math.max(s,0),n-1);const o=s<n-1?Math.floor(s):s-1,l=o+1-s,Q=s-o,m=o*f,y=m+f;for(d=0;d<c;d++)if(d&p){C[d]*=Q;E[d]+=y}else{C[d]*=l;E[d]+=m}f*=n;p<<=1}for(d=0;d<o;++d){let e=0;for(u=0;u<c;u++)e+=Q[E[u]+d]*C[u];e=interpolate(e,0,1,l[d][0],l[d][1]);i[a+d]=Math.min(Math.max(e,s[d][0]),s[d][1])}}}static constructInterpolated({xref:e,isEvalSupported:t,dict:i}){const a=toNumberArray(i.getArray("C0"))||[0],r=toNumberArray(i.getArray("C1"))||[1],s=i.get("N"),n=[];for(let e=0,t=a.length;e<t;++e)n.push(r[e]-a[e]);const o=n.length;return function constructInterpolatedFn(e,t,i,r){const g=1===s?e[t]:e[t]**s;for(let e=0;e<o;++e)i[r+e]=a[e]+g*n[e]}}static constructStiched({xref:e,isEvalSupported:t,dict:i}){const a=toNumberArray(i.getArray("Domain"));if(!a)throw new FormatError("No domain");if(1!==a.length/2)throw new FormatError("Bad domain for stiched function");const r=[];for(const a of i.get("Functions"))r.push(this.parse({xref:e,isEvalSupported:t,fn:e.fetchIfRef(a)}));const s=toNumberArray(i.getArray("Bounds")),n=toNumberArray(i.getArray("Encode")),o=new Float32Array(1);return function constructStichedFn(e,t,i,g){const c=function constructStichedFromIRClip(e,t,i){e>i?e=i:e<t&&(e=t);return e}(e[t],a[0],a[1]),C=s.length;let h;for(h=0;h<C&&!(c<s[h]);++h);let l=a[0];h>0&&(l=s[h-1]);let Q=a[1];h<s.length&&(Q=s[h]);const E=n[2*h],u=n[2*h+1];o[0]=l===Q?E:E+(c-l)*(u-E)/(Q-l);r[h](o,0,i,g)}}static constructPostScript({xref:e,isEvalSupported:t,fn:i,dict:a}){const r=toNumberArray(a.getArray("Domain")),s=toNumberArray(a.getArray("Range"));if(!r)throw new FormatError("No domain.");if(!s)throw new FormatError("No range.");const n=new PostScriptLexer(i),o=new PostScriptParser(n).parse();if(t&&FeatureTest.isEvalSupported){const e=(new PostScriptCompiler).compile(o,r,s);if(e)return new Function("src","srcOffset","dest","destOffset",e)}info("Unable to compile PS function");const g=s.length>>1,c=r.length>>1,C=new PostScriptEvaluator(o),h=Object.create(null);let l=8192;const Q=new Float32Array(c);return function constructPostScriptFn(e,t,i,a){let r,n,o="";const E=Q;for(r=0;r<c;r++){n=e[t+r];E[r]=n;o+=n+"_"}const u=h[o];if(void 0!==u){i.set(u,a);return}const d=new Float32Array(g),f=C.execute(E),p=f.length-g;for(r=0;r<g;r++){n=f[p+r];let e=s[2*r];if(n<e)n=e;else{e=s[2*r+1];n>e&&(n=e)}d[r]=n}if(l>0){l--;h[o]=d}i.set(d,a)}}}function isPDFFunction(e){let t;if(e instanceof Dict)t=e;else{if(!(e instanceof BaseStream))return!1;t=e.dict}return t.has("FunctionType")}class PostScriptStack{static MAX_STACK_SIZE=100;constructor(e){this.stack=e?Array.from(e):[]}push(e){if(this.stack.length>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let i=t.length-e,a=e-1;a>=0;a--,i++)t.push(t[i])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const i=this.stack,a=i.length-e,r=i.length-1,s=a+(t-Math.floor(t/e)*e);for(let e=a,t=r;e<t;e++,t--){const a=i[e];i[e]=i[t];i[t]=a}for(let e=a,t=s-1;e<t;e++,t--){const a=i[e];i[e]=i[t];i[t]=a}for(let e=s,t=r;e<t;e++,t--){const a=i[e];i[e]=i[t];i[t]=a}}}class PostScriptEvaluator{constructor(e){this.operators=e}execute(e){const t=new PostScriptStack(e);let i=0;const a=this.operators,r=a.length;let s,n,o;for(;i<r;){s=a[i++];if("number"!=typeof s)switch(s){case"jz":o=t.pop();n=t.pop();n||(i=o);break;case"j":n=t.pop();i=n;break;case"abs":n=t.pop();t.push(Math.abs(n));break;case"add":o=t.pop();n=t.pop();t.push(n+o);break;case"and":o=t.pop();n=t.pop();"boolean"==typeof n&&"boolean"==typeof o?t.push(n&&o):t.push(n&o);break;case"atan":o=t.pop();n=t.pop();n=Math.atan2(n,o)/Math.PI*180;n<0&&(n+=360);t.push(n);break;case"bitshift":o=t.pop();n=t.pop();n>0?t.push(n<<o):t.push(n>>o);break;case"ceiling":n=t.pop();t.push(Math.ceil(n));break;case"copy":n=t.pop();t.copy(n);break;case"cos":n=t.pop();t.push(Math.cos(n%360/180*Math.PI));break;case"cvi":n=0|t.pop();t.push(n);break;case"cvr":break;case"div":o=t.pop();n=t.pop();t.push(n/o);break;case"dup":t.copy(1);break;case"eq":o=t.pop();n=t.pop();t.push(n===o);break;case"exch":t.roll(2,1);break;case"exp":o=t.pop();n=t.pop();t.push(n**o);break;case"false":t.push(!1);break;case"floor":n=t.pop();t.push(Math.floor(n));break;case"ge":o=t.pop();n=t.pop();t.push(n>=o);break;case"gt":o=t.pop();n=t.pop();t.push(n>o);break;case"idiv":o=t.pop();n=t.pop();t.push(n/o|0);break;case"index":n=t.pop();t.index(n);break;case"le":o=t.pop();n=t.pop();t.push(n<=o);break;case"ln":n=t.pop();t.push(Math.log(n));break;case"log":n=t.pop();t.push(Math.log10(n));break;case"lt":o=t.pop();n=t.pop();t.push(n<o);break;case"mod":o=t.pop();n=t.pop();t.push(n%o);break;case"mul":o=t.pop();n=t.pop();t.push(n*o);break;case"ne":o=t.pop();n=t.pop();t.push(n!==o);break;case"neg":n=t.pop();t.push(-n);break;case"not":n=t.pop();"boolean"==typeof n?t.push(!n):t.push(~n);break;case"or":o=t.pop();n=t.pop();"boolean"==typeof n&&"boolean"==typeof o?t.push(n||o):t.push(n|o);break;case"pop":t.pop();break;case"roll":o=t.pop();n=t.pop();t.roll(n,o);break;case"round":n=t.pop();t.push(Math.round(n));break;case"sin":n=t.pop();t.push(Math.sin(n%360/180*Math.PI));break;case"sqrt":n=t.pop();t.push(Math.sqrt(n));break;case"sub":o=t.pop();n=t.pop();t.push(n-o);break;case"true":t.push(!0);break;case"truncate":n=t.pop();n=n<0?Math.ceil(n):Math.floor(n);t.push(n);break;case"xor":o=t.pop();n=t.pop();"boolean"==typeof n&&"boolean"==typeof o?t.push(n!==o):t.push(n^o);break;default:throw new FormatError(`Unknown operator ${s}`)}else t.push(s)}return t.stack}}class AstNode{constructor(e){this.type=e}visit(e){unreachable("abstract method")}}class AstArgument extends AstNode{constructor(e,t,i){super("args");this.index=e;this.min=t;this.max=i}visit(e){e.visitArgument(this)}}class AstLiteral extends AstNode{constructor(e){super("literal");this.number=e;this.min=e;this.max=e}visit(e){e.visitLiteral(this)}}class AstBinaryOperation extends AstNode{constructor(e,t,i,a,r){super("binary");this.op=e;this.arg1=t;this.arg2=i;this.min=a;this.max=r}visit(e){e.visitBinaryOperation(this)}}class AstMin extends AstNode{constructor(e,t){super("max");this.arg=e;this.min=e.min;this.max=t}visit(e){e.visitMin(this)}}class AstVariable extends AstNode{constructor(e,t,i){super("var");this.index=e;this.min=t;this.max=i}visit(e){e.visitVariable(this)}}class AstVariableDefinition extends AstNode{constructor(e,t){super("definition");this.variable=e;this.arg=t}visit(e){e.visitVariableDefinition(this)}}class ExpressionBuilderVisitor{constructor(){this.parts=[]}visitArgument(e){this.parts.push("Math.max(",e.min,", Math.min(",e.max,", src[srcOffset + ",e.index,"]))")}visitVariable(e){this.parts.push("v",e.index)}visitLiteral(e){this.parts.push(e.number)}visitBinaryOperation(e){this.parts.push("(");e.arg1.visit(this);this.parts.push(" ",e.op," ");e.arg2.visit(this);this.parts.push(")")}visitVariableDefinition(e){this.parts.push("var ");e.variable.visit(this);this.parts.push(" = ");e.arg.visit(this);this.parts.push(";")}visitMin(e){this.parts.push("Math.min(");e.arg.visit(this);this.parts.push(", ",e.max,")")}toString(){return this.parts.join("")}}function buildAddOperation(e,t){return"literal"===t.type&&0===t.number?e:"literal"===e.type&&0===e.number?t:"literal"===t.type&&"literal"===e.type?new AstLiteral(e.number+t.number):new AstBinaryOperation("+",e,t,e.min+t.min,e.max+t.max)}function buildMulOperation(e,t){if("literal"===t.type){if(0===t.number)return new AstLiteral(0);if(1===t.number)return e;if("literal"===e.type)return new AstLiteral(e.number*t.number)}if("literal"===e.type){if(0===e.number)return new AstLiteral(0);if(1===e.number)return t}const i=Math.min(e.min*t.min,e.min*t.max,e.max*t.min,e.max*t.max),a=Math.max(e.min*t.min,e.min*t.max,e.max*t.min,e.max*t.max);return new AstBinaryOperation("*",e,t,i,a)}function buildSubOperation(e,t){if("literal"===t.type){if(0===t.number)return e;if("literal"===e.type)return new AstLiteral(e.number-t.number)}return"binary"===t.type&&"-"===t.op&&"literal"===e.type&&1===e.number&&"literal"===t.arg1.type&&1===t.arg1.number?t.arg2:new AstBinaryOperation("-",e,t,e.min-t.max,e.max-t.min)}function buildMinOperation(e,t){return e.min>=t?new AstLiteral(t):e.max<=t?e:new AstMin(e,t)}class PostScriptCompiler{compile(e,t,i){const a=[],r=[],s=t.length>>1,n=i.length>>1;let o,g,c,C,h,l,Q,E,u=0;for(let e=0;e<s;e++)a.push(new AstArgument(e,t[2*e],t[2*e+1]));for(let t=0,i=e.length;t<i;t++){E=e[t];if("number"!=typeof E)switch(E){case"add":if(a.length<2)return null;C=a.pop();c=a.pop();a.push(buildAddOperation(c,C));break;case"cvr":if(a.length<1)return null;break;case"mul":if(a.length<2)return null;C=a.pop();c=a.pop();a.push(buildMulOperation(c,C));break;case"sub":if(a.length<2)return null;C=a.pop();c=a.pop();a.push(buildSubOperation(c,C));break;case"exch":if(a.length<2)return null;h=a.pop();l=a.pop();a.push(h,l);break;case"pop":if(a.length<1)return null;a.pop();break;case"index":if(a.length<1)return null;c=a.pop();if("literal"!==c.type)return null;o=c.number;if(o<0||!Number.isInteger(o)||a.length<o)return null;h=a[a.length-o-1];if("literal"===h.type||"var"===h.type){a.push(h);break}Q=new AstVariable(u++,h.min,h.max);a[a.length-o-1]=Q;a.push(Q);r.push(new AstVariableDefinition(Q,h));break;case"dup":if(a.length<1)return null;if("number"==typeof e[t+1]&&"gt"===e[t+2]&&e[t+3]===t+7&&"jz"===e[t+4]&&"pop"===e[t+5]&&e[t+6]===e[t+1]){c=a.pop();a.push(buildMinOperation(c,e[t+1]));t+=6;break}h=a.at(-1);if("literal"===h.type||"var"===h.type){a.push(h);break}Q=new AstVariable(u++,h.min,h.max);a[a.length-1]=Q;a.push(Q);r.push(new AstVariableDefinition(Q,h));break;case"roll":if(a.length<2)return null;C=a.pop();c=a.pop();if("literal"!==C.type||"literal"!==c.type)return null;g=C.number;o=c.number;if(o<=0||!Number.isInteger(o)||!Number.isInteger(g)||a.length<o)return null;g=(g%o+o)%o;if(0===g)break;a.push(...a.splice(a.length-o,o-g));break;default:return null}else a.push(new AstLiteral(E))}if(a.length!==n)return null;const d=[];for(const e of r){const t=new ExpressionBuilderVisitor;e.visit(t);d.push(t.toString())}for(let e=0,t=a.length;e<t;e++){const t=a[e],r=new ExpressionBuilderVisitor;t.visit(r);const s=i[2*e],n=i[2*e+1],o=[r.toString()];if(s>t.min){o.unshift("Math.max(",s,", ");o.push(")")}if(n<t.max){o.unshift("Math.min(",n,", ");o.push(")")}o.unshift("dest[destOffset + ",e,"] = ");o.push(";");d.push(o.join(""))}return d.join("\n")}}const lr=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],Qr=["AN","AN","AN","AN","AN","AN","ON","ON","AL","ET","ET","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL"];function isOdd(e){return 0!=(1&e)}function isEven(e){return 0==(1&e)}function findUnequal(e,t,i){let a,r;for(a=t,r=e.length;a<r;++a)if(e[a]!==i)return a;return a}function setValues(e,t,i,a){for(let r=t;r<i;++r)e[r]=a}function reverseValues(e,t,i){for(let a=t,r=i-1;a<r;++a,--r){const t=e[a];e[a]=e[r];e[r]=t}}function createBidiText(e,t,i=!1){let a="ltr";i?a="ttb":t||(a="rtl");return{str:e,dir:a}}const Er=[],ur=[];function bidi(e,t=-1,i=!1){let a=!0;const r=e.length;if(0===r||i)return createBidiText(e,a,i);Er.length=r;ur.length=r;let s,n,o=0;for(s=0;s<r;++s){Er[s]=e.charAt(s);const t=e.charCodeAt(s);let i="L";if(t<=255)i=lr[t];else if(1424<=t&&t<=1524)i="R";else if(1536<=t&&t<=1791){i=Qr[255&t];i||warn("Bidi: invalid Unicode character "+t.toString(16))}else(1792<=t&&t<=2220||64336<=t&&t<=65023||65136<=t&&t<=65279)&&(i="AL");"R"!==i&&"AL"!==i&&"AN"!==i||o++;ur[s]=i}if(0===o){a=!0;return createBidiText(e,a)}if(-1===t)if(o/r<.3&&r>4){a=!0;t=0}else{a=!1;t=1}const g=[];for(s=0;s<r;++s)g[s]=t;const c=isOdd(t)?"R":"L",C=c,h=C;let l,Q=C;for(s=0;s<r;++s)"NSM"===ur[s]?ur[s]=Q:Q=ur[s];Q=C;for(s=0;s<r;++s){l=ur[s];"EN"===l?ur[s]="AL"===Q?"AN":"EN":"R"!==l&&"L"!==l&&"AL"!==l||(Q=l)}for(s=0;s<r;++s){l=ur[s];"AL"===l&&(ur[s]="R")}for(s=1;s<r-1;++s){"ES"===ur[s]&&"EN"===ur[s-1]&&"EN"===ur[s+1]&&(ur[s]="EN");"CS"!==ur[s]||"EN"!==ur[s-1]&&"AN"!==ur[s-1]||ur[s+1]!==ur[s-1]||(ur[s]=ur[s-1])}for(s=0;s<r;++s)if("EN"===ur[s]){for(let e=s-1;e>=0&&"ET"===ur[e];--e)ur[e]="EN";for(let e=s+1;e<r&&"ET"===ur[e];++e)ur[e]="EN"}for(s=0;s<r;++s){l=ur[s];"WS"!==l&&"ES"!==l&&"ET"!==l&&"CS"!==l||(ur[s]="ON")}Q=C;for(s=0;s<r;++s){l=ur[s];"EN"===l?ur[s]="L"===Q?"L":"EN":"R"!==l&&"L"!==l||(Q=l)}for(s=0;s<r;++s)if("ON"===ur[s]){const e=findUnequal(ur,s+1,"ON");let t=C;s>0&&(t=ur[s-1]);let i=h;e+1<r&&(i=ur[e+1]);"L"!==t&&(t="R");"L"!==i&&(i="R");t===i&&setValues(ur,s,e,t);s=e-1}for(s=0;s<r;++s)"ON"===ur[s]&&(ur[s]=c);for(s=0;s<r;++s){l=ur[s];isEven(g[s])?"R"===l?g[s]+=1:"AN"!==l&&"EN"!==l||(g[s]+=2):"L"!==l&&"AN"!==l&&"EN"!==l||(g[s]+=1)}let E,u=-1,d=99;for(s=0,n=g.length;s<n;++s){E=g[s];u<E&&(u=E);d>E&&isOdd(E)&&(d=E)}for(E=u;E>=d;--E){let e=-1;for(s=0,n=g.length;s<n;++s)if(g[s]<E){if(e>=0){reverseValues(Er,e,s);e=-1}}else e<0&&(e=s);e>=0&&reverseValues(Er,e,g.length)}for(s=0,n=Er.length;s<n;++s){const e=Er[s];"<"!==e&&">"!==e||(Er[s]="")}return createBidiText(Er.join(""),a)}const dr={style:"normal",weight:"normal"},fr={style:"normal",weight:"bold"},pr={style:"italic",weight:"normal"},mr={style:"italic",weight:"bold"},yr=new Map([["Times-Roman",{local:["Times New Roman","Times-Roman","Times","Liberation Serif","Nimbus Roman","Nimbus Roman L","Tinos","Thorndale","TeX Gyre Termes","FreeSerif","Linux Libertine O","Libertinus Serif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:dr,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:fr,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:pr,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:mr,ultimate:"serif"}],["Helvetica",{local:["Helvetica","Helvetica Neue","Arial","Arial Nova","Liberation Sans","Arimo","Nimbus Sans","Nimbus Sans L","A030","TeX Gyre Heros","FreeSans","DejaVu Sans","Albany","Bitstream Vera Sans","Arial Unicode MS","Microsoft Sans Serif","Apple Symbols","Cantarell"],path:"LiberationSans-Regular.ttf",style:dr,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:fr,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:pr,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:mr,ultimate:"sans-serif"}],["Courier",{local:["Courier","Courier New","Liberation Mono","Nimbus Mono","Nimbus Mono L","Cousine","Cumberland","TeX Gyre Cursor","FreeMono","Linux Libertine Mono O","Libertinus Mono"],style:dr,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:fr,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:pr,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:mr,ultimate:"monospace"}],["ArialBlack",{local:["Arial Black"],style:{style:"normal",weight:"900"},fallback:"Helvetica-Bold"}],["ArialBlack-Bold",{alias:"ArialBlack"}],["ArialBlack-Italic",{alias:"ArialBlack",style:{style:"italic",weight:"900"},fallback:"Helvetica-BoldOblique"}],["ArialBlack-BoldItalic",{alias:"ArialBlack-Italic"}],["ArialNarrow",{local:["Arial Narrow","Liberation Sans Narrow","Helvetica Condensed","Nimbus Sans Narrow","TeX Gyre Heros Cn"],style:dr,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:fr,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:pr,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:mr,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:dr,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:fr,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:pr,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:mr,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:dr}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}]]),wr=new Map([["Arial-Black","ArialBlack"]]);function getFamilyName(e){const t=new Set(["thin","extralight","ultralight","demilight","semilight","light","book","regular","normal","medium","demibold","semibold","bold","extrabold","ultrabold","black","heavy","extrablack","ultrablack","roman","italic","oblique","ultracondensed","extracondensed","condensed","semicondensed","normal","semiexpanded","expanded","extraexpanded","ultraexpanded","bolditalic"]);return e.split(/[- ,+]+/g).filter((e=>!t.has(e.toLowerCase()))).join(" ")}function generateFont({alias:e,local:t,path:i,fallback:a,style:r,ultimate:s},n,o,g=!0,c=!0,C=""){const h={style:null,ultimate:null};if(t){const e=C?` ${C}`:"";for(const i of t)n.push(`local(${i}${e})`)}if(e){const t=yr.get(e),s=C||function getStyleToAppend(e){switch(e){case fr:return"Bold";case pr:return"Italic";case mr:return"Bold Italic";default:if("bold"===e?.weight)return"Bold";if("italic"===e?.style)return"Italic"}return""}(r);Object.assign(h,generateFont(t,n,o,g&&!a,c&&!i,s))}r&&(h.style=r);s&&(h.ultimate=s);if(g&&a){const e=yr.get(a),{ultimate:t}=generateFont(e,n,o,g,c&&!i,C);h.ultimate||=t}c&&i&&o&&n.push(`url(${o}${i})`);return h}function getFontSubstitution(e,t,i,a,r,s){if(a.startsWith("InvalidPDFjsFont_"))return null;"TrueType"!==s&&"Type1"!==s||!/^[A-Z]{6}\+/.test(a)||(a=a.slice(7));const n=a=normalizeFontName(a);let o=e.get(n);if(o)return o;let g=yr.get(a);if(!g)for(const[e,t]of wr)if(a.startsWith(e)){a=`${t}${a.substring(e.length)}`;g=yr.get(a);break}let c=!1;if(!g){g=yr.get(r);c=!0}const C=`${t.getDocId()}_s${t.createFontId()}`;if(!g){if(!validateFontName(a)){warn(`Cannot substitute the font because of its name: ${a}`);e.set(n,null);return null}const t=/bold/gi.test(a),i=/oblique|italic/gi.test(a),r=t&&i&&mr||t&&fr||i&&pr||dr;o={css:`"${getFamilyName(a)}",${C}`,guessFallback:!0,loadedName:C,baseFontName:a,src:`local(${a})`,style:r};e.set(n,o);return o}const h=[];c&&validateFontName(a)&&h.push(`local(${a})`);const{style:l,ultimate:Q}=generateFont(g,h,i),E=null===Q,u=E?"":`,${Q}`;o={css:`"${getFamilyName(a)}",${C}${u}`,guessFallback:E,loadedName:C,baseFontName:a,src:h.join(","),style:l};e.set(n,o);return o}class ImageResizer{constructor(e,t){this._imgData=e;this._isMask=t}static needsToBeResized(e,t){if(e<=this._goodSquareLength&&t<=this._goodSquareLength)return!1;const{MAX_DIM:i}=this;if(e>i||t>i)return!0;const a=e*t;if(this._hasMaxArea)return a>this.MAX_AREA;if(a<this._goodSquareLength**2)return!1;if(this._areGoodDims(e,t)){this._goodSquareLength=Math.max(this._goodSquareLength,Math.floor(Math.sqrt(e*t)));return!1}this._goodSquareLength=this._guessMax(this._goodSquareLength,i,128,0);return a>(this.MAX_AREA=this._goodSquareLength**2)}static get MAX_DIM(){return shadow(this,"MAX_DIM",this._guessMax(2048,65537,0,1))}static get MAX_AREA(){this._hasMaxArea=!0;return shadow(this,"MAX_AREA",this._guessMax(ImageResizer._goodSquareLength,this.MAX_DIM,128,0)**2)}static set MAX_AREA(e){if(e>=0){this._hasMaxArea=!0;shadow(this,"MAX_AREA",e)}}static setMaxArea(e){this._hasMaxArea||(this.MAX_AREA=e>>2)}static _areGoodDims(e,t){try{const i=new OffscreenCanvas(e,t),a=i.getContext("2d");a.fillRect(0,0,1,1);const r=a.getImageData(0,0,1,1).data[3];i.width=i.height=1;return 0!==r}catch{return!1}}static _guessMax(e,t,i,a){for(;e+i+1<t;){const i=Math.floor((e+t)/2),r=a||i;this._areGoodDims(i,r)?e=i:t=i}return e}static async createImage(e,t=!1){return new ImageResizer(e,t)._createImage()}async _createImage(){const e=this._encodeBMP(),t=new Blob([e.buffer],{type:"image/bmp"}),i=createImageBitmap(t),{MAX_AREA:a,MAX_DIM:r}=ImageResizer,{_imgData:s}=this,{width:n,height:o}=s,g=Math.max(n/r,o/r,Math.sqrt(n*o/a)),c=Math.max(g,2),C=Math.round(10*(g+1.25))/10/c,h=Math.floor(Math.log2(C)),l=new Array(h+2).fill(2);l[0]=c;l.splice(-1,1,C/(1<<h));let Q=n,E=o,u=await i;for(const e of l){const t=Q,i=E;Q=Math.floor(Q/e)-1;E=Math.floor(E/e)-1;const a=new OffscreenCanvas(Q,E);a.getContext("2d").drawImage(u,0,0,t,i,0,0,Q,E);u=a.transferToImageBitmap()}s.data=null;s.bitmap=u;s.width=Q;s.height=E;return s}_encodeBMP(){const{width:e,height:t,kind:i}=this._imgData;let a,r=this._imgData.data,s=new Uint8Array(0),n=s,o=0;switch(i){case D:{a=1;s=new Uint8Array(this._isMask?[255,255,255,255,0,0,0,0]:[0,0,0,0,255,255,255,255]);const i=e+7>>3,n=i+3&-4;if(i!==n){const e=new Uint8Array(n*t);let a=0;for(let s=0,o=t*i;s<o;s+=i,a+=n)e.set(r.subarray(s,s+i),a);r=e}break}case S:a=24;if(3&e){const i=3*e,a=i+3&-4,s=a-i,n=new Uint8Array(a*t);let o=0;for(let e=0,a=t*i;e<a;e+=i){const t=r.subarray(e,e+i);for(let e=0;e<i;e+=3){n[o++]=t[e+2];n[o++]=t[e+1];n[o++]=t[e]}o+=s}r=n}else for(let e=0,t=r.length;e<t;e+=3){const t=r[e];r[e]=r[e+2];r[e+2]=t}break;case k:a=32;o=3;n=new Uint8Array(68);const i=new DataView(n.buffer);if(FeatureTest.isLittleEndian){i.setUint32(0,255,!0);i.setUint32(4,65280,!0);i.setUint32(8,16711680,!0);i.setUint32(12,4278190080,!0)}else{i.setUint32(0,4278190080,!0);i.setUint32(4,16711680,!0);i.setUint32(8,65280,!0);i.setUint32(12,255,!0)}break;default:throw new Error("invalid format")}let g=0;const c=40+n.length,C=14+c+s.length+r.length,h=new Uint8Array(C),l=new DataView(h.buffer);l.setUint16(g,19778,!0);g+=2;l.setUint32(g,C,!0);g+=4;l.setUint32(g,0,!0);g+=4;l.setUint32(g,14+c+s.length,!0);g+=4;l.setUint32(g,c,!0);g+=4;l.setInt32(g,e,!0);g+=4;l.setInt32(g,-t,!0);g+=4;l.setUint16(g,1,!0);g+=2;l.setUint16(g,a,!0);g+=2;l.setUint32(g,o,!0);g+=4;l.setUint32(g,0,!0);g+=4;l.setInt32(g,0,!0);g+=4;l.setInt32(g,0,!0);g+=4;l.setUint32(g,s.length/4,!0);g+=4;l.setUint32(g,0,!0);g+=4;h.set(n,g);g+=n.length;h.set(s,g);g+=s.length;h.set(r,g);return h}}ImageResizer._goodSquareLength=2048;const br=3285377520,Dr=4294901760,Fr=65535;class MurmurHash3_64{constructor(e){this.h1=e?4294967295&e:br;this.h2=e?4294967295&e:br}update(e){let t,i;if("string"==typeof e){t=new Uint8Array(2*e.length);i=0;for(let a=0,r=e.length;a<r;a++){const r=e.charCodeAt(a);if(r<=255)t[i++]=r;else{t[i++]=r>>>8;t[i++]=255&r}}}else{if(!ArrayBuffer.isView(e))throw new Error("Invalid data format, must be a string or TypedArray.");t=e.slice();i=t.byteLength}const a=i>>2,r=i-4*a,s=new Uint32Array(t.buffer,0,a);let n=0,o=0,g=this.h1,c=this.h2;const C=3432918353,h=461845907,l=11601,Q=13715;for(let e=0;e<a;e++)if(1&e){n=s[e];n=n*C&Dr|n*l&Fr;n=n<<15|n>>>17;n=n*h&Dr|n*Q&Fr;g^=n;g=g<<13|g>>>19;g=5*g+3864292196}else{o=s[e];o=o*C&Dr|o*l&Fr;o=o<<15|o>>>17;o=o*h&Dr|o*Q&Fr;c^=o;c=c<<13|c>>>19;c=5*c+3864292196}n=0;switch(r){case 3:n^=t[4*a+2]<<16;case 2:n^=t[4*a+1]<<8;case 1:n^=t[4*a];n=n*C&Dr|n*l&Fr;n=n<<15|n>>>17;n=n*h&Dr|n*Q&Fr;1&a?g^=n:c^=n}this.h1=g;this.h2=c}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&Dr|36045*e&Fr;t=4283543511*t&Dr|(2950163797*(t<<16|e>>>16)&Dr)>>>16;e^=t>>>1;e=444984403*e&Dr|60499*e&Fr;t=3301882366*t&Dr|(3120437893*(t<<16|e>>>16)&Dr)>>>16;e^=t>>>1;return(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}function addState(e,t,i,a,r){let s=e;for(let e=0,i=t.length-1;e<i;e++){const i=t[e];s=s[i]||=[]}s[t.at(-1)]={checkFn:i,iterateFn:a,processFn:r}}const Sr=[];addState(Sr,[UA,LA,$e,MA],null,(function iterateInlineImageGroup(e,t){const i=e.fnArray,a=(t-(e.iCurr-3))%4;switch(a){case 0:return i[t]===UA;case 1:return i[t]===LA;case 2:return i[t]===$e;case 3:return i[t]===MA}throw new Error(`iterateInlineImageGroup - invalid pos: ${a}`)}),(function foundInlineImageGroup(e,t){const i=e.fnArray,a=e.argsArray,r=e.iCurr,s=r-3,n=r-2,o=r-1,g=Math.min(Math.floor((t-s)/4),200);if(g<10)return t-(t-s)%4;let c=0;const C=[];let h=0,l=1,Q=1;for(let e=0;e<g;e++){const t=a[n+(e<<2)],i=a[o+(e<<2)][0];if(l+i.width>1e3){c=Math.max(c,l);Q+=h+2;l=0;h=0}C.push({transform:t,x:l,y:Q,w:i.width,h:i.height});l+=i.width+2;h=Math.max(h,i.height)}const E=Math.max(c,l)+1,u=Q+h+1,d=new Uint8Array(E*u*4),f=E<<2;for(let e=0;e<g;e++){const t=a[o+(e<<2)][0].data,i=C[e].w<<2;let r=0,s=C[e].x+C[e].y*E<<2;d.set(t.subarray(0,i),s-f);for(let a=0,n=C[e].h;a<n;a++){d.set(t.subarray(r,r+i),s);r+=i;s+=f}d.set(t.subarray(r-i,r),s);for(;s>=0;){t[s-4]=t[s];t[s-3]=t[s+1];t[s-2]=t[s+2];t[s-1]=t[s+3];t[s+i]=t[s+i-4];t[s+i+1]=t[s+i-3];t[s+i+2]=t[s+i-2];t[s+i+3]=t[s+i-1];s-=f}}const p={width:E,height:u};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(E,u);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(d.buffer),E,u),0,0);p.bitmap=e.transferToImageBitmap();p.data=null}else{p.kind=k;p.data=d}i.splice(s,4*g,At);a.splice(s,4*g,[p,C]);return s+1}));addState(Sr,[UA,LA,Ve,MA],null,(function iterateImageMaskGroup(e,t){const i=e.fnArray,a=(t-(e.iCurr-3))%4;switch(a){case 0:return i[t]===UA;case 1:return i[t]===LA;case 2:return i[t]===Ve;case 3:return i[t]===MA}throw new Error(`iterateImageMaskGroup - invalid pos: ${a}`)}),(function foundImageMaskGroup(e,t){const i=e.fnArray,a=e.argsArray,r=e.iCurr,s=r-3,n=r-2,o=r-1;let g=Math.floor((t-s)/4);if(g<10)return t-(t-s)%4;let c,C,h=!1;const l=a[o][0],Q=a[n][0],E=a[n][1],u=a[n][2],d=a[n][3];if(E===u){h=!0;c=n+4;let e=o+4;for(let t=1;t<g;t++,c+=4,e+=4){C=a[c];if(a[e][0]!==l||C[0]!==Q||C[1]!==E||C[2]!==u||C[3]!==d){t<10?h=!1:g=t;break}}}if(h){g=Math.min(g,1e3);const e=new Float32Array(2*g);c=n;for(let t=0;t<g;t++,c+=4){C=a[c];e[t<<1]=C[4];e[1+(t<<1)]=C[5]}i.splice(s,4*g,tt);a.splice(s,4*g,[l,Q,E,u,d,e])}else{g=Math.min(g,100);const e=[];for(let t=0;t<g;t++){C=a[n+(t<<2)];const i=a[o+(t<<2)][0];e.push({data:i.data,width:i.width,height:i.height,interpolate:i.interpolate,count:i.count,transform:C})}i.splice(s,4*g,_e);a.splice(s,4*g,[e])}return s+1}));addState(Sr,[UA,LA,ze,MA],(function(e){const t=e.argsArray,i=e.iCurr-2;return 0===t[i][1]&&0===t[i][2]}),(function iterateImageGroup(e,t){const i=e.fnArray,a=e.argsArray,r=(t-(e.iCurr-3))%4;switch(r){case 0:return i[t]===UA;case 1:if(i[t]!==LA)return!1;const r=e.iCurr-2,s=a[r][0],n=a[r][3];return a[t][0]===s&&0===a[t][1]&&0===a[t][2]&&a[t][3]===n;case 2:if(i[t]!==ze)return!1;const o=a[e.iCurr-1][0];return a[t][0]===o;case 3:return i[t]===MA}throw new Error(`iterateImageGroup - invalid pos: ${r}`)}),(function(e,t){const i=e.fnArray,a=e.argsArray,r=e.iCurr,s=r-3,n=r-2,o=a[r-1][0],g=a[n][0],c=a[n][3],C=Math.min(Math.floor((t-s)/4),1e3);if(C<3)return t-(t-s)%4;const h=new Float32Array(2*C);let l=n;for(let e=0;e<C;e++,l+=4){const t=a[l];h[e<<1]=t[4];h[1+(e<<1)]=t[5]}const Q=[o,g,c,h];i.splice(s,4*C,et);a.splice(s,4*C,Q);return s+1}));addState(Sr,[ee,ne,Ce,le,te],null,(function iterateShowTextGroup(e,t){const i=e.fnArray,a=e.argsArray,r=(t-(e.iCurr-4))%5;switch(r){case 0:return i[t]===ee;case 1:return i[t]===ne;case 2:return i[t]===Ce;case 3:if(i[t]!==le)return!1;const r=e.iCurr-3,s=a[r][0],n=a[r][1];return a[t][0]===s&&a[t][1]===n;case 4:return i[t]===te}throw new Error(`iterateShowTextGroup - invalid pos: ${r}`)}),(function(e,t){const i=e.fnArray,a=e.argsArray,r=e.iCurr,s=r-4,n=r-3,o=r-2,g=r-1,c=r,C=a[n][0],h=a[n][1];let l=Math.min(Math.floor((t-s)/5),1e3);if(l<3)return t-(t-s)%5;let Q=s;if(s>=4&&i[s-4]===i[n]&&i[s-3]===i[o]&&i[s-2]===i[g]&&i[s-1]===i[c]&&a[s-4][0]===C&&a[s-4][1]===h){l++;Q-=5}let E=Q+4;for(let e=1;e<l;e++){i.splice(E,3);a.splice(E,3);E+=2}return E+1}));class NullOptimizer{constructor(e){this.queue=e}_optimize(){}push(e,t){this.queue.fnArray.push(e);this.queue.argsArray.push(t);this._optimize()}flush(){}reset(){}}class QueueOptimizer extends NullOptimizer{constructor(e){super(e);this.state=null;this.context={iCurr:0,fnArray:e.fnArray,argsArray:e.argsArray,isOffscreenCanvasSupported:!1};this.match=null;this.lastProcessed=0}set isOffscreenCanvasSupported(e){this.context.isOffscreenCanvasSupported=e}_optimize(){const e=this.queue.fnArray;let t=this.lastProcessed,i=e.length,a=this.state,r=this.match;if(!a&&!r&&t+1===i&&!Sr[e[t]]){this.lastProcessed=i;return}const s=this.context;for(;t<i;){if(r){if((0,r.iterateFn)(s,t)){t++;continue}t=(0,r.processFn)(s,t+1);i=e.length;r=null;a=null;if(t>=i)break}a=(a||Sr)[e[t]];if(a&&!Array.isArray(a)){s.iCurr=t;t++;if(!a.checkFn||(0,a.checkFn)(s)){r=a;a=null}else a=null}else t++}this.state=a;this.match=r;this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e);this.match=null;this.state=null;this._optimize()}}reset(){this.state=null;this.match=null;this.lastProcessed=0}}class OperatorList{static CHUNK_SIZE=1e3;static CHUNK_SIZE_ABOUT=this.CHUNK_SIZE-5;constructor(e=0,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];this.optimizer=!t||e&E?new NullOptimizer(this):new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?null:Promise.resolve()}set isOffscreenCanvasSupported(e){this.optimizer.isOffscreenCanvasSupported=e}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t);this.weight++;this._streamSink&&(this.weight>=OperatorList.CHUNK_SIZE||this.weight>=OperatorList.CHUNK_SIZE_ABOUT&&(e===MA||e===te))&&this.flush()}addImageOps(e,t,i){void 0!==i&&this.addOp(ve,["OC",i]);this.addOp(e,t);void 0!==i&&this.addOp(Te,[])}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(bA,[e])}}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof OperatorList){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,i=e.length;t<i;t++)this.addOp(e.fnArray[t],e.argsArray[t])}else warn('addOpList - ignoring invalid "opList" parameter.')}getIR(){return{fnArray:this.fnArray,argsArray:this.argsArray,length:this.length}}get _transfers(){const e=[],{fnArray:t,argsArray:i,length:a}=this;for(let r=0;r<a;r++)switch(t[r]){case $e:case At:case Ve:const t=i[r][0];!t.cached&&t.data?.buffer instanceof ArrayBuffer&&e.push(t.data.buffer)}return e}flush(e=!1,t=null){this.optimizer.flush();const i=this.length;this._totalLength+=i;this._streamSink.enqueue({fnArray:this.fnArray,argsArray:this.argsArray,lastChunk:e,separateAnnots:t,length:i},1,this._transfers);this.dependencies.clear();this.fnArray.length=0;this.argsArray.length=0;this.weight=0;this.optimizer.reset()}}function decodeAndClamp(e,t,i,a){(e=t+e*i)<0?e=0:e>a&&(e=a);return e}function resizeImageMask(e,t,i,a,r,s){const n=r*s;let o;o=t<=8?new Uint8Array(n):t<=16?new Uint16Array(n):new Uint32Array(n);const g=i/r,c=a/s;let C,h,l,Q,E=0;const u=new Uint16Array(r),d=i;for(C=0;C<r;C++)u[C]=Math.floor(C*g);for(C=0;C<s;C++){l=Math.floor(C*c)*d;for(h=0;h<r;h++){Q=l+u[h];o[E++]=e[Q]}}return o}class PDFImage{constructor({xref:e,res:t,image:i,isInline:a=!1,smask:r=null,mask:s=null,isMask:n=!1,pdfFunctionFactory:o,localColorSpaceCache:g}){this.image=i;const c=i.dict,C=c.get("F","Filter");let h;if(C instanceof Name)h=C.name;else if(Array.isArray(C)){const t=e.fetchIfRef(C[0]);t instanceof Name&&(h=t.name)}switch(h){case"JPXDecode":({width:i.width,height:i.height,componentsCount:i.numComps,bitsPerComponent:i.bitsPerComponent}=JpxImage.parseImageProperties(i.stream));i.stream.reset();this.jpxDecoderOptions={numComponents:0,isIndexedColormap:!1,smaskInData:c.has("SMaskInData")};break;case"JBIG2Decode":i.bitsPerComponent=1;i.numComps=1}let l=c.get("W","Width"),Q=c.get("H","Height");if(Number.isInteger(i.width)&&i.width>0&&Number.isInteger(i.height)&&i.height>0&&(i.width!==l||i.height!==Q)){warn("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");l=i.width;Q=i.height}if(l<1||Q<1)throw new FormatError(`Invalid image width: ${l} or height: ${Q}`);this.width=l;this.height=Q;this.interpolate=c.get("I","Interpolate");this.imageMask=c.get("IM","ImageMask")||!1;this.matte=c.get("Matte")||!1;let E=i.bitsPerComponent;if(!E){E=c.get("BPC","BitsPerComponent");if(!E){if(!this.imageMask)throw new FormatError(`Bits per component missing in image: ${this.imageMask}`);E=1}}this.bpc=E;if(!this.imageMask){let r=c.getRaw("CS")||c.getRaw("ColorSpace");const s=!!r;if(s)this.jpxDecoderOptions?.smaskInData&&(r=Name.get("DeviceRGBA"));else if(this.jpxDecoderOptions)r=Name.get("DeviceRGBA");else switch(i.numComps){case 1:r=Name.get("DeviceGray");break;case 3:r=Name.get("DeviceRGB");break;case 4:r=Name.get("DeviceCMYK");break;default:throw new Error(`Images with ${i.numComps} color components not supported.`)}this.colorSpace=ColorSpace.parse({cs:r,xref:e,resources:a?t:null,pdfFunctionFactory:o,localColorSpaceCache:g});this.numComps=this.colorSpace.numComps;if(this.jpxDecoderOptions){this.jpxDecoderOptions.numComponents=s?this.numComp:0;this.jpxDecoderOptions.isIndexedColormap="Indexed"===this.colorSpace.name}}this.decode=c.getArray("D","Decode");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,E)||n&&!ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<<E)-1;this.decodeCoefficients=[];this.decodeAddends=[];const t="Indexed"===this.colorSpace?.name;for(let i=0,a=0;i<this.decode.length;i+=2,++a){const r=this.decode[i],s=this.decode[i+1];this.decodeCoefficients[a]=t?(s-r)/e:s-r;this.decodeAddends[a]=t?r:e*r}}if(r)this.smask=new PDFImage({xref:e,res:t,image:r,isInline:a,pdfFunctionFactory:o,localColorSpaceCache:g});else if(s)if(s instanceof BaseStream){s.dict.get("IM","ImageMask")?this.mask=new PDFImage({xref:e,res:t,image:s,isInline:a,isMask:!0,pdfFunctionFactory:o,localColorSpaceCache:g}):warn("Ignoring /Mask in image without /ImageMask.")}else this.mask=s}static async buildImage({xref:e,res:t,image:i,isInline:a=!1,pdfFunctionFactory:r,localColorSpaceCache:s}){const n=i;let o=null,g=null;const c=i.dict.get("SMask"),C=i.dict.get("Mask");c?c instanceof BaseStream?o=c:warn("Unsupported /SMask format."):C&&(C instanceof BaseStream||Array.isArray(C)?g=C:warn("Unsupported /Mask format."));return new PDFImage({xref:e,res:t,image:n,isInline:a,smask:o,mask:g,pdfFunctionFactory:r,localColorSpaceCache:s})}static createRawMask({imgArray:e,width:t,height:i,imageIsFromDecodeStream:a,inverseDecode:r,interpolate:s}){const n=(t+7>>3)*i,o=e.byteLength;let g,c;if(!a||r&&!(n===o))if(r){g=new Uint8Array(n);g.set(e);g.fill(255,o)}else g=new Uint8Array(e);else g=e;if(r)for(c=0;c<o;c++)g[c]^=255;return{data:g,width:t,height:i,interpolate:s}}static async createMask({imgArray:e,width:t,height:i,imageIsFromDecodeStream:a,inverseDecode:r,interpolate:s,isOffscreenCanvasSupported:n=!1}){const o=1===t&&1===i&&r===(0===e.length||!!(128&e[0]));if(o)return{isSingleOpaquePixel:o};if(n){if(ImageResizer.needsToBeResized(t,i)){const a=new Uint8ClampedArray(t*i*4);convertBlackAndWhiteToRGBA({src:e,dest:a,width:t,height:i,nonBlackColor:0,inverseDecode:r});return ImageResizer.createImage({kind:k,data:a,width:t,height:i,interpolate:s})}const a=new OffscreenCanvas(t,i),n=a.getContext("2d"),o=n.createImageData(t,i);convertBlackAndWhiteToRGBA({src:e,dest:o.data,width:t,height:i,nonBlackColor:0,inverseDecode:r});n.putImageData(o,0,0);return{data:null,width:t,height:i,interpolate:s,bitmap:a.transferToImageBitmap()}}return this.createRawMask({imgArray:e,width:t,height:i,inverseDecode:r,imageIsFromDecodeStream:a,interpolate:s})}get drawWidth(){return Math.max(this.width,this.smask?.width||0,this.mask?.width||0)}get drawHeight(){return Math.max(this.height,this.smask?.height||0,this.mask?.height||0)}decodeBuffer(e){const t=this.bpc,i=this.numComps,a=this.decodeAddends,r=this.decodeCoefficients,s=(1<<t)-1;let n,o;if(1===t){for(n=0,o=e.length;n<o;n++)e[n]=+!e[n];return}let g=0;for(n=0,o=this.width*this.height;n<o;n++)for(let t=0;t<i;t++){e[g]=decodeAndClamp(e[g],a[t],r[t],s);g++}}getComponents(e){const t=this.bpc;if(8===t)return e;const i=this.width,a=this.height,r=this.numComps,s=i*a*r;let n,o=0;n=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const g=i*r,c=(1<<t)-1;let C,h,l=0;if(1===t){let t,i,r;for(let s=0;s<a;s++){i=l+(-8&g);r=l+g;for(;l<i;){h=e[o++];n[l]=h>>7&1;n[l+1]=h>>6&1;n[l+2]=h>>5&1;n[l+3]=h>>4&1;n[l+4]=h>>3&1;n[l+5]=h>>2&1;n[l+6]=h>>1&1;n[l+7]=1&h;l+=8}if(l<r){h=e[o++];t=128;for(;l<r;){n[l++]=+!!(h&t);t>>=1}}}}else{let i=0;h=0;for(l=0,C=s;l<C;++l){if(l%g==0){h=0;i=0}for(;i<t;){h=h<<8|e[o++];i+=8}const a=i-t;let r=h>>a;r<0?r=0:r>c&&(r=c);n[l]=r;h&=(1<<a)-1;i=a}}return n}async fillOpacity(e,t,i,a,r){const s=this.smask,n=this.mask;let o,g,c,C,h,l;if(s){g=s.width;c=s.height;o=new Uint8ClampedArray(g*c);await s.fillGrayBuffer(o);g===t&&c===i||(o=resizeImageMask(o,s.bpc,g,c,t,i))}else if(n)if(n instanceof PDFImage){g=n.width;c=n.height;o=new Uint8ClampedArray(g*c);n.numComps=1;await n.fillGrayBuffer(o);for(C=0,h=g*c;C<h;++C)o[C]=255-o[C];g===t&&c===i||(o=resizeImageMask(o,n.bpc,g,c,t,i))}else{if(!Array.isArray(n))throw new FormatError("Unknown mask format.");{o=new Uint8ClampedArray(t*i);const e=this.numComps;for(C=0,h=t*i;C<h;++C){let t=0;const i=C*e;for(l=0;l<e;++l){const e=r[i+l],a=2*l;if(e<n[a]||e>n[a+1]){t=255;break}}o[C]=t}}}if(o)for(C=0,l=3,h=t*a;C<h;++C,l+=4)e[l]=o[C];else for(C=0,l=3,h=t*a;C<h;++C,l+=4)e[l]=255}undoPreblend(e,t,i){const a=this.smask?.matte;if(!a)return;const r=this.colorSpace.getRgb(a,0),s=r[0],n=r[1],o=r[2],g=t*i*4;for(let t=0;t<g;t+=4){const i=e[t+3];if(0===i){e[t]=255;e[t+1]=255;e[t+2]=255;continue}const a=255/i;e[t]=(e[t]-s)*a+s;e[t+1]=(e[t+1]-n)*a+n;e[t+2]=(e[t+2]-o)*a+o}}async createImageData(e=!1,t=!1){const i=this.drawWidth,a=this.drawHeight,r={width:i,height:a,interpolate:this.interpolate,kind:0,data:null},s=this.numComps,n=this.width,o=this.height,g=this.bpc,c=n*s*g+7>>3,C=t&&ImageResizer.needsToBeResized(i,a);if("DeviceRGBA"===this.colorSpace.name){r.kind=k;const e=r.data=await this.getImageBytes(o*n*4,{});return t?C?ImageResizer.createImage(r,!1):this.createBitmap(k,i,a,e):r}if(!e){let e;"DeviceGray"===this.colorSpace.name&&1===g?e=D:"DeviceRGB"!==this.colorSpace.name||8!==g||this.needsDecode||(e=S);if(e&&!this.smask&&!this.mask&&i===n&&a===o){const s=await this.getImageBytes(o*c,{});if(t)return C?ImageResizer.createImage({data:s,kind:e,width:i,height:a,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,n,o,s);r.kind=e;r.data=s;if(this.needsDecode){assert(e===D,"PDFImage.createImageData: The image must be grayscale.");const t=r.data;for(let e=0,i=t.length;e<i;e++)t[e]^=255}return r}if(this.image instanceof JpegStream&&!this.smask&&!this.mask&&!this.needsDecode){let e=o*c;if(t&&!C){let t=!1;switch(this.colorSpace.name){case"DeviceGray":e*=4;t=!0;break;case"DeviceRGB":e=e/3*4;t=!0;break;case"DeviceCMYK":t=!0}if(t){const t=await this.getImageBytes(e,{drawWidth:i,drawHeight:a,forceRGBA:!0});return this.createBitmap(k,i,a,t)}}else switch(this.colorSpace.name){case"DeviceGray":e*=3;case"DeviceRGB":case"DeviceCMYK":r.kind=S;r.data=await this.getImageBytes(e,{drawWidth:i,drawHeight:a,forceRGB:!0});return C?ImageResizer.createImage(r):r}}}const h=await this.getImageBytes(o*c,{internal:!0}),l=0|h.length/c*a/o,Q=this.getComponents(h);let E,u,d,f,p,m;if(t&&!C){d=new OffscreenCanvas(i,a);f=d.getContext("2d");p=f.createImageData(i,a);m=p.data}r.kind=k;if(e||this.smask||this.mask){t&&!C||(m=new Uint8ClampedArray(i*a*4));E=1;u=!0;await this.fillOpacity(m,i,a,l,Q)}else{if(!t||C){r.kind=S;m=new Uint8ClampedArray(i*a*3);E=0}else{new Uint32Array(m.buffer).fill(FeatureTest.isLittleEndian?4278190080:255);E=1}u=!1}this.needsDecode&&this.decodeBuffer(Q);this.colorSpace.fillRgb(m,n,o,i,a,l,g,Q,E);u&&this.undoPreblend(m,i,l);if(t&&!C){f.putImageData(p,0,0);return{data:null,width:i,height:a,bitmap:d.transferToImageBitmap(),interpolate:this.interpolate}}r.data=m;return C?ImageResizer.createImage(r):r}async fillGrayBuffer(e){const t=this.numComps;if(1!==t)throw new FormatError(`Reading gray scale from a color image: ${t}`);const i=this.width,a=this.height,r=this.bpc,s=i*t*r+7>>3,n=await this.getImageBytes(a*s,{internal:!0}),o=this.getComponents(n);let g,c;if(1===r){c=i*a;if(this.needsDecode)for(g=0;g<c;++g)e[g]=o[g]-1&255;else for(g=0;g<c;++g)e[g]=255&-o[g];return}this.needsDecode&&this.decodeBuffer(o);c=i*a;const C=255/((1<<r)-1);for(g=0;g<c;++g)e[g]=C*o[g]}createBitmap(e,t,i,a){const r=new OffscreenCanvas(t,i),s=r.getContext("2d");let n;if(e===k)n=new ImageData(a,t,i);else{n=s.createImageData(t,i);convertToRGBA({kind:e,src:a,dest:new Uint32Array(n.data.buffer),width:t,height:i,inverseDecode:this.needsDecode})}s.putImageData(n,0,0);return{data:null,width:t,height:i,bitmap:r.transferToImageBitmap(),interpolate:this.interpolate}}async getImageBytes(e,{drawWidth:t,drawHeight:i,forceRGBA:a=!1,forceRGB:r=!1,internal:s=!1}){this.image.reset();this.image.drawWidth=t||this.width;this.image.drawHeight=i||this.height;this.image.forceRGBA=!!a;this.image.forceRGB=!!r;const n=await this.image.getImageData(e,this.jpxDecoderOptions);if(s||this.image instanceof DecodeStream)return n;assert(n instanceof Uint8Array,'PDFImage.getImageBytes: Unsupported "imageBytes" type.');return new Uint8Array(n)}}const kr=Object.freeze({maxImageSize:-1,disableFontFace:!1,ignoreErrors:!1,isEvalSupported:!0,isOffscreenCanvasSupported:!1,canvasMaxAreaInBytes:-1,fontExtraProperties:!1,useSystemFonts:!0,cMapUrl:null,standardFontDataUrl:null}),Rr=1,Nr=2,Gr=Promise.resolve();function normalizeBlendMode(e,t=!1){if(Array.isArray(e)){for(const t of e){const e=normalizeBlendMode(t,!0);if(e)return e}warn(`Unsupported blend mode Array: ${e}`);return"source-over"}if(!(e instanceof Name))return t?null:"source-over";switch(e.name){case"Normal":case"Compatible":return"source-over";case"Multiply":return"multiply";case"Screen":return"screen";case"Overlay":return"overlay";case"Darken":return"darken";case"Lighten":return"lighten";case"ColorDodge":return"color-dodge";case"ColorBurn":return"color-burn";case"HardLight":return"hard-light";case"SoftLight":return"soft-light";case"Difference":return"difference";case"Exclusion":return"exclusion";case"Hue":return"hue";case"Saturation":return"saturation";case"Color":return"color";case"Luminosity":return"luminosity"}if(t)return null;warn(`Unsupported blend mode: ${e.name}`);return"source-over"}function addLocallyCachedImageOps(e,t){t.objId&&e.addDependency(t.objId);e.addImageOps(t.fn,t.args,t.optionalContent);t.fn===Ve&&t.args[0]?.count>0&&t.args[0].count++}class TimeSlotManager{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){if(++this.checked<TimeSlotManager.CHECK_TIME_EVERY)return!1;this.checked=0;return this.endTime<=Date.now()}reset(){this.endTime=Date.now()+TimeSlotManager.TIME_SLOT_DURATION_MS;this.checked=0}}class PartialEvaluator{constructor({xref:e,handler:t,pageIndex:i,idFactory:a,fontCache:r,builtInCMapCache:s,standardFontDataCache:n,globalImageCache:o,systemFontCache:g,options:c=null}){this.xref=e;this.handler=t;this.pageIndex=i;this.idFactory=a;this.fontCache=r;this.builtInCMapCache=s;this.standardFontDataCache=n;this.globalImageCache=o;this.systemFontCache=g;this.options=c||kr;this.type3FontRefs=null;this._regionalImageCache=new RegionalImageCache;this._fetchBuiltInCMapBound=this.fetchBuiltInCMap.bind(this);ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes)}get _pdfFunctionFactory(){return shadow(this,"_pdfFunctionFactory",new PDFFunctionFactory({xref:this.xref,isEvalSupported:this.options.isEvalSupported}))}get parsingType3Font(){return!!this.type3FontRefs}clone(e=null){const t=Object.create(this);t.options=Object.assign(Object.create(null),this.options,e);return t}hasBlendModes(e,t){if(!(e instanceof Dict))return!1;if(e.objId&&t.has(e.objId))return!1;const i=new RefSet(t);e.objId&&i.put(e.objId);const a=[e],r=this.xref;for(;a.length;){const e=a.shift(),t=e.get("ExtGState");if(t instanceof Dict)for(let e of t.getRawValues()){if(e instanceof Ref){if(i.has(e))continue;try{e=r.fetch(e)}catch(t){i.put(e);info(`hasBlendModes - ignoring ExtGState: "${t}".`);continue}}if(!(e instanceof Dict))continue;e.objId&&i.put(e.objId);const t=e.get("BM");if(t instanceof Name){if("Normal"!==t.name)return!0}else if(void 0!==t&&Array.isArray(t))for(const e of t)if(e instanceof Name&&"Normal"!==e.name)return!0}const s=e.get("XObject");if(s instanceof Dict)for(let e of s.getRawValues()){if(e instanceof Ref){if(i.has(e))continue;try{e=r.fetch(e)}catch(t){i.put(e);info(`hasBlendModes - ignoring XObject: "${t}".`);continue}}if(!(e instanceof BaseStream))continue;e.dict.objId&&i.put(e.dict.objId);const t=e.dict.get("Resources");if(t instanceof Dict&&(!t.objId||!i.has(t.objId))){a.push(t);t.objId&&i.put(t.objId)}}}for(const e of i)t.put(e);return!1}async fetchBuiltInCMap(e){const t=this.builtInCMapCache.get(e);if(t)return t;let i;if(null!==this.options.cMapUrl){const t=`${this.options.cMapUrl}${e}.bcmap`,a=await fetch(t);if(!a.ok)throw new Error(`fetchBuiltInCMap: failed to fetch file "${t}" with "${a.statusText}".`);i={cMapData:new Uint8Array(await a.arrayBuffer()),compressionType:wA.BINARY}}else i=await this.handler.sendWithPromise("FetchBuiltInCMap",{name:e});i.compressionType!==wA.NONE&&this.builtInCMapCache.set(e,i);return i}async fetchStandardFontData(e){const t=this.standardFontDataCache.get(e);if(t)return new Stream(t);if(this.options.useSystemFonts&&"Symbol"!==e&&"ZapfDingbats"!==e)return null;const i=Xi()[e];let a;if(null!==this.options.standardFontDataUrl){const e=`${this.options.standardFontDataUrl}${i}`,t=await fetch(e);t.ok?a=new Uint8Array(await t.arrayBuffer()):warn(`fetchStandardFontData: failed to fetch file "${e}" with "${t.statusText}".`)}else try{a=await this.handler.sendWithPromise("FetchStandardFontData",{filename:i})}catch(e){warn(`fetchStandardFontData: failed to fetch file "${i}" with "${e}".`)}if(!a)return null;this.standardFontDataCache.set(e,a);return new Stream(a)}async buildFormXObject(e,t,i,a,r,s,n){const o=t.dict,g=lookupMatrix(o.getArray("Matrix"),null),c=lookupNormalRect(o.getArray("BBox"),null);let C,h;o.has("OC")&&(C=await this.parseMarkedContentProps(o.get("OC"),e));void 0!==C&&a.addOp(ve,["OC",C]);const l=o.get("Group");if(l){h={matrix:g,bbox:c,smask:i,isolated:!1,knockout:!1};let t=null;if(isName(l.get("S"),"Transparency")){h.isolated=l.get("I")||!1;h.knockout=l.get("K")||!1;if(l.has("CS")){const i=l.getRaw("CS"),a=ColorSpace.getCached(i,this.xref,n);t=a||await this.parseColorSpace({cs:i,resources:e,localColorSpaceCache:n})}}if(i?.backdrop){t||=ColorSpace.singletons.rgb;i.backdrop=t.getRgb(i.backdrop,0)}a.addOp(We,[h])}const Q=l?[g,null]:[g,c];a.addOp(Oe,Q);await this.getOperatorList({stream:t,task:r,resources:o.get("Resources")||e,operatorList:a,initialState:s});a.addOp(Pe,[]);l&&a.addOp(je,[h]);void 0!==C&&a.addOp(Te,[])}_sendImgData(e,t,i=!1){const a=t?[t.bitmap||t.data.buffer]:null;return this.parsingType3Font||i?this.handler.send("commonobj",[e,"Image",t],a):this.handler.send("obj",[e,this.pageIndex,"Image",t],a)}async buildPaintImageXObject({resources:e,image:t,isInline:i=!1,operatorList:a,cacheKey:r,localImageCache:s,localColorSpaceCache:n}){const o=t.dict,g=o.objId,c=o.get("W","Width"),C=o.get("H","Height");if(!c||"number"!=typeof c||!C||"number"!=typeof C){warn("Image dimensions are missing, or not numbers.");return}const h=this.options.maxImageSize;if(-1!==h&&c*C>h){const e="Image exceeded maximum allowed size and was removed.";if(this.options.ignoreErrors){warn(e);return}throw new Error(e)}let l;o.has("OC")&&(l=await this.parseMarkedContentProps(o.get("OC"),e));let Q,E;if(o.get("IM","ImageMask")||!1){const e=o.get("I","Interpolate"),i=c+7>>3,n=t.getBytes(i*C),h=o.getArray("D","Decode");if(this.parsingType3Font){Q=PDFImage.createRawMask({imgArray:n,width:c,height:C,imageIsFromDecodeStream:t instanceof DecodeStream,inverseDecode:h?.[0]>0,interpolate:e});Q.cached=!!r;E=[Q];a.addImageOps(Ve,E,l);if(r){const e={fn:Ve,args:E,optionalContent:l};s.set(r,g,e);g&&this._regionalImageCache.set(null,g,e)}return}Q=await PDFImage.createMask({imgArray:n,width:c,height:C,imageIsFromDecodeStream:t instanceof DecodeStream,inverseDecode:h?.[0]>0,interpolate:e,isOffscreenCanvasSupported:this.options.isOffscreenCanvasSupported});if(Q.isSingleOpaquePixel){a.addImageOps(it,[],l);if(r){const e={fn:it,args:[],optionalContent:l};s.set(r,g,e);g&&this._regionalImageCache.set(null,g,e)}return}const u=`mask_${this.idFactory.createObjId()}`;a.addDependency(u);Q.dataLen=Q.bitmap?Q.width*Q.height*4:Q.data.length;this._sendImgData(u,Q);E=[{data:u,width:Q.width,height:Q.height,interpolate:Q.interpolate,count:1}];a.addImageOps(Ve,E,l);if(r){const e={objId:u,fn:Ve,args:E,optionalContent:l};s.set(r,g,e);g&&this._regionalImageCache.set(null,g,e)}return}if(i&&c+C<200&&!o.has("SMask")&&!o.has("Mask")){try{const r=new PDFImage({xref:this.xref,res:e,image:t,isInline:i,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:n});Q=await r.createImageData(!0,!1);a.isOffscreenCanvasSupported=this.options.isOffscreenCanvasSupported;a.addImageOps($e,[Q],l)}catch(e){const t=`Unable to decode inline image: "${e}".`;if(!this.options.ignoreErrors)throw new Error(t);warn(t)}return}let u=`img_${this.idFactory.createObjId()}`,d=!1;if(this.parsingType3Font)u=`${this.idFactory.getDocId()}_type3_${u}`;else if(r&&g){d=this.globalImageCache.shouldCache(g,this.pageIndex);if(d){assert(!i,"Cannot cache an inline image globally.");u=`${this.idFactory.getDocId()}_${u}`}}a.addDependency(u);E=[u,c,C];a.addImageOps(ze,E,l);if(d){if(this.globalImageCache.hasDecodeFailed(g)){this.globalImageCache.setData(g,{objId:u,fn:ze,args:E,optionalContent:l,byteSize:0});this._sendImgData(u,null,d);return}if(c*C>25e4||o.has("SMask")||o.has("Mask")){const e=await this.handler.sendWithPromise("commonobj",[u,"CopyLocalImage",{imageRef:g}]);if(e){this.globalImageCache.setData(g,{objId:u,fn:ze,args:E,optionalContent:l,byteSize:0});this.globalImageCache.addByteSize(g,e);return}}}PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:i,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:n}).then((async e=>{Q=await e.createImageData(!1,this.options.isOffscreenCanvasSupported);Q.dataLen=Q.bitmap?Q.width*Q.height*4:Q.data.length;Q.ref=g;d&&this.globalImageCache.addByteSize(g,Q.dataLen);return this._sendImgData(u,Q,d)})).catch((e=>{warn(`Unable to decode image "${u}": "${e}".`);g&&this.globalImageCache.addDecodeFailed(g);return this._sendImgData(u,null,d)}));if(r){const e={objId:u,fn:ze,args:E,optionalContent:l};s.set(r,g,e);if(g){this._regionalImageCache.set(null,g,e);d&&this.globalImageCache.setData(g,{objId:u,fn:ze,args:E,optionalContent:l,byteSize:0})}}}handleSMask(e,t,i,a,r,s){const n=e.get("G"),o={subtype:e.get("S").name,backdrop:e.get("BC")},g=e.get("TR");if(isPDFFunction(g)){const e=this._pdfFunctionFactory.create(g),t=new Uint8Array(256),i=new Float32Array(1);for(let a=0;a<256;a++){i[0]=a/255;e(i,0,i,0);t[a]=255*i[0]|0}o.transferMap=t}return this.buildFormXObject(t,n,o,i,a,r.state.clone(),s)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!isPDFFunction(e))return null;t=[e]}const i=[];let a=0,r=0;for(const e of t){const t=this.xref.fetchIfRef(e);a++;if(isName(t,"Identity")){i.push(null);continue}if(!isPDFFunction(t))return null;const s=this._pdfFunctionFactory.create(t),n=new Uint8Array(256),o=new Float32Array(1);for(let e=0;e<256;e++){o[0]=e/255;s(o,0,o,0);n[e]=255*o[0]|0}i.push(n);r++}return 1!==a&&4!==a||0===r?null:i}handleTilingType(e,t,i,a,r,s,n,o){const g=new OperatorList,c=Dict.merge({xref:this.xref,dictArray:[r.get("Resources"),i]});return this.getOperatorList({stream:a,task:n,resources:c,operatorList:g}).then((function(){const i=g.getIR(),a=getTilingPatternIR(i,r,t);s.addDependencies(g.dependencies);s.addOp(e,a);r.objId&&o.set(null,r.objId,{operatorListIR:i,dict:r})})).catch((e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`handleTilingType - ignoring pattern: "${e}".`)}}))}async handleSetFont(e,t,i,a,r,s,n=null,o=null){const g=t?.[0]instanceof Name?t[0].name:null;let c=await this.loadFont(g,i,e,n,o);if(c.font.isType3Font)try{await c.loadType3Data(this,e,r);a.addDependencies(c.type3Dependencies)}catch(e){c=new TranslatedFont({loadedName:"g_font_error",font:new ErrorFont(`Type3 font load error: ${e}`),dict:c.font,evaluatorOptions:this.options})}s.font=c.font;c.send(this.handler);return c.loadedName}handleText(e,t){const i=t.font,a=i.charsToGlyphs(e);if(i.data){(!!(t.textRenderingMode&b)||"Pattern"===t.fillColorSpace.name||i.disableFontFace||this.options.disableFontFace)&&PartialEvaluator.buildFontPaths(i,a,this.handler,this.options)}return a}ensureStateFont(e){if(e.font)return;const t=new FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;warn(`ensureStateFont: "${t}".`)}async setGState({resources:e,gState:t,operatorList:i,cacheKey:a,task:r,stateManager:s,localGStateCache:n,localColorSpaceCache:o}){const g=t.objId;let c=!0;const C=[];let h=Promise.resolve();for(const a of t.getKeys()){const n=t.get(a);switch(a){case"Type":break;case"LW":case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":C.push([a,n]);break;case"Font":c=!1;h=h.then((()=>this.handleSetFont(e,null,n[0],i,r,s.state).then((function(e){i.addDependency(e);C.push([a,[e,n[1]]])}))));break;case"BM":C.push([a,normalizeBlendMode(n)]);break;case"SMask":if(isName(n,"None")){C.push([a,!1]);break}if(n instanceof Dict){c=!1;h=h.then((()=>this.handleSMask(n,e,i,r,s,o)));C.push([a,!0])}else warn("Unsupported SMask type");break;case"TR":const t=this.handleTransferFunction(n);C.push([a,t]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":info("graphic state operator "+a);break;default:info("Unknown graphic state operator "+a)}}await h;C.length>0&&i.addOp(xA,[C]);c&&n.set(a,g,C)}loadFont(e,t,i,a=null,r=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new ErrorFont(`Font "${e}" is not available.`),dict:t,evaluatorOptions:this.options});let s;if(t)t instanceof Ref&&(s=t);else{const t=i.get("Font");t&&(s=t.getRaw(e))}if(s){if(this.type3FontRefs?.has(s))return errorFont();if(this.fontCache.has(s))return this.fontCache.get(s);try{t=this.xref.fetchIfRef(s)}catch(e){warn(`loadFont - lookup failed: "${e}".`)}}if(!(t instanceof Dict)){if(!this.options.ignoreErrors&&!this.parsingType3Font){warn(`Font "${e}" is not available.`);return errorFont()}warn(`Font "${e}" is not available -- attempting to fallback to a default font.`);t=a||PartialEvaluator.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const{promise:n,resolve:o}=Promise.withResolvers();let g;try{g=this.preEvaluateFont(t);g.cssFontInfo=r}catch(e){warn(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:c,hash:C}=g,h=s instanceof Ref;let l;if(C&&c instanceof Dict){const e=c.fontAliases||=Object.create(null);if(e[C]){const t=e[C].aliasRef;if(h&&t&&this.fontCache.has(t)){this.fontCache.putAlias(s,t);return this.fontCache.get(s)}}else e[C]={fontID:this.idFactory.createFontId()};h&&(e[C].aliasRef=s);l=e[C].fontID}else l=this.idFactory.createFontId();assert(l?.startsWith("f"),'The "fontID" must be (correctly) defined.');if(h)this.fontCache.put(s,n);else{t.cacheKey=`cacheKey_${l}`;this.fontCache.put(t.cacheKey,n)}t.loadedName=`${this.idFactory.getDocId()}_${l}`;this.translateFont(g).then((e=>{o(new TranslatedFont({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{warn(`loadFont - translateFont failed: "${e}".`);o(new TranslatedFont({loadedName:t.loadedName,font:new ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))}));return n}buildPath(e,t,i,a=!1){const r=e.length-1;i||(i=[]);if(r<0||e.fnArray[r]!==at){if(a){warn(`Encountered path operator "${t}" inside of a text object.`);e.addOp(UA,null)}let r;switch(t){case qA:const e=i[0]+i[2],t=i[1]+i[3];r=[Math.min(i[0],e),Math.min(i[1],t),Math.max(i[0],e),Math.max(i[1],t)];break;case HA:case JA:r=[i[0],i[1],i[0],i[1]];break;default:r=[1/0,1/0,-1/0,-1/0]}e.addOp(at,[[t],i,r]);a&&e.addOp(MA,null)}else{const a=e.argsArray[r];a[0].push(t);a[1].push(...i);const s=a[2];switch(t){case qA:const e=i[0]+i[2],t=i[1]+i[3];s[0]=Math.min(s[0],i[0],e);s[1]=Math.min(s[1],i[1],t);s[2]=Math.max(s[2],i[0],e);s[3]=Math.max(s[3],i[1],t);break;case HA:case JA:s[0]=Math.min(s[0],i[0]);s[1]=Math.min(s[1],i[1]);s[2]=Math.max(s[2],i[0]);s[3]=Math.max(s[3],i[1])}}}parseColorSpace({cs:e,resources:t,localColorSpaceCache:i}){return ColorSpace.parseAsync({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:i}).catch((e=>{if(e instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`parseColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}))}parseShading({shading:e,resources:t,localColorSpaceCache:i,localShadingPatternCache:a}){let r,s=a.get(e);if(s)return s;try{r=Pattern.parseShading(e,this.xref,t,this._pdfFunctionFactory,i).getIR()}catch(t){if(t instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`parseShading - ignoring shading: "${t}".`);a.set(e,null);return null}throw t}s=`pattern_${this.idFactory.createObjId()}`;this.parsingType3Font&&(s=`${this.idFactory.getDocId()}_type3_${s}`);a.set(e,s);this.parsingType3Font?this.handler.send("commonobj",[s,"Pattern",r]):this.handler.send("obj",[s,this.pageIndex,"Pattern",r]);return s}handleColorN(e,t,i,a,r,s,n,o,g,c){const C=i.pop();if(C instanceof Name){const h=r.getRaw(C.name),l=h instanceof Ref&&g.getByRef(h);if(l)try{const r=a.base?a.base.getRgb(i,0):null,s=getTilingPatternIR(l.operatorListIR,l.dict,r);e.addOp(t,s);return}catch{}const Q=this.xref.fetchIfRef(h);if(Q){const r=Q instanceof BaseStream?Q.dict:Q,C=r.get("PatternType");if(C===Rr){const o=a.base?a.base.getRgb(i,0):null;return this.handleTilingType(t,o,s,Q,r,e,n,g)}if(C===Nr){const i=r.get("Shading"),a=this.parseShading({shading:i,resources:s,localColorSpaceCache:o,localShadingPatternCache:c});if(a){const i=lookupMatrix(r.getArray("Matrix"),null);e.addOp(t,["Shading",a,i])}return}throw new FormatError(`Unknown PatternType: ${C}`)}}throw new FormatError(`Unknown PatternName: ${C}`)}_parseVisibilityExpression(e,t,i){if(++t>10){warn("Visibility expression is too deeply nested");return}const a=e.length,r=this.xref.fetchIfRef(e[0]);if(!(a<2)&&r instanceof Name){switch(r.name){case"And":case"Or":case"Not":i.push(r.name);break;default:warn(`Invalid operator ${r.name} in visibility expression`);return}for(let r=1;r<a;r++){const a=e[r],s=this.xref.fetchIfRef(a);if(Array.isArray(s)){const e=[];i.push(e);this._parseVisibilityExpression(s,t,e)}else a instanceof Ref&&i.push(a.toString())}}else warn("Invalid visibility expression")}async parseMarkedContentProps(e,t){let i;if(e instanceof Name){i=t.get("Properties").get(e.name)}else{if(!(e instanceof Dict))throw new FormatError("Optional content properties malformed.");i=e}const a=i.get("Type")?.name;if("OCG"===a)return{type:a,id:i.objId};if("OCMD"===a){const e=i.get("VE");if(Array.isArray(e)){const t=[];this._parseVisibilityExpression(e,0,t);if(t.length>0)return{type:"OCMD",expression:t}}const t=i.get("OCGs");if(Array.isArray(t)||t instanceof Dict){const e=[];if(Array.isArray(t))for(const i of t)e.push(i.toString());else e.push(t.objId);return{type:a,ids:e,policy:i.get("P")instanceof Name?i.get("P").name:null,expression:null}}if(t instanceof Ref)return{type:a,id:t.toString()}}return null}getOperatorList({stream:e,task:t,resources:i,operatorList:a,initialState:r=null,fallbackFontDict:s=null}){i||=Dict.empty;r||=new EvalState;if(!a)throw new Error('getOperatorList: missing "operatorList" parameter');const n=this,o=this.xref;let g=!1;const c=new LocalImageCache,C=new LocalColorSpaceCache,h=new LocalGStateCache,l=new LocalTilingPatternCache,Q=new Map,E=i.get("XObject")||Dict.empty,u=i.get("Pattern")||Dict.empty,d=new StateManager(r),f=new EvaluatorPreprocessor(e,o,d),p=new TimeSlotManager;function closePendingRestoreOPS(e){for(let e=0,t=f.savedStatesDepth;e<t;e++)a.addOp(MA,[])}return new Promise((function promiseBody(e,r){const next=function(t){Promise.all([t,a.ready]).then((function(){try{promiseBody(e,r)}catch(e){r(e)}}),r)};t.ensureNotTerminated();p.reset();const m={};let y,w,b,D,S,k;for(;!(y=p.check());){m.args=null;if(!f.read(m))break;let e=m.args,r=m.fn;switch(0|r){case Le:k=e[0]instanceof Name;S=e[0].name;if(k){const t=c.getByName(S);if(t){addLocallyCachedImageOps(a,t);e=null;continue}}next(new Promise((function(e,r){if(!k)throw new FormatError("XObject must be referred to by name.");let s=E.getRaw(S);if(s instanceof Ref){const t=c.getByRef(s)||n._regionalImageCache.getByRef(s);if(t){addLocallyCachedImageOps(a,t);e();return}const i=n.globalImageCache.getData(s,n.pageIndex);if(i){a.addDependency(i.objId);a.addImageOps(i.fn,i.args,i.optionalContent);e();return}s=o.fetch(s)}if(!(s instanceof BaseStream))throw new FormatError("XObject should be a stream");const g=s.dict.get("Subtype");if(!(g instanceof Name))throw new FormatError("XObject should have a Name subtype");if("Form"!==g.name)if("Image"!==g.name){if("PS"!==g.name)throw new FormatError(`Unhandled XObject subtype ${g.name}`);info("Ignored XObject subtype PS");e()}else n.buildPaintImageXObject({resources:i,image:s,operatorList:a,cacheKey:S,localImageCache:c,localColorSpaceCache:C}).then(e,r);else{d.save();n.buildFormXObject(i,s,null,a,t,d.state.clone(),C).then((function(){d.restore();e()}),r)}})).catch((function(e){if(!(e instanceof AbortException)){if(!n.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring XObject: "${e}".`)}})));return;case ne:var R=e[1];next(n.handleSetFont(i,e,null,a,t,d.state,s).then((function(e){a.addDependency(e);a.addOp(ne,[e,R])})));return;case ee:g=!0;break;case te:g=!1;break;case Me:var N=e[0].cacheKey;if(N){const t=c.getByName(N);if(t){addLocallyCachedImageOps(a,t);e=null;continue}}next(n.buildPaintImageXObject({resources:i,image:e[0],isInline:!0,operatorList:a,cacheKey:N,localImageCache:c,localColorSpaceCache:C}));return;case le:if(!d.state.font){n.ensureStateFont(d.state);continue}e[0]=n.handleText(e[0],d.state);break;case Be:if(!d.state.font){n.ensureStateFont(d.state);continue}var G=[],x=d.state;for(const t of e[0])"string"==typeof t?G.push(...n.handleText(t,x)):"number"==typeof t&&G.push(t);e[0]=G;r=le;break;case Qe:if(!d.state.font){n.ensureStateFont(d.state);continue}a.addOp(he);e[0]=n.handleText(e[0],d.state);r=le;break;case Ee:if(!d.state.font){n.ensureStateFont(d.state);continue}a.addOp(he);a.addOp(ae,[e.shift()]);a.addOp(ie,[e.shift()]);e[0]=n.handleText(e[0],d.state);r=le;break;case oe:d.state.textRenderingMode=e[0];break;case pe:{const t=ColorSpace.getCached(e[0],o,C);if(t){d.state.fillColorSpace=t;continue}next(n.parseColorSpace({cs:e[0],resources:i,localColorSpaceCache:C}).then((function(e){e&&(d.state.fillColorSpace=e)})));return}case fe:{const t=ColorSpace.getCached(e[0],o,C);if(t){d.state.strokeColorSpace=t;continue}next(n.parseColorSpace({cs:e[0],resources:i,localColorSpaceCache:C}).then((function(e){e&&(d.state.strokeColorSpace=e)})));return}case we:D=d.state.fillColorSpace;e=D.getRgb(e,0);r=ke;break;case me:D=d.state.strokeColorSpace;e=D.getRgb(e,0);r=Se;break;case Fe:d.state.fillColorSpace=ColorSpace.singletons.gray;e=ColorSpace.singletons.gray.getRgb(e,0);r=ke;break;case De:d.state.strokeColorSpace=ColorSpace.singletons.gray;e=ColorSpace.singletons.gray.getRgb(e,0);r=Se;break;case Ne:d.state.fillColorSpace=ColorSpace.singletons.cmyk;e=ColorSpace.singletons.cmyk.getRgb(e,0);r=ke;break;case Re:d.state.strokeColorSpace=ColorSpace.singletons.cmyk;e=ColorSpace.singletons.cmyk.getRgb(e,0);r=Se;break;case ke:d.state.fillColorSpace=ColorSpace.singletons.rgb;e=ColorSpace.singletons.rgb.getRgb(e,0);break;case Se:d.state.strokeColorSpace=ColorSpace.singletons.rgb;e=ColorSpace.singletons.rgb.getRgb(e,0);break;case be:D=d.state.fillColorSpace;if("Pattern"===D.name){next(n.handleColorN(a,be,e,D,u,i,t,C,l,Q));return}e=D.getRgb(e,0);r=ke;break;case ye:D=d.state.strokeColorSpace;if("Pattern"===D.name){next(n.handleColorN(a,ye,e,D,u,i,t,C,l,Q));return}e=D.getRgb(e,0);r=Se;break;case Ge:var U=i.get("Shading");if(!U)throw new FormatError("No shading resource found");var M=U.get(e[0].name);if(!M)throw new FormatError("No shading object found");const f=n.parseShading({shading:M,resources:i,localColorSpaceCache:C,localShadingPatternCache:Q});if(!f)continue;e=[f];r=Ge;break;case xA:k=e[0]instanceof Name;S=e[0].name;if(k){const t=h.getByName(S);if(t){t.length>0&&a.addOp(xA,[t]);e=null;continue}}next(new Promise((function(e,r){if(!k)throw new FormatError("GState must be referred to by name.");const s=i.get("ExtGState");if(!(s instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const o=s.get(S);if(!(o instanceof Dict))throw new FormatError("GState should be a dictionary.");n.setGState({resources:i,gState:o,operatorList:a,cacheKey:S,task:t,stateManager:d,localGStateCache:h,localColorSpaceCache:C}).then(e,r)})).catch((function(e){if(!(e instanceof AbortException)){if(!n.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring ExtGState: "${e}".`)}})));return;case HA:case JA:case YA:case vA:case TA:case KA:case qA:n.buildPath(a,r,e,g);continue;case He:case Je:case Ke:case qe:continue;case ve:if(!(e[0]instanceof Name)){warn(`Expected name for beginMarkedContentProps arg0=${e[0]}`);a.addOp(ve,["OC",null]);continue}if("OC"===e[0].name){next(n.parseMarkedContentProps(e[1],i).then((e=>{a.addOp(ve,["OC",e])})).catch((e=>{if(!(e instanceof AbortException)){if(!n.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`);a.addOp(ve,["OC",null])}})));return}e=[e[0].name,e[1]instanceof Dict?e[1].get("MCID"):null];break;default:if(null!==e){for(w=0,b=e.length;w<b&&!(e[w]instanceof Dict);w++);if(w<b){warn("getOperatorList - ignoring operator: "+r);continue}}}a.addOp(r,e)}if(y)next(Gr);else{closePendingRestoreOPS();e()}})).catch((e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`);closePendingRestoreOPS()}}))}getTextContent({stream:e,task:t,resources:i,stateManager:s=null,includeMarkedContent:n=!1,sink:o,seenStyles:g=new Set,viewBox:c,lang:C=null,markedContentData:h=null,disableNormalization:l=!1,keepWhiteSpace:Q=!1}){i||=Dict.empty;s||=new StateManager(new TextState);n&&(h||={level:0});const E={items:[],styles:Object.create(null),lang:C},u={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},d=[" "," "];let f=0;function saveLastChar(e){const t=(f+1)%2,i=" "!==d[f]&&" "===d[t];d[f]=e;f=t;return!Q&&i}function shouldAddWhitepsace(){return!Q&&" "!==d[f]&&" "===d[(f+1)%2]}function resetLastChars(){d[0]=d[1]=" ";f=0}const p=this,m=this.xref,y=[];let w=null;const b=new LocalImageCache,D=new LocalGStateCache,S=new EvaluatorPreprocessor(e,m,s);let k;function pushWhitespace({width:e=0,height:t=0,transform:i=u.prevTransform,fontName:a=u.fontName}){E.items.push({str:" ",dir:"ltr",width:e,height:t,transform:i,fontName:a,hasEOL:!1})}function getCurrentTextTransform(){const e=k.font,t=[k.fontSize*k.textHScale,0,0,k.fontSize,0,k.textRise];if(e.isType3Font&&(k.fontSize<=1||e.isCharBBox)&&!isArrayEqual(k.fontMatrix,r)){const i=e.bbox[3]-e.bbox[1];i>0&&(t[3]*=i*k.fontMatrix[3])}return Util.transform(k.ctm,Util.transform(k.textMatrix,t))}function ensureTextContentItem(){if(u.initialized)return u;const{font:e,loadedName:t}=k;if(!g.has(t)){g.add(t);E.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical};if(p.options.fontExtraProperties&&e.systemFontInfo){const i=E.styles[t];i.fontSubstitution=e.systemFontInfo.css;i.fontSubstitutionLoadedName=e.systemFontInfo.loadedName}}u.fontName=t;const i=u.transform=getCurrentTextTransform();if(e.vertical){u.width=u.totalWidth=Math.hypot(i[0],i[1]);u.height=u.totalHeight=0;u.vertical=!0}else{u.width=u.totalWidth=0;u.height=u.totalHeight=Math.hypot(i[2],i[3]);u.vertical=!1}const a=Math.hypot(k.textLineMatrix[0],k.textLineMatrix[1]),r=Math.hypot(k.ctm[0],k.ctm[1]);u.textAdvanceScale=r*a;const{fontSize:s}=k;u.trackingSpaceMin=.102*s;u.notASpace=.03*s;u.negativeSpaceMax=-.2*s;u.spaceInFlowMin=.102*s;u.spaceInFlowMax=.6*s;u.hasEOL=!1;u.initialized=!0;return u}function updateAdvanceScale(){if(!u.initialized)return;const e=Math.hypot(k.textLineMatrix[0],k.textLineMatrix[1]),t=Math.hypot(k.ctm[0],k.ctm[1])*e;if(t!==u.textAdvanceScale){if(u.vertical){u.totalHeight+=u.height*u.textAdvanceScale;u.height=0}else{u.totalWidth+=u.width*u.textAdvanceScale;u.width=0}u.textAdvanceScale=t}}function runBidiTransform(e){let t=e.str.join("");l||(t=function normalizeUnicode(e){if(!ct){ct=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu;Ct=new Map([["ſt","ſt"]])}return e.replaceAll(ct,((e,t,i)=>t?t.normalize("NFKC"):Ct.get(i)))}(t));const i=bidi(t,-1,e.vertical);return{str:i.str,dir:i.dir,width:Math.abs(e.totalWidth),height:Math.abs(e.totalHeight),transform:e.transform,fontName:e.fontName,hasEOL:e.hasEOL}}async function handleSetFont(e,a){const s=await p.loadFont(e,a,i);if(s.font.isType3Font)try{await s.loadType3Data(p,i,t)}catch{}k.loadedName=s.loadedName;k.font=s.font;k.fontMatrix=s.font.fontMatrix||r}function applyInverseRotation(e,t,i){const a=Math.hypot(i[0],i[1]);return[(i[0]*e+i[1]*t)/a,(i[2]*e+i[3]*t)/a]}function compareWithLastPosition(e){const t=getCurrentTextTransform();let i=t[4],a=t[5];if(k.font?.vertical){if(i<c[0]||i>c[2]||a+e<c[1]||a>c[3])return!1}else if(i+e<c[0]||i>c[2]||a<c[1]||a>c[3])return!1;if(!k.font||!u.prevTransform)return!0;let r=u.prevTransform[4],s=u.prevTransform[5];if(r===i&&s===a)return!0;let n=-1;t[0]&&0===t[1]&&0===t[2]?n=t[0]>0?0:180:t[1]&&0===t[0]&&0===t[3]&&(n=t[1]>0?90:270);switch(n){case 0:break;case 90:[i,a]=[a,i];[r,s]=[s,r];break;case 180:[i,a,r,s]=[-i,-a,-r,-s];break;case 270:[i,a]=[-a,-i];[r,s]=[-s,-r];break;default:[i,a]=applyInverseRotation(i,a,t);[r,s]=applyInverseRotation(r,s,u.prevTransform)}if(k.font.vertical){const e=(s-a)/u.textAdvanceScale,t=i-r,n=Math.sign(u.height);if(e<n*u.negativeSpaceMax){if(Math.abs(t)>.5*u.width){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(t)>u.width){appendEOL();return!0}e<=n*u.notASpace&&resetLastChars();if(e<=n*u.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({height:Math.abs(e)})}else u.height+=e;else if(!addFakeSpaces(e,u.prevTransform,n))if(0===u.str.length){resetLastChars();pushWhitespace({height:Math.abs(e)})}else u.height+=e;Math.abs(t)>.25*u.width&&flushTextContentItem();return!0}const o=(i-r)/u.textAdvanceScale,g=a-s,C=Math.sign(u.width);if(o<C*u.negativeSpaceMax){if(Math.abs(g)>.5*u.height){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(g)>u.height){appendEOL();return!0}o<=C*u.notASpace&&resetLastChars();if(o<=C*u.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({width:Math.abs(o)})}else u.width+=o;else if(!addFakeSpaces(o,u.prevTransform,C))if(0===u.str.length){resetLastChars();pushWhitespace({width:Math.abs(o)})}else u.width+=o;Math.abs(g)>.25*u.height&&flushTextContentItem();return!0}function buildTextContentItem({chars:e,extraSpacing:t}){const i=k.font;if(!e){const e=k.charSpacing+t;e&&(i.vertical?k.translateTextMatrix(0,-e):k.translateTextMatrix(e*k.textHScale,0));Q&&compareWithLastPosition(0);return}const a=i.charsToGlyphs(e),r=k.fontMatrix[0]*k.fontSize;for(let e=0,s=a.length;e<s;e++){const n=a[e],{category:o}=n;if(o.isInvisibleFormatMark)continue;let g=k.charSpacing+(e+1===s?t:0),c=n.width;i.vertical&&(c=n.vmetric?n.vmetric[0]:-c);let C=c*r;if(!Q&&o.isWhitespace){if(i.vertical){g+=-C+k.wordSpacing;k.translateTextMatrix(0,-g)}else{g+=C+k.wordSpacing;k.translateTextMatrix(g*k.textHScale,0)}saveLastChar(" ");continue}if(!o.isZeroWidthDiacritic&&!compareWithLastPosition(C)){i.vertical?k.translateTextMatrix(0,C):k.translateTextMatrix(C*k.textHScale,0);continue}const h=ensureTextContentItem();o.isZeroWidthDiacritic&&(C=0);if(i.vertical){k.translateTextMatrix(0,C);C=Math.abs(C);h.height+=C}else{C*=k.textHScale;k.translateTextMatrix(C,0);h.width+=C}C&&(h.prevTransform=getCurrentTextTransform());const l=n.unicode;saveLastChar(l)&&h.str.push(" ");h.str.push(l);g&&(i.vertical?k.translateTextMatrix(0,-g):k.translateTextMatrix(g*k.textHScale,0))}}function appendEOL(){resetLastChars();if(u.initialized){u.hasEOL=!0;flushTextContentItem()}else E.items.push({str:"",dir:"ltr",width:0,height:0,transform:getCurrentTextTransform(),fontName:k.loadedName,hasEOL:!0})}function addFakeSpaces(e,t,i){if(i*u.spaceInFlowMin<=e&&e<=i*u.spaceInFlowMax){if(u.initialized){resetLastChars();u.str.push(" ")}return!1}const a=u.fontName;let r=0;if(u.vertical){r=e;e=0}flushTextContentItem();resetLastChars();pushWhitespace({width:Math.abs(e),height:Math.abs(r),transform:t||getCurrentTextTransform(),fontName:a});return!0}function flushTextContentItem(){if(u.initialized&&u.str){u.vertical?u.totalHeight+=u.height*u.textAdvanceScale:u.totalWidth+=u.width*u.textAdvanceScale;E.items.push(runBidiTransform(u));u.initialized=!1;u.str.length=0}}function enqueueChunk(e=!1){const t=E.items.length;if(0!==t&&!(e&&t<10)){o.enqueue(E,t);E.items=[];E.styles=Object.create(null)}}const R=new TimeSlotManager;return new Promise((function promiseBody(e,r){const next=function(t){enqueueChunk(!0);Promise.all([t,o.ready]).then((function(){try{promiseBody(e,r)}catch(e){r(e)}}),r)};t.ensureNotTerminated();R.reset();const u={};let d,f=[];for(;!(d=R.check());){f.length=0;u.args=f;if(!S.read(u))break;const e=k;k=s.state;const r=u.fn;f=u.args;switch(0|r){case ne:var N=f[0].name,G=f[1];if(k.font&&N===k.fontName&&G===k.fontSize)break;flushTextContentItem();k.fontName=N;k.fontSize=G;next(handleSetFont(N,null));return;case ge:k.textRise=f[0];break;case re:k.textHScale=f[0]/100;break;case se:k.leading=f[0];break;case Ie:k.translateTextLineMatrix(f[0],f[1]);k.textMatrix=k.textLineMatrix.slice();break;case ce:k.leading=-f[1];k.translateTextLineMatrix(f[0],f[1]);k.textMatrix=k.textLineMatrix.slice();break;case he:k.carriageReturn();break;case Ce:k.setTextMatrix(f[0],f[1],f[2],f[3],f[4],f[5]);k.setTextLineMatrix(f[0],f[1],f[2],f[3],f[4],f[5]);updateAdvanceScale();break;case ie:k.charSpacing=f[0];break;case ae:k.wordSpacing=f[0];break;case ee:k.textMatrix=a.slice();k.textLineMatrix=a.slice();break;case Be:if(!s.state.font){p.ensureStateFont(s.state);continue}const r=(k.font.vertical?1:-1)*k.fontSize/1e3,u=f[0];for(let e=0,t=u.length;e<t;e++){const t=u[e];if("string"==typeof t)y.push(t);else if("number"==typeof t&&0!==t){const e=y.join("");y.length=0;buildTextContentItem({chars:e,extraSpacing:t*r})}}if(y.length>0){const e=y.join("");y.length=0;buildTextContentItem({chars:e,extraSpacing:0})}break;case le:if(!s.state.font){p.ensureStateFont(s.state);continue}buildTextContentItem({chars:f[0],extraSpacing:0});break;case Qe:if(!s.state.font){p.ensureStateFont(s.state);continue}k.carriageReturn();buildTextContentItem({chars:f[0],extraSpacing:0});break;case Ee:if(!s.state.font){p.ensureStateFont(s.state);continue}k.wordSpacing=f[0];k.charSpacing=f[1];k.carriageReturn();buildTextContentItem({chars:f[2],extraSpacing:0});break;case Le:flushTextContentItem();w||(w=i.get("XObject")||Dict.empty);var x=f[0]instanceof Name,U=f[0].name;if(x&&b.getByName(U))break;next(new Promise((function(e,a){if(!x)throw new FormatError("XObject must be referred to by name.");let r=w.getRaw(U);if(r instanceof Ref){if(b.getByRef(r)){e();return}if(p.globalImageCache.getData(r,p.pageIndex)){e();return}r=m.fetch(r)}if(!(r instanceof BaseStream))throw new FormatError("XObject should be a stream");const E=r.dict.get("Subtype");if(!(E instanceof Name))throw new FormatError("XObject should have a Name subtype");if("Form"!==E.name){b.set(U,r.dict.objId,!0);e();return}const u=s.state.clone(),d=new StateManager(u),f=lookupMatrix(r.dict.getArray("Matrix"),null);f&&d.transform(f);enqueueChunk();const y={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0;o.enqueue(e,t)},get desiredSize(){return o.desiredSize},get ready(){return o.ready}};p.getTextContent({stream:r,task:t,resources:r.dict.get("Resources")||i,stateManager:d,includeMarkedContent:n,sink:y,seenStyles:g,viewBox:c,lang:C,markedContentData:h,disableNormalization:l,keepWhiteSpace:Q}).then((function(){y.enqueueInvoked||b.set(U,r.dict.objId,!0);e()}),a)})).catch((function(e){if(!(e instanceof AbortException)){if(!p.options.ignoreErrors)throw e;warn(`getTextContent - ignoring XObject: "${e}".`)}})));return;case xA:x=f[0]instanceof Name;U=f[0].name;if(x&&D.getByName(U))break;next(new Promise((function(e,t){if(!x)throw new FormatError("GState must be referred to by name.");const a=i.get("ExtGState");if(!(a instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const r=a.get(U);if(!(r instanceof Dict))throw new FormatError("GState should be a dictionary.");const s=r.get("Font");if(s){flushTextContentItem();k.fontName=null;k.fontSize=s[1];handleSetFont(null,s[0]).then(e,t)}else{D.set(U,r.objId,!0);e()}})).catch((function(e){if(!(e instanceof AbortException)){if(!p.options.ignoreErrors)throw e;warn(`getTextContent - ignoring ExtGState: "${e}".`)}})));return;case Ye:flushTextContentItem();if(n){h.level++;E.items.push({type:"beginMarkedContent",tag:f[0]instanceof Name?f[0].name:null})}break;case ve:flushTextContentItem();if(n){h.level++;let e=null;f[1]instanceof Dict&&(e=f[1].get("MCID"));E.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${p.idFactory.getPageObjId()}_mc${e}`:null,tag:f[0]instanceof Name?f[0].name:null})}break;case Te:flushTextContentItem();if(n){if(0===h.level)break;h.level--;E.items.push({type:"endMarkedContent"})}break;case MA:!e||e.font===k.font&&e.fontSize===k.fontSize&&e.fontName===k.fontName||flushTextContentItem()}if(E.items.length>=o.desiredSize){d=!0;break}}if(d)next(Gr);else{flushTextContentItem();enqueueChunk();e()}})).catch((e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`);flushTextContentItem();enqueueChunk()}}))}async extractDataStructures(e,t){const i=this.xref;let a;const r=this.readToUnicode(t.toUnicode);if(t.composite){const i=e.get("CIDSystemInfo");i instanceof Dict&&(t.cidSystemInfo={registry:stringToPDFString(i.get("Registry")),ordering:stringToPDFString(i.get("Ordering")),supplement:i.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof BaseStream&&(a=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;warn(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`)}}const s=[];let n,o=null;if(e.has("Encoding")){n=e.get("Encoding");if(n instanceof Dict){o=n.get("BaseEncoding");o=o instanceof Name?o.name:null;if(n.has("Differences")){const e=n.get("Differences");let t=0;for(const a of e){const e=i.fetchIfRef(a);if("number"==typeof e)t=e;else{if(!(e instanceof Name))throw new FormatError(`Invalid entry in 'Differences' array: ${e}`);s[t++]=e.name}}}}else if(n instanceof Name)o=n.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new FormatError(e);warn(e)}"MacRomanEncoding"!==o&&"MacExpertEncoding"!==o&&"WinAnsiEncoding"!==o&&(o=null)}const g=!t.file||t.isInternalFont,c=_i()[t.name];o&&g&&c&&(o=null);if(o)t.defaultEncoding=getEncoding(o);else{const e=!!(t.flags&Oi),i=!!(t.flags&Pi);n=mi;"TrueType"!==t.type||i||(n=yi);if(e||c){n=pi;g&&(/Symbol/i.test(t.name)?n=wi:/Dingbats/i.test(t.name)?n=bi:/Wingdings/i.test(t.name)&&(n=yi))}t.defaultEncoding=n}t.differences=s;t.baseEncodingName=o;t.hasEncoding=!!o||s.length>0;t.dict=e;t.toUnicode=await r;const C=await this.buildToUnicode(t);t.toUnicode=C;a&&(t.cidToGidMap=this.readCidToGidMap(a,C));return t}_simpleFontToUnicode(e,t=!1){assert(!e.composite,"Must be a simple font.");const i=[],a=e.defaultEncoding.slice(),r=e.baseEncodingName,s=e.differences;for(const e in s){const t=s[e];".notdef"!==t&&(a[e]=t)}const n=xi();for(const s in a){let o=a[s];if(""===o)continue;let g=n[o];if(void 0!==g){i[s]=String.fromCharCode(g);continue}let c=0;switch(o[0]){case"G":3===o.length&&(c=parseInt(o.substring(1),16));break;case"g":5===o.length&&(c=parseInt(o.substring(1),16));break;case"C":case"c":if(o.length>=3&&o.length<=4){const i=o.substring(1);if(t){c=parseInt(i,16);break}c=+i;if(Number.isNaN(c)&&Number.isInteger(parseInt(i,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":g=getUnicodeForGlyph(o,n);-1!==g&&(c=g);break;default:switch(o){case"f_h":case"f_t":case"T_h":i[s]=o.replaceAll("_","");continue}}if(c>0&&c<=1114111&&Number.isInteger(c)){if(r&&c===+s){const e=getEncoding(r);if(e&&(o=e[s])){i[s]=String.fromCharCode(n[o]);continue}}i[s]=String.fromCodePoint(c)}}return i}async buildToUnicode(e){e.hasIncludedToUnicodeMap=e.toUnicode?.length>0;if(e.hasIncludedToUnicodeMap){!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e));return e.toUnicode}if(!e.composite)return new ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof IdentityCMap)||"Adobe"===e.cidSystemInfo?.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:i}=e.cidSystemInfo,a=Name.get(`${t}-${i}-UCS2`),r=await CMapFactory.create({encoding:a,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),s=[],n=[];e.cMap.forEach((function(e,t){if(t>65535)throw new FormatError("Max size of CID is 65,535");const i=r.lookup(t);if(i){n.length=0;for(let e=0,t=i.length;e<t;e+=2)n.push((i.charCodeAt(e)<<8)+i.charCodeAt(e+1));s[e]=String.fromCharCode(...n)}}));return new ToUnicodeMap(s)}return new IdentityToUnicodeMap(e.firstChar,e.lastChar)}async readToUnicode(e){if(!e)return null;if(e instanceof Name){const t=await CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});return t instanceof IdentityCMap?new IdentityToUnicodeMap(0,65535):new ToUnicodeMap(t.getMap())}if(e instanceof BaseStream)try{const t=await CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});if(t instanceof IdentityCMap)return new IdentityToUnicodeMap(0,65535);const i=new Array(t.length);t.forEach((function(e,t){if("number"==typeof t){i[e]=String.fromCodePoint(t);return}const a=[];for(let e=0;e<t.length;e+=2){const i=t.charCodeAt(e)<<8|t.charCodeAt(e+1);if(55296!=(63488&i)){a.push(i);continue}e+=2;const r=t.charCodeAt(e)<<8|t.charCodeAt(e+1);a.push(((1023&i)<<10)+(1023&r)+65536)}i[e]=String.fromCodePoint(...a)}));return new ToUnicodeMap(i)}catch(e){if(e instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`readToUnicode - ignoring ToUnicode data: "${e}".`);return null}throw e}return null}readCidToGidMap(e,t){const i=[];for(let a=0,r=e.length;a<r;a++){const r=e[a++]<<8|e[a],s=a>>1;(0!==r||t.has(s))&&(i[s]=r)}return i}extractWidths(e,t,i){const a=this.xref;let r=[],s=0;const n=[];let o;if(i.composite){const t=e.get("DW");s="number"==typeof t?Math.ceil(t):1e3;const g=e.get("W");if(Array.isArray(g))for(let e=0,t=g.length;e<t;e++){let t=a.fetchIfRef(g[e++]);if(!Number.isInteger(t))break;const i=a.fetchIfRef(g[e]);if(Array.isArray(i))for(const e of i){const i=a.fetchIfRef(e);"number"==typeof i&&(r[t]=i);t++}else{if(!Number.isInteger(i))break;{const s=a.fetchIfRef(g[++e]);if("number"!=typeof s)continue;for(let e=t;e<=i;e++)r[e]=s}}}if(i.vertical){const t=e.getArray("DW2");let i=isNumberArray(t,2)?t:[880,-1e3];o=[i[1],.5*s,i[0]];i=e.get("W2");if(Array.isArray(i))for(let e=0,t=i.length;e<t;e++){let t=a.fetchIfRef(i[e++]);if(!Number.isInteger(t))break;const r=a.fetchIfRef(i[e]);if(Array.isArray(r))for(let e=0,i=r.length;e<i;e++){const i=[a.fetchIfRef(r[e++]),a.fetchIfRef(r[e++]),a.fetchIfRef(r[e])];isNumberArray(i,null)&&(n[t]=i);t++}else{if(!Number.isInteger(r))break;{const s=[a.fetchIfRef(i[++e]),a.fetchIfRef(i[++e]),a.fetchIfRef(i[++e])];if(!isNumberArray(s,null))continue;for(let e=t;e<=r;e++)n[e]=s}}}}}else{const n=e.get("Widths");if(Array.isArray(n)){let e=i.firstChar;for(const t of n){const i=a.fetchIfRef(t);"number"==typeof i&&(r[e]=i);e++}const o=t.get("MissingWidth");s="number"==typeof o?o:0}else{const t=e.get("BaseFont");if(t instanceof Name){const e=this.getBaseFontMetrics(t.name);r=this.buildCharCodeToWidth(e.widths,i);s=e.defaultWidth}}}let g=!0,c=s;for(const e in r){const t=r[e];if(t)if(c){if(c!==t){g=!1;break}}else c=t}g?i.flags|=Ki:i.flags&=~Ki;i.defaultWidth=s;i.widths=r;i.defaultVMetrics=o;i.vmetrics=n}isSerifFont(e){const t=e.split("-",1)[0];return t in Vi()||/serif/gi.test(t)}getBaseFontMetrics(e){let t=0,i=Object.create(null),a=!1;let r=ji()[e]||e;const s=ta();r in s||(r=this.isSerifFont(e)?"Times-Roman":"Helvetica");const n=s[r];if("number"==typeof n){t=n;a=!0}else i=n();return{defaultWidth:t,monospace:a,widths:i}}buildCharCodeToWidth(e,t){const i=Object.create(null),a=t.differences,r=t.defaultEncoding;for(let t=0;t<256;t++)t in a&&e[a[t]]?i[t]=e[a[t]]:t in r&&e[r[t]]&&(i[t]=e[r[t]]);return i}preEvaluateFont(e){const t=e;let i=e.get("Subtype");if(!(i instanceof Name))throw new FormatError("invalid font Subtype");let a,r=!1;if("Type0"===i.name){const t=e.get("DescendantFonts");if(!t)throw new FormatError("Descendant fonts are not specified");if(!((e=Array.isArray(t)?this.xref.fetchIfRef(t[0]):t)instanceof Dict))throw new FormatError("Descendant font is not a dictionary.");i=e.get("Subtype");if(!(i instanceof Name))throw new FormatError("invalid font Subtype");r=!0}let s=e.get("FirstChar");Number.isInteger(s)||(s=0);let n=e.get("LastChar");Number.isInteger(n)||(n=r?65535:255);const o=e.get("FontDescriptor"),g=e.get("ToUnicode")||t.get("ToUnicode");if(o){a=new MurmurHash3_64;const i=t.getRaw("Encoding");if(i instanceof Name)a.update(i.name);else if(i instanceof Ref)a.update(i.toString());else if(i instanceof Dict)for(const e of i.getRawValues())if(e instanceof Name)a.update(e.name);else if(e instanceof Ref)a.update(e.toString());else if(Array.isArray(e)){const t=e.length,i=new Array(t);for(let a=0;a<t;a++){const t=e[a];t instanceof Name?i[a]=t.name:("number"==typeof t||t instanceof Ref)&&(i[a]=t.toString())}a.update(i.join())}a.update(`${s}-${n}`);if(g instanceof BaseStream){const e=g.str||g,t=e.buffer?new Uint8Array(e.buffer.buffer,0,e.bufferLength):new Uint8Array(e.bytes.buffer,e.start,e.end-e.start);a.update(t)}else g instanceof Name&&a.update(g.name);const o=e.get("Widths")||t.get("Widths");if(Array.isArray(o)){const e=[];for(const t of o)("number"==typeof t||t instanceof Ref)&&e.push(t.toString());a.update(e.join())}if(r){a.update("compositeFont");const i=e.get("W")||t.get("W");if(Array.isArray(i)){const e=[];for(const t of i)if("number"==typeof t||t instanceof Ref)e.push(t.toString());else if(Array.isArray(t)){const i=[];for(const e of t)("number"==typeof e||e instanceof Ref)&&i.push(e.toString());e.push(`[${i.join()}]`)}a.update(e.join())}const r=e.getRaw("CIDToGIDMap")||t.getRaw("CIDToGIDMap");r instanceof Name?a.update(r.name):r instanceof Ref?a.update(r.toString()):r instanceof BaseStream&&a.update(r.peekBytes())}}return{descriptor:o,dict:e,baseDict:t,composite:r,type:i.name,firstChar:s,lastChar:n,toUnicode:g,hash:a?a.hexdigest():""}}async translateFont({descriptor:e,dict:t,baseDict:i,composite:a,type:s,firstChar:n,lastChar:o,toUnicode:g,cssFontInfo:c}){const C="Type3"===s;if(!e){if(!C){let e=t.get("BaseFont");if(!(e instanceof Name))throw new FormatError("Base font is not specified");e=e.name.replaceAll(/[,_]/g,"-");const a=this.getBaseFontMetrics(e),r=e.split("-",1)[0],c=(this.isSerifFont(r)?qi:0)|(a.monospace?Ki:0)|(_i()[r]?Oi:Pi),h={type:s,name:e,loadedName:i.loadedName,systemFontInfo:null,widths:a.widths,defaultWidth:a.defaultWidth,isSimulatedFlags:!0,flags:c,firstChar:n,lastChar:o,toUnicode:g,xHeight:0,capHeight:0,italicAngle:0,isType3Font:C},l=t.get("Widths"),Q=getStandardFontName(e);let E=null;if(Q){E=await this.fetchStandardFontData(Q);h.isInternalFont=!!E}!h.isInternalFont&&this.options.useSystemFonts&&(h.systemFontInfo=getFontSubstitution(this.systemFontCache,this.idFactory,this.options.standardFontDataUrl,e,Q,s));const u=await this.extractDataStructures(t,h);if(Array.isArray(l)){const e=[];let t=n;for(const i of l){const a=this.xref.fetchIfRef(i);"number"==typeof a&&(e[t]=a);t++}u.widths=e}else u.widths=this.buildCharCodeToWidth(a.widths,u);return new Font(e,E,u)}{const i=lookupNormalRect(t.getArray("FontBBox"),[0,0,0,0]);(e=new Dict(null)).set("FontName",Name.get(s));e.set("FontBBox",i)}}let h=e.get("FontName"),l=t.get("BaseFont");"string"==typeof h&&(h=Name.get(h));"string"==typeof l&&(l=Name.get(l));const Q=h?.name,E=l?.name;if(!C&&Q!==E){info(`The FontDescriptor's FontName is "${Q}" but should be the same as the Font's BaseFont "${E}".`);Q&&E&&(E.startsWith(Q)||!isKnownFontName(Q)&&isKnownFontName(E))&&(h=null)}h||=l;if(!(h instanceof Name))throw new FormatError("invalid font name");let u,d,f,p,m;try{u=e.get("FontFile","FontFile2","FontFile3")}catch(e){if(!this.options.ignoreErrors)throw e;warn(`translateFont - fetching "${h.name}" font file: "${e}".`);u=new NullStream}let y=!1,w=null,b=null;if(u){if(u.dict){const e=u.dict.get("Subtype");e instanceof Name&&(d=e.name);f=u.dict.get("Length1");p=u.dict.get("Length2");m=u.dict.get("Length3")}}else if(c){const e=getXfaFontName(h.name);if(e){c.fontFamily=`${c.fontFamily}-PdfJS-XFA`;c.metrics=e.metrics||null;w=e.factors||null;u=await this.fetchStandardFontData(e.name);y=!!u;i=t=getXfaFontDict(h.name);a=!0}}else if(!C){const e=getStandardFontName(h.name);if(e){u=await this.fetchStandardFontData(e);y=!!u}!y&&this.options.useSystemFonts&&(b=getFontSubstitution(this.systemFontCache,this.idFactory,this.options.standardFontDataUrl,h.name,e,s))}const D=lookupMatrix(t.getArray("FontMatrix"),r),S=lookupNormalRect(e.getArray("FontBBox")||t.getArray("FontBBox"),void 0);let k=e.get("Ascent");"number"!=typeof k&&(k=void 0);let R=e.get("Descent");"number"!=typeof R&&(R=void 0);let N=e.get("XHeight");"number"!=typeof N&&(N=0);let G=e.get("CapHeight");"number"!=typeof G&&(G=0);let x=e.get("Flags");Number.isInteger(x)||(x=0);let U=e.get("ItalicAngle");"number"!=typeof U&&(U=0);const M={type:s,name:h.name,subtype:d,file:u,length1:f,length2:p,length3:m,isInternalFont:y,loadedName:i.loadedName,composite:a,fixedPitch:!1,fontMatrix:D,firstChar:n,lastChar:o,toUnicode:g,bbox:S,ascent:k,descent:R,xHeight:N,capHeight:G,flags:x,italicAngle:U,isType3Font:C,cssFontInfo:c,scaleFactors:w,systemFontInfo:b};if(a){const e=i.get("Encoding");e instanceof Name&&(M.cidEncoding=e.name);const t=await CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});M.cMap=t;M.vertical=M.cMap.vertical}const L=await this.extractDataStructures(t,M);this.extractWidths(t,e,L);return new Font(h.name,u,L)}static buildFontPaths(e,t,i,a){function buildPath(t){const r=`${e.loadedName}_path_${t}`;try{if(e.renderer.hasBuiltPath(t))return;i.send("commonobj",[r,"FontPath",e.renderer.getPathJs(t)])}catch(e){if(a.ignoreErrors){warn(`buildFontPaths - ignoring ${r} glyph: "${e}".`);return}throw e}}for(const e of t){buildPath(e.fontChar);const t=e.accent;t?.fontChar&&buildPath(t.fontChar)}}static get fallbackFontDict(){const e=new Dict;e.set("BaseFont",Name.get("Helvetica"));e.set("Type",Name.get("FallbackType"));e.set("Subtype",Name.get("FallbackType"));e.set("Encoding",Name.get("WinAnsiEncoding"));return shadow(this,"fallbackFontDict",e)}}class TranslatedFont{constructor({loadedName:e,font:t,dict:i,evaluatorOptions:a}){this.loadedName=e;this.font=t;this.dict=i;this._evaluatorOptions=a||kr;this.type3Loaded=null;this.type3Dependencies=t.isType3Font?new Set:null;this.sent=!1}send(e){if(!this.sent){this.sent=!0;e.send("commonobj",[this.loadedName,"Font",this.font.exportData(this._evaluatorOptions.fontExtraProperties)])}}fallback(e){if(this.font.data){this.font.disableFontFace=!0;PartialEvaluator.buildFontPaths(this.font,this.font.glyphCacheValues,e,this._evaluatorOptions)}}loadType3Data(e,t,i){if(this.type3Loaded)return this.type3Loaded;if(!this.font.isType3Font)throw new Error("Must be a Type3 font.");const a=e.clone({ignoreErrors:!1}),r=new RefSet(e.type3FontRefs);this.dict.objId&&!r.has(this.dict.objId)&&r.put(this.dict.objId);a.type3FontRefs=r;const s=this.font,n=this.type3Dependencies;let o=Promise.resolve();const g=this.dict.get("CharProcs"),c=this.dict.get("Resources")||t,C=Object.create(null),h=Util.normalizeRect(s.bbox||[0,0,0,0]),l=h[2]-h[0],Q=h[3]-h[1],E=Math.hypot(l,Q);for(const e of g.getKeys())o=o.then((()=>{const t=g.get(e),r=new OperatorList;return a.getOperatorList({stream:t,task:i,resources:c,operatorList:r}).then((()=>{r.fnArray[0]===de&&this._removeType3ColorOperators(r,E);C[e]=r.getIR();for(const e of r.dependencies)n.add(e)})).catch((function(t){warn(`Type3 font resource "${e}" is not available.`);const i=new OperatorList;C[e]=i.getIR()}))}));this.type3Loaded=o.then((()=>{s.charProcOperatorList=C;if(this._bbox){s.isCharBBox=!0;s.bbox=this._bbox}}));return this.type3Loaded}_removeType3ColorOperators(e,t=NaN){const i=Util.normalizeRect(e.argsArray[0].slice(2)),a=i[2]-i[0],r=i[3]-i[1],s=Math.hypot(a,r);if(0===a||0===r){e.fnArray.splice(0,1);e.argsArray.splice(0,1)}else if(0===t||Math.round(s/t)>=10){this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]);this._bbox[0]=Math.min(this._bbox[0],i[0]);this._bbox[1]=Math.min(this._bbox[1],i[1]);this._bbox[2]=Math.max(this._bbox[2],i[2]);this._bbox[3]=Math.max(this._bbox[3],i[3])}let n=0,o=e.length;for(;n<o;){switch(e.fnArray[n]){case de:break;case fe:case pe:case me:case ye:case we:case be:case De:case Fe:case Se:case ke:case Re:case Ne:case Ge:case NA:e.fnArray.splice(n,1);e.argsArray.splice(n,1);o--;continue;case xA:const[t]=e.argsArray[n];let i=0,a=t.length;for(;i<a;){const[e]=t[i];switch(e){case"TR":case"TR2":case"HT":case"BG":case"BG2":case"UCR":case"UCR2":t.splice(i,1);a--;continue}i++}}n++}}}class StateManager{constructor(e=new EvalState){this.state=e;this.stateStack=[]}save(){const e=this.state;this.stateStack.push(this.state);this.state=e.clone()}restore(){const e=this.stateStack.pop();e&&(this.state=e)}transform(e){this.state.ctm=Util.transform(this.state.ctm,e)}}class TextState{constructor(){this.ctm=new Float32Array(a);this.fontName=null;this.fontSize=0;this.loadedName=null;this.font=null;this.fontMatrix=r;this.textMatrix=a.slice();this.textLineMatrix=a.slice();this.charSpacing=0;this.wordSpacing=0;this.leading=0;this.textHScale=1;this.textRise=0}setTextMatrix(e,t,i,a,r,s){const n=this.textMatrix;n[0]=e;n[1]=t;n[2]=i;n[3]=a;n[4]=r;n[5]=s}setTextLineMatrix(e,t,i,a,r,s){const n=this.textLineMatrix;n[0]=e;n[1]=t;n[2]=i;n[3]=a;n[4]=r;n[5]=s}translateTextMatrix(e,t){const i=this.textMatrix;i[4]=i[0]*e+i[2]*t+i[4];i[5]=i[1]*e+i[3]*t+i[5]}translateTextLineMatrix(e,t){const i=this.textLineMatrix;i[4]=i[0]*e+i[2]*t+i[4];i[5]=i[1]*e+i[3]*t+i[5]}carriageReturn(){this.translateTextLineMatrix(0,-this.leading);this.textMatrix=this.textLineMatrix.slice()}clone(){const e=Object.create(this);e.textMatrix=this.textMatrix.slice();e.textLineMatrix=this.textLineMatrix.slice();e.fontMatrix=this.fontMatrix.slice();return e}}class EvalState{constructor(){this.ctm=new Float32Array(a);this.font=null;this.textRenderingMode=w;this.fillColorSpace=ColorSpace.singletons.gray;this.strokeColorSpace=ColorSpace.singletons.gray}clone(){return Object.create(this)}}class EvaluatorPreprocessor{static get opMap(){return shadow(this,"opMap",Object.assign(Object.create(null),{w:{id:DA,numArgs:1,variableArgs:!1},J:{id:FA,numArgs:1,variableArgs:!1},j:{id:SA,numArgs:1,variableArgs:!1},M:{id:kA,numArgs:1,variableArgs:!1},d:{id:RA,numArgs:2,variableArgs:!1},ri:{id:NA,numArgs:1,variableArgs:!1},i:{id:GA,numArgs:1,variableArgs:!1},gs:{id:xA,numArgs:1,variableArgs:!1},q:{id:UA,numArgs:0,variableArgs:!1},Q:{id:MA,numArgs:0,variableArgs:!1},cm:{id:LA,numArgs:6,variableArgs:!1},m:{id:HA,numArgs:2,variableArgs:!1},l:{id:JA,numArgs:2,variableArgs:!1},c:{id:YA,numArgs:6,variableArgs:!1},v:{id:vA,numArgs:4,variableArgs:!1},y:{id:TA,numArgs:4,variableArgs:!1},h:{id:KA,numArgs:0,variableArgs:!1},re:{id:qA,numArgs:4,variableArgs:!1},S:{id:OA,numArgs:0,variableArgs:!1},s:{id:PA,numArgs:0,variableArgs:!1},f:{id:WA,numArgs:0,variableArgs:!1},F:{id:WA,numArgs:0,variableArgs:!1},"f*":{id:jA,numArgs:0,variableArgs:!1},B:{id:XA,numArgs:0,variableArgs:!1},"B*":{id:ZA,numArgs:0,variableArgs:!1},b:{id:VA,numArgs:0,variableArgs:!1},"b*":{id:_A,numArgs:0,variableArgs:!1},n:{id:zA,numArgs:0,variableArgs:!1},W:{id:$A,numArgs:0,variableArgs:!1},"W*":{id:Ae,numArgs:0,variableArgs:!1},BT:{id:ee,numArgs:0,variableArgs:!1},ET:{id:te,numArgs:0,variableArgs:!1},Tc:{id:ie,numArgs:1,variableArgs:!1},Tw:{id:ae,numArgs:1,variableArgs:!1},Tz:{id:re,numArgs:1,variableArgs:!1},TL:{id:se,numArgs:1,variableArgs:!1},Tf:{id:ne,numArgs:2,variableArgs:!1},Tr:{id:oe,numArgs:1,variableArgs:!1},Ts:{id:ge,numArgs:1,variableArgs:!1},Td:{id:Ie,numArgs:2,variableArgs:!1},TD:{id:ce,numArgs:2,variableArgs:!1},Tm:{id:Ce,numArgs:6,variableArgs:!1},"T*":{id:he,numArgs:0,variableArgs:!1},Tj:{id:le,numArgs:1,variableArgs:!1},TJ:{id:Be,numArgs:1,variableArgs:!1},"'":{id:Qe,numArgs:1,variableArgs:!1},'"':{id:Ee,numArgs:3,variableArgs:!1},d0:{id:ue,numArgs:2,variableArgs:!1},d1:{id:de,numArgs:6,variableArgs:!1},CS:{id:fe,numArgs:1,variableArgs:!1},cs:{id:pe,numArgs:1,variableArgs:!1},SC:{id:me,numArgs:4,variableArgs:!0},SCN:{id:ye,numArgs:33,variableArgs:!0},sc:{id:we,numArgs:4,variableArgs:!0},scn:{id:be,numArgs:33,variableArgs:!0},G:{id:De,numArgs:1,variableArgs:!1},g:{id:Fe,numArgs:1,variableArgs:!1},RG:{id:Se,numArgs:3,variableArgs:!1},rg:{id:ke,numArgs:3,variableArgs:!1},K:{id:Re,numArgs:4,variableArgs:!1},k:{id:Ne,numArgs:4,variableArgs:!1},sh:{id:Ge,numArgs:1,variableArgs:!1},BI:{id:xe,numArgs:0,variableArgs:!1},ID:{id:Ue,numArgs:0,variableArgs:!1},EI:{id:Me,numArgs:1,variableArgs:!1},Do:{id:Le,numArgs:1,variableArgs:!1},MP:{id:He,numArgs:1,variableArgs:!1},DP:{id:Je,numArgs:2,variableArgs:!1},BMC:{id:Ye,numArgs:1,variableArgs:!1},BDC:{id:ve,numArgs:2,variableArgs:!1},EMC:{id:Te,numArgs:0,variableArgs:!1},BX:{id:Ke,numArgs:0,variableArgs:!1},EX:{id:qe,numArgs:0,variableArgs:!1},BM:null,BD:null,true:null,fa:null,fal:null,fals:null,false:null,nu:null,nul:null,null:null}))}static MAX_INVALID_PATH_OPS=10;constructor(e,t,i=new StateManager){this.parser=new Parser({lexer:new Lexer(e,EvaluatorPreprocessor.opMap),xref:t});this.stateManager=i;this.nonProcessedArgs=[];this._isPathOp=!1;this._numInvalidPathOPS=0}get savedStatesDepth(){return this.stateManager.stateStack.length}read(e){let t=e.args;for(;;){const i=this.parser.getObj();if(i instanceof Cmd){const a=i.cmd,r=EvaluatorPreprocessor.opMap[a];if(!r){warn(`Unknown command "${a}".`);continue}const s=r.id,n=r.numArgs;let o=null!==t?t.length:0;this._isPathOp||(this._numInvalidPathOPS=0);this._isPathOp=s>=HA&&s<=zA;if(r.variableArgs)o>n&&info(`Command ${a}: expected [0, ${n}] args, but received ${o} args.`);else{if(o!==n){const e=this.nonProcessedArgs;for(;o>n;){e.push(t.shift());o--}for(;o<n&&0!==e.length;){null===t&&(t=[]);t.unshift(e.pop());o++}}if(o<n){const e=`command ${a}: expected ${n} args, but received ${o} args.`;if(this._isPathOp&&++this._numInvalidPathOPS>EvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new FormatError(`Invalid ${e}`);warn(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(s,t);e.fn=s;e.args=t;return!0}if(i===yt)return!1;if(null!==i){null===t&&(t=[]);t.push(i);if(t.length>33)throw new FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case UA:this.stateManager.save();break;case MA:this.stateManager.restore();break;case LA:this.stateManager.transform(t)}}}class DefaultAppearanceEvaluator extends EvaluatorPreprocessor{constructor(e){super(new StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;;){e.args.length=0;if(!this.read(e))break;if(0!==this.savedStatesDepth)continue;const{fn:i,args:a}=e;switch(0|i){case ne:const[e,i]=a;e instanceof Name&&(t.fontName=e.name);"number"==typeof i&&i>0&&(t.fontSize=i);break;case ke:ColorSpace.singletons.rgb.getRgbItem(a,0,t.fontColor,0);break;case Fe:ColorSpace.singletons.gray.getRgbItem(a,0,t.fontColor,0);break;case Ne:ColorSpace.singletons.cmyk.getRgbItem(a,0,t.fontColor,0)}}}catch(e){warn(`parseDefaultAppearance - ignoring errors: "${e}".`)}return t}}function parseDefaultAppearance(e){return new DefaultAppearanceEvaluator(e).parse()}class AppearanceStreamEvaluator extends EvaluatorPreprocessor{constructor(e,t,i){super(e);this.stream=e;this.evaluatorOptions=t;this.xref=i;this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:ColorSpace.singletons.gray},i=!1;const a=[];try{for(;;){e.args.length=0;if(i||!this.read(e))break;const{fn:r,args:s}=e;switch(0|r){case UA:a.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case MA:t=a.pop()||t;break;case Ce:t.scaleFactor*=Math.hypot(s[0],s[1]);break;case ne:const[e,r]=s;e instanceof Name&&(t.fontName=e.name);"number"==typeof r&&r>0&&(t.fontSize=r*t.scaleFactor);break;case pe:t.fillColorSpace=ColorSpace.parse({cs:s[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:this._localColorSpaceCache});break;case we:t.fillColorSpace.getRgbItem(s,0,t.fontColor,0);break;case ke:ColorSpace.singletons.rgb.getRgbItem(s,0,t.fontColor,0);break;case Fe:ColorSpace.singletons.gray.getRgbItem(s,0,t.fontColor,0);break;case Ne:ColorSpace.singletons.cmyk.getRgbItem(s,0,t.fontColor,0);break;case le:case Be:case Qe:case Ee:i=!0}}}catch(e){warn(`parseAppearanceStream - ignoring errors: "${e}".`)}this.stream.reset();delete t.scaleFactor;delete t.fillColorSpace;return t}get _localColorSpaceCache(){return shadow(this,"_localColorSpaceCache",new LocalColorSpaceCache)}get _pdfFunctionFactory(){return shadow(this,"_pdfFunctionFactory",new PDFFunctionFactory({xref:this.xref,isEvalSupported:this.evaluatorOptions.isEvalSupported}))}}function getPdfColor(e,t){if(e[0]===e[1]&&e[1]===e[2]){return`${numberToString(e[0]/255)} ${t?"g":"G"}`}return Array.from(e,(e=>numberToString(e/255))).join(" ")+" "+(t?"rg":"RG")}class FakeUnicodeFont{constructor(e,t){this.xref=e;this.widths=null;this.firstChar=1/0;this.lastChar=-1/0;this.fontFamily=t;const i=new OffscreenCanvas(1,1);this.ctxMeasure=i.getContext("2d",{willReadFrequently:!0});FakeUnicodeFont._fontNameId||(FakeUnicodeFont._fontNameId=1);this.fontName=Name.get(`InvalidPDFjsFont_${t}_${FakeUnicodeFont._fontNameId++}`)}get fontDescriptorRef(){if(!FakeUnicodeFont._fontDescriptorRef){const e=new Dict(this.xref);e.set("Type",Name.get("FontDescriptor"));e.set("FontName",this.fontName);e.set("FontFamily","MyriadPro Regular");e.set("FontBBox",[0,0,0,0]);e.set("FontStretch",Name.get("Normal"));e.set("FontWeight",400);e.set("ItalicAngle",0);FakeUnicodeFont._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return FakeUnicodeFont._fontDescriptorRef}get descendantFontRef(){const e=new Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("CIDFontType0"));e.set("CIDToGIDMap",Name.get("Identity"));e.set("FirstChar",this.firstChar);e.set("LastChar",this.lastChar);e.set("FontDescriptor",this.fontDescriptorRef);e.set("DW",1e3);const t=[],i=[...this.widths.entries()].sort();let a=null,r=null;for(const[e,s]of i)if(a)if(e===a+r.length)r.push(s);else{t.push(a,r);a=e;r=[s]}else{a=e;r=[s]}a&&t.push(a,r);e.set("W",t);const s=new Dict(this.xref);s.set("Ordering","Identity");s.set("Registry","Adobe");s.set("Supplement",0);e.set("CIDSystemInfo",s);return this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("Type0"));e.set("Encoding",Name.get("Identity-H"));e.set("DescendantFonts",[this.descendantFontRef]);e.set("ToUnicode",Name.get("Identity-H"));return this.xref.getNewPersistentRef(e)}get resources(){const e=new Dict(this.xref),t=new Dict(this.xref);t.set(this.fontName.name,this.baseFontRef);e.set("Font",t);return e}_createContext(){this.widths=new Map;this.ctxMeasure.font=`1000px ${this.fontFamily}`;return this.ctxMeasure}createFontResources(e){const t=this._createContext();for(const i of e.split(/\r\n?|\n/))for(const e of i.split("")){const i=e.charCodeAt(0);if(this.widths.has(i))continue;const a=t.measureText(e),r=Math.ceil(a.width);this.widths.set(i,r);this.firstChar=Math.min(i,this.firstChar);this.lastChar=Math.max(i,this.lastChar)}return this.resources}static getFirstPositionInfo(e,t,i){const[a,r,o,g]=e;let c=o-a,C=g-r;t%180!=0&&([c,C]=[C,c]);const h=s*i;return{coords:[0,C+n*i-h],bbox:[0,0,c,C],matrix:0!==t?getRotationMatrix(t,C,h):void 0}}createAppearance(e,t,i,a,r,o){const g=this._createContext(),c=[];let C=-1/0;for(const t of e.split(/\r\n?|\n/)){c.push(t);const e=g.measureText(t).width;C=Math.max(C,e);for(const e of codePointIter(t)){const t=String.fromCodePoint(e);let i=this.widths.get(e);if(void 0===i){const a=g.measureText(t);i=Math.ceil(a.width);this.widths.set(e,i);this.firstChar=Math.min(e,this.firstChar);this.lastChar=Math.max(e,this.lastChar)}}}C*=a/1e3;const[h,l,Q,E]=t;let u=Q-h,d=E-l;i%180!=0&&([u,d]=[d,u]);let f=1;C>u&&(f=u/C);let p=1;const m=s*a,y=n*a,w=m*c.length;w>d&&(p=d/w);const b=a*Math.min(f,p),D=["q",`0 0 ${numberToString(u)} ${numberToString(d)} re W n`,"BT",`1 0 0 1 0 ${numberToString(d+y)} Tm 0 Tc ${getPdfColor(r,!0)}`,`/${this.fontName.name} ${numberToString(b)} Tf`],{resources:S}=this;if(1!==(o="number"==typeof o&&o>=0&&o<=1?o:1)){D.push("/R0 gs");const e=new Dict(this.xref),t=new Dict(this.xref);t.set("ca",o);t.set("CA",o);t.set("Type",Name.get("ExtGState"));e.set("R0",t);S.set("ExtGState",e)}const k=numberToString(m);for(const e of c)D.push(`0 -${k} Td <${stringToUTF16HexString(e)}> Tj`);D.push("ET","Q");const R=D.join("\n"),N=new Dict(this.xref);N.set("Subtype",Name.get("Form"));N.set("Type",Name.get("XObject"));N.set("BBox",[0,0,u,d]);N.set("Length",R.length);N.set("Resources",S);if(i){const e=getRotationMatrix(i,u,d);N.set("Matrix",e)}const G=new StringStream(R);G.dict=N;return G}}class NameOrNumberTree{constructor(e,t,i){this.constructor===NameOrNumberTree&&unreachable("Cannot initialize NameOrNumberTree.");this.root=e;this.xref=t;this._type=i}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,i=new RefSet;i.put(this.root);const a=[this.root];for(;a.length>0;){const r=t.fetchIfRef(a.shift());if(!(r instanceof Dict))continue;if(r.has("Kids")){const e=r.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(i.has(t))throw new FormatError(`Duplicate entry in "${this._type}" tree.`);a.push(t);i.put(t)}continue}const s=r.get(this._type);if(Array.isArray(s))for(let i=0,a=s.length;i<a;i+=2)e.set(t.fetchIfRef(s[i]),t.fetchIfRef(s[i+1]))}return e}get(e){if(!this.root)return null;const t=this.xref;let i=t.fetchIfRef(this.root),a=0;for(;i.has("Kids");){if(++a>10){warn(`Search depth limit reached for "${this._type}" tree.`);return null}const r=i.get("Kids");if(!Array.isArray(r))return null;let s=0,n=r.length-1;for(;s<=n;){const a=s+n>>1,o=t.fetchIfRef(r[a]),g=o.get("Limits");if(e<t.fetchIfRef(g[0]))n=a-1;else{if(!(e>t.fetchIfRef(g[1]))){i=o;break}s=a+1}}if(s>n)return null}const r=i.get(this._type);if(Array.isArray(r)){let i=0,a=r.length-2;for(;i<=a;){const s=i+a>>1,n=s+(1&s),o=t.fetchIfRef(r[n]);if(e<o)a=n-2;else{if(!(e>o))return t.fetchIfRef(r[n+1]);i=n+2}}}return null}}class NameTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Names")}}class NumberTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Nums")}}function clearGlobalCaches(){!function clearPatternCaches(){ba=Object.create(null)}();!function clearPrimitiveCaches(){wt=Object.create(null);bt=Object.create(null);Dt=Object.create(null)}();!function clearUnicodeCaches(){vi.clear()}();JpxImage.cleanup()}function pickPlatformItem(e){return e instanceof Dict?e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null:null}class FileSpec{#S=!1;constructor(e,t,i=!1){if(e instanceof Dict){this.xref=t;this.root=e;e.has("FS")&&(this.fs=e.get("FS"));e.has("RF")&&warn("Related file specifications are not supported");i||(e.has("EF")?this.#S=!0:warn("Non-embedded file specifications are not supported"))}}get filename(){let e="";const t=pickPlatformItem(this.root);t&&"string"==typeof t&&(e=stringToPDFString(t).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/"));return shadow(this,"filename",e||"unnamed")}get content(){if(!this.#S)return null;this._contentRef||=pickPlatformItem(this.root?.get("EF"));let e=null;if(this._contentRef){const t=this.xref.fetchIfRef(this._contentRef);t instanceof BaseStream?e=t.getBytes():warn("Embedded file specification points to non-existing/invalid content")}else warn("Embedded file specification does not have any content");return e}get description(){let e="";const t=this.root?.get("Desc");t&&"string"==typeof t&&(e=stringToPDFString(t));return shadow(this,"description",e)}get serializable(){return{rawFilename:this.filename,filename:(e=this.filename,e.substring(e.lastIndexOf("/")+1)),content:this.content,description:this.description};var e}}const xr=0,Ur=-2,Mr=-3,Lr=-4,Hr=-5,Jr=-6,Yr=-9;function isWhitespace(e,t){const i=e[t];return" "===i||"\n"===i||"\r"===i||"\t"===i}class XMLParserBase{_resolveEntities(e){return e.replaceAll(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const i=[];let a=t;function skipWs(){for(;a<e.length&&isWhitespace(e,a);)++a}for(;a<e.length&&!isWhitespace(e,a)&&">"!==e[a]&&"/"!==e[a];)++a;const r=e.substring(t,a);skipWs();for(;a<e.length&&">"!==e[a]&&"/"!==e[a]&&"?"!==e[a];){skipWs();let t="",r="";for(;a<e.length&&!isWhitespace(e,a)&&"="!==e[a];){t+=e[a];++a}skipWs();if("="!==e[a])return null;++a;skipWs();const s=e[a];if('"'!==s&&"'"!==s)return null;const n=e.indexOf(s,++a);if(n<0)return null;r=e.substring(a,n);i.push({name:t,value:this._resolveEntities(r)});a=n+1;skipWs()}return{name:r,attributes:i,parsed:a-t}}_parseProcessingInstruction(e,t){let i=t;for(;i<e.length&&!isWhitespace(e,i)&&">"!==e[i]&&"?"!==e[i]&&"/"!==e[i];)++i;const a=e.substring(t,i);!function skipWs(){for(;i<e.length&&isWhitespace(e,i);)++i}();const r=i;for(;i<e.length&&("?"!==e[i]||">"!==e[i+1]);)++i;return{name:a,value:e.substring(r,i),parsed:i-t}}parseXml(e){let t=0;for(;t<e.length;){let i=t;if("<"===e[t]){++i;let t;switch(e[i]){case"/":++i;t=e.indexOf(">",i);if(t<0){this.onError(Yr);return}this.onEndElement(e.substring(i,t));i=t+1;break;case"?":++i;const a=this._parseProcessingInstruction(e,i);if("?>"!==e.substring(i+a.parsed,i+a.parsed+2)){this.onError(Mr);return}this.onPi(a.name,a.value);i+=a.parsed+2;break;case"!":if("--"===e.substring(i+1,i+3)){t=e.indexOf("--\x3e",i+3);if(t<0){this.onError(Hr);return}this.onComment(e.substring(i+3,t));i=t+3}else if("[CDATA["===e.substring(i+1,i+8)){t=e.indexOf("]]>",i+8);if(t<0){this.onError(Ur);return}this.onCdata(e.substring(i+8,t));i=t+3}else{if("DOCTYPE"!==e.substring(i+1,i+8)){this.onError(Jr);return}{const a=e.indexOf("[",i+8);let r=!1;t=e.indexOf(">",i+8);if(t<0){this.onError(Lr);return}if(a>0&&t>a){t=e.indexOf("]>",i+8);if(t<0){this.onError(Lr);return}r=!0}const s=e.substring(i+8,t+(r?1:0));this.onDoctype(s);i=t+(r?2:1)}}break;default:const r=this._parseContent(e,i);if(null===r){this.onError(Jr);return}let s=!1;if("/>"===e.substring(i+r.parsed,i+r.parsed+2))s=!0;else if(">"!==e.substring(i+r.parsed,i+r.parsed+1)){this.onError(Yr);return}this.onBeginElement(r.name,r.attributes,s);i+=r.parsed+(s?2:1)}}else{for(;i<e.length&&"<"!==e[i];)i++;const a=e.substring(t,i);this.onText(this._resolveEntities(a))}t=i}}onResolveEntity(e){return`&${e};`}onPi(e,t){}onComment(e){}onCdata(e){}onDoctype(e){}onText(e){}onBeginElement(e,t,i){}onEndElement(e){}onError(e){}}class SimpleDOMNode{constructor(e,t){this.nodeName=e;this.nodeValue=t;Object.defineProperty(this,"parentNode",{value:null,writable:!0})}get firstChild(){return this.childNodes?.[0]}get nextSibling(){const e=this.parentNode.childNodes;if(!e)return;const t=e.indexOf(this);return-1!==t?e[t+1]:void 0}get textContent(){return this.childNodes?this.childNodes.map((function(e){return e.textContent})).join(""):this.nodeValue||""}get children(){return this.childNodes||[]}hasChildNodes(){return this.childNodes?.length>0}searchNode(e,t){if(t>=e.length)return this;const i=e[t];if(i.name.startsWith("#")&&t<e.length-1)return this.searchNode(e,t+1);const a=[];let r=this;for(;;){if(i.name===r.nodeName){if(0!==i.pos){if(0===a.length)return null;{const[s]=a.pop();let n=0;for(const a of s.childNodes)if(i.name===a.nodeName){if(n===i.pos)return a.searchNode(e,t+1);n++}return r.searchNode(e,t+1)}}{const i=r.searchNode(e,t+1);if(null!==i)return i}}if(r.childNodes?.length>0){a.push([r,0]);r=r.childNodes[0]}else{if(0===a.length)return null;for(;0!==a.length;){const[e,t]=a.pop(),i=t+1;if(i<e.childNodes.length){a.push([e,i]);r=e.childNodes[i];break}}if(0===a.length)return null}}}dump(e){if("#text"!==this.nodeName){e.push(`<${this.nodeName}`);if(this.attributes)for(const t of this.attributes)e.push(` ${t.name}="${encodeToXmlString(t.value)}"`);if(this.hasChildNodes()){e.push(">");for(const t of this.childNodes)t.dump(e);e.push(`</${this.nodeName}>`)}else this.nodeValue?e.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`):e.push("/>")}else e.push(encodeToXmlString(this.nodeValue))}}class SimpleXMLParser extends XMLParserBase{constructor({hasAttributes:e=!1,lowerCaseName:t=!1}){super();this._currentFragment=null;this._stack=null;this._errorCode=xr;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=xr;this.parseXml(e);if(this._errorCode!==xr)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,i=e.length;t<i;t++)if(!isWhitespace(e,t))return!1;return!0}(e))return;const t=new SimpleDOMNode("#text",e);this._currentFragment.push(t)}onCdata(e){const t=new SimpleDOMNode("#text",e);this._currentFragment.push(t)}onBeginElement(e,t,i){this._lowerCaseName&&(e=e.toLowerCase());const a=new SimpleDOMNode(e);a.childNodes=[];this._hasAttributes&&(a.attributes=t);this._currentFragment.push(a);if(!i){this._stack.push(this._currentFragment);this._currentFragment=a.childNodes}}onEndElement(e){this._currentFragment=this._stack.pop()||[];const t=this._currentFragment.at(-1);if(!t)return null;for(const e of t.childNodes)e.parentNode=t;return t}onError(e){this._errorCode=e}}class MetadataParser{constructor(e){e=this._repair(e);const t=new SimpleXMLParser({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map;this._data=e;t&&this._parse(t)}_repair(e){return e.replace(/^[^<]+/,"").replaceAll(/>\\376\\377([^<]+)/g,(function(e,t){const i=t.replaceAll(/\\([0-3])([0-7])([0-7])/g,(function(e,t,i,a){return String.fromCharCode(64*t+8*i+1*a)})).replaceAll(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${t} isn't defined.`)})),a=[">"];for(let e=0,t=i.length;e<t;e+=2){const t=256*i.charCodeAt(e)+i.charCodeAt(e+1);t>=32&&t<127&&60!==t&&62!==t&&38!==t?a.push(String.fromCharCode(t)):a.push("&#x"+(65536+t).toString(16).substring(1)+";")}return a.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,i=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,i.map((e=>e.textContent.trim())))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName){t=t.firstChild;for(;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling}if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}class DecryptStream extends DecodeStream{constructor(e,t,i){super(t);this.str=e;this.dict=e.dict;this.decrypt=i;this.nextChunk=null;this.initialized=!1}readBlock(){let e;if(this.initialized)e=this.nextChunk;else{e=this.str.getBytes(512);this.initialized=!0}if(!e||0===e.length){this.eof=!0;return}this.nextChunk=this.str.getBytes(512);const t=this.nextChunk?.length>0;e=(0,this.decrypt)(e,!t);const i=this.bufferLength,a=i+e.length;this.ensureBuffer(a).set(e,i);this.bufferLength=a}}class ARCFourCipher{constructor(e){this.a=0;this.b=0;const t=new Uint8Array(256),i=e.length;for(let e=0;e<256;++e)t[e]=e;for(let a=0,r=0;a<256;++a){const s=t[a];r=r+s+e[a%i]&255;t[a]=t[r];t[r]=s}this.s=t}encryptBlock(e){let t=this.a,i=this.b;const a=this.s,r=e.length,s=new Uint8Array(r);for(let n=0;n<r;++n){t=t+1&255;const r=a[t];i=i+r&255;const o=a[i];a[t]=o;a[i]=r;s[n]=e[n]^a[r+o&255]}this.a=t;this.b=i;return s}decryptBlock(e){return this.encryptBlock(e)}encrypt(e){return this.encryptBlock(e)}}const vr=function calculateMD5Closure(){const e=new Uint8Array([7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21]),t=new Int32Array([-680876936,-389564586,606105819,-1044525330,-176418897,1200080426,-1473231341,-45705983,1770035416,-1958414417,-42063,-1990404162,1804603682,-40341101,-1502002290,1236535329,-165796510,-1069501632,643717713,-373897302,-701558691,38016083,-660478335,-405537848,568446438,-1019803690,-187363961,1163531501,-1444681467,-51403784,1735328473,-1926607734,-378558,-2022574463,1839030562,-35309556,-1530992060,1272893353,-155497632,-1094730640,681279174,-358537222,-722521979,76029189,-640364487,-421815835,530742520,-995338651,-198630844,1126891415,-1416354905,-57434055,1700485571,-1894986606,-1051523,-2054922799,1873313359,-30611744,-1560198380,1309151649,-145523070,-1120210379,718787259,-343485551]);return function hash(i,a,r){let s=1732584193,n=-271733879,o=-1732584194,g=271733878;const c=r+72&-64,C=new Uint8Array(c);let h,l;for(h=0;h<r;++h)C[h]=i[a++];C[h++]=128;const Q=c-8;for(;h<Q;)C[h++]=0;C[h++]=r<<3&255;C[h++]=r>>5&255;C[h++]=r>>13&255;C[h++]=r>>21&255;C[h++]=r>>>29&255;C[h++]=0;C[h++]=0;C[h++]=0;const E=new Int32Array(16);for(h=0;h<c;){for(l=0;l<16;++l,h+=4)E[l]=C[h]|C[h+1]<<8|C[h+2]<<16|C[h+3]<<24;let i,a,r=s,c=n,Q=o,u=g;for(l=0;l<64;++l){if(l<16){i=c&Q|~c&u;a=l}else if(l<32){i=u&c|~u&Q;a=5*l+1&15}else if(l<48){i=c^Q^u;a=3*l+5&15}else{i=Q^(c|~u);a=7*l&15}const s=u,n=r+i+t[l]+E[a]|0,o=e[l];u=Q;Q=c;c=c+(n<<o|n>>>32-o)|0;r=s}s=s+r|0;n=n+c|0;o=o+Q|0;g=g+u|0}return new Uint8Array([255&s,s>>8&255,s>>16&255,s>>>24&255,255&n,n>>8&255,n>>16&255,n>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&g,g>>8&255,g>>16&255,g>>>24&255])}}();class Word64{constructor(e,t){this.high=0|e;this.low=0|t}and(e){this.high&=e.high;this.low&=e.low}xor(e){this.high^=e.high;this.low^=e.low}or(e){this.high|=e.high;this.low|=e.low}shiftRight(e){if(e>=32){this.low=this.high>>>e-32|0;this.high=0}else{this.low=this.low>>>e|this.high<<32-e;this.high=this.high>>>e|0}}shiftLeft(e){if(e>=32){this.high=this.low<<e-32;this.low=0}else{this.high=this.high<<e|this.low>>>32-e;this.low<<=e}}rotateRight(e){let t,i;if(32&e){i=this.low;t=this.high}else{t=this.low;i=this.high}e&=31;this.low=t>>>e|i<<32-e;this.high=i>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let i=(this.high>>>0)+(e.high>>>0);t>4294967295&&(i+=1);this.low=0|t;this.high=0|i}copyTo(e,t){e[t]=this.high>>>24&255;e[t+1]=this.high>>16&255;e[t+2]=this.high>>8&255;e[t+3]=255&this.high;e[t+4]=this.low>>>24&255;e[t+5]=this.low>>16&255;e[t+6]=this.low>>8&255;e[t+7]=255&this.low}assign(e){this.high=e.high;this.low=e.low}}const Tr=function calculateSHA256Closure(){function rotr(e,t){return e>>>t|e<<32-t}function ch(e,t,i){return e&t^~e&i}function maj(e,t,i){return e&t^e&i^t&i}function sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}const e=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function hash(t,i,a){let r=1779033703,s=3144134277,n=1013904242,o=2773480762,g=1359893119,c=2600822924,C=528734635,h=1541459225;const l=64*Math.ceil((a+9)/64),Q=new Uint8Array(l);let E,u;for(E=0;E<a;++E)Q[E]=t[i++];Q[E++]=128;const d=l-8;for(;E<d;)Q[E++]=0;Q[E++]=0;Q[E++]=0;Q[E++]=0;Q[E++]=a>>>29&255;Q[E++]=a>>21&255;Q[E++]=a>>13&255;Q[E++]=a>>5&255;Q[E++]=a<<3&255;const f=new Uint32Array(64);for(E=0;E<l;){for(u=0;u<16;++u){f[u]=Q[E]<<24|Q[E+1]<<16|Q[E+2]<<8|Q[E+3];E+=4}for(u=16;u<64;++u)f[u]=(rotr(p=f[u-2],17)^rotr(p,19)^p>>>10)+f[u-7]+littleSigma(f[u-15])+f[u-16]|0;let t,i,a=r,l=s,d=n,m=o,y=g,w=c,b=C,D=h;for(u=0;u<64;++u){t=D+sigmaPrime(y)+ch(y,w,b)+e[u]+f[u];i=sigma(a)+maj(a,l,d);D=b;b=w;w=y;y=m+t|0;m=d;d=l;l=a;a=t+i|0}r=r+a|0;s=s+l|0;n=n+d|0;o=o+m|0;g=g+y|0;c=c+w|0;C=C+b|0;h=h+D|0}var p;return new Uint8Array([r>>24&255,r>>16&255,r>>8&255,255&r,s>>24&255,s>>16&255,s>>8&255,255&s,n>>24&255,n>>16&255,n>>8&255,255&n,o>>24&255,o>>16&255,o>>8&255,255&o,g>>24&255,g>>16&255,g>>8&255,255&g,c>>24&255,c>>16&255,c>>8&255,255&c,C>>24&255,C>>16&255,C>>8&255,255&C,h>>24&255,h>>16&255,h>>8&255,255&h])}}(),Kr=function calculateSHA512Closure(){function ch(e,t,i,a,r){e.assign(t);e.and(i);r.assign(t);r.not();r.and(a);e.xor(r)}function maj(e,t,i,a,r){e.assign(t);e.and(i);r.assign(t);r.and(a);e.xor(r);r.assign(i);r.and(a);e.xor(r)}function sigma(e,t,i){e.assign(t);e.rotateRight(28);i.assign(t);i.rotateRight(34);e.xor(i);i.assign(t);i.rotateRight(39);e.xor(i)}function sigmaPrime(e,t,i){e.assign(t);e.rotateRight(14);i.assign(t);i.rotateRight(18);e.xor(i);i.assign(t);i.rotateRight(41);e.xor(i)}function littleSigma(e,t,i){e.assign(t);e.rotateRight(1);i.assign(t);i.rotateRight(8);e.xor(i);i.assign(t);i.shiftRight(7);e.xor(i)}function littleSigmaPrime(e,t,i){e.assign(t);e.rotateRight(19);i.assign(t);i.rotateRight(61);e.xor(i);i.assign(t);i.shiftRight(6);e.xor(i)}const e=[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)];return function hash(t,i,a,r=!1){let s,n,o,g,c,C,h,l;if(r){s=new Word64(3418070365,3238371032);n=new Word64(1654270250,914150663);o=new Word64(2438529370,812702999);g=new Word64(355462360,4144912697);c=new Word64(1731405415,4290775857);C=new Word64(2394180231,1750603025);h=new Word64(3675008525,1694076839);l=new Word64(1203062813,3204075428)}else{s=new Word64(1779033703,4089235720);n=new Word64(3144134277,2227873595);o=new Word64(1013904242,4271175723);g=new Word64(2773480762,1595750129);c=new Word64(1359893119,2917565137);C=new Word64(2600822924,725511199);h=new Word64(528734635,4215389547);l=new Word64(1541459225,327033209)}const Q=128*Math.ceil((a+17)/128),E=new Uint8Array(Q);let u,d;for(u=0;u<a;++u)E[u]=t[i++];E[u++]=128;const f=Q-16;for(;u<f;)E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=0;E[u++]=a>>>29&255;E[u++]=a>>21&255;E[u++]=a>>13&255;E[u++]=a>>5&255;E[u++]=a<<3&255;const p=new Array(80);for(u=0;u<80;u++)p[u]=new Word64(0,0);let m=new Word64(0,0),y=new Word64(0,0),w=new Word64(0,0),b=new Word64(0,0),D=new Word64(0,0),S=new Word64(0,0),k=new Word64(0,0),R=new Word64(0,0);const N=new Word64(0,0),G=new Word64(0,0),x=new Word64(0,0),U=new Word64(0,0);let M,L;for(u=0;u<Q;){for(d=0;d<16;++d){p[d].high=E[u]<<24|E[u+1]<<16|E[u+2]<<8|E[u+3];p[d].low=E[u+4]<<24|E[u+5]<<16|E[u+6]<<8|E[u+7];u+=8}for(d=16;d<80;++d){M=p[d];littleSigmaPrime(M,p[d-2],U);M.add(p[d-7]);littleSigma(x,p[d-15],U);M.add(x);M.add(p[d-16])}m.assign(s);y.assign(n);w.assign(o);b.assign(g);D.assign(c);S.assign(C);k.assign(h);R.assign(l);for(d=0;d<80;++d){N.assign(R);sigmaPrime(x,D,U);N.add(x);ch(x,D,S,k,U);N.add(x);N.add(e[d]);N.add(p[d]);sigma(G,m,U);maj(x,m,y,w,U);G.add(x);M=R;R=k;k=S;S=D;b.add(N);D=b;b=w;w=y;y=m;M.assign(N);M.add(G);m=M}s.add(m);n.add(y);o.add(w);g.add(b);c.add(D);C.add(S);h.add(k);l.add(R)}if(r){L=new Uint8Array(48);s.copyTo(L,0);n.copyTo(L,8);o.copyTo(L,16);g.copyTo(L,24);c.copyTo(L,32);C.copyTo(L,40)}else{L=new Uint8Array(64);s.copyTo(L,0);n.copyTo(L,8);o.copyTo(L,16);g.copyTo(L,24);c.copyTo(L,32);C.copyTo(L,40);h.copyTo(L,48);l.copyTo(L,56)}return L}}();class NullCipher{decryptBlock(e){return e}encrypt(e){return e}}class AESBaseCipher{constructor(){this.constructor===AESBaseCipher&&unreachable("Cannot initialize AESBaseCipher.");this._s=new Uint8Array([99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22]);this._inv_s=new Uint8Array([82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125]);this._mix=new Uint32Array([0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795]);this._mixCol=new Uint8Array(256);for(let e=0;e<256;e++)this._mixCol[e]=e<128?e<<1:e<<1^27;this.buffer=new Uint8Array(16);this.bufferPosition=0}_expandKey(e){unreachable("Cannot call `_expandKey` on the base class")}_decrypt(e,t){let i,a,r;const s=new Uint8Array(16);s.set(e);for(let e=0,i=this._keySize;e<16;++e,++i)s[e]^=t[i];for(let e=this._cyclesOfRepetition-1;e>=1;--e){i=s[13];s[13]=s[9];s[9]=s[5];s[5]=s[1];s[1]=i;i=s[14];a=s[10];s[14]=s[6];s[10]=s[2];s[6]=i;s[2]=a;i=s[15];a=s[11];r=s[7];s[15]=s[3];s[11]=i;s[7]=a;s[3]=r;for(let e=0;e<16;++e)s[e]=this._inv_s[s[e]];for(let i=0,a=16*e;i<16;++i,++a)s[i]^=t[a];for(let e=0;e<16;e+=4){const t=this._mix[s[e]],a=this._mix[s[e+1]],r=this._mix[s[e+2]],n=this._mix[s[e+3]];i=t^a>>>8^a<<24^r>>>16^r<<16^n>>>24^n<<8;s[e]=i>>>24&255;s[e+1]=i>>16&255;s[e+2]=i>>8&255;s[e+3]=255&i}}i=s[13];s[13]=s[9];s[9]=s[5];s[5]=s[1];s[1]=i;i=s[14];a=s[10];s[14]=s[6];s[10]=s[2];s[6]=i;s[2]=a;i=s[15];a=s[11];r=s[7];s[15]=s[3];s[11]=i;s[7]=a;s[3]=r;for(let e=0;e<16;++e){s[e]=this._inv_s[s[e]];s[e]^=t[e]}return s}_encrypt(e,t){const i=this._s;let a,r,s;const n=new Uint8Array(16);n.set(e);for(let e=0;e<16;++e)n[e]^=t[e];for(let e=1;e<this._cyclesOfRepetition;e++){for(let e=0;e<16;++e)n[e]=i[n[e]];s=n[1];n[1]=n[5];n[5]=n[9];n[9]=n[13];n[13]=s;s=n[2];r=n[6];n[2]=n[10];n[6]=n[14];n[10]=s;n[14]=r;s=n[3];r=n[7];a=n[11];n[3]=n[15];n[7]=s;n[11]=r;n[15]=a;for(let e=0;e<16;e+=4){const t=n[e+0],i=n[e+1],r=n[e+2],s=n[e+3];a=t^i^r^s;n[e+0]^=a^this._mixCol[t^i];n[e+1]^=a^this._mixCol[i^r];n[e+2]^=a^this._mixCol[r^s];n[e+3]^=a^this._mixCol[s^t]}for(let i=0,a=16*e;i<16;++i,++a)n[i]^=t[a]}for(let e=0;e<16;++e)n[e]=i[n[e]];s=n[1];n[1]=n[5];n[5]=n[9];n[9]=n[13];n[13]=s;s=n[2];r=n[6];n[2]=n[10];n[6]=n[14];n[10]=s;n[14]=r;s=n[3];r=n[7];a=n[11];n[3]=n[15];n[7]=s;n[11]=r;n[15]=a;for(let e=0,i=this._keySize;e<16;++e,++i)n[e]^=t[i];return n}_decryptBlock2(e,t){const i=e.length;let a=this.buffer,r=this.bufferPosition;const s=[];let n=this.iv;for(let t=0;t<i;++t){a[r]=e[t];++r;if(r<16)continue;const i=this._decrypt(a,this._key);for(let e=0;e<16;++e)i[e]^=n[e];n=a;s.push(i);a=new Uint8Array(16);r=0}this.buffer=a;this.bufferLength=r;this.iv=n;if(0===s.length)return new Uint8Array(0);let o=16*s.length;if(t){const e=s.at(-1);let t=e[15];if(t<=16){for(let i=15,a=16-t;i>=a;--i)if(e[i]!==t){t=0;break}o-=t;s[s.length-1]=e.subarray(0,16-t)}}const g=new Uint8Array(o);for(let e=0,t=0,i=s.length;e<i;++e,t+=16)g.set(s[e],t);return g}decryptBlock(e,t,i=null){const a=e.length,r=this.buffer;let s=this.bufferPosition;if(i)this.iv=i;else{for(let t=0;s<16&&t<a;++t,++s)r[s]=e[t];if(s<16){this.bufferLength=s;return new Uint8Array(0)}this.iv=r;e=e.subarray(16)}this.buffer=new Uint8Array(16);this.bufferLength=0;this.decryptBlock=this._decryptBlock2;return this.decryptBlock(e,t)}encrypt(e,t){const i=e.length;let a=this.buffer,r=this.bufferPosition;const s=[];t||(t=new Uint8Array(16));for(let n=0;n<i;++n){a[r]=e[n];++r;if(r<16)continue;for(let e=0;e<16;++e)a[e]^=t[e];const i=this._encrypt(a,this._key);t=i;s.push(i);a=new Uint8Array(16);r=0}this.buffer=a;this.bufferLength=r;this.iv=t;if(0===s.length)return new Uint8Array(0);const n=16*s.length,o=new Uint8Array(n);for(let e=0,t=0,i=s.length;e<i;++e,t+=16)o.set(s[e],t);return o}}class AES128Cipher extends AESBaseCipher{constructor(e){super();this._cyclesOfRepetition=10;this._keySize=160;this._rcon=new Uint8Array([141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141]);this._key=this._expandKey(e)}_expandKey(e){const t=this._s,i=this._rcon,a=new Uint8Array(176);a.set(e);for(let e=16,r=1;e<176;++r){let s=a[e-3],n=a[e-2],o=a[e-1],g=a[e-4];s=t[s];n=t[n];o=t[o];g=t[g];s^=i[r];for(let t=0;t<4;++t){a[e]=s^=a[e-16];e++;a[e]=n^=a[e-16];e++;a[e]=o^=a[e-16];e++;a[e]=g^=a[e-16];e++}}return a}}class AES256Cipher extends AESBaseCipher{constructor(e){super();this._cyclesOfRepetition=14;this._keySize=224;this._key=this._expandKey(e)}_expandKey(e){const t=this._s,i=new Uint8Array(240);i.set(e);let a,r,s,n,o=1;for(let e=32,g=1;e<240;++g){if(e%32==16){a=t[a];r=t[r];s=t[s];n=t[n]}else if(e%32==0){a=i[e-3];r=i[e-2];s=i[e-1];n=i[e-4];a=t[a];r=t[r];s=t[s];n=t[n];a^=o;(o<<=1)>=256&&(o=255&(27^o))}for(let t=0;t<4;++t){i[e]=a^=i[e-32];e++;i[e]=r^=i[e-32];e++;i[e]=s^=i[e-32];e++;i[e]=n^=i[e-32];e++}}return i}}class PDF17{checkOwnerPassword(e,t,i,a){const r=new Uint8Array(e.length+56);r.set(e,0);r.set(t,e.length);r.set(i,e.length+t.length);return isArrayEqual(Tr(r,0,r.length),a)}checkUserPassword(e,t,i){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);return isArrayEqual(Tr(a,0,a.length),i)}getOwnerKey(e,t,i,a){const r=new Uint8Array(e.length+56);r.set(e,0);r.set(t,e.length);r.set(i,e.length+t.length);const s=Tr(r,0,r.length);return new AES256Cipher(s).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,t,i){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);const r=Tr(a,0,a.length);return new AES256Cipher(r).decryptBlock(i,!1,new Uint8Array(16))}}class PDF20{_hash(e,t,i){let a=Tr(t,0,t.length).subarray(0,32),r=[0],s=0;for(;s<64||r.at(-1)>s-32;){const t=e.length+a.length+i.length,c=new Uint8Array(t);let C=0;c.set(e,C);C+=e.length;c.set(a,C);C+=a.length;c.set(i,C);const h=new Uint8Array(64*t);for(let e=0,i=0;e<64;e++,i+=t)h.set(c,i);r=new AES128Cipher(a.subarray(0,16)).encrypt(h,a.subarray(16,32));const l=r.slice(0,16).reduce(((e,t)=>e+t),0)%3;0===l?a=Tr(r,0,r.length):1===l?a=(n=r,o=0,g=r.length,Kr(n,o,g,!0)):2===l&&(a=Kr(r,0,r.length));s++}var n,o,g;return a.subarray(0,32)}checkOwnerPassword(e,t,i,a){const r=new Uint8Array(e.length+56);r.set(e,0);r.set(t,e.length);r.set(i,e.length+t.length);return isArrayEqual(this._hash(e,r,i),a)}checkUserPassword(e,t,i){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);return isArrayEqual(this._hash(e,a,[]),i)}getOwnerKey(e,t,i,a){const r=new Uint8Array(e.length+56);r.set(e,0);r.set(t,e.length);r.set(i,e.length+t.length);const s=this._hash(e,r,i);return new AES256Cipher(s).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,t,i){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);const r=this._hash(e,a,[]);return new AES256Cipher(r).decryptBlock(i,!1,new Uint8Array(16))}}class CipherTransform{constructor(e,t){this.StringCipherConstructor=e;this.StreamCipherConstructor=t}createStream(e,t){const i=new this.StreamCipherConstructor;return new DecryptStream(e,t,(function cipherTransformDecryptStream(e,t){return i.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let i=stringToBytes(e);i=t.decryptBlock(i,!0);return bytesToString(i)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof AESBaseCipher){const i=16-e.length%16;e+=String.fromCharCode(i).repeat(i);const a=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(a);else for(let e=0;e<16;e++)a[e]=Math.floor(256*Math.random());let r=stringToBytes(e);r=t.encrypt(r,a);const s=new Uint8Array(16+r.length);s.set(a);s.set(r,16);return bytesToString(s)}let i=stringToBytes(e);i=t.encrypt(i);return bytesToString(i)}}class CipherTransformFactory{static#k=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);#R(e,t,i,a,r,s,n,o,g,c,C,h){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const l=6===e?new PDF20:new PDF17;return l.checkUserPassword(t,o,n)?l.getUserKey(t,g,C):t.length&&l.checkOwnerPassword(t,a,s,i)?l.getOwnerKey(t,r,s,c):null}#N(e,t,i,a,r,s,n,o){const g=40+i.length+e.length,c=new Uint8Array(g);let C,h,l=0;if(t){h=Math.min(32,t.length);for(;l<h;++l)c[l]=t[l]}C=0;for(;l<32;)c[l++]=CipherTransformFactory.#k[C++];for(C=0,h=i.length;C<h;++C)c[l++]=i[C];c[l++]=255&r;c[l++]=r>>8&255;c[l++]=r>>16&255;c[l++]=r>>>24&255;for(C=0,h=e.length;C<h;++C)c[l++]=e[C];if(s>=4&&!o){c[l++]=255;c[l++]=255;c[l++]=255;c[l++]=255}let Q=vr(c,0,l);const E=n>>3;if(s>=3)for(C=0;C<50;++C)Q=vr(Q,0,E);const u=Q.subarray(0,E);let d,f;if(s>=3){for(l=0;l<32;++l)c[l]=CipherTransformFactory.#k[l];for(C=0,h=e.length;C<h;++C)c[l++]=e[C];d=new ARCFourCipher(u);f=d.encryptBlock(vr(c,0,l));h=u.length;const t=new Uint8Array(h);for(C=1;C<=19;++C){for(let e=0;e<h;++e)t[e]=u[e]^C;d=new ARCFourCipher(t);f=d.encryptBlock(f)}for(C=0,h=f.length;C<h;++C)if(a[C]!==f[C])return null}else{d=new ARCFourCipher(u);f=d.encryptBlock(CipherTransformFactory.#k);for(C=0,h=f.length;C<h;++C)if(a[C]!==f[C])return null}return u}#G(e,t,i,a){const r=new Uint8Array(32);let s=0;const n=Math.min(32,e.length);for(;s<n;++s)r[s]=e[s];let o=0;for(;s<32;)r[s++]=CipherTransformFactory.#k[o++];let g=vr(r,0,s);const c=a>>3;if(i>=3)for(o=0;o<50;++o)g=vr(g,0,g.length);let C,h;if(i>=3){h=t;const e=new Uint8Array(c);for(o=19;o>=0;o--){for(let t=0;t<c;++t)e[t]=g[t]^o;C=new ARCFourCipher(e);h=C.encryptBlock(h)}}else{C=new ARCFourCipher(g.subarray(0,c));h=C.encryptBlock(t)}return h}#x(e,t,i,a=!1){const r=new Uint8Array(i.length+9),s=i.length;let n;for(n=0;n<s;++n)r[n]=i[n];r[n++]=255&e;r[n++]=e>>8&255;r[n++]=e>>16&255;r[n++]=255&t;r[n++]=t>>8&255;if(a){r[n++]=115;r[n++]=65;r[n++]=108;r[n++]=84}return vr(r,0,n).subarray(0,Math.min(i.length+5,16))}#U(e,t,i,a,r){if(!(t instanceof Name))throw new FormatError("Invalid crypt filter name.");const s=this,n=e.get(t.name),o=n?.get("CFM");if(!o||"None"===o.name)return function(){return new NullCipher};if("V2"===o.name)return function(){return new ARCFourCipher(s.#x(i,a,r,!1))};if("AESV2"===o.name)return function(){return new AES128Cipher(s.#x(i,a,r,!0))};if("AESV3"===o.name)return function(){return new AES256Cipher(r)};throw new FormatError("Unknown crypto method")}constructor(e,t,i){const a=e.get("Filter");if(!isName(a,"Standard"))throw new FormatError("unknown encryption method");this.filterName=a.name;this.dict=e;const r=e.get("V");if(!Number.isInteger(r)||1!==r&&2!==r&&4!==r&&5!==r)throw new FormatError("unsupported encryption algorithm");this.algorithm=r;let s=e.get("Length");if(!s)if(r<=3)s=40;else{const t=e.get("CF"),i=e.get("StmF");if(t instanceof Dict&&i instanceof Name){t.suppressEncryption=!0;const e=t.get(i.name);s=e?.get("Length")||128;s<40&&(s<<=3)}}if(!Number.isInteger(s)||s<40||s%8!=0)throw new FormatError("invalid key length");const n=stringToBytes(e.get("O")),o=stringToBytes(e.get("U")),g=n.subarray(0,32),c=o.subarray(0,32),C=e.get("P"),h=e.get("R"),l=(4===r||5===r)&&!1!==e.get("EncryptMetadata");this.encryptMetadata=l;const Q=stringToBytes(t);let E,u;if(i){if(6===h)try{i=utf8StringToString(i)}catch{warn("CipherTransformFactory: Unable to convert UTF8 encoded password.")}E=stringToBytes(i)}if(5!==r)u=this.#N(Q,E,g,c,C,h,s,l);else{const t=n.subarray(32,40),i=n.subarray(40,48),a=o.subarray(0,48),r=o.subarray(32,40),s=o.subarray(40,48),C=stringToBytes(e.get("OE")),l=stringToBytes(e.get("UE")),Q=stringToBytes(e.get("Perms"));u=this.#R(h,E,g,t,i,a,c,r,s,C,l,Q)}if(!u&&!i)throw new PasswordException("No password given",rt);if(!u&&i){const e=this.#G(E,g,h,s);u=this.#N(Q,e,g,c,C,h,s,l)}if(!u)throw new PasswordException("Incorrect Password",st);this.encryptionKey=u;if(r>=4){const t=e.get("CF");t instanceof Dict&&(t.suppressEncryption=!0);this.cf=t;this.stmf=e.get("StmF")||Name.get("Identity");this.strf=e.get("StrF")||Name.get("Identity");this.eff=e.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new CipherTransform(this.#U(this.cf,this.strf,e,t,this.encryptionKey),this.#U(this.cf,this.stmf,e,t,this.encryptionKey));const i=this.#x(e,t,this.encryptionKey,!1),cipherConstructor=function(){return new ARCFourCipher(i)};return new CipherTransform(cipherConstructor,cipherConstructor)}}async function writeObject(e,t,i,{encrypt:a=null}){const r=a?.createCipherTransform(e.num,e.gen);i.push(`${e.num} ${e.gen} obj\n`);t instanceof Dict?await writeDict(t,i,r):t instanceof BaseStream?await writeStream(t,i,r):(Array.isArray(t)||ArrayBuffer.isView(t))&&await writeArray(t,i,r);i.push("\nendobj\n")}async function writeDict(e,t,i){t.push("<<");for(const a of e.getKeys()){t.push(` /${escapePDFName(a)} `);await writeValue(e.getRaw(a),t,i)}t.push(">>")}async function writeStream(e,t,i){let a=e.getBytes();const{dict:r}=e,[s,n]=await Promise.all([r.getAsync("Filter"),r.getAsync("DecodeParms")]),o=isName(Array.isArray(s)?await r.xref.fetchIfRefAsync(s[0]):s,"FlateDecode");if(a.length>=256||o)try{const e=new CompressionStream("deflate"),t=e.writable.getWriter();t.write(a);t.close();const i=await new Response(e.readable).arrayBuffer();a=new Uint8Array(i);let g,c;if(s){if(!o){g=Array.isArray(s)?[Name.get("FlateDecode"),...s]:[Name.get("FlateDecode"),s];n&&(c=Array.isArray(n)?[null,...n]:[null,n])}}else g=Name.get("FlateDecode");g&&r.set("Filter",g);c&&r.set("DecodeParms",c)}catch(e){info(`writeStream - cannot compress data: "${e}".`)}let g=bytesToString(a);i&&(g=i.encryptString(g));r.set("Length",g.length);await writeDict(r,t,i);t.push(" stream\n",g,"\nendstream")}async function writeArray(e,t,i){t.push("[");let a=!0;for(const r of e){a?a=!1:t.push(" ");await writeValue(r,t,i)}t.push("]")}async function writeValue(e,t,i){if(e instanceof Name)t.push(`/${escapePDFName(e.name)}`);else if(e instanceof Ref)t.push(`${e.num} ${e.gen} R`);else if(Array.isArray(e)||ArrayBuffer.isView(e))await writeArray(e,t,i);else if("string"==typeof e){i&&(e=i.encryptString(e));t.push(`(${escapeString(e)})`)}else"number"==typeof e?t.push(numberToString(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof Dict?await writeDict(e,t,i):e instanceof BaseStream?await writeStream(e,t,i):null===e?t.push("null"):warn(`Unhandled value in writer: ${typeof e}, please file a bug.`)}function writeInt(e,t,i,a){for(let r=t+i-1;r>i-1;r--){a[r]=255&e;e>>=8}return i+t}function writeString(e,t,i){for(let a=0,r=e.length;a<r;a++)i[t+a]=255&e.charCodeAt(a)}function updateXFA({xfaData:e,xfaDatasetsRef:t,newRefs:i,xref:a}){if(null===e){e=function writeXFADataForAcroform(e,t){const i=new SimpleXMLParser({hasAttributes:!0}).parseFromString(e);for(const{xfa:e}of t){if(!e)continue;const{path:t,value:a}=e;if(!t)continue;const r=parseXFAPath(t);let s=i.documentElement.searchNode(r,0);!s&&r.length>1&&(s=i.documentElement.searchNode([r.at(-1)],0));s?s.childNodes=Array.isArray(a)?a.map((e=>new SimpleDOMNode("value",e))):[new SimpleDOMNode("#text",a)]:warn(`Node not found for path: ${t}`)}const a=[];i.documentElement.dump(a);return a.join("")}(a.fetchIfRef(t).getString(),i)}const r=a.encrypt;if(r){e=r.createCipherTransform(t.num,t.gen).encryptString(e)}const s=`${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n`+e+"\nendstream\nendobj\n";i.push({ref:t,data:s})}function getIndexes(e){const t=[];for(const{ref:i}of e)i.num===t.at(-2)+t.at(-1)?t[t.length-1]+=1:t.push(i.num,1);return t}function computeIDs(e,t,i){if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const a=function computeMD5(e,t){const i=Math.floor(Date.now()/1e3),a=t.filename||"",r=[i.toString(),a,e.toString()];let s=r.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info)){r.push(e);s+=e.length}const n=new Uint8Array(s);let o=0;for(const e of r){writeString(e,o,n);o+=e.length}return bytesToString(vr(n))}(e,t);i.set("ID",[t.fileIds[0],a])}}async function incrementalUpdate({originalData:e,xrefInfo:t,newRefs:i,xref:a=null,hasXfa:r=!1,xfaDatasetsRef:s=null,hasXfaDatasetsEntry:n=!1,needAppearances:o,acroFormRef:g=null,acroForm:c=null,xfaData:C=null,useXrefStream:h=!1}){await async function updateAcroform({xref:e,acroForm:t,acroFormRef:i,hasXfa:a,hasXfaDatasetsEntry:r,xfaDatasetsRef:s,needAppearances:n,newRefs:o}){!a||r||s||warn("XFA - Cannot save it");if(!n&&(!a||!s||r))return;const g=t.clone();if(a&&!r){const e=t.get("XFA").slice();e.splice(2,0,"datasets");e.splice(3,0,s);g.set("XFA",e)}n&&g.set("NeedAppearances",!0);const c=[];await writeObject(i,g,c,e);o.push({ref:i,data:c.join("")})}({xref:a,acroForm:c,acroFormRef:g,hasXfa:r,hasXfaDatasetsEntry:n,xfaDatasetsRef:s,needAppearances:o,newRefs:i});r&&updateXFA({xfaData:C,xfaDatasetsRef:s,newRefs:i,xref:a});const l=[];let Q=e.length;const E=e.at(-1);if(10!==E&&13!==E){l.push("\n");Q+=1}const u=function getTrailerDict(e,t,i){const a=new Dict(null);a.set("Prev",e.startXRef);const r=e.newRef;if(i){t.push({ref:r,data:""});a.set("Size",r.num+1);a.set("Type",Name.get("XRef"))}else a.set("Size",r.num);null!==e.rootRef&&a.set("Root",e.rootRef);null!==e.infoRef&&a.set("Info",e.infoRef);null!==e.encryptRef&&a.set("Encrypt",e.encryptRef);return a}(t,i,h);i=i.sort(((e,t)=>e.ref.num-t.ref.num));for(const{data:e}of i)null!==e&&l.push(e);await(h?async function getXRefStreamTable(e,t,i,a,r){const s=[];let n=0,o=0;for(const{ref:e,data:a}of i){let i;n=Math.max(n,t);if(null!==a){i=Math.min(e.gen,65535);s.push([1,t,i]);t+=a.length}else{i=Math.min(e.gen+1,65535);s.push([0,0,i])}o=Math.max(o,i)}a.set("Index",getIndexes(i));const g=[1,getSizeInBytes(n),getSizeInBytes(o)];a.set("W",g);computeIDs(t,e,a);const c=g.reduce(((e,t)=>e+t),0),C=new Uint8Array(c*s.length),h=new Stream(C);h.dict=a;let l=0;for(const[e,t,i]of s){l=writeInt(e,g[0],l,C);l=writeInt(t,g[1],l,C);l=writeInt(i,g[2],l,C)}await writeObject(e.newRef,h,r,{});r.push("startxref\n",t.toString(),"\n%%EOF\n")}(t,Q,i,u,l):async function getXRefTable(e,t,i,a,r){r.push("xref\n");const s=getIndexes(i);let n=0;for(const{ref:e,data:a}of i){if(e.num===s[n]){r.push(`${s[n]} ${s[n+1]}\n`);n+=2}if(null!==a){r.push(`${t.toString().padStart(10,"0")} ${Math.min(e.gen,65535).toString().padStart(5,"0")} n\r\n`);t+=a.length}else r.push(`0000000000 ${Math.min(e.gen+1,65535).toString().padStart(5,"0")} f\r\n`)}computeIDs(t,e,a);r.push("trailer\n");await writeDict(a,r);r.push("\nstartxref\n",t.toString(),"\n%%EOF\n")}(t,Q,i,u,l));const d=l.reduce(((e,t)=>e+t.length),e.length),f=new Uint8Array(d);f.set(e);let p=e.length;for(const e of l){writeString(e,p,f);p+=e.length}return f}const qr=1,Or=2,Pr=3,Wr=4,jr=5;class StructTreeRoot{constructor(e,t){this.dict=e;this.ref=t instanceof Ref?t:null;this.roleMap=new Map;this.structParentIds=null}init(){this.readRoleMap()}#M(e,t,i){if(!(e instanceof Ref)||t<0)return;this.structParentIds||=new RefSetCache;let a=this.structParentIds.get(e);if(!a){a=[];this.structParentIds.put(e,a)}a.push([t,i])}addAnnotationIdToPage(e,t){this.#M(e,t,Wr)}readRoleMap(){const e=this.dict.get("RoleMap");e instanceof Dict&&e.forEach(((e,t)=>{t instanceof Name&&this.roleMap.set(e,t.name)}))}static async canCreateStructureTree({catalogRef:e,pdfManager:t,newAnnotationsByPage:i}){if(!(e instanceof Ref)){warn("Cannot save the struct tree: no catalog reference.");return!1}let a=0,r=!0;for(const[e,s]of i){const{ref:i}=await t.getPage(e);if(!(i instanceof Ref)){warn(`Cannot save the struct tree: page ${e} has no ref.`);r=!0;break}for(const e of s)if(e.accessibilityData?.type){e.parentTreeId=a++;r=!1}}if(r){for(const e of i.values())for(const t of e)delete t.parentTreeId;return!1}return!0}static async createStructureTree({newAnnotationsByPage:e,xref:t,catalogRef:i,pdfManager:a,newRefs:r}){const s=a.catalog.cloneDict(),n=new RefSetCache;n.put(i,s);const o=t.getNewTemporaryRef();s.set("StructTreeRoot",o);const g=new Dict(t);g.set("Type",Name.get("StructTreeRoot"));const c=t.getNewTemporaryRef();g.set("ParentTree",c);const C=[];g.set("K",C);n.put(o,g);const h=new Dict(t),l=[];h.set("Nums",l);const Q=await this.#L({newAnnotationsByPage:e,structTreeRootRef:o,kids:C,nums:l,xref:t,pdfManager:a,cache:n});g.set("ParentTreeNextKey",Q);n.put(c,h);const E=[];for(const[e,i]of n.items()){E.length=0;await writeObject(e,i,E,t);r.push({ref:e,data:E.join("")})}}async canUpdateStructTree({pdfManager:e,xref:t,newAnnotationsByPage:i}){if(!this.ref){warn("Cannot update the struct tree: no root reference.");return!1}let a=this.dict.get("ParentTreeNextKey");if(!Number.isInteger(a)||a<0){warn("Cannot update the struct tree: invalid next key.");return!1}const r=this.dict.get("ParentTree");if(!(r instanceof Dict)){warn("Cannot update the struct tree: ParentTree isn't a dict.");return!1}const s=r.get("Nums");if(!Array.isArray(s)){warn("Cannot update the struct tree: nums isn't an array.");return!1}const n=new NumberTree(r,t);for(const t of i.keys()){const{pageDict:i}=await e.getPage(t);if(!i.has("StructParents"))continue;const a=i.get("StructParents");if(!Number.isInteger(a)||!Array.isArray(n.get(a))){warn(`Cannot save the struct tree: page ${t} has a wrong id.`);return!1}}let o=!0;for(const[t,r]of i){const{pageDict:i}=await e.getPage(t);StructTreeRoot.#H({elements:r,xref:this.dict.xref,pageDict:i,numberTree:n});for(const e of r)if(e.accessibilityData?.type){e.parentTreeId=a++;o=!1}}if(o){for(const e of i.values())for(const t of e){delete t.parentTreeId;delete t.structTreeParent}return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:t,newRefs:i}){const a=this.dict.xref,r=this.dict.clone(),s=this.ref,n=new RefSetCache;n.put(s,r);let o,g=r.getRaw("ParentTree");if(g instanceof Ref)o=a.fetch(g);else{o=g;g=a.getNewTemporaryRef();r.set("ParentTree",g)}o=o.clone();n.put(g,o);let c=o.getRaw("Nums"),C=null;if(c instanceof Ref){C=c;c=a.fetch(C)}c=c.slice();C||o.set("Nums",c);const h=await StructTreeRoot.#L({newAnnotationsByPage:e,structTreeRootRef:s,kids:null,nums:c,xref:a,pdfManager:t,cache:n});r.set("ParentTreeNextKey",h);C&&n.put(C,c);const l=[];for(const[e,t]of n.items()){l.length=0;await writeObject(e,t,l,a);i.push({ref:e,data:l.join("")})}}static async#L({newAnnotationsByPage:e,structTreeRootRef:t,kids:i,nums:a,xref:r,pdfManager:s,cache:n}){const o=Name.get("OBJR");let g=-1/0;for(const[c,C]of e){const{ref:e}=await s.getPage(c),h=e instanceof Ref;for(const{accessibilityData:s,ref:c,parentTreeId:l,structTreeParent:Q}of C){if(!s?.type)continue;const{type:C,title:E,lang:u,alt:d,expanded:f,actualText:p}=s;g=Math.max(g,l);const m=r.getNewTemporaryRef(),y=new Dict(r);y.set("S",Name.get(C));E&&y.set("T",E);u&&y.set("Lang",u);d&&y.set("Alt",d);f&&y.set("E",f);p&&y.set("ActualText",p);await this.#J({structTreeParent:Q,tagDict:y,newTagRef:m,structTreeRootRef:t,fallbackKids:i,xref:r,cache:n});const w=new Dict(r);y.set("K",w);w.set("Type",o);h&&w.set("Pg",e);w.set("Obj",c);n.put(m,y);a.push(l,m)}}return g+1}static#H({elements:e,xref:t,pageDict:i,numberTree:a}){const r=new Map;for(const t of e)if(t.structTreeParentId){const e=parseInt(t.structTreeParentId.split("_mc")[1],10);let i=r.get(e);if(!i){i=[];r.set(e,i)}i.push(t)}const s=i.get("StructParents");if(!Number.isInteger(s))return;const n=a.get(s),updateElement=(e,i,a)=>{const s=r.get(e);if(s){const e=i.getRaw("P"),r=t.fetchIfRef(e);if(e instanceof Ref&&r instanceof Dict){const e={ref:a,dict:i};for(const t of s)t.structTreeParent=e}return!0}return!1};for(const e of n){if(!(e instanceof Ref))continue;const i=t.fetch(e),a=i.get("K");if(Number.isInteger(a))updateElement(a,i,e);else if(Array.isArray(a))for(let r of a){r=t.fetchIfRef(r);if(Number.isInteger(r)&&updateElement(r,i,e))break;if(!(r instanceof Dict))continue;if(!isName(r.get("Type"),"MCR"))break;const a=r.get("MCID");if(Number.isInteger(a)&&updateElement(a,i,e))break}}}static async#J({structTreeParent:e,tagDict:t,newTagRef:i,structTreeRootRef:a,fallbackKids:r,xref:s,cache:n}){let o,g=null;if(e){({ref:g}=e);o=e.dict.getRaw("P")||a}else o=a;t.set("P",o);const c=s.fetchIfRef(o);if(!c){r.push(i);return}let C=n.get(o);if(!C){C=c.clone();n.put(o,C)}const h=C.getRaw("K");let l=h instanceof Ref?n.get(h):null;if(!l){l=s.fetchIfRef(h);l=Array.isArray(l)?l.slice():[h];const e=s.getNewTemporaryRef();C.set("K",e);n.put(e,l)}const Q=l.indexOf(g);l.splice(Q>=0?Q+1:l.length,0,i)}}class StructElementNode{constructor(e,t){this.tree=e;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof Name?e.name:"",{root:i}=this.tree;return i.roleMap.has(t)?i.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof Ref&&(e=t.toString());const i=this.dict.get("K");if(Array.isArray(i))for(const t of i){const i=this.parseKid(e,t);i&&this.kids.push(i)}else{const t=this.parseKid(e,i);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:qr,mcid:t,pageObjId:e});let i=null;t instanceof Ref?i=this.dict.xref.fetch(t):t instanceof Dict&&(i=t);if(!i)return null;const a=i.getRaw("Pg");a instanceof Ref&&(e=a.toString());const r=i.get("Type")instanceof Name?i.get("Type").name:null;if("MCR"===r){if(this.tree.pageDict.objId!==e)return null;const t=i.getRaw("Stm");return new StructElement({type:Or,refObjId:t instanceof Ref?t.toString():null,pageObjId:e,mcid:i.get("MCID")})}if("OBJR"===r){if(this.tree.pageDict.objId!==e)return null;const t=i.getRaw("Obj");return new StructElement({type:Pr,refObjId:t instanceof Ref?t.toString():null,pageObjId:e})}return new StructElement({type:jr,dict:i})}}class StructElement{constructor({type:e,dict:t=null,mcid:i=null,pageObjId:a=null,refObjId:r=null}){this.type=e;this.dict=t;this.mcid=i;this.pageObjId=a;this.refObjId=r;this.parentNode=null}}class StructTreePage{constructor(e,t){this.root=e;this.rootDict=e?e.dict:null;this.pageDict=t;this.nodes=[]}parse(e){if(!this.root||!this.rootDict)return;const t=this.rootDict.get("ParentTree");if(!t)return;const i=this.pageDict.get("StructParents"),a=e instanceof Ref&&this.root.structParentIds?.get(e);if(!Number.isInteger(i)&&!a)return;const r=new Map,s=new NumberTree(t,this.rootDict.xref);if(Number.isInteger(i)){const e=s.get(i);if(Array.isArray(e))for(const t of e)t instanceof Ref&&this.addNode(this.rootDict.xref.fetch(t),r)}if(a)for(const[e,t]of a){const i=s.get(e);if(i){const e=this.addNode(this.rootDict.xref.fetchIfRef(i),r);1===e?.kids?.length&&e.kids[0].type===Pr&&(e.kids[0].type=t)}}}addNode(e,t,i=0){if(i>40){warn("StructTree MAX_DEPTH reached.");return null}if(t.has(e))return t.get(e);const a=new StructElementNode(this,e);t.set(e,a);const r=e.get("P");if(!r||isName(r.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,a)||t.delete(e);return a}const s=this.addNode(r,t,i+1);if(!s)return a;let n=!1;for(const t of s.kids)if(t.type===jr&&t.dict===e){t.parentNode=a;n=!0}n||t.delete(e);return a}addTopLevelNode(e,t){const i=this.rootDict.get("K");if(!i)return!1;if(i instanceof Dict){if(i.objId!==e.objId)return!1;this.nodes[0]=t;return!0}if(!Array.isArray(i))return!0;let a=!1;for(let r=0;r<i.length;r++){const s=i[r];if(s?.toString()===e.objId){this.nodes[r]=t;a=!0}}return a}get serializable(){function nodeToSerializable(e,t,i=0){if(i>40){warn("StructTree too deep to be fully serialized.");return}const a=Object.create(null);a.role=e.role;a.children=[];t.children.push(a);const r=e.dict.get("Alt");"string"==typeof r&&(a.alt=stringToPDFString(r));const s=e.dict.get("Lang");"string"==typeof s&&(a.lang=stringToPDFString(s));for(const t of e.kids){const e=t.type===jr?t.parentNode:null;e?nodeToSerializable(e,a,i+1):t.type===qr||t.type===Or?a.children.push({type:"content",id:`p${t.pageObjId}_mc${t.mcid}`}):t.type===Pr?a.children.push({type:"object",id:t.refObjId}):t.type===Wr&&a.children.push({type:"annotation",id:`pdfjs_internal_id_${t.refObjId}`})}}const e=Object.create(null);e.children=[];e.role="Root";for(const t of this.nodes)t&&nodeToSerializable(t,e);return e}}function isValidExplicitDest(e){if(!Array.isArray(e)||e.length<2)return!1;const[t,i,...a]=e;if(!(t instanceof Ref||Number.isInteger(t)))return!1;if(!(i instanceof Name))return!1;let r=!0;switch(i.name){case"XYZ":if(3!==a.length)return!1;break;case"Fit":case"FitB":return 0===a.length;case"FitH":case"FitBH":case"FitV":case"FitBV":if(1!==a.length)return!1;break;case"FitR":if(4!==a.length)return!1;r=!1;break;default:return!1}for(const e of a)if(!("number"==typeof e||r&&null===e))return!1;return!0}function fetchDest(e){e instanceof Dict&&(e=e.get("D"));return isValidExplicitDest(e)?e:null}function fetchRemoteDest(e){let t=e.get("D");if(t){t instanceof Name&&(t=t.name);if("string"==typeof t)return stringToPDFString(t);if(isValidExplicitDest(t))return JSON.stringify(t)}return null}class Catalog{constructor(e,t){this.pdfManager=e;this.xref=t;this._catDict=t.getCatalogObj();if(!(this._catDict instanceof Dict))throw new FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict;this._actualNumPages=null;this.fontCache=new RefSetCache;this.builtInCMapCache=new Map;this.standardFontDataCache=new Map;this.globalImageCache=new GlobalImageCache;this.pageKidsCountCache=new RefSetCache;this.pageIndexCache=new RefSetCache;this.nonBlendModesSet=new RefSet;this.systemFontCache=new Map}cloneDict(){return this._catDict.clone()}get version(){const e=this._catDict.get("Version");if(e instanceof Name){if(St.test(e.name))return shadow(this,"version",e.name);warn(`Invalid PDF catalog version: ${e.name}`)}return shadow(this,"version",null)}get lang(){const e=this._catDict.get("Lang");return shadow(this,"lang",e&&"string"==typeof e?stringToPDFString(e):null)}get needsRendering(){const e=this._catDict.get("NeedsRendering");return shadow(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this._catDict.get("Collection");t instanceof Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof MissingDataException)throw e;info("Cannot fetch Collection entry; assuming no collection is present.")}return shadow(this,"collection",e)}get acroForm(){let e=null;try{const t=this._catDict.get("AcroForm");t instanceof Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof MissingDataException)throw e;info("Cannot fetch AcroForm entry; assuming no forms are present.")}return shadow(this,"acroForm",e)}get acroFormRef(){const e=this._catDict.getRaw("AcroForm");return shadow(this,"acroFormRef",e instanceof Ref?e:null)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(e instanceof Ref))return shadow(this,"metadata",null);let t=null;try{const i=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(i instanceof BaseStream&&i.dict instanceof Dict){const e=i.dict.get("Type"),a=i.dict.get("Subtype");if(isName(e,"Metadata")&&isName(a,"XML")){const e=stringToUTF8String(i.getString());e&&(t=new MetadataParser(e).serializable)}}}catch(e){if(e instanceof MissingDataException)throw e;info(`Skipping invalid Metadata: "${e}".`)}return shadow(this,"metadata",t)}get markInfo(){let e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read mark info.")}return shadow(this,"markInfo",e)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(e instanceof Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const i in t){const a=e.get(i);"boolean"==typeof a&&(t[i]=a)}return t}get structTreeRoot(){let e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable read to structTreeRoot info.")}return shadow(this,"structTreeRoot",e)}_readStructTreeRoot(){const e=this._catDict.getRaw("StructTreeRoot"),t=this.xref.fetchIfRef(e);if(!(t instanceof Dict))return null;const i=new StructTreeRoot(t,e);i.init();return i}get toplevelPagesDict(){const e=this._catDict.get("Pages");if(!(e instanceof Dict))throw new FormatError("Invalid top-level pages dictionary.");return shadow(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read document outline.")}return shadow(this,"documentOutline",e)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(e instanceof Dict))return null;e=e.getRaw("First");if(!(e instanceof Ref))return null;const t={items:[]},i=[{obj:e,parent:t}],a=new RefSet;a.put(e);const r=this.xref,s=new Uint8ClampedArray(3);for(;i.length>0;){const t=i.shift(),n=r.fetchIfRef(t.obj);if(null===n)continue;n.has("Title")||warn("Invalid outline item encountered.");const o={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:n,resultObj:o,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const g=n.get("Title"),c=n.get("F")||0,C=n.getArray("C"),h=n.get("Count");let l=s;!isNumberArray(C,3)||0===C[0]&&0===C[1]&&0===C[2]||(l=ColorSpace.singletons.rgb.getRgb(C,0));const Q={action:o.action,attachment:o.attachment,dest:o.dest,url:o.url,unsafeUrl:o.unsafeUrl,newWindow:o.newWindow,setOCGState:o.setOCGState,title:"string"==typeof g?stringToPDFString(g):"",color:l,count:Number.isInteger(h)?h:void 0,bold:!!(2&c),italic:!!(1&c),items:[]};t.parent.items.push(Q);e=n.getRaw("First");if(e instanceof Ref&&!a.has(e)){i.push({obj:e,parent:Q});a.put(e)}e=n.getRaw("Next");if(e instanceof Ref&&!a.has(e)){i.push({obj:e,parent:t.parent});a.put(e)}}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this._readPermissions()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read permissions.")}return shadow(this,"permissions",e)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const i=[];for(const e in y){const a=y[e];t&a&&i.push(a)}return i}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return shadow(this,"optionalContentConfig",null);const i=t.get("D");if(!i)return shadow(this,"optionalContentConfig",null);const a=t.get("OCGs");if(!Array.isArray(a))return shadow(this,"optionalContentConfig",null);const r=[],s=new RefSet;for(const e of a)if(e instanceof Ref&&!s.has(e)){s.put(e);r.push(this.#Y(e))}e=this.#v(i,s);e.groups=r}catch(e){if(e instanceof MissingDataException)throw e;warn(`Unable to read optional content config: ${e}`)}return shadow(this,"optionalContentConfig",e)}#Y(e){const t=this.xref.fetch(e),i={id:e.toString(),name:null,intent:null,usage:{print:null,view:null}},a=t.get("Name");"string"==typeof a&&(i.name=stringToPDFString(a));let r=t.getArray("Intent");Array.isArray(r)||(r=[r]);r.every((e=>e instanceof Name))&&(i.intent=r.map((e=>e.name)));const s=t.get("Usage");if(!(s instanceof Dict))return i;const n=i.usage,o=s.get("Print");if(o instanceof Dict){const e=o.get("PrintState");if(e instanceof Name)switch(e.name){case"ON":case"OFF":n.print={printState:e.name}}}const g=s.get("View");if(g instanceof Dict){const e=g.get("ViewState");if(e instanceof Name)switch(e.name){case"ON":case"OFF":n.view={viewState:e.name}}}return i}#v(e,t){function parseOnOff(e){const i=[];if(Array.isArray(e))for(const a of e)a instanceof Ref&&t.has(a)&&i.push(a.toString());return i}function parseOrder(e,i=0){if(!Array.isArray(e))return null;const r=[];for(const s of e){if(s instanceof Ref&&t.has(s)){a.put(s);r.push(s.toString());continue}const e=parseNestedOrder(s,i);e&&r.push(e)}if(i>0)return r;const s=[];for(const e of t)a.has(e)||s.push(e.toString());s.length&&r.push({name:null,order:s});return r}function parseNestedOrder(e,t){if(++t>r){warn("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const a=i.fetchIfRef(e);if(!Array.isArray(a))return null;const s=i.fetchIfRef(a[0]);if("string"!=typeof s)return null;const n=parseOrder(a.slice(1),t);return n&&n.length?{name:stringToPDFString(s),order:n}:null}const i=this.xref,a=new RefSet,r=10;return{name:"string"==typeof e.get("Name")?stringToPDFString(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?stringToPDFString(e.get("Creator")):null,baseState:e.get("BaseState")instanceof Name?e.get("BaseState").name:null,on:parseOnOff(e.get("ON")),off:parseOnOff(e.get("OFF")),order:parseOrder(e.get("Order")),groups:null}}setActualNumPages(e=null){this._actualNumPages=e}get hasActualNumPages(){return null!==this._actualNumPages}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new FormatError("Page count in top-level pages dictionary is not an integer.");return shadow(this,"_pagesCount",e)}get numPages(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof NameTree)for(const[i,a]of e.getAll()){const e=fetchDest(a);e&&(t[stringToPDFString(i)]=e)}else e instanceof Dict&&e.forEach((function(e,i){const a=fetchDest(i);a&&(t[e]=a)}));return shadow(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof NameTree){const i=fetchDest(t.get(e));if(i)return i;const a=this.destinations[e];if(a){warn(`Found "${e}" at an incorrect position in the NameTree.`);return a}}else if(t instanceof Dict){const i=fetchDest(t.get(e));if(i)return i}return null}_readDests(){const e=this._catDict.get("Names");return e?.has("Dests")?new NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read page labels.")}return shadow(this,"pageLabels",e)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let i=null,a="";const r=new NumberTree(e,this.xref).getAll();let s="",n=1;for(let e=0,o=this.numPages;e<o;e++){const o=r.get(e);if(void 0!==o){if(!(o instanceof Dict))throw new FormatError("PageLabel is not a dictionary.");if(o.has("Type")&&!isName(o.get("Type"),"PageLabel"))throw new FormatError("Invalid type in PageLabel dictionary.");if(o.has("S")){const e=o.get("S");if(!(e instanceof Name))throw new FormatError("Invalid style in PageLabel dictionary.");i=e.name}else i=null;if(o.has("P")){const e=o.get("P");if("string"!=typeof e)throw new FormatError("Invalid prefix in PageLabel dictionary.");a=stringToPDFString(e)}else a="";if(o.has("St")){const e=o.get("St");if(!(Number.isInteger(e)&&e>=1))throw new FormatError("Invalid start in PageLabel dictionary.");n=e}else n=1}switch(i){case"D":s=n;break;case"R":case"r":s=toRomanNumerals(n,"r"===i);break;case"A":case"a":const e=26,t="a"===i?97:65,a=n-1;s=String.fromCharCode(t+a%e).repeat(Math.floor(a/e)+1);break;default:if(i)throw new FormatError(`Invalid style "${i}" in PageLabel dictionary.`);s=""}t[e]=a+s;n++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let t="";if(e instanceof Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return shadow(this,"pageLayout",t)}get pageMode(){const e=this._catDict.get("PageMode");let t="UseNone";if(e instanceof Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return shadow(this,"pageMode",t)}get viewerPreferences(){const e=this._catDict.get("ViewerPreferences");if(!(e instanceof Dict))return shadow(this,"viewerPreferences",null);let t=null;for(const i of e.getKeys()){const a=e.get(i);let r;switch(i){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof a&&(r=a);break;case"NonFullScreenPageMode":if(a instanceof Name)switch(a.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":r=a.name;break;default:r="UseNone"}break;case"Direction":if(a instanceof Name)switch(a.name){case"L2R":case"R2L":r=a.name;break;default:r="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(a instanceof Name)switch(a.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":r=a.name;break;default:r="CropBox"}break;case"PrintScaling":if(a instanceof Name)switch(a.name){case"None":case"AppDefault":r=a.name;break;default:r="AppDefault"}break;case"Duplex":if(a instanceof Name)switch(a.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":r=a.name;break;default:r="None"}break;case"PrintPageRange":if(Array.isArray(a)&&a.length%2==0){a.every(((e,t,i)=>Number.isInteger(e)&&e>0&&(0===t||e>=i[t-1])&&e<=this.numPages))&&(r=a)}break;case"NumCopies":Number.isInteger(a)&&a>0&&(r=a);break;default:warn(`Ignoring non-standard key in ViewerPreferences: ${i}.`);continue}if(void 0!==r){t||(t=Object.create(null));t[i]=r}else warn(`Bad value, for key "${i}", in ViewerPreferences: ${a}.`)}return shadow(this,"viewerPreferences",t)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if(e instanceof Dict){const i=new Dict(this.xref);i.set("A",e);const a={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:i,resultObj:a});Array.isArray(a.dest)?t.dest=a.dest:a.action&&(t.action=a.action)}else Array.isArray(e)&&(t.dest=e);return shadow(this,"openAction",objectSize(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof Dict&&e.has("EmbeddedFiles")){const i=new NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,a]of i.getAll()){const i=new FileSpec(a,this.xref);t||(t=Object.create(null));t[stringToPDFString(e)]=i.serializable}}return shadow(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof Dict&&e.has("XFAImages")){const i=new NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,a]of i.getAll()){t||(t=new Dict(this.xref));t.set(stringToPDFString(e),a)}}return shadow(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function appendIfJavaScriptDict(e,i){if(!(i instanceof Dict))return;if(!isName(i.get("S"),"JavaScript"))return;let a=i.get("JS");if(a instanceof BaseStream)a=a.getString();else if("string"!=typeof a)return;a=stringToPDFString(a).replaceAll("\0","");a&&(t||=new Map).set(e,a)}if(e instanceof Dict&&e.has("JavaScript")){const t=new NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,i]of t.getAll())appendIfJavaScriptDict(stringToPDFString(e),i)}const i=this._catDict.get("OpenAction");i&&appendIfJavaScriptDict("OpenAction",i);return t}get jsActions(){const e=this._collectJavaScript();let t=collectActions(this.xref,this._catDict,pA);if(e){t||=Object.create(null);for(const[i,a]of e)i in t?t[i].push(a):t[i]=[a]}return shadow(this,"jsActions",t)}async fontFallback(e,t){const i=await Promise.all(this.fontCache);for(const a of i)if(a.loadedName===e){a.fallback(t);return}}async cleanup(e=!1){clearGlobalCaches();this.globalImageCache.clear(e);this.pageKidsCountCache.clear();this.pageIndexCache.clear();this.nonBlendModesSet.clear();const t=await Promise.all(this.fontCache);for(const{dict:e}of t)delete e.cacheKey;this.fontCache.clear();this.builtInCMapCache.clear();this.standardFontDataCache.clear();this.systemFontCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],i=new RefSet,a=this._catDict.getRaw("Pages");a instanceof Ref&&i.put(a);const r=this.xref,s=this.pageKidsCountCache,n=this.pageIndexCache;let o=0;for(;t.length;){const a=t.pop();if(a instanceof Ref){const g=s.get(a);if(g>=0&&o+g<=e){o+=g;continue}if(i.has(a))throw new FormatError("Pages tree contains circular reference.");i.put(a);const c=await r.fetchAsync(a);if(c instanceof Dict){let t=c.getRaw("Type");t instanceof Ref&&(t=await r.fetchAsync(t));if(isName(t,"Page")||!c.has("Kids")){s.has(a)||s.put(a,1);n.has(a)||n.put(a,o);if(o===e)return[c,a];o++;continue}}t.push(c);continue}if(!(a instanceof Dict))throw new FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:g}=a;let c=a.getRaw("Count");c instanceof Ref&&(c=await r.fetchAsync(c));if(Number.isInteger(c)&&c>=0){g&&!s.has(g)&&s.put(g,c);if(o+c<=e){o+=c;continue}}let C=a.getRaw("Kids");C instanceof Ref&&(C=await r.fetchAsync(C));if(!Array.isArray(C)){let t=a.getRaw("Type");t instanceof Ref&&(t=await r.fetchAsync(t));if(isName(t,"Page")||!a.has("Kids")){if(o===e)return[a,null];o++;continue}throw new FormatError("Page dictionary kids object is not an array.")}for(let e=C.length-1;e>=0;e--)t.push(C[e])}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,i=[{currentNode:this.toplevelPagesDict,posInKids:0}],a=new RefSet,r=this._catDict.getRaw("Pages");r instanceof Ref&&a.put(r);const s=new Map,n=this.xref,o=this.pageIndexCache;let g=0;function addPageDict(e,t){t&&!o.has(t)&&o.put(t,g);s.set(g++,[e,t])}function addPageError(i){if(i instanceof XRefEntryException&&!e)throw i;if(e&&t&&0===g){warn(`getAllPageDicts - Skipping invalid first page: "${i}".`);i=Dict.empty}s.set(g++,[i,null])}for(;i.length>0;){const e=i.at(-1),{currentNode:t,posInKids:r}=e;let s=t.getRaw("Kids");if(s instanceof Ref)try{s=await n.fetchAsync(s)}catch(e){addPageError(e);break}if(!Array.isArray(s)){addPageError(new FormatError("Page dictionary kids object is not an array."));break}if(r>=s.length){i.pop();continue}const o=s[r];let g;if(o instanceof Ref){if(a.has(o)){addPageError(new FormatError("Pages tree contains circular reference."));break}a.put(o);try{g=await n.fetchAsync(o)}catch(e){addPageError(e);break}}else g=o;if(!(g instanceof Dict)){addPageError(new FormatError("Page dictionary kid reference points to wrong type of object."));break}let c=g.getRaw("Type");if(c instanceof Ref)try{c=await n.fetchAsync(c)}catch(e){addPageError(e);break}isName(c,"Page")||!g.has("Kids")?addPageDict(g,o instanceof Ref?o:null):i.push({currentNode:g,posInKids:0});e.posInKids++}return s}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const i=this.xref;let a=0;const next=t=>function pagesBeforeRef(t){let a,r=0;return i.fetchAsync(t).then((function(i){if(isRefsEqual(t,e)&&!isDict(i,"Page")&&!(i instanceof Dict&&!i.has("Type")&&i.has("Contents")))throw new FormatError("The reference does not point to a /Page dictionary.");if(!i)return null;if(!(i instanceof Dict))throw new FormatError("Node must be a dictionary.");a=i.getRaw("Parent");return i.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(e instanceof Dict))throw new FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;const s=[];let n=!1;for(const a of e){if(!(a instanceof Ref))throw new FormatError("Kid must be a reference.");if(isRefsEqual(a,t)){n=!0;break}s.push(i.fetchAsync(a).then((function(e){if(!(e instanceof Dict))throw new FormatError("Kid node must be a dictionary.");e.has("Count")?r+=e.get("Count"):r++})))}if(!n)throw new FormatError("Kid reference not found in parent's kids.");return Promise.all(s).then((function(){return[r,a]}))}))}(t).then((t=>{if(!t){this.pageIndexCache.put(e,a);return a}const[i,r]=t;a+=i;return next(r)}));return next(e)}get baseUrl(){const e=this._catDict.get("URI");if(e instanceof Dict){const t=e.get("Base");if("string"==typeof t){const e=createValidAbsoluteUrl(t,null,{tryConvertEncoding:!0});if(e)return shadow(this,"baseUrl",e.href)}}return shadow(this,"baseUrl",this.pdfManager.docBaseUrl)}static parseDestDictionary({destDict:e,resultObj:t,docBaseUrl:i=null,docAttachments:a=null}){if(!(e instanceof Dict)){warn("parseDestDictionary: `destDict` must be a dictionary.");return}let r,s,n=e.get("A");if(!(n instanceof Dict))if(e.has("Dest"))n=e.get("Dest");else{n=e.get("AA");n instanceof Dict&&(n.has("D")?n=n.get("D"):n.has("U")&&(n=n.get("U")))}if(n instanceof Dict){const e=n.get("S");if(!(e instanceof Name)){warn("parseDestDictionary: Invalid type in Action dictionary.");return}const i=e.name;switch(i){case"ResetForm":const e=n.get("Flags"),o=0==(1&("number"==typeof e?e:0)),g=[],c=[];for(const e of n.get("Fields")||[])e instanceof Ref?c.push(e.toString()):"string"==typeof e&&g.push(stringToPDFString(e));t.resetForm={fields:g,refs:c,include:o};break;case"URI":r=n.get("URI");r instanceof Name&&(r="/"+r.name);break;case"GoTo":s=n.get("D");break;case"Launch":case"GoToR":const C=n.get("F");if(C instanceof Dict){const e=new FileSpec(C,null,!0),{rawFilename:t}=e.serializable;r=t}else"string"==typeof C&&(r=C);const h=fetchRemoteDest(n);h&&"string"==typeof r&&(r=r.split("#",1)[0]+"#"+h);const l=n.get("NewWindow");"boolean"==typeof l&&(t.newWindow=l);break;case"GoToE":const Q=n.get("T");let E;if(a&&Q instanceof Dict){const e=Q.get("R"),t=Q.get("N");isName(e,"C")&&"string"==typeof t&&(E=a[stringToPDFString(t)])}if(E){t.attachment=E;const e=fetchRemoteDest(n);e&&(t.attachmentDest=e)}else warn('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const u=n.get("N");u instanceof Name&&(t.action=u.name);break;case"SetOCGState":const d=n.get("State"),f=n.get("PreserveRB");if(!Array.isArray(d)||0===d.length)break;const p=[];for(const e of d)if(e instanceof Name)switch(e.name){case"ON":case"OFF":case"Toggle":p.push(e.name)}else e instanceof Ref&&p.push(e.toString());if(p.length!==d.length)break;t.setOCGState={state:p,preserveRB:"boolean"!=typeof f||f};break;case"JavaScript":const m=n.get("JS");let y;m instanceof BaseStream?y=m.getString():"string"==typeof m&&(y=m);const w=y&&recoverJsURL(stringToPDFString(y));if(w){r=w.url;t.newWindow=w.newWindow;break}default:if("JavaScript"===i||"SubmitForm"===i)break;warn(`parseDestDictionary - unsupported action: "${i}".`)}}else e.has("Dest")&&(s=e.get("Dest"));if("string"==typeof r){const e=createValidAbsoluteUrl(r,i,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(t.url=e.href);t.unsafeUrl=r}if(s){s instanceof Name&&(s=s.name);"string"==typeof s?t.dest=stringToPDFString(s):isValidExplicitDest(s)&&(t.dest=s)}}}function addChildren(e,t){if(e instanceof Dict)e=e.getRawValues();else if(e instanceof BaseStream)e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const a of e)((i=a)instanceof Ref||i instanceof Dict||i instanceof BaseStream||Array.isArray(i))&&t.push(a);var i}class ObjectLoader{constructor(e,t,i){this.dict=e;this.keys=t;this.xref=i;this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new RefSet;const i=[];for(const a of e){const e=t.getRaw(a);void 0!==e&&i.push(e)}return this._walk(i)}async _walk(e){const t=[],i=[];for(;e.length;){let a=e.pop();if(a instanceof Ref){if(this.refSet.has(a))continue;try{this.refSet.put(a);a=this.xref.fetch(a)}catch(e){if(!(e instanceof MissingDataException)){warn(`ObjectLoader._walk - requesting all data: "${e}".`);this.refSet=null;const{manager:t}=this.xref.stream;return t.requestAllChunks()}t.push(a);i.push({begin:e.begin,end:e.end})}}if(a instanceof BaseStream){const e=a.getBaseStreams();if(e){let r=!1;for(const t of e)if(!t.isDataLoaded){r=!0;i.push({begin:t.start,end:t.end})}r&&t.push(a)}}addChildren(a,e)}if(i.length){await this.xref.stream.manager.requestRanges(i);for(const e of t)e instanceof Ref&&this.refSet.remove(e);return this._walk(t)}this.refSet=null}}const Xr=Symbol(),Zr=Symbol(),Vr=Symbol(),_r=Symbol(),zr=Symbol(),$r=Symbol(),As=Symbol(),es=Symbol(),ts=Symbol(),is=Symbol("content"),as=Symbol("data"),rs=Symbol(),ss=Symbol("extra"),ns=Symbol(),os=Symbol(),gs=Symbol(),Is=Symbol(),cs=Symbol(),Cs=Symbol(),hs=Symbol(),ls=Symbol(),Bs=Symbol(),Qs=Symbol(),Es=Symbol(),us=Symbol(),ds=Symbol(),fs=Symbol(),ps=Symbol(),ms=Symbol(),ys=Symbol(),ws=Symbol(),bs=Symbol(),Ds=Symbol(),Fs=Symbol(),Ss=Symbol(),ks=Symbol(),Rs=Symbol(),Ns=Symbol(),Gs=Symbol(),xs=Symbol(),Us=Symbol(),Ms=Symbol(),Ls=Symbol(),Hs=Symbol(),Js=Symbol(),Ys=Symbol("namespaceId"),vs=Symbol("nodeName"),Ts=Symbol(),Ks=Symbol(),qs=Symbol(),Os=Symbol(),Ws=Symbol(),js=Symbol(),Xs=Symbol(),Zs=Symbol(),Vs=Symbol("root"),_s=Symbol(),zs=Symbol(),$s=Symbol(),An=Symbol(),en=Symbol(),tn=Symbol(),an=Symbol(),rn=Symbol(),sn=Symbol(),nn=Symbol(),on=Symbol(),gn=Symbol("uid"),In=Symbol(),cn={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}},Cn={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},hn=/([+-]?\d+\.?\d*)(.*)/;function stripQuotes(e){return e.startsWith("'")||e.startsWith('"')?e.slice(1,-1):e}function getInteger({data:e,defaultValue:t,validate:i}){if(!e)return t;e=e.trim();const a=parseInt(e,10);return!isNaN(a)&&i(a)?a:t}function getFloat({data:e,defaultValue:t,validate:i}){if(!e)return t;e=e.trim();const a=parseFloat(e);return!isNaN(a)&&i(a)?a:t}function getKeyword({data:e,defaultValue:t,validate:i}){return e&&i(e=e.trim())?e:t}function getStringOption(e,t){return getKeyword({data:e,defaultValue:t[0],validate:e=>t.includes(e)})}function getMeasurement(e,t="0"){t||="0";if(!e)return getMeasurement(t);const i=e.trim().match(hn);if(!i)return getMeasurement(t);const[,a,r]=i,s=parseFloat(a);if(isNaN(s))return getMeasurement(t);if(0===s)return 0;const n=Cn[r];return n?n(s):s}function getRatio(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\s*:\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[i,a]=t;return{num:i,den:a}}function getRelevant(e){return e?e.trim().split(/\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)}))):[]}class HTMLResult{static get FAILURE(){return shadow(this,"FAILURE",new HTMLResult(!1,null,null,null))}static get EMPTY(){return shadow(this,"EMPTY",new HTMLResult(!0,null,null,null))}constructor(e,t,i,a){this.success=e;this.html=t;this.bbox=i;this.breakNode=a}isBreak(){return!!this.breakNode}static breakNode(e){return new HTMLResult(!1,null,null,e)}static success(e,t=null){return new HTMLResult(!0,e,t,null)}}class FontFinder{constructor(e){this.fonts=new Map;this.cache=new Map;this.warned=new Set;this.defaultFont=null;this.add(e)}add(e,t=null){for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const i=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,i)}addPdfFont(e){const t=e.cssFontInfo,i=t.fontFamily;let a=this.fonts.get(i);if(!a){a=Object.create(null);this.fonts.set(i,a);this.defaultFont||(this.defaultFont=a)}let r="";const s=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?r=s>=700?"bolditalic":"italic":s>=700&&(r="bold");if(!r){(e.name.includes("Bold")||e.psName?.includes("Bold"))&&(r="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(r+="italic")}r||(r="regular");a[r]=e}getDefault(){return this.defaultFont}find(e,t=!0){let i=this.fonts.get(e)||this.cache.get(e);if(i)return i;const a=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let r=e.replaceAll(a,"");i=this.fonts.get(r);if(i){this.cache.set(e,i);return i}r=r.toLowerCase();const s=[];for(const[e,t]of this.fonts.entries())e.replaceAll(a,"").toLowerCase().startsWith(r)&&s.push(t);if(0===s.length)for(const[,e]of this.fonts.entries())e.regular.name?.replaceAll(a,"").toLowerCase().startsWith(r)&&s.push(e);if(0===s.length){r=r.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replaceAll(a,"").toLowerCase().startsWith(r)&&s.push(t)}if(0===s.length)for(const e of this.fonts.values())e.regular.name?.replaceAll(a,"").toLowerCase().startsWith(r)&&s.push(e);if(s.length>=1){1!==s.length&&t&&warn(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,s[0]);return s[0]}if(t&&!this.warned.has(e)){this.warned.add(e);warn(`XFA - Cannot find the font: ${e}`)}return null}}function selectFont(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}class FontInfo{constructor(e,t,i,a){this.lineHeight=i;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!e){[this.pdfFont,this.xfaFont]=this.defaultFont(a);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const r=a.find(e.typeface);if(r){this.pdfFont=selectFont(e,r);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(a))}else[this.pdfFont,this.xfaFont]=this.defaultFont(a)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(t?.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class FontSelector{constructor(e,t,i,a){this.fontFinder=a;this.stack=[new FontInfo(e,t,i,a)]}pushData(e,t,i){const a=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=a.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=a.paraMargin[e]);const r=new FontInfo(e,t,i||a.lineHeight,this.fontFinder);r.pdfFont||(r.pdfFont=a.pdfFont);this.stack.push(r)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}class TextMeasure{constructor(e,t,i,a){this.glyphs=[];this.fontSelector=new FontSelector(e,t,i,a);this.extraHeight=0}pushData(e,t,i){this.fontSelector.pushData(e,t,i)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),i=t.xfaFont.size;if(t.pdfFont){const a=t.xfaFont.letterSpacing,r=t.pdfFont,s=r.lineHeight||1.2,n=t.lineHeight||Math.max(1.2,s)*i,o=s-(void 0===r.lineGap?.2:r.lineGap),g=Math.max(1,o)*i,c=i/1e3,C=r.defaultWidth||r.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\u2029\n]/)){const e=r.encodeString(t).join(""),i=r.charsToGlyphs(e);for(const e of i){const t=e.width||C;this.glyphs.push([t*c+a,n,g,e.unicode,!1])}this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}else{for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([i,1.2*i,i,e,!1]);this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}}compute(e){let t=-1,i=0,a=0,r=0,s=0,n=0,o=!1,g=!0;for(let c=0,C=this.glyphs.length;c<C;c++){const[C,h,l,Q,E]=this.glyphs[c],u=" "===Q,d=g?l:h;if(E){a=Math.max(a,s);s=0;r+=n;n=d;t=-1;i=0;g=!1}else if(u)if(s+C>e){a=Math.max(a,s);s=0;r+=n;n=d;t=-1;i=0;o=!0;g=!1}else{n=Math.max(d,n);i=s;s+=C;t=c}else if(s+C>e){r+=n;n=d;if(-1!==t){c=t;a=Math.max(a,i);s=0;t=-1;i=0}else{a=Math.max(a,s);s=C}o=!0;g=!1}else{s+=C;n=Math.max(d,n)}}a=Math.max(a,s);r+=n+this.extraHeight;return{width:1.02*a,height:r,isBroken:o}}}const ln=/^[^.[]+/,Bn=/^[^\]]+/,Qn={dot:0,dotDot:1,dotHash:2,dotBracket:3,dotParen:4},En=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[us]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),un=new WeakMap;function parseExpression(e,t,i=!0){let a=e.match(ln);if(!a)return null;let[r]=a;const s=[{name:r,cacheName:"."+r,index:0,js:null,formCalc:null,operator:Qn.dot}];let n=r.length;for(;n<e.length;){const g=n;if("["===e.charAt(n++)){a=e.slice(n).match(Bn);if(!a){warn("XFA - Invalid index in SOM expression");return null}s.at(-1).index="*"===(o=(o=a[0]).trim())?1/0:parseInt(o,10)||0;n+=a[0].length+1;continue}let c;switch(e.charAt(n)){case".":if(!t)return null;n++;c=Qn.dotDot;break;case"#":n++;c=Qn.dotHash;break;case"[":if(i){warn("XFA - SOM expression contains a FormCalc subexpression which is not supported for now.");return null}c=Qn.dotBracket;break;case"(":if(i){warn("XFA - SOM expression contains a JavaScript subexpression which is not supported for now.");return null}c=Qn.dotParen;break;default:c=Qn.dot}a=e.slice(n).match(ln);if(!a)break;[r]=a;n+=r.length;s.push({name:r,cacheName:e.slice(g,n),operator:c,index:0,js:null,formCalc:null})}var o;return s}function searchNode(e,t,i,a=!0,r=!0){const s=parseExpression(i,a);if(!s)return null;const n=En.get(s[0].name);let o,g=0;if(n){o=!0;e=[n(e,t)];g=1}else{o=null===t;e=[t||e]}for(let i=s.length;g<i;g++){const{name:i,cacheName:a,operator:n,index:c}=s[g],C=[];for(const t of e){if(!t.isXFAObject)continue;let e,s;if(r){s=un.get(t);if(!s){s=new Map;un.set(t,s)}e=s.get(a)}if(!e){switch(n){case Qn.dot:e=t[hs](i,!1);break;case Qn.dotDot:e=t[hs](i,!0);break;case Qn.dotHash:e=t[Cs](i);e=e.isXFAObjectArray?e.children:[e]}r&&s.set(a,e)}e.length>0&&C.push(e)}if(0!==C.length||o||0!==g)e=isFinite(c)?C.filter((e=>c<e.length)).map((e=>e[c])):C.flat();else{const i=t[ms]();if(!(t=i))return null;g=-1;e=[t]}}return 0===e.length?null:e}function createDataNode(e,t,i){const a=parseExpression(i);if(!a)return null;if(a.some((e=>e.operator===Qn.dotDot)))return null;const r=En.get(a[0].name);let s=0;if(r){e=r(e,t);s=1}else e=t||e;for(let t=a.length;s<t;s++){const{name:t,operator:i,index:r}=a[s];if(!isFinite(r)){a[s].index=0;return e.createNodes(a.slice(s))}let n;switch(i){case Qn.dot:n=e[hs](t,!1);break;case Qn.dotDot:n=e[hs](t,!0);break;case Qn.dotHash:n=e[Cs](t);n=n.isXFAObjectArray?n.children:[n]}if(0===n.length)return e.createNodes(a.slice(s));if(!(r<n.length)){a[s].index=r-n.length;return e.createNodes(a.slice(s))}{const t=n[r];if(!t.isXFAObject){warn("XFA - Cannot create a node.");return null}e=t}}return null}const dn=Symbol(),fn=Symbol(),pn=Symbol(),mn=Symbol("_children"),yn=Symbol(),wn=Symbol(),bn=Symbol(),Dn=Symbol(),Fn=Symbol(),Sn=Symbol(),kn=Symbol(),Rn=Symbol(),Nn=Symbol(),Gn=Symbol("parent"),xn=Symbol(),Un=Symbol(),Mn=Symbol();let Ln=0;const Hn=cn.datasets.id;class XFAObject{constructor(e,t,i=!1){this[Ys]=e;this[vs]=t;this[kn]=i;this[Gn]=null;this[mn]=[];this[gn]=`${t}${Ln++}`;this[ws]=null}get isXFAObject(){return!0}get isXFAObjectArray(){return!1}createNodes(e){let t=this,i=null;for(const{name:a,index:r}of e){for(let e=0,s=isFinite(r)?r:0;e<=s;e++){const e=t[Ys]===Hn?-1:t[Ys];i=new XmlObject(e,a);t[Vr](i)}t=i}return i}[Ks](e){if(!this[kn]||!this[qs](e))return!1;const t=e[vs],i=this[t];if(!(i instanceof XFAObjectArray)){null!==i&&this[Zs](i);this[t]=e;this[Vr](e);return!0}if(i.push(e)){this[Vr](e);return!0}let a="";this.id?a=` (id: ${this.id})`:this.name&&(a=` (name: ${this.name} ${this.h.value})`);warn(`XFA - node "${this[vs]}"${a} has already enough "${t}"!`);return!1}[qs](e){return this.hasOwnProperty(e[vs])&&e[Ys]===this[Ys]}[xs](){return!1}[Xr](){return!1}[ks](){return!1}[Rs](){return!1}[js](){this.para&&this[ys]()[ss].paraStack.pop()}[Xs](){this[ys]()[ss].paraStack.push(this.para)}[$s](e){this.id&&this[Ys]===cn.template.id&&e.set(this.id,this)}[ys](){return this[ws].template}[Us](){return!1}[Ms](){return!1}[Vr](e){e[Gn]=this;this[mn].push(e);!e[ws]&&this[ws]&&(e[ws]=this[ws])}[Zs](e){const t=this[mn].indexOf(e);this[mn].splice(t,1)}[bs](){return this.hasOwnProperty("value")}[en](e){}[Os](e){}[ns](){}[zr](e){delete this[kn];if(this[As]){e.clean(this[As]);delete this[As]}}[Fs](e){return this[mn].indexOf(e)}[Ss](e,t){t[Gn]=this;this[mn].splice(e,0,t);!t[ws]&&this[ws]&&(t[ws]=this[ws])}[Ls](){return!this.name}[Js](){return""}[an](){return 0===this[mn].length?this[is]:this[mn].map((e=>e[an]())).join("")}get[pn](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof XFAObject||this[e]instanceof XFAObjectArray)break;t.add(e)}}return shadow(this,pn,e._attributes)}[Gs](e){let t=this;for(;t;){if(t===e)return!0;t=t[ms]()}return!1}[ms](){return this[Gn]}[ps](){return this[ms]()}[us](e=null){return e?this[e]:this[mn]}[rs](){const e=Object.create(null);this[is]&&(e.$content=this[is]);for(const t of Object.getOwnPropertyNames(this)){const i=this[t];null!==i&&(i instanceof XFAObject?e[t]=i[rs]():i instanceof XFAObjectArray?i.isEmpty()||(e[t]=i.dump()):e[t]=i)}return e}[on](){return null}[sn](){return HTMLResult.EMPTY}*[ds](){for(const e of this[us]())yield e}*[Dn](e,t){for(const i of this[ds]())if(!e||t===e.has(i[vs])){const e=this[cs](),t=i[sn](e);t.success||(this[ss].failingNode=i);yield t}}[os](){return null}[Zr](e,t){this[ss].children.push(e)}[cs](){}[_r]({filter:e=null,include:t=!0}){if(this[ss].generator){const e=this[cs](),t=this[ss].failingNode[sn](e);if(!t.success)return t;t.html&&this[Zr](t.html,t.bbox);delete this[ss].failingNode}else this[ss].generator=this[Dn](e,t);for(;;){const e=this[ss].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[Zr](t.html,t.bbox)}this[ss].generator=null;return HTMLResult.EMPTY}[An](e){this[Un]=new Set(Object.keys(e))}[Sn](e){const t=this[pn],i=this[Un];return[...e].filter((e=>t.has(e)&&!i.has(e)))}[_s](e,t=new Set){for(const i of this[mn])i[xn](e,t)}[xn](e,t){const i=this[Fn](e,t);i?this[dn](i,e,t):this[_s](e,t)}[Fn](e,t){const{use:i,usehref:a}=this;if(!i&&!a)return null;let r=null,s=null,n=null,o=i;if(a){o=a;a.startsWith("#som(")&&a.endsWith(")")?s=a.slice(5,-1):a.startsWith(".#som(")&&a.endsWith(")")?s=a.slice(6,-1):a.startsWith("#")?n=a.slice(1):a.startsWith(".#")&&(n=a.slice(2))}else i.startsWith("#")?n=i.slice(1):s=i;this.use=this.usehref="";if(n)r=e.get(n);else{r=searchNode(e.get(Vs),this,s,!0,!1);r&&(r=r[0])}if(!r){warn(`XFA - Invalid prototype reference: ${o}.`);return null}if(r[vs]!==this[vs]){warn(`XFA - Incompatible prototype: ${r[vs]} !== ${this[vs]}.`);return null}if(t.has(r)){warn("XFA - Cycle detected in prototypes use.");return null}t.add(r);const g=r[Fn](e,t);g&&r[dn](g,e,t);r[_s](e,t);t.delete(r);return r}[dn](e,t,i){if(i.has(e)){warn("XFA - Cycle detected in prototypes use.");return}!this[is]&&e[is]&&(this[is]=e[is]);new Set(i).add(e);for(const t of this[Sn](e[Un])){this[t]=e[t];this[Un]&&this[Un].add(t)}for(const a of Object.getOwnPropertyNames(this)){if(this[pn].has(a))continue;const r=this[a],s=e[a];if(r instanceof XFAObjectArray){for(const e of r[mn])e[xn](t,i);for(let a=r[mn].length,n=s[mn].length;a<n;a++){const s=e[mn][a][es]();if(!r.push(s))break;s[Gn]=this;this[mn].push(s);s[xn](t,i)}}else if(null===r){if(null!==s){const e=s[es]();e[Gn]=this;this[a]=e;this[mn].push(e);e[xn](t,i)}}else{r[_s](t,i);s&&r[dn](s,t,i)}}}static[yn](e){return Array.isArray(e)?e.map((e=>XFAObject[yn](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[es](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch{shadow(e,t,this[t])}e[gn]=`${e[vs]}${Ln++}`;e[mn]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[pn].has(t)){e[t]=XFAObject[yn](this[t]);continue}const i=this[t];e[t]=i instanceof XFAObjectArray?new XFAObjectArray(i[Rn]):null}for(const t of this[mn]){const i=t[vs],a=t[es]();e[mn].push(a);a[Gn]=e;null===e[i]?e[i]=a:e[i][mn].push(a)}return e}[us](e=null){return e?this[mn].filter((t=>t[vs]===e)):this[mn]}[Cs](e){return this[e]}[hs](e,t,i=!0){return Array.from(this[ls](e,t,i))}*[ls](e,t,i=!0){if("parent"!==e){for(const i of this[mn]){i[vs]===e&&(yield i);i.name===e&&(yield i);(t||i[Ls]())&&(yield*i[ls](e,t,!1))}i&&this[pn].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[Gn]}}class XFAObjectArray{constructor(e=1/0){this[Rn]=e;this[mn]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){if(this[mn].length<=this[Rn]){this[mn].push(e);return!0}warn(`XFA - node "${e[vs]}" accepts no more than ${this[Rn]} children`);return!1}isEmpty(){return 0===this[mn].length}dump(){return 1===this[mn].length?this[mn][0][rs]():this[mn].map((e=>e[rs]()))}[es](){const e=new XFAObjectArray(this[Rn]);e[mn]=this[mn].map((e=>e[es]()));return e}get children(){return this[mn]}clear(){this[mn].length=0}}class XFAAttribute{constructor(e,t,i){this[Gn]=e;this[vs]=t;this[is]=i;this[ts]=!1;this[gn]="attribute"+Ln++}[ms](){return this[Gn]}[Ns](){return!0}[Bs](){return this[is].trim()}[en](e){e=e.value||"";this[is]=e.toString()}[an](){return this[is]}[Gs](e){return this[Gn]===e||this[Gn][Gs](e)}}class XmlObject extends XFAObject{constructor(e,t,i={}){super(e,t);this[is]="";this[wn]=null;if("#text"!==t){const e=new Map;this[fn]=e;for(const[t,a]of Object.entries(i))e.set(t,new XFAAttribute(this,t,a));if(i.hasOwnProperty(Ts)){const e=i[Ts].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[wn]=!1:"dataValue"===e&&(this[wn]=!0))}}this[ts]=!1}[nn](e){const t=this[vs];if("#text"===t){e.push(encodeToXmlString(this[is]));return}const i=utf8StringToString(t),a=this[Ys]===Hn?"xfa:":"";e.push(`<${a}${i}`);for(const[t,i]of this[fn].entries()){const a=utf8StringToString(t);e.push(` ${a}="${encodeToXmlString(i[is])}"`)}null!==this[wn]&&(this[wn]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[is]||0!==this[mn].length){e.push(">");if(this[is])"string"==typeof this[is]?e.push(encodeToXmlString(this[is])):this[is][nn](e);else for(const t of this[mn])t[nn](e);e.push(`</${a}${i}>`)}else e.push("/>")}[Ks](e){if(this[is]){const e=new XmlObject(this[Ys],"#text");this[Vr](e);e[is]=this[is];this[is]=""}this[Vr](e);return!0}[Os](e){this[is]+=e}[ns](){if(this[is]&&this[mn].length>0){const e=new XmlObject(this[Ys],"#text");this[Vr](e);e[is]=this[is];delete this[is]}}[sn](){return"#text"===this[vs]?HTMLResult.success({name:"#text",value:this[is]}):HTMLResult.EMPTY}[us](e=null){return e?this[mn].filter((t=>t[vs]===e)):this[mn]}[Is](){return this[fn]}[Cs](e){const t=this[fn].get(e);return void 0!==t?t:this[us](e)}*[ls](e,t){const i=this[fn].get(e);i&&(yield i);for(const i of this[mn]){i[vs]===e&&(yield i);t&&(yield*i[ls](e,t))}}*[gs](e,t){const i=this[fn].get(e);!i||t&&i[ts]||(yield i);for(const i of this[mn])yield*i[gs](e,t)}*[Es](e,t,i){for(const a of this[mn]){a[vs]!==e||i&&a[ts]||(yield a);t&&(yield*a[Es](e,t,i))}}[Ns](){return null===this[wn]?0===this[mn].length||this[mn][0][Ys]===cn.xhtml.id:this[wn]}[Bs](){return null===this[wn]?0===this[mn].length?this[is].trim():this[mn][0][Ys]===cn.xhtml.id?this[mn][0][an]().trim():null:this[is].trim()}[en](e){e=e.value||"";this[is]=e.toString()}[rs](e=!1){const t=Object.create(null);e&&(t.$ns=this[Ys]);this[is]&&(t.$content=this[is]);t.$name=this[vs];t.children=[];for(const i of this[mn])t.children.push(i[rs](e));t.attributes=Object.create(null);for(const[e,i]of this[fn])t.attributes[e]=i[is];return t}}class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[is]=""}[Os](e){this[is]+=e}[ns](){}}class OptionObject extends ContentObject{constructor(e,t,i){super(e,t);this[Nn]=i}[ns](){this[is]=getKeyword({data:this[is],defaultValue:this[Nn][0],validate:e=>this[Nn].includes(e)})}[zr](e){super[zr](e);delete this[Nn]}}class StringObject extends ContentObject{[ns](){this[is]=this[is].trim()}}class IntegerObject extends ContentObject{constructor(e,t,i,a){super(e,t);this[bn]=i;this[Mn]=a}[ns](){this[is]=getInteger({data:this[is],defaultValue:this[bn],validate:this[Mn]})}[zr](e){super[zr](e);delete this[bn];delete this[Mn]}}class Option01 extends IntegerObject{constructor(e,t){super(e,t,0,(e=>1===e))}}class Option10 extends IntegerObject{constructor(e,t){super(e,t,1,(e=>0===e))}}function measureToString(e){return"string"==typeof e?"0px":Number.isInteger(e)?`${e}px`:`${e.toFixed(2)}px`}const Jn={anchorType(e,t){const i=e[ps]();if(i&&(!i.layout||"position"===i.layout)){"transform"in t||(t.transform="");switch(e.anchorType){case"bottomCenter":t.transform+="translate(-50%, -100%)";break;case"bottomLeft":t.transform+="translate(0,-100%)";break;case"bottomRight":t.transform+="translate(-100%,-100%)";break;case"middleCenter":t.transform+="translate(-50%,-50%)";break;case"middleLeft":t.transform+="translate(0,-50%)";break;case"middleRight":t.transform+="translate(-100%,-50%)";break;case"topCenter":t.transform+="translate(-50%,0)";break;case"topRight":t.transform+="translate(-100%,0)"}}},dimensions(e,t){const i=e[ps]();let a=e.w;const r=e.h;if(i.layout?.includes("row")){const t=i[ss],r=e.colSpan;let s;if(-1===r){s=t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0);t.currentColumn=0}else{s=t.columnWidths.slice(t.currentColumn,t.currentColumn+r).reduce(((e,t)=>e+t),0);t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(s)||(a=e.w=s)}t.width=""!==a?measureToString(a):"auto";t.height=""!==r?measureToString(r):"auto"},position(e,t){const i=e[ps]();if(!i?.layout||"position"===i.layout){t.position="absolute";t.left=measureToString(e.x);t.top=measureToString(e.y)}},rotate(e,t){if(e.rotate){"transform"in t||(t.transform="");t.transform+=`rotate(-${e.rotate}deg)`;t.transformOrigin="top left"}},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[vs])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[on]().margin)}};function setMinMaxDimensions(e,t){if("position"===e[ps]().layout){e.minW>0&&(t.minWidth=measureToString(e.minW));e.maxW>0&&(t.maxWidth=measureToString(e.maxW));e.minH>0&&(t.minHeight=measureToString(e.minH));e.maxH>0&&(t.maxHeight=measureToString(e.maxH))}}function layoutText(e,t,i,a,r,s){const n=new TextMeasure(t,i,a,r);"string"==typeof e?n.addString(e):e[Ws](n);return n.compute(s)}function layoutNode(e,t){let i=null,a=null,r=!1;if((!e.w||!e.h)&&e.value){let s=0,n=0;if(e.margin){s=e.margin.leftInset+e.margin.rightInset;n=e.margin.topInset+e.margin.bottomInset}let o=null,g=null;if(e.para){g=Object.create(null);o=""===e.para.lineHeight?null:e.para.lineHeight;g.top=""===e.para.spaceAbove?0:e.para.spaceAbove;g.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;g.left=""===e.para.marginLeft?0:e.para.marginLeft;g.right=""===e.para.marginRight?0:e.para.marginRight}let c=e.font;if(!c){const t=e[ys]();let i=e[ms]();for(;i&&i!==t;){if(i.font){c=i.font;break}i=i[ms]()}}const C=(e.w||t.width)-s,h=e[ws].fontFinder;if(e.value.exData&&e.value.exData[is]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[is],c,g,o,h,C);a=t.width;i=t.height;r=t.isBroken}else{const t=e.value[an]();if(t){const e=layoutText(t,c,g,o,h,C);a=e.width;i=e.height;r=e.isBroken}}null===a||e.w||(a+=s);null===i||e.h||(i+=n)}return{w:a,h:i,isBroken:r}}function computeBbox(e,t,i){let a;if(""!==e.w&&""!==e.h)a=[e.x,e.y,e.w,e.h];else{if(!i)return null;let r=e.w;if(""===r){if(0===e.maxW){const t=e[ps]();r="position"===t.layout&&""!==t.w?0:e.minW}else r=Math.min(e.maxW,i.width);t.attributes.style.width=measureToString(r)}let s=e.h;if(""===s){if(0===e.maxH){const t=e[ps]();s="position"===t.layout&&""!==t.h?0:e.minH}else s=Math.min(e.maxH,i.height);t.attributes.style.height=measureToString(s)}a=[e.x,e.y,r,s]}return a}function fixDimensions(e){const t=e[ps]();if(t.layout?.includes("row")){const i=t[ss],a=e.colSpan;let r;r=-1===a?i.columnWidths.slice(i.currentColumn).reduce(((e,t)=>e+t),0):i.columnWidths.slice(i.currentColumn,i.currentColumn+a).reduce(((e,t)=>e+t),0);isNaN(r)||(e.w=r)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))}function layoutClass(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}}function toStyle(e,...t){const i=Object.create(null);for(const a of t){const t=e[a];if(null!==t)if(Jn.hasOwnProperty(a))Jn[a](e,i);else if(t instanceof XFAObject){const e=t[on]();e?Object.assign(i,e):warn(`(DEBUG) - XFA - style for ${a} not implemented yet`)}}return i}function createWrapper(e,t){const{attributes:i}=t,{style:a}=i,r={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};i.class.push("xfaWrapped");if(e.border){const{widths:i,insets:s}=e.border[ss];let n,o,g=s[0],c=s[3];const C=s[0]+s[2],h=s[1]+s[3];switch(e.border.hand){case"even":g-=i[0]/2;c-=i[3]/2;n=`calc(100% + ${(i[1]+i[3])/2-h}px)`;o=`calc(100% + ${(i[0]+i[2])/2-C}px)`;break;case"left":g-=i[0];c-=i[3];n=`calc(100% + ${i[1]+i[3]-h}px)`;o=`calc(100% + ${i[0]+i[2]-C}px)`;break;case"right":n=h?`calc(100% - ${h}px)`:"100%";o=C?`calc(100% - ${C}px)`:"100%"}const l=["xfaBorder"];isPrintOnly(e.border)&&l.push("xfaPrintOnly");const Q={name:"div",attributes:{class:l,style:{top:`${g}px`,left:`${c}px`,width:n,height:o}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==a[e]){Q.attributes.style[e]=a[e];delete a[e]}r.children.push(Q,t)}else r.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==a[e]){r.attributes.style[e]=a[e];delete a[e]}r.attributes.style.position="absolute"===a.position?"absolute":"relative";delete a.position;if(a.alignSelf){r.attributes.style.alignSelf=a.alignSelf;delete a.alignSelf}return r}function fixTextIndent(e){const t=getMeasurement(e.textIndent,"0px");if(t>=0)return;const i="padding"+("left"===("right"===e.textAlign?"right":"left")?"Left":"Right"),a=getMeasurement(e[i],"0px");e[i]=a-t+"px"}function setAccess(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}}function isPrintOnly(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function getCurrentPara(e){const t=e[ys]()[ss].paraStack;return t.length?t.at(-1):null}function setPara(e,t,i){if(i.attributes.class?.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}const a=getCurrentPara(e);if(a){const e=i.attributes.style;e.display="flex";e.flexDirection="column";switch(a.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=a[on]();for(const[i,a]of Object.entries(t))i in e||(e[i]=a)}}}function setFontFamily(e,t,i,a){if(!i){delete a.fontFamily;return}const r=stripQuotes(e.typeface);a.fontFamily=`"${r}"`;const s=i.find(r);if(s){const{fontFamily:i}=s.regular.cssFontInfo;i!==r&&(a.fontFamily=`"${i}"`);const n=getCurrentPara(t);if(n&&""!==n.lineHeight)return;if(a.lineHeight)return;const o=selectFont(e,s);o&&(a.lineHeight=Math.max(1.2,o.lineHeight))}}function fixURL(e){const t=createValidAbsoluteUrl(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null}function createLine(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}function flushHTML(e){if(!e[ss])return null;const t={name:"div",attributes:e[ss].attributes,children:e[ss].children};if(e[ss].failingNode){const i=e[ss].failingNode[os]();i&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[i])):t.children.push(i))}return 0===t.children.length?null:t}function addHTML(e,t,i){const a=e[ss],r=a.availableSpace,[s,n,o,g]=i;switch(e.layout){case"position":a.width=Math.max(a.width,s+o);a.height=Math.max(a.height,n+g);a.children.push(t);break;case"lr-tb":case"rl-tb":if(!a.line||1===a.attempt){a.line=createLine(e,[]);a.children.push(a.line);a.numberInLine=0}a.numberInLine+=1;a.line.children.push(t);if(0===a.attempt){a.currentWidth+=o;a.height=Math.max(a.height,a.prevHeight+g)}else{a.currentWidth=o;a.prevHeight=a.height;a.height+=g;a.attempt=0}a.width=Math.max(a.width,a.currentWidth);break;case"rl-row":case"row":{a.children.push(t);a.width+=o;a.height=Math.max(a.height,g);const e=measureToString(a.height);for(const t of a.children)t.attributes.style.height=e;break}case"table":case"tb":a.width=Math.min(r.width,Math.max(a.width,o));a.height+=g;a.children.push(t)}}function getAvailableSpace(e){const t=e[ss].availableSpace,i=e.margin?e.margin.topInset+e.margin.bottomInset:0,a=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[ss].attempt?{width:t.width-a-e[ss].currentWidth,height:t.height-i-e[ss].prevHeight}:{width:t.width-a,height:t.height-i-e[ss].height};case"rl-row":case"row":return{width:e[ss].columnWidths.slice(e[ss].currentColumn).reduce(((e,t)=>e+t)),height:t.height-a};case"table":case"tb":return{width:t.width-a,height:t.height-i-e[ss].height};default:return t}}function checkDimensions(e,t){if(null===e[ys]()[ss].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const i=e[ps](),a=i[ss]?.attempt||0,[,r,s,n]=function getTransformedBBox(e){let t,i,a=""===e.w?NaN:e.w,r=""===e.h?NaN:e.h,[s,n]=[0,0];switch(e.anchorType||""){case"bottomCenter":[s,n]=[a/2,r];break;case"bottomLeft":[s,n]=[0,r];break;case"bottomRight":[s,n]=[a,r];break;case"middleCenter":[s,n]=[a/2,r/2];break;case"middleLeft":[s,n]=[0,r/2];break;case"middleRight":[s,n]=[a,r/2];break;case"topCenter":[s,n]=[a/2,0];break;case"topRight":[s,n]=[a,0]}switch(e.rotate||0){case 0:[t,i]=[-s,-n];break;case 90:[t,i]=[-n,s];[a,r]=[r,-a];break;case 180:[t,i]=[s,n];[a,r]=[-a,-r];break;case 270:[t,i]=[n,-s];[a,r]=[-r,a]}return[e.x+t+Math.min(0,a),e.y+i+Math.min(0,r),Math.abs(a),Math.abs(r)]}(e);switch(i.layout){case"lr-tb":case"rl-tb":return 0===a?e[ys]()[ss].noLayoutFailure?""!==e.w?Math.round(s-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(n-t.height)>2)&&(""!==e.w?Math.round(s-t.width)<=2||0===i[ss].numberInLine&&t.height>2:t.width>2):!!e[ys]()[ss].noLayoutFailure||!(""!==e.h&&Math.round(n-t.height)>2)&&((""===e.w||Math.round(s-t.width)<=2||!i[Ms]())&&t.height>2);case"table":case"tb":return!!e[ys]()[ss].noLayoutFailure||(""===e.h||e[Us]()?(""===e.w||Math.round(s-t.width)<=2||!i[Ms]())&&t.height>2:Math.round(n-t.height)<=2);case"position":if(e[ys]()[ss].noLayoutFailure)return!0;if(""===e.h||Math.round(n+r-t.height)<=2)return!0;return n+r>e[ys]()[ss].currentContentArea.h;case"rl-row":case"row":return!!e[ys]()[ss].noLayoutFailure||(""===e.h||Math.round(n-t.height)<=2);default:return!0}}const Yn=cn.template.id,vn="http://www.w3.org/2000/svg",Tn=/^H(\d+)$/,Kn=new Set(["image/gif","image/jpeg","image/jpg","image/pjpeg","image/png","image/apng","image/x-png","image/bmp","image/x-ms-bmp","image/tiff","image/tif","application/octet-stream"]),qn=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function getBorderDims(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[Qs]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function hasMargin(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function _setValue(e,t){if(!e.value){const t=new Value({});e[Vr](t);e.value=t}e.value[en](t)}function*getContainedChildren(e){for(const t of e[us]())t instanceof SubformSet?yield*t[ds]():yield t}function isRequired(e){return"error"===e.validate?.nullTest}function setTabIndex(e){for(;e;){if(!e.traversal){e[tn]=e[ms]()[tn];return}if(e[tn])return;let t=null;for(const i of e.traversal[us]())if("next"===i.operation){t=i;break}if(!t||!t.ref){e[tn]=e[ms]()[tn];return}const i=e[ys]();e[tn]=++i[tn];const a=i[zs](t.ref,e);if(!a)return;e=a[0]}}function applyAssist(e,t){const i=e.assist;if(i){const e=i[sn]();e&&(t.title=e);const a=i.role.match(Tn);if(a){const e="heading",i=a[1];t.role=e;t["aria-level"]=i}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{const i=e[ms]();"row"===i.layout&&(t.role="TH"===i.assist?.role?"columnheader":"cell")}}function ariaLabel(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[is]?t.speak[is]:t.toolTip?t.toolTip[is]:null}function valueToHtml(e){return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function setFirstUnsplittable(e){const t=e[ys]();if(null===t[ss].firstUnsplittable){t[ss].firstUnsplittable=e;t[ss].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[ys]();t[ss].firstUnsplittable===e&&(t[ss].noLayoutFailure=!1)}function handleBreak(e){if(e[ss])return!1;e[ss]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[ys]();let i=null;if(e.target){i=t[zs](e.target,e[ms]());if(!i)return!1;i=i[0]}const{currentPageArea:a,currentContentArea:r}=t[ss];if("pageArea"===e.targetType){i instanceof PageArea||(i=null);if(e.startNew){e[ss].target=i||a;return!0}if(i&&i!==a){e[ss].target=i;return!0}return!1}i instanceof ContentArea||(i=null);const s=i&&i[ms]();let n,o=s;if(e.startNew)if(i){const e=s.contentArea.children,t=e.indexOf(r),a=e.indexOf(i);-1!==t&&t<a&&(o=null);n=a-1}else n=a.contentArea.children.indexOf(r);else{if(!i||i===r)return!1;n=s.contentArea.children.indexOf(i)-1;o=s===a?null:s}e[ss].target=o;e[ss].index=n;return!0}function handleOverflow(e,t,i){const a=e[ys](),r=a[ss].noLayoutFailure,s=t[ps];t[ps]=()=>e;a[ss].noLayoutFailure=!0;const n=t[sn](i);e[Zr](n.html,n.bbox);a[ss].noLayoutFailure=r;t[ps]=s}class AppearanceFilter extends StringObject{constructor(e){super(Yn,"appearanceFilter");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Arc extends XFAObject{constructor(e){super(Yn,"arc",!0);this.circular=getInteger({data:e.circular,defaultValue:0,validate:e=>1===e});this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.startAngle=getFloat({data:e.startAngle,defaultValue:0,validate:e=>!0});this.sweepAngle=getFloat({data:e.sweepAngle,defaultValue:360,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null;this.fill=null}[sn](){const e=this.edge||new Edge({}),t=e[on](),i=Object.create(null);"visible"===this.fill?.presence?Object.assign(i,this.fill[on]()):i.fill="transparent";i.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);i.stroke=t.color;let a;const r={xmlns:vn,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)a={name:"ellipse",attributes:{xmlns:vn,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:i}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,s=this.sweepAngle>180?1:0,[n,o,g,c]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];a={name:"path",attributes:{xmlns:vn,d:`M ${n} ${o} A 50 50 0 ${s} 0 ${g} ${c}`,vectorEffect:"non-scaling-stroke",style:i}};Object.assign(r,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const s={name:"svg",children:[a],attributes:r};if(hasMargin(this[ms]()[ms]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[s]});s.attributes.style.position="absolute";return HTMLResult.success(s)}}class Area extends XFAObject{constructor(e){super(Yn,"area",!0);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.id=e.id||"";this.name=e.name||"";this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.desc=null;this.extras=null;this.area=new XFAObjectArray;this.draw=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}*[ds](){yield*getContainedChildren(this)}[Ls](){return!0}[Rs](){return!0}[Zr](e,t){const[i,a,r,s]=t;this[ss].width=Math.max(this[ss].width,i+r);this[ss].height=Math.max(this[ss].height,a+s);this[ss].children.push(e)}[cs](){return this[ss].availableSpace}[sn](e){const t=toStyle(this,"position"),i={style:t,id:this[gn],class:["xfaArea"]};isPrintOnly(this)&&i.class.push("xfaPrintOnly");this.name&&(i.xfaName=this.name);const a=[];this[ss]={children:a,width:0,height:0,availableSpace:e};const r=this[_r]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!r.success){if(r.isBreak())return r;delete this[ss];return HTMLResult.FAILURE}t.width=measureToString(this[ss].width);t.height=measureToString(this[ss].height);const s={name:"div",attributes:i,children:a},n=[this.x,this.y,this[ss].width,this[ss].height];delete this[ss];return HTMLResult.success(s,n)}}class Assist extends XFAObject{constructor(e){super(Yn,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[sn](){return this.toolTip?.[is]||null}}class Barcode extends XFAObject{constructor(e){super(Yn,"barcode",!0);this.charEncoding=getKeyword({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.checksum=getStringOption(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]);this.dataColumnCount=getInteger({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0});this.dataLength=getInteger({data:e.dataLength,defaultValue:-1,validate:e=>e>=0});this.dataPrep=getStringOption(e.dataPrep,["none","flateCompress"]);this.dataRowCount=getInteger({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0});this.endChar=e.endChar||"";this.errorCorrectionLevel=getInteger({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8});this.id=e.id||"";this.moduleHeight=getMeasurement(e.moduleHeight,"5mm");this.moduleWidth=getMeasurement(e.moduleWidth,"0.25mm");this.printCheckDigit=getInteger({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e});this.rowColumnRatio=getRatio(e.rowColumnRatio);this.startChar=e.startChar||"";this.textLocation=getStringOption(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]);this.truncate=getInteger({data:e.truncate,defaultValue:0,validate:e=>1===e});this.type=getStringOption(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]);this.upsMode=getStringOption(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]);this.use=e.use||"";this.usehref=e.usehref||"";this.wideNarrowRatio=getRatio(e.wideNarrowRatio);this.encrypt=null;this.extras=null}}class Bind extends XFAObject{constructor(e){super(Yn,"bind",!0);this.match=getStringOption(e.match,["once","dataRef","global","none"]);this.ref=e.ref||"";this.picture=null}}class BindItems extends XFAObject{constructor(e){super(Yn,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}class Bookend extends XFAObject{constructor(e){super(Yn,"bookend");this.id=e.id||"";this.leader=e.leader||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}}class BooleanElement extends Option01{constructor(e){super(Yn,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[sn](e){return valueToHtml(1===this[is]?"1":"0")}}class Border extends XFAObject{constructor(e){super(Yn,"border",!0);this.break=getStringOption(e.break,["close","open"]);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new XFAObjectArray(4);this.edge=new XFAObjectArray(4);this.extras=null;this.fill=null;this.margin=null}[Qs](){if(!this[ss]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new Edge({});for(let i=e.length;i<4;i++)e.push(t)}const t=e.map((e=>e.thickness)),i=[0,0,0,0];if(this.margin){i[0]=this.margin.topInset;i[1]=this.margin.rightInset;i[2]=this.margin.bottomInset;i[3]=this.margin.leftInset}this[ss]={widths:t,insets:i,edges:e}}return this[ss]}[on](){const{edges:e}=this[Qs](),t=e.map((e=>{const t=e[on]();t.color||="#000000";return t})),i=Object.create(null);this.margin&&Object.assign(i,this.margin[on]());"visible"===this.fill?.presence&&Object.assign(i,this.fill[on]());if(this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[on]()));if(2===e.length||3===e.length){const t=e.at(-1);for(let i=e.length;i<4;i++)e.push(t)}i.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":i.borderStyle="";break;case"inactive":i.borderStyle="none";break;default:i.borderStyle=t.map((e=>e.style)).join(" ")}i.borderWidth=t.map((e=>e.width)).join(" ");i.borderColor=t.map((e=>e.color)).join(" ");return i}}class Break extends XFAObject{constructor(e){super(Yn,"break",!0);this.after=getStringOption(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.afterTarget=e.afterTarget||"";this.before=getStringOption(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.beforeTarget=e.beforeTarget||"";this.bookendLeader=e.bookendLeader||"";this.bookendTrailer=e.bookendTrailer||"";this.id=e.id||"";this.overflowLeader=e.overflowLeader||"";this.overflowTarget=e.overflowTarget||"";this.overflowTrailer=e.overflowTrailer||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class BreakAfter extends XFAObject{constructor(e){super(Yn,"breakAfter",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=getStringOption(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}}class BreakBefore extends XFAObject{constructor(e){super(Yn,"breakBefore",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=getStringOption(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}[sn](e){this[ss]={};return HTMLResult.FAILURE}}class Button extends XFAObject{constructor(e){super(Yn,"button",!0);this.highlight=getStringOption(e.highlight,["inverted","none","outline","push"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[sn](e){const t=this[ms]()[ms](),i={name:"button",attributes:{id:this[gn],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=recoverJsURL(e.script[is]);if(!t)continue;const a=fixURL(t.url);a&&i.children.push({name:"a",attributes:{id:"link"+this[gn],href:a,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return HTMLResult.success(i)}}class Calculate extends XFAObject{constructor(e){super(Yn,"calculate",!0);this.id=e.id||"";this.override=getStringOption(e.override,["disabled","error","ignore","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.script=null}}class Caption extends XFAObject{constructor(e){super(Yn,"caption",!0);this.id=e.id||"";this.placement=getStringOption(e.placement,["left","bottom","inline","right","top"]);this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.reserve=Math.ceil(getMeasurement(e.reserve));this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.font=null;this.margin=null;this.para=null;this.value=null}[en](e){_setValue(this,e)}[Qs](e){if(!this[ss]){let{width:t,height:i}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":i=this.reserve<=0?i:this.reserve}this[ss]=layoutNode(this,{width:t,height:i})}return this[ss]}[sn](e){if(!this.value)return HTMLResult.EMPTY;this[Xs]();const t=this.value[sn](e).html;if(!t){this[js]();return HTMLResult.EMPTY}const i=this.reserve;if(this.reserve<=0){const{w:t,h:i}=this[Qs](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=i}}const a=[];"string"==typeof t?a.push({name:"#text",value:t}):a.push(t);const r=toStyle(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(r.width=measureToString(this.reserve));break;case"top":case"bottom":this.reserve>0&&(r.height=measureToString(this.reserve))}setPara(this,null,t);this[js]();this.reserve=i;return HTMLResult.success({name:"div",attributes:{style:r,class:["xfaCaption"]},children:a})}}class Certificate extends StringObject{constructor(e){super(Yn,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends XFAObject{constructor(e){super(Yn,"certificates",!0);this.credentialServerPolicy=getStringOption(e.credentialServerPolicy,["optional","required"]);this.id=e.id||"";this.url=e.url||"";this.urlPolicy=e.urlPolicy||"";this.use=e.use||"";this.usehref=e.usehref||"";this.encryption=null;this.issuers=null;this.keyUsage=null;this.oids=null;this.signing=null;this.subjectDNs=null}}class CheckButton extends XFAObject{constructor(e){super(Yn,"checkButton",!0);this.id=e.id||"";this.mark=getStringOption(e.mark,["default","check","circle","cross","diamond","square","star"]);this.shape=getStringOption(e.shape,["square","round"]);this.size=getMeasurement(e.size,"10pt");this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[sn](e){const t=toStyle("margin"),i=measureToString(this.size);t.width=t.height=i;let a,r,s;const n=this[ms]()[ms](),o=n.items.children.length&&n.items.children[0][sn]().html||[],g={on:(void 0!==o[0]?o[0]:"on").toString(),off:(void 0!==o[1]?o[1]:"off").toString()},c=(n.value?.[an]()||"off")===g.on||void 0,C=n[ps](),h=n[gn];let l;if(C instanceof ExclGroup){s=C[gn];a="radio";r="xfaRadio";l=C[as]?.[gn]||C[gn]}else{a="checkbox";r="xfaCheckbox";l=n[as]?.[gn]||n[gn]}const Q={name:"input",attributes:{class:[r],style:t,fieldId:h,dataId:l,type:a,checked:c,xfaOn:g.on,xfaOff:g.off,"aria-label":ariaLabel(n),"aria-required":!1}};s&&(Q.attributes.name=s);if(isRequired(n)){Q.attributes["aria-required"]=!0;Q.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[Q]})}}class ChoiceList extends XFAObject{constructor(e){super(Yn,"choiceList",!0);this.commitOn=getStringOption(e.commitOn,["select","exit"]);this.id=e.id||"";this.open=getStringOption(e.open,["userControl","always","multiSelect","onEntry"]);this.textEntry=getInteger({data:e.textEntry,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[sn](e){const t=toStyle(this,"border","margin"),i=this[ms]()[ms](),a={fontSize:`calc(${i.font?.size||10}px * var(--scale-factor))`},r=[];if(i.items.children.length>0){const e=i.items;let t=0,s=0;if(2===e.children.length){t=e.children[0].save;s=1-t}const n=e.children[t][sn]().html,o=e.children[s][sn]().html;let g=!1;const c=i.value?.[an]()||"";for(let e=0,t=n.length;e<t;e++){const t={name:"option",attributes:{value:o[e]||n[e],style:a},value:n[e]};o[e]===c&&(t.attributes.selected=g=!0);r.push(t)}g||r.splice(0,0,{name:"option",attributes:{hidden:!0,selected:!0},value:" "})}const s={class:["xfaSelect"],fieldId:i[gn],dataId:i[as]?.[gn]||i[gn],style:t,"aria-label":ariaLabel(i),"aria-required":!1};if(isRequired(i)){s["aria-required"]=!0;s.required=!0}"multiSelect"===this.open&&(s.multiple=!0);return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[{name:"select",children:r,attributes:s}]})}}class Color extends XFAObject{constructor(e){super(Yn,"color",!0);this.cSpace=getStringOption(e.cSpace,["SRGB"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.value=e.value?function getColor(e,t=[0,0,0]){let[i,a,r]=t;if(!e)return{r:i,g:a,b:r};const s=e.trim().split(/\s*,\s*/).map((e=>Math.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));if(s.length<3)return{r:i,g:a,b:r};[i,a,r]=s;return{r:i,g:a,b:r}}(e.value):"";this.extras=null}[bs](){return!1}[on](){return this.value?Util.makeHexColor(this.value.r,this.value.g,this.value.b):null}}class Comb extends XFAObject{constructor(e){super(Yn,"comb");this.id=e.id||"";this.numberOfCells=getInteger({data:e.numberOfCells,defaultValue:0,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||""}}class Connect extends XFAObject{constructor(e){super(Yn,"connect",!0);this.connection=e.connection||"";this.id=e.id||"";this.ref=e.ref||"";this.usage=getStringOption(e.usage,["exportAndImport","exportOnly","importOnly"]);this.use=e.use||"";this.usehref=e.usehref||"";this.picture=null}}class ContentArea extends XFAObject{constructor(e){super(Yn,"contentArea",!0);this.h=getMeasurement(e.h);this.id=e.id||"";this.name=e.name||"";this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=getMeasurement(e.w);this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.desc=null;this.extras=null}[sn](e){const t={left:measureToString(this.x),top:measureToString(this.y),width:measureToString(this.w),height:measureToString(this.h)},i=["xfaContentarea"];isPrintOnly(this)&&i.push("xfaPrintOnly");return HTMLResult.success({name:"div",children:[],attributes:{style:t,class:i,id:this[gn]}})}}class Corner extends XFAObject{constructor(e){super(Yn,"corner",!0);this.id=e.id||"";this.inverted=getInteger({data:e.inverted,defaultValue:0,validate:e=>1===e});this.join=getStringOption(e.join,["square","round"]);this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.radius=getMeasurement(e.radius);this.stroke=getStringOption(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=getMeasurement(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[on](){const e=toStyle(this,"visibility");e.radius=measureToString("square"===this.join?0:this.radius);return e}}class DateElement extends ContentObject{constructor(e){super(Yn,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[ns](){const e=this[is].trim();this[is]=e?new Date(e):null}[sn](e){return valueToHtml(this[is]?this[is].toString():"")}}class DateTime extends ContentObject{constructor(e){super(Yn,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[ns](){const e=this[is].trim();this[is]=e?new Date(e):null}[sn](e){return valueToHtml(this[is]?this[is].toString():"")}}class DateTimeEdit extends XFAObject{constructor(e){super(Yn,"dateTimeEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.picker=getStringOption(e.picker,["host","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[sn](e){const t=toStyle(this,"border","font","margin"),i=this[ms]()[ms](),a={name:"input",attributes:{type:"text",fieldId:i[gn],dataId:i[as]?.[gn]||i[gn],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(i),"aria-required":!1}};if(isRequired(i)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Decimal extends ContentObject{constructor(e){super(Yn,"decimal");this.fracDigits=getInteger({data:e.fracDigits,defaultValue:2,validate:e=>!0});this.id=e.id||"";this.leadDigits=getInteger({data:e.leadDigits,defaultValue:-1,validate:e=>!0});this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[ns](){const e=parseFloat(this[is].trim());this[is]=isNaN(e)?null:e}[sn](e){return valueToHtml(null!==this[is]?this[is].toString():"")}}class DefaultUi extends XFAObject{constructor(e){super(Yn,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends XFAObject{constructor(e){super(Yn,"desc",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class DigestMethod extends OptionObject{constructor(e){super(Yn,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends XFAObject{constructor(e){super(Yn,"digestMethods",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.digestMethod=new XFAObjectArray}}class Draw extends XFAObject{constructor(e){super(Yn,"draw",!0);this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.rotate=getInteger({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.border=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.value=null;this.setProperty=new XFAObjectArray}[en](e){_setValue(this,e)}[sn](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;fixDimensions(this);this[Xs]();const t=this.w,i=this.h,{w:a,h:r,isBroken:s}=layoutNode(this,e);if(a&&""===this.w){if(s&&this[ps]()[Ms]()){this[js]();return HTMLResult.FAILURE}this.w=a}r&&""===this.h&&(this.h=r);setFirstUnsplittable(this);if(!checkDimensions(this,e)){this.w=t;this.h=i;this[js]();return HTMLResult.FAILURE}unsetFirstUnsplittable(this);const n=toStyle(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");setMinMaxDimensions(this,n);if(n.margin){n.padding=n.margin;delete n.margin}const o=["xfaDraw"];this.font&&o.push("xfaFont");isPrintOnly(this)&&o.push("xfaPrintOnly");const g={style:n,id:this[gn],class:o};this.name&&(g.xfaName=this.name);const c={name:"div",attributes:g,children:[]};applyAssist(this,g);const C=computeBbox(this,c,e),h=this.value?this.value[sn](e).html:null;if(null===h){this.w=t;this.h=i;this[js]();return HTMLResult.success(createWrapper(this,c),C)}c.children.push(h);setPara(this,n,h);this.w=t;this.h=i;this[js]();return HTMLResult.success(createWrapper(this,c),C)}}class Edge extends XFAObject{constructor(e){super(Yn,"edge",!0);this.cap=getStringOption(e.cap,["square","butt","round"]);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.stroke=getStringOption(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=getMeasurement(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[on](){const e=toStyle(this,"visibility");Object.assign(e,{linecap:this.cap,width:measureToString(this.thickness),color:this.color?this.color[on]():"#000000",style:""});if("visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class Encoding extends OptionObject{constructor(e){super(Yn,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Encodings extends XFAObject{constructor(e){super(Yn,"encodings",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encoding=new XFAObjectArray}}class Encrypt extends XFAObject{constructor(e){super(Yn,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends XFAObject{constructor(e){super(Yn,"encryptData",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["encrypt","decrypt"]);this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Encryption extends XFAObject{constructor(e){super(Yn,"encryption",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class EncryptionMethod extends OptionObject{constructor(e){super(Yn,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EncryptionMethods extends XFAObject{constructor(e){super(Yn,"encryptionMethods",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encryptionMethod=new XFAObjectArray}}class Event extends XFAObject{constructor(e){super(Yn,"event",!0);this.activity=getStringOption(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]);this.id=e.id||"";this.listen=getStringOption(e.listen,["refOnly","refAndDescendents"]);this.name=e.name||"";this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.encryptData=null;this.execute=null;this.script=null;this.signData=null;this.submit=null}}class ExData extends ContentObject{constructor(e){super(Yn,"exData");this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.maxLength=getInteger({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1});this.name=e.name||"";this.rid=e.rid||"";this.transferEncoding=getStringOption(e.transferEncoding,["none","base64","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[ks](){return"text/html"===this.contentType}[Ks](e){if("text/html"===this.contentType&&e[Ys]===cn.xhtml.id){this[is]=e;return!0}if("text/xml"===this.contentType){this[is]=e;return!0}return!1}[sn](e){return"text/html"===this.contentType&&this[is]?this[is][sn](e):HTMLResult.EMPTY}}class ExObject extends XFAObject{constructor(e){super(Yn,"exObject",!0);this.archive=e.archive||"";this.classId=e.classId||"";this.codeBase=e.codeBase||"";this.codeType=e.codeType||"";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.exObject=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class ExclGroup extends XFAObject{constructor(e){super(Yn,"exclGroup",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=getStringOption(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.margin=null;this.para=null;this.traversal=null;this.validate=null;this.connect=new XFAObjectArray;this.event=new XFAObjectArray;this.field=new XFAObjectArray;this.setProperty=new XFAObjectArray}[Rs](){return!0}[bs](){return!0}[en](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[Vr](e);t.value=e}t.value[en](e)}}[Ms](){return this.layout.endsWith("-tb")&&0===this[ss].attempt&&this[ss].numberInLine>0||this[ms]()[Ms]()}[Us](){const e=this[ps]();if(!e[Us]())return!1;if(void 0!==this[ss]._isSplittable)return this[ss]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[ss]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[ss].numberInLine)return!1;this[ss]._isSplittable=!0;return!0}[os](){return flushHTML(this)}[Zr](e,t){addHTML(this,e,t)}[cs](){return getAvailableSpace(this)}[sn](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;fixDimensions(this);const t=[],i={id:this[gn],class:[]};setAccess(this,i.class);this[ss]||(this[ss]=Object.create(null));Object.assign(this[ss],{children:t,attributes:i,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const a=this[Us]();a||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const r=new Set(["field"]);if(this.layout.includes("row")){const e=this[ps]().columnWidths;if(Array.isArray(e)&&e.length>0){this[ss].columnWidths=e;this[ss].currentColumn=0}}const s=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),n=["xfaExclgroup"],o=layoutClass(this);o&&n.push(o);isPrintOnly(this)&&n.push("xfaPrintOnly");i.style=s;i.class=n;this.name&&(i.xfaName=this.name);this[Xs]();const g="lr-tb"===this.layout||"rl-tb"===this.layout,c=g?2:1;for(;this[ss].attempt<c;this[ss].attempt++){g&&1===this[ss].attempt&&(this[ss].numberInLine=0);const e=this[_r]({filter:r,include:!0});if(e.success)break;if(e.isBreak()){this[js]();return e}if(g&&0===this[ss].attempt&&0===this[ss].numberInLine&&!this[ys]()[ss].noLayoutFailure){this[ss].attempt=c;break}}this[js]();a||unsetFirstUnsplittable(this);if(this[ss].attempt===c){a||delete this[ss];return HTMLResult.FAILURE}let C=0,h=0;if(this.margin){C=this.margin.leftInset+this.margin.rightInset;h=this.margin.topInset+this.margin.bottomInset}const l=Math.max(this[ss].width+C,this.w||0),Q=Math.max(this[ss].height+h,this.h||0),E=[this.x,this.y,l,Q];""===this.w&&(s.width=measureToString(l));""===this.h&&(s.height=measureToString(Q));const u={name:"div",attributes:i,children:t};applyAssist(this,i);delete this[ss];return HTMLResult.success(createWrapper(this,u),E)}}class Execute extends XFAObject{constructor(e){super(Yn,"execute");this.connection=e.connection||"";this.executeType=getStringOption(e.executeType,["import","remerge"]);this.id=e.id||"";this.runAt=getStringOption(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Extras extends XFAObject{constructor(e){super(Yn,"extras",!0);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.extras=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class Field extends XFAObject{constructor(e){super(Yn,"field",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.rotate=getInteger({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.format=null;this.items=new XFAObjectArray(2);this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.validate=null;this.value=null;this.bindItems=new XFAObjectArray;this.connect=new XFAObjectArray;this.event=new XFAObjectArray;this.setProperty=new XFAObjectArray}[Rs](){return!0}[en](e){_setValue(this,e)}[sn](e){setTabIndex(this);if(!this.ui){this.ui=new Ui({});this.ui[ws]=this[ws];this[Vr](this.ui);let e;switch(this.items.children.length){case 0:e=new TextEdit({});this.ui.textEdit=e;break;case 1:e=new CheckButton({});this.ui.checkButton=e;break;case 2:e=new ChoiceList({});this.ui.choiceList=e}this.ui[Vr](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;this.caption&&delete this.caption[ss];this[Xs]();const t=this.caption?this.caption[sn](e).html:null,i=this.w,a=this.h;let r=0,s=0;if(this.margin){r=this.margin.leftInset+this.margin.rightInset;s=this.margin.topInset+this.margin.bottomInset}let n=null;if(""===this.w||""===this.h){let t=null,i=null,a=0,o=0;if(this.ui.checkButton)a=o=this.ui.checkButton.size;else{const{w:t,h:i}=layoutNode(this,e);if(null!==t){a=t;o=i}else o=function fonts_getMetrics(e,t=!1){let i=null;if(e){const t=stripQuotes(e.typeface),a=e[ws].fontFinder.find(t);i=selectFont(e,a)}if(!i)return{lineHeight:12,lineGap:2,lineNoGap:10};const a=e.size||10,r=i.lineHeight?Math.max(t?0:1.2,i.lineHeight):1.2,s=void 0===i.lineGap?.2:i.lineGap;return{lineHeight:r*a,lineGap:s*a,lineNoGap:Math.max(1,r-s)*a}}(this.font,!0).lineNoGap}n=getBorderDims(this.ui[Qs]());a+=n.w;o+=n.h;if(this.caption){const{w:r,h:s,isBroken:n}=this.caption[Qs](e);if(n&&this[ps]()[Ms]()){this[js]();return HTMLResult.FAILURE}t=r;i=s;switch(this.caption.placement){case"left":case"right":case"inline":t+=a;break;case"top":case"bottom":i+=o}}else{t=a;i=o}if(t&&""===this.w){t+=r;this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1<t?t:this.minW)}if(i&&""===this.h){i+=s;this.h=Math.min(this.maxH<=0?1/0:this.maxH,this.minH+1<i?i:this.minH)}}this[js]();fixDimensions(this);setFirstUnsplittable(this);if(!checkDimensions(this,e)){this.w=i;this.h=a;this[js]();return HTMLResult.FAILURE}unsetFirstUnsplittable(this);const o=toStyle(this,"font","dimensions","position","rotate","anchorType","presence","margin","hAlign");setMinMaxDimensions(this,o);const g=["xfaField"];this.font&&g.push("xfaFont");isPrintOnly(this)&&g.push("xfaPrintOnly");const c={style:o,id:this[gn],class:g};if(o.margin){o.padding=o.margin;delete o.margin}setAccess(this,g);this.name&&(c.xfaName=this.name);const C=[],h={name:"div",attributes:c,children:C};applyAssist(this,c);const l=this.border?this.border[on]():null,Q=computeBbox(this,h,e),E=this.ui[sn]().html;if(!E){Object.assign(o,l);return HTMLResult.success(createWrapper(this,h),Q)}this[tn]&&(E.children?.[0]?E.children[0].attributes.tabindex=this[tn]:E.attributes.tabindex=this[tn]);E.attributes.style||(E.attributes.style=Object.create(null));let u=null;if(this.ui.button){1===E.children.length&&([u]=E.children.splice(0,1));Object.assign(E.attributes.style,l)}else Object.assign(o,l);C.push(E);if(this.value)if(this.ui.imageEdit)E.children.push(this.value[sn]().html);else if(!this.ui.button){let e="";if(this.value.exData)e=this.value.exData[an]();else if(this.value.text)e=this.value.text[Qs]();else{const t=this.value[sn]().html;null!==t&&(e=t.children[0].value)}this.ui.textEdit&&this.value.text?.maxChars&&(E.children[0].attributes.maxLength=this.value.text.maxChars);if(e){if(this.ui.numericEdit){e=parseFloat(e);e=isNaN(e)?"":e.toString()}"textarea"===E.children[0].name?E.children[0].attributes.textContent=e:E.children[0].attributes.value=e}}if(!this.ui.imageEdit&&E.children?.[0]&&this.h){n=n||getBorderDims(this.ui[Qs]());let t=0;if(this.caption&&["top","bottom"].includes(this.caption.placement)){t=this.caption.reserve;t<=0&&(t=this.caption[Qs](e).h);const i=this.h-t-s-n.h;E.children[0].attributes.style.height=measureToString(i)}else E.children[0].attributes.style.height="100%"}u&&E.children.push(u);if(!t){E.attributes.class&&E.attributes.class.push("xfaLeft");this.w=i;this.h=a;return HTMLResult.success(createWrapper(this,h),Q)}if(this.ui.button){o.padding&&delete o.padding;"div"===t.name&&(t.name="span");E.children.push(t);return HTMLResult.success(h,Q)}this.ui.checkButton&&(t.attributes.class[0]="xfaCaptionForCheckButton");E.attributes.class||(E.attributes.class=[]);E.children.splice(0,0,t);switch(this.caption.placement){case"left":case"inline":E.attributes.class.push("xfaLeft");break;case"right":E.attributes.class.push("xfaRight");break;case"top":E.attributes.class.push("xfaTop");break;case"bottom":E.attributes.class.push("xfaBottom")}this.w=i;this.h=a;return HTMLResult.success(createWrapper(this,h),Q)}}class Fill extends XFAObject{constructor(e){super(Yn,"fill",!0);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null;this.linear=null;this.pattern=null;this.radial=null;this.solid=null;this.stipple=null}[on](){const e=this[ms](),t=e[ms]()[ms](),i=Object.create(null);let a="color",r=a;if(e instanceof Border){a="background-color";r="background";t instanceof Ui&&(i.backgroundColor="white")}if(e instanceof Rectangle||e instanceof Arc){a=r="fill";i.fill="white"}for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"color"===e)continue;const t=this[e];if(!(t instanceof XFAObject))continue;const s=t[on](this.color);s&&(i[s.startsWith("#")?a:r]=s);return i}if(this.color?.value){const e=this.color[on]();i[e.startsWith("#")?a:r]=e}return i}}class Filter extends XFAObject{constructor(e){super(Yn,"filter",!0);this.addRevocationInfo=getStringOption(e.addRevocationInfo,["","required","optional","none"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.version=getInteger({data:this.version,defaultValue:5,validate:e=>e>=1&&e<=5});this.appearanceFilter=null;this.certificates=null;this.digestMethods=null;this.encodings=null;this.encryptionMethods=null;this.handler=null;this.lockDocument=null;this.mdp=null;this.reasons=null;this.timeStamp=null}}class Float extends ContentObject{constructor(e){super(Yn,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[ns](){const e=parseFloat(this[is].trim());this[is]=isNaN(e)?null:e}[sn](e){return valueToHtml(null!==this[is]?this[is].toString():"")}}class template_Font extends XFAObject{constructor(e){super(Yn,"font",!0);this.baselineShift=getMeasurement(e.baselineShift);this.fontHorizontalScale=getFloat({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0});this.fontVerticalScale=getFloat({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0});this.id=e.id||"";this.kerningMode=getStringOption(e.kerningMode,["none","pair"]);this.letterSpacing=getMeasurement(e.letterSpacing,"0");this.lineThrough=getInteger({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e});this.lineThroughPeriod=getStringOption(e.lineThroughPeriod,["all","word"]);this.overline=getInteger({data:e.overline,defaultValue:0,validate:e=>1===e||2===e});this.overlinePeriod=getStringOption(e.overlinePeriod,["all","word"]);this.posture=getStringOption(e.posture,["normal","italic"]);this.size=getMeasurement(e.size,"10pt");this.typeface=e.typeface||"Courier";this.underline=getInteger({data:e.underline,defaultValue:0,validate:e=>1===e||2===e});this.underlinePeriod=getStringOption(e.underlinePeriod,["all","word"]);this.use=e.use||"";this.usehref=e.usehref||"";this.weight=getStringOption(e.weight,["normal","bold"]);this.extras=null;this.fill=null}[zr](e){super[zr](e);this[ws].usedTypefaces.add(this.typeface)}[on](){const e=toStyle(this,"fill"),t=e.color;if(t)if("#000000"===t)delete e.color;else if(!t.startsWith("#")){e.background=t;e.backgroundClip="text";e.color="transparent"}this.baselineShift&&(e.verticalAlign=measureToString(this.baselineShift));e.fontKerning="none"===this.kerningMode?"none":"normal";e.letterSpacing=measureToString(this.letterSpacing);if(0!==this.lineThrough){e.textDecoration="line-through";2===this.lineThrough&&(e.textDecorationStyle="double")}if(0!==this.overline){e.textDecoration="overline";2===this.overline&&(e.textDecorationStyle="double")}e.fontStyle=this.posture;e.fontSize=measureToString(.99*this.size);setFontFamily(this,this,this[ws].fontFinder,e);if(0!==this.underline){e.textDecoration="underline";2===this.underline&&(e.textDecorationStyle="double")}e.fontWeight=this.weight;return e}}class Format extends XFAObject{constructor(e){super(Yn,"format",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null}}class Handler extends StringObject{constructor(e){super(Yn,"handler");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Hyphenation extends XFAObject{constructor(e){super(Yn,"hyphenation");this.excludeAllCaps=getInteger({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e});this.excludeInitialCap=getInteger({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e});this.hyphenate=getInteger({data:e.hyphenate,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.pushCharacterCount=getInteger({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0});this.remainCharacterCount=getInteger({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||"";this.wordCharacterCount=getInteger({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Image extends StringObject{constructor(e){super(Yn,"image");this.aspect=getStringOption(e.aspect,["fit","actual","height","none","width"]);this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.name=e.name||"";this.transferEncoding=getStringOption(e.transferEncoding,["base64","none","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[sn](){if(this.contentType&&!Kn.has(this.contentType.toLowerCase()))return HTMLResult.EMPTY;let e=this[ws].images&&this[ws].images.get(this.href);if(!e&&(this.href||!this[is]))return HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=stringToBytes(atob(this[is])));if(!e)return HTMLResult.EMPTY;if(!this.contentType){for(const[t,i]of qn)if(e.length>t.length&&t.every(((t,i)=>t===e[i]))){this.contentType=i;break}if(!this.contentType)return HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let i;switch(this.aspect){case"fit":case"actual":break;case"height":i={height:"100%",objectFit:"fill"};break;case"none":i={width:"100%",height:"100%",objectFit:"fill"};break;case"width":i={width:"100%",objectFit:"fill"}}const a=this[ms]();return HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:i,src:URL.createObjectURL(t),alt:a?ariaLabel(a[ms]()):null}})}}class ImageEdit extends XFAObject{constructor(e){super(Yn,"imageEdit",!0);this.data=getStringOption(e.data,["link","embed"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[sn](e){return"embed"===this.data?HTMLResult.success({name:"div",children:[],attributes:{}}):HTMLResult.EMPTY}}class Integer extends ContentObject{constructor(e){super(Yn,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[ns](){const e=parseInt(this[is].trim(),10);this[is]=isNaN(e)?null:e}[sn](e){return valueToHtml(null!==this[is]?this[is].toString():"")}}class Issuers extends XFAObject{constructor(e){super(Yn,"issuers",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class Items extends XFAObject{constructor(e){super(Yn,"items",!0);this.id=e.id||"";this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.ref=e.ref||"";this.save=getInteger({data:e.save,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}[sn](){const e=[];for(const t of this[us]())e.push(t[an]());return HTMLResult.success(e)}}class Keep extends XFAObject{constructor(e){super(Yn,"keep",!0);this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=getStringOption(e.intact,t);this.next=getStringOption(e.next,t);this.previous=getStringOption(e.previous,t);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class KeyUsage extends XFAObject{constructor(e){super(Yn,"keyUsage");const t=["","yes","no"];this.crlSign=getStringOption(e.crlSign,t);this.dataEncipherment=getStringOption(e.dataEncipherment,t);this.decipherOnly=getStringOption(e.decipherOnly,t);this.digitalSignature=getStringOption(e.digitalSignature,t);this.encipherOnly=getStringOption(e.encipherOnly,t);this.id=e.id||"";this.keyAgreement=getStringOption(e.keyAgreement,t);this.keyCertSign=getStringOption(e.keyCertSign,t);this.keyEncipherment=getStringOption(e.keyEncipherment,t);this.nonRepudiation=getStringOption(e.nonRepudiation,t);this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Line extends XFAObject{constructor(e){super(Yn,"line",!0);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.slope=getStringOption(e.slope,["\\","/"]);this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null}[sn](){const e=this[ms]()[ms](),t=this.edge||new Edge({}),i=t[on](),a=Object.create(null),r="visible"===t.presence?t.thickness:0;a.strokeWidth=measureToString(r);a.stroke=i.color;let s,n,o,g,c="100%",C="100%";if(e.w<=r){[s,n,o,g]=["50%",0,"50%","100%"];c=a.strokeWidth}else if(e.h<=r){[s,n,o,g]=[0,"50%","100%","50%"];C=a.strokeWidth}else"\\"===this.slope?[s,n,o,g]=[0,0,"100%","100%"]:[s,n,o,g]=[0,"100%","100%",0];const h={name:"svg",children:[{name:"line",attributes:{xmlns:vn,x1:s,y1:n,x2:o,y2:g,style:a}}],attributes:{xmlns:vn,width:c,height:C,style:{overflow:"visible"}}};if(hasMargin(e))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[h]});h.attributes.style.position="absolute";return HTMLResult.success(h)}}class Linear extends XFAObject{constructor(e){super(Yn,"linear",!0);this.id=e.id||"";this.type=getStringOption(e.type,["toRight","toBottom","toLeft","toTop"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[on](e){e=e?e[on]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[on]():"#000000"})`}}class LockDocument extends ContentObject{constructor(e){super(Yn,"lockDocument");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[ns](){this[is]=getStringOption(this[is],["auto","0","1"])}}class Manifest extends XFAObject{constructor(e){super(Yn,"manifest",!0);this.action=getStringOption(e.action,["include","all","exclude"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.ref=new XFAObjectArray}}class Margin extends XFAObject{constructor(e){super(Yn,"margin",!0);this.bottomInset=getMeasurement(e.bottomInset,"0");this.id=e.id||"";this.leftInset=getMeasurement(e.leftInset,"0");this.rightInset=getMeasurement(e.rightInset,"0");this.topInset=getMeasurement(e.topInset,"0");this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[on](){return{margin:measureToString(this.topInset)+" "+measureToString(this.rightInset)+" "+measureToString(this.bottomInset)+" "+measureToString(this.leftInset)}}}class Mdp extends XFAObject{constructor(e){super(Yn,"mdp");this.id=e.id||"";this.permissions=getInteger({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e});this.signatureType=getStringOption(e.signatureType,["filler","author"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Medium extends XFAObject{constructor(e){super(Yn,"medium");this.id=e.id||"";this.imagingBBox=function getBBox(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const i=e.trim().split(/\s*,\s*/).map((e=>getMeasurement(e,"-1")));if(i.length<4||i[2]<0||i[3]<0)return{x:t,y:t,width:t,height:t};const[a,r,s,n]=i;return{x:a,y:r,width:s,height:n}}(e.imagingBBox);this.long=getMeasurement(e.long);this.orientation=getStringOption(e.orientation,["portrait","landscape"]);this.short=getMeasurement(e.short);this.stock=e.stock||"";this.trayIn=getStringOption(e.trayIn,["auto","delegate","pageFront"]);this.trayOut=getStringOption(e.trayOut,["auto","delegate"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Message extends XFAObject{constructor(e){super(Yn,"message",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.text=new XFAObjectArray}}class NumericEdit extends XFAObject{constructor(e){super(Yn,"numericEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[sn](e){const t=toStyle(this,"border","font","margin"),i=this[ms]()[ms](),a={name:"input",attributes:{type:"text",fieldId:i[gn],dataId:i[as]?.[gn]||i[gn],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(i),"aria-required":!1}};if(isRequired(i)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Occur extends XFAObject{constructor(e){super(Yn,"occur",!0);this.id=e.id||"";this.initial=""!==e.initial?getInteger({data:e.initial,defaultValue:"",validate:e=>!0}):"";this.max=""!==e.max?getInteger({data:e.max,defaultValue:1,validate:e=>!0}):"";this.min=""!==e.min?getInteger({data:e.min,defaultValue:1,validate:e=>!0}):"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[zr](){const e=this[ms](),t=this.min;""===this.min&&(this.min=e instanceof PageArea||e instanceof PageSet?0:1);""===this.max&&(this.max=""===t?e instanceof PageArea||e instanceof PageSet?-1:1:this.min);-1!==this.max&&this.max<this.min&&(this.max=this.min);""===this.initial&&(this.initial=e instanceof Template?1:this.min)}}class Oid extends StringObject{constructor(e){super(Yn,"oid");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Oids extends XFAObject{constructor(e){super(Yn,"oids",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.oid=new XFAObjectArray}}class Overflow extends XFAObject{constructor(e){super(Yn,"overflow");this.id=e.id||"";this.leader=e.leader||"";this.target=e.target||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}[Qs](){if(!this[ss]){const e=this[ms](),t=this[ys](),i=t[zs](this.target,e),a=t[zs](this.leader,e),r=t[zs](this.trailer,e);this[ss]={target:i?.[0]||null,leader:a?.[0]||null,trailer:r?.[0]||null,addLeader:!1,addTrailer:!1}}return this[ss]}}class PageArea extends XFAObject{constructor(e){super(Yn,"pageArea",!0);this.blankOrNotBlank=getStringOption(e.blankOrNotBlank,["any","blank","notBlank"]);this.id=e.id||"";this.initialNumber=getInteger({data:e.initialNumber,defaultValue:1,validate:e=>!0});this.name=e.name||"";this.numbered=getInteger({data:e.numbered,defaultValue:1,validate:e=>!0});this.oddOrEven=getStringOption(e.oddOrEven,["any","even","odd"]);this.pagePosition=getStringOption(e.pagePosition,["any","first","last","only","rest"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.desc=null;this.extras=null;this.medium=null;this.occur=null;this.area=new XFAObjectArray;this.contentArea=new XFAObjectArray;this.draw=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.subform=new XFAObjectArray}[Hs](){if(!this[ss]){this[ss]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[ss].numberOfUse<this.occur.max}[$r](){delete this[ss]}[fs](){this[ss]||(this[ss]={numberOfUse:0});const e=this[ms]();if("orderedOccurrence"===e.relation&&this[Hs]()){this[ss].numberOfUse+=1;return this}return e[fs]()}[cs](){return this[ss].space||{width:0,height:0}}[sn](){this[ss]||(this[ss]={numberOfUse:1});const e=[];this[ss].children=e;const t=Object.create(null);if(this.medium&&this.medium.short&&this.medium.long){t.width=measureToString(this.medium.short);t.height=measureToString(this.medium.long);this[ss].space={width:this.medium.short,height:this.medium.long};if("landscape"===this.medium.orientation){const e=t.width;t.width=t.height;t.height=e;this[ss].space={width:this.medium.long,height:this.medium.short}}}else warn("XFA - No medium specified in pageArea: please file a bug.");this[_r]({filter:new Set(["area","draw","field","subform"]),include:!0});this[_r]({filter:new Set(["contentArea"]),include:!0});return HTMLResult.success({name:"div",children:e,attributes:{class:["xfaPage"],id:this[gn],style:t,xfaName:this.name}})}}class PageSet extends XFAObject{constructor(e){super(Yn,"pageSet",!0);this.duplexImposition=getStringOption(e.duplexImposition,["longEdge","shortEdge"]);this.id=e.id||"";this.name=e.name||"";this.relation=getStringOption(e.relation,["orderedOccurrence","duplexPaginated","simplexPaginated"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.occur=null;this.pageArea=new XFAObjectArray;this.pageSet=new XFAObjectArray}[$r](){for(const e of this.pageArea.children)e[$r]();for(const e of this.pageSet.children)e[$r]()}[Hs](){return!this.occur||-1===this.occur.max||this[ss].numberOfUse<this.occur.max}[fs](){this[ss]||(this[ss]={numberOfUse:1,pageIndex:-1,pageSetIndex:-1});if("orderedOccurrence"===this.relation){if(this[ss].pageIndex+1<this.pageArea.children.length){this[ss].pageIndex+=1;return this.pageArea.children[this[ss].pageIndex][fs]()}if(this[ss].pageSetIndex+1<this.pageSet.children.length){this[ss].pageSetIndex+=1;return this.pageSet.children[this[ss].pageSetIndex][fs]()}if(this[Hs]()){this[ss].numberOfUse+=1;this[ss].pageIndex=-1;this[ss].pageSetIndex=-1;return this[fs]()}const e=this[ms]();if(e instanceof PageSet)return e[fs]();this[$r]();return this[fs]()}const e=this[ys]()[ss].pageNumber,t=e%2==0?"even":"odd",i=0===e?"first":"rest";let a=this.pageArea.children.find((e=>e.oddOrEven===t&&e.pagePosition===i));if(a)return a;a=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===i));if(a)return a;a=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition));return a||this.pageArea.children[0]}}class Para extends XFAObject{constructor(e){super(Yn,"para",!0);this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.lineHeight=e.lineHeight?getMeasurement(e.lineHeight,"0pt"):"";this.marginLeft=e.marginLeft?getMeasurement(e.marginLeft,"0pt"):"";this.marginRight=e.marginRight?getMeasurement(e.marginRight,"0pt"):"";this.orphans=getInteger({data:e.orphans,defaultValue:0,validate:e=>e>=0});this.preserve=e.preserve||"";this.radixOffset=e.radixOffset?getMeasurement(e.radixOffset,"0pt"):"";this.spaceAbove=e.spaceAbove?getMeasurement(e.spaceAbove,"0pt"):"";this.spaceBelow=e.spaceBelow?getMeasurement(e.spaceBelow,"0pt"):"";this.tabDefault=e.tabDefault?getMeasurement(this.tabDefault):"";this.tabStops=(e.tabStops||"").trim().split(/\s+/).map(((e,t)=>t%2==1?getMeasurement(e):e));this.textIndent=e.textIndent?getMeasurement(e.textIndent,"0pt"):"";this.use=e.use||"";this.usehref=e.usehref||"";this.vAlign=getStringOption(e.vAlign,["top","bottom","middle"]);this.widows=getInteger({data:e.widows,defaultValue:0,validate:e=>e>=0});this.hyphenation=null}[on](){const e=toStyle(this,"hAlign");""!==this.marginLeft&&(e.paddingLeft=measureToString(this.marginLeft));""!==this.marginRight&&(e.paddingight=measureToString(this.marginRight));""!==this.spaceAbove&&(e.paddingTop=measureToString(this.spaceAbove));""!==this.spaceBelow&&(e.paddingBottom=measureToString(this.spaceBelow));if(""!==this.textIndent){e.textIndent=measureToString(this.textIndent);fixTextIndent(e)}this.lineHeight>0&&(e.lineHeight=measureToString(this.lineHeight));""!==this.tabDefault&&(e.tabSize=measureToString(this.tabDefault));this.tabStops.length;this.hyphenatation&&Object.assign(e,this.hyphenatation[on]());return e}}class PasswordEdit extends XFAObject{constructor(e){super(Yn,"passwordEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.passwordChar=e.passwordChar||"*";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}}class template_Pattern extends XFAObject{constructor(e){super(Yn,"pattern",!0);this.id=e.id||"";this.type=getStringOption(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[on](e){e=e?e[on]():"#FFFFFF";const t=this.color?this.color[on]():"#000000",i="repeating-linear-gradient",a=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${i}(to top,${a}) ${i}(to right,${a})`;case"crossDiagonal":return`${i}(45deg,${a}) ${i}(-45deg,${a})`;case"diagonalLeft":return`${i}(45deg,${a})`;case"diagonalRight":return`${i}(-45deg,${a})`;case"horizontal":return`${i}(to top,${a})`;case"vertical":return`${i}(to right,${a})`}return""}}class Picture extends StringObject{constructor(e){super(Yn,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends XFAObject{constructor(e){super(Yn,"proto",!0);this.appearanceFilter=new XFAObjectArray;this.arc=new XFAObjectArray;this.area=new XFAObjectArray;this.assist=new XFAObjectArray;this.barcode=new XFAObjectArray;this.bindItems=new XFAObjectArray;this.bookend=new XFAObjectArray;this.boolean=new XFAObjectArray;this.border=new XFAObjectArray;this.break=new XFAObjectArray;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.button=new XFAObjectArray;this.calculate=new XFAObjectArray;this.caption=new XFAObjectArray;this.certificate=new XFAObjectArray;this.certificates=new XFAObjectArray;this.checkButton=new XFAObjectArray;this.choiceList=new XFAObjectArray;this.color=new XFAObjectArray;this.comb=new XFAObjectArray;this.connect=new XFAObjectArray;this.contentArea=new XFAObjectArray;this.corner=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.dateTimeEdit=new XFAObjectArray;this.decimal=new XFAObjectArray;this.defaultUi=new XFAObjectArray;this.desc=new XFAObjectArray;this.digestMethod=new XFAObjectArray;this.digestMethods=new XFAObjectArray;this.draw=new XFAObjectArray;this.edge=new XFAObjectArray;this.encoding=new XFAObjectArray;this.encodings=new XFAObjectArray;this.encrypt=new XFAObjectArray;this.encryptData=new XFAObjectArray;this.encryption=new XFAObjectArray;this.encryptionMethod=new XFAObjectArray;this.encryptionMethods=new XFAObjectArray;this.event=new XFAObjectArray;this.exData=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.execute=new XFAObjectArray;this.extras=new XFAObjectArray;this.field=new XFAObjectArray;this.fill=new XFAObjectArray;this.filter=new XFAObjectArray;this.float=new XFAObjectArray;this.font=new XFAObjectArray;this.format=new XFAObjectArray;this.handler=new XFAObjectArray;this.hyphenation=new XFAObjectArray;this.image=new XFAObjectArray;this.imageEdit=new XFAObjectArray;this.integer=new XFAObjectArray;this.issuers=new XFAObjectArray;this.items=new XFAObjectArray;this.keep=new XFAObjectArray;this.keyUsage=new XFAObjectArray;this.line=new XFAObjectArray;this.linear=new XFAObjectArray;this.lockDocument=new XFAObjectArray;this.manifest=new XFAObjectArray;this.margin=new XFAObjectArray;this.mdp=new XFAObjectArray;this.medium=new XFAObjectArray;this.message=new XFAObjectArray;this.numericEdit=new XFAObjectArray;this.occur=new XFAObjectArray;this.oid=new XFAObjectArray;this.oids=new XFAObjectArray;this.overflow=new XFAObjectArray;this.pageArea=new XFAObjectArray;this.pageSet=new XFAObjectArray;this.para=new XFAObjectArray;this.passwordEdit=new XFAObjectArray;this.pattern=new XFAObjectArray;this.picture=new XFAObjectArray;this.radial=new XFAObjectArray;this.reason=new XFAObjectArray;this.reasons=new XFAObjectArray;this.rectangle=new XFAObjectArray;this.ref=new XFAObjectArray;this.script=new XFAObjectArray;this.setProperty=new XFAObjectArray;this.signData=new XFAObjectArray;this.signature=new XFAObjectArray;this.signing=new XFAObjectArray;this.solid=new XFAObjectArray;this.speak=new XFAObjectArray;this.stipple=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray;this.subjectDN=new XFAObjectArray;this.subjectDNs=new XFAObjectArray;this.submit=new XFAObjectArray;this.text=new XFAObjectArray;this.textEdit=new XFAObjectArray;this.time=new XFAObjectArray;this.timeStamp=new XFAObjectArray;this.toolTip=new XFAObjectArray;this.traversal=new XFAObjectArray;this.traverse=new XFAObjectArray;this.ui=new XFAObjectArray;this.validate=new XFAObjectArray;this.value=new XFAObjectArray;this.variables=new XFAObjectArray}}class Radial extends XFAObject{constructor(e){super(Yn,"radial",!0);this.id=e.id||"";this.type=getStringOption(e.type,["toEdge","toCenter"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[on](e){e=e?e[on]():"#FFFFFF";const t=this.color?this.color[on]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends StringObject{constructor(e){super(Yn,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends XFAObject{constructor(e){super(Yn,"reasons",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.reason=new XFAObjectArray}}class Rectangle extends XFAObject{constructor(e){super(Yn,"rectangle",!0);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new XFAObjectArray(4);this.edge=new XFAObjectArray(4);this.fill=null}[sn](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[on](),i=Object.create(null);"visible"===this.fill?.presence?Object.assign(i,this.fill[on]()):i.fill="transparent";i.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);i.stroke=t.color;const a=(this.corner.children.length?this.corner.children[0]:new Corner({}))[on](),r={name:"svg",children:[{name:"rect",attributes:{xmlns:vn,width:"100%",height:"100%",x:0,y:0,rx:a.radius,ry:a.radius,style:i}}],attributes:{xmlns:vn,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[ms]()[ms]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[r]});r.attributes.style.position="absolute";return HTMLResult.success(r)}}class RefElement extends StringObject{constructor(e){super(Yn,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends StringObject{constructor(e){super(Yn,"script");this.binding=e.binding||"";this.contentType=e.contentType||"";this.id=e.id||"";this.name=e.name||"";this.runAt=getStringOption(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class SetProperty extends XFAObject{constructor(e){super(Yn,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}class SignData extends XFAObject{constructor(e){super(Yn,"signData",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["sign","clear","verify"]);this.ref=e.ref||"";this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Signature extends XFAObject{constructor(e){super(Yn,"signature",!0);this.id=e.id||"";this.type=getStringOption(e.type,["PDF1.3","PDF1.6"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.filter=null;this.manifest=null;this.margin=null}}class Signing extends XFAObject{constructor(e){super(Yn,"signing",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class Solid extends XFAObject{constructor(e){super(Yn,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[on](e){return e?e[on]():"#FFFFFF"}}class Speak extends StringObject{constructor(e){super(Yn,"speak");this.disable=getInteger({data:e.disable,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.priority=getStringOption(e.priority,["custom","caption","name","toolTip"]);this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Stipple extends XFAObject{constructor(e){super(Yn,"stipple",!0);this.id=e.id||"";this.rate=getInteger({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100});this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[on](e){const t=this.rate/100;return Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class Subform extends XFAObject{constructor(e){super(Yn,"subform",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.allowMacro=getInteger({data:e.allowMacro,defaultValue:0,validate:e=>1===e});this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map((e=>"-1"===e?-1:getMeasurement(e)));this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=getStringOption(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.mergeMode=getStringOption(e.mergeMode,["consumeData","matchTemplate"]);this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.restoreState=getStringOption(e.restoreState,["manual","auto"]);this.scope=getStringOption(e.scope,["name","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.bookend=null;this.border=null;this.break=null;this.calculate=null;this.desc=null;this.extras=null;this.keep=null;this.margin=null;this.occur=null;this.overflow=null;this.pageSet=null;this.para=null;this.traversal=null;this.validate=null;this.variables=null;this.area=new XFAObjectArray;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.connect=new XFAObjectArray;this.draw=new XFAObjectArray;this.event=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.proto=new XFAObjectArray;this.setProperty=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}[ps](){const e=this[ms]();return e instanceof SubformSet?e[ps]():e}[Rs](){return!0}[Ms](){return this.layout.endsWith("-tb")&&0===this[ss].attempt&&this[ss].numberInLine>0||this[ms]()[Ms]()}*[ds](){yield*getContainedChildren(this)}[os](){return flushHTML(this)}[Zr](e,t){addHTML(this,e,t)}[cs](){return getAvailableSpace(this)}[Us](){const e=this[ps]();if(!e[Us]())return!1;if(void 0!==this[ss]._isSplittable)return this[ss]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[ss]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[ss]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[ss].numberInLine)return!1;this[ss]._isSplittable=!0;return!0}[sn](e){setTabIndex(this);if(this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new BreakAfter({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[ws]=this[ws];this[Vr](e);this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new BreakBefore({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[ws]=this[ws];this[Vr](e);this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Overflow({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[ws]=this[ws];this[Vr](e);this.overflow.push(e)}this[Zs](this.break);this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;(this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&warn("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");if(this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(handleBreak(e))return HTMLResult.breakNode(e)}if(this[ss]?.afterBreakAfter)return HTMLResult.EMPTY;fixDimensions(this);const t=[],i={id:this[gn],class:[]};setAccess(this,i.class);this[ss]||(this[ss]=Object.create(null));Object.assign(this[ss],{children:t,line:null,attributes:i,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const a=this[ys](),r=a[ss].noLayoutFailure,s=this[Us]();s||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const n=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[ps]().columnWidths;if(Array.isArray(e)&&e.length>0){this[ss].columnWidths=e;this[ss].currentColumn=0}}const o=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),g=["xfaSubform"],c=layoutClass(this);c&&g.push(c);i.style=o;i.class=g;this.name&&(i.xfaName=this.name);if(this.overflow){const t=this.overflow[Qs]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}this[Xs]();const C="lr-tb"===this.layout||"rl-tb"===this.layout,h=C?2:1;for(;this[ss].attempt<h;this[ss].attempt++){C&&1===this[ss].attempt&&(this[ss].numberInLine=0);const e=this[_r]({filter:n,include:!0});if(e.success)break;if(e.isBreak()){this[js]();return e}if(C&&0===this[ss].attempt&&0===this[ss].numberInLine&&!a[ss].noLayoutFailure){this[ss].attempt=h;break}}this[js]();s||unsetFirstUnsplittable(this);a[ss].noLayoutFailure=r;if(this[ss].attempt===h){this.overflow&&(this[ys]()[ss].overflowNode=this.overflow);s||delete this[ss];return HTMLResult.FAILURE}if(this.overflow){const t=this.overflow[Qs]();if(t.addTrailer){t.addTrailer=!1;handleOverflow(this,t.trailer,e)}}let l=0,Q=0;if(this.margin){l=this.margin.leftInset+this.margin.rightInset;Q=this.margin.topInset+this.margin.bottomInset}const E=Math.max(this[ss].width+l,this.w||0),u=Math.max(this[ss].height+Q,this.h||0),d=[this.x,this.y,E,u];""===this.w&&(o.width=measureToString(E));""===this.h&&(o.height=measureToString(u));if(("0px"===o.width||"0px"===o.height)&&0===t.length)return HTMLResult.EMPTY;const f={name:"div",attributes:i,children:t};applyAssist(this,i);const p=HTMLResult.success(createWrapper(this,f),d);if(this.breakAfter.children.length>=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[ss].afterBreakAfter=p;return HTMLResult.breakNode(e)}}delete this[ss];return p}}class SubformSet extends XFAObject{constructor(e){super(Yn,"subformSet",!0);this.id=e.id||"";this.name=e.name||"";this.relation=getStringOption(e.relation,["ordered","choice","unordered"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.bookend=null;this.break=null;this.desc=null;this.extras=null;this.occur=null;this.overflow=null;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}*[ds](){yield*getContainedChildren(this)}[ps](){let e=this[ms]();for(;!(e instanceof Subform);)e=e[ms]();return e}[Rs](){return!0}}class SubjectDN extends ContentObject{constructor(e){super(Yn,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[ns](){this[is]=new Map(this[is].split(this.delimiter).map((e=>{(e=e.split("=",2))[0]=e[0].trim();return e})))}}class SubjectDNs extends XFAObject{constructor(e){super(Yn,"subjectDNs",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.subjectDN=new XFAObjectArray}}class Submit extends XFAObject{constructor(e){super(Yn,"submit",!0);this.embedPDF=getInteger({data:e.embedPDF,defaultValue:0,validate:e=>1===e});this.format=getStringOption(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]);this.id=e.id||"";this.target=e.target||"";this.textEncoding=getKeyword({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.use=e.use||"";this.usehref=e.usehref||"";this.xdpContent=e.xdpContent||"";this.encrypt=null;this.encryptData=new XFAObjectArray;this.signData=new XFAObjectArray}}class Template extends XFAObject{constructor(e){super(Yn,"template",!0);this.baseProfile=getStringOption(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new XFAObjectArray}[ns](){0===this.subform.children.length&&warn("XFA - No subforms in template node.");this.subform.children.length>=2&&warn("XFA - Several subforms in template node: please file a bug.");this[tn]=5e3}[Us](){return!0}[zs](e,t){return e.startsWith("#")?[this[Ds].get(e.slice(1))]:searchNode(this,t,e,!0,!0)}*[rn](){if(!this.subform.children.length)return HTMLResult.success({name:"div",children:[]});this[ss]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]};const e=this.subform.children[0];e.pageSet[$r]();const t=e.pageSet.pageArea.children,i={name:"div",children:[]};let a=null,r=null,s=null;if(e.breakBefore.children.length>=1){r=e.breakBefore.children[0];s=r.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){r=e.subform.children[0].breakBefore.children[0];s=r.target}else if(e.break?.beforeTarget){r=e.break;s=r.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget){r=e.subform.children[0].break;s=r.beforeTarget}if(r){const e=this[zs](s,r[ms]());if(e instanceof PageArea){a=e;r[ss]={}}}a||(a=t[0]);a[ss]={numberOfUse:1};const n=a[ms]();n[ss]={numberOfUse:1,pageIndex:n.pageArea.children.indexOf(a),pageSetIndex:0};let o,g=null,c=null,C=!0,h=0,l=0;for(;;){if(C)h=0;else{i.children.pop();if(3==++h){warn("XFA - Something goes wrong: please file a bug.");return i}}o=null;this[ss].currentPageArea=a;const t=a[sn]().html;i.children.push(t);if(g){this[ss].noLayoutFailure=!0;t.children.push(g[sn](a[ss].space).html);g=null}if(c){this[ss].noLayoutFailure=!0;t.children.push(c[sn](a[ss].space).html);c=null}const r=a.contentArea.children,s=t.children.filter((e=>e.attributes.class.includes("xfaContentarea")));C=!1;this[ss].firstUnsplittable=null;this[ss].noLayoutFailure=!1;const flush=t=>{const i=e[os]();if(i){C||=i.children?.length>0;s[t].children.push(i)}};for(let t=l,a=r.length;t<a;t++){const a=this[ss].currentContentArea=r[t],n={width:a.w,height:a.h};l=0;if(g){s[t].children.push(g[sn](n).html);g=null}if(c){s[t].children.push(c[sn](n).html);c=null}const h=e[sn](n);if(h.success){if(h.html){C||=h.html.children?.length>0;s[t].children.push(h.html)}else!C&&i.children.length>1&&i.children.pop();return i}if(h.isBreak()){const e=h.breakNode;flush(t);if("auto"===e.targetType)continue;if(e.leader){g=this[zs](e.leader,e[ms]());g=g?g[0]:null}if(e.trailer){c=this[zs](e.trailer,e[ms]());c=c?c[0]:null}if("pageArea"===e.targetType){o=e[ss].target;t=1/0}else if(e[ss].target){o=e[ss].target;l=e[ss].index+1;t=1/0}else t=e[ss].index}else if(this[ss].overflowNode){const e=this[ss].overflowNode;this[ss].overflowNode=null;const i=e[Qs](),a=i.target;i.addLeader=null!==i.leader;i.addTrailer=null!==i.trailer;flush(t);const s=t;t=1/0;if(a instanceof PageArea)o=a;else if(a instanceof ContentArea){const e=r.indexOf(a);if(-1!==e)e>s?t=e-1:l=e;else{o=a[ms]();l=o.contentArea.children.indexOf(a)}}}else flush(t)}this[ss].pageNumber+=1;o&&(o[Hs]()?o[ss].numberOfUse+=1:o=null);a=o||a[fs]();yield null}}}class Text extends ContentObject{constructor(e){super(Yn,"text");this.id=e.id||"";this.maxChars=getInteger({data:e.maxChars,defaultValue:0,validate:e=>e>=0});this.name=e.name||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}[Xr](){return!0}[Ks](e){if(e[Ys]===cn.xhtml.id){this[is]=e;return!0}warn(`XFA - Invalid content in Text: ${e[vs]}.`);return!1}[Os](e){this[is]instanceof XFAObject||super[Os](e)}[ns](){"string"==typeof this[is]&&(this[is]=this[is].replaceAll("\r\n","\n"))}[Qs](){return"string"==typeof this[is]?this[is].split(/[\u2029\u2028\n]/).reduce(((e,t)=>{t&&e.push(t);return e}),[]).join("\n"):this[is][an]()}[sn](e){if("string"==typeof this[is]){const e=valueToHtml(this[is]).html;if(this[is].includes("\u2029")){e.name="div";e.children=[];this[is].split("\u2029").map((e=>e.split(/[\u2028\n]/).reduce(((e,t)=>{e.push({name:"span",value:t},{name:"br"});return e}),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))}else if(/[\u2028\n]/.test(this[is])){e.name="div";e.children=[];this[is].split(/[\u2028\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))}return HTMLResult.success(e)}return this[is][sn](e)}}class TextEdit extends XFAObject{constructor(e){super(Yn,"textEdit",!0);this.allowRichText=getInteger({data:e.allowRichText,defaultValue:0,validate:e=>1===e});this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.multiLine=getInteger({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.vScrollPolicy=getStringOption(e.vScrollPolicy,["auto","off","on"]);this.border=null;this.comb=null;this.extras=null;this.margin=null}[sn](e){const t=toStyle(this,"border","font","margin");let i;const a=this[ms]()[ms]();""===this.multiLine&&(this.multiLine=a instanceof Draw?1:0);i=1===this.multiLine?{name:"textarea",attributes:{dataId:a[as]?.[gn]||a[gn],fieldId:a[gn],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:a[as]?.[gn]||a[gn],fieldId:a[gn],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){i.attributes["aria-required"]=!0;i.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class Time extends StringObject{constructor(e){super(Yn,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[ns](){const e=this[is].trim();this[is]=e?new Date(e):null}[sn](e){return valueToHtml(this[is]?this[is].toString():"")}}class TimeStamp extends XFAObject{constructor(e){super(Yn,"timeStamp");this.id=e.id||"";this.server=e.server||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class ToolTip extends StringObject{constructor(e){super(Yn,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends XFAObject{constructor(e){super(Yn,"traversal",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.traverse=new XFAObjectArray}}class Traverse extends XFAObject{constructor(e){super(Yn,"traverse",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["next","back","down","first","left","right","up"]);this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.script=null}get name(){return this.operation}[Ls](){return!1}}class Ui extends XFAObject{constructor(e){super(Yn,"ui",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null;this.barcode=null;this.button=null;this.checkButton=null;this.choiceList=null;this.dateTimeEdit=null;this.defaultUi=null;this.imageEdit=null;this.numericEdit=null;this.passwordEdit=null;this.signature=null;this.textEdit=null}[Qs](){if(void 0===this[ss]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof XFAObject){this[ss]=t;return t}}this[ss]=null}return this[ss]}[sn](e){const t=this[Qs]();return t?t[sn](e):HTMLResult.EMPTY}}class Validate extends XFAObject{constructor(e){super(Yn,"validate",!0);this.formatTest=getStringOption(e.formatTest,["warning","disabled","error"]);this.id=e.id||"";this.nullTest=getStringOption(e.nullTest,["disabled","error","warning"]);this.scriptTest=getStringOption(e.scriptTest,["error","disabled","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.picture=null;this.script=null}}class Value extends XFAObject{constructor(e){super(Yn,"value",!0);this.id=e.id||"";this.override=getInteger({data:e.override,defaultValue:0,validate:e=>1===e});this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.arc=null;this.boolean=null;this.date=null;this.dateTime=null;this.decimal=null;this.exData=null;this.float=null;this.image=null;this.integer=null;this.line=null;this.rectangle=null;this.text=null;this.time=null}[en](e){const t=this[ms]();if(t instanceof Field&&t.ui?.imageEdit){if(!this.image){this.image=new Image({});this[Vr](this.image)}this.image[is]=e[is];return}const i=e[vs];if(null===this[i]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof XFAObject){this[e]=null;this[Zs](t)}}this[e[vs]]=e;this[Vr](e)}else this[i][is]=e[is]}[an](){if(this.exData)return"string"==typeof this.exData[is]?this.exData[is].trim():this.exData[is][an]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof XFAObject)return(t[is]||"").toString().trim()}return null}[sn](e){for(const t of Object.getOwnPropertyNames(this)){const i=this[t];if(i instanceof XFAObject)return i[sn](e)}return HTMLResult.EMPTY}}class Variables extends XFAObject{constructor(e){super(Yn,"variables",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.manifest=new XFAObjectArray;this.script=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}[Ls](){return!0}}class TemplateNamespace{static[In](e,t){if(TemplateNamespace.hasOwnProperty(e)){const i=TemplateNamespace[e](t);i[An](t);return i}}static appearanceFilter(e){return new AppearanceFilter(e)}static arc(e){return new Arc(e)}static area(e){return new Area(e)}static assist(e){return new Assist(e)}static barcode(e){return new Barcode(e)}static bind(e){return new Bind(e)}static bindItems(e){return new BindItems(e)}static bookend(e){return new Bookend(e)}static boolean(e){return new BooleanElement(e)}static border(e){return new Border(e)}static break(e){return new Break(e)}static breakAfter(e){return new BreakAfter(e)}static breakBefore(e){return new BreakBefore(e)}static button(e){return new Button(e)}static calculate(e){return new Calculate(e)}static caption(e){return new Caption(e)}static certificate(e){return new Certificate(e)}static certificates(e){return new Certificates(e)}static checkButton(e){return new CheckButton(e)}static choiceList(e){return new ChoiceList(e)}static color(e){return new Color(e)}static comb(e){return new Comb(e)}static connect(e){return new Connect(e)}static contentArea(e){return new ContentArea(e)}static corner(e){return new Corner(e)}static date(e){return new DateElement(e)}static dateTime(e){return new DateTime(e)}static dateTimeEdit(e){return new DateTimeEdit(e)}static decimal(e){return new Decimal(e)}static defaultUi(e){return new DefaultUi(e)}static desc(e){return new Desc(e)}static digestMethod(e){return new DigestMethod(e)}static digestMethods(e){return new DigestMethods(e)}static draw(e){return new Draw(e)}static edge(e){return new Edge(e)}static encoding(e){return new Encoding(e)}static encodings(e){return new Encodings(e)}static encrypt(e){return new Encrypt(e)}static encryptData(e){return new EncryptData(e)}static encryption(e){return new Encryption(e)}static encryptionMethod(e){return new EncryptionMethod(e)}static encryptionMethods(e){return new EncryptionMethods(e)}static event(e){return new Event(e)}static exData(e){return new ExData(e)}static exObject(e){return new ExObject(e)}static exclGroup(e){return new ExclGroup(e)}static execute(e){return new Execute(e)}static extras(e){return new Extras(e)}static field(e){return new Field(e)}static fill(e){return new Fill(e)}static filter(e){return new Filter(e)}static float(e){return new Float(e)}static font(e){return new template_Font(e)}static format(e){return new Format(e)}static handler(e){return new Handler(e)}static hyphenation(e){return new Hyphenation(e)}static image(e){return new Image(e)}static imageEdit(e){return new ImageEdit(e)}static integer(e){return new Integer(e)}static issuers(e){return new Issuers(e)}static items(e){return new Items(e)}static keep(e){return new Keep(e)}static keyUsage(e){return new KeyUsage(e)}static line(e){return new Line(e)}static linear(e){return new Linear(e)}static lockDocument(e){return new LockDocument(e)}static manifest(e){return new Manifest(e)}static margin(e){return new Margin(e)}static mdp(e){return new Mdp(e)}static medium(e){return new Medium(e)}static message(e){return new Message(e)}static numericEdit(e){return new NumericEdit(e)}static occur(e){return new Occur(e)}static oid(e){return new Oid(e)}static oids(e){return new Oids(e)}static overflow(e){return new Overflow(e)}static pageArea(e){return new PageArea(e)}static pageSet(e){return new PageSet(e)}static para(e){return new Para(e)}static passwordEdit(e){return new PasswordEdit(e)}static pattern(e){return new template_Pattern(e)}static picture(e){return new Picture(e)}static proto(e){return new Proto(e)}static radial(e){return new Radial(e)}static reason(e){return new Reason(e)}static reasons(e){return new Reasons(e)}static rectangle(e){return new Rectangle(e)}static ref(e){return new RefElement(e)}static script(e){return new Script(e)}static setProperty(e){return new SetProperty(e)}static signData(e){return new SignData(e)}static signature(e){return new Signature(e)}static signing(e){return new Signing(e)}static solid(e){return new Solid(e)}static speak(e){return new Speak(e)}static stipple(e){return new Stipple(e)}static subform(e){return new Subform(e)}static subformSet(e){return new SubformSet(e)}static subjectDN(e){return new SubjectDN(e)}static subjectDNs(e){return new SubjectDNs(e)}static submit(e){return new Submit(e)}static template(e){return new Template(e)}static text(e){return new Text(e)}static textEdit(e){return new TextEdit(e)}static time(e){return new Time(e)}static timeStamp(e){return new TimeStamp(e)}static toolTip(e){return new ToolTip(e)}static traversal(e){return new Traversal(e)}static traverse(e){return new Traverse(e)}static ui(e){return new Ui(e)}static validate(e){return new Validate(e)}static value(e){return new Value(e)}static variables(e){return new Variables(e)}}const On=cn.datasets.id;function createText(e){const t=new Text({});t[is]=e;return t}class Binder{constructor(e){this.root=e;this.datasets=e.datasets;this.data=e.datasets?.data||new XmlObject(cn.datasets.id,"data");this.emptyMerge=0===this.data[us]().length;this.root.form=this.form=e.template[es]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){this._bindElement(this.form,this.data);return this.form}getData(){return this.data}_bindValue(e,t,i){e[as]=t;if(e[bs]())if(t[Ns]()){const i=t[Bs]();e[en](createText(i))}else if(e instanceof Field&&"multiSelect"===e.ui?.choiceList?.open){const i=t[us]().map((e=>e[is].trim())).join("\n");e[en](createText(i))}else this._isConsumeData()&&warn("XFA - Nodes haven't the same type.");else!t[Ns]()||this._isMatchTemplate()?this._bindElement(e,t):warn("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,i,a){if(!e)return null;let r,s;for(let a=0;a<3;a++){r=i[Es](e,!1,!0);for(;;){s=r.next().value;if(!s)break;if(t===s[Ns]())return s}if(i[Ys]===cn.datasets.id&&"data"===i[vs])break;i=i[ms]()}if(!a)return null;r=this.data[Es](e,!0,!1);s=r.next().value;if(s)return s;r=this.data[gs](e,!0);s=r.next().value;return s?.[Ns]()?s:null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:i,target:a,connection:r}of e.setProperty.children){if(r)continue;if(!i)continue;const s=searchNode(this.root,t,i,!1,!1);if(!s){warn(`XFA - Invalid reference: ${i}.`);continue}const[n]=s;if(!n[Gs](this.data)){warn("XFA - Invalid node: must be a data node.");continue}const o=searchNode(this.root,e,a,!1,!1);if(!o){warn(`XFA - Invalid target: ${a}.`);continue}const[g]=o;if(!g[Gs](e)){warn("XFA - Invalid target: must be a property or subproperty.");continue}const c=g[ms]();if(g instanceof SetProperty||c instanceof SetProperty){warn("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(g instanceof BindItems||c instanceof BindItems){warn("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const C=n[an](),h=g[vs];if(g instanceof XFAAttribute){const e=Object.create(null);e[h]=C;const t=Reflect.construct(Object.getPrototypeOf(c).constructor,[e]);c[h]=t[h]}else if(g.hasOwnProperty(is)){g[as]=n;g[is]=C;g[ns]()}else warn("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[Zs](t);e.items.clear();const i=new Items({}),a=new Items({});e[Vr](i);e.items.push(i);e[Vr](a);e.items.push(a);for(const{ref:r,labelRef:s,valueRef:n,connection:o}of e.bindItems.children){if(o)continue;if(!r)continue;const e=searchNode(this.root,t,r,!1,!1);if(e)for(const t of e){if(!t[Gs](this.datasets)){warn(`XFA - Invalid ref (${r}): must be a datasets child.`);continue}const e=searchNode(this.root,t,s,!0,!1);if(!e){warn(`XFA - Invalid label: ${s}.`);continue}const[o]=e;if(!o[Gs](this.datasets)){warn("XFA - Invalid label: must be a datasets child.");continue}const g=searchNode(this.root,t,n,!0,!1);if(!g){warn(`XFA - Invalid value: ${n}.`);continue}const[c]=g;if(!c[Gs](this.datasets)){warn("XFA - Invalid value: must be a datasets child.");continue}const C=createText(o[an]()),h=createText(c[an]());i[Vr](C);i.text.push(C);a[Vr](h);a.text.push(h)}else warn(`XFA - Invalid reference: ${r}.`)}}_bindOccurrences(e,t,i){let a;if(t.length>1){a=e[es]();a[Zs](a.occur);a.occur=null}this._bindValue(e,t[0],i);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const r=e[ms](),s=e[vs],n=r[Fs](e);for(let e=1,o=t.length;e<o;e++){const o=t[e],g=a[es]();r[s].push(g);r[Ss](n+e,g);this._bindValue(g,o,i);this._setProperties(g,o);this._bindItems(g,o)}}_createOccurrences(e){if(!this.emptyMerge)return;const{occur:t}=e;if(!t||t.initial<=1)return;const i=e[ms](),a=e[vs];if(!(i[a]instanceof XFAObjectArray))return;let r;r=e.name?i[a].children.filter((t=>t.name===e.name)).length:i[a].children.length;const s=i[Fs](e)+1,n=t.initial-r;if(n){const t=e[es]();t[Zs](t.occur);t.occur=null;i[a].push(t);i[Ss](s,t);for(let e=1;e<n;e++){const r=t[es]();i[a].push(r);i[Ss](s+e,r)}}}_getOccurInfo(e){const{name:t,occur:i}=e;if(!i||!t)return[1,1];const a=-1===i.max?1/0:i.max;return[i.min,a]}_setAndBind(e,t){this._setProperties(e,t);this._bindItems(e,t);this._bindElement(e,t)}_bindElement(e,t){const i=[];this._createOccurrences(e);for(const a of e[us]()){if(a[as])continue;if(void 0===this._mergeMode&&"subform"===a[vs]){this._mergeMode="consumeData"===a.mergeMode;const e=t[us]();if(e.length>0)this._bindOccurrences(a,[e[0]],null);else if(this.emptyMerge){const e=t[Ys]===On?-1:t[Ys],i=a[as]=new XmlObject(e,a.name||"root");t[Vr](i);this._bindElement(a,i)}continue}if(!a[Rs]())continue;let e=!1,r=null,s=null,n=null;if(a.bind){switch(a.bind.match){case"none":this._setAndBind(a,t);continue;case"global":e=!0;break;case"dataRef":if(!a.bind.ref){warn(`XFA - ref is empty in node ${a[vs]}.`);this._setAndBind(a,t);continue}s=a.bind.ref}a.bind.picture&&(r=a.bind.picture[is])}const[o,g]=this._getOccurInfo(a);if(s){n=searchNode(this.root,t,s,!0,!1);if(null===n){n=createDataNode(this.data,t,s);if(!n)continue;this._isConsumeData()&&(n[ts]=!0);this._setAndBind(a,n);continue}this._isConsumeData()&&(n=n.filter((e=>!e[ts])));n.length>g?n=n.slice(0,g):0===n.length&&(n=null);n&&this._isConsumeData()&&n.forEach((e=>{e[ts]=!0}))}else{if(!a.name){this._setAndBind(a,t);continue}if(this._isConsumeData()){const i=[];for(;i.length<g;){const r=this._findDataByNameToConsume(a.name,a[bs](),t,e);if(!r)break;r[ts]=!0;i.push(r)}n=i.length>0?i:null}else{n=t[Es](a.name,!1,this.emptyMerge).next().value;if(!n){if(0===o){i.push(a);continue}const e=t[Ys]===On?-1:t[Ys];n=a[as]=new XmlObject(e,a.name);this.emptyMerge&&(n[ts]=!0);t[Vr](n);this._setAndBind(a,n);continue}this.emptyMerge&&(n[ts]=!0);n=[n]}}n?this._bindOccurrences(a,n,r):o>0?this._setAndBind(a,t):i.push(a)}i.forEach((e=>e[ms]()[Zs](e)))}}class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[us]()]];for(;t.length>0;){const i=t.at(-1),[a,r]=i;if(a+1===r.length){t.pop();continue}const s=r[++i[0]],n=e.get(s[gn]);if(n)s[en](n);else{const t=s[Is]();for(const i of t.values()){const t=e.get(i[gn]);if(t){i[en](t);break}}}const o=s[us]();o.length>0&&t.push([-1,o])}const i=['<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">'];if(this.dataset)for(const e of this.dataset[us]())"data"!==e[vs]&&e[nn](i);this.data[nn](i);i.push("</xfa:datasets>");return i.join("")}}const Pn=cn.config.id;class Acrobat extends XFAObject{constructor(e){super(Pn,"acrobat",!0);this.acrobat7=null;this.autoSave=null;this.common=null;this.validate=null;this.validateApprovalSignatures=null;this.submitUrl=new XFAObjectArray}}class Acrobat7 extends XFAObject{constructor(e){super(Pn,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends OptionObject{constructor(e){super(Pn,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends OptionObject{constructor(e){super(Pn,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends Option01{constructor(e){super(Pn,"addSilentPrint")}}class AddViewerPreferences extends Option01{constructor(e){super(Pn,"addViewerPreferences")}}class AdjustData extends Option10{constructor(e){super(Pn,"adjustData")}}class AdobeExtensionLevel extends IntegerObject{constructor(e){super(Pn,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class Agent extends XFAObject{constructor(e){super(Pn,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new XFAObjectArray}}class AlwaysEmbed extends ContentObject{constructor(e){super(Pn,"alwaysEmbed")}}class Amd extends StringObject{constructor(e){super(Pn,"amd")}}class config_Area extends XFAObject{constructor(e){super(Pn,"area");this.level=getInteger({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3});this.name=getStringOption(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Attributes extends OptionObject{constructor(e){super(Pn,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends OptionObject{constructor(e){super(Pn,"autoSave",["disabled","enabled"])}}class Base extends StringObject{constructor(e){super(Pn,"base")}}class BatchOutput extends XFAObject{constructor(e){super(Pn,"batchOutput");this.format=getStringOption(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends ContentObject{constructor(e){super(Pn,"behaviorOverride")}[ns](){this[is]=new Map(this[is].trim().split(/\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class Cache extends XFAObject{constructor(e){super(Pn,"cache",!0);this.templateCache=null}}class Change extends Option01{constructor(e){super(Pn,"change")}}class Common extends XFAObject{constructor(e){super(Pn,"common",!0);this.data=null;this.locale=null;this.localeSet=null;this.messaging=null;this.suppressBanner=null;this.template=null;this.validationMessaging=null;this.versionControl=null;this.log=new XFAObjectArray}}class Compress extends XFAObject{constructor(e){super(Pn,"compress");this.scope=getStringOption(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends Option01{constructor(e){super(Pn,"compressLogicalStructure")}}class CompressObjectStream extends Option10{constructor(e){super(Pn,"compressObjectStream")}}class Compression extends XFAObject{constructor(e){super(Pn,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends XFAObject{constructor(e){super(Pn,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new XFAObjectArray}}class Conformance extends OptionObject{constructor(e){super(Pn,"conformance",["A","B"])}}class ContentCopy extends Option01{constructor(e){super(Pn,"contentCopy")}}class Copies extends IntegerObject{constructor(e){super(Pn,"copies",1,(e=>e>=1))}}class Creator extends StringObject{constructor(e){super(Pn,"creator")}}class CurrentPage extends IntegerObject{constructor(e){super(Pn,"currentPage",0,(e=>e>=0))}}class Data extends XFAObject{constructor(e){super(Pn,"data",!0);this.adjustData=null;this.attributes=null;this.incrementalLoad=null;this.outputXSL=null;this.range=null;this.record=null;this.startNode=null;this.uri=null;this.window=null;this.xsl=null;this.excludeNS=new XFAObjectArray;this.transform=new XFAObjectArray}}class Debug extends XFAObject{constructor(e){super(Pn,"debug",!0);this.uri=null}}class DefaultTypeface extends ContentObject{constructor(e){super(Pn,"defaultTypeface");this.writingScript=getStringOption(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Destination extends OptionObject{constructor(e){super(Pn,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends Option01{constructor(e){super(Pn,"documentAssembly")}}class Driver extends XFAObject{constructor(e){super(Pn,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends OptionObject{constructor(e){super(Pn,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends OptionObject{constructor(e){super(Pn,"dynamicRender",["forbidden","required"])}}class Embed extends Option01{constructor(e){super(Pn,"embed")}}class config_Encrypt extends Option01{constructor(e){super(Pn,"encrypt")}}class config_Encryption extends XFAObject{constructor(e){super(Pn,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends OptionObject{constructor(e){super(Pn,"encryptionLevel",["40bit","128bit"])}}class Enforce extends StringObject{constructor(e){super(Pn,"enforce")}}class Equate extends XFAObject{constructor(e){super(Pn,"equate");this.force=getInteger({data:e.force,defaultValue:1,validate:e=>0===e});this.from=e.from||"";this.to=e.to||""}}class EquateRange extends XFAObject{constructor(e){super(Pn,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,i=this._unicodeRange;for(let a of i.split(",").map((e=>e.trim())).filter((e=>!!e))){a=a.split("-",2).map((e=>{const i=e.match(t);return i?parseInt(i[1],16):0}));1===a.length&&a.push(a[0]);e.push(a)}return shadow(this,"unicodeRange",e)}}class Exclude extends ContentObject{constructor(e){super(Pn,"exclude")}[ns](){this[is]=this[is].trim().split(/\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class ExcludeNS extends StringObject{constructor(e){super(Pn,"excludeNS")}}class FlipLabel extends OptionObject{constructor(e){super(Pn,"flipLabel",["usePrinterSetting","on","off"])}}class config_FontInfo extends XFAObject{constructor(e){super(Pn,"fontInfo",!0);this.embed=null;this.map=null;this.subsetBelow=null;this.alwaysEmbed=new XFAObjectArray;this.defaultTypeface=new XFAObjectArray;this.neverEmbed=new XFAObjectArray}}class FormFieldFilling extends Option01{constructor(e){super(Pn,"formFieldFilling")}}class GroupParent extends StringObject{constructor(e){super(Pn,"groupParent")}}class IfEmpty extends OptionObject{constructor(e){super(Pn,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends StringObject{constructor(e){super(Pn,"includeXDPContent")}}class IncrementalLoad extends OptionObject{constructor(e){super(Pn,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends Option01{constructor(e){super(Pn,"incrementalMerge")}}class Interactive extends Option01{constructor(e){super(Pn,"interactive")}}class Jog extends OptionObject{constructor(e){super(Pn,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends XFAObject{constructor(e){super(Pn,"labelPrinter",!0);this.name=getStringOption(e.name,["zpl","dpl","ipl","tcpl"]);this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class Layout extends OptionObject{constructor(e){super(Pn,"layout",["paginate","panel"])}}class Level extends IntegerObject{constructor(e){super(Pn,"level",0,(e=>e>0))}}class Linearized extends Option01{constructor(e){super(Pn,"linearized")}}class Locale extends StringObject{constructor(e){super(Pn,"locale")}}class LocaleSet extends StringObject{constructor(e){super(Pn,"localeSet")}}class Log extends XFAObject{constructor(e){super(Pn,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends XFAObject{constructor(e){super(Pn,"map",!0);this.equate=new XFAObjectArray;this.equateRange=new XFAObjectArray}}class MediumInfo extends XFAObject{constructor(e){super(Pn,"mediumInfo",!0);this.map=null}}class config_Message extends XFAObject{constructor(e){super(Pn,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends XFAObject{constructor(e){super(Pn,"messaging",!0);this.message=new XFAObjectArray}}class Mode extends OptionObject{constructor(e){super(Pn,"mode",["append","overwrite"])}}class ModifyAnnots extends Option01{constructor(e){super(Pn,"modifyAnnots")}}class MsgId extends IntegerObject{constructor(e){super(Pn,"msgId",1,(e=>e>=1))}}class NameAttr extends StringObject{constructor(e){super(Pn,"nameAttr")}}class NeverEmbed extends ContentObject{constructor(e){super(Pn,"neverEmbed")}}class NumberOfCopies extends IntegerObject{constructor(e){super(Pn,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class OpenAction extends XFAObject{constructor(e){super(Pn,"openAction",!0);this.destination=null}}class Output extends XFAObject{constructor(e){super(Pn,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends StringObject{constructor(e){super(Pn,"outputBin")}}class OutputXSL extends XFAObject{constructor(e){super(Pn,"outputXSL",!0);this.uri=null}}class Overprint extends OptionObject{constructor(e){super(Pn,"overprint",["none","both","draw","field"])}}class Packets extends StringObject{constructor(e){super(Pn,"packets")}[ns](){"*"!==this[is]&&(this[is]=this[is].trim().split(/\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class PageOffset extends XFAObject{constructor(e){super(Pn,"pageOffset");this.x=getInteger({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0});this.y=getInteger({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class PageRange extends StringObject{constructor(e){super(Pn,"pageRange")}[ns](){const e=this[is].trim().split(/\s+/).map((e=>parseInt(e,10))),t=[];for(let i=0,a=e.length;i<a;i+=2)t.push(e.slice(i,i+2));this[is]=t}}class Pagination extends OptionObject{constructor(e){super(Pn,"pagination",["simplex","duplexShortEdge","duplexLongEdge"])}}class PaginationOverride extends OptionObject{constructor(e){super(Pn,"paginationOverride",["none","forceDuplex","forceDuplexLongEdge","forceDuplexShortEdge","forceSimplex"])}}class Part extends IntegerObject{constructor(e){super(Pn,"part",1,(e=>!1))}}class Pcl extends XFAObject{constructor(e){super(Pn,"pcl",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.pageOffset=null;this.staple=null;this.xdc=null}}class Pdf extends XFAObject{constructor(e){super(Pn,"pdf",!0);this.name=e.name||"";this.adobeExtensionLevel=null;this.batchOutput=null;this.compression=null;this.creator=null;this.encryption=null;this.fontInfo=null;this.interactive=null;this.linearized=null;this.openAction=null;this.pdfa=null;this.producer=null;this.renderPolicy=null;this.scriptModel=null;this.silentPrint=null;this.submitFormat=null;this.tagged=null;this.version=null;this.viewerPreferences=null;this.xdc=null}}class Pdfa extends XFAObject{constructor(e){super(Pn,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends XFAObject{constructor(e){super(Pn,"permissions",!0);this.accessibleContent=null;this.change=null;this.contentCopy=null;this.documentAssembly=null;this.formFieldFilling=null;this.modifyAnnots=null;this.plaintextMetadata=null;this.print=null;this.printHighQuality=null}}class PickTrayByPDFSize extends Option01{constructor(e){super(Pn,"pickTrayByPDFSize")}}class config_Picture extends StringObject{constructor(e){super(Pn,"picture")}}class PlaintextMetadata extends Option01{constructor(e){super(Pn,"plaintextMetadata")}}class Presence extends OptionObject{constructor(e){super(Pn,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends XFAObject{constructor(e){super(Pn,"present",!0);this.behaviorOverride=null;this.cache=null;this.common=null;this.copies=null;this.destination=null;this.incrementalMerge=null;this.layout=null;this.output=null;this.overprint=null;this.pagination=null;this.paginationOverride=null;this.script=null;this.validate=null;this.xdp=null;this.driver=new XFAObjectArray;this.labelPrinter=new XFAObjectArray;this.pcl=new XFAObjectArray;this.pdf=new XFAObjectArray;this.ps=new XFAObjectArray;this.submitUrl=new XFAObjectArray;this.webClient=new XFAObjectArray;this.zpl=new XFAObjectArray}}class Print extends Option01{constructor(e){super(Pn,"print")}}class PrintHighQuality extends Option01{constructor(e){super(Pn,"printHighQuality")}}class PrintScaling extends OptionObject{constructor(e){super(Pn,"printScaling",["appdefault","noScaling"])}}class PrinterName extends StringObject{constructor(e){super(Pn,"printerName")}}class Producer extends StringObject{constructor(e){super(Pn,"producer")}}class Ps extends XFAObject{constructor(e){super(Pn,"ps",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.staple=null;this.xdc=null}}class Range extends ContentObject{constructor(e){super(Pn,"range")}[ns](){this[is]=this[is].trim().split(/\s*,\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>{1===e.length&&e.push(e[0]);return e}))}}class Record extends ContentObject{constructor(e){super(Pn,"record")}[ns](){this[is]=this[is].trim();const e=parseInt(this[is],10);!isNaN(e)&&e>=0&&(this[is]=e)}}class Relevant extends ContentObject{constructor(e){super(Pn,"relevant")}[ns](){this[is]=this[is].trim().split(/\s+/)}}class Rename extends ContentObject{constructor(e){super(Pn,"rename")}[ns](){this[is]=this[is].trim();(this[is].toLowerCase().startsWith("xml")||new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*","u").test(this[is]))&&warn("XFA - Rename: invalid XFA name")}}class RenderPolicy extends OptionObject{constructor(e){super(Pn,"renderPolicy",["server","client"])}}class RunScripts extends OptionObject{constructor(e){super(Pn,"runScripts",["both","client","none","server"])}}class config_Script extends XFAObject{constructor(e){super(Pn,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends OptionObject{constructor(e){super(Pn,"scriptModel",["XFA","none"])}}class Severity extends OptionObject{constructor(e){super(Pn,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends XFAObject{constructor(e){super(Pn,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends XFAObject{constructor(e){super(Pn,"staple");this.mode=getStringOption(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends StringObject{constructor(e){super(Pn,"startNode")}}class StartPage extends IntegerObject{constructor(e){super(Pn,"startPage",0,(e=>!0))}}class SubmitFormat extends OptionObject{constructor(e){super(Pn,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends StringObject{constructor(e){super(Pn,"submitUrl")}}class SubsetBelow extends IntegerObject{constructor(e){super(Pn,"subsetBelow",100,(e=>e>=0&&e<=100))}}class SuppressBanner extends Option01{constructor(e){super(Pn,"suppressBanner")}}class Tagged extends Option01{constructor(e){super(Pn,"tagged")}}class config_Template extends XFAObject{constructor(e){super(Pn,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends OptionObject{constructor(e){super(Pn,"threshold",["trace","error","information","warning"])}}class To extends OptionObject{constructor(e){super(Pn,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends XFAObject{constructor(e){super(Pn,"templateCache");this.maxEntries=getInteger({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends XFAObject{constructor(e){super(Pn,"trace",!0);this.area=new XFAObjectArray}}class Transform extends XFAObject{constructor(e){super(Pn,"transform",!0);this.groupParent=null;this.ifEmpty=null;this.nameAttr=null;this.picture=null;this.presence=null;this.rename=null;this.whitespace=null}}class Type extends OptionObject{constructor(e){super(Pn,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends StringObject{constructor(e){super(Pn,"uri")}}class config_Validate extends OptionObject{constructor(e){super(Pn,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends ContentObject{constructor(e){super(Pn,"validateApprovalSignatures")}[ns](){this[is]=this[is].trim().split(/\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class ValidationMessaging extends OptionObject{constructor(e){super(Pn,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends OptionObject{constructor(e){super(Pn,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends XFAObject{constructor(e){super(Pn,"VersionControl");this.outputBelow=getStringOption(e.outputBelow,["warn","error","update"]);this.sourceAbove=getStringOption(e.sourceAbove,["warn","error"]);this.sourceBelow=getStringOption(e.sourceBelow,["update","maintain"])}}class ViewerPreferences extends XFAObject{constructor(e){super(Pn,"viewerPreferences",!0);this.ADBE_JSConsole=null;this.ADBE_JSDebugger=null;this.addViewerPreferences=null;this.duplexOption=null;this.enforce=null;this.numberOfCopies=null;this.pageRange=null;this.pickTrayByPDFSize=null;this.printScaling=null}}class WebClient extends XFAObject{constructor(e){super(Pn,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends OptionObject{constructor(e){super(Pn,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends ContentObject{constructor(e){super(Pn,"window")}[ns](){const e=this[is].trim().split(/\s*,\s*/,2).map((e=>parseInt(e,10)));if(e.some((e=>isNaN(e))))this[is]=[0,0];else{1===e.length&&e.push(e[0]);this[is]=e}}}class Xdc extends XFAObject{constructor(e){super(Pn,"xdc",!0);this.uri=new XFAObjectArray;this.xsl=new XFAObjectArray}}class Xdp extends XFAObject{constructor(e){super(Pn,"xdp",!0);this.packets=null}}class Xsl extends XFAObject{constructor(e){super(Pn,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends XFAObject{constructor(e){super(Pn,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[In](e,t){if(ConfigNamespace.hasOwnProperty(e))return ConfigNamespace[e](t)}static acrobat(e){return new Acrobat(e)}static acrobat7(e){return new Acrobat7(e)}static ADBE_JSConsole(e){return new ADBE_JSConsole(e)}static ADBE_JSDebugger(e){return new ADBE_JSDebugger(e)}static addSilentPrint(e){return new AddSilentPrint(e)}static addViewerPreferences(e){return new AddViewerPreferences(e)}static adjustData(e){return new AdjustData(e)}static adobeExtensionLevel(e){return new AdobeExtensionLevel(e)}static agent(e){return new Agent(e)}static alwaysEmbed(e){return new AlwaysEmbed(e)}static amd(e){return new Amd(e)}static area(e){return new config_Area(e)}static attributes(e){return new Attributes(e)}static autoSave(e){return new AutoSave(e)}static base(e){return new Base(e)}static batchOutput(e){return new BatchOutput(e)}static behaviorOverride(e){return new BehaviorOverride(e)}static cache(e){return new Cache(e)}static change(e){return new Change(e)}static common(e){return new Common(e)}static compress(e){return new Compress(e)}static compressLogicalStructure(e){return new CompressLogicalStructure(e)}static compressObjectStream(e){return new CompressObjectStream(e)}static compression(e){return new Compression(e)}static config(e){return new Config(e)}static conformance(e){return new Conformance(e)}static contentCopy(e){return new ContentCopy(e)}static copies(e){return new Copies(e)}static creator(e){return new Creator(e)}static currentPage(e){return new CurrentPage(e)}static data(e){return new Data(e)}static debug(e){return new Debug(e)}static defaultTypeface(e){return new DefaultTypeface(e)}static destination(e){return new Destination(e)}static documentAssembly(e){return new DocumentAssembly(e)}static driver(e){return new Driver(e)}static duplexOption(e){return new DuplexOption(e)}static dynamicRender(e){return new DynamicRender(e)}static embed(e){return new Embed(e)}static encrypt(e){return new config_Encrypt(e)}static encryption(e){return new config_Encryption(e)}static encryptionLevel(e){return new EncryptionLevel(e)}static enforce(e){return new Enforce(e)}static equate(e){return new Equate(e)}static equateRange(e){return new EquateRange(e)}static exclude(e){return new Exclude(e)}static excludeNS(e){return new ExcludeNS(e)}static flipLabel(e){return new FlipLabel(e)}static fontInfo(e){return new config_FontInfo(e)}static formFieldFilling(e){return new FormFieldFilling(e)}static groupParent(e){return new GroupParent(e)}static ifEmpty(e){return new IfEmpty(e)}static includeXDPContent(e){return new IncludeXDPContent(e)}static incrementalLoad(e){return new IncrementalLoad(e)}static incrementalMerge(e){return new IncrementalMerge(e)}static interactive(e){return new Interactive(e)}static jog(e){return new Jog(e)}static labelPrinter(e){return new LabelPrinter(e)}static layout(e){return new Layout(e)}static level(e){return new Level(e)}static linearized(e){return new Linearized(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static log(e){return new Log(e)}static map(e){return new MapElement(e)}static mediumInfo(e){return new MediumInfo(e)}static message(e){return new config_Message(e)}static messaging(e){return new Messaging(e)}static mode(e){return new Mode(e)}static modifyAnnots(e){return new ModifyAnnots(e)}static msgId(e){return new MsgId(e)}static nameAttr(e){return new NameAttr(e)}static neverEmbed(e){return new NeverEmbed(e)}static numberOfCopies(e){return new NumberOfCopies(e)}static openAction(e){return new OpenAction(e)}static output(e){return new Output(e)}static outputBin(e){return new OutputBin(e)}static outputXSL(e){return new OutputXSL(e)}static overprint(e){return new Overprint(e)}static packets(e){return new Packets(e)}static pageOffset(e){return new PageOffset(e)}static pageRange(e){return new PageRange(e)}static pagination(e){return new Pagination(e)}static paginationOverride(e){return new PaginationOverride(e)}static part(e){return new Part(e)}static pcl(e){return new Pcl(e)}static pdf(e){return new Pdf(e)}static pdfa(e){return new Pdfa(e)}static permissions(e){return new Permissions(e)}static pickTrayByPDFSize(e){return new PickTrayByPDFSize(e)}static picture(e){return new config_Picture(e)}static plaintextMetadata(e){return new PlaintextMetadata(e)}static presence(e){return new Presence(e)}static present(e){return new Present(e)}static print(e){return new Print(e)}static printHighQuality(e){return new PrintHighQuality(e)}static printScaling(e){return new PrintScaling(e)}static printerName(e){return new PrinterName(e)}static producer(e){return new Producer(e)}static ps(e){return new Ps(e)}static range(e){return new Range(e)}static record(e){return new Record(e)}static relevant(e){return new Relevant(e)}static rename(e){return new Rename(e)}static renderPolicy(e){return new RenderPolicy(e)}static runScripts(e){return new RunScripts(e)}static script(e){return new config_Script(e)}static scriptModel(e){return new ScriptModel(e)}static severity(e){return new Severity(e)}static silentPrint(e){return new SilentPrint(e)}static staple(e){return new Staple(e)}static startNode(e){return new StartNode(e)}static startPage(e){return new StartPage(e)}static submitFormat(e){return new SubmitFormat(e)}static submitUrl(e){return new SubmitUrl(e)}static subsetBelow(e){return new SubsetBelow(e)}static suppressBanner(e){return new SuppressBanner(e)}static tagged(e){return new Tagged(e)}static template(e){return new config_Template(e)}static templateCache(e){return new TemplateCache(e)}static threshold(e){return new Threshold(e)}static to(e){return new To(e)}static trace(e){return new Trace(e)}static transform(e){return new Transform(e)}static type(e){return new Type(e)}static uri(e){return new Uri(e)}static validate(e){return new config_Validate(e)}static validateApprovalSignatures(e){return new ValidateApprovalSignatures(e)}static validationMessaging(e){return new ValidationMessaging(e)}static version(e){return new Version(e)}static versionControl(e){return new VersionControl(e)}static viewerPreferences(e){return new ViewerPreferences(e)}static webClient(e){return new WebClient(e)}static whitespace(e){return new Whitespace(e)}static window(e){return new Window(e)}static xdc(e){return new Xdc(e)}static xdp(e){return new Xdp(e)}static xsl(e){return new Xsl(e)}static zpl(e){return new Zpl(e)}}const Wn=cn.connectionSet.id;class ConnectionSet extends XFAObject{constructor(e){super(Wn,"connectionSet",!0);this.wsdlConnection=new XFAObjectArray;this.xmlConnection=new XFAObjectArray;this.xsdConnection=new XFAObjectArray}}class EffectiveInputPolicy extends XFAObject{constructor(e){super(Wn,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends XFAObject{constructor(e){super(Wn,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends StringObject{constructor(e){super(Wn,"operation");this.id=e.id||"";this.input=e.input||"";this.name=e.name||"";this.output=e.output||"";this.use=e.use||"";this.usehref=e.usehref||""}}class RootElement extends StringObject{constructor(e){super(Wn,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends StringObject{constructor(e){super(Wn,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends StringObject{constructor(e){super(Wn,"soapAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class connection_set_Uri extends StringObject{constructor(e){super(Wn,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends StringObject{constructor(e){super(Wn,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends XFAObject{constructor(e){super(Wn,"wsdlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.effectiveInputPolicy=null;this.effectiveOutputPolicy=null;this.operation=null;this.soapAction=null;this.soapAddress=null;this.wsdlAddress=null}}class XmlConnection extends XFAObject{constructor(e){super(Wn,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends XFAObject{constructor(e){super(Wn,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[In](e,t){if(ConnectionSetNamespace.hasOwnProperty(e))return ConnectionSetNamespace[e](t)}static connectionSet(e){return new ConnectionSet(e)}static effectiveInputPolicy(e){return new EffectiveInputPolicy(e)}static effectiveOutputPolicy(e){return new EffectiveOutputPolicy(e)}static operation(e){return new Operation(e)}static rootElement(e){return new RootElement(e)}static soapAction(e){return new SoapAction(e)}static soapAddress(e){return new SoapAddress(e)}static uri(e){return new connection_set_Uri(e)}static wsdlAddress(e){return new WsdlAddress(e)}static wsdlConnection(e){return new WsdlConnection(e)}static xmlConnection(e){return new XmlConnection(e)}static xsdConnection(e){return new XsdConnection(e)}}const jn=cn.datasets.id;class datasets_Data extends XmlObject{constructor(e){super(jn,"data",e)}[xs](){return!0}}class Datasets extends XFAObject{constructor(e){super(jn,"datasets",!0);this.data=null;this.Signature=null}[Ks](e){const t=e[vs];("data"===t&&e[Ys]===jn||"Signature"===t&&e[Ys]===cn.signature.id)&&(this[t]=e);this[Vr](e)}}class DatasetsNamespace{static[In](e,t){if(DatasetsNamespace.hasOwnProperty(e))return DatasetsNamespace[e](t)}static datasets(e){return new Datasets(e)}static data(e){return new datasets_Data(e)}}const Xn=cn.localeSet.id;class CalendarSymbols extends XFAObject{constructor(e){super(Xn,"calendarSymbols",!0);this.name="gregorian";this.dayNames=new XFAObjectArray(2);this.eraNames=null;this.meridiemNames=null;this.monthNames=new XFAObjectArray(2)}}class CurrencySymbol extends StringObject{constructor(e){super(Xn,"currencySymbol");this.name=getStringOption(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends XFAObject{constructor(e){super(Xn,"currencySymbols",!0);this.currencySymbol=new XFAObjectArray(3)}}class DatePattern extends StringObject{constructor(e){super(Xn,"datePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class DatePatterns extends XFAObject{constructor(e){super(Xn,"datePatterns",!0);this.datePattern=new XFAObjectArray(4)}}class DateTimeSymbols extends ContentObject{constructor(e){super(Xn,"dateTimeSymbols")}}class Day extends StringObject{constructor(e){super(Xn,"day")}}class DayNames extends XFAObject{constructor(e){super(Xn,"dayNames",!0);this.abbr=getInteger({data:e.abbr,defaultValue:0,validate:e=>1===e});this.day=new XFAObjectArray(7)}}class Era extends StringObject{constructor(e){super(Xn,"era")}}class EraNames extends XFAObject{constructor(e){super(Xn,"eraNames",!0);this.era=new XFAObjectArray(2)}}class locale_set_Locale extends XFAObject{constructor(e){super(Xn,"locale",!0);this.desc=e.desc||"";this.name="isoname";this.calendarSymbols=null;this.currencySymbols=null;this.datePatterns=null;this.dateTimeSymbols=null;this.numberPatterns=null;this.numberSymbols=null;this.timePatterns=null;this.typeFaces=null}}class locale_set_LocaleSet extends XFAObject{constructor(e){super(Xn,"localeSet",!0);this.locale=new XFAObjectArray}}class Meridiem extends StringObject{constructor(e){super(Xn,"meridiem")}}class MeridiemNames extends XFAObject{constructor(e){super(Xn,"meridiemNames",!0);this.meridiem=new XFAObjectArray(2)}}class Month extends StringObject{constructor(e){super(Xn,"month")}}class MonthNames extends XFAObject{constructor(e){super(Xn,"monthNames",!0);this.abbr=getInteger({data:e.abbr,defaultValue:0,validate:e=>1===e});this.month=new XFAObjectArray(12)}}class NumberPattern extends StringObject{constructor(e){super(Xn,"numberPattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class NumberPatterns extends XFAObject{constructor(e){super(Xn,"numberPatterns",!0);this.numberPattern=new XFAObjectArray(4)}}class NumberSymbol extends StringObject{constructor(e){super(Xn,"numberSymbol");this.name=getStringOption(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends XFAObject{constructor(e){super(Xn,"numberSymbols",!0);this.numberSymbol=new XFAObjectArray(5)}}class TimePattern extends StringObject{constructor(e){super(Xn,"timePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class TimePatterns extends XFAObject{constructor(e){super(Xn,"timePatterns",!0);this.timePattern=new XFAObjectArray(4)}}class TypeFace extends XFAObject{constructor(e){super(Xn,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends XFAObject{constructor(e){super(Xn,"typeFaces",!0);this.typeFace=new XFAObjectArray}}class LocaleSetNamespace{static[In](e,t){if(LocaleSetNamespace.hasOwnProperty(e))return LocaleSetNamespace[e](t)}static calendarSymbols(e){return new CalendarSymbols(e)}static currencySymbol(e){return new CurrencySymbol(e)}static currencySymbols(e){return new CurrencySymbols(e)}static datePattern(e){return new DatePattern(e)}static datePatterns(e){return new DatePatterns(e)}static dateTimeSymbols(e){return new DateTimeSymbols(e)}static day(e){return new Day(e)}static dayNames(e){return new DayNames(e)}static era(e){return new Era(e)}static eraNames(e){return new EraNames(e)}static locale(e){return new locale_set_Locale(e)}static localeSet(e){return new locale_set_LocaleSet(e)}static meridiem(e){return new Meridiem(e)}static meridiemNames(e){return new MeridiemNames(e)}static month(e){return new Month(e)}static monthNames(e){return new MonthNames(e)}static numberPattern(e){return new NumberPattern(e)}static numberPatterns(e){return new NumberPatterns(e)}static numberSymbol(e){return new NumberSymbol(e)}static numberSymbols(e){return new NumberSymbols(e)}static timePattern(e){return new TimePattern(e)}static timePatterns(e){return new TimePatterns(e)}static typeFace(e){return new TypeFace(e)}static typeFaces(e){return new TypeFaces(e)}}const Zn=cn.signature.id;class signature_Signature extends XFAObject{constructor(e){super(Zn,"signature",!0)}}class SignatureNamespace{static[In](e,t){if(SignatureNamespace.hasOwnProperty(e))return SignatureNamespace[e](t)}static signature(e){return new signature_Signature(e)}}const Vn=cn.stylesheet.id;class Stylesheet extends XFAObject{constructor(e){super(Vn,"stylesheet",!0)}}class StylesheetNamespace{static[In](e,t){if(StylesheetNamespace.hasOwnProperty(e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}const _n=cn.xdp.id;class xdp_Xdp extends XFAObject{constructor(e){super(_n,"xdp",!0);this.uuid=e.uuid||"";this.timeStamp=e.timeStamp||"";this.config=null;this.connectionSet=null;this.datasets=null;this.localeSet=null;this.stylesheet=new XFAObjectArray;this.template=null}[qs](e){const t=cn[e[vs]];return t&&e[Ys]===t.id}}class XdpNamespace{static[In](e,t){if(XdpNamespace.hasOwnProperty(e))return XdpNamespace[e](t)}static xdp(e){return new xdp_Xdp(e)}}const zn=cn.xhtml.id,$n=Symbol(),Ao=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),eo=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>`scaleX(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>measureToString(.99*(e=t.fontSize=getMeasurement(e)))],["letter-spacing",e=>measureToString(getMeasurement(e))],["line-height",e=>measureToString(getMeasurement(e))],["margin",e=>measureToString(getMeasurement(e))],["margin-bottom",e=>measureToString(getMeasurement(e))],["margin-left",e=>measureToString(getMeasurement(e))],["margin-right",e=>measureToString(getMeasurement(e))],["margin-top",e=>measureToString(getMeasurement(e))],["text-indent",e=>measureToString(getMeasurement(e))],["font-family",e=>e],["vertical-align",e=>measureToString(getMeasurement(e))]]),to=/\s+/g,io=/[\r\n]+/g,ao=/\r\n?/g;function mapStyle(e,t,i){const a=Object.create(null);if(!e)return a;const r=Object.create(null);for(const[t,i]of e.split(";").map((e=>e.split(":",2)))){const e=eo.get(t);if(""===e)continue;let s=i;e&&(s="string"==typeof e?e:e(i,r));t.endsWith("scale")?a.transform=a.transform?`${a[t]} ${s}`:s:a[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=s}a.fontFamily&&setFontFamily({typeface:a.fontFamily,weight:a.fontWeight||"normal",posture:a.fontStyle||"normal",size:r.fontSize||0},t,t[ws].fontFinder,a);if(i&&a.verticalAlign&&"0px"!==a.verticalAlign&&a.fontSize){const e=.583,t=.333,i=getMeasurement(a.fontSize);a.fontSize=measureToString(i*e);a.verticalAlign=measureToString(Math.sign(getMeasurement(a.verticalAlign))*i*t)}i&&a.fontSize&&(a.fontSize=`calc(${a.fontSize} * var(--scale-factor))`);fixTextIndent(a);return a}const ro=new Set(["body","html"]);class XhtmlObject extends XmlObject{constructor(e,t){super(zn,t);this[$n]=!1;this.style=e.style||""}[zr](e){super[zr](e);this.style=function checkStyle(e){return e.style?e.style.trim().split(/\s*;\s*/).filter((e=>!!e)).map((e=>e.split(/\s*:\s*/,2))).filter((([t,i])=>{"font-family"===t&&e[ws].usedTypefaces.add(i);return Ao.has(t)})).map((e=>e.join(":"))).join(";"):""}(this)}[Xr](){return!ro.has(this[vs])}[Os](e,t=!1){if(t)this[$n]=!0;else{e=e.replaceAll(io,"");this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(to," "))}e&&(this[is]+=e)}[Ws](e,t=!0){const i=Object.create(null),a={top:NaN,bottom:NaN,left:NaN,right:NaN};let r=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":i.typeface=stripQuotes(t);break;case"font-size":i.size=getMeasurement(t);break;case"font-weight":i.weight=t;break;case"font-style":i.posture=t;break;case"letter-spacing":i.letterSpacing=getMeasurement(t);break;case"margin":const e=t.split(/ \t/).map((e=>getMeasurement(e)));switch(e.length){case 1:a.top=a.bottom=a.left=a.right=e[0];break;case 2:a.top=a.bottom=e[0];a.left=a.right=e[1];break;case 3:a.top=e[0];a.bottom=e[2];a.left=a.right=e[1];break;case 4:a.top=e[0];a.left=e[1];a.bottom=e[2];a.right=e[3]}break;case"margin-top":a.top=getMeasurement(t);break;case"margin-bottom":a.bottom=getMeasurement(t);break;case"margin-left":a.left=getMeasurement(t);break;case"margin-right":a.right=getMeasurement(t);break;case"line-height":r=getMeasurement(t)}e.pushData(i,a,r);if(this[is])e.addString(this[is]);else for(const t of this[us]())"#text"!==t[vs]?t[Ws](e):e.addString(t[is]);t&&e.popFont()}[sn](e){const t=[];this[ss]={children:t};this[_r]({});if(0===t.length&&!this[is])return HTMLResult.EMPTY;let i;i=this[$n]?this[is]?this[is].replaceAll(ao,"\n"):void 0:this[is]||void 0;return HTMLResult.success({name:this[vs],attributes:{href:this.href,style:mapStyle(this.style,this,this[$n])},children:t,value:i})}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=fixURL(e.href)||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[Ws](e){e.pushFont({weight:"bold"});super[Ws](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[sn](e){const t=super[sn](e),{html:i}=t;if(!i)return HTMLResult.EMPTY;i.name="div";i.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[an](){return"\n"}[Ws](e){e.addString("\n")}[sn](e){return HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[sn](e){const t=[];this[ss]={children:t};this[_r]({});if(0===t.length)return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[is]||""});if(1===t.length){const e=t[0];if(e.attributes?.class.includes("xfaRich"))return HTMLResult.success(e)}return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class I extends XhtmlObject{constructor(e){super(e,"i")}[Ws](e){e.pushFont({posture:"italic"});super[Ws](e);e.popFont()}}class Li extends XhtmlObject{constructor(e){super(e,"li")}}class Ol extends XhtmlObject{constructor(e){super(e,"ol")}}class P extends XhtmlObject{constructor(e){super(e,"p")}[Ws](e){super[Ws](e,!1);e.addString("\n");e.addPara();e.popFont()}[an](){return this[ms]()[us]().at(-1)===this?super[an]():super[an]()+"\n"}}class Span extends XhtmlObject{constructor(e){super(e,"span")}}class Sub extends XhtmlObject{constructor(e){super(e,"sub")}}class Sup extends XhtmlObject{constructor(e){super(e,"sup")}}class Ul extends XhtmlObject{constructor(e){super(e,"ul")}}class XhtmlNamespace{static[In](e,t){if(XhtmlNamespace.hasOwnProperty(e))return XhtmlNamespace[e](t)}static a(e){return new A(e)}static b(e){return new B(e)}static body(e){return new Body(e)}static br(e){return new Br(e)}static html(e){return new Html(e)}static i(e){return new I(e)}static li(e){return new Li(e)}static ol(e){return new Ol(e)}static p(e){return new P(e)}static span(e){return new Span(e)}static sub(e){return new Sub(e)}static sup(e){return new Sup(e)}static ul(e){return new Ul(e)}}const so={config:ConfigNamespace,connection:ConnectionSetNamespace,datasets:DatasetsNamespace,localeSet:LocaleSetNamespace,signature:SignatureNamespace,stylesheet:StylesheetNamespace,template:TemplateNamespace,xdp:XdpNamespace,xhtml:XhtmlNamespace};class UnknownNamespace{constructor(e){this.namespaceId=e}[In](e,t){return new XmlObject(this.namespaceId,e,t)}}class Root extends XFAObject{constructor(e){super(-1,"root",Object.create(null));this.element=null;this[Ds]=e}[Ks](e){this.element=e;return!0}[ns](){super[ns]();if(this.element.template instanceof Template){this[Ds].set(Vs,this.element);this.element.template[_s](this[Ds]);this.element.template[Ds]=this[Ds]}}}class Empty extends XFAObject{constructor(){super(-1,"",Object.create(null))}[Ks](e){return!1}}class Builder{constructor(e=null){this._namespaceStack=[];this._nsAgnosticLevel=0;this._namespacePrefixes=new Map;this._namespaces=new Map;this._nextNsId=Math.max(...Object.values(cn).map((({id:e})=>e)));this._currentNamespace=e||new UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:i,namespace:a,prefixes:r}){const s=null!==a;if(s){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(a)}r&&this._addNamespacePrefix(r);if(i.hasOwnProperty(Ts)){const e=so.datasets,t=i[Ts];let a=null;for(const[i,r]of Object.entries(t)){if(this._getNamespaceToUse(i)===e){a={xfa:r};break}}a?i[Ts]=a:delete i[Ts]}const n=this._getNamespaceToUse(e),o=n?.[In](t,i)||new Empty;o[xs]()&&this._nsAgnosticLevel++;(s||r||o[xs]())&&(o[As]={hasNamespace:s,prefixes:r,nsAgnostic:o[xs]()});return o}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[i,{check:a}]of Object.entries(cn))if(a(e)){t=so[i];if(t){this._namespaces.set(e,t);return t}break}t=new UnknownNamespace(++this._nextNsId);this._namespaces.set(e,t);return t}_addNamespacePrefix(e){for(const{prefix:t,value:i}of e){const e=this._searchNamespace(i);let a=this._namespacePrefixes.get(t);if(!a){a=[];this._namespacePrefixes.set(t,a)}a.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);if(t?.length>0)return t.at(-1);warn(`Unknown namespace prefix: ${e}.`);return null}clean(e){const{hasNamespace:t,prefixes:i,nsAgnostic:a}=e;t&&(this._currentNamespace=this._namespaceStack.pop());i&&i.forEach((({prefix:e})=>{this._namespacePrefixes.get(e).pop()}));a&&this._nsAgnosticLevel--}}class XFAParser extends XMLParserBase{constructor(e=null,t=!1){super();this._builder=new Builder(e);this._stack=[];this._globalData={usedTypefaces:new Set};this._ids=new Map;this._current=this._builder.buildRoot(this._ids);this._errorCode=xr;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g;this._richText=t}parse(e){this.parseXml(e);if(this._errorCode===xr){this._current[ns]();return this._current.element}}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" "));this._richText||this._current[Xr]()?this._current[Os](e,this._richText):this._whiteRegex.test(e)||this._current[Os](e.trim())}onCdata(e){this._current[Os](e)}_mkAttributes(e,t){let i=null,a=null;const r=Object.create({});for(const{name:s,value:n}of e)if("xmlns"===s)i?warn(`XFA - multiple namespace definition in <${t}>`):i=n;else if(s.startsWith("xmlns:")){const e=s.substring(6);a||(a=[]);a.push({prefix:e,value:n})}else{const e=s.indexOf(":");if(-1===e)r[s]=n;else{let t=r[Ts];t||(t=r[Ts]=Object.create(null));const[i,a]=[s.slice(0,e),s.slice(e+1)];(t[i]||=Object.create(null))[a]=n}}return[i,a,r]}_getNameAndPrefix(e,t){const i=e.indexOf(":");return-1===i?[e,null]:[e.substring(i+1),t?"":e.substring(0,i)]}onBeginElement(e,t,i){const[a,r,s]=this._mkAttributes(t,e),[n,o]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),g=this._builder.build({nsPrefix:o,name:n,attributes:s,namespace:a,prefixes:r});g[ws]=this._globalData;if(i){g[ns]();this._current[Ks](g)&&g[$s](this._ids);g[zr](this._builder)}else{this._stack.push(this._current);this._current=g}}onEndElement(e){const t=this._current;if(t[ks]()&&"string"==typeof t[is]){const e=new XFAParser;e._globalData=this._globalData;const i=e.parse(t[is]);t[is]=null;t[Ks](i)}t[ns]();this._current=this._stack.pop();this._current[Ks](t)&&t[$s](this._ids);t[zr](this._builder)}onError(e){this._errorCode=e}}class XFAFactory{constructor(e){try{this.root=(new XFAParser).parse(XFAFactory._createDocument(e));const t=new Binder(this.root);this.form=t.bind();this.dataHandler=new DataHandler(this.root,t.getData());this.form[ws].template=this.form}catch(e){warn(`XFA - an error occurred during parsing and binding: ${e}`)}}isValid(){return this.root&&this.form}_createPagesHelper(){const e=this.form[rn]();return new Promise(((t,i)=>{const nextIteration=()=>{try{const i=e.next();i.done?t(i.value):setTimeout(nextIteration,0)}catch(e){i(e)}};setTimeout(nextIteration,0)}))}async _createPages(){try{this.pages=await this._createPagesHelper();this.dims=this.pages.children.map((e=>{const{width:t,height:i}=e.attributes.style;return[0,0,parseInt(t),parseInt(i)]}))}catch(e){warn(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){this.pages||await this._createPages();return this.dims.length}setImages(e){this.form[ws].images=e}setFonts(e){this.form[ws].fontFinder=new FontFinder(e);const t=[];for(let e of this.form[ws].usedTypefaces){e=stripQuotes(e);this.form[ws].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[ws].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;this.pages=null;return e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new XFAParser(XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[vs])){const e=XhtmlNamespace.body({});e[Vr](t);t=e}const i=t[sn]();if(!i.success)return null;const{html:a}=i,{attributes:r}=a;if(r){r.class&&(r.class=r.class.filter((e=>!e.startsWith("xfa"))));r.dir="auto"}return{html:a,str:t[an]()}}catch(e){warn(`XFA - an error occurred during parsing of rich text: ${e}`)}return null}}class AnnotationFactory{static createGlobals(e){return Promise.all([e.ensureCatalog("acroForm"),e.ensureDoc("xfaDatasets"),e.ensureCatalog("structTreeRoot"),e.ensureCatalog("baseUrl"),e.ensureCatalog("attachments")]).then((([t,i,a,r,s])=>({pdfManager:e,acroForm:t instanceof Dict?t:Dict.empty,xfaDatasets:i,structTreeRoot:a,baseUrl:r,attachments:s})),(e=>{warn(`createGlobals: "${e}".`);return null}))}static async create(e,t,i,a,r,s){const n=r?await this._getPageIndex(e,t,i.pdfManager):null;return i.pdfManager.ensure(this,"_create",[e,t,i,a,r,n,s])}static _create(e,t,i,a,r=!1,s=null,n=null){const o=e.fetchIfRef(t);if(!(o instanceof Dict))return;const{acroForm:g,pdfManager:c}=i,C=t instanceof Ref?t.toString():`annot_${a.createObjId()}`;let h=o.get("Subtype");h=h instanceof Name?h.name:null;const l={xref:e,ref:t,dict:o,subtype:h,id:C,annotationGlobals:i,collectFields:r,needAppearances:!r&&!0===g.get("NeedAppearances"),pageIndex:s,evaluatorOptions:c.evaluatorOptions,pageRef:n};switch(h){case"Link":return new LinkAnnotation(l);case"Text":return new TextAnnotation(l);case"Widget":let e=getInheritableProperty({dict:o,key:"FT"});e=e instanceof Name?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(l);case"Btn":return new ButtonWidgetAnnotation(l);case"Ch":return new ChoiceWidgetAnnotation(l);case"Sig":return new SignatureWidgetAnnotation(l)}warn(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(l);case"Popup":return new PopupAnnotation(l);case"FreeText":return new FreeTextAnnotation(l);case"Line":return new LineAnnotation(l);case"Square":return new SquareAnnotation(l);case"Circle":return new CircleAnnotation(l);case"PolyLine":return new PolylineAnnotation(l);case"Polygon":return new PolygonAnnotation(l);case"Caret":return new CaretAnnotation(l);case"Ink":return new InkAnnotation(l);case"Highlight":return new HighlightAnnotation(l);case"Underline":return new UnderlineAnnotation(l);case"Squiggly":return new SquigglyAnnotation(l);case"StrikeOut":return new StrikeOutAnnotation(l);case"Stamp":return new StampAnnotation(l);case"FileAttachment":return new FileAttachmentAnnotation(l);default:r||warn(h?`Unimplemented annotation type "${h}", falling back to base annotation.`:"Annotation is missing the required /Subtype.");return new Annotation(l)}}static async _getPageIndex(e,t,i){try{const a=await e.fetchIfRefAsync(t);if(!(a instanceof Dict))return-1;const r=a.getRaw("P");if(r instanceof Ref)try{return await i.ensureCatalog("getPageIndex",[r])}catch(e){info(`_getPageIndex -- not a valid page reference: "${e}".`)}if(a.has("Kids"))return-1;const s=await i.ensureDoc("numPages");for(let e=0;e<s;e++){const a=await i.getPage(e),r=await i.ensure(a,"annotations");for(const i of r)if(i instanceof Ref&&isRefsEqual(i,t))return e}}catch(e){warn(`_getPageIndex: "${e}".`)}return-1}static generateImages(e,t,i){if(!i){warn("generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.");return null}let a;for(const{bitmapId:i,bitmap:r}of e)if(r){a||=new Map;a.set(i,StampAnnotation.createImage(r,t))}return a}static async saveNewAnnotations(e,t,i,a){const r=e.xref;let s;const n=[],o=[],{isOffscreenCanvasSupported:g}=e.options;for(const c of i)if(!c.deleted)switch(c.annotationType){case d:if(!s){const e=new Dict(r);e.set("BaseFont",Name.get("Helvetica"));e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("Type1"));e.set("Encoding",Name.get("WinAnsiEncoding"));const t=[];s=r.getNewTemporaryRef();await writeObject(s,e,t,r);n.push({ref:s,data:t.join("")})}o.push(FreeTextAnnotation.createNewAnnotation(r,c,n,{evaluator:e,task:t,baseFontRef:s}));break;case f:c.quadPoints?o.push(HighlightAnnotation.createNewAnnotation(r,c,n)):o.push(InkAnnotation.createNewAnnotation(r,c,n));break;case m:o.push(InkAnnotation.createNewAnnotation(r,c,n));break;case p:if(!g)break;const i=await a.get(c.bitmapId);if(i.imageStream){const{imageStream:e,smaskStream:t}=i,a=[];if(t){const i=r.getNewTemporaryRef();await writeObject(i,t,a,r);n.push({ref:i,data:a.join("")});e.dict.set("SMask",i);a.length=0}const s=i.imageRef=r.getNewTemporaryRef();await writeObject(s,e,a,r);n.push({ref:s,data:a.join("")});i.imageStream=i.smaskStream=null}o.push(StampAnnotation.createNewAnnotation(r,c,n,{image:i}))}return{annotations:await Promise.all(o),dependencies:n}}static async printNewAnnotations(e,t,i,a,r){if(!a)return null;const{options:s,xref:n}=t,o=[];for(const g of a)if(!g.deleted)switch(g.annotationType){case d:o.push(FreeTextAnnotation.createNewPrintAnnotation(e,n,g,{evaluator:t,task:i,evaluatorOptions:s}));break;case f:g.quadPoints?o.push(HighlightAnnotation.createNewPrintAnnotation(e,n,g,{evaluatorOptions:s})):o.push(InkAnnotation.createNewPrintAnnotation(e,n,g,{evaluatorOptions:s}));break;case m:o.push(InkAnnotation.createNewPrintAnnotation(e,n,g,{evaluatorOptions:s}));break;case p:if(!s.isOffscreenCanvasSupported)break;const a=await r.get(g.bitmapId);if(a.imageStream){const{imageStream:e,smaskStream:t}=a;t&&e.dict.set("SMask",t);a.imageRef=new JpegStream(e,e.length);a.imageStream=a.smaskStream=null}o.push(StampAnnotation.createNewPrintAnnotation(e,n,g,{image:a,evaluatorOptions:s}))}return Promise.all(o)}}function getRgbColor(e,t=new Uint8ClampedArray(3)){if(!Array.isArray(e))return t;const i=t||new Uint8ClampedArray(3);switch(e.length){case 0:return null;case 1:ColorSpace.singletons.gray.getRgbItem(e,0,i,0);return i;case 3:ColorSpace.singletons.rgb.getRgbItem(e,0,i,0);return i;case 4:ColorSpace.singletons.cmyk.getRgbItem(e,0,i,0);return i;default:return t}}function getPdfColorArray(e){return Array.from(e,(e=>e/255))}function getQuadPoints(e,t){const i=e.getArray("QuadPoints");if(!isNumberArray(i,null)||0===i.length||i.length%8>0)return null;const a=new Float32Array(i.length);for(let e=0,r=i.length;e<r;e+=8){const[r,s,n,o,g,c,C,h]=i.slice(e,e+8),l=Math.min(r,n,g,C),Q=Math.max(r,n,g,C),E=Math.min(s,o,c,h),u=Math.max(s,o,c,h);if(null!==t&&(l<t[0]||Q>t[2]||E<t[1]||u>t[3]))return null;a.set([l,u,Q,u,l,E,Q,E],e)}return a}function getTransformMatrix(e,t,i){const[a,r,s,n]=Util.getAxialAlignedBoundingBox(t,i);if(a===s||r===n)return[1,0,0,1,e[0],e[1]];const o=(e[2]-e[0])/(s-a),g=(e[3]-e[1])/(n-r);return[o,0,0,g,e[0]-a*o,e[1]-r*g]}class Annotation{constructor(e){const{dict:t,xref:i,annotationGlobals:a}=e;this.setTitle(t.get("T"));this.setContents(t.get("Contents"));this.setModificationDate(t.get("M"));this.setFlags(t.get("F"));this.setRectangle(t.getArray("Rect"));this.setColor(t.getArray("C"));this.setBorderStyle(t);this.setAppearance(t);this.setOptionalContent(t);const r=t.get("MK");this.setBorderAndBackgroundColors(r);this.setRotation(r,t);this.ref=e.ref instanceof Ref?e.ref:null;this._streams=[];this.appearance&&this._streams.push(this.appearance);const s=!!(this.flags&tA),n=!!(this.flags&iA);if(a.structTreeRoot){let i=t.get("StructParent");i=Number.isInteger(i)&&i>=0?i:-1;a.structTreeRoot.addAnnotationIdToPage(e.pageRef,i)}this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,backgroundColor:this.backgroundColor,borderColor:this.borderColor,rotation:this.rotation,contentsObj:this._contents,hasAppearance:!!this.appearance,id:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype,hasOwnCanvas:!1,noRotate:!!(this.flags&AA),noHTML:s&&n};if(e.collectFields){const a=t.get("Kids");if(Array.isArray(a)){const e=[];for(const t of a)t instanceof Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=collectActions(i,t,fA);this.data.fieldName=this._constructFieldName(t);this.data.pageIndex=e.pageIndex}this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported;this._fallbackFontDict=null;this._needAppearances=!1}_hasFlag(e,t){return!!(e&t)}_isViewable(e){return!this._hasFlag(e,_)&&!this._hasFlag(e,eA)}_isPrintable(e){return this._hasFlag(e,$)&&!this._hasFlag(e,z)&&!this._hasFlag(e,_)}mustBeViewed(e,t){const i=e?.get(this.data.id)?.noView;return void 0!==i?!i:this.viewable&&!this._hasFlag(this.flags,z)}mustBePrinted(e){const t=e?.get(this.data.id)?.noPrint;return void 0!==t?!t:this.printable}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&(0!==this.flags&&this._isPrintable(this.flags))}_parseStringHelper(e){const t="string"==typeof e?stringToPDFString(e):"";return{str:t,dir:t&&"rtl"===bidi(t).dir?"rtl":"ltr"}}setDefaultAppearance(e){const{dict:t,annotationGlobals:i}=e,a=getInheritableProperty({dict:t,key:"DA"})||i.acroForm.get("DA");this._defaultAppearance="string"==typeof a?a:"";this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0;this.flags&_&&"Annotation"!==this.constructor.name&&(this.flags^=_)}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=lookupNormalRect(e,[0,0,0,0])}setColor(e){this.color=getRgbColor(e)}setLineEndings(e){this.lineEndings=["None","None"];if(Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const i=e[t];if(i instanceof Name)switch(i.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=i.name;continue}warn(`Ignoring invalid lineEnding: ${i}`)}}setRotation(e,t){this.rotation=0;let i=e instanceof Dict?e.get("R")||0:t.get("Rotate")||0;if(Number.isInteger(i)&&0!==i){i%=360;i<0&&(i+=360);i%90==0&&(this.rotation=i)}}setBorderAndBackgroundColors(e){if(e instanceof Dict){this.borderColor=getRgbColor(e.getArray("BC"),null);this.backgroundColor=getRgbColor(e.getArray("BG"),null)}else this.borderColor=this.backgroundColor=null}setBorderStyle(e){this.borderStyle=new AnnotationBorderStyle;if(e instanceof Dict)if(e.has("BS")){const t=e.get("BS");if(t instanceof Dict){const e=t.get("Type");if(!e||isName(e,"Border")){this.borderStyle.setWidth(t.get("W"),this.rectangle);this.borderStyle.setStyle(t.get("S"));this.borderStyle.setDashArray(t.getArray("D"))}}}else if(e.has("Border")){const t=e.getArray("Border");if(Array.isArray(t)&&t.length>=3){this.borderStyle.setHorizontalCornerRadius(t[0]);this.borderStyle.setVerticalCornerRadius(t[1]);this.borderStyle.setWidth(t[2],this.rectangle);4===t.length&&this.borderStyle.setDashArray(t[3],!0)}}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(t instanceof Dict))return;const i=t.get("N");if(i instanceof BaseStream){this.appearance=i;return}if(!(i instanceof Dict))return;const a=e.get("AS");if(!(a instanceof Name&&i.has(a.name)))return;const r=i.get(a.name);r instanceof BaseStream&&(this.appearance=r)}setOptionalContent(e){this.oc=null;const t=e.get("OC");t instanceof Name?warn("setOptionalContent: Support for /Name-entry is not implemented."):t instanceof Dict&&(this.oc=t)}loadResources(e,t){return t.dict.getAsync("Resources").then((t=>{if(!t)return;return new ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}async getOperatorList(e,t,i,r,s){const{hasOwnCanvas:n,id:o,rect:g}=this.data;let C=this.appearance;const h=!!(n&&i&c);if(h&&(g[0]===g[2]||g[1]===g[3])){this.data.hasOwnCanvas=!1;return{opList:new OperatorList,separateForm:!1,separateCanvas:!1}}if(!C){if(!h)return{opList:new OperatorList,separateForm:!1,separateCanvas:!1};C=new StringStream("");C.dict=new Dict}const l=C.dict,Q=await this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],C),E=lookupRect(l.getArray("BBox"),[0,0,1,1]),u=lookupMatrix(l.getArray("Matrix"),a),d=getTransformMatrix(g,E,u),f=new OperatorList;let p;this.oc&&(p=await e.parseMarkedContentProps(this.oc,null));void 0!==p&&f.addOp(ve,["OC",p]);f.addOp(Xe,[o,g,d,u,h]);await e.getOperatorList({stream:C,task:t,resources:Q,operatorList:f,fallbackFontDict:this._fallbackFontDict});f.addOp(Ze,[]);void 0!==p&&f.addOp(Te,[]);this.reset();return{opList:f,separateForm:!1,separateCanvas:h}}async save(e,t,i){return null}get hasTextContent(){return!1}async extractTextContent(e,t,i){if(!this.appearance)return;const a=await this.loadResources(["ExtGState","Font","Properties","XObject"],this.appearance),r=[],s=[];let n=null;const o={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)if(void 0!==t.str){n||=t.transform.slice(-2);s.push(t.str);if(t.hasEOL){r.push(s.join("").trimEnd());s.length=0}}}};await e.getTextContent({stream:this.appearance,task:t,resources:a,includeMarkedContent:!0,keepWhiteSpace:!0,sink:o,viewBox:i});this.reset();s.length&&r.push(s.join("").trimEnd());if(r.length>1||r[0]){const e=this.appearance.dict,t=lookupRect(e.getArray("BBox"),null),i=lookupMatrix(e.getArray("Matrix"),null);this.data.textPosition=this._transformPoint(n,t,i);this.data.textContent=r}}_transformPoint(e,t,i){const{rect:a}=this.data;t||=[0,0,1,1];i||=[1,0,0,1,0,0];const r=getTransformMatrix(a,t,i);r[4]-=a[0];r[5]-=a[1];e=Util.applyTransform(e,r);return Util.applyTransform(e,i)}getFieldObject(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex,rotation:this.rotation}:null}reset(){for(const e of this._streams)e.reset()}_constructFieldName(e){if(!e.has("T")&&!e.has("Parent")){warn("Unknown field name, falling back to empty field name.");return""}if(!e.has("Parent"))return stringToPDFString(e.get("T"));const t=[];e.has("T")&&t.unshift(stringToPDFString(e.get("T")));let i=e;const a=new RefSet;e.objId&&a.put(e.objId);for(;i.has("Parent");){i=i.get("Parent");if(!(i instanceof Dict)||i.objId&&a.has(i.objId))break;i.objId&&a.put(i.objId);i.has("T")&&t.unshift(stringToPDFString(i.get("T")))}return t.join(".")}}class AnnotationBorderStyle{constructor(){this.width=1;this.style=BA;this.dashArray=[3];this.horizontalCornerRadius=0;this.verticalCornerRadius=0}setWidth(e,t=[0,0,0,0]){if(e instanceof Name)this.width=0;else if("number"==typeof e){if(e>0){const i=(t[2]-t[0])/2,a=(t[3]-t[1])/2;if(i>0&&a>0&&(e>i||e>a)){warn(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if(e instanceof Name)switch(e.name){case"S":this.style=BA;break;case"D":this.style=QA;break;case"B":this.style=EA;break;case"I":this.style=uA;break;case"U":this.style=dA}}setDashArray(e,t=!1){if(Array.isArray(e)){let i=!0,a=!0;for(const t of e){if(!(+t>=0)){i=!1;break}t>0&&(a=!1)}if(0===e.length||i&&!a){this.dashArray=e;t&&this.setStyle(Name.get("D"))}else this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}class MarkupAnnotation extends Annotation{constructor(e){super(e);const{dict:t}=e;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof Ref?e.toString():null;const i=t.get("RT");this.data.replyType=i instanceof Name?i.name:V}let i=null;if(this.data.replyType===Z){const e=t.get("IRT");this.setTitle(e.get("T"));this.data.titleObj=this._title;this.setContents(e.get("Contents"));this.data.contentsObj=this._contents;if(e.has("CreationDate")){this.setCreationDate(e.get("CreationDate"));this.data.creationDate=this.creationDate}else this.data.creationDate=null;if(e.has("M")){this.setModificationDate(e.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;i=e.getRaw("Popup");if(e.has("C")){this.setColor(e.getArray("C"));this.data.color=this.color}else this.data.color=null}else{this.data.titleObj=this._title;this.setCreationDate(t.get("CreationDate"));this.data.creationDate=this.creationDate;i=t.getRaw("Popup");t.has("C")||(this.data.color=null)}this.data.popupRef=i instanceof Ref?i.toString():null;t.has("RC")&&(this.data.richText=XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance({xref:e,extra:t,strokeColor:i,fillColor:a,blendMode:r,strokeAlpha:s,fillAlpha:n,pointsCallback:o}){let g=Number.MAX_VALUE,c=Number.MAX_VALUE,C=Number.MIN_VALUE,h=Number.MIN_VALUE;const l=["q"];t&&l.push(t);i&&l.push(`${i[0]} ${i[1]} ${i[2]} RG`);a&&l.push(`${a[0]} ${a[1]} ${a[2]} rg`);let Q=this.data.quadPoints;Q||(Q=Float32Array.from([this.rectangle[0],this.rectangle[3],this.rectangle[2],this.rectangle[3],this.rectangle[0],this.rectangle[1],this.rectangle[2],this.rectangle[1]]));for(let e=0,t=Q.length;e<t;e+=8){const[t,i,a,r]=o(l,Q.subarray(e,e+8));g=Math.min(g,t);C=Math.max(C,i);c=Math.min(c,a);h=Math.max(h,r)}l.push("Q");const E=new Dict(e),u=new Dict(e);u.set("Subtype",Name.get("Form"));const d=new StringStream(l.join(" "));d.dict=u;E.set("Fm0",d);const f=new Dict(e);r&&f.set("BM",Name.get(r));"number"==typeof s&&f.set("CA",s);"number"==typeof n&&f.set("ca",n);const p=new Dict(e);p.set("GS0",f);const m=new Dict(e);m.set("ExtGState",p);m.set("XObject",E);const y=new Dict(e);y.set("Resources",m);const w=this.data.rect=[g,c,C,h];y.set("BBox",w);this.appearance=new StringStream("/GS0 gs /Fm0 Do");this.appearance.dict=y;this._streams.push(this.appearance,d)}static async createNewAnnotation(e,t,i,a){const r=t.ref||=e.getNewTemporaryRef(),s=await this.createNewAppearanceStream(t,e,a),n=[];let o;if(s){const a=e.getNewTemporaryRef();o=this.createNewDict(t,e,{apRef:a});await writeObject(a,s,n,e);i.push({ref:a,data:n.join("")})}else o=this.createNewDict(t,e,{});Number.isInteger(t.parentTreeId)&&o.set("StructParent",t.parentTreeId);n.length=0;await writeObject(r,o,n,e);return{ref:r,data:n.join("")}}static async createNewPrintAnnotation(e,t,i,a){const r=await this.createNewAppearanceStream(i,t,a),s=this.createNewDict(i,t,{ap:r}),n=new this.prototype.constructor({dict:s,xref:t,annotationGlobals:e,evaluatorOptions:a.evaluatorOptions});i.ref&&(n.ref=n.refToReplace=i.ref);return n}}class WidgetAnnotation extends Annotation{constructor(e){super(e);const{dict:t,xref:i,annotationGlobals:a}=e,r=this.data;this._needAppearances=e.needAppearances;r.annotationType=X;void 0===r.fieldName&&(r.fieldName=this._constructFieldName(t));void 0===r.actions&&(r.actions=collectActions(i,t,fA));let s=getInheritableProperty({dict:t,key:"V",getArray:!0});r.fieldValue=this._decodeFormValue(s);const n=getInheritableProperty({dict:t,key:"DV",getArray:!0});r.defaultFieldValue=this._decodeFormValue(n);if(void 0===s&&a.xfaDatasets){const e=this._title.str;if(e){this._hasValueFromXFA=!0;r.fieldValue=s=a.xfaDatasets.getValue(e)}}void 0===s&&null!==r.defaultFieldValue&&(r.fieldValue=r.defaultFieldValue);r.alternativeText=stringToPDFString(t.get("TU")||"");this.setDefaultAppearance(e);r.hasAppearance||=this._needAppearances&&void 0!==r.fieldValue&&null!==r.fieldValue;const o=getInheritableProperty({dict:t,key:"FT"});r.fieldType=o instanceof Name?o.name:null;const g=getInheritableProperty({dict:t,key:"DR"}),c=a.acroForm.get("DR"),C=this.appearance?.dict.get("Resources");this._fieldResources={localResources:g,acroFormResources:c,appearanceResources:C,mergedResources:Dict.merge({xref:i,dictArray:[g,C,c],mergeSubDicts:!0})};r.fieldFlags=getInheritableProperty({dict:t,key:"Ff"});(!Number.isInteger(r.fieldFlags)||r.fieldFlags<0)&&(r.fieldFlags=0);r.readOnly=this.hasFieldFlag(aA);r.required=this.hasFieldFlag(rA);r.hidden=this._hasFlag(r.annotationFlags,z)||this._hasFlag(r.annotationFlags,eA)}_decodeFormValue(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>stringToPDFString(e))):e instanceof Name?stringToPDFString(e.name):"string"==typeof e?stringToPDFString(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}_isViewable(e){return!0}mustBeViewed(e,t){return t?this.viewable:super.mustBeViewed(e,t)&&!this._hasFlag(this.flags,eA)}getRotationMatrix(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(0===t)return a;return getRotationMatrix(t,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1])}getBorderAndBackgroundAppearances(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(!this.backgroundColor&&!this.borderColor)return"";const i=this.data.rect[2]-this.data.rect[0],a=this.data.rect[3]-this.data.rect[1],r=0===t||180===t?`0 0 ${i} ${a} re`:`0 0 ${a} ${i} re`;let s="";this.backgroundColor&&(s=`${getPdfColor(this.backgroundColor,!0)} ${r} f `);if(this.borderColor){s+=`${this.borderStyle.width||1} w ${getPdfColor(this.borderColor,!1)} ${r} S `}return s}async getOperatorList(e,t,i,a,r){if(a&&!(this instanceof SignatureWidgetAnnotation)&&!this.data.noHTML&&!this.data.hasOwnCanvas)return{opList:new OperatorList,separateForm:!0,separateCanvas:!1};if(!this._hasText)return super.getOperatorList(e,t,i,a,r);const s=await this._getAppearance(e,t,i,r);if(this.appearance&&null===s)return super.getOperatorList(e,t,i,a,r);const n=new OperatorList;if(!this._defaultAppearance||null===s)return{opList:n,separateForm:!1,separateCanvas:!1};const o=!!(this.data.hasOwnCanvas&&i&c),g=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],C=getTransformMatrix(this.data.rect,g,[1,0,0,1,0,0]);let h;this.oc&&(h=await e.parseMarkedContentProps(this.oc,null));void 0!==h&&n.addOp(ve,["OC",h]);n.addOp(Xe,[this.data.id,this.data.rect,C,this.getRotationMatrix(r),o]);const l=new StringStream(s);await e.getOperatorList({stream:l,task:t,resources:this._fieldResources.mergedResources,operatorList:n});n.addOp(Ze,[]);void 0!==h&&n.addOp(Te,[]);return{opList:n,separateForm:!1,separateCanvas:o}}_getMKDict(e){const t=new Dict(null);e&&t.set("R",e);this.borderColor&&t.set("BC",getPdfColorArray(this.borderColor));this.backgroundColor&&t.set("BG",getPdfColorArray(this.backgroundColor));return t.size>0?t:null}amendSavedDict(e,t){}async save(e,t,i){const r=i?.get(this.data.id);let s=r?.value,n=r?.rotation;if(s===this.data.fieldValue||void 0===s){if(!this._hasValueFromXFA&&void 0===n)return null;s||=this.data.fieldValue}if(void 0===n&&!this._hasValueFromXFA&&Array.isArray(s)&&Array.isArray(this.data.fieldValue)&&s.length===this.data.fieldValue.length&&s.every(((e,t)=>e===this.data.fieldValue[t])))return null;void 0===n&&(n=this.rotation);let o=null;if(!this._needAppearances){o=await this._getAppearance(e,t,h,i);if(null===o)return null}let g=!1;if(o?.needAppearances){g=!0;o=null}const{xref:c}=e,C=c.fetchIfRef(this.ref);if(!(C instanceof Dict))return null;const l=new Dict(c);for(const e of C.getKeys())"AP"!==e&&l.set(e,C.getRaw(e));const Q={path:this.data.fieldName,value:s},encoder=e=>isAscii(e)?e:stringToUTF16String(e,!0);l.set("V",Array.isArray(s)?s.map(encoder):encoder(s));this.amendSavedDict(i,l);const E=this._getMKDict(n);E&&l.set("MK",E);const u=[],d=[{ref:this.ref,data:"",xfa:Q,needAppearances:g}];if(null!==o){const e=c.getNewTemporaryRef(),t=new Dict(c);l.set("AP",t);t.set("N",e);const r=this._getSaveFieldResources(c),s=new StringStream(o),n=s.dict=new Dict(c);n.set("Subtype",Name.get("Form"));n.set("Resources",r);n.set("BBox",[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]]);const g=this.getRotationMatrix(i);g!==a&&n.set("Matrix",g);await writeObject(e,s,u,c);d.push({ref:e,data:u.join(""),xfa:null,needAppearances:!1});u.length=0}l.set("M",`D:${getModificationDate()}`);await writeObject(this.ref,l,u,c);d[0].data=u.join("");return d}async _getAppearance(e,t,i,a){if(this.hasFieldFlag(nA))return null;const r=a?.get(this.data.id);let s,n;if(r){s=r.formattedValue||r.value;n=r.rotation}if(void 0===n&&void 0===s&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const g=this.getBorderAndBackgroundAppearances(a);if(void 0===s){s=this.data.fieldValue;if(!s)return`/Tx BMC q ${g}Q EMC`}Array.isArray(s)&&1===s.length&&(s=s[0]);assert("string"==typeof s,"Expected `value` to be a string.");s=s.trim();if(this.data.combo){const e=this.data.options.find((({exportValue:e})=>s===e));s=e?.displayValue||s}if(""===s)return`/Tx BMC q ${g}Q EMC`;void 0===n&&(n=this.rotation);let c,C=-1;if(this.data.multiLine){c=s.split(/\r\n?|\n/).map((e=>e.normalize("NFC")));C=c.length}else c=[s.replace(/\r\n?|\n/,"").normalize("NFC")];let l=this.data.rect[3]-this.data.rect[1],Q=this.data.rect[2]-this.data.rect[0];90!==n&&270!==n||([Q,l]=[l,Q]);this._defaultAppearance||(this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let E,u,d,f=await WidgetAnnotation._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const p=[];let m=!1;for(const e of c){const t=f.encodeString(e);t.length>1&&(m=!0);p.push(t.join(""))}if(m&&i&h)return{needAppearances:!0};if(m&&this._isOffscreenCanvasSupported){const i=this.data.comb?"monospace":"sans-serif",a=new FakeUnicodeFont(e.xref,i),r=a.createFontResources(c.join("")),n=r.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const e=this._fieldResources.mergedResources.get("Font");for(const t of n.getKeys())e.set(t,n.getRaw(t))}else this._fieldResources.mergedResources.set("Font",n);const o=a.fontName.name;f=await WidgetAnnotation._getFontData(e,t,{fontName:o,fontSize:0},r);for(let e=0,t=p.length;e<t;e++)p[e]=stringToUTF16String(c[e]);const g=Object.assign(Object.create(null),this.data.defaultAppearanceData);this.data.defaultAppearanceData.fontSize=0;this.data.defaultAppearanceData.fontName=o;[E,u,d]=this._computeFontSize(l-2,Q-4,s,f,C);this.data.defaultAppearanceData=g}else{this._isOffscreenCanvasSupported||warn("_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.");[E,u,d]=this._computeFontSize(l-2,Q-4,s,f,C)}let y=f.descent;y=isNaN(y)?o*d:Math.max(o*d,Math.abs(y)*u);const w=Math.min(Math.floor((l-u)/2),1),b=this.data.textAlignment;if(this.data.multiLine)return this._getMultilineAppearance(E,p,f,u,Q,l,b,2,w,y,d,a);if(this.data.comb)return this._getCombAppearance(E,f,p[0],u,Q,l,2,w,y,d,a);const D=w+y;if(0===b||b>2)return`/Tx BMC q ${g}BT `+E+` 1 0 0 1 ${numberToString(2)} ${numberToString(D)} Tm (${escapeString(p[0])}) Tj ET Q EMC`;return`/Tx BMC q ${g}BT `+E+` 1 0 0 1 0 0 Tm ${this._renderText(p[0],f,u,Q,b,{shift:0},2,D)} ET Q EMC`}static async _getFontData(e,t,i,a){const r=new OperatorList,s={font:null,clone(){return this}},{fontName:n,fontSize:o}=i;await e.handleSetFont(a,[n&&Name.get(n),o],null,r,t,s,null);return s.font}_getTextWidth(e,t){return t.charsToGlyphs(e).reduce(((e,t)=>e+t.width),0)/1e3}_computeFontSize(e,t,i,a,r){let{fontSize:n}=this.data.defaultAppearanceData,o=(n||12)*s,g=Math.round(e/o);if(!n){const roundWithTwoDigits=e=>Math.floor(100*e)/100;if(-1===r){const r=this._getTextWidth(i,a);n=roundWithTwoDigits(Math.min(e/s,r>t?t/r:1/0));g=1}else{const c=i.split(/\r\n?|\n/),C=[];for(const e of c){const t=a.encodeString(e).join(""),i=a.charsToGlyphs(t),r=a.getCharPositions(t);C.push({line:t,glyphs:i,positions:r})}const isTooBig=i=>{let r=0;for(const s of C){r+=this._splitLine(null,a,i,t,s).length*i;if(r>e)return!0}return!1};g=Math.max(g,r);for(;;){o=e/g;n=roundWithTwoDigits(o/s);if(!isTooBig(n))break;g++}}const{fontName:c,fontColor:C}=this.data.defaultAppearanceData;this._defaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:i}){return`/${escapePDFName(t)} ${e} Tf ${getPdfColor(i,!0)}`}({fontSize:n,fontName:c,fontColor:C})}return[this._defaultAppearance,n,e/g]}_renderText(e,t,i,a,r,s,n,o){let g;if(1===r){g=(a-this._getTextWidth(e,t)*i)/2}else if(2===r){g=a-this._getTextWidth(e,t)*i-n}else g=n;const c=numberToString(g-s.shift);s.shift=g;return`${c} ${o=numberToString(o)} Td (${escapeString(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:i,acroFormResources:a}=this._fieldResources,r=this.data.defaultAppearanceData?.fontName;if(!r)return t||Dict.empty;for(const e of[t,i])if(e instanceof Dict){const t=e.get("Font");if(t instanceof Dict&&t.has(r))return e}if(a instanceof Dict){const i=a.get("Font");if(i instanceof Dict&&i.has(r)){const a=new Dict(e);a.set(r,i.getRaw(r));const s=new Dict(e);s.set("Font",a);return Dict.merge({xref:e,dictArray:[s,t],mergeSubDicts:!0})}}return t||Dict.empty}getFieldObject(){return null}}class TextWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t}=e;if(t.has("PMD")){this.flags|=z;this.data.hidden=!0;warn("Barcodes are not supported")}this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML;this._hasText=!0;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let i=getInheritableProperty({dict:t,key:"Q"});(!Number.isInteger(i)||i<0||i>2)&&(i=null);this.data.textAlignment=i;let a=getInheritableProperty({dict:t,key:"MaxLen"});(!Number.isInteger(a)||a<0)&&(a=0);this.data.maxLen=a;this.data.multiLine=this.hasFieldFlag(sA);this.data.comb=this.hasFieldFlag(lA)&&!this.hasFieldFlag(sA)&&!this.hasFieldFlag(nA)&&!this.hasFieldFlag(cA)&&0!==this.data.maxLen;this.data.doNotScroll=this.hasFieldFlag(hA)}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,i,a,r,s,n,o,g,c,C){const h=r/this.data.maxLen,l=this.getBorderAndBackgroundAppearances(C),Q=[],E=t.getCharPositions(i);for(const[e,t]of E)Q.push(`(${escapeString(i.substring(e,t))}) Tj`);const u=Q.join(` ${numberToString(h)} 0 Td `);return`/Tx BMC q ${l}BT `+e+` 1 0 0 1 ${numberToString(n)} ${numberToString(o+g)} Tm ${u} ET Q EMC`}_getMultilineAppearance(e,t,i,a,r,s,n,o,g,c,C,h){const l=[],Q=r-2*o,E={shift:0};for(let e=0,s=t.length;e<s;e++){const s=t[e],h=this._splitLine(s,i,a,Q);for(let t=0,s=h.length;t<s;t++){const s=h[t],Q=0===e&&0===t?-g-(C-c):-C;l.push(this._renderText(s,i,a,r,n,E,o,Q))}}const u=this.getBorderAndBackgroundAppearances(h),d=l.join("\n");return`/Tx BMC q ${u}BT `+e+` 1 0 0 1 0 ${numberToString(s)} Tm ${d} ET Q EMC`}_splitLine(e,t,i,a,r={}){e=r.line||e;const s=r.glyphs||t.charsToGlyphs(e);if(s.length<=1)return[e];const n=r.positions||t.getCharPositions(e),o=i/1e3,g=[];let c=-1,C=-1,h=-1,l=0,Q=0;for(let t=0,i=s.length;t<i;t++){const[i,r]=n[t],E=s[t],u=E.width*o;if(" "===E.unicode)if(Q+u>a){g.push(e.substring(l,i));l=i;Q=u;c=-1;h=-1}else{Q+=u;c=i;C=r;h=t}else if(Q+u>a)if(-1!==c){g.push(e.substring(l,C));l=C;t=h+1;c=-1;Q=0}else{g.push(e.substring(l,i));l=i;Q=u}else Q+=u}l<e.length&&g.push(e.substring(l,e.length));return g}getFieldObject(){return{id:this.data.id,value:this.data.fieldValue,defaultValue:this.data.defaultFieldValue||"",multiline:this.data.multiLine,password:this.hasFieldFlag(nA),charLimit:this.data.maxLen,comb:this.data.comb,editable:!this.data.readOnly,hidden:this.data.hidden,name:this.data.fieldName,rect:this.data.rect,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:"text"}}}class ButtonWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.checkedAppearance=null;this.uncheckedAppearance=null;this.data.checkBox=!this.hasFieldFlag(oA)&&!this.hasFieldFlag(gA);this.data.radioButton=this.hasFieldFlag(oA)&&!this.hasFieldFlag(gA);this.data.pushButton=this.hasFieldFlag(gA);this.data.isTooltipOnly=!1;if(this.data.checkBox)this._processCheckBox(e);else if(this.data.radioButton)this._processRadioButton(e);else if(this.data.pushButton){this.data.hasOwnCanvas=!0;this.data.noHTML=!1;this._processPushButton(e)}else warn("Invalid field flags for button widget annotation")}async getOperatorList(e,t,i,r,s){if(this.data.pushButton)return super.getOperatorList(e,t,i,!1,s);let n=null,o=null;if(s){const e=s.get(this.data.id);n=e?e.value:null;o=e?e.rotation:null}if(null===n&&this.appearance)return super.getOperatorList(e,t,i,r,s);null==n&&(n=this.data.checkBox?this.data.fieldValue===this.data.exportValue:this.data.fieldValue===this.data.buttonValue);const g=n?this.checkedAppearance:this.uncheckedAppearance;if(g){const n=this.appearance,c=lookupMatrix(g.dict.getArray("Matrix"),a);o&&g.dict.set("Matrix",this.getRotationMatrix(s));this.appearance=g;const C=super.getOperatorList(e,t,i,r,s);this.appearance=n;g.dict.set("Matrix",c);return C}return{opList:new OperatorList,separateForm:!1,separateCanvas:!1}}async save(e,t,i){return this.data.checkBox?this._saveCheckbox(e,t,i):this.data.radioButton?this._saveRadioButton(e,t,i):null}async _saveCheckbox(e,t,i){if(!i)return null;const a=i.get(this.data.id);let r=a?.rotation,s=a?.value;if(void 0===r){if(void 0===s)return null;if(this.data.fieldValue===this.data.exportValue===s)return null}const n=e.xref.fetchIfRef(this.ref);if(!(n instanceof Dict))return null;void 0===r&&(r=this.rotation);void 0===s&&(s=this.data.fieldValue===this.data.exportValue);const o={path:this.data.fieldName,value:s?this.data.exportValue:""},g=Name.get(s?this.data.exportValue:"Off");n.set("V",g);n.set("AS",g);n.set("M",`D:${getModificationDate()}`);const c=this._getMKDict(r);c&&n.set("MK",c);const C=[];await writeObject(this.ref,n,C,e.xref);return[{ref:this.ref,data:C.join(""),xfa:o}]}async _saveRadioButton(e,t,i){if(!i)return null;const a=i.get(this.data.id);let r=a?.rotation,s=a?.value;if(void 0===r){if(void 0===s)return null;if(this.data.fieldValue===this.data.buttonValue===s)return null}const n=e.xref.fetchIfRef(this.ref);if(!(n instanceof Dict))return null;void 0===s&&(s=this.data.fieldValue===this.data.buttonValue);void 0===r&&(r=this.rotation);const o={path:this.data.fieldName,value:s?this.data.buttonValue:""},g=Name.get(s?this.data.buttonValue:"Off"),c=[];let C=null;if(s)if(this.parent instanceof Ref){const t=e.xref.fetch(this.parent);t.set("V",g);await writeObject(this.parent,t,c,e.xref);C=c.join("");c.length=0}else this.parent instanceof Dict&&this.parent.set("V",g);n.set("AS",g);n.set("M",`D:${getModificationDate()}`);const h=this._getMKDict(r);h&&n.set("MK",h);await writeObject(this.ref,n,c,e.xref);const l=[{ref:this.ref,data:c.join(""),xfa:o}];C&&l.push({ref:this.parent,data:C,xfa:null});return l}_getDefaultCheckedAppearance(e,t){const i=this.data.rect[2]-this.data.rect[0],a=this.data.rect[3]-this.data.rect[1],r=[0,0,i,a],s=.8*Math.min(i,a);let n,o;if("check"===t){n={width:.755*s,height:.705*s};o="3"}else if("disc"===t){n={width:.791*s,height:.705*s};o="l"}else unreachable(`_getDefaultCheckedAppearance - unsupported type: ${t}`);const g=`q BT /PdfJsZaDb ${s} Tf 0 g ${numberToString((i-n.width)/2)} ${numberToString((a-n.height)/2)} Td (${o}) Tj ET Q`,c=new Dict(e.xref);c.set("FormType",1);c.set("Subtype",Name.get("Form"));c.set("Type",Name.get("XObject"));c.set("BBox",r);c.set("Matrix",[1,0,0,1,0,0]);c.set("Length",g.length);const C=new Dict(e.xref),h=new Dict(e.xref);h.set("PdfJsZaDb",this.fallbackFontDict);C.set("Font",h);c.set("Resources",C);this.checkedAppearance=new StringStream(g);this.checkedAppearance.dict=c;this._streams.push(this.checkedAppearance)}_processCheckBox(e){const t=e.dict.get("AP");if(!(t instanceof Dict))return;const i=t.get("N");if(!(i instanceof Dict))return;const a=this._decodeFormValue(e.dict.get("AS"));"string"==typeof a&&(this.data.fieldValue=a);const r=null!==this.data.fieldValue&&"Off"!==this.data.fieldValue?this.data.fieldValue:"Yes",s=i.getKeys();if(0===s.length)s.push("Off",r);else if(1===s.length)"Off"===s[0]?s.push(r):s.unshift("Off");else if(s.includes(r)){s.length=0;s.push("Off",r)}else{const e=s.find((e=>"Off"!==e));s.length=0;s.push("Off",e)}s.includes(this.data.fieldValue)||(this.data.fieldValue="Off");this.data.exportValue=s[1];const n=i.get(this.data.exportValue);this.checkedAppearance=n instanceof BaseStream?n:null;const o=i.get("Off");this.uncheckedAppearance=o instanceof BaseStream?o:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processRadioButton(e){this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof Dict){this.parent=e.dict.getRaw("Parent");const i=t.get("V");i instanceof Name&&(this.data.fieldValue=this._decodeFormValue(i))}const i=e.dict.get("AP");if(!(i instanceof Dict))return;const a=i.get("N");if(!(a instanceof Dict))return;for(const e of a.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}const r=a.get(this.data.buttonValue);this.checkedAppearance=r instanceof BaseStream?r:null;const s=a.get("Off");this.uncheckedAppearance=s instanceof BaseStream?s:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processPushButton(e){const{dict:t,annotationGlobals:i}=e;if(t.has("A")||t.has("AA")||this.data.alternativeText){this.data.isTooltipOnly=!t.has("A")&&!t.has("AA");Catalog.parseDestDictionary({destDict:t,resultObj:this.data,docBaseUrl:i.baseUrl,docAttachments:i.attachments})}else warn("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";if(this.data.checkBox){t="checkbox";e=this.data.exportValue}else if(this.data.radioButton){t="radiobutton";e=this.data.buttonValue}return{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:t}}get fallbackFontDict(){const e=new Dict;e.set("BaseFont",Name.get("ZapfDingbats"));e.set("Type",Name.get("FallbackType"));e.set("Subtype",Name.get("FallbackType"));e.set("Encoding",Name.get("ZapfDingbatsEncoding"));return shadow(this,"fallbackFontDict",e)}}class ChoiceWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.indices=t.getArray("I");this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0;this.data.options=[];const a=getInheritableProperty({dict:t,key:"Opt"});if(Array.isArray(a))for(let e=0,t=a.length;e<t;e++){const t=i.fetchIfRef(a[e]),r=Array.isArray(t);this.data.options[e]={exportValue:this._decodeFormValue(r?i.fetchIfRef(t[0]):t),displayValue:this._decodeFormValue(r?i.fetchIfRef(t[1]):t)}}if(this.hasIndices){this.data.fieldValue=[];const e=this.data.options.length;for(const t of this.indices)Number.isInteger(t)&&t>=0&&t<e&&this.data.fieldValue.push(this.data.options[t].exportValue)}else"string"==typeof this.data.fieldValue?this.data.fieldValue=[this.data.fieldValue]:this.data.fieldValue||(this.data.fieldValue=[]);this.data.combo=this.hasFieldFlag(IA);this.data.multiSelect=this.hasFieldFlag(CA);this._hasText=!0}getFieldObject(){const e=this.data.combo?"combobox":"listbox",t=this.data.fieldValue.length>0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:e}}amendSavedDict(e,t){if(!this.hasIndices)return;let i=e?.get(this.data.id)?.value;Array.isArray(i)||(i=[i]);const a=[],{options:r}=this.data;for(let e=0,t=0,s=r.length;e<s;e++)if(r[e].exportValue===i[t]){a.push(e);t+=1}t.set("I",a)}async _getAppearance(e,t,i,a){if(this.data.combo)return super._getAppearance(e,t,i,a);let r,n;const o=a?.get(this.data.id);if(o){n=o.rotation;r=o.value}if(void 0===n&&void 0===r&&!this._needAppearances)return null;void 0===r?r=this.data.fieldValue:Array.isArray(r)||(r=[r]);let g=this.data.rect[3]-this.data.rect[1],c=this.data.rect[2]-this.data.rect[0];90!==n&&270!==n||([c,g]=[g,c]);const C=this.data.options.length,h=[];for(let e=0;e<C;e++){const{exportValue:t}=this.data.options[e];r.includes(t)&&h.push(e)}this._defaultAppearance||(this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance="/Helvetica 0 Tf 0 g"));const l=await WidgetAnnotation._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);let Q,{fontSize:E}=this.data.defaultAppearanceData;if(E)Q=this._defaultAppearance;else{const e=(g-1)/C;let t,i=-1;for(const{displayValue:e}of this.data.options){const a=this._getTextWidth(e,l);if(a>i){i=a;t=e}}[Q,E]=this._computeFontSize(e,c-4,t,l,-1)}const u=E*s,d=(u-E)/2,f=Math.floor(g/u);let p=0;if(h.length>0){const e=Math.min(...h),t=Math.max(...h);p=Math.max(0,t-f+1);p>e&&(p=e)}const m=Math.min(p+f+1,C),y=["/Tx BMC q",`1 1 ${c} ${g} re W n`];if(h.length){y.push("0.600006 0.756866 0.854904 rg");for(const e of h)p<=e&&e<m&&y.push(`1 ${g-(e-p+1)*u} ${c} ${u} re f`)}y.push("BT",Q,`1 0 0 1 0 ${g} Tm`);const w={shift:0};for(let e=p;e<m;e++){const{displayValue:t}=this.data.options[e],i=e===p?d:0;y.push(this._renderText(t,l,E,c,0,w,2,-u+i))}y.push("ET Q EMC");return y.join("\n")}}class SignatureWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.data.fieldValue=null;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!this.data.hasOwnCanvas}getFieldObject(){return{id:this.data.id,value:null,page:this.data.pageIndex,type:"signature"}}}class TextAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.noRotate=!0;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;const{dict:t}=e;this.data.annotationType=R;if(this.data.hasAppearance)this.data.name="NoIcon";else{this.data.rect[1]=this.data.rect[3]-22;this.data.rect[2]=this.data.rect[0]+22;this.data.name=t.has("Name")?t.get("Name").name:"Note"}if(t.has("State")){this.data.state=t.get("State")||null;this.data.stateModel=t.get("StateModel")||null}else{this.data.state=null;this.data.stateModel=null}}}class LinkAnnotation extends Annotation{constructor(e){super(e);const{dict:t,annotationGlobals:i}=e;this.data.annotationType=N;this.data.noHTML=!1;const a=getQuadPoints(t,this.rectangle);a&&(this.data.quadPoints=a);this.data.borderColor||=this.data.color;Catalog.parseDestDictionary({destDict:t,resultObj:this.data,docBaseUrl:i.baseUrl,docAttachments:i.attachments})}}class PopupAnnotation extends Annotation{constructor(e){super(e);const{dict:t}=e;this.data.annotationType=W;this.data.noHTML=!1;this.data.rect[0]!==this.data.rect[2]&&this.data.rect[1]!==this.data.rect[3]||(this.data.rect=null);let i=t.get("Parent");if(!i){warn("Popup annotation has a missing or invalid parent annotation.");return}this.data.parentRect=lookupNormalRect(i.getArray("Rect"),null);isName(i.get("RT"),Z)&&(i=i.get("IRT"));if(i.has("M")){this.setModificationDate(i.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;if(i.has("C")){this.setColor(i.getArray("C"));this.data.color=this.color}else this.data.color=null;if(!this.viewable){const e=i.get("F");this._isViewable(e)&&this.setFlags(e)}this.setTitle(i.get("T"));this.data.titleObj=this._title;this.setContents(i.get("Contents"));this.data.contentsObj=this._contents;i.has("RC")&&(this.data.richText=XFAFactory.getRichTextAsHtml(i.get("RC")));this.data.open=!!t.get("Open")}}class FreeTextAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.hasOwnCanvas=!this.data.noHTML;this.data.noHTML=!1;const{evaluatorOptions:t,xref:i}=e;this.data.annotationType=G;this.setDefaultAppearance(e);this._hasAppearance=!!this.appearance;if(this._hasAppearance){const{fontColor:e,fontSize:a}=function parseAppearanceStream(e,t,i){return new AppearanceStreamEvaluator(e,t,i).parse()}(this.appearance,t,i);this.data.defaultAppearanceData.fontColor=e;this.data.defaultAppearanceData.fontSize=a||10}else{this.data.defaultAppearanceData.fontSize||=10;const{fontColor:t,fontSize:a}=this.data.defaultAppearanceData;if(this._contents.str){this.data.textContent=this._contents.str.split(/\r\n?|\n/).map((e=>e.trimEnd()));const{coords:e,bbox:t,matrix:i}=FakeUnicodeFont.getFirstPositionInfo(this.rectangle,this.rotation,a);this.data.textPosition=this._transformPoint(e,t,i)}if(this._isOffscreenCanvasSupported){const r=e.dict.get("CA"),s=new FakeUnicodeFont(i,"sans-serif");this.appearance=s.createAppearance(this._contents.str,this.rectangle,this.rotation,a,t,r);this._streams.push(this.appearance)}else warn("FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.")}}get hasTextContent(){return this._hasAppearance}static createNewDict(e,t,{apRef:i,ap:a}){const{color:r,fontSize:s,rect:n,rotation:o,user:g,value:c}=e,C=new Dict(t);C.set("Type",Name.get("Annot"));C.set("Subtype",Name.get("FreeText"));C.set("CreationDate",`D:${getModificationDate()}`);C.set("Rect",n);const h=`/Helv ${s} Tf ${getPdfColor(r,!0)}`;C.set("DA",h);C.set("Contents",isAscii(c)?c:stringToUTF16String(c,!0));C.set("F",4);C.set("Border",[0,0,0]);C.set("Rotate",o);g&&C.set("T",isAscii(g)?g:stringToUTF16String(g,!0));if(i||a){const e=new Dict(t);C.set("AP",e);i?e.set("N",i):e.set("N",a)}return C}static async createNewAppearanceStream(e,t,i){const{baseFontRef:a,evaluator:r,task:n}=i,{color:o,fontSize:g,rect:c,rotation:C,value:h}=e,l=new Dict(t),Q=new Dict(t);if(a)Q.set("Helv",a);else{const e=new Dict(t);e.set("BaseFont",Name.get("Helvetica"));e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("Type1"));e.set("Encoding",Name.get("WinAnsiEncoding"));Q.set("Helv",e)}l.set("Font",Q);const E=await WidgetAnnotation._getFontData(r,n,{fontName:"Helv",fontSize:g},l),[u,d,f,p]=c;let m=f-u,y=p-d;C%180!=0&&([m,y]=[y,m]);const w=h.split("\n"),b=g/1e3;let D=-1/0;const S=[];for(let e of w){const t=E.encodeString(e);if(t.length>1)return null;e=t.join("");S.push(e);let i=0;const a=E.charsToGlyphs(e);for(const e of a)i+=e.width*b;D=Math.max(D,i)}let k=1;D>m&&(k=m/D);let R=1;const N=s*g,G=1*g,x=N*w.length;x>y&&(R=y/x);const U=g*Math.min(k,R);let M,L,H;switch(C){case 0:H=[1,0,0,1];L=[c[0],c[1],m,y];M=[c[0],c[3]-G];break;case 90:H=[0,1,-1,0];L=[c[1],-c[2],m,y];M=[c[1],-c[0]-G];break;case 180:H=[-1,0,0,-1];L=[-c[2],-c[3],m,y];M=[-c[2],-c[1]-G];break;case 270:H=[0,-1,1,0];L=[-c[3],c[0],m,y];M=[-c[3],c[2]-G]}const J=["q",`${H.join(" ")} 0 0 cm`,`${L.join(" ")} re W n`,"BT",`${getPdfColor(o,!0)}`,`0 Tc /Helv ${numberToString(U)} Tf`];J.push(`${M.join(" ")} Td (${escapeString(S[0])}) Tj`);const Y=numberToString(N);for(let e=1,t=S.length;e<t;e++){const t=S[e];J.push(`0 -${Y} Td (${escapeString(t)}) Tj`)}J.push("ET","Q");const v=J.join("\n"),T=new Dict(t);T.set("FormType",1);T.set("Subtype",Name.get("Form"));T.set("Type",Name.get("XObject"));T.set("BBox",c);T.set("Resources",l);T.set("Matrix",[1,0,0,1,-c[0],-c[1]]);const K=new StringStream(v);K.dict=T;return K}}class LineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=x;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;const a=lookupRect(t.getArray("L"),[0,0,0,0]);this.data.lineCoordinates=Util.normalizeRect(a);this.setLineEndings(t.getArray("LE"));this.data.lineEndings=this.lineEndings;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA"),s=getRgbColor(t.getArray("IC"),null),n=s?getPdfColorArray(s):null,o=n?r:null,g=this.borderStyle.width||1,c=2*g,C=[this.data.lineCoordinates[0]-c,this.data.lineCoordinates[1]-c,this.data.lineCoordinates[2]+c,this.data.lineCoordinates[3]+c];Util.intersect(this.rectangle,C)||(this.rectangle=C);this._setDefaultAppearance({xref:i,extra:`${g} w`,strokeColor:e,fillColor:n,strokeAlpha:r,fillAlpha:o,pointsCallback:(e,t)=>{e.push(`${a[0]} ${a[1]} m`,`${a[2]} ${a[3]} l`,"S");return[t[0]-g,t[2]+g,t[7]-g,t[3]+g]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=U;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA"),r=getRgbColor(t.getArray("IC"),null),s=r?getPdfColorArray(r):null,n=s?a:null;if(0===this.borderStyle.width&&!s)return;this._setDefaultAppearance({xref:i,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:s,strokeAlpha:a,fillAlpha:n,pointsCallback:(e,t)=>{const i=t[4]+this.borderStyle.width/2,a=t[5]+this.borderStyle.width/2,r=t[6]-t[4]-this.borderStyle.width,n=t[3]-t[7]-this.borderStyle.width;e.push(`${i} ${a} ${r} ${n} re`);s?e.push("B"):e.push("S");return[t[0],t[2],t[7],t[3]]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=M;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA"),r=getRgbColor(t.getArray("IC"),null),s=r?getPdfColorArray(r):null,n=s?a:null;if(0===this.borderStyle.width&&!s)return;const o=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:i,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:s,strokeAlpha:a,fillAlpha:n,pointsCallback:(e,t)=>{const i=t[0]+this.borderStyle.width/2,a=t[1]-this.borderStyle.width/2,r=t[6]-this.borderStyle.width/2,n=t[7]+this.borderStyle.width/2,g=i+(r-i)/2,c=a+(n-a)/2,C=(r-i)/2*o,h=(n-a)/2*o;e.push(`${g} ${n} m`,`${g+C} ${n} ${r} ${c+h} ${r} ${c} c`,`${r} ${c-h} ${g+C} ${a} ${g} ${a} c`,`${g-C} ${a} ${i} ${c-h} ${i} ${c} c`,`${i} ${c+h} ${g-C} ${n} ${g} ${n} c`,"h");s?e.push("B"):e.push("S");return[t[0],t[2],t[7],t[3]]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=H;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;this.data.vertices=null;if(!(this instanceof PolygonAnnotation)){this.setLineEndings(t.getArray("LE"));this.data.lineEndings=this.lineEndings}const a=t.getArray("Vertices");if(!isNumberArray(a,null))return;const r=this.data.vertices=Float32Array.from(a);if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA"),s=this.borderStyle.width||1,n=2*s,o=[1/0,1/0,-1/0,-1/0];for(let e=0,t=r.length;e<t;e+=2){o[0]=Math.min(o[0],r[e]-n);o[1]=Math.min(o[1],r[e+1]-n);o[2]=Math.max(o[2],r[e]+n);o[3]=Math.max(o[3],r[e+1]+n)}Util.intersect(this.rectangle,o)||(this.rectangle=o);this._setDefaultAppearance({xref:i,extra:`${s} w`,strokeColor:e,strokeAlpha:a,pointsCallback:(e,t)=>{for(let t=0,i=r.length;t<i;t+=2)e.push(`${r[t]} ${r[t+1]} ${0===t?"m":"l"}`);e.push("S");return[t[0],t[2],t[7],t[3]]}})}}}class PolygonAnnotation extends PolylineAnnotation{constructor(e){super(e);this.data.annotationType=L}}class CaretAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=q}}class InkAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;const{dict:t,xref:i}=e;this.data.annotationType=O;this.data.inkLists=[];const a=t.getArray("InkList");if(Array.isArray(a)){for(let e=0,t=a.length;e<t;++e){if(!Array.isArray(a[e]))continue;const t=new Float32Array(a[e].length);this.data.inkLists.push(t);for(let r=0,s=a[e].length;r<s;r+=2){const s=i.fetchIfRef(a[e][r]),n=i.fetchIfRef(a[e][r+1]);if("number"==typeof s&&"number"==typeof n){t[r]=s;t[r+1]=n}}}if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA"),r=this.borderStyle.width||1,s=2*r,n=[1/0,1/0,-1/0,-1/0];for(const e of this.data.inkLists)for(let t=0,i=e.length;t<i;t+=2){n[0]=Math.min(n[0],e[t]-s);n[1]=Math.min(n[1],e[t+1]-s);n[2]=Math.max(n[2],e[t]+s);n[3]=Math.max(n[3],e[t+1]+s)}Util.intersect(this.rectangle,n)||(this.rectangle=n);this._setDefaultAppearance({xref:i,extra:`${r} w`,strokeColor:e,strokeAlpha:a,pointsCallback:(e,t)=>{for(const t of this.data.inkLists){for(let i=0,a=t.length;i<a;i+=2)e.push(`${t[i]} ${t[i+1]} ${0===i?"m":"l"}`);e.push("S")}return[t[0],t[2],t[7],t[3]]}})}}}static createNewDict(e,t,{apRef:i,ap:a}){const{color:r,opacity:s,paths:n,outlines:o,rect:g,rotation:c,thickness:C}=e,h=new Dict(t);h.set("Type",Name.get("Annot"));h.set("Subtype",Name.get("Ink"));h.set("CreationDate",`D:${getModificationDate()}`);h.set("Rect",g);h.set("InkList",o?.points||n.map((e=>e.points)));h.set("F",4);h.set("Rotate",c);o&&h.set("IT",Name.get("InkHighlight"));const l=new Dict(t);h.set("BS",l);l.set("W",C);h.set("C",Array.from(r,(e=>e/255)));h.set("CA",s);const Q=new Dict(t);h.set("AP",Q);i?Q.set("N",i):Q.set("N",a);return h}static async createNewAppearanceStream(e,t,i){if(e.outlines)return this.createNewAppearanceStreamForHighlight(e,t,i);const{color:a,rect:r,paths:s,thickness:n,opacity:o}=e,g=[`${n} w 1 J 1 j`,`${getPdfColor(a,!1)}`];1!==o&&g.push("/R0 gs");const c=[];for(const{bezier:e}of s){c.length=0;c.push(`${numberToString(e[0])} ${numberToString(e[1])} m`);if(2===e.length)c.push(`${numberToString(e[0])} ${numberToString(e[1])} l S`);else{for(let t=2,i=e.length;t<i;t+=6){const i=e.slice(t,t+6).map(numberToString).join(" ");c.push(`${i} c`)}c.push("S")}g.push(c.join("\n"))}const C=g.join("\n"),h=new Dict(t);h.set("FormType",1);h.set("Subtype",Name.get("Form"));h.set("Type",Name.get("XObject"));h.set("BBox",r);h.set("Length",C.length);if(1!==o){const e=new Dict(t),i=new Dict(t),a=new Dict(t);a.set("CA",o);a.set("Type",Name.get("ExtGState"));i.set("R0",a);e.set("ExtGState",i);h.set("Resources",e)}const l=new StringStream(C);l.dict=h;return l}static async createNewAppearanceStreamForHighlight(e,t,i){const{color:a,rect:r,outlines:{outline:s},opacity:n}=e,o=[`${getPdfColor(a,!0)}`,"/R0 gs"];o.push(`${numberToString(s[4])} ${numberToString(s[5])} m`);for(let e=6,t=s.length;e<t;e+=6)if(isNaN(s[e])||null===s[e])o.push(`${numberToString(s[e+4])} ${numberToString(s[e+5])} l`);else{const t=s.slice(e,e+6).map(numberToString).join(" ");o.push(`${t} c`)}o.push("h f");const g=o.join("\n"),c=new Dict(t);c.set("FormType",1);c.set("Subtype",Name.get("Form"));c.set("Type",Name.get("XObject"));c.set("BBox",r);c.set("Length",g.length);const C=new Dict(t),h=new Dict(t);C.set("ExtGState",h);c.set("Resources",C);const l=new Dict(t);h.set("R0",l);l.set("BM",Name.get("Multiply"));if(1!==n){l.set("ca",n);l.set("Type",Name.get("ExtGState"))}const Q=new StringStream(g);Q.dict=c;return Q}}class HighlightAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=J;if(this.data.quadPoints=getQuadPoints(t,null)){const e=this.appearance?.dict.get("Resources");if(!this.appearance||!e?.has("ExtGState")){this.appearance&&warn("HighlightAnnotation - ignoring built-in appearance stream.");const e=this.color?getPdfColorArray(this.color):[1,1,0],a=t.get("CA");this._setDefaultAppearance({xref:i,fillColor:e,blendMode:"Multiply",fillAlpha:a,pointsCallback:(e,t)=>{e.push(`${t[0]} ${t[1]} m`,`${t[2]} ${t[3]} l`,`${t[6]} ${t[7]} l`,`${t[4]} ${t[5]} l`,"f");return[t[0],t[2],t[7],t[3]]}})}}else this.data.popupRef=null}static createNewDict(e,t,{apRef:i,ap:a}){const{color:r,opacity:s,rect:n,rotation:o,user:g,quadPoints:c}=e,C=new Dict(t);C.set("Type",Name.get("Annot"));C.set("Subtype",Name.get("Highlight"));C.set("CreationDate",`D:${getModificationDate()}`);C.set("Rect",n);C.set("F",4);C.set("Border",[0,0,0]);C.set("Rotate",o);C.set("QuadPoints",c);C.set("C",Array.from(r,(e=>e/255)));C.set("CA",s);g&&C.set("T",isAscii(g)?g:stringToUTF16String(g,!0));if(i||a){const e=new Dict(t);C.set("AP",e);e.set("N",i||a)}return C}static async createNewAppearanceStream(e,t,i){const{color:a,rect:r,outlines:s,opacity:n}=e,o=[`${getPdfColor(a,!0)}`,"/R0 gs"],g=[];for(const e of s){g.length=0;g.push(`${numberToString(e[0])} ${numberToString(e[1])} m`);for(let t=2,i=e.length;t<i;t+=2)g.push(`${numberToString(e[t])} ${numberToString(e[t+1])} l`);g.push("h");o.push(g.join("\n"))}o.push("f*");const c=o.join("\n"),C=new Dict(t);C.set("FormType",1);C.set("Subtype",Name.get("Form"));C.set("Type",Name.get("XObject"));C.set("BBox",r);C.set("Length",c.length);const h=new Dict(t),l=new Dict(t);h.set("ExtGState",l);C.set("Resources",h);const Q=new Dict(t);l.set("R0",Q);Q.set("BM",Name.get("Multiply"));if(1!==n){Q.set("ca",n);Q.set("Type",Name.get("ExtGState"))}const E=new StringStream(c);E.dict=C;return E}}class UnderlineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=Y;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA");this._setDefaultAppearance({xref:i,extra:"[] 0 d 0.571 w",strokeColor:e,strokeAlpha:a,pointsCallback:(e,t)=>{e.push(`${t[4]} ${t[5]+1.3} m`,`${t[6]} ${t[7]+1.3} l`,"S");return[t[0],t[2],t[7],t[3]]}})}}else this.data.popupRef=null}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=v;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA");this._setDefaultAppearance({xref:i,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:a,pointsCallback:(e,t)=>{const i=(t[1]-t[5])/6;let a=i,r=t[4];const s=t[5],n=t[6];e.push(`${r} ${s+a} m`);do{r+=2;a=0===a?i:0;e.push(`${r} ${s+a} l`)}while(r<n);e.push("S");return[t[4],n,s-2*i,s+2*i]}})}}else this.data.popupRef=null}}class StrikeOutAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=T;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA");this._setDefaultAppearance({xref:i,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:a,pointsCallback:(e,t)=>{e.push((t[0]+t[4])/2+" "+(t[1]+t[5])/2+" m",(t[2]+t[6])/2+" "+(t[3]+t[7])/2+" l","S");return[t[0],t[2],t[7],t[3]]}})}}else this.data.popupRef=null}}class StampAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=K;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1}static async createImage(e,t){const{width:i,height:a}=e,r=new OffscreenCanvas(i,a),s=r.getContext("2d",{alpha:!0});s.drawImage(e,0,0);const n=s.getImageData(0,0,i,a).data,o=new Uint32Array(n.buffer),g=o.some(FeatureTest.isLittleEndian?e=>e>>>24!=255:e=>255!=(255&e));if(g){s.fillStyle="white";s.fillRect(0,0,i,a);s.drawImage(e,0,0)}const c=r.convertToBlob({type:"image/jpeg",quality:1}).then((e=>e.arrayBuffer())),C=Name.get("XObject"),h=Name.get("Image"),l=new Dict(t);l.set("Type",C);l.set("Subtype",h);l.set("BitsPerComponent",8);l.set("ColorSpace",Name.get("DeviceRGB"));l.set("Filter",Name.get("DCTDecode"));l.set("BBox",[0,0,i,a]);l.set("Width",i);l.set("Height",a);let Q=null;if(g){const e=new Uint8Array(o.length);if(FeatureTest.isLittleEndian)for(let t=0,i=o.length;t<i;t++)e[t]=o[t]>>>24;else for(let t=0,i=o.length;t<i;t++)e[t]=255&o[t];const r=new Dict(t);r.set("Type",C);r.set("Subtype",h);r.set("BitsPerComponent",8);r.set("ColorSpace",Name.get("DeviceGray"));r.set("Width",i);r.set("Height",a);Q=new Stream(e,0,0,r)}return{imageStream:new Stream(await c,0,0,l),smaskStream:Q,width:i,height:a}}static createNewDict(e,t,{apRef:i,ap:a}){const{rect:r,rotation:s,user:n}=e,o=new Dict(t);o.set("Type",Name.get("Annot"));o.set("Subtype",Name.get("Stamp"));o.set("CreationDate",`D:${getModificationDate()}`);o.set("Rect",r);o.set("F",4);o.set("Border",[0,0,0]);o.set("Rotate",s);n&&o.set("T",isAscii(n)?n:stringToUTF16String(n,!0));if(i||a){const e=new Dict(t);o.set("AP",e);i?e.set("N",i):e.set("N",a)}return o}static async createNewAppearanceStream(e,t,i){const{rotation:a}=e,{imageRef:r,width:s,height:n}=i.image,o=new Dict(t),g=new Dict(t);o.set("XObject",g);g.set("Im0",r);const c=`q ${s} 0 0 ${n} 0 0 cm /Im0 Do Q`,C=new Dict(t);C.set("FormType",1);C.set("Subtype",Name.get("Form"));C.set("Type",Name.get("XObject"));C.set("BBox",[0,0,s,n]);C.set("Resources",o);if(a){const e=getRotationMatrix(a,s,n);C.set("Matrix",e)}const h=new StringStream(c);h.dict=C;return h}}class FileAttachmentAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e,a=new FileSpec(t.get("FS"),i);this.data.annotationType=j;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;this.data.file=a.serializable;const r=t.get("Name");this.data.name=r instanceof Name?stringToPDFString(r.name):"PushPin";const s=t.get("ca");this.data.fillAlpha="number"==typeof s&&s>=0&&s<=1?s:null}}function decodeString(e){try{return stringToUTF8String(e)}catch(t){warn(`UTF-8 decoding failed: "${t}".`);return e}}class DatasetXMLParser extends SimpleXMLParser{constructor(e){super(e);this.node=null}onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e){this.node=t;throw new Error("Aborting DatasetXMLParser.")}}}class DatasetReader{constructor(e){if(e.datasets)this.node=new SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new DatasetXMLParser({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch{}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode(parseXFAPath(e),0);if(!t)return"";const i=t.firstChild;return"value"===i?.nodeName?t.children.map((e=>decodeString(e.textContent))):decodeString(t.textContent)}}class XRef{#T=null;constructor(e,t){this.stream=e;this.pdfManager=t;this.entries=[];this._xrefStms=new Set;this._cacheMap=new Map;this._pendingRefs=new RefSet;this._newPersistentRefNum=null;this._newTemporaryRefNum=null;this._persistentRefsCache=null}getNewPersistentRef(e){null===this._newPersistentRefNum&&(this._newPersistentRefNum=this.entries.length||1);const t=this._newPersistentRefNum++;this._cacheMap.set(t,e);return Ref.get(t,0)}getNewTemporaryRef(){if(null===this._newTemporaryRefNum){this._newTemporaryRefNum=this.entries.length||1;if(this._newPersistentRefNum){this._persistentRefsCache=new Map;for(let e=this._newTemporaryRefNum;e<this._newPersistentRefNum;e++){this._persistentRefsCache.set(e,this._cacheMap.get(e));this._cacheMap.delete(e)}}}return Ref.get(this._newTemporaryRefNum++,0)}resetNewTemporaryRef(){this._newTemporaryRefNum=null;if(this._persistentRefsCache)for(const[e,t]of this._persistentRefsCache)this._cacheMap.set(e,t);this._persistentRefsCache=null}setStartXRef(e){this.startXRefQueue=[e]}parse(e=!1){let t,i,a;if(e){warn("Indexing all PDF objects");t=this.indexObjects()}else t=this.readXRef();t.assignXref(this);this.trailer=t;try{i=t.get("Encrypt")}catch(e){if(e instanceof MissingDataException)throw e;warn(`XRef.parse - Invalid "Encrypt" reference: "${e}".`)}if(i instanceof Dict){const e=t.get("ID"),a=e?.length?e[0]:"";i.suppressEncryption=!0;this.encrypt=new CipherTransformFactory(i,a,this.pdfManager.password)}try{a=t.get("Root")}catch(e){if(e instanceof MissingDataException)throw e;warn(`XRef.parse - Invalid "Root" reference: "${e}".`)}if(a instanceof Dict)try{if(a.get("Pages")instanceof Dict){this.root=a;return}}catch(e){if(e instanceof MissingDataException)throw e;warn(`XRef.parse - Invalid "Pages" reference: "${e}".`)}if(!e)throw new XRefParseException;throw new InvalidPDFException("Invalid Root reference.")}processXRefTable(e){"tableState"in this||(this.tableState={entryNum:0,streamPos:e.lexer.stream.pos,parserBuf1:e.buf1,parserBuf2:e.buf2});if(!isCmd(this.readXRefTable(e),"trailer"))throw new FormatError("Invalid XRef table: could not find trailer dictionary");let t=e.getObj();t instanceof Dict||!t.dict||(t=t.dict);if(!(t instanceof Dict))throw new FormatError("Invalid XRef table: could not parse trailer dictionary");delete this.tableState;return t}readXRefTable(e){const t=e.lexer.stream,i=this.tableState;t.pos=i.streamPos;e.buf1=i.parserBuf1;e.buf2=i.parserBuf2;let a;for(;;){if(!("firstEntryNum"in i)||!("entryCount"in i)){if(isCmd(a=e.getObj(),"trailer"))break;i.firstEntryNum=a;i.entryCount=e.getObj()}let r=i.firstEntryNum;const s=i.entryCount;if(!Number.isInteger(r)||!Number.isInteger(s))throw new FormatError("Invalid XRef table: wrong types in subsection header");for(let a=i.entryNum;a<s;a++){i.streamPos=t.pos;i.entryNum=a;i.parserBuf1=e.buf1;i.parserBuf2=e.buf2;const n={};n.offset=e.getObj();n.gen=e.getObj();const o=e.getObj();if(o instanceof Cmd)switch(o.cmd){case"f":n.free=!0;break;case"n":n.uncompressed=!0}if(!Number.isInteger(n.offset)||!Number.isInteger(n.gen)||!n.free&&!n.uncompressed)throw new FormatError(`Invalid entry in XRef subsection: ${r}, ${s}`);0===a&&n.free&&1===r&&(r=0);this.entries[a+r]||(this.entries[a+r]=n)}i.entryNum=0;i.streamPos=t.pos;i.parserBuf1=e.buf1;i.parserBuf2=e.buf2;delete i.firstEntryNum;delete i.entryCount}if(this.entries[0]&&!this.entries[0].free)throw new FormatError("Invalid XRef table: unexpected first object");return a}processXRefStream(e){if(!("streamState"in this)){const t=e.dict,i=t.get("W");let a=t.get("Index");a||(a=[0,t.get("Size")]);this.streamState={entryRanges:a,byteWidths:i,entryNum:0,streamPos:e.pos}}this.readXRefStream(e);delete this.streamState;return e.dict}readXRefStream(e){const t=this.streamState;e.pos=t.streamPos;const[i,a,r]=t.byteWidths,s=t.entryRanges;for(;s.length>0;){const[n,o]=s;if(!Number.isInteger(n)||!Number.isInteger(o))throw new FormatError(`Invalid XRef range fields: ${n}, ${o}`);if(!Number.isInteger(i)||!Number.isInteger(a)||!Number.isInteger(r))throw new FormatError(`Invalid XRef entry fields length: ${n}, ${o}`);for(let s=t.entryNum;s<o;++s){t.entryNum=s;t.streamPos=e.pos;let o=0,g=0,c=0;for(let t=0;t<i;++t){const t=e.getByte();if(-1===t)throw new FormatError("Invalid XRef byteWidths 'type'.");o=o<<8|t}0===i&&(o=1);for(let t=0;t<a;++t){const t=e.getByte();if(-1===t)throw new FormatError("Invalid XRef byteWidths 'offset'.");g=g<<8|t}for(let t=0;t<r;++t){const t=e.getByte();if(-1===t)throw new FormatError("Invalid XRef byteWidths 'generation'.");c=c<<8|t}const C={};C.offset=g;C.gen=c;switch(o){case 0:C.free=!0;break;case 1:C.uncompressed=!0;break;case 2:break;default:throw new FormatError(`Invalid XRef entry type: ${o}`)}this.entries[n+s]||(this.entries[n+s]=C)}t.entryNum=0;t.streamPos=e.pos;s.splice(0,2)}}indexObjects(){function readToken(e,t){let i="",a=e[t];for(;10!==a&&13!==a&&60!==a&&!(++t>=e.length);){i+=String.fromCharCode(a);a=e[t]}return i}function skipUntil(e,t,i){const a=i.length,r=e.length;let s=0;for(;t<r;){let r=0;for(;r<a&&e[t+r]===i[r];)++r;if(r>=a)break;t++;s++}return s}const e=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,t=/\b(startxref|\d+\s+\d+\s+obj)\b/g,i=/^(\d+)\s+(\d+)\s+obj\b/,a=new Uint8Array([116,114,97,105,108,101,114]),r=new Uint8Array([115,116,97,114,116,120,114,101,102]),s=new Uint8Array([47,88,82,101,102]);this.entries.length=0;this._cacheMap.clear();const n=this.stream;n.pos=0;const o=n.getBytes(),g=bytesToString(o),c=o.length;let C=n.start;const h=[],l=[];for(;C<c;){let Q=o[C];if(9===Q||10===Q||13===Q||32===Q){++C;continue}if(37===Q){do{++C;if(C>=c)break;Q=o[C]}while(10!==Q&&13!==Q);continue}const E=readToken(o,C);let u;if(E.startsWith("xref")&&(4===E.length||/\s/.test(E[4]))){C+=skipUntil(o,C,a);h.push(C);C+=skipUntil(o,C,r)}else if(u=i.exec(E)){const t=0|u[1],i=0|u[2],a=C+E.length;let r,h=!1;if(this.entries[t]){if(this.entries[t].gen===i)try{new Parser({lexer:new Lexer(n.makeSubStream(a))}).getObj();h=!0}catch(e){e instanceof ParserEOFException?warn(`indexObjects -- checking object (${E}): "${e}".`):h=!0}}else h=!0;h&&(this.entries[t]={offset:C-n.start,gen:i,uncompressed:!0});e.lastIndex=a;const Q=e.exec(g);if(Q){r=e.lastIndex+1-C;if("endobj"!==Q[1]){warn(`indexObjects: Found "${Q[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`);r-=Q[1].length+1}}else r=c-C;const d=o.subarray(C,C+r),f=skipUntil(d,0,s);if(f<r&&d[f+5]<64){l.push(C-n.start);this._xrefStms.add(C-n.start)}C+=r}else if(E.startsWith("trailer")&&(7===E.length||/\s/.test(E[7]))){h.push(C);const e=C+E.length;let i;t.lastIndex=e;const a=t.exec(g);if(a){i=t.lastIndex+1-C;if("startxref"!==a[1]){warn(`indexObjects: Found "${a[1]}" after "trailer", caused by missing "startxref" -- trying to recover.`);i-=a[1].length+1}}else i=c-C;C+=i}else C+=E.length+1}for(const e of l){this.startXRefQueue.push(e);this.readXRef(!0)}const Q=[];let E,u,d=!1;for(const e of h){n.pos=e;const t=new Parser({lexer:new Lexer(n),xref:this,allowStreams:!0,recoveryMode:!0});if(!isCmd(t.getObj(),"trailer"))continue;const i=t.getObj();if(i instanceof Dict){Q.push(i);i.has("Encrypt")&&(d=!0)}}for(const e of[...Q,"genFallback",...Q]){if("genFallback"===e){if(!u)break;this._generationFallback=!0;continue}let t=!1;try{const i=e.get("Root");if(!(i instanceof Dict))continue;const a=i.get("Pages");if(!(a instanceof Dict))continue;const r=a.get("Count");Number.isInteger(r)&&(t=!0)}catch(e){u=e;continue}if(t&&(!d||e.has("Encrypt"))&&e.has("ID"))return e;E=e}if(E)return E;if(this.topDict)return this.topDict;throw new InvalidPDFException("Invalid PDF structure.")}readXRef(e=!1){const t=this.stream,i=new Set;for(;this.startXRefQueue.length;){try{const e=this.startXRefQueue[0];if(i.has(e)){warn("readXRef - skipping XRef table since it was already parsed.");this.startXRefQueue.shift();continue}i.add(e);t.pos=e+t.start;const a=new Parser({lexer:new Lexer(t),xref:this,allowStreams:!0});let r,s=a.getObj();if(isCmd(s,"xref")){r=this.processXRefTable(a);this.topDict||(this.topDict=r);s=r.get("XRefStm");if(Number.isInteger(s)&&!this._xrefStms.has(s)){this._xrefStms.add(s);this.startXRefQueue.push(s);this.#T??=s}}else{if(!Number.isInteger(s))throw new FormatError("Invalid XRef stream header");if(!(Number.isInteger(a.getObj())&&isCmd(a.getObj(),"obj")&&(s=a.getObj())instanceof BaseStream))throw new FormatError("Invalid XRef stream");r=this.processXRefStream(s);this.topDict||(this.topDict=r);if(!r)throw new FormatError("Failed to read XRef stream")}s=r.get("Prev");Number.isInteger(s)?this.startXRefQueue.push(s):s instanceof Ref&&this.startXRefQueue.push(s.num)}catch(e){if(e instanceof MissingDataException)throw e;info("(while reading XRef): "+e)}this.startXRefQueue.shift()}if(this.topDict)return this.topDict;if(!e)throw new XRefParseException}get lastXRefStreamPos(){return this.#T??(this._xrefStms.size>0?Math.max(...this._xrefStms):null)}getEntry(e){const t=this.entries[e];return t&&!t.free&&t.offset?t:null}fetchIfRef(e,t=!1){return e instanceof Ref?this.fetch(e,t):e}fetch(e,t=!1){if(!(e instanceof Ref))throw new Error("ref object is not a reference");const i=e.num,a=this._cacheMap.get(i);if(void 0!==a){a instanceof Dict&&!a.objId&&(a.objId=e.toString());return a}let r=this.getEntry(i);if(null===r){this._cacheMap.set(i,r);return r}if(this._pendingRefs.has(e)){this._pendingRefs.remove(e);warn(`Ignoring circular reference: ${e}.`);return mt}this._pendingRefs.put(e);try{r=r.uncompressed?this.fetchUncompressed(e,r,t):this.fetchCompressed(e,r,t);this._pendingRefs.remove(e)}catch(t){this._pendingRefs.remove(e);throw t}r instanceof Dict?r.objId=e.toString():r instanceof BaseStream&&(r.dict.objId=e.toString());return r}fetchUncompressed(e,t,i=!1){const a=e.gen;let r=e.num;if(t.gen!==a){const s=`Inconsistent generation in XRef: ${e}`;if(this._generationFallback&&t.gen<a){warn(s);return this.fetchUncompressed(Ref.get(r,t.gen),t,i)}throw new XRefEntryException(s)}const s=this.stream.makeSubStream(t.offset+this.stream.start),n=new Parser({lexer:new Lexer(s),xref:this,allowStreams:!0}),o=n.getObj(),g=n.getObj(),c=n.getObj();if(o!==r||g!==a||!(c instanceof Cmd))throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${e}`);if("obj"!==c.cmd){if(c.cmd.startsWith("obj")){r=parseInt(c.cmd.substring(3),10);if(!Number.isNaN(r))return r}throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${e}`)}(t=this.encrypt&&!i?n.getObj(this.encrypt.createCipherTransform(r,a)):n.getObj())instanceof BaseStream||this._cacheMap.set(r,t);return t}fetchCompressed(e,t,i=!1){const a=t.offset,r=this.fetch(Ref.get(a,0));if(!(r instanceof BaseStream))throw new FormatError("bad ObjStm stream");const s=r.dict.get("First"),n=r.dict.get("N");if(!Number.isInteger(s)||!Number.isInteger(n))throw new FormatError("invalid first and n parameters for ObjStm stream");let o=new Parser({lexer:new Lexer(r),xref:this,allowStreams:!0});const g=new Array(n),c=new Array(n);for(let e=0;e<n;++e){const t=o.getObj();if(!Number.isInteger(t))throw new FormatError(`invalid object number in the ObjStm stream: ${t}`);const i=o.getObj();if(!Number.isInteger(i))throw new FormatError(`invalid object offset in the ObjStm stream: ${i}`);g[e]=t;c[e]=i}const C=(r.start||0)+s,h=new Array(n);for(let e=0;e<n;++e){const t=e<n-1?c[e+1]-c[e]:void 0;if(t<0)throw new FormatError("Invalid offset in the ObjStm stream.");o=new Parser({lexer:new Lexer(r.makeSubStream(C+c[e],t,r.dict)),xref:this,allowStreams:!0});const i=o.getObj();h[e]=i;if(i instanceof BaseStream)continue;const s=g[e],l=this.entries[s];l&&l.offset===a&&l.gen===e&&this._cacheMap.set(s,i)}if(void 0===(t=h[t.gen]))throw new XRefEntryException(`Bad (compressed) XRef entry: ${e}`);return t}async fetchIfRefAsync(e,t){return e instanceof Ref?this.fetchAsync(e,t):e}async fetchAsync(e,t){try{return this.fetch(e,t)}catch(i){if(!(i instanceof MissingDataException))throw i;await this.pdfManager.requestRange(i.begin,i.end);return this.fetchAsync(e,t)}}getCatalogObj(){return this.root}}const no=[0,0,612,792];class Page{constructor({pdfManager:e,xref:t,pageIndex:i,pageDict:a,ref:r,globalIdFactory:s,fontCache:n,builtInCMapCache:o,standardFontDataCache:g,globalImageCache:c,systemFontCache:C,nonBlendModesSet:h,xfaFactory:l}){this.pdfManager=e;this.pageIndex=i;this.pageDict=a;this.xref=t;this.ref=r;this.fontCache=n;this.builtInCMapCache=o;this.standardFontDataCache=g;this.globalImageCache=c;this.systemFontCache=C;this.nonBlendModesSet=h;this.evaluatorOptions=e.evaluatorOptions;this.resourcesPromise=null;this.xfaFactory=l;const Q={obj:0};this._localIdFactory=class extends s{static createObjId(){return`p${i}_${++Q.obj}`}static getPageObjId(){return`p${r.toString()}`}}}_getInheritableProperty(e,t=!1){const i=getInheritableProperty({dict:this.pageDict,key:e,getArray:t,stopWhenFound:!1});return Array.isArray(i)?1!==i.length&&i[0]instanceof Dict?Dict.merge({xref:this.xref,dictArray:i}):i[0]:i}get content(){return this.pageDict.getArray("Contents")}get resources(){const e=this._getInheritableProperty("Resources");return shadow(this,"resources",e instanceof Dict?e:Dict.empty)}_getBoundingBox(e){if(this.xfaData)return this.xfaData.bbox;const t=lookupNormalRect(this._getInheritableProperty(e,!0),null);if(t){if(t[2]-t[0]>0&&t[3]-t[1]>0)return t;warn(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return shadow(this,"mediaBox",this._getBoundingBox("MediaBox")||no)}get cropBox(){return shadow(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){let e=this.pageDict.get("UserUnit");("number"!=typeof e||e<=0)&&(e=1);return shadow(this,"userUnit",e)}get view(){const{cropBox:e,mediaBox:t}=this;if(e!==t&&!isArrayEqual(e,t)){const i=Util.intersect(e,t);if(i&&i[2]-i[0]>0&&i[3]-i[1]>0)return shadow(this,"view",i);warn("Empty /CropBox and /MediaBox intersection.")}return shadow(this,"view",t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return shadow(this,"rotate",e)}_onSubStreamError(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;warn(`getContentStream - ignoring sub-stream (${t}): "${e}".`)}getContentStream(){return this.pdfManager.ensure(this,"content").then((e=>e instanceof BaseStream?e:Array.isArray(e)?new StreamsSequenceStream(e,this._onSubStreamError.bind(this)):new NullStream))}get xfaData(){return shadow(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}#K(e,t,i){for(const a of e)if(a.id){const e=Ref.fromString(a.id);if(!e){warn(`A non-linked annotation cannot be modified: ${a.id}`);continue}if(a.deleted){t.put(e,e);continue}i?.put(e);a.ref=e;delete a.id}}async saveNewAnnotations(e,t,i,a){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const r=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),s=new RefSetCache,n=new RefSet;this.#K(i,s,n);const o=this.pageDict,g=this.annotations.filter((e=>!(e instanceof Ref&&s.has(e)))),c=await AnnotationFactory.saveNewAnnotations(r,t,i,a);for(const{ref:e}of c.annotations)e instanceof Ref&&!n.has(e)&&g.push(e);const C=o.get("Annots");o.set("Annots",g);const h=[];await writeObject(this.ref,o,h,this.xref);C&&o.set("Annots",C);const l=c.dependencies;l.push({ref:this.ref,data:h.join("")},...c.annotations);for(const e of s)l.push({ref:e,data:null});return l}save(e,t,i){const a=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const r=[];for(const s of e)s.mustBePrinted(i)&&r.push(s.save(a,t,i).catch((function(e){warn(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null})));return Promise.all(r).then((function(e){return e.filter((e=>!!e))}))}))}loadResources(e){this.resourcesPromise||=this.pdfManager.ensure(this,"resources");return this.resourcesPromise.then((()=>new ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList({handler:e,sink:t,task:i,intent:a,cacheKey:r,annotationStorage:s=null}){const n=this.getContentStream(),o=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),h=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),E=this.xfaFactory?null:getNewAnnotationsMap(s),d=E?.get(this.pageIndex);let f=Promise.resolve(null),p=null;if(d){const e=this.pdfManager.ensureDoc("annotationGlobals");let t;const a=new Set;for(const{bitmapId:e,bitmap:t}of d)!e||t||a.has(e)||a.add(e);const{isOffscreenCanvasSupported:r}=this.evaluatorOptions;if(a.size>0){const e=d.slice();for(const[t,i]of s)t.startsWith(u)&&i.bitmap&&a.has(i.bitmapId)&&e.push(i);t=AnnotationFactory.generateImages(e,this.xref,r)}else t=AnnotationFactory.generateImages(d,this.xref,r);p=new RefSet;this.#K(d,p,null);f=e.then((e=>e?AnnotationFactory.printNewAnnotations(e,h,i,d,t):null))}const m=Promise.all([n,o]).then((([s])=>{const n=new OperatorList(a,t);e.send("StartRenderPage",{transparency:h.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:r});return h.getOperatorList({stream:s,task:i,resources:this.resources,operatorList:n}).then((function(){return n}))}));return Promise.all([m,this._parsedAnnotations,f]).then((function([e,t,r]){if(r){t=t.filter((e=>!(e.ref&&p.has(e.ref))));for(let e=0,i=r.length;e<i;e++){const a=r[e];if(a.refToReplace){const s=t.findIndex((e=>e.ref&&isRefsEqual(e.ref,a.refToReplace)));if(s>=0){t.splice(s,1,a);r.splice(e--,1);i--}}}t=t.concat(r)}if(0===t.length||a&Q){e.flush(!0);return{length:e.totalLength}}const n=!!(a&l),o=!!(a&g),E=!!(a&c),u=!!(a&C),d=[];for(const e of t)(o||E&&e.mustBeViewed(s,n)||u&&e.mustBePrinted(s))&&d.push(e.getOperatorList(h,i,a,n,s).catch((function(e){warn(`getOperatorList - ignoring annotation data during "${i.name}" task: "${e}".`);return{opList:null,separateForm:!1,separateCanvas:!1}})));return Promise.all(d).then((function(t){let i=!1,a=!1;for(const{opList:r,separateForm:s,separateCanvas:n}of t){e.addOpList(r);i||=s;a||=n}e.flush(!0,{form:i,canvas:a});return{length:e.totalLength}}))}))}async extractTextContent({handler:e,task:t,includeMarkedContent:i,disableNormalization:a,sink:r}){const s=this.getContentStream(),n=this.loadResources(["ExtGState","Font","Properties","XObject"]),o=this.pdfManager.ensureCatalog("lang"),[g,,c]=await Promise.all([s,n,o]);return new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}).getTextContent({stream:g,task:t,resources:this.resources,includeMarkedContent:i,disableNormalization:a,sink:r,viewBox:this.view,lang:c})}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;return(await this.pdfManager.ensure(this,"_parseStructTree",[e])).serializable}_parseStructTree(e){const t=new StructTreePage(e,this.pageDict);t.parse(this.ref);return t}async getAnnotationsData(e,t,i){const a=await this._parsedAnnotations;if(0===a.length)return a;const r=[],s=[];let n;const o=!!(i&g),h=!!(i&c),l=!!(i&C);for(const i of a){const a=o||h&&i.viewable;(a||l&&i.printable)&&r.push(i.data);if(i.hasTextContent&&a){n||=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});s.push(i.extractTextContent(n,t,[-1/0,-1/0,1/0,1/0]).catch((function(e){warn(`getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`)})))}}await Promise.all(s);return r}get annotations(){const e=this._getInheritableProperty("Annots");return shadow(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){return shadow(this,"_parsedAnnotations",this.pdfManager.ensure(this,"annotations").then((async e=>{if(0===e.length)return e;const t=await this.pdfManager.ensureDoc("annotationGlobals");if(!t)return[];const i=[];for(const a of e)i.push(AnnotationFactory.create(this.xref,a,t,this._localIdFactory,!1,this.ref).catch((function(e){warn(`_parsedAnnotations: "${e}".`);return null})));const a=[];let r,s;for(const e of await Promise.all(i))e&&(e instanceof WidgetAnnotation?(s||=[]).push(e):e instanceof PopupAnnotation?(r||=[]).push(e):a.push(e));s&&a.push(...s);r&&a.push(...r);return a})))}get jsActions(){return shadow(this,"jsActions",collectActions(this.xref,this.pageDict,mA))}}const oo=new Uint8Array([37,80,68,70,45]),go=new Uint8Array([115,116,97,114,116,120,114,101,102]),Io=new Uint8Array([101,110,100,111,98,106]);function find(e,t,i=1024,a=!1){const r=t.length,s=e.peekBytes(i),n=s.length-r;if(n<=0)return!1;if(a){const i=r-1;let a=s.length-1;for(;a>=i;){let n=0;for(;n<r&&s[a-n]===t[i-n];)n++;if(n>=r){e.pos+=a-i;return!0}a--}}else{let i=0;for(;i<=n;){let a=0;for(;a<r&&s[i+a]===t[a];)a++;if(a>=r){e.pos+=i;return!0}i++}}return!1}class PDFDocument{constructor(e,t){if(t.length<=0)throw new InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e;this.stream=t;this.xref=new XRef(t,e);this._pagePromises=new Map;this._version=null;const i={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++i.font}static createObjId(){unreachable("Abstract method `createObjId` called.")}static getPageObjId(){unreachable("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e);this.catalog=new Catalog(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=Linearization.create(this.stream)}catch(e){if(e instanceof MissingDataException)throw e;info(e)}return shadow(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization){e.reset();if(find(e,Io)){e.skip(6);let i=e.peekByte();for(;isWhiteSpace(i);){e.pos++;i=e.peekByte()}t=e.pos-e.start}}else{const i=1024,a=go.length;let r=!1,s=e.end;for(;!r&&s>0;){s-=i-a;s<0&&(s=0);e.pos=s;r=find(e,go,i,!0)}if(r){e.skip(9);let i;do{i=e.getByte()}while(isWhiteSpace(i));let a="";for(;i>=32&&i<=57;){a+=String.fromCharCode(i);i=e.getByte()}t=parseInt(a,10);isNaN(t)&&(t=0)}}return shadow(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,oo))return;e.moveStart();e.skip(oo.length);let t,i="";for(;(t=e.getByte())>32&&i.length<7;)i+=String.fromCharCode(t);St.test(i)?this._version=i:warn(`Invalid PDF header version: ${i}`)}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages;return shadow(this,"numPages",e)}_hasOnlyDocumentSignatures(e,t=0){return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof Dict))return!1;if(e.has("Kids")){if(++t>10){warn("_hasOnlyDocumentSignatures: maximum recursion depth reached");return!1}return this._hasOnlyDocumentSignatures(e.get("Kids"),t)}const i=isName(e.get("FT"),"Sig"),a=e.get("Rect"),r=Array.isArray(a)&&a.every((e=>0===e));return i&&r}))}get _xfaStreams(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),i={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof BaseStream&&!t.isEmpty){i["xdp:xdp"]=t;return i}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,a=t.length;e<a;e+=2){let r;r=0===e?"xdp:xdp":e===a-2?"/xdp:xdp":t[e];if(!i.hasOwnProperty(r))continue;const s=this.xref.fetchIfRef(t[e+1]);s instanceof BaseStream&&!s.isEmpty&&(i[r]=s)}return i}get xfaDatasets(){const e=this._xfaStreams;if(!e)return shadow(this,"xfaDatasets",null);for(const t of["datasets","xdp:xdp"]){const i=e[t];if(i)try{const e=stringToUTF8String(i.getString());return shadow(this,"xfaDatasets",new DatasetReader({[t]:e}))}catch{warn("XFA - Invalid utf-8 string.");break}}return shadow(this,"xfaDatasets",null)}get xfaData(){const e=this._xfaStreams;if(!e)return null;const t=Object.create(null);for(const[i,a]of Object.entries(e))if(a)try{t[i]=stringToUTF8String(a.getString())}catch{warn("XFA - Invalid utf-8 string.");return null}return t}get xfaFactory(){let e;this.pdfManager.enableXfa&&this.catalog.needsRendering&&this.formInfo.hasXfa&&!this.formInfo.hasAcroForm&&(e=this.xfaData);return shadow(this,"xfaFactory",e?new XFAFactory(e):null)}get isPureXfa(){return!!this.xfaFactory&&this.xfaFactory.isValid()}get htmlForXfa(){return this.xfaFactory?this.xfaFactory.getPages():null}async loadXfaImages(){const e=await this.pdfManager.ensureCatalog("xfaImages");if(!e)return;const t=e.getKeys(),i=new ObjectLoader(e,t,this.xref);await i.load();const a=new Map;for(const i of t){const t=e.get(i);t instanceof BaseStream&&a.set(i,t.getBytes())}this.xfaFactory.setImages(a)}async loadXfaFonts(e,t){const i=await this.pdfManager.ensureCatalog("acroForm");if(!i)return;const a=await i.getAsync("DR");if(!(a instanceof Dict))return;const r=new ObjectLoader(a,["Font"],this.xref);await r.load();const s=a.get("Font");if(!(s instanceof Dict))return;const n=Object.assign(Object.create(null),this.pdfManager.evaluatorOptions);n.useSystemFonts=!1;const o=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:-1,idFactory:this._globalIdFactory,fontCache:this.catalog.fontCache,builtInCMapCache:this.catalog.builtInCMapCache,standardFontDataCache:this.catalog.standardFontDataCache,options:n}),g=new OperatorList,c=[],C={get font(){return c.at(-1)},set font(e){c.push(e)},clone(){return this}},h=new Map;s.forEach(((e,t)=>{h.set(e,t)}));const l=[];for(const[e,i]of h){const r=i.get("FontDescriptor");if(!(r instanceof Dict))continue;let s=r.get("FontFamily");s=s.replaceAll(/[ ]+(\d)/g,"$1");const n={fontFamily:s,fontWeight:r.get("FontWeight"),italicAngle:-r.get("ItalicAngle")};validateCSSFont(n)&&l.push(o.handleSetFont(a,[Name.get(e),1],null,g,t,C,null,n).catch((function(e){warn(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(l);const Q=this.xfaFactory.setFonts(c);if(!Q)return;n.ignoreErrors=!0;l.length=0;c.length=0;const E=new Set;for(const e of Q)getXfaFontName(`${e}-Regular`)||E.add(e);E.size&&Q.push("PdfJS-Fallback");for(const e of Q)if(!E.has(e))for(const i of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const r=`${e}-${i.name}`,s=getXfaFontDict(r);l.push(o.handleSetFont(a,[Name.get(r),1],null,g,t,C,s,{fontFamily:e,fontWeight:i.fontWeight,italicAngle:i.italicAngle}).catch((function(e){warn(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(l);this.xfaFactory.appendFonts(c,E)}async serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this._version}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},t=this.catalog.acroForm;if(!t)return shadow(this,"formInfo",e);try{const i=t.get("Fields"),a=Array.isArray(i)&&i.length>0;e.hasFields=a;const r=t.get("XFA");e.hasXfa=Array.isArray(r)&&r.length>0||r instanceof BaseStream&&!r.isEmpty;const s=!!(1&t.get("SigFlags")),n=s&&this._hasOnlyDocumentSignatures(i);e.hasAcroForm=a&&!n;e.hasSignatures=s}catch(e){if(e instanceof MissingDataException)throw e;warn(`Cannot fetch form information: "${e}".`)}return shadow(this,"formInfo",e)}get documentInfo(){const e={PDFFormatVersion:this.version,Language:this.catalog.lang,EncryptFilterName:this.xref.encrypt?this.xref.encrypt.filterName:null,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};let t;try{t=this.xref.trailer.get("Info")}catch(e){if(e instanceof MissingDataException)throw e;info("The document information dictionary is invalid.")}if(!(t instanceof Dict))return shadow(this,"documentInfo",e);for(const i of t.getKeys()){const a=t.get(i);switch(i){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof a){e[i]=stringToPDFString(a);continue}break;case"Trapped":if(a instanceof Name){e[i]=a;continue}break;default:let t;switch(typeof a){case"string":t=stringToPDFString(a);break;case"number":case"boolean":t=a;break;default:a instanceof Name&&(t=a)}if(void 0===t){warn(`Bad value, for custom key "${i}", in Info: ${a}.`);continue}e.Custom||(e.Custom=Object.create(null));e.Custom[i]=t;continue}warn(`Bad value, for key "${i}", in Info: ${a}.`)}return shadow(this,"documentInfo",e)}get fingerprints(){function validate(e){return"string"==typeof e&&e.length>0&&"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"!==e}function hexString(e){const t=[];for(const i of e){const e=i.toString(16);t.push(e.padStart(2,"0"))}return t.join("")}const e=this.xref.trailer.get("ID");let t,i;if(Array.isArray(e)&&validate(e[0])){t=stringToBytes(e[0]);e[1]!==e[0]&&validate(e[1])&&(i=stringToBytes(e[1]))}else t=vr(this.stream.getByteRange(0,1024),0,1024);return shadow(this,"fingerprints",[hexString(t),i?hexString(i):null])}async _getLinearizationPage(e){const{catalog:t,linearization:i,xref:a}=this,r=Ref.get(i.objectNumberFirst,0);try{const e=await a.fetchAsync(r);if(e instanceof Dict){let i=e.getRaw("Type");i instanceof Ref&&(i=await a.fetchAsync(i));if(isName(i,"Page")||!e.has("Type")&&!e.has("Kids")&&e.has("Contents")){t.pageKidsCountCache.has(r)||t.pageKidsCountCache.put(r,1);t.pageIndexCache.has(r)||t.pageIndexCache.put(r,0);return[e,r]}}throw new FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(i){warn(`_getLinearizationPage: "${i.message}".`);return t.getPageDict(e)}}getPage(e){const t=this._pagePromises.get(e);if(t)return t;const{catalog:i,linearization:a,xfaFactory:r}=this;let s;s=r?Promise.resolve([Dict.empty,null]):a?.pageFirst===e?this._getLinearizationPage(e):i.getPageDict(e);s=s.then((([t,a])=>new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:t,ref:a,globalIdFactory:this._globalIdFactory,fontCache:i.fontCache,builtInCMapCache:i.builtInCMapCache,standardFontDataCache:i.standardFontDataCache,globalImageCache:i.globalImageCache,systemFontCache:i.systemFontCache,nonBlendModesSet:i.nonBlendModesSet,xfaFactory:r})));this._pagePromises.set(e,s);return s}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(e){if(e instanceof XRefEntryException){this._pagePromises.delete(0);await this.cleanup();throw new XRefParseException}}}async checkLastPage(e=!1){const{catalog:t,pdfManager:i}=this;t.setActualNumPages();let a;try{await Promise.all([i.ensureDoc("xfaFactory"),i.ensureDoc("linearization"),i.ensureCatalog("numPages")]);if(this.xfaFactory)return;a=this.linearization?this.linearization.numPages:t.numPages;if(!Number.isInteger(a))throw new FormatError("Page count is not an integer.");if(a<=1)return;await this.getPage(a-1)}catch(r){this._pagePromises.delete(a-1);await this.cleanup();if(r instanceof XRefEntryException&&!e)throw new XRefParseException;warn(`checkLastPage - invalid /Pages tree /Count: ${a}.`);let s;try{s=await t.getAllPageDicts(e)}catch(i){if(i instanceof XRefEntryException&&!e)throw new XRefParseException;t.setActualNumPages(1);return}for(const[e,[a,r]]of s){let s;if(a instanceof Error){s=Promise.reject(a);s.catch((()=>{}))}else s=Promise.resolve(new Page({pdfManager:i,xref:this.xref,pageIndex:e,pageDict:a,ref:r,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null}));this._pagePromises.set(e,s)}t.setActualNumPages(s.size)}}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):clearGlobalCaches()}async#q(e,t,i,a,r){const{xref:s}=this;if(!(t instanceof Ref)||r.has(t))return;r.put(t);const n=await s.fetchAsync(t);if(!(n instanceof Dict))return;if(n.has("T")){const t=stringToPDFString(await n.getAsync("T"));e=""===e?t:`${e}.${t}`}else{let t=n;for(;;){t=t.getRaw("Parent");if(t instanceof Ref){if(r.has(t))break;t=await s.fetchAsync(t)}if(!(t instanceof Dict))break;if(t.has("T")){const i=stringToPDFString(await t.getAsync("T"));e=""===e?i:`${e}.${i}`;break}}}i.has(e)||i.set(e,[]);i.get(e).push(AnnotationFactory.create(s,t,a,null,!0,null).then((e=>e?.getFieldObject())).catch((function(e){warn(`#collectFieldObjects: "${e}".`);return null})));if(!n.has("Kids"))return;const o=await n.getAsync("Kids");if(Array.isArray(o))for(const t of o)await this.#q(e,t,i,a,r)}get fieldObjects(){if(!this.formInfo.hasFields)return shadow(this,"fieldObjects",Promise.resolve(null));return shadow(this,"fieldObjects",Promise.all([this.pdfManager.ensureDoc("annotationGlobals"),this.pdfManager.ensureCatalog("acroForm")]).then((async([e,t])=>{if(!e)return null;const i=new RefSet,a=Object.create(null),r=new Map;for(const a of await t.getAsync("Fields"))await this.#q("",a,r,e,i);const s=[];for(const[e,t]of r)s.push(Promise.all(t).then((t=>{(t=t.filter((e=>!!e))).length>0&&(a[e]=t)})));await Promise.all(s);return a})))}get hasJSActions(){return shadow(this,"hasJSActions",this.pdfManager.ensureDoc("_parseHasJSActions"))}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm;if(!e?.has("CO"))return shadow(this,"calculationOrderIds",null);const t=e.get("CO");if(!Array.isArray(t)||0===t.length)return shadow(this,"calculationOrderIds",null);const i=[];for(const e of t)e instanceof Ref&&i.push(e.toString());return 0===i.length?shadow(this,"calculationOrderIds",null):shadow(this,"calculationOrderIds",i)}get annotationGlobals(){return shadow(this,"annotationGlobals",AnnotationFactory.createGlobals(this.pdfManager))}}class BasePdfManager{constructor(e){this.constructor===BasePdfManager&&unreachable("Cannot initialize BasePdfManager.");this._docBaseUrl=function parseDocBaseUrl(e){if(e){const t=createValidAbsoluteUrl(e);if(t)return t.href;warn(`Invalid absolute docBaseUrl: "${e}".`)}return null}(e.docBaseUrl);this._docId=e.docId;this._password=e.password;this.enableXfa=e.enableXfa;e.evaluatorOptions.isOffscreenCanvasSupported&&=FeatureTest.isOffscreenCanvasSupported;this.evaluatorOptions=Object.freeze(e.evaluatorOptions)}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}get catalog(){return this.pdfDocument.catalog}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,i){unreachable("Abstract method `ensure` called")}requestRange(e,t){unreachable("Abstract method `requestRange` called")}requestLoadedStream(e=!1){unreachable("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){unreachable("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e}terminate(e){unreachable("Abstract method `terminate` called")}}class LocalPdfManager extends BasePdfManager{constructor(e){super(e);const t=new Stream(e.source);this.pdfDocument=new PDFDocument(this,t);this._loadedStreamPromise=Promise.resolve(t)}async ensure(e,t,i){const a=e[t];return"function"==typeof a?a.apply(e,i):a}requestRange(e,t){return Promise.resolve()}requestLoadedStream(e=!1){return this._loadedStreamPromise}terminate(e){}}class NetworkPdfManager extends BasePdfManager{constructor(e){super(e);this.streamManager=new ChunkedStreamManager(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize});this.pdfDocument=new PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,i){try{const a=e[t];return"function"==typeof a?a.apply(e,i):a}catch(a){if(!(a instanceof MissingDataException))throw a;await this.requestRange(a.begin,a.end);return this.ensure(e,t,i)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(e=!1){return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}const co=1,Co=2,ho=1,lo=2,Bo=3,Qo=4,Eo=5,uo=6,fo=7,po=8;function wrapReason(e){e instanceof Error||"object"==typeof e&&null!==e||unreachable('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(e.name){case"AbortException":return new AbortException(e.message);case"MissingPDFException":return new MissingPDFException(e.message);case"PasswordException":return new PasswordException(e.message,e.code);case"UnexpectedResponseException":return new UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new UnknownErrorException(e.message,e.details);default:return new UnknownErrorException(e.message,e.toString())}}class MessageHandler{constructor(e,t,i){this.sourceName=e;this.targetName=t;this.comObj=i;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream){this.#O(t);return}if(t.callback){const e=t.callbackId,i=this.callbackCapabilities[e];if(!i)throw new Error(`Cannot resolve callback ${e}`);delete this.callbackCapabilities[e];if(t.callback===co)i.resolve(t.data);else{if(t.callback!==Co)throw new Error("Unexpected callback case");i.reject(wrapReason(t.reason))}return}const a=this.actionHandler[t.action];if(!a)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const e=this.sourceName,r=t.sourceName;new Promise((function(e){e(a(t.data))})).then((function(a){i.postMessage({sourceName:e,targetName:r,callback:co,callbackId:t.callbackId,data:a})}),(function(a){i.postMessage({sourceName:e,targetName:r,callback:Co,callbackId:t.callbackId,reason:wrapReason(a)})}))}else t.streamId?this.#P(t):a(t.data)};i.addEventListener("message",this._onComObjOnMessage)}on(e,t){const i=this.actionHandler;if(i[e])throw new Error(`There is already an actionName called "${e}"`);i[e]=t}send(e,t,i){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},i)}sendWithPromise(e,t,i){const a=this.callbackId++,r=Promise.withResolvers();this.callbackCapabilities[a]=r;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:a,data:t},i)}catch(e){r.reject(e)}return r.promise}sendWithStream(e,t,i,a){const r=this.streamId++,s=this.sourceName,n=this.targetName,o=this.comObj;return new ReadableStream({start:i=>{const g=Promise.withResolvers();this.streamControllers[r]={controller:i,startCall:g,pullCall:null,cancelCall:null,isClosed:!1};o.postMessage({sourceName:s,targetName:n,action:e,streamId:r,data:t,desiredSize:i.desiredSize},a);return g.promise},pull:e=>{const t=Promise.withResolvers();this.streamControllers[r].pullCall=t;o.postMessage({sourceName:s,targetName:n,stream:uo,streamId:r,desiredSize:e.desiredSize});return t.promise},cancel:e=>{assert(e instanceof Error,"cancel must have a valid reason");const t=Promise.withResolvers();this.streamControllers[r].cancelCall=t;this.streamControllers[r].isClosed=!0;o.postMessage({sourceName:s,targetName:n,stream:ho,streamId:r,reason:wrapReason(e)});return t.promise}},i)}#P(e){const t=e.streamId,i=this.sourceName,a=e.sourceName,r=this.comObj,s=this,n=this.actionHandler[e.action],o={enqueue(e,s=1,n){if(this.isCancelled)return;const o=this.desiredSize;this.desiredSize-=s;if(o>0&&this.desiredSize<=0){this.sinkCapability=Promise.withResolvers();this.ready=this.sinkCapability.promise}r.postMessage({sourceName:i,targetName:a,stream:Qo,streamId:t,chunk:e},n)},close(){if(!this.isCancelled){this.isCancelled=!0;r.postMessage({sourceName:i,targetName:a,stream:Bo,streamId:t});delete s.streamSinks[t]}},error(e){assert(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;r.postMessage({sourceName:i,targetName:a,stream:Eo,streamId:t,reason:wrapReason(e)})}},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};o.sinkCapability.resolve();o.ready=o.sinkCapability.promise;this.streamSinks[t]=o;new Promise((function(t){t(n(e.data,o))})).then((function(){r.postMessage({sourceName:i,targetName:a,stream:po,streamId:t,success:!0})}),(function(e){r.postMessage({sourceName:i,targetName:a,stream:po,streamId:t,reason:wrapReason(e)})}))}#O(e){const t=e.streamId,i=this.sourceName,a=e.sourceName,r=this.comObj,s=this.streamControllers[t],n=this.streamSinks[t];switch(e.stream){case po:e.success?s.startCall.resolve():s.startCall.reject(wrapReason(e.reason));break;case fo:e.success?s.pullCall.resolve():s.pullCall.reject(wrapReason(e.reason));break;case uo:if(!n){r.postMessage({sourceName:i,targetName:a,stream:fo,streamId:t,success:!0});break}n.desiredSize<=0&&e.desiredSize>0&&n.sinkCapability.resolve();n.desiredSize=e.desiredSize;new Promise((function(e){e(n.onPull?.())})).then((function(){r.postMessage({sourceName:i,targetName:a,stream:fo,streamId:t,success:!0})}),(function(e){r.postMessage({sourceName:i,targetName:a,stream:fo,streamId:t,reason:wrapReason(e)})}));break;case Qo:assert(s,"enqueue should have stream controller");if(s.isClosed)break;s.controller.enqueue(e.chunk);break;case Bo:assert(s,"close should have stream controller");if(s.isClosed)break;s.isClosed=!0;s.controller.close();this.#W(s,t);break;case Eo:assert(s,"error should have stream controller");s.controller.error(wrapReason(e.reason));this.#W(s,t);break;case lo:e.success?s.cancelCall.resolve():s.cancelCall.reject(wrapReason(e.reason));this.#W(s,t);break;case ho:if(!n)break;new Promise((function(t){t(n.onCancel?.(wrapReason(e.reason)))})).then((function(){r.postMessage({sourceName:i,targetName:a,stream:lo,streamId:t,success:!0})}),(function(e){r.postMessage({sourceName:i,targetName:a,stream:lo,streamId:t,reason:wrapReason(e)})}));n.sinkCapability.reject(wrapReason(e.reason));n.isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async#W(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]);delete this.streamControllers[t]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}class PDFWorkerStream{constructor(e){this._msgHandler=e;this._contentLength=null;this._fullRequestReader=null;this._rangeRequestReaders=[]}getFullReader(){assert(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once.");this._fullRequestReader=new PDFWorkerStreamReader(this._msgHandler);return this._fullRequestReader}getRangeReader(e,t){const i=new PDFWorkerStreamRangeReader(e,t,this._msgHandler);this._rangeRequestReaders.push(i);return i}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}}class PDFWorkerStreamReader{constructor(e){this._msgHandler=e;this.onProgress=null;this._contentLength=null;this._isRangeSupported=!1;this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader();this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported;this._isRangeSupported=e.isRangeSupported;this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class PDFWorkerStreamRangeReader{constructor(e,t,i){this._msgHandler=i;this.onProgress=null;const a=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=a.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class WorkerTask{constructor(e){this.name=e;this.terminated=!1;this._capability=Promise.withResolvers()}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}class WorkerMessageHandler{static setup(e,t){let i=!1;e.on("test",(function(t){if(!i){i=!0;e.send("test",t instanceof Uint8Array)}}));e.on("configure",(function(e){!function setVerbosityLevel(e){Number.isInteger(e)&&(nt=e)}(e.verbosity)}));e.on("GetDocRequest",(function(e){return WorkerMessageHandler.createDocumentHandler(e,t)}))}static createDocumentHandler(e,t){let i,a=!1,r=null;const s=new Set,n=getVerbosityLevel(),{docId:o,apiVersion:g}=e,c="4.4.168";if(g!==c)throw new Error(`The API version "${g}" does not match the Worker version "${c}".`);const C=[];for(const e in[])C.push(e);if(C.length)throw new Error("The `Array.prototype` contains unexpected enumerable properties: "+C.join(", ")+"; thus breaking e.g. `for...in` iteration of `Array`s.");const h=o+"_worker";let l=new MessageHandler(h,o,t);function ensureNotTerminated(){if(a)throw new Error("Worker was terminated")}function startWorkerTask(e){s.add(e)}function finishWorkerTask(e){e.finish();s.delete(e)}async function loadDocument(e){await i.ensureDoc("checkHeader");await i.ensureDoc("parseStartXRef");await i.ensureDoc("parse",[e]);await i.ensureDoc("checkFirstPage",[e]);await i.ensureDoc("checkLastPage",[e]);const t=await i.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaFonts");startWorkerTask(e);await Promise.all([i.loadXfaFonts(l,e).catch((e=>{})).then((()=>finishWorkerTask(e))),i.loadXfaImages()])}const[a,r]=await Promise.all([i.ensureDoc("numPages"),i.ensureDoc("fingerprints")]);return{numPages:a,fingerprints:r,htmlForXfa:t?await i.ensureDoc("htmlForXfa"):null}}function getPdfManager({data:e,password:t,disableAutoFetch:i,rangeChunkSize:a,length:s,docBaseUrl:n,enableXfa:g,evaluatorOptions:c}){const C={source:null,disableAutoFetch:i,docBaseUrl:n,docId:o,enableXfa:g,evaluatorOptions:c,handler:l,length:s,password:t,rangeChunkSize:a},h=Promise.withResolvers();let Q;if(e){try{C.source=e;Q=new LocalPdfManager(C);h.resolve(Q)}catch(e){h.reject(e)}return h.promise}let E,u=[];try{E=new PDFWorkerStream(l)}catch(e){h.reject(e);return h.promise}const d=E.getFullReader();d.headersReady.then((function(){if(d.isRangeSupported){C.source=E;C.length=d.contentLength;C.disableAutoFetch||=d.isStreamingSupported;Q=new NetworkPdfManager(C);for(const e of u)Q.sendProgressiveData(e);u=[];h.resolve(Q);r=null}})).catch((function(e){h.reject(e);r=null}));let f=0;new Promise((function(e,t){const readChunk=function({value:e,done:i}){try{ensureNotTerminated();if(i){Q||function(){const e=arrayBuffersToBytes(u);s&&e.length!==s&&warn("reported HTTP length is different from actual");try{C.source=e;Q=new LocalPdfManager(C);h.resolve(Q)}catch(e){h.reject(e)}u=[]}();r=null;return}f+=e.byteLength;d.isStreamingSupported||l.send("DocProgress",{loaded:f,total:Math.max(f,d.contentLength||0)});Q?Q.sendProgressiveData(e):u.push(e);d.read().then(readChunk,t)}catch(e){t(e)}};d.read().then(readChunk,t)})).catch((function(e){h.reject(e);r=null}));r=function(e){E.cancelAllRequests(e)};return h.promise}l.on("GetPage",(function(e){return i.getPage(e.pageIndex).then((function(e){return Promise.all([i.ensure(e,"rotate"),i.ensure(e,"ref"),i.ensure(e,"userUnit"),i.ensure(e,"view")]).then((function([e,t,i,a]){return{rotate:e,ref:t,refStr:t?.toString()??null,userUnit:i,view:a}}))}))}));l.on("GetPageIndex",(function(e){const t=Ref.get(e.num,e.gen);return i.ensureCatalog("getPageIndex",[t])}));l.on("GetDestinations",(function(e){return i.ensureCatalog("destinations")}));l.on("GetDestination",(function(e){return i.ensureCatalog("getDestination",[e.id])}));l.on("GetPageLabels",(function(e){return i.ensureCatalog("pageLabels")}));l.on("GetPageLayout",(function(e){return i.ensureCatalog("pageLayout")}));l.on("GetPageMode",(function(e){return i.ensureCatalog("pageMode")}));l.on("GetViewerPreferences",(function(e){return i.ensureCatalog("viewerPreferences")}));l.on("GetOpenAction",(function(e){return i.ensureCatalog("openAction")}));l.on("GetAttachments",(function(e){return i.ensureCatalog("attachments")}));l.on("GetDocJSActions",(function(e){return i.ensureCatalog("jsActions")}));l.on("GetPageJSActions",(function({pageIndex:e}){return i.getPage(e).then((function(e){return i.ensure(e,"jsActions")}))}));l.on("GetOutline",(function(e){return i.ensureCatalog("documentOutline")}));l.on("GetOptionalContentConfig",(function(e){return i.ensureCatalog("optionalContentConfig")}));l.on("GetPermissions",(function(e){return i.ensureCatalog("permissions")}));l.on("GetMetadata",(function(e){return Promise.all([i.ensureDoc("documentInfo"),i.ensureCatalog("metadata")])}));l.on("GetMarkInfo",(function(e){return i.ensureCatalog("markInfo")}));l.on("GetData",(function(e){return i.requestLoadedStream().then((function(e){return e.bytes}))}));l.on("GetAnnotations",(function({pageIndex:e,intent:t}){return i.getPage(e).then((function(i){const a=new WorkerTask(`GetAnnotations: page ${e}`);startWorkerTask(a);return i.getAnnotationsData(l,a,t).then((e=>{finishWorkerTask(a);return e}),(e=>{finishWorkerTask(a);throw e}))}))}));l.on("GetFieldObjects",(function(e){return i.ensureDoc("fieldObjects")}));l.on("HasJSActions",(function(e){return i.ensureDoc("hasJSActions")}));l.on("GetCalculationOrderIds",(function(e){return i.ensureDoc("calculationOrderIds")}));l.on("SaveDocument",(async function({isPureXfa:e,numPages:t,annotationStorage:a,filename:r}){const s=[i.requestLoadedStream(),i.ensureCatalog("acroForm"),i.ensureCatalog("acroFormRef"),i.ensureDoc("startXRef"),i.ensureDoc("xref"),i.ensureDoc("linearization"),i.ensureCatalog("structTreeRoot")],n=[],o=e?null:getNewAnnotationsMap(a),[g,c,C,h,Q,E,u]=await Promise.all(s),d=Q.trailer.getRaw("Root")||null;let f;if(o){u?await u.canUpdateStructTree({pdfManager:i,xref:Q,newAnnotationsByPage:o})&&(f=u):await StructTreeRoot.canCreateStructureTree({catalogRef:d,pdfManager:i,newAnnotationsByPage:o})&&(f=null);const e=AnnotationFactory.generateImages(a.values(),Q,i.evaluatorOptions.isOffscreenCanvasSupported),t=void 0===f?n:[];for(const[a,r]of o)t.push(i.getPage(a).then((t=>{const i=new WorkerTask(`Save (editor): page ${a}`);return t.saveNewAnnotations(l,i,r,e).finally((function(){finishWorkerTask(i)}))})));null===f?n.push(Promise.all(t).then((async e=>{await StructTreeRoot.createStructureTree({newAnnotationsByPage:o,xref:Q,catalogRef:d,pdfManager:i,newRefs:e});return e}))):f&&n.push(Promise.all(t).then((async e=>{await f.updateStructureTree({newAnnotationsByPage:o,pdfManager:i,newRefs:e});return e})))}if(e)n.push(i.serializeXfaData(a));else for(let e=0;e<t;e++)n.push(i.getPage(e).then((function(t){const i=new WorkerTask(`Save: page ${e}`);return t.save(l,i,a).finally((function(){finishWorkerTask(i)}))})));const p=await Promise.all(n);let m=[],y=null;if(e){y=p[0];if(!y)return g.bytes}else{m=p.flat(2);if(0===m.length)return g.bytes}const w=C&&c instanceof Dict&&m.some((e=>e.needAppearances)),b=c instanceof Dict&&c.get("XFA")||null;let D=null,S=!1;if(Array.isArray(b)){for(let e=0,t=b.length;e<t;e+=2)if("datasets"===b[e]){D=b[e+1];S=!0}null===D&&(D=Q.getNewTemporaryRef())}else b&&warn("Unsupported XFA type.");let k=Object.create(null);if(Q.trailer){const e=Object.create(null),t=Q.trailer.get("Info")||null;t instanceof Dict&&t.forEach(((t,i)=>{"string"==typeof i&&(e[t]=stringToPDFString(i))}));k={rootRef:d,encryptRef:Q.trailer.getRaw("Encrypt")||null,newRef:Q.getNewTemporaryRef(),infoRef:Q.trailer.getRaw("Info")||null,info:e,fileIds:Q.trailer.get("ID")||null,startXRef:E?h:Q.lastXRefStreamPos??h,filename:r}}return incrementalUpdate({originalData:g.bytes,xrefInfo:k,newRefs:m,xref:Q,hasXfa:!!b,xfaDatasetsRef:D,hasXfaDatasetsEntry:S,needAppearances:w,acroFormRef:C,acroForm:c,xfaData:y,useXrefStream:isDict(Q.topDict,"XRef")}).finally((()=>{Q.resetNewTemporaryRef()}))}));l.on("GetOperatorList",(function(e,t){const a=e.pageIndex;i.getPage(a).then((function(i){const r=new WorkerTask(`GetOperatorList: page ${a}`);startWorkerTask(r);const s=n>=yA.INFOS?Date.now():0;i.getOperatorList({handler:l,sink:t,task:r,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage}).then((function(e){finishWorkerTask(r);s&&info(`page=${a+1} - getOperatorList: time=${Date.now()-s}ms, len=${e.length}`);t.close()}),(function(e){finishWorkerTask(r);r.terminated||t.error(e)}))}))}));l.on("GetTextContent",(function(e,t){const{pageIndex:a,includeMarkedContent:r,disableNormalization:s}=e;i.getPage(a).then((function(e){const i=new WorkerTask("GetTextContent: page "+a);startWorkerTask(i);const o=n>=yA.INFOS?Date.now():0;e.extractTextContent({handler:l,task:i,sink:t,includeMarkedContent:r,disableNormalization:s}).then((function(){finishWorkerTask(i);o&&info(`page=${a+1} - getTextContent: time=`+(Date.now()-o)+"ms");t.close()}),(function(e){finishWorkerTask(i);i.terminated||t.error(e)}))}))}));l.on("GetStructTree",(function(e){return i.getPage(e.pageIndex).then((function(e){return i.ensure(e,"getStructTree")}))}));l.on("FontFallback",(function(e){return i.fontFallback(e.id,l)}));l.on("Cleanup",(function(e){return i.cleanup(!0)}));l.on("Terminate",(function(e){a=!0;const t=[];if(i){i.terminate(new AbortException("Worker was terminated."));const e=i.cleanup();t.push(e);i=null}else clearGlobalCaches();r&&r(new AbortException("Worker was terminated."));for(const e of s){t.push(e.finished);e.terminate()}return Promise.all(t).then((function(){l.destroy();l=null}))}));l.on("Ready",(function(t){!function setupDoc(e){function onSuccess(e){ensureNotTerminated();l.send("GetDoc",{pdfInfo:e})}function onFailure(e){ensureNotTerminated();if(e instanceof PasswordException){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);l.sendWithPromise("PasswordRequest",e).then((function({password:e}){finishWorkerTask(t);i.updatePassword(e);pdfManagerReady()})).catch((function(){finishWorkerTask(t);l.send("DocException",e)}))}else e instanceof InvalidPDFException||e instanceof MissingPDFException||e instanceof UnexpectedResponseException||e instanceof UnknownErrorException?l.send("DocException",e):l.send("DocException",new UnknownErrorException(e.message,e.toString()))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,(function(e){ensureNotTerminated();e instanceof XRefParseException?i.requestLoadedStream().then((function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)})):onFailure(e)}))}ensureNotTerminated();getPdfManager(e).then((function(e){if(a){e.terminate(new AbortException("Worker was terminated."));throw new Error("Worker was terminated")}i=e;i.requestLoadedStream(!0).then((e=>{l.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(pdfManagerReady,onFailure)}(e);e=null}));return h}static initializeFromPort(e){const t=new MessageHandler("worker","main",e);WorkerMessageHandler.setup(t,e);t.send("ready",null)}}"undefined"==typeof window&&!i&&"undefined"!=typeof self&&function isMessagePort(e){return"function"==typeof e.postMessage&&"onmessage"in e}(self)&&WorkerMessageHandler.initializeFromPort(self);var mo=__webpack_exports__.WorkerMessageHandler;export{mo as WorkerMessageHandler}; \ No newline at end of file diff --git a/apps/web/screens/Article/Article.tsx b/apps/web/screens/Article/Article.tsx index 18ae19782f75..b78ff4fc6cca 100644 --- a/apps/web/screens/Article/Article.tsx +++ b/apps/web/screens/Article/Article.tsx @@ -850,7 +850,7 @@ ArticleScreen.getProps = async ({ apolloClient, query, locale }) => { }) .then((content) => { // map data here to reduce data processing in component - return JSON.parse(content?.data?.getNamespace?.fields ?? '{}') + return JSON.parse(content?.data?.getNamespace?.fields || '{}') }), ]) diff --git a/apps/web/screens/Article/components/ArticleChatPanel/config.ts b/apps/web/screens/Article/components/ArticleChatPanel/config.ts index 7d4bd14001a1..8b4f165bb28e 100644 --- a/apps/web/screens/Article/components/ArticleChatPanel/config.ts +++ b/apps/web/screens/Article/components/ArticleChatPanel/config.ts @@ -1,5 +1,4 @@ import { Locale } from '@island.is/shared/types' - import { LiveChatIncChatPanelProps, WatsonChatPanelProps, @@ -52,6 +51,23 @@ export const watsonConfig: Record< Record<string, WatsonChatPanelProps> > = { en: { + // Skrá eigendaskipti + // https://app.contentful.com/spaces/8k0h54kbe6bj/entries/4rr5MJWXB9xRz6VwHAKw78 + '4rr5MJWXB9xRz6VwHAKw78': { + integrationID: 'ee1c15db-7151-4487-bc9a-9f32f1f8ae3b', + region: 'eu-gb', + serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', + showLauncher: false, + carbonTheme: 'g10', + namespaceKey: 'default', + onLoad(instance) { + setupOneScreenWatsonChatBot( + instance, + 'skra-eigendaskipti', + 'ee1c15db-7151-4487-bc9a-9f32f1f8ae3b', + ) + }, + }, // Name giving // https://app.contentful.com/spaces/8k0h54kbe6bj/entries/lGjmpafx2P4yiA6Re3Nxd lGjmpafx2P4yiA6Re3Nxd: { @@ -202,9 +218,9 @@ export const watsonConfig: Record< // Útlendingastofnun - Organization // https://app.contentful.com/spaces/8k0h54kbe6bj/entries/77rXck3sISbMsUv7BO1PG2 '77rXck3sISbMsUv7BO1PG2': { - integrationID: '89a03e83-5c73-4642-b5ba-cd3771ceca54', + integrationID: '9e320784-ad44-4da9-9eb3-f305057a196a', region: 'eu-gb', - serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', + serviceInstanceID: '2529638b-503c-4374-955c-0310139ec177', showLauncher: false, carbonTheme: 'g10', namespaceKey: 'default', @@ -266,7 +282,7 @@ export const watsonConfig: Record< // Samgöngustofa - Organization '6IZT17s7stKJAmtPutjpD7': { - integrationID: '1e649a3f-9476-4995-ba24-0e72040b0cc0', + integrationID: 'ee1c15db-7151-4487-bc9a-9f32f1f8ae3b', region: 'eu-gb', serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', showLauncher: false, @@ -277,12 +293,66 @@ export const watsonConfig: Record< is: { // Samgöngustofa - Organization '6IZT17s7stKJAmtPutjpD7': { - integrationID: 'fe12e960-329c-46d5-9ae1-8bd8b8219f43', + integrationID: 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', + region: 'eu-gb', + serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', + showLauncher: false, + carbonTheme: 'g10', + namespaceKey: 'default', + }, + + // Uppfletting í ökutækjaskrá + // https://app.contentful.com/spaces/8k0h54kbe6bj/entries/5tyHpCXpWGZnhCCbP6eTb0 + '5tyHpCXpWGZnhCCbP6eTb0': { + integrationID: 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', + region: 'eu-gb', + serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', + showLauncher: false, + carbonTheme: 'g10', + namespaceKey: 'default', + onLoad(instance) { + setupOneScreenWatsonChatBot( + instance, + 'uppfletting-i-oekutaekjaskra', + 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', + ) + }, + }, + + // Skrá eigendaskipti + // https://app.contentful.com/spaces/8k0h54kbe6bj/entries/4rr5MJWXB9xRz6VwHAKw78 + '4rr5MJWXB9xRz6VwHAKw78': { + integrationID: 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', region: 'eu-gb', serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', showLauncher: false, carbonTheme: 'g10', namespaceKey: 'default', + onLoad(instance) { + setupOneScreenWatsonChatBot( + instance, + 'skra-eigendaskipti', + 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', + ) + }, + }, + + // Skútan - skipaskráningar og lögskráningarkerfi + // https://app.contentful.com/spaces/8k0h54kbe6bj/entries/3wmGcP61YJePBL92ITgY64 + '3wmGcP61YJePBL92ITgY64': { + integrationID: 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', + region: 'eu-gb', + serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', + showLauncher: false, + carbonTheme: 'g10', + namespaceKey: 'default', + onLoad(instance) { + setupOneScreenWatsonChatBot( + instance, + 'skutan-skipaskra-og-logskraning', + 'b0b445a4-4c49-4c79-9731-8d03f49c8cac', + ) + }, }, // Kílómetragjald diff --git a/apps/web/screens/Category/Categories/Categories.tsx b/apps/web/screens/Category/Categories/Categories.tsx index dd9a89275760..cbe4fc51575e 100644 --- a/apps/web/screens/Category/Categories/Categories.tsx +++ b/apps/web/screens/Category/Categories/Categories.tsx @@ -58,7 +58,7 @@ Categories.getProps = async ({ apolloClient, locale }) => { }, }, }) - .then((res) => JSON.parse(res?.data?.getNamespace?.fields ?? '{}')), + .then((res) => JSON.parse(res?.data?.getNamespace?.fields || '{}')), ]) return { diff --git a/apps/web/screens/Category/Category/utils.ts b/apps/web/screens/Category/Category/utils.ts index ab163d2dfa0d..ee4a2abecfb0 100644 --- a/apps/web/screens/Category/Category/utils.ts +++ b/apps/web/screens/Category/Category/utils.ts @@ -204,7 +204,8 @@ export const extractCategoryGroups = ( if (isSameCategory(mainCategory, selectedCategory)) { addPageToGroupMap(groupMap, page, page.group, page.subgroup) - } else if (isSameCategory(secondaryCategory, selectedCategory)) { + } + if (isSameCategory(secondaryCategory, selectedCategory)) { addPageToGroupMap( groupMap, page, diff --git a/apps/web/screens/Home/Home.tsx b/apps/web/screens/Home/Home.tsx index f40934e36427..98bd37bb102a 100644 --- a/apps/web/screens/Home/Home.tsx +++ b/apps/web/screens/Home/Home.tsx @@ -39,7 +39,7 @@ interface HomeProps { } const Home: Screen<HomeProps> = ({ categories, news, page, locale }) => { - const namespace = JSON.parse(page?.namespace?.fields ?? '{}') + const namespace = JSON.parse(page?.namespace?.fields || '{}') const { activeLocale } = useI18n() const { globalNamespace } = useContext(GlobalContext) const n = useNamespace(namespace) diff --git a/apps/web/screens/LifeEvents/LifeEvents.tsx b/apps/web/screens/LifeEvents/LifeEvents.tsx index 31b2fd7e517e..addb8d04ed0e 100644 --- a/apps/web/screens/LifeEvents/LifeEvents.tsx +++ b/apps/web/screens/LifeEvents/LifeEvents.tsx @@ -1,28 +1,30 @@ import Head from 'next/head' + import { - Text, + ContentLanguage, + QueryGetLifeEventsForOverviewArgs, +} from '@island.is/api/schema' +import { + Breadcrumbs, + GridColumn, GridContainer, GridRow, - GridColumn, - Breadcrumbs, + Text, } from '@island.is/island-ui/core' +import { CardWithFeaturedItems, GridItems } from '@island.is/web/components' +import { + type GetLifeEventsForOverviewQuery, + type GetNamespaceQuery, + type QueryGetNamespaceArgs, +} from '@island.is/web/graphql/schema' import { LinkType, - linkResolver, + useLinkResolver, useNamespaceStrict as useNamespace, } from '@island.is/web/hooks' import { withMainLayout } from '@island.is/web/layouts/main' -import { - type QueryGetNamespaceArgs, - type GetNamespaceQuery, - type GetLifeEventsForOverviewQuery, -} from '@island.is/web/graphql/schema' + import type { Screen } from '../../types' -import { CardWithFeaturedItems, GridItems } from '@island.is/web/components' -import { - ContentLanguage, - QueryGetLifeEventsForOverviewArgs, -} from '@island.is/api/schema' import { GET_LIFE_EVENTS_FOR_OVERVIEW_QUERY, GET_NAMESPACE_QUERY, @@ -37,6 +39,7 @@ interface Props { const LifeEvents: Screen<Props> = ({ lifeEvents, namespace }) => { const n = useNamespace(namespace) + const { linkResolver } = useLinkResolver() return ( <> <Head> diff --git a/apps/web/screens/Manual/Manual.css.ts b/apps/web/screens/Manual/Manual.css.ts index 1fa72d0ff04a..50ec164869b1 100644 --- a/apps/web/screens/Manual/Manual.css.ts +++ b/apps/web/screens/Manual/Manual.css.ts @@ -13,7 +13,3 @@ export const inputContainer = style({ }, }), }) - -export const smallLink = style({ - fontSize: '14px', -}) diff --git a/apps/web/screens/Manual/ManualChangelog.tsx b/apps/web/screens/Manual/ManualChangelog.tsx index f628126ccaad..f3936f655c4c 100644 --- a/apps/web/screens/Manual/ManualChangelog.tsx +++ b/apps/web/screens/Manual/ManualChangelog.tsx @@ -50,12 +50,13 @@ const ManualChangelog: ManualScreen = ({ manual, namespace }) => { namespace={namespace} socialTitle={generateOgTitle(manual?.title, manualChangelogTitle)} > - <Stack space={2}> + <Stack space={5}> <LinkV2 - className={styles.smallLink} + className={styles.link} underline="small" underlineVisibility="always" href={linkResolver('manual', [manual?.slug as string]).href} + color="blue400" > {n( 'manualFrontpage', @@ -63,7 +64,7 @@ const ManualChangelog: ManualScreen = ({ manual, namespace }) => { )} </LinkV2> <Divider /> - <Box paddingTop={2}> + <Box> <Stack space={2}> <Text variant="h2" as="h1"> {manualChangelogTitle} @@ -94,7 +95,7 @@ const ManualChangelog: ManualScreen = ({ manual, namespace }) => { </Box> )} {changelog?.length > 0 && ( - <Accordion> + <Accordion singleExpand={false}> {changelog.map(({ year, dates }) => ( <AccordionItem labelUse="h2" diff --git a/apps/web/screens/Manual/ManualChapter.tsx b/apps/web/screens/Manual/ManualChapter.tsx index f643d6ca73b5..5ac904a3038a 100644 --- a/apps/web/screens/Manual/ManualChapter.tsx +++ b/apps/web/screens/Manual/ManualChapter.tsx @@ -7,7 +7,9 @@ import { Accordion, AccordionItem, Box, + Button, Divider, + Inline, LinkV2, Stack, TableOfContents, @@ -91,6 +93,48 @@ const ManualChapter: ManualScreen = ({ manual, manualChapter, namespace }) => { initialScrollHasHappened.current = true }, [selectedItemId]) + const { previousChapterUrl, nextChapterUrl } = useMemo(() => { + if (!manual?.slug || !manualChapter?.id) { + return { + previousChapterUrl: '', + nextChapterUrl: '', + } + } + + const index = manual.chapters.findIndex( + (chapter) => chapter.id === manualChapter?.id, + ) + + if (index < 0) { + return { + previousChapterUrl: '', + nextChapterUrl: '', + } + } + + const nextChapterSlug = manual.chapters[index + 1]?.slug + + if (index === 0) { + return { + previousChapterUrl: '', + nextChapterUrl: nextChapterSlug + ? linkResolver('manualchapter', [manual.slug, nextChapterSlug]).href + : '', + } + } + + const previousChapterSlug = manual.chapters[index - 1]?.slug + + return { + previousChapterUrl: previousChapterSlug + ? linkResolver('manualchapter', [manual.slug, previousChapterSlug]).href + : '', + nextChapterUrl: nextChapterSlug + ? linkResolver('manualchapter', [manual.slug, nextChapterSlug]).href + : '', + } + }, [linkResolver, manual?.chapters, manual?.slug, manualChapter?.id]) + return ( <ManualWrapper manual={manual} @@ -98,12 +142,13 @@ const ManualChapter: ManualScreen = ({ manual, manualChapter, namespace }) => { socialTitle={generateOgTitle(manual?.title, manualChapter?.title)} > {manualChapter && ( - <Stack space={2}> + <Stack space={5}> <LinkV2 - className={styles.smallLink} underline="small" underlineVisibility="always" + color="blue400" href={linkResolver('manual', [manual?.slug as string]).href} + className={styles.link} > {n( 'manualFrontpage', @@ -111,7 +156,7 @@ const ManualChapter: ManualScreen = ({ manual, manualChapter, namespace }) => { )} </LinkV2> <Divider /> - <Box paddingTop={2}> + <Box> <Text variant="h2" as="h1"> {manualChapter.title} </Text> @@ -122,7 +167,7 @@ const ManualChapter: ManualScreen = ({ manual, manualChapter, namespace }) => { <Stack space={3}> {manualChapter && ( - <Accordion> + <Accordion singleExpand={false}> {manualChapter.chapterItems.map((item) => ( <AccordionItem labelUse="h2" @@ -154,6 +199,54 @@ const ManualChapter: ManualScreen = ({ manual, manualChapter, namespace }) => { ))} </Accordion> )} + {(Boolean(previousChapterUrl) || Boolean(nextChapterUrl)) && ( + <Box paddingTop={3}> + <Inline space={3} alignY="center" justifyContent="spaceBetween"> + <Box> + {previousChapterUrl && ( + <LinkV2 href={previousChapterUrl}> + <Button + preTextIcon="arrowBack" + preTextIconType="filled" + size="medium" + type="button" + variant="text" + truncate + unfocusable + > + {n( + 'manualPreviousChapter', + activeLocale === 'is' + ? 'Fyrri kafli' + : 'Previous chapter', + )} + </Button> + </LinkV2> + )} + </Box> + <Box> + {nextChapterUrl && ( + <LinkV2 href={nextChapterUrl}> + <Button + icon="arrowForward" + iconType="filled" + size="medium" + type="button" + variant="text" + truncate + unfocusable + > + {n( + 'manualNextChapter', + activeLocale === 'is' ? 'Næsti kafli' : 'Next chapter', + )} + </Button> + </LinkV2> + )} + </Box> + </Inline> + </Box> + )} </Stack> </ManualWrapper> ) diff --git a/apps/web/screens/Manual/components/ManualWrapper.tsx b/apps/web/screens/Manual/components/ManualWrapper.tsx index 72f2274419a1..933ac3087971 100644 --- a/apps/web/screens/Manual/components/ManualWrapper.tsx +++ b/apps/web/screens/Manual/components/ManualWrapper.tsx @@ -33,7 +33,7 @@ export const ManualWrapper = ({ paddingTop={0} sidebarContent={null} > - <Stack space={3}> + <Stack space={5}> <ManualHeader manual={manual} namespace={namespace} /> {children} </Stack> diff --git a/apps/web/screens/OfficialJournalOfIceland/OJOIHome.tsx b/apps/web/screens/OfficialJournalOfIceland/OJOIHome.tsx index bce39b678cce..6af57b49482b 100644 --- a/apps/web/screens/OfficialJournalOfIceland/OJOIHome.tsx +++ b/apps/web/screens/OfficialJournalOfIceland/OJOIHome.tsx @@ -1,7 +1,9 @@ import { useIntl } from 'react-intl' import NextLink from 'next/link' +import { useQuery } from '@apollo/client' import { + AlertMessage, ArrowLink, Box, Breadcrumbs, @@ -9,6 +11,7 @@ import { GridColumn, GridContainer, GridRow, + SkeletonLoader, Stack, Text, } from '@island.is/island-ui/core' @@ -18,8 +21,10 @@ import { ContentLanguage, CustomPageUniqueIdentifier, OfficialJournalOfIcelandAdvertMainCategory, + OfficialJournalOfIcelandAdvertsResponse, Query, QueryGetOrganizationArgs, + QueryOfficialJournalOfIcelandAdvertsArgs, QueryOfficialJournalOfIcelandMainCategoriesArgs, } from '@island.is/web/graphql/schema' import { useLinkResolver } from '@island.is/web/hooks' @@ -27,6 +32,7 @@ import { withMainLayout } from '@island.is/web/layouts/main' import { CustomNextError } from '@island.is/web/units/errors' import { + OJOIAdvertCards, OJOIHomeIntro, OJOIWrapper, } from '../../components/OfficialJournalOfIceland' @@ -35,7 +41,10 @@ import { withCustomPageWrapper, } from '../CustomPage/CustomPageWrapper' import { GET_ORGANIZATION_QUERY } from '../queries' -import { MAIN_CATEGORIES_QUERY } from '../queries/OfficialJournalOfIceland' +import { + ADVERTS_QUERY, + MAIN_CATEGORIES_QUERY, +} from '../queries/OfficialJournalOfIceland' import { m } from './messages' const OJOIHomePage: CustomScreen<OJOIHomeProps> = ({ @@ -61,6 +70,23 @@ const OJOIHomePage: CustomScreen<OJOIHomeProps> = ({ }, ] + const { data, loading, error } = useQuery< + { + officialJournalOfIcelandAdverts: OfficialJournalOfIcelandAdvertsResponse + }, + QueryOfficialJournalOfIcelandAdvertsArgs + >(ADVERTS_QUERY, { + variables: { + input: { + page: 1, + pageSize: 5, + }, + }, + fetchPolicy: 'no-cache', + }) + + const adverts = data?.officialJournalOfIcelandAdverts.adverts + return ( <OJOIWrapper pageTitle={organization?.title ?? ''} @@ -124,16 +150,54 @@ const OJOIHomePage: CustomScreen<OJOIHomeProps> = ({ <Box background="blue100" paddingTop={8} paddingBottom={8}> <GridContainer> - <Box - display={'flex'} - justifyContent={'spaceBetween'} - alignItems="flexEnd" - > - <Text variant="h3">{formatMessage(m.home.mainCategories)}</Text> - <ArrowLink href={categoriesUrl}> - {formatMessage(m.home.allCategories)} - </ArrowLink> - </Box> + <GridRow> + <GridColumn span="12/12"> + <Box + display={'flex'} + justifyContent={'spaceBetween'} + alignItems="flexEnd" + marginBottom={3} + > + <Text variant="h3"> + {formatMessage(m.home.mainCategories)} + </Text> + <ArrowLink href={categoriesUrl}> + {formatMessage(m.home.allCategories)} + </ArrowLink> + </Box> + </GridColumn> + </GridRow> + + <GridRow> + <GridColumn span="12/12"> + <Text marginBottom={3} variant="h3"> + {formatMessage(m.home.latestAdverts)} + </Text> + + <Stack space={3}> + {loading && <SkeletonLoader repeat={4} height={200} />} + {error && ( + <AlertMessage + type="warning" + message={formatMessage( + m.search.errorFetchingAdvertsMessage, + )} + title={formatMessage(m.search.errorFetchingAdvertsTitle)} + /> + )} + {!error && !adverts?.length && ( + <AlertMessage + type="info" + message={formatMessage(m.search.emptySearchResult)} + /> + )} + + {adverts && ( + <OJOIAdvertCards adverts={adverts} locale={locale} /> + )} + </Stack> + </GridColumn> + </GridRow> <GridRow> {mainCategories?.map((y, i) => ( diff --git a/apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx b/apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx index c253999cd919..04b64ef4d17d 100644 --- a/apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx +++ b/apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx @@ -1,16 +1,17 @@ -import { useEffect, useMemo, useState } from 'react' +import { useCallback, useMemo, useState } from 'react' import { useIntl } from 'react-intl' import debounce from 'lodash/debounce' import { useRouter } from 'next/router' -import { useLazyQuery } from '@apollo/client' import { + AlertMessage, Box, Button, DatePicker, Divider, Input, Select, + SkeletonLoader, Stack, Text, } from '@island.is/island-ui/core' @@ -22,7 +23,6 @@ import { OfficialJournalOfIcelandAdvert, OfficialJournalOfIcelandAdvertCategory, OfficialJournalOfIcelandAdvertEntity, - OfficialJournalOfIcelandAdvertsResponse, OfficialJournalOfIcelandAdvertType, Query, QueryGetOrganizationArgs, @@ -57,104 +57,178 @@ import { INSTITUTIONS_QUERY, TYPES_QUERY, } from '../queries/OfficialJournalOfIceland' +import { useAdverts } from './hooks' import { m } from './messages' -const initialState = { - sida: '', - q: '', - deild: '', // department - tegund: '', // type - timabil: '', // dateFrom - dateTo - malaflokkur: '', // category - stofnun: '', // involvedParty - dagsFra: '', - dagsTil: '', +type OJOISearchParams = { + q: string + deild: string + tegund: string + timabil: string + malaflokkur: string + stofnun: string + dagsFra?: string // DATE STRING + dagsTil?: string // DATE STRING + sida?: number + staerd?: number } const OJOISearchPage: CustomScreen<OJOISearchProps> = ({ initialAdverts, categories, departments, + defaultSearchParams, types, institutions, organization, locale, }) => { const { formatMessage } = useIntl() - const router = useRouter() const { linkResolver } = useLinkResolver() + const router = useRouter() - const [adverts, setAdverts] = useState(initialAdverts) - - const [searchState, setSearchState] = useState(initialState) const [listView, setListView] = useState(false) const baseUrl = linkResolver('ojoihome', [], locale).href const searchUrl = linkResolver('ojoisearch', [], locale).href - const [getAdverts] = useLazyQuery< - { - officialJournalOfIcelandAdverts: OfficialJournalOfIcelandAdvertsResponse + const getTimestamp = () => new Date().getTime() + const [resetTimestamp, setResetTimestamp] = useState<number>(0) + + const [localSearchValue, setLocalSearchValue] = useState( + defaultSearchParams.q, + ) + + const { adverts, loading, error, refetch } = useAdverts({ + vars: { + department: [defaultSearchParams.deild], + category: [defaultSearchParams.malaflokkur], + involvedParty: [defaultSearchParams.stofnun], + type: [defaultSearchParams.tegund], + dateFrom: defaultSearchParams.dagsFra + ? new Date(defaultSearchParams.dagsFra) + : undefined, + dateTo: defaultSearchParams.dagsTil + ? new Date(defaultSearchParams.dagsTil) + : undefined, + search: defaultSearchParams.q, + page: defaultSearchParams.sida, + pageSize: defaultSearchParams.staerd, }, - QueryOfficialJournalOfIcelandAdvertsArgs - >(ADVERTS_QUERY, { fetchPolicy: 'no-cache' }) + fallbackData: initialAdverts, + }) + + const [searchState, setSearchState] = useState({ + q: defaultSearchParams.q, + deild: defaultSearchParams.deild, + tegund: defaultSearchParams.tegund, + timabil: defaultSearchParams.timabil, + malaflokkur: defaultSearchParams.malaflokkur, + stofnun: defaultSearchParams.stofnun, + dagsFra: defaultSearchParams.dagsFra, + dagsTil: defaultSearchParams.dagsTil, + sida: defaultSearchParams.sida, + staerd: defaultSearchParams.staerd, + }) + + const updateSearchStateHandler = useCallback( + ( + key: keyof typeof searchState, + value: string | number | Date | undefined, + ) => { + const parsed = + typeof value === 'string' + ? value.trim() + : typeof value === 'number' + ? value + : value instanceof Date + ? value + : undefined + + setSearchState((prev) => ({ + ...prev, + [key]: parsed, + })) + + const searchValues = { + ...searchState, + [key]: parsed, + } - useEffect(() => { - const searchParams = new URLSearchParams(document.location.search) - setSearchState({ - sida: searchParams.get('sida') ?? '', - q: searchParams.get('q') ?? '', - deild: searchParams.get('deild') ?? '', - tegund: searchParams.get('tegund') ?? '', - timabil: searchParams.get('timabil') ?? '', - malaflokkur: searchParams.get('malaflokkur') ?? '', - stofnun: searchParams.get('stofnun') ?? '', - dagsFra: searchParams.get('dagsFra') ?? '', - dagsTil: searchParams.get('dagsTil') ?? '', - }) - }, []) - - const fetchAdverts = useMemo(() => { - return debounce((state: typeof initialState) => { - getAdverts({ - variables: { - input: { - search: state.q, - page: state.sida ? parseInt(state.sida) : undefined, - department: state.deild ? [state.deild] : undefined, - type: state.tegund ? [state.tegund] : undefined, - category: state.malaflokkur ? [state.malaflokkur] : undefined, - involvedParty: state.stofnun ? [state.stofnun] : undefined, - dateFrom: state.dagsFra ? new Date(state.dagsFra) : undefined, - dateTo: state.dagsTil ? new Date(state.dagsTil) : undefined, - }, + router.replace( + { + pathname: searchUrl, + query: removeEmptyFromObject({ + ...searchValues, + [key]: + parsed instanceof Date + ? parsed.toISOString().split('T')[0] + : parsed, + }), + }, + undefined, + { shallow: true }, + ) + + refetch({ + input: { + department: [searchValues.deild], + category: [searchValues.malaflokkur], + involvedParty: [searchValues.stofnun], + type: [searchValues.tegund], + dateFrom: searchValues.dagsFra + ? new Date(searchValues.dagsFra) + : undefined, + dateTo: searchValues.dagsTil + ? new Date(searchValues.dagsTil) + : undefined, + search: searchValues.q, + page: searchValues.sida, + pageSize: searchValues.staerd, }, }) - .then((res) => { - if (res.data) { - setAdverts(res.data.officialJournalOfIcelandAdverts.adverts) - } else if (res.error) { - setAdverts([]) - console.error('Error fetching Adverts', res.error) - } - }) - .catch((err) => { - setAdverts([]) - console.error('Error fetching Adverts', { err }) - }) - }, debounceTime.search) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - useEffect(() => { - const isEmpty = !Object.entries(searchState).filter(([_, v]) => !!v).length - if (isEmpty) { - setAdverts(initialAdverts) - } else { - fetchAdverts(searchState) - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [searchState]) + }, + + [refetch, router, searchState, searchUrl], + ) + + const resetFilter = () => { + router.replace(searchUrl, {}, { shallow: true }) + setLocalSearchValue('') + setSearchState({ + q: '', + deild: '', + tegund: '', + timabil: '', + malaflokkur: '', + stofnun: '', + dagsFra: undefined, + dagsTil: undefined, + sida: 1, + staerd: 20, + }) + + refetch({ + input: { + department: [], + category: [], + involvedParty: [], + type: [], + dateFrom: undefined, + dateTo: undefined, + search: '', + page: undefined, + pageSize: undefined, + }, + }) + + setResetTimestamp(getTimestamp()) + } + + const categoriesOptions = mapEntityToOptions(categories) + const departmentsOptions = mapEntityToOptions(departments) + const typesOptions = mapEntityToOptions(types) + const institutionsOptions = mapEntityToOptions(institutions) const breadcrumbItems = [ { @@ -170,38 +244,25 @@ const OJOISearchPage: CustomScreen<OJOISearchProps> = ({ }, ] - const updateSearchParams = useMemo(() => { - return debounce((state: Record<string, string>) => { - router.replace( - searchUrl, - { - query: removeEmptyFromObject(state), - }, - { shallow: true }, - ) - }, debounceTime.search) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const updateSearchState = (key: keyof typeof initialState, value: string) => { - const newState = { - ...searchState, - [key]: value, - } - setSearchState(newState) - updateSearchParams(newState) - } + const debouncedSearch = useMemo( + () => debounce(updateSearchStateHandler, debounceTime.search), + [updateSearchStateHandler], + ) - const resetFilter = () => { - setSearchState(initialState) - updateSearchParams(initialState) - setAdverts(initialAdverts) - } + const debouncedSearchHandler = useCallback( + (search: string) => { + debouncedSearch.cancel() + debouncedSearch('q', search) + }, + [debouncedSearch], + ) - const categoriesOptions = mapEntityToOptions(categories) - const departmentsOptions = mapEntityToOptions(departments) - const typesOptions = mapEntityToOptions(types) - const institutionsOptions = mapEntityToOptions(institutions) + const defaultDepartment = departmentsOptions.find( + (d) => d.value === defaultSearchParams.deild, + ) + + console.log(defaultSearchParams) + console.log('defaultdepartment', defaultDepartment) return ( <OJOIWrapper @@ -222,11 +283,15 @@ const OJOISearchPage: CustomScreen<OJOISearchProps> = ({ <Text variant="h4">Leit</Text> <Input + key={`search-${resetTimestamp}`} name="q" placeholder={formatMessage(m.search.inputPlaceholder)} size="xs" - value={searchState.q} - onChange={(e) => updateSearchState('q', e.target.value)} + value={localSearchValue} + onChange={(e) => { + setLocalSearchValue(e.target.value) + debouncedSearchHandler(e.target.value) + }} /> <Divider weight={'blueberry200'} /> @@ -245,6 +310,7 @@ const OJOISearchPage: CustomScreen<OJOISearchProps> = ({ </Box> <Select + key={`deild-${resetTimestamp}`} name="deild" label={formatMessage(m.search.departmentLabel)} size="xs" @@ -254,12 +320,17 @@ const OJOISearchPage: CustomScreen<OJOISearchProps> = ({ ...departmentsOptions, ]} isClearable - isSearchable - value={findValueOption(departmentsOptions, searchState.deild)} - onChange={(v) => updateSearchState('deild', v?.value ?? '')} + defaultValue={findValueOption( + departmentsOptions, + searchState.deild, + )} + onChange={(v) => + updateSearchStateHandler('deild', v?.value ?? '') + } /> <Select + key={`tegund-${resetTimestamp}`} name="tegund" label={formatMessage(m.search.typeLabel)} size="xs" @@ -269,11 +340,14 @@ const OJOISearchPage: CustomScreen<OJOISearchProps> = ({ ...typesOptions, ]} isClearable - value={findValueOption(typesOptions, searchState.tegund)} - onChange={(v) => updateSearchState('tegund', v?.value ?? '')} + defaultValue={findValueOption(typesOptions, searchState.tegund)} + onChange={(v) => + updateSearchStateHandler('tegund', v?.value ?? '') + } /> <Select + key={`malaflokkur-${resetTimestamp}`} name="malaflokkur" label={formatMessage(m.search.categoriesLabel)} size="xs" @@ -284,56 +358,55 @@ const OJOISearchPage: CustomScreen<OJOISearchProps> = ({ ]} isClearable isSearchable - value={findValueOption( + defaultValue={findValueOption( categoriesOptions, searchState.malaflokkur, )} - onChange={(v) => updateSearchState('malaflokkur', v?.value ?? '')} + onChange={(v) => + updateSearchStateHandler('malaflokkur', v?.value ?? '') + } /> <DatePicker + key={`dagsFra-${resetTimestamp}`} size="xs" locale="is" name="dagsFra" label={formatMessage(m.search.dateFromLabel)} placeholderText={formatMessage(m.search.dateFromPlaceholder)} - selected={ - searchState.dagsFra ? new Date(searchState.dagsFra) : undefined - } minDate={new Date('1950-01-01')} maxDate={ searchState.dagsTil ? new Date(searchState.dagsTil) : undefined } - handleChange={(date) => - updateSearchState( - 'dagsFra', - date ? date.toISOString().slice(0, 10) : '', - ) + selected={ + searchState.dagsFra ? new Date(searchState.dagsFra) : undefined } + handleChange={(date) => { + updateSearchStateHandler('dagsFra', date) + }} /> <DatePicker + key={`dagsTil-${resetTimestamp}`} size="xs" locale="is" name="dagsTil" label={formatMessage(m.search.dateToLabel)} placeholderText={formatMessage(m.search.dateToPlaceholder)} - selected={ - searchState.dagsTil ? new Date(searchState.dagsTil) : undefined - } minDate={ searchState.dagsFra ? new Date(searchState.dagsFra) : undefined } maxDate={new Date()} - handleChange={(date) => - updateSearchState( - 'dagsTil', - date ? date.toISOString().slice(0, 10) : '', - ) + selected={ + searchState.dagsTil ? new Date(searchState.dagsTil) : undefined } + handleChange={(date) => { + updateSearchStateHandler('dagsTil', date) + }} /> <Select + key={`stofnun-${resetTimestamp}`} name="stofnun" label={formatMessage(m.search.institutionLabel)} size="xs" @@ -344,15 +417,36 @@ const OJOISearchPage: CustomScreen<OJOISearchProps> = ({ ]} isClearable isSearchable - value={findValueOption(institutionsOptions, searchState.stofnun)} - onChange={(v) => updateSearchState('stofnun', v?.value ?? '')} + defaultValue={findValueOption( + institutionsOptions, + searchState.stofnun, + )} + onChange={(v) => + updateSearchStateHandler('stofnun', v?.value ?? '') + } /> </Stack> </Box> } breadcrumbItems={breadcrumbItems} > - {adverts?.length ? ( + {!!error && ( + <Box marginBottom={3}> + <AlertMessage + title={formatMessage(m.search.errorFetchingAdvertsTitle)} + message={formatMessage(m.search.errorFetchingAdvertsMessage)} + type="error" + /> + </Box> + )} + {loading ? ( + <SkeletonLoader + repeat={5} + height={200} + borderRadius="large" + space={3} + /> + ) : adverts?.length ? ( <Stack space={3}> <Button onClick={() => setListView(!listView)} @@ -391,6 +485,7 @@ interface OJOISearchProps { types?: Array<OfficialJournalOfIcelandAdvertType> institutions?: Array<OfficialJournalOfIcelandAdvertEntity> organization?: Query['getOrganization'] + defaultSearchParams: OJOISearchParams locale: Locale } @@ -403,6 +498,7 @@ const OJOISearch: CustomScreen<OJOISearchProps> = ({ organization, locale, customPageData, + defaultSearchParams, }) => { return ( <OJOISearchPage @@ -414,13 +510,74 @@ const OJOISearch: CustomScreen<OJOISearchProps> = ({ organization={organization} locale={locale} customPageData={customPageData} + defaultSearchParams={defaultSearchParams} /> ) } -OJOISearch.getProps = async ({ apolloClient, locale }) => { +OJOISearch.getProps = async ({ apolloClient, locale, query }) => { const organizationSlug = 'stjornartidindi' + const getStringFromQuery = (key?: string | string[]) => { + if (typeof key === 'string') { + return key + } + + if (Array.isArray(key)) { + return key[0] + } + + return '' + } + + let dateFrom: string | undefined + let dateTo: string | undefined + let page: number | undefined + let pageSize: number | undefined + + if (query.dagsFra && typeof query.dagsFra === 'string') { + const isValid = !Number.isNaN(Date.parse(query.dagsFra)) + if (isValid) { + dateFrom = new Date(query.dagsFra).toISOString().split('T')[0] + } + } + + if (query.dagsTil && typeof query.dagsTil === 'string') { + const isValid = !Number.isNaN(Date.parse(query.dagsTil)) + if (isValid) { + dateTo = new Date(query.dagsTil).toISOString().split('T')[0] + } + } + + if (query.sida && typeof query.sida === 'string') { + const check = !Number.isNaN(parseInt(query.sida)) + + if (check) { + page = parseInt(query.sida) + } + } + + if (query.pageSize && typeof query.pageSize === 'string') { + const check = !Number.isNaN(parseInt(query.pageSize)) + + if (check) { + pageSize = parseInt(query.pageSize) + } + } + + const defaultParams = { + deild: getStringFromQuery(query.deild), + dagsFra: dateFrom, + dagsTil: dateTo, + malaflokkur: getStringFromQuery(query.malaflokkur), + q: getStringFromQuery(query.q), + stofnun: getStringFromQuery(query.stofnun), + tegund: getStringFromQuery(query.tegund), + timabil: getStringFromQuery(query.timabil), + sida: page, + pageSize, + } + const [ { data: { officialJournalOfIcelandAdverts }, @@ -444,13 +601,29 @@ OJOISearch.getProps = async ({ apolloClient, locale }) => { apolloClient.query<Query, QueryOfficialJournalOfIcelandAdvertsArgs>({ query: ADVERTS_QUERY, variables: { - input: {}, + input: { + category: [defaultParams.malaflokkur], + dateFrom: defaultParams.dagsFra + ? new Date(defaultParams.dagsFra) + : undefined, + dateTo: defaultParams.dagsTil + ? new Date(defaultParams.dagsTil) + : undefined, + department: [defaultParams.deild], + involvedParty: [defaultParams.stofnun], + page: defaultParams.sida, + pageSize: defaultParams.pageSize, + search: defaultParams.q, + type: [defaultParams.tegund], + }, }, }), apolloClient.query<Query, QueryOfficialJournalOfIcelandCategoriesArgs>({ query: CATEGORIES_QUERY, variables: { - params: {}, + params: { + pageSize: 1000, + }, }, }), apolloClient.query<Query, QueryOfficialJournalOfIcelandDepartmentsArgs>({ @@ -462,13 +635,17 @@ OJOISearch.getProps = async ({ apolloClient, locale }) => { apolloClient.query<Query, QueryOfficialJournalOfIcelandTypesArgs>({ query: TYPES_QUERY, variables: { - params: {}, + params: { + pageSize: 1000, + }, }, }), apolloClient.query<Query, QueryOfficialJournalOfIcelandInstitutionsArgs>({ query: INSTITUTIONS_QUERY, variables: { - params: {}, + params: { + pageSize: 1000, + }, }, }), apolloClient.query<Query, QueryGetOrganizationArgs>({ @@ -498,6 +675,18 @@ OJOISearch.getProps = async ({ apolloClient, locale }) => { themeConfig: { footerVersion: 'organization', }, + defaultSearchParams: { + deild: defaultParams.deild, + dagsFra: defaultParams.dagsFra, + dagsTil: defaultParams.dagsTil, + malaflokkur: defaultParams.malaflokkur, + q: defaultParams.q, + stofnun: defaultParams.stofnun, + tegund: defaultParams.tegund, + timabil: defaultParams.timabil, + sida: defaultParams.sida, + staerd: defaultParams.pageSize, + }, } } diff --git a/apps/web/screens/OfficialJournalOfIceland/hooks/index.ts b/apps/web/screens/OfficialJournalOfIceland/hooks/index.ts new file mode 100644 index 000000000000..885b6f29c754 --- /dev/null +++ b/apps/web/screens/OfficialJournalOfIceland/hooks/index.ts @@ -0,0 +1 @@ +export * from './useAdverts' diff --git a/apps/web/screens/OfficialJournalOfIceland/hooks/useAdverts.ts b/apps/web/screens/OfficialJournalOfIceland/hooks/useAdverts.ts new file mode 100644 index 000000000000..0d4c3092886b --- /dev/null +++ b/apps/web/screens/OfficialJournalOfIceland/hooks/useAdverts.ts @@ -0,0 +1,55 @@ +import { useQuery } from '@apollo/client' + +import { + OfficialJournalOfIcelandAdvert, + OfficialJournalOfIcelandAdvertsResponse, +} from '@island.is/api/schema' + +import { ADVERTS_QUERY } from '../../queries/OfficialJournalOfIceland' +import { getAdvertParams } from '../lib/advert-params.mapper' + +export type UseAdvertsResponse = { + officialJournalOfIcelandAdverts: OfficialJournalOfIcelandAdvertsResponse +} + +export type UseAdvertsVariables = { + search?: string + page?: number + pageSize?: number + department?: Array<string> + type?: Array<string> + category?: Array<string> + involvedParty?: Array<string> + dateFrom?: Date + dateTo?: Date +} + +export type UseAdvertsInput = { + input: UseAdvertsVariables +} + +export type UseAdvertsParams = { + vars?: UseAdvertsVariables + fallbackData?: OfficialJournalOfIcelandAdvert[] +} + +export const useAdverts = ({ vars, fallbackData }: UseAdvertsParams) => { + const variables = getAdvertParams(vars) + + const { data, loading, error, refetch } = useQuery< + UseAdvertsResponse, + UseAdvertsInput + >(ADVERTS_QUERY, { + fetchPolicy: 'no-cache', + nextFetchPolicy: 'no-cache', + variables: { input: variables }, + }) + + return { + adverts: data?.officialJournalOfIcelandAdverts.adverts || fallbackData, + paging: data?.officialJournalOfIcelandAdverts.paging, + loading, + error, + refetch, + } +} diff --git a/apps/web/screens/OfficialJournalOfIceland/lib/advert-params.mapper.ts b/apps/web/screens/OfficialJournalOfIceland/lib/advert-params.mapper.ts new file mode 100644 index 000000000000..397b8664a52b --- /dev/null +++ b/apps/web/screens/OfficialJournalOfIceland/lib/advert-params.mapper.ts @@ -0,0 +1,43 @@ +import { UseAdvertsVariables } from '../hooks' + +export const getAdvertParams = (params?: UseAdvertsVariables) => { + const variables: UseAdvertsVariables = {} + + if (params?.category) { + variables.category = params.category + } + + if (params?.dateFrom) { + variables.dateFrom = params.dateFrom + } + + if (params?.dateTo) { + variables.dateTo = params.dateTo + } + + if (params?.department) { + variables.department = params.department + } + + if (params?.involvedParty) { + variables.involvedParty = params.involvedParty + } + + if (params?.page) { + variables.page = params.page + } + + if (params?.pageSize) { + variables.pageSize = params.pageSize + } + + if (params?.search) { + variables.search = params.search + } + + if (params?.type) { + variables.type = params.type + } + + return variables +} diff --git a/apps/web/screens/OfficialJournalOfIceland/messages.ts b/apps/web/screens/OfficialJournalOfIceland/messages.ts index 7e668a87a12b..079b2ea3edf5 100644 --- a/apps/web/screens/OfficialJournalOfIceland/messages.ts +++ b/apps/web/screens/OfficialJournalOfIceland/messages.ts @@ -35,6 +35,10 @@ export const m = { id: 'web.ojoi:home.mainCategories', defaultMessage: 'Yfirflokkar', }, + latestAdverts: { + id: 'web.ojoi:home.latestAdverts', + defaultMessage: 'Nýjustu auglýsingar', + }, allCategories: { id: 'web.ojoi:home.allCategories', defaultMessage: 'Málaflokkar A-Ö', @@ -42,6 +46,19 @@ export const m = { }), search: defineMessages({ + emptySearchResult: { + id: 'web.ojoi:search.emptySearchResult', + defaultMessage: 'Engin mál fundust', + }, + errorFetchingAdvertsTitle: { + id: 'web.ojoi:search.errorFetchingAdvertsTitle', + defaultMessage: 'Ekki tókst að sækja auglýsingar', + }, + errorFetchingAdvertsMessage: { + id: 'web.ojoi:search.errorFetchingAdvertsMessage', + defaultMessage: + 'Ekki náðist samband við vefþjónustur Stjórnartíðinda, reynið aftur síðar.', + }, title: { id: 'web.ojoi:search.title', defaultMessage: 'Leit í Stjórnartíðindum', diff --git a/apps/web/screens/Organization/PublishedMaterial/PublishedMaterial.tsx b/apps/web/screens/Organization/PublishedMaterial/PublishedMaterial.tsx index f6dc8fd7cd9e..715fa5a10709 100644 --- a/apps/web/screens/Organization/PublishedMaterial/PublishedMaterial.tsx +++ b/apps/web/screens/Organization/PublishedMaterial/PublishedMaterial.tsx @@ -527,7 +527,7 @@ PublishedMaterial.getProps = async ({ apolloClient, locale, query }) => { }) .then((variables) => { // map data here to reduce data processing in component - return JSON.parse(variables?.data?.getNamespace?.fields ?? '{}') + return JSON.parse(variables?.data?.getNamespace?.fields || '{}') }), ]) diff --git a/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculator.tsx b/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculator.tsx index 0641c14ad711..f72249630a5a 100644 --- a/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculator.tsx +++ b/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculator.tsx @@ -133,8 +133,11 @@ const PensionCalculator: CustomScreen<PensionCalculatorProps> = ({ const currencyInputMaxLength = customPageData?.configJson?.currencyInputMaxLength ?? 14 - const maxMonthPensionDelay = - customPageData?.configJson?.maxMonthPensionDelay ?? 156 + const maxMonthPensionDelayIfBornAfter1951 = + customPageData?.configJson?.maxMonthPensionDelayIfBornAfter1951 ?? 156 + + const maxMonthPensionDelayIfBorn1951OrEarlier = + customPageData?.configJson?.maxMonthPensionDelayIfBorn1951OrEarlier ?? 60 const [loadingResultPage, setLoadingResultPage] = useState(false) const [hasLivedAbroad, setHasLivedAbroad] = useState( @@ -156,6 +159,11 @@ const PensionCalculator: CustomScreen<PensionCalculatorProps> = ({ ? 12 * 7 : 12 * 2 + const maxMonthPensionDelay = + typeof birthYear === 'number' && birthYear < 1952 + ? maxMonthPensionDelayIfBorn1951OrEarlier + : maxMonthPensionDelayIfBornAfter1951 + const basePensionTypeOptions = useMemo<Option<BasePensionType>[]>(() => { const options = [ { @@ -386,6 +394,7 @@ const PensionCalculator: CustomScreen<PensionCalculatorProps> = ({ const minYear = add(defaultPensionDate, { months: -maxMonthPensionHurry, }).getFullYear() + const maxYear = add(defaultPensionDate, { months: maxMonthPensionDelay, }).getFullYear() @@ -407,22 +416,31 @@ const PensionCalculator: CustomScreen<PensionCalculatorProps> = ({ }` const startMonthOptions = useMemo(() => { - if ( - startYear === startYearOptions?.[0]?.value && - typeof birthMonth === 'number' && - typeof startMonth === 'number' - ) { - if (startMonth < birthMonth + 1) { - methods.setValue('startMonth', birthMonth + 1) - } - return monthOptions.filter(({ value }) => value >= birthMonth + 1) + if (!defaultPensionDate) { + return monthOptions + } + + if (startYear === startYearOptions[0]?.value) { + const minMonth = add(defaultPensionDate, { + months: -maxMonthPensionHurry, + }).getMonth() + return monthOptions.filter((month) => month.value >= minMonth) + } + + if (startYear === startYearOptions[startYearOptions.length - 1]?.value) { + const maxMonth = add(defaultPensionDate, { + months: maxMonthPensionDelay, + }).getMonth() + + return monthOptions.filter((month) => month.value <= maxMonth) } + return monthOptions }, [ - birthMonth, - methods, + defaultPensionDate, + maxMonthPensionDelay, + maxMonthPensionHurry, monthOptions, - startMonth, startYear, startYearOptions, ]) @@ -437,6 +455,8 @@ const PensionCalculator: CustomScreen<PensionCalculatorProps> = ({ const maxTaxCardRatio: number = customPageData?.configJson?.maxTaxCardRatio ?? 100 + const isTurnedOff = customPageData?.configJson?.isTurnedOff ?? true + return ( <PensionCalculatorWrapper organizationPage={organizationPage} @@ -447,689 +467,768 @@ const PensionCalculator: CustomScreen<PensionCalculatorProps> = ({ customPageData?.configJson?.indexableBySearchEngine ?? false } > - <FormProvider {...methods}> - <form onSubmit={methods.handleSubmit(onSubmit)}> - <Stack space={6}> - <GridContainer> - <GridRow> - <GridColumn - offset={['0', '0', '0', '1/9']} - className={styles.fullWidth} - > - <Stack space={3}> - <Stack space={3}> - <Box paddingTop={6}> - <Text variant="h1" as="h1"> - {title} - </Text> - </Box> - </Stack> - <Box - columnGap={3} - rowGap={3} - display="flex" - flexDirection="row" - justifyContent="spaceBetween" - alignItems="flexEnd" - flexWrap="wrap" - > - <Box className={styles.textMaxWidth}> - <MarkdownText> - {formatMessage(translationStrings.introduction)} - </MarkdownText> - </Box> - - <Box className={styles.dateOfCalculationsSelect}> - <SelectController - id={'dateOfCalculations' as keyof CalculationInput} - name={'dateOfCalculations' as keyof CalculationInput} - label={formatMessage( - translationStrings.dateOfCalculationsLabel, - )} - placeholder={formatMessage( - translationStrings.dateOfCalculationsPlaceholder, - )} - size="sm" - options={dateOfCalculationsOptions} - onSelect={(option) => { - if (option) { - setDateOfCalculations(option.value) - } - }} - /> - </Box> - </Box> - <Box className={styles.inputContainer}> - <SelectController - id={'typeOfBasePension' as keyof CalculationInput} - name={'typeOfBasePension' as keyof CalculationInput} - label={formatMessage( - translationStrings.typeOfBasePensionLabel, - )} - options={basePensionTypeOptions} - /> - </Box> - </Stack> - </GridColumn> - </GridRow> - </GridContainer> - - <Box paddingY={5} background="blue100"> + {isTurnedOff && ( + <GridContainer> + <GridRow> + <GridColumn + offset={['0', '0', '0', '1/9']} + className={styles.fullWidth} + > + <Box paddingY={5}> + <Stack space={3}> + <Text variant="h1" as="h1"> + {title} + </Text> + <Text>{formatMessage(translationStrings.isTurnedOff)}</Text> + </Stack> + </Box> + </GridColumn> + </GridRow> + </GridContainer> + )} + {!isTurnedOff && ( + <FormProvider {...methods}> + <form onSubmit={methods.handleSubmit(onSubmit)}> + <Stack space={6}> <GridContainer> <GridRow> <GridColumn offset={['0', '0', '0', '1/9']} className={styles.fullWidth} > - <Stack space={5}> - {hasStartDate(typeOfBasePension) && ( - <Stack space={3}> - <Box className={styles.textMaxWidth}> - <Text variant="h2" as="h2"> - {formatMessage( - translationStrings.startOfPaymentsHeading, - )} - </Text> - </Box> - - <Box className={styles.textMaxWidth}> - <Text> - {formatMessage( - translationStrings.startOfPaymentsDescription, - )} - </Text> - </Box> + <Stack space={3}> + <Stack space={3}> + <Box paddingTop={6}> + <Text variant="h1" as="h1"> + {title} + </Text> + </Box> + </Stack> + <Box + columnGap={3} + rowGap={3} + display="flex" + flexDirection="row" + justifyContent="spaceBetween" + alignItems="flexEnd" + flexWrap="wrap" + > + <Box className={styles.textMaxWidth}> + <MarkdownText> + {formatMessage(translationStrings.introduction)} + </MarkdownText> + </Box> - <Box className={styles.textMaxWidth}> - <Text> - {formatMessage( - translationStrings.birthMonthAndYearDescription, - )} - </Text> - </Box> + <Box className={styles.dateOfCalculationsSelect}> + <SelectController + id={'dateOfCalculations' as keyof CalculationInput} + name={ + 'dateOfCalculations' as keyof CalculationInput + } + label={formatMessage( + translationStrings.dateOfCalculationsLabel, + )} + placeholder={formatMessage( + translationStrings.dateOfCalculationsPlaceholder, + )} + size="sm" + options={dateOfCalculationsOptions} + onSelect={(option) => { + if (option) { + setDateOfCalculations(option.value) + } + }} + /> + </Box> + </Box> + <Box className={styles.inputContainer}> + <SelectController + id={'typeOfBasePension' as keyof CalculationInput} + name={'typeOfBasePension' as keyof CalculationInput} + label={formatMessage( + translationStrings.typeOfBasePensionLabel, + )} + options={basePensionTypeOptions} + /> + </Box> + </Stack> + </GridColumn> + </GridRow> + </GridContainer> - <Inline space={3} collapseBelow="sm"> - <Box className={styles.monthSelectContainer}> - <SelectController - id={'birthMonth' as keyof CalculationInput} - name={'birthMonth' as keyof CalculationInput} - options={monthOptions} - label={formatMessage( - translationStrings.birthMonthLabel, - )} - placeholder={formatMessage( - translationStrings.birthMonthPlaceholder, - )} - onSelect={(option) => { - if (option.value > 10) { - methods.setValue('startMonth', 0) - if (startYear) { - methods.setValue( - 'startYear', - startYear + 1, - ) - } - } else { - methods.setValue( - 'startMonth', - option.value + 1, - ) - } - }} - /> - </Box> - <Box className={styles.yearSelectContainer}> - <SelectController - id={'birthYear' as keyof CalculationInput} - name={'birthYear' as keyof CalculationInput} - options={birthYearOptions} - label={formatMessage( - translationStrings.birthYearLabel, - )} - placeholder={formatMessage( - translationStrings.birthYearPlaceholder, + <Box paddingY={5} background="blue100"> + <GridContainer> + <GridRow> + <GridColumn + offset={['0', '0', '0', '1/9']} + className={styles.fullWidth} + > + <Stack space={5}> + {hasStartDate(typeOfBasePension) && ( + <Stack space={3}> + <Box className={styles.textMaxWidth}> + <Text variant="h2" as="h2"> + {formatMessage( + translationStrings.startOfPaymentsHeading, )} - onSelect={(option) => { - methods.setValue( - 'startYear', - option.value + defaultPensionAge, - ) - }} - /> + </Text> </Box> - </Inline> - {startYearOptions?.length > 0 && ( <Box className={styles.textMaxWidth}> <Text> {formatMessage( - translationStrings.startMonthAndYearDescription, - { - month: - activeLocale !== 'en' - ? lowercaseFirstLetter( - defaultStartMonthLabel, - ) - : defaultStartMonthLabel, - year: startYearOptions?.[2]?.label, - }, + translationStrings.startOfPaymentsDescription, )} </Text> </Box> - )} - - {typeof birthMonth === 'number' && - typeof birthYear === 'number' && ( - <Inline space={3} collapseBelow="sm"> - <Box className={styles.monthSelectContainer}> - <SelectController - id={'startMonth' as keyof CalculationInput} - name={ - 'startMonth' as keyof CalculationInput - } - options={startMonthOptions} - label={formatMessage( - translationStrings.startMonthLabel, - )} - placeholder={formatMessage( - translationStrings.startMonthPlaceholder, - )} - /> - </Box> - <Box className={styles.yearSelectContainer}> - <SelectController - id={'startYear' as keyof CalculationInput} - name={'startYear' as keyof CalculationInput} - disabled={ - typeof birthMonth !== 'number' || - typeof birthYear !== 'number' - } - options={startYearOptions} - label={formatMessage( - translationStrings.startYearLabel, - )} - placeholder={formatMessage( - translationStrings.startYearPlaceholder, - )} - /> - </Box> - </Inline> - )} - {typeof monthOffset === 'number' && - monthOffset !== 0 && ( + <Box className={styles.textMaxWidth}> <Text> {formatMessage( - monthOffset > 0 - ? translationStrings.pensionStartIsDelayed - : translationStrings.pensionStartIsHurried, - { - monthAmount: `${Math.abs(monthOffset)} ${ - activeLocale === 'is' ? 'mánuð' : 'month' - }${ - Math.abs(monthOffset) !== 1 - ? activeLocale === 'is' - ? 'i' - : 's' - : '' - }`, - }, + translationStrings.birthMonthAndYearDescription, )} </Text> + </Box> + + <Inline space={3} collapseBelow="sm"> + <Box className={styles.monthSelectContainer}> + <SelectController + id={'birthMonth' as keyof CalculationInput} + name={'birthMonth' as keyof CalculationInput} + options={monthOptions} + label={formatMessage( + translationStrings.birthMonthLabel, + )} + placeholder={formatMessage( + translationStrings.birthMonthPlaceholder, + )} + onSelect={(option) => { + methods.setValue( + 'startMonth', + option.value > 10 ? 0 : option.value + 1, + ) + methods.setValue( + 'startYear', + birthYear + + defaultPensionAge + + (option.value > 10 ? 1 : 0), + ) + }} + /> + </Box> + <Box className={styles.yearSelectContainer}> + <SelectController + id={'birthYear' as keyof CalculationInput} + name={'birthYear' as keyof CalculationInput} + options={birthYearOptions} + label={formatMessage( + translationStrings.birthYearLabel, + )} + placeholder={formatMessage( + translationStrings.birthYearPlaceholder, + )} + onSelect={(option) => { + methods.setValue( + 'startYear', + option.value + defaultPensionAge, + ) + }} + /> + </Box> + </Inline> + + {startYearOptions?.length > 0 && ( + <Box className={styles.textMaxWidth}> + <Text> + {formatMessage( + translationStrings.startMonthAndYearDescription, + { + month: + activeLocale !== 'en' + ? lowercaseFirstLetter( + defaultStartMonthLabel, + ) + : defaultStartMonthLabel, + year: startYearOptions?.[2]?.label, + }, + )} + </Text> + </Box> )} - </Stack> - )} - <Text variant="h2" as="h2"> - {formatMessage( - translationStrings.yourCircumstancesHeading, - )} - </Text> - <Stack space={6}> - <Stack space={3}> - <Box className={styles.inputContainer}> - <SelectController - id={'hasSpouse' as keyof CalculationInput} - name={'hasSpouse' as keyof CalculationInput} - label={formatMessage( - translationStrings.hasSpouseLabel, + {typeof birthMonth === 'number' && + typeof birthYear === 'number' && ( + <Inline space={3} collapseBelow="sm"> + <Box className={styles.monthSelectContainer}> + <SelectController + id={ + 'startMonth' as keyof CalculationInput + } + name={ + 'startMonth' as keyof CalculationInput + } + options={startMonthOptions} + label={formatMessage( + translationStrings.startMonthLabel, + )} + placeholder={formatMessage( + translationStrings.startMonthPlaceholder, + )} + /> + </Box> + <Box className={styles.yearSelectContainer}> + <SelectController + id={'startYear' as keyof CalculationInput} + name={ + 'startYear' as keyof CalculationInput + } + disabled={ + typeof birthMonth !== 'number' || + typeof birthYear !== 'number' + } + options={startYearOptions} + label={formatMessage( + translationStrings.startYearLabel, + )} + placeholder={formatMessage( + translationStrings.startYearPlaceholder, + )} + onSelect={(option) => { + if (!defaultPensionDate) { + return + } + if ( + option.value === + startYearOptions[0]?.value + ) { + const minMonth = add( + defaultPensionDate, + { + months: -maxMonthPensionHurry, + }, + ).getMonth() + if ( + typeof startMonth === 'number' && + startMonth < minMonth + ) { + methods.setValue( + 'startMonth', + minMonth, + ) + } + } + + if ( + option.value === + startYearOptions[ + startYearOptions.length - 1 + ]?.value + ) { + const maxMonth = add( + defaultPensionDate, + { + months: maxMonthPensionDelay, + }, + ).getMonth() + + if ( + typeof startMonth === 'number' && + startMonth > maxMonth + ) { + methods.setValue( + 'startMonth', + maxMonth, + ) + } + } + }} + /> + </Box> + </Inline> )} - placeholder={formatMessage( - translationStrings.hasSpousePlaceholder, - )} - options={hasSpouseOptions} - /> - </Box> - <Box className={styles.inputContainer}> - <SelectController - id={'livingCondition' as keyof CalculationInput} - name={'livingCondition' as keyof CalculationInput} - label={formatMessage( - translationStrings.livingConditionLabel, - )} - placeholder={formatMessage( - translationStrings.livingConditionPlaceholder, + {typeof monthOffset === 'number' && + monthOffset !== 0 && ( + <Text> + {formatMessage( + monthOffset > 0 + ? translationStrings.pensionStartIsDelayed + : translationStrings.pensionStartIsHurried, + { + monthAmount: `${Math.abs(monthOffset)} ${ + activeLocale === 'is' + ? 'mánuð' + : 'month' + }${ + Math.abs(monthOffset) !== 1 + ? activeLocale === 'is' + ? 'i' + : 's' + : '' + }`, + }, + )} + </Text> )} - options={livingConditionOptions} - /> - </Box> + </Stack> + )} + <Text variant="h2" as="h2"> + {formatMessage( + translationStrings.yourCircumstancesHeading, + )} + </Text> - <Box className={styles.inputContainer}> - <SelectController - id={'childCount' as keyof CalculationInput} - name={'childCount' as keyof CalculationInput} - label={formatMessage( - translationStrings.childCountLabel, - )} - placeholder={formatMessage( - translationStrings.childCountPlaceholder, - )} - options={childCountOptions} - /> - </Box> + <Stack space={6}> + <Stack space={3}> + <Box className={styles.inputContainer}> + <SelectController + id={'hasSpouse' as keyof CalculationInput} + name={'hasSpouse' as keyof CalculationInput} + label={formatMessage( + translationStrings.hasSpouseLabel, + )} + placeholder={formatMessage( + translationStrings.hasSpousePlaceholder, + )} + options={hasSpouseOptions} + /> + </Box> - {(typeOfBasePension === BasePensionType.Disability || - typeOfBasePension === - BasePensionType.Rehabilitation) && ( <Box className={styles.inputContainer}> - <InputController - id={ - 'ageOfFirst75DisabilityAssessment' as keyof CalculationInput - } + <SelectController + id={'livingCondition' as keyof CalculationInput} name={ - 'ageOfFirst75DisabilityAssessment' as keyof CalculationInput + 'livingCondition' as keyof CalculationInput } label={formatMessage( - typeOfBasePension === - BasePensionType.Disability - ? translationStrings.ageOfFirst75DisabilityAssessment - : translationStrings.ageOfFirst75RehabilitationAssessment, + translationStrings.livingConditionLabel, )} - suffix={ - ' ' + - formatMessage( - translationStrings.ageOfFirst75DisabilityAssessmentSuffix, - ) - } - type="number" - maxLength={ - formatMessage( - translationStrings.ageOfFirst75DisabilityAssessmentSuffix, - ).length + 3 - } placeholder={formatMessage( - translationStrings.ageOfFirst75DisabilityAssessmentPlaceholder, + translationStrings.livingConditionPlaceholder, )} + options={livingConditionOptions} /> </Box> - )} - </Stack> - {!hasDisabilityAssessment(typeOfBasePension) && ( - <Stack space={2}> - <Text> - {formatMessage( - translationStrings.hasLivedAbroadLabel, - )} - </Text> + <Box className={styles.inputContainer}> - <Inline space={3}> - <RadioButton - id="hasLivedAbroadNo" - checked={hasLivedAbroad === false} - onChange={() => { - setHasLivedAbroad(false) - methods.setValue( - 'livingConditionAbroadInYears', - null, - ) - }} - label={formatMessage( - translationStrings.hasLivedAbroadNo, - )} - /> - <RadioButton - id="hasLivedAbroadYes" - checked={hasLivedAbroad === true} - onChange={() => { - setHasLivedAbroad(true) - }} - label={formatMessage( - translationStrings.hasLivedAbroadYes, - )} - /> - </Inline> + <SelectController + id={'childCount' as keyof CalculationInput} + name={'childCount' as keyof CalculationInput} + label={formatMessage( + translationStrings.childCountLabel, + )} + placeholder={formatMessage( + translationStrings.childCountPlaceholder, + )} + options={childCountOptions} + /> </Box> - {hasLivedAbroad && ( + {(typeOfBasePension === + BasePensionType.Disability || + typeOfBasePension === + BasePensionType.Rehabilitation) && ( <Box className={styles.inputContainer}> <InputController id={ - 'livingConditionAbroadInYears' as keyof CalculationInput + 'ageOfFirst75DisabilityAssessment' as keyof CalculationInput } name={ - 'livingConditionAbroadInYears' as keyof CalculationInput + 'ageOfFirst75DisabilityAssessment' as keyof CalculationInput } label={formatMessage( - translationStrings.livingConditionAbroadInYearsLabel, + typeOfBasePension === + BasePensionType.Disability + ? translationStrings.ageOfFirst75DisabilityAssessment + : translationStrings.ageOfFirst75RehabilitationAssessment, )} + suffix={ + ' ' + + formatMessage( + translationStrings.ageOfFirst75DisabilityAssessmentSuffix, + ) + } + type="number" + maxLength={ + formatMessage( + translationStrings.ageOfFirst75DisabilityAssessmentSuffix, + ).length + 3 + } placeholder={formatMessage( - translationStrings.livingConditionAbroadInYearsPlaceholder, + translationStrings.ageOfFirst75DisabilityAssessmentPlaceholder, )} - type="number" - suffix={` ${formatMessage( - translationStrings.yearsSuffix, - )}`} - format={(value) => { - if ( - Number(value) > - maxLivingConditionAbroadInYears - ) { - value = String( - maxLivingConditionAbroadInYears, - ) - } - return `${value} ${formatMessage( - translationStrings.yearsSuffix, - )}` - }} /> </Box> )} </Stack> - )} - - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.taxCardRatioHeading, - )} - description={formatMessage( - translationStrings.taxCardRatioDescription, - )} - > - <Box className={styles.inputContainer}> - <InputController - id={'taxCard' as keyof CalculationInput} - name={'taxCard' as keyof CalculationInput} - label={formatMessage( - translationStrings.taxCardRatioLabel, - )} - placeholder="%" - type="number" - suffix="%" - format={(value) => { - if (Number(value) > maxTaxCardRatio) { - value = String(maxTaxCardRatio) - } - return `${value}%` - }} - /> - </Box> - </NumericInputFieldWrapper> - </Stack> - - <Text variant="h2" as="h2"> - {formatMessage(translationStrings.mainIncomeHeading)} - </Text> - - <MarkdownText> - {formatMessage(translationStrings.incomeDisclaimer)} - </MarkdownText> - - <Stack space={3}> - <Text variant="h4" as="h3"> - {formatMessage( - translationStrings.incomeBeforeTaxHeading, - )} - </Text> - - <Box className={styles.inputContainer}> - <Controller - name={ - 'typeOfPeriodIncome' as keyof CalculationInput - } - render={({ field: { value, onChange } }) => ( - <GridRow rowGap={3}> - <GridColumn span={['1/1', '1/2']}> + {!hasDisabilityAssessment(typeOfBasePension) && ( + <Stack space={2}> + <Text> + {formatMessage( + translationStrings.hasLivedAbroadLabel, + )} + </Text> + <Box className={styles.inputContainer}> + <Inline space={3}> <RadioButton - id="typeOfPeriodIncomeMonth" - checked={value === PeriodIncomeType.Month} + id="hasLivedAbroadNo" + checked={hasLivedAbroad === false} onChange={() => { - onChange(PeriodIncomeType.Month) + setHasLivedAbroad(false) + methods.setValue( + 'livingConditionAbroadInYears', + null, + ) }} label={formatMessage( - translationStrings.typeOfPeriodIncomeMonthLabel, + translationStrings.hasLivedAbroadNo, )} /> - </GridColumn> - <GridColumn span={['1/1', '1/2']}> <RadioButton - id="typeOfPeriodIncomeYear" - checked={value === PeriodIncomeType.Year} + id="hasLivedAbroadYes" + checked={hasLivedAbroad === true} onChange={() => { - onChange(PeriodIncomeType.Year) + setHasLivedAbroad(true) }} label={formatMessage( - translationStrings.typeOfPeriodIncomeYearLabel, + translationStrings.hasLivedAbroadYes, )} /> - </GridColumn> - </GridRow> - )} - /> - </Box> - </Stack> - <Text> - {formatMessage(translationStrings.amountDisclaimer)} - </Text> - - <Stack space={6}> - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.incomeHeading, - )} - description={formatMessage( - translationStrings.incomeDescription, - )} - > - <Box className={styles.inputContainer}> - <InputController - id={'income' as keyof CalculationInput} - name={'income' as keyof CalculationInput} - label={formatMessage( - translationStrings.incomeLabel, - )} - placeholder="kr." - currency={true} - maxLength={currencyInputMaxLength} - /> - </Box> - </NumericInputFieldWrapper> + </Inline> + </Box> - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.pensionPaymentsHeading, - )} - description={formatMessage( - translationStrings.pensionPaymentsDescription, - )} - > - <Box className={styles.inputContainer}> - <InputController - id={'pensionPayments' as keyof CalculationInput} - name={'pensionPayments' as keyof CalculationInput} - label={formatMessage( - translationStrings.pensionPaymentsLabel, + {hasLivedAbroad && ( + <Box className={styles.inputContainer}> + <InputController + id={ + 'livingConditionAbroadInYears' as keyof CalculationInput + } + name={ + 'livingConditionAbroadInYears' as keyof CalculationInput + } + label={formatMessage( + translationStrings.livingConditionAbroadInYearsLabel, + )} + placeholder={formatMessage( + translationStrings.livingConditionAbroadInYearsPlaceholder, + )} + type="number" + suffix={` ${formatMessage( + translationStrings.yearsSuffix, + )}`} + format={(value) => { + if ( + Number(value) > + maxLivingConditionAbroadInYears + ) { + value = String( + maxLivingConditionAbroadInYears, + ) + } + return `${value} ${formatMessage( + translationStrings.yearsSuffix, + )}` + }} + /> + </Box> )} - placeholder="kr." - currency={true} - maxLength={currencyInputMaxLength} - /> - </Box> - </NumericInputFieldWrapper> - - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.privatePensionPaymentsHeading, - )} - description={formatMessage( - translationStrings.privatePensionPaymentsDescription, + </Stack> )} - > - <Box className={styles.inputContainer}> - <InputController - id={ - 'privatePensionPayments' as keyof CalculationInput - } - name={ - 'privatePensionPayments' as keyof CalculationInput - } - label={formatMessage( - translationStrings.privatePensionPaymentsLabel, - )} - placeholder="kr." - currency={true} - maxLength={currencyInputMaxLength} - /> - </Box> - </NumericInputFieldWrapper> - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.otherIncomeHeading, - )} - description={formatMessage( - translationStrings.otherIncomeDescription, - )} - > - <Box className={styles.inputContainer}> - <InputController - id={'otherIncome' as keyof CalculationInput} - name={'otherIncome' as keyof CalculationInput} - label={formatMessage( - translationStrings.otherIncomeLabel, - )} - placeholder="kr." - currency={true} - maxLength={currencyInputMaxLength} - /> - </Box> - </NumericInputFieldWrapper> + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.taxCardRatioHeading, + )} + description={formatMessage( + translationStrings.taxCardRatioDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={'taxCard' as keyof CalculationInput} + name={'taxCard' as keyof CalculationInput} + label={formatMessage( + translationStrings.taxCardRatioLabel, + )} + placeholder="%" + type="number" + suffix="%" + format={(value) => { + if (Number(value) > maxTaxCardRatio) { + value = String(maxTaxCardRatio) + } + return `${value}%` + }} + /> + </Box> + </NumericInputFieldWrapper> + </Stack> - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.capitalIncomeHeading, - )} - description={formatMessage( - translationStrings.capitalIncomeDescription, - )} - > - <Box className={styles.inputContainer}> - <InputController - id={'capitalIncome' as keyof CalculationInput} - name={'capitalIncome' as keyof CalculationInput} - label={formatMessage( - translationStrings.capitalIncomeLabel, - )} - placeholder="kr." - currency={true} - maxLength={currencyInputMaxLength} - /> - </Box> - </NumericInputFieldWrapper> + <Text variant="h2" as="h2"> + {formatMessage(translationStrings.mainIncomeHeading)} + </Text> - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.foreignBasicPensionHeading, - )} - description={formatMessage( - translationStrings.foreignBasicPensionDescription, - )} - > - <Box className={styles.inputContainer}> - <InputController - id={ - 'foreignBasicPension' as keyof CalculationInput - } - name={ - 'foreignBasicPension' as keyof CalculationInput - } - label={formatMessage( - translationStrings.foreignBasicPensionLabel, - )} - placeholder="kr." - currency={true} - maxLength={currencyInputMaxLength} - /> - </Box> - </NumericInputFieldWrapper> + <MarkdownText> + {formatMessage(translationStrings.incomeDisclaimer)} + </MarkdownText> + + <Stack space={3}> + <Text variant="h4" as="h3"> + {formatMessage( + translationStrings.incomeBeforeTaxHeading, + )} + </Text> - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.benefitsFromMunicipalityHeading, - )} - description={formatMessage( - translationStrings.benefitsFromMunicipalityDescription, - )} - > <Box className={styles.inputContainer}> - <InputController - id={ - 'benefitsFromMunicipality' as keyof CalculationInput - } + <Controller name={ - 'benefitsFromMunicipality' as keyof CalculationInput + 'typeOfPeriodIncome' as keyof CalculationInput } - label={formatMessage( - translationStrings.benefitsFromMunicipalityLabel, + render={({ field: { value, onChange } }) => ( + <GridRow rowGap={3}> + <GridColumn span={['1/1', '1/2']}> + <RadioButton + id="typeOfPeriodIncomeMonth" + checked={value === PeriodIncomeType.Month} + onChange={() => { + onChange(PeriodIncomeType.Month) + }} + label={formatMessage( + translationStrings.typeOfPeriodIncomeMonthLabel, + )} + /> + </GridColumn> + <GridColumn span={['1/1', '1/2']}> + <RadioButton + id="typeOfPeriodIncomeYear" + checked={value === PeriodIncomeType.Year} + onChange={() => { + onChange(PeriodIncomeType.Year) + }} + label={formatMessage( + translationStrings.typeOfPeriodIncomeYearLabel, + )} + /> + </GridColumn> + </GridRow> )} - placeholder="kr." - currency={true} - maxLength={currencyInputMaxLength} /> </Box> - </NumericInputFieldWrapper> + </Stack> + <Text> + {formatMessage(translationStrings.amountDisclaimer)} + </Text> - <NumericInputFieldWrapper - heading={formatMessage( - translationStrings.premiumHeading, - )} - description={formatMessage( - translationStrings.premiumDescription, - )} - > - <Box className={styles.inputContainer}> - <InputController - id={'premium' as keyof CalculationInput} - name={'premium' as keyof CalculationInput} - label={formatMessage( - translationStrings.premiumLabel, - )} - placeholder="kr." - currency={true} - maxLength={currencyInputMaxLength} - /> - </Box> - </NumericInputFieldWrapper> + <Stack space={6}> + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.incomeHeading, + )} + description={formatMessage( + translationStrings.incomeDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={'income' as keyof CalculationInput} + name={'income' as keyof CalculationInput} + label={formatMessage( + translationStrings.incomeLabel, + )} + placeholder="kr." + currency={true} + maxLength={currencyInputMaxLength} + /> + </Box> + </NumericInputFieldWrapper> - <Box className={styles.textMaxWidth}> - <Text variant="h5"> - {formatMessage(translationStrings.disclaimer)} - </Text> - </Box> + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.pensionPaymentsHeading, + )} + description={formatMessage( + translationStrings.pensionPaymentsDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={'pensionPayments' as keyof CalculationInput} + name={ + 'pensionPayments' as keyof CalculationInput + } + label={formatMessage( + translationStrings.pensionPaymentsLabel, + )} + placeholder="kr." + currency={true} + maxLength={currencyInputMaxLength} + /> + </Box> + </NumericInputFieldWrapper> + + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.privatePensionPaymentsHeading, + )} + description={formatMessage( + translationStrings.privatePensionPaymentsDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={ + 'privatePensionPayments' as keyof CalculationInput + } + name={ + 'privatePensionPayments' as keyof CalculationInput + } + label={formatMessage( + translationStrings.privatePensionPaymentsLabel, + )} + placeholder="kr." + currency={true} + maxLength={currencyInputMaxLength} + /> + </Box> + </NumericInputFieldWrapper> + + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.otherIncomeHeading, + )} + description={formatMessage( + translationStrings.otherIncomeDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={'otherIncome' as keyof CalculationInput} + name={'otherIncome' as keyof CalculationInput} + label={formatMessage( + translationStrings.otherIncomeLabel, + )} + placeholder="kr." + currency={true} + maxLength={currencyInputMaxLength} + /> + </Box> + </NumericInputFieldWrapper> + + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.capitalIncomeHeading, + )} + description={formatMessage( + translationStrings.capitalIncomeDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={'capitalIncome' as keyof CalculationInput} + name={'capitalIncome' as keyof CalculationInput} + label={formatMessage( + translationStrings.capitalIncomeLabel, + )} + placeholder="kr." + currency={true} + maxLength={currencyInputMaxLength} + /> + </Box> + </NumericInputFieldWrapper> + + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.foreignBasicPensionHeading, + )} + description={formatMessage( + translationStrings.foreignBasicPensionDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={ + 'foreignBasicPension' as keyof CalculationInput + } + name={ + 'foreignBasicPension' as keyof CalculationInput + } + label={formatMessage( + translationStrings.foreignBasicPensionLabel, + )} + placeholder="kr." + currency={true} + maxLength={currencyInputMaxLength} + /> + </Box> + </NumericInputFieldWrapper> + + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.benefitsFromMunicipalityHeading, + )} + description={formatMessage( + translationStrings.benefitsFromMunicipalityDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={ + 'benefitsFromMunicipality' as keyof CalculationInput + } + name={ + 'benefitsFromMunicipality' as keyof CalculationInput + } + label={formatMessage( + translationStrings.benefitsFromMunicipalityLabel, + )} + placeholder="kr." + currency={true} + maxLength={currencyInputMaxLength} + /> + </Box> + </NumericInputFieldWrapper> + + <NumericInputFieldWrapper + heading={formatMessage( + translationStrings.premiumHeading, + )} + description={formatMessage( + translationStrings.premiumDescription, + )} + > + <Box className={styles.inputContainer}> + <InputController + id={'premium' as keyof CalculationInput} + name={'premium' as keyof CalculationInput} + label={formatMessage( + translationStrings.premiumLabel, + )} + placeholder="kr." + currency={true} + maxLength={currencyInputMaxLength} + /> + </Box> + </NumericInputFieldWrapper> - <Button loading={loadingResultPage} type="submit"> - {formatMessage(translationStrings.calculateResults)} - </Button> + <Box className={styles.textMaxWidth}> + <Text variant="h5"> + {formatMessage(translationStrings.disclaimer)} + </Text> + </Box> + + <Button loading={loadingResultPage} type="submit"> + {formatMessage(translationStrings.calculateResults)} + </Button> + </Stack> </Stack> - </Stack> - </GridColumn> - </GridRow> - </GridContainer> - </Box> - </Stack> - </form> - </FormProvider> + </GridColumn> + </GridRow> + </GridContainer> + </Box> + </Stack> + </form> + </FormProvider> + )} </PensionCalculatorWrapper> ) } diff --git a/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculatorResults.css.ts b/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculatorResults.css.ts index 54f76913b245..328a1f9d3e6c 100644 --- a/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculatorResults.css.ts +++ b/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculatorResults.css.ts @@ -1,6 +1,6 @@ import { globalStyle, style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' +import { theme, themeUtils } from '@island.is/island-ui/theme' const lineWidth = '2px' @@ -9,6 +9,24 @@ export const line = style({ height: '86px', }) +export const longLine = style({ + borderLeft: `${lineWidth} solid ${theme.color.blue200}`, +}) + +export const highlightedItemsContainer = style({ + display: 'grid', + ...themeUtils.responsiveStyle({ + xs: { + gridTemplateColumns: '1fr', + gap: theme.spacing[4], + }, + lg: { + gridTemplateColumns: '1fr auto 1fr', + gap: theme.spacing[7], + }, + }), +}) + export const fullWidth = style({ width: '100%', }) diff --git a/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculatorResults.tsx b/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculatorResults.tsx index de4a3a81ddd2..012b682e025b 100644 --- a/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculatorResults.tsx +++ b/apps/web/screens/Organization/SocialInsuranceAdministration/PensionCalculatorResults.tsx @@ -1,4 +1,4 @@ -import { Fragment, ReactNode } from 'react' +import { Fragment, useState } from 'react' import { useIntl } from 'react-intl' import { @@ -30,6 +30,7 @@ import { QueryGetOrganizationArgs, QueryGetOrganizationPageArgs, QueryGetPensionCalculationArgs, + SocialInsurancePensionCalculationBasePensionType, SocialInsurancePensionCalculationInput, SocialInsurancePensionCalculationResponse, SocialInsurancePensionCalculationResponseItem, @@ -56,23 +57,37 @@ import { convertToQueryParams, extractSlug, getDateOfCalculationsOptions, + is2025PreviewActive, } from './utils' import * as styles from './PensionCalculatorResults.css' +const ChangeAssumptionsButton = ({ href }: { href: string }) => { + const { formatMessage } = useIntl() + return ( + <LinkV2 href={href}> + <Button unfocusable={true} variant="text" preTextIcon="arrowBack"> + {formatMessage(translationStrings.changeAssumptions)} + </Button> + </LinkV2> + ) +} + interface HighlightedItemsProps { highlightedItems: SocialInsurancePensionCalculationResponseItem[] customPageData: CustomPage | null | undefined - firstItemRightAlignedContent?: ReactNode + topHeadingText?: string + topHeadingLevel?: 2 | 3 } const HighlightedItems = ({ highlightedItems, customPageData, - firstItemRightAlignedContent, + topHeadingText, + topHeadingLevel = 3, }: HighlightedItemsProps) => { const { formatMessage } = useIntl() - const higlightedItemIsPresent = highlightedItems.length > 0 + const highlightedItemPresent = highlightedItems.length > 0 const perMonthText = formatMessage(translationStrings.perMonth) const perYearText = formatMessage(translationStrings.perYear) @@ -99,21 +114,30 @@ const HighlightedItems = ({ ) } - const titleVariant: TextProps['variant'] = index === 0 ? 'h3' : 'h4' + const titleAs: TextProps['as'] = (index === 0 + ? `h${topHeadingLevel}` + : `h${topHeadingLevel + 1}`) as unknown as TextProps['as'] + + const titleVariant: TextProps['variant'] = (index === 0 + ? `h${topHeadingLevel + 1}` + : `h${topHeadingLevel + 2}`) as unknown as TextProps['variant'] const numericVariant: TextProps['variant'] = index === 0 ? 'h5' : 'medium' + if (index === 0 && topHeadingText) { + highlightedItemName = topHeadingText + } + return ( <Stack key={index} space={2}> <Inline alignY="center" justifyContent="spaceBetween" space={5}> - {higlightedItemIsPresent && ( - <Text variant={titleVariant} as="h2"> + {highlightedItemPresent && ( + <Text variant={titleVariant} as={titleAs}> {highlightedItemName} </Text> )} - {!higlightedItemIsPresent && <Box />} - {index === 0 && firstItemRightAlignedContent} + {!highlightedItemPresent && <Box />} </Inline> <Box className={styles.grid}> @@ -237,6 +261,7 @@ interface PensionCalculatorResultsProps { organizationPage: OrganizationPage organization: Organization calculation: SocialInsurancePensionCalculationResponse + calculation2025: SocialInsurancePensionCalculationResponse calculationInput: SocialInsurancePensionCalculationInput queryParamString: string dateOfCalculationsOptions: Option<string>[] @@ -246,6 +271,7 @@ const PensionCalculatorResults: CustomScreen<PensionCalculatorResultsProps> = ({ organizationPage, organization, calculation, + calculation2025, calculationInput, queryParamString, dateOfCalculationsOptions, @@ -256,6 +282,8 @@ const PensionCalculatorResults: CustomScreen<PensionCalculatorResultsProps> = ({ const highlightedItems = calculation.highlightedItems ?? [] + const highlightedItems2025 = calculation2025.highlightedItems ?? [] + const title = `${formatMessage(translationStrings.mainTitle)} ${ dateOfCalculationsOptions.find( (o) => o.value === calculationInput.dateOfCalculations, @@ -266,7 +294,25 @@ const PensionCalculatorResults: CustomScreen<PensionCalculatorResultsProps> = ({ typeof calculation.groups?.length === 'number' && calculation.groups.length > 0 - const higlightedItemIsPresent = highlightedItems.length > 0 + const calculation2025IsPresent = + typeof calculation2025.groups?.length === 'number' && + calculation2025.groups.length > 0 + + const highlightedItemPresent = highlightedItems.length > 0 + const highlighted2025ItemIsPresent = + highlightedItems2025.length > 0 && + is2025PreviewActive(customPageData) && + calculationInput.dateOfCalculations && + new Date(calculationInput.dateOfCalculations).getFullYear() >= 2024 + + const isTurnedOff = customPageData?.configJson?.isTurnedOff ?? false + + const changeAssumtionsHref = `${ + linkResolver('pensioncalculator').href + }?${queryParamString}` + + const [showDisabilityChangesIn2025, setShowDisabilityChangesIn2025] = + useState(false) return ( <> @@ -278,117 +324,222 @@ const PensionCalculatorResults: CustomScreen<PensionCalculatorResultsProps> = ({ ogImageUrl={organizationPage.featuredImage?.url} indexableBySearchEngine={false} > - <GridContainer> - <GridRow> - <GridColumn - offset={['0', '0', '0', '1/9']} - className={styles.fullWidth} - > - <Box paddingY={6}> - <Stack space={5}> - <Stack space={2}> + {isTurnedOff && ( + <GridContainer> + <GridRow> + <GridColumn + offset={['0', '0', '0', '1/9']} + className={styles.fullWidth} + > + <Box paddingY={5}> + <Stack space={3}> <Text variant="h1" as="h1"> {title} </Text> - <Box className={styles.textMaxWidth}> - <Text> - {formatMessage(translationStrings.resultDisclaimer)} - </Text> - </Box> + <Text> + {formatMessage(translationStrings.isTurnedOff)} + </Text> </Stack> - {higlightedItemIsPresent && ( - <HighlightedItems - customPageData={customPageData} - highlightedItems={highlightedItems} - firstItemRightAlignedContent={ - <Hidden print below="md"> - <LinkV2 - href={`${ - linkResolver('pensioncalculator').href - }?${queryParamString}`} - > - <Button unfocusable={true} size="small"> + </Box> + </GridColumn> + </GridRow> + </GridContainer> + )} + + {!isTurnedOff && ( + <GridContainer> + <GridRow> + <GridColumn + offset={['0', '0', '0', '1/9']} + className={styles.fullWidth} + > + <Box paddingY={6}> + <Stack space={5}> + <Stack space={2}> + <Text variant="h1" as="h1"> + {title} + </Text> + <Box className={styles.textMaxWidth}> + <Text> + {formatMessage( + highlighted2025ItemIsPresent + ? translationStrings.result2025Disclaimer + : translationStrings.resultDisclaimer, + )} + </Text> + </Box> + </Stack> + <Hidden print> + <Box + display="flex" + justifyContent={['flexStart', 'flexStart', 'flexEnd']} + > + <ChangeAssumptionsButton + href={changeAssumtionsHref} + /> + </Box> + </Hidden> + {highlightedItemPresent && ( + <Stack space={2}> + {highlighted2025ItemIsPresent && + calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability && ( + <Text as="h2" variant="h3"> {formatMessage( - translationStrings.changeAssumptions, + translationStrings.highlightedResult2025ItemHeading, )} - </Button> - </LinkV2> - </Hidden> - } - /> - )} - <Hidden print above="sm"> - <LinkV2 - href={`${ - linkResolver('pensioncalculator').href - }?${queryParamString}`} - > - <Button unfocusable={true} size="small"> - {formatMessage(translationStrings.changeAssumptions)} - </Button> - </LinkV2> - </Hidden> - - {!calculationIsPresent && ( - <AlertMessage - type="warning" - message={formatMessage( - translationStrings.noResultsCanBeShown, - )} - /> - )} - - {calculationIsPresent && ( - <Accordion dividerOnTop={false}> - <AccordionItem - startExpanded={!higlightedItemIsPresent} - id="resultDetails" - labelVariant="h3" - labelUse="h3" - label={formatMessage( - translationStrings.resultDetailsLabel, - )} - > - <Box paddingBottom={3}> - <Stack space={3}> - <Box display="flex" justifyContent="flexEnd"> - <Hidden print> + </Text> + )} + <Box className={styles.highlightedItemsContainer}> + <HighlightedItems + customPageData={customPageData} + highlightedItems={highlightedItems} + topHeadingLevel={ + highlighted2025ItemIsPresent && + calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability + ? 3 + : 2 + } + topHeadingText={ + highlighted2025ItemIsPresent && + calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability + ? String( + new Date( + calculationInput.dateOfCalculations || + new Date().toISOString(), + ).getFullYear(), + ) + : '' + } + /> + + {calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability && + highlighted2025ItemIsPresent && ( + <Box className={styles.longLine} /> + )} + + {showDisabilityChangesIn2025 && + highlighted2025ItemIsPresent && ( + <HighlightedItems + customPageData={customPageData} + highlightedItems={highlightedItems2025} + topHeadingText={formatMessage( + translationStrings.after1stSeptember2025, + )} + topHeadingLevel={ + calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability + ? 3 + : 2 + } + /> + )} + + {calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability && + !showDisabilityChangesIn2025 && + highlighted2025ItemIsPresent && ( + <Stack space={3}> + <Text variant="h4" as="h3"> + {formatMessage( + translationStrings.after1stSeptember2025, + )} + </Text> + <Text> + {formatMessage( + translationStrings.after1stSeptember2025Description, + )} + </Text> <Button - icon="print" - variant="utility" onClick={() => { - window.print() + setShowDisabilityChangesIn2025(true) }} + size="small" > - {formatMessage(translationStrings.print)} + {formatMessage( + translationStrings.after1stSeptember2025Calculate, + )} </Button> - </Hidden> - </Box> - <ResultTable groups={calculation.groups} /> - </Stack> - - <Hidden print> - <LinkV2 - href={`${ - linkResolver('pensioncalculator').href - }?${queryParamString}`} - > - <Button unfocusable={true} size="small"> - {formatMessage( - translationStrings.changeAssumptions, - )} - </Button> - </LinkV2> - </Hidden> + </Stack> + )} </Box> - </AccordionItem> - </Accordion> - )} - </Stack> - </Box> - </GridColumn> - </GridRow> - </GridContainer> + </Stack> + )} + + {!calculationIsPresent && ( + <AlertMessage + type="warning" + message={formatMessage( + translationStrings.noResultsCanBeShown, + )} + /> + )} + + {calculationIsPresent && ( + <Accordion dividerOnTop={false}> + <AccordionItem + startExpanded={!highlightedItemPresent} + id="resultDetails" + labelVariant="h3" + labelUse="h3" + label={formatMessage( + highlighted2025ItemIsPresent && + calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability + ? translationStrings.resultDetails2024Label + : translationStrings.resultDetailsLabel, + )} + > + <Box> + <Stack space={3}> + <Box display="flex" justifyContent="flexEnd"> + <Hidden print> + <Button + icon="print" + variant="utility" + onClick={() => { + window.print() + }} + > + {formatMessage(translationStrings.print)} + </Button> + </Hidden> + </Box> + <ResultTable groups={calculation.groups} /> + </Stack> + + <Hidden print> + <ChangeAssumptionsButton + href={changeAssumtionsHref} + /> + </Hidden> + </Box> + </AccordionItem> + {calculation2025IsPresent && + showDisabilityChangesIn2025 && ( + <AccordionItem + startExpanded={false} + id="resultDetails" + labelVariant="h3" + labelUse="h3" + label={formatMessage( + translationStrings.result2025DetailsLabel, + )} + > + <ResultTable groups={calculation2025.groups} /> + </AccordionItem> + )} + </Accordion> + )} + </Stack> + </Box> + </GridColumn> + </GridRow> + </GridContainer> + )} </PensionCalculatorWrapper> </Box> @@ -399,13 +550,36 @@ const PensionCalculatorResults: CustomScreen<PensionCalculatorResultsProps> = ({ {title} </Text> <Box className={styles.textMaxWidth}> - <Text>{formatMessage(translationStrings.resultDisclaimer)}</Text> + <Text> + {highlighted2025ItemIsPresent + ? formatMessage(translationStrings.result2025Disclaimer) + : formatMessage(translationStrings.resultDisclaimer)} + </Text> </Box> </Stack> - {higlightedItemIsPresent && ( + {highlightedItemPresent && ( <HighlightedItems customPageData={customPageData} highlightedItems={highlightedItems} + topHeadingText={ + highlighted2025ItemIsPresent && + calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability + ? String( + new Date( + calculationInput.dateOfCalculations || + new Date().toISOString(), + ).getFullYear(), + ) + : '' + } + topHeadingLevel={ + highlighted2025ItemIsPresent && + calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability + ? 3 + : 2 + } /> )} <Box paddingTop={2}> @@ -435,6 +609,9 @@ PensionCalculatorResults.getProps = async ({ { data: { getPensionCalculation }, }, + { + data: { getPensionCalculation: getPensionCalculation2025 }, + }, ] = await Promise.all([ apolloClient.query<Query, QueryGetOrganizationPageArgs>({ query: GET_ORGANIZATION_PAGE_QUERY, @@ -460,6 +637,29 @@ PensionCalculatorResults.getProps = async ({ input: calculationInput, }, }), + calculationInput.typeOfBasePension === + SocialInsurancePensionCalculationBasePensionType.Disability && + is2025PreviewActive(customPageData) + ? apolloClient.query<Query, QueryGetPensionCalculationArgs>({ + query: GET_PENSION_CALCULATION, + variables: { + input: { + ...calculationInput, + startYear: 2025, + startMonth: 9, + typeOfBasePension: + SocialInsurancePensionCalculationBasePensionType.NewSystem, + }, + }, + }) + : { + data: { + getPensionCalculation: { + groups: [], + highlightedItems: [], + }, + }, + }, ]) if (!getOrganizationPage) { @@ -477,11 +677,13 @@ PensionCalculatorResults.getProps = async ({ } const queryParams = convertToQueryParams(calculationInput) + const queryParamsObject = Object.fromEntries(queryParams) return { organizationPage: getOrganizationPage, organization: getOrganization, calculation: getPensionCalculation, + calculation2025: getPensionCalculation2025, calculationInput, dateOfCalculationsOptions: getDateOfCalculationsOptions(customPageData), queryParamString: queryParams.toString(), @@ -489,6 +691,10 @@ PensionCalculatorResults.getProps = async ({ getOrganizationPage?.theme, getOrganizationPage?.organization, ), + languageToggleQueryParams: { + is: queryParamsObject, + en: queryParamsObject, + }, } } diff --git a/apps/web/screens/Organization/SocialInsuranceAdministration/translationStrings.ts b/apps/web/screens/Organization/SocialInsuranceAdministration/translationStrings.ts index b53f71660b27..66cf0b1c41fe 100644 --- a/apps/web/screens/Organization/SocialInsuranceAdministration/translationStrings.ts +++ b/apps/web/screens/Organization/SocialInsuranceAdministration/translationStrings.ts @@ -1,6 +1,11 @@ import { defineMessages } from 'react-intl' export const translationStrings = defineMessages({ + isTurnedOff: { + id: 'web.pensionCalculator:isTurnedOff', + defaultMessage: 'Reiknivélin er ekki virk að svo stöddu', + description: 'Upplýsingar efst á fyrstu síðu ef slökkt er á reiknivél', + }, introduction: { id: 'web.pensionCalculator:introduction#markdown', defaultMessage: @@ -423,11 +428,23 @@ export const translationStrings = defineMessages({ 'Vinsamlega hafðu í huga að reiknivélin reiknar greiðslur miðað við þær forsendur sem þú gefur upp. Líkanið er einungis til leiðbeiningar en veitir ekki bindandi upplýsingar um endanlega afgreiðslu máls eða greiðslufjárhæðir', description: 'Fyrirvari á niðurstöðuskjá', }, + result2025Disclaimer: { + id: 'web.pensionCalculator:result2025Disclaimer', + defaultMessage: + 'Reiknivélinni byggir á þeim forsendum sem þú gafst upp. Upphæðir eru aðeins leiðbeinandi og veita ekki bindandi upplýsingar um endanlega afgreiðslu mála eða greiðsluupphæða. Annars vegar eru niðurstöður birtar fyrir árið núna og hins vegar í nýju kerfi eftir 1. september 2025', + description: + 'Fyrirvari á niðurstöðuskjá fyrir örorkulífeyrissamanburð eftir 1. september 2025', + }, highlightedResultItemHeading: { id: 'web.pensionCalculator:highlighedResultItemHeading', defaultMessage: 'Samtals greiðslur frá TR eftir skatt', description: 'H2, Samtals greiðslur frá TR eftir skatt', }, + highlightedResult2025ItemHeading: { + id: 'web.pensionCalculator:highlighedResult2025ItemHeading', + defaultMessage: 'Samtals ráðstöfunartekjur eftir skatt', + description: 'H2, Samtals ráðstöfunartekjur eftir skatt', + }, changeAssumptions: { id: 'web.pensionCalculator:changeAssumptions', defaultMessage: 'Breyta forsendum', @@ -438,6 +455,16 @@ export const translationStrings = defineMessages({ defaultMessage: 'Sundurliðun', description: 'Sundurliðun', }, + resultDetails2024Label: { + id: 'web.pensionCalculator:resultDetails2024Label', + defaultMessage: 'Sundurliðun upphæða 2024', + description: 'Sundurliðun upphæða 2024', + }, + result2025DetailsLabel: { + id: 'web.pensionCalculator:result2025DetailsLabel', + defaultMessage: 'Sundurliðun upphæða eftir 1. september 2025', + description: 'Sundurliðun upphæða eftir 1. september 2025', + }, print: { id: 'web.pensionCalculator:print', defaultMessage: 'Prenta', @@ -557,6 +584,21 @@ export const translationStrings = defineMessages({ description: 'Lýsing fyrir ofan mánuð og ár reit varðandi hvenær notandi vill hefja töku á ellilífeyri', }, + after1stSeptember2025: { + id: 'web.pensionCalculator:after1stSeptember2025', + defaultMessage: 'Eftir 1. september 2025', + description: 'Eftir 1. september 2025', + }, + after1stSeptember2025Calculate: { + id: 'web.pensionCalculator:after1stSeptember2025Calculate', + defaultMessage: 'Reikna', + description: 'Reikna', + }, + after1stSeptember2025Description: { + id: 'web.pensionCalculator:after1stSeptember2025Description', + defaultMessage: 'Sjá útreikning örorkulífeyris í nýju kerfi', + description: 'Sjá útreikning örorkulífeyris í nýju kerfi', + }, birthMonthLabel: { id: 'web.pensionCalculator:birthMonthLabel', defaultMessage: 'Mánuður', @@ -617,6 +659,16 @@ export const translationStrings = defineMessages({ defaultMessage: 'Samtals frá TR fyrir skatt', description: 'Niðurstöðuskjár, Samtals frá TR fyrir skatt', }, + 'REIKNH.FRADRSKATTUR': { + id: 'web.pensionCalculator:REIKNH.FRADRSKATTUR', + defaultMessage: 'Frádreginn skattur af öðrum greiðslum', + description: 'Niðurstöðuskjár, Frádreginn skattur af öðrum greiðslum', + }, + 'REIKNH.FRADRSKATTURTR': { + id: 'web.pensionCalculator:REIKNH.FRADRSKATTURTR', + defaultMessage: 'Frádreginn skattur af greiðslum TR', + description: 'Niðurstöðuskjár, Frádreginn skattur af greiðslum TR', + }, 'REIKNH.FRADRSKATTURTR1': { id: 'web.pensionCalculator:REIKNH.FRADRSKATTURTR1', defaultMessage: 'Frádreginn skattur TR (1. og 2. skattþrep)', @@ -637,6 +689,11 @@ export const translationStrings = defineMessages({ defaultMessage: 'Samtals frá TR eftir skatt', description: 'Niðurstöðuskjár, Samtals frá TR eftir skatt', }, + 'REIKNH.SAMTALS': { + id: 'web.pensionCalculator:REIKNH.SAMTALS', + defaultMessage: 'Samtals', + description: 'Niðurstöðuskjár, Samtals', + }, 'REIKNH.TEKJURAFATVINNU': { id: 'web.pensionCalculator:REIKNH.TEKJURAFATVINNU', defaultMessage: 'Tekjur af atvinnu', @@ -833,12 +890,12 @@ export const translationStrings = defineMessages({ defaultMessage: 'Meðlag', description: 'Niðurstöðuskjár, Meðlag', }, - 'REIKNH.PERSAFSLMINNA ': { + 'REIKNH.PERSAFSLMINNA': { id: 'web.pensionCalculator:REIKNH.PERSAFSLMINNA', defaultMessage: 'Persónuafsláttur', description: 'Niðurstöðuskjár, Persónuafsláttur minna', }, - 'REIKNH.SAMANBBOTAFLOKKUR ': { + 'REIKNH.SAMANBBOTAFLOKKUR': { id: 'web.pensionCalculator:REIKNH.SAMANBBOTAFLOKKUR', defaultMessage: 'Samanburðarbótaflokkur við eldra kerfi', description: 'Niðurstöðuskjár, Samanburðarbótaflokkur við eldra kerfi ', @@ -848,6 +905,21 @@ export const translationStrings = defineMessages({ defaultMessage: 'Uppbót v/reksturs bifreiðar (óskattskyld)', description: 'Niðurstöðuskjár, Uppbót v/reksturs bifreiðar (óskattskyld) ', }, + 'REIKNH.GRUNNLIFORORKA2025': { + id: 'web.pensionCalculator:REIKNH.GRUNNLIFORORKA2025', + defaultMessage: 'Örorkulífeyrir', + description: 'Niðurstöðuskjár, Örorkulífeyrir 2025', + }, + 'REIKNH.ORHEIMILISUPPB2025': { + id: 'web.pensionCalculator:REIKNH.ORHEIMILISUPPB2025', + defaultMessage: 'Heimilisuppbót', + description: 'Niðurstöðuskjár, Heimilisuppbót 2025', + }, + 'REIKNH.ORALDURSVIDBOT2025': { + id: 'web.pensionCalculator:REIKNH.ORALDURSVIDBOT2025', + defaultMessage: 'Aldursviðbót', + description: 'Niðurstöðuskjár, Aldursviðbót 2025', + }, highlighedResultItemHeadingForTotalAfterTaxFromTR: { id: 'web.pensionCalculator:REIKNH.highlighedResultItemHeadingForTotalAfterTaxFromTR', defaultMessage: 'Þar af greiðslur frá TR', diff --git a/apps/web/screens/Organization/SocialInsuranceAdministration/utils.ts b/apps/web/screens/Organization/SocialInsuranceAdministration/utils.ts index 81b1c8cbd719..722370dda5ab 100644 --- a/apps/web/screens/Organization/SocialInsuranceAdministration/utils.ts +++ b/apps/web/screens/Organization/SocialInsuranceAdministration/utils.ts @@ -149,3 +149,7 @@ export const extractSlug = ( : (customPageData?.configJson?.englishSlug as string) || 'social-insurance-administration' } + +export const is2025PreviewActive = (customPageData?: CustomPage | null) => { + return Boolean(customPageData?.configJson?.show2025Preview) +} diff --git a/apps/web/screens/Organization/SubPage.tsx b/apps/web/screens/Organization/SubPage.tsx index 5e34391352df..0db2c57fee70 100644 --- a/apps/web/screens/Organization/SubPage.tsx +++ b/apps/web/screens/Organization/SubPage.tsx @@ -82,7 +82,7 @@ const SubPage: Screen<SubPageProps> = ({ useContentfulId(...contentfulIds) - const pathWithoutHash = router.asPath.split('#')[0] + const pathname = new URL(router.asPath, 'https://island.is').pathname // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore make web strict const navList: NavigationItem[] = organizationPage?.menuLinks.map( @@ -90,12 +90,12 @@ const SubPage: Screen<SubPageProps> = ({ title: primaryLink?.text, href: primaryLink?.url, active: - primaryLink?.url === pathWithoutHash || - childrenLinks.some((link) => link.url === pathWithoutHash), + primaryLink?.url === pathname || + childrenLinks.some((link) => link.url === pathname), items: childrenLinks.map(({ text, url }) => ({ title: text, href: url, - active: url === pathWithoutHash, + active: url === pathname, })), }), ) diff --git a/apps/web/screens/Organization/Syslumenn/Auctions.tsx b/apps/web/screens/Organization/Syslumenn/Auctions.tsx index 1e47a0936844..3806485f30fe 100644 --- a/apps/web/screens/Organization/Syslumenn/Auctions.tsx +++ b/apps/web/screens/Organization/Syslumenn/Auctions.tsx @@ -844,22 +844,12 @@ const Auctions: Screen<AuctionsProps> = ({ <Text variant="h3">{auction.lotName}</Text> {/* Real Estate link */} - {auction.lotId && - auction.lotType === LOT_TYPES.REAL_ESTATE && ( - <LotLink - prefix={n( - 'auctionRealEstateNumberPrefix', - 'Fasteign nr. ', - )} - linkText={auction.lotId} - href={( - n( - 'realEstateRegistryLinkTemplate', - 'https://fasteignaskra.is/default.aspx?pageid=d5db1b6d-0650-11e6-943c-005056851dd2&selector=streetname&streetname={{ID}}&submitbutton=Leita', - ) as string - ).replace('{{ID}}', auction.lotId)} - /> - )} + {auction.lotId && auction.lotType === LOT_TYPES.REAL_ESTATE && ( + <Text paddingTop={2} paddingBottom={1}> + {n('auctionRealEstateNumberPrefix', 'Fasteign nr. ')} + {auction.lotId} + </Text> + )} {/* Vehicle link */} {auction.lotId && auction.lotType === LOT_TYPES.VEHICLE && ( @@ -1110,17 +1100,23 @@ Auctions.getProps = async ({ apolloClient, locale, req, res }) => { ), ]) + const usingDefaultHeader: boolean = namespace['usingDefaultHeader'] ?? false + return { organizationPage: getOrganizationPage, subpage: getOrganizationSubpage, syslumennAuctions: getSyslumennAuctions, namespace, showSearchInHeader: false, + themeConfig: !usingDefaultHeader + ? { + headerButtonColorScheme: 'negative', + headerColorScheme: 'white', + } + : {}, } } export default withMainLayout(Auctions, { - headerButtonColorScheme: 'negative', - headerColorScheme: 'white', footerVersion: 'organization', }) diff --git a/apps/web/screens/Organization/Syslumenn/Homestay.tsx b/apps/web/screens/Organization/Syslumenn/Homestay.tsx index 1f02f538e61f..822c0d613e63 100644 --- a/apps/web/screens/Organization/Syslumenn/Homestay.tsx +++ b/apps/web/screens/Organization/Syslumenn/Homestay.tsx @@ -275,21 +275,7 @@ const Homestay: Screen<HomestayProps> = ({ > <Text> {n('homestayRealEstateNumberPrefix', 'Fasteign nr.')}{' '} - <a - href={( - n( - 'realEstateRegistryLinkTemplate', - 'https://fasteignaskra.is/default.aspx?pageid=d5db1b6d-0650-11e6-943c-005056851dd2&selector=streetname&streetname={{ID}}&submitbutton=Leita', - ) as string - ).replace( - '{{ID}}', - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore make web strict - homestay.propertyId, - )} - > - {homestay.propertyId} - </a> + {homestay.propertyId} </Text> </LinkContext.Provider> <Text> @@ -386,17 +372,23 @@ Homestay.getProps = async ({ apolloClient, locale, req }) => { throw new CustomNextError(404, 'Organization subpage not found') } + const usingDefaultHeader: boolean = namespace['usingDefaultHeader'] ?? false + return { organizationPage: getOrganizationPage, subpage: getOrganizationSubpage, homestays: getHomestays, namespace, showSearchInHeader: false, + themeConfig: !usingDefaultHeader + ? { + headerButtonColorScheme: 'negative', + headerColorScheme: 'white', + } + : {}, } } export default withMainLayout(Homestay, { - headerButtonColorScheme: 'negative', - headerColorScheme: 'white', footerVersion: 'organization', }) diff --git a/apps/web/screens/Organization/Syslumenn/OperatingLicenses.tsx b/apps/web/screens/Organization/Syslumenn/OperatingLicenses.tsx index 013cf107936f..e862ea1b7a21 100644 --- a/apps/web/screens/Organization/Syslumenn/OperatingLicenses.tsx +++ b/apps/web/screens/Organization/Syslumenn/OperatingLicenses.tsx @@ -668,16 +668,22 @@ OperatingLicenses.getProps = async ({ apolloClient, locale, req }) => { throw new CustomNextError(404, 'Organization subpage not found') } + const usingDefaultHeader: boolean = namespace['usingDefaultHeader'] ?? false + return { organizationPage: getOrganizationPage, subpage: getOrganizationSubpage, namespace, showSearchInHeader: false, + themeConfig: !usingDefaultHeader + ? { + headerButtonColorScheme: 'negative', + headerColorScheme: 'white', + } + : {}, } } export default withMainLayout(OperatingLicenses, { - headerButtonColorScheme: 'negative', - headerColorScheme: 'white', footerVersion: 'organization', }) diff --git a/apps/web/screens/Project/components/ProjectChatPanel/config.ts b/apps/web/screens/Project/components/ProjectChatPanel/config.ts index 683646c48081..77bfd662d137 100644 --- a/apps/web/screens/Project/components/ProjectChatPanel/config.ts +++ b/apps/web/screens/Project/components/ProjectChatPanel/config.ts @@ -1,5 +1,4 @@ import { Locale } from '@island.is/shared/types' - import { LiveChatIncChatPanelProps, WatsonChatPanelProps, @@ -47,9 +46,9 @@ export const watsonConfig: Record< // Information for Ukrainian citizens // https://app.contentful.com/spaces/8k0h54kbe6bj/entries/7GtuCCd7MEZhZKe0oXcHdb '7GtuCCd7MEZhZKe0oXcHdb': { - integrationID: '89a03e83-5c73-4642-b5ba-cd3771ceca54', + integrationID: '9e320784-ad44-4da9-9eb3-f305057a196a', region: 'eu-gb', - serviceInstanceID: 'bc3d8312-d862-4750-b8bf-529db282050a', + serviceInstanceID: '2529638b-503c-4374-955c-0310139ec177', showLauncher: true, carbonTheme: 'g10', namespaceKey: 'ukrainian-citizens', diff --git a/apps/web/screens/Search/Search.tsx b/apps/web/screens/Search/Search.tsx index 86018074625d..1ee9de5acab3 100644 --- a/apps/web/screens/Search/Search.tsx +++ b/apps/web/screens/Search/Search.tsx @@ -604,7 +604,13 @@ const Search: Screen<CategoryProps> = ({ active={!query?.type?.length} onClick={() => { dispatch({ - type: ActionType.RESET_SEARCH, + type: ActionType.SET_PARAMS, + payload: { + query: { + type: [], + processentry: false, + }, + }, }) }} > @@ -628,8 +634,6 @@ const Search: Screen<CategoryProps> = ({ query: { processentry: false, ...getSearchParams(key), - category: [], - organization: [], }, searchLocked: false, }, @@ -676,7 +680,6 @@ const Search: Screen<CategoryProps> = ({ type: ActionType.SET_PARAMS, payload: { query: { - ...getSearchParams('webArticle'), ...payload, }, }, diff --git a/apps/web/screens/ServiceWeb/Forms/Forms.tsx b/apps/web/screens/ServiceWeb/Forms/Forms.tsx index ed91df332345..0c85d558e9d0 100644 --- a/apps/web/screens/ServiceWeb/Forms/Forms.tsx +++ b/apps/web/screens/ServiceWeb/Forms/Forms.tsx @@ -96,7 +96,7 @@ const ServiceWebFormsPage: Screen<ServiceWebFormsPageProps> = ({ useLocalLinkTypeResolver() const organizationNamespace = useMemo( - () => JSON.parse(organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organization?.namespace?.fields || '{}'), [organization?.namespace], ) const o = useNamespace(organizationNamespace) @@ -434,7 +434,7 @@ ServiceWebFormsPage.getProps = async ({ apolloClient, locale, query }) => { }) .then( (variables) => - JSON.parse(variables?.data?.getNamespace?.fields ?? '{}')?.entities ?? + JSON.parse(variables?.data?.getNamespace?.fields || '{}')?.entities ?? [], ), apolloClient @@ -448,7 +448,7 @@ ServiceWebFormsPage.getProps = async ({ apolloClient, locale, query }) => { }, }) .then((variables) => - JSON.parse(variables?.data?.getNamespace?.fields ?? '{}'), + JSON.parse(variables?.data?.getNamespace?.fields || '{}'), ), apolloClient.query<Query, QueryGetServiceWebPageArgs>({ query: GET_SERVICE_WEB_PAGE_QUERY, diff --git a/apps/web/screens/ServiceWeb/Forms/utils.ts b/apps/web/screens/ServiceWeb/Forms/utils.ts index 6e2d7078d142..e84d8a93ed75 100644 --- a/apps/web/screens/ServiceWeb/Forms/utils.ts +++ b/apps/web/screens/ServiceWeb/Forms/utils.ts @@ -54,6 +54,9 @@ export enum SjukratryggingarCategories { // Túlkaþjónusta TULKATHJONUSTA = 'tulkathjonusta', + + // Evrópska sjúkratryggingakortið + EVROPSKA_SJUKRATRYGGINGAKORTID = 'evropska_sjukratryggingakortid', } export enum DirectorateOfImmigrationCategories { @@ -179,6 +182,19 @@ export const filterSupportCategories = ( namespace?.['sjukratryggingarInterpretationServices'] || (locale === 'is' ? 'Túlkaþjónusta' : 'Interpretation services'), }, + { + id: SjukratryggingarCategories.EVROPSKA_SJUKRATRYGGINGAKORTID, + importance: 0, + __typename: 'SupportCategory', + description: '', + organization: organization, + slug: SjukratryggingarCategories.EVROPSKA_SJUKRATRYGGINGAKORTID, + title: + namespace?.['sjukratryggingarEuropeanHealthInsuranceCard'] || + (locale === 'is' + ? 'Evrópska sjúkratryggingakortið' + : 'The European Health Insurance Card'), + }, ]) } diff --git a/apps/web/screens/ServiceWeb/Search/ServiceSearch.tsx b/apps/web/screens/ServiceWeb/Search/ServiceSearch.tsx index 3b45f017bb8c..7816369352ea 100644 --- a/apps/web/screens/ServiceWeb/Search/ServiceSearch.tsx +++ b/apps/web/screens/ServiceWeb/Search/ServiceSearch.tsx @@ -83,7 +83,7 @@ const ServiceSearch: Screen<ServiceSearchProps> = ({ }) const { linkResolver } = useLinkResolver() const organizationNamespace = useMemo( - () => JSON.parse(organization?.namespace?.fields ?? '{}'), + () => JSON.parse(organization?.namespace?.fields || '{}'), [organization?.namespace?.fields], ) const o = useNamespace(organizationNamespace) @@ -431,7 +431,7 @@ ServiceSearch.getProps = async ({ apolloClient, locale, query }) => { }) .then((variables) => { // map data here to reduce data processing in component - return JSON.parse(variables?.data?.getNamespace?.fields ?? '{}') + return JSON.parse(variables?.data?.getNamespace?.fields || '{}') }), apolloClient.query<Query, QueryGetServiceWebPageArgs>({ query: GET_SERVICE_WEB_PAGE_QUERY, diff --git a/apps/web/screens/queries/GenericList.ts b/apps/web/screens/queries/GenericList.ts index 1d4e0fb15f68..5bfab44d76bf 100644 --- a/apps/web/screens/queries/GenericList.ts +++ b/apps/web/screens/queries/GenericList.ts @@ -24,6 +24,7 @@ export const GET_GENERIC_LIST_ITEMS_QUERY = gql` } slug assetUrl + externalUrl } total } diff --git a/apps/web/screens/queries/TeamList.ts b/apps/web/screens/queries/TeamList.ts new file mode 100644 index 000000000000..bc4b328dbf38 --- /dev/null +++ b/apps/web/screens/queries/TeamList.ts @@ -0,0 +1,37 @@ +import gql from 'graphql-tag' + +import { htmlFields, imageFields } from './fragments' + +export const GET_TEAM_MEMBERS_QUERY = gql` + query GetTeamMembers($input: GetTeamMembersInput!) { + getTeamMembers(input: $input) { + total + input { + page + queryString + tags + } + items { + name + title + email + phone + tagGroups { + groupLabel + tagLabels + } + image { + ...ImageFields + } + imageOnSelect { + ...ImageFields + } + intro { + ...HtmlFields + } + } + } + } + ${imageFields} + ${htmlFields} +` diff --git a/apps/web/screens/queries/fragments.ts b/apps/web/screens/queries/fragments.ts index f1ba3f4b8dae..c59235111a0a 100644 --- a/apps/web/screens/queries/fragments.ts +++ b/apps/web/screens/queries/fragments.ts @@ -198,6 +198,7 @@ export const slices = gql` json configJson componentType: type + translationStrings } fragment StatisticsFields on Statistics { @@ -271,6 +272,17 @@ export const slices = gql` fragment TeamListFields on TeamList { __typename id + variant + filterTags { + id + title + slug + genericTagGroup { + id + title + slug + } + } teamMembers { name title @@ -872,6 +884,41 @@ export const slices = gql` } } + fragment LatestGenericListItemsFields on LatestGenericListItems { + title + genericList { + itemType + } + seeMorePage { + ... on OrganizationSubpage { + id + title + slug + organizationPage { + slug + } + } + } + seeMoreLinkText + itemResponse { + items { + id + date + title + cardIntro { + ...HtmlFields + } + filterTags { + id + title + slug + } + slug + assetUrl + } + } + } + fragment BaseSlices on Slice { ...TimelineFields ...StoryFields @@ -916,6 +963,7 @@ export const slices = gql` ...ChartNumberBoxFields ...FeaturedEventsFields ...GenericListFields + ...LatestGenericListItemsFields } fragment AllSlices on Slice { diff --git a/apps/web/utils/currency.ts b/apps/web/utils/currency.ts index 2184dba5282e..67871ef693d8 100644 --- a/apps/web/utils/currency.ts +++ b/apps/web/utils/currency.ts @@ -1,9 +1,11 @@ export const formatCurrency = ( answer: number | null | undefined, suffix = ' kr.', + numericFunction = Math.floor, ) => { if (typeof answer !== 'number') return answer return ( - String(Math.floor(answer)).replace(/\B(?=(\d{3})+(?!\d))/g, '.') + suffix + String(numericFunction(answer)).replace(/\B(?=(\d{3})+(?!\d))/g, '.') + + suffix ) } diff --git a/apps/web/utils/richText.tsx b/apps/web/utils/richText.tsx index 01782d4e3880..83f366ef0fc2 100644 --- a/apps/web/utils/richText.tsx +++ b/apps/web/utils/richText.tsx @@ -1,10 +1,16 @@ +import { PropsWithChildren } from 'react' +import { IntlConfig, IntlProvider } from 'react-intl' + import { FaqList, - FaqListProps, + type FaqListProps, + Image, + type ImageProps, renderConnectedComponent, richText, SectionWithImage, - SliceType, + type SliceType, + type TeamListProps, } from '@island.is/island-ui/contentful' import { defaultRenderComponentObject, @@ -25,12 +31,13 @@ import { DrivingInstructorList, EmailSignup, Form, - GenericList, + GenericListWrapper, KilometerFee, MasterList, MultipleStatistics, OneColumnTextSlice, OverviewLinksSlice, + ParentalLeaveCalculator, PlateAvailableSearch, PowerBiSlice, PublicShipSearch, @@ -44,6 +51,7 @@ import { SpecificHousingBenefitSupportCalculator, StraddlingStockCalculator, TableSlice, + TeamListSlice, TemporaryEventLicencesList, TwoColumnTextSlice, } from '@island.is/web/components' @@ -67,13 +75,16 @@ import { Slice, SliceDropdown as SliceDropdownSchema, TableSlice as TableSliceSchema, + TeamList, TwoColumnText, } from '@island.is/web/graphql/schema' +import { useI18n } from '@island.is/web/i18n' import AdministrationOfOccupationalSafetyAndHealthCourses from '../components/connected/AdministrationOfOccupationalSafetyAndHealthCourses/AdministrationOfOccupationalSafetyAndHealthCourses' +import { BenefitsOfDigitalProcessesCalculator } from '../components/connected/BenefitsOfDigitalProcessesCalculator/BenefitsOfDigitalProcessesCalculator' import { MonthlyStatistics } from '../components/connected/electronicRegistrationStatistics' import { GrindavikResidentialPropertyPurchaseCalculator } from '../components/connected/GrindavikResidentialPropertyPurchaseCalculator' -import HousingBenefitCalculator from '../components/connected/HousingBenefitCalculator/HousingBenefitCalculator' +import HousingBenefitCalculator from '../components/connected/HousingBenefitCalculator/HousingBenefitCalculator/HousingBenefitCalculator' import JourneymanList from '../components/connected/syslumenn/TableLists/JourneymanList/JourneymanList' import ProfessionRights from '../components/connected/syslumenn/TableLists/ProfessionRights/ProfessionRights' import { UmsCostOfLivingCalculator } from '../components/connected/UmbodsmadurSkuldara' @@ -81,67 +92,124 @@ import FeaturedEvents from '../components/FeaturedEvents/FeaturedEvents' import FeaturedSupportQNAs from '../components/FeaturedSupportQNAs/FeaturedSupportQNAs' import { EmbedSlice } from '../components/Organization/Slice/EmbedSlice/EmbedSlice' +interface TranslationNamespaceProviderProps { + messages: IntlConfig['messages'] +} + +const TranslationNamespaceProvider = ({ + messages, + children, +}: PropsWithChildren<TranslationNamespaceProviderProps>) => { + const { activeLocale } = useI18n() + + return ( + <IntlProvider locale={activeLocale} messages={messages}> + {children} + </IntlProvider> + ) +} + export const webRenderConnectedComponent = ( slice: ConnectedComponent & { componentType?: string }, ) => { - const data = slice.json ?? {} + let connectedComponent = null switch (slice.componentType) { case 'Fiskistofa/ShipSearch': - return <ShipSearch namespace={data} /> + connectedComponent = <ShipSearch /> + break case 'Fiskistofa/ShipSearchSidebarInput': - return <SidebarShipSearchInput namespace={data} /> + connectedComponent = <SidebarShipSearchInput /> + break case 'Fiskistofa/StraddlingStockCalculator': - return <StraddlingStockCalculator namespace={data} /> + connectedComponent = <StraddlingStockCalculator /> + break case 'Fiskistofa/CatchQuotaCalculator': - return <CatchQuotaCalculator namespace={data} /> + connectedComponent = <CatchQuotaCalculator /> + break case 'Fiskistofa/SelectedShip': - return <SelectedShip /> + connectedComponent = <SelectedShip /> + break case 'ElectronicRegistrations/MonthlyStatistics': - return <MonthlyStatistics slice={slice} /> + connectedComponent = <MonthlyStatistics slice={slice} /> + break case 'Fiskistofa/ShipSearchBoxedInput': - return <ShipSearchBoxedInput namespace={data} /> + connectedComponent = <ShipSearchBoxedInput /> + break case 'Áfengisleyfi/AlcoholLicences': - return <AlcoholLicencesList slice={slice} /> + connectedComponent = <AlcoholLicencesList slice={slice} /> + break case 'Tækifærisleyfi/TemporaryEventLicences': - return <TemporaryEventLicencesList slice={slice} /> + connectedComponent = <TemporaryEventLicencesList slice={slice} /> + break case 'Verðbréfamiðlarar/Brokers': - return <BrokersList slice={slice} /> + connectedComponent = <BrokersList slice={slice} /> + break case 'PublicVehicleSearch': - return <PublicVehicleSearch slice={slice} /> + connectedComponent = <PublicVehicleSearch /> + break case 'AircraftSearch': - return <AircraftSearch slice={slice} /> + connectedComponent = <AircraftSearch slice={slice} /> + break case 'DrivingInstructorList': - return <DrivingInstructorList slice={slice} /> + connectedComponent = <DrivingInstructorList slice={slice} /> + break case 'PlateAvailableSearch': - return <PlateAvailableSearch slice={slice} /> + connectedComponent = <PlateAvailableSearch /> + break case 'HousingBenefitCalculator': - return <HousingBenefitCalculator slice={slice} /> + connectedComponent = <HousingBenefitCalculator slice={slice} /> + break case 'PublicShipSearch': - return <PublicShipSearch slice={slice} /> + connectedComponent = <PublicShipSearch /> + break case 'Meistaraleyfi/MasterLicences': - return <MasterList slice={slice} /> + connectedComponent = <MasterList slice={slice} /> + break case 'Vinnueftirlitid/Namskeid': - return ( + connectedComponent = ( <AdministrationOfOccupationalSafetyAndHealthCourses slice={slice} /> ) + break case 'KilometerFee': - return <KilometerFee slice={slice} /> + connectedComponent = <KilometerFee slice={slice} /> + break case 'SpecificHousingBenefitSupportCalculator': - return <SpecificHousingBenefitSupportCalculator slice={slice} /> + connectedComponent = <SpecificHousingBenefitSupportCalculator /> + break case 'GrindavikResidentialPropertyPurchaseCalculator': - return <GrindavikResidentialPropertyPurchaseCalculator slice={slice} /> + connectedComponent = ( + <GrindavikResidentialPropertyPurchaseCalculator slice={slice} /> + ) + break case 'Sveinslisti/JourneymanList': - return <JourneymanList slice={slice} /> + connectedComponent = <JourneymanList slice={slice} /> + break case 'Starfsrettindi/ProfessionRights': - return <ProfessionRights slice={slice} /> + connectedComponent = <ProfessionRights slice={slice} /> + break case 'Ums/CostOfLivingCalculator': - return <UmsCostOfLivingCalculator slice={slice} /> - default: + connectedComponent = <UmsCostOfLivingCalculator /> break + case 'VMST/ParentalLeaveCalculator': + connectedComponent = <ParentalLeaveCalculator slice={slice} /> + break + case 'DigitalIceland/BenefitsOfDigitalProcesses': + connectedComponent = ( + <BenefitsOfDigitalProcessesCalculator slice={slice} /> + ) + break + default: + connectedComponent = renderConnectedComponent(slice) } - return renderConnectedComponent(slice) + return ( + <TranslationNamespaceProvider + messages={slice.translationStrings ?? slice.json ?? {}} + > + {connectedComponent} + </TranslationNamespaceProvider> + ) } const defaultRenderComponent = { @@ -198,13 +266,26 @@ const defaultRenderComponent = { ), Form: (slice: FormSchema) => <Form form={slice} />, GenericList: (slice: GenericListSchema) => ( - <GenericList + <GenericListWrapper id={slice.id} searchInputPlaceholder={slice.searchInputPlaceholder} itemType={slice.itemType} filterTags={slice.filterTags} /> ), + TeamList: (slice: TeamList) => ( + <TeamListSlice + id={slice.id} + teamMembers={slice.teamMembers as TeamListProps['teamMembers']} + filterTags={slice.filterTags} + variant={slice.variant as 'accordion' | 'card'} + /> + ), + Image: (slice: ImageProps) => { + const thumbnailUrl = slice?.url ? slice.url + '?w=50' : '' + const url = slice?.url ? slice.url + '?w=800' : '' + return <Image {...slice} thumbnail={thumbnailUrl} url={url} /> + }, } export const webRichText = ( diff --git a/charts/identity-server/values.dev.yaml b/charts/identity-server/values.dev.yaml index 169a4bbc65ac..c9f3dca4c65a 100644 --- a/charts/identity-server/values.dev.yaml +++ b/charts/identity-server/values.dev.yaml @@ -213,15 +213,32 @@ namespaces: services-auth-admin-api: enabled: true env: + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS-DEV/GOV/10006/Skatturinn/ft-v1' DB_HOST: 'postgres-applications.internal' DB_NAME: 'servicesauth' DB_REPLICAS_HOST: 'postgres-applications-reader.internal' DB_USER: 'servicesauth' + IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/auth-api' IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.dev01.devland.is' IDENTITY_SERVER_ISSUER_URL_LIST: '["https://identity-server.dev01.devland.is","https://identity-server.staging01.devland.is","https://innskra.island.is"]' LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=691 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' + XROAD_BASE_PATH: 'http://securityserver.dev01.devland.is' + XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.dev01.devland.is/r1/IS-DEV' + XROAD_CLIENT_ID: 'IS-DEV/GOV/10000/island-is-client' + XROAD_NATIONAL_REGISTRY_ACTOR_TOKEN: 'true' + XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' + XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-DEV/GOV/10001/SKRA-Protected/Einstaklingar-v1' + XROAD_RSK_PROCURING_ACTOR_TOKEN: 'true' + XROAD_RSK_PROCURING_PATH: 'IS-DEV/GOV/10006/Skatturinn/relationships-v1' + XROAD_RSK_PROCURING_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' + XROAD_TLS_BASE_PATH: 'https://securityserver.dev01.devland.is' + XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.dev01.devland.is/r1/IS-DEV' + ZENDESK_CONTACT_FORM_SUBDOMAIN: 'digitaliceland' grantNamespaces: - 'nginx-ingress-external' - 'nginx-ingress-internal' @@ -275,6 +292,13 @@ services-auth-admin-api: CLIENT_SECRET_ENCRYPTION_KEY: '/k8s/services-auth/admin-api/CLIENT_SECRET_ENCRYPTION_KEY' CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/servicesauth/DB_PASSWORD' + IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' + NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' + ZENDESK_CONTACT_FORM_EMAIL: '/k8s/api/ZENDESK_CONTACT_FORM_EMAIL' + ZENDESK_CONTACT_FORM_TOKEN: '/k8s/api/ZENDESK_CONTACT_FORM_TOKEN' + ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE: '/k8s/services-auth/ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE' securityContext: allowPrivilegeEscalation: false privileged: false @@ -292,6 +316,8 @@ services-auth-delegation-api: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' USER_NOTIFICATION_API_URL: 'http://web-user-notification.user-notification.svc.cluster.local' XROAD_BASE_PATH: 'http://securityserver.dev01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.dev01.devland.is/r1/IS-DEV' @@ -308,6 +334,7 @@ services-auth-delegation-api: - 'nginx-ingress-internal' - 'islandis' - 'service-portal' + - 'user-notification-worker' grantNamespacesEnabled: true healthCheck: liveness: @@ -357,6 +384,8 @@ services-auth-delegation-api: DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -379,6 +408,7 @@ services-auth-ids-api: NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentitydev.onmicrosoft.com/midlun/.default' NODE_OPTIONS: '--max-old-space-size=691 -r dd-trace/init' NOVA_ACCEPT_UNAUTHORIZED: 'true' + PASSKEY_CORE_ALLOWED_ORIGINS: '["https://island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' PASSKEY_CORE_CHALLENGE_TTL_MS: '120000' PASSKEY_CORE_MAX_AGE_DAYS: '365' PASSKEY_CORE_RP_ID: 'island.is' @@ -386,6 +416,8 @@ services-auth-ids-api: PUBLIC_URL: 'https://identity-server.dev01.devland.is/api' REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' USER_PROFILE_CLIENT_SCOPE: '["@island.is/user-profile:read"]' USER_PROFILE_CLIENT_URL: 'http://web-service-portal-api.service-portal.svc.cluster.local' XROAD_BASE_PATH: 'http://securityserver.dev01.devland.is' @@ -480,7 +512,8 @@ services-auth-ids-api: NOVA_PASSWORD: '/k8s/services-auth/NOVA_PASSWORD' NOVA_URL: '/k8s/services-auth/NOVA_URL' NOVA_USERNAME: '/k8s/services-auth/NOVA_USERNAME' - PASSKEY_CORE_ALLOWED_ORIGINS: '/k8s/services-auth/PASSKEY_CORE_ALLOWED_ORIGINS' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -557,6 +590,8 @@ services-auth-personal-representative: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' XROAD_BASE_PATH: 'http://securityserver.dev01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.dev01.devland.is/r1/IS-DEV' XROAD_CLIENT_ID: 'IS-DEV/GOV/10000/island-is-client' @@ -590,14 +625,6 @@ services-auth-personal-representative: image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-auth-personal-representative' ingress: - demo-alb: - annotations: - kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/service-upstream: 'true' - hosts: - - host: 'personal-representative-xrd.dev01.devland.is' - paths: - - '/' primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-internal-alb' @@ -625,6 +652,8 @@ services-auth-personal-representative: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -661,14 +690,6 @@ services-auth-personal-representative-public: image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-auth-personal-representative-public' ingress: - demo-alb: - annotations: - kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/service-upstream: 'true' - hosts: - - host: 'personal-representative-public-xrd.dev01.devland.is' - paths: - - '/' primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-internal-alb' @@ -711,13 +732,15 @@ services-auth-public-api: IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.dev01.devland.is' LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=345 -r dd-trace/init' - PASSKEY_CORE_ALLOWED_ORIGINS: '["island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' + PASSKEY_CORE_ALLOWED_ORIGINS: '["https://island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' PASSKEY_CORE_CHALLENGE_TTL_MS: '120000' PASSKEY_CORE_RP_ID: 'island.is' PASSKEY_CORE_RP_NAME: 'Island.is' PUBLIC_URL: 'https://identity-server.dev01.devland.is/api' REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' XROAD_BASE_PATH: 'http://securityserver.dev01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.dev01.devland.is/r1/IS-DEV' XROAD_CLIENT_ID: 'IS-DEV/GOV/10000/island-is-client' @@ -788,6 +811,8 @@ services-auth-public-api: DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false diff --git a/charts/identity-server/values.prod.yaml b/charts/identity-server/values.prod.yaml index 190c8b6a8a21..58e9d76a535b 100644 --- a/charts/identity-server/values.prod.yaml +++ b/charts/identity-server/values.prod.yaml @@ -210,15 +210,32 @@ namespaces: services-auth-admin-api: enabled: true env: + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.dnugi2.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS/GOV/5402696029/Skatturinn/ft-v1' DB_HOST: 'postgres-ids.internal' DB_NAME: 'servicesauth' DB_REPLICAS_HOST: 'postgres-ids.internal' DB_USER: 'servicesauth' + IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/auth-api' IDENTITY_SERVER_ISSUER_URL: 'https://innskra.island.is' IDENTITY_SERVER_ISSUER_URL_LIST: '["https://innskra.island.is"]' LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=691 -r dd-trace/init' SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' + SYSLUMENN_HOST: 'https://api.syslumenn.is/api' + SYSLUMENN_TIMEOUT: '3000' + XROAD_BASE_PATH: 'http://securityserver.island.is' + XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.island.is/r1/IS' + XROAD_CLIENT_ID: 'IS/GOV/5501692829/island-is-client' + XROAD_NATIONAL_REGISTRY_ACTOR_TOKEN: 'true' + XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.dnugi2.euw1.cache.amazonaws.com:6379"]' + XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' + XROAD_RSK_PROCURING_ACTOR_TOKEN: 'true' + XROAD_RSK_PROCURING_PATH: 'IS/GOV/5402696029/Skatturinn/relationships-v1' + XROAD_RSK_PROCURING_REDIS_NODES: '["clustercfg.general-redis-cluster-group.dnugi2.euw1.cache.amazonaws.com:6379"]' + XROAD_TLS_BASE_PATH: 'https://securityserver.island.is' + XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.island.is/r1/IS' + ZENDESK_CONTACT_FORM_SUBDOMAIN: 'digitaliceland' grantNamespaces: - 'nginx-ingress-external' - 'nginx-ingress-internal' @@ -272,6 +289,13 @@ services-auth-admin-api: CLIENT_SECRET_ENCRYPTION_KEY: '/k8s/services-auth/admin-api/CLIENT_SECRET_ENCRYPTION_KEY' CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/servicesauth/DB_PASSWORD' + IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' + NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' + ZENDESK_CONTACT_FORM_EMAIL: '/k8s/api/ZENDESK_CONTACT_FORM_EMAIL' + ZENDESK_CONTACT_FORM_TOKEN: '/k8s/api/ZENDESK_CONTACT_FORM_TOKEN' + ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE: '/k8s/services-auth/ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE' securityContext: allowPrivilegeEscalation: false privileged: false @@ -289,6 +313,8 @@ services-auth-delegation-api: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' + SYSLUMENN_HOST: 'https://api.syslumenn.is/api' + SYSLUMENN_TIMEOUT: '3000' USER_NOTIFICATION_API_URL: 'https://user-notification.internal.island.is' XROAD_BASE_PATH: 'http://securityserver.island.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.island.is/r1/IS' @@ -305,6 +331,7 @@ services-auth-delegation-api: - 'nginx-ingress-internal' - 'islandis' - 'service-portal' + - 'user-notification-worker' grantNamespacesEnabled: true healthCheck: liveness: @@ -354,6 +381,8 @@ services-auth-delegation-api: DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -376,6 +405,7 @@ services-auth-ids-api: NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentity.onmicrosoft.com/midlun/.default' NODE_OPTIONS: '--max-old-space-size=691 -r dd-trace/init' NOVA_ACCEPT_UNAUTHORIZED: 'false' + PASSKEY_CORE_ALLOWED_ORIGINS: '["https://island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' PASSKEY_CORE_CHALLENGE_TTL_MS: '120000' PASSKEY_CORE_MAX_AGE_DAYS: '365' PASSKEY_CORE_RP_ID: 'island.is' @@ -383,6 +413,8 @@ services-auth-ids-api: PUBLIC_URL: 'https://innskra.island.is/api' REDIS_NODES: '["clustercfg.general-redis-cluster-group.dnugi2.euw1.cache.amazonaws.com:6379"]' SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' + SYSLUMENN_HOST: 'https://api.syslumenn.is/api' + SYSLUMENN_TIMEOUT: '3000' USER_PROFILE_CLIENT_SCOPE: '["@island.is/user-profile:read"]' USER_PROFILE_CLIENT_URL: 'https://service-portal-api.internal.island.is' XROAD_BASE_PATH: 'http://securityserver.island.is' @@ -477,7 +509,8 @@ services-auth-ids-api: NOVA_PASSWORD: '/k8s/services-auth/NOVA_PASSWORD' NOVA_URL: '/k8s/services-auth/NOVA_URL' NOVA_USERNAME: '/k8s/services-auth/NOVA_USERNAME' - PASSKEY_CORE_ALLOWED_ORIGINS: '/k8s/services-auth/PASSKEY_CORE_ALLOWED_ORIGINS' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -554,6 +587,8 @@ services-auth-personal-representative: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' + SYSLUMENN_HOST: 'https://api.syslumenn.is/api' + SYSLUMENN_TIMEOUT: '3000' XROAD_BASE_PATH: 'http://securityserver.island.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.island.is/r1/IS' XROAD_CLIENT_ID: 'IS/GOV/5501692829/island-is-client' @@ -614,6 +649,8 @@ services-auth-personal-representative: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -650,14 +687,6 @@ services-auth-personal-representative-public: image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-auth-personal-representative-public' ingress: - demo-alb: - annotations: - kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/service-upstream: 'true' - hosts: - - host: 'island.is' - paths: - - '/' primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-internal-alb' @@ -700,13 +729,15 @@ services-auth-public-api: IDENTITY_SERVER_ISSUER_URL: 'https://innskra.island.is' LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=345 -r dd-trace/init' - PASSKEY_CORE_ALLOWED_ORIGINS: '["island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' + PASSKEY_CORE_ALLOWED_ORIGINS: '["https://island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' PASSKEY_CORE_CHALLENGE_TTL_MS: '120000' PASSKEY_CORE_RP_ID: 'island.is' PASSKEY_CORE_RP_NAME: 'Island.is' PUBLIC_URL: 'https://innskra.island.is/api' REDIS_NODES: '["clustercfg.general-redis-cluster-group.dnugi2.euw1.cache.amazonaws.com:6379"]' SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' + SYSLUMENN_HOST: 'https://api.syslumenn.is/api' + SYSLUMENN_TIMEOUT: '3000' XROAD_BASE_PATH: 'http://securityserver.island.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.island.is/r1/IS' XROAD_CLIENT_ID: 'IS/GOV/5501692829/island-is-client' @@ -777,6 +808,8 @@ services-auth-public-api: DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false diff --git a/charts/identity-server/values.staging.yaml b/charts/identity-server/values.staging.yaml index 95da40c89fdd..07afb0776b4c 100644 --- a/charts/identity-server/values.staging.yaml +++ b/charts/identity-server/values.staging.yaml @@ -213,15 +213,32 @@ namespaces: services-auth-admin-api: enabled: true env: + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS-TEST/GOV/5402696029/Skatturinn/ft-v1' DB_HOST: 'postgres-applications.internal' DB_NAME: 'servicesauth' DB_REPLICAS_HOST: 'postgres-applications.internal' DB_USER: 'servicesauth' + IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/auth-api' IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.staging01.devland.is' IDENTITY_SERVER_ISSUER_URL_LIST: '["https://identity-server.staging01.devland.is","https://innskra.island.is"]' LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=691 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' + XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' + XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' + XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' + XROAD_NATIONAL_REGISTRY_ACTOR_TOKEN: 'true' + XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' + XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-TEST/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' + XROAD_RSK_PROCURING_ACTOR_TOKEN: 'true' + XROAD_RSK_PROCURING_PATH: 'IS-TEST/GOV/5402696029/Skatturinn/relationships-v1' + XROAD_RSK_PROCURING_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' + XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' + XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' + ZENDESK_CONTACT_FORM_SUBDOMAIN: 'digitaliceland' grantNamespaces: - 'nginx-ingress-external' - 'nginx-ingress-internal' @@ -275,6 +292,13 @@ services-auth-admin-api: CLIENT_SECRET_ENCRYPTION_KEY: '/k8s/services-auth/admin-api/CLIENT_SECRET_ENCRYPTION_KEY' CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/servicesauth/DB_PASSWORD' + IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' + NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' + ZENDESK_CONTACT_FORM_EMAIL: '/k8s/api/ZENDESK_CONTACT_FORM_EMAIL' + ZENDESK_CONTACT_FORM_TOKEN: '/k8s/api/ZENDESK_CONTACT_FORM_TOKEN' + ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE: '/k8s/services-auth/ZENDESK_WEBHOOK_SECRET_GENERAL_MANDATE' securityContext: allowPrivilegeEscalation: false privileged: false @@ -292,6 +316,8 @@ services-auth-delegation-api: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' USER_NOTIFICATION_API_URL: 'http://web-user-notification.user-notification.svc.cluster.local' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' @@ -308,6 +334,7 @@ services-auth-delegation-api: - 'nginx-ingress-internal' - 'islandis' - 'service-portal' + - 'user-notification-worker' grantNamespacesEnabled: true healthCheck: liveness: @@ -357,6 +384,8 @@ services-auth-delegation-api: DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -375,10 +404,11 @@ services-auth-ids-api: LOG_LEVEL: 'info' NATIONAL_REGISTRY_B2C_CLIENT_ID: '6cf94113-d326-4e4d-b97c-1fea12d2f5e1' NATIONAL_REGISTRY_B2C_ENDPOINT: 'https://skraidentitydev.b2clogin.com/skraidentitydev.onmicrosoft.com/b2c_1_midlun_flow/oauth2/v2.0/token' - NATIONAL_REGISTRY_B2C_PATH: 'IS-DEV/GOV/10001/SKRA-Cloud-Protected/Midlun-v1' + NATIONAL_REGISTRY_B2C_PATH: 'IS-TEST/GOV/10001/SKRA-Cloud-Protected/Midlun-v1' NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentitydev.onmicrosoft.com/midlun/.default' NODE_OPTIONS: '--max-old-space-size=691 -r dd-trace/init' NOVA_ACCEPT_UNAUTHORIZED: 'false' + PASSKEY_CORE_ALLOWED_ORIGINS: '["https://island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' PASSKEY_CORE_CHALLENGE_TTL_MS: '120000' PASSKEY_CORE_MAX_AGE_DAYS: '365' PASSKEY_CORE_RP_ID: 'island.is' @@ -386,6 +416,8 @@ services-auth-ids-api: PUBLIC_URL: 'https://identity-server.staging01.devland.is/api' REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' USER_PROFILE_CLIENT_SCOPE: '["@island.is/user-profile:read"]' USER_PROFILE_CLIENT_URL: 'http://web-service-portal-api.service-portal.svc.cluster.local' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' @@ -480,7 +512,8 @@ services-auth-ids-api: NOVA_PASSWORD: '/k8s/services-auth/NOVA_PASSWORD' NOVA_URL: '/k8s/services-auth/NOVA_URL' NOVA_USERNAME: '/k8s/services-auth/NOVA_USERNAME' - PASSKEY_CORE_ALLOWED_ORIGINS: '/k8s/services-auth/PASSKEY_CORE_ALLOWED_ORIGINS' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -557,6 +590,8 @@ services-auth-personal-representative: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' @@ -617,6 +652,8 @@ services-auth-personal-representative: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false @@ -653,14 +690,6 @@ services-auth-personal-representative-public: image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-auth-personal-representative-public' ingress: - demo-alb: - annotations: - kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/service-upstream: 'true' - hosts: - - host: 'staging01.devland.is' - paths: - - '/' primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-internal-alb' @@ -703,13 +732,15 @@ services-auth-public-api: IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.staging01.devland.is' LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=345 -r dd-trace/init' - PASSKEY_CORE_ALLOWED_ORIGINS: '["island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' + PASSKEY_CORE_ALLOWED_ORIGINS: '["https://island.is","android:apk-key-hash:JgPeo_F6KYk-ngRa26tO2SsAtMiTBQCc7WtSgN-jRX0","android:apk-key-hash:EsLTUu5kaY7XPmMl2f7nbq4amu-PNzdYu3FecNf90wU"]' PASSKEY_CORE_CHALLENGE_TTL_MS: '120000' PASSKEY_CORE_RP_ID: 'island.is' PASSKEY_CORE_RP_NAME: 'Island.is' PUBLIC_URL: 'https://identity-server.staging01.devland.is/api' REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' SERVERSIDE_FEATURES_ON: '' + SYSLUMENN_HOST: 'https://api.syslumenn.is/staging' + SYSLUMENN_TIMEOUT: '3000' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' @@ -780,6 +811,8 @@ services-auth-public-api: DB_PASS: '/k8s/servicesauth/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-auth/IDENTITY_SERVER_CLIENT_SECRET' NATIONAL_REGISTRY_IDS_CLIENT_SECRET: '/k8s/xroad/client/NATIONAL-REGISTRY/IDENTITYSERVER_SECRET' + SYSLUMENN_PASSWORD: '/k8s/services-auth/SYSLUMENN_PASSWORD' + SYSLUMENN_USERNAME: '/k8s/services-auth/SYSLUMENN_USERNAME' securityContext: allowPrivilegeEscalation: false privileged: false diff --git a/charts/islandis/values.dev.yaml b/charts/islandis/values.dev.yaml index 1a528085f23a..1fd6111c047f 100644 --- a/charts/islandis/values.dev.yaml +++ b/charts/islandis/values.dev.yaml @@ -279,6 +279,7 @@ api: AIR_DISCOUNT_SCHEME_FRONTEND_HOSTNAME: 'loftbru.dev01.devland.is' APOLLO_CACHE_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' APPLICATION_SYSTEM_API_URL: 'http://web-application-system-api.application-system.svc.cluster.local' + AUTH_ADMIN_API_PATH: 'https://identity-server.dev01.devland.is/backend' AUTH_ADMIN_API_PATHS: '{"development":"https://identity-server.dev01.devland.is/backend"}' AUTH_DELEGATION_API_URL: 'http://web-services-auth-delegation-api.identity-server-delegation.svc.cluster.local' AUTH_IDS_API_URL: 'https://identity-server.dev01.devland.is' @@ -352,7 +353,9 @@ api: XROAD_FINANCES_V2_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeServicesFJS_v2' XROAD_FINANCIAL_AID_BACKEND_PATH: 'IS-DEV/MUN/10023/samband-sveitarfelaga/financial-aid-backend' XROAD_FIREARM_LICENSE_PATH: 'IS-DEV/GOV/10005/Logreglan-Protected/island-api-v1' + XROAD_HEALTH_DIRECTORATE_ORGAN_DONATION_PATH: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/organ-donation-v1' XROAD_HEALTH_DIRECTORATE_PATH: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir' + XROAD_HEALTH_DIRECTORATE_VACCINATION_PATH: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/vaccination-v1' XROAD_HEALTH_INSURANCE_ID: 'IS-DEV/GOV/10007/SJUKRA-Protected' XROAD_HEALTH_INSURANCE_MY_PAGES_PATH: 'IS-DEV/GOV/10007/SJUKRA-Protected/minarsidur' XROAD_HEALTH_INSURANCE_WSDLURL: 'https://test-huld.sjukra.is/islandrg?wsdl' @@ -365,7 +368,8 @@ api: XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-DEV/EDU/10049/LHI-Protected/brautskraning-v1' XROAD_INNA_PATH: 'IS-DEV/GOV/10066/MMS-Protected/inna-v1' XROAD_INTELLECTUAL_PROPERTIES_PATH: 'IS-DEV/GOV/10030/WebAPI-Public/HUG-webAPI/' - XROAD_MMS_FRIGG_PATH: 'IS-DEV/GOV/10066/MMS-Protected/frigg-api' + XROAD_JUDICIAL_SYSTEM_SP_PATH: 'IS-DEV/GOV/10014/Rettarvorslugatt-Private/judicial-system-mailbox-api' + XROAD_MMS_FRIGG_PATH: 'IS-DEV/GOV/10066/MMS-Protected/frigg-form-service' XROAD_MMS_GRADE_SERVICE_ID: 'IS-DEV/GOV/10066/MMS-Protected/grade-api-v1' XROAD_MMS_LICENSE_SERVICE_ID: 'IS-DEV/GOV/10066/MMS-Protected/license-api-v1' XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' @@ -543,6 +547,7 @@ api: UST_PKPASS_API_KEY: '/k8s/api/UST_PKPASS_API_KEY' VEHICLES_ALLOW_CO_OWNERS: '/k8s/api/VEHICLES_ALLOW_CO_OWNERS' VE_PKPASS_API_KEY: '/k8s/api/VE_PKPASS_API_KEY' + VINNUEFTIRLITID_CAMPAIGN_MONITOR_API_KEY: '/k8s/api/VINNUEFTIRLITID_CAMPAIGN_MONITOR_API_KEY' WATSON_ASSISTANT_CHAT_FEEDBACK_API_KEY: '/k8s/api/WATSON_ASSISTANT_CHAT_FEEDBACK_API_KEY' WATSON_ASSISTANT_CHAT_FEEDBACK_URL: '/k8s/api/WATSON_ASSISTANT_CHAT_FEEDBACK_URL' XROAD_DRIVING_LICENSE_SECRET: '/k8s/api/DRIVING_LICENSE_SECRET' @@ -633,7 +638,9 @@ application-system-api: XROAD_FINANCES_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeIsland' XROAD_FINANCES_V2_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeServicesFJS_v2' XROAD_FINANCIAL_AID_BACKEND_PATH: 'IS-DEV/MUN/10023/samband-sveitarfelaga/financial-aid-backend' + XROAD_HEALTH_DIRECTORATE_ORGAN_DONATION_PATH: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/organ-donation-v1' XROAD_HEALTH_DIRECTORATE_PATH: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir' + XROAD_HEALTH_DIRECTORATE_VACCINATION_PATH: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/vaccination-v1' XROAD_HEALTH_INSURANCE_ID: 'IS-DEV/GOV/10007/SJUKRA-Protected' XROAD_HEALTH_INSURANCE_MY_PAGES_PATH: 'IS-DEV/GOV/10007/SJUKRA-Protected/minarsidur' XROAD_HEALTH_INSURANCE_WSDLURL: 'https://test-huld.sjukra.is/islandrg?wsdl' @@ -642,7 +649,7 @@ application-system-api: XROAD_HOLAR_UNIVERSITY_PATH: 'IS-DEV/EDU/10055/Holar-Protected/brautskraning-v1' XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-DEV/EDU/10049/LHI-Protected/brautskraning-v1' XROAD_INNA_PATH: 'IS-DEV/GOV/10066/MMS-Protected/inna-v1' - XROAD_MMS_FRIGG_PATH: 'IS-DEV/GOV/10066/MMS-Protected/frigg-api' + XROAD_MMS_FRIGG_PATH: 'IS-DEV/GOV/10066/MMS-Protected/frigg-form-service' XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-DEV/GOV/10001/SKRA-Protected/Einstaklingar-v1' XROAD_OFFICIAL_JOURNAL_APPLICATION_PATH: 'IS-DEV/GOV/10014/DMR-Protected/official-journal-application' @@ -878,7 +885,7 @@ application-system-api-worker: cpu: '400m' memory: '768Mi' requests: - cpu: '100m' + cpu: '150m' memory: '384Mi' schedule: '*/30 * * * *' secrets: @@ -1072,7 +1079,6 @@ contentful-apps: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'contentful-apps.dev01.devland.is' @@ -1136,7 +1142,6 @@ contentful-entry-tagger-service: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'contentful-entry-tagger-service.dev01.devland.is' @@ -1285,6 +1290,7 @@ endorsement-system-api: EMAIL_FROM_ADDRESS: 'development@island.is' EMAIL_FROM_NAME: 'devland.is' EMAIL_REGION: 'eu-west-1' + ENDORSEMENT_SYSTEM_EXPORTS_BUCKET_NAME: 'island-is-dev-exports-endorsement-system' IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/endorsement' IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.dev01.devland.is' LOG_LEVEL: 'info' @@ -1379,117 +1385,6 @@ endorsement-system-api: eks.amazonaws.com/role-arn: 'arn:aws:iam::013313053092:role/endorsement-system-api' create: true name: 'endorsement-system-api' -endorsement-system-api-cleanup-worker: - args: - - '--no-experimental-fetch' - - 'main.js' - - '--job=cleanup' - command: - - 'node' - enabled: true - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_endorsements_api' - DB_REPLICAS_HOST: 'postgres-applications-reader.internal' - DB_USER: 'services_endorsements_api' - EMAIL_FROM_ADDRESS: 'development@island.is' - EMAIL_FROM_NAME: 'devland.is' - EMAIL_REGION: 'eu-west-1' - IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/endorsement' - IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.dev01.devland.is' - LOG_LEVEL: 'info' - NATIONAL_REGISTRY_B2C_CLIENT_ID: 'b464afdd-056b-406d-b650-6d41733cfeb7' - NATIONAL_REGISTRY_B2C_ENDPOINT: 'https://skraidentitydev.b2clogin.com/skraidentitydev.onmicrosoft.com/b2c_1_midlun_flow/oauth2/v2.0/token' - NATIONAL_REGISTRY_B2C_PATH: 'IS-DEV/GOV/10001/SKRA-Cloud-Protected/Midlun-v1' - NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentitydev.onmicrosoft.com/midlun/.default' - NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' - SERVERSIDE_FEATURES_ON: '' - XROAD_BASE_PATH: 'http://securityserver.dev01.devland.is' - XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.dev01.devland.is/r1/IS-DEV' - XROAD_CLIENT_ID: 'IS-DEV/GOV/10000/island-is-client' - XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' - XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-DEV/GOV/10001/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_API_PATH: '/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_MEMBER_CODE: '10001' - XROAD_TLS_BASE_PATH: 'https://securityserver.dev01.devland.is' - XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.dev01.devland.is/r1/IS-DEV' - grantNamespaces: - - 'islandis' - - 'application-system' - grantNamespacesEnabled: true - healthCheck: - liveness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - readiness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - hpa: - scaling: - metric: - cpuAverageUtilization: 90 - nginxRequestsIrate: 5 - replicas: - max: 3 - min: 1 - image: - repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-endorsements-api' - initContainer: - containers: - - args: - - 'sequelize-cli' - - 'db:migrate' - command: - - 'npx' - name: 'migrations' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_endorsements_api' - DB_REPLICAS_HOST: 'postgres-applications-reader.internal' - DB_USER: 'services_endorsements_api' - SERVERSIDE_FEATURES_ON: '' - secrets: - DB_PASS: '/k8s/services-endorsements-api/DB_PASSWORD' - namespace: 'endorsement-system' - podDisruptionBudget: - maxUnavailable: 1 - podSecurityContext: - fsGroup: 65534 - pvcs: [] - replicaCount: - default: 1 - max: 3 - min: 1 - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '100m' - memory: '128Mi' - schedule: '@hourly' - secrets: - CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' - DB_PASS: '/k8s/services-endorsements-api/DB_PASSWORD' - IDENTITY_SERVER_CLIENT_SECRET: '/k8s/endorsement-system-api/IDS-shared-secret' - NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET' - securityContext: - allowPrivilegeEscalation: false - privileged: false - serviceAccount: - annotations: - eks.amazonaws.com/role-arn: 'arn:aws:iam::013313053092:role/endorsement-system-api-cleanup-worker' - create: true - name: 'endorsement-system-api-cleanup-worker' external-contracts-tests: enabled: true env: @@ -1750,7 +1645,6 @@ island-ui-storybook: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'ui.dev01.devland.is' @@ -1841,7 +1735,7 @@ license-api: cpu: '400m' memory: '512Mi' requests: - cpu: '15m' + cpu: '50m' memory: '256Mi' secrets: ADR_LICENSE_PASS_TEMPLATE_ID: '/k8s/api/ADR_LICENSE_PASS_TEMPLATE_ID' @@ -1893,7 +1787,6 @@ namespaces: - 'external-contracts-tests' - 'contentful-entry-tagger' - 'license-api' - - 'services-form-system' - 'services-sessions' - 'contentful-apps' - 'services-university-gateway' @@ -1921,7 +1814,7 @@ portals-admin: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: max: 30 min: 2 @@ -1951,7 +1844,7 @@ portals-admin: cpu: '400m' memory: '512Mi' requests: - cpu: '200m' + cpu: '25m' memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' @@ -1972,15 +1865,15 @@ regulations-admin-backend: IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/regulations-admin-api' IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.dev01.devland.is' LOG_LEVEL: 'info' + NATIONAL_REGISTRY_B2C_CLIENT_ID: 'b464afdd-056b-406d-b650-6d41733cfeb7' + NATIONAL_REGISTRY_B2C_ENDPOINT: 'https://skraidentitydev.b2clogin.com/skraidentitydev.onmicrosoft.com/b2c_1_midlun_flow/oauth2/v2.0/token' + NATIONAL_REGISTRY_B2C_PATH: 'IS-DEV/GOV/10001/SKRA-Cloud-Protected/Midlun-v1' + NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentitydev.onmicrosoft.com/midlun/.default' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' XROAD_BASE_PATH: 'http://securityserver.dev01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.dev01.devland.is/r1/IS-DEV' XROAD_CLIENT_ID: 'IS-DEV/GOV/10000/island-is-client' - XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' - XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-DEV/GOV/10001/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_API_PATH: '/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_MEMBER_CODE: '10001' XROAD_TLS_BASE_PATH: 'https://securityserver.dev01.devland.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.dev01.devland.is/r1/IS-DEV' grantNamespaces: @@ -2048,6 +1941,7 @@ regulations-admin-backend: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/regulations-admin-backend/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-regulations-admin/IDENTITY_SERVER_CLIENT_SECRET' + NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET' REGULATIONS_API_URL: '/k8s/api/REGULATIONS_API_URL' REGULATIONS_FILE_UPLOAD_KEY_DRAFT: '/k8s/api/REGULATIONS_FILE_UPLOAD_KEY_DRAFT' REGULATIONS_FILE_UPLOAD_KEY_PRESIGNED: '/k8s/api/REGULATIONS_FILE_UPLOAD_KEY_PRESIGNED' @@ -2060,7 +1954,7 @@ search-indexer-service: env: AIR_DISCOUNT_SCHEME_FRONTEND_HOSTNAME: 'loftbru.dev01.devland.is' APPLICATION_URL: 'http://search-indexer-service' - CONTENTFUL_ENTRY_FETCH_CHUNK_SIZE: '20' + CONTENTFUL_ENTRY_FETCH_CHUNK_SIZE: '40' CONTENTFUL_ENVIRONMENT: 'master' CONTENTFUL_HOST: 'preview.contentful.com' CONTENTFUL_SPACE: '8k0h54kbe6bj' @@ -2142,7 +2036,7 @@ search-indexer-service: env: AIR_DISCOUNT_SCHEME_FRONTEND_HOSTNAME: 'loftbru.dev01.devland.is' APPLICATION_URL: 'http://search-indexer-service' - CONTENTFUL_ENTRY_FETCH_CHUNK_SIZE: '20' + CONTENTFUL_ENTRY_FETCH_CHUNK_SIZE: '40' CONTENTFUL_ENVIRONMENT: 'master' CONTENTFUL_HOST: 'preview.contentful.com' CONTENTFUL_SPACE: '8k0h54kbe6bj' @@ -2359,7 +2253,7 @@ service-portal-api: cpu: '800m' memory: '1024Mi' requests: - cpu: '400m' + cpu: '100m' memory: '512Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' @@ -2462,96 +2356,6 @@ services-documents: securityContext: allowPrivilegeEscalation: false privileged: false -services-form-system: - enabled: true - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_form_system' - DB_REPLICAS_HOST: 'postgres-applications-reader.internal' - DB_USER: 'services_form_system' - IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.dev01.devland.is' - LOG_LEVEL: 'info' - NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' - SERVERSIDE_FEATURES_ON: '' - grantNamespaces: - - 'islandis' - grantNamespacesEnabled: true - healthCheck: - liveness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - readiness: - initialDelaySeconds: 3 - path: '/readiness' - timeoutSeconds: 3 - hpa: - scaling: - metric: - cpuAverageUtilization: 90 - nginxRequestsIrate: 5 - replicas: - max: 3 - min: 1 - image: - repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-form-system' - initContainer: - containers: - - args: - - 'sequelize-cli' - - 'db:migrate' - command: - - 'npx' - name: 'migrations' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - - args: - - 'sequelize-cli' - - 'db:seed:all' - command: - - 'npx' - name: 'seed' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_form_system' - DB_REPLICAS_HOST: 'postgres-applications-reader.internal' - DB_USER: 'services_form_system' - SERVERSIDE_FEATURES_ON: '' - secrets: - DB_PASS: '/k8s/services-form-system/DB_PASSWORD' - namespace: 'services-form-system' - podDisruptionBudget: - maxUnavailable: 1 - pvcs: [] - replicaCount: - default: 1 - max: 3 - min: 1 - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '100m' - memory: '128Mi' - secrets: - CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' - DB_PASS: '/k8s/services-form-system/DB_PASSWORD' - securityContext: - allowPrivilegeEscalation: false - privileged: false services-sessions: enabled: true env: @@ -3011,10 +2815,10 @@ skilavottord-web: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: - max: 3 - min: 1 + max: 10 + min: 2 image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/skilavottord-web' ingress: @@ -3033,9 +2837,9 @@ skilavottord-web: maxUnavailable: 1 pvcs: [] replicaCount: - default: 1 - max: 3 - min: 1 + default: 2 + max: 10 + min: 2 resources: limits: cpu: '200m' @@ -3160,6 +2964,8 @@ user-notification: env: AUTH_DELEGATION_API_URL: 'http://web-services-auth-delegation-api.identity-server-delegation.svc.cluster.local' AUTH_DELEGATION_MACHINE_CLIENT_SCOPE: '["@island.is/auth/delegations/index:system"]' + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS-DEV/GOV/10006/Skatturinn/ft-v1' DB_HOST: 'postgres-applications.internal' DB_NAME: 'user_notification' DB_REPLICAS_HOST: 'postgres-applications-reader.internal' @@ -3355,6 +3161,8 @@ user-notification-worker: env: AUTH_DELEGATION_API_URL: 'http://web-services-auth-delegation-api.identity-server-delegation.svc.cluster.local' AUTH_DELEGATION_MACHINE_CLIENT_SCOPE: '["@island.is/auth/delegations/index:system"]' + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.5fzau3.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS-DEV/GOV/10006/Skatturinn/ft-v1' CONTENTFUL_HOST: 'preview.contentful.com' DB_HOST: 'postgres-applications.internal' DB_NAME: 'user_notification' @@ -3520,10 +3328,10 @@ web: min: 2 resources: limits: - cpu: '400m' + cpu: '1000m' memory: '768Mi' requests: - cpu: '200m' + cpu: '300m' memory: '384Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' diff --git a/charts/islandis/values.prod.yaml b/charts/islandis/values.prod.yaml index d802843e4eae..d773411dfe3e 100644 --- a/charts/islandis/values.prod.yaml +++ b/charts/islandis/values.prod.yaml @@ -42,7 +42,6 @@ air-discount-scheme-api: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'loftbru.island.is' @@ -128,7 +127,6 @@ air-discount-scheme-backend: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'loftbru.island.is' @@ -269,6 +267,7 @@ api: AIR_DISCOUNT_SCHEME_FRONTEND_HOSTNAME: 'loftbru.island.is' APOLLO_CACHE_REDIS_NODES: '["clustercfg.general-redis-cluster-group.whakos.euw1.cache.amazonaws.com:6379"]' APPLICATION_SYSTEM_API_URL: 'http://web-application-system-api.application-system.svc.cluster.local' + AUTH_ADMIN_API_PATH: 'https://innskra.island.is/backend' AUTH_ADMIN_API_PATHS: '{"development":"https://identity-server.dev01.devland.is/backend","staging":"https://identity-server.staging01.devland.is/backend","production":"https://innskra.island.is/backend"}' AUTH_DELEGATION_API_URL: 'https://auth-delegation-api.internal.innskra.island.is' AUTH_IDS_API_URL: 'https://innskra.island.is' @@ -342,7 +341,9 @@ api: XROAD_FINANCES_V2_PATH: 'IS/GOV/5402697509/FJS-Public/financeServicesFJS_v2' XROAD_FINANCIAL_AID_BACKEND_PATH: 'IS/MUN/5502694739/samband-sveitarfelaga/financial-aid-backend' XROAD_FIREARM_LICENSE_PATH: 'IS/GOV/5309672079/Logreglan-Protected/island-api-v1' + XROAD_HEALTH_DIRECTORATE_ORGAN_DONATION_PATH: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/organ-donation-v1' XROAD_HEALTH_DIRECTORATE_PATH: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/landlaeknir' + XROAD_HEALTH_DIRECTORATE_VACCINATION_PATH: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/vaccination-v1' XROAD_HEALTH_INSURANCE_ID: 'IS/GOV/4804080550/SJUKRA-Protected' XROAD_HEALTH_INSURANCE_MY_PAGES_PATH: 'IS/GOV/4804080550/SJUKRA-Protected/minarsidur' XROAD_HEALTH_INSURANCE_WSDLURL: 'https://huld.sjukra.is/islandrg?wsdl' @@ -355,7 +356,8 @@ api: XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS/EDU/4210984099/LHI-Protected/brautskraning-v1' XROAD_INNA_PATH: 'IS/GOV/6601241280/MMS-Protected/inna-v1' XROAD_INTELLECTUAL_PROPERTIES_PATH: 'IS/GOV/6501912189/WebAPI-Public/HUG-webAPI/' - XROAD_MMS_FRIGG_PATH: 'IS/GOV/10066/MMS-Protected/frigg-api' + XROAD_JUDICIAL_SYSTEM_SP_PATH: 'IS-GOV/GOV/5804170510/Rettarvorslugatt-Private/judicial-system-mailbox-api' + XROAD_MMS_FRIGG_PATH: 'IS/GOV/10066/MMS-Protected/frigg-form-service' XROAD_MMS_GRADE_SERVICE_ID: 'IS/GOV/6601241280/MMS-Protected/grade-api-v1' XROAD_MMS_LICENSE_SERVICE_ID: 'IS/GOV/6601241280/MMS-Protected/license-api-v1' XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.whakos.euw1.cache.amazonaws.com:6379"]' @@ -533,6 +535,7 @@ api: UST_PKPASS_API_KEY: '/k8s/api/UST_PKPASS_API_KEY' VEHICLES_ALLOW_CO_OWNERS: '/k8s/api/VEHICLES_ALLOW_CO_OWNERS' VE_PKPASS_API_KEY: '/k8s/api/VE_PKPASS_API_KEY' + VINNUEFTIRLITID_CAMPAIGN_MONITOR_API_KEY: '/k8s/api/VINNUEFTIRLITID_CAMPAIGN_MONITOR_API_KEY' WATSON_ASSISTANT_CHAT_FEEDBACK_API_KEY: '/k8s/api/WATSON_ASSISTANT_CHAT_FEEDBACK_API_KEY' WATSON_ASSISTANT_CHAT_FEEDBACK_URL: '/k8s/api/WATSON_ASSISTANT_CHAT_FEEDBACK_URL' XROAD_DRIVING_LICENSE_SECRET: '/k8s/api/DRIVING_LICENSE_SECRET' @@ -623,7 +626,9 @@ application-system-api: XROAD_FINANCES_PATH: 'IS/GOV/5402697509/FJS-Public/financeIsland' XROAD_FINANCES_V2_PATH: 'IS/GOV/5402697509/FJS-Public/financeServicesFJS_v2' XROAD_FINANCIAL_AID_BACKEND_PATH: 'IS/MUN/5502694739/samband-sveitarfelaga/financial-aid-backend' + XROAD_HEALTH_DIRECTORATE_ORGAN_DONATION_PATH: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/organ-donation-v1' XROAD_HEALTH_DIRECTORATE_PATH: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/landlaeknir' + XROAD_HEALTH_DIRECTORATE_VACCINATION_PATH: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/vaccination-v1' XROAD_HEALTH_INSURANCE_ID: 'IS/GOV/4804080550/SJUKRA-Protected' XROAD_HEALTH_INSURANCE_MY_PAGES_PATH: 'IS/GOV/4804080550/SJUKRA-Protected/minarsidur' XROAD_HEALTH_INSURANCE_WSDLURL: 'https://huld.sjukra.is/islandrg?wsdl' @@ -632,7 +637,7 @@ application-system-api: XROAD_HOLAR_UNIVERSITY_PATH: 'IS/EDU/5001694359/Holar-Protected/brautskraning-v1' XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS/EDU/4210984099/LHI-Protected/brautskraning-v1' XROAD_INNA_PATH: 'IS/GOV/6601241280/MMS-Protected/inna-v1' - XROAD_MMS_FRIGG_PATH: 'IS/GOV/10066/MMS-Protected/frigg-api' + XROAD_MMS_FRIGG_PATH: 'IS/GOV/10066/MMS-Protected/frigg-form-service' XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.whakos.euw1.cache.amazonaws.com:6379"]' XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' XROAD_OFFICIAL_JOURNAL_APPLICATION_PATH: 'IS/GOV/10014/DMR-Protected/official-journal-application' @@ -868,7 +873,7 @@ application-system-api-worker: cpu: '400m' memory: '768Mi' requests: - cpu: '100m' + cpu: '150m' memory: '384Mi' schedule: '*/30 * * * *' secrets: @@ -1131,7 +1136,6 @@ contentful-entry-tagger-service: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'contentful-entry-tagger-service.devland.is' @@ -1280,6 +1284,7 @@ endorsement-system-api: EMAIL_FROM_ADDRESS: 'noreply@island.is' EMAIL_FROM_NAME: 'island.is' EMAIL_REGION: 'eu-west-1' + ENDORSEMENT_SYSTEM_EXPORTS_BUCKET_NAME: 'island-is-prod-exports-endorsement-system' IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/endorsement' IDENTITY_SERVER_ISSUER_URL: 'https://innskra.island.is' LOG_LEVEL: 'info' @@ -1374,117 +1379,6 @@ endorsement-system-api: eks.amazonaws.com/role-arn: 'arn:aws:iam::251502586493:role/endorsement-system-api' create: true name: 'endorsement-system-api' -endorsement-system-api-cleanup-worker: - args: - - '--no-experimental-fetch' - - 'main.js' - - '--job=cleanup' - command: - - 'node' - enabled: true - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_endorsements_api' - DB_REPLICAS_HOST: 'postgres-applications.internal' - DB_USER: 'services_endorsements_api' - EMAIL_FROM_ADDRESS: 'noreply@island.is' - EMAIL_FROM_NAME: 'island.is' - EMAIL_REGION: 'eu-west-1' - IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/endorsement' - IDENTITY_SERVER_ISSUER_URL: 'https://innskra.island.is' - LOG_LEVEL: 'info' - NATIONAL_REGISTRY_B2C_CLIENT_ID: '2304d7ca-7ed3-4188-8b6d-e1b7e0e3df7f' - NATIONAL_REGISTRY_B2C_ENDPOINT: 'https://skraidentity.b2clogin.com/skraidentity.onmicrosoft.com/b2c_1_midlun_flow/oauth2/v2.0/token' - NATIONAL_REGISTRY_B2C_PATH: 'IS/GOV/6503760649/SKRA-Cloud-Protected/Midlun-v1' - NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentity.onmicrosoft.com/midlun/.default' - NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' - SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' - XROAD_BASE_PATH: 'http://securityserver.island.is' - XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.island.is/r1/IS' - XROAD_CLIENT_ID: 'IS/GOV/5501692829/island-is-client' - XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.whakos.euw1.cache.amazonaws.com:6379"]' - XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_API_PATH: '/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_MEMBER_CODE: '6503760649' - XROAD_TLS_BASE_PATH: 'https://securityserver.island.is' - XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.island.is/r1/IS' - grantNamespaces: - - 'islandis' - - 'application-system' - grantNamespacesEnabled: true - healthCheck: - liveness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - readiness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - hpa: - scaling: - metric: - cpuAverageUtilization: 90 - nginxRequestsIrate: 5 - replicas: - max: 10 - min: 3 - image: - repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-endorsements-api' - initContainer: - containers: - - args: - - 'sequelize-cli' - - 'db:migrate' - command: - - 'npx' - name: 'migrations' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_endorsements_api' - DB_REPLICAS_HOST: 'postgres-applications.internal' - DB_USER: 'services_endorsements_api' - SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' - secrets: - DB_PASS: '/k8s/services-endorsements-api/DB_PASSWORD' - namespace: 'endorsement-system' - podDisruptionBudget: - maxUnavailable: 1 - podSecurityContext: - fsGroup: 65534 - pvcs: [] - replicaCount: - default: 3 - max: 10 - min: 3 - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '100m' - memory: '128Mi' - schedule: '@hourly' - secrets: - CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' - DB_PASS: '/k8s/services-endorsements-api/DB_PASSWORD' - IDENTITY_SERVER_CLIENT_SECRET: '/k8s/endorsement-system-api/IDS-shared-secret' - NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET' - securityContext: - allowPrivilegeEscalation: false - privileged: false - serviceAccount: - annotations: - eks.amazonaws.com/role-arn: 'arn:aws:iam::251502586493:role/endorsement-system-api-cleanup-worker' - create: true - name: 'endorsement-system-api-cleanup-worker' global: env: AUDIT_GROUP_NAME: '/island-is/audit-log' @@ -1708,7 +1602,7 @@ license-api: cpu: '400m' memory: '512Mi' requests: - cpu: '15m' + cpu: '50m' memory: '256Mi' secrets: ADR_LICENSE_PASS_TEMPLATE_ID: '/k8s/api/ADR_LICENSE_PASS_TEMPLATE_ID' @@ -1757,7 +1651,6 @@ namespaces: - 'regulations-admin' - 'user-notification' - 'license-api' - - 'services-form-system' - 'services-sessions' - 'services-university-gateway' - 'contentful-apps' @@ -1786,7 +1679,7 @@ portals-admin: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: max: 30 min: 2 @@ -1819,7 +1712,7 @@ portals-admin: cpu: '400m' memory: '512Mi' requests: - cpu: '200m' + cpu: '25m' memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' @@ -1840,15 +1733,15 @@ regulations-admin-backend: IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/regulations-admin-api' IDENTITY_SERVER_ISSUER_URL: 'https://innskra.island.is' LOG_LEVEL: 'info' + NATIONAL_REGISTRY_B2C_CLIENT_ID: '2304d7ca-7ed3-4188-8b6d-e1b7e0e3df7f' + NATIONAL_REGISTRY_B2C_ENDPOINT: 'https://skraidentity.b2clogin.com/skraidentity.onmicrosoft.com/b2c_1_midlun_flow/oauth2/v2.0/token' + NATIONAL_REGISTRY_B2C_PATH: 'IS/GOV/6503760649/SKRA-Cloud-Protected/Midlun-v1' + NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentity.onmicrosoft.com/midlun/.default' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' XROAD_BASE_PATH: 'http://securityserver.island.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.island.is/r1/IS' XROAD_CLIENT_ID: 'IS/GOV/5501692829/island-is-client' - XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.whakos.euw1.cache.amazonaws.com:6379"]' - XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_API_PATH: '/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_MEMBER_CODE: '6503760649' XROAD_TLS_BASE_PATH: 'https://securityserver.island.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.island.is/r1/IS' grantNamespaces: @@ -1916,6 +1809,7 @@ regulations-admin-backend: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/regulations-admin-backend/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-regulations-admin/IDENTITY_SERVER_CLIENT_SECRET' + NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET' REGULATIONS_API_URL: '/k8s/api/REGULATIONS_API_URL' REGULATIONS_FILE_UPLOAD_KEY_DRAFT: '/k8s/api/REGULATIONS_FILE_UPLOAD_KEY_DRAFT' REGULATIONS_FILE_UPLOAD_KEY_PRESIGNED: '/k8s/api/REGULATIONS_FILE_UPLOAD_KEY_PRESIGNED' @@ -1963,7 +1857,6 @@ search-indexer-service: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'search-indexer-service.devland.is' @@ -2230,7 +2123,7 @@ service-portal-api: cpu: '800m' memory: '1024Mi' requests: - cpu: '400m' + cpu: '100m' memory: '512Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' @@ -2333,96 +2226,6 @@ services-documents: securityContext: allowPrivilegeEscalation: false privileged: false -services-form-system: - enabled: true - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_form_system' - DB_REPLICAS_HOST: 'postgres-applications.internal' - DB_USER: 'services_form_system' - IDENTITY_SERVER_ISSUER_URL: 'https://innskra.island.is' - LOG_LEVEL: 'info' - NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' - SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' - grantNamespaces: - - 'islandis' - grantNamespacesEnabled: true - healthCheck: - liveness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - readiness: - initialDelaySeconds: 3 - path: '/readiness' - timeoutSeconds: 3 - hpa: - scaling: - metric: - cpuAverageUtilization: 90 - nginxRequestsIrate: 5 - replicas: - max: 10 - min: 3 - image: - repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-form-system' - initContainer: - containers: - - args: - - 'sequelize-cli' - - 'db:migrate' - command: - - 'npx' - name: 'migrations' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - - args: - - 'sequelize-cli' - - 'db:seed:all' - command: - - 'npx' - name: 'seed' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_form_system' - DB_REPLICAS_HOST: 'postgres-applications.internal' - DB_USER: 'services_form_system' - SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' - secrets: - DB_PASS: '/k8s/services-form-system/DB_PASSWORD' - namespace: 'services-form-system' - podDisruptionBudget: - maxUnavailable: 1 - pvcs: [] - replicaCount: - default: 3 - max: 10 - min: 3 - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '100m' - memory: '128Mi' - secrets: - CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' - DB_PASS: '/k8s/services-form-system/DB_PASSWORD' - securityContext: - allowPrivilegeEscalation: false - privileged: false services-sessions: enabled: true env: @@ -2882,10 +2685,10 @@ skilavottord-web: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: max: 10 - min: 3 + min: 2 image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/skilavottord-web' ingress: @@ -2907,9 +2710,9 @@ skilavottord-web: maxUnavailable: 1 pvcs: [] replicaCount: - default: 3 + default: 2 max: 10 - min: 3 + min: 2 resources: limits: cpu: '200m' @@ -3037,6 +2840,8 @@ user-notification: env: AUTH_DELEGATION_API_URL: 'https://auth-delegation-api.internal.innskra.island.is' AUTH_DELEGATION_MACHINE_CLIENT_SCOPE: '["@island.is/auth/delegations/index:system"]' + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.whakos.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS/GOV/5402696029/Skatturinn/ft-v1' DB_HOST: 'postgres-applications.internal' DB_NAME: 'user_notification' DB_REPLICAS_HOST: 'postgres-applications.internal' @@ -3232,6 +3037,8 @@ user-notification-worker: env: AUTH_DELEGATION_API_URL: 'https://auth-delegation-api.internal.innskra.island.is' AUTH_DELEGATION_MACHINE_CLIENT_SCOPE: '["@island.is/auth/delegations/index:system"]' + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.whakos.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS/GOV/5402696029/Skatturinn/ft-v1' CONTENTFUL_HOST: 'cdn.contentful.com' DB_HOST: 'postgres-applications.internal' DB_NAME: 'user_notification' @@ -3380,7 +3187,6 @@ web: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/proxy-buffer-size: '8k' nginx.ingress.kubernetes.io/proxy-buffering: 'on' nginx.ingress.kubernetes.io/service-upstream: 'true' @@ -3401,10 +3207,10 @@ web: min: 2 resources: limits: - cpu: '400m' + cpu: '1000m' memory: '768Mi' requests: - cpu: '200m' + cpu: '300m' memory: '384Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' diff --git a/charts/islandis/values.staging.yaml b/charts/islandis/values.staging.yaml index 66e98fcf275b..49ea4077bf6a 100644 --- a/charts/islandis/values.staging.yaml +++ b/charts/islandis/values.staging.yaml @@ -279,6 +279,7 @@ api: AIR_DISCOUNT_SCHEME_FRONTEND_HOSTNAME: 'loftbru.staging01.devland.is' APOLLO_CACHE_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' APPLICATION_SYSTEM_API_URL: 'http://web-application-system-api.application-system.svc.cluster.local' + AUTH_ADMIN_API_PATH: 'https://identity-server.staging01.devland.is/backend' AUTH_ADMIN_API_PATHS: '{"development":"https://identity-server.dev01.devland.is/backend","staging":"https://identity-server.staging01.devland.is/backend"}' AUTH_DELEGATION_API_URL: 'http://web-services-auth-delegation-api.identity-server-delegation.svc.cluster.local' AUTH_IDS_API_URL: 'https://identity-server.staging01.devland.is' @@ -326,82 +327,85 @@ api: USER_NOTIFICATION_API_URL: 'http://web-user-notification.user-notification.svc.cluster.local' USER_PROFILE_CLIENT_URL: 'http://web-service-portal-api.service-portal.svc.cluster.local' XROAD_ADR_MACHINE_LICENSE_PATH: 'IS-TEST/GOV/4201810439/Vinnueftirlitid-Protected/rettindi-token-v1' - XROAD_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10056/LBHI-Protected/brautskraning-v1' - XROAD_AIRCRAFT_REGISTRY_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Loftfaraskra-V1' + XROAD_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10056/LBHI-Protected/brautskraning-v1' + XROAD_AIRCRAFT_REGISTRY_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Loftfaraskra-V1' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' - XROAD_BIFROST_UNIVERSITY_PATH: 'IS-DEV/EDU/10057/Bifrost-Protected/brautskraning-v1' - XROAD_CHARGE_FJS_V2_PATH: 'IS-DEV/GOV/10021/FJS-Public/chargeFJS_v2' + XROAD_BIFROST_UNIVERSITY_PATH: 'IS-TEST/EDU/10057/Bifrost-Protected/brautskraning-v1' + XROAD_CHARGE_FJS_V2_PATH: 'IS-TEST/GOV/10021/FJS-Public/chargeFJS_v2' XROAD_CHARGE_FJS_V2_TIMEOUT: '20000' XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' - XROAD_COURT_BANKRUPTCY_CERT_PATH: 'IS-DEV/GOV/10019/Domstolasyslan/JusticePortal-v1' + XROAD_COURT_BANKRUPTCY_CERT_PATH: 'IS-TEST/GOV/10019/Domstolasyslan/JusticePortal-v1' XROAD_CRIMINAL_RECORD_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/Sakaskra-v1' - XROAD_DIGITAL_TACHOGRAPH_DRIVERS_CARD_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Okuritar-V1' - XROAD_DIRECTORATE_OF_IMMIGRATION_PATH: 'IS-DEV/GOV/10011/UTL-Protected/Utl-Umsokn-v1' + XROAD_DIGITAL_TACHOGRAPH_DRIVERS_CARD_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Okuritar-V1' + XROAD_DIRECTORATE_OF_IMMIGRATION_PATH: 'IS-TEST/GOV/10011/UTL-Protected/Utl-Umsokn-v1' XROAD_DISABILITY_LICENSE_PATH: 'IS-TEST/GOV/5012130120/TR-Protected/oryrki-v1' - XROAD_DISTRICT_COMMISSIONERS_LICENSES_PATH: 'IS-DEV/GOV/10016/Syslumenn-Protected/RettindiIslandis' - XROAD_DISTRICT_COMMISSIONERS_P_CARD_PATH: 'IS-DEV/GOV/10016/Syslumenn-Protected/IslandMinarSidur' + XROAD_DISTRICT_COMMISSIONERS_LICENSES_PATH: 'IS-TEST/GOV/10016/Syslumenn-Protected/RettindiIslandis' + XROAD_DISTRICT_COMMISSIONERS_P_CARD_PATH: 'IS-TEST/GOV/10016/Syslumenn-Protected/IslandMinarSidur' XROAD_DRIVING_LICENSE_BOOK_TIMEOUT: '20000' XROAD_DRIVING_LICENSE_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/RafraentOkuskirteini-v1' XROAD_DRIVING_LICENSE_V2_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/RafraentOkuskirteini-v2' XROAD_DRIVING_LICENSE_V4_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/Okuskirteini-v4' XROAD_DRIVING_LICENSE_V5_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/Okuskirteini-v5' - XROAD_ENERGY_FUNDS_PATH: 'IS-DEV/GOV/10021/FJS-Public/ElectricCarSubSidyService_v1' - XROAD_FINANCES_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeIsland' + XROAD_ENERGY_FUNDS_PATH: 'IS-TEST/GOV/10021/FJS-Public/ElectricCarSubSidyService_v1' + XROAD_FINANCES_PATH: 'IS-TEST/GOV/10021/FJS-Public/financeIsland' XROAD_FINANCES_TIMEOUT: '20000' - XROAD_FINANCES_V2_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeServicesFJS_v2' + XROAD_FINANCES_V2_PATH: 'IS-TEST/GOV/10021/FJS-Public/financeServicesFJS_v2' XROAD_FINANCIAL_AID_BACKEND_PATH: 'IS-TEST/MUN/5502694739/samband-sveitarfelaga/financial-aid-backend' XROAD_FIREARM_LICENSE_PATH: 'IS/GOV/5309672079/Logreglan-Protected/island-api-v1' - XROAD_HEALTH_DIRECTORATE_PATH: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir' + XROAD_HEALTH_DIRECTORATE_ORGAN_DONATION_PATH: 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/organ-donation-v1' + XROAD_HEALTH_DIRECTORATE_PATH: 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir' + XROAD_HEALTH_DIRECTORATE_VACCINATION_PATH: 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/vaccination-v1' XROAD_HEALTH_INSURANCE_ID: 'IS-TEST/GOV/4804080550/SJUKRA-Protected' XROAD_HEALTH_INSURANCE_MY_PAGES_PATH: 'IS-TEST/GOV/4804080550/SJUKRA-Protected/minarsidur' XROAD_HEALTH_INSURANCE_WSDLURL: 'https://test-huld.sjukra.is/islandrg?wsdl' XROAD_HMS_HOUSING_BENEFITS_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/husbot-v1' XROAD_HMS_LOANS_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/libra-v1' - XROAD_HOLAR_UNIVERSITY_PATH: 'IS-DEV/EDU/10055/Holar-Protected/brautskraning-v1' + XROAD_HOLAR_UNIVERSITY_PATH: 'IS-TEST/EDU/10055/Holar-Protected/brautskraning-v1' XROAD_HOUSING_BENEFIT_CALCULATOR_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/calc-v1' - XROAD_HUNTING_LICENSE_PATH: 'IS-DEV/GOV/10009/Umhverfisstofnun-Protected/api' - XROAD_ICELANDIC_GOVERNMENT_INSTITUTION_VACANCIES_PATH: 'IS-DEV/GOV/10021/FJS-Protected/recruitment-v1' - XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-DEV/EDU/10049/LHI-Protected/brautskraning-v1' + XROAD_HUNTING_LICENSE_PATH: 'IS-TEST/GOV/10009/Umhverfisstofnun-Protected/api' + XROAD_ICELANDIC_GOVERNMENT_INSTITUTION_VACANCIES_PATH: 'IS-TEST/GOV/10021/FJS-Protected/recruitment-v1' + XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-TEST/EDU/10049/LHI-Protected/brautskraning-v1' XROAD_INNA_PATH: 'IS-TEST/GOV/6601241280/MMS-Protected/inna-v1' XROAD_INTELLECTUAL_PROPERTIES_PATH: 'IS-TEST/GOV/6501912189/WebAPI-Public/HUG-webAPI/' - XROAD_MMS_FRIGG_PATH: 'IS-DEV/GOV/10066/MMS-Protected/frigg-api' + XROAD_JUDICIAL_SYSTEM_SP_PATH: 'IS-TEST/GOV/10014/Rettarvorslugatt-Private/judicial-system-mailbox-api' + XROAD_MMS_FRIGG_PATH: 'IS-TEST/GOV/10066/MMS-Protected/frigg-form-service' XROAD_MMS_GRADE_SERVICE_ID: 'IS-TEST/GOV/6601241280/MMS-Protected/grade-api-v1' XROAD_MMS_LICENSE_SERVICE_ID: 'IS-TEST/GOV/6601241280/MMS-Protected/license-api-v1' XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-TEST/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' XROAD_NATIONAL_REGISTRY_TIMEOUT: '20000' - XROAD_OFFICIAL_JOURNAL_APPLICATION_PATH: 'IS-DEV/GOV/10014/DMR-Protected/official-journal-application' - XROAD_OFFICIAL_JOURNAL_PATH: 'IS-DEV/GOV/10014/DMR-Protected/official-journal' + XROAD_OFFICIAL_JOURNAL_APPLICATION_PATH: 'IS-TEST/GOV/10014/DMR-Protected/official-journal-application' + XROAD_OFFICIAL_JOURNAL_PATH: 'IS-TEST/GOV/10014/DMR-Protected/official-journal' XROAD_PASSPORT_LICENSE_PATH: 'IS-TEST/GOV/6503760649/SKRA-Cloud-Protected/Forskraning-V1' XROAD_PAYMENT_ADDITION_CALLBACK_URL: '/' XROAD_PAYMENT_BASE_CALLBACK_URL: 'XROAD:' XROAD_PAYMENT_PROVIDER_ID: 'IS-TEST/GOV/10021/FJS-DEV-Public' - XROAD_PAYMENT_SCHEDULE_PATH: 'IS-DEV/GOV/10021/FJS-Public/paymentSchedule_v1' + XROAD_PAYMENT_SCHEDULE_PATH: 'IS-TEST/GOV/10021/FJS-Public/paymentSchedule_v1' XROAD_PROPERTIES_SERVICE_V2_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/Fasteignir-v1' XROAD_PROPERTIES_TIMEOUT: '35000' XROAD_RSK_PROCURING_PATH: 'IS-TEST/GOV/5402696029/Skatturinn/relationships-v1' XROAD_RSK_PROCURING_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' XROAD_RSK_PROCURING_SCOPE: '["@rsk.is/prokura","@rsk.is/prokura:admin"]' - XROAD_SHIP_REGISTRY_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/skipaskra-V1' + XROAD_SHIP_REGISTRY_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/skipaskra-V1' XROAD_SIGNATURE_COLLECTION_PATH: 'IS-TEST/GOV/6503760649/SKRA-Cloud-Protected/Medmaeli-v1' XROAD_TJODSKRA_API_PATH: '/SKRA-Protected/Einstaklingar-v1' XROAD_TJODSKRA_MEMBER_CODE: '6503760649' XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' XROAD_TR_PATH: 'IS-TEST/GOV/5012130120/TR-Protected/external-v1' - XROAD_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-DEV/EDU/10054/UNAK-Protected/brautskraning-v1' - XROAD_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10010/HI-Protected/brautskraning-v1' + XROAD_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-TEST/EDU/10054/UNAK-Protected/brautskraning-v1' + XROAD_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10010/HI-Protected/brautskraning-v1' XROAD_VEHICLES_MILEAGE_PATH: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-Mileagereading-V1' XROAD_VEHICLES_PATH: 'IS/GOV/5405131040/Samgongustofa-Protected/Mitt-Svaedi-V1' - XROAD_VEHICLE_CODETABLES_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Codetables-V1' - XROAD_VEHICLE_INFOLOCKS_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Infolocks-V1' - XROAD_VEHICLE_OPERATORS_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Operators-V3' - XROAD_VEHICLE_OWNER_CHANGE_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Ownerchange-V2' - XROAD_VEHICLE_PLATE_ORDERING_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOrdering-V1' - XROAD_VEHICLE_PLATE_RENEWAL_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOwnership-V1' - XROAD_VEHICLE_PRINTING_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Printing-V1' - XROAD_VEHICLE_SERVICE_FJS_V1_PATH: 'IS-DEV/GOV/10021/FJS-Public/VehicleServiceFJS_v1' + XROAD_VEHICLE_CODETABLES_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Codetables-V1' + XROAD_VEHICLE_INFOLOCKS_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Infolocks-V1' + XROAD_VEHICLE_OPERATORS_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Operators-V3' + XROAD_VEHICLE_OWNER_CHANGE_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Ownerchange-V2' + XROAD_VEHICLE_PLATE_ORDERING_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOrdering-V1' + XROAD_VEHICLE_PLATE_RENEWAL_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOwnership-V1' + XROAD_VEHICLE_PRINTING_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Printing-V1' + XROAD_VEHICLE_SERVICE_FJS_V1_PATH: 'IS-TEST/GOV/10021/FJS-Public/VehicleServiceFJS_v1' XROAD_VMST_API_PATH: '/VMST-ParentalLeave-Protected/ParentalLeaveApplication-v1' XROAD_VMST_MEMBER_CODE: '7005942039' XROAD_WORK_MACHINE_LICENSE_PATH: 'IS-TEST/GOV/4201810439/Vinnueftirlitid-Protected/vinnuvelar-token' @@ -437,7 +441,6 @@ api: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'beta.staging01.devland.is' @@ -541,6 +544,7 @@ api: UST_PKPASS_API_KEY: '/k8s/api/UST_PKPASS_API_KEY' VEHICLES_ALLOW_CO_OWNERS: '/k8s/api/VEHICLES_ALLOW_CO_OWNERS' VE_PKPASS_API_KEY: '/k8s/api/VE_PKPASS_API_KEY' + VINNUEFTIRLITID_CAMPAIGN_MONITOR_API_KEY: '/k8s/api/VINNUEFTIRLITID_CAMPAIGN_MONITOR_API_KEY' WATSON_ASSISTANT_CHAT_FEEDBACK_API_KEY: '/k8s/api/WATSON_ASSISTANT_CHAT_FEEDBACK_API_KEY' WATSON_ASSISTANT_CHAT_FEEDBACK_URL: '/k8s/api/WATSON_ASSISTANT_CHAT_FEEDBACK_URL' XROAD_DRIVING_LICENSE_SECRET: '/k8s/api/DRIVING_LICENSE_SECRET' @@ -610,46 +614,48 @@ application-system-api: SERVICE_DOCUMENTS_BASEPATH: 'http://web-services-documents.services-documents.svc.cluster.local' SERVICE_USER_PROFILE_URL: 'http://web-service-portal-api.service-portal.svc.cluster.local' UNIVERSITY_GATEWAY_API_URL: 'http://web-services-university-gateway.services-university-gateway.svc.cluster.local' - WORKPOINT_ARBORG_SERVICE_PATH: 'IS-DEV/MUN/10036/Arborg-Protected/tengill-application-v1' - XROAD_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10056/LBHI-Protected/brautskraning-v1' - XROAD_ALTHINGI_OMBUDSMAN_SERVICE_PATH: 'IS-DEV/GOV/10047/UA-Protected/kvortun-v1/' + WORKPOINT_ARBORG_SERVICE_PATH: 'IS-TEST/MUN/10036/Arborg-Protected/tengill-application-v1' + XROAD_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10056/LBHI-Protected/brautskraning-v1' + XROAD_ALTHINGI_OMBUDSMAN_SERVICE_PATH: 'IS-TEST/GOV/10047/UA-Protected/kvortun-v1/' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' - XROAD_BIFROST_UNIVERSITY_PATH: 'IS-DEV/EDU/10057/Bifrost-Protected/brautskraning-v1' - XROAD_CHARGE_FJS_V2_PATH: 'IS-DEV/GOV/10021/FJS-Public/chargeFJS_v2' + XROAD_BIFROST_UNIVERSITY_PATH: 'IS-TEST/EDU/10057/Bifrost-Protected/brautskraning-v1' + XROAD_CHARGE_FJS_V2_PATH: 'IS-TEST/GOV/10021/FJS-Public/chargeFJS_v2' XROAD_CHARGE_FJS_V2_TIMEOUT: '20000' XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' - XROAD_COURT_BANKRUPTCY_CERT_PATH: 'IS-DEV/GOV/10019/Domstolasyslan/JusticePortal-v1' + XROAD_COURT_BANKRUPTCY_CERT_PATH: 'IS-TEST/GOV/10019/Domstolasyslan/JusticePortal-v1' XROAD_CRIMINAL_RECORD_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/Sakaskra-v1' - XROAD_DIGITAL_TACHOGRAPH_DRIVERS_CARD_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Okuritar-V1' - XROAD_DIRECTORATE_OF_IMMIGRATION_PATH: 'IS-DEV/GOV/10011/UTL-Protected/Utl-Umsokn-v1' + XROAD_DIGITAL_TACHOGRAPH_DRIVERS_CARD_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Okuritar-V1' + XROAD_DIRECTORATE_OF_IMMIGRATION_PATH: 'IS-TEST/GOV/10011/UTL-Protected/Utl-Umsokn-v1' XROAD_DRIVING_LICENSE_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/RafraentOkuskirteini-v1' XROAD_DRIVING_LICENSE_V2_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/RafraentOkuskirteini-v2' XROAD_DRIVING_LICENSE_V4_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/Okuskirteini-v4' XROAD_DRIVING_LICENSE_V5_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/Okuskirteini-v5' - XROAD_ENERGY_FUNDS_PATH: 'IS-DEV/GOV/10021/FJS-Public/ElectricCarSubSidyService_v1' - XROAD_FINANCES_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeIsland' - XROAD_FINANCES_V2_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeServicesFJS_v2' + XROAD_ENERGY_FUNDS_PATH: 'IS-TEST/GOV/10021/FJS-Public/ElectricCarSubSidyService_v1' + XROAD_FINANCES_PATH: 'IS-TEST/GOV/10021/FJS-Public/financeIsland' + XROAD_FINANCES_V2_PATH: 'IS-TEST/GOV/10021/FJS-Public/financeServicesFJS_v2' XROAD_FINANCIAL_AID_BACKEND_PATH: 'IS-TEST/MUN/5502694739/samband-sveitarfelaga/financial-aid-backend' - XROAD_HEALTH_DIRECTORATE_PATH: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir' + XROAD_HEALTH_DIRECTORATE_ORGAN_DONATION_PATH: 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/organ-donation-v1' + XROAD_HEALTH_DIRECTORATE_PATH: 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir' + XROAD_HEALTH_DIRECTORATE_VACCINATION_PATH: 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/vaccination-v1' XROAD_HEALTH_INSURANCE_ID: 'IS-TEST/GOV/4804080550/SJUKRA-Protected' XROAD_HEALTH_INSURANCE_MY_PAGES_PATH: 'IS-TEST/GOV/4804080550/SJUKRA-Protected/minarsidur' XROAD_HEALTH_INSURANCE_WSDLURL: 'https://test-huld.sjukra.is/islandrg?wsdl' XROAD_HMS_HOUSING_BENEFITS_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/husbot-v1' XROAD_HMS_LOANS_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/libra-v1' - XROAD_HOLAR_UNIVERSITY_PATH: 'IS-DEV/EDU/10055/Holar-Protected/brautskraning-v1' - XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-DEV/EDU/10049/LHI-Protected/brautskraning-v1' + XROAD_HOLAR_UNIVERSITY_PATH: 'IS-TEST/EDU/10055/Holar-Protected/brautskraning-v1' + XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-TEST/EDU/10049/LHI-Protected/brautskraning-v1' XROAD_INNA_PATH: 'IS-TEST/GOV/6601241280/MMS-Protected/inna-v1' - XROAD_MMS_FRIGG_PATH: 'IS-DEV/GOV/10066/MMS-Protected/frigg-api' + XROAD_MMS_FRIGG_PATH: 'IS-TEST/GOV/10066/MMS-Protected/frigg-form-service' XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-TEST/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' - XROAD_OFFICIAL_JOURNAL_APPLICATION_PATH: 'IS-DEV/GOV/10014/DMR-Protected/official-journal-application' - XROAD_OFFICIAL_JOURNAL_PATH: 'IS-DEV/GOV/10014/DMR-Protected/official-journal' + XROAD_OFFICIAL_JOURNAL_APPLICATION_PATH: 'IS-TEST/GOV/10014/DMR-Protected/official-journal-application' + XROAD_OFFICIAL_JOURNAL_PATH: 'IS-TEST/GOV/10014/DMR-Protected/official-journal' XROAD_PASSPORT_LICENSE_PATH: 'IS-TEST/GOV/6503760649/SKRA-Cloud-Protected/Forskraning-V1' XROAD_PAYMENT_ADDITION_CALLBACK_URL: '/' XROAD_PAYMENT_BASE_CALLBACK_URL: 'XROAD:' XROAD_PAYMENT_PROVIDER_ID: 'IS-TEST/GOV/10021/FJS-DEV-Public' - XROAD_PAYMENT_SCHEDULE_PATH: 'IS-DEV/GOV/10021/FJS-Public/paymentSchedule_v1' + XROAD_PAYMENT_SCHEDULE_PATH: 'IS-TEST/GOV/10021/FJS-Public/paymentSchedule_v1' XROAD_PROPERTIES_SERVICE_V2_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/Fasteignir-v1' XROAD_SIGNATURE_COLLECTION_PATH: 'IS-TEST/GOV/6503760649/SKRA-Cloud-Protected/Medmaeli-v1' XROAD_TJODSKRA_API_PATH: '/SKRA-Protected/Einstaklingar-v1' @@ -657,18 +663,18 @@ application-system-api: XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' XROAD_TR_PATH: 'IS-TEST/GOV/5012130120/TR-Protected/external-v1' - XROAD_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-DEV/EDU/10054/UNAK-Protected/brautskraning-v1' - XROAD_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10010/HI-Protected/brautskraning-v1' + XROAD_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-TEST/EDU/10054/UNAK-Protected/brautskraning-v1' + XROAD_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10010/HI-Protected/brautskraning-v1' XROAD_VEHICLES_MILEAGE_PATH: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-Mileagereading-V1' XROAD_VEHICLES_PATH: 'IS/GOV/5405131040/Samgongustofa-Protected/Mitt-Svaedi-V1' - XROAD_VEHICLE_CODETABLES_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Codetables-V1' - XROAD_VEHICLE_INFOLOCKS_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Infolocks-V1' - XROAD_VEHICLE_OPERATORS_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Operators-V3' - XROAD_VEHICLE_OWNER_CHANGE_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Ownerchange-V2' - XROAD_VEHICLE_PLATE_ORDERING_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOrdering-V1' - XROAD_VEHICLE_PLATE_RENEWAL_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOwnership-V1' - XROAD_VEHICLE_PRINTING_PATH: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Printing-V1' - XROAD_VEHICLE_SERVICE_FJS_V1_PATH: 'IS-DEV/GOV/10021/FJS-Public/VehicleServiceFJS_v1' + XROAD_VEHICLE_CODETABLES_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Codetables-V1' + XROAD_VEHICLE_INFOLOCKS_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Infolocks-V1' + XROAD_VEHICLE_OPERATORS_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Operators-V3' + XROAD_VEHICLE_OWNER_CHANGE_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Ownerchange-V2' + XROAD_VEHICLE_PLATE_ORDERING_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOrdering-V1' + XROAD_VEHICLE_PLATE_RENEWAL_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOwnership-V1' + XROAD_VEHICLE_PRINTING_PATH: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Printing-V1' + XROAD_VEHICLE_SERVICE_FJS_V1_PATH: 'IS-TEST/GOV/10021/FJS-Public/VehicleServiceFJS_v1' XROAD_VMST_API_PATH: '/VMST-ParentalLeave-Protected/ParentalLeaveApplication-v1' XROAD_VMST_MEMBER_CODE: '7005942039' XROAD_WORK_MACHINE_LICENSE_PATH: 'IS-TEST/GOV/4201810439/Vinnueftirlitid-Protected/vinnuvelar-token' @@ -829,7 +835,7 @@ application-system-api-worker: SERVERSIDE_FEATURES_ON: '' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' - XROAD_CHARGE_FJS_V2_PATH: 'IS-DEV/GOV/10021/FJS-Public/chargeFJS_v2' + XROAD_CHARGE_FJS_V2_PATH: 'IS-TEST/GOV/10021/FJS-Public/chargeFJS_v2' XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' XROAD_INNA_PATH: 'IS-TEST/GOV/6601241280/MMS-Protected/inna-v1' XROAD_PAYMENT_ADDITION_CALLBACK_URL: '/' @@ -876,7 +882,7 @@ application-system-api-worker: cpu: '400m' memory: '768Mi' requests: - cpu: '100m' + cpu: '150m' memory: '384Mi' schedule: '*/30 * * * *' secrets: @@ -942,7 +948,6 @@ application-system-form: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/proxy-buffer-size: '8k' nginx.ingress.kubernetes.io/proxy-buffering: 'on' nginx.ingress.kubernetes.io/service-upstream: 'true' @@ -1010,7 +1015,6 @@ consultation-portal: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/proxy-buffer-size: '8k' nginx.ingress.kubernetes.io/proxy-buffering: 'on' nginx.ingress.kubernetes.io/service-upstream: 'true' @@ -1050,28 +1054,28 @@ download-service: NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' REGULATIONS_ADMIN_URL: 'http://web-regulations-admin-backend.regulations-admin.svc.cluster.local' SERVERSIDE_FEATURES_ON: '' - XROAD_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10056/LBHI-Protected/brautskraning-v1' + XROAD_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10056/LBHI-Protected/brautskraning-v1' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' - XROAD_BIFROST_UNIVERSITY_PATH: 'IS-DEV/EDU/10057/Bifrost-Protected/brautskraning-v1' + XROAD_BIFROST_UNIVERSITY_PATH: 'IS-TEST/EDU/10057/Bifrost-Protected/brautskraning-v1' XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' - XROAD_DISTRICT_COMMISSIONERS_LICENSES_PATH: 'IS-DEV/GOV/10016/Syslumenn-Protected/RettindiIslandis' - XROAD_DISTRICT_COMMISSIONERS_P_CARD_PATH: 'IS-DEV/GOV/10016/Syslumenn-Protected/IslandMinarSidur' - XROAD_FINANCES_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeIsland' - XROAD_FINANCES_V2_PATH: 'IS-DEV/GOV/10021/FJS-Public/financeServicesFJS_v2' + XROAD_DISTRICT_COMMISSIONERS_LICENSES_PATH: 'IS-TEST/GOV/10016/Syslumenn-Protected/RettindiIslandis' + XROAD_DISTRICT_COMMISSIONERS_P_CARD_PATH: 'IS-TEST/GOV/10016/Syslumenn-Protected/IslandMinarSidur' + XROAD_FINANCES_PATH: 'IS-TEST/GOV/10021/FJS-Public/financeIsland' + XROAD_FINANCES_V2_PATH: 'IS-TEST/GOV/10021/FJS-Public/financeServicesFJS_v2' XROAD_HEALTH_INSURANCE_ID: 'IS-TEST/GOV/4804080550/SJUKRA-Protected' XROAD_HEALTH_INSURANCE_MY_PAGES_PATH: 'IS-TEST/GOV/4804080550/SJUKRA-Protected/minarsidur' XROAD_HEALTH_INSURANCE_WSDLURL: 'https://test-huld.sjukra.is/islandrg?wsdl' XROAD_HMS_HOUSING_BENEFITS_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/husbot-v1' XROAD_HMS_LOANS_PATH: 'IS-TEST/GOV/5812191480/HMS-Protected/libra-v1' - XROAD_HOLAR_UNIVERSITY_PATH: 'IS-DEV/EDU/10055/Holar-Protected/brautskraning-v1' - XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-DEV/EDU/10049/LHI-Protected/brautskraning-v1' + XROAD_HOLAR_UNIVERSITY_PATH: 'IS-TEST/EDU/10055/Holar-Protected/brautskraning-v1' + XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-TEST/EDU/10049/LHI-Protected/brautskraning-v1' XROAD_MMS_GRADE_SERVICE_ID: 'IS-TEST/GOV/6601241280/MMS-Protected/grade-api-v1' XROAD_MMS_LICENSE_SERVICE_ID: 'IS-TEST/GOV/6601241280/MMS-Protected/license-api-v1' XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' - XROAD_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-DEV/EDU/10054/UNAK-Protected/brautskraning-v1' - XROAD_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10010/HI-Protected/brautskraning-v1' + XROAD_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-TEST/EDU/10054/UNAK-Protected/brautskraning-v1' + XROAD_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10010/HI-Protected/brautskraning-v1' XROAD_VEHICLES_PATH: 'IS/GOV/5405131040/Samgongustofa-Protected/Mitt-Svaedi-V1' XROAD_WORK_MACHINE_LICENSE_PATH: 'IS-TEST/GOV/4201810439/Vinnueftirlitid-Protected/vinnuvelar-token' grantNamespaces: @@ -1101,7 +1105,6 @@ download-service: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'api.staging01.devland.is' @@ -1156,6 +1159,7 @@ endorsement-system-api: EMAIL_FROM_ADDRESS: 'development@island.is' EMAIL_FROM_NAME: 'devland.is' EMAIL_REGION: 'eu-west-1' + ENDORSEMENT_SYSTEM_EXPORTS_BUCKET_NAME: 'island-is-staging-exports-endorsement-system' IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/endorsement' IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.staging01.devland.is' LOG_LEVEL: 'info' @@ -1250,117 +1254,6 @@ endorsement-system-api: eks.amazonaws.com/role-arn: 'arn:aws:iam::261174024191:role/endorsement-system-api' create: true name: 'endorsement-system-api' -endorsement-system-api-cleanup-worker: - args: - - '--no-experimental-fetch' - - 'main.js' - - '--job=cleanup' - command: - - 'node' - enabled: true - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_endorsements_api' - DB_REPLICAS_HOST: 'postgres-applications.internal' - DB_USER: 'services_endorsements_api' - EMAIL_FROM_ADDRESS: 'development@island.is' - EMAIL_FROM_NAME: 'devland.is' - EMAIL_REGION: 'eu-west-1' - IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/endorsement' - IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.staging01.devland.is' - LOG_LEVEL: 'info' - NATIONAL_REGISTRY_B2C_CLIENT_ID: 'ca128c23-b43c-443d-bade-ec5a146a933f' - NATIONAL_REGISTRY_B2C_ENDPOINT: 'https://skraidentitydev.b2clogin.com/skraidentitystaging.onmicrosoft.com/b2c_1_midlun_flow/oauth2/v2.0/token' - NATIONAL_REGISTRY_B2C_PATH: 'IS-TEST/GOV/6503760649/SKRA-Cloud-Protected/Midlun-v1' - NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentitystaging.onmicrosoft.com/midlun/.default' - NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' - SERVERSIDE_FEATURES_ON: '' - XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' - XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' - XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' - XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' - XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-TEST/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_API_PATH: '/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_MEMBER_CODE: '6503760649' - XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' - XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' - grantNamespaces: - - 'islandis' - - 'application-system' - grantNamespacesEnabled: true - healthCheck: - liveness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - readiness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - hpa: - scaling: - metric: - cpuAverageUtilization: 90 - nginxRequestsIrate: 5 - replicas: - max: 3 - min: 1 - image: - repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-endorsements-api' - initContainer: - containers: - - args: - - 'sequelize-cli' - - 'db:migrate' - command: - - 'npx' - name: 'migrations' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_endorsements_api' - DB_REPLICAS_HOST: 'postgres-applications.internal' - DB_USER: 'services_endorsements_api' - SERVERSIDE_FEATURES_ON: '' - secrets: - DB_PASS: '/k8s/services-endorsements-api/DB_PASSWORD' - namespace: 'endorsement-system' - podDisruptionBudget: - maxUnavailable: 1 - podSecurityContext: - fsGroup: 65534 - pvcs: [] - replicaCount: - default: 1 - max: 3 - min: 1 - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '100m' - memory: '128Mi' - schedule: '@hourly' - secrets: - CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' - DB_PASS: '/k8s/services-endorsements-api/DB_PASSWORD' - IDENTITY_SERVER_CLIENT_SECRET: '/k8s/endorsement-system-api/IDS-shared-secret' - NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET' - securityContext: - allowPrivilegeEscalation: false - privileged: false - serviceAccount: - annotations: - eks.amazonaws.com/role-arn: 'arn:aws:iam::261174024191:role/endorsement-system-api-cleanup-worker' - create: true - name: 'endorsement-system-api-cleanup-worker' global: env: AUDIT_GROUP_NAME: '/island-is/audit-log' @@ -1494,7 +1387,6 @@ island-ui-storybook: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'ui.staging01.devland.is' @@ -1538,7 +1430,7 @@ license-api: XROAD_DRIVING_LICENSE_V4_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/Okuskirteini-v4' XROAD_DRIVING_LICENSE_V5_PATH: 'r1/IS/GOV/5309672079/Logreglan-Protected/Okuskirteini-v5' XROAD_FIREARM_LICENSE_PATH: 'IS/GOV/5309672079/Logreglan-Protected/island-api-v1' - XROAD_HUNTING_LICENSE_PATH: 'IS-DEV/GOV/10009/Umhverfisstofnun-Protected/api' + XROAD_HUNTING_LICENSE_PATH: 'IS-TEST/GOV/10009/Umhverfisstofnun-Protected/api' XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' grantNamespaces: @@ -1567,7 +1459,6 @@ license-api: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-internal-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/service-upstream: 'true' hosts: - host: 'license-api-xrd.internal.staging01.devland.is' @@ -1586,7 +1477,7 @@ license-api: cpu: '400m' memory: '512Mi' requests: - cpu: '15m' + cpu: '50m' memory: '256Mi' secrets: ADR_LICENSE_PASS_TEMPLATE_ID: '/k8s/api/ADR_LICENSE_PASS_TEMPLATE_ID' @@ -1635,7 +1526,6 @@ namespaces: - 'regulations-admin' - 'user-notification' - 'license-api' - - 'services-form-system' - 'services-sessions' - 'services-university-gateway' portals-admin: @@ -1662,7 +1552,7 @@ portals-admin: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: max: 30 min: 2 @@ -1672,7 +1562,6 @@ portals-admin: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/proxy-buffer-size: '8k' nginx.ingress.kubernetes.io/proxy-buffering: 'on' nginx.ingress.kubernetes.io/service-upstream: 'true' @@ -1693,7 +1582,7 @@ portals-admin: cpu: '400m' memory: '512Mi' requests: - cpu: '200m' + cpu: '25m' memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' @@ -1714,15 +1603,15 @@ regulations-admin-backend: IDENTITY_SERVER_CLIENT_ID: '@island.is/clients/regulations-admin-api' IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.staging01.devland.is' LOG_LEVEL: 'info' + NATIONAL_REGISTRY_B2C_CLIENT_ID: 'ca128c23-b43c-443d-bade-ec5a146a933f' + NATIONAL_REGISTRY_B2C_ENDPOINT: 'https://skraidentitydev.b2clogin.com/skraidentitystaging.onmicrosoft.com/b2c_1_midlun_flow/oauth2/v2.0/token' + NATIONAL_REGISTRY_B2C_PATH: 'IS-TEST/GOV/6503760649/SKRA-Cloud-Protected/Midlun-v1' + NATIONAL_REGISTRY_B2C_SCOPE: 'https://skraidentitystaging.onmicrosoft.com/midlun/.default' NODE_OPTIONS: '--max-old-space-size=460 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' XROAD_BASE_PATH: 'http://securityserver.staging01.devland.is' XROAD_BASE_PATH_WITH_ENV: 'http://securityserver.staging01.devland.is/r1/IS-TEST' XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' - XROAD_NATIONAL_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' - XROAD_NATIONAL_REGISTRY_SERVICE_PATH: 'IS-TEST/GOV/6503760649/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_API_PATH: '/SKRA-Protected/Einstaklingar-v1' - XROAD_TJODSKRA_MEMBER_CODE: '6503760649' XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' grantNamespaces: @@ -1790,6 +1679,7 @@ regulations-admin-backend: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' DB_PASS: '/k8s/regulations-admin-backend/DB_PASSWORD' IDENTITY_SERVER_CLIENT_SECRET: '/k8s/services-regulations-admin/IDENTITY_SERVER_CLIENT_SECRET' + NATIONAL_REGISTRY_B2C_CLIENT_SECRET: '/k8s/api/NATIONAL_REGISTRY_B2C_CLIENT_SECRET' REGULATIONS_API_URL: '/k8s/api/REGULATIONS_API_URL' REGULATIONS_FILE_UPLOAD_KEY_DRAFT: '/k8s/api/REGULATIONS_FILE_UPLOAD_KEY_DRAFT' REGULATIONS_FILE_UPLOAD_KEY_PRESIGNED: '/k8s/api/REGULATIONS_FILE_UPLOAD_KEY_PRESIGNED' @@ -1970,7 +1860,6 @@ service-portal: primary-alb: annotations: kubernetes.io/ingress.class: 'nginx-external-alb' - nginx.ingress.kubernetes.io/enable-global-auth: 'false' nginx.ingress.kubernetes.io/proxy-buffer-size: '8k' nginx.ingress.kubernetes.io/proxy-buffering: 'on' nginx.ingress.kubernetes.io/service-upstream: 'true' @@ -2102,7 +1991,7 @@ service-portal-api: cpu: '800m' memory: '1024Mi' requests: - cpu: '400m' + cpu: '100m' memory: '512Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' @@ -2205,96 +2094,6 @@ services-documents: securityContext: allowPrivilegeEscalation: false privileged: false -services-form-system: - enabled: true - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_form_system' - DB_REPLICAS_HOST: 'postgres-applications.internal' - DB_USER: 'services_form_system' - IDENTITY_SERVER_ISSUER_URL: 'https://identity-server.staging01.devland.is' - LOG_LEVEL: 'info' - NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' - SERVERSIDE_FEATURES_ON: '' - grantNamespaces: - - 'islandis' - grantNamespacesEnabled: true - healthCheck: - liveness: - initialDelaySeconds: 3 - path: '/liveness' - timeoutSeconds: 3 - readiness: - initialDelaySeconds: 3 - path: '/readiness' - timeoutSeconds: 3 - hpa: - scaling: - metric: - cpuAverageUtilization: 90 - nginxRequestsIrate: 5 - replicas: - max: 3 - min: 1 - image: - repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/services-form-system' - initContainer: - containers: - - args: - - 'sequelize-cli' - - 'db:migrate' - command: - - 'npx' - name: 'migrations' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - - args: - - 'sequelize-cli' - - 'db:seed:all' - command: - - 'npx' - name: 'seed' - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '50m' - memory: '128Mi' - env: - DB_HOST: 'postgres-applications.internal' - DB_NAME: 'services_form_system' - DB_REPLICAS_HOST: 'postgres-applications.internal' - DB_USER: 'services_form_system' - SERVERSIDE_FEATURES_ON: '' - secrets: - DB_PASS: '/k8s/services-form-system/DB_PASSWORD' - namespace: 'services-form-system' - podDisruptionBudget: - maxUnavailable: 1 - pvcs: [] - replicaCount: - default: 1 - max: 3 - min: 1 - resources: - limits: - cpu: '200m' - memory: '256Mi' - requests: - cpu: '100m' - memory: '128Mi' - secrets: - CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' - DB_PASS: '/k8s/services-form-system/DB_PASSWORD' - securityContext: - allowPrivilegeEscalation: false - privileged: false services-sessions: enabled: true env: @@ -2540,13 +2339,13 @@ services-university-gateway: XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' - XROAD_UNIVERSITY_GATEWAY_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10056/LBHI-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_BIFROST_UNIVERSITY_PATH: 'IS-DEV/EDU/10057/Bifrost-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_HOLAR_UNIVERSITY_PATH: 'IS-DEV/EDU/10055/Holar-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-DEV/EDU/10049/LHI-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10056/LBHI-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_BIFROST_UNIVERSITY_PATH: 'IS-TEST/EDU/10057/Bifrost-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_HOLAR_UNIVERSITY_PATH: 'IS-TEST/EDU/10055/Holar-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-TEST/EDU/10049/LHI-Protected/umsoknir-v1' XROAD_UNIVERSITY_GATEWAY_REYKJAVIK_UNIVERSITY_PATH: 'IS-TEST/EDU/5101054190/RvkUni-Hvin-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-DEV/EDU/10054/UNAK-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10010/HI-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-TEST/EDU/10054/UNAK-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10010/HI-Protected/umsoknir-v1' grantNamespaces: - 'islandis' - 'nginx-ingress-internal' @@ -2669,13 +2468,13 @@ services-university-gateway-worker: XROAD_CLIENT_ID: 'IS-TEST/GOV/5501692829/island-is-client' XROAD_TLS_BASE_PATH: 'https://securityserver.staging01.devland.is' XROAD_TLS_BASE_PATH_WITH_ENV: 'https://securityserver.staging01.devland.is/r1/IS-TEST' - XROAD_UNIVERSITY_GATEWAY_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10056/LBHI-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_BIFROST_UNIVERSITY_PATH: 'IS-DEV/EDU/10057/Bifrost-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_HOLAR_UNIVERSITY_PATH: 'IS-DEV/EDU/10055/Holar-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-DEV/EDU/10049/LHI-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10056/LBHI-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_BIFROST_UNIVERSITY_PATH: 'IS-TEST/EDU/10057/Bifrost-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_HOLAR_UNIVERSITY_PATH: 'IS-TEST/EDU/10055/Holar-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: 'IS-TEST/EDU/10049/LHI-Protected/umsoknir-v1' XROAD_UNIVERSITY_GATEWAY_REYKJAVIK_UNIVERSITY_PATH: 'IS-TEST/EDU/5101054190/RvkUni-Hvin-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-DEV/EDU/10054/UNAK-Protected/umsoknir-v1' - XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_ICELAND_PATH: 'IS-DEV/EDU/10010/HI-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_AKUREYRI_PATH: 'IS-TEST/EDU/10054/UNAK-Protected/umsoknir-v1' + XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_ICELAND_PATH: 'IS-TEST/EDU/10010/HI-Protected/umsoknir-v1' grantNamespaces: - 'islandis' - 'nginx-ingress-internal' @@ -2754,10 +2553,10 @@ skilavottord-web: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: - max: 3 - min: 1 + max: 10 + min: 2 image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/skilavottord-web' ingress: @@ -2776,9 +2575,9 @@ skilavottord-web: maxUnavailable: 1 pvcs: [] replicaCount: - default: 1 - max: 3 - min: 1 + default: 2 + max: 10 + min: 2 resources: limits: cpu: '200m' @@ -2903,6 +2702,8 @@ user-notification: env: AUTH_DELEGATION_API_URL: 'http://web-services-auth-delegation-api.identity-server-delegation.svc.cluster.local' AUTH_DELEGATION_MACHINE_CLIENT_SCOPE: '["@island.is/auth/delegations/index:system"]' + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS-TEST/GOV/5402696029/Skatturinn/ft-v1' DB_HOST: 'postgres-applications.internal' DB_NAME: 'user_notification' DB_REPLICAS_HOST: 'postgres-applications.internal' @@ -3098,6 +2899,8 @@ user-notification-worker: env: AUTH_DELEGATION_API_URL: 'http://web-services-auth-delegation-api.identity-server-delegation.svc.cluster.local' AUTH_DELEGATION_MACHINE_CLIENT_SCOPE: '["@island.is/auth/delegations/index:system"]' + COMPANY_REGISTRY_REDIS_NODES: '["clustercfg.general-redis-cluster-group.ab9ckb.euw1.cache.amazonaws.com:6379"]' + COMPANY_REGISTRY_XROAD_PROVIDER_ID: 'IS-TEST/GOV/5402696029/Skatturinn/ft-v1' CONTENTFUL_HOST: 'cdn.contentful.com' DB_HOST: 'postgres-applications.internal' DB_NAME: 'user_notification' @@ -3264,10 +3067,10 @@ web: min: 2 resources: limits: - cpu: '400m' + cpu: '1000m' memory: '768Mi' requests: - cpu: '200m' + cpu: '300m' memory: '384Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' diff --git a/charts/judicial-system/values.dev.yaml b/charts/judicial-system/values.dev.yaml index 35c9973d2181..b87ac2b9294f 100644 --- a/charts/judicial-system/values.dev.yaml +++ b/charts/judicial-system/values.dev.yaml @@ -50,10 +50,10 @@ judicial-system-api: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: - max: 3 - min: 1 + max: 10 + min: 2 image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/judicial-system-api' ingress: @@ -77,9 +77,9 @@ judicial-system-api: fsGroup: 65534 pvcs: [] replicaCount: - default: 1 - max: 3 - min: 1 + default: 2 + max: 10 + min: 2 resources: limits: cpu: '350m' @@ -458,6 +458,9 @@ judicial-system-scheduler: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' + SQS_DEAD_LETTER_QUEUE_NAME: 'sqs-judicial-system-dlq' + SQS_QUEUE_NAME: 'sqs-judicial-system' + SQS_REGION: 'eu-west-1' TIME_TO_LIVE_MINUTES: '30' grantNamespaces: - 'nginx-ingress-external' diff --git a/charts/judicial-system/values.prod.yaml b/charts/judicial-system/values.prod.yaml index d03328f0a3a7..d3be1b7bf186 100644 --- a/charts/judicial-system/values.prod.yaml +++ b/charts/judicial-system/values.prod.yaml @@ -50,10 +50,10 @@ judicial-system-api: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: max: 10 - min: 3 + min: 2 image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/judicial-system-api' ingress: @@ -77,9 +77,9 @@ judicial-system-api: fsGroup: 65534 pvcs: [] replicaCount: - default: 3 + default: 2 max: 10 - min: 3 + min: 2 resources: limits: cpu: '350m' @@ -105,7 +105,7 @@ judicial-system-api: judicial-system-backend: enabled: true env: - BLOCKED_API_INTEGRATION: '' + BLOCKED_API_INTEGRATION: 'CREATE_SUBPOENA' CLIENT_URL: 'https://rettarvorslugatt.island.is' CONTENTFUL_ENVIRONMENT: 'master' CONTENTFUL_HOST: 'cdn.contentful.com' @@ -458,6 +458,9 @@ judicial-system-scheduler: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' SERVERSIDE_FEATURES_ON: 'driving-license-use-v1-endpoint-for-v2-comms' + SQS_DEAD_LETTER_QUEUE_NAME: 'sqs-judicial-system-dlq' + SQS_QUEUE_NAME: 'sqs-judicial-system' + SQS_REGION: 'eu-west-1' TIME_TO_LIVE_MINUTES: '30' grantNamespaces: - 'nginx-ingress-external' diff --git a/charts/judicial-system/values.staging.yaml b/charts/judicial-system/values.staging.yaml index a66838b94238..f1d95d925ca3 100644 --- a/charts/judicial-system/values.staging.yaml +++ b/charts/judicial-system/values.staging.yaml @@ -50,10 +50,10 @@ judicial-system-api: scaling: metric: cpuAverageUtilization: 90 - nginxRequestsIrate: 5 + nginxRequestsIrate: 8 replicas: - max: 3 - min: 1 + max: 10 + min: 2 image: repository: '821090935708.dkr.ecr.eu-west-1.amazonaws.com/judicial-system-api' ingress: @@ -77,9 +77,9 @@ judicial-system-api: fsGroup: 65534 pvcs: [] replicaCount: - default: 1 - max: 3 - min: 1 + default: 2 + max: 10 + min: 2 resources: limits: cpu: '350m' @@ -105,7 +105,7 @@ judicial-system-api: judicial-system-backend: enabled: true env: - BLOCKED_API_INTEGRATION: 'COURT,POLICE_CASE' + BLOCKED_API_INTEGRATION: 'COURT,POLICE_CASE,CREATE_SUBPOENA' CLIENT_URL: 'https://judicial-system.staging01.devland.is' CONTENTFUL_ENVIRONMENT: 'test' CONTENTFUL_HOST: 'cdn.contentful.com' @@ -458,6 +458,9 @@ judicial-system-scheduler: LOG_LEVEL: 'info' NODE_OPTIONS: '--max-old-space-size=230 -r dd-trace/init' SERVERSIDE_FEATURES_ON: '' + SQS_DEAD_LETTER_QUEUE_NAME: 'sqs-judicial-system-dlq' + SQS_QUEUE_NAME: 'sqs-judicial-system' + SQS_REGION: 'eu-west-1' TIME_TO_LIVE_MINUTES: '30' grantNamespaces: - 'nginx-ingress-external' diff --git a/codemagic.yaml b/codemagic.yaml index ed5028e2221f..a0840a6144b2 100644 --- a/codemagic.yaml +++ b/codemagic.yaml @@ -17,6 +17,7 @@ definitions: shared_envs: &shared_envs XCODE_WORKSPACE: 'IslandApp.xcworkspace' CM_CLONE_DEPTH: 200 + NODE_OPTIONS: '--max-old-space-size=8192' scripts: - &check_changes name: Check changes since last build @@ -94,6 +95,13 @@ definitions: google_play: credentials: $GCLOUD_SERVICE_ACCOUNT_CREDENTIALS track: internal + slack_errors: &slack_errors + slack: + channel: '#team-app-builds' + notify: + # don't want to spam slack with 4 successful builds. Overridden in dev-app-ios. + success: false + failure: true workflows: prod-app-ios: @@ -131,6 +139,7 @@ workflows: - $HOME/Library/Developer/Xcode/DerivedData/**/Build/**/*.dSYM publishing: <<: *ios_publishing + <<: *slack_errors dev-app-ios: <<: *base @@ -160,10 +169,10 @@ workflows: publishing: <<: *ios_publishing slack: - channel: '#codemagic-test' + channel: '#team-app-builds' notify: success: true - failure: false + failure: true prod-app-android: <<: *base @@ -194,7 +203,9 @@ workflows: - *build_android artifacts: &android_artifacts - android/app/build/outputs/**/*.aab - publishing: *android_publishing + publishing: + <<: *android_publishing + <<: *slack_errors dev-app-android: <<: *base @@ -220,4 +231,6 @@ workflows: - *codegen - *build_android artifacts: *android_artifacts - publishing: *android_publishing + publishing: + <<: *android_publishing + <<: *slack_errors diff --git a/infra/README.md b/infra/README.md new file mode 100644 index 000000000000..4456476bd408 --- /dev/null +++ b/infra/README.md @@ -0,0 +1,60 @@ +# CLI Tool Documentation + +This CLI tool simplifies the management and setup of local environments for development. It provides commands to render environment variables, secrets, and URLs that are essential for configuring services during development. + +## Key Features + +- **Environment Setup**: Easily render environment variables and secrets needed for your services in various environments. +- **Ingress URL Management**: Generate and render ingress URLs for your services. +- **Service Configuration**: Ensure all necessary secrets and environment variables are loaded to correctly configure services. + +### Available Commands + +While the CLI offers various commands, one of the most powerful and useful for developers is the `run-local-env` command. This command allows developers to render the required environment and start a local development environment with the necessary configuration. + +Here is a summary of all available commands in the CLI: + +```text +yarn cli <command> + +Commands: + yarn cli render-env Render a chart for environment + yarn cli render-urls Render urls from ingress for environment + yarn cli render-secrets Render secrets secrets needed by service + yarn cli render-env-vars Render environment variables needed by service. + This is to be used when developing locally and + loading of the environment variables for "dev" + environment is needed. + yarn cli render-local-env Render environment variables needed by service. + This is to be used when developing locally and + loading of the environment variables for "dev" + environment is needed. + yarn cli run-local-env Render environment and run the local environment. + This is to be used when developing locally and + loading of the environment variables for "dev" + environment is needed. + +Options: + --help Show help [boolean] + --version Show version number [boolean] +``` + +### `run-local-env` Command + +The `run-local-env` command is a key tool for developers working in local environments. It not only renders the required environment variables but also runs the local environment, managing service dependencies and configurations. + +#### Example Usage + +```bash +yarn cli run-local-env <services> [options] +``` + +This command automates the configuration setup, ensuring that the correct environment variables and dependencies are loaded for your local development environment. + +#### Common Options for `run-local-env` + +- `--dependencies`: Specify dependencies to load. +- `--json`: Output results in JSON format. +- `--dry`: Run a dry preview without applying changes. +- `--no-secrets`: Skip updating secrets. +- `--proxies`: Enable proxies if required for local development. diff --git a/infra/package.json b/infra/package.json index 1342647c11bc..db86f28487b8 100644 --- a/infra/package.json +++ b/infra/package.json @@ -31,7 +31,7 @@ "glob": "10.3.3", "js-yaml": "4.0.0", "lodash": "4.17.21", - "yargs": "17.2.1" + "yargs": "17.7.2" }, "volta": { "node": "18.12.1" diff --git a/infra/scripts/build-docker-container.sh b/infra/scripts/build-docker-container.sh index 60ab6f876241..460fb419fd26 100755 --- a/infra/scripts/build-docker-container.sh +++ b/infra/scripts/build-docker-container.sh @@ -1,6 +1,6 @@ #!/bin/bash set -euo pipefail -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" DOCKER_REGISTRY=${DOCKER_REGISTRY:-821090935708.dkr.ecr.eu-west-1.amazonaws.com/} PUBLISH=${PUBLISH:-false} @@ -10,6 +10,6 @@ DOCKER_TAG=$1 # shellcheck disable=SC2086 docker build -f "$DIR"/Dockerfile ${EXTRA_DOCKER_BUILD_ARGS:-} -t "$DOCKER_IMAGE":"${DOCKER_TAG}" "$DIR"/../.. -if [[ "true" = "$PUBLISH" ]] ; then - docker push "$DOCKER_IMAGE":"${DOCKER_TAG}" +if [[ "true" = "$PUBLISH" ]]; then + docker push "$DOCKER_IMAGE":"${DOCKER_TAG}" fi diff --git a/infra/scripts/ci/diff-chart-values-all-charts.sh b/infra/scripts/ci/diff-chart-values-all-charts.sh index 992655ad4019..b38d583f238e 100755 --- a/infra/scripts/ci/diff-chart-values-all-charts.sh +++ b/infra/scripts/ci/diff-chart-values-all-charts.sh @@ -2,9 +2,12 @@ ### Use for local testing - this will run tests for all the charts sequentially set -euxo pipefail -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" ROOT=$DIR/../../.. -for chart in $(cd "$ROOT" ; python -c 'import os, json; print(" ".join([os.path.splitext(f)[0] for f in os.listdir("infra/src/uber-charts/")]))'); do - "$DIR"/diff-chart-values.sh "$chart" -done \ No newline at end of file +for chart in $( + cd "$ROOT" + python -c 'import os, json; print(" ".join([os.path.splitext(f)[0] for f in os.listdir("infra/src/uber-charts/")]))' +); do + "$DIR"/diff-chart-values.sh "$chart" +done diff --git a/infra/scripts/ci/diff-chart-values.sh b/infra/scripts/ci/diff-chart-values.sh index 5748c8425308..4eb0e39d3e25 100755 --- a/infra/scripts/ci/diff-chart-values.sh +++ b/infra/scripts/ci/diff-chart-values.sh @@ -1,19 +1,19 @@ #!/bin/bash set -euxo pipefail -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" ROOT="$DIR/../.." export PATH=$ROOT/node_modules/.bin:$PATH case "$1" in - "islandis" | "judicial-system" | "air-discount-scheme" | 'identity-server') - ENVS=("dev" "staging" "prod") - cd "$ROOT" - for env in "${ENVS[@]}"; do - node -r esbuild-register "$ROOT"/src/cli/cli render-env --chart="$1" --env="${env}" | diff "$ROOT"/../charts/"$1"/values."${env}".yaml - - done - ;; - *) - echo "No diffing support for $1 yet or ever" - ;; +"islandis" | "judicial-system" | "air-discount-scheme" | 'identity-server') + ENVS=("dev" "staging" "prod") + cd "$ROOT" + for env in "${ENVS[@]}"; do + node -r esbuild-register "$ROOT"/src/cli/cli render-env --chart="$1" --env="${env}" | diff "$ROOT"/../charts/"$1"/values."${env}".yaml - + done + ;; +*) + echo "No diffing support for $1 yet or ever" + ;; esac diff --git a/infra/scripts/ci/git-check-dirty.sh b/infra/scripts/ci/git-check-dirty.sh index f15b15843022..8bbf2a5c2a9b 100755 --- a/infra/scripts/ci/git-check-dirty.sh +++ b/infra/scripts/ci/git-check-dirty.sh @@ -34,4 +34,3 @@ if [[ $(git diff --stat "$abs_path") != '' ]]; then else echo "found no unstaged files from $action, nothing to commit" fi - diff --git a/infra/scripts/ci/test-unit.sh b/infra/scripts/ci/test-unit.sh index 960e68957b07..9e2ed8fe9844 100755 --- a/infra/scripts/ci/test-unit.sh +++ b/infra/scripts/ci/test-unit.sh @@ -3,7 +3,10 @@ set -euxo pipefail # Run code tests -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" ROOT="$DIR/../.." -(cd "$ROOT"; "$ROOT"/node_modules/.bin/jest) +( + cd "$ROOT" + "$ROOT"/node_modules/.bin/jest +) diff --git a/infra/scripts/container-scripts/destroy-dbs.sh b/infra/scripts/container-scripts/destroy-dbs.sh index e410925d8155..c52d1b226a51 100755 --- a/infra/scripts/container-scripts/destroy-dbs.sh +++ b/infra/scripts/container-scripts/destroy-dbs.sh @@ -8,15 +8,14 @@ export PGPASSWORD set -x FEATURE_NAME=$1 - -psql -tc "SELECT datname FROM pg_database WHERE datname like 'feature_${FEATURE_NAME}_%'" --field-separator ' ' --no-align --quiet \ -| while read -r dbname; do +psql -tc "SELECT datname FROM pg_database WHERE datname like 'feature_${FEATURE_NAME}_%'" --field-separator ' ' --no-align --quiet | + while read -r dbname; do psql -c "DROP DATABASE $dbname" -done + done -psql -tc "SELECT rolname FROM pg_roles WHERE rolname like 'feature_${FEATURE_NAME}_%'" --field-separator ' ' --no-align --quiet \ -| while read -r rolname; do +psql -tc "SELECT rolname FROM pg_roles WHERE rolname like 'feature_${FEATURE_NAME}_%'" --field-separator ' ' --no-align --quiet | + while read -r rolname; do psql -c "DROP USER $rolname" -done + done node secrets delete /k8s/feature-"$FEATURE_NAME"- diff --git a/infra/scripts/format-yaml.sh b/infra/scripts/format-yaml.sh index 809cd91f36a3..b77cfe44af01 100755 --- a/infra/scripts/format-yaml.sh +++ b/infra/scripts/format-yaml.sh @@ -1,7 +1,7 @@ #!/bin/bash set -euxo pipefail -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" ROOT="$DIR/.." cd "$ROOT" diff --git a/infra/scripts/helm-diff.sh b/infra/scripts/helm-diff.sh index 94252e806779..e69d3e683800 100755 --- a/infra/scripts/helm-diff.sh +++ b/infra/scripts/helm-diff.sh @@ -1,30 +1,40 @@ #!/bin/bash +# Self-call with parameters +if [ $# -eq 0 ]; then + RELEASE_IDS="$(git branch -r --list 'origin/release/*' | cut -d '/' -f 3 | sort -nr | head -n 2 | sort)" + RELEASE_BRANCHES="$(echo "${RELEASE_IDS}" | awk '{print "release/"$1 }' | paste -s -d' ' -)" + echo "Release branches to diff: ${RELEASE_BRANCHES}" + # shellcheck disable=SC2086 + $0 ${RELEASE_BRANCHES} # No-quoting to get space-splitting + # ./infra/scripts/helm-diff.sh release/<last-release-version> release/<new-release-version> + exit $? +fi + # Requirements: # Install ydiff # - brew install ydiff # - pip install --upgrade ydiff # https://github.com/ymattw/ydiff -if ! command -v ydiff &> /dev/null -then - echo "Please install ydiff via pip or brew" - echo "https://github.com/ymattw/ydiff" - exit 1 +if ! command -v ydiff &>/dev/null; then + echo "Please install ydiff via pip or brew" + echo "https://github.com/ymattw/ydiff" + exit 1 fi if [ -z "${1}" ]; then - echo "Specify older commit/tag/branch" - exit 1 + echo "Specify older commit/tag/branch" + exit 1 fi if [ -z "${2}" ]; then - echo "Specify newer commit/tag/branch" - exit 1 + echo "Specify newer commit/tag/branch" + exit 1 fi +OLD_RELEASE_VALUES="$(mktemp -t "helm-diff.${1##*/}.XXXXXX")" +NEW_RELEASE_VALUES="$(mktemp -t "helm-diff.${2##*/}.XXXXXX")" # curl https://api.github.com/repos/island-is/island.is/contents/charts/islandis/values.prod.yaml | jq -r ".content" | base64 --decode -curl -s -H "Accept: application/json" 'https://api.github.com/repos/island-is/island.is/contents/charts/islandis/values.prod.yaml?ref='${1}'' | jq -r ".content" | base64 --decode > current-release.json -curl -s -H "Accept: application/json" 'https://api.github.com/repos/island-is/island.is/contents/charts/islandis/values.prod.yaml?ref='${2}'' | jq -r ".content" | base64 --decode > new-release.json -diff -u ./current-release.json ./new-release.json | ydiff -w 0 -s -rm -f ./new-release.json -rm -f ./current-release.json +curl -s -H "Accept: application/json" "https://api.github.com/repos/island-is/island.is/contents/charts/islandis/values.prod.yaml?ref=${1}" | jq -r ".content" | base64 --decode >"${OLD_RELEASE_VALUES}" +curl -s -H "Accept: application/json" "https://api.github.com/repos/island-is/island.is/contents/charts/islandis/values.prod.yaml?ref=${2}" | jq -r ".content" | base64 --decode >"${NEW_RELEASE_VALUES}" +diff -u "${OLD_RELEASE_VALUES}" "${NEW_RELEASE_VALUES}" | ydiff -w 0 -s diff --git a/infra/src/cli/cli.ts b/infra/src/cli/cli.ts index 546cfc242792..9be060943dbd 100644 --- a/infra/src/cli/cli.ts +++ b/infra/src/cli/cli.ts @@ -8,6 +8,7 @@ import { renderServiceEnvVars } from './render-env-vars' import { renderLocalServices, runLocalServices } from './render-local-mocks' const cli = yargs(process.argv.slice(2)) + .scriptName('yarn cli') .command( 'render-env', 'Render a chart for environment', @@ -57,10 +58,19 @@ const cli = yargs(process.argv.slice(2)) 'Render environment variables needed by service.\nThis is to be used when developing locally and loading of the environment variables for "dev" environment is needed.', (yargs) => { return yargs - .option('services', { demandOption: true, array: true, type: 'string' }) + .positional('services', { + type: 'string', + array: true, + demandOption: true, + }) .option('json', { type: 'boolean', default: false }) - .option('dry', { type: 'boolean', default: true }) - .option('no-update-secrets', { type: 'boolean', default: false }) + .option('dry', { type: 'boolean', default: false }) + .option('no-update-secrets', { + type: 'boolean', + default: false, + alias: ['nosecrets', 'no-secrets'], + }) + .demandCommand(1, 'You must pass at least one service to run!') }, async (argv) => { const services = await renderLocalServices({ @@ -75,29 +85,44 @@ const cli = yargs(process.argv.slice(2)) }, ) .command( - 'run-local-env', + 'run-local-env [services...]', 'Render environment and run the local environment.\nThis is to be used when developing locally and loading of the environment variables for "dev" environment is needed.', (yargs) => { - return yargs - .option('service', { array: true, type: 'string', demandOption: true }) - .option('dependencies', { array: true, type: 'string', default: [] }) - .option('json', { type: 'boolean', default: false }) - .option('dry', { type: 'boolean', default: false }) - .option('no-update-secrets', { - type: 'boolean', - default: false, - alias: ['nosecrets', 'no-secrets'], - }) - .option('print', { type: 'boolean', default: false }) - .option('proxies', { type: 'boolean', default: false }) - .option('never-fail', { - alias: 'nofail', - type: 'boolean', - default: false, - }) + return ( + yargs + .positional('services', { + type: 'string', + array: true, + demandOption: true, + }) + .option('dependencies', { array: true, type: 'string', default: [] }) + .option('json', { type: 'boolean', default: false }) + .option('dry', { type: 'boolean', default: false }) + .option('no-update-secrets', { + type: 'boolean', + default: false, + alias: ['nosecrets', 'no-secrets'], + }) + .option('print', { type: 'boolean', default: false }) + .option('proxies', { type: 'boolean', default: false }) + .option('never-fail', { + alias: 'nofail', + type: 'boolean', + default: false, + }) + // Custom check for 'services' since yargs lack built-in validation + .check((argv) => { + const svc = argv.services + if (svc.length < 1) { + throw new Error('You must pass at least one service to run!') + } else { + return true + } + }) + ) }, async (argv) => - await runLocalServices(argv.service, argv.dependencies, { + await runLocalServices(argv.services, argv.dependencies, { dryRun: argv.dry, json: argv.json, neverFail: argv['never-fail'], diff --git a/infra/src/dsl/dsl.ts b/infra/src/dsl/dsl.ts index 4ea9b97b439e..3317e32736e3 100644 --- a/infra/src/dsl/dsl.ts +++ b/infra/src/dsl/dsl.ts @@ -17,6 +17,7 @@ import { ServiceDefinition, XroadConfig, PodDisruptionBudget, + IngressMapping, } from './types/input-types' import { logger } from '../logging' import { COMMON_SECRETS } from './consts' @@ -461,7 +462,7 @@ export class ServiceBuilder<ServiceType extends string> { * You can allow ingress traffic (traffic from the internet) to your service by creating an ingress controller. Mapped to an [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress). * @param ingress - Ingress parameters */ - ingress(ingress: { [name: string]: Ingress }) { + ingress(ingress: IngressMapping) { this.serviceDef.ingress = ingress return this } diff --git a/infra/src/dsl/ingress.spec.ts b/infra/src/dsl/ingress.spec.ts index dc1eaed43b53..229a5a6fb953 100644 --- a/infra/src/dsl/ingress.spec.ts +++ b/infra/src/dsl/ingress.spec.ts @@ -27,7 +27,7 @@ describe('Ingress definitions', () => { host: { dev: 'a', staging: 'a', prod: 'a' }, paths: ['/api'], }, - secondary: { + internal: { host: { dev: 'b', staging: 'b', prod: 'b' }, paths: ['/'], }, @@ -47,7 +47,7 @@ describe('Ingress definitions', () => { }, hosts: [{ host: 'a.staging01.devland.is', paths: ['/api'] }], }, - 'secondary-alb': { + 'internal-alb': { annotations: { 'kubernetes.io/ingress.class': 'nginx-external-alb', 'nginx.ingress.kubernetes.io/service-upstream': 'true', @@ -97,7 +97,7 @@ describe('Ingress definitions', () => { }, paths: ['/api'], }, - secondary: { + internal: { host: { dev: MissingSetting, staging: MissingSetting, @@ -148,4 +148,73 @@ describe('Ingress definitions', () => { }, }) }) + it('No annotations is permitted', async () => { + const sut = service('api').ingress({ + primary: { + public: false, + host: { dev: 'a', staging: 'a', prod: 'a' }, + paths: ['/api'], + extraAnnotations: { + staging: { + 'nginx.ingress.kubernetes.io/foo': 'true', + }, + }, + }, + }) + const result = (await generateOutputOne({ + outputFormat: renderers.helm, + service: sut, + runtime: new Kubernetes(Staging), + env: Staging, + })) as SerializeSuccess<HelmService> + + expect(result.serviceDef[0].ingress).toEqual({ + 'primary-alb': { + annotations: { + 'kubernetes.io/ingress.class': 'nginx-internal-alb', + 'nginx.ingress.kubernetes.io/service-upstream': 'true', + 'nginx.ingress.kubernetes.io/foo': 'true', + }, + hosts: [ + { + host: 'a.internal.staging01.devland.is', + paths: ['/api'], + }, + ], + }, + }) + }) + it('Empty annotations are valid', async () => { + const sut = service('api').ingress({ + primary: { + public: false, + host: { dev: 'a', staging: 'a', prod: 'a' }, + paths: ['/api'], + extraAnnotations: { + staging: {}, + }, + }, + }) + const result = (await generateOutputOne({ + outputFormat: renderers.helm, + service: sut, + runtime: new Kubernetes(Staging), + env: Staging, + })) as SerializeSuccess<HelmService> + + expect(result.serviceDef[0].ingress).toEqual({ + 'primary-alb': { + annotations: { + 'kubernetes.io/ingress.class': 'nginx-internal-alb', + 'nginx.ingress.kubernetes.io/service-upstream': 'true', + }, + hosts: [ + { + host: 'a.internal.staging01.devland.is', + paths: ['/api'], + }, + ], + }, + }) + }) }) diff --git a/infra/src/dsl/types/charts.ts b/infra/src/dsl/types/charts.ts index d59737a1e18b..aeb21551890d 100644 --- a/infra/src/dsl/types/charts.ts +++ b/infra/src/dsl/types/charts.ts @@ -36,6 +36,6 @@ export type OpsEnvName = | 'prod' | 'prod-ids' -export type EnvironmentServices = { [name in OpsEnv]: ServiceBuilder<any>[] } +export type EnvironmentServices = { [env in OpsEnv]: ServiceBuilder<any>[] } export type EnvironmentConfigs = { [name in OpsEnvName]: EnvironmentConfig } diff --git a/infra/src/dsl/types/input-types.ts b/infra/src/dsl/types/input-types.ts index dfc428a9c5bd..43232dd01562 100644 --- a/infra/src/dsl/types/input-types.ts +++ b/infra/src/dsl/types/input-types.ts @@ -18,7 +18,7 @@ export type ValueType = MissingSettingType | ValueSource export type AccessModes = 'ReadWrite' | 'ReadOnly' export type PostgresInfo = { host?: { - [idx in OpsEnv]: string + [env in OpsEnv]: string } name?: string username?: string @@ -35,7 +35,7 @@ export type PostgresInfoForEnv = { } export type RedisInfo = { - host?: { [idx in OpsEnv]: string } + host?: { [env in OpsEnv]: string } } export type RedisInfoForEnv = { @@ -106,13 +106,15 @@ export type ServiceDefinitionCore = { volumes: PersistentVolumeClaim[] podDisruptionBudget?: PodDisruptionBudget } +export type IngressType = 'primary' | 'internal' +export type IngressMapping = Partial<{ [name in IngressType]: Ingress }> /** * This is the definition of a service as generated by ServiceBuilder. */ export type ServiceDefinition = ServiceDefinitionCore & { initContainers?: InitContainers env: EnvironmentVariables - ingress: { [name: string]: Ingress } + ingress: IngressMapping postgres?: PostgresInfo redis?: RedisInfo extraAttributes?: ExtraValues @@ -133,11 +135,13 @@ export type ServiceDefinitionForEnv = ServiceDefinitionCore & { export interface Ingress { host: { - [name in OpsEnv]: string | string[] + [env in OpsEnv]: string | string[] } paths: string[] public?: boolean - extraAnnotations?: { [name in OpsEnv]: { [idx: string]: string | null } } + extraAnnotations?: Partial<{ + [env in OpsEnv]: { [annotation: string]: string | null } + }> } export interface IngressForEnv { @@ -227,4 +231,4 @@ export interface Context { } export type ExtraValuesForEnv = Hash -export type ExtraValues = { [idx in OpsEnv]: Hash | MissingSettingType } +export type ExtraValues = { [env in OpsEnv]: Hash | MissingSettingType } diff --git a/infra/src/dsl/xroad.ts b/infra/src/dsl/xroad.ts index 6bc6fc0750ac..0025244cff7a 100644 --- a/infra/src/dsl/xroad.ts +++ b/infra/src/dsl/xroad.ts @@ -194,12 +194,12 @@ export const Finance = new XroadConf({ env: { XROAD_FINANCES_PATH: { dev: 'IS-DEV/GOV/10021/FJS-Public/financeIsland', - staging: 'IS-DEV/GOV/10021/FJS-Public/financeIsland', + staging: 'IS-TEST/GOV/10021/FJS-Public/financeIsland', prod: 'IS/GOV/5402697509/FJS-Public/financeIsland', }, XROAD_FINANCES_V2_PATH: { dev: 'IS-DEV/GOV/10021/FJS-Public/financeServicesFJS_v2', - staging: 'IS-DEV/GOV/10021/FJS-Public/financeServicesFJS_v2', + staging: 'IS-TEST/GOV/10021/FJS-Public/financeServicesFJS_v2', prod: 'IS/GOV/5402697509/FJS-Public/financeServicesFJS_v2', }, XROAD_HMS_LOANS_PATH: { @@ -255,7 +255,7 @@ export const JudicialAdministration = new XroadConf({ env: { XROAD_COURT_BANKRUPTCY_CERT_PATH: { dev: 'IS-DEV/GOV/10019/Domstolasyslan/JusticePortal-v1', - staging: 'IS-DEV/GOV/10019/Domstolasyslan/JusticePortal-v1', + staging: 'IS-TEST/GOV/10019/Domstolasyslan/JusticePortal-v1', prod: 'IS/GOV/4707171140/Domstolasyslan/JusticePortal-v1', }, }, @@ -269,7 +269,7 @@ export const OccupationalLicenses = new XroadConf({ env: { XROAD_HEALTH_DIRECTORATE_PATH: { dev: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir', - staging: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir', + staging: 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir', prod: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/landlaeknir', }, }, @@ -279,7 +279,7 @@ export const DistrictCommissionersPCard = new XroadConf({ env: { XROAD_DISTRICT_COMMISSIONERS_P_CARD_PATH: { dev: 'IS-DEV/GOV/10016/Syslumenn-Protected/IslandMinarSidur', - staging: 'IS-DEV/GOV/10016/Syslumenn-Protected/IslandMinarSidur', + staging: 'IS-TEST/GOV/10016/Syslumenn-Protected/IslandMinarSidur', prod: 'IS/GOV/5512201410/Syslumenn-Protected/IslandMinarSidur', }, }, @@ -288,7 +288,7 @@ export const DistrictCommissionersLicenses = new XroadConf({ env: { XROAD_DISTRICT_COMMISSIONERS_LICENSES_PATH: { dev: 'IS-DEV/GOV/10016/Syslumenn-Protected/RettindiIslandis', - staging: 'IS-DEV/GOV/10016/Syslumenn-Protected/RettindiIslandis', + staging: 'IS-TEST/GOV/10016/Syslumenn-Protected/RettindiIslandis', prod: 'IS/GOV/5512201410/Syslumenn-Protected/RettindiIslandis', }, }, @@ -308,7 +308,7 @@ export const Hunting = new XroadConf({ env: { XROAD_HUNTING_LICENSE_PATH: { dev: 'IS-DEV/GOV/10009/Umhverfisstofnun-Protected/api', - staging: 'IS-DEV/GOV/10009/Umhverfisstofnun-Protected/api', + staging: 'IS-TEST/GOV/10009/Umhverfisstofnun-Protected/api', prod: 'IS/GOV/7010022880/Umhverfisstofnun-Protected/api', }, }, @@ -338,32 +338,32 @@ export const UniversityCareers = new XroadConf({ env: { XROAD_UNIVERSITY_OF_AKUREYRI_PATH: { dev: 'IS-DEV/EDU/10054/UNAK-Protected/brautskraning-v1', - staging: 'IS-DEV/EDU/10054/UNAK-Protected/brautskraning-v1', + staging: 'IS-TEST/EDU/10054/UNAK-Protected/brautskraning-v1', prod: 'IS/EDU/5206871229/UNAK-Protected/brautskraning-v1', }, XROAD_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: { dev: 'IS-DEV/EDU/10056/LBHI-Protected/brautskraning-v1', - staging: 'IS-DEV/EDU/10056/LBHI-Protected/brautskraning-v1', + staging: 'IS-TEST/EDU/10056/LBHI-Protected/brautskraning-v1', prod: 'IS/EDU/4112043590/LBHI-Protected/brautskraning-v1', }, XROAD_BIFROST_UNIVERSITY_PATH: { dev: 'IS-DEV/EDU/10057/Bifrost-Protected/brautskraning-v1', - staging: 'IS-DEV/EDU/10057/Bifrost-Protected/brautskraning-v1', + staging: 'IS-TEST/EDU/10057/Bifrost-Protected/brautskraning-v1', prod: 'IS/EDU/5502690239/Bifrost-Protected/brautskraning-v1', }, XROAD_HOLAR_UNIVERSITY_PATH: { dev: 'IS-DEV/EDU/10055/Holar-Protected/brautskraning-v1', - staging: 'IS-DEV/EDU/10055/Holar-Protected/brautskraning-v1', + staging: 'IS-TEST/EDU/10055/Holar-Protected/brautskraning-v1', prod: 'IS/EDU/5001694359/Holar-Protected/brautskraning-v1', }, XROAD_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: { dev: 'IS-DEV/EDU/10049/LHI-Protected/brautskraning-v1', - staging: 'IS-DEV/EDU/10049/LHI-Protected/brautskraning-v1', + staging: 'IS-TEST/EDU/10049/LHI-Protected/brautskraning-v1', prod: 'IS/EDU/4210984099/LHI-Protected/brautskraning-v1', }, XROAD_UNIVERSITY_OF_ICELAND_PATH: { dev: 'IS-DEV/EDU/10010/HI-Protected/brautskraning-v1', - staging: 'IS-DEV/EDU/10010/HI-Protected/brautskraning-v1', + staging: 'IS-TEST/EDU/10010/HI-Protected/brautskraning-v1', prod: 'IS/EDU/6001692039/HI-Protected/brautskraning-v1', }, }, @@ -458,7 +458,7 @@ export const NationalRegistryAuthB2C = new XroadConf({ }, NATIONAL_REGISTRY_B2C_PATH: { dev: 'IS-DEV/GOV/10001/SKRA-Cloud-Protected/Midlun-v1', - staging: 'IS-DEV/GOV/10001/SKRA-Cloud-Protected/Midlun-v1', + staging: 'IS-TEST/GOV/10001/SKRA-Cloud-Protected/Midlun-v1', prod: 'IS/GOV/6503760649/SKRA-Cloud-Protected/Midlun-v1', }, }, @@ -506,7 +506,7 @@ export const PaymentSchedule = new XroadConf({ env: { XROAD_PAYMENT_SCHEDULE_PATH: { dev: 'IS-DEV/GOV/10021/FJS-Public/paymentSchedule_v1', - staging: 'IS-DEV/GOV/10021/FJS-Public/paymentSchedule_v1', + staging: 'IS-TEST/GOV/10021/FJS-Public/paymentSchedule_v1', prod: 'IS/GOV/5402697509/FJS-Public/paymentSchedule_v1', }, }, @@ -634,7 +634,7 @@ export const ChargeFjsV2 = new XroadConf({ env: { XROAD_CHARGE_FJS_V2_PATH: { dev: 'IS-DEV/GOV/10021/FJS-Public/chargeFJS_v2', - staging: 'IS-DEV/GOV/10021/FJS-Public/chargeFJS_v2', + staging: 'IS-TEST/GOV/10021/FJS-Public/chargeFJS_v2', prod: 'IS/GOV/5402697509/FJS-Public/chargeFJS_v2', }, }, @@ -644,7 +644,7 @@ export const EnergyFunds = new XroadConf({ env: { XROAD_ENERGY_FUNDS_PATH: { dev: 'IS-DEV/GOV/10021/FJS-Public/ElectricCarSubSidyService_v1', - staging: 'IS-DEV/GOV/10021/FJS-Public/ElectricCarSubSidyService_v1', + staging: 'IS-TEST/GOV/10021/FJS-Public/ElectricCarSubSidyService_v1', prod: 'IS/GOV/5402697509/FJS-Public/ElectricCarSubSidyService_v1', }, }, @@ -654,7 +654,7 @@ export const VehicleServiceFjsV1 = new XroadConf({ env: { XROAD_VEHICLE_SERVICE_FJS_V1_PATH: { dev: 'IS-DEV/GOV/10021/FJS-Public/VehicleServiceFJS_v1', - staging: 'IS-DEV/GOV/10021/FJS-Public/VehicleServiceFJS_v1', + staging: 'IS-TEST/GOV/10021/FJS-Public/VehicleServiceFJS_v1', prod: 'IS/GOV/5402697509/FJS-Public/VehicleServiceFJS_v1', }, }, @@ -664,45 +664,46 @@ export const TransportAuthority = new XroadConf({ env: { XROAD_VEHICLE_CODETABLES_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Codetables-V1', - staging: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Codetables-V1', + staging: + 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Codetables-V1', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-Codetables-V1', }, XROAD_VEHICLE_INFOLOCKS_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Infolocks-V1', - staging: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Infolocks-V1', + staging: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Infolocks-V1', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-Infolocks-V1', }, XROAD_VEHICLE_OPERATORS_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Operators-V3', - staging: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Operators-V3', + staging: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Operators-V3', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-Operators-V3', }, XROAD_VEHICLE_OWNER_CHANGE_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Ownerchange-V2', staging: - 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Ownerchange-V2', + 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Ownerchange-V2', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-Ownerchange-V2', }, XROAD_VEHICLE_PLATE_ORDERING_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOrdering-V1', staging: - 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOrdering-V1', + 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOrdering-V1', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-PlateOrdering-V1', }, XROAD_VEHICLE_PLATE_RENEWAL_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOwnership-V1', staging: - 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOwnership-V1', + 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-PlateOwnership-V1', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-PlateOwnership-V1', }, XROAD_VEHICLE_PRINTING_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Printing-V1', - staging: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Vehicle-Printing-V1', + staging: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Vehicle-Printing-V1', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Vehicle-Printing-V1', }, XROAD_DIGITAL_TACHOGRAPH_DRIVERS_CARD_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Okuritar-V1', - staging: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Okuritar-V1', + staging: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Okuritar-V1', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Okuritar-V1', }, }, @@ -712,7 +713,7 @@ export const IcelandicGovernmentInstitutionVacancies = new XroadConf({ env: { XROAD_ICELANDIC_GOVERNMENT_INSTITUTION_VACANCIES_PATH: { dev: 'IS-DEV/GOV/10021/FJS-Protected/recruitment-v1', - staging: 'IS-DEV/GOV/10021/FJS-Protected/recruitment-v1', + staging: 'IS-TEST/GOV/10021/FJS-Protected/recruitment-v1', prod: 'IS/GOV/5402697509/FJS-Protected/recruitment-v1', }, }, @@ -728,7 +729,7 @@ export const AircraftRegistry = new XroadConf({ env: { XROAD_AIRCRAFT_REGISTRY_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Loftfaraskra-V1', - staging: 'IS-DEV/GOV/10017/Samgongustofa-Protected/Loftfaraskra-V1', + staging: 'IS-TEST/GOV/10017/Samgongustofa-Protected/Loftfaraskra-V1', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/Loftfaraskra-V1', }, }, @@ -754,7 +755,7 @@ export const ShipRegistry = new XroadConf({ env: { XROAD_SHIP_REGISTRY_PATH: { dev: 'IS-DEV/GOV/10017/Samgongustofa-Protected/skipaskra-V1', - staging: 'IS-DEV/GOV/10017/Samgongustofa-Protected/skipaskra-V1', + staging: 'IS-TEST/GOV/10017/Samgongustofa-Protected/skipaskra-V1', prod: 'IS/GOV/5405131040/Samgongustofa-Protected/skipaskra-V1', }, }, @@ -764,7 +765,7 @@ export const DirectorateOfImmigration = new XroadConf({ env: { XROAD_DIRECTORATE_OF_IMMIGRATION_PATH: { dev: 'IS-DEV/GOV/10011/UTL-Protected/Utl-Umsokn-v1', - staging: 'IS-DEV/GOV/10011/UTL-Protected/Utl-Umsokn-v1', + staging: 'IS-TEST/GOV/10011/UTL-Protected/Utl-Umsokn-v1', prod: 'IS/GOV/6702696399/UTL-Protected/Utl-Umsokn-v1', }, }, @@ -774,7 +775,7 @@ export const UniversityGatewayUniversityOfIceland = new XroadConf({ env: { XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_ICELAND_PATH: { dev: 'IS-DEV/EDU/10010/HI-Protected/umsoknir-v1', - staging: 'IS-DEV/EDU/10010/HI-Protected/umsoknir-v1', + staging: 'IS-TEST/EDU/10010/HI-Protected/umsoknir-v1', prod: 'IS/EDU/6001692039/HI-Protected/umsoknir-v1', }, }, @@ -784,7 +785,7 @@ export const UniversityGatewayUniversityOfAkureyri = new XroadConf({ env: { XROAD_UNIVERSITY_GATEWAY_UNIVERSITY_OF_AKUREYRI_PATH: { dev: 'IS-DEV/EDU/10054/UNAK-Protected/umsoknir-v1', - staging: 'IS-DEV/EDU/10054/UNAK-Protected/umsoknir-v1', + staging: 'IS-TEST/EDU/10054/UNAK-Protected/umsoknir-v1', prod: 'IS/EDU/5206871229/UNAK-Protected/umsoknir-v1', }, }, @@ -794,7 +795,7 @@ export const UniversityGatewayBifrostUniversity = new XroadConf({ env: { XROAD_UNIVERSITY_GATEWAY_BIFROST_UNIVERSITY_PATH: { dev: 'IS-DEV/EDU/10057/Bifrost-Protected/umsoknir-v1', - staging: 'IS-DEV/EDU/10057/Bifrost-Protected/umsoknir-v1', + staging: 'IS-TEST/EDU/10057/Bifrost-Protected/umsoknir-v1', prod: 'IS/EDU/5502690239/Bifrost-Protected/umsoknir-v1', }, }, @@ -804,7 +805,7 @@ export const UniversityGatewayIcelandUniversityOfTheArts = new XroadConf({ env: { XROAD_UNIVERSITY_GATEWAY_ICELAND_UNIVERSITY_OF_THE_ARTS_PATH: { dev: 'IS-DEV/EDU/10049/LHI-Protected/umsoknir-v1', - staging: 'IS-DEV/EDU/10049/LHI-Protected/umsoknir-v1', + staging: 'IS-TEST/EDU/10049/LHI-Protected/umsoknir-v1', prod: 'IS/EDU/4210984099/LHI-Protected/umsoknir-v1', }, }, @@ -814,7 +815,7 @@ export const UniversityGatewayAgriculturalUniversityOfIceland = new XroadConf({ env: { XROAD_UNIVERSITY_GATEWAY_AGRICULTURAL_UNIVERSITY_OF_ICELAND_PATH: { dev: 'IS-DEV/EDU/10056/LBHI-Protected/umsoknir-v1', - staging: 'IS-DEV/EDU/10056/LBHI-Protected/umsoknir-v1', + staging: 'IS-TEST/EDU/10056/LBHI-Protected/umsoknir-v1', prod: 'IS/EDU/4112043590/LBHI-Protected/umsoknir-v1', }, }, @@ -824,7 +825,7 @@ export const UniversityGatewayHolarUniversity = new XroadConf({ env: { XROAD_UNIVERSITY_GATEWAY_HOLAR_UNIVERSITY_PATH: { dev: 'IS-DEV/EDU/10055/Holar-Protected/umsoknir-v1', - staging: 'IS-DEV/EDU/10055/Holar-Protected/umsoknir-v1', + staging: 'IS-TEST/EDU/10055/Holar-Protected/umsoknir-v1', prod: 'IS/EDU/5001694359/Holar-Protected/umsoknir-v1', }, }, @@ -840,6 +841,17 @@ export const UniversityGatewayReykjavikUniversity = new XroadConf({ }, }) +export const JudicialSystemServicePortal = new XroadConf({ + env: { + XROAD_JUDICIAL_SYSTEM_SP_PATH: { + dev: 'IS-DEV/GOV/10014/Rettarvorslugatt-Private/judicial-system-mailbox-api', + staging: + 'IS-TEST/GOV/10014/Rettarvorslugatt-Private/judicial-system-mailbox-api', + prod: 'IS-GOV/GOV/5804170510/Rettarvorslugatt-Private/judicial-system-mailbox-api', + }, + }, +}) + export const SocialInsuranceAdministration = new XroadConf({ env: { XROAD_TR_PATH: { @@ -854,7 +866,7 @@ export const ArborgWorkpoint = new XroadConf({ env: { WORKPOINT_ARBORG_SERVICE_PATH: { dev: 'IS-DEV/MUN/10036/Arborg-Protected/tengill-application-v1', - staging: 'IS-DEV/MUN/10036/Arborg-Protected/tengill-application-v1', + staging: 'IS-TEST/MUN/10036/Arborg-Protected/tengill-application-v1', prod: 'IS/MUN/10036/Arborg-Protected/tengill-application-v1', }, }, @@ -864,7 +876,7 @@ export const OfficialJournalOfIceland = new XroadConf({ env: { XROAD_OFFICIAL_JOURNAL_PATH: { dev: 'IS-DEV/GOV/10014/DMR-Protected/official-journal', - staging: 'IS-DEV/GOV/10014/DMR-Protected/official-journal', + staging: 'IS-TEST/GOV/10014/DMR-Protected/official-journal', prod: 'IS/GOV/10014/DMR-Protected/official-journal', }, }, @@ -874,7 +886,7 @@ export const OfficialJournalOfIcelandApplication = new XroadConf({ env: { XROAD_OFFICIAL_JOURNAL_APPLICATION_PATH: { dev: 'IS-DEV/GOV/10014/DMR-Protected/official-journal-application', - staging: 'IS-DEV/GOV/10014/DMR-Protected/official-journal-application', + staging: 'IS-TEST/GOV/10014/DMR-Protected/official-journal-application', prod: 'IS/GOV/10014/DMR-Protected/official-journal-application', }, }, @@ -883,9 +895,30 @@ export const OfficialJournalOfIcelandApplication = new XroadConf({ export const Frigg = new XroadConf({ env: { XROAD_MMS_FRIGG_PATH: { - dev: 'IS-DEV/GOV/10066/MMS-Protected/frigg-api', - staging: 'IS-DEV/GOV/10066/MMS-Protected/frigg-api', - prod: 'IS/GOV/10066/MMS-Protected/frigg-api', + dev: 'IS-DEV/GOV/10066/MMS-Protected/frigg-form-service', + staging: 'IS-TEST/GOV/10066/MMS-Protected/frigg-form-service', + prod: 'IS/GOV/10066/MMS-Protected/frigg-form-service', + }, + }, +}) + +export const HealthDirectorateOrganDonation = new XroadConf({ + env: { + XROAD_HEALTH_DIRECTORATE_ORGAN_DONATION_PATH: { + dev: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/organ-donation-v1', + staging: + 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/organ-donation-v1', + prod: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/organ-donation-v1', + }, + }, +}) + +export const HealthDirectorateVaccination = new XroadConf({ + env: { + XROAD_HEALTH_DIRECTORATE_VACCINATION_PATH: { + dev: 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/vaccination-v1', + staging: 'IS-TEST/GOV/10015/EmbaettiLandlaeknis-Protected/vaccination-v1', + prod: 'IS/GOV/7101695009/EmbaettiLandlaeknis-Protected/vaccination-v1', }, }, }) diff --git a/infra/src/feature-env.ts b/infra/src/feature-env.ts index c6e3a79f2826..8f5dfaff157a 100644 --- a/infra/src/feature-env.ts +++ b/infra/src/feature-env.ts @@ -1,5 +1,6 @@ import yargs from 'yargs' import AWS from 'aws-sdk' +import { Kubernetes } from './dsl/kubernetes-runtime' import { Envs } from './environments' import { ExcludedFeatureDeploymentServices, @@ -39,8 +40,8 @@ interface Arguments { const writeToOutput = async (data: string, output?: string) => { if (output) { if (output.startsWith('s3://')) { - const Bucket = output.substring(5).split('/')[0] - const Key = output.substring(5).split(/\/(.+)/)[1] + const Bucket = output.substr(5).split('/')[0] + const Key = output.substr(5).split(/\/(.+)/)[1] const objectParams = { Bucket, Key, @@ -52,16 +53,14 @@ const writeToOutput = async (data: string, output?: string) => { } const s3 = new AWS.S3(config) try { - // TODO: Migrate to AWS SDK v3. - // `ncc` is failing when changing to v3 😓 await s3.putObject(objectParams).promise() - logger.debug(`Successfully uploaded data to ${output}`) + console.log(`Successfully uploaded data to ${output}`) } catch (err) { - logger.debug('Error', err) + console.log('Error', err) } } } else { - logger.debug(data) + console.log(data) } } diff --git a/infra/src/secrets.ts b/infra/src/secrets.ts index e177706161d2..abdd6d2331bb 100644 --- a/infra/src/secrets.ts +++ b/infra/src/secrets.ts @@ -1,4 +1,4 @@ -import { SSM } from '@aws-sdk/client-ssm' +import AWS from 'aws-sdk' import yargs from 'yargs' import { OpsEnv } from './dsl/types/input-types' import { Envs } from './environments' @@ -12,6 +12,8 @@ import { import { renderHelmServices } from './dsl/exports/helm' import { logger } from './common' +const { hideBin } = require('yargs/helpers') + interface GetArguments { key: string } @@ -28,14 +30,13 @@ const config = { region: 'eu-west-1', } -const ssm = new SSM(config) -yargs(process.argv.slice(2)) +const ssm = new AWS.SSM(config) +yargs(hideBin(process.argv)) .command( 'get-all-required-secrets', 'get all required secrets from all charts', { env: { type: 'string', demand: true, choices: OpsEnvNames } }, async (p) => { - logger.info(`Listing all secrets for env:${p.env}`) const services = ( await Promise.all( Object.entries(Charts) @@ -44,7 +45,6 @@ yargs(process.argv.slice(2)) chartName: chartName as ChartName, })) .flatMap(async ({ services, chartName }) => { - logger.info(`Getting secrets for ${chartName} in ${p.env}`) return Object.values( ( await renderHelmServices( @@ -62,23 +62,20 @@ yargs(process.argv.slice(2)) const secrets = services.flatMap((s) => { return Object.values(s.secrets) }) - // Actually log to stdout - console.log([...new Set(secrets)].join('\n')) + logger.debug([...new Set(secrets)].join('\n')) }, ) .command( 'get <key>', 'get secret', - { - key: { type: 'string', demand: true }, - }, + () => {}, async ({ key }: GetArguments) => { const parameterInput = { Name: key, WithDecryption: true, } - const { Parameter } = await ssm.getParameter(parameterInput) + const { Parameter } = await ssm.getParameter(parameterInput).promise() if (Parameter) { if (Parameter.Value && Parameter.Value.length > 0) { console.log(Parameter.Value) @@ -93,16 +90,15 @@ yargs(process.argv.slice(2)) .command( 'store <key> <secret>', 'store secret', - { - key: { type: 'string', demand: true }, - secret: { type: 'string', demand: true }, - }, + () => {}, async ({ key, secret }: StoreArguments) => { - await ssm.putParameter({ - Name: key, - Value: secret, - Type: 'SecureString', - }) + await ssm + .putParameter({ + Name: key, + Value: secret, + Type: 'SecureString', + }) + .promise() logger.debug('Done!') }, ) @@ -110,15 +106,15 @@ yargs(process.argv.slice(2)) .command( 'delete <prefix>', 'delete secrets by prefix', - { - prefix: { type: 'string', demand: true }, - }, + () => {}, async ({ prefix }: DeleteArguments) => { - const { Parameters } = await ssm.describeParameters({ - ParameterFilters: [ - { Key: 'Name', Option: 'BeginsWith', Values: [prefix] }, - ], - }) + const { Parameters } = await ssm + .describeParameters({ + ParameterFilters: [ + { Key: 'Name', Option: 'BeginsWith', Values: [prefix] }, + ], + }) + .promise() if (Parameters && Parameters.length > 0) { logger.debug( `Parameters to destroy: ${Parameters.map(({ Name }) => Name)}`, @@ -126,7 +122,7 @@ yargs(process.argv.slice(2)) await Promise.all( Parameters.map(({ Name }) => Name - ? ssm.deleteParameter({ Name }) + ? ssm.deleteParameter({ Name }).promise() : new Promise((resolve) => resolve(true)), ), ) diff --git a/infra/src/uber-charts/islandis.ts b/infra/src/uber-charts/islandis.ts index 811597d65eb0..d530954d4c8d 100644 --- a/infra/src/uber-charts/islandis.ts +++ b/infra/src/uber-charts/islandis.ts @@ -11,7 +11,7 @@ import { import { serviceSetup as appSystemFormSetup } from '../../../apps/application-system/form/infra/application-system-form' import { serviceSetup as servicePortalApiSetup } from '../../../apps/services/user-profile/infra/service-portal-api' -import { serviceSetup as servicePortalSetup } from '../../../apps/service-portal/infra/service-portal' +import { serviceSetup as servicePortalSetup } from '../../../apps/portals/my-pages/infra/portals-my-pages' import { serviceSetup as adminPortalSetup } from '../../../apps/portals/admin/infra/portals-admin' import { serviceSetup as consultationPortalSetup } from '../../../apps/consultation-portal/infra/samradsgatt' @@ -31,14 +31,11 @@ import { serviceSetup as downloadServiceSetup } from '../../../apps/download-ser import { serviceSetup as endorsementServiceSetup } from '../../../apps/services/endorsements/api/infra/endorsement-system-api' import { serviceSetup as githubActionsCacheSetup } from '../../../apps/github-actions-cache/infra/github-actions-cache' -import { serviceSetup as formSystemApiSetup } from '../../../apps/services/form-system/infra/form-system' - import { userNotificationServiceSetup, userNotificationCleanUpWorkerSetup, userNotificationWorkerSetup, } from '../../../apps/services/user-notification/infra/user-notification' -import { endorsementSystemCleanUpWorkerSetup } from '../../../apps/services/endorsements/api/infra/endorsement-system-api' import { serviceSetup as adsApiSetup } from '../../../apps/air-discount-scheme/api/infra/api' import { serviceSetup as adsWebSetup } from '../../../apps/air-discount-scheme/web/infra/web' @@ -140,9 +137,12 @@ const userNotificationWorkerService = userNotificationWorkerSetup({ const userNotificationCleanupWorkerService = userNotificationCleanUpWorkerSetup() +<<<<<<< HEAD const endorsementSystemCleanUpWorkerService = endorsementSystemCleanUpWorkerSetup() +======= +>>>>>>> f031834bf8bbc6843f40e0b62985d36fcbe92f7b const githubActionsCache = githubActionsCacheSetup() const externalContractsTests = externalContractsTestsSetup() @@ -174,9 +174,7 @@ export const Services: EnvironmentServices = { userNotificationService, userNotificationWorkerService, userNotificationCleanupWorkerService, - endorsementSystemCleanUpWorkerService, licenseApi, - formSystemApi, sessionsService, sessionsWorker, sessionsCleanupWorker, @@ -211,9 +209,7 @@ export const Services: EnvironmentServices = { userNotificationService, userNotificationWorkerService, userNotificationCleanupWorkerService, - endorsementSystemCleanUpWorkerService, licenseApi, - formSystemApi, sessionsService, sessionsWorker, sessionsCleanupWorker, @@ -246,12 +242,10 @@ export const Services: EnvironmentServices = { userNotificationService, userNotificationWorkerService, userNotificationCleanupWorkerService, - endorsementSystemCleanUpWorkerService, externalContractsTests, appSystemApiWorker, contentfulEntryTagger, licenseApi, - formSystemApi, sessionsService, sessionsWorker, sessionsCleanupWorker, @@ -269,7 +263,6 @@ export const ExcludedFeatureDeploymentServices: ServiceBuilder<any>[] = [ userNotificationService, userNotificationWorkerService, userNotificationCleanupWorkerService, - endorsementSystemCleanUpWorkerService, contentfulEntryTagger, searchIndexer, contentfulApps, diff --git a/infra/yarn.lock b/infra/yarn.lock index 5f27b58473e3..c97ff807bf19 100644 --- a/infra/yarn.lock +++ b/infra/yarn.lock @@ -6544,7 +6544,7 @@ __metadata: js-yaml: 4.0.0 lodash: 4.17.21 typescript: 4.6.4 - yargs: 17.2.1 + yargs: 17.7.2 languageName: unknown linkType: soft @@ -10481,18 +10481,18 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.2.1": - version: 17.2.1 - resolution: "yargs@npm:17.2.1" +"yargs@npm:17.7.2, yargs@npm:^17.6.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" dependencies: - cliui: ^7.0.2 + cliui: ^8.0.1 escalade: ^3.1.1 get-caller-file: ^2.0.5 require-directory: ^2.1.1 - string-width: ^4.2.0 + string-width: ^4.2.3 y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: 451aac46f82da776f436018feed0244bc0e7b4355f7e397bcb53d34c691b177c0d71db3dda9653760e1bc240254d8b763a252ff918ef9e235a8d202e2909c4eb + yargs-parser: ^21.1.1 + checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a languageName: node linkType: hard @@ -10511,21 +10511,6 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.6.2": - version: 17.7.2 - resolution: "yargs@npm:17.7.2" - dependencies: - cliui: ^8.0.1 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.3 - y18n: ^5.0.5 - yargs-parser: ^21.1.1 - checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a - languageName: node - linkType: hard - "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1" diff --git a/libs/api-catalogue/elastic/src/lib/elastic.service.ts b/libs/api-catalogue/elastic/src/lib/elastic.service.ts index 7a612917b524..dd1f38c89b8b 100644 --- a/libs/api-catalogue/elastic/src/lib/elastic.service.ts +++ b/libs/api-catalogue/elastic/src/lib/elastic.service.ts @@ -1,37 +1,38 @@ import { Injectable } from '@nestjs/common' import { Client, ApiResponse } from '@elastic/elasticsearch' +import * as AWS from 'aws-sdk' +import AwsConnector from 'aws-elasticsearch-connector' import { environment } from '../environments/environments' import { Service } from '@island.is/api-catalogue/types' import { SearchResponse } from '@island.is/shared/types' import { searchQuery } from './queries/search.model' import { logger } from '@island.is/logging' -import { - createAWSConnection, - awsGetCredentials, -} from '@acuris/aws-es-connection' const { elastic } = environment -type RequestBodyType<T = Record<string, unknown>> = T | string | Buffer +type RequestBodyType<T = Record<string, any>> = T | string | Buffer @Injectable() export class ElasticService { - private client?: Client + private client: Client private indexName = 'apicatalogue' + constructor() { + this.client = this.createEsClient() + } + /** * Tries to delete the index. * If the index does not exists it does nothing. */ async deleteIndex(): Promise<void> { logger.info('Deleting index', this.indexName) - const client = await this.getClient() - const { body } = await client.indices.exists({ + const { body } = await this.client.indices.exists({ index: this.indexName, }) if (body) { - await client.indices.delete({ index: this.indexName }) + await this.client.indices.delete({ index: this.indexName }) logger.info(`Index ${this.indexName} deleted`) } else { logger.info('No index to delete', this.indexName) @@ -45,19 +46,18 @@ export class ElasticService { logger.info('Bulk insert', services) if (services.length) { - const bulk: (Service | { index: { _index: string; _id: string } })[] = - services.flatMap((service) => [ - { - index: { - _index: this.indexName, - _id: service.id, - }, + const bulk: Array<any> = [] + services.forEach((service) => { + bulk.push({ + index: { + _index: this.indexName, + _id: service.id, }, - service, - ]) + }) + bulk.push(service) + }) - const client = await this.getClient() - await client.bulk({ + await this.client.bulk({ body: bulk, index: this.indexName, }) @@ -103,8 +103,7 @@ export class ElasticService { query: RequestBody, ) { logger.debug('Searching for', query) - const client = await this.getClient() - return await client.search<ResponseBody, RequestBody>({ + return await this.client.search<ResponseBody, RequestBody>({ body: query, index: this.indexName, }) @@ -116,8 +115,7 @@ export class ElasticService { } logger.info('Deleting based on indexes', { ids }) - const client = await this.getClient() - return await client.delete_by_query({ + return await this.client.delete_by_query({ index: this.indexName, body: { query: { @@ -131,8 +129,7 @@ export class ElasticService { async deleteAllExcept(excludeIds: Array<string>) { logger.info('Deleting everything except', { excludeIds }) - const client = await this.getClient() - return await client.delete_by_query({ + return await this.client.delete_by_query({ index: this.indexName, body: { query: { @@ -145,23 +142,14 @@ export class ElasticService { } async ping() { - const client = await this.getClient() - const result = await client.ping().catch((error) => { + const result = await this.client.ping().catch((error) => { logger.error('Error in ping', error) }) logger.info('Got elasticsearch ping response') return result } - private async getClient(): Promise<Client> { - if (this.client) { - return this.client - } - this.client = await this.createEsClient() - return this.client - } - - private async createEsClient(): Promise<Client> { + private createEsClient(): Client { const hasAWS = 'AWS_WEB_IDENTITY_TOKEN_FILE' in process.env || 'AWS_SECRET_ACCESS_KEY' in process.env @@ -173,7 +161,7 @@ export class ElasticService { } return new Client({ - ...createAWSConnection(await awsGetCredentials()), + ...AwsConnector(AWS.config), node: elastic.node, }) } diff --git a/libs/api-catalogue/elastic/src/lib/queries/search.model.ts b/libs/api-catalogue/elastic/src/lib/queries/search.model.ts index e9513606cbdc..03153533ffba 100644 --- a/libs/api-catalogue/elastic/src/lib/queries/search.model.ts +++ b/libs/api-catalogue/elastic/src/lib/queries/search.model.ts @@ -57,16 +57,7 @@ export const searchQuery = ({ }) } - const result: { - query: { - bool: { - must: Array<object> - } - } - sort: Array<object> - size: number - search_after?: typeof searchAfter - } = { + const result: any = { query: { bool: { must: [ @@ -94,7 +85,7 @@ export const searchQuery = ({ } if (searchAfter?.length) { - result.search_after = searchAfter + result['search_after'] = searchAfter } return result diff --git a/libs/api/domains/application/src/lib/application.model.ts b/libs/api/domains/application/src/lib/application.model.ts index e62e4668e89f..80ccfe2ff36a 100644 --- a/libs/api/domains/application/src/lib/application.model.ts +++ b/libs/api/domains/application/src/lib/application.model.ts @@ -46,6 +46,9 @@ class PendingAction { @Field(() => String, { nullable: true }) content?: string + + @Field(() => String, { nullable: true }) + button?: string } @ObjectType() @@ -76,11 +79,15 @@ class ActionCardMetaData { @Field(() => [ApplicationHistory], { nullable: true }) history?: ApplicationHistory[] + @Field(() => Number, { nullable: true }) draftFinishedSteps?: number @Field(() => Number, { nullable: true }) draftTotalSteps?: number + + @Field(() => String, { nullable: true }) + historyButton?: string } @ObjectType() diff --git a/libs/api/domains/application/src/lib/application.service.ts b/libs/api/domains/application/src/lib/application.service.ts index 6e5182418f3a..4fb572897be5 100644 --- a/libs/api/domains/application/src/lib/application.service.ts +++ b/libs/api/domains/application/src/lib/application.service.ts @@ -115,6 +115,7 @@ export class ApplicationService { to: input.to, }) } + async create(input: CreateApplicationInput, auth: Auth) { return this.applicationApiWithAuth(auth).applicationControllerCreate({ createApplicationDto: input, @@ -200,7 +201,6 @@ export class ApplicationService { async deleteApplication(input: DeleteApplicationInput, auth: Auth) { return this.applicationApiWithAuth(auth).applicationControllerDelete({ id: input.id, - authorization: auth.authorization, }) } diff --git a/libs/api/domains/auth-admin/src/lib/auth-admin.module.ts b/libs/api/domains/auth-admin/src/lib/auth-admin.module.ts index 9fd435143145..b130bdace9e6 100644 --- a/libs/api/domains/auth-admin/src/lib/auth-admin.module.ts +++ b/libs/api/domains/auth-admin/src/lib/auth-admin.module.ts @@ -13,10 +13,13 @@ import { ClientSecretLoader } from './client/client-secret.loader' import { ScopeResolver } from './scope/scope.resolver' import { ScopeService } from './scope/scope.service' import { DelegationProviderService } from './delegationProvider/delegation-provider.service' -import { DelegationProviderResolverResolver } from './delegationProvider/delegation-provider.resolver' +import { DelegationProviderResolver } from './delegationProvider/delegation-provider.resolver' +import { DelegationAdminResolver } from './delegationAdmin/delegation-admin.resolver' +import { DelegationAdminService } from './delegationAdmin/delegation-admin.service' +import { AuthDelegationApiClientModule } from '@island.is/clients/auth/delegation-api' @Module({ - imports: [AuthAdminApiClientModule], + imports: [AuthAdminApiClientModule, AuthDelegationApiClientModule], providers: [ TenantResolver, TenantEnvironmentResolver, @@ -29,7 +32,9 @@ import { DelegationProviderResolverResolver } from './delegationProvider/delegat ScopeResolver, ScopeService, DelegationProviderService, - DelegationProviderResolverResolver, + DelegationProviderResolver, + DelegationAdminResolver, + DelegationAdminService, ], }) export class AuthAdminModule {} diff --git a/libs/api/domains/auth-admin/src/lib/delegationAdmin/delegation-admin.resolver.ts b/libs/api/domains/auth-admin/src/lib/delegationAdmin/delegation-admin.resolver.ts new file mode 100644 index 000000000000..cb0bc1099133 --- /dev/null +++ b/libs/api/domains/auth-admin/src/lib/delegationAdmin/delegation-admin.resolver.ts @@ -0,0 +1,145 @@ +import { + Args, + Mutation, + Parent, + Query, + ResolveField, + Resolver, +} from '@nestjs/graphql' +import { NotFoundException, UseGuards } from '@nestjs/common' + +import { DelegationAdminService } from './delegation-admin.service' +import { DelegationAdminCustomModel } from './models/delegation.model' + +import { + type User, + CurrentUser, + IdsUserGuard, +} from '@island.is/auth-nest-tools' +import { + Identity, + type IdentityDataLoader, + IdentityLoader, +} from '@island.is/api/domains/identity' +import { Loader } from '@island.is/nest/dataloader' +import { DelegationDTO } from '@island.is/auth-api-lib' +import { + type DomainDataLoader, + CustomDelegation, + Domain, + DomainLoader, + ISLAND_DOMAIN, +} from '@island.is/api/domains/auth' +import { CreateDelegationInput } from './dto/createDelegation.input' + +@UseGuards(IdsUserGuard) +@Resolver(CustomDelegation) +export class DelegationAdminResolver { + constructor( + private readonly delegationAdminService: DelegationAdminService, + ) {} + + @Query(() => DelegationAdminCustomModel, { name: 'authAdminDelegationAdmin' }) + async getDelegationSystem( + @Args('nationalId') nationalId: string, + @CurrentUser() user: User, + @Loader(IdentityLoader) identityLoader: IdentityDataLoader, + ) { + const delegations = await this.delegationAdminService.getDelegationAdmin( + user, + nationalId, + ) + const identityCard = await identityLoader.load(nationalId) + + return { + nationalId: nationalId, + name: identityCard.name, + incoming: delegations.incoming, + outgoing: delegations.outgoing, + } + } + + @Mutation(() => Boolean, { name: 'authDeleteAdminDelegation' }) + async deleteDelegationSystem( + @Args('id') id: string, + @CurrentUser() user: User, + ) { + return this.delegationAdminService.deleteDelegationAdmin(user, id) + } + + @Mutation(() => CustomDelegation, { name: 'authCreateDelegation' }) + async createDelegationSystem( + @Args('input') input: CreateDelegationInput, + @CurrentUser() user: User, + ) { + return this.delegationAdminService.createDelegationAdmin(user, input) + } + + @ResolveField('from', () => Identity) + resolveFromIdentity( + @Loader(IdentityLoader) identityLoader: IdentityDataLoader, + @Parent() customDelegation: DelegationDTO, + ) { + return identityLoader.load(customDelegation.fromNationalId) + } + + @ResolveField('to', () => Identity) + resolveToIdentity( + @Loader(IdentityLoader) identityLoader: IdentityDataLoader, + @Parent() customDelegation: DelegationDTO, + ) { + return identityLoader.load(customDelegation.toNationalId) + } + + @ResolveField('createdBy', () => Identity, { nullable: true }) + resolveCreatedByIdentity( + @Loader(IdentityLoader) identityLoader: IdentityDataLoader, + @Parent() customDelegation: DelegationDTO, + ) { + if (!customDelegation.createdByNationalId) { + return null + } + return identityLoader.load(customDelegation.createdByNationalId) + } + + @ResolveField('validTo', () => Date, { nullable: true }) + resolveValidTo(@Parent() delegation: DelegationDTO): Date | undefined { + if (!delegation.validTo) { + return undefined + } + + return delegation.scopes?.every( + (scope) => scope.validTo?.toString() === delegation.validTo?.toString(), + ) + ? delegation.validTo + : undefined + } + + @ResolveField('domain', () => Domain) + async resolveDomain( + @Loader(DomainLoader) domainLoader: DomainDataLoader, + @Parent() delegation: DelegationDTO, + ): Promise<Domain> { + if (!delegation.domainName) { + return { + name: '', + displayName: '', + description: '', + nationalId: '', + organisationLogoKey: '', + } + } + + const domainName = delegation.domainName ?? ISLAND_DOMAIN + const domain = await domainLoader.load({ + lang: 'is', + domain: domainName, + }) + + if (!domain) { + throw new NotFoundException(`Could not find domain: ${domainName}`) + } + + return domain + } +} diff --git a/libs/api/domains/auth-admin/src/lib/delegationAdmin/delegation-admin.service.ts b/libs/api/domains/auth-admin/src/lib/delegationAdmin/delegation-admin.service.ts new file mode 100644 index 000000000000..00b3ee818f2b --- /dev/null +++ b/libs/api/domains/auth-admin/src/lib/delegationAdmin/delegation-admin.service.ts @@ -0,0 +1,49 @@ +import { Injectable } from '@nestjs/common' + +import { + DelegationAdminApi, + DelegationAdminCustomDto, +} from '@island.is/clients/auth/admin-api' +import { Auth, AuthMiddleware, User } from '@island.is/auth-nest-tools' +import { CreateDelegationInput } from './dto/createDelegation.input' + +@Injectable() +export class DelegationAdminService { + constructor(private readonly delegationAdminApi: DelegationAdminApi) {} + + delegationsWithAuth(auth: Auth) { + return this.delegationAdminApi.withMiddleware(new AuthMiddleware(auth)) + } + + async getDelegationAdmin( + user: User, + nationalId: string, + ): Promise<DelegationAdminCustomDto> { + return await this.delegationsWithAuth( + user, + ).delegationAdminControllerGetDelegationAdmin({ + xQueryNationalId: nationalId, + }) + } + + async deleteDelegationAdmin( + user: User, + delegationId: string, + ): Promise<boolean> { + try { + await this.delegationsWithAuth(user).delegationAdminControllerDelete({ + delegationId, + }) + + return true + } catch { + return false + } + } + + async createDelegationAdmin(user: User, input: CreateDelegationInput) { + return this.delegationsWithAuth(user).delegationAdminControllerCreate({ + createPaperDelegationDto: input, + }) + } +} diff --git a/libs/api/domains/auth-admin/src/lib/delegationAdmin/dto/createDelegation.input.ts b/libs/api/domains/auth-admin/src/lib/delegationAdmin/dto/createDelegation.input.ts new file mode 100644 index 000000000000..143a871bb875 --- /dev/null +++ b/libs/api/domains/auth-admin/src/lib/delegationAdmin/dto/createDelegation.input.ts @@ -0,0 +1,25 @@ +import { Field, InputType } from '@nestjs/graphql' +import { IsOptional, IsString } from 'class-validator' + +@InputType() +export class CreateDelegationInput { + @Field(() => String) + @IsString() + fromNationalId!: string + + @Field(() => String) + @IsString() + toNationalId!: string + + @Field(() => Date, { nullable: true }) + @IsOptional() + validTo?: Date + + @Field(() => String) + @IsString() + type!: string + + @Field(() => String) + @IsString() + referenceId!: string +} diff --git a/libs/api/domains/auth-admin/src/lib/delegationAdmin/models/delegation.model.ts b/libs/api/domains/auth-admin/src/lib/delegationAdmin/models/delegation.model.ts new file mode 100644 index 000000000000..a97a1367d554 --- /dev/null +++ b/libs/api/domains/auth-admin/src/lib/delegationAdmin/models/delegation.model.ts @@ -0,0 +1,17 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { CustomDelegation } from '@island.is/api/domains/auth' + +@ObjectType('DelegationAdminCustomModel') +export class DelegationAdminCustomModel { + @Field(() => String, { nullable: false }) + nationalId!: string + + @Field(() => String, { nullable: false }) + name!: string + + @Field(() => [CustomDelegation]) + incoming!: CustomDelegation[] + + @Field(() => [CustomDelegation]) + outgoing!: CustomDelegation[] +} diff --git a/libs/api/domains/auth-admin/src/lib/delegationProvider/delegation-provider.resolver.ts b/libs/api/domains/auth-admin/src/lib/delegationProvider/delegation-provider.resolver.ts index b70c5bbbacb0..6a78581b03b2 100644 --- a/libs/api/domains/auth-admin/src/lib/delegationProvider/delegation-provider.resolver.ts +++ b/libs/api/domains/auth-admin/src/lib/delegationProvider/delegation-provider.resolver.ts @@ -12,7 +12,7 @@ import { DelegationProviderService } from './delegation-provider.service' @UseGuards(IdsUserGuard) @Resolver(() => DelegationProvider) -export class DelegationProviderResolverResolver { +export class DelegationProviderResolver { constructor(private delegationProvider: DelegationProviderService) {} @Query(() => DelegationProviderPayload, { diff --git a/libs/api/domains/auth/src/index.ts b/libs/api/domains/auth/src/index.ts index 781ba4ad68a5..c6bd4b5d90f1 100644 --- a/libs/api/domains/auth/src/index.ts +++ b/libs/api/domains/auth/src/index.ts @@ -3,4 +3,12 @@ export { AuthModule } from './lib/auth.module' export { ClientLoader } from './lib/loaders/client.loader' export type { ClientDataLoader } from './lib/loaders/client.loader' +export { DomainLoader } from './lib/loaders/domain.loader' +export type { DomainDataLoader } from './lib/loaders/domain.loader' + +export { Domain } from './lib/models/domain.model' export { Client } from './lib/models/client.model' +export { DelegationScope } from './lib/models/delegationScope.model' +export { CustomDelegation } from './lib/models/delegation.model' + +export { ISLAND_DOMAIN } from './lib/services/constants' diff --git a/libs/api/domains/auth/src/lib/models/delegation.model.ts b/libs/api/domains/auth/src/lib/models/delegation.model.ts index 6f29dbf20117..48065a23658b 100644 --- a/libs/api/domains/auth/src/lib/models/delegation.model.ts +++ b/libs/api/domains/auth/src/lib/models/delegation.model.ts @@ -6,11 +6,11 @@ import { registerEnumType, } from '@nestjs/graphql' +import { Identity } from '@island.is/api/domains/identity' import { AuthDelegationProvider, AuthDelegationType, } from '@island.is/clients/auth/delegation-api' -import { Identity } from '@island.is/api/domains/identity' import { DelegationScope } from './delegationScope.model' @@ -32,6 +32,10 @@ const exhaustiveCheck = (param: never) => { return PersonalRepresentativeDelegation case AuthDelegationType.Custom: return CustomDelegation + case AuthDelegationType.GeneralMandate: + return GeneralMandate + case AuthDelegationType.LegalRepresentative: + return LegalRepresentativeDelegation default: exhaustiveCheck(delegation.type) } @@ -47,11 +51,17 @@ export abstract class Delegation { @Field(() => Identity) to!: Identity + @Field(() => Identity, { nullable: true }) + createdBy?: Identity + @Field(() => AuthDelegationType) type!: AuthDelegationType @Field(() => AuthDelegationProvider) provider!: AuthDelegationProvider + + @Field(() => String, { nullable: true }) + referenceId?: string } @ObjectType('AuthLegalGuardianDelegation', { @@ -69,6 +79,14 @@ export class ProcuringHolderDelegation extends Delegation {} }) export class PersonalRepresentativeDelegation extends Delegation {} +@ObjectType('AuthGeneralMandate', { + implements: Delegation, +}) +export class GeneralMandate extends Delegation { + @Field(() => Date, { nullable: true }) + validTo?: Date +} + @ObjectType('AuthCustomDelegation', { implements: Delegation, }) @@ -83,6 +101,11 @@ export class CustomDelegation extends Delegation { domainName?: string } +@ObjectType('AuthLegalRepresentativeDelegation', { + implements: Delegation, +}) +export class LegalRepresentativeDelegation extends Delegation {} + @ObjectType('AuthMergedDelegation') export class MergedDelegation { @Field(() => [AuthDelegationType]) diff --git a/libs/api/domains/auth/src/lib/resolvers/delegation.resolver.ts b/libs/api/domains/auth/src/lib/resolvers/delegation.resolver.ts index 0e5058606936..4cec6babcdc0 100644 --- a/libs/api/domains/auth/src/lib/resolvers/delegation.resolver.ts +++ b/libs/api/domains/auth/src/lib/resolvers/delegation.resolver.ts @@ -128,6 +128,17 @@ export class DelegationResolver { ) } + @ResolveField('createdBy', () => Identity, { nullable: true }) + async resolveCreatedBy( + @Parent() delegation: DelegationDTO, + ): Promise<Identity | null> { + if (!delegation.createdByNationalId) { + return null + } + + return this.identityService.getIdentity(delegation.createdByNationalId) + } + @ResolveField('validTo', () => Date, { nullable: true }) resolveValidTo(@Parent() delegation: DelegationDTO): Date | undefined { if (!delegation.validTo) { diff --git a/libs/api/domains/documents/src/lib/document.module.ts b/libs/api/domains/documents/src/lib/document.module.ts index ec76a2873ae2..59c7788956ca 100644 --- a/libs/api/domains/documents/src/lib/document.module.ts +++ b/libs/api/domains/documents/src/lib/document.module.ts @@ -6,9 +6,10 @@ import { DocumentServiceV2 } from './documentV2.service' import { DocumentResolverV1 } from './documentV1.resolver' import { DocumentResolverV2 } from './documentV2.resolver' import { DocumentService } from './documentV1.service' +import { FeatureFlagModule } from '@island.is/nest/feature-flags' @Module({ - imports: [DocumentsClientV2Module, DocumentsClientModule], + imports: [DocumentsClientV2Module, DocumentsClientModule, FeatureFlagModule], providers: [ DocumentResolverV2, DocumentResolverV1, diff --git a/libs/api/domains/documents/src/lib/documentV2.resolver.ts b/libs/api/domains/documents/src/lib/documentV2.resolver.ts index 548c858f4ac5..221a2e87225f 100644 --- a/libs/api/domains/documents/src/lib/documentV2.resolver.ts +++ b/libs/api/domains/documents/src/lib/documentV2.resolver.ts @@ -16,7 +16,11 @@ import { Document as DocumentV2, PaginatedDocuments, } from './models/v2/document.model' - +import { + FeatureFlagGuard, + FeatureFlagService, + Features, +} from '@island.is/nest/feature-flags' import { PostRequestPaperInput } from './dto/postRequestPaperInput' import { DocumentInput } from './models/v2/document.input' import { DocumentServiceV2 } from './documentV2.service' @@ -29,16 +33,20 @@ import { MailActionInput } from './models/v2/bulkMailAction.input' import { DocumentMailAction } from './models/v2/mailAction.model.' import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' import { DocumentV2MarkAllMailAsRead } from './models/v2/markAllMailAsRead.model' +import type { Locale } from '@island.is/shared/types' +import { DocumentConfirmActionsInput } from './models/v2/confirmActions.input' +import { DocumentConfirmActions } from './models/v2/confirmActions.model' const LOG_CATEGORY = 'documents-resolver' -@UseGuards(IdsUserGuard, ScopesGuard) +@UseGuards(IdsUserGuard, ScopesGuard, FeatureFlagGuard) @Resolver(() => PaginatedDocuments) @Audit({ namespace: '@island.is/api/document-v2' }) export class DocumentResolverV2 { constructor( private documentServiceV2: DocumentServiceV2, private readonly auditService: AuditService, + private readonly featureFlagService: FeatureFlagService, @Inject(LOGGER_PROVIDER) private readonly logger: Logger, ) {} @@ -46,8 +54,11 @@ export class DocumentResolverV2 { @Query(() => DocumentV2, { nullable: true, name: 'documentV2' }) async documentV2( @Args('input') input: DocumentInput, + @Args('locale', { type: () => String, nullable: true }) + locale: Locale = 'is', @CurrentUser() user: User, ): Promise<DocumentV2 | null> { + const ffEnabled = await this.getFeatureFlag() try { return await this.auditService.auditPromise( { @@ -55,8 +66,16 @@ export class DocumentResolverV2 { namespace: '@island.is/api/document-v2', action: 'getDocument', resources: input.id, + meta: { includeDocument: input.includeDocument }, }, - this.documentServiceV2.findDocumentById(user.nationalId, input.id), + ffEnabled + ? this.documentServiceV2.findDocumentByIdV3( + user.nationalId, + input.id, + locale, + input.includeDocument, + ) + : this.documentServiceV2.findDocumentById(user.nationalId, input.id), ) } catch (e) { this.logger.info('failed to get single document', { @@ -71,13 +90,36 @@ export class DocumentResolverV2 { @Scopes(DocumentsScope.main) @Query(() => PaginatedDocuments, { nullable: true }) @Audit() - documentsV2( + async documentsV2( @Args('input') input: DocumentsInput, @CurrentUser() user: User, ): Promise<PaginatedDocuments> { + const ffEnabled = await this.getFeatureFlag() + if (ffEnabled) + return this.documentServiceV2.listDocumentsV3(user.nationalId, input) return this.documentServiceV2.listDocuments(user.nationalId, input) } + @Scopes(DocumentsScope.main) + @Query(() => DocumentConfirmActions, { + nullable: true, + name: 'documentV2ConfirmActions', + }) + async confirmActions( + @Args('input') input: DocumentConfirmActionsInput, + @CurrentUser() user: User, + ) { + this.auditService.audit({ + auth: user, + namespace: '@island.is/api/document-v2', + action: 'confirmModal', + resources: input.id, + meta: { confirmed: input.confirmed }, + }) + + return { id: input.id, confirmed: input.confirmed } + } + @ResolveField('categories', () => [Category]) documentCategories(@CurrentUser() user: User): Promise<Array<Category>> { return this.documentServiceV2.getCategories(user.nationalId) @@ -175,4 +217,11 @@ export class DocumentResolverV2 { throw e } } + + private async getFeatureFlag(): Promise<boolean> { + return await this.featureFlagService.getValue( + Features.isServicePortalDocumentsV3PageEnabled, + false, + ) + } } diff --git a/libs/api/domains/documents/src/lib/documentV2.service.ts b/libs/api/domains/documents/src/lib/documentV2.service.ts index a55b1873eb34..623dc709a431 100644 --- a/libs/api/domains/documents/src/lib/documentV2.service.ts +++ b/libs/api/domains/documents/src/lib/documentV2.service.ts @@ -1,5 +1,8 @@ import { Inject, Injectable } from '@nestjs/common' -import { DocumentsClientV2Service } from '@island.is/clients/documents-v2' +import { + DocumentsClientV2Service, + MessageAction, +} from '@island.is/clients/documents-v2' import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' import { isDefined } from '@island.is/shared/utils' import { Category } from './models/v2/category.model' @@ -8,6 +11,7 @@ import { PaginatedDocuments, Document, DocumentPageNumber, + Action, } from './models/v2/document.model' import type { ConfigType } from '@island.is/nest/config' import { DocumentsInput } from './models/v2/documents.input' @@ -18,6 +22,7 @@ import { HEALTH_CATEGORY_ID } from './document.types' import { Type } from './models/v2/type.model' import { DownloadServiceConfig } from '@island.is/nest/config' import { DocumentV2MarkAllMailAsRead } from './models/v2/markAllMailAsRead.model' +import type { Locale } from '@island.is/shared/types' const LOG_CATEGORY = 'documents-api-v2' @Injectable() @@ -74,6 +79,78 @@ export class DocumentServiceV2 { } } + async findDocumentByIdV3( + nationalId: string, + documentId: string, + locale?: Locale, + includeDocument?: boolean, + ): Promise<Document | null> { + const document = await this.documentService.getCustomersDocument( + nationalId, + documentId, + locale, + includeDocument, + ) + + if (!document) { + return null // Null document logged in clients-documents-v2 + } + + let type: FileType + switch (document.fileType) { + case 'html': + type = FileType.HTML + break + case 'pdf': + type = FileType.PDF + break + case 'url': + type = FileType.URL + break + default: + type = FileType.UNKNOWN + } + // Data for the confirmation modal + let confirmation = document.actions?.find( + (action) => action.type === 'confirmation', + ) + if ( + !isDefined(confirmation?.title) || + confirmation?.title === '' || + confirmation?.data === '' || + !isDefined(confirmation?.data) + ) { + confirmation = undefined + } + + // Data for the alert box + const alert = document.actions?.find((action) => action.type === 'alert') + const actions = document.actions?.filter( + (action) => action.type !== 'alert' && action.type !== 'confirmation', + ) + return { + ...document, + publicationDate: document.date, + id: documentId, + name: document.fileName, + downloadUrl: `${this.downloadServiceConfig.baseUrl}/download/v1/electronic-documents/${documentId}`, + sender: { + id: document.senderNationalId, + name: document.senderName, + }, + content: document.content + ? { + type, + value: document.content, + } + : undefined, + isUrgent: document.urgent, + actions: this.actionMapper(documentId, actions), + confirmation: confirmation, + alert: alert, + } + } + async listDocuments( nationalId: string, input: DocumentsInput, @@ -137,6 +214,69 @@ export class DocumentServiceV2 { } } + async listDocumentsV3( + nationalId: string, + input: DocumentsInput, + ): Promise<PaginatedDocuments> { + //If a delegated user is viewing the mailbox, do not return any health related data + //Category is now "1,2,3,...,n" + const { categoryIds, ...restOfInput } = input + let mutableCategoryIds = categoryIds ?? [] + + if (input.isLegalGuardian) { + if (!mutableCategoryIds.length) { + mutableCategoryIds = (await this.getCategories(nationalId, true)).map( + (c) => c.id, + ) + } else { + mutableCategoryIds = mutableCategoryIds.filter( + (c) => c === HEALTH_CATEGORY_ID, + ) + } + } + + const documents = await this.documentService.getDocumentList({ + ...restOfInput, + categoryId: mutableCategoryIds.join(), + nationalId, + }) + + if (typeof documents?.totalCount !== 'number') { + this.logger.warn('Document total count unavailable', { + category: LOG_CATEGORY, + totalCount: documents?.totalCount, + }) + } + const documentData: Array<Document> = + documents?.documents + .map((d) => { + if (!d) { + return null + } + + return { + ...d, + id: d.id, + downloadUrl: `${this.downloadServiceConfig.baseUrl}/download/v1/electronic-documents/${d.id}`, + sender: { + name: d.senderName, + id: d.senderNationalId, + }, + isUrgent: d.urgent, + } + }) + .filter(isDefined) ?? [] + + return { + data: documentData, + totalCount: documents?.totalCount ?? 0, + unreadCount: documents?.unreadCount, + pageInfo: { + hasNextPage: false, + }, + } + } + async getCategories( nationalId: string, filterHealth = false, @@ -201,14 +341,26 @@ export class DocumentServiceV2 { documentId: string, pageSize: number, ): Promise<DocumentPageNumber> { - const res = await this.documentService.getPageNumber( - nationalId, - documentId, - pageSize, - ) + const defaultRes = 1 + try { + const res = await this.documentService.getPageNumber( + nationalId, + documentId, + pageSize, + ) - return { - pageNumber: res ?? 1, + return { + pageNumber: res ?? defaultRes, + } + } catch (exception) { + this.logger.warn('Document page number error', { + category: LOG_CATEGORY, + documentId, + error: exception, + }) + return { + pageNumber: defaultRes, + } } } @@ -319,4 +471,46 @@ export class DocumentServiceV2 { throw new Error('Invalid single document action') } } + + private actionMapper = (id: string, actions?: Array<MessageAction>) => { + if (actions === undefined) return undefined + const hasEmpty = actions.every( + (x) => + x?.data === undefined || + x.title === undefined || + x.title === '' || + x.data === '', + ) + + // we return the document even if the actions are faulty, logged for tracability + if (hasEmpty) { + this.logger.warn('No title or data in actions array', { + category: LOG_CATEGORY, + id, + }) + return undefined + } + + const mapped: Array<Action> = actions?.map((x) => { + if (x.type === 'file') { + return { + ...x, + icon: 'download', + data: `${this.downloadServiceConfig.baseUrl}/download/v1/electronic-documents/${id}`, + } + } + if (x.type === 'url') { + return { + ...x, + icon: 'open', + } + } + return { + ...x, + icon: 'receipt', + } + }) + + return mapped + } } diff --git a/libs/api/domains/documents/src/lib/models/v2/confirmActions.input.ts b/libs/api/domains/documents/src/lib/models/v2/confirmActions.input.ts new file mode 100644 index 000000000000..12128a9e50d9 --- /dev/null +++ b/libs/api/domains/documents/src/lib/models/v2/confirmActions.input.ts @@ -0,0 +1,12 @@ +import { InputType, Field } from '@nestjs/graphql' +import { IsString } from 'class-validator' + +@InputType('DocumentConfirmActionsInput') +export class DocumentConfirmActionsInput { + @Field() + @IsString() + readonly id!: string + + @Field(() => Boolean, { nullable: true }) + readonly confirmed?: boolean +} diff --git a/libs/api/domains/documents/src/lib/models/v2/confirmActions.model.ts b/libs/api/domains/documents/src/lib/models/v2/confirmActions.model.ts new file mode 100644 index 000000000000..35e2fb23b03a --- /dev/null +++ b/libs/api/domains/documents/src/lib/models/v2/confirmActions.model.ts @@ -0,0 +1,12 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { IsString } from 'class-validator' + +@ObjectType('DocumentConfirmActions') +export class DocumentConfirmActions { + @Field() + @IsString() + readonly id!: string + + @Field(() => Boolean, { nullable: true }) + readonly confirmed?: boolean +} diff --git a/libs/api/domains/documents/src/lib/models/v2/document.input.ts b/libs/api/domains/documents/src/lib/models/v2/document.input.ts index c9ecda252413..eca763e42f77 100644 --- a/libs/api/domains/documents/src/lib/models/v2/document.input.ts +++ b/libs/api/domains/documents/src/lib/models/v2/document.input.ts @@ -14,4 +14,7 @@ export class DocumentInput { @Field({ defaultValue: 10 }) readonly pageSize!: number + + @Field(() => Boolean, { nullable: true, defaultValue: true }) + readonly includeDocument?: boolean } diff --git a/libs/api/domains/documents/src/lib/models/v2/document.model.ts b/libs/api/domains/documents/src/lib/models/v2/document.model.ts index 2516cca5d31e..adf37db1ff02 100644 --- a/libs/api/domains/documents/src/lib/models/v2/document.model.ts +++ b/libs/api/domains/documents/src/lib/models/v2/document.model.ts @@ -5,6 +5,21 @@ import { PaginatedResponse } from '@island.is/nest/pagination' import { Category } from './category.model' import { Type } from './type.model' +@ObjectType('DocumentV2Action') +export class Action { + @Field({ nullable: true }) + title?: string + + @Field({ nullable: true }) + type?: string + + @Field({ nullable: true }) + data?: string + + @Field({ nullable: true }) + icon?: string +} + @ObjectType('DocumentV2') export class Document { @Field(() => ID) @@ -45,6 +60,18 @@ export class Document { description: 'URL in download service. For downloading PDFs', }) downloadUrl?: string + + @Field(() => Action, { nullable: true }) + alert?: Action + + @Field(() => Action, { nullable: true }) + confirmation?: Action + + @Field(() => [Action], { nullable: true }) + actions?: Array<Action> + + @Field(() => Boolean, { nullable: true }) + isUrgent?: boolean } @ObjectType('DocumentsV2') diff --git a/libs/api/domains/documents/src/lib/models/v2/documentContent.model.ts b/libs/api/domains/documents/src/lib/models/v2/documentContent.model.ts index fac02463df0b..2fbf5c02dd09 100644 --- a/libs/api/domains/documents/src/lib/models/v2/documentContent.model.ts +++ b/libs/api/domains/documents/src/lib/models/v2/documentContent.model.ts @@ -14,8 +14,9 @@ export class DocumentContent { @Field(() => FileType) type!: FileType - @Field({ + @Field(() => String, { description: 'Either pdf base64 string, html markup string, or an url', + nullable: true, }) - value!: string + value?: string | null } diff --git a/libs/api/domains/driving-license/src/lib/drivingLicense.service.ts b/libs/api/domains/driving-license/src/lib/drivingLicense.service.ts index 26a3a1af72e1..4c524d48bd26 100644 --- a/libs/api/domains/driving-license/src/lib/drivingLicense.service.ts +++ b/libs/api/domains/driving-license/src/lib/drivingLicense.service.ts @@ -15,6 +15,7 @@ import { QualitySignatureResult, NewBEDrivingLicenseInput, DrivinglicenseDuplicateValidityStatus, + PostRenewal65AndOverInput, } from './drivingLicense.type' import { CanApplyErrorCodeBFull, @@ -355,8 +356,15 @@ export class DrivingLicenseService { } } - async canApplyFor(type: 'B-full' | 'B-temp' | 'BE', token: string) { - if (type === 'B-full') { + async canApplyFor( + type: 'B-full' | 'B-temp' | 'BE' | 'B-full-renewal-65', + token: string, + ) { + if (type === 'B-full-renewal-65') { + return this.drivingLicenseApi.getCanApplyForRenewal65({ + token, + }) + } else if (type === 'B-full') { return this.drivingLicenseApi.getCanApplyForCategoryFull({ category: 'B', token, @@ -504,6 +512,20 @@ export class DrivingLicenseService { } } + async renewDrivingLicense65AndOver( + auth: User['authorization'], + input: PostRenewal65AndOverInput, + ): Promise<NewDrivingLicenseResult> { + const response = await this.drivingLicenseApi.postRenewLicenseOver65({ + input, + auth: auth, + }) + return { + success: response.isOk ?? false, + errorMessage: response.errorCode ?? null, + } + } + async applyForBELicense( nationalId: User['nationalId'], auth: User['authorization'], diff --git a/libs/api/domains/driving-license/src/lib/drivingLicense.type.ts b/libs/api/domains/driving-license/src/lib/drivingLicense.type.ts index 24a6d5062b98..ae76feed4c49 100644 --- a/libs/api/domains/driving-license/src/lib/drivingLicense.type.ts +++ b/libs/api/domains/driving-license/src/lib/drivingLicense.type.ts @@ -9,6 +9,17 @@ export interface DrivingLicenseType { export type DrivingLicenseApplicationType = 'B-full' | 'B-temp' | 'BE' +export interface PostRenewal65AndOverInput { + districtId?: number + pickupPlasticAtDistrict?: boolean | null + sendPlasticToPerson?: boolean | null +} + +export enum Pickup { + 'POST' = 'post', + 'DISTRICT' = 'district', +} + export interface NewDrivingLicenseInput { jurisdictionId: number needsToPresentHealthCertificate: boolean @@ -74,6 +85,7 @@ export enum RequirementKey { hasHadValidCategoryForFiveYearsOrMore = 'HasHadValidCategoryForFiveYearsOrMore', //TODO: Remove when RLS/SGS supports health certificate in BE license beRequiresHealthCertificate = 'beRequiresHealthCertificate', + noExtendedDrivingLicense = 'NoExtendedDrivingLicense', } export interface ApplicationEligibilityRequirement { diff --git a/libs/api/domains/education/src/index.ts b/libs/api/domains/education/src/index.ts index 1cd8bd060753..f26cea140246 100644 --- a/libs/api/domains/education/src/index.ts +++ b/libs/api/domains/education/src/index.ts @@ -1 +1,2 @@ export * from './lib/education.module' +export * from './lib/educationV2.module' diff --git a/libs/api/domains/education/src/lib/education.utils.ts b/libs/api/domains/education/src/lib/education.utils.ts index 56e42a562df0..2d4ce1743baa 100644 --- a/libs/api/domains/education/src/lib/education.utils.ts +++ b/libs/api/domains/education/src/lib/education.utils.ts @@ -1,3 +1,5 @@ +import getYear from 'date-fns/getYear' + export const getYearInterval = (dates: string[]) => { const sortedDates = dates .map((date) => new Date(date)) @@ -6,3 +8,22 @@ export const getYearInterval = (dates: string[]) => { const endYear = sortedDates.slice(-1)[0].getFullYear() return startYear === endYear ? `${startYear}` : `${startYear} - ${endYear}` } + +export const generateExamDateSpan = ( + firstDate?: Date, + lastDate?: Date, +): string | null => { + if (firstDate && lastDate) { + return `${getYear(firstDate)} - ${getYear(lastDate)}` + } + + if (firstDate) { + return `${getYear(firstDate)}` + } + + if (lastDate) { + return `${getYear(lastDate)}` + } + + return null +} diff --git a/libs/api/domains/education/src/lib/educationMapper.ts b/libs/api/domains/education/src/lib/educationMapper.ts new file mode 100644 index 000000000000..80998ecac3d4 --- /dev/null +++ b/libs/api/domains/education/src/lib/educationMapper.ts @@ -0,0 +1,58 @@ +import { StudentAssessmentsDto } from '@island.is/clients/mms/grade' +import { generateExamDateSpan } from './education.utils' +import { StudentCareer } from './models/studentCareer.model' + +export const mapCareer = ( + data: StudentAssessmentsDto, + isChildOfUser?: boolean, +): StudentCareer | undefined => { + const { firstAssessmentYear, lastAssessmentYear } = + data.assessmentsOverview.assessmentsYearSpan + + return { + nationalId: data?.nationalId, + name: data?.name, + isChildOfUser, + examDateSpan: + generateExamDateSpan(firstAssessmentYear, lastAssessmentYear) ?? '', + examResults: (data?.assessmentsOverview.assessments ?? []).map((a) => ({ + gradeLevel: a.gradeLevel, + coursesExamResults: a.courses.map((c) => ({ + label: c.title, + totalGrade: { + compulsorySchoolGrade: c.gradeHistory.compulsorySchoolGrade, + serialGrade: c.gradeHistory.nationalCoordinationGrade, + }, + competence: { + competencyGrade: c.competencyGrade, + competencyStatus: c.competencyGradeStatus, + }, + gradeCategories: [ + ...c.grades.map((g) => ({ + label: g.title, + grade: { + compulsorySchoolGrade: { + grade: g.compulsorySchoolGrade.grade, + weight: g.compulsorySchoolGrade.weight, + label: g.compulsorySchoolGrade.title, + }, + serialGrade: { + grade: g.nationalCoordinationGrade.grade, + weight: g.nationalCoordinationGrade.weight, + label: g.nationalCoordinationGrade.title, + }, + }, + })), + { + label: c.wordsAndNumberProblemsGrade.title, + text: c.wordsAndNumberProblemsGrade.grade, + }, + { + label: c.improvement.title, + text: c.improvement.grade, + }, + ], + })), + })), + } +} diff --git a/libs/api/domains/education/src/lib/educationV2.module.ts b/libs/api/domains/education/src/lib/educationV2.module.ts new file mode 100644 index 000000000000..a47d0cbd0d37 --- /dev/null +++ b/libs/api/domains/education/src/lib/educationV2.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common' +import { GradesClientModule } from '@island.is/clients/mms/grade' +import { GradesResolver } from './graphql/grades.resolver' +import { EducationServiceV2 } from './educationV2.service' + +@Module({ + imports: [GradesClientModule], + providers: [GradesResolver, EducationServiceV2], +}) +export class EducationV2Module {} diff --git a/libs/api/domains/education/src/lib/educationV2.service.ts b/libs/api/domains/education/src/lib/educationV2.service.ts new file mode 100644 index 000000000000..ada2e43ed00d --- /dev/null +++ b/libs/api/domains/education/src/lib/educationV2.service.ts @@ -0,0 +1,40 @@ +import { Injectable, Inject } from '@nestjs/common' +import { GradeClientService } from '@island.is/clients/mms/grade' +import { User } from '@island.is/auth-nest-tools' +import { FamilyCompulsorySchoolCareer } from './models/familyCareer.model' +import { mapCareer } from './educationMapper' +import { isDefined } from '@island.is/shared/utils' +import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' + +@Injectable() +export class EducationServiceV2 { + constructor( + private readonly gradeService: GradeClientService, + @Inject(LOGGER_PROVIDER) private readonly logger: Logger, + ) {} + + async familyCareers( + user: User, + ): Promise<FamilyCompulsorySchoolCareer | null> { + const data = await this.gradeService.getUserFamilyStudentAssessments(user) + + if (!data) { + return null + } + + const userData = data.find((d) => d.nationalId === user.nationalId) + const familyData = data.filter((d) => d.nationalId !== user.nationalId) + + if (!userData?.nationalId || !userData?.name) { + return null + } + + return { + userCareer: mapCareer(userData, false), + familyMemberCareers: familyData + .filter((d) => d.nationalId !== user.nationalId) + .map((data) => mapCareer(data, true)) + .filter(isDefined), + } + } +} diff --git a/libs/api/domains/education/src/lib/graphql/frigg.resolver.ts b/libs/api/domains/education/src/lib/graphql/frigg.resolver.ts index 5a009eac74d1..6a9fb851d3b8 100644 --- a/libs/api/domains/education/src/lib/graphql/frigg.resolver.ts +++ b/libs/api/domains/education/src/lib/graphql/frigg.resolver.ts @@ -1,20 +1,22 @@ -import { Args, Query, Resolver } from '@nestjs/graphql' - -import { UseGuards } from '@nestjs/common' - +import type { User } from '@island.is/auth-nest-tools' import { CurrentUser, IdsUserGuard, Scopes, ScopesGuard, } from '@island.is/auth-nest-tools' - -import type { User } from '@island.is/auth-nest-tools' import { ApiScope } from '@island.is/auth/scopes' -import { FriggClientService, KeyOption } from '@island.is/clients/mms/frigg' +import { + FriggClientService, + KeyOption, + OrganizationModel, +} from '@island.is/clients/mms/frigg' +import { UseGuards } from '@nestjs/common' +import { Args, Query, Resolver } from '@nestjs/graphql' import { KeyOptionModel } from './frigg/keyOption.model' import { FriggOptionListInput } from './frigg/optionList.input' +import { FriggOrganizationModel } from './frigg/organization.model' @UseGuards(IdsUserGuard, ScopesGuard) @Scopes(ApiScope.internal) @@ -30,4 +32,11 @@ export class FriggResolver { ): Promise<KeyOption[]> { return this.friggClientService.getAllKeyOptions(user, input.type) } + + @Query(() => [FriggOrganizationModel], { nullable: true }) + friggSchoolsByMunicipality( + @CurrentUser() user: User, + ): Promise<OrganizationModel[]> { + return this.friggClientService.getAllSchoolsByMunicipality(user) + } } diff --git a/libs/api/domains/education/src/lib/graphql/frigg/organization.model.ts b/libs/api/domains/education/src/lib/graphql/frigg/organization.model.ts new file mode 100644 index 000000000000..649737b3fa6e --- /dev/null +++ b/libs/api/domains/education/src/lib/graphql/frigg/organization.model.ts @@ -0,0 +1,32 @@ +import { Field, ObjectType, registerEnumType } from '@nestjs/graphql' + +export enum OrganizationModelTypeEnum { + Municipality = 'municipality', + National = 'national', + School = 'school', +} + +registerEnumType(OrganizationModelTypeEnum, { + name: 'OrganizationModelTypeEnum', +}) + +@ObjectType('EducationFriggOrganizationModel') +export class FriggOrganizationModel { + @Field() + id!: string + + @Field() + nationalId!: string + + @Field() + name!: string + + @Field(() => OrganizationModelTypeEnum) + type!: OrganizationModelTypeEnum + + @Field(() => [String], { nullable: true }) + gradeLevels?: string[] + + @Field(() => [FriggOrganizationModel], { nullable: true }) + children?: FriggOrganizationModel[] +} diff --git a/libs/api/domains/education/src/lib/graphql/grades.resolver.ts b/libs/api/domains/education/src/lib/graphql/grades.resolver.ts new file mode 100644 index 000000000000..4722039fea98 --- /dev/null +++ b/libs/api/domains/education/src/lib/graphql/grades.resolver.ts @@ -0,0 +1,30 @@ +import { ApiScope } from '@island.is/auth/scopes' +import { Query, Resolver } from '@nestjs/graphql' +import { UseGuards } from '@nestjs/common' + +import type { User } from '@island.is/auth-nest-tools' +import { + IdsUserGuard, + ScopesGuard, + CurrentUser, + Scopes, +} from '@island.is/auth-nest-tools' +import { Audit } from '@island.is/nest/audit' +import { EducationServiceV2 } from '../educationV2.service' +import { FamilyCompulsorySchoolCareer } from '../models/familyCareer.model' + +@UseGuards(IdsUserGuard, ScopesGuard) +@Audit({ namespace: '@island.is/api/education/grade' }) +@Resolver() +export class GradesResolver { + constructor(private readonly educationService: EducationServiceV2) {} + + @Query(() => FamilyCompulsorySchoolCareer) + @Scopes(ApiScope.education) + @Audit() + userFamilyExamResults( + @CurrentUser() user: User, + ): Promise<FamilyCompulsorySchoolCareer | null> { + return this.educationService.familyCareers(user) + } +} diff --git a/libs/api/domains/education/src/lib/models/competence.model.ts b/libs/api/domains/education/src/lib/models/competence.model.ts new file mode 100644 index 000000000000..d486cedb9510 --- /dev/null +++ b/libs/api/domains/education/src/lib/models/competence.model.ts @@ -0,0 +1,10 @@ +import { Field, ObjectType } from '@nestjs/graphql' + +@ObjectType('EducationCompulsorySchoolCourseCompetence') +export class CourseCompetence { + @Field() + competencyGrade!: string + + @Field({ nullable: true }) + competenceStatus?: string +} diff --git a/libs/api/domains/education/src/lib/models/course.model.ts b/libs/api/domains/education/src/lib/models/course.model.ts new file mode 100644 index 000000000000..3094802acc99 --- /dev/null +++ b/libs/api/domains/education/src/lib/models/course.model.ts @@ -0,0 +1,19 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { CourseCompetence } from './competence.model' +import { GradeCategory } from './gradeCategory.model' +import { Grade } from './grade.model' + +@ObjectType('EducationCompulsorySchoolCourse') +export class Course { + @Field() + label!: string + + @Field(() => Grade, { nullable: true }) + totalGrade?: Grade + + @Field(() => CourseCompetence) + competence!: CourseCompetence + + @Field(() => [GradeCategory], { nullable: true }) + gradeCategories!: Array<GradeCategory> +} diff --git a/libs/api/domains/education/src/lib/models/familyCareer.model.ts b/libs/api/domains/education/src/lib/models/familyCareer.model.ts new file mode 100644 index 000000000000..9bda063bf814 --- /dev/null +++ b/libs/api/domains/education/src/lib/models/familyCareer.model.ts @@ -0,0 +1,11 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { StudentCareer } from './studentCareer.model' + +@ObjectType('EducationUserFamilyCompulsorySchoolCareer') +export class FamilyCompulsorySchoolCareer { + @Field(() => StudentCareer, { nullable: true }) + userCareer?: StudentCareer + + @Field(() => [StudentCareer], { nullable: true }) + familyMemberCareers?: Array<StudentCareer> +} diff --git a/libs/api/domains/education/src/lib/models/grade.model.ts b/libs/api/domains/education/src/lib/models/grade.model.ts new file mode 100644 index 000000000000..0dbb2cd1951d --- /dev/null +++ b/libs/api/domains/education/src/lib/models/grade.model.ts @@ -0,0 +1,11 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { GradeDetail } from './gradeDetail.model' + +@ObjectType('EducationCompulsorySchoolGrade') +export class Grade { + @Field(() => GradeDetail) + compulsorySchoolGrade!: GradeDetail + + @Field(() => GradeDetail, { description: 'National standardised test grade' }) + serialGrade!: GradeDetail +} diff --git a/libs/api/domains/education/src/lib/models/gradeCategory.model.ts b/libs/api/domains/education/src/lib/models/gradeCategory.model.ts new file mode 100644 index 000000000000..2597be8f1882 --- /dev/null +++ b/libs/api/domains/education/src/lib/models/gradeCategory.model.ts @@ -0,0 +1,17 @@ +import { Field, InterfaceType } from '@nestjs/graphql' +import { GradeCategoryText } from './gradeCategoryText.model' +import { GradeCategoryWeighted } from './gradeCategoryWeighted.model' + +@InterfaceType('EducationCompulsorySchoolGradeCategory', { + resolveType(res) { + if (res.text) { + return GradeCategoryText + } + + return GradeCategoryWeighted + }, +}) +export abstract class GradeCategory { + @Field() + label!: string +} diff --git a/libs/api/domains/education/src/lib/models/gradeCategoryText.model.ts b/libs/api/domains/education/src/lib/models/gradeCategoryText.model.ts new file mode 100644 index 000000000000..c120ae8fc17f --- /dev/null +++ b/libs/api/domains/education/src/lib/models/gradeCategoryText.model.ts @@ -0,0 +1,13 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { GradeCategory } from './gradeCategory.model' + +@ObjectType('EducationCompulsorySchoolGradeCategoryText', { + implements: () => GradeCategory, +}) +export class GradeCategoryText implements GradeCategory { + @Field() + label!: string + + @Field() + text!: string +} diff --git a/libs/api/domains/education/src/lib/models/gradeCategoryWeighted.model.ts b/libs/api/domains/education/src/lib/models/gradeCategoryWeighted.model.ts new file mode 100644 index 000000000000..4bd955b95066 --- /dev/null +++ b/libs/api/domains/education/src/lib/models/gradeCategoryWeighted.model.ts @@ -0,0 +1,14 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { GradeCategory } from './gradeCategory.model' +import { Grade } from './grade.model' + +@ObjectType('EducationCompulsorySchoolGradeCategoryWeighted', { + implements: () => GradeCategory, +}) +export class GradeCategoryWeighted implements GradeCategory { + @Field() + label!: string + + @Field(() => Grade) + grade!: Grade +} diff --git a/libs/api/domains/education/src/lib/models/gradeDetail.model.ts b/libs/api/domains/education/src/lib/models/gradeDetail.model.ts new file mode 100644 index 000000000000..a90dbc4e0e0f --- /dev/null +++ b/libs/api/domains/education/src/lib/models/gradeDetail.model.ts @@ -0,0 +1,13 @@ +import { Field, Int, ObjectType } from '@nestjs/graphql' + +@ObjectType('EducationCompulsorySchoolGradeDetail') +export class GradeDetail { + @Field() + grade!: string + + @Field(() => Int, { nullable: true }) + weight?: number + + @Field({ nullable: true }) + label?: string +} diff --git a/libs/api/domains/education/src/lib/models/gradeLevelExamResults.model.ts b/libs/api/domains/education/src/lib/models/gradeLevelExamResults.model.ts new file mode 100644 index 000000000000..534cc36ed1c1 --- /dev/null +++ b/libs/api/domains/education/src/lib/models/gradeLevelExamResults.model.ts @@ -0,0 +1,11 @@ +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Course } from './course.model' + +@ObjectType('EducationCompulsorySchoolGradeLevelExamResults') +export class CompulsorySchoolGradeLevelExamResults { + @Field(() => Int) + gradeLevel!: number + + @Field(() => [Course], { nullable: true }) + coursesExamResults?: Array<Course> +} diff --git a/libs/api/domains/education/src/lib/models/studentCareer.model.ts b/libs/api/domains/education/src/lib/models/studentCareer.model.ts new file mode 100644 index 000000000000..cd01a2fe12f6 --- /dev/null +++ b/libs/api/domains/education/src/lib/models/studentCareer.model.ts @@ -0,0 +1,20 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { CompulsorySchoolGradeLevelExamResults } from './gradeLevelExamResults.model' + +@ObjectType('EducationCompulsorySchoolStudentCareer') +export class StudentCareer { + @Field() + nationalId!: string + + @Field() + name!: string + + @Field({ nullable: true }) + isChildOfUser?: boolean + + @Field({ nullable: true }) + examDateSpan?: string + + @Field(() => [CompulsorySchoolGradeLevelExamResults], { nullable: true }) + examResults?: Array<CompulsorySchoolGradeLevelExamResults> +} diff --git a/libs/api/domains/education/src/lib/s3.service.ts b/libs/api/domains/education/src/lib/s3.service.ts index 737789e269ff..f49a723e6c1b 100644 --- a/libs/api/domains/education/src/lib/s3.service.ts +++ b/libs/api/domains/education/src/lib/s3.service.ts @@ -1,64 +1,64 @@ -import { Injectable, Inject } from '@nestjs/common' -import { S3Client, GetObjectCommand } from '@aws-sdk/client-s3' -import { Upload } from '@aws-sdk/lib-storage' -import { getSignedUrl } from '@aws-sdk/s3-request-presigner' +import { Injectable } from '@nestjs/common' +import { Inject } from '@nestjs/common' +import { S3 } from 'aws-sdk' import { Response } from 'node-fetch' -import { Readable } from 'stream' +import stream from 'stream' import type { Logger } from '@island.is/logging' import { LOGGER_PROVIDER } from '@island.is/logging' -import { CompleteMultipartUploadOutput } from '@aws-sdk/client-s3' type S3Location = { fileName: string bucket: string } +type FileUpload = { + passThrough: stream.PassThrough + promise: Promise<S3.ManagedUpload.SendData> +} + @Injectable() export class S3Service { - private readonly s3Client: S3Client + private readonly s3: S3 constructor( @Inject(LOGGER_PROVIDER) private readonly logger: Logger, ) { - this.s3Client = new S3Client({ apiVersion: '2006-03-01' }) + this.s3 = new S3({ apiVersion: '2006-03-01' }) } - private async uploadFromStream( + private uploadFromStream( fileResponse: Response, { fileName, bucket }: S3Location, - ): Promise<CompleteMultipartUploadOutput> { - const upload = new Upload({ - client: this.s3Client, - params: { + ): FileUpload { + const passThrough = new stream.PassThrough() + const promise = this.s3 + .upload({ Bucket: bucket, Key: fileName, ContentType: 'application/pdf', - Body: fileResponse.body as Readable, - }, - }) - - this.logger.debug(`Uploading to bucket`, { - fileName, - bucket, - }) - return await upload.done() + Body: passThrough, + }) + .promise() + return { passThrough, promise } } async uploadFileFromStream( stream: Response, s3Location: S3Location, ): Promise<string | null> { - return this.uploadFromStream(stream, s3Location) - .then(async () => { + const { passThrough, promise } = this.uploadFromStream(stream, s3Location) + + stream.body.pipe(passThrough) + + return promise + .then((result) => { const oneMinutePlus = 65 // leave extra 5 seconds for network delay - const command = new GetObjectCommand({ + return this.s3.getSignedUrlPromise('getObject', { Bucket: s3Location.bucket, - Key: s3Location.fileName, - }) - return getSignedUrl(this.s3Client, command, { - expiresIn: oneMinutePlus, + Key: result.Key, + Expires: oneMinutePlus, }) }) .catch((err) => { diff --git a/libs/api/domains/email-signup/src/index.ts b/libs/api/domains/email-signup/src/index.ts index 320137f96397..10f04aceda49 100644 --- a/libs/api/domains/email-signup/src/index.ts +++ b/libs/api/domains/email-signup/src/index.ts @@ -1,3 +1,4 @@ export * from './lib/emailSignup.module' export * from './lib/emailSignup.resolver' export * from './lib/services/zenter/zenter.config' +export * from './lib/services/campaignMonitor/campaignMonitor.config' diff --git a/libs/api/domains/email-signup/src/lib/emailSignup.config.ts b/libs/api/domains/email-signup/src/lib/emailSignup.config.ts index 9b2a85537eea..45a8f5fcd12e 100644 --- a/libs/api/domains/email-signup/src/lib/emailSignup.config.ts +++ b/libs/api/domains/email-signup/src/lib/emailSignup.config.ts @@ -6,6 +6,7 @@ const schema = z.object({ fiskistofaZenterPassword: z.string(), fiskistofaZenterClientId: z.string(), fiskistofaZenterClientPassword: z.string(), + vinnueftirlitidCampaignMonitorApiKey: z.string(), }) export const EmailSignupConfig = defineConfig({ @@ -19,6 +20,9 @@ export const EmailSignupConfig = defineConfig({ fiskistofaZenterClientPassword: env.required( 'FISKISTOFA_ZENTER_CLIENT_PASSWORD', ), + vinnueftirlitidCampaignMonitorApiKey: env.required( + 'VINNUEFTIRLITID_CAMPAIGN_MONITOR_API_KEY', + ), } }, }) diff --git a/libs/api/domains/email-signup/src/lib/emailSignup.module.ts b/libs/api/domains/email-signup/src/lib/emailSignup.module.ts index 6cd52190f069..e732c3dddd89 100644 --- a/libs/api/domains/email-signup/src/lib/emailSignup.module.ts +++ b/libs/api/domains/email-signup/src/lib/emailSignup.module.ts @@ -6,12 +6,14 @@ import { EmailSignupResolver } from './emailSignup.resolver' import { EmailSignupService } from './emailSignup.service' import { ZenterSignupService } from './services/zenter/zenter.service' import { MailchimpSignupService } from './services/mailchimp/mailchimp.service' +import { CampaignMonitorSignupService } from './services/campaignMonitor/campaignMonitor.service' @Module({ imports: [CmsModule], providers: [ ZenterSignupService, MailchimpSignupService, + CampaignMonitorSignupService, EmailSignupService, EmailSignupResolver, ], diff --git a/libs/api/domains/email-signup/src/lib/emailSignup.resolver.spec.ts b/libs/api/domains/email-signup/src/lib/emailSignup.resolver.spec.ts index e5729660cfaa..5a9647975fbf 100644 --- a/libs/api/domains/email-signup/src/lib/emailSignup.resolver.spec.ts +++ b/libs/api/domains/email-signup/src/lib/emailSignup.resolver.spec.ts @@ -6,6 +6,7 @@ import { emailSignup } from './fixtures/emailSignup' import { EmailSignupInput } from './dto/emailSignup.input' import { EmailSignupService } from './emailSignup.service' import { ZenterSignupService } from './services/zenter/zenter.service' +import { CampaignMonitorSignupService } from './services/campaignMonitor/campaignMonitor.service' import { MailchimpSignupService } from './services/mailchimp/mailchimp.service' import { ZENTER_IMPORT_ENDPOINT_URL } from './constants' @@ -29,6 +30,15 @@ describe('emailSignupResolver', () => { }) }, }, + { + provide: CampaignMonitorSignupService, + useFactory() { + return new CampaignMonitorSignupService({ + vinnueftirlitidCampaignMonitorApiKey: '', + isConfigured: true, + }) + }, + }, MailchimpSignupService, EmailSignupService, EmailSignupResolver, @@ -154,7 +164,6 @@ describe('emailSignupResolver', () => { ) jest.spyOn(axios, 'post').mockImplementation((url) => { - console.log('yee', url, url === ZENTER_IMPORT_ENDPOINT_URL) return Promise.resolve({ data: url === ZENTER_IMPORT_ENDPOINT_URL ? 1 : 0, }) @@ -170,4 +179,79 @@ describe('emailSignupResolver', () => { expect(result?.subscribed).toBe(true) }) }) + + describe('subscribeToCampaignMonitor', () => { + const testEmailSlice: EmailSignup = { + id: '345', + title: '', + description: '', + configuration: { + signupUrl: 'test.is', + }, + formFields: [ + { + id: '1', + options: [], + placeholder: '', + required: true, + title: '', + type: 'email', + name: 'EmailAddress', + emailConfig: {}, + }, + ], + signupType: 'campaign monitor', + translations: {}, + } + const testInput: EmailSignupInput = { + signupID: '345', + inputFields: [ + { + name: 'EmailAddress', + type: 'email', + value: 'test@example.com', + id: '1', + }, + ], + } + + it('should handle errors from the subscription API', async () => { + jest + .spyOn(cmsContentfulService, 'getEmailSignup') + .mockImplementation(({ id }) => + Promise.resolve(id === '345' ? testEmailSlice : null), + ) + jest.spyOn(axios, 'post').mockImplementation(() => { + return Promise.reject(new Error('Network error')) + }) + + const result = await emailSignupResolver.emailSignupSubscription( + testInput, + ) + + expect(result?.subscribed).toBe(false) + }) + + it('should get a successful response if input is valid', async () => { + jest + .spyOn(cmsContentfulService, 'getEmailSignup') + .mockImplementation(({ id }) => + Promise.resolve(id === '345' ? testEmailSlice : null), + ) + + jest.spyOn(axios, 'post').mockImplementation((_url, data) => { + const EmailAddress = (data as { EmailAddress: string }).EmailAddress + + return Promise.resolve({ + data: EmailAddress === testInput.inputFields[0].value ? 1 : 0, + }) + }) + + const result = await emailSignupResolver.emailSignupSubscription( + testInput, + ) + + expect(result?.subscribed).toBe(true) + }) + }) }) diff --git a/libs/api/domains/email-signup/src/lib/emailSignup.service.ts b/libs/api/domains/email-signup/src/lib/emailSignup.service.ts index cbe8346b02a3..0a35b342d683 100644 --- a/libs/api/domains/email-signup/src/lib/emailSignup.service.ts +++ b/libs/api/domains/email-signup/src/lib/emailSignup.service.ts @@ -4,13 +4,21 @@ import { CmsContentfulService } from '@island.is/cms' import { MailchimpSignupService } from './services/mailchimp/mailchimp.service' import { ZenterSignupService } from './services/zenter/zenter.service' +import { CampaignMonitorSignupService } from './services/campaignMonitor/campaignMonitor.service' import { EmailSignupInput } from './dto/emailSignup.input' +enum SignupType { + Mailchimp = 'mailchimp', + Zenter = 'zenter', + CampaignMonitor = 'campaign monitor', +} + @Injectable() export class EmailSignupService { constructor( private readonly zenterSignupService: ZenterSignupService, private readonly mailchimpSignupService: MailchimpSignupService, + private readonly campaignMonitorSignupService: CampaignMonitorSignupService, private readonly cmsContentfulService: CmsContentfulService, ) {} @@ -28,20 +36,27 @@ export class EmailSignupService { formFieldNames.includes(field.name), ) - if (emailSignupModel.signupType === 'mailchimp') { + if (emailSignupModel.signupType === SignupType.Mailchimp) { return this.mailchimpSignupService.subscribeToMailingList( emailSignupModel, inputFields, ) } - if (emailSignupModel.signupType === 'zenter') { + if (emailSignupModel.signupType === SignupType.Zenter) { return this.zenterSignupService.subscribeToMailingList( emailSignupModel, inputFields, ) } + if (emailSignupModel.signupType === SignupType.CampaignMonitor) { + return this.campaignMonitorSignupService.subscribeToMailingList( + emailSignupModel, + inputFields, + ) + } + return { subscribed: false } } } diff --git a/libs/api/domains/email-signup/src/lib/serviceProvider.ts b/libs/api/domains/email-signup/src/lib/serviceProvider.ts deleted file mode 100644 index faa7acc1c467..000000000000 --- a/libs/api/domains/email-signup/src/lib/serviceProvider.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Provider } from '@nestjs/common' -import { ConfigType, LazyDuringDevScope } from '@island.is/nest/config' -import { EmailSignupConfig } from './emailSignup.config' -import { EmailSignupService } from './emailSignup.service' - -export const EmailSignupServiceProvider: Provider<EmailSignupService> = { - provide: EmailSignupService, - scope: LazyDuringDevScope, - useFactory(config: ConfigType<typeof EmailSignupConfig>) { - return new EmailSignupService(config) - }, - inject: [EmailSignupConfig.KEY], -} diff --git a/libs/api/domains/email-signup/src/lib/services/campaignMonitor/campaignMonitor.config.ts b/libs/api/domains/email-signup/src/lib/services/campaignMonitor/campaignMonitor.config.ts new file mode 100644 index 000000000000..b798dcf52b77 --- /dev/null +++ b/libs/api/domains/email-signup/src/lib/services/campaignMonitor/campaignMonitor.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from '@island.is/nest/config' +import { z } from 'zod' + +const schema = z.object({ + vinnueftirlitidCampaignMonitorApiKey: z.string(), +}) + +export const CampaignMonitorSignupConfig = defineConfig({ + name: 'CampaignMonitorSignup', + schema, + load(env) { + return { + vinnueftirlitidCampaignMonitorApiKey: env.required( + 'VINNUEFTIRLITID_CAMPAIGN_MONITOR_API_KEY', + ), + } + }, +}) diff --git a/libs/api/domains/email-signup/src/lib/services/campaignMonitor/campaignMonitor.service.ts b/libs/api/domains/email-signup/src/lib/services/campaignMonitor/campaignMonitor.service.ts new file mode 100644 index 000000000000..2a7ef5e87f42 --- /dev/null +++ b/libs/api/domains/email-signup/src/lib/services/campaignMonitor/campaignMonitor.service.ts @@ -0,0 +1,48 @@ +import { EmailSignup } from '@island.is/cms' +import { EmailSignupInput } from '../../dto/emailSignup.input' +import axios from 'axios' +import { ConfigType } from '@nestjs/config' +import { Inject, Injectable } from '@nestjs/common' +import { CampaignMonitorSignupConfig } from './campaignMonitor.config' +import { LazyDuringDevScope } from '@island.is/nest/config' + +@Injectable({ scope: LazyDuringDevScope }) +export class CampaignMonitorSignupService { + constructor( + @Inject(CampaignMonitorSignupConfig.KEY) + private readonly config: ConfigType<typeof CampaignMonitorSignupConfig>, + ) {} + + async subscribeToMailingList( + emailSignupModel: EmailSignup, + inputFields: EmailSignupInput['inputFields'], + ) { + const url = (emailSignupModel.configuration?.signupUrl as string) ?? '' + + const API_KEY = this.config.vinnueftirlitidCampaignMonitorApiKey + + const authHeader = `Basic ${Buffer.from(API_KEY + ':').toString('base64')}` + + const map = new Map() + + map.set('ConsentToTrack', 'Yes') + map.set('Resubscribe', true) + + for (const field of inputFields) { + map.set(field.name, field.value) + } + + const obj = Object.fromEntries(map) + + return axios + .post(url, obj, { headers: { Authorization: authHeader } }) + .then((response) => { + return { + subscribed: response?.data?.result === 'error' ? false : true, + } + }) + .catch(() => { + return { subscribed: false } + }) + } +} diff --git a/libs/api/domains/email-signup/src/lib/services/zenter/zenter.service.ts b/libs/api/domains/email-signup/src/lib/services/zenter/zenter.service.ts index b63043c3cfd0..a0a1ba23fc11 100644 --- a/libs/api/domains/email-signup/src/lib/services/zenter/zenter.service.ts +++ b/libs/api/domains/email-signup/src/lib/services/zenter/zenter.service.ts @@ -84,7 +84,7 @@ export class ZenterSignupService { Accept: 'text/plain', }, }) - console.log('response', response.data) + return { subscribed: response.data === 1 } } } diff --git a/libs/api/domains/endorsement-system/src/lib/dto/exportEndorsementList.input.ts b/libs/api/domains/endorsement-system/src/lib/dto/exportEndorsementList.input.ts new file mode 100644 index 000000000000..786b8f151a61 --- /dev/null +++ b/libs/api/domains/endorsement-system/src/lib/dto/exportEndorsementList.input.ts @@ -0,0 +1,10 @@ +import { Field, InputType } from '@nestjs/graphql' + +@InputType() +export class ExportEndorsementListInput { + @Field() + listId!: string + + @Field() + fileType!: string +} diff --git a/libs/api/domains/endorsement-system/src/lib/dto/exportUrl.response.ts b/libs/api/domains/endorsement-system/src/lib/dto/exportUrl.response.ts new file mode 100644 index 000000000000..2643444b05b3 --- /dev/null +++ b/libs/api/domains/endorsement-system/src/lib/dto/exportUrl.response.ts @@ -0,0 +1,7 @@ +import { Field, ObjectType } from '@nestjs/graphql' + +@ObjectType() +export class ExportUrlResponse { + @Field(() => String) + url!: string +} diff --git a/libs/api/domains/endorsement-system/src/lib/endorsementSystem.resolver.ts b/libs/api/domains/endorsement-system/src/lib/endorsementSystem.resolver.ts index acbbcd33b5b0..d1017c1e6e19 100644 --- a/libs/api/domains/endorsement-system/src/lib/endorsementSystem.resolver.ts +++ b/libs/api/domains/endorsement-system/src/lib/endorsementSystem.resolver.ts @@ -28,17 +28,15 @@ import { EndorsementPaginationInput } from './dto/endorsementPagination.input' import { OpenListInput } from './dto/openList.input' import { sendPdfEmailResponse } from './dto/sendPdfEmail.response' import { sendPdfEmailInput } from './dto/sendPdfEmail.input' -import { CacheControl, CacheControlOptions } from '@island.is/nest/graphql' -import { CACHE_CONTROL_MAX_AGE } from '@island.is/shared/constants' -const defaultCache: CacheControlOptions = { maxAge: CACHE_CONTROL_MAX_AGE } +import { ExportUrlResponse } from './dto/exportUrl.response' +import { ExportEndorsementListInput } from './dto/exportEndorsementList.input' @UseGuards(IdsUserGuard) @Resolver(() => EndorsementList) export class EndorsementSystemResolver { constructor(private endorsementSystemService: EndorsementSystemService) {} - @CacheControl({ inheritMaxAge: true }) @ResolveField('ownerName', () => String, { nullable: true }) resolveOwnerName(@Parent() list: EndorsementList): Promise<string | null> { return this.endorsementSystemService.endorsementListControllerGetOwnerName({ @@ -46,7 +44,7 @@ export class EndorsementSystemResolver { }) } - @CacheControl(defaultCache) + // GET /endorsement-list/{listId}/endorsement/exists @Query(() => ExistsEndorsementResponse) async endorsementSystemGetSingleEndorsement( @Args('input') input: FindEndorsementListInput, @@ -58,7 +56,7 @@ export class EndorsementSystemResolver { ) } - @CacheControl(defaultCache) + // GET /endorsement-list/{listId}/endorsement @Query(() => PaginatedEndorsementResponse, { nullable: true }) async endorsementSystemGetEndorsements( @Args('input') input: PaginatedEndorsementInput, @@ -70,6 +68,7 @@ export class EndorsementSystemResolver { ) } + // POST /endorsement-list/{listId}/endorsement @Mutation(() => Endorsement) async endorsementSystemEndorseList( @Args('input') input: CreateEndorsementInput, @@ -81,6 +80,7 @@ export class EndorsementSystemResolver { ) } + // DELETE /endorsement-list/{listId}/endorsement @Mutation(() => Boolean) async endorsementSystemUnendorseList( @Args('input') input: FindEndorsementListInput, @@ -92,7 +92,7 @@ export class EndorsementSystemResolver { ) } - @CacheControl(defaultCache) + // GET /endorsement-list ... by tags @Query(() => PaginatedEndorsementListResponse) async endorsementSystemFindEndorsementLists( @Args('input') input: PaginatedEndorsementListInput, @@ -104,7 +104,7 @@ export class EndorsementSystemResolver { ) } - @CacheControl(defaultCache) + // GET /endorsement-list/general-petition-lists @Query(() => PaginatedEndorsementListResponse) @BypassAuth() async endorsementSystemGetGeneralPetitionLists( @@ -115,7 +115,7 @@ export class EndorsementSystemResolver { ) } - @CacheControl(defaultCache) + // GET /endorsement-list/general-petition-list/{listId} @Query(() => EndorsementList) @BypassAuth() async endorsementSystemGetGeneralPetitionList( @@ -126,7 +126,7 @@ export class EndorsementSystemResolver { ) } - @CacheControl(defaultCache) + // GET /endorsement-list/{listId}/endorsement/general-petition @Query(() => PaginatedEndorsementResponse, { nullable: true }) @BypassAuth() async endorsementSystemGetGeneralPetitionEndorsements( @@ -137,7 +137,7 @@ export class EndorsementSystemResolver { ) } - @CacheControl(defaultCache) + // GET /endorsement-list/{listId} @Query(() => EndorsementList, { nullable: true }) async endorsementSystemGetSingleEndorsementList( @Args('input') input: FindEndorsementListInput, @@ -149,7 +149,7 @@ export class EndorsementSystemResolver { ) } - @CacheControl(defaultCache) + // GET /endorsement-list/endorsements @Query(() => PaginatedEndorsementResponse) async endorsementSystemUserEndorsements( @CurrentUser() user: User, @@ -161,7 +161,7 @@ export class EndorsementSystemResolver { ) } - @CacheControl(defaultCache) + // GET /endorsement-list/endorsementLists @Query(() => PaginatedEndorsementListResponse) async endorsementSystemUserEndorsementLists( @CurrentUser() user: User, @@ -173,6 +173,7 @@ export class EndorsementSystemResolver { ) } + // POST /endorsement-list @Mutation(() => EndorsementList) async endorsementSystemCreateEndorsementList( @Args('input') input: CreateEndorsementListDto, @@ -199,7 +200,7 @@ export class EndorsementSystemResolver { user, ) } - + // PUT /endorsement-list/{listId}/close @Mutation(() => EndorsementList) async endorsementSystemCloseEndorsementList( @Args('input') input: FindEndorsementListInput, @@ -211,6 +212,7 @@ export class EndorsementSystemResolver { ) } + // PUT /endorsement-list/{listId}/open @Mutation(() => EndorsementList) async endorsementSystemOpenEndorsementList( @Args('input') input: OpenListInput, @@ -222,6 +224,7 @@ export class EndorsementSystemResolver { ) } + // PUT /endorsement-list/{listId}/lock @Mutation(() => EndorsementList) async endorsementSystemLockEndorsementList( @Args('input') input: FindEndorsementListInput, @@ -233,6 +236,7 @@ export class EndorsementSystemResolver { ) } + // PUT /endorsement-list/{listId}/unlock @Mutation(() => EndorsementList) async endorsementSystemUnlockEndorsementList( @Args('input') input: FindEndorsementListInput, @@ -254,4 +258,15 @@ export class EndorsementSystemResolver { user, ) } + + @Mutation(() => ExportUrlResponse) + async endorsementSystemExportList( + @Args('input') input: ExportEndorsementListInput, + @CurrentUser() user: User, + ): Promise<ExportUrlResponse> { + return await this.endorsementSystemService.endorsementListControllerExportList( + input, + user, + ) + } } diff --git a/libs/api/domains/endorsement-system/src/lib/endorsementSystem.service.ts b/libs/api/domains/endorsement-system/src/lib/endorsementSystem.service.ts index 2258d9046bd9..eab84ca67cb8 100644 --- a/libs/api/domains/endorsement-system/src/lib/endorsementSystem.service.ts +++ b/libs/api/domains/endorsement-system/src/lib/endorsementSystem.service.ts @@ -20,9 +20,12 @@ import { EndorsementListControllerLockRequest, EndorsementListControllerUnlockRequest, EndorsementListControllerEmailEndorsementsPDFRequest, + EndorsementListControllerExportEndorsementListFileTypeEnum, } from '../../gen/fetch' import { Auth, AuthMiddleware } from '@island.is/auth-nest-tools' import type { Logger } from '@island.is/logging' +import { ExportUrlResponse } from './dto/exportUrl.response' +import { ExportEndorsementListInput } from './dto/exportEndorsementList.input' @Injectable() export class EndorsementSystemService { @@ -219,4 +222,17 @@ export class EndorsementSystemService { .endorsementListControllerEmailEndorsementsPDF(endorsementList) .catch(this.handleError.bind(this)) } + + async endorsementListControllerExportList( + input: ExportEndorsementListInput, + auth: Auth, + ): Promise<ExportUrlResponse> { + return await this.endorsementListApiWithAuth(auth) + .endorsementListControllerExportEndorsementList({ + listId: input.listId, + fileType: + input.fileType as EndorsementListControllerExportEndorsementListFileTypeEnum, + }) + .catch(this.handleError.bind(this)) + } } diff --git a/libs/api/domains/file-upload/src/lib/file-upload.resolver.ts b/libs/api/domains/file-upload/src/lib/file-upload.resolver.ts index 8be7a55416e8..fa2d482c50f5 100644 --- a/libs/api/domains/file-upload/src/lib/file-upload.resolver.ts +++ b/libs/api/domains/file-upload/src/lib/file-upload.resolver.ts @@ -1,4 +1,5 @@ import { Args, Resolver, Mutation } from '@nestjs/graphql' +import { S3 } from 'aws-sdk' import { PresignedPost } from './presignedPost.model' import { FileStorageService } from '@island.is/file-storage' @@ -7,9 +8,9 @@ export class FileUploadResolver { constructor(private fileStorageService: FileStorageService) {} @Mutation(() => PresignedPost) - async createUploadUrl( + createUploadUrl( @Args('filename') filename: string, - ): Promise<PresignedPost> { + ): Promise<S3.PresignedPost> { return this.fileStorageService.generatePresignedPost(filename) } } diff --git a/libs/api/domains/finance/src/lib/api-domains-finance.resolver.ts b/libs/api/domains/finance/src/lib/api-domains-finance.resolver.ts index fb7435680da1..6588fb482b7a 100644 --- a/libs/api/domains/finance/src/lib/api-domains-finance.resolver.ts +++ b/libs/api/domains/finance/src/lib/api-domains-finance.resolver.ts @@ -64,6 +64,7 @@ export class FinanceResolver { user.nationalId, user, ) + return { ...financeStatus, downloadServiceURL: `${this.downloadServiceConfig.baseUrl}/download/v1/finance/`, diff --git a/libs/api/domains/form-system/src/dto/applicant.input.ts b/libs/api/domains/form-system/src/dto/applicant.input.ts index 331dbe8250e5..a892dc95b9c8 100644 --- a/libs/api/domains/form-system/src/dto/applicant.input.ts +++ b/libs/api/domains/form-system/src/dto/applicant.input.ts @@ -23,7 +23,7 @@ export class FormSystemUpdateApplicantDtoInput { @InputType('FormSystemCreateApplicantInput') export class CreateApplicantInput { - @Field(() => String, { nullable: true }) + @Field(() => FormSystemCreateApplicantDtoInput, { nullable: true }) createFormApplicantDto?: FormSystemCreateApplicantDtoInput } diff --git a/libs/api/domains/form-system/src/dto/field.input.ts b/libs/api/domains/form-system/src/dto/field.input.ts index 309d6a6f1897..43365a330d8d 100644 --- a/libs/api/domains/form-system/src/dto/field.input.ts +++ b/libs/api/domains/form-system/src/dto/field.input.ts @@ -7,12 +7,18 @@ registerEnumType(FieldDtoFieldTypeEnum, { name: 'FormSystemFieldDtoFieldTypeEnum', }) -@InputType('FormSystemCreateFieldInput') -export class CreateFieldInput { +@InputType('FormSystemCreateFieldDtoInput') +export class CreateFieldDtoInput { @Field(() => String, { nullable: true }) screenId?: string } +@InputType('FormSystemCreateFieldInput') +export class CreateFieldInput { + @Field(() => CreateFieldDtoInput, { nullable: true }) + createFieldDto?: CreateFieldDtoInput +} + @InputType('FormSystemDeleteFieldInput') export class DeleteFieldInput { @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/screen.input.ts b/libs/api/domains/form-system/src/dto/screen.input.ts index e7aff7bb083f..39c1a0a8e19f 100644 --- a/libs/api/domains/form-system/src/dto/screen.input.ts +++ b/libs/api/domains/form-system/src/dto/screen.input.ts @@ -2,24 +2,39 @@ import { Field, InputType, Int } from '@nestjs/graphql' import { LanguageTypeInput } from './languageType.input' import { FieldInput } from './field.input' -@InputType('FormSystemCreateScreenInput') -export class CreateScreenInput { +@InputType('FormSystemCreateScreenDtoInput') +export class CreateScreenDtoInput { @Field(() => String, { nullable: true }) sectionId?: string } -@InputType('FormSystemUpdateScreenInput') -export class UpdateScreenInput { +@InputType('FormSystemCreateScreenInput') +export class CreateScreenInput { + @Field(() => CreateScreenDtoInput, { nullable: true }) + createScreenDto?: CreateScreenDtoInput +} + +@InputType('FormSystemUpdateScreenDtoInput') +export class UpdateSectionDtoInput { @Field(() => LanguageTypeInput, { nullable: true }) name?: LanguageTypeInput @Field(() => Int, { nullable: true }) - multiSet?: number + multiset?: number @Field(() => Boolean, { nullable: true }) callRuleset?: boolean } +@InputType('FormSystemUpdateScreenInput') +export class UpdateScreenInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => UpdateSectionDtoInput, { nullable: true }) + updateScreenDto?: UpdateSectionDtoInput +} + @InputType('FormSystemDeleteScreenInput') export class DeleteScreenInput { @Field(() => String) @@ -35,12 +50,18 @@ export class ScreenDisplayOrderInput { sectionId?: string } -@InputType('FormSystemUpdateScreensDisplayOrderInput') -export class UpdateScreensDisplayOrderInput { +@InputType('FormSystemUpdateScreenDisplayOrderDtoInput') +export class UpdateScreenDisplayOrderDtoInput { @Field(() => [ScreenDisplayOrderInput], { nullable: 'itemsAndList' }) screensDisplayOrderDto?: ScreenDisplayOrderInput[] } +@InputType('FormSystemUpdateScreensDisplayOrderInput') +export class UpdateScreensDisplayOrderInput { + @Field(() => UpdateScreenDisplayOrderDtoInput, { nullable: true }) + updateScreensDisplayOrderDto?: UpdateScreenDisplayOrderDtoInput +} + @InputType('FormSystemScreenInput') export class ScreenInput { @Field(() => String, { nullable: true }) @@ -59,7 +80,7 @@ export class ScreenInput { isHidden?: boolean @Field(() => Int, { nullable: true }) - multiSet?: number + multiset?: number @Field(() => Boolean, { nullable: true }) callRuleset?: boolean diff --git a/libs/api/domains/form-system/src/dto/section.input.ts b/libs/api/domains/form-system/src/dto/section.input.ts index 203b01b89a2d..a3544c034758 100644 --- a/libs/api/domains/form-system/src/dto/section.input.ts +++ b/libs/api/domains/form-system/src/dto/section.input.ts @@ -13,8 +13,14 @@ export class SectionDisplayOrderInput { id?: string } -@InputType('FormSystemUpdateSectionInput') -export class UpdateSectionInput { +@InputType('FormSystemUpdateSectionsDisplayOrderDtoInput') +export class UpdateSectionsDisplayOrderDtoInput { + @Field(() => [SectionDisplayOrderInput], { nullable: 'itemsAndList' }) + sectionsDisplayOrderDto?: SectionDisplayOrderInput[] +} + +@InputType('FormSystemUpdateSectionDtoInput') +export class UpdateSectionDtoInput { @Field(() => LanguageTypeInput, { nullable: true }) name?: LanguageTypeInput @@ -22,22 +28,32 @@ export class UpdateSectionInput { waitingText?: LanguageTypeInput } +@InputType('FormSystemUpdateSectionInput') +export class UpdateSectionInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => UpdateSectionDtoInput, { nullable: true }) + updateSectionDto?: UpdateSectionDtoInput +} + @InputType('FormSystemDeleteSectionInput') export class DeleteSectionInput { @Field(() => String, { nullable: true }) id?: string } -@InputType('FormSystemUpdateSectionsDisplayOrderInput') -export class UpdateSectionsDisplayOrderInput { - @Field(() => [SectionDisplayOrderInput], { nullable: 'itemsAndList' }) - sectionsDisplayOrderDto?: SectionDisplayOrderInput[] + +@InputType('FormSystemCreateSectionDtoInput') +export class CreateSectionDtoInput { + @Field(() => String, { nullable: true }) + formId?: string } @InputType('FormSystemCreateSectionInput') export class CreateSectionInput { - @Field(() => String, { nullable: true }) - formId?: string + @Field(() => CreateSectionDtoInput, { nullable: true }) + createSectionDto?: CreateSectionDtoInput } @InputType('FormSystemSectionInput') diff --git a/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts b/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts index 9b6ed9d1a5dd..135dc5f91ba4 100644 --- a/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts @@ -29,6 +29,7 @@ export class ApplicantsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteApplicant', + nullable: true }) async deleteApplicant( @Args('input') input: DeleteApplicantInput, @@ -39,6 +40,7 @@ export class ApplicantsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateApplicant', + nullable: true }) async updateApplicant( @Args('input') input: UpdateApplicantInput, diff --git a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts index 004788694802..afb178998d24 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts @@ -17,7 +17,7 @@ import { @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class ApplicationsResolver { - constructor(private readonly applicationsService: ApplicationsService) {} + constructor(private readonly applicationsService: ApplicationsService) { } @Query(() => Application, { name: 'formSystemGetApplication', @@ -31,7 +31,7 @@ export class ApplicationsResolver { } @Mutation(() => Application, { - name: 'formSystemGetApplication', + name: 'formSystemCreateApplication', }) async createApplication( @Args('input', { type: () => CreateApplicationInput }) diff --git a/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts b/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts index da46ef1fe8ec..51654bfe7aca 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts @@ -33,6 +33,7 @@ export class FieldsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateField', + nullable: true }) async updateField( @Args('input', { type: () => UpdateFieldInput }) input: UpdateFieldInput, @@ -43,6 +44,7 @@ export class FieldsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteField', + nullable: true }) async deleteField( @Args('input', { type: () => DeleteFieldInput }) input: DeleteFieldInput, @@ -53,6 +55,7 @@ export class FieldsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateFieldsDisplayOrder', + nullable: true }) async updateFieldsDisplayOrder( @Args('input', { type: () => UpdateFieldsDisplayOrderInput }) diff --git a/libs/api/domains/form-system/src/lib/fields/fields.service.ts b/libs/api/domains/form-system/src/lib/fields/fields.service.ts index 678b60360cc9..b4a70bc74650 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.service.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.service.ts @@ -24,7 +24,7 @@ export class FieldsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private fieldsApi: FieldsApi, - ) {} + ) { } // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -32,8 +32,8 @@ export class FieldsService { error: JSON.stringify(error), category: 'forms-service', } - this.logger.error(errorDetail || 'Error in fields service', err) - + //this.logger.error(errorDetail || 'Error in fields service', err) + console.error(error) throw new ApolloError(error.message) } diff --git a/libs/api/domains/form-system/src/lib/form-system.module.ts b/libs/api/domains/form-system/src/lib/form-system.module.ts index 02de1f5fa0dc..12e1cd8a7b08 100644 --- a/libs/api/domains/form-system/src/lib/form-system.module.ts +++ b/libs/api/domains/form-system/src/lib/form-system.module.ts @@ -18,6 +18,7 @@ import { ServicesResolver } from './services/services.resolver' import { ServicesService } from './services/services.service' import { ApplicantsResolver } from './applicants/applicants.resolver' import { ApplicantsService } from './applicants/applicants.service' +import { LoggingModule } from '@island.is/logging' @Module({ providers: [ @@ -41,6 +42,6 @@ import { ApplicantsService } from './applicants/applicants.service' ApplicantsService, ], exports: [], - imports: [FormSystemClientModule], + imports: [FormSystemClientModule, LoggingModule], }) export class FormSystemModule { } diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index 0b0a6866f0f2..84cb04a94a38 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -34,6 +34,7 @@ export class FormsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteForm', + nullable: true }) async deleteForm( @Args('input', { type: () => DeleteFormInput }) input: DeleteFormInput, @@ -64,6 +65,7 @@ export class FormsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateForm', + nullable: true }) async updateForm( @Args('input', { type: () => UpdateFormInput }) input: UpdateFormInput, diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 854a8c2e6dbe..1f1d1a3d729d 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -1,11 +1,12 @@ import { Injectable, Inject } from '@nestjs/common' -import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' +import { LOGGER_PROVIDER } from '@island.is/logging' +import type { Logger } from '@island.is/logging' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { ApolloError } from '@apollo/client' import { handle4xx } from '../../utils/errorHandler' import { + CreateFormDto, FormsApi, - FormsControllerCreateRequest, FormsControllerDeleteRequest, FormsControllerFindAllRequest, FormsControllerFindOneRequest, @@ -23,8 +24,7 @@ import { Form, FormResponse } from '../../models/form.model' @Injectable() export class FormsService { constructor( - @Inject(LOGGER_PROVIDER) - private logger: Logger, + @Inject(LOGGER_PROVIDER) private readonly logger: Logger, private formsService: FormsApi, ) { } @@ -34,8 +34,8 @@ export class FormsService { error: JSON.stringify(error), category: 'forms-service', } - this.logger.error(errorDetail || 'Error in forms service', err) - + //this.logger.error(errorDetail || 'Error in forms service', err) + console.error(error) throw new ApolloError(error.message) } @@ -45,7 +45,9 @@ export class FormsService { async createForm(auth: User, input: CreateFormInput): Promise<FormResponse> { const response = await this.formsApiWithAuth(auth) - .formsControllerCreate(input as FormsControllerCreateRequest) + .formsControllerCreate({ + createFormDto: input as CreateFormDto + }) .catch((e) => handle4xx(e, this.handleError, 'failed to create form')) if (!response || response instanceof ApolloError) { @@ -70,6 +72,7 @@ export class FormsService { async getForm(auth: User, input: GetFormInput): Promise<FormResponse> { const response = await this.formsApiWithAuth(auth) .formsControllerFindOne(input as FormsControllerFindOneRequest) + //.catch((e) => console.error(e)) .catch((e) => handle4xx(e, this.handleError, 'failed to get form')) if (!response || response instanceof ApolloError) { @@ -100,7 +103,7 @@ export class FormsService { .catch((e) => handle4xx(e, this.handleError, 'failed to update form')) if (!response || response instanceof ApolloError) { - return + return void 0 } return response diff --git a/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts b/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts index c86c540b52e2..66f61b2057ea 100644 --- a/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts +++ b/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts @@ -18,7 +18,7 @@ import { ListItem } from '../../models/listItem.model' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class ListItemsResolver { - constructor(private readonly listItemsService: ListItemsService) {} + constructor(private readonly listItemsService: ListItemsService) { } @Mutation(() => ListItem, { name: 'formSystemCreateListItem', @@ -33,6 +33,7 @@ export class ListItemsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteListItem', + nullable: true }) async deleteListItem( @Args('input', { type: () => DeleteListItemInput }) @@ -44,6 +45,7 @@ export class ListItemsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateListItem', + nullable: true }) async updateListItem( @Args('input', { type: () => UpdateListItemInput }) @@ -55,6 +57,7 @@ export class ListItemsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateListItemsDisplayOrder', + nullable: true }) async updateListItemsDisplayOrder( @Args('input', { type: () => UpdateListItemInput }) diff --git a/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts b/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts index c8a16e07857d..d4ac247495bc 100644 --- a/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts +++ b/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts @@ -19,7 +19,7 @@ import { Screen } from '../../models/screen.model' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class ScreensResolver { - constructor(private readonly screensService: ScreensService) {} + constructor(private readonly screensService: ScreensService) { } @Mutation(() => Screen, { name: 'formSystemCreateScreen', @@ -33,6 +33,7 @@ export class ScreensResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteScreen', + nullable: true }) async deleteScreen( @Args('input') input: DeleteScreenInput, @@ -41,18 +42,19 @@ export class ScreensResolver { return this.screensService.deleteScreen(user, input) } - @Mutation(() => Boolean, { + @Mutation(() => Screen, { name: 'formSystemUpdateScreen', }) async updateScreen( @Args('input') input: UpdateScreenInput, @CurrentUser() user: User, - ): Promise<void> { + ): Promise<Screen> { return this.screensService.updateScreen(user, input) } @Mutation(() => Boolean, { name: 'formSystemUpdateScreensDisplayOrder', + nullable: true, }) async updateScreensDisplayOrder( @Args('input') input: UpdateScreensDisplayOrderInput, diff --git a/libs/api/domains/form-system/src/lib/screens/screens.service.ts b/libs/api/domains/form-system/src/lib/screens/screens.service.ts index 8e53542f9119..1208f8c15f2f 100644 --- a/libs/api/domains/form-system/src/lib/screens/screens.service.ts +++ b/libs/api/domains/form-system/src/lib/screens/screens.service.ts @@ -1,5 +1,6 @@ import { Injectable, Inject } from '@nestjs/common' -import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' +import { LOGGER_PROVIDER } from '@island.is/logging' +import type { Logger } from '@island.is/logging' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { ApolloError } from '@apollo/client' import { handle4xx } from '../../utils/errorHandler' @@ -21,10 +22,10 @@ import { Screen } from '../../models/screen.model' @Injectable() export class ScreensService { constructor( - @Inject(LOGGER_PROVIDER) - private logger: Logger, + // @Inject(LOGGER_PROVIDER) + // private logger: Logger, private screensApi: ScreensApi, - ) {} + ) { } // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -32,7 +33,7 @@ export class ScreensService { error: JSON.stringify(error), category: 'forms-service', } - this.logger.error(errorDetail || 'Error in screens service', err) + //this.logger.error(errorDetail || 'Error in screens service', err) throw new ApolloError(error.message) } @@ -49,7 +50,7 @@ export class ScreensService { if (!response || response instanceof ApolloError) { return {} } - + console.log(response) return response } @@ -61,20 +62,18 @@ export class ScreensService { if (!response || response instanceof ApolloError) { return } - - return } - async updateScreen(auth: User, input: UpdateScreenInput): Promise<void> { + async updateScreen(auth: User, input: UpdateScreenInput): Promise<Screen> { const response = await this.screensApiWithAuth(auth) .screensControllerUpdate(input as ScreensControllerUpdateRequest) .catch((e) => handle4xx(e, this.handleError, 'failed to update screen')) if (!response || response instanceof ApolloError) { - return + return {} } - return + return response } async updateScreensDisplayOrder( diff --git a/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts b/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts index 63236980d7a6..487a4f666c4e 100644 --- a/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts +++ b/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts @@ -11,7 +11,7 @@ import { CreateSectionInput, DeleteSectionInput, UpdateSectionInput, - UpdateSectionsDisplayOrderInput, + UpdateSectionsDisplayOrderDtoInput, } from '../../dto/section.input' import { Section } from '../../models/section.model' @@ -19,7 +19,7 @@ import { Section } from '../../models/section.model' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class SectionsResolver { - constructor(private readonly sectionsService: SectionsService) {} + constructor(private readonly sectionsService: SectionsService) { } @Mutation(() => Section, { name: 'formSystemCreateSection', @@ -34,6 +34,7 @@ export class SectionsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteSection', + nullable: true }) async deleteSection( @Args('input', { type: () => DeleteSectionInput }) @@ -43,23 +44,24 @@ export class SectionsResolver { return this.sectionsService.deleteSection(user, input) } - @Mutation(() => Boolean, { + @Mutation(() => Section, { name: 'formSystemUpdateSection', }) async updateSection( @Args('input', { type: () => UpdateSectionInput }) input: UpdateSectionInput, @CurrentUser() user: User, - ): Promise<void> { + ): Promise<Section> { return this.sectionsService.updateSection(user, input) } @Mutation(() => Boolean, { name: 'formSystemUpdateSectionsDisplayOrder', + nullable: true, }) async updateSectionsDisplayOrder( - @Args('input', { type: () => UpdateSectionsDisplayOrderInput }) - input: UpdateSectionsDisplayOrderInput, + @Args('input', { type: () => UpdateSectionsDisplayOrderDtoInput }) + input: UpdateSectionsDisplayOrderDtoInput, @CurrentUser() user: User, ): Promise<void> { return this.sectionsService.updateSectionsDisplayOrder(user, input) diff --git a/libs/api/domains/form-system/src/lib/sections/sections.service.ts b/libs/api/domains/form-system/src/lib/sections/sections.service.ts index 726de3babca1..c5e34337cb0a 100644 --- a/libs/api/domains/form-system/src/lib/sections/sections.service.ts +++ b/libs/api/domains/form-system/src/lib/sections/sections.service.ts @@ -14,7 +14,7 @@ import { CreateSectionInput, DeleteSectionInput, UpdateSectionInput, - UpdateSectionsDisplayOrderInput, + UpdateSectionsDisplayOrderDtoInput, } from '../../dto/section.input' import { Section } from '../../models/section.model' @@ -24,7 +24,7 @@ export class SectionsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private sectionsService: SectionsApi, - ) {} + ) { } // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -65,21 +65,21 @@ export class SectionsService { return } - async updateSection(auth: User, input: UpdateSectionInput): Promise<void> { + async updateSection(auth: User, input: UpdateSectionInput): Promise<Section> { const response = await this.sectionsApiWithAuth(auth) .sectionsControllerUpdate(input as SectionsControllerUpdateRequest) .catch((e) => handle4xx(e, this.handleError, 'failed to update section')) if (!response || response instanceof ApolloError) { - return + return {} } - return + return response } async updateSectionsDisplayOrder( auth: User, - input: UpdateSectionsDisplayOrderInput, + input: UpdateSectionsDisplayOrderDtoInput, ): Promise<void> { const response = await this.sectionsApiWithAuth(auth) .sectionsControllerUpdateDisplayOrder( @@ -94,9 +94,9 @@ export class SectionsService { ) if (!response || response instanceof ApolloError) { - return + return void 0 } - return + return response } } diff --git a/libs/api/domains/form-system/src/models/screen.model.ts b/libs/api/domains/form-system/src/models/screen.model.ts index 05bd0a206e6b..658d2804980f 100644 --- a/libs/api/domains/form-system/src/models/screen.model.ts +++ b/libs/api/domains/form-system/src/models/screen.model.ts @@ -20,7 +20,7 @@ export class Screen { isHidden?: boolean @Field(() => Int, { nullable: true }) - multiSet?: number + multiset?: number @Field(() => Boolean, { nullable: true }) callRuleset?: boolean diff --git a/libs/application/templates/financial-statement-individual-election/.eslintrc.json b/libs/api/domains/health-directorate/.eslintrc.json similarity index 80% rename from libs/application/templates/financial-statement-individual-election/.eslintrc.json rename to libs/api/domains/health-directorate/.eslintrc.json index 772a43d27834..632e9b0e2225 100644 --- a/libs/application/templates/financial-statement-individual-election/.eslintrc.json +++ b/libs/api/domains/health-directorate/.eslintrc.json @@ -1,5 +1,5 @@ { - "extends": ["plugin:@nx/react", "../../../../.eslintrc.json"], + "extends": ["../../../../.eslintrc.json"], "ignorePatterns": ["!**/*"], "overrides": [ { diff --git a/libs/api/domains/health-directorate/README.md b/libs/api/domains/health-directorate/README.md new file mode 100644 index 000000000000..fffbb3f40f83 --- /dev/null +++ b/libs/api/domains/health-directorate/README.md @@ -0,0 +1,7 @@ +# api-domains-health-directorate + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test api-domains-health-directorate` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/api/domains/health-directorate/jest.config.ts b/libs/api/domains/health-directorate/jest.config.ts new file mode 100644 index 000000000000..cd7d4746aff3 --- /dev/null +++ b/libs/api/domains/health-directorate/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: 'api-domains-health-directorate', + preset: '../../../../jest.preset.js', + testEnvironment: 'node', + transform: { + '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }], + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../../../coverage/libs/api/domains/health-directorate', +} diff --git a/libs/api/domains/health-directorate/project.json b/libs/api/domains/health-directorate/project.json new file mode 100644 index 000000000000..d7283ccabd80 --- /dev/null +++ b/libs/api/domains/health-directorate/project.json @@ -0,0 +1,19 @@ +{ + "name": "api-domains-health-directorate", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/api/domains/health-directorate/src", + "projectType": "library", + "tags": ["lib:api", "scope:api"], + "targets": { + "lint": { + "executor": "@nx/eslint:lint" + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/api/domains/health-directorate/jest.config.ts" + } + } + } +} diff --git a/libs/api/domains/health-directorate/src/index.ts b/libs/api/domains/health-directorate/src/index.ts new file mode 100644 index 000000000000..274fc40d3c4d --- /dev/null +++ b/libs/api/domains/health-directorate/src/index.ts @@ -0,0 +1,2 @@ +export * from './lib/health-directorate.resolver' +export { HealthDirectorateModule } from './lib/health-directorate.module' diff --git a/libs/api/domains/health-directorate/src/lib/health-directorate.module.ts b/libs/api/domains/health-directorate/src/lib/health-directorate.module.ts new file mode 100644 index 000000000000..23a06c73e96c --- /dev/null +++ b/libs/api/domains/health-directorate/src/lib/health-directorate.module.ts @@ -0,0 +1,10 @@ +import { HealthDirectorateClientModule } from '@island.is/clients/health-directorate' +import { Module } from '@nestjs/common' +import { HealthDirectorateResolver } from './health-directorate.resolver' +import { HealthDirectorateService } from './health-directorate.service' + +@Module({ + imports: [HealthDirectorateClientModule], + providers: [HealthDirectorateResolver, HealthDirectorateService], +}) +export class HealthDirectorateModule {} diff --git a/libs/api/domains/health-directorate/src/lib/health-directorate.resolver.ts b/libs/api/domains/health-directorate/src/lib/health-directorate.resolver.ts new file mode 100644 index 000000000000..da24d7f71039 --- /dev/null +++ b/libs/api/domains/health-directorate/src/lib/health-directorate.resolver.ts @@ -0,0 +1,78 @@ +import { + Args, + Mutation, + Parent, + Query, + ResolveField, + Resolver, +} from '@nestjs/graphql' + +import { UseGuards } from '@nestjs/common' + +import { + CurrentUser, + IdsUserGuard, + Scopes, + ScopesGuard, +} from '@island.is/auth-nest-tools' +import type { User } from '@island.is/auth-nest-tools' +import { ApiScope } from '@island.is/auth/scopes' +import { Audit } from '@island.is/nest/audit' +import { DonorInput, Organ, OrganDonation } from './models/organ-donation.model' +import type { Locale } from '@island.is/shared/types' +import { Vaccinations } from './models/vaccinations.model' +import { HealthDirectorateService } from './health-directorate.service' + +@UseGuards(IdsUserGuard, ScopesGuard) +@Scopes(ApiScope.internal) +@Audit({ namespace: '@island.is/api/health-directorate' }) +@Resolver(() => OrganDonation) +export class HealthDirectorateResolver { + constructor(private api: HealthDirectorateService) {} + + /* Organ Donation */ + @Query(() => OrganDonation, { + name: 'healthDirectorateOrganDonation', + }) + @Audit() + async getDonorStatus( + @Args('locale', { type: () => String, nullable: true }) + locale: Locale = 'is', + @CurrentUser() user: User, + ): Promise<OrganDonation> { + const data = await this.api.getDonorStatus(user, locale) + return { donor: data, locale: locale } + } + @ResolveField('organList', () => [Organ], { + nullable: true, + }) + async resolveOrganList( + @Parent() organDonation: OrganDonation, + @CurrentUser() user: User, + ): Promise<Array<Organ>> { + return this.api.getDonationExceptions(user, organDonation.locale ?? 'is') + } + + @Mutation(() => Boolean, { + nullable: true, + name: 'healthDirectorateOrganDonationUpdateDonorStatus', + }) + @Audit() + async updateDonorStatus( + @Args('input') input: DonorInput, + @Args('locale', { type: () => String, nullable: true }) + locale: Locale = 'is', + @CurrentUser() user: User, + ): Promise<void> { + return this.api.updateDonorStatus(user, input, locale) + } + + /* Vaccinations */ + @Query(() => Vaccinations, { + name: 'healthDirectorateVaccinations', + }) + @Audit() + getVaccinations(@CurrentUser() user: User): Promise<Vaccinations | null> { + return this.api.getVaccinations(user) + } +} diff --git a/libs/api/domains/health-directorate/src/lib/health-directorate.service.ts b/libs/api/domains/health-directorate/src/lib/health-directorate.service.ts new file mode 100644 index 000000000000..391a425c4bb0 --- /dev/null +++ b/libs/api/domains/health-directorate/src/lib/health-directorate.service.ts @@ -0,0 +1,109 @@ +import { Injectable } from '@nestjs/common' +import { + HealthDirectorateVaccinationsService, + HealthDirectorateOrganDonationService, + OrganDonorDto, + VaccinationDto, + organLocale, +} from '@island.is/clients/health-directorate' +import { Auth } from '@island.is/auth-nest-tools' +import type { Locale } from '@island.is/shared/types' +import { Donor, DonorInput, Organ } from './models/organ-donation.model' + +import { Info, Vaccination, Vaccinations } from './models/vaccinations.model' + +@Injectable() +export class HealthDirectorateService { + constructor( + private readonly vaccinationApi: HealthDirectorateVaccinationsService, + private readonly organDonationApi: HealthDirectorateOrganDonationService, + ) {} + + /* Organ Donation */ + async getDonorStatus(auth: Auth, locale: Locale): Promise<Donor | null> { + const lang: organLocale = locale === 'is' ? organLocale.Is : organLocale.En + const data: OrganDonorDto | null = + await this.organDonationApi.getOrganDonation(auth, lang) + if (data === null) { + return null + } + const donorStatus: Donor = { + isDonor: data?.isDonor ?? true, + limitations: { + hasLimitations: + ((data?.exceptions?.length ?? 0) > 0 && data?.isDonor) ?? false, + limitedOrgansList: data?.exceptions, + comment: data?.exceptionComment, + }, + } + return donorStatus + } + + async getDonationExceptions( + auth: Auth, + locale: Locale, + ): Promise<Array<Organ>> { + const lang: organLocale = locale === 'is' ? organLocale.Is : organLocale.En + const data = await this.organDonationApi.getDonationExceptions(auth, lang) + const limitations: Array<Organ> = + data?.map((item) => { + return { + id: item.id, + name: item.name, + } + }) ?? [] + + return limitations + } + + async updateDonorStatus( + auth: Auth, + input: DonorInput, + locale: Locale, + ): Promise<void> { + return await this.organDonationApi.updateOrganDonation( + auth, + { + isDonor: input.isDonor, + exceptions: input.organLimitations ?? [], + }, + locale === 'is' ? organLocale.Is : organLocale.En, + ) + } + + /* Vaccinations */ + async getVaccinations(auth: Auth): Promise<Vaccinations | null> { + const data = await this.vaccinationApi.getVaccinationDiseaseDetail(auth) + if (data === null) { + return null + } + const vaccinations: Array<Vaccination> = + data?.map((item) => { + return { + id: item.diseaseId, + name: item.diseaseName, + description: item.diseaseDescription, + isFeatured: item.isFeatured, + status: item.vaccinationStatus, + statusName: item.vaccinationStatusName, + statusColor: item.vaccinationStatusColor, + lastVaccinationDate: item.lastVaccinationDate ?? null, + comments: item.comments, + vaccinationsInfo: item.vaccinations?.map( + (vaccination: VaccinationDto) => { + return { + id: vaccination.id, + name: vaccination.vaccineCodeDescriptionShort, + date: vaccination.vaccinationDate, + age: vaccination.vaccinationAge, + url: vaccination.vaccineUrl, + comment: vaccination.generalComment, + rejected: vaccination.rejected, + } + }, + ), + } + }) ?? [] + return { vaccinations } + } +} diff --git a/libs/api/domains/health-directorate/src/lib/models/organ-donation.model.ts b/libs/api/domains/health-directorate/src/lib/models/organ-donation.model.ts new file mode 100644 index 000000000000..8893f2149324 --- /dev/null +++ b/libs/api/domains/health-directorate/src/lib/models/organ-donation.model.ts @@ -0,0 +1,57 @@ +import { ObjectType, Field, InputType } from '@nestjs/graphql' + +@ObjectType('HealthDirectorateOrganDonationOrgan') +export class Organ { + @Field() + id!: string + + @Field() + name!: string +} +@ObjectType('HealthDirectorateOrganDonationLimitations') +export class Limitations { + @Field(() => Boolean) + hasLimitations!: boolean + + @Field(() => [Organ], { + nullable: true, + description: 'List of organs NOT to donate', + }) + limitedOrgansList?: Organ[] + + @Field({ + nullable: true, + description: 'Text to display if user does not want to donate all organs', + }) + comment?: string +} + +@ObjectType('HealthDirectorateOrganDonor') +export class Donor { + @Field(() => Boolean) + isDonor!: boolean + + @Field(() => Limitations, { nullable: true }) + limitations?: Limitations +} + +@ObjectType('HealthDirectorateOrganDonation') +export class OrganDonation { + @Field(() => Donor, { nullable: true }) + donor?: Donor | null + + @Field(() => [Organ], { nullable: true }) + organList?: Array<Organ> + + @Field(() => String, { nullable: true }) + locale?: 'is' | 'en' +} + +@InputType('HealthDirectorateOrganDonorInput') +export class DonorInput { + @Field(() => Boolean) + isDonor!: boolean + + @Field(() => [String], { nullable: true }) + organLimitations?: string[] +} diff --git a/libs/api/domains/health-directorate/src/lib/models/vaccinations.model.ts b/libs/api/domains/health-directorate/src/lib/models/vaccinations.model.ts new file mode 100644 index 000000000000..6b1c9fc8115c --- /dev/null +++ b/libs/api/domains/health-directorate/src/lib/models/vaccinations.model.ts @@ -0,0 +1,78 @@ +import { DiseaseVaccinationDtoVaccinationStatusEnum } from '@island.is/clients/health-directorate' +import { Field, Int, ObjectType, registerEnumType } from '@nestjs/graphql' + +registerEnumType(DiseaseVaccinationDtoVaccinationStatusEnum, { + name: 'HealthDirectorateVaccinationsStatus', +}) + +@ObjectType('HealthDirectorateVaccinationsAge') +export class Age { + @Field(() => Int, { nullable: true }) + years?: number + + @Field(() => Int, { nullable: true }) + months?: number +} + +@ObjectType('HealthDirectorateVaccinationsInfo') +export class Info { + @Field(() => Int) + id!: number + + @Field({ nullable: true }) + name?: string + + @Field(() => Date, { nullable: true }) + date?: Date | null + + @Field(() => Age, { nullable: true }) + age?: Age + + @Field({ nullable: true }) + url?: string + + @Field({ nullable: true }) + comment?: string + + @Field(() => Boolean, { nullable: true }) + rejected?: boolean +} + +@ObjectType('HealthDirectorateVaccination') +export class Vaccination { + @Field() + id!: string + + @Field({ nullable: true }) + name?: string + + @Field({ nullable: true }) + description?: string + + @Field(() => Boolean, { nullable: true }) + isFeatured?: boolean + + @Field({ nullable: true }) + status?: string + + @Field({ nullable: true }) + statusName?: string + + @Field({ nullable: true }) + statusColor?: string + + @Field(() => Date, { nullable: true }) + lastVaccinationDate?: Date | null + + @Field(() => [Info], { nullable: true }) + vaccinationsInfo?: Info[] + + @Field(() => [String], { nullable: true }) + comments?: string[] +} + +@ObjectType('HealthDirectorateVaccinations') +export class Vaccinations { + @Field(() => [Vaccination]) + vaccinations!: Vaccination[] +} diff --git a/libs/api/domains/health-directorate/tsconfig.json b/libs/api/domains/health-directorate/tsconfig.json new file mode 100644 index 000000000000..4022fd4d0ad7 --- /dev/null +++ b/libs/api/domains/health-directorate/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/api/domains/health-directorate/tsconfig.lib.json b/libs/api/domains/health-directorate/tsconfig.lib.json new file mode 100644 index 000000000000..e6b77320ab6a --- /dev/null +++ b/libs/api/domains/health-directorate/tsconfig.lib.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "declaration": true, + "types": ["node"], + "target": "es2021", + "strictNullChecks": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/libs/application/templates/financial-statement-individual-election/tsconfig.spec.json b/libs/api/domains/health-directorate/tsconfig.spec.json similarity index 64% rename from libs/application/templates/financial-statement-individual-election/tsconfig.spec.json rename to libs/api/domains/health-directorate/tsconfig.spec.json index 8119baebcd43..6668655fc397 100644 --- a/libs/application/templates/financial-statement-individual-election/tsconfig.spec.json +++ b/libs/api/domains/health-directorate/tsconfig.spec.json @@ -6,10 +6,9 @@ "types": ["jest", "node"] }, "include": [ - "**/*.spec.ts", - "**/*.spec.tsx", - "**/*.spec.js", - "**/*.spec.jsx", - "**/*.d.ts" + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" ] } diff --git a/libs/api/domains/health-insurance/src/lib/accident-notification.service.ts b/libs/api/domains/health-insurance/src/lib/accident-notification.service.ts index d711490893d9..bf112489a2cc 100644 --- a/libs/api/domains/health-insurance/src/lib/accident-notification.service.ts +++ b/libs/api/domains/health-insurance/src/lib/accident-notification.service.ts @@ -1,7 +1,6 @@ import { Inject, Injectable } from '@nestjs/common' import { LOGGER_PROVIDER } from '@island.is/logging' import type { Logger } from '@island.is/logging' -import { DocumentApi } from '@island.is/clients/icelandic-health-insurance/health-insurance' import { HealthInsuranceAccidentNotificationAttachmentTypes as AttachmentTypes, HealthInsuranceAccidentNotificationConfirmationTypes as ConfirmationTypes, @@ -12,6 +11,8 @@ import { AccidentNotificationConfirmation, AccidentNotificationStatus, } from './graphql/models' +import { AccidentreportsApi } from '@island.is/clients/icelandic-health-insurance/rights-portal' +import { Auth, AuthMiddleware } from '@island.is/auth-nest-tools' const mapStatus = (statusId: number) => { switch (statusId) { @@ -55,26 +56,34 @@ const mapConfirmationType = (confirmationTypeId: number | undefined) => { @Injectable() export class AccidentNotificationService { constructor( - private readonly accidentNotificationApi: DocumentApi, + private readonly accidentReportsApi: AccidentreportsApi, @Inject(LOGGER_PROVIDER) private logger: Logger, ) {} + private accidentsReportsApiWithAuth(auth: Auth) { + return this.accidentReportsApi.withMiddleware(new AuthMiddleware(auth)) + } + async getAccidentNotificationStatus( + auth: Auth, ihiDocumentID: number, ): Promise<AccidentNotificationStatus | null> { this.logger.log('starting call to get accident', ihiDocumentID) - const accidentStatus = - await this.accidentNotificationApi.documentGetAccidentStatus({ - ihiDocumentID: ihiDocumentID, - }) + + const accidentStatus = await this.accidentsReportsApiWithAuth( + auth, + ).getAccidentReportStatus({ + reportId: ihiDocumentID, + }) + if (!accidentStatus) return null return { - numberIHI: accidentStatus.numberIHI, + numberIHI: accidentStatus.requestId, status: accidentStatus.status ? mapStatus(accidentStatus.status) : '', receivedAttachments: accidentStatus.attachments ?.map((x) => ({ - [mapAttachmentType(x.attachmentType)]: !!x.isReceived, + [mapAttachmentType(x.type)]: !!x.received, })) .reduce( (prev, curr) => ({ ...prev, ...curr }), @@ -82,7 +91,7 @@ export class AccidentNotificationService { ) as AccidentNotificationAttachment, receivedConfirmations: accidentStatus.confirmations ?.map((x) => ({ - [mapConfirmationType(x.confirmationType)]: !!x.isReceived, + [mapConfirmationType(x.party)]: !!x.received, })) .reduce( (prev, curr) => ({ ...prev, ...curr }), diff --git a/libs/api/domains/health-insurance/src/lib/graphql/accident-notification.resolver.ts b/libs/api/domains/health-insurance/src/lib/graphql/accident-notification.resolver.ts index 34a671fd9ce5..f5ec7c7c74fb 100644 --- a/libs/api/domains/health-insurance/src/lib/graphql/accident-notification.resolver.ts +++ b/libs/api/domains/health-insurance/src/lib/graphql/accident-notification.resolver.ts @@ -2,7 +2,13 @@ import { Inject, UseGuards } from '@nestjs/common' import { Args, Query, Resolver } from '@nestjs/graphql' import { Audit } from '@island.is/nest/audit' import { ApiScope } from '@island.is/auth/scopes' -import { IdsUserGuard, Scopes, ScopesGuard } from '@island.is/auth-nest-tools' +import { + CurrentUser, + IdsUserGuard, + Scopes, + ScopesGuard, +} from '@island.is/auth-nest-tools' +import type { User as AuthUser } from '@island.is/auth-nest-tools' import { LOGGER_PROVIDER } from '@island.is/logging' import type { Logger } from '@island.is/logging' import { HealthInsuranceAccidentStatusInput } from './dto/accidentStatus.input' @@ -27,10 +33,12 @@ export class HealthInsuranceAccidentNotificationResolver { async accidentStatus( @Args('input', { type: () => HealthInsuranceAccidentStatusInput }) input: HealthInsuranceAccidentStatusInput, + @CurrentUser() user: AuthUser, ): Promise<AccidentNotificationStatus | null> { this.logger.debug(`Getting company information`) const accidentStatus = await this.accidentNotificationService.getAccidentNotificationStatus( + user, input.ihiDocumentID, ) this.logger.debug(`Getting accident status for id ${input.ihiDocumentID}`) diff --git a/libs/api/domains/health-insurance/src/lib/healthInsurance.module.ts b/libs/api/domains/health-insurance/src/lib/healthInsurance.module.ts index 504e527e4261..225222fb57a7 100644 --- a/libs/api/domains/health-insurance/src/lib/healthInsurance.module.ts +++ b/libs/api/domains/health-insurance/src/lib/healthInsurance.module.ts @@ -6,9 +6,13 @@ import { import { HealthInsuranceService } from './healthInsurance.service' import { HealthInsuranceV2ClientModule } from '@island.is/clients/icelandic-health-insurance/health-insurance' import { AccidentNotificationService } from './accident-notification.service' +import { + AccidentreportsApi, + RightsPortalClientModule, +} from '@island.is/clients/icelandic-health-insurance/rights-portal' @Module({ - imports: [HealthInsuranceV2ClientModule], + imports: [HealthInsuranceV2ClientModule, RightsPortalClientModule], providers: [ HealthInsuranceService, AccidentNotificationService, diff --git a/libs/api/domains/law-and-order/.eslintrc.json b/libs/api/domains/law-and-order/.eslintrc.json new file mode 100644 index 000000000000..632e9b0e2225 --- /dev/null +++ b/libs/api/domains/law-and-order/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/api/domains/law-and-order/README.md b/libs/api/domains/law-and-order/README.md new file mode 100644 index 000000000000..ccb45690345e --- /dev/null +++ b/libs/api/domains/law-and-order/README.md @@ -0,0 +1,7 @@ +# api-domains-law-and-order + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test api-domains-law-and-order` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/api/domains/law-and-order/jest.config.ts b/libs/api/domains/law-and-order/jest.config.ts new file mode 100644 index 000000000000..41231ed358ef --- /dev/null +++ b/libs/api/domains/law-and-order/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: 'api-domains-law-and-order', + preset: '../../../../jest.preset.js', + testEnvironment: 'node', + transform: { + '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }], + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../../../coverage/libs/api/domains/law-and-order', +} diff --git a/libs/api/domains/law-and-order/project.json b/libs/api/domains/law-and-order/project.json new file mode 100644 index 000000000000..51777b320560 --- /dev/null +++ b/libs/api/domains/law-and-order/project.json @@ -0,0 +1,30 @@ +{ + "name": "api-domains-law-and-order", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/api/domains/law-and-order/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/api/domains/law-and-order/**/*.ts"] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/api/domains/law-and-order/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": ["lib:api", "scope:api"] +} diff --git a/libs/api/domains/law-and-order/src/dto/getCourtCaseInput.ts b/libs/api/domains/law-and-order/src/dto/getCourtCaseInput.ts new file mode 100644 index 000000000000..fd0486bfb117 --- /dev/null +++ b/libs/api/domains/law-and-order/src/dto/getCourtCaseInput.ts @@ -0,0 +1,9 @@ +import { Field, InputType } from '@nestjs/graphql' +import { IsString } from 'class-validator' + +@InputType('LawAndOrderCourtCaseInput') +export class GetCourtCaseInput { + @Field() + @IsString() + id!: string +} diff --git a/libs/api/domains/law-and-order/src/dto/getSubpoenaInput.ts b/libs/api/domains/law-and-order/src/dto/getSubpoenaInput.ts new file mode 100644 index 000000000000..3937f25c4c92 --- /dev/null +++ b/libs/api/domains/law-and-order/src/dto/getSubpoenaInput.ts @@ -0,0 +1,9 @@ +import { Field, InputType } from '@nestjs/graphql' +import { IsString } from 'class-validator' + +@InputType('LawAndOrderSubpoenaInput') +export class GetSubpoenaInput { + @Field() + @IsString() + id!: string +} diff --git a/libs/api/domains/law-and-order/src/dto/postDefenseChoiceInput.model.ts b/libs/api/domains/law-and-order/src/dto/postDefenseChoiceInput.model.ts new file mode 100644 index 000000000000..b29cf5bb0223 --- /dev/null +++ b/libs/api/domains/law-and-order/src/dto/postDefenseChoiceInput.model.ts @@ -0,0 +1,17 @@ +import { Field, ID, InputType } from '@nestjs/graphql' +import { IsOptional, IsString } from 'class-validator' +import { DefenseChoiceEnum } from '../models/defenseChoiceEnum.model' + +@InputType('LawAndOrderDefenseChoiceInput') +export class PostDefenseChoiceInput { + @Field(() => ID) + @IsString() + caseId!: string + + @Field(() => DefenseChoiceEnum) + choice!: DefenseChoiceEnum + + @Field({ nullable: true }) + @IsOptional() + lawyersNationalId?: string +} diff --git a/libs/api/domains/law-and-order/src/index.ts b/libs/api/domains/law-and-order/src/index.ts new file mode 100644 index 000000000000..03ccf92e2560 --- /dev/null +++ b/libs/api/domains/law-and-order/src/index.ts @@ -0,0 +1 @@ +export { LawAndOrderModule } from './lib/law-and-order.module' diff --git a/libs/api/domains/law-and-order/src/lib/helpers/mappers.ts b/libs/api/domains/law-and-order/src/lib/helpers/mappers.ts new file mode 100644 index 000000000000..f6f6734471cc --- /dev/null +++ b/libs/api/domains/law-and-order/src/lib/helpers/mappers.ts @@ -0,0 +1,139 @@ +import { + DefenderInfoDefenderChoiceEnum, + StateTagColorEnum, + SubpoenaDataDefaultDefenderChoiceEnum, + UpdateSubpoenaDtoDefenderChoiceEnum, +} from '@island.is/clients/judicial-system-sp' +import { CourtCaseStateTagColorEnum } from '../../models/courtCases.model' +import { DefenseChoiceEnum } from '../../models/defenseChoiceEnum.model' + +// Maps the application's internal representation of defense choices to the judicial system's representation. +export const mapDefenseChoice = ( + choice: DefenseChoiceEnum, +): UpdateSubpoenaDtoDefenderChoiceEnum => { + switch (choice) { + // Each case maps a local enum value to the corresponding value in the judicial system's enum. + case DefenseChoiceEnum.CHOOSE: + return UpdateSubpoenaDtoDefenderChoiceEnum.CHOOSE + case DefenseChoiceEnum.WAIVE: + return UpdateSubpoenaDtoDefenderChoiceEnum.WAIVE + case DefenseChoiceEnum.DELAY: + return UpdateSubpoenaDtoDefenderChoiceEnum.DELAY + case DefenseChoiceEnum.DELEGATE: + return UpdateSubpoenaDtoDefenderChoiceEnum.DELEGATE + default: + // Provides a default mapping if the input doesn't match any known value. + return UpdateSubpoenaDtoDefenderChoiceEnum.DELAY + } +} + +// Maps the application's internal representation of defense choices to the judicial system's representation. +export const mapDefenseChoiceForSubpoena = ( + choice?: DefenderInfoDefenderChoiceEnum, +): DefenseChoiceEnum => { + switch (choice) { + // Each case maps a local enum value to the corresponding value in the judicial system's enum. + case DefenderInfoDefenderChoiceEnum.CHOOSE: + return DefenseChoiceEnum.CHOOSE + case DefenderInfoDefenderChoiceEnum.WAIVE: + return DefenseChoiceEnum.WAIVE + case DefenderInfoDefenderChoiceEnum.DELAY: + return DefenseChoiceEnum.DELAY + case DefenderInfoDefenderChoiceEnum.DELEGATE: + return DefenseChoiceEnum.DELEGATE + default: + // Provides a default mapping if the input doesn't match any known value. + return DefenseChoiceEnum.DELAY + } +} + +// Maps the application's internal representation of defense choices to the judicial system's representation. +export const mapDefenseChoiceForSubpoenaDefaultChoice = ( + choice?: SubpoenaDataDefaultDefenderChoiceEnum, +): DefenseChoiceEnum => { + switch (choice) { + // Each case maps a local enum value to the corresponding value in the judicial system's enum. + case SubpoenaDataDefaultDefenderChoiceEnum.CHOOSE: + return DefenseChoiceEnum.CHOOSE + case SubpoenaDataDefaultDefenderChoiceEnum.WAIVE: + return DefenseChoiceEnum.WAIVE + case SubpoenaDataDefaultDefenderChoiceEnum.DELAY: + return DefenseChoiceEnum.DELAY + case SubpoenaDataDefaultDefenderChoiceEnum.DELEGATE: + return DefenseChoiceEnum.DELEGATE + default: + // Provides a default mapping if the input doesn't match any known value. + return DefenseChoiceEnum.DELAY + } +} + +export const mapTagTypes = ( + color?: StateTagColorEnum, +): CourtCaseStateTagColorEnum => { + switch (color) { + case StateTagColorEnum.Blue: + return CourtCaseStateTagColorEnum.blue + case StateTagColorEnum.Blueberry: + return CourtCaseStateTagColorEnum.blueberry + case StateTagColorEnum.DarkerBlue: + return CourtCaseStateTagColorEnum.darkerBlue + case StateTagColorEnum.Disabled: + return CourtCaseStateTagColorEnum.disabled + case StateTagColorEnum.Dark: + return CourtCaseStateTagColorEnum.dark + case StateTagColorEnum.Mint: + return CourtCaseStateTagColorEnum.mint + case StateTagColorEnum.Purple: + return CourtCaseStateTagColorEnum.purple + case StateTagColorEnum.Red: + return CourtCaseStateTagColorEnum.red + case StateTagColorEnum.Rose: + return CourtCaseStateTagColorEnum.rose + case StateTagColorEnum.Warn: + return CourtCaseStateTagColorEnum.warn + case StateTagColorEnum.White: + return CourtCaseStateTagColorEnum.white + case StateTagColorEnum.Yellow: + return CourtCaseStateTagColorEnum.yellow + + default: + return CourtCaseStateTagColorEnum.blue + } +} + +interface Choice { + message: { + id: string + defaultMessage: string + } +} + +// Get localized messages for defense choices in Subpoena +export const DefenseChoices: Record<DefenseChoiceEnum, Choice> = { + WAIVE: { + message: { + id: 'api.law-and-order:no-defender', + defaultMessage: 'Ég óska ekki eftir verjanda', + }, + }, + CHOOSE: { + message: { + id: 'api.law-and-order:choosing-lawyer', + defaultMessage: + 'Ég óska þess að valinn lögmaður verði skipaður verjandi minn', + }, + }, + DELAY: { + message: { + id: 'api.law-and-order:delay-choice', + defaultMessage: + 'Ég óska eftir fresti fram að þingfestingu til þess að tilnefna verjanda', + }, + }, + DELEGATE: { + message: { + id: 'api.law-and-order:choose-for-me', + defaultMessage: 'Ég fel dómara málsins að tilnefna og skipa mér verjanda', + }, + }, +} diff --git a/libs/api/domains/law-and-order/src/lib/law-and-order.module.ts b/libs/api/domains/law-and-order/src/lib/law-and-order.module.ts new file mode 100644 index 000000000000..56f839d22865 --- /dev/null +++ b/libs/api/domains/law-and-order/src/lib/law-and-order.module.ts @@ -0,0 +1,18 @@ +import { Module } from '@nestjs/common' +import { AuthModule } from '@island.is/auth-nest-tools' +import { JudicialSystemSPClientModule } from '@island.is/clients/judicial-system-sp' +import { CmsTranslationsModule } from '@island.is/cms-translations' +import { FeatureFlagModule } from '@island.is/nest/feature-flags' +import { LawAndOrderResolver } from './law-and-order.resolver' +import { LawAndOrderService } from './law-and-order.service' + +@Module({ + imports: [ + JudicialSystemSPClientModule, + AuthModule, + FeatureFlagModule, + CmsTranslationsModule, + ], + providers: [LawAndOrderResolver, LawAndOrderService], +}) +export class LawAndOrderModule {} diff --git a/libs/api/domains/law-and-order/src/lib/law-and-order.resolver.ts b/libs/api/domains/law-and-order/src/lib/law-and-order.resolver.ts new file mode 100644 index 000000000000..0bbeb280b103 --- /dev/null +++ b/libs/api/domains/law-and-order/src/lib/law-and-order.resolver.ts @@ -0,0 +1,148 @@ +import type { User } from '@island.is/auth-nest-tools' +import { + CurrentUser, + IdsUserGuard, + Scopes, + ScopesGuard, +} from '@island.is/auth-nest-tools' +import { ApiScope } from '@island.is/auth/scopes' +import { Audit, AuditService } from '@island.is/nest/audit' +import { + FeatureFlag, + FeatureFlagGuard, + Features, +} from '@island.is/nest/feature-flags' +import type { Locale } from '@island.is/shared/types' +import { Inject, UseGuards } from '@nestjs/common' +import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' +import { GetCourtCaseInput } from '../dto/getCourtCaseInput' +import { GetSubpoenaInput } from '../dto/getSubpoenaInput' +import { PostDefenseChoiceInput } from '../dto/postDefenseChoiceInput.model' +import { CourtCase } from '../models/courtCase.model' +import { CourtCases } from '../models/courtCases.model' +import { DefenseChoice } from '../models/defenseChoice.model' +import { Lawyers } from '../models/lawyers.model' +import { Subpoena } from '../models/subpoena.model' +import { LawAndOrderService } from './law-and-order.service' +import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' + +const LOG_CATEGORY = 'law-and-order-resolver' + +@UseGuards(IdsUserGuard, ScopesGuard, FeatureFlagGuard) +@Resolver() +@Audit({ namespace: '@island.is/api/law-and-order' }) +@FeatureFlag(Features.servicePortalLawAndOrderModuleEnabled) +@Scopes(ApiScope.lawAndOrder) +export class LawAndOrderResolver { + constructor( + private readonly lawAndOrderService: LawAndOrderService, + private readonly auditService: AuditService, + @Inject(LOGGER_PROVIDER) private readonly logger: Logger, + ) {} + + @Query(() => CourtCases, { + name: 'lawAndOrderCourtCasesList', + nullable: true, + }) + @Audit() + getCourtCasesList( + @CurrentUser() user: User, + @Args('locale', { type: () => String, nullable: true }) + locale: Locale = 'is', + ) { + return this.lawAndOrderService.getCourtCases(user, locale) + } + + @Query(() => CourtCase, { + name: 'lawAndOrderCourtCaseDetail', + nullable: true, + }) + @Audit() + async getCourtCaseDetail( + @CurrentUser() user: User, + @Args('input') input: GetCourtCaseInput, + @Args('locale', { type: () => String, nullable: true }) + locale: Locale = 'is', + ) { + return this.auditAndHandle( + 'getCourtCaseDetail', + input.id, + this.lawAndOrderService.getCourtCase(user, input.id, locale), + user, + ) + } + + @Query(() => Subpoena, { name: 'lawAndOrderSubpoena', nullable: true }) + @Audit() + async getSubpoena( + @CurrentUser() user: User, + @Args('input') input: GetSubpoenaInput, + @Args('locale', { type: () => String, nullable: true }) + locale: Locale = 'is', + ) { + return this.auditAndHandle( + 'getSubpoena', + input.id, + this.lawAndOrderService.getSubpoena(user, input.id, locale), + user, + ) + } + + @Query(() => Lawyers, { name: 'lawAndOrderLawyers', nullable: true }) + @Audit() + getLawyers( + @CurrentUser() user: User, + @Args('locale', { type: () => String, nullable: true }) + locale: Locale = 'is', + ) { + return this.lawAndOrderService.getLawyers(user, locale) + } + + @Mutation(() => DefenseChoice, { + name: 'lawAndOrderDefenseChoicePost', + nullable: true, + }) + @Audit() + async postDefenseChoice( + @Args('input') input: PostDefenseChoiceInput, + @Args('locale', { type: () => String, nullable: true }) + locale: Locale = 'is', + @CurrentUser() user: User, + ) { + return this.auditAndHandle( + 'postDefenseChoice', + input.caseId, + this.lawAndOrderService.postDefenseChoice(user, input, locale), + user, + { defenseChoice: input.choice }, + ) + } + + private async auditAndHandle<T>( + actionName: string, + resources: string, + promise: Promise<T>, + user: User, + meta?: any, + ): Promise<T> { + try { + return await this.auditService.auditPromise( + { + auth: user, + namespace: '@island.is/api/law-and-order', + action: actionName, + resources: resources, + meta: meta, + }, + promise, + ) + } catch (e) { + this.logger.error(`Failed to ${actionName}`, { + category: LOG_CATEGORY, + id: resources, + error: e, + }) + throw e + } + } +} diff --git a/libs/api/domains/law-and-order/src/lib/law-and-order.service.ts b/libs/api/domains/law-and-order/src/lib/law-and-order.service.ts new file mode 100644 index 000000000000..ca8f4038a1e0 --- /dev/null +++ b/libs/api/domains/law-and-order/src/lib/law-and-order.service.ts @@ -0,0 +1,210 @@ +import type { User } from '@island.is/auth-nest-tools' +import { + AlertMessageTypeEnum, + CasesResponse, + Defender, + JudicialSystemSPClientService, + SubpoenaResponse, +} from '@island.is/clients/judicial-system-sp' +import { IntlService } from '@island.is/cms-translations' +import type { Locale } from '@island.is/shared/types' +import { isDefined } from '@island.is/shared/utils' +import { Injectable } from '@nestjs/common' +import { PostDefenseChoiceInput } from '../dto/postDefenseChoiceInput.model' +import { ActionTypeEnum } from '../models/actions.model' +import { CourtCase } from '../models/courtCase.model' +import { CourtCases } from '../models/courtCases.model' +import { Item } from '../models/item.model' +import { Lawyers } from '../models/lawyers.model' +import { Subpoena } from '../models/subpoena.model' +import { + DefenseChoices, + mapDefenseChoice, + mapDefenseChoiceForSubpoena, + mapDefenseChoiceForSubpoenaDefaultChoice, + mapTagTypes, +} from './helpers/mappers' + +const namespaces = ['api.law-and-order'] + +@Injectable() +export class LawAndOrderService { + constructor( + private api: JudicialSystemSPClientService, + private readonly intlService: IntlService, + ) {} + + async getCourtCases(user: User, locale: Locale) { + const cases: Array<CasesResponse> | null = await this.api.getCases( + user, + locale, + ) + + const data: CourtCases = { + cases: + cases?.map((x: CasesResponse) => { + return { + id: x.id, + caseNumber: x.caseNumber, + caseNumberTitle: x.caseNumber, + state: { label: x.state.label, color: mapTagTypes(x.state.color) }, + type: x.type, + } + }) ?? [], + } + + return data + } + + async getCourtCase(user: User, id: string, locale: Locale) { + const { formatMessage } = await this.intlService.useIntl(namespaces, locale) + const singleCase = await this.api.getCase(id, user, locale) + const hasBeenServed = singleCase?.data.hasBeenServed + + const subpoenaString = formatMessage({ + id: 'api.law-and-order:subpoena', + defaultMessage: 'Fyrirkall', + }) + const seeSubpoenaString = formatMessage({ + id: 'api.law-and-order:see-subpoena', + defaultMessage: 'Sjá fyrirkall', + }) + const seeSubpoenaInMailboxString = formatMessage({ + id: 'api.law-and-order:see-subpoena-in-mailbox', + defaultMessage: 'Sjá fyrirkall í pósthólfi', + }) + const mailboxLink = formatMessage({ + id: 'api.law-and-order:mailbox-link', + defaultMessage: '/postholf', + }) + const subpoenaLink = { + id: 'api.law-and-order:subpoena-link', + defaultMessage: `/log-og-reglur/domsmal/{caseId}/fyrirkall`, + } + + // If the subpoena has not been acknowledged + // add an action to the line including "fyrirkall" to redirect to the digital mailbox or detail page + const subpoenaSentItem: Item | undefined = { + action: { + data: hasBeenServed + ? formatMessage(subpoenaLink, { caseId: singleCase?.caseId }) + : mailboxLink, + title: hasBeenServed ? seeSubpoenaString : seeSubpoenaInMailboxString, + type: hasBeenServed ? ActionTypeEnum.inbox : ActionTypeEnum.url, + }, + } + + const data: CourtCase = { + data: { + id: singleCase?.caseId ?? id, + hasBeenServed: hasBeenServed, + caseNumberTitle: singleCase?.data.caseNumber, + groups: (singleCase?.data.groups ?? []).map((group, groupIndex) => { + return { + items: group.items.map((item) => { + // Adding action to the line including "fyrirkall" + if ( + groupIndex === 0 && + item.label.toLowerCase().includes(subpoenaString.toLowerCase()) + ) { + return { ...item, action: subpoenaSentItem.action } + } + return item + }), + label: group.label, + } + }), + }, + + texts: undefined, + } + return data + } + + async getSubpoena(user: User, id: string, locale: Locale) { + const { formatMessage } = await this.intlService.useIntl(namespaces, locale) + + const subpoena: SubpoenaResponse | null = await this.api.getSubpoena( + id, + user, + locale, + ) + + if (!isDefined(subpoena)) return null + const subpoenaData = subpoena.data + if (!isDefined(subpoenaData)) return null + + const defenderInfo = subpoena.defenderInfo + const defenderChoice = defenderInfo?.defenderChoice + const message = defenderChoice + ? formatMessage(DefenseChoices[defenderChoice].message) + : '' + + const data: Subpoena = { + data: { + id: subpoena.caseId ?? id, + hasBeenServed: subpoenaData.hasBeenServed, + chosenDefender: [message, defenderInfo?.defenderName] + .filter(isDefined) + .join(', '), + defenderChoice: mapDefenseChoiceForSubpoena(defenderChoice), + defaultChoice: mapDefenseChoiceForSubpoenaDefaultChoice( + subpoenaData.defaultDefenderChoice, + ), + hasChosen: subpoenaData.hasChosenDefender, + canEditDefenderChoice: defenderInfo?.canEdit, + groups: subpoenaData.groups, + courtContactInfo: defenderInfo?.courtContactInfo, + }, + actions: undefined, + texts: { + confirmation: subpoenaData.alerts?.find( + (alert) => alert.type === AlertMessageTypeEnum.Success, + )?.message, + description: subpoenaData.subtitle, + }, + } + return data + } + + async getLawyers(user: User, locale: Locale) { + const { formatMessage } = await this.intlService.useIntl(namespaces, locale) + + const answer: Array<Defender> | undefined | null = + await this.api.getLawyers(user) + const list: Lawyers = { lawyers: [] } + answer?.map((x) => { + list.lawyers?.push({ + title: [x.name, x.practice].filter(isDefined).join(', '), + nationalId: x.nationalId, + }) + }) + + list.choices = Object.entries(DefenseChoices).map(([code, value]) => ({ + id: code, + label: formatMessage(value.message), + })) + + return list + } + + async postDefenseChoice( + user: User, + input: PostDefenseChoiceInput, + locale: Locale, + ) { + if (!input || !input.choice) return null + + return await this.api.patchSubpoena( + { + caseId: input.caseId, + updateSubpoenaDto: { + defenderChoice: mapDefenseChoice(input.choice), + defenderNationalId: input.lawyersNationalId, + }, + locale: locale, + }, + user, + ) + } +} diff --git a/libs/api/domains/law-and-order/src/models/actions.model.ts b/libs/api/domains/law-and-order/src/models/actions.model.ts new file mode 100644 index 000000000000..5dec024ec504 --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/actions.model.ts @@ -0,0 +1,22 @@ +import { Field, ObjectType, registerEnumType } from '@nestjs/graphql' + +export enum ActionTypeEnum { + file = 'file', + url = 'url', + inbox = 'inbox', +} +registerEnumType(ActionTypeEnum, { + name: 'LawAndOrderActionTypeEnum', +}) + +@ObjectType('LawAndOrderAction') +export class Action { + @Field(() => ActionTypeEnum, { nullable: true }) + type?: ActionTypeEnum + + @Field({ nullable: true }) + title?: string + + @Field({ nullable: true }) + data?: string +} diff --git a/libs/api/domains/law-and-order/src/models/courtCase.model.ts b/libs/api/domains/law-and-order/src/models/courtCase.model.ts new file mode 100644 index 000000000000..f52fdad9a7aa --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/courtCase.model.ts @@ -0,0 +1,39 @@ +import { Field, ID, ObjectType } from '@nestjs/graphql' +import { Action } from './actions.model' +import { Group } from './group.model' + +@ObjectType('LawAndOrderCourtCaseText') +export class Text { + @Field({ nullable: true }) + intro?: string + + @Field({ nullable: true }) + footnote?: string +} + +@ObjectType('LawAndOrderCourtCaseData') +export class Data { + @Field(() => ID) + id!: string + + @Field({ nullable: true }) + caseNumberTitle?: string + + @Field({ nullable: true }) + hasBeenServed?: boolean + + @Field(() => [Group], { nullable: true }) + groups?: Array<Group> +} + +@ObjectType('LawAndOrderCourtCase') +export class CourtCase { + @Field(() => Text, { nullable: true }) + texts?: Text + + @Field(() => [Action], { nullable: true }) + actions?: Array<Action> + + @Field(() => Data, { nullable: true }) + data?: Data +} diff --git a/libs/api/domains/law-and-order/src/models/courtCases.model.ts b/libs/api/domains/law-and-order/src/models/courtCases.model.ts new file mode 100644 index 000000000000..308cae106981 --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/courtCases.model.ts @@ -0,0 +1,49 @@ +import { Field, ID, ObjectType, registerEnumType } from '@nestjs/graphql' + +export enum CourtCaseStateTagColorEnum { + blue = 'blue', + darkerBlue = 'darkerBlue', + purple = 'purple', + white = 'white', + red = 'red', + rose = 'rose', + blueberry = 'blueberry', + dark = 'dark', + mint = 'mint', + yellow = 'yellow', + disabled = 'disabled', + warn = 'warn', +} +registerEnumType(CourtCaseStateTagColorEnum, { + name: 'LawAndOrderCourtCaseStateTagColorEnum', +}) + +@ObjectType('LawAndOrderCourtCasesState') +export class State { + @Field({ nullable: true }) + label?: string + + @Field(() => CourtCaseStateTagColorEnum, { nullable: true }) + color?: CourtCaseStateTagColorEnum +} + +@ObjectType('LawAndOrderCourtCasesCase') +export class Case { + @Field(() => ID) + id!: string + + @Field({ nullable: true }) + caseNumberTitle?: string + + @Field({ nullable: true }) + type?: string + + @Field(() => State, { nullable: true }) + state?: State +} + +@ObjectType('LawAndOrderCourtCases') +export class CourtCases { + @Field(() => [Case], { nullable: true }) + cases?: Array<Case> +} diff --git a/libs/api/domains/law-and-order/src/models/defenseChoice.model.ts b/libs/api/domains/law-and-order/src/models/defenseChoice.model.ts new file mode 100644 index 000000000000..80d1b2cf39fc --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/defenseChoice.model.ts @@ -0,0 +1,14 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { DefenseChoiceEnum } from './defenseChoiceEnum.model' + +@ObjectType('LawAndOrderDefenseChoice') +export class DefenseChoice { + @Field() + caseId!: string + + @Field(() => DefenseChoice, { nullable: true }) + choice?: DefenseChoiceEnum + + @Field({ nullable: true }) + lawyersNationalId?: string +} diff --git a/libs/api/domains/law-and-order/src/models/defenseChoiceEnum.model.ts b/libs/api/domains/law-and-order/src/models/defenseChoiceEnum.model.ts new file mode 100644 index 000000000000..e4a4297668da --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/defenseChoiceEnum.model.ts @@ -0,0 +1,11 @@ +import { registerEnumType } from '@nestjs/graphql' + +export enum DefenseChoiceEnum { + WAIVE = 'WAIVE', + CHOOSE = 'CHOOSE', + DELAY = 'DELAY', + DELEGATE = 'DELEGATE', +} +registerEnumType(DefenseChoiceEnum, { + name: 'LawAndOrderDefenseChoiceEnum', +}) diff --git a/libs/api/domains/law-and-order/src/models/group.model.ts b/libs/api/domains/law-and-order/src/models/group.model.ts new file mode 100644 index 000000000000..4020ee9d8bc1 --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/group.model.ts @@ -0,0 +1,11 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { Item } from './item.model' + +@ObjectType('LawAndOrderGroup') +export class Group { + @Field({ nullable: true }) + label?: string + + @Field(() => [Item], { nullable: true }) + items?: Array<Item> +} diff --git a/libs/api/domains/law-and-order/src/models/item.model.ts b/libs/api/domains/law-and-order/src/models/item.model.ts new file mode 100644 index 000000000000..3e2b6ca2d067 --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/item.model.ts @@ -0,0 +1,17 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { Action } from './actions.model' + +@ObjectType('LawAndOrderSubpoenaItem') +export class Item { + @Field({ nullable: true }) + label?: string + + @Field({ nullable: true }) + value?: string + + @Field({ nullable: true }) + link?: string + + @Field(() => Action, { nullable: true }) + action?: Action +} diff --git a/libs/api/domains/law-and-order/src/models/lawyers.model.ts b/libs/api/domains/law-and-order/src/models/lawyers.model.ts new file mode 100644 index 000000000000..d6e1977100eb --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/lawyers.model.ts @@ -0,0 +1,28 @@ +import { Field, ObjectType } from '@nestjs/graphql' + +@ObjectType('LawAndOrderLawyerChoices') +export class Choice { + @Field({ nullable: true }) + id?: string + + @Field({ nullable: true }) + label?: string +} + +@ObjectType('LawAndOrderLawyer') +export class Lawyer { + @Field({ nullable: true }) + title?: string + + @Field({ nullable: true }) + nationalId?: string +} + +@ObjectType('LawAndOrderLawyers') +export class Lawyers { + @Field(() => [Lawyer], { nullable: true }) + lawyers?: Array<Lawyer> + + @Field(() => [Choice], { nullable: true }) + choices?: Array<Choice> +} diff --git a/libs/api/domains/law-and-order/src/models/subpoena.model.ts b/libs/api/domains/law-and-order/src/models/subpoena.model.ts new file mode 100644 index 000000000000..c71f0f365388 --- /dev/null +++ b/libs/api/domains/law-and-order/src/models/subpoena.model.ts @@ -0,0 +1,61 @@ +import { Field, ID, ObjectType } from '@nestjs/graphql' +import { Action } from './actions.model' +import { DefenseChoiceEnum } from './defenseChoiceEnum.model' +import { Group } from './group.model' + +@ObjectType('LawAndOrderSubpoenaTexts') +export class Text { + @Field({ nullable: true }) + intro?: string + + @Field({ nullable: true }) + confirmation?: string + + @Field({ nullable: true }) + description?: string + + @Field({ nullable: true }) + claim?: string +} + +@ObjectType('LawAndOrderSubpoenaData') +export class Data { + @Field(() => ID) + id!: string + + @Field({ nullable: true }) + hasBeenServed?: boolean + + @Field({ nullable: true }) + chosenDefender?: string + + @Field(() => Boolean, { nullable: true }) + canEditDefenderChoice?: boolean + + @Field({ nullable: true }) + courtContactInfo?: string + + @Field(() => DefenseChoiceEnum) + defaultChoice!: DefenseChoiceEnum + + @Field(() => Boolean, { nullable: true }) + hasChosen?: boolean + + @Field(() => DefenseChoiceEnum, { nullable: true }) + defenderChoice?: DefenseChoiceEnum + + @Field(() => [Group], { nullable: true }) + groups?: Array<Group> +} + +@ObjectType('LawAndOrderSubpoena') +export class Subpoena { + @Field({ nullable: true }) + texts?: Text + + @Field(() => [Action], { nullable: true }) + actions?: Array<Action> + + @Field(() => Data, { nullable: true }) + data?: Data +} diff --git a/libs/application/templates/financial-statement-cemetery/tsconfig.json b/libs/api/domains/law-and-order/tsconfig.json similarity index 83% rename from libs/application/templates/financial-statement-cemetery/tsconfig.json rename to libs/api/domains/law-and-order/tsconfig.json index 52f7c83105fc..2c9d3a5ecbc9 100644 --- a/libs/application/templates/financial-statement-cemetery/tsconfig.json +++ b/libs/api/domains/law-and-order/tsconfig.json @@ -1,8 +1,7 @@ { "extends": "../../../../tsconfig.base.json", "compilerOptions": { - "jsx": "react-jsx", - "allowJs": false + "module": "commonjs" }, "files": [], "include": [], diff --git a/libs/api/domains/law-and-order/tsconfig.lib.json b/libs/api/domains/law-and-order/tsconfig.lib.json new file mode 100644 index 000000000000..28369ef7622b --- /dev/null +++ b/libs/api/domains/law-and-order/tsconfig.lib.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "../../../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/libs/application/templates/financial-statement-cemetery/tsconfig.spec.json b/libs/api/domains/law-and-order/tsconfig.spec.json similarity index 64% rename from libs/application/templates/financial-statement-cemetery/tsconfig.spec.json rename to libs/api/domains/law-and-order/tsconfig.spec.json index 1033686367b0..6668655fc397 100644 --- a/libs/application/templates/financial-statement-cemetery/tsconfig.spec.json +++ b/libs/api/domains/law-and-order/tsconfig.spec.json @@ -9,12 +9,6 @@ "jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", - "src/**/*.test.tsx", - "src/**/*.spec.tsx", - "src/**/*.test.js", - "src/**/*.spec.js", - "src/**/*.test.jsx", - "src/**/*.spec.jsx", "src/**/*.d.ts" ] } diff --git a/libs/api/domains/occupational-licenses-v2/src/lib/occupationalLicensesV2.service.ts b/libs/api/domains/occupational-licenses-v2/src/lib/occupationalLicensesV2.service.ts index 55abcf0b71da..4deb5bd691df 100644 --- a/libs/api/domains/occupational-licenses-v2/src/lib/occupationalLicensesV2.service.ts +++ b/libs/api/domains/occupational-licenses-v2/src/lib/occupationalLicensesV2.service.ts @@ -268,7 +268,6 @@ export class OccupationalLicensesV2Service { permit: data.practice, licenseHolderName: data.licenseHolderName, licenseHolderNationalId: data.licenseHolderNationalId, - dateOfBirth: info(data.licenseHolderNationalId).birthday, validFrom: data.validFrom, title: `${data.profession} - ${data.practice}`, status, diff --git a/libs/api/domains/occupational-licenses/src/lib/models/occupationalLicense.model.ts b/libs/api/domains/occupational-licenses/src/lib/models/occupationalLicense.model.ts index 8f98b15c0258..a67fa3b79992 100644 --- a/libs/api/domains/occupational-licenses/src/lib/models/occupationalLicense.model.ts +++ b/libs/api/domains/occupational-licenses/src/lib/models/occupationalLicense.model.ts @@ -46,6 +46,7 @@ export abstract class OccupationalLicense { @Field(() => ID) id!: string | number + @Field(() => String) type!: string diff --git a/libs/api/domains/occupational-licenses/src/lib/occupationalLicenses.service.ts b/libs/api/domains/occupational-licenses/src/lib/occupationalLicenses.service.ts index 8f08316cc97c..2eef0fad1cf6 100644 --- a/libs/api/domains/occupational-licenses/src/lib/occupationalLicenses.service.ts +++ b/libs/api/domains/occupational-licenses/src/lib/occupationalLicenses.service.ts @@ -98,6 +98,7 @@ export class OccupationalLicensesService { .map((license) => ({ institution: OccupationalLicenseType.HEALTH, id: license.id.toString(), + licenseNumber: license.licenseNumber, legalEntityId: license.legalEntityId, holderName: license.licenseHolderName, profession: license.profession, diff --git a/libs/api/domains/official-journal-of-iceland-application/src/lib/mappers.ts b/libs/api/domains/official-journal-of-iceland-application/src/lib/mappers.ts new file mode 100644 index 000000000000..96ed537978c9 --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/lib/mappers.ts @@ -0,0 +1,55 @@ +import { + AddApplicationAttachmentTypeEnum, + GetApplicationAttachmentsTypeEnum, + GetPresignedUrlTypeEnum, +} from '@island.is/clients/official-journal-of-iceland/application' + +export const mapAttachmentType = ( + val: any, +): AddApplicationAttachmentTypeEnum => { + switch (val) { + case AddApplicationAttachmentTypeEnum.Frumrit: + case GetPresignedUrlTypeEnum.Frumrit: + return AddApplicationAttachmentTypeEnum.Frumrit + case AddApplicationAttachmentTypeEnum.Fylgiskjol: + case GetPresignedUrlTypeEnum.Fylgiskjol: + return AddApplicationAttachmentTypeEnum.Fylgiskjol + default: + return AddApplicationAttachmentTypeEnum.Fylgiskjol + } +} + +export const mapPresignedUrlType = (val: any): GetPresignedUrlTypeEnum => { + switch (val) { + case GetPresignedUrlTypeEnum.Frumrit: + return GetPresignedUrlTypeEnum.Frumrit + case GetPresignedUrlTypeEnum.Fylgiskjol: + return GetPresignedUrlTypeEnum.Fylgiskjol + default: + return GetPresignedUrlTypeEnum.Fylgiskjol + } +} + +export const mapGetAttachmentType = ( + val: any, +): GetApplicationAttachmentsTypeEnum => { + switch (val) { + case GetApplicationAttachmentsTypeEnum.Frumrit: + return GetApplicationAttachmentsTypeEnum.Frumrit + case GetApplicationAttachmentsTypeEnum.Fylgiskjol: + return GetApplicationAttachmentsTypeEnum.Fylgiskjol + default: + return GetApplicationAttachmentsTypeEnum.Fylgiskjol + } +} + +type EnumType = { [s: string | number]: string } + +export const safeEnumMapper = <T extends EnumType>( + val: unknown, + enumType: T, +): T[keyof T] | null => { + const found = Object.values(enumType).find((enumVal) => enumVal === val) + + return found ? (found as T[keyof T]) : null +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/lib/ojoiApplication.resolver.ts b/libs/api/domains/official-journal-of-iceland-application/src/lib/ojoiApplication.resolver.ts index 4b681ff24ef4..60c33adf68f3 100644 --- a/libs/api/domains/official-journal-of-iceland-application/src/lib/ojoiApplication.resolver.ts +++ b/libs/api/domains/official-journal-of-iceland-application/src/lib/ojoiApplication.resolver.ts @@ -1,5 +1,10 @@ -import { Args, Query, Resolver } from '@nestjs/graphql' -import { IdsUserGuard, Scopes, ScopesGuard } from '@island.is/auth-nest-tools' +import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' +import { + CurrentUser, + IdsUserGuard, + Scopes, + ScopesGuard, +} from '@island.is/auth-nest-tools' import { ApiScope } from '@island.is/auth/scopes' import { FeatureFlag, Features } from '@island.is/nest/feature-flags' import { OfficialJournalOfIcelandApplicationService } from './ojoiApplication.service' @@ -7,11 +12,19 @@ import { GetCommentsInput } from '../models/getComments.input' import { GetCommentsResponse } from '../models/getComments.response' import { PostCommentInput } from '../models/postComment.input' import { PostCommentResponse } from '../models/postComment.response' -import { PostApplicationInput } from '../models/postApplication.input' import { UseGuards } from '@nestjs/common' import { CaseGetPriceResponse } from '../models/getPrice.response' import { GetPdfUrlResponse } from '../models/getPdfUrlResponse' -import { GetPdfResponse } from '../models/getPdfResponse' +import { GetPresignedUrlInput } from '../models/getPresignedUrl.input' +import { GetPresignedUrlResponse } from '../models/getPresignedUrl.response' +import { AddApplicationAttachmentResponse } from '../models/addApplicationAttachment.response' +import { AddApplicationAttachmentInput } from '../models/addApplicationAttachment.input' +import { GetApplicationAttachmentInput } from '../models/getApplicationAttachment.input' +import { GetApplicationAttachmentsResponse } from '../models/getApplicationAttachments.response' +import { DeleteApplicationAttachmentInput } from '../models/deleteApplicationAttachment.input' +import type { User } from '@island.is/auth-nest-tools' +import { GetUserInvolvedPartiesResponse } from '../models/getUserInvolvedParties.response' +import { GetUserInvolvedPartiesInput } from '../models/getUserInvolvedParties.input' @Scopes(ApiScope.internal) @UseGuards(IdsUserGuard, ScopesGuard) @@ -23,44 +36,91 @@ export class OfficialJournalOfIcelandApplicationResolver { ) {} @Query(() => GetCommentsResponse, { - name: 'officialJournalOfIcelandApplicationGetComments', + name: 'OJOIAGetComments', }) - async getComments(@Args('input') input: GetCommentsInput) { - return await this.ojoiApplicationService.getComments(input) + getComments( + @Args('input') input: GetCommentsInput, + @CurrentUser() user: User, + ) { + return this.ojoiApplicationService.getComments(input, user) } - @Query(() => PostCommentResponse, { - name: 'officialJournalOfIcelandApplicationPostComment', + @Mutation(() => PostCommentResponse, { + name: 'OJOIAPostComment', }) - async postComment(@Args('input') input: PostCommentInput) { - return await this.ojoiApplicationService.postComment(input) - } - - @Query(() => Boolean, { - name: 'officialJournalOfIcelandApplicationPostApplication', - }) - async postApplication(@Args('input') input: PostApplicationInput) { - return await this.ojoiApplicationService.postApplication(input) + postComment( + @Args('input') input: PostCommentInput, + @CurrentUser() user: User, + ) { + return this.ojoiApplicationService.postComment(input, user) } @Query(() => CaseGetPriceResponse, { name: 'officialJournalOfIcelandApplicationGetPrice', }) - async getPrice(@Args('id') id: string) { - return await this.ojoiApplicationService.getPrice(id) + getPrice(@Args('id') id: string, @CurrentUser() user: User) { + return this.ojoiApplicationService.getPrice(id, user) } @Query(() => GetPdfUrlResponse, { name: 'officialJournalOfIcelandApplicationGetPdfUrl', }) - async getPdfUrl(@Args('id') id: string) { - return await this.ojoiApplicationService.getPdfUrl(id) + getPdfUrl(@Args('id') id: string, @CurrentUser() user: User) { + return this.ojoiApplicationService.getPdfUrl(id, user) + } + + @Mutation(() => GetPresignedUrlResponse, { + name: 'officialJournalOfIcelandApplicationGetPresignedUrl', + }) + getPresignedUrl( + @Args('input', { type: () => GetPresignedUrlInput }) + input: GetPresignedUrlInput, + @CurrentUser() user: User, + ) { + return this.ojoiApplicationService.getPresignedUrl(input, user) + } + + @Mutation(() => AddApplicationAttachmentResponse, { + name: 'officialJournalOfIcelandApplicationAddAttachment', + }) + addAttachment( + @Args('input', { type: () => AddApplicationAttachmentInput }) + input: AddApplicationAttachmentInput, + @CurrentUser() user: User, + ) { + return this.ojoiApplicationService.addApplicationAttachment(input, user) + } + + @Query(() => GetApplicationAttachmentsResponse, { + name: 'officialJournalOfIcelandApplicationGetAttachments', + }) + getAttachments( + @Args('input', { type: () => GetApplicationAttachmentInput }) + input: AddApplicationAttachmentInput, + @CurrentUser() user: User, + ) { + return this.ojoiApplicationService.getApplicationAttachments(input, user) + } + + @Mutation(() => AddApplicationAttachmentResponse, { + name: 'officialJournalOfIcelandApplicationDeleteAttachment', + }) + deleteAttachment( + @Args('input', { type: () => DeleteApplicationAttachmentInput }) + input: DeleteApplicationAttachmentInput, + @CurrentUser() user: User, + ) { + return this.ojoiApplicationService.deleteApplicationAttachment(input, user) } - @Query(() => GetPdfResponse, { - name: 'officialJournalOfIcelandApplicationGetPdf', + @Query(() => GetUserInvolvedPartiesResponse, { + name: 'officialJournalOfIcelandApplicationGetUserInvolvedParties', }) - async getPdf(@Args('id') id: string) { - return (await this.ojoiApplicationService.getPdf(id)).toString('base64') + getUserInvolvedParties( + @Args('input', { type: () => GetUserInvolvedPartiesInput }) + input: GetUserInvolvedPartiesInput, + @CurrentUser() user: User, + ) { + return this.ojoiApplicationService.getUserInvolvedParties(input, user) } } diff --git a/libs/api/domains/official-journal-of-iceland-application/src/lib/ojoiApplication.service.ts b/libs/api/domains/official-journal-of-iceland-application/src/lib/ojoiApplication.service.ts index a810f69c9345..16ae03302b89 100644 --- a/libs/api/domains/official-journal-of-iceland-application/src/lib/ojoiApplication.service.ts +++ b/libs/api/domains/official-journal-of-iceland-application/src/lib/ojoiApplication.service.ts @@ -1,45 +1,210 @@ import { OfficialJournalOfIcelandApplicationClientService } from '@island.is/clients/official-journal-of-iceland/application' -import { Injectable } from '@nestjs/common' +import { Inject, Injectable } from '@nestjs/common' import { PostCommentInput } from '../models/postComment.input' import { PostApplicationInput } from '../models/postApplication.input' import { GetCommentsInput } from '../models/getComments.input' +import { GetPresignedUrlInput } from '../models/getPresignedUrl.input' +import { GetPresignedUrlResponse } from '../models/getPresignedUrl.response' +import { AddApplicationAttachmentInput } from '../models/addApplicationAttachment.input' +import { + mapAttachmentType, + mapGetAttachmentType, + mapPresignedUrlType, + safeEnumMapper, +} from './mappers' +import { AddApplicationAttachmentResponse } from '../models/addApplicationAttachment.response' +import { GetApplicationAttachmentInput } from '../models/getApplicationAttachment.input' +import { DeleteApplicationAttachmentInput } from '../models/deleteApplicationAttachment.input' +import { LOGGER_PROVIDER } from '@island.is/logging' +import type { Logger } from '@island.is/logging' +import { User } from '@island.is/auth-nest-tools' +import { GetUserInvolvedPartiesInput } from '../models/getUserInvolvedParties.input' +import { + CommentDirection, + GetCommentsResponse, +} from '../models/getComments.response' + +const LOG_CATEGORY = 'official-journal-of-iceland-application' @Injectable() export class OfficialJournalOfIcelandApplicationService { constructor( + @Inject(LOGGER_PROVIDER) + private logger: Logger, private readonly ojoiApplicationService: OfficialJournalOfIcelandApplicationClientService, ) {} - async getComments(input: GetCommentsInput) { - return this.ojoiApplicationService.getComments(input) - } + async getComments( + input: GetCommentsInput, + user: User, + ): Promise<GetCommentsResponse> { + const incomingComments = await this.ojoiApplicationService.getComments( + input, + user, + ) + + const mapped = incomingComments.comments.map((c) => { + const directonEnum = + safeEnumMapper(c.direction, CommentDirection) ?? + CommentDirection.RECEIVED - async postComment(input: PostCommentInput) { - return this.ojoiApplicationService.postComment({ - id: input.id, - // comment: input.comment, + return { + id: c.id, + age: c.age, + direction: directonEnum, + title: c.title, + comment: c.comment, + creator: c.creator, + receiver: c.receiver, + } }) + + return { + comments: mapped, + } } - async getPdfUrl(id: string) { - return this.ojoiApplicationService.getPdfUrl({ - id, - }) + async postComment(input: PostCommentInput, user: User) { + const success = await this.ojoiApplicationService.postComment( + { + id: input.id, + postApplicationComment: { + comment: input.comment, + }, + }, + user, + ) + + return { + success, + } } - async getPdf(id: string) { - return this.ojoiApplicationService.getPdf({ - id, - }) + async getPdfUrl(id: string, user: User) { + return this.ojoiApplicationService.getPdfUrl( + { + id, + }, + user, + ) } - async postApplication(input: PostApplicationInput): Promise<boolean> { - return this.ojoiApplicationService.postApplication(input) + async postApplication( + input: PostApplicationInput, + user: User, + ): Promise<boolean> { + return this.ojoiApplicationService.postApplication(input, user) } - async getPrice(id: string) { - return this.ojoiApplicationService.getPrice({ - id, - }) + async getPrice(id: string, user: User) { + return this.ojoiApplicationService.getPrice( + { + id, + }, + user, + ) + } + + async getPresignedUrl( + input: GetPresignedUrlInput, + user: User, + ): Promise<GetPresignedUrlResponse> { + const attachmentType = mapPresignedUrlType(input.attachmentType) + + return this.ojoiApplicationService.getPresignedUrl( + { + id: input.applicationId, + type: attachmentType, + getPresignedUrlBody: { + fileName: input.fileName, + fileType: input.fileType, + }, + }, + user, + ) + } + + async addApplicationAttachment( + input: AddApplicationAttachmentInput, + user: User, + ): Promise<AddApplicationAttachmentResponse> { + try { + const attachmentType = mapAttachmentType(input.attachmentType) + + this.ojoiApplicationService.addApplicationAttachment( + { + id: input.applicationId, + type: attachmentType, + postApplicationAttachmentBody: { + fileName: input.fileName, + originalFileName: input.originalFileName, + fileFormat: input.fileFormat, + fileExtension: input.fileExtension, + fileLocation: input.fileLocation, + fileSize: input.fileSize, + }, + }, + user, + ) + + return { + success: true, + } + } catch (error) { + this.logger.error('Failed to add application attachment', { + category: LOG_CATEGORY, + applicationId: input.applicationId, + error: error, + }) + return { + success: false, + } + } + } + + async getApplicationAttachments( + input: GetApplicationAttachmentInput, + user: User, + ) { + return this.ojoiApplicationService.getApplicationAttachments( + { + id: input.applicationId, + type: mapGetAttachmentType(input.attachmentType), + }, + user, + ) + } + + async deleteApplicationAttachment( + input: DeleteApplicationAttachmentInput, + user: User, + ) { + try { + await this.ojoiApplicationService.deleteApplicationAttachment( + { + id: input.applicationId, + key: input.key, + }, + user, + ) + + return { success: true } + } catch (error) { + this.logger.error('Failed to delete application attachment', { + category: LOG_CATEGORY, + applicationId: input.applicationId, + error: error, + }) + return { success: false } + } + } + + async getUserInvolvedParties(input: GetUserInvolvedPartiesInput, user: User) { + return this.ojoiApplicationService.getUserInvolvedParties( + { + id: input.applicationId, + }, + user, + ) } } diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/addApplicationAttachment.input.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/addApplicationAttachment.input.ts new file mode 100644 index 000000000000..f15358a3cb60 --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/addApplicationAttachment.input.ts @@ -0,0 +1,28 @@ +import { InputType, Field, Int } from '@nestjs/graphql' + +@InputType('OfficialJournalOfIcelandApplicationAddApplicationAttachmentInput') +export class AddApplicationAttachmentInput { + @Field() + applicationId!: string + + @Field() + attachmentType!: string + + @Field() + fileName!: string + + @Field() + originalFileName!: string + + @Field() + fileFormat!: string + + @Field() + fileExtension!: string + + @Field() + fileLocation!: string + + @Field(() => Int) + fileSize!: number +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/addApplicationAttachment.response.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/addApplicationAttachment.response.ts new file mode 100644 index 000000000000..83fd6cac76cc --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/addApplicationAttachment.response.ts @@ -0,0 +1,9 @@ +import { Field, ObjectType } from '@nestjs/graphql' + +@ObjectType( + 'OfficialJournalOfIcelandApplicationAddApplicationAttachmentResponse', +) +export class AddApplicationAttachmentResponse { + @Field() + success!: boolean +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/deleteApplicationAttachment.input.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/deleteApplicationAttachment.input.ts new file mode 100644 index 000000000000..0c3ae8857689 --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/deleteApplicationAttachment.input.ts @@ -0,0 +1,12 @@ +import { Field, InputType } from '@nestjs/graphql' + +@InputType( + 'OfficialJournalOfIcelandApplicationDeleteApplicationAttachmentInput', +) +export class DeleteApplicationAttachmentInput { + @Field() + applicationId!: string + + @Field() + key!: string +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getApplicationAttachment.input.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getApplicationAttachment.input.ts new file mode 100644 index 000000000000..3a19532f5fbd --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getApplicationAttachment.input.ts @@ -0,0 +1,10 @@ +import { InputType, Field } from '@nestjs/graphql' + +@InputType('OfficialJournalOfIcelandApplicationGetApplicationAttachmentInput') +export class GetApplicationAttachmentInput { + @Field() + applicationId!: string + + @Field() + attachmentType!: string +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getApplicationAttachments.response.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getApplicationAttachments.response.ts new file mode 100644 index 000000000000..57938abbd749 --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getApplicationAttachments.response.ts @@ -0,0 +1,33 @@ +import { Field, Int, ObjectType } from '@nestjs/graphql' + +@ObjectType('OfficialJournalOfIcelandApplicationGetApplicationAttachments') +export class GetApplicationAttachmentsResponse { + @Field(() => [GetApplicationAttachmentResponse]) + attachments!: GetApplicationAttachmentResponse[] +} + +@ObjectType( + 'OfficialJournalOfIcelandApplicationGetApplicationAttachmentResponse', +) +export class GetApplicationAttachmentResponse { + @Field() + id!: string + + @Field() + fileName!: string + + @Field() + originalFileName!: string + + @Field() + fileFormat!: string + + @Field() + fileExtension!: string + + @Field() + fileLocation!: string + + @Field(() => Int) + fileSize!: number +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getComments.input.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getComments.input.ts index dd550de8404d..813a6809cfa9 100644 --- a/libs/api/domains/official-journal-of-iceland-application/src/models/getComments.input.ts +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getComments.input.ts @@ -1,7 +1,7 @@ -import { Field, InputType } from '@nestjs/graphql' +import { Field, ID, InputType } from '@nestjs/graphql' -@InputType('OfficialJournalOfIcelandApplicationGetCommentsInput') +@InputType('OJOIAGetCommentsInput') export class GetCommentsInput { - @Field(() => String) + @Field(() => ID) id!: string } diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getComments.response.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getComments.response.ts index a5203aa6fcab..6dfb8ae78006 100644 --- a/libs/api/domains/official-journal-of-iceland-application/src/models/getComments.response.ts +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getComments.response.ts @@ -1,44 +1,39 @@ -import { Field, ObjectType } from '@nestjs/graphql' +import { Field, ID, ObjectType, registerEnumType } from '@nestjs/graphql' -@ObjectType('OfficialJournalOfIcelandApplicationCommentTask') -export class CaseCommentTask { - @Field(() => String, { nullable: true }) - from!: string | null - - @Field(() => String, { nullable: true }) - to!: string | null - - @Field(() => String) - title!: string - @Field(() => String, { nullable: true }) - comment!: string | null +export enum CommentDirection { + SENT = 'sent', + RECEIVED = 'received', } -@ObjectType('OfficialJournalOfIcelandApplicationComment') +registerEnumType(CommentDirection, { + name: 'OJOICommentDirection', +}) + +@ObjectType('OJOIAComment') export class CaseComment { - @Field(() => String) + @Field(() => ID) id!: string - @Field(() => String) - createdAt!: string + @Field() + age!: string - @Field(() => Boolean) - internal!: boolean + @Field(() => CommentDirection) + direction!: CommentDirection - @Field(() => String) - type!: string + @Field() + title!: string - @Field(() => String) - caseStatus!: string + @Field(() => String, { nullable: true }) + comment!: string | null - @Field(() => String) - state!: string + @Field(() => String, { nullable: true }) + creator!: string | null - @Field(() => CaseCommentTask) - task!: CaseCommentTask + @Field(() => String, { nullable: true }) + receiver!: string | null } -@ObjectType('OfficialJournalOfIcelandApplicationGetCommentsResponse') +@ObjectType('OJOIAGetCommentsResponse') export class GetCommentsResponse { @Field(() => [CaseComment]) comments!: CaseComment[] diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getPdfResponse.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getPdfResponse.ts deleted file mode 100644 index 3f9ecbdb49b5..000000000000 --- a/libs/api/domains/official-journal-of-iceland-application/src/models/getPdfResponse.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Field, ObjectType } from '@nestjs/graphql' - -@ObjectType('OfficialJournalOfIcelandApplicationGetPdfResponse') -export class GetPdfResponse { - @Field(() => String) - buffer!: Buffer -} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getPdfUrlResponse.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getPdfUrlResponse.ts index 5e3062492d49..4ceb94e91350 100644 --- a/libs/api/domains/official-journal-of-iceland-application/src/models/getPdfUrlResponse.ts +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getPdfUrlResponse.ts @@ -2,6 +2,6 @@ import { Field, ObjectType } from '@nestjs/graphql' @ObjectType('OfficialJournalOfIcelandApplicationGetPdfUrlResponse') export class GetPdfUrlResponse { - @Field(() => String) + @Field() url!: string } diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getPresignedUrl.input.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getPresignedUrl.input.ts new file mode 100644 index 000000000000..b944f64608cf --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getPresignedUrl.input.ts @@ -0,0 +1,16 @@ +import { Field, InputType } from '@nestjs/graphql' + +@InputType('OfficialJournalOfIcelandApplicationGetPresignedUrlInput') +export class GetPresignedUrlInput { + @Field() + applicationId!: string + + @Field() + fileName!: string + + @Field() + fileType!: string + + @Field() + attachmentType!: string +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getPresignedUrl.response.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getPresignedUrl.response.ts new file mode 100644 index 000000000000..e2c168dd4132 --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getPresignedUrl.response.ts @@ -0,0 +1,7 @@ +import { Field, ObjectType } from '@nestjs/graphql' + +@ObjectType('OfficialJournalOfIcelandApplicationGetPresignedUrlResponse') +export class GetPresignedUrlResponse { + @Field() + url!: string +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getUserInvolvedParties.input.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getUserInvolvedParties.input.ts new file mode 100644 index 000000000000..9f045441743f --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getUserInvolvedParties.input.ts @@ -0,0 +1,7 @@ +import { Field, ID, InputType } from '@nestjs/graphql' + +@InputType('GetUserInvolvedPartiesInput') +export class GetUserInvolvedPartiesInput { + @Field(() => ID) + applicationId!: string +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/getUserInvolvedParties.response.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/getUserInvolvedParties.response.ts new file mode 100644 index 000000000000..73a2f1b29386 --- /dev/null +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/getUserInvolvedParties.response.ts @@ -0,0 +1,19 @@ +import { Field, ObjectType } from '@nestjs/graphql' + +@ObjectType('OfficialJournalOfIcelandApplicationGetUserInvolvedParty') +export class InvolvededParty { + @Field({ description: 'The id of the involved party' }) + id!: string + + @Field({ description: 'The title of the involved party' }) + title!: string + + @Field({ description: 'The slug of the involved party' }) + slug!: string +} + +@ObjectType('OfficialJournalOfIcelandApplicationGetUserInvolvedPartiesResponse') +export class GetUserInvolvedPartiesResponse { + @Field(() => [InvolvededParty]) + involvedParties!: InvolvededParty[] +} diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/postApplication.input.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/postApplication.input.ts index b89efcef4356..6c673065c049 100644 --- a/libs/api/domains/official-journal-of-iceland-application/src/models/postApplication.input.ts +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/postApplication.input.ts @@ -4,6 +4,6 @@ import { Field, InputType } from '@nestjs/graphql' description: 'Submit application input', }) export class PostApplicationInput { - @Field(() => String) + @Field() id!: string } diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/postComment.input.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/postComment.input.ts index de02467dcf61..b8a543e2220b 100644 --- a/libs/api/domains/official-journal-of-iceland-application/src/models/postComment.input.ts +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/postComment.input.ts @@ -1,10 +1,10 @@ -import { Field, InputType } from '@nestjs/graphql' +import { Field, ID, InputType } from '@nestjs/graphql' -@InputType('OfficialJournalOfIcelandApplicationPostCommentInput') +@InputType('OJOIAPostCommentInput') export class PostCommentInput { - @Field(() => String, { description: 'Application ID' }) + @Field(() => ID) id!: string - @Field(() => String) + @Field() comment!: string } diff --git a/libs/api/domains/official-journal-of-iceland-application/src/models/postComment.response.ts b/libs/api/domains/official-journal-of-iceland-application/src/models/postComment.response.ts index 4c83110bb5d3..eddcf30b8b83 100644 --- a/libs/api/domains/official-journal-of-iceland-application/src/models/postComment.response.ts +++ b/libs/api/domains/official-journal-of-iceland-application/src/models/postComment.response.ts @@ -1,8 +1,7 @@ import { Field, ObjectType } from '@nestjs/graphql' -import { CaseComment } from './getComments.response' @ObjectType('OfficialJournalOfIcelandApplicationPostCommentResponse') export class PostCommentResponse { - @Field(() => CaseComment) - comment!: CaseComment + @Field() + success!: boolean } diff --git a/libs/api/domains/official-journal-of-iceland/src/lib/models/advert.input.ts b/libs/api/domains/official-journal-of-iceland/src/lib/models/advert.input.ts index ac167ed5ffcb..14d782567e88 100644 --- a/libs/api/domains/official-journal-of-iceland/src/lib/models/advert.input.ts +++ b/libs/api/domains/official-journal-of-iceland/src/lib/models/advert.input.ts @@ -45,6 +45,9 @@ export class TypeQueryParams { @Field(() => Number, { nullable: true }) page?: number + + @Field(() => Number, { nullable: true }) + pageSize?: number } @InputType('OfficialJournalOfIcelandAdvertSingleParams') diff --git a/libs/api/domains/payment/src/lib/api-domains-payment.types.ts b/libs/api/domains/payment/src/lib/api-domains-payment.types.ts index c07c61cf62dd..30ea95f06dbe 100644 --- a/libs/api/domains/payment/src/lib/api-domains-payment.types.ts +++ b/libs/api/domains/payment/src/lib/api-domains-payment.types.ts @@ -1,3 +1,6 @@ +import { IsEnum, IsString } from 'class-validator' +import { ApiProperty } from '@nestjs/swagger' + export interface ChargeResult { success: boolean error: Error | null @@ -14,8 +17,23 @@ export interface CallbackResult { data?: Callback } -export interface Callback { - receptionID: string - chargeItemSubject: string - status: 'paid' | 'cancelled' | 'recreated' | 'recreatedAndPaid' +export enum PaidStatus { + paid = 'paid', + cancelled = 'cancelled', + recreated = 'recreated', + recreatedAndPaid = 'recreatedAndPaid', +} + +export class Callback { + @IsString() + @ApiProperty() + readonly receptionID!: string + + @IsString() + @ApiProperty() + readonly chargeItemSubject!: string + + @IsEnum(PaidStatus) + @ApiProperty({ enum: PaidStatus }) + readonly status!: PaidStatus } diff --git a/libs/api/domains/regulations-admin/src/lib/graphql/dto/createDraftRegulationChange.input.ts b/libs/api/domains/regulations-admin/src/lib/graphql/dto/createDraftRegulationChange.input.ts index b4ab9905c0ab..64af25d4dddd 100644 --- a/libs/api/domains/regulations-admin/src/lib/graphql/dto/createDraftRegulationChange.input.ts +++ b/libs/api/domains/regulations-admin/src/lib/graphql/dto/createDraftRegulationChange.input.ts @@ -8,6 +8,9 @@ class CreateChangeAppendixInput { @Field(() => String, { nullable: true }) text!: HTMLText + + @Field(() => String, { nullable: true }) + diff?: HTMLText } @InputType() export class CreateDraftRegulationChangeInput { diff --git a/libs/api/domains/regulations-admin/src/lib/graphql/dto/updateDraftRegulationChange.input.ts b/libs/api/domains/regulations-admin/src/lib/graphql/dto/updateDraftRegulationChange.input.ts index c52fdccdcac5..7f017faa0845 100644 --- a/libs/api/domains/regulations-admin/src/lib/graphql/dto/updateDraftRegulationChange.input.ts +++ b/libs/api/domains/regulations-admin/src/lib/graphql/dto/updateDraftRegulationChange.input.ts @@ -8,6 +8,9 @@ class UpdateChangeAppendixInput { @Field(() => String, { nullable: true }) text!: HTMLText + + @Field(() => String, { nullable: true }) + diff?: HTMLText } @InputType() diff --git a/libs/api/domains/regulations-admin/src/lib/graphql/models/draftRegulationChange.model.ts b/libs/api/domains/regulations-admin/src/lib/graphql/models/draftRegulationChange.model.ts index 3d1f03e2163c..1f5e340f2b9c 100644 --- a/libs/api/domains/regulations-admin/src/lib/graphql/models/draftRegulationChange.model.ts +++ b/libs/api/domains/regulations-admin/src/lib/graphql/models/draftRegulationChange.model.ts @@ -8,6 +8,9 @@ export class ChangeAppendix { @Field(() => String, { nullable: true }) text!: HTMLText + + @Field(() => String, { nullable: true }) + diff?: HTMLText } @ObjectType() diff --git a/libs/api/domains/regulations/src/lib/api-domains-regulations.resolver.ts b/libs/api/domains/regulations/src/lib/api-domains-regulations.resolver.ts index af38f214031d..054eca834d73 100644 --- a/libs/api/domains/regulations/src/lib/api-domains-regulations.resolver.ts +++ b/libs/api/domains/regulations/src/lib/api-domains-regulations.resolver.ts @@ -1,12 +1,13 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' import graphqlTypeJson from 'graphql-type-json' - +import { UseGuards } from '@nestjs/common' import { RegulationsService } from '@island.is/clients/regulations' +import { IdsUserGuard, ScopesGuard } from '@island.is/auth-nest-tools' import { RegulationSearchResults, RegulationYears, - RegulationListItem, } from '@island.is/regulations/web' +import { Audit } from '@island.is/nest/audit' import { Regulation, RegulationDiff, @@ -20,18 +21,20 @@ import { GetRegulationInput } from './dto/getRegulation.input' import { GetRegulationsLawChaptersInput } from './dto/getRegulationsLawChapters.input' import { GetRegulationsMinistriesInput } from './dto/getRegulationsMinistriesInput.input' import { GetRegulationsSearchInput } from './dto/getRegulationsSearch.input' -import { CreatePresignedPostInput } from './dto/createPresignedPost.input' +import { CreateRegulationPresignedPostInput } from './dto/createPresignedPost.input' import { PresignedPostResults } from '@island.is/regulations/admin' const validPage = (page: number | undefined) => (page && page >= 1 ? page : 1) - +@Audit({ namespace: '@island.is/api/regulations' }) @Resolver() export class RegulationsResolver { constructor(private regulationsService: RegulationsService) {} - @Mutation(() => graphqlTypeJson) + @Audit() + @UseGuards(IdsUserGuard, ScopesGuard) + @Mutation(() => graphqlTypeJson, { name: 'regulationCreatePresignedPost' }) createPresignedPost( - @Args('input') input: CreatePresignedPostInput, + @Args('input') input: CreateRegulationPresignedPostInput, ): Promise<PresignedPostResults | null> { return this.regulationsService.createPresignedPost( input.fileName, diff --git a/libs/api/domains/regulations/src/lib/dto/createPresignedPost.input.ts b/libs/api/domains/regulations/src/lib/dto/createPresignedPost.input.ts index aebda893850b..ff8b66208ea1 100644 --- a/libs/api/domains/regulations/src/lib/dto/createPresignedPost.input.ts +++ b/libs/api/domains/regulations/src/lib/dto/createPresignedPost.input.ts @@ -2,7 +2,7 @@ import { Field, InputType } from '@nestjs/graphql' import { IsString } from 'class-validator' @InputType() -export class CreatePresignedPostInput { +export class CreateRegulationPresignedPostInput { @Field() @IsString() readonly fileName!: string diff --git a/libs/api/domains/signature-collection/src/lib/decorators/acessRequirement.decorator.ts b/libs/api/domains/signature-collection/src/lib/decorators/acessRequirement.decorator.ts deleted file mode 100644 index 7960279d7b76..000000000000 --- a/libs/api/domains/signature-collection/src/lib/decorators/acessRequirement.decorator.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { SetMetadata } from '@nestjs/common' - -export enum OwnerAccess { - AllowActor = 'AllowActor', - RestrictActor = 'RestrictActor', -} -export enum UserAccess { - RestrictActor = 'RestrictActor', -} -export const AccessRequirement = (access?: OwnerAccess | UserAccess) => - SetMetadata('owner-access', access) diff --git a/libs/api/domains/signature-collection/src/lib/decorators/allowDelegation.decorator.ts b/libs/api/domains/signature-collection/src/lib/decorators/allowDelegation.decorator.ts new file mode 100644 index 000000000000..c4256e4aba75 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/decorators/allowDelegation.decorator.ts @@ -0,0 +1,4 @@ +import { SetMetadata } from '@nestjs/common' +import { ALLOW_DELEGATION_KEY } from '../guards/constants' + +export const AllowDelegation = () => SetMetadata(ALLOW_DELEGATION_KEY, true) diff --git a/libs/api/domains/signature-collection/src/lib/decorators/index.ts b/libs/api/domains/signature-collection/src/lib/decorators/index.ts new file mode 100644 index 000000000000..9d4ea4508ebd --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/decorators/index.ts @@ -0,0 +1,16 @@ +import { IsOwner } from './isOwner.decorator' +import { CurrentSignee, getCurrentSignee } from './signee.decorator' +import { AllowDelegation } from './allowDelegation.decorator' +import { + AllowManager, + RestrictGuarantor, +} from './parliamentaryUserTypes.decorator' + +export { + AllowDelegation, + CurrentSignee, + IsOwner, + getCurrentSignee, + AllowManager, + RestrictGuarantor, +} diff --git a/libs/api/domains/signature-collection/src/lib/decorators/isOwner.decorator.ts b/libs/api/domains/signature-collection/src/lib/decorators/isOwner.decorator.ts new file mode 100644 index 000000000000..4d62d9f5acc2 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/decorators/isOwner.decorator.ts @@ -0,0 +1,4 @@ +import { SetMetadata } from '@nestjs/common' +import { IS_OWNER_KEY } from '../guards/constants' + +export const IsOwner = () => SetMetadata(IS_OWNER_KEY, true) diff --git a/libs/api/domains/signature-collection/src/lib/decorators/parliamentaryUserTypes.decorator.ts b/libs/api/domains/signature-collection/src/lib/decorators/parliamentaryUserTypes.decorator.ts new file mode 100644 index 000000000000..299721b492ef --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/decorators/parliamentaryUserTypes.decorator.ts @@ -0,0 +1,28 @@ +import { SetMetadata } from '@nestjs/common' +import { + ALLOW_DELEGATION_KEY, + RESTRICT_GUARANTOR_KEY, +} from '../guards/constants' +// --------------- +// ---Guarantor--- +// --------------- +// A guarantor is a user in the signature collection system, aimed at parliamentary collections. +// A guarantor (is: Ábyrgðaraðili) defined by Þjóðskrá Íslands as one of the following : +// - A holder of procuration +// OR - A direct candidate in the party ballot + +export const RestrictGuarantor = () => SetMetadata(RESTRICT_GUARANTOR_KEY, true) + +// --------------- +// ----Manager---- +// --------------- +// A manager is a user in the signature collection system, aimed at parliamentary collections. +// A manager (is: Umsjónaraðili) defined by Þjóðskrá Íslands as one of the following: +// - Individuals delegated to a company without having a procuration role +// OR - Individuals delegated to a person (possibly a list owner) + +// This is the same as the allow_delegation rule so no new constants are needed +export const AllowManager = () => SetMetadata(ALLOW_DELEGATION_KEY, true) + +// Assumptions: Guarantors have access to everything unless otherwise stated +// Managers have access to nothing unless otherwise stated diff --git a/libs/api/domains/signature-collection/src/lib/dto/addLists.input.ts b/libs/api/domains/signature-collection/src/lib/dto/addLists.input.ts new file mode 100644 index 000000000000..23bcd902de1a --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/dto/addLists.input.ts @@ -0,0 +1,14 @@ +import { IsArray, IsString } from 'class-validator' +import { Field, InputType } from '@nestjs/graphql' +import { SignatureCollectionIdInput } from './collectionId.input' + +@InputType() +export class SignatureCollectionAddListsInput extends SignatureCollectionIdInput { + @Field() + @IsString() + candidateId!: string + + @Field(() => [String], { nullable: true, defaultValue: [] }) + @IsArray() + areaIds?: string[] +} diff --git a/libs/api/domains/signature-collection/src/lib/dto/areaSummaryReport.input.ts b/libs/api/domains/signature-collection/src/lib/dto/areaSummaryReport.input.ts new file mode 100644 index 000000000000..b379188d65ef --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/dto/areaSummaryReport.input.ts @@ -0,0 +1,13 @@ +import { IsString } from 'class-validator' +import { Field, InputType } from '@nestjs/graphql' + +@InputType() +export class SignatureCollectionAreaSummaryReportInput { + @Field() + @IsString() + areaId!: string + + @Field() + @IsString() + collectionId!: string +} diff --git a/libs/api/domains/signature-collection/src/lib/dto/canSignFromPaper.input.ts b/libs/api/domains/signature-collection/src/lib/dto/canSignFromPaper.input.ts new file mode 100644 index 000000000000..1aa493259781 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/dto/canSignFromPaper.input.ts @@ -0,0 +1,12 @@ +import { IsString } from 'class-validator' +import { Field, InputType } from '@nestjs/graphql' + +@InputType() +export class SignatureCollectionCanSignFromPaperInput { + @Field() + @IsString() + signeeNationalId!: string + @Field() + @IsString() + listId!: string +} diff --git a/libs/api/domains/signature-collection/src/lib/dto/index.ts b/libs/api/domains/signature-collection/src/lib/dto/index.ts new file mode 100644 index 000000000000..a98035626847 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/dto/index.ts @@ -0,0 +1,35 @@ +import { SignatureCollectionAddListsInput } from './addLists.input' +import { SignatureCollectionAreaInput } from './area.input' +import { + BulkUploadUser, + SignatureCollectionListBulkUploadInput, +} from './bulkUpload.input' +import { SignatureCollectionCandidateIdInput } from './candidateId.input' +import { SignatureCollectionCancelListsInput } from './cencelLists.input' +import { SignatureCollectionIdInput } from './collectionId.input' +import { SignatureCollectionExtendDeadlineInput } from './extendDeadline.input' +import { SignatureCollectionListIdInput } from './listId.input' +import { SignatureCollectionNationalIdInput } from './nationalId.input' +import { SignatureCollectionOwnerInput } from './owner.input' +import { SignatureCollectionSignatureIdInput } from './signatureId.input' +import { SignatureCollectionListInput } from './singatureList.input' +import { SignatureCollectionUploadPaperSignatureInput } from './uploadPaperSignature.input' +import { SignatureCollectionCanSignFromPaperInput } from './canSignFromPaper.input' + +export { + SignatureCollectionAddListsInput, + SignatureCollectionAreaInput, + SignatureCollectionListBulkUploadInput, + BulkUploadUser, + SignatureCollectionCandidateIdInput, + SignatureCollectionCancelListsInput, + SignatureCollectionIdInput, + SignatureCollectionExtendDeadlineInput, + SignatureCollectionListIdInput, + SignatureCollectionNationalIdInput, + SignatureCollectionOwnerInput, + SignatureCollectionSignatureIdInput, + SignatureCollectionListInput, + SignatureCollectionUploadPaperSignatureInput, + SignatureCollectionCanSignFromPaperInput, +} diff --git a/libs/api/domains/signature-collection/src/lib/dto/signatureLookup.input.ts b/libs/api/domains/signature-collection/src/lib/dto/signatureLookup.input.ts new file mode 100644 index 000000000000..9ae4d3ea52f1 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/dto/signatureLookup.input.ts @@ -0,0 +1,12 @@ +import { IsString } from 'class-validator' +import { Field, InputType } from '@nestjs/graphql' + +@InputType() +export class SignatureCollectionSignatureLookupInput { + @Field() + @IsString() + collectionId!: string + @Field() + @IsString() + nationalId!: string +} diff --git a/libs/api/domains/signature-collection/src/lib/dto/signatureUpdate.input.ts b/libs/api/domains/signature-collection/src/lib/dto/signatureUpdate.input.ts new file mode 100644 index 000000000000..540738fa59c2 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/dto/signatureUpdate.input.ts @@ -0,0 +1,10 @@ +import { IsNumber } from 'class-validator' +import { Field, InputType } from '@nestjs/graphql' +import { SignatureCollectionSignatureIdInput } from './signatureId.input' + +@InputType() +export class SignatureCollectionSignatureUpdateInput extends SignatureCollectionSignatureIdInput { + @Field() + @IsNumber() + pageNumber!: number +} diff --git a/libs/api/domains/signature-collection/src/lib/dto/uploadPaperSignature.input.ts b/libs/api/domains/signature-collection/src/lib/dto/uploadPaperSignature.input.ts new file mode 100644 index 000000000000..f69c102972b1 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/dto/uploadPaperSignature.input.ts @@ -0,0 +1,17 @@ +import { IsNumber, IsString } from 'class-validator' +import { Field, InputType } from '@nestjs/graphql' + +@InputType() +export class SignatureCollectionUploadPaperSignatureInput { + @Field() + @IsString() + listId!: string + + @Field() + @IsNumber() + pageNumber!: number + + @Field() + @IsString() + nationalId!: string +} diff --git a/libs/api/domains/signature-collection/src/lib/guards/constants.ts b/libs/api/domains/signature-collection/src/lib/guards/constants.ts new file mode 100644 index 000000000000..063d335ecd3d --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/guards/constants.ts @@ -0,0 +1,3 @@ +export const IS_OWNER_KEY = 'is-owner' +export const ALLOW_DELEGATION_KEY = 'allow-delegation' +export const RESTRICT_GUARANTOR_KEY = 'restrict-guarantor' diff --git a/libs/api/domains/signature-collection/src/lib/guards/userAccess.guard.spec.ts b/libs/api/domains/signature-collection/src/lib/guards/userAccess.guard.spec.ts new file mode 100644 index 000000000000..b8aa3fc7a80c --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/guards/userAccess.guard.spec.ts @@ -0,0 +1,489 @@ +import { Resolver, Query, GraphQLModule } from '@nestjs/graphql' +import { UserAccessGuard } from './userAccess.guard' +import { INestApplication, UseGuards } from '@nestjs/common' +import { + AllowDelegation, + IsOwner, + RestrictGuarantor, + AllowManager, +} from '../decorators' +import { Test } from '@nestjs/testing' +import { ApolloDriver } from '@nestjs/apollo' +import { ConfigModule } from '@nestjs/config' +jest.mock('@island.is/auth-nest-tools', () => { + const original = jest.requireActual('@island.is/auth-nest-tools') + return { + ...original, + getRequest: jest.fn(), + } +}) +import { + getRequest, + IdsUserGuard, + MockAuthGuard, + User, +} from '@island.is/auth-nest-tools' +import { createCurrentUser } from '@island.is/testing/fixtures' +import request from 'supertest' +import { + SignatureCollectionClientConfig, + SignatureCollectionClientModule, +} from '@island.is/clients/signature-collection' +import { SignatureCollectionService } from '../signatureCollection.service' +import { IdsClientConfig, XRoadConfig } from '@island.is/nest/config' +import { AuthDelegationType } from '@island.is/shared/types' + +const ownerNationalId = '0101303019' +const ownerCompanyId = '0000000000' +const someNationalId = '0101307789' +const someCompanyId = '0000000001' + +const basicUser = createCurrentUser({ + nationalIdType: 'person', + nationalId: someNationalId, +}) + +const authGuard = new MockAuthGuard(basicUser) +const delegatedUserNotToOwner = createCurrentUser({ + nationalIdType: 'person', + actor: { nationalId: someNationalId }, +}) + +const delegatedUserToOwner = createCurrentUser({ + nationalIdType: 'person', + actor: { nationalId: someNationalId }, + nationalId: ownerNationalId, +}) + +const userIsOwnerNotDelegated = createCurrentUser({ + nationalIdType: 'person', + nationalId: ownerNationalId, +}) + +const userHasProcurationAndIsOwner = createCurrentUser({ + nationalIdType: 'company', + actor: { nationalId: someNationalId }, + nationalId: ownerCompanyId, + delegationType: [AuthDelegationType.ProcurationHolder], +}) + +const userHasProcurationAndIsNotOwner = createCurrentUser({ + nationalIdType: 'company', + actor: { nationalId: someNationalId }, + nationalId: someCompanyId, + delegationType: [AuthDelegationType.ProcurationHolder], +}) + +const userDelegatedToCompanyButNotProcurationHolder = createCurrentUser({ + nationalIdType: 'company', + actor: { nationalId: someNationalId }, + nationalId: someCompanyId, + delegationType: [AuthDelegationType.Custom], +}) + +const okGraphQLResponse = (queryName: string) => ({ + data: { + [queryName]: true, + }, +}) + +const forbiddenGraphqlResponse = (queryName: string) => ({ + data: { + [queryName]: null, + }, + errors: [{ message: 'Forbidden resource' }], +}) + +@UseGuards(UserAccessGuard, IdsUserGuard) +@Resolver() +class TestResolver { + @Query(() => Boolean, { nullable: true }) + @IsOwner() + getIfOwner() { + return true + } + + @Query(() => Boolean, { nullable: true }) + @IsOwner() + @AllowDelegation() + getIfOwnerWithDelegationAllowed() { + return true + } + + @Query(() => Boolean, { nullable: true }) + @AllowDelegation() + getIfAllowedDelegation() { + return true + } + + @Query(() => Boolean, { nullable: true }) + getForAllNonDelegatedUsers() { + return true + } + + @Query(() => Boolean, { nullable: true }) + @RestrictGuarantor() + getIsRestrictedToGuarantors() { + return true + } + + @Query(() => Boolean, { nullable: true }) + @AllowManager() + getIsAllowedForManagers() { + return true + } + + @Query(() => Boolean, { nullable: true }) + @RestrictGuarantor() + @AllowManager() + getIsRestrictedToGuarantorsAndAllowedForManagers() { + return true + } + + @Query(() => Boolean, { nullable: true }) + @IsOwner() + @AllowManager() + getIfOwnerWithAllowManager() { + return true + } +} + +describe('UserAccessGuard', () => { + let app: INestApplication + let signatureCollectionService: SignatureCollectionService + const setupMockForUser = (user: User): void => { + jest.spyOn(authGuard, 'getAuth').mockReturnValue(user) + ;(getRequest as jest.Mock).mockReturnValue({ + user, + }) + } + + beforeAll(async () => { + const moduleRef = await Test.createTestingModule({ + providers: [TestResolver, SignatureCollectionService], + imports: [ + GraphQLModule.forRoot({ + autoSchemaFile: true, + driver: ApolloDriver, + path: '/graphql', + }), + ConfigModule.forRoot({ + isGlobal: true, + load: [SignatureCollectionClientConfig, IdsClientConfig, XRoadConfig], + }), + SignatureCollectionClientModule, + ], + }) + .overrideGuard(IdsUserGuard) + .useValue(authGuard) + .compile() + + app = moduleRef.createNestApplication() + signatureCollectionService = app.get<SignatureCollectionService>( + SignatureCollectionService, + ) + + await app.init() + }) + + beforeEach(() => { + jest + .spyOn(signatureCollectionService, 'signee') + .mockImplementation((user: User, _nationalId?: string) => { + return Promise.resolve({ + canCreate: true, + canSign: true, + isOwner: [ownerNationalId, ownerCompanyId].includes(user.nationalId), + name: 'Test', + nationalId: user.nationalId, + candidate: { + id: '1', + name: 'Test', + nationalId: user.nationalId, + }, + }) + }) + + jest + .spyOn(signatureCollectionService, 'isCollector') + .mockImplementation(() => { + return Promise.resolve(true) + }) + }) + + afterEach(() => { + jest.clearAllMocks() + jest.restoreAllMocks() + }) + + const gqlQuery = (query: string) => + request(app.getHttpServer()).get('/graphql').query({ + query, + }) + + it('Should allow owner to access IsOwner decorated paths', async () => { + setupMockForUser(userIsOwnerNotDelegated) + + const response = await gqlQuery('{ getIfOwner }') + + expect(response.body).toMatchObject(okGraphQLResponse('getIfOwner')) + }) + + it('Should not allow user delegated to owner to access IsOwner decorated paths without AllowDelegation', async () => { + setupMockForUser(delegatedUserToOwner) + + const response = await gqlQuery('{ getIfOwner }') + + expect(response.body).toMatchObject(forbiddenGraphqlResponse('getIfOwner')) + }) + + it('Should not allow basic users to access IsOwner when not owner', async () => { + setupMockForUser(basicUser) + + const response = await gqlQuery('{ getIfOwner }') + + expect(response.body).toMatchObject(forbiddenGraphqlResponse('getIfOwner')) + }) + + it('Where AllowDelegation and IsOwner: Should allow user delegated to owner', async () => { + setupMockForUser(delegatedUserToOwner) + + const response = await gqlQuery('{ getIfOwnerWithDelegationAllowed }') + + expect(response.body).toMatchObject( + okGraphQLResponse('getIfOwnerWithDelegationAllowed'), + ) + }) + + it('Where AllowDelegation and IsOwner: Should not allow user delegated to non-owner', async () => { + setupMockForUser(delegatedUserNotToOwner) + + const response = await gqlQuery('{ getIfOwnerWithDelegationAllowed }') + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse('getIfOwnerWithDelegationAllowed'), + ) + }) + + it('With no decorators present: Should restrict delegation to owner', async () => { + setupMockForUser(delegatedUserToOwner) + + const response = await gqlQuery('{ getForAllNonDelegatedUsers }') + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse('getForAllNonDelegatedUsers'), + ) + }) + + it('With no decorators present: Should restrict delegation to non-owner', async () => { + setupMockForUser(delegatedUserNotToOwner) + + const response = await gqlQuery('{ getForAllNonDelegatedUsers }') + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse('getForAllNonDelegatedUsers'), + ) + }) + + it('With no decorators present: Should allow basic users', async () => { + setupMockForUser(basicUser) + + const response = await gqlQuery('{ getForAllNonDelegatedUsers }') + + expect(response.body).toMatchObject( + okGraphQLResponse('getForAllNonDelegatedUsers'), + ) + }) + + it('When IsOwner not present: Should allow delegation with AllowDelegation for owner delegations', async () => { + setupMockForUser(delegatedUserToOwner) + + const response = await gqlQuery('{ getIfAllowedDelegation }') + + expect(response.body).toMatchObject( + okGraphQLResponse('getIfAllowedDelegation'), + ) + }) + + it('When IsOwner not present: Should allow delegation with AllowDelegation for non-owner delegations', async () => { + setupMockForUser(delegatedUserNotToOwner) + + const response = await gqlQuery('{ getIfAllowedDelegation }') + + expect(response.body).toMatchObject( + okGraphQLResponse('getIfAllowedDelegation'), + ) + }) + it('With only AllowDelegation: Should not restrict basic users', async () => { + setupMockForUser(basicUser) + + const response = await gqlQuery('{ getIfAllowedDelegation }') + + expect(response.body).toMatchObject( + okGraphQLResponse('getIfAllowedDelegation'), + ) + }) + + it('With only IsOwner: Should not restrict delegation of a procuration type even with no AllowDelegation when delegated to owner', async () => { + setupMockForUser(userHasProcurationAndIsOwner) + + const response = await gqlQuery('{ getIfOwner }') + + expect(response.body).toMatchObject(okGraphQLResponse('getIfOwner')) + }) + + it('With only IsOwner: Should restrict delegation of a procuration type even with no AllowDelegation when delegated to non-owner', async () => { + setupMockForUser(userHasProcurationAndIsNotOwner) + + const response = await gqlQuery('{ getIfOwner }') + + expect(response.body).toMatchObject(forbiddenGraphqlResponse('getIfOwner')) + }) + + it('With RestrictGuarantor: Should restrict access to guarantors', async () => { + setupMockForUser(userIsOwnerNotDelegated) + + let response = await gqlQuery('{ getIsRestrictedToGuarantors }') + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse('getIsRestrictedToGuarantors'), + ) + + setupMockForUser(userHasProcurationAndIsOwner) + + response = await gqlQuery('{ getIsRestrictedToGuarantors }') + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse('getIsRestrictedToGuarantors'), + ) + + setupMockForUser(userHasProcurationAndIsNotOwner) + + response = await gqlQuery('{ getIsRestrictedToGuarantors }') + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse('getIsRestrictedToGuarantors'), + ) + }) + + it('With RestrictGuarantor and AllowManager: Should allow access to managers', async () => { + setupMockForUser(userIsOwnerNotDelegated) + + // DISALLOW ALL GUARANTORS + let response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse( + 'getIsRestrictedToGuarantorsAndAllowedForManagers', + ), + ) + + setupMockForUser(userHasProcurationAndIsOwner) + + response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse( + 'getIsRestrictedToGuarantorsAndAllowedForManagers', + ), + ) + + setupMockForUser(userHasProcurationAndIsNotOwner) + + response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse( + 'getIsRestrictedToGuarantorsAndAllowedForManagers', + ), + ) + + // ALLOW ALL MANAGERS + setupMockForUser(delegatedUserNotToOwner) + + response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + okGraphQLResponse('getIsRestrictedToGuarantorsAndAllowedForManagers'), + ) + + setupMockForUser(delegatedUserToOwner) + + response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + okGraphQLResponse('getIsRestrictedToGuarantorsAndAllowedForManagers'), + ) + + setupMockForUser(userDelegatedToCompanyButNotProcurationHolder) + + response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + okGraphQLResponse('getIsRestrictedToGuarantorsAndAllowedForManagers'), + ) + }) + + it('With AllowManager: Should allow access to managers', async () => { + // ALLOW ALL MANAGERS + setupMockForUser(delegatedUserNotToOwner) + + let response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + okGraphQLResponse('getIsRestrictedToGuarantorsAndAllowedForManagers'), + ) + + setupMockForUser(delegatedUserToOwner) + + response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + okGraphQLResponse('getIsRestrictedToGuarantorsAndAllowedForManagers'), + ) + + setupMockForUser(userDelegatedToCompanyButNotProcurationHolder) + + response = await gqlQuery( + '{ getIsRestrictedToGuarantorsAndAllowedForManagers }', + ) + + expect(response.body).toMatchObject( + okGraphQLResponse('getIsRestrictedToGuarantorsAndAllowedForManagers'), + ) + }) + + it('Allow manager does not override the IsOwner decorator', async () => { + setupMockForUser(delegatedUserToOwner) + + let response = await gqlQuery('{ getIfOwnerWithAllowManager }') + + expect(response.body).toMatchObject( + okGraphQLResponse('getIfOwnerWithAllowManager'), + ) + + setupMockForUser(delegatedUserNotToOwner) + + response = await gqlQuery('{ getIfOwnerWithAllowManager }') + + expect(response.body).toMatchObject( + forbiddenGraphqlResponse('getIfOwnerWithAllowManager'), + ) + }) +}) diff --git a/libs/api/domains/signature-collection/src/lib/guards/userAccess.guard.ts b/libs/api/domains/signature-collection/src/lib/guards/userAccess.guard.ts index 9f90138ae2cb..3f485e4a9528 100644 --- a/libs/api/domains/signature-collection/src/lib/guards/userAccess.guard.ts +++ b/libs/api/domains/signature-collection/src/lib/guards/userAccess.guard.ts @@ -1,11 +1,22 @@ import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common' import { Reflector } from '@nestjs/core' -import { BYPASS_AUTH_KEY, getRequest } from '@island.is/auth-nest-tools' -import { - OwnerAccess, - UserAccess, -} from '../decorators/acessRequirement.decorator' +import { BYPASS_AUTH_KEY, getRequest, User } from '@island.is/auth-nest-tools' import { SignatureCollectionService } from '../signatureCollection.service' +import { MetadataAbstractor } from '../utils' +import { AuthDelegationType } from '@island.is/shared/types' +import { isPerson } from 'kennitala' +import { + ALLOW_DELEGATION_KEY, + IS_OWNER_KEY, + RESTRICT_GUARANTOR_KEY, +} from './constants' + +enum UserDelegationContext { + Person = 'Person', + PersonDelegatedToPerson = 'PersonDelegatedToPerson', + PersonDelegatedToCompany = 'PersonDelegatedToCompany', + ProcurationHolder = 'ProcurationHolder', +} @Injectable() export class UserAccessGuard implements CanActivate { @@ -13,53 +24,82 @@ export class UserAccessGuard implements CanActivate { private reflector: Reflector, private readonly signatureCollectionService: SignatureCollectionService, ) {} + + private determineUserDelegationContext( + user: Express.User & User, + ): UserDelegationContext { + // If actor found on user, then user is delegated + if (user.actor?.nationalId) { + // If delegation is from person to person + if (isPerson(user.nationalId)) { + return UserDelegationContext.PersonDelegatedToPerson + } else { + // Determine whether it's a procuration vs delegation to a company + const hasProcuration = user.delegationType?.some( + (delegation) => delegation === AuthDelegationType.ProcurationHolder, + ) + + return hasProcuration + ? UserDelegationContext.ProcurationHolder + : UserDelegationContext.PersonDelegatedToCompany + } + } + + return UserDelegationContext.Person + } + async canActivate(context: ExecutionContext): Promise<boolean> { - const bypassAuth = this.reflector.getAllAndOverride<boolean>( - BYPASS_AUTH_KEY, - [context.getHandler(), context.getClass()], + const m = new MetadataAbstractor(this.reflector, context) + const isOwnerRestriction = m.getMetadataIfExists<boolean>(IS_OWNER_KEY) + const bypassAuth = m.getMetadataIfExists<boolean>(BYPASS_AUTH_KEY) + const allowDelegation = m.getMetadataIfExists<boolean>(ALLOW_DELEGATION_KEY) + const restrictGuarantors = m.getMetadataIfExists<boolean>( + RESTRICT_GUARANTOR_KEY, ) - // if the bypass auth exists and is truthy we bypass auth if (bypassAuth) { return true } - const ownerRestriction = this.reflector.get<OwnerAccess | UserAccess>( - 'owner-access', - context.getHandler(), - ) - const request = getRequest(context) + const request = getRequest(context) const user = request.user if (!user) { return false } - const isDelegatedUser = !!user?.actor?.nationalId + const delegationContext = this.determineUserDelegationContext(user) + const isDelegatedUser = [ + UserDelegationContext.PersonDelegatedToCompany, + UserDelegationContext.PersonDelegatedToPerson, + ].includes(delegationContext) + + if (isDelegatedUser && !allowDelegation) { + return false + } + + if (restrictGuarantors && !isDelegatedUser) { + return false + } + // IsOwner needs signee const signee = await this.signatureCollectionService.signee(user) request.body = { ...request.body, signee } - // IsOwner decorator not used - if (!ownerRestriction) { - return true - } - if (ownerRestriction === UserAccess.RestrictActor) { - return isDelegatedUser ? false : true - } const { candidate } = signee - if (signee.isOwner && candidate) { - // Check if user is an actor for owner and if so check if registered collector, if not actor will be added as collector - if (isDelegatedUser && ownerRestriction === OwnerAccess.AllowActor) { - const isCollector = await this.signatureCollectionService.isCollector( - candidate.id, - user, - ) - return isCollector + if (isOwnerRestriction) { + if (signee.isOwner && candidate) { + // Check if user is an actor for owner and if so check if registered collector, if not actor will be added as collector + if (isDelegatedUser && allowDelegation) { + const isCollector = await this.signatureCollectionService.isCollector( + candidate.id, + user, + ) + return isCollector + } } - return true + return signee.isOwner } - // if the user is not owner we return false - return false + return true } } diff --git a/libs/api/domains/signature-collection/src/lib/models/areaSummaryReport.model.ts b/libs/api/domains/signature-collection/src/lib/models/areaSummaryReport.model.ts new file mode 100644 index 000000000000..fa99c24eaf75 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/models/areaSummaryReport.model.ts @@ -0,0 +1,29 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { SignatureCollectionArea } from './area.model' + +@ObjectType() +export class SignatureCollectionAreaSummaryReport extends SignatureCollectionArea { + @Field(() => [SignatureCollectionListSummary]) + lists!: SignatureCollectionListSummary[] +} + +@ObjectType() +export class SignatureCollectionListSummary { + @Field(() => String) + candidateName!: string + + @Field(() => String) + listName!: string + + @Field(() => String) + partyBallotLetter!: string + + @Field(() => Number) + nrOfSignatures!: number + + @Field(() => Number) + nrOfDigitalSignatures!: number + + @Field(() => Number) + nrOfPaperSignatures!: number +} diff --git a/libs/api/domains/signature-collection/src/lib/models/canSignInfo.model.ts b/libs/api/domains/signature-collection/src/lib/models/canSignInfo.model.ts new file mode 100644 index 000000000000..8e1f2dcd2265 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/models/canSignInfo.model.ts @@ -0,0 +1,12 @@ +import { ReasonKey } from '@island.is/clients/signature-collection' +import { Field, ObjectType, registerEnumType } from '@nestjs/graphql' + +registerEnumType(ReasonKey, { name: 'ReasonKey' }) +@ObjectType() +export class CanSignInfo { + @Field(() => [ReasonKey]) + reasons?: ReasonKey[] + + @Field(() => Boolean) + success!: boolean +} diff --git a/libs/api/domains/signature-collection/src/lib/models/candidate.model.ts b/libs/api/domains/signature-collection/src/lib/models/candidate.model.ts index 6ca1b2d406c1..90ba624c6123 100644 --- a/libs/api/domains/signature-collection/src/lib/models/candidate.model.ts +++ b/libs/api/domains/signature-collection/src/lib/models/candidate.model.ts @@ -19,4 +19,7 @@ export class SignatureCollectionCandidate { @Field({ nullable: true }) collectionId?: string + + @Field({ nullable: true }) + partyBallotLetter?: string } diff --git a/libs/api/domains/signature-collection/src/lib/models/index.ts b/libs/api/domains/signature-collection/src/lib/models/index.ts new file mode 100644 index 000000000000..73e6f2d9ab85 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/models/index.ts @@ -0,0 +1,59 @@ +import { + SignatureCollectionArea, + SignatureCollectionAreaBase, +} from './area.model' +import { + SignatureCollectionBulk, + SignatureCollectionNationalIds, +} from './bulk.model' +import { CanSignInfo } from './canSignInfo.model' +import { SignatureCollectionCandidate } from './candidate.model' +import { SignatureCollection } from './collection.model' +import { SignatureCollectionCollector } from './collector.model' +import { SignatureCollectionNationalIdError } from './nationalIdError.model' +import { SignatureCollectionSignature } from './signature.model' +import { + SignatureCollectionList, + SignatureCollectionListBase, + SignatureCollectionOwnedList, + SignatureCollectionSignedList, +} from './signatureList.model' +import { + SignatureCollectionCandidateLookUp, + SignatureCollectionSignee, + SignatureCollectionSigneeBase, +} from './signee.model' +import { SignatureCollectionSlug } from './slug.model' +import { + CollectionStatus, + ListStatus, + SignatureCollectionListStatus, + SignatureCollectionStatus, +} from './status.model' +import { SignatureCollectionSuccess } from './success.model' + +export { + SignatureCollectionArea, + SignatureCollectionAreaBase, + SignatureCollectionBulk, + SignatureCollectionNationalIds, + CanSignInfo, + SignatureCollectionCandidate, + SignatureCollection, + SignatureCollectionCollector, + SignatureCollectionNationalIdError, + SignatureCollectionSignature, + SignatureCollectionList, + SignatureCollectionListBase, + SignatureCollectionOwnedList, + SignatureCollectionSignedList, + SignatureCollectionCandidateLookUp, + SignatureCollectionSignee, + SignatureCollectionSigneeBase, + SignatureCollectionSlug, + CollectionStatus, + ListStatus, + SignatureCollectionListStatus, + SignatureCollectionStatus, + SignatureCollectionSuccess, +} diff --git a/libs/api/domains/signature-collection/src/lib/signatureCollection.resolver.ts b/libs/api/domains/signature-collection/src/lib/signatureCollection.resolver.ts index c42a6dca9688..340f5c6170a9 100644 --- a/libs/api/domains/signature-collection/src/lib/signatureCollection.resolver.ts +++ b/libs/api/domains/signature-collection/src/lib/signatureCollection.resolver.ts @@ -10,26 +10,29 @@ import { Scopes, } from '@island.is/auth-nest-tools' import { UseGuards } from '@nestjs/common' -import { SignatureCollection } from './models/collection.model' +import { Audit } from '@island.is/nest/audit' +import { UserAccessGuard } from './guards/userAccess.guard' +import { ApiScope } from '@island.is/auth/scopes' import { + SignatureCollectionAddListsInput, + SignatureCollectionCancelListsInput, + SignatureCollectionCanSignFromPaperInput, + SignatureCollectionIdInput, + SignatureCollectionListIdInput, + SignatureCollectionUploadPaperSignatureInput, +} from './dto' +import { AllowManager, CurrentSignee, IsOwner } from './decorators' +import { + SignatureCollection, + SignatureCollectionCollector, SignatureCollectionList, SignatureCollectionListBase, + SignatureCollectionSignature, SignatureCollectionSignedList, -} from './models/signatureList.model' -import { SignatureCollectionListIdInput } from './dto/listId.input' -import { SignatureCollectionSignature } from './models/signature.model' -import { SignatureCollectionSignee } from './models/signee.model' -import { Audit } from '@island.is/nest/audit' -import { UserAccessGuard } from './guards/userAccess.guard' -import { - AccessRequirement, - OwnerAccess, - UserAccess, -} from './decorators/acessRequirement.decorator' -import { CurrentSignee } from './decorators/signee.decorator' -import { ApiScope } from '@island.is/auth/scopes' -import { SignatureCollectionCancelListsInput } from './dto/cencelLists.input' -import { SignatureCollectionIdInput } from './dto/collectionId.input' + SignatureCollectionSignee, +} from './models' +import { SignatureCollectionListSummary } from './models/areaSummaryReport.model' + @UseGuards(IdsUserGuard, ScopesGuard, UserAccessGuard) @Resolver() @Audit({ namespace: '@island.is/api/signature-collection' }) @@ -38,6 +41,7 @@ export class SignatureCollectionResolver { @Scopes(ApiScope.signatureCollection) @Query(() => SignatureCollectionSuccess) + @AllowManager() @Audit() async signatureCollectionIsOwner( @CurrentSignee() signee: SignatureCollectionSignee, @@ -60,7 +64,8 @@ export class SignatureCollectionResolver { } @Scopes(ApiScope.signatureCollection) - @AccessRequirement(OwnerAccess.AllowActor) + @AllowManager() + @IsOwner() @Query(() => [SignatureCollectionList]) @Audit() async signatureCollectionListsForOwner( @@ -72,7 +77,6 @@ export class SignatureCollectionResolver { } @Scopes(ApiScope.signatureCollection) - @AccessRequirement(UserAccess.RestrictActor) @Query(() => [SignatureCollectionListBase]) @Audit() async signatureCollectionListsForUser( @@ -84,18 +88,19 @@ export class SignatureCollectionResolver { } @Scopes(ApiScope.signatureCollection) - @AccessRequirement(OwnerAccess.AllowActor) + @IsOwner() + @AllowManager() @Query(() => SignatureCollectionList) @Audit() async signatureCollectionList( @CurrentUser() user: User, + @CurrentSignee() signee: SignatureCollectionSignee, @Args('input') input: SignatureCollectionListIdInput, ): Promise<SignatureCollectionList> { - return this.signatureCollectionService.list(input.listId, user) + return this.signatureCollectionService.list(input.listId, user, signee) } @Scopes(ApiScope.signatureCollection) - @AccessRequirement(UserAccess.RestrictActor) @Query(() => [SignatureCollectionSignedList], { nullable: true }) @Audit() async signatureCollectionSignedList( @@ -105,7 +110,8 @@ export class SignatureCollectionResolver { } @Scopes(ApiScope.signatureCollection) - @AccessRequirement(OwnerAccess.AllowActor) + @IsOwner() + @AllowManager() @Query(() => [SignatureCollectionSignature], { nullable: true }) @Audit() async signatureCollectionSignatures( @@ -117,7 +123,6 @@ export class SignatureCollectionResolver { @Scopes(ApiScope.signatureCollection) @Query(() => SignatureCollectionSignee) - @AccessRequirement(UserAccess.RestrictActor) @Audit() async signatureCollectionSignee( @CurrentSignee() signee: SignatureCollectionSignee, @@ -126,7 +131,23 @@ export class SignatureCollectionResolver { } @Scopes(ApiScope.signatureCollection) - @AccessRequirement(UserAccess.RestrictActor) + @Query(() => Boolean) + @IsOwner() + @AllowManager() + @Audit() + async signatureCollectionCanSignFromPaper( + @Args('input') input: SignatureCollectionCanSignFromPaperInput, + @CurrentUser() user: User, + @CurrentSignee() signee: SignatureCollectionSignee, + ): Promise<boolean> { + return await this.signatureCollectionService.canSignFromPaper( + user, + input, + signee, + ) + } + + @Scopes(ApiScope.signatureCollection) @Mutation(() => SignatureCollectionSuccess) @Audit() async signatureCollectionUnsign( @@ -137,7 +158,7 @@ export class SignatureCollectionResolver { } @Scopes(ApiScope.signatureCollection) - @AccessRequirement(OwnerAccess.RestrictActor) + @IsOwner() @Mutation(() => SignatureCollectionSuccess) @Audit() async signatureCollectionCancel( @@ -146,4 +167,57 @@ export class SignatureCollectionResolver { ): Promise<SignatureCollectionSuccess> { return this.signatureCollectionService.cancel(input, user) } + + @Scopes(ApiScope.signatureCollection) + @IsOwner() + @Mutation(() => SignatureCollectionSuccess) + @Audit() + async signatureCollectionAddAreas( + @CurrentUser() user: User, + @Args('input') input: SignatureCollectionAddListsInput, + ): Promise<SignatureCollectionSuccess> { + return this.signatureCollectionService.add(input, user) + } + + @Scopes(ApiScope.signatureCollection) + @IsOwner() + @AllowManager() + @Mutation(() => SignatureCollectionSuccess) + @Audit() + async signatureCollectionUploadPaperSignature( + @CurrentUser() user: User, + @Args('input') input: SignatureCollectionUploadPaperSignatureInput, + ): Promise<SignatureCollectionSuccess> { + return this.signatureCollectionService.candidacyUploadPaperSignature( + input, + user, + ) + } + + @Scopes(ApiScope.signatureCollection) + @IsOwner() + @AllowManager() + @Query(() => [SignatureCollectionCollector]) + @Audit() + async signatureCollectionCollectors( + @CurrentUser() user: User, + @CurrentSignee() signee: SignatureCollectionSignee, + ): Promise<SignatureCollectionCollector[]> { + return this.signatureCollectionService.collectors( + user, + signee.candidate?.id, + ) + } + + @Scopes(ApiScope.signatureCollection) + @IsOwner() + @AllowManager() + @Query(() => SignatureCollectionListSummary) + @Audit() + async signatureCollectionListOverview( + @CurrentUser() user: User, + @Args('input') input: SignatureCollectionListIdInput, + ): Promise<SignatureCollectionListSummary> { + return this.signatureCollectionService.listOverview(user, input.listId) + } } diff --git a/libs/api/domains/signature-collection/src/lib/signatureCollection.service.ts b/libs/api/domains/signature-collection/src/lib/signatureCollection.service.ts index 69235ab49c01..7bafbcbc7207 100644 --- a/libs/api/domains/signature-collection/src/lib/signatureCollection.service.ts +++ b/libs/api/domains/signature-collection/src/lib/signatureCollection.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@nestjs/common' +import { Injectable, NotFoundException } from '@nestjs/common' import { SignatureCollectionSuccess } from './models/success.model' import { SignatureCollection } from './models/collection.model' import { @@ -14,6 +14,11 @@ import { import { User } from '@island.is/auth-nest-tools' import { SignatureCollectionCancelListsInput } from './dto/cencelLists.input' import { SignatureCollectionIdInput } from './dto/collectionId.input' +import { SignatureCollectionAddListsInput } from './dto/addLists.input' +import { SignatureCollectionUploadPaperSignatureInput } from './dto/uploadPaperSignature.input' +import { SignatureCollectionCanSignFromPaperInput } from './dto/canSignFromPaper.input' +import { SignatureCollectionCollector } from './models/collector.model' +import { SignatureCollectionListSummary } from './models/areaSummaryReport.model' @Injectable() export class SignatureCollectionService { @@ -21,6 +26,12 @@ export class SignatureCollectionService { private signatureCollectionClientService: SignatureCollectionClientService, ) {} + private checkListAccess(listId: string, signee: SignatureCollectionSignee) { + if (!signee.ownedLists?.some((list) => list.id === listId)) { + throw new NotFoundException('List not found') + } + } + async currentCollection(): Promise<SignatureCollection> { return await this.signatureCollectionClientService.currentCollection() } @@ -75,7 +86,12 @@ export class SignatureCollectionService { ) } - async list(listId: string, user: User): Promise<SignatureCollectionList> { + async list( + listId: string, + user: User, + signee: SignatureCollectionSignee, + ): Promise<SignatureCollectionList> { + this.checkListAccess(listId, signee) return await this.signatureCollectionClientService.getList(listId, user) } @@ -118,4 +134,68 @@ export class SignatureCollectionService { ): Promise<SignatureCollectionSuccess> { return await this.signatureCollectionClientService.removeLists(input, user) } + + async add( + input: SignatureCollectionAddListsInput, + user: User, + ): Promise<SignatureCollectionSuccess> { + return await this.signatureCollectionClientService.createParliamentaryLists( + { ...input, areas: input.areaIds?.map((area) => ({ areaId: area })) }, + user, + ) + } + + async candidacyUploadPaperSignature( + input: SignatureCollectionUploadPaperSignatureInput, + user: User, + ): Promise<SignatureCollectionSuccess> { + return await this.signatureCollectionClientService.candidacyUploadPaperSignature( + user, + input, + ) + } + + async canSignFromPaper( + user: User, + input: SignatureCollectionCanSignFromPaperInput, + signee: SignatureCollectionSignee, + ): Promise<boolean> { + const signatureSignee = + await this.signatureCollectionClientService.getSignee( + user, + input.signeeNationalId, + ) + const list = await this.list(input.listId, user, signee) + // Current signatures should not prevent paper signatures + const canSign = + signatureSignee.canSign || + (signatureSignee.canSignInfo?.length === 1 && + (signatureSignee.canSignInfo[0] === ReasonKey.AlreadySigned || + signatureSignee.canSignInfo[0] === ReasonKey.noInvalidSignature)) + + return canSign && list.area.id === signatureSignee.area?.id + } + + async collectors( + user: User, + candidateId: string | undefined, + ): Promise<SignatureCollectionCollector[]> { + if (!candidateId) { + return [] + } + return await this.signatureCollectionClientService.getCollectors( + user, + candidateId, + ) + } + + async listOverview( + user: User, + listId: string, + ): Promise<SignatureCollectionListSummary> { + return await this.signatureCollectionClientService.getListOverview( + user, + listId, + ) + } } diff --git a/libs/api/domains/signature-collection/src/lib/signatureCollectionAdmin.resolver.ts b/libs/api/domains/signature-collection/src/lib/signatureCollectionAdmin.resolver.ts index 3e2a0b6029e4..f2b03a067111 100644 --- a/libs/api/domains/signature-collection/src/lib/signatureCollectionAdmin.resolver.ts +++ b/libs/api/domains/signature-collection/src/lib/signatureCollectionAdmin.resolver.ts @@ -31,6 +31,11 @@ import { SignatureCollectionNationalIdInput } from './dto/nationalId.input' import { SignatureCollectionSignatureIdInput } from './dto/signatureId.input' import { SignatureCollectionIdInput } from './dto/collectionId.input' import { SignatureCollectionCandidateIdInput } from './dto/candidateId.input' +import { SignatureCollectionCanSignFromPaperInput } from './dto/canSignFromPaper.input' +import { SignatureCollectionSignatureUpdateInput } from './dto/signatureUpdate.input' +import { SignatureCollectionSignatureLookupInput } from './dto/signatureLookup.input' +import { SignatureCollectionAreaSummaryReportInput } from './dto/areaSummaryReport.input' +import { SignatureCollectionAreaSummaryReport } from './models/areaSummaryReport.model' @UseGuards(IdsUserGuard, ScopesGuard) @Scopes(AdminPortalScope.signatureCollectionProcess) @@ -42,6 +47,19 @@ export class SignatureCollectionAdminResolver { private signatureCollectionManagerService: SignatureCollectionManagerService, ) {} + @Query(() => SignatureCollectionSuccess) + async signatureCollectionAdminCanSignInfo( + @CurrentUser() + user: User, + @Args('input') input: SignatureCollectionCanSignFromPaperInput, + ): Promise<SignatureCollectionSuccess> { + return this.signatureCollectionService.getCanSignInfo( + user, + input.signeeNationalId, + input.listId, + ) + } + @Query(() => SignatureCollection) @Scopes( AdminPortalScope.signatureCollectionManage, @@ -170,6 +188,15 @@ export class SignatureCollectionAdminResolver { return this.signatureCollectionService.removeCandidate(candidateId, user) } + @Mutation(() => SignatureCollectionSuccess) + @Audit() + async signatureCollectionAdminRemoveList( + @CurrentUser() user: User, + @Args('input') { listId }: SignatureCollectionListIdInput, + ): Promise<SignatureCollectionSuccess> { + return this.signatureCollectionService.removeList(listId, user) + } + @Mutation(() => SignatureCollectionSuccess) @Audit() async signatureCollectionAdminUnsign( @@ -217,4 +244,47 @@ export class SignatureCollectionAdminResolver { ): Promise<SignatureCollectionSignature[]> { return this.signatureCollectionService.compareLists(input, user) } + + @Mutation(() => SignatureCollectionSuccess) + @Audit() + async signatureCollectionAdminUpdatePaperSignaturePageNumber( + @CurrentUser() user: User, + @Args('input') input: SignatureCollectionSignatureUpdateInput, + ): Promise<SignatureCollectionSuccess> { + return this.signatureCollectionService.updateSignaturePageNumber( + user, + input, + ) + } + + @Query(() => [SignatureCollectionSignature]) + @Scopes( + AdminPortalScope.signatureCollectionManage, + AdminPortalScope.signatureCollectionProcess, + ) + @Audit() + async signatureCollectionSignatureLookup( + @CurrentUser() user: User, + @Args('input') input: SignatureCollectionSignatureLookupInput, + ): Promise<SignatureCollectionSignature[]> { + return this.signatureCollectionService.signatureLookup(user, input) + } + + @Query(() => SignatureCollectionAreaSummaryReport) + @Audit() + async signatureCollectionAreaSummaryReport( + @CurrentUser() user: User, + @Args('input') input: SignatureCollectionAreaSummaryReportInput, + ): Promise<SignatureCollectionAreaSummaryReport> { + return this.signatureCollectionService.getAreaSummaryReport(input, user) + } + + @Mutation(() => SignatureCollectionSuccess) + @Audit() + async signatureCollectionLockList( + @CurrentUser() user: User, + @Args('input') input: SignatureCollectionListIdInput, + ): Promise<SignatureCollectionSuccess> { + return this.signatureCollectionService.lockList(input, user) + } } diff --git a/libs/api/domains/signature-collection/src/lib/signatureCollectionAdmin.service.ts b/libs/api/domains/signature-collection/src/lib/signatureCollectionAdmin.service.ts index fa5b2f008d7a..784e81b42f46 100644 --- a/libs/api/domains/signature-collection/src/lib/signatureCollectionAdmin.service.ts +++ b/libs/api/domains/signature-collection/src/lib/signatureCollectionAdmin.service.ts @@ -10,18 +10,28 @@ import { import { SignatureCollectionBulk } from './models/bulk.model' import { SignatureCollectionCandidateLookUp } from './models/signee.model' import { SignatureCollectionListInput } from './dto/singatureList.input' -import { SignatureCollectionAdminClientService } from '@island.is/clients/signature-collection' +import { + ReasonKey, + SignatureCollectionAdminClientService, + SignatureCollectionClientService, +} from '@island.is/clients/signature-collection' import { SignatureCollectionExtendDeadlineInput } from './dto/extendDeadline.input' import { User } from '@island.is/auth-nest-tools' import { SignatureCollectionListBulkUploadInput } from './dto/bulkUpload.input' import { SignatureCollectionSlug } from './models/slug.model' import { SignatureCollectionListStatus } from './models/status.model' import { SignatureCollectionIdInput } from './dto/collectionId.input' +import { SignatureCollectionSignatureUpdateInput } from './dto/signatureUpdate.input' +import { SignatureCollectionSignatureLookupInput } from './dto/signatureLookup.input' +import { SignatureCollectionAreaSummaryReportInput } from './dto/areaSummaryReport.input' +import { SignatureCollectionAreaSummaryReport } from './models/areaSummaryReport.model' +import { SignatureCollectionListIdInput } from './dto' @Injectable() export class SignatureCollectionAdminService { constructor( private signatureCollectionClientService: SignatureCollectionAdminClientService, + private signatureCollectionBasicService: SignatureCollectionClientService, ) {} async currentCollection(user: User): Promise<SignatureCollection> { @@ -39,6 +49,27 @@ export class SignatureCollectionAdminService { return await this.signatureCollectionClientService.getList(listId, user) } + async getCanSignInfo( + auth: User, + nationalId: string, + listId: string, + ): Promise<SignatureCollectionSuccess> { + const signatureSignee = + await this.signatureCollectionBasicService.getSignee(auth, nationalId) + const list = await this.list(listId, auth) + // Current signatures should not prevent paper signatures + const canSign = + signatureSignee.canSign || + (signatureSignee.canSignInfo?.length === 1 && + (signatureSignee.canSignInfo[0] === ReasonKey.AlreadySigned || + signatureSignee.canSignInfo[0] === ReasonKey.noInvalidSignature)) + + return { + success: canSign && list.area.id === signatureSignee.area?.id, + reasons: canSign ? [] : signatureSignee.canSignInfo, + } + } + async signatures( listId: string, user: User, @@ -162,4 +193,54 @@ export class SignatureCollectionAdminService { user, ) } + + async removeList( + listId: string, + user: User, + ): Promise<SignatureCollectionSuccess> { + return await this.signatureCollectionClientService.removeList(listId, user) + } + + async updateSignaturePageNumber( + user: User, + input: SignatureCollectionSignatureUpdateInput, + ): Promise<SignatureCollectionSuccess> { + return await this.signatureCollectionClientService.updateSignaturePageNumber( + user, + input.signatureId, + input.pageNumber, + ) + } + + async signatureLookup( + user: User, + input: SignatureCollectionSignatureLookupInput, + ): Promise<SignatureCollectionSignature[]> { + return await this.signatureCollectionClientService.signatureLookup( + user, + input.collectionId, + input.nationalId, + ) + } + + async getAreaSummaryReport( + input: SignatureCollectionAreaSummaryReportInput, + user: User, + ): Promise<SignatureCollectionAreaSummaryReport> { + return await this.signatureCollectionClientService.getAreaSummaryReport( + user, + input.collectionId, + input.areaId, + ) + } + + async lockList( + input: SignatureCollectionListIdInput, + user: User, + ): Promise<SignatureCollectionSuccess> { + return await this.signatureCollectionClientService.lockList( + user, + input.listId, + ) + } } diff --git a/libs/api/domains/signature-collection/src/lib/utils/MetadataAbstractor.ts b/libs/api/domains/signature-collection/src/lib/utils/MetadataAbstractor.ts new file mode 100644 index 000000000000..92cdcf5089c0 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/utils/MetadataAbstractor.ts @@ -0,0 +1,17 @@ +import { ExecutionContext } from '@nestjs/common' +import { Reflector } from '@nestjs/core' + +export class MetadataAbstractor { + constructor( + private readonly reflector: Reflector, + private readonly context: ExecutionContext, + ) {} + + public getMetadataIfExists = <T>(key: string): T | null => { + const reflectorData = this.reflector.getAllAndOverride<T>(key, [ + this.context.getHandler(), + this.context.getClass(), + ]) + return reflectorData ?? null + } +} diff --git a/libs/api/domains/signature-collection/src/lib/utils/index.ts b/libs/api/domains/signature-collection/src/lib/utils/index.ts new file mode 100644 index 000000000000..af1e408a8ab7 --- /dev/null +++ b/libs/api/domains/signature-collection/src/lib/utils/index.ts @@ -0,0 +1,2 @@ +import { MetadataAbstractor } from './MetadataAbstractor' +export { MetadataAbstractor } diff --git a/libs/api/domains/signature-collection/tsconfig.spec.json b/libs/api/domains/signature-collection/tsconfig.spec.json index 6668655fc397..f59491cc62a7 100644 --- a/libs/api/domains/signature-collection/tsconfig.spec.json +++ b/libs/api/domains/signature-collection/tsconfig.spec.json @@ -3,7 +3,10 @@ "compilerOptions": { "outDir": "../../../../dist/out-tsc", "module": "commonjs", - "types": ["jest", "node"] + "types": ["jest", "node"], + "noPropertyAccessFromIndexSignature": false, + "noImplicitOverride": false, + "noImplicitReturns": false }, "include": [ "jest.config.ts", diff --git a/libs/api/domains/social-insurance/src/lib/dtos/pensionCalculation.input.ts b/libs/api/domains/social-insurance/src/lib/dtos/pensionCalculation.input.ts index 0fb58cc4f3e9..e6f73046d462 100644 --- a/libs/api/domains/social-insurance/src/lib/dtos/pensionCalculation.input.ts +++ b/libs/api/domains/social-insurance/src/lib/dtos/pensionCalculation.input.ts @@ -6,6 +6,7 @@ export enum BasePensionType { Disability = 'Disability', Rehabilitation = 'Rehabilitation', HalfRetirement = 'HalfRetirement', + NewSystem = 'NewSystem', } registerEnumType(BasePensionType, { diff --git a/libs/api/domains/social-insurance/src/lib/dtos/temporaryCalculation.input.ts b/libs/api/domains/social-insurance/src/lib/dtos/temporaryCalculation.input.ts new file mode 100644 index 000000000000..02e191306d34 --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/dtos/temporaryCalculation.input.ts @@ -0,0 +1,70 @@ +import { InputType, Field, Int } from '@nestjs/graphql' + +@InputType('SocialInsuranceIncomeType') +class IncomeType { + @Field(() => Int, { nullable: true }) + incomeTypeNumber?: number + + @Field(() => String, { nullable: true }) + incomeTypeCode?: string + + @Field(() => String, { nullable: true }) + incomeTypeName?: string + + @Field(() => String, { nullable: true }) + currencyCode?: string + + @Field(() => Int, { nullable: true }) + incomeCategoryNumber?: number + + @Field(() => String, { nullable: true }) + incomeCategoryCode?: string + + @Field(() => String, { nullable: true }) + incomeCategoryName?: string + + @Field(() => Int, { nullable: true }) + amountJan?: number + + @Field(() => Int, { nullable: true }) + amountFeb?: number + + @Field(() => Int, { nullable: true }) + amountMar?: number + + @Field(() => Int, { nullable: true }) + amountApr?: number + + @Field(() => Int, { nullable: true }) + amountMay?: number + + @Field(() => Int, { nullable: true }) + amountJun?: number + + @Field(() => Int, { nullable: true }) + amountJul?: number + + @Field(() => Int, { nullable: true }) + amountAug?: number + + @Field(() => Int, { nullable: true }) + amountSep?: number + + @Field(() => Int, { nullable: true }) + amountOct?: number + + @Field(() => Int, { nullable: true }) + amountNov?: number + + @Field(() => Int, { nullable: true }) + amountDec?: number +} + +@InputType('SocialInsuranceTemporaryCalculationInput') +export class TemporaryCalculationInput { + @Field(() => Int) + incomeYear!: number + + @Field(() => [IncomeType], { nullable: true }) + incomeTypes?: Array<IncomeType> +} diff --git a/libs/api/domains/social-insurance/src/lib/models/income/category.model.ts b/libs/api/domains/social-insurance/src/lib/models/income/category.model.ts new file mode 100644 index 000000000000..a456e3ed6ec8 --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/models/income/category.model.ts @@ -0,0 +1,16 @@ +import { Field, Int, ObjectType } from '@nestjs/graphql' + +@ObjectType('SocialInsuranceIncomePlanIncomeCategory') +export class IncomeCategory { + @Field() + name!: string + + @Field() + typeName!: string + + @Field(() => Int) + annualSum!: number + + @Field({ nullable: true }) + currency?: string +} diff --git a/libs/api/domains/social-insurance/src/lib/models/income/incomePlan.model.ts b/libs/api/domains/social-insurance/src/lib/models/income/incomePlan.model.ts new file mode 100644 index 000000000000..176cd4906713 --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/models/income/incomePlan.model.ts @@ -0,0 +1,26 @@ +import { + Field, + GraphQLISODateTime, + ObjectType, + registerEnumType, +} from '@nestjs/graphql' +import { IncomeCategory } from './category.model' +import { IncomePlanStatus } from '../../socialInsurance.type' +import { IncomePlanEligbility } from './incomePlanEligibility.model' + +registerEnumType(IncomePlanStatus, { name: 'SocialInsuranceIncomePlanStatus' }) + +@ObjectType('SocialInsuranceIncomePlan') +export class IncomePlan { + @Field(() => GraphQLISODateTime) + registrationDate!: Date + + @Field(() => IncomePlanStatus) + status!: IncomePlanStatus + + @Field(() => IncomePlanEligbility, { nullable: true }) + isEligibleForChange?: IncomePlanEligbility + + @Field(() => [IncomeCategory]) + incomeCategories!: Array<IncomeCategory> +} diff --git a/libs/api/domains/social-insurance/src/lib/models/income/incomePlanEligibility.model.ts b/libs/api/domains/social-insurance/src/lib/models/income/incomePlanEligibility.model.ts new file mode 100644 index 000000000000..2fa9b36d9d8e --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/models/income/incomePlanEligibility.model.ts @@ -0,0 +1,10 @@ +import { Field, ObjectType } from '@nestjs/graphql' + +@ObjectType('SocialInsuranceIncomePlanEligbility') +export class IncomePlanEligbility { + @Field({ nullable: true }) + isEligible?: boolean + + @Field({ nullable: true }) + reason?: string +} diff --git a/libs/api/domains/social-insurance/src/lib/models/payment.model.ts b/libs/api/domains/social-insurance/src/lib/models/payments/payment.model.ts similarity index 100% rename from libs/api/domains/social-insurance/src/lib/models/payment.model.ts rename to libs/api/domains/social-insurance/src/lib/models/payments/payment.model.ts diff --git a/libs/api/domains/social-insurance/src/lib/models/paymentGroup.model.ts b/libs/api/domains/social-insurance/src/lib/models/payments/paymentGroup.model.ts similarity index 100% rename from libs/api/domains/social-insurance/src/lib/models/paymentGroup.model.ts rename to libs/api/domains/social-insurance/src/lib/models/payments/paymentGroup.model.ts diff --git a/libs/api/domains/social-insurance/src/lib/models/paymentGroupType.model.ts b/libs/api/domains/social-insurance/src/lib/models/payments/paymentGroupType.model.ts similarity index 100% rename from libs/api/domains/social-insurance/src/lib/models/paymentGroupType.model.ts rename to libs/api/domains/social-insurance/src/lib/models/payments/paymentGroupType.model.ts diff --git a/libs/api/domains/social-insurance/src/lib/models/paymentMonth.model.ts b/libs/api/domains/social-insurance/src/lib/models/payments/paymentMonth.model.ts similarity index 100% rename from libs/api/domains/social-insurance/src/lib/models/paymentMonth.model.ts rename to libs/api/domains/social-insurance/src/lib/models/payments/paymentMonth.model.ts diff --git a/libs/api/domains/social-insurance/src/lib/models/paymentPlan.model.ts b/libs/api/domains/social-insurance/src/lib/models/payments/paymentPlan.model.ts similarity index 100% rename from libs/api/domains/social-insurance/src/lib/models/paymentPlan.model.ts rename to libs/api/domains/social-insurance/src/lib/models/payments/paymentPlan.model.ts diff --git a/libs/api/domains/social-insurance/src/lib/models/payments.model.ts b/libs/api/domains/social-insurance/src/lib/models/payments/payments.model.ts similarity index 100% rename from libs/api/domains/social-insurance/src/lib/models/payments.model.ts rename to libs/api/domains/social-insurance/src/lib/models/payments/payments.model.ts diff --git a/libs/api/domains/social-insurance/src/lib/models/pensionCalculation.model.ts b/libs/api/domains/social-insurance/src/lib/models/pension/pensionCalculation.model.ts similarity index 100% rename from libs/api/domains/social-insurance/src/lib/models/pensionCalculation.model.ts rename to libs/api/domains/social-insurance/src/lib/models/pension/pensionCalculation.model.ts diff --git a/libs/api/domains/social-insurance/src/lib/models/temporaryCalculation.model.ts b/libs/api/domains/social-insurance/src/lib/models/temporaryCalculation.model.ts new file mode 100644 index 000000000000..c8e55c1b1d12 --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/models/temporaryCalculation.model.ts @@ -0,0 +1,55 @@ +import { Field, Int, ObjectType } from '@nestjs/graphql' + +@ObjectType('SocialInsuranceTemporaryCalculationRow') +class TemporaryCalculationRow { + @Field(() => String, { nullable: true }) + name?: string + + @Field(() => Int, { nullable: true }) + total?: number + + @Field(() => [TemporaryCalculationMonth], { nullable: true }) + months?: Array<TemporaryCalculationMonth> +} + +@ObjectType('SocialInsuranceTemporaryCalculationMonth') +class TemporaryCalculationMonth { + @Field(() => Int) + month!: number + + @Field(() => Int, { nullable: true }) + amount?: number +} + +@ObjectType('SocialInsuranceTemporaryCalculationGroup') +class TemporaryCalculationGroup { + @Field(() => String, { nullable: true }) + group?: string + + @Field(() => Int, { nullable: true }) + groupId?: number + + @Field(() => Int, { nullable: true }) + total?: number + + @Field(() => [TemporaryCalculationMonth], { nullable: true }) + monthTotals?: Array<TemporaryCalculationMonth> + + @Field(() => [TemporaryCalculationRow], { nullable: true }) + rows?: Array<TemporaryCalculationRow> +} + +@ObjectType('SocialInsuranceTemporaryCalculation') +export class TemporaryCalculation { + @Field(() => Int, { nullable: true }) + totalPayment?: number + + @Field(() => Int, { nullable: true }) + subtracted?: number + + @Field(() => Int, { nullable: true }) + paidOut?: number + + @Field(() => [TemporaryCalculationGroup], { nullable: true }) + groups?: Array<TemporaryCalculationGroup> +} diff --git a/libs/api/domains/social-insurance/src/lib/resolvers/incomePlan.resolver.ts b/libs/api/domains/social-insurance/src/lib/resolvers/incomePlan.resolver.ts new file mode 100644 index 000000000000..43e5e106720f --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/resolvers/incomePlan.resolver.ts @@ -0,0 +1,46 @@ +import { Audit } from '@island.is/nest/audit' +import { Query, ResolveField, Resolver } from '@nestjs/graphql' +import { + CurrentUser, + IdsUserGuard, + Scopes, + ScopesGuard, + type User, +} from '@island.is/auth-nest-tools' +import { Inject, UseGuards } from '@nestjs/common' +import { SocialInsuranceService } from '../socialInsurance.service' +import { + FeatureFlag, + FeatureFlagGuard, + Features, +} from '@island.is/nest/feature-flags' +import { IncomePlan } from '../models/income/incomePlan.model' +import { ApiScope } from '@island.is/auth/scopes' +import { IncomePlanEligbility } from '../models/income/incomePlanEligibility.model' +import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' + +@Resolver(() => IncomePlan) +@UseGuards(IdsUserGuard, ScopesGuard, FeatureFlagGuard) +@Audit({ namespace: '@island.is/api/social-insurance' }) +export class IncomePlanResolver { + constructor( + @Inject(LOGGER_PROVIDER) private readonly logger: Logger, + private readonly service: SocialInsuranceService, + ) {} + + @Query(() => IncomePlan, { + name: 'socialInsuranceIncomePlan', + nullable: true, + }) + @FeatureFlag(Features.servicePortalSocialInsuranceIncomePlanPageEnabled) + @Scopes(ApiScope.internal) + @Audit() + async incomePlan(@CurrentUser() user: User) { + return this.service.getIncomePlan(user) + } + + @ResolveField('isEligibleForChange', () => IncomePlanEligbility) + async resolveField(@CurrentUser() user: User): Promise<IncomePlanEligbility> { + return this.service.getIncomePlanChangeEligibility(user) + } +} diff --git a/libs/api/domains/social-insurance/src/lib/resolvers/index.ts b/libs/api/domains/social-insurance/src/lib/resolvers/index.ts new file mode 100644 index 000000000000..395d8a83cfba --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/resolvers/index.ts @@ -0,0 +1,3 @@ +export { IncomePlanResolver } from './incomePlan.resolver' +export { PaymentPlanResolver } from './paymentPlan.resolver' +export { PensionResolver } from './pension.resolver' diff --git a/libs/api/domains/social-insurance/src/lib/socialInsurance.resolver.ts b/libs/api/domains/social-insurance/src/lib/resolvers/paymentPlan.resolver.ts similarity index 66% rename from libs/api/domains/social-insurance/src/lib/socialInsurance.resolver.ts rename to libs/api/domains/social-insurance/src/lib/resolvers/paymentPlan.resolver.ts index afa323100377..dd41459cf2e1 100644 --- a/libs/api/domains/social-insurance/src/lib/socialInsurance.resolver.ts +++ b/libs/api/domains/social-insurance/src/lib/resolvers/paymentPlan.resolver.ts @@ -7,24 +7,23 @@ import { Scopes, CurrentUser, type User, - BypassAuth, } from '@island.is/auth-nest-tools' import { UseGuards } from '@nestjs/common' -import { SocialInsuranceService } from './socialInsurance.service' -import { PaymentPlan } from './models/paymentPlan.model' +import { SocialInsuranceService } from '../socialInsurance.service' +import { PaymentPlan } from '../models/payments/paymentPlan.model' import { FeatureFlagGuard, FeatureFlag, Features, } from '@island.is/nest/feature-flags' -import { PensionCalculationInput } from './dtos/pensionCalculation.input' -import { PensionCalculationResponse } from './models/pensionCalculation.model' -import { Payments } from './models/payments.model' +import { Payments } from '../models/payments/payments.model' +import { TemporaryCalculation } from '../models/temporaryCalculation.model' +import { TemporaryCalculationInput } from '../dtos/temporaryCalculation.input' @Resolver() @UseGuards(IdsUserGuard, ScopesGuard, FeatureFlagGuard) @Audit({ namespace: '@island.is/api/social-insurance' }) -export class SocialInsuranceResolver { +export class PaymentPlanResolver { constructor(private readonly service: SocialInsuranceService) {} @Query(() => PaymentPlan, { @@ -49,9 +48,11 @@ export class SocialInsuranceResolver { return this.service.getPayments(user) } - @Query(() => PensionCalculationResponse) - @BypassAuth() - async getPensionCalculation(@Args('input') input: PensionCalculationInput) { - return this.service.getPensionCalculation(input) + @Query(() => TemporaryCalculation) + async getTemporaryCalculations( + @Args('input') input: TemporaryCalculationInput, + @CurrentUser() user: User, + ) { + return this.service.getTemporaryCalculations(user, input) } } diff --git a/libs/api/domains/social-insurance/src/lib/resolvers/pension.resolver.ts b/libs/api/domains/social-insurance/src/lib/resolvers/pension.resolver.ts new file mode 100644 index 000000000000..3f5688bae31a --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/resolvers/pension.resolver.ts @@ -0,0 +1,25 @@ +import { Audit } from '@island.is/nest/audit' +import { Args, Query, Resolver } from '@nestjs/graphql' +import { + IdsUserGuard, + ScopesGuard, + BypassAuth, +} from '@island.is/auth-nest-tools' +import { UseGuards } from '@nestjs/common' +import { SocialInsuranceService } from '../socialInsurance.service' +import { FeatureFlagGuard } from '@island.is/nest/feature-flags' +import { PensionCalculationInput } from '../dtos/pensionCalculation.input' +import { PensionCalculationResponse } from '../models/pension/pensionCalculation.model' + +@Resolver() +@UseGuards(IdsUserGuard, ScopesGuard, FeatureFlagGuard) +@Audit({ namespace: '@island.is/api/social-insurance' }) +export class PensionResolver { + constructor(private readonly service: SocialInsuranceService) {} + + @Query(() => PensionCalculationResponse) + @BypassAuth() + async getPensionCalculation(@Args('input') input: PensionCalculationInput) { + return this.service.getPensionCalculation(input) + } +} diff --git a/libs/api/domains/social-insurance/src/lib/socialInsurance.module.ts b/libs/api/domains/social-insurance/src/lib/socialInsurance.module.ts index 669621eb7e0a..df3a607b4af0 100644 --- a/libs/api/domains/social-insurance/src/lib/socialInsurance.module.ts +++ b/libs/api/domains/social-insurance/src/lib/socialInsurance.module.ts @@ -2,8 +2,12 @@ import { Module } from '@nestjs/common' import { SocialInsuranceAdministrationClientModule } from '@island.is/clients/social-insurance-administration' import { FeatureFlagModule } from '@island.is/nest/feature-flags' import { CmsModule } from '@island.is/cms' -import { SocialInsuranceResolver } from './socialInsurance.resolver' import { SocialInsuranceService } from './socialInsurance.service' +import { + IncomePlanResolver, + PaymentPlanResolver, + PensionResolver, +} from './resolvers' @Module({ imports: [ @@ -11,6 +15,11 @@ import { SocialInsuranceService } from './socialInsurance.service' FeatureFlagModule, CmsModule, ], - providers: [SocialInsuranceResolver, SocialInsuranceService], + providers: [ + PaymentPlanResolver, + PensionResolver, + IncomePlanResolver, + SocialInsuranceService, + ], }) export class SocialInsuranceModule {} diff --git a/libs/api/domains/social-insurance/src/lib/socialInsurance.service.ts b/libs/api/domains/social-insurance/src/lib/socialInsurance.service.ts index f9c4526b58ff..98dfe04d5166 100644 --- a/libs/api/domains/social-insurance/src/lib/socialInsurance.service.ts +++ b/libs/api/domains/social-insurance/src/lib/socialInsurance.service.ts @@ -1,6 +1,10 @@ import { User } from '@island.is/auth-nest-tools' import { handle404 } from '@island.is/clients/middlewares' -import { SocialInsuranceAdministrationClientService } from '@island.is/clients/social-insurance-administration' +import { + SocialInsuranceAdministrationClientService, + TrWebCommonsExternalPortalsApiModelsPaymentPlanPaymentPlanDto, + IncomePlanStatus as IncomeStatus, +} from '@island.is/clients/social-insurance-administration' import { CmsElasticsearchService, CustomPageUniqueIdentifier, @@ -10,16 +14,20 @@ import { LOGGER_PROVIDER } from '@island.is/logging' import { isDefined } from '@island.is/shared/utils' import { Inject, Injectable } from '@nestjs/common' import { PensionCalculationInput } from './dtos/pensionCalculation.input' -import { PensionCalculationResponse } from './models/pensionCalculation.model' +import { PensionCalculationResponse } from './models/pension/pensionCalculation.model' import { getPensionCalculationHighlightedItems, groupPensionCalculationItems, mapPensionCalculationInput, } from './utils' -import { PaymentGroup } from './models/paymentGroup.model' -import { PaymentPlan } from './models/paymentPlan.model' -import { Payments } from './models/payments.model' -import { mapToPaymentGroupType } from './models/paymentGroupType.model' +import { PaymentGroup } from './models/payments/paymentGroup.model' +import { PaymentPlan } from './models/payments/paymentPlan.model' +import { Payments } from './models/payments/payments.model' +import { mapToPaymentGroupType } from './models/payments/paymentGroupType.model' +import { IncomePlan } from './models/income/incomePlan.model' +import { IncomePlanStatus, LOG_CATEGORY } from './socialInsurance.type' +import { IncomePlanEligbility } from './models/income/incomePlanEligibility.model' +import { TemporaryCalculationInput } from './dtos/temporaryCalculation.input' @Injectable() export class SocialInsuranceService { @@ -121,6 +129,59 @@ export class SocialInsuranceService { } } + async getIncomePlan(user: User): Promise<IncomePlan | undefined> { + const data = await this.socialInsuranceApi.getLatestIncomePlan(user) + + if (!data?.registrationDate || !data?.status || !data.incomeTypeLines) { + this.logger.info('Income plan incomplete, returning', { + category: LOG_CATEGORY, + }) + return + } + + let hasIncompleteLines = false + const incomeCategories = data.incomeTypeLines + .map((i) => { + if (!i.incomeTypeName || !i.incomeCategoryName || !i.totalSum) { + hasIncompleteLines = true + return undefined + } + return { + name: i.incomeCategoryName, + typeName: i.incomeTypeName, + annualSum: i.totalSum, + currency: i.currency ?? undefined, + } + }) + .filter(isDefined) + + if (hasIncompleteLines) { + this.logger.info( + 'Income category data filtered out some incomplete lines', + { + category: LOG_CATEGORY, + }, + ) + } + + return { + registrationDate: data.registrationDate, + status: this.parseIncomePlanStatus(data.status), + incomeCategories, + } + } + + async getIncomePlanChangeEligibility( + user: User, + ): Promise<IncomePlanEligbility> { + const data = await this.socialInsuranceApi.getIsEligible(user, 'incomeplan') + + return { + isEligible: data.isEligible ?? undefined, + reason: data.reason ?? undefined, + } + } + async getPensionCalculation( input: PensionCalculationInput, ): Promise<PensionCalculationResponse> { @@ -145,4 +206,24 @@ export class SocialInsuranceService { groups, } } + + async getTemporaryCalculations( + user: User, + input: TemporaryCalculationInput, + ): Promise<TrWebCommonsExternalPortalsApiModelsPaymentPlanPaymentPlanDto> { + return await this.socialInsuranceApi.getTemporaryCalculations(user, input) + } + + parseIncomePlanStatus = (status: IncomeStatus): IncomePlanStatus => { + switch (status) { + case 'Accepted': + return IncomePlanStatus.ACCEPTED + case 'InProgress': + return IncomePlanStatus.IN_PROGRESS + case 'Cancelled': + return IncomePlanStatus.CANCELLED + default: + return IncomePlanStatus.UNKNOWN + } + } } diff --git a/libs/api/domains/social-insurance/src/lib/socialInsurance.type.ts b/libs/api/domains/social-insurance/src/lib/socialInsurance.type.ts new file mode 100644 index 000000000000..e980dc067dfc --- /dev/null +++ b/libs/api/domains/social-insurance/src/lib/socialInsurance.type.ts @@ -0,0 +1,8 @@ +export enum IncomePlanStatus { + ACCEPTED, + CANCELLED, + IN_PROGRESS, + UNKNOWN, +} + +export const LOG_CATEGORY = 'api-domains-social-insurance-service' diff --git a/libs/api/domains/social-insurance/src/lib/utils.ts b/libs/api/domains/social-insurance/src/lib/utils.ts index 183116506153..6341bbcd7ed0 100644 --- a/libs/api/domains/social-insurance/src/lib/utils.ts +++ b/libs/api/domains/social-insurance/src/lib/utils.ts @@ -13,7 +13,7 @@ import addYears from 'date-fns/addYears' import differenceInMonths from 'date-fns/differenceInMonths' import differenceInYears from 'date-fns/differenceInYears' import { CustomPage } from '@island.is/cms' -import { PensionCalculationResponse } from './models/pensionCalculation.model' +import { PensionCalculationResponse } from './models/pension/pensionCalculation.model' const basePensionTypeMapping: Record<BasePensionType, number> = { [BasePensionType.Retirement]: 1, // Ellilífeyrir @@ -21,6 +21,7 @@ const basePensionTypeMapping: Record<BasePensionType, number> = { [BasePensionType.Disability]: 3, // Örorkulífeyrir [BasePensionType.Rehabilitation]: 4, // Endurhæfingarlífeyrir [BasePensionType.HalfRetirement]: 5, // Hálfur Ellilífeyrir + [BasePensionType.NewSystem]: 6, // Nýtt kerfi sem tekur gildi 1. september 2025 } const livingConditionMapping: Record<LivingCondition, number> = { diff --git a/libs/api/domains/syslumenn/src/lib/dto/searchForProperty.input.ts b/libs/api/domains/syslumenn/src/lib/dto/searchForProperty.input.ts index b1c3d178c0c0..5dbd26caa34b 100644 --- a/libs/api/domains/syslumenn/src/lib/dto/searchForProperty.input.ts +++ b/libs/api/domains/syslumenn/src/lib/dto/searchForProperty.input.ts @@ -1,4 +1,4 @@ -import { IsString, IsOptional, IsNumber } from 'class-validator' +import { IsString, IsOptional } from 'class-validator' import { Field, InputType } from '@nestjs/graphql' @InputType() diff --git a/libs/api/domains/syslumenn/src/lib/models/professionRights.ts b/libs/api/domains/syslumenn/src/lib/models/professionRights.ts index f12947b906e5..1b20028f87f4 100644 --- a/libs/api/domains/syslumenn/src/lib/models/professionRights.ts +++ b/libs/api/domains/syslumenn/src/lib/models/professionRights.ts @@ -8,6 +8,9 @@ class ProfessionRight { @Field({ nullable: true }) profession?: string + + @Field({ nullable: true }) + nationalId?: string } @ObjectType() diff --git a/libs/api/domains/syslumenn/src/lib/models/temporaryEventLicence.ts b/libs/api/domains/syslumenn/src/lib/models/temporaryEventLicence.ts index ee82b0e8cc42..0e6e864bc07f 100644 --- a/libs/api/domains/syslumenn/src/lib/models/temporaryEventLicence.ts +++ b/libs/api/domains/syslumenn/src/lib/models/temporaryEventLicence.ts @@ -34,4 +34,7 @@ export class TemporaryEventLicence { @Field({ nullable: true }) estimatedNumberOfGuests?: number + + @Field({ nullable: true }) + location?: string } diff --git a/libs/api/domains/university-careers/src/lib/mapper.ts b/libs/api/domains/university-careers/src/lib/mapper.ts index a170fa20e102..09166bcdb54c 100644 --- a/libs/api/domains/university-careers/src/lib/mapper.ts +++ b/libs/api/domains/university-careers/src/lib/mapper.ts @@ -18,9 +18,7 @@ export const mapToStudent = ( !data?.graduationDate || !data?.trackNumber || !data?.school || - !data?.faculty || - !data?.studyProgram || - !data?.degree + !data?.faculty ) { return null } diff --git a/libs/api/domains/university-careers/src/lib/models/institution.model.ts b/libs/api/domains/university-careers/src/lib/models/institution.model.ts index f244087c285e..b58054665da9 100644 --- a/libs/api/domains/university-careers/src/lib/models/institution.model.ts +++ b/libs/api/domains/university-careers/src/lib/models/institution.model.ts @@ -12,9 +12,9 @@ export class Institution { @Field(() => String) shortId!: UniversityIdShort - @Field(() => String, { nullable: true }) + @Field({ nullable: true }) displayName?: string - @Field(() => String, { nullable: true }) + @Field({ nullable: true }) logoUrl?: string } diff --git a/libs/api/domains/university-careers/src/lib/models/studentFile.model.ts b/libs/api/domains/university-careers/src/lib/models/studentFile.model.ts index 25ee567492ba..ad05cca835f6 100644 --- a/libs/api/domains/university-careers/src/lib/models/studentFile.model.ts +++ b/libs/api/domains/university-careers/src/lib/models/studentFile.model.ts @@ -2,15 +2,15 @@ import { ObjectType, Field } from '@nestjs/graphql' @ObjectType('UniversityCareersStudentFile') export class StudentFile { - @Field(() => String) + @Field() type!: string - @Field(() => String) + @Field() locale!: string - @Field(() => String) + @Field() displayName!: string - @Field(() => String) + @Field() fileName!: string } diff --git a/libs/api/domains/university-careers/src/lib/models/studentTrack.model.ts b/libs/api/domains/university-careers/src/lib/models/studentTrack.model.ts index 06e707c8bc92..16c2a7cf7b20 100644 --- a/libs/api/domains/university-careers/src/lib/models/studentTrack.model.ts +++ b/libs/api/domains/university-careers/src/lib/models/studentTrack.model.ts @@ -16,6 +16,6 @@ export class StudentTrack { @Field(() => StudentTrackMetadata) metadata!: StudentTrackMetadata - @Field(() => String, { nullable: true }) + @Field({ nullable: true }) downloadServiceURL?: string } diff --git a/libs/api/domains/university-careers/src/lib/models/studentTrackMetadata.ts b/libs/api/domains/university-careers/src/lib/models/studentTrackMetadata.ts index eb41db8582c8..d45057eb0d4f 100644 --- a/libs/api/domains/university-careers/src/lib/models/studentTrackMetadata.ts +++ b/libs/api/domains/university-careers/src/lib/models/studentTrackMetadata.ts @@ -2,12 +2,12 @@ import { ObjectType, Field } from '@nestjs/graphql' @ObjectType('UniversityCareersStudentTrackMetadata') export class StudentTrackMetadata { - @Field(() => String) + @Field() description!: string - @Field(() => String) + @Field() footer!: string - @Field(() => String, { nullable: true }) + @Field({ nullable: true }) unconfirmedData?: string } diff --git a/libs/api/domains/university-careers/src/lib/models/studentTrackTranscript.model.ts b/libs/api/domains/university-careers/src/lib/models/studentTrackTranscript.model.ts index 468dd44118ad..68c339218ba2 100644 --- a/libs/api/domains/university-careers/src/lib/models/studentTrackTranscript.model.ts +++ b/libs/api/domains/university-careers/src/lib/models/studentTrackTranscript.model.ts @@ -1,32 +1,32 @@ -import { ObjectType, Field } from '@nestjs/graphql' +import { ObjectType, Field, Int } from '@nestjs/graphql' import { Institution } from './institution.model' @ObjectType('UniversityCareersStudentTrackTranscript') export class StudentTrackTranscript { - @Field(() => String) + @Field() name!: string - @Field(() => String, { nullable: true }) + @Field({ nullable: true }) nationalId?: string - @Field(() => String) + @Field() graduationDate!: string - @Field(() => Number) + @Field(() => Int) trackNumber!: number @Field(() => Institution) institution!: Institution - @Field(() => String) + @Field() school!: string - @Field(() => String) + @Field() faculty!: string - @Field(() => String) - studyProgram!: string + @Field({ nullable: true }) + studyProgram?: string - @Field(() => String) - degree!: string + @Field({ nullable: true }) + degree?: string } diff --git a/libs/api/domains/vehicles/src/index.ts b/libs/api/domains/vehicles/src/index.ts index 3bf603730d35..3b36038fbea0 100644 --- a/libs/api/domains/vehicles/src/index.ts +++ b/libs/api/domains/vehicles/src/index.ts @@ -1,2 +1 @@ -export * from './lib/api-domains-vehicles.module' -export * from './lib/api-domains-vehicles.service' +export * from './lib/vehicles.module' diff --git a/libs/api/domains/vehicles/src/lib/api-domains-vehicles.type.ts b/libs/api/domains/vehicles/src/lib/api-domains-vehicles.type.ts deleted file mode 100644 index 402acbf3d765..000000000000 --- a/libs/api/domains/vehicles/src/lib/api-domains-vehicles.type.ts +++ /dev/null @@ -1,183 +0,0 @@ -/** - * - * @export - * @interface Vehicle - */ -export interface Vehicle { - /** - * - * @type {boolean} - * @memberof Vehicle - */ - isCurrent?: boolean - /** - * - * @type {string} - * @memberof Vehicle - */ - permno?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - regno?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - vin?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - type?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - color?: string | null - /** - * - * @type {Date} - * @memberof Vehicle - */ - firstRegDate?: Date | null - /** - * - * @type {string} - * @memberof Vehicle - */ - modelYear?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - productYear?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - registrationType?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - role?: string | null - /** - * - * @type {Date} - * @memberof Vehicle - */ - operatorStartDate?: Date | null - /** - * - * @type {Date} - * @memberof Vehicle - */ - operatorEndDate?: Date | null - /** - * - * @type {boolean} - * @memberof Vehicle - */ - outOfUse?: boolean - /** - * - * @type {boolean} - * @memberof Vehicle - */ - otherOwners?: boolean - /** - * - * @type {string} - * @memberof Vehicle - */ - termination?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - buyerPersidno?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - ownerPersidno?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - vehicleStatus?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - useGroup?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - vehGroup?: string | null - /** - * - * @type {string} - * @memberof Vehicle - */ - plateStatus?: string | null -} - -/** - * - * @export - * @interface PersidnoLookup - */ -export interface UsersVehicles { - /** - * - * @type {string} - * @memberof PersidnoLookup - */ - persidno?: string | null - /** - * - * @type {string} - * @memberof PersidnoLookup - */ - name?: string | null - /** - * - * @type {string} - * @memberof PersidnoLookup - */ - address?: string | null - /** - * - * @type {string} - * @memberof PersidnoLookup - */ - postStation?: string | null - /** - * - * @type {Array<Vehicle>} - * @memberof PersidnoLookup - */ - vehicleList?: Array<Vehicle> | null - /** - * - * @type {string} - * @memberof PersidnoLookup - */ - createdTimestamp?: string | null -} diff --git a/libs/api/domains/vehicles/src/lib/constants.ts b/libs/api/domains/vehicles/src/lib/constants.ts new file mode 100644 index 000000000000..7d200c985f78 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/constants.ts @@ -0,0 +1,2 @@ +export const ISLAND_IS_ORIGIN_CODE = 'ISLAND.IS' +export const LOG_CATEGORY = 'api-domains-vehicles' diff --git a/libs/api/domains/vehicles/src/lib/dto/getBulkVehicleMileageRequestOverview.input.ts b/libs/api/domains/vehicles/src/lib/dto/getBulkVehicleMileageRequestOverview.input.ts new file mode 100644 index 000000000000..65b238fb9150 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/dto/getBulkVehicleMileageRequestOverview.input.ts @@ -0,0 +1,7 @@ +import { Field, ID, InputType } from '@nestjs/graphql' + +@InputType() +export class BulkVehicleMileageRequestOverviewInput { + @Field(() => ID) + guid!: string +} diff --git a/libs/api/domains/vehicles/src/lib/dto/getBulkVehicleMileageRequestStatus.input.ts b/libs/api/domains/vehicles/src/lib/dto/getBulkVehicleMileageRequestStatus.input.ts new file mode 100644 index 000000000000..077fb1f9fdcf --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/dto/getBulkVehicleMileageRequestStatus.input.ts @@ -0,0 +1,7 @@ +import { Field, ID, InputType } from '@nestjs/graphql' + +@InputType() +export class BulkVehicleMileageRequestStatusInput { + @Field(() => ID) + requestId!: string +} diff --git a/libs/api/domains/vehicles/src/dto/getPublicVehicleSearchInput.ts b/libs/api/domains/vehicles/src/lib/dto/getPublicVehicleSearchInput.ts similarity index 100% rename from libs/api/domains/vehicles/src/dto/getPublicVehicleSearchInput.ts rename to libs/api/domains/vehicles/src/lib/dto/getPublicVehicleSearchInput.ts diff --git a/libs/api/domains/vehicles/src/dto/getVehicleDetailInput.ts b/libs/api/domains/vehicles/src/lib/dto/getVehicleDetailInput.ts similarity index 100% rename from libs/api/domains/vehicles/src/dto/getVehicleDetailInput.ts rename to libs/api/domains/vehicles/src/lib/dto/getVehicleDetailInput.ts diff --git a/libs/api/domains/vehicles/src/dto/getVehicleMileageInput.ts b/libs/api/domains/vehicles/src/lib/dto/getVehicleMileageInput.ts similarity index 100% rename from libs/api/domains/vehicles/src/dto/getVehicleMileageInput.ts rename to libs/api/domains/vehicles/src/lib/dto/getVehicleMileageInput.ts diff --git a/libs/api/domains/vehicles/src/dto/getVehicleSearchInput.ts b/libs/api/domains/vehicles/src/lib/dto/getVehicleSearchInput.ts similarity index 100% rename from libs/api/domains/vehicles/src/dto/getVehicleSearchInput.ts rename to libs/api/domains/vehicles/src/lib/dto/getVehicleSearchInput.ts diff --git a/libs/api/domains/vehicles/src/dto/getVehiclesForUserInput.ts b/libs/api/domains/vehicles/src/lib/dto/getVehiclesForUserInput.ts similarity index 100% rename from libs/api/domains/vehicles/src/dto/getVehiclesForUserInput.ts rename to libs/api/domains/vehicles/src/lib/dto/getVehiclesForUserInput.ts diff --git a/libs/api/domains/vehicles/src/lib/dto/mileageReading.dto.ts b/libs/api/domains/vehicles/src/lib/dto/mileageReading.dto.ts new file mode 100644 index 000000000000..7fbef841c313 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/dto/mileageReading.dto.ts @@ -0,0 +1,9 @@ +export interface MileageReadingDto { + isEditing: boolean + canUserRegisterVehicleMileage?: boolean + readings: Array<{ + date?: Date + origin?: string + mileage?: number + }> +} diff --git a/libs/api/domains/vehicles/src/lib/dto/postBulkVehicleMileage.input.ts b/libs/api/domains/vehicles/src/lib/dto/postBulkVehicleMileage.input.ts new file mode 100644 index 000000000000..40047f8c456e --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/dto/postBulkVehicleMileage.input.ts @@ -0,0 +1,22 @@ +import { Field, InputType } from '@nestjs/graphql' +import { IsInt, IsString } from 'class-validator' + +@InputType() +export class PostVehicleBulkMileageInput { + @Field({ description: 'Example: "ISLAND.IS"' }) + originCode!: string + + @Field(() => [PostVehicleBulkMileageSingleInput]) + mileageData!: Array<PostVehicleBulkMileageSingleInput> +} + +@InputType() +export class PostVehicleBulkMileageSingleInput { + @Field() + @IsString() + vehicleId!: string + + @Field() + @IsInt() + mileageNumber!: number +} diff --git a/libs/api/domains/vehicles/src/dto/postVehicleMileageInput.ts b/libs/api/domains/vehicles/src/lib/dto/postVehicleMileageInput.ts similarity index 100% rename from libs/api/domains/vehicles/src/dto/postVehicleMileageInput.ts rename to libs/api/domains/vehicles/src/lib/dto/postVehicleMileageInput.ts diff --git a/libs/api/domains/vehicles/src/lib/dto/vehiclesListInputV3.ts b/libs/api/domains/vehicles/src/lib/dto/vehiclesListInputV3.ts new file mode 100644 index 000000000000..15c75e1ccd8e --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/dto/vehiclesListInputV3.ts @@ -0,0 +1,10 @@ +import { Field, InputType } from '@nestjs/graphql' + +@InputType() +export class VehiclesListInputV3 { + @Field() + pageSize!: number + + @Field() + page!: number +} diff --git a/libs/api/domains/vehicles/src/models/getPublicVehicleSearch.model.ts b/libs/api/domains/vehicles/src/lib/models/getPublicVehicleSearch.model.ts similarity index 100% rename from libs/api/domains/vehicles/src/models/getPublicVehicleSearch.model.ts rename to libs/api/domains/vehicles/src/lib/models/getPublicVehicleSearch.model.ts diff --git a/libs/api/domains/vehicles/src/models/getVehicleDetail.model.ts b/libs/api/domains/vehicles/src/lib/models/getVehicleDetail.model.ts similarity index 100% rename from libs/api/domains/vehicles/src/models/getVehicleDetail.model.ts rename to libs/api/domains/vehicles/src/lib/models/getVehicleDetail.model.ts diff --git a/libs/api/domains/vehicles/src/models/getVehicleMileage.model.ts b/libs/api/domains/vehicles/src/lib/models/getVehicleMileage.model.ts similarity index 100% rename from libs/api/domains/vehicles/src/models/getVehicleMileage.model.ts rename to libs/api/domains/vehicles/src/lib/models/getVehicleMileage.model.ts diff --git a/libs/api/domains/vehicles/src/models/getVehicleSearch.model.ts b/libs/api/domains/vehicles/src/lib/models/getVehicleSearch.model.ts similarity index 75% rename from libs/api/domains/vehicles/src/models/getVehicleSearch.model.ts rename to libs/api/domains/vehicles/src/lib/models/getVehicleSearch.model.ts index 5800e0d7d553..2310d929dc86 100644 --- a/libs/api/domains/vehicles/src/models/getVehicleSearch.model.ts +++ b/libs/api/domains/vehicles/src/lib/models/getVehicleSearch.model.ts @@ -1,4 +1,12 @@ -import { Field, ObjectType } from '@nestjs/graphql' +import { Field, ObjectType, registerEnumType } from '@nestjs/graphql' + +export enum OperatorAnonymityStatus { + ALL = 'all', + SOME = 'some', + UNKNOWN = 'unknown', +} + +registerEnumType(OperatorAnonymityStatus, { name: 'OperatorAnonymityStatus' }) @ObjectType() export class VehiclesVehicleSearchNextInspection { @@ -76,4 +84,16 @@ export class VehiclesVehicleSearch { @Field(() => Boolean, { nullable: true }) canRegisterMileage?: boolean | null + + @Field({ nullable: true }) + engine?: string + + @Field(() => [String], { + nullable: true, + description: 'Basic operator array, names only.', + }) + operatorNames?: string[] + + @Field(() => OperatorAnonymityStatus) + operatorAnonymityStatus!: OperatorAnonymityStatus } diff --git a/libs/api/domains/vehicles/src/models/usersVehicles.model.ts b/libs/api/domains/vehicles/src/lib/models/usersVehicles.model.ts similarity index 94% rename from libs/api/domains/vehicles/src/models/usersVehicles.model.ts rename to libs/api/domains/vehicles/src/lib/models/usersVehicles.model.ts index 7ef014591272..04476ff794ae 100644 --- a/libs/api/domains/vehicles/src/models/usersVehicles.model.ts +++ b/libs/api/domains/vehicles/src/lib/models/usersVehicles.model.ts @@ -1,4 +1,5 @@ import { Field, ObjectType } from '@nestjs/graphql' +import { VehicleMileageDetail } from './getVehicleMileage.model' @ObjectType() export class NextInspection { @@ -11,6 +12,7 @@ export class NextInspection { }) nextinspectiondateIfPassedInspectionToday?: Date } + @ObjectType() export class VehiclesVehicle { @Field({ nullable: true }) @@ -243,6 +245,12 @@ export class VehicleListed { @Field({ nullable: true }) nextMainInspection?: Date + + @Field(() => VehicleMileageDetail, { nullable: true }) + lastMileageRegistration?: VehicleMileageDetail + + @Field(() => [VehicleMileageDetail], { nullable: true }) + mileageRegistrationHistory?: Array<VehicleMileageDetail> } @ObjectType() diff --git a/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageReadingResponse.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageReadingResponse.model.ts new file mode 100644 index 000000000000..ef8738dc461f --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageReadingResponse.model.ts @@ -0,0 +1,13 @@ +import { Field, ObjectType, ID } from '@nestjs/graphql' + +@ObjectType() +export class VehiclesBulkMileageReadingResponse { + @Field(() => ID, { + description: + 'The GUID of the mileage registration post request. Used to fetch job status', + }) + requestId!: string + + @Field({ nullable: true }) + errorMessage?: string +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationJob.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationJob.model.ts new file mode 100644 index 000000000000..a677030b08d6 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationJob.model.ts @@ -0,0 +1,37 @@ +import { Field, ObjectType, ID, GraphQLISODateTime } from '@nestjs/graphql' + +@ObjectType() +export class VehiclesBulkMileageRegistrationJob { + @Field(() => ID) + guid!: string + + @Field({ nullable: true }) + reportingPersonNationalId?: string + + @Field({ nullable: true }) + reportingPersonName?: string + + @Field({ nullable: true }) + originCode?: string + + @Field({ nullable: true }) + originName?: string + + @Field(() => GraphQLISODateTime, { + nullable: true, + description: 'When was the bulk request requested?', + }) + dateRequested?: Date + + @Field(() => GraphQLISODateTime, { + nullable: true, + description: 'When did the bulk request start executing?', + }) + dateStarted?: Date + + @Field(() => GraphQLISODateTime, { + nullable: true, + description: 'When did the bulk request execution finish', + }) + dateFinished?: Date +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationJobHistory.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationJobHistory.model.ts new file mode 100644 index 000000000000..f0ea92c3cc34 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationJobHistory.model.ts @@ -0,0 +1,8 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { VehiclesBulkMileageRegistrationJob } from './bulkMileageRegistrationJob.model' + +@ObjectType() +export class VehiclesBulkMileageRegistrationJobHistory { + @Field(() => [VehiclesBulkMileageRegistrationJob]) + history!: Array<VehiclesBulkMileageRegistrationJob> +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestDetail.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestDetail.model.ts new file mode 100644 index 000000000000..804f11bcb951 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestDetail.model.ts @@ -0,0 +1,22 @@ +import { Field, ObjectType, ID, Int } from '@nestjs/graphql' +import { VehiclesBulkMileageRegistrationRequestError } from './bulkMileageRegistrationRequestError.model' + +@ObjectType() +export class VehiclesBulkMileageRegistrationRequestDetail { + @Field(() => ID) + guid!: string + + @Field() + vehicleId!: string + + @Field(() => Int, { nullable: true }) + mileage?: number + + @Field({ nullable: true }) + returnCode?: string + + @Field(() => [VehiclesBulkMileageRegistrationRequestError], { + nullable: true, + }) + errors?: Array<VehiclesBulkMileageRegistrationRequestError> +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestError.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestError.model.ts new file mode 100644 index 000000000000..a289df9b6cfa --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestError.model.ts @@ -0,0 +1,10 @@ +import { Field, ObjectType } from '@nestjs/graphql' + +@ObjectType() +export class VehiclesBulkMileageRegistrationRequestError { + @Field({ nullable: true }) + code?: string + + @Field({ nullable: true }) + message?: string +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestOverview.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestOverview.model.ts new file mode 100644 index 000000000000..56b6f18ed3d5 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestOverview.model.ts @@ -0,0 +1,8 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { VehiclesBulkMileageRegistrationRequestDetail } from './bulkMileageRegistrationRequestDetail.model' + +@ObjectType() +export class VehiclesBulkMileageRegistrationRequestOverview { + @Field(() => [VehiclesBulkMileageRegistrationRequestDetail]) + requests!: Array<VehiclesBulkMileageRegistrationRequestDetail> +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestStatus.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestStatus.model.ts new file mode 100644 index 000000000000..587fdf36f1ee --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/bulkMileage/bulkMileageRegistrationRequestStatus.model.ts @@ -0,0 +1,22 @@ +import { Field, ID, Int, ObjectType } from '@nestjs/graphql' + +@ObjectType() +export class VehiclesBulkMileageRegistrationRequestStatus { + @Field(() => ID) + requestId!: string + + @Field(() => Int, { nullable: true }) + jobsSubmitted?: number + + @Field(() => Int, { nullable: true }) + jobsFinished?: number + + @Field(() => Int, { nullable: true }) + jobsRemaining?: number + + @Field(() => Int, { nullable: true }) + jobsValid?: number + + @Field(() => Int, { nullable: true }) + jobsErrored?: number +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/currentVehicleListResponse.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/currentVehicleListResponse.model.ts new file mode 100644 index 000000000000..e1932c9b7c0d --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/currentVehicleListResponse.model.ts @@ -0,0 +1,20 @@ +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { VehicleCurrentWithMileage } from './currentVehicleWithMileage.model' + +@ObjectType() +export class VehiclesCurrentListResponse { + @Field(() => Int) + pageNumber!: number + + @Field(() => Int) + pageSize!: number + + @Field(() => Int) + totalPages!: number + + @Field(() => Int) + totalRecords!: number + + @Field(() => [VehicleCurrentWithMileage], { nullable: true }) + data?: Array<VehicleCurrentWithMileage> +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/currentVehicleWithMileage.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/currentVehicleWithMileage.model.ts new file mode 100644 index 000000000000..3884dd8d5be5 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/currentVehicleWithMileage.model.ts @@ -0,0 +1,23 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { MileageDetails } from './mileageDetails.model' + +@ObjectType() +export class VehicleCurrentWithMileage { + @Field() + vehicleId!: string + + @Field({ nullable: true }) + registrationNumber?: string + + @Field({ nullable: true }) + userRole?: string + + @Field({ nullable: true }) + type?: string + + @Field({ nullable: true }) + color?: string + + @Field(() => MileageDetails, { nullable: true }) + mileageDetails?: MileageDetails +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/mileageDetails.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/mileageDetails.model.ts new file mode 100644 index 000000000000..09053d9e25a0 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/mileageDetails.model.ts @@ -0,0 +1,14 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { MileageRegistrationHistory } from './mileageRegistrationHistory.model' + +@ObjectType('VehiclesMileageDetails') +export class MileageDetails { + @Field({ nullable: true }) + canRegisterMileage?: boolean + + @Field({ nullable: true }) + requiresMileageRegistration?: boolean + + @Field(() => MileageRegistrationHistory, { nullable: true }) + mileageRegistrations?: MileageRegistrationHistory +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/mileageRegistration.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/mileageRegistration.model.ts new file mode 100644 index 000000000000..1585acb1d381 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/mileageRegistration.model.ts @@ -0,0 +1,13 @@ +import { Field, GraphQLISODateTime, Int, ObjectType } from '@nestjs/graphql' + +@ObjectType('VehiclesMileageRegistration') +export class MileageRegistration { + @Field() + originCode!: string + + @Field(() => Int) + mileage!: number + + @Field(() => GraphQLISODateTime) + date!: Date +} diff --git a/libs/api/domains/vehicles/src/lib/models/v3/mileageRegistrationHistory.model.ts b/libs/api/domains/vehicles/src/lib/models/v3/mileageRegistrationHistory.model.ts new file mode 100644 index 000000000000..dde6de0404c5 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/models/v3/mileageRegistrationHistory.model.ts @@ -0,0 +1,14 @@ +import { Field, ObjectType } from '@nestjs/graphql' +import { MileageRegistration } from './mileageRegistration.model' + +@ObjectType('VehiclesMileageRegistrationHistory') +export class MileageRegistrationHistory { + @Field() + vehicleId!: string + + @Field(() => MileageRegistration, { nullable: true }) + lastMileageRegistration?: MileageRegistration + + @Field(() => [MileageRegistration], { nullable: true }) + mileageRegistrationHistory?: Array<MileageRegistration> +} diff --git a/libs/api/domains/vehicles/src/lib/resolvers/bulkMileage.resolver.ts b/libs/api/domains/vehicles/src/lib/resolvers/bulkMileage.resolver.ts new file mode 100644 index 000000000000..a551c3dc893a --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/resolvers/bulkMileage.resolver.ts @@ -0,0 +1,84 @@ +import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' +import { UseGuards } from '@nestjs/common' +import { + IdsUserGuard, + ScopesGuard, + Scopes, + CurrentUser, +} from '@island.is/auth-nest-tools' +import type { User } from '@island.is/auth-nest-tools' +import { ApiScope } from '@island.is/auth/scopes' +import { Audit } from '@island.is/nest/audit' +import { + FeatureFlagGuard, + FeatureFlag, + Features, +} from '@island.is/nest/feature-flags' +import { PostVehicleBulkMileageInput } from '../dto/postBulkVehicleMileage.input' +import { BulkMileageService } from '../services/bulkMileage.service' +import { VehiclesBulkMileageReadingResponse } from '../models/v3/bulkMileage/bulkMileageReadingResponse.model' +import { VehiclesBulkMileageRegistrationRequestOverview } from '../models/v3/bulkMileage/bulkMileageRegistrationRequestOverview.model' +import { VehiclesBulkMileageRegistrationJobHistory } from '../models/v3/bulkMileage/bulkMileageRegistrationJobHistory.model' +import { VehiclesBulkMileageRegistrationRequestStatus } from '../models/v3/bulkMileage/bulkMileageRegistrationRequestStatus.model' +import { BulkVehicleMileageRequestStatusInput } from '../dto/getBulkVehicleMileageRequestStatus.input' +import { BulkVehicleMileageRequestOverviewInput } from '../dto/getBulkVehicleMileageRequestOverview.input' + +@UseGuards(IdsUserGuard, ScopesGuard, FeatureFlagGuard) +@FeatureFlag(Features.servicePortalVehicleBulkMileagePageEnabled) +@Resolver() +@Audit({ namespace: '@island.is/api/vehicles' }) +@Scopes(ApiScope.vehicles) +export class VehiclesBulkMileageResolver { + constructor(private readonly bulkService: BulkMileageService) {} + + @Query(() => VehiclesBulkMileageRegistrationJobHistory, { + name: 'vehicleBulkMileageRegistrationJobHistory', + nullable: true, + }) + @Audit() + getVehicleMileageRegistrationJobHistory(@CurrentUser() user: User) { + return this.bulkService.getBulkMileageRegistrationJobHistory(user) + } + + @Query(() => VehiclesBulkMileageRegistrationRequestStatus, { + name: 'vehicleBulkMileageRegistrationRequestStatus', + nullable: true, + }) + @Audit() + getVehicleMileageRegistrationRequestStatus( + @CurrentUser() user: User, + @Args('input') input: BulkVehicleMileageRequestStatusInput, + ) { + return this.bulkService.getBulkMileageRegistrationRequestStatus( + user, + input.requestId, + ) + } + + @Query(() => VehiclesBulkMileageRegistrationRequestOverview, { + name: 'vehicleBulkMileageRegistrationRequestOverview', + nullable: true, + }) + @Audit() + getVehicleMileageRegistrationRequestOverview( + @CurrentUser() user: User, + @Args('input') input: BulkVehicleMileageRequestOverviewInput, + ) { + return this.bulkService.getBulkMileageRegistrationRequestOverview( + user, + input.guid, + ) + } + + @Mutation(() => VehiclesBulkMileageReadingResponse, { + name: 'vehicleBulkMileagePost', + nullable: true, + }) + @Audit() + postBulkMileageReading( + @Args('input') input: PostVehicleBulkMileageInput, + @CurrentUser() user: User, + ) { + return this.bulkService.postBulkMileageReading(user, input) + } +} diff --git a/libs/api/domains/vehicles/src/lib/api-domains-vehicles-mileage.resolver.ts b/libs/api/domains/vehicles/src/lib/resolvers/mileage.resolver.ts similarity index 90% rename from libs/api/domains/vehicles/src/lib/api-domains-vehicles-mileage.resolver.ts rename to libs/api/domains/vehicles/src/lib/resolvers/mileage.resolver.ts index c22385922c47..e2b3f7bf91ed 100644 --- a/libs/api/domains/vehicles/src/lib/api-domains-vehicles-mileage.resolver.ts +++ b/libs/api/domains/vehicles/src/lib/resolvers/mileage.resolver.ts @@ -7,7 +7,7 @@ import { ResolveField, Resolver, } from '@nestjs/graphql' -import { UseGuards } from '@nestjs/common' +import { Inject, UseGuards } from '@nestjs/common' import { IdsUserGuard, ScopesGuard, @@ -17,7 +17,7 @@ import { import type { User } from '@island.is/auth-nest-tools' import { ApiScope } from '@island.is/auth/scopes' import { Audit } from '@island.is/nest/audit' -import { VehiclesService } from './api-domains-vehicles.service' +import { VehiclesService } from '../services/vehicles.service' import { VehicleMileageDetail, VehicleMileageOverview, @@ -34,6 +34,7 @@ import { Features, } from '@island.is/nest/feature-flags' import { mileageDetailConstructor } from '../utils/helpers' +import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' @UseGuards(IdsUserGuard, ScopesGuard, FeatureFlagGuard) @FeatureFlag(Features.servicePortalVehicleMileagePageEnabled) @@ -41,7 +42,10 @@ import { mileageDetailConstructor } from '../utils/helpers' @Audit({ namespace: '@island.is/api/vehicles' }) @Scopes(ApiScope.vehicles) export class VehiclesMileageResolver { - constructor(private readonly vehiclesService: VehiclesService) {} + constructor( + private readonly vehiclesService: VehiclesService, + @Inject(LOGGER_PROVIDER) private readonly logger: Logger, + ) {} @Query(() => VehicleMileageOverview, { name: 'vehicleMileageDetails', @@ -88,7 +92,9 @@ export class VehiclesMileageResolver { mileage: Number(input.mileage ?? input.mileageNumber), }) - if (!res) return undefined + if (!res) { + return + } return mileageDetailConstructor(res) } diff --git a/libs/api/domains/vehicles/src/lib/api-domains-vehicles-shared.resolver.ts b/libs/api/domains/vehicles/src/lib/resolvers/shared.resolver.ts similarity index 95% rename from libs/api/domains/vehicles/src/lib/api-domains-vehicles-shared.resolver.ts rename to libs/api/domains/vehicles/src/lib/resolvers/shared.resolver.ts index 3feb413764ec..9b48d1f8f0c4 100644 --- a/libs/api/domains/vehicles/src/lib/api-domains-vehicles-shared.resolver.ts +++ b/libs/api/domains/vehicles/src/lib/resolvers/shared.resolver.ts @@ -4,7 +4,7 @@ import type { Logger } from '@island.is/logging' import { IdsUserGuard, ScopesGuard } from '@island.is/auth-nest-tools' import type { User } from '@island.is/auth-nest-tools' import { Audit } from '@island.is/nest/audit' -import { VehiclesService } from './api-domains-vehicles.service' +import { VehiclesService } from '../services/vehicles.service' import { VehicleMileageDetail } from '../models/getVehicleMileage.model' import { VehiclesDetail } from '../models/getVehicleDetail.model' import { LOGGER_PROVIDER } from '@island.is/logging' diff --git a/libs/api/domains/vehicles/src/lib/resolvers/vehicleV3.resolver.ts b/libs/api/domains/vehicles/src/lib/resolvers/vehicleV3.resolver.ts new file mode 100644 index 000000000000..6b90138ec10d --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/resolvers/vehicleV3.resolver.ts @@ -0,0 +1,48 @@ +import { Args, Query, Resolver } from '@nestjs/graphql' +import { UseGuards } from '@nestjs/common' +import { + IdsUserGuard, + ScopesGuard, + Scopes, + CurrentUser, +} from '@island.is/auth-nest-tools' +import type { User } from '@island.is/auth-nest-tools' +import { ApiScope } from '@island.is/auth/scopes' +import { Audit } from '@island.is/nest/audit' +import { VehiclesService } from '../services/vehicles.service' +import { VehiclesCurrentListResponse } from '../models/v3/currentVehicleListResponse.model' +import { VehiclesListInputV3 } from '../dto/vehiclesListInputV3' +import { MileageRegistrationHistory } from '../models/v3/mileageRegistrationHistory.model' +import { GetVehicleMileageInput } from '../dto/getVehicleMileageInput' + +@UseGuards(IdsUserGuard, ScopesGuard) +@Resolver(() => VehiclesCurrentListResponse) +@Audit({ namespace: '@island.is/api/vehicles' }) +export class VehiclesV3Resolver { + constructor(private readonly vehiclesService: VehiclesService) {} + + @Scopes(ApiScope.vehicles) + @Query(() => VehiclesCurrentListResponse, { + name: 'vehiclesListV3', + nullable: true, + }) + @Audit() + async getVehicleListV3( + @CurrentUser() user: User, + @Args('input', { nullable: true }) input: VehiclesListInputV3, + ) { + return this.vehiclesService.getVehiclesListV3(user, input) + } + @Scopes(ApiScope.vehicles) + @Query(() => MileageRegistrationHistory, { + name: 'vehiclesMileageRegistrationHistory', + nullable: true, + }) + @Audit() + async vehicleMileageRegistrations( + @CurrentUser() user: User, + @Args('input', { nullable: true }) input: GetVehicleMileageInput, + ) { + return this.vehiclesService.getVehicleMileageHistory(user, input) + } +} diff --git a/libs/api/domains/vehicles/src/lib/api-domains-vehicles.resolver.ts b/libs/api/domains/vehicles/src/lib/resolvers/vehicles.resolver.ts similarity index 98% rename from libs/api/domains/vehicles/src/lib/api-domains-vehicles.resolver.ts rename to libs/api/domains/vehicles/src/lib/resolvers/vehicles.resolver.ts index 2998706d4684..2a92af484ca2 100644 --- a/libs/api/domains/vehicles/src/lib/api-domains-vehicles.resolver.ts +++ b/libs/api/domains/vehicles/src/lib/resolvers/vehicles.resolver.ts @@ -15,7 +15,6 @@ import { Audit } from '@island.is/nest/audit' import { DownloadServiceConfig } from '@island.is/nest/config' import type { ConfigType } from '@island.is/nest/config' import { VehiclesList, VehiclesListV2 } from '../models/usersVehicles.model' -import { VehiclesService } from './api-domains-vehicles.service' import { GetVehicleDetailInput } from '../dto/getVehicleDetailInput' import { VehiclesDetail, VehiclesExcel } from '../models/getVehicleDetail.model' import { VehiclesVehicleSearch } from '../models/getVehicleSearch.model' @@ -26,6 +25,7 @@ import { GetVehiclesListV2Input, } from '../dto/getVehiclesForUserInput' import { GetVehicleSearchInput } from '../dto/getVehicleSearchInput' +import { VehiclesService } from '../services/vehicles.service' const defaultCache: CacheControlOptions = { maxAge: CACHE_CONTROL_MAX_AGE } diff --git a/libs/api/domains/vehicles/src/lib/services/bulkMileage.service.ts b/libs/api/domains/vehicles/src/lib/services/bulkMileage.service.ts new file mode 100644 index 000000000000..72743c79f0ad --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/services/bulkMileage.service.ts @@ -0,0 +1,143 @@ +import { Inject, Injectable } from '@nestjs/common' +import { + BulkMileageReadingRequestResultDto, + GetbulkmileagereadingrequeststatusGuidGetRequest, + MileageReadingApi, +} from '@island.is/clients/vehicles-mileage' +import { AuthMiddleware } from '@island.is/auth-nest-tools' +import type { Auth, User } from '@island.is/auth-nest-tools' +import { PostVehicleBulkMileageInput } from '../dto/postBulkVehicleMileage.input' +import { isDefined } from '@island.is/shared/utils' +import { LOG_CATEGORY } from '../constants' +import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' +import { VehiclesBulkMileageReadingResponse } from '../models/v3/bulkMileage/bulkMileageReadingResponse.model' +import { VehiclesBulkMileageRegistrationJobHistory } from '../models/v3/bulkMileage/bulkMileageRegistrationJobHistory.model' +import { VehiclesBulkMileageRegistrationRequestStatus } from '../models/v3/bulkMileage/bulkMileageRegistrationRequestStatus.model' +import { VehiclesBulkMileageRegistrationRequestOverview } from '../models/v3/bulkMileage/bulkMileageRegistrationRequestOverview.model' + +@Injectable() +export class BulkMileageService { + constructor( + private mileageReadingApi: MileageReadingApi, + @Inject(LOGGER_PROVIDER) private readonly logger: Logger, + ) {} + + private getMileageWithAuth(auth: Auth) { + return this.mileageReadingApi.withMiddleware(new AuthMiddleware(auth)) + } + + async postBulkMileageReading( + auth: User, + input: PostVehicleBulkMileageInput, + ): Promise<VehiclesBulkMileageReadingResponse | null> { + if (!input) { + return null + } + + const res: BulkMileageReadingRequestResultDto = + await this.getMileageWithAuth(auth).requestbulkmileagereadingPost({ + postBulkMileageReadingModel: { + originCode: input.originCode, + mileageData: input.mileageData.map((m) => ({ + permno: m.vehicleId, + mileage: m.mileageNumber, + })), + }, + }) + + if (!res.guid) { + this.logger.warn( + 'Missing guid from bulk mileage reading registration response', + { + category: LOG_CATEGORY, + }, + ) + return null + } + + return { + requestId: res.guid, + errorMessage: res.errorMessage ?? undefined, + } + } + + async getBulkMileageRegistrationJobHistory( + auth: User, + ): Promise<VehiclesBulkMileageRegistrationJobHistory> { + const res = await this.getMileageWithAuth( + auth, + ).getbulkmileagereadingrequestsGet({}) + + return { + history: res + .map((r) => { + if (!r.guid) { + return null + } + + return { + guid: r.guid, + reportingPersonNationalId: r.reportingPersidno ?? undefined, + reportingPersonName: r.reportingPersidnoName ?? undefined, + originCode: r.originCode ?? undefined, + originName: r.originName ?? undefined, + dateRequested: r.dateInserted ?? undefined, + dateStarted: r.dateStarted ?? undefined, + dateFinished: r.dateFinished ?? undefined, + } + }) + .filter(isDefined), + } + } + + async getBulkMileageRegistrationRequestStatus( + auth: User, + input: GetbulkmileagereadingrequeststatusGuidGetRequest['guid'], + ): Promise<VehiclesBulkMileageRegistrationRequestStatus | null> { + const data = await this.getMileageWithAuth( + auth, + ).getbulkmileagereadingrequeststatusGuidGet({ guid: input }) + + if (!data.guid) { + return null + } + + return { + requestId: data.guid, + jobsSubmitted: data.totalVehicles ?? undefined, + jobsFinished: data.done ?? undefined, + jobsRemaining: data.remaining ?? undefined, + jobsValid: data.processOk ?? undefined, + jobsErrored: data.processWithErrors ?? undefined, + } + } + + async getBulkMileageRegistrationRequestOverview( + auth: User, + input: GetbulkmileagereadingrequeststatusGuidGetRequest['guid'], + ): Promise<VehiclesBulkMileageRegistrationRequestOverview> { + const data = await this.getMileageWithAuth( + auth, + ).getbulkmileagereadingrequestdetailsGuidGet({ guid: input }) + + return { + requests: data + .map((d) => { + if (!d.guid || !d.permno) { + return null + } + return { + guid: d.guid, + vehicleId: d.permno, + mileage: d.mileage ?? undefined, + returnCode: d.returnCode ?? undefined, + errors: d.errors?.map((e) => ({ + code: e.errorCode ?? undefined, + message: e.errorText ?? undefined, + })), + } + }) + .filter(isDefined), + } + } +} diff --git a/libs/api/domains/vehicles/src/lib/api-domains-vehicles.service.ts b/libs/api/domains/vehicles/src/lib/services/vehicles.service.ts similarity index 72% rename from libs/api/domains/vehicles/src/lib/api-domains-vehicles.service.ts rename to libs/api/domains/vehicles/src/lib/services/vehicles.service.ts index cf7085d25cde..19b304517287 100644 --- a/libs/api/domains/vehicles/src/lib/api-domains-vehicles.service.ts +++ b/libs/api/domains/vehicles/src/lib/services/vehicles.service.ts @@ -9,7 +9,6 @@ import { BasicVehicleInformationGetRequest, PublicVehicleSearchApi, VehicleDtoListPagedResponse, - VehicleSearchDto, PersidnoLookupResultDto, CurrentVehiclesWithMilageAndNextInspDtoListPagedResponse, } from '@island.is/clients/vehicles' @@ -17,8 +16,8 @@ import { CanregistermileagePermnoGetRequest, GetMileageReadingRequest, MileageReadingApi, + MileageReadingDto, PostMileageReadingModel, - PutMileageReadingModel, RequiresmileageregistrationPermnoGetRequest, RootPostRequest, RootPutRequest, @@ -38,6 +37,13 @@ import { VehicleMileageOverview } from '../models/getVehicleMileage.model' import isSameDay from 'date-fns/isSameDay' import { mileageDetailConstructor } from '../utils/helpers' import { handle404 } from '@island.is/clients/middlewares' +import { VehicleSearchCustomDto } from '../vehicles.type' +import { operatorStatusMapper } from '../utils/operatorStatusMapper' +import { VehiclesListInputV3 } from '../dto/vehiclesListInputV3' +import { VehiclesCurrentListResponse } from '../models/v3/currentVehicleListResponse.model' +import { isDefined } from '@island.is/shared/utils' +import { GetVehicleMileageInput } from '../dto/getVehicleMileageInput' +import { MileageRegistrationHistory } from '../models/v3/mileageRegistrationHistory.model' const ORIGIN_CODE = 'ISLAND.IS' const LOG_CATEGORY = 'vehicle-service' @@ -93,6 +99,57 @@ export class VehiclesService { }) } + async getVehiclesListV3( + auth: User, + input: VehiclesListInputV3, + ): Promise<VehiclesCurrentListResponse | null> { + const res = await this.getVehiclesWithAuth( + auth, + ).currentvehicleswithmileageandinspGet({ + showCoowned: true, + showOperated: true, + showOwned: true, + page: input.page, + pageSize: input.pageSize, + }) + + if ( + !res.pageNumber || + !res.pageSize || + !res.totalPages || + !res.totalRecords + ) { + return null + } + + return { + pageNumber: res.pageNumber, + pageSize: res.pageSize, + totalPages: res.totalPages, + totalRecords: res.totalRecords, + data: + res.data + ?.map((d) => { + if (!d.permno || !d.regno) { + return null + } + return { + vehicleId: d.permno, + registrationNumber: d.regno, + userRole: d.role ?? undefined, + type: d.make ?? undefined, + color: d.colorName ?? undefined, + mileageDetails: { + canRegisterMileage: d.canRegisterMilage ?? undefined, + requiresMileageRegistration: + d.requiresMileageRegistration ?? undefined, + }, + } + }) + .filter(isDefined) ?? [], + } + } + async getVehiclesForUser( auth: User, input: GetVehiclesForUserInput, @@ -241,13 +298,32 @@ export class VehiclesService { async getVehiclesSearch( auth: User, search: string, - ): Promise<VehicleSearchDto | null> { + ): Promise<VehicleSearchCustomDto | null> { const res = await this.getVehiclesWithAuth(auth).vehicleSearchGet({ search, }) const { data } = res - if (!data) return null - return data[0] + if (!data || !data.length) return null + + const vehicle = data[0] + + const operatorNames = vehicle.operators + ?.map((operator) => operator.fullname) + .filter(isDefined) + + const operatorAnonymityStatus = operatorStatusMapper( + operatorNames, + !!vehicle.allOperatorsAreAnonymous, + !!vehicle.someOperatorsAreAnonymous, + ) + + return { + ...data[0], + + operatorNames: + operatorNames && operatorNames.length ? operatorNames : undefined, + operatorAnonymityStatus, + } } async getVehicleMileage( @@ -286,6 +362,52 @@ export class VehiclesService { } } + async getVehicleMileageHistory( + auth: User, + input: GetVehicleMileageInput, + ): Promise<MileageRegistrationHistory | null> { + const res = await this.getMileageWithAuth(auth).getMileageReading({ + permno: input.permno, + }) + + const [lastRegistration, ...history] = res + + if (!lastRegistration.permno) { + return null + } + + return { + vehicleId: lastRegistration.permno, + lastMileageRegistration: + lastRegistration.originCode && + lastRegistration.readDate && + lastRegistration.mileage + ? { + originCode: lastRegistration.originCode, + mileage: lastRegistration.mileage, + date: lastRegistration.readDate, + } + : undefined, + mileageRegistrationHistory: history?.length + ? history + .map((h) => { + if (h.permno !== lastRegistration.permno) { + return null + } + if (!h.originCode || !h.mileage || !h.readDate) { + return null + } + return { + originCode: h.originCode, + mileage: h.mileage, + date: h.readDate, + } + }) + .filter(isDefined) + : undefined, + } + } + async postMileageReading( auth: User, input: RootPostRequest['postMileageReadingModel'], @@ -304,17 +426,24 @@ export class VehiclesService { throw new ForbiddenException(UNAUTHORIZED_OWNERSHIP_LOG) } - const res = await this.getMileageWithAuth(auth).rootPost({ + const res = await this.getMileageWithAuth(auth).rootPostRaw({ postMileageReadingModel: input, }) - return res + if (res.raw.status === 200) { + this.logger.info( + 'Tried to post already existing mileage reading. Should use PUT', + ) + return null + } + + return res.value() } async putMileageReading( auth: User, input: RootPutRequest['putMileageReadingModel'], - ): Promise<PutMileageReadingModel | null> { + ): Promise<MileageReadingDto | null> { if (!input) return null const isAllowed = await this.isAllowedMileageRegistration( @@ -329,10 +458,9 @@ export class VehiclesService { throw new ForbiddenException(UNAUTHORIZED_OWNERSHIP_LOG) } - const res = await this.getMileageWithAuth(auth).rootPut({ + return this.getMileageWithAuth(auth).rootPut({ putMileageReadingModel: input, }) - return res } async canRegisterMileage( diff --git a/libs/api/domains/vehicles/src/utils/basicVehicleInformationMapper.ts b/libs/api/domains/vehicles/src/lib/utils/basicVehicleInformationMapper.ts similarity index 100% rename from libs/api/domains/vehicles/src/utils/basicVehicleInformationMapper.ts rename to libs/api/domains/vehicles/src/lib/utils/basicVehicleInformationMapper.ts diff --git a/libs/api/domains/vehicles/src/utils/helpers.ts b/libs/api/domains/vehicles/src/lib/utils/helpers.ts similarity index 100% rename from libs/api/domains/vehicles/src/utils/helpers.ts rename to libs/api/domains/vehicles/src/lib/utils/helpers.ts diff --git a/libs/api/domains/vehicles/src/lib/utils/operatorStatusMapper.ts b/libs/api/domains/vehicles/src/lib/utils/operatorStatusMapper.ts new file mode 100644 index 000000000000..c3ad28377735 --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/utils/operatorStatusMapper.ts @@ -0,0 +1,17 @@ +import { OperatorAnonymityStatus } from '../models/getVehicleSearch.model' + +export const operatorStatusMapper = ( + names: string[] | undefined | null, + allOperatorsAreAnonymous: boolean, + someOperatorsAreAnonymous: boolean, +): OperatorAnonymityStatus => { + if (allOperatorsAreAnonymous) { + return OperatorAnonymityStatus.ALL + } + + if (someOperatorsAreAnonymous && names?.length) { + return OperatorAnonymityStatus.SOME + } + + return OperatorAnonymityStatus.UNKNOWN +} diff --git a/libs/api/domains/vehicles/src/lib/api-domains-vehicles.module.ts b/libs/api/domains/vehicles/src/lib/vehicles.module.ts similarity index 52% rename from libs/api/domains/vehicles/src/lib/api-domains-vehicles.module.ts rename to libs/api/domains/vehicles/src/lib/vehicles.module.ts index 49874c35352a..3fcb00edafd3 100644 --- a/libs/api/domains/vehicles/src/lib/api-domains-vehicles.module.ts +++ b/libs/api/domains/vehicles/src/lib/vehicles.module.ts @@ -2,19 +2,25 @@ import { Module } from '@nestjs/common' import { VehiclesClientModule } from '@island.is/clients/vehicles' import { VehiclesMileageClientModule } from '@island.is/clients/vehicles-mileage' -import { VehiclesResolver } from './api-domains-vehicles.resolver' -import { VehiclesMileageResolver } from './api-domains-vehicles-mileage.resolver' -import { VehiclesService } from './api-domains-vehicles.service' +import { VehiclesResolver } from './resolvers/vehicles.resolver' +import { VehiclesMileageResolver } from './resolvers/mileage.resolver' +import { VehiclesService } from './services/vehicles.service' import { AuthModule } from '@island.is/auth-nest-tools' -import { VehiclesSharedResolver } from './api-domains-vehicles-shared.resolver' +import { VehiclesSharedResolver } from './resolvers/shared.resolver' import { FeatureFlagModule } from '@island.is/nest/feature-flags' +import { BulkMileageService } from './services/bulkMileage.service' +import { VehiclesV3Resolver } from './resolvers/vehicleV3.resolver' +import { VehiclesBulkMileageResolver } from './resolvers/bulkMileage.resolver' @Module({ providers: [ VehiclesResolver, VehiclesSharedResolver, VehiclesMileageResolver, + VehiclesBulkMileageResolver, + VehiclesV3Resolver, VehiclesService, + BulkMileageService, ], imports: [ VehiclesClientModule, diff --git a/libs/api/domains/vehicles/src/lib/vehicles.type.ts b/libs/api/domains/vehicles/src/lib/vehicles.type.ts new file mode 100644 index 000000000000..7efe35adfd7f --- /dev/null +++ b/libs/api/domains/vehicles/src/lib/vehicles.type.ts @@ -0,0 +1,11 @@ +import { VehicleSearchDto } from '@island.is/clients/vehicles' +import { OperatorAnonymityStatus } from './models/getVehicleSearch.model' + +export interface VehicleSearchOperatorDto { + operatorNames?: Array<string> | null + operatorAnonymityStatus?: OperatorAnonymityStatus +} + +export interface VehicleSearchCustomDto + extends VehicleSearchDto, + VehicleSearchOperatorDto {} diff --git a/libs/api/domains/work-machines/src/lib/dto/getMachineParentCategoryByTypeAndModel.input.ts b/libs/api/domains/work-machines/src/lib/dto/getMachineParentCategoryByTypeAndModel.input.ts new file mode 100644 index 000000000000..daa292a10a00 --- /dev/null +++ b/libs/api/domains/work-machines/src/lib/dto/getMachineParentCategoryByTypeAndModel.input.ts @@ -0,0 +1,13 @@ +import { Field, InputType } from '@nestjs/graphql' +import { IsString } from 'class-validator' + +@InputType('WorkMachinesParentCategoryByTypeAndModelInput') +export class GetMachineParentCategoryByTypeAndModelInput { + @Field() + @IsString() + type!: string + + @Field() + @IsString() + model!: string +} diff --git a/libs/api/domains/work-machines/src/lib/models/category.ts b/libs/api/domains/work-machines/src/lib/models/category.ts new file mode 100644 index 000000000000..a2e6b804168b --- /dev/null +++ b/libs/api/domains/work-machines/src/lib/models/category.ts @@ -0,0 +1,19 @@ +import { ObjectType, Field } from '@nestjs/graphql' + +@ObjectType('WorkMachinesCategory') +export class Category { + @Field(() => String, { nullable: true }) + name?: string | null + + @Field(() => String, { nullable: true }) + nameEn?: string | null + + @Field(() => String, { nullable: true }) + subCategoryName?: string | null + + @Field(() => String, { nullable: true }) + subCategoryNameEn?: string | null + + @Field(() => String, { nullable: true }) + registrationNumberPrefix?: string | null +} diff --git a/libs/api/domains/work-machines/src/lib/models/getWorkMachines.ts b/libs/api/domains/work-machines/src/lib/models/getWorkMachines.ts index 15c38882cb06..0a907fc9d8e4 100644 --- a/libs/api/domains/work-machines/src/lib/models/getWorkMachines.ts +++ b/libs/api/domains/work-machines/src/lib/models/getWorkMachines.ts @@ -1,4 +1,10 @@ -import { Field, ID, ObjectType, registerEnumType } from '@nestjs/graphql' +import { + Field, + GraphQLISODateTime, + ID, + ObjectType, + registerEnumType, +} from '@nestjs/graphql' import { Action, ExternalLink } from '../workMachines.types' import { PaginatedResponse } from '@island.is/nest/pagination' @@ -24,8 +30,8 @@ export class WorkMachine { @Field(() => String, { nullable: true }) subCategory?: string | null - @Field(() => String, { nullable: true }) - dateLastInspection?: string | null + @Field(() => GraphQLISODateTime, { nullable: true }) + dateLastInspection?: Date @Field(() => String, { nullable: true }) registrationNumber?: string | null diff --git a/libs/api/domains/work-machines/src/lib/models/model.ts b/libs/api/domains/work-machines/src/lib/models/model.ts new file mode 100644 index 000000000000..6082c64e4789 --- /dev/null +++ b/libs/api/domains/work-machines/src/lib/models/model.ts @@ -0,0 +1,7 @@ +import { ObjectType, Field } from '@nestjs/graphql' + +@ObjectType('WorkMachinesModel') +export class Model { + @Field(() => String, { nullable: true }) + name?: string | null +} diff --git a/libs/api/domains/work-machines/src/lib/models/subCategory.ts b/libs/api/domains/work-machines/src/lib/models/subCategory.ts new file mode 100644 index 000000000000..097827cea994 --- /dev/null +++ b/libs/api/domains/work-machines/src/lib/models/subCategory.ts @@ -0,0 +1,19 @@ +import { ObjectType, Field } from '@nestjs/graphql' + +@ObjectType('WorkMachinesSubCategory') +export class SubCategory { + @Field(() => String, { nullable: true }) + name?: string | null + + @Field(() => String, { nullable: true }) + nameEn?: string | null + + @Field(() => String, { nullable: true }) + parentCategoryName?: string | null + + @Field(() => String, { nullable: true }) + parentCategoryNameEn?: string | null + + @Field(() => String, { nullable: true }) + registrationNumberPrefix?: string | null +} diff --git a/libs/api/domains/work-machines/src/lib/models/techInfoItem.ts b/libs/api/domains/work-machines/src/lib/models/techInfoItem.ts new file mode 100644 index 000000000000..9930e7090c87 --- /dev/null +++ b/libs/api/domains/work-machines/src/lib/models/techInfoItem.ts @@ -0,0 +1,34 @@ +import { ObjectType, Field } from '@nestjs/graphql' + +@ObjectType('WorkMachinesTechInfoItem') +export class TechInfoItem { + @Field(() => String, { nullable: true }) + variableName?: string | null + + @Field(() => String, { nullable: true }) + label?: string | null + + @Field(() => String, { nullable: true }) + labelEn?: string | null + + @Field(() => String, { nullable: true }) + type?: string | null + + @Field(() => Boolean, { nullable: true }) + required?: boolean | null + + @Field(() => String, { nullable: true }) + maxLength?: string | null + + @Field(() => [TechInfoListItem], { nullable: true }) + values?: Array<TechInfoListItem> | null +} + +@ObjectType('WorkMachinesTechInfoListItem') +export class TechInfoListItem { + @Field(() => String, { nullable: true }) + name?: string | null + + @Field(() => String, { nullable: true }) + nameEn?: string | null +} diff --git a/libs/api/domains/work-machines/src/lib/workMachines.resolver.ts b/libs/api/domains/work-machines/src/lib/workMachines.resolver.ts index 4450e25ea384..6458e839a70c 100644 --- a/libs/api/domains/work-machines/src/lib/workMachines.resolver.ts +++ b/libs/api/domains/work-machines/src/lib/workMachines.resolver.ts @@ -28,6 +28,11 @@ import { Features, } from '@island.is/nest/feature-flags' import { MachineDetails } from './models/machineDetails' +import { Model } from './models/model' +import { GetMachineParentCategoryByTypeAndModelInput } from './dto/getMachineParentCategoryByTypeAndModel.input' +import { Category } from './models/category' +import { SubCategory } from './models/subCategory' +import { TechInfoItem } from './models/techInfoItem' @UseGuards(IdsUserGuard, ScopesGuard, FeatureFlagGuard) @Resolver() @@ -129,4 +134,55 @@ export class WorkMachinesResolver { ) { return this.workMachinesService.getMachineByRegno(auth, regno, rel) } + + @Scopes(ApiScope.vinnueftirlitid) + @Query(() => [Model]) + @Audit() + async getMachineModels( + @CurrentUser() auth: User, + @Args('type') type: string, + ) { + return this.workMachinesService.getMachineModels(auth, type) + } + + @Scopes(ApiScope.vinnueftirlitid) + @Query(() => [Category]) + @Audit() + async getMachineParentCategoryByTypeAndModel( + @CurrentUser() auth: User, + @Args('input') input: GetMachineParentCategoryByTypeAndModelInput, + ) { + return this.workMachinesService.getMachineParentCategoriesTypeModelGet( + auth, + input, + ) + } + + @Scopes(ApiScope.vinnueftirlitid) + @Query(() => [SubCategory]) + @Audit() + async getMachineSubCategories( + @CurrentUser() auth: User, + @Args('parentCategory') parentCategory: string, + ) { + return this.workMachinesService.getMachineSubCategories( + auth, + parentCategory, + ) + } + + @Scopes(ApiScope.vinnueftirlitid) + @Query(() => [TechInfoItem]) + @Audit() + async getTechnicalInfoInputs( + @CurrentUser() auth: User, + @Args('parentCategory') parentCategory: string, + @Args('subCategory') subCategory: string, + ) { + return this.workMachinesService.getTechnicalInfoInputs( + auth, + parentCategory, + subCategory, + ) + } } diff --git a/libs/api/domains/work-machines/src/lib/workMachines.service.ts b/libs/api/domains/work-machines/src/lib/workMachines.service.ts index 2f99dabd9755..2d1e083697d4 100644 --- a/libs/api/domains/work-machines/src/lib/workMachines.service.ts +++ b/libs/api/domains/work-machines/src/lib/workMachines.service.ts @@ -1,4 +1,11 @@ -import { WorkMachinesClientService } from '@island.is/clients/work-machines' +import { + MachineModelDto, + MachineParentCategoryDetailsDto, + MachineSubCategoryDto, + TechInfoItemDto, + WorkMachinesClientService, +} from '@island.is/clients/work-machines' +import { isDefined } from '@island.is/shared/utils' import { User } from '@island.is/auth-nest-tools' import { WorkMachine, @@ -12,6 +19,9 @@ import { GetDocumentsInput } from './dto/getDocuments.input' import type { Logger } from '@island.is/logging' import { LOGGER_PROVIDER } from '@island.is/logging' import { MachineDto } from '@island.is/clients/work-machines' +import { GetMachineParentCategoryByTypeAndModelInput } from './dto/getMachineParentCategoryByTypeAndModel.input' +import isValid from 'date-fns/isValid' + @Injectable() export class WorkMachinesService { constructor( @@ -68,14 +78,22 @@ export class WorkMachinesService { ) } - const value = data.value?.map( - (v) => - ({ - ...v, - ownerName: v.owner, - supervisorName: v.supervisor, - } as WorkMachine), - ) as Array<WorkMachine> + const workMachines: Array<WorkMachine> = + data.value + ?.map((v) => { + const inspectionDate = v.dateLastInspection + ? new Date(v.dateLastInspection) + : undefined + return { + ...v, + dateLastInspection: isValid(inspectionDate) + ? inspectionDate + : undefined, + ownerName: v.owner, + supervisorName: v.supervisor, + } + }) + .filter(isDefined) ?? [] const links = data.links?.length ? data.links.map((l) => { @@ -87,7 +105,7 @@ export class WorkMachinesService { : null return { - data: value, + data: workMachines, links, labels: data.labels, totalCount: data.pagination?.totalCount ?? 0, @@ -123,8 +141,13 @@ export class WorkMachinesService { }) : null + const inspectionDate = data.dateLastInspection + ? new Date(data.dateLastInspection) + : undefined + return { ...data, + dateLastInspection: isValid(inspectionDate) ? inspectionDate : undefined, links, } } @@ -145,7 +168,9 @@ export class WorkMachinesService { regNumber: string, rel: string, ): Promise<MachineDto> { - return this.machineService.getMachineByRegno(auth, regNumber, rel) + return this.machineService.getMachineByRegno(auth, regNumber, rel, { + showDeregisteredMachines: true, + }) } async isPaymentRequired(auth: User, regNumber: string): Promise<boolean> { @@ -153,4 +178,36 @@ export class WorkMachinesService { (await this.machineService.isPaymentRequired(auth, regNumber)) || false ) } + + async getMachineModels(auth: User, type: string): Promise<MachineModelDto[]> { + return this.machineService.getMachineModels(auth, { tegund: type }) + } + + async getMachineParentCategoriesTypeModelGet( + auth: User, + input: GetMachineParentCategoryByTypeAndModelInput, + ): Promise<MachineParentCategoryDetailsDto[]> { + return this.machineService.getMachineParentCategoriesTypeModel(auth, { + type: input.type, + model: input.model, + }) + } + + async getMachineSubCategories( + auth: User, + parentCategory: string, + ): Promise<MachineSubCategoryDto[]> { + return this.machineService.getMachineSubCategories(auth, { parentCategory }) + } + + async getTechnicalInfoInputs( + auth: User, + parentCategory: string, + subCategory: string, + ): Promise<TechInfoItemDto[]> { + return this.machineService.getTechnicalInfoInputs(auth, { + parentCategory, + subCategory, + }) + } } diff --git a/libs/api/mocks/src/domains/auth/factories.ts b/libs/api/mocks/src/domains/auth/factories.ts index 4b3ddd9f4c47..10c83b76edb0 100644 --- a/libs/api/mocks/src/domains/auth/factories.ts +++ b/libs/api/mocks/src/domains/auth/factories.ts @@ -44,6 +44,11 @@ export const customDelegation = factory<AuthCustomDelegation>({ name: faker.name.findName(), type: 'Person', }), + createdBy: () => ({ + nationalId: createNationalId('person'), + name: faker.name.findName(), + type: 'Person', + }), type: 'Custom', provider: 'delegationdb', scopes: () => delegationScope.list(5), diff --git a/libs/application/api/core/src/lib/application/application.service.ts b/libs/application/api/core/src/lib/application/application.service.ts index b55415927be0..194a1bf50dfe 100644 --- a/libs/application/api/core/src/lib/application/application.service.ts +++ b/libs/application/api/core/src/lib/application/application.service.ts @@ -299,6 +299,7 @@ export class ApplicationService { | 'applicantActors' | 'draftTotalSteps' | 'draftFinishedSteps' + | 'pruneAt' > >, ) { diff --git a/libs/application/api/files/src/lib/file.service.spec.ts b/libs/application/api/files/src/lib/file.service.spec.ts index 3d73ecf13ce8..506bd5efd3a5 100644 --- a/libs/application/api/files/src/lib/file.service.spec.ts +++ b/libs/application/api/files/src/lib/file.service.spec.ts @@ -5,7 +5,7 @@ import { signingModuleConfig, SigningService, } from '@island.is/dokobit-signing' -import { AwsService } from '@island.is/nest/aws' +import { AwsModule, AwsService } from '@island.is/nest/aws' import * as pdf from './pdfGenerators' import { Application } from '@island.is/application/api/core' import { ApplicationTypes, PdfTypes } from '@island.is/application/types' @@ -13,7 +13,6 @@ import { LoggingModule } from '@island.is/logging' import { NotFoundException } from '@nestjs/common' import { defineConfig, ConfigModule } from '@island.is/nest/config' import { FileStorageConfig } from '@island.is/file-storage' -import { GetObjectCommandOutput } from '@aws-sdk/client-s3' describe('FileService', () => { let service: FileService @@ -116,6 +115,7 @@ describe('FileService', () => { imports: [ LoggingModule, SigningModule, + AwsModule, ConfigModule.forRoot({ isGlobal: true, load: [ @@ -125,17 +125,14 @@ describe('FileService', () => { ], }), ], - providers: [FileService, AwsService], + providers: [FileService], }).compile() awsService = module.get(AwsService) - jest.spyOn(awsService, 'getFile').mockImplementation( - async () => - ({ - Body: { transformToString: () => 'body' }, - } as unknown as GetObjectCommandOutput), - ) + jest + .spyOn(awsService, 'getFileContent') + .mockImplementation(() => Promise.resolve('body')) jest.spyOn(awsService, 'fileExists').mockResolvedValue(false) @@ -178,8 +175,7 @@ describe('FileService', () => { expect(awsService.uploadFile).toHaveBeenCalledWith( Buffer.from('buffer'), - bucket, - fileName, + { bucket, key: fileName }, { ContentEncoding: 'base64', ContentDisposition: 'inline', @@ -187,7 +183,10 @@ describe('FileService', () => { }, ) - expect(awsService.getPresignedUrl).toHaveBeenCalledWith(bucket, fileName) + expect(awsService.getPresignedUrl).toHaveBeenCalledWith({ + bucket: bucket, + key: fileName, + }) expect(response).toEqual('url') }) @@ -199,11 +198,10 @@ describe('FileService', () => { PdfTypes.CHILDREN_RESIDENCE_CHANGE, ) - expect(awsService.getFile).toHaveBeenCalledWith({ - bucket: bucket, - fileName: `children-residence-change/${application.id}.pdf`, - encoding: 'binary', - }) + expect(awsService.getFileContent).toHaveBeenCalledWith( + { bucket, key: `children-residence-change/${application.id}.pdf` }, + 'binary', + ) expect(signingService.requestSignature).toHaveBeenCalledWith( parentAWithContactInfo.phoneNumber, @@ -225,12 +223,9 @@ describe('FileService', () => { it('should throw error for request file signature since file content is missing', async () => { const application = createApplication() - jest.spyOn(awsService, 'getFile').mockImplementation( - async () => - ({ - Body: { transformToString: () => '' }, - } as unknown as GetObjectCommandOutput), - ) + jest + .spyOn(awsService, 'getFileContent') + .mockImplementation(() => Promise.resolve('')) const act = async () => await service.requestFileSignature( @@ -240,11 +235,10 @@ describe('FileService', () => { await expect(act).rejects.toThrowError(NotFoundException) - expect(awsService.getFile).toHaveBeenCalledWith({ - bucket: bucket, - fileName: `children-residence-change/${applicationId}.pdf`, - encoding: 'binary', - }) + expect(awsService.getFileContent).toHaveBeenCalledWith( + { bucket: bucket, key: `children-residence-change/${applicationId}.pdf` }, + 'binary', + ) expect(signingService.requestSignature).not.toHaveBeenCalled() }) @@ -277,7 +271,10 @@ describe('FileService', () => { PdfTypes.CHILDREN_RESIDENCE_CHANGE, ) - expect(awsService.getPresignedUrl).toHaveBeenCalledWith(bucket, fileName) + expect(awsService.getPresignedUrl).toHaveBeenCalledWith({ + bucket, + key: fileName, + }) expect(result).toEqual('url') }) @@ -306,8 +303,6 @@ describe('FileService', () => { PdfTypes.CHILDREN_RESIDENCE_CHANGE, ) - // The resolves are `undefined` 🥹 - // await expect(act()).resolves.toBeTruthy() await expect(act).resolves }) @@ -334,7 +329,7 @@ describe('FileService', () => { PdfTypes.CHILDREN_RESIDENCE_CHANGE, ) - await expect(act()).resolves.toBeTruthy() + await expect(act).resolves }) it('should throw error for getPresignedUrl since application type is not supported', async () => { diff --git a/libs/application/api/files/src/lib/file.service.ts b/libs/application/api/files/src/lib/file.service.ts index 9c04fc543059..5c4b2f130134 100644 --- a/libs/application/api/files/src/lib/file.service.ts +++ b/libs/application/api/files/src/lib/file.service.ts @@ -54,16 +54,22 @@ export class FileService { const fileName = `${BucketTypePrefix[pdfType]}/${application.id}.pdf` const bucket = this.getBucketName() - if ((await this.awsService.fileExists(bucket, fileName)) === false) { + if ( + (await this.awsService.fileExists({ bucket, key: fileName })) === false + ) { const content = await this.createFile(application, pdfType) - await this.awsService.uploadFile(content, bucket, fileName, { - ContentEncoding: 'base64', - ContentDisposition: 'inline', - ContentType: 'application/pdf', - }) + await this.awsService.uploadFile( + content, + { bucket, key: fileName }, + { + ContentEncoding: 'base64', + ContentDisposition: 'inline', + ContentType: 'application/pdf', + }, + ) } - return await this.awsService.getPresignedUrl(bucket, fileName) + return await this.awsService.getPresignedUrl({ bucket, key: fileName }) } async uploadSignedFile( @@ -79,11 +85,10 @@ export class FileService { .waitForSignature(DokobitFileName[pdfType], documentToken) .then(async (file) => { const s3FileName = `${BucketTypePrefix[pdfType]}/${application.id}.pdf` - await this.awsService.uploadFile( - Buffer.from(file, 'binary'), + await this.awsService.uploadFile(Buffer.from(file, 'binary'), { bucket, - s3FileName, - ) + key: s3FileName, + }) }) .catch((error) => { if (error.code === DokobitErrorCodes.NoMobileSignature) { @@ -130,7 +135,7 @@ export class FileService { const fileName = `${BucketTypePrefix[pdfType]}/${application.id}.pdf` - return await this.awsService.getPresignedUrl(bucket, fileName) + return await this.awsService.getPresignedUrl({ bucket, key: fileName }) } private async createFile(application: Application, pdfType: PdfTypes) { @@ -148,11 +153,10 @@ export class FileService { ) { const bucket = this.getBucketName() const s3FileName = `${BucketTypePrefix[pdfType]}/${application.id}.pdf` - const fileContent = await this.awsService.getFileEncoded({ - bucket, - fileName: s3FileName, - encoding: 'binary', - }) + const fileContent = await this.awsService.getFileContent( + { bucket, key: s3FileName }, + 'binary', + ) const { phoneNumber, name, title } = this.getSigningOptionsFromApplication( application, @@ -227,7 +231,7 @@ export class FileService { async getAttachmentPresignedURL(fileName: string) { const { bucket, key } = AmazonS3URI(fileName) - const url = await this.awsService.getPresignedUrl(bucket, key) + const url = await this.awsService.getPresignedUrl({ bucket, key }) return { url } } @@ -253,7 +257,7 @@ export class FileService { try { this.logger.info(`Deleting attachment ${s3key} from bucket ${bucket}`) - await this.awsService.deleteObject(bucket, s3key) + await this.awsService.deleteObject({ bucket, key: s3key }) result = { ...result, deleted: result.deleted++, diff --git a/libs/application/api/files/src/lib/files.module.ts b/libs/application/api/files/src/lib/files.module.ts index de597a52fbbe..c02b031a3ad3 100644 --- a/libs/application/api/files/src/lib/files.module.ts +++ b/libs/application/api/files/src/lib/files.module.ts @@ -25,7 +25,7 @@ import { ApplicationApiCoreModule } from '@island.is/application/api/core' }) export class ApplicationFilesModule {} -export function createBullModule() { +export const createBullModule = () => { if (process.env.INIT_SCHEMA === 'true') { return NestBullModule.registerQueueAsync() } else { diff --git a/libs/application/api/files/src/lib/pdfGenerators/residenceChange.ts b/libs/application/api/files/src/lib/pdfGenerators/residenceChange.ts index 9d064c55750f..a580ac0f98c2 100644 --- a/libs/application/api/files/src/lib/pdfGenerators/residenceChange.ts +++ b/libs/application/api/files/src/lib/pdfGenerators/residenceChange.ts @@ -24,7 +24,9 @@ import { addLegalEffect } from './familyMatters' const TEMPORARY = 'temporary' -export async function generateResidenceChangePdf(application: CRCApplication) { +export const generateResidenceChangePdf = async ( + application: CRCApplication, +) => { const { answers, externalData: { nationalRegistry }, diff --git a/libs/application/api/payment/src/lib/payment-callback.controller.ts b/libs/application/api/payment/src/lib/payment-callback.controller.ts index 61505938a624..3333aaf6d1e7 100644 --- a/libs/application/api/payment/src/lib/payment-callback.controller.ts +++ b/libs/application/api/payment/src/lib/payment-callback.controller.ts @@ -1,15 +1,22 @@ import { Body, Controller, Param, Post, ParseUUIDPipe } from '@nestjs/common' -import type { Callback } from '@island.is/api/domains/payment' +import { Callback } from '@island.is/api/domains/payment' import { PaymentService } from './payment.service' +import { ApplicationService } from '@island.is/application/api/core' +import { ApiTags } from '@nestjs/swagger' +import addMonths from 'date-fns/addMonths' +@ApiTags('payment-callback') @Controller() export class PaymentCallbackController { - constructor(private readonly paymentService: PaymentService) {} + constructor( + private readonly paymentService: PaymentService, + private readonly applicationService: ApplicationService, + ) {} @Post('application-payment/:applicationId/:id') async paymentApproved( - @Param('applicationId', new ParseUUIDPipe()) applicationId: string, @Body() callback: Callback, + @Param('applicationId', new ParseUUIDPipe()) applicationId: string, @Param('id', new ParseUUIDPipe()) id: string, ): Promise<void> { if (callback.status !== 'paid') { @@ -21,5 +28,17 @@ export class PaymentCallbackController { callback.receptionID, applicationId, ) + + const application = await this.applicationService.findOneById(applicationId) + if (application) { + const oneMonthFromNow = addMonths(new Date(), 1) + //Applications payment states are default to be pruned in 24 hours. + //If the application is paid, we want to hold on to it for longer in case we get locked in an error state. + + await this.applicationService.update(applicationId, { + ...application, + pruneAt: oneMonthFromNow, + }) + } } } diff --git a/libs/application/api/payment/src/lib/payment.controller.ts b/libs/application/api/payment/src/lib/payment.controller.ts index 1bb0612d8ea8..10635784a92b 100644 --- a/libs/application/api/payment/src/lib/payment.controller.ts +++ b/libs/application/api/payment/src/lib/payment.controller.ts @@ -6,7 +6,13 @@ import { ParseUUIDPipe, } from '@nestjs/common' -import { ApiParam, ApiTags, ApiHeader, ApiOkResponse } from '@nestjs/swagger' +import { + ApiParam, + ApiTags, + ApiHeader, + ApiOkResponse, + ApiBearerAuth, +} from '@nestjs/swagger' import type { User } from '@island.is/auth-nest-tools' import { IdsUserGuard, @@ -20,10 +26,7 @@ import { PaymentStatusResponseDto } from './dto/paymentStatusResponse.dto' @UseGuards(IdsUserGuard, ScopesGuard) @ApiTags('payments') -@ApiHeader({ - name: 'authorization', - description: 'Bearer token authorization', -}) +@ApiBearerAuth() @ApiHeader({ name: 'locale', description: 'Front-end language selected', diff --git a/libs/application/api/payment/src/lib/payment.service.ts b/libs/application/api/payment/src/lib/payment.service.ts index d4970d144755..579f2f82b4fb 100644 --- a/libs/application/api/payment/src/lib/payment.service.ts +++ b/libs/application/api/payment/src/lib/payment.service.ts @@ -124,7 +124,7 @@ export class PaymentService { return `${this.config.arkBaseUrl}/quickpay/pay?doc_num=${docNum}` } - private async setUser4( + async setUser4( applicationId: string, paymentId: string, user4: string, diff --git a/libs/application/api/payment/src/lib/types/Charge.ts b/libs/application/api/payment/src/lib/types/Charge.ts index c3b7d9a6b46e..0e2dab15298b 100644 --- a/libs/application/api/payment/src/lib/types/Charge.ts +++ b/libs/application/api/payment/src/lib/types/Charge.ts @@ -2,13 +2,13 @@ import { User } from '@island.is/auth-nest-tools' import { Charge, ExtraData } from '@island.is/clients/charge-fjs-v2' import { Payment } from '../payment.model' -export function formatCharge( +export const formatCharge = ( payment: Payment, callbackBaseUrl: string, callbackAdditionUrl: string, extraData: ExtraData[] | undefined, user: User, -): Charge { +): Charge => { // TODO: island.is x-road service path for callback.. ?? // this can actually be a fixed url const callbackUrl = diff --git a/libs/application/core/README.md b/libs/application/core/README.md index e17d5f5b337c..832dd87a7852 100644 --- a/libs/application/core/README.md +++ b/libs/application/core/README.md @@ -405,9 +405,9 @@ export interface NewField extends BaseField { 4. Create a new function in `libs/application/core/src/lib/fieldBuilders.ts`. This function accepts a parameter of the new type we created, `NewField`, but we have to omit `type`, `component` and `children`. Then add the props as follows. ```typescript -export function buildNewField( +export const buildNewField = ( data: Omit<NewField, 'type' | 'component' | 'children'>, -): NewField { +): NewField => { const { myProp, myOtherProp } = data return { ...extractCommonFields(data), diff --git a/libs/application/core/src/lib/ApplicationTemplateHelper.ts b/libs/application/core/src/lib/ApplicationTemplateHelper.ts index 856e105b2e59..f7d35edcd394 100644 --- a/libs/application/core/src/lib/ApplicationTemplateHelper.ts +++ b/libs/application/core/src/lib/ApplicationTemplateHelper.ts @@ -71,6 +71,7 @@ export class ApplicationTemplateHelper< title?: StaticText description?: StaticText tag: { variant?: string; label?: StaticText } + historyButton?: StaticText } { const actionCard = this.template.stateMachineConfig.states[stateKey]?.meta?.actionCard @@ -79,6 +80,7 @@ export class ApplicationTemplateHelper< title: actionCard?.title, description: actionCard?.description, tag: { variant: actionCard?.tag?.variant, label: actionCard?.tag?.label }, + historyButton: actionCard?.historyButton, } } @@ -281,6 +283,7 @@ export class ApplicationTemplateHelper< displayStatus: action.displayStatus, content: action.content ? formatMessage(action.content) : undefined, title: action.title ? formatMessage(action.title) : undefined, + button: action.button ? formatMessage(action.button) : undefined, } } return { @@ -291,6 +294,9 @@ export class ApplicationTemplateHelper< content: pendingAction.content ? formatMessage(pendingAction.content) : undefined, + button: pendingAction.button + ? formatMessage(pendingAction.button) + : undefined, } } diff --git a/libs/application/core/src/lib/conditionUtils.ts b/libs/application/core/src/lib/conditionUtils.ts index f8b26d4c0440..a326cff89b6a 100644 --- a/libs/application/core/src/lib/conditionUtils.ts +++ b/libs/application/core/src/lib/conditionUtils.ts @@ -11,12 +11,12 @@ import { import { getValueViaPath } from './formUtils' import { User } from '@island.is/shared/types' -function applyStaticConditionalCheck( +const applyStaticConditionalCheck = ( formValue: FormValue, externalData: ExternalData, check: StaticCheck, user: User | null, -): boolean { +): boolean => { const { value, questionId, comparator, externalDataId, userPropId } = check let isValid = false let valueViaPath @@ -68,12 +68,12 @@ function applyStaticConditionalCheck( return isValid } -export function shouldShowFormItem( +export const shouldShowFormItem = ( formItem: FormItem, formValue: FormValue, externalData: ExternalData = {}, user: User | null, -): boolean { +): boolean => { const { condition } = formItem if (!condition) { return true diff --git a/libs/application/core/src/lib/fieldBuilders.ts b/libs/application/core/src/lib/fieldBuilders.ts index ba710d8df748..15ed082dedce 100644 --- a/libs/application/core/src/lib/fieldBuilders.ts +++ b/libs/application/core/src/lib/fieldBuilders.ts @@ -41,6 +41,9 @@ import { StaticTableField, HiddenInputWithWatchedValueField, HiddenInputField, + AccordionField, + BankAccountField, + SliderField, } from '@island.is/application/types' import { Colors } from '@island.is/island-ui/theme' @@ -82,9 +85,9 @@ const extractCommonFields = ( } } -export function buildCheckboxField( +export const buildCheckboxField = ( data: Omit<CheckboxField, 'type' | 'component' | 'children'>, -): CheckboxField { +): CheckboxField => { const { options, strong = false, @@ -107,9 +110,9 @@ export function buildCheckboxField( } } -export function buildDateField( +export const buildDateField = ( data: Omit<DateField, 'type' | 'component' | 'children'>, -): DateField { +): DateField => { const { maxDate, minDate, @@ -134,9 +137,9 @@ export function buildDateField( } } -export function buildDescriptionField( +export const buildDescriptionField = ( data: Omit<DescriptionField, 'type' | 'component' | 'children'>, -): DescriptionField { +): DescriptionField => { const { titleVariant = 'h2', description, @@ -145,10 +148,11 @@ export function buildDescriptionField( space, marginBottom, marginTop, + doesNotRequireAnswer = true, } = data return { ...extractCommonFields(data), - doesNotRequireAnswer: true, + doesNotRequireAnswer, children: undefined, description, titleVariant, @@ -162,15 +166,17 @@ export function buildDescriptionField( } } -export function buildRadioField( +export const buildRadioField = ( data: Omit<RadioField, 'type' | 'component' | 'children'>, -): RadioField { +): RadioField => { const { options, largeButtons = true, backgroundColor, space, required, + widthWithIllustration, + hasIllustration, } = data return { @@ -181,14 +187,16 @@ export function buildRadioField( backgroundColor, space, required, + widthWithIllustration, + hasIllustration, type: FieldTypes.RADIO, component: FieldComponents.RADIO, } } -export function buildSelectField( +export const buildSelectField = ( data: Omit<SelectField, 'type' | 'component' | 'children'>, -): SelectField { +): SelectField => { const { options, placeholder, @@ -211,9 +219,9 @@ export function buildSelectField( } } -export function buildAsyncSelectField( +export const buildAsyncSelectField = ( data: Omit<AsyncSelectField, 'type' | 'component' | 'children'>, -): AsyncSelectField { +): AsyncSelectField => { const { loadOptions, loadingError, @@ -239,9 +247,9 @@ export function buildAsyncSelectField( } } -export function buildCompanySearchField( +export const buildCompanySearchField = ( data: Omit<CompanySearchField, 'type' | 'component' | 'children'>, -): CompanySearchField { +): CompanySearchField => { const { placeholder, shouldIncludeIsatNumber, @@ -261,9 +269,9 @@ export function buildCompanySearchField( } } -export function buildTextField( +export const buildTextField = ( data: Omit<TextField, 'type' | 'component' | 'children'>, -): TextField { +): TextField => { const { backgroundColor = 'blue', placeholder, @@ -273,6 +281,8 @@ export function buildTextField( rows, required, maxLength, + max, + min, readOnly, rightAlign, onChange, @@ -290,15 +300,17 @@ export function buildTextField( maxLength, readOnly, rightAlign, + max, + min, onChange, type: FieldTypes.TEXT, component: FieldComponents.TEXT, } } -export function buildPhoneField( +export const buildPhoneField = ( data: Omit<PhoneField, 'type' | 'component' | 'children'>, -): PhoneField { +): PhoneField => { const { backgroundColor = 'blue', placeholder, @@ -306,7 +318,7 @@ export function buildPhoneField( readOnly, rightAlign, allowedCountryCodes, - disableDropdown, + enableCountrySelector, } = data return { ...extractCommonFields(data), @@ -316,17 +328,17 @@ export function buildPhoneField( required, readOnly, allowedCountryCodes, - disableDropdown, + enableCountrySelector, rightAlign, type: FieldTypes.PHONE, component: FieldComponents.PHONE, } } -export function buildCustomField( +export const buildCustomField = ( data: Omit<CustomField, 'props' | 'type' | 'children'>, props?: RecordObject, -): CustomField { +): CustomField => { const { component, childInputIds } = data return { ...extractCommonFields(data), @@ -338,9 +350,9 @@ export function buildCustomField( } } -export function buildFileUploadField( +export const buildFileUploadField = ( data: Omit<FileUploadField, 'type' | 'component' | 'children'>, -): FileUploadField { +): FileUploadField => { const { introduction, uploadHeader, @@ -376,11 +388,11 @@ export function buildFileUploadField( } } -export function buildDividerField(data: { +export const buildDividerField = (data: { condition?: Condition title?: FormText color?: Colors -}): DividerField { +}): DividerField => { const { title, color, condition } = data return { id: '', @@ -394,7 +406,7 @@ export function buildDividerField(data: { } } -export function buildKeyValueField(data: { +export const buildKeyValueField = (data: { label: FormText value: FormText | FormTextArray width?: FieldWidth @@ -405,7 +417,7 @@ export function buildKeyValueField(data: { paddingX?: BoxProps['padding'] paddingY?: BoxProps['padding'] paddingBottom?: BoxProps['padding'] -}): KeyValueField { +}): KeyValueField => { const { label, value, @@ -439,13 +451,56 @@ export function buildKeyValueField(data: { } } -export function buildSubmitField(data: { +export const buildAccordionField = ( + data: Omit<AccordionField, 'type' | 'component' | 'children'>, +): AccordionField => { + const { + accordionItems, + title, + titleVariant, + id, + marginTop, + marginBottom, + condition, + } = data + return { + children: undefined, + id, + title, + titleVariant, + marginTop, + marginBottom, + accordionItems, + condition, + type: FieldTypes.ACCORDION, + component: FieldComponents.ACCORDION, + } +} + +export const buildBankAccountField = ( + data: Omit<BankAccountField, 'type' | 'component' | 'children'>, +): BankAccountField => { + const { title, id, marginBottom, marginTop, titleVariant } = data + + return { + children: undefined, + id, + title, + marginBottom, + marginTop, + titleVariant, + type: FieldTypes.BANK_ACCOUNT, + component: FieldComponents.BANK_ACCOUNT, + } +} + +export const buildSubmitField = (data: { id: string title: FormText placement?: 'footer' | 'screen' refetchApplicationAfterSubmit?: boolean actions: CallToAction[] -}): SubmitField { +}): SubmitField => { const { id, placement = 'footer', @@ -469,11 +524,11 @@ export function buildSubmitField(data: { } } -export function buildFieldOptions( +export const buildFieldOptions = ( maybeOptions: MaybeWithApplicationAndField<Option[]>, application: Application, field: Field, -): Option[] { +): Option[] => { if (typeof maybeOptions === 'function') { return maybeOptions(application, field) } @@ -481,10 +536,10 @@ export function buildFieldOptions( return maybeOptions } -export function buildRedirectToServicePortalField(data: { +export const buildRedirectToServicePortalField = (data: { id: string title: FormText -}): RedirectToServicePortalField { +}): RedirectToServicePortalField => { const { id, title } = data return { children: undefined, @@ -495,10 +550,10 @@ export function buildRedirectToServicePortalField(data: { } } -export function buildPaymentPendingField(data: { +export const buildPaymentPendingField = (data: { id: string title: FormText -}): PaymentPendingField { +}): PaymentPendingField => { const { id, title } = data return { children: undefined, @@ -509,11 +564,12 @@ export function buildPaymentPendingField(data: { } } -export function buildMessageWithLinkButtonField( +export const buildMessageWithLinkButtonField = ( data: Omit<MessageWithLinkButtonField, 'type' | 'component' | 'children'>, -): MessageWithLinkButtonField { +): MessageWithLinkButtonField => { const { id, title, url, message, buttonTitle, marginBottom, marginTop } = data return { + ...extractCommonFields(data), children: undefined, id, title, @@ -527,9 +583,9 @@ export function buildMessageWithLinkButtonField( } } -export function buildExpandableDescriptionField( +export const buildExpandableDescriptionField = ( data: Omit<ExpandableDescriptionField, 'type' | 'component' | 'children'>, -): ExpandableDescriptionField { +): ExpandableDescriptionField => { const { id, title, description, introText, startExpanded } = data return { children: undefined, @@ -542,9 +598,9 @@ export function buildExpandableDescriptionField( component: FieldComponents.EXPANDABLE_DESCRIPTION, } } -export function buildAlertMessageField( +export const buildAlertMessageField = ( data: Omit<AlertMessageField, 'type' | 'component' | 'children'>, -): AlertMessageField { +): AlertMessageField => { const { message, alertType, marginTop, marginBottom, links } = data return { ...extractCommonFields(data), @@ -559,9 +615,9 @@ export function buildAlertMessageField( } } -export function buildLinkField( +export const buildLinkField = ( data: Omit<LinkField, 'type' | 'component' | 'children'>, -): LinkField { +): LinkField => { const { s3key, link, iconProps } = data return { ...extractCommonFields(data), @@ -574,9 +630,9 @@ export function buildLinkField( } } -export function buildPaymentChargeOverviewField( +export const buildPaymentChargeOverviewField = ( data: Omit<PaymentChargeOverviewField, 'type' | 'component' | 'children'>, -): PaymentChargeOverviewField { +): PaymentChargeOverviewField => { const { id, title, forPaymentLabel, totalLabel, getSelectedChargeItems } = data return { @@ -591,9 +647,9 @@ export function buildPaymentChargeOverviewField( } } -export function buildImageField( +export const buildImageField = ( data: Omit<ImageField, 'type' | 'component' | 'children'>, -): ImageField { +): ImageField => { const { id, title, @@ -624,9 +680,9 @@ export function buildImageField( } } -export function buildPdfLinkButtonField( +export const buildPdfLinkButtonField = ( data: Omit<PdfLinkButtonField, 'type' | 'component' | 'children'>, -): PdfLinkButtonField { +): PdfLinkButtonField => { const { verificationDescription, verificationLinkTitle, @@ -705,9 +761,9 @@ export const buildHiddenInput = ( } } -export function buildNationalIdWithNameField( +export const buildNationalIdWithNameField = ( data: Omit<NationalIdWithNameField, 'type' | 'component' | 'children'>, -): NationalIdWithNameField { +): NationalIdWithNameField => { const { disabled, required, @@ -738,9 +794,9 @@ export function buildNationalIdWithNameField( } } -export function buildActionCardListField( +export const buildActionCardListField = ( data: Omit<ActionCardListField, 'type' | 'component' | 'children'>, -): ActionCardListField { +): ActionCardListField => { const { items, space, marginTop, marginBottom } = data return { @@ -755,9 +811,9 @@ export function buildActionCardListField( } } -export function buildTableRepeaterField( +export const buildTableRepeaterField = ( data: Omit<TableRepeaterField, 'type' | 'component' | 'children'>, -): TableRepeaterField { +): TableRepeaterField => { const { fields, table, @@ -795,7 +851,7 @@ export function buildTableRepeaterField( } } -export function buildStaticTableField( +export const buildStaticTableField = ( data: Omit< StaticTableField, | 'type' @@ -808,7 +864,7 @@ export function buildStaticTableField( | 'disabled' | 'width' >, -): StaticTableField { +): StaticTableField => { const { header, condition, @@ -841,3 +897,56 @@ export function buildStaticTableField( titleVariant, } } + +export const buildSliderField = ( + data: Omit<SliderField, 'type' | 'component' | 'children' | 'title'>, +): SliderField => { + const { + condition, + min = 0, + max = 10, + step = 1, + snap = true, + trackStyle, + calculateCellStyle, + showLabel = false, + showMinMaxLabels = false, + showRemainderOverlay = true, + showProgressOverlay = true, + showToolTip = false, + label, + rangeDates, + currentIndex, + onChange, + onChangeEnd, + labelMultiplier = 1, + id, + saveAsString, + } = data + return { + title: '', + id, + children: undefined, + type: FieldTypes.SLIDER, + component: FieldComponents.SLIDER, + min, + max, + step, + snap, + trackStyle, + calculateCellStyle, + showLabel, + showMinMaxLabels, + showRemainderOverlay, + showProgressOverlay, + showToolTip, + label, + rangeDates, + currentIndex, + onChange, + onChangeEnd, + labelMultiplier, + condition, + saveAsString, + } +} diff --git a/libs/application/core/src/lib/formBuilders.ts b/libs/application/core/src/lib/formBuilders.ts index 65360368d31d..1334684288a3 100644 --- a/libs/application/core/src/lib/formBuilders.ts +++ b/libs/application/core/src/lib/formBuilders.ts @@ -11,29 +11,29 @@ import { DataProviderBuilderItem, } from '@island.is/application/types' -export function buildForm(data: Omit<Form, 'type'>): Form { +export const buildForm = (data: Omit<Form, 'type'>): Form => { return { ...data, type: FormItemTypes.FORM } } -export function buildMultiField(data: Omit<MultiField, 'type'>): MultiField { +export const buildMultiField = (data: Omit<MultiField, 'type'>): MultiField => { return { ...data, type: FormItemTypes.MULTI_FIELD } } -export function buildRepeater(data: Omit<Repeater, 'type'>): Repeater { +export const buildRepeater = (data: Omit<Repeater, 'type'>): Repeater => { return { ...data, type: FormItemTypes.REPEATER } } -export function buildSection(data: Omit<Section, 'type'>): Section { +export const buildSection = (data: Omit<Section, 'type'>): Section => { return { ...data, type: FormItemTypes.SECTION } } -export function buildSubSection(data: Omit<SubSection, 'type'>): SubSection { +export const buildSubSection = (data: Omit<SubSection, 'type'>): SubSection => { return { ...data, type: FormItemTypes.SUB_SECTION } } -export function buildExternalDataProvider( +export const buildExternalDataProvider = ( data: Omit<ExternalDataProvider, 'type' | 'isPartOfRepeater' | 'children'>, -): ExternalDataProvider { +): ExternalDataProvider => { return { ...data, isPartOfRepeater: false, @@ -42,9 +42,9 @@ export function buildExternalDataProvider( } } -export function buildDataProviderItem( +export const buildDataProviderItem = ( data: DataProviderBuilderItem, -): DataProviderItem { +): DataProviderItem => { return { id: data.provider?.externalDataId ?? data.provider?.action ?? '', action: data.provider?.actionId, @@ -56,8 +56,8 @@ export function buildDataProviderItem( } } -export function buildDataProviderPermissionItem( +export const buildDataProviderPermissionItem = ( data: DataProviderPermissionItem, -): DataProviderPermissionItem { +): DataProviderPermissionItem => { return data } diff --git a/libs/application/core/src/lib/formUtils.ts b/libs/application/core/src/lib/formUtils.ts index 6055233140ce..f4586e39971d 100644 --- a/libs/application/core/src/lib/formUtils.ts +++ b/libs/application/core/src/lib/formUtils.ts @@ -39,15 +39,15 @@ const containsArray = (obj: RecordObject) => { return contains } -export function getErrorViaPath(obj: RecordObject, path: string): string { +export const getErrorViaPath = (obj: RecordObject, path: string): string => { return get(obj, path) as string } -export function getValueViaPath<T = unknown>( +export const getValueViaPath = <T = unknown>( obj: RecordObject, path: string, defaultValue?: T, -): T | undefined { +): T | undefined => { // Errors from dataSchema with array of object looks like e.g. `{ 'periods[1].startDate': 'error message' }` if (path.match(/.\[\d\]\../g) && !containsArray(obj)) { return (obj?.[path] ?? defaultValue) as T @@ -111,12 +111,12 @@ export const getFormNodeLeaves = (node: FormNode): FormLeaf[] => { return leaves } -export function getSectionsInForm( +export const getSectionsInForm = ( form: Form, answers: FormValue, externalData: ExternalData, user: User | null, -): Section[] { +): Section[] => { const sections: Section[] = [] form.children.forEach((child) => { const shouldShowSection = shouldShowFormItem( @@ -132,12 +132,12 @@ export function getSectionsInForm( return sections } -export function getSubSectionsInSection( +export const getSubSectionsInSection = ( section: Section, answers: FormValue, externalData: ExternalData, user: User | null, -): SubSection[] { +): SubSection[] => { const subSections: SubSection[] = [] section?.children.forEach((child) => { const shouldShowSection = shouldShowFormItem( @@ -153,10 +153,10 @@ export function getSubSectionsInSection( return subSections } -export function findSectionIndex( +export const findSectionIndex = ( sections: Section[], section: Section, -): number { +): number => { if (!sections.length) { return -1 } @@ -168,10 +168,10 @@ export function findSectionIndex( return -1 } -export function findSubSectionIndex( +export const findSubSectionIndex = ( subSections: SubSection[], subSection: SubSection, -): number { +): number => { for (let i = 0; i < subSections.length; i++) { if (subSections[i].id === subSection.id) { return i @@ -215,10 +215,10 @@ const overwriteArrayMerge = ( return destination } -export function mergeAnswers( +export const mergeAnswers = ( currentAnswers: RecordObject<any>, newAnswers: RecordObject<any>, -): FormValue { +): FormValue => { return deepmerge(currentAnswers, newAnswers, { arrayMerge: overwriteArrayMerge, }) @@ -242,11 +242,11 @@ const handleMessageFormatting = ( return formatMessage(descriptor, values) } -export function formatText<T extends FormTextArray | FormText>( +export const formatText = <T extends FormTextArray | FormText>( text: T, application: Application, formatMessage: MessageFormatter, -): T extends FormTextArray ? string[] : string { +): T extends FormTextArray ? string[] : string => { if (typeof text === 'function') { const message = (text as (_: Application) => StaticText | StaticText[])( application, @@ -278,18 +278,18 @@ export function formatText<T extends FormTextArray | FormText>( return formatMessage(text) as T extends FormTextArray ? string[] : string } -export function formatAndParseAsHTML( +export const formatAndParseAsHTML = ( text: FormText, application: Application, formatMessage: MessageFormatter, -) { +) => { return HtmlParser(formatText(text, application, formatMessage)) } // periods[3].startDate -> 3 // notPartOfRepeater -> -1 // periods[5ab33f1].id -> -1 -export function extractRepeaterIndexFromField(field: Field): number { +export const extractRepeaterIndexFromField = (field: Field): number => { if (!field?.isPartOfRepeater) { return -1 } diff --git a/libs/application/core/src/lib/messages.ts b/libs/application/core/src/lib/messages.ts index e3793599e43b..d39632da5fcf 100644 --- a/libs/application/core/src/lib/messages.ts +++ b/libs/application/core/src/lib/messages.ts @@ -188,6 +188,13 @@ export const coreMessages = defineMessages({ description: 'Your application is complete. The application has progressed in the process.', }, + draftProgressMeter: { + id: 'application.system:application.progress', + defaultMessage: + 'Þú hefur klárað {draftFinishedSteps} af {draftTotalSteps} skrefum', + description: + 'You have completed {draftFinishedSteps} of {draftTotalSteps} steps', + }, notLoggedIn: { id: 'application.system:not.logged.id', defaultMessage: 'Þú þarft að vera skrá þig inn.', @@ -291,6 +298,21 @@ export const coreDefaultFieldMessages = defineMessages({ defaultMessage: 'Veljið skjöl til að hlaða upp', description: 'Default file upload button label', }, + defaultBankAccountBankNumber: { + id: 'application.system:core.default.bankAccount.bankNumber', + defaultMessage: 'Bankanúmer', + description: 'Bank account bank number', + }, + defaultBankAccountLedger: { + id: 'application.system:core.default.bankAccount.ledger', + defaultMessage: 'Höfuðbók', + description: 'Bank account ledger', + }, + defaultBankAccountAccountNumber: { + id: 'application.system:core.default.bankAccount.accountNumber', + defaultMessage: 'Reikningsnúmer', + description: 'Bank account account number', + }, defaultDownloadButtonTitle: { id: 'application.system:core.default.pdfLinkButtonField.downloadButtonTitle', defaultMessage: 'Hlaða niður skjali', @@ -414,6 +436,12 @@ export const coreErrorMessages = defineMessages({ defaultMessage: 'Sending umsóknar mistókst', description: 'Message indicating submission after payment failed', }, + paymentSubmitFailedDescription: { + id: 'application.system:core.payment.submitTitle', + defaultMessage: + 'Villa hefur komið upp við áframhaldandi vinnslu. Vinsamlegast reynið aftur síðar. Ef villa endurtekur sig vinsamlegast hafið samband við island@island.is.', + description: 'Message indicating submission after payment failed', + }, applicationSubmitFailed: { id: 'application.system:core.application.SubmitFailed', defaultMessage: 'Sending umsóknar mistókst', diff --git a/libs/application/core/src/validation/validators.spec.ts b/libs/application/core/src/validation/validators.spec.ts index 4e0d56cef3ea..1e99bd74cf1b 100644 --- a/libs/application/core/src/validation/validators.spec.ts +++ b/libs/application/core/src/validation/validators.spec.ts @@ -580,6 +580,50 @@ describe('validateAnswers', () => { value: expectedMessage, }) }) + + it('should not throw error when validation fails but current screen does not include the path', () => { + const schema = z.object({ + anArray: z.array(z.string()).nonempty(), + somethingElse: z.number(), + }) + const value = { + anArray: [], + somethingElse: 4, + } + + expect( + validateAnswers({ + dataSchema: schema, + answers: value, + formatMessage, + isFullSchemaValidation: false, + currentScreenFields: ['somethingElse'], + }), + ).toBeUndefined() + }) + + it('should throw error when validation fails and current screen includes the path', () => { + const schema = z.object({ + anArray: z.array(z.string()).nonempty(), + somethingElse: z.number(), + }) + const value = { + anArray: [], + somethingElse: 4, + } + + expect( + validateAnswers({ + dataSchema: schema, + answers: value, + formatMessage, + isFullSchemaValidation: false, + currentScreenFields: ['anArray', 'somethingElse'], + }), + ).toEqual({ + anArray: defaultError, + }) + }) }) }) diff --git a/libs/application/core/src/validation/validators.ts b/libs/application/core/src/validation/validators.ts index 1956f6225e50..2ea9e314479a 100644 --- a/libs/application/core/src/validation/validators.ts +++ b/libs/application/core/src/validation/validators.ts @@ -14,12 +14,14 @@ import { import { coreErrorMessages } from '../lib/messages' import { AnswerValidationError } from './AnswerValidator' -function populateError( +const populateError = ( error: ZodIssue[], pathToError: string | undefined, formatMessage: FormatMessage, -) { - let errorObject = {} + currentScreenFields?: string[], +) => { + let errorObject: Record<string, string> = {} + error.forEach((element) => { const defaultZodError = element.message === 'Invalid input' const path = pathToError || element.path @@ -35,20 +37,49 @@ function populateError( } errorObject = set(errorObject, path, message) }) + + /** + * If currentScreenFields is provided, only return errors for fields on that screen. + * This is to avoid bugs in some scenarios (f.x. when going back via the browser back button) + * Zod tries to validate screens that are not currently active, causing the user to not + * be able to submit the screen. + */ + if (currentScreenFields && currentScreenFields.length > 0) { + // If we have nested fields, we need to resolve only the top level field + const resolvedNestedFields = currentScreenFields.map( + (id) => id.split('.')[0], + ) + const relevantErrors = Object.fromEntries( + Object.entries(errorObject).filter(([key]) => + resolvedNestedFields.includes(key), + ), + ) + + if (Object.keys(relevantErrors).length === 0) { + // No errors on the current screen + return undefined + } + + console.info(relevantErrors) + return relevantErrors + } + console.info(errorObject) return errorObject } -export function validateAnswers({ +export const validateAnswers = ({ dataSchema, answers, formatMessage, + currentScreenFields, }: { dataSchema: Schema | ZodEffects<any, any, any> answers: FormValue isFullSchemaValidation?: boolean formatMessage: FormatMessage -}): ValidationRecord | undefined { + currentScreenFields?: string[] +}): ValidationRecord | undefined => { try { if (dataSchema instanceof ZodEffects) { // cases where zod schema has a refinement on the schema object, needs to be defined partial @@ -59,7 +90,7 @@ export function validateAnswers({ } } catch (e) { const zodErrors: ZodIssue[] = e.errors - return populateError(zodErrors, e.path, formatMessage) + return populateError(zodErrors, e.path, formatMessage, currentScreenFields) } return undefined } diff --git a/libs/application/graphql/src/lib/fragments/application.ts b/libs/application/graphql/src/lib/fragments/application.ts index 5e64efc54701..0762f3efb34e 100644 --- a/libs/application/graphql/src/lib/fragments/application.ts +++ b/libs/application/graphql/src/lib/fragments/application.ts @@ -20,6 +20,7 @@ export const ApplicationFragment = gql` displayStatus content title + button } history { log @@ -28,6 +29,7 @@ export const ApplicationFragment = gql` deleteButton draftTotalSteps draftFinishedSteps + historyButton } typeId answers diff --git a/libs/application/template-api-modules/README.md b/libs/application/template-api-modules/README.md index a999621114d9..501b57e4b2f1 100644 --- a/libs/application/template-api-modules/README.md +++ b/libs/application/template-api-modules/README.md @@ -19,28 +19,20 @@ Start by creating `{your_template_name}.module.ts` and `{your_template_name}.ser Example of a template API module: ```typescript -import { DynamicModule } from '@nestjs/common' +import { Module } from '@nestjs/common' // This is a shared module that gives you access to common methods import { SharedTemplateAPIModule } from '../../shared' -// The base config that template api modules are registered with by default -// (configurable inside `template-api.module.ts`) -import { BaseTemplateAPIModuleConfig } from '../../../types' - // Here you import your module service import { ReferenceTemplateService } from './reference-template.service' -export class ReferenceTemplateModule { - static register(config: BaseTemplateAPIModuleConfig): DynamicModule { - return { - module: ReferenceTemplateModule, - imports: [SharedTemplateAPIModule.register(config)], - providers: [ReferenceTemplateService], - exports: [ReferenceTemplateService], - } - } -} +@Module({ + imports: [SharedTemplateAPIModule], + providers: [ReferenceTemplateService], + exports: [ReferenceTemplateService], +}) +export class ReferenceTemplateModule {} ``` Create your service class that extends the `BaseTemplateApiService` and provide the application type to the `super` constructor. \ @@ -417,3 +409,29 @@ import { SharedApi } from '@island.is/application/types' }, ``` + +## Enabling payment mocking + +To enable payment mocking on dev and local you need to add `enableMockPayment: true` to the arguments object passed to the +`buildExternalDataProvider` function when constructing your `approveExternalData` field. + +A simple example of this can be found in `libs/application/templates/example-payment/src/forms/draft.ts` + +```typescript +buildExternalDataProvider({ + title: m.draft.externalDataTitle, + id: 'approveExternalData', + subTitle: m.draft.externalDataTitle, + checkboxLabel: m.draft.externalDataTitle, + enableMockPayment: true, + dataProviders: [ + buildDataProviderItem({ + provider: PaymentCatalogApi, + title: m.draft.feeInfo, + }), + ], + }), + +``` + +This will cause a checkbox saying "Enable mock payment" to be shown that if checked will cause the payment step to be skipped. diff --git a/libs/application/template-api-modules/src/lib/index.ts b/libs/application/template-api-modules/src/lib/index.ts index 3bc93f3d9b89..c8c2758da96b 100644 --- a/libs/application/template-api-modules/src/lib/index.ts +++ b/libs/application/template-api-modules/src/lib/index.ts @@ -1,5 +1,6 @@ export { TemplateAPIModule } from './modules/template-api.module' export { TemplateAPIService } from './modules/template-api.service' +export { sharedModuleConfig } from './modules/shared' export { BaseTemplateAPIModuleConfig as TemplateAPIConfig } from './types' export { BaseTemplateApiApplicationService, diff --git a/libs/application/template-api-modules/src/lib/modules/shared/api/application/application.module.ts b/libs/application/template-api-modules/src/lib/modules/shared/api/application/application.module.ts index 6dcec53a5e59..13120ea7a65a 100644 --- a/libs/application/template-api-modules/src/lib/modules/shared/api/application/application.module.ts +++ b/libs/application/template-api-modules/src/lib/modules/shared/api/application/application.module.ts @@ -1,15 +1,11 @@ import { ApplicationApiCoreModule } from '@island.is/application/api/core' import { HistoryModule } from '@island.is/application/api/history' -import { DynamicModule } from '@nestjs/common' +import { Module } from '@nestjs/common' import { ApplicationService } from './application.service' -export class ApplicationModule { - static register(): DynamicModule { - return { - module: ApplicationModule, - imports: [ApplicationApiCoreModule, HistoryModule], - providers: [ApplicationService], - exports: [ApplicationService], - } - } -} +@Module({ + imports: [ApplicationApiCoreModule, HistoryModule], + providers: [ApplicationService], + exports: [ApplicationService], +}) +export class ApplicationModule {} diff --git a/libs/application/template-api-modules/src/lib/modules/shared/api/directorate-of-immigration/directorate-of-immigration.module.ts b/libs/application/template-api-modules/src/lib/modules/shared/api/directorate-of-immigration/directorate-of-immigration.module.ts index d216461b6422..1ef09621a488 100644 --- a/libs/application/template-api-modules/src/lib/modules/shared/api/directorate-of-immigration/directorate-of-immigration.module.ts +++ b/libs/application/template-api-modules/src/lib/modules/shared/api/directorate-of-immigration/directorate-of-immigration.module.ts @@ -1,13 +1,10 @@ -import { DynamicModule } from '@nestjs/common' +import { Module } from '@nestjs/common' import { DirectorateOfImmigrationService } from './directorate-of-immigration.service' import { DirectorateOfImmigrationClientModule } from '@island.is/clients/directorate-of-immigration' -export class DirectorateOfImmigrationModule { - static register(): DynamicModule { - return { - module: DirectorateOfImmigrationModule, - imports: [DirectorateOfImmigrationClientModule], - providers: [DirectorateOfImmigrationService], - exports: [DirectorateOfImmigrationService], - } - } -} + +@Module({ + imports: [DirectorateOfImmigrationClientModule], + providers: [DirectorateOfImmigrationService], + exports: [DirectorateOfImmigrationService], +}) +export class DirectorateOfImmigrationModule {} diff --git a/libs/application/template-api-modules/src/lib/modules/shared/api/driving-license/driving-license.module.ts b/libs/application/template-api-modules/src/lib/modules/shared/api/driving-license/driving-license.module.ts index 2b390dec2f99..a3ef5f127d5f 100644 --- a/libs/application/template-api-modules/src/lib/modules/shared/api/driving-license/driving-license.module.ts +++ b/libs/application/template-api-modules/src/lib/modules/shared/api/driving-license/driving-license.module.ts @@ -1,15 +1,11 @@ -import { DynamicModule } from '@nestjs/common' +import { Module } from '@nestjs/common' import { DrivingLicenseProviderService } from './driving-license.service' import { DrivingLicenseApiModule } from '@island.is/clients/driving-license' import { DrivingLicenseBookModule } from '@island.is/api/domains/driving-license-book' -export class DrivingLicenseModule { - static register(): DynamicModule { - return { - module: DrivingLicenseModule, - imports: [DrivingLicenseApiModule, DrivingLicenseBookModule], - providers: [DrivingLicenseProviderService], - exports: [DrivingLicenseProviderService], - } - } -} +@Module({ + imports: [DrivingLicenseApiModule, DrivingLicenseBookModule], + providers: [DrivingLicenseProviderService], + exports: [DrivingLicenseProviderService], +}) +export class DrivingLicenseModule {} diff --git a/libs/application/template-api-modules/src/lib/modules/shared/api/education/inna.module.ts b/libs/application/template-api-modules/src/lib/modules/shared/api/education/inna.module.ts index aa742945f659..17fe0ac08c38 100644 --- a/libs/application/template-api-modules/src/lib/modules/shared/api/education/inna.module.ts +++ b/libs/application/template-api-modules/src/lib/modules/shared/api/education/inna.module.ts @@ -1,13 +1,10 @@ -import { DynamicModule } from '@nestjs/common' +import { Module } from '@nestjs/common' import { InnaClientModule } from '@island.is/clients/inna' import { InnaService } from './inna.service' -export class InnaModule { - static register(): DynamicModule { - return { - module: InnaModule, - imports: [InnaClientModule], - providers: [InnaService], - exports: [InnaService], - } - } -} + +@Module({ + imports: [InnaClientModule], + providers: [InnaService], + exports: [InnaService], +}) +export class InnaModule {} diff --git a/libs/application/template-api-modules/src/lib/modules/templates/announcement-of-death/emailGenerators/assets/logo.jpg b/libs/application/template-api-modules/src/lib/modules/templates/announcement-of-death/emailGenerators/assets/logo.jpg deleted file mode 100644 index 49ad45175f7b3f037ddbe614ef48c1cb5242c041..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2885 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 diff --git a/libs/application/template-api-modules/src/lib/modules/templates/announcement-of-death/emailGenerators/firearmApplicantNotification.ts b/libs/application/template-api-modules/src/lib/modules/templates/announcement-of-death/emailGenerators/firearmApplicantNotification.ts deleted file mode 100644 index a347198d7096..000000000000 --- a/libs/application/template-api-modules/src/lib/modules/templates/announcement-of-death/emailGenerators/firearmApplicantNotification.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { EmailTemplateGeneratorProps } from '../../../../types' -import { SendMailOptions } from 'nodemailer' -import { AnnouncementOfDeathAnswers } from '@island.is/application/templates/announcement-of-death' -import { pathToAsset } from '../announcement-of-death-utils' - -interface FirearmsApplicantEmail { - (props: EmailTemplateGeneratorProps): SendMailOptions -} - -export const generateFirearmApplicantEmail: FirearmsApplicantEmail = ( - props, -) => { - const { - application, - options: { email = { sender: 'Ísland.is', address: 'no-reply@island.is' } }, - } = props - - const firearmApplicant = application.answers - .firearmApplicant as AnnouncementOfDeathAnswers['firearmApplicant'] - - if (!firearmApplicant) throw new Error('Firearm applicant was undefined') - if (!application.answers.caseNumber) - throw new Error('Case number was undefined') - - const subject = 'Tilkynning um vörslu skotvopna' - - return { - from: { - name: email.sender, - address: email.address, - }, - to: [ - { - name: firearmApplicant.name, - address: firearmApplicant.email, - }, - ], - subject, - template: { - title: subject, - body: [ - { - component: 'Image', - context: { - src: pathToAsset('logo.jpg'), - alt: 'Ísland.is logo', - }, - }, - { - component: 'Heading', - context: { copy: subject }, - }, - { - component: 'Copy', - context: { - copy: - `<span>Góðan dag,</span><br/><br/>` + - `<span>þú hefur verið tilnefndur til að taka við vörslu skotvopna sem tilheyra dánarbúi ${application.answers.caseNumber} - ${firearmApplicant.name}</span><br/>` + - `<span>Með undirritun lýsir þú því yfir að þú hafir leyfi til að varsla skotvopnin og samþykkir jafnframt að taka við vörslu þeirra.</span><br/>`, - }, - }, - ], - }, - } -} diff --git a/libs/application/template-api-modules/src/lib/modules/templates/announcement-of-death/smsGenerators/requestReviewSms.ts b/libs/application/template-api-modules/src/lib/modules/templates/announcement-of-death/smsGenerators/requestReviewSms.ts deleted file mode 100644 index 51defc8d4941..000000000000 --- a/libs/application/template-api-modules/src/lib/modules/templates/announcement-of-death/smsGenerators/requestReviewSms.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Application } from '@island.is/application/types' -import { SmsMessage } from '../../../../types' -import { AnnouncementOfDeathAnswers } from '@island.is/application/templates/announcement-of-death' - -export type RequestReviewSms = (application: Application) => SmsMessage - -export const generateRequestReviewSms: RequestReviewSms = (application) => { - const firearmApplicant = application.answers - .firearmApplicant as AnnouncementOfDeathAnswers['firearmApplicant'] - - if (!firearmApplicant?.phone) throw new Error('Recipient phone was undefined') - - return { - phoneNumber: firearmApplicant.phone || '', - message: - `Góðan dag,` + - `þú hefur verið tilnefndur til að taka við vörslu skotvopna sem tilheyra dánarbúi ${application.answers.caseNumber} - ${firearmApplicant.name}` + - `Með undirritun lýsir þú því yfir að þú hafir leyfi til að varsla skotvopnin og samþykkir jafnframt að taka við vörslu þeirra.`, - } -} diff --git a/libs/application/template-api-modules/src/lib/modules/templates/children-residence-change/constants.ts b/libs/application/template-api-modules/src/lib/modules/templates/children-residence-change/constants.ts deleted file mode 100644 index fc4d7a36b13d..000000000000 --- a/libs/application/template-api-modules/src/lib/modules/templates/children-residence-change/constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const PRESIGNED_BUCKET = 'PRESIGNED_BUCKET' diff --git a/libs/application/templates/accident-notification/src/utils/isRepresentativeOfCompanyOrInstitue.spec.ts b/libs/application/templates/accident-notification/src/utils/isRepresentativeOfCompanyOrInstitue.spec.ts deleted file mode 100644 index 9131add3b47e..000000000000 --- a/libs/application/templates/accident-notification/src/utils/isRepresentativeOfCompanyOrInstitue.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { FormValue } from '@island.is/application/types' -import { WhoIsTheNotificationForEnum } from '../types' - -import { isRepresentativeOfCompanyOrInstitute } from './isRepresentativeOfCompanyOrInstitue' -describe('isRepresentativeOfCompanyOrInstitue', () => { - const representative: FormValue = { - whoIsTheNotificationFor: { - answer: WhoIsTheNotificationForEnum.JURIDICALPERSON, - }, - } - - const notRepresentative: FormValue = { - whoIsTheNotificationFor: { - answer: WhoIsTheNotificationForEnum.ME, - }, - } - - const emptyObject = {} - - it('should return true for someone that is a representative of the company or institue', () => { - expect(isRepresentativeOfCompanyOrInstitute(representative)).toEqual(true) - }) - it('should return false for someone that isnt a representative of the company or institue', () => { - expect(isRepresentativeOfCompanyOrInstitute(notRepresentative)).toEqual( - false, - ) - }) - it('should return false for empty object', () => { - expect(isRepresentativeOfCompanyOrInstitute(emptyObject)).toEqual(false) - }) -}) diff --git a/libs/application/templates/accident-notification/src/utils/isRepresentativeOfCompanyOrInstitue.ts b/libs/application/templates/accident-notification/src/utils/isRepresentativeOfCompanyOrInstitue.ts deleted file mode 100644 index 92588f0fe1d4..000000000000 --- a/libs/application/templates/accident-notification/src/utils/isRepresentativeOfCompanyOrInstitue.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { getValueViaPath } from '@island.is/application/core' -import { FormValue } from '@island.is/application/types' -import { YES } from '../constants' -import { WhoIsTheNotificationForEnum } from '../types' - -export const isRepresentativeOfCompanyOrInstitute = (formValue: FormValue) => { - return ( - getValueViaPath(formValue, 'whoIsTheNotificationFor.answer') === - WhoIsTheNotificationForEnum.JURIDICALPERSON - ) -} - -export const isInjuredAndRepresentativeOfCompanyOrInstitute = ( - formValue: FormValue, -) => { - return formValue.isRepresentativeOfCompanyOrInstitue?.toString() === YES -} diff --git a/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/Slider.css.ts b/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/Slider.css.ts deleted file mode 100644 index 3e3ad4350ded..000000000000 --- a/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/Slider.css.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { keyframes, style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const TooltipContainer = style({ - filter: 'drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.15))', - position: 'absolute', - bottom: '100%', - transition: ' transform 0.3s', - - ':after': { - content: '""', - background: '#fff', - width: 16, - height: 16, - bottom: 8, - position: 'absolute', - left: 0, - transform: 'translateX(-50%) rotate(45deg)', - zIndex: -1, - }, -}) - -export const TooltipBox = style({ - background: '#fff', - padding: '3px 1em', - display: 'inline-block', - lineHeight: 1.5, - fontWeight: 600, - color: '#0061ff', - marginBottom: 16, - transition: 'transform 0.3s', -}) - -const thumbAnimation = keyframes({ - from: { - transform: 'scale(0.6)', - }, - to: { - transform: 'scale(0.8)', - }, -}) - -export const Thumb = style({ - boxSizing: 'border-box', - cursor: 'pointer', - background: '#00e4ca', - backgroundClip: 'content-box', - padding: 20, - width: 64, - height: 64, - borderRadius: '50%', - marginLeft: -32, - top: 'calc(100% + 2px)', - position: 'absolute', - transition: 'transform 0.3s', - WebkitTapHighlightColor: 'transparent', - outline: 'none', // TODO: temp - - ':before': { - content: '""', - position: 'absolute', - left: 31, - width: 2, - height: 32, - top: 0, - background: '#00e4ca', - }, - - ':after': { - content: '""', - position: 'absolute', - left: 0, - top: 0, - width: 64, - height: 64, - borderRadius: '50%', - background: '#00e4ca', - opacity: 0.25, - animation: `${thumbAnimation} 1.5s infinite alternate`, - }, -}) - -export const TrackGrid = style({ - position: 'relative', - display: 'grid', -}) - -export const TrackCell = style({ - cursor: 'pointer', -}) - -export const remainderBar = style({ - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - right: -1, - marginLeft: -1, - height: '100%', - pointerEvents: 'none', - background: `repeating-linear-gradient(-45deg, #fff, #fff 5%, rgba(255, 255, 255, 0.5) 5%, rgba(255, 255, 255, 0.5) 50%, #fff 50%) top left fixed`, - backgroundSize: '15px 15px', - borderLeftWidth: 2, - borderLeftStyle: 'solid', - borderLeftColor: theme.color.white, - transition: 'left 0.3s', -}) - -export const progressBar = style({ - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - marginLeft: -1, - height: '100%', - pointerEvents: 'none', - transition: 'width 0.3s', - background: theme.color.mint400, -}) diff --git a/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/Slider.tsx b/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/Slider.tsx deleted file mode 100644 index 4d1d8fa253b1..000000000000 --- a/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/Slider.tsx +++ /dev/null @@ -1,282 +0,0 @@ -import { Box, Text } from '@island.is/island-ui/core' -import useComponentSize from '@rehooks/component-size' -import React, { CSSProperties, FC, useEffect, useRef, useState } from 'react' -import { useDrag } from './utils' -import * as styles from './Slider.css' - -interface TooltipProps { - style?: CSSProperties - atEnd?: boolean -} - -const Tooltip: FC<React.PropsWithChildren<TooltipProps>> = ({ - style, - atEnd = false, - children, -}) => ( - <Box - data-test="slider-tooltip" - className={styles.TooltipContainer} - style={style} - > - <Box - className={styles.TooltipBox} - style={{ - transform: `translateX(${atEnd ? -85 : -50}%)`, - }} - > - {children} - </Box> - </Box> -) - -const useLatest = <T extends number>(value: T) => { - const ref = useRef<T>() - ref.current = value - return ref -} - -const roundByNum = (num: number, rounder: number) => { - const multiplier = 1 / (rounder || 0.5) - return Math.round(num * multiplier) / multiplier -} - -const toFixedNumber = (num: number, digits: number, base: number) => { - const pow = Math.pow(base || 10, digits) - return Math.floor(num * pow) / pow -} - -interface TrackProps { - min: number - max: number - step?: number - snap?: boolean - trackStyle?: CSSProperties - calculateCellStyle: (index: number) => CSSProperties - showLabel?: boolean - showMinMaxLabels?: boolean - showRemainderOverlay?: boolean - showProgressOverlay?: boolean - showToolTip?: boolean - label: { - singular: string - plural: string - } - currentIndex: number - onChange?: (index: number) => void - labelMultiplier?: number -} - -const Slider = ({ - min = 0, - max, - step = 0.5, - snap = true, - trackStyle, - calculateCellStyle, - showLabel = false, - showMinMaxLabels = false, - showRemainderOverlay = true, - showProgressOverlay = true, - showToolTip = false, - label, - currentIndex, - onChange, - labelMultiplier = 1, -}: TrackProps) => { - const [isDragging, setIsDragging] = useState(false) - const ref = useRef(null) - const size = useComponentSize(ref) - const dragX = useRef<number>() - const indexRef = useLatest(currentIndex) - const stepCount = max - min - const sizePerCell = size.width / stepCount - const x = sizePerCell * currentIndex - sizePerCell * min - const thumbRef = React.useRef<HTMLDivElement>(null) - const remainderRef = React.useRef<HTMLDivElement>(null) - const progressRef = React.useRef<HTMLDivElement>(null) - - useEffect(() => { - if (thumbRef.current != null && !isDragging) { - thumbRef.current.style.transform = `translateX(${x}px)` - } - - if (remainderRef.current != null) { - remainderRef.current.style.left = `${x}px` - } - - if (progressRef.current != null) { - progressRef.current.style.width = `${x}px` - } - }, [isDragging, x]) - - const tooltipStyle = { transform: `translateX(${x}px)`, marginBottom: '30px' } - const thumbStyle = { - transform: `translateX(${dragX.current == null ? x : dragX.current}px)`, - transition: isDragging ? 'none' : '', - touchAction: 'none', - } - const remainderStyle = { - left: `${dragX.current == null ? x : dragX.current}px`, - transition: isDragging ? 'none' : '', - } - const progressStyle = { - right: `${dragX.current == null ? x : dragX.current}px`, - transition: isDragging ? 'none' : '', - } - - const dragBind = useDrag({ - onDragMove(deltaX) { - const currentX = x + deltaX - const roundedMin = toFixedNumber(min, 1, 10) - dragX.current = Math.max(0, Math.min(size.width, currentX)) - // Get value to display in slider. - // Get max if more or equal to max, get min if less or equal to min and then show rest with only one decimal point. - const index = - dragX.current / sizePerCell + min >= max - ? max - : dragX.current / sizePerCell + min <= min - ? min - : roundByNum(dragX.current / sizePerCell, step) === 0 - ? min - : roundByNum(dragX.current / sizePerCell, step) + roundedMin - - if (onChange && index !== indexRef.current) { - onChange(index) - } - - if (thumbRef.current && dragX.current != null) { - thumbRef.current.style.transform = `translateX(${dragX.current}px)` - } - - if (remainderRef.current && dragX.current != null) { - if (!snap) remainderRef.current.style.left = `${dragX.current}px` - } - - if (progressRef.current && dragX.current != null) { - if (!snap) progressRef.current.style.width = `${dragX.current}px` - } - }, - onDragStart() { - setIsDragging(true) - }, - onDragEnd() { - dragX.current = undefined - setIsDragging(false) - }, - }) - - const formatTooltip = (count: number, max?: number) => { - let selectedAmount = count * labelMultiplier - if (max) { - const maxValue = max * labelMultiplier - if (selectedAmount > maxValue) { - selectedAmount = maxValue - } - } - return count <= 1 - ? `${selectedAmount.toLocaleString('is-IS')} ${label.singular}` - : `${selectedAmount.toLocaleString('is-IS')} ${label.plural}` - } - - const onKeyDown = (event: React.KeyboardEvent) => { - if (onChange == null) { - return - } - switch (event.key) { - case 'ArrowLeft': - if (currentIndex > min) { - onChange(currentIndex - step) - } - break - case 'ArrowRight': - if (currentIndex < max) { - onChange(currentIndex + step) - } - break - } - } - - const onCellClick = ( - index: number, - event: React.MouseEvent<HTMLElement, MouseEvent>, - ) => { - const rect = event.currentTarget.getBoundingClientRect() - const percentClicked = event.nativeEvent.offsetX / rect.width - const newIndex = Math.max( - min, - index + min + roundByNum(percentClicked, step), - ) - onChange && onChange(newIndex) - } - - return ( - <Box> - {showMinMaxLabels && ( - <Box display="flex" justifyContent="spaceBetween" width="full"> - <Text color="blue400" variant="eyebrow"> - {formatTooltip(min)} - </Text> - <Text color="blue400" variant="eyebrow"> - {formatTooltip(max)} - </Text> - </Box> - )} - {showLabel && ( - <Text variant="h4" as="p"> - {formatTooltip(currentIndex)} - </Text> - )} - <Box - className={styles.TrackGrid} - marginTop={1} - style={{ - gridTemplateColumns: `repeat(${stepCount}, 1fr)`, - ...trackStyle, - }} - ref={ref} - > - {Array.from({ length: stepCount }).map((_, index) => { - return ( - <Box - className={styles.TrackCell} - key={index} - style={calculateCellStyle(index)} - onClick={(e) => onCellClick(index, e)} - /> - ) - })} - {showToolTip && ( - <Tooltip style={tooltipStyle} atEnd={currentIndex === max}> - {formatTooltip(currentIndex, max)} - </Tooltip> - )} - <Box - className={styles.Thumb} - data-test="slider-thumb" - style={thumbStyle} - ref={thumbRef} - {...dragBind} - onKeyDown={onKeyDown} - tabIndex={0} - /> - {showRemainderOverlay && ( - <Box - className={styles.remainderBar} - style={remainderStyle} - ref={remainderRef} - /> - )} - {showProgressOverlay && ( - <Box - className={styles.progressBar} - style={progressStyle} - ref={progressRef} - /> - )} - </Box> - </Box> - ) -} - -export default Slider diff --git a/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/utils.ts b/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/utils.ts deleted file mode 100644 index c6541a3ae05c..000000000000 --- a/libs/application/templates/alcohol-tax-redemption/src/fields/Components/SliderWithGraphic/Slider/utils.ts +++ /dev/null @@ -1,82 +0,0 @@ -import React, { useRef } from 'react' - -interface UseDragOptions { - onDragStart?: () => void - onDragEnd?: (delta: number) => void - onDragMove?: (delta: number) => void -} - -interface PointerInfo { - id: number - startX: number -} - -export const useDrag = ({ - onDragStart, - onDragEnd, - onDragMove, -}: UseDragOptions) => { - const pointerInfo = useRef<PointerInfo | null>(null) - - const handleDragStart = (event: React.PointerEvent<HTMLElement>) => { - if (event.button !== 0) { - return - } - event.preventDefault() - - pointerInfo.current = { id: event.pointerId, startX: event.clientX } - - event.currentTarget.setPointerCapture(event.pointerId) - event.currentTarget.addEventListener('pointermove', handleDragMove) - event.currentTarget.addEventListener('pointerup', handleDragEnd) - event.currentTarget.addEventListener('pointercancel', handleDragEnd) - - if (onDragStart) { - onDragStart() - } - } - - const handleDragMove = (event: PointerEvent) => { - if ( - pointerInfo.current === null || - pointerInfo.current?.id !== event.pointerId - ) { - return - } - event.preventDefault() - - const deltaX = event.clientX - pointerInfo.current.startX - - if (onDragMove) { - onDragMove(deltaX) - } - } - - const handleDragEnd = (event: PointerEvent) => { - if ( - event.button !== 0 || - pointerInfo.current === null || - pointerInfo.current?.id !== event.pointerId - ) { - return - } - event.preventDefault() - - const deltaX = event.clientX - pointerInfo.current.startX - pointerInfo.current = null - - if (event.currentTarget && event.currentTarget instanceof HTMLElement) { - event.currentTarget.removeEventListener('pointermove', handleDragMove) - event.currentTarget.removeEventListener('pointerup', handleDragEnd) - event.currentTarget.removeEventListener('pointercancel', handleDragEnd) - } - - if (onDragEnd) { - onDragEnd(deltaX) - } - } - - return { - onPointerDown: handleDragStart, - } -} diff --git a/libs/application/templates/financial-aid/src/fields/AboutForm/AboutForm.tsx b/libs/application/templates/financial-aid/src/fields/AboutForm/AboutForm.tsx deleted file mode 100644 index 976f27f7ee55..000000000000 --- a/libs/application/templates/financial-aid/src/fields/AboutForm/AboutForm.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Text, Box } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { currentMonth } from '@island.is/financial-aid/shared/lib' - -import { DescriptionText, PrivacyPolicyAccordion } from '..' -import { FAFieldBaseProps } from '../../lib/types' -import withLogo from '../Logo/Logo' -import { aboutForm } from '../../lib/messages' - -const AboutForm = ({ application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { lang } = useLocale() - - return ( - <> - <Text variant="h3" fontWeight="light" marginBottom={3}> - {formatMessage(aboutForm.general.description, { - currentMonth: currentMonth(lang), - })} - </Text> - <Box marginBottom={5}> - <DescriptionText text={aboutForm.bulletList.content} /> - </Box> - - <PrivacyPolicyAccordion - municipalityPageUrl={ - application.externalData.municipality.data?.homepage - } - /> - </> - ) -} - -export default withLogo(AboutForm) diff --git a/libs/application/templates/financial-aid/src/fields/AboutSpouseForm/AboutSpouseForm.tsx b/libs/application/templates/financial-aid/src/fields/AboutSpouseForm/AboutSpouseForm.tsx deleted file mode 100644 index 9cc82c71dd69..000000000000 --- a/libs/application/templates/financial-aid/src/fields/AboutSpouseForm/AboutSpouseForm.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react' -import { - currentMonth, - getNextPeriod, -} from '@island.is/financial-aid/shared/lib' -import { Box } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' - -import { aboutSpouseForm } from '../../lib/messages' -import { DescriptionText, PrivacyPolicyAccordion } from '..' -import { FAFieldBaseProps } from '../../lib/types' -import withLogo from '../Logo/Logo' - -const AboutSpouseForm = ({ application }: FAFieldBaseProps) => { - const { lang } = useLocale() - const { nationalRegistry, municipality } = application.externalData - - return ( - <> - <DescriptionText - textProps={{ variant: 'h3', fontWeight: 'light', marginTop: 2 }} - text={aboutSpouseForm.general.description} - format={{ - spouseName: nationalRegistry.data.fullName, - currentMonth: currentMonth(lang), - nextMonth: getNextPeriod(lang).month, - }} - /> - <Box marginTop={5}> - <PrivacyPolicyAccordion - municipalityPageUrl={municipality.data?.homepage} - /> - </Box> - </> - ) -} - -export default withLogo(AboutSpouseForm) diff --git a/libs/application/templates/financial-aid/src/fields/BankInfoForm/BankInfoForm.tsx b/libs/application/templates/financial-aid/src/fields/BankInfoForm/BankInfoForm.tsx deleted file mode 100644 index 463cece0ae97..000000000000 --- a/libs/application/templates/financial-aid/src/fields/BankInfoForm/BankInfoForm.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import React from 'react' -import { Box, Text, GridRow, GridColumn } from '@island.is/island-ui/core' -import { FAFieldBaseProps } from '../../lib/types' -import { useIntl } from 'react-intl' -import { bankInfoForm } from '../../lib/messages' -import { InputController } from '@island.is/shared/form-fields' -import withLogo from '../Logo/Logo' - -const BankInfoForm = ({ field, application }: FAFieldBaseProps) => { - const { id } = field - const { formatMessage } = useIntl() - const { answers } = application - - const bankNumberId = `${id}.bankNumber` - const ledgerId = `${id}.ledger` - const accountNumberId = `${id}.accountNumber` - - return ( - <> - <Text marginTop={2} marginBottom={[2, 2, 4]}> - {formatMessage(bankInfoForm.general.info)} - </Text> - <GridRow marginBottom={3}> - <GridColumn span={['12/12', '12/12', '12/12', '4/12']}> - <Box marginBottom={[2, 2, 4]}> - <InputController - id={bankNumberId} - name={bankNumberId} - defaultValue={answers?.bankInfo?.bankNumber} - label={formatMessage(bankInfoForm.inputsLabels.bankNumber)} - placeholder={formatMessage( - bankInfoForm.inputsPlaceholders.bankNumber, - )} - format="####" - backgroundColor="blue" - autoFocus - /> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '2/12']}> - <Box marginBottom={[2, 2, 4]}> - <InputController - id={ledgerId} - name={ledgerId} - defaultValue={answers?.bankInfo?.ledger} - label={formatMessage(bankInfoForm.inputsLabels.ledger)} - placeholder={formatMessage( - bankInfoForm.inputsPlaceholders.ledger, - )} - format="##" - backgroundColor="blue" - /> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box marginBottom={[2, 2, 4]}> - <InputController - id={accountNumberId} - name={accountNumberId} - defaultValue={answers?.bankInfo?.accountNumber} - label={formatMessage(bankInfoForm.inputsLabels.accountNumber)} - placeholder={formatMessage( - bankInfoForm.inputsPlaceholders.accountNumber, - )} - format="######" - backgroundColor="blue" - /> - </Box> - </GridColumn> - </GridRow> - <Text as="h3" variant="h4" marginBottom={1}> - {formatMessage(bankInfoForm.general.descriptionTitle)} - </Text> - - <Text variant="small"> - {formatMessage(bankInfoForm.general.description)} - </Text> - </> - ) -} - -export default withLogo(BankInfoForm) diff --git a/libs/application/templates/financial-aid/src/fields/Breakdown/Breakdown.tsx b/libs/application/templates/financial-aid/src/fields/Breakdown/Breakdown.tsx deleted file mode 100644 index a47114c970b1..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Breakdown/Breakdown.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import { Text, Box } from '@island.is/island-ui/core' -import { Calculations } from '@island.is/financial-aid/shared/lib' - -interface Props { - calculations: Calculations[] -} - -const Breakdown = ({ calculations }: Props) => { - return ( - <> - {calculations.map((item, index) => { - const isLastItem = index === calculations.length - 1 - - return ( - <span key={'calculation-' + index}> - <Box - display="flex" - justifyContent="spaceBetween" - paddingY={2} - paddingX={3} - borderTopWidth="standard" - borderColor="blue200" - background={isLastItem ? 'blue100' : 'white'} - borderBottomWidth={isLastItem ? 'standard' : undefined} - > - <Text variant="small">{item.title}</Text> - <Text>{item.calculation}</Text> - </Box> - </span> - ) - })} - </> - ) -} - -export default Breakdown diff --git a/libs/application/templates/financial-aid/src/fields/ChildrenFilesForm/ChildrenFilesForm.tsx b/libs/application/templates/financial-aid/src/fields/ChildrenFilesForm/ChildrenFilesForm.tsx deleted file mode 100644 index 9a640093a7bf..000000000000 --- a/libs/application/templates/financial-aid/src/fields/ChildrenFilesForm/ChildrenFilesForm.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { Text, UploadFile } from '@island.is/island-ui/core' -import { childrenFilesForm } from '../../lib/messages' -import { FAFieldBaseProps, OverrideAnswerSchema, UploadFileType } from '../..' -import { Files } from '..' -import withLogo from '../Logo/Logo' - -const ChildrenFilesForm = ({ field, application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { id, answers } = application - - return ( - <> - <Text marginTop={2} marginBottom={[3, 3, 5]}> - {formatMessage(childrenFilesForm.general.description)} - </Text> - <Files - fileKey={field.id as UploadFileType} - uploadFiles={ - answers[field.id as keyof OverrideAnswerSchema] as UploadFile[] - } - folderId={id} - /> - </> - ) -} - -export default withLogo(ChildrenFilesForm) diff --git a/libs/application/templates/financial-aid/src/fields/ChildrenForm/ChildInput.tsx b/libs/application/templates/financial-aid/src/fields/ChildrenForm/ChildInput.tsx deleted file mode 100644 index 587be9cdd6fb..000000000000 --- a/libs/application/templates/financial-aid/src/fields/ChildrenForm/ChildInput.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import React, { FC } from 'react' - -import { Text, Box } from '@island.is/island-ui/core' - -import { childrenForm } from '../../lib/messages' -import format from 'date-fns/format' - -import { InputController } from '@island.is/shared/form-fields' - -import kennitala from 'kennitala' -import { useLocale } from '@island.is/localization' -import { RecordObject } from '@island.is/application/types' -import { getErrorViaPath } from '@island.is/application/core' -import { useFormContext } from 'react-hook-form' - -interface Props { - fieldIndex: string - errors: RecordObject<unknown> | undefined - childFullName: string - childNationalId: string -} - -export const ChildInput: FC<React.PropsWithChildren<Props>> = ({ - fieldIndex, - errors, - childFullName, - childNationalId, -}) => { - const { setValue, clearErrors } = useFormContext() - - const schoolField = `${fieldIndex}.school` - const nameField = `${fieldIndex}.fullName` - const nationalIdField = `${fieldIndex}.nationalId` - - setValue(nameField, childFullName) - setValue(nationalIdField, childNationalId) - - const nationalId = childNationalId - const kennitalaInfo = kennitala.info(nationalId) - const birthday = kennitalaInfo?.birthday - const age = kennitalaInfo?.age - const dateOfBirth = new Date(birthday) - - const { formatMessage } = useLocale() - - if (age >= 18) { - return null - } - return ( - <Box - marginBottom={5} - background="blue100" - padding={3} - borderRadius="standard" - key={childNationalId} - > - <Text variant="h3" fontWeight="semiBold" marginBottom={1}> - {childFullName} - </Text> - <Text variant="small"> - {formatMessage(childrenForm.page.birthday, { - birthday: format(dateOfBirth, 'dd.MM.yyyy'), - })} - </Text> - - <Box marginTop={[2, 2, 3]}> - <InputController - id={schoolField} - name={schoolField} - required={true} - placeholder={formatMessage(childrenForm.inputs.schoolPlaceholder)} - label={formatMessage(childrenForm.inputs.schoolLabel)} - error={errors && getErrorViaPath(errors, schoolField)} - backgroundColor="white" - onChange={() => { - clearErrors(schoolField) - }} - /> - </Box> - </Box> - ) -} diff --git a/libs/application/templates/financial-aid/src/fields/Confirmation/ApplicantConfirmation.tsx b/libs/application/templates/financial-aid/src/fields/Confirmation/ApplicantConfirmation.tsx deleted file mode 100644 index 79fd6945a41c..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Confirmation/ApplicantConfirmation.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react' - -import { ApproveOptions, FAFieldBaseProps } from '../../lib/types' -import { confirmation } from '../../lib/messages' -import { hasFiles, hasSpouse } from '../../lib/utils' -import Confirmation from './Confirmation' - -const ApplicantConfirmation = ({ application }: FAFieldBaseProps) => { - const { answers, externalData } = application - - const applicantHasSpouse = hasSpouse(answers, externalData) - const missingIncomeFiles = - answers.income === ApproveOptions.Yes && !hasFiles('incomeFiles', answers) - - const firstStepText = () => { - switch (true) { - case applicantHasSpouse && missingIncomeFiles: - return confirmation.nextSteps.contentBothMissingFiles - case applicantHasSpouse: - return confirmation.nextSteps.contentSpouseMissingFiles - case missingIncomeFiles: - return confirmation.nextSteps.contentMissingFiles - } - } - - return ( - <Confirmation - firstStepText={firstStepText()} - missingIncomeFiles={missingIncomeFiles} - hasSpouse={applicantHasSpouse} - spouseEmailSuccess={ - application.externalData.sendSpouseEmail?.data.success - } - municipalityHomepage={externalData.municipality.data?.homepage} - /> - ) -} - -export default ApplicantConfirmation diff --git a/libs/application/templates/financial-aid/src/fields/Confirmation/Confirmation.tsx b/libs/application/templates/financial-aid/src/fields/Confirmation/Confirmation.tsx deleted file mode 100644 index 956ef692f842..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Confirmation/Confirmation.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import React from 'react' -import { MessageDescriptor, useIntl } from 'react-intl' - -import { getNextPeriod } from '@island.is/financial-aid/shared/lib' -import { AlertMessage, Box, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' - -import { confirmation, copyUrl } from '../../lib/messages' -import { DescriptionText, ConfirmationSectionImage, CopyUrl } from '..' - -interface Props { - firstStepText?: MessageDescriptor - missingIncomeFiles: boolean - hasSpouse?: boolean - spouseEmailSuccess?: boolean - municipalityHomepage?: string -} - -const Confirmation = ({ - firstStepText, - missingIncomeFiles, - hasSpouse, - spouseEmailSuccess, - municipalityHomepage, -}: Props) => { - const { formatMessage } = useIntl() - const { lang } = useLocale() - - return ( - <> - <Box marginTop={[4, 4, 5]}> - {missingIncomeFiles ? ( - <AlertMessage - type="warning" - title={formatMessage(confirmation.alertMessages.dataNeeded)} - message={formatMessage(confirmation.alertMessages.dataNeededText)} - /> - ) : ( - <AlertMessage - type="success" - title={ - hasSpouse - ? formatMessage( - confirmation.alertMessagesInRelationship.success, - ) - : formatMessage(confirmation.alertMessages.success) - } - /> - )} - {hasSpouse && ( - <Box marginTop={[2, 2, 3]}> - <AlertMessage - type="warning" - title={formatMessage( - confirmation.alertMessagesInRelationship.dataNeeded, - )} - message={formatMessage( - spouseEmailSuccess - ? confirmation.alertMessagesInRelationship.dataNeededText - : confirmation.alertMessagesInRelationship - .dataNeededAlternativeText, - )} - /> - </Box> - )} - </Box> - - <Text as="h3" variant="h3" marginTop={[4, 4, 5]}> - {formatMessage(confirmation.nextSteps.title)} - </Text> - <Box marginTop={2}> - {firstStepText && <DescriptionText text={firstStepText} />} - <Box marginTop={2}> - <DescriptionText - text={confirmation.nextSteps.content} - format={{ nextMonth: getNextPeriod(lang).month }} - /> - </Box> - </Box> - - {hasSpouse && ( - <> - <Text as="h3" variant="h3" marginTop={[4, 4, 5]}> - {formatMessage(confirmation.sharedLink.title)} - </Text> - <Box marginTop={2}> - <CopyUrl - inputLabel={formatMessage(copyUrl.inputLabel)} - buttonLabel={formatMessage(copyUrl.buttonLabel)} - successMessage={formatMessage(copyUrl.successMessage)} - /> - </Box> - </> - )} - - <Text as="h3" variant="h3" marginTop={[4, 4, 5]}> - {formatMessage(confirmation.links.title)} - </Text> - <Box marginTop={2}> - <DescriptionText - text={confirmation.links.content} - textProps={{ variant: 'small' }} - format={{ - statusPage: window.location.href, - homePage: municipalityHomepage || '', - }} - /> - </Box> - <Box marginTop={[4, 4, 6]}> - <ConfirmationSectionImage /> - </Box> - </> - ) -} - -export default Confirmation diff --git a/libs/application/templates/financial-aid/src/fields/Confirmation/SpouseConfirmation.tsx b/libs/application/templates/financial-aid/src/fields/Confirmation/SpouseConfirmation.tsx deleted file mode 100644 index 2fec48e4e8bf..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Confirmation/SpouseConfirmation.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' - -import { ApproveOptions, FAFieldBaseProps } from '../../lib/types' -import { confirmation } from '../../lib/messages' -import { hasFiles } from '../../lib/utils' -import Confirmation from './Confirmation' - -const SpouseConfirmation = ({ application }: FAFieldBaseProps) => { - const { answers, externalData } = application - - const missingIncomeFiles = - answers.spouseIncome === ApproveOptions.Yes && - !hasFiles('spouseIncomeFiles', answers) - - return ( - <Confirmation - firstStepText={ - missingIncomeFiles - ? confirmation.nextSteps.contentMissingFiles - : undefined - } - missingIncomeFiles={missingIncomeFiles} - municipalityHomepage={externalData.municipality.data?.homepage} - /> - ) -} - -export default SpouseConfirmation diff --git a/libs/application/templates/financial-aid/src/fields/ConfirmationSectionImage/ConfirmationSectionImage.tsx b/libs/application/templates/financial-aid/src/fields/ConfirmationSectionImage/ConfirmationSectionImage.tsx deleted file mode 100644 index 822bf4294a83..000000000000 --- a/libs/application/templates/financial-aid/src/fields/ConfirmationSectionImage/ConfirmationSectionImage.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import { Box } from '@island.is/island-ui/core' - -import { confirmationIllustration } from '../Shared.css' - -const ConfirmationSectionImage = () => { - return ( - <Box className={confirmationIllustration}> - <img - src={ - 'https://images.ctfassets.net/8k0h54kbe6bj/76vWi6FRQd37hITKClZzvy/bb961452776ed1051a748b1e508c1576/fa-application-submitted.svg' - } - alt="" - /> - </Box> - ) -} -export default ConfirmationSectionImage diff --git a/libs/application/templates/financial-aid/src/fields/ContactInfo/ContactInfo.tsx b/libs/application/templates/financial-aid/src/fields/ContactInfo/ContactInfo.tsx deleted file mode 100644 index c3ed1d0da863..000000000000 --- a/libs/application/templates/financial-aid/src/fields/ContactInfo/ContactInfo.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React from 'react' -import { Text, Box } from '@island.is/island-ui/core' -import { FAFieldBaseProps } from '../../lib/types' -import { useIntl } from 'react-intl' -import { contactInfo } from '../../lib/messages' -import { InputController } from '@island.is/shared/form-fields' -import { useFormContext } from 'react-hook-form' -import { getValueViaPath } from '@island.is/application/core' -import { answersSchema } from '../../lib/dataSchema' -import { Routes } from '../../lib/constants' -import withLogo from '../Logo/Logo' - -const ContactInfo = ({ field, errors, application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { answers } = application - const { id } = field - const { clearErrors } = useFormContext() - - const emailPath = `${id}.email` - const phonePath = `${id}.phone` - - return ( - <> - <Text marginTop={2}> - {formatMessage(contactInfo.general.description)} - </Text> - <Box marginTop={[2, 2, 4]}> - <InputController - id={emailPath} - name={emailPath} - backgroundColor="blue" - type="email" - label={formatMessage(contactInfo.emailInput.label)} - placeholder={formatMessage(contactInfo.emailInput.placeholder)} - error={getValueViaPath(errors, emailPath)} - defaultValue={ - id === Routes.SPOUSECONTACTINFO - ? getValueViaPath(answers as answersSchema, emailPath) || - answers.spouse?.email || - answers.relationshipStatus?.spouseEmail - : getValueViaPath(answers as answersSchema, emailPath) - } - onChange={() => { - clearErrors(emailPath) - }} - /> - </Box> - <Box marginTop={[2, 2, 3]}> - <InputController - id={phonePath} - name={phonePath} - backgroundColor="blue" - format="### ####" - type="tel" - label={formatMessage(contactInfo.phoneInput.label)} - placeholder={formatMessage(contactInfo.phoneInput.placeholder)} - error={getValueViaPath(errors, phonePath)} - defaultValue={getValueViaPath(answers as answersSchema, phonePath)} - onChange={() => { - clearErrors(phonePath) - }} - /> - </Box> - </> - ) -} - -export default withLogo(ContactInfo) diff --git a/libs/application/templates/financial-aid/src/fields/DescriptionText/DescriptionText.css.ts b/libs/application/templates/financial-aid/src/fields/DescriptionText/DescriptionText.css.ts deleted file mode 100644 index 187b2465e07c..000000000000 --- a/libs/application/templates/financial-aid/src/fields/DescriptionText/DescriptionText.css.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { theme } from '@island.is/island-ui/theme' -import { style, globalStyle } from '@vanilla-extract/css' - -const mediumBoxShadow = `inset 0 -2px 0 0 currentColor` -const smallBoxShadow = `inset 0 -1px 0 0 currentColor` -const activeBoxShadow = `inset 0 -2px 0 0 ${theme.color.mint400}` - -const linkStyle = { - color: theme.color.blue400, - fontWeight: theme.typography.semiBold, - paddingBottom: 4, - textDecoration: 'none', - boxShadow: smallBoxShadow, - transition: 'color .2s, box-shadow .2s', -} - -const linkHoverStyle = { - color: theme.color.blueberry600, - boxShadow: mediumBoxShadow, -} - -const linkFocusStyle = { - color: theme.color.dark400, - boxShadow: smallBoxShadow, - background: theme.color.mint400, -} - -const linkActiveStyle = { - color: theme.color.blueberry600, - boxShadow: activeBoxShadow, -} - -// Creates an empty container to target -export const paragraphContainer = style({}) -// We need both global styles inside the paragraphContainer and a specific link -// style for standalone links or links within other elements than <p> -globalStyle(`${paragraphContainer} a`, linkStyle) -globalStyle(`${paragraphContainer} a:hover`, linkHoverStyle) -globalStyle(`${paragraphContainer} a:focus`, linkFocusStyle) -globalStyle(`${paragraphContainer} a:active`, linkActiveStyle) - -export const link = style({ - ...linkStyle, - ':hover': linkHoverStyle, - ':focus': linkFocusStyle, - ':active': linkActiveStyle, -}) diff --git a/libs/application/templates/financial-aid/src/fields/DescriptionText/DescriptionText.tsx b/libs/application/templates/financial-aid/src/fields/DescriptionText/DescriptionText.tsx deleted file mode 100644 index 24513f73d03c..000000000000 --- a/libs/application/templates/financial-aid/src/fields/DescriptionText/DescriptionText.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import React, { ReactNode } from 'react' -import Markdown from 'markdown-to-jsx' -import { MessageDescriptor, useIntl } from 'react-intl' -import { - Box, - Text, - BulletList, - Bullet, - Link, - TextProps, -} from '@island.is/island-ui/core' -import * as styles from './DescriptionText.css' - -const Bulletlist = ({ children }: { children: ReactNode }) => { - return <BulletList space={2}>{children}</BulletList> -} - -const TextComponent = ({ children, ...props }: { children: ReactNode }) => { - return ( - <Box className={styles.paragraphContainer}> - <Text {...props}>{children}</Text> - </Box> - ) -} - -const LinkComponent = ({ - children, - href, -}: { - children: ReactNode - href: string -}) => { - return ( - <Link href={href} className={styles.link}> - {children} - </Link> - ) -} - -interface Props { - text: MessageDescriptor - format?: { [key: string]: string | number } - textProps?: TextProps -} - -const headingOverride = { - component: Text, - props: { - variant: 'h4', - marginBottom: 1, - }, -} - -const textOverrideProps: TextProps = { - marginBottom: 2, -} - -const DescriptionText = ({ text, format, textProps }: Props) => { - const { formatMessage } = useIntl() - const markdown = formatMessage(text, format) - // markdown-to-jsx is able to handle this in most cases but when using 'formatMessage' - // it does not work for some reason. That is the reason for this special handling here. - // We will take a look at this later with the localization team. - const formattedMarkdown = markdown.replace(/'/g, ''') - return ( - <Markdown - options={{ - forceBlock: true, - overrides: { - p: { - component: TextComponent, - props: { ...textOverrideProps, ...textProps }, - }, - span: { - component: TextComponent, - props: { ...textOverrideProps, ...textProps }, - }, - h1: headingOverride, - h2: headingOverride, - h3: headingOverride, - h4: headingOverride, - a: { component: LinkComponent }, - ul: { - component: Bulletlist, - }, - li: { - component: Bullet, - }, - }, - }} - > - {formattedMarkdown} - </Markdown> - ) -} - -export default DescriptionText diff --git a/libs/application/templates/financial-aid/src/fields/DirectTaxPaymentsModal/DirectTaxPaymentModal.css.ts b/libs/application/templates/financial-aid/src/fields/DirectTaxPaymentsModal/DirectTaxPaymentModal.css.ts deleted file mode 100644 index 738ee28be93d..000000000000 --- a/libs/application/templates/financial-aid/src/fields/DirectTaxPaymentsModal/DirectTaxPaymentModal.css.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { theme } from '@island.is/island-ui/theme' -import { globalStyle, style } from '@vanilla-extract/css' - -export const modalBase = style({ - height: '100%', - display: 'block', -}) - -export const container = style({ - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - '@media': { - [`screen and (min-width: ${theme.breakpoints.sm}px)`]: { - height: '100%', - }, - }, -}) - -export const modal = style({ - maxWidth: '752px', - width: '100%', - boxShadow: '0px 4px 30px rgba(0, 97, 255, 0.16)', -}) - -export const tableContainer = style({ - width: '100%', -}) - -export const tableHeaders = style({ - display: 'none', - borderBottom: `1px solid ${theme.color.blue200}`, - '@media': { - [`screen and (min-width: ${theme.breakpoints.sm}px)`]: { - display: ' table-row', - }, - }, -}) - -export const tableItem = style({ - borderBottom: `1px solid ${theme.color.blue200}`, -}) - -globalStyle(`${tableContainer} th, td`, { - paddingRight: theme.spacing[7], - paddingLeft: theme.spacing[7], - paddingTop: theme.spacing[3], - paddingBottom: theme.spacing[3], -}) diff --git a/libs/application/templates/financial-aid/src/fields/DirectTaxPaymentsModal/DirectTaxPaymentModal.tsx b/libs/application/templates/financial-aid/src/fields/DirectTaxPaymentsModal/DirectTaxPaymentModal.tsx deleted file mode 100644 index b2fb8481b914..000000000000 --- a/libs/application/templates/financial-aid/src/fields/DirectTaxPaymentsModal/DirectTaxPaymentModal.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { ModalBase, Text, Box, Button } from '@island.is/island-ui/core' - -import { DirectTaxPayment } from '@island.is/financial-aid/shared/lib' -import { TaxBreakdown } from '..' -import { directTaxPaymentModal } from '../../lib/messages' - -import * as styles from './DirectTaxPaymentModal.css' - -interface Props { - isVisible: boolean - onVisibilityChange: (isOpen: boolean) => void - items: DirectTaxPayment[] - dateDataWasFetched: string -} - -const DirectTaxPaymentModal = ({ - isVisible, - onVisibilityChange, - items, - dateDataWasFetched, -}: Props) => { - const { formatMessage } = useIntl() - - return ( - <ModalBase - baseId="directTaxPaymentModal" - className={styles.modalBase} - isVisible={isVisible} - onVisibilityChange={(visibility) => { - if (visibility !== isVisible) { - onVisibilityChange(visibility) - } - }} - > - {({ closeModal }) => ( - <Box onClick={closeModal} className={styles.container}> - <Box - position="relative" - background="white" - borderRadius="large" - paddingY={4} - paddingX={4} - className={styles.modal} - > - <Text variant="h3" marginBottom={4}> - {formatMessage(directTaxPaymentModal.general.headline)} - </Text> - - <TaxBreakdown - items={items} - dateDataWasFetched={dateDataWasFetched} - /> - - <Box paddingTop={4} display="flex" justifyContent="flexEnd"> - <Button onClick={closeModal}> - {formatMessage(directTaxPaymentModal.general.close)} - </Button> - </Box> - </Box> - </Box> - )} - </ModalBase> - ) -} - -export default DirectTaxPaymentModal diff --git a/libs/application/templates/financial-aid/src/fields/EmploymentForm/EmploymentForm.tsx b/libs/application/templates/financial-aid/src/fields/EmploymentForm/EmploymentForm.tsx deleted file mode 100644 index 1cdf2e305191..000000000000 --- a/libs/application/templates/financial-aid/src/fields/EmploymentForm/EmploymentForm.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import React from 'react' -import { Box, Input } from '@island.is/island-ui/core' -import { employmentForm, input } from '../../lib/messages' -import { useIntl } from 'react-intl' - -import { RadioController } from '@island.is/shared/form-fields' -import { Controller, useFormContext } from 'react-hook-form' -import { Employment } from '@island.is/financial-aid/shared/lib' -import * as styles from '../Shared.css' -import cn from 'classnames' -import { FAFieldBaseProps, InputTypes } from '../../lib/types' -import withLogo from '../Logo/Logo' - -const EmploymentForm = ({ application, errors }: FAFieldBaseProps) => { - const typeInput = { - id: 'employment.type', - error: errors?.employment?.type, - } as InputTypes - - const customInput = { - id: 'employment.custom', - error: errors?.employment?.custom, - } as InputTypes - - const { formatMessage } = useIntl() - - const { answers } = application - - const { setValue, getValues, clearErrors } = useFormContext() - - return ( - <> - <Box marginTop={5}> - <RadioController - id={typeInput.id} - defaultValue={answers?.employment?.type} - options={[ - { - value: Employment.WORKING, - label: formatMessage(employmentForm.employment.working), - }, - { - value: Employment.UNEMPLOYED, - label: formatMessage(employmentForm.employment.unemployed), - }, - { - value: Employment.CANNOTWORK, - label: formatMessage(employmentForm.employment.cannotWork), - }, - { - value: Employment.OTHER, - label: formatMessage(employmentForm.employment.other), - }, - ]} - largeButtons - backgroundColor="white" - error={typeInput.error} - /> - </Box> - - <Box - className={cn({ - [`${styles.inputContainer}`]: true, - [`${styles.inputAppear}`]: - getValues(typeInput.id) === Employment.OTHER, - })} - > - <Controller - name={customInput.id} - defaultValue={answers?.employment?.custom} - render={({ field: { onChange, value } }) => { - return ( - <Input - id={customInput.id} - name={customInput.id} - label={formatMessage(input.label)} - value={value} - textarea={true} - rows={8} - backgroundColor="blue" - hasError={customInput.error !== undefined} - errorMessage={customInput.error} - onChange={(e) => { - clearErrors(customInput.id) - onChange(e.target.value) - setValue(customInput.id, e.target.value) - }} - /> - ) - }} - /> - </Box> - </> - ) -} - -export default withLogo(EmploymentForm) diff --git a/libs/application/templates/financial-aid/src/fields/FileUploadContainer/FileUploadContainer.tsx b/libs/application/templates/financial-aid/src/fields/FileUploadContainer/FileUploadContainer.tsx deleted file mode 100644 index 8206fddde401..000000000000 --- a/libs/application/templates/financial-aid/src/fields/FileUploadContainer/FileUploadContainer.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React, { ReactNode } from 'react' -import { useIntl } from 'react-intl' -import { Text, Box, GridRow, GridColumn } from '@island.is/island-ui/core' -import { filesText } from '../../lib/messages' -import cn from 'classnames' -import * as styles from './../Shared.css' -interface Props { - children: ReactNode - hasError?: boolean -} - -const FileUploadContainer = ({ children, hasError = false }: Props) => { - const { formatMessage } = useIntl() - - return ( - <GridRow marginBottom={3}> - <GridColumn - span={['12/12', '12/12', '12/12', '9/12']} - offset={['0', '0', '0', '1/12']} - > - <Box marginBottom={[1, 1, 2]}>{children}</Box> - <div - className={cn(styles.errorMessage, { - [`${styles.showErrorMessage}`]: hasError, - })} - > - <Text color="red600" fontWeight="semiBold" variant="small"> - {formatMessage(filesText.errorMessage)} - </Text> - </div> - </GridColumn> - </GridRow> - ) -} - -export default FileUploadContainer diff --git a/libs/application/templates/financial-aid/src/fields/Files/Files.tsx b/libs/application/templates/financial-aid/src/fields/Files/Files.tsx deleted file mode 100644 index 4fb979e8c9d6..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Files/Files.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import React, { useEffect } from 'react' -import { InputFileUpload, UploadFile } from '@island.is/island-ui/core' - -import { useIntl } from 'react-intl' -import { filesText } from '../../lib/messages' -import { FileUploadContainer } from '..' -import { UploadFileType } from '../../lib/types' -import { useFormContext } from 'react-hook-form' -import { useFileUpload } from '../../lib/hooks/useFileUpload' -import { FILE_SIZE_LIMIT, UPLOAD_ACCEPT } from '../../lib/constants' - -interface Props { - uploadFiles: UploadFile[] - fileKey: UploadFileType - folderId: string - hasError?: boolean -} - -const Files = ({ uploadFiles, fileKey, folderId, hasError = false }: Props) => { - const { formatMessage } = useIntl() - const { setValue } = useFormContext() - - const { - files, - uploadErrorMessage, - onChange, - onRemove, - onRetry, - onUploadRejection, - } = useFileUpload(uploadFiles, folderId) - - const fileToObject = (file: UploadFile) => { - return { - key: file.key, - name: file.name, - size: file.size, - status: file.status, - percent: file?.percent, - } - } - - useEffect(() => { - const formFiles = files - .filter((f) => f.status === 'done') - .map((f) => { - return fileToObject(f) - }) - setValue(fileKey, formFiles) - }, [files]) - - return ( - <FileUploadContainer hasError={hasError}> - <InputFileUpload - fileList={files} - header={formatMessage(filesText.header)} - description={formatMessage(filesText.description)} - buttonLabel={formatMessage(filesText.buttonLabel)} - showFileSize={true} - errorMessage={uploadErrorMessage} - onChange={onChange} - onRemove={onRemove} - onRetry={onRetry} - onUploadRejection={onUploadRejection} - maxSize={FILE_SIZE_LIMIT} - accept={UPLOAD_ACCEPT} - /> - </FileUploadContainer> - ) -} - -export default Files diff --git a/libs/application/templates/financial-aid/src/fields/HomeCircumstancesForm/HomeCircumstancesForm.tsx b/libs/application/templates/financial-aid/src/fields/HomeCircumstancesForm/HomeCircumstancesForm.tsx deleted file mode 100644 index c3bb45953858..000000000000 --- a/libs/application/templates/financial-aid/src/fields/HomeCircumstancesForm/HomeCircumstancesForm.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import React from 'react' -import { Box, Input } from '@island.is/island-ui/core' -import { homeCircumstancesForm, input } from '../../lib/messages' -import { useIntl } from 'react-intl' - -import { RadioController } from '@island.is/shared/form-fields' -import { Controller, useFormContext } from 'react-hook-form' -import { HomeCircumstances } from '@island.is/financial-aid/shared/lib' -import * as styles from '../Shared.css' -import cn from 'classnames' -import { FAFieldBaseProps, InputTypes } from '../../lib/types' -import withLogo from '../Logo/Logo' - -const HomeCircumstancesForm = ({ application, errors }: FAFieldBaseProps) => { - const typeInput = { - id: 'homeCircumstances.type', - error: errors?.homeCircumstances?.type, - } as InputTypes - - const customInput = { - id: 'homeCircumstances.custom', - error: errors?.homeCircumstances?.custom, - } as InputTypes - - const { formatMessage } = useIntl() - - const { answers } = application - - const { setValue, getValues, clearErrors } = useFormContext() - - return ( - <> - <Box marginTop={5}> - <RadioController - id={typeInput.id} - defaultValue={answers?.homeCircumstances?.type} - options={[ - { - value: HomeCircumstances.OWNPLACE, - label: formatMessage( - homeCircumstancesForm.circumstances.ownPlace, - ), - }, - { - value: HomeCircumstances.REGISTEREDLEASE, - label: formatMessage( - homeCircumstancesForm.circumstances.registeredLease, - ), - }, - { - value: HomeCircumstances.UNREGISTEREDLEASE, - label: formatMessage( - homeCircumstancesForm.circumstances.unregisteredLease, - ), - }, - - { - value: HomeCircumstances.WITHOTHERS, - label: formatMessage( - homeCircumstancesForm.circumstances.withOthers, - ), - }, - { - value: HomeCircumstances.WITHPARENTS, - label: formatMessage( - homeCircumstancesForm.circumstances.withParents, - ), - }, - { - value: HomeCircumstances.OTHER, - label: formatMessage(homeCircumstancesForm.circumstances.other), - }, - ]} - largeButtons - backgroundColor="white" - error={typeInput.error} - /> - </Box> - - <Box - className={cn({ - [`${styles.inputContainer}`]: true, - [`${styles.inputAppear}`]: - getValues(typeInput.id) === HomeCircumstances.OTHER, - })} - > - <Controller - name={customInput.id} - defaultValue={answers?.homeCircumstances?.custom} - render={({ field: { onChange, value } }) => { - return ( - <Input - id={customInput.id} - name={customInput.id} - label={formatMessage(input.label)} - value={value} - textarea={true} - rows={8} - backgroundColor="blue" - hasError={customInput.error !== undefined} - errorMessage={customInput.error} - onChange={(e) => { - clearErrors(customInput.id) - onChange(e.target.value) - setValue(customInput.id, e.target.value) - }} - /> - ) - }} - /> - </Box> - </> - ) -} - -export default withLogo(HomeCircumstancesForm) diff --git a/libs/application/templates/financial-aid/src/fields/InRelationshipForm/InRelationshipForm.tsx b/libs/application/templates/financial-aid/src/fields/InRelationshipForm/InRelationshipForm.tsx deleted file mode 100644 index acab22dbf322..000000000000 --- a/libs/application/templates/financial-aid/src/fields/InRelationshipForm/InRelationshipForm.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import { FAFieldBaseProps } from '../../lib/types' -import { - CheckboxController, - InputController, -} from '@island.is/shared/form-fields' -import { useIntl } from 'react-intl' -import { inRelationship } from '../../lib/messages' -import DescriptionText from '../DescriptionText/DescriptionText' -import { useFormContext } from 'react-hook-form' -import withLogo from '../Logo/Logo' - -const spouseEmail = 'spouse.email' -const spouseApproveTerms = 'spouse.approveTerms' - -const InRelationshipForm = ({ errors, application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { answers } = application - const { clearErrors } = useFormContext() - const spouseEmailError = errors?.spouse?.email - const spouseApproveTermsError = errors?.spouse?.approveTerms - - return ( - <div> - <Text variant="intro" marginBottom={[2, 2, 3]} marginTop={2}> - {formatMessage(inRelationship.general.intro)} - </Text> - <Box marginBottom={[3, 3, 4]}> - <DescriptionText text={inRelationship.general.description} /> - </Box> - <Box marginBottom={[5, 5, 10]}> - <Box marginBottom={[2, 2, 3]}> - <InputController - id={spouseEmail} - name={spouseEmail} - backgroundColor="blue" - type="email" - placeholder={formatMessage(inRelationship.inputs.spouseEmail)} - label={formatMessage(inRelationship.inputs.spouseEmail)} - error={spouseEmailError} - defaultValue={answers.spouse?.email || ''} - onChange={() => { - clearErrors(spouseEmail) - }} - /> - </Box> - <CheckboxController - id={spouseApproveTerms} - name={spouseApproveTerms} - backgroundColor="blue" - large={true} - defaultValue={[]} - error={spouseApproveTermsError} - options={[ - { - value: 'yes', - label: formatMessage(inRelationship.inputs.checkboxLabel), - }, - ]} - /> - </Box> - </div> - ) -} - -export default withLogo(InRelationshipForm) diff --git a/libs/application/templates/financial-aid/src/fields/IncomeFilesForm/IncomeFilesForm.tsx b/libs/application/templates/financial-aid/src/fields/IncomeFilesForm/IncomeFilesForm.tsx deleted file mode 100644 index baf3a42ed199..000000000000 --- a/libs/application/templates/financial-aid/src/fields/IncomeFilesForm/IncomeFilesForm.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { Text, UploadFile } from '@island.is/island-ui/core' -import { incomeFilesForm } from '../../lib/messages' -import { FAFieldBaseProps, OverrideAnswerSchema, UploadFileType } from '../..' -import { Files } from '..' -import withLogo from '../Logo/Logo' - -const IncomeFilesForm = ({ field, application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { id, answers, externalData } = application - - return ( - <> - <Text marginTop={2} marginBottom={[3, 3, 5]}> - {formatMessage( - externalData?.taxData?.data?.municipalitiesDirectTaxPayments?.success - ? incomeFilesForm.general.descriptionTaxSuccess - : incomeFilesForm.general.description, - )} - </Text> - <Files - fileKey={field.id as UploadFileType} - uploadFiles={ - answers[field.id as keyof OverrideAnswerSchema] as UploadFile[] - } - folderId={id} - /> - </> - ) -} - -export default withLogo(IncomeFilesForm) diff --git a/libs/application/templates/financial-aid/src/fields/IncomeForm/IncomeForm.tsx b/libs/application/templates/financial-aid/src/fields/IncomeForm/IncomeForm.tsx deleted file mode 100644 index d26d57b8c8fb..000000000000 --- a/libs/application/templates/financial-aid/src/fields/IncomeForm/IncomeForm.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React from 'react' -import { Box, Text, GridRow, GridColumn } from '@island.is/island-ui/core' -import { - FAFieldBaseProps, - ApproveOptions, - OverrideAnswerSchema, - ErrorSchema, -} from '../../lib/types' -import { useIntl } from 'react-intl' -import { incomeForm } from '../../lib/messages' -import { RadioController } from '@island.is/shared/form-fields' -import DescriptionText from '../DescriptionText/DescriptionText' -import withLogo from '../Logo/Logo' - -const IncomeForm = ({ field, errors, application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { answers } = application - - return ( - <> - <Box marginTop={[2, 2, 3]}> - <RadioController - id={field.id} - name={field.id} - defaultValue={answers[field.id as keyof OverrideAnswerSchema]} - options={[ - { - value: ApproveOptions.Yes, - label: formatMessage(incomeForm.options.yes), - }, - { - value: ApproveOptions.No, - label: formatMessage(incomeForm.options.no), - }, - ]} - largeButtons - split="1/2" - backgroundColor="white" - error={errors[field.id as keyof ErrorSchema]?.toString()} - /> - </Box> - <Text as="h2" variant="h3" marginBottom={2} marginTop={[3, 3, 5]}> - {formatMessage(incomeForm.bulletList.headline)} - </Text> - <GridRow marginBottom={5}> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <DescriptionText text={incomeForm.examplesOfIncome.leftSidedList} /> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box marginTop={[2, 2, 2, 0]}> - <DescriptionText - text={incomeForm.examplesOfIncome.rightSidedList} - /> - </Box> - </GridColumn> - </GridRow> - </> - ) -} - -export default withLogo(IncomeForm) diff --git a/libs/application/templates/financial-aid/src/fields/Logo/Logo.css.ts b/libs/application/templates/financial-aid/src/fields/Logo/Logo.css.ts deleted file mode 100644 index 51dfd173160b..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Logo/Logo.css.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const logo = style({ - position: 'relative', - left: '16px', - width: '180px', - '@media': { - [`screen and (min-width: ${theme.breakpoints.md}px)`]: { - width: '250px', - left: '46px', - }, - }, -}) diff --git a/libs/application/templates/financial-aid/src/fields/Logo/Logo.tsx b/libs/application/templates/financial-aid/src/fields/Logo/Logo.tsx deleted file mode 100644 index 40b3eff8ca12..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Logo/Logo.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React, { useEffect, useState } from 'react' - -import { logoKeyFromMunicipalityCode } from '@island.is/financial-aid/shared/lib' -import { Box } from '@island.is/island-ui/core' - -import { FAFieldBaseProps } from '../../lib/types' -import * as styles from './Logo.css' - -const withLogo = - (Component: React.ComponentType<React.PropsWithChildren<FAFieldBaseProps>>) => - (props: FAFieldBaseProps) => { - const [logo, setLogo] = useState<string>() - const municipality = props.application.externalData.municipality.data - - useEffect(() => { - const getLogo = async () => { - const svgLogo = await import( - `../../svg/${ - logoKeyFromMunicipalityCode[ - municipality ? municipality.municipalityId : '' - ] - }` - ) - setLogo(svgLogo.default) - } - getLogo() - }, []) - - return ( - <> - <Component {...props} /> - <Box marginTop={[10, 10, 12]} display="flex" justifyContent="flexEnd"> - <a - href={municipality?.homepage} - target="_blank" - rel="noreferrer noopener" - className={styles.logo} - > - <img src={logo} alt="" /> - </a> - </Box> - </> - ) - } - -export default withLogo diff --git a/libs/application/templates/financial-aid/src/fields/MissingFiles/FileList/FileList.css.ts b/libs/application/templates/financial-aid/src/fields/MissingFiles/FileList/FileList.css.ts deleted file mode 100644 index 2af298541a87..000000000000 --- a/libs/application/templates/financial-aid/src/fields/MissingFiles/FileList/FileList.css.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const filesLink = style({ - display: 'block', - gridColumn: '1/-1', - width: '100%', - borderRadius: theme.spacing[1], - backgroundColor: theme.color.purple100, - marginBottom: theme.spacing[2], - transition: 'background-color ease 250ms', -}) - -export const hoverState = style({ - selectors: { - '&:hover': { - cursor: 'pointer', - backgroundColor: theme.color.purple200, - textDecoration: 'none', - }, - }, -}) - -export const container = style({ - display: 'grid', - gridTemplateColumns: 'repeat(7, 1fr)', - columnGap: theme.spacing[3], - padding: `${theme.spacing[2]}px ${theme.spacing[0]}px`, - alignItems: 'center', -}) - -export const type = style({ - display: 'block', - backgroundColor: theme.color.white, - borderRadius: '2px', - padding: theme.spacing[1], - maxWidth: theme.spacing[6], - justifySelf: 'center', -}) - -export const name = style({ - gridColumn: 'span 2', - overflow: 'hidden', -}) diff --git a/libs/application/templates/financial-aid/src/fields/MissingFiles/FileList/FileList.tsx b/libs/application/templates/financial-aid/src/fields/MissingFiles/FileList/FileList.tsx deleted file mode 100644 index 1d1542ad16cc..000000000000 --- a/libs/application/templates/financial-aid/src/fields/MissingFiles/FileList/FileList.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import cn from 'classnames' - -import { Text, Box, UploadFile } from '@island.is/island-ui/core' -import { - getFileSizeInKilo, - getFileType, -} from '@island.is/financial-aid/shared/lib' - -import * as styles from './FileList.css' -import { missingFiles } from '../../../lib/messages' -import { useFileUpload } from '../../../lib/hooks/useFileUpload' - -interface Props { - applicationSystemId: string - files?: UploadFile[] -} - -const FileList = ({ files, applicationSystemId }: Props) => { - const { formatMessage } = useIntl() - const { openFileById } = useFileUpload(files ?? [], applicationSystemId) - - if (files === undefined || files.length === 0) { - return null - } - - return ( - <Box marginBottom={2}> - {files.map((file, i) => { - return file.id ? ( - <button - className={cn({ - [`${styles.filesLink}`]: true, - [styles.hoverState]: file.id, - })} - key={'file-' + i} - onClick={(e) => { - e.preventDefault() - openFileById(file.id as string) - }} - > - <div className={styles.container}> - <div className={styles.type}> - <Text color="dark300" fontWeight="semiBold" variant="small"> - {getFileType(file.name)} - </Text> - </div> - <div className={styles.name}> - <Text variant="small">{file.name}</Text> - </div> - <Text variant="small">{`${formatMessage( - missingFiles.confirmation.file, - )} • ${getFileSizeInKilo(file)} KB`}</Text> - </div> - </button> - ) : null - })} - </Box> - ) -} - -export default FileList diff --git a/libs/application/templates/financial-aid/src/fields/MissingFiles/MissingFiles.tsx b/libs/application/templates/financial-aid/src/fields/MissingFiles/MissingFiles.tsx deleted file mode 100644 index ec79d36afd5f..000000000000 --- a/libs/application/templates/financial-aid/src/fields/MissingFiles/MissingFiles.tsx +++ /dev/null @@ -1,182 +0,0 @@ -import React, { useEffect, useMemo, useState } from 'react' -import { useIntl } from 'react-intl' - -import { - Text, - Box, - AlertMessage, - Input, - LoadingDots, -} from '@island.is/island-ui/core' -import { - ApplicationEventType, - ApplicationState, - FileType, - getCommentFromLatestEvent, -} from '@island.is/financial-aid/shared/lib' -import { getValueViaPath } from '@island.is/application/core' -import { RecordObject } from '@island.is/application/types' - -import { filesText, missingFiles } from '../../lib/messages' -import { Files } from '..' -import { FAFieldBaseProps, UploadFileType } from '../../lib/types' -import useApplication from '../../lib/hooks/useApplication' -import { Controller, useFormContext } from 'react-hook-form' -import { useFileUpload } from '../../lib/hooks/useFileUpload' -import DescriptionText from '../DescriptionText/DescriptionText' - -const MissingFiles = ({ - application, - setBeforeSubmitCallback, - field, -}: FAFieldBaseProps) => { - const { currentApplication, updateApplication, loading } = useApplication( - application.externalData.currentApplication.data?.currentApplicationId, - ) - const isSpouse = getValueViaPath(field as RecordObject<any>, 'props.isSpouse') - - const { formatMessage } = useIntl() - const { setValue, getValues } = useFormContext() - - const fileType: UploadFileType = 'otherFiles' - const commentType = 'fileUploadComment' - const files = getValues(fileType) - - const { uploadFiles } = useFileUpload(files, application.id) - - const [error, setError] = useState(false) - const [filesError, setFilesError] = useState(false) - - const fileComment = useMemo(() => { - if (currentApplication?.applicationEvents) { - return getCommentFromLatestEvent( - currentApplication?.applicationEvents, - ApplicationEventType.DATANEEDED, - ) - } - }, [currentApplication]) - - useEffect(() => { - if (filesError) { - setFilesError(false) - } - }, [files]) - - setBeforeSubmitCallback && - setBeforeSubmitCallback(async () => { - setError(false) - if (files.length <= 0) { - setFilesError(true) - return [false, formatMessage(filesText.errorMessage)] - } - - try { - if ( - !application.externalData.currentApplication.data - ?.currentApplicationId - ) { - throw new Error() - } - - const uploadedFiles = await uploadFiles( - application.externalData.currentApplication.data.currentApplicationId, - FileType.OTHER, - files, - ) - setValue(fileType, uploadedFiles) - - await updateApplication( - ApplicationState.INPROGRESS, - isSpouse - ? ApplicationEventType.SPOUSEFILEUPLOAD - : ApplicationEventType.FILEUPLOAD, - getValues(commentType), - ) - } catch (e) { - setError(true) - return [false, formatMessage(missingFiles.error.title)] - } - return [true, null] - }) - - if (loading) { - return <LoadingDots /> - } - - return ( - <> - <Text marginBottom={[4, 4, 5]}> - {formatMessage(missingFiles.general.description)} - </Text> - - {fileComment?.comment && ( - <Box marginBottom={[4, 4, 5]}> - <AlertMessage - type="warning" - title={formatMessage(missingFiles.alert.title)} - message={ - <span dangerouslySetInnerHTML={{ __html: fileComment.comment }} /> - } - /> - </Box> - )} - - <Box marginBottom={[7, 7, 8]}> - <Files - fileKey={fileType} - uploadFiles={files} - folderId={application.id} - hasError={filesError} - /> - </Box> - - <Box marginBottom={[8, 8, 9]}> - <Text as="h3" variant="h3" marginBottom={[3, 3, 4]}> - {formatMessage(missingFiles.comment.title)} - </Text> - <Box marginBottom={4}> - <Controller - name={commentType} - defaultValue={''} - render={({ field: { onChange, value } }) => { - return ( - <Input - id={commentType} - name={commentType} - label={formatMessage(missingFiles.comment.inputTitle)} - placeholder={formatMessage( - missingFiles.comment.inputPlaceholder, - )} - value={value} - textarea={true} - rows={8} - backgroundColor="blue" - onChange={(e) => { - onChange(e.target.value) - setValue(commentType, e.target.value) - }} - /> - ) - }} - /> - </Box> - </Box> - - {error && ( - <> - <Text as="h3" variant="h4" color="red400" marginBottom={1}> - {formatMessage(missingFiles.error.title)} - </Text> - <DescriptionText - text={missingFiles.error.message} - format={{ - email: application.externalData.municipality.data?.email ?? '', - }} - /> - </> - )} - </> - ) -} - -export default MissingFiles diff --git a/libs/application/templates/financial-aid/src/fields/MissingFiles/MissingFilesConfirmation/MissingFilesConfirmation.tsx b/libs/application/templates/financial-aid/src/fields/MissingFiles/MissingFilesConfirmation/MissingFilesConfirmation.tsx deleted file mode 100644 index 254994aa77bf..000000000000 --- a/libs/application/templates/financial-aid/src/fields/MissingFiles/MissingFilesConfirmation/MissingFilesConfirmation.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { useFormContext } from 'react-hook-form' - -import { Text, Box, Button } from '@island.is/island-ui/core' - -import { FAFieldBaseProps, UploadFileType } from '../../../lib/types' -import { missingFiles } from '../../../lib/messages' -import FileList from '../FileList/FileList' - -const MissingFilesConfirmation = ({ application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { getValues } = useFormContext() - - const fileType: UploadFileType = 'otherFiles' - const commentType = 'fileUploadComment' - - return ( - <> - <Text variant="h3" color={'mint600'} marginBottom={3}> - {formatMessage(missingFiles.confirmation.subtitle)} - </Text> - - <Box> - <FileList - files={getValues(fileType)} - applicationSystemId={application.id} - /> - </Box> - - {getValues(commentType) && ( - <Box - background="purple100" - paddingX={4} - paddingY={3} - borderRadius="large" - > - <Text variant="eyebrow" marginBottom={1}> - {formatMessage(missingFiles.confirmation.commentTitle)} - </Text> - <Text>{getValues(commentType)}</Text> - </Box> - )} - - <Box marginTop={10} width="full" display="flex" justifyContent="flexEnd"> - <Button onClick={() => window.location.reload()}> - {formatMessage(missingFiles.confirmation.linkStatusPage)} - </Button> - </Box> - </> - ) -} - -export default MissingFilesConfirmation diff --git a/libs/application/templates/financial-aid/src/fields/PersonalTaxCreditForm/PersonalTaxCreditForm.tsx b/libs/application/templates/financial-aid/src/fields/PersonalTaxCreditForm/PersonalTaxCreditForm.tsx deleted file mode 100644 index 9db94fdb817f..000000000000 --- a/libs/application/templates/financial-aid/src/fields/PersonalTaxCreditForm/PersonalTaxCreditForm.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import { FAFieldBaseProps, ApproveOptions } from '../../lib/types' -import { useIntl } from 'react-intl' -import { personalTaxCreditForm } from '../../lib/messages' -import { RadioController } from '@island.is/shared/form-fields' -import withLogo from '../Logo/Logo' - -const PersonalTaxCreditForm = ({ - field, - errors, - application, -}: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { answers } = application - - return ( - <> - <Text marginTop={2}> - {formatMessage(personalTaxCreditForm.general.recommendedChoice)} - </Text> - <Box marginTop={[3, 3, 4]}> - <RadioController - id={field.id} - defaultValue={answers?.personalTaxCredit} - options={[ - { - value: ApproveOptions.Yes, - label: formatMessage( - personalTaxCreditForm.radioChoices.useTaxCredit, - ), - }, - { - value: ApproveOptions.No, - label: formatMessage( - personalTaxCreditForm.radioChoices.wontUseTaxCredit, - ), - }, - ]} - split="1/2" - largeButtons - backgroundColor="white" - error={errors.personalTaxCredit} - /> - </Box> - <Text as="h3" variant="h3" marginTop={[2, 2, 3]}> - {formatMessage(personalTaxCreditForm.general.descriptionTitle)} - </Text> - <Text marginTop={1} variant="small"> - {formatMessage(personalTaxCreditForm.general.description)} - </Text> - </> - ) -} - -export default withLogo(PersonalTaxCreditForm) diff --git a/libs/application/templates/financial-aid/src/fields/PrivacyPolicyAccordion/PrivacyPolicyAccordion.tsx b/libs/application/templates/financial-aid/src/fields/PrivacyPolicyAccordion/PrivacyPolicyAccordion.tsx deleted file mode 100644 index 99248972ced8..000000000000 --- a/libs/application/templates/financial-aid/src/fields/PrivacyPolicyAccordion/PrivacyPolicyAccordion.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { Accordion, AccordionItem, Text } from '@island.is/island-ui/core' -import { privacyPolicyAccordion } from '../../lib/messages' -import { DescriptionText } from '..' - -interface Props { - municipalityPageUrl?: string -} - -const PrivacyPolicyAccordion = ({ municipalityPageUrl }: Props) => { - const { formatMessage } = useIntl() - - return ( - <> - <Text as="h3" variant="h3" marginBottom={2}> - {formatMessage(privacyPolicyAccordion.general.sectionTitle)} - </Text> - <Accordion singleExpand> - <AccordionItem - id={privacyPolicyAccordion.accordion.title.id} - label={formatMessage(privacyPolicyAccordion.accordion.title)} - > - <DescriptionText text={privacyPolicyAccordion.accordion.about} /> - {municipalityPageUrl ? ( - <DescriptionText - text={privacyPolicyAccordion.accordion.moreInfoHomepage} - format={{ - homePageNameUrl: municipalityPageUrl, - }} - /> - ) : ( - <DescriptionText text={privacyPolicyAccordion.accordion.moreInfo} /> - )} - </AccordionItem> - </Accordion> - </> - ) -} - -export default PrivacyPolicyAccordion diff --git a/libs/application/templates/financial-aid/src/fields/ServiceCenter/ServiceCenter.tsx b/libs/application/templates/financial-aid/src/fields/ServiceCenter/ServiceCenter.tsx deleted file mode 100644 index cee7dc56fe8c..000000000000 --- a/libs/application/templates/financial-aid/src/fields/ServiceCenter/ServiceCenter.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { Button, Box } from '@island.is/island-ui/core' - -import { serviceCenters } from '@island.is/financial-aid/shared/data' -import { FAFieldBaseProps } from '../../lib/types' -import { serviceCenter } from '../../lib/messages' -import { DescriptionText } from '..' -import withLogo from '../Logo/Logo' - -const ServiceCenter = ({ application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - - const { externalData } = application - - const applicantsCenter = serviceCenters.find( - (serviceCenter) => - serviceCenter.number === - Number(externalData.nationalRegistry.data.address?.municipalityCode), - ) - - return ( - <> - <Box marginBottom={[1, 1, 2]} marginTop={2}> - <DescriptionText - text={serviceCenter.general.description} - format={{ - applicantsServiceCenter: applicantsCenter?.name ?? '', - }} - /> - </Box> - - <Box marginBottom={[2, 2, 4]}> - <DescriptionText text={serviceCenter.general.notRegistered} /> - </Box> - - {applicantsCenter?.link && ( - <Button - variant="ghost" - icon="open" - iconType="outline" - onClick={() => { - window.open(applicantsCenter?.link, '_ blank') - }} - > - {formatMessage(serviceCenter.general.linkToServiceCenter, { - applicantsServiceCenter: applicantsCenter?.name ?? '', - })} - </Button> - )} - </> - ) -} - -export default withLogo(ServiceCenter) diff --git a/libs/application/templates/financial-aid/src/fields/Shared.css.ts b/libs/application/templates/financial-aid/src/fields/Shared.css.ts deleted file mode 100644 index fc9fd02698df..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Shared.css.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const inputContainer = style({ - maxHeight: '0', - overflow: 'hidden', - transition: 'max-height 300ms ease', -}) - -export const inputAppear = style({ - maxHeight: '300px', -}) - -export const formAppear = style({ - maxHeight: '400px', -}) - -export const filesButtons = style({ - selectors: { - '&:hover': { - cursor: 'pointer', - }, - }, -}) - -export const summaryBlockChild = style({ - minWidth: '50%', - '@media': { - [`screen and (min-width: ${theme.breakpoints.lg}px)`]: { - minWidth: '83%', - }, - }, -}) - -export const confirmationIllustration = style({ - marginTop: theme.spacing[5], - display: 'none', - '@media': { - [`screen and (min-width: ${theme.breakpoints.sm}px)`]: { - display: 'block', - }, - [`screen and (min-width: ${theme.breakpoints.md}px)`]: { - display: 'none', - }, - [`screen and (min-width: ${theme.breakpoints.lg}px)`]: { - display: 'block', - }, - }, -}) - -export const errorMessage = style({ - overflow: 'hidden', - maxHeight: '0', - transition: 'max-height 250ms ease', -}) -export const showErrorMessage = style({ - maxHeight: theme.spacing[5], -}) diff --git a/libs/application/templates/financial-aid/src/fields/Status/AidAmount/AidAmount.tsx b/libs/application/templates/financial-aid/src/fields/Status/AidAmount/AidAmount.tsx deleted file mode 100644 index 0d66654d2f0a..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/AidAmount/AidAmount.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Box, Text } from '@island.is/island-ui/core' -import { - acceptedAmountBreakDown, - Amount, - Application, - ApplicationState, -} from '@island.is/financial-aid/shared/lib' - -import { aidAmount } from '../../../lib/messages' -import { Breakdown } from '../../index' -import { Estimation, VeitaEstimation } from '../index' -import { ExternalData, FAApplication, waitingForSpouse } from '../../..' - -interface Props { - application: FAApplication - veitaApplication?: Application - municipality: ExternalData['municipality'] - state?: ApplicationState - amount?: Amount -} - -const AidAmount = ({ - application, - state, - municipality, - amount, - veitaApplication, -}: Props) => { - const { formatMessage } = useIntl() - - if (!application && !veitaApplication) { - return null - } - - return ( - <Box marginBottom={[4, 4, 5]}> - {state === ApplicationState.APPROVED ? ( - <> - <Text as="h3" variant="h3" marginBottom={2}> - {formatMessage(aidAmount.titleApproved)} - </Text> - <Breakdown calculations={acceptedAmountBreakDown(amount)} /> - </> - ) : waitingForSpouse(application.state) ? ( - <Estimation application={application} municipality={municipality} /> - ) : veitaApplication ? ( - <VeitaEstimation - application={veitaApplication} - municipality={municipality} - /> - ) : null} - </Box> - ) -} - -export default AidAmount diff --git a/libs/application/templates/financial-aid/src/fields/Status/ApprovedAlert/ApprovedAlert.tsx b/libs/application/templates/financial-aid/src/fields/Status/ApprovedAlert/ApprovedAlert.tsx deleted file mode 100644 index 09e5ba3dbd76..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/ApprovedAlert/ApprovedAlert.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { useMemo } from 'react' -import { useIntl } from 'react-intl' - -import { - ApplicationEvent, - ApplicationEventType, -} from '@island.is/financial-aid/shared/lib' -import { AlertMessage, Box, Text } from '@island.is/island-ui/core' - -import { approvedAlert } from '../../../lib/messages' - -interface Props { - events?: ApplicationEvent[] -} - -const ApprovedAlert = ({ events }: Props) => { - const { formatMessage } = useIntl() - - const approvedComment = useMemo(() => { - if (events) { - return events.find((el) => el.eventType === ApplicationEventType.APPROVED) - ?.comment - } - }, [events]) - ?.split('\n') - .slice(1) - .join('\n') - - if (!approvedComment) { - return null - } - - return ( - <Box marginBottom={[4, 4, 5]}> - <AlertMessage - type="info" - title={formatMessage(approvedAlert.title)} - message={ - <Text variant="small" whiteSpace="breakSpaces"> - „{approvedComment}“ - </Text> - } - /> - </Box> - ) -} - -export default ApprovedAlert diff --git a/libs/application/templates/financial-aid/src/fields/Status/Estimation/Estimation.tsx b/libs/application/templates/financial-aid/src/fields/Status/Estimation/Estimation.tsx deleted file mode 100644 index 01130cfac0d5..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/Estimation/Estimation.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import React, { useMemo } from 'react' -import { useIntl } from 'react-intl' - -import { Text, Box } from '@island.is/island-ui/core' -import { - aidCalculator, - estimatedBreakDown, - showSpouseData, - Application, -} from '@island.is/financial-aid/shared/lib' - -import { Breakdown, DescriptionText } from '../..' -import { ApproveOptions, ExternalData, FAApplication } from '../../../lib/types' -import { aidAmount as aidAmountMessages } from '../../../lib/messages' -import { findFamilyStatus } from '../../..' - -interface EstimationProps { - application: FAApplication - municipality: ExternalData['municipality'] -} - -interface VeitaEstiamtionProps { - application: Application - municipality: ExternalData['municipality'] -} - -export const Estimation = ({ application, municipality }: EstimationProps) => { - const { formatMessage } = useIntl() - - const getAidType = () => { - return !showSpouseData[ - findFamilyStatus(application.answers, application.externalData) - ] - } - - const aidAmount = useMemo(() => { - if (application.answers.homeCircumstances.type && municipality.data) { - return aidCalculator( - application.answers.homeCircumstances.type, - getAidType() - ? municipality.data.individualAid - : municipality.data.cohabitationAid, - ) - } - }, [municipality.data]) - - return ( - <> - <Box display="flex" alignItems="center" flexWrap="wrap"> - <> - <Text as="h3" variant="h3" marginBottom={2}> - {formatMessage(aidAmountMessages.title)} - </Text> - </> - </Box> - - <DescriptionText - textProps={{ marginBottom: 2 }} - text={aidAmountMessages.description} - /> - - <Breakdown - calculations={estimatedBreakDown( - aidAmount, - application.answers.personalTaxCredit === ApproveOptions.Yes, - )} - /> - </> - ) -} - -export const VeitaEstimation = ({ - application, - municipality, -}: VeitaEstiamtionProps) => { - const { formatMessage } = useIntl() - - const getAidType = () => { - switch (true) { - case application.familyStatus != undefined: - return !showSpouseData[application.familyStatus] - default: - return application.spouseNationalId == null - } - } - - const aidAmount = useMemo(() => { - if (municipality.data && application.homeCircumstances) { - return aidCalculator( - application.homeCircumstances, - getAidType() - ? municipality.data.individualAid - : municipality.data.cohabitationAid, - ) - } - }, [municipality.data]) - - return ( - <> - <Box display="flex" alignItems="center" flexWrap="wrap"> - <> - <Text as="h3" variant="h3" marginBottom={2}> - {formatMessage(aidAmountMessages.title)} - </Text> - </> - </Box> - - <DescriptionText - textProps={{ marginBottom: 2 }} - text={aidAmountMessages.description} - /> - - <Breakdown - calculations={estimatedBreakDown( - aidAmount, - application.usePersonalTaxCredit, - )} - /> - </> - ) -} diff --git a/libs/application/templates/financial-aid/src/fields/Status/Header/Header.tsx b/libs/application/templates/financial-aid/src/fields/Status/Header/Header.tsx deleted file mode 100644 index 861cf274481b..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/Header/Header.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Text } from '@island.is/island-ui/core' -import { - ApplicationState, - getNextPeriod, -} from '@island.is/financial-aid/shared/lib' -import { useLocale } from '@island.is/localization' - -import { getStateMessageAndColor } from '../../../lib/formatters' - -interface Props { - state?: ApplicationState -} - -const Header = ({ state }: Props) => { - const { formatMessage } = useIntl() - const { lang } = useLocale() - - if (!state) { - return null - } - - return ( - <Text - as="h3" - variant="h3" - color={getStateMessageAndColor[state][1]} - marginBottom={[4, 4, 5]} - > - {formatMessage(getStateMessageAndColor[state][0], { - month: getNextPeriod(lang).month, - year: getNextPeriod(lang).year, - })} - </Text> - ) -} - -export default Header diff --git a/libs/application/templates/financial-aid/src/fields/Status/MissingFilesCard/MissingFilesCard.tsx b/libs/application/templates/financial-aid/src/fields/Status/MissingFilesCard/MissingFilesCard.tsx deleted file mode 100644 index ca643166f01f..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/MissingFilesCard/MissingFilesCard.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Box, ActionCard } from '@island.is/island-ui/core' -import { missingFilesCard } from '../../../lib/messages' -import { Routes } from '../../../lib/constants' - -interface Props { - goToScreen?: (id: string) => void -} - -const MissingFilesCard = ({ goToScreen }: Props) => { - const { formatMessage } = useIntl() - - return ( - <Box marginBottom={[4, 4, 5]}> - <ActionCard - heading={formatMessage(missingFilesCard.title)} - text={formatMessage(missingFilesCard.description)} - cta={{ - label: formatMessage(missingFilesCard.action), - icon: undefined, - onClick: () => goToScreen?.(Routes.MISSINGFILES), - }} - backgroundColor="blue" - /> - </Box> - ) -} - -export default MissingFilesCard diff --git a/libs/application/templates/financial-aid/src/fields/Status/MoreActions/MoreActions.tsx b/libs/application/templates/financial-aid/src/fields/Status/MoreActions/MoreActions.tsx deleted file mode 100644 index b19b4be59967..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/MoreActions/MoreActions.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Box, Text } from '@island.is/island-ui/core' -import { DescriptionText } from '../..' -import { moreActions } from '../../../lib/messages' - -interface Props { - municipalityRulesPage?: string - municipalityEmail?: string -} - -const MoreActions = ({ municipalityRulesPage, municipalityEmail }: Props) => { - const { formatMessage } = useIntl() - - if (!municipalityRulesPage && !municipalityEmail) { - return null - } - - return ( - <> - <Text as="h3" variant="h3"> - {formatMessage(moreActions.title)} - </Text> - <Box marginTop={2}> - {municipalityRulesPage && ( - <DescriptionText - textProps={{ variant: 'small' }} - text={moreActions.rulesLink} - format={{ - rulesPage: municipalityRulesPage, - }} - /> - )} - {municipalityEmail && ( - <DescriptionText - textProps={{ variant: 'small' }} - text={moreActions.emailLink} - format={{ - email: `mailto:${municipalityEmail}`, - }} - /> - )} - </Box> - </> - ) -} - -export default MoreActions diff --git a/libs/application/templates/financial-aid/src/fields/Status/RejectionMessage/RejectionMessage.tsx b/libs/application/templates/financial-aid/src/fields/Status/RejectionMessage/RejectionMessage.tsx deleted file mode 100644 index 40d75059c1e3..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/RejectionMessage/RejectionMessage.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Box, Link, Text } from '@island.is/island-ui/core' -import { rejectionMessage } from '../../../lib/messages' -import DescriptionText from '../../DescriptionText/DescriptionText' - -interface Props { - rejectionComment?: string - rulesPage?: string - homepage?: string - email?: string -} - -const RejectionMessage = ({ - rejectionComment, - rulesPage, - homepage, - email, -}: Props) => { - const { formatMessage } = useIntl() - const showRulesLink = rulesPage || homepage - - return ( - <Box marginBottom={[4, 4, 5]}> - <Text marginBottom={[2, 2, 3]} variant="h3" fontWeight="light"> - {formatMessage(rejectionMessage.explanation, { - rejectionComment, - })}{' '} - {showRulesLink && formatMessage(rejectionMessage.explanationLink)} - </Text> - {showRulesLink && ( - <Box marginBottom={[4, 4, 5]}> - <Link - href={showRulesLink} - underline="normal" - underlineVisibility="always" - color="blue400" - > - {rulesPage - ? formatMessage(rejectionMessage.rulesPageLink) - : homepage} - </Link> - </Box> - )} - - <Text as="h3" variant="h3" marginBottom={[1, 1, 2]}> - {formatMessage(rejectionMessage.appealTitle)} - </Text> - <DescriptionText - text={rejectionMessage.appealDescription} - format={{ email: email || '' }} - /> - </Box> - ) -} - -export default RejectionMessage diff --git a/libs/application/templates/financial-aid/src/fields/Status/SpouseAlert/SpouseAlert.tsx b/libs/application/templates/financial-aid/src/fields/Status/SpouseAlert/SpouseAlert.tsx deleted file mode 100644 index d55a3089f9e4..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/SpouseAlert/SpouseAlert.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { AlertMessage, Box } from '@island.is/island-ui/core' -import { copyUrl, spouseAlert } from '../../../lib/messages' -import { CopyUrl } from '../..' - -interface Props { - showCopyUrl: boolean -} - -const SpouseAlert = ({ showCopyUrl }: Props) => { - const { formatMessage } = useIntl() - - return ( - <Box marginBottom={[4, 4, 5]}> - <AlertMessage - type="warning" - title={formatMessage(spouseAlert.title)} - message={ - showCopyUrl - ? formatMessage(spouseAlert.messageCopyUrl) - : formatMessage(spouseAlert.message) - } - /> - {showCopyUrl && ( - <Box marginTop={2}> - <CopyUrl - inputLabel={formatMessage(copyUrl.inputLabel)} - buttonLabel={formatMessage(copyUrl.buttonLabel)} - successMessage={formatMessage(copyUrl.successMessage)} - /> - </Box> - )} - </Box> - ) -} - -export default SpouseAlert diff --git a/libs/application/templates/financial-aid/src/fields/Status/SpouseApproved/SpouseApproved.tsx b/libs/application/templates/financial-aid/src/fields/Status/SpouseApproved/SpouseApproved.tsx deleted file mode 100644 index 22224959ccb9..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/SpouseApproved/SpouseApproved.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Text } from '@island.is/island-ui/core' -import { getNextPeriod } from '@island.is/financial-aid/shared/lib' -import { useLocale } from '@island.is/localization' - -import { spouseApproved } from '../../../lib/messages' - -const SpouseApproved = () => { - const { formatMessage } = useIntl() - const { lang } = useLocale() - - return ( - <Text variant="h3" fontWeight="light" marginBottom={[4, 4, 5]}> - {formatMessage(spouseApproved.message, { - month: getNextPeriod(lang).month, - })} - </Text> - ) -} - -export default SpouseApproved diff --git a/libs/application/templates/financial-aid/src/fields/Status/Timeline/Timeline.css.ts b/libs/application/templates/financial-aid/src/fields/Status/Timeline/Timeline.css.ts deleted file mode 100644 index 44cd38f5023e..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/Timeline/Timeline.css.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const timelineContainer = style({ - display: 'grid', - gridTemplateColumns: '16px auto', - position: 'relative', - '::before': { - content: "''", - display: 'inline-block', - backgroundColor: theme.color.purple200, - width: theme.spacing[2], - height: theme.spacing[2], - borderRadius: theme.spacing[2], - marginTop: '4px', - zIndex: 1, - }, -}) - -export const activeState = style({ - '::before': { - backgroundColor: theme.color.purple400, - }, -}) - -export const lineDown = style({ - '::after': { - content: "''", - display: 'block', - position: 'absolute', - backgroundColor: theme.color.purple200, - width: '2px', - top: '8px', - left: '7px', - height: 'calc(100% - 4px)', - borderRadius: theme.spacing[2], - }, -}) - -export const activeLine = style({ - '::after': { - backgroundColor: theme.color.purple400, - }, -}) diff --git a/libs/application/templates/financial-aid/src/fields/Status/Timeline/Timeline.tsx b/libs/application/templates/financial-aid/src/fields/Status/Timeline/Timeline.tsx deleted file mode 100644 index 8613e42576f5..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/Timeline/Timeline.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { useEffect, useState } from 'react' -import cn from 'classnames' -import { useIntl } from 'react-intl' -import findLastIndex from 'lodash/findLastIndex' - -import { Text, Box } from '@island.is/island-ui/core' -import { ApplicationState } from '@island.is/financial-aid/shared/lib' - -import * as styles from './Timeline.css' -import { timeline } from '../../../lib/messages' -import { timelineSections } from '../../../lib/formatters' - -interface Props { - state?: ApplicationState - modified: Date | string - created: Date | string - showSpouseStep?: boolean -} - -const Timeline = ({ state, modified, created, showSpouseStep }: Props) => { - const sections = timelineSections( - new Date(created), - new Date(modified), - showSpouseStep, - ) - - const findActiveState = () => - findLastIndex(sections, (el) => { - return el.state.includes(state as ApplicationState) - }) - - const { formatMessage } = useIntl() - const [activeState, setActiveState] = useState(findActiveState()) - - useEffect(() => { - setActiveState(findActiveState()) - }, [state]) - - if (!state) { - return null - } - - return ( - <> - <Text as="h3" variant="h3" marginBottom={[1, 1, 2]}> - {formatMessage(timeline.title)} - </Text> - <Text marginBottom={[3, 3, 4]}> - {formatMessage(timeline.description)} - </Text> - - {sections.map((item, index) => { - return ( - <Box - key={`${index}--${item.text}`} - className={cn({ - [`${styles.timelineContainer}`]: true, - [`${styles.activeState}`]: activeState >= index, - [`${styles.lineDown}`]: index !== sections.length - 1, - [`${styles.activeLine}`]: activeState > index, - })} - > - <Box paddingLeft={3}> - <Text variant="h5">{formatMessage(item.name)}</Text> - <Text marginBottom={2}>{formatMessage(item.text)}</Text> - - <Text variant="small" color="dark300" marginBottom={5}> - {(index === 0 || index === activeState) && item.date} - </Text> - </Box> - </Box> - ) - })} - </> - ) -} - -export default Timeline diff --git a/libs/application/templates/financial-aid/src/fields/Status/index.ts b/libs/application/templates/financial-aid/src/fields/Status/index.ts deleted file mode 100644 index a59a64402502..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Status/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { default as AidAmount } from './AidAmount/AidAmount' -export { Estimation, VeitaEstimation } from './Estimation/Estimation' -export { default as Header } from './Header/Header' -export { default as MissingFilesCard } from './MissingFilesCard/MissingFilesCard' -export { default as MoreActions } from './MoreActions/MoreActions' -export { default as RejectionMessage } from './RejectionMessage/RejectionMessage' -export { default as SpouseAlert } from './SpouseAlert/SpouseAlert' -export { default as SpouseApproved } from './SpouseApproved/SpouseApproved' -export { default as Timeline } from './Timeline/Timeline' -export { default as ApprovedAlert } from './ApprovedAlert/ApprovedAlert' diff --git a/libs/application/templates/financial-aid/src/fields/StudentForm/StudentForm.tsx b/libs/application/templates/financial-aid/src/fields/StudentForm/StudentForm.tsx deleted file mode 100644 index 6921708c46b6..000000000000 --- a/libs/application/templates/financial-aid/src/fields/StudentForm/StudentForm.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import React from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import { FAFieldBaseProps, ApproveOptions } from '../../lib/types' -import { useIntl } from 'react-intl' -import { studentForm, approveOptions } from '../../lib/messages' -import * as styles from '../Shared.css' -import cn from 'classnames' -import { InputController, RadioController } from '@island.is/shared/form-fields' -import { useFormContext } from 'react-hook-form' -import withLogo from '../Logo/Logo' - -const StudentForm = ({ errors, application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { answers } = application - - const typeInput = { - id: 'student.isStudent', - error: errors?.student?.isStudent, - } - const customInput = { - id: 'student.custom', - error: errors?.student?.custom, - } - const { clearErrors, getValues } = useFormContext() - - return ( - <> - <Box marginTop={[2, 2, 3]}> - <RadioController - id={typeInput.id} - defaultValue={answers?.student?.isStudent} - options={[ - { - value: ApproveOptions.No, - label: formatMessage(approveOptions.no), - }, - { - value: ApproveOptions.Yes, - label: formatMessage(approveOptions.yes), - }, - ]} - largeButtons - backgroundColor="white" - error={typeInput.error} - /> - </Box> - <Box - className={cn({ - [`${styles.inputContainer}`]: true, - [`${styles.inputAppear}`]: - getValues(typeInput.id) === ApproveOptions.Yes, - })} - > - <InputController - id={customInput.id} - name={customInput.id} - label={formatMessage(studentForm.input.label)} - placeholder={formatMessage(studentForm.input.placeholder)} - backgroundColor="blue" - error={customInput.error} - onChange={() => { - clearErrors(customInput.id) - }} - /> - <Text fontWeight="semiBold" variant="small" marginTop={1}> - {formatMessage(studentForm.input.example)} - </Text> - </Box> - </> - ) -} - -export default withLogo(StudentForm) diff --git a/libs/application/templates/financial-aid/src/fields/Summary/ChildrenInfo.tsx b/libs/application/templates/financial-aid/src/fields/Summary/ChildrenInfo.tsx deleted file mode 100644 index 3af0704ebcff..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/ChildrenInfo.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Box, GridColumn, GridRow, Text } from '@island.is/island-ui/core' -import { summaryForm } from '../../lib/messages' -import { formatNationalId } from '@island.is/financial-aid/shared/lib' -import SummaryBlock from './SummaryBlock' -import { Routes } from '../../lib/constants' - -interface Props { - childrenSchoolInfo: { - nationalId: string - school: string - fullName: string - }[] - goToScreen: ((id: string) => void) | undefined - childrenComment?: string -} - -const ChildrenInfo = ({ - childrenSchoolInfo, - goToScreen, - childrenComment, -}: Props) => { - const { formatMessage } = useIntl() - - return ( - <SummaryBlock - editAction={() => goToScreen?.(Routes.CHILDRENSCHOOLINFO)} - key="children-block" - > - <Box marginBottom={3}> - <Text fontWeight="semiBold"> - {formatMessage(summaryForm.childrenInfo.title)} - </Text> - </Box> - - {childrenSchoolInfo.map((child) => { - return ( - <ChildInfo - name={child.fullName} - nationalId={child.nationalId} - school={child.school} - /> - ) - })} - {childrenComment && ( - <> - <Text fontWeight="semiBold"> - {formatMessage(summaryForm.childrenInfo.comment)} - </Text> - <Text marginTop={2}>{childrenComment}</Text> - </> - )} - </SummaryBlock> - ) -} - -interface PropsInfo { - name?: string - nationalId?: string - school?: string -} - -const ChildInfo = ({ name, nationalId, school }: PropsInfo) => { - const { formatMessage } = useIntl() - return ( - <GridRow marginBottom={3}> - <GridColumn span={['12/12', '12/12', '6/12', '4/12']}> - <Box> - <Text fontWeight="semiBold"> - {formatMessage(summaryForm.childrenInfo.name)} - </Text> - <Text>{name}</Text> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '6/12', '4/12']}> - <Box marginTop={[3, 3, 0, 0]}> - <Text fontWeight="semiBold"> - {formatMessage(summaryForm.childrenInfo.nationalId)} - </Text> - <Text>{formatNationalId(nationalId ?? '')}</Text> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '4/12']}> - <Box marginTop={[3, 3, 3, 0]}> - <Text fontWeight="semiBold"> - {formatMessage(summaryForm.childrenInfo.school)} - </Text> - <Text>{school}</Text> - </Box> - </GridColumn> - </GridRow> - ) -} - -export default ChildrenInfo diff --git a/libs/application/templates/financial-aid/src/fields/Summary/ContactInfo.tsx b/libs/application/templates/financial-aid/src/fields/Summary/ContactInfo.tsx deleted file mode 100644 index 32cb65f44338..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/ContactInfo.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { GridColumn, GridRow, Text } from '@island.is/island-ui/core' -import { Routes } from '../../lib/constants' -import { contactInfo } from '../../lib/messages' -import SummaryBlock from './SummaryBlock' - -interface Props { - goToScreen?: (id: string) => void - route: Routes - email: string - phone: string -} - -const ContactInfo = ({ route, email, phone, goToScreen }: Props) => { - const { formatMessage } = useIntl() - - return ( - <SummaryBlock editAction={() => goToScreen?.(route)}> - <GridRow> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text fontWeight="semiBold"> - {formatMessage(contactInfo.emailInput.label)} - </Text> - <Text marginBottom={[3, 3, 3, 0]}>{email}</Text> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text fontWeight="semiBold"> - {formatMessage(contactInfo.phoneInput.label)} - </Text> - <Text>{phone}</Text> - </GridColumn> - </GridRow> - </SummaryBlock> - ) -} - -export default ContactInfo diff --git a/libs/application/templates/financial-aid/src/fields/Summary/DirectTaxPaymentCell.tsx b/libs/application/templates/financial-aid/src/fields/Summary/DirectTaxPaymentCell.tsx deleted file mode 100644 index 77306dae6968..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/DirectTaxPaymentCell.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { Box, Text, Button, Divider } from '@island.is/island-ui/core' -import { DirectTaxPayment } from '@island.is/financial-aid/shared/lib' -import { summaryForm, directTaxPaymentModal } from '../../lib/messages' - -interface Props { - directTaxPayments: DirectTaxPayment[] - hasFetchedPayments: boolean - setIsModalOpen: (open: boolean) => void -} - -const DirectTaxPaymentCell = ({ - directTaxPayments, - hasFetchedPayments, - setIsModalOpen, -}: Props) => { - const { formatMessage } = useIntl() - - if (!hasFetchedPayments) { - return null - } - - return ( - <> - <Divider /> - <Box - display="flex" - justifyContent="spaceBetween" - alignItems="flexStart" - paddingY={[4, 4, 5]} - > - <Box marginRight={3}> - <Text fontWeight="semiBold" color={'dark400'}> - {formatMessage(summaryForm.directPayments.title)} - </Text> - <Text> {formatMessage(summaryForm.directPayments.fetched)}</Text> - </Box> - - {directTaxPayments.length === 0 ? ( - <Text marginTop={3}> - {formatMessage(directTaxPaymentModal.taxBreakdown.empty)} - </Text> - ) : ( - <Button - onClick={() => setIsModalOpen(true)} - icon="open" - iconType="outline" - variant="utility" - > - {formatMessage(summaryForm.directPayments.getBreakDown)} - </Button> - )} - </Box> - </> - ) -} - -export default DirectTaxPaymentCell diff --git a/libs/application/templates/financial-aid/src/fields/Summary/Files.tsx b/libs/application/templates/financial-aid/src/fields/Summary/Files.tsx deleted file mode 100644 index 9a1eb2b3f457..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/Files.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { useMutation } from '@apollo/client' - -import { UploadFile, Box, Icon, Text } from '@island.is/island-ui/core' -import { encodeFilenames } from '../../lib/utils' -import { CreateSignedUrlMutation } from '../../lib/hooks/useFileUpload' -import * as styles from '../Shared.css' -import SummaryBlock from './SummaryBlock' -import { Routes } from '../../lib/constants' -import { summaryForm } from '../../lib/messages' - -interface Props { - goToScreen?: (id: string) => void - route: Routes - personalTaxReturn?: UploadFile | null - taxFiles: UploadFile[] - incomeFiles: UploadFile[] - childrenFiles: UploadFile[] - applicationId: string -} - -const Files = ({ - route, - goToScreen, - personalTaxReturn, - taxFiles, - incomeFiles, - childrenFiles, - applicationId, -}: Props) => { - const { formatMessage } = useIntl() - const [createSignedUrlMutation] = useMutation(CreateSignedUrlMutation) - - const allFiles = [ - ...incomeFiles, - ...taxFiles, - ...childrenFiles, - ...(personalTaxReturn ? [personalTaxReturn] : []), - ] - - return ( - <SummaryBlock editAction={() => goToScreen?.(route)}> - <Text fontWeight="semiBold" marginBottom={1}> - {formatMessage(summaryForm.formInfo.filesTitle)} - </Text> - {allFiles && - allFiles.map((file: UploadFile, index: number) => { - if (file) { - return ( - <a - onClick={() => { - createSignedUrlMutation({ - variables: { - input: { - fileName: encodeFilenames(file.name), - folder: applicationId, - }, - }, - }).then((response) => { - window.open( - response.data?.createMunicipalitiesFinancialAidSignedUrl - .url, - ) - }) - }} - key={`file-` + index} - target="_blank" - download - rel="noreferrer noopener" - className={styles.filesButtons} - > - <Box - display="flex" - alignItems="center" - marginBottom="smallGutter" - > - <Box marginRight={1} display="flex" alignItems="center"> - <Icon - color="blue400" - icon="document" - size="small" - type="outline" - /> - </Box> - - <Text>{file.name}</Text> - </Box> - </a> - ) - } - })} - </SummaryBlock> - ) -} - -export default Files diff --git a/libs/application/templates/financial-aid/src/fields/Summary/FormInfo.tsx b/libs/application/templates/financial-aid/src/fields/Summary/FormInfo.tsx deleted file mode 100644 index 691f4784e3d1..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/FormInfo.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import { MessageDescriptor, useIntl } from 'react-intl' - -import { Text } from '@island.is/island-ui/core' -import { Routes } from '../../lib/constants' -import SummaryBlock from './SummaryBlock' - -interface Props { - goToScreen?: (id: string) => void - items: { - route: Routes - label: MessageDescriptor - info?: MessageDescriptor | string - comment?: string - }[] -} - -const FormInfo = ({ items, goToScreen }: Props) => { - const { formatMessage } = useIntl() - - return ( - <> - {items.map((item, i) => ( - <SummaryBlock editAction={() => goToScreen?.(item.route)} key={i}> - <Text fontWeight="semiBold">{formatMessage(item.label)}</Text> - - <Text> - {typeof item.info === 'string' - ? item.info - : formatMessage(item.info as MessageDescriptor)} - </Text> - - {item.comment && <Text marginTop={2}>{item.comment}</Text>} - </SummaryBlock> - ))} - </> - ) -} - -export default FormInfo diff --git a/libs/application/templates/financial-aid/src/fields/Summary/SummaryBlock.tsx b/libs/application/templates/financial-aid/src/fields/Summary/SummaryBlock.tsx deleted file mode 100644 index 4607d415db7e..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/SummaryBlock.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React, { ReactNode } from 'react' -import { useIntl } from 'react-intl' - -import { Box, Button } from '@island.is/island-ui/core' -import { summaryForm } from '../../lib/messages' -import * as styles from '../Shared.css' - -interface Props { - editAction?: () => void - children: ReactNode -} - -const SummaryBlock = ({ children, editAction }: Props) => { - const { formatMessage } = useIntl() - - return ( - <Box - display="flex" - justifyContent="spaceBetween" - alignItems="flexStart" - paddingY={[4, 4, 5]} - borderTopWidth="standard" - borderColor="blue300" - > - <Box className={styles.summaryBlockChild}>{children}</Box> - <Button - icon="pencil" - iconType="filled" - variant="utility" - onClick={editAction} - > - {formatMessage(summaryForm.block.buttonLabel)} - </Button> - </Box> - ) -} - -export default SummaryBlock diff --git a/libs/application/templates/financial-aid/src/fields/Summary/SummaryComment.tsx b/libs/application/templates/financial-aid/src/fields/Summary/SummaryComment.tsx deleted file mode 100644 index a8f6db41d7fe..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/SummaryComment.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { Controller, useFormContext } from 'react-hook-form' - -import { Box, Input, Text } from '@island.is/island-ui/core' -import { summaryForm } from '../../lib/messages' -import { SummaryComment as SummaryCommentType } from '../../lib/types' - -interface Props { - commentId: SummaryCommentType - comment?: string -} - -const SummaryComment = ({ commentId, comment }: Props) => { - const { formatMessage } = useIntl() - const { setValue } = useFormContext() - - return ( - <> - <Text as="h3" variant="h3"> - {formatMessage(summaryForm.formInfo.formCommentLabel)} - </Text> - <Box marginTop={[3, 3, 4]} marginBottom={4}> - <Controller - name={commentId} - defaultValue={comment} - render={({ field: { onChange, value } }) => { - return ( - <Input - id={commentId} - name={commentId} - label={formatMessage(summaryForm.formInfo.formCommentTitle)} - placeholder={formatMessage( - summaryForm.formInfo.formCommentPlaceholder, - )} - value={value} - textarea={true} - rows={8} - backgroundColor="blue" - onChange={(e) => { - onChange(e.target.value) - setValue(commentId, e.target.value) - }} - /> - ) - }} - /> - </Box> - </> - ) -} - -export default SummaryComment diff --git a/libs/application/templates/financial-aid/src/fields/Summary/UserInfo.tsx b/libs/application/templates/financial-aid/src/fields/Summary/UserInfo.tsx deleted file mode 100644 index 8a8ccbe28816..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/UserInfo.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' - -import { Box, GridColumn, GridRow, Text } from '@island.is/island-ui/core' -import { summaryForm } from '../../lib/messages' -import { formatNationalId } from '@island.is/financial-aid/shared/lib' - -interface Props { - name?: string - nationalId?: string - address?: string -} - -const UserInfo = ({ name, nationalId, address }: Props) => { - const { formatMessage } = useIntl() - - return ( - <Box - paddingY={[4, 4, 5]} - marginTop={4} - borderTopWidth="standard" - borderColor="blue300" - > - <GridRow marginBottom={3}> - <GridColumn span={['12/12', '12/12', '12/12', '5/12']}> - <Box> - <Text fontWeight="semiBold"> - {formatMessage(summaryForm.userInfo.name)} - </Text> - <Text>{name}</Text> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '5/12']}> - <Box marginTop={[3, 3, 3, 0]}> - <Text fontWeight="semiBold"> - {formatMessage(summaryForm.userInfo.nationalId)} - </Text> - <Text>{formatNationalId(nationalId ?? '')}</Text> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '5/12']}> - <Box marginTop={3}> - <Text fontWeight="semiBold"> - {formatMessage(summaryForm.userInfo.address)} - </Text> - <Text>{address}</Text> - </Box> - </GridColumn> - </GridRow> - </Box> - ) -} - -export default UserInfo diff --git a/libs/application/templates/financial-aid/src/fields/Summary/index.ts b/libs/application/templates/financial-aid/src/fields/Summary/index.ts deleted file mode 100644 index 201c26ccd8e9..000000000000 --- a/libs/application/templates/financial-aid/src/fields/Summary/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { default as ContactInfo } from './ContactInfo' -export { default as Files } from './Files' -export { default as SummaryComment } from './SummaryComment' -export { default as UserInfo } from './UserInfo' -export { default as FormInfo } from './FormInfo' -export { default as DirectTaxPaymentCell } from './DirectTaxPaymentCell' diff --git a/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdown.css.ts b/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdown.css.ts deleted file mode 100644 index b80d0cc59eb7..000000000000 --- a/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdown.css.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { style, globalStyle } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const tableContainer = style({ - width: '100%', - backgroundColor: theme.color.white, - border: `1px solid ${theme.color.blue200}`, - '@media': { - [`print`]: { - marginBottom: theme.spacing[4], - }, - }, -}) - -globalStyle(`${tableContainer} th, ${tableContainer} td`, { - paddingRight: theme.spacing[3], - paddingLeft: theme.spacing[3], - paddingTop: theme.spacing[2], - paddingBottom: theme.spacing[2], -}) - -globalStyle(`${tableContainer} tr:first-child`, { - boxShadow: `inset 0px -1px 0px ${theme.color.blue200}`, -}) - -export const tableHeaders = style({ - display: 'none', - '@media': { - [`screen and (min-width: ${theme.breakpoints.sm}px)`]: { - display: 'table-row', - }, - [`print`]: { - display: 'none', - }, - }, -}) - -export const headlineContainer = style({ - backgroundColor: theme.color.blue100, - fontSize: '12px', - color: '#66668A', - fontWeight: 600, -}) - -globalStyle(`${headlineContainer} > td`, { - paddingTop: theme.spacing[1], - paddingBottom: theme.spacing[1], -}) - -export const information = style({ - display: 'grid', - '@media': { - [`screen and (min-width: ${theme.breakpoints.sm}px)`]: { - display: ' table-row', - }, - [`print`]: { - display: ' table-row', - }, - }, -}) diff --git a/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdown.tsx b/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdown.tsx deleted file mode 100644 index 6b1047914bb1..000000000000 --- a/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdown.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import React from 'react' -import { Text } from '@island.is/island-ui/core' -import TaxBreakdownItem from './TaxBreakdownItem' -import { - DirectTaxPayment, - formatNationalId, - getMonth, -} from '@island.is/financial-aid/shared/lib' -import TaxBreakdownHeadline from './TaxBreakdownHeadline' -import groupBy from 'lodash/groupBy' -import { directTaxPaymentModal } from '../../lib/messages' - -import * as styles from './TaxBreakdown.css' -import { useIntl } from 'react-intl' -import { useLocale } from '@island.is/localization' - -interface Dictionary<T> { - [index: string]: T -} - -export const taxBreakDownHeaders = [ - directTaxPaymentModal.taxBreakdown.company, - directTaxPaymentModal.taxBreakdown.totalSalary, - directTaxPaymentModal.taxBreakdown.personalAllowance, - directTaxPaymentModal.taxBreakdown.withheldAtSource, -] - -interface Props { - items: DirectTaxPayment[] - dateDataWasFetched?: string -} - -const TaxBreakdown = ({ items, dateDataWasFetched }: Props) => { - const { formatMessage } = useIntl() - const { lang } = useLocale() - - const date = dateDataWasFetched ? new Date(dateDataWasFetched) : new Date() - - const isKeyInArray = ( - grouped: Dictionary<DirectTaxPayment[]>, - month: number, - year: number, - ) => { - if (!grouped[month]) { - grouped[month] = [{ year, month } as DirectTaxPayment] - } - } - - const fillInDictionary = (grouped: Dictionary<DirectTaxPayment[]>) => { - if (Object.keys(grouped).length === 3) { - return grouped - } - for (let i = 1; i <= 3; i++) { - const prevMonth = date.getMonth() - i - const year = date.getFullYear() - - if (prevMonth < 0) { - isKeyInArray(grouped, prevMonth + 13, year - 1) - } else { - isKeyInArray(grouped, prevMonth + 1, year) - } - } - return grouped - } - const itemsGrouped = groupBy(items, (item) => item.month) - - return ( - <table className={styles.tableContainer}> - <thead> - <tr className={styles.tableHeaders}> - {taxBreakDownHeaders.map((head, index) => { - return ( - <th key={'headers-' + index}> - <Text variant="small" fontWeight="semiBold"> - {formatMessage(head)} - </Text> - </th> - ) - })} - </tr> - </thead> - <tbody> - {Object.entries(fillInDictionary(itemsGrouped)) - .sort( - (a, b) => - a[1][0].year - b[1][0].year || a[1][0].month - b[1][0].month, - ) - .map(([month, monthItems]) => { - const monthNumber = parseInt(month) - 1 - return ( - <> - <TaxBreakdownHeadline - key={`${month}-taxHeadline`} - headline={`${getMonth( - monthNumber < 0 ? 12 + monthNumber : monthNumber, - lang, - )} ${monthItems[0].year}`} - /> - {monthItems.map((item, index) => - item.payerNationalId ? ( - <TaxBreakdownItem - key={`${index}-${item.month}-taxBreakdown-${item.payerNationalId}`} - items={[ - formatNationalId(item.payerNationalId), - `${item.totalSalary.toLocaleString('de-DE')} kr.`, - `${item.personalAllowance.toLocaleString('de-DE')} kr.`, - `${item.withheldAtSource.toLocaleString('de-DE')} kr.`, - ]} - /> - ) : ( - <TaxBreakdownItem - items={[ - formatMessage(directTaxPaymentModal.taxBreakdown.empty), - ]} - /> - ), - )} - </> - ) - })} - </tbody> - </table> - ) -} - -export default TaxBreakdown diff --git a/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdownHeadline.tsx b/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdownHeadline.tsx deleted file mode 100644 index 800e934ceb51..000000000000 --- a/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdownHeadline.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' -import * as styles from './TaxBreakdown.css' - -interface Props { - headline: string -} - -const TaxBreakdownHeadline = ({ headline }: Props) => { - return ( - <tr className={styles.headlineContainer}> - <td colSpan={4}>{headline}</td> - </tr> - ) -} - -export default TaxBreakdownHeadline diff --git a/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdownItem.tsx b/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdownItem.tsx deleted file mode 100644 index 3c9085e80fb1..000000000000 --- a/libs/application/templates/financial-aid/src/fields/TaxBreakdown/TaxBreakdownItem.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react' -import { Text, Box } from '@island.is/island-ui/core' -import * as styles from './TaxBreakdown.css' -import { taxBreakDownHeaders } from './TaxBreakdown' -import { useIntl } from 'react-intl' - -interface Props { - items: Array<string | number> -} - -const TaxBreakdownItem = ({ items }: Props) => { - const { formatMessage } = useIntl() - - return ( - <tr className={styles.information}> - {items.map((el, index) => { - return ( - <td key={`taxbreakDownItem-${el}-${index}`}> - <Box display={['block', 'none', 'none', 'none']}> - <Text variant="small" fontWeight="semiBold" marginBottom={1}> - {formatMessage(taxBreakDownHeaders[index])} - </Text> - </Box> - {el} - </td> - ) - })} - </tr> - ) -} - -export default TaxBreakdownItem diff --git a/libs/application/templates/financial-aid/src/fields/TaxReturnFilesForm/TaxReturnFilesForm.tsx b/libs/application/templates/financial-aid/src/fields/TaxReturnFilesForm/TaxReturnFilesForm.tsx deleted file mode 100644 index a746a9accf6c..000000000000 --- a/libs/application/templates/financial-aid/src/fields/TaxReturnFilesForm/TaxReturnFilesForm.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { UploadFile, Box, AlertMessage } from '@island.is/island-ui/core' -import { taxReturnForm } from '../../lib/messages' - -import { FAFieldBaseProps, OverrideAnswerSchema, UploadFileType } from '../..' - -import { Files } from '..' -import { getTaxFormContent } from './taxFormContent' -import withLogo from '../Logo/Logo' - -const TaxReturnFilesForm = ({ field, application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { id, answers, externalData, assignees } = application - - const { municipalitiesDirectTaxPayments, municipalitiesPersonalTaxReturn } = - assignees.includes(externalData.nationalRegistry.data.nationalId) && - externalData?.taxDataSpouse?.data - ? externalData.taxDataSpouse.data - : externalData.taxData.data - - const taxReturnFetchFailed = - municipalitiesPersonalTaxReturn?.personalTaxReturn === null - const directTaxPaymentsFetchedFailed = - municipalitiesDirectTaxPayments.directTaxPayments.length === 0 && - !municipalitiesDirectTaxPayments.success - const taxDataGatheringFailed = - taxReturnFetchFailed && directTaxPaymentsFetchedFailed - - const content = getTaxFormContent( - taxReturnFetchFailed, - directTaxPaymentsFetchedFailed, - ) - - return ( - <> - {taxDataGatheringFailed && ( - <Box marginBottom={4} marginTop={2}> - <AlertMessage - type="error" - title={formatMessage(taxReturnForm.alertMessage.title)} - message={formatMessage(taxReturnForm.alertMessage.title)} - /> - </Box> - )} - - {content.data} - - <Files - fileKey={field.id as UploadFileType} - uploadFiles={ - answers[field.id as keyof OverrideAnswerSchema] as UploadFile[] - } - folderId={id} - /> - - {content.info} - </> - ) -} - -export default withLogo(TaxReturnFilesForm) diff --git a/libs/application/templates/financial-aid/src/fields/TaxReturnFilesForm/taxFormContent.tsx b/libs/application/templates/financial-aid/src/fields/TaxReturnFilesForm/taxFormContent.tsx deleted file mode 100644 index 895d732d6c4c..000000000000 --- a/libs/application/templates/financial-aid/src/fields/TaxReturnFilesForm/taxFormContent.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import React from 'react' -import { useIntl } from 'react-intl' -import { Text, Box } from '@island.is/island-ui/core' -import { taxReturnForm } from '../../lib/messages' -import { DescriptionText } from '..' - -const DirectTaxPaymentsInfo = () => { - const { formatMessage } = useIntl() - return ( - <> - <Text as="h2" variant="h3" marginBottom={2}> - {formatMessage(taxReturnForm.instructions.findDirectTaxPaymentsTitle)} - </Text> - - <Text> - {formatMessage(taxReturnForm.instructions.findDirectTaxPayments)} - </Text> - </> - ) -} - -const TaxReturnInfo = () => { - const { formatMessage } = useIntl() - return ( - <> - <Text as="h2" variant="h3" marginBottom={2}> - {formatMessage(taxReturnForm.instructions.findTaxReturnTitle)} - </Text> - <DescriptionText text={taxReturnForm.instructions.findTaxReturn} /> - </> - ) -} - -export const getTaxFormContent = ( - taxReturnFailed: boolean, - directTaxPaymentsFailed: boolean, -) => { - switch (true) { - case taxReturnFailed && !directTaxPaymentsFailed: - return { - data: ( - <Box marginBottom={[4, 4, 5]}> - <DescriptionText - text={taxReturnForm.data.directTaxPaymentsFailed} - /> - </Box> - ), - info: <TaxReturnInfo />, - } - case directTaxPaymentsFailed && !taxReturnFailed: - return { - data: ( - <Box marginBottom={[4, 4, 5]} marginTop={2}> - <DescriptionText text={taxReturnForm.data.taxReturnFailed} /> - </Box> - ), - info: <DirectTaxPaymentsInfo />, - } - - default: - return { - data: ( - <> - <Box marginBottom={[4, 4, 5]} marginTop={2}> - <DescriptionText text={taxReturnForm.general.description} /> - </Box> - </> - ), - info: ( - <> - <TaxReturnInfo /> - <DirectTaxPaymentsInfo /> - </> - ), - } - } -} diff --git a/libs/application/templates/financial-aid/src/fields/UnknownRelationshipForm/UnknownRelationshipForm.tsx b/libs/application/templates/financial-aid/src/fields/UnknownRelationshipForm/UnknownRelationshipForm.tsx deleted file mode 100644 index 46f301a80637..000000000000 --- a/libs/application/templates/financial-aid/src/fields/UnknownRelationshipForm/UnknownRelationshipForm.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import React from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import { ApproveOptions, ErrorSchema, FAFieldBaseProps } from '../../lib/types' -import { useIntl } from 'react-intl' -import { unknownRelationship, error } from '../../lib/messages' -import DescriptionText from '../DescriptionText/DescriptionText' -import { useFormContext } from 'react-hook-form' -import { - RadioController, - InputController, - CheckboxController, -} from '@island.is/shared/form-fields' - -import * as styles from '../Shared.css' -import cn from 'classnames' -import { isValidEmail, isValidNationalId } from '../../lib/utils' -import withLogo from '../Logo/Logo' - -type validationType = 'email' | 'nationalId' | 'approveItems' -const errorIdForSpouse = 'relationshipStatus' - -const ValidationCheck = (errors: ErrorSchema, type: validationType) => { - const { formatMessage } = useIntl() - const { getValues } = useFormContext() - switch (type) { - case 'email': - return errors.relationshipStatus !== undefined && - !isValidEmail(getValues(`${errorIdForSpouse}.spouseEmail`)) - ? formatMessage(error.validation.email) - : undefined - case 'nationalId': - return errors.relationshipStatus !== undefined && - !isValidNationalId(getValues(`${errorIdForSpouse}.spouseNationalId`)) - ? formatMessage(error.validation.nationalId) - : undefined - case 'approveItems': - return errors.relationshipStatus !== undefined && - getValues(`${errorIdForSpouse}.spouseApproveTerms`)?.length !== 1 - ? formatMessage(error.validation.approveSpouse) - : undefined - } -} - -const UnknownRelationshipForm = ({ errors, application }: FAFieldBaseProps) => { - const { formatMessage } = useIntl() - const { answers } = application - const { clearErrors, getValues } = useFormContext() - - const typeInput = { - id: 'relationshipStatus.unregisteredCohabitation', - error: errors?.relationshipStatus?.unregisteredCohabitation, - } - - const spouseEmail = { - id: 'relationshipStatus.spouseEmail', - error: ValidationCheck(errors, 'email'), - } - const spouseNationalId = { - id: 'relationshipStatus.spouseNationalId', - error: ValidationCheck(errors, 'nationalId'), - } - - const spouseApproveTerms = { - id: 'relationshipStatus.spouseApproveTerms', - error: ValidationCheck(errors, 'approveItems'), - } - - return ( - <> - <Text variant="intro" marginBottom={[2, 2, 3]} marginTop={2}> - {formatMessage(unknownRelationship.general.intro)} - </Text> - <Box marginBottom={[3, 3, 4]}> - <DescriptionText text={unknownRelationship.general.description} /> - </Box> - <Text as="h3" variant="h3" marginBottom={[3, 3, 4]}> - {formatMessage(unknownRelationship.form.title)} - </Text> - <Box marginBottom={1}> - <RadioController - id={typeInput.id} - defaultValue={answers?.relationshipStatus?.unregisteredCohabitation} - options={[ - { - value: ApproveOptions.No, - label: formatMessage(unknownRelationship.form.radioButtonNo), - }, - { - value: ApproveOptions.Yes, - label: formatMessage(unknownRelationship.form.radioButtonYes), - }, - ]} - largeButtons - backgroundColor="white" - error={typeInput.error} - /> - </Box> - - <Box - className={cn({ - [`${styles.inputContainer}`]: true, - [`${styles.formAppear}`]: - getValues(typeInput.id) === ApproveOptions.Yes, - })} - > - <Box marginBottom={[2, 2, 3]}> - <InputController - id={spouseNationalId.id} - name={spouseNationalId.id} - backgroundColor="blue" - placeholder={formatMessage( - unknownRelationship.inputs.spouseNationalIdPlaceholder, - )} - label={formatMessage(unknownRelationship.inputs.spouseNationalId)} - error={spouseNationalId.error} - defaultValue={getValues(spouseNationalId.id)} - onChange={() => { - clearErrors(errorIdForSpouse) - }} - /> - </Box> - <Box marginBottom={[2, 2, 3]}> - <InputController - id={spouseEmail.id} - name={spouseEmail.id} - backgroundColor="blue" - type="email" - placeholder={formatMessage( - unknownRelationship.inputs.spouseEmailPlaceholder, - )} - label={formatMessage(unknownRelationship.inputs.spouseEmail)} - error={spouseEmail.error} - defaultValue={getValues(spouseEmail.id)} - onChange={() => { - clearErrors(errorIdForSpouse) - }} - /> - </Box> - <CheckboxController - id={spouseApproveTerms.id} - name={spouseApproveTerms.id} - backgroundColor="blue" - large={true} - defaultValue={getValues(spouseApproveTerms.id)} - error={spouseApproveTerms.error} - options={[ - { - value: 'yes', - label: formatMessage(unknownRelationship.inputs.checkboxLabel), - }, - ]} - /> - </Box> - </> - ) -} - -export default withLogo(UnknownRelationshipForm) diff --git a/libs/application/templates/financial-aid/src/forms/ApplicantSubmitted.ts b/libs/application/templates/financial-aid/src/forms/ApplicantSubmitted.ts deleted file mode 100644 index 3fc819cb5f4b..000000000000 --- a/libs/application/templates/financial-aid/src/forms/ApplicantSubmitted.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { - buildCustomField, - buildForm, - buildMultiField, - buildSubmitField, -} from '@island.is/application/core' -import { DefaultEvents, Form } from '@island.is/application/types' -import { Routes } from '../lib/constants' - -import * as m from '../lib/messages' - -export const ApplicantSubmitted: Form = buildForm({ - id: 'FinancialAidApplication', - title: m.status.sectionTitle, - children: [ - buildMultiField({ - id: Routes.APPLICANTSTATUS, - title: m.status.pageTitle, - children: [ - buildCustomField({ - id: Routes.APPLICANTSTATUS, - title: m.status.pageTitle, - component: 'ApplicantStatus', - }), - // Empty submit field to hide all buttons in the footer - buildSubmitField({ - id: '', - title: '', - actions: [], - }), - ], - }), - buildMultiField({ - id: Routes.MISSINGFILES, - title: m.missingFiles.general.pageTitle, - children: [ - buildCustomField( - { - id: Routes.MISSINGFILES, - title: m.missingFiles.general.pageTitle, - component: 'MissingFiles', - }, - { isSpouse: false }, - ), - buildSubmitField({ - id: 'missingFilesSubmit', - title: '', - actions: [ - { - event: DefaultEvents.EDIT, - name: m.missingFiles.general.submit, - type: 'primary', - }, - ], - }), - ], - }), - buildCustomField({ - id: Routes.MISSINGFILESCONFIRMATION, - title: m.missingFiles.confirmation.title, - component: 'MissingFilesConfirmation', - }), - ], -}) diff --git a/libs/application/templates/financial-aid/src/forms/Application.ts b/libs/application/templates/financial-aid/src/forms/Application.ts deleted file mode 100644 index e99e6c4abf1a..000000000000 --- a/libs/application/templates/financial-aid/src/forms/Application.ts +++ /dev/null @@ -1,251 +0,0 @@ -import { - buildCustomField, - buildForm, - buildMultiField, - buildSection, - buildSubmitField, - buildSubSection, - getValueViaPath, -} from '@island.is/application/core' -import { - ApplicantChildCustodyInformation, - DefaultEvents, - Form, - FormModes, -} from '@island.is/application/types' -import { ApproveOptions, ExternalData } from '../lib/types' - -import * as m from '../lib/messages' -import { Routes } from '../lib/constants' - -export const Application: Form = buildForm({ - id: 'FinancialAidApplication', - title: m.application.name, - mode: FormModes.DRAFT, - children: [ - buildSection({ - id: 'personalInterest', - title: m.section.personalInterest, - children: [ - buildSubSection({ - condition: (_, externalData) => - (externalData as unknown as ExternalData).nationalRegistrySpouse - .data != null, - title: m.inRelationship.general.sectionTitle, - id: Routes.INRELATIONSHIP, - children: [ - buildCustomField({ - id: Routes.INRELATIONSHIP, - title: m.inRelationship.general.pageTitle, - component: 'InRelationshipForm', - }), - ], - }), - buildSubSection({ - condition: (_, externalData) => - (externalData as unknown as ExternalData).nationalRegistrySpouse - .data == null, - title: m.unknownRelationship.general.sectionTitle, - id: Routes.UNKNOWNRELATIONSHIP, - children: [ - buildCustomField({ - id: Routes.UNKNOWNRELATIONSHIP, - title: m.unknownRelationship.general.pageTitle, - component: 'UnknownRelationshipForm', - }), - ], - }), - buildSubSection({ - condition: (_, externalData) => { - const childWithInfo = getValueViaPath( - externalData, - 'childrenCustodyInformation.data', - [], - ) as ApplicantChildCustodyInformation[] - - return Boolean(childWithInfo?.length) - }, - id: Routes.CHILDRENSCHOOLINFO, - title: m.childrenForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.CHILDRENSCHOOLINFO, - title: m.childrenForm.general.pageTitle, - component: 'ChildrenForm', - }), - ], - }), - buildSubSection({ - condition: (_, externalData) => { - const childWithInfo = getValueViaPath( - externalData, - 'childrenCustodyInformation.data', - [], - ) as ApplicantChildCustodyInformation[] - - return Boolean(childWithInfo?.length) - }, - id: Routes.CHILDRENFILES, - title: m.childrenFilesForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.CHILDRENFILES, - title: m.childrenFilesForm.general.pageTitle, - component: 'ChildrenFilesForm', - }), - ], - }), - buildSubSection({ - id: Routes.HOMECIRCUMSTANCES, - title: m.homeCircumstancesForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.HOMECIRCUMSTANCES, - title: m.homeCircumstancesForm.general.pageTitle, - component: 'HomeCircumstancesForm', - }), - ], - }), - buildSubSection({ - id: Routes.STUDENT, - title: m.studentForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.STUDENT, - title: m.studentForm.general.pageTitle, - component: 'StudentForm', - }), - ], - }), - buildSubSection({ - id: Routes.EMPLOYMENT, - title: m.employmentForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.EMPLOYMENT, - title: m.employmentForm.general.pageTitle, - component: 'EmploymentForm', - }), - ], - }), - ], - }), - buildSection({ - id: 'finances', - title: m.section.finances, - children: [ - buildSubSection({ - id: Routes.INCOME, - title: m.incomeForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.INCOME, - title: m.incomeForm.general.pageTitle, - component: 'IncomeForm', - }), - ], - }), - buildSubSection({ - condition: (answers) => answers.income === ApproveOptions.Yes, - id: Routes.INCOMEFILES, - title: m.incomeFilesForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.INCOMEFILES, - title: m.incomeFilesForm.general.pageTitle, - component: 'IncomeFilesForm', - }), - ], - }), - buildSubSection({ - condition: (_, externalData) => - (externalData as unknown as ExternalData).taxData?.data - .municipalitiesDirectTaxPayments.success === false || - (externalData as unknown as ExternalData).taxData?.data - ?.municipalitiesPersonalTaxReturn?.personalTaxReturn == null, - id: Routes.TAXRETURNFILES, - title: m.taxReturnForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.TAXRETURNFILES, - title: m.taxReturnForm.general.pageTitle, - component: 'TaxReturnFilesForm', - }), - ], - }), - buildSubSection({ - id: Routes.PERSONALTAXCREDIT, - title: m.personalTaxCreditForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.PERSONALTAXCREDIT, - title: m.personalTaxCreditForm.general.pageTitle, - component: 'PersonalTaxCreditForm', - }), - ], - }), - buildSubSection({ - id: Routes.BANKINFO, - title: m.bankInfoForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.BANKINFO, - title: m.bankInfoForm.general.pageTitle, - component: 'BankInfoForm', - }), - ], - }), - ], - }), - buildSection({ - id: Routes.CONTACTINFO, - title: m.contactInfo.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.CONTACTINFO, - title: m.contactInfo.general.pageTitle, - component: 'ContactInfo', - }), - ], - }), - buildSection({ - id: Routes.SUMMARY, - title: m.summaryForm.general.sectionTitle, - children: [ - buildMultiField({ - id: Routes.SUMMARY, - title: m.summaryForm.general.pageTitle, - children: [ - buildCustomField({ - id: Routes.SUMMARY, - title: m.summaryForm.general.pageTitle, - component: 'SummaryForm', - }), - buildSubmitField({ - id: 'submitApplication', - title: '', - actions: [ - { - event: DefaultEvents.SUBMIT, - name: m.summaryForm.general.submit, - type: 'primary', - }, - ], - }), - ], - }), - ], - }), - buildSection({ - id: Routes.CONFIRMATION, - title: m.confirmation.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.CONFIRMATION, - title: m.confirmation.general.pageTitle, - component: 'ApplicantConfirmation', - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-aid/src/forms/MuncipalityNotRegistered.ts b/libs/application/templates/financial-aid/src/forms/MuncipalityNotRegistered.ts deleted file mode 100644 index 7c6b016c59f6..000000000000 --- a/libs/application/templates/financial-aid/src/forms/MuncipalityNotRegistered.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { buildCustomField, buildForm } from '@island.is/application/core' -import { Form } from '@island.is/application/types' -import { Routes } from '../lib/constants' - -import * as m from '../lib/messages' - -export const MuncipalityNotRegistered: Form = buildForm({ - id: 'FinancialAidApplication', - title: '', - children: [ - buildCustomField({ - id: Routes.SERVICECENTER, - title: m.serviceCenter.general.pageTitle, - component: 'ServiceCenter', - }), - ], -}) diff --git a/libs/application/templates/financial-aid/src/forms/Prerequisites.ts b/libs/application/templates/financial-aid/src/forms/Prerequisites.ts deleted file mode 100644 index b90625f5965f..000000000000 --- a/libs/application/templates/financial-aid/src/forms/Prerequisites.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { - buildCustomField, - buildDataProviderItem, - buildExternalDataProvider, - buildForm, - buildMultiField, - buildSection, - buildSubmitField, -} from '@island.is/application/core' -import { DefaultEvents, Form, FormModes } from '@island.is/application/types' - -import * as m from '../lib/messages' -import { Routes } from '../lib/constants' -import { - CurrentApplicationApi, - NationalRegistryUserApi, - NationalRegistrySpouseApi, - ChildrenCustodyInformationApi, - MunicipalityApi, - TaxDataApi, -} from '../dataProviders' - -export const Prerequisites: Form = buildForm({ - id: 'FinancialAidApplication', - title: m.application.name, - mode: FormModes.DRAFT, - children: [ - buildSection({ - id: 'externalData', - title: m.section.dataGathering, - children: [ - buildExternalDataProvider({ - title: m.externalData.general.pageTitle, - id: 'approveExternalData', - subTitle: m.externalData.general.subTitle, - description: m.externalData.general.description, - checkboxLabel: m.externalData.general.checkboxLabel, - dataProviders: [ - buildDataProviderItem({ - provider: NationalRegistryUserApi, - title: m.externalData.applicant.title, - subTitle: m.externalData.applicant.subTitle, - }), - buildDataProviderItem({ - provider: NationalRegistrySpouseApi, - title: '', - subTitle: '', - }), - buildDataProviderItem({ - provider: ChildrenCustodyInformationApi, - title: '', - subTitle: '', - }), - buildDataProviderItem({ - provider: MunicipalityApi, - title: '', - subTitle: '', - }), - buildDataProviderItem({ - provider: CurrentApplicationApi, - title: '', - subTitle: '', - }), - buildDataProviderItem({ - provider: TaxDataApi, - title: m.externalData.taxData.title, - subTitle: m.externalData.taxData.dataInfo, - }), - buildDataProviderItem({ - id: 'moreTaxInfo', - type: undefined, - title: '', - subTitle: m.externalData.taxData.process, - }), - ], - }), - ], - }), - buildSection({ - id: Routes.ACCECPTCONTRACT, - title: m.aboutForm.general.sectionTitle, - children: [ - buildMultiField({ - id: Routes.ACCECPTCONTRACT, - title: m.aboutForm.general.pageTitle, - children: [ - buildCustomField({ - id: Routes.ACCECPTCONTRACT, - title: m.aboutForm.general.pageTitle, - component: 'AboutForm', - }), - buildSubmitField({ - id: 'toDraft', - title: '', - refetchApplicationAfterSubmit: true, - actions: [ - { - event: DefaultEvents.SUBMIT, - name: m.aboutForm.goToApplication.button, - type: 'primary', - }, - ], - }), - ], - }), - // This is here to be able to show submit button on former screen :( :( :( - buildMultiField({ - id: '', - title: '', - children: [], - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-aid/src/forms/PrerequisitesSpouse.ts b/libs/application/templates/financial-aid/src/forms/PrerequisitesSpouse.ts deleted file mode 100644 index aca037dad8f1..000000000000 --- a/libs/application/templates/financial-aid/src/forms/PrerequisitesSpouse.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { - buildCustomField, - buildDataProviderItem, - buildExternalDataProvider, - buildForm, - buildMultiField, - buildSection, - buildSubmitField, -} from '@island.is/application/core' -import { DefaultEvents, Form, FormModes } from '@island.is/application/types' - -import * as m from '../lib/messages' -import { Routes } from '../lib/constants' -import { CurrentApplicationApi, TaxDataSpouseApi } from '../dataProviders' - -export const PrerequisitesSpouse: Form = buildForm({ - id: 'FinancialAidApplication', - title: m.application.name, - mode: FormModes.IN_PROGRESS, - children: [ - buildSection({ - id: 'externalDataSpouse', - title: m.section.dataGathering, - children: [ - buildExternalDataProvider({ - title: m.externalData.general.pageTitle, - id: 'approveExternalDataSpouse', - subTitle: m.externalData.general.subTitle, - description: m.externalData.general.description, - checkboxLabel: m.externalData.general.checkboxLabel, - dataProviders: [ - buildDataProviderItem({ - provider: TaxDataSpouseApi, - title: m.externalData.taxData.title, - subTitle: m.externalData.taxData.dataInfo, - }), - buildDataProviderItem({ - provider: CurrentApplicationApi, - title: '', - subTitle: '', - }), - buildDataProviderItem({ - id: 'moreTaxInfo', - type: undefined, - title: '', - subTitle: m.externalData.taxData.process, - }), - ], - }), - ], - }), - buildSection({ - id: Routes.SPOUSEACCECPTCONTRACT, - title: m.aboutSpouseForm.general.sectionTitle, - children: [ - buildMultiField({ - id: Routes.SPOUSEACCECPTCONTRACT, - title: m.aboutForm.general.pageTitle, - children: [ - buildCustomField({ - id: Routes.SPOUSEACCECPTCONTRACT, - title: m.aboutSpouseForm.general.pageTitle, - component: 'AboutSpouseForm', - }), - buildSubmitField({ - id: 'toDraft', - title: '', - refetchApplicationAfterSubmit: true, - actions: [ - { - event: DefaultEvents.SUBMIT, - name: m.aboutForm.goToApplication.button, - type: 'primary', - }, - ], - }), - ], - }), - // This is here to be able to show submit button on former screen :( :( :( - buildMultiField({ - id: '', - title: '', - children: [], - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-aid/src/forms/Spouse.ts b/libs/application/templates/financial-aid/src/forms/Spouse.ts deleted file mode 100644 index afa35aeed8bc..000000000000 --- a/libs/application/templates/financial-aid/src/forms/Spouse.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { - buildCustomField, - buildForm, - buildMultiField, - buildSection, - buildSubmitField, -} from '@island.is/application/core' -import { DefaultEvents, Form, FormModes } from '@island.is/application/types' - -import * as m from '../lib/messages' -import { ApproveOptions, ExternalData } from '../lib/types' -import { Routes } from '../lib/constants' - -export const Spouse: Form = buildForm({ - id: 'FinancialAidApplication', - title: m.application.name, - mode: FormModes.IN_PROGRESS, - children: [ - buildSection({ - id: Routes.SPOUSEINCOME, - title: m.incomeForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.SPOUSEINCOME, - title: m.incomeForm.general.pageTitle, - component: 'IncomeForm', - }), - ], - }), - buildSection({ - condition: (answers) => answers.spouseIncome === ApproveOptions.Yes, - id: Routes.SPOUSEINCOMEFILES, - title: m.incomeFilesForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.SPOUSEINCOMEFILES, - title: m.incomeFilesForm.general.pageTitle, - component: 'IncomeFilesForm', - }), - ], - }), - buildSection({ - condition: (_, externalData) => - (externalData as unknown as ExternalData)?.taxDataSpouse?.data - ?.municipalitiesDirectTaxPayments?.success === false || - (externalData as unknown as ExternalData)?.taxDataSpouse?.data - ?.municipalitiesPersonalTaxReturn?.personalTaxReturn == null, - id: Routes.SPOUSETAXRETURNFILES, - title: m.taxReturnForm.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.SPOUSETAXRETURNFILES, - title: m.taxReturnForm.general.pageTitle, - component: 'TaxReturnFilesForm', - }), - ], - }), - buildSection({ - id: Routes.SPOUSECONTACTINFO, - title: m.contactInfo.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.SPOUSECONTACTINFO, - title: m.contactInfo.general.pageTitle, - component: 'ContactInfo', - }), - ], - }), - buildSection({ - id: Routes.SPOUSESUMMARY, - title: m.summaryForm.general.sectionTitle, - children: [ - buildMultiField({ - id: Routes.SPOUSESUMMARY, - title: m.summaryForm.general.pageTitle, - children: [ - buildCustomField({ - id: Routes.SPOUSESUMMARY, - title: m.summaryForm.general.pageTitle, - component: 'SpouseSummaryForm', - }), - buildSubmitField({ - id: 'submitApplication', - title: '', - actions: [ - { - event: DefaultEvents.SUBMIT, - name: m.summaryForm.general.submit, - type: 'primary', - }, - ], - }), - ], - }), - ], - }), - buildSection({ - id: Routes.SPOUSECONFIRMATION, - title: m.confirmation.general.sectionTitle, - children: [ - buildCustomField({ - id: Routes.SPOUSECONFIRMATION, - title: m.confirmation.general.pageTitle, - component: 'SpouseConfirmation', - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-aid/src/forms/SpouseSubmitted.ts b/libs/application/templates/financial-aid/src/forms/SpouseSubmitted.ts deleted file mode 100644 index a66001769230..000000000000 --- a/libs/application/templates/financial-aid/src/forms/SpouseSubmitted.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { - buildCustomField, - buildForm, - buildMultiField, - buildSubmitField, -} from '@island.is/application/core' -import { DefaultEvents, Form } from '@island.is/application/types' -import { Routes } from '../lib/constants' - -import * as m from '../lib/messages' - -export const SpouseSubmitted: Form = buildForm({ - id: 'FinancialAidApplication', - title: m.status.sectionTitle, - children: [ - buildMultiField({ - id: Routes.SPOUSESTATUS, - title: m.status.pageTitle, - children: [ - buildCustomField({ - id: Routes.SPOUSESTATUS, - title: m.status.spousePageTitle, - component: 'SpouseStatus', - }), - // Empty submit field to hide all buttons in the footer - buildSubmitField({ - id: '', - title: '', - actions: [], - }), - ], - }), - buildMultiField({ - id: Routes.MISSINGFILES, - title: m.missingFiles.general.pageTitle, - children: [ - buildCustomField( - { - id: Routes.MISSINGFILES, - title: m.missingFiles.general.pageTitle, - component: 'MissingFiles', - }, - { isSpouse: true }, - ), - buildSubmitField({ - id: 'missingFilesSubmit', - title: '', - actions: [ - { - event: DefaultEvents.EDIT, - name: m.missingFiles.general.submit, - type: 'primary', - }, - ], - }), - ], - }), - buildCustomField({ - id: Routes.MISSINGFILESCONFIRMATION, - title: m.missingFiles.confirmation.title, - component: 'MissingFilesConfirmation', - }), - ], -}) diff --git a/libs/application/templates/financial-aid/src/svg/akrahreppur.svg b/libs/application/templates/financial-aid/src/svg/akrahreppur.svg deleted file mode 100644 index bceed6a9fcfa..000000000000 --- a/libs/application/templates/financial-aid/src/svg/akrahreppur.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.606 96C30.4519 89.1714 16.7516 75.392 17.0034 58.353V16.6189C17.0034 16.4547 17.0686 16.2973 17.1847 16.1813C17.3007 16.0652 17.4581 16 17.6222 16H77.5826C77.6645 15.9991 77.7457 16.0144 77.8216 16.0451C77.8976 16.0757 77.9666 16.1212 78.0248 16.1787C78.0831 16.2363 78.1293 16.3048 78.1609 16.3804C78.1924 16.4559 78.2086 16.537 78.2086 16.6189V58.353C78.4533 75.392 64.753 89.1714 47.606 96Z" fill="#848484"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.336 75L106.992 70.728H101.04L99.72 75H96.504L102.12 58.248H106.056L111.624 75H108.336ZM104.064 61.128H103.944L101.808 68.016H106.224L104.064 61.128ZM113.901 57.24H116.973V67.944H117.093L118.749 65.688L121.557 62.472H125.037L120.717 67.32L125.493 75H121.845L118.629 69.384L116.973 71.184V75H113.901V57.24ZM127.378 75V62.472H130.45V65.064H130.57C130.65 64.728 130.77 64.408 130.93 64.104C131.106 63.784 131.33 63.504 131.602 63.264C131.874 63.024 132.194 62.832 132.562 62.688C132.946 62.544 133.386 62.472 133.882 62.472H134.554V65.376H133.594C132.554 65.376 131.77 65.528 131.242 65.832C130.714 66.136 130.45 66.632 130.45 67.32V75H127.378ZM145.758 75C145.086 75 144.55 74.808 144.15 74.424C143.766 74.024 143.526 73.496 143.43 72.84H143.286C143.078 73.656 142.654 74.272 142.014 74.688C141.374 75.088 140.582 75.288 139.638 75.288C138.358 75.288 137.374 74.952 136.686 74.28C135.998 73.608 135.654 72.712 135.654 71.592C135.654 70.296 136.118 69.336 137.046 68.712C137.974 68.072 139.294 67.752 141.006 67.752H143.142V66.84C143.142 66.136 142.958 65.592 142.59 65.208C142.222 64.824 141.63 64.632 140.814 64.632C140.094 64.632 139.51 64.792 139.062 65.112C138.63 65.416 138.262 65.784 137.958 66.216L136.134 64.584C136.598 63.864 137.214 63.288 137.982 62.856C138.75 62.408 139.766 62.184 141.03 62.184C142.726 62.184 144.014 62.568 144.894 63.336C145.774 64.104 146.214 65.208 146.214 66.648V72.552H147.462V75H145.758ZM140.67 73.056C141.358 73.056 141.942 72.904 142.422 72.6C142.902 72.296 143.142 71.848 143.142 71.256V69.6H141.174C139.574 69.6 138.774 70.112 138.774 71.136V71.544C138.774 72.056 138.934 72.44 139.254 72.696C139.59 72.936 140.062 73.056 140.67 73.056ZM149.948 57.24H153.02V64.56H153.14C153.396 63.888 153.796 63.328 154.34 62.88C154.9 62.416 155.668 62.184 156.644 62.184C157.94 62.184 158.932 62.608 159.62 63.456C160.308 64.304 160.652 65.512 160.652 67.08V75H157.58V67.392C157.58 66.496 157.42 65.824 157.1 65.376C156.78 64.928 156.252 64.704 155.516 64.704C155.196 64.704 154.884 64.752 154.58 64.848C154.292 64.928 154.028 65.056 153.788 65.232C153.564 65.392 153.38 65.6 153.236 65.856C153.092 66.096 153.02 66.384 153.02 66.72V75H149.948V57.24ZM164.057 75V62.472H167.129V65.064H167.249C167.329 64.728 167.449 64.408 167.609 64.104C167.785 63.784 168.009 63.504 168.281 63.264C168.553 63.024 168.873 62.832 169.241 62.688C169.625 62.544 170.065 62.472 170.561 62.472H171.233V65.376H170.273C169.233 65.376 168.449 65.528 167.921 65.832C167.393 66.136 167.129 66.632 167.129 67.32V75H164.057ZM178.426 75.288C177.498 75.288 176.666 75.136 175.93 74.832C175.21 74.512 174.594 74.072 174.082 73.512C173.586 72.936 173.202 72.248 172.93 71.448C172.658 70.632 172.522 69.72 172.522 68.712C172.522 67.72 172.65 66.824 172.906 66.024C173.178 65.224 173.562 64.544 174.058 63.984C174.554 63.408 175.162 62.968 175.882 62.664C176.602 62.344 177.418 62.184 178.33 62.184C179.306 62.184 180.154 62.352 180.874 62.688C181.594 63.024 182.186 63.48 182.65 64.056C183.114 64.632 183.458 65.304 183.682 66.072C183.922 66.824 184.042 67.632 184.042 68.496V69.504H175.714V69.816C175.714 70.728 175.97 71.464 176.482 72.024C176.994 72.568 177.754 72.84 178.762 72.84C179.53 72.84 180.154 72.68 180.634 72.36C181.13 72.04 181.57 71.632 181.954 71.136L183.61 72.984C183.098 73.704 182.394 74.272 181.498 74.688C180.618 75.088 179.594 75.288 178.426 75.288ZM178.378 64.488C177.562 64.488 176.914 64.76 176.434 65.304C175.954 65.848 175.714 66.552 175.714 67.416V67.608H180.85V67.392C180.85 66.528 180.634 65.832 180.202 65.304C179.786 64.76 179.178 64.488 178.378 64.488ZM186.745 62.472H189.817V64.536H189.913C190.137 63.816 190.561 63.248 191.185 62.832C191.809 62.4 192.537 62.184 193.369 62.184C194.969 62.184 196.185 62.752 197.017 63.888C197.865 65.008 198.289 66.616 198.289 68.712C198.289 70.824 197.865 72.448 197.017 73.584C196.185 74.72 194.969 75.288 193.369 75.288C192.537 75.288 191.809 75.072 191.185 74.64C190.577 74.208 190.153 73.632 189.913 72.912H189.817V79.8H186.745V62.472ZM192.385 72.744C193.185 72.744 193.833 72.48 194.329 71.952C194.825 71.424 195.073 70.712 195.073 69.816V67.656C195.073 66.76 194.825 66.048 194.329 65.52C193.833 64.976 193.185 64.704 192.385 64.704C191.649 64.704 191.033 64.888 190.537 65.256C190.057 65.624 189.817 66.112 189.817 66.72V70.704C189.817 71.36 190.057 71.864 190.537 72.216C191.033 72.568 191.649 72.744 192.385 72.744ZM201.135 62.472H204.207V64.536H204.303C204.527 63.816 204.951 63.248 205.575 62.832C206.199 62.4 206.927 62.184 207.759 62.184C209.359 62.184 210.575 62.752 211.407 63.888C212.255 65.008 212.679 66.616 212.679 68.712C212.679 70.824 212.255 72.448 211.407 73.584C210.575 74.72 209.359 75.288 207.759 75.288C206.927 75.288 206.199 75.072 205.575 74.64C204.967 74.208 204.543 73.632 204.303 72.912H204.207V79.8H201.135V62.472ZM206.775 72.744C207.575 72.744 208.223 72.48 208.719 71.952C209.215 71.424 209.463 70.712 209.463 69.816V67.656C209.463 66.76 209.215 66.048 208.719 65.52C208.223 64.976 207.575 64.704 206.775 64.704C206.039 64.704 205.423 64.888 204.927 65.256C204.447 65.624 204.207 66.112 204.207 66.72V70.704C204.207 71.36 204.447 71.864 204.927 72.216C205.423 72.568 206.039 72.744 206.775 72.744ZM223.014 72.912H222.894C222.782 73.232 222.63 73.536 222.438 73.824C222.262 74.096 222.03 74.344 221.742 74.568C221.47 74.792 221.134 74.968 220.734 75.096C220.35 75.224 219.902 75.288 219.39 75.288C218.094 75.288 217.102 74.864 216.414 74.016C215.726 73.168 215.382 71.96 215.382 70.392V62.472H218.454V70.08C218.454 70.944 218.622 71.608 218.958 72.072C219.294 72.52 219.83 72.744 220.566 72.744C220.87 72.744 221.166 72.704 221.454 72.624C221.758 72.544 222.022 72.424 222.246 72.264C222.47 72.088 222.654 71.88 222.798 71.64C222.942 71.384 223.014 71.088 223.014 70.752V62.472H226.086V75H223.014V72.912ZM229.635 75V62.472H232.707V65.064H232.827C232.907 64.728 233.027 64.408 233.187 64.104C233.363 63.784 233.587 63.504 233.859 63.264C234.131 63.024 234.451 62.832 234.819 62.688C235.203 62.544 235.643 62.472 236.139 62.472H236.811V65.376H235.851C234.811 65.376 234.027 65.528 233.499 65.832C232.971 66.136 232.707 66.632 232.707 67.32V75H229.635Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/akranes.svg b/libs/application/templates/financial-aid/src/svg/akranes.svg deleted file mode 100644 index 032b637b4bf1..000000000000 --- a/libs/application/templates/financial-aid/src/svg/akranes.svg +++ /dev/null @@ -1,80 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M77.6139 16.1544V58.471C77.7683 62.9498 77.6139 67.583 75.6062 71.444C70.0463 82.2548 58.7722 91.6757 47.807 96C43.4826 94.1467 39.1583 91.9846 35.2973 89.0502C30.0463 85.0347 24.9498 79.7838 21.7066 74.3784C19.5444 70.9807 18.3089 67.2741 18 63.2587V16L77.6139 16.1544Z" fill="#005596"/> -<path d="M50.8971 17.6988C50.7426 19.2432 49.3527 20.7876 47.9627 21.251C46.7272 21.7143 45.3372 21.5598 43.9473 21.5598V17.5444C44.8739 17.8533 45.6461 18.7799 45.955 19.7066H46.1094C47.1905 18.1622 49.0438 17.39 50.8971 17.6988Z" fill="white"/> -<path d="M42.8651 18.4711V20.0155L42.2473 20.6332H40.7029V21.251H42.2473L42.8651 22.1776V26.6564H40.7029V22.4865C40.5485 22.3321 40.3941 22.4865 40.0852 22.3321C40.0852 23.722 40.0852 25.112 40.0852 26.5019H36.6875L39.6219 24.6487V21.0965H39.0041C39.0041 21.8687 39.0041 22.9498 38.8497 23.722L38.5408 23.8765V19.2433C39.313 18.6255 40.0852 18.1622 40.8574 17.6989H41.784L42.8651 18.4711Z" fill="white"/> -<path d="M52.2853 19.2432L52.1309 19.0888L52.2853 17.5444L54.6019 17.6988L52.2853 19.2432Z" fill="white"/> -<path d="M35.9141 19.3977V17.6989C36.8407 17.6989 37.7673 17.6989 38.694 17.6989L35.9141 19.3977Z" fill="white"/> -<path d="M35.9141 20.4788V20.0155L39.4662 17.6989V18.0077L35.9141 20.4788Z" fill="white"/> -<path d="M55.3753 19.7066V23.722L55.0664 23.8764V18.7799L55.3753 18.6255C55.3753 18.7799 55.3753 19.0888 55.5297 19.2432L58.0008 17.5444H58.6185L55.3753 19.7066Z" fill="white"/> -<path d="M61.8625 18.6255C62.0169 18.3166 61.708 18.0077 61.708 17.6989H62.0169C62.3258 18.0077 62.4802 18.4711 62.7891 18.6255C63.098 18.4711 62.6347 18.0077 62.7891 17.6989H65.569L64.6424 19.861H60.627V17.6989C61.2447 17.39 61.3992 18.4711 61.8625 18.6255Z" fill="white"/> -<path d="M67.2677 17.6988C65.4144 19.861 63.7155 22.6409 64.951 25.4209C65.1055 25.7297 65.4144 25.8842 65.7233 25.8842C66.0321 25.8842 66.4955 25.7297 66.6499 25.4209C66.8043 25.2664 66.6499 24.8031 66.4955 24.6487C66.1866 24.1853 65.4144 24.3398 65.1055 24.4942C64.951 24.0309 64.951 23.4131 65.1055 22.7954H67.731C67.731 24.1853 68.1943 26.0386 66.4955 26.6564C65.8777 26.8108 65.4144 26.8108 65.1055 26.5019C63.7155 25.4209 64.1788 23.2587 64.4877 21.7143C64.7966 20.3243 65.2599 18.7799 66.0321 17.5444C66.341 17.6988 66.8043 17.5444 67.2677 17.6988Z" fill="white"/> -<path d="M34.6803 19.0888H30.9737C30.9737 19.2433 30.8193 19.5521 30.9737 19.7066H34.0625L34.6803 20.3243V21.8687L34.0625 22.4865H32.0548C32.0548 22.6409 31.9004 22.9498 32.0548 23.1043H32.2092H34.6803V26.6564C33.9081 26.8108 33.2903 26.6564 32.5181 26.6564V24.1853C32.3637 24.1853 31.9004 24.0309 31.9004 24.3398C31.9004 25.112 31.9004 25.8842 31.9004 26.6564H28.6571L31.5915 24.6487V24.3398C31.5915 23.2587 31.5915 22.1776 31.437 21.0965H30.9737C30.9737 21.8687 30.9737 22.7954 30.8193 23.5676L30.6648 23.8765V19.7066L30.5104 19.5521C29.5838 20.0155 28.6571 20.6332 27.7305 21.251V20.9421C28.6571 20.3243 29.5838 19.7066 30.5104 19.0888C30.6648 18.9344 30.356 18.9344 30.2015 18.7799L28.6571 17.6989C30.6648 17.6989 32.5181 17.6989 34.6803 17.6989V19.0888Z" fill="white"/> -<path d="M59.2353 18.0077L56.1465 20.1699V19.861L59.2353 17.6989V18.0077Z" fill="white"/> -<path d="M55.3741 17.6989V18.0077C54.293 18.7799 53.2119 19.3977 52.1309 20.0155V19.7066C53.2119 19.0888 54.293 18.3166 55.3741 17.6989Z" fill="white"/> -<path d="M68.8105 19.861V17.6989H72.0538L68.8105 19.861Z" fill="white"/> -<path d="M75.7623 18.3166C75.9167 18.6255 75.7623 18.9344 75.6079 19.2433C75.299 19.5521 74.9901 19.5521 74.6812 19.5521C74.5268 19.5521 74.3723 19.2433 74.2179 19.2433V20.4788C74.6812 20.6332 75.299 20.4788 75.9167 20.4788C75.9167 21.251 75.9167 22.1776 75.9167 22.9498C74.5268 23.8765 73.1368 24.8031 71.9013 25.5753C71.7469 25.4209 72.0557 24.9575 71.7469 24.9575C71.2835 25.4209 70.9747 26.1931 70.3569 26.5019C70.048 26.6564 69.5847 26.6564 69.2758 26.5019C68.9669 26.3475 68.9669 25.8842 68.9669 25.5753C68.9669 25.2664 69.2758 24.9575 69.5847 24.8031C69.8936 24.8031 70.048 24.8031 70.2025 24.8031L70.3569 25.2664C70.5113 24.8031 70.3569 24.4942 70.3569 24.0309C69.8936 23.8765 69.2758 24.0309 68.8125 23.8765V21.4054L72.8279 18.7799C72.9824 18.9344 72.6735 19.3977 72.9824 19.3977H73.1368C73.4457 18.6255 74.2179 17.8533 74.9901 17.6989C75.299 17.6989 75.6079 18.0077 75.7623 18.3166Z" fill="white"/> -<path d="M29.7382 19.0888C29.2749 19.5521 28.5027 20.0155 27.7305 20.4788V17.8533L29.7382 19.0888Z" fill="white"/> -<path d="M26.4946 17.8533C26.3401 19.2433 25.1046 20.6332 23.7147 21.251C22.4791 21.7143 21.0892 21.5599 19.6992 21.5599C19.6992 20.3243 19.6992 19.0888 19.6992 17.8533C20.6259 18.0077 21.3981 18.9344 21.7069 19.861C22.0158 19.7066 22.3247 19.2433 22.6336 18.9344C23.7147 18.0077 25.1046 17.6989 26.4946 17.8533Z" fill="white"/> -<path d="M72.826 18.1622L68.8105 20.7877V20.4788L72.826 17.8533V18.1622Z" fill="white"/> -<path d="M50.4317 18.1622C50.4317 18.6255 49.9684 19.0888 49.6595 19.5521C48.7329 20.4788 47.4974 20.9421 46.2619 21.0965L46.1074 20.9421C46.4163 19.5521 47.8063 18.3166 49.1962 18.1622C49.6595 18.1622 49.9684 18.0077 50.4317 18.1622Z" fill="#005596"/> -<path d="M26.0315 18.3166C25.2593 20.1699 23.406 21.0965 21.5527 21.0965C21.8616 19.7066 23.2516 18.6255 24.6415 18.3166C25.1049 18.1622 25.5682 18.3166 26.0315 18.3166Z" fill="#005596"/> -<path d="M29.1203 19.0888C28.9658 19.3977 28.5025 19.5522 28.1936 19.861C28.0392 19.3977 28.1936 18.9344 28.1936 18.4711C28.5025 18.6255 28.8114 18.7799 29.1203 19.0888Z" fill="#005596"/> -<path d="M41.9382 18.6255C42.0926 18.7799 42.247 19.0888 42.0926 19.3977C41.9382 19.5521 41.7837 19.861 41.6293 19.861C41.3204 20.0155 41.166 19.861 40.8571 19.7066C40.7026 19.3977 40.5482 19.0888 40.7026 18.7799C40.8571 18.6255 41.0115 18.4711 41.166 18.3166C41.4748 18.3166 41.7837 18.4711 41.9382 18.6255Z" fill="#005596"/> -<path d="M21.2435 20.9421H20.1624C20.1624 20.1699 20.0079 19.0888 20.1624 18.3166C20.9346 19.0888 21.2435 20.0155 21.2435 20.9421Z" fill="#005596"/> -<path d="M45.1824 19.3977C45.3368 19.861 45.4912 20.4788 45.4912 20.9421H44.4102V18.3166C44.719 18.6255 45.0279 19.0888 45.1824 19.3977Z" fill="#005596"/> -<path d="M58.9261 23.722C58.7716 22.1776 58.9261 20.3244 58.9261 18.7799L59.2349 18.4711V23.4132L58.9261 23.722Z" fill="white"/> -<path d="M67.5743 21.7143C66.8021 21.8687 66.0299 21.7143 65.4121 21.7143C65.8754 20.6332 66.4932 19.5521 67.4198 18.6255V18.7799L67.5743 21.7143Z" fill="white"/> -<path d="M58.4628 24.0309L56.764 25.112C56.764 23.4131 56.6095 21.8687 56.764 20.1699L58.4628 19.0888C58.6172 20.7876 58.4628 22.4865 58.4628 24.0309Z" fill="white"/> -<path d="M54.6033 24.3398L53.0589 25.2664C52.9044 23.5676 53.0589 21.8687 53.0589 20.1699L54.6033 19.2433C54.6033 20.9421 54.6033 22.6409 54.6033 24.3398Z" fill="white"/> -<path d="M26.3398 19.861V24.0309L26.6487 23.722V19.3977L26.3398 19.861Z" fill="white"/> -<path d="M50.5859 20.0155V23.722L51.0493 23.5676V19.3977L50.5859 20.0155Z" fill="white"/> -<path d="M38.232 24.1853C37.6143 24.4942 37.151 24.9576 36.5332 25.2664V20.4788L38.232 19.3977C38.3865 21.0965 38.232 22.4865 38.232 24.1853Z" fill="white"/> -<path d="M60.4708 20.1699L60.3164 20.4788H64.3318V20.1699H60.4708Z" fill="white"/> -<path d="M30.2008 24.0309C29.583 24.4942 29.1197 24.8031 28.502 25.112V21.251L30.2008 20.1699V24.0309Z" fill="white"/> -<path d="M33.9075 20.7877C34.062 21.0965 33.9075 21.4054 33.7531 21.5599C33.5987 21.7143 33.1353 21.8687 32.8265 21.7143C32.672 21.7143 32.5176 21.4054 32.5176 21.251C32.5176 20.9421 32.672 20.6332 32.9809 20.4788C33.2898 20.1699 33.7531 20.4788 33.9075 20.7877Z" fill="#005596"/> -<path d="M48.5804 25.112C48.5804 23.8765 48.4259 22.6409 48.5804 21.4054C49.1981 21.251 49.8159 20.7877 50.2792 20.3243V24.0309L48.5804 25.112Z" fill="white"/> -<path d="M25.8766 24.1853L24.1777 25.2664V21.4054C24.7955 21.0965 25.2588 20.7877 25.7221 20.3243C25.8766 21.7143 25.8766 23.1043 25.8766 24.1853Z" fill="white"/> -<path d="M52.5943 25.5753L52.2854 25.8842C52.131 24.1854 52.2854 22.4865 52.2854 20.7877L52.5943 20.4788C52.5943 22.1776 52.5943 23.8765 52.5943 25.5753Z" fill="white"/> -<path d="M56.3011 20.4788C56.3011 22.1776 56.4555 23.722 56.3011 25.4209L55.9922 25.5753V20.6332L56.3011 20.4788Z" fill="white"/> -<path d="M36.2229 25.5753L35.9141 25.7297V20.9421L36.2229 20.7877C36.2229 22.3321 36.2229 24.0309 36.2229 25.5753Z" fill="white"/> -<path d="M62.7887 24.1853L61.2443 25.2664C61.0898 23.8764 61.2443 22.332 61.0898 20.9421C61.5532 20.7876 62.3254 20.9421 62.7887 20.9421V24.1853Z" fill="white"/> -<path d="M60.4707 20.9421V25.7297L60.7796 25.5753V20.9421H60.4707Z" fill="white"/> -<path d="M63.252 20.9421V23.8764L63.5608 23.722V20.9421H63.252Z" fill="white"/> -<path d="M73.1356 21.8687C73.29 22.0232 73.1356 22.332 73.1356 22.6409C72.9811 22.9498 72.6723 22.9498 72.3634 22.9498C72.0545 22.9498 71.9001 22.7954 71.7456 22.4865C71.5912 22.332 71.7456 22.0232 71.9001 21.7143C72.0545 21.5598 72.2089 21.4054 72.5178 21.4054C72.6723 21.4054 72.9811 21.5598 73.1356 21.8687Z" fill="#005596"/> -<path d="M27.7305 21.8687L27.8849 25.7297L28.0393 25.5753V21.5598L27.7305 21.8687Z" fill="white"/> -<path d="M48.1155 25.4209L47.9611 25.5753C47.8066 24.3398 47.9611 22.9498 47.8066 21.7143H48.1155V25.4209Z" fill="white"/> -<path d="M23.5605 21.7143V25.8842L23.715 25.7297V21.7143H23.5605Z" fill="white"/> -<path d="M43.9473 21.8687V25.7297L44.2561 25.5753V21.8687H43.9473Z" fill="white"/> -<path d="M46.4162 21.8687C46.5707 22.6409 46.4162 23.4131 46.4162 24.0309L44.7174 25.2664C44.563 24.1853 44.563 22.9498 44.7174 21.8687H46.4162Z" fill="white"/> -<path d="M46.8789 21.8687V23.8764L47.1878 23.5676V21.8687H46.8789Z" fill="white"/> -<path d="M19.6992 21.8687V25.7297L20.0081 25.5753V21.8687H19.6992Z" fill="white"/> -<path d="M22.0151 21.8687C22.0151 22.6409 22.0151 23.4131 22.0151 24.1853L20.4707 25.2664V21.8687H22.0151Z" fill="white"/> -<path d="M22.7874 23.722L22.4785 23.8764C22.4785 23.2587 22.4785 22.4865 22.4785 21.8687H22.7874V23.722Z" fill="white"/> -<path d="M67.4203 22.4865C66.6481 22.6409 65.7214 22.4865 64.9492 22.4865L65.1037 22.1776H67.4203V22.4865Z" fill="white"/> -<path d="M75.916 23.8764L71.7461 26.6564V26.193L75.7615 23.5676L75.916 23.8764Z" fill="white"/> -<path d="M51.0518 24.4942C49.9708 25.2664 48.8897 26.0386 47.8086 26.6564V26.193L51.0518 24.0309V24.4942Z" fill="white"/> -<path d="M47.1904 24.6487L44.1016 26.8108V26.3475C45.1826 25.5753 46.2637 24.9575 47.3448 24.1853V24.6487H47.1904Z" fill="white"/> -<path d="M59.3917 24.6487L56.1484 26.8108V26.3475C57.2295 25.5753 58.3106 24.9575 59.3917 24.1853V24.6487Z" fill="white"/> -<path d="M22.9425 24.6487L19.8537 26.6564L19.6992 26.1931L22.788 24.1853L22.9425 24.6487Z" fill="white"/> -<path d="M63.7139 24.4942L60.4707 26.6564V26.1931L63.5595 24.1853L63.7139 24.4942Z" fill="white"/> -<path d="M36.0685 26.6564H35.9141V26.3475L39.0029 24.1853V24.6487L36.0685 26.6564Z" fill="white"/> -<path d="M30.9736 24.6487L27.8848 26.6564V26.1931L30.9736 24.1853V24.6487Z" fill="white"/> -<path d="M26.6493 24.6487L23.5605 26.6564V26.3475L26.6493 24.1853V24.6487Z" fill="white"/> -<path d="M55.5284 24.6486C54.4473 25.4208 53.3662 26.0386 52.2852 26.6564V26.3475L55.374 24.3398L55.5284 24.6486Z" fill="white"/> -<path d="M75.9153 26.8108H72.5176C73.5987 26.0386 74.8342 25.2664 75.9153 24.6487V26.8108Z" fill="white"/> -<path d="M63.5591 26.6564H60.9336C61.8602 26.0386 62.6324 25.5753 63.5591 24.9575V26.6564Z" fill="white"/> -<path d="M26.6488 26.6564H24.1777C24.9499 26.0386 25.8766 25.5753 26.6488 24.9575V26.6564Z" fill="white"/> -<path d="M59.391 26.6564C58.6188 26.8108 57.6921 26.6564 56.9199 26.6564L59.391 24.9575V26.6564Z" fill="white"/> -<path d="M47.1898 26.6563C46.4176 26.6563 45.6454 26.6563 44.7188 26.6563L47.0354 25.1119L47.1898 26.6563Z" fill="white"/> -<path d="M51.051 26.6563C50.2788 26.6563 49.5066 26.6563 48.7344 26.6563C49.3521 26.193 50.2788 25.5753 51.051 25.1119C51.2054 25.5753 51.051 26.193 51.051 26.6563Z" fill="white"/> -<path d="M55.5295 26.6563H53.2129L55.5295 25.1119C55.5295 25.5753 55.5295 26.193 55.5295 26.6563Z" fill="white"/> -<path d="M22.9417 26.6563H20.4707C21.2429 26.193 22.0151 25.5753 22.7873 25.1119V26.6563H22.9417Z" fill="white"/> -<path d="M21.0892 43.027H21.2436C22.1703 42.5637 23.2513 41.9459 24.3324 41.7915C24.9502 41.6371 25.7224 41.7915 26.1857 42.2548C26.3401 42.1004 26.1857 41.7915 25.8768 41.7915L25.4135 41.6371C26.4946 41.0193 27.4212 40.2471 28.3479 39.3205C29.5834 38.8571 30.8189 38.8571 32.2089 38.8571C32.5178 38.7027 32.9811 38.7027 33.4444 38.7027C33.29 38.8571 33.1355 38.8571 32.9811 39.0116C32.6722 39.4749 32.3633 39.9382 32.0544 40.4015C32.3633 40.2471 32.6722 39.9382 32.9811 39.6293C33.5988 39.0116 34.0622 38.7027 34.5255 37.9305C37.3054 37.7761 39.7764 38.7027 42.4019 39.0116C43.483 40.0927 45.1818 40.0927 46.4174 40.7104C49.3517 41.9459 52.4405 42.7181 55.6838 42.8726C54.6027 42.4093 53.3672 42.5637 52.2861 42.2548C50.4328 41.7915 48.5795 41.4826 47.0351 40.7104C48.4251 41.0193 49.9695 40.7104 51.5139 40.7104L51.3595 41.0193C51.6683 41.0193 51.9772 40.556 52.2861 40.556C53.8305 39.6293 55.9927 39.6293 57.8459 39.7838C57.2282 40.0927 56.456 40.0927 55.8382 40.7104C57.5371 40.0927 59.3903 39.6293 61.3981 39.3205C63.0969 39.0116 64.6413 38.5483 66.1857 38.0849C66.0313 38.3938 65.8768 38.5483 65.8768 39.0116C66.0313 39.3205 66.3401 39.4749 66.1857 39.7838C65.5679 40.2471 64.7957 39.9382 64.0235 40.0927C63.0969 41.1737 61.5525 40.8649 60.1625 41.1737C58.1548 41.3282 56.7649 43.027 54.7571 43.3359C54.6027 43.4903 54.4483 43.4903 54.2938 43.6448C54.9116 43.4903 55.6838 43.3359 56.456 43.027C58.4637 41.7915 60.7803 41.1737 63.2513 41.0193C63.4058 40.8649 63.7147 40.8649 63.8691 40.7104C64.4869 42.1004 66.0313 42.5637 67.1123 43.4903C67.4212 43.6448 67.7301 43.6448 68.1934 43.7992C66.8035 43.027 64.7957 42.4093 64.178 40.7104C65.1046 40.7104 66.1857 40.7104 66.649 39.9382C66.8035 39.3205 66.0313 39.4749 66.1857 39.0116C66.3401 38.7027 66.4946 38.5483 66.8035 38.2394C66.9579 38.3938 67.1123 38.7027 67.2668 39.0116C67.7301 39.4749 68.1934 39.7838 68.8112 40.0927C69.2745 40.7104 69.8923 41.0193 70.51 41.3282C71.5911 42.5637 72.9811 43.1815 74.371 43.7992V41.0193V28.0463H75.761L75.6066 62.6409C75.761 67.583 73.7533 71.7529 70.9734 75.6139C64.9502 83.7992 56.456 90.4402 47.6529 94.1467C37.7687 90.1313 27.7301 81.4826 22.0158 71.5985C20.6259 68.973 19.6992 66.0386 19.6992 62.7954V46.2703V28.0463H21.0892V43.027Z" fill="white"/> -<path d="M74.3717 55.0733C74.3717 58.3166 74.3717 62.0231 74.2173 65.4208C73.5995 70.6718 70.2018 74.6872 66.8041 78.7027C61.2443 84.8803 54.7578 89.6679 47.6536 92.7567C37.9238 88.5868 27.8852 79.9382 22.6342 70.2085C21.7076 68.2007 21.0898 66.0386 21.0898 63.722V45.6525V45.498H74.2173V55.0733H74.3717Z" fill="#005596"/> -<path d="M55.5289 59.5521C58.1544 58.3166 60.7799 56.9266 63.4054 55.6911L71.2818 59.7066V61.251L63.4054 57.2355L55.5289 61.0965L47.8069 57.2355L39.9305 61.0965L32.054 57.2355L24.332 61.0965V59.3977L32.054 55.5367L39.9305 59.3977L47.6525 55.5367L55.5289 59.5521Z" fill="white"/> -<path d="M63.4054 59.3977L71.1274 63.4131C71.1274 63.8764 71.1274 64.4942 71.1274 65.112L63.4054 61.0965L55.5289 64.9575L47.8069 61.0965L39.9305 65.112L32.054 61.251L24.332 65.112V63.4131L32.054 59.5521L39.776 63.4131C42.4015 62.1776 45.027 60.7876 47.6525 59.3977L55.5289 63.4131L63.4054 59.3977Z" fill="white"/> -<path d="M71.1273 68.973L63.4053 65.112L55.5288 68.973L47.8068 65.112C45.1813 66.3475 42.5558 67.7375 39.9303 68.973L32.2083 65.112L24.4863 68.973V67.2741L32.2083 63.4131L39.9303 67.2741L47.8068 63.2587L55.5288 67.1197L63.4053 63.1042L71.2817 67.1197L71.1273 68.973Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.336 75L106.992 70.728H101.04L99.72 75H96.504L102.12 58.248H106.056L111.624 75H108.336ZM104.064 61.128H103.944L101.808 68.016H106.224L104.064 61.128ZM113.901 57.24H116.973V67.944H117.093L118.749 65.688L121.557 62.472H125.037L120.717 67.32L125.493 75H121.845L118.629 69.384L116.973 71.184V75H113.901V57.24ZM127.378 75V62.472H130.45V65.064H130.57C130.65 64.728 130.77 64.408 130.93 64.104C131.106 63.784 131.33 63.504 131.602 63.264C131.874 63.024 132.194 62.832 132.562 62.688C132.946 62.544 133.386 62.472 133.882 62.472H134.554V65.376H133.594C132.554 65.376 131.77 65.528 131.242 65.832C130.714 66.136 130.45 66.632 130.45 67.32V75H127.378ZM145.758 75C145.086 75 144.55 74.808 144.15 74.424C143.766 74.024 143.526 73.496 143.43 72.84H143.286C143.078 73.656 142.654 74.272 142.014 74.688C141.374 75.088 140.582 75.288 139.638 75.288C138.358 75.288 137.374 74.952 136.686 74.28C135.998 73.608 135.654 72.712 135.654 71.592C135.654 70.296 136.118 69.336 137.046 68.712C137.974 68.072 139.294 67.752 141.006 67.752H143.142V66.84C143.142 66.136 142.958 65.592 142.59 65.208C142.222 64.824 141.63 64.632 140.814 64.632C140.094 64.632 139.51 64.792 139.062 65.112C138.63 65.416 138.262 65.784 137.958 66.216L136.134 64.584C136.598 63.864 137.214 63.288 137.982 62.856C138.75 62.408 139.766 62.184 141.03 62.184C142.726 62.184 144.014 62.568 144.894 63.336C145.774 64.104 146.214 65.208 146.214 66.648V72.552H147.462V75H145.758ZM140.67 73.056C141.358 73.056 141.942 72.904 142.422 72.6C142.902 72.296 143.142 71.848 143.142 71.256V69.6H141.174C139.574 69.6 138.774 70.112 138.774 71.136V71.544C138.774 72.056 138.934 72.44 139.254 72.696C139.59 72.936 140.062 73.056 140.67 73.056ZM149.948 75V62.472H153.02V64.56H153.14C153.396 63.888 153.796 63.328 154.34 62.88C154.9 62.416 155.668 62.184 156.644 62.184C157.94 62.184 158.932 62.608 159.62 63.456C160.308 64.304 160.652 65.512 160.652 67.08V75H157.58V67.392C157.58 66.496 157.42 65.824 157.1 65.376C156.78 64.928 156.252 64.704 155.516 64.704C155.196 64.704 154.884 64.752 154.58 64.848C154.292 64.928 154.028 65.056 153.788 65.232C153.564 65.392 153.38 65.6 153.236 65.856C153.092 66.096 153.02 66.384 153.02 66.72V75H149.948ZM169.121 75.288C168.193 75.288 167.361 75.136 166.625 74.832C165.905 74.512 165.289 74.072 164.777 73.512C164.281 72.936 163.897 72.248 163.625 71.448C163.353 70.632 163.217 69.72 163.217 68.712C163.217 67.72 163.345 66.824 163.601 66.024C163.873 65.224 164.257 64.544 164.753 63.984C165.249 63.408 165.857 62.968 166.577 62.664C167.297 62.344 168.113 62.184 169.025 62.184C170.001 62.184 170.849 62.352 171.569 62.688C172.289 63.024 172.881 63.48 173.345 64.056C173.809 64.632 174.153 65.304 174.377 66.072C174.617 66.824 174.737 67.632 174.737 68.496V69.504H166.409V69.816C166.409 70.728 166.665 71.464 167.177 72.024C167.689 72.568 168.449 72.84 169.457 72.84C170.225 72.84 170.849 72.68 171.329 72.36C171.825 72.04 172.265 71.632 172.649 71.136L174.305 72.984C173.793 73.704 173.089 74.272 172.193 74.688C171.313 75.088 170.289 75.288 169.121 75.288ZM169.073 64.488C168.257 64.488 167.609 64.76 167.129 65.304C166.649 65.848 166.409 66.552 166.409 67.416V67.608H171.545V67.392C171.545 66.528 171.329 65.832 170.897 65.304C170.481 64.76 169.873 64.488 169.073 64.488ZM181.544 75.288C180.344 75.288 179.336 75.088 178.52 74.688C177.704 74.272 176.984 73.704 176.36 72.984L178.232 71.16C178.696 71.688 179.2 72.104 179.744 72.408C180.304 72.712 180.944 72.864 181.664 72.864C182.4 72.864 182.928 72.736 183.248 72.48C183.584 72.224 183.752 71.872 183.752 71.424C183.752 71.056 183.632 70.768 183.392 70.56C183.168 70.336 182.776 70.184 182.216 70.104L180.968 69.936C179.608 69.76 178.568 69.376 177.848 68.784C177.144 68.176 176.792 67.296 176.792 66.144C176.792 65.536 176.904 64.992 177.128 64.512C177.352 64.016 177.672 63.6 178.088 63.264C178.504 62.912 179 62.648 179.576 62.472C180.168 62.28 180.824 62.184 181.544 62.184C182.152 62.184 182.688 62.232 183.152 62.328C183.632 62.408 184.064 62.536 184.448 62.712C184.832 62.872 185.184 63.08 185.504 63.336C185.824 63.576 186.136 63.848 186.44 64.152L184.64 65.952C184.272 65.568 183.832 65.248 183.32 64.992C182.808 64.736 182.248 64.608 181.64 64.608C180.968 64.608 180.48 64.728 180.176 64.968C179.888 65.208 179.744 65.52 179.744 65.904C179.744 66.32 179.864 66.64 180.104 66.864C180.36 67.072 180.784 67.224 181.376 67.32L182.648 67.488C185.352 67.872 186.704 69.104 186.704 71.184C186.704 71.792 186.576 72.352 186.32 72.864C186.08 73.36 185.736 73.792 185.288 74.16C184.84 74.512 184.296 74.792 183.656 75C183.032 75.192 182.328 75.288 181.544 75.288Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/akureyri.svg b/libs/application/templates/financial-aid/src/svg/akureyri.svg deleted file mode 100644 index 1ad88a2af433..000000000000 --- a/libs/application/templates/financial-aid/src/svg/akureyri.svg +++ /dev/null @@ -1,157 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M81.9364 17.0487V16H15C15 16 15 16.3755 15 17.0487C15 22.5124 15.3755 48.303 22.7682 63.4769C31.9089 82.2243 43.9626 93.2552 48.2093 95.8446L48.4682 96L48.7142 95.8446C52.9738 93.2552 65.0275 82.1596 74.1552 63.4769C81.5609 48.303 81.9493 22.5124 81.9364 17.0487Z" fill="#0072BC"/> -<path d="M52.0281 20.0007C52.7544 20.2362 53.525 20.3026 54.2809 20.1949C54.5269 20.0007 54.3715 19.7417 54.4751 19.5475C54.5787 19.3533 54.8247 19.7417 54.98 19.8971C55.0525 20.1891 55.083 20.4899 55.0707 20.7904C54.8875 20.9701 54.6678 21.1081 54.4265 21.1953C54.1853 21.2824 53.928 21.3165 53.6724 21.2954H52.1317C52.0281 21.2954 52.0281 21.386 52.0281 21.5932C52.779 21.7356 54.022 21.4896 54.2809 22.5383C54.4751 22.9397 54.4751 23.587 54.98 23.833L55.6274 23.9884C55.5954 24.1402 55.5284 24.2825 55.4318 24.4038C55.3351 24.5252 55.2115 24.6223 55.0707 24.6875C54.8595 24.7155 54.6457 24.6597 54.4751 24.5322C54.0737 24.1826 54.022 23.587 53.5818 23.2374C53.5148 23.5887 53.5462 23.9516 53.6724 24.2862C53.9652 25.1064 54.47 25.8346 55.1354 26.3965C55.5886 26.539 55.8345 25.8398 56.0805 26.293C56.1092 26.5542 56.0577 26.818 55.9328 27.0493C55.8079 27.2805 55.6156 27.4683 55.3814 27.5877C55.2396 27.676 55.0759 27.7229 54.9088 27.7229C54.7418 27.7229 54.578 27.676 54.4363 27.5877C54.0679 27.3358 53.7542 27.0123 53.5139 26.6363C53.2736 26.2603 53.1118 25.8397 53.038 25.3996C52.9344 25.3996 52.8438 25.1407 52.6884 25.2442C52.2353 25.6974 52.6884 26.293 52.9344 26.7461C53.1933 26.8885 53.1933 27.1863 53.0898 27.5359C52.9862 27.8854 52.5848 28.3904 52.3388 28.8306C52.1165 28.541 51.9336 28.2232 51.7951 27.8854C51.7951 27.743 51.7951 27.4841 51.6397 27.3935C51.4843 27.3028 51.2901 27.4841 51.2901 27.6395C51.3234 28.0304 51.4386 28.41 51.6282 28.7535C51.8178 29.097 52.0776 29.3968 52.3906 29.6333H52.546C52.792 28.9342 53.3875 28.3386 53.5947 27.6395C53.7371 27.6395 53.9443 27.8337 54.0349 27.989C54.4881 29.3873 53.3358 31.2776 54.8376 32.2745C55.0836 32.2745 55.5368 31.9767 55.6403 32.4299C55.6349 32.6103 55.5917 32.7876 55.5137 32.9503C55.4356 33.1131 55.3244 33.2578 55.1872 33.375C54.993 33.4786 54.8894 33.4786 54.8376 33.5692C54.5039 33.6401 54.1574 33.6225 53.8326 33.518C53.5078 33.4135 53.216 33.2258 52.9862 32.9736C52.1964 32.1839 52.792 31.1352 52.546 30.1382C52.4614 30.1138 52.3716 30.1138 52.287 30.1382L52.1964 30.2807C52.6366 32.1321 50.5521 32.8701 49.9048 34.3201C49.7494 34.3201 49.6458 34.0742 49.5941 33.8799C49.5191 33.5968 49.513 33.2999 49.576 33.0139C49.6391 32.7279 49.7695 32.461 49.9566 32.2357C50.0472 32.0285 49.9566 31.9767 49.8012 31.8861C49.6225 32.2894 49.3135 32.621 48.9237 32.8276C48.534 33.0342 48.0861 33.1039 47.652 33.0254C47.3811 32.9891 47.1226 32.8892 46.8976 32.7339C46.6726 32.5787 46.4875 32.3725 46.3573 32.1321C46.2583 31.8382 46.2278 31.5256 46.2682 31.2182C46.3086 30.9108 46.4188 30.6166 46.5903 30.3583C46.8881 30.2548 46.9399 30.6043 47.1471 30.6043C47.4501 30.741 47.7869 30.7841 48.1146 30.7281C48.4422 30.6722 48.7458 30.5198 48.9863 30.2904C49.2268 30.061 49.3934 29.765 49.4648 29.4404C49.5362 29.1157 49.509 28.7772 49.3869 28.4681C49.0786 27.8733 48.5626 27.4125 47.9368 27.1734C48.636 26.8238 49.9825 27.8725 50.086 26.4742C50.1524 26.0433 50.1089 25.6025 49.9596 25.1928C49.8102 24.7832 49.5598 24.4179 49.2315 24.1308C48.1719 23.4135 46.9923 22.8917 45.7488 22.5901C45.3992 22.3311 44.9461 21.9945 44.9461 21.5414C44.9461 21.0882 44.9461 21.0882 45.1014 20.9847C45.1873 20.9684 45.2761 20.9796 45.3551 21.0168C45.4342 21.054 45.4995 21.1153 45.5416 21.1918C45.5044 21.3958 45.5167 21.6058 45.5775 21.8041C45.6384 22.0024 45.7459 22.1831 45.8912 22.3312C46.134 22.5238 46.4191 22.6559 46.723 22.7167C47.0269 22.7775 47.3409 22.7652 47.639 22.6807C47.8462 22.5901 47.9886 22.5901 48.0922 22.3312C48.1197 22.3064 48.1395 22.2743 48.1493 22.2386C48.1592 22.2029 48.1586 22.1652 48.1478 22.1298C48.1369 22.0944 48.1161 22.0629 48.0879 22.0389C48.0597 22.015 48.0253 21.9996 47.9886 21.9945C47.7426 21.9945 47.5873 22.3312 47.2895 22.2405C47.2895 22.1369 47.1471 22.0334 47.2895 21.8909C47.4452 21.7572 47.6144 21.64 47.7944 21.5414C48.3382 21.4378 48.8431 21.6838 49.2833 21.5414C49.2833 21.5414 49.2833 21.2436 49.2833 21.1918C47.7944 20.9847 46.2019 21.1918 44.8943 20.2855C44.8032 20.1677 44.7426 20.0293 44.7178 19.8825C44.6929 19.7358 44.7046 19.5851 44.7518 19.4439C44.9978 18.7448 45.8006 18.6412 46.4997 18.5506C48.4108 18.7202 50.2798 19.2104 52.0281 20.0007Z" fill="white"/> -<path d="M71.2813 19.2109C71.3526 19.8754 71.2421 20.5467 70.9617 21.1532C70.6812 21.7598 70.2413 22.2788 69.6888 22.6548C68.5352 23.1168 67.2774 23.2556 66.0507 23.0562C65.8679 23.0858 65.6935 23.1543 65.5394 23.257C65.3853 23.3598 65.255 23.4944 65.1574 23.6518C65.1574 23.9495 65.002 24.1955 65.1574 24.3509C65.3127 24.5063 65.3516 24.1049 65.5069 24.0013C65.586 23.8934 65.6892 23.8056 65.8084 23.7449C65.9276 23.6841 66.0594 23.6523 66.1931 23.6518C66.5427 23.6518 66.7499 23.9495 66.9441 24.1049C66.9841 24.3296 66.9784 24.5602 66.9272 24.7826C66.876 25.0051 66.7805 25.215 66.6463 25.3996C66.6463 25.4902 66.6463 25.5938 66.8534 25.6974H66.9441C67.1901 25.3996 67.1901 25.05 67.3454 24.7911C67.5346 24.9428 67.6774 25.1446 67.7575 25.3735C67.8377 25.6024 67.8519 25.8492 67.7986 26.0858C67.695 26.2282 67.449 26.4872 67.5396 26.785L67.695 26.9274C68.0446 26.6814 68.0446 26.2282 68.3423 25.9822C68.4977 26.4354 68.7437 26.9274 68.4977 27.3805C68.3941 27.5747 68.1481 27.6265 68.2388 27.9243C68.3234 27.9488 68.4131 27.9488 68.4977 27.9243L68.9379 27.3287C69.0671 27.702 69.0671 28.1078 68.9379 28.481C68.9379 28.7788 68.0963 29.0766 68.6919 29.4262C68.8861 29.4262 68.8861 29.0766 69.1451 29.1284C69.4946 29.4262 69.3911 29.8275 69.2875 30.1771C69.1936 30.5728 68.9867 30.9326 68.6919 31.2129C68.6713 31.2382 68.6575 31.2683 68.6517 31.3005C68.6458 31.3326 68.6482 31.3657 68.6585 31.3966C68.6688 31.4276 68.6868 31.4555 68.7107 31.4777C68.7347 31.4998 68.7638 31.5156 68.7955 31.5236C69.0415 31.5236 69.1451 31.174 69.3911 31.174C69.5698 31.6136 69.606 32.0981 69.4946 32.5593C69.2343 33.0869 68.8361 33.5343 68.3423 33.8541C68.3423 34.0483 68.3423 34.1001 68.4459 34.2036L69.1451 33.7505C69.2481 33.9614 69.2835 34.1989 69.2464 34.4306C69.2093 34.6624 69.1016 34.877 68.9379 35.0452C68.6563 35.5703 68.2466 36.0156 67.7468 36.3399C67.758 36.3833 67.783 36.422 67.818 36.45C67.853 36.478 67.8962 36.4939 67.941 36.4953C68.3405 36.3643 68.7133 36.1626 69.0415 35.8997C69.2357 36.1457 68.9379 36.3917 68.9379 36.5988C68.6683 37.0685 68.2948 37.4702 67.846 37.7732C67.3971 38.0761 66.8849 38.2723 66.3485 38.3467C66.2449 38.3467 66.2449 38.5409 66.2449 38.5927C66.5945 38.6963 66.6981 38.9423 66.8016 39.24C66.1638 39.6276 65.447 39.8665 64.7042 39.9392C64.6006 39.9392 64.6006 40.0816 64.6006 40.1852C64.7948 40.483 65.4034 40.1852 65.4034 40.5865C64.7121 40.7353 63.9972 40.7353 63.3059 40.5865C63.2024 40.6901 63.3059 40.7807 63.3059 40.9361C63.8497 40.9361 63.6555 41.4799 63.8497 41.7388C63.8497 41.933 63.5519 41.9848 63.5001 41.9848C62.7902 42.0633 62.0738 42.0633 61.3639 41.9848C61.3639 41.9848 61.3639 42.1402 61.3639 42.3344C61.3639 42.5286 61.6616 42.3344 61.7652 42.5804C60.9826 42.7233 60.1782 42.6924 59.4089 42.4898C59.4089 42.4898 59.2664 42.3862 59.1629 42.4898C59.0593 42.5933 59.0593 42.684 59.1629 42.7358C59.2664 42.7875 59.4089 42.8393 59.5124 43.0335C58.9112 43.2021 58.2752 43.2021 57.6739 43.0335C57.415 42.8782 56.8194 43.0335 56.8712 42.6322C56.8726 41.7322 56.8207 40.833 56.7159 39.9392H50.6307C50.5401 39.732 50.2812 39.5896 50.333 39.2918C50.6811 39.5515 51.0955 39.7075 51.5284 39.7418C51.9614 39.7762 52.3952 39.6875 52.78 39.486C52.8835 38.9423 53.3237 39.3954 53.6733 39.2918C54.1401 39.3265 54.6027 39.1831 54.968 38.8905C55.6542 38.4373 55.3046 37.3886 56.2627 37.1426C57.661 36.0421 59.7455 36.6895 61.4415 36.2493C62.1277 35.9903 63.1376 35.4465 63.28 34.6438C63.6296 32.8571 62.2313 31.5624 62.5809 29.711C62.6845 28.6623 63.4872 27.8207 63.1376 26.6684C63.0268 26.5782 62.8972 26.514 62.7583 26.4804C62.6194 26.4468 62.4747 26.4447 62.3349 26.4742C60.6906 27.7689 62.9305 30.5137 60.4835 31.1093C60.2375 31.1093 60.1339 30.7597 60.0951 30.5655C59.9915 29.8664 60.4317 29.1154 60.0951 28.4163C59.9526 26.5649 57.8552 25.3737 58.5543 23.2375C59.7066 19.8971 63.539 21.14 65.7918 19.5475C66.0035 19.3694 66.2577 19.2489 66.5297 19.198C66.3098 19.9354 65.8552 20.5809 65.235 21.0365C64.6395 21.2954 63.7979 21.386 63.4483 22.0852C63.4483 22.1887 63.4483 22.2923 63.539 22.2923C63.6296 22.2923 63.8885 22.0852 64.1345 22.0463C64.857 21.6825 65.5421 21.2489 66.1802 20.7516C67.8842 20.4637 69.5028 19.8003 70.9188 18.8096C70.9711 18.8045 71.0239 18.8117 71.073 18.8307C71.122 18.8497 71.1659 18.88 71.2011 18.919C71.2364 18.958 71.262 19.0047 71.2759 19.0554C71.2898 19.1061 71.2917 19.1594 71.2813 19.2109Z" fill="white"/> -<path d="M31.0819 20.9588C31.8853 21.6975 32.7517 22.3647 33.6713 22.9526C33.6713 22.9526 33.6713 22.7455 33.6713 22.6548C33.6713 22.5642 33.6713 22.3959 33.5807 22.3053C32.7261 21.6061 31.3279 21.0105 31.3279 19.7158L31.4314 19.6123C33.4253 22.0075 37.5166 20.0654 38.6171 23.4964C39.614 25.788 36.7138 27.0827 37.0634 29.3226C37.191 29.5778 37.2575 29.8593 37.2575 30.1447C37.2575 30.4301 37.191 30.7116 37.0634 30.9669C36.921 31.174 36.6232 31.174 36.5714 30.9669C36.283 30.8595 36.0311 30.6722 35.8454 30.4269C35.6597 30.1815 35.5477 29.8882 35.5227 29.5815C35.2249 28.5846 35.7687 27.6783 35.5227 26.7332C35.5227 26.4872 35.1214 26.4872 34.8236 26.539C34.5258 26.5907 34.474 26.8367 34.3186 26.9791C34.0209 28.8306 35.1731 30.5784 34.5776 32.4687C34.2738 32.9738 34.085 33.5395 34.0246 34.1258C33.9642 34.7121 34.0336 35.3044 34.228 35.8608C36.0665 38.0618 39.2126 35.6149 41.3101 37.3627C41.4525 37.4533 41.6078 37.7123 41.9056 37.7123C41.9578 37.4361 42.0985 37.1844 42.3064 36.9952C42.5142 36.806 42.778 36.6896 43.0579 36.6636C43.3039 37.0131 42.7083 37.3627 43.0579 37.6087C43.4463 37.6087 43.7053 37.2591 44.0548 37.1038C44.1973 37.0131 44.4044 37.0131 44.6504 36.9096C44.3095 36.8815 43.9782 36.7829 43.6774 36.6203C43.3765 36.4576 43.1127 36.2343 42.9025 35.9644C43.2521 35.7573 43.7053 35.7573 44.0548 35.5113C43.3557 35.3689 42.4494 34.9157 42.3588 34.2166C42.3588 33.9188 42.4494 33.867 42.4494 33.6728C42.7541 33.7921 43.0283 33.9779 43.2521 34.2166C43.622 34.3449 44.0138 34.3977 44.4044 34.3719C44.7488 34.7466 45.2013 35.0045 45.6991 35.1099C45.7897 35.1099 45.8933 35.1099 45.8933 34.9675C45.656 34.7803 45.3828 34.6437 45.0906 34.5661C44.8337 34.3518 44.6256 34.0849 44.4805 33.7834C44.3353 33.4819 44.2564 33.1528 44.249 32.8183C44.3075 32.6928 44.3902 32.5802 44.4925 32.4869C44.5947 32.3935 44.7144 32.3214 44.8446 32.2745C45.2978 32.2745 45.1942 32.8701 45.3495 33.1679C45.5403 33.3937 45.7911 33.561 46.0729 33.6503C46.3547 33.7397 46.656 33.7475 46.942 33.6728C47.4968 33.4505 48.1047 33.3964 48.6899 33.5174C48.9359 33.4139 49.0395 33.6728 49.0395 33.9188C49.0395 34.1648 48.6899 34.5661 48.6899 34.8639L48.5863 35.5631C48.1117 35.7962 47.7003 36.1404 47.387 36.5663C47.0738 36.9923 46.8678 37.4876 46.7867 38.0101C46.0487 37.0649 46.7867 36.0162 47.188 35.1099C47.2916 34.8639 47.5376 34.7215 47.6412 34.4626C47.4858 34.3719 47.2916 34.2684 47.188 34.4626C46.6614 34.9967 46.2707 35.6493 46.0487 36.3658C45.9297 36.7062 45.9079 37.0731 45.9856 37.4252C46.0634 37.7774 46.2376 38.1009 46.4889 38.3596C46.7514 38.6468 47.1022 38.8382 47.4858 38.9034C47.5152 38.8847 47.5394 38.8589 47.5562 38.8283C47.573 38.7978 47.5818 38.7635 47.5818 38.7286C47.5818 38.6938 47.573 38.6595 47.5562 38.6289C47.5394 38.5984 47.5152 38.5725 47.4858 38.5538C47.2398 38.5538 47.2398 38.3078 47.2398 38.1136C47.3289 37.5152 47.6498 36.9757 48.1332 36.6118C48.0958 37.0093 47.9953 37.3982 47.8354 37.7641C47.9388 38.5444 48.121 39.3121 48.3792 40.0557H40.3649C40.101 41.1308 39.9964 42.2388 40.0542 43.3443C39.5622 43.7974 38.7595 43.5903 38.2157 43.4478C38.0603 43.3443 37.8661 43.3443 37.8143 43.2407C37.7626 43.1371 38.2157 42.9041 37.9697 42.7487C37.2996 42.9093 36.6132 42.9919 35.9241 42.9947C35.8205 42.9947 35.7169 42.9947 35.7169 42.9041C35.7169 42.8134 36.1701 42.6451 35.9241 42.3991L35.8205 42.2955C35.0449 42.4043 34.2543 42.3061 33.5289 42.0107C33.3735 41.3116 34.8236 41.8553 34.1244 41.0526C33.764 41.1622 33.3834 41.1888 33.0113 41.1305C32.6391 41.0722 32.2849 40.9305 31.9752 40.716C32.0788 40.5218 32.1306 40.2758 32.3248 40.1722C32.519 40.0686 32.5837 40.1722 32.5837 40.1722C32.4802 39.6284 31.781 39.9262 31.4314 39.7191C31.0819 39.5119 30.8359 39.6284 30.6287 39.3825C30.7652 39.2016 30.9167 39.0327 31.0819 38.8775C31.2761 38.8775 31.3797 38.8775 31.535 38.8775C31.6904 38.8775 31.6256 38.6315 31.535 38.5279C30.9555 38.4804 30.394 38.3033 29.8921 38.0097C29.3901 37.7162 28.9605 37.3136 28.6349 36.8319C28.6071 36.565 28.6071 36.296 28.6349 36.0292C28.8938 36.0292 29.0362 36.3269 29.2434 36.0292C29.1398 35.6796 28.7902 35.6407 28.6349 35.4336C28.3114 35.0226 28.1543 34.505 28.1947 33.9835C28.4407 33.9835 28.8938 34.4885 28.9326 33.9835C28.6397 33.8569 28.3904 33.6471 28.2155 33.3801C28.0406 33.1132 27.9478 32.8008 27.9487 32.4817L28.0523 31.9767C28.2982 31.9767 28.596 32.4817 28.7514 32.1321C28.4215 31.8801 28.1706 31.5389 28.0284 31.1489C27.8861 30.7589 27.8585 30.3363 27.9487 29.9311C28.0523 29.8405 28.0523 29.7887 28.1558 29.8405C28.2594 29.8922 28.5054 30.3842 28.7514 30.3842C28.9974 30.3842 28.7514 30.19 28.7514 30.1382C28.5118 29.8309 28.354 29.4677 28.2929 29.0828C28.2317 28.6979 28.2692 28.3037 28.4018 27.9372C28.6478 27.9372 28.6478 28.2868 28.855 28.494C28.8674 28.5212 28.8875 28.5442 28.9128 28.5603C28.9381 28.5764 28.9674 28.5848 28.9974 28.5846C29.2045 28.2868 28.855 28.1444 28.8938 27.8854C28.8253 27.4299 28.9368 26.9656 29.2045 26.5907C29.347 26.8885 29.593 27.2899 29.9425 27.2899C30.2403 27.0439 29.6965 26.9403 29.6965 26.6943C29.6194 26.4838 29.5887 26.2591 29.6065 26.0356C29.6244 25.8121 29.6904 25.5952 29.8001 25.3996C30.0461 25.4902 30.1497 26.293 30.3957 25.8398C30.293 25.5575 30.2525 25.2562 30.2771 24.9568C30.3017 24.6573 30.3907 24.3667 30.5381 24.1049C30.6273 23.986 30.7509 23.8973 30.8922 23.851C31.0335 23.8047 31.1856 23.8029 31.3279 23.846C31.8328 23.9495 31.5868 24.7005 32.1306 24.5451C32.2859 24.3509 32.1306 24.0013 32.1306 23.7553C31.4832 22.6548 29.9814 23.4058 29.0362 23.0562C27.8475 22.8253 26.7942 22.1432 26.0972 21.153C25.8673 20.8429 25.7195 20.4797 25.6674 20.0972C25.6154 19.7147 25.6608 19.3252 25.7995 18.9649C27.5052 19.7672 29.2715 20.4338 31.0819 20.9588Z" fill="white"/> -<path d="M44.5975 21.0493C44.507 21.4903 44.5759 21.949 44.7917 22.344C46.1511 23.7941 48.6758 23.4446 49.5821 25.3478C49.7374 25.788 49.841 26.4871 49.4914 26.8367C48.687 26.6347 47.8435 26.648 47.0458 26.8753C46.2481 27.1025 45.5243 27.5358 44.947 28.1314C44.9211 27.8286 44.9609 27.5237 45.0637 27.2377C45.1665 26.9517 45.3298 26.6912 45.5426 26.4742C46.1511 25.8657 47.2387 26.0728 47.7436 25.2701C47.7861 25.1507 47.7941 25.0218 47.7666 24.8982C47.7391 24.7745 47.6773 24.6611 47.5882 24.5709C46.4698 24.1874 45.2778 24.0677 44.1055 24.2214C43.6523 24.325 43.0568 24.325 42.8108 24.9205C42.8108 25.0759 42.9014 25.4255 42.5518 25.3737C42.2728 25.3034 42.0124 25.1732 41.7888 24.9921C41.5652 24.8109 41.3838 24.5833 41.2571 24.325C41.1224 23.9419 41.0984 23.5286 41.1877 23.1325C41.277 22.7363 41.476 22.3734 41.762 22.0851C42.5521 21.4105 43.5586 21.0428 44.5975 21.0493Z" fill="white"/> -<path d="M72.0835 21.2954C72.0835 21.6967 71.5398 21.8909 71.1902 21.9945C71.0348 21.7873 71.3844 21.5414 71.3844 21.3471C71.6304 21.2954 71.8893 21.1529 72.0835 21.2954Z" fill="white"/> -<path d="M25.9394 21.8521V21.9557C25.4863 22.0592 25.3439 21.6579 25.1367 21.3989V21.2953C25.5899 21.1529 25.6934 21.6579 25.9394 21.8521Z" fill="white"/> -<path d="M46.2417 21.399C46.2417 21.6579 46.3452 21.9557 46.3452 22.2017C46.0874 22.0398 45.8949 21.7923 45.8015 21.5025C45.7497 21.2954 46.151 21.2954 46.2417 21.399Z" fill="white"/> -<path d="M73.5346 21.7485C73.5287 22.3503 73.3578 22.939 73.0405 23.4503C72.7232 23.9617 72.2716 24.3762 71.735 24.6487C71.4478 24.7906 71.1489 24.9076 70.8416 24.9982C70.8416 24.7005 71.0358 24.3509 70.6863 24.1955C70.3367 24.0401 69.8965 24.1955 69.8965 23.8459C70.2461 23.4057 69.8965 22.7454 70.5956 22.5512C71.611 22.3403 72.5637 21.8971 73.3792 21.2565L73.5346 21.7485Z" fill="white"/> -<path d="M26.9888 22.7972C27.2348 22.9526 27.0924 23.4057 27.183 23.7553C27.2737 24.1049 27.442 24.1955 27.442 24.3509C27.1467 24.4417 26.831 24.4417 26.5357 24.3509C26.3933 24.5451 26.3933 24.8946 26.2897 25.1406C25.7459 25.3478 25.3446 24.8946 24.7878 24.6486C24.4075 24.3663 24.1008 23.9965 23.8935 23.5706C23.6861 23.1447 23.5844 22.6752 23.5967 22.2016C23.6378 22.035 23.7117 21.8783 23.8139 21.7405C23.9161 21.6027 24.0448 21.4866 24.1923 21.3989C24.9412 22.1655 25.9262 22.658 26.9888 22.7972Z" fill="white"/> -<path d="M30.3819 23.6C29.9987 24.0581 29.6483 24.5427 29.3332 25.05C28.88 25.05 28.4916 24.6487 28.1421 24.2991C27.7925 23.9495 27.4429 23.4964 27.5853 23.0044C28.4589 23.4167 29.4162 23.6205 30.3819 23.6Z" fill="white"/> -<path d="M69.5866 23.3021C69.3532 23.8227 68.9258 24.2315 68.3954 24.4415C68.2401 24.545 67.8905 24.7004 67.6963 24.4415C67.5859 24.3607 67.4933 24.2582 67.4242 24.1401C67.3552 24.0221 67.3112 23.8911 67.2949 23.7553C68.0869 23.8356 68.8848 23.6778 69.5866 23.3021Z" fill="white"/> -<path d="M73.9751 24.0013C74.0787 24.2991 73.7809 24.5451 73.6385 24.7004C73.451 24.8666 73.2237 24.9814 72.9786 25.0336C72.7336 25.0858 72.4792 25.0736 72.2402 24.9982C72.4862 24.6486 73.03 24.3509 73.2889 24.0013H73.9751Z" fill="white"/> -<path d="M24.1912 24.791C24.3984 24.8946 24.4372 24.8946 24.5408 25.05C24.3663 25.0901 24.184 25.0783 24.0161 25.0162C23.8482 24.9541 23.7021 24.8444 23.5957 24.7004C23.5003 24.6298 23.4201 24.5407 23.36 24.4383C23.3 24.336 23.2612 24.2225 23.2461 24.1048C23.7899 23.9495 23.9452 24.545 24.1912 24.791Z" fill="white"/> -<path d="M70.3356 24.6486C70.1343 25.301 69.7364 25.8752 69.1963 26.2929H68.9892C68.8535 25.9299 68.6312 25.6055 68.3418 25.3478V25.05C68.7325 24.8568 69.1014 24.6224 69.4423 24.3508C69.7919 24.3508 69.9861 24.6486 70.3356 24.6486Z" fill="white"/> -<path d="M75.0231 24.7004C74.833 25.5123 74.3867 26.2415 73.7502 26.7801C73.1137 27.3187 72.3207 27.6381 71.4886 27.6912H71.385C71.5404 27.3417 71.9806 26.9921 71.8381 26.6425C71.3209 26.4093 70.7889 26.2104 70.2456 26.0469C70.1421 25.7492 70.3881 25.6974 70.4916 25.4902C71.2471 25.6303 72.0183 25.6652 72.7833 25.5938C73.5699 25.4083 74.3247 25.1072 75.0231 24.7004Z" fill="white"/> -<path d="M26.4448 25.6974C26.5355 25.8398 26.8851 26.0469 26.8851 26.2929C26.4386 26.4775 25.9675 26.5952 25.4868 26.6425L25.3961 26.7461C25.5399 27.2721 25.7216 27.787 25.9399 28.2868C25.2588 28.3528 24.5733 28.216 23.9697 27.8935C23.3662 27.5709 22.8714 27.0771 22.5478 26.4742C22.3092 25.9563 22.2412 25.376 22.3536 24.817C23.5822 25.5553 25.0212 25.865 26.4448 25.6974Z" fill="white"/> -<path d="M28.983 25.5938C28.8406 26.0987 28.6334 26.5389 28.491 26.9921C28.062 26.8024 27.6843 26.5131 27.3894 26.1484C27.0944 25.7836 26.8906 25.3538 26.7949 24.8946L26.9891 24.791C27.7918 24.5451 28.2838 25.3478 28.983 25.5938Z" fill="white"/> -<path d="M47.2384 25.1794C47.0442 25.529 46.5911 25.283 46.2415 25.4384C44.4936 26.3317 43.1083 29.1283 40.8555 27.9242C40.011 27.5606 39.3228 26.9091 38.9135 26.0857C38.8781 25.7415 38.9457 25.3946 39.1077 25.0888C39.2031 25.0015 39.3278 24.953 39.4572 24.953C39.5866 24.953 39.7113 25.0015 39.8068 25.0888C40.4024 25.788 41.0109 26.8367 42.0596 26.8367C43.7557 26.7331 44.7914 25.1406 46.4487 24.8817L47.2384 25.1794Z" fill="white"/> -<path d="M71.281 26.8885C70.9482 27.6254 70.339 28.202 69.5849 28.4939H69.4425C69.473 27.954 69.4206 27.4125 69.2871 26.8885L69.792 26.3965C70.2775 26.5917 70.7748 26.756 71.281 26.8885Z" fill="white"/> -<path d="M75.3718 26.3965C75.3718 26.992 74.6727 27.1862 74.2325 27.3416H74.1289L74.9316 26.3965H75.3718Z" fill="white"/> -<path d="M27.2341 26.6425C27.5011 26.9472 27.8057 27.217 28.1404 27.4452C28.1404 27.8854 27.7908 28.2868 27.8815 28.7399L27.7908 28.8306C27.0917 28.5328 26.0948 27.8854 26.043 26.9403C26.3925 26.8367 26.7939 26.8367 27.2341 26.6425Z" fill="white"/> -<path d="M76.2787 27.3416C76.2787 28.7399 74.984 29.5815 73.9741 30.2806C73.662 30.4772 73.3007 30.5816 72.9318 30.5816C72.563 30.5816 72.2017 30.4772 71.8896 30.2806C71.8896 30.19 71.4882 30.19 71.6307 30.0346C71.8896 29.5815 72.3298 29.1413 72.2392 28.6363C71.9802 28.4939 71.6307 28.4939 71.3847 28.2868C71.1387 28.0796 71.1387 28.2868 71.1387 28.2868V28.1961C72.7701 28.2109 74.3915 27.9392 75.9291 27.3934L76.2787 27.3416Z" fill="white"/> -<path d="M22.6512 28.235C23.4534 28.4752 24.271 28.6612 25.0982 28.7917C25.0898 29.3966 25.2228 29.9951 25.4866 30.5395C25.2342 30.7707 24.9141 30.9145 24.5736 30.9495C24.2331 30.9845 23.8904 30.9088 23.5963 30.7337C22.9836 30.4904 22.4476 30.0867 22.0445 29.5651C21.6413 29.0435 21.3858 28.4231 21.3047 27.7689L21.3953 27.6653C21.8473 27.7709 22.274 27.9645 22.6512 28.235Z" fill="white"/> -<path d="M71.7341 28.9859C71.7341 29.3355 71.2809 29.5815 71.0349 29.9311C70.6864 30.2928 70.2339 30.5371 69.7402 30.6302C69.896 30.0932 69.896 29.523 69.7402 28.9859C70.1934 28.7917 70.6465 28.1444 71.0349 28.6364L71.7341 28.9859Z" fill="white"/> -<path d="M27.5838 29.4391C27.4867 30.0177 27.4867 30.6084 27.5838 31.187C27.5838 31.187 27.5838 31.433 27.4413 31.433C26.9547 31.2371 26.5227 30.9264 26.1823 30.5273C25.8418 30.1283 25.6031 29.6527 25.4863 29.1413C25.8795 29.0572 26.265 28.9403 26.6386 28.7917L27.5838 29.4391Z" fill="white"/> -<path d="M76.3309 29.8404C76.1343 30.272 75.7963 30.6237 75.3728 30.8373H74.0781C74.8808 30.5395 75.3728 29.3355 76.3309 29.8404Z" fill="white"/> -<path d="M23.0535 31.1869C22.646 31.2587 22.2265 31.2114 21.8453 31.0507C21.464 30.8899 21.1373 30.6225 20.9043 30.2806V30.19C21.9012 29.931 22.3544 30.8373 23.0535 31.1869Z" fill="white"/> -<path d="M72.1355 30.9797C72.1355 31.4329 71.54 31.6789 71.281 31.9767C70.891 32.2552 70.4516 32.4573 69.9863 32.5722C70.0901 32.1163 70.0901 31.6428 69.9863 31.1869C70.4913 30.9797 70.9315 30.2806 71.54 30.6302L72.1355 30.9797Z" fill="white"/> -<path d="M27.4432 31.9767C27.5338 32.3263 27.5338 32.7276 27.5856 33.0254C27.0288 32.9913 26.4872 32.83 26.0024 32.5539C25.5176 32.2779 25.1026 31.8944 24.7891 31.4329L25.8378 30.9798C26.3945 31.3294 26.7959 31.8861 27.4432 31.9767Z" fill="white"/> -<path d="M77.1446 31.0833C77.054 32.132 76.0053 32.9218 75.1508 33.4267C74.2027 33.8511 73.1932 34.1221 72.16 34.2295V34.1259C72.3542 33.8799 72.8074 33.6209 72.7038 33.1807C72.6002 32.7405 71.8622 32.7276 71.5645 32.3262L72.6132 31.2257C74.123 31.3871 75.6479 31.3391 77.1446 31.0833Z" fill="white"/> -<path d="M24.3986 31.5753C24.5939 32.0438 24.9225 32.4444 25.3437 32.7276C25.1365 33.0772 24.541 32.7276 24.4374 33.1808C24.3338 33.6339 24.8905 34.0741 25.0977 34.4755C24.1136 34.46 23.1435 34.2395 22.2493 33.8281C21.3948 33.4268 19.9577 32.624 20.2037 31.2387C21.5654 31.6304 22.9918 31.7449 24.3986 31.5753Z" fill="white"/> -<path d="M53.1302 33.621C53.018 34.1459 53.0865 34.6934 53.3244 35.1746C53.3244 35.4206 53.8293 35.5242 53.7258 35.8738C53.5834 36.0162 53.2338 36.0162 52.9748 36.0162C52.4758 35.734 52.1048 35.2703 51.9391 34.7215C51.8355 34.0741 51.4341 33.0772 52.1333 32.4816C52.4089 32.9075 52.7447 33.2913 53.1302 33.621Z" fill="white"/> -<path d="M72.1365 33.3749C72.1365 33.7763 71.6316 33.8799 71.282 34.1259C70.7958 34.393 70.2429 34.5143 69.6895 34.4754C69.7606 34.0419 69.7251 33.5975 69.5859 33.1807C69.9603 33.0895 70.328 32.9727 70.6864 32.8312C71.1914 32.378 71.7351 33.1807 72.1365 33.3749Z" fill="white"/> -<path d="M27.5325 33.5304C27.5442 34.0072 27.6316 34.4792 27.7914 34.9286C26.8779 34.8938 26.0102 34.5199 25.3574 33.8799L25.0078 33.4268C25.2787 33.2884 25.5601 33.1715 25.8494 33.0772C26.3789 33.3275 26.9489 33.481 27.5325 33.5304Z" fill="white"/> -<path d="M67.0981 34.1259C67.2102 34.5308 67.177 34.9623 67.0044 35.3453C66.8318 35.7284 66.5306 36.039 66.1529 36.2233C66.2333 36.7202 66.1672 37.2298 65.9625 37.6897C65.7579 38.1496 65.4236 38.5398 65.0007 38.8127L64.0555 39.1623C63.8927 39.5253 63.6346 39.8374 63.3086 40.0653C62.9826 40.2933 62.6009 40.4287 62.2041 40.457C61.9476 40.7893 61.5951 41.0346 61.1944 41.1596C60.7937 41.2847 60.3642 41.2835 59.9642 41.1561C59.8607 41.0655 59.5111 40.9619 59.6147 40.716L59.7183 40.6124C60.0266 40.7611 60.369 40.8252 60.7103 40.7979C61.0516 40.7706 61.3795 40.6529 61.6603 40.457C61.993 40.0595 62.2161 39.5819 62.3077 39.0717C62.4112 39.0717 62.4501 39.1623 62.4501 39.3177C62.4306 39.533 62.4306 39.7497 62.4501 39.965C62.6883 39.9213 62.9144 39.827 63.1132 39.6885C63.312 39.5501 63.4788 39.3706 63.6024 39.1623C63.9172 38.6953 64.0422 38.1258 63.9519 37.5698C64.0149 37.5481 64.0832 37.5481 64.1461 37.5698C64.4051 37.8158 64.3015 38.1654 64.3015 38.515C64.5792 38.5018 64.8477 38.4111 65.0765 38.2532C65.3053 38.0953 65.4853 37.8765 65.5962 37.6216C65.733 37.3719 65.8131 37.0951 65.831 36.811C65.8489 36.5268 65.8041 36.2422 65.6998 35.9773C65.5962 35.7702 65.3502 35.7313 65.3502 35.5242C65.6998 35.3818 65.8422 36.2233 66.1918 35.7313C66.5414 35.2393 66.8521 35.1746 66.8521 34.825C66.7444 34.3448 66.5173 33.8995 66.1918 33.5303V33.3361C66.3955 33.3847 66.5843 33.4819 66.7422 33.6194C66.9 33.757 67.0221 33.9308 67.0981 34.1259Z" fill="#0072BC"/> -<path d="M31.2745 33.7246C31.0745 33.9953 30.9509 34.3148 30.9168 34.6496C30.8826 34.9844 30.9391 35.3223 31.0803 35.6278L31.3781 35.8738C31.5335 35.7702 31.5334 35.4206 31.7794 35.4206C31.9737 35.7702 31.7794 36.2234 31.7794 36.7153C31.804 37.0115 31.9037 37.2965 32.0691 37.5435C32.2344 37.7904 32.4601 37.9911 32.7246 38.1266C33.0742 38.2819 33.0742 37.9324 33.0742 37.777C33.0742 37.6216 33.1777 37.5828 33.2684 37.6864C33.359 37.79 33.3719 38.2819 33.4237 38.5797C33.6324 39.0507 33.9577 39.4606 34.3689 39.7708C34.576 39.8744 34.9256 39.7709 34.822 39.5249L34.9256 38.9811C35.0162 38.9811 35.1716 39.0847 35.1716 39.1753C35.1072 39.4808 35.146 39.7991 35.2819 40.0803C35.4178 40.3614 35.6431 40.5895 35.9225 40.7289C36.4334 41.0312 37.0429 41.1196 37.6186 40.9749C37.7092 41.0785 37.6186 41.1691 37.7092 41.2209C37.2705 41.411 36.7826 41.4557 36.3167 41.3486C35.8507 41.2414 35.4313 40.988 35.1198 40.6254C35.1198 40.224 34.6149 40.47 34.3171 40.224C33.3201 39.978 33.3719 38.6315 32.3232 38.4761C32.0122 38.2023 31.7626 37.8658 31.5908 37.4887C31.4189 37.1116 31.3288 36.7025 31.3263 36.2881C30.9249 36.0809 30.5754 35.8349 30.5236 35.4854C30.4114 35.1557 30.3995 34.8001 30.4893 34.4636C30.5792 34.1272 30.7668 33.8249 31.0285 33.5951L31.2745 33.7246Z" fill="#0072BC"/> -<path d="M77.145 33.7763C77.0176 34.0481 76.8097 34.2741 76.5495 34.4237C75.7468 34.9286 74.698 34.6179 73.8047 34.5791C74.452 34.2295 75.2548 34.0741 75.9539 33.621C76.3536 33.6497 76.7513 33.7016 77.145 33.7763Z" fill="white"/> -<path d="M51.2526 34.1259C50.8166 34.6011 50.5206 35.1875 50.3972 35.8205C50.2738 36.4534 50.3279 37.1081 50.5535 37.7123C49.9967 37.8158 49.5954 37.2721 49.2588 36.8189C49.0858 36.4525 48.9961 36.0524 48.9961 35.6472C48.9961 35.242 49.0858 34.8419 49.2588 34.4755C49.386 34.5649 49.4884 34.6852 49.5565 34.8251C49.7119 34.9675 49.9579 35.2782 50.2557 35.1746C50.5535 35.0711 50.2557 34.8251 50.2557 34.5791C50.2557 34.3331 50.8124 33.8799 51.0584 33.621C51.1738 33.7652 51.2416 33.9416 51.2526 34.1259Z" fill="white"/> -<path d="M22.4451 34.4755C22.9007 34.5463 23.3395 34.6999 23.7398 34.9286C23.2326 35.0683 22.7009 35.0955 22.1821 35.0082C21.6633 34.921 21.1698 34.7215 20.7361 34.4237C20.5937 34.2295 20.3477 34.1259 20.3477 33.8799C20.6118 33.7631 20.9046 33.7271 21.1892 33.7764L22.4451 34.4755Z" fill="white"/> -<path d="M77.6243 35.1746C77.6243 35.8738 76.7698 36.3658 76.3296 36.7671C75.0981 37.4476 73.6916 37.7451 72.2901 37.6216C71.9003 37.4516 71.5677 37.173 71.332 36.8189C71.5845 36.5776 71.8727 36.3767 72.1865 36.2234C72.2901 35.9644 72.6397 35.8738 72.4843 35.6278C72.329 35.3818 71.7852 34.9675 71.6816 34.6179C73.5952 35.2492 75.6268 35.4396 77.6243 35.1746Z" fill="white"/> -<path d="M25.8353 34.8251C25.7447 35.0711 25.3951 35.1746 25.2397 35.5242C25.0526 35.7837 24.9002 36.0667 24.7866 36.3658C25.2397 36.5729 25.6929 36.8189 26.0813 37.0131C25.7835 37.2721 25.9777 37.8158 25.4339 37.8676C23.6343 38.3208 20.2551 37.1685 19.8926 35.4206C20.2462 35.4842 20.5963 35.5663 20.9413 35.6666C22.6001 35.966 24.3109 35.6285 25.7317 34.7215C25.7317 34.7215 25.7447 34.7215 25.8353 34.8251Z" fill="white"/> -<path d="M71.4896 35.3171C71.632 35.5242 71.891 35.6278 71.891 35.8738C71.5476 36.1391 71.1524 36.3292 70.7308 36.4318C70.3092 36.5344 69.8708 36.5472 69.444 36.4694C69.4957 36.087 69.4957 35.6994 69.444 35.3171C69.3404 34.7215 70.0395 35.0711 70.3373 34.9286C70.5142 34.8085 70.7196 34.737 70.9329 34.7215L71.4896 35.3171Z" fill="white"/> -<path d="M51.4849 34.9286C51.6792 35.6278 52.6243 35.9644 52.5337 36.7671C52.6712 37.0459 52.8759 37.2861 53.1292 37.4663C53.4426 37.5375 53.7693 37.5248 54.0762 37.4293C54.3831 37.3338 54.6594 37.159 54.8771 36.9225C55.0713 36.9225 55.2267 36.8189 55.2267 37.0131C55.2418 37.3504 55.1611 37.6851 54.9938 37.9785C54.8265 38.2718 54.5796 38.5117 54.2815 38.6704C53.9237 38.7921 53.5395 38.8142 53.17 38.7344C52.8006 38.6546 52.4598 38.4758 52.1841 38.2172C51.8208 37.8336 51.5778 37.352 51.4849 36.8319C51.4094 36.8062 51.3275 36.8062 51.2519 36.8319C51.2979 37.7431 51.6285 38.617 52.197 39.3307C51.9307 39.4482 51.6324 39.4725 51.3505 39.3997C51.0686 39.3269 50.8195 39.1612 50.6434 38.9293C50.3456 38.7351 50.0996 38.4762 50.0996 38.2302C50.4525 38.2731 50.8106 38.2377 51.1483 38.1266C51.1483 37.8806 50.9023 37.5828 50.9023 37.4274C50.774 36.9962 50.7602 36.539 50.8624 36.1008C50.9645 35.6626 51.1791 35.2586 51.4849 34.9286Z" fill="white"/> -<path d="M28.1405 35.5371C28.2311 35.8867 28.1405 36.2363 28.2311 36.6765C27.2927 36.8398 26.3266 36.6849 25.4863 36.2363C25.4863 35.6795 26.0431 35.33 26.2891 35.084C26.8928 35.2853 27.512 35.4369 28.1405 35.5371Z" fill="white"/> -<path d="M49.7364 38.5668C49.6329 39.1105 49.8918 39.4601 49.8918 39.8615H49.0373C48.621 38.907 48.5344 37.841 48.7913 36.8318C48.9337 37.518 49.9565 37.8158 49.7364 38.5668Z" fill="white"/> -<path d="M71.0338 37.518C71.0338 37.8676 71.2798 38.1654 71.1892 38.515C70.3281 38.4891 69.487 38.2488 68.7422 37.8158C68.8696 37.5155 69.0543 37.2428 69.286 37.0131C69.8945 37.3627 70.9302 36.3657 71.0338 37.518Z" fill="white"/> -<path d="M28.2839 37.1167C28.4851 37.391 28.6709 37.6763 28.8406 37.9712C28.0379 38.4114 26.9892 38.2172 26.0958 38.5668C26.0493 38.2882 26.0859 38.0021 26.201 37.7442C26.3161 37.4863 26.5047 37.268 26.7432 37.1167C27.2564 37.1426 27.7706 37.1426 28.2839 37.1167Z" fill="white"/> -<path d="M77.0289 38.2172C76.9253 38.515 76.6275 38.6703 76.2779 38.8645C75.7212 39.2659 75.1256 39.0199 74.5819 38.8645C74.0799 38.6935 73.608 38.4444 73.1836 38.1265C73.8827 37.9323 74.5819 38.023 75.2292 37.777C75.8507 37.9712 76.4204 38.1265 77.0289 38.2172Z" fill="white"/> -<path d="M24.139 38.5668C23.3492 38.9163 22.2487 39.5637 21.3036 39.0199C21.0632 38.9075 20.8442 38.7542 20.6562 38.5668C21.0576 38.4114 21.6014 38.4114 21.951 38.0618C22.6501 38.3208 23.401 38.3208 24.139 38.5668Z" fill="white"/> -<path d="M69.8954 39.2659C70.0146 39.4859 70.0886 39.7275 70.113 39.9765C70.1375 40.2256 70.1119 40.477 70.0378 40.716C69.6882 40.716 69.4422 40.3664 68.9891 40.3664C68.3935 40.0168 67.4484 39.6155 67.1895 38.7221C67.539 38.4632 67.9922 38.4632 68.3417 38.1136C68.7431 38.5667 69.5847 38.4114 69.8954 39.2659Z" fill="white"/> -<path d="M76.68 40.0556C75.6831 41.3504 73.7281 41.3504 72.0838 41.2597C71.4497 41.0183 70.922 40.5595 70.5949 39.965L70.3359 38.9681C70.7373 38.9681 71.1387 39.2659 71.54 38.9681L71.7342 38.1136C73.2454 39.0674 74.9236 39.7264 76.68 40.0556Z" fill="white"/> -<path d="M30.3808 38.8646C29.5945 39.6072 28.6321 40.1375 27.5842 40.4053C27.4982 40.1399 27.4865 39.8559 27.5504 39.5843C27.6143 39.3127 27.7514 39.0638 27.9467 38.8646C28.3481 38.515 28.9436 38.5668 29.3968 38.2172L30.4455 38.761L30.3808 38.8646Z" fill="white"/> -<path d="M25.7463 38.8646L25.9405 39.1106L27.2352 38.9164C27.1945 39.892 26.7877 40.8165 26.0959 41.5058C25.1507 42.3085 23.7525 41.8553 22.6002 41.6093C22.1468 41.5054 21.7192 41.3107 21.3432 41.037C20.9671 40.7633 20.6504 40.4163 20.4121 40.0169C20.9625 39.9926 21.5112 39.9407 22.0564 39.8615C23.2836 39.5813 24.4589 39.1094 25.5392 38.4632C25.7463 38.4114 25.6945 38.761 25.7463 38.8646Z" fill="white"/> -<path d="M68.3945 40.457C68.4447 40.7071 68.443 40.9649 68.3896 41.2143C68.3361 41.4637 68.2321 41.6995 68.0838 41.9071C67.3329 41.454 66.2324 41.1562 65.8828 40.211C66.3484 40.097 66.7879 39.8948 67.1775 39.6155C67.552 39.9386 67.96 40.2208 68.3945 40.457Z" fill="white"/> -<path d="M31.5336 40.3146C30.9387 41.0783 30.1462 41.6648 29.2419 42.0107C29.1139 41.7718 29.0469 41.5049 29.0469 41.2338C29.0469 40.9628 29.1139 40.6959 29.2419 40.457C29.4879 40.211 29.8375 39.965 30.1871 39.6672C30.5974 39.9554 31.0523 40.1741 31.5336 40.3146Z" fill="white"/> -<path d="M28.58 40.7159C28.5319 41.005 28.5426 41.3007 28.6116 41.5855C28.6805 41.8703 28.8063 42.1382 28.9814 42.3732H29.331C29.073 43.0764 28.7012 43.7325 28.2305 44.3152C27.6176 45.0333 26.8174 45.5672 25.9191 45.8575C25.0207 46.1478 24.0595 46.1831 23.1423 45.9595C22.5496 45.8259 22.012 45.5141 21.6016 45.0662C23.8217 44.1489 25.7506 42.6452 27.1818 40.7159C27.5831 41.0655 28.1398 40.7159 28.58 40.6253V40.7159Z" fill="white"/> -<path d="M70.4897 41.1562C70.5933 41.1562 70.5933 40.9102 70.5933 40.8066C72.1148 42.379 73.9936 43.5605 76.0699 44.2505C75.9793 44.6001 75.5779 44.8461 75.2802 45.0533C73.7783 45.8948 71.9787 45.2993 70.5933 44.7555C69.5834 44.147 68.3923 43.901 68.0039 42.658C68.0039 42.658 68.0039 42.5027 68.0039 42.412C68.3535 42.5027 68.3535 42.0625 68.5477 41.9071C68.7125 41.545 68.8006 41.1527 68.8066 40.7548C69.3763 40.8066 69.8942 41.2598 70.4897 41.1562Z" fill="white"/> -<path d="M66.5037 41.7129C66.5526 42.0177 66.5375 42.3293 66.4595 42.628C66.3815 42.9267 66.2422 43.2058 66.0506 43.4478C65.5925 43.2401 65.1931 42.922 64.8881 42.5221C64.5831 42.1222 64.382 41.6529 64.3027 41.1562C64.8465 41.1562 65.3514 41.1562 65.8046 41.1562L66.5037 41.7129Z" fill="white"/> -<path d="M33.1243 41.6093C33.085 41.8852 32.9414 42.1354 32.7229 42.3085C32.0801 42.6958 31.4658 43.1285 30.8845 43.6032C30.6961 43.3891 30.5651 43.1306 30.504 42.8521C30.4428 42.5735 30.4535 42.284 30.5349 42.0107C30.8845 41.6611 31.234 41.5057 31.5836 41.2079C32.0882 41.374 32.6028 41.5081 33.1243 41.6093Z" fill="white"/> -<path d="M74.3247 41.8035C74.8815 42.2567 75.477 42.5027 75.982 42.9558C75.7806 43.0973 75.5463 43.1847 75.3014 43.2096C75.0566 43.2346 74.8094 43.1962 74.5837 43.0982C73.9752 42.658 73.289 42.3085 72.6805 41.9071L72.5898 41.8035C73.1673 41.7582 73.7473 41.7582 74.3247 41.8035Z" fill="white"/> -<path d="M67.1886 42.2567C68.7584 45.347 71.3667 47.7857 74.5555 49.1445C74.6979 49.1445 74.9051 49.1445 75.0475 49.2869C74.7939 49.7361 74.412 50.0993 73.9506 50.3299C73.4893 50.5606 72.9696 50.6483 72.4581 50.5816C69.1177 50.2321 66.2176 47.0859 64.8711 44.1858C64.9027 43.9189 64.9547 43.6549 65.0265 43.396H65.13L66.0752 44.0951C66.7743 43.8362 66.9685 43.0464 67.1239 42.4509V42.2955L67.1886 42.2567Z" fill="white"/> -<path d="M64.4946 43.3054L63.8991 44.7036C63.6926 44.5445 63.5096 44.357 63.3553 44.1469C62.8953 43.8028 62.5628 43.3154 62.4102 42.7616V42.6062C63.0241 42.6219 63.6341 42.5026 64.1969 42.2567C64.3457 42.3816 64.4537 42.5483 64.5068 42.7353C64.5599 42.9222 64.5557 43.1208 64.4946 43.3054Z" fill="white"/> -<path d="M24.7885 42.5027C24.3319 42.972 23.8136 43.3771 23.2478 43.7067C22.8822 43.7657 22.5085 43.7514 22.1485 43.6647C21.7884 43.578 21.4491 43.4207 21.1504 43.2018V43.0982C21.7278 42.9737 22.2631 42.7016 22.704 42.3085C23.3929 42.4262 24.0898 42.4912 24.7885 42.5027Z" fill="white"/> -<path d="M35.171 42.658C35.0156 43.5514 33.9669 44.0563 33.4231 44.7555C33.1896 44.5038 33.0215 44.1986 32.9334 43.8668C32.8454 43.535 32.8401 43.1866 32.9182 42.8523L33.2677 42.412C33.8794 42.6202 34.5265 42.7038 35.171 42.658Z" fill="white"/> -<path d="M30.835 44.0563C31.081 44.0563 31.1845 43.9009 31.3787 43.7974L32.3239 43.2018C32.4968 43.8611 32.5238 44.5502 32.4031 45.221C32.2823 45.8919 32.0167 46.5283 31.6247 47.0859C30.3693 48.5762 28.6817 49.6394 26.7955 50.1285C25.5008 50.3745 23.494 50.6205 22.5488 49.5329C24.3639 48.8128 25.9991 47.7035 27.3392 46.2832C28.4699 45.2616 29.3854 44.0248 30.0322 42.6451C30.0199 42.932 30.0886 43.2165 30.2306 43.4662C30.3726 43.7158 30.5821 43.9203 30.835 44.0563Z" fill="white"/> -<path d="M61.9588 43.0076C61.9588 43.7067 63.1111 44.0563 62.5544 44.8461C62.412 45.105 62.3084 45.4028 62.0106 45.5452C61.5057 44.7554 60.5605 44.2505 60.5605 43.2018C61.0318 43.1816 61.5 43.1166 61.9588 43.0076Z" fill="white"/> -<path d="M36.9177 43.3054C36.9177 44.2506 35.9208 44.9497 35.1699 45.6488C34.9239 45.6488 34.9239 45.2993 34.8203 45.1051C34.3672 44.3541 35.2734 43.8104 35.5194 43.3054C35.9805 43.4025 36.4567 43.4025 36.9177 43.3054Z" fill="white"/> -<path d="M60.3144 44.0564C60.1567 44.331 59.9404 44.5674 59.6808 44.7487C59.4211 44.93 59.1246 45.0517 58.8125 45.1051C58.8643 44.6231 58.8643 44.137 58.8125 43.655C59.2524 43.572 59.6853 43.4552 60.1072 43.3054C60.1072 43.4478 60.2108 43.7974 60.3144 44.0564Z" fill="white"/> -<path d="M57.7257 45.4546C57.8126 45.6765 57.8776 45.9063 57.9199 46.1408C57.7706 46.2864 57.5838 46.3877 57.3804 46.4334C57.1769 46.4791 56.9648 46.4675 56.7676 46.3997C56.8712 45.4546 56.8712 44.3541 56.9229 43.3572C58.373 43.2018 57.3243 44.8461 57.7257 45.4546Z" fill="white"/> -<path d="M38.6669 43.901C38.7576 44.4059 38.408 44.8461 38.162 45.2992C37.7088 45.105 37.1651 44.7555 37.1133 44.3541C37.1381 44.0723 37.222 43.7988 37.3593 43.5514C37.7809 43.7159 38.2195 43.8331 38.6669 43.901Z" fill="white"/> -<path d="M58.2706 43.655C58.4648 44.2505 58.2706 45.105 58.6202 45.6488C58.6039 45.8884 58.5515 46.1241 58.4648 46.348C58.2736 45.7473 58.1562 45.1256 58.1152 44.4965L58.2188 43.655H58.2706Z" fill="white"/> -<path d="M40.3641 46.5939C40.1907 46.6406 40.0083 46.6425 39.8339 46.5995C39.6596 46.5565 39.499 46.4699 39.3672 46.3479C39.5591 45.576 39.7061 44.7935 39.8074 44.0045C39.8074 43.7974 40.0145 43.7974 40.0534 43.7974L40.3641 46.5939Z" fill="white"/> -<path d="M39.2112 44.0563C39.2366 44.8448 39.0816 45.6286 38.758 46.348C38.1625 45.5452 39.1076 44.7555 39.2112 44.0563Z" fill="white"/> -<path d="M61.4159 45.4546C61.0417 49.2794 61.9528 53.1199 64.0053 56.369C64.5491 57.3271 65.3 58.2722 65.8568 59.3209C65.445 59.3667 65.0282 59.3182 64.6379 59.1792C64.2476 59.0401 63.894 58.8141 63.604 58.5182C61.8789 56.8766 60.5783 54.8408 59.8138 52.5856C59.0493 50.3304 58.8438 47.9233 59.2149 45.5711C59.6681 45.2215 60.2636 45.1309 60.6132 44.626C60.9043 44.8784 61.1728 45.1557 61.4159 45.4546Z" fill="white"/> -<path d="M64.0553 45.2992L64.4955 44.8461C64.7655 45.218 64.9874 45.6226 65.1558 46.0502C65.2124 46.4442 65.3257 46.828 65.4924 47.1895V47.3967C66.3461 50.4988 68.2037 53.2307 70.7749 55.1649C71.0641 55.3119 71.3338 55.4946 71.5776 55.7087C70.5072 56.0373 69.3682 56.0725 68.2796 55.8106C67.191 55.5487 66.1927 54.9993 65.3889 54.2198C63.9395 52.789 62.8905 51.0034 62.3463 49.0409C62.0063 48.1134 61.8523 47.1279 61.8932 46.1408C62.021 46.1679 62.1539 46.1593 62.2773 46.1159C62.4006 46.0725 62.5096 45.996 62.5923 45.8948C62.8442 45.5323 63.0325 45.1295 63.149 44.7037C63.5504 44.8461 63.6022 45.5452 64.0553 45.2992Z" fill="white"/> -<path d="M34.318 44.7554C34.3519 45.2743 34.5673 45.7648 34.9265 46.1408L35.2761 46.0501C35.456 47.71 35.2156 49.3885 34.577 50.9312C33.9739 52.2252 33.0467 53.3414 31.8852 54.1716C30.7238 55.0019 29.3676 55.5179 27.9481 55.6698L26.8605 55.4756H26.6016C29.2603 53.6971 31.3008 51.1364 32.4407 48.1476C32.7205 47.1843 32.9027 46.1954 32.9845 45.1956C33.2434 45.105 33.334 45.4546 33.593 45.4028C33.7606 45.1162 34.0143 44.8896 34.318 44.7554Z" fill="white"/> -<path d="M37.1662 45.2992C37.6194 45.7524 38.461 45.7524 38.215 46.3997C38.7587 49.9861 38.5127 53.9738 35.9751 56.5243C34.9968 57.5328 33.8861 58.4039 32.6736 59.1137C32.2616 59.2789 31.8227 59.3667 31.3789 59.3727L31.5343 59.2691C34.6675 56.5761 35.4184 52.9768 35.9751 49.2481V45.5452C36.3247 45.4028 36.5189 45.0532 36.7649 44.8461C36.946 44.9475 37.0875 45.1072 37.1662 45.2992Z" fill="white"/> -<path d="M72.2381 45.8042C73.0361 46.4742 73.9043 47.0559 74.8275 47.5391C74.7239 47.7462 74.478 47.7462 74.2837 47.7462C73.4171 47.6987 72.5758 47.4374 71.8348 46.9856C71.0938 46.5337 70.4762 45.9054 70.0371 45.1568L72.2381 45.8042Z" fill="white"/> -<path d="M26.1851 46.3998C25.24 47.1896 24.2948 48.5878 22.793 47.8887V47.7981C23.3305 47.5325 23.8068 47.1576 24.1913 46.6976C24.8626 46.6503 25.5292 46.5507 26.1851 46.3998Z" fill="white"/> -<path d="M40.364 47.0989C40.856 49.4941 39.6649 51.3844 38.7586 53.3782C38.5644 53.2358 38.6679 52.8862 38.7586 52.6791C39.1283 50.977 39.181 49.2214 38.9139 47.5002C39.0164 47.2505 39.1514 47.0155 39.3153 46.8011C39.6441 46.9627 39.9994 47.0636 40.364 47.0989Z" fill="white"/> -<path d="M57.9197 46.84C58.0437 47.2164 58.2273 47.5705 58.4635 47.8887C58.4065 49.541 58.6075 51.1922 59.059 52.7827C59.059 53.1322 59.059 53.4818 58.8131 53.7278C58.4635 53.5854 58.2693 53.1322 58.0233 52.7827C57.1141 51.0068 56.6351 49.0421 56.625 47.0471V46.9435C57.0585 47.0162 57.5033 46.9807 57.9197 46.84Z" fill="white"/> -<path d="M66.2956 47.4484C68.2077 49.5721 70.3483 51.4782 72.6785 53.1322C72.7821 53.2746 72.4843 53.2358 72.4325 53.2746C71.3724 53.2957 70.3272 53.0226 69.413 52.4855C68.4988 51.9484 67.7513 51.1684 67.2537 50.2321C66.7163 49.3025 66.2822 48.317 65.959 47.2931L66.2956 47.4484Z" fill="white"/> -<path d="M31.4287 48.2382C30.8281 49.7832 30.0037 51.2315 28.9817 52.5367C27.6421 53.2109 26.1162 53.4204 24.6444 53.1322C24.5409 53.1322 24.3984 53.1322 24.3984 52.9251C25.8905 52.3522 27.2228 51.4285 28.2826 50.2321C29.391 49.7521 30.404 49.0768 31.2733 48.2382H31.4287Z" fill="white"/> -<path d="M57.3227 52.7826C57.5472 53.9818 57.8988 55.1537 58.3715 56.2783C58.3808 56.3913 58.3621 56.5048 58.3169 56.6087C58.2717 56.7126 58.2015 56.8038 58.1125 56.8739C57.9947 56.9853 57.8441 57.0556 57.6831 57.0742C57.522 57.0929 57.3593 57.059 57.2192 56.9775C56.4682 56.6279 56.8696 55.1261 55.7691 55.6828C55.5231 55.8381 55.6655 56.1877 55.7691 56.3819C56.4258 57.5918 57.2496 58.7032 58.2161 59.6834C58.3715 60.1236 57.9183 60.1236 57.6723 60.279L56.4682 60.3826C56.5057 60.7786 56.4198 61.1766 56.2222 61.5219C55.9245 61.5219 55.7691 61.2759 55.5231 61.3277C55.1735 61.8715 55.07 62.9202 54.073 62.8166C53.7235 62.4671 54.073 62.1175 53.9306 61.6773C53.7882 61.2371 53.4775 60.4732 52.7783 60.1754C52.5546 60.179 52.3356 60.2406 52.1427 60.354C51.9499 60.4675 51.7897 60.629 51.6778 60.8228C51.5007 61.4327 51.4541 62.073 51.5411 62.7021C51.6281 63.3312 51.8467 63.9349 52.1828 64.4739C52.4094 64.696 52.6883 64.8575 52.9937 64.9435C53.2992 65.0294 53.6214 65.0371 53.9306 64.9658C54.1766 65.2636 54.0212 65.7686 53.827 66.0663C53.6864 66.3241 53.486 66.5444 53.2428 66.7089C52.9995 66.8733 52.7204 66.9771 52.4288 67.0115C51.9661 66.9863 51.5198 66.8323 51.14 66.567C50.7603 66.3016 50.4622 65.9354 50.2795 65.5096C49.8393 64.8234 49.9818 64.0207 49.5804 63.3216C49.5804 63.3216 49.3862 63.0756 49.2826 63.1662C49.2111 63.5121 49.2111 63.869 49.2826 64.2149C49.5158 64.9257 49.5516 65.6864 49.3862 66.4159C49.3439 66.5688 49.2687 66.7107 49.1658 66.8314C49.0629 66.9522 48.9349 67.049 48.7906 67.1151C48.5822 67.1029 48.3818 67.0304 48.214 66.9062C48.0461 66.782 47.9181 66.6117 47.8455 66.4159C47.7115 65.6817 47.7604 64.9258 47.9879 64.2149C48.0428 63.9023 48.0428 63.5824 47.9879 63.2698C47.9879 63.1662 47.8455 63.1662 47.7419 63.1662C47.237 64.0207 47.237 66.0663 45.6445 66.6619C45.1913 66.8173 44.4922 67.0115 44.1426 66.6619C43.9193 66.52 43.7394 66.3192 43.6229 66.0816C43.5064 65.844 43.4577 65.5789 43.4823 65.3154C43.6377 64.9658 43.8837 65.3154 44.1297 65.1212C45.528 64.6163 45.8775 63.1274 45.9811 61.7291C45.8775 61.3277 45.4373 60.525 44.8288 60.4344C44.2203 60.3437 43.6377 60.9781 43.3917 61.7291C43.1845 62.2729 43.3917 63.0238 42.7443 62.8684L41.9416 62.0269C41.6113 61.975 41.275 61.975 40.9447 62.0269C40.8929 61.6792 40.8929 61.3258 40.9447 60.9781C40.9447 60.6804 40.6469 60.6804 40.4915 60.5768C39.9996 60.3308 39.0933 60.6804 38.8473 60.1754C38.6013 59.6705 39.4428 59.5281 39.7018 59.1785C40.5637 58.3506 41.2468 57.3548 41.7086 56.2525C41.7086 55.9935 41.7086 55.6957 41.5532 55.6439C40.6599 55.3462 40.9576 57.1976 40.0125 57.1976C39.847 57.1879 39.6866 57.1365 39.5463 57.0482C39.406 56.9599 39.2902 56.8376 39.2098 56.6927C39.0156 55.6439 39.8054 54.647 40.0125 53.5983C39.972 52.9283 40.1058 52.2592 40.4009 51.6562C40.6081 51.0089 40.7505 50.3615 40.9576 49.7142C42.306 54.3195 44.9862 58.4232 48.6612 61.509C52.2773 58.2616 54.9066 54.062 56.2481 49.3905C56.4195 50.5721 56.7825 51.7179 57.3227 52.7826Z" fill="white"/> -<path d="M65.8023 55.8252C66.1907 56.4726 66.7474 57.1199 67.1876 57.8191C64.8442 56.8221 62.449 52.7826 62.4102 51.0348C63.0057 52.7826 64.896 54.0773 65.8023 55.8252Z" fill="white"/> -<path d="M34.7709 52.7826C34.2872 53.9687 33.7383 55.1271 33.1266 56.2524C32.2261 56.9807 31.1328 57.4307 29.9805 57.5472C30.9075 56.6658 31.7287 55.6795 32.4275 54.6082C33.2302 53.9479 34.02 53.3135 34.8227 52.5107L34.7709 52.7826Z" fill="white"/> -<path d="M34.227 60.9652C34.227 61.3148 33.7738 61.263 33.5278 61.509C33.3029 61.7219 33.0992 61.956 32.9193 62.2081C32.5731 62.013 32.1759 61.9272 31.78 61.9622C31.4629 62.0124 31.1666 62.1515 30.9255 62.3635C30.878 62.0646 30.9189 61.7583 31.0431 61.4823C31.1673 61.2063 31.3694 60.9726 31.6246 60.8099C32.0097 60.5314 32.4792 60.3948 32.9535 60.4231C33.4279 60.4514 33.8778 60.643 34.227 60.9652Z" fill="white"/> -<path d="M63.9013 62.0657C63.8821 61.8459 63.8015 61.6359 63.6687 61.4597C63.5359 61.2834 63.3564 61.148 63.1504 61.0688C63.3575 60.6157 63.8107 60.6157 64.1473 60.3697C64.5644 60.3263 64.9847 60.4122 65.3514 60.6157C65.5761 60.7653 65.7522 60.9774 65.858 61.2258C65.9639 61.4743 65.9948 61.7482 65.947 62.0139C65.5974 62.3117 65.2478 61.7679 64.8465 61.8586C64.4451 61.9492 64.1991 62.2599 63.9013 62.0657Z" fill="white"/> -<path d="M65.4941 66.6101C65.4588 66.7345 65.3879 66.8458 65.2899 66.9302C65.192 67.0146 65.0715 67.0684 64.9433 67.085C64.8151 67.1015 64.6848 67.0801 64.5687 67.0233C64.4526 66.9665 64.3557 66.8769 64.29 66.7655C64.1864 66.2606 63.5391 66.6101 63.3449 66.7655C62.7881 66.9597 62.3997 66.6619 61.9466 66.6619C61.9207 67.0629 61.9207 67.4651 61.9466 67.866C61.9466 67.9566 62.089 68.0602 62.2961 67.9566C62.5033 67.853 62.3997 67.6071 62.4386 67.3611C62.5945 67.4301 62.7191 67.5547 62.7881 67.7106C63.1377 68.0602 61.9984 68.6558 62.9953 68.6558C63.1206 68.5154 63.2088 68.3459 63.2518 68.1627C63.2947 67.9795 63.2911 67.7885 63.2413 67.607C63.5391 67.5164 63.798 67.5164 63.9404 67.7106C64.4842 68.2026 63.798 68.6558 63.5909 69.1607C63.5909 69.4067 62.7881 69.5103 63.0989 70.0541C62.5421 70.0541 61.9984 70.054 61.8042 69.6009C61.4587 68.7781 60.9268 68.0468 60.2505 67.4646C60.4447 67.1669 60.2505 66.9079 60.2505 66.6619L60.1469 66.7655C60.1705 66.7203 60.1826 66.6701 60.1822 66.6192C60.1818 66.5682 60.1689 66.5182 60.1446 66.4734C60.1203 66.4287 60.0853 66.3906 60.0429 66.3625C60.0004 66.3344 59.9516 66.3172 59.9009 66.3123C59.4478 66.4677 59.9009 66.8173 59.7974 67.1151C59.7989 67.2894 59.7494 67.4605 59.6549 67.607C59.4478 67.4646 59.4478 67.1151 59.2018 67.0115C59.1552 67.0048 59.1078 67.0109 59.0644 67.0291C59.0211 67.0474 58.9835 67.0771 58.9558 67.1151C59.1794 67.5969 59.2297 68.1411 59.0982 68.6558C59.0982 68.9018 58.7486 68.7593 58.6062 68.7593C58.3696 68.6463 58.159 68.4856 57.9874 68.2873C57.8159 68.089 57.6871 67.8574 57.6093 67.607C57.6056 67.2535 57.6959 66.9053 57.8711 66.5981C58.0463 66.291 58.3 66.036 58.6062 65.8592C58.7486 65.7168 59.2018 65.8592 59.0982 65.5096V65.419C58.6451 65.419 58.1013 65.8592 57.8035 65.419C57.1044 64.4739 56.3534 63.5158 55.6543 62.4671C55.7967 62.3246 55.7579 61.9751 56.0039 61.8715C56.2499 61.7679 56.5994 62.1175 56.7548 61.8715C56.9102 61.6255 57.0008 61.2759 57.0008 60.9264C57.2986 60.8228 57.6481 60.8228 57.6481 61.1724C57.7582 61.3932 57.8066 61.6396 57.7884 61.8857C57.7702 62.1318 57.6859 62.3684 57.5446 62.5706C57.4539 62.6742 57.6481 62.726 57.6999 62.726C58.0495 62.726 58.1531 62.3246 58.3473 62.1175C58.4553 62.3994 58.5019 62.7012 58.484 63.0026C58.4662 63.304 58.3843 63.5981 58.2437 63.8653C58.359 63.8894 58.478 63.8894 58.5933 63.8653C58.8393 63.6193 58.8393 63.2698 59.0464 63.1144C59.4996 63.3734 59.4996 64.1631 59.9916 64.5127C60.7943 64.4221 61.2863 63.218 62.1408 63.8136H62.4386C62.5421 63.464 62.089 63.3734 61.8948 63.2698H61.3899C61.3899 62.972 61.7394 62.7648 61.9854 62.6742C62.2314 62.5836 62.7881 62.8684 63.0341 62.6742C62.8917 62.3246 62.4386 62.3246 62.089 62.2211C62.089 61.9751 62.5421 61.8715 62.6846 61.6255C62.8917 61.6255 63.1377 61.4313 63.2801 61.6255C63.4225 61.8197 63.5909 62.1175 63.7333 62.3246C63.8757 62.5318 64.4324 63.0238 64.0828 63.2698C63.7333 63.5158 63.3837 63.7747 63.2801 64.2149C62.9306 64.4739 62.5421 64.2149 62.1408 64.4739C61.7394 64.7328 61.2863 64.2667 61.0403 64.6163C61.2863 64.9658 61.7912 64.8234 62.089 65.16C62.3868 65.4967 62.089 65.9628 62.6846 65.9628C62.7881 65.9628 62.6846 65.7686 62.6846 65.7686C62.7881 65.5096 62.5421 65.2636 62.5421 64.9658C62.925 64.9251 63.3122 64.9603 63.6815 65.0694C63.8368 65.2636 63.8368 65.7686 64.1864 65.6132C64.3288 65.419 64.1864 65.0176 64.0311 64.8234C63.8757 64.6292 63.9404 64.8234 63.9404 64.7199C64.1501 64.6064 64.3928 64.5698 64.6266 64.6163C65.2351 64.7198 65.1316 65.6132 65.6365 65.6132C65.8307 65.419 65.6365 65.1601 65.6365 64.9658C65.6365 64.7716 65.3387 64.7198 65.3387 64.5645C65.6365 64.4739 65.7789 64.5645 65.9861 64.8234C66.1108 65.0291 66.1611 65.2713 66.1285 65.5096C65.9472 65.8462 65.6494 66.0016 65.4941 66.6101Z" fill="white"/> -<path d="M65.7522 66.8043C65.9982 66.2994 66.05 66.0534 66.296 65.8462C66.542 65.6391 66.5031 65.406 66.542 65.1471C66.765 65.2109 66.9668 65.3335 67.1263 65.5021C67.2857 65.6706 67.3969 65.8789 67.4483 66.1052C67.4735 66.4832 67.3996 66.8612 67.2338 67.2018C67.068 67.5424 66.8162 67.8339 66.5031 68.0472C66.2988 68.1836 66.0626 68.2649 65.8176 68.283C65.5726 68.3012 65.3271 68.2556 65.1049 68.1508C65.0013 68.1508 64.8459 67.9437 65.0013 67.853C65.5968 67.5423 65.5968 67.2445 65.7522 66.8043Z" fill="white"/> -<path d="M40.7513 62.3635L41.8 62.5577C41.0102 63.5546 40.2593 64.5516 39.366 65.4967C38.983 65.3452 38.5631 65.3136 38.1619 65.4061C38.1619 65.4967 38.1619 65.7039 38.3172 65.7039C38.7087 65.6907 39.0948 65.7978 39.4235 66.0108C39.7522 66.2238 40.0077 66.5323 40.1557 66.895C40.3629 68.0473 38.861 67.8013 38.5632 68.7464C38.3172 68.6428 38.1619 68.2933 37.9677 68.0473C37.7087 67.5941 38.5114 67.2446 38.1619 66.7526C37.7087 66.8432 37.6181 67.2963 37.6181 67.7495V68.0991C37.5563 68.1208 37.4893 68.1225 37.4265 68.1039C37.3637 68.0853 37.3085 68.0474 37.2685 67.9955C37.1649 67.7495 37.0096 67.5423 37.1132 67.2963C37.2167 67.0503 37.6181 66.7526 37.1132 66.4936C36.8154 66.5972 36.7118 66.9468 36.7118 67.2963C36.7118 67.6459 36.8154 67.6459 36.8154 67.8919C36.168 68.4486 36.1162 69.1866 35.7667 69.6916C35.4645 69.8401 35.1323 69.9173 34.7956 69.9173C34.4589 69.9173 34.1268 69.8401 33.8246 69.6916C33.5657 69.2384 33.0219 68.85 33.3197 68.2933C33.475 68.1509 33.6174 67.9437 33.9152 67.9437C33.8847 68.1045 33.8922 68.2702 33.9371 68.4276C33.9821 68.5849 34.0633 68.7296 34.1742 68.85C34.5237 68.7464 34.1742 68.3968 34.2648 68.0473C34.295 67.8747 34.366 67.7118 34.4718 67.5722C34.5777 67.4326 34.7153 67.3203 34.8733 67.2446C34.8733 67.6977 34.8733 68.1509 35.3135 68.2933C35.5725 68.1509 35.2229 67.9437 35.2229 67.8013C35.3135 67.4517 35.3135 66.9986 35.7667 66.7526C35.8702 66.7526 35.922 66.7526 35.922 66.5454C35.922 66.3383 35.922 66.403 35.922 66.2994C35.0157 66.403 34.226 67.1021 33.3326 66.649C33.0675 66.8215 32.7553 66.9074 32.4393 66.895C31.9343 66.7526 31.6883 66.0534 30.9374 66.1052C30.6914 65.9498 30.795 65.6003 30.6914 65.2507C30.8856 64.9529 31.041 64.6033 31.3905 64.4609L32.1933 64.5516C32.0897 64.9011 31.3388 65.1471 31.8437 65.6003H31.9343C32.1127 65.3266 32.3564 65.1016 32.6435 64.9457C32.9305 64.7897 33.2519 64.7077 33.5786 64.7069C33.488 64.9529 33.0348 65.1471 33.1384 65.4967C33.488 65.9498 33.5786 65.3025 33.8375 65.2507C33.9403 65.1853 34.0556 65.1423 34.1761 65.1245C34.2965 65.1066 34.4194 65.1144 34.5367 65.1471C34.3295 65.4061 33.98 65.6003 34.1871 65.9498C34.2777 65.9498 34.3295 66.0534 34.5367 65.9498C34.7827 65.3025 35.43 65.1471 36.0256 65.0565L36.2845 64.9529C36.0256 64.8105 35.5854 64.8105 35.43 64.5516H34.4202C34.0706 64.202 33.9152 63.5028 33.3197 63.5028C33.208 63.2796 33.1633 63.0288 33.1909 62.7808C33.2184 62.5327 33.3171 62.2979 33.475 62.1046C33.6043 61.9148 33.773 61.7553 33.9696 61.6368C34.1663 61.5184 34.3862 61.4439 34.6144 61.4184C34.7887 61.4112 34.9608 61.4602 35.1053 61.558C35.2498 61.6559 35.3591 61.7976 35.4171 61.9622C35.4171 61.9622 35.4171 61.9621 35.4171 62.1046C35.4171 62.247 35.1711 62.1046 35.0157 62.2081C34.8604 62.3117 34.6662 62.3117 34.5626 62.5577C34.8215 63.0109 35.0675 62.3635 35.4171 62.5577C35.9609 62.5577 36.2198 63.0626 36.414 63.4122V63.5028C35.9609 63.5028 35.6113 63.3086 35.2617 63.5028C35.3653 64.1114 35.9609 63.5029 36.2198 63.8524L37.2556 64.6033C37.7605 64.7069 37.5145 64.0078 37.8641 63.8524C37.9547 63.7618 38.0583 63.5546 38.1101 63.5028C38.2528 63.7942 38.4779 64.0373 38.7574 64.202C39.0034 64.1114 38.6539 63.8524 38.6539 63.6582C38.5884 63.4311 38.5863 63.1903 38.648 62.9621C38.7096 62.7338 38.8325 62.5268 39.0034 62.3635C38.9128 62.7131 39.107 62.9073 39.353 63.1533C39.4297 63.1451 39.5021 63.1134 39.5602 63.0627C39.3754 62.6019 39.3392 62.0949 39.4566 61.6126C39.6119 61.3148 39.9097 60.8099 40.2593 61.0688C40.6089 61.3277 40.3629 62.1046 40.7513 62.3635Z" fill="white"/> -<path d="M30.225 65.4967C30.3077 65.8588 30.4786 66.1949 30.7226 66.475C30.9665 66.7551 31.276 66.9706 31.6233 67.1021C31.6444 67.5106 31.7319 67.9129 31.8823 68.2933C31.5872 68.3251 31.2888 68.2981 31.0043 68.2136C30.7198 68.1291 30.4549 67.989 30.225 67.8013C30.0109 67.5703 29.8584 67.2891 29.7815 66.9836C29.7045 66.6782 29.7057 66.3583 29.7848 66.0534C29.9273 65.8463 29.9273 65.6003 30.225 65.4967Z" fill="white"/> -<path d="M48.093 67.5035C48.3016 67.6374 48.5443 67.7085 48.7921 67.7085C49.04 67.7085 49.2827 67.6374 49.4913 67.5035C49.7823 67.2159 50.0192 66.8782 50.1904 66.5066C51.4851 67.3999 51.3298 68.9018 52.6245 69.7433C53.868 70.5529 55.2578 71.1115 56.7158 71.3876C56.8919 71.5658 57.0442 71.7659 57.1689 71.9832C57.1595 72.0913 57.1282 72.1964 57.077 72.2921C57.0259 72.3878 56.9558 72.4721 56.8711 72.5399C57.6765 72.9137 58.3786 73.478 58.9168 74.1842C59.3576 74.8257 59.6413 75.562 59.7447 76.3335C59.8482 77.105 59.7686 77.89 59.5123 78.625C59.2571 79.197 58.856 79.6919 58.3493 80.06C57.8426 80.4281 57.248 80.6566 56.6251 80.7225H56.4309C56.2367 80.7225 55.9778 80.7225 55.8871 80.5671C55.8871 79.9198 56.4309 79.9198 56.9359 79.5184C57.2457 79.2574 57.4686 78.9082 57.575 78.5173C57.6814 78.1264 57.6662 77.7124 57.5314 77.3303C57.4636 76.8468 57.3006 76.3815 57.0516 75.9615C56.8027 75.5415 56.4729 75.175 56.0814 74.8833C56.0814 75.3883 56.3273 76.0745 55.7318 76.424C55.6132 76.4653 55.4857 76.4738 55.3627 76.4487C55.2397 76.4237 55.1256 76.366 55.0326 76.2816C54.1393 75.3365 53.9839 74.1842 52.9352 73.2391C52.0936 72.2939 50.9414 71.6466 50.1516 70.6497C50.048 72.2421 50.7472 73.5368 50.5918 74.9869C50.5905 75.1012 50.557 75.2129 50.4952 75.3091C50.4334 75.4052 50.3457 75.482 50.2422 75.5307C49.9444 75.0905 49.802 74.0806 49.2453 74.236C48.9993 74.3396 48.8957 75.2847 48.8957 75.7767C48.8957 75.9838 48.8957 76.1263 48.6497 76.1263C48.5746 76.1209 48.5024 76.0952 48.4408 76.0518C48.3792 76.0085 48.3306 75.9492 48.3002 75.8803L48.0542 74.3396C48.0542 74.1324 47.8082 74.1324 47.7046 74.236C47.4124 74.6329 47.1771 75.0687 47.0055 75.5307C46.7595 75.4401 46.6559 75.1811 46.5523 74.9351C46.4487 73.3815 47.4586 72.1386 47.109 70.5979C46.1121 72.2421 43.9629 72.6953 43.2249 74.482C42.7718 75.1423 42.6293 76.2816 41.723 76.6312C41.5839 76.6765 41.4326 76.6652 41.3018 76.5997C41.171 76.5343 41.0711 76.4201 41.0239 76.2816C40.9683 76.0433 40.9625 75.796 41.0071 75.5554C41.0517 75.3148 41.1455 75.0859 41.2828 74.8833C41.1275 74.8833 40.8815 74.9869 40.6743 75.0387C40.1523 75.4451 39.7679 76.0022 39.5734 76.6345C39.3788 77.2668 39.3835 77.9437 39.5868 78.5733C39.95 79.3452 40.4755 80.0298 41.1275 80.5801C41.2828 80.8261 41.0239 80.9685 40.7779 80.9685C40.2898 81.0177 39.7972 80.944 39.3449 80.754C38.8926 80.5641 38.495 80.2639 38.1885 79.8809C37.7301 79.2963 37.418 78.6105 37.2784 77.8808C37.1387 77.1511 37.1756 76.3986 37.3858 75.6861C37.8946 74.4435 38.8067 73.4083 39.9752 72.7471C39.8847 72.4209 39.8847 72.0763 39.9752 71.7502C40.5319 71.1416 41.477 71.4006 42.1762 71.1416C42.7933 71.0368 43.3821 70.8055 43.9057 70.4624C44.4292 70.1193 44.8763 69.6718 45.2188 69.1478C45.6787 68.0775 46.3034 67.0858 47.0702 66.2088C47.2363 66.7536 47.6015 67.2158 48.093 67.5035Z" fill="white"/> -<path d="M58.3735 69.1996C58.2948 69.4176 58.2761 69.6528 58.3194 69.8806C58.3627 70.1083 58.4663 70.3202 58.6195 70.4943C58.7101 70.4943 58.8137 70.5978 58.9172 70.6496C59.0208 70.7014 58.8137 70.9474 58.7101 70.9474C58.0239 70.7403 57.1694 70.8438 56.7162 70.0411C56.5473 69.7197 56.459 69.362 56.459 68.9989C56.459 68.6357 56.5473 68.2781 56.7162 67.9566L56.9752 67.6071C57.0731 67.9607 57.2498 68.2877 57.4919 68.5635C57.7341 68.8393 58.0354 69.0567 58.3735 69.1996Z" fill="white"/> -<path d="M40.6091 69.588C40.4155 69.9783 40.1163 70.3065 39.7456 70.5353C39.3749 70.7642 38.9474 70.8845 38.5117 70.8827C38.5117 70.5331 38.8613 70.2353 38.9131 69.8858C38.9649 69.5362 38.9131 69.1348 39.0167 68.7853C39.4496 68.4449 39.9134 68.1458 40.402 67.8919C40.5712 68.1367 40.6785 68.419 40.7146 68.7144C40.7507 69.0098 40.7145 69.3096 40.6091 69.588Z" fill="white"/> -<path d="M65.1052 70.0929C65.0924 70.3874 65.0136 70.6752 64.8747 70.9352C64.7358 71.1951 64.5402 71.4205 64.3025 71.5948C63.8182 71.9146 63.2292 72.0352 62.6582 71.9314C62.5546 71.9314 62.451 71.789 62.5546 71.6854C63.1113 71.6854 63.1113 71.1934 63.2538 70.8438C63.3064 70.5788 63.3064 70.3061 63.2538 70.0411C63.7823 69.7189 64.2262 69.275 64.5485 68.7464C65.0016 68.9924 65.0016 69.588 65.1052 70.0929Z" fill="white"/> -<path d="M34.2251 70.4942C34.4711 70.8438 34.3158 71.2452 34.5747 71.5429C34.8336 71.8407 35.1185 71.7889 35.0149 72.0349C34.6081 72.109 34.1887 72.0696 33.8028 71.9212C33.4168 71.7728 33.0792 71.521 32.8268 71.1934C32.6546 70.8707 32.5645 70.5105 32.5645 70.1447C32.5645 69.7789 32.6546 69.4187 32.8268 69.0959L32.9175 68.9924C33.2217 69.594 33.6711 70.1102 34.2251 70.4942Z" fill="white"/> -<path d="M47.8467 75.1811C47.9373 75.6731 47.9373 76.3334 48.4423 76.5794C48.9472 76.8254 49.0378 76.4758 49.232 76.1262L49.491 75.2847H49.5816C49.7204 75.871 49.9906 76.4182 50.3719 76.8847C50.7532 77.3512 51.2356 77.725 51.7826 77.9777C52.1029 78.1845 52.476 78.2945 52.8572 78.2945C53.2385 78.2945 53.6116 78.1845 53.9318 77.9777C54.0003 77.9724 54.069 77.9811 54.134 78.0033C54.1989 78.0254 54.2587 78.0606 54.3096 78.1067C54.3605 78.1527 54.4014 78.2086 54.43 78.2711C54.4585 78.3335 54.4741 78.401 54.4756 78.4697C54.4592 78.8261 54.3607 79.174 54.1878 79.4862C54.0149 79.7983 53.7722 80.0663 53.4787 80.2693C53.0067 80.5115 52.4717 80.6029 51.946 80.5312C51.4204 80.4594 50.9295 80.2279 50.5397 79.8679C50.4879 79.8688 50.4367 79.8561 50.3913 79.8311C50.3459 79.8061 50.3078 79.7697 50.2808 79.7255C50.1423 80.4854 50.2467 81.2695 50.579 81.9667C50.9113 82.6639 51.4548 83.2387 52.1322 83.6096C52.3369 83.7098 52.5644 83.7542 52.7917 83.7383C53.0191 83.7224 53.2382 83.6467 53.4269 83.519C53.4633 83.4986 53.5051 83.4897 53.5467 83.4935C53.5883 83.4972 53.6278 83.5135 53.66 83.5401C53.6922 83.5667 53.7156 83.6024 53.7272 83.6425C53.7387 83.6827 53.7378 83.7254 53.7247 83.765C53.7036 84.0745 53.5934 84.3712 53.4073 84.6194C53.2212 84.8675 52.9672 85.0564 52.676 85.1633C52.2904 85.2704 51.8829 85.2703 51.4974 85.163C51.1119 85.0558 50.7629 84.8455 50.4879 84.5548C50.3843 85.9531 50.7339 87.8563 49.6334 88.4389C49.1932 88.6331 49.3356 89.4358 48.9343 89.7336C48.8992 89.7704 48.857 89.7998 48.8103 89.8198C48.7635 89.8398 48.7132 89.8501 48.6624 89.8501C48.6115 89.8501 48.5612 89.8398 48.5145 89.8198C48.4677 89.7998 48.4256 89.7704 48.3905 89.7336C47.8985 89.4876 48.1445 88.7885 47.7949 88.4389C46.5002 87.5844 46.8498 86.1473 46.7462 84.6972V84.5418C46.4684 84.8314 46.1092 85.0298 45.7162 85.1107C45.3231 85.1916 44.9148 85.1513 44.5452 84.995C44.2739 84.9021 44.0378 84.7281 43.8687 84.4965C43.6996 84.2649 43.6059 83.9869 43.6001 83.7003C43.6001 83.4543 43.6001 83.3507 43.7036 83.3507C44.0932 83.4915 44.5165 83.5099 44.9168 83.4034C45.3171 83.297 45.6753 83.0708 45.9435 82.7551C46.3871 82.4155 46.7291 81.9607 46.9322 81.4402C47.1354 80.9198 47.1919 80.3536 47.0958 79.8032C46.7462 79.8032 46.5002 80.2564 46.1506 80.3081C45.7222 80.495 45.2482 80.5516 44.7878 80.4711C44.3273 80.3905 43.9008 80.1762 43.5612 79.855C43.3419 79.6454 43.1741 79.3879 43.0708 79.1026C42.9674 78.8174 42.9315 78.5122 42.9657 78.2107C43.2117 77.8611 43.7684 78.2107 44.1568 78.1071C44.9686 77.9946 45.7339 77.6609 46.3687 77.1425C47.0035 76.6241 47.4835 75.9411 47.7561 75.1682L47.8467 75.1811Z" fill="white"/> -<path d="M56.2233 40.4053C56.4559 42.817 56.3863 45.2483 56.0162 47.6427C55.8273 48.2943 55.6973 48.9616 55.6278 49.6365C54.3313 53.9396 51.9297 57.8278 48.6622 60.9134L48.5587 60.8099C45.7608 58.3975 43.5831 55.3486 42.2087 51.9195C40.8344 48.4904 40.3036 44.7814 40.6609 41.1044L40.7516 40.4053H56.2233Z" fill="white"/> -<path d="M46.7987 43.901C46.8894 43.901 47.0447 43.901 47.1483 44.0563C47.2519 44.2117 47.1483 44.3541 46.9412 44.3541C46.9412 44.2505 46.8376 44.2505 46.7987 44.2505H46.6952C46.5916 44.4965 46.3456 44.1469 46.242 44.4059C45.996 44.1469 46.3456 44.0045 46.3456 43.7067C46.3456 43.7067 46.242 43.5514 46.1514 43.7067C45.996 44.1987 45.5429 43.6032 45.2969 43.7067C45.2969 44.0045 45.6464 43.901 45.8018 44.0563C45.8924 44.4965 45.5429 44.0563 45.4004 44.2505C45.4004 44.4965 45.75 44.4965 45.8924 44.7037C45.996 45.105 45.5429 44.6001 45.4004 44.7037C45.5429 45.0532 46.242 44.8979 46.1514 45.4028C46.1514 45.7006 46.3456 45.7524 46.4492 45.9466C46.242 46.1926 46.4492 46.4386 46.3456 46.6457C46.1514 46.6457 45.996 46.4386 45.75 46.5422V46.6457C45.9435 46.8134 46.1934 46.9013 46.4492 46.8917C46.5916 46.9953 46.5916 47.1377 46.5916 47.3449H46.1514C46.242 47.5391 46.488 47.5391 46.6952 47.6945C46.9023 47.8498 46.6952 47.8887 46.7987 47.9922C46.8905 48.477 47.0072 48.9566 47.1483 49.4294C47.1483 49.5329 47.1483 49.7401 47.2907 49.7401C47.4979 49.5329 47.2907 49.2869 47.2907 49.0927C47.0436 48.4828 46.8782 47.8428 46.7987 47.1895C46.7987 46.8917 46.6434 46.5422 46.5916 46.2444C46.649 46.1213 46.7184 46.0043 46.7987 45.8948C46.8349 45.7799 46.8651 45.6632 46.8894 45.5452C46.86 45.5354 46.8281 45.5354 46.7987 45.5452C46.6952 45.5452 46.6434 45.7524 46.488 45.7006C46.3326 45.6488 46.488 45.597 46.488 45.4028C46.488 45.2086 46.6952 45.1439 46.7987 45.0532H46.9412C47.2389 45.0532 47.2389 45.2475 47.2907 45.4028C47.3425 45.5582 47.4979 45.4028 47.4979 45.4028C47.4764 44.8968 47.407 44.3939 47.2907 43.901L46.7987 43.7067H46.5916C46.5893 43.734 46.5933 43.7613 46.6031 43.7868C46.6129 43.8123 46.6283 43.8352 46.6483 43.8539C46.6682 43.8725 46.6921 43.8865 46.7181 43.8946C46.7442 43.9028 46.7717 43.9049 46.7987 43.901ZM46.7987 44.8461H46.5916C46.488 44.9497 46.4492 45.0532 46.3456 45.0532C46.3456 44.8461 46.488 44.7037 46.5916 44.4059C46.6586 44.4296 46.7317 44.4296 46.7987 44.4059C46.8922 44.4111 46.9824 44.4416 47.0599 44.494C47.1375 44.5464 47.1993 44.6189 47.2389 44.7037C47.1483 44.9497 46.9412 44.8461 46.7987 44.8461Z" fill="#0072BC"/> -<path d="M48.4433 42.8522C48.7929 42.9558 48.8835 42.658 49.0389 42.5026C49.2331 42.6062 49.2849 42.7616 49.5827 42.7616C49.5827 42.658 49.738 42.658 49.738 42.5026H49.5827C49.5295 42.5081 49.4758 42.5029 49.4246 42.4874C49.3735 42.4718 49.326 42.4462 49.2849 42.412C49.0389 42.3084 48.7929 42.3084 48.7929 42.6062C48.5339 42.8522 48.3397 42.3084 48.0938 42.5026C48.1934 42.6349 48.3111 42.7526 48.4433 42.8522Z" fill="#0072BC"/> -<path d="M46.9402 42.8523C47.0585 42.7535 47.1592 42.6352 47.2379 42.5027C47.1473 42.5027 47.0437 42.412 46.9402 42.412C46.8366 42.412 46.6942 42.658 46.7977 42.8523H46.9402Z" fill="#0072BC"/> -<path d="M46.0742 42.8523L46.4627 43.0076V42.8523C46.3204 42.7326 46.1518 42.6483 45.9707 42.6063C45.8671 42.7616 45.6211 43.0076 45.6211 43.2018C45.893 43.3054 45.9966 42.9558 46.0742 42.8523Z" fill="#0072BC"/> -<path d="M50.6816 43.0982C50.7723 43.1017 50.8622 43.0807 50.9419 43.0374C51.0217 42.9942 51.0883 42.9302 51.1348 42.8523C50.9794 42.658 50.7852 42.8523 50.6298 42.8523C50.4744 42.8523 50.5392 42.6063 50.332 42.658V42.7616C50.332 42.8523 50.4356 43.0982 50.6816 43.0982Z" fill="#0072BC"/> -<path d="M49.582 43.0982C49.841 43.3054 49.8928 43.0076 50.087 42.8522C50.2812 42.6969 49.9834 42.8522 49.8928 42.7616C49.8021 42.671 49.582 42.9558 49.582 43.0982Z" fill="#0072BC"/> -<path d="M48.7919 43.2018C48.7901 43.2147 48.791 43.2279 48.7947 43.2405C48.7985 43.253 48.8048 43.2646 48.8134 43.2744C48.822 43.2843 48.8327 43.2921 48.8446 43.2975C48.8566 43.3028 48.8695 43.3055 48.8826 43.3054C49.0379 43.2018 49.1415 43.0982 49.1415 42.9558C48.9344 42.7616 48.7919 43.0982 48.7919 43.2018Z" fill="#0072BC"/> -<path d="M47.4962 43.4478C47.5603 43.411 47.6155 43.3607 47.658 43.3003C47.7005 43.2399 47.7293 43.1709 47.7422 43.0982C47.7422 43.0076 47.6386 42.9558 47.5868 43.0076C47.4755 43.1133 47.3757 43.2304 47.2891 43.3572C47.2891 43.4478 47.3667 43.4478 47.4962 43.4478Z" fill="#0072BC"/> -<path d="M44.9465 43.5514C45.0501 43.0982 45.3996 43.6549 45.5421 43.4478C45.4514 43.2018 45.1925 43.2018 44.9465 43.0076C44.8429 43.0982 44.8429 43.3054 44.7911 43.4478C44.7393 43.5902 44.8429 43.5514 44.9465 43.5514Z" fill="#0072BC"/> -<path d="M48.3379 43.0982V43.2018C48.3379 43.3054 48.5321 43.3572 48.6875 43.3054C48.8428 43.2536 48.4415 43.0982 48.3379 43.0982Z" fill="#0072BC"/> -<path d="M47.1485 43.3054C47.0449 43.15 46.7989 43.3054 46.6953 43.15V43.3054C46.7989 43.3054 46.9413 43.5514 47.1485 43.3054Z" fill="#0072BC"/> -<path d="M51.9382 43.9009C52.0288 43.7067 51.7828 43.7067 51.7828 43.6549C51.7828 43.6031 52.1324 43.5514 52.1842 43.3054C52.0564 43.2735 51.922 43.2798 51.7977 43.3235C51.6735 43.3672 51.5648 43.4465 51.4851 43.5514C51.4851 43.7067 51.3297 44.0045 51.4851 44.1469C51.6404 44.2894 51.7828 44.0045 51.9382 43.9009Z" fill="#0072BC"/> -<path d="M50.5391 43.5514C50.5391 44.0564 50.4355 44.4965 50.4355 45.0533C50.6815 45.2993 50.7851 44.7555 51.0311 44.7555H50.8369C50.5909 44.4059 51.0829 44.4059 51.1865 44.1081C51.0311 44.1081 50.9405 44.1081 50.8369 44.1081C50.5909 43.7068 51.1865 43.7068 51.2901 43.409C51.0311 43.2018 50.7851 43.5514 50.5391 43.5514Z" fill="#0072BC"/> -<path d="M48.8837 43.6549C48.7931 43.6549 48.8837 43.9009 49.0391 43.9009C49.1945 43.9009 49.2333 43.655 49.2851 43.4478C49.3369 43.2406 49.0391 43.5514 48.8837 43.6549Z" fill="#0072BC"/> -<path d="M44.2474 44.0563C44.351 43.7974 44.597 43.901 44.7912 43.7974C44.9854 43.6938 44.4546 43.655 44.2474 43.5514C44.1972 43.6243 44.1621 43.7066 44.1443 43.7933C44.1265 43.8801 44.1264 43.9695 44.1438 44.0563H44.2474Z" fill="#0072BC"/> -<path d="M48.0938 44.7037C48.1973 44.9497 48.6375 44.9497 48.6375 45.2992C48.5339 45.4546 48.3397 45.105 48.1973 45.2992C48.3397 45.4546 48.6375 45.8042 48.7929 45.7524C48.6893 44.9497 49.0389 44.0045 48.288 43.5514C48.0937 43.7974 48.4433 43.901 48.534 44.0045C48.534 44.4059 48.288 43.901 48.0938 44.0045C48.1973 44.3023 48.4433 44.3541 48.534 44.5483C48.6246 44.7425 48.288 44.4965 48.0938 44.7037Z" fill="#0072BC"/> -<path d="M47.5894 44.0563C47.5894 44.147 47.7448 44.0563 47.8484 43.901C47.9519 43.7456 47.8484 43.655 47.7448 43.655C47.6412 43.655 47.4988 43.901 47.5894 44.0563Z" fill="#0072BC"/> -<path d="M49.582 44.1469V44.2505C49.7108 44.2095 49.8281 44.139 49.9248 44.0446C50.0215 43.9502 50.0947 43.8345 50.1388 43.7067C49.9575 43.4478 49.841 44.0045 49.582 44.1469Z" fill="#0072BC"/> -<path d="M53.1306 44.0563C53.1306 44.147 53.2342 44.2505 53.1306 44.3541C53.0271 44.4577 53.3249 44.4965 53.3249 44.3541C53.3249 44.2117 53.4802 44.0045 53.3249 43.8492C53.1695 43.6938 53.0271 43.7456 52.8329 43.7456C52.6387 43.7456 52.6775 43.6032 52.5739 43.655C52.4703 43.7067 52.6775 43.8492 52.6775 44.0045C52.6775 44.1599 53.0789 43.901 53.1306 44.0563Z" fill="#0072BC"/> -<path d="M48.9346 44.4965C49.2324 44.4059 49.3877 44.2505 49.3877 44.0045V43.9009C49.0382 43.9009 49.0382 44.2505 48.8828 44.4059L48.9346 44.4965Z" fill="#0072BC"/> -<path d="M44.7797 44.147C44.7271 44.0956 44.6586 44.0636 44.5854 44.0563C44.5854 44.2505 44.3395 44.4059 44.4819 44.6001C44.7797 44.6001 44.702 44.3541 44.7797 44.147Z" fill="#0072BC"/> -<path d="M44.2479 44.3541C44.1869 44.2571 44.0947 44.1838 43.9864 44.1461C43.8782 44.1085 43.7604 44.1088 43.6523 44.1469C43.7217 44.2368 43.8127 44.3077 43.9168 44.353C44.021 44.3982 44.1349 44.4164 44.2479 44.4059V44.3541Z" fill="#0072BC"/> -<path d="M52.1338 44.2505C52.1338 44.3541 52.1338 44.6001 52.3798 44.4965C52.6258 44.393 52.5352 44.4965 52.3798 44.4059C52.2244 44.3153 52.2244 44.0563 52.082 44.0563L52.1338 44.2505Z" fill="#0072BC"/> -<path d="M54.0242 44.8461C54.0242 44.7037 54.2831 44.4965 54.2831 44.3541H54.1796C53.9336 44.7037 53.83 44.147 53.584 44.2506V44.4059C53.6741 44.6 53.8301 44.756 54.0242 44.8461Z" fill="#0072BC"/> -<path d="M47.5866 44.7555L47.8456 44.8461C47.8456 44.7037 47.988 44.6001 47.988 44.4059C47.988 44.2117 47.988 44.4059 47.8456 44.4059C47.7032 44.4059 47.496 44.6001 47.5866 44.7555Z" fill="#0072BC"/> -<path d="M50.4374 45.8042C50.3338 45.4028 49.9843 45.8948 49.8418 45.8042C49.7383 45.4546 50.0878 45.4546 50.1914 45.2475C50.295 45.0403 49.8936 45.2475 49.8418 45.1568C49.7383 44.8073 50.0878 44.7555 50.1914 44.5483C50.295 44.3412 49.8936 44.4577 49.8418 44.6519C49.3887 44.5483 49.2333 44.8979 48.9355 45.1568C48.9355 45.2475 48.9355 45.2475 49.0391 45.351L49.5829 45.0015C49.6089 45.2338 49.6089 45.4683 49.5829 45.7006C49.5829 46.102 49.2333 45.7006 49.0391 45.8042C48.8449 45.9078 49.2851 45.9466 49.3887 46.102C49.7383 46.1408 50.0878 45.8948 50.4374 45.8042Z" fill="#0072BC"/> -<path d="M43.6514 44.8461C43.755 44.8461 43.755 44.7037 43.8456 44.6001C43.9363 44.4965 43.4054 44.4059 43.496 44.7037C43.3018 44.7555 43.4831 44.8461 43.6514 44.8461Z" fill="#0072BC"/> -<path d="M51.6785 46.2443C51.4517 46.717 51.3072 47.2249 51.2512 47.7462C51.2619 47.7622 51.2763 47.7754 51.2932 47.7845C51.3102 47.7936 51.3291 47.7983 51.3483 47.7983C51.3676 47.7983 51.3865 47.7936 51.4034 47.7845C51.4204 47.7754 51.4348 47.7622 51.4454 47.7462L52.028 45.8948C52.0423 45.8437 52.0673 45.7961 52.1013 45.7554C52.1353 45.7146 52.1775 45.6815 52.2252 45.6583C52.2729 45.635 52.325 45.6222 52.3781 45.6205C52.4311 45.6189 52.4839 45.6285 52.533 45.6488C52.6236 45.7524 52.779 45.8041 52.779 45.9984C52.779 46.1926 52.779 46.3997 53.0768 46.3479C53.3745 46.2961 53.4781 46.2443 53.6723 46.0501C53.8665 45.8559 53.4781 46.0501 53.3745 45.8948C53.4781 45.8041 53.7241 45.8948 53.8277 45.7524C53.3745 45.5452 53.9313 45.2992 53.6723 45.105C53.5817 45.105 53.4781 45.105 53.4781 45.1956C53.3228 45.7524 53.2321 45.0532 52.9732 45.105C52.9732 45.1956 53.0768 45.2992 53.0768 45.4028C53.0768 45.5064 53.0768 45.8041 52.9732 45.8041C52.8696 45.8041 52.6236 45.4028 52.274 45.2992C52.1834 44.8461 52.7272 45.1956 52.8826 44.9496C53.0379 44.7036 52.6236 44.8461 52.4294 44.7554C52.2352 44.6648 52.1316 44.7554 51.9374 44.6001C51.4325 44.4965 52.1316 44.9496 51.9374 45.105H51.8338C51.6785 45.105 51.5879 44.9496 51.4843 45.105C51.3807 45.2604 51.9374 45.5064 51.6785 45.8041V45.7006C51.4843 45.597 51.4325 45.5064 51.2383 45.597C51.4239 45.7836 51.5731 46.0031 51.6785 46.2443Z" fill="#0072BC"/> -<path d="M45.2948 45.9984C45.1006 45.7524 45.5408 45.5452 45.4502 45.1957C45.1912 45.105 45.2948 45.4546 45.0488 45.4546C45.051 45.4066 45.0429 45.3586 45.0251 45.3139C45.0072 45.2692 44.98 45.2289 44.9452 45.1957L45.1006 44.7555C44.8416 44.4059 44.9452 45.0533 44.6992 44.9497C44.8416 45.5452 45.0488 46.0502 45.1912 46.594C45.2948 46.6975 45.3984 46.6975 45.4502 46.594C45.5019 46.4904 45.6444 46.0502 45.5408 45.8042C45.3984 45.8042 45.3984 45.9984 45.2948 45.9984Z" fill="#0072BC"/> -<path d="M44.2488 45.2992C44.3523 45.105 44.4947 44.9496 44.2488 44.8461C44.1452 44.9496 44.0028 45.105 44.1063 45.2992C44.2099 45.4934 44.2488 45.4028 44.2488 45.2992Z" fill="#0072BC"/> -<path d="M54.1773 45.4546C54.3715 45.4546 54.6304 45.1956 54.6304 45.0532C54.5268 44.9644 54.4085 44.8944 54.2808 44.8461C54.3715 45.105 53.9313 45.1956 54.1773 45.4546Z" fill="#0072BC"/> -<path d="M43.3014 45.6488C43.1978 45.1957 43.651 45.5452 43.8452 45.4028C44.0394 45.2604 43.405 45.1957 43.1072 45.105C43.0763 45.285 43.0763 45.4689 43.1072 45.6488L43.2496 45.7524C43.2676 45.7423 43.2821 45.727 43.2913 45.7085C43.3005 45.6901 43.304 45.6693 43.3014 45.6488Z" fill="#0072BC"/> -<path d="M43.8457 46.2444C43.8457 46.4904 44.2471 46.3998 44.3506 46.4904C44.4542 46.581 44.4542 46.84 44.7002 46.7493C44.7286 46.5425 44.7763 46.3388 44.8426 46.1408C44.8426 45.8042 44.4542 46.348 44.4542 45.8948C44.4542 45.7524 44.7908 45.4546 44.4542 45.4028C44.2471 45.6488 44.1046 45.8042 44.2471 46.1408C44.1435 46.348 44.0011 46.1408 43.8457 46.2444Z" fill="#0072BC"/> -<path d="M54.0234 46.0502C54.0234 46.1408 54.0234 46.2444 54.1788 46.2444C54.3625 46.1137 54.5168 45.9461 54.632 45.7524C54.6013 45.7144 54.5614 45.6849 54.516 45.6667C54.4707 45.6486 54.4214 45.6424 54.373 45.6488C54.373 45.7524 54.0234 45.8948 54.0234 46.0502Z" fill="#0072BC"/> -<path d="M53.5808 46.5939C53.4772 46.3479 53.1277 46.4903 52.8817 46.4903C52.6357 46.4903 52.7263 45.8948 52.2732 45.8948C52.1825 46.2443 52.7781 46.4903 52.5321 46.8399C52.3767 46.7493 52.2732 46.5939 52.1307 46.5939C52.1307 46.8399 52.3767 46.9435 52.3767 47.1895L51.082 49.1445V49.2869C51.132 49.344 51.201 49.3808 51.2762 49.3905C51.6705 48.6355 52.1026 47.9009 52.5709 47.1895C52.813 47.2129 53.0565 47.1633 53.2701 47.0471C53.1795 46.7493 52.9205 47.1895 52.7263 46.9435C52.5321 46.6975 53.3219 46.7493 53.5808 46.5939Z" fill="#0072BC"/> -<path d="M50.3319 48.9373C50.5391 48.0958 50.7851 47.1895 51.0311 46.2443C51.0023 46.1637 50.9467 46.0954 50.8737 46.0506C50.8007 46.0059 50.7146 45.9875 50.6297 45.9984C50.6297 46.2444 50.8887 46.4904 50.6297 46.7493C50.5391 46.7493 50.4355 46.7493 50.3319 46.7493C50.3158 46.823 50.3282 46.9 50.3666 46.9649C50.4051 47.0298 50.4667 47.0777 50.5391 47.0989L50.0859 48.8467C50.0859 48.9373 50.2801 49.0409 50.3319 48.9373Z" fill="#0072BC"/> -<path d="M48.4434 46.1408C48.534 46.348 48.6893 46.348 48.7929 46.3998C49.0389 47.1896 48.7929 48.2383 49.1425 48.9892C49.2331 49.0928 49.2849 49.0928 49.2849 48.9892C49.2932 48.0797 49.1756 47.1734 48.9353 46.2962C48.7929 46.2444 48.6635 45.9984 48.4434 46.1408Z" fill="#0072BC"/> -<path d="M53.5825 47.2931C52.728 48.5878 52.0289 49.8825 51.1355 51.1772C51.0319 51.1772 51.0319 51.0736 50.9802 51.0736C51.2424 50.5064 51.5635 49.9683 51.9382 49.4682C52.1324 48.782 52.728 48.277 52.974 47.6815L52.8834 47.5779C52.7798 47.5779 52.7798 47.5779 52.728 47.6815C51.9382 48.782 51.3297 50.0249 50.54 51.1772C50.4364 51.1772 50.3328 51.1772 50.3328 51.0736C50.3328 50.6205 50.6306 50.3745 50.6824 49.9213C50.8479 49.4201 50.9649 48.9042 51.0319 48.3806C50.6881 49.2272 50.3899 50.0915 50.1386 50.97C50.035 51.0736 49.9444 51.0736 49.8926 50.97C49.8926 49.5717 50.035 48.0828 50.035 46.6328C50.1386 46.4256 50.3846 46.4256 50.4882 46.2832C50.2422 46.076 50.035 46.2832 49.789 46.2832C49.6854 47.7721 49.6337 49.274 49.543 50.6723C49.3209 50.5706 49.0855 50.5008 48.8439 50.4651L48.2483 46.2314C48.1447 46.0243 47.9894 45.7783 47.6916 45.7783C47.6916 46.0243 47.8987 46.0243 48.0412 46.2314C48.1836 46.4386 48.2483 46.9305 48.0412 47.1765C47.834 47.4225 47.6398 46.9305 47.4456 46.7234C47.286 46.568 47.0728 46.4799 46.85 46.4774C46.9407 46.7234 47.1996 46.7234 47.342 46.9305C47.5944 48.2114 47.7459 49.5101 47.7952 50.8147C47.6449 50.8363 47.4923 50.8363 47.342 50.8147C47.1996 50.4651 46.9925 50.0767 46.85 49.6235C46.3969 49.028 46.3969 48.1217 46.0473 47.5261C45.9437 47.3319 45.8531 47.1765 45.6977 47.1765C45.5942 47.6297 46.0473 47.9793 46.1509 48.3806C46.4705 49.1593 46.7344 49.9597 46.9407 50.7758L46.85 50.9182C46.5393 50.9182 46.2933 51.0218 46.2027 50.7758C45.6954 49.7872 45.0926 48.8506 44.403 47.9793L43.9499 47.6815C43.6003 47.6815 43.9499 47.3319 43.8075 47.073C43.7163 47.0349 43.6295 46.9871 43.5485 46.9305C43.4579 46.827 43.5485 46.7234 43.7039 46.7234L43.3543 46.3738C43.2508 46.2314 43.5485 46.2832 43.5485 46.1278C43.2551 45.9379 43.0091 45.9379 42.8105 46.1278C42.8105 46.2832 43.1083 46.3738 43.1083 46.581L43.0048 46.7234C42.9012 46.9823 43.2508 46.9823 43.3543 47.1765C43.2508 47.2801 43.1601 47.2801 43.1083 47.3319C43.1083 47.6297 43.5485 47.6815 43.7039 47.7721L44.157 47.8757C44.8409 48.768 45.4107 49.7423 45.8531 50.7758C45.8531 51.0218 45.6977 51.2678 45.6977 51.6174C45.6977 51.967 45.6977 52.3165 46.0473 52.4719L45.4518 54.9059C45.4518 55.2037 45.8013 55.1131 46.0473 55.2037V55.1131C45.9437 55.0095 45.8531 54.9059 45.8013 54.9059C45.8823 54.1096 46.0472 53.3241 46.2933 52.5625C46.3969 52.4719 46.3969 52.5625 46.5005 52.5625C46.4484 52.8782 46.348 53.1838 46.2027 53.4688C46.2027 53.4688 46.2027 53.8184 46.3969 53.7148C46.5039 53.2557 46.6877 52.8179 46.9407 52.4201C47.0091 52.3945 47.0836 52.3894 47.1549 52.4055C47.2262 52.4216 47.2912 52.4582 47.342 52.5107L47.096 53.5594C47.096 53.663 47.2902 53.7666 47.342 53.7666C47.4508 53.3214 47.6026 52.8878 47.7952 52.4719C48.1447 52.3295 48.3389 52.925 48.6885 53.0675C48.5187 54.0618 48.4021 55.0644 48.3389 56.0712C48.3389 56.3172 48.6885 56.3172 48.8439 56.2654C48.9992 56.2136 48.5849 56.0712 48.5849 55.9676L48.8439 53.5206L48.9345 53.3782C49.2841 53.3782 49.543 53.171 49.789 53.0286C49.6854 52.8215 49.4395 52.5755 49.6337 52.3813C49.8279 52.1871 49.9444 52.3813 50.035 52.4719C50.2347 53.1059 50.3522 53.763 50.3846 54.4269C50.4882 54.4269 50.5917 54.5693 50.7342 54.5693L50.3846 52.4719V52.3813C50.4882 52.3813 50.5917 52.3813 50.5917 52.4719C50.837 53.3236 51.0358 54.188 51.1873 55.0613C51.1873 55.0613 50.9413 55.2167 51.0837 55.4109C51.2261 55.6051 51.3815 55.3202 51.4851 55.2167C51.6405 54.2715 50.9413 53.4688 50.8377 52.5237L50.9413 52.4201C51.0319 52.4201 51.1873 52.3295 51.2909 52.4201C51.4851 53.1192 51.7311 53.8184 51.8864 54.5175C51.8864 54.7117 51.5369 54.7117 51.7311 54.8671C51.9253 55.0225 52.0807 54.7635 52.236 54.7635C52.0807 54.0255 51.7311 53.3264 51.5369 52.5237C51.8864 52.2777 51.8347 51.6303 51.8347 51.229C51.7311 51.1254 51.5369 51.0736 51.5369 50.983C52.3266 49.6883 53.0258 48.536 53.7249 47.3837L54.5276 46.8399C54.5276 46.8399 54.5277 46.8399 54.4241 46.6846C54.0745 47.0471 53.8415 47.1895 53.5825 47.2931Z" fill="#0072BC"/> -<path d="M46.8906 46.2444C47.046 46.3479 47.292 46.6975 47.4991 46.3997C47.4242 46.313 47.3304 46.2445 47.2249 46.1997C47.1194 46.1548 47.0051 46.1346 46.8906 46.1408V46.2444Z" fill="#0072BC"/> -<path d="M53.9328 46.6975C53.8292 46.6975 53.9328 46.6975 53.9328 46.84C54.1787 46.7493 54.5283 46.6975 54.6319 46.3998C54.5351 46.3678 54.4467 46.3148 54.373 46.2444C54.373 46.594 54.0234 46.4904 53.9328 46.6975Z" fill="#0072BC"/> -<path d="M45.1931 47.7462C45.1025 47.5391 45.0507 47.1895 44.7918 47.0989C44.494 47.3967 44.248 47.0989 44.002 47.0989L43.8984 47.1895C44.1226 47.298 44.3568 47.3847 44.5976 47.4484C44.9472 47.1895 44.7788 47.8886 45.1931 47.7462Z" fill="#0072BC"/> -<path d="M45.3984 48.4842C45.6056 49.097 45.8566 49.6941 46.1493 50.2709C46.2399 50.2709 46.3435 50.3745 46.3435 50.2709C46.1064 49.5807 45.8074 48.9134 45.4502 48.2771C45.2541 48.0683 44.9852 47.9431 44.6992 47.9275C44.6992 48.3418 45.1912 48.0958 45.3984 48.4842Z" fill="#0072BC"/> -<path d="M47.2891 56.1748C47.3863 56.2529 47.4985 56.3104 47.6187 56.3438C47.7389 56.3772 47.8646 56.3858 47.9882 56.369C47.9882 56.2784 47.7422 56.2784 47.6386 56.123L47.9882 54.2845C48.0918 53.9738 48.1954 53.7278 47.9882 53.5854C47.7422 54.4269 47.5868 55.3203 47.2891 56.1748Z" fill="#0072BC"/> -<path d="M49.5828 53.7278C49.4922 53.6242 49.4922 53.8314 49.4922 53.935C49.6346 54.5305 49.4922 55.3721 49.5828 56.123C49.5858 56.1632 49.6031 56.201 49.6317 56.2296C49.6602 56.2581 49.698 56.2754 49.7382 56.2784C49.8679 55.5157 49.8679 54.7365 49.7382 53.9738C49.6346 53.935 49.7382 53.7278 49.5828 53.7278Z" fill="#0072BC"/> -<path d="M50.5391 55.7217C50.3619 55.4404 50.2886 55.1061 50.332 54.7765C50.332 54.6341 50.332 54.3234 49.9824 54.2845V54.427C50.1739 54.9358 50.21 55.4901 50.086 56.0195C50.1896 56.1748 50.332 56.123 50.4356 56.123C50.4356 55.8252 50.7851 55.9288 50.8887 55.7217C50.7851 55.5792 50.6298 55.7217 50.5391 55.7217Z" fill="#0072BC"/> -<path d="M46.4473 54.3234C46.2093 54.7935 46.0559 55.3019 45.9941 55.8252H46.3437C46.3234 55.3804 46.4076 54.9369 46.5897 54.5305C46.4861 54.4269 46.4861 54.3234 46.4473 54.3234Z" fill="#0072BC"/> -<path d="M49.2851 56.2524V54.647C49.2851 54.647 49.1427 54.5046 49.0391 54.5046C48.9355 54.9966 49.1427 55.7993 48.9355 56.3431C49.1328 56.4516 49.3616 56.4882 49.5829 56.4466C49.7383 56.2524 49.2851 56.4725 49.2851 56.2524Z" fill="#0072BC"/> -<path d="M47.0449 54.9578H46.9413C46.824 55.3335 46.7417 55.7192 46.6953 56.1101C46.7989 56.1101 46.9413 56.1101 47.0449 56.0065C46.8895 55.7216 47.2391 55.3203 47.0449 54.9578Z" fill="#0072BC"/> -<path d="M49.4913 51.3326C49.2841 51.8375 48.9346 52.5366 49.2841 53.1322C49.2121 53.1829 49.1262 53.2101 49.0382 53.2101C48.9501 53.2101 48.8642 53.1829 48.7922 53.1322C48.339 52.6791 47.847 52.1871 48.093 51.4879C48.0908 51.4109 48.105 51.3342 48.1347 51.2631C48.1644 51.1919 48.2089 51.1279 48.2652 51.0752C48.3216 51.0226 48.3884 50.9825 48.4614 50.9577C48.5344 50.9329 48.6118 50.9238 48.6886 50.9312C48.8828 51.0736 49.2841 50.9312 49.4913 51.3326Z" fill="white"/> -<path d="M47.6406 51.4879C47.4982 51.7339 47.9901 52.4331 47.291 52.3295C46.8886 52.3558 46.4848 52.3075 46.0999 52.1871C46.0999 51.8893 45.8927 51.5786 46.0999 51.3326C46.6954 51.3844 47.2392 51.242 47.6406 51.4879Z" fill="white"/> -<path d="M51.3289 51.5785C51.3289 51.8375 51.4325 52.0835 51.2383 52.2388C50.7035 52.2665 50.1676 52.2665 49.6328 52.2388C49.84 51.9411 49.6328 51.5397 49.9824 51.4361C50.4355 51.5785 51.0311 51.2419 51.3289 51.5785Z" fill="white"/> -<path d="M48.0539 47.6426L48.4294 50.6464C48.297 50.6446 48.1667 50.6806 48.0539 50.7499C47.9503 49.6494 47.8986 48.536 47.6914 47.4225C47.8986 47.4225 47.9503 47.4225 48.0539 47.6426Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.336 75L106.992 70.728H101.04L99.72 75H96.504L102.12 58.248H106.056L111.624 75H108.336ZM104.064 61.128H103.944L101.808 68.016H106.224L104.064 61.128ZM113.901 57.24H116.973V67.944H117.093L118.749 65.688L121.557 62.472H125.037L120.717 67.32L125.493 75H121.845L118.629 69.384L116.973 71.184V75H113.901V57.24ZM134.631 72.912H134.511C134.399 73.232 134.247 73.536 134.055 73.824C133.879 74.096 133.647 74.344 133.359 74.568C133.087 74.792 132.751 74.968 132.351 75.096C131.967 75.224 131.519 75.288 131.007 75.288C129.711 75.288 128.719 74.864 128.031 74.016C127.343 73.168 126.999 71.96 126.999 70.392V62.472H130.071V70.08C130.071 70.944 130.239 71.608 130.575 72.072C130.911 72.52 131.447 72.744 132.183 72.744C132.487 72.744 132.783 72.704 133.071 72.624C133.375 72.544 133.639 72.424 133.863 72.264C134.087 72.088 134.271 71.88 134.415 71.64C134.559 71.384 134.631 71.088 134.631 70.752V62.472H137.703V75H134.631V72.912ZM141.253 75V62.472H144.325V65.064H144.445C144.525 64.728 144.645 64.408 144.805 64.104C144.981 63.784 145.205 63.504 145.477 63.264C145.749 63.024 146.069 62.832 146.437 62.688C146.821 62.544 147.261 62.472 147.757 62.472H148.429V65.376H147.469C146.429 65.376 145.645 65.528 145.117 65.832C144.589 66.136 144.325 66.632 144.325 67.32V75H141.253ZM155.621 75.288C154.693 75.288 153.861 75.136 153.125 74.832C152.405 74.512 151.789 74.072 151.277 73.512C150.781 72.936 150.397 72.248 150.125 71.448C149.853 70.632 149.717 69.72 149.717 68.712C149.717 67.72 149.845 66.824 150.101 66.024C150.373 65.224 150.757 64.544 151.253 63.984C151.749 63.408 152.357 62.968 153.077 62.664C153.797 62.344 154.613 62.184 155.525 62.184C156.501 62.184 157.349 62.352 158.069 62.688C158.789 63.024 159.381 63.48 159.845 64.056C160.309 64.632 160.653 65.304 160.877 66.072C161.117 66.824 161.237 67.632 161.237 68.496V69.504H152.909V69.816C152.909 70.728 153.165 71.464 153.677 72.024C154.189 72.568 154.949 72.84 155.957 72.84C156.725 72.84 157.349 72.68 157.829 72.36C158.325 72.04 158.765 71.632 159.149 71.136L160.805 72.984C160.293 73.704 159.589 74.272 158.693 74.688C157.813 75.088 156.789 75.288 155.621 75.288ZM155.573 64.488C154.757 64.488 154.109 64.76 153.629 65.304C153.149 65.848 152.909 66.552 152.909 67.416V67.608H158.045V67.392C158.045 66.528 157.829 65.832 157.397 65.304C156.981 64.76 156.373 64.488 155.573 64.488ZM171.479 62.472H174.359L169.319 77.232C169.159 77.68 168.975 78.064 168.767 78.384C168.575 78.72 168.343 78.992 168.071 79.2C167.799 79.408 167.471 79.56 167.087 79.656C166.703 79.752 166.255 79.8 165.743 79.8H163.895V77.352H166.151L166.727 75.6L162.239 62.472H165.287L167.471 69.096L168.287 72.264H168.431L169.295 69.096L171.479 62.472ZM176.385 75V62.472H179.457V65.064H179.577C179.657 64.728 179.777 64.408 179.937 64.104C180.113 63.784 180.337 63.504 180.609 63.264C180.881 63.024 181.201 62.832 181.569 62.688C181.953 62.544 182.393 62.472 182.889 62.472H183.561V65.376H182.601C181.561 65.376 180.777 65.528 180.249 65.832C179.721 66.136 179.457 66.632 179.457 67.32V75H176.385ZM187.343 60.648C186.703 60.648 186.239 60.504 185.951 60.216C185.679 59.928 185.543 59.56 185.543 59.112V58.632C185.543 58.184 185.679 57.816 185.951 57.528C186.239 57.24 186.703 57.096 187.343 57.096C187.967 57.096 188.423 57.24 188.711 57.528C188.999 57.816 189.143 58.184 189.143 58.632V59.112C189.143 59.56 188.999 59.928 188.711 60.216C188.423 60.504 187.967 60.648 187.343 60.648ZM185.807 62.472H188.879V75H185.807V62.472Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/arborg.svg b/libs/application/templates/financial-aid/src/svg/arborg.svg deleted file mode 100644 index dfb7b16f5b99..000000000000 --- a/libs/application/templates/financial-aid/src/svg/arborg.svg +++ /dev/null @@ -1,7 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M18.0273 22.1689H76.6316V67.4073L65.8361 84.3717L47.8436 94.1391L29.3369 84.3717L18.0273 67.4073V22.1689Z" fill="white"/> -<path d="M39.4444 29.7977V40.0586H43.5776V29.7977H39.4444ZM51.6588 29.7977V40.0586H55.7919V29.7977H51.6588ZM45.1403 25.1813V40.0689H50.1063V25.1813H45.1403ZM61.4056 85.8111C69.6822 79.4057 75.7277 70.2758 75.7277 59.2335V42.6084H51.2578C51.1858 42.6907 51.1447 42.7729 51.155 42.8552C51.227 43.688 58.4343 43.8319 58.9895 45.8985C59.668 48.4277 51.7205 49.3222 51.8439 50.7308C52.0495 53.0441 71.759 53.3525 55.8022 60.3748C53.674 61.3104 52.8103 61.7422 52.8823 62.6367C53.0262 64.2612 66.3201 65.9884 66.3201 72.1367C66.3201 77.5551 59.1951 80.1563 59.1951 82.7369C59.1951 83.8679 60.0073 84.8343 61.4056 85.8111ZM19.519 42.6084V59.2335C19.519 68.055 23.3745 75.6427 29.1424 81.606C32.926 76.4241 41.6755 74.6865 41.84 72.3424C42.0765 69.186 31.6202 68.9084 32.8746 63.891C34.1906 58.6166 49.9726 57.6193 41.182 55.1723C38.8275 54.5143 35.4449 53.5582 35.9179 51.6869C36.5862 49.0138 44.5337 47.9548 44.6263 46.7416C44.7085 45.6312 37.4087 45.7134 37.933 43.616C38.0256 43.2356 38.3546 42.9066 38.807 42.5981H19.519V42.6084ZM47.6182 16H78.2364V59.2335C78.2364 77.1027 63.4002 90.8284 47.6182 96C31.8361 90.8181 17 77.1027 17 59.2335V16H47.6182Z" fill="#012D98"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.336 75L106.992 70.728H101.04L99.72 75H96.504L102.12 58.248H106.056L111.624 75H108.336ZM104.064 61.128H103.944L101.808 68.016H106.224L104.064 61.128ZM104.328 57.144L102.48 56.232L104.76 51.744L107.352 53.04L104.328 57.144ZM113.901 75V62.472H116.973V65.064H117.093C117.173 64.728 117.293 64.408 117.453 64.104C117.629 63.784 117.853 63.504 118.125 63.264C118.397 63.024 118.717 62.832 119.085 62.688C119.469 62.544 119.909 62.472 120.405 62.472H121.077V65.376H120.117C119.077 65.376 118.293 65.528 117.765 65.832C117.237 66.136 116.973 66.632 116.973 67.32V75H113.901ZM123.323 57.24H126.395V64.536H126.491C126.715 63.816 127.139 63.248 127.763 62.832C128.387 62.4 129.115 62.184 129.947 62.184C131.547 62.184 132.763 62.752 133.595 63.888C134.443 65.008 134.867 66.616 134.867 68.712C134.867 70.824 134.443 72.448 133.595 73.584C132.763 74.72 131.547 75.288 129.947 75.288C129.115 75.288 128.387 75.072 127.763 74.64C127.155 74.208 126.731 73.632 126.491 72.912H126.395V75H123.323V57.24ZM128.963 72.744C129.763 72.744 130.411 72.48 130.907 71.952C131.403 71.424 131.651 70.712 131.651 69.816V67.656C131.651 66.76 131.403 66.048 130.907 65.52C130.411 64.976 129.763 64.704 128.963 64.704C128.227 64.704 127.611 64.888 127.115 65.256C126.635 65.624 126.395 66.112 126.395 66.72V70.704C126.395 71.36 126.635 71.864 127.115 72.216C127.611 72.568 128.227 72.744 128.963 72.744ZM142.682 75.288C141.786 75.288 140.978 75.136 140.258 74.832C139.554 74.528 138.946 74.088 138.434 73.512C137.938 72.936 137.554 72.248 137.282 71.448C137.01 70.632 136.874 69.72 136.874 68.712C136.874 67.704 137.01 66.8 137.282 66C137.554 65.2 137.938 64.52 138.434 63.96C138.946 63.384 139.554 62.944 140.258 62.64C140.978 62.336 141.786 62.184 142.682 62.184C143.578 62.184 144.386 62.336 145.106 62.64C145.826 62.944 146.434 63.384 146.93 63.96C147.442 64.52 147.834 65.2 148.106 66C148.378 66.8 148.514 67.704 148.514 68.712C148.514 69.72 148.378 70.632 148.106 71.448C147.834 72.248 147.442 72.936 146.93 73.512C146.434 74.088 145.826 74.528 145.106 74.832C144.386 75.136 143.578 75.288 142.682 75.288ZM142.682 72.816C143.498 72.816 144.138 72.568 144.602 72.072C145.066 71.576 145.298 70.848 145.298 69.888V67.56C145.298 66.616 145.066 65.896 144.602 65.4C144.138 64.904 143.498 64.656 142.682 64.656C141.882 64.656 141.25 64.904 140.786 65.4C140.322 65.896 140.09 66.616 140.09 67.56V69.888C140.09 70.848 140.322 71.576 140.786 72.072C141.25 72.568 141.882 72.816 142.682 72.816ZM151.237 75V62.472H154.309V65.064H154.429C154.509 64.728 154.629 64.408 154.789 64.104C154.965 63.784 155.189 63.504 155.461 63.264C155.733 63.024 156.053 62.832 156.421 62.688C156.805 62.544 157.245 62.472 157.741 62.472H158.413V65.376H157.453C156.413 65.376 155.629 65.528 155.101 65.832C154.573 66.136 154.309 66.632 154.309 67.32V75H151.237ZM171.564 76.056C171.564 76.712 171.444 77.288 171.204 77.784C170.98 78.296 170.604 78.72 170.076 79.056C169.548 79.392 168.868 79.648 168.036 79.824C167.204 80 166.188 80.088 164.988 80.088C163.932 80.088 163.036 80.016 162.3 79.872C161.564 79.744 160.956 79.552 160.476 79.296C160.012 79.056 159.676 78.752 159.468 78.384C159.26 78.016 159.156 77.6 159.156 77.136C159.156 76.432 159.348 75.88 159.732 75.48C160.132 75.096 160.684 74.848 161.388 74.736V74.472C160.876 74.344 160.476 74.096 160.188 73.728C159.916 73.344 159.78 72.896 159.78 72.384C159.78 72.064 159.844 71.784 159.972 71.544C160.1 71.288 160.268 71.072 160.476 70.896C160.7 70.72 160.948 70.576 161.22 70.464C161.492 70.336 161.78 70.24 162.084 70.176V70.08C161.316 69.728 160.74 69.24 160.356 68.616C159.988 67.992 159.804 67.264 159.804 66.432C159.804 65.152 160.244 64.128 161.124 63.36C162.004 62.576 163.292 62.184 164.988 62.184C165.372 62.184 165.748 62.208 166.116 62.256C166.5 62.304 166.852 62.384 167.172 62.496V62.088C167.172 60.872 167.764 60.264 168.948 60.264H170.892V62.616H168.228V62.952C168.884 63.32 169.372 63.8 169.692 64.392C170.012 64.984 170.172 65.664 170.172 66.432C170.172 67.696 169.732 68.712 168.852 69.48C167.988 70.248 166.7 70.632 164.988 70.632C164.252 70.632 163.612 70.56 163.068 70.416C162.828 70.528 162.62 70.68 162.444 70.872C162.268 71.048 162.18 71.272 162.18 71.544C162.18 72.168 162.724 72.48 163.812 72.48H167.172C168.708 72.48 169.82 72.8 170.508 73.44C171.212 74.064 171.564 74.936 171.564 76.056ZM168.684 76.416C168.684 76.016 168.524 75.704 168.204 75.48C167.884 75.256 167.332 75.144 166.548 75.144H162.276C161.844 75.464 161.628 75.896 161.628 76.44C161.628 76.92 161.828 77.296 162.228 77.568C162.628 77.84 163.308 77.976 164.268 77.976H165.804C166.812 77.976 167.54 77.848 167.988 77.592C168.452 77.336 168.684 76.944 168.684 76.416ZM164.988 68.544C166.492 68.544 167.244 67.904 167.244 66.624V66.216C167.244 64.936 166.492 64.296 164.988 64.296C163.484 64.296 162.732 64.936 162.732 66.216V66.624C162.732 67.904 163.484 68.544 164.988 68.544Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/arneshreppur.svg b/libs/application/templates/financial-aid/src/svg/arneshreppur.svg deleted file mode 100644 index 7ceafa748733..000000000000 --- a/libs/application/templates/financial-aid/src/svg/arneshreppur.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M48 93C68.4345 93 85 76.4345 85 56C85 35.5655 68.4345 19 48 19C27.5655 19 11 35.5655 11 56C11 76.4345 27.5655 93 48 93Z" fill="#01208D"/> -<path d="M23.9443 66.6279C23.6093 65.7447 22.8784 65.1052 22.2998 64.283C22.7871 64.1917 23.0916 64.3744 23.3352 64.5875C23.6093 64.8312 23.9443 65.1052 24.1879 64.5875C24.3706 64.2526 24.6447 63.7958 24.2184 63.4913C22.5739 62.3036 22.8175 60.2937 22.3608 58.6797C22.0258 57.553 21.9649 56.2435 21.7517 55.0254C21.4167 53.0764 21.9344 51.1884 22.1171 49.3003C22.4521 46.2246 23.9747 43.7275 25.8019 41.3522C26.1064 40.9258 25.8324 40.195 26.5632 39.9818C27.02 41.474 27.7204 41.5044 29.2126 40.1036C26.5632 39.6468 28.2686 37.6978 27.9945 36.297C27.3245 36.7234 27.4464 37.302 27.355 37.7892C27.2636 38.3373 27.5682 39.2205 26.7764 39.3118C26.076 39.4032 25.3451 38.5505 25.2842 38.0937C25.071 35.9316 24.7361 33.7999 25.4365 31.6073C25.8628 30.2674 26.8982 29.232 27.0505 27.7703C27.0809 27.5875 26.8373 27.1003 27.3854 27.1917C27.7204 27.2526 27.9031 27.4353 28.025 27.7398C28.969 30.2674 30.1566 32.6122 32.4406 34.2567C33.141 34.7439 33.6282 35.4748 32.3797 36.1752C31.6488 36.6015 30.8875 37.1497 30.4003 37.9415C30.2175 38.246 30.0348 38.6419 30.4003 38.8855C30.6439 39.0682 30.918 38.855 31.192 38.7332C33.0801 37.9719 34.5418 36.4493 36.4908 35.8402C39.4447 34.9266 42.4291 34.8657 45.383 35.8402C45.9007 36.0229 46.0834 36.3884 46.0529 36.8756C45.8398 39.6468 45.4134 42.3875 43.8908 44.8238C43.434 45.5242 42.8859 45.3719 42.3073 45.3719C38.7138 45.4937 36.1863 47.5645 35.5468 51.0057C37.6784 51.3102 39.7492 50.9447 41.7896 50.3357C42.2159 50.2139 42.5813 50.153 42.6727 49.6657C42.9772 48.4476 43.6472 47.4427 44.6826 46.8032C45.3525 46.3768 45.1394 45.7982 45.1089 45.3415C45.0175 44.3061 45.4439 43.4534 45.9311 42.6312C46.0529 42.4485 46.3575 42.2353 46.5402 42.2657C46.8752 42.2962 46.9361 42.6312 46.9361 42.9661C46.9361 43.7579 46.8143 44.5801 47.3929 45.3719C47.9715 44.4279 48.0628 43.4534 47.7583 42.5094C47.3928 41.4131 47.8801 40.4081 47.7583 39.3423C47.6974 38.7941 48.0933 38.8246 48.4282 39.0682C49.0373 39.4945 49.1591 40.1341 49.1287 40.804C49.0982 41.6262 49.0982 42.418 49.1287 43.2402C49.1287 43.5447 48.9764 44.0929 49.4636 44.0929C49.9509 44.1234 50.0727 43.6057 50.0422 43.2098C49.9509 42.0526 50.0118 40.8345 49.6464 39.7686C49.0373 38.1242 49.0373 36.1752 47.4538 34.9266C47.2406 34.7744 47.0883 34.4089 47.0883 34.1349C47.0579 33.6476 46.9361 32.9472 47.4842 32.7645C48.0324 32.5818 48.1846 33.3127 48.3369 33.6476C48.885 35.018 50.1336 35.962 50.5295 37.3933C50.834 38.4592 51.3517 39.5859 51.3822 40.6213C51.4735 43.3011 52.6916 45.8896 52.0826 48.6303C52.6307 47.8081 53.118 46.9859 53.0571 45.981C52.9657 44.2756 53.3616 42.5398 52.8439 40.8345C52.7525 40.4995 52.8743 40.2254 53.1484 40.0731C53.5443 39.86 53.9402 39.9513 54.2752 40.195C56.1328 41.5653 57.8077 43.1184 59.3912 44.7933C61.1879 46.6814 63.0151 48.8435 66.0908 48.7826C67.918 48.7522 69.5015 47.9299 70.7805 46.8641C71.5723 46.1941 72.1509 44.8847 72.1509 43.7275C72.1509 42.8139 72.1509 41.7785 71.3591 40.9258C70.9023 40.4081 70.476 40.2559 69.8365 40.2254C67.5221 40.0731 65.2381 40.469 62.9237 40.2863C60.518 40.1036 58.569 38.7028 56.3155 38.0937C56.1328 38.0328 56.0414 37.6065 55.7978 37.2106C56.7418 37.2106 57.5336 37.1801 58.3254 37.2106C60.0003 37.241 61.127 36.1447 62.1624 35.1703C63.1064 34.3176 62.2842 33.3736 61.1879 32.5818C62.9846 32.1554 64.5377 31.4855 66.0908 32.734C66.5171 33.0995 67.0957 33.069 67.4612 32.6427C67.9484 32.0336 67.3394 31.8509 67.0044 31.4855C65.3599 29.8106 63.3196 28.8057 61.0661 28.3184C59.5435 28.0139 58.5385 26.5217 56.8636 26.674C56.3764 26.7044 55.8587 26.5826 55.3105 26.674C56.4678 27.6485 57.29 29.0493 59.2085 28.8361C59.7566 28.7752 60.7616 29.0797 60.8529 29.902C60.9443 30.8155 59.8175 30.8764 59.3912 31.455C59.3608 31.4855 59.2389 31.5159 59.178 31.4855C57.8381 30.3283 56.3155 30.1456 54.6101 30.3892C53.9097 30.4806 54.3665 29.8106 54.3665 29.4756C55.0974 29.3538 55.341 28.7448 55.6151 28.1662C55.6455 28.1357 55.4019 27.8921 55.341 27.8921C54.5797 28.0139 54.3361 28.5925 54.1838 29.232C53.5138 29.8106 53.0266 31.3637 51.8998 30.3283C50.8036 29.3234 52.2653 28.6534 52.7525 27.9225C53.057 27.4657 53.4225 27.0699 54.0315 26.3694C51.3517 26.3085 48.9459 26.004 46.5402 26.8871C48.0933 26.8871 49.6463 26.8871 51.1994 26.8871C51.5649 26.8871 52.1435 26.6435 52.2957 27.1003C52.4785 27.7398 51.6867 27.9225 51.4126 28.3793C51.169 28.7448 50.8645 28.7752 50.5295 28.4707C49.1896 27.1612 48.4891 27.618 47.271 28.9884C45.8702 30.6024 43.6472 31.1201 41.3937 30.3283C40.6933 30.0847 39.9624 29.5974 39.2924 30.6024C39.0184 30.9982 37.9221 31.2723 37.648 30.5415C37.3435 29.7192 37.5262 28.5925 38.4702 28.1966C40.9369 27.1003 43.434 26.1258 46.1443 25.5168C49.0982 24.8773 52.1435 25.3341 55.006 24.2073C55.4933 24.0246 56.1937 24.0246 56.6505 24.2378C58.4167 25.0295 60.4266 25.0295 62.071 26.1867C62.4669 26.4608 62.9846 26.7349 63.4719 26.7349C66.6085 26.8262 68.5879 28.9275 70.6587 30.7851C71.9073 31.9118 73.3385 32.795 74.5566 34.0435C76.4142 35.9925 77.2669 38.3069 78.0587 40.7127C78.6982 42.7225 78.5764 44.702 78.211 46.8032C77.9369 48.5085 77.8151 50.1225 76.8406 51.6452C74.9525 54.5991 72.1509 56.3044 68.9533 56.8221C66.2431 57.2789 63.411 56.6394 60.7007 55.4822C58.3558 54.4773 56.62 52.8937 54.8842 51.2188C54.1229 50.4575 53.1484 50.2748 52.2957 49.7571C51.7171 49.4221 51.3517 50.153 51.2299 50.7011C50.9558 51.8888 50.6513 53.046 50.0422 54.1118C49.6463 54.8122 49.4027 55.5126 48.3978 54.7818C47.8801 54.3859 47.5756 54.9036 47.3929 55.3299C47.271 55.604 47.2101 56.0303 47.6669 55.9999C49.9813 55.9085 49.0373 57.8271 48.7328 58.3143C47.4233 60.3546 48.276 62.3645 48.5501 64.3744C48.7023 65.5011 49.9509 65.6534 50.8036 65.5011C54.8842 64.8921 58.9953 65.3793 63.076 65.1357C63.685 65.1052 64.2636 65.2575 64.8422 65.4098C67.5525 66.1102 70.3846 65.7447 73.0949 66.6279C74.7393 67.176 76.5056 66.7497 78.211 66.567C79.2159 66.4756 80.1904 66.5365 81.104 66.9933C82.1089 67.4806 82.0175 68.0287 81.3476 68.8509C79.7945 70.8303 77.5714 71.683 75.4093 72.7184C72.4859 74.1497 69.4101 75.3069 66.913 77.5604C65.9081 78.4435 64.6595 78.3217 63.4414 77.4995C62.5278 76.8904 61.5838 76.4336 60.4875 77.5299C59.4217 78.5958 59.3303 79.5703 60.1221 80.7275C60.4875 81.2756 60.8225 81.9456 60.2134 82.311C59.4217 82.7373 58.6908 83.8032 57.564 83.0114C57.2595 82.7982 57.0159 82.5242 56.7114 82.3719C55.4628 81.702 54.2752 81.3365 52.7221 81.4279C49.3723 81.6715 45.9311 82.1283 42.5813 81.4888C41.2414 81.2147 39.9319 80.6666 38.592 80.2098C38.257 80.088 37.2217 79.8748 37.983 78.8699C38.257 78.5044 37.5262 78.5958 37.2521 78.5349C34.2068 77.7736 31.0398 77.9563 27.964 76.8904C23.7616 75.4287 20.8686 72.6575 18.4324 69.1554C17.397 67.6633 16.2702 66.2015 15.4175 64.5571C15.1739 64.1308 14.8085 63.7044 14.778 63.2172C14.7171 61.4205 14.5344 59.6238 14.0776 57.8575C13.9863 57.5225 13.9254 57.0657 14.3517 56.548C15.6003 58.3752 17.1229 59.9283 17.9756 61.9686C18.2801 62.6995 18.4019 63.5217 19.2241 63.9176C19.3155 64.0699 19.3764 64.2221 19.4678 64.3744C19.5287 64.3135 19.5896 64.283 19.6505 64.2221C19.4982 64.1308 19.3459 64.0089 19.2241 63.9176C19.4373 63.0954 18.4933 62.669 18.4933 61.6641C19.8027 62.395 21.0513 62.6995 21.5994 64.3135C21.904 65.2271 23.0307 65.897 23.7616 66.6888C23.8529 66.7801 23.9443 66.902 24.0357 66.9933C24.2184 67.2065 24.4315 67.4196 24.6143 67.6328C24.6752 67.6937 24.797 67.8155 24.797 67.7851C24.9492 67.6633 24.9188 67.5719 24.7665 67.4501C24.6752 67.1456 24.4924 66.9324 24.1575 66.8715C24.1575 66.841 24.0357 66.7192 23.9443 66.6279ZM26.5937 69.46C26.6546 69.5818 26.6241 69.8254 26.8373 69.5818C26.7459 69.5513 26.6546 69.5209 26.5937 69.46C26.5328 69.4295 26.5023 69.3686 26.4414 69.3077C26.4414 69.3382 26.4414 69.3991 26.4719 69.3991C26.5023 69.46 26.5328 69.46 26.5937 69.46ZM28.7254 70.9826C28.7254 71.1044 28.7558 71.2567 28.7558 71.3785C28.8167 71.348 28.8776 71.3176 28.9081 71.2871C28.8776 71.1958 28.7863 71.1044 28.7254 70.9826C28.5731 70.739 28.3599 70.6476 28.0859 70.7085C28.1468 70.2517 27.8118 70.1604 27.4768 70.0995C27.4159 70.0386 27.4159 69.7645 27.2332 70.0386C27.3245 70.069 27.3854 70.069 27.4768 70.0995C27.4464 70.5258 27.7204 70.6476 28.0859 70.7085C28.2381 70.9522 28.4513 71.0435 28.7254 70.9826ZM28.4208 67.6328C28.6949 67.9982 28.9385 68.3637 29.4562 68.0592C29.1822 67.7242 28.7863 67.6633 28.4208 67.6328C28.2381 67.0542 27.8118 66.8715 27.0505 66.7801C27.5073 67.3587 27.9336 67.5415 28.4208 67.6328ZM43.4949 29.7497C44.2258 29.5974 44.7739 29.2624 44.8348 28.4402C44.8348 28.3489 44.6826 28.1357 44.6217 28.1357C43.9517 28.2575 43.769 28.8666 43.434 29.3234C43.3731 29.4147 43.3426 29.5061 43.2817 29.567C43.0686 29.6888 42.9163 29.8715 43.1599 30.1151C43.2513 29.9933 43.3731 29.8715 43.4949 29.7497ZM67.0348 71.6221C68.0093 71.3785 68.0398 70.4649 67.7048 69.9777C67.0957 69.1554 66.4562 68.2723 64.9945 68.7291C63.6241 69.1554 63.1978 69.8863 63.4414 71.1349C63.5937 71.9875 64.0809 73.0534 64.9336 72.962C65.634 72.8707 66.9435 72.9316 67.0348 71.6221ZM70.1105 35.9925C69.7756 35.5357 69.5319 34.5917 68.8315 35.2007C68.2834 35.6575 67.8875 35.5357 67.3394 35.5052C66.5171 35.4748 65.6645 35.2312 64.8422 35.5357C64.8422 35.688 64.8422 35.8098 64.8422 35.962C66.578 35.9925 68.3443 35.9925 70.1105 35.9925C70.5369 37.1497 71.7245 37.6978 72.3336 38.7941C72.6077 39.2814 72.3336 40.0731 73.1558 40.2559C73.7649 40.4081 73.7344 40.8649 73.7649 41.4131C73.8258 42.7834 74.0085 44.1538 74.2217 45.5242C74.2826 45.8592 74.313 46.3464 74.8916 46.3464C75.5616 46.3464 75.6225 45.8287 75.6834 45.4024C75.8356 43.9102 75.3484 42.5094 74.9525 41.0781C74.4348 39.1291 72.8208 37.8806 71.9986 36.1143C71.755 35.5966 71.4809 35.018 70.8414 35.0789C70.0801 35.1703 71.2373 35.7184 70.7196 35.9316C70.5064 36.0534 70.2933 35.9925 70.1105 35.9925ZM34.9986 52.0715C34.9377 52.4978 34.8463 52.8024 34.8768 53.1069C35.3031 55.9694 36.5517 58.4361 38.5311 60.5678C39.5665 61.6945 40.9978 62.1818 42.2159 62.9431C43.4645 63.7349 44.9871 64.1308 46.3575 64.7398C46.6315 64.8616 46.8143 64.8616 46.997 64.6484C47.271 64.3439 46.9056 64.2221 46.7838 64.0699C45.8398 62.9736 44.5303 62.1818 43.2817 62.0295C41.82 61.8468 41.5155 61.2378 41.211 60.0501C40.7542 58.1925 40.2974 56.1826 38.6529 55.0559C37.3739 54.1423 36.4299 52.9242 34.9986 52.0715ZM37.2521 74.1497C38.0134 75.0633 38.7138 75.8855 39.3838 76.7077C38.7138 75.8246 39.6579 73.5406 37.2521 74.1497ZM65.3904 54.4164C66.8521 55.3299 67.9789 54.4468 69.1056 53.9596C67.918 54.0814 66.7303 54.2336 65.3904 54.4164ZM27.7813 32.46C26.9287 33.069 26.6241 34.0131 25.9846 35.1703C27.355 34.4699 27.2332 33.2517 27.7813 32.46ZM73.4299 50.5793C72.7295 50.8229 72.0595 51.097 71.6941 51.9497C72.7904 51.9497 73.1254 51.2797 73.4299 50.5793ZM26.7459 66.6583L26.8068 66.567H26.685L26.7459 66.6583Z" fill="#9EA5AC"/> -<path d="M63.5601 61.6642C62.1897 60.4156 59.9362 61.8164 58.5963 60.0502C58.3831 59.7761 57.8654 59.5629 57.5 59.8065C57.1041 60.0806 57.2868 60.5374 57.4391 60.9333C57.4695 61.0247 57.5304 61.116 57.5913 61.2074C57.835 61.7555 58.2918 62.4864 57.7436 62.8823C57.165 63.2782 56.556 62.6996 56.0687 62.2732C53.2671 59.837 52.2012 56.7613 52.8103 53.107C52.8712 52.6806 53.0539 52.102 53.3584 51.9498C53.9066 51.6452 54.3025 52.2543 54.5765 52.6197C56.0383 54.5991 58.1395 55.9086 59.8753 57.614C61.6415 59.3193 64.1082 59.8065 66.4531 60.4156C66.7881 60.507 67.2753 60.507 67.2753 60.9333C67.2753 61.451 66.7271 61.2683 66.4226 61.2683C65.4481 61.2074 64.565 61.3292 63.5601 61.6642Z" fill="#9EA5AC"/> -<path d="M33.6545 82.4025C31.1573 82.3416 28.6602 82.2502 26.1936 82.8593C25.2191 83.1029 25.0363 82.1284 24.3359 81.6412C25.0059 81.2453 25.5236 81.2148 26.1936 81.2453C28.9343 81.3366 31.7664 81.9457 34.2331 79.9358C35.3294 79.0222 36.1516 79.8445 36.7911 80.7885C36.9433 81.0321 36.7911 81.5194 37.187 81.5194C37.9483 81.5194 38.8619 80.5144 39.2273 82.2502C39.3796 83.0115 40.9936 82.1284 41.7549 83.042C42.0594 83.377 42.9121 82.6766 43.6125 82.8288C44.0693 82.9202 44.6479 82.9811 44.7392 83.4074C44.8306 84.0165 44.1911 83.9556 43.7647 84.0469C41.7549 84.4428 39.9277 85.6 37.8265 85.6609C37.1565 85.6914 36.517 85.8436 35.8775 85.8132C35.2684 85.7827 34.1722 86.27 34.3853 84.8083C34.4158 84.656 33.8067 83.8338 32.9845 84.1383C31.7664 84.5342 30.4569 84.2601 29.2084 84.3515C28.9038 84.3819 28.6298 84.321 28.3557 84.1383C28.0512 83.9556 27.6248 83.8642 27.6553 83.4379C27.6857 82.9506 28.2339 82.9811 28.4775 82.9506C30.0915 82.7984 31.7359 83.0115 33.3499 82.5243C33.4108 82.5243 33.5326 82.4634 33.6545 82.4025Z" fill="#9EA5AC"/> -<path d="M63.8633 31.3639C62.8279 31.3943 62.0056 31.7293 61.153 32.0034C60.8789 32.0947 60.5135 32.0947 60.3612 31.7597C60.2089 31.3943 60.5135 31.303 60.7571 31.0898C61.8229 30.1458 62.7974 29.9326 63.8633 31.3639Z" fill="#9EA5AC"/> -<path d="M67.0651 71.5918C66.6083 71.5308 66.182 71.6831 65.7557 71.8049C65.0857 72.0181 64.3548 71.9572 64.1721 71.1654C63.9894 70.4041 64.6898 70.0387 65.2989 69.8255C65.9079 69.5819 66.4256 69.8864 66.8824 70.3432C67.3392 70.8 67.4001 71.135 67.0651 71.5918C67.0347 71.6222 67.0651 71.5918 67.0651 71.5918Z" fill="#9EA5AC"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.336 75L106.992 70.728H101.04L99.72 75H96.504L102.12 58.248H106.056L111.624 75H108.336ZM104.064 61.128H103.944L101.808 68.016H106.224L104.064 61.128ZM104.328 57.144L102.48 56.232L104.76 51.744L107.352 53.04L104.328 57.144ZM113.901 75V62.472H116.973V65.064H117.093C117.173 64.728 117.293 64.408 117.453 64.104C117.629 63.784 117.853 63.504 118.125 63.264C118.397 63.024 118.717 62.832 119.085 62.688C119.469 62.544 119.909 62.472 120.405 62.472H121.077V65.376H120.117C119.077 65.376 118.293 65.528 117.765 65.832C117.237 66.136 116.973 66.632 116.973 67.32V75H113.901ZM123.323 75V62.472H126.395V64.56H126.515C126.771 63.888 127.171 63.328 127.715 62.88C128.275 62.416 129.043 62.184 130.019 62.184C131.315 62.184 132.307 62.608 132.995 63.456C133.683 64.304 134.027 65.512 134.027 67.08V75H130.955V67.392C130.955 66.496 130.795 65.824 130.475 65.376C130.155 64.928 129.627 64.704 128.891 64.704C128.571 64.704 128.259 64.752 127.955 64.848C127.667 64.928 127.403 65.056 127.163 65.232C126.939 65.392 126.755 65.6 126.611 65.856C126.467 66.096 126.395 66.384 126.395 66.72V75H123.323ZM142.496 75.288C141.568 75.288 140.736 75.136 140 74.832C139.28 74.512 138.664 74.072 138.152 73.512C137.656 72.936 137.272 72.248 137 71.448C136.728 70.632 136.592 69.72 136.592 68.712C136.592 67.72 136.72 66.824 136.976 66.024C137.248 65.224 137.632 64.544 138.128 63.984C138.624 63.408 139.232 62.968 139.952 62.664C140.672 62.344 141.488 62.184 142.4 62.184C143.376 62.184 144.224 62.352 144.944 62.688C145.664 63.024 146.256 63.48 146.72 64.056C147.184 64.632 147.528 65.304 147.752 66.072C147.992 66.824 148.112 67.632 148.112 68.496V69.504H139.784V69.816C139.784 70.728 140.04 71.464 140.552 72.024C141.064 72.568 141.824 72.84 142.832 72.84C143.6 72.84 144.224 72.68 144.704 72.36C145.2 72.04 145.64 71.632 146.024 71.136L147.68 72.984C147.168 73.704 146.464 74.272 145.568 74.688C144.688 75.088 143.664 75.288 142.496 75.288ZM142.448 64.488C141.632 64.488 140.984 64.76 140.504 65.304C140.024 65.848 139.784 66.552 139.784 67.416V67.608H144.92V67.392C144.92 66.528 144.704 65.832 144.272 65.304C143.856 64.76 143.248 64.488 142.448 64.488ZM154.919 75.288C153.719 75.288 152.711 75.088 151.895 74.688C151.079 74.272 150.359 73.704 149.735 72.984L151.607 71.16C152.071 71.688 152.575 72.104 153.119 72.408C153.679 72.712 154.319 72.864 155.039 72.864C155.775 72.864 156.303 72.736 156.623 72.48C156.959 72.224 157.127 71.872 157.127 71.424C157.127 71.056 157.007 70.768 156.767 70.56C156.543 70.336 156.151 70.184 155.591 70.104L154.343 69.936C152.983 69.76 151.943 69.376 151.223 68.784C150.519 68.176 150.167 67.296 150.167 66.144C150.167 65.536 150.279 64.992 150.503 64.512C150.727 64.016 151.047 63.6 151.463 63.264C151.879 62.912 152.375 62.648 152.951 62.472C153.543 62.28 154.199 62.184 154.919 62.184C155.527 62.184 156.063 62.232 156.527 62.328C157.007 62.408 157.439 62.536 157.823 62.712C158.207 62.872 158.559 63.08 158.879 63.336C159.199 63.576 159.511 63.848 159.815 64.152L158.015 65.952C157.647 65.568 157.207 65.248 156.695 64.992C156.183 64.736 155.623 64.608 155.015 64.608C154.343 64.608 153.855 64.728 153.551 64.968C153.263 65.208 153.119 65.52 153.119 65.904C153.119 66.32 153.239 66.64 153.479 66.864C153.735 67.072 154.159 67.224 154.751 67.32L156.023 67.488C158.727 67.872 160.079 69.104 160.079 71.184C160.079 71.792 159.951 72.352 159.695 72.864C159.455 73.36 159.111 73.792 158.663 74.16C158.215 74.512 157.671 74.792 157.031 75C156.407 75.192 155.703 75.288 154.919 75.288ZM162.792 57.24H165.864V64.56H165.984C166.24 63.888 166.64 63.328 167.184 62.88C167.744 62.416 168.512 62.184 169.488 62.184C170.784 62.184 171.776 62.608 172.464 63.456C173.152 64.304 173.496 65.512 173.496 67.08V75H170.424V67.392C170.424 66.496 170.264 65.824 169.944 65.376C169.624 64.928 169.096 64.704 168.36 64.704C168.04 64.704 167.728 64.752 167.424 64.848C167.136 64.928 166.872 65.056 166.632 65.232C166.408 65.392 166.224 65.6 166.08 65.856C165.936 66.096 165.864 66.384 165.864 66.72V75H162.792V57.24ZM176.901 75V62.472H179.973V65.064H180.093C180.173 64.728 180.293 64.408 180.453 64.104C180.629 63.784 180.853 63.504 181.125 63.264C181.397 63.024 181.717 62.832 182.085 62.688C182.469 62.544 182.909 62.472 183.405 62.472H184.077V65.376H183.117C182.077 65.376 181.293 65.528 180.765 65.832C180.237 66.136 179.973 66.632 179.973 67.32V75H176.901ZM191.27 75.288C190.342 75.288 189.51 75.136 188.774 74.832C188.054 74.512 187.438 74.072 186.926 73.512C186.43 72.936 186.046 72.248 185.774 71.448C185.502 70.632 185.366 69.72 185.366 68.712C185.366 67.72 185.494 66.824 185.75 66.024C186.022 65.224 186.406 64.544 186.902 63.984C187.398 63.408 188.006 62.968 188.726 62.664C189.446 62.344 190.262 62.184 191.174 62.184C192.15 62.184 192.998 62.352 193.718 62.688C194.438 63.024 195.03 63.48 195.494 64.056C195.958 64.632 196.302 65.304 196.526 66.072C196.766 66.824 196.886 67.632 196.886 68.496V69.504H188.558V69.816C188.558 70.728 188.814 71.464 189.326 72.024C189.838 72.568 190.598 72.84 191.606 72.84C192.374 72.84 192.998 72.68 193.478 72.36C193.974 72.04 194.414 71.632 194.798 71.136L196.454 72.984C195.942 73.704 195.238 74.272 194.342 74.688C193.462 75.088 192.438 75.288 191.27 75.288ZM191.222 64.488C190.406 64.488 189.758 64.76 189.278 65.304C188.798 65.848 188.558 66.552 188.558 67.416V67.608H193.694V67.392C193.694 66.528 193.478 65.832 193.046 65.304C192.63 64.76 192.022 64.488 191.222 64.488ZM199.589 62.472H202.661V64.536H202.757C202.981 63.816 203.405 63.248 204.029 62.832C204.653 62.4 205.381 62.184 206.213 62.184C207.813 62.184 209.029 62.752 209.861 63.888C210.709 65.008 211.133 66.616 211.133 68.712C211.133 70.824 210.709 72.448 209.861 73.584C209.029 74.72 207.813 75.288 206.213 75.288C205.381 75.288 204.653 75.072 204.029 74.64C203.421 74.208 202.997 73.632 202.757 72.912H202.661V79.8H199.589V62.472ZM205.229 72.744C206.029 72.744 206.677 72.48 207.173 71.952C207.669 71.424 207.917 70.712 207.917 69.816V67.656C207.917 66.76 207.669 66.048 207.173 65.52C206.677 64.976 206.029 64.704 205.229 64.704C204.493 64.704 203.877 64.888 203.381 65.256C202.901 65.624 202.661 66.112 202.661 66.72V70.704C202.661 71.36 202.901 71.864 203.381 72.216C203.877 72.568 204.493 72.744 205.229 72.744ZM213.979 62.472H217.051V64.536H217.147C217.371 63.816 217.795 63.248 218.419 62.832C219.043 62.4 219.771 62.184 220.603 62.184C222.203 62.184 223.419 62.752 224.251 63.888C225.099 65.008 225.523 66.616 225.523 68.712C225.523 70.824 225.099 72.448 224.251 73.584C223.419 74.72 222.203 75.288 220.603 75.288C219.771 75.288 219.043 75.072 218.419 74.64C217.811 74.208 217.387 73.632 217.147 72.912H217.051V79.8H213.979V62.472ZM219.619 72.744C220.419 72.744 221.067 72.48 221.563 71.952C222.059 71.424 222.307 70.712 222.307 69.816V67.656C222.307 66.76 222.059 66.048 221.563 65.52C221.067 64.976 220.419 64.704 219.619 64.704C218.883 64.704 218.267 64.888 217.771 65.256C217.291 65.624 217.051 66.112 217.051 66.72V70.704C217.051 71.36 217.291 71.864 217.771 72.216C218.267 72.568 218.883 72.744 219.619 72.744ZM235.858 72.912H235.738C235.626 73.232 235.474 73.536 235.282 73.824C235.106 74.096 234.874 74.344 234.586 74.568C234.314 74.792 233.978 74.968 233.578 75.096C233.194 75.224 232.746 75.288 232.234 75.288C230.938 75.288 229.946 74.864 229.258 74.016C228.57 73.168 228.226 71.96 228.226 70.392V62.472H231.298V70.08C231.298 70.944 231.466 71.608 231.802 72.072C232.138 72.52 232.674 72.744 233.41 72.744C233.714 72.744 234.01 72.704 234.298 72.624C234.602 72.544 234.866 72.424 235.09 72.264C235.314 72.088 235.498 71.88 235.642 71.64C235.786 71.384 235.858 71.088 235.858 70.752V62.472H238.93V75H235.858V72.912ZM242.479 75V62.472H245.551V65.064H245.671C245.751 64.728 245.871 64.408 246.031 64.104C246.207 63.784 246.431 63.504 246.703 63.264C246.975 63.024 247.295 62.832 247.663 62.688C248.047 62.544 248.487 62.472 248.983 62.472H249.655V65.376H248.695C247.655 65.376 246.871 65.528 246.343 65.832C245.815 66.136 245.551 66.632 245.551 67.32V75H242.479Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/asahreppur.svg b/libs/application/templates/financial-aid/src/svg/asahreppur.svg deleted file mode 100644 index 379558a95b93..000000000000 --- a/libs/application/templates/financial-aid/src/svg/asahreppur.svg +++ /dev/null @@ -1,18 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57882)"> -<path d="M47.7794 95.7635C47.6138 95.7635 47.4245 95.7162 47.2353 95.6216C40.7303 92.7357 34.793 89.2111 29.589 85.1662C27.3654 83.4157 25.3311 81.3105 23.3678 78.6848L23.3441 78.6612L23.3205 78.6375C23.0839 78.4719 22.942 78.259 22.8474 77.9988L22.8237 77.9515L22.5162 77.5967L22.4926 77.5731C21.9722 76.9817 21.5464 76.4613 21.2862 75.8463V75.8226L21.2625 75.799C18.3766 71.7067 16.366 67.0467 15.3252 61.961V61.9373L15.3015 61.8427C15.1123 61.275 14.9231 60.731 14.9704 60.1632V60.1159V60.0686C14.5209 58.3891 14.2844 56.615 14.2844 54.6517C14.2844 48.9273 14.2844 43.2029 14.2844 37.4784C14.2844 30.8078 14.2844 23.877 14.2607 17.0881C14.2607 16.7333 14.3081 16.5204 14.4027 16.4258C14.4736 16.3548 14.6865 16.3075 15.0413 16.3075C37.7498 16.3075 59.9142 16.2839 80.9432 16.2366C81.3453 16.2366 81.5582 16.2839 81.6765 16.4022C81.7711 16.5204 81.8184 16.7333 81.8184 17.1118C81.7711 20.5417 81.7474 24.0189 81.7238 27.3779C81.7238 28.8445 81.7001 30.2874 81.7001 31.754C81.7001 31.8959 81.6765 32.0379 81.6528 32.1798C81.6292 32.2508 81.6292 32.3217 81.6055 32.4163V32.44L81.5819 33.6464V33.67C81.6765 34.427 81.6765 35.2076 81.5819 35.9645V35.9882V37.4311C81.5819 38.5429 81.5818 39.6783 81.6055 40.7901C81.6528 47.579 81.7001 54.6044 80.3991 61.4406C80.2808 62.1029 80.0916 62.7889 79.9024 63.4512C79.8078 63.7587 79.7368 64.0663 79.6422 64.3974C79.24 65.8404 78.6487 67.7327 77.7498 69.5305L77.6079 69.7907V69.8616C77.6079 70.0509 77.5606 70.0982 77.5133 70.1455L77.4423 70.1928L77.4186 70.2638C75.6918 74.1195 73.7049 77.2892 71.3394 79.9149L71.3157 79.9385L71.2921 79.9622C71.1738 80.1987 71.0555 80.4116 70.8426 80.5062L70.7953 80.5299L70.7717 80.5772C68.3589 83.534 65.2838 86.136 60.7894 88.9746C57.7853 90.867 54.5682 92.4991 51.4695 94.084C50.4523 94.6044 49.4115 95.1485 48.3707 95.6689C48.1578 95.7162 47.9686 95.7635 47.7794 95.7635Z" fill="white"/> -<path d="M81.9361 31.754C81.9834 26.8811 81.9834 21.9846 82.0544 17.1118C82.0781 16.2129 81.8179 16 80.9426 16C58.9675 16.0473 37.016 16.071 15.0408 16.071C14.2129 16.071 14 16.2839 14 17.1118C14.0237 29.6251 14 42.162 14.0237 54.6753C14.0237 56.5204 14.2365 58.3655 14.7333 60.1632C14.686 60.8255 14.8989 61.4169 15.0881 62.0319C16.1289 67.0704 18.0923 71.7303 21.0727 75.9409C21.3566 76.6268 21.8297 77.1946 22.3028 77.7386V77.7623C22.3974 77.8805 22.492 77.9752 22.6103 78.0934C22.7049 78.4009 22.8941 78.6611 23.1543 78.8504C24.9758 81.2868 27.0337 83.4867 29.4228 85.3554C34.8634 89.6132 40.8007 93.0432 47.1165 95.8344C47.6132 96.0473 47.9917 96.0236 48.4412 95.7871C52.6044 93.6109 56.8859 91.6002 60.8835 89.0692C64.6209 86.7037 68.1218 84.0781 70.9367 80.6245C71.2206 80.5062 71.3625 80.246 71.5044 79.9858C74.1064 77.0999 76.0461 73.8119 77.6073 70.2637C77.7966 70.1455 77.8439 69.9799 77.8202 69.767C77.8675 69.696 77.8912 69.6251 77.9385 69.5778C78.7664 67.9219 79.3341 66.1715 79.8309 64.3974C80.0911 63.4039 80.3986 62.4341 80.5878 61.4406C82.1254 53.469 81.8179 45.4264 81.7942 37.3838C81.7942 37.2182 81.7942 37.0763 81.7942 36.9107C81.7942 36.6032 81.7942 36.272 81.7942 35.9645C81.8888 35.1839 81.8888 34.3797 81.7942 33.5991C81.8179 33.1969 81.8179 32.8184 81.8179 32.4163C81.8652 32.2034 81.9361 31.9905 81.9361 31.754ZM16.8622 17.7741C34.3903 17.7504 51.9184 17.7504 69.4228 17.7268C69.7776 17.7268 70.1325 17.6795 70.4873 17.6795C72.3087 17.6795 74.1064 17.6795 75.9278 17.6795H76.4009C76.6375 17.6795 76.874 17.6795 77.1106 17.6795C77.56 17.6795 78.0331 17.6795 78.4826 17.6795C78.9083 17.6795 79.3341 17.6795 79.7362 17.6795C79.7599 18.2235 79.2632 18.2472 78.9556 18.3891C72.8054 21.4406 67.7433 25.8167 63.1543 30.8551C60.3158 33.9775 57.7138 37.3128 55.5376 40.9556C55.372 41.003 55.3247 41.1449 55.301 41.2868C54.8516 41.8309 54.4258 42.3986 54.1656 43.0846L54.1183 43.1082V43.1792C53.8344 43.3921 53.6688 43.6759 53.5742 44.0071L53.5506 44.0544C52.9592 44.8587 52.4861 45.7339 52.084 46.6328C50.4755 49.1165 49.3164 51.8604 47.8971 54.5807C47.5896 53.8947 47.3294 53.327 47.0692 52.783C45.508 48.3832 43.3318 44.3146 40.8953 40.3406C35.2892 31.2099 28.0745 23.7351 18.2815 19.0278C17.5245 18.673 16.6966 18.4601 15.8451 17.7741H16.8622ZM33.9172 58.602C34.6742 58.2708 35.3838 57.7977 36.0461 57.2773C36.4719 57.23 36.6848 56.8752 36.9923 56.615C37.3471 56.3312 37.702 56.1183 38.1041 56.5441C38.1041 57.4193 38.1041 58.2708 38.1041 59.1461C37.5364 59.7138 36.8504 59.3826 36.2117 59.4063C35.1709 59.4772 34.1064 59.4299 32.8054 59.4299C33.3258 59.0514 33.6097 58.8386 33.9172 58.602ZM32.0958 58.5547C31.6464 58.8386 31.4808 58.6493 31.4335 58.1999C31.4335 57.6558 31.4335 57.0881 31.4335 56.5441C31.2915 55.4796 31.7646 55.1484 32.8054 55.2194C34.2957 55.314 35.8096 55.243 37.631 55.243C36.8977 55.6925 36.4246 56 35.9515 56.2839C35.1709 56.7806 34.3903 57.2537 33.6097 57.7504C33.113 58.0106 32.5925 58.2708 32.0958 58.5547ZM35.9752 53.4926C35.8096 53.4926 35.6677 53.4926 35.5021 53.4926H32.427C32.1904 53.4926 31.9539 53.4689 31.7173 53.4689C31.4098 53.0905 31.5281 52.641 31.5281 52.2153C31.4808 47.508 31.5281 42.8007 31.9539 38.1171C32.0485 37.8096 32.1195 37.5021 32.2141 37.1946C32.285 37.029 32.3797 36.887 32.4506 36.7215C33.5387 35.8936 34.0118 35.9645 35.6913 37.1946C38.3643 39.8912 39.8782 43.3684 41.7705 46.5854C41.9598 46.9166 42.1727 47.2478 42.3856 47.5789C42.6931 48.4069 43.0006 49.2348 43.521 49.9681C43.6866 50.4885 43.8285 51.0325 44.207 51.4583C44.3489 51.8604 44.5381 52.2389 44.6564 52.6647C44.7274 52.9249 45.0349 53.1851 44.7274 53.5163C44.3726 53.8947 44.0887 53.4689 43.7812 53.4926C43.3081 53.398 42.835 53.398 42.3619 53.4926C41.4157 53.4926 40.4695 53.4926 39.5234 53.4926C38.3406 53.3743 37.1579 53.3743 35.9752 53.4926ZM39.1685 56.5914C39.3105 56.1656 39.5234 56.3075 39.7362 56.4967C40.0438 56.7806 40.4459 56.9225 40.848 57.0408C41.5813 57.6558 42.4092 58.1053 43.2608 58.531C43.5683 58.7676 43.8285 59.0514 44.2306 59.1461C44.2779 59.217 44.3253 59.3116 44.3962 59.3826C42.8823 59.4063 41.3448 59.4299 39.8309 59.4299C39.547 59.4299 39.2632 59.4772 39.1685 59.1224V56.5914ZM43.3554 57.5139C42.5748 57.0645 41.9125 56.3785 40.9426 56.2839C40.8007 55.7161 39.9728 56 39.8072 55.2194C41.5813 55.2194 43.3318 55.2194 45.0822 55.2194C45.508 55.2194 45.6263 55.4559 45.6499 55.8108C45.7209 56.5441 45.7918 57.301 45.8628 58.0343C45.9574 58.9568 45.3424 58.7676 44.9639 58.4837C44.4672 58.1053 43.9468 57.7741 43.3554 57.5139ZM23.6984 57.2537C23.8403 56.9935 23.6274 56.6387 23.9349 56.3785C24.408 56.5677 24.7865 57.0171 25.3069 57.0881C25.8273 57.6322 26.537 57.916 27.1993 58.2708C27.696 58.602 28.2164 58.9332 28.7132 59.2407C28.6895 59.3353 28.6895 59.4299 28.6659 59.5245H24.1242C24.0532 59.5245 23.9823 59.5009 23.9113 59.5009C23.8403 59.3826 23.7694 59.2643 23.6747 59.1697C23.8167 58.531 23.793 57.8924 23.6984 57.2537ZM27.4595 57.4666C26.6552 56.8989 25.8273 56.3312 24.8811 56.0237C24.9284 55.6925 24.5736 55.6215 24.1715 55.243C26.0875 55.243 27.7433 55.1721 29.3755 55.2667C30.3927 55.3377 29.6357 56.3075 29.9432 56.7806C29.8486 57.1118 29.8486 57.4193 29.9432 57.7504C29.8959 58.0106 29.8486 58.2708 29.8013 58.5547C28.9734 58.1762 28.2164 57.8214 27.4595 57.4666ZM15.372 49.2821C15.372 40.7428 15.4429 32.2034 15.4902 23.6641C15.4902 22.6943 15.2537 21.7008 15.4902 20.589C19.7954 22.1029 23.7457 24.0426 26.5843 27.78C27.081 28.6316 27.6014 29.4831 28.0982 30.3584C28.2164 30.5949 28.3111 30.8078 28.4293 31.0444C29.5648 33.5281 29.825 36.1538 29.8486 38.8504C29.8486 43.3211 29.825 47.8155 29.8723 52.2862C29.8723 53.1614 29.7303 53.5872 28.7368 53.4689C28.0035 53.398 27.2466 53.4926 26.5133 53.5163C26.2058 53.5163 25.8746 53.5163 25.5671 53.5163C25.165 53.5163 24.7865 53.5163 24.3844 53.5163H23.9113C22.0189 53.5163 20.1266 53.5163 18.2342 53.5163H16.3418C16.1053 53.5163 15.8687 53.4926 15.6322 53.4926C15.2064 52.097 15.372 50.6777 15.372 49.2821ZM22.5393 59.1461C22.4684 59.4299 22.2082 59.4299 21.9953 59.5245C20.6943 59.4299 19.3933 59.3353 18.0923 59.5718C17.974 59.4063 17.8557 59.4536 17.7138 59.5482C17.6665 59.4536 17.6428 59.359 17.6428 59.3116C17.6428 58.9805 18.2342 59.0278 18.2578 58.7203C18.8965 58.531 19.3933 58.1289 19.9137 57.7268C20.0792 57.7504 20.1739 57.6795 20.1975 57.5375C20.9072 57.372 21.2856 56.686 21.9953 56.5204C22.3737 56.4258 22.4684 56.4731 22.5393 56.8043C22.5393 57.5849 22.5393 58.3655 22.5393 59.1461ZM15.6795 58.3655C15.6558 58.2235 15.6322 58.1053 15.6322 57.9633C15.6322 57.7977 15.6322 57.6558 15.6085 57.4902C15.8924 56.7806 15.5612 56.071 15.6322 55.3613H21.948C21.1674 55.8817 20.5287 56.3075 19.8664 56.7333C19.6771 56.7333 19.5115 56.8043 19.4169 57.0171C18.9675 57.1354 18.5653 57.372 18.2342 57.7031C17.7611 57.7977 17.3826 58.0816 17.0514 58.4128C16.5784 58.6257 16.1053 58.8386 15.6795 58.3655ZM26.7262 80.1987C26.466 80.1987 26.2294 80.1514 26.0166 79.9621C25.9219 79.7019 25.7564 79.5127 25.4962 79.3944C25.1886 79.016 24.8575 78.6138 24.5263 78.2354C24.408 78.0934 24.2661 77.9278 24.1478 77.7859C24.0769 77.715 24.0059 77.644 23.9349 77.573C21.9007 74.5925 19.89 71.6357 18.589 68.2531C17.7374 66.0532 17.0278 63.8297 16.5784 61.5352C16.6493 61.4642 16.7439 61.3696 16.8149 61.2986C21.0727 61.275 25.3069 61.2513 29.5648 61.2277C30.2034 61.2277 30.8421 61.2277 31.4808 61.2277C31.7883 61.275 32.0958 61.2986 32.4033 61.2986C32.7108 61.2986 33.0183 61.275 33.3495 61.2277C33.8226 61.2277 34.3193 61.2277 34.7924 61.2277C35.1709 61.275 35.5494 61.2986 35.9279 61.2986C36.33 61.2986 36.7321 61.275 37.1106 61.2277C38.3879 61.2277 39.6416 61.2277 40.919 61.2277C41.534 61.3223 42.1727 61.3223 42.7877 61.2277C43.2608 61.2277 43.7339 61.2277 44.2306 61.2277C44.3016 61.2277 44.3726 61.2277 44.4672 61.204C44.5618 61.2277 44.6801 61.2513 44.7747 61.275C44.7274 61.5115 44.7037 61.7481 44.6564 61.9846C42.835 65.1543 40.8717 68.2294 38.4826 70.997C35.2182 74.7818 31.5281 78.0225 26.9627 80.1987C26.8918 80.1987 26.8208 80.1987 26.7262 80.1987ZM80.2093 31.7303V32.2271C80.2093 34.8291 80.2093 37.4311 80.2093 40.0331C80.2093 40.5062 80.2093 40.9793 80.2093 41.4524C80.2093 42.162 80.2093 42.8717 80.2093 43.5813C80.1384 46.3962 80.0438 49.2348 79.9965 52.0497C79.9491 54.7226 79.618 57.372 79.1449 59.9976C79.0739 60.4234 79.0503 60.8492 79.0266 61.275C78.9793 61.3459 78.9556 61.4406 78.9083 61.5115C78.861 61.7481 78.8137 61.9846 78.7901 62.2448C78.6245 62.3867 78.5772 62.576 78.5772 62.7652C78.5772 62.8125 78.5772 62.8835 78.5772 62.9545C78.5535 63.0254 78.5535 63.12 78.5299 63.191C78.4826 63.262 78.4589 63.3329 78.4116 63.4039C78.3643 63.7114 78.317 63.9953 78.2697 64.3028C78.2224 64.3974 78.175 64.5157 78.1041 64.6103C78.0804 64.7522 78.0568 64.8941 78.0331 65.0361C77.9622 65.2017 77.9148 65.3909 77.8439 65.5565C77.8202 65.6274 77.7966 65.6984 77.7966 65.7694C77.5364 66.0532 77.3944 66.3607 77.3944 66.7392V66.7629L77.1342 67.4725C77.016 67.5671 76.945 67.6854 76.945 67.8273C76.945 67.8746 76.945 67.8983 76.945 67.9456C76.0934 69.7433 75.2892 71.5648 74.2484 73.2679C74.0355 73.599 73.9882 74.1431 73.4205 74.1194L73.3731 74.1668C73.4914 74.5925 73.2312 74.9001 73.042 75.2312C71.9775 76.958 70.7475 78.5665 69.3282 80.0095C69.2572 80.0804 69.1863 80.175 69.1153 80.246V80.2697V80.2933C69.0443 80.3879 68.9734 80.4589 68.9024 80.5535C68.1455 80.7901 68.0035 81.7362 67.3176 82.0438C66.8445 82.6115 66.5133 83.3211 65.6381 83.3921V83.4157C65.094 84.5275 64.0059 85.0952 63.0361 85.7102C61.0727 86.9166 59.275 88.4069 57.0988 89.2584C55.1591 90.3938 53.1957 91.5293 51.1614 92.4518C50.7593 92.641 50.4045 92.8303 50.0497 93.0668C48.8196 93.9184 47.6132 94.5098 46.0284 93.6818C40.0438 90.5358 34.0591 87.366 28.997 82.8007C28.9024 82.7297 28.8315 82.6115 28.7368 82.5405C28.1928 82.1384 28.2401 81.8782 28.8551 81.547C30.3454 80.7428 31.741 79.8202 33.0893 78.7794C38.4589 74.7108 42.4565 69.5068 45.5789 63.6168C47.8971 59.2407 49.9787 54.7463 52.2022 50.2992C53.1011 48.5251 54.0473 46.7747 54.9698 45.0242C55.0408 44.9296 55.0881 44.8587 55.1591 44.764L55.1827 44.7404C55.2064 44.6694 55.2537 44.5985 55.3247 44.5511C55.4193 44.4565 55.5375 44.3619 55.6322 44.2673C55.8214 43.6523 56.2235 43.1555 56.602 42.6351C56.7439 42.2566 56.9332 41.9255 57.2643 41.6653C57.359 41.5234 57.4536 41.3578 57.5482 41.2158V41.003C57.6192 40.9083 57.6665 40.8374 57.7374 40.7428L57.7611 40.6954C57.8557 40.5535 57.9503 40.4116 58.0213 40.2933C58.2105 40.1987 58.2815 40.0331 58.2815 39.8202H58.2578C58.3525 39.7256 58.4471 39.6546 58.5417 39.56C58.7546 39.2525 58.9675 38.945 59.1804 38.6375C59.275 38.5429 59.3459 38.4483 59.4406 38.3536C59.6062 38.1407 59.7717 37.9042 59.9373 37.6913C60.1029 37.573 60.2685 37.4311 60.3868 37.2655C60.505 37.0999 60.5996 36.9344 60.647 36.7215C60.8362 36.6505 60.9072 36.5086 60.9072 36.3193C60.9072 36.2957 60.9072 36.2957 60.9072 36.272C61.0964 36.272 61.2147 36.1538 61.2856 35.9882C61.5458 35.6807 61.7824 35.3731 62.0426 35.0656C62.2555 34.971 62.3974 34.8291 62.4447 34.5925C62.7049 34.285 62.9651 33.9775 63.2253 33.6464C63.5092 33.5044 63.6747 33.2679 63.7221 32.9604C63.864 32.9367 64.0059 32.9131 64.1478 32.9131C64.4553 32.0852 65.1886 31.5884 65.8037 31.0444C65.9692 30.7368 66.1821 30.4766 66.537 30.3584C67.2703 29.838 67.767 29.081 68.382 28.4423C68.4766 28.3714 68.5476 28.2768 68.6422 28.2058C68.7132 28.1348 68.8078 28.0639 68.8788 27.9929C68.9261 27.9692 68.997 27.9692 69.068 27.9692C69.1153 27.5198 69.3992 27.3069 69.8013 27.1886C70.1088 26.9048 70.4163 26.5973 70.7238 26.3134C70.8421 26.1005 71.0313 26.0769 71.2442 26.0769V26.1005C71.3152 26.0059 71.4098 25.9113 71.4808 25.8167C71.6227 25.6747 71.7883 25.5328 71.9302 25.3909C72.0248 25.3199 72.1195 25.2726 72.1904 25.2017C72.285 25.107 72.3797 25.0361 72.4743 24.9415C73.3022 23.8297 74.6268 23.4276 75.6913 22.6706C76.8031 21.8664 78.0804 21.3459 79.3105 20.7073C79.9728 20.3525 80.2803 20.4471 80.2567 21.2986C80.2093 23.3802 80.2567 25.4619 80.2803 27.5435C80.2803 27.709 80.2803 27.851 80.2803 28.0166C80.162 29.1993 79.7836 30.4766 80.2093 31.7303Z" fill="black"/> -<path d="M24.124 59.5245C24.0531 59.5245 23.9821 59.5009 23.9111 59.5009C24.0058 59.4536 24.0767 59.4536 24.124 59.5245Z" fill="black"/> -<path d="M55.2533 44.5038C55.2059 44.5512 55.1586 44.6221 55.1113 44.6931C55.135 44.6221 55.1823 44.5512 55.2533 44.5038Z" fill="black"/> -<path d="M26.0162 79.9621C25.9216 79.7019 25.756 79.5127 25.4958 79.3944C25.1883 79.016 24.8571 78.6138 24.5496 78.2354C24.4077 78.0934 24.2894 77.9278 24.1475 77.7859C24.0765 77.715 24.0056 77.644 23.9346 77.573C21.9003 74.5925 19.8897 71.6357 18.565 68.2294C17.7134 66.0296 17.0038 63.806 16.5544 61.5115C16.5307 61.6061 16.5071 61.6771 16.4834 61.7717C16.5071 61.7008 16.5307 61.6061 16.5544 61.5115C16.6253 61.4406 16.6963 61.3459 16.7909 61.275C21.0487 61.2513 25.2829 61.2277 29.5408 61.204C30.1794 61.204 30.8181 61.204 31.4568 61.204C31.5278 61.1804 31.5278 61.1804 31.4568 61.204C32.0718 61.2986 32.7105 61.2986 33.3255 61.204C33.7986 61.204 34.2953 61.204 34.7684 61.204C35.549 61.3223 36.3296 61.2986 37.1102 61.204C38.3876 61.204 39.6413 61.204 40.9186 61.204C41.5337 61.2986 42.1723 61.2986 42.7874 61.204C43.2605 61.204 43.7335 61.204 44.2303 61.204C44.3013 61.204 44.3722 61.204 44.4668 61.1804C44.5615 61.204 44.6797 61.2277 44.7743 61.2513C44.727 61.4879 44.7034 61.7244 44.6561 61.961C42.8347 65.1307 40.8713 68.2058 38.4822 70.9734C35.2179 74.7581 31.5277 77.9988 26.9624 80.175C26.6312 80.246 26.3001 80.1987 26.0162 79.9621Z" fill="#039EF6"/> -<path d="M80.1854 41.4287C80.1854 42.1383 80.1854 42.848 80.1854 43.5576C80.1144 46.3725 80.0198 49.2111 79.9725 52.026C79.9252 54.699 79.594 57.3483 79.1209 59.9739C79.05 60.3997 79.0263 60.8255 79.0027 61.2513C78.9554 61.3223 78.9317 61.4169 78.8844 61.4878C78.8371 61.7244 78.8134 61.9846 78.7661 62.2211C78.5532 62.4104 78.5532 62.6706 78.5769 62.9308C78.5532 63.0017 78.5532 63.0727 78.5296 63.1673C78.4823 63.2383 78.4586 63.3092 78.4113 63.4039C78.364 63.7114 78.3167 63.9952 78.2694 64.3027C78.2221 64.3974 78.1748 64.5156 78.1038 64.6103C78.0801 64.7522 78.0565 64.8941 78.0328 65.036C77.9619 65.2016 77.9146 65.3672 77.8436 65.5564C77.8199 65.6274 77.7963 65.6984 77.7963 65.7693C77.5361 66.0532 77.3942 66.3607 77.3942 66.7628C77.2995 66.9994 77.2049 67.2359 77.134 67.4725C77.2995 67.6381 77.2995 67.6381 77.134 67.4725C76.9684 67.5907 76.9211 67.7563 76.9447 67.9456C76.0932 69.7433 75.2889 71.5647 74.2481 73.2679C74.0352 73.599 73.9879 74.1431 73.4202 74.1194L73.3729 74.1667C73.4911 74.5925 73.2309 74.9 73.0417 75.2312C71.9773 76.958 70.7472 78.5665 69.3279 80.0094C69.257 80.0804 69.186 80.175 69.115 80.246L69.0914 80.2696C69.0677 80.2933 69.0677 80.2933 69.0914 80.2696C69.0204 80.3643 68.9495 80.4589 68.8785 80.5535C68.0979 80.79 67.9796 81.7362 67.2936 82.0437C66.8205 82.6114 66.4894 83.3211 65.6142 83.392V83.4157C65.0464 84.5275 63.982 85.0952 63.0121 85.6865C61.0488 86.8929 59.2511 88.3832 57.0748 89.2347C55.1351 90.3938 53.1718 91.5056 51.1139 92.4281C50.7117 92.6174 50.3569 92.8066 50.0021 93.0431C48.772 93.8947 47.5657 94.4861 45.9808 93.6581C39.9962 90.5121 34.0116 87.3424 28.9495 82.777C28.8548 82.7061 28.7839 82.5878 28.6893 82.5168C28.1452 82.1147 28.1925 81.8545 28.8075 81.5233C30.2978 80.7191 31.6934 79.7729 33.0417 78.7557C38.4113 74.6871 42.409 69.4831 45.5314 63.5931C47.8495 59.217 49.9311 54.7226 52.1547 50.2755C53.0299 48.5014 53.9997 46.751 54.9223 45.0006C54.9932 44.9059 55.0642 44.835 55.1115 44.7404L55.1351 44.7167C55.1588 44.6457 55.2061 44.5748 55.2771 44.5275C55.3717 44.4328 55.49 44.3382 55.5846 44.2436C55.7738 43.6286 56.1759 43.1318 56.5544 42.6114C56.6964 42.233 56.8856 41.9018 57.2168 41.6416C57.3114 41.4997 57.406 41.3341 57.5006 41.1922C57.5006 41.1212 57.5006 41.0502 57.5006 40.9793C57.5716 40.8847 57.6189 40.8137 57.6898 40.7191L57.7135 40.6718C57.7372 40.5298 57.7608 40.4116 57.8554 40.3169C57.7608 40.4116 57.7135 40.5298 57.7135 40.6718C57.8081 40.5298 57.9027 40.3879 57.9737 40.2696C58.1629 40.175 58.2339 40.0094 58.2339 39.7965H58.2102C58.3049 39.7256 58.3995 39.631 58.4941 39.56C58.707 39.2525 58.9199 38.945 59.1328 38.6375C59.2274 38.5428 59.2984 38.4482 59.393 38.3773C59.5586 38.1644 59.7241 37.9278 59.8897 37.7149C60.2209 37.4547 60.5284 37.1945 60.5994 36.7451C60.7886 36.6505 60.8832 36.5085 60.8596 36.2957C61.0488 36.2957 61.1671 36.1774 61.238 36.0118C61.4982 35.7043 61.7348 35.3968 61.995 35.0893C61.995 35.0183 61.995 35.0183 61.995 35.0893C62.2079 34.9946 62.3498 34.8527 62.3971 34.6162C62.6573 34.3087 62.9175 34.0012 63.1777 33.67C63.1777 33.5754 63.1777 33.5754 63.1777 33.67C63.4616 33.5281 63.6272 33.2915 63.6745 32.984C63.8164 32.9603 63.9583 32.9603 64.1003 32.9367C64.4078 32.1088 65.1411 31.612 65.7561 31.068C65.9217 30.7605 66.1346 30.5003 66.4894 30.382C67.2227 29.8616 67.7194 29.1046 68.3344 28.466C68.4291 28.395 68.5 28.3004 68.5946 28.2294C68.6656 28.1585 68.7602 28.0875 68.8312 28.0165C68.8785 27.9929 68.9495 27.9929 69.0204 27.9929C69.0677 27.5434 69.3516 27.3305 69.7537 27.2123C70.0612 26.9284 70.3687 26.6209 70.6762 26.337C70.7945 26.1242 70.9838 26.1005 71.1966 26.1005V26.1242C71.2676 26.0295 71.3622 25.9349 71.4332 25.8403C71.5751 25.6984 71.7407 25.5564 71.8826 25.4145C71.9772 25.3436 72.0482 25.2962 72.1428 25.2253C72.2375 25.1307 72.3321 25.0597 72.4267 24.9651C73.2546 23.8533 74.5793 23.4512 75.6437 22.6942C76.7555 21.89 78.0328 21.3696 79.2629 20.7309C79.9252 20.3761 80.2327 20.4707 80.2091 21.3223C80.1618 23.4039 80.2091 25.4855 80.2327 27.5671C80.4693 27.3542 80.4693 27.3542 80.2327 27.5671C80.2327 27.7327 80.2327 27.8746 80.2327 28.0402C80.4456 28.8208 80.4456 28.8208 80.2327 28.0402C80.1854 29.2939 79.8069 30.5476 80.2327 31.8013C80.2327 31.9669 80.2327 32.1324 80.2327 32.298C80.4929 32.984 80.4929 32.984 80.2327 32.298C80.2327 34.9 80.2327 37.502 80.2327 40.1041C80.2091 40.4825 80.1854 40.9556 80.1854 41.4287Z" fill="#00984D"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.336 75L106.992 70.728H101.04L99.72 75H96.504L102.12 58.248H106.056L111.624 75H108.336ZM104.064 61.128H103.944L101.808 68.016H106.224L104.064 61.128ZM104.328 57.144L102.48 56.232L104.76 51.744L107.352 53.04L104.328 57.144ZM118.005 75.288C116.805 75.288 115.797 75.088 114.981 74.688C114.165 74.272 113.445 73.704 112.821 72.984L114.693 71.16C115.157 71.688 115.661 72.104 116.205 72.408C116.765 72.712 117.405 72.864 118.125 72.864C118.861 72.864 119.389 72.736 119.709 72.48C120.045 72.224 120.213 71.872 120.213 71.424C120.213 71.056 120.093 70.768 119.853 70.56C119.629 70.336 119.237 70.184 118.677 70.104L117.429 69.936C116.069 69.76 115.029 69.376 114.309 68.784C113.605 68.176 113.253 67.296 113.253 66.144C113.253 65.536 113.365 64.992 113.589 64.512C113.813 64.016 114.133 63.6 114.549 63.264C114.965 62.912 115.461 62.648 116.037 62.472C116.629 62.28 117.285 62.184 118.005 62.184C118.613 62.184 119.149 62.232 119.613 62.328C120.093 62.408 120.525 62.536 120.909 62.712C121.293 62.872 121.645 63.08 121.965 63.336C122.285 63.576 122.597 63.848 122.901 64.152L121.101 65.952C120.733 65.568 120.293 65.248 119.781 64.992C119.269 64.736 118.709 64.608 118.101 64.608C117.429 64.608 116.941 64.728 116.637 64.968C116.349 65.208 116.205 65.52 116.205 65.904C116.205 66.32 116.325 66.64 116.565 66.864C116.821 67.072 117.245 67.224 117.837 67.32L119.109 67.488C121.813 67.872 123.165 69.104 123.165 71.184C123.165 71.792 123.037 72.352 122.781 72.864C122.541 73.36 122.197 73.792 121.749 74.16C121.301 74.512 120.757 74.792 120.117 75C119.493 75.192 118.789 75.288 118.005 75.288ZM135.094 75C134.422 75 133.886 74.808 133.486 74.424C133.102 74.024 132.862 73.496 132.766 72.84H132.622C132.414 73.656 131.99 74.272 131.35 74.688C130.71 75.088 129.918 75.288 128.974 75.288C127.694 75.288 126.71 74.952 126.022 74.28C125.334 73.608 124.99 72.712 124.99 71.592C124.99 70.296 125.454 69.336 126.382 68.712C127.31 68.072 128.63 67.752 130.342 67.752H132.478V66.84C132.478 66.136 132.294 65.592 131.926 65.208C131.558 64.824 130.966 64.632 130.15 64.632C129.43 64.632 128.846 64.792 128.398 65.112C127.966 65.416 127.598 65.784 127.294 66.216L125.47 64.584C125.934 63.864 126.55 63.288 127.318 62.856C128.086 62.408 129.102 62.184 130.366 62.184C132.062 62.184 133.35 62.568 134.23 63.336C135.11 64.104 135.55 65.208 135.55 66.648V72.552H136.798V75H135.094ZM130.006 73.056C130.694 73.056 131.278 72.904 131.758 72.6C132.238 72.296 132.478 71.848 132.478 71.256V69.6H130.51C128.91 69.6 128.11 70.112 128.11 71.136V71.544C128.11 72.056 128.27 72.44 128.59 72.696C128.926 72.936 129.398 73.056 130.006 73.056ZM139.284 57.24H142.356V64.56H142.476C142.732 63.888 143.132 63.328 143.676 62.88C144.236 62.416 145.004 62.184 145.98 62.184C147.276 62.184 148.268 62.608 148.956 63.456C149.644 64.304 149.988 65.512 149.988 67.08V75H146.916V67.392C146.916 66.496 146.756 65.824 146.436 65.376C146.116 64.928 145.588 64.704 144.852 64.704C144.532 64.704 144.22 64.752 143.916 64.848C143.628 64.928 143.364 65.056 143.124 65.232C142.9 65.392 142.716 65.6 142.572 65.856C142.428 66.096 142.356 66.384 142.356 66.72V75H139.284V57.24ZM153.393 75V62.472H156.465V65.064H156.585C156.665 64.728 156.785 64.408 156.945 64.104C157.121 63.784 157.345 63.504 157.617 63.264C157.889 63.024 158.209 62.832 158.577 62.688C158.961 62.544 159.401 62.472 159.897 62.472H160.569V65.376H159.609C158.569 65.376 157.785 65.528 157.257 65.832C156.729 66.136 156.465 66.632 156.465 67.32V75H153.393ZM167.762 75.288C166.834 75.288 166.002 75.136 165.266 74.832C164.546 74.512 163.93 74.072 163.418 73.512C162.922 72.936 162.538 72.248 162.266 71.448C161.994 70.632 161.858 69.72 161.858 68.712C161.858 67.72 161.986 66.824 162.242 66.024C162.514 65.224 162.898 64.544 163.394 63.984C163.89 63.408 164.498 62.968 165.218 62.664C165.938 62.344 166.754 62.184 167.666 62.184C168.642 62.184 169.49 62.352 170.21 62.688C170.93 63.024 171.522 63.48 171.986 64.056C172.45 64.632 172.794 65.304 173.018 66.072C173.258 66.824 173.378 67.632 173.378 68.496V69.504H165.05V69.816C165.05 70.728 165.306 71.464 165.818 72.024C166.33 72.568 167.09 72.84 168.098 72.84C168.866 72.84 169.49 72.68 169.97 72.36C170.466 72.04 170.906 71.632 171.29 71.136L172.946 72.984C172.434 73.704 171.73 74.272 170.834 74.688C169.954 75.088 168.93 75.288 167.762 75.288ZM167.714 64.488C166.898 64.488 166.25 64.76 165.77 65.304C165.29 65.848 165.05 66.552 165.05 67.416V67.608H170.186V67.392C170.186 66.528 169.97 65.832 169.538 65.304C169.122 64.76 168.514 64.488 167.714 64.488ZM176.081 62.472H179.153V64.536H179.249C179.473 63.816 179.897 63.248 180.521 62.832C181.145 62.4 181.873 62.184 182.705 62.184C184.305 62.184 185.521 62.752 186.353 63.888C187.201 65.008 187.625 66.616 187.625 68.712C187.625 70.824 187.201 72.448 186.353 73.584C185.521 74.72 184.305 75.288 182.705 75.288C181.873 75.288 181.145 75.072 180.521 74.64C179.913 74.208 179.489 73.632 179.249 72.912H179.153V79.8H176.081V62.472ZM181.721 72.744C182.521 72.744 183.169 72.48 183.665 71.952C184.161 71.424 184.409 70.712 184.409 69.816V67.656C184.409 66.76 184.161 66.048 183.665 65.52C183.169 64.976 182.521 64.704 181.721 64.704C180.985 64.704 180.369 64.888 179.873 65.256C179.393 65.624 179.153 66.112 179.153 66.72V70.704C179.153 71.36 179.393 71.864 179.873 72.216C180.369 72.568 180.985 72.744 181.721 72.744ZM190.471 62.472H193.543V64.536H193.639C193.863 63.816 194.287 63.248 194.911 62.832C195.535 62.4 196.263 62.184 197.095 62.184C198.695 62.184 199.911 62.752 200.743 63.888C201.591 65.008 202.015 66.616 202.015 68.712C202.015 70.824 201.591 72.448 200.743 73.584C199.911 74.72 198.695 75.288 197.095 75.288C196.263 75.288 195.535 75.072 194.911 74.64C194.303 74.208 193.879 73.632 193.639 72.912H193.543V79.8H190.471V62.472ZM196.111 72.744C196.911 72.744 197.559 72.48 198.055 71.952C198.551 71.424 198.799 70.712 198.799 69.816V67.656C198.799 66.76 198.551 66.048 198.055 65.52C197.559 64.976 196.911 64.704 196.111 64.704C195.375 64.704 194.759 64.888 194.263 65.256C193.783 65.624 193.543 66.112 193.543 66.72V70.704C193.543 71.36 193.783 71.864 194.263 72.216C194.759 72.568 195.375 72.744 196.111 72.744ZM212.35 72.912H212.23C212.118 73.232 211.966 73.536 211.774 73.824C211.598 74.096 211.366 74.344 211.078 74.568C210.806 74.792 210.47 74.968 210.07 75.096C209.686 75.224 209.238 75.288 208.726 75.288C207.43 75.288 206.438 74.864 205.75 74.016C205.062 73.168 204.718 71.96 204.718 70.392V62.472H207.79V70.08C207.79 70.944 207.958 71.608 208.294 72.072C208.63 72.52 209.166 72.744 209.902 72.744C210.206 72.744 210.502 72.704 210.79 72.624C211.094 72.544 211.358 72.424 211.582 72.264C211.806 72.088 211.99 71.88 212.134 71.64C212.278 71.384 212.35 71.088 212.35 70.752V62.472H215.422V75H212.35V72.912ZM218.971 75V62.472H222.043V65.064H222.163C222.243 64.728 222.363 64.408 222.523 64.104C222.699 63.784 222.923 63.504 223.195 63.264C223.467 63.024 223.787 62.832 224.155 62.688C224.539 62.544 224.979 62.472 225.475 62.472H226.147V65.376H225.187C224.147 65.376 223.363 65.528 222.835 65.832C222.307 66.136 222.043 66.632 222.043 67.32V75H218.971Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57882"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/blaskogabyggd.svg b/libs/application/templates/financial-aid/src/svg/blaskogabyggd.svg deleted file mode 100644 index 1d4a43e63900..000000000000 --- a/libs/application/templates/financial-aid/src/svg/blaskogabyggd.svg +++ /dev/null @@ -1,22 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57874)"> -<path d="M47.7015 16.0252C36.9725 16.0252 26.2436 16.0505 15.5399 16C14.3282 16 14 16.3282 14 17.5399C14.0505 29.9097 14.0252 42.2543 14.0252 54.6242C14.0252 57.3506 14.4039 60.0265 14.9593 62.7024C16.2468 68.7359 19.0994 73.9867 22.9366 78.7075C29.3992 86.6343 37.7046 92.0366 47.1209 95.8738C47.4743 96.0252 47.8782 96.0505 48.2316 95.899C50.6551 94.7883 53.1543 93.8037 55.4768 92.491C64.2619 87.6188 71.7091 81.2572 76.7075 72.3711C79.4339 67.5241 81.1505 62.2985 81.201 56.7447C81.3525 43.6175 81.2263 30.5156 81.2768 17.3885C81.2768 16.2524 80.9233 16 79.8378 16C69.1341 16.0505 58.4052 16.0252 47.7015 16.0252Z" fill="#FCFCFC"/> -<path d="M47.7015 16.0252C58.4304 16.0252 69.1341 16.0505 79.8631 16C80.9486 16 81.302 16.2524 81.302 17.3885C81.2515 30.5156 81.3777 43.6176 81.2263 56.7447C81.1758 62.2985 79.4591 67.5242 76.7327 72.3711C71.7343 81.2572 64.2872 87.5936 55.5021 92.491C53.1796 93.7785 50.6803 94.763 48.2569 95.899C47.9034 96.0758 47.4995 96.0253 47.1461 95.8738C37.7551 92.0366 29.4244 86.6343 22.9618 78.7075C19.0994 73.9868 16.272 68.7359 14.9845 62.7024C14.4039 60.0265 14.0505 57.3506 14.0505 54.6242C14.0252 42.2543 14.0505 29.9098 14 17.5399C14 16.3282 14.3282 16 15.5399 16C26.2436 16.0505 36.9725 16.0252 47.7015 16.0252ZM19.0742 29.3039C18.7207 28.9757 18.4683 28.6223 18.746 28.0921C18.8722 27.8397 19.0994 27.663 19.3518 27.764C20.4374 28.1931 21.6239 27.9912 22.7599 28.4708C24.3755 29.1272 26.2689 28.8242 27.9602 28.5465C28.6671 28.4456 29.2477 28.3446 29.9041 28.5718C31.5702 29.1777 33.4383 28.6728 35.1045 29.4806C35.3064 29.5816 35.7103 29.4554 35.9375 29.3039C36.7958 28.7233 37.4522 29.1524 38.0581 29.733C38.9921 30.6166 40.0271 31.6769 41.0874 32.0555C42.9808 32.7371 43.6624 33.9741 44.0915 35.6403C44.3944 36.7763 44.7479 38.0133 45.3033 38.8968C46.0353 40.0076 46.2121 40.9669 46.0101 42.1534C45.9849 42.2796 46.0101 42.4058 46.0606 42.532C46.7927 44.4506 45.9091 45.9148 44.5964 47.2023C43.9653 47.8081 43.6624 48.6665 42.905 49.1714C42.5264 49.4238 42.9555 49.7015 43.1827 49.9539C44.1925 51.1152 45.7577 51.7211 46.4645 53.1852C46.616 53.4882 46.8432 53.9678 47.2723 53.8164C47.7267 53.6649 47.4995 53.16 47.4995 52.8066C47.5248 41.497 47.5248 30.1874 47.55 18.8779C47.55 17.8681 47.2723 17.4894 46.1868 17.4894C36.8968 17.5147 27.6068 17.4894 18.3168 17.4894C15.5904 17.4894 15.5904 17.4894 15.5904 20.1906C15.5904 32.1313 15.5904 44.072 15.5904 56.0126C15.5904 59.3954 16.0953 62.7024 17.2313 65.8833C19.6295 72.5226 23.6939 78.1269 28.7933 82.8728C33.8422 87.5683 39.6232 91.3045 46.1111 93.8037C47.4743 94.3339 47.4743 94.3591 47.4743 92.8697C47.4743 81.1815 47.4743 69.4932 47.4995 57.805C47.4995 56.77 47.6005 55.7854 46.2121 55.4825C45.8334 55.4068 45.4547 54.9271 45.2275 54.5484C44.3944 53.2105 43.208 52.2259 42.0467 51.1909C41.1379 50.3831 40.6583 50.4336 40.2039 51.4939C40.0776 51.7715 39.9514 52.0492 39.7494 52.2512C38.4367 53.6144 37.1745 54.9271 35.0792 55.331C33.5898 55.634 32.4033 54.7252 31.0148 54.8766C30.0555 54.9776 29.071 54.8261 28.5914 53.7154C28.4651 53.4377 28.1874 53.3115 27.8593 53.261C26.9252 53.1348 26.0164 53.059 25.9154 51.7968C25.8902 51.4434 25.3601 51.3424 25.0066 51.2162C24.0726 50.888 23.0628 50.3326 22.9113 49.449C22.7346 48.5907 22.3055 48.2373 21.7501 47.8334C21.1442 47.4295 20.6393 46.7226 20.9423 46.1925C21.4976 45.208 21.018 44.7031 20.4121 44.1477C19.68 43.4913 19.4528 42.7845 20.0082 41.9262C20.3364 41.4213 20.2102 40.9921 19.9072 40.5377C19.6043 40.1338 19.579 39.5784 19.3771 39.1745C18.9227 38.2405 19.7558 37.4579 19.5033 36.6248C18.8974 34.5548 19.4276 32.4342 19.1246 30.3389C19.1246 30.3137 19.3266 30.2379 19.4276 30.1874C20.5131 30.8438 20.0839 32.0303 20.2607 32.9643C20.5383 34.378 19.3771 35.9432 20.6646 37.3317C20.7403 37.4074 20.6646 37.7103 20.5636 37.7861C19.3014 38.8211 20.2354 39.8056 20.7151 40.6639C21.119 41.3708 21.4471 41.9009 20.6646 42.5068C20.3869 42.734 20.3364 43.1127 20.5888 43.2641C21.8006 43.87 21.8511 45.2332 22.5831 46.2177C21.5481 46.2177 21.6491 46.6721 22.1792 47.2275C22.4822 47.5305 22.8608 47.6567 23.2648 47.8082C23.8454 48.0354 24.628 48.2626 23.8959 49.1714C23.5929 49.55 24.0473 49.5753 24.1736 49.7772C24.9309 51.0395 26.9757 50.7365 27.4049 52.4027C27.4301 52.4784 27.7078 52.5541 27.8593 52.5289C28.5661 52.3774 29.0205 52.7813 29.2982 53.2862C29.8031 54.1193 30.5604 54.1445 31.3683 54.195C31.6964 54.2203 32.0246 54.2708 32.3528 54.397C33.6655 54.8766 35.1802 54.8514 36.19 54.2203C37.8814 53.1095 39.598 51.7968 40.2039 49.6762C39.9262 49.55 39.7494 49.8025 39.5222 49.853C39.1436 49.9035 38.6892 50.3579 38.4115 49.853C38.1338 49.3986 38.7902 49.449 38.9164 49.1714C39.0678 48.8179 39.295 48.5655 38.9921 48.1363C38.7144 47.7577 38.462 47.7324 38.0328 47.8334C36.9978 48.0606 35.9375 48.2626 34.8772 48.414C34.5996 48.4645 34.1704 48.6917 34.0694 48.2626C33.9684 47.7829 34.4228 47.8839 34.751 47.7829C35.3821 47.6062 35.988 47.3537 36.6191 47.1518C37.5027 46.8489 37.326 46.3187 36.8463 45.8391C36.0133 44.9808 34.9782 44.5768 33.7917 44.8293C31.3935 45.3594 28.9448 45.3089 26.5213 45.5614C25.6882 45.6371 24.9056 45.4604 24.1988 44.804C24.426 44.7536 24.5775 44.6778 24.7037 44.6778C27.3291 44.9808 29.9546 44.5516 32.5548 44.4506C33.0849 44.4254 33.615 44.5011 34.1199 44.1982C34.4986 43.971 34.6753 43.6933 34.3471 43.4408C33.2616 42.532 32.2771 41.6485 30.5352 41.9514C27.6321 42.4563 24.6784 42.6583 21.7248 41.7242C24.9561 42.0271 28.1117 41.5727 31.2925 40.9669C30.9391 40.159 30.207 40.0328 29.8283 39.5027C29.0962 38.4929 28.1622 38.291 26.9 38.3414C25.4358 38.4172 23.8454 38.2152 22.3307 37.6598C22.0783 37.5589 21.6491 37.5084 21.8006 37.1045C21.9268 36.751 22.1792 37.054 22.4064 37.0792C23.8706 37.2812 25.2843 37.887 26.799 37.7103C27.2029 37.6598 27.7583 37.6093 27.3039 37.1297C26.7485 36.5238 26.3193 35.5645 25.2843 35.6908C24.325 35.817 23.5677 35.0849 22.6336 35.1859C22.3307 35.2111 21.6491 34.378 21.4471 33.8227C22.4822 34.2266 23.3657 35.0092 24.7542 34.8324C23.4667 33.3683 22.053 32.207 20.9423 30.4904C22.4064 30.869 22.7599 32.409 24.0221 32.8129C23.9211 32.308 23.9464 31.8536 23.7444 31.5254C23.5424 31.172 23.7192 31.071 23.9211 30.97C24.1988 30.8438 24.2745 31.071 24.2998 31.2982C24.325 31.8788 24.7794 32.3332 24.6784 32.9896C24.5775 33.7217 25.0571 34.1508 25.7387 34.479C25.6882 33.8227 25.6125 33.2673 25.5873 32.7119C25.5873 32.5099 25.5368 32.2575 25.8145 32.207C26.0921 32.1565 26.1426 32.3837 26.1679 32.6109C26.2436 33.2673 26.5213 33.8732 26.4708 34.5548C26.4203 35.5645 27.2534 36.4986 28.3137 36.751C28.4904 36.3219 27.733 35.6908 28.4904 35.4636C29.0458 35.2868 29.1972 35.9685 29.172 36.2966C28.9195 38.3414 30.5352 38.8716 31.7217 39.7551C32.5043 37.988 31.4692 36.2209 31.9994 34.5043C32.378 35.7917 32.8324 37.0792 32.8072 38.3667C32.782 40.2348 33.4383 41.6232 34.852 42.734C35.1802 42.9864 35.4579 43.0369 35.7356 42.5573C35.9628 42.1281 35.4831 41.1941 36.3162 41.3455C36.8716 41.4465 36.4677 42.3048 36.5434 42.8097C36.5434 42.8855 36.5181 42.9864 36.5434 43.0622C36.7453 43.971 37.0988 45.107 38.0076 45.1575C38.9669 45.208 38.5377 43.9962 38.7144 43.3399C38.8154 42.936 38.6134 42.2039 39.2698 42.3048C39.7999 42.3806 39.8757 43.1632 39.699 43.5418C39.2698 44.4254 39.5222 45.2332 39.6485 46.0915C39.7242 46.5964 39.6737 47.2275 40.2796 47.2528C40.6835 47.2528 40.9359 46.6721 41.0369 46.2177C41.7438 43.0622 42.0467 39.8814 41.5418 36.6753C41.4913 36.3471 41.3146 35.8927 41.8952 35.7665C42.4001 37.5589 42.7031 39.3512 42.5264 41.2193C42.3496 43.2641 42.0719 45.3089 41.5166 47.3033C41.4408 47.5809 41.2894 48.0101 41.7438 48.1616C42.1224 48.2878 42.2487 47.9344 42.3749 47.6819C42.6526 47.0761 43.0312 46.4954 42.9555 45.7886C42.9303 45.4099 43.1322 45.208 43.4604 45.208C43.9653 45.208 43.7128 45.6119 43.7381 45.8643C43.8391 46.4449 43.1827 46.7984 43.3847 47.5557C44.5207 46.2682 45.8334 45.2584 45.48 43.2894C45.3537 42.633 45.3537 41.9009 45.5557 41.1941C45.6567 40.8154 45.6567 40.2095 45.1265 40.159C44.0663 40.0581 44.2177 39.3765 44.2682 38.7201C44.2935 38.291 44.2682 37.9375 43.8896 37.6093C43.5109 37.2812 43.3342 36.852 43.3594 36.2714C43.3847 35.4383 42.9555 34.6557 42.6021 33.9489C42.3244 33.3683 41.668 33.5702 41.1379 33.6712C41.0369 33.6964 40.8097 33.5197 40.734 33.3935C40.0019 31.9798 38.5882 31.2982 37.4774 30.3137C37.1997 30.0612 36.8968 29.834 36.7706 30.2884C36.4677 31.2225 35.8618 30.7681 35.3569 30.6923C34.2461 30.4904 33.2868 29.2786 31.9741 30.2127C31.8479 30.2884 31.5702 30.2127 31.3683 30.137C30.409 29.7583 29.4497 29.1019 28.4146 29.9855C28.3137 30.0865 27.9602 30.036 27.8088 29.935C26.9757 29.3039 26.0669 29.6068 25.1581 29.5563C24.527 29.5058 23.9211 30.0612 23.4667 29.834C22.9618 29.5816 22.4317 29.3796 21.9268 29.1019C20.9675 28.4203 19.5538 28.6475 19.0742 29.3039ZM75.0413 59.9255C75.0413 59.0925 75.1928 58.2089 74.9909 57.4263C74.6627 56.2398 75.1171 55.4068 75.7987 54.5737C76.2531 54.0183 76.3288 53.362 76.3288 52.6804C76.3288 52.2259 76.1773 51.9483 75.6472 52.125C74.0063 52.6551 72.3402 52.6046 70.6993 52.3017C69.6138 52.0997 68.3515 52.5289 67.569 52.1755C66.1805 51.5443 65.1707 51.8725 64.06 52.4784C63.5551 52.7561 63.2016 52.6804 62.8735 52.2764C62.3433 51.6201 61.9142 51.822 61.2831 52.2764C60.45 52.9076 59.5917 53.8416 58.3547 52.958C58.0013 52.7056 57.6731 53.0338 57.5216 53.3115C57.0672 54.2455 56.6633 55.2048 55.3001 54.6494C55.1991 54.5989 54.9972 54.9019 54.8204 55.0028C53.7097 55.7602 52.9524 56.9719 52.1193 57.9312C51.0338 59.1682 49.4434 60.5819 49.7463 62.7024C49.7715 62.9549 49.5191 63.2326 49.4686 63.5103C49.3171 64.4191 48.989 65.5551 49.4434 66.2367C50.5036 67.8271 51.4124 69.6699 53.634 70.4273C52.8261 67.1202 51.3619 63.9899 51.9173 60.2032C52.5989 61.0363 52.5989 61.6422 52.5484 62.2733C52.296 64.5705 53.3563 66.5901 53.9116 68.7107C54.0379 69.1651 54.366 69.6699 55.0224 69.5437C55.6788 69.3923 55.6535 68.8369 55.603 68.332C55.5778 67.8271 55.5525 67.3222 55.5021 66.8425C55.2748 64.722 54.8204 62.6267 54.8962 60.4809C54.9467 59.2439 55.1234 58.0322 55.2244 56.7952C55.7545 57.2749 55.6283 57.7293 55.603 58.1837C55.4768 60.9353 55.5525 63.687 56.1837 66.3881C56.3099 66.9435 56.3099 67.8271 57.0167 67.9281C57.875 68.029 58.3042 67.2465 58.6576 66.5901C58.8091 66.2872 58.9858 65.9338 58.9606 65.6308C58.8091 64.4191 58.9606 63.2326 58.9101 62.0461C58.8343 60.4557 59.0615 58.8905 59.0363 57.3001C59.0363 56.9972 59.011 56.3913 59.5412 56.467C60.0208 56.5428 59.8189 57.0982 59.7684 57.4263C59.5412 59.3449 59.6926 61.2887 59.6674 63.2073C59.6674 63.788 59.6169 64.3938 59.6926 64.9745C59.7684 65.4036 59.7936 65.8328 60.5257 65.3026C61.8384 64.3433 62.1414 63.1064 62.2171 61.6422C62.3433 59.0925 61.586 56.4923 62.7725 54.0183C62.8987 53.7406 62.8482 53.2357 63.3026 53.3367C63.8075 53.4629 63.4793 53.8668 63.3784 54.1698C62.621 56.6942 63.2521 59.2439 63.1259 61.7936C63.1259 62.0713 63.2774 62.2733 63.6056 62.2228C64.3881 62.0966 66.0795 60.178 66.0543 59.3449C66.029 57.8555 66.4834 56.467 66.9126 55.0786C67.0388 54.6747 67.0893 53.9173 67.9729 53.7911C67.5942 55.2553 67.2408 56.6185 66.8873 57.9565C66.8116 58.2846 66.6601 58.6381 66.9883 58.8905C67.3922 59.1682 67.7204 58.9158 67.9729 58.6128C68.4778 58.007 68.9826 57.4263 69.0836 56.568C69.2351 55.432 69.8157 54.4475 70.8507 53.6649C70.8255 54.3717 70.5478 54.8261 70.3206 55.3058C70.1944 55.5582 70.0682 55.9117 70.3711 56.0884C70.6235 56.2398 70.8255 55.9874 71.0275 55.8359C71.2547 55.6592 71.4566 55.4068 71.6838 55.2553C72.6431 54.6999 73.3247 53.6396 74.6122 53.6144C74.3345 54.3212 73.7034 54.4475 73.2742 54.8009C72.8956 55.1291 72.1635 55.432 72.3907 56.0126C72.5926 56.5175 73.2237 55.9874 73.6529 56.0631C73.7539 56.0884 73.8296 56.1893 73.9811 56.3156C73.249 56.7195 72.5674 56.9719 71.81 56.9214C71.2799 56.8709 70.8255 56.9972 70.4216 57.3758C69.8662 57.9565 71.1284 57.906 70.7245 58.4614C69.841 58.3099 69.0079 58.4614 68.2758 59.042C68.0738 59.2187 67.8971 59.3954 67.9476 59.6731C67.9981 60.0013 68.3263 59.9255 68.5535 60.0265C69.1846 60.279 69.9419 59.7741 70.674 60.4304C69.5633 60.9101 68.5535 61.1373 67.4427 61.112C67.0388 61.0868 66.5844 60.9606 66.231 61.2887C65.5494 61.8694 64.3629 62.3743 64.5901 63.2831C64.7668 64.0152 65.9785 63.8889 66.7611 63.7122C68.4778 63.3336 70.2954 63.9647 71.9615 63.1316C72.214 63.0054 72.7188 62.8792 72.7946 63.3083C72.8703 63.7375 72.4159 63.9394 72.012 63.9647C69.8915 64.0152 67.7962 64.5453 65.6756 64.4948C64.2367 64.4696 62.6968 64.1666 61.687 65.6813C61.5103 65.959 60.9296 66.06 61.1063 66.5396C61.2578 67.0193 61.7627 67.0698 62.1666 67.0698C63.959 67.0698 65.7766 67.2212 67.569 66.9688C68.7302 66.7921 69.8915 66.7416 71.0527 66.6406C69.4875 67.7009 67.7204 67.7766 66.0038 67.9028C64.2619 68.029 62.4948 67.8523 60.7529 67.7261C59.9198 67.6756 59.2887 68.0038 58.6829 68.4582C58.2285 68.8116 58.2537 69.3165 58.7586 69.4175C59.9199 69.6447 61.0054 70.3768 62.1414 70.3263C63.8832 70.2506 65.6251 70.5535 67.3418 70.1496C67.8214 70.0486 68.6545 69.7709 69.0584 70.5787C66.9883 71.1846 64.9183 70.8817 62.8735 71.0584C60.9044 71.2099 59.1373 70.0991 57.1934 70.4778C56.8653 70.5535 56.4613 70.4273 56.3351 70.8312C56.2089 71.2856 56.5371 71.5633 56.9157 71.6895C58.5566 72.2449 60.1471 73.0527 61.9647 73.078C63.6813 73.078 65.3727 73.5829 67.3418 73.2042C66.8116 74.0373 66.2815 74.0373 65.7513 74.0877C62.4948 74.3907 59.4907 73.1789 56.3856 72.5478C55.9817 72.4721 55.5273 71.7905 55.1991 72.3206C54.8457 72.9517 55.7293 73.0022 56.0322 73.3556C56.1332 73.4819 56.3099 73.5576 56.4613 73.6081C56.9157 73.7343 57.7236 73.5576 57.5974 74.2645C57.4711 74.9713 56.739 74.3654 56.3099 74.4917C56.2594 74.5169 56.2089 74.6179 56.1332 74.7441C57.0167 75.7539 57.9255 76.6879 59.4907 76.3345C59.7431 76.284 60.0713 76.385 60.349 76.4607C61.3335 76.7637 62.2928 77.2181 62.924 75.8801C62.9744 75.7539 63.3026 75.7286 63.5046 75.7286C65.196 75.7791 66.7359 74.9965 68.3768 74.7946C68.8312 74.7441 69.3613 74.5926 69.3361 73.9868C69.2856 72.9517 70.0429 72.6488 70.7245 72.2449C71.0275 72.0682 71.5071 72.0682 71.5576 71.5885C71.6586 70.9322 72.0877 70.5787 72.6431 70.3263C73.2237 70.0739 73.5267 69.7204 72.9965 69.0641C72.6684 68.6602 72.8451 68.231 73.0218 67.7766C73.2995 66.9183 74.183 66.2114 74.0063 65.3026C73.8044 64.2929 74.1325 63.586 74.6374 62.8539C74.9656 62.3743 75.1928 61.9703 74.6879 61.415C74.082 60.7334 74.2335 60.2032 75.0413 59.9255C76.0006 61.2635 75.622 62.5257 74.8141 63.7627C74.7636 63.8384 74.7384 63.9394 74.7636 63.9899C75.319 65.3026 74.385 66.2367 73.9306 67.297C73.8044 67.6251 73.3247 68.1048 73.8044 68.3825C74.8646 69.0136 74.1325 69.7204 73.7539 70.0486C72.2644 71.4118 70.8003 72.7498 69.9924 74.6431C69.8915 74.8956 69.6895 75.0218 69.437 75.0975C67.9476 75.5014 66.4834 75.9558 64.994 76.3345C64.2367 76.5112 63.1764 75.8549 62.8987 77.2181C62.8735 77.2938 62.6968 77.3695 62.5705 77.3695C61.3083 77.3443 60.0208 77.2686 58.7586 77.1423C56.6633 76.9404 55.3506 75.249 54.2146 73.6586C53.6592 72.8508 53.3563 72.977 52.8261 73.5071C51.7406 74.5674 50.7813 75.8549 49.3676 76.4607C48.3074 76.9151 47.9287 77.6725 47.9034 78.6823C47.8782 83.5292 47.9034 88.3509 47.8782 93.1979C47.8782 94.0057 48.0044 94.2329 48.888 93.8795C57.2692 90.3705 64.6406 85.3973 70.5731 78.455C76.4298 71.6138 79.7621 63.7375 79.8126 54.6494C79.8631 42.6583 79.8126 30.6923 79.8378 18.7012C79.8378 17.6661 79.4844 17.4642 78.5251 17.4642C68.6797 17.4894 58.8596 17.4894 49.0142 17.4642C48.0297 17.4642 47.853 17.7419 47.853 18.6759C47.8782 33.343 47.8782 48.0354 47.8782 62.7024C47.8782 66.5649 47.9034 70.4273 47.8782 74.3149C47.8782 75.2237 48.0297 75.2995 48.8122 74.8198C50.0745 74.0373 51.0085 72.9265 52.1193 72.0177C53.0281 71.2856 52.8009 71.0079 51.9931 70.5535C50.3269 69.6447 49.4686 68.029 48.686 66.4386C48.2064 65.4793 48.2569 64.1666 48.6355 63.1316C48.888 62.4248 49.0899 61.7431 49.2414 61.0111C49.4434 60.0518 49.3676 58.941 50.7561 58.739C50.9075 58.7138 51.1095 58.4361 51.1347 58.2846C51.2105 57.1991 51.5891 56.467 52.8009 56.3661C52.9524 56.3661 53.1796 56.1641 53.2553 56.0126C53.9116 54.8009 54.2651 53.2357 56.2341 53.6396C56.6128 53.7154 56.5876 53.2357 56.739 53.0085C57.2187 52.1755 58.2537 51.4686 58.8596 51.8725C60.0461 52.6551 60.5762 52.0492 61.2578 51.3929C61.8637 50.787 62.4948 50.6608 63.0754 51.3676C63.4036 51.7715 63.6813 51.822 64.1357 51.5696C65.196 50.989 66.3572 51.2919 67.4427 51.3929C67.8214 51.4181 68.3263 51.5696 68.5787 51.4434C69.7905 50.787 71.0275 52.0997 72.1887 51.2919C72.214 51.2667 72.3654 51.3424 72.4159 51.3929C72.946 51.9987 73.6024 51.7968 74.2588 51.6706C74.9404 51.5443 75.6472 51.5443 76.3541 51.3171C77.2376 51.0395 77.3891 51.4686 77.1871 52.4279C76.9094 53.7659 76.5308 55.0533 75.5967 56.0884C75.3443 56.3661 75.7482 56.5175 75.7482 56.7447C75.7229 57.8302 76.3036 59.0925 75.0413 59.9255Z" fill="#34353C"/> -<path d="M75.0416 59.9255C76.3038 59.0672 75.7232 57.8302 75.698 56.6942C75.698 56.4923 75.3193 56.3156 75.5465 56.0379C76.4806 55.0028 76.8592 53.7154 77.1369 52.3774C77.3389 51.4434 77.1622 50.989 76.3038 51.2666C75.597 51.4938 74.9154 51.4939 74.2085 51.6201C73.5522 51.7463 72.9211 51.9482 72.3657 51.3424C72.3152 51.2919 72.189 51.2162 72.1385 51.2414C70.9772 52.0492 69.715 50.7365 68.5285 51.3929C68.2761 51.5443 67.7712 51.3929 67.3925 51.3424C66.307 51.2414 65.1457 50.9385 64.0855 51.5191C63.6311 51.7715 63.3534 51.721 63.0252 51.3171C62.4446 50.6103 61.8135 50.7365 61.2076 51.3424C60.526 52.024 59.9959 52.6299 58.8094 51.822C58.2035 51.4181 57.1685 52.125 56.6888 52.958C56.5626 53.1852 56.5626 53.6649 56.1839 53.5891C54.2149 53.1852 53.8614 54.7504 53.2051 55.9621C53.1293 56.1136 52.9021 56.3156 52.7507 56.3156C51.5389 56.3913 51.135 57.1486 51.0845 58.2341C51.0845 58.4109 50.8573 58.6633 50.7059 58.6885C49.3174 58.8905 49.3931 59.976 49.1912 60.9606C49.0397 61.6926 48.8378 62.3743 48.5853 63.0811C48.2066 64.1161 48.1562 65.4288 48.6358 66.3881C49.4184 67.9533 50.2767 69.5942 51.9428 70.503C52.7507 70.9322 52.9779 71.2098 52.0691 71.9672C50.9583 72.876 50.0243 73.9868 48.762 74.7693C47.9794 75.249 47.8027 75.1732 47.828 74.2644C47.8532 70.402 47.828 66.5396 47.828 62.6519C47.828 47.9849 47.828 33.2925 47.8027 18.6254C47.8027 17.6914 47.9794 17.4137 48.964 17.4137C58.8094 17.4389 68.6295 17.4389 78.4749 17.4137C79.4342 17.4137 79.7876 17.6157 79.7876 18.6507C79.7623 30.6418 79.8128 42.6078 79.7623 54.5989C79.7119 63.687 76.3796 71.5633 70.5228 78.4045C64.5904 85.3468 57.219 90.2947 48.8378 93.829C47.9794 94.1824 47.828 93.9552 47.828 93.1474C47.8532 88.3004 47.828 83.4787 47.8532 78.6317C47.8532 77.622 48.2571 76.8646 49.3174 76.4102C50.7311 75.7791 51.6904 74.5169 52.7759 73.4566C53.3313 72.9265 53.609 72.8003 54.1644 73.6081C55.3004 75.1985 56.6131 76.8899 58.7084 77.0918C59.9454 77.2181 61.2328 77.2938 62.5203 77.319C62.6213 77.319 62.8232 77.2433 62.8485 77.1676C63.1009 75.8044 64.1865 76.4607 64.9438 76.284C66.4332 75.9053 67.8974 75.4509 69.3868 75.047C69.6393 74.9713 69.8412 74.8451 69.9422 74.5926C70.7753 72.6993 72.2142 71.3613 73.7037 69.9981C74.0823 69.6699 74.8397 68.9631 73.7541 68.332C73.2745 68.0543 73.7541 67.5494 73.8804 67.2465C74.3348 66.1862 75.2688 65.2521 74.7134 63.9394C74.6882 63.8889 74.7387 63.7627 74.7639 63.7122C75.6222 62.551 76.0009 61.2887 75.0416 59.9255Z" fill="#FCFCFC"/> -<path d="M19.5032 30.2379C19.4022 30.2884 19.175 30.3389 19.2003 30.3894C19.5032 32.4594 18.9731 34.6052 19.5789 36.6753C19.8314 37.5084 18.9731 38.2909 19.4527 39.225C19.6547 39.6289 19.6799 40.1843 19.9828 40.5882C20.311 41.0426 20.4372 41.4465 20.0838 41.9766C19.5284 42.835 19.7556 43.5418 20.4877 44.1982C21.0936 44.7283 21.5732 45.2332 21.0179 46.243C20.7149 46.7984 21.2451 47.48 21.8257 47.8839C22.4063 48.2878 22.8355 48.6412 22.9869 49.4995C23.1636 50.3831 24.1734 50.9385 25.0822 51.2666C25.4357 51.3929 25.9658 51.4938 25.991 51.8473C26.092 53.1095 27.0008 53.2105 27.9349 53.3115C28.2378 53.3619 28.5407 53.4882 28.667 53.7659C29.1466 54.8766 30.1311 55.0281 31.0904 54.9271C32.4789 54.7756 33.6401 55.6592 35.1548 55.3815C37.2501 54.9776 38.5123 53.6649 39.8251 52.3017C40.027 52.0997 40.1532 51.822 40.2795 51.5443C40.7591 50.4841 41.2135 50.4336 42.1223 51.2414C43.2836 52.2764 44.4448 53.261 45.3031 54.5989C45.5303 54.9776 45.909 55.432 46.2877 55.533C47.6761 55.8359 47.5751 56.8204 47.5751 57.8555C47.5499 69.5437 47.5499 81.2319 47.5499 92.9202C47.5499 94.4096 47.5499 94.3591 46.1867 93.8542C39.6736 91.355 33.9178 87.6188 28.8689 82.9233C23.7695 78.1773 19.7051 72.573 17.3069 65.9337C16.1709 62.7529 15.666 59.4459 15.666 56.0631C15.666 44.1224 15.666 32.1818 15.666 20.2411C15.666 17.5399 15.666 17.5399 18.3924 17.5399C27.6824 17.5399 36.9724 17.5652 46.2624 17.5399C47.3479 17.5399 47.6256 17.8933 47.6256 18.9284C47.6004 30.2379 47.6004 41.5475 47.5751 52.857C47.5751 53.2105 47.8023 53.7154 47.3479 53.8668C46.9188 54.0183 46.6916 53.5387 46.5401 53.2357C45.808 51.7715 44.2681 51.1657 43.2583 50.0044C43.0311 49.752 42.602 49.4743 42.9806 49.2218C43.7632 48.7169 44.0661 47.8586 44.672 47.2528C45.9595 45.9653 46.843 44.5263 46.1362 42.5825C46.0857 42.4563 46.0605 42.3301 46.0857 42.2038C46.2877 41.0174 46.111 40.0833 45.3789 38.9473C44.8235 38.089 44.4448 36.8268 44.1671 35.6908C43.7127 34.0246 43.0564 32.7624 41.163 32.106C40.1027 31.7274 39.0677 30.6671 38.1337 29.7835C37.5278 29.2029 36.8714 28.7737 36.0131 29.3544C35.7859 29.5058 35.382 29.6321 35.1801 29.5311C33.5392 28.7233 31.6458 29.2281 29.9797 28.6223C29.3233 28.3698 28.7427 28.4708 28.0358 28.597C26.3445 28.8747 24.4511 29.1777 22.8355 28.5213C21.6995 28.0417 20.513 28.2436 19.4275 27.8145C19.175 27.7135 18.9731 27.9154 18.8216 28.1426C18.5439 28.6475 18.7711 29.0262 19.1498 29.3544C19.2507 29.6068 19.7809 29.7583 19.5032 30.2379Z" fill="#1F00FB"/> -<path d="M19.5034 30.2379C19.7558 29.733 19.2509 29.6068 19.0742 29.3038C19.5539 28.6475 20.9676 28.4203 21.9269 28.9757C22.4317 29.2533 22.9619 29.4553 23.4668 29.7077C23.9212 29.9349 24.527 29.3796 25.1582 29.4301C26.067 29.4805 26.9758 29.2029 27.8088 29.8087C27.9603 29.9097 28.2885 29.9602 28.4147 29.8592C29.4497 28.9757 30.409 29.632 31.3683 30.0107C31.5703 30.0864 31.848 30.1874 31.9742 30.0864C33.2617 29.1776 34.2462 30.3894 35.357 30.5661C35.8618 30.667 36.4677 31.0962 36.7707 30.1622C36.9221 29.7077 37.1998 29.9349 37.4775 30.1874C38.5883 31.1719 40.0272 31.8535 40.7341 33.2672C40.8098 33.3935 41.0117 33.5702 41.138 33.5449C41.6933 33.4187 42.3245 33.242 42.6021 33.8226C42.9556 34.5547 43.3847 35.312 43.3595 36.1451C43.3342 36.7257 43.511 37.1549 43.8896 37.4831C44.2683 37.8112 44.2935 38.1647 44.2683 38.5938C44.2178 39.2502 44.0663 39.9318 45.1266 40.0328C45.6567 40.0833 45.6567 40.6891 45.5558 41.0678C45.3538 41.7746 45.3538 42.5067 45.48 43.1631C45.8587 45.1322 44.5207 46.142 43.3847 47.4294C43.1828 46.6973 43.8644 46.3187 43.7382 45.738C43.6877 45.5108 43.9401 45.0817 43.4605 45.0817C43.1323 45.0817 42.9051 45.2836 42.9556 45.6623C43.0313 46.3692 42.6526 46.9498 42.3749 47.5556C42.2487 47.8081 42.0973 48.1615 41.7438 48.0353C41.2894 47.8838 41.4409 47.4547 41.5166 47.177C42.072 45.1827 42.3245 43.1379 42.5264 41.093C42.7031 39.2249 42.4002 37.4326 41.8953 35.6402C41.3147 35.7664 41.4914 36.2208 41.5419 36.549C42.0468 39.7803 41.7438 42.9359 41.037 46.0915C40.936 46.5459 40.6836 47.1265 40.2796 47.1265C39.6738 47.1012 39.7243 46.4701 39.6485 45.9652C39.5223 45.1069 39.2699 44.2991 39.699 43.4155C39.8757 43.0369 39.8 42.2543 39.2699 42.1786C38.6135 42.0776 38.8155 42.8097 38.7145 43.2136C38.5378 43.8699 38.9417 45.0817 38.0076 45.0312C37.0988 44.9807 36.7454 43.8447 36.5435 42.9359C36.5182 42.8602 36.5687 42.7592 36.5435 42.6834C36.4677 42.1786 36.8716 41.3202 36.3163 41.2193C35.4832 41.0678 35.9628 42.0271 35.7356 42.431C35.4579 42.9106 35.1802 42.8854 34.8521 42.6077C33.4384 41.497 32.7568 40.1085 32.8073 38.2404C32.8325 36.9529 32.3781 35.6655 31.9994 34.378C31.4693 36.0946 32.5043 37.8617 31.7217 39.6289C30.5352 38.7958 28.8944 38.2657 29.1468 36.2461C29.1973 35.9179 29.0458 35.2363 28.4652 35.413C27.7079 35.6402 28.4652 36.2713 28.2885 36.7005C27.2282 36.448 26.3951 35.514 26.4456 34.5042C26.4961 33.8226 26.2437 33.2167 26.1427 32.5604C26.1174 32.3332 26.067 32.1312 25.7893 32.1565C25.5116 32.207 25.5621 32.4594 25.5621 32.6614C25.5873 33.2167 25.663 33.7974 25.7135 34.4285C25.0319 34.1255 24.5523 33.6711 24.6533 32.9391C24.7542 32.2827 24.2998 31.8283 24.2746 31.2477C24.2746 31.0205 24.1736 30.7933 23.8959 30.9195C23.694 31.0205 23.5173 31.1214 23.7192 31.4749C23.8959 31.803 23.8959 32.2574 23.9969 32.7623C22.7347 32.3584 22.3813 30.8185 20.9171 30.4398C22.0278 32.1817 23.4415 33.3177 24.729 34.7819C23.3405 34.9839 22.4822 34.176 21.422 33.7721C21.6492 34.3023 22.3308 35.1606 22.6085 35.1353C23.5425 35.0343 24.2998 35.7664 25.2591 35.6402C26.2942 35.514 26.7233 36.4733 27.2787 37.0792C27.7331 37.584 27.1777 37.6093 26.7738 37.6598C25.2591 37.8365 23.8454 37.2306 22.3813 37.0287C22.1541 37.0034 21.9016 36.6752 21.7754 37.0539C21.6239 37.4578 22.0531 37.5083 22.3055 37.6093C23.8202 38.1647 25.4106 38.3919 26.9758 38.2909C28.238 38.2152 29.172 38.4171 29.9041 39.4521C30.2828 39.957 31.0149 40.0833 31.3683 40.9163C28.1875 41.5474 25.0319 41.9766 21.8006 41.6737C24.7542 42.5825 27.7079 42.4058 30.611 41.9009C32.3529 41.5979 33.3374 42.4815 34.4229 43.3903C34.7511 43.6427 34.5491 43.9204 34.1957 44.1476C33.6908 44.4758 33.1607 44.3748 32.6305 44.4001C30.0051 44.5263 27.4049 44.9302 24.7795 44.6273C24.6533 44.602 24.5018 44.703 24.2746 44.7535C25.0067 45.4099 25.764 45.6118 26.5971 45.5108C29.0206 45.2584 31.4693 45.2836 33.8675 44.7787C35.054 44.5263 36.0891 44.9302 36.9221 45.7885C37.4018 46.2682 37.5532 46.7983 36.6949 47.1012C36.0638 47.3032 35.4579 47.5809 34.8268 47.7324C34.5239 47.8081 34.0442 47.7324 34.1452 48.212C34.2462 48.6159 34.6754 48.3887 34.953 48.3635C36.0133 48.1868 37.0736 48.01 38.1086 47.7828C38.5125 47.6819 38.7902 47.7071 39.0679 48.0858C39.3708 48.4897 39.1436 48.7674 38.9922 49.1208C38.866 49.4237 38.2096 49.3733 38.4873 49.8024C38.7902 50.3073 39.2446 49.8529 39.598 49.8024C39.8252 49.7772 40.002 49.4995 40.2796 49.6257C39.6485 51.7715 37.9319 53.0842 36.2658 54.1697C35.2812 54.8261 33.7413 54.8261 32.4286 54.3464C32.1257 54.2455 31.7722 54.1697 31.4441 54.1445C30.6362 54.0687 29.8789 54.0687 29.374 53.2357C29.0963 52.756 28.6419 52.3269 27.9351 52.4783C27.7836 52.5036 27.5059 52.4278 27.4807 52.3521C27.0515 50.686 25.0319 50.9889 24.2494 49.7267C24.1231 49.5247 23.6687 49.4995 23.9717 49.1208C24.7038 48.212 23.9212 47.9848 23.3405 47.7576C22.9366 47.6061 22.5327 47.4799 22.255 47.177C21.7249 46.6216 21.6239 46.1672 22.6589 46.1672C21.9016 45.1827 21.8511 43.8195 20.6646 43.2136C20.3869 43.0874 20.4374 42.6834 20.7404 42.4562C21.5482 41.8504 21.22 41.3202 20.7908 40.6134C20.3112 39.7551 19.3772 38.7705 20.6394 37.7355C20.7404 37.6598 20.7908 37.3568 20.7404 37.2811C19.4529 35.9179 20.6394 34.3275 20.3364 32.9138C20.1597 32.0807 20.6141 30.9195 19.5034 30.2379ZM38.1844 50.1306C35.357 50.6607 32.7063 52.0239 29.7527 52.0492C32.8577 52.756 35.5084 51.3928 38.1844 50.1306ZM32.6558 48.5907C30.5352 48.3635 28.5157 49.0198 26.4456 48.8684C26.2689 48.8431 26.0922 48.9693 26.1175 49.1461C26.1679 49.4742 26.4709 49.4742 26.6981 49.4742C28.0613 49.3985 29.4497 49.449 30.7877 49.1965C31.3683 49.0956 32.2519 49.5752 32.6558 48.5907ZM38.3611 33.4692C37.8057 33.7469 37.8562 34.176 37.9571 34.5799C38.3611 36.3976 39.0932 38.1394 38.8912 40.0833C38.866 40.3609 38.8407 40.7649 39.2194 40.7649C39.6485 40.7649 39.5223 40.3357 39.5223 40.0833C39.5476 37.8112 38.9417 35.6655 38.3611 33.4692ZM35.7861 37.4831C35.7104 35.7664 35.4327 34.0751 34.5996 32.5351C34.9026 34.176 34.7511 35.9432 35.7861 37.4831Z" fill="#FCFCFC"/> -<path d="M75.0411 59.9255C74.2333 60.178 74.0566 60.7333 74.612 61.314C75.1169 61.8693 74.8897 62.2733 74.5615 62.7529C74.0566 63.485 73.7284 64.1918 73.9304 65.2016C74.1071 66.1104 73.2488 66.8173 72.9458 67.6756C72.7944 68.13 72.5924 68.5844 72.9206 68.9631C73.4507 69.5942 73.1478 69.9476 72.5672 70.2253C71.9865 70.4777 71.5574 70.8059 71.4816 71.4875C71.4059 71.9672 70.9515 71.9672 70.6486 72.1439C69.967 72.5478 69.2096 72.8507 69.2601 73.8858C69.2854 74.4916 68.7805 74.6431 68.3008 74.6936C66.6599 74.8955 65.12 75.6781 63.4286 75.6276C63.2267 75.6276 62.8985 75.6529 62.848 75.7791C62.2169 77.0918 61.2323 76.6374 60.2731 76.3597C59.9954 76.284 59.6672 76.183 59.4147 76.2335C57.8496 76.5869 56.9408 75.6781 56.0572 74.6431C56.1582 74.5169 56.1834 74.4159 56.2339 74.3906C56.6631 74.2897 57.3952 74.8703 57.5214 74.1634C57.6476 73.4566 56.8398 73.6333 56.3854 73.5071C56.2339 73.4566 56.0572 73.3809 55.9562 73.2546C55.6533 72.9012 54.7697 72.8507 55.1232 72.2196C55.4261 71.6642 55.9057 72.3458 56.3097 72.4468C59.4147 73.0779 62.4188 74.2897 65.6754 73.9867C66.2055 73.9362 66.7357 73.9362 67.2658 73.1032C65.2967 73.4818 63.6306 73.0022 61.8887 72.9769C60.0963 72.9769 58.5059 72.1439 56.8398 71.5885C56.4864 71.4623 56.1329 71.1846 56.2592 70.7302C56.3854 70.3263 56.7893 70.4272 57.1175 70.3768C59.0613 69.9981 60.8537 71.1089 62.7975 70.9574C64.8171 70.7807 66.8871 71.0836 68.9824 70.4777C68.5785 69.6699 67.7202 69.9224 67.2658 70.0486C65.5239 70.4525 63.782 70.1496 62.0654 70.2253C60.9294 70.2758 59.8439 69.5437 58.6826 69.3165C58.1778 69.2155 58.1778 68.6854 58.6069 68.3572C59.2128 67.8775 59.8439 67.5494 60.677 67.6251C62.4188 67.7513 64.186 67.928 65.9278 67.8018C67.6445 67.7008 69.4116 67.5999 70.9767 66.5396C69.8155 66.6406 68.6542 66.7163 67.493 66.8678C65.7006 67.1202 63.883 66.9687 62.0907 66.9687C61.6867 66.9687 61.1819 66.893 61.0304 66.4386C60.8537 65.959 61.4343 65.8832 61.611 65.5803C62.6208 64.0404 64.1607 64.3686 65.5997 64.3938C67.7454 64.4443 69.8155 63.9142 71.936 63.8637C72.3147 63.8637 72.7944 63.6365 72.7186 63.2073C72.6429 62.7781 72.138 62.9044 71.8856 63.0306C70.2194 63.8637 68.4018 63.2326 66.6852 63.6112C65.9026 63.7879 64.6909 63.8889 64.5141 63.1821C64.2869 62.2733 65.4987 61.7684 66.155 61.1877C66.5085 60.8848 66.9629 61.011 67.3668 61.011C68.4523 61.0615 69.4873 60.8343 70.5981 60.3294C69.866 59.6731 69.1087 60.178 68.4775 59.9255C68.2503 59.8245 67.9474 59.9003 67.8717 59.5721C67.8212 59.2944 67.9726 59.0924 68.1998 58.941C68.9319 58.3604 69.765 58.2089 70.6486 58.3604C71.0525 57.805 69.7903 57.8555 70.3456 57.2748C70.7243 56.8709 71.1787 56.7699 71.7341 56.8204C72.4914 56.8709 73.173 56.5932 73.9051 56.2146C73.7284 56.0883 73.6527 55.9621 73.5769 55.9621C73.1478 55.9116 72.5167 56.4165 72.3147 55.9116C72.0875 55.331 72.7944 55.0281 73.1983 54.6999C73.6274 54.3465 74.2585 54.195 74.5362 53.5134C73.2235 53.5639 72.5419 54.5989 71.6079 55.1543C71.3554 55.3058 71.1787 55.5582 70.9515 55.7349C70.7495 55.8864 70.5476 56.1641 70.2951 55.9874C69.9922 55.7854 70.0932 55.4572 70.2447 55.2048C70.4719 54.7251 70.7495 54.2707 70.7748 53.5639C69.7398 54.3465 69.1844 55.331 69.0077 56.467C68.8814 57.3253 68.4018 57.906 67.8969 58.5118C67.6445 58.7895 67.291 59.0672 66.9124 58.7895C66.5842 58.5623 66.7104 58.1836 66.8114 57.8555C67.1648 56.4923 67.5182 55.1543 67.8969 53.6901C67.0133 53.8163 66.9629 54.5737 66.8366 54.9776C66.4075 56.3408 65.9531 57.7545 65.9783 59.2439C66.0036 60.077 64.3122 61.9956 63.5296 62.1218C63.2014 62.1723 63.05 61.9703 63.05 61.6926C63.1509 59.1429 62.5198 56.5932 63.3024 54.0688C63.4034 53.7658 63.7316 53.3872 63.2267 53.2357C62.7723 53.1095 62.848 53.6396 62.6965 53.9173C61.51 56.3913 62.2674 58.9915 62.1411 61.5412C62.0654 63.0053 61.7877 64.2423 60.4498 65.2016C59.6924 65.757 59.6672 65.3279 59.6167 64.8734C59.541 64.2928 59.5662 63.7122 59.5915 63.1063C59.6419 61.1877 59.4905 59.2439 59.6924 57.3253C59.7429 56.9971 59.9196 56.4418 59.4652 56.366C58.9603 56.2651 58.9603 56.8709 58.9603 57.1991C58.9856 58.7895 58.7584 60.3547 58.8341 61.9451C58.8846 63.1316 58.7331 64.3433 58.8846 65.5298C58.9351 65.8327 58.7331 66.1862 58.5817 66.4891C58.2282 67.1707 57.7991 67.928 56.9408 67.8271C56.2087 67.7261 56.2339 66.8678 56.1077 66.2871C55.4766 63.586 55.4261 60.8343 55.5271 58.0827C55.5523 57.6283 55.6785 57.1739 55.1484 56.6942C55.0222 57.9312 54.8707 59.1429 54.8202 60.3799C54.7445 62.5257 55.1989 64.621 55.4261 66.7415C55.4766 67.2464 55.5018 67.7513 55.5271 68.231C55.5523 68.7359 55.6028 69.2912 54.9464 69.4427C54.3153 69.5942 53.9619 69.0893 53.8357 68.6096C53.2803 66.4891 52.1948 64.4695 52.4725 62.1723C52.5482 61.5664 52.523 60.9353 51.8414 60.1022C51.2607 63.8889 52.7502 67.0192 53.558 70.3263C51.3365 69.5437 50.4277 67.7261 49.3674 66.1357C48.913 65.4541 49.2159 64.3181 49.3926 63.4093C49.4431 63.1316 49.6956 62.8539 49.6703 62.6014C49.3926 60.4809 50.9831 59.0672 52.0433 57.8302C52.8764 56.8709 53.6337 55.6592 54.7445 54.9019C54.9212 54.7756 55.1232 54.4979 55.2241 54.5484C56.5873 55.1038 56.966 54.1445 57.4457 53.2105C57.5719 52.9328 57.9001 52.6046 58.2787 52.857C59.5157 53.7658 60.374 52.8066 61.2071 52.1754C61.813 51.721 62.2421 51.4938 62.7975 52.1754C63.1257 52.6046 63.5044 52.6551 63.984 52.3774C65.0948 51.7715 66.1045 51.4433 67.493 52.0745C68.2756 52.4279 69.5378 51.9987 70.6233 52.2007C72.2642 52.5289 73.9556 52.5794 75.5713 52.024C76.1014 51.8473 76.2529 52.1249 76.2529 52.5793C76.2529 53.261 76.2024 53.9173 75.7227 54.4727C75.0411 55.3058 74.5867 56.1388 74.9149 57.3253C75.1926 58.2089 75.0411 59.0924 75.0411 59.9255Z" fill="#1F00FB"/> -<path d="M38.1836 50.1306C35.5077 51.4181 32.857 52.756 29.752 52.0492C32.7056 52.024 35.3562 50.6608 38.1836 50.1306Z" fill="#34353C"/> -<path d="M32.656 48.5907C32.2521 49.5752 31.3685 49.0956 30.7879 49.1965C29.4499 49.449 28.0615 49.4237 26.6983 49.4742C26.4711 49.4742 26.1681 49.4742 26.1177 49.146C26.0924 48.9441 26.2691 48.8431 26.4458 48.8684C28.5159 49.0198 30.5354 48.3635 32.656 48.5907Z" fill="#34353C"/> -<path d="M38.3612 33.4692C38.9419 35.6655 39.5477 37.8113 39.5477 40.0833C39.5477 40.3358 39.6739 40.7649 39.2448 40.7649C38.8661 40.7649 38.8914 40.361 38.9166 40.0833C39.1186 38.1647 38.3612 36.3976 37.9826 34.58C37.8563 34.1761 37.8058 33.7469 38.3612 33.4692Z" fill="#34353C"/> -<path d="M35.7861 37.4831C34.7511 35.9684 34.9278 34.2013 34.5996 32.5352C35.4327 34.0751 35.7104 35.7665 35.7861 37.4831Z" fill="#34353C"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 58.248H105.72C106.408 58.248 107.024 58.352 107.568 58.56C108.128 58.768 108.6 59.056 108.984 59.424C109.368 59.792 109.656 60.248 109.848 60.792C110.056 61.32 110.16 61.904 110.16 62.544C110.16 63.184 110.072 63.728 109.896 64.176C109.736 64.608 109.512 64.968 109.224 65.256C108.952 65.544 108.632 65.76 108.264 65.904C107.912 66.048 107.544 66.128 107.16 66.144V66.288C107.528 66.288 107.92 66.36 108.336 66.504C108.768 66.648 109.16 66.88 109.512 67.2C109.88 67.504 110.184 67.904 110.424 68.4C110.664 68.88 110.784 69.48 110.784 70.2C110.784 70.872 110.672 71.504 110.448 72.096C110.24 72.672 109.944 73.176 109.56 73.608C109.176 74.04 108.72 74.384 108.192 74.64C107.664 74.88 107.088 75 106.464 75H97.968V58.248ZM101.136 72.312H105.552C106.16 72.312 106.632 72.16 106.968 71.856C107.304 71.536 107.472 71.08 107.472 70.488V69.672C107.472 69.08 107.304 68.624 106.968 68.304C106.632 67.984 106.16 67.824 105.552 67.824H101.136V72.312ZM101.136 65.232H105.048C105.624 65.232 106.072 65.08 106.392 64.776C106.712 64.456 106.872 64.016 106.872 63.456V62.712C106.872 62.152 106.712 61.72 106.392 61.416C106.072 61.096 105.624 60.936 105.048 60.936H101.136V65.232ZM116.762 75C115.706 75 114.93 74.736 114.434 74.208C113.938 73.68 113.69 72.936 113.69 71.976V57.24H116.762V72.552H118.418V75H116.762ZM129.961 75C129.289 75 128.753 74.808 128.353 74.424C127.969 74.024 127.729 73.496 127.633 72.84H127.489C127.281 73.656 126.857 74.272 126.217 74.688C125.577 75.088 124.785 75.288 123.841 75.288C122.561 75.288 121.577 74.952 120.889 74.28C120.201 73.608 119.857 72.712 119.857 71.592C119.857 70.296 120.321 69.336 121.249 68.712C122.177 68.072 123.497 67.752 125.209 67.752H127.345V66.84C127.345 66.136 127.161 65.592 126.793 65.208C126.425 64.824 125.833 64.632 125.017 64.632C124.297 64.632 123.713 64.792 123.265 65.112C122.833 65.416 122.465 65.784 122.161 66.216L120.337 64.584C120.801 63.864 121.417 63.288 122.185 62.856C122.953 62.408 123.969 62.184 125.233 62.184C126.929 62.184 128.217 62.568 129.097 63.336C129.977 64.104 130.417 65.208 130.417 66.648V72.552H131.665V75H129.961ZM124.873 73.056C125.561 73.056 126.145 72.904 126.625 72.6C127.105 72.296 127.345 71.848 127.345 71.256V69.6H125.377C123.777 69.6 122.977 70.112 122.977 71.136V71.544C122.977 72.056 123.137 72.44 123.457 72.696C123.793 72.936 124.265 73.056 124.873 73.056ZM125.617 61.056L123.769 60.168L126.049 55.68L128.641 56.952L125.617 61.056ZM138.255 75.288C137.055 75.288 136.047 75.088 135.231 74.688C134.415 74.272 133.695 73.704 133.071 72.984L134.943 71.16C135.407 71.688 135.911 72.104 136.455 72.408C137.015 72.712 137.655 72.864 138.375 72.864C139.111 72.864 139.639 72.736 139.959 72.48C140.295 72.224 140.463 71.872 140.463 71.424C140.463 71.056 140.343 70.768 140.103 70.56C139.879 70.336 139.487 70.184 138.927 70.104L137.679 69.936C136.319 69.76 135.279 69.376 134.559 68.784C133.855 68.176 133.503 67.296 133.503 66.144C133.503 65.536 133.615 64.992 133.839 64.512C134.063 64.016 134.383 63.6 134.799 63.264C135.215 62.912 135.711 62.648 136.287 62.472C136.879 62.28 137.535 62.184 138.255 62.184C138.863 62.184 139.399 62.232 139.863 62.328C140.343 62.408 140.775 62.536 141.159 62.712C141.543 62.872 141.895 63.08 142.215 63.336C142.535 63.576 142.847 63.848 143.151 64.152L141.351 65.952C140.983 65.568 140.543 65.248 140.031 64.992C139.519 64.736 138.959 64.608 138.351 64.608C137.679 64.608 137.191 64.728 136.887 64.968C136.599 65.208 136.455 65.52 136.455 65.904C136.455 66.32 136.575 66.64 136.815 66.864C137.071 67.072 137.495 67.224 138.087 67.32L139.359 67.488C142.063 67.872 143.415 69.104 143.415 71.184C143.415 71.792 143.287 72.352 143.031 72.864C142.791 73.36 142.447 73.792 141.999 74.16C141.551 74.512 141.007 74.792 140.367 75C139.743 75.192 139.039 75.288 138.255 75.288ZM146.128 57.24H149.2V67.944H149.32L150.976 65.688L153.784 62.472H157.264L152.944 67.32L157.72 75H154.072L150.856 69.384L149.2 71.184V75H146.128V57.24ZM163.986 75.288C163.09 75.288 162.282 75.136 161.562 74.832C160.858 74.528 160.25 74.088 159.738 73.512C159.242 72.936 158.858 72.248 158.586 71.448C158.314 70.632 158.178 69.72 158.178 68.712C158.178 67.704 158.314 66.8 158.586 66C158.858 65.2 159.242 64.52 159.738 63.96C160.25 63.384 160.858 62.944 161.562 62.64C162.282 62.336 163.09 62.184 163.986 62.184C164.882 62.184 165.69 62.336 166.41 62.64C167.13 62.944 167.738 63.384 168.234 63.96C168.746 64.52 169.138 65.2 169.41 66C169.682 66.8 169.818 67.704 169.818 68.712C169.818 69.72 169.682 70.632 169.41 71.448C169.138 72.248 168.746 72.936 168.234 73.512C167.738 74.088 167.13 74.528 166.41 74.832C165.69 75.136 164.882 75.288 163.986 75.288ZM163.986 72.816C164.802 72.816 165.442 72.568 165.906 72.072C166.37 71.576 166.602 70.848 166.602 69.888V67.56C166.602 66.616 166.37 65.896 165.906 65.4C165.442 64.904 164.802 64.656 163.986 64.656C163.186 64.656 162.554 64.904 162.09 65.4C161.626 65.896 161.394 66.616 161.394 67.56V69.888C161.394 70.848 161.626 71.576 162.09 72.072C162.554 72.568 163.186 72.816 163.986 72.816ZM164.322 61.056L162.474 60.168L164.754 55.68L167.346 56.952L164.322 61.056ZM183.846 76.056C183.846 76.712 183.726 77.288 183.486 77.784C183.262 78.296 182.886 78.72 182.358 79.056C181.83 79.392 181.15 79.648 180.318 79.824C179.486 80 178.47 80.088 177.27 80.088C176.214 80.088 175.318 80.016 174.582 79.872C173.846 79.744 173.238 79.552 172.758 79.296C172.294 79.056 171.958 78.752 171.75 78.384C171.542 78.016 171.438 77.6 171.438 77.136C171.438 76.432 171.63 75.88 172.014 75.48C172.414 75.096 172.966 74.848 173.67 74.736V74.472C173.158 74.344 172.758 74.096 172.47 73.728C172.198 73.344 172.062 72.896 172.062 72.384C172.062 72.064 172.126 71.784 172.254 71.544C172.382 71.288 172.55 71.072 172.758 70.896C172.982 70.72 173.23 70.576 173.502 70.464C173.774 70.336 174.062 70.24 174.366 70.176V70.08C173.598 69.728 173.022 69.24 172.638 68.616C172.27 67.992 172.086 67.264 172.086 66.432C172.086 65.152 172.526 64.128 173.406 63.36C174.286 62.576 175.574 62.184 177.27 62.184C177.654 62.184 178.03 62.208 178.398 62.256C178.782 62.304 179.134 62.384 179.454 62.496V62.088C179.454 60.872 180.046 60.264 181.23 60.264H183.174V62.616H180.51V62.952C181.166 63.32 181.654 63.8 181.974 64.392C182.294 64.984 182.454 65.664 182.454 66.432C182.454 67.696 182.014 68.712 181.134 69.48C180.27 70.248 178.982 70.632 177.27 70.632C176.534 70.632 175.894 70.56 175.35 70.416C175.11 70.528 174.902 70.68 174.726 70.872C174.55 71.048 174.462 71.272 174.462 71.544C174.462 72.168 175.006 72.48 176.094 72.48H179.454C180.99 72.48 182.102 72.8 182.79 73.44C183.494 74.064 183.846 74.936 183.846 76.056ZM180.966 76.416C180.966 76.016 180.806 75.704 180.486 75.48C180.166 75.256 179.614 75.144 178.83 75.144H174.558C174.126 75.464 173.91 75.896 173.91 76.44C173.91 76.92 174.11 77.296 174.51 77.568C174.91 77.84 175.59 77.976 176.55 77.976H178.086C179.094 77.976 179.822 77.848 180.27 77.592C180.734 77.336 180.966 76.944 180.966 76.416ZM177.27 68.544C178.774 68.544 179.526 67.904 179.526 66.624V66.216C179.526 64.936 178.774 64.296 177.27 64.296C175.766 64.296 175.014 64.936 175.014 66.216V66.624C175.014 67.904 175.766 68.544 177.27 68.544ZM194.789 75C194.117 75 193.581 74.808 193.181 74.424C192.797 74.024 192.557 73.496 192.461 72.84H192.317C192.109 73.656 191.685 74.272 191.045 74.688C190.405 75.088 189.613 75.288 188.669 75.288C187.389 75.288 186.405 74.952 185.717 74.28C185.029 73.608 184.685 72.712 184.685 71.592C184.685 70.296 185.149 69.336 186.077 68.712C187.005 68.072 188.325 67.752 190.037 67.752H192.173V66.84C192.173 66.136 191.989 65.592 191.621 65.208C191.253 64.824 190.661 64.632 189.845 64.632C189.125 64.632 188.541 64.792 188.093 65.112C187.661 65.416 187.293 65.784 186.989 66.216L185.165 64.584C185.629 63.864 186.245 63.288 187.013 62.856C187.781 62.408 188.797 62.184 190.061 62.184C191.757 62.184 193.045 62.568 193.925 63.336C194.805 64.104 195.245 65.208 195.245 66.648V72.552H196.493V75H194.789ZM189.701 73.056C190.389 73.056 190.973 72.904 191.453 72.6C191.933 72.296 192.173 71.848 192.173 71.256V69.6H190.205C188.605 69.6 187.805 70.112 187.805 71.136V71.544C187.805 72.056 187.965 72.44 188.285 72.696C188.621 72.936 189.093 73.056 189.701 73.056ZM198.979 57.24H202.051V64.536H202.147C202.371 63.816 202.795 63.248 203.419 62.832C204.043 62.4 204.771 62.184 205.603 62.184C207.203 62.184 208.419 62.752 209.251 63.888C210.099 65.008 210.523 66.616 210.523 68.712C210.523 70.824 210.099 72.448 209.251 73.584C208.419 74.72 207.203 75.288 205.603 75.288C204.771 75.288 204.043 75.072 203.419 74.64C202.811 74.208 202.387 73.632 202.147 72.912H202.051V75H198.979V57.24ZM204.619 72.744C205.419 72.744 206.067 72.48 206.563 71.952C207.059 71.424 207.307 70.712 207.307 69.816V67.656C207.307 66.76 207.059 66.048 206.563 65.52C206.067 64.976 205.419 64.704 204.619 64.704C203.883 64.704 203.267 64.888 202.771 65.256C202.291 65.624 202.051 66.112 202.051 66.72V70.704C202.051 71.36 202.291 71.864 202.771 72.216C203.267 72.568 203.883 72.744 204.619 72.744ZM220.839 62.472H223.719L218.679 77.232C218.519 77.68 218.335 78.064 218.127 78.384C217.935 78.72 217.703 78.992 217.431 79.2C217.159 79.408 216.831 79.56 216.447 79.656C216.063 79.752 215.615 79.8 215.103 79.8H213.255V77.352H215.511L216.087 75.6L211.599 62.472H214.647L216.831 69.096L217.647 72.264H217.791L218.655 69.096L220.839 62.472ZM236.463 76.056C236.463 76.712 236.343 77.288 236.103 77.784C235.879 78.296 235.503 78.72 234.975 79.056C234.447 79.392 233.767 79.648 232.935 79.824C232.103 80 231.087 80.088 229.887 80.088C228.831 80.088 227.935 80.016 227.199 79.872C226.463 79.744 225.855 79.552 225.375 79.296C224.911 79.056 224.575 78.752 224.367 78.384C224.159 78.016 224.055 77.6 224.055 77.136C224.055 76.432 224.247 75.88 224.631 75.48C225.031 75.096 225.583 74.848 226.287 74.736V74.472C225.775 74.344 225.375 74.096 225.087 73.728C224.815 73.344 224.679 72.896 224.679 72.384C224.679 72.064 224.743 71.784 224.871 71.544C224.999 71.288 225.167 71.072 225.375 70.896C225.599 70.72 225.847 70.576 226.119 70.464C226.391 70.336 226.679 70.24 226.983 70.176V70.08C226.215 69.728 225.639 69.24 225.255 68.616C224.887 67.992 224.703 67.264 224.703 66.432C224.703 65.152 225.143 64.128 226.023 63.36C226.903 62.576 228.191 62.184 229.887 62.184C230.271 62.184 230.647 62.208 231.015 62.256C231.399 62.304 231.751 62.384 232.071 62.496V62.088C232.071 60.872 232.663 60.264 233.847 60.264H235.791V62.616H233.127V62.952C233.783 63.32 234.271 63.8 234.591 64.392C234.911 64.984 235.071 65.664 235.071 66.432C235.071 67.696 234.631 68.712 233.751 69.48C232.887 70.248 231.599 70.632 229.887 70.632C229.151 70.632 228.511 70.56 227.967 70.416C227.727 70.528 227.519 70.68 227.343 70.872C227.167 71.048 227.079 71.272 227.079 71.544C227.079 72.168 227.623 72.48 228.711 72.48H232.071C233.607 72.48 234.719 72.8 235.407 73.44C236.111 74.064 236.463 74.936 236.463 76.056ZM233.583 76.416C233.583 76.016 233.423 75.704 233.103 75.48C232.783 75.256 232.231 75.144 231.447 75.144H227.175C226.743 75.464 226.527 75.896 226.527 76.44C226.527 76.92 226.727 77.296 227.127 77.568C227.527 77.84 228.207 77.976 229.167 77.976H230.703C231.711 77.976 232.439 77.848 232.887 77.592C233.351 77.336 233.583 76.944 233.583 76.416ZM229.887 68.544C231.391 68.544 232.143 67.904 232.143 66.624V66.216C232.143 64.936 231.391 64.296 229.887 64.296C228.383 64.296 227.631 64.936 227.631 66.216V66.624C227.631 67.904 228.383 68.544 229.887 68.544ZM249.682 76.056C249.682 76.712 249.562 77.288 249.322 77.784C249.098 78.296 248.722 78.72 248.194 79.056C247.666 79.392 246.986 79.648 246.154 79.824C245.322 80 244.306 80.088 243.106 80.088C242.05 80.088 241.154 80.016 240.418 79.872C239.682 79.744 239.074 79.552 238.594 79.296C238.13 79.056 237.794 78.752 237.586 78.384C237.378 78.016 237.274 77.6 237.274 77.136C237.274 76.432 237.466 75.88 237.85 75.48C238.25 75.096 238.802 74.848 239.506 74.736V74.472C238.994 74.344 238.594 74.096 238.306 73.728C238.034 73.344 237.898 72.896 237.898 72.384C237.898 72.064 237.962 71.784 238.09 71.544C238.218 71.288 238.386 71.072 238.594 70.896C238.818 70.72 239.066 70.576 239.338 70.464C239.61 70.336 239.898 70.24 240.202 70.176V70.08C239.434 69.728 238.858 69.24 238.474 68.616C238.106 67.992 237.922 67.264 237.922 66.432C237.922 65.152 238.362 64.128 239.242 63.36C240.122 62.576 241.41 62.184 243.106 62.184C243.49 62.184 243.866 62.208 244.234 62.256C244.618 62.304 244.97 62.384 245.29 62.496V62.088C245.29 60.872 245.882 60.264 247.066 60.264H249.01V62.616H246.346V62.952C247.002 63.32 247.49 63.8 247.81 64.392C248.13 64.984 248.29 65.664 248.29 66.432C248.29 67.696 247.85 68.712 246.97 69.48C246.106 70.248 244.818 70.632 243.106 70.632C242.37 70.632 241.73 70.56 241.186 70.416C240.946 70.528 240.738 70.68 240.562 70.872C240.386 71.048 240.298 71.272 240.298 71.544C240.298 72.168 240.842 72.48 241.93 72.48H245.29C246.826 72.48 247.938 72.8 248.626 73.44C249.33 74.064 249.682 74.936 249.682 76.056ZM246.802 76.416C246.802 76.016 246.642 75.704 246.322 75.48C246.002 75.256 245.45 75.144 244.666 75.144H240.394C239.962 75.464 239.746 75.896 239.746 76.44C239.746 76.92 239.946 77.296 240.346 77.568C240.746 77.84 241.426 77.976 242.386 77.976H243.922C244.93 77.976 245.658 77.848 246.106 77.592C246.57 77.336 246.802 76.944 246.802 76.416ZM243.106 68.544C244.61 68.544 245.362 67.904 245.362 66.624V66.216C245.362 64.936 244.61 64.296 243.106 64.296C241.602 64.296 240.85 64.936 240.85 66.216V66.624C240.85 67.904 241.602 68.544 243.106 68.544ZM260.603 58.224L258.827 59.376C259.931 60.528 260.819 61.856 261.491 63.36C262.163 64.864 262.499 66.536 262.499 68.376C262.499 69.56 262.355 70.592 262.067 71.472C261.779 72.336 261.371 73.056 260.843 73.632C260.331 74.192 259.715 74.608 258.995 74.88C258.275 75.152 257.475 75.288 256.595 75.288C255.651 75.288 254.803 75.144 254.051 74.856C253.315 74.552 252.683 74.128 252.155 73.584C251.643 73.04 251.251 72.376 250.979 71.592C250.707 70.808 250.571 69.936 250.571 68.976C250.571 68.08 250.683 67.264 250.907 66.528C251.147 65.792 251.483 65.16 251.915 64.632C252.347 64.104 252.867 63.696 253.475 63.408C254.099 63.12 254.787 62.976 255.539 62.976C256.403 62.976 257.123 63.192 257.699 63.624C258.291 64.04 258.755 64.608 259.091 65.328L259.235 65.256C259.043 64.44 258.699 63.664 258.203 62.928C257.723 62.192 257.139 61.488 256.451 60.816L254.387 62.112L253.283 60.792L255.155 59.664C254.595 59.2 254.003 58.768 253.379 58.368C252.771 57.968 252.155 57.592 251.531 57.24H256.211C256.435 57.368 256.651 57.52 256.859 57.696C257.067 57.856 257.283 58.024 257.507 58.2L259.523 56.928L260.603 58.224ZM256.547 72.936C257.395 72.936 258.067 72.664 258.563 72.12C259.059 71.576 259.307 70.816 259.307 69.84V68.448C259.307 67.472 259.059 66.712 258.563 66.168C258.067 65.624 257.395 65.352 256.547 65.352C255.683 65.352 255.003 65.624 254.507 66.168C254.011 66.712 253.763 67.472 253.763 68.448V69.84C253.763 70.816 254.011 71.576 254.507 72.12C255.003 72.664 255.683 72.936 256.547 72.936Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57874"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/blonduosbaer.svg b/libs/application/templates/financial-aid/src/svg/blonduosbaer.svg deleted file mode 100644 index 8fdbaa9d380f..000000000000 --- a/libs/application/templates/financial-aid/src/svg/blonduosbaer.svg +++ /dev/null @@ -1,12 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M74.356 16.2094V69.7173C74.356 70.0314 74.2513 76.1047 65.3508 84.6911C61.3717 88.5654 54.2513 93.9058 48.2827 96C42.1047 93.801 35.089 88.5654 31.0052 84.6911C22.1047 76.1047 22 70.0314 22 69.7173V16H74.356" fill="#003D84"/> -<path d="M72.4704 17.8848H23.7793C26.9207 28.356 38.3343 41.2356 48.0725 41.2356H48.1772C57.9154 41.1309 69.329 28.2513 72.4704 17.8848Z" fill="#94C2E9"/> -<path d="M72.2617 70.4503C65.7696 62.911 54.4607 56.6283 48.178 56.5236H48.0732C41.7905 56.6283 30.3769 62.911 23.9895 70.4503L23.8848 70.555C24.4083 72.5445 26.0837 77.1518 32.2617 83.1204C36.1361 86.8901 42.7329 91.7068 48.178 93.9058C53.7277 91.7068 60.2198 86.8901 64.0942 83.1204C70.2722 77.1518 71.9476 72.5445 72.4711 70.555C72.3664 70.555 72.3664 70.555 72.2617 70.4503Z" fill="#94C2E9"/> -<path d="M72.4717 36V44.0628H54.7754L54.8801 43.9581C62.9429 41.9686 68.7021 38.4084 72.4717 36Z" fill="white"/> -<path d="M23.7793 36V44.0628H41.4756L41.3709 43.9581C33.4128 41.9686 27.6536 38.4084 23.7793 36Z" fill="white"/> -<path d="M68.0735 52.1257L48.1782 50.0314H48.0735L28.1782 52.1257H27.9688H48.0735H48.1782H68.2829H68.0735Z" fill="white"/> -<path d="M48.1771 47.7277H32.6797L32.7844 47.8324L48.0724 49.4031H48.1771L63.465 47.8324L63.6744 47.7277H48.1771Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 58.248H105.72C106.408 58.248 107.024 58.352 107.568 58.56C108.128 58.768 108.6 59.056 108.984 59.424C109.368 59.792 109.656 60.248 109.848 60.792C110.056 61.32 110.16 61.904 110.16 62.544C110.16 63.184 110.072 63.728 109.896 64.176C109.736 64.608 109.512 64.968 109.224 65.256C108.952 65.544 108.632 65.76 108.264 65.904C107.912 66.048 107.544 66.128 107.16 66.144V66.288C107.528 66.288 107.92 66.36 108.336 66.504C108.768 66.648 109.16 66.88 109.512 67.2C109.88 67.504 110.184 67.904 110.424 68.4C110.664 68.88 110.784 69.48 110.784 70.2C110.784 70.872 110.672 71.504 110.448 72.096C110.24 72.672 109.944 73.176 109.56 73.608C109.176 74.04 108.72 74.384 108.192 74.64C107.664 74.88 107.088 75 106.464 75H97.968V58.248ZM101.136 72.312H105.552C106.16 72.312 106.632 72.16 106.968 71.856C107.304 71.536 107.472 71.08 107.472 70.488V69.672C107.472 69.08 107.304 68.624 106.968 68.304C106.632 67.984 106.16 67.824 105.552 67.824H101.136V72.312ZM101.136 65.232H105.048C105.624 65.232 106.072 65.08 106.392 64.776C106.712 64.456 106.872 64.016 106.872 63.456V62.712C106.872 62.152 106.712 61.72 106.392 61.416C106.072 61.096 105.624 60.936 105.048 60.936H101.136V65.232ZM116.762 75C115.706 75 114.93 74.736 114.434 74.208C113.938 73.68 113.69 72.936 113.69 71.976V57.24H116.762V72.552H118.418V75H116.762ZM125.713 75.288C124.817 75.288 124.009 75.136 123.289 74.832C122.585 74.528 121.977 74.088 121.465 73.512C120.969 72.936 120.585 72.248 120.313 71.448C120.041 70.632 119.905 69.72 119.905 68.712C119.905 67.704 120.041 66.8 120.313 66C120.585 65.2 120.969 64.52 121.465 63.96C121.977 63.384 122.585 62.944 123.289 62.64C124.009 62.336 124.817 62.184 125.713 62.184C126.609 62.184 127.417 62.336 128.137 62.64C128.857 62.944 129.465 63.384 129.961 63.96C130.473 64.52 130.865 65.2 131.137 66C131.409 66.8 131.545 67.704 131.545 68.712C131.545 69.72 131.409 70.632 131.137 71.448C130.865 72.248 130.473 72.936 129.961 73.512C129.465 74.088 128.857 74.528 128.137 74.832C127.417 75.136 126.609 75.288 125.713 75.288ZM125.713 72.816C126.529 72.816 127.169 72.568 127.633 72.072C128.097 71.576 128.329 70.848 128.329 69.888V67.56C128.329 66.616 128.097 65.896 127.633 65.4C127.169 64.904 126.529 64.656 125.713 64.656C124.913 64.656 124.281 64.904 123.817 65.4C123.353 65.896 123.121 66.616 123.121 67.56V69.888C123.121 70.848 123.353 71.576 123.817 72.072C124.281 72.568 124.913 72.816 125.713 72.816ZM123.217 60.48C122.593 60.48 122.153 60.352 121.897 60.096C121.641 59.824 121.513 59.488 121.513 59.088V58.584C121.513 58.184 121.641 57.856 121.897 57.6C122.153 57.328 122.593 57.192 123.217 57.192C123.841 57.192 124.281 57.328 124.537 57.6C124.793 57.856 124.921 58.184 124.921 58.584V59.088C124.921 59.488 124.793 59.824 124.537 60.096C124.281 60.352 123.841 60.48 123.217 60.48ZM128.257 60.48C127.633 60.48 127.193 60.352 126.937 60.096C126.681 59.824 126.553 59.488 126.553 59.088V58.584C126.553 58.184 126.681 57.856 126.937 57.6C127.193 57.328 127.633 57.192 128.257 57.192C128.881 57.192 129.321 57.328 129.577 57.6C129.833 57.856 129.961 58.184 129.961 58.584V59.088C129.961 59.488 129.833 59.824 129.577 60.096C129.321 60.352 128.881 60.48 128.257 60.48ZM134.268 75V62.472H137.34V64.56H137.46C137.716 63.888 138.116 63.328 138.66 62.88C139.22 62.416 139.988 62.184 140.964 62.184C142.26 62.184 143.252 62.608 143.94 63.456C144.628 64.304 144.972 65.512 144.972 67.08V75H141.9V67.392C141.9 66.496 141.74 65.824 141.42 65.376C141.1 64.928 140.572 64.704 139.836 64.704C139.516 64.704 139.204 64.752 138.9 64.848C138.612 64.928 138.348 65.056 138.108 65.232C137.884 65.392 137.7 65.6 137.556 65.856C137.412 66.096 137.34 66.384 137.34 66.72V75H134.268ZM156.154 72.912H156.034C155.81 73.632 155.386 74.208 154.762 74.64C154.138 75.072 153.41 75.288 152.578 75.288C150.994 75.288 149.778 74.72 148.93 73.584C148.098 72.448 147.682 70.824 147.682 68.712C147.682 66.616 148.098 65.008 148.93 63.888C149.778 62.752 150.994 62.184 152.578 62.184C153.41 62.184 154.138 62.4 154.762 62.832C155.386 63.248 155.81 63.816 156.034 64.536H156.154V57.24H159.226V75H156.154V72.912ZM153.562 72.744C154.298 72.744 154.914 72.568 155.41 72.216C155.906 71.864 156.154 71.36 156.154 70.704V66.72C156.154 66.112 155.906 65.624 155.41 65.256C154.914 64.888 154.298 64.704 153.562 64.704C152.762 64.704 152.114 64.976 151.618 65.52C151.138 66.048 150.898 66.76 150.898 67.656V69.816C150.898 70.712 151.138 71.424 151.618 71.952C152.114 72.48 152.762 72.744 153.562 72.744ZM170.256 72.912H170.136C170.024 73.232 169.872 73.536 169.68 73.824C169.504 74.096 169.272 74.344 168.984 74.568C168.712 74.792 168.376 74.968 167.976 75.096C167.592 75.224 167.144 75.288 166.632 75.288C165.336 75.288 164.344 74.864 163.656 74.016C162.968 73.168 162.624 71.96 162.624 70.392V62.472H165.696V70.08C165.696 70.944 165.864 71.608 166.2 72.072C166.536 72.52 167.072 72.744 167.808 72.744C168.112 72.744 168.408 72.704 168.696 72.624C169 72.544 169.264 72.424 169.488 72.264C169.712 72.088 169.896 71.88 170.04 71.64C170.184 71.384 170.256 71.088 170.256 70.752V62.472H173.328V75H170.256V72.912ZM181.846 75.288C180.95 75.288 180.142 75.136 179.422 74.832C178.718 74.528 178.11 74.088 177.598 73.512C177.102 72.936 176.718 72.248 176.446 71.448C176.174 70.632 176.038 69.72 176.038 68.712C176.038 67.704 176.174 66.8 176.446 66C176.718 65.2 177.102 64.52 177.598 63.96C178.11 63.384 178.718 62.944 179.422 62.64C180.142 62.336 180.95 62.184 181.846 62.184C182.742 62.184 183.55 62.336 184.27 62.64C184.99 62.944 185.598 63.384 186.094 63.96C186.606 64.52 186.998 65.2 187.27 66C187.542 66.8 187.678 67.704 187.678 68.712C187.678 69.72 187.542 70.632 187.27 71.448C186.998 72.248 186.606 72.936 186.094 73.512C185.598 74.088 184.99 74.528 184.27 74.832C183.55 75.136 182.742 75.288 181.846 75.288ZM181.846 72.816C182.662 72.816 183.302 72.568 183.766 72.072C184.23 71.576 184.462 70.848 184.462 69.888V67.56C184.462 66.616 184.23 65.896 183.766 65.4C183.302 64.904 182.662 64.656 181.846 64.656C181.046 64.656 180.414 64.904 179.95 65.4C179.486 65.896 179.254 66.616 179.254 67.56V69.888C179.254 70.848 179.486 71.576 179.95 72.072C180.414 72.568 181.046 72.816 181.846 72.816ZM182.182 61.056L180.334 60.168L182.614 55.68L185.206 56.952L182.182 61.056ZM194.505 75.288C193.305 75.288 192.297 75.088 191.481 74.688C190.665 74.272 189.945 73.704 189.321 72.984L191.193 71.16C191.657 71.688 192.161 72.104 192.705 72.408C193.265 72.712 193.905 72.864 194.625 72.864C195.361 72.864 195.889 72.736 196.209 72.48C196.545 72.224 196.713 71.872 196.713 71.424C196.713 71.056 196.593 70.768 196.353 70.56C196.129 70.336 195.737 70.184 195.177 70.104L193.929 69.936C192.569 69.76 191.529 69.376 190.809 68.784C190.105 68.176 189.753 67.296 189.753 66.144C189.753 65.536 189.865 64.992 190.089 64.512C190.313 64.016 190.633 63.6 191.049 63.264C191.465 62.912 191.961 62.648 192.537 62.472C193.129 62.28 193.785 62.184 194.505 62.184C195.113 62.184 195.649 62.232 196.113 62.328C196.593 62.408 197.025 62.536 197.409 62.712C197.793 62.872 198.145 63.08 198.465 63.336C198.785 63.576 199.097 63.848 199.401 64.152L197.601 65.952C197.233 65.568 196.793 65.248 196.281 64.992C195.769 64.736 195.209 64.608 194.601 64.608C193.929 64.608 193.441 64.728 193.137 64.968C192.849 65.208 192.705 65.52 192.705 65.904C192.705 66.32 192.825 66.64 193.065 66.864C193.321 67.072 193.745 67.224 194.337 67.32L195.609 67.488C198.313 67.872 199.665 69.104 199.665 71.184C199.665 71.792 199.537 72.352 199.281 72.864C199.041 73.36 198.697 73.792 198.249 74.16C197.801 74.512 197.257 74.792 196.617 75C195.993 75.192 195.289 75.288 194.505 75.288ZM202.378 57.24H205.45V64.536H205.546C205.77 63.816 206.194 63.248 206.818 62.832C207.442 62.4 208.17 62.184 209.002 62.184C210.602 62.184 211.818 62.752 212.65 63.888C213.498 65.008 213.922 66.616 213.922 68.712C213.922 70.824 213.498 72.448 212.65 73.584C211.818 74.72 210.602 75.288 209.002 75.288C208.17 75.288 207.442 75.072 206.818 74.64C206.21 74.208 205.786 73.632 205.546 72.912H205.45V75H202.378V57.24ZM208.018 72.744C208.818 72.744 209.466 72.48 209.962 71.952C210.458 71.424 210.706 70.712 210.706 69.816V67.656C210.706 66.76 210.458 66.048 209.962 65.52C209.466 64.976 208.818 64.704 208.018 64.704C207.282 64.704 206.666 64.888 206.17 65.256C205.69 65.624 205.45 66.112 205.45 66.72V70.704C205.45 71.36 205.69 71.864 206.17 72.216C206.666 72.568 207.282 72.744 208.018 72.744ZM221.4 69.504C220.632 69.52 220.04 69.664 219.624 69.936C219.208 70.192 219 70.576 219 71.088V71.472C219 71.984 219.16 72.376 219.48 72.648C219.8 72.92 220.28 73.056 220.92 73.056C221.592 73.056 222.168 72.904 222.648 72.6C223.128 72.296 223.368 71.848 223.368 71.256V69.504H221.4ZM231.6 67.608V67.392C231.6 66.528 231.384 65.832 230.952 65.304C230.536 64.76 229.928 64.488 229.128 64.488C228.312 64.488 227.664 64.76 227.184 65.304C226.704 65.848 226.464 66.552 226.464 67.416V67.608H231.6ZM229.56 72.792C230.312 72.792 230.944 72.632 231.456 72.312C231.968 71.992 232.4 71.6 232.752 71.136L234.408 72.984C233.896 73.704 233.2 74.272 232.32 74.688C231.44 75.088 230.432 75.288 229.296 75.288C228.688 75.288 228.12 75.216 227.592 75.072C227.064 74.928 226.592 74.736 226.176 74.496C225.776 74.256 225.432 73.984 225.144 73.68C224.856 73.376 224.64 73.056 224.496 72.72H224.352C224.24 73.04 224.064 73.352 223.824 73.656C223.6 73.96 223.304 74.232 222.936 74.472C222.568 74.712 222.128 74.904 221.616 75.048C221.12 75.208 220.536 75.288 219.864 75.288C218.6 75.288 217.616 74.944 216.912 74.256C216.224 73.568 215.88 72.672 215.88 71.568C215.88 70.912 216.008 70.336 216.264 69.84C216.52 69.344 216.88 68.936 217.344 68.616C217.808 68.28 218.368 68.032 219.024 67.872C219.68 67.696 220.416 67.608 221.232 67.608H223.368V66.84C223.368 66.136 223.184 65.592 222.816 65.208C222.448 64.824 221.864 64.632 221.064 64.632C220.328 64.632 219.736 64.784 219.288 65.088C218.856 65.392 218.488 65.768 218.184 66.216L216.36 64.584C216.824 63.864 217.44 63.288 218.208 62.856C218.976 62.408 219.992 62.184 221.256 62.184C222.216 62.184 222.984 62.384 223.56 62.784C224.136 63.168 224.584 63.656 224.904 64.248H225.048C225.368 63.656 225.888 63.168 226.608 62.784C227.328 62.384 228.192 62.184 229.2 62.184C230.176 62.184 231.016 62.352 231.72 62.688C232.424 63.024 233 63.48 233.448 64.056C233.912 64.632 234.248 65.304 234.456 66.072C234.68 66.824 234.792 67.632 234.792 68.496V69.504H226.44V69.816C226.44 70.712 226.712 71.432 227.256 71.976C227.8 72.52 228.568 72.792 229.56 72.792ZM237.51 75V62.472H240.582V65.064H240.702C240.782 64.728 240.902 64.408 241.062 64.104C241.238 63.784 241.462 63.504 241.734 63.264C242.006 63.024 242.326 62.832 242.694 62.688C243.078 62.544 243.518 62.472 244.014 62.472H244.686V65.376H243.726C242.686 65.376 241.902 65.528 241.374 65.832C240.846 66.136 240.582 66.632 240.582 67.32V75H237.51Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/bolungarvik.svg b/libs/application/templates/financial-aid/src/svg/bolungarvik.svg deleted file mode 100644 index ac3c9195fc06..000000000000 --- a/libs/application/templates/financial-aid/src/svg/bolungarvik.svg +++ /dev/null @@ -1,22 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57909)"> -<path d="M20.8288 46.7381C20.9315 46.7267 21.0342 46.6981 21.1368 46.6981C29.2949 46.6981 37.4529 46.6981 45.6109 46.6981C45.7136 46.6981 45.8163 46.6981 45.9247 46.6981C45.9247 36.4464 45.9247 26.2232 45.9247 16C35.2736 16 24.6511 16 14 16C14 16.1711 14 16.3252 14 16.4735C14 31.506 14 46.5384 14 61.5708C14 63.1853 14.0799 64.7998 14.291 66.4029C14.6275 68.953 15.2323 71.4346 16.145 73.8421C18.5126 80.1004 22.3691 85.2519 27.7203 89.2625C33.0259 93.2388 39.0103 95.4409 45.6223 95.9201C47.6647 96.0685 49.7071 96.0057 51.7437 95.7775C54.1569 95.5037 56.513 94.9845 58.8121 94.1915C64.3516 92.2861 69.0923 89.1484 73.023 84.8127C75.9782 81.5551 78.2202 77.8527 79.7434 73.7166C81.1696 69.8373 81.82 65.8267 81.8143 61.6906C81.7972 46.5555 81.8086 31.4204 81.8086 16.2795C81.8086 16.1883 81.7972 16.097 81.7915 16.0057C71.129 16.0057 60.5007 16.0057 49.8782 16.0057C49.8782 26.246 49.8782 36.4635 49.8782 46.7153C58.2986 46.7153 66.6963 46.7153 75.0882 46.7153C75.1053 46.7495 75.1224 46.778 75.1395 46.8122C74.6717 47.1773 74.2325 47.5824 73.7418 47.9076C72.1388 48.9687 70.3531 49.6133 68.5104 50.0812C64.7167 51.0396 60.8544 51.5815 56.9637 51.8953C54.8072 52.0665 52.6394 52.1691 50.4715 52.2262C46.4381 52.3289 42.4162 52.1463 38.3942 51.8154C35.7072 51.5929 33.0259 51.2963 30.3788 50.7714C28.1482 50.3322 25.9575 49.7674 23.8809 48.809C22.7513 48.2898 21.6845 47.6794 20.8402 46.7381H20.8288Z" fill="white"/> -<path d="M20.8288 46.7324C21.6731 47.6737 22.7399 48.2841 23.8695 48.8033C25.9461 49.756 28.1368 50.3265 30.3674 50.7657C33.0145 51.2906 35.6958 51.5872 38.3828 51.8097C42.4048 52.1406 46.4267 52.3232 50.4601 52.2205C52.628 52.1634 54.7901 52.0665 56.9523 51.8896C60.843 51.5758 64.7053 51.0339 68.499 50.0754C70.3474 49.6076 72.1331 48.963 73.7304 47.9019C74.2211 47.5767 74.666 47.1716 75.1281 46.8065C75.111 46.7723 75.0939 46.7438 75.0768 46.7095C66.6792 46.7095 58.2815 46.7095 49.8668 46.7095C49.8668 36.4635 49.8668 26.246 49.8668 16C60.4893 16 71.1233 16 81.7801 16C81.7858 16.0913 81.7972 16.1826 81.7972 16.2738C81.7972 31.409 81.7858 46.5441 81.8029 61.6849C81.8086 65.821 81.1582 69.8316 79.732 73.7109C78.2145 77.847 75.9725 81.5437 73.0116 84.807C69.0752 89.1427 64.3401 92.2804 58.8007 94.1858C56.5073 94.9788 54.1455 95.498 51.7323 95.7718C49.6956 96.0057 47.6533 96.0628 45.6109 95.9144C38.9989 95.4352 33.0202 93.2331 27.7089 89.2568C22.352 85.2462 18.5012 80.089 16.1336 73.8364C15.2209 71.4346 14.6161 68.9473 14.2795 66.3972C14.0799 64.7998 14 63.1853 14 61.5708C14 46.5384 14 31.506 14 16.4735C14 16.3252 14 16.1711 14 16C24.6454 16 35.2736 16 45.919 16C45.919 26.2232 45.919 36.4464 45.919 46.6981C45.8049 46.6981 45.7022 46.6981 45.6052 46.6981C37.4472 46.6981 29.2892 46.6981 21.1311 46.6981C21.0285 46.6981 20.9258 46.7267 20.8288 46.7324C20.8915 46.6411 20.9429 46.5441 21.017 46.4585C23.7953 43.0584 26.5736 39.6583 29.3519 36.2639C33.3168 31.4147 37.2817 26.5712 41.2467 21.722C41.3037 21.6536 41.3494 21.5794 41.4292 21.471C34.4749 21.471 27.5834 21.471 20.6633 21.471C20.6633 21.6079 20.6633 21.722 20.6633 21.8361C20.6633 29.9827 20.6633 38.1294 20.669 46.276C20.6747 46.4243 20.7774 46.5783 20.8288 46.7324ZM47.9842 69.4836C49.7755 71.5259 52.1088 72.2904 54.7445 72.336C57.4258 72.3817 59.6849 71.3947 61.5562 69.4722C62.429 70.4933 63.4958 71.2179 64.7281 71.7028C66.3026 72.3246 67.9342 72.4672 69.6001 72.2619C70.9636 72.0907 72.2415 71.6571 73.3938 70.887C73.6049 70.7443 73.7247 70.5675 73.7989 70.3336C74.2838 68.8218 74.6432 67.2815 74.8714 65.7126C74.9342 65.279 74.9684 64.8398 75.0197 64.4062C74.9285 64.4233 74.8999 64.4575 74.8714 64.4918C74.067 65.6156 72.9774 66.3402 71.6881 66.7851C70.0508 67.3556 68.3564 67.4469 66.6506 67.2187C64.865 66.9791 63.2733 66.2831 61.9726 64.9995C61.8015 64.8284 61.6417 64.6401 61.4763 64.4632C60.2897 65.6784 59.7648 66.0777 58.7836 66.4885C56.9238 67.2644 54.9841 67.4697 52.9988 67.2358C51.0078 67.0019 49.3134 66.169 48.0184 64.6002C47.9842 64.5602 47.9442 64.526 47.9043 64.4918C45.9874 66.3287 43.7226 67.2872 41.0869 67.3214C38.4398 67.3556 36.1636 66.4714 34.3551 64.4918C32.5067 66.5056 30.1905 67.3385 27.5263 67.3214C24.8736 67.3043 22.546 66.5056 20.8003 64.372C20.7946 64.5716 20.8174 64.7542 20.8345 64.9367C21.0399 66.8878 21.4734 68.7876 22.1124 70.6417C22.1694 70.8071 22.3235 70.9782 22.4775 71.0695C23.9151 71.9196 25.4726 72.3303 27.1441 72.336C28.9183 72.3417 30.6184 72.028 32.1987 71.1893C33.0202 70.7558 33.7447 70.1967 34.338 69.4722C37.6811 73.3629 44.6297 73.2317 47.9842 69.4836ZM75.0483 46.6354C75.0711 46.6297 75.0882 46.6183 75.111 46.6126C75.1167 46.5213 75.1224 46.43 75.1224 46.333C75.1224 38.1864 75.1224 30.0398 75.1224 21.8932C75.1224 21.3797 75.1624 21.4425 74.6889 21.4425C68.0826 21.4425 61.4763 21.4425 54.87 21.4425C54.7217 21.4425 54.5733 21.4425 54.3337 21.4425C61.2709 29.8858 68.1567 38.2606 75.0483 46.6354ZM47.91 73.7908C45.668 78.6628 43.4602 83.4606 41.2524 88.2641C45.6394 89.4393 50.8366 89.331 54.813 88.1843C52.5253 83.4093 50.2376 78.6342 47.91 73.7908ZM30.0023 62.2954C26.8874 57.9596 23.8125 53.6867 20.6976 49.3509C20.6805 49.4707 20.6747 49.4993 20.6747 49.5278C20.6747 52.791 20.6747 56.0485 20.6747 59.3117C20.6747 59.403 20.6919 59.5057 20.7432 59.5798C21.7587 61.0688 23.1165 62.0957 24.9192 62.3239C26.1458 62.4779 27.4008 62.4209 28.6445 62.4323C29.0781 62.438 29.506 62.3467 30.0023 62.2954ZM65.9546 62.284C66.5194 62.3581 66.9929 62.438 67.4721 62.4779C69.0695 62.6148 70.6441 62.5293 72.1445 61.8789C73.2227 61.4168 74.2154 60.8292 74.9399 59.8822C75.0426 59.751 75.111 59.557 75.111 59.3916C75.1224 56.2253 75.1167 53.0591 75.1167 49.8929C75.1167 49.7959 75.1053 49.6932 75.0939 49.5221C72.0361 53.795 69.0239 57.9996 65.9546 62.284ZM34.1155 73.2944C31.7651 75.3425 29.4375 77.3792 27.0928 79.4272C28.4163 80.9904 29.8711 82.371 31.5084 83.5975C33.6762 80.8363 35.8327 78.0923 38.012 75.3197C36.4089 75.16 35.0568 74.6579 34.1155 73.2944ZM57.9449 75.1143C60.09 77.9611 62.1951 80.7565 64.3173 83.569C65.9432 82.331 67.3866 80.9733 68.6873 79.4272C66.2969 77.3678 63.9294 75.3311 61.5447 73.2773C60.5977 74.3613 59.4339 74.9945 57.9449 75.1143Z" fill="#11368F"/> -<path d="M47.984 69.4836C44.6295 73.2374 37.6866 73.363 34.3492 69.4779C33.7559 70.1967 33.0257 70.7558 32.2099 71.1951C30.6296 72.0337 28.9295 72.3475 27.1553 72.3418C25.4838 72.3361 23.9263 71.9196 22.4887 71.0753C22.3347 70.984 22.1806 70.8129 22.1236 70.6474C21.4846 68.7933 21.051 66.8936 20.8457 64.9425C20.8286 64.76 20.8057 64.5717 20.8114 64.3777C22.5629 66.5114 24.8848 67.3101 27.5375 67.3272C30.196 67.3443 32.5179 66.5171 34.3663 64.4975C36.1748 66.4714 38.4511 67.3557 41.0981 67.3272C43.7338 67.2929 45.9987 66.3345 47.9155 64.4975C47.9554 64.5318 47.9954 64.566 48.0296 64.6059C49.3246 66.1805 51.019 67.0134 53.01 67.2416C54.9953 67.4755 56.935 67.2701 58.7948 66.4943C59.776 66.0835 60.3009 65.6842 61.4875 64.469C61.653 64.6516 61.807 64.8341 61.9838 65.0053C63.2846 66.2832 64.8705 66.9849 66.6619 67.2245C68.3676 67.4527 70.0563 67.3614 71.6993 66.7909C72.9886 66.3459 74.084 65.6214 74.8827 64.4975C74.9055 64.4633 74.9397 64.4291 75.031 64.412C74.9854 64.8455 74.9454 65.2848 74.8827 65.7184C74.6545 67.2872 74.2951 68.8276 73.8101 70.3394C73.736 70.5733 73.6162 70.7501 73.4051 70.8927C72.2527 71.6572 70.9748 72.0965 69.6113 72.2676C67.9455 72.473 66.3139 72.3304 64.7393 71.7085C63.5071 71.2236 62.4402 70.4991 61.5674 69.4779C59.6962 71.4005 57.437 72.3874 54.7557 72.3418C52.1086 72.2904 49.7753 71.526 47.984 69.4836Z" fill="white"/> -<path d="M20.8277 46.7324C20.7764 46.5784 20.6737 46.4243 20.6737 46.276C20.668 38.1294 20.668 29.9827 20.668 21.8361C20.668 21.722 20.668 21.6079 20.668 21.471C27.588 21.471 34.4796 21.471 41.4339 21.471C41.354 21.5794 41.3083 21.6536 41.2513 21.722C37.2864 26.5712 33.3215 31.4147 29.3566 36.2639C26.5783 39.664 23.8 43.0584 21.0217 46.4586C20.9475 46.5441 20.8905 46.6411 20.8277 46.7324C20.8277 46.7381 20.8277 46.7324 20.8277 46.7324Z" fill="white"/> -<path d="M75.0483 46.6354C68.1568 38.2606 61.271 29.8858 54.3281 21.4425C54.5677 21.4425 54.7161 21.4425 54.8644 21.4425C61.4707 21.4425 68.0769 21.4425 74.6832 21.4425C75.1624 21.4425 75.1168 21.3797 75.1168 21.8932C75.1168 30.0398 75.1168 38.1864 75.1168 46.333C75.1168 46.4243 75.1111 46.5156 75.1054 46.6126C75.0883 46.624 75.0654 46.6297 75.0483 46.6354Z" fill="white"/> -<path d="M47.9115 73.7908C50.2334 78.6342 52.5211 83.4092 54.8145 88.1842C50.8382 89.3309 45.6467 89.4393 41.2539 88.2641C43.4674 83.4606 45.6695 78.6627 47.9115 73.7908Z" fill="white"/> -<path d="M30.0017 62.2954C29.5054 62.3468 29.0775 62.4324 28.644 62.4324C27.4003 62.4267 26.1452 62.4837 24.9187 62.324C23.1159 62.0958 21.7524 61.0689 20.7427 59.5799C20.6913 59.5057 20.6742 59.403 20.6742 59.3118C20.6685 56.0485 20.6685 52.791 20.6742 49.5278C20.6742 49.4993 20.6799 49.4708 20.697 49.351C23.8119 53.6867 26.8869 57.9654 30.0017 62.2954Z" fill="white"/> -<path d="M65.9551 62.284C69.0243 57.9996 72.0365 53.7951 75.0943 49.5221C75.1057 49.6989 75.1172 49.7959 75.1172 49.8929C75.1172 53.0591 75.1229 56.2254 75.1114 59.3916C75.1114 59.557 75.0373 59.7453 74.9403 59.8822C74.2158 60.835 73.2174 61.4169 72.1449 61.879C70.6445 62.5236 69.0757 62.6149 67.4726 62.478C66.9934 62.438 66.5199 62.3582 65.9551 62.284Z" fill="white"/> -<path d="M34.1165 73.2945C35.0578 74.6523 36.4099 75.16 38.013 75.3197C35.8337 78.098 33.6772 80.8363 31.5094 83.5975C29.8777 82.371 28.423 80.9904 27.0938 79.4272C29.4385 77.3792 31.7718 75.3483 34.1165 73.2945Z" fill="white"/> -<path d="M57.9434 75.1143C59.4266 74.9945 60.5904 74.3613 61.5431 73.2831C63.9278 75.3311 66.2896 77.3735 68.6856 79.4329C67.3906 80.979 65.9416 82.3367 64.3157 83.5747C62.1992 80.7622 60.0884 77.9611 57.9434 75.1143Z" fill="white"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 58.248H105.72C106.408 58.248 107.024 58.352 107.568 58.56C108.128 58.768 108.6 59.056 108.984 59.424C109.368 59.792 109.656 60.248 109.848 60.792C110.056 61.32 110.16 61.904 110.16 62.544C110.16 63.184 110.072 63.728 109.896 64.176C109.736 64.608 109.512 64.968 109.224 65.256C108.952 65.544 108.632 65.76 108.264 65.904C107.912 66.048 107.544 66.128 107.16 66.144V66.288C107.528 66.288 107.92 66.36 108.336 66.504C108.768 66.648 109.16 66.88 109.512 67.2C109.88 67.504 110.184 67.904 110.424 68.4C110.664 68.88 110.784 69.48 110.784 70.2C110.784 70.872 110.672 71.504 110.448 72.096C110.24 72.672 109.944 73.176 109.56 73.608C109.176 74.04 108.72 74.384 108.192 74.64C107.664 74.88 107.088 75 106.464 75H97.968V58.248ZM101.136 72.312H105.552C106.16 72.312 106.632 72.16 106.968 71.856C107.304 71.536 107.472 71.08 107.472 70.488V69.672C107.472 69.08 107.304 68.624 106.968 68.304C106.632 67.984 106.16 67.824 105.552 67.824H101.136V72.312ZM101.136 65.232H105.048C105.624 65.232 106.072 65.08 106.392 64.776C106.712 64.456 106.872 64.016 106.872 63.456V62.712C106.872 62.152 106.712 61.72 106.392 61.416C106.072 61.096 105.624 60.936 105.048 60.936H101.136V65.232ZM118.658 75.288C117.762 75.288 116.954 75.136 116.234 74.832C115.53 74.528 114.922 74.088 114.41 73.512C113.914 72.936 113.53 72.248 113.258 71.448C112.986 70.632 112.85 69.72 112.85 68.712C112.85 67.704 112.986 66.8 113.258 66C113.53 65.2 113.914 64.52 114.41 63.96C114.922 63.384 115.53 62.944 116.234 62.64C116.954 62.336 117.762 62.184 118.658 62.184C119.554 62.184 120.362 62.336 121.082 62.64C121.802 62.944 122.41 63.384 122.906 63.96C123.418 64.52 123.81 65.2 124.082 66C124.354 66.8 124.49 67.704 124.49 68.712C124.49 69.72 124.354 70.632 124.082 71.448C123.81 72.248 123.418 72.936 122.906 73.512C122.41 74.088 121.802 74.528 121.082 74.832C120.362 75.136 119.554 75.288 118.658 75.288ZM118.658 72.816C119.474 72.816 120.114 72.568 120.578 72.072C121.042 71.576 121.274 70.848 121.274 69.888V67.56C121.274 66.616 121.042 65.896 120.578 65.4C120.114 64.904 119.474 64.656 118.658 64.656C117.858 64.656 117.226 64.904 116.762 65.4C116.298 65.896 116.066 66.616 116.066 67.56V69.888C116.066 70.848 116.298 71.576 116.762 72.072C117.226 72.568 117.858 72.816 118.658 72.816ZM130.286 75C129.23 75 128.454 74.736 127.958 74.208C127.462 73.68 127.214 72.936 127.214 71.976V57.24H130.286V72.552H131.942V75H130.286ZM141.756 72.912H141.636C141.524 73.232 141.372 73.536 141.18 73.824C141.004 74.096 140.772 74.344 140.484 74.568C140.212 74.792 139.876 74.968 139.476 75.096C139.092 75.224 138.644 75.288 138.132 75.288C136.836 75.288 135.844 74.864 135.156 74.016C134.468 73.168 134.124 71.96 134.124 70.392V62.472H137.196V70.08C137.196 70.944 137.364 71.608 137.7 72.072C138.036 72.52 138.572 72.744 139.308 72.744C139.612 72.744 139.908 72.704 140.196 72.624C140.5 72.544 140.764 72.424 140.988 72.264C141.212 72.088 141.396 71.88 141.54 71.64C141.684 71.384 141.756 71.088 141.756 70.752V62.472H144.828V75H141.756V72.912ZM148.378 75V62.472H151.45V64.56H151.57C151.826 63.888 152.226 63.328 152.77 62.88C153.33 62.416 154.098 62.184 155.074 62.184C156.37 62.184 157.362 62.608 158.05 63.456C158.738 64.304 159.082 65.512 159.082 67.08V75H156.01V67.392C156.01 66.496 155.85 65.824 155.53 65.376C155.21 64.928 154.682 64.704 153.946 64.704C153.626 64.704 153.314 64.752 153.01 64.848C152.722 64.928 152.458 65.056 152.218 65.232C151.994 65.392 151.81 65.6 151.666 65.856C151.522 66.096 151.45 66.384 151.45 66.72V75H148.378ZM173.791 76.056C173.791 76.712 173.671 77.288 173.431 77.784C173.207 78.296 172.831 78.72 172.303 79.056C171.775 79.392 171.095 79.648 170.263 79.824C169.431 80 168.415 80.088 167.215 80.088C166.159 80.088 165.263 80.016 164.527 79.872C163.791 79.744 163.183 79.552 162.703 79.296C162.239 79.056 161.903 78.752 161.695 78.384C161.487 78.016 161.383 77.6 161.383 77.136C161.383 76.432 161.575 75.88 161.959 75.48C162.359 75.096 162.911 74.848 163.615 74.736V74.472C163.103 74.344 162.703 74.096 162.415 73.728C162.143 73.344 162.007 72.896 162.007 72.384C162.007 72.064 162.071 71.784 162.199 71.544C162.327 71.288 162.495 71.072 162.703 70.896C162.927 70.72 163.175 70.576 163.447 70.464C163.719 70.336 164.007 70.24 164.311 70.176V70.08C163.543 69.728 162.967 69.24 162.583 68.616C162.215 67.992 162.031 67.264 162.031 66.432C162.031 65.152 162.471 64.128 163.351 63.36C164.231 62.576 165.519 62.184 167.215 62.184C167.599 62.184 167.975 62.208 168.343 62.256C168.727 62.304 169.079 62.384 169.399 62.496V62.088C169.399 60.872 169.991 60.264 171.175 60.264H173.119V62.616H170.455V62.952C171.111 63.32 171.599 63.8 171.919 64.392C172.239 64.984 172.399 65.664 172.399 66.432C172.399 67.696 171.959 68.712 171.079 69.48C170.215 70.248 168.927 70.632 167.215 70.632C166.479 70.632 165.839 70.56 165.295 70.416C165.055 70.528 164.847 70.68 164.671 70.872C164.495 71.048 164.407 71.272 164.407 71.544C164.407 72.168 164.951 72.48 166.039 72.48H169.399C170.935 72.48 172.047 72.8 172.735 73.44C173.439 74.064 173.791 74.936 173.791 76.056ZM170.911 76.416C170.911 76.016 170.751 75.704 170.431 75.48C170.111 75.256 169.559 75.144 168.775 75.144H164.503C164.071 75.464 163.855 75.896 163.855 76.44C163.855 76.92 164.055 77.296 164.455 77.568C164.855 77.84 165.535 77.976 166.495 77.976H168.031C169.039 77.976 169.767 77.848 170.215 77.592C170.679 77.336 170.911 76.944 170.911 76.416ZM167.215 68.544C168.719 68.544 169.471 67.904 169.471 66.624V66.216C169.471 64.936 168.719 64.296 167.215 64.296C165.711 64.296 164.959 64.936 164.959 66.216V66.624C164.959 67.904 165.711 68.544 167.215 68.544ZM184.734 75C184.062 75 183.526 74.808 183.126 74.424C182.742 74.024 182.502 73.496 182.406 72.84H182.262C182.054 73.656 181.63 74.272 180.99 74.688C180.35 75.088 179.558 75.288 178.614 75.288C177.334 75.288 176.35 74.952 175.662 74.28C174.974 73.608 174.63 72.712 174.63 71.592C174.63 70.296 175.094 69.336 176.022 68.712C176.95 68.072 178.27 67.752 179.982 67.752H182.118V66.84C182.118 66.136 181.934 65.592 181.566 65.208C181.198 64.824 180.606 64.632 179.79 64.632C179.07 64.632 178.486 64.792 178.038 65.112C177.606 65.416 177.238 65.784 176.934 66.216L175.11 64.584C175.574 63.864 176.19 63.288 176.958 62.856C177.726 62.408 178.742 62.184 180.006 62.184C181.702 62.184 182.99 62.568 183.87 63.336C184.75 64.104 185.19 65.208 185.19 66.648V72.552H186.438V75H184.734ZM179.646 73.056C180.334 73.056 180.918 72.904 181.398 72.6C181.878 72.296 182.118 71.848 182.118 71.256V69.6H180.15C178.55 69.6 177.75 70.112 177.75 71.136V71.544C177.75 72.056 177.91 72.44 178.23 72.696C178.566 72.936 179.038 73.056 179.646 73.056ZM188.924 75V62.472H191.996V65.064H192.116C192.196 64.728 192.316 64.408 192.476 64.104C192.652 63.784 192.876 63.504 193.148 63.264C193.42 63.024 193.74 62.832 194.108 62.688C194.492 62.544 194.932 62.472 195.428 62.472H196.1V65.376H195.14C194.1 65.376 193.316 65.528 192.788 65.832C192.26 66.136 191.996 66.632 191.996 67.32V75H188.924ZM201.222 75L197.046 62.472H200.07L201.822 67.872L203.046 72.336H203.214L204.438 67.872L206.142 62.472H209.07L204.87 75H201.222ZM211.12 75V62.472H214.192V75H211.12ZM212.992 61.056L211.144 60.168L213.424 55.68L216.016 56.952L212.992 61.056ZM217.753 57.24H220.825V67.944H220.945L222.601 65.688L225.409 62.472H228.889L224.569 67.32L229.345 75H225.697L222.481 69.384L220.825 71.184V75H217.753V57.24Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57909"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/borgarbyggd.svg b/libs/application/templates/financial-aid/src/svg/borgarbyggd.svg deleted file mode 100644 index fdb7e6c3598d..000000000000 --- a/libs/application/templates/financial-aid/src/svg/borgarbyggd.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M62.7487 31.7853C62.5932 33.5511 62.2823 36.3165 61.9084 38.4081H61.8899C59.8035 37.7611 57.6678 37.2856 55.5039 36.9866C55.8493 34.8241 56.073 32.6439 56.174 30.4563C58.3928 30.759 60.5891 31.2079 62.7487 31.8001V31.7853ZM53.6307 30.1379C53.5287 32.3243 53.3038 34.5033 52.957 36.6645V36.6978C49.2387 36.3969 45.4964 36.6464 41.851 37.4382C42.3012 42.5196 44.1261 47.3827 47.13 51.5058C45.8898 53.3499 44.4082 55.0195 42.7247 56.4701C37.7122 50.3656 34.7284 41.292 34.4174 31.9037C40.6648 30.1032 47.197 29.504 53.6677 30.1379H53.6307ZM33.0292 42.2027C33.5097 44.3349 34.1621 46.4248 34.9801 48.4516C32.9379 49.2351 30.9407 50.1312 28.9977 51.1356C28.1504 49.0662 27.4417 46.9428 26.8764 44.7793C28.4387 44.0389 31.0301 42.9283 33.0292 42.1879V42.2027ZM30.0305 53.4975C31.9722 52.489 33.9695 51.5916 36.013 50.8098C37.6266 54.187 39.7325 57.3059 42.2619 60.0648C46.4494 57.1329 49.7591 53.1155 51.8353 48.4442C54.056 48.5907 56.2466 49.0378 58.3471 49.7733C55.5669 57.1772 49.2105 64.2962 41.1661 69.2642C36.4863 64.7577 32.7027 59.4053 30.0157 53.49L30.0305 53.4975ZM50.7469 65.2661C52.3553 63.7845 53.8409 62.1751 55.1893 60.4535C56.8893 61.8345 58.6666 63.1175 60.5127 64.2962C59.1443 66.0645 57.6603 67.7402 56.0703 69.3124C54.6192 68.2943 52.3683 66.6395 50.758 65.2661H50.7469ZM62.0379 62.2527C60.1958 61.0797 58.421 59.8042 56.7219 58.4322V58.3693C58.84 55.2971 60.4928 51.929 61.627 48.3739C56.9991 46.2119 51.8692 45.3531 46.7894 45.8899C45.8113 43.91 45.1017 41.8085 44.6793 39.6409C52.4905 38.36 61.8602 40.2962 70.1231 44.7348C68.5581 51.0397 65.8135 56.9912 62.0342 62.2749L62.0379 62.2527ZM79.478 16H16C16 51.8612 26.2619 76.8829 47.8001 96C69.3531 76.9125 79.5039 51.9241 79.5039 16" fill="#17678B"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 58.248H105.72C106.408 58.248 107.024 58.352 107.568 58.56C108.128 58.768 108.6 59.056 108.984 59.424C109.368 59.792 109.656 60.248 109.848 60.792C110.056 61.32 110.16 61.904 110.16 62.544C110.16 63.184 110.072 63.728 109.896 64.176C109.736 64.608 109.512 64.968 109.224 65.256C108.952 65.544 108.632 65.76 108.264 65.904C107.912 66.048 107.544 66.128 107.16 66.144V66.288C107.528 66.288 107.92 66.36 108.336 66.504C108.768 66.648 109.16 66.88 109.512 67.2C109.88 67.504 110.184 67.904 110.424 68.4C110.664 68.88 110.784 69.48 110.784 70.2C110.784 70.872 110.672 71.504 110.448 72.096C110.24 72.672 109.944 73.176 109.56 73.608C109.176 74.04 108.72 74.384 108.192 74.64C107.664 74.88 107.088 75 106.464 75H97.968V58.248ZM101.136 72.312H105.552C106.16 72.312 106.632 72.16 106.968 71.856C107.304 71.536 107.472 71.08 107.472 70.488V69.672C107.472 69.08 107.304 68.624 106.968 68.304C106.632 67.984 106.16 67.824 105.552 67.824H101.136V72.312ZM101.136 65.232H105.048C105.624 65.232 106.072 65.08 106.392 64.776C106.712 64.456 106.872 64.016 106.872 63.456V62.712C106.872 62.152 106.712 61.72 106.392 61.416C106.072 61.096 105.624 60.936 105.048 60.936H101.136V65.232ZM118.658 75.288C117.762 75.288 116.954 75.136 116.234 74.832C115.53 74.528 114.922 74.088 114.41 73.512C113.914 72.936 113.53 72.248 113.258 71.448C112.986 70.632 112.85 69.72 112.85 68.712C112.85 67.704 112.986 66.8 113.258 66C113.53 65.2 113.914 64.52 114.41 63.96C114.922 63.384 115.53 62.944 116.234 62.64C116.954 62.336 117.762 62.184 118.658 62.184C119.554 62.184 120.362 62.336 121.082 62.64C121.802 62.944 122.41 63.384 122.906 63.96C123.418 64.52 123.81 65.2 124.082 66C124.354 66.8 124.49 67.704 124.49 68.712C124.49 69.72 124.354 70.632 124.082 71.448C123.81 72.248 123.418 72.936 122.906 73.512C122.41 74.088 121.802 74.528 121.082 74.832C120.362 75.136 119.554 75.288 118.658 75.288ZM118.658 72.816C119.474 72.816 120.114 72.568 120.578 72.072C121.042 71.576 121.274 70.848 121.274 69.888V67.56C121.274 66.616 121.042 65.896 120.578 65.4C120.114 64.904 119.474 64.656 118.658 64.656C117.858 64.656 117.226 64.904 116.762 65.4C116.298 65.896 116.066 66.616 116.066 67.56V69.888C116.066 70.848 116.298 71.576 116.762 72.072C117.226 72.568 117.858 72.816 118.658 72.816ZM127.214 75V62.472H130.286V65.064H130.406C130.486 64.728 130.606 64.408 130.766 64.104C130.942 63.784 131.166 63.504 131.438 63.264C131.71 63.024 132.03 62.832 132.398 62.688C132.782 62.544 133.222 62.472 133.718 62.472H134.39V65.376H133.43C132.39 65.376 131.606 65.528 131.078 65.832C130.55 66.136 130.286 66.632 130.286 67.32V75H127.214ZM147.541 76.056C147.541 76.712 147.421 77.288 147.181 77.784C146.957 78.296 146.581 78.72 146.053 79.056C145.525 79.392 144.845 79.648 144.013 79.824C143.181 80 142.165 80.088 140.965 80.088C139.909 80.088 139.013 80.016 138.277 79.872C137.541 79.744 136.933 79.552 136.453 79.296C135.989 79.056 135.653 78.752 135.445 78.384C135.237 78.016 135.133 77.6 135.133 77.136C135.133 76.432 135.325 75.88 135.709 75.48C136.109 75.096 136.661 74.848 137.365 74.736V74.472C136.853 74.344 136.453 74.096 136.165 73.728C135.893 73.344 135.757 72.896 135.757 72.384C135.757 72.064 135.821 71.784 135.949 71.544C136.077 71.288 136.245 71.072 136.453 70.896C136.677 70.72 136.925 70.576 137.197 70.464C137.469 70.336 137.757 70.24 138.061 70.176V70.08C137.293 69.728 136.717 69.24 136.333 68.616C135.965 67.992 135.781 67.264 135.781 66.432C135.781 65.152 136.221 64.128 137.101 63.36C137.981 62.576 139.269 62.184 140.965 62.184C141.349 62.184 141.725 62.208 142.093 62.256C142.477 62.304 142.829 62.384 143.149 62.496V62.088C143.149 60.872 143.741 60.264 144.925 60.264H146.869V62.616H144.205V62.952C144.861 63.32 145.349 63.8 145.669 64.392C145.989 64.984 146.149 65.664 146.149 66.432C146.149 67.696 145.709 68.712 144.829 69.48C143.965 70.248 142.677 70.632 140.965 70.632C140.229 70.632 139.589 70.56 139.045 70.416C138.805 70.528 138.597 70.68 138.421 70.872C138.245 71.048 138.157 71.272 138.157 71.544C138.157 72.168 138.701 72.48 139.789 72.48H143.149C144.685 72.48 145.797 72.8 146.485 73.44C147.189 74.064 147.541 74.936 147.541 76.056ZM144.661 76.416C144.661 76.016 144.501 75.704 144.181 75.48C143.861 75.256 143.309 75.144 142.525 75.144H138.253C137.821 75.464 137.605 75.896 137.605 76.44C137.605 76.92 137.805 77.296 138.205 77.568C138.605 77.84 139.285 77.976 140.245 77.976H141.781C142.789 77.976 143.517 77.848 143.965 77.592C144.429 77.336 144.661 76.944 144.661 76.416ZM140.965 68.544C142.469 68.544 143.221 67.904 143.221 66.624V66.216C143.221 64.936 142.469 64.296 140.965 64.296C139.461 64.296 138.709 64.936 138.709 66.216V66.624C138.709 67.904 139.461 68.544 140.965 68.544ZM158.484 75C157.812 75 157.276 74.808 156.876 74.424C156.492 74.024 156.252 73.496 156.156 72.84H156.012C155.804 73.656 155.38 74.272 154.74 74.688C154.1 75.088 153.308 75.288 152.364 75.288C151.084 75.288 150.1 74.952 149.412 74.28C148.724 73.608 148.38 72.712 148.38 71.592C148.38 70.296 148.844 69.336 149.772 68.712C150.7 68.072 152.02 67.752 153.732 67.752H155.868V66.84C155.868 66.136 155.684 65.592 155.316 65.208C154.948 64.824 154.356 64.632 153.54 64.632C152.82 64.632 152.236 64.792 151.788 65.112C151.356 65.416 150.988 65.784 150.684 66.216L148.86 64.584C149.324 63.864 149.94 63.288 150.708 62.856C151.476 62.408 152.492 62.184 153.756 62.184C155.452 62.184 156.74 62.568 157.62 63.336C158.5 64.104 158.94 65.208 158.94 66.648V72.552H160.188V75H158.484ZM153.396 73.056C154.084 73.056 154.668 72.904 155.148 72.6C155.628 72.296 155.868 71.848 155.868 71.256V69.6H153.9C152.3 69.6 151.5 70.112 151.5 71.136V71.544C151.5 72.056 151.66 72.44 151.98 72.696C152.316 72.936 152.788 73.056 153.396 73.056ZM162.674 75V62.472H165.746V65.064H165.866C165.946 64.728 166.066 64.408 166.226 64.104C166.402 63.784 166.626 63.504 166.898 63.264C167.17 63.024 167.49 62.832 167.858 62.688C168.242 62.544 168.682 62.472 169.178 62.472H169.85V65.376H168.89C167.85 65.376 167.066 65.528 166.538 65.832C166.01 66.136 165.746 66.632 165.746 67.32V75H162.674ZM172.096 57.24H175.168V64.536H175.264C175.488 63.816 175.912 63.248 176.536 62.832C177.16 62.4 177.888 62.184 178.72 62.184C180.32 62.184 181.536 62.752 182.368 63.888C183.216 65.008 183.64 66.616 183.64 68.712C183.64 70.824 183.216 72.448 182.368 73.584C181.536 74.72 180.32 75.288 178.72 75.288C177.888 75.288 177.16 75.072 176.536 74.64C175.928 74.208 175.504 73.632 175.264 72.912H175.168V75H172.096V57.24ZM177.736 72.744C178.536 72.744 179.184 72.48 179.68 71.952C180.176 71.424 180.424 70.712 180.424 69.816V67.656C180.424 66.76 180.176 66.048 179.68 65.52C179.184 64.976 178.536 64.704 177.736 64.704C177 64.704 176.384 64.888 175.888 65.256C175.408 65.624 175.168 66.112 175.168 66.72V70.704C175.168 71.36 175.408 71.864 175.888 72.216C176.384 72.568 177 72.744 177.736 72.744ZM193.956 62.472H196.836L191.796 77.232C191.636 77.68 191.452 78.064 191.244 78.384C191.052 78.72 190.82 78.992 190.548 79.2C190.276 79.408 189.948 79.56 189.564 79.656C189.18 79.752 188.732 79.8 188.22 79.8H186.372V77.352H188.628L189.204 75.6L184.716 62.472H187.764L189.948 69.096L190.764 72.264H190.908L191.772 69.096L193.956 62.472ZM209.58 76.056C209.58 76.712 209.46 77.288 209.22 77.784C208.996 78.296 208.62 78.72 208.092 79.056C207.564 79.392 206.884 79.648 206.052 79.824C205.22 80 204.204 80.088 203.004 80.088C201.948 80.088 201.052 80.016 200.316 79.872C199.58 79.744 198.972 79.552 198.492 79.296C198.028 79.056 197.692 78.752 197.484 78.384C197.276 78.016 197.172 77.6 197.172 77.136C197.172 76.432 197.364 75.88 197.748 75.48C198.148 75.096 198.7 74.848 199.404 74.736V74.472C198.892 74.344 198.492 74.096 198.204 73.728C197.932 73.344 197.796 72.896 197.796 72.384C197.796 72.064 197.86 71.784 197.988 71.544C198.116 71.288 198.284 71.072 198.492 70.896C198.716 70.72 198.964 70.576 199.236 70.464C199.508 70.336 199.796 70.24 200.1 70.176V70.08C199.332 69.728 198.756 69.24 198.372 68.616C198.004 67.992 197.82 67.264 197.82 66.432C197.82 65.152 198.26 64.128 199.14 63.36C200.02 62.576 201.308 62.184 203.004 62.184C203.388 62.184 203.764 62.208 204.132 62.256C204.516 62.304 204.868 62.384 205.188 62.496V62.088C205.188 60.872 205.78 60.264 206.964 60.264H208.908V62.616H206.244V62.952C206.9 63.32 207.388 63.8 207.708 64.392C208.028 64.984 208.188 65.664 208.188 66.432C208.188 67.696 207.748 68.712 206.868 69.48C206.004 70.248 204.716 70.632 203.004 70.632C202.268 70.632 201.628 70.56 201.084 70.416C200.844 70.528 200.636 70.68 200.46 70.872C200.284 71.048 200.196 71.272 200.196 71.544C200.196 72.168 200.74 72.48 201.828 72.48H205.188C206.724 72.48 207.836 72.8 208.524 73.44C209.228 74.064 209.58 74.936 209.58 76.056ZM206.7 76.416C206.7 76.016 206.54 75.704 206.22 75.48C205.9 75.256 205.348 75.144 204.564 75.144H200.292C199.86 75.464 199.644 75.896 199.644 76.44C199.644 76.92 199.844 77.296 200.244 77.568C200.644 77.84 201.324 77.976 202.284 77.976H203.82C204.828 77.976 205.556 77.848 206.004 77.592C206.468 77.336 206.7 76.944 206.7 76.416ZM203.004 68.544C204.508 68.544 205.26 67.904 205.26 66.624V66.216C205.26 64.936 204.508 64.296 203.004 64.296C201.5 64.296 200.748 64.936 200.748 66.216V66.624C200.748 67.904 201.5 68.544 203.004 68.544ZM222.799 76.056C222.799 76.712 222.679 77.288 222.439 77.784C222.215 78.296 221.839 78.72 221.311 79.056C220.783 79.392 220.103 79.648 219.271 79.824C218.439 80 217.423 80.088 216.223 80.088C215.167 80.088 214.271 80.016 213.535 79.872C212.799 79.744 212.191 79.552 211.711 79.296C211.247 79.056 210.911 78.752 210.703 78.384C210.495 78.016 210.391 77.6 210.391 77.136C210.391 76.432 210.583 75.88 210.967 75.48C211.367 75.096 211.919 74.848 212.623 74.736V74.472C212.111 74.344 211.711 74.096 211.423 73.728C211.151 73.344 211.015 72.896 211.015 72.384C211.015 72.064 211.079 71.784 211.207 71.544C211.335 71.288 211.503 71.072 211.711 70.896C211.935 70.72 212.183 70.576 212.455 70.464C212.727 70.336 213.015 70.24 213.319 70.176V70.08C212.551 69.728 211.975 69.24 211.591 68.616C211.223 67.992 211.039 67.264 211.039 66.432C211.039 65.152 211.479 64.128 212.359 63.36C213.239 62.576 214.527 62.184 216.223 62.184C216.607 62.184 216.983 62.208 217.351 62.256C217.735 62.304 218.087 62.384 218.407 62.496V62.088C218.407 60.872 218.999 60.264 220.183 60.264H222.127V62.616H219.463V62.952C220.119 63.32 220.607 63.8 220.927 64.392C221.247 64.984 221.407 65.664 221.407 66.432C221.407 67.696 220.967 68.712 220.087 69.48C219.223 70.248 217.935 70.632 216.223 70.632C215.487 70.632 214.847 70.56 214.303 70.416C214.063 70.528 213.855 70.68 213.679 70.872C213.503 71.048 213.415 71.272 213.415 71.544C213.415 72.168 213.959 72.48 215.047 72.48H218.407C219.943 72.48 221.055 72.8 221.743 73.44C222.447 74.064 222.799 74.936 222.799 76.056ZM219.919 76.416C219.919 76.016 219.759 75.704 219.439 75.48C219.119 75.256 218.567 75.144 217.783 75.144H213.511C213.079 75.464 212.863 75.896 212.863 76.44C212.863 76.92 213.063 77.296 213.463 77.568C213.863 77.84 214.543 77.976 215.503 77.976H217.039C218.047 77.976 218.775 77.848 219.223 77.592C219.687 77.336 219.919 76.944 219.919 76.416ZM216.223 68.544C217.727 68.544 218.479 67.904 218.479 66.624V66.216C218.479 64.936 217.727 64.296 216.223 64.296C214.719 64.296 213.967 64.936 213.967 66.216V66.624C213.967 67.904 214.719 68.544 216.223 68.544ZM233.72 58.224L231.944 59.376C233.048 60.528 233.936 61.856 234.608 63.36C235.28 64.864 235.616 66.536 235.616 68.376C235.616 69.56 235.472 70.592 235.184 71.472C234.896 72.336 234.488 73.056 233.96 73.632C233.448 74.192 232.832 74.608 232.112 74.88C231.392 75.152 230.592 75.288 229.712 75.288C228.768 75.288 227.92 75.144 227.168 74.856C226.432 74.552 225.8 74.128 225.272 73.584C224.76 73.04 224.368 72.376 224.096 71.592C223.824 70.808 223.688 69.936 223.688 68.976C223.688 68.08 223.8 67.264 224.024 66.528C224.264 65.792 224.6 65.16 225.032 64.632C225.464 64.104 225.984 63.696 226.592 63.408C227.216 63.12 227.904 62.976 228.656 62.976C229.52 62.976 230.24 63.192 230.816 63.624C231.408 64.04 231.872 64.608 232.208 65.328L232.352 65.256C232.16 64.44 231.816 63.664 231.32 62.928C230.84 62.192 230.256 61.488 229.568 60.816L227.504 62.112L226.4 60.792L228.272 59.664C227.712 59.2 227.12 58.768 226.496 58.368C225.888 57.968 225.272 57.592 224.648 57.24H229.328C229.552 57.368 229.768 57.52 229.976 57.696C230.184 57.856 230.4 58.024 230.624 58.2L232.64 56.928L233.72 58.224ZM229.664 72.936C230.512 72.936 231.184 72.664 231.68 72.12C232.176 71.576 232.424 70.816 232.424 69.84V68.448C232.424 67.472 232.176 66.712 231.68 66.168C231.184 65.624 230.512 65.352 229.664 65.352C228.8 65.352 228.12 65.624 227.624 66.168C227.128 66.712 226.88 67.472 226.88 68.448V69.84C226.88 70.816 227.128 71.576 227.624 72.12C228.12 72.664 228.8 72.936 229.664 72.936Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/dalabyggd.svg b/libs/application/templates/financial-aid/src/svg/dalabyggd.svg deleted file mode 100644 index cddee64f9eba..000000000000 --- a/libs/application/templates/financial-aid/src/svg/dalabyggd.svg +++ /dev/null @@ -1,13 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.9761 96L47.7884 95.8976C28.6928 85.6587 19 74.0205 19 61.3072V16H76.9352V61.3072C76.9352 74.0205 67.2423 85.6587 48.1468 95.8976L47.9761 96Z" fill="white"/> -<path d="M63.8304 55.1638H63.5574C63.5062 56.0683 62.9089 57.4164 61.2366 57.4164H55.2639C51.8338 57.4164 51.1171 60.1468 51.1171 60.1468L51.0659 60.1979L50.9977 60.1468C50.9977 60.1468 50.2809 57.4164 46.8509 57.4164H40.8782C39.2059 57.4164 38.6086 56.0683 38.5403 55.1638H38.2844C38.2844 55.7099 38.199 59.6348 41.8168 59.6348H48.0454C49.1035 59.6348 50.3321 60.5051 50.3321 61.8703V63.3379L51.4243 62.5529V61.8874C51.4243 61.0171 52.0045 59.6348 54.0523 59.6348H60.298C63.9328 59.6348 63.8304 55.7099 63.8304 55.1638Z" fill="#305876"/> -<path d="M61.8659 50.0956C57.7703 50.0956 54.9717 52.2457 54.9717 56.4437C54.9717 60.8806 57.941 62.7747 61.7123 62.7747C66.0809 62.7747 68.8454 60.1809 68.743 56.5632C68.6406 52.9454 66.2345 50.0956 61.8659 50.0956ZM61.4222 61.6485C58.5724 61.6485 56.115 59.4642 56.115 56.3925C56.115 53.4744 58.2823 51.1365 61.2857 51.1365C63.9819 51.1365 66.4563 53.5085 66.4563 56.4266C66.4563 59.3447 64.255 61.6485 61.4222 61.6485Z" fill="#305876"/> -<path d="M54.2398 72.1263C53.233 72.5188 52.1579 72.7406 51.0828 72.7747H51.0487C49.9736 72.7406 48.8985 72.5188 47.8917 72.1263C45.2466 71.1365 43.0794 70.9488 40.3832 71.4437C39.2228 71.6826 38.0794 72.0239 36.9531 72.4505C37.1579 72.8771 37.5333 73.6792 37.7893 74.1911C38.7449 73.8328 39.7176 73.5427 40.7074 73.3379C42.6699 72.9795 44.5129 72.9454 47.192 73.9352C48.4207 74.413 49.7347 74.6689 51.0487 74.7031C52.3627 74.6689 53.6596 74.3959 54.8883 73.9352C57.5675 72.9454 59.4275 72.9795 61.3729 73.3379C62.3627 73.5427 63.3525 73.8328 64.291 74.1911C64.547 73.6621 64.9395 72.8601 65.1272 72.4505C64.018 72.0239 62.8746 71.6826 61.7142 71.4437C59.0521 70.9317 56.8849 71.1365 54.2398 72.1263Z" fill="#305876"/> -<path d="M61.7305 67.7065C59.0342 67.2116 56.867 67.4164 54.2219 68.3891C53.2151 68.7816 52.1571 69.0034 51.082 69.0546H51.0479C49.9728 69.0205 48.8977 68.7986 47.8909 68.4061C45.2458 67.4334 43.0786 67.2287 40.3824 67.7236C38.1639 68.1331 35.5018 69.3276 35.3994 69.3788L36.2015 71.1195C36.2185 71.1024 38.7441 69.9761 40.7407 69.6007C42.7032 69.2423 44.5462 69.2082 47.2254 70.198C48.454 70.6758 49.751 70.9318 51.0649 70.9659C52.3789 70.9318 53.6759 70.6587 54.9045 70.198C57.5837 69.2082 59.4438 69.2423 61.3892 69.6007C63.3687 69.9591 65.8943 71.1024 65.9284 71.1195L66.7305 69.3618C66.611 69.3106 63.966 68.116 61.7305 67.7065Z" fill="#305876"/> -<path d="M54.2391 75.8294C53.2323 76.2219 52.1572 76.4437 51.0821 76.4778H51.048C49.9729 76.4437 48.8978 76.2219 47.891 75.8294C45.2459 74.8567 43.0787 74.6519 40.3825 75.1468C39.9729 75.215 39.5633 75.3174 39.1367 75.4369C39.3586 75.9829 39.6487 76.6826 39.8705 77.2287C40.1606 77.1604 40.4507 77.0922 40.7237 77.041C42.6862 76.6826 44.5292 76.6485 47.2084 77.6382C48.4371 78.1161 49.734 78.372 51.048 78.4062C52.362 78.372 53.6589 78.099 54.8876 77.6382C57.5667 76.6485 59.4268 76.6826 61.3722 77.041C61.6452 77.0922 61.9353 77.1604 62.2254 77.2287C62.4473 76.6655 62.7374 75.9659 62.9592 75.4369C62.5497 75.3174 62.1231 75.215 61.7135 75.1468C59.0514 74.6519 56.8842 74.8567 54.2391 75.8294Z" fill="#305876"/> -<path d="M58.3517 21.785C58.1128 22.0239 57.4814 22.6382 56.5941 23.5597L55.7237 19.0546C54.0514 20.5222 52.6691 22.2969 51.6623 24.2765L50.6043 20.9659C50.6043 20.9659 48.0787 23.6621 46.7306 28.372L45.4848 24.8908C45.4848 24.8908 42.5667 29.6178 41.7818 33.9693L40.3654 29.9932C40.3654 29.9932 37.7715 34.5836 36.5599 39.3106L35.4166 36.2219C35.4166 36.2219 33.4882 39.3447 32.7545 46.1536L31.7647 43.1331C31.7647 43.1331 29.0343 47.5871 29.0343 53.2696C29.0343 57.4505 30.007 60.1638 30.536 61.3243C28.8978 65.6587 27.6521 70.1468 26.7988 74.7031C26.7988 74.7031 28.1128 75.1809 28.7613 77.1434C28.7613 77.1434 29.734 66.6826 33.5394 58.2014C37.3449 49.7202 41.2698 44.4642 46.4575 37.4335C52.2425 29.6178 58.2664 23.3379 59.0002 22.4847C59.734 21.6314 59.0855 21.0683 58.3517 21.785ZM36.3381 49.2765C34.478 52.4505 32.8227 55.744 31.3893 59.1229C30.8773 57.8601 29.0855 52.7065 31.048 46.9386C31.048 46.9386 31.7647 48.901 33.1128 53.3208C33.1128 53.3208 33.5736 44.7202 34.8876 40.5222L36.85 46.2048C36.85 46.2048 37.4132 37.9966 39.6657 33.6451L41.5429 39.4812C41.5429 39.4812 42.6862 31.8703 44.6657 28.5256L46.2698 33.1502C46.2698 33.1502 47.6179 27.1775 49.6145 24.2935L50.9627 28.2355C50.9627 28.2355 52.2937 24.2765 54.5975 21.5461L55.4336 24.7714C53.9831 26.3072 52.1572 28.2867 50.3313 30.4369C46.6282 34.7543 40.4678 42.1263 36.3381 49.2765Z" fill="#305876"/> -<path d="M47.9761 96L47.7884 95.8976C28.6928 85.6587 19 74.0205 19 61.3072V16H76.9352V61.3072C76.9352 74.0205 67.2423 85.6587 48.1468 95.8976L47.9761 96ZM19.7679 16.7679V61.3072C19.7679 73.6792 29.256 85.0444 47.959 95.1297C66.6792 85.0444 76.1672 73.6792 76.1672 61.3072V16.7679H19.7679Z" fill="#305876"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 58.248H104.064C105.152 58.248 106.136 58.424 107.016 58.776C107.912 59.128 108.672 59.656 109.296 60.36C109.936 61.048 110.424 61.92 110.76 62.976C111.112 64.016 111.288 65.232 111.288 66.624C111.288 68.016 111.112 69.24 110.76 70.296C110.424 71.336 109.936 72.208 109.296 72.912C108.672 73.6 107.912 74.12 107.016 74.472C106.136 74.824 105.152 75 104.064 75H97.968V58.248ZM104.064 72.192C105.248 72.192 106.184 71.848 106.872 71.16C107.576 70.456 107.928 69.384 107.928 67.944V65.304C107.928 63.864 107.576 62.8 106.872 62.112C106.184 61.408 105.248 61.056 104.064 61.056H101.136V72.192H104.064ZM123.539 75C122.867 75 122.331 74.808 121.931 74.424C121.547 74.024 121.307 73.496 121.211 72.84H121.067C120.859 73.656 120.435 74.272 119.795 74.688C119.155 75.088 118.363 75.288 117.419 75.288C116.139 75.288 115.155 74.952 114.467 74.28C113.779 73.608 113.435 72.712 113.435 71.592C113.435 70.296 113.899 69.336 114.827 68.712C115.755 68.072 117.075 67.752 118.787 67.752H120.923V66.84C120.923 66.136 120.739 65.592 120.371 65.208C120.003 64.824 119.411 64.632 118.595 64.632C117.875 64.632 117.291 64.792 116.843 65.112C116.411 65.416 116.043 65.784 115.739 66.216L113.915 64.584C114.379 63.864 114.995 63.288 115.763 62.856C116.531 62.408 117.547 62.184 118.811 62.184C120.507 62.184 121.795 62.568 122.675 63.336C123.555 64.104 123.995 65.208 123.995 66.648V72.552H125.243V75H123.539ZM118.451 73.056C119.139 73.056 119.723 72.904 120.203 72.6C120.683 72.296 120.923 71.848 120.923 71.256V69.6H118.955C117.355 69.6 116.555 70.112 116.555 71.136V71.544C116.555 72.056 116.715 72.44 117.035 72.696C117.371 72.936 117.843 73.056 118.451 73.056ZM130.801 75C129.745 75 128.969 74.736 128.473 74.208C127.977 73.68 127.729 72.936 127.729 71.976V57.24H130.801V72.552H132.457V75H130.801ZM144 75C143.328 75 142.792 74.808 142.392 74.424C142.008 74.024 141.768 73.496 141.672 72.84H141.528C141.32 73.656 140.896 74.272 140.256 74.688C139.616 75.088 138.824 75.288 137.88 75.288C136.6 75.288 135.616 74.952 134.928 74.28C134.24 73.608 133.896 72.712 133.896 71.592C133.896 70.296 134.36 69.336 135.288 68.712C136.216 68.072 137.536 67.752 139.248 67.752H141.384V66.84C141.384 66.136 141.2 65.592 140.832 65.208C140.464 64.824 139.872 64.632 139.056 64.632C138.336 64.632 137.752 64.792 137.304 65.112C136.872 65.416 136.504 65.784 136.2 66.216L134.376 64.584C134.84 63.864 135.456 63.288 136.224 62.856C136.992 62.408 138.008 62.184 139.272 62.184C140.968 62.184 142.256 62.568 143.136 63.336C144.016 64.104 144.456 65.208 144.456 66.648V72.552H145.704V75H144ZM138.912 73.056C139.6 73.056 140.184 72.904 140.664 72.6C141.144 72.296 141.384 71.848 141.384 71.256V69.6H139.416C137.816 69.6 137.016 70.112 137.016 71.136V71.544C137.016 72.056 137.176 72.44 137.496 72.696C137.832 72.936 138.304 73.056 138.912 73.056ZM148.19 57.24H151.262V64.536H151.358C151.582 63.816 152.006 63.248 152.63 62.832C153.254 62.4 153.982 62.184 154.814 62.184C156.414 62.184 157.63 62.752 158.462 63.888C159.31 65.008 159.734 66.616 159.734 68.712C159.734 70.824 159.31 72.448 158.462 73.584C157.63 74.72 156.414 75.288 154.814 75.288C153.982 75.288 153.254 75.072 152.63 74.64C152.022 74.208 151.598 73.632 151.358 72.912H151.262V75H148.19V57.24ZM153.83 72.744C154.63 72.744 155.278 72.48 155.774 71.952C156.27 71.424 156.518 70.712 156.518 69.816V67.656C156.518 66.76 156.27 66.048 155.774 65.52C155.278 64.976 154.63 64.704 153.83 64.704C153.094 64.704 152.478 64.888 151.982 65.256C151.502 65.624 151.262 66.112 151.262 66.72V70.704C151.262 71.36 151.502 71.864 151.982 72.216C152.478 72.568 153.094 72.744 153.83 72.744ZM170.05 62.472H172.93L167.89 77.232C167.73 77.68 167.546 78.064 167.338 78.384C167.146 78.72 166.914 78.992 166.642 79.2C166.37 79.408 166.042 79.56 165.658 79.656C165.274 79.752 164.826 79.8 164.314 79.8H162.466V77.352H164.722L165.298 75.6L160.81 62.472H163.858L166.042 69.096L166.858 72.264H167.002L167.866 69.096L170.05 62.472ZM185.674 76.056C185.674 76.712 185.554 77.288 185.314 77.784C185.09 78.296 184.714 78.72 184.186 79.056C183.658 79.392 182.978 79.648 182.146 79.824C181.314 80 180.298 80.088 179.098 80.088C178.042 80.088 177.146 80.016 176.41 79.872C175.674 79.744 175.066 79.552 174.586 79.296C174.122 79.056 173.786 78.752 173.578 78.384C173.37 78.016 173.266 77.6 173.266 77.136C173.266 76.432 173.458 75.88 173.842 75.48C174.242 75.096 174.794 74.848 175.498 74.736V74.472C174.986 74.344 174.586 74.096 174.298 73.728C174.026 73.344 173.89 72.896 173.89 72.384C173.89 72.064 173.954 71.784 174.082 71.544C174.21 71.288 174.378 71.072 174.586 70.896C174.81 70.72 175.058 70.576 175.33 70.464C175.602 70.336 175.89 70.24 176.194 70.176V70.08C175.426 69.728 174.85 69.24 174.466 68.616C174.098 67.992 173.914 67.264 173.914 66.432C173.914 65.152 174.354 64.128 175.234 63.36C176.114 62.576 177.402 62.184 179.098 62.184C179.482 62.184 179.858 62.208 180.226 62.256C180.61 62.304 180.962 62.384 181.282 62.496V62.088C181.282 60.872 181.874 60.264 183.058 60.264H185.002V62.616H182.338V62.952C182.994 63.32 183.482 63.8 183.802 64.392C184.122 64.984 184.282 65.664 184.282 66.432C184.282 67.696 183.842 68.712 182.962 69.48C182.098 70.248 180.81 70.632 179.098 70.632C178.362 70.632 177.722 70.56 177.178 70.416C176.938 70.528 176.73 70.68 176.554 70.872C176.378 71.048 176.29 71.272 176.29 71.544C176.29 72.168 176.834 72.48 177.922 72.48H181.282C182.818 72.48 183.93 72.8 184.618 73.44C185.322 74.064 185.674 74.936 185.674 76.056ZM182.794 76.416C182.794 76.016 182.634 75.704 182.314 75.48C181.994 75.256 181.442 75.144 180.658 75.144H176.386C175.954 75.464 175.738 75.896 175.738 76.44C175.738 76.92 175.938 77.296 176.338 77.568C176.738 77.84 177.418 77.976 178.378 77.976H179.914C180.922 77.976 181.65 77.848 182.098 77.592C182.562 77.336 182.794 76.944 182.794 76.416ZM179.098 68.544C180.602 68.544 181.354 67.904 181.354 66.624V66.216C181.354 64.936 180.602 64.296 179.098 64.296C177.594 64.296 176.842 64.936 176.842 66.216V66.624C176.842 67.904 177.594 68.544 179.098 68.544ZM198.893 76.056C198.893 76.712 198.773 77.288 198.533 77.784C198.309 78.296 197.933 78.72 197.405 79.056C196.877 79.392 196.197 79.648 195.365 79.824C194.533 80 193.517 80.088 192.317 80.088C191.261 80.088 190.365 80.016 189.629 79.872C188.893 79.744 188.285 79.552 187.805 79.296C187.341 79.056 187.005 78.752 186.797 78.384C186.589 78.016 186.485 77.6 186.485 77.136C186.485 76.432 186.677 75.88 187.061 75.48C187.461 75.096 188.013 74.848 188.717 74.736V74.472C188.205 74.344 187.805 74.096 187.517 73.728C187.245 73.344 187.109 72.896 187.109 72.384C187.109 72.064 187.173 71.784 187.301 71.544C187.429 71.288 187.597 71.072 187.805 70.896C188.029 70.72 188.277 70.576 188.549 70.464C188.821 70.336 189.109 70.24 189.413 70.176V70.08C188.645 69.728 188.069 69.24 187.685 68.616C187.317 67.992 187.133 67.264 187.133 66.432C187.133 65.152 187.573 64.128 188.453 63.36C189.333 62.576 190.621 62.184 192.317 62.184C192.701 62.184 193.077 62.208 193.445 62.256C193.829 62.304 194.181 62.384 194.501 62.496V62.088C194.501 60.872 195.093 60.264 196.277 60.264H198.221V62.616H195.557V62.952C196.213 63.32 196.701 63.8 197.021 64.392C197.341 64.984 197.501 65.664 197.501 66.432C197.501 67.696 197.061 68.712 196.181 69.48C195.317 70.248 194.029 70.632 192.317 70.632C191.581 70.632 190.941 70.56 190.397 70.416C190.157 70.528 189.949 70.68 189.773 70.872C189.597 71.048 189.509 71.272 189.509 71.544C189.509 72.168 190.053 72.48 191.141 72.48H194.501C196.037 72.48 197.149 72.8 197.837 73.44C198.541 74.064 198.893 74.936 198.893 76.056ZM196.013 76.416C196.013 76.016 195.853 75.704 195.533 75.48C195.213 75.256 194.661 75.144 193.877 75.144H189.605C189.173 75.464 188.957 75.896 188.957 76.44C188.957 76.92 189.157 77.296 189.557 77.568C189.957 77.84 190.637 77.976 191.597 77.976H193.133C194.141 77.976 194.869 77.848 195.317 77.592C195.781 77.336 196.013 76.944 196.013 76.416ZM192.317 68.544C193.821 68.544 194.573 67.904 194.573 66.624V66.216C194.573 64.936 193.821 64.296 192.317 64.296C190.813 64.296 190.061 64.936 190.061 66.216V66.624C190.061 67.904 190.813 68.544 192.317 68.544ZM209.814 58.224L208.038 59.376C209.142 60.528 210.03 61.856 210.702 63.36C211.374 64.864 211.71 66.536 211.71 68.376C211.71 69.56 211.566 70.592 211.278 71.472C210.99 72.336 210.582 73.056 210.054 73.632C209.542 74.192 208.926 74.608 208.206 74.88C207.486 75.152 206.686 75.288 205.806 75.288C204.862 75.288 204.014 75.144 203.262 74.856C202.526 74.552 201.894 74.128 201.366 73.584C200.854 73.04 200.462 72.376 200.19 71.592C199.918 70.808 199.782 69.936 199.782 68.976C199.782 68.08 199.894 67.264 200.118 66.528C200.358 65.792 200.694 65.16 201.126 64.632C201.558 64.104 202.078 63.696 202.686 63.408C203.31 63.12 203.998 62.976 204.75 62.976C205.614 62.976 206.334 63.192 206.91 63.624C207.502 64.04 207.966 64.608 208.302 65.328L208.446 65.256C208.254 64.44 207.91 63.664 207.414 62.928C206.934 62.192 206.35 61.488 205.662 60.816L203.598 62.112L202.494 60.792L204.366 59.664C203.806 59.2 203.214 58.768 202.59 58.368C201.982 57.968 201.366 57.592 200.742 57.24H205.422C205.646 57.368 205.862 57.52 206.07 57.696C206.278 57.856 206.494 58.024 206.718 58.2L208.734 56.928L209.814 58.224ZM205.758 72.936C206.606 72.936 207.278 72.664 207.774 72.12C208.27 71.576 208.518 70.816 208.518 69.84V68.448C208.518 67.472 208.27 66.712 207.774 66.168C207.278 65.624 206.606 65.352 205.758 65.352C204.894 65.352 204.214 65.624 203.718 66.168C203.222 66.712 202.974 67.472 202.974 68.448V69.84C202.974 70.816 203.222 71.576 203.718 72.12C204.214 72.664 204.894 72.936 205.758 72.936Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/dalvikurbyggd.svg b/libs/application/templates/financial-aid/src/svg/dalvikurbyggd.svg deleted file mode 100644 index a00743f9fb14..000000000000 --- a/libs/application/templates/financial-aid/src/svg/dalvikurbyggd.svg +++ /dev/null @@ -1,16 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M16 16H79.7917V61.891C79.7917 92.9406 51.2807 96 47.8308 96C44.3808 96 16 92.9406 16 61.891V16Z" fill="#004996"/> -<path d="M17.7578 17.7575H78.0996V61.6957C78.0996 91.3783 51.1508 94.3075 47.8961 94.3075C44.6415 94.3075 17.7578 91.3783 17.7578 61.6957V17.7575Z" fill="white"/> -<path d="M19.7109 60.0032C19.7109 59.9382 19.7109 43.5997 19.7109 43.5997C19.7109 43.5346 76.2122 43.5997 76.2122 43.5997L76.2773 59.808L66.2528 54.6656L57.5303 56.7486L48.4172 54.6656C48.287 54.6656 39.3041 56.7486 39.3041 56.7486L30.1259 54.6656L19.7109 60.0032Z" fill="#0C8041"/> -<path d="M18.6045 42.1676L48.5475 42.0374L34.2269 23.1603L18.6045 42.1676Z" fill="#004996"/> -<path d="M17.5625 42.6883L34.2265 22.3792L49.5234 42.5582L17.5625 42.6883ZM34.2265 23.9414L19.6455 41.6469L47.5706 41.5167L34.2265 23.9414Z" fill="white"/> -<path d="M34.0312 42.1025L62.8677 42.0374L48.482 23.0301L34.0312 42.1025Z" fill="#004996"/> -<path d="M33.0547 42.6233L48.4819 22.249L63.8439 42.5582L33.0547 42.6233ZM48.4819 23.8112L35.0075 41.5818L61.8911 41.5167L48.4819 23.8112Z" fill="white"/> -<path d="M48.416 42.1025L77.1874 42.0374L62.8017 22.8999L48.416 42.1025Z" fill="#004996"/> -<path d="M47.4395 42.6232L62.8015 22.1188L78.1636 42.5582L47.4395 42.6232ZM62.8015 23.681L49.3923 41.5818L76.2108 41.5167L62.8015 23.681Z" fill="white"/> -<path d="M76.4067 62.4768C76.4067 62.5419 76.667 71.5899 73.6727 76.4069C63.9087 91.9642 50.6947 92.5501 48.4164 92.5501C46.3334 92.5501 30.1251 92.1595 22.379 75.6908C18.9941 68.5956 19.9705 62.2165 19.9705 62.2165L30.1251 57.2043L39.2382 59.2222L48.2862 57.1392C48.4164 57.1392 57.3993 59.2222 57.3993 59.2222L65.9917 57.2043L76.4067 62.4768Z" fill="#004996"/> -<path d="M73.8033 65.4711L65.8619 60.9797L57.2045 63.1929L48.1565 61.1099L38.9783 63.1929L29.9303 61.1099L22.054 65.3409L21.5332 64.4296L29.8001 60.0684L38.9783 62.1514L48.1565 60.0684L57.2045 62.1514L65.9921 59.9382L74.3241 64.5598L73.8033 65.4711Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 58.248H104.064C105.152 58.248 106.136 58.424 107.016 58.776C107.912 59.128 108.672 59.656 109.296 60.36C109.936 61.048 110.424 61.92 110.76 62.976C111.112 64.016 111.288 65.232 111.288 66.624C111.288 68.016 111.112 69.24 110.76 70.296C110.424 71.336 109.936 72.208 109.296 72.912C108.672 73.6 107.912 74.12 107.016 74.472C106.136 74.824 105.152 75 104.064 75H97.968V58.248ZM104.064 72.192C105.248 72.192 106.184 71.848 106.872 71.16C107.576 70.456 107.928 69.384 107.928 67.944V65.304C107.928 63.864 107.576 62.8 106.872 62.112C106.184 61.408 105.248 61.056 104.064 61.056H101.136V72.192H104.064ZM123.539 75C122.867 75 122.331 74.808 121.931 74.424C121.547 74.024 121.307 73.496 121.211 72.84H121.067C120.859 73.656 120.435 74.272 119.795 74.688C119.155 75.088 118.363 75.288 117.419 75.288C116.139 75.288 115.155 74.952 114.467 74.28C113.779 73.608 113.435 72.712 113.435 71.592C113.435 70.296 113.899 69.336 114.827 68.712C115.755 68.072 117.075 67.752 118.787 67.752H120.923V66.84C120.923 66.136 120.739 65.592 120.371 65.208C120.003 64.824 119.411 64.632 118.595 64.632C117.875 64.632 117.291 64.792 116.843 65.112C116.411 65.416 116.043 65.784 115.739 66.216L113.915 64.584C114.379 63.864 114.995 63.288 115.763 62.856C116.531 62.408 117.547 62.184 118.811 62.184C120.507 62.184 121.795 62.568 122.675 63.336C123.555 64.104 123.995 65.208 123.995 66.648V72.552H125.243V75H123.539ZM118.451 73.056C119.139 73.056 119.723 72.904 120.203 72.6C120.683 72.296 120.923 71.848 120.923 71.256V69.6H118.955C117.355 69.6 116.555 70.112 116.555 71.136V71.544C116.555 72.056 116.715 72.44 117.035 72.696C117.371 72.936 117.843 73.056 118.451 73.056ZM130.801 75C129.745 75 128.969 74.736 128.473 74.208C127.977 73.68 127.729 72.936 127.729 71.976V57.24H130.801V72.552H132.457V75H130.801ZM137.308 75L133.132 62.472H136.156L137.908 67.872L139.132 72.336H139.3L140.524 67.872L142.228 62.472H145.156L140.956 75H137.308ZM147.206 75V62.472H150.278V75H147.206ZM149.078 61.056L147.23 60.168L149.51 55.68L152.102 56.952L149.078 61.056ZM153.839 57.24H156.911V67.944H157.031L158.687 65.688L161.495 62.472H164.975L160.655 67.32L165.431 75H161.783L158.567 69.384L156.911 71.184V75H153.839V57.24ZM174.569 72.912H174.449C174.337 73.232 174.185 73.536 173.993 73.824C173.817 74.096 173.585 74.344 173.297 74.568C173.025 74.792 172.689 74.968 172.289 75.096C171.905 75.224 171.457 75.288 170.945 75.288C169.649 75.288 168.657 74.864 167.969 74.016C167.281 73.168 166.937 71.96 166.937 70.392V62.472H170.009V70.08C170.009 70.944 170.177 71.608 170.513 72.072C170.849 72.52 171.385 72.744 172.121 72.744C172.425 72.744 172.721 72.704 173.009 72.624C173.313 72.544 173.577 72.424 173.801 72.264C174.025 72.088 174.209 71.88 174.353 71.64C174.497 71.384 174.569 71.088 174.569 70.752V62.472H177.641V75H174.569V72.912ZM181.19 75V62.472H184.262V65.064H184.382C184.462 64.728 184.582 64.408 184.742 64.104C184.918 63.784 185.142 63.504 185.414 63.264C185.686 63.024 186.006 62.832 186.374 62.688C186.758 62.544 187.198 62.472 187.694 62.472H188.366V65.376H187.406C186.366 65.376 185.582 65.528 185.054 65.832C184.526 66.136 184.262 66.632 184.262 67.32V75H181.19ZM190.612 57.24H193.684V64.536H193.78C194.004 63.816 194.428 63.248 195.052 62.832C195.676 62.4 196.404 62.184 197.236 62.184C198.836 62.184 200.052 62.752 200.884 63.888C201.732 65.008 202.156 66.616 202.156 68.712C202.156 70.824 201.732 72.448 200.884 73.584C200.052 74.72 198.836 75.288 197.236 75.288C196.404 75.288 195.676 75.072 195.052 74.64C194.444 74.208 194.02 73.632 193.78 72.912H193.684V75H190.612V57.24ZM196.252 72.744C197.052 72.744 197.7 72.48 198.196 71.952C198.692 71.424 198.94 70.712 198.94 69.816V67.656C198.94 66.76 198.692 66.048 198.196 65.52C197.7 64.976 197.052 64.704 196.252 64.704C195.516 64.704 194.9 64.888 194.404 65.256C193.924 65.624 193.684 66.112 193.684 66.72V70.704C193.684 71.36 193.924 71.864 194.404 72.216C194.9 72.568 195.516 72.744 196.252 72.744ZM212.472 62.472H215.352L210.312 77.232C210.152 77.68 209.968 78.064 209.76 78.384C209.568 78.72 209.336 78.992 209.064 79.2C208.792 79.408 208.464 79.56 208.08 79.656C207.696 79.752 207.248 79.8 206.736 79.8H204.888V77.352H207.144L207.72 75.6L203.232 62.472H206.28L208.464 69.096L209.28 72.264H209.424L210.288 69.096L212.472 62.472ZM228.096 76.056C228.096 76.712 227.976 77.288 227.736 77.784C227.512 78.296 227.136 78.72 226.608 79.056C226.08 79.392 225.4 79.648 224.568 79.824C223.736 80 222.72 80.088 221.52 80.088C220.464 80.088 219.568 80.016 218.832 79.872C218.096 79.744 217.488 79.552 217.008 79.296C216.544 79.056 216.208 78.752 216 78.384C215.792 78.016 215.688 77.6 215.688 77.136C215.688 76.432 215.88 75.88 216.264 75.48C216.664 75.096 217.216 74.848 217.92 74.736V74.472C217.408 74.344 217.008 74.096 216.72 73.728C216.448 73.344 216.312 72.896 216.312 72.384C216.312 72.064 216.376 71.784 216.504 71.544C216.632 71.288 216.8 71.072 217.008 70.896C217.232 70.72 217.48 70.576 217.752 70.464C218.024 70.336 218.312 70.24 218.616 70.176V70.08C217.848 69.728 217.272 69.24 216.888 68.616C216.52 67.992 216.336 67.264 216.336 66.432C216.336 65.152 216.776 64.128 217.656 63.36C218.536 62.576 219.824 62.184 221.52 62.184C221.904 62.184 222.28 62.208 222.648 62.256C223.032 62.304 223.384 62.384 223.704 62.496V62.088C223.704 60.872 224.296 60.264 225.48 60.264H227.424V62.616H224.76V62.952C225.416 63.32 225.904 63.8 226.224 64.392C226.544 64.984 226.704 65.664 226.704 66.432C226.704 67.696 226.264 68.712 225.384 69.48C224.52 70.248 223.232 70.632 221.52 70.632C220.784 70.632 220.144 70.56 219.6 70.416C219.36 70.528 219.152 70.68 218.976 70.872C218.8 71.048 218.712 71.272 218.712 71.544C218.712 72.168 219.256 72.48 220.344 72.48H223.704C225.24 72.48 226.352 72.8 227.04 73.44C227.744 74.064 228.096 74.936 228.096 76.056ZM225.216 76.416C225.216 76.016 225.056 75.704 224.736 75.48C224.416 75.256 223.864 75.144 223.08 75.144H218.808C218.376 75.464 218.16 75.896 218.16 76.44C218.16 76.92 218.36 77.296 218.76 77.568C219.16 77.84 219.84 77.976 220.8 77.976H222.336C223.344 77.976 224.072 77.848 224.52 77.592C224.984 77.336 225.216 76.944 225.216 76.416ZM221.52 68.544C223.024 68.544 223.776 67.904 223.776 66.624V66.216C223.776 64.936 223.024 64.296 221.52 64.296C220.016 64.296 219.264 64.936 219.264 66.216V66.624C219.264 67.904 220.016 68.544 221.52 68.544ZM241.314 76.056C241.314 76.712 241.194 77.288 240.954 77.784C240.73 78.296 240.354 78.72 239.826 79.056C239.298 79.392 238.618 79.648 237.786 79.824C236.954 80 235.938 80.088 234.738 80.088C233.682 80.088 232.786 80.016 232.05 79.872C231.314 79.744 230.706 79.552 230.226 79.296C229.762 79.056 229.426 78.752 229.218 78.384C229.01 78.016 228.906 77.6 228.906 77.136C228.906 76.432 229.098 75.88 229.482 75.48C229.882 75.096 230.434 74.848 231.138 74.736V74.472C230.626 74.344 230.226 74.096 229.938 73.728C229.666 73.344 229.53 72.896 229.53 72.384C229.53 72.064 229.594 71.784 229.722 71.544C229.85 71.288 230.018 71.072 230.226 70.896C230.45 70.72 230.698 70.576 230.97 70.464C231.242 70.336 231.53 70.24 231.834 70.176V70.08C231.066 69.728 230.49 69.24 230.106 68.616C229.738 67.992 229.554 67.264 229.554 66.432C229.554 65.152 229.994 64.128 230.874 63.36C231.754 62.576 233.042 62.184 234.738 62.184C235.122 62.184 235.498 62.208 235.866 62.256C236.25 62.304 236.602 62.384 236.922 62.496V62.088C236.922 60.872 237.514 60.264 238.698 60.264H240.642V62.616H237.978V62.952C238.634 63.32 239.122 63.8 239.442 64.392C239.762 64.984 239.922 65.664 239.922 66.432C239.922 67.696 239.482 68.712 238.602 69.48C237.738 70.248 236.45 70.632 234.738 70.632C234.002 70.632 233.362 70.56 232.818 70.416C232.578 70.528 232.37 70.68 232.194 70.872C232.018 71.048 231.93 71.272 231.93 71.544C231.93 72.168 232.474 72.48 233.562 72.48H236.922C238.458 72.48 239.57 72.8 240.258 73.44C240.962 74.064 241.314 74.936 241.314 76.056ZM238.434 76.416C238.434 76.016 238.274 75.704 237.954 75.48C237.634 75.256 237.082 75.144 236.298 75.144H232.026C231.594 75.464 231.378 75.896 231.378 76.44C231.378 76.92 231.578 77.296 231.978 77.568C232.378 77.84 233.058 77.976 234.018 77.976H235.554C236.562 77.976 237.29 77.848 237.738 77.592C238.202 77.336 238.434 76.944 238.434 76.416ZM234.738 68.544C236.242 68.544 236.994 67.904 236.994 66.624V66.216C236.994 64.936 236.242 64.296 234.738 64.296C233.234 64.296 232.482 64.936 232.482 66.216V66.624C232.482 67.904 233.234 68.544 234.738 68.544ZM252.236 58.224L250.46 59.376C251.564 60.528 252.452 61.856 253.124 63.36C253.796 64.864 254.132 66.536 254.132 68.376C254.132 69.56 253.988 70.592 253.7 71.472C253.412 72.336 253.004 73.056 252.476 73.632C251.964 74.192 251.348 74.608 250.628 74.88C249.908 75.152 249.108 75.288 248.228 75.288C247.284 75.288 246.436 75.144 245.684 74.856C244.948 74.552 244.316 74.128 243.788 73.584C243.276 73.04 242.884 72.376 242.612 71.592C242.34 70.808 242.204 69.936 242.204 68.976C242.204 68.08 242.316 67.264 242.54 66.528C242.78 65.792 243.116 65.16 243.548 64.632C243.98 64.104 244.5 63.696 245.108 63.408C245.732 63.12 246.42 62.976 247.172 62.976C248.036 62.976 248.756 63.192 249.332 63.624C249.924 64.04 250.388 64.608 250.724 65.328L250.868 65.256C250.676 64.44 250.332 63.664 249.836 62.928C249.356 62.192 248.772 61.488 248.084 60.816L246.02 62.112L244.916 60.792L246.788 59.664C246.228 59.2 245.636 58.768 245.012 58.368C244.404 57.968 243.788 57.592 243.164 57.24H247.844C248.068 57.368 248.284 57.52 248.492 57.696C248.7 57.856 248.916 58.024 249.14 58.2L251.156 56.928L252.236 58.224ZM248.18 72.936C249.028 72.936 249.7 72.664 250.196 72.12C250.692 71.576 250.94 70.816 250.94 69.84V68.448C250.94 67.472 250.692 66.712 250.196 66.168C249.7 65.624 249.028 65.352 248.18 65.352C247.316 65.352 246.636 65.624 246.14 66.168C245.644 66.712 245.396 67.472 245.396 68.448V69.84C245.396 70.816 245.644 71.576 246.14 72.12C246.636 72.664 247.316 72.936 248.18 72.936Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/eyja-og-miklaholtshreppur.svg b/libs/application/templates/financial-aid/src/svg/eyja-og-miklaholtshreppur.svg deleted file mode 100644 index cd60e0b27e12..000000000000 --- a/libs/application/templates/financial-aid/src/svg/eyja-og-miklaholtshreppur.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.606 96C30.4519 89.1714 16.7516 75.392 17.0034 58.353V16.6189C17.0034 16.4547 17.0686 16.2973 17.1847 16.1813C17.3007 16.0652 17.4581 16 17.6222 16H77.5826C77.6645 15.9991 77.7457 16.0144 77.8216 16.0451C77.8976 16.0757 77.9666 16.1212 78.0248 16.1787C78.0831 16.2363 78.1293 16.3048 78.1609 16.3804C78.1924 16.4559 78.2086 16.537 78.2086 16.6189V58.353C78.4533 75.392 64.753 89.1714 47.606 96Z" fill="#848484"/> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M97.968 61V44.248H109.008V47.056H101.136V51.112H108.096V53.92H101.136V58.192H109.008V61H97.968ZM119.847 48.472H122.727L117.687 63.232C117.527 63.68 117.343 64.064 117.135 64.384C116.943 64.72 116.711 64.992 116.439 65.2C116.167 65.408 115.839 65.56 115.455 65.656C115.071 65.752 114.623 65.8 114.111 65.8H112.263V63.352H114.519L115.095 61.6L110.607 48.472H113.655L115.839 55.096L116.655 58.264H116.799L117.663 55.096L119.847 48.472ZM124.753 48.472H127.825V62.512C127.825 63.568 127.561 64.376 127.033 64.936C126.505 65.512 125.665 65.8 124.513 65.8H122.833V63.352H124.753V48.472ZM126.289 46.648C125.649 46.648 125.185 46.504 124.897 46.216C124.625 45.928 124.489 45.56 124.489 45.112V44.632C124.489 44.184 124.625 43.816 124.897 43.528C125.185 43.24 125.649 43.096 126.289 43.096C126.913 43.096 127.369 43.24 127.657 43.528C127.945 43.816 128.089 44.184 128.089 44.632V45.112C128.089 45.56 127.945 45.928 127.657 46.216C127.369 46.504 126.913 46.648 126.289 46.648ZM140.601 61C139.929 61 139.393 60.808 138.993 60.424C138.609 60.024 138.369 59.496 138.273 58.84H138.129C137.921 59.656 137.497 60.272 136.857 60.688C136.217 61.088 135.425 61.288 134.481 61.288C133.201 61.288 132.217 60.952 131.529 60.28C130.841 59.608 130.497 58.712 130.497 57.592C130.497 56.296 130.961 55.336 131.889 54.712C132.817 54.072 134.137 53.752 135.849 53.752H137.985V52.84C137.985 52.136 137.801 51.592 137.433 51.208C137.065 50.824 136.473 50.632 135.657 50.632C134.937 50.632 134.353 50.792 133.905 51.112C133.473 51.416 133.105 51.784 132.801 52.216L130.977 50.584C131.441 49.864 132.057 49.288 132.825 48.856C133.593 48.408 134.609 48.184 135.873 48.184C137.569 48.184 138.857 48.568 139.737 49.336C140.617 50.104 141.057 51.208 141.057 52.648V58.552H142.305V61H140.601ZM135.513 59.056C136.201 59.056 136.785 58.904 137.265 58.6C137.745 58.296 137.985 57.848 137.985 57.256V55.6H136.017C134.417 55.6 133.617 56.112 133.617 57.136V57.544C133.617 58.056 133.777 58.44 134.097 58.696C134.433 58.936 134.905 59.056 135.513 59.056ZM144.29 55.216V52.168H151.154V55.216H144.29ZM164.971 61.288C164.075 61.288 163.267 61.136 162.547 60.832C161.843 60.528 161.235 60.088 160.723 59.512C160.227 58.936 159.843 58.248 159.571 57.448C159.299 56.632 159.163 55.72 159.163 54.712C159.163 53.704 159.299 52.8 159.571 52C159.843 51.2 160.227 50.52 160.723 49.96C161.235 49.384 161.843 48.944 162.547 48.64C163.267 48.336 164.075 48.184 164.971 48.184C165.867 48.184 166.675 48.336 167.395 48.64C168.115 48.944 168.723 49.384 169.219 49.96C169.731 50.52 170.123 51.2 170.395 52C170.667 52.8 170.803 53.704 170.803 54.712C170.803 55.72 170.667 56.632 170.395 57.448C170.123 58.248 169.731 58.936 169.219 59.512C168.723 60.088 168.115 60.528 167.395 60.832C166.675 61.136 165.867 61.288 164.971 61.288ZM164.971 58.816C165.787 58.816 166.427 58.568 166.891 58.072C167.355 57.576 167.587 56.848 167.587 55.888V53.56C167.587 52.616 167.355 51.896 166.891 51.4C166.427 50.904 165.787 50.656 164.971 50.656C164.171 50.656 163.539 50.904 163.075 51.4C162.611 51.896 162.379 52.616 162.379 53.56V55.888C162.379 56.848 162.611 57.576 163.075 58.072C163.539 58.568 164.171 58.816 164.971 58.816ZM184.83 62.056C184.83 62.712 184.71 63.288 184.47 63.784C184.246 64.296 183.87 64.72 183.342 65.056C182.814 65.392 182.134 65.648 181.302 65.824C180.47 66 179.454 66.088 178.254 66.088C177.198 66.088 176.302 66.016 175.566 65.872C174.83 65.744 174.222 65.552 173.742 65.296C173.278 65.056 172.942 64.752 172.734 64.384C172.526 64.016 172.422 63.6 172.422 63.136C172.422 62.432 172.614 61.88 172.998 61.48C173.398 61.096 173.95 60.848 174.654 60.736V60.472C174.142 60.344 173.742 60.096 173.454 59.728C173.182 59.344 173.046 58.896 173.046 58.384C173.046 58.064 173.11 57.784 173.238 57.544C173.366 57.288 173.534 57.072 173.742 56.896C173.966 56.72 174.214 56.576 174.486 56.464C174.758 56.336 175.046 56.24 175.35 56.176V56.08C174.582 55.728 174.006 55.24 173.622 54.616C173.254 53.992 173.07 53.264 173.07 52.432C173.07 51.152 173.51 50.128 174.39 49.36C175.27 48.576 176.558 48.184 178.254 48.184C178.638 48.184 179.014 48.208 179.382 48.256C179.766 48.304 180.118 48.384 180.438 48.496V48.088C180.438 46.872 181.03 46.264 182.214 46.264H184.158V48.616H181.494V48.952C182.15 49.32 182.638 49.8 182.958 50.392C183.278 50.984 183.438 51.664 183.438 52.432C183.438 53.696 182.998 54.712 182.118 55.48C181.254 56.248 179.966 56.632 178.254 56.632C177.518 56.632 176.878 56.56 176.334 56.416C176.094 56.528 175.886 56.68 175.71 56.872C175.534 57.048 175.446 57.272 175.446 57.544C175.446 58.168 175.99 58.48 177.078 58.48H180.438C181.974 58.48 183.086 58.8 183.774 59.44C184.478 60.064 184.83 60.936 184.83 62.056ZM181.95 62.416C181.95 62.016 181.79 61.704 181.47 61.48C181.15 61.256 180.598 61.144 179.814 61.144H175.542C175.11 61.464 174.894 61.896 174.894 62.44C174.894 62.92 175.094 63.296 175.494 63.568C175.894 63.84 176.574 63.976 177.534 63.976H179.07C180.078 63.976 180.806 63.848 181.254 63.592C181.718 63.336 181.95 62.944 181.95 62.416ZM178.254 54.544C179.758 54.544 180.51 53.904 180.51 52.624V52.216C180.51 50.936 179.758 50.296 178.254 50.296C176.75 50.296 175.998 50.936 175.998 52.216V52.624C175.998 53.904 176.75 54.544 178.254 54.544ZM192.276 61V48.472H195.348V50.56H195.468C195.708 49.904 196.092 49.344 196.62 48.88C197.148 48.416 197.884 48.184 198.828 48.184C199.692 48.184 200.436 48.392 201.06 48.808C201.684 49.224 202.148 49.856 202.452 50.704H202.5C202.724 50 203.164 49.408 203.82 48.928C204.492 48.432 205.332 48.184 206.34 48.184C207.572 48.184 208.516 48.608 209.172 49.456C209.844 50.304 210.18 51.512 210.18 53.08V61H207.108V53.392C207.108 51.6 206.436 50.704 205.092 50.704C204.788 50.704 204.492 50.752 204.204 50.848C203.932 50.928 203.684 51.056 203.46 51.232C203.252 51.392 203.084 51.6 202.956 51.856C202.828 52.096 202.764 52.384 202.764 52.72V61H199.692V53.392C199.692 51.6 199.02 50.704 197.676 50.704C197.388 50.704 197.1 50.752 196.812 50.848C196.54 50.928 196.292 51.056 196.068 51.232C195.86 51.392 195.684 51.6 195.54 51.856C195.412 52.096 195.348 52.384 195.348 52.72V61H192.276ZM215.117 46.648C214.477 46.648 214.013 46.504 213.725 46.216C213.453 45.928 213.317 45.56 213.317 45.112V44.632C213.317 44.184 213.453 43.816 213.725 43.528C214.013 43.24 214.477 43.096 215.117 43.096C215.741 43.096 216.197 43.24 216.485 43.528C216.773 43.816 216.917 44.184 216.917 44.632V45.112C216.917 45.56 216.773 45.928 216.485 46.216C216.197 46.504 215.741 46.648 215.117 46.648ZM213.581 48.472H216.653V61H213.581V48.472ZM220.214 43.24H223.286V53.944H223.406L225.062 51.688L227.87 48.472H231.35L227.03 53.32L231.806 61H228.158L224.942 55.384L223.286 57.184V61H220.214V43.24ZM236.762 61C235.706 61 234.93 60.736 234.434 60.208C233.938 59.68 233.69 58.936 233.69 57.976V43.24H236.762V58.552H238.418V61H236.762ZM249.961 61C249.289 61 248.753 60.808 248.353 60.424C247.969 60.024 247.729 59.496 247.633 58.84H247.489C247.281 59.656 246.857 60.272 246.217 60.688C245.577 61.088 244.785 61.288 243.841 61.288C242.561 61.288 241.577 60.952 240.889 60.28C240.201 59.608 239.857 58.712 239.857 57.592C239.857 56.296 240.321 55.336 241.249 54.712C242.177 54.072 243.497 53.752 245.209 53.752H247.345V52.84C247.345 52.136 247.161 51.592 246.793 51.208C246.425 50.824 245.833 50.632 245.017 50.632C244.297 50.632 243.713 50.792 243.265 51.112C242.833 51.416 242.465 51.784 242.161 52.216L240.337 50.584C240.801 49.864 241.417 49.288 242.185 48.856C242.953 48.408 243.969 48.184 245.233 48.184C246.929 48.184 248.217 48.568 249.097 49.336C249.977 50.104 250.417 51.208 250.417 52.648V58.552H251.665V61H249.961ZM244.873 59.056C245.561 59.056 246.145 58.904 246.625 58.6C247.105 58.296 247.345 57.848 247.345 57.256V55.6H245.377C243.777 55.6 242.977 56.112 242.977 57.136V57.544C242.977 58.056 243.137 58.44 243.457 58.696C243.793 58.936 244.265 59.056 244.873 59.056ZM253.65 55.216V52.168H260.514V55.216H253.65ZM97.776 71.24H100.848V78.56H100.968C101.224 77.888 101.624 77.328 102.168 76.88C102.728 76.416 103.496 76.184 104.472 76.184C105.768 76.184 106.76 76.608 107.448 77.456C108.136 78.304 108.48 79.512 108.48 81.08V89H105.408V81.392C105.408 80.496 105.248 79.824 104.928 79.376C104.608 78.928 104.08 78.704 103.344 78.704C103.024 78.704 102.712 78.752 102.408 78.848C102.12 78.928 101.856 79.056 101.616 79.232C101.392 79.392 101.208 79.6 101.064 79.856C100.92 80.096 100.848 80.384 100.848 80.72V89H97.776V71.24ZM116.853 89.288C115.957 89.288 115.149 89.136 114.429 88.832C113.725 88.528 113.117 88.088 112.605 87.512C112.109 86.936 111.725 86.248 111.453 85.448C111.181 84.632 111.045 83.72 111.045 82.712C111.045 81.704 111.181 80.8 111.453 80C111.725 79.2 112.109 78.52 112.605 77.96C113.117 77.384 113.725 76.944 114.429 76.64C115.149 76.336 115.957 76.184 116.853 76.184C117.749 76.184 118.557 76.336 119.277 76.64C119.997 76.944 120.605 77.384 121.101 77.96C121.613 78.52 122.005 79.2 122.277 80C122.549 80.8 122.685 81.704 122.685 82.712C122.685 83.72 122.549 84.632 122.277 85.448C122.005 86.248 121.613 86.936 121.101 87.512C120.605 88.088 119.997 88.528 119.277 88.832C118.557 89.136 117.749 89.288 116.853 89.288ZM116.853 86.816C117.669 86.816 118.309 86.568 118.773 86.072C119.237 85.576 119.469 84.848 119.469 83.888V81.56C119.469 80.616 119.237 79.896 118.773 79.4C118.309 78.904 117.669 78.656 116.853 78.656C116.053 78.656 115.421 78.904 114.957 79.4C114.493 79.896 114.261 80.616 114.261 81.56V83.888C114.261 84.848 114.493 85.576 114.957 86.072C115.421 86.568 116.053 86.816 116.853 86.816ZM128.481 89C127.425 89 126.649 88.736 126.153 88.208C125.657 87.68 125.409 86.936 125.409 85.976V71.24H128.481V86.552H130.137V89H128.481ZM136.258 89C135.202 89 134.394 88.728 133.834 88.184C133.29 87.624 133.018 86.832 133.018 85.808V78.92H131.17V76.472H132.13C132.594 76.472 132.906 76.368 133.066 76.16C133.242 75.936 133.33 75.608 133.33 75.176V73.04H136.09V76.472H138.658V78.92H136.09V86.552H138.466V89H136.258ZM145.427 89.288C144.227 89.288 143.219 89.088 142.403 88.688C141.587 88.272 140.867 87.704 140.243 86.984L142.115 85.16C142.579 85.688 143.083 86.104 143.627 86.408C144.187 86.712 144.827 86.864 145.547 86.864C146.283 86.864 146.811 86.736 147.131 86.48C147.467 86.224 147.635 85.872 147.635 85.424C147.635 85.056 147.515 84.768 147.275 84.56C147.051 84.336 146.659 84.184 146.099 84.104L144.851 83.936C143.491 83.76 142.451 83.376 141.731 82.784C141.027 82.176 140.675 81.296 140.675 80.144C140.675 79.536 140.787 78.992 141.011 78.512C141.235 78.016 141.555 77.6 141.971 77.264C142.387 76.912 142.883 76.648 143.459 76.472C144.051 76.28 144.707 76.184 145.427 76.184C146.035 76.184 146.571 76.232 147.035 76.328C147.515 76.408 147.947 76.536 148.331 76.712C148.715 76.872 149.067 77.08 149.387 77.336C149.707 77.576 150.019 77.848 150.323 78.152L148.523 79.952C148.155 79.568 147.715 79.248 147.203 78.992C146.691 78.736 146.131 78.608 145.523 78.608C144.851 78.608 144.363 78.728 144.059 78.968C143.771 79.208 143.627 79.52 143.627 79.904C143.627 80.32 143.747 80.64 143.987 80.864C144.243 81.072 144.667 81.224 145.259 81.32L146.531 81.488C149.235 81.872 150.587 83.104 150.587 85.184C150.587 85.792 150.459 86.352 150.203 86.864C149.963 87.36 149.619 87.792 149.171 88.16C148.723 88.512 148.179 88.792 147.539 89C146.915 89.192 146.211 89.288 145.427 89.288ZM153.299 71.24H156.371V78.56H156.491C156.747 77.888 157.147 77.328 157.691 76.88C158.251 76.416 159.019 76.184 159.995 76.184C161.291 76.184 162.283 76.608 162.971 77.456C163.659 78.304 164.003 79.512 164.003 81.08V89H160.931V81.392C160.931 80.496 160.771 79.824 160.451 79.376C160.131 78.928 159.603 78.704 158.867 78.704C158.547 78.704 158.235 78.752 157.931 78.848C157.643 78.928 157.379 79.056 157.139 79.232C156.915 79.392 156.731 79.6 156.587 79.856C156.443 80.096 156.371 80.384 156.371 80.72V89H153.299V71.24ZM167.409 89V76.472H170.481V79.064H170.601C170.681 78.728 170.801 78.408 170.961 78.104C171.137 77.784 171.361 77.504 171.633 77.264C171.905 77.024 172.225 76.832 172.593 76.688C172.977 76.544 173.417 76.472 173.913 76.472H174.585V79.376H173.625C172.585 79.376 171.801 79.528 171.273 79.832C170.745 80.136 170.481 80.632 170.481 81.32V89H167.409ZM181.778 89.288C180.85 89.288 180.018 89.136 179.282 88.832C178.562 88.512 177.946 88.072 177.434 87.512C176.938 86.936 176.554 86.248 176.282 85.448C176.01 84.632 175.874 83.72 175.874 82.712C175.874 81.72 176.002 80.824 176.258 80.024C176.53 79.224 176.914 78.544 177.41 77.984C177.906 77.408 178.514 76.968 179.234 76.664C179.954 76.344 180.77 76.184 181.682 76.184C182.658 76.184 183.506 76.352 184.226 76.688C184.946 77.024 185.538 77.48 186.002 78.056C186.466 78.632 186.81 79.304 187.034 80.072C187.274 80.824 187.394 81.632 187.394 82.496V83.504H179.066V83.816C179.066 84.728 179.322 85.464 179.834 86.024C180.346 86.568 181.106 86.84 182.114 86.84C182.882 86.84 183.506 86.68 183.986 86.36C184.482 86.04 184.922 85.632 185.306 85.136L186.962 86.984C186.45 87.704 185.746 88.272 184.85 88.688C183.97 89.088 182.946 89.288 181.778 89.288ZM181.73 78.488C180.914 78.488 180.266 78.76 179.786 79.304C179.306 79.848 179.066 80.552 179.066 81.416V81.608H184.202V81.392C184.202 80.528 183.986 79.832 183.554 79.304C183.138 78.76 182.53 78.488 181.73 78.488ZM190.096 76.472H193.168V78.536H193.264C193.488 77.816 193.912 77.248 194.536 76.832C195.16 76.4 195.888 76.184 196.72 76.184C198.32 76.184 199.536 76.752 200.368 77.888C201.216 79.008 201.64 80.616 201.64 82.712C201.64 84.824 201.216 86.448 200.368 87.584C199.536 88.72 198.32 89.288 196.72 89.288C195.888 89.288 195.16 89.072 194.536 88.64C193.928 88.208 193.504 87.632 193.264 86.912H193.168V93.8H190.096V76.472ZM195.736 86.744C196.536 86.744 197.184 86.48 197.68 85.952C198.176 85.424 198.424 84.712 198.424 83.816V81.656C198.424 80.76 198.176 80.048 197.68 79.52C197.184 78.976 196.536 78.704 195.736 78.704C195 78.704 194.384 78.888 193.888 79.256C193.408 79.624 193.168 80.112 193.168 80.72V84.704C193.168 85.36 193.408 85.864 193.888 86.216C194.384 86.568 195 86.744 195.736 86.744ZM204.487 76.472H207.559V78.536H207.655C207.879 77.816 208.303 77.248 208.927 76.832C209.551 76.4 210.279 76.184 211.111 76.184C212.711 76.184 213.927 76.752 214.759 77.888C215.607 79.008 216.031 80.616 216.031 82.712C216.031 84.824 215.607 86.448 214.759 87.584C213.927 88.72 212.711 89.288 211.111 89.288C210.279 89.288 209.551 89.072 208.927 88.64C208.319 88.208 207.895 87.632 207.655 86.912H207.559V93.8H204.487V76.472ZM210.127 86.744C210.927 86.744 211.575 86.48 212.071 85.952C212.567 85.424 212.815 84.712 212.815 83.816V81.656C212.815 80.76 212.567 80.048 212.071 79.52C211.575 78.976 210.927 78.704 210.127 78.704C209.391 78.704 208.775 78.888 208.279 79.256C207.799 79.624 207.559 80.112 207.559 80.72V84.704C207.559 85.36 207.799 85.864 208.279 86.216C208.775 86.568 209.391 86.744 210.127 86.744ZM226.366 86.912H226.246C226.134 87.232 225.982 87.536 225.79 87.824C225.614 88.096 225.382 88.344 225.094 88.568C224.822 88.792 224.486 88.968 224.086 89.096C223.702 89.224 223.254 89.288 222.742 89.288C221.446 89.288 220.454 88.864 219.766 88.016C219.078 87.168 218.734 85.96 218.734 84.392V76.472H221.806V84.08C221.806 84.944 221.974 85.608 222.31 86.072C222.646 86.52 223.182 86.744 223.918 86.744C224.222 86.744 224.518 86.704 224.806 86.624C225.11 86.544 225.374 86.424 225.598 86.264C225.822 86.088 226.006 85.88 226.15 85.64C226.294 85.384 226.366 85.088 226.366 84.752V76.472H229.438V89H226.366V86.912ZM232.987 89V76.472H236.059V79.064H236.179C236.259 78.728 236.379 78.408 236.539 78.104C236.715 77.784 236.939 77.504 237.211 77.264C237.483 77.024 237.803 76.832 238.171 76.688C238.555 76.544 238.995 76.472 239.491 76.472H240.163V79.376H239.203C238.163 79.376 237.379 79.528 236.851 79.832C236.323 80.136 236.059 80.632 236.059 81.32V89H232.987Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/eyjafjardarsveit.svg b/libs/application/templates/financial-aid/src/svg/eyjafjardarsveit.svg deleted file mode 100644 index e8ad0726ed56..000000000000 --- a/libs/application/templates/financial-aid/src/svg/eyjafjardarsveit.svg +++ /dev/null @@ -1,7 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M19 16.0027H76.1912L76.0525 49.2344C75.2817 68.5953 65.9943 85.4607 47.633 95.9972C28.1696 85.3664 19.6502 68.9197 19.0568 49.6919L19 16.0027Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M48.7047 32.387C48.7047 30.4224 49.2873 28.5019 50.3788 26.8683C51.4703 25.2348 53.0217 23.9616 54.8368 23.2097C56.6519 22.4579 58.6492 22.2612 60.5761 22.6445C62.503 23.0278 64.2729 23.9738 65.6622 25.363C67.0514 26.7523 67.9975 28.5222 68.3807 30.4491C68.764 32.376 68.5673 34.3733 67.8155 36.1884C67.0636 38.0035 65.7904 39.5549 64.1569 40.6464C62.5233 41.7379 60.6028 42.3205 58.6382 42.3205C56.0036 42.3205 53.477 41.2739 51.6141 39.4111C49.7513 37.5482 48.7047 35.0216 48.7047 32.387ZM20.5514 20.5473H54.1116C54.1116 20.5473 51.6688 21.4665 50.0828 23.0303L20.5528 23.022L20.5514 20.5473ZM20.5514 27.7898V25.2915H48.1016C47.5332 26.0707 47.2532 26.5393 46.743 27.787L20.5514 27.7898ZM20.5514 32.5936V30.0981H46.0706C45.8876 30.8093 45.8404 31.6398 45.8072 32.5825L20.5514 32.5936ZM20.5514 34.8687H46.0207C46.145 35.7154 46.3683 36.5446 46.6861 37.3392H20.5514V34.8687ZM21.9627 60.7594C20.8536 55.9889 20.4294 51.0949 20.5514 45.6963C22.7086 46.0194 23.2437 43.1218 25.3455 43.3644C27.0979 43.5267 29.2274 43.4185 30.8439 42.7184C31.8144 42.5021 32.8375 42.0169 33.8939 42.3954C34.7022 41.9101 35.2415 42.9333 35.7794 43.3658C38.5286 42.6394 39.8762 45.3068 41.8435 46.6543C43.4337 46.4921 45.2124 45.469 46.4532 47.0592C48.3664 47.22 50.1715 47.5707 51.6813 48.7298C52.3551 48.6493 52.5713 47.787 53.1633 47.5707C55.1847 46.8706 57.2601 46.2495 58.878 44.5789C60.4945 44.3904 62.3814 44.0673 63.7304 45.1182L65.5327 46.1968C66.7194 45.8724 67.4473 44.7411 68.4441 44.1478C69.4145 43.9329 70.3032 43.5017 71.3555 43.5017C72.4646 42.9624 73.4461 41.7895 74.6592 41.5192C74.687 45.347 74.583 49.9636 74.1865 54.0396C70.629 54.3363 67.4209 53.9855 63.8371 54.0937C63.5806 54.1006 63.5182 54.163 63.6486 54.2822C64.4804 54.8202 65.6699 54.7938 66.56 55.3331C66.6723 55.4426 66.4213 55.5757 66.3173 55.5757L46.1843 55.4676C46.1177 55.4848 46.0573 55.5202 46.0097 55.5698C45.9621 55.6194 45.9293 55.6813 45.9149 55.7485C45.9005 55.8157 45.9051 55.8856 45.9282 55.9503C45.9513 56.0151 45.9919 56.0721 46.0456 56.115C47.5013 56.6807 49.0374 57.0578 50.5195 57.5167C50.5875 57.5687 50.6355 57.6427 50.6555 57.726C50.6754 57.8093 50.6661 57.8969 50.629 57.9742C50.6062 58.0227 50.5722 58.0651 50.5297 58.0979C50.4873 58.1307 50.4377 58.1529 50.385 58.1627L30.1965 58.0532C29.5504 58.0809 28.634 57.8647 28.1488 58.4844C28.067 58.8892 28.1751 59.3162 28.5799 59.4008C29.8194 59.7779 31.1406 59.9401 32.2719 60.5099C32.4937 60.74 32.2344 61.1199 31.9488 61.1573L22.0306 61.1282L21.9627 60.7594ZM48.0711 68.9252L49.2717 64.92L51.5925 64.425L49.9441 69.5755C49.6849 70.234 47.9297 70.2576 48.0711 68.9252ZM49.6821 72.3912C49.6238 72.1581 49.6428 71.9124 49.7362 71.6911L53.241 65.1751C53.5363 64.9324 54.0215 64.7966 54.3501 65.0364C54.5128 65.1883 54.6198 65.3904 54.654 65.6104C54.6882 65.8303 54.6475 66.0554 54.5386 66.2495L51.1697 72.6643C50.7843 73.2605 49.8443 72.9582 49.6821 72.3912ZM42.7502 73.7665L42.0265 70.1619C42.5658 70.0233 43.356 69.8222 43.8953 69.6878L44.558 73.5377C44.6495 73.8857 44.1879 74.2226 43.7803 74.2739C43.4364 74.3016 42.9179 74.2309 42.7557 73.7665H42.7502ZM48.5037 70.4655C48.7061 71.4762 47.7952 74.486 47.1007 75.4565C47.5374 74.0562 48.1585 71.9212 48.5092 70.4655H48.5037ZM43.6361 74.9643C43.6624 74.8825 43.8551 74.9255 43.9134 74.9255L44.4679 77.256C43.9577 76.7971 43.9383 75.5563 43.6416 74.9643H43.6361ZM43.4517 76.9191L44.8797 79.7224C44.9337 80.1813 44.583 80.478 44.4222 80.8814C44.3247 79.5159 43.9985 78.1765 43.4572 76.9191H43.4517ZM46.5835 81.7174C47.4999 78.9141 48.4163 76.0845 49.7362 73.4435H49.9247L49.9913 73.8691C48.6714 76.6183 47.6344 79.3259 46.5835 82.3108V81.7174ZM43.0801 80.6929C42.5408 82.552 42.8916 84.7633 41.7853 86.3771C41.4359 84.2503 42.2441 82.4175 43.0801 80.6929ZM50.7053 86.1109C51.9988 83.6584 52.5076 80.6125 52.5076 77.8896C53.3699 81.7438 52.7502 85.9487 51.2945 89.2912L50.7053 86.1109ZM47.5526 94.0133C47.1755 90.3199 47.0674 86.5268 46.0428 83.0705C45.6921 83.6902 45.5035 84.4985 45.1542 85.1501C45.5313 87.683 45.5313 90.1896 45.3954 92.8584C43.7317 92.534 44.0756 90.5667 43.8593 89.2191C43.7789 84.2878 47.579 80.783 46.6321 75.6326C46.255 79.4604 44.26 82.5867 42.6115 85.8752C42.1804 87.3295 41.7492 89.2982 42.4729 90.7802C42.4466 90.887 42.3107 90.8343 42.2303 90.8343L41.7187 90.3213C40.9091 86.7639 40.7746 82.4522 41.3139 78.8143C40.482 80.8939 39.7237 83.0996 39.9663 85.5522C40.586 86.8734 40.8051 88.3942 41.0754 89.8763C40.8869 89.9844 40.7524 89.7612 40.5902 89.599C40.0245 86.8498 39.0499 84.1783 37.2975 81.9143C37.5401 82.8307 38.1876 83.7734 38.4066 84.7716C38.6839 85.7948 38.9459 86.8512 38.9196 88.0047L38.6285 88.1114C34.0201 83.9606 29.5712 79.3578 26.9828 74.2101C31.6965 72.8626 37.2504 71.4124 42.0209 70.173C41.734 68.8781 41.447 67.5389 41.2099 66.4103C41.1226 65.8364 41.5163 65.2624 41.9211 65.2624C42.1531 65.2446 42.385 65.2985 42.5853 65.4167C42.7857 65.535 42.9448 65.712 43.0413 65.9237C43.3921 67.1354 43.6402 68.4913 43.8898 69.6988L46.9495 68.8421C47.152 68.7672 47.3807 68.4109 47.2185 68.1419C47.1245 67.9916 46.9823 67.8777 46.8151 67.8189L44.1809 67.1174C43.8565 67.0093 43.6846 66.585 43.9037 66.3895C45.5479 65.6894 47.4819 65.3858 49.2606 64.9283C49.6502 63.797 49.7681 61.0298 51.4789 61.4845C51.8019 61.5386 52.0043 61.9226 52.0722 62.132C52.1526 62.9402 51.684 63.9772 51.5828 64.4333L52.179 64.2614L60.8578 62.0502C60.9295 62.0207 60.9892 61.9678 61.027 61.9001C61.0648 61.8323 61.0784 61.7537 61.0657 61.6772C61.0574 61.5497 60.9576 61.4554 60.8037 61.3999C60.1063 61.2661 59.4277 61.0487 58.7823 60.7525C58.5688 60.5764 58.5952 60.4503 58.8641 60.3754C62.4216 59.2164 66.1676 58.5426 69.7792 57.464C69.8083 57.4515 69.8041 57.4293 69.7792 57.4099C69.2939 57.0328 68.2694 57.2713 68.243 56.5476L74.0243 55.0586C72.3232 67.4099 66.3215 79.459 55.6297 88.458C56.1413 86.6793 56.761 84.6843 56.6002 82.6352H56.5184C56.0609 84.6025 55.2789 86.4893 53.9314 88.1336C53.4198 88.8074 54.2544 90.3435 52.9609 90.4503C53.015 87.7551 54.0118 85.3844 55.1708 83.2009C54.3061 83.9004 53.5865 84.7623 53.0524 85.7379C52.8098 87.4363 52.136 88.9724 51.4886 90.5085C51.4082 91.0478 52.0001 91.6176 51.2196 91.802C50.5181 90.5903 50.5458 88.946 50.1951 87.4903C49.8443 84.8215 49.9247 81.8311 50.0065 79.136C48.0392 83.2313 48.4427 88.4871 49.6821 92.7725C49.6558 92.9347 49.5365 93.0955 49.4048 93.0955C47.6802 89.1068 47.9602 83.7707 48.5799 79.459C47.6635 80.7525 47.3142 82.3704 47.0175 83.9869C47.5568 87.1673 48.1488 90.3477 48.2028 93.6348C48.0933 93.8996 47.7966 93.9537 47.554 94.0077L47.5526 94.0133ZM19 16.0027H76.1912L76.0525 49.2344C75.2817 68.5953 65.9943 85.4607 47.633 95.9972C28.1696 85.3664 19.6502 68.9197 19.0568 49.6919L19 16.0027Z" fill="#305496"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 75V58.248H109.008V61.056H101.136V65.112H108.096V67.92H101.136V72.192H109.008V75H97.968ZM119.847 62.472H122.727L117.687 77.232C117.527 77.68 117.343 78.064 117.135 78.384C116.943 78.72 116.711 78.992 116.439 79.2C116.167 79.408 115.839 79.56 115.455 79.656C115.071 79.752 114.623 79.8 114.111 79.8H112.263V77.352H114.519L115.095 75.6L110.607 62.472H113.655L115.839 69.096L116.655 72.264H116.799L117.663 69.096L119.847 62.472ZM124.753 62.472H127.825V76.512C127.825 77.568 127.561 78.376 127.033 78.936C126.505 79.512 125.665 79.8 124.513 79.8H122.833V77.352H124.753V62.472ZM126.289 60.648C125.649 60.648 125.185 60.504 124.897 60.216C124.625 59.928 124.489 59.56 124.489 59.112V58.632C124.489 58.184 124.625 57.816 124.897 57.528C125.185 57.24 125.649 57.096 126.289 57.096C126.913 57.096 127.369 57.24 127.657 57.528C127.945 57.816 128.089 58.184 128.089 58.632V59.112C128.089 59.56 127.945 59.928 127.657 60.216C127.369 60.504 126.913 60.648 126.289 60.648ZM140.601 75C139.929 75 139.393 74.808 138.993 74.424C138.609 74.024 138.369 73.496 138.273 72.84H138.129C137.921 73.656 137.497 74.272 136.857 74.688C136.217 75.088 135.425 75.288 134.481 75.288C133.201 75.288 132.217 74.952 131.529 74.28C130.841 73.608 130.497 72.712 130.497 71.592C130.497 70.296 130.961 69.336 131.889 68.712C132.817 68.072 134.137 67.752 135.849 67.752H137.985V66.84C137.985 66.136 137.801 65.592 137.433 65.208C137.065 64.824 136.473 64.632 135.657 64.632C134.937 64.632 134.353 64.792 133.905 65.112C133.473 65.416 133.105 65.784 132.801 66.216L130.977 64.584C131.441 63.864 132.057 63.288 132.825 62.856C133.593 62.408 134.609 62.184 135.873 62.184C137.569 62.184 138.857 62.568 139.737 63.336C140.617 64.104 141.057 65.208 141.057 66.648V72.552H142.305V75H140.601ZM135.513 73.056C136.201 73.056 136.785 72.904 137.265 72.6C137.745 72.296 137.985 71.848 137.985 71.256V69.6H136.017C134.417 69.6 133.617 70.112 133.617 71.136V71.544C133.617 72.056 133.777 72.44 134.097 72.696C134.433 72.936 134.905 73.056 135.513 73.056ZM145.416 64.896H143.568V62.472H145.416V60.672C145.416 59.568 145.704 58.72 146.28 58.128C146.872 57.536 147.736 57.24 148.872 57.24H151.056V59.688H148.488V62.472H151.056V64.896H148.488V75H145.416V64.896ZM153.182 62.472H156.254V76.512C156.254 77.568 155.99 78.376 155.462 78.936C154.934 79.512 154.094 79.8 152.942 79.8H151.262V77.352H153.182V62.472ZM154.718 60.648C154.078 60.648 153.614 60.504 153.326 60.216C153.054 59.928 152.918 59.56 152.918 59.112V58.632C152.918 58.184 153.054 57.816 153.326 57.528C153.614 57.24 154.078 57.096 154.718 57.096C155.342 57.096 155.798 57.24 156.086 57.528C156.374 57.816 156.518 58.184 156.518 58.632V59.112C156.518 59.56 156.374 59.928 156.086 60.216C155.798 60.504 155.342 60.648 154.718 60.648ZM169.031 75C168.359 75 167.823 74.808 167.423 74.424C167.039 74.024 166.799 73.496 166.703 72.84H166.559C166.351 73.656 165.927 74.272 165.287 74.688C164.647 75.088 163.855 75.288 162.911 75.288C161.631 75.288 160.647 74.952 159.959 74.28C159.271 73.608 158.927 72.712 158.927 71.592C158.927 70.296 159.391 69.336 160.319 68.712C161.247 68.072 162.567 67.752 164.279 67.752H166.415V66.84C166.415 66.136 166.231 65.592 165.863 65.208C165.495 64.824 164.903 64.632 164.087 64.632C163.367 64.632 162.783 64.792 162.335 65.112C161.903 65.416 161.535 65.784 161.231 66.216L159.407 64.584C159.871 63.864 160.487 63.288 161.255 62.856C162.023 62.408 163.039 62.184 164.303 62.184C165.999 62.184 167.287 62.568 168.167 63.336C169.047 64.104 169.487 65.208 169.487 66.648V72.552H170.735V75H169.031ZM163.943 73.056C164.631 73.056 165.215 72.904 165.695 72.6C166.175 72.296 166.415 71.848 166.415 71.256V69.6H164.447C162.847 69.6 162.047 70.112 162.047 71.136V71.544C162.047 72.056 162.207 72.44 162.527 72.696C162.863 72.936 163.335 73.056 163.943 73.056ZM173.221 75V62.472H176.293V65.064H176.413C176.493 64.728 176.613 64.408 176.773 64.104C176.949 63.784 177.173 63.504 177.445 63.264C177.717 63.024 178.037 62.832 178.405 62.688C178.789 62.544 179.229 62.472 179.725 62.472H180.397V65.376H179.437C178.397 65.376 177.613 65.528 177.085 65.832C176.557 66.136 176.293 66.632 176.293 67.32V75H173.221ZM191.814 58.224L190.038 59.376C191.142 60.528 192.03 61.856 192.702 63.36C193.374 64.864 193.71 66.536 193.71 68.376C193.71 69.56 193.566 70.592 193.278 71.472C192.99 72.336 192.582 73.056 192.054 73.632C191.542 74.192 190.926 74.608 190.206 74.88C189.486 75.152 188.686 75.288 187.806 75.288C186.862 75.288 186.014 75.144 185.262 74.856C184.526 74.552 183.894 74.128 183.366 73.584C182.854 73.04 182.462 72.376 182.19 71.592C181.918 70.808 181.782 69.936 181.782 68.976C181.782 68.08 181.894 67.264 182.118 66.528C182.358 65.792 182.694 65.16 183.126 64.632C183.558 64.104 184.078 63.696 184.686 63.408C185.31 63.12 185.998 62.976 186.75 62.976C187.614 62.976 188.334 63.192 188.91 63.624C189.502 64.04 189.966 64.608 190.302 65.328L190.446 65.256C190.254 64.44 189.91 63.664 189.414 62.928C188.934 62.192 188.35 61.488 187.662 60.816L185.598 62.112L184.494 60.792L186.366 59.664C185.806 59.2 185.214 58.768 184.59 58.368C183.982 57.968 183.366 57.592 182.742 57.24H187.422C187.646 57.368 187.862 57.52 188.07 57.696C188.278 57.856 188.494 58.024 188.718 58.2L190.734 56.928L191.814 58.224ZM187.758 72.936C188.606 72.936 189.278 72.664 189.774 72.12C190.27 71.576 190.518 70.816 190.518 69.84V68.448C190.518 67.472 190.27 66.712 189.774 66.168C189.278 65.624 188.606 65.352 187.758 65.352C186.894 65.352 186.214 65.624 185.718 66.168C185.222 66.712 184.974 67.472 184.974 68.448V69.84C184.974 70.816 185.222 71.576 185.718 72.12C186.214 72.664 186.894 72.936 187.758 72.936ZM205.875 75C205.203 75 204.667 74.808 204.267 74.424C203.883 74.024 203.643 73.496 203.547 72.84H203.403C203.195 73.656 202.771 74.272 202.131 74.688C201.491 75.088 200.699 75.288 199.755 75.288C198.475 75.288 197.491 74.952 196.803 74.28C196.115 73.608 195.771 72.712 195.771 71.592C195.771 70.296 196.235 69.336 197.163 68.712C198.091 68.072 199.411 67.752 201.123 67.752H203.259V66.84C203.259 66.136 203.075 65.592 202.707 65.208C202.339 64.824 201.747 64.632 200.931 64.632C200.211 64.632 199.627 64.792 199.179 65.112C198.747 65.416 198.379 65.784 198.075 66.216L196.251 64.584C196.715 63.864 197.331 63.288 198.099 62.856C198.867 62.408 199.883 62.184 201.147 62.184C202.843 62.184 204.131 62.568 205.011 63.336C205.891 64.104 206.331 65.208 206.331 66.648V72.552H207.579V75H205.875ZM200.787 73.056C201.475 73.056 202.059 72.904 202.539 72.6C203.019 72.296 203.259 71.848 203.259 71.256V69.6H201.291C199.691 69.6 198.891 70.112 198.891 71.136V71.544C198.891 72.056 199.051 72.44 199.371 72.696C199.707 72.936 200.179 73.056 200.787 73.056ZM210.065 75V62.472H213.137V65.064H213.257C213.337 64.728 213.457 64.408 213.617 64.104C213.793 63.784 214.017 63.504 214.289 63.264C214.561 63.024 214.881 62.832 215.249 62.688C215.633 62.544 216.073 62.472 216.569 62.472H217.241V65.376H216.281C215.241 65.376 214.457 65.528 213.929 65.832C213.401 66.136 213.137 66.632 213.137 67.32V75H210.065ZM223.591 75.288C222.391 75.288 221.383 75.088 220.567 74.688C219.751 74.272 219.031 73.704 218.407 72.984L220.279 71.16C220.743 71.688 221.247 72.104 221.791 72.408C222.351 72.712 222.991 72.864 223.711 72.864C224.447 72.864 224.975 72.736 225.295 72.48C225.631 72.224 225.799 71.872 225.799 71.424C225.799 71.056 225.679 70.768 225.439 70.56C225.215 70.336 224.823 70.184 224.263 70.104L223.015 69.936C221.655 69.76 220.615 69.376 219.895 68.784C219.191 68.176 218.839 67.296 218.839 66.144C218.839 65.536 218.951 64.992 219.175 64.512C219.399 64.016 219.719 63.6 220.135 63.264C220.551 62.912 221.047 62.648 221.623 62.472C222.215 62.28 222.871 62.184 223.591 62.184C224.199 62.184 224.735 62.232 225.199 62.328C225.679 62.408 226.111 62.536 226.495 62.712C226.879 62.872 227.231 63.08 227.551 63.336C227.871 63.576 228.183 63.848 228.487 64.152L226.687 65.952C226.319 65.568 225.879 65.248 225.367 64.992C224.855 64.736 224.295 64.608 223.687 64.608C223.015 64.608 222.527 64.728 222.223 64.968C221.935 65.208 221.791 65.52 221.791 65.904C221.791 66.32 221.911 66.64 222.151 66.864C222.407 67.072 222.831 67.224 223.423 67.32L224.695 67.488C227.399 67.872 228.751 69.104 228.751 71.184C228.751 71.792 228.623 72.352 228.367 72.864C228.127 73.36 227.783 73.792 227.335 74.16C226.887 74.512 226.343 74.792 225.703 75C225.079 75.192 224.375 75.288 223.591 75.288ZM233.87 75L229.694 62.472H232.718L234.47 67.872L235.694 72.336H235.862L237.086 67.872L238.79 62.472H241.718L237.518 75H233.87ZM248.645 75.288C247.717 75.288 246.885 75.136 246.149 74.832C245.429 74.512 244.813 74.072 244.301 73.512C243.805 72.936 243.421 72.248 243.149 71.448C242.877 70.632 242.741 69.72 242.741 68.712C242.741 67.72 242.869 66.824 243.125 66.024C243.397 65.224 243.781 64.544 244.277 63.984C244.773 63.408 245.381 62.968 246.101 62.664C246.821 62.344 247.637 62.184 248.549 62.184C249.525 62.184 250.373 62.352 251.093 62.688C251.813 63.024 252.405 63.48 252.869 64.056C253.333 64.632 253.677 65.304 253.901 66.072C254.141 66.824 254.261 67.632 254.261 68.496V69.504H245.933V69.816C245.933 70.728 246.189 71.464 246.701 72.024C247.213 72.568 247.973 72.84 248.981 72.84C249.749 72.84 250.373 72.68 250.853 72.36C251.349 72.04 251.789 71.632 252.173 71.136L253.829 72.984C253.317 73.704 252.613 74.272 251.717 74.688C250.837 75.088 249.813 75.288 248.645 75.288ZM248.597 64.488C247.781 64.488 247.133 64.76 246.653 65.304C246.173 65.848 245.933 66.552 245.933 67.416V67.608H251.069V67.392C251.069 66.528 250.853 65.832 250.421 65.304C250.005 64.76 249.397 64.488 248.597 64.488ZM258.5 60.648C257.86 60.648 257.396 60.504 257.108 60.216C256.836 59.928 256.7 59.56 256.7 59.112V58.632C256.7 58.184 256.836 57.816 257.108 57.528C257.396 57.24 257.86 57.096 258.5 57.096C259.124 57.096 259.58 57.24 259.868 57.528C260.156 57.816 260.3 58.184 260.3 58.632V59.112C260.3 59.56 260.156 59.928 259.868 60.216C259.58 60.504 259.124 60.648 258.5 60.648ZM256.964 62.472H260.036V75H256.964V62.472ZM267.508 75C266.452 75 265.644 74.728 265.084 74.184C264.54 73.624 264.268 72.832 264.268 71.808V64.92H262.42V62.472H263.38C263.844 62.472 264.156 62.368 264.316 62.16C264.492 61.936 264.58 61.608 264.58 61.176V59.04H267.34V62.472H269.908V64.92H267.34V72.552H269.716V75H267.508Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/fjallabyggd.svg b/libs/application/templates/financial-aid/src/svg/fjallabyggd.svg deleted file mode 100644 index d9cb3fa36e11..000000000000 --- a/libs/application/templates/financial-aid/src/svg/fjallabyggd.svg +++ /dev/null @@ -1,29 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57866)"> -<path d="M50.667 46.3651V32.9047L68.8257 32.0793L86.9845 32.9047V56.4603C86.921 66.1111 77.9686 74.4921 68.8257 78.873C59.5559 74.5555 50.667 66.2381 50.667 56.5238V54.873V46.3651Z" fill="white"/> -<path d="M79.3653 51.6349C79.3653 51.4444 79.2383 51.3174 79.0479 51.3174C78.8574 51.3174 78.7304 51.4444 78.7304 51.6349C78.7304 51.8254 78.8574 51.9524 79.0479 51.9524C79.2383 51.9524 79.4288 51.8254 79.3653 51.6349ZM55.9367 51.7619C56.0002 51.7619 53.9685 54.873 55.3018 56.5238C55.4923 56.7778 56.0637 54.746 58.4129 53.4762C58.4764 53.4762 58.9209 53.1587 60.2542 53.4127C60.3812 53.4127 59.7463 54.1111 59.6828 54.1746V54.2381C60.6987 54.4286 61.9685 55.0635 62.5399 56.0793C62.5399 56.0793 62.5399 56.0793 62.6034 56.0793C62.7304 56.0793 63.7463 55.0635 64.8891 54.873L66.5399 55.3809C66.5399 55.3809 65.5241 57.0952 65.4606 57.4762C65.4606 57.4762 65.4606 57.5397 65.524 57.5397C65.5875 57.5397 68.6987 56.2063 69.2701 55.9524C76.7621 57.0952 83.1748 52.0159 83.1748 52.0159C82.032 51.5079 77.9685 49.7301 71.3653 49.7301C70.4129 49.3492 68.6987 47.5714 68.6987 47.5714C68.2542 47.8254 65.524 49.2857 64.5717 49.5397C64.5717 49.6032 65.0796 50.3016 65.1431 50.3016C64.6352 50.4286 61.5875 51 59.4923 51C59.0479 51 58.6034 50.873 58.2225 50.6825C56.5717 49.8571 54.7304 47.5714 54.6669 47.5714C54.4129 47.5714 53.905 50.1746 55.9367 51.7619ZM70.5399 49.6666C70.6034 49.7301 70.6669 49.7301 70.7304 49.7936C68.3177 49.9206 65.778 50.4286 65.778 50.3651C65.778 50.3651 65.7145 50.3016 65.651 50.2381C65.651 50.2381 65.2701 49.7936 65.2701 49.7301C67.4288 49.0317 68.6987 48.1428 68.7621 48.1428C69.9685 49.2857 69.905 49.2857 70.5399 49.6666ZM79.6828 51.6349C79.6828 51.9524 79.4288 52.2698 79.0479 52.2698C78.6669 52.2698 78.4129 52.0159 78.4129 51.6984C78.4129 51.3809 78.6669 51.0635 79.0479 51.0635C79.4288 51 79.6828 51.3174 79.6828 51.6349ZM77.2066 54.492L76.6987 53.5397L76.8891 53.2222C77.0796 53.6032 77.3336 53.9841 77.905 54.3651C77.651 54.3651 77.4606 54.4286 77.2066 54.492ZM76.1272 54.5555L76.5082 53.7301L76.9526 54.5555C76.6987 54.619 76.4447 54.6825 76.1907 54.746L76.1272 54.5555ZM73.8415 52.3968L74.2225 51.5714L74.6669 52.3333L74.286 53.1587L73.8415 52.3968ZM74.159 53.4127L73.778 54.1746L73.3336 53.4127L73.7145 52.5873L74.159 53.4127ZM74.8574 52.5873L75.3018 53.4127L74.9209 54.2381L74.4764 53.4127L74.8574 52.5873ZM74.9844 52.3968L75.3653 51.5714L75.8098 52.3968L75.4288 53.2222L74.9844 52.3968ZM75.9368 52.6508L76.4447 53.5397L76.0002 54.3651L75.4923 53.4762L75.9368 52.6508ZM76.0002 54.8095C76.0637 54.8095 76.0002 54.8095 76.0002 54.8095V54.8095ZM75.3018 55L74.9844 54.492L75.3653 53.6667L75.8733 54.5555L75.6828 54.873C75.5558 54.9365 75.4288 54.9365 75.3018 55ZM74.7304 55.0635L74.9209 54.6825L75.1114 55C74.9209 55.0635 74.7939 55.0635 74.7304 55.0635ZM74.286 55.127L73.905 54.4286L74.286 53.6667L74.7304 54.492L74.4129 55.127C74.4129 55.127 74.3494 55.127 74.286 55.127ZM73.524 55.1905L73.778 54.6825L74.032 55.127C73.8415 55.1905 73.7145 55.1905 73.524 55.1905ZM73.2701 55.254L72.8256 54.492L73.2066 53.7301L73.651 54.492L73.2701 55.254ZM67.1748 52.7143L67.6193 53.4762L67.2383 54.2381L66.7939 53.4762L67.1748 52.7143ZM66.6669 53.2857L66.2225 52.5238L66.6034 51.6984L67.0479 52.4603L66.6669 53.2857ZM67.7463 53.7301L68.1907 54.5555L68.0637 54.873C67.8733 54.8095 67.6828 54.8095 67.4923 54.746L67.4288 54.5555L67.7463 53.7301ZM67.3018 52.4603L67.6828 51.6349L68.1272 52.3968L67.7463 53.2222L67.3018 52.4603ZM68.3177 52.7143L68.7621 53.5397L68.3177 54.3016L67.8733 53.4762L68.3177 52.7143ZM68.3177 54.8095L68.3812 54.9365C68.3177 54.9365 68.3177 54.9365 68.2542 54.9365L68.3177 54.8095ZM68.4447 52.4603L68.8256 51.6984L69.2701 52.5238L68.8891 53.2857L68.4447 52.4603ZM69.3971 52.7143L69.8415 53.4762L69.4606 54.2381L69.0161 53.4762L69.3971 52.7143ZM69.5241 52.4603L69.905 51.6349L70.3494 52.3968L69.9685 53.2222L69.5241 52.4603ZM70.4764 52.6508L70.9209 53.4127L70.5399 54.2381L70.0955 53.4762L70.4764 52.6508ZM70.6034 52.4603L70.9844 51.6349L71.4288 52.3968L71.0479 53.2222L70.6034 52.4603ZM71.5558 52.6508L72.0002 53.4127L71.6193 54.2381L71.1748 53.4762L71.5558 52.6508ZM71.6828 52.3968L72.0637 51.5714L72.5082 52.3333L72.1272 53.1587L71.6828 52.3968ZM72.6352 52.6508L73.0796 53.4127L72.6987 54.2381L72.2542 53.4762L72.6352 52.6508ZM72.3812 55.254L72.6987 54.6825L73.0161 55.254C72.8256 55.254 72.6352 55.254 72.3812 55.254ZM72.1907 55.254L71.7463 54.492L72.1272 53.6667L72.5717 54.4286L72.1907 55.254ZM71.3653 55.254L71.6193 54.746L71.9367 55.3174C71.7463 55.254 71.5558 55.254 71.3653 55.254ZM71.0479 55.254L70.6669 54.492L71.0479 53.6667L71.4923 54.4286L71.0479 55.254C71.1114 55.254 71.0479 55.254 71.0479 55.254ZM70.286 55.1905L70.5399 54.746L70.7939 55.254C70.6034 55.1905 70.4764 55.1905 70.286 55.1905ZM69.905 55.127L69.5875 54.492L69.9685 53.7301L70.4129 54.492L70.0955 55.127C70.032 55.127 69.9685 55.127 69.905 55.127ZM69.2701 55.0635L69.3971 54.746L69.5875 55.0635C69.5241 55.0635 69.3971 55.0635 69.2701 55.0635ZM68.6987 54.9365L68.4447 54.492L68.8256 53.6667L69.2701 54.4286L69.0161 54.9365C68.9526 55 68.8256 55 68.6987 54.9365ZM67.1748 55.5079C67.9367 55.6984 68.3812 55.7619 68.6352 55.8254L66.3494 56.7778L67.1748 55.5079ZM66.3494 54.4286L66.6669 53.7936L67.1114 54.5555L67.0479 54.619C66.7939 54.5555 66.6034 54.492 66.3494 54.4286ZM66.159 54.3016L65.7145 53.5397L66.0955 52.7778L66.5399 53.5397L66.159 54.3016ZM65.5875 53.2857L65.1431 52.5238L65.524 51.7619L65.9685 52.5238L65.5875 53.2857ZM65.3971 54.1746L65.5875 53.7936L65.8415 54.3016C65.7145 54.2381 65.5875 54.2381 65.3971 54.1746ZM64.6352 53.5397L65.0161 52.7778L65.4606 53.5397L65.2066 54.1111C65.0796 54.1111 65.0161 54.0476 64.8891 54.0476L64.6352 53.5397ZM61.905 52.5873L62.286 51.7619L62.7304 52.5238L62.3494 53.2222C62.286 53.2222 62.286 53.2222 62.2225 53.1587L61.905 52.5873ZM61.9685 53.1587C61.8415 53.1587 61.778 53.0952 61.651 53.0952L61.778 52.8413L61.9685 53.1587ZM62.8574 52.8413L63.2383 53.5397C63.0479 53.4762 62.7939 53.4127 62.6034 53.3492L62.8574 52.8413ZM62.9844 52.5873L63.3653 51.7619L63.8098 52.5238L63.3653 53.3492L62.9844 52.5873ZM63.9367 52.7778L64.3812 53.5397L64.2542 53.7936C64.0002 53.7301 63.7463 53.6666 63.5558 53.6032L63.9367 52.7778ZM64.0637 52.5238L64.4447 51.7619L64.8891 52.5238L64.5082 53.3492L64.0637 52.5238ZM64.4447 53.9206L64.5082 53.7936L64.5717 53.9206C64.5717 53.9206 64.5082 53.9206 64.4447 53.9206ZM60.3177 53.9206C60.4447 53.7301 60.5082 53.6032 60.5717 53.4762C61.9685 53.7936 64.2542 54.619 64.3812 54.6825C63.9368 54.9365 63.3018 55.127 62.9209 55.5714C62.032 54.619 61.2066 54.2381 60.3177 53.9206ZM61.3971 53.0317C61.2701 53.0317 61.1431 52.9682 61.0161 52.9682L60.7621 52.5873L61.1431 51.8254L61.5875 52.5873L61.3971 53.0317ZM60.6352 52.9047L60.7621 52.9682C60.6987 52.9047 60.6352 52.9047 60.6352 52.9047ZM59.7463 52.6508L60.1272 51.8889L60.5717 52.6508L60.4447 52.9682C60.2542 52.9682 60.0637 52.9682 59.9368 52.9047L59.7463 52.6508ZM58.6034 52.6508L59.0479 51.8254L59.4923 52.5873L59.3653 52.8413C59.1748 52.8413 58.9844 52.9047 58.7939 52.9047L58.6034 52.6508ZM58.2225 52.0159C58.2225 51.9524 58.286 51.7619 58.286 51.6349C58.3494 51.4444 58.3494 51.254 58.3494 51.254C58.4129 51.254 58.4764 51.3174 58.4764 51.3174H58.5399C61.0796 51.9524 70.7304 49.4762 76.7621 50.873C77.1431 50.9365 77.5875 51 77.9685 51.0635C77.9685 51.1905 77.905 51.5714 77.905 51.6349C77.905 52.2063 78.4129 52.5873 79.0479 52.5238C79.9368 52.4603 80.0637 51.6349 80.0637 51.6349C80.1907 51.6349 80.8891 51.8889 80.8891 51.9524C80.3812 52.2063 79.1748 53.0317 78.5399 53.2857C78.6034 53.3492 78.7304 53.4127 78.8574 53.4762C78.8574 53.4762 81.0161 52.2698 81.3971 52.1428C81.4606 52.1428 81.651 52.2698 81.778 52.2698C81.2701 52.5238 78.4764 54.1111 78.4129 54.0476C76.8256 53.2222 76.8891 51.8889 77.2066 51.127C77.0161 51 76.8256 51 76.8256 51C76.8256 51 76.3812 51.8889 76.6987 52.8413L76.5082 53.2222L76.0002 52.3333L76.5082 51.3809C76.4447 51.3809 76.3812 51.3174 76.3177 51.3174L75.8733 52.1428L75.4288 51.3174L75.5558 51.127C75.4923 51.127 75.4288 51.127 75.3653 51.127C75.3018 51.127 75.1748 51.127 75.1114 51.127L75.2383 51.3809L74.8574 52.2063L74.4129 51.3809L74.5399 51.0635C74.4764 51.0635 74.3494 51.0635 74.286 51.0635C74.2225 51.0635 74.2225 51.0635 74.2225 51.0635C74.159 51.0635 74.032 51.0635 73.9685 51.0635L74.159 51.3809L73.778 52.2063L73.651 52.4603L73.2701 53.2857L72.8256 52.5238L73.2066 51.6984L73.3336 51.4444L73.524 51.0635C73.4606 51.0635 73.3336 51.0635 73.2701 51.0635C73.2066 51.0635 73.2066 51.0635 73.1431 51.0635C73.0796 51.0635 72.9526 51.0635 72.8891 51.0635L73.0796 51.4444L72.6987 52.2698L72.2542 51.5079L72.4447 51.127C72.3812 51.127 71.8733 51.127 71.8098 51.127L72.0002 51.5079L71.6193 52.3333L71.1748 51.5714L71.3653 51.1905C71.3018 51.1905 70.7939 51.1905 70.7304 51.1905L70.9209 51.5714L70.5399 52.3968L70.0955 51.6349L70.2225 51.0635C70.159 51.0635 69.7145 51.0635 69.5875 51.0635L69.778 51.3809L69.3971 52.2063L68.9526 51.4444L69.1431 51.127C69.0796 51.127 68.6352 51.127 68.5717 51.1905L68.7621 51.5079L68.3177 52.2063L67.8733 51.4444L68.0002 51.1905C67.9367 51.1905 67.5558 51.1905 67.4923 51.254L67.6193 51.4444L67.2383 52.2698L66.7939 51.5079L66.9209 51.3174C66.8574 51.3174 66.5399 51.3174 66.4764 51.3809L66.6034 51.5714L66.2225 52.3968L65.778 51.6349L65.8415 51.4444C65.778 51.4444 65.4606 51.4444 65.3971 51.4444L65.4606 51.5714L65.0796 52.3333L64.6352 51.5714L64.6987 51.4444C64.6352 51.4444 64.3812 51.4444 64.3177 51.4444V51.5079L63.9367 52.3333L63.4923 51.5079C63.4288 51.5079 63.2383 51.5079 63.2383 51.5079L62.8574 52.3333L62.4129 51.5714C62.3494 51.5714 62.0955 51.5714 62.0955 51.5714L61.778 52.3333L61.3336 51.6349H60.9526L60.6352 52.3333L60.2542 51.6984H59.8733L59.5558 52.3333L59.1748 51.6984H58.7304L58.4129 52.3333L58.2225 52.0159ZM56.3812 51.7619C56.3812 51.7619 56.0002 51.3809 55.7463 51.0635C54.7304 49.8571 54.7939 48.3968 54.7939 48.2698C55.4288 48.9047 56.8256 50.6825 58.032 51.127C58.032 51.127 57.4606 52.2698 58.0955 53.1587C57.0796 53.4762 56.0637 54.746 55.3653 55.5714C55.1114 53.7936 56.4447 51.8254 56.3812 51.7619ZM73.7145 52.1428L73.2701 51.3809L73.1431 51.6349L73.5875 52.3968L73.7145 52.1428Z" fill="#2C3667"/> -<path d="M49.6514 46.492V54.8095V56.8412C49.6514 56.9047 49.6514 56.9682 49.6514 57.0317C50.0323 67.1904 59.4291 75.8254 68.826 79.9524C69.2704 79.7619 69.6514 79.5714 70.0958 79.3174C70.0958 79.3174 70.0958 79.3174 70.1593 79.3174C72.5085 78.1111 74.9847 76.5238 76.953 75C77.5244 74.5555 78.0958 74.1111 78.6037 73.6666C83.2387 69.7301 88.0006 63.8889 88.0006 56.3968V32.0158L68.826 31.127L49.6514 32.0158V46.492ZM50.6672 46.365V32.9047L68.826 32.0793L86.9847 32.9047V56.4603C86.9212 66.1111 77.9688 74.492 68.826 78.873C59.5561 74.5555 50.6672 66.2381 50.6672 56.5238V54.873V46.365Z" fill="#2C3667"/> -<path d="M58.5401 41.3492C58.7305 41.3492 58.8575 41.2222 58.8575 41.0318C58.8575 40.8413 58.7305 40.7143 58.5401 40.7143C58.3496 40.7143 58.2226 40.8413 58.2226 41.0318C58.2226 41.2222 58.4131 41.3492 58.5401 41.3492ZM82.9845 36.9048C82.921 36.9048 81.0797 39.1905 79.4289 40.0159C79.048 40.2064 78.6035 40.3334 78.1591 40.3334C76.0639 40.2699 73.0162 39.7619 72.5083 39.6349C72.5718 39.6349 73.0797 38.9365 73.0797 38.873C72.1274 38.6191 69.3337 37.2222 68.9528 36.9048C68.9528 36.9048 67.2385 38.6826 66.2861 39.0635C59.6829 39.0635 55.6194 40.8413 54.4766 41.3492C54.4766 41.3492 60.8893 46.4286 68.3813 45.2857C68.9528 45.4762 72.0639 46.873 72.1274 46.873C72.1909 46.873 72.1908 46.873 72.1908 46.8095C72.1274 46.4286 71.1115 44.7143 71.1115 44.7143L72.7623 44.2064C73.8416 44.4603 74.921 45.4127 75.048 45.4127C75.1115 45.4127 75.1115 45.4127 75.1115 45.4127C75.6829 44.3968 77.0162 43.7619 77.9686 43.5715V43.508C77.9051 43.4445 77.2702 42.8095 77.3972 42.7461C78.7305 42.5556 79.175 42.8095 79.2385 42.8095C81.5877 44.0794 82.1591 46.1111 82.3496 45.8572C83.6829 44.2064 81.6512 41.0953 81.7147 41.0953C83.7464 39.5715 83.2385 36.9048 82.9845 36.9048ZM67.1115 39.0635C67.7464 38.6191 67.7464 38.6826 68.9528 37.5397C69.0162 37.4762 70.2861 38.4286 72.4448 39.127C72.4448 39.1905 72.0639 39.6349 72.0639 39.6349C72.0004 39.6984 72.0004 39.7619 71.9369 39.7619C71.9369 39.8254 69.3972 39.254 66.9845 39.254C66.9845 39.1905 67.048 39.127 67.1115 39.0635ZM58.6035 40.3968C58.9845 40.3968 59.2385 40.6508 59.2385 41.0318C59.2385 41.3492 58.921 41.6032 58.6035 41.6032C58.2226 41.6032 57.9686 41.3492 57.9686 40.9683C57.9686 40.6508 58.2226 40.3968 58.6035 40.3968ZM59.8099 43.6984C60.3178 43.381 60.6353 43 60.8258 42.5556L61.0162 42.873L60.5083 43.8254C60.1908 43.8254 60.0004 43.7619 59.8099 43.6984ZM61.3972 44.1429C61.1432 44.0794 60.8893 44.0159 60.6353 43.9524L61.0797 43.127L61.4607 43.9524L61.3972 44.1429ZM63.3655 42.5556L62.9845 41.7302L63.4289 40.9683L63.8099 41.7937L63.3655 42.5556ZM63.8734 42.0476L64.2543 42.873L63.8734 43.5715L63.4924 42.8095L63.8734 42.0476ZM63.2385 42.8095L62.794 43.6349L62.3496 42.8095L62.794 41.9841L63.2385 42.8095ZM62.2226 42.5556L61.8416 41.7302L62.2861 40.9048L62.667 41.7302L62.2226 42.5556ZM62.0956 42.8095L61.5877 43.6984L61.2067 42.873L61.7147 41.9841L62.0956 42.8095ZM61.9051 44.2699L61.7147 43.9524L62.2226 43.0635L62.6035 43.8889L62.2861 44.3968C62.2226 44.3334 62.0321 44.2699 61.9051 44.2699ZM62.6035 44.3968L62.794 44.0794L62.9845 44.4603C62.794 44.4603 62.7305 44.3968 62.6035 44.3968ZM63.2385 44.5238L62.921 43.8889L63.3655 43.0635L63.7464 43.8254L63.3655 44.5238C63.302 44.5238 63.2385 44.5238 63.2385 44.5238ZM63.6194 44.5238L63.8734 44.0794L64.1274 44.5873C63.9369 44.5873 63.8099 44.5873 63.6194 44.5238ZM64.3813 44.6508L64.0004 43.8889L64.4448 43.127L64.8258 43.8889L64.3813 44.6508ZM70.8575 42.9365L70.4131 43.6984L70.0321 42.9365L70.4766 42.1746L70.8575 42.9365ZM70.6035 41.8572L71.048 41.0953L71.4289 41.9207L70.9845 42.6826L70.6035 41.8572ZM70.2861 43.9524L70.1591 44.0794C69.9686 44.1429 69.7782 44.1429 69.5877 44.2064L69.4607 43.8889L69.9051 43.0635L70.2861 43.9524ZM69.9051 42.6191L69.5242 41.7937L69.9686 41.0318L70.3496 41.8572L69.9051 42.6191ZM69.7782 42.873L69.3337 43.6984L68.9528 42.873L69.3972 42.0476L69.7782 42.873ZM69.3337 44.2699C69.2702 44.2699 69.2702 44.2699 69.2067 44.2699L69.2702 44.1429L69.3337 44.2699ZM68.7623 42.6191L68.3813 41.8572L68.8258 41.0318L69.2067 41.7937L68.7623 42.6191ZM68.6353 42.873L68.1909 43.6349L67.8099 42.873L68.2543 42.1111L68.6353 42.873ZM67.6829 42.6191L67.302 41.7937L67.7464 41.0318L68.1274 41.8572L67.6829 42.6191ZM67.5559 42.873L67.1115 43.6349L66.7305 42.8095L67.175 42.0476L67.5559 42.873ZM66.6036 42.6191L66.2226 41.7937L66.667 41.0318L67.048 41.8572L66.6036 42.6191ZM66.4766 42.873L66.0321 43.6349L65.6512 42.8095L66.0956 42.0476L66.4766 42.873ZM65.5242 42.6191L65.1432 41.7937L65.5877 41.0318L65.9686 41.8572L65.5242 42.6191ZM65.3972 42.8095L64.9528 43.5715L64.5718 42.8095L65.0162 42.0476L65.3972 42.8095ZM64.6353 44.6508L64.9528 44.0794L65.2702 44.6508C65.0162 44.6508 64.8258 44.6508 64.6353 44.6508ZM65.0797 43.8254L65.5242 43.0635L65.9051 43.8889L65.4607 44.6508L65.0797 43.8254ZM65.7147 44.6508L66.0321 44.0794L66.2861 44.5873C66.0956 44.6508 65.9051 44.6508 65.7147 44.6508ZM66.5401 44.6508L66.1591 43.8889L66.6036 43.127L66.9845 43.9524L66.5401 44.6508C66.6035 44.6508 66.5401 44.6508 66.5401 44.6508ZM66.8575 44.5873L67.1115 44.0794L67.3655 44.5238C67.175 44.5873 67.048 44.5873 66.8575 44.5873ZM67.5559 44.5238L67.2385 43.8889L67.6829 43.127L68.0639 43.8889L67.7464 44.5238C67.6829 44.5238 67.6194 44.5238 67.5559 44.5238ZM68.0004 44.5238L68.1909 44.2064L68.3178 44.5238C68.2543 44.4603 68.1274 44.4603 68.0004 44.5238ZM68.5718 44.3968L68.3178 43.8889L68.7623 43.127L69.1432 43.9524L68.9528 44.3334C68.8258 44.3968 68.6988 44.3968 68.5718 44.3968ZM71.302 46.1746L69.0162 45.2222C69.2702 45.1588 69.7782 45.1588 70.4766 44.9048L71.302 46.1746ZM70.6035 44.0159L70.5401 43.9524L70.9845 43.1905L71.302 43.8254C71.048 43.8889 70.794 43.9524 70.6035 44.0159ZM71.1115 42.9365L71.5559 42.1746L71.9369 42.9365L71.4924 43.6984L71.1115 42.9365ZM71.6829 41.9207L72.1274 41.1588L72.5083 41.9207L72.0639 42.6826L71.6829 41.9207ZM71.7464 43.6984L72.0004 43.1905L72.1908 43.5715C72.0639 43.5715 71.9369 43.6349 71.7464 43.6984ZM72.7623 43.381C72.6353 43.381 72.5718 43.4445 72.4448 43.4445L72.1908 42.873L72.6353 42.1111L73.0162 42.873L72.7623 43.381ZM75.4289 42.6191C75.3655 42.6191 75.3655 42.6191 75.302 42.6826L74.921 41.9841L75.3655 41.2222L75.7464 42.0476L75.4289 42.6191ZM75.8734 42.2381L76.0004 42.4921C75.8734 42.4921 75.8099 42.5556 75.6829 42.5556L75.8734 42.2381ZM75.048 42.7461C74.8575 42.8095 74.6035 42.873 74.4131 42.9365L74.794 42.2381L75.048 42.7461ZM74.2226 42.7461L73.7782 41.9207L74.2226 41.1588L74.6035 41.9841L74.2226 42.7461ZM74.0956 43C73.8416 43.0635 73.6512 43.127 73.3972 43.1905L73.2702 42.9365L73.7147 42.1746L74.0956 43ZM73.1432 42.6826L72.7623 41.9207L73.2067 41.1588L73.5877 41.9207L73.1432 42.6826ZM73.0797 43.3175L73.1432 43.1905L73.2067 43.3175C73.1432 43.3175 73.0797 43.3175 73.0797 43.3175ZM74.7305 44.9048C74.2861 44.5238 73.7147 44.2699 73.2702 44.0159C73.3972 43.9524 75.6829 43.127 77.0797 42.8095C77.1432 42.9365 77.1432 43.127 77.3337 43.254C76.4448 43.6349 75.6194 44.0159 74.7305 44.9048ZM76.0004 41.9841L76.4448 41.2222L76.8258 41.9841L76.5718 42.3651C76.4448 42.3651 76.3178 42.4286 76.1909 42.4286L76.0004 41.9841ZM76.8893 42.3016L76.9528 42.1746L77.0162 42.2381C76.9528 42.3016 76.9528 42.3016 76.8893 42.3016ZM77.7782 42.2381C77.5877 42.2381 77.3972 42.2381 77.2702 42.3016L77.1432 41.9841L77.5877 41.2222L77.9686 41.9841L77.7782 42.2381ZM78.8575 42.3651C78.667 42.3016 78.4766 42.3016 78.2861 42.3016L78.1591 42.0476L78.6035 41.2857L79.048 42.1111L78.8575 42.3651ZM79.175 41.7937L78.8575 41.1588H78.4131L78.0321 41.7937L77.7147 41.1588H77.3337L76.9528 41.7937L76.6353 41.0953H76.2543L75.8734 41.7937L75.4924 41.0318C75.4924 41.0318 75.302 41.0318 75.175 41.0318L74.7305 41.7937L74.3496 40.9683C74.3496 40.9683 74.1591 40.9683 74.0956 40.9683L73.6512 41.7302L73.2702 40.9048V40.8413C73.2702 40.8413 72.9528 40.8413 72.8893 40.8413L72.9528 40.9683L72.5083 41.7302L72.1274 40.9683L72.1908 40.8413C72.1274 40.8413 71.8099 40.8413 71.7464 40.8413L71.8099 41.0318L71.3655 41.7937L70.9845 40.9683L71.1115 40.7778C71.048 40.7778 70.7305 40.7778 70.667 40.7143L70.794 40.9048L70.3496 41.6667L69.9686 40.8413L70.0956 40.6508C70.0321 40.6508 69.7147 40.6508 69.5877 40.5873L69.7147 40.8413L69.2702 41.6032L68.9528 40.8413L69.1432 40.5238C69.0797 40.5238 68.6353 40.5238 68.5718 40.4603L68.6988 40.7778L68.2543 41.6032L67.8734 40.7778L68.0639 40.4603C68.0004 40.4603 67.5559 40.4603 67.4289 40.4603L67.6194 40.8413L67.175 41.6032L66.794 40.7778L66.9845 40.3968C66.921 40.3968 66.4131 40.3968 66.3496 40.3968L66.5401 40.7778L66.0956 41.5397L65.7147 40.7143L65.9051 40.3334C65.8416 40.3334 65.3337 40.3334 65.2702 40.3334L65.4607 40.7143L65.0162 41.5397L64.6353 40.7143L64.8258 40.3334C64.7623 40.3334 64.6353 40.3334 64.5718 40.3334C64.5083 40.3334 64.4448 40.3334 64.4448 40.3334C64.3813 40.3334 64.2543 40.3334 64.1909 40.3334L64.3813 40.7143L64.5083 40.9683L64.8893 41.7937L64.4448 42.5556L64.0639 41.7302L63.9369 41.5397L63.5559 40.7143L63.7464 40.3968C63.6829 40.3968 63.5559 40.3968 63.4924 40.3968H63.4289C63.3655 40.3968 63.2385 40.3968 63.175 40.3968L63.302 40.7143L62.794 41.5397L62.4131 40.7143L62.5401 40.4603C62.4766 40.4603 62.3496 40.4603 62.2861 40.4603C62.2226 40.4603 62.1591 40.4603 62.0956 40.4603L62.2226 40.6508L61.7147 41.5397L61.2702 40.7143C61.2067 40.7143 61.1432 40.7778 61.0797 40.7778L61.5877 41.7302L61.0797 42.6191L60.8893 42.2381C61.1432 41.2857 60.7623 40.3968 60.7623 40.3968C60.7623 40.3968 60.5718 40.3968 60.3813 40.5238C60.6988 41.2857 60.7623 42.5556 59.175 43.4445C59.1115 43.4445 56.3178 41.9207 55.8099 41.6667C55.9369 41.6667 56.1274 41.4762 56.1909 41.5397C56.5083 41.6667 58.667 42.873 58.7305 42.873C58.8575 42.8095 58.9845 42.7461 59.048 42.6826C58.3496 42.3651 57.1432 41.6032 56.6988 41.3492C56.7623 41.2857 57.3972 41.0318 57.5242 41.0318C57.5242 41.0318 57.6512 41.9207 58.5401 41.9207C59.2385 41.9207 59.6829 41.6032 59.6829 41.0318C59.6829 40.9683 59.6194 40.5873 59.6194 40.4603C60.0004 40.3968 60.4448 40.3334 60.8258 40.2699C66.8575 38.873 76.5718 41.3492 79.048 40.7143H79.1115C79.175 40.7143 79.2385 40.7143 79.2385 40.6508C79.2385 40.6508 79.302 40.8413 79.302 41.0318C79.3655 41.1588 79.3655 41.3492 79.3655 41.4127L79.175 41.7937ZM82.2226 44.9683C81.5242 44.0794 80.5083 42.873 79.4924 42.5556C80.1274 41.6667 79.5559 40.5238 79.5559 40.5238C80.7623 40.1429 82.1591 38.3651 82.794 37.6667C82.794 37.7937 82.8575 39.1905 81.8416 40.4603C81.5877 40.7778 81.2067 41.1588 81.2067 41.1588C81.2067 41.2222 82.5401 43.127 82.2226 44.9683ZM64.0639 41.7937L64.5083 41.0318L64.3813 40.7778L63.9369 41.5397L64.0639 41.7937Z" fill="#2C3667"/> -<path d="M59.4286 62.4285C59.5556 62.4285 59.6826 62.3016 59.7461 62.1746C59.7461 62.0476 59.6191 61.9206 59.4921 61.9206C59.3651 61.9206 59.2381 62.0476 59.1746 62.1746C59.1112 62.3016 59.2381 62.4285 59.4286 62.4285ZM80.508 58.619C80.4445 58.619 78.8572 60.5873 77.3969 61.3492C77.0794 61.4762 76.635 61.6031 76.3175 61.6031C74.4762 61.5397 71.8731 61.0952 71.4286 60.9682L71.9366 60.3333C71.1112 60.0793 68.6985 58.873 68.381 58.619C68.381 58.619 66.8572 60.1428 66.0318 60.5238C60.3175 60.5238 56.8254 62.1111 55.8096 62.492C55.8096 62.492 61.3334 66.873 67.8096 65.8571C68.3175 66.0476 70.9842 67.1904 71.0477 67.1904C71.1112 67.1904 71.1112 67.1904 71.1112 67.127C71.0477 66.8095 70.2223 65.3492 70.2223 65.3492L71.6826 64.9047C72.635 65.0952 73.5239 65.9841 73.6508 65.9841C73.7143 65.9841 73.6508 65.9841 73.7143 65.9841C74.2223 65.0952 75.3651 64.5873 76.1905 64.3968V64.3333C76.127 64.2698 75.6191 63.6984 75.6826 63.6984C76.8254 63.5079 77.2064 63.7619 77.2699 63.7619C79.3016 64.8412 79.8096 66.619 79.9366 66.4285C81.0794 64.9682 79.3651 62.3016 79.3651 62.3016C81.1429 60.9047 80.6985 58.619 80.508 58.619ZM66.7937 60.4603C67.3651 60.0793 67.3016 60.0793 68.381 59.1904C68.4445 59.127 69.5239 59.9524 71.3651 60.5238C71.3651 60.5873 71.0477 60.9682 71.0477 60.9682C70.9842 61.0317 70.9842 61.0317 70.9207 61.0952C70.9207 61.0952 68.6985 60.6508 66.6032 60.6508C66.6667 60.5238 66.7302 60.5238 66.7937 60.4603ZM59.4286 61.6031C59.7461 61.6031 60 61.8571 60 62.1111C60 62.4285 59.7461 62.619 59.4286 62.619C59.1112 62.619 58.8572 62.365 58.8572 62.1111C58.8572 61.8571 59.1112 61.6031 59.4286 61.6031ZM60.4445 64.4603C60.8889 64.2063 61.1429 63.8254 61.2699 63.5079L61.3969 63.8254L60.9524 64.6508C60.8254 64.5873 60.635 64.5238 60.4445 64.4603ZM61.8413 64.8412C61.6508 64.7777 61.3969 64.7143 61.2064 64.6508L61.5873 63.9524L61.9683 64.6508L61.8413 64.8412ZM63.5556 63.4444L63.2381 62.746L63.6191 62.0476L63.9366 62.746L63.5556 63.4444ZM64 63L64.3175 63.6984L64 64.3968L63.6826 63.6984L64 63ZM63.4286 63.6984L63.0477 64.3968L62.7302 63.6984L63.1112 63L63.4286 63.6984ZM62.6032 63.5079L62.2223 62.8095L62.6032 62.1111L62.9842 62.8095L62.6032 63.5079ZM62.4762 63.6984L62.0318 64.4603L61.7143 63.7619L62.1588 63L62.4762 63.6984ZM62.2858 64.9682L62.1588 64.6508L62.6032 63.8889L62.9207 64.5873L62.6667 65.0317C62.5397 65.0317 62.4127 64.9682 62.2858 64.9682ZM62.8572 65.0952L62.9842 64.8412L63.1746 65.1587C63.1112 65.0952 62.9842 65.0952 62.8572 65.0952ZM63.4286 65.1587L63.1746 64.5873L63.5556 63.8889L63.8731 64.5873L63.5556 65.1587C63.4921 65.1587 63.4921 65.1587 63.4286 65.1587ZM63.7461 65.2222L63.9366 64.8412L64.1905 65.2857C64.0635 65.2222 63.9366 65.2222 63.7461 65.2222ZM64.4445 65.2857L64.127 64.5873L64.508 63.8889L64.8254 64.5873L64.4445 65.2857ZM70.0318 63.7619L69.6508 64.3968L69.2699 63.7619L69.6508 63.0635L70.0318 63.7619ZM69.7778 62.873L70.1588 62.2381L70.5397 62.9365L70.1588 63.5714L69.7778 62.873ZM69.5239 64.6508L69.4604 64.7777C69.2699 64.8412 69.1429 64.8412 68.9524 64.9047L68.8254 64.6508L69.2064 63.9524L69.5239 64.6508ZM69.2064 63.5714L68.8254 62.873L69.2064 62.1746L69.5873 62.873L69.2064 63.5714ZM69.0794 63.7619L68.6985 64.4603L68.3175 63.7619L68.6985 63.0635L69.0794 63.7619ZM68.7619 64.9682C68.7619 64.9682 68.6985 64.9682 68.635 64.9682L68.6985 64.8412L68.7619 64.9682ZM68.254 63.5714L67.9366 62.873L68.3175 62.1746L68.635 62.873L68.254 63.5714ZM68.127 63.7619L67.7461 64.4603L67.4286 63.7619L67.8096 63.0635L68.127 63.7619ZM67.3016 63.5079L66.9207 62.8095L67.3016 62.1111L67.6826 62.8095L67.3016 63.5079ZM67.1746 63.7619L66.7937 64.3968L66.4127 63.6984L66.7937 63L67.1746 63.7619ZM66.3493 63.5079L66.0318 62.8095L66.4127 62.1111L66.7937 62.8095L66.3493 63.5079ZM66.2223 63.6984L65.8413 64.3968L65.5239 63.6984L65.9048 63L66.2223 63.6984ZM65.3969 63.5079L65.0794 62.8095L65.4604 62.1111L65.8413 62.8095L65.3969 63.5079ZM65.3334 63.6984L64.9524 64.3968L64.635 63.6984L65.0159 63L65.3334 63.6984ZM64.635 65.2857L64.8889 64.8412L65.1429 65.3492C65.0159 65.2857 64.8254 65.2857 64.635 65.2857ZM65.0159 64.5873L65.3969 63.8889L65.7778 64.5873L65.3969 65.2857L65.0159 64.5873ZM65.5873 65.2857L65.8413 64.7777L66.0953 65.2222C65.9048 65.2857 65.7778 65.2857 65.5873 65.2857ZM66.2858 65.2857L65.9683 64.6508L66.3493 63.9524L66.7302 64.6508L66.2858 65.2857C66.3493 65.2857 66.3493 65.2857 66.2858 65.2857ZM66.6032 65.2222L66.8572 64.7777L67.0477 65.1587C66.8572 65.2222 66.7302 65.2222 66.6032 65.2222ZM67.1746 65.2222L66.9207 64.6508L67.3016 63.9524L67.6191 64.6508L67.3016 65.1587C67.3016 65.1587 67.2381 65.1587 67.1746 65.2222ZM67.5556 65.1587L67.7461 64.8412L67.8731 65.0952C67.7461 65.0952 67.6826 65.1587 67.5556 65.1587ZM68.0635 65.0952L67.8731 64.6508L68.254 63.9524L68.635 64.6508L68.381 65.0317C68.254 65.0317 68.1905 65.0317 68.0635 65.0952ZM70.4127 66.619L68.4445 65.7936C68.635 65.7301 69.0794 65.7301 69.7143 65.5397L70.4127 66.619ZM69.7778 64.7143L70.0953 64.0158L70.3493 64.5873C70.2223 64.5873 69.9683 64.6508 69.7778 64.7143ZM70.2223 63.8254L70.6032 63.127L70.9207 63.8254L70.5397 64.5238L70.2223 63.8254ZM70.7302 62.9365L71.1112 62.2381L71.4286 62.9365L71.0477 63.6349L70.7302 62.9365ZM70.7937 64.4603L71.0477 64.0158L71.2381 64.3333C71.1112 64.3968 70.9207 64.3968 70.7937 64.4603ZM71.6826 64.2063C71.6191 64.2063 71.4921 64.2698 71.4286 64.2698L71.1746 63.7619L71.5556 63.0635L71.8731 63.7619L71.6826 64.2063ZM73.9683 63.5714C73.9048 63.5714 73.9048 63.5714 73.8413 63.5714L73.5239 63L73.9048 62.3016L74.2858 63L73.9683 63.5714ZM74.3493 63.1904L74.4762 63.3809C74.4127 63.3809 74.2858 63.4444 74.2223 63.4444L74.3493 63.1904ZM73.6508 63.6349C73.4604 63.6984 73.2699 63.7619 73.0794 63.7619L73.3969 63.1904L73.6508 63.6349ZM72.9524 63.6349L72.5715 62.9365L72.9524 62.3016L73.3334 63L72.9524 63.6349ZM72.8254 63.8254C72.635 63.8889 72.4445 63.9523 72.1905 64.0158L72.0635 63.7619L72.4445 63.127L72.8254 63.8254ZM72 63.5714L71.6826 62.873L72.0635 62.2381L72.381 62.9365L72 63.5714ZM71.9366 64.1428L72 64.0158L72.0635 64.0793C72 64.0793 71.9366 64.1428 71.9366 64.1428ZM73.3969 65.4762C73.0159 65.1587 72.508 64.9047 72.127 64.7143C72.1905 64.6508 74.1588 63.9523 75.4286 63.6984C75.4921 63.8254 75.4921 63.9523 75.6191 64.0793C74.8572 64.3968 74.1588 64.7143 73.3969 65.4762ZM74.4762 63L74.8572 62.3016L75.1747 63L74.9842 63.3174C74.8572 63.3174 74.7937 63.3809 74.6667 63.3809L74.4762 63ZM75.2381 63.2539H75.3651C75.3016 63.2539 75.3016 63.2539 75.2381 63.2539ZM76 63.1904C75.8731 63.1904 75.6826 63.1904 75.5556 63.1904L75.4286 62.9365L75.8096 62.3016L76.127 63L76 63.1904ZM76.9524 63.3174C76.8254 63.2539 76.635 63.2539 76.4445 63.2539L76.3175 63.0635L76.6985 62.365L77.0794 63.0635L76.9524 63.3174ZM77.2064 62.8095L76.8889 62.2381H76.508L76.1905 62.8095L75.9366 62.2381H75.6191L75.3016 62.8095L74.9842 62.2381H74.6667L74.3493 62.873L74.0318 62.2381C74.0318 62.2381 73.8413 62.2381 73.7778 62.2381L73.3969 62.873L73.0794 62.1746C73.0794 62.1746 72.9524 62.1746 72.8889 62.1746L72.508 62.873L72.1905 62.1746V62.1111C72.1905 62.1111 71.9366 62.1111 71.8731 62.1111L71.9366 62.2381L71.5556 62.873L71.2381 62.1746L71.3016 62.0476C71.2381 62.0476 70.9842 62.0476 70.9207 62.0476L70.9842 62.1746L70.6032 62.873L70.2858 62.1746L70.3493 62.0476C70.2858 62.0476 70.0318 62.0476 69.9683 62.0476L70.0318 62.2381L69.6508 62.873L69.2699 62.1746L69.3969 61.9841C69.3334 61.9841 69.0159 61.9841 68.9524 61.9841L69.0794 62.1746L68.6985 62.873L68.381 62.1746L68.508 61.9206C68.4445 61.9206 68.0635 61.9206 68 61.9206L68.127 62.1746L67.7461 62.873L67.3651 62.1746L67.4921 61.9206C67.4286 61.9206 67.0477 61.9206 66.9842 61.9206L67.1746 62.2381L66.7937 62.9365L66.4127 62.2381L66.6032 61.9206C66.5397 61.9206 66.0953 61.9206 66.0318 61.9206L66.2223 62.2381L65.8413 62.9365L65.4604 62.2381L65.6508 61.9206C65.5873 61.9206 65.1429 61.9206 65.0794 61.9206L65.2699 62.2381L64.8889 62.9365L64.5715 62.2381L64.762 61.9206C64.6985 61.9206 64.635 61.9206 64.508 61.9206C64.4445 61.9206 64.4445 61.9206 64.381 61.9206C64.3175 61.9206 64.254 61.9206 64.1905 61.9206L64.381 62.2381L64.508 62.4285L64.8254 63.127L64.508 63.5079L64.1905 62.8095L64.0635 62.619L63.7461 61.9206L63.9366 61.6031C63.8731 61.6031 63.8096 61.6031 63.6826 61.6031H63.6191C63.5556 61.6031 63.4921 61.6031 63.4286 61.6031L63.5556 61.8571L63.1746 62.5555L62.7302 61.8571L62.8572 61.6031C62.7937 61.6031 62.7302 61.6031 62.6032 61.6031C62.5397 61.6031 62.4762 61.6031 62.4127 61.6031L62.4762 61.7936L62.0953 62.492L61.7778 61.8571C61.7143 61.8571 61.6508 61.9206 61.5873 61.9206L62.0318 62.746L61.5873 63.5079L61.3969 63.1904C61.6508 62.365 61.2699 61.6031 61.2699 61.6031C61.2699 61.6031 61.0794 61.6031 60.8889 61.7301C61.1429 62.365 61.2064 63.5079 59.8096 64.2063C59.7461 64.2063 57.3334 62.873 56.8889 62.6825C57.0159 62.6825 57.1429 62.5555 57.2064 62.5555C57.4604 62.6825 59.3651 63.6984 59.3651 63.6984C59.4921 63.6349 59.5556 63.5714 59.6826 63.5079C59.1112 63.2539 58.0318 62.5555 57.6508 62.365C57.7143 62.3016 58.2858 62.1111 58.4127 62.1111C58.4127 62.1111 58.5397 62.873 59.3016 62.873C59.8731 62.873 60.254 62.619 60.3175 62.1111C60.3175 62.0476 60.254 61.7301 60.254 61.6031C60.635 61.5397 60.9524 61.4762 61.2699 61.4127C66.5397 60.2063 74.8572 62.365 77.0794 61.7936H77.1429C77.2064 61.7936 77.2064 61.7936 77.2699 61.7301C77.2699 61.7301 77.3334 61.9206 77.3334 62.0476C77.3969 62.1746 77.3969 62.3016 77.3969 62.365L77.2064 62.8095ZM79.8731 65.5397C79.3016 64.7777 78.4127 63.6984 77.5239 63.4444C78.0953 62.6825 77.5873 61.6666 77.5873 61.6666C78.6667 61.3492 79.8096 59.7619 80.381 59.1904C80.381 59.3174 80.4445 60.5238 79.5556 61.6031C79.3651 61.8571 79.0477 62.1746 79.0477 62.2381C78.9842 62.3016 80.127 64.0158 79.8731 65.5397ZM64.127 62.8095L64.508 62.1111L64.381 61.9206L64 62.619L64.127 62.8095Z" fill="#2C3667"/> -<path d="M27.1746 80.0159C27.1746 80.0159 12.381 74.1111 8.25397 60.3333L8 31.1905H8.19048H8V31H46.2222V60.0794C46.2222 60.1429 44.7619 71.7619 27.3651 79.9524L27.3016 80.0159H27.1746Z" fill="white"/> -<path d="M27.1746 80.0159C27.1746 80.0159 12.381 74.1111 8.25397 60.3333L8 31.1905H8.19048H8V31H46.2222V60.0794C46.2222 60.1429 44.7619 71.7619 27.3651 79.9524L27.3016 80.0159H27.1746ZM25.0159 78.4921C26.2222 79.127 27.0476 79.5079 27.3016 79.5714C40.1905 73.4762 44.1905 65.4762 45.3968 61.9206C45.7778 60.8413 45.8413 60.1429 45.9048 60.0159V31.381H8.38095L8.63492 60.2698C11.6825 70.4286 20.6984 76.2698 25.0159 78.4921Z" fill="#2C3667"/> -<path d="M27.174 42.6825C39.301 41.8571 40.1264 32.3333 40.1264 32.3333H32.1264C32.0629 38.5555 27.7455 37.9841 27.2375 38.0476H27.174C27.174 38.0476 22.7931 38.1746 22.2852 32.3333H14.2852C14.2852 32.3333 15.2375 42.1746 27.174 42.6825Z" fill="#2C3667"/> -<path d="M41.461 32.3969C41.461 32.3969 40.3817 43.254 27.1753 43.8254C14.4769 43.381 12.8261 32.3969 12.8261 32.3969H9.08008V35.1905C17.461 45.7937 26.4134 44.9048 27.1118 44.9048C27.1118 44.9048 36.8261 45.7302 45.2071 35.1905V32.3969H41.461Z" fill="#2C3667"/> -<path d="M12.6982 54.9365L13.714 54.0476L10.7934 51.1905L9.01562 53.1587L9.14261 57.9841H12.6982V54.9365Z" fill="#2C3667"/> -<path d="M23.4278 58.2381V54.9365L24.6342 53.9206L21.7771 51.0635L18.9834 53.9841L19.8723 54.9365L19.9358 58.2381H23.4278Z" fill="#2C3667"/> -<path d="M27.1744 45.8572C15.1744 45.9207 9.01562 36.6508 9.01562 36.6508L9.07912 47.8889C10.8569 47.8889 12.2537 46.0476 12.2537 46.0476C13.968 47.7619 15.9363 47.6349 15.9363 47.6349C18.349 47.8889 19.6823 46.2381 19.6823 46.2381C21.2061 48.0794 23.4918 47.9524 23.4918 47.9524C24.8251 48.1429 26.7934 46.7461 27.1109 46.5556C27.3013 46.6826 29.3966 48.1429 30.7934 47.9524C30.7934 47.9524 33.0156 48.0794 34.6029 46.2381C34.6029 46.2381 35.9363 47.8889 38.349 47.6349C38.349 47.6349 40.3172 47.7619 42.0315 46.0476C42.0315 46.0476 43.4283 47.8889 45.2061 47.8889L45.2696 36.6508C45.2696 36.6508 39.1109 45.8572 27.1744 45.8572Z" fill="#2C3667"/> -<path d="M27.1744 47.8254C25.4601 49.3492 23.6823 49.0952 23.6823 49.0952C21.5236 49.1587 19.6188 47.7619 19.6188 47.7619C18.7934 48.9047 16.2537 49.0317 16.2537 49.0317C14.1585 49.0952 12.1902 47.6349 12.1902 47.6349C10.7299 49.2857 9.01562 49.0317 9.01562 49.0317V51.2539L10.7934 49.4762L14.7299 53.1587L16.1267 51.6349L17.968 53.2857L21.6505 49.4762L25.6505 53.0952L27.1744 51.7619L28.6982 53.0952L32.6982 49.4762L36.3807 53.2857L38.222 51.6349L39.6188 53.1587L43.5553 49.4762L45.3331 51.2539V49.0317C45.3331 49.0317 43.6823 49.2857 42.222 47.6349C42.222 47.6349 40.2537 49.0952 38.1585 49.0317C38.1585 49.0317 35.6188 48.9047 34.7934 47.6984C34.7934 47.6984 32.8886 49.0952 30.7299 49.0317C30.7299 49.0317 28.9521 49.2857 27.2378 47.7619" fill="#2C3667"/> -<path d="M40.6982 54.0476L41.7141 55V57.9841H45.2697L45.3967 53.2222L43.6189 51.1905L40.6982 54.0476Z" fill="#2C3667"/> -<path d="M34.4758 58.2381L34.5392 55L35.4281 53.9841L32.6345 51.0635L29.7773 53.9206L30.9837 55V58.2381H34.4758Z" fill="#2C3667"/> -<path d="M27.2386 68.5238L28.6354 67.4444L32.064 71.3175L36.2544 67.3175L37.6513 68.6508L39.3021 67.3175L40.6354 68.3968L41.3973 67.4444L40.191 66.4286L41.3973 65.3492V62.746H43.2386L43.6195 62.5556L44.2544 61.5397L43.0481 60.5238C43.0481 60.5238 42.4132 61.4762 41.3338 61.4127C41.3338 61.4127 39.937 61.5397 39.4925 60.5238C39.4925 60.5238 38.8576 61.5397 37.6513 61.4762C37.6513 61.4762 36.3179 61.4127 35.7465 60.5873C35.7465 60.5873 34.9846 61.5397 33.6513 61.3492C33.6513 61.3492 32.7624 61.6032 32.1275 60.5873C32.1275 60.5873 31.4291 61.4762 30.2862 61.4127C30.2862 61.4127 29.3338 61.5397 28.6354 60.5238C28.6354 60.5238 28.0005 61.4127 27.1751 61.4127C26.2862 61.4127 25.6513 60.5238 25.6513 60.5238C24.9529 61.5397 24.0005 61.4127 24.0005 61.4127C22.8576 61.4762 22.1592 60.5873 22.1592 60.5873C21.5243 61.6032 20.6354 61.3492 20.6354 61.3492C19.3021 61.5397 18.5402 60.5873 18.5402 60.5873C17.9687 61.4127 16.6354 61.4762 16.6354 61.4762C15.4291 61.5397 14.7941 60.5238 14.7941 60.5238C14.3497 61.5397 12.9529 61.4127 12.9529 61.4127C11.8735 61.4762 11.2386 60.5238 11.2386 60.5238L10.0322 61.5397L10.6671 62.5556L11.1751 62.746H12.8894V65.3492L14.0957 66.4286L12.8894 67.4444L13.6513 68.3968L14.9846 67.3175L16.6354 68.6508L18.0322 67.3175L22.2227 71.3175L25.7783 67.3175L27.2386 68.5238ZM22.2862 69.7936L19.2386 67.0635L20.4449 65.9841V62.746H23.937L24.0005 65.9841L25.0798 66.873L22.2862 69.7936ZM32.191 69.9206L29.3973 66.9365L30.4767 66.0476V62.8095H34.0322L34.2227 66.1111L35.3021 66.9365L32.191 69.9206Z" fill="#2C3667"/> -<path d="M34.8573 73.8572H27.1748H19.6827L19.1748 74.1111C25.4605 77.9842 26.7304 78.6826 27.0478 78.7461C27.3018 78.7461 27.9367 78.6826 35.3018 74.1746L34.8573 73.8572Z" fill="#2C3667"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 75V58.248H108.744V61.056H101.136V65.112H107.76V67.92H101.136V75H97.968ZM111.393 62.472H114.465V76.512C114.465 77.568 114.201 78.376 113.673 78.936C113.145 79.512 112.305 79.8 111.153 79.8H109.473V77.352H111.393V62.472ZM112.929 60.648C112.289 60.648 111.825 60.504 111.537 60.216C111.265 59.928 111.129 59.56 111.129 59.112V58.632C111.129 58.184 111.265 57.816 111.537 57.528C111.825 57.24 112.289 57.096 112.929 57.096C113.553 57.096 114.009 57.24 114.297 57.528C114.585 57.816 114.729 58.184 114.729 58.632V59.112C114.729 59.56 114.585 59.928 114.297 60.216C114.009 60.504 113.553 60.648 112.929 60.648ZM127.242 75C126.57 75 126.034 74.808 125.634 74.424C125.25 74.024 125.01 73.496 124.914 72.84H124.77C124.562 73.656 124.138 74.272 123.498 74.688C122.858 75.088 122.066 75.288 121.122 75.288C119.842 75.288 118.858 74.952 118.17 74.28C117.482 73.608 117.138 72.712 117.138 71.592C117.138 70.296 117.602 69.336 118.53 68.712C119.458 68.072 120.778 67.752 122.49 67.752H124.626V66.84C124.626 66.136 124.442 65.592 124.074 65.208C123.706 64.824 123.114 64.632 122.298 64.632C121.578 64.632 120.994 64.792 120.546 65.112C120.114 65.416 119.746 65.784 119.442 66.216L117.618 64.584C118.082 63.864 118.698 63.288 119.466 62.856C120.234 62.408 121.25 62.184 122.514 62.184C124.21 62.184 125.498 62.568 126.378 63.336C127.258 64.104 127.698 65.208 127.698 66.648V72.552H128.946V75H127.242ZM122.154 73.056C122.842 73.056 123.426 72.904 123.906 72.6C124.386 72.296 124.626 71.848 124.626 71.256V69.6H122.658C121.058 69.6 120.258 70.112 120.258 71.136V71.544C120.258 72.056 120.418 72.44 120.738 72.696C121.074 72.936 121.546 73.056 122.154 73.056ZM134.504 75C133.448 75 132.672 74.736 132.176 74.208C131.68 73.68 131.432 72.936 131.432 71.976V57.24H134.504V72.552H136.16V75H134.504ZM141.395 75C140.339 75 139.563 74.736 139.067 74.208C138.571 73.68 138.323 72.936 138.323 71.976V57.24H141.395V72.552H143.051V75H141.395ZM154.594 75C153.922 75 153.386 74.808 152.986 74.424C152.602 74.024 152.362 73.496 152.266 72.84H152.122C151.914 73.656 151.49 74.272 150.85 74.688C150.21 75.088 149.418 75.288 148.474 75.288C147.194 75.288 146.21 74.952 145.522 74.28C144.834 73.608 144.49 72.712 144.49 71.592C144.49 70.296 144.954 69.336 145.882 68.712C146.81 68.072 148.13 67.752 149.842 67.752H151.978V66.84C151.978 66.136 151.794 65.592 151.426 65.208C151.058 64.824 150.466 64.632 149.65 64.632C148.93 64.632 148.346 64.792 147.898 65.112C147.466 65.416 147.098 65.784 146.794 66.216L144.97 64.584C145.434 63.864 146.05 63.288 146.818 62.856C147.586 62.408 148.602 62.184 149.866 62.184C151.562 62.184 152.85 62.568 153.73 63.336C154.61 64.104 155.05 65.208 155.05 66.648V72.552H156.298V75H154.594ZM149.506 73.056C150.194 73.056 150.778 72.904 151.258 72.6C151.738 72.296 151.978 71.848 151.978 71.256V69.6H150.01C148.41 69.6 147.61 70.112 147.61 71.136V71.544C147.61 72.056 147.77 72.44 148.09 72.696C148.426 72.936 148.898 73.056 149.506 73.056ZM158.784 57.24H161.856V64.536H161.952C162.176 63.816 162.6 63.248 163.224 62.832C163.848 62.4 164.576 62.184 165.408 62.184C167.008 62.184 168.224 62.752 169.056 63.888C169.904 65.008 170.328 66.616 170.328 68.712C170.328 70.824 169.904 72.448 169.056 73.584C168.224 74.72 167.008 75.288 165.408 75.288C164.576 75.288 163.848 75.072 163.224 74.64C162.616 74.208 162.192 73.632 161.952 72.912H161.856V75H158.784V57.24ZM164.424 72.744C165.224 72.744 165.872 72.48 166.368 71.952C166.864 71.424 167.112 70.712 167.112 69.816V67.656C167.112 66.76 166.864 66.048 166.368 65.52C165.872 64.976 165.224 64.704 164.424 64.704C163.688 64.704 163.072 64.888 162.576 65.256C162.096 65.624 161.856 66.112 161.856 66.72V70.704C161.856 71.36 162.096 71.864 162.576 72.216C163.072 72.568 163.688 72.744 164.424 72.744ZM180.644 62.472H183.523L178.484 77.232C178.324 77.68 178.14 78.064 177.932 78.384C177.74 78.72 177.508 78.992 177.236 79.2C176.964 79.408 176.636 79.56 176.252 79.656C175.868 79.752 175.42 79.8 174.908 79.8H173.06V77.352H175.316L175.892 75.6L171.404 62.472H174.452L176.636 69.096L177.452 72.264H177.596L178.46 69.096L180.644 62.472ZM196.268 76.056C196.268 76.712 196.148 77.288 195.908 77.784C195.684 78.296 195.308 78.72 194.78 79.056C194.252 79.392 193.572 79.648 192.74 79.824C191.908 80 190.892 80.088 189.692 80.088C188.636 80.088 187.74 80.016 187.004 79.872C186.268 79.744 185.66 79.552 185.18 79.296C184.716 79.056 184.38 78.752 184.172 78.384C183.964 78.016 183.86 77.6 183.86 77.136C183.86 76.432 184.052 75.88 184.436 75.48C184.836 75.096 185.388 74.848 186.092 74.736V74.472C185.58 74.344 185.18 74.096 184.892 73.728C184.62 73.344 184.484 72.896 184.484 72.384C184.484 72.064 184.548 71.784 184.676 71.544C184.804 71.288 184.972 71.072 185.18 70.896C185.404 70.72 185.652 70.576 185.924 70.464C186.196 70.336 186.484 70.24 186.788 70.176V70.08C186.02 69.728 185.444 69.24 185.06 68.616C184.692 67.992 184.508 67.264 184.508 66.432C184.508 65.152 184.948 64.128 185.828 63.36C186.708 62.576 187.996 62.184 189.692 62.184C190.076 62.184 190.452 62.208 190.82 62.256C191.204 62.304 191.556 62.384 191.876 62.496V62.088C191.876 60.872 192.468 60.264 193.652 60.264H195.596V62.616H192.932V62.952C193.588 63.32 194.076 63.8 194.396 64.392C194.716 64.984 194.876 65.664 194.876 66.432C194.876 67.696 194.436 68.712 193.556 69.48C192.692 70.248 191.404 70.632 189.692 70.632C188.956 70.632 188.316 70.56 187.772 70.416C187.532 70.528 187.324 70.68 187.148 70.872C186.972 71.048 186.884 71.272 186.884 71.544C186.884 72.168 187.428 72.48 188.516 72.48H191.876C193.412 72.48 194.524 72.8 195.212 73.44C195.916 74.064 196.268 74.936 196.268 76.056ZM193.388 76.416C193.388 76.016 193.228 75.704 192.908 75.48C192.588 75.256 192.036 75.144 191.252 75.144H186.98C186.548 75.464 186.332 75.896 186.332 76.44C186.332 76.92 186.532 77.296 186.932 77.568C187.332 77.84 188.012 77.976 188.972 77.976H190.508C191.516 77.976 192.244 77.848 192.692 77.592C193.156 77.336 193.388 76.944 193.388 76.416ZM189.692 68.544C191.196 68.544 191.948 67.904 191.948 66.624V66.216C191.948 64.936 191.196 64.296 189.692 64.296C188.188 64.296 187.436 64.936 187.436 66.216V66.624C187.436 67.904 188.188 68.544 189.692 68.544ZM209.486 76.056C209.486 76.712 209.366 77.288 209.126 77.784C208.902 78.296 208.526 78.72 207.998 79.056C207.47 79.392 206.79 79.648 205.958 79.824C205.126 80 204.11 80.088 202.91 80.088C201.854 80.088 200.958 80.016 200.222 79.872C199.486 79.744 198.878 79.552 198.398 79.296C197.934 79.056 197.598 78.752 197.39 78.384C197.182 78.016 197.078 77.6 197.078 77.136C197.078 76.432 197.27 75.88 197.654 75.48C198.054 75.096 198.606 74.848 199.31 74.736V74.472C198.798 74.344 198.398 74.096 198.11 73.728C197.838 73.344 197.702 72.896 197.702 72.384C197.702 72.064 197.766 71.784 197.894 71.544C198.022 71.288 198.19 71.072 198.398 70.896C198.622 70.72 198.87 70.576 199.142 70.464C199.414 70.336 199.702 70.24 200.006 70.176V70.08C199.238 69.728 198.662 69.24 198.278 68.616C197.91 67.992 197.726 67.264 197.726 66.432C197.726 65.152 198.166 64.128 199.046 63.36C199.926 62.576 201.214 62.184 202.91 62.184C203.294 62.184 203.67 62.208 204.038 62.256C204.422 62.304 204.774 62.384 205.094 62.496V62.088C205.094 60.872 205.686 60.264 206.87 60.264H208.814V62.616H206.15V62.952C206.806 63.32 207.294 63.8 207.614 64.392C207.934 64.984 208.094 65.664 208.094 66.432C208.094 67.696 207.654 68.712 206.774 69.48C205.91 70.248 204.622 70.632 202.91 70.632C202.174 70.632 201.534 70.56 200.99 70.416C200.75 70.528 200.542 70.68 200.366 70.872C200.19 71.048 200.102 71.272 200.102 71.544C200.102 72.168 200.646 72.48 201.734 72.48H205.094C206.63 72.48 207.742 72.8 208.43 73.44C209.134 74.064 209.486 74.936 209.486 76.056ZM206.606 76.416C206.606 76.016 206.446 75.704 206.126 75.48C205.806 75.256 205.254 75.144 204.47 75.144H200.198C199.766 75.464 199.55 75.896 199.55 76.44C199.55 76.92 199.75 77.296 200.15 77.568C200.55 77.84 201.23 77.976 202.19 77.976H203.726C204.734 77.976 205.462 77.848 205.91 77.592C206.374 77.336 206.606 76.944 206.606 76.416ZM202.91 68.544C204.414 68.544 205.166 67.904 205.166 66.624V66.216C205.166 64.936 204.414 64.296 202.91 64.296C201.406 64.296 200.654 64.936 200.654 66.216V66.624C200.654 67.904 201.406 68.544 202.91 68.544ZM220.408 58.224L218.632 59.376C219.736 60.528 220.624 61.856 221.296 63.36C221.968 64.864 222.304 66.536 222.304 68.376C222.304 69.56 222.16 70.592 221.872 71.472C221.584 72.336 221.176 73.056 220.648 73.632C220.136 74.192 219.52 74.608 218.8 74.88C218.08 75.152 217.28 75.288 216.4 75.288C215.456 75.288 214.608 75.144 213.856 74.856C213.12 74.552 212.488 74.128 211.96 73.584C211.448 73.04 211.056 72.376 210.784 71.592C210.512 70.808 210.376 69.936 210.376 68.976C210.376 68.08 210.488 67.264 210.712 66.528C210.952 65.792 211.288 65.16 211.72 64.632C212.152 64.104 212.672 63.696 213.28 63.408C213.904 63.12 214.592 62.976 215.344 62.976C216.208 62.976 216.928 63.192 217.504 63.624C218.096 64.04 218.56 64.608 218.896 65.328L219.04 65.256C218.848 64.44 218.504 63.664 218.008 62.928C217.528 62.192 216.944 61.488 216.256 60.816L214.192 62.112L213.088 60.792L214.96 59.664C214.4 59.2 213.808 58.768 213.184 58.368C212.576 57.968 211.96 57.592 211.336 57.24H216.016C216.24 57.368 216.456 57.52 216.664 57.696C216.872 57.856 217.088 58.024 217.312 58.2L219.328 56.928L220.408 58.224ZM216.352 72.936C217.2 72.936 217.872 72.664 218.368 72.12C218.864 71.576 219.112 70.816 219.112 69.84V68.448C219.112 67.472 218.864 66.712 218.368 66.168C217.872 65.624 217.2 65.352 216.352 65.352C215.488 65.352 214.808 65.624 214.312 66.168C213.816 66.712 213.568 67.472 213.568 68.448V69.84C213.568 70.816 213.816 71.576 214.312 72.12C214.808 72.664 215.488 72.936 216.352 72.936Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57866"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/fjardabyggd.svg b/libs/application/templates/financial-aid/src/svg/fjardabyggd.svg deleted file mode 100644 index 96291d67caf8..000000000000 --- a/libs/application/templates/financial-aid/src/svg/fjardabyggd.svg +++ /dev/null @@ -1,21 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57872)"> -<path d="M47.8528 96.0014C80.1825 80.5199 81.8408 59.8013 81.8408 59.8013V16H14V59.8013C14 59.8013 15.6597 80.5199 47.9908 96.0014" fill="#0054A6"/> -<path d="M29.477 29.1948L16.0723 42.6686H42.9493L29.477 29.1948ZM20.4048 41.3808L29.477 32.2142V35.4365L23.5326 41.3808H20.4048ZM26.4858 41.3329L29.6151 38.2924V41.2836L26.4858 41.3329Z" fill="white"/> -<path d="M66.0182 29.1948L52.6191 42.6686H79.4934L66.0182 29.1948ZM65.9492 41.2343L64.4768 39.7647L65.9492 38.1994V41.2343ZM65.9492 35.2491L63.0073 38.1994L61.5293 36.6369L65.9492 32.2142V35.2491Z" fill="white"/> -<path d="M55.3136 35.1589C57.806 35.1589 59.8265 33.1384 59.8265 30.646C59.8265 28.1537 57.806 26.1332 55.3136 26.1332C52.8213 26.1332 50.8008 28.1537 50.8008 30.646C50.8008 33.1384 52.8213 35.1589 55.3136 35.1589Z" fill="white"/> -<path d="M58.345 33.8147C57.5391 35.0405 56.1541 35.8549 54.5761 35.8549C52.0823 35.8549 50.0604 33.8288 50.0604 31.3448C50.0604 29.7626 50.8748 28.3762 52.1034 27.5689L47.7328 23.1955L28.3711 42.6671H67.1974L58.345 33.8147ZM37.1643 36.7242L47.7596 26.0824V29.261L38.7748 38.2924L37.1643 36.7242ZM40.2274 39.7873L47.7836 32.186V35.3646L41.8392 41.3526L40.2274 39.7873ZM47.8526 41.2836L44.7177 41.3329L47.8526 38.2924V41.2836Z" fill="white"/> -<path d="M73.8277 53.6343C67.3804 61.9697 60.8387 53.5653 60.8387 53.5653C54.2532 62.0331 47.9017 53.5653 47.9017 53.5653C41.0387 62.0796 34.7703 53.5653 34.7703 53.5653C28.416 62.0796 21.7812 53.7386 21.7812 53.7386V53.7175V49.6724C21.7812 49.6724 28.416 58.0077 34.7703 49.4822C34.7703 49.4822 41.0387 58.0077 47.9017 49.4822C47.9017 49.4822 54.2532 57.9584 60.8387 49.4822C60.8387 49.4822 67.3804 57.8175 73.8277 49.4822V53.671V53.6343Z" fill="white"/> -<path d="M73.8277 64.889C67.3804 73.23 60.8387 64.82 60.8387 64.82C54.2532 73.2878 47.9017 64.82 47.9017 64.82C41.0387 73.3371 34.7703 64.82 34.7703 64.82C28.416 73.3371 21.7812 65.0017 21.7812 65.0017V64.9736V60.9285C21.7812 60.9285 28.416 69.2582 34.7703 60.7411C34.7703 60.7411 41.0387 69.2582 47.9017 60.7411C47.9017 60.7411 54.2532 69.2173 60.8387 60.7411C60.8387 60.7411 67.3804 69.0792 73.8277 60.7411V64.9355V64.889Z" fill="white"/> -<path d="M60.8398 71.8647C54.2544 80.341 47.9029 71.8647 47.9029 71.8647C41.0399 80.3875 34.7715 71.8647 34.7715 71.8647V75.9408C34.7715 75.9408 41.0399 84.4635 47.9029 75.9408C47.9029 75.9408 54.2544 84.4227 60.8398 75.9408V71.8647Z" fill="white"/> -<path d="M60.9563 30.646C60.9563 28.6622 59.0539 27.0518 56.7179 27.0518C54.3852 27.0518 52.4795 28.6622 52.4795 30.646C52.4795 32.6326 54.3835 34.2402 56.7179 34.2402C59.0556 34.2388 60.9563 32.6326 60.9563 30.646Z" fill="#ED1C24"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 75V58.248H108.744V61.056H101.136V65.112H107.76V67.92H101.136V75H97.968ZM111.393 62.472H114.465V76.512C114.465 77.568 114.201 78.376 113.673 78.936C113.145 79.512 112.305 79.8 111.153 79.8H109.473V77.352H111.393V62.472ZM112.929 60.648C112.289 60.648 111.825 60.504 111.537 60.216C111.265 59.928 111.129 59.56 111.129 59.112V58.632C111.129 58.184 111.265 57.816 111.537 57.528C111.825 57.24 112.289 57.096 112.929 57.096C113.553 57.096 114.009 57.24 114.297 57.528C114.585 57.816 114.729 58.184 114.729 58.632V59.112C114.729 59.56 114.585 59.928 114.297 60.216C114.009 60.504 113.553 60.648 112.929 60.648ZM127.242 75C126.57 75 126.034 74.808 125.634 74.424C125.25 74.024 125.01 73.496 124.914 72.84H124.77C124.562 73.656 124.138 74.272 123.498 74.688C122.858 75.088 122.066 75.288 121.122 75.288C119.842 75.288 118.858 74.952 118.17 74.28C117.482 73.608 117.138 72.712 117.138 71.592C117.138 70.296 117.602 69.336 118.53 68.712C119.458 68.072 120.778 67.752 122.49 67.752H124.626V66.84C124.626 66.136 124.442 65.592 124.074 65.208C123.706 64.824 123.114 64.632 122.298 64.632C121.578 64.632 120.994 64.792 120.546 65.112C120.114 65.416 119.746 65.784 119.442 66.216L117.618 64.584C118.082 63.864 118.698 63.288 119.466 62.856C120.234 62.408 121.25 62.184 122.514 62.184C124.21 62.184 125.498 62.568 126.378 63.336C127.258 64.104 127.698 65.208 127.698 66.648V72.552H128.946V75H127.242ZM122.154 73.056C122.842 73.056 123.426 72.904 123.906 72.6C124.386 72.296 124.626 71.848 124.626 71.256V69.6H122.658C121.058 69.6 120.258 70.112 120.258 71.136V71.544C120.258 72.056 120.418 72.44 120.738 72.696C121.074 72.936 121.546 73.056 122.154 73.056ZM131.432 75V62.472H134.504V65.064H134.624C134.704 64.728 134.824 64.408 134.984 64.104C135.16 63.784 135.384 63.504 135.656 63.264C135.928 63.024 136.248 62.832 136.616 62.688C137 62.544 137.44 62.472 137.936 62.472H138.608V65.376H137.648C136.608 65.376 135.824 65.528 135.296 65.832C134.768 66.136 134.504 66.632 134.504 67.32V75H131.432ZM150.025 58.224L148.249 59.376C149.353 60.528 150.241 61.856 150.913 63.36C151.585 64.864 151.921 66.536 151.921 68.376C151.921 69.56 151.777 70.592 151.489 71.472C151.201 72.336 150.793 73.056 150.265 73.632C149.753 74.192 149.137 74.608 148.417 74.88C147.697 75.152 146.897 75.288 146.017 75.288C145.073 75.288 144.225 75.144 143.473 74.856C142.737 74.552 142.105 74.128 141.577 73.584C141.065 73.04 140.673 72.376 140.401 71.592C140.129 70.808 139.993 69.936 139.993 68.976C139.993 68.08 140.105 67.264 140.329 66.528C140.569 65.792 140.905 65.16 141.337 64.632C141.769 64.104 142.289 63.696 142.897 63.408C143.521 63.12 144.209 62.976 144.961 62.976C145.825 62.976 146.545 63.192 147.121 63.624C147.713 64.04 148.177 64.608 148.513 65.328L148.657 65.256C148.465 64.44 148.121 63.664 147.625 62.928C147.145 62.192 146.561 61.488 145.873 60.816L143.809 62.112L142.705 60.792L144.577 59.664C144.017 59.2 143.425 58.768 142.801 58.368C142.193 57.968 141.577 57.592 140.953 57.24H145.633C145.857 57.368 146.073 57.52 146.281 57.696C146.489 57.856 146.705 58.024 146.929 58.2L148.945 56.928L150.025 58.224ZM145.969 72.936C146.817 72.936 147.489 72.664 147.985 72.12C148.481 71.576 148.729 70.816 148.729 69.84V68.448C148.729 67.472 148.481 66.712 147.985 66.168C147.489 65.624 146.817 65.352 145.969 65.352C145.105 65.352 144.425 65.624 143.929 66.168C143.433 66.712 143.185 67.472 143.185 68.448V69.84C143.185 70.816 143.433 71.576 143.929 72.12C144.425 72.664 145.105 72.936 145.969 72.936ZM164.086 75C163.414 75 162.878 74.808 162.478 74.424C162.094 74.024 161.854 73.496 161.758 72.84H161.614C161.406 73.656 160.982 74.272 160.342 74.688C159.702 75.088 158.91 75.288 157.966 75.288C156.686 75.288 155.702 74.952 155.014 74.28C154.326 73.608 153.982 72.712 153.982 71.592C153.982 70.296 154.446 69.336 155.374 68.712C156.302 68.072 157.622 67.752 159.334 67.752H161.47V66.84C161.47 66.136 161.286 65.592 160.918 65.208C160.55 64.824 159.958 64.632 159.142 64.632C158.422 64.632 157.838 64.792 157.39 65.112C156.958 65.416 156.59 65.784 156.286 66.216L154.462 64.584C154.926 63.864 155.542 63.288 156.31 62.856C157.078 62.408 158.094 62.184 159.358 62.184C161.054 62.184 162.342 62.568 163.222 63.336C164.102 64.104 164.542 65.208 164.542 66.648V72.552H165.79V75H164.086ZM158.998 73.056C159.686 73.056 160.27 72.904 160.75 72.6C161.23 72.296 161.47 71.848 161.47 71.256V69.6H159.502C157.902 69.6 157.102 70.112 157.102 71.136V71.544C157.102 72.056 157.262 72.44 157.582 72.696C157.918 72.936 158.39 73.056 158.998 73.056ZM168.276 57.24H171.348V64.536H171.444C171.668 63.816 172.092 63.248 172.716 62.832C173.34 62.4 174.068 62.184 174.9 62.184C176.5 62.184 177.716 62.752 178.548 63.888C179.396 65.008 179.82 66.616 179.82 68.712C179.82 70.824 179.396 72.448 178.548 73.584C177.716 74.72 176.5 75.288 174.9 75.288C174.068 75.288 173.34 75.072 172.716 74.64C172.108 74.208 171.684 73.632 171.444 72.912H171.348V75H168.276V57.24ZM173.916 72.744C174.716 72.744 175.364 72.48 175.86 71.952C176.356 71.424 176.604 70.712 176.604 69.816V67.656C176.604 66.76 176.356 66.048 175.86 65.52C175.364 64.976 174.716 64.704 173.916 64.704C173.18 64.704 172.564 64.888 172.068 65.256C171.588 65.624 171.348 66.112 171.348 66.72V70.704C171.348 71.36 171.588 71.864 172.068 72.216C172.564 72.568 173.18 72.744 173.916 72.744ZM190.136 62.472H193.016L187.976 77.232C187.816 77.68 187.632 78.064 187.424 78.384C187.232 78.72 187 78.992 186.728 79.2C186.456 79.408 186.128 79.56 185.744 79.656C185.36 79.752 184.912 79.8 184.4 79.8H182.552V77.352H184.808L185.384 75.6L180.896 62.472H183.944L186.128 69.096L186.944 72.264H187.088L187.952 69.096L190.136 62.472ZM205.76 76.056C205.76 76.712 205.64 77.288 205.4 77.784C205.176 78.296 204.8 78.72 204.272 79.056C203.744 79.392 203.064 79.648 202.232 79.824C201.4 80 200.384 80.088 199.184 80.088C198.128 80.088 197.232 80.016 196.496 79.872C195.76 79.744 195.152 79.552 194.672 79.296C194.208 79.056 193.872 78.752 193.664 78.384C193.456 78.016 193.352 77.6 193.352 77.136C193.352 76.432 193.544 75.88 193.928 75.48C194.328 75.096 194.88 74.848 195.584 74.736V74.472C195.072 74.344 194.672 74.096 194.384 73.728C194.112 73.344 193.976 72.896 193.976 72.384C193.976 72.064 194.04 71.784 194.168 71.544C194.296 71.288 194.464 71.072 194.672 70.896C194.896 70.72 195.144 70.576 195.416 70.464C195.688 70.336 195.976 70.24 196.28 70.176V70.08C195.512 69.728 194.936 69.24 194.552 68.616C194.184 67.992 194 67.264 194 66.432C194 65.152 194.44 64.128 195.32 63.36C196.2 62.576 197.488 62.184 199.184 62.184C199.568 62.184 199.944 62.208 200.312 62.256C200.696 62.304 201.048 62.384 201.368 62.496V62.088C201.368 60.872 201.96 60.264 203.144 60.264H205.088V62.616H202.424V62.952C203.08 63.32 203.568 63.8 203.888 64.392C204.208 64.984 204.368 65.664 204.368 66.432C204.368 67.696 203.928 68.712 203.048 69.48C202.184 70.248 200.896 70.632 199.184 70.632C198.448 70.632 197.808 70.56 197.264 70.416C197.024 70.528 196.816 70.68 196.64 70.872C196.464 71.048 196.376 71.272 196.376 71.544C196.376 72.168 196.92 72.48 198.008 72.48H201.368C202.904 72.48 204.016 72.8 204.704 73.44C205.408 74.064 205.76 74.936 205.76 76.056ZM202.88 76.416C202.88 76.016 202.72 75.704 202.4 75.48C202.08 75.256 201.528 75.144 200.744 75.144H196.472C196.04 75.464 195.824 75.896 195.824 76.44C195.824 76.92 196.024 77.296 196.424 77.568C196.824 77.84 197.504 77.976 198.464 77.976H200C201.008 77.976 201.736 77.848 202.184 77.592C202.648 77.336 202.88 76.944 202.88 76.416ZM199.184 68.544C200.688 68.544 201.44 67.904 201.44 66.624V66.216C201.44 64.936 200.688 64.296 199.184 64.296C197.68 64.296 196.928 64.936 196.928 66.216V66.624C196.928 67.904 197.68 68.544 199.184 68.544ZM218.978 76.056C218.978 76.712 218.858 77.288 218.618 77.784C218.394 78.296 218.018 78.72 217.49 79.056C216.962 79.392 216.282 79.648 215.45 79.824C214.618 80 213.602 80.088 212.402 80.088C211.346 80.088 210.45 80.016 209.714 79.872C208.978 79.744 208.37 79.552 207.89 79.296C207.426 79.056 207.09 78.752 206.882 78.384C206.674 78.016 206.57 77.6 206.57 77.136C206.57 76.432 206.762 75.88 207.146 75.48C207.546 75.096 208.098 74.848 208.802 74.736V74.472C208.29 74.344 207.89 74.096 207.602 73.728C207.33 73.344 207.194 72.896 207.194 72.384C207.194 72.064 207.258 71.784 207.386 71.544C207.514 71.288 207.682 71.072 207.89 70.896C208.114 70.72 208.362 70.576 208.634 70.464C208.906 70.336 209.194 70.24 209.498 70.176V70.08C208.73 69.728 208.154 69.24 207.77 68.616C207.402 67.992 207.218 67.264 207.218 66.432C207.218 65.152 207.658 64.128 208.538 63.36C209.418 62.576 210.706 62.184 212.402 62.184C212.786 62.184 213.162 62.208 213.53 62.256C213.914 62.304 214.266 62.384 214.586 62.496V62.088C214.586 60.872 215.178 60.264 216.362 60.264H218.306V62.616H215.642V62.952C216.298 63.32 216.786 63.8 217.106 64.392C217.426 64.984 217.586 65.664 217.586 66.432C217.586 67.696 217.146 68.712 216.266 69.48C215.402 70.248 214.114 70.632 212.402 70.632C211.666 70.632 211.026 70.56 210.482 70.416C210.242 70.528 210.034 70.68 209.858 70.872C209.682 71.048 209.594 71.272 209.594 71.544C209.594 72.168 210.138 72.48 211.226 72.48H214.586C216.122 72.48 217.234 72.8 217.922 73.44C218.626 74.064 218.978 74.936 218.978 76.056ZM216.098 76.416C216.098 76.016 215.938 75.704 215.618 75.48C215.298 75.256 214.746 75.144 213.962 75.144H209.69C209.258 75.464 209.042 75.896 209.042 76.44C209.042 76.92 209.242 77.296 209.642 77.568C210.042 77.84 210.722 77.976 211.682 77.976H213.218C214.226 77.976 214.954 77.848 215.402 77.592C215.866 77.336 216.098 76.944 216.098 76.416ZM212.402 68.544C213.906 68.544 214.658 67.904 214.658 66.624V66.216C214.658 64.936 213.906 64.296 212.402 64.296C210.898 64.296 210.146 64.936 210.146 66.216V66.624C210.146 67.904 210.898 68.544 212.402 68.544ZM229.9 58.224L228.124 59.376C229.228 60.528 230.116 61.856 230.788 63.36C231.46 64.864 231.796 66.536 231.796 68.376C231.796 69.56 231.652 70.592 231.364 71.472C231.076 72.336 230.668 73.056 230.14 73.632C229.628 74.192 229.012 74.608 228.292 74.88C227.572 75.152 226.772 75.288 225.892 75.288C224.948 75.288 224.1 75.144 223.348 74.856C222.612 74.552 221.98 74.128 221.452 73.584C220.94 73.04 220.548 72.376 220.276 71.592C220.004 70.808 219.868 69.936 219.868 68.976C219.868 68.08 219.98 67.264 220.204 66.528C220.444 65.792 220.78 65.16 221.212 64.632C221.644 64.104 222.164 63.696 222.772 63.408C223.396 63.12 224.084 62.976 224.836 62.976C225.7 62.976 226.42 63.192 226.996 63.624C227.588 64.04 228.052 64.608 228.388 65.328L228.532 65.256C228.34 64.44 227.996 63.664 227.5 62.928C227.02 62.192 226.436 61.488 225.748 60.816L223.684 62.112L222.58 60.792L224.452 59.664C223.892 59.2 223.3 58.768 222.676 58.368C222.068 57.968 221.452 57.592 220.828 57.24H225.508C225.732 57.368 225.948 57.52 226.156 57.696C226.364 57.856 226.58 58.024 226.804 58.2L228.82 56.928L229.9 58.224ZM225.844 72.936C226.692 72.936 227.364 72.664 227.86 72.12C228.356 71.576 228.604 70.816 228.604 69.84V68.448C228.604 67.472 228.356 66.712 227.86 66.168C227.364 65.624 226.692 65.352 225.844 65.352C224.98 65.352 224.3 65.624 223.804 66.168C223.308 66.712 223.06 67.472 223.06 68.448V69.84C223.06 70.816 223.308 71.576 223.804 72.12C224.3 72.664 224.98 72.936 225.844 72.936Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57872"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/fljotsdalshreppur.svg b/libs/application/templates/financial-aid/src/svg/fljotsdalshreppur.svg deleted file mode 100644 index 92e9830d704d..000000000000 --- a/libs/application/templates/financial-aid/src/svg/fljotsdalshreppur.svg +++ /dev/null @@ -1,18 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57904)"> -<path d="M48.536 16.0339C38.324 16.0339 28.078 16.0679 17.866 16C16.3732 16 16 16.3393 16 17.866C16.0679 33.0653 16.0679 48.2646 16.0339 63.464C16.0339 70.3851 18.0017 76.6616 21.9712 82.3613C32.4207 97.3571 54.2358 100.58 68.4512 89.1468C73.3707 85.2112 76.8991 80.3596 78.9347 74.2528C79.9864 71.1315 80.8346 68.0441 80.8685 64.7871C80.9364 49.0789 80.9025 33.3707 80.9364 17.6624C80.9364 16.2714 80.4614 16 79.2061 16C68.9941 16.0679 58.7481 16.0339 48.536 16.0339Z" fill="#F8FAF7"/> -<path d="M48.536 16.0339C58.7481 16.0339 68.9941 16.0679 79.2061 16C80.4953 16 80.9364 16.2714 80.9364 17.6624C80.9025 33.3707 80.9364 49.0789 80.8685 64.7871C80.8685 68.0441 79.9864 71.1315 78.9347 74.2528C76.8991 80.3257 73.3707 85.1773 68.4512 89.1467C54.2019 100.58 32.4207 97.391 21.9712 82.3613C18.0017 76.6616 16.0339 70.3851 16.0339 63.4639C16.0679 48.2646 16.0679 33.0653 16 17.866C16 16.3393 16.3732 16 17.866 16C28.078 16.0679 38.324 16.0339 48.536 16.0339ZM77.8829 74.4563C78.4936 73.9474 78.4936 73.1671 78.7311 72.4885C80.2239 67.8405 80.0204 63.0229 80.0882 58.2053C80.1221 56.5089 79.715 56 77.9508 56C60.4444 56.0679 42.9381 56.0339 25.3978 56.0339C23.0908 56.0339 20.7498 56.1018 18.4427 56C17.1196 55.9321 16.7803 56.441 16.8142 57.6624C16.8821 59.8677 16.7803 62.0729 16.8821 64.2782C17.0517 68.1459 17.5267 71.9118 19.3588 75.4063C19.8677 77.6455 20.9194 79.1382 23.2943 79.9864C28.5191 81.8524 33.4046 81.6828 38.2222 78.799C41.1739 77.0348 43.6845 74.7277 46.3986 72.6921C51.9966 68.5191 57.5267 67.3316 63.9389 71.9796C66.8227 74.0831 69.8083 75.983 73.201 77.1705C76.6616 78.3919 77.1366 78.1204 77.8829 74.4563ZM25.9067 36.4919C26.1442 36.6276 26.3478 36.8651 26.5852 36.8991C33.2689 38.324 39.1383 41.4453 44.7023 45.2451C45.8558 46.0254 47.145 46.6701 48.3664 47.3486C48.8075 47.5861 49.2824 47.8575 49.7913 47.6879C52.3698 46.9075 55.05 46.4326 57.3232 44.8041C61.3944 41.8863 65.4656 39.0025 69.5708 36.1187C72.9296 35.3384 75.9152 33.4724 79.3079 32.8617C80.0882 32.726 80.0543 32.1154 80.0543 31.5725C80.0543 27.1281 80.0204 22.6497 80.0543 18.2053C80.0543 17.1535 79.6132 16.7803 78.6633 16.8482C78.1544 16.8821 77.6455 16.8482 77.1366 16.8482C58.307 16.8482 39.4436 16.8482 20.6141 16.8482C19.698 16.8482 18.8159 16.8821 17.8999 16.8482C17.2214 16.8142 16.8821 17.0857 16.8821 17.8321C16.8821 23.7693 16.916 29.6726 16.8821 35.6098C16.8821 36.3223 17.1196 36.6616 17.866 36.6276C20.5462 36.5598 23.2265 36.5259 25.9067 36.4919Z" fill="#018D01"/> -<path d="M25.9074 36.4919C23.2272 36.5259 20.5469 36.5598 17.8667 36.5937C17.1203 36.5937 16.8828 36.2544 16.8828 35.5759C16.8828 29.6387 16.8828 23.7354 16.8828 17.7981C16.8828 17.0517 17.2221 16.8142 17.9006 16.8142C18.8167 16.8482 19.6988 16.8142 20.6148 16.8142C39.4443 16.8142 58.3077 16.8142 77.1373 16.8142C77.6462 16.8142 78.1551 16.8482 78.664 16.8142C79.6479 16.7464 80.0889 17.1196 80.055 18.1713C80.0211 22.6158 80.055 27.0941 80.055 31.5386C80.055 32.0814 80.0889 32.6921 79.3086 32.8278C75.9159 33.4385 72.8964 35.3045 69.5715 36.0848C68.1127 35.4741 66.9252 33.9474 65.0932 34.4902C64.0414 34.7956 63.295 34.4902 62.4129 33.9813C60.0041 32.4885 57.3917 31.5725 54.6097 30.9618C52.0991 30.3851 49.5206 30.7583 47.0779 30.1136C45.2458 29.6047 43.8209 29.9779 42.3281 30.9618C40.2246 32.3868 37.748 33.1332 35.3052 32.9974C32.2518 32.8278 29.8429 33.8796 27.502 35.542C26.9931 35.9152 26.586 36.4241 25.9074 36.4919Z" fill="#97D4F8"/> -<path d="M19.3925 75.4402C17.5604 71.9457 17.0855 68.1459 16.9158 64.3121C16.814 62.1069 16.9497 59.9016 16.848 57.6963C16.814 56.475 17.1533 55.9661 18.4765 56.0339C20.7835 56.1357 23.1245 56.0678 25.4315 56.0678C42.9379 56.0678 60.4442 56.1018 77.9845 56.0339C79.7487 56.0339 80.1558 56.5428 80.1219 58.2392C80.0541 63.0568 80.2576 67.8405 78.7648 72.5225C78.5613 73.201 78.5613 73.9813 77.9167 74.4902C77.272 74.6259 77.0685 74.0831 76.7292 73.7438C74.049 71.0975 71.6402 68.1798 68.451 66.0763C63.7691 62.989 58.714 62.0729 53.3195 63.4639C48.8751 64.6175 44.8717 66.8566 40.9362 69.1298C34.2186 72.9635 27.3314 75.9491 19.3925 75.4402Z" fill="#97D4F8"/> -<path d="M25.9062 36.4919C26.5848 36.4241 26.9919 35.9152 27.4669 35.542C29.8079 33.8795 32.2506 32.8278 35.2701 32.9974C37.7129 33.1331 40.1895 32.3867 42.293 30.9618C43.7858 29.944 45.2107 29.6047 47.0428 30.1136C49.4856 30.7582 52.064 30.385 54.5746 30.9618C57.3566 31.6064 59.969 32.5225 62.3778 33.9813C63.226 34.5241 64.0063 34.8295 65.0581 34.4902C66.8901 33.9474 68.0776 35.4741 69.5364 36.0848C65.4652 38.9686 61.36 41.8524 57.2888 44.7701C55.0157 46.3986 52.3354 46.8736 49.757 47.6539C49.2141 47.8236 48.7731 47.5521 48.332 47.3146C47.1107 46.6361 45.8214 46.0254 44.6679 45.2112C39.1378 41.4453 33.2684 38.324 26.6187 36.933C26.3473 36.8651 26.1437 36.6616 25.9062 36.4919Z" fill="#F8FAF7"/> -<path d="M19.3926 75.4402C27.3315 75.9152 34.2187 72.9635 40.9023 69.0619C44.8379 66.7888 48.8413 64.5496 53.2857 63.3961C58.6801 62.0051 63.7352 62.9211 68.4172 66.0085C71.6063 68.112 74.0151 71.0636 76.6954 73.676C77.0346 74.0153 77.2382 74.5581 77.8828 74.4224C77.1364 78.0865 76.6615 78.3579 73.2348 77.1705C69.8421 75.983 66.8565 74.0831 63.9727 71.9796C57.5605 67.3316 52.0304 68.5191 46.4324 72.6921C43.7183 74.7277 41.2077 77.0348 38.256 78.799C33.4384 81.6828 28.5529 81.8524 23.3281 79.9864C20.9532 79.2061 19.8676 77.6794 19.3926 75.4402Z" fill="#F8FAF7"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 75V58.248H108.744V61.056H101.136V65.112H107.76V67.92H101.136V75H97.968ZM114.7 75C113.644 75 112.868 74.736 112.372 74.208C111.876 73.68 111.628 72.936 111.628 71.976V57.24H114.7V72.552H116.356V75H114.7ZM118.682 62.472H121.754V76.512C121.754 77.568 121.49 78.376 120.962 78.936C120.434 79.512 119.594 79.8 118.442 79.8H116.762V77.352H118.682V62.472ZM120.218 60.648C119.578 60.648 119.114 60.504 118.826 60.216C118.554 59.928 118.418 59.56 118.418 59.112V58.632C118.418 58.184 118.554 57.816 118.826 57.528C119.114 57.24 119.578 57.096 120.218 57.096C120.842 57.096 121.298 57.24 121.586 57.528C121.874 57.816 122.018 58.184 122.018 58.632V59.112C122.018 59.56 121.874 59.928 121.586 60.216C121.298 60.504 120.842 60.648 120.218 60.648ZM130.283 75.288C129.387 75.288 128.579 75.136 127.859 74.832C127.155 74.528 126.547 74.088 126.035 73.512C125.539 72.936 125.155 72.248 124.883 71.448C124.611 70.632 124.475 69.72 124.475 68.712C124.475 67.704 124.611 66.8 124.883 66C125.155 65.2 125.539 64.52 126.035 63.96C126.547 63.384 127.155 62.944 127.859 62.64C128.579 62.336 129.387 62.184 130.283 62.184C131.179 62.184 131.987 62.336 132.707 62.64C133.427 62.944 134.035 63.384 134.531 63.96C135.043 64.52 135.435 65.2 135.707 66C135.979 66.8 136.115 67.704 136.115 68.712C136.115 69.72 135.979 70.632 135.707 71.448C135.435 72.248 135.043 72.936 134.531 73.512C134.035 74.088 133.427 74.528 132.707 74.832C131.987 75.136 131.179 75.288 130.283 75.288ZM130.283 72.816C131.099 72.816 131.739 72.568 132.203 72.072C132.667 71.576 132.899 70.848 132.899 69.888V67.56C132.899 66.616 132.667 65.896 132.203 65.4C131.739 64.904 131.099 64.656 130.283 64.656C129.483 64.656 128.851 64.904 128.387 65.4C127.923 65.896 127.691 66.616 127.691 67.56V69.888C127.691 70.848 127.923 71.576 128.387 72.072C128.851 72.568 129.483 72.816 130.283 72.816ZM130.619 61.056L128.771 60.168L131.051 55.68L133.643 56.952L130.619 61.056ZM142.657 75C141.601 75 140.793 74.728 140.233 74.184C139.689 73.624 139.417 72.832 139.417 71.808V64.92H137.569V62.472H138.529C138.993 62.472 139.305 62.368 139.465 62.16C139.641 61.936 139.729 61.608 139.729 61.176V59.04H142.489V62.472H145.057V64.92H142.489V72.552H144.865V75H142.657ZM151.825 75.288C150.625 75.288 149.617 75.088 148.801 74.688C147.985 74.272 147.265 73.704 146.641 72.984L148.513 71.16C148.977 71.688 149.481 72.104 150.025 72.408C150.585 72.712 151.225 72.864 151.945 72.864C152.681 72.864 153.209 72.736 153.529 72.48C153.865 72.224 154.033 71.872 154.033 71.424C154.033 71.056 153.913 70.768 153.673 70.56C153.449 70.336 153.057 70.184 152.497 70.104L151.249 69.936C149.889 69.76 148.849 69.376 148.129 68.784C147.425 68.176 147.073 67.296 147.073 66.144C147.073 65.536 147.185 64.992 147.409 64.512C147.633 64.016 147.953 63.6 148.369 63.264C148.785 62.912 149.281 62.648 149.857 62.472C150.449 62.28 151.105 62.184 151.825 62.184C152.433 62.184 152.969 62.232 153.433 62.328C153.913 62.408 154.345 62.536 154.729 62.712C155.113 62.872 155.465 63.08 155.785 63.336C156.105 63.576 156.417 63.848 156.721 64.152L154.921 65.952C154.553 65.568 154.113 65.248 153.601 64.992C153.089 64.736 152.529 64.608 151.921 64.608C151.249 64.608 150.761 64.728 150.457 64.968C150.169 65.208 150.025 65.52 150.025 65.904C150.025 66.32 150.145 66.64 150.385 66.864C150.641 67.072 151.065 67.224 151.657 67.32L152.929 67.488C155.633 67.872 156.985 69.104 156.985 71.184C156.985 71.792 156.857 72.352 156.601 72.864C156.361 73.36 156.017 73.792 155.569 74.16C155.121 74.512 154.577 74.792 153.937 75C153.313 75.192 152.609 75.288 151.825 75.288ZM167.474 72.912H167.354C167.13 73.632 166.706 74.208 166.082 74.64C165.458 75.072 164.73 75.288 163.898 75.288C162.314 75.288 161.098 74.72 160.25 73.584C159.418 72.448 159.002 70.824 159.002 68.712C159.002 66.616 159.418 65.008 160.25 63.888C161.098 62.752 162.314 62.184 163.898 62.184C164.73 62.184 165.458 62.4 166.082 62.832C166.706 63.248 167.13 63.816 167.354 64.536H167.474V57.24H170.546V75H167.474V72.912ZM164.882 72.744C165.618 72.744 166.234 72.568 166.73 72.216C167.226 71.864 167.474 71.36 167.474 70.704V66.72C167.474 66.112 167.226 65.624 166.73 65.256C166.234 64.888 165.618 64.704 164.882 64.704C164.082 64.704 163.434 64.976 162.938 65.52C162.458 66.048 162.218 66.76 162.218 67.656V69.816C162.218 70.712 162.458 71.424 162.938 71.952C163.434 72.48 164.082 72.744 164.882 72.744ZM183.305 75C182.633 75 182.097 74.808 181.697 74.424C181.313 74.024 181.073 73.496 180.977 72.84H180.833C180.625 73.656 180.201 74.272 179.561 74.688C178.921 75.088 178.129 75.288 177.185 75.288C175.905 75.288 174.921 74.952 174.233 74.28C173.545 73.608 173.201 72.712 173.201 71.592C173.201 70.296 173.665 69.336 174.593 68.712C175.521 68.072 176.841 67.752 178.553 67.752H180.689V66.84C180.689 66.136 180.505 65.592 180.137 65.208C179.769 64.824 179.177 64.632 178.361 64.632C177.641 64.632 177.057 64.792 176.609 65.112C176.177 65.416 175.809 65.784 175.505 66.216L173.681 64.584C174.145 63.864 174.761 63.288 175.529 62.856C176.297 62.408 177.313 62.184 178.577 62.184C180.273 62.184 181.561 62.568 182.441 63.336C183.321 64.104 183.761 65.208 183.761 66.648V72.552H185.009V75H183.305ZM178.217 73.056C178.905 73.056 179.489 72.904 179.969 72.6C180.449 72.296 180.689 71.848 180.689 71.256V69.6H178.721C177.121 69.6 176.321 70.112 176.321 71.136V71.544C176.321 72.056 176.481 72.44 176.801 72.696C177.137 72.936 177.609 73.056 178.217 73.056ZM190.567 75C189.511 75 188.735 74.736 188.239 74.208C187.743 73.68 187.495 72.936 187.495 71.976V57.24H190.567V72.552H192.223V75H190.567ZM198.653 75.288C197.453 75.288 196.445 75.088 195.629 74.688C194.813 74.272 194.093 73.704 193.469 72.984L195.341 71.16C195.805 71.688 196.309 72.104 196.853 72.408C197.413 72.712 198.053 72.864 198.773 72.864C199.509 72.864 200.037 72.736 200.357 72.48C200.693 72.224 200.861 71.872 200.861 71.424C200.861 71.056 200.741 70.768 200.501 70.56C200.277 70.336 199.885 70.184 199.325 70.104L198.077 69.936C196.717 69.76 195.677 69.376 194.957 68.784C194.253 68.176 193.901 67.296 193.901 66.144C193.901 65.536 194.013 64.992 194.237 64.512C194.461 64.016 194.781 63.6 195.197 63.264C195.613 62.912 196.109 62.648 196.685 62.472C197.277 62.28 197.933 62.184 198.653 62.184C199.261 62.184 199.797 62.232 200.261 62.328C200.741 62.408 201.173 62.536 201.557 62.712C201.941 62.872 202.293 63.08 202.613 63.336C202.933 63.576 203.245 63.848 203.549 64.152L201.749 65.952C201.381 65.568 200.941 65.248 200.429 64.992C199.917 64.736 199.357 64.608 198.749 64.608C198.077 64.608 197.589 64.728 197.285 64.968C196.997 65.208 196.853 65.52 196.853 65.904C196.853 66.32 196.973 66.64 197.213 66.864C197.469 67.072 197.893 67.224 198.485 67.32L199.757 67.488C202.461 67.872 203.813 69.104 203.813 71.184C203.813 71.792 203.685 72.352 203.429 72.864C203.189 73.36 202.845 73.792 202.397 74.16C201.949 74.512 201.405 74.792 200.765 75C200.141 75.192 199.437 75.288 198.653 75.288ZM206.526 57.24H209.598V64.56H209.718C209.974 63.888 210.374 63.328 210.918 62.88C211.478 62.416 212.246 62.184 213.222 62.184C214.518 62.184 215.51 62.608 216.198 63.456C216.886 64.304 217.23 65.512 217.23 67.08V75H214.158V67.392C214.158 66.496 213.998 65.824 213.678 65.376C213.358 64.928 212.83 64.704 212.094 64.704C211.774 64.704 211.462 64.752 211.158 64.848C210.87 64.928 210.606 65.056 210.366 65.232C210.142 65.392 209.958 65.6 209.814 65.856C209.67 66.096 209.598 66.384 209.598 66.72V75H206.526V57.24ZM220.635 75V62.472H223.707V65.064H223.827C223.907 64.728 224.027 64.408 224.187 64.104C224.363 63.784 224.587 63.504 224.859 63.264C225.131 63.024 225.451 62.832 225.819 62.688C226.203 62.544 226.643 62.472 227.139 62.472H227.811V65.376H226.851C225.811 65.376 225.027 65.528 224.499 65.832C223.971 66.136 223.707 66.632 223.707 67.32V75H220.635ZM235.004 75.288C234.076 75.288 233.244 75.136 232.508 74.832C231.788 74.512 231.172 74.072 230.66 73.512C230.164 72.936 229.78 72.248 229.508 71.448C229.236 70.632 229.1 69.72 229.1 68.712C229.1 67.72 229.228 66.824 229.484 66.024C229.756 65.224 230.14 64.544 230.636 63.984C231.132 63.408 231.74 62.968 232.46 62.664C233.18 62.344 233.996 62.184 234.908 62.184C235.884 62.184 236.732 62.352 237.452 62.688C238.172 63.024 238.764 63.48 239.228 64.056C239.692 64.632 240.036 65.304 240.26 66.072C240.5 66.824 240.62 67.632 240.62 68.496V69.504H232.292V69.816C232.292 70.728 232.548 71.464 233.06 72.024C233.572 72.568 234.332 72.84 235.34 72.84C236.108 72.84 236.732 72.68 237.212 72.36C237.708 72.04 238.148 71.632 238.532 71.136L240.188 72.984C239.676 73.704 238.972 74.272 238.076 74.688C237.196 75.088 236.172 75.288 235.004 75.288ZM234.956 64.488C234.14 64.488 233.492 64.76 233.012 65.304C232.532 65.848 232.292 66.552 232.292 67.416V67.608H237.428V67.392C237.428 66.528 237.212 65.832 236.78 65.304C236.364 64.76 235.756 64.488 234.956 64.488ZM243.323 62.472H246.395V64.536H246.491C246.715 63.816 247.139 63.248 247.763 62.832C248.387 62.4 249.115 62.184 249.947 62.184C251.547 62.184 252.763 62.752 253.595 63.888C254.443 65.008 254.867 66.616 254.867 68.712C254.867 70.824 254.443 72.448 253.595 73.584C252.763 74.72 251.547 75.288 249.947 75.288C249.115 75.288 248.387 75.072 247.763 74.64C247.155 74.208 246.731 73.632 246.491 72.912H246.395V79.8H243.323V62.472ZM248.963 72.744C249.763 72.744 250.411 72.48 250.907 71.952C251.403 71.424 251.651 70.712 251.651 69.816V67.656C251.651 66.76 251.403 66.048 250.907 65.52C250.411 64.976 249.763 64.704 248.963 64.704C248.227 64.704 247.611 64.888 247.115 65.256C246.635 65.624 246.395 66.112 246.395 66.72V70.704C246.395 71.36 246.635 71.864 247.115 72.216C247.611 72.568 248.227 72.744 248.963 72.744ZM257.714 62.472H260.786V64.536H260.882C261.106 63.816 261.53 63.248 262.154 62.832C262.778 62.4 263.506 62.184 264.338 62.184C265.938 62.184 267.154 62.752 267.986 63.888C268.834 65.008 269.258 66.616 269.258 68.712C269.258 70.824 268.834 72.448 267.986 73.584C267.154 74.72 265.938 75.288 264.338 75.288C263.506 75.288 262.778 75.072 262.154 74.64C261.546 74.208 261.122 73.632 260.882 72.912H260.786V79.8H257.714V62.472ZM263.354 72.744C264.154 72.744 264.802 72.48 265.298 71.952C265.794 71.424 266.042 70.712 266.042 69.816V67.656C266.042 66.76 265.794 66.048 265.298 65.52C264.802 64.976 264.154 64.704 263.354 64.704C262.618 64.704 262.002 64.888 261.506 65.256C261.026 65.624 260.786 66.112 260.786 66.72V70.704C260.786 71.36 261.026 71.864 261.506 72.216C262.002 72.568 262.618 72.744 263.354 72.744ZM279.592 72.912H279.472C279.36 73.232 279.208 73.536 279.016 73.824C278.84 74.096 278.608 74.344 278.32 74.568C278.048 74.792 277.712 74.968 277.312 75.096C276.928 75.224 276.48 75.288 275.968 75.288C274.672 75.288 273.68 74.864 272.992 74.016C272.304 73.168 271.96 71.96 271.96 70.392V62.472H275.032V70.08C275.032 70.944 275.2 71.608 275.536 72.072C275.872 72.52 276.408 72.744 277.144 72.744C277.448 72.744 277.744 72.704 278.032 72.624C278.336 72.544 278.6 72.424 278.824 72.264C279.048 72.088 279.232 71.88 279.376 71.64C279.52 71.384 279.592 71.088 279.592 70.752V62.472H282.664V75H279.592V72.912ZM286.214 75V62.472H289.286V65.064H289.406C289.486 64.728 289.606 64.408 289.766 64.104C289.942 63.784 290.166 63.504 290.438 63.264C290.71 63.024 291.03 62.832 291.398 62.688C291.782 62.544 292.222 62.472 292.718 62.472H293.39V65.376H292.43C291.39 65.376 290.606 65.528 290.078 65.832C289.55 66.136 289.286 66.632 289.286 67.32V75H286.214Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57904"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/floahreppur.svg b/libs/application/templates/financial-aid/src/svg/floahreppur.svg deleted file mode 100644 index 640f4602c580..000000000000 --- a/libs/application/templates/financial-aid/src/svg/floahreppur.svg +++ /dev/null @@ -1,21 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57869)"> -<path d="M47.7194 16.024C37.9353 16.024 28.1511 16.048 18.3669 16C17.2638 16 17 16.2878 17 17.3909C17.048 31.3477 17.024 45.3285 17.024 59.3093C17.024 65.1127 18.4628 70.5324 21.3645 75.5204C27.1918 85.5204 35.9928 91.8513 46.6882 95.8321C47.4796 96.1199 48.1511 96.024 48.8705 95.7602C56.3285 93.0264 62.9233 88.9736 68.3669 83.1463C74.482 76.5995 78.271 68.9736 78.3429 59.8609C78.4388 45.6403 78.3669 31.4436 78.3909 17.223C78.3909 16.2878 78.1511 16.024 77.1918 16.024C67.3597 16.048 57.5516 16.024 47.7194 16.024Z" fill="#FDFEFE"/> -<path d="M47.7194 16.024C57.5516 16.024 67.3597 16.048 77.1918 16C78.1511 16 78.3909 16.2638 78.3909 17.199C78.3669 31.4197 78.4388 45.6163 78.3429 59.8369C78.295 68.9496 74.506 76.5755 68.3669 83.1223C62.9233 88.9496 56.3285 93.0024 48.8705 95.7362C48.1511 96 47.4796 96.0959 46.6882 95.8082C35.9928 91.8273 27.1918 85.4964 21.3645 75.4964C18.4628 70.5324 17.024 65.1127 17.024 59.3094C17.024 45.3285 17.048 31.3477 17 17.3909C17 16.2878 17.2638 16 18.3669 16C28.1511 16.048 37.9353 16.024 47.7194 16.024ZM29.542 81.6355C29.7338 81.2038 29.9257 80.8201 30.0935 80.4125C33.307 72.7626 36.4005 65.0648 39.7818 57.5108C41.4364 53.8177 42.4436 50.1487 42.06 46.1199C41.964 45.0168 41.6763 43.53 42.2278 42.8825C42.8753 42.1151 44.4101 42.7866 45.5372 42.6187C46.7602 42.4508 47.048 42.9065 47.048 44.1055C47 59.8369 47.024 75.5683 47.024 91.3237C47.024 91.6355 47.048 91.9712 47.024 92.283C47 92.6667 47.2638 92.7626 47.5516 92.7866C47.8873 92.8106 48.199 92.7386 48.247 92.307C48.271 91.9952 48.247 91.6595 48.247 91.3477C48.247 75.6883 48.247 60.0288 48.247 44.3693C48.247 44.0096 48.271 43.6499 48.247 43.2902C48.223 42.7626 48.4388 42.5947 48.9424 42.5947C50.0935 42.6187 51.2686 42.6427 52.4197 42.5947C53.1391 42.5707 53.3789 42.7626 53.3789 43.53C53.3309 45.8801 53.3549 48.2302 53.3069 50.6043C53.283 51.4916 53.4029 52.307 53.7626 53.1463C55.0096 56.0719 56.2086 59.0456 57.4077 61.9712C59.9976 68.2782 62.5875 74.5612 65.2014 80.8681C65.3453 81.2038 65.3213 81.9233 65.9448 81.7314C66.5923 81.5396 66.5923 80.8681 66.4245 80.3166C66.2806 79.8849 65.9928 79.5012 65.801 79.0695C62.2518 70.4604 58.6787 61.8513 55.1535 53.2182C54.8897 52.5947 54.53 52.0192 54.53 51.2998C54.554 48.6619 54.5779 46.024 54.554 43.3861C54.554 42.7386 54.7938 42.5707 55.3933 42.5947C56.4005 42.6427 57.4077 42.6667 58.3909 42.5947C59.3741 42.5228 59.7098 42.7866 59.6619 43.8177C59.5899 46.2398 59.6619 48.6859 59.6139 51.1319C59.5899 51.8753 59.8058 52.4029 60.3333 52.9305C62.5875 55.1367 64.8417 57.3429 67.048 59.5971C69.494 62.0911 71.9161 64.6571 74.3861 67.223C75.1535 66.1439 74.8897 65.5923 74.2662 64.9688C70.0216 60.7962 65.8249 56.5995 61.5803 52.4029C61.1487 51.9712 60.789 51.5875 60.789 50.8921C60.8369 48.446 60.8369 46.024 60.789 43.5779C60.789 42.8585 60.9808 42.5947 61.7242 42.6187C63.6906 42.6667 65.6331 42.5947 67.5995 42.6427C68.5588 42.6667 68.8225 42.4508 68.5588 41.4676C64.7218 27.1271 48.3669 20.7242 35.8729 28.7578C30.8369 31.9952 27.7674 36.6475 26.4724 42.6187C28.8465 42.6187 31.1247 42.6427 33.4029 42.5947C34.0743 42.5947 34.4101 42.6667 34.3861 43.482C34.3381 46 34.3621 48.518 34.3861 51.036C34.3861 51.5875 34.1703 51.8993 33.7866 52.259C29.47 56.4796 25.2014 60.7242 20.8609 64.9209C20.1894 65.5683 20.0695 66.1679 20.4293 66.9832C20.5492 66.9113 20.6211 66.8873 20.693 66.8393C25.5132 62.1151 30.3333 57.3909 35.1535 52.6667C35.5611 52.283 35.5851 51.8513 35.5851 51.3717C35.5851 48.8058 35.6091 46.2638 35.5612 43.6978C35.5372 42.9065 35.705 42.5228 36.5923 42.5947C37.6235 42.6667 38.6787 42.6667 39.7098 42.5947C40.5971 42.5228 40.765 42.8825 40.765 43.6978C40.717 46.024 40.741 48.3261 40.765 50.6523C40.765 51.3957 40.6211 52.0671 40.3333 52.7386C36.5204 61.7554 32.7314 70.7962 28.8945 79.8369C28.6547 80.5803 28.5588 81.1799 29.542 81.6355ZM47.6235 18.8537C38.6307 18.8537 29.6619 18.8777 20.6691 18.8297C19.7818 18.8297 19.542 19.0456 19.542 19.9568C19.5899 25.5444 19.5659 31.1319 19.5659 36.7194C19.5659 38.446 19.5659 40.1487 19.5659 41.8753C19.5659 42.211 19.47 42.6187 20.0456 42.6187C20.5012 42.6187 20.8369 42.5947 20.8609 42.0192C20.8609 41.8273 20.9568 41.6355 20.9808 41.4436C23.4029 28.8058 34.6739 19.5731 47.7194 19.5731C60.765 19.5731 72.036 28.8777 74.4341 41.6355C74.53 42.1631 74.482 42.7386 75.2734 42.6187C76.0647 42.4988 75.705 41.8513 75.705 41.4676C75.729 34.3693 75.705 27.247 75.753 20.1487C75.753 19.0935 75.5132 18.8297 74.4341 18.8297C65.5132 18.8537 56.5683 18.8537 47.6235 18.8537ZM47.7194 20.5324C35.2254 20.4604 24.1703 29.5252 21.8921 41.7554C21.8441 42.0192 21.5324 42.4269 21.988 42.5707C22.3477 42.6906 22.8273 42.7866 23.1151 42.4748C23.307 42.259 23.307 41.8753 23.3789 41.5635C25.753 30.1007 36.5683 20.6763 50.2374 22.0911C61.2446 23.2182 69.7098 31.012 72.036 41.7794C72.2038 42.5228 72.4916 42.7386 73.1391 42.6187C73.9784 42.4508 73.4988 41.8273 73.4029 41.4916C70.789 29.1894 60.2374 20.6043 47.7194 20.5324ZM47.4077 22.9305C46.4484 22.9065 45.2254 23.0024 44.0024 23.1703C34.4341 24.5372 26.1367 32.3789 24.2662 41.7794C24.0983 42.5707 24.3381 42.6187 24.9856 42.6427C25.729 42.6427 25.6811 42.1151 25.777 41.6835C26.7602 37.4628 28.7506 33.7698 31.8921 30.7962C38.1511 24.8489 45.6091 22.8585 53.8825 25.2086C62.2518 27.5827 67.5036 33.3141 69.6379 41.7794C69.8297 42.4988 70.1175 42.7626 70.765 42.6187C71.5803 42.4269 71.0767 41.8273 70.9808 41.4676C68.4149 30.5084 58.8705 22.9305 47.4077 22.9305Z" fill="#0352A5"/> -<path d="M29.5422 81.6355C28.559 81.1798 28.6549 80.5803 28.9667 79.8129C32.7796 70.7961 36.5926 61.7554 40.4055 52.7146C40.6933 52.0431 40.8372 51.3717 40.8372 50.6283C40.8132 48.3021 40.7892 46 40.8372 43.6738C40.8611 42.8825 40.6693 42.5228 39.782 42.5707C38.7508 42.6427 37.6957 42.6427 36.6645 42.5707C35.7772 42.4988 35.6093 42.8825 35.6333 43.6738C35.6813 46.2398 35.6333 48.7817 35.6573 51.3477C35.6573 51.8273 35.6093 52.259 35.2256 52.6427C30.4055 57.3669 25.5854 62.0911 20.7652 66.8153C20.7173 66.8633 20.6213 66.8873 20.5014 66.9592C20.1417 66.1438 20.2616 65.5683 20.9331 64.8968C25.2496 60.7002 29.5422 56.4556 33.8587 52.235C34.2185 51.8753 34.4583 51.5635 34.4583 51.012C34.4343 48.494 34.4103 45.976 34.4583 43.458C34.4822 42.6427 34.1465 42.5707 33.475 42.5707C31.1969 42.5947 28.9187 42.5947 26.5446 42.5947C27.8635 36.6235 30.9331 31.9712 35.9451 28.7338C48.4151 20.7002 64.794 27.1031 68.6309 41.4436C68.8947 42.4268 68.6309 42.6666 67.6717 42.6187C65.7053 42.5467 63.7628 42.6187 61.7964 42.5947C61.053 42.5707 60.8372 42.8345 60.8611 43.5539C60.9091 46 60.9091 48.422 60.8611 50.8681C60.8372 51.5635 61.2209 51.9712 61.6525 52.3789C65.8731 56.5755 70.0938 60.7721 74.3384 64.9448C74.9619 65.5683 75.2257 66.1438 74.4583 67.199C71.9882 64.6091 69.5902 62.0671 67.1201 59.5731C64.9139 57.3189 62.6597 55.1127 60.4055 52.9064C59.8779 52.3789 59.6621 51.8513 59.6861 51.1079C59.734 48.6618 59.6621 46.2398 59.734 43.7937C59.758 42.7626 59.4223 42.4748 58.4631 42.5707C57.4798 42.6666 56.4726 42.6187 55.4655 42.5707C54.8659 42.5467 54.6261 42.7146 54.6261 43.3621C54.6501 46 54.6261 48.6379 54.6021 51.2757C54.6021 51.9952 54.9619 52.5707 55.2256 53.1942C58.7748 61.8273 62.324 70.4364 65.8731 79.0455C66.041 79.4772 66.3527 79.8369 66.4966 80.2925C66.6645 80.8441 66.6885 81.4916 66.017 81.7074C65.3935 81.8992 65.4175 81.1798 65.2736 80.8441C62.6597 74.5611 60.0698 68.2542 57.4798 61.9472C56.2568 58.9976 55.0818 56.0479 53.8348 53.1223C53.4751 52.2829 53.3551 51.4676 53.3791 50.5803C53.4271 48.2302 53.3791 45.8561 53.4511 43.506C53.475 42.7626 53.2352 42.5467 52.4918 42.5707C51.3408 42.6187 50.1657 42.5947 49.0146 42.5707C48.511 42.5707 48.2712 42.7386 48.3192 43.2662C48.3432 43.6259 48.3192 43.9856 48.3192 44.3453C48.3192 60.0048 48.3192 75.6642 48.3192 91.3237C48.3192 91.6355 48.3192 91.9712 48.3192 92.2829C48.2952 92.7146 47.9595 92.7865 47.6237 92.7626C47.336 92.7386 47.0722 92.6426 47.0962 92.2589C47.1201 91.9472 47.0962 91.6115 47.0962 91.2997C47.0962 75.5683 47.0722 59.8369 47.1201 44.0815C47.1201 42.8585 46.8324 42.4268 45.6093 42.5947C44.4822 42.7626 42.9475 42.0911 42.3 42.8585C41.7484 43.506 42.0122 44.9928 42.1321 46.0959C42.5158 50.1486 41.5086 53.8177 39.8539 57.4868C36.4727 65.0407 33.3791 72.7386 30.1657 80.3884C29.9259 80.8201 29.734 81.2038 29.5422 81.6355ZM48.0554 37.2949C51.077 36.9112 53.7628 37.3189 55.9211 39.4532C56.3048 39.8369 56.5926 39.6451 56.9283 39.3573C57.9115 38.446 59.0866 37.9184 60.3815 37.5347C61.7964 37.1031 63.2592 37.271 64.77 37.3189C64.3384 36.5755 63.7628 36.3597 63.0434 36.3117C60.8611 36.1678 58.8468 36.6475 57.0962 37.9664C56.5446 38.3981 56.1609 38.3021 55.6573 37.9184C54.3623 36.9352 52.8755 36.3597 51.2448 36.2638C50.1177 36.1918 48.8707 35.928 48.0554 37.2949ZM56.089 31.5635C55.6093 30.7961 55.0098 30.5084 54.2424 30.4364C52.348 30.2925 50.5494 30.6283 49.0146 31.7074C47.9834 32.4268 47.312 32.4508 46.2568 31.7074C44.6261 30.5323 42.6837 30.1966 40.6933 30.4124C40.2616 30.4604 39.7101 30.6283 39.758 31.1079C39.806 31.5635 40.3575 31.2997 40.6693 31.2997C42.4199 31.2758 44.2664 31.3237 45.5614 32.4508C47.0962 33.7698 48.1273 33.6738 49.7101 32.5228C51.5086 31.2038 53.7628 31.1558 56.089 31.5635ZM47.0482 37.2949C46.7844 36.5755 46.2568 36.3117 45.5854 36.2398C43.4271 35.976 41.4367 36.4556 39.7101 37.7026C38.8707 38.3021 38.3911 38.1582 37.6717 37.6546C35.9211 36.4076 33.9307 35.952 31.7964 36.1678C31.3887 36.2158 30.8851 36.3357 30.8851 36.7674C30.9091 37.1271 31.4127 37.1031 31.7724 37.0791C34.2185 37.0072 36.4247 37.5827 38.2233 39.3333C38.535 39.6451 38.7508 39.693 39.1105 39.3813C41.4127 37.3669 44.0746 36.8153 47.0482 37.2949Z" fill="#FDFEFE"/> -<path d="M47.624 18.8537C56.5688 18.8537 65.5137 18.8777 74.4585 18.8297C75.5137 18.8297 75.7774 19.0935 75.7774 20.1487C75.7295 27.247 75.7535 34.3693 75.7295 41.4676C75.7295 41.8513 76.0892 42.4988 75.2978 42.6187C74.5065 42.7386 74.5544 42.163 74.4585 41.6355C72.0604 28.9017 60.7894 19.5971 47.7439 19.5731C34.6983 19.5731 23.4273 28.8057 21.0053 41.4436C20.9573 41.6355 20.8854 41.8273 20.8854 42.0192C20.8614 42.5707 20.5256 42.6187 20.07 42.6187C19.4945 42.6187 19.5904 42.211 19.5904 41.8753C19.5904 40.1487 19.5904 38.446 19.5904 36.7194C19.5904 31.1319 19.6144 25.5443 19.5664 19.9568C19.5664 19.0455 19.8062 18.8297 20.6935 18.8297C29.6623 18.8537 38.6312 18.8537 47.624 18.8537Z" fill="#FDFEFE"/> -<path d="M47.7195 20.5324C60.2375 20.6044 70.7891 29.1895 73.427 41.4677C73.4989 41.8274 74.0025 42.4509 73.1632 42.5948C72.5157 42.7147 72.2039 42.4988 72.0601 41.7554C69.7579 30.988 61.2927 23.1943 50.2615 22.0672C36.5684 20.6523 25.7771 30.0768 23.403 41.5396C23.331 41.8514 23.331 42.2351 23.1392 42.4509C22.8514 42.7626 22.3718 42.6667 22.0121 42.5468C21.5565 42.4029 21.8682 41.9952 21.9162 41.7315C24.1704 29.5252 35.2255 20.4605 47.7195 20.5324Z" fill="#FDFEFE"/> -<path d="M47.4076 22.9304C58.8705 22.9304 68.4148 30.5083 71.0047 41.4676C71.0767 41.8273 71.6043 42.4268 70.7889 42.6187C70.1414 42.7865 69.8537 42.4987 69.6618 41.7793C67.5036 33.3141 62.2757 27.5827 53.9064 25.2086C45.633 22.8585 38.175 24.8489 31.916 30.7961C28.7745 33.7458 26.7841 37.4388 25.8009 41.6834C25.705 42.1151 25.729 42.6426 25.0095 42.6426C24.3621 42.6426 24.1223 42.5707 24.2901 41.7793C26.1606 32.3788 34.458 24.5371 44.0263 23.1702C45.2254 23.0023 46.4484 22.9064 47.4076 22.9304Z" fill="#FDFEFE"/> -<path d="M48.0547 37.295C48.894 35.9281 50.117 36.1919 51.2202 36.2638C52.8509 36.3598 54.3377 36.9353 55.6326 37.9185C56.1602 38.3262 56.5199 38.3981 57.0715 37.9665C58.8221 36.6235 60.8365 36.1679 63.0187 36.3118C63.7381 36.3598 64.3137 36.5756 64.7453 37.319C63.2345 37.295 61.7717 37.1271 60.3568 37.5348C59.0859 37.9185 57.8868 38.4461 56.9036 39.3574C56.5919 39.6451 56.3041 39.837 55.8964 39.4533C53.7381 37.319 51.0523 36.9113 48.0547 37.295Z" fill="#0352A5"/> -<path d="M56.0898 31.5636C53.7877 31.1559 51.5335 31.2278 49.7109 32.5468C48.1282 33.6978 47.097 33.7698 45.5623 32.4748C44.2673 31.3477 42.3968 31.2998 40.6702 31.3237C40.3584 31.3237 39.8069 31.5875 39.7589 31.1319C39.7109 30.6283 40.2385 30.4844 40.6942 30.4365C42.7085 30.2206 44.651 30.5564 46.2577 31.7314C47.2889 32.4748 47.9843 32.4508 49.0155 31.7314C50.5503 30.6523 52.3728 30.3166 54.2433 30.4604C55.0107 30.4844 55.6102 30.7722 56.0898 31.5636Z" fill="#0352A5"/> -<path d="M47.0487 37.295C44.075 36.8153 41.3892 37.3669 39.111 39.3813C38.7513 39.693 38.5355 39.6451 38.2237 39.3333C36.4252 37.5588 34.2189 37.0072 31.7729 37.0791C31.4132 37.0791 30.8856 37.1271 30.8856 36.7674C30.8616 36.3357 31.3652 36.2158 31.7969 36.1679C33.9312 35.976 35.9216 36.4077 37.6722 37.6547C38.3916 38.1583 38.8712 38.3261 39.7105 37.7026C41.4371 36.4556 43.4276 35.976 45.5858 36.2398C46.2573 36.3118 46.7849 36.5755 47.0487 37.295Z" fill="#0352A5"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 75V58.248H108.744V61.056H101.136V65.112H107.76V67.92H101.136V75H97.968ZM114.7 75C113.644 75 112.868 74.736 112.372 74.208C111.876 73.68 111.628 72.936 111.628 71.976V57.24H114.7V72.552H116.356V75H114.7ZM123.65 75.288C122.754 75.288 121.946 75.136 121.226 74.832C120.522 74.528 119.914 74.088 119.402 73.512C118.906 72.936 118.522 72.248 118.25 71.448C117.978 70.632 117.842 69.72 117.842 68.712C117.842 67.704 117.978 66.8 118.25 66C118.522 65.2 118.906 64.52 119.402 63.96C119.914 63.384 120.522 62.944 121.226 62.64C121.946 62.336 122.754 62.184 123.65 62.184C124.546 62.184 125.354 62.336 126.074 62.64C126.794 62.944 127.402 63.384 127.898 63.96C128.41 64.52 128.802 65.2 129.074 66C129.346 66.8 129.482 67.704 129.482 68.712C129.482 69.72 129.346 70.632 129.074 71.448C128.802 72.248 128.41 72.936 127.898 73.512C127.402 74.088 126.794 74.528 126.074 74.832C125.354 75.136 124.546 75.288 123.65 75.288ZM123.65 72.816C124.466 72.816 125.106 72.568 125.57 72.072C126.034 71.576 126.266 70.848 126.266 69.888V67.56C126.266 66.616 126.034 65.896 125.57 65.4C125.106 64.904 124.466 64.656 123.65 64.656C122.85 64.656 122.218 64.904 121.754 65.4C121.29 65.896 121.058 66.616 121.058 67.56V69.888C121.058 70.848 121.29 71.576 121.754 72.072C122.218 72.568 122.85 72.816 123.65 72.816ZM123.986 61.056L122.138 60.168L124.418 55.68L127.01 56.952L123.986 61.056ZM141.422 75C140.75 75 140.214 74.808 139.814 74.424C139.43 74.024 139.19 73.496 139.094 72.84H138.95C138.742 73.656 138.318 74.272 137.678 74.688C137.038 75.088 136.246 75.288 135.302 75.288C134.022 75.288 133.038 74.952 132.35 74.28C131.662 73.608 131.318 72.712 131.318 71.592C131.318 70.296 131.782 69.336 132.71 68.712C133.638 68.072 134.958 67.752 136.67 67.752H138.806V66.84C138.806 66.136 138.622 65.592 138.254 65.208C137.886 64.824 137.294 64.632 136.478 64.632C135.758 64.632 135.174 64.792 134.726 65.112C134.294 65.416 133.926 65.784 133.622 66.216L131.798 64.584C132.262 63.864 132.878 63.288 133.646 62.856C134.414 62.408 135.43 62.184 136.694 62.184C138.39 62.184 139.678 62.568 140.558 63.336C141.438 64.104 141.878 65.208 141.878 66.648V72.552H143.126V75H141.422ZM136.334 73.056C137.022 73.056 137.606 72.904 138.086 72.6C138.566 72.296 138.806 71.848 138.806 71.256V69.6H136.838C135.238 69.6 134.438 70.112 134.438 71.136V71.544C134.438 72.056 134.598 72.44 134.918 72.696C135.254 72.936 135.726 73.056 136.334 73.056ZM145.612 57.24H148.684V64.56H148.804C149.06 63.888 149.46 63.328 150.004 62.88C150.564 62.416 151.332 62.184 152.308 62.184C153.604 62.184 154.596 62.608 155.284 63.456C155.972 64.304 156.316 65.512 156.316 67.08V75H153.244V67.392C153.244 66.496 153.084 65.824 152.764 65.376C152.444 64.928 151.916 64.704 151.18 64.704C150.86 64.704 150.548 64.752 150.244 64.848C149.956 64.928 149.692 65.056 149.452 65.232C149.228 65.392 149.044 65.6 148.9 65.856C148.756 66.096 148.684 66.384 148.684 66.72V75H145.612V57.24ZM159.721 75V62.472H162.793V65.064H162.913C162.993 64.728 163.113 64.408 163.273 64.104C163.449 63.784 163.673 63.504 163.945 63.264C164.217 63.024 164.537 62.832 164.905 62.688C165.289 62.544 165.729 62.472 166.225 62.472H166.897V65.376H165.937C164.897 65.376 164.113 65.528 163.585 65.832C163.057 66.136 162.793 66.632 162.793 67.32V75H159.721ZM174.09 75.288C173.162 75.288 172.33 75.136 171.594 74.832C170.874 74.512 170.258 74.072 169.746 73.512C169.25 72.936 168.866 72.248 168.594 71.448C168.322 70.632 168.186 69.72 168.186 68.712C168.186 67.72 168.314 66.824 168.57 66.024C168.842 65.224 169.226 64.544 169.722 63.984C170.218 63.408 170.826 62.968 171.546 62.664C172.266 62.344 173.082 62.184 173.994 62.184C174.97 62.184 175.818 62.352 176.538 62.688C177.258 63.024 177.85 63.48 178.314 64.056C178.778 64.632 179.122 65.304 179.346 66.072C179.586 66.824 179.706 67.632 179.706 68.496V69.504H171.378V69.816C171.378 70.728 171.634 71.464 172.146 72.024C172.658 72.568 173.418 72.84 174.426 72.84C175.194 72.84 175.818 72.68 176.298 72.36C176.794 72.04 177.234 71.632 177.618 71.136L179.274 72.984C178.762 73.704 178.058 74.272 177.162 74.688C176.282 75.088 175.258 75.288 174.09 75.288ZM174.042 64.488C173.226 64.488 172.578 64.76 172.098 65.304C171.618 65.848 171.378 66.552 171.378 67.416V67.608H176.514V67.392C176.514 66.528 176.298 65.832 175.866 65.304C175.45 64.76 174.842 64.488 174.042 64.488ZM182.409 62.472H185.481V64.536H185.577C185.801 63.816 186.225 63.248 186.849 62.832C187.473 62.4 188.201 62.184 189.033 62.184C190.633 62.184 191.849 62.752 192.681 63.888C193.529 65.008 193.953 66.616 193.953 68.712C193.953 70.824 193.529 72.448 192.681 73.584C191.849 74.72 190.633 75.288 189.033 75.288C188.201 75.288 187.473 75.072 186.849 74.64C186.241 74.208 185.817 73.632 185.577 72.912H185.481V79.8H182.409V62.472ZM188.049 72.744C188.849 72.744 189.497 72.48 189.993 71.952C190.489 71.424 190.737 70.712 190.737 69.816V67.656C190.737 66.76 190.489 66.048 189.993 65.52C189.497 64.976 188.849 64.704 188.049 64.704C187.313 64.704 186.697 64.888 186.201 65.256C185.721 65.624 185.481 66.112 185.481 66.72V70.704C185.481 71.36 185.721 71.864 186.201 72.216C186.697 72.568 187.313 72.744 188.049 72.744ZM196.799 62.472H199.871V64.536H199.967C200.191 63.816 200.615 63.248 201.239 62.832C201.863 62.4 202.591 62.184 203.423 62.184C205.023 62.184 206.239 62.752 207.071 63.888C207.919 65.008 208.343 66.616 208.343 68.712C208.343 70.824 207.919 72.448 207.071 73.584C206.239 74.72 205.023 75.288 203.423 75.288C202.591 75.288 201.863 75.072 201.239 74.64C200.631 74.208 200.207 73.632 199.967 72.912H199.871V79.8H196.799V62.472ZM202.439 72.744C203.239 72.744 203.887 72.48 204.383 71.952C204.879 71.424 205.127 70.712 205.127 69.816V67.656C205.127 66.76 204.879 66.048 204.383 65.52C203.887 64.976 203.239 64.704 202.439 64.704C201.703 64.704 201.087 64.888 200.591 65.256C200.111 65.624 199.871 66.112 199.871 66.72V70.704C199.871 71.36 200.111 71.864 200.591 72.216C201.087 72.568 201.703 72.744 202.439 72.744ZM218.678 72.912H218.558C218.446 73.232 218.294 73.536 218.102 73.824C217.926 74.096 217.694 74.344 217.406 74.568C217.134 74.792 216.798 74.968 216.398 75.096C216.014 75.224 215.566 75.288 215.054 75.288C213.758 75.288 212.766 74.864 212.078 74.016C211.39 73.168 211.046 71.96 211.046 70.392V62.472H214.118V70.08C214.118 70.944 214.286 71.608 214.622 72.072C214.958 72.52 215.494 72.744 216.23 72.744C216.534 72.744 216.83 72.704 217.118 72.624C217.422 72.544 217.686 72.424 217.91 72.264C218.134 72.088 218.318 71.88 218.462 71.64C218.606 71.384 218.678 71.088 218.678 70.752V62.472H221.75V75H218.678V72.912ZM225.299 75V62.472H228.371V65.064H228.491C228.571 64.728 228.691 64.408 228.851 64.104C229.027 63.784 229.251 63.504 229.523 63.264C229.795 63.024 230.115 62.832 230.483 62.688C230.867 62.544 231.307 62.472 231.803 62.472H232.475V65.376H231.515C230.475 65.376 229.691 65.528 229.163 65.832C228.635 66.136 228.371 66.632 228.371 67.32V75H225.299Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57869"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/gardabaer.svg b/libs/application/templates/financial-aid/src/svg/gardabaer.svg deleted file mode 100644 index a09a6d70e6ba..000000000000 --- a/libs/application/templates/financial-aid/src/svg/gardabaer.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M17 16V55.6496C17 61.3567 17.4005 64.8611 19.6033 70.1677C20.1039 71.4693 20.5044 72.1702 21.2053 73.4718C27.2128 84.5857 34.1214 89.3917 45.5357 94.7985C46.637 95.2991 47.2378 95.5995 48.3392 96C49.4406 95.4994 50.0413 95.2991 51.1427 94.7985C62.5569 89.3917 69.5657 84.5857 75.4731 73.4718C76.174 72.2703 76.4743 71.4693 77.0751 70.1677C79.2778 64.8611 79.6783 61.3567 79.6783 55.6496V16H17ZM79.5782 55.6496C79.5782 56.6508 79.5782 57.5519 79.5782 58.3529C79.2778 58.5532 78.1765 58.9537 76.5745 58.9537H71.4681C70.0663 58.9537 67.8636 59.0538 66.0613 60.7559C64.3592 62.3579 61.7559 65.6621 59.8536 67.3642C57.3504 69.4668 53.3454 71.4693 48.5394 71.4693C43.7334 71.4693 39.7284 69.4668 37.2253 67.3642C35.2228 65.6621 32.6195 62.3579 31.0175 60.7559C29.2153 58.9537 27.0125 58.9537 25.6108 58.9537H20.3041C18.7021 58.9537 17.6008 58.4531 17.3004 58.3529C17.3004 57.4518 17.3004 56.5507 17.3004 55.6496V53.9474C17.7009 54.2478 19.5031 55.3492 22.4068 55.3492C22.4068 55.3492 26.8123 55.2491 28.1139 55.3492C28.9149 55.3492 31.2178 55.7497 33.02 57.3517C34.7222 58.9537 36.4243 61.3567 38.3267 63.1589C40.7297 65.3617 43.7334 67.3642 48.5394 67.3642C53.3454 67.3642 56.3492 65.3617 58.7522 63.1589C60.6546 61.3567 62.3567 58.9537 64.0588 57.3517C65.8611 55.7497 68.164 55.4493 68.965 55.3492C70.2666 55.2491 74.6721 55.3492 74.6721 55.3492C77.6758 55.3492 79.4781 54.2478 79.7785 53.9474V55.6496H79.5782ZM77.1752 67.0638C77.1752 67.0638 74.1715 67.164 72.8698 67.164C70.1665 67.164 68.965 69.1665 67.4631 70.8686C66.3617 72.1702 63.8586 75.3742 60.0538 77.577C57.2503 79.179 53.2453 81.0814 48.4393 81.0814C43.6333 81.0814 39.6283 79.179 36.8248 77.577C32.9199 75.3742 30.4168 72.1702 29.4155 70.8686C27.9136 69.0663 26.7121 67.0638 23.9086 67.0638C22.607 67.0638 19.6033 67.0638 19.6033 67.0638C19.2028 67.0638 18.8023 66.9637 18.602 66.8636C18.1014 65.3617 17.801 64.0601 17.6008 62.6583C17.801 62.7584 18.602 63.0588 19.7034 63.0588H24.3091C25.7109 63.0588 27.3129 62.9587 29.1151 64.761C30.8173 66.363 32.8198 69.4668 36.4243 72.2703C39.0275 74.2728 43.5332 76.2753 48.3392 76.2753C53.1452 76.2753 57.6508 74.2728 60.2541 72.2703C63.8586 69.567 65.8611 66.4631 67.5632 64.761C69.3655 62.9587 70.9675 63.0588 72.3692 63.0588H77.0751C78.1765 63.0588 78.9775 62.7584 79.1777 62.6583C78.9775 64.0601 78.6771 65.4618 78.1765 66.8636C77.9762 66.9637 77.5757 67.0638 77.1752 67.0638ZM73.4706 51.7447H67.9637C66.1615 51.7447 63.6583 52.3454 61.7559 53.8473C59.9537 55.3492 57.3504 59.0538 55.5482 60.5557C53.6458 62.1577 51.4431 63.1589 48.3392 63.1589C45.2353 63.1589 43.0325 62.0576 41.1302 60.5557C39.3279 59.0538 36.7247 55.3492 34.9224 53.8473C33.1201 52.3454 30.5169 51.7447 28.7146 51.7447H23.3079C19.403 51.7447 17.6008 49.6421 17.2003 49.2416V43.9349C17.5006 45.1364 19.0025 48.5407 25.3104 48.5407C32.4193 48.5407 35.3229 45.2365 37.1252 43.3342C37.1252 43.3342 43.3329 35.4243 45.2353 33.3217C46.9374 31.3191 47.8385 31.3191 48.4393 31.3191C48.9399 31.3191 49.841 31.4193 51.6433 33.3217C53.4456 35.4243 59.7534 43.3342 59.7534 43.3342C61.5557 45.2365 64.4593 48.5407 71.5682 48.5407C77.8761 48.5407 79.378 45.1364 79.6783 43.9349V49.2416C79.1777 49.7422 77.3755 51.7447 73.4706 51.7447Z" fill="#007439"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.648 72.408H108.552C108.408 73.224 107.952 73.912 107.184 74.472C106.432 75.016 105.424 75.288 104.16 75.288C103.168 75.288 102.248 75.104 101.4 74.736C100.568 74.368 99.84 73.824 99.216 73.104C98.608 72.368 98.128 71.464 97.776 70.392C97.424 69.32 97.248 68.08 97.248 66.672C97.248 65.264 97.424 64.024 97.776 62.952C98.144 61.864 98.656 60.952 99.312 60.216C99.968 59.48 100.752 58.92 101.664 58.536C102.576 58.152 103.592 57.96 104.712 57.96C106.216 57.96 107.496 58.288 108.552 58.944C109.608 59.6 110.44 60.544 111.048 61.776L108.48 63.288C108.176 62.568 107.72 61.968 107.112 61.488C106.52 61.008 105.72 60.768 104.712 60.768C103.464 60.768 102.464 61.152 101.712 61.92C100.976 62.672 100.608 63.792 100.608 65.28V67.968C100.608 69.44 100.984 70.56 101.736 71.328C102.488 72.096 103.496 72.48 104.76 72.48C105.256 72.48 105.72 72.424 106.152 72.312C106.584 72.184 106.96 72 107.28 71.76C107.6 71.52 107.856 71.224 108.048 70.872C108.24 70.52 108.336 70.104 108.336 69.624V68.544H105.048V65.88H111.384V75H108.648V72.408ZM124.078 75C123.406 75 122.87 74.808 122.47 74.424C122.086 74.024 121.846 73.496 121.75 72.84H121.606C121.398 73.656 120.974 74.272 120.334 74.688C119.694 75.088 118.902 75.288 117.958 75.288C116.678 75.288 115.694 74.952 115.006 74.28C114.318 73.608 113.974 72.712 113.974 71.592C113.974 70.296 114.438 69.336 115.366 68.712C116.294 68.072 117.614 67.752 119.326 67.752H121.462V66.84C121.462 66.136 121.278 65.592 120.91 65.208C120.542 64.824 119.95 64.632 119.134 64.632C118.414 64.632 117.83 64.792 117.382 65.112C116.95 65.416 116.582 65.784 116.278 66.216L114.454 64.584C114.918 63.864 115.534 63.288 116.302 62.856C117.07 62.408 118.086 62.184 119.35 62.184C121.046 62.184 122.334 62.568 123.214 63.336C124.094 64.104 124.534 65.208 124.534 66.648V72.552H125.782V75H124.078ZM118.99 73.056C119.678 73.056 120.262 72.904 120.742 72.6C121.222 72.296 121.462 71.848 121.462 71.256V69.6H119.494C117.894 69.6 117.094 70.112 117.094 71.136V71.544C117.094 72.056 117.254 72.44 117.574 72.696C117.91 72.936 118.382 73.056 118.99 73.056ZM128.268 75V62.472H131.34V65.064H131.46C131.54 64.728 131.66 64.408 131.82 64.104C131.996 63.784 132.22 63.504 132.492 63.264C132.764 63.024 133.084 62.832 133.452 62.688C133.836 62.544 134.276 62.472 134.772 62.472H135.444V65.376H134.484C133.444 65.376 132.66 65.528 132.132 65.832C131.604 66.136 131.34 66.632 131.34 67.32V75H128.268ZM146.861 58.224L145.085 59.376C146.189 60.528 147.077 61.856 147.749 63.36C148.421 64.864 148.757 66.536 148.757 68.376C148.757 69.56 148.613 70.592 148.325 71.472C148.037 72.336 147.629 73.056 147.101 73.632C146.589 74.192 145.973 74.608 145.253 74.88C144.533 75.152 143.733 75.288 142.853 75.288C141.909 75.288 141.061 75.144 140.309 74.856C139.573 74.552 138.941 74.128 138.413 73.584C137.901 73.04 137.509 72.376 137.237 71.592C136.965 70.808 136.829 69.936 136.829 68.976C136.829 68.08 136.941 67.264 137.165 66.528C137.405 65.792 137.741 65.16 138.173 64.632C138.605 64.104 139.125 63.696 139.733 63.408C140.357 63.12 141.045 62.976 141.797 62.976C142.661 62.976 143.381 63.192 143.957 63.624C144.549 64.04 145.013 64.608 145.349 65.328L145.493 65.256C145.301 64.44 144.957 63.664 144.461 62.928C143.981 62.192 143.397 61.488 142.709 60.816L140.645 62.112L139.541 60.792L141.413 59.664C140.853 59.2 140.261 58.768 139.637 58.368C139.029 57.968 138.413 57.592 137.789 57.24H142.469C142.693 57.368 142.909 57.52 143.117 57.696C143.325 57.856 143.541 58.024 143.765 58.2L145.781 56.928L146.861 58.224ZM142.805 72.936C143.653 72.936 144.325 72.664 144.821 72.12C145.317 71.576 145.565 70.816 145.565 69.84V68.448C145.565 67.472 145.317 66.712 144.821 66.168C144.325 65.624 143.653 65.352 142.805 65.352C141.941 65.352 141.261 65.624 140.765 66.168C140.269 66.712 140.021 67.472 140.021 68.448V69.84C140.021 70.816 140.269 71.576 140.765 72.12C141.261 72.664 141.941 72.936 142.805 72.936ZM160.922 75C160.25 75 159.714 74.808 159.314 74.424C158.93 74.024 158.69 73.496 158.594 72.84H158.45C158.242 73.656 157.818 74.272 157.178 74.688C156.538 75.088 155.746 75.288 154.802 75.288C153.522 75.288 152.538 74.952 151.85 74.28C151.162 73.608 150.818 72.712 150.818 71.592C150.818 70.296 151.282 69.336 152.21 68.712C153.138 68.072 154.458 67.752 156.17 67.752H158.306V66.84C158.306 66.136 158.122 65.592 157.754 65.208C157.386 64.824 156.794 64.632 155.978 64.632C155.258 64.632 154.674 64.792 154.226 65.112C153.794 65.416 153.426 65.784 153.122 66.216L151.298 64.584C151.762 63.864 152.378 63.288 153.146 62.856C153.914 62.408 154.93 62.184 156.194 62.184C157.89 62.184 159.178 62.568 160.058 63.336C160.938 64.104 161.378 65.208 161.378 66.648V72.552H162.626V75H160.922ZM155.834 73.056C156.522 73.056 157.106 72.904 157.586 72.6C158.066 72.296 158.306 71.848 158.306 71.256V69.6H156.338C154.738 69.6 153.938 70.112 153.938 71.136V71.544C153.938 72.056 154.098 72.44 154.418 72.696C154.754 72.936 155.226 73.056 155.834 73.056ZM165.112 57.24H168.184V64.536H168.28C168.504 63.816 168.928 63.248 169.552 62.832C170.176 62.4 170.904 62.184 171.736 62.184C173.336 62.184 174.552 62.752 175.384 63.888C176.232 65.008 176.656 66.616 176.656 68.712C176.656 70.824 176.232 72.448 175.384 73.584C174.552 74.72 173.336 75.288 171.736 75.288C170.904 75.288 170.176 75.072 169.552 74.64C168.944 74.208 168.52 73.632 168.28 72.912H168.184V75H165.112V57.24ZM170.752 72.744C171.552 72.744 172.2 72.48 172.696 71.952C173.192 71.424 173.44 70.712 173.44 69.816V67.656C173.44 66.76 173.192 66.048 172.696 65.52C172.2 64.976 171.552 64.704 170.752 64.704C170.016 64.704 169.4 64.888 168.904 65.256C168.424 65.624 168.184 66.112 168.184 66.72V70.704C168.184 71.36 168.424 71.864 168.904 72.216C169.4 72.568 170.016 72.744 170.752 72.744ZM184.135 69.504C183.367 69.52 182.775 69.664 182.359 69.936C181.943 70.192 181.735 70.576 181.735 71.088V71.472C181.735 71.984 181.895 72.376 182.215 72.648C182.535 72.92 183.015 73.056 183.655 73.056C184.327 73.056 184.903 72.904 185.383 72.6C185.863 72.296 186.103 71.848 186.103 71.256V69.504H184.135ZM194.335 67.608V67.392C194.335 66.528 194.119 65.832 193.687 65.304C193.271 64.76 192.663 64.488 191.863 64.488C191.047 64.488 190.399 64.76 189.919 65.304C189.439 65.848 189.199 66.552 189.199 67.416V67.608H194.335ZM192.295 72.792C193.047 72.792 193.679 72.632 194.191 72.312C194.703 71.992 195.135 71.6 195.487 71.136L197.143 72.984C196.631 73.704 195.935 74.272 195.055 74.688C194.175 75.088 193.167 75.288 192.031 75.288C191.423 75.288 190.855 75.216 190.327 75.072C189.799 74.928 189.327 74.736 188.911 74.496C188.511 74.256 188.167 73.984 187.879 73.68C187.591 73.376 187.375 73.056 187.231 72.72H187.087C186.975 73.04 186.799 73.352 186.559 73.656C186.335 73.96 186.039 74.232 185.671 74.472C185.303 74.712 184.863 74.904 184.351 75.048C183.855 75.208 183.271 75.288 182.599 75.288C181.335 75.288 180.351 74.944 179.647 74.256C178.959 73.568 178.615 72.672 178.615 71.568C178.615 70.912 178.743 70.336 178.999 69.84C179.255 69.344 179.615 68.936 180.079 68.616C180.543 68.28 181.103 68.032 181.759 67.872C182.415 67.696 183.151 67.608 183.967 67.608H186.103V66.84C186.103 66.136 185.919 65.592 185.551 65.208C185.183 64.824 184.599 64.632 183.799 64.632C183.063 64.632 182.471 64.784 182.023 65.088C181.591 65.392 181.223 65.768 180.919 66.216L179.095 64.584C179.559 63.864 180.175 63.288 180.943 62.856C181.711 62.408 182.727 62.184 183.991 62.184C184.951 62.184 185.719 62.384 186.295 62.784C186.871 63.168 187.319 63.656 187.639 64.248H187.783C188.103 63.656 188.623 63.168 189.343 62.784C190.063 62.384 190.927 62.184 191.935 62.184C192.911 62.184 193.751 62.352 194.455 62.688C195.159 63.024 195.735 63.48 196.183 64.056C196.647 64.632 196.983 65.304 197.191 66.072C197.415 66.824 197.527 67.632 197.527 68.496V69.504H189.175V69.816C189.175 70.712 189.447 71.432 189.991 71.976C190.535 72.52 191.303 72.792 192.295 72.792ZM200.245 75V62.472H203.317V65.064H203.437C203.517 64.728 203.637 64.408 203.797 64.104C203.973 63.784 204.197 63.504 204.469 63.264C204.741 63.024 205.061 62.832 205.429 62.688C205.813 62.544 206.253 62.472 206.749 62.472H207.421V65.376H206.461C205.421 65.376 204.637 65.528 204.109 65.832C203.581 66.136 203.317 66.632 203.317 67.32V75H200.245Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/grimsnes-og-grafningshreppur.svg b/libs/application/templates/financial-aid/src/svg/grimsnes-og-grafningshreppur.svg deleted file mode 100644 index 70ce756f2b54..000000000000 --- a/libs/application/templates/financial-aid/src/svg/grimsnes-og-grafningshreppur.svg +++ /dev/null @@ -1,17 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57886)"> -<path d="M47.7439 16.5684H77.8918V59.1726C77.8918 76.784 63.2625 90.3101 47.7171 95.4117C32.1918 90.3101 17.5625 76.784 17.5625 59.1726V16.5684H47.7439Z" fill="white" stroke="#007BC1" stroke-width="1.68" stroke-miterlimit="3.86"/> -<path d="M24.4882 78.3819C24.4882 78.3819 28.413 70.8734 32.8526 74.163C38.6963 78.5157 41.7854 75.5537 41.7854 73.8888C41.7854 72.224 44.393 68.2323 49.1401 71.1809C54.1882 74.3368 56.7089 68.1989 56.7089 68.1989C56.7089 68.1989 57.7987 64.4012 62.6796 66.3C67.5605 68.1989 68.3696 65.4843 69.1853 63.8596C70.001 62.2348 71.6257 60.6034 73.5179 61.6933C74.6733 62.3371 76.0263 62.5301 77.3157 62.2348L77.3959 63.9732C77.3959 63.9732 74.7816 65.5712 73.5981 64.7488C72.4147 63.9264 71.833 66.514 70.6763 68.2658C69.5196 70.0175 64.4715 71.2946 62.1314 70.5591C59.7912 69.8236 59.5572 76.3025 56.4013 77.145C53.2455 77.9874 49.8088 74.4304 47.7494 76.0953C45.6901 77.7601 44.3194 83.5169 39.9801 83.2628C35.6408 83.0088 36.3094 81.2169 33.9625 81.8654C31.6157 82.514 30.3587 86.1111 30.3587 86.1111L25.558 79.9331L24.4749 78.3819H24.4882ZM17.5547 16.5282H77.8372V28.3226C77.8372 28.3226 69.4728 34.173 61.67 34.28C53.8673 34.387 50.7849 41.0597 50.3503 41.1667C49.0131 41.5077 44.7273 46.8433 42.9153 47.6189C40.6353 48.5951 37.3992 53.5428 26.4272 52.4998C24.1539 52.2791 17.6483 52.4998 17.6483 52.4998L17.5547 16.5282Z" fill="#007BC1"/> -<path d="M62.0578 55.114L62.3854 55.6556L62.7866 56.4579L63.5822 57.7952L63.8497 58.4638L63.4485 57.9289L63.0473 57.1266L62.5191 56.7254L62.118 57.1266V55.7893L61.8505 55.1207H62.0578V55.114ZM59.5772 55.1207L59.3098 55.9231L59.176 56.4579L59.3098 56.9928L59.7109 57.394L60.2458 57.7952L60.9144 58.1964L61.5831 58.4638L62.3854 58.5975L62.9203 58.865H62.2517L61.7168 58.9987V59.2661L62.3854 60.2022L61.7168 59.6673L61.3156 58.9987L60.647 58.3301L59.7109 57.7952L59.5772 58.1964L60.2458 59.1324L61.0482 60.0685L61.1819 61.1316L61.0482 60.3359L60.5133 59.801L59.9784 59.3999L59.5772 58.865L59.3098 59.3999L59.4435 60.0685L59.8447 60.7371L60.1121 61.5394L59.7109 61.0045L59.4435 60.7371L59.3098 61.1383V62.1813L59.176 61.2452L59.0423 60.4429L58.7749 59.6472L58.6411 58.8449L58.5074 57.9088V56.9728L58.6411 55.903L58.9086 55.094L59.5772 55.1207ZM58.7481 55.1207L58.24 55.7893L57.3039 56.7254L56.9027 57.2603L56.5016 57.6615L55.6992 58.7312V59.5068L56.2341 60.3092L57.0365 60.9778L57.9725 61.379L57.0365 61.5127L56.6353 61.9139L56.5016 62.5825L56.2341 63.5185L56.3679 62.5825L55.9667 61.5127L55.1577 59.6673L54.7632 60.3359L54.489 60.8441L54.3553 61.5127L54.2216 62.0476V63.5185L54.3553 64.0534L54.0879 63.2511L53.8204 63.1174L53.553 63.6523L53.1518 64.7221L54.2216 60.4429L52.6169 62.0476L52.2157 62.7162L51.8146 63.2511L51.6808 63.6523L51.5471 64.1872L51.2797 64.7221L50.8785 65.2569L51.146 64.7221L51.4134 63.6523L51.5471 62.9836L49.9424 64.3209L49.2738 65.1232L48.4715 65.7918L49.2738 64.8558L50.2099 63.9197L51.0122 62.9836L51.9483 62.1813L53.553 60.3159L54.3553 59.2461L55.0239 58.1763L55.8263 57.374L56.4949 56.5716L57.0298 55.6355L57.2371 55.094L58.7481 55.1207ZM47.3348 55.1207L47.5488 55.6623L47.8162 56.1972L48.6186 57.5344L48.886 58.203L49.1535 58.7379L48.7523 58.0693L48.2174 57.4007L47.8162 56.7321L47.2814 56.0635L47.1476 56.7321L46.8802 57.6681L46.7531 58.6042V58.7379L46.6194 59.5403L46.7531 58.6042V56.3309L46.8802 55.6623L47.0139 55.1274H47.3348V55.1207ZM43.624 55.1207L43.2763 55.3948L42.7414 56.3309V57.267L43.2763 58.203L43.8112 59.0054L44.0787 59.674L44.3461 60.4696L44.6136 61.1383L45.1485 62.7429L45.4159 63.4116L45.6834 64.2139L45.9508 64.8825L45.2822 63.4116L44.881 63.0104L44.6136 63.5453L44.3461 64.7488V62.3418L44.2124 61.9406L43.945 62.2081L43.4101 63.5453L43.1426 64.3476L43.6775 62.4755L43.8112 61.1383L43.6775 60.0752L42.8752 58.4705L42.474 57.8019L42.0728 56.9995L41.8054 56.0635L41.5379 55.9297H41.2705L41.1368 56.0635L41.003 56.3309L40.6019 57.4007V59.4065L41.1368 61.272L41.4042 62.3418L41.5379 63.2778L41.7853 64.1872L41.5179 63.3848L41.1167 62.4488L40.8493 61.6464L40.4481 61.379L40.0469 61.5127L39.7795 61.9139L39.512 62.5825L39.1109 63.2511L39.2446 62.8499L39.3783 62.5825L39.512 62.315V62.0476H39.2446L38.7164 62.315L38.4489 62.4488L39.3783 61.7801L40.0469 61.1115L40.3144 60.3159V58.7112L40.1806 57.9088V56.9728L40.3144 56.1704H39.1109L38.4422 56.3042L37.9073 56.8391L37.7736 57.374L37.6399 58.0426V58.8382L37.3724 60.1755L37.2387 60.4362L37.3724 60.7037L37.6399 60.8374L37.9073 60.9711L37.5062 60.8374H37.2387L36.8376 60.9711L36.4364 61.2386L36.9713 60.4362L37.2387 59.5068L37.3724 58.7045L37.2387 58.0359L36.8376 58.8382L36.5701 59.5068L36.1689 60.1755L35.634 60.7037L36.1689 60.035L36.3027 59.6339V59.099H35.9015L35.3666 59.3664L34.8317 59.7676L34.2968 60.035L35.634 58.9653L36.8376 57.7617L37.6399 56.4245L37.7736 56.0233V55.6222L36.8376 55.4885L36.1689 55.6222L35.5003 55.8896L34.9654 56.4245L34.5643 56.9594L34.1631 57.628L33.8956 58.2966L33.6282 59.099L34.0294 57.4943V57.0931L33.6282 57.3606L33.227 57.4943L32.8259 57.628L32.4247 57.7617L32.6921 57.628L32.9596 57.3606L33.227 57.2269V56.9594L32.8259 56.8257H31.0874L31.6223 56.692H32.291L32.9596 56.5582L33.6282 56.4245L34.1631 56.2908L34.698 56.1571L35.0992 55.8896L35.2329 55.4885L34.698 55.221L34.0294 55.0873H33.4945L32.8259 55.221L32.291 55.3547L31.6223 55.6222L31.0874 55.8896L30.693 56.1571L31.4886 55.4885L31.6223 55.3547L31.0874 55.221L29.8906 55.3547L31.2279 55.0873H43.624V55.1207Z" fill="white"/> -<path d="M31.2886 55.1074L31.7834 54.9871L32.0508 54.7196L31.6497 54.5859L31.1148 54.4522H30.4462L29.6438 54.5859L30.4462 54.3185L31.1148 54.1847L31.9171 54.3185L32.5857 54.4522L33.3881 54.5859L34.3241 54.8534H35.2602L36.33 54.5859L38.7303 54.9871L41.0036 54.7196L43.1432 54.1847L45.0153 53.1149L46.6133 51.9114L47.6831 50.5742L48.4854 49.3707L48.7529 48.4413L48.6192 47.5053L47.8168 46.7029L46.4796 46.168L44.8816 45.6331L41.1373 45.0982L39.3989 44.9645L38.0617 44.8308L37.3931 44.9645L36.7312 45.232L35.9288 45.6331L34.9928 46.168L34.1904 46.7029L33.5218 47.2378L32.9869 47.639L32.7195 48.0401V48.9695L33.2543 50.8417L32.7195 51.5103L33.1206 50.8417V50.4405L32.8532 50.173L32.7195 49.7719L32.452 49.6381L32.3183 49.7719L32.1846 50.173L31.9171 50.4405L32.1846 49.6381L32.452 48.9695V47.639L31.5159 47.7727L30.9811 48.1739L30.4462 48.575L29.918 48.9695L30.3124 48.575L30.7136 48.0401L31.2485 47.639L32.0508 47.3715L33.3881 46.8366L33.923 46.5692L34.3241 46.168L34.859 45.9006L35.2602 45.4994L35.6614 45.232L36.1963 44.8308H32.3183L31.5159 45.0982L30.7136 45.4994L30.3124 45.9006L30.045 46.3017L29.7775 46.7029L29.6438 47.2378L29.3831 47.7727L28.9819 48.4413L28.8482 48.575L28.0458 49.5044L28.5807 48.8425L28.8482 48.575V48.3076L28.3133 48.7021L28.0458 48.8425L28.9819 47.9064L29.2493 47.2378L28.9819 46.9704L28.5807 47.1041L28.1795 47.2378L27.6447 47.5053L28.1795 47.1041L28.8482 46.8366L29.3831 46.5692L29.5101 46.168L29.3831 46.0343H28.7144L28.0458 46.3017L27.5109 46.5692L28.447 46.0343L29.5101 45.6331L30.3124 45.3657L30.7136 44.9645L30.1787 44.6971L29.2493 44.5633H28.1795L27.3772 44.9645L28.0458 44.2959V44.0284L27.2435 43.761L28.5807 44.0284L29.7775 44.1622L31.1148 44.2959L32.3183 44.4296H36.9986L36.7312 44.1622L36.4637 43.8947L36.1963 43.6273L35.9288 43.3598L35.5276 42.9587L34.9928 42.5575L34.1904 41.7551L35.2602 42.5575L35.7951 42.8249V42.4238L35.5276 41.354L36.0625 42.4238L36.1963 42.8249L36.5974 43.6273L36.8649 43.8947L37.1323 44.0284L37.3931 44.2959L38.1954 44.1622L39.1315 44.0284L40.2013 43.8947H41.1373L42.0734 43.761L42.742 43.6273L43.2769 43.4935L43.4106 43.3598V43.2261L43.2769 43.0924L43.0095 42.8249L42.6083 42.6912L41.1373 41.8889L39.9338 40.9595L39.2652 40.1572L38.1954 38.5525L37.928 38.0176L37.5268 37.6164L36.9986 37.4827L35.9288 37.7501L35.1265 38.1513L34.4579 38.5525L34.0567 39.0874L33.5218 39.6223L32.7195 40.6854L32.3183 41.0865L31.9171 40.8258L31.5159 40.5583H29.918L29.3831 40.8258L28.8482 40.9595L28.3133 41.2203L28.447 41.0865L28.7144 40.8258L28.8482 40.6854L28.9819 40.5583L28.1795 40.2909L27.5109 40.1572L26.7086 40.0234L25.9062 39.8897H27.2435L27.9121 40.0234H28.447L29.1089 40.1572L29.7775 40.2909H31.7834L32.3183 40.1572L32.7195 40.0234V39.6223H31.9171L31.2485 39.4885L30.5799 39.3548L30.045 39.2211L29.3831 38.9536L28.8482 38.6862L28.1795 38.5525L27.5109 38.285L27.1098 38.1513L26.7086 38.0176H26.04L26.4411 37.8839H26.8423L27.2435 37.7501L27.1098 37.6164L26.8423 37.4827L26.5749 37.2152L27.1098 37.4827L27.9121 38.0176L28.7144 38.4187L30.045 38.8199L31.1148 38.9536L31.9171 39.2211L32.5857 39.0874L32.8532 38.5525L32.5857 38.4187L32.1846 38.285L31.9171 38.1513L31.7834 37.8839L32.1846 38.1513H33.5218L34.3241 37.7501L35.1265 37.4827L35.9288 37.0815L36.0625 36.5466L35.7951 35.7443L35.3939 35.2094L34.7253 34.8082L33.923 34.6745H33.1206L32.1846 34.8082L31.2485 35.2094L30.4462 35.6106L30.9811 35.2094L31.6497 34.9419L32.3183 34.5408L32.452 34.1396L32.0508 33.6047L31.5159 33.471L30.7136 33.7384L29.918 34.1396L28.9819 34.6745L28.0458 35.3431L27.1098 35.7443L26.3074 36.0117L27.1098 35.6106L27.7784 35.2094L27.9121 34.6745L26.8423 34.5408H27.7784L28.8482 34.4071L29.6438 34.0059L30.045 33.6047L29.918 33.2035L29.3831 33.0765H28.7144L27.9121 33.2035L28.3133 32.9428L28.447 32.6686L28.3133 32.5349L28.0458 32.2742L28.7144 32.5349L29.2493 32.8091L30.045 32.9428H30.7136L31.5159 33.0765L32.3183 33.3373L32.9869 33.6047L33.7892 34.0059L33.3881 33.7384L33.1206 33.3373L32.7195 33.0765L32.0508 32.8091L32.3183 32.5349V32.1404L32.1846 31.6055L31.7834 30.9369L31.3822 30.1346L30.9811 29.466L30.5799 28.6636L30.3124 28.1287L30.7136 28.6636L31.2485 29.466L31.6497 29.8671L32.0508 29.466V30.1346L32.3183 31.4718L33.1206 32.8091L33.7892 33.2035L34.3241 33.6047L34.9928 33.7384L34.4579 32.1404L34.5916 31.4718L34.9928 30.6695V30.1346L34.859 29.5997L34.4579 29.1985L33.923 28.7974L33.2543 28.3962L32.5857 28.1287L31.9171 27.8613L31.2485 27.7276H31.9171L32.452 27.5938L32.5857 27.1927L31.7834 26.3903L32.452 26.7915L32.9869 27.4601L33.5218 28.2625L34.5916 28.7974V28.2625L33.923 27.4601L33.2543 26.3903L33.1206 26.2566L32.9869 25.4543L33.2543 26.3903L33.6555 26.7915L34.1904 27.1927L34.5916 27.7276L34.859 27.1927L34.7253 26.5241L34.3241 25.7217L34.0567 25.0531L34.4579 25.588L34.7253 25.7217L34.859 25.4543V24.3845L34.9928 25.1868L35.1265 26.1229L35.3939 26.9252L35.5276 27.7276L35.6614 28.6636V29.5997L35.5276 30.6695L35.1265 31.873L35.5276 31.2044L36.0625 30.8032L36.8649 29.7334L37.2594 29.3322L37.6672 28.7974L38.1954 28.3962L38.5966 27.7276L38.4629 26.9252L37.928 26.1229L37.1323 25.4543L36.1963 25.0531H37.1323L37.5268 24.6586L37.6672 23.8563L37.928 23.0539V23.99L38.1954 24.9261L38.5966 25.9892L38.9978 26.9252L39.3989 26.2566L39.6664 25.588L39.9338 25.0531V24.5182L40.0676 23.99L39.9338 23.4551V22.9202L39.8001 22.519L40.2013 23.1877L40.335 23.3214L40.6024 22.9202L41.0036 21.8504L40.6024 23.4551L40.4687 23.8563L40.335 24.5182L40.2013 24.9261L39.9338 25.9892L40.8699 25.1868L41.5385 24.5182L42.0734 23.8563L42.3409 23.3214L42.4746 22.7865L42.742 22.3853L42.8757 21.8504L43.2769 21.1818L43.0095 21.8504L42.742 22.9202L42.6083 23.5888L43.4106 22.9202L44.213 22.1179L45.0153 21.4493L45.6839 20.7806L44.0793 22.6528L43.1432 23.4551L42.3409 24.3845L41.4048 25.3205L40.6024 26.2566L39.8001 27.3264L39.1315 28.3962L38.3291 29.1985L37.6672 30.0009L37.1323 30.9369L36.7312 32.0067L36.4637 32.9428L36.33 34.0059L36.4637 35.0757L36.8649 36.0117L37.1323 36.2792L37.3931 35.878L37.5268 35.3431L37.6672 34.9419V35.878L38.0617 36.9478L38.7303 38.0176L39.5327 38.9536L40.335 39.756L41.1373 40.2909L41.9397 40.4179L42.6083 40.0234L42.4746 39.6223V39.3548L42.2071 38.5525V38.4187L42.3409 38.285L42.4746 38.1513V38.0176L42.8757 38.285L43.2769 37.7501L43.6781 37.0815L44.6141 36.5466L44.7479 35.4768L45.0153 34.6745L45.2828 34.1396L45.5502 33.7384L45.811 33.471L46.2121 33.2035L46.4796 32.9428L46.747 32.5349L46.8808 32.0067V31.4718L46.747 30.9369L46.3459 30.2683L46.0784 29.5997L45.6839 29.0648L45.2828 28.3962L45.0153 27.7276L45.5502 28.5299L46.3459 29.8671L47.0145 30.5358L47.2819 28.9311L47.5494 27.059V27.8613L47.4157 28.6636V30.2683L47.2819 30.9369L47.1482 31.4718V32.1404L47.2819 32.8091L46.747 33.471L45.9514 34.2733L45.4098 35.0757L45.6839 35.7443L46.3459 35.2094L47.5494 34.0059L48.218 33.471L48.8866 32.9428L49.5552 32.2742L50.8925 31.2044L51.4274 30.1346V29.1985L51.0262 28.3962L50.3576 27.5938L50.0901 26.7915L49.8227 26.1229L49.5552 25.3205L49.2878 24.6586L49.0203 23.8563L48.7529 23.1877L48.218 21.583L49.0203 23.1877L49.4215 23.5888L49.6889 23.0539L49.8227 21.8504V24.1237L50.0901 24.5182L50.2238 24.3845L50.4913 23.7226L50.7587 22.9202L51.0262 22.2516L50.625 23.99L50.4913 25.3205L50.625 26.3903L50.8925 27.3264L51.2936 27.995L51.8285 28.7974L52.2297 29.466L52.4971 30.402L52.6309 30.5358H53.032L53.2928 30.2683L53.5669 29.1985V27.1927L53.2928 26.2566L53.1658 25.1868L52.6309 23.3214L52.4971 22.2516L53.032 24.1237L53.2928 24.7857L53.694 25.1868L54.0951 25.0531L54.4963 24.5182L54.7638 23.8563L54.8975 23.5888L54.7638 23.99L54.63 24.2574V24.5182H54.8975L55.1649 24.3845L55.4324 24.1237L55.6998 23.99L54.7638 24.7857L54.2289 25.4543L53.8344 26.2566V27.8613L53.9614 28.6636V29.466L53.8344 30.402H55.0312L55.8335 30.1346L56.2347 29.7334L56.5022 29.1985V27.7276L56.6359 26.9252L56.9033 26.3903V26.1229L56.7696 25.8554L56.5022 25.7217L56.2347 25.588L56.6359 25.7217H56.9033L57.3045 25.588L57.7057 25.1868L57.1708 25.9892L56.9033 26.9252L56.7696 27.8613L57.037 28.3962L57.3045 27.7276L57.5719 26.9252L57.9731 26.2566L58.508 25.8554L57.9731 26.3903L57.8394 26.9252V27.1927L57.9731 27.4601L58.2406 27.3264L58.7755 27.059L59.3103 26.7915L59.8452 26.5241L57.8394 28.1287L57.3045 28.7974L56.9033 29.466L56.3684 30.5358L56.5022 30.9369L57.3045 31.0707L57.9731 30.9369L58.6417 30.5358L59.1766 30.1346L59.7115 29.466L60.1127 28.7974L60.3801 28.1287L60.5139 27.4601V27.995L60.2464 28.5299L60.1127 28.9311V29.466L60.5139 29.1985L60.915 29.0648L61.3162 28.9311L61.7174 28.7974L61.4432 28.9311L61.1825 29.1985L60.915 29.3322V29.5997L61.3162 29.7334H62.513L61.8511 29.8671L61.1825 30.0009H60.5139L59.979 30.1346L59.4441 30.402L59.0429 30.6695L58.9092 31.0707L59.4441 31.3381L60.1127 31.4718H60.6476L61.9848 31.2044L63.0479 30.6695L62.6467 30.9369V31.2044H64.2514L63.5828 31.3381H62.9142L62.3793 31.4718L62.2456 31.7393L62.513 32.0067L63.0479 32.1404H63.7165L64.5189 31.873L63.8503 32.2742L63.0479 32.4079L62.3793 32.2742L61.577 32.1404L60.7813 31.873L59.8452 31.7393H58.9092L57.8394 32.0067L55.4324 31.6055L53.1658 31.7393L51.0262 32.4079L49.1541 33.3373L47.5494 34.6745L46.4796 35.878L45.811 37.2152L45.4098 38.285L45.5502 39.2211L46.4796 40.0234L47.6831 40.5583L49.2878 40.9595L51.1599 41.354L53.032 41.6214L54.7638 41.7551L56.2347 41.8889L56.7696 41.7551L58.3743 40.9595L59.1766 40.5583L59.979 40.0234L60.6476 39.4885L61.4432 38.6862L61.577 37.6164L61.1825 36.6803L60.915 35.7443L61.4432 34.9419L61.0487 35.6106L61.1825 36.1455L61.3162 36.4129L61.4432 36.8141L61.7174 36.9478L61.8511 36.6803L62.1119 36.4129L62.2456 36.1455L61.9848 36.8141L61.8511 37.6164L61.7174 38.285V39.0874L62.6467 38.9536L63.3154 38.5525L63.7165 38.0176L64.2514 37.6164L63.8503 38.1513L62.9142 39.0874L62.1119 39.3548L61.4432 39.4885L60.7813 39.756L60.3801 40.1572L59.8452 40.4179L59.4441 40.8258L58.9092 41.2203L58.508 41.4877L57.9731 41.8889L58.6417 41.7551H59.3103L59.979 41.8889H61.1825L61.8511 41.7551L62.6467 41.6214L63.4491 41.2203L63.8503 40.8258L64.3851 40.0234L64.6526 39.4885L64.7863 38.8199L65.1875 38.285L65.5887 37.6164L66.1236 37.0815L65.3212 38.1513L65.4549 38.285L65.8561 38.0844L66.1236 37.8839L66.6584 37.4827L65.9898 38.0176L65.8561 38.0844L65.5887 38.285L65.1875 38.8199L64.92 39.4885L65.1875 39.6223H65.5887L65.9898 39.4885L66.5247 39.2211L65.9898 39.6223L65.3212 39.8897L64.92 40.1572L64.6526 40.4179L64.92 40.6854L65.4549 40.5583L66.1236 40.2909L66.7922 40.1572L65.7224 40.5583L64.6526 40.9595L63.8503 41.354L63.4491 41.7551L63.984 41.8889L64.92 42.1563H65.9898L66.7922 41.6214L66.6584 42.0226L66.1236 42.29V42.6912L66.9259 42.8249H65.5887L64.3851 42.6912L63.1816 42.5575L61.9848 42.4238H58.1068L56.6359 42.5575L56.7696 42.6912L57.037 42.9587L57.3045 43.2261L57.5719 43.3598H56.6359L56.3684 43.2261L56.101 42.9587L55.8335 42.8249L55.5661 42.6912H54.63L53.694 42.5575L52.7646 42.4238L51.8285 42.29L51.0262 42.1563H50.2238L49.4215 42.29L48.7529 42.4238L48.4854 42.6912L48.218 42.9587V43.0924L48.6192 43.3598L50.3576 43.6273L52.096 44.2959L54.7638 46.168L55.8335 47.2378L56.7696 48.0401L57.5719 48.575L58.2406 48.8425L59.8452 48.3076L60.6476 47.3715L61.1825 46.4355L61.8511 45.4994L62.2456 45.9006L62.6467 46.0343L63.1816 46.168H63.7165L64.2514 46.0343L64.7863 45.9006L65.3212 45.6331L65.8561 45.3657L65.7224 45.6331L65.4549 45.7668L65.3212 46.0343L65.1875 46.168L65.9898 46.3017L66.6584 46.4355L67.4608 46.5692L68.2631 46.7029L67.5945 46.8366H66.9259L66.391 46.7029L65.7224 46.5692H65.0538L64.5189 46.4355H62.3793L61.8511 46.5692L61.4432 46.7029V47.1041H62.9142L63.5828 47.3715L64.2514 47.5053L64.7863 47.7727L65.4549 47.9064L65.9898 48.1739L66.6584 48.3076L67.0596 48.575H67.5945L68.1294 48.7021H67.7282L67.3271 48.8425H66.9259L67.1933 48.9695L67.3271 49.1099L67.5945 49.237L67.862 49.5044L67.0596 48.9695L66.391 48.7021L65.4549 48.3076L64.1177 47.9064L63.0479 47.639L62.2456 47.5053L61.577 47.639L61.3162 48.1739L61.577 48.3076L61.9848 48.4413L62.3793 48.575V48.8425L61.9848 48.575L61.577 48.4413H61.0487L60.6476 48.575L59.8452 48.8425L59.0429 49.1099L58.3743 49.5044L58.1068 50.0393L58.3743 50.8417L58.7755 51.3765L59.4441 51.7777L60.2464 51.9114H61.0487L61.9848 51.644L62.9142 51.3765L63.8503 50.9754L63.1816 51.3765L62.513 51.644L61.9848 52.0452L61.7174 52.4463L62.1119 52.9812L62.7805 53.1149L63.4491 52.8475L64.2514 52.3126L65.1875 51.7777L66.1236 51.2428L67.0596 50.7079L67.862 50.4405L67.0596 50.9754L66.391 51.3765L66.2573 51.7777L67.3271 51.9114L66.391 52.0452L65.3212 52.1789L64.5189 52.4463L64.1177 52.9812L64.3851 53.2487L64.7863 53.5161H65.5887L66.2573 53.3824L65.8561 53.6498L65.7224 53.7836L65.8561 54.051L66.1236 54.3185L65.5887 53.9173L64.92 53.7836L64.1177 53.6498L63.4491 53.5161L62.6467 53.3824L61.8511 53.2487L61.1825 52.9812L60.3801 52.4463L61.1825 53.2487L61.577 53.5161L62.1119 53.6498L61.8511 53.9173V54.4522L61.9848 54.9871L62.0584 55.1074H61.8444L61.0487 53.7836L60.5139 53.2487L59.8452 52.9812L59.1766 52.8475L59.5778 53.6498L59.7115 54.3185L59.5778 55.1074H58.9092L59.0429 54.7196L58.7487 55.1074H57.2443L57.4382 54.5859L57.7057 53.5161L57.8394 52.5801L57.7057 51.5103L57.3045 50.4405L57.037 50.3068L56.7696 50.5742L56.5022 51.644V50.7079L56.101 49.6381L55.5661 48.7021L54.7638 47.639L53.8344 46.8366L53.032 46.4355L52.2297 46.3017L51.5611 46.5692L51.9622 47.7727V48.1739L51.8285 48.4413L51.6948 48.575V48.7021L51.2936 48.4413L51.0262 48.8425L50.4913 49.5044L49.6889 50.0393L49.2878 51.9114L48.6192 52.8475L48.0843 53.2487L47.4157 53.9173L47.2819 54.4522V54.9871L47.3354 55.1074H47.0145V53.7836L47.4157 52.9812L48.3517 52.1789L48.7529 51.5103L48.4854 50.8417L47.1482 51.9114L46.6133 52.5801L44.6141 54.1847L43.9455 54.8534L43.6179 55.1074H31.2886Z" fill="white"/> -<path d="M50.2499 41.1667L51.1592 41.3606L53.0313 41.6281L54.7697 41.7618L56.234 41.8955L56.7689 41.7618L58.3736 40.9595L59.1759 40.5583L59.9782 40.0234L60.6469 39.4885L61.4492 38.6862L61.5829 37.6164L61.1818 36.6803L60.9143 35.7509L61.4492 34.9486L61.048 35.6172L61.1818 36.1521L61.3155 36.4129L61.4492 36.814L61.7167 36.9478L61.8504 36.6803L62.1178 36.4129L62.2515 36.1521L61.9841 36.8207L61.8504 37.6231L61.7167 38.2917V39.094L62.6527 38.9603L63.3213 38.5591L63.7225 38.0242L64.2574 37.6231L63.8562 38.158L62.9269 39.094L62.1245 39.3615L61.4559 39.4952L60.7873 39.7627L60.3861 40.1638L59.8512 40.4313L59.45 40.8324L58.9151 41.2336L58.514 41.5011L57.9791 41.9022L58.6477 41.7685H59.3163L59.9849 41.9022H61.1751L61.8437 41.7685L62.646 41.6348L63.4417 41.2336L63.8429 40.8324L64.3778 40.0301L64.6452 39.4952L64.7789 38.8266L65.1801 38.2917L65.5813 37.6231L66.1161 37.0882L65.3138 38.158L65.4475 38.2917L65.8554 38.1112L66.1228 37.9106L66.6577 37.5094L65.9891 38.0443L65.8554 38.1112L65.5879 38.3118L65.1868 38.8466L64.9193 39.5153L65.1868 39.649H65.5879L65.9891 39.5153L66.524 39.2478L65.9891 39.649L65.3205 39.9164L64.9193 40.1839L64.6519 40.4513L64.9193 40.7188L65.4542 40.585L66.1228 40.3176L66.7915 40.1839L65.7217 40.585L64.6519 40.9862L63.8495 41.3874L63.4484 41.7886L63.9833 41.9223L64.9193 42.1897H65.9891L66.7915 41.6548L66.6577 42.056L66.1228 42.3235V42.7246L66.9252 42.8583H65.5879L64.3844 42.7246L63.1809 42.5909L61.9841 42.4572H58.1061L56.6352 42.5909L56.7689 42.7246L57.0363 42.9921L57.3038 43.2595L57.5712 43.3932H56.6352L56.3677 43.2595L56.1003 42.9921L55.8328 42.8583L55.5654 42.7246H54.636L53.6999 42.5909L52.7639 42.4572L51.8278 42.3235L51.0255 42.1897H50.2231L49.4208 42.3235L49.0865 42.3903C49.4743 42.0025 49.8621 41.6013 50.2499 41.1935V41.1667ZM48.2908 43.1993L48.6185 43.42L50.3569 43.6874L52.0953 44.356L54.7697 46.2282L55.8261 47.2378L56.7622 48.0401L57.5645 48.575L58.2332 48.8425L59.8378 48.3076L60.6402 47.3715L61.1751 46.4354L61.8437 45.4994L62.2449 45.9006L62.646 46.0343L63.1742 46.168H63.7091L64.244 46.0343L64.7789 45.9006L65.3138 45.6331L65.8487 45.3657L65.715 45.6331L65.4475 45.7668L65.3138 46.0343L65.1801 46.168L65.9824 46.3017L66.651 46.4354L67.4534 46.5692L68.2557 46.7029L67.5871 46.8366H66.9185L66.3836 46.7029L65.715 46.5692H65.0464L64.5115 46.4354H62.3853L61.8504 46.5692L61.4492 46.7029V47.1041H62.9202L63.5888 47.3715L64.2574 47.5052L64.7923 47.7727L65.4609 47.9064L65.9958 48.1738L66.6644 48.3076L67.0656 48.575H67.6005L68.1354 48.7087H67.7342L67.333 48.8425H66.9319L67.1993 48.9762L67.333 49.1099L67.6005 49.2436L67.8679 49.5111L67.0656 48.9762L66.397 48.7087L65.4609 48.3076L64.1237 47.9064L63.0539 47.639L62.2582 47.5052L61.5896 47.639L61.3222 48.1738L61.5896 48.3076L61.9908 48.4413L62.392 48.575V48.8425L61.9908 48.575L61.5896 48.4413H61.0547L60.6536 48.575L59.8512 48.8425L59.0489 49.1099L58.3803 49.5111L58.1128 50.046L58.3803 50.8483L58.7814 51.3832L59.45 51.7844L60.2524 51.9181H61.0547L61.9908 51.6507L62.9269 51.3832L63.8562 50.982L63.1876 51.3832L62.519 51.6507L61.9841 52.0518L61.7167 52.4463L62.1178 52.9812L62.7864 53.1149L63.4551 52.8475L64.2574 52.3126L65.1935 51.7844L66.1295 51.2495L67.0656 50.7146L67.8679 50.4471L67.0656 50.982L66.397 51.3832L66.2632 51.7844L67.333 51.9181L66.397 52.0518L65.3272 52.1855L64.5248 52.4463L64.1237 52.9812L64.3911 53.2486L64.7923 53.5161H65.5946L66.2632 53.3824L65.8621 53.6498L65.7284 53.7835L65.8621 54.051L66.1295 54.3184L65.5946 53.9173L64.926 53.7835L64.1237 53.6498L63.4551 53.5161L62.6594 53.3824L61.8571 53.2486L61.1884 52.9812L60.3861 52.4463L61.1884 53.2486L61.5896 53.5161L62.1245 53.6498L61.8571 53.9173V54.4522L61.9908 54.9871L62.392 55.6557L62.7931 56.458L63.5888 57.7952L63.8562 58.4639L63.4551 57.929L63.0539 57.1266L62.5257 56.7255L62.1245 57.1266V55.7894L61.8571 55.1208L61.4559 54.4522L61.0547 53.7835L60.5198 53.2486L59.8512 52.9812L59.1692 52.8207L59.5704 53.6231L59.7041 54.2917L59.5704 55.094L59.3029 55.8964L59.1692 56.4313L59.3029 56.9662L59.7041 57.3673L60.239 57.7685L60.9076 58.1697L61.5762 58.4371L62.3786 58.5708L62.9135 58.8383H62.2449L61.71 58.972V59.2395L62.3786 60.1755L61.71 59.6406L61.3088 58.972L60.6402 58.3034L59.7041 57.7685L59.5704 58.1697L60.239 59.1057L61.0414 60.0418L61.1751 61.1049L61.0414 60.3092L60.5065 59.7744L59.9716 59.3732L59.5704 58.8383L59.3029 59.3732L59.4367 60.0418L59.8378 60.7104L60.1053 61.5128L59.7041 60.9779L59.4367 60.7104L59.3029 61.1116V62.1814L59.1692 61.2453L59.0355 60.443L58.7681 59.6473L58.6343 58.845L58.5006 57.9089V56.9728L58.6343 55.9031L59.0355 54.6996L58.2332 55.7693L57.2971 56.7054L56.8959 57.2403L56.4948 57.6415L55.6924 58.7112V59.5069L56.2273 60.3092L57.0296 60.9779L57.9657 61.379L57.0296 61.5128L56.6285 61.9139L56.4948 62.5825L56.2273 63.5186L56.361 62.5825L55.9599 61.5128L55.1575 59.6674L54.763 60.336L54.4889 60.8441L54.3552 61.5128L54.2215 62.0476V63.5186L54.3552 64.0535L54.0877 63.2512L53.8203 63.1174L53.5528 63.6523L53.1517 64.7221L54.2215 60.443L52.6168 62.0476L52.2156 62.7163L51.8144 63.2512L51.6807 63.6523L51.547 64.1872L51.2795 64.7221L50.8784 65.257L51.1458 64.7221L51.4133 63.6523L51.547 62.9837L49.9423 64.3209L49.2737 65.1233L48.4714 65.7919L49.2737 64.8558L50.2098 63.9198L51.0121 62.9837L51.9482 62.1814L53.5528 60.3159L54.3552 59.2461L55.0238 58.1764L55.8261 57.374L56.4948 56.5717L57.0296 55.6356L57.4308 54.5658L57.6983 53.496L57.832 52.56L57.6983 51.4969L57.2971 50.4271L57.0296 50.2934L56.7622 50.5608L56.4948 51.6306V50.6945L56.0936 49.6247L55.5587 48.6887L54.763 47.6189L53.8203 46.8366L53.0179 46.4354L52.2156 46.3017L51.547 46.5692L51.9482 47.7727V48.1738L51.8144 48.4413L51.6807 48.575V48.7087L51.2795 48.4413L51.0121 48.8425L50.4772 49.5111L49.6749 50.046L49.2737 51.9181L48.6051 52.8475L48.0702 53.2486L47.4016 53.9173L47.2678 54.4522V54.9871L47.5353 55.6557L47.8027 56.1906L48.6051 57.5278L48.8725 58.1964L49.14 58.7313L48.7388 58.0627L48.2039 57.3941L47.8027 56.7255L47.2678 56.0568L47.1341 56.7255L46.8667 57.6615L46.7396 58.5976V58.7313L46.6059 59.5336L46.7396 58.5976V56.3243L46.8667 55.6557L47.0004 55.1208V53.7835L47.4016 52.9812L48.3376 52.1855L48.7388 51.5169L48.4714 50.8483L47.1341 51.9181L46.6059 52.5867L44.6001 54.1914L43.9314 54.86L43.2628 55.3949L42.7279 56.331V57.267L43.2628 58.2031L43.7977 59.0054L44.0652 59.6741L44.3326 60.4697L44.6001 61.1383L45.135 62.743L45.4024 63.4116L45.6699 64.214L45.9373 64.8826L45.2687 63.4116L44.8675 63.0105L44.6001 63.5454L44.3326 64.7489V62.3418L44.1989 61.9407L43.9314 62.2081L43.3966 63.5454L43.1291 64.3477L43.664 62.4756L43.7977 61.1383L43.664 60.0752L42.8617 58.4705L42.4605 57.8019L42.0593 56.9996L41.7919 56.0635L41.5244 55.9298H41.257L41.1233 56.0635L40.9895 56.331L40.5884 57.4008V59.4066L41.1233 61.2721L41.3907 62.3418L41.5244 63.2779L41.7852 64.1872L41.5177 63.3849L41.1166 62.4488L40.8491 61.6465L40.448 61.379L40.0468 61.5128L39.7793 61.9139L39.5119 62.5825L39.1107 63.2512L39.2444 62.85L39.3782 62.5825L39.5119 62.3151V62.0476H39.2444L38.7162 62.3151L38.4488 62.4488L39.3782 61.7802L40.0468 61.1116L40.3142 60.3159V58.7112L40.1805 57.9089V56.9728L40.3142 56.1705H39.1107L38.4421 56.3042L37.9072 56.8391L37.7735 57.374L37.6398 58.0426V58.8383L37.3723 60.1755L37.2386 60.4363L37.3723 60.7037L37.6398 60.8375L37.9072 60.9712L37.506 60.8375H37.2386L36.8374 60.9712L36.4363 61.2386L36.9711 60.4363L37.2386 59.5069L37.3723 58.7046L37.2386 58.0359L36.8374 58.8383L36.57 59.5069L36.1688 60.1755L35.6339 60.7037L36.1688 60.0351L36.3025 59.6339V59.099H35.9014L35.3665 59.3665L34.8316 59.7677L34.2967 60.0351L35.6339 58.9653L36.8374 57.7618L37.6398 56.4246L37.7735 56.0234V55.6222L36.8374 55.4885L36.1688 55.6222L35.5002 55.8897L34.9653 56.4246L34.5641 56.9595L34.163 57.6281L33.8955 58.2967L33.6281 59.099L34.0292 57.4944V57.0932L33.6281 57.3606L33.2269 57.4944L32.8257 57.6281L32.4246 57.7618L32.692 57.6281L32.9594 57.3606L33.2269 57.2269V56.9595L32.8257 56.8258H31.0873L31.6222 56.692H32.2908L32.9594 56.5583L33.6281 56.4246L34.163 56.2909L34.6978 56.1571L35.099 55.8897L35.2327 55.4885L34.6978 55.2211L34.0292 55.0873H33.4943L32.8257 55.2211L32.2908 55.3548L31.6222 55.6222L31.0873 55.8897L30.6928 56.1571L31.4885 55.4885L31.6222 55.3548L31.0873 55.2211L29.8905 55.3548L31.2277 55.0873L31.7626 54.9536L32.0301 54.6862L31.6289 54.5525L31.094 54.4187H30.4254L29.623 54.5525L30.4254 54.285L31.094 54.1513L31.8963 54.285L32.565 54.4187L33.3673 54.5525L34.3034 54.8199H35.2394L36.3092 54.5525L38.7162 54.9536L40.9828 54.6862L43.1224 54.158L44.9945 53.0882L46.5992 51.8914L47.6623 50.5541L48.4647 49.3506L48.7321 48.4146L48.5984 47.4785L47.8027 46.7029L46.4655 46.168L45.3355 45.7936C46.305 44.9979 47.2879 44.1287 48.2908 43.1458V43.1993Z" fill="#007BC1"/> -</g> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M108.648 58.408H108.552C108.408 59.224 107.952 59.912 107.184 60.472C106.432 61.016 105.424 61.288 104.16 61.288C103.168 61.288 102.248 61.104 101.4 60.736C100.568 60.368 99.84 59.824 99.216 59.104C98.608 58.368 98.128 57.464 97.776 56.392C97.424 55.32 97.248 54.08 97.248 52.672C97.248 51.264 97.424 50.024 97.776 48.952C98.144 47.864 98.656 46.952 99.312 46.216C99.968 45.48 100.752 44.92 101.664 44.536C102.576 44.152 103.592 43.96 104.712 43.96C106.216 43.96 107.496 44.288 108.552 44.944C109.608 45.6 110.44 46.544 111.048 47.776L108.48 49.288C108.176 48.568 107.72 47.968 107.112 47.488C106.52 47.008 105.72 46.768 104.712 46.768C103.464 46.768 102.464 47.152 101.712 47.92C100.976 48.672 100.608 49.792 100.608 51.28V53.968C100.608 55.44 100.984 56.56 101.736 57.328C102.488 58.096 103.496 58.48 104.76 58.48C105.256 58.48 105.72 58.424 106.152 58.312C106.584 58.184 106.96 58 107.28 57.76C107.6 57.52 107.856 57.224 108.048 56.872C108.24 56.52 108.336 56.104 108.336 55.624V54.544H105.048V51.88H111.384V61H108.648V58.408ZM114.862 61V48.472H117.934V51.064H118.054C118.134 50.728 118.254 50.408 118.414 50.104C118.59 49.784 118.814 49.504 119.086 49.264C119.358 49.024 119.678 48.832 120.046 48.688C120.43 48.544 120.87 48.472 121.366 48.472H122.038V51.376H121.078C120.038 51.376 119.254 51.528 118.726 51.832C118.198 52.136 117.934 52.632 117.934 53.32V61H114.862ZM124.284 61V48.472H127.356V61H124.284ZM126.156 47.056L124.308 46.168L126.588 41.68L129.18 42.952L126.156 47.056ZM130.917 61V48.472H133.989V50.56H134.109C134.349 49.904 134.733 49.344 135.261 48.88C135.789 48.416 136.525 48.184 137.469 48.184C138.333 48.184 139.077 48.392 139.701 48.808C140.325 49.224 140.789 49.856 141.093 50.704H141.141C141.365 50 141.805 49.408 142.461 48.928C143.133 48.432 143.973 48.184 144.981 48.184C146.213 48.184 147.157 48.608 147.813 49.456C148.485 50.304 148.821 51.512 148.821 53.08V61H145.749V53.392C145.749 51.6 145.077 50.704 143.733 50.704C143.429 50.704 143.133 50.752 142.845 50.848C142.573 50.928 142.325 51.056 142.101 51.232C141.893 51.392 141.725 51.6 141.597 51.856C141.469 52.096 141.405 52.384 141.405 52.72V61H138.333V53.392C138.333 51.6 137.661 50.704 136.317 50.704C136.029 50.704 135.741 50.752 135.453 50.848C135.181 50.928 134.933 51.056 134.709 51.232C134.501 51.392 134.325 51.6 134.181 51.856C134.053 52.096 133.989 52.384 133.989 52.72V61H130.917ZM156.325 61.288C155.125 61.288 154.117 61.088 153.301 60.688C152.485 60.272 151.765 59.704 151.141 58.984L153.013 57.16C153.477 57.688 153.981 58.104 154.525 58.408C155.085 58.712 155.725 58.864 156.445 58.864C157.181 58.864 157.709 58.736 158.029 58.48C158.365 58.224 158.533 57.872 158.533 57.424C158.533 57.056 158.413 56.768 158.173 56.56C157.949 56.336 157.557 56.184 156.997 56.104L155.749 55.936C154.389 55.76 153.349 55.376 152.629 54.784C151.925 54.176 151.573 53.296 151.573 52.144C151.573 51.536 151.685 50.992 151.909 50.512C152.133 50.016 152.453 49.6 152.869 49.264C153.285 48.912 153.781 48.648 154.357 48.472C154.949 48.28 155.605 48.184 156.325 48.184C156.933 48.184 157.469 48.232 157.933 48.328C158.413 48.408 158.845 48.536 159.229 48.712C159.613 48.872 159.965 49.08 160.285 49.336C160.605 49.576 160.917 49.848 161.221 50.152L159.421 51.952C159.053 51.568 158.613 51.248 158.101 50.992C157.589 50.736 157.029 50.608 156.421 50.608C155.749 50.608 155.261 50.728 154.957 50.968C154.669 51.208 154.525 51.52 154.525 51.904C154.525 52.32 154.645 52.64 154.885 52.864C155.141 53.072 155.565 53.224 156.157 53.32L157.429 53.488C160.133 53.872 161.485 55.104 161.485 57.184C161.485 57.792 161.357 58.352 161.101 58.864C160.861 59.36 160.517 59.792 160.069 60.16C159.621 60.512 159.077 60.792 158.437 61C157.813 61.192 157.109 61.288 156.325 61.288ZM164.198 61V48.472H167.27V50.56H167.39C167.646 49.888 168.046 49.328 168.59 48.88C169.15 48.416 169.918 48.184 170.894 48.184C172.19 48.184 173.182 48.608 173.87 49.456C174.558 50.304 174.902 51.512 174.902 53.08V61H171.83V53.392C171.83 52.496 171.67 51.824 171.35 51.376C171.03 50.928 170.502 50.704 169.766 50.704C169.446 50.704 169.134 50.752 168.83 50.848C168.542 50.928 168.278 51.056 168.038 51.232C167.814 51.392 167.63 51.6 167.486 51.856C167.342 52.096 167.27 52.384 167.27 52.72V61H164.198ZM183.371 61.288C182.443 61.288 181.611 61.136 180.875 60.832C180.155 60.512 179.539 60.072 179.027 59.512C178.531 58.936 178.147 58.248 177.875 57.448C177.603 56.632 177.467 55.72 177.467 54.712C177.467 53.72 177.595 52.824 177.851 52.024C178.123 51.224 178.507 50.544 179.003 49.984C179.499 49.408 180.107 48.968 180.827 48.664C181.547 48.344 182.363 48.184 183.275 48.184C184.251 48.184 185.099 48.352 185.819 48.688C186.539 49.024 187.131 49.48 187.595 50.056C188.059 50.632 188.403 51.304 188.627 52.072C188.867 52.824 188.987 53.632 188.987 54.496V55.504H180.659V55.816C180.659 56.728 180.915 57.464 181.427 58.024C181.939 58.568 182.699 58.84 183.707 58.84C184.475 58.84 185.099 58.68 185.579 58.36C186.075 58.04 186.515 57.632 186.899 57.136L188.555 58.984C188.043 59.704 187.339 60.272 186.443 60.688C185.563 61.088 184.539 61.288 183.371 61.288ZM183.323 50.488C182.507 50.488 181.859 50.76 181.379 51.304C180.899 51.848 180.659 52.552 180.659 53.416V53.608H185.795V53.392C185.795 52.528 185.579 51.832 185.147 51.304C184.731 50.76 184.123 50.488 183.323 50.488ZM195.794 61.288C194.594 61.288 193.586 61.088 192.77 60.688C191.954 60.272 191.234 59.704 190.61 58.984L192.482 57.16C192.946 57.688 193.45 58.104 193.994 58.408C194.554 58.712 195.194 58.864 195.914 58.864C196.65 58.864 197.178 58.736 197.498 58.48C197.834 58.224 198.002 57.872 198.002 57.424C198.002 57.056 197.882 56.768 197.642 56.56C197.418 56.336 197.026 56.184 196.466 56.104L195.218 55.936C193.858 55.76 192.818 55.376 192.098 54.784C191.394 54.176 191.042 53.296 191.042 52.144C191.042 51.536 191.154 50.992 191.378 50.512C191.602 50.016 191.922 49.6 192.338 49.264C192.754 48.912 193.25 48.648 193.826 48.472C194.418 48.28 195.074 48.184 195.794 48.184C196.402 48.184 196.938 48.232 197.402 48.328C197.882 48.408 198.314 48.536 198.698 48.712C199.082 48.872 199.434 49.08 199.754 49.336C200.074 49.576 200.386 49.848 200.69 50.152L198.89 51.952C198.522 51.568 198.082 51.248 197.57 50.992C197.058 50.736 196.498 50.608 195.89 50.608C195.218 50.608 194.73 50.728 194.426 50.968C194.138 51.208 193.994 51.52 193.994 51.904C193.994 52.32 194.114 52.64 194.354 52.864C194.61 53.072 195.034 53.224 195.626 53.32L196.898 53.488C199.602 53.872 200.954 55.104 200.954 57.184C200.954 57.792 200.826 58.352 200.57 58.864C200.33 59.36 199.986 59.792 199.538 60.16C199.09 60.512 198.546 60.792 197.906 61C197.282 61.192 196.578 61.288 195.794 61.288ZM203.212 55.216V52.168H210.076V55.216H203.212ZM223.892 61.288C222.996 61.288 222.188 61.136 221.468 60.832C220.764 60.528 220.156 60.088 219.644 59.512C219.148 58.936 218.764 58.248 218.492 57.448C218.22 56.632 218.084 55.72 218.084 54.712C218.084 53.704 218.22 52.8 218.492 52C218.764 51.2 219.148 50.52 219.644 49.96C220.156 49.384 220.764 48.944 221.468 48.64C222.188 48.336 222.996 48.184 223.892 48.184C224.788 48.184 225.596 48.336 226.316 48.64C227.036 48.944 227.644 49.384 228.14 49.96C228.652 50.52 229.044 51.2 229.316 52C229.588 52.8 229.724 53.704 229.724 54.712C229.724 55.72 229.588 56.632 229.316 57.448C229.044 58.248 228.652 58.936 228.14 59.512C227.644 60.088 227.036 60.528 226.316 60.832C225.596 61.136 224.788 61.288 223.892 61.288ZM223.892 58.816C224.708 58.816 225.348 58.568 225.812 58.072C226.276 57.576 226.508 56.848 226.508 55.888V53.56C226.508 52.616 226.276 51.896 225.812 51.4C225.348 50.904 224.708 50.656 223.892 50.656C223.092 50.656 222.46 50.904 221.996 51.4C221.532 51.896 221.3 52.616 221.3 53.56V55.888C221.3 56.848 221.532 57.576 221.996 58.072C222.46 58.568 223.092 58.816 223.892 58.816ZM243.752 62.056C243.752 62.712 243.632 63.288 243.392 63.784C243.168 64.296 242.792 64.72 242.264 65.056C241.736 65.392 241.056 65.648 240.224 65.824C239.392 66 238.376 66.088 237.176 66.088C236.12 66.088 235.224 66.016 234.488 65.872C233.752 65.744 233.144 65.552 232.664 65.296C232.2 65.056 231.864 64.752 231.656 64.384C231.448 64.016 231.344 63.6 231.344 63.136C231.344 62.432 231.536 61.88 231.92 61.48C232.32 61.096 232.872 60.848 233.576 60.736V60.472C233.064 60.344 232.664 60.096 232.376 59.728C232.104 59.344 231.968 58.896 231.968 58.384C231.968 58.064 232.032 57.784 232.16 57.544C232.288 57.288 232.456 57.072 232.664 56.896C232.888 56.72 233.136 56.576 233.408 56.464C233.68 56.336 233.968 56.24 234.272 56.176V56.08C233.504 55.728 232.928 55.24 232.544 54.616C232.176 53.992 231.992 53.264 231.992 52.432C231.992 51.152 232.432 50.128 233.312 49.36C234.192 48.576 235.48 48.184 237.176 48.184C237.56 48.184 237.936 48.208 238.304 48.256C238.688 48.304 239.04 48.384 239.36 48.496V48.088C239.36 46.872 239.952 46.264 241.136 46.264H243.08V48.616H240.416V48.952C241.072 49.32 241.56 49.8 241.88 50.392C242.2 50.984 242.36 51.664 242.36 52.432C242.36 53.696 241.92 54.712 241.04 55.48C240.176 56.248 238.888 56.632 237.176 56.632C236.44 56.632 235.8 56.56 235.256 56.416C235.016 56.528 234.808 56.68 234.632 56.872C234.456 57.048 234.368 57.272 234.368 57.544C234.368 58.168 234.912 58.48 236 58.48H239.36C240.896 58.48 242.008 58.8 242.696 59.44C243.4 60.064 243.752 60.936 243.752 62.056ZM240.872 62.416C240.872 62.016 240.712 61.704 240.392 61.48C240.072 61.256 239.52 61.144 238.736 61.144H234.464C234.032 61.464 233.816 61.896 233.816 62.44C233.816 62.92 234.016 63.296 234.416 63.568C234.816 63.84 235.496 63.976 236.456 63.976H237.992C239 63.976 239.728 63.848 240.176 63.592C240.64 63.336 240.872 62.944 240.872 62.416ZM237.176 54.544C238.68 54.544 239.432 53.904 239.432 52.624V52.216C239.432 50.936 238.68 50.296 237.176 50.296C235.672 50.296 234.92 50.936 234.92 52.216V52.624C234.92 53.904 235.672 54.544 237.176 54.544ZM108.648 86.408H108.552C108.408 87.224 107.952 87.912 107.184 88.472C106.432 89.016 105.424 89.288 104.16 89.288C103.168 89.288 102.248 89.104 101.4 88.736C100.568 88.368 99.84 87.824 99.216 87.104C98.608 86.368 98.128 85.464 97.776 84.392C97.424 83.32 97.248 82.08 97.248 80.672C97.248 79.264 97.424 78.024 97.776 76.952C98.144 75.864 98.656 74.952 99.312 74.216C99.968 73.48 100.752 72.92 101.664 72.536C102.576 72.152 103.592 71.96 104.712 71.96C106.216 71.96 107.496 72.288 108.552 72.944C109.608 73.6 110.44 74.544 111.048 75.776L108.48 77.288C108.176 76.568 107.72 75.968 107.112 75.488C106.52 75.008 105.72 74.768 104.712 74.768C103.464 74.768 102.464 75.152 101.712 75.92C100.976 76.672 100.608 77.792 100.608 79.28V81.968C100.608 83.44 100.984 84.56 101.736 85.328C102.488 86.096 103.496 86.48 104.76 86.48C105.256 86.48 105.72 86.424 106.152 86.312C106.584 86.184 106.96 86 107.28 85.76C107.6 85.52 107.856 85.224 108.048 84.872C108.24 84.52 108.336 84.104 108.336 83.624V82.544H105.048V79.88H111.384V89H108.648V86.408ZM114.862 89V76.472H117.934V79.064H118.054C118.134 78.728 118.254 78.408 118.414 78.104C118.59 77.784 118.814 77.504 119.086 77.264C119.358 77.024 119.678 76.832 120.046 76.688C120.43 76.544 120.87 76.472 121.366 76.472H122.038V79.376H121.078C120.038 79.376 119.254 79.528 118.726 79.832C118.198 80.136 117.934 80.632 117.934 81.32V89H114.862ZM133.242 89C132.57 89 132.034 88.808 131.634 88.424C131.25 88.024 131.01 87.496 130.914 86.84H130.77C130.562 87.656 130.138 88.272 129.498 88.688C128.858 89.088 128.066 89.288 127.122 89.288C125.842 89.288 124.858 88.952 124.17 88.28C123.482 87.608 123.138 86.712 123.138 85.592C123.138 84.296 123.602 83.336 124.53 82.712C125.458 82.072 126.778 81.752 128.49 81.752H130.626V80.84C130.626 80.136 130.442 79.592 130.074 79.208C129.706 78.824 129.114 78.632 128.298 78.632C127.578 78.632 126.994 78.792 126.546 79.112C126.114 79.416 125.746 79.784 125.442 80.216L123.618 78.584C124.082 77.864 124.698 77.288 125.466 76.856C126.234 76.408 127.25 76.184 128.514 76.184C130.21 76.184 131.498 76.568 132.378 77.336C133.258 78.104 133.698 79.208 133.698 80.648V86.552H134.946V89H133.242ZM128.154 87.056C128.842 87.056 129.426 86.904 129.906 86.6C130.386 86.296 130.626 85.848 130.626 85.256V83.6H128.658C127.058 83.6 126.258 84.112 126.258 85.136V85.544C126.258 86.056 126.418 86.44 126.738 86.696C127.074 86.936 127.546 87.056 128.154 87.056ZM138.056 78.896H136.208V76.472H138.056V74.672C138.056 73.568 138.344 72.72 138.92 72.128C139.512 71.536 140.376 71.24 141.512 71.24H143.696V73.688H141.128V76.472H143.696V78.896H141.128V89H138.056V78.896ZM145.823 89V76.472H148.895V78.56H149.015C149.271 77.888 149.671 77.328 150.215 76.88C150.775 76.416 151.543 76.184 152.519 76.184C153.815 76.184 154.807 76.608 155.495 77.456C156.183 78.304 156.527 79.512 156.527 81.08V89H153.455V81.392C153.455 80.496 153.295 79.824 152.975 79.376C152.655 78.928 152.127 78.704 151.391 78.704C151.071 78.704 150.759 78.752 150.455 78.848C150.167 78.928 149.903 79.056 149.663 79.232C149.439 79.392 149.255 79.6 149.111 79.856C148.967 80.096 148.895 80.384 148.895 80.72V89H145.823ZM161.468 74.648C160.828 74.648 160.364 74.504 160.076 74.216C159.804 73.928 159.668 73.56 159.668 73.112V72.632C159.668 72.184 159.804 71.816 160.076 71.528C160.364 71.24 160.828 71.096 161.468 71.096C162.092 71.096 162.548 71.24 162.836 71.528C163.124 71.816 163.268 72.184 163.268 72.632V73.112C163.268 73.56 163.124 73.928 162.836 74.216C162.548 74.504 162.092 74.648 161.468 74.648ZM159.932 76.472H163.004V89H159.932V76.472ZM166.565 89V76.472H169.637V78.56H169.757C170.013 77.888 170.413 77.328 170.957 76.88C171.517 76.416 172.285 76.184 173.261 76.184C174.557 76.184 175.549 76.608 176.237 77.456C176.925 78.304 177.269 79.512 177.269 81.08V89H174.197V81.392C174.197 80.496 174.037 79.824 173.717 79.376C173.397 78.928 172.869 78.704 172.133 78.704C171.813 78.704 171.501 78.752 171.197 78.848C170.909 78.928 170.645 79.056 170.405 79.232C170.181 79.392 169.997 79.6 169.853 79.856C169.709 80.096 169.637 80.384 169.637 80.72V89H166.565ZM191.978 90.056C191.978 90.712 191.858 91.288 191.618 91.784C191.394 92.296 191.018 92.72 190.49 93.056C189.962 93.392 189.282 93.648 188.45 93.824C187.618 94 186.602 94.088 185.402 94.088C184.346 94.088 183.45 94.016 182.714 93.872C181.978 93.744 181.37 93.552 180.89 93.296C180.426 93.056 180.09 92.752 179.882 92.384C179.674 92.016 179.57 91.6 179.57 91.136C179.57 90.432 179.762 89.88 180.146 89.48C180.546 89.096 181.098 88.848 181.802 88.736V88.472C181.29 88.344 180.89 88.096 180.602 87.728C180.33 87.344 180.194 86.896 180.194 86.384C180.194 86.064 180.258 85.784 180.386 85.544C180.514 85.288 180.682 85.072 180.89 84.896C181.114 84.72 181.362 84.576 181.634 84.464C181.906 84.336 182.194 84.24 182.498 84.176V84.08C181.73 83.728 181.154 83.24 180.77 82.616C180.402 81.992 180.218 81.264 180.218 80.432C180.218 79.152 180.658 78.128 181.538 77.36C182.418 76.576 183.706 76.184 185.402 76.184C185.786 76.184 186.162 76.208 186.53 76.256C186.914 76.304 187.266 76.384 187.586 76.496V76.088C187.586 74.872 188.178 74.264 189.362 74.264H191.306V76.616H188.642V76.952C189.298 77.32 189.786 77.8 190.106 78.392C190.426 78.984 190.586 79.664 190.586 80.432C190.586 81.696 190.146 82.712 189.266 83.48C188.402 84.248 187.114 84.632 185.402 84.632C184.666 84.632 184.026 84.56 183.482 84.416C183.242 84.528 183.034 84.68 182.858 84.872C182.682 85.048 182.594 85.272 182.594 85.544C182.594 86.168 183.138 86.48 184.226 86.48H187.586C189.122 86.48 190.234 86.8 190.922 87.44C191.626 88.064 191.978 88.936 191.978 90.056ZM189.098 90.416C189.098 90.016 188.938 89.704 188.618 89.48C188.298 89.256 187.746 89.144 186.962 89.144H182.69C182.258 89.464 182.042 89.896 182.042 90.44C182.042 90.92 182.242 91.296 182.642 91.568C183.042 91.84 183.722 91.976 184.682 91.976H186.218C187.226 91.976 187.954 91.848 188.402 91.592C188.866 91.336 189.098 90.944 189.098 90.416ZM185.402 82.544C186.906 82.544 187.658 81.904 187.658 80.624V80.216C187.658 78.936 186.906 78.296 185.402 78.296C183.898 78.296 183.146 78.936 183.146 80.216V80.624C183.146 81.904 183.898 82.544 185.402 82.544ZM197.857 89.288C196.657 89.288 195.649 89.088 194.833 88.688C194.017 88.272 193.297 87.704 192.673 86.984L194.545 85.16C195.009 85.688 195.513 86.104 196.057 86.408C196.617 86.712 197.257 86.864 197.977 86.864C198.713 86.864 199.241 86.736 199.561 86.48C199.897 86.224 200.065 85.872 200.065 85.424C200.065 85.056 199.945 84.768 199.705 84.56C199.481 84.336 199.089 84.184 198.529 84.104L197.281 83.936C195.921 83.76 194.881 83.376 194.161 82.784C193.457 82.176 193.105 81.296 193.105 80.144C193.105 79.536 193.217 78.992 193.441 78.512C193.665 78.016 193.985 77.6 194.401 77.264C194.817 76.912 195.313 76.648 195.889 76.472C196.481 76.28 197.137 76.184 197.857 76.184C198.465 76.184 199.001 76.232 199.465 76.328C199.945 76.408 200.377 76.536 200.761 76.712C201.145 76.872 201.497 77.08 201.817 77.336C202.137 77.576 202.449 77.848 202.753 78.152L200.953 79.952C200.585 79.568 200.145 79.248 199.633 78.992C199.121 78.736 198.561 78.608 197.953 78.608C197.281 78.608 196.793 78.728 196.489 78.968C196.201 79.208 196.057 79.52 196.057 79.904C196.057 80.32 196.177 80.64 196.417 80.864C196.673 81.072 197.097 81.224 197.689 81.32L198.961 81.488C201.665 81.872 203.017 83.104 203.017 85.184C203.017 85.792 202.889 86.352 202.633 86.864C202.393 87.36 202.049 87.792 201.601 88.16C201.153 88.512 200.609 88.792 199.969 89C199.345 89.192 198.641 89.288 197.857 89.288ZM205.729 71.24H208.801V78.56H208.921C209.177 77.888 209.577 77.328 210.121 76.88C210.681 76.416 211.449 76.184 212.425 76.184C213.721 76.184 214.713 76.608 215.401 77.456C216.089 78.304 216.433 79.512 216.433 81.08V89H213.361V81.392C213.361 80.496 213.201 79.824 212.881 79.376C212.561 78.928 212.033 78.704 211.297 78.704C210.977 78.704 210.665 78.752 210.361 78.848C210.073 78.928 209.809 79.056 209.569 79.232C209.345 79.392 209.161 79.6 209.017 79.856C208.873 80.096 208.801 80.384 208.801 80.72V89H205.729V71.24ZM219.839 89V76.472H222.911V79.064H223.031C223.111 78.728 223.231 78.408 223.391 78.104C223.567 77.784 223.791 77.504 224.062 77.264C224.335 77.024 224.655 76.832 225.023 76.688C225.407 76.544 225.847 76.472 226.343 76.472H227.015V79.376H226.055C225.015 79.376 224.231 79.528 223.703 79.832C223.175 80.136 222.911 80.632 222.911 81.32V89H219.839ZM234.207 89.288C233.279 89.288 232.447 89.136 231.711 88.832C230.991 88.512 230.375 88.072 229.863 87.512C229.367 86.936 228.983 86.248 228.711 85.448C228.439 84.632 228.303 83.72 228.303 82.712C228.303 81.72 228.431 80.824 228.687 80.024C228.959 79.224 229.343 78.544 229.839 77.984C230.335 77.408 230.943 76.968 231.663 76.664C232.383 76.344 233.199 76.184 234.111 76.184C235.087 76.184 235.935 76.352 236.655 76.688C237.375 77.024 237.967 77.48 238.431 78.056C238.895 78.632 239.239 79.304 239.463 80.072C239.703 80.824 239.823 81.632 239.823 82.496V83.504H231.495V83.816C231.495 84.728 231.751 85.464 232.263 86.024C232.775 86.568 233.535 86.84 234.543 86.84C235.311 86.84 235.935 86.68 236.415 86.36C236.911 86.04 237.351 85.632 237.735 85.136L239.391 86.984C238.879 87.704 238.175 88.272 237.279 88.688C236.399 89.088 235.375 89.288 234.207 89.288ZM234.159 78.488C233.343 78.488 232.695 78.76 232.215 79.304C231.735 79.848 231.495 80.552 231.495 81.416V81.608H236.631V81.392C236.631 80.528 236.415 79.832 235.983 79.304C235.567 78.76 234.959 78.488 234.159 78.488ZM242.526 76.472H245.598V78.536H245.694C245.918 77.816 246.342 77.248 246.966 76.832C247.59 76.4 248.318 76.184 249.15 76.184C250.75 76.184 251.966 76.752 252.798 77.888C253.646 79.008 254.07 80.616 254.07 82.712C254.07 84.824 253.646 86.448 252.798 87.584C251.966 88.72 250.75 89.288 249.15 89.288C248.318 89.288 247.59 89.072 246.966 88.64C246.358 88.208 245.934 87.632 245.694 86.912H245.598V93.8H242.526V76.472ZM248.166 86.744C248.966 86.744 249.614 86.48 250.11 85.952C250.606 85.424 250.854 84.712 250.854 83.816V81.656C250.854 80.76 250.606 80.048 250.11 79.52C249.614 78.976 248.966 78.704 248.166 78.704C247.43 78.704 246.814 78.888 246.318 79.256C245.838 79.624 245.598 80.112 245.598 80.72V84.704C245.598 85.36 245.838 85.864 246.318 86.216C246.814 86.568 247.43 86.744 248.166 86.744ZM256.917 76.472H259.989V78.536H260.085C260.309 77.816 260.733 77.248 261.357 76.832C261.981 76.4 262.709 76.184 263.541 76.184C265.141 76.184 266.357 76.752 267.189 77.888C268.037 79.008 268.461 80.616 268.461 82.712C268.461 84.824 268.037 86.448 267.189 87.584C266.357 88.72 265.141 89.288 263.541 89.288C262.709 89.288 261.981 89.072 261.357 88.64C260.749 88.208 260.325 87.632 260.085 86.912H259.989V93.8H256.917V76.472ZM262.557 86.744C263.357 86.744 264.005 86.48 264.501 85.952C264.997 85.424 265.245 84.712 265.245 83.816V81.656C265.245 80.76 264.997 80.048 264.501 79.52C264.005 78.976 263.357 78.704 262.557 78.704C261.821 78.704 261.205 78.888 260.709 79.256C260.229 79.624 259.989 80.112 259.989 80.72V84.704C259.989 85.36 260.229 85.864 260.709 86.216C261.205 86.568 261.821 86.744 262.557 86.744ZM278.795 86.912H278.675C278.563 87.232 278.411 87.536 278.219 87.824C278.043 88.096 277.811 88.344 277.523 88.568C277.251 88.792 276.915 88.968 276.515 89.096C276.131 89.224 275.683 89.288 275.171 89.288C273.875 89.288 272.883 88.864 272.195 88.016C271.507 87.168 271.163 85.96 271.163 84.392V76.472H274.235V84.08C274.235 84.944 274.403 85.608 274.739 86.072C275.075 86.52 275.611 86.744 276.347 86.744C276.651 86.744 276.947 86.704 277.235 86.624C277.539 86.544 277.803 86.424 278.027 86.264C278.251 86.088 278.435 85.88 278.579 85.64C278.723 85.384 278.795 85.088 278.795 84.752V76.472H281.867V89H278.795V86.912ZM285.417 89V76.472H288.489V79.064H288.609C288.689 78.728 288.809 78.408 288.969 78.104C289.145 77.784 289.369 77.504 289.641 77.264C289.913 77.024 290.233 76.832 290.601 76.688C290.985 76.544 291.425 76.472 291.921 76.472H292.593V79.376H291.633C290.593 79.376 289.809 79.528 289.281 79.832C288.753 80.136 288.489 80.632 288.489 81.32V89H285.417Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57886"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/grindavikurbaer.svg b/libs/application/templates/financial-aid/src/svg/grindavikurbaer.svg deleted file mode 100644 index 207cd0a27064..000000000000 --- a/libs/application/templates/financial-aid/src/svg/grindavikurbaer.svg +++ /dev/null @@ -1,43 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M37.163 42.3959C36.1477 41.7868 35.3355 40.9746 34.3203 40.5685H35.7416C35.9447 40.9746 36.1477 41.3807 36.9599 41.7868C36.7569 41.9898 36.9599 42.1929 37.163 42.3959Z" fill="#007DC5"/> -<path d="M63.1524 69.6041C62.9494 70.4162 62.5433 71.0254 61.9341 71.8376H58.2793C59.2945 71.6345 59.9037 71.4315 60.7158 70.6193C61.325 70.2132 62.1372 69.8071 63.1524 69.6041Z" fill="#007DC5"/> -<path d="M33.5066 48.6904H30.867C30.664 48.4874 30.664 48.2843 30.4609 48.0813C30.867 46.6599 30.867 45.0356 32.2883 44.2234C33.5066 45.2386 33.5066 47.066 33.5066 48.6904Z" fill="#007DC5"/> -<path d="M62.7449 85.2386C60.7145 86.4568 58.481 87.6751 56.4505 88.4873L48.3287 92.9543C45.283 90.9239 42.0343 89.2995 38.9886 87.4721C37.5673 86.6599 36.1459 85.8477 34.7246 85.0355H62.7449V85.2386Z" fill="#007DC5"/> -<path d="M54.4211 71.6345L37.5684 71.4315L37.7714 71.2284C38.1775 70.6193 38.3805 70.2132 38.9897 70.6193C39.5988 70.2132 39.8019 70.0102 40.0049 69.401V69.198C41.2232 67.9797 43.0506 68.7919 44.675 67.3706C45.081 66.7614 45.2841 66.7614 45.8932 66.5584H46.2993C46.7054 66.3553 47.3146 66.1523 47.5176 65.9492C48.1267 65.7462 48.9389 67.1675 49.7511 67.5736C50.9694 68.1827 51.9846 67.7767 52.9998 67.1675L53.609 66.7614C54.0151 67.1675 54.2181 67.5736 54.6242 67.9797C55.4364 68.9949 54.4211 70.6193 54.4211 71.6345Z" fill="#007DC5"/> -<path d="M81.8321 62.0914C81.8321 65.5431 80.8169 68.7919 78.9895 71.8376H77.5682H68.2281L68.025 71.4315C67.0098 69.198 69.6494 67.5736 68.6342 64.934C66.8068 62.4975 65.1824 64.5279 63.355 64.3249C62.9489 63.9188 62.5428 63.5127 62.1367 63.1066C62.3398 62.9036 62.3398 62.4975 62.3398 62.0914H81.8321Z" fill="#007DC5"/> -<path d="M57.8723 70.8223V71.6345H56.0449C56.6541 71.4315 57.2632 71.2284 57.8723 70.8223Z" fill="#007DC5"/> -<path d="M40.6128 62.9035C40.2067 64.731 37.9732 65.5431 36.5519 66.5584C32.694 65.9492 31.4758 68.9949 30.0544 71.6345H19.09H18.4808H17.6687C15.8412 68.5888 14.826 65.3401 14.4199 62.2944H37.9732C37.7702 62.7005 37.5671 63.1066 37.3641 63.5127C38.7854 62.7005 39.1915 62.0914 40.6128 62.9035Z" fill="#007DC5"/> -<path d="M25.9954 47.6751C26.1984 48.0812 26.4015 48.2843 26.6045 48.6904H14.2188V40.3655H30.2594C28.2289 42.3959 27.4167 44.8325 25.9954 47.6751Z" fill="#007DC5"/> -<path d="M81.8319 40.3655C81.8319 43.2081 81.8319 45.8477 81.8319 48.6904H51.5781C51.5781 48.2843 51.5781 47.8782 51.9842 47.8782H52.3903C52.5934 47.4721 52.7964 47.066 52.5934 46.6599L53.6086 46.4568L53.8116 45.2386C54.8269 45.6447 55.436 45.6447 56.4512 45.4416V45.0355C56.4512 44.6294 56.2482 44.2233 56.2482 44.0203L56.0451 43.6142C56.8573 44.0203 56.8573 44.2233 57.8725 44.0203V43.0051C58.0756 42.3959 58.0756 40.9746 58.6847 40.5685H63.7609C64.37 41.9898 64.9791 43.6142 65.9944 44.6294C68.0248 46.2538 69.8522 47.4721 72.6949 46.8629C73.9131 46.0508 74.7253 45.6447 74.3192 43.8173C72.2888 43.6142 70.4614 43.6142 69.0401 41.7868C68.837 41.3807 68.634 40.9746 68.634 40.5685H81.8319V40.3655Z" fill="#007DC5"/> -<path d="M65.1824 85.2386C62.5428 87.066 59.7002 88.4873 57.0606 89.7056L56.6545 89.9086L48.3296 94.5787C44.2687 91.9391 39.8017 89.5025 35.3347 87.066C34.9286 86.8629 34.3194 86.4568 33.9133 86.2538C33.3042 85.8477 32.6951 85.6447 32.0859 85.2386H32.6951C34.7255 86.4568 36.5529 87.4721 38.5834 88.4873C41.8321 90.3147 45.0809 91.9391 48.1265 93.9695L48.3296 94.1726L56.8575 89.2995C59.4971 88.0812 62.1367 86.6599 64.5732 85.0355H65.1824V85.2386Z" fill="#007DC5"/> -<path d="M63.7618 85.2386C61.5283 86.6599 59.0917 87.8782 56.8582 89.0964L48.5334 93.7665C43.8633 90.7208 38.7872 88.0812 33.9141 85.2386H34.9293C36.3506 86.0507 37.7719 86.8629 39.1932 87.6751C42.2389 89.2995 45.4877 91.1269 48.5334 93.1573L56.6552 88.6903C58.6856 87.6751 60.9191 86.6599 62.9496 85.4416H63.7618V85.2386Z" fill="#007DC5"/> -<path d="M81.833 27.9797H68.2289C67.6198 27.3705 66.8076 26.7614 65.7923 26.3553C64.371 25.5431 62.7467 24.731 61.1223 24.3249C59.2949 23.3096 56.8583 23.7157 55.437 24.5279C53.8127 24.3249 53.0005 25.3401 51.7822 26.1523L51.5792 25.3401L51.7822 25.5431V25.3401C51.7822 25.137 51.7822 24.934 51.7822 24.731C51.1731 24.1218 50.5639 23.1066 49.5487 23.1066H48.7365L48.9396 23.9188C49.1426 24.731 48.3304 26.1523 48.7365 27.1675C48.1274 27.3705 47.5182 27.5736 46.9091 27.7766H33.102C31.2746 26.3553 29.2441 24.934 27.2137 22.2944C26.6045 23.9188 25.7924 26.3553 26.6045 27.9797H14.2188C14.2188 24.3249 14.2188 20.8731 14.2188 17.2183C22.5436 17.2183 31.2746 17.2183 39.8025 17.2183H50.97C52.1883 17.2183 53.6096 17.2183 54.8279 17.2183H59.2949C60.5132 17.2183 61.5284 17.2183 62.7467 17.2183C64.168 17.2183 65.3863 17.2183 66.8076 17.2183C68.4319 17.2183 69.8533 17.2183 71.4776 17.2183C72.4929 17.2183 73.305 17.2183 74.3203 17.2183C76.9599 17.2183 79.3964 17.2183 81.833 17.2183C81.833 21.0761 81.833 24.5279 81.833 27.9797Z" fill="#007DC5"/> -<path d="M64.5735 85.2386C62.1369 86.8629 59.4973 88.2842 56.8577 89.5025L48.3298 94.3756L48.1268 94.1726C45.0811 92.1421 41.8324 90.3147 38.5836 88.6903C36.5532 87.6751 34.7258 86.4568 32.6953 85.4416H33.7105C38.5836 88.2842 43.6598 90.7208 48.3298 93.9695L56.6547 89.2995C58.8882 88.2842 61.3248 86.8629 63.5583 85.4416H64.5735V85.2386Z" fill="#007DC5"/> -<path d="M35.539 73.0558C35.336 73.0558 35.336 72.8528 35.539 73.0558C35.336 73.0558 35.539 73.0558 35.539 73.0558Z" fill="black"/> -<path d="M83.0508 16.6091V16.203H82.6447C61.934 16 41.0203 16 20.5127 16H13V17.2183C13 22.2944 13 27.5736 13 32.4467C13 43.0051 13 52.9543 13 61.2792C13.203 68.3858 18.2792 76.1015 23.1523 80.5685C27.6193 84.4264 32.8985 87.269 37.7716 89.9086C41.0203 91.736 44.6751 93.7665 47.7208 95.797L47.9239 96L57.264 90.7208C69.6497 84.8325 83.0508 74.2741 82.8477 61.8883C82.8477 56.8122 82.8477 51.9391 82.8477 47.066C83.0508 37.1168 83.0508 26.7614 83.0508 16.6091ZM57.0609 89.7056L56.6548 89.9086L48.3299 94.5787C44.269 91.9391 39.802 89.5025 35.335 87.066C34.9289 86.8629 34.3198 86.4568 33.9137 86.2538C33.3046 85.8477 32.6954 85.6447 32.0863 85.2386H64.9797C62.3401 87.066 59.7005 88.4873 57.0609 89.7056ZM69.0406 28.7919C69.2437 28.9949 69.4467 29.198 69.6497 29.6041H82.0355C82.0355 32.8528 82.0355 35.8985 82.0355 38.9442H68.6345C68.6345 39.1472 68.6345 39.3503 68.8376 39.7563C68.8376 39.9594 68.8376 40.1624 69.0406 40.5685H82.2386C82.2386 43.4112 82.2386 46.0508 82.2386 48.8934H51.5787C51.5787 49.0964 51.5787 49.2995 51.7817 49.2995C51.9848 49.2995 52.1878 49.5025 52.3909 49.7056C52.797 49.9086 53.203 50.1117 53.6091 50.5178H82.0355V60.67H62.7462C62.7462 60.8731 62.7462 61.0761 62.7462 61.4822C62.7462 61.6853 62.7462 61.8883 62.5431 62.2944H82.0355C82.0355 65.7462 81.0203 68.9949 79.1929 72.0406H77.7716H68.4315L68.8376 72.8528V73.0558L68.6345 72.8528L67.6193 72.4467C67.2132 72.2437 66.6041 72.4467 66.198 72.6497C65.9949 72.8528 65.7919 73.0558 65.5888 73.4619H76.9594H78.1777H78.5838C78.3807 73.665 78.3807 73.868 78.1777 74.0711C77.7716 74.8832 77.1624 75.4924 76.5533 76.1015C74.1167 78.9442 71.0711 81.5838 67.8223 83.8173H67.4162H66.6041H29.8528C29.0406 83.2081 28.0254 82.599 27.2132 81.9898C27.0102 81.7868 26.8071 81.7868 26.6041 81.5838C26.401 81.3807 26.198 81.3807 25.9949 81.1777C25.7919 80.9746 25.5888 80.9746 25.3858 80.7716C24.9797 80.3655 24.5736 79.9594 23.9645 79.7563C22.5431 78.5381 21.3249 77.1167 20.1066 75.4924C19.4975 74.6802 19.0914 73.868 18.4822 72.8528H19.2944H19.9036H28.8376C29.2437 72.8528 29.2437 72.4467 29.4467 72.2437C29.6497 72.0406 29.8528 71.8376 29.8528 71.4315H18.8883H18.2792H17.6701C15.8426 68.3858 14.8274 65.1371 14.4213 62.0914H37.9746C38.1777 61.8883 38.3807 61.4822 38.3807 61.2792C38.5838 61.0761 38.7868 60.67 38.9898 60.467H14.2183C14.2183 57.2183 14.2183 53.7665 14.2183 50.1117H27.2132C27.2132 49.9086 27.0102 49.7056 27.0102 49.2995C27.0102 49.0964 26.8071 48.8934 26.6041 48.4873H14.2183C14.2183 45.8477 14.2183 43.0051 14.2183 40.1624H30.2589C30.4619 39.9594 30.868 39.7563 31.0711 39.3503C31.2741 39.1472 31.2741 39.1472 31.4772 39.1472C31.6802 39.1472 32.0863 39.3503 32.2893 39.3503C32.8985 39.5533 33.5076 39.7563 33.9137 40.1624H35.335C35.335 39.9594 35.132 39.7563 35.132 39.3503C35.132 39.1472 35.132 38.9442 34.9289 38.9442C34.9289 38.7411 34.9289 38.7411 34.9289 38.7411H14.2183V29.6041H29.0406C29.0406 29.401 29.0406 29.401 29.0406 29.198C28.8376 29.198 29.0406 29.198 28.6345 29.401C28.2284 29.6041 27.6193 29.401 27.4162 29.198C27.2132 28.9949 27.2132 28.7919 27.2132 28.7919C27.0102 28.5888 26.8071 28.3858 26.6041 27.9797H14.2183C14.2183 24.3249 14.2183 20.8731 14.2183 17.2183C22.5431 17.2183 31.2741 17.2183 39.802 17.2183H50.9695C52.1878 17.2183 53.6091 17.2183 54.8274 17.2183H59.2944C60.5127 17.2183 61.5279 17.2183 62.7462 17.2183C64.1675 17.2183 65.3858 17.2183 66.8071 17.2183C68.4315 17.2183 69.8528 17.2183 71.4772 17.2183C72.4924 17.2183 73.3046 17.2183 74.3198 17.2183C76.9594 17.2183 79.3959 17.2183 81.8325 17.2183C81.8325 20.8731 81.8325 24.3249 81.8325 27.7766H68.2284C68.4315 28.1827 68.8376 28.5888 69.0406 28.7919Z" fill="black"/> -<path d="M35.3355 38.9442H14.2188V29.6041H29.0411C29.4472 32.0406 32.899 30.6193 33.5081 32.6497C33.5081 33.0558 33.7111 33.4619 33.9142 33.868C34.7264 35.6954 34.7264 35.6954 32.6959 36.3046L34.5233 37.3198L33.7111 38.335H34.7264C35.1325 38.5381 35.1325 38.5381 35.3355 38.9442Z" fill="white"/> -<path d="M63.7616 40.3655H58.4824H58.6855C58.8885 40.1624 58.8885 39.9594 59.0916 39.7563C59.2946 39.5533 59.2946 39.3502 59.4977 38.9442H63.3555C63.5586 39.1472 63.5586 39.3502 63.5586 39.7563C63.5586 39.9594 63.7616 40.1624 63.7616 40.3655Z" fill="black"/> -<path d="M81.833 29.604H69.4472C69.2441 29.401 69.0411 29.198 68.838 28.7919C68.635 28.5888 68.4319 28.3858 68.2289 27.9797C67.6198 27.3705 66.8076 26.7614 65.7923 26.3553C64.371 25.5431 62.7467 24.731 61.1223 24.3249C59.2949 23.3096 56.8583 23.7157 55.437 24.5279C53.8127 24.3249 53.0005 25.3401 51.7822 26.1523L51.5792 25.3401L51.7822 25.5431V25.3401C51.7822 25.137 51.7822 24.934 51.7822 24.731C51.1731 24.1218 50.5639 23.1066 49.5487 23.1066H48.7365L48.9396 23.9188C49.1426 24.731 48.3304 26.1523 48.7365 27.1675C48.1274 27.3705 47.5182 27.5736 46.9091 27.7766C46.503 27.7766 46.3 27.9797 45.8939 27.9797C45.4878 28.1827 44.8786 28.3858 44.4726 28.3858C43.8634 28.5888 43.2543 28.7919 42.8482 29.198H35.3355C34.9294 28.9949 34.7264 28.7919 34.3203 28.3858C33.9142 28.1827 33.7111 27.9797 33.305 27.5736C31.2746 26.3553 29.2441 24.934 27.2137 22.2944C26.6045 23.9188 25.7924 26.3553 26.6045 27.9797C26.8076 28.3858 27.0106 28.5888 27.2137 28.7919L27.4167 28.9949C27.8228 29.401 28.2289 29.401 28.635 29.198C29.0411 28.9949 28.838 29.198 29.0411 28.9949C29.0411 29.198 29.0411 29.198 29.0411 29.401C29.4472 31.8376 32.899 30.4162 33.5081 32.4467C33.5081 32.8528 33.7111 33.2589 33.9142 33.665C34.7264 35.4924 34.7264 35.4924 32.6959 36.1015L34.5233 37.1167L33.7111 38.132H34.7264C35.1325 38.132 35.1325 38.335 35.3355 38.5381V38.7411C35.3355 38.9441 35.3355 39.1472 35.5385 39.1472C35.5385 39.3502 35.7416 39.7563 35.7416 39.9594C35.9446 40.3655 36.1477 40.7716 36.9599 41.1777C36.9599 41.3807 37.1629 41.5837 37.1629 41.7868C36.1477 41.1777 35.3355 40.3655 34.3203 39.9594C33.7111 39.7563 33.305 39.3502 32.6959 39.1472C32.4929 38.9441 32.0868 38.9442 31.8837 38.9442C31.6807 38.9442 31.6807 39.1472 31.4776 39.1472C31.2746 39.3502 30.8685 39.5533 30.6654 39.9594C28.4319 41.9898 27.6198 44.4264 26.1984 47.269C26.4015 47.6751 26.6045 47.8782 26.8076 48.2842C27.0106 48.4873 27.0106 48.6903 27.2137 49.0964C27.2137 49.2995 27.4167 49.5025 27.4167 49.9086H14.2188C14.2188 53.5634 14.2188 57.0152 14.2188 60.2639H38.9903C38.7873 60.467 38.5842 60.67 38.3812 61.0761C38.1781 61.2792 38.1781 61.4822 37.9751 61.8883C37.772 62.2944 37.569 62.7005 37.366 63.1066C38.5842 62.4974 39.1934 61.8883 40.4116 62.7005C40.0055 64.5279 37.772 65.3401 36.3507 66.3553C32.4929 65.7462 31.2746 68.7919 29.8533 71.4315C29.6502 71.6345 29.4472 71.8376 29.4472 72.2436C29.2441 72.4467 29.2441 72.8528 29.0411 73.0558H20.1071H19.4979H18.4827C19.0918 73.868 19.4979 74.6802 20.1071 75.4924C21.3253 77.1167 22.5436 78.5381 23.9649 79.7563C24.371 80.1624 24.7771 80.5685 25.3863 80.7716C25.5893 80.9746 25.7924 80.9746 25.9954 81.1776C26.1984 81.3807 26.4015 81.3807 26.6045 81.5837C26.8076 81.7868 27.0106 81.7868 27.2137 81.9898C28.0259 82.599 28.838 83.2081 29.8533 83.8172H66.1984H67.0106H67.4167C70.6654 81.5837 73.7111 78.9441 76.1477 76.1015C76.7568 75.4924 77.3659 74.6802 77.772 74.0711C77.9751 73.868 77.9751 73.665 78.1781 73.4619H77.772H76.5538H65.1832C65.3863 73.0558 65.5893 72.8528 65.7923 72.6497C66.1984 72.4467 66.8076 72.2436 67.2137 72.4467L68.2289 72.8528H68.4319L68.0258 72.0406L67.8228 71.6345C66.8076 69.401 69.4472 67.7766 68.4319 65.137C66.6045 62.7005 64.9802 64.7309 63.1528 64.5279C62.7467 64.1218 62.3406 63.7157 61.9345 63.3096C62.1375 63.1066 62.1375 62.7005 62.1375 62.2944C62.1375 62.0914 62.3406 61.8883 62.3406 61.4822C62.3406 61.2792 62.3406 61.0761 62.3406 60.67H81.6299V50.3147H53.2035C52.7974 50.1117 52.3913 49.9086 51.9852 49.5025C51.7822 49.2995 51.5791 49.2995 51.3761 49.0964C51.3761 48.8934 51.3761 48.8934 51.1731 48.6903C51.1731 48.2843 51.1731 47.8782 51.5792 47.8782H51.9852C52.1883 47.4721 52.3913 47.066 52.1883 46.6599L53.2035 46.4568L53.4066 45.2386C54.4218 45.6447 55.0309 45.6447 56.0462 45.4416V45.0355C56.0462 44.6294 55.8431 44.2233 55.8431 44.0203L55.6401 43.6142C56.4522 44.0203 56.4522 44.2233 57.4675 44.0203V43.0051C57.6705 42.3959 57.6705 40.9746 58.2797 40.5685H58.4827C58.6857 40.3655 58.6857 40.1624 58.8888 39.9594C59.0918 39.7563 59.0918 39.5533 59.2949 39.1472H63.1528C63.3558 39.3502 63.3558 39.5533 63.3558 39.9594C63.5588 40.1624 63.5588 40.3655 63.7619 40.7716C64.371 42.1929 64.9802 43.8172 65.9954 44.8325C68.0258 46.4568 69.8533 47.6751 72.6959 47.066C73.9142 46.2538 74.7264 45.8477 74.3203 44.0203C72.2898 43.8172 70.4624 43.8172 69.0411 41.9898C68.838 41.5837 68.635 41.1777 68.635 40.7716C68.635 40.5685 68.4319 40.3655 68.4319 39.9594C68.4319 39.7563 68.4319 39.5533 68.2289 39.1472H81.6299C81.833 35.8985 81.833 32.6497 81.833 29.604ZM36.7568 40.9746C36.5538 40.7716 36.3507 40.5685 36.3507 40.3655C36.1477 40.1624 36.1477 39.9594 36.1477 39.5533C36.1477 39.3502 36.1477 39.1472 35.9446 38.7411C35.7416 38.132 35.5385 37.7259 34.7264 37.7259L35.1325 37.1167L33.9142 36.3046C36.1477 35.4924 34.1172 33.665 34.1172 32.2436C33.305 30.0101 30.2594 31.4315 29.6502 29.604C29.6502 29.401 29.4472 29.401 29.4472 29.198C29.4472 28.9949 29.2441 28.9949 29.2441 28.9949C28.838 28.7919 28.635 28.9949 28.2289 28.9949C28.0259 28.9949 27.8228 28.9949 27.8228 28.9949C27.8228 28.9949 27.6198 28.9949 27.6198 28.7919C27.6198 28.3858 27.4167 28.1827 27.2137 27.9797C26.4015 26.7614 27.0106 24.731 27.4167 23.5127C28.838 25.3401 30.6654 26.7614 32.4929 27.9797C32.899 28.1827 33.102 28.3858 33.5081 28.7919C33.9142 28.9949 34.1172 29.198 34.5233 29.604C35.1325 30.0101 35.5385 30.4162 36.1477 30.8223C37.772 32.8528 37.9751 35.6954 39.3964 37.7259L38.3812 38.9442L37.772 39.7563L37.1629 40.3655L36.7568 40.9746ZM31.6807 50.3147C31.4776 50.1117 31.4776 49.9086 31.2746 49.5025C31.0715 49.2995 30.8685 49.0964 30.8685 48.6903C30.6654 48.4873 30.6654 48.2843 30.4624 48.0812C30.8685 46.6599 30.8685 45.0355 32.2898 44.2233C33.5081 45.2386 33.5081 47.066 33.5081 48.6903C33.5081 48.8934 33.5081 49.0964 33.5081 49.5025C33.5081 49.7056 33.5081 49.9086 33.5081 49.9086C34.3203 49.9086 35.1325 50.1117 35.7416 50.3147H31.6807ZM35.3355 73.0558C35.3355 73.0558 35.3355 72.8528 35.3355 73.0558C35.3355 73.0558 35.5385 73.0558 35.3355 73.0558ZM55.0309 72.4467C55.437 72.2436 55.8431 72.0406 56.2492 71.6345C56.8583 71.2284 57.2644 71.0254 58.0766 70.8223V71.6345H58.2797C59.2949 71.4315 59.904 71.2284 60.7162 70.4162C61.5284 70.2132 62.3406 69.8071 63.1528 69.604C62.9497 70.4162 62.5436 71.0254 61.9345 71.8375C61.7314 72.0406 61.5284 72.2436 61.3253 72.6497C61.1223 72.8528 60.9193 73.0558 60.7162 73.4619L36.5538 73.2589C36.7568 73.0558 36.9599 72.8528 37.366 72.4467C37.569 72.2436 37.772 72.0406 37.772 71.6345L37.9751 71.4315C38.3812 70.8223 38.5842 70.4162 39.1934 70.8223C39.8025 70.4162 40.0055 70.2132 40.2086 69.604V69.401C41.4269 68.1827 43.2543 68.9949 44.8786 67.5736C45.2847 66.9645 45.4878 66.9645 46.0969 66.7614H46.503C46.9091 66.5584 47.5182 66.3553 47.7213 66.1523C48.3304 65.9492 49.1426 67.3705 49.9548 67.7766C51.1731 68.3858 52.1883 67.9797 53.2035 67.3705L53.6096 66.7614C54.0157 67.1675 54.2187 67.5736 54.6248 67.9797C55.234 68.9949 54.4218 70.6193 54.4218 71.8375V72.8528C54.6248 72.6497 54.8279 72.6497 55.0309 72.4467ZM74.9294 37.5228C71.0715 37.5228 68.635 35.0863 65.9954 32.2436C65.9954 32.2436 65.7923 32.0406 65.5893 31.8376L65.3863 31.6345C65.3863 31.8376 65.3863 31.8376 65.3863 31.8376C65.3863 32.0406 65.3863 32.2436 65.5893 32.6497C65.9954 33.665 67.4167 34.6802 67.2137 36.1015C67.8228 37.1167 67.8228 37.9289 68.0258 38.9442C68.0258 39.1472 68.0258 39.3502 68.0258 39.7563C68.0258 39.9594 68.0258 40.1624 68.2289 40.5685C68.4319 41.1777 68.4319 41.5837 68.838 42.1929C70.2593 43.8172 72.0868 44.2233 74.1172 44.4264C74.3203 45.4416 73.5081 46.0507 72.6959 46.4568C70.2593 47.066 68.4319 45.6447 66.6045 44.2233C65.5893 43.2081 64.9802 41.9898 64.371 40.5685C64.168 40.3655 64.168 40.1624 63.9649 39.7563C63.9649 39.5533 63.7619 39.3502 63.7619 38.9442C63.3558 38.132 63.1528 37.3198 62.7467 36.5076C62.5436 36.3046 62.5436 35.8985 62.3406 35.6954C62.1375 35.2893 61.9345 35.0863 61.7314 34.6802C61.7314 34.6802 61.7314 34.4771 61.5284 34.2741L61.3253 34.0711C61.1223 33.868 61.1223 33.665 60.9193 33.665C60.7162 33.4619 60.5132 33.2589 60.3101 33.0558C60.1071 32.8528 60.1071 32.8528 59.904 32.8528C59.904 32.8528 59.904 32.8528 59.701 32.8528C59.0918 32.4467 58.2797 32.2436 57.4675 32.2436C57.2644 32.2436 57.2644 32.2436 57.2644 32.2436H57.0614L56.8583 32.4467L57.0614 32.6497C57.2644 32.6497 57.2644 32.8528 57.2644 32.8528C57.8736 33.0558 58.6857 33.2589 59.2949 33.4619C59.4979 33.4619 59.701 33.665 59.904 33.868C60.1071 34.0711 60.3101 34.2741 60.3101 34.6802C59.701 35.0863 58.0766 34.4771 58.6857 35.6954C59.2949 36.7106 59.0918 38.132 58.6857 39.3502C58.4827 39.5533 58.4827 39.7563 58.2797 40.1624C58.2797 40.1624 58.2797 40.3655 58.0766 40.3655C57.8736 40.3655 57.6705 40.5685 57.4675 40.9746C57.2644 41.5837 57.2644 42.599 57.0614 43.2081V43.8172C56.2492 44.0203 55.6401 42.3959 55.0309 43.6142C55.234 44.2233 55.6401 44.6294 55.6401 45.2386C54.8279 45.4416 53.8126 45.0355 53.2035 44.6294L53.0005 46.6599C52.5944 46.2538 51.9852 46.6599 51.7822 46.0507C51.1731 46.6599 52.3913 47.066 51.9852 47.8782C51.1731 47.8782 50.767 48.6903 50.97 49.2995C50.97 49.5025 51.1731 49.9086 51.1731 50.1117C51.5791 50.3147 51.9852 50.5178 52.3913 50.7208C54.6248 51.9391 56.4522 53.5634 58.4827 55.3908C61.3253 56.8122 62.1375 52.1421 64.9802 52.9543C65.9954 53.1573 67.2137 53.5634 68.0258 53.9695C67.2137 54.1726 66.1984 54.5787 65.3863 55.3908C65.5893 55.5939 65.5893 56 65.7923 56.203C63.9649 56.6091 62.1375 56.203 60.9193 57.6244C61.5284 58.6396 61.9345 59.8579 61.9345 61.2792C61.9345 61.4822 61.9345 61.6853 61.9345 62.0914C61.9345 62.2944 61.9345 62.4974 61.9345 62.9035C61.9345 63.3096 61.7314 63.5127 61.5284 63.9188C61.7314 64.5279 62.5436 65.137 63.1528 65.5431C65.1832 65.9492 66.8076 63.9188 68.2289 65.9492C69.0411 68.3858 66.6045 70.0101 67.6198 72.4467C67.0106 72.2436 66.6045 72.2436 66.1984 72.4467C65.7923 72.6497 65.5893 72.8528 65.1832 73.2589C64.9802 73.4619 64.7771 73.665 64.7771 74.0711C64.7771 74.2741 64.7771 74.2741 64.5741 74.4771C64.5741 76.1015 65.9954 78.335 63.5588 79.1472C62.3406 79.5533 60.7162 80.3655 59.2949 79.7563C59.2949 77.7259 61.5284 76.5076 61.3253 74.2741L61.5284 74.0711C61.7314 73.868 61.9345 73.665 62.1375 73.2589C62.3406 73.0558 62.5436 72.8528 62.7467 72.4467C63.3558 71.6345 63.9649 70.6193 63.9649 69.604C62.9497 69.604 61.7314 70.4162 60.5132 70.6193C60.1071 71.2284 59.4979 71.4315 58.6857 71.6345V70.6193C57.8736 71.0254 56.0462 71.8376 55.234 72.2436C55.234 70.8223 56.2492 69.401 55.234 68.1827C54.6248 67.7766 54.4218 67.1675 53.8127 66.5584C52.7974 67.1675 51.5791 68.1827 50.3609 67.3705C49.3456 66.9645 48.9396 65.3401 47.5182 65.7462C46.7061 66.7614 45.2847 65.9492 44.4726 67.5736C42.8482 68.7919 41.2238 67.7766 39.5995 69.401C39.3964 69.8071 39.3964 70.2132 38.9903 70.4162C37.9751 69.8071 37.366 71.0254 36.9599 72.0406C36.7568 72.2436 36.5538 72.6497 36.5538 72.8528C36.3507 73.2589 35.9446 73.2589 35.7416 72.8528C35.5385 72.6497 35.5385 72.4467 35.5385 72.2436C35.5385 72.0406 35.3355 72.0406 35.3355 71.8375C35.1325 71.8375 35.1325 72.0406 34.9294 72.0406L34.7264 72.2436C34.7264 72.4467 34.7264 72.6497 34.7264 73.0558C34.7264 73.2589 34.9294 73.4619 34.9294 73.868C34.9294 74.071 34.9294 74.2741 34.9294 74.4771C33.102 74.8832 31.2746 76.3046 29.0411 75.4924C28.2289 75.4924 28.635 74.4771 28.838 74.0711C29.0411 73.868 29.4472 73.4619 29.6502 73.0558C29.8533 72.8528 30.0563 72.6497 30.0563 72.2436L30.4624 71.4315C31.8837 68.9949 33.102 66.3553 36.5538 66.9645C38.1781 65.7462 40.8177 64.934 41.0208 62.4974C40.6147 62.2944 40.4116 62.0914 40.0055 61.8883C39.5995 61.6853 39.1934 61.6853 38.7873 61.8883H38.5842C38.7873 61.6853 38.7873 61.2792 38.9903 61.0761C39.1934 60.8731 39.5995 60.467 39.8025 60.2639C41.0208 59.2487 42.8482 58.8426 43.6604 57.2183C46.503 57.4213 49.7517 54.9848 51.1731 58.8426C50.5639 59.4518 49.7517 59.8579 48.9396 60.2639C48.5335 60.467 48.3304 60.67 47.9243 61.0761C47.7213 61.2792 47.5182 61.4822 47.5182 61.8883C47.5182 62.4974 47.5182 62.7005 47.5182 63.3096V64.7309C49.5487 63.5127 50.97 68.5888 53.2035 65.5431C53.0005 64.5279 52.7974 63.3096 52.7974 62.2944C52.7974 62.0914 52.7974 61.8883 52.7974 61.4822C52.7974 61.2792 52.7974 61.0761 52.5944 60.67C52.3913 58.8426 51.7822 57.2183 49.7517 56.4061C45.4878 56.6091 41.0208 54.9848 38.3812 51.3299L38.7873 50.9238C38.3812 50.7208 38.1781 50.7208 37.772 50.5178C36.7568 50.1117 35.7416 49.9086 34.7264 49.7056C34.5233 49.7056 34.3203 49.7056 34.1172 49.7056C34.1172 49.5025 34.1172 49.2995 34.1172 49.0964C34.1172 47.269 34.1172 45.0355 32.4929 43.8172C30.4624 44.6294 30.4624 46.8629 30.0563 48.2842C30.0563 48.4873 30.2594 48.6903 30.2594 48.8934C30.4624 49.0964 30.4624 49.2995 30.6654 49.7056C30.8685 50.1117 31.0715 50.1117 31.0715 50.5178C31.2746 51.1269 31.4776 51.533 30.8685 52.1421C30.2594 52.9543 29.2441 53.7665 28.2289 53.9695C28.2289 52.7513 28.0259 51.533 27.8228 50.5178C27.8228 50.3147 27.6198 50.1117 27.6198 49.7056C27.6198 49.5025 27.4167 49.2995 27.4167 48.8934C27.2137 48.4873 27.0106 48.0812 26.8076 47.6751C27.8228 45.0355 28.838 42.3959 31.2746 40.3655C31.4776 40.1624 31.4776 40.1624 31.6807 39.9594C32.0868 40.1624 32.4929 40.3655 32.899 40.3655C35.1325 41.3807 36.9599 43.0051 38.9903 44.2233C39.1934 44.0203 39.5995 43.8172 39.3964 43.4112C38.7873 42.3959 36.3507 42.599 37.569 40.9746C37.772 40.7716 37.772 40.7716 37.772 40.5685C37.9751 40.3655 38.1781 39.9594 38.3812 39.7563C38.7873 39.3502 38.9903 39.1472 39.3964 38.9442C42.239 37.1167 46.3 37.3198 49.7517 36.7106L51.3761 35.8985C49.5487 36.3046 48.3304 33.0558 46.7061 35.6954C43.8634 35.0863 42.6451 35.0863 40.4116 34.4771C39.5995 33.868 39.1934 32.8528 39.3964 31.8376C40.2086 31.4315 40.8177 33.0558 42.036 32.4467C42.239 32.0406 41.6299 31.8376 41.833 31.2284C42.239 31.0254 42.6451 31.0254 43.0512 31.0254C43.2543 31.0254 43.4573 30.8223 43.6604 30.8223C43.6604 30.8223 43.8634 30.8223 43.8634 30.6193H43.4573L42.8482 30.4162L42.036 30.2132C42.4421 29.8071 43.0512 29.604 43.6604 29.401C44.4726 28.9949 45.0817 28.7919 45.8939 28.5888C46.7061 28.3858 47.3152 28.1827 48.1274 27.7766C48.5335 27.5736 48.7365 27.3705 49.1426 27.3705C49.7517 27.3705 49.5487 27.1675 49.5487 26.9645C49.1426 26.1523 49.9548 24.731 49.5487 23.9188C50.3609 23.9188 50.767 24.731 51.1731 25.3401C51.1731 25.5431 50.97 26.1523 51.3761 26.1523L50.1578 27.1675C51.9852 27.5736 53.2035 24.731 55.437 25.3401C56.8583 24.5279 59.0918 24.1218 60.9193 25.137C62.5436 25.5431 64.168 26.1523 65.5893 27.1675C66.4015 27.3705 67.0106 27.7766 67.4167 28.3858C67.8228 28.1827 68.0258 28.5888 68.2289 28.7919C68.4319 28.9949 68.635 29.198 68.838 29.604C71.0715 32.4467 72.2898 36.1015 76.3507 35.6954C76.9599 36.5076 75.7416 37.1167 74.9294 37.5228Z" fill="white"/> -<path d="M47.1118 27.9797C46.7057 27.9797 46.5027 28.1827 46.0966 28.1827C45.6905 28.3858 45.0813 28.5888 44.6752 28.5888C44.0661 28.7919 43.457 28.9949 43.0509 29.401H35.3351C34.9291 29.198 34.726 28.9949 34.3199 28.5888C33.9138 28.3858 33.7108 28.1827 33.3047 27.7766H47.1118V27.9797Z" fill="black"/> -<path d="M61.7303 71.8376C61.5273 72.0406 61.3242 72.2437 61.1212 72.6498C60.9181 72.8528 60.7151 73.0559 60.512 73.462L36.3496 73.2589C36.5527 73.0559 36.7557 72.8528 37.1618 72.4467C37.3648 72.2437 37.5679 72.0406 37.5679 71.6346L54.4207 71.8376V72.8528C54.6237 72.6498 54.8268 72.6498 55.0298 72.4467C55.4359 72.2437 55.842 72.0406 56.2481 71.6346H58.0755H58.2785L61.7303 71.8376Z" fill="black"/> -<path d="M35.7422 50.3147H31.6813C31.4783 50.1117 31.4783 49.9086 31.2752 49.5025C31.0722 49.2995 30.8691 49.0964 30.8691 48.6903H33.5087C33.5087 48.8934 33.5087 49.0964 33.5087 49.5025C33.5087 49.7056 33.5087 49.9086 33.5087 49.9086C34.3209 50.1117 34.9301 50.1117 35.7422 50.3147Z" fill="black"/> -<path d="M35.9438 30.8223C35.5377 30.4162 34.9286 30.0102 34.3194 29.6041C33.9133 29.401 33.7103 29.198 33.3042 28.7919C33.1012 28.5888 32.8981 28.3858 32.492 27.9797C30.6646 26.7614 28.8372 25.3401 27.4159 23.5127C27.0098 24.731 26.4007 26.7614 27.2128 27.9797C27.4159 28.1827 27.6189 28.3858 27.822 28.5888C27.822 28.7919 28.025 28.7919 28.025 28.7919H28.4311C28.8372 28.7919 29.0402 28.5888 29.4463 28.7919L29.6494 28.9949C29.6494 29.198 29.6494 29.401 29.8524 29.401C30.4616 31.2284 33.5073 30.0102 34.3194 32.2437C34.3194 33.665 36.3499 35.4924 34.1164 36.3046L35.3347 37.1168L34.9286 37.7259C35.7408 37.7259 35.9438 38.132 36.1468 38.7411C36.1468 38.9442 36.1468 39.1472 36.3499 39.5533C36.3499 39.7564 36.5529 39.9594 36.5529 40.3655C36.756 40.5685 36.756 40.7716 36.959 40.9746L37.3651 40.3655L37.9743 39.5533L38.5834 38.7411L39.5986 37.5228C37.7712 35.4924 37.7712 32.8528 35.9438 30.8223ZM30.2585 27.7767C30.2585 27.9797 29.8524 27.9797 29.6494 28.1827C29.6494 27.9797 29.4463 28.1827 29.2433 28.1827C29.2433 28.1827 29.0402 28.1827 28.8372 28.1827C28.6342 28.1827 28.4311 28.1827 28.4311 28.1827C28.4311 28.1827 28.4311 28.1827 28.4311 27.9797C27.822 27.3706 27.4159 25.9492 27.822 25.1371C28.025 25.3401 28.2281 25.5432 28.4311 25.5432C28.8372 25.9492 29.0402 26.1523 29.4463 26.3553L29.6494 26.5584C30.0555 26.9645 30.2585 27.3706 30.2585 27.7767Z" fill="black"/> -<path d="M30.2582 27.7766C30.2582 27.9797 30.0552 27.9797 29.6491 27.9797C29.6491 27.9797 29.446 28.1827 29.243 28.1827C29.243 28.1827 29.0399 28.1827 28.8369 28.1827C28.6339 28.1827 28.4308 28.1827 28.4308 28.1827C28.4308 28.1827 28.4308 28.1827 28.4308 27.9797C27.8217 27.3706 27.4156 25.9492 27.8217 25.1371C28.0247 25.3401 28.2278 25.5431 28.4308 25.5431C28.8369 25.9492 29.0399 26.1523 29.446 26.3553L29.6491 26.5584C30.0552 26.9645 30.2582 27.3706 30.2582 27.7766Z" fill="#F15A31"/> -<path d="M76.3497 35.4924C72.2888 36.1015 70.8675 32.2436 68.837 29.401C68.634 29.198 68.4309 28.9949 68.2279 28.5888C68.0248 28.5888 67.8218 28.1827 67.4157 27.9797C66.8066 27.5736 66.1974 27.1675 65.5883 26.7614C64.167 25.9492 62.5426 25.137 60.9182 24.731C59.2939 23.9188 56.8573 24.1218 55.436 24.934C53.2025 24.5279 52.1873 27.3706 50.1568 26.7614L51.5781 25.9492C51.172 25.7462 51.3751 25.3401 51.3751 25.137C50.7659 24.731 50.3599 23.7157 49.7507 23.7157C49.9538 24.731 49.1416 26.1523 49.5477 26.9645C49.5477 27.1675 49.7507 27.3706 49.9538 27.5736C49.5477 27.7766 49.3446 27.9797 48.9385 27.9797C48.3294 28.3858 47.5172 28.5888 46.705 28.7919C45.8929 28.9949 45.0807 29.198 44.4715 29.6041C43.8624 29.8071 43.4563 30.0101 42.8472 30.4162L43.6594 30.6193L44.2685 30.8223H44.6746L44.4715 31.0254C44.2685 31.2284 44.0654 31.2284 43.8624 31.2284C43.4563 31.2284 43.0502 31.2284 42.6441 31.4315C42.4411 32.0406 43.0502 32.2436 42.8472 32.6497C41.4258 33.2589 41.0198 31.6345 40.2076 32.0406C40.0045 33.0558 40.4106 34.0711 41.2228 34.6802C43.2533 35.2893 44.6746 35.2893 47.5172 35.8985C49.1416 33.4619 50.1568 36.7107 52.1873 36.1015L50.5629 36.9137C47.1111 37.3198 43.0502 37.3198 40.2076 39.1472C39.8015 39.3502 39.5984 39.5533 39.1923 39.9594C38.9893 40.1624 38.7863 40.3655 38.5832 40.7716C38.5832 40.9746 38.3802 40.9746 38.3802 41.1777C36.5528 42.3959 38.9893 42.3959 39.3954 43.2081C39.5984 43.6142 39.1923 43.8173 38.9893 44.0203C36.9588 42.802 34.9284 41.1777 32.8979 40.1624C32.4918 39.9594 32.0857 39.9594 31.6797 39.7563C31.4766 40.1624 31.4766 40.3655 31.2736 40.3655C28.837 42.3959 27.8218 45.0355 26.6035 47.4721C26.8066 47.8782 27.0096 48.2843 27.2127 48.6903C27.4157 48.8934 27.4157 49.0964 27.4157 49.5025C27.4157 49.7056 27.6187 49.9086 27.6187 50.3147C27.8218 51.533 28.0248 52.5482 28.0248 53.7665C29.0401 53.5634 30.0553 52.7513 30.6644 51.9391C31.2736 51.3299 31.2736 50.7208 30.8675 50.3147C30.6644 50.1117 30.6644 49.9086 30.4614 49.5025C30.2583 49.0964 30.0553 49.0964 30.0553 48.6903C29.8522 48.4873 29.8522 48.2843 29.8522 48.0812C30.2583 46.6599 30.2583 44.4264 32.2888 43.6142C33.9132 44.6294 34.1162 46.8629 33.9132 48.8934C33.9132 49.0964 33.9132 49.2995 33.9132 49.5025C34.1162 49.5025 34.3193 49.5025 34.5223 49.5025C35.5375 49.7056 36.5528 49.9086 37.568 50.3147C37.9741 50.5178 38.1771 50.5178 38.5832 50.7208L38.1771 51.1269C40.6137 54.7817 45.0807 56.6091 49.5477 56.203C51.5781 57.0152 52.1873 58.6396 52.3903 60.467C52.3903 60.67 52.3903 60.8731 52.5934 61.2792C52.5934 61.4822 52.5934 61.6853 52.5934 62.0914C52.7964 63.3096 52.7964 64.3249 52.9995 65.3401C50.766 68.3858 49.3446 63.3096 47.3142 64.5279V63.1066C47.3142 62.7005 47.3142 62.2944 47.5172 61.8883C47.7203 61.6853 47.7203 61.2792 47.9233 61.0761C48.1264 60.8731 48.5324 60.67 48.9385 60.264C49.7507 59.8579 50.5629 59.4518 51.172 58.8426C49.5477 55.1878 46.502 57.4213 43.6594 57.2183C42.8472 58.8426 41.0198 59.2487 39.8015 60.264C39.5984 60.467 39.1923 60.67 38.9893 61.0761C38.7863 61.2792 38.5832 61.4822 38.5832 61.8883H38.7863C39.1923 61.6853 39.5984 61.6853 40.0045 61.8883C40.4106 62.0914 40.8167 62.2944 41.0198 62.4975C40.8167 64.934 38.1771 65.7462 36.5528 66.9645C33.101 66.1523 31.8827 68.9949 30.4614 71.4315L30.0553 72.2436C29.8522 72.4467 29.6492 72.6497 29.6492 73.0558C29.4462 73.4619 29.0401 73.868 28.837 74.0711C28.634 74.4771 28.4309 75.4924 29.0401 75.4924C31.2736 76.3046 33.101 75.0863 34.5223 73.665C34.5223 73.4619 34.7253 73.2589 34.5223 73.0558C34.5223 72.8528 34.3193 72.6497 34.3193 72.2436C34.3193 72.0406 34.1162 71.6345 34.3193 71.4315C34.3193 71.4315 34.3193 71.2284 34.5223 71.2284C34.7253 71.2284 34.7253 71.0254 34.9284 71.0254C34.9284 71.2284 35.1314 71.4315 35.1314 71.4315C35.3345 71.6345 35.3345 72.0406 35.3345 72.0406C35.5375 72.4467 35.9436 72.4467 36.1467 72.0406C36.3497 71.8376 36.3497 71.6345 36.5528 71.2284C37.1619 70.2132 37.771 68.9949 38.5832 69.6041C38.9893 69.401 38.9893 68.7919 39.1923 68.5888C40.6137 66.9645 42.4411 67.9797 44.0654 66.7614C44.8776 65.3401 46.2989 66.1523 47.1111 64.934C48.5324 64.5279 48.7355 65.9492 49.9538 66.5584C51.172 67.3706 52.3903 66.3553 53.4055 65.7462C54.0147 66.1523 54.2177 66.7614 54.8269 67.3705C55.8421 68.5888 54.8269 70.2132 54.8269 71.4315C55.436 70.8223 57.2634 70.0101 58.2786 69.8071V70.8223C59.0908 70.6193 59.4969 70.2132 60.106 69.8071C61.3243 69.401 62.5426 68.7919 63.5578 68.7919C63.5578 69.8071 62.9487 70.8223 62.3395 71.6345C62.1365 71.8376 61.9335 72.0406 61.7304 72.4467C61.5274 72.6497 61.3243 72.8528 61.1213 73.2589L60.9182 73.4619C61.1213 75.6954 58.8878 76.7107 58.8878 78.9442C60.5121 79.5533 61.9335 78.7411 63.1517 78.335C65.5883 77.5228 64.167 75.2893 64.167 73.665C64.167 73.4619 64.167 73.4619 64.37 73.2589C64.5731 73.0558 64.5731 72.6497 64.7761 72.4467C64.9791 72.0406 65.3852 71.8376 65.7913 71.6345C66.1974 71.4315 66.8066 71.4315 67.2126 71.6345C66.1974 69.198 68.837 67.5736 67.8218 65.1371C66.1974 63.1066 64.5731 65.137 62.7456 64.731C62.1365 64.1218 61.5274 63.7157 61.1213 63.1066C61.3243 62.7005 61.3243 62.4975 61.5274 62.0914C61.5274 61.8883 61.5274 61.6853 61.5274 61.2792C61.5274 61.0761 61.5274 60.8731 61.5274 60.467C61.5274 59.2487 61.1213 57.8274 60.5121 56.8122C61.7304 55.3909 63.7609 56 65.3852 55.3909C65.1822 55.1878 64.9791 54.7817 64.9791 54.5787C65.7913 53.7665 66.8066 53.3604 67.6187 53.1574C66.8066 52.5482 65.5883 52.3452 64.5731 52.1421C61.7304 51.3299 60.9182 56 58.0756 54.5787C56.0451 52.9543 54.0147 51.1269 51.9842 49.9086C51.5781 49.7056 51.172 49.5025 50.7659 49.2995C50.7659 49.0964 50.5629 48.8934 50.5629 48.4873C50.5629 47.6751 50.7659 47.066 51.5781 47.066C51.9842 46.2538 50.7659 45.8477 51.3751 45.2386C51.5781 45.8477 52.1873 45.4416 52.5934 45.8477L52.7964 43.8172C53.6086 44.2233 54.6238 44.6294 55.233 44.4264C55.233 43.8173 54.8269 43.4112 54.6238 42.802C55.233 41.5837 55.8421 43.2081 56.6543 43.0051V42.3959C56.8573 41.7868 56.8573 40.7716 57.0604 40.1624C57.2634 39.9594 57.2634 39.7563 57.6695 39.5533C57.6695 39.5533 57.6695 39.3502 57.8725 39.3502C58.0756 39.1472 58.0756 38.9442 58.2786 38.5381C58.6847 37.3198 58.8878 36.1015 58.2786 34.8832C57.6695 33.665 59.4969 34.2741 59.903 33.868C59.7 33.4619 59.7 33.2589 59.4969 33.0558C59.2939 32.8528 59.0908 32.6497 58.8878 32.6497C58.2786 32.4467 57.4665 32.2436 56.8573 32.0406C56.8573 32.0406 56.6543 32.0406 56.6543 31.8376C56.4512 31.8376 56.4512 31.6345 56.4512 31.6345L56.6543 31.4315H56.8573C57.0604 31.4315 57.0604 31.4315 57.0604 31.4315C58.2786 32.0406 59.0908 32.2436 59.7 32.6497C59.7 32.6497 59.7 32.6497 59.903 32.6497C60.1061 32.6497 60.106 32.8528 60.3091 32.8528C60.5121 33.0558 60.7152 33.2589 60.9182 33.4619C61.1213 33.665 61.3243 33.665 61.3243 33.868C61.3243 34.0711 61.5274 34.2741 61.5274 34.2741C61.7304 34.4771 61.7304 34.6802 61.9335 34.8832C62.1365 35.2893 62.3396 35.4924 62.5426 35.8985C62.7456 36.1015 62.7456 36.5076 62.9487 36.7107C63.3548 37.5228 63.5578 38.335 63.9639 39.1472C64.167 39.3502 64.167 39.5533 64.167 39.9594C64.37 40.1624 64.37 40.3655 64.5731 40.7716C65.1822 42.1929 65.7913 43.4112 66.8066 44.4264C68.4309 45.8477 70.2583 47.066 72.8979 46.6599C73.7101 46.2538 74.5223 45.8477 74.3192 44.6294C72.2888 44.4264 70.4614 44.2233 69.0401 42.3959C68.837 41.7868 68.634 41.3807 68.4309 40.7716C68.4309 40.5685 68.4309 40.3655 68.2279 39.9594C68.2279 39.7563 68.2279 39.5533 68.2279 39.1472C68.0248 38.335 68.0248 37.3198 67.4157 36.3046C67.6187 34.8832 66.4005 33.868 65.7913 32.8528C65.7913 32.6497 65.5883 32.4467 65.5883 32.0406V31.8376L65.7913 32.0406L65.9944 32.2436C68.634 34.8832 71.0705 37.5228 74.9284 37.5228C75.7406 37.1167 76.9588 36.5076 76.3497 35.4924ZM44.0654 34.0711C43.4563 34.0711 42.6441 34.0711 41.8319 33.868C41.4258 33.665 40.8167 33.4619 40.6137 33.0558C40.4106 32.8528 40.4106 32.6497 40.4106 32.4467C40.4106 32.4467 40.6137 32.4467 40.6137 32.6497C41.0198 33.0558 41.6289 33.2589 42.4411 33.2589C43.2533 33.4619 44.0654 33.4619 44.4715 33.2589C44.6746 33.4619 44.4715 33.665 44.8776 33.665C44.6746 34.0711 44.4715 34.0711 44.0654 34.0711ZM30.2583 50.1117C30.2583 50.1117 30.2583 50.1117 30.2583 50.3147C30.0553 50.7208 29.8522 51.9391 29.4462 52.5482H29.2431H29.0401C29.0401 52.5482 28.837 51.3299 28.634 50.1117C28.634 49.9086 28.634 49.5025 28.4309 49.2995C28.4309 48.8934 28.2279 48.6903 28.2279 48.6903H28.4309H28.837C29.2431 48.8934 29.4462 49.0964 29.8522 49.5025C30.0553 49.7056 30.2583 50.1117 30.2583 50.1117ZM33.7101 73.0558C33.5071 73.665 32.6949 74.0711 32.0857 74.2741L31.0705 74.8832C30.6644 74.2741 32.6949 72.8528 31.4766 73.0558L29.4462 74.8832C29.6492 74.2741 30.0553 73.665 30.4614 73.0558C30.6644 72.8528 30.8675 72.6497 31.0705 72.2436C31.2736 72.0406 31.4766 71.6345 31.6797 71.4315C31.8827 71.2284 31.8827 71.0254 32.0857 71.0254C32.4918 71.0254 32.8979 71.2284 33.304 71.4315C33.5071 71.6345 33.7101 71.8376 33.7101 72.2436C33.7101 72.2436 33.7101 72.2436 33.7101 72.4467C33.7101 72.6497 33.7101 72.8528 33.7101 73.0558ZM62.5426 77.9289L61.7304 78.132L61.3243 78.335H61.1213C61.1213 77.7259 61.7304 76.5076 61.5274 76.1015L59.903 77.9289C59.903 77.7259 59.903 77.7259 59.903 77.5228C60.1061 76.9137 60.5121 76.1015 61.1213 75.2893C62.1365 74.2741 63.5578 73.665 63.7609 76.1015C64.37 77.3198 63.1517 77.5228 62.5426 77.9289ZM51.5781 30.6193C50.969 30.8223 50.3599 30.8223 49.7507 30.8223L50.1568 30.0101C50.1568 29.8071 49.9538 29.8071 50.1568 29.6041C50.3599 29.401 51.172 29.401 51.3751 29.401L50.3599 29.6041L50.1568 30.0101C50.3599 30.2132 50.5629 30.4162 50.7659 30.8223C51.172 30.6193 51.3751 30.6193 51.5781 30.6193C51.7812 30.6193 51.9842 30.4162 51.9842 30.4162C51.9842 30.4162 51.7812 30.6193 51.5781 30.6193ZM52.5934 29.6041C52.5934 30.0101 52.3903 30.2132 52.1873 30.4162C52.1873 30.4162 52.1873 30.4162 52.1873 30.2132C52.1873 30.0101 52.1873 29.8071 51.9842 29.6041H52.5934ZM66.4005 35.2893C65.9944 36.7107 66.8066 37.7259 67.0096 38.9442C67.0096 39.1472 67.0096 39.3502 67.0096 39.7563C67.0096 39.9594 67.0096 40.1624 66.8066 40.3655C67.2126 41.9898 68.2279 43.8173 70.0553 44.6294L71.6797 45.0355C70.8675 45.2386 68.0248 44.0203 66.6035 42.599C65.9944 41.9898 65.5883 41.1777 65.1822 40.3655C64.9791 40.1624 64.9791 39.9594 64.7761 39.5533C64.5731 39.3502 64.5731 39.1472 64.5731 38.7411C63.1517 34.8832 61.9335 30.4162 56.8573 30.4162C56.4512 30.0101 56.0451 29.8071 55.8421 29.401C55.8421 29.198 55.8421 28.9949 55.8421 28.7919C55.8421 28.7919 56.0451 28.7919 56.0451 28.5888C57.2634 28.1827 58.2786 28.1827 59.2939 28.5888C59.7 28.7919 60.3091 28.9949 60.7152 29.401C61.5274 30.0101 62.3396 30.8223 62.9487 31.4315C64.7761 32.0406 64.7761 34.2741 66.4005 35.2893ZM64.37 29.6041C63.9639 29.401 63.7609 29.198 63.3548 28.7919C62.9487 28.5888 62.5426 28.1827 62.1365 27.9797C60.106 26.7614 57.6695 26.3553 54.8269 27.5736L54.0147 26.7614C55.8421 25.137 58.0756 26.1523 60.106 25.9492C61.7304 26.5584 63.5578 26.3553 64.5731 27.9797C64.9791 27.9797 65.1822 28.1827 65.5883 28.1827C65.7913 28.1827 66.1974 28.3858 66.4005 28.7919C66.6035 28.9949 66.8066 29.198 67.0096 29.6041C67.4157 30.2132 67.8218 30.6193 68.4309 30.8223L70.2583 33.868L73.5071 36.3046C70.2583 35.4924 67.4157 32.0406 64.37 29.6041Z" fill="black"/> -<path d="M30.259 50.1117C30.259 50.1117 30.259 50.1117 30.259 50.3147C30.0559 50.7208 29.8529 51.9391 29.4468 52.5482C29.2437 52.5482 29.2437 52.5482 29.2437 52.5482H29.0407C29.0407 52.5482 28.8377 51.3299 28.6346 50.1117C28.6346 49.9086 28.6346 49.5025 28.4316 49.2995C28.4316 48.8934 28.2285 48.6903 28.2285 48.6903H28.4316H28.8377C29.2437 48.8934 29.4468 49.0964 29.8529 49.5025C30.0559 49.7056 30.259 50.1117 30.259 50.1117Z" fill="#F15A31"/> -<path d="M33.7112 73.0558C33.5082 73.665 32.696 74.071 32.0869 74.2741L31.0716 74.8832C30.6655 74.2741 32.696 72.8528 31.4777 73.0558L29.4473 74.8832C29.6503 74.2741 30.0564 73.665 30.4625 73.0558C30.6655 72.8528 30.8686 72.6497 31.0716 72.2436C31.2747 72.0406 31.4777 71.6345 31.6808 71.4314C31.8838 71.2284 31.8838 71.0254 32.0869 71.0254C32.4929 71.0254 32.899 71.2284 33.3051 71.4314C33.5082 71.6345 33.7112 71.8375 33.7112 72.2436C33.7112 72.2436 33.7112 72.2436 33.7112 72.4467C33.7112 72.6497 33.7112 72.8528 33.7112 73.0558Z" fill="#F15A31"/> -<path d="M62.5419 77.9289C62.3389 77.9289 61.9328 78.132 61.7298 78.132L61.3237 78.335H61.1206C61.1206 77.7259 61.7298 76.5076 61.5267 76.1015L59.9023 77.9289C59.9023 77.7259 59.9023 77.7259 59.9023 77.5229C60.1054 76.9137 60.5115 76.1015 61.1206 75.2894C62.1358 74.2741 63.5572 73.665 63.7602 76.1015C64.3694 77.3198 63.1511 77.5229 62.5419 77.9289Z" fill="#F15A31"/> -<path d="M62.5426 77.9289L61.7305 78.132C61.9335 78.132 62.3396 78.132 62.5426 77.9289Z" fill="#F15A31"/> -<path d="M51.9842 30.4162C51.7812 30.6193 51.7812 30.6193 51.5781 30.6193C51.7812 30.6193 51.9842 30.4162 51.9842 30.4162Z" fill="white"/> -<path d="M50.3616 29.6041L50.1586 30.0102C50.1586 29.8071 49.9556 29.8071 50.1586 29.6041H50.3616Z" fill="white"/> -<path d="M51.5774 30.6193C50.9683 30.8224 50.3591 30.8224 49.75 30.8224L50.1561 30.0102C50.3591 30.2132 50.5622 30.4163 50.7652 30.8224C51.1713 30.6193 51.3744 30.6193 51.5774 30.6193Z" fill="white"/> -<path d="M52.5935 29.6041C52.5935 30.0102 52.3905 30.2132 52.1874 30.4162C52.1874 30.4162 52.1874 30.4162 52.1874 30.2132C52.1874 30.0102 52.1874 29.8071 51.9844 29.6041H52.5935Z" fill="white"/> -<path d="M51.3765 29.401L50.3612 29.6041H50.1582C50.3612 29.198 51.1734 29.401 51.3765 29.401Z" fill="white"/> -<path d="M73.7091 36.1015C70.4604 35.2893 67.6177 31.8375 64.369 29.401C63.9629 29.1979 63.7599 28.9949 63.3538 28.5888C62.9477 28.3858 62.5416 27.9797 62.1355 27.7766C60.105 26.5584 57.6685 26.1523 54.8259 27.3705L54.0137 26.5584C55.8411 24.934 58.0746 25.9492 60.105 25.7462C61.7294 26.3553 63.5568 26.1523 64.572 27.7766C64.9781 27.7766 65.1812 27.9797 65.5873 27.9797C65.7903 28.1827 66.1964 28.3858 66.3995 28.7919C66.6025 28.9949 66.8055 29.1979 67.0086 29.604C67.4147 30.2132 67.8208 30.6193 68.4299 30.8223L70.2573 33.868L73.7091 36.1015Z" fill="#FFD400"/> -<path d="M71.6794 45.0355C70.8672 45.2386 68.0245 44.0203 66.6032 42.599C65.9941 41.9898 65.588 41.1776 65.1819 40.3655C64.9789 40.1624 64.9789 39.9594 64.7758 39.5533C64.5728 39.3502 64.5728 39.1472 64.5728 38.7411C63.1514 34.8832 61.9332 30.4162 56.857 30.4162C56.4509 30.0101 56.0448 29.8071 55.8418 29.401C55.8418 29.1979 55.8418 28.9949 55.8418 28.7919C55.8418 28.7919 56.0448 28.7919 56.0448 28.5888C57.2631 28.1827 58.2783 28.1827 59.2936 28.5888C59.6997 28.7919 60.3088 28.9949 60.7149 29.401C61.5271 30.0101 62.3393 30.8223 62.9484 31.4314C64.5728 31.8375 64.5728 34.071 66.1971 35.0863C65.791 36.5076 66.6032 37.5228 66.8063 38.7411C66.8063 38.9441 66.8063 39.1472 66.8063 39.5533C66.8063 39.7563 66.8063 39.9594 66.6032 40.1624C67.0093 41.7868 68.0245 43.6142 69.8519 44.4264L71.6794 45.0355Z" fill="#FFD400"/> -<path d="M40.6152 33.2589C40.4121 33.0558 40.4121 32.8528 40.4121 32.6497C40.4121 32.8528 40.6152 33.0558 40.6152 33.2589Z" fill="#F15A31"/> -<path d="M44.8791 33.868C44.6761 34.0711 44.473 34.0711 44.0669 34.2741C43.4578 34.2741 42.6456 34.2741 41.8334 34.0711C41.4273 33.868 40.8182 33.665 40.6152 33.2589C40.4121 33.0558 40.4121 32.8528 40.4121 32.6497C40.4121 32.6497 40.6152 32.6498 40.6152 32.8528C41.0212 33.2589 41.6304 33.4619 42.4426 33.4619C43.2548 33.665 44.0669 33.665 44.473 33.4619C44.8791 33.665 44.6761 33.868 44.8791 33.868Z" fill="#F15A31"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.648 72.408H108.552C108.408 73.224 107.952 73.912 107.184 74.472C106.432 75.016 105.424 75.288 104.16 75.288C103.168 75.288 102.248 75.104 101.4 74.736C100.568 74.368 99.84 73.824 99.216 73.104C98.608 72.368 98.128 71.464 97.776 70.392C97.424 69.32 97.248 68.08 97.248 66.672C97.248 65.264 97.424 64.024 97.776 62.952C98.144 61.864 98.656 60.952 99.312 60.216C99.968 59.48 100.752 58.92 101.664 58.536C102.576 58.152 103.592 57.96 104.712 57.96C106.216 57.96 107.496 58.288 108.552 58.944C109.608 59.6 110.44 60.544 111.048 61.776L108.48 63.288C108.176 62.568 107.72 61.968 107.112 61.488C106.52 61.008 105.72 60.768 104.712 60.768C103.464 60.768 102.464 61.152 101.712 61.92C100.976 62.672 100.608 63.792 100.608 65.28V67.968C100.608 69.44 100.984 70.56 101.736 71.328C102.488 72.096 103.496 72.48 104.76 72.48C105.256 72.48 105.72 72.424 106.152 72.312C106.584 72.184 106.96 72 107.28 71.76C107.6 71.52 107.856 71.224 108.048 70.872C108.24 70.52 108.336 70.104 108.336 69.624V68.544H105.048V65.88H111.384V75H108.648V72.408ZM114.862 75V62.472H117.934V65.064H118.054C118.134 64.728 118.254 64.408 118.414 64.104C118.59 63.784 118.814 63.504 119.086 63.264C119.358 63.024 119.678 62.832 120.046 62.688C120.43 62.544 120.87 62.472 121.366 62.472H122.038V65.376H121.078C120.038 65.376 119.254 65.528 118.726 65.832C118.198 66.136 117.934 66.632 117.934 67.32V75H114.862ZM125.82 60.648C125.18 60.648 124.716 60.504 124.428 60.216C124.156 59.928 124.02 59.56 124.02 59.112V58.632C124.02 58.184 124.156 57.816 124.428 57.528C124.716 57.24 125.18 57.096 125.82 57.096C126.444 57.096 126.9 57.24 127.188 57.528C127.476 57.816 127.62 58.184 127.62 58.632V59.112C127.62 59.56 127.476 59.928 127.188 60.216C126.9 60.504 126.444 60.648 125.82 60.648ZM124.284 62.472H127.356V75H124.284V62.472ZM130.917 75V62.472H133.989V64.56H134.109C134.365 63.888 134.765 63.328 135.309 62.88C135.869 62.416 136.637 62.184 137.613 62.184C138.909 62.184 139.901 62.608 140.589 63.456C141.277 64.304 141.621 65.512 141.621 67.08V75H138.549V67.392C138.549 66.496 138.389 65.824 138.069 65.376C137.749 64.928 137.221 64.704 136.485 64.704C136.165 64.704 135.853 64.752 135.549 64.848C135.261 64.928 134.997 65.056 134.757 65.232C134.533 65.392 134.349 65.6 134.205 65.856C134.061 66.096 133.989 66.384 133.989 66.72V75H130.917ZM152.802 72.912H152.682C152.458 73.632 152.034 74.208 151.41 74.64C150.786 75.072 150.058 75.288 149.226 75.288C147.642 75.288 146.426 74.72 145.578 73.584C144.746 72.448 144.33 70.824 144.33 68.712C144.33 66.616 144.746 65.008 145.578 63.888C146.426 62.752 147.642 62.184 149.226 62.184C150.058 62.184 150.786 62.4 151.41 62.832C152.034 63.248 152.458 63.816 152.682 64.536H152.802V57.24H155.874V75H152.802V72.912ZM150.21 72.744C150.946 72.744 151.562 72.568 152.058 72.216C152.554 71.864 152.802 71.36 152.802 70.704V66.72C152.802 66.112 152.554 65.624 152.058 65.256C151.562 64.888 150.946 64.704 150.21 64.704C149.41 64.704 148.762 64.976 148.266 65.52C147.786 66.048 147.546 66.76 147.546 67.656V69.816C147.546 70.712 147.786 71.424 148.266 71.952C148.762 72.48 149.41 72.744 150.21 72.744ZM168.633 75C167.961 75 167.425 74.808 167.025 74.424C166.641 74.024 166.401 73.496 166.305 72.84H166.161C165.953 73.656 165.529 74.272 164.889 74.688C164.249 75.088 163.457 75.288 162.513 75.288C161.233 75.288 160.249 74.952 159.561 74.28C158.873 73.608 158.529 72.712 158.529 71.592C158.529 70.296 158.993 69.336 159.921 68.712C160.849 68.072 162.169 67.752 163.881 67.752H166.017V66.84C166.017 66.136 165.833 65.592 165.465 65.208C165.097 64.824 164.505 64.632 163.689 64.632C162.969 64.632 162.385 64.792 161.937 65.112C161.505 65.416 161.137 65.784 160.833 66.216L159.009 64.584C159.473 63.864 160.089 63.288 160.857 62.856C161.625 62.408 162.641 62.184 163.905 62.184C165.601 62.184 166.889 62.568 167.769 63.336C168.649 64.104 169.089 65.208 169.089 66.648V72.552H170.337V75H168.633ZM163.545 73.056C164.233 73.056 164.817 72.904 165.297 72.6C165.777 72.296 166.017 71.848 166.017 71.256V69.6H164.049C162.449 69.6 161.649 70.112 161.649 71.136V71.544C161.649 72.056 161.809 72.44 162.129 72.696C162.465 72.936 162.937 73.056 163.545 73.056ZM175.3 75L171.124 62.472H174.148L175.9 67.872L177.124 72.336H177.292L178.516 67.872L180.22 62.472H183.148L178.948 75H175.3ZM185.198 75V62.472H188.27V75H185.198ZM187.07 61.056L185.222 60.168L187.502 55.68L190.094 56.952L187.07 61.056ZM191.831 57.24H194.903V67.944H195.023L196.679 65.688L199.487 62.472H202.967L198.647 67.32L203.423 75H199.775L196.559 69.384L194.903 71.184V75H191.831V57.24ZM212.561 72.912H212.441C212.329 73.232 212.177 73.536 211.985 73.824C211.809 74.096 211.577 74.344 211.289 74.568C211.017 74.792 210.681 74.968 210.281 75.096C209.897 75.224 209.449 75.288 208.937 75.288C207.641 75.288 206.649 74.864 205.961 74.016C205.273 73.168 204.929 71.96 204.929 70.392V62.472H208.001V70.08C208.001 70.944 208.169 71.608 208.505 72.072C208.841 72.52 209.377 72.744 210.113 72.744C210.417 72.744 210.713 72.704 211.001 72.624C211.305 72.544 211.569 72.424 211.793 72.264C212.017 72.088 212.201 71.88 212.345 71.64C212.489 71.384 212.561 71.088 212.561 70.752V62.472H215.633V75H212.561V72.912ZM219.182 75V62.472H222.254V65.064H222.374C222.454 64.728 222.574 64.408 222.734 64.104C222.91 63.784 223.134 63.504 223.406 63.264C223.678 63.024 223.998 62.832 224.366 62.688C224.75 62.544 225.19 62.472 225.686 62.472H226.358V65.376H225.398C224.358 65.376 223.574 65.528 223.046 65.832C222.518 66.136 222.254 66.632 222.254 67.32V75H219.182ZM228.604 57.24H231.676V64.536H231.772C231.996 63.816 232.42 63.248 233.044 62.832C233.668 62.4 234.396 62.184 235.228 62.184C236.828 62.184 238.044 62.752 238.876 63.888C239.724 65.008 240.148 66.616 240.148 68.712C240.148 70.824 239.724 72.448 238.876 73.584C238.044 74.72 236.828 75.288 235.228 75.288C234.396 75.288 233.668 75.072 233.044 74.64C232.436 74.208 232.012 73.632 231.772 72.912H231.676V75H228.604V57.24ZM234.244 72.744C235.044 72.744 235.692 72.48 236.188 71.952C236.684 71.424 236.932 70.712 236.932 69.816V67.656C236.932 66.76 236.684 66.048 236.188 65.52C235.692 64.976 235.044 64.704 234.244 64.704C233.508 64.704 232.892 64.888 232.396 65.256C231.916 65.624 231.676 66.112 231.676 66.72V70.704C231.676 71.36 231.916 71.864 232.396 72.216C232.892 72.568 233.508 72.744 234.244 72.744ZM247.627 69.504C246.859 69.52 246.267 69.664 245.851 69.936C245.435 70.192 245.227 70.576 245.227 71.088V71.472C245.227 71.984 245.387 72.376 245.707 72.648C246.027 72.92 246.507 73.056 247.147 73.056C247.819 73.056 248.395 72.904 248.875 72.6C249.355 72.296 249.595 71.848 249.595 71.256V69.504H247.627ZM257.827 67.608V67.392C257.827 66.528 257.611 65.832 257.179 65.304C256.763 64.76 256.155 64.488 255.355 64.488C254.539 64.488 253.891 64.76 253.411 65.304C252.931 65.848 252.691 66.552 252.691 67.416V67.608H257.827ZM255.787 72.792C256.539 72.792 257.171 72.632 257.683 72.312C258.195 71.992 258.627 71.6 258.979 71.136L260.635 72.984C260.123 73.704 259.427 74.272 258.547 74.688C257.667 75.088 256.659 75.288 255.523 75.288C254.915 75.288 254.347 75.216 253.819 75.072C253.291 74.928 252.819 74.736 252.403 74.496C252.003 74.256 251.659 73.984 251.371 73.68C251.083 73.376 250.867 73.056 250.723 72.72H250.579C250.467 73.04 250.291 73.352 250.051 73.656C249.827 73.96 249.531 74.232 249.163 74.472C248.795 74.712 248.355 74.904 247.843 75.048C247.347 75.208 246.763 75.288 246.091 75.288C244.827 75.288 243.843 74.944 243.139 74.256C242.451 73.568 242.107 72.672 242.107 71.568C242.107 70.912 242.235 70.336 242.491 69.84C242.747 69.344 243.107 68.936 243.571 68.616C244.035 68.28 244.595 68.032 245.251 67.872C245.907 67.696 246.643 67.608 247.459 67.608H249.595V66.84C249.595 66.136 249.411 65.592 249.043 65.208C248.675 64.824 248.091 64.632 247.291 64.632C246.555 64.632 245.963 64.784 245.515 65.088C245.083 65.392 244.715 65.768 244.411 66.216L242.587 64.584C243.051 63.864 243.667 63.288 244.435 62.856C245.203 62.408 246.219 62.184 247.483 62.184C248.443 62.184 249.211 62.384 249.787 62.784C250.363 63.168 250.811 63.656 251.131 64.248H251.275C251.595 63.656 252.115 63.168 252.835 62.784C253.555 62.384 254.419 62.184 255.427 62.184C256.403 62.184 257.243 62.352 257.947 62.688C258.651 63.024 259.227 63.48 259.675 64.056C260.139 64.632 260.475 65.304 260.683 66.072C260.907 66.824 261.019 67.632 261.019 68.496V69.504H252.667V69.816C252.667 70.712 252.939 71.432 253.483 71.976C254.027 72.52 254.795 72.792 255.787 72.792ZM263.737 75V62.472H266.809V65.064H266.929C267.009 64.728 267.129 64.408 267.289 64.104C267.465 63.784 267.689 63.504 267.961 63.264C268.233 63.024 268.553 62.832 268.921 62.688C269.305 62.544 269.745 62.472 270.241 62.472H270.913V65.376H269.953C268.913 65.376 268.129 65.528 267.601 65.832C267.073 66.136 266.809 66.632 266.809 67.32V75H263.737Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/grundafjardarbaer.svg b/libs/application/templates/financial-aid/src/svg/grundafjardarbaer.svg deleted file mode 100644 index 75dd2962460e..000000000000 --- a/libs/application/templates/financial-aid/src/svg/grundafjardarbaer.svg +++ /dev/null @@ -1,9 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M79.7809 62.9589C67.3973 55.3973 50.959 54.7397 35.9453 55.6165C28.9316 57.4795 21.0412 57.6987 16.3288 64.1644C15.1234 67.5617 17.9727 69.863 20.0549 72.1644C27.7261 78.9589 37.0412 82.3562 46.5754 85.0959C55.6713 81.4795 63.0138 73.6987 72.0001 70.1918C74.7398 69.0959 77.4795 67.8904 80.7672 68.1096C81.5343 69.3151 80.2192 70.0822 79.8905 71.0685C61.3699 78.8493 43.7261 90.3562 22.3562 90.7945C16.6576 90.3562 11.6165 85.7534 8.7672 80.7124C8.21925 79.2877 8.00007 76.7671 9.09596 75.4521L29.4795 37.7534C29.5891 37.863 65.096 37.7534 65.096 37.7534C65.096 37.7534 76.0549 54.5206 79.7809 62.9589ZM52.2741 68.548C58.411 65.0411 66.8494 65.1507 73.9727 66.137V66.5754C68.6028 66.7945 63.7809 68.2192 59.0686 70.0822C60.274 70.7397 62.0275 71.5069 62.9042 72.4932C57.4247 72.6028 51.6165 73.2603 46.9042 76C41.5343 76.2192 34.8494 75.8904 30.4658 75.8904V75.6713C35.6165 74.685 40.7672 73.8082 45.5891 72.0548C39.233 67.3425 30.4658 67.0137 22.2466 65.9178C27.5069 65.1507 32.3288 62.5206 37.9179 63.3973L52.2741 68.548ZM87.5617 78.1918C87.3425 78.8493 87.0138 79.3973 86.5754 79.9452L85.9179 79.6165L81.2056 71.2877L82.3014 68.9863C85.4795 70.9589 87.7809 74.685 87.5617 78.1918Z" fill="#2A357B"/> -<path d="M78.9035 73.2603L77.5885 77.3151L54.7939 87.6165L50.3008 85.9726L78.9035 73.2603Z" fill="#2A357B"/> -<path d="M85.5891 80.7123C86.0274 82.2466 84.0548 82.9041 83.6165 84H82.9589C82.1918 81.6986 79.8904 79.2877 78.9041 77.7534C79.3425 76.4384 79.3425 74.5753 80.6576 73.3699L85.5891 80.7123ZM81.9726 85.7534C80.7672 86.1918 80.1096 88.0548 78.685 87.8356L76.6028 84.2192L78.4658 79.2877C79.7809 81.1507 81.5343 83.3425 81.9726 85.7534ZM75.0685 83.7808C75.0685 83.7808 66.6302 87.2877 62.2466 89.589C60.8219 88.8219 57.7535 87.9452 57.7535 87.9452L76.4932 79.3973L75.0685 83.7808ZM77.5891 88.7123C76.8219 89.589 75.7261 90.3562 74.411 90.3562C73.9726 88.9315 74.9589 87.5069 75.6165 86.3014C76.6028 86.7397 77.0411 87.726 77.5891 88.7123ZM73.9726 86.1918C73.3151 88.1644 73.2055 90.0274 71.8904 91.2329C70.0274 91.2329 65.6439 90.0274 65.6439 90.0274C65.6439 90.0274 71.5617 86.9589 73.9726 86.1918ZM38.9041 20L51.8356 22.8493C53.4795 22.7397 54.5754 21.5342 56.1096 21.5342C56.7672 21.5342 58.411 25.4795 58.411 25.4795H35.5069C35.5069 25.589 37.6987 20 38.9041 20ZM34.7398 27.6712H58.9589L60.9315 31.1781H32.9863C32.9863 31.1781 34.5206 28.2192 34.7398 27.6712Z" fill="#2A357B"/> -<path d="M61.9191 32.8219L63.6725 35.8904H30.3574L32.1108 32.8219H61.9191Z" fill="#2A357B"/> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M108.648 58.408H108.552C108.408 59.224 107.952 59.912 107.184 60.472C106.432 61.016 105.424 61.288 104.16 61.288C103.168 61.288 102.248 61.104 101.4 60.736C100.568 60.368 99.84 59.824 99.216 59.104C98.608 58.368 98.128 57.464 97.776 56.392C97.424 55.32 97.248 54.08 97.248 52.672C97.248 51.264 97.424 50.024 97.776 48.952C98.144 47.864 98.656 46.952 99.312 46.216C99.968 45.48 100.752 44.92 101.664 44.536C102.576 44.152 103.592 43.96 104.712 43.96C106.216 43.96 107.496 44.288 108.552 44.944C109.608 45.6 110.44 46.544 111.048 47.776L108.48 49.288C108.176 48.568 107.72 47.968 107.112 47.488C106.52 47.008 105.72 46.768 104.712 46.768C103.464 46.768 102.464 47.152 101.712 47.92C100.976 48.672 100.608 49.792 100.608 51.28V53.968C100.608 55.44 100.984 56.56 101.736 57.328C102.488 58.096 103.496 58.48 104.76 58.48C105.256 58.48 105.72 58.424 106.152 58.312C106.584 58.184 106.96 58 107.28 57.76C107.6 57.52 107.856 57.224 108.048 56.872C108.24 56.52 108.336 56.104 108.336 55.624V54.544H105.048V51.88H111.384V61H108.648V58.408ZM114.862 61V48.472H117.934V51.064H118.054C118.134 50.728 118.254 50.408 118.414 50.104C118.59 49.784 118.814 49.504 119.086 49.264C119.358 49.024 119.678 48.832 120.046 48.688C120.43 48.544 120.87 48.472 121.366 48.472H122.038V51.376H121.078C120.038 51.376 119.254 51.528 118.726 51.832C118.198 52.136 117.934 52.632 117.934 53.32V61H114.862ZM131.772 58.912H131.652C131.54 59.232 131.388 59.536 131.196 59.824C131.02 60.096 130.788 60.344 130.5 60.568C130.228 60.792 129.892 60.968 129.492 61.096C129.108 61.224 128.66 61.288 128.148 61.288C126.852 61.288 125.86 60.864 125.172 60.016C124.484 59.168 124.14 57.96 124.14 56.392V48.472H127.212V56.08C127.212 56.944 127.38 57.608 127.716 58.072C128.052 58.52 128.588 58.744 129.324 58.744C129.628 58.744 129.924 58.704 130.212 58.624C130.516 58.544 130.78 58.424 131.004 58.264C131.228 58.088 131.412 57.88 131.556 57.64C131.7 57.384 131.772 57.088 131.772 56.752V48.472H134.844V61H131.772V58.912ZM138.393 61V48.472H141.465V50.56H141.585C141.841 49.888 142.241 49.328 142.785 48.88C143.345 48.416 144.113 48.184 145.089 48.184C146.385 48.184 147.377 48.608 148.065 49.456C148.753 50.304 149.097 51.512 149.097 53.08V61H146.025V53.392C146.025 52.496 145.865 51.824 145.545 51.376C145.225 50.928 144.697 50.704 143.961 50.704C143.641 50.704 143.329 50.752 143.025 50.848C142.737 50.928 142.473 51.056 142.233 51.232C142.009 51.392 141.825 51.6 141.681 51.856C141.537 52.096 141.465 52.384 141.465 52.72V61H138.393ZM160.279 58.912H160.159C159.935 59.632 159.511 60.208 158.887 60.64C158.263 61.072 157.535 61.288 156.703 61.288C155.119 61.288 153.903 60.72 153.055 59.584C152.223 58.448 151.807 56.824 151.807 54.712C151.807 52.616 152.223 51.008 153.055 49.888C153.903 48.752 155.119 48.184 156.703 48.184C157.535 48.184 158.263 48.4 158.887 48.832C159.511 49.248 159.935 49.816 160.159 50.536H160.279V43.24H163.351V61H160.279V58.912ZM157.687 58.744C158.423 58.744 159.039 58.568 159.535 58.216C160.031 57.864 160.279 57.36 160.279 56.704V52.72C160.279 52.112 160.031 51.624 159.535 51.256C159.039 50.888 158.423 50.704 157.687 50.704C156.887 50.704 156.239 50.976 155.743 51.52C155.263 52.048 155.023 52.76 155.023 53.656V55.816C155.023 56.712 155.263 57.424 155.743 57.952C156.239 58.48 156.887 58.744 157.687 58.744ZM176.109 61C175.437 61 174.901 60.808 174.501 60.424C174.117 60.024 173.877 59.496 173.781 58.84H173.637C173.429 59.656 173.005 60.272 172.365 60.688C171.725 61.088 170.933 61.288 169.989 61.288C168.709 61.288 167.725 60.952 167.037 60.28C166.349 59.608 166.005 58.712 166.005 57.592C166.005 56.296 166.469 55.336 167.397 54.712C168.325 54.072 169.645 53.752 171.357 53.752H173.493V52.84C173.493 52.136 173.309 51.592 172.941 51.208C172.573 50.824 171.981 50.632 171.165 50.632C170.445 50.632 169.861 50.792 169.413 51.112C168.981 51.416 168.613 51.784 168.309 52.216L166.485 50.584C166.949 49.864 167.565 49.288 168.333 48.856C169.101 48.408 170.117 48.184 171.381 48.184C173.077 48.184 174.365 48.568 175.245 49.336C176.125 50.104 176.565 51.208 176.565 52.648V58.552H177.813V61H176.109ZM171.021 59.056C171.709 59.056 172.293 58.904 172.773 58.6C173.253 58.296 173.493 57.848 173.493 57.256V55.6H171.525C169.925 55.6 169.125 56.112 169.125 57.136V57.544C169.125 58.056 169.285 58.44 169.605 58.696C169.941 58.936 170.413 59.056 171.021 59.056ZM180.299 61V48.472H183.371V51.064H183.491C183.571 50.728 183.691 50.408 183.851 50.104C184.027 49.784 184.251 49.504 184.523 49.264C184.795 49.024 185.115 48.832 185.483 48.688C185.867 48.544 186.307 48.472 186.803 48.472H187.475V51.376H186.515C185.475 51.376 184.691 51.528 184.163 51.832C183.635 52.136 183.371 52.632 183.371 53.32V61H180.299ZM190.533 50.896H188.685V48.472H190.533V46.672C190.533 45.568 190.821 44.72 191.397 44.128C191.989 43.536 192.853 43.24 193.989 43.24H196.173V45.688H193.605V48.472H196.173V50.896H193.605V61H190.533V50.896ZM198.299 48.472H201.371V62.512C201.371 63.568 201.107 64.376 200.579 64.936C200.051 65.512 199.211 65.8 198.059 65.8H196.379V63.352H198.299V48.472ZM199.835 46.648C199.195 46.648 198.731 46.504 198.443 46.216C198.171 45.928 198.035 45.56 198.035 45.112V44.632C198.035 44.184 198.171 43.816 198.443 43.528C198.731 43.24 199.195 43.096 199.835 43.096C200.459 43.096 200.915 43.24 201.203 43.528C201.491 43.816 201.635 44.184 201.635 44.632V45.112C201.635 45.56 201.491 45.928 201.203 46.216C200.915 46.504 200.459 46.648 199.835 46.648ZM214.148 61C213.476 61 212.94 60.808 212.54 60.424C212.156 60.024 211.916 59.496 211.82 58.84H211.676C211.468 59.656 211.044 60.272 210.404 60.688C209.764 61.088 208.972 61.288 208.028 61.288C206.748 61.288 205.764 60.952 205.076 60.28C204.388 59.608 204.044 58.712 204.044 57.592C204.044 56.296 204.508 55.336 205.436 54.712C206.364 54.072 207.684 53.752 209.396 53.752H211.532V52.84C211.532 52.136 211.348 51.592 210.98 51.208C210.612 50.824 210.02 50.632 209.204 50.632C208.484 50.632 207.9 50.792 207.452 51.112C207.02 51.416 206.652 51.784 206.348 52.216L204.524 50.584C204.988 49.864 205.604 49.288 206.372 48.856C207.14 48.408 208.156 48.184 209.42 48.184C211.116 48.184 212.404 48.568 213.284 49.336C214.164 50.104 214.604 51.208 214.604 52.648V58.552H215.852V61H214.148ZM209.06 59.056C209.748 59.056 210.332 58.904 210.812 58.6C211.292 58.296 211.532 57.848 211.532 57.256V55.6H209.564C207.964 55.6 207.164 56.112 207.164 57.136V57.544C207.164 58.056 207.324 58.44 207.644 58.696C207.98 58.936 208.452 59.056 209.06 59.056ZM218.339 61V48.472H221.411V51.064H221.531C221.611 50.728 221.731 50.408 221.891 50.104C222.067 49.784 222.291 49.504 222.562 49.264C222.835 49.024 223.155 48.832 223.523 48.688C223.907 48.544 224.347 48.472 224.843 48.472H225.515V51.376H224.555C223.515 51.376 222.731 51.528 222.203 51.832C221.675 52.136 221.411 52.632 221.411 53.32V61H218.339ZM236.931 44.224L235.155 45.376C236.259 46.528 237.147 47.856 237.819 49.36C238.491 50.864 238.827 52.536 238.827 54.376C238.827 55.56 238.683 56.592 238.395 57.472C238.107 58.336 237.699 59.056 237.171 59.632C236.659 60.192 236.043 60.608 235.323 60.88C234.603 61.152 233.803 61.288 232.923 61.288C231.979 61.288 231.131 61.144 230.379 60.856C229.643 60.552 229.011 60.128 228.483 59.584C227.971 59.04 227.579 58.376 227.307 57.592C227.035 56.808 226.899 55.936 226.899 54.976C226.899 54.08 227.011 53.264 227.235 52.528C227.475 51.792 227.811 51.16 228.243 50.632C228.675 50.104 229.195 49.696 229.803 49.408C230.427 49.12 231.115 48.976 231.867 48.976C232.731 48.976 233.451 49.192 234.027 49.624C234.619 50.04 235.083 50.608 235.419 51.328L235.563 51.256C235.371 50.44 235.027 49.664 234.531 48.928C234.051 48.192 233.467 47.488 232.779 46.816L230.715 48.112L229.611 46.792L231.483 45.664C230.923 45.2 230.331 44.768 229.707 44.368C229.099 43.968 228.483 43.592 227.859 43.24H232.539C232.763 43.368 232.979 43.52 233.187 43.696C233.395 43.856 233.611 44.024 233.835 44.2L235.851 42.928L236.931 44.224ZM232.875 58.936C233.723 58.936 234.395 58.664 234.891 58.12C235.387 57.576 235.635 56.816 235.635 55.84V54.448C235.635 53.472 235.387 52.712 234.891 52.168C234.395 51.624 233.723 51.352 232.875 51.352C232.011 51.352 231.331 51.624 230.835 52.168C230.339 52.712 230.091 53.472 230.091 54.448V55.84C230.091 56.816 230.339 57.576 230.835 58.12C231.331 58.664 232.011 58.936 232.875 58.936ZM250.992 61C250.32 61 249.784 60.808 249.384 60.424C249 60.024 248.76 59.496 248.664 58.84H248.52C248.312 59.656 247.888 60.272 247.248 60.688C246.608 61.088 245.816 61.288 244.872 61.288C243.592 61.288 242.608 60.952 241.92 60.28C241.232 59.608 240.888 58.712 240.888 57.592C240.888 56.296 241.352 55.336 242.28 54.712C243.208 54.072 244.528 53.752 246.24 53.752H248.376V52.84C248.376 52.136 248.192 51.592 247.824 51.208C247.456 50.824 246.864 50.632 246.048 50.632C245.328 50.632 244.744 50.792 244.296 51.112C243.864 51.416 243.496 51.784 243.192 52.216L241.368 50.584C241.832 49.864 242.448 49.288 243.216 48.856C243.984 48.408 245 48.184 246.264 48.184C247.96 48.184 249.248 48.568 250.128 49.336C251.008 50.104 251.448 51.208 251.448 52.648V58.552H252.696V61H250.992ZM245.904 59.056C246.592 59.056 247.176 58.904 247.656 58.6C248.136 58.296 248.376 57.848 248.376 57.256V55.6H246.408C244.808 55.6 244.008 56.112 244.008 57.136V57.544C244.008 58.056 244.168 58.44 244.488 58.696C244.824 58.936 245.296 59.056 245.904 59.056ZM255.182 61V48.472H258.254V51.064H258.374C258.454 50.728 258.574 50.408 258.734 50.104C258.91 49.784 259.134 49.504 259.406 49.264C259.678 49.024 259.998 48.832 260.366 48.688C260.75 48.544 261.19 48.472 261.686 48.472H262.358V51.376H261.398C260.358 51.376 259.574 51.528 259.046 51.832C258.518 52.136 258.254 52.632 258.254 53.32V61H255.182ZM264.08 55.216V52.168H270.944V55.216H264.08ZM97.776 71.24H100.848V78.536H100.944C101.168 77.816 101.592 77.248 102.216 76.832C102.84 76.4 103.568 76.184 104.4 76.184C106 76.184 107.216 76.752 108.048 77.888C108.896 79.008 109.32 80.616 109.32 82.712C109.32 84.824 108.896 86.448 108.048 87.584C107.216 88.72 106 89.288 104.4 89.288C103.568 89.288 102.84 89.072 102.216 88.64C101.608 88.208 101.184 87.632 100.944 86.912H100.848V89H97.776V71.24ZM103.416 86.744C104.216 86.744 104.864 86.48 105.36 85.952C105.856 85.424 106.104 84.712 106.104 83.816V81.656C106.104 80.76 105.856 80.048 105.36 79.52C104.864 78.976 104.216 78.704 103.416 78.704C102.68 78.704 102.064 78.888 101.568 79.256C101.088 79.624 100.848 80.112 100.848 80.72V84.704C100.848 85.36 101.088 85.864 101.568 86.216C102.064 86.568 102.68 86.744 103.416 86.744ZM116.799 83.504C116.031 83.52 115.439 83.664 115.023 83.936C114.607 84.192 114.399 84.576 114.399 85.088V85.472C114.399 85.984 114.559 86.376 114.879 86.648C115.199 86.92 115.679 87.056 116.319 87.056C116.991 87.056 117.567 86.904 118.047 86.6C118.527 86.296 118.767 85.848 118.767 85.256V83.504H116.799ZM126.999 81.608V81.392C126.999 80.528 126.783 79.832 126.351 79.304C125.935 78.76 125.327 78.488 124.527 78.488C123.711 78.488 123.063 78.76 122.583 79.304C122.103 79.848 121.863 80.552 121.863 81.416V81.608H126.999ZM124.959 86.792C125.711 86.792 126.343 86.632 126.855 86.312C127.367 85.992 127.799 85.6 128.151 85.136L129.807 86.984C129.295 87.704 128.599 88.272 127.719 88.688C126.839 89.088 125.831 89.288 124.695 89.288C124.087 89.288 123.519 89.216 122.991 89.072C122.463 88.928 121.991 88.736 121.575 88.496C121.175 88.256 120.831 87.984 120.543 87.68C120.255 87.376 120.039 87.056 119.895 86.72H119.751C119.639 87.04 119.463 87.352 119.223 87.656C118.999 87.96 118.703 88.232 118.335 88.472C117.967 88.712 117.527 88.904 117.015 89.048C116.519 89.208 115.935 89.288 115.263 89.288C113.999 89.288 113.015 88.944 112.311 88.256C111.623 87.568 111.279 86.672 111.279 85.568C111.279 84.912 111.407 84.336 111.663 83.84C111.919 83.344 112.279 82.936 112.743 82.616C113.207 82.28 113.767 82.032 114.423 81.872C115.079 81.696 115.815 81.608 116.631 81.608H118.767V80.84C118.767 80.136 118.583 79.592 118.215 79.208C117.847 78.824 117.263 78.632 116.463 78.632C115.727 78.632 115.135 78.784 114.687 79.088C114.255 79.392 113.887 79.768 113.583 80.216L111.759 78.584C112.223 77.864 112.839 77.288 113.607 76.856C114.375 76.408 115.391 76.184 116.655 76.184C117.615 76.184 118.383 76.384 118.959 76.784C119.535 77.168 119.983 77.656 120.303 78.248H120.447C120.767 77.656 121.287 77.168 122.007 76.784C122.727 76.384 123.591 76.184 124.599 76.184C125.575 76.184 126.415 76.352 127.119 76.688C127.823 77.024 128.399 77.48 128.847 78.056C129.311 78.632 129.647 79.304 129.855 80.072C130.079 80.824 130.191 81.632 130.191 82.496V83.504H121.839V83.816C121.839 84.712 122.111 85.432 122.655 85.976C123.199 86.52 123.967 86.792 124.959 86.792ZM132.909 89V76.472H135.981V79.064H136.101C136.181 78.728 136.301 78.408 136.461 78.104C136.637 77.784 136.861 77.504 137.133 77.264C137.405 77.024 137.725 76.832 138.093 76.688C138.477 76.544 138.917 76.472 139.413 76.472H140.085V79.376H139.125C138.085 79.376 137.301 79.528 136.773 79.832C136.245 80.136 135.981 80.632 135.981 81.32V89H132.909Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/grytubakkahreppur.svg b/libs/application/templates/financial-aid/src/svg/grytubakkahreppur.svg deleted file mode 100644 index 0f29cf6351da..000000000000 --- a/libs/application/templates/financial-aid/src/svg/grytubakkahreppur.svg +++ /dev/null @@ -1,39 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M77.1629 68.3308C73.9549 74.0451 69.6441 79.3584 64.5313 83.8697C59.4185 88.381 53.7043 91.99 47.4887 94.4962C41.3734 91.99 35.6591 88.381 30.5464 83.8697C25.3333 79.3584 21.1228 74.0451 17.8145 68.3308C15.0075 63.1178 13.4035 57.4035 13.4035 51.4887V17.4035H81.6742V51.4887C81.6742 57.4035 80.0702 63.1178 77.1629 68.3308ZM83.0777 51.4887V16H12V51.4887C12 54.4962 12.401 57.604 13.203 60.5113C14.005 63.5188 15.1078 66.3258 16.6115 68.9323C18.3158 71.9398 20.2205 74.8471 22.4261 77.5539C24.6316 80.2607 27.1378 82.7669 29.7444 85.1729C32.4511 87.4787 35.2581 89.584 38.2657 91.3885C41.2732 93.193 44.381 94.797 47.4887 96C50.6967 94.797 53.8045 93.193 56.812 91.3885C59.8195 89.584 62.6266 87.4787 65.3333 85.1729C67.9398 82.7669 70.3459 80.2607 72.5514 77.5539C74.8571 74.8471 76.7619 71.9398 78.4662 68.9323C79.9699 66.3258 81.0727 63.5188 81.8747 60.5113C82.6767 57.604 83.0777 54.4962 83.0777 51.4887Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M63.63 33.5438L64.031 33.7444H64.2315L64.5323 33.4436L66.5373 31.4386L66.7378 31.1378L66.838 30.9373L66.7378 30.8371L66.6375 30.6366L66.5373 30.5363V30.4361L68.9433 32.6416L68.3418 33.3433L68.2415 33.2431L68.442 32.8421V32.6416V32.5413L68.1413 32.2406L67.3393 31.4386L66.1363 32.7418L66.7378 33.3433L67.0385 33.5438L67.1388 33.6441L67.4395 33.5438L67.64 33.3433L67.7403 33.4436L66.7378 34.4461L66.6375 34.3459L66.838 34.0451V33.8446L66.6375 33.5438L66.036 32.8421L64.9333 33.9449L64.7328 34.2456V34.3459L64.833 34.5464L65.3343 35.0476L65.8355 35.3484L65.9358 35.4486H66.1363L66.437 35.3484L66.838 35.2481L67.0385 35.3484L66.036 35.8496L63.63 33.5438L62.6275 32.9423L62.5273 30.4361L62.2265 30.3358V30.2356H62.1262L61.4245 31.2381L61.224 31.5388V31.7393L61.3242 31.9398L61.4245 32.0401L61.625 32.1403L61.5247 32.2406L59.9207 31.1378L60.021 31.0376L60.1212 31.1378L60.3217 31.2381H60.6225L60.7227 31.1378L60.9232 30.9373L62.5273 28.5313L62.6275 28.2306L62.7277 28.0301L62.6275 27.8296L62.427 27.7293L62.3267 27.6291V27.5288L63.7303 28.4311L64.2315 28.8321L64.5323 29.1328L64.7328 29.4336V29.7343V30.0351L64.6325 30.3358L64.3318 30.6366L64.031 30.8371H63.63L63.1288 30.6366V32.2406L63.229 32.7418V33.0426L63.4295 33.2431L63.63 33.5438ZM31.1488 69.1328L30.2465 68.4311L28.843 67.5288L28.9433 67.1278H29.9458H30.6476L31.6501 66.8271L32.0511 66.3258L31.5498 66.2256L31.1488 66.0251L30.3468 65.6241L29.645 64.9223V64.5213L30.3468 64.421L30.9483 64.3208L31.5498 64.02L32.0511 63.7193L31.3493 63.4185H30.9483L30.2465 63.0175L29.4445 62.5163L29.0435 61.614L31.3493 61.3133L32.6526 60.6115L33.1538 60.2105L33.6551 59.8095L33.9558 59.4085L33.3543 59.609L32.4521 59.9098L31.1488 59.7093L29.9458 59.3083L29.0435 58.9073L28.2415 58.2055L27.9408 57.7043V57.0025L29.244 57.3032H30.7478L31.3493 57.203L32.2516 57.0025L33.2541 56.6015L34.2566 56.1002L35.0586 55.4987V55.2982L34.4571 55.599L33.7553 55.7995H32.1513H31.3493L29.7453 55.599L28.9433 55.198L28.2415 54.8972L27.64 54.396L27.5398 53.6942L28.1413 53.7945L28.442 53.8947L29.0435 54.2957L29.8455 54.4962L31.3493 54.6967L33.5548 54.797L36.2616 53.995V54.4962L35.8606 55.4987L35.3593 56.2005L34.7578 56.7017L32.7528 57.8045L31.5498 58.005L30.7478 58.1053H29.645V58.2055L30.2465 58.5063L30.8481 58.6065L31.5498 58.807H32.2516H33.1538L34.1563 58.6065L35.1588 58.5063L34.7578 59.5088L34.3568 60.3108L33.6551 60.812L33.0536 61.3133L31.9508 61.9148L31.0486 62.015L30.046 62.1153L30.6476 62.5163L31.4496 62.817L32.1513 62.9173L32.9533 63.0175L33.4546 62.9173L33.3543 63.4185L33.1538 63.8195L31.9508 64.7218L31.1488 65.1228H30.7478L30.9483 65.3233L32.3518 65.8246L32.7528 66.1253L32.0511 67.1278L31.2491 67.5288L30.4471 67.7293H29.7453L31.3493 68.8321L31.5498 69.4336L31.3493 69.5338L31.1488 69.1328ZM58.6175 43.7694L57.8155 43.0677L55.8105 42.4662L54.808 41.5639L53.8054 42.1654L51.5999 41.9649L50.3969 42.9674L49.0937 44.3709L46.6877 44.6717L45.2841 44.5714L43.9809 46.0752L42.4771 46.5764L40.3719 49.0827L38.7679 50.0852L36.0611 51.8897L36.7628 51.99L38.2666 51.7895L41.0736 51.4887H45.9859L50.1964 51.188H52.3017L55.9107 51.589L56.813 52.2907L56.9132 52.6917L50.3969 52.792L48.1914 53.193L45.3844 53.594L36.9633 53.4937L36.3618 53.193L31.4496 53.0927L26.838 52.792L26.7378 52.6917L26.6375 52.1905V51.7895L26.838 51.6892H32.0511L34.9583 51.4887L37.3643 49.985L39.5699 47.7794L41.9759 44.9724L43.8806 44.6717L45.1839 43.2682L47.2892 43.3684L49.0937 42.8672L50.8982 41.4636L51.8004 40.6616L52.5022 40.9624L53.6049 40.8621L54.9082 40.2606L56.6125 41.5639L58.2165 41.8647L59.62 43.3684L61.1237 42.6667L62.7277 41.0626L63.7303 40.1604H64.1313L65.7353 41.6642L66.7378 41.3634L67.3393 42.4662L66.036 43.1679L65.4345 43.0677L64.432 41.7644L62.026 44.0702L59.9207 45.4737L57.615 46.4762L56.6125 46.9774L53.5047 47.2782L50.9984 47.1779L49.5949 47.3784L48.4922 48.3809L47.7904 48.2807H47.6902L48.6927 46.9774L50.6977 45.9749L54.1062 45.5739L56.2115 44.8722L58.3167 43.8697L58.6175 43.7694ZM72.8531 49.7845L74.5573 47.9799L74.4571 47.6792V47.5789L73.2541 47.7794L72.9533 47.8797L72.7528 47.9799L72.6526 48.1804V48.3809L72.7528 48.4812L72.6526 48.5814L72.2516 46.6767H72.3518V46.7769L72.4521 47.0777L72.6526 47.1779H72.8531H73.0536L75.9608 46.5764H76.2616L76.4621 46.4762V46.2757V46.0752V45.8747H76.5623L76.8631 47.4787L76.9633 48.0802V48.4812L76.8631 48.7819L76.6626 49.0827L76.4621 49.2832L76.0611 49.4837H75.7603L75.3593 49.2832L75.0586 48.9824L74.8581 48.5814L73.7553 49.6842L73.4546 50.0852L73.2541 50.386L73.1538 50.5865V50.9875H73.0536L72.8531 49.7845ZM75.7603 43.4687L76.2616 44.8722L76.1613 44.9724V44.7719L75.9608 44.5714L75.7603 44.4712H75.6601L75.3593 44.5714L73.6551 45.2732L73.1538 45.3734L72.6526 45.4737H72.3518L71.9508 45.2732L71.5498 44.8722L71.3493 44.3709L71.1488 43.7694V43.2682L71.3493 42.8672L71.5498 42.5664L71.9508 42.3659L72.5523 42.0652L74.1563 41.4636L74.4571 41.3634L74.5573 41.1629L74.6576 40.9624L74.5573 40.7619V40.6616L75.2591 42.3659H75.1588V42.2657L75.0586 42.0652L74.8581 41.9649H74.6576L74.3568 42.0652L72.5523 42.7669L72.0511 43.0677L71.7503 43.1679L71.5498 43.3684L71.4496 43.5689V43.7694V44.0702L71.5498 44.3709L71.6501 44.7719L71.9508 44.9724L72.2516 45.1729L72.5523 45.2732L72.9533 45.1729L73.5548 44.9724L75.2591 44.3709L75.5598 44.1704L75.6601 44.0702L75.7603 43.8697L75.6601 43.6692L75.7603 43.4687ZM70.046 39.8596L69.7453 40.0601L69.645 40.2606V40.3609V40.5614L69.7453 40.7619H69.645L68.7428 39.1579L68.843 39.0576L68.9433 39.2581L69.0435 39.4586H69.244H69.4445L69.645 39.3584L72.2516 37.9549L72.4521 37.7544L72.5523 37.5539L72.6526 37.4536L72.5523 37.1529L72.4521 37.0526H72.5523L73.2541 38.3559L73.5548 38.8571L73.6551 39.2581V39.5589L73.5548 39.8596L73.3543 40.1604L73.1538 40.4611L72.8531 40.5614H72.6526H72.4521H72.2516L71.9508 40.4611L71.7503 40.3609L71.6501 40.1604L71.4496 39.8596L71.3493 39.5589L71.1488 39.2581L70.046 39.8596ZM67.8405 36.8521L67.64 37.0526L67.5398 37.2531V37.4536L67.64 37.6541L67.7403 37.7544H67.64L66.5373 36.2506L66.6375 36.3509L66.838 36.5514H67.0385H67.239L67.4395 36.3509L69.7453 34.5464L69.9458 34.3459L70.046 34.2456V34.0451L69.9458 33.8446L69.8455 33.7444L69.9458 33.6441L70.8481 34.8471L71.1488 35.3484L71.3493 35.6491L71.4496 36.0501L71.3493 36.3509L71.2491 36.6516L70.9483 36.9524L70.7478 37.0526L70.5473 37.1529L70.3468 37.2531L70.1463 37.1529H69.8455L69.645 37.0526L69.4445 36.8521L69.244 36.6516L69.0435 36.3509L68.9433 36.0501L67.8405 36.8521ZM59.62 28.5313L60.1212 27.2281L60.3217 26.8271L60.2215 26.7268L59.9207 26.5263L59.8205 26.4261V26.3258L61.625 27.1278L61.5247 27.2281L61.4245 27.1278H61.1237H60.9232L60.7227 27.5288L59.62 30.1353L59.4195 30.6366L59.5197 30.7368L59.7202 30.9373L59.9207 31.0376V31.1378L58.1162 30.3358L58.2165 30.2356L58.3167 30.3358H58.5172H58.7177L58.818 30.2356L59.0185 29.9348L59.5197 28.7318L57.615 27.8296L57.1137 29.1328L56.9132 29.5338L57.0135 29.7343L57.3142 29.8346L57.4145 29.9348V30.0351L55.61 29.2331H55.7102H55.8105L56.011 29.3333L56.2115 29.2331L56.412 29.1328L56.5122 28.8321L57.615 26.2256L57.8155 25.8246L57.7152 25.624L57.5147 25.4235L57.3142 25.3233L59.1187 26.0251L59.0185 26.1253L58.9182 26.0251H58.6175L58.417 26.1253L58.2165 26.4261L57.7152 27.7293L59.62 28.5313ZM52.6024 27.0276L52.1012 27.6291L51.9007 28.0301V28.1303L52.0009 28.2306L52.1012 28.3308L52.3017 28.4311V28.5313L50.9984 28.2306V28.1303H51.2992L51.3994 28.0301L51.5999 27.8296L51.9007 27.5288L54.3067 24.421H54.4069L54.9082 28.2306L55.0085 28.6316L55.1087 28.9323L55.3092 29.0326L55.5097 29.1328V29.2331L53.8054 28.8321V28.7318H54.0059H54.2064V28.6316L54.3067 28.5313V28.0301L54.2064 27.4286L52.6024 27.0276ZM49.7954 27.2281L50.3969 27.8296L50.6977 28.0301L50.9984 28.1303H48.9934V28.0301H49.0937L49.1939 27.9298L49.2942 27.7293V27.6291L49.0937 27.4286L47.6902 25.9248L47.5899 27.3283L47.6902 27.7293L47.7904 27.9298L48.0912 28.0301H48.2917H48.1914H46.3869V27.9298H46.4872H46.7879L46.8882 27.8296L46.9884 27.6291V27.3283L47.0887 24.421V24.02L46.9884 23.8195L46.6877 23.7193H46.4872V23.619L48.3919 23.7193V23.8195H48.2917L47.9909 23.9198L47.7904 24.02V24.421L47.6902 25.8246L48.1914 25.4235L48.8932 24.7218L49.2942 24.3208L49.3944 24.1203V23.9198L49.0937 23.8195H48.9934V23.7193L50.5974 23.8195V23.9198H50.2967L49.9959 24.1203L49.5949 24.421L48.9934 25.0225L48.2917 25.624L49.7954 27.2281ZM44.9834 27.3283L45.6851 27.7293L45.9859 27.8296L46.1864 27.9298L46.2866 28.0301L44.2816 28.2306L44.3819 28.1303L44.4821 28.0301L44.5824 27.8296L44.4821 27.7293L44.2816 27.5288L42.5774 26.3258L42.7779 27.7293L42.9784 28.1303L43.0786 28.3308H43.3794H43.5799V28.4311L41.6751 28.6316V28.5313H41.7754L42.0761 28.4311L42.1764 28.3308V28.1303V27.8296L41.7754 25.0225L41.6751 24.6215L41.4746 24.421H41.1739H41.0736V24.3208L42.8781 24.1203L42.9784 24.2205H42.7779L42.4771 24.3208L42.3769 24.5213V24.9223L42.5774 26.2256L42.9784 25.8246L43.5799 25.0225L43.9809 24.5213V24.2205L43.8806 24.1203H43.6801H43.5799V24.02L45.0836 23.8195L44.8831 23.9198L44.5824 24.1203L44.2816 24.5213L43.6801 25.223L43.1789 25.9248L44.9834 27.3283ZM37.8656 28.4311V29.1328V29.5338V29.6341L37.9658 29.7343H38.1663L38.3668 29.6341L38.4671 29.7343L37.1638 30.1353L37.3643 29.9348L37.4646 29.8346V29.5338L37.5648 29.1328L37.9658 25.223H38.0661L40.5724 28.1303L40.7729 28.4311L41.0736 28.6316H41.2741H41.4746V28.7318L39.8706 29.2331V29.1328L40.0711 29.0326L40.1714 28.9323V28.8321V28.7318L39.8706 28.3308L39.4696 27.8296L37.8656 28.4311ZM35.3593 28.8321L35.6601 28.9323L35.9608 29.0326L36.2616 29.3333L36.3618 29.6341V30.0351L36.2616 30.3358L36.0611 30.6366L35.7603 30.9373L35.1588 31.2381L33.3543 32.2406V32.1403H33.4546L33.6551 31.9398L33.7553 31.7393V31.5388L33.5548 31.3383L32.2516 28.7318L32.0511 28.5313L31.8506 28.3308H31.7503L31.5498 28.4311L31.3493 28.5313V28.4311L32.9533 27.5288L33.3543 27.3283L33.6551 27.2281H34.1563H34.5573L34.8581 27.4286L35.0586 27.7293L35.1588 28.0301V28.3308V28.6316L34.9583 28.9323L35.3593 28.8321ZM29.3443 29.9348L30.4471 29.0326H30.5473L30.4471 29.1328L30.2465 29.3333V29.5338V29.7343L30.4471 29.9348L31.5498 31.3383L31.9508 31.8396L32.1513 32.2406V32.6416V33.0426L31.9508 33.4436L31.5498 33.8446L30.9483 34.2456L30.5473 34.3459H30.1463L29.7453 34.1454L29.3443 33.8446L28.9433 33.3433L27.8405 32.0401L27.64 31.8396L27.4395 31.7393H27.239L27.1388 31.8396L26.9383 31.9398L28.3418 30.7368H28.442L28.3418 30.8371L28.1413 31.0376V31.2381V31.4386L28.3418 31.6391L29.5448 33.1428L30.046 33.6441L30.2465 33.8446L30.4471 33.9449H30.6476H30.9483L31.1488 33.8446L31.4496 33.6441L31.7503 33.4436L31.9508 33.0426V32.7418V32.4411L31.7503 32.0401L31.3493 31.5388L30.2465 30.1353L30.046 29.8346H29.8455H29.645L29.4445 29.9348L29.3443 30.0351V29.9348ZM27.0385 33.0426L26.6375 32.9423H26.437L26.2365 33.0426L26.1363 33.1428L25.9358 33.2431L25.5348 33.7444L28.041 36.0501L28.3418 36.2506H28.442H28.6425L28.843 36.0501L28.9433 35.9499L29.0435 36.0501L27.7403 37.4536L27.64 37.3534L27.7403 37.2531L27.9408 37.0526V36.8521L27.8405 36.7519L27.64 36.4511L25.0335 34.2456L24.7328 34.5464L24.5323 34.9474L24.432 35.0476L24.5323 35.2481V35.4486L24.7328 35.6491L24.6325 35.7494L24.031 35.0476L26.3368 32.5413L27.0385 33.0426ZM21.8255 37.7544L21.0235 37.0526L21.4245 36.4511L21.8255 37.7544ZM23.229 36.0501V36.4511L23.3293 36.7519L23.5298 37.2531L24.432 38.9574L25.3343 39.5589L25.635 39.7594H25.8355L26.036 39.6591L26.1363 39.4586L26.2365 39.3584L26.3368 39.4586L25.3343 41.0626L25.234 40.9624L25.3343 40.8621L25.4345 40.6616L25.3343 40.4611L25.234 40.2606L25.0335 40.1604L24.1313 39.5589L21.9257 39.6591H21.4245L21.1237 39.8596L20.9232 39.9599L21.8255 38.3559H21.9257V38.4561L21.8255 38.7569V38.8571L21.9257 38.9574L22.1262 39.0576H22.427L24.1313 38.9574L23.3293 37.5539L23.229 37.3534L23.0285 37.1529H22.9283H22.7278L22.5273 37.3534L23.229 36.0501ZM24.1313 43.2682L21.8255 43.9699L21.7252 44.1704L21.625 44.2707V44.3709L22.828 44.7719L23.1288 44.8722H23.3293L23.4295 44.7719L23.5298 44.5714L23.63 44.4712H23.7303L23.0285 46.2757L22.9283 46.1754L23.0285 46.0752V45.7744L22.9283 45.6742L22.828 45.4737L22.5273 45.3734L19.9207 44.3709L19.5197 44.2707H19.4195L19.219 44.3709L19.1187 44.5714L19.0185 44.6717H18.9182L19.5197 43.1679L19.8205 42.5664L20.021 42.2657L20.3217 41.9649L20.6225 41.8647L20.9232 41.7644L21.224 41.8647L21.625 42.0652L21.8255 42.3659L21.9257 42.7669V43.2682L23.3293 42.8672L23.8305 42.7669L24.1313 42.6667L24.3318 42.4662L24.5323 42.1654H24.6325L24.1313 43.2682ZM19.8205 46.3759L19.3192 46.5764L18.9182 46.6767L18.7177 46.8772L18.6175 47.0777L18.417 47.3784V47.5789L18.3167 47.9799L18.417 48.3809L18.5172 48.6817L18.818 48.9824L19.0185 49.1829L19.3192 49.2832L19.7202 49.4837L20.021 49.584H20.6225H21.224L21.7252 49.3834L22.1262 49.0827L22.3267 48.6817L22.427 48.3809L22.5273 47.8797L22.427 47.4787L21.1237 47.1779H20.7227L20.5222 47.2782L20.422 47.6792H20.3217L20.6225 45.9749H20.7227V46.0752V46.2757L20.823 46.3759L21.224 46.5764L22.5273 46.7769L22.6275 47.1779L22.7278 47.5789V47.9799L22.6275 48.3809L22.5273 48.9824L22.2265 49.3834L21.9257 49.7845L21.5247 50.0852L21.1237 50.1855L20.823 50.2857H20.422H20.021L19.5197 50.0852L19.0185 49.7845L18.5172 49.2832L18.2165 48.7819L18.1162 48.1804L18.2165 47.5789L18.3167 47.1779L18.6175 46.6767L18.7177 46.4762L18.6175 46.3759L18.417 46.2757L18.5172 46.1754L19.8205 46.3759ZM27.64 43.3684C27.64 42.2657 28.041 41.2631 28.843 40.4611C29.645 39.6591 30.6476 39.2581 31.7503 39.2581C32.8531 39.2581 33.8556 39.6591 34.6576 40.4611C35.4596 41.2631 35.8606 42.2657 35.8606 43.3684C35.8606 44.3709 35.5598 45.4737 34.6576 46.3759C33.8556 47.1779 32.7528 47.5789 31.7503 47.5789C30.7478 47.5789 29.645 47.1779 28.843 46.3759C27.9408 45.4737 27.64 44.3709 27.64 43.3684ZM43.9809 75.9499L45.6851 75.6491L46.4872 75.4486L47.7904 75.1479H48.5924L49.5949 75.0476L50.2967 74.6466L50.9984 74.1454L51.3994 73.2431L51.5999 72.6416L52.2014 71.4386L52.8029 71.1378L53.6049 70.8371V70.5363L53.2039 70.4361L52.2014 70.0351L51.2992 69.2331L51.5999 68.3308L52.4019 67.7293L53.3042 67.4286L53.9057 67.0276L55.8105 66.3258L56.7127 66.0251L57.3142 65.7243L57.9157 65.4235L58.5172 65.1228L59.0185 64.822L59.62 64.421L59.7202 64.1203L59.5197 63.9198L58.9182 63.619L58.1162 63.218L57.5147 62.2155L58.1162 61.3133L59.4195 60.6115L59.8205 60.01L59.7202 59.9098L57.8155 59.609L56.3117 59.5088L55.5097 59.4085H55.0085L54.2064 59.3083H53.2039H51.8004L50.8982 59.208H49.9959L48.5924 59.0075L47.7904 58.7068L47.1889 58.1053V57.5037L47.5899 57.0025L48.4922 56.3007L49.5949 56.2005L50.1964 56.3007L50.8982 56.5012L51.3994 56.7017L52.6024 56.802L53.8054 56.7017L54.5072 56.401L55.1087 56.2005L55.61 55.8997L56.7127 54.9975L57.4145 54.396L57.9157 53.8947L58.3167 53.3935L59.62 52.792L62.427 52.391L63.7303 51.99L64.2315 51.7895L65.1338 51.2882L65.9358 50.9875L66.9383 50.6867L67.64 50.386L68.041 50.1855L68.6425 50.2857V50.787V50.9875L67.9408 51.0877L66.9383 51.3885L65.9358 51.8897L65.1338 52.391L64.7328 52.792L64.1313 53.193L62.6275 53.4937L60.3217 53.7945L59.7202 54.0952L59.219 54.5965L58.6175 55.0977L57.8155 55.8997L56.2115 56.802L55.5097 57.203L54.7077 57.5037L53.9057 57.7043H52.8029H52.0009L50.8982 57.5037L49.9959 57.1027H49.4947H48.6927L48.3919 57.203L48.2917 57.5037V57.9048L48.6927 58.2055L49.0937 58.3058H49.8957L50.6977 58.406L51.5999 58.3058H53.2039L54.4069 58.406L55.1087 58.5063H55.9107L56.7127 58.6065L57.7152 58.7068L59.219 59.1078L60.5222 59.3083L60.823 60.411L60.5222 60.7118L59.62 61.3133L58.6175 62.015L58.5172 62.1153L58.7177 62.2155L59.4195 62.6165L60.2215 63.0175L60.823 63.8195L60.7227 64.9223L60.5222 65.5238L60.021 65.9248L58.9182 66.7268L57.8155 67.1278L56.9132 67.5288L55.8105 67.8296L54.2064 68.1303L53.4044 68.2306L52.9032 68.4311L52.4019 68.8321L52.2014 69.2331L52.3017 69.4336L52.8029 69.5338L53.7052 69.7343L54.7077 70.1353L54.9082 70.5363L54.808 71.1378L53.3042 71.7393L52.8029 72.1403L52.4019 72.7418L52.1012 73.8446L51.4997 75.1479L50.7979 75.7494L50.4972 75.8496L49.9959 76.1504L49.1939 76.4511L46.4872 76.6516L45.2841 76.5514L44.4821 76.6516L43.7804 76.7519L42.9784 76.6516L43.0786 76.1504L43.9809 75.9499ZM14.9082 51.4887C14.9082 57.1027 16.3117 62.7168 19.1187 67.6291C25.5348 78.9574 35.5598 87.8797 47.4897 92.9925C59.5197 87.8797 69.5448 78.9574 75.9608 67.6291C78.7678 62.7168 80.1714 57.1027 80.1714 51.4887V18.807H14.9082V51.4887Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M21.5233 44.0702L21.6235 43.5689V43.0677L21.423 42.7669L21.022 42.5664L20.621 42.4662L20.3203 42.5664L20.0195 42.7669L19.819 43.0677L19.7188 43.5689L21.423 44.2707L21.5233 44.1704V44.0702Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M35.4594 30.8371L35.66 30.5363L35.7602 30.1353L35.66 29.7343L35.4594 29.5338L35.2589 29.4336L35.0584 29.3333H34.7577H34.3567L33.9557 29.5338L33.7552 29.7343L33.5547 29.8346L34.3567 31.4386L35.0584 31.1378L35.4594 30.8371Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M33.9543 29.3333L34.255 29.1328L34.4555 28.9323L34.5558 28.7318V28.5313L34.4555 28.0301L34.1548 27.7293L33.854 27.6291L33.453 27.5288L32.9518 27.7293L32.5508 28.0301L33.3528 29.6341L33.6535 29.5338L33.9543 29.3333Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M37.9648 28.2306L39.3684 27.7293L38.1653 26.3258L37.9648 28.2306Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M52.7012 26.9273L54.1047 27.2281L53.9042 25.4236L52.7012 26.9273Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M69.2435 36.3509L69.5442 36.5514L69.845 36.6516L70.1457 36.5514L70.5467 36.4511L70.7472 36.2506L70.8475 35.9499L70.9477 35.7494V35.5489V35.2481L70.8475 35.0476L70.5467 34.8471L69.043 35.9499L69.1432 36.1504L69.2435 36.3509Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M71.5482 39.6591L71.7487 39.8596L72.0494 39.9599H72.3502L72.7512 39.8596L72.9517 39.6591L73.1522 39.4586L73.2524 39.2581L73.3527 38.9574L73.2524 38.7569L73.1522 38.5564L72.9517 38.2556L71.3477 39.1579L71.4479 39.4586L71.5482 39.6591Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M74.6562 47.6792L74.8568 48.1804L75.1575 48.5814L75.4583 48.7819H75.8593L76.2603 48.5814L76.561 48.3809L76.6613 47.9799V47.6792L76.4608 47.1779L74.6562 47.4787V47.5789V47.6792Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M62.3249 30.1353L62.8261 30.4361H63.3274L63.7284 30.3358L64.0291 30.0351L64.1294 29.6341V29.3333L64.0291 28.9323L63.7284 28.7318L63.2271 28.5313L62.2246 30.0351L62.3249 30.1353Z" fill="#012D74"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M43.9791 75.9499L45.6833 75.6491L46.4853 75.4486L47.7886 75.1479H48.5906L49.5931 75.0476L50.2949 74.6466L50.9966 74.1454L51.3976 73.2431L51.5981 72.6416L52.1996 71.4386L52.8011 71.1379L53.6031 70.8371V70.5364L53.2021 70.4361L52.1996 70.0351L51.2974 69.2331L51.5981 68.3308L52.4001 67.7293L53.3024 67.4286L53.9039 67.0276L55.8086 66.3258L56.7109 66.0251L57.3124 65.7243L57.9139 65.4236L58.5154 65.1228L59.0167 64.8221L59.6182 64.4211L59.7184 64.1203L59.5179 63.9198L58.9164 63.6191L58.1144 63.2181L57.5129 62.2156L58.1144 61.3133L59.4177 60.6116L59.8187 60.01L59.7184 59.9098L57.8137 59.609L56.3099 59.5088L55.5079 59.4085H55.0066L54.2046 59.3083H53.2021H51.7986L50.8964 59.208H49.9941L48.5906 59.0075L47.7886 58.7068L47.1871 58.1053V57.5038L47.5881 57.0025L48.4903 56.3008L49.5931 56.2005L50.1946 56.3008L50.8964 56.5013L51.3976 56.7018L52.6006 56.802L53.8036 56.7018L54.5054 56.401L55.1069 56.2005L55.6081 55.8998L56.7109 54.9975L57.4126 54.396L57.9139 53.8948L58.3149 53.3935L59.6182 52.792L62.4252 52.391L63.7284 51.99L64.2297 51.7895L65.1319 51.2882L65.934 50.9875L66.9365 50.6867L67.6382 50.386L68.0392 50.1855L68.6407 50.2857V50.787V50.9875L67.939 51.0877L66.9365 51.3885L65.934 51.8897L65.1319 52.391L64.7309 52.792L64.1294 53.193L62.6257 53.4938L60.3199 53.7945L59.7184 54.0953L59.2172 54.5965L58.6157 55.0978L57.8137 55.8998L56.2096 56.802L55.5079 57.203L54.7059 57.5038L53.9039 57.7043H52.8011H51.9991L50.8964 57.5038L49.9941 57.1028H49.4929H48.6908L48.3901 57.203L48.2898 57.5038V57.9048L48.6908 58.2055L49.0918 58.3058H49.8939L50.6959 58.406L51.5981 58.3058H53.2021L54.4051 58.406L55.1069 58.5063H55.9089L56.7109 58.6065L57.7134 58.7068L59.2172 59.1078L60.5204 59.3083L60.8212 60.411L60.5204 60.7118L59.6182 61.3133L58.6157 62.0151L58.5154 62.1153L58.7159 62.2156L59.4177 62.6166L60.2197 63.0176L60.8212 63.8196L60.7209 64.9223L60.5204 65.5238L60.0192 65.9248L58.9164 66.7268L57.8137 67.1278L56.9114 67.5288L55.8086 67.8296L54.2046 68.1303L53.4026 68.2306L52.9014 68.4311L52.4001 68.8321L52.1996 69.2331L52.2999 69.4336L52.8011 69.5339L53.7034 69.7344L54.7059 70.1354L54.9064 70.5364L54.8061 71.1379L53.3024 71.7394L52.8011 72.1404L52.4001 72.7419L52.0994 73.8446L51.4979 75.1479L50.7961 75.7494L50.4954 75.8496L49.9941 76.1504L49.1921 76.4511L46.4853 76.6516L45.2823 76.5514L44.4803 76.6516L43.7786 76.7519L42.9766 76.6516L43.0768 76.1504L43.9791 75.9499Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M35.8592 43.3684C35.8592 42.2656 35.4582 41.2631 34.6562 40.4611C33.8542 39.6591 32.8517 39.2581 31.7489 39.2581C30.6462 39.2581 29.6437 39.6591 28.8417 40.4611C28.0397 41.2631 27.6387 42.2656 27.6387 43.3684C27.6387 44.4711 28.0397 45.5739 28.8417 46.3759C29.6437 47.0777 30.6462 47.5789 31.7489 47.5789C32.8517 47.5789 33.8542 47.0777 34.6562 46.3759C35.4582 45.5739 35.8592 44.4711 35.8592 43.3684Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5162 46.1754L18.416 46.2757L18.6165 46.3759L18.7167 46.4762L18.6165 46.6767L18.3157 47.1779L18.2155 47.5789L18.1152 48.1804L18.2155 48.7819L18.5162 49.2832L19.0175 49.7844L19.5187 50.0852L20.02 50.2857H20.421H20.822L21.1228 50.1854L21.5238 50.0852L21.9248 49.7844L22.2255 49.3834L22.5263 48.9824L22.6265 48.3809L22.7268 47.9799V47.5789L22.6265 47.1779L22.5263 46.7769L21.223 46.5764L20.822 46.3759L20.7218 46.2757V46.0752V45.9749H20.6215L20.3207 47.6792H20.421L20.5212 47.2782L20.7218 47.1779H21.1228L22.426 47.4787L22.5263 47.8797L22.426 48.3809L22.3258 48.6817L22.1253 49.0827L21.7243 49.3834L21.223 49.5839H20.6215H20.02L19.7192 49.4837L19.3182 49.2832L19.0175 49.1829L18.817 48.9824L18.5162 48.6817L18.416 48.3809L18.3157 47.9799L18.416 47.5789V47.3784L18.6165 47.0777L18.7167 46.8772L18.9172 46.6767L19.3182 46.5764L19.8195 46.4762V46.3759" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M21.4242 44.2707L19.72 43.5689L19.8202 43.0677L20.0207 42.7669L20.3215 42.5664L20.6222 42.4662L21.0232 42.5664L21.4242 42.7669L21.6247 43.0677V43.5689L21.5245 44.0702V44.1704L21.4242 44.2707ZM24.6323 42.1654H24.532L24.3315 42.4662L24.131 42.6667L23.8302 42.7669L23.329 42.8672L21.9255 43.2682V42.7669L21.8252 42.3659L21.6247 42.0652L21.2237 41.8647L20.923 41.7644L20.6222 41.8647L20.3215 41.9649L20.0207 42.2657L19.8202 42.5664L19.5195 43.1679L18.918 44.6717H19.0182L19.1185 44.5714L19.2187 44.3709L19.4192 44.2707H19.5195L19.9205 44.3709L22.527 45.3734L22.8277 45.4737L22.928 45.6742L23.0282 45.7744V46.0752L22.928 46.1754L23.0282 46.2757L23.73 44.4712H23.6297L23.5295 44.5714L23.4292 44.7719L23.329 44.8722H23.1285L22.8277 44.7719L21.6247 44.3709V44.2707L21.725 44.1704L21.8252 43.9699L24.131 43.2682L24.6323 42.1654Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M22.5259 37.3534L22.7264 37.1529H22.9269H23.0271L23.2276 37.3534L23.3279 37.5539L24.1299 38.9574L22.4256 39.0576H22.1249L21.9244 38.9574L21.8241 38.8571V38.7569L21.9244 38.4561V38.3559H21.8241L20.9219 39.9599L21.1224 39.8596L21.4231 39.6591H21.9244L24.1299 39.5589L25.0322 40.1604L25.2327 40.2606L25.3329 40.4611L25.4332 40.6616L25.3329 40.8621L25.2327 40.9624L25.3329 41.0626L26.3354 39.4586L26.2352 39.3584L26.1349 39.4586L26.0347 39.6591L25.8342 39.7594H25.6337L25.3329 39.5589L24.4306 38.9574L23.5284 37.2531L23.3279 36.7519L23.2276 36.4511L23.3279 36.1504V36.0501H23.2276" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M21.4244 36.4511L21.0234 37.0526L21.7252 37.8546L21.8254 37.7544" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26.3351 32.5414L24.0293 35.0476L24.6308 35.7494L24.7311 35.6492L24.5306 35.4486V35.2481L24.4303 35.0476L24.5306 34.9474L24.7311 34.5464L25.0318 34.2456L27.6383 36.4512L27.8388 36.7519L27.9391 36.8522V37.0527L27.7386 37.2532L27.6383 37.3534L27.7386 37.4537L29.0418 36.0502L28.9416 35.9499L28.8413 36.0502L28.6408 36.2507H28.4403H28.3401L28.0393 36.0502L25.5331 33.7444L25.9341 33.2431L26.1346 33.1429L26.2348 33.0426L26.4353 32.9424H26.6358L27.0368 33.1429V33.0426" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M29.3435 30.0351L29.4438 29.9348L29.6443 29.8346H29.8448H30.0453L30.2458 30.1354L31.3485 31.5389L31.7495 32.0401L31.95 32.4411V32.7419V33.0426L31.7495 33.4436L31.4488 33.6441L31.148 33.8446L30.9475 33.9449H30.6468H30.4463L30.2458 33.8446L30.0453 33.6441L29.544 33.1429L28.341 31.6391L28.1405 31.4386V31.2381V31.0376L28.341 30.8371L28.4413 30.7369H28.341L26.9375 31.9399L27.138 31.8396L27.2383 31.7394H27.4388L27.6393 31.8396L27.8398 32.0401L28.9425 33.3434L29.3435 33.8446L29.7445 34.1454L30.1455 34.3459H30.5465L30.9475 34.2456L31.549 33.8446L31.95 33.4436L32.1505 33.0426V32.6416V32.2406L31.95 31.8396L31.549 31.3384L30.4463 29.9348L30.2458 29.7343V29.5338V29.3333L30.4463 29.1328L30.5465 29.0326H30.4463L29.3435 29.9348" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M33.3527 29.6341L32.5507 28.0301L32.9517 27.7293L33.4529 27.5288L33.8539 27.6291L34.1547 27.7293L34.4554 28.0301L34.5557 28.5313V28.7318L34.4554 28.9323L34.2549 29.1329L33.9542 29.3334L33.6534 29.5339L33.3527 29.6341ZM34.3552 31.4386L33.5532 29.8346L33.7537 29.7344L33.9542 29.5339L34.3552 29.3334H34.7562H35.0569L35.2574 29.4336L35.4579 29.5339L35.6584 29.7344L35.7587 30.1354L35.6584 30.5364L35.4579 30.8371L35.0569 31.1379L34.3552 31.4386ZM34.9567 28.9323L35.1572 28.6316V28.3308V28.0301L35.0569 27.7293L34.8564 27.4286L34.5557 27.2281H34.1547H33.6534L33.3527 27.3283L32.9517 27.5288L31.3477 28.4311V28.5313L31.5482 28.4311L31.7487 28.3308H31.8489L32.0494 28.5313L32.2499 28.7318L33.5532 31.3384L33.7537 31.5389V31.7394L33.6534 31.9399L33.4529 32.1404H33.3527V32.2406L35.1572 31.2381L35.7587 30.9374L36.0594 30.6366L36.2599 30.3359L36.3602 30.0351V29.6341L36.2599 29.3334L35.9592 29.0326L35.6584 28.9323L35.3577 28.8321L34.9567 28.9323Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M39.3676 27.7293L37.9641 28.2306L38.1646 26.3258L39.3676 27.7293ZM39.4679 27.8296L39.8689 28.3309L40.1696 28.7319V28.8321V28.9324L40.0694 29.0326L39.8689 29.1329V29.2331L41.4729 28.7319V28.6316H41.2724H41.0719L40.7711 28.4311L40.5706 28.1304L38.0644 25.2231H37.9641L37.5631 29.1329L37.4629 29.5339V29.8346L37.3626 29.9349L37.1621 30.1354L38.4654 29.7344L38.3651 29.6341L38.1646 29.7344H37.9641L37.8639 29.6341V29.5339V29.1329V28.4311L39.4679 27.8296Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M43.1775 25.9248L43.6788 25.223L44.2803 24.5213L44.581 24.1203L44.8818 23.9198L45.0823 23.8195L43.5785 24.02V24.1203H43.6788H43.8793L43.9795 24.2205V24.5213L43.5785 25.0225L42.977 25.8245L42.576 26.2255L42.3755 24.9223V24.5213L42.4758 24.3208L42.7765 24.2205H42.977L42.8768 24.1203L41.0723 24.3208V24.421H41.1725H41.4733L41.6738 24.6215L41.774 25.0225L42.175 27.8295V28.1303V28.3308L42.0748 28.431L41.774 28.5313H41.6738V28.6315L43.5785 28.431V28.3308H43.378H43.0773L42.977 28.1303L42.7765 27.7293L42.576 26.3258L44.2803 27.5288L44.4808 27.7293L44.581 27.8295L44.4808 28.03L44.3805 28.1303L44.2803 28.2305L46.2853 28.03L46.185 27.9298L45.9845 27.8295L45.6838 27.7293L44.982 27.3283" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M48.2915 25.624L48.9932 25.0225L49.5947 24.421L49.9957 24.1203L50.2965 23.9198H50.5972V23.8195L48.9932 23.7193V23.8195H49.0935L49.3942 23.9198V24.1203L49.294 24.3208L48.893 24.7218L48.1912 25.4235L47.69 25.8245L47.7902 24.421V24.02L47.9907 23.9198L48.2915 23.8195H48.3917V23.7193L46.487 23.619V23.7193H46.6875L46.9882 23.8195L47.0885 24.02V24.421L46.9882 27.3283V27.629L46.888 27.8295L46.7877 27.9298H46.487H46.3867V28.03H48.1912H48.2915H48.091L47.7902 27.9298L47.69 27.7293L47.5897 27.3283L47.69 25.9248L49.0935 27.4285L49.294 27.629V27.7293L49.1937 27.9298L49.0935 28.03H48.9932V28.1303H50.9982L50.6975 28.03L50.3967 27.8295L49.7952 27.228" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M54.1058 27.2281L52.7023 26.9273L53.9053 25.4236L54.1058 27.2281ZM54.2061 27.4286L54.3063 28.0301V28.5314L54.2061 28.6316V28.7319H54.0056H53.8051V28.8321L55.5093 29.2331V29.1329L55.3088 29.0326L55.1083 28.9324L55.0081 28.6316L54.9078 28.2306L54.4066 24.4211H54.3063L51.9003 27.5289L51.5995 27.8296L51.399 28.0301L51.2988 28.1304H50.998V28.2306L52.3013 28.5314V28.4311L52.1008 28.3309L52.0006 28.2306L51.9003 28.1304V28.0301L52.1008 27.6291L52.6021 27.0276L54.2061 27.4286Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M57.7146 27.7293L58.2159 26.4261L58.4164 26.1253L58.6169 26.0251H58.9176L59.0179 26.1253L59.1181 26.0251L57.3136 25.3233L57.5141 25.4236L57.7146 25.6241L57.8149 25.8246L57.6144 26.2256L56.5116 28.8321L56.4114 29.1328L56.2109 29.2331L56.0104 29.3333L55.8099 29.2331H55.7096H55.6094L57.4139 30.0351V29.9348L57.3136 29.8346L57.0129 29.7343L56.9126 29.5338L57.1131 29.1328L57.6144 27.8296L59.5192 28.7318L59.0179 29.9348L58.8174 30.2356L58.7171 30.3358H58.5166H58.3161L58.2159 30.2356L58.1156 30.3358L59.9202 31.1378V31.0376L59.7197 30.9373L59.5192 30.7368L59.4189 30.6366L59.6194 30.1353L60.7222 27.5288L60.9227 27.1278H61.1232H61.4239L61.5242 27.2281L61.6244 27.1278L59.8199 26.3258V26.4261L59.9202 26.5263L60.2209 26.7268L60.3212 26.8271L60.1207 27.2281L59.6194 28.5313" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M62.2257 30.0351L63.2282 28.5313L63.7294 28.7318L64.0302 28.9323L64.1305 29.3333V29.6341L64.0302 30.0351L63.7294 30.3358L63.3284 30.4361H62.8272L62.3259 30.1353L62.2257 30.0351ZM63.6292 33.5438L63.4287 33.2431L63.2282 33.0426V32.7418L63.1279 32.2406V30.6366L63.6292 30.8371H64.0302L64.331 30.6366L64.6317 30.3358L64.732 30.0351V29.7343V29.4336L64.5315 29.1328L64.2307 28.8321L63.7294 28.4311L62.3259 27.5288V27.6291L62.4262 27.7293L62.6267 27.8296L62.7269 28.0301L62.6267 28.2306L62.5264 28.5313L60.9224 30.9373L60.7219 31.1378L60.6217 31.2381H60.3209L60.1204 31.1378L60.0202 31.0376L59.9199 31.1378L61.5239 32.2406L61.6242 32.1403L61.4237 32.0401L61.3234 31.9398L61.2232 31.7393V31.5388L61.4237 31.2381L62.1254 30.2356H62.2257V30.3358L62.5264 30.4361L62.6267 32.9423L63.6292 33.5438Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M67.3382 31.4386L68.1402 32.2406L68.4409 32.5414V32.6416V32.8421L68.2404 33.2431L68.3407 33.3434L68.9422 32.6416L66.5362 30.4361V30.5363L66.6364 30.6366L66.7367 30.8371L66.8369 30.9373L66.7367 31.1379L66.5362 31.4386L64.5312 33.4436L64.2304 33.7444H64.0299L63.7292 33.6441L63.6289 33.5439L66.0349 35.8496L67.0374 35.3484L66.8369 35.2481L66.4359 35.3484L66.1352 35.4486H65.9347L65.8344 35.3484L65.3332 35.0476L64.8319 34.5464L64.7317 34.3459V34.2456L64.9322 33.9449L66.0349 32.8421L66.6364 33.5439L66.8369 33.8446V34.0451L66.6364 34.3459L66.7367 34.4461L67.7392 33.4436L67.6389 33.3434L67.4384 33.5439L67.1377 33.6441L67.0374 33.5439L66.7367 33.3434L66.1352 32.7419" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M69.0434 35.9499L70.5471 34.8471L70.8479 35.0476L70.9481 35.2481V35.5489V35.7494L70.8479 35.9499L70.7476 36.2506L70.5471 36.4511L70.1461 36.5514L69.8454 36.6516L69.5446 36.5514L69.2439 36.3509L69.1436 36.1504L69.0434 35.9499ZM68.9431 36.0501L69.0434 36.3509L69.2439 36.6516L69.4444 36.8521L69.6449 37.0526L69.8454 37.1529H70.1461L70.3466 37.2531L70.5471 37.1529L70.7476 37.0526L70.9481 36.9524L71.2489 36.6516L71.3491 36.3509L71.4494 36.0501L71.3491 35.6491L71.1486 35.3484L70.8479 34.8471L69.9456 33.6441L69.8454 33.7444L69.9456 33.8446L70.0459 34.0451V34.2456L69.9456 34.3459L69.7451 34.5464L67.4394 36.3509L67.2389 36.5514H67.0384H66.8379L66.6374 36.3509L66.5371 36.2506L67.6399 37.7544H67.7401L67.6399 37.6541L67.5396 37.4536V37.2531L67.6399 37.0526L67.8404 36.8521L68.9431 36.0501Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M71.3487 39.1579L72.9527 38.2556L73.1532 38.5564L73.2535 38.7569L73.3537 38.9574L73.2535 39.2581L73.1532 39.4586L72.9527 39.6591L72.7522 39.8596L72.3512 39.9599H72.0505L71.7497 39.8596L71.5492 39.6591L71.449 39.4586L71.3487 39.1579ZM71.1482 39.2581L71.3487 39.5589L71.449 39.8596L71.6495 40.1604L71.7497 40.3609L71.9502 40.4611L72.251 40.5614H72.4515H72.652H72.8525L73.1532 40.4611L73.3537 40.1604L73.5542 39.8596L73.6545 39.5589V39.2581L73.5542 38.8571L73.2535 38.3559L72.5517 37.0526H72.4515L72.5517 37.1529L72.652 37.4536L72.5517 37.5539L72.4515 37.7544L72.251 37.9549L69.6444 39.3584L69.4439 39.4586H69.2434H69.0429L68.9427 39.2581L68.8424 39.0576L68.7422 39.1579L69.6444 40.7619H69.7447L69.6444 40.5614V40.3609V40.2606L69.7447 40.0601L70.0454 39.8596L71.1482 39.2581Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M75.6597 43.4687V43.6692L75.76 43.8697L75.6597 44.0702L75.5595 44.1705L75.2587 44.371L73.5545 44.9725L72.9529 45.173L72.5519 45.2732L72.2512 45.173L71.9504 44.9725L71.6497 44.772L71.5494 44.371L71.4492 44.0702V43.7695V43.5689L71.5494 43.3684L71.7499 43.1679L72.0507 43.0677L72.5519 42.7669L74.3565 42.0652L74.6572 41.9649H74.8577L75.0582 42.0652L75.1585 42.2657V42.3659H75.2587L74.557 40.6617V40.7619L74.6572 40.9624L74.557 41.1629L74.4567 41.3634L74.156 41.4637L72.5519 42.0652L71.9504 42.3659L71.5494 42.5664L71.3489 42.8672L71.1484 43.2682V43.7695L71.3489 44.371L71.5494 44.8722L71.9504 45.2732L72.3514 45.4737H72.6522L73.1534 45.3735L73.6547 45.2732L75.359 44.5715L75.6597 44.4712H75.76L75.9605 44.5715L76.161 44.772V44.9725L76.2612 44.8722L75.76 43.4687" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M74.656 47.4787L76.4605 47.178L76.661 47.6792V47.98L76.5608 48.381L76.26 48.5815L75.859 48.782H75.458L75.1573 48.5815L74.8565 48.1805L74.656 47.6792V47.579V47.4787ZM73.052 50.9875L73.1523 50.5865L73.2525 50.386L73.453 50.0852L73.7538 49.6842L74.8565 48.5815L75.057 48.9825L75.3578 49.2832L75.7588 49.4837H76.0595L76.4605 49.2832L76.661 49.0827L76.8615 48.782L76.9618 48.4812V48.0802L76.8615 47.4787L76.5608 45.8747H76.4605V46.0752V46.2757V46.4762L76.26 46.5765H75.9593L73.052 47.178H72.8515H72.651L72.4505 47.0777L72.3503 46.777V46.6767H72.25L72.651 48.5815L72.7513 48.4812L72.651 48.381V48.1805L72.7513 47.98L72.9518 47.8797L73.2525 47.7795L74.4555 47.579V47.6792L74.5558 47.98L72.8515 49.7845L73.052 50.9875Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M58.3159 43.8697L56.2107 44.8722L54.1054 45.5739L50.6969 45.9749L48.6919 46.9774L47.6893 48.2807H47.7896L48.4914 48.3809L49.5941 47.3784L50.9976 47.1779L53.5039 47.2782L56.6117 46.9774L57.6142 46.4762L59.9199 45.4737L62.0252 44.0702L64.4312 41.7644L65.4337 43.0677L66.0352 43.1679L67.3385 42.4662L66.737 41.3634L65.7345 41.6642L64.1305 40.1604H63.7295L62.7269 41.0627L61.1229 42.6667L59.6192 43.3684L58.2157 41.8647L56.6117 41.5639L54.9074 40.2607L53.6041 40.8622L52.5014 40.9624L51.7996 40.6617L50.8974 41.4637L49.0929 42.8672L47.2883 43.3684L45.1831 43.2682L43.8798 44.6717L41.9751 44.9724L39.569 47.7794L37.3635 49.985L34.9575 51.4887L32.0503 51.6892H26.8372L26.6367 51.7895V52.1905L26.737 52.6917L26.8372 52.792L31.4487 53.0927L36.361 53.193L36.9625 53.4937L45.3836 53.594L48.1906 53.193L50.3961 52.792L56.9124 52.6917L56.8122 52.2907L55.9099 51.589L52.3009 51.188H50.1956L45.9851 51.4887H41.0728L38.2658 51.7895L36.762 51.99L36.0603 51.8897L38.767 50.0852L40.3711 49.0827L42.4763 46.5764L43.9801 46.0752L45.2833 44.5714L46.6868 44.6717L49.0929 44.3709L50.3961 42.9674L51.5991 41.9649L53.8046 42.1654L54.8071 41.5639L55.8097 42.4662L57.8147 43.0677L58.6167 43.7694L58.3159 43.8697Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M31.3486 69.5338L31.5491 69.4336L31.3486 68.8321L29.7446 67.7293H30.4463L31.2483 67.5288L32.0503 67.1278L32.7521 66.1253L32.3511 65.8245L30.9476 65.3233L30.7471 65.1228H31.1481L31.9501 64.7218L33.1531 63.8195L33.3536 63.4185L33.4538 62.9173L32.9526 63.0175L32.1506 62.9173L31.4488 62.817L30.6468 62.5163L30.0453 62.1153L31.0478 62.015L31.9501 61.9148L33.0528 61.3133L33.6544 60.812L34.3561 60.3108L34.7571 59.5088L35.1581 58.5062L34.1556 58.6065L33.1531 58.807H32.2508H31.5491L30.8473 58.6065L30.2458 58.5062L29.6443 58.2055V58.1052H30.7471L31.5491 58.005L32.7521 57.8045L34.7571 56.7017L35.3586 56.2005L35.8599 55.4987L36.2609 54.4962V53.995L33.5541 54.797L31.3486 54.6967L29.8448 54.4962L29.0428 54.2957L28.4413 53.8947L28.1406 53.7945L27.5391 53.6942L27.6393 54.396L28.2408 54.8972L28.9426 55.198L29.7446 55.599L31.3486 55.7995H32.1506H33.7546L34.4564 55.599L35.0579 55.2982V55.4987L34.2559 56.1002L33.2533 56.6015L32.2508 57.0025L31.3486 57.203L30.7471 57.3032H29.2433L27.9401 57.0025V57.7042L28.2408 58.2055L29.0428 58.9072L29.9451 59.3083L31.1481 59.7093L32.4513 59.9098L33.3536 59.609L33.9551 59.4085L33.6544 59.8095L33.1531 60.2105L32.6518 60.6115L31.3486 61.3133L29.0428 61.614L29.4438 62.5163L30.2458 63.0175L30.9476 63.4185H31.3486L32.0503 63.7193L31.5491 64.02L30.9476 64.3208L30.3461 64.421L29.6443 64.5213V64.9223L30.3461 65.624L31.1481 66.025L31.5491 66.2255L32.0503 66.3258L31.6493 66.827L30.6468 67.1278H29.9451H28.9426L28.8423 67.5288L30.2458 68.4311L31.1481 69.1328L31.3486 69.5338Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M80.1712 51.4887C80.1712 57.1027 78.7677 62.7168 75.9607 67.6291C72.8529 73.1428 68.7426 78.2556 63.8304 82.6666C58.9181 86.9774 53.4043 90.4862 47.4895 92.9925C41.675 90.4862 36.1612 86.9774 31.2489 82.6666C26.3366 78.2556 22.2264 73.1428 19.1186 67.6291C16.3116 62.7168 14.9081 57.1027 14.9081 51.4887V18.807H80.1712V51.4887ZM13.4043 51.4887C13.4043 54.396 13.8053 57.3032 14.6073 60.2105C15.3091 63.0175 16.4118 65.7243 17.8153 68.3308C19.5196 71.1378 21.3241 73.9449 23.5296 76.5514C25.6349 79.1579 27.9406 81.6641 30.5472 83.8697C33.0534 86.1754 35.7602 88.1804 38.6675 89.8847C41.4745 91.6892 44.482 93.193 47.4895 94.4962C50.5973 93.193 53.6048 91.6892 56.4118 89.8847C59.3191 88.1804 62.0258 86.1754 64.5321 83.8697C67.1386 81.6641 69.4444 79.1579 71.5497 76.5514C73.7552 73.9449 75.5597 71.1378 77.1637 68.3308C78.6674 65.7243 79.7702 63.0175 80.472 60.2105C81.274 57.3032 81.675 54.396 81.675 51.4887V17.4035H13.4043V51.4887Z" fill="white"/> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M108.648 58.408H108.552C108.408 59.224 107.952 59.912 107.184 60.472C106.432 61.016 105.424 61.288 104.16 61.288C103.168 61.288 102.248 61.104 101.4 60.736C100.568 60.368 99.84 59.824 99.216 59.104C98.608 58.368 98.128 57.464 97.776 56.392C97.424 55.32 97.248 54.08 97.248 52.672C97.248 51.264 97.424 50.024 97.776 48.952C98.144 47.864 98.656 46.952 99.312 46.216C99.968 45.48 100.752 44.92 101.664 44.536C102.576 44.152 103.592 43.96 104.712 43.96C106.216 43.96 107.496 44.288 108.552 44.944C109.608 45.6 110.44 46.544 111.048 47.776L108.48 49.288C108.176 48.568 107.72 47.968 107.112 47.488C106.52 47.008 105.72 46.768 104.712 46.768C103.464 46.768 102.464 47.152 101.712 47.92C100.976 48.672 100.608 49.792 100.608 51.28V53.968C100.608 55.44 100.984 56.56 101.736 57.328C102.488 58.096 103.496 58.48 104.76 58.48C105.256 58.48 105.72 58.424 106.152 58.312C106.584 58.184 106.96 58 107.28 57.76C107.6 57.52 107.856 57.224 108.048 56.872C108.24 56.52 108.336 56.104 108.336 55.624V54.544H105.048V51.88H111.384V61H108.648V58.408ZM114.862 61V48.472H117.934V51.064H118.054C118.134 50.728 118.254 50.408 118.414 50.104C118.59 49.784 118.814 49.504 119.086 49.264C119.358 49.024 119.678 48.832 120.046 48.688C120.43 48.544 120.87 48.472 121.366 48.472H122.038V51.376H121.078C120.038 51.376 119.254 51.528 118.726 51.832C118.198 52.136 117.934 52.632 117.934 53.32V61H114.862ZM132.151 48.472H135.031L129.991 63.232C129.831 63.68 129.647 64.064 129.439 64.384C129.247 64.72 129.015 64.992 128.743 65.2C128.471 65.408 128.143 65.56 127.759 65.656C127.375 65.752 126.927 65.8 126.415 65.8H124.567V63.352H126.823L127.399 61.6L122.911 48.472H125.959L128.143 55.096L128.959 58.264H129.103L129.967 55.096L132.151 48.472ZM129.391 47.056L127.543 46.168L129.823 41.68L132.415 42.952L129.391 47.056ZM140.969 61C139.913 61 139.105 60.728 138.545 60.184C138.001 59.624 137.729 58.832 137.729 57.808V50.92H135.881V48.472H136.841C137.305 48.472 137.617 48.368 137.777 48.16C137.953 47.936 138.041 47.608 138.041 47.176V45.04H140.801V48.472H143.369V50.92H140.801V58.552H143.177V61H140.969ZM153.522 58.912H153.402C153.29 59.232 153.138 59.536 152.946 59.824C152.77 60.096 152.538 60.344 152.25 60.568C151.978 60.792 151.642 60.968 151.242 61.096C150.858 61.224 150.41 61.288 149.898 61.288C148.602 61.288 147.61 60.864 146.922 60.016C146.234 59.168 145.89 57.96 145.89 56.392V48.472H148.962V56.08C148.962 56.944 149.13 57.608 149.466 58.072C149.802 58.52 150.338 58.744 151.074 58.744C151.378 58.744 151.674 58.704 151.962 58.624C152.266 58.544 152.53 58.424 152.754 58.264C152.978 58.088 153.162 57.88 153.306 57.64C153.45 57.384 153.522 57.088 153.522 56.752V48.472H156.594V61H153.522V58.912ZM160.143 43.24H163.215V50.536H163.311C163.535 49.816 163.959 49.248 164.583 48.832C165.207 48.4 165.935 48.184 166.767 48.184C168.367 48.184 169.583 48.752 170.415 49.888C171.263 51.008 171.687 52.616 171.687 54.712C171.687 56.824 171.263 58.448 170.415 59.584C169.583 60.72 168.367 61.288 166.767 61.288C165.935 61.288 165.207 61.072 164.583 60.64C163.975 60.208 163.551 59.632 163.311 58.912H163.215V61H160.143V43.24ZM165.783 58.744C166.583 58.744 167.231 58.48 167.727 57.952C168.223 57.424 168.471 56.712 168.471 55.816V53.656C168.471 52.76 168.223 52.048 167.727 51.52C167.231 50.976 166.583 50.704 165.783 50.704C165.047 50.704 164.431 50.888 163.935 51.256C163.455 51.624 163.215 52.112 163.215 52.72V56.704C163.215 57.36 163.455 57.864 163.935 58.216C164.431 58.568 165.047 58.744 165.783 58.744ZM183.75 61C183.078 61 182.542 60.808 182.142 60.424C181.758 60.024 181.518 59.496 181.422 58.84H181.278C181.07 59.656 180.646 60.272 180.006 60.688C179.366 61.088 178.574 61.288 177.63 61.288C176.35 61.288 175.366 60.952 174.678 60.28C173.99 59.608 173.646 58.712 173.646 57.592C173.646 56.296 174.11 55.336 175.038 54.712C175.966 54.072 177.286 53.752 178.998 53.752H181.134V52.84C181.134 52.136 180.95 51.592 180.582 51.208C180.214 50.824 179.622 50.632 178.806 50.632C178.086 50.632 177.502 50.792 177.054 51.112C176.622 51.416 176.254 51.784 175.95 52.216L174.126 50.584C174.59 49.864 175.206 49.288 175.974 48.856C176.742 48.408 177.758 48.184 179.022 48.184C180.718 48.184 182.006 48.568 182.886 49.336C183.766 50.104 184.206 51.208 184.206 52.648V58.552H185.454V61H183.75ZM178.662 59.056C179.35 59.056 179.934 58.904 180.414 58.6C180.894 58.296 181.134 57.848 181.134 57.256V55.6H179.166C177.566 55.6 176.766 56.112 176.766 57.136V57.544C176.766 58.056 176.926 58.44 177.246 58.696C177.582 58.936 178.054 59.056 178.662 59.056ZM187.94 43.24H191.012V53.944H191.132L192.788 51.688L195.596 48.472H199.076L194.756 53.32L199.532 61H195.884L192.668 55.384L191.012 57.184V61H187.94V43.24ZM201.417 43.24H204.489V53.944H204.609L206.265 51.688L209.073 48.472H212.553L208.233 53.32L213.009 61H209.361L206.145 55.384L204.489 57.184V61H201.417V43.24ZM224.086 61C223.414 61 222.878 60.808 222.478 60.424C222.094 60.024 221.854 59.496 221.758 58.84H221.614C221.406 59.656 220.982 60.272 220.342 60.688C219.702 61.088 218.91 61.288 217.966 61.288C216.686 61.288 215.702 60.952 215.014 60.28C214.326 59.608 213.982 58.712 213.982 57.592C213.982 56.296 214.446 55.336 215.374 54.712C216.302 54.072 217.622 53.752 219.334 53.752H221.47V52.84C221.47 52.136 221.286 51.592 220.918 51.208C220.55 50.824 219.958 50.632 219.142 50.632C218.422 50.632 217.838 50.792 217.39 51.112C216.958 51.416 216.59 51.784 216.286 52.216L214.462 50.584C214.926 49.864 215.542 49.288 216.31 48.856C217.078 48.408 218.094 48.184 219.358 48.184C221.054 48.184 222.342 48.568 223.222 49.336C224.102 50.104 224.542 51.208 224.542 52.648V58.552H225.79V61H224.086ZM218.998 59.056C219.686 59.056 220.27 58.904 220.75 58.6C221.23 58.296 221.47 57.848 221.47 57.256V55.6H219.502C217.902 55.6 217.102 56.112 217.102 57.136V57.544C217.102 58.056 217.262 58.44 217.582 58.696C217.918 58.936 218.39 59.056 218.998 59.056ZM227.775 55.216V52.168H234.639V55.216H227.775ZM97.776 71.24H100.848V78.56H100.968C101.224 77.888 101.624 77.328 102.168 76.88C102.728 76.416 103.496 76.184 104.472 76.184C105.768 76.184 106.76 76.608 107.448 77.456C108.136 78.304 108.48 79.512 108.48 81.08V89H105.408V81.392C105.408 80.496 105.248 79.824 104.928 79.376C104.608 78.928 104.08 78.704 103.344 78.704C103.024 78.704 102.712 78.752 102.408 78.848C102.12 78.928 101.856 79.056 101.616 79.232C101.392 79.392 101.208 79.6 101.064 79.856C100.92 80.096 100.848 80.384 100.848 80.72V89H97.776V71.24ZM111.885 89V76.472H114.957V79.064H115.077C115.157 78.728 115.277 78.408 115.437 78.104C115.613 77.784 115.837 77.504 116.109 77.264C116.381 77.024 116.701 76.832 117.069 76.688C117.453 76.544 117.893 76.472 118.389 76.472H119.061V79.376H118.101C117.061 79.376 116.277 79.528 115.749 79.832C115.221 80.136 114.957 80.632 114.957 81.32V89H111.885ZM126.254 89.288C125.326 89.288 124.494 89.136 123.758 88.832C123.038 88.512 122.422 88.072 121.91 87.512C121.414 86.936 121.03 86.248 120.758 85.448C120.486 84.632 120.35 83.72 120.35 82.712C120.35 81.72 120.478 80.824 120.734 80.024C121.006 79.224 121.39 78.544 121.886 77.984C122.382 77.408 122.99 76.968 123.71 76.664C124.43 76.344 125.246 76.184 126.158 76.184C127.134 76.184 127.982 76.352 128.702 76.688C129.422 77.024 130.014 77.48 130.478 78.056C130.942 78.632 131.286 79.304 131.51 80.072C131.75 80.824 131.87 81.632 131.87 82.496V83.504H123.542V83.816C123.542 84.728 123.798 85.464 124.31 86.024C124.822 86.568 125.582 86.84 126.59 86.84C127.358 86.84 127.982 86.68 128.462 86.36C128.958 86.04 129.398 85.632 129.782 85.136L131.438 86.984C130.926 87.704 130.222 88.272 129.326 88.688C128.446 89.088 127.422 89.288 126.254 89.288ZM126.206 78.488C125.39 78.488 124.742 78.76 124.262 79.304C123.782 79.848 123.542 80.552 123.542 81.416V81.608H128.678V81.392C128.678 80.528 128.462 79.832 128.03 79.304C127.614 78.76 127.006 78.488 126.206 78.488ZM134.573 76.472H137.645V78.536H137.741C137.965 77.816 138.389 77.248 139.013 76.832C139.637 76.4 140.365 76.184 141.197 76.184C142.797 76.184 144.013 76.752 144.845 77.888C145.693 79.008 146.117 80.616 146.117 82.712C146.117 84.824 145.693 86.448 144.845 87.584C144.013 88.72 142.797 89.288 141.197 89.288C140.365 89.288 139.637 89.072 139.013 88.64C138.405 88.208 137.981 87.632 137.741 86.912H137.645V93.8H134.573V76.472ZM140.213 86.744C141.013 86.744 141.661 86.48 142.157 85.952C142.653 85.424 142.901 84.712 142.901 83.816V81.656C142.901 80.76 142.653 80.048 142.157 79.52C141.661 78.976 141.013 78.704 140.213 78.704C139.477 78.704 138.861 78.888 138.365 79.256C137.885 79.624 137.645 80.112 137.645 80.72V84.704C137.645 85.36 137.885 85.864 138.365 86.216C138.861 86.568 139.477 86.744 140.213 86.744ZM148.964 76.472H152.036V78.536H152.132C152.356 77.816 152.78 77.248 153.404 76.832C154.028 76.4 154.756 76.184 155.588 76.184C157.188 76.184 158.404 76.752 159.236 77.888C160.084 79.008 160.508 80.616 160.508 82.712C160.508 84.824 160.084 86.448 159.236 87.584C158.404 88.72 157.188 89.288 155.588 89.288C154.756 89.288 154.028 89.072 153.404 88.64C152.796 88.208 152.372 87.632 152.132 86.912H152.036V93.8H148.964V76.472ZM154.604 86.744C155.404 86.744 156.052 86.48 156.548 85.952C157.044 85.424 157.292 84.712 157.292 83.816V81.656C157.292 80.76 157.044 80.048 156.548 79.52C156.052 78.976 155.404 78.704 154.604 78.704C153.868 78.704 153.252 78.888 152.756 79.256C152.276 79.624 152.036 80.112 152.036 80.72V84.704C152.036 85.36 152.276 85.864 152.756 86.216C153.252 86.568 153.868 86.744 154.604 86.744ZM170.842 86.912H170.722C170.61 87.232 170.458 87.536 170.266 87.824C170.09 88.096 169.858 88.344 169.57 88.568C169.298 88.792 168.962 88.968 168.562 89.096C168.178 89.224 167.73 89.288 167.218 89.288C165.922 89.288 164.93 88.864 164.242 88.016C163.554 87.168 163.21 85.96 163.21 84.392V76.472H166.282V84.08C166.282 84.944 166.45 85.608 166.786 86.072C167.122 86.52 167.658 86.744 168.394 86.744C168.698 86.744 168.994 86.704 169.282 86.624C169.586 86.544 169.85 86.424 170.074 86.264C170.298 86.088 170.482 85.88 170.626 85.64C170.77 85.384 170.842 85.088 170.842 84.752V76.472H173.914V89H170.842V86.912ZM177.464 89V76.472H180.536V79.064H180.656C180.736 78.728 180.856 78.408 181.016 78.104C181.192 77.784 181.416 77.504 181.688 77.264C181.96 77.024 182.28 76.832 182.648 76.688C183.032 76.544 183.472 76.472 183.968 76.472H184.64V79.376H183.68C182.64 79.376 181.856 79.528 181.328 79.832C180.8 80.136 180.536 80.632 180.536 81.32V89H177.464Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/hafnarfjordur.svg b/libs/application/templates/financial-aid/src/svg/hafnarfjordur.svg deleted file mode 100644 index 3d5a206f3e7f..000000000000 --- a/libs/application/templates/financial-aid/src/svg/hafnarfjordur.svg +++ /dev/null @@ -1,10 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M75.4336 80.9182V85.077C72.4836 88.2023 64.7485 87.9267 62.2307 84.5008C62.2307 84.5008 60.001 87.2879 55.3537 87.2879C50.9194 87.2879 48.2137 84.5008 48.2137 84.5008C48.2137 84.5008 45.5142 87.2879 41.0799 87.2879C36.4326 87.2879 34.2029 84.5008 34.2029 84.5008C31.685 87.9267 23.95 88.2023 21 85.077V80.9182C23.1545 82.9851 30.6892 84.5446 34.2029 79.8033C34.2029 79.8033 41.7813 87.8453 48.2137 79.8033C54.6522 87.8453 62.2307 79.8033 62.2307 79.8033C65.7444 84.5383 73.279 82.9851 75.4336 80.9182ZM75.4336 89.6303V93.7891C72.4836 96.9144 64.7485 96.6389 62.2307 93.2129C62.2307 93.2129 60.001 96 55.3537 96C50.9194 96 48.2137 93.2129 48.2137 93.2129C48.2137 93.2129 45.5142 96 41.0799 96C36.4326 96 34.2029 93.2129 34.2029 93.2129C31.685 96.6389 23.95 96.9144 21 93.7891V89.6303C23.1545 91.6972 30.6892 93.2567 34.2029 88.5155C34.2029 88.5155 41.7813 96.5574 48.2137 88.5155C54.6522 96.5574 62.2307 88.5155 62.2307 88.5155C65.7444 93.2567 73.279 91.6972 75.4336 89.6303Z" fill="#4363A9"/> -<path d="M35.6238 84.4945L34.5215 82.8348L40.1897 79.0706L43.1522 29.1966L45.1376 29.3094L42.1188 80.1792L35.6238 84.4945ZM60.8145 84.4945L61.9168 82.8348L56.2486 79.0706L53.2861 29.1966L51.3006 29.3094L54.3195 80.1792L60.8145 84.4945ZM47.2233 58.2266H49.215V61.6087H47.2233V58.2266ZM47.2233 45.7252H49.215V49.1074H47.2233V45.7252ZM47.2233 33.2239H49.215V36.606H47.2233V33.2239Z" fill="#4363A9"/> -<path d="M40.666 26.6098H55.7729V29.8103H40.666V26.6098Z" fill="#4363A9"/> -<path d="M45.144 27.1235H43.1523V21.0043H45.144V27.1235ZM53.28 27.1235H51.2883V21.0043H53.28V27.1235Z" fill="#4363A9"/> -<path d="M43.2412 23.4407L23.3617 18.0042L23.3555 18.0293V18.9312L37.3162 23.8854L23.3555 28.7456V29.6726L43.2412 24.3614V23.4407ZM53.1934 23.4407L73.0791 18.0042L73.0854 18.0293V18.9312L59.1247 23.8854L73.0854 28.7456V29.6726L53.1934 24.3614V23.4407ZM48.2455 16L40.667 20.165V21.5304H55.7738V20.165L48.2455 16Z" fill="#4363A9"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.12 67.92H101.136V75H97.968V58.248H101.136V65.112H108.12V58.248H111.288V75H108.12V67.92ZM124.242 75C123.57 75 123.034 74.808 122.634 74.424C122.25 74.024 122.01 73.496 121.914 72.84H121.77C121.562 73.656 121.138 74.272 120.498 74.688C119.858 75.088 119.066 75.288 118.122 75.288C116.842 75.288 115.858 74.952 115.17 74.28C114.482 73.608 114.138 72.712 114.138 71.592C114.138 70.296 114.602 69.336 115.53 68.712C116.458 68.072 117.778 67.752 119.49 67.752H121.626V66.84C121.626 66.136 121.442 65.592 121.074 65.208C120.706 64.824 120.114 64.632 119.298 64.632C118.578 64.632 117.994 64.792 117.546 65.112C117.114 65.416 116.746 65.784 116.442 66.216L114.618 64.584C115.082 63.864 115.698 63.288 116.466 62.856C117.234 62.408 118.25 62.184 119.514 62.184C121.21 62.184 122.498 62.568 123.378 63.336C124.258 64.104 124.698 65.208 124.698 66.648V72.552H125.946V75H124.242ZM119.154 73.056C119.842 73.056 120.426 72.904 120.906 72.6C121.386 72.296 121.626 71.848 121.626 71.256V69.6H119.658C118.058 69.6 117.258 70.112 117.258 71.136V71.544C117.258 72.056 117.418 72.44 117.738 72.696C118.074 72.936 118.546 73.056 119.154 73.056ZM129.056 64.896H127.208V62.472H129.056V60.672C129.056 59.568 129.344 58.72 129.92 58.128C130.512 57.536 131.376 57.24 132.512 57.24H134.696V59.688H132.128V62.472H134.696V64.896H132.128V75H129.056V64.896ZM136.823 75V62.472H139.895V64.56H140.015C140.271 63.888 140.671 63.328 141.215 62.88C141.775 62.416 142.543 62.184 143.519 62.184C144.815 62.184 145.807 62.608 146.495 63.456C147.183 64.304 147.527 65.512 147.527 67.08V75H144.455V67.392C144.455 66.496 144.295 65.824 143.975 65.376C143.655 64.928 143.127 64.704 142.391 64.704C142.071 64.704 141.759 64.752 141.455 64.848C141.167 64.928 140.903 65.056 140.663 65.232C140.439 65.392 140.255 65.6 140.111 65.856C139.967 66.096 139.895 66.384 139.895 66.72V75H136.823ZM160.148 75C159.476 75 158.94 74.808 158.54 74.424C158.156 74.024 157.916 73.496 157.82 72.84H157.676C157.468 73.656 157.044 74.272 156.404 74.688C155.764 75.088 154.972 75.288 154.028 75.288C152.748 75.288 151.764 74.952 151.076 74.28C150.388 73.608 150.044 72.712 150.044 71.592C150.044 70.296 150.508 69.336 151.436 68.712C152.364 68.072 153.684 67.752 155.396 67.752H157.532V66.84C157.532 66.136 157.348 65.592 156.98 65.208C156.612 64.824 156.02 64.632 155.204 64.632C154.484 64.632 153.9 64.792 153.452 65.112C153.02 65.416 152.652 65.784 152.348 66.216L150.524 64.584C150.988 63.864 151.604 63.288 152.372 62.856C153.14 62.408 154.156 62.184 155.42 62.184C157.116 62.184 158.404 62.568 159.284 63.336C160.164 64.104 160.604 65.208 160.604 66.648V72.552H161.852V75H160.148ZM155.06 73.056C155.748 73.056 156.332 72.904 156.812 72.6C157.292 72.296 157.532 71.848 157.532 71.256V69.6H155.564C153.964 69.6 153.164 70.112 153.164 71.136V71.544C153.164 72.056 153.324 72.44 153.644 72.696C153.98 72.936 154.452 73.056 155.06 73.056ZM164.339 75V62.472H167.411V65.064H167.531C167.611 64.728 167.731 64.408 167.891 64.104C168.067 63.784 168.291 63.504 168.562 63.264C168.835 63.024 169.155 62.832 169.523 62.688C169.907 62.544 170.347 62.472 170.843 62.472H171.515V65.376H170.555C169.515 65.376 168.731 65.528 168.203 65.832C167.675 66.136 167.411 66.632 167.411 67.32V75H164.339ZM174.572 64.896H172.724V62.472H174.572V60.672C174.572 59.568 174.86 58.72 175.436 58.128C176.028 57.536 176.892 57.24 178.028 57.24H180.212V59.688H177.644V62.472H180.212V64.896H177.644V75H174.572V64.896ZM182.339 62.472H185.411V76.512C185.411 77.568 185.147 78.376 184.619 78.936C184.091 79.512 183.251 79.8 182.099 79.8H180.418V77.352H182.339V62.472ZM183.875 60.648C183.235 60.648 182.771 60.504 182.483 60.216C182.211 59.928 182.075 59.56 182.075 59.112V58.632C182.075 58.184 182.211 57.816 182.483 57.528C182.771 57.24 183.235 57.096 183.875 57.096C184.499 57.096 184.955 57.24 185.243 57.528C185.531 57.816 185.675 58.184 185.675 58.632V59.112C185.675 59.56 185.531 59.928 185.243 60.216C184.955 60.504 184.499 60.648 183.875 60.648ZM193.939 75.288C193.043 75.288 192.235 75.136 191.515 74.832C190.811 74.528 190.203 74.088 189.691 73.512C189.195 72.936 188.811 72.248 188.539 71.448C188.267 70.632 188.131 69.72 188.131 68.712C188.131 67.704 188.267 66.8 188.539 66C188.811 65.2 189.195 64.52 189.691 63.96C190.203 63.384 190.811 62.944 191.515 62.64C192.235 62.336 193.043 62.184 193.939 62.184C194.835 62.184 195.643 62.336 196.363 62.64C197.083 62.944 197.691 63.384 198.187 63.96C198.699 64.52 199.091 65.2 199.363 66C199.635 66.8 199.771 67.704 199.771 68.712C199.771 69.72 199.635 70.632 199.363 71.448C199.091 72.248 198.699 72.936 198.187 73.512C197.691 74.088 197.083 74.528 196.363 74.832C195.643 75.136 194.835 75.288 193.939 75.288ZM193.939 72.816C194.755 72.816 195.395 72.568 195.859 72.072C196.323 71.576 196.555 70.848 196.555 69.888V67.56C196.555 66.616 196.323 65.896 195.859 65.4C195.395 64.904 194.755 64.656 193.939 64.656C193.139 64.656 192.507 64.904 192.043 65.4C191.579 65.896 191.347 66.616 191.347 67.56V69.888C191.347 70.848 191.579 71.576 192.043 72.072C192.507 72.568 193.139 72.816 193.939 72.816ZM191.443 60.48C190.819 60.48 190.379 60.352 190.123 60.096C189.867 59.824 189.739 59.488 189.739 59.088V58.584C189.739 58.184 189.867 57.856 190.123 57.6C190.379 57.328 190.819 57.192 191.443 57.192C192.067 57.192 192.507 57.328 192.763 57.6C193.019 57.856 193.147 58.184 193.147 58.584V59.088C193.147 59.488 193.019 59.824 192.763 60.096C192.507 60.352 192.067 60.48 191.443 60.48ZM196.483 60.48C195.859 60.48 195.419 60.352 195.163 60.096C194.907 59.824 194.779 59.488 194.779 59.088V58.584C194.779 58.184 194.907 57.856 195.163 57.6C195.419 57.328 195.859 57.192 196.483 57.192C197.107 57.192 197.547 57.328 197.803 57.6C198.059 57.856 198.187 58.184 198.187 58.584V59.088C198.187 59.488 198.059 59.824 197.803 60.096C197.547 60.352 197.107 60.48 196.483 60.48ZM202.495 75V62.472H205.567V65.064H205.687C205.767 64.728 205.887 64.408 206.047 64.104C206.223 63.784 206.447 63.504 206.719 63.264C206.991 63.024 207.311 62.832 207.679 62.688C208.063 62.544 208.503 62.472 208.999 62.472H209.671V65.376H208.711C207.671 65.376 206.887 65.528 206.359 65.832C205.831 66.136 205.567 66.632 205.567 67.32V75H202.495ZM221.087 58.224L219.311 59.376C220.415 60.528 221.303 61.856 221.975 63.36C222.647 64.864 222.983 66.536 222.983 68.376C222.983 69.56 222.839 70.592 222.551 71.472C222.263 72.336 221.855 73.056 221.327 73.632C220.815 74.192 220.199 74.608 219.479 74.88C218.759 75.152 217.959 75.288 217.079 75.288C216.135 75.288 215.287 75.144 214.535 74.856C213.799 74.552 213.167 74.128 212.639 73.584C212.127 73.04 211.735 72.376 211.463 71.592C211.191 70.808 211.055 69.936 211.055 68.976C211.055 68.08 211.167 67.264 211.391 66.528C211.631 65.792 211.967 65.16 212.399 64.632C212.831 64.104 213.351 63.696 213.959 63.408C214.583 63.12 215.271 62.976 216.023 62.976C216.887 62.976 217.607 63.192 218.183 63.624C218.775 64.04 219.239 64.608 219.575 65.328L219.719 65.256C219.527 64.44 219.183 63.664 218.687 62.928C218.207 62.192 217.623 61.488 216.935 60.816L214.871 62.112L213.767 60.792L215.639 59.664C215.079 59.2 214.487 58.768 213.863 58.368C213.255 57.968 212.639 57.592 212.015 57.24H216.695C216.919 57.368 217.135 57.52 217.343 57.696C217.551 57.856 217.767 58.024 217.991 58.2L220.007 56.928L221.087 58.224ZM217.031 72.936C217.879 72.936 218.551 72.664 219.047 72.12C219.543 71.576 219.791 70.816 219.791 69.84V68.448C219.791 67.472 219.543 66.712 219.047 66.168C218.551 65.624 217.879 65.352 217.031 65.352C216.167 65.352 215.487 65.624 214.991 66.168C214.495 66.712 214.247 67.472 214.247 68.448V69.84C214.247 70.816 214.495 71.576 214.991 72.12C215.487 72.664 216.167 72.936 217.031 72.936ZM233.42 72.912H233.3C233.188 73.232 233.036 73.536 232.844 73.824C232.668 74.096 232.436 74.344 232.148 74.568C231.876 74.792 231.54 74.968 231.14 75.096C230.756 75.224 230.308 75.288 229.796 75.288C228.5 75.288 227.508 74.864 226.82 74.016C226.132 73.168 225.788 71.96 225.788 70.392V62.472H228.86V70.08C228.86 70.944 229.028 71.608 229.364 72.072C229.7 72.52 230.236 72.744 230.972 72.744C231.276 72.744 231.572 72.704 231.86 72.624C232.164 72.544 232.428 72.424 232.652 72.264C232.876 72.088 233.06 71.88 233.204 71.64C233.348 71.384 233.42 71.088 233.42 70.752V62.472H236.492V75H233.42V72.912ZM240.042 75V62.472H243.114V65.064H243.234C243.314 64.728 243.434 64.408 243.594 64.104C243.77 63.784 243.994 63.504 244.266 63.264C244.538 63.024 244.858 62.832 245.226 62.688C245.61 62.544 246.05 62.472 246.546 62.472H247.218V65.376H246.258C245.218 65.376 244.434 65.528 243.906 65.832C243.378 66.136 243.114 66.632 243.114 67.32V75H240.042Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/helgafellssveit.svg b/libs/application/templates/financial-aid/src/svg/helgafellssveit.svg deleted file mode 100644 index 7667aba5205d..000000000000 --- a/libs/application/templates/financial-aid/src/svg/helgafellssveit.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.606 96C30.4519 89.1714 16.7516 75.392 17.0034 58.353V16.6189C17.0034 16.4547 17.0686 16.2973 17.1847 16.1813C17.3007 16.0652 17.4581 16 17.6222 16H77.5826C77.6645 15.9991 77.7457 16.0144 77.8216 16.0451C77.8976 16.0757 77.9666 16.1212 78.0248 16.1787C78.0831 16.2363 78.1293 16.3048 78.1609 16.3804C78.1924 16.4559 78.2086 16.537 78.2086 16.6189V58.353C78.4533 75.392 64.753 89.1714 47.606 96Z" fill="#848484"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.12 67.92H101.136V75H97.968V58.248H101.136V65.112H108.12V58.248H111.288V75H108.12V67.92ZM120.09 75.288C119.162 75.288 118.33 75.136 117.594 74.832C116.874 74.512 116.258 74.072 115.746 73.512C115.25 72.936 114.866 72.248 114.594 71.448C114.322 70.632 114.186 69.72 114.186 68.712C114.186 67.72 114.314 66.824 114.57 66.024C114.842 65.224 115.226 64.544 115.722 63.984C116.218 63.408 116.826 62.968 117.546 62.664C118.266 62.344 119.082 62.184 119.994 62.184C120.97 62.184 121.818 62.352 122.538 62.688C123.258 63.024 123.85 63.48 124.314 64.056C124.778 64.632 125.122 65.304 125.346 66.072C125.586 66.824 125.706 67.632 125.706 68.496V69.504H117.378V69.816C117.378 70.728 117.634 71.464 118.146 72.024C118.658 72.568 119.418 72.84 120.426 72.84C121.194 72.84 121.818 72.68 122.298 72.36C122.794 72.04 123.234 71.632 123.618 71.136L125.274 72.984C124.762 73.704 124.058 74.272 123.162 74.688C122.282 75.088 121.258 75.288 120.09 75.288ZM120.042 64.488C119.226 64.488 118.578 64.76 118.098 65.304C117.618 65.848 117.378 66.552 117.378 67.416V67.608H122.514V67.392C122.514 66.528 122.298 65.832 121.866 65.304C121.45 64.76 120.842 64.488 120.042 64.488ZM131.481 75C130.425 75 129.649 74.736 129.153 74.208C128.657 73.68 128.409 72.936 128.409 71.976V57.24H131.481V72.552H133.137V75H131.481ZM146.768 76.056C146.768 76.712 146.648 77.288 146.408 77.784C146.184 78.296 145.808 78.72 145.28 79.056C144.752 79.392 144.072 79.648 143.24 79.824C142.408 80 141.392 80.088 140.192 80.088C139.136 80.088 138.24 80.016 137.504 79.872C136.768 79.744 136.16 79.552 135.68 79.296C135.216 79.056 134.88 78.752 134.672 78.384C134.464 78.016 134.36 77.6 134.36 77.136C134.36 76.432 134.552 75.88 134.936 75.48C135.336 75.096 135.888 74.848 136.592 74.736V74.472C136.08 74.344 135.68 74.096 135.392 73.728C135.12 73.344 134.984 72.896 134.984 72.384C134.984 72.064 135.048 71.784 135.176 71.544C135.304 71.288 135.472 71.072 135.68 70.896C135.904 70.72 136.152 70.576 136.424 70.464C136.696 70.336 136.984 70.24 137.288 70.176V70.08C136.52 69.728 135.944 69.24 135.56 68.616C135.192 67.992 135.008 67.264 135.008 66.432C135.008 65.152 135.448 64.128 136.328 63.36C137.208 62.576 138.496 62.184 140.192 62.184C140.576 62.184 140.952 62.208 141.32 62.256C141.704 62.304 142.056 62.384 142.376 62.496V62.088C142.376 60.872 142.968 60.264 144.152 60.264H146.096V62.616H143.432V62.952C144.088 63.32 144.576 63.8 144.896 64.392C145.216 64.984 145.376 65.664 145.376 66.432C145.376 67.696 144.936 68.712 144.056 69.48C143.192 70.248 141.904 70.632 140.192 70.632C139.456 70.632 138.816 70.56 138.272 70.416C138.032 70.528 137.824 70.68 137.648 70.872C137.472 71.048 137.384 71.272 137.384 71.544C137.384 72.168 137.928 72.48 139.016 72.48H142.376C143.912 72.48 145.024 72.8 145.712 73.44C146.416 74.064 146.768 74.936 146.768 76.056ZM143.888 76.416C143.888 76.016 143.728 75.704 143.408 75.48C143.088 75.256 142.536 75.144 141.752 75.144H137.48C137.048 75.464 136.832 75.896 136.832 76.44C136.832 76.92 137.032 77.296 137.432 77.568C137.832 77.84 138.512 77.976 139.472 77.976H141.008C142.016 77.976 142.744 77.848 143.192 77.592C143.656 77.336 143.888 76.944 143.888 76.416ZM140.192 68.544C141.696 68.544 142.448 67.904 142.448 66.624V66.216C142.448 64.936 141.696 64.296 140.192 64.296C138.688 64.296 137.936 64.936 137.936 66.216V66.624C137.936 67.904 138.688 68.544 140.192 68.544ZM157.711 75C157.039 75 156.503 74.808 156.103 74.424C155.719 74.024 155.479 73.496 155.383 72.84H155.239C155.031 73.656 154.607 74.272 153.967 74.688C153.327 75.088 152.535 75.288 151.591 75.288C150.311 75.288 149.327 74.952 148.639 74.28C147.951 73.608 147.607 72.712 147.607 71.592C147.607 70.296 148.071 69.336 148.999 68.712C149.927 68.072 151.247 67.752 152.959 67.752H155.095V66.84C155.095 66.136 154.911 65.592 154.543 65.208C154.175 64.824 153.583 64.632 152.767 64.632C152.047 64.632 151.463 64.792 151.015 65.112C150.583 65.416 150.215 65.784 149.911 66.216L148.087 64.584C148.551 63.864 149.167 63.288 149.935 62.856C150.703 62.408 151.719 62.184 152.983 62.184C154.679 62.184 155.967 62.568 156.847 63.336C157.727 64.104 158.167 65.208 158.167 66.648V72.552H159.415V75H157.711ZM152.623 73.056C153.311 73.056 153.895 72.904 154.375 72.6C154.855 72.296 155.095 71.848 155.095 71.256V69.6H153.127C151.527 69.6 150.727 70.112 150.727 71.136V71.544C150.727 72.056 150.887 72.44 151.207 72.696C151.543 72.936 152.015 73.056 152.623 73.056ZM162.525 64.896H160.677V62.472H162.525V60.672C162.525 59.568 162.813 58.72 163.389 58.128C163.981 57.536 164.845 57.24 165.981 57.24H168.165V59.688H165.597V62.472H168.165V64.896H165.597V75H162.525V64.896ZM175.262 75.288C174.334 75.288 173.502 75.136 172.766 74.832C172.046 74.512 171.43 74.072 170.918 73.512C170.422 72.936 170.038 72.248 169.766 71.448C169.494 70.632 169.358 69.72 169.358 68.712C169.358 67.72 169.486 66.824 169.742 66.024C170.014 65.224 170.398 64.544 170.894 63.984C171.39 63.408 171.998 62.968 172.718 62.664C173.438 62.344 174.254 62.184 175.166 62.184C176.142 62.184 176.99 62.352 177.71 62.688C178.43 63.024 179.022 63.48 179.486 64.056C179.95 64.632 180.294 65.304 180.518 66.072C180.758 66.824 180.878 67.632 180.878 68.496V69.504H172.55V69.816C172.55 70.728 172.806 71.464 173.318 72.024C173.83 72.568 174.59 72.84 175.598 72.84C176.366 72.84 176.99 72.68 177.47 72.36C177.966 72.04 178.406 71.632 178.79 71.136L180.446 72.984C179.934 73.704 179.23 74.272 178.334 74.688C177.454 75.088 176.43 75.288 175.262 75.288ZM175.214 64.488C174.398 64.488 173.75 64.76 173.27 65.304C172.79 65.848 172.55 66.552 172.55 67.416V67.608H177.686V67.392C177.686 66.528 177.47 65.832 177.038 65.304C176.622 64.76 176.014 64.488 175.214 64.488ZM186.653 75C185.597 75 184.821 74.736 184.325 74.208C183.829 73.68 183.581 72.936 183.581 71.976V57.24H186.653V72.552H188.309V75H186.653ZM193.543 75C192.487 75 191.711 74.736 191.215 74.208C190.719 73.68 190.471 72.936 190.471 71.976V57.24H193.543V72.552H195.199V75H193.543ZM201.63 75.288C200.43 75.288 199.422 75.088 198.606 74.688C197.79 74.272 197.07 73.704 196.446 72.984L198.318 71.16C198.782 71.688 199.286 72.104 199.83 72.408C200.39 72.712 201.03 72.864 201.75 72.864C202.486 72.864 203.014 72.736 203.334 72.48C203.67 72.224 203.838 71.872 203.838 71.424C203.838 71.056 203.718 70.768 203.478 70.56C203.254 70.336 202.862 70.184 202.302 70.104L201.054 69.936C199.694 69.76 198.654 69.376 197.934 68.784C197.23 68.176 196.878 67.296 196.878 66.144C196.878 65.536 196.99 64.992 197.214 64.512C197.438 64.016 197.758 63.6 198.174 63.264C198.59 62.912 199.086 62.648 199.662 62.472C200.254 62.28 200.91 62.184 201.63 62.184C202.238 62.184 202.774 62.232 203.238 62.328C203.718 62.408 204.15 62.536 204.534 62.712C204.918 62.872 205.27 63.08 205.59 63.336C205.91 63.576 206.222 63.848 206.526 64.152L204.726 65.952C204.358 65.568 203.918 65.248 203.406 64.992C202.894 64.736 202.334 64.608 201.726 64.608C201.054 64.608 200.566 64.728 200.262 64.968C199.974 65.208 199.83 65.52 199.83 65.904C199.83 66.32 199.95 66.64 200.19 66.864C200.446 67.072 200.87 67.224 201.462 67.32L202.734 67.488C205.438 67.872 206.79 69.104 206.79 71.184C206.79 71.792 206.662 72.352 206.406 72.864C206.166 73.36 205.822 73.792 205.374 74.16C204.926 74.512 204.382 74.792 203.742 75C203.118 75.192 202.414 75.288 201.63 75.288ZM213.443 75.288C212.243 75.288 211.235 75.088 210.419 74.688C209.603 74.272 208.883 73.704 208.259 72.984L210.131 71.16C210.595 71.688 211.099 72.104 211.643 72.408C212.203 72.712 212.843 72.864 213.562 72.864C214.299 72.864 214.827 72.736 215.147 72.48C215.483 72.224 215.651 71.872 215.651 71.424C215.651 71.056 215.531 70.768 215.291 70.56C215.067 70.336 214.675 70.184 214.115 70.104L212.867 69.936C211.507 69.76 210.467 69.376 209.747 68.784C209.043 68.176 208.691 67.296 208.691 66.144C208.691 65.536 208.803 64.992 209.027 64.512C209.251 64.016 209.571 63.6 209.987 63.264C210.403 62.912 210.899 62.648 211.475 62.472C212.067 62.28 212.723 62.184 213.443 62.184C214.051 62.184 214.587 62.232 215.051 62.328C215.531 62.408 215.963 62.536 216.347 62.712C216.731 62.872 217.083 63.08 217.403 63.336C217.723 63.576 218.035 63.848 218.339 64.152L216.539 65.952C216.171 65.568 215.731 65.248 215.219 64.992C214.707 64.736 214.147 64.608 213.539 64.608C212.867 64.608 212.379 64.728 212.075 64.968C211.787 65.208 211.643 65.52 211.643 65.904C211.643 66.32 211.763 66.64 212.003 66.864C212.259 67.072 212.683 67.224 213.275 67.32L214.547 67.488C217.251 67.872 218.603 69.104 218.603 71.184C218.603 71.792 218.475 72.352 218.219 72.864C217.979 73.36 217.635 73.792 217.187 74.16C216.739 74.512 216.195 74.792 215.555 75C214.931 75.192 214.227 75.288 213.443 75.288ZM223.722 75L219.546 62.472H222.57L224.322 67.872L225.546 72.336H225.714L226.938 67.872L228.642 62.472H231.57L227.37 75H223.722ZM238.496 75.288C237.568 75.288 236.736 75.136 236 74.832C235.28 74.512 234.664 74.072 234.152 73.512C233.656 72.936 233.272 72.248 233 71.448C232.728 70.632 232.592 69.72 232.592 68.712C232.592 67.72 232.72 66.824 232.976 66.024C233.248 65.224 233.632 64.544 234.128 63.984C234.624 63.408 235.232 62.968 235.952 62.664C236.672 62.344 237.488 62.184 238.4 62.184C239.376 62.184 240.224 62.352 240.944 62.688C241.664 63.024 242.256 63.48 242.72 64.056C243.184 64.632 243.528 65.304 243.752 66.072C243.992 66.824 244.112 67.632 244.112 68.496V69.504H235.784V69.816C235.784 70.728 236.04 71.464 236.552 72.024C237.064 72.568 237.824 72.84 238.832 72.84C239.6 72.84 240.224 72.68 240.704 72.36C241.2 72.04 241.64 71.632 242.024 71.136L243.68 72.984C243.168 73.704 242.464 74.272 241.568 74.688C240.688 75.088 239.664 75.288 238.496 75.288ZM238.448 64.488C237.632 64.488 236.984 64.76 236.504 65.304C236.024 65.848 235.784 66.552 235.784 67.416V67.608H240.92V67.392C240.92 66.528 240.704 65.832 240.272 65.304C239.856 64.76 239.248 64.488 238.448 64.488ZM248.351 60.648C247.711 60.648 247.247 60.504 246.959 60.216C246.687 59.928 246.551 59.56 246.551 59.112V58.632C246.551 58.184 246.687 57.816 246.959 57.528C247.247 57.24 247.711 57.096 248.351 57.096C248.975 57.096 249.431 57.24 249.719 57.528C250.007 57.816 250.151 58.184 250.151 58.632V59.112C250.151 59.56 250.007 59.928 249.719 60.216C249.431 60.504 248.975 60.648 248.351 60.648ZM246.815 62.472H249.887V75H246.815V62.472ZM257.36 75C256.304 75 255.496 74.728 254.936 74.184C254.392 73.624 254.12 72.832 254.12 71.808V64.92H252.272V62.472H253.232C253.696 62.472 254.008 62.368 254.168 62.16C254.344 61.936 254.432 61.608 254.432 61.176V59.04H257.192V62.472H259.76V64.92H257.192V72.552H259.568V75H257.36Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/horgarsveit.svg b/libs/application/templates/financial-aid/src/svg/horgarsveit.svg deleted file mode 100644 index c8a7253031ea..000000000000 --- a/libs/application/templates/financial-aid/src/svg/horgarsveit.svg +++ /dev/null @@ -1,20 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57911)"> -<path d="M47.2771 94.7731C46.9704 94.6709 46.7148 94.5175 46.4081 94.4153C45.7946 94.1597 45.079 93.853 44.4145 93.5463C42.3697 92.6262 40.3761 91.6549 38.5359 90.5814C22.7403 81.5335 17.6285 69.2652 16.0438 62.7731C15.9416 62.3131 15.8394 61.8019 15.686 61.2907V61.1885L15.0215 17.0223H80.3506L80.2994 56.9457L79.7371 61.1885C79.7371 61.2907 79.7371 61.2907 79.686 61.3418L79.5327 62.0575C79.4304 62.4664 79.3282 62.8754 79.226 63.2843C79.1237 63.6933 78.9704 64.1022 78.8681 64.5112C78.817 64.7156 78.7148 64.9201 78.6637 65.1246C78.6125 65.329 78.5103 65.5335 78.4592 65.738C78.4592 65.7891 78.4081 65.8402 78.4081 65.8913C78.3058 66.1981 78.1525 66.5559 78.0502 66.9137C77.7947 67.5783 77.5391 68.2428 77.2323 68.9073C77.1301 69.1118 77.0279 69.3163 76.9256 69.5207C76.7723 69.8274 76.6701 70.1342 76.5167 70.3898C76.4145 70.5431 76.3633 70.7476 76.2611 70.9521C76.0566 71.361 75.801 71.8722 75.4432 72.4856L75.1365 73.0479C75.0343 73.2524 74.8809 73.4568 74.7787 73.6613C74.4208 74.2236 74.063 74.7348 73.7563 75.246C73.603 75.4505 73.4496 75.6549 73.3474 75.8594C73.194 76.0639 73.0407 76.2683 72.8873 76.4728C72.5806 76.8818 72.2739 77.2907 71.9161 77.7508C71.456 78.3642 70.8937 78.9776 70.3825 79.591C70.2292 79.7955 70.0247 80 69.8202 80.2044C69.5135 80.5112 69.2579 80.8179 68.9512 81.1246C68.7978 81.2779 68.6445 81.4313 68.4911 81.5846C67.7755 82.3003 67.1109 82.9137 66.4464 83.5271C66.2419 83.7316 66.0375 83.885 65.833 84.0894C65.6285 84.2939 65.424 84.4473 65.2196 84.6517C64.964 84.8562 64.7595 85.0607 64.4528 85.2652C64.1972 85.4696 63.9416 85.6741 63.686 85.8786C63.4815 86.0319 63.2771 86.1853 63.0726 86.3386C62.3058 86.9521 61.4368 87.5655 60.5678 88.1278C60.3633 88.2811 60.1077 88.4345 59.9033 88.5878C59.6988 88.7412 59.4943 88.8434 59.2899 88.9968C59.0854 89.1501 58.8809 89.2524 58.6253 89.4057C58.1653 89.6613 57.7563 89.9169 57.2962 90.2236C56.5806 90.6326 55.8649 91.0415 55.0982 91.4505C54.7403 91.6549 54.3825 91.8083 54.0247 92.0128C53.9224 92.0639 53.8202 92.115 53.718 92.1661C53.3601 92.3706 52.9512 92.5239 52.5423 92.7284C51.8777 93.0351 51.1621 93.3418 50.3953 93.6997C49.9352 93.9041 49.4752 94.1086 49.0151 94.262C48.7595 94.3642 48.4528 94.5175 48.1461 94.6198L47.7883 94.7731H47.2771Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M77.3864 48.1534V54.901C77.3864 57.0479 77.1819 59.0926 76.7729 61.0863H18.4982C18.0892 59.0926 17.8848 56.9968 17.8848 54.901V40.5879L18.0892 39.9744L20.0317 40.8434L20.9519 41.9169L21.2586 42.8371L21.7186 43.0926L22.5876 44.2173L23.2522 44.3195L24.0701 44.2173L24.9902 42.3259L25.0924 40.5879L24.9391 39.8211L24.9902 38.901L25.5014 38.2364L26.1659 36.345L26.9327 36.0895L27.495 35.476L28.8241 35.3738L29.5908 35.5783L30.3065 35.2204H33.118L33.8848 34.8115L35.8273 34.5559L38.6899 35.6805L39.4567 35.7316L40.9902 39.4121L41.757 39.8211L42.626 40.0256L43.1883 40.2811H43.6483L44.1595 39.77L45.2841 39.6166L45.5908 39.0543L46.7666 32.1022L47.1755 31.7955L47.4822 31.3355L48.1979 30.8243L48.9646 29.4441L49.6803 25.9169L50.6004 26.0192L51.725 27.8083L51.9806 29.2907L52.8496 30.1597L53.3608 31.7444L53.3097 32.7668L53.7186 33.3291L54.2298 32.9201L55.1499 33.2268L55.7122 33.8914L55.9678 35.1182L57.2969 35.476L57.6036 36.0895L58.3704 36.754L58.6771 38.1342L59.2394 38.3387L59.495 39.1054L59.9039 39.6166L60.8241 39.8211L61.5908 40.23L61.7953 40.8434L62.4599 41.1502L63.6867 43.3482L64.8113 41.7636L65.4247 42.1725L65.9359 43.5527L69.1052 45.3419L70.0253 44.4217L70.2809 41.6102H70.6899L70.9455 41.099L71.9678 40.639L74.1148 43.3482L75.2394 47.2332L75.5461 47.3866L76.4151 47.4888L77.3864 48.1534Z" fill="#004998"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M77.3864 48.1534V54.901C77.3864 57.0479 77.1819 59.0926 76.7729 61.0863H18.4982C18.0892 59.0926 17.8848 56.9968 17.8848 54.901V40.5879L18.0892 39.9744L20.0317 40.8434L20.9519 41.9169L21.2586 42.8371L21.7186 43.0926L22.5876 44.2173L23.2522 44.3195L24.0701 44.2173L24.9902 42.3259L25.0924 40.5879L24.9391 39.8211L24.9902 38.901L25.5014 38.2364L26.1659 36.345L26.9327 36.0895L27.495 35.476L28.8241 35.3738L29.5908 35.5783L30.3065 35.2204H33.118L33.8848 34.8115L35.8273 34.5559L38.6899 35.6805L39.4567 35.7316L40.9902 39.4121L41.757 39.8211L42.626 40.0256L43.1883 40.2811H43.6483L44.1595 39.77L45.2841 39.6166L45.5908 39.0543L46.7666 32.1022L47.1755 31.7955L47.4822 31.3355L48.1979 30.8243L48.9646 29.4441L49.6803 25.9169L50.6004 26.0192L51.725 27.8083L51.9806 29.2907L52.8496 30.1597L53.3608 31.7444L53.3097 32.7668L53.7186 33.3291L54.2298 32.9201L55.1499 33.2268L55.7122 33.8914L55.9678 35.1182L57.2969 35.476L57.6036 36.0895L58.3704 36.754L58.6771 38.1342L59.2394 38.3387L59.495 39.1054L59.9039 39.6166L60.8241 39.8211L61.5908 40.23L61.7953 40.8434L62.4599 41.1502L63.6867 43.3482L64.8113 41.7636L65.4247 42.1725L65.9359 43.5527L69.1052 45.3419L70.0253 44.4217L70.2809 41.6102H70.6899L70.9455 41.099L71.9678 40.639L74.1148 43.3482L75.2394 47.2332L75.5461 47.3866L76.4151 47.4888L77.3864 48.1534Z" fill="#004998"/> -<path d="M14 16V41.2524V55.0032C14 73.3035 28.0064 86.5943 41.8594 93.4952C43.6997 94.4154 45.4888 95.1821 47.278 95.8978L47.6358 96.0511L47.9936 95.8978C49.8339 95.1821 51.6741 94.3642 53.4121 93.4952C60.3131 90.0703 66.4984 85.4697 71.1502 80.1534C77.7955 72.639 81.2716 63.9489 81.2716 55.0032V50.6582V16H14ZM79.278 49.1757V55.0032C79.278 55.2588 79.278 55.5144 79.278 55.77V55.8211C79.278 56.0256 79.278 56.1789 79.278 56.3834C79.278 56.5367 79.278 56.7412 79.2268 56.8946C79.2268 56.9968 79.2268 57.099 79.2268 57.2013C79.2268 57.3546 79.1757 57.5591 79.1757 57.7125C79.1757 57.7636 79.1757 57.8658 79.1757 57.9169C79.1246 58.1725 79.1246 58.4281 79.0735 58.6837C79.0735 58.8371 79.0224 59.0415 79.0224 59.246C79.0224 59.3482 78.9712 59.5016 78.9712 59.6038V59.655C78.9712 59.7061 78.9712 59.7572 78.9712 59.7572C78.9712 59.8083 78.9713 59.8594 78.9201 59.9105C78.9201 60.0128 78.869 60.115 78.869 60.2173C78.869 60.3195 78.8179 60.4217 78.8179 60.5751C78.8179 60.6262 78.8179 60.6773 78.8179 60.7284C78.8179 60.7796 78.7668 60.8818 78.7668 60.9329C78.7668 60.984 78.7668 61.0351 78.7668 61.0351C78.7668 61.0863 78.7157 61.1374 78.7157 61.1885C78.6645 61.393 78.6134 61.5975 78.5623 61.8019C78.4601 62.2109 78.3578 62.6198 78.2556 63.0288C78.1534 63.4377 78.0511 63.8467 77.8978 64.2556C77.8466 64.4601 77.7955 64.6645 77.6933 64.869C77.6422 65.0735 77.5399 65.278 77.4888 65.4824C77.4888 65.5336 77.4888 65.5847 77.4377 65.5847C77.3355 65.9425 77.1821 66.2492 77.0799 66.607C76.8243 67.2716 76.5687 67.885 76.262 68.5495C76.1597 68.754 76.0575 68.9585 75.9553 69.1629C75.8019 69.4697 75.6997 69.7252 75.5463 70.032C75.4441 70.1853 75.393 70.3898 75.2907 70.5431C75.0351 71.0543 74.7796 71.5655 74.4728 72.0767C74.3706 72.23 74.2684 72.4345 74.1661 72.5879C74.0639 72.7923 73.9105 72.9968 73.8083 73.2013C73.5016 73.7125 73.1438 74.2237 72.7859 74.786C72.6326 74.9904 72.5304 75.1949 72.377 75.3994C72.2236 75.6038 72.0703 75.8083 71.9169 76.0128C71.6102 76.4217 71.3035 76.8307 70.9968 77.2396C70.5367 77.853 70.0256 78.4665 69.4633 79.0288C69.3099 79.2332 69.1054 79.4377 68.9521 79.6422C68.6965 79.9489 68.3898 80.2556 68.0831 80.5623C67.9297 80.7157 67.7764 80.869 67.623 81.0224C67.0096 81.6358 66.3451 82.3003 65.6294 82.9137C65.4249 83.1182 65.2205 83.2716 65.016 83.4761C64.8115 83.6294 64.607 83.8339 64.4026 83.9872C64.147 84.1917 63.9425 84.3962 63.6869 84.6006C63.4313 84.8051 63.1757 85.0096 62.9201 85.2141C62.7157 85.3674 62.5112 85.5208 62.3578 85.6741C61.5399 86.2876 60.722 86.8499 59.853 87.4633C59.6486 87.6166 59.4441 87.77 59.1885 87.8722C58.984 88.0256 58.7796 88.1278 58.5751 88.2812C58.3706 88.4345 58.1661 88.5368 57.9617 88.6901C57.5527 88.9457 57.0927 89.2013 56.6326 89.4569C55.9169 89.8658 55.2013 90.2748 54.4856 90.6326C54.1278 90.8371 53.77 90.9904 53.4121 91.1949C53.3099 91.246 53.2588 91.2971 53.1566 91.2971C52.7987 91.5016 52.3898 91.655 52.032 91.8594C51.3674 92.1661 50.6518 92.524 49.9361 92.8307C49.476 93.0352 49.016 93.2396 48.5559 93.393C48.2492 93.4952 47.9936 93.6486 47.6869 93.7508C47.3802 93.6486 47.1246 93.5463 46.8179 93.393C46.1534 93.1374 45.4888 92.8307 44.8243 92.5751C42.7796 91.655 40.8371 90.6837 39.0479 89.6614C25.9617 82.2492 19.3163 71.77 17.016 62.5176C16.9137 62.0575 16.7604 61.5463 16.7093 61.0863C16.2492 58.9393 16.0447 56.8946 16.0447 55.0032V40.6901V18.0447H79.278V49.1757Z" fill="#004998"/> -<path d="M78.6641 61.0862L77.1816 62.5176V61.0862H78.6641Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M76.4157 62.5176C73.962 72.1278 66.9588 80.2045 58.3198 85.8786C56.1729 85.3674 49.323 83.5272 50.4987 81.1757C51.5722 78.9265 57.1952 77.2396 56.3262 74.6837C55.3039 71.9233 47.6872 70.901 49.2719 69.4697C50.3454 68.4984 54.6393 67.016 54.486 65.3291C54.3837 63.7444 48.5051 62.8754 45.9492 62.5687H76.4157V62.5176Z" fill="#759D22"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M46.9705 65.738C43.6989 67.0671 37.3603 69.1629 42.1143 72.2812C46.3571 75.0927 47.0727 75.0927 41.8076 77.8019C37.0024 80.2556 36.3379 83.1182 37.258 86.032C28.4657 80.3578 21.3603 72.23 18.8555 62.5176H39.9162C42.012 62.8754 50.3443 64.409 46.9705 65.738Z" fill="#759D22"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M56.4278 87.0543C53.6163 88.7412 50.6515 90.1725 47.6355 91.3483C45.4374 90.4792 43.2393 89.508 41.1435 88.3834C38.1786 85.5208 37.6163 82.3515 42.5748 79.2332C46.4087 76.8307 50.0892 75.3483 45.5908 72.8435C40.0189 69.7764 42.5237 68.754 49.4758 65.8914C52.2361 64.7668 46.3576 63.3866 46.3576 63.3866C46.3576 63.3866 44.0572 62.8754 47.3288 63.4377C50.7537 64.0511 53.2074 64.4601 53.0029 65.4313C52.7984 66.4537 51.5716 66.8115 48.2489 68.6007C44.9262 70.3898 48.3512 71.3099 52.9518 73.5591C58.1147 76.115 48.709 77.8531 48.0956 81.6869C47.6355 84.6518 53.7697 86.4409 56.4278 87.0543Z" fill="#004998"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.12 67.92H101.136V75H97.968V58.248H101.136V65.112H108.12V58.248H111.288V75H108.12V67.92ZM119.994 75.288C119.098 75.288 118.29 75.136 117.57 74.832C116.866 74.528 116.258 74.088 115.746 73.512C115.25 72.936 114.866 72.248 114.594 71.448C114.322 70.632 114.186 69.72 114.186 68.712C114.186 67.704 114.322 66.8 114.594 66C114.866 65.2 115.25 64.52 115.746 63.96C116.258 63.384 116.866 62.944 117.57 62.64C118.29 62.336 119.098 62.184 119.994 62.184C120.89 62.184 121.698 62.336 122.418 62.64C123.138 62.944 123.746 63.384 124.242 63.96C124.754 64.52 125.146 65.2 125.418 66C125.69 66.8 125.826 67.704 125.826 68.712C125.826 69.72 125.69 70.632 125.418 71.448C125.146 72.248 124.754 72.936 124.242 73.512C123.746 74.088 123.138 74.528 122.418 74.832C121.698 75.136 120.89 75.288 119.994 75.288ZM119.994 72.816C120.81 72.816 121.45 72.568 121.914 72.072C122.378 71.576 122.61 70.848 122.61 69.888V67.56C122.61 66.616 122.378 65.896 121.914 65.4C121.45 64.904 120.81 64.656 119.994 64.656C119.194 64.656 118.562 64.904 118.098 65.4C117.634 65.896 117.402 66.616 117.402 67.56V69.888C117.402 70.848 117.634 71.576 118.098 72.072C118.562 72.568 119.194 72.816 119.994 72.816ZM117.498 60.48C116.874 60.48 116.434 60.352 116.178 60.096C115.922 59.824 115.794 59.488 115.794 59.088V58.584C115.794 58.184 115.922 57.856 116.178 57.6C116.434 57.328 116.874 57.192 117.498 57.192C118.122 57.192 118.562 57.328 118.818 57.6C119.074 57.856 119.202 58.184 119.202 58.584V59.088C119.202 59.488 119.074 59.824 118.818 60.096C118.562 60.352 118.122 60.48 117.498 60.48ZM122.538 60.48C121.914 60.48 121.474 60.352 121.218 60.096C120.962 59.824 120.834 59.488 120.834 59.088V58.584C120.834 58.184 120.962 57.856 121.218 57.6C121.474 57.328 121.914 57.192 122.538 57.192C123.162 57.192 123.602 57.328 123.858 57.6C124.114 57.856 124.242 58.184 124.242 58.584V59.088C124.242 59.488 124.114 59.824 123.858 60.096C123.602 60.352 123.162 60.48 122.538 60.48ZM128.549 75V62.472H131.621V65.064H131.741C131.821 64.728 131.941 64.408 132.101 64.104C132.277 63.784 132.501 63.504 132.773 63.264C133.045 63.024 133.365 62.832 133.733 62.688C134.117 62.544 134.557 62.472 135.053 62.472H135.725V65.376H134.765C133.725 65.376 132.941 65.528 132.413 65.832C131.885 66.136 131.621 66.632 131.621 67.32V75H128.549ZM148.877 76.056C148.877 76.712 148.757 77.288 148.517 77.784C148.293 78.296 147.917 78.72 147.389 79.056C146.861 79.392 146.181 79.648 145.349 79.824C144.517 80 143.501 80.088 142.301 80.088C141.245 80.088 140.349 80.016 139.613 79.872C138.877 79.744 138.269 79.552 137.789 79.296C137.325 79.056 136.989 78.752 136.781 78.384C136.573 78.016 136.469 77.6 136.469 77.136C136.469 76.432 136.661 75.88 137.045 75.48C137.445 75.096 137.997 74.848 138.701 74.736V74.472C138.189 74.344 137.789 74.096 137.501 73.728C137.229 73.344 137.093 72.896 137.093 72.384C137.093 72.064 137.157 71.784 137.285 71.544C137.413 71.288 137.581 71.072 137.789 70.896C138.013 70.72 138.261 70.576 138.533 70.464C138.805 70.336 139.093 70.24 139.397 70.176V70.08C138.629 69.728 138.053 69.24 137.669 68.616C137.301 67.992 137.117 67.264 137.117 66.432C137.117 65.152 137.557 64.128 138.437 63.36C139.317 62.576 140.605 62.184 142.301 62.184C142.685 62.184 143.061 62.208 143.429 62.256C143.813 62.304 144.165 62.384 144.485 62.496V62.088C144.485 60.872 145.077 60.264 146.261 60.264H148.205V62.616H145.541V62.952C146.197 63.32 146.685 63.8 147.005 64.392C147.325 64.984 147.485 65.664 147.485 66.432C147.485 67.696 147.045 68.712 146.165 69.48C145.301 70.248 144.013 70.632 142.301 70.632C141.565 70.632 140.925 70.56 140.381 70.416C140.141 70.528 139.933 70.68 139.757 70.872C139.581 71.048 139.493 71.272 139.493 71.544C139.493 72.168 140.037 72.48 141.125 72.48H144.485C146.021 72.48 147.133 72.8 147.821 73.44C148.525 74.064 148.877 74.936 148.877 76.056ZM145.997 76.416C145.997 76.016 145.837 75.704 145.517 75.48C145.197 75.256 144.645 75.144 143.861 75.144H139.589C139.157 75.464 138.941 75.896 138.941 76.44C138.941 76.92 139.141 77.296 139.541 77.568C139.941 77.84 140.621 77.976 141.581 77.976H143.117C144.125 77.976 144.853 77.848 145.301 77.592C145.765 77.336 145.997 76.944 145.997 76.416ZM142.301 68.544C143.805 68.544 144.557 67.904 144.557 66.624V66.216C144.557 64.936 143.805 64.296 142.301 64.296C140.797 64.296 140.045 64.936 140.045 66.216V66.624C140.045 67.904 140.797 68.544 142.301 68.544ZM159.82 75C159.148 75 158.612 74.808 158.212 74.424C157.828 74.024 157.588 73.496 157.492 72.84H157.348C157.14 73.656 156.716 74.272 156.076 74.688C155.436 75.088 154.644 75.288 153.7 75.288C152.42 75.288 151.436 74.952 150.748 74.28C150.06 73.608 149.716 72.712 149.716 71.592C149.716 70.296 150.18 69.336 151.108 68.712C152.036 68.072 153.356 67.752 155.068 67.752H157.204V66.84C157.204 66.136 157.02 65.592 156.652 65.208C156.284 64.824 155.692 64.632 154.876 64.632C154.156 64.632 153.572 64.792 153.124 65.112C152.692 65.416 152.324 65.784 152.02 66.216L150.196 64.584C150.66 63.864 151.276 63.288 152.044 62.856C152.812 62.408 153.828 62.184 155.092 62.184C156.788 62.184 158.076 62.568 158.956 63.336C159.836 64.104 160.276 65.208 160.276 66.648V72.552H161.524V75H159.82ZM154.732 73.056C155.42 73.056 156.004 72.904 156.484 72.6C156.964 72.296 157.204 71.848 157.204 71.256V69.6H155.236C153.636 69.6 152.836 70.112 152.836 71.136V71.544C152.836 72.056 152.996 72.44 153.316 72.696C153.652 72.936 154.124 73.056 154.732 73.056ZM155.476 61.056L153.628 60.168L155.908 55.68L158.5 56.952L155.476 61.056ZM164.01 75V62.472H167.082V65.064H167.202C167.282 64.728 167.402 64.408 167.562 64.104C167.738 63.784 167.962 63.504 168.234 63.264C168.506 63.024 168.826 62.832 169.194 62.688C169.578 62.544 170.018 62.472 170.514 62.472H171.186V65.376H170.226C169.186 65.376 168.402 65.528 167.874 65.832C167.346 66.136 167.082 66.632 167.082 67.32V75H164.01ZM177.536 75.288C176.336 75.288 175.328 75.088 174.512 74.688C173.696 74.272 172.976 73.704 172.352 72.984L174.224 71.16C174.688 71.688 175.192 72.104 175.736 72.408C176.296 72.712 176.936 72.864 177.656 72.864C178.392 72.864 178.92 72.736 179.24 72.48C179.576 72.224 179.744 71.872 179.744 71.424C179.744 71.056 179.624 70.768 179.384 70.56C179.16 70.336 178.768 70.184 178.208 70.104L176.96 69.936C175.6 69.76 174.56 69.376 173.84 68.784C173.136 68.176 172.784 67.296 172.784 66.144C172.784 65.536 172.896 64.992 173.12 64.512C173.344 64.016 173.664 63.6 174.08 63.264C174.496 62.912 174.992 62.648 175.568 62.472C176.16 62.28 176.816 62.184 177.536 62.184C178.144 62.184 178.68 62.232 179.144 62.328C179.624 62.408 180.056 62.536 180.44 62.712C180.824 62.872 181.176 63.08 181.496 63.336C181.816 63.576 182.128 63.848 182.432 64.152L180.632 65.952C180.264 65.568 179.824 65.248 179.312 64.992C178.8 64.736 178.24 64.608 177.632 64.608C176.96 64.608 176.472 64.728 176.168 64.968C175.88 65.208 175.736 65.52 175.736 65.904C175.736 66.32 175.856 66.64 176.096 66.864C176.352 67.072 176.776 67.224 177.368 67.32L178.64 67.488C181.344 67.872 182.696 69.104 182.696 71.184C182.696 71.792 182.568 72.352 182.312 72.864C182.072 73.36 181.728 73.792 181.28 74.16C180.832 74.512 180.288 74.792 179.648 75C179.024 75.192 178.32 75.288 177.536 75.288ZM187.816 75L183.64 62.472H186.664L188.416 67.872L189.64 72.336H189.808L191.032 67.872L192.736 62.472H195.664L191.464 75H187.816ZM202.59 75.288C201.662 75.288 200.83 75.136 200.094 74.832C199.374 74.512 198.758 74.072 198.246 73.512C197.75 72.936 197.366 72.248 197.094 71.448C196.822 70.632 196.686 69.72 196.686 68.712C196.686 67.72 196.814 66.824 197.07 66.024C197.342 65.224 197.726 64.544 198.222 63.984C198.718 63.408 199.326 62.968 200.046 62.664C200.766 62.344 201.582 62.184 202.494 62.184C203.47 62.184 204.318 62.352 205.038 62.688C205.758 63.024 206.35 63.48 206.814 64.056C207.278 64.632 207.622 65.304 207.846 66.072C208.086 66.824 208.206 67.632 208.206 68.496V69.504H199.878V69.816C199.878 70.728 200.134 71.464 200.646 72.024C201.158 72.568 201.918 72.84 202.926 72.84C203.694 72.84 204.318 72.68 204.798 72.36C205.294 72.04 205.734 71.632 206.118 71.136L207.774 72.984C207.262 73.704 206.558 74.272 205.662 74.688C204.782 75.088 203.758 75.288 202.59 75.288ZM202.542 64.488C201.726 64.488 201.078 64.76 200.598 65.304C200.118 65.848 199.878 66.552 199.878 67.416V67.608H205.014V67.392C205.014 66.528 204.798 65.832 204.366 65.304C203.95 64.76 203.342 64.488 202.542 64.488ZM212.445 60.648C211.805 60.648 211.341 60.504 211.053 60.216C210.781 59.928 210.645 59.56 210.645 59.112V58.632C210.645 58.184 210.781 57.816 211.053 57.528C211.341 57.24 211.805 57.096 212.445 57.096C213.069 57.096 213.525 57.24 213.813 57.528C214.101 57.816 214.245 58.184 214.245 58.632V59.112C214.245 59.56 214.101 59.928 213.813 60.216C213.525 60.504 213.069 60.648 212.445 60.648ZM210.909 62.472H213.981V75H210.909V62.472ZM221.454 75C220.398 75 219.59 74.728 219.03 74.184C218.486 73.624 218.214 72.832 218.214 71.808V64.92H216.366V62.472H217.326C217.79 62.472 218.102 62.368 218.262 62.16C218.438 61.936 218.526 61.608 218.526 61.176V59.04H221.286V62.472H223.854V64.92H221.286V72.552H223.662V75H221.454Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57911"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/hornafjordur.svg b/libs/application/templates/financial-aid/src/svg/hornafjordur.svg deleted file mode 100644 index 4d4d11421c5a..000000000000 --- a/libs/application/templates/financial-aid/src/svg/hornafjordur.svg +++ /dev/null @@ -1,14 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M21.0059 65.868C21.0059 49.3353 21.0059 32.8026 21 16.2699C21 16.0469 21.0469 16 21.2699 16C39.1109 16.0059 56.9519 16.0059 74.7929 16.0059C74.7929 32.6735 74.7929 49.3412 74.7929 66.0088C74.7929 66.3784 74.787 66.748 74.7636 67.1176C74.6228 69.0009 74.1886 70.8196 73.555 72.5914C73.0094 74.0991 72.2702 75.5072 71.3901 76.8448C70.2579 78.5755 68.9613 80.1713 67.477 81.6204C66.6556 82.4242 65.8225 83.2162 64.9308 83.9495C62.7659 85.7272 60.5189 87.3816 58.1135 88.8249C57.0047 89.4878 55.9193 90.1918 54.7988 90.8431C53.731 91.4591 52.6808 92.1162 51.6248 92.7498C50.3752 93.5007 49.2018 94.3221 48.3687 95.5658C47.9757 96.1525 47.9463 96.1291 47.4946 95.5835C46.8962 94.8618 46.2977 94.1637 45.494 93.6415C43.8806 92.5914 42.2086 91.6351 40.56 90.6436C38.5066 89.4116 36.4708 88.1619 34.4996 86.8067C32.1118 85.1698 29.9 83.3101 27.8407 81.2743C26.6791 80.1244 25.7169 78.7985 24.743 77.4902C24.3206 76.9211 23.9921 76.2875 23.6342 75.6715C22.9713 74.5216 22.4374 73.3189 22.0091 72.0692C21.4635 70.4559 21.176 68.7897 21.0469 67.0942C21.0469 66.6835 21.1056 66.2728 21.0059 65.868ZM51.3549 35.8592C51.9358 35.5776 52.4931 35.2608 52.8745 34.7093C53.027 34.4864 53.1737 34.4981 53.3379 34.7093C53.9011 35.4192 54.6286 35.912 55.4031 36.3696C55.8372 36.6278 56.2479 36.9328 56.6879 37.1851C57.4095 37.5958 57.9903 38.1355 58.3717 38.8865C58.4831 39.1035 58.6298 39.303 58.7823 39.4908C59.9733 40.9692 61.088 42.5122 62.367 43.9202C62.5782 44.149 62.7542 44.413 62.983 44.6242C63.9217 45.4925 64.8076 46.4136 65.7815 47.2467C66.0572 47.4814 66.3153 47.7278 66.638 47.9038C68.3863 48.8425 70.2755 49.482 72.0355 50.4441C72.0355 50.3678 72.0355 50.2857 72.0355 50.1977C72.0355 39.8369 72.0355 29.4761 72.0414 19.1094C72.0414 18.8395 71.9592 18.7926 71.7128 18.7926C55.8372 18.7985 39.9616 18.7985 24.0918 18.7926C23.8161 18.7926 23.7574 18.8689 23.7574 19.1329C23.7633 26.4547 23.7633 33.7765 23.7633 41.0983C23.7633 41.1921 23.7339 41.286 23.7926 41.3857C24.1329 41.2097 24.4556 41.0103 24.8017 40.8577C26.0161 40.318 27.2306 39.79 28.3981 39.1564C29.4424 38.5873 30.4691 37.9771 31.4664 37.3376C32.3464 36.7744 33.1913 36.1232 33.907 35.3429C34.0009 35.2373 34.1006 35.1786 34.2532 35.1786C34.8164 35.1728 35.3561 35.2842 35.9193 35.4779C35.8665 35.3136 35.8313 35.1845 35.7844 35.0554C35.2974 33.7237 35.1566 32.3391 35.2857 30.9369C35.4676 28.9715 36.1951 27.2174 37.4858 25.7155C38.313 24.7592 39.281 23.973 40.4427 23.4567C41.6923 22.9053 43.0065 22.6706 44.3793 22.7996C45.3238 22.8877 46.2273 23.1165 47.0722 23.5271C48.4157 24.1784 49.501 25.1405 50.3752 26.3491C51.5368 27.9507 52.0766 29.7518 52.1235 31.7114C52.1587 33.137 51.8654 34.4981 51.308 35.8123C51.3021 35.8299 51.2963 35.8533 51.2845 35.8709C51.3139 35.8709 51.3373 35.8651 51.3549 35.8592ZM29.6066 63.6738C29.5832 63.6797 29.5538 63.6855 29.5304 63.6973C29.589 64.2898 29.6242 64.8824 29.7122 65.4749C29.9821 67.3171 30.4515 69.1065 31.2083 70.8196C31.924 72.4388 32.7571 73.9759 33.8483 75.3781C34.8457 76.6571 35.9487 77.8246 37.2276 78.8278C38.665 79.9542 40.2314 80.8636 41.9387 81.5441C42.9478 81.9431 43.9745 82.2364 45.0364 82.4535C46.5852 82.7644 48.1458 82.8466 49.7181 82.7292C52.3758 82.5239 54.8692 81.7377 57.169 80.3942C59.9088 78.7926 62.1499 76.6453 63.8571 73.9642C64.8721 72.3743 65.6407 70.6671 66.198 68.8601C66.814 66.883 67.1426 64.8706 67.1954 62.8055C67.213 62.1602 67.1778 61.5207 67.1426 60.8753C67.078 59.6844 66.902 58.5169 66.6322 57.3611C66.597 57.2203 66.55 57.2144 66.4327 57.2907C66.0865 57.5254 65.7404 57.7542 65.3708 57.9595C64.1094 58.6635 62.9654 59.5377 61.8272 60.4177C60.5072 61.4385 59.2048 62.4887 57.9023 63.533C57.3626 63.9613 56.905 64.501 56.2889 64.8237C55.098 65.4515 53.9187 66.1085 52.804 66.8654C52.6632 66.9651 52.499 67.0648 52.3347 67.0942C52.0296 67.147 51.707 67.2291 51.4488 66.924C50.9091 66.2904 50.2344 65.8035 49.6301 65.2402C49.46 65.0818 49.3016 65.0584 49.1197 65.1992C49.0551 65.2461 48.9906 65.2872 48.9261 65.3282C47.9111 65.9736 46.9548 66.7128 45.8695 67.3112C45.7521 66.9064 45.5644 66.5603 45.271 66.2845C45.1126 66.1379 44.9836 65.9677 44.8662 65.7917C44.1622 64.7416 43.2881 63.8205 42.3435 63.005C40.6773 61.5735 38.9466 60.2182 36.9871 59.1916C35.8959 58.6225 34.8926 57.8598 33.6371 57.6544C33.6195 57.6486 33.6019 57.6368 33.5843 57.631C32.0296 57.0326 30.4867 56.3989 28.8909 55.9061C27.1954 55.384 25.5761 54.6272 23.7574 54.4512C23.7574 55.0906 23.7633 55.7243 23.7515 56.3579C23.7515 56.4987 23.8102 56.5221 23.9275 56.5104C24.2444 56.4869 24.5553 56.5163 24.8545 56.616C25.7873 56.9211 26.7788 56.9974 27.7175 57.2966C28.8439 57.6544 30.0173 57.8774 31.1085 58.3585C31.9006 58.7046 32.7043 59.0214 33.4905 59.3734C34.0654 59.6316 34.6932 59.7958 35.227 60.1126C36.594 60.9223 37.961 61.7378 39.2341 62.7116C40.0613 63.3453 40.8944 63.9437 41.6101 64.7181C42.5782 65.7624 43.4993 66.8419 44.3324 67.9918C44.391 68.0739 44.4086 68.1619 44.4321 68.2558C44.5788 68.8131 44.4145 69.2473 44.0566 69.699C43.4993 70.4089 42.7776 70.8079 41.9446 71.0719C41.839 71.1012 41.7744 71.0484 41.6982 71.0132C41.2229 70.7668 40.7947 70.45 40.3018 70.2388C40.0672 70.139 39.8442 70.0217 39.6213 69.9044C39.0815 69.6228 38.5594 69.2884 37.9962 69.0537C37.1162 68.6899 36.3593 68.1913 35.8489 67.3699C35.5321 66.8536 35.139 66.396 34.787 65.9032C34.5817 65.6216 34.3529 65.5981 34.0595 65.6568C33.6958 65.7331 33.3379 65.8152 32.9742 65.8739C32.5048 65.9443 32.0883 65.9208 31.6952 65.5336C31.044 64.8765 30.3106 64.2898 29.6066 63.6738ZM23.7809 58.8219C23.7691 58.8923 23.7633 58.9158 23.7633 58.9451C23.7867 61.3095 23.7457 63.6738 23.7867 66.0381C23.8161 67.6339 24.0742 69.1828 24.4849 70.7081C24.9132 72.3039 25.6935 73.7471 26.5207 75.161C27.5474 76.927 28.9613 78.3937 30.3517 79.8604C30.9795 80.5233 31.6952 81.0983 32.3875 81.7026C34.1476 83.2279 36.0425 84.5597 37.9903 85.8211C39.6565 86.9006 41.3579 87.939 43.0886 88.9129C43.599 89.2004 44.0918 89.5172 44.5846 89.834C45.6524 90.5145 46.7906 91.0895 47.782 91.8874C47.8994 91.9812 47.9639 91.9284 48.0519 91.858C48.3101 91.6527 48.5623 91.4356 48.8322 91.2479C50.2226 90.3092 51.6776 89.4702 53.1267 88.6254C55.098 87.4755 57.0164 86.2376 58.9173 84.9821C61.3461 83.3805 63.6166 81.5735 65.6583 79.4908C66.7202 78.4113 67.7116 77.279 68.5858 76.0352C69.812 74.2869 70.7448 72.3978 71.3549 70.362C71.8302 68.7662 72.0296 67.1235 72.0238 65.4573C72.0179 62.2306 72.0238 59.0038 72.0238 55.7829C72.0238 55.2725 71.8947 55.2021 71.4371 55.4544C71.4136 55.4661 71.3843 55.4837 71.3608 55.5013C71.0147 55.7419 70.6275 55.8475 70.2109 55.8944C70.0173 55.912 69.8296 55.9589 69.636 56C69.1314 56.1115 68.6738 56.3813 68.1399 56.3813C67.7821 56.3813 67.4887 56.5339 67.2071 56.7451C67.0487 56.8624 67.0018 56.9563 67.0546 57.1558C67.4418 58.6225 67.5943 60.1244 67.653 61.638C67.694 62.7116 67.6354 63.7794 67.5122 64.853C67.2716 66.9827 66.7202 69.0243 65.9105 70.9956C65.0188 73.1722 63.7867 75.1434 62.1968 76.88C60.384 78.8571 58.313 80.4764 55.8372 81.5676C54.4937 82.1602 53.1326 82.6588 51.6776 82.917C49.7122 83.269 47.7468 83.3159 45.7697 83.0519C43.8982 82.7996 42.1264 82.2306 40.4309 81.4033C38.8645 80.6348 37.433 79.6726 36.1129 78.5227C34.7049 77.2966 33.5374 75.8592 32.4931 74.328C31.6483 73.0901 31.0499 71.7172 30.4867 70.3385C29.636 68.2617 29.2312 66.0851 29.0786 63.8498C29.061 63.621 29.1373 63.3394 28.973 63.1751C28.4626 62.6647 27.9405 62.1602 27.3831 61.7084C26.2039 60.7521 24.9308 59.8956 23.7809 58.8219ZM36.2655 34.9498C36.8815 33.9583 37.5268 33.0079 38.3247 32.1748C38.3658 32.1338 38.4069 32.0868 38.4597 32.0634C38.9407 31.8111 39.4277 31.5705 39.9029 31.3065C40.6245 30.9076 41.4283 30.7316 42.1851 30.4148C42.4491 30.3033 42.7483 30.227 43.0417 30.3502C43.5873 30.5849 44.0331 30.9428 44.3617 31.4415C44.5318 31.6996 44.7489 31.9343 44.743 32.2687C44.7372 32.5562 44.79 32.8319 44.8721 33.1077C44.9132 33.2426 44.9014 33.3775 44.8604 33.5125C44.7782 33.7941 44.7078 34.0757 44.6081 34.3514C44.2796 35.2842 43.9217 36.2053 43.5521 37.1264C43.1238 38.1883 42.6134 39.1916 41.9915 40.1478C40.9589 41.7436 39.6154 43.0695 38.1898 44.3074C37.521 44.8882 36.8463 45.4632 36.1423 45.9971C35.4148 46.5485 34.5817 46.924 33.7486 47.3054C32.0824 48.0681 30.3165 48.4787 28.5799 49.0067C27.9581 49.1945 27.3068 49.171 26.6791 49.2766C25.9751 49.3998 25.2417 49.3881 24.5553 49.6228C24.3676 49.6873 24.1916 49.7694 23.9921 49.7342C23.8043 49.7049 23.7515 49.7753 23.7515 49.9689C23.7633 51.1599 23.7691 52.3567 23.7457 53.5477C23.7398 53.841 23.8102 53.9055 24.1035 53.9055C39.9616 53.8997 55.8137 53.8997 71.6718 53.8997C71.7304 53.8997 71.7891 53.8938 71.8478 53.8997C71.9886 53.9173 72.0296 53.8645 72.0296 53.7237C72.0238 53.2954 72.0062 52.8612 72.0355 52.433C72.059 52.1338 71.9651 52.0751 71.6718 52.0751C55.9311 52.081 40.1845 52.081 24.438 52.081C24.3265 52.081 24.215 52.081 24.0449 52.081C24.2502 51.8463 24.4145 51.6644 24.5788 51.4708C24.6316 51.4063 24.6961 51.4063 24.7606 51.4063C25.0657 51.418 25.359 51.3241 25.6583 51.3183C26.55 51.3065 27.4242 51.2127 28.2866 50.9839C29.4717 50.6671 30.6157 50.2446 31.7656 49.8222C33.0094 49.3646 34.218 48.8425 35.4148 48.2793C36.2831 47.8745 37.0692 47.3347 37.9023 46.8712C38.5066 46.5309 39.0757 46.132 39.5861 45.6685C39.944 45.34 40.2373 44.9469 40.6011 44.6242C41.3168 43.973 41.9387 43.2397 42.496 42.4535C42.8539 41.9548 43.2822 41.5089 43.6049 40.9927C44.0273 40.318 44.391 39.6022 44.743 38.8923C45.3415 37.672 45.9164 36.4341 46.286 35.12C46.3153 35.0202 46.3095 34.8618 46.4209 34.856C46.5676 34.8501 46.7202 34.897 46.814 35.0496C46.9196 35.2314 47.0194 35.4251 47.1954 35.5541C47.8055 35.9941 48.4039 36.44 48.9613 36.9446C49.0551 37.0267 49.1314 37.0443 49.2488 36.9856C49.6418 36.7744 50.0408 36.5691 50.4456 36.3755C50.5395 36.3285 50.5688 36.2581 50.6099 36.1819C51.3373 34.8032 51.6776 33.3306 51.66 31.77C51.6542 30.9193 51.5368 30.0804 51.2904 29.2708C50.6685 27.2115 49.4893 25.5571 47.6588 24.4013C46.1628 23.4626 44.5201 23.0813 42.7718 23.3101C40.3136 23.6386 38.4362 24.9469 37.122 27.0003C35.9311 28.8601 35.5204 30.9311 35.8079 33.1253C35.8841 33.7413 36.0015 34.3632 36.2655 34.9498ZM48.2103 60.8929C48.3394 61.1745 48.3277 61.5031 48.3453 61.8316C48.357 62.078 48.3981 62.3479 48.5037 62.565C48.8263 63.2221 49.1549 63.8791 49.5538 64.501C49.5832 64.548 49.6125 64.6418 49.6594 64.6125C49.8061 64.5186 49.9528 64.413 50.0584 64.2781C50.1229 64.196 49.9997 64.1138 49.9469 64.0434C49.2605 63.1517 48.7325 62.2012 48.8029 61.022C48.8087 60.9281 48.7735 60.846 48.7207 60.7756C48.6034 60.6172 48.4333 60.7169 48.2866 60.6993C48.1869 60.6993 48.2338 60.8049 48.2103 60.8929ZM50.8152 36.5749C50.516 37.0032 50.3048 37.4491 50.0525 37.8715C49.5714 38.6694 49.4541 39.5318 49.3954 40.4236C49.3778 40.6583 49.5421 40.5703 49.6477 40.582C49.765 40.5937 49.8589 40.6113 49.8706 40.4177C49.9234 39.4497 50.1112 38.5169 50.6861 37.7014C50.7741 37.5723 50.8504 37.4374 50.9325 37.3083C51.1789 36.9152 51.1789 36.9152 50.8152 36.5749Z" fill="#000101"/> -<path d="M21.0469 67.0941C21.0352 67.1117 21.0176 67.1352 21.0059 67.1528C21.0059 66.7245 21.0059 66.2904 21.0059 65.8621C21.1056 66.2728 21.0469 66.6834 21.0469 67.0941Z" fill="#0080BF"/> -<path d="M51.3138 35.8181C51.8711 34.5098 52.1586 33.1428 52.1293 31.7172C52.0823 29.7577 51.5426 27.9566 50.381 26.3549C49.5068 25.1464 48.4214 24.1842 47.0779 23.533C46.2331 23.1223 45.3296 22.8935 44.3851 22.8055C43.0122 22.6764 41.6981 22.9111 40.4484 23.4626C39.2868 23.9789 38.3188 24.765 37.4916 25.7213C36.195 27.2232 35.4734 28.9774 35.2915 30.9428C35.1624 32.345 35.3032 33.7295 35.7902 35.0613C35.8371 35.1845 35.8723 35.3136 35.9251 35.4837C35.3619 35.2901 34.8221 35.1786 34.2589 35.1845C34.1005 35.1845 34.0067 35.2432 33.9128 35.3488C33.197 36.1349 32.3522 36.7803 31.4722 37.3435C30.4748 37.983 29.4481 38.5931 28.4038 39.1622C27.2363 39.7958 26.0219 40.3238 24.8075 40.8636C24.4613 41.0161 24.1387 41.2097 23.7984 41.3916C23.7397 41.2919 23.7691 41.198 23.7691 41.1041C23.7691 33.7823 23.7691 26.4605 23.7632 19.1387C23.7632 18.8747 23.8219 18.7985 24.0976 18.7985C39.9732 18.8043 55.8488 18.8043 71.7186 18.7985C71.965 18.7985 72.0471 18.8454 72.0471 19.1153C72.0413 29.4761 72.0413 39.8369 72.0413 50.2036C72.0413 50.2857 72.0413 50.3737 72.0413 50.45C70.2812 49.4937 68.3921 48.8542 66.6438 47.9096C66.3211 47.7395 66.0571 47.4872 65.7872 47.2526C64.8134 46.4253 63.9275 45.4984 62.9888 44.6301C62.76 44.4189 62.584 44.1607 62.3727 43.9261C61.0938 42.5122 59.9791 40.9751 58.7881 39.4966C58.6356 39.3089 58.4889 39.1094 58.3774 38.8923C57.9961 38.1414 57.4153 37.6016 56.6937 37.191C56.2537 36.9387 55.843 36.6336 55.4088 36.3755C54.6403 35.9237 53.9069 35.425 53.3437 34.7152C53.1736 34.5039 53.0328 34.4922 52.8802 34.7152C52.4989 35.2666 51.9415 35.5834 51.3607 35.8651C51.3431 35.8475 51.3255 35.8298 51.3138 35.8181Z" fill="#0080BF"/> -<path d="M29.607 63.6738C30.311 64.2899 31.0444 64.8707 31.7073 65.5278C32.1004 65.915 32.517 65.9384 32.9863 65.868C33.3501 65.8152 33.7138 65.7272 34.0717 65.651C34.365 65.5923 34.5938 65.6099 34.7992 65.8974C35.1512 66.3843 35.5443 66.8478 35.8611 67.3641C36.3715 68.1913 37.1224 68.6841 38.0083 69.0479C38.5715 69.2825 39.0937 69.6111 39.6334 69.8985C39.8564 70.0159 40.0793 70.1332 40.314 70.233C40.8068 70.4442 41.2409 70.761 41.7103 71.0074C41.7807 71.0426 41.8511 71.1012 41.9567 71.066C42.7898 70.8079 43.5055 70.4031 44.0687 69.6932C44.4266 69.2415 44.5909 68.8014 44.4442 68.25C44.4208 68.1561 44.4032 68.0681 44.3445 67.986C43.5114 66.8302 42.5903 65.7566 41.6223 64.7123C40.9124 63.9437 40.0734 63.3394 39.2462 62.7058C37.9731 61.7319 36.6061 60.9164 35.2392 60.1068C34.7053 59.79 34.0775 59.6199 33.5026 59.3676C32.7164 59.0156 31.9068 58.6988 31.1207 58.3526C30.0294 57.8715 28.8561 57.6486 27.7296 57.2907C26.791 56.9915 25.7995 56.9211 24.8666 56.6102C24.5674 56.5104 24.2565 56.4811 23.9397 56.5046C23.8223 56.5104 23.7637 56.4928 23.7637 56.352C23.7695 55.7184 23.7695 55.0848 23.7695 54.4453C25.5824 54.6155 27.2075 55.3723 28.903 55.9003C30.4988 56.3931 32.0418 57.0267 33.5965 57.6251C33.6141 57.631 33.6317 57.6486 33.6493 57.6486C34.9048 57.8539 35.9139 58.6166 36.9992 59.1857C38.9587 60.2124 40.6895 61.5676 42.3556 62.9992C43.3002 63.8088 44.1743 64.7299 44.8784 65.7859C44.9957 65.9619 45.1248 66.132 45.2832 66.2787C45.5824 66.5545 45.7701 66.9065 45.8816 67.3054C46.967 66.707 47.9174 65.9678 48.9382 65.3224C49.0027 65.2814 49.0731 65.2403 49.1318 65.1933C49.3137 65.0525 49.4721 65.076 49.6422 65.2344C50.2465 65.7976 50.9212 66.2846 51.4609 66.9182C51.7191 67.2174 52.0418 67.1411 52.3468 67.0883C52.5111 67.059 52.6695 66.9593 52.8162 66.8595C53.9309 66.1027 55.1101 65.4456 56.3011 64.8179C56.9171 64.4952 57.3747 63.9554 57.9145 63.5272C59.2169 62.4829 60.5193 61.4327 61.8394 60.4119C62.9775 59.5319 64.1215 58.6577 65.3829 57.9537C65.7467 57.7483 66.0987 57.5254 66.4448 57.2849C66.5563 57.2086 66.6091 57.2145 66.6443 57.3553C66.9142 58.511 67.0902 59.6844 67.1547 60.8695C67.1899 61.5148 67.2251 62.1543 67.2075 62.7997C67.1488 64.8648 66.8203 66.8771 66.2101 68.8543C65.6469 70.6612 64.8842 72.3685 63.8693 73.9584C62.1562 76.6395 59.915 78.7868 57.1811 80.3884C54.8872 81.7319 52.3938 82.5181 49.7302 82.7234C48.1579 82.8408 46.5973 82.7645 45.0485 82.4477C43.9925 82.2306 42.9599 81.9373 41.9508 81.5383C40.2494 80.8578 38.683 79.9484 37.2398 78.822C35.9667 77.8246 34.8578 76.6513 33.8605 75.3723C32.7692 73.9701 31.9303 72.433 31.2204 70.8138C30.4636 69.1007 29.9942 67.3171 29.7244 65.4691C29.6364 64.8824 29.6012 64.284 29.5425 63.6914C29.5542 63.6914 29.5836 63.6797 29.607 63.6738Z" fill="#FEFEFE"/> -<path d="M23.7798 58.8219C24.9297 59.8956 26.2028 60.7521 27.3938 61.7084C27.957 62.1601 28.4733 62.6647 28.9837 63.1751C29.148 63.3394 29.0776 63.621 29.0893 63.8498C29.2477 66.0792 29.6467 68.2616 30.4974 70.3385C31.0664 71.7172 31.659 73.09 32.5038 74.3279C33.554 75.8592 34.7156 77.2907 36.1236 78.5227C37.4437 79.6726 38.8752 80.6406 40.4416 81.4033C42.1313 82.2305 43.9089 82.7996 45.7804 83.0519C47.7575 83.3217 49.7229 83.2748 51.6883 82.9169C53.1374 82.6588 54.5044 82.1601 55.8479 81.5676C58.3237 80.4763 60.3947 78.8571 62.2075 76.88C63.7974 75.1434 65.0295 73.178 65.9212 70.9956C66.7309 69.0185 67.2823 66.9768 67.5229 64.853C67.6461 63.7853 67.6989 62.7116 67.6637 61.638C67.6109 60.1244 67.4525 58.6225 67.0653 57.1558C67.0125 56.9621 67.0653 56.8624 67.2178 56.7451C67.4994 56.5339 67.7928 56.3813 68.1506 56.3813C68.6786 56.3813 69.1421 56.1115 69.6467 56C69.8344 55.9589 70.028 55.912 70.2216 55.8944C70.6382 55.8533 71.0254 55.7418 71.3715 55.5013C71.395 55.4837 71.4184 55.4661 71.4478 55.4544C71.9054 55.2021 72.0345 55.2725 72.0345 55.7829C72.0345 59.0097 72.0286 62.2364 72.0345 65.4573C72.0345 67.1235 71.8409 68.7662 71.3656 70.3619C70.7555 72.4036 69.8227 74.2927 68.5965 76.0352C67.7223 77.2789 66.7309 78.4053 65.669 79.4907C63.6273 81.5734 61.3568 83.3804 58.928 84.9821C57.0271 86.2376 55.1087 87.4754 53.1374 88.6253C51.6883 89.4702 50.2333 90.3091 48.8429 91.2478C48.5672 91.4297 48.3208 91.6468 48.0626 91.858C47.9746 91.9284 47.9101 91.9812 47.7927 91.8873C46.8013 91.0894 45.6631 90.5145 44.5953 89.8339C44.1025 89.5171 43.6097 89.2003 43.0993 88.9128C41.3627 87.9389 39.6672 86.9064 38.001 85.821C36.0532 84.5596 34.1583 83.222 32.3982 81.7025C31.7059 81.1041 30.9902 80.5291 30.3624 79.8603C28.9661 78.3878 27.5581 76.9269 26.5314 75.161C25.7042 73.7412 24.9297 72.298 24.4956 70.7081C24.0849 69.1827 23.8268 67.6339 23.7974 66.0381C23.7564 63.6738 23.7916 61.3095 23.774 58.9451C23.7622 58.9158 23.7681 58.8923 23.7798 58.8219Z" fill="#0080BF"/> -<path d="M36.2662 34.9499C36.0022 34.3573 35.8849 33.7413 35.8027 33.1135C35.5153 30.9194 35.9259 28.8484 37.1169 26.9886C38.4311 24.9352 40.3085 23.6269 42.7667 23.2983C44.515 23.0695 46.1577 23.4509 47.6537 24.3896C49.49 25.5453 50.6634 27.1998 51.2853 29.259C51.5317 30.0745 51.6432 30.9076 51.6549 31.7583C51.6725 33.3189 51.3264 34.7915 50.6047 36.1702C50.5637 36.2464 50.5343 36.3168 50.4405 36.3638C50.0357 36.5632 49.6426 36.7686 49.2436 36.9739C49.1322 37.0326 49.05 37.015 48.9562 36.9328C48.3988 36.4342 47.8004 35.9824 47.1902 35.5424C47.0084 35.4133 46.9145 35.2197 46.8089 35.0379C46.715 34.8795 46.5625 34.8325 46.4158 34.8443C46.3044 34.8501 46.3102 35.0085 46.2809 35.1083C45.9171 36.4283 45.3422 37.6603 44.7379 38.8806C44.3859 39.5964 44.0222 40.3121 43.5997 40.981C43.2771 41.4972 42.8429 41.9431 42.4909 42.4418C41.9336 43.2279 41.3117 43.9613 40.5959 44.6125C40.2381 44.9411 39.9447 45.3341 39.581 45.6568C39.0706 46.1203 38.5015 46.5192 37.8972 46.8595C37.07 47.3289 36.278 47.8627 35.4097 48.2675C34.2128 48.8308 33.0043 49.3529 31.7605 49.8105C30.6106 50.2329 29.4666 50.6612 28.2815 50.9722C27.419 51.201 26.5449 51.2948 25.6531 51.3066C25.3539 51.3124 25.0547 51.4004 24.7555 51.3946C24.6851 51.3946 24.6264 51.3946 24.5736 51.4591C24.4152 51.6527 24.2451 51.8346 24.0398 52.0693C24.204 52.0693 24.3155 52.0693 24.4328 52.0693C40.1794 52.0693 55.9318 52.0693 71.6784 52.0634C71.9658 52.0634 72.0597 52.1221 72.0421 52.4213C72.0128 52.8495 72.0304 53.2837 72.0362 53.712C72.0362 53.8528 72.001 53.9114 71.8544 53.888C71.7957 53.8821 71.737 53.888 71.6784 53.888C55.8203 53.888 39.9682 53.888 24.1102 53.8938C23.8168 53.8938 23.7464 53.8293 23.7523 53.536C23.7699 52.345 23.764 51.1482 23.7582 49.9572C23.7582 49.7636 23.8051 49.6932 23.9987 49.7225C24.1982 49.7577 24.38 49.6697 24.5619 49.6111C25.2483 49.3764 25.9758 49.3881 26.6857 49.2649C27.3134 49.1534 27.9647 49.1828 28.5865 48.995C30.3231 48.467 32.089 48.0563 33.7552 47.2937C34.5883 46.9123 35.4214 46.5427 36.1489 45.9854C36.8529 45.4515 37.5276 44.8765 38.1964 44.2957C39.622 43.0578 40.9597 41.7319 41.9981 40.1361C42.6141 39.1798 43.1245 38.1766 43.5587 37.1147C43.9283 36.1936 44.292 35.2784 44.6147 34.3397C44.7086 34.064 44.779 33.7824 44.867 33.5008C44.908 33.3658 44.9139 33.2309 44.8787 33.0959C44.7966 32.8202 44.7496 32.5445 44.7496 32.257C44.7555 31.9226 44.5384 31.6879 44.3683 31.4298C44.0398 30.9311 43.5939 30.5732 43.0483 30.3385C42.7549 30.2153 42.4557 30.2916 42.1917 30.4031C41.4408 30.7199 40.6311 30.8959 39.9095 31.2948C39.4343 31.5588 38.9474 31.7994 38.4663 32.0516C38.4135 32.081 38.3724 32.122 38.3313 32.1631C37.5276 33.0079 36.8822 33.9584 36.2662 34.9499Z" fill="#FEFEFE"/> -<path d="M48.209 60.8929C48.2325 60.8049 48.1797 60.6993 48.2911 60.7052C48.4378 60.7169 48.6079 60.6172 48.7253 60.7814C48.7722 60.8518 48.8133 60.934 48.8074 61.0279C48.737 62.2071 49.265 63.1575 49.9514 64.0493C50.0042 64.1197 50.1274 64.2018 50.0629 64.2839C49.9573 64.4189 49.8106 64.5245 49.6639 64.6184C49.617 64.6477 49.5877 64.5538 49.5583 64.5069C49.1594 63.885 48.8309 63.2279 48.5082 62.5708C48.4026 62.3538 48.3615 62.0839 48.3498 61.8375C48.3263 61.5089 48.3381 61.1745 48.209 60.8929Z" fill="#FEFEFE"/> -<path d="M50.8156 36.575C51.1793 36.9152 51.1793 36.9152 50.9388 37.3083C50.8567 37.4432 50.7804 37.5782 50.6924 37.7014C50.1116 38.5169 49.9297 39.4497 49.8769 40.4177C49.8652 40.6113 49.7654 40.5878 49.654 40.582C49.5484 40.5702 49.3841 40.6582 49.4017 40.4236C49.4604 39.5318 49.5777 38.6694 50.0588 37.8715C50.3052 37.4491 50.5164 37.0032 50.8156 36.575Z" fill="#FEFEFE"/> -<path d="M51.3536 35.8592C51.3301 35.8651 51.3125 35.8709 51.2891 35.8709C51.2949 35.8533 51.3008 35.8299 51.3125 35.8123C51.3243 35.8299 51.3419 35.8475 51.3536 35.8592Z" fill="#0080BF"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.12 67.92H101.136V75H97.968V58.248H101.136V65.112H108.12V58.248H111.288V75H108.12V67.92ZM119.994 75.288C119.098 75.288 118.29 75.136 117.57 74.832C116.866 74.528 116.258 74.088 115.746 73.512C115.25 72.936 114.866 72.248 114.594 71.448C114.322 70.632 114.186 69.72 114.186 68.712C114.186 67.704 114.322 66.8 114.594 66C114.866 65.2 115.25 64.52 115.746 63.96C116.258 63.384 116.866 62.944 117.57 62.64C118.29 62.336 119.098 62.184 119.994 62.184C120.89 62.184 121.698 62.336 122.418 62.64C123.138 62.944 123.746 63.384 124.242 63.96C124.754 64.52 125.146 65.2 125.418 66C125.69 66.8 125.826 67.704 125.826 68.712C125.826 69.72 125.69 70.632 125.418 71.448C125.146 72.248 124.754 72.936 124.242 73.512C123.746 74.088 123.138 74.528 122.418 74.832C121.698 75.136 120.89 75.288 119.994 75.288ZM119.994 72.816C120.81 72.816 121.45 72.568 121.914 72.072C122.378 71.576 122.61 70.848 122.61 69.888V67.56C122.61 66.616 122.378 65.896 121.914 65.4C121.45 64.904 120.81 64.656 119.994 64.656C119.194 64.656 118.562 64.904 118.098 65.4C117.634 65.896 117.402 66.616 117.402 67.56V69.888C117.402 70.848 117.634 71.576 118.098 72.072C118.562 72.568 119.194 72.816 119.994 72.816ZM128.549 75V62.472H131.621V65.064H131.741C131.821 64.728 131.941 64.408 132.101 64.104C132.277 63.784 132.501 63.504 132.773 63.264C133.045 63.024 133.365 62.832 133.733 62.688C134.117 62.544 134.557 62.472 135.053 62.472H135.725V65.376H134.765C133.725 65.376 132.941 65.528 132.413 65.832C131.885 66.136 131.621 66.632 131.621 67.32V75H128.549ZM137.971 75V62.472H141.043V64.56H141.163C141.419 63.888 141.819 63.328 142.363 62.88C142.923 62.416 143.691 62.184 144.667 62.184C145.963 62.184 146.955 62.608 147.643 63.456C148.331 64.304 148.675 65.512 148.675 67.08V75H145.603V67.392C145.603 66.496 145.443 65.824 145.123 65.376C144.803 64.928 144.275 64.704 143.539 64.704C143.219 64.704 142.907 64.752 142.603 64.848C142.315 64.928 142.051 65.056 141.811 65.232C141.587 65.392 141.403 65.6 141.259 65.856C141.115 66.096 141.043 66.384 141.043 66.72V75H137.971ZM161.297 75C160.625 75 160.089 74.808 159.689 74.424C159.305 74.024 159.065 73.496 158.969 72.84H158.825C158.617 73.656 158.193 74.272 157.553 74.688C156.913 75.088 156.121 75.288 155.177 75.288C153.897 75.288 152.913 74.952 152.225 74.28C151.537 73.608 151.193 72.712 151.193 71.592C151.193 70.296 151.657 69.336 152.585 68.712C153.513 68.072 154.833 67.752 156.545 67.752H158.681V66.84C158.681 66.136 158.497 65.592 158.129 65.208C157.761 64.824 157.169 64.632 156.353 64.632C155.633 64.632 155.049 64.792 154.601 65.112C154.169 65.416 153.801 65.784 153.497 66.216L151.673 64.584C152.137 63.864 152.753 63.288 153.521 62.856C154.289 62.408 155.305 62.184 156.569 62.184C158.265 62.184 159.553 62.568 160.433 63.336C161.313 64.104 161.753 65.208 161.753 66.648V72.552H163.001V75H161.297ZM156.209 73.056C156.897 73.056 157.481 72.904 157.961 72.6C158.441 72.296 158.681 71.848 158.681 71.256V69.6H156.713C155.113 69.6 154.313 70.112 154.313 71.136V71.544C154.313 72.056 154.473 72.44 154.793 72.696C155.129 72.936 155.601 73.056 156.209 73.056ZM166.111 64.896H164.263V62.472H166.111V60.672C166.111 59.568 166.399 58.72 166.975 58.128C167.567 57.536 168.431 57.24 169.567 57.24H171.751V59.688H169.183V62.472H171.751V64.896H169.183V75H166.111V64.896ZM173.878 62.472H176.95V76.512C176.95 77.568 176.686 78.376 176.158 78.936C175.63 79.512 174.79 79.8 173.638 79.8H171.958V77.352H173.878V62.472ZM175.414 60.648C174.774 60.648 174.31 60.504 174.022 60.216C173.75 59.928 173.614 59.56 173.614 59.112V58.632C173.614 58.184 173.75 57.816 174.022 57.528C174.31 57.24 174.774 57.096 175.414 57.096C176.038 57.096 176.494 57.24 176.782 57.528C177.07 57.816 177.214 58.184 177.214 58.632V59.112C177.214 59.56 177.07 59.928 176.782 60.216C176.494 60.504 176.038 60.648 175.414 60.648ZM185.478 75.288C184.582 75.288 183.774 75.136 183.054 74.832C182.35 74.528 181.742 74.088 181.23 73.512C180.734 72.936 180.35 72.248 180.078 71.448C179.806 70.632 179.67 69.72 179.67 68.712C179.67 67.704 179.806 66.8 180.078 66C180.35 65.2 180.734 64.52 181.23 63.96C181.742 63.384 182.35 62.944 183.054 62.64C183.774 62.336 184.582 62.184 185.478 62.184C186.374 62.184 187.182 62.336 187.902 62.64C188.622 62.944 189.23 63.384 189.726 63.96C190.238 64.52 190.63 65.2 190.902 66C191.174 66.8 191.31 67.704 191.31 68.712C191.31 69.72 191.174 70.632 190.902 71.448C190.63 72.248 190.238 72.936 189.726 73.512C189.23 74.088 188.622 74.528 187.902 74.832C187.182 75.136 186.374 75.288 185.478 75.288ZM185.478 72.816C186.294 72.816 186.934 72.568 187.398 72.072C187.862 71.576 188.094 70.848 188.094 69.888V67.56C188.094 66.616 187.862 65.896 187.398 65.4C186.934 64.904 186.294 64.656 185.478 64.656C184.678 64.656 184.046 64.904 183.582 65.4C183.118 65.896 182.886 66.616 182.886 67.56V69.888C182.886 70.848 183.118 71.576 183.582 72.072C184.046 72.568 184.678 72.816 185.478 72.816ZM182.982 60.48C182.358 60.48 181.918 60.352 181.662 60.096C181.406 59.824 181.278 59.488 181.278 59.088V58.584C181.278 58.184 181.406 57.856 181.662 57.6C181.918 57.328 182.358 57.192 182.982 57.192C183.606 57.192 184.046 57.328 184.302 57.6C184.558 57.856 184.686 58.184 184.686 58.584V59.088C184.686 59.488 184.558 59.824 184.302 60.096C184.046 60.352 183.606 60.48 182.982 60.48ZM188.022 60.48C187.398 60.48 186.958 60.352 186.702 60.096C186.446 59.824 186.318 59.488 186.318 59.088V58.584C186.318 58.184 186.446 57.856 186.702 57.6C186.958 57.328 187.398 57.192 188.022 57.192C188.646 57.192 189.086 57.328 189.342 57.6C189.598 57.856 189.726 58.184 189.726 58.584V59.088C189.726 59.488 189.598 59.824 189.342 60.096C189.086 60.352 188.646 60.48 188.022 60.48ZM194.034 75V62.472H197.106V65.064H197.226C197.306 64.728 197.426 64.408 197.586 64.104C197.762 63.784 197.986 63.504 198.258 63.264C198.53 63.024 198.85 62.832 199.218 62.688C199.602 62.544 200.042 62.472 200.538 62.472H201.21V65.376H200.25C199.21 65.376 198.426 65.528 197.898 65.832C197.37 66.136 197.106 66.632 197.106 67.32V75H194.034ZM212.627 58.224L210.851 59.376C211.955 60.528 212.843 61.856 213.515 63.36C214.187 64.864 214.523 66.536 214.523 68.376C214.523 69.56 214.379 70.592 214.091 71.472C213.803 72.336 213.395 73.056 212.867 73.632C212.355 74.192 211.739 74.608 211.019 74.88C210.299 75.152 209.499 75.288 208.618 75.288C207.675 75.288 206.827 75.144 206.075 74.856C205.339 74.552 204.707 74.128 204.179 73.584C203.667 73.04 203.275 72.376 203.003 71.592C202.731 70.808 202.595 69.936 202.595 68.976C202.595 68.08 202.707 67.264 202.931 66.528C203.171 65.792 203.507 65.16 203.939 64.632C204.371 64.104 204.891 63.696 205.499 63.408C206.123 63.12 206.811 62.976 207.562 62.976C208.427 62.976 209.147 63.192 209.723 63.624C210.315 64.04 210.779 64.608 211.115 65.328L211.259 65.256C211.067 64.44 210.723 63.664 210.227 62.928C209.747 62.192 209.163 61.488 208.475 60.816L206.411 62.112L205.307 60.792L207.179 59.664C206.619 59.2 206.027 58.768 205.403 58.368C204.795 57.968 204.179 57.592 203.555 57.24H208.235C208.459 57.368 208.675 57.52 208.883 57.696C209.091 57.856 209.307 58.024 209.531 58.2L211.547 56.928L212.627 58.224ZM208.571 72.936C209.419 72.936 210.091 72.664 210.587 72.12C211.083 71.576 211.331 70.816 211.331 69.84V68.448C211.331 67.472 211.083 66.712 210.587 66.168C210.091 65.624 209.419 65.352 208.571 65.352C207.707 65.352 207.027 65.624 206.531 66.168C206.035 66.712 205.787 67.472 205.787 68.448V69.84C205.787 70.816 206.035 71.576 206.531 72.12C207.027 72.664 207.707 72.936 208.571 72.936ZM224.959 72.912H224.839C224.727 73.232 224.575 73.536 224.383 73.824C224.207 74.096 223.975 74.344 223.687 74.568C223.415 74.792 223.079 74.968 222.679 75.096C222.295 75.224 221.847 75.288 221.335 75.288C220.039 75.288 219.047 74.864 218.359 74.016C217.671 73.168 217.327 71.96 217.327 70.392V62.472H220.399V70.08C220.399 70.944 220.567 71.608 220.903 72.072C221.239 72.52 221.775 72.744 222.511 72.744C222.815 72.744 223.111 72.704 223.399 72.624C223.703 72.544 223.967 72.424 224.191 72.264C224.415 72.088 224.599 71.88 224.743 71.64C224.887 71.384 224.959 71.088 224.959 70.752V62.472H228.031V75H224.959V72.912ZM231.581 75V62.472H234.653V65.064H234.773C234.853 64.728 234.973 64.408 235.133 64.104C235.309 63.784 235.533 63.504 235.805 63.264C236.077 63.024 236.397 62.832 236.765 62.688C237.149 62.544 237.589 62.472 238.085 62.472H238.757V65.376H237.797C236.757 65.376 235.973 65.528 235.445 65.832C234.917 66.136 234.653 66.632 234.653 67.32V75H231.581Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/hrunamannahreppur.svg b/libs/application/templates/financial-aid/src/svg/hrunamannahreppur.svg deleted file mode 100644 index 1e9ddd2490e0..000000000000 --- a/libs/application/templates/financial-aid/src/svg/hrunamannahreppur.svg +++ /dev/null @@ -1,23 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M48.1955 96C47.7633 96 47.3312 95.919 46.818 95.7029C42.4966 94.0284 38.3103 91.7866 34.421 89.0587C30.4777 86.2768 27.5878 83.603 25.3731 80.605C20.3494 73.9068 17.6215 65.5611 17.0544 55.1627C17.0544 54.9467 17.0273 50.1931 17.0544 49.788C17.0544 46.763 17.0544 43.765 17.0544 40.767V40.578C17.0544 32.8535 17.0544 24.8589 17.0273 17.0263C17.0273 16.4321 17.1894 16.2701 17.2434 16.2161C17.3244 16.108 17.4325 16 17.8106 16C17.9186 16 17.9997 16 18.1077 16H18.3238C18.3238 16 37.392 16 46.845 16C56.3251 16 65.8052 16 75.2853 16C76.1225 16 76.9868 16 77.8241 16.027H79.1475H79.6337V51.0034C79.6337 51.6786 79.4446 54.1364 79.0395 58.1067C78.8234 60.1323 78.4993 62.212 78.0402 64.4267C76.4737 71.8542 73.6377 77.7421 69.3703 82.4686C64.2387 88.1134 57.7296 92.4348 49.4379 95.6759C49.0327 95.919 48.6006 96 48.1955 96Z" fill="#FAFBFA"/> -<path d="M55.4603 61.5908C55.3523 61.5638 55.2713 61.5368 55.1632 61.5368C55.1092 59.5112 55.0282 57.4585 55.0012 55.4328C54.9742 52.1108 54.9472 48.7887 55.0282 45.4666C55.0552 44.2512 54.6231 43.711 53.4347 43.738C51.9762 43.495 50.4907 43.576 49.0052 43.711C48.5461 43.8191 48.114 44.0081 47.6548 44.0351C46.2774 44.1702 46.0073 44.9534 46.0613 46.2229C46.1153 48.2485 46.2233 50.3012 45.9803 52.3538C44.4138 52.4349 42.8472 52.1108 41.3077 52.5159C39.12 53.1641 39.12 53.1641 39.12 55.3518C39.12 57.1344 39.093 58.944 39.12 60.7266C39.147 61.4018 38.958 61.6179 38.2558 61.5908C35.987 61.5638 33.7183 61.5908 31.4495 61.5908C29.6129 61.5908 29.6129 61.5908 29.4239 63.4545C29.4239 63.5895 29.4239 63.6975 29.4509 63.8326C29.3158 64.9669 29.3158 66.1013 29.4509 67.2087C29.3429 68.154 29.775 68.5051 30.7203 68.4781C33.5022 68.4511 36.2841 68.4781 39.066 68.5051C39.12 68.5591 39.1741 68.6401 39.1741 68.7212C39.147 68.7482 39.12 68.7752 39.12 68.8022C39.12 68.8562 39.147 68.9372 39.1741 68.9913C39.1741 71.5571 39.1741 74.1229 39.1741 76.6888C39.147 76.7158 39.093 76.7698 39.12 76.7698C39.147 76.8238 39.2011 76.8778 39.2281 76.9318C39.3631 77.0129 39.5252 77.2019 39.6332 77.1749C40.7676 76.9859 40.8216 77.6341 40.7946 78.4983C40.7406 79.5517 40.7676 80.632 40.7946 81.6854C40.7946 82.0365 40.6325 82.4956 41.2267 82.5767C42.9283 83.603 44.8189 83.0898 46.6285 83.0898C48.7892 83.0898 49.0052 82.7927 49.0323 80.659C49.0323 79.7678 49.3834 79.4166 50.2477 79.4977C51.5441 79.6327 52.7865 79.2546 54.0289 78.9035C54.8662 78.6604 55.2443 78.3093 55.1903 77.418C55.1092 74.9602 55.1092 72.4754 55.0012 70.0176C54.9472 68.9102 55.2983 68.5051 56.4327 68.5051C59.5117 68.5591 62.5907 68.5051 65.6697 68.5321C66.669 68.5591 67.2362 68.289 67.2362 67.2087C67.2362 66.0203 67.2362 64.8049 67.2362 63.6165C67.0741 63.0223 66.9391 62.4011 66.777 61.8069C66.777 61.6449 66.696 61.5908 66.5339 61.6179C62.8607 61.5908 59.1605 61.5908 55.4603 61.5908Z" fill="#3E9A17"/> -<path d="M79.6607 47.8974C79.6607 47.8974 79.6607 49.734 79.6607 51.0304C79.6607 52.3268 79.1205 57.7286 79.0935 58.1337C78.8774 60.2674 78.5263 62.3741 78.0941 64.4537C76.6897 71.1789 74.0428 77.3909 69.4243 82.4956C63.9416 88.5456 57.1083 92.7319 49.4919 95.7029C48.5465 96.081 47.7633 96.054 46.818 95.6759C42.4156 93.9743 38.2832 91.7326 34.421 89.0317C31.0178 86.6279 27.8578 83.9271 25.373 80.578C19.7282 73.0695 17.5675 64.3727 17.0543 55.1627C17.0273 54.5145 17.3514 54.1364 17.7295 53.7043C20.3224 50.7063 22.9152 47.6813 25.5351 44.7103C26.9395 43.1168 26.4534 43.0898 28.398 44.2242C28.506 44.2782 28.6411 44.3322 28.7221 44.4132C29.2623 44.8994 29.6134 44.8184 30.2076 44.3052C34.448 40.605 38.3642 36.6617 41.6593 32.0972C42.1455 31.395 42.6586 31.0709 43.5769 31.1789C45.4405 31.368 47.3312 31.449 49.2218 31.476C50.086 31.476 50.6262 31.8542 51.1934 32.4483C53.4892 34.7981 55.8659 37.0668 58.0266 39.5517C58.6208 40.2269 59.215 40.3889 60.1333 40.1188C62.0779 39.5517 64.0496 38.7954 66.0752 40.0378C66.8585 40.524 67.7768 40.9021 68.6681 41.1182C70.7748 41.6583 72.1792 42.9548 73.1245 44.8184C73.6107 45.7637 74.3669 46.3038 75.3393 46.6009C76.6357 47.0061 77.9321 47.4652 79.2285 47.8974C79.3906 47.8974 79.5256 47.8974 79.6607 47.8974Z" fill="#3E9A17"/> -<path d="M49.0059 43.6841C50.4913 43.549 51.9498 43.468 53.4353 43.7111C53.4083 54.1094 53.4083 64.4808 53.3813 74.8792C53.3813 78.0392 53.3813 78.0122 50.2483 78.0122C49.303 78.0122 49.0059 77.7691 49.0059 76.7968C49.0329 71.125 49.0059 65.4261 49.0059 59.7273C49.0059 54.4065 49.0059 49.0318 49.0059 43.6841Z" fill="#BCBEBC"/> -<path d="M39.1743 76.6618C39.1743 74.096 39.1743 71.5301 39.1743 68.9643C39.2013 68.9373 39.2284 68.9103 39.2284 68.8833C39.2284 68.8293 39.2013 68.7482 39.1743 68.6942C39.1743 68.6132 39.1203 68.5322 39.0663 68.4781C39.0933 68.2891 39.1203 68.1 39.1743 67.911C39.2013 67.884 39.2554 67.8569 39.2554 67.8299C39.2554 67.7489 39.2013 67.6949 39.2013 67.6139C39.1473 67.4518 39.0933 67.2628 39.0123 67.1007C39.0393 66.7226 39.0663 66.3445 39.0393 65.9393C39.0123 63.6166 39.3364 63.7786 36.9326 63.7786C34.4478 63.7786 31.963 63.7786 29.4782 63.7516C29.4782 63.6166 29.4512 63.5085 29.4512 63.3735C29.6402 61.5099 29.6402 61.5099 31.4768 61.5099C33.7456 61.5099 36.0143 61.4829 38.283 61.5099C38.9583 61.5099 39.1473 61.3208 39.1473 60.6456C39.0933 58.863 39.1473 57.0534 39.1473 55.2709C39.1473 53.0831 39.1473 53.0831 41.335 52.4349C41.9832 52.597 41.8752 53.1102 41.8752 53.5693C41.8752 55.1898 41.8752 56.8104 41.8752 58.4309C41.8752 58.836 41.7942 59.4302 42.4424 59.3222C43.4147 59.1601 43.3607 59.7003 43.3607 60.3485C43.3607 67.5598 43.3607 74.7712 43.3607 81.9555C42.6585 82.1176 41.9292 82.2796 41.227 82.4687C40.6328 82.3877 40.7949 81.9285 40.7949 81.5774C40.7949 80.5241 40.7408 79.4437 40.7949 78.3904C40.8489 77.5261 40.7679 76.8779 39.6335 77.0669C39.5254 77.0939 39.3634 76.9049 39.2284 76.8239C39.2554 76.8239 39.2283 76.7428 39.1743 76.6618Z" fill="#FAFBFA"/> -<path d="M43.3323 82.0365C43.3323 74.8251 43.3323 67.6138 43.3323 60.4294C43.3323 59.7812 43.3593 59.2411 42.414 59.4031C41.7658 59.5112 41.8468 58.8899 41.8468 58.5118C41.8198 56.8913 41.8468 55.2708 41.8468 53.6502C41.8468 53.1911 41.9278 52.6779 41.3066 52.5159C42.8461 52.1107 44.4397 52.4349 45.9792 52.3538C46.3303 54.1634 46.1412 55.973 46.1142 57.7826C46.0872 58.8359 46.4113 59.3491 47.4646 59.3761C47.4646 60.5645 47.4376 61.7529 47.4376 62.9683C47.4376 68.9372 47.4376 74.9061 47.4917 80.8751C47.4917 81.7934 47.3026 82.2255 46.3033 82.1175C45.3039 82.0095 44.3316 82.0635 43.3323 82.0365Z" fill="#BCBEBC"/> -<path d="M43.3336 82.0365C44.3059 82.0635 45.3052 82.0095 46.2775 82.0905C47.2769 82.1985 47.4659 81.7394 47.4659 80.8481C47.4119 74.8792 47.4389 68.9102 47.4119 62.9413C47.4119 61.7529 47.4119 60.5645 47.4389 59.3491C47.9521 59.4842 48.4923 59.6192 49.0054 59.7272C49.0054 65.4261 49.0324 71.0979 49.0054 76.7968C49.0054 77.7691 49.3025 78.0122 50.2478 78.0122C53.3808 77.9852 53.3808 78.0392 53.3808 74.8792C53.3808 64.4808 53.4079 54.1094 53.4349 43.711C54.6233 43.684 55.0554 44.2242 55.0284 45.4396C54.9474 48.7617 54.9744 52.0838 55.0014 55.4058C55.0284 57.4315 55.1094 59.4842 55.1634 61.5098C55.1094 61.5909 55.1094 61.6719 55.1634 61.7529C55.0554 62.4551 55.0554 63.1574 55.1904 63.8596C55.1634 64.5888 55.1904 65.3181 55.1094 66.0203C55.0014 66.9926 55.4065 67.2357 56.3518 67.2357C59.998 67.1817 63.6442 67.1817 67.2634 67.1817C67.2634 68.235 66.6692 68.5051 65.6969 68.5051C62.6179 68.4511 59.5389 68.5321 56.4599 68.4781C55.3255 68.4511 54.9744 68.8832 55.0284 69.9906C55.1364 72.4484 55.1094 74.9332 55.2174 77.391C55.2445 78.2823 54.8933 78.6334 54.0561 78.8765C52.8137 79.2276 51.5983 79.6057 50.2748 79.4707C49.4106 79.3896 49.0594 79.7408 49.0594 80.632C49.0324 82.7657 48.8164 83.0628 46.6557 83.0628C44.8461 83.0628 42.9825 83.576 41.2539 82.5497C41.9291 82.3876 42.6314 82.1986 43.3336 82.0365Z" fill="#3D3D3D"/> -<path d="M49.0325 59.7543C48.5193 59.6192 47.9791 59.4842 47.466 59.3762C46.4126 59.3491 46.0885 58.836 46.1155 57.7826C46.1425 55.973 46.3316 54.1365 45.9805 52.3539C46.2235 50.3282 46.1155 48.2755 46.0615 46.2229C46.0345 44.9535 46.2776 44.1702 47.655 44.0352C48.1142 43.9811 48.5463 43.8191 49.0055 43.7111C49.0055 49.0318 49.0055 54.4065 49.0325 59.7543Z" fill="#FAFBFA"/> -<path d="M67.2374 67.1817C63.5912 67.1817 59.945 67.1817 56.3258 67.2358C55.3805 67.2628 54.9754 66.9927 55.0834 66.0204C55.1645 65.2911 55.1375 64.5619 55.1645 63.8597C58.7026 63.8597 62.2408 63.8597 65.7519 63.8597C66.2651 63.8597 66.7782 63.9407 67.2374 63.6166C67.2374 64.805 67.2374 65.9934 67.2374 67.1817Z" fill="#BCBEBC"/> -<path d="M29.4788 63.8326C31.9636 63.8326 34.4484 63.8326 36.9333 63.8596C39.337 63.8596 39.0129 63.6976 39.0399 66.0203C39.0399 66.3985 39.0129 66.7766 39.0129 67.1817C35.8259 67.2087 32.6659 67.2087 29.4788 67.2357C29.3438 66.1014 29.3168 64.967 29.4788 63.8326Z" fill="#BCBEBC"/> -<path d="M67.2365 63.5895C66.7773 63.9406 66.2641 63.8326 65.751 63.8326C62.2128 63.8326 58.6747 63.8326 55.1635 63.8326C55.0285 63.1303 55.0285 62.4281 55.1365 61.7259C55.2446 61.6719 55.3256 61.6179 55.4336 61.5638C59.1338 61.5638 62.834 61.5638 66.5342 61.5638C66.6152 61.6179 66.6963 61.6989 66.7773 61.7529C66.9394 62.3741 67.1014 62.9953 67.2365 63.5895Z" fill="#FAFBFA"/> -<path d="M29.451 67.2357C32.6381 67.2086 35.7981 67.2086 38.9851 67.1816C39.0391 67.3437 39.0931 67.5328 39.1742 67.6948C39.1742 67.8028 39.1742 67.8839 39.1742 67.9919C39.1472 68.181 39.1202 68.37 39.0661 68.5591C36.2842 68.5591 33.5023 68.5321 30.7204 68.5321C29.8021 68.5051 29.37 68.154 29.451 67.2357Z" fill="#3D3D3D"/> -<path d="M55.4606 61.5909C55.3526 61.6449 55.2716 61.6989 55.1636 61.753C55.1095 61.6719 55.1095 61.5909 55.1636 61.5099C55.2446 61.5369 55.3526 61.5639 55.4606 61.5909Z" fill="#BCBEBC"/> -<path d="M66.8036 61.7799C66.7226 61.7259 66.6416 61.6449 66.5605 61.5909C66.6956 61.5369 66.7766 61.6179 66.8036 61.7799Z" fill="#BCBEBC"/> -<path d="M39.1747 68.7212C39.2017 68.7752 39.2287 68.8562 39.2287 68.9102C39.2287 68.9373 39.2017 68.9643 39.1747 68.9913C39.1477 68.9373 39.1206 68.8562 39.1206 68.8022C39.0936 68.7752 39.1477 68.7482 39.1747 68.7212Z" fill="#BCBEBC"/> -<path d="M39.1747 76.6617C39.2287 76.7428 39.2557 76.8238 39.2287 76.9048C39.2017 76.8508 39.1476 76.7968 39.1206 76.7428C39.0936 76.7428 39.1476 76.6888 39.1747 76.6617Z" fill="#BCBEBC"/> -<path d="M79.661 16.0541V45.0885H79.1479C77.7704 44.6024 76.393 44.1702 75.0695 43.603C74.1783 43.2249 73.7461 42.2796 73.287 41.4963C72.6658 40.443 71.8285 39.7948 70.6671 39.4167C69.1276 38.9035 67.5881 38.3363 66.1566 37.6071C64.4281 36.7428 62.6995 36.8238 60.971 37.364C59.9986 37.6611 59.3774 37.472 58.6482 36.7158C56.2174 34.1229 53.6516 31.6922 51.1938 29.1533C50.7616 28.7212 50.3295 28.6672 49.8163 28.6402C47.4936 28.5591 45.1978 28.5051 42.8751 28.3161C41.8758 28.235 41.3356 28.6132 40.7684 29.3694C37.6354 33.6908 34.2053 37.7691 30.0999 41.2533C29.4247 41.8205 29.0466 41.7124 28.3714 41.4153C25.7515 40.1999 26.5078 40.1459 24.7792 42.1446C22.4564 44.7914 20.1607 47.4113 17.8109 50.0311C17.6489 50.2202 17.5408 50.6523 17.1897 50.4903C17.0817 50.4363 17.0817 50.0311 17.0817 49.788C17.0817 38.8765 17.0817 27.9649 17.0547 17.0534C17.0547 15.811 17.8109 16.0811 18.4862 16.0811C37.4463 16.0811 56.4065 16.0811 75.3666 16.0811C76.6631 16.0811 77.9325 16.1081 79.2289 16.1081H79.661V16.0541Z" fill="#254882"/> -<path d="M39.1738 67.9649C39.1738 67.8569 39.1738 67.7759 39.1738 67.6678C39.2008 67.7489 39.2278 67.8029 39.2278 67.8839C39.2278 67.9109 39.2008 67.9379 39.1738 67.9649Z" fill="#BCBEBC"/> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M108.12 53.92H101.136V61H97.968V44.248H101.136V51.112H108.12V44.248H111.288V61H108.12V53.92ZM115.026 61V48.472H118.098V51.064H118.218C118.298 50.728 118.418 50.408 118.578 50.104C118.754 49.784 118.978 49.504 119.25 49.264C119.522 49.024 119.842 48.832 120.21 48.688C120.594 48.544 121.034 48.472 121.53 48.472H122.202V51.376H121.242C120.202 51.376 119.418 51.528 118.89 51.832C118.362 52.136 118.098 52.632 118.098 53.32V61H115.026ZM131.936 58.912H131.816C131.704 59.232 131.552 59.536 131.36 59.824C131.184 60.096 130.952 60.344 130.664 60.568C130.392 60.792 130.056 60.968 129.656 61.096C129.272 61.224 128.824 61.288 128.312 61.288C127.016 61.288 126.024 60.864 125.336 60.016C124.648 59.168 124.304 57.96 124.304 56.392V48.472H127.376V56.08C127.376 56.944 127.544 57.608 127.88 58.072C128.216 58.52 128.752 58.744 129.488 58.744C129.792 58.744 130.088 58.704 130.376 58.624C130.68 58.544 130.944 58.424 131.168 58.264C131.392 58.088 131.576 57.88 131.72 57.64C131.864 57.384 131.936 57.088 131.936 56.752V48.472H135.008V61H131.936V58.912ZM138.557 61V48.472H141.629V50.56H141.749C142.005 49.888 142.405 49.328 142.949 48.88C143.509 48.416 144.277 48.184 145.253 48.184C146.549 48.184 147.541 48.608 148.229 49.456C148.917 50.304 149.261 51.512 149.261 53.08V61H146.189V53.392C146.189 52.496 146.029 51.824 145.709 51.376C145.389 50.928 144.861 50.704 144.125 50.704C143.805 50.704 143.493 50.752 143.189 50.848C142.901 50.928 142.637 51.056 142.397 51.232C142.173 51.392 141.989 51.6 141.845 51.856C141.701 52.096 141.629 52.384 141.629 52.72V61H138.557ZM161.883 61C161.211 61 160.675 60.808 160.275 60.424C159.891 60.024 159.651 59.496 159.555 58.84H159.411C159.203 59.656 158.779 60.272 158.139 60.688C157.499 61.088 156.707 61.288 155.763 61.288C154.483 61.288 153.499 60.952 152.811 60.28C152.123 59.608 151.779 58.712 151.779 57.592C151.779 56.296 152.243 55.336 153.171 54.712C154.099 54.072 155.419 53.752 157.131 53.752H159.267V52.84C159.267 52.136 159.083 51.592 158.715 51.208C158.347 50.824 157.755 50.632 156.939 50.632C156.219 50.632 155.635 50.792 155.187 51.112C154.755 51.416 154.387 51.784 154.083 52.216L152.259 50.584C152.723 49.864 153.339 49.288 154.107 48.856C154.875 48.408 155.891 48.184 157.155 48.184C158.851 48.184 160.139 48.568 161.019 49.336C161.899 50.104 162.339 51.208 162.339 52.648V58.552H163.587V61H161.883ZM156.795 59.056C157.483 59.056 158.067 58.904 158.547 58.6C159.027 58.296 159.267 57.848 159.267 57.256V55.6H157.299C155.699 55.6 154.899 56.112 154.899 57.136V57.544C154.899 58.056 155.059 58.44 155.379 58.696C155.715 58.936 156.187 59.056 156.795 59.056ZM166.073 61V48.472H169.145V50.56H169.265C169.505 49.904 169.889 49.344 170.417 48.88C170.945 48.416 171.681 48.184 172.625 48.184C173.489 48.184 174.233 48.392 174.857 48.808C175.481 49.224 175.945 49.856 176.249 50.704H176.297C176.521 50 176.961 49.408 177.617 48.928C178.289 48.432 179.129 48.184 180.137 48.184C181.369 48.184 182.313 48.608 182.969 49.456C183.641 50.304 183.977 51.512 183.977 53.08V61H180.905V53.392C180.905 51.6 180.233 50.704 178.889 50.704C178.585 50.704 178.289 50.752 178.001 50.848C177.729 50.928 177.481 51.056 177.257 51.232C177.049 51.392 176.881 51.6 176.753 51.856C176.625 52.096 176.561 52.384 176.561 52.72V61H173.489V53.392C173.489 51.6 172.817 50.704 171.473 50.704C171.185 50.704 170.897 50.752 170.609 50.848C170.337 50.928 170.089 51.056 169.865 51.232C169.657 51.392 169.481 51.6 169.337 51.856C169.209 52.096 169.145 52.384 169.145 52.72V61H166.073ZM196.594 61C195.922 61 195.386 60.808 194.986 60.424C194.602 60.024 194.362 59.496 194.266 58.84H194.122C193.914 59.656 193.49 60.272 192.85 60.688C192.21 61.088 191.418 61.288 190.474 61.288C189.194 61.288 188.21 60.952 187.522 60.28C186.834 59.608 186.49 58.712 186.49 57.592C186.49 56.296 186.954 55.336 187.882 54.712C188.81 54.072 190.13 53.752 191.842 53.752H193.978V52.84C193.978 52.136 193.794 51.592 193.426 51.208C193.058 50.824 192.466 50.632 191.65 50.632C190.93 50.632 190.346 50.792 189.898 51.112C189.466 51.416 189.098 51.784 188.794 52.216L186.97 50.584C187.434 49.864 188.05 49.288 188.818 48.856C189.586 48.408 190.602 48.184 191.866 48.184C193.562 48.184 194.85 48.568 195.73 49.336C196.61 50.104 197.05 51.208 197.05 52.648V58.552H198.298V61H196.594ZM191.506 59.056C192.194 59.056 192.778 58.904 193.258 58.6C193.738 58.296 193.978 57.848 193.978 57.256V55.6H192.01C190.41 55.6 189.61 56.112 189.61 57.136V57.544C189.61 58.056 189.77 58.44 190.09 58.696C190.426 58.936 190.898 59.056 191.506 59.056ZM200.784 61V48.472H203.856V50.56H203.976C204.232 49.888 204.632 49.328 205.176 48.88C205.736 48.416 206.504 48.184 207.48 48.184C208.776 48.184 209.768 48.608 210.456 49.456C211.144 50.304 211.488 51.512 211.488 53.08V61H208.416V53.392C208.416 52.496 208.256 51.824 207.936 51.376C207.616 50.928 207.088 50.704 206.352 50.704C206.032 50.704 205.72 50.752 205.416 50.848C205.128 50.928 204.864 51.056 204.624 51.232C204.4 51.392 204.216 51.6 204.072 51.856C203.928 52.096 203.856 52.384 203.856 52.72V61H200.784ZM214.893 61V48.472H217.965V50.56H218.085C218.341 49.888 218.741 49.328 219.285 48.88C219.845 48.416 220.613 48.184 221.589 48.184C222.885 48.184 223.877 48.608 224.565 49.456C225.253 50.304 225.597 51.512 225.597 53.08V61H222.525V53.392C222.525 52.496 222.365 51.824 222.045 51.376C221.725 50.928 221.197 50.704 220.461 50.704C220.141 50.704 219.829 50.752 219.525 50.848C219.237 50.928 218.973 51.056 218.733 51.232C218.509 51.392 218.325 51.6 218.181 51.856C218.037 52.096 217.965 52.384 217.965 52.72V61H214.893ZM238.219 61C237.547 61 237.011 60.808 236.611 60.424C236.227 60.024 235.987 59.496 235.891 58.84H235.747C235.539 59.656 235.115 60.272 234.475 60.688C233.835 61.088 233.043 61.288 232.099 61.288C230.819 61.288 229.835 60.952 229.147 60.28C228.459 59.608 228.115 58.712 228.115 57.592C228.115 56.296 228.579 55.336 229.507 54.712C230.435 54.072 231.755 53.752 233.467 53.752H235.603V52.84C235.603 52.136 235.419 51.592 235.051 51.208C234.683 50.824 234.091 50.632 233.275 50.632C232.555 50.632 231.971 50.792 231.523 51.112C231.091 51.416 230.723 51.784 230.419 52.216L228.595 50.584C229.059 49.864 229.675 49.288 230.443 48.856C231.211 48.408 232.227 48.184 233.491 48.184C235.187 48.184 236.475 48.568 237.355 49.336C238.235 50.104 238.675 51.208 238.675 52.648V58.552H239.923V61H238.219ZM233.131 59.056C233.819 59.056 234.403 58.904 234.883 58.6C235.363 58.296 235.603 57.848 235.603 57.256V55.6H233.635C232.035 55.6 231.235 56.112 231.235 57.136V57.544C231.235 58.056 231.395 58.44 231.715 58.696C232.051 58.936 232.523 59.056 233.131 59.056ZM241.908 55.216V52.168H248.772V55.216H241.908ZM97.776 71.24H100.848V78.56H100.968C101.224 77.888 101.624 77.328 102.168 76.88C102.728 76.416 103.496 76.184 104.472 76.184C105.768 76.184 106.76 76.608 107.448 77.456C108.136 78.304 108.48 79.512 108.48 81.08V89H105.408V81.392C105.408 80.496 105.248 79.824 104.928 79.376C104.608 78.928 104.08 78.704 103.344 78.704C103.024 78.704 102.712 78.752 102.408 78.848C102.12 78.928 101.856 79.056 101.616 79.232C101.392 79.392 101.208 79.6 101.064 79.856C100.92 80.096 100.848 80.384 100.848 80.72V89H97.776V71.24ZM111.885 89V76.472H114.957V79.064H115.077C115.157 78.728 115.277 78.408 115.437 78.104C115.613 77.784 115.837 77.504 116.109 77.264C116.381 77.024 116.701 76.832 117.069 76.688C117.453 76.544 117.893 76.472 118.389 76.472H119.061V79.376H118.101C117.061 79.376 116.277 79.528 115.749 79.832C115.221 80.136 114.957 80.632 114.957 81.32V89H111.885ZM126.254 89.288C125.326 89.288 124.494 89.136 123.758 88.832C123.038 88.512 122.422 88.072 121.91 87.512C121.414 86.936 121.03 86.248 120.758 85.448C120.486 84.632 120.35 83.72 120.35 82.712C120.35 81.72 120.478 80.824 120.734 80.024C121.006 79.224 121.39 78.544 121.886 77.984C122.382 77.408 122.99 76.968 123.71 76.664C124.43 76.344 125.246 76.184 126.158 76.184C127.134 76.184 127.982 76.352 128.702 76.688C129.422 77.024 130.014 77.48 130.478 78.056C130.942 78.632 131.286 79.304 131.51 80.072C131.75 80.824 131.87 81.632 131.87 82.496V83.504H123.542V83.816C123.542 84.728 123.798 85.464 124.31 86.024C124.822 86.568 125.582 86.84 126.59 86.84C127.358 86.84 127.982 86.68 128.462 86.36C128.958 86.04 129.398 85.632 129.782 85.136L131.438 86.984C130.926 87.704 130.222 88.272 129.326 88.688C128.446 89.088 127.422 89.288 126.254 89.288ZM126.206 78.488C125.39 78.488 124.742 78.76 124.262 79.304C123.782 79.848 123.542 80.552 123.542 81.416V81.608H128.678V81.392C128.678 80.528 128.462 79.832 128.03 79.304C127.614 78.76 127.006 78.488 126.206 78.488ZM134.573 76.472H137.645V78.536H137.741C137.965 77.816 138.389 77.248 139.013 76.832C139.637 76.4 140.365 76.184 141.197 76.184C142.797 76.184 144.013 76.752 144.845 77.888C145.693 79.008 146.117 80.616 146.117 82.712C146.117 84.824 145.693 86.448 144.845 87.584C144.013 88.72 142.797 89.288 141.197 89.288C140.365 89.288 139.637 89.072 139.013 88.64C138.405 88.208 137.981 87.632 137.741 86.912H137.645V93.8H134.573V76.472ZM140.213 86.744C141.013 86.744 141.661 86.48 142.157 85.952C142.653 85.424 142.901 84.712 142.901 83.816V81.656C142.901 80.76 142.653 80.048 142.157 79.52C141.661 78.976 141.013 78.704 140.213 78.704C139.477 78.704 138.861 78.888 138.365 79.256C137.885 79.624 137.645 80.112 137.645 80.72V84.704C137.645 85.36 137.885 85.864 138.365 86.216C138.861 86.568 139.477 86.744 140.213 86.744ZM148.964 76.472H152.036V78.536H152.132C152.356 77.816 152.78 77.248 153.404 76.832C154.028 76.4 154.756 76.184 155.588 76.184C157.188 76.184 158.404 76.752 159.236 77.888C160.084 79.008 160.508 80.616 160.508 82.712C160.508 84.824 160.084 86.448 159.236 87.584C158.404 88.72 157.188 89.288 155.588 89.288C154.756 89.288 154.028 89.072 153.404 88.64C152.796 88.208 152.372 87.632 152.132 86.912H152.036V93.8H148.964V76.472ZM154.604 86.744C155.404 86.744 156.052 86.48 156.548 85.952C157.044 85.424 157.292 84.712 157.292 83.816V81.656C157.292 80.76 157.044 80.048 156.548 79.52C156.052 78.976 155.404 78.704 154.604 78.704C153.868 78.704 153.252 78.888 152.756 79.256C152.276 79.624 152.036 80.112 152.036 80.72V84.704C152.036 85.36 152.276 85.864 152.756 86.216C153.252 86.568 153.868 86.744 154.604 86.744ZM170.842 86.912H170.722C170.61 87.232 170.458 87.536 170.266 87.824C170.09 88.096 169.858 88.344 169.57 88.568C169.298 88.792 168.962 88.968 168.562 89.096C168.178 89.224 167.73 89.288 167.218 89.288C165.922 89.288 164.93 88.864 164.242 88.016C163.554 87.168 163.21 85.96 163.21 84.392V76.472H166.282V84.08C166.282 84.944 166.45 85.608 166.786 86.072C167.122 86.52 167.658 86.744 168.394 86.744C168.698 86.744 168.994 86.704 169.282 86.624C169.586 86.544 169.85 86.424 170.074 86.264C170.298 86.088 170.482 85.88 170.626 85.64C170.77 85.384 170.842 85.088 170.842 84.752V76.472H173.914V89H170.842V86.912ZM177.464 89V76.472H180.536V79.064H180.656C180.736 78.728 180.856 78.408 181.016 78.104C181.192 77.784 181.416 77.504 181.688 77.264C181.96 77.024 182.28 76.832 182.648 76.688C183.032 76.544 183.472 76.472 183.968 76.472H184.64V79.376H183.68C182.64 79.376 181.856 79.528 181.328 79.832C180.8 80.136 180.536 80.632 180.536 81.32V89H177.464Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/hunathing-vestra.svg b/libs/application/templates/financial-aid/src/svg/hunathing-vestra.svg deleted file mode 100644 index 358deb4ec77d..000000000000 --- a/libs/application/templates/financial-aid/src/svg/hunathing-vestra.svg +++ /dev/null @@ -1,14 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M81.3572 16C81.2765 17.2109 81.3572 45.9495 81.3572 56.1211C81.3572 82.115 48.5015 96 48.0979 96C48.0979 96 15 82.0343 15 56.1211V16H81.3572Z" fill="#038FD9"/> -<path d="M28.7229 25.7679C28.6422 25.2835 29.3687 24.8799 30.2567 24.7992C30.9026 24.7992 31.8713 23.4268 32.6785 23.4268C33.3243 23.3461 33.6473 23.2654 35.2618 23.2654C37.1185 23.2654 37.1992 23.3461 37.845 23.4268C38.4101 23.5076 39.1367 23.7497 39.7017 24.4763C40.0247 24.8799 39.9439 25.1221 40.4283 25.1221C41.397 25.2028 41.7199 25.1221 41.7199 25.7679C41.7199 26.333 41.0741 26.8981 41.3163 26.9788C41.5585 27.1403 41.7199 26.1715 42.2043 26.1715C42.6079 26.1715 42.8501 26.4944 44.3839 26.4944C45.5948 26.4944 46.9671 26.0101 48.5817 26.0101C49.4697 26.0101 51.0035 26.4137 52.2144 26.4137C52.618 26.4137 54.9591 26.0101 55.282 26.0101C57.1387 25.6872 58.1074 25.6872 58.3496 25.6872C60.7714 25.8486 62.3859 26.8173 63.1124 27.3017C64.6462 28.2704 65.9379 30.2079 66.5837 31.8224C67.2295 33.4369 67.7946 35.0515 67.8753 36.1009C67.956 36.7467 67.7946 37.4733 67.5524 37.4733C67.2295 37.4733 67.3102 36.9889 66.9066 37.1503C66.8259 37.3118 66.6644 37.3925 66.6644 37.554C66.6644 37.7962 66.9066 37.9576 66.9066 38.2805C66.9066 38.6842 66.5837 38.6034 66.503 39.0071C66.4222 39.33 66.5837 39.5721 66.4222 39.8143C66.2608 40.1372 65.9379 40.3794 65.9379 40.8638C65.9379 41.1867 66.0186 41.8325 66.0993 42.1554C66.2608 43.0434 67.5524 43.6892 67.5524 45.0615C67.5524 45.7074 65.9379 47.5641 65.2921 48.1292C64.727 48.6942 64.4041 49.0979 63.6775 49.0979C63.4353 49.0979 63.5968 48.8557 63.3546 48.6942C63.1124 48.6135 63.1932 49.0979 62.7895 49.0171C62.2244 48.9364 62.6281 48.1292 62.3859 48.2099C61.8208 48.3713 62.4666 49.0979 61.8208 49.0171C61.4172 49.0171 61.3365 48.6135 61.3365 48.3713C61.3365 48.1292 61.6594 47.887 61.4172 47.8062C61.0943 47.887 61.0135 48.0484 61.0135 48.4521C61.0135 48.5328 60.8521 48.5328 60.8521 48.5328C60.6099 48.5328 60.6099 48.2906 60.6099 47.9677C60.6099 47.2412 61.4979 47.0797 61.9823 46.5954C62.7895 45.7881 62.6281 44.9808 62.6281 44.9001C62.1437 44.2543 61.9015 43.8506 61.3365 43.447C61.0135 43.2048 59.8834 42.6397 59.5605 42.4783C58.3496 41.9939 58.1881 41.2674 57.3809 39.895H57.3001C57.3001 40.218 56.735 40.1372 56.4121 40.1372C55.7663 40.1372 56.17 40.0565 55.7663 39.9758C55.6856 40.0565 55.4434 39.895 55.4434 40.0565C55.4434 40.218 55.7663 40.4601 55.4434 40.5409C55.282 40.5409 55.2012 40.5409 55.0398 40.5409C54.5554 40.5409 54.3132 40.3794 53.8289 40.3794C53.6674 40.3794 53.9903 40.783 53.7482 40.8638C53.0216 40.9445 52.4565 41.3481 51.73 41.1867C51.73 41.1867 51.4071 41.5903 51.0842 41.5903C50.7613 41.5903 50.7613 41.7518 50.4384 41.671C48.6624 41.2674 49.3889 40.7023 48.9853 40.6216C48.8238 40.6216 48.7431 40.7023 48.7431 40.783L48.9046 41.671C48.9046 41.9132 48.4202 41.671 48.5009 42.6398C48.5009 42.8012 48.5817 42.8012 48.5817 42.9627C48.5817 43.2048 48.2588 43.0434 48.2588 43.2856C48.178 44.0928 48.0166 43.9314 47.9359 44.5772C47.8551 45.0615 47.6129 45.9495 47.5322 46.999C47.3708 48.2906 45.7562 47.887 45.7562 47.887C45.5141 47.887 45.6755 48.1292 45.1104 48.1292C44.949 48.1292 44.8682 48.1292 44.7068 48.1292C44.3839 48.1292 43.9803 47.9677 43.6573 47.9677C43.4152 47.9677 43.3344 47.6448 43.4152 47.4833C43.6573 47.0797 43.5766 46.999 43.3344 47.0797C42.6886 47.2412 43.3344 48.2099 42.6079 47.9677C42.1235 47.9677 42.6886 46.9183 42.5272 46.9183C42.0428 47.0797 42.285 48.2906 41.5585 47.8062C40.8319 47.4026 41.6392 47.0797 41.6392 46.7568C41.6392 46.5146 41.0741 46.9183 41.0741 47.0797C41.0741 47.0797 41.1548 47.887 40.6705 47.6448C40.4283 47.5641 40.509 46.7568 40.509 46.7568C40.5897 46.4339 41.397 45.9495 41.8006 45.7881C42.5272 45.3845 43.0923 45.3037 43.0923 44.6579C43.0923 44.335 43.3344 42.9627 42.9308 42.0747C42.5272 41.0252 42.5272 41.0252 42.1235 40.2987C41.8006 39.7336 41.4777 40.3794 41.1548 39.895L40.5897 39.4107C40.3476 39.5721 40.1861 39.5721 39.9439 39.1685C38.8945 37.0696 37.9258 36.5045 37.6029 36.1009C36.7149 35.0515 36.6341 34.89 35.8269 33.7598C35.5847 33.4369 36.069 33.2755 36.2305 33.114C36.6341 32.7911 36.957 32.7104 37.4414 32.3875C37.5221 32.3068 37.5221 32.226 37.4414 32.226C37.0378 32.226 36.6341 32.4682 36.3112 32.4682C35.8269 32.4682 35.4232 31.9031 35.504 31.5802C35.5847 31.0959 36.3112 31.6609 36.3112 30.6922C36.3112 30.2886 35.8269 29.9657 35.3425 29.9657C34.9389 29.9657 34.3738 30.0464 34.3738 30.6922C34.3738 31.4995 35.0196 31.1766 35.0196 31.5802C35.0196 32.0646 34.5352 32.4682 34.0509 32.3875C33.1629 32.3068 32.9207 31.8224 31.7905 30.9344C31.3869 30.6115 31.2255 30.5308 30.9026 30.0464C30.6604 29.7235 30.4989 29.4813 30.4989 29.0777C30.4989 28.7548 30.3375 28.5933 30.3375 28.2704C30.2567 27.7861 30.3375 27.3824 30.3375 26.9788C30.3375 26.8981 29.8531 27.0595 29.6109 26.8981C29.1266 26.7366 28.8037 26.4137 28.7229 25.7679ZM36.3112 28.7548C36.3112 28.9162 36.4727 29.0777 36.6341 29.0777C36.7956 29.0777 36.8763 28.8355 37.0378 28.8355C37.2799 28.8355 37.3607 28.997 37.7643 28.8355C38.0065 28.7548 37.9258 28.5126 38.0065 28.2704C38.0065 28.0282 38.3294 27.9475 38.3294 27.7053C38.3294 27.6246 38.2487 27.4632 38.2487 27.4632C37.4414 28.0282 37.2799 27.5439 36.8763 28.2704C36.7149 28.5126 36.392 28.4319 36.3112 28.7548ZM33.4858 28.5933C33.4858 28.7548 33.5665 28.9162 33.728 28.9162C33.8894 28.9162 34.1316 28.7548 34.1316 28.5933C34.1316 28.4319 33.728 28.109 33.4858 27.8668C33.0822 27.5439 32.9207 27.221 32.3556 27.221H32.0327V27.3824C32.4364 27.7053 32.2749 28.109 32.6785 28.5126H33.1629C33.2436 28.5126 33.3243 28.5126 33.4858 28.5933Z" fill="white"/> -<path d="M35.5859 32.7104C35.6666 32.7104 35.6666 32.7911 35.6666 32.8718C35.6666 32.9526 35.6666 33.0333 35.5859 33.0333H34.9401C34.8594 33.0333 34.8594 32.9526 34.8594 32.8718C34.8594 32.7911 34.8594 32.7104 34.8594 32.7104C34.9401 32.7104 35.1823 32.7104 35.263 32.7104C35.4245 32.7104 35.4245 32.7104 35.5859 32.7104Z" fill="white"/> -<path d="M38.2492 37.8769C38.5721 37.8769 38.8143 38.2805 38.9757 38.6034C39.2986 39.0071 39.2986 39.1685 39.6215 39.5721C39.8637 39.8951 39.9445 40.1372 40.1866 40.4601C40.3481 40.7023 40.4288 41.106 40.5903 41.106C40.7517 41.106 40.8324 40.8638 40.9939 40.8638C41.1553 40.8638 41.1553 41.0252 41.2361 41.1867C41.3168 41.3481 41.3975 41.5096 41.6397 41.5903C41.9626 41.671 42.3662 41.4289 42.2855 42.0747C42.2855 42.4783 41.8012 42.3976 41.3975 42.3169C40.4288 42.2361 39.9445 42.3169 39.9445 42.3169C39.6215 42.3169 37.2805 42.8819 36.8768 43.0434C36.6347 43.1241 35.6659 43.6085 35.1816 44.0928C35.0201 44.2543 34.8587 44.4157 34.6165 44.4157C34.3743 44.4157 34.2129 44.1736 34.2129 43.9314C34.2129 43.8507 34.2936 43.7699 34.2936 43.6892C34.2936 43.6085 34.2129 43.5277 34.1321 43.5277C33.8092 43.5277 34.1321 44.0928 33.5671 44.1736C33.4056 44.1736 33.2441 44.0121 33.2441 43.8507C33.2441 43.6085 33.4863 43.447 33.4863 43.2048C33.4863 43.1241 33.4056 43.0434 33.3249 43.0434C33.002 43.0434 33.0827 43.6892 32.7598 43.6892C32.5176 43.6892 32.2754 43.6085 32.2754 43.2856C32.2754 42.8012 32.8405 42.8819 32.8405 42.6398C32.8405 42.4783 32.8405 42.4783 32.6791 42.4783C32.3562 42.4783 32.1947 43.1241 31.9525 42.9627C31.7103 42.8012 31.9525 42.2361 32.0332 42.0747C32.2754 41.8325 32.8405 41.0252 33.5671 40.5409C33.89 40.3794 34.455 40.0565 34.6165 39.9758C35.0201 39.8143 35.5045 39.6529 35.9889 39.4107C37.3612 38.8456 38.0877 37.8769 38.2492 37.8769Z" fill="white"/> -<path d="M53.6672 42.4783C53.6672 42.3169 53.6672 42.1554 53.6672 41.994C53.5865 41.3481 54.0709 41.5096 54.3938 41.4289C54.8781 41.3481 54.8781 41.0252 55.201 41.0252C55.2818 41.0252 56.0083 41.0252 56.089 41.0252C56.4119 41.0252 56.3312 40.7023 57.1385 40.7023C57.5421 40.7023 57.6228 41.1867 57.865 41.5096C58.1072 41.9132 58.4301 42.1554 58.4301 42.6398C58.4301 43.0434 58.1879 43.2049 58.1072 43.6085C58.0265 43.9314 57.9457 44.0928 57.865 44.4158C57.7036 44.9808 57.6228 45.1423 57.6228 45.7074V47.7255C57.6228 48.1292 57.7036 48.2099 56.7348 48.2906C56.4927 48.2906 56.4119 48.2906 56.1698 48.2906C56.0083 48.2906 55.6854 48.3713 55.6047 48.3713C55.4432 48.3713 55.2818 48.2906 55.1203 48.2906C54.9589 48.2906 54.8781 48.3714 54.6359 48.2906C54.2323 48.1292 54.5552 47.9677 54.313 47.7255C54.2323 47.6448 54.2323 47.4834 54.0709 47.5641C53.748 47.8063 54.0709 48.3713 53.6672 48.3713C53.5058 48.3713 53.2636 48.3714 53.2636 48.2099C53.2636 48.0484 53.2636 47.887 53.2636 47.8063C53.2636 47.7255 53.0214 47.8063 52.9407 47.8063C52.7792 47.8063 52.9407 48.0484 52.86 48.2099C52.7792 48.3714 52.6985 48.3713 52.5371 48.3713C51.972 48.2906 52.2142 47.887 52.0527 47.8063C51.8913 47.7255 51.8912 48.2906 51.4876 48.2099C51.2454 48.2099 51.084 47.887 51.084 47.6448C51.084 47.4026 51.4876 46.5954 52.4563 46.0303C52.6178 45.9496 53.0214 45.7881 53.1021 45.7074C53.2636 45.5459 53.5865 45.0616 53.6672 45.0616C53.9094 44.7387 53.9094 44.4965 53.9094 44.1736C53.9094 43.8507 53.8287 44.0121 53.748 43.447C53.8287 42.9627 53.6672 43.0434 53.6672 42.4783Z" fill="white"/> -<path d="M28.7229 52.4077C28.6422 51.9233 29.3687 51.5197 30.2567 51.439C30.9026 51.439 31.8713 50.0666 32.6785 50.0666C33.3243 49.9859 33.6473 49.9052 35.2618 49.9052C37.1992 49.9052 37.1992 49.9859 37.845 50.0666C38.4101 50.1473 39.1367 50.3895 39.7017 51.116C40.0247 51.5197 39.9439 51.7619 40.4283 51.7619C41.397 51.8426 41.7199 51.7619 41.7199 52.4077C41.7199 52.9728 41.0741 53.5378 41.3163 53.6186C41.5585 53.78 41.7199 52.8113 42.2043 52.8113C42.6079 52.8113 42.8501 53.1342 44.3839 53.1342C45.5948 53.1342 46.9671 52.6499 48.5817 52.6499C49.4697 52.6499 51.0035 53.0535 52.2144 53.0535C52.618 53.0535 54.9591 52.6499 55.282 52.6499C57.1387 52.3269 58.1074 52.3269 58.3496 52.3269C60.7714 52.4884 62.3859 53.4571 63.1124 53.9415C64.6462 54.9102 65.9379 56.8476 66.5837 58.4622C67.2295 60.0767 67.7946 61.6912 67.8753 62.7407C67.956 63.3865 67.7946 64.113 67.5524 64.113C67.2295 64.113 67.3102 63.6287 66.9066 63.7901C66.8259 63.9516 66.6644 64.0323 66.6644 64.1937C66.6644 64.4359 66.9066 64.5974 66.9066 64.9203C66.9066 65.3239 66.5837 65.2432 66.503 65.6468C66.4222 65.9697 66.5837 66.2119 66.4222 66.4541C66.2608 66.777 65.9379 67.0192 65.9379 67.5035C65.9379 67.8264 66.0186 68.4723 66.0993 68.7952C66.2608 69.6832 67.5524 70.329 67.5524 71.7013C67.5524 72.3471 65.9379 74.2038 65.2921 74.7689C64.727 75.334 64.4041 75.7376 63.6775 75.7376C63.4353 75.7376 63.5968 75.4955 63.3546 75.334C63.1124 75.2533 63.1932 75.7376 62.7895 75.6569C62.2244 75.5762 62.6281 74.7689 62.3859 74.8497C61.8208 75.0111 62.4666 75.7376 61.8208 75.6569C61.4172 75.6569 61.3365 75.2533 61.3365 75.0111C61.3365 74.7689 61.6594 74.5267 61.4172 74.446C61.0943 74.5267 61.0135 74.6882 61.0135 75.0918C61.0135 75.1726 60.8521 75.1726 60.8521 75.1726C60.6099 75.1726 60.6099 74.9304 60.6099 74.6075C60.6099 73.8809 61.4979 73.7195 61.9823 73.2351C62.7895 72.4279 62.6281 71.6206 62.6281 71.5399C62.1437 70.8941 61.9015 70.4904 61.3365 70.0868C61.0135 69.8446 59.8834 69.2795 59.5605 69.1181C58.3496 68.6337 58.1881 67.9072 57.3809 66.5348H57.3001C57.3001 66.8577 56.735 66.777 56.4121 66.777C55.7663 66.777 56.17 66.6963 55.7663 66.6155C55.6856 66.6963 55.4434 66.6155 55.4434 66.6963C55.4434 66.8577 55.7663 67.0999 55.4434 67.1806C55.282 67.1806 55.2012 67.1806 55.0398 67.1806C54.5554 67.1806 54.3132 67.0192 53.8289 67.0192C53.6674 67.0192 53.9903 67.4228 53.7482 67.5035C53.0216 67.5843 52.4565 67.9879 51.73 67.8264C51.73 67.8264 51.4071 68.2301 51.0842 68.2301C50.7613 68.2301 50.7613 68.3915 50.4384 68.3108C48.6624 67.9072 49.3889 67.3421 48.9853 67.2614C48.8238 67.2614 48.7431 67.3421 48.7431 67.4228L48.9046 68.3108C48.9046 68.553 48.4202 68.3108 48.5009 69.2795C48.5009 69.441 48.5817 69.441 48.5817 69.6024C48.5817 69.8446 48.2588 69.6832 48.2588 69.9253C48.178 70.7326 48.0166 70.5711 47.9359 71.217C47.8551 71.7013 47.6129 72.5893 47.5322 73.6388C47.3708 74.9304 45.7562 74.5267 45.7562 74.5267C45.5141 74.5267 45.6755 74.7689 45.1104 74.7689C44.949 74.7689 44.8682 74.7689 44.7068 74.7689C44.3839 74.7689 43.9803 74.6075 43.6573 74.6075C43.4152 74.6075 43.3344 74.2846 43.4152 74.1231C43.6573 73.7195 43.5766 73.6388 43.3344 73.7195C42.6886 73.8809 43.3344 74.8497 42.6079 74.6075C42.1235 74.6075 42.6886 73.558 42.5272 73.558C42.0428 73.7195 42.285 74.9304 41.5585 74.446C40.8319 74.0424 41.6392 73.7195 41.6392 73.3966C41.6392 73.1544 41.0741 73.558 41.0741 73.7195C41.0741 73.7195 41.1548 74.5267 40.6705 74.2846C40.4283 74.2038 40.509 73.3966 40.509 73.3966C40.5897 73.0737 41.397 72.5893 41.8006 72.4279C42.5272 72.0242 43.0923 71.9435 43.0923 71.2977C43.0923 70.9748 43.3344 69.6024 42.9308 68.7144C42.5272 67.665 42.5272 67.665 42.1235 66.9384C41.8006 66.3734 41.4777 67.0192 41.1548 66.5348L40.5897 66.0505C40.3476 66.2119 40.1861 66.2119 39.9439 65.8083C38.8945 63.7094 37.9258 63.1443 37.6029 62.7407C36.7149 61.6912 36.6341 61.5298 35.8269 60.3996C35.5847 60.0767 36.069 59.9152 36.2305 59.7538C36.6341 59.4309 36.957 59.3502 37.4414 59.0272C37.5221 58.9465 37.5221 58.8658 37.4414 58.8658C37.0378 58.8658 36.6341 59.108 36.3112 59.108C35.8269 59.108 35.4232 58.5429 35.504 58.22C35.5847 57.7356 36.3112 58.3007 36.3112 57.332C36.3112 56.9284 35.8269 56.6055 35.3425 56.6055C34.9389 56.6055 34.3738 56.6862 34.3738 57.332C34.3738 58.1393 35.0196 57.8164 35.0196 58.22C35.0196 58.7043 34.5352 59.108 34.0509 59.0272C33.1629 58.9465 32.9207 58.4622 31.7905 57.5742C31.3869 57.2513 31.2255 57.1705 30.9026 56.6862C30.6604 56.3633 30.4989 56.1211 30.4989 55.7175C30.4989 55.3946 30.3375 55.2331 30.3375 54.9102C30.2567 54.4258 30.3375 54.0222 30.3375 53.6186C30.3375 53.5378 29.8531 53.6993 29.6109 53.5378C29.1266 53.3764 28.7229 53.0535 28.7229 52.4077ZM36.2305 55.3946C36.2305 55.556 36.392 55.7175 36.5534 55.7175C36.7149 55.7175 36.7956 55.4753 36.957 55.4753C37.1992 55.4753 37.2799 55.6367 37.6836 55.4753C37.9258 55.3946 37.845 55.1524 37.9258 54.9102C37.9258 54.668 38.2487 54.5873 38.2487 54.3451C38.2487 54.2644 38.1679 54.1029 38.1679 54.1029C37.3607 54.668 37.1992 54.1837 36.7956 54.9102C36.6341 55.1524 36.3112 55.0716 36.2305 55.3946ZM33.4051 55.2331C33.4051 55.3946 33.4858 55.556 33.6473 55.556C33.8087 55.556 34.0509 55.3946 34.0509 55.2331C34.0509 55.0716 33.6473 54.7487 33.4051 54.5066C33.0014 54.1837 32.84 53.8608 32.2749 53.8608H31.952V54.0222C32.3556 54.3451 32.1942 54.7487 32.5978 55.1524H33.0822C33.1629 55.1524 33.2436 55.1524 33.4051 55.2331Z" fill="white"/> -<path d="M35.5859 59.3502C35.6666 59.3502 35.6666 59.4309 35.6666 59.5116C35.6666 59.5923 35.6666 59.6731 35.5859 59.6731H34.9401C34.8594 59.6731 34.8594 59.5923 34.8594 59.5116C34.8594 59.4309 34.8594 59.3502 34.8594 59.3502C34.9401 59.3502 35.1823 59.3502 35.263 59.3502C35.3437 59.3502 35.4245 59.3502 35.5859 59.3502Z" fill="white"/> -<path d="M38.2492 64.5167C38.5721 64.5167 38.8143 64.9203 38.9757 65.2432C39.2986 65.6468 39.2986 65.8083 39.6215 66.2119C39.8637 66.5348 39.9445 66.777 40.1866 67.0999C40.3481 67.3421 40.4288 67.7457 40.5903 67.7457C40.7517 67.7457 40.8324 67.5035 40.9939 67.5035C41.1553 67.5035 41.1553 67.665 41.2361 67.8264C41.3168 67.9879 41.3975 68.1494 41.6397 68.2301C41.9626 68.3108 42.3662 68.0686 42.2855 68.7144C42.2855 69.1181 41.8012 69.0373 41.3975 68.9566C40.4288 68.8759 39.9445 68.9566 39.9445 68.9566C39.6215 68.9566 37.2805 69.5217 36.8768 69.6832C36.6347 69.7639 35.6659 70.2483 35.1816 70.7326C35.0201 70.8941 34.8587 71.0555 34.6165 71.0555C34.3743 71.0555 34.2129 70.8133 34.2129 70.5712C34.2129 70.4904 34.2936 70.4097 34.2936 70.329C34.2936 70.2483 34.2129 70.1675 34.1321 70.1675C33.8092 70.1675 34.1321 70.7326 33.5671 70.8133C33.4056 70.8133 33.2441 70.6519 33.2441 70.4904C33.2441 70.2482 33.4863 70.0868 33.4863 69.8446C33.4863 69.7639 33.4056 69.6832 33.3249 69.6832C33.002 69.6832 33.0827 70.329 32.7598 70.329C32.5176 70.329 32.2754 70.2483 32.2754 69.9253C32.2754 69.441 32.8405 69.5217 32.8405 69.2795C32.8405 69.1181 32.8405 69.1181 32.6791 69.1181C32.3562 69.1181 32.1947 69.7639 31.9525 69.6024C31.7103 69.441 31.9525 68.8759 32.0332 68.7144C32.2754 68.4723 32.8405 67.665 33.5671 67.1806C33.89 67.0192 34.455 66.6963 34.6165 66.6156C35.0201 66.4541 35.5045 66.2926 35.9889 66.0505C37.3612 65.4047 38.007 64.5167 38.2492 64.5167Z" fill="white"/> -<path d="M53.5865 69.118C53.5865 68.9566 53.5865 68.7951 53.5865 68.6337C53.5058 67.9879 53.9901 68.1493 54.313 68.0686C54.7974 67.9879 54.7974 67.665 55.1203 67.665C55.201 67.665 55.9276 67.665 56.0083 67.665C56.3312 67.7457 56.3312 67.4228 57.1385 67.4228C57.5421 67.4228 57.6228 67.9071 57.865 68.2301C58.1072 68.6337 58.4301 68.8759 58.4301 69.3602C58.4301 69.7639 58.1879 69.9253 58.1072 70.3289C58.0265 70.6519 57.9457 70.8133 57.865 71.1362C57.7036 71.7013 57.6228 71.8628 57.6228 72.4278V74.446C57.6228 74.8496 57.7036 74.9304 56.7348 75.0111C56.4927 75.0111 56.4119 75.0111 56.1698 75.0111C56.0083 75.0111 55.6854 75.0918 55.6047 75.0918C55.4432 75.0918 55.2818 75.0111 55.1203 75.0111C54.9589 75.0111 54.8781 75.0918 54.6359 75.0111C54.2323 74.8496 54.5552 74.6882 54.313 74.446C54.2323 74.3653 54.2323 74.2038 54.0709 74.2845C53.748 74.5267 54.0709 75.0918 53.6672 75.0918C53.5058 75.0918 53.2636 75.0918 53.2636 74.9304C53.2636 74.7689 53.2636 74.6075 53.2636 74.5267C53.2636 74.446 53.0214 74.5267 52.9407 74.5267C52.7792 74.5267 52.9407 74.7689 52.86 74.9304C52.7792 75.0918 52.6985 75.0918 52.5371 75.0918C51.972 75.0111 52.2142 74.6075 52.0527 74.5267C51.8913 74.446 51.8912 75.0111 51.4876 74.9304C51.2454 74.9304 51.084 74.6075 51.084 74.3653C51.084 74.1231 51.4876 73.3158 52.4563 72.7507C52.6178 72.67 53.0214 72.5086 53.1021 72.4278C53.2636 72.2664 53.5865 71.782 53.6672 71.782C53.9094 71.4591 53.9094 71.2169 53.9094 70.894C53.9094 70.5711 53.8287 70.7326 53.748 70.1675C53.748 69.6024 53.6672 69.6831 53.5865 69.118Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.12 67.92H101.136V75H97.968V58.248H101.136V65.112H108.12V58.248H111.288V75H108.12V67.92ZM120.57 61.056L118.722 60.168L121.002 55.68L123.594 56.952L120.57 61.056ZM122.514 72.912H122.394C122.282 73.232 122.13 73.536 121.938 73.824C121.762 74.096 121.53 74.344 121.242 74.568C120.97 74.792 120.634 74.968 120.234 75.096C119.85 75.224 119.402 75.288 118.89 75.288C117.594 75.288 116.602 74.864 115.914 74.016C115.226 73.168 114.882 71.96 114.882 70.392V62.472H117.954V70.08C117.954 70.944 118.122 71.608 118.458 72.072C118.794 72.52 119.33 72.744 120.066 72.744C120.37 72.744 120.666 72.704 120.954 72.624C121.258 72.544 121.522 72.424 121.746 72.264C121.97 72.088 122.154 71.88 122.298 71.64C122.442 71.384 122.514 71.088 122.514 70.752V62.472H125.586V75H122.514V72.912ZM129.135 75V62.472H132.207V64.56H132.327C132.583 63.888 132.983 63.328 133.527 62.88C134.087 62.416 134.855 62.184 135.831 62.184C137.127 62.184 138.119 62.608 138.807 63.456C139.495 64.304 139.839 65.512 139.839 67.08V75H136.767V67.392C136.767 66.496 136.607 65.824 136.287 65.376C135.967 64.928 135.439 64.704 134.703 64.704C134.383 64.704 134.071 64.752 133.767 64.848C133.479 64.928 133.215 65.056 132.975 65.232C132.751 65.392 132.567 65.6 132.423 65.856C132.279 66.096 132.207 66.384 132.207 66.72V75H129.135ZM152.461 75C151.789 75 151.253 74.808 150.853 74.424C150.469 74.024 150.229 73.496 150.133 72.84H149.989C149.781 73.656 149.357 74.272 148.717 74.688C148.077 75.088 147.285 75.288 146.341 75.288C145.061 75.288 144.077 74.952 143.389 74.28C142.701 73.608 142.357 72.712 142.357 71.592C142.357 70.296 142.821 69.336 143.749 68.712C144.677 68.072 145.997 67.752 147.709 67.752H149.845V66.84C149.845 66.136 149.661 65.592 149.293 65.208C148.925 64.824 148.333 64.632 147.517 64.632C146.797 64.632 146.213 64.792 145.765 65.112C145.333 65.416 144.965 65.784 144.661 66.216L142.837 64.584C143.301 63.864 143.917 63.288 144.685 62.856C145.453 62.408 146.469 62.184 147.733 62.184C149.429 62.184 150.717 62.568 151.597 63.336C152.477 64.104 152.917 65.208 152.917 66.648V72.552H154.165V75H152.461ZM147.373 73.056C148.061 73.056 148.645 72.904 149.125 72.6C149.605 72.296 149.845 71.848 149.845 71.256V69.6H147.877C146.277 69.6 145.477 70.112 145.477 71.136V71.544C145.477 72.056 145.637 72.44 145.957 72.696C146.293 72.936 146.765 73.056 147.373 73.056ZM156.651 57.24H159.723V64.536H159.819C160.043 63.816 160.467 63.248 161.091 62.832C161.715 62.4 162.443 62.184 163.275 62.184C164.875 62.184 166.091 62.752 166.923 63.888C167.771 65.008 168.195 66.616 168.195 68.712C168.195 70.824 167.771 72.448 166.923 73.584C166.091 74.72 164.875 75.288 163.275 75.288C162.443 75.288 161.715 75.072 161.091 74.64C160.483 74.208 160.059 73.632 159.819 72.912H159.723V79.8H156.651V57.24ZM162.291 72.744C163.091 72.744 163.739 72.48 164.235 71.952C164.731 71.424 164.979 70.712 164.979 69.816V67.656C164.979 66.76 164.731 66.048 164.235 65.52C163.739 64.976 163.091 64.704 162.291 64.704C161.555 64.704 160.939 64.888 160.443 65.256C159.963 65.624 159.723 66.112 159.723 66.72V70.704C159.723 71.36 159.963 71.864 160.443 72.216C160.939 72.568 161.555 72.744 162.291 72.744ZM172.578 60.648C171.938 60.648 171.474 60.504 171.186 60.216C170.914 59.928 170.778 59.56 170.778 59.112V58.632C170.778 58.184 170.914 57.816 171.186 57.528C171.474 57.24 171.938 57.096 172.578 57.096C173.202 57.096 173.658 57.24 173.946 57.528C174.234 57.816 174.378 58.184 174.378 58.632V59.112C174.378 59.56 174.234 59.928 173.946 60.216C173.658 60.504 173.202 60.648 172.578 60.648ZM171.042 62.472H174.114V75H171.042V62.472ZM177.674 75V62.472H180.746V64.56H180.866C181.122 63.888 181.522 63.328 182.066 62.88C182.626 62.416 183.394 62.184 184.37 62.184C185.666 62.184 186.658 62.608 187.346 63.456C188.034 64.304 188.378 65.512 188.378 67.08V75H185.306V67.392C185.306 66.496 185.146 65.824 184.826 65.376C184.506 64.928 183.978 64.704 183.242 64.704C182.922 64.704 182.61 64.752 182.306 64.848C182.018 64.928 181.754 65.056 181.514 65.232C181.29 65.392 181.106 65.6 180.962 65.856C180.818 66.096 180.746 66.384 180.746 66.72V75H177.674ZM203.088 76.056C203.088 76.712 202.968 77.288 202.728 77.784C202.504 78.296 202.128 78.72 201.6 79.056C201.072 79.392 200.392 79.648 199.56 79.824C198.728 80 197.712 80.088 196.512 80.088C195.456 80.088 194.56 80.016 193.824 79.872C193.088 79.744 192.48 79.552 192 79.296C191.536 79.056 191.2 78.752 190.992 78.384C190.784 78.016 190.68 77.6 190.68 77.136C190.68 76.432 190.872 75.88 191.256 75.48C191.656 75.096 192.208 74.848 192.912 74.736V74.472C192.4 74.344 192 74.096 191.712 73.728C191.44 73.344 191.304 72.896 191.304 72.384C191.304 72.064 191.368 71.784 191.496 71.544C191.624 71.288 191.792 71.072 192 70.896C192.224 70.72 192.472 70.576 192.744 70.464C193.016 70.336 193.304 70.24 193.608 70.176V70.08C192.84 69.728 192.264 69.24 191.88 68.616C191.512 67.992 191.328 67.264 191.328 66.432C191.328 65.152 191.768 64.128 192.648 63.36C193.528 62.576 194.816 62.184 196.512 62.184C196.896 62.184 197.272 62.208 197.64 62.256C198.024 62.304 198.376 62.384 198.696 62.496V62.088C198.696 60.872 199.288 60.264 200.472 60.264H202.416V62.616H199.752V62.952C200.408 63.32 200.896 63.8 201.216 64.392C201.536 64.984 201.696 65.664 201.696 66.432C201.696 67.696 201.256 68.712 200.376 69.48C199.512 70.248 198.224 70.632 196.512 70.632C195.776 70.632 195.136 70.56 194.592 70.416C194.352 70.528 194.144 70.68 193.968 70.872C193.792 71.048 193.704 71.272 193.704 71.544C193.704 72.168 194.248 72.48 195.336 72.48H198.696C200.232 72.48 201.344 72.8 202.032 73.44C202.736 74.064 203.088 74.936 203.088 76.056ZM200.208 76.416C200.208 76.016 200.048 75.704 199.728 75.48C199.408 75.256 198.856 75.144 198.072 75.144H193.8C193.368 75.464 193.152 75.896 193.152 76.44C193.152 76.92 193.352 77.296 193.752 77.568C194.152 77.84 194.832 77.976 195.792 77.976H197.328C198.336 77.976 199.064 77.848 199.512 77.592C199.976 77.336 200.208 76.944 200.208 76.416ZM196.512 68.544C198.016 68.544 198.768 67.904 198.768 66.624V66.216C198.768 64.936 198.016 64.296 196.512 64.296C195.008 64.296 194.256 64.936 194.256 66.216V66.624C194.256 67.904 195.008 68.544 196.512 68.544ZM213.222 75L209.046 62.472H212.07L213.822 67.872L215.046 72.336H215.214L216.438 67.872L218.142 62.472H221.07L216.87 75H213.222ZM227.996 75.288C227.068 75.288 226.236 75.136 225.5 74.832C224.78 74.512 224.164 74.072 223.652 73.512C223.156 72.936 222.772 72.248 222.5 71.448C222.228 70.632 222.092 69.72 222.092 68.712C222.092 67.72 222.22 66.824 222.476 66.024C222.748 65.224 223.132 64.544 223.628 63.984C224.124 63.408 224.732 62.968 225.452 62.664C226.172 62.344 226.988 62.184 227.9 62.184C228.876 62.184 229.724 62.352 230.444 62.688C231.164 63.024 231.756 63.48 232.22 64.056C232.684 64.632 233.028 65.304 233.252 66.072C233.492 66.824 233.612 67.632 233.612 68.496V69.504H225.284V69.816C225.284 70.728 225.54 71.464 226.052 72.024C226.564 72.568 227.324 72.84 228.332 72.84C229.1 72.84 229.724 72.68 230.204 72.36C230.7 72.04 231.14 71.632 231.524 71.136L233.18 72.984C232.668 73.704 231.964 74.272 231.068 74.688C230.188 75.088 229.164 75.288 227.996 75.288ZM227.948 64.488C227.132 64.488 226.484 64.76 226.004 65.304C225.524 65.848 225.284 66.552 225.284 67.416V67.608H230.42V67.392C230.42 66.528 230.204 65.832 229.772 65.304C229.356 64.76 228.748 64.488 227.948 64.488ZM240.419 75.288C239.219 75.288 238.211 75.088 237.395 74.688C236.579 74.272 235.859 73.704 235.235 72.984L237.107 71.16C237.571 71.688 238.075 72.104 238.619 72.408C239.179 72.712 239.819 72.864 240.539 72.864C241.275 72.864 241.803 72.736 242.123 72.48C242.459 72.224 242.627 71.872 242.627 71.424C242.627 71.056 242.507 70.768 242.267 70.56C242.043 70.336 241.651 70.184 241.091 70.104L239.843 69.936C238.483 69.76 237.443 69.376 236.723 68.784C236.019 68.176 235.667 67.296 235.667 66.144C235.667 65.536 235.779 64.992 236.003 64.512C236.227 64.016 236.547 63.6 236.963 63.264C237.379 62.912 237.875 62.648 238.451 62.472C239.043 62.28 239.699 62.184 240.419 62.184C241.027 62.184 241.563 62.232 242.027 62.328C242.507 62.408 242.939 62.536 243.323 62.712C243.707 62.872 244.059 63.08 244.379 63.336C244.699 63.576 245.011 63.848 245.315 64.152L243.515 65.952C243.147 65.568 242.707 65.248 242.195 64.992C241.683 64.736 241.123 64.608 240.515 64.608C239.843 64.608 239.355 64.728 239.051 64.968C238.763 65.208 238.619 65.52 238.619 65.904C238.619 66.32 238.739 66.64 238.979 66.864C239.235 67.072 239.659 67.224 240.251 67.32L241.523 67.488C244.227 67.872 245.579 69.104 245.579 71.184C245.579 71.792 245.451 72.352 245.195 72.864C244.955 73.36 244.611 73.792 244.163 74.16C243.715 74.512 243.171 74.792 242.531 75C241.907 75.192 241.203 75.288 240.419 75.288ZM252.016 75C250.96 75 250.152 74.728 249.592 74.184C249.048 73.624 248.776 72.832 248.776 71.808V64.92H246.928V62.472H247.888C248.352 62.472 248.664 62.368 248.824 62.16C249 61.936 249.088 61.608 249.088 61.176V59.04H251.848V62.472H254.416V64.92H251.848V72.552H254.224V75H252.016ZM257.081 75V62.472H260.153V65.064H260.273C260.353 64.728 260.473 64.408 260.633 64.104C260.809 63.784 261.033 63.504 261.305 63.264C261.577 63.024 261.897 62.832 262.265 62.688C262.649 62.544 263.089 62.472 263.585 62.472H264.257V65.376H263.297C262.257 65.376 261.473 65.528 260.945 65.832C260.417 66.136 260.153 66.632 260.153 67.32V75H257.081ZM275.461 75C274.789 75 274.253 74.808 273.853 74.424C273.469 74.024 273.229 73.496 273.133 72.84H272.989C272.781 73.656 272.357 74.272 271.717 74.688C271.077 75.088 270.285 75.288 269.341 75.288C268.061 75.288 267.077 74.952 266.389 74.28C265.701 73.608 265.357 72.712 265.357 71.592C265.357 70.296 265.821 69.336 266.749 68.712C267.677 68.072 268.997 67.752 270.709 67.752H272.845V66.84C272.845 66.136 272.661 65.592 272.293 65.208C271.925 64.824 271.333 64.632 270.517 64.632C269.797 64.632 269.213 64.792 268.765 65.112C268.333 65.416 267.965 65.784 267.661 66.216L265.837 64.584C266.301 63.864 266.917 63.288 267.685 62.856C268.453 62.408 269.469 62.184 270.733 62.184C272.429 62.184 273.717 62.568 274.597 63.336C275.477 64.104 275.917 65.208 275.917 66.648V72.552H277.165V75H275.461ZM270.373 73.056C271.061 73.056 271.645 72.904 272.125 72.6C272.605 72.296 272.845 71.848 272.845 71.256V69.6H270.877C269.277 69.6 268.477 70.112 268.477 71.136V71.544C268.477 72.056 268.637 72.44 268.957 72.696C269.293 72.936 269.765 73.056 270.373 73.056Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/hunavatnshreppur.svg b/libs/application/templates/financial-aid/src/svg/hunavatnshreppur.svg deleted file mode 100644 index 83d2d2d0e849..000000000000 --- a/libs/application/templates/financial-aid/src/svg/hunavatnshreppur.svg +++ /dev/null @@ -1,22 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M21.875 16.7538H74.464C74.464 38.6022 75.2068 54.6193 73.0893 64.6652C70.3485 78.3205 61.3487 89.0189 48.109 95.2057C24.7204 75.4069 21.875 16.7538 21.875 16.7538Z" fill="#3A5675"/> -<path d="M21.875 16.7538V16.7385H74.48V16.7538C74.48 25.7639 74.6055 33.7804 74.6055 40.7968C74.6055 50.7964 74.3488 58.7625 73.1039 64.6687C70.3631 78.3283 61.3594 89.032 48.1158 95.2198L48.1062 95.223L48.0984 95.217C24.7015 75.409 21.8604 16.7563 21.8594 16.7538V16.7385H21.875V16.7538H21.89C21.891 16.7549 21.9344 17.6687 22.0581 19.3112C22.9215 30.8074 27.6621 77.8778 48.118 95.1918L48.1087 95.2053L48.102 95.1907C61.3377 89.0064 70.3339 78.3123 73.074 64.6623C74.3182 58.7614 74.5735 50.795 74.5735 40.7968C74.5735 33.7804 74.4476 25.7639 74.4476 16.7538H74.4633V16.7695H21.875V16.7538H21.89H21.875Z" fill="black"/> -<path d="M61.5217 27.0195C61.4154 26.5174 60.2832 26.0181 59.4675 25.5666C57.3838 24.6588 56.5226 24.2527 55.5401 24.2303C53.9414 24.2971 53.2171 25.2935 52.4437 25.1096C51.4282 24.9546 50.4767 24.9091 50.1854 25.3603C49.752 26.155 50.2964 27.3121 50.2964 27.3121L47.8422 32.1501C46.8078 33.7641 44.8155 35.6661 43.4799 37.1005C42.5895 38.1502 42.1383 38.7675 41.623 39.5704L56.7573 56.8648C56.7573 56.8648 57.5378 56.8847 58.2173 56.6913C58.7656 56.5014 59.4451 56.0484 59.332 54.5716C59.1735 52.7418 58.5853 47.4422 58.5508 46.3165C58.4939 45.1772 57.8596 42.3699 57.1004 40.5159C56.9532 40.1511 56.364 39.426 56.3192 38.5083C56.1788 37.262 56.1165 35.5911 56.209 34.0461C56.2737 33.2667 56.6367 31.8977 57.2832 31.2078C58.9462 29.9502 60.6157 28.6224 60.6157 28.6224C60.6157 28.6224 61.6181 27.8302 61.5217 27.0195Z" fill="white"/> -<path d="M61.5228 27.0195L61.3041 27.065C61.2973 26.954 61.0353 26.692 60.6448 26.4644C60.2594 26.229 59.7755 25.9911 59.3598 25.7618L59.4686 25.5666L59.3797 25.771C57.291 24.8582 56.4501 24.4703 55.5359 24.4532L55.5412 24.2303L55.5508 24.4532C54.8603 24.4831 54.3493 24.6915 53.9045 24.9059C53.4579 25.1146 53.0841 25.3489 52.6397 25.355L52.3929 25.3265L52.4448 25.1096L52.4103 25.3305C52 25.2672 51.6035 25.2234 51.2671 25.2248C50.7786 25.2192 50.4553 25.3319 50.3732 25.4812L50.1865 25.3603L50.3824 25.4681C50.2829 25.6508 50.242 25.8677 50.242 26.0917C50.242 26.3737 50.3053 26.6596 50.3718 26.8726L50.4617 27.1276L50.4991 27.2175L50.5449 27.316L48.0381 32.2611L48.0328 32.2703C46.9706 33.9213 44.9733 35.8226 43.6435 37.2524L43.481 37.1002L43.652 37.2449C42.7645 38.291 42.3243 38.8948 41.8108 39.6906L41.6241 39.5704L41.7923 39.4243L56.9269 56.7186L56.7584 56.8648L56.7651 56.6422H56.8245C57.0154 56.6436 57.6338 56.6269 58.1569 56.4765L58.218 56.6913L58.1448 56.4808C58.3766 56.3993 58.6134 56.2763 58.7965 56.0441C58.9793 55.8126 59.1208 55.4631 59.1208 54.8831L59.1102 54.5884C58.9512 52.7617 58.3642 47.4764 58.3286 46.3236L58.5512 46.3161L58.3286 46.3271C58.276 45.2366 57.6413 42.42 56.8956 40.5994C56.7832 40.2968 56.1475 39.5185 56.0984 38.5193L56.3203 38.5083L56.0988 38.5342C56.0035 37.6812 55.9427 36.6379 55.9427 35.569C55.9427 35.0567 55.9562 34.5389 55.9875 34.0329V34.0272C56.0618 33.2037 56.4142 31.8234 57.1214 31.0553L57.1346 31.0407L57.1491 31.0297C58.2679 30.1816 59.377 29.3209 60.4763 28.4478L60.6061 28.3348C60.8536 28.115 61.3187 27.5767 61.3055 27.1322L61.3016 27.0461L61.5228 27.0195L61.3041 27.065L61.5228 27.0195L61.744 26.9921L61.7514 27.1322C61.7493 27.6076 61.4869 28.0126 61.2447 28.3077C60.9997 28.6039 60.7611 28.7917 60.7544 28.7974C60.7544 28.7974 59.0856 30.1269 57.4183 31.3853L57.2846 31.2078L57.446 31.3593C56.8618 31.9716 56.487 33.3289 56.4312 34.0653L56.21 34.0461L56.4312 34.06C56.4031 34.5625 56.389 35.0657 56.3889 35.569C56.3889 36.6216 56.4486 37.651 56.5429 38.4837V38.4912L56.5436 38.498C56.5823 39.3332 57.1253 40.0046 57.3091 40.432C58.0786 42.3197 58.713 45.1178 58.7756 46.3058V46.3101C58.8086 47.4099 59.3971 52.7212 59.5554 54.5524L59.5689 54.8838C59.5703 55.536 59.4021 56.0011 59.1475 56.3215C58.8933 56.6425 58.5661 56.8068 58.2906 56.9032L58.2841 56.9046L58.2785 56.9057C57.6797 57.0764 57.0361 57.0881 56.8241 57.0895L56.7512 57.0881L56.6535 57.0852L41.3457 39.5917L41.435 39.4495C41.9562 38.6406 42.4174 38.0112 43.3114 36.9569L43.3138 36.9526L43.3181 36.9487C44.6594 35.5082 46.6481 33.607 47.6555 32.0296L47.8432 32.1501L47.6459 32.0488L50.0976 27.2115L50.2975 27.3121L50.0951 27.4067C50.0898 27.3925 49.7982 26.7844 49.7954 26.0917C49.7954 25.8162 49.8448 25.5235 49.9902 25.2533L49.9945 25.2462L49.9998 25.2394C50.2619 24.8568 50.7401 24.7832 51.2671 24.7779C51.6408 24.7779 52.0554 24.8245 52.4789 24.8878L52.4885 24.8906L52.4978 24.892L52.6397 24.9087C52.9017 24.9151 53.2473 24.7295 53.7096 24.5023C54.1747 24.2808 54.7586 24.039 55.532 24.0077H55.5465C56.5983 24.0333 57.4802 24.4593 59.5586 25.3614L59.5689 25.3671L59.5767 25.371C59.9767 25.5936 60.4667 25.8325 60.8774 26.0843C61.2842 26.3439 61.6405 26.5821 61.7393 26.9732L61.7422 26.9825L61.7436 26.9921L61.5228 27.0195Z" fill="white"/> -<path d="M55.6152 43.6699C55.6152 43.6713 55.414 44.0919 55.1899 44.5915C54.9649 45.0897 54.7145 45.6785 54.6285 45.9659L54.3145 45.8709L54.6324 45.9541C54.4706 46.5504 54.2804 48.4478 54.2825 49.7158C54.2825 49.9828 54.2896 50.2232 54.3063 50.4138L53.9795 50.4437L54.3063 50.4099C54.3714 51.0464 54.6189 53.1578 54.6203 54.2857C54.6189 54.503 54.6125 54.6819 54.5844 54.8355L53.9369 54.7206C53.95 54.6417 53.9607 54.4813 53.9593 54.2857C53.9607 53.2336 53.7168 51.115 53.6506 50.4764V50.4718C53.6303 50.2202 53.6205 49.9679 53.6211 49.7155C53.624 48.3749 53.8053 46.5156 53.9948 45.7842L53.9959 45.7788L53.997 45.7735C54.2132 45.0694 55.0157 43.3946 55.0196 43.385L55.6152 43.6699ZM61.5168 26.8342C61.3226 26.8434 60.8046 26.9921 60.6229 27.422C60.396 28.1929 59.7488 28.8016 59.7488 28.8016C59.7488 28.8016 61.5929 28.3212 61.6999 27.422C61.7077 27.3651 61.856 26.8093 61.5168 26.8342Z" fill="#3A5675"/> -<path d="M61.5173 26.8341V26.8565C61.3296 26.8647 60.8197 27.0141 60.6447 27.4319C60.4168 28.2074 59.765 28.8169 59.7636 28.8183L59.749 28.8016L59.7423 28.7795C59.7433 28.7795 60.202 28.6604 60.6735 28.43C61.1475 28.1985 61.6286 27.8539 61.6791 27.4194C61.683 27.3896 61.7171 27.2537 61.7171 27.1214C61.7157 26.9764 61.6798 26.8565 61.5372 26.8551L61.517 26.8565V26.8341L61.5159 26.8121L61.5372 26.8107C61.7186 26.8107 61.7609 26.9749 61.7609 27.1214C61.7609 27.2598 61.725 27.402 61.7228 27.4265C61.6048 28.351 59.7554 28.819 59.754 28.8233L59.733 28.7856C59.7355 28.7841 60.378 28.1789 60.602 27.4166C60.7916 26.9717 61.3132 26.8224 61.5159 26.8121L61.5173 26.8341ZM55.0977 27.242C55.0977 27.0663 55.3203 26.9241 55.5955 26.9241C55.8714 26.9241 56.094 27.0663 56.094 27.242C56.094 27.4166 55.8714 27.5592 55.5955 27.5592C55.3203 27.5592 55.0977 27.4166 55.0977 27.242Z" fill="#3A5675"/> -<path d="M55.0975 27.2421H55.0762C55.079 27.0451 55.3148 26.9028 55.5953 26.9028C55.8777 26.9028 56.1138 27.0451 56.1148 27.2421C56.1138 27.4387 55.8777 27.5809 55.5953 27.5809C55.3148 27.5809 55.079 27.4387 55.0762 27.2421H55.1199C55.1199 27.3964 55.3251 27.5358 55.595 27.5358C55.8656 27.5358 56.0693 27.396 56.0707 27.2421C56.0697 27.0881 55.8656 26.9473 55.595 26.9473C55.3247 26.9473 55.1199 27.0881 55.1199 27.2421H55.0975Z" fill="#3A5675"/> -<path d="M25.201 73.0448C19.3666 67.0213 21.5929 16.9935 21.5929 16.9935L70.3999 72.5516C70.3999 72.5516 66.0159 84.7793 47.8251 95.8998C31.1214 87.6862 25.201 73.0448 25.201 73.0448Z" fill="white"/> -<path d="M25.2023 73.0448L25.1578 73.0889C23.4777 71.3454 22.4842 66.1021 21.8876 59.457C21.2948 52.8136 21.1152 44.7772 21.1152 37.4909C21.1152 26.367 21.532 16.991 21.532 16.991L21.5384 16.837L70.4713 72.5359L70.4595 72.5708C70.4553 72.5814 66.0635 84.8237 47.8595 95.9527L47.83 95.9694L47.7994 95.9548C31.0736 87.7313 25.1475 73.0753 25.145 73.0689L25.2023 73.0448L25.1578 73.0889L25.2023 73.0448L25.2592 73.0224C25.2606 73.0252 25.6268 73.9334 26.4433 75.4329C28.8861 79.9285 35.342 89.6931 47.8542 95.845L47.8265 95.8994L47.7945 95.8478C56.8835 90.2897 62.5205 84.4582 65.8861 80.0177C67.5694 77.7953 68.6834 75.9221 69.3775 74.6061C70.0712 73.2898 70.3415 72.5302 70.3429 72.5288L70.4012 72.5509L70.355 72.59L21.5483 17.034L21.5942 16.9935L21.6557 16.9963C21.6557 17.0031 21.5519 19.34 21.4466 23.0739C21.3439 26.8075 21.239 31.9322 21.239 37.4909C21.239 44.7743 21.4168 52.8076 22.0092 59.4459C22.5994 66.0807 23.6171 71.3284 25.2467 73.0025L25.2549 73.0121L25.2588 73.022L25.2023 73.0448Z" fill="white"/> -<path d="M22.2109 17.4014L58.7145 88.1815C58.7145 88.1815 51.3529 94.1201 47.7637 95.11C43.8658 94.1826 36.6881 88.1815 36.6881 88.1815L22.2109 17.4014Z" fill="#3A5675"/> -<path d="M22.2115 17.4013L22.2257 17.3939L58.735 88.185L58.7247 88.1928C58.7232 88.1928 51.3638 94.1321 47.7685 95.1256L47.7642 95.1263L47.7603 95.1256C43.8553 94.194 36.6794 88.1928 36.6794 88.1928L36.6755 88.1889L22.1973 17.4045L22.2257 17.3942L22.2115 17.4013L22.2268 17.3978L36.7039 88.1786L36.6886 88.1815L36.6986 88.1694C36.7028 88.1737 38.4925 89.6689 40.7739 91.286C43.0553 92.9007 45.8238 94.6335 47.7681 95.0957L47.7639 95.1103L47.76 95.0957C49.5507 94.6015 52.2869 92.8702 54.5772 91.2612C56.8643 89.6532 58.7019 88.1722 58.7055 88.1697L58.7147 88.1818L58.7015 88.1886L22.1987 17.4081L22.2115 17.4013L22.2268 17.3978L22.2115 17.4013Z" fill="#0080B0"/> -<path d="M28.411 70.5817L28.4239 70.587C28.6134 70.6663 30.7255 71.4788 33.3579 71.4759C35.3147 71.4774 37.211 70.9394 38.6052 70.3879C39.1706 70.166 39.7244 69.9155 40.2643 69.6372C40.461 69.5352 40.6117 69.452 40.7102 69.3951L40.8201 69.33L40.8486 69.3126L41.4694 68.9296L42.0465 69.3759L42.0664 69.3905C42.1973 69.4886 42.9387 70.0248 44.0022 70.523C45.0657 71.0251 46.4433 71.4788 47.8247 71.4759C49.3772 71.4788 50.8365 70.9607 51.9014 70.428C52.3338 70.2103 52.7527 69.9665 53.1556 69.698C53.2999 69.5988 53.4126 69.5192 53.4855 69.4658L53.5638 69.404L53.5798 69.3922L54.1466 68.9314L54.777 69.3016L54.8076 69.3183C55.1785 69.5405 58.8193 71.4905 62.4935 71.4759C63.8987 71.4759 65.1201 71.2491 65.9807 71.0226C66.317 70.9351 66.6495 70.8331 66.977 70.7168L67.2298 70.6204L67.2881 70.5966L67.2991 70.5909L67.3742 70.7609L67.2974 70.5909H67.2988L67.3738 70.7609L67.297 70.5909L68.1501 72.5167C68.0683 72.5501 65.7538 73.5763 62.4931 73.5792C60.1584 73.5778 57.9886 72.958 56.3846 72.3524C54.7831 71.7433 53.7473 71.1381 53.7113 71.1168L54.2426 70.209L54.9079 71.0251C54.8656 71.0596 54.0968 71.6808 52.8412 72.3084C51.5871 72.9352 49.8359 73.576 47.824 73.5788C45.8715 73.576 44.1313 72.9335 42.8636 72.3126C41.5971 71.6868 40.7963 71.0699 40.7586 71.0393L41.4029 70.2086L41.9544 71.1047C41.8726 71.1406 38.0252 73.5614 33.3572 73.5788C30.0993 73.576 27.6729 72.5512 27.5957 72.5228L28.411 70.5817Z" fill="white"/> -<path d="M47.8268 95.2426L47.5622 95.8916C47.5103 95.8692 40.9065 93.1699 34.2785 86.7937C27.6515 80.4252 20.9961 70.3246 21 55.6448V16H74.6522V55.6448C74.6561 70.3246 68.0032 80.4252 61.3751 86.7937C54.746 93.1699 48.1418 95.8688 48.0917 95.8916L47.8268 96L47.5622 95.8916L47.8268 95.2426L47.5622 94.5923L47.6266 94.5659C48.342 94.2623 54.7816 91.4066 61.0057 85.1921C67.2323 78.9698 73.2455 69.4399 73.2498 55.6451V17.4028H22.4021V55.6448C22.4067 69.8829 28.815 79.5825 35.2503 85.781C38.4676 88.8777 41.6888 91.0873 44.1017 92.5189C45.0505 93.0829 46.0211 93.6096 47.0111 94.0976C47.3606 94.2676 47.6334 94.3931 47.8176 94.4753L48.0266 94.5652L48.0914 94.5915L47.8268 95.2426L47.5622 94.5923L47.8268 95.2426Z" fill="#3A5675"/> -<path d="M55.3423 43.4174C55.3423 43.4174 55.1105 44.8629 54.8161 45.6128C54.6692 46.7115 56.7344 43.1081 56.7344 43.1081L55.2801 41.3757L53.7344 46.4797C53.9662 45.0485 55.3423 43.4174 55.3423 43.4174Z" fill="white"/> -<path d="M55.343 43.4174L55.3587 43.4202C55.3576 43.4202 55.1272 44.8657 54.8314 45.6202L54.8168 45.6128L54.8328 45.6156L54.825 45.7098L54.8651 45.8069C54.9999 45.8154 55.4821 45.1338 55.9059 44.4578C56.1867 44.0113 56.4584 43.5591 56.7209 43.1016L56.7355 43.1084L56.7248 43.1191L55.2879 41.4091L53.75 46.485L53.7195 46.4772C53.9538 45.0396 55.3317 43.4089 55.3317 43.4074L55.3686 43.3648L55.3594 43.4202L55.343 43.4174L55.3548 43.4281C55.3519 43.4291 53.9797 45.0584 53.7508 46.4821L53.7348 46.4797L53.7188 46.4754L55.2737 41.3444L56.7533 43.1066L56.7483 43.1155C56.7426 43.1184 55.2076 45.8243 54.8648 45.8375L54.793 45.7091L54.8022 45.6113V45.6099L54.8036 45.6071C55.0963 44.86 55.327 43.417 55.3281 43.4156L55.343 43.4174L55.3548 43.4281L55.343 43.4174Z" fill="white"/> -<path d="M41.6711 36.5671L59.6831 57.0685L58.1018 58.4592L40.0898 37.956" fill="#3A5675"/> -<path d="M33.3594 80.1372C35.3151 80.1379 37.2128 79.5999 38.6056 79.0502C39.1711 78.8276 39.7252 78.5771 40.2658 78.2996C40.4614 78.1964 40.6118 78.1129 40.7117 78.0553L40.8216 77.9906L40.8504 77.9746L41.4705 77.5909L42.0483 78.0371L42.0672 78.0517C42.1991 78.1509 42.9409 78.6875 44.0044 79.1853C45.0662 79.686 46.444 80.139 47.8251 80.1368C49.3801 80.139 50.8383 79.6223 51.9018 79.0886C52.3348 78.8719 52.7536 78.6282 53.156 78.3589C53.3032 78.2608 53.4145 78.1815 53.4856 78.1271L53.5653 78.0677L53.5813 78.0531L54.1481 77.593L54.7774 77.9614L54.8094 77.9802C55.1789 78.2014 58.8211 80.1535 62.4967 80.1368V82.2422C60.1588 82.2387 57.9908 81.6207 56.3879 81.0133C54.7838 80.4035 53.7498 79.7987 53.7125 79.7777L54.2466 78.8695L54.9086 79.686C54.8678 79.7201 54.0993 80.3417 52.8449 80.9707C51.5893 81.5958 49.8395 82.2383 47.8251 82.2419C45.8733 82.2365 44.1331 81.5944 42.8655 80.9732C41.5989 80.3495 40.7992 79.7318 40.7601 79.7034L41.4044 78.8695L41.9573 79.7653C41.873 79.8022 38.0267 82.2234 33.3597 82.2422V80.1372H33.3594Z" fill="white"/> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M108.12 53.92H101.136V61H97.968V44.248H101.136V51.112H108.12V44.248H111.288V61H108.12V53.92ZM120.57 47.056L118.722 46.168L121.002 41.68L123.594 42.952L120.57 47.056ZM122.514 58.912H122.394C122.282 59.232 122.13 59.536 121.938 59.824C121.762 60.096 121.53 60.344 121.242 60.568C120.97 60.792 120.634 60.968 120.234 61.096C119.85 61.224 119.402 61.288 118.89 61.288C117.594 61.288 116.602 60.864 115.914 60.016C115.226 59.168 114.882 57.96 114.882 56.392V48.472H117.954V56.08C117.954 56.944 118.122 57.608 118.458 58.072C118.794 58.52 119.33 58.744 120.066 58.744C120.37 58.744 120.666 58.704 120.954 58.624C121.258 58.544 121.522 58.424 121.746 58.264C121.97 58.088 122.154 57.88 122.298 57.64C122.442 57.384 122.514 57.088 122.514 56.752V48.472H125.586V61H122.514V58.912ZM129.135 61V48.472H132.207V50.56H132.327C132.583 49.888 132.983 49.328 133.527 48.88C134.087 48.416 134.855 48.184 135.831 48.184C137.127 48.184 138.119 48.608 138.807 49.456C139.495 50.304 139.839 51.512 139.839 53.08V61H136.767V53.392C136.767 52.496 136.607 51.824 136.287 51.376C135.967 50.928 135.439 50.704 134.703 50.704C134.383 50.704 134.071 50.752 133.767 50.848C133.479 50.928 133.215 51.056 132.975 51.232C132.751 51.392 132.567 51.6 132.423 51.856C132.279 52.096 132.207 52.384 132.207 52.72V61H129.135ZM152.461 61C151.789 61 151.253 60.808 150.853 60.424C150.469 60.024 150.229 59.496 150.133 58.84H149.989C149.781 59.656 149.357 60.272 148.717 60.688C148.077 61.088 147.285 61.288 146.341 61.288C145.061 61.288 144.077 60.952 143.389 60.28C142.701 59.608 142.357 58.712 142.357 57.592C142.357 56.296 142.821 55.336 143.749 54.712C144.677 54.072 145.997 53.752 147.709 53.752H149.845V52.84C149.845 52.136 149.661 51.592 149.293 51.208C148.925 50.824 148.333 50.632 147.517 50.632C146.797 50.632 146.213 50.792 145.765 51.112C145.333 51.416 144.965 51.784 144.661 52.216L142.837 50.584C143.301 49.864 143.917 49.288 144.685 48.856C145.453 48.408 146.469 48.184 147.733 48.184C149.429 48.184 150.717 48.568 151.597 49.336C152.477 50.104 152.917 51.208 152.917 52.648V58.552H154.165V61H152.461ZM147.373 59.056C148.061 59.056 148.645 58.904 149.125 58.6C149.605 58.296 149.845 57.848 149.845 57.256V55.6H147.877C146.277 55.6 145.477 56.112 145.477 57.136V57.544C145.477 58.056 145.637 58.44 145.957 58.696C146.293 58.936 146.765 59.056 147.373 59.056ZM159.128 61L154.952 48.472H157.976L159.728 53.872L160.952 58.336H161.12L162.344 53.872L164.048 48.472H166.976L162.776 61H159.128ZM178.031 61C177.359 61 176.823 60.808 176.423 60.424C176.039 60.024 175.799 59.496 175.703 58.84H175.559C175.351 59.656 174.927 60.272 174.287 60.688C173.647 61.088 172.855 61.288 171.911 61.288C170.631 61.288 169.647 60.952 168.959 60.28C168.271 59.608 167.927 58.712 167.927 57.592C167.927 56.296 168.391 55.336 169.319 54.712C170.247 54.072 171.567 53.752 173.279 53.752H175.415V52.84C175.415 52.136 175.231 51.592 174.863 51.208C174.495 50.824 173.903 50.632 173.087 50.632C172.367 50.632 171.783 50.792 171.335 51.112C170.903 51.416 170.535 51.784 170.231 52.216L168.407 50.584C168.871 49.864 169.487 49.288 170.255 48.856C171.023 48.408 172.039 48.184 173.303 48.184C174.999 48.184 176.287 48.568 177.167 49.336C178.047 50.104 178.487 51.208 178.487 52.648V58.552H179.735V61H178.031ZM172.943 59.056C173.631 59.056 174.215 58.904 174.695 58.6C175.175 58.296 175.415 57.848 175.415 57.256V55.6H173.447C171.847 55.6 171.047 56.112 171.047 57.136V57.544C171.047 58.056 171.207 58.44 171.527 58.696C171.863 58.936 172.335 59.056 172.943 59.056ZM186.04 61C184.984 61 184.176 60.728 183.616 60.184C183.072 59.624 182.8 58.832 182.8 57.808V50.92H180.952V48.472H181.912C182.376 48.472 182.688 48.368 182.848 48.16C183.024 47.936 183.112 47.608 183.112 47.176V45.04H185.872V48.472H188.44V50.92H185.872V58.552H188.248V61H186.04ZM191.104 61V48.472H194.176V50.56H194.296C194.552 49.888 194.952 49.328 195.496 48.88C196.056 48.416 196.824 48.184 197.8 48.184C199.096 48.184 200.088 48.608 200.776 49.456C201.464 50.304 201.808 51.512 201.808 53.08V61H198.736V53.392C198.736 52.496 198.576 51.824 198.256 51.376C197.936 50.928 197.408 50.704 196.672 50.704C196.352 50.704 196.04 50.752 195.736 50.848C195.448 50.928 195.184 51.056 194.944 51.232C194.72 51.392 194.536 51.6 194.392 51.856C194.248 52.096 194.176 52.384 194.176 52.72V61H191.104ZM209.318 61.288C208.118 61.288 207.11 61.088 206.294 60.688C205.478 60.272 204.758 59.704 204.134 58.984L206.006 57.16C206.47 57.688 206.974 58.104 207.518 58.408C208.078 58.712 208.718 58.864 209.438 58.864C210.174 58.864 210.702 58.736 211.022 58.48C211.358 58.224 211.526 57.872 211.526 57.424C211.526 57.056 211.406 56.768 211.166 56.56C210.942 56.336 210.55 56.184 209.99 56.104L208.742 55.936C207.382 55.76 206.342 55.376 205.622 54.784C204.918 54.176 204.566 53.296 204.566 52.144C204.566 51.536 204.678 50.992 204.902 50.512C205.126 50.016 205.446 49.6 205.862 49.264C206.278 48.912 206.774 48.648 207.35 48.472C207.942 48.28 208.598 48.184 209.318 48.184C209.926 48.184 210.462 48.232 210.926 48.328C211.406 48.408 211.838 48.536 212.222 48.712C212.606 48.872 212.958 49.08 213.278 49.336C213.598 49.576 213.91 49.848 214.214 50.152L212.414 51.952C212.046 51.568 211.606 51.248 211.094 50.992C210.582 50.736 210.022 50.608 209.414 50.608C208.742 50.608 208.254 50.728 207.95 50.968C207.662 51.208 207.518 51.52 207.518 51.904C207.518 52.32 207.638 52.64 207.878 52.864C208.134 53.072 208.558 53.224 209.15 53.32L210.422 53.488C213.126 53.872 214.478 55.104 214.478 57.184C214.478 57.792 214.35 58.352 214.094 58.864C213.854 59.36 213.51 59.792 213.062 60.16C212.614 60.512 212.07 60.792 211.43 61C210.806 61.192 210.102 61.288 209.318 61.288ZM216.736 55.216V52.168H223.6V55.216H216.736ZM97.776 71.24H100.848V78.56H100.968C101.224 77.888 101.624 77.328 102.168 76.88C102.728 76.416 103.496 76.184 104.472 76.184C105.768 76.184 106.76 76.608 107.448 77.456C108.136 78.304 108.48 79.512 108.48 81.08V89H105.408V81.392C105.408 80.496 105.248 79.824 104.928 79.376C104.608 78.928 104.08 78.704 103.344 78.704C103.024 78.704 102.712 78.752 102.408 78.848C102.12 78.928 101.856 79.056 101.616 79.232C101.392 79.392 101.208 79.6 101.064 79.856C100.92 80.096 100.848 80.384 100.848 80.72V89H97.776V71.24ZM111.885 89V76.472H114.957V79.064H115.077C115.157 78.728 115.277 78.408 115.437 78.104C115.613 77.784 115.837 77.504 116.109 77.264C116.381 77.024 116.701 76.832 117.069 76.688C117.453 76.544 117.893 76.472 118.389 76.472H119.061V79.376H118.101C117.061 79.376 116.277 79.528 115.749 79.832C115.221 80.136 114.957 80.632 114.957 81.32V89H111.885ZM126.254 89.288C125.326 89.288 124.494 89.136 123.758 88.832C123.038 88.512 122.422 88.072 121.91 87.512C121.414 86.936 121.03 86.248 120.758 85.448C120.486 84.632 120.35 83.72 120.35 82.712C120.35 81.72 120.478 80.824 120.734 80.024C121.006 79.224 121.39 78.544 121.886 77.984C122.382 77.408 122.99 76.968 123.71 76.664C124.43 76.344 125.246 76.184 126.158 76.184C127.134 76.184 127.982 76.352 128.702 76.688C129.422 77.024 130.014 77.48 130.478 78.056C130.942 78.632 131.286 79.304 131.51 80.072C131.75 80.824 131.87 81.632 131.87 82.496V83.504H123.542V83.816C123.542 84.728 123.798 85.464 124.31 86.024C124.822 86.568 125.582 86.84 126.59 86.84C127.358 86.84 127.982 86.68 128.462 86.36C128.958 86.04 129.398 85.632 129.782 85.136L131.438 86.984C130.926 87.704 130.222 88.272 129.326 88.688C128.446 89.088 127.422 89.288 126.254 89.288ZM126.206 78.488C125.39 78.488 124.742 78.76 124.262 79.304C123.782 79.848 123.542 80.552 123.542 81.416V81.608H128.678V81.392C128.678 80.528 128.462 79.832 128.03 79.304C127.614 78.76 127.006 78.488 126.206 78.488ZM134.573 76.472H137.645V78.536H137.741C137.965 77.816 138.389 77.248 139.013 76.832C139.637 76.4 140.365 76.184 141.197 76.184C142.797 76.184 144.013 76.752 144.845 77.888C145.693 79.008 146.117 80.616 146.117 82.712C146.117 84.824 145.693 86.448 144.845 87.584C144.013 88.72 142.797 89.288 141.197 89.288C140.365 89.288 139.637 89.072 139.013 88.64C138.405 88.208 137.981 87.632 137.741 86.912H137.645V93.8H134.573V76.472ZM140.213 86.744C141.013 86.744 141.661 86.48 142.157 85.952C142.653 85.424 142.901 84.712 142.901 83.816V81.656C142.901 80.76 142.653 80.048 142.157 79.52C141.661 78.976 141.013 78.704 140.213 78.704C139.477 78.704 138.861 78.888 138.365 79.256C137.885 79.624 137.645 80.112 137.645 80.72V84.704C137.645 85.36 137.885 85.864 138.365 86.216C138.861 86.568 139.477 86.744 140.213 86.744ZM148.964 76.472H152.036V78.536H152.132C152.356 77.816 152.78 77.248 153.404 76.832C154.028 76.4 154.756 76.184 155.588 76.184C157.188 76.184 158.404 76.752 159.236 77.888C160.084 79.008 160.508 80.616 160.508 82.712C160.508 84.824 160.084 86.448 159.236 87.584C158.404 88.72 157.188 89.288 155.588 89.288C154.756 89.288 154.028 89.072 153.404 88.64C152.796 88.208 152.372 87.632 152.132 86.912H152.036V93.8H148.964V76.472ZM154.604 86.744C155.404 86.744 156.052 86.48 156.548 85.952C157.044 85.424 157.292 84.712 157.292 83.816V81.656C157.292 80.76 157.044 80.048 156.548 79.52C156.052 78.976 155.404 78.704 154.604 78.704C153.868 78.704 153.252 78.888 152.756 79.256C152.276 79.624 152.036 80.112 152.036 80.72V84.704C152.036 85.36 152.276 85.864 152.756 86.216C153.252 86.568 153.868 86.744 154.604 86.744ZM170.842 86.912H170.722C170.61 87.232 170.458 87.536 170.266 87.824C170.09 88.096 169.858 88.344 169.57 88.568C169.298 88.792 168.962 88.968 168.562 89.096C168.178 89.224 167.73 89.288 167.218 89.288C165.922 89.288 164.93 88.864 164.242 88.016C163.554 87.168 163.21 85.96 163.21 84.392V76.472H166.282V84.08C166.282 84.944 166.45 85.608 166.786 86.072C167.122 86.52 167.658 86.744 168.394 86.744C168.698 86.744 168.994 86.704 169.282 86.624C169.586 86.544 169.85 86.424 170.074 86.264C170.298 86.088 170.482 85.88 170.626 85.64C170.77 85.384 170.842 85.088 170.842 84.752V76.472H173.914V89H170.842V86.912ZM177.464 89V76.472H180.536V79.064H180.656C180.736 78.728 180.856 78.408 181.016 78.104C181.192 77.784 181.416 77.504 181.688 77.264C181.96 77.024 182.28 76.832 182.648 76.688C183.032 76.544 183.472 76.472 183.968 76.472H184.64V79.376H183.68C182.64 79.376 181.856 79.528 181.328 79.832C180.8 80.136 180.536 80.632 180.536 81.32V89H177.464Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/hvalfjardarsveit.svg b/libs/application/templates/financial-aid/src/svg/hvalfjardarsveit.svg deleted file mode 100644 index 121de40264dd..000000000000 --- a/libs/application/templates/financial-aid/src/svg/hvalfjardarsveit.svg +++ /dev/null @@ -1,14 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57925)"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M47.648 16.2542H81.3044C82.321 16.2542 82.3334 16.2542 82.3359 17.2508C82.3359 31.256 82.3783 45.2588 82.3135 59.264C82.3011 61.3968 81.865 63.5371 81.5137 65.6549C80.9968 68.5884 80.0268 71.4237 78.6384 74.0591C76.6763 77.8554 74.023 81.2522 70.8148 84.0753C67.0425 87.4364 62.762 89.9828 58.2124 92.0484C55.2499 93.3988 52.1653 94.4727 49.138 95.6711C48.7043 95.8709 48.2592 96.0448 47.805 96.1919C47.5246 96.2713 47.2264 96.2599 46.9529 96.1595C44.3765 95.0482 41.8027 93.9345 39.2513 92.7684C37.8358 92.1487 36.4559 91.4508 35.1178 90.678C32.5415 89.1357 29.9502 87.5959 27.4985 85.8642C23.9835 83.389 20.9518 80.2906 18.5537 76.7226C16.2546 73.3224 14.6461 69.5035 13.8197 65.483C13.2493 62.5732 12.978 59.6128 13.0099 56.6478C12.9967 43.5022 12.9967 30.3558 13.0099 17.2084C13.0099 16.2492 13.0099 16.2492 14.1261 16.2492H47.648V16.2542Z" fill="white"/> -<path d="M47.648 16.2492H81.3044C82.321 16.2492 82.3334 16.2492 82.3359 17.2458C82.3359 31.2511 82.3783 45.2538 82.3135 59.259C82.3011 61.3918 81.865 63.5321 81.5137 65.65C80.9968 68.5835 80.0268 71.4187 78.6384 74.0541C76.6763 77.8504 74.023 81.2473 70.8148 84.0703C67.0425 87.4314 62.762 89.9779 58.2124 92.0434C55.2499 93.3938 52.1653 94.4677 49.138 95.6662C48.7043 95.8659 48.2592 96.0398 47.805 96.1869C47.5246 96.2663 47.2264 96.255 46.9529 96.1545C44.3765 95.0433 41.8027 93.9295 39.2513 92.7635C37.8358 92.1437 36.4559 91.4459 35.1178 90.673C32.5415 89.1307 29.9502 87.5909 27.4985 85.8593C23.9835 83.384 20.9518 80.2856 18.5537 76.7176C16.2546 73.3174 14.6461 69.4985 13.8197 65.478C13.2493 62.5683 12.978 59.6078 13.0099 56.6429C12.9967 43.4972 12.9967 30.3508 13.0099 17.2035C13.0099 16.2442 13.0099 16.2442 14.1261 16.2442H47.648V16.2492ZM25.5426 53.9669C25.5426 54.8464 25.5625 55.726 25.5426 56.603C25.4554 59.5929 25.7768 62.5106 26.7884 65.341C28.0143 68.8115 30.3262 71.7944 33.3812 73.8473C35.8179 75.5436 38.5889 76.6998 41.5087 77.2383C43.6216 77.6196 45.7569 77.9858 47.8947 78.088C51.7299 78.2384 55.5567 77.6235 59.1517 76.2791C62.5577 75.0333 65.6298 73.2344 68.2236 70.7054C72.2624 66.7612 74.4077 61.92 74.5273 56.2193C74.5796 53.7725 74.171 51.403 73.0597 49.2104C70.7849 44.7256 66.918 42.5479 62.159 41.798C59.7907 41.3955 57.3647 41.4862 55.0331 42.0646C52.828 42.6301 50.8173 43.5371 49.1305 45.1118C47.7875 46.3576 46.6912 47.7877 46.0808 49.5518C45.3118 51.7625 45.1925 54.1472 45.737 56.4236C46.1555 58.2918 47.1698 59.9734 48.6272 61.2149C50.2218 62.6052 52.1403 63.2082 54.1834 63.4175C56.0222 63.6093 57.8237 63.263 59.5852 62.7473C59.9913 62.6277 60.2903 62.4557 60.0711 61.8428C59.6615 60.6668 59.3236 59.4668 59.0595 58.2499C58.9474 57.7516 58.7281 57.7167 58.3369 57.7865C57.6542 57.9086 56.9715 58.0631 56.2814 58.1179C53.6951 58.3147 51.6121 56.9717 51.4178 54.0466C51.305 52.7401 51.6031 51.4311 52.2705 50.3022C52.9379 49.1734 53.9412 48.2813 55.1402 47.7504C57.6069 46.6566 60.1109 46.6466 62.6524 47.4439C66.1232 48.5327 68.0815 50.9745 68.4453 54.5449C68.9187 59.1619 67.4213 63.1733 64.1224 66.4124C61.713 68.7794 58.7854 70.2494 55.5563 71.2037C53.0881 71.913 50.5326 72.2728 47.9644 72.2726C45.5016 72.3355 43.0467 71.9662 40.7114 71.1813C38.3818 70.3591 36.3461 69.1506 34.7316 67.2595C32.3471 64.4689 31.4128 61.1227 31.2807 57.5423C31.1711 54.5524 31.2583 51.5625 31.2583 48.5726C31.2583 47.3592 31.2583 47.3741 32.4867 47.3791C35.0131 47.3941 37.5396 47.3941 40.0661 47.3941C40.8509 47.3941 40.9082 47.3293 40.9107 46.517C40.9107 45.3958 40.8759 44.2746 40.9232 43.1559C40.9481 42.518 40.7463 42.3162 40.1134 42.3212C37.4549 42.3461 34.7989 42.3212 32.1403 42.3212C31.2733 42.3212 31.2608 42.3212 31.2608 41.4491V36.2392C31.2608 35.8132 31.1611 35.5964 30.6728 35.6064C29.1928 35.6338 27.7103 35.6412 26.2303 35.6064C25.6647 35.6064 25.5301 35.8181 25.5351 36.3538C25.5576 38.0979 25.5351 39.8271 25.5476 41.5637C25.5476 42.1343 25.433 42.376 24.7877 42.3586C22.9165 42.3112 21.0503 42.3586 19.1691 42.3337C18.7381 42.3337 18.5811 42.4707 18.5861 42.8943C18.601 44.1924 18.6135 45.488 18.5861 46.7861C18.5861 47.2844 18.7804 47.414 19.2538 47.409C21.1051 47.3866 22.9563 47.4265 24.8076 47.3966C25.3956 47.3966 25.5551 47.6059 25.5401 48.1665C25.5252 50.0975 25.5401 52.0309 25.5426 53.9669Z" fill="#CF2029"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.12 67.92H101.136V75H97.968V58.248H101.136V65.112H108.12V58.248H111.288V75H108.12V67.92ZM117.714 75L113.538 62.472H116.562L118.314 67.872L119.538 72.336H119.706L120.93 67.872L122.634 62.472H125.562L121.362 75H117.714ZM136.617 75C135.945 75 135.409 74.808 135.009 74.424C134.625 74.024 134.385 73.496 134.289 72.84H134.145C133.937 73.656 133.513 74.272 132.873 74.688C132.233 75.088 131.441 75.288 130.497 75.288C129.217 75.288 128.233 74.952 127.545 74.28C126.857 73.608 126.513 72.712 126.513 71.592C126.513 70.296 126.977 69.336 127.905 68.712C128.833 68.072 130.153 67.752 131.865 67.752H134.001V66.84C134.001 66.136 133.817 65.592 133.449 65.208C133.081 64.824 132.489 64.632 131.673 64.632C130.953 64.632 130.369 64.792 129.921 65.112C129.489 65.416 129.121 65.784 128.817 66.216L126.993 64.584C127.457 63.864 128.073 63.288 128.841 62.856C129.609 62.408 130.625 62.184 131.889 62.184C133.585 62.184 134.873 62.568 135.753 63.336C136.633 64.104 137.073 65.208 137.073 66.648V72.552H138.321V75H136.617ZM131.529 73.056C132.217 73.056 132.801 72.904 133.281 72.6C133.761 72.296 134.001 71.848 134.001 71.256V69.6H132.033C130.433 69.6 129.633 70.112 129.633 71.136V71.544C129.633 72.056 129.793 72.44 130.113 72.696C130.449 72.936 130.921 73.056 131.529 73.056ZM143.879 75C142.823 75 142.047 74.736 141.551 74.208C141.055 73.68 140.807 72.936 140.807 71.976V57.24H143.879V72.552H145.535V75H143.879ZM148.486 64.896H146.638V62.472H148.486V60.672C148.486 59.568 148.774 58.72 149.35 58.128C149.942 57.536 150.806 57.24 151.942 57.24H154.126V59.688H151.558V62.472H154.126V64.896H151.558V75H148.486V64.896ZM156.253 62.472H159.325V76.512C159.325 77.568 159.061 78.376 158.533 78.936C158.005 79.512 157.165 79.8 156.013 79.8H154.333V77.352H156.253V62.472ZM157.789 60.648C157.149 60.648 156.685 60.504 156.397 60.216C156.125 59.928 155.989 59.56 155.989 59.112V58.632C155.989 58.184 156.125 57.816 156.397 57.528C156.685 57.24 157.149 57.096 157.789 57.096C158.413 57.096 158.869 57.24 159.157 57.528C159.445 57.816 159.589 58.184 159.589 58.632V59.112C159.589 59.56 159.445 59.928 159.157 60.216C158.869 60.504 158.413 60.648 157.789 60.648ZM172.101 75C171.429 75 170.893 74.808 170.493 74.424C170.109 74.024 169.869 73.496 169.773 72.84H169.629C169.421 73.656 168.997 74.272 168.357 74.688C167.717 75.088 166.925 75.288 165.981 75.288C164.701 75.288 163.717 74.952 163.029 74.28C162.341 73.608 161.997 72.712 161.997 71.592C161.997 70.296 162.461 69.336 163.389 68.712C164.317 68.072 165.637 67.752 167.349 67.752H169.485V66.84C169.485 66.136 169.301 65.592 168.933 65.208C168.565 64.824 167.973 64.632 167.157 64.632C166.437 64.632 165.853 64.792 165.405 65.112C164.973 65.416 164.605 65.784 164.301 66.216L162.477 64.584C162.941 63.864 163.557 63.288 164.325 62.856C165.093 62.408 166.109 62.184 167.373 62.184C169.069 62.184 170.357 62.568 171.237 63.336C172.117 64.104 172.557 65.208 172.557 66.648V72.552H173.805V75H172.101ZM167.013 73.056C167.701 73.056 168.285 72.904 168.765 72.6C169.245 72.296 169.485 71.848 169.485 71.256V69.6H167.517C165.917 69.6 165.117 70.112 165.117 71.136V71.544C165.117 72.056 165.277 72.44 165.597 72.696C165.933 72.936 166.405 73.056 167.013 73.056ZM176.292 75V62.472H179.364V65.064H179.484C179.564 64.728 179.684 64.408 179.844 64.104C180.02 63.784 180.244 63.504 180.516 63.264C180.788 63.024 181.108 62.832 181.476 62.688C181.86 62.544 182.3 62.472 182.796 62.472H183.468V65.376H182.508C181.468 65.376 180.684 65.528 180.156 65.832C179.628 66.136 179.364 66.632 179.364 67.32V75H176.292ZM194.884 58.224L193.108 59.376C194.212 60.528 195.1 61.856 195.772 63.36C196.444 64.864 196.78 66.536 196.78 68.376C196.78 69.56 196.636 70.592 196.348 71.472C196.06 72.336 195.652 73.056 195.124 73.632C194.612 74.192 193.996 74.608 193.276 74.88C192.556 75.152 191.756 75.288 190.876 75.288C189.932 75.288 189.084 75.144 188.332 74.856C187.596 74.552 186.964 74.128 186.436 73.584C185.924 73.04 185.532 72.376 185.26 71.592C184.988 70.808 184.852 69.936 184.852 68.976C184.852 68.08 184.964 67.264 185.188 66.528C185.428 65.792 185.764 65.16 186.196 64.632C186.628 64.104 187.148 63.696 187.756 63.408C188.38 63.12 189.068 62.976 189.82 62.976C190.684 62.976 191.404 63.192 191.98 63.624C192.572 64.04 193.036 64.608 193.372 65.328L193.516 65.256C193.324 64.44 192.98 63.664 192.484 62.928C192.004 62.192 191.42 61.488 190.732 60.816L188.668 62.112L187.564 60.792L189.436 59.664C188.876 59.2 188.284 58.768 187.66 58.368C187.052 57.968 186.436 57.592 185.812 57.24H190.492C190.716 57.368 190.932 57.52 191.14 57.696C191.348 57.856 191.564 58.024 191.788 58.2L193.804 56.928L194.884 58.224ZM190.828 72.936C191.676 72.936 192.348 72.664 192.844 72.12C193.34 71.576 193.588 70.816 193.588 69.84V68.448C193.588 67.472 193.34 66.712 192.844 66.168C192.348 65.624 191.676 65.352 190.828 65.352C189.964 65.352 189.284 65.624 188.788 66.168C188.292 66.712 188.044 67.472 188.044 68.448V69.84C188.044 70.816 188.292 71.576 188.788 72.12C189.284 72.664 189.964 72.936 190.828 72.936ZM208.945 75C208.273 75 207.737 74.808 207.337 74.424C206.953 74.024 206.713 73.496 206.617 72.84H206.473C206.265 73.656 205.841 74.272 205.201 74.688C204.561 75.088 203.769 75.288 202.825 75.288C201.545 75.288 200.561 74.952 199.873 74.28C199.185 73.608 198.841 72.712 198.841 71.592C198.841 70.296 199.305 69.336 200.233 68.712C201.161 68.072 202.481 67.752 204.193 67.752H206.329V66.84C206.329 66.136 206.145 65.592 205.777 65.208C205.409 64.824 204.817 64.632 204.001 64.632C203.281 64.632 202.697 64.792 202.249 65.112C201.817 65.416 201.449 65.784 201.145 66.216L199.321 64.584C199.785 63.864 200.401 63.288 201.169 62.856C201.937 62.408 202.953 62.184 204.217 62.184C205.913 62.184 207.201 62.568 208.081 63.336C208.961 64.104 209.401 65.208 209.401 66.648V72.552H210.649V75H208.945ZM203.857 73.056C204.545 73.056 205.129 72.904 205.609 72.6C206.089 72.296 206.329 71.848 206.329 71.256V69.6H204.361C202.761 69.6 201.961 70.112 201.961 71.136V71.544C201.961 72.056 202.121 72.44 202.441 72.696C202.777 72.936 203.249 73.056 203.857 73.056ZM213.135 75V62.472H216.207V65.064H216.327C216.407 64.728 216.527 64.408 216.687 64.104C216.863 63.784 217.087 63.504 217.359 63.264C217.631 63.024 217.951 62.832 218.319 62.688C218.703 62.544 219.143 62.472 219.639 62.472H220.311V65.376H219.351C218.311 65.376 217.527 65.528 216.999 65.832C216.471 66.136 216.207 66.632 216.207 67.32V75H213.135ZM226.661 75.288C225.461 75.288 224.453 75.088 223.637 74.688C222.821 74.272 222.101 73.704 221.477 72.984L223.349 71.16C223.813 71.688 224.317 72.104 224.861 72.408C225.421 72.712 226.061 72.864 226.781 72.864C227.517 72.864 228.045 72.736 228.365 72.48C228.701 72.224 228.869 71.872 228.869 71.424C228.869 71.056 228.749 70.768 228.509 70.56C228.285 70.336 227.893 70.184 227.333 70.104L226.085 69.936C224.725 69.76 223.685 69.376 222.965 68.784C222.261 68.176 221.909 67.296 221.909 66.144C221.909 65.536 222.021 64.992 222.245 64.512C222.469 64.016 222.789 63.6 223.205 63.264C223.621 62.912 224.117 62.648 224.693 62.472C225.285 62.28 225.941 62.184 226.661 62.184C227.269 62.184 227.805 62.232 228.269 62.328C228.749 62.408 229.181 62.536 229.565 62.712C229.949 62.872 230.301 63.08 230.621 63.336C230.941 63.576 231.253 63.848 231.557 64.152L229.757 65.952C229.389 65.568 228.949 65.248 228.437 64.992C227.925 64.736 227.365 64.608 226.757 64.608C226.085 64.608 225.597 64.728 225.293 64.968C225.005 65.208 224.861 65.52 224.861 65.904C224.861 66.32 224.981 66.64 225.221 66.864C225.477 67.072 225.901 67.224 226.493 67.32L227.765 67.488C230.469 67.872 231.821 69.104 231.821 71.184C231.821 71.792 231.693 72.352 231.437 72.864C231.197 73.36 230.853 73.792 230.405 74.16C229.957 74.512 229.413 74.792 228.773 75C228.149 75.192 227.445 75.288 226.661 75.288ZM236.941 75L232.765 62.472H235.789L237.541 67.872L238.765 72.336H238.933L240.157 67.872L241.861 62.472H244.789L240.589 75H236.941ZM251.715 75.288C250.787 75.288 249.955 75.136 249.219 74.832C248.499 74.512 247.883 74.072 247.371 73.512C246.875 72.936 246.491 72.248 246.219 71.448C245.947 70.632 245.811 69.72 245.811 68.712C245.811 67.72 245.939 66.824 246.195 66.024C246.467 65.224 246.851 64.544 247.347 63.984C247.843 63.408 248.451 62.968 249.171 62.664C249.891 62.344 250.707 62.184 251.619 62.184C252.595 62.184 253.443 62.352 254.163 62.688C254.883 63.024 255.475 63.48 255.939 64.056C256.403 64.632 256.747 65.304 256.971 66.072C257.211 66.824 257.331 67.632 257.331 68.496V69.504H249.003V69.816C249.003 70.728 249.259 71.464 249.771 72.024C250.283 72.568 251.043 72.84 252.051 72.84C252.819 72.84 253.443 72.68 253.923 72.36C254.419 72.04 254.859 71.632 255.243 71.136L256.899 72.984C256.387 73.704 255.683 74.272 254.787 74.688C253.907 75.088 252.883 75.288 251.715 75.288ZM251.667 64.488C250.851 64.488 250.203 64.76 249.723 65.304C249.243 65.848 249.003 66.552 249.003 67.416V67.608H254.139V67.392C254.139 66.528 253.923 65.832 253.491 65.304C253.075 64.76 252.467 64.488 251.667 64.488ZM261.57 60.648C260.93 60.648 260.466 60.504 260.178 60.216C259.906 59.928 259.77 59.56 259.77 59.112V58.632C259.77 58.184 259.906 57.816 260.178 57.528C260.466 57.24 260.93 57.096 261.57 57.096C262.194 57.096 262.65 57.24 262.938 57.528C263.226 57.816 263.37 58.184 263.37 58.632V59.112C263.37 59.56 263.226 59.928 262.938 60.216C262.65 60.504 262.194 60.648 261.57 60.648ZM260.034 62.472H263.106V75H260.034V62.472ZM270.579 75C269.523 75 268.715 74.728 268.155 74.184C267.611 73.624 267.339 72.832 267.339 71.808V64.92H265.491V62.472H266.451C266.915 62.472 267.227 62.368 267.387 62.16C267.563 61.936 267.651 61.608 267.651 61.176V59.04H270.411V62.472H272.979V64.92H270.411V72.552H272.787V75H270.579Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57925"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/hveragerdisbaer.svg b/libs/application/templates/financial-aid/src/svg/hveragerdisbaer.svg deleted file mode 100644 index a4e01eca607f..000000000000 --- a/libs/application/templates/financial-aid/src/svg/hveragerdisbaer.svg +++ /dev/null @@ -1,8 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M76.572 68.5759C76.3369 75.9412 73.2811 82.9148 67.9922 88.0078C62.7032 93.1009 55.6513 96 48.286 96C40.9207 96 33.8688 93.1401 28.5798 88.0078C23.2909 82.8756 20.2351 75.9412 20 68.5759V16H76.572V68.5759Z" fill="#2B5B9B"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M45.2687 60.427C47.3059 59.1341 48.4813 63.6395 49.0689 67.7531C49.4215 70.378 50.7144 72.7678 52.6732 74.5308C54.6321 78.4485 60.1953 82.3271 71.4783 82.2095C67.2863 89.5357 58.2364 94.8638 48.3637 95.0989C38.1776 94.8246 29.206 89.4182 24.6223 81.3868L50.9886 81.3476L46.0523 72.3369C44.8769 76.7639 40.254 80.0548 35.0826 80.094C28.971 80.1332 24.6223 75.2752 24.5439 69.6728C24.4656 64.0705 29.1669 59.8785 35.5136 59.0166C29.0885 56 25.6409 51.5729 25.2883 44.0509C25.4842 35.902 32.6145 29.5553 40.1757 29.3202C49.1081 28.6934 54.9847 35.8628 54.1228 44.2076C55.6899 42.6797 58.1189 40.9951 60.4303 40.9951C65.9543 40.9167 69.2844 44.9128 68.7359 50.045C68.0307 54.7463 64.6223 58.1547 60.9005 58.7032C56.1992 52.9833 53.2217 52.8266 51.0278 53.4142C46.6399 54.7855 45.4646 59.1733 45.2687 60.427Z" fill="#D9EAF8"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M45.2695 60.3879C47.3459 59.2517 48.4429 63.5612 49.0697 67.6748C49.3831 70.3389 50.676 72.7679 52.674 74.5308C62.6642 80.76 69.5203 66.6954 70.4605 61.9941C65.2499 63.9922 62.7034 61.4848 60.9013 58.7032C56.2 52.9442 53.2225 52.8266 51.0286 53.3751C46.6407 54.7855 45.4654 59.1342 45.2695 60.3879Z" fill="#159CD8"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M108.12 67.92H101.136V75H97.968V58.248H101.136V65.112H108.12V58.248H111.288V75H108.12V67.92ZM117.714 75L113.538 62.472H116.562L118.314 67.872L119.538 72.336H119.706L120.93 67.872L122.634 62.472H125.562L121.362 75H117.714ZM132.488 75.288C131.56 75.288 130.728 75.136 129.992 74.832C129.272 74.512 128.656 74.072 128.144 73.512C127.648 72.936 127.264 72.248 126.992 71.448C126.72 70.632 126.584 69.72 126.584 68.712C126.584 67.72 126.712 66.824 126.968 66.024C127.24 65.224 127.624 64.544 128.12 63.984C128.616 63.408 129.224 62.968 129.944 62.664C130.664 62.344 131.48 62.184 132.392 62.184C133.368 62.184 134.216 62.352 134.936 62.688C135.656 63.024 136.248 63.48 136.712 64.056C137.176 64.632 137.52 65.304 137.744 66.072C137.984 66.824 138.104 67.632 138.104 68.496V69.504H129.776V69.816C129.776 70.728 130.032 71.464 130.544 72.024C131.056 72.568 131.816 72.84 132.824 72.84C133.592 72.84 134.216 72.68 134.696 72.36C135.192 72.04 135.632 71.632 136.016 71.136L137.672 72.984C137.16 73.704 136.456 74.272 135.56 74.688C134.68 75.088 133.656 75.288 132.488 75.288ZM132.44 64.488C131.624 64.488 130.976 64.76 130.496 65.304C130.016 65.848 129.776 66.552 129.776 67.416V67.608H134.912V67.392C134.912 66.528 134.696 65.832 134.264 65.304C133.848 64.76 133.24 64.488 132.44 64.488ZM140.807 75V62.472H143.879V65.064H143.999C144.079 64.728 144.199 64.408 144.359 64.104C144.535 63.784 144.759 63.504 145.031 63.264C145.303 63.024 145.623 62.832 145.991 62.688C146.375 62.544 146.815 62.472 147.311 62.472H147.983V65.376H147.023C145.983 65.376 145.199 65.528 144.671 65.832C144.143 66.136 143.879 66.632 143.879 67.32V75H140.807ZM159.187 75C158.515 75 157.979 74.808 157.579 74.424C157.195 74.024 156.955 73.496 156.859 72.84H156.715C156.507 73.656 156.083 74.272 155.443 74.688C154.803 75.088 154.011 75.288 153.067 75.288C151.787 75.288 150.803 74.952 150.115 74.28C149.427 73.608 149.083 72.712 149.083 71.592C149.083 70.296 149.547 69.336 150.475 68.712C151.403 68.072 152.723 67.752 154.435 67.752H156.571V66.84C156.571 66.136 156.387 65.592 156.019 65.208C155.651 64.824 155.059 64.632 154.243 64.632C153.523 64.632 152.939 64.792 152.491 65.112C152.059 65.416 151.691 65.784 151.387 66.216L149.563 64.584C150.027 63.864 150.643 63.288 151.411 62.856C152.179 62.408 153.195 62.184 154.459 62.184C156.155 62.184 157.443 62.568 158.323 63.336C159.203 64.104 159.643 65.208 159.643 66.648V72.552H160.891V75H159.187ZM154.099 73.056C154.787 73.056 155.371 72.904 155.851 72.6C156.331 72.296 156.571 71.848 156.571 71.256V69.6H154.603C153.003 69.6 152.203 70.112 152.203 71.136V71.544C152.203 72.056 152.363 72.44 152.683 72.696C153.019 72.936 153.491 73.056 154.099 73.056ZM174.682 76.056C174.682 76.712 174.562 77.288 174.322 77.784C174.098 78.296 173.722 78.72 173.194 79.056C172.666 79.392 171.986 79.648 171.154 79.824C170.322 80 169.306 80.088 168.106 80.088C167.05 80.088 166.154 80.016 165.418 79.872C164.682 79.744 164.074 79.552 163.594 79.296C163.13 79.056 162.794 78.752 162.586 78.384C162.378 78.016 162.274 77.6 162.274 77.136C162.274 76.432 162.466 75.88 162.85 75.48C163.25 75.096 163.802 74.848 164.506 74.736V74.472C163.994 74.344 163.594 74.096 163.306 73.728C163.034 73.344 162.898 72.896 162.898 72.384C162.898 72.064 162.962 71.784 163.09 71.544C163.218 71.288 163.386 71.072 163.594 70.896C163.818 70.72 164.066 70.576 164.338 70.464C164.61 70.336 164.898 70.24 165.202 70.176V70.08C164.434 69.728 163.858 69.24 163.474 68.616C163.106 67.992 162.922 67.264 162.922 66.432C162.922 65.152 163.362 64.128 164.242 63.36C165.122 62.576 166.41 62.184 168.106 62.184C168.49 62.184 168.866 62.208 169.234 62.256C169.618 62.304 169.97 62.384 170.29 62.496V62.088C170.29 60.872 170.882 60.264 172.066 60.264H174.01V62.616H171.346V62.952C172.002 63.32 172.49 63.8 172.81 64.392C173.13 64.984 173.29 65.664 173.29 66.432C173.29 67.696 172.85 68.712 171.97 69.48C171.106 70.248 169.818 70.632 168.106 70.632C167.37 70.632 166.73 70.56 166.186 70.416C165.946 70.528 165.738 70.68 165.562 70.872C165.386 71.048 165.298 71.272 165.298 71.544C165.298 72.168 165.842 72.48 166.93 72.48H170.29C171.826 72.48 172.938 72.8 173.626 73.44C174.33 74.064 174.682 74.936 174.682 76.056ZM171.802 76.416C171.802 76.016 171.642 75.704 171.322 75.48C171.002 75.256 170.45 75.144 169.666 75.144H165.394C164.962 75.464 164.746 75.896 164.746 76.44C164.746 76.92 164.946 77.296 165.346 77.568C165.746 77.84 166.426 77.976 167.386 77.976H168.922C169.93 77.976 170.658 77.848 171.106 77.592C171.57 77.336 171.802 76.944 171.802 76.416ZM168.106 68.544C169.61 68.544 170.362 67.904 170.362 66.624V66.216C170.362 64.936 169.61 64.296 168.106 64.296C166.602 64.296 165.85 64.936 165.85 66.216V66.624C165.85 67.904 166.602 68.544 168.106 68.544ZM181.379 75.288C180.451 75.288 179.619 75.136 178.883 74.832C178.163 74.512 177.547 74.072 177.035 73.512C176.539 72.936 176.155 72.248 175.883 71.448C175.611 70.632 175.475 69.72 175.475 68.712C175.475 67.72 175.603 66.824 175.859 66.024C176.131 65.224 176.515 64.544 177.011 63.984C177.507 63.408 178.115 62.968 178.835 62.664C179.555 62.344 180.371 62.184 181.283 62.184C182.259 62.184 183.107 62.352 183.827 62.688C184.547 63.024 185.139 63.48 185.603 64.056C186.067 64.632 186.411 65.304 186.635 66.072C186.875 66.824 186.995 67.632 186.995 68.496V69.504H178.667V69.816C178.667 70.728 178.923 71.464 179.435 72.024C179.947 72.568 180.707 72.84 181.715 72.84C182.483 72.84 183.107 72.68 183.587 72.36C184.083 72.04 184.523 71.632 184.907 71.136L186.563 72.984C186.051 73.704 185.347 74.272 184.451 74.688C183.571 75.088 182.547 75.288 181.379 75.288ZM181.331 64.488C180.515 64.488 179.867 64.76 179.387 65.304C178.907 65.848 178.667 66.552 178.667 67.416V67.608H183.803V67.392C183.803 66.528 183.587 65.832 183.155 65.304C182.739 64.76 182.131 64.488 181.331 64.488ZM189.698 75V62.472H192.77V65.064H192.89C192.97 64.728 193.09 64.408 193.25 64.104C193.426 63.784 193.65 63.504 193.922 63.264C194.194 63.024 194.514 62.832 194.882 62.688C195.266 62.544 195.706 62.472 196.202 62.472H196.874V65.376H195.914C194.874 65.376 194.09 65.528 193.562 65.832C193.034 66.136 192.77 66.632 192.77 67.32V75H189.698ZM208.291 58.224L206.515 59.376C207.619 60.528 208.507 61.856 209.179 63.36C209.851 64.864 210.187 66.536 210.187 68.376C210.187 69.56 210.043 70.592 209.755 71.472C209.467 72.336 209.059 73.056 208.531 73.632C208.019 74.192 207.403 74.608 206.683 74.88C205.963 75.152 205.163 75.288 204.283 75.288C203.339 75.288 202.491 75.144 201.739 74.856C201.003 74.552 200.371 74.128 199.843 73.584C199.331 73.04 198.939 72.376 198.667 71.592C198.395 70.808 198.259 69.936 198.259 68.976C198.259 68.08 198.371 67.264 198.595 66.528C198.835 65.792 199.171 65.16 199.603 64.632C200.035 64.104 200.555 63.696 201.163 63.408C201.787 63.12 202.475 62.976 203.227 62.976C204.091 62.976 204.811 63.192 205.387 63.624C205.979 64.04 206.443 64.608 206.779 65.328L206.923 65.256C206.731 64.44 206.387 63.664 205.891 62.928C205.411 62.192 204.827 61.488 204.139 60.816L202.075 62.112L200.971 60.792L202.843 59.664C202.283 59.2 201.691 58.768 201.067 58.368C200.459 57.968 199.843 57.592 199.219 57.24H203.899C204.123 57.368 204.339 57.52 204.547 57.696C204.755 57.856 204.971 58.024 205.195 58.2L207.211 56.928L208.291 58.224ZM204.235 72.936C205.083 72.936 205.755 72.664 206.251 72.12C206.747 71.576 206.995 70.816 206.995 69.84V68.448C206.995 67.472 206.747 66.712 206.251 66.168C205.755 65.624 205.083 65.352 204.235 65.352C203.371 65.352 202.691 65.624 202.195 66.168C201.699 66.712 201.451 67.472 201.451 68.448V69.84C201.451 70.816 201.699 71.576 202.195 72.12C202.691 72.664 203.371 72.936 204.235 72.936ZM214.671 60.648C214.031 60.648 213.567 60.504 213.279 60.216C213.007 59.928 212.871 59.56 212.871 59.112V58.632C212.871 58.184 213.007 57.816 213.279 57.528C213.567 57.24 214.031 57.096 214.671 57.096C215.295 57.096 215.751 57.24 216.039 57.528C216.327 57.816 216.471 58.184 216.471 58.632V59.112C216.471 59.56 216.327 59.928 216.039 60.216C215.751 60.504 215.295 60.648 214.671 60.648ZM213.135 62.472H216.207V75H213.135V62.472ZM223.872 75.288C222.672 75.288 221.664 75.088 220.848 74.688C220.032 74.272 219.312 73.704 218.688 72.984L220.56 71.16C221.024 71.688 221.528 72.104 222.072 72.408C222.632 72.712 223.272 72.864 223.992 72.864C224.728 72.864 225.256 72.736 225.576 72.48C225.912 72.224 226.08 71.872 226.08 71.424C226.08 71.056 225.96 70.768 225.72 70.56C225.496 70.336 225.104 70.184 224.544 70.104L223.296 69.936C221.936 69.76 220.896 69.376 220.176 68.784C219.472 68.176 219.12 67.296 219.12 66.144C219.12 65.536 219.232 64.992 219.456 64.512C219.68 64.016 220 63.6 220.416 63.264C220.832 62.912 221.328 62.648 221.904 62.472C222.496 62.28 223.152 62.184 223.872 62.184C224.48 62.184 225.016 62.232 225.48 62.328C225.96 62.408 226.392 62.536 226.776 62.712C227.16 62.872 227.512 63.08 227.832 63.336C228.152 63.576 228.464 63.848 228.768 64.152L226.968 65.952C226.6 65.568 226.16 65.248 225.648 64.992C225.136 64.736 224.576 64.608 223.968 64.608C223.296 64.608 222.808 64.728 222.504 64.968C222.216 65.208 222.072 65.52 222.072 65.904C222.072 66.32 222.192 66.64 222.432 66.864C222.688 67.072 223.112 67.224 223.704 67.32L224.976 67.488C227.68 67.872 229.032 69.104 229.032 71.184C229.032 71.792 228.904 72.352 228.648 72.864C228.408 73.36 228.064 73.792 227.616 74.16C227.168 74.512 226.624 74.792 225.984 75C225.36 75.192 224.656 75.288 223.872 75.288ZM231.745 57.24H234.817V64.536H234.913C235.137 63.816 235.561 63.248 236.185 62.832C236.809 62.4 237.537 62.184 238.369 62.184C239.969 62.184 241.185 62.752 242.017 63.888C242.865 65.008 243.289 66.616 243.289 68.712C243.289 70.824 242.865 72.448 242.017 73.584C241.185 74.72 239.969 75.288 238.369 75.288C237.537 75.288 236.809 75.072 236.185 74.64C235.577 74.208 235.153 73.632 234.913 72.912H234.817V75H231.745V57.24ZM237.385 72.744C238.185 72.744 238.833 72.48 239.329 71.952C239.825 71.424 240.073 70.712 240.073 69.816V67.656C240.073 66.76 239.825 66.048 239.329 65.52C238.833 64.976 238.185 64.704 237.385 64.704C236.649 64.704 236.033 64.888 235.537 65.256C235.057 65.624 234.817 66.112 234.817 66.72V70.704C234.817 71.36 235.057 71.864 235.537 72.216C236.033 72.568 236.649 72.744 237.385 72.744ZM250.767 69.504C249.999 69.52 249.407 69.664 248.991 69.936C248.575 70.192 248.367 70.576 248.367 71.088V71.472C248.367 71.984 248.527 72.376 248.847 72.648C249.167 72.92 249.647 73.056 250.287 73.056C250.959 73.056 251.535 72.904 252.015 72.6C252.495 72.296 252.735 71.848 252.735 71.256V69.504H250.767ZM260.967 67.608V67.392C260.967 66.528 260.751 65.832 260.319 65.304C259.903 64.76 259.295 64.488 258.495 64.488C257.679 64.488 257.031 64.76 256.551 65.304C256.071 65.848 255.831 66.552 255.831 67.416V67.608H260.967ZM258.927 72.792C259.679 72.792 260.311 72.632 260.823 72.312C261.335 71.992 261.767 71.6 262.119 71.136L263.775 72.984C263.263 73.704 262.567 74.272 261.687 74.688C260.807 75.088 259.799 75.288 258.663 75.288C258.055 75.288 257.487 75.216 256.959 75.072C256.431 74.928 255.959 74.736 255.543 74.496C255.143 74.256 254.799 73.984 254.511 73.68C254.223 73.376 254.007 73.056 253.863 72.72H253.719C253.607 73.04 253.431 73.352 253.191 73.656C252.967 73.96 252.671 74.232 252.303 74.472C251.935 74.712 251.495 74.904 250.983 75.048C250.487 75.208 249.903 75.288 249.231 75.288C247.967 75.288 246.983 74.944 246.279 74.256C245.591 73.568 245.247 72.672 245.247 71.568C245.247 70.912 245.375 70.336 245.631 69.84C245.887 69.344 246.247 68.936 246.711 68.616C247.175 68.28 247.735 68.032 248.391 67.872C249.047 67.696 249.783 67.608 250.599 67.608H252.735V66.84C252.735 66.136 252.551 65.592 252.183 65.208C251.815 64.824 251.231 64.632 250.431 64.632C249.695 64.632 249.103 64.784 248.655 65.088C248.223 65.392 247.855 65.768 247.551 66.216L245.727 64.584C246.191 63.864 246.807 63.288 247.575 62.856C248.343 62.408 249.359 62.184 250.623 62.184C251.583 62.184 252.351 62.384 252.927 62.784C253.503 63.168 253.951 63.656 254.271 64.248H254.415C254.735 63.656 255.255 63.168 255.975 62.784C256.695 62.384 257.559 62.184 258.567 62.184C259.543 62.184 260.383 62.352 261.087 62.688C261.791 63.024 262.367 63.48 262.815 64.056C263.279 64.632 263.615 65.304 263.823 66.072C264.047 66.824 264.159 67.632 264.159 68.496V69.504H255.807V69.816C255.807 70.712 256.079 71.432 256.623 71.976C257.167 72.52 257.935 72.792 258.927 72.792ZM266.878 75V62.472H269.95V65.064H270.07C270.15 64.728 270.27 64.408 270.43 64.104C270.606 63.784 270.83 63.504 271.102 63.264C271.374 63.024 271.694 62.832 272.062 62.688C272.446 62.544 272.886 62.472 273.382 62.472H274.054V65.376H273.094C272.054 65.376 271.27 65.528 270.742 65.832C270.214 66.136 269.95 66.632 269.95 67.32V75H266.878Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/isafjardarbaer.svg b/libs/application/templates/financial-aid/src/svg/isafjardarbaer.svg deleted file mode 100644 index 5ec71102e333..000000000000 --- a/libs/application/templates/financial-aid/src/svg/isafjardarbaer.svg +++ /dev/null @@ -1,12 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M16.418 23.5393C37.5698 13.9058 59.5593 13.9058 80.7112 23.5393C80.7112 61.445 76.7321 77.9895 48.4599 95.5812C20.1876 77.9895 16.418 61.445 16.418 23.5393Z" fill="white"/> -<path d="M16.418 23.5393C37.5698 13.9058 59.5593 13.9058 80.7112 23.5393C80.7112 61.445 76.7321 77.9895 48.4599 95.5812C20.1876 77.9895 16.418 61.445 16.418 23.5393Z" stroke="black" stroke-width="0.311"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M74.6382 62.911C74.2193 62.7016 74.2193 62.7016 74.2193 62.7016C74.2193 62.7016 72.9628 63.7487 70.6591 63.7487C68.146 63.7487 66.8895 62.7016 66.8895 62.7016C66.8895 62.7016 65.6329 63.7487 63.3293 63.7487C60.8162 63.7487 59.5596 62.7016 59.5596 62.7016C59.5596 62.7016 58.3031 63.7487 55.9994 63.7487C53.4863 63.7487 52.2298 62.7016 52.2298 62.7016C52.2298 62.7016 50.9732 63.7487 48.6696 63.7487C46.1565 63.7487 44.8999 62.7016 44.8999 62.7016C44.8999 62.7016 43.6434 63.7487 41.3397 63.7487C38.8266 63.7487 37.7795 62.7016 37.7795 62.7016C37.7795 62.7016 36.523 63.7487 34.2193 63.7487C31.7062 63.7487 30.4497 62.7016 30.4497 62.7016C30.4497 62.7016 29.1931 63.7487 26.8895 63.7487C24.3764 63.7487 23.3292 62.7016 23.3292 62.7016C23.3292 62.7016 22.4916 62.7016 22.2821 62.911L21.8633 61.2356C22.701 60.8168 22.9104 60.8168 22.9104 60.8168C22.9104 60.8168 24.1669 62.0733 26.4706 62.0733C28.9837 62.0733 30.0308 60.8168 30.0308 60.8168C30.0308 60.8168 31.2874 62.0733 33.8005 62.0733C36.3135 62.0733 37.3607 60.8168 37.3607 60.8168C37.3607 60.8168 38.6172 62.0733 40.9209 62.0733C43.434 62.0733 44.4811 60.8168 44.4811 60.8168C44.4811 60.8168 45.7376 62.0733 48.2507 62.0733C50.7638 62.0733 51.8109 60.8168 51.8109 60.8168C51.8109 60.8168 53.0675 62.0733 55.5806 62.0733C58.0937 62.0733 59.1408 60.8168 59.1408 60.8168C59.1408 60.8168 60.3973 62.0733 62.9104 62.0733C65.4235 62.0733 66.4706 60.8168 66.4706 60.8168C66.4706 60.8168 67.7272 62.0733 70.2402 62.0733C72.7533 62.0733 73.8005 60.8168 73.8005 60.8168C73.8005 60.8168 74.0099 61.0262 74.8476 61.445L74.6382 62.911ZM74.2193 64.377C74.2193 64.377 72.7533 65.4241 70.6591 65.4241C68.3554 65.4241 66.8895 64.377 66.8895 64.377C66.8895 64.377 65.6329 65.4241 63.3293 65.4241C60.8162 65.4241 59.5596 64.377 59.5596 64.377C59.5596 64.377 58.3031 65.4241 55.9994 65.4241C53.4863 65.4241 52.2298 64.377 52.2298 64.377C52.2298 64.377 50.9732 65.4241 48.6696 65.4241C46.1565 65.4241 44.8999 64.377 44.8999 64.377C44.8999 64.377 43.6434 65.4241 41.3397 65.4241C38.8266 65.4241 37.7795 64.377 37.7795 64.377C37.7795 64.377 36.523 65.4241 34.2193 65.4241C31.7062 65.4241 30.4497 64.377 30.4497 64.377C30.4497 64.377 29.1931 65.4241 26.8895 65.4241C24.3764 65.4241 23.1198 64.377 23.1198 64.377L23.9575 66.4712C23.9575 66.4712 24.7952 67.0995 26.8895 67.0995C29.4025 67.0995 30.4497 65.8429 30.4497 65.8429C30.4497 65.8429 31.7062 67.0995 34.2193 67.0995C36.7324 67.0995 37.7795 65.8429 37.7795 65.8429C37.7795 65.8429 39.0361 67.0995 41.3397 67.0995C43.8528 67.0995 44.8999 65.8429 44.8999 65.8429C44.8999 65.8429 46.1565 67.0995 48.6696 67.0995C51.1827 67.0995 52.2298 65.8429 52.2298 65.8429C52.2298 65.8429 53.4863 67.0995 55.9994 67.0995C58.5125 67.0995 59.5596 65.8429 59.5596 65.8429C59.5596 65.8429 60.8162 67.0995 63.3293 67.0995C65.8423 67.0995 66.8895 65.8429 66.8895 65.8429C66.8895 65.8429 68.146 67.0995 70.6591 67.0995C72.1251 67.0995 73.3816 66.6806 73.3816 66.6806L74.2193 64.377ZM71.2874 70.4503C71.2874 70.4503 71.0779 70.4503 70.4497 70.4503C67.9366 70.4503 66.68 69.1937 66.68 69.1937C66.68 69.1937 65.6329 70.4503 63.1198 70.4503C60.6067 70.4503 59.3502 69.1937 59.3502 69.1937C59.3502 69.1937 58.3031 70.4503 55.79 70.4503C53.2769 70.4503 52.0204 69.1937 52.0204 69.1937C52.0204 69.1937 50.9732 70.4503 48.4601 70.4503C45.9471 70.4503 44.6905 69.1937 44.6905 69.1937C44.6905 69.1937 43.6434 70.4503 41.1303 70.4503C38.6172 70.4503 37.5701 69.1937 37.5701 69.1937C37.5701 69.1937 36.3135 70.4503 34.0099 70.4503C31.4968 70.4503 30.2402 69.1937 30.2402 69.1937C30.2402 69.1937 28.9837 70.4503 26.68 70.4503C26.2612 70.4503 25.8423 70.4503 25.8423 70.4503L24.7952 68.5655C24.7952 68.5655 25.4235 68.7749 26.68 68.7749C29.1931 68.7749 30.2402 67.5183 30.2402 67.5183C30.2402 67.5183 31.4968 68.7749 34.0099 68.7749C36.523 68.7749 37.5701 67.5183 37.5701 67.5183C37.5701 67.5183 38.8266 68.7749 41.1303 68.7749C43.6434 68.7749 44.6905 67.5183 44.6905 67.5183C44.6905 67.5183 45.9471 68.7749 48.4601 68.7749C50.9732 68.7749 52.0204 67.5183 52.0204 67.5183C52.0204 67.5183 53.2769 68.7749 55.79 68.7749C58.3031 68.7749 59.3502 67.5183 59.3502 67.5183C59.3502 67.5183 60.6067 68.7749 63.1198 68.7749C65.6329 68.7749 66.68 67.5183 66.68 67.5183C66.68 67.5183 67.9366 68.7749 70.4497 68.7749C71.4968 68.7749 72.1251 68.5655 72.3345 68.5655L71.2874 70.4503ZM70.2402 72.3351L69.1931 73.8011C67.7272 73.5916 66.68 72.7539 66.68 72.7539C66.68 72.7539 65.4235 74.0105 63.1198 74.0105C60.6067 74.0105 59.3502 72.9634 59.3502 72.9634C59.3502 72.9634 58.0937 74.0105 55.79 74.0105C53.2769 74.0105 52.0204 72.9634 52.0204 72.9634C52.0204 72.9634 50.7638 74.0105 48.4601 74.0105C45.9471 74.0105 44.6905 72.9634 44.6905 72.9634C44.6905 72.9634 43.434 74.0105 41.1303 74.0105C38.6172 74.0105 37.5701 72.9634 37.5701 72.9634C37.5701 72.9634 36.3135 74.0105 34.0099 74.0105C31.4968 74.0105 30.2402 72.9634 30.2402 72.9634C30.2402 72.9634 29.612 73.5916 27.9366 74.0105C27.5177 73.3822 27.3083 72.9634 26.8895 72.5445C28.9837 72.3351 30.2402 71.288 30.2402 71.288C30.2402 71.288 31.4968 72.5445 34.0099 72.5445C36.523 72.5445 37.5701 71.288 37.5701 71.288C37.5701 71.288 38.8266 72.5445 41.1303 72.5445C43.6434 72.5445 44.6905 71.288 44.6905 71.288C44.6905 71.288 45.9471 72.5445 48.4601 72.5445C50.9732 72.5445 52.0204 71.288 52.0204 71.288C52.0204 71.288 53.2769 72.5445 55.79 72.5445C58.3031 72.5445 59.3502 71.288 59.3502 71.288C59.3502 71.288 60.6067 72.5445 63.1198 72.5445C65.6329 72.5445 66.68 71.288 66.68 71.288C66.68 71.288 68.146 72.3351 70.2402 72.3351ZM28.9837 75.4765C29.4025 75.267 30.2402 74.6388 30.2402 74.6388C30.2402 74.6388 31.4968 75.8953 34.0099 75.8953C36.523 75.8953 37.5701 74.6388 37.5701 74.6388C37.5701 74.6388 38.8266 75.8953 41.1303 75.8953C43.6434 75.8953 44.6905 74.6388 44.6905 74.6388C44.6905 74.6388 45.9471 75.8953 48.4601 75.8953C50.9732 75.8953 52.0204 74.6388 52.0204 74.6388C52.0204 74.6388 53.2769 75.8953 55.79 75.8953C58.3031 75.8953 59.3502 74.6388 59.3502 74.6388C59.3502 74.6388 60.6067 75.8953 62.9104 75.8953C65.4235 75.8953 66.68 74.6388 66.68 74.6388C66.68 74.6388 67.3083 75.267 67.9366 75.4765L67.0989 76.733C66.68 76.5236 66.68 76.5236 66.68 76.5236C66.68 76.5236 65.4235 77.5707 63.1198 77.5707C60.6067 77.5707 59.5596 76.5236 59.5596 76.5236C59.5596 76.5236 58.3031 77.5707 55.9994 77.5707C53.4863 77.5707 52.2298 76.5236 52.2298 76.5236C52.2298 76.5236 50.9732 77.5707 48.6696 77.5707C46.1565 77.5707 44.8999 76.5236 44.8999 76.5236C44.8999 76.5236 43.6434 77.5707 41.3397 77.5707C38.8266 77.5707 37.7795 76.5236 37.7795 76.5236C37.7795 76.5236 36.523 77.5707 34.2193 77.5707C31.7062 77.5707 30.4497 76.5236 30.4497 76.5236L29.8214 76.733C29.4025 76.1047 29.1931 75.8953 28.9837 75.4765ZM31.9156 79.0367C32.5439 79.8744 32.7533 80.0838 33.8005 80.9215C36.1041 80.9215 37.5701 79.8744 37.5701 79.8744C37.5701 79.8744 38.8266 80.9215 41.1303 80.9215C43.6434 80.9215 44.6905 79.8744 44.6905 79.8744C44.6905 79.8744 45.9471 80.9215 48.4601 80.9215C50.9732 80.9215 52.0204 79.8744 52.0204 79.8744C52.0204 79.8744 53.2769 80.9215 55.79 80.9215C58.3031 80.9215 59.3502 79.8744 59.3502 79.8744C59.3502 79.8744 60.6067 81.1309 63.1198 80.9215L65.0046 79.0367C65.0046 79.0367 65.2141 79.2461 63.1198 79.2461C61.0256 79.2461 59.5596 77.9895 59.5596 77.9895C59.5596 77.9895 58.3031 79.2461 55.9994 79.2461C53.4863 79.2461 52.2298 77.9895 52.2298 77.9895C52.2298 77.9895 50.9732 79.2461 48.6696 79.2461C46.1565 79.2461 44.8999 77.9895 44.8999 77.9895C44.8999 77.9895 43.6434 79.2461 41.3397 79.2461C38.8266 79.2461 37.7795 77.9895 37.7795 77.9895C37.7795 77.9895 36.523 79.2461 34.2193 79.2461C33.1722 79.2461 32.5439 79.2461 31.9156 79.0367ZM60.3973 83.8534L61.8633 82.5969C60.1879 82.3874 59.5596 81.5498 59.5596 81.5498C59.5596 81.5498 58.3031 82.8063 55.9994 82.8063C53.4863 82.8063 52.2298 81.5498 52.2298 81.5498C52.2298 81.5498 50.9732 82.8063 48.6696 82.8063C46.1565 82.8063 44.8999 81.5498 44.8999 81.5498C44.8999 81.5498 43.6434 82.8063 41.3397 82.8063C38.8266 82.8063 37.7795 81.5498 37.7795 81.5498C37.7795 81.5498 37.3607 82.178 35.4758 82.5969L36.9418 83.8534C37.3607 83.644 37.7795 83.2251 37.7795 83.2251C37.7795 83.2251 39.0361 84.4817 41.3397 84.4817C43.8528 84.4817 44.8999 83.2251 44.8999 83.2251C44.8999 83.2251 46.1565 84.4817 48.6696 84.4817C51.1827 84.4817 52.2298 83.2251 52.2298 83.2251C52.2298 83.2251 53.4863 84.4817 55.9994 84.4817C58.5125 84.4817 59.5596 83.2251 59.5596 83.2251C59.5596 83.2251 59.769 83.644 60.3973 83.8534ZM39.0361 85.9477C40.2926 86.9948 40.502 87.4136 41.3397 87.8325C43.434 87.8325 44.8999 86.7854 44.8999 86.7854C44.8999 86.7854 46.1565 88.0419 48.6696 88.0419C51.1827 88.0419 52.2298 86.7854 52.2298 86.7854C52.2298 86.7854 53.0675 87.8325 55.5806 87.8325C56.8371 86.7854 56.4183 87.2042 57.8842 85.7382C57.8842 85.7382 58.3031 85.9477 55.9994 85.9477C53.4863 85.9477 52.2298 84.6911 52.2298 84.6911C52.2298 84.6911 50.9732 85.9477 48.6696 85.9477C46.1565 85.9477 44.8999 84.6911 44.8999 84.6911C44.8999 84.6911 43.434 85.9477 41.3397 85.9477C39.2455 86.1571 39.0361 85.9477 39.0361 85.9477L43.434 89.2984L44.8999 90.555C44.8999 90.555 45.9471 91.3927 48.4601 91.3927C50.9732 91.3927 52.0204 90.555 52.0204 90.555L53.6957 89.2984C52.6486 89.089 52.2298 88.4607 52.2298 88.4607C52.2298 88.4607 50.9732 89.7173 48.6696 89.7173C46.1565 89.7173 45.1094 88.4607 45.1094 88.4607C45.1094 88.4607 44.6905 89.089 43.8528 89.2984L39.0361 85.9477Z" fill="#007BBA"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M48.4594 18.9319C56.8364 18.9319 63.5379 25.6335 63.5379 34.0105C63.5379 42.178 56.8364 49.089 48.4594 49.089C40.0824 49.089 33.3809 42.3874 33.3809 34.0105C33.3809 25.6335 40.0824 18.9319 48.4594 18.9319Z" fill="#DD2A1B"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M45.9468 54.1151C43.2243 53.6963 40.7112 52.8586 38.4076 51.6021L41.1301 46.9947L40.5018 46.5759L37.7793 51.1832C35.0568 49.5078 32.5437 47.2042 30.8683 44.2722L29.4023 45.3193L35.0568 60.3979C35.8945 60.3979 37.5699 59.1413 37.5699 59.1413C37.5699 59.1413 38.8264 60.8167 41.3395 60.8167C43.8526 60.8167 44.8997 59.1413 44.8997 59.1413C44.8997 59.1413 46.1563 60.8167 48.4599 60.8167C50.973 60.8167 52.2296 59.1413 52.2296 59.1413C52.2296 59.1413 53.4861 60.8167 55.9992 60.8167C58.5123 60.8167 59.5594 59.1413 59.5594 59.1413C59.5594 59.1413 61.2348 60.3979 62.0725 60.3979L67.727 45.3193L66.261 44.2722C64.5856 47.2042 62.0725 49.5078 59.35 51.1832L56.6275 46.5759C56.418 46.7853 56.2086 46.7853 55.9992 46.9947L58.7217 51.6021C56.418 52.8586 53.6955 53.6963 51.1824 54.1151L50.7636 48.6701C49.2976 48.8795 48.0411 48.8795 46.7845 48.6701L45.9468 54.1151Z" fill="black"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M17.4648 24.5864L17.8837 34.4293C18.7214 59.1413 20.1874 74.6387 48.4596 93.2775C76.7319 74.6387 78.1978 59.1413 79.0355 34.4293L79.4544 24.5864C59.1402 15.1623 37.9884 15.3717 17.4648 24.5864ZM48.4596 92.6492C48.2502 92.6492 48.2502 92.4398 48.0408 92.4398C29.1926 80.0838 23.7476 68.9843 21.0251 58.3036C23.3287 59.7696 27.7266 61.2356 29.6114 59.1413L21.2345 23.5392C41.5486 16.4188 55.58 16.4188 75.6847 23.5392C73.1716 35.6858 69.8209 46.9947 67.3078 59.1413C69.402 61.0262 73.3811 59.5602 76.1036 58.0942C72.9622 68.9843 67.936 80.2932 48.4596 92.6492Z" fill="black"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M46.9934 35.4764L33.3809 34.4293L47.4123 33.5916L48.4594 19.5602L49.5065 33.5916L63.5379 34.4293L49.9254 35.267L56.4175 46.3665C56.2081 46.5759 55.9987 46.5759 55.7892 46.7853L49.7159 36.5235L50.5536 48.4607C48.8782 48.6701 48.0405 48.6701 46.5746 48.4607L47.4123 36.3141L41.339 46.7853L40.7107 46.3665L46.9934 35.4764Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.272 75V72.456H99.48V60.792H97.272V58.248H104.88V60.792H102.648V72.456H104.88V75H97.272ZM101.4 57.144L99.552 56.232L101.832 51.744L104.424 53.04L101.4 57.144ZM111.935 75.288C110.735 75.288 109.727 75.088 108.911 74.688C108.095 74.272 107.375 73.704 106.751 72.984L108.623 71.16C109.087 71.688 109.591 72.104 110.135 72.408C110.695 72.712 111.335 72.864 112.055 72.864C112.791 72.864 113.319 72.736 113.639 72.48C113.975 72.224 114.143 71.872 114.143 71.424C114.143 71.056 114.023 70.768 113.783 70.56C113.559 70.336 113.167 70.184 112.607 70.104L111.359 69.936C109.999 69.76 108.959 69.376 108.239 68.784C107.535 68.176 107.183 67.296 107.183 66.144C107.183 65.536 107.295 64.992 107.519 64.512C107.743 64.016 108.063 63.6 108.479 63.264C108.895 62.912 109.391 62.648 109.967 62.472C110.559 62.28 111.215 62.184 111.935 62.184C112.543 62.184 113.079 62.232 113.543 62.328C114.023 62.408 114.455 62.536 114.839 62.712C115.223 62.872 115.575 63.08 115.895 63.336C116.215 63.576 116.527 63.848 116.831 64.152L115.031 65.952C114.663 65.568 114.223 65.248 113.711 64.992C113.199 64.736 112.639 64.608 112.031 64.608C111.359 64.608 110.871 64.728 110.567 64.968C110.279 65.208 110.135 65.52 110.135 65.904C110.135 66.32 110.255 66.64 110.495 66.864C110.751 67.072 111.175 67.224 111.767 67.32L113.039 67.488C115.743 67.872 117.095 69.104 117.095 71.184C117.095 71.792 116.967 72.352 116.711 72.864C116.471 73.36 116.127 73.792 115.679 74.16C115.231 74.512 114.687 74.792 114.047 75C113.423 75.192 112.719 75.288 111.935 75.288ZM129.023 75C128.351 75 127.815 74.808 127.415 74.424C127.031 74.024 126.791 73.496 126.695 72.84H126.551C126.343 73.656 125.919 74.272 125.279 74.688C124.639 75.088 123.847 75.288 122.903 75.288C121.623 75.288 120.639 74.952 119.951 74.28C119.263 73.608 118.919 72.712 118.919 71.592C118.919 70.296 119.383 69.336 120.311 68.712C121.239 68.072 122.559 67.752 124.271 67.752H126.407V66.84C126.407 66.136 126.223 65.592 125.855 65.208C125.487 64.824 124.895 64.632 124.079 64.632C123.359 64.632 122.775 64.792 122.327 65.112C121.895 65.416 121.527 65.784 121.223 66.216L119.399 64.584C119.863 63.864 120.479 63.288 121.247 62.856C122.015 62.408 123.031 62.184 124.295 62.184C125.991 62.184 127.279 62.568 128.159 63.336C129.039 64.104 129.479 65.208 129.479 66.648V72.552H130.727V75H129.023ZM123.935 73.056C124.623 73.056 125.207 72.904 125.687 72.6C126.167 72.296 126.407 71.848 126.407 71.256V69.6H124.439C122.839 69.6 122.039 70.112 122.039 71.136V71.544C122.039 72.056 122.199 72.44 122.519 72.696C122.855 72.936 123.327 73.056 123.935 73.056ZM133.838 64.896H131.99V62.472H133.838V60.672C133.838 59.568 134.126 58.72 134.702 58.128C135.294 57.536 136.158 57.24 137.294 57.24H139.478V59.688H136.91V62.472H139.478V64.896H136.91V75H133.838V64.896ZM141.604 62.472H144.676V76.512C144.676 77.568 144.412 78.376 143.884 78.936C143.356 79.512 142.516 79.8 141.364 79.8H139.684V77.352H141.604V62.472ZM143.14 60.648C142.5 60.648 142.036 60.504 141.748 60.216C141.476 59.928 141.34 59.56 141.34 59.112V58.632C141.34 58.184 141.476 57.816 141.748 57.528C142.036 57.24 142.5 57.096 143.14 57.096C143.764 57.096 144.22 57.24 144.508 57.528C144.796 57.816 144.94 58.184 144.94 58.632V59.112C144.94 59.56 144.796 59.928 144.508 60.216C144.22 60.504 143.764 60.648 143.14 60.648ZM157.453 75C156.781 75 156.245 74.808 155.845 74.424C155.461 74.024 155.221 73.496 155.125 72.84H154.981C154.773 73.656 154.349 74.272 153.709 74.688C153.069 75.088 152.277 75.288 151.333 75.288C150.053 75.288 149.069 74.952 148.381 74.28C147.693 73.608 147.349 72.712 147.349 71.592C147.349 70.296 147.813 69.336 148.741 68.712C149.669 68.072 150.989 67.752 152.701 67.752H154.837V66.84C154.837 66.136 154.653 65.592 154.285 65.208C153.917 64.824 153.325 64.632 152.509 64.632C151.789 64.632 151.205 64.792 150.757 65.112C150.325 65.416 149.957 65.784 149.653 66.216L147.829 64.584C148.293 63.864 148.909 63.288 149.677 62.856C150.445 62.408 151.461 62.184 152.725 62.184C154.421 62.184 155.709 62.568 156.589 63.336C157.469 64.104 157.909 65.208 157.909 66.648V72.552H159.157V75H157.453ZM152.365 73.056C153.053 73.056 153.637 72.904 154.117 72.6C154.597 72.296 154.837 71.848 154.837 71.256V69.6H152.869C151.269 69.6 150.469 70.112 150.469 71.136V71.544C150.469 72.056 150.629 72.44 150.949 72.696C151.285 72.936 151.757 73.056 152.365 73.056ZM161.643 75V62.472H164.715V65.064H164.835C164.915 64.728 165.035 64.408 165.195 64.104C165.371 63.784 165.595 63.504 165.867 63.264C166.139 63.024 166.459 62.832 166.827 62.688C167.211 62.544 167.651 62.472 168.147 62.472H168.819V65.376H167.859C166.819 65.376 166.035 65.528 165.507 65.832C164.979 66.136 164.715 66.632 164.715 67.32V75H161.643ZM180.236 58.224L178.46 59.376C179.564 60.528 180.452 61.856 181.124 63.36C181.796 64.864 182.132 66.536 182.132 68.376C182.132 69.56 181.988 70.592 181.7 71.472C181.412 72.336 181.004 73.056 180.476 73.632C179.964 74.192 179.348 74.608 178.628 74.88C177.908 75.152 177.108 75.288 176.228 75.288C175.284 75.288 174.436 75.144 173.684 74.856C172.948 74.552 172.316 74.128 171.788 73.584C171.276 73.04 170.884 72.376 170.612 71.592C170.34 70.808 170.204 69.936 170.204 68.976C170.204 68.08 170.316 67.264 170.54 66.528C170.78 65.792 171.116 65.16 171.548 64.632C171.98 64.104 172.5 63.696 173.108 63.408C173.732 63.12 174.42 62.976 175.172 62.976C176.036 62.976 176.756 63.192 177.332 63.624C177.924 64.04 178.388 64.608 178.724 65.328L178.868 65.256C178.676 64.44 178.332 63.664 177.836 62.928C177.356 62.192 176.772 61.488 176.084 60.816L174.02 62.112L172.916 60.792L174.788 59.664C174.228 59.2 173.636 58.768 173.012 58.368C172.404 57.968 171.788 57.592 171.164 57.24H175.844C176.068 57.368 176.284 57.52 176.492 57.696C176.7 57.856 176.916 58.024 177.14 58.2L179.156 56.928L180.236 58.224ZM176.18 72.936C177.028 72.936 177.7 72.664 178.196 72.12C178.692 71.576 178.94 70.816 178.94 69.84V68.448C178.94 67.472 178.692 66.712 178.196 66.168C177.7 65.624 177.028 65.352 176.18 65.352C175.316 65.352 174.636 65.624 174.14 66.168C173.644 66.712 173.396 67.472 173.396 68.448V69.84C173.396 70.816 173.644 71.576 174.14 72.12C174.636 72.664 175.316 72.936 176.18 72.936ZM194.297 75C193.625 75 193.089 74.808 192.689 74.424C192.305 74.024 192.065 73.496 191.969 72.84H191.825C191.617 73.656 191.193 74.272 190.553 74.688C189.913 75.088 189.121 75.288 188.177 75.288C186.897 75.288 185.913 74.952 185.225 74.28C184.537 73.608 184.193 72.712 184.193 71.592C184.193 70.296 184.657 69.336 185.585 68.712C186.513 68.072 187.833 67.752 189.545 67.752H191.681V66.84C191.681 66.136 191.497 65.592 191.129 65.208C190.761 64.824 190.169 64.632 189.353 64.632C188.633 64.632 188.049 64.792 187.601 65.112C187.169 65.416 186.801 65.784 186.497 66.216L184.673 64.584C185.137 63.864 185.753 63.288 186.521 62.856C187.289 62.408 188.305 62.184 189.569 62.184C191.265 62.184 192.553 62.568 193.433 63.336C194.313 64.104 194.753 65.208 194.753 66.648V72.552H196.001V75H194.297ZM189.209 73.056C189.897 73.056 190.481 72.904 190.961 72.6C191.441 72.296 191.681 71.848 191.681 71.256V69.6H189.713C188.113 69.6 187.313 70.112 187.313 71.136V71.544C187.313 72.056 187.473 72.44 187.793 72.696C188.129 72.936 188.601 73.056 189.209 73.056ZM198.487 75V62.472H201.559V65.064H201.679C201.759 64.728 201.879 64.408 202.039 64.104C202.215 63.784 202.439 63.504 202.711 63.264C202.983 63.024 203.303 62.832 203.671 62.688C204.055 62.544 204.495 62.472 204.991 62.472H205.663V65.376H204.703C203.663 65.376 202.879 65.528 202.351 65.832C201.823 66.136 201.559 66.632 201.559 67.32V75H198.487ZM207.909 57.24H210.981V64.536H211.077C211.301 63.816 211.725 63.248 212.349 62.832C212.973 62.4 213.701 62.184 214.533 62.184C216.133 62.184 217.349 62.752 218.181 63.888C219.029 65.008 219.453 66.616 219.453 68.712C219.453 70.824 219.029 72.448 218.181 73.584C217.349 74.72 216.133 75.288 214.533 75.288C213.701 75.288 212.973 75.072 212.349 74.64C211.741 74.208 211.317 73.632 211.077 72.912H210.981V75H207.909V57.24ZM213.549 72.744C214.349 72.744 214.997 72.48 215.493 71.952C215.989 71.424 216.237 70.712 216.237 69.816V67.656C216.237 66.76 215.989 66.048 215.493 65.52C214.997 64.976 214.349 64.704 213.549 64.704C212.813 64.704 212.197 64.888 211.701 65.256C211.221 65.624 210.981 66.112 210.981 66.72V70.704C210.981 71.36 211.221 71.864 211.701 72.216C212.197 72.568 212.813 72.744 213.549 72.744ZM226.931 69.504C226.163 69.52 225.571 69.664 225.155 69.936C224.739 70.192 224.531 70.576 224.531 71.088V71.472C224.531 71.984 224.691 72.376 225.011 72.648C225.331 72.92 225.811 73.056 226.451 73.056C227.123 73.056 227.699 72.904 228.179 72.6C228.659 72.296 228.899 71.848 228.899 71.256V69.504H226.931ZM237.131 67.608V67.392C237.131 66.528 236.915 65.832 236.483 65.304C236.067 64.76 235.459 64.488 234.659 64.488C233.843 64.488 233.195 64.76 232.715 65.304C232.235 65.848 231.995 66.552 231.995 67.416V67.608H237.131ZM235.091 72.792C235.843 72.792 236.475 72.632 236.987 72.312C237.499 71.992 237.931 71.6 238.283 71.136L239.939 72.984C239.427 73.704 238.731 74.272 237.851 74.688C236.971 75.088 235.963 75.288 234.827 75.288C234.219 75.288 233.651 75.216 233.123 75.072C232.595 74.928 232.123 74.736 231.707 74.496C231.307 74.256 230.963 73.984 230.675 73.68C230.387 73.376 230.171 73.056 230.027 72.72H229.883C229.771 73.04 229.595 73.352 229.355 73.656C229.131 73.96 228.835 74.232 228.467 74.472C228.099 74.712 227.659 74.904 227.147 75.048C226.651 75.208 226.067 75.288 225.395 75.288C224.131 75.288 223.147 74.944 222.443 74.256C221.755 73.568 221.411 72.672 221.411 71.568C221.411 70.912 221.539 70.336 221.795 69.84C222.051 69.344 222.411 68.936 222.875 68.616C223.339 68.28 223.899 68.032 224.555 67.872C225.211 67.696 225.947 67.608 226.763 67.608H228.899V66.84C228.899 66.136 228.715 65.592 228.347 65.208C227.979 64.824 227.395 64.632 226.595 64.632C225.859 64.632 225.267 64.784 224.819 65.088C224.387 65.392 224.019 65.768 223.715 66.216L221.891 64.584C222.355 63.864 222.971 63.288 223.739 62.856C224.507 62.408 225.523 62.184 226.787 62.184C227.747 62.184 228.515 62.384 229.091 62.784C229.667 63.168 230.115 63.656 230.435 64.248H230.579C230.899 63.656 231.419 63.168 232.139 62.784C232.859 62.384 233.723 62.184 234.731 62.184C235.707 62.184 236.547 62.352 237.251 62.688C237.955 63.024 238.531 63.48 238.979 64.056C239.443 64.632 239.779 65.304 239.987 66.072C240.211 66.824 240.323 67.632 240.323 68.496V69.504H231.971V69.816C231.971 70.712 232.243 71.432 232.787 71.976C233.331 72.52 234.099 72.792 235.091 72.792ZM243.042 75V62.472H246.114V65.064H246.234C246.314 64.728 246.434 64.408 246.594 64.104C246.77 63.784 246.994 63.504 247.266 63.264C247.538 63.024 247.858 62.832 248.226 62.688C248.61 62.544 249.05 62.472 249.546 62.472H250.218V65.376H249.258C248.218 65.376 247.434 65.528 246.906 65.832C246.378 66.136 246.114 66.632 246.114 67.32V75H243.042Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/kaldrananeshreppur.svg b/libs/application/templates/financial-aid/src/svg/kaldrananeshreppur.svg deleted file mode 100644 index 8d693528441b..000000000000 --- a/libs/application/templates/financial-aid/src/svg/kaldrananeshreppur.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.606 96C30.4519 89.1714 16.7516 75.392 17.0034 58.353V16.6189C17.0034 16.4547 17.0686 16.2973 17.1847 16.1813C17.3007 16.0652 17.4581 16 17.6222 16H77.5826C77.6645 15.9991 77.7457 16.0144 77.8216 16.0451C77.8976 16.0757 77.9666 16.1212 78.0248 16.1787C78.0831 16.2363 78.1293 16.3048 78.1609 16.3804C78.1924 16.4559 78.2086 16.537 78.2086 16.6189V58.353C78.4533 75.392 64.753 89.1714 47.606 96Z" fill="#848484"/> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M103.368 53.416L101.136 56.056V61H97.968V44.248H101.136V52.504H101.256L103.632 49.36L107.784 44.248H111.432L105.6 51.232L111.912 61H108.144L103.368 53.416ZM123 61C122.328 61 121.792 60.808 121.392 60.424C121.008 60.024 120.768 59.496 120.672 58.84H120.528C120.32 59.656 119.896 60.272 119.256 60.688C118.616 61.088 117.824 61.288 116.88 61.288C115.6 61.288 114.616 60.952 113.928 60.28C113.24 59.608 112.896 58.712 112.896 57.592C112.896 56.296 113.36 55.336 114.288 54.712C115.216 54.072 116.536 53.752 118.248 53.752H120.384V52.84C120.384 52.136 120.2 51.592 119.832 51.208C119.464 50.824 118.872 50.632 118.056 50.632C117.336 50.632 116.752 50.792 116.304 51.112C115.872 51.416 115.504 51.784 115.2 52.216L113.376 50.584C113.84 49.864 114.456 49.288 115.224 48.856C115.992 48.408 117.008 48.184 118.272 48.184C119.968 48.184 121.256 48.568 122.136 49.336C123.016 50.104 123.456 51.208 123.456 52.648V58.552H124.704V61H123ZM117.912 59.056C118.6 59.056 119.184 58.904 119.664 58.6C120.144 58.296 120.384 57.848 120.384 57.256V55.6H118.416C116.816 55.6 116.016 56.112 116.016 57.136V57.544C116.016 58.056 116.176 58.44 116.496 58.696C116.832 58.936 117.304 59.056 117.912 59.056ZM130.262 61C129.206 61 128.43 60.736 127.934 60.208C127.438 59.68 127.19 58.936 127.19 57.976V43.24H130.262V58.552H131.918V61H130.262ZM142.021 58.912H141.901C141.677 59.632 141.253 60.208 140.629 60.64C140.005 61.072 139.277 61.288 138.445 61.288C136.861 61.288 135.645 60.72 134.797 59.584C133.965 58.448 133.549 56.824 133.549 54.712C133.549 52.616 133.965 51.008 134.797 49.888C135.645 48.752 136.861 48.184 138.445 48.184C139.277 48.184 140.005 48.4 140.629 48.832C141.253 49.248 141.677 49.816 141.901 50.536H142.021V43.24H145.093V61H142.021V58.912ZM139.429 58.744C140.165 58.744 140.781 58.568 141.277 58.216C141.773 57.864 142.021 57.36 142.021 56.704V52.72C142.021 52.112 141.773 51.624 141.277 51.256C140.781 50.888 140.165 50.704 139.429 50.704C138.629 50.704 137.981 50.976 137.485 51.52C137.005 52.048 136.765 52.76 136.765 53.656V55.816C136.765 56.712 137.005 57.424 137.485 57.952C137.981 58.48 138.629 58.744 139.429 58.744ZM148.635 61V48.472H151.707V51.064H151.827C151.907 50.728 152.027 50.408 152.187 50.104C152.363 49.784 152.587 49.504 152.859 49.264C153.131 49.024 153.451 48.832 153.819 48.688C154.203 48.544 154.643 48.472 155.139 48.472H155.811V51.376H154.851C153.811 51.376 153.027 51.528 152.499 51.832C151.971 52.136 151.707 52.632 151.707 53.32V61H148.635ZM167.015 61C166.343 61 165.807 60.808 165.407 60.424C165.023 60.024 164.783 59.496 164.687 58.84H164.543C164.335 59.656 163.911 60.272 163.271 60.688C162.631 61.088 161.839 61.288 160.895 61.288C159.615 61.288 158.631 60.952 157.943 60.28C157.255 59.608 156.911 58.712 156.911 57.592C156.911 56.296 157.375 55.336 158.303 54.712C159.231 54.072 160.551 53.752 162.263 53.752H164.399V52.84C164.399 52.136 164.215 51.592 163.847 51.208C163.479 50.824 162.887 50.632 162.071 50.632C161.351 50.632 160.767 50.792 160.319 51.112C159.887 51.416 159.519 51.784 159.215 52.216L157.391 50.584C157.855 49.864 158.471 49.288 159.239 48.856C160.007 48.408 161.023 48.184 162.287 48.184C163.983 48.184 165.271 48.568 166.151 49.336C167.031 50.104 167.471 51.208 167.471 52.648V58.552H168.719V61H167.015ZM161.927 59.056C162.615 59.056 163.199 58.904 163.679 58.6C164.159 58.296 164.399 57.848 164.399 57.256V55.6H162.431C160.831 55.6 160.031 56.112 160.031 57.136V57.544C160.031 58.056 160.191 58.44 160.511 58.696C160.847 58.936 161.319 59.056 161.927 59.056ZM171.206 61V48.472H174.278V50.56H174.398C174.654 49.888 175.054 49.328 175.598 48.88C176.158 48.416 176.926 48.184 177.902 48.184C179.198 48.184 180.19 48.608 180.878 49.456C181.566 50.304 181.91 51.512 181.91 53.08V61H178.838V53.392C178.838 52.496 178.678 51.824 178.358 51.376C178.038 50.928 177.51 50.704 176.774 50.704C176.454 50.704 176.142 50.752 175.838 50.848C175.55 50.928 175.286 51.056 175.046 51.232C174.822 51.392 174.638 51.6 174.494 51.856C174.35 52.096 174.278 52.384 174.278 52.72V61H171.206ZM194.531 61C193.859 61 193.323 60.808 192.923 60.424C192.539 60.024 192.299 59.496 192.203 58.84H192.059C191.851 59.656 191.427 60.272 190.787 60.688C190.147 61.088 189.355 61.288 188.411 61.288C187.131 61.288 186.147 60.952 185.459 60.28C184.771 59.608 184.427 58.712 184.427 57.592C184.427 56.296 184.891 55.336 185.819 54.712C186.747 54.072 188.067 53.752 189.779 53.752H191.915V52.84C191.915 52.136 191.731 51.592 191.363 51.208C190.995 50.824 190.403 50.632 189.587 50.632C188.867 50.632 188.283 50.792 187.835 51.112C187.403 51.416 187.035 51.784 186.731 52.216L184.907 50.584C185.371 49.864 185.987 49.288 186.755 48.856C187.523 48.408 188.539 48.184 189.803 48.184C191.499 48.184 192.787 48.568 193.667 49.336C194.547 50.104 194.987 51.208 194.987 52.648V58.552H196.235V61H194.531ZM189.443 59.056C190.131 59.056 190.715 58.904 191.195 58.6C191.675 58.296 191.915 57.848 191.915 57.256V55.6H189.947C188.347 55.6 187.547 56.112 187.547 57.136V57.544C187.547 58.056 187.707 58.44 188.027 58.696C188.363 58.936 188.835 59.056 189.443 59.056ZM198.721 61V48.472H201.793V50.56H201.913C202.169 49.888 202.569 49.328 203.113 48.88C203.673 48.416 204.441 48.184 205.417 48.184C206.713 48.184 207.705 48.608 208.393 49.456C209.081 50.304 209.425 51.512 209.425 53.08V61H206.353V53.392C206.353 52.496 206.193 51.824 205.873 51.376C205.553 50.928 205.025 50.704 204.289 50.704C203.969 50.704 203.657 50.752 203.353 50.848C203.065 50.928 202.801 51.056 202.561 51.232C202.337 51.392 202.153 51.6 202.009 51.856C201.865 52.096 201.793 52.384 201.793 52.72V61H198.721ZM217.895 61.288C216.967 61.288 216.135 61.136 215.399 60.832C214.679 60.512 214.063 60.072 213.551 59.512C213.055 58.936 212.671 58.248 212.399 57.448C212.127 56.632 211.991 55.72 211.991 54.712C211.991 53.72 212.119 52.824 212.375 52.024C212.647 51.224 213.031 50.544 213.527 49.984C214.023 49.408 214.631 48.968 215.351 48.664C216.071 48.344 216.887 48.184 217.799 48.184C218.775 48.184 219.623 48.352 220.343 48.688C221.063 49.024 221.655 49.48 222.119 50.056C222.583 50.632 222.927 51.304 223.151 52.072C223.391 52.824 223.511 53.632 223.511 54.496V55.504H215.183V55.816C215.183 56.728 215.439 57.464 215.951 58.024C216.463 58.568 217.223 58.84 218.231 58.84C218.999 58.84 219.623 58.68 220.103 58.36C220.599 58.04 221.039 57.632 221.423 57.136L223.079 58.984C222.567 59.704 221.863 60.272 220.967 60.688C220.087 61.088 219.063 61.288 217.895 61.288ZM217.847 50.488C217.031 50.488 216.383 50.76 215.903 51.304C215.423 51.848 215.183 52.552 215.183 53.416V53.608H220.319V53.392C220.319 52.528 220.103 51.832 219.671 51.304C219.255 50.76 218.647 50.488 217.847 50.488ZM230.318 61.288C229.118 61.288 228.11 61.088 227.294 60.688C226.478 60.272 225.758 59.704 225.134 58.984L227.006 57.16C227.47 57.688 227.974 58.104 228.518 58.408C229.078 58.712 229.718 58.864 230.438 58.864C231.174 58.864 231.702 58.736 232.022 58.48C232.358 58.224 232.526 57.872 232.526 57.424C232.526 57.056 232.406 56.768 232.166 56.56C231.942 56.336 231.55 56.184 230.99 56.104L229.742 55.936C228.382 55.76 227.342 55.376 226.622 54.784C225.918 54.176 225.566 53.296 225.566 52.144C225.566 51.536 225.678 50.992 225.902 50.512C226.126 50.016 226.446 49.6 226.862 49.264C227.278 48.912 227.774 48.648 228.35 48.472C228.942 48.28 229.598 48.184 230.318 48.184C230.926 48.184 231.462 48.232 231.926 48.328C232.406 48.408 232.838 48.536 233.222 48.712C233.606 48.872 233.958 49.08 234.278 49.336C234.598 49.576 234.91 49.848 235.214 50.152L233.414 51.952C233.046 51.568 232.606 51.248 232.094 50.992C231.582 50.736 231.022 50.608 230.414 50.608C229.742 50.608 229.254 50.728 228.95 50.968C228.662 51.208 228.518 51.52 228.518 51.904C228.518 52.32 228.638 52.64 228.878 52.864C229.134 53.072 229.558 53.224 230.15 53.32L231.422 53.488C234.126 53.872 235.478 55.104 235.478 57.184C235.478 57.792 235.35 58.352 235.094 58.864C234.854 59.36 234.51 59.792 234.062 60.16C233.614 60.512 233.07 60.792 232.43 61C231.806 61.192 231.102 61.288 230.318 61.288ZM237.736 55.216V52.168H244.6V55.216H237.736ZM97.776 71.24H100.848V78.56H100.968C101.224 77.888 101.624 77.328 102.168 76.88C102.728 76.416 103.496 76.184 104.472 76.184C105.768 76.184 106.76 76.608 107.448 77.456C108.136 78.304 108.48 79.512 108.48 81.08V89H105.408V81.392C105.408 80.496 105.248 79.824 104.928 79.376C104.608 78.928 104.08 78.704 103.344 78.704C103.024 78.704 102.712 78.752 102.408 78.848C102.12 78.928 101.856 79.056 101.616 79.232C101.392 79.392 101.208 79.6 101.064 79.856C100.92 80.096 100.848 80.384 100.848 80.72V89H97.776V71.24ZM111.885 89V76.472H114.957V79.064H115.077C115.157 78.728 115.277 78.408 115.437 78.104C115.613 77.784 115.837 77.504 116.109 77.264C116.381 77.024 116.701 76.832 117.069 76.688C117.453 76.544 117.893 76.472 118.389 76.472H119.061V79.376H118.101C117.061 79.376 116.277 79.528 115.749 79.832C115.221 80.136 114.957 80.632 114.957 81.32V89H111.885ZM126.254 89.288C125.326 89.288 124.494 89.136 123.758 88.832C123.038 88.512 122.422 88.072 121.91 87.512C121.414 86.936 121.03 86.248 120.758 85.448C120.486 84.632 120.35 83.72 120.35 82.712C120.35 81.72 120.478 80.824 120.734 80.024C121.006 79.224 121.39 78.544 121.886 77.984C122.382 77.408 122.99 76.968 123.71 76.664C124.43 76.344 125.246 76.184 126.158 76.184C127.134 76.184 127.982 76.352 128.702 76.688C129.422 77.024 130.014 77.48 130.478 78.056C130.942 78.632 131.286 79.304 131.51 80.072C131.75 80.824 131.87 81.632 131.87 82.496V83.504H123.542V83.816C123.542 84.728 123.798 85.464 124.31 86.024C124.822 86.568 125.582 86.84 126.59 86.84C127.358 86.84 127.982 86.68 128.462 86.36C128.958 86.04 129.398 85.632 129.782 85.136L131.438 86.984C130.926 87.704 130.222 88.272 129.326 88.688C128.446 89.088 127.422 89.288 126.254 89.288ZM126.206 78.488C125.39 78.488 124.742 78.76 124.262 79.304C123.782 79.848 123.542 80.552 123.542 81.416V81.608H128.678V81.392C128.678 80.528 128.462 79.832 128.03 79.304C127.614 78.76 127.006 78.488 126.206 78.488ZM134.573 76.472H137.645V78.536H137.741C137.965 77.816 138.389 77.248 139.013 76.832C139.637 76.4 140.365 76.184 141.197 76.184C142.797 76.184 144.013 76.752 144.845 77.888C145.693 79.008 146.117 80.616 146.117 82.712C146.117 84.824 145.693 86.448 144.845 87.584C144.013 88.72 142.797 89.288 141.197 89.288C140.365 89.288 139.637 89.072 139.013 88.64C138.405 88.208 137.981 87.632 137.741 86.912H137.645V93.8H134.573V76.472ZM140.213 86.744C141.013 86.744 141.661 86.48 142.157 85.952C142.653 85.424 142.901 84.712 142.901 83.816V81.656C142.901 80.76 142.653 80.048 142.157 79.52C141.661 78.976 141.013 78.704 140.213 78.704C139.477 78.704 138.861 78.888 138.365 79.256C137.885 79.624 137.645 80.112 137.645 80.72V84.704C137.645 85.36 137.885 85.864 138.365 86.216C138.861 86.568 139.477 86.744 140.213 86.744ZM148.964 76.472H152.036V78.536H152.132C152.356 77.816 152.78 77.248 153.404 76.832C154.028 76.4 154.756 76.184 155.588 76.184C157.188 76.184 158.404 76.752 159.236 77.888C160.084 79.008 160.508 80.616 160.508 82.712C160.508 84.824 160.084 86.448 159.236 87.584C158.404 88.72 157.188 89.288 155.588 89.288C154.756 89.288 154.028 89.072 153.404 88.64C152.796 88.208 152.372 87.632 152.132 86.912H152.036V93.8H148.964V76.472ZM154.604 86.744C155.404 86.744 156.052 86.48 156.548 85.952C157.044 85.424 157.292 84.712 157.292 83.816V81.656C157.292 80.76 157.044 80.048 156.548 79.52C156.052 78.976 155.404 78.704 154.604 78.704C153.868 78.704 153.252 78.888 152.756 79.256C152.276 79.624 152.036 80.112 152.036 80.72V84.704C152.036 85.36 152.276 85.864 152.756 86.216C153.252 86.568 153.868 86.744 154.604 86.744ZM170.842 86.912H170.722C170.61 87.232 170.458 87.536 170.266 87.824C170.09 88.096 169.858 88.344 169.57 88.568C169.298 88.792 168.962 88.968 168.562 89.096C168.178 89.224 167.73 89.288 167.218 89.288C165.922 89.288 164.93 88.864 164.242 88.016C163.554 87.168 163.21 85.96 163.21 84.392V76.472H166.282V84.08C166.282 84.944 166.45 85.608 166.786 86.072C167.122 86.52 167.658 86.744 168.394 86.744C168.698 86.744 168.994 86.704 169.282 86.624C169.586 86.544 169.85 86.424 170.074 86.264C170.298 86.088 170.482 85.88 170.626 85.64C170.77 85.384 170.842 85.088 170.842 84.752V76.472H173.914V89H170.842V86.912ZM177.464 89V76.472H180.536V79.064H180.656C180.736 78.728 180.856 78.408 181.016 78.104C181.192 77.784 181.416 77.504 181.688 77.264C181.96 77.024 182.28 76.832 182.648 76.688C183.032 76.544 183.472 76.472 183.968 76.472H184.64V79.376H183.68C182.64 79.376 181.856 79.528 181.328 79.832C180.8 80.136 180.536 80.632 180.536 81.32V89H177.464Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/kjosarhreppur.svg b/libs/application/templates/financial-aid/src/svg/kjosarhreppur.svg deleted file mode 100644 index 953260202841..000000000000 --- a/libs/application/templates/financial-aid/src/svg/kjosarhreppur.svg +++ /dev/null @@ -1,27 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57883)"> -<path d="M15.625 59.3298C15.6494 59.4031 15.6617 59.4642 15.6861 59.5375C15.6617 59.4642 15.6372 59.4031 15.625 59.3298Z" fill="#EDF8F6"/> -<path d="M18.3027 68.6165C18.3394 68.6654 18.3638 68.7143 18.4005 68.7631C18.3638 68.7143 18.3272 68.6654 18.3027 68.6165Z" fill="#EDF8F6"/> -<path d="M54.543 31.4697C54.5918 31.433 54.6407 31.4086 54.6896 31.3719C54.6407 31.3964 54.5918 31.433 54.543 31.4697Z" fill="#EDF8F6"/> -<path d="M54.7148 31.3597C54.7515 31.3353 54.7759 31.3108 54.8126 31.2742C54.7759 31.2986 54.7393 31.3353 54.7148 31.3597Z" fill="#EDF8F6"/> -<path d="M48.373 30.7365L48.4097 30.712L48.4341 30.7487C48.4097 30.7487 48.3853 30.7365 48.373 30.7365Z" fill="#EDF8F6"/> -<path d="M22.7989 53.5866C22.7867 53.5744 22.7622 53.5622 22.75 53.5622C22.7744 53.5744 22.7867 53.5744 22.7989 53.5866Z" fill="#FEFEFE"/> -<path d="M18.0816 64.523C18.0694 64.5352 18.045 64.5474 18.0328 64.5474C18.0205 64.5474 18.0083 64.523 17.9961 64.5107C18.0205 64.523 18.0572 64.523 18.0816 64.523Z" fill="#FAFDFC"/> -<path d="M46.7356 95.7312C46.2346 95.5723 34.4674 91.6866 24.7897 81.0191C14.9653 70.205 14.0367 58.2056 14.0122 57.7046L14 57.6068V16H81.1086V57.6068L81.0964 57.7046C81.0597 58.2056 80.1311 70.1928 70.3067 81.0313C60.629 91.6988 48.8618 95.5845 48.3608 95.7434L47.5299 96.0122L46.7356 95.7312Z" fill="#2961AD"/> -<path d="M47.1029 94.5703C46.6141 94.4115 35.1524 90.6357 25.6946 80.2004C16.1635 69.6918 15.2593 58.1078 15.2227 57.6191V57.5702V17.2219H79.8874V57.5702V57.6191C79.8507 58.1078 78.9587 69.6918 69.4154 80.2004C59.9576 90.6357 48.4959 94.4115 48.0071 94.5703L47.555 94.717L47.1029 94.5703Z" fill="white"/> -<path d="M61.5217 29.5635C61.0696 29.258 60.5931 29.2336 60.0799 29.3802C58.7968 29.759 57.5138 30.1011 56.2308 30.4799C55.7053 30.6388 55.2899 31.0176 54.8133 31.2742C54.7767 31.2986 54.7522 31.3231 54.7156 31.3597L54.6911 31.3719C54.6423 31.4086 54.5445 31.4697 54.5445 31.4697L54.4468 31.5186C54.4468 31.5186 53.1393 32.2395 52.5039 32.6305C52.1862 32.826 51.9296 32.8138 51.6119 32.6183C51.0131 32.2517 50.3899 31.9096 49.7912 31.5552C49.7423 31.5308 48.4226 30.7488 48.4226 30.7488C48.4226 30.7488 48.2027 30.6266 48.1905 30.6143C47.1762 30.0156 47.1762 30.0156 46.1743 30.761C45.9421 30.932 45.7099 31.0909 45.4778 31.262C44.5247 31.9707 44.5369 31.9585 43.596 31.2131C42.2519 30.1622 40.8711 29.148 39.5269 28.1094C39.2703 27.9016 39.087 27.9383 38.8304 28.0972C36.1666 29.7346 33.4784 31.3475 30.8146 32.9849C30.4969 33.1804 30.2402 33.2048 29.9103 33.0338C29.1405 32.6305 28.3462 32.264 27.5764 31.8485C27.3198 31.7141 27.0999 31.7141 26.8311 31.8241C25.3525 32.4472 23.874 33.0704 22.371 33.6447C21.479 33.9991 20.5259 34.1457 19.5728 34.158C18.6563 34.0724 17.7276 34.0358 16.799 34.0969C16.7623 34.0846 16.7257 34.0602 16.6768 34.048C16.6646 29.1602 16.6646 24.2847 16.6523 19.397C16.6523 18.6027 16.6523 18.6027 17.4344 18.6027C29.6904 18.6027 41.9342 18.6027 54.1901 18.6027C62.2549 18.6027 70.3074 18.6027 78.3722 18.5905V18.6272L78.3967 18.6394C78.3967 18.9693 78.3844 19.287 78.3844 19.6169C78.3844 27.2785 78.3722 34.94 78.3722 42.5893L78.36 42.6015C77.1747 42.1738 76.0017 41.7339 74.8164 41.3063C74.3032 41.0985 73.8144 40.8541 73.289 40.7075C72.4092 40.4631 71.8593 39.8766 71.3461 39.1801C70.002 37.3716 65.4808 31.4941 65.4564 31.4453C65.322 31.2131 65.0043 31.0542 65.0043 31.0542C63.8556 30.5532 62.6948 30.0645 61.5217 29.5635Z" fill="#1791CF"/> -<path d="M66.164 46.5239C64.3556 46.8905 62.5471 47.2449 60.7264 47.6114C58.6369 48.0391 56.5474 48.4546 54.5434 49.1877C54.0058 49.3832 53.3704 49.5421 53.4681 50.3608C53.5048 50.6418 53.236 50.6052 53.0771 50.6174C52.4051 50.6663 51.733 50.7029 51.0732 50.7396C50.0223 50.8007 48.9592 50.8618 47.9083 50.9351C47.5906 50.9595 47.3707 50.9351 47.3218 50.5319C47.2241 49.8109 46.7842 49.5543 46.0632 49.5177C42.2019 49.2977 38.3406 49.371 34.4671 49.4077C31.5222 49.4321 28.5651 49.4199 25.6203 49.5543C25.3759 49.5543 25.1315 49.5543 24.8871 49.5543C24.8016 49.5543 24.7283 49.5543 24.6427 49.5543C24.3617 49.5543 24.0684 49.5665 23.7874 49.5665C22.9198 49.5665 22.0522 49.5665 21.1847 49.5665C19.7306 49.5421 18.2765 49.6765 16.8346 49.5421C16.8468 49.5054 16.8468 49.4566 16.8224 49.4199C16.8224 49.2977 16.8224 49.1755 16.8101 49.0533C16.8468 47.1104 16.8468 45.1554 16.7735 43.2125C16.8101 42.9192 16.8224 42.626 16.7613 42.3327C16.7979 42.296 16.7979 42.2716 16.7613 42.2349C16.8346 41.6973 16.7735 41.1719 16.7246 40.6342C16.7979 40.512 16.7979 40.3776 16.7246 40.2554C16.7246 40.0477 16.7246 39.8522 16.7246 39.6444C16.7368 39.4 16.7613 39.1557 16.7613 38.9235C16.7613 37.6649 16.6757 36.4063 16.7735 35.1477C16.8712 35.1477 16.9812 35.1355 17.079 35.1355C18.1054 35.1477 19.144 35.1722 20.1705 35.1844C23.3719 35.2088 26.5734 35.2333 29.7871 35.2577C29.8726 35.2577 29.9459 35.2577 30.0315 35.2577C30.8379 35.3554 31.6566 35.3677 32.4631 35.3432C32.793 35.3554 33.123 35.3554 33.4529 35.3677C33.4895 35.3677 33.5384 35.3677 33.5751 35.3677C35.689 35.4899 37.803 35.5754 39.9047 35.7465C43.4849 36.0519 47.053 36.5041 50.6088 37.0173C55.0322 37.6527 59.4312 38.4225 63.7935 39.3756C67.3982 40.1576 70.9907 41.0374 74.522 42.125C74.6809 42.1738 74.8398 42.1861 74.9986 42.2227C75.1819 42.3571 75.3896 42.3938 75.6096 42.4304C75.6585 42.4427 75.6951 42.4549 75.744 42.4671C75.9028 42.6382 76.135 42.6137 76.3427 42.6626C76.416 42.687 76.4894 42.7115 76.5627 42.7237C76.9415 42.8703 77.3081 43.0048 77.6869 43.1514C77.7602 43.1636 77.8457 43.188 77.919 43.2003C78.2123 43.9334 78.139 44.0923 77.418 44.2389C75.9517 44.5444 74.4732 44.7155 73.0313 45.1431C72.6036 45.1431 72.1759 45.1798 71.7849 45.3753L71.736 45.3631L71.6872 45.3875C70.4775 45.5342 69.2922 45.7663 68.1313 46.1085C68.1313 46.1085 68.1313 46.0962 68.1313 46.1085C67.6792 46.1329 67.2393 46.2062 66.8117 46.3773H66.7994C66.665 46.3528 66.5306 46.3406 66.4206 46.4506C66.3229 46.4873 66.2496 46.4995 66.164 46.5239Z" fill="#2961AD"/> -<path d="M78.5921 45.1798C78.6043 47.9414 78.6043 50.7152 78.6287 53.4768C78.6287 53.9289 78.421 53.9655 78.0667 53.9411C75.4028 53.77 72.7512 53.6112 70.0874 53.4279C67.2037 53.2446 64.3199 53.0491 61.4483 52.8414C59.7499 52.7192 58.0391 52.597 56.3407 52.4381C55.3387 52.3526 54.4222 51.3873 54.2756 50.3975C54.2267 50.0309 54.4833 50.0065 54.691 49.9209C55.9619 49.4322 57.2938 49.1267 58.6135 48.8212C62.1937 48.0025 65.8107 47.3427 69.4276 46.7072C72.2625 46.2063 75.1096 45.7419 77.9567 45.2531C78.0911 45.2287 78.2377 45.1921 78.3721 45.1554C78.4577 45.1676 78.5188 45.1676 78.5921 45.1798Z" fill="#1FAC4C"/> -<path d="M49.8284 52.5114C49.2786 52.5114 48.7287 52.4992 48.1788 52.5114C47.7756 52.5236 47.6167 52.267 47.5923 51.9493C47.5679 51.5949 47.91 51.6805 48.0933 51.6683C49.8773 51.5461 51.6613 51.4361 53.4576 51.3261C53.7508 51.3017 53.8853 51.4727 54.0197 51.7049C54.6062 52.6947 55.4371 53.159 56.6102 53.2323C60.9969 53.5012 65.3714 53.8555 69.7582 54.161C72.3975 54.3443 75.0369 54.5276 77.6763 54.6498C78.3239 54.6742 78.4461 54.8942 78.4339 55.4685C78.4217 58.4622 77.8962 61.3826 77.0042 64.2297C75.1102 70.3027 71.8355 75.5571 67.4732 80.1515C64.2961 83.4996 60.667 86.3101 56.7201 88.7051C54.1052 90.2936 51.3803 91.6744 48.5943 92.9574C47.6167 93.4095 46.8714 93.1285 46.0649 92.7619C41.2505 90.5868 36.7049 87.9475 32.5625 84.6605C28.9089 81.7645 25.7075 78.4408 23.1048 74.5551C22.4694 73.6142 22.5916 73.6875 23.4713 73.3331C29.691 70.8404 35.8251 68.1277 41.8981 65.305C43.0223 64.7796 44.1342 64.2297 45.1851 63.5699C46.2848 62.8978 46.3826 62.1402 45.4539 61.2116C44.5008 60.2707 43.3033 59.6841 42.2036 58.9632C41.7759 58.6822 41.3482 58.4133 40.9816 58.0468C40.7617 57.8268 40.7861 57.6924 41.0672 57.5458C41.6659 57.2281 42.3258 57.0814 42.9734 56.947C45.3317 56.4216 47.7145 56.0306 50.0606 55.444C50.9282 55.2241 51.7835 54.9797 52.5656 54.5276C52.9933 54.2832 53.3476 53.9777 53.2865 53.4278C53.2254 52.8902 52.7611 52.8291 52.3578 52.6947C51.5392 52.4136 50.6838 52.5236 49.8284 52.5114Z" fill="#1791CF"/> -<path d="M16.8345 50.4341C18.6552 50.2997 20.4881 50.3608 22.321 50.2997C22.8097 50.2875 23.2985 50.2752 23.7873 50.263C24.0317 50.263 24.2761 50.263 24.5204 50.263C26.8177 50.3363 29.1149 50.1897 31.4122 50.1775C35.7256 50.153 40.039 50.0431 44.3524 50.1775C44.8656 50.1897 45.3666 50.2875 45.8676 50.263C46.4542 50.2264 46.5886 50.5563 46.6619 51.0206C46.7352 51.4972 46.7596 51.9859 46.9429 52.4503C47.1873 53.0613 47.615 53.3179 48.2626 53.3056C49.4357 53.269 50.6209 53.1712 51.794 53.3423C52.0262 53.379 52.3928 53.3545 52.4416 53.5622C52.5027 53.8677 52.1361 53.941 51.904 54.0388C50.2177 54.7842 48.397 55.053 46.613 55.444C44.6701 55.8717 42.6784 56.0917 40.821 56.8493C39.8191 57.2525 39.7091 57.9123 40.5033 58.6455C41.3709 59.452 42.434 59.9896 43.4238 60.625C43.937 60.955 44.438 61.2971 44.8901 61.7126C45.4644 62.2502 45.4399 62.5801 44.7557 62.9711C42.8128 64.0831 40.7844 65.024 38.756 65.9527C34.6381 67.8344 30.4835 69.6185 26.3167 71.3781C25.6324 71.6713 24.9115 71.8913 24.2761 72.2945C24.0317 72.2823 23.8362 72.3678 23.6651 72.5389C23.384 72.5633 23.103 72.6733 22.8831 72.8199C22.4309 73.1376 22.1621 72.9666 21.9299 72.5389C21.4656 71.6713 20.9768 70.8282 20.5003 69.9606C19.9138 68.5432 19.2295 67.1746 18.7529 65.7083C18.5574 65.1095 18.1908 64.5352 18.3008 63.8632C18.9484 63.9854 19.6694 63.741 20.2315 64.2908C20.317 64.3764 20.4636 64.3397 20.5736 64.2542C20.9035 63.9976 21.3068 63.9487 21.71 63.8754C21.6978 63.912 21.71 63.9487 21.7467 63.9731C21.4778 64.8896 21.209 65.806 20.928 66.7103C20.7325 67.3701 21.319 67.2724 21.6122 67.3701C22.0277 67.5167 21.8689 67.1013 21.8689 66.9424C21.9055 66.1237 22.0277 65.3295 22.5287 64.6452C22.8097 64.1198 23.1763 64.0098 23.6651 64.413C23.9217 64.6208 24.1905 64.4986 24.4716 64.413C25.0825 64.2175 25.278 64.3397 25.4002 64.9751C25.5102 65.4883 25.608 66.0138 25.7057 66.527C25.9135 67.5778 26.2067 67.7489 27.3187 67.4068C26.7077 66.9669 26.5733 66.3315 26.4755 65.6838C26.3778 65.0362 26.5244 64.9018 27.1476 65.0484C27.4042 65.1095 27.5875 65.2317 27.7341 65.4395C27.8441 65.5861 27.9296 65.7572 28.1374 65.7816C28.8461 65.8427 29.4937 66.3437 30.2513 66.0749C30.4835 65.9893 30.6179 66.2093 30.7645 66.3437C31.1678 66.7469 31.5954 67.1257 32.0842 67.419C32.4997 67.6512 32.9151 67.4801 32.9518 67.0402C33.0618 65.9038 32.7318 64.7185 33.3795 63.6554C33.1473 62.8978 33.4772 62.2746 33.8805 61.6759C33.9293 61.5904 33.9904 61.4559 33.9049 61.3338C33.8438 61.3582 33.7949 61.3704 33.7338 61.4071C33.0007 61.7981 33.0495 61.7859 32.8418 60.9427C32.6341 60.1118 32.4508 59.2198 31.4977 58.841C30.7401 58.059 30.0436 57.2158 29.5548 56.2261L29.567 56.1894L29.5426 56.165C29.4448 55.273 28.9927 54.7231 28.0763 54.5765C27.6853 54.5154 27.2576 54.4543 26.9521 54.1488C26.4878 53.6722 25.889 53.4278 25.2658 53.3667C23.9706 53.2568 22.712 52.9879 21.429 52.7069C20.097 52.4258 18.6918 52.4503 17.311 52.3892C16.9567 52.377 16.8467 52.2792 16.8467 51.9371C16.8589 51.4727 16.8345 51.0084 16.8223 50.5318C16.8345 50.5074 16.8467 50.4707 16.8345 50.4341Z" fill="#1FAC4C"/> -<path d="M29.4825 62.7878C29.287 62.8367 29.1037 62.8856 28.9082 62.9344C29.3603 61.8592 31.0099 61.4804 32.1219 62.1402C32.4396 62.3235 32.1463 62.5312 32.1952 62.7145C31.963 62.7145 31.7187 62.7267 31.4865 62.7267L31.462 62.7023L31.4376 62.7145C30.9855 62.5556 30.5334 62.4823 30.069 62.7023C29.8613 62.6901 29.678 62.7267 29.4825 62.7878Z" fill="#1FAC4C"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.368 67.416L101.136 70.056V75H97.968V58.248H101.136V66.504H101.256L103.632 63.36L107.784 58.248H111.432L105.6 65.232L111.912 75H108.144L103.368 67.416ZM114.042 62.472H117.114V76.512C117.114 77.568 116.85 78.376 116.322 78.936C115.794 79.512 114.954 79.8 113.802 79.8H112.122V77.352H114.042V62.472ZM115.578 60.648C114.938 60.648 114.474 60.504 114.186 60.216C113.914 59.928 113.778 59.56 113.778 59.112V58.632C113.778 58.184 113.914 57.816 114.186 57.528C114.474 57.24 114.938 57.096 115.578 57.096C116.202 57.096 116.658 57.24 116.946 57.528C117.234 57.816 117.378 58.184 117.378 58.632V59.112C117.378 59.56 117.234 59.928 116.946 60.216C116.658 60.504 116.202 60.648 115.578 60.648ZM125.642 75.288C124.746 75.288 123.938 75.136 123.218 74.832C122.514 74.528 121.906 74.088 121.394 73.512C120.898 72.936 120.514 72.248 120.242 71.448C119.97 70.632 119.834 69.72 119.834 68.712C119.834 67.704 119.97 66.8 120.242 66C120.514 65.2 120.898 64.52 121.394 63.96C121.906 63.384 122.514 62.944 123.218 62.64C123.938 62.336 124.746 62.184 125.642 62.184C126.538 62.184 127.346 62.336 128.066 62.64C128.786 62.944 129.394 63.384 129.89 63.96C130.402 64.52 130.794 65.2 131.066 66C131.338 66.8 131.474 67.704 131.474 68.712C131.474 69.72 131.338 70.632 131.066 71.448C130.794 72.248 130.402 72.936 129.89 73.512C129.394 74.088 128.786 74.528 128.066 74.832C127.346 75.136 126.538 75.288 125.642 75.288ZM125.642 72.816C126.458 72.816 127.098 72.568 127.562 72.072C128.026 71.576 128.258 70.848 128.258 69.888V67.56C128.258 66.616 128.026 65.896 127.562 65.4C127.098 64.904 126.458 64.656 125.642 64.656C124.842 64.656 124.21 64.904 123.746 65.4C123.282 65.896 123.05 66.616 123.05 67.56V69.888C123.05 70.848 123.282 71.576 123.746 72.072C124.21 72.568 124.842 72.816 125.642 72.816ZM125.978 61.056L124.13 60.168L126.41 55.68L129.002 56.952L125.978 61.056ZM138.302 75.288C137.102 75.288 136.094 75.088 135.278 74.688C134.462 74.272 133.742 73.704 133.118 72.984L134.99 71.16C135.454 71.688 135.958 72.104 136.502 72.408C137.062 72.712 137.702 72.864 138.422 72.864C139.158 72.864 139.686 72.736 140.006 72.48C140.342 72.224 140.51 71.872 140.51 71.424C140.51 71.056 140.39 70.768 140.15 70.56C139.926 70.336 139.534 70.184 138.974 70.104L137.726 69.936C136.366 69.76 135.326 69.376 134.606 68.784C133.902 68.176 133.55 67.296 133.55 66.144C133.55 65.536 133.662 64.992 133.886 64.512C134.11 64.016 134.43 63.6 134.846 63.264C135.262 62.912 135.758 62.648 136.334 62.472C136.926 62.28 137.582 62.184 138.302 62.184C138.91 62.184 139.446 62.232 139.91 62.328C140.39 62.408 140.822 62.536 141.206 62.712C141.59 62.872 141.942 63.08 142.262 63.336C142.582 63.576 142.894 63.848 143.198 64.152L141.398 65.952C141.03 65.568 140.59 65.248 140.078 64.992C139.566 64.736 139.006 64.608 138.398 64.608C137.726 64.608 137.238 64.728 136.934 64.968C136.646 65.208 136.502 65.52 136.502 65.904C136.502 66.32 136.622 66.64 136.862 66.864C137.118 67.072 137.542 67.224 138.134 67.32L139.406 67.488C142.11 67.872 143.462 69.104 143.462 71.184C143.462 71.792 143.334 72.352 143.078 72.864C142.838 73.36 142.494 73.792 142.046 74.16C141.598 74.512 141.054 74.792 140.414 75C139.79 75.192 139.086 75.288 138.302 75.288ZM155.39 75C154.718 75 154.182 74.808 153.782 74.424C153.398 74.024 153.158 73.496 153.062 72.84H152.918C152.71 73.656 152.286 74.272 151.646 74.688C151.006 75.088 150.214 75.288 149.27 75.288C147.99 75.288 147.006 74.952 146.318 74.28C145.63 73.608 145.286 72.712 145.286 71.592C145.286 70.296 145.75 69.336 146.678 68.712C147.606 68.072 148.926 67.752 150.638 67.752H152.774V66.84C152.774 66.136 152.59 65.592 152.222 65.208C151.854 64.824 151.262 64.632 150.446 64.632C149.726 64.632 149.142 64.792 148.694 65.112C148.262 65.416 147.894 65.784 147.59 66.216L145.766 64.584C146.23 63.864 146.846 63.288 147.614 62.856C148.382 62.408 149.398 62.184 150.662 62.184C152.358 62.184 153.646 62.568 154.526 63.336C155.406 64.104 155.846 65.208 155.846 66.648V72.552H157.094V75H155.39ZM150.302 73.056C150.99 73.056 151.574 72.904 152.054 72.6C152.534 72.296 152.774 71.848 152.774 71.256V69.6H150.806C149.206 69.6 148.406 70.112 148.406 71.136V71.544C148.406 72.056 148.566 72.44 148.886 72.696C149.222 72.936 149.694 73.056 150.302 73.056ZM159.581 75V62.472H162.653V65.064H162.773C162.853 64.728 162.973 64.408 163.133 64.104C163.309 63.784 163.533 63.504 163.805 63.264C164.077 63.024 164.397 62.832 164.765 62.688C165.149 62.544 165.589 62.472 166.085 62.472H166.757V65.376H165.797C164.757 65.376 163.973 65.528 163.445 65.832C162.917 66.136 162.653 66.632 162.653 67.32V75H159.581ZM169.003 57.24H172.075V64.56H172.195C172.451 63.888 172.851 63.328 173.395 62.88C173.955 62.416 174.723 62.184 175.699 62.184C176.995 62.184 177.987 62.608 178.675 63.456C179.363 64.304 179.707 65.512 179.707 67.08V75H176.635V67.392C176.635 66.496 176.475 65.824 176.155 65.376C175.835 64.928 175.307 64.704 174.571 64.704C174.251 64.704 173.939 64.752 173.635 64.848C173.347 64.928 173.083 65.056 172.843 65.232C172.619 65.392 172.435 65.6 172.291 65.856C172.147 66.096 172.075 66.384 172.075 66.72V75H169.003V57.24ZM183.112 75V62.472H186.184V65.064H186.304C186.384 64.728 186.504 64.408 186.664 64.104C186.84 63.784 187.064 63.504 187.336 63.264C187.608 63.024 187.928 62.832 188.296 62.688C188.68 62.544 189.12 62.472 189.616 62.472H190.288V65.376H189.328C188.288 65.376 187.504 65.528 186.976 65.832C186.448 66.136 186.184 66.632 186.184 67.32V75H183.112ZM197.481 75.288C196.553 75.288 195.721 75.136 194.985 74.832C194.265 74.512 193.649 74.072 193.137 73.512C192.641 72.936 192.257 72.248 191.985 71.448C191.713 70.632 191.577 69.72 191.577 68.712C191.577 67.72 191.705 66.824 191.961 66.024C192.233 65.224 192.617 64.544 193.113 63.984C193.609 63.408 194.217 62.968 194.937 62.664C195.657 62.344 196.473 62.184 197.385 62.184C198.361 62.184 199.209 62.352 199.929 62.688C200.649 63.024 201.241 63.48 201.705 64.056C202.169 64.632 202.513 65.304 202.737 66.072C202.977 66.824 203.097 67.632 203.097 68.496V69.504H194.769V69.816C194.769 70.728 195.025 71.464 195.537 72.024C196.049 72.568 196.809 72.84 197.817 72.84C198.585 72.84 199.209 72.68 199.689 72.36C200.185 72.04 200.625 71.632 201.009 71.136L202.665 72.984C202.153 73.704 201.449 74.272 200.553 74.688C199.673 75.088 198.649 75.288 197.481 75.288ZM197.433 64.488C196.617 64.488 195.969 64.76 195.489 65.304C195.009 65.848 194.769 66.552 194.769 67.416V67.608H199.905V67.392C199.905 66.528 199.689 65.832 199.257 65.304C198.841 64.76 198.233 64.488 197.433 64.488ZM205.799 62.472H208.871V64.536H208.967C209.191 63.816 209.615 63.248 210.239 62.832C210.863 62.4 211.591 62.184 212.423 62.184C214.023 62.184 215.239 62.752 216.071 63.888C216.919 65.008 217.343 66.616 217.343 68.712C217.343 70.824 216.919 72.448 216.071 73.584C215.239 74.72 214.023 75.288 212.423 75.288C211.591 75.288 210.863 75.072 210.239 74.64C209.631 74.208 209.207 73.632 208.967 72.912H208.871V79.8H205.799V62.472ZM211.439 72.744C212.239 72.744 212.887 72.48 213.383 71.952C213.879 71.424 214.127 70.712 214.127 69.816V67.656C214.127 66.76 213.879 66.048 213.383 65.52C212.887 64.976 212.239 64.704 211.439 64.704C210.703 64.704 210.087 64.888 209.591 65.256C209.111 65.624 208.871 66.112 208.871 66.72V70.704C208.871 71.36 209.111 71.864 209.591 72.216C210.087 72.568 210.703 72.744 211.439 72.744ZM220.19 62.472H223.262V64.536H223.358C223.582 63.816 224.006 63.248 224.63 62.832C225.254 62.4 225.982 62.184 226.814 62.184C228.414 62.184 229.63 62.752 230.462 63.888C231.31 65.008 231.734 66.616 231.734 68.712C231.734 70.824 231.31 72.448 230.462 73.584C229.63 74.72 228.414 75.288 226.814 75.288C225.982 75.288 225.254 75.072 224.63 74.64C224.022 74.208 223.598 73.632 223.358 72.912H223.262V79.8H220.19V62.472ZM225.83 72.744C226.63 72.744 227.278 72.48 227.774 71.952C228.27 71.424 228.518 70.712 228.518 69.816V67.656C228.518 66.76 228.27 66.048 227.774 65.52C227.278 64.976 226.63 64.704 225.83 64.704C225.094 64.704 224.478 64.888 223.982 65.256C223.502 65.624 223.262 66.112 223.262 66.72V70.704C223.262 71.36 223.502 71.864 223.982 72.216C224.478 72.568 225.094 72.744 225.83 72.744ZM242.069 72.912H241.949C241.837 73.232 241.685 73.536 241.493 73.824C241.317 74.096 241.085 74.344 240.797 74.568C240.525 74.792 240.189 74.968 239.789 75.096C239.405 75.224 238.957 75.288 238.445 75.288C237.149 75.288 236.157 74.864 235.469 74.016C234.781 73.168 234.437 71.96 234.437 70.392V62.472H237.509V70.08C237.509 70.944 237.677 71.608 238.013 72.072C238.349 72.52 238.885 72.744 239.621 72.744C239.925 72.744 240.221 72.704 240.509 72.624C240.813 72.544 241.077 72.424 241.301 72.264C241.525 72.088 241.709 71.88 241.853 71.64C241.997 71.384 242.069 71.088 242.069 70.752V62.472H245.141V75H242.069V72.912ZM248.69 75V62.472H251.762V65.064H251.882C251.962 64.728 252.082 64.408 252.242 64.104C252.418 63.784 252.642 63.504 252.914 63.264C253.186 63.024 253.506 62.832 253.874 62.688C254.258 62.544 254.698 62.472 255.194 62.472H255.866V65.376H254.906C253.866 65.376 253.082 65.528 252.554 65.832C252.026 66.136 251.762 66.632 251.762 67.32V75H248.69Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57883"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/kopavogur.svg b/libs/application/templates/financial-aid/src/svg/kopavogur.svg deleted file mode 100644 index 371e92b85750..000000000000 --- a/libs/application/templates/financial-aid/src/svg/kopavogur.svg +++ /dev/null @@ -1,9 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M74.2716 65.4208C74.2716 72.5869 68.5926 77.2818 63.8395 81.9151L47.7284 96L30.7531 81.9151C26.1235 77.2818 21 72.6486 21 65.4826V16.0618L74.3333 16L74.2716 65.4208Z" fill="#008C44"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M73.5304 63.444V62.1467H59.1476C59.1476 62.1467 58.4069 56.4015 57.9131 53.7452H73.5304V52.3861H63.2217C62.481 48.3089 61.7402 45.6525 60.0118 40.3398C58.3452 35.027 55.5674 27.7374 53.7155 24.7722C51.8637 21.8069 49.9501 19.6448 47.6662 19.6448C45.3822 19.6448 43.4069 21.8069 41.6168 24.7722C39.7649 27.7374 36.9871 35.027 35.3205 40.3398C33.6538 45.6525 32.9131 48.3089 32.1106 52.3861H21.7402V53.7452H37.3575C36.802 56.3398 36.1229 62.1467 36.1229 62.1467H21.7402V63.444H73.5304Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M57.6054 62.0849C57.1733 55.8455 55.8153 49.2973 54.3955 44.2316C52.9758 39.166 52.1733 37.0038 51.6795 35.8301C51.1857 34.6564 49.5807 31.8764 47.7906 31.8764H47.7289C45.9388 31.8764 44.3338 34.6564 43.84 35.8301C43.3462 37.0038 42.5437 39.2278 41.1239 44.2316C39.7042 49.2355 38.2844 55.7838 37.9141 62.0849H57.6054Z" fill="#008C44"/> -<path d="M62.6046 75.2432C62.4811 75.1815 59.8268 73.6371 55.8145 72.834C55.2589 70.1776 52.5429 67.7683 52.3577 67.583L51.2466 66.7799V71.4749H52.4811V69.4981C53.0984 70.2394 54.0244 71.4749 54.333 72.5251C52.7281 72.278 49.333 71.9691 46.6787 72.834C45.3206 73.2664 44.2095 73.8224 43.2836 74.5019C43.3453 74.3166 43.4071 74.193 43.4071 74.0077C43.654 72.9575 43.4688 71.3513 42.6046 70.2394C42.049 69.5598 41.0614 68.7567 39.1478 68.7567C37.7281 68.7567 35.691 69.8069 34.5799 71.7838C33.7157 73.3282 33.0367 75.9228 35.1355 79.5676C35.7527 80.6177 38.4071 83.8919 42.5429 85.0038C43.8392 85.3745 45.0737 85.4981 46.2466 85.4981C49.5182 85.4981 52.2342 84.2008 53.9626 81.8533C55.9997 79.0116 56.1848 76.4787 55.9379 74.193C58.2836 74.6872 60.0737 75.4903 61.0614 75.9228L59.0243 77.5907C59.0243 77.5907 58.1602 76.0463 58.2836 76.2316C58.3453 76.417 57.7898 75.3668 57.296 75.305C56.9256 75.2432 56.5552 75.3668 56.5552 75.3668L58.654 79.5676L63.2219 75.6139L62.6046 75.2432ZM52.8515 80.9884C50.8145 83.8301 47.1725 84.7567 42.9132 83.6448C39.1478 82.6564 36.7404 79.6293 36.3083 78.888C34.5799 75.861 35.012 73.7606 35.7527 72.5251C36.6787 70.9189 38.2836 70.1776 39.1478 70.1776C40.1972 70.1776 40.9997 70.4865 41.4935 71.166C42.1725 71.9691 42.1725 73.2046 42.049 73.8224C41.8021 74.8108 41.4318 75.1815 40.7527 75.4286C40.1972 75.6757 39.0861 75.4903 38.5305 75.305L38.1602 76.5405C38.3453 76.6023 40.0737 77.0965 41.3083 76.6023L41.4935 76.4788C41.1231 77.0965 40.9379 77.776 40.9379 78.5174C40.8762 79.5058 41.0614 80.3089 41.37 80.8649C40.9379 80.9884 40.4441 81.0502 40.4441 81.0502C40.4441 81.0502 40.6293 81.4208 40.8145 81.6679C40.9997 81.915 41.1848 82.1621 41.1848 82.1621C41.2466 82.1621 41.4935 82.1622 42.2342 81.9768C43.1602 82.6564 44.3947 82.8417 45.2589 82.9035C45.5676 82.9652 45.8762 82.9652 46.1848 82.9652C49.1478 82.9652 50.9379 81.2355 50.9997 81.1737L51.6787 80.4942L46.9256 78.2703L46.6169 78.4556C46.6169 78.4556 45.3206 79.3204 44.0861 79.8764C43.5923 80.1235 43.0984 80.3089 42.6046 80.4324C42.296 80 42.1725 79.3822 42.1725 78.4556C42.2342 76.5405 43.9626 74.9344 46.9873 73.9459C49.6416 73.0811 53.2219 73.5135 54.5182 73.7606C54.8268 76.417 54.5799 78.5791 52.8515 80.9884ZM44.0244 81.3591C44.2095 81.2973 44.4564 81.1737 44.6416 81.112C45.6293 80.6795 46.6169 80.0618 47.049 79.7529L49.333 80.8031C48.5305 81.2355 47.2342 81.7915 45.4441 81.6062C44.8885 81.6062 44.4564 81.4826 44.0244 81.3591Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.368 67.416L101.136 70.056V75H97.968V58.248H101.136V66.504H101.256L103.632 63.36L107.784 58.248H111.432L105.6 65.232L111.912 75H108.144L103.368 67.416ZM118.4 75.288C117.504 75.288 116.696 75.136 115.976 74.832C115.272 74.528 114.664 74.088 114.152 73.512C113.656 72.936 113.272 72.248 113 71.448C112.728 70.632 112.592 69.72 112.592 68.712C112.592 67.704 112.728 66.8 113 66C113.272 65.2 113.656 64.52 114.152 63.96C114.664 63.384 115.272 62.944 115.976 62.64C116.696 62.336 117.504 62.184 118.4 62.184C119.296 62.184 120.104 62.336 120.824 62.64C121.544 62.944 122.152 63.384 122.648 63.96C123.16 64.52 123.552 65.2 123.824 66C124.096 66.8 124.232 67.704 124.232 68.712C124.232 69.72 124.096 70.632 123.824 71.448C123.552 72.248 123.16 72.936 122.648 73.512C122.152 74.088 121.544 74.528 120.824 74.832C120.104 75.136 119.296 75.288 118.4 75.288ZM118.4 72.816C119.216 72.816 119.856 72.568 120.32 72.072C120.784 71.576 121.016 70.848 121.016 69.888V67.56C121.016 66.616 120.784 65.896 120.32 65.4C119.856 64.904 119.216 64.656 118.4 64.656C117.6 64.656 116.968 64.904 116.504 65.4C116.04 65.896 115.808 66.616 115.808 67.56V69.888C115.808 70.848 116.04 71.576 116.504 72.072C116.968 72.568 117.6 72.816 118.4 72.816ZM118.736 61.056L116.888 60.168L119.168 55.68L121.76 56.952L118.736 61.056ZM126.956 62.472H130.028V64.536H130.124C130.348 63.816 130.772 63.248 131.396 62.832C132.02 62.4 132.748 62.184 133.58 62.184C135.18 62.184 136.396 62.752 137.228 63.888C138.076 65.008 138.5 66.616 138.5 68.712C138.5 70.824 138.076 72.448 137.228 73.584C136.396 74.72 135.18 75.288 133.58 75.288C132.748 75.288 132.02 75.072 131.396 74.64C130.788 74.208 130.364 73.632 130.124 72.912H130.028V79.8H126.956V62.472ZM132.596 72.744C133.396 72.744 134.044 72.48 134.54 71.952C135.036 71.424 135.284 70.712 135.284 69.816V67.656C135.284 66.76 135.036 66.048 134.54 65.52C134.044 64.976 133.396 64.704 132.596 64.704C131.86 64.704 131.244 64.888 130.748 65.256C130.268 65.624 130.028 66.112 130.028 66.72V70.704C130.028 71.36 130.268 71.864 130.748 72.216C131.244 72.568 131.86 72.744 132.596 72.744ZM150.562 75C149.89 75 149.354 74.808 148.954 74.424C148.57 74.024 148.33 73.496 148.234 72.84H148.09C147.882 73.656 147.458 74.272 146.818 74.688C146.178 75.088 145.386 75.288 144.442 75.288C143.162 75.288 142.178 74.952 141.49 74.28C140.802 73.608 140.458 72.712 140.458 71.592C140.458 70.296 140.922 69.336 141.85 68.712C142.778 68.072 144.098 67.752 145.81 67.752H147.946V66.84C147.946 66.136 147.762 65.592 147.394 65.208C147.026 64.824 146.434 64.632 145.618 64.632C144.898 64.632 144.314 64.792 143.866 65.112C143.434 65.416 143.066 65.784 142.762 66.216L140.938 64.584C141.402 63.864 142.018 63.288 142.786 62.856C143.554 62.408 144.57 62.184 145.834 62.184C147.53 62.184 148.818 62.568 149.698 63.336C150.578 64.104 151.018 65.208 151.018 66.648V72.552H152.266V75H150.562ZM145.474 73.056C146.162 73.056 146.746 72.904 147.226 72.6C147.706 72.296 147.946 71.848 147.946 71.256V69.6H145.978C144.378 69.6 143.578 70.112 143.578 71.136V71.544C143.578 72.056 143.738 72.44 144.058 72.696C144.394 72.936 144.866 73.056 145.474 73.056ZM157.23 75L153.054 62.472H156.078L157.83 67.872L159.054 72.336H159.222L160.446 67.872L162.15 62.472H165.078L160.878 75H157.23ZM171.908 75.288C171.012 75.288 170.204 75.136 169.484 74.832C168.78 74.528 168.172 74.088 167.66 73.512C167.164 72.936 166.78 72.248 166.508 71.448C166.236 70.632 166.1 69.72 166.1 68.712C166.1 67.704 166.236 66.8 166.508 66C166.78 65.2 167.164 64.52 167.66 63.96C168.172 63.384 168.78 62.944 169.484 62.64C170.204 62.336 171.012 62.184 171.908 62.184C172.804 62.184 173.612 62.336 174.332 62.64C175.052 62.944 175.66 63.384 176.156 63.96C176.668 64.52 177.06 65.2 177.332 66C177.604 66.8 177.74 67.704 177.74 68.712C177.74 69.72 177.604 70.632 177.332 71.448C177.06 72.248 176.668 72.936 176.156 73.512C175.66 74.088 175.052 74.528 174.332 74.832C173.612 75.136 172.804 75.288 171.908 75.288ZM171.908 72.816C172.724 72.816 173.364 72.568 173.828 72.072C174.292 71.576 174.524 70.848 174.524 69.888V67.56C174.524 66.616 174.292 65.896 173.828 65.4C173.364 64.904 172.724 64.656 171.908 64.656C171.108 64.656 170.476 64.904 170.012 65.4C169.548 65.896 169.316 66.616 169.316 67.56V69.888C169.316 70.848 169.548 71.576 170.012 72.072C170.476 72.568 171.108 72.816 171.908 72.816ZM191.768 76.056C191.768 76.712 191.648 77.288 191.408 77.784C191.184 78.296 190.808 78.72 190.28 79.056C189.752 79.392 189.072 79.648 188.24 79.824C187.408 80 186.392 80.088 185.192 80.088C184.136 80.088 183.24 80.016 182.504 79.872C181.768 79.744 181.16 79.552 180.68 79.296C180.216 79.056 179.88 78.752 179.672 78.384C179.464 78.016 179.36 77.6 179.36 77.136C179.36 76.432 179.552 75.88 179.936 75.48C180.336 75.096 180.888 74.848 181.592 74.736V74.472C181.08 74.344 180.68 74.096 180.392 73.728C180.12 73.344 179.984 72.896 179.984 72.384C179.984 72.064 180.048 71.784 180.176 71.544C180.304 71.288 180.472 71.072 180.68 70.896C180.904 70.72 181.152 70.576 181.424 70.464C181.696 70.336 181.984 70.24 182.288 70.176V70.08C181.52 69.728 180.944 69.24 180.56 68.616C180.192 67.992 180.008 67.264 180.008 66.432C180.008 65.152 180.448 64.128 181.328 63.36C182.208 62.576 183.496 62.184 185.192 62.184C185.576 62.184 185.952 62.208 186.32 62.256C186.704 62.304 187.056 62.384 187.376 62.496V62.088C187.376 60.872 187.968 60.264 189.152 60.264H191.096V62.616H188.432V62.952C189.088 63.32 189.576 63.8 189.896 64.392C190.216 64.984 190.376 65.664 190.376 66.432C190.376 67.696 189.936 68.712 189.056 69.48C188.192 70.248 186.904 70.632 185.192 70.632C184.456 70.632 183.816 70.56 183.272 70.416C183.032 70.528 182.824 70.68 182.648 70.872C182.472 71.048 182.384 71.272 182.384 71.544C182.384 72.168 182.928 72.48 184.016 72.48H187.376C188.912 72.48 190.024 72.8 190.712 73.44C191.416 74.064 191.768 74.936 191.768 76.056ZM188.888 76.416C188.888 76.016 188.728 75.704 188.408 75.48C188.088 75.256 187.536 75.144 186.752 75.144H182.48C182.048 75.464 181.832 75.896 181.832 76.44C181.832 76.92 182.032 77.296 182.432 77.568C182.832 77.84 183.512 77.976 184.472 77.976H186.008C187.016 77.976 187.744 77.848 188.192 77.592C188.656 77.336 188.888 76.944 188.888 76.416ZM185.192 68.544C186.696 68.544 187.448 67.904 187.448 66.624V66.216C187.448 64.936 186.696 64.296 185.192 64.296C183.688 64.296 182.936 64.936 182.936 66.216V66.624C182.936 67.904 183.688 68.544 185.192 68.544ZM200.936 72.912H200.816C200.704 73.232 200.552 73.536 200.36 73.824C200.184 74.096 199.952 74.344 199.664 74.568C199.392 74.792 199.056 74.968 198.656 75.096C198.272 75.224 197.824 75.288 197.312 75.288C196.016 75.288 195.024 74.864 194.336 74.016C193.648 73.168 193.304 71.96 193.304 70.392V62.472H196.376V70.08C196.376 70.944 196.544 71.608 196.88 72.072C197.216 72.52 197.752 72.744 198.488 72.744C198.792 72.744 199.088 72.704 199.376 72.624C199.68 72.544 199.944 72.424 200.168 72.264C200.392 72.088 200.576 71.88 200.72 71.64C200.864 71.384 200.936 71.088 200.936 70.752V62.472H204.008V75H200.936V72.912ZM207.557 75V62.472H210.629V65.064H210.749C210.829 64.728 210.949 64.408 211.109 64.104C211.285 63.784 211.509 63.504 211.781 63.264C212.053 63.024 212.373 62.832 212.741 62.688C213.125 62.544 213.565 62.472 214.061 62.472H214.733V65.376H213.773C212.733 65.376 211.949 65.528 211.421 65.832C210.893 66.136 210.629 66.632 210.629 67.32V75H207.557Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/langanesbyggd.svg b/libs/application/templates/financial-aid/src/svg/langanesbyggd.svg deleted file mode 100644 index 56a5135b8916..000000000000 --- a/libs/application/templates/financial-aid/src/svg/langanesbyggd.svg +++ /dev/null @@ -1,17 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M80.1347 16.6757V54.1114C80.1347 64.4607 75.3285 73.5509 68.0963 80.691C67.8967 80.8906 67.6817 81.0902 67.4821 81.2745C67.2825 81.4741 67.0675 81.6584 66.8679 81.858C66.7604 81.9501 66.6529 82.0423 66.5454 82.1497C65.9005 82.7486 65.2249 83.3167 64.5493 83.8849C59.6203 87.9386 53.9082 91.1939 47.9658 93.4818C35.6049 88.7217 24.1808 79.7697 18.8832 68.1459C16.9178 63.8158 15.7969 59.1171 15.7969 54.1267V16.6757H80.1347Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M67.2068 42.1343C66.7001 42.5182 66.2855 43.2092 65.8402 43.5009C65.3949 43.7927 64.0897 44.3762 62.0935 45.0365C60.0974 45.6967 59.2682 46.7255 58.2548 47.1862C57.2413 47.6468 56.75 47.2169 56.1051 47.8771C55.4755 48.5528 55.3834 49.213 54.7385 49.9347C54.0935 50.6564 54.2164 51.3935 52.7884 51.7313C51.3603 52.0844 50.6386 51.9002 49.7634 52.3762C48.8882 52.8368 48.2279 53.2514 47.8133 54.142C47.3987 55.0326 46.7999 55.3551 46.9688 56.1382C47.1377 56.9213 48.4275 58.0883 48.8882 59.2246C49.3488 60.3608 50.1319 60.499 50.3776 60.975C50.6079 61.4357 50.4083 62.4798 50.2241 63.5547C50.0398 64.6295 50.3776 64.8292 49.4102 65.7658C48.4429 66.6871 46.5081 68.1459 46.0935 68.7294C45.679 69.3128 44.988 70.6794 44.1434 70.9712C43.2989 71.2629 43.4371 71.2937 42.2241 71.4933C41.011 71.6929 40.6271 71.6468 40.4582 71.9386C40.2893 72.215 40.32 72.952 39.8747 73.4741C39.4448 73.9961 38.8613 74.1497 38.9688 74.7178C39.0916 75.3013 39.2912 75.071 39.8133 75.3013C40.3354 75.5317 40.3354 75.977 40.5657 76.3148C40.796 76.6679 44.9726 76.1766 44.9726 76.1766L44.4352 78.9712V79.0173C44.512 79.2629 44.6041 79.5086 44.7269 79.739C44.8651 79.9539 44.9112 80 44.8037 80.2457C44.6962 80.4913 43.9438 81.3359 43.5139 82.0115C43.0839 82.6718 42.5465 82.6257 43.1914 82.9021C43.8363 83.1785 43.6367 83.5009 44.7116 82.9482C45.7864 82.4107 45.464 82.2265 46.3699 82.1958C47.2605 82.1651 47.4909 81.8887 47.6905 82.3647C47.8901 82.8407 47.3987 83.1631 47.9054 83.3474C48.3968 83.5317 48.32 83.5777 49.011 83.3628C49.702 83.1478 49.6559 83.0557 49.917 83.2092C50.178 83.3628 50.0244 83.5931 50.7922 83.5163C51.5446 83.4395 51.4985 83.6545 51.9131 83.2092C52.3277 82.7639 52.3891 82.7332 52.5734 82.9482C52.773 83.1785 52.8037 83.2092 53.4486 84.5758C54.0782 85.9424 53.6482 85.5432 54.5695 85.4971C55.4909 85.4357 54.9995 85.881 55.844 84.9136C56.6732 83.9309 57.3642 84.3301 57.2106 83.3474C57.0571 82.3647 56.8728 82.4261 57.4102 81.8887C57.9477 81.3512 57.3642 81.0134 58.393 81.0595C59.4218 81.1056 58.7308 81.3512 59.2221 80.6142C59.7135 79.8771 59.606 79.2937 60.6348 79.5393C61.6636 79.785 60.4813 79.5854 61.8018 80.1228C63.1223 80.6603 63.3066 80.3685 63.3066 80.3685C63.7826 81.167 64.1511 82.0422 64.3815 82.9482C64.4736 83.3013 64.535 83.6084 64.5811 83.8695C59.6521 87.9232 53.94 91.1785 47.9976 93.4664C35.6367 88.7063 24.1972 79.7543 18.915 68.1305C21.4486 67.7006 26.7768 66.8714 26.7308 67.3935C26.6694 68.0844 27.2221 68.5297 27.4064 68.7601C27.5753 68.9904 27.345 69.2207 28.0513 69.2207C28.5427 69.2054 29.0187 69.0979 29.4793 68.929L30.5542 68.2073C30.5542 68.2073 30.9534 67.6852 31.0148 67.3935C31.0609 67.1017 31.1377 66.6104 31.1377 66.6104L31.7826 65.858C31.7826 65.858 32.0743 65.1363 31.844 64.952C31.6137 64.7831 31.2605 65.0134 31.0916 64.6603C30.9227 64.3071 31.3834 64.215 30.9227 63.7543C30.4621 63.2937 30.2778 63.3551 30.4006 62.9405C30.5235 62.5413 30.9841 62.9405 30.6924 61.4664C30.4006 59.977 30.2932 60.0691 30.4621 59.4702C30.631 58.856 30.8152 58.4261 30.9227 57.8733C31.0302 57.3205 31.3527 56.9213 31.798 57.1516C32.2279 57.3819 31.9208 57.4741 32.8114 57.6737C33.702 57.8887 34.654 57.8887 35.5446 57.6737C36.558 57.4434 37.1722 57.0288 37.8939 56.7524C38.6156 56.4606 38.9688 56.7217 40.1665 56.2303C41.3642 55.7389 41.7634 56.0614 41.8248 55.2169C41.8862 54.3723 41.8862 53.2668 41.8862 53.2668C41.8862 53.2668 42.1473 53.0365 42.6694 53.1132C43.1914 53.19 43.6828 53.5432 44.2049 52.0691C44.7269 50.5796 45.6943 51.0249 45.8632 49.7965C46.0321 48.5681 46.155 47.6468 46.3239 46.7255C46.4928 45.8042 46.3546 46.4031 47.3373 45.6199C48.32 44.8368 48.2893 44.1612 48.8114 43.8234C49.3335 43.4702 50.5619 42.2879 51.8824 41.8733C53.2183 41.4587 53.4793 40.8906 53.8939 41.3512C54.2932 41.8119 55.3219 42.4875 55.8901 43.071C56.4582 43.6545 56.9957 44.1459 58.0091 44.1459C59.0225 44.1459 60.1281 43.9462 60.9112 43.5317C61.6943 43.1171 62.2778 42.7485 63.2912 42.2265C64.3047 41.7044 64.7653 41.0595 66.1933 41.2898L67.6214 41.5201C67.5446 41.4894 67.6981 41.7505 67.2068 42.1343Z" fill="#63B346"/> -<path d="M47.9666 94.1881L47.7209 94.096C38.7996 90.6718 30.7382 85.19 25.0107 78.6795C18.5463 71.3244 15.1221 62.833 15.1221 54.1113V16H80.8111V54.1113C80.8111 62.833 77.3869 71.3397 70.9225 78.6795C65.195 85.19 57.1182 90.6718 48.2123 94.096L47.9666 94.1881ZM16.4733 17.3512V54.1113C16.4733 62.5106 19.7747 70.6948 26.0242 77.7889C31.5674 84.0844 39.3524 89.382 47.9666 92.7447C56.5808 89.382 64.3658 84.0844 69.909 77.7889C76.1585 70.6948 79.4599 62.4952 79.4599 54.1113V17.3512H16.4733Z" fill="#0095D5"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M27.4378 22.833C27.4378 22.833 26.9464 22.9865 27.6835 22.6948C29.2497 22.0345 30.9387 21.7121 32.6278 21.7428C35.0386 21.8196 36.6969 21.9117 37.6643 22.0192C38.2938 22.0806 38.9234 22.2034 39.5376 22.357C39.6451 22.3877 39.7679 22.4031 39.8908 22.4031C40.1057 22.4338 41.2113 22.8176 41.6873 23.309C42.1633 23.8004 42.3936 24.261 42.6854 24.8599C42.9771 25.4587 42.9771 25.6276 43.3457 25.9808C43.5299 26.1651 43.7295 26.334 43.9445 26.4722C44.1902 26.6564 44.1441 26.7485 44.3744 26.7793C44.6048 26.81 45.0501 26.81 45.2497 26.7178C45.4493 26.6257 45.8639 26.3493 46.2938 26.1497C46.7238 25.9501 46.7238 25.9194 47.0616 25.8272C47.7065 25.6583 47.9522 26.0422 48.0597 26.119C48.1672 26.1958 48.1211 26.2418 48.3361 26.1958C48.5203 26.1651 48.6892 26.1497 48.8735 26.1343C49.3648 26.1036 49.4263 26.2111 49.4263 26.2111C49.4263 26.2111 48.6278 26.4568 48.505 26.4875C48.3821 26.5182 48.29 26.6718 48.029 27.0096C47.7679 27.3474 47.0155 28.1612 47.0616 28.2841C47.1077 28.4069 47.3533 28.4837 47.7065 28.3762C48.0597 28.2687 49.2113 27.977 49.4416 27.9616C50.3936 27.8541 50.9464 28.6219 51.1 28.7754C51.5453 29.2514 51.9599 29.7735 52.3284 30.3109C52.6355 30.833 53.741 32.5988 53.8946 32.9213C54.0482 33.2438 54.6777 34.8253 54.7391 35.0403C54.8466 35.501 54.9695 35.9616 55.123 36.4069C55.338 37.0057 55.5529 37.7889 55.6144 37.9731C55.7372 38.357 55.3687 38.0038 55.1844 37.8042C55.0155 37.62 54.8773 37.3896 54.7698 37.1593L54.6777 36.975C54.6777 36.975 54.6624 37.2821 54.5856 37.2668C54.5088 37.2514 53.9253 36.1305 53.9253 36.1305C53.9253 36.1305 54.0021 36.7754 53.8639 36.6986C53.7257 36.6219 53.1422 35.5624 53.1422 35.5624C53.1422 35.5624 53.1576 35.9923 53.0654 36.1305C52.9733 36.2687 52.4819 35.4395 52.4819 35.4395C52.4819 35.4395 52.4052 35.6391 52.2823 35.5163C52.1595 35.3935 52.1902 35.1631 51.8217 34.9635C51.4378 34.7639 51.2689 34.4875 51.1 34.38C50.9311 34.2725 50.6086 33.8733 50.5011 33.7965C50.409 33.7351 48.7814 32.0307 47.1384 32.1689C46.6931 32.1996 46.5242 32.4146 46.3706 32.4453C46.0635 32.5067 46.2631 32.3224 46.1403 32.3071C46.0174 32.2764 46.0328 32.2764 45.7871 32.4146C45.5414 32.5528 45.6489 32.261 45.5107 32.3224C45.3725 32.3839 45.2343 32.4606 45.265 32.3839C45.2804 32.3071 45.265 32.3224 45.1576 32.3532C45.0501 32.3839 45.004 32.4606 44.9119 32.3992C44.8197 32.3378 43.9138 32.2457 43.5299 33.213C43.3917 33.5509 43.2842 34.3186 42.7929 35.4395C42.3015 36.5605 41.8869 38.142 41.7487 38.4798C41.672 38.6948 41.5952 38.9098 41.5338 39.1248C41.5338 39.1248 41.672 39.785 41.3495 38.2034C41.027 36.6219 41.1959 36.5297 40.8428 36.023C40.4896 35.5163 40.551 35.4242 40.2593 35.4395C39.9675 35.4549 39.6297 35.4856 39.6604 35.3935C39.6911 35.3013 39.6758 35.2246 39.4915 35.2246C39.3073 35.2246 39.2151 35.3628 39.0923 35.2092C38.9695 35.0557 39.1077 34.9789 38.8466 35.071C38.5856 35.1631 38.2785 34.9328 37.4493 35.4702C36.6201 36.0077 36.052 36.2994 36.052 36.2994C36.052 36.2994 35.9906 35.8234 36.6508 35.3474C37.3111 34.8714 39.2458 33.4587 39.9368 32.8906C40.505 32.4299 41.027 31.9232 41.503 31.3704C41.6412 31.1708 41.6873 31.309 41.5798 30.9405C41.4723 30.572 41.5491 30.5413 41.2727 30.2802C40.9963 30.0192 40.8888 29.9885 40.9196 29.9271C40.9349 29.8503 40.9042 30.0192 40.7967 29.8503C40.7199 29.7274 40.6739 29.6046 40.6432 29.4664C40.6432 29.4203 40.6278 29.6046 40.5357 29.4818C40.4435 29.3282 40.3668 29.1747 40.3207 29.0057C40.3207 29.0057 40.2439 29.1593 40.1518 29.0672C40.0597 28.975 40.075 28.6679 40.0443 28.6065C40.029 28.5451 39.9522 28.7294 39.8908 28.6065C39.814 28.4376 39.7526 28.2687 39.7219 28.0998C39.7219 28.0998 39.8293 28.6372 39.6297 28.1152C39.4301 27.5931 39.2458 26.6718 38.171 26.1651C37.9867 26.0729 37.8025 26.0883 37.6029 26.0269C37.4032 25.9654 37.3265 25.904 37.3418 25.8426C37.3572 25.7965 37.3725 25.8887 37.0347 25.8426C36.6969 25.7965 36.3898 25.689 36.4666 25.5969C36.5434 25.5048 36.7737 25.5201 36.2055 25.4894C35.6374 25.4587 35.4685 25.5662 35.5146 25.4127C35.5606 25.2591 35.576 25.213 35.576 25.213C35.576 25.213 34.7468 25.2437 34.5625 25.1209C34.3783 24.9981 34.2862 24.8906 34.3629 24.8752C34.4397 24.8599 33.933 24.8138 33.5645 24.737C33.1959 24.6603 33.1499 24.6449 33.2113 24.5528C33.242 24.5067 33.2727 24.4606 33.3034 24.4146C32.981 24.4299 32.6585 24.3992 32.3514 24.3378C31.9675 24.2303 31.8908 24.2303 31.9982 24.1382C32.1057 24.0461 32.1364 24.0461 32.1364 24.0461C32.1364 24.0461 31.7065 24.0307 31.1844 23.9846C30.6624 23.9386 30.5242 23.9846 30.6316 23.9079C30.862 23.8004 31.0923 23.6929 31.3226 23.6161C31.3226 23.6161 30.0635 23.6468 29.8025 23.5854C29.5414 23.524 29.4493 23.57 29.5568 23.4626C29.6643 23.3551 30.5088 23.0633 30.5088 23.0633C30.5088 23.0633 30.8159 23.0019 29.7718 23.0326C28.7276 23.0633 28.5894 23.1555 28.4512 23.094C28.313 23.0326 28.1288 23.0019 28.4052 22.9251C28.6048 22.8637 28.8044 22.8023 28.9887 22.7102L27.4378 22.833Z" fill="#0095D5"/> -<path d="M46.876 26.1958C46.876 26.1344 46.9374 26.073 46.9988 26.0883C47.0602 26.1037 47.1217 26.1497 47.1063 26.2112C47.1063 26.2726 47.0449 26.3187 46.9835 26.3187C46.922 26.3187 46.876 26.2572 46.876 26.1958Z" fill="white"/> -<path d="M47.1372 26.0883C47.1065 26.0576 47.0604 26.0269 47.0143 26.0269C46.9683 26.0269 46.9222 26.0422 46.8915 26.0729C46.8608 26.1036 46.8301 26.1497 46.8301 26.1958C46.8301 26.2879 46.8915 26.38 46.999 26.38H47.0143C47.1065 26.38 47.1832 26.3032 47.1986 26.2111C47.1832 26.1651 47.1679 26.119 47.1372 26.0883ZM46.999 26.2725C46.9683 26.2725 46.9376 26.2418 46.9376 26.2111C46.9376 26.1958 46.9529 26.1804 46.9529 26.1651C46.9683 26.1497 46.9836 26.1497 46.999 26.1497C47.0143 26.1497 47.0297 26.1651 47.045 26.1651C47.0604 26.1651 47.0604 26.1958 47.0604 26.2111C47.0604 26.2418 47.0297 26.2725 46.999 26.2725Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M56.6272 70.8023C56.6272 70.8023 56.8268 70.6641 57.7481 70.9252C58.6694 71.1862 61.2337 72.1075 62.2472 72.1996C63.2606 72.2918 63.8594 72.2611 63.9669 72.2764C64.1051 72.2918 63.9823 72.1689 64.4737 72.6757C64.965 73.1824 66.5005 74.8407 66.7155 74.6718C66.9305 74.5029 67.1147 75.0403 66.9612 74.2572C66.8076 73.4741 67.3604 73.5202 66.7155 72.9674C66.1166 72.4607 65.7328 72.1996 66.0245 72.1536C69.6022 71.6008 78.6157 66.3033 70.7692 56.5989C70.4928 56.2457 70.4007 56.691 69.9861 56.1996C69.5715 55.7083 69.6944 55.4012 69.2951 54.9559C68.8959 54.5106 68.8959 54.4799 68.6349 54.4799C68.3738 54.4799 68.3738 54.787 68.0053 54.7102C67.6368 54.6334 67.4832 54.5413 67.2836 54.7563C67.084 54.9712 67.2222 55.2323 66.8844 55.0019C66.5466 54.7716 63.3681 51.762 63.061 51.6545C62.7539 51.547 62.3854 51.4396 62.2625 51.6699C62.1397 51.9002 61.6483 52.5144 61.4948 53.1747C61.3412 53.8349 61.1109 54.9405 61.157 55.3551C61.203 55.7697 60.988 55.8311 61.3105 56.0154C61.633 56.1996 60.7117 56.2764 61.8479 56.3225C62.9842 56.3685 64.2894 56.1536 64.8575 56.1689C65.4257 56.1843 65.6099 56.1382 66.132 56.3532C66.6541 56.5682 67.5447 57.0749 67.4832 57.7812C67.4218 58.4875 67.2222 59.3474 67.8211 59.5624C68.4199 59.7774 68.466 59.5931 68.9573 59.9002C69.4487 60.2073 69.7558 60.7447 69.6176 61.19C69.4794 61.6353 69.4948 62.2035 69.3873 62.5566C69.2798 62.9098 69.4026 63.1708 69.0802 62.8637C68.7577 62.5566 68.8038 62.7716 68.3738 62.1574C67.9439 61.5432 67.2836 60.9904 66.8998 60.929C66.6234 60.8829 66.5312 60.8829 65.9784 61.3897C65.6867 61.6507 64.6118 63.9079 64.2587 64.0307C63.9055 64.1536 63.1224 63.9847 61.3412 64.5989C59.56 65.2131 58.6541 65.3513 57.4564 66.2726C56.2587 67.1939 56.0744 67.3628 55.7213 67.5624C55.3681 67.762 54.9842 68.2687 55.322 68.5912C55.6598 68.9137 55.5063 68.7908 55.9209 69.0365C56.3355 69.2822 56.7347 69.405 56.4429 69.5586C56.1512 69.7121 55.9669 69.5279 55.8287 69.835C55.6905 70.1421 56.0437 70.2342 56.1819 70.7563C56.3201 71.2783 56.228 71.4626 56.4737 71.8311C56.5658 72 56.704 72.1689 56.8422 72.3071C56.7808 72.1689 56.7347 72.0307 56.704 71.8772C56.6272 71.5701 56.5811 71.2937 56.5197 71.1094C56.489 70.9866 56.5504 70.8638 56.6426 70.8177L56.6272 70.8023Z" fill="#0095D5"/> -<path d="M60.3575 67.7773C60.3729 67.5777 60.5571 67.4242 60.7567 67.4395C60.9564 67.4549 61.1099 67.6392 61.0945 67.8388C61.0792 68.0384 60.8949 68.1919 60.6953 68.1766C60.4957 68.1612 60.3421 67.9923 60.3575 67.7773Z" fill="white"/> -<path d="M60.7573 67.4089C60.7419 67.4089 60.7419 67.4089 60.7266 67.4089C60.5116 67.4089 60.3427 67.5624 60.3273 67.7774C60.312 67.9924 60.4502 68.1766 60.6651 68.2073H60.6959H60.7266C60.9262 68.2073 61.1104 68.0538 61.1258 67.8388C61.1412 67.6238 60.9876 67.4396 60.7573 67.4089ZM60.7112 68.1613C60.5116 68.1459 60.3734 67.977 60.3888 67.7927C60.4041 67.6085 60.573 67.4549 60.7573 67.4856C60.9415 67.501 61.0951 67.6699 61.0644 67.8542C61.0644 68.0231 60.8955 68.1613 60.7112 68.1613Z" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M56.7199 69.405C56.766 69.4204 56.7967 69.4357 56.8274 69.4511C56.8581 69.4664 56.9502 69.4664 56.9349 69.5125C56.9195 69.6046 56.812 69.6046 56.7353 69.6507C56.6124 69.7121 56.5049 69.7428 56.4896 69.881C56.4742 70.0192 56.5971 70.0499 56.6892 70.1267C56.7813 70.2188 56.9042 70.2802 57.027 70.2956L57.1959 70.311C57.5644 70.3417 57.7641 70.1574 58.1326 70.1881L58.3783 70.2035L58.7468 70.1728L59.3456 70.2342C59.0232 70.0346 58.8389 69.881 58.4551 69.8503L58.1787 69.8196C58.0558 69.8042 57.933 69.7582 57.8255 69.6968C57.3955 69.5279 57.1499 69.405 56.6892 69.3589C56.6739 69.3589 56.6738 69.3743 56.6585 69.3743L56.7199 69.405Z" fill="white"/> -<path d="M66.7462 71.048C66.6848 71.048 66.608 71.048 66.5312 71.0326C66.0706 71.0019 65.6253 70.8944 65.1953 70.7255L65.2567 70.5873C65.6713 70.7563 66.1013 70.8484 66.5466 70.8944C67.1761 70.9559 67.56 70.7409 67.9746 70.357C68.0667 70.2649 68.1435 70.1881 68.2049 70.1113C68.2817 70.0346 68.3585 69.9578 68.4506 69.8657C68.5274 69.7889 68.6041 69.7428 68.6809 69.7121C68.7423 69.6814 68.8191 69.6353 68.8805 69.5739C69.0341 69.4357 69.1109 69.2361 69.1109 69.0365C69.1416 68.7908 69.0341 68.5758 68.8498 68.453C68.8038 68.4069 68.7577 68.4223 68.6656 68.4223C68.6349 68.4223 68.5888 68.4223 68.5427 68.4223C68.512 68.4223 68.466 68.4223 68.4352 68.4069C68.2356 68.3916 68.0821 68.3762 67.8825 68.4223C67.7596 68.453 67.6675 68.4837 67.5754 68.5298C67.4679 68.5758 67.345 68.6219 67.1761 68.6526C66.8997 68.668 66.6233 68.7294 66.3623 68.8062C66.2702 68.8369 66.178 68.8829 66.1013 68.9136C65.8863 69.0058 65.702 69.0826 65.4103 69.0979L65.3949 68.9444C65.656 68.929 65.8249 68.8676 66.0398 68.7755C66.1166 68.7447 66.2088 68.6987 66.3162 68.668C66.5926 68.5912 66.8844 68.5298 67.1608 68.5144C67.299 68.4991 67.4064 68.453 67.5139 68.4069C67.6061 68.3762 67.7136 68.3302 67.8364 68.2994C68.0667 68.2534 68.2356 68.2687 68.4352 68.2841C68.4967 68.2841 68.5581 68.2994 68.6195 68.2994H68.6349C68.727 68.2994 68.8191 68.2994 68.9112 68.3609C69.1416 68.5144 69.2644 68.7908 69.2337 69.0826C69.2337 69.3129 69.1416 69.5586 68.9573 69.7275C68.8805 69.8042 68.8038 69.8349 68.727 69.881C68.6502 69.9117 68.5888 69.9578 68.5274 70.0192C68.4352 70.1113 68.3585 70.1881 68.2817 70.2649C68.2049 70.3417 68.1435 70.4184 68.036 70.5106C67.6828 70.8177 67.299 71.048 66.7462 71.048Z" fill="white"/> -<path d="M59.2987 70.1574C59.0223 69.9885 58.8381 69.8503 58.4849 69.835L58.2085 69.8042C58.0856 69.7889 57.9782 69.7428 57.8707 69.6968C57.7786 69.6661 57.7018 69.6353 57.6404 69.6046C57.3486 69.4818 57.1029 69.3897 56.7344 69.3589C56.719 69.3589 56.7037 69.3589 56.7037 69.3743C56.7037 69.3743 56.7037 69.3743 56.6883 69.3743L56.5962 69.405L56.719 69.4357C56.7498 69.4357 56.7651 69.4511 56.7805 69.4664C56.7958 69.4664 56.8112 69.4818 56.8265 69.4818C56.8419 69.4818 56.8572 69.4971 56.8726 69.4971C56.9187 69.5125 56.9187 69.5125 56.9187 69.5279C56.9187 69.5739 56.8726 69.5893 56.8112 69.6046C56.7805 69.6046 56.7498 69.62 56.7344 69.6353L56.7037 69.6507C56.5962 69.6968 56.4887 69.7582 56.4734 69.8964C56.458 70.0192 56.5501 70.0806 56.6423 70.1421C56.6576 70.1574 56.673 70.1574 56.6883 70.1728C56.7958 70.2649 56.9187 70.3263 57.0415 70.357L57.2104 70.3724C57.2411 70.3724 57.2718 70.3724 57.3025 70.3724C57.4561 70.3724 57.5789 70.3417 57.6864 70.311C57.8246 70.2803 57.9628 70.2342 58.1471 70.2495L58.4081 70.2803L58.7766 70.2495L59.3755 70.2956L59.3908 70.2495L59.2987 70.1574ZM58.4081 70.1881L58.1624 70.1728C57.9782 70.1574 57.8246 70.1881 57.6864 70.2342C57.5482 70.2649 57.41 70.311 57.2258 70.2956L57.0569 70.2803C56.934 70.2495 56.8265 70.2035 56.719 70.1113C56.7037 70.096 56.6883 70.096 56.673 70.0806C56.5809 70.0192 56.5194 69.9885 56.5194 69.8964C56.5348 69.7889 56.6116 69.7582 56.719 69.6968L56.7498 69.6814C56.7805 69.6661 56.7958 69.666 56.8265 69.6507C56.888 69.6353 56.9647 69.6046 56.9647 69.5279C56.9647 69.4664 56.9187 69.4511 56.8726 69.4357C56.8572 69.4357 56.8419 69.4357 56.8419 69.4204C56.8419 69.4204 56.8265 69.4204 56.8265 69.405C57.149 69.4357 57.364 69.5279 57.625 69.6353C57.7018 69.666 57.7785 69.6968 57.8553 69.7275C57.9628 69.7889 58.0857 69.8196 58.2238 69.8503L58.5002 69.881C58.8227 69.9117 59.0223 70.0346 59.268 70.1881L58.7766 70.1421L58.4081 70.1881Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 75V58.248H101.136V72.192H107.736V75H97.968ZM119.578 75C118.906 75 118.37 74.808 117.97 74.424C117.586 74.024 117.346 73.496 117.25 72.84H117.106C116.898 73.656 116.474 74.272 115.834 74.688C115.194 75.088 114.402 75.288 113.458 75.288C112.178 75.288 111.194 74.952 110.506 74.28C109.818 73.608 109.474 72.712 109.474 71.592C109.474 70.296 109.938 69.336 110.866 68.712C111.794 68.072 113.114 67.752 114.826 67.752H116.962V66.84C116.962 66.136 116.778 65.592 116.41 65.208C116.042 64.824 115.45 64.632 114.634 64.632C113.914 64.632 113.33 64.792 112.882 65.112C112.45 65.416 112.082 65.784 111.778 66.216L109.954 64.584C110.418 63.864 111.034 63.288 111.802 62.856C112.57 62.408 113.586 62.184 114.85 62.184C116.546 62.184 117.834 62.568 118.714 63.336C119.594 64.104 120.034 65.208 120.034 66.648V72.552H121.282V75H119.578ZM114.49 73.056C115.178 73.056 115.762 72.904 116.242 72.6C116.722 72.296 116.962 71.848 116.962 71.256V69.6H114.994C113.394 69.6 112.594 70.112 112.594 71.136V71.544C112.594 72.056 112.754 72.44 113.074 72.696C113.41 72.936 113.882 73.056 114.49 73.056ZM123.768 75V62.472H126.84V64.56H126.96C127.216 63.888 127.616 63.328 128.16 62.88C128.72 62.416 129.488 62.184 130.464 62.184C131.76 62.184 132.752 62.608 133.44 63.456C134.128 64.304 134.472 65.512 134.472 67.08V75H131.4V67.392C131.4 66.496 131.24 65.824 130.92 65.376C130.6 64.928 130.072 64.704 129.336 64.704C129.016 64.704 128.704 64.752 128.4 64.848C128.112 64.928 127.848 65.056 127.608 65.232C127.384 65.392 127.2 65.6 127.056 65.856C126.912 66.096 126.84 66.384 126.84 66.72V75H123.768ZM149.182 76.056C149.182 76.712 149.062 77.288 148.822 77.784C148.598 78.296 148.222 78.72 147.694 79.056C147.166 79.392 146.486 79.648 145.654 79.824C144.822 80 143.806 80.088 142.606 80.088C141.55 80.088 140.654 80.016 139.918 79.872C139.182 79.744 138.574 79.552 138.094 79.296C137.63 79.056 137.294 78.752 137.086 78.384C136.878 78.016 136.774 77.6 136.774 77.136C136.774 76.432 136.966 75.88 137.35 75.48C137.75 75.096 138.302 74.848 139.006 74.736V74.472C138.494 74.344 138.094 74.096 137.806 73.728C137.534 73.344 137.398 72.896 137.398 72.384C137.398 72.064 137.462 71.784 137.59 71.544C137.718 71.288 137.886 71.072 138.094 70.896C138.318 70.72 138.566 70.576 138.838 70.464C139.11 70.336 139.398 70.24 139.702 70.176V70.08C138.934 69.728 138.358 69.24 137.974 68.616C137.606 67.992 137.422 67.264 137.422 66.432C137.422 65.152 137.862 64.128 138.742 63.36C139.622 62.576 140.91 62.184 142.606 62.184C142.99 62.184 143.366 62.208 143.734 62.256C144.118 62.304 144.47 62.384 144.79 62.496V62.088C144.79 60.872 145.382 60.264 146.566 60.264H148.51V62.616H145.846V62.952C146.502 63.32 146.99 63.8 147.31 64.392C147.63 64.984 147.79 65.664 147.79 66.432C147.79 67.696 147.35 68.712 146.47 69.48C145.606 70.248 144.318 70.632 142.606 70.632C141.87 70.632 141.23 70.56 140.686 70.416C140.446 70.528 140.238 70.68 140.062 70.872C139.886 71.048 139.798 71.272 139.798 71.544C139.798 72.168 140.342 72.48 141.43 72.48H144.79C146.326 72.48 147.438 72.8 148.126 73.44C148.83 74.064 149.182 74.936 149.182 76.056ZM146.302 76.416C146.302 76.016 146.142 75.704 145.822 75.48C145.502 75.256 144.95 75.144 144.166 75.144H139.894C139.462 75.464 139.246 75.896 139.246 76.44C139.246 76.92 139.446 77.296 139.846 77.568C140.246 77.84 140.926 77.976 141.886 77.976H143.422C144.43 77.976 145.158 77.848 145.606 77.592C146.07 77.336 146.302 76.944 146.302 76.416ZM142.606 68.544C144.11 68.544 144.862 67.904 144.862 66.624V66.216C144.862 64.936 144.11 64.296 142.606 64.296C141.102 64.296 140.35 64.936 140.35 66.216V66.624C140.35 67.904 141.102 68.544 142.606 68.544ZM160.125 75C159.453 75 158.917 74.808 158.517 74.424C158.133 74.024 157.893 73.496 157.797 72.84H157.653C157.445 73.656 157.021 74.272 156.381 74.688C155.741 75.088 154.949 75.288 154.005 75.288C152.725 75.288 151.741 74.952 151.053 74.28C150.365 73.608 150.021 72.712 150.021 71.592C150.021 70.296 150.485 69.336 151.413 68.712C152.341 68.072 153.661 67.752 155.373 67.752H157.509V66.84C157.509 66.136 157.325 65.592 156.957 65.208C156.589 64.824 155.997 64.632 155.181 64.632C154.461 64.632 153.877 64.792 153.429 65.112C152.997 65.416 152.629 65.784 152.325 66.216L150.501 64.584C150.965 63.864 151.581 63.288 152.349 62.856C153.117 62.408 154.133 62.184 155.397 62.184C157.093 62.184 158.381 62.568 159.261 63.336C160.141 64.104 160.581 65.208 160.581 66.648V72.552H161.829V75H160.125ZM155.037 73.056C155.725 73.056 156.309 72.904 156.789 72.6C157.269 72.296 157.509 71.848 157.509 71.256V69.6H155.541C153.941 69.6 153.141 70.112 153.141 71.136V71.544C153.141 72.056 153.301 72.44 153.621 72.696C153.957 72.936 154.429 73.056 155.037 73.056ZM164.315 75V62.472H167.387V64.56H167.507C167.763 63.888 168.163 63.328 168.707 62.88C169.267 62.416 170.035 62.184 171.011 62.184C172.307 62.184 173.299 62.608 173.987 63.456C174.675 64.304 175.019 65.512 175.019 67.08V75H171.947V67.392C171.947 66.496 171.787 65.824 171.467 65.376C171.147 64.928 170.619 64.704 169.883 64.704C169.563 64.704 169.251 64.752 168.947 64.848C168.659 64.928 168.395 65.056 168.155 65.232C167.931 65.392 167.747 65.6 167.603 65.856C167.459 66.096 167.387 66.384 167.387 66.72V75H164.315ZM183.488 75.288C182.56 75.288 181.728 75.136 180.992 74.832C180.272 74.512 179.656 74.072 179.144 73.512C178.648 72.936 178.264 72.248 177.992 71.448C177.72 70.632 177.584 69.72 177.584 68.712C177.584 67.72 177.712 66.824 177.968 66.024C178.24 65.224 178.624 64.544 179.12 63.984C179.616 63.408 180.224 62.968 180.944 62.664C181.664 62.344 182.48 62.184 183.392 62.184C184.368 62.184 185.216 62.352 185.936 62.688C186.656 63.024 187.248 63.48 187.712 64.056C188.176 64.632 188.52 65.304 188.744 66.072C188.984 66.824 189.104 67.632 189.104 68.496V69.504H180.776V69.816C180.776 70.728 181.032 71.464 181.544 72.024C182.056 72.568 182.816 72.84 183.824 72.84C184.592 72.84 185.216 72.68 185.696 72.36C186.192 72.04 186.632 71.632 187.016 71.136L188.672 72.984C188.16 73.704 187.456 74.272 186.56 74.688C185.68 75.088 184.656 75.288 183.488 75.288ZM183.44 64.488C182.624 64.488 181.976 64.76 181.496 65.304C181.016 65.848 180.776 66.552 180.776 67.416V67.608H185.912V67.392C185.912 66.528 185.696 65.832 185.264 65.304C184.848 64.76 184.24 64.488 183.44 64.488ZM195.911 75.288C194.711 75.288 193.703 75.088 192.887 74.688C192.071 74.272 191.351 73.704 190.727 72.984L192.599 71.16C193.063 71.688 193.567 72.104 194.111 72.408C194.671 72.712 195.311 72.864 196.031 72.864C196.767 72.864 197.295 72.736 197.615 72.48C197.951 72.224 198.119 71.872 198.119 71.424C198.119 71.056 197.999 70.768 197.759 70.56C197.535 70.336 197.143 70.184 196.583 70.104L195.335 69.936C193.975 69.76 192.935 69.376 192.215 68.784C191.511 68.176 191.159 67.296 191.159 66.144C191.159 65.536 191.271 64.992 191.495 64.512C191.719 64.016 192.039 63.6 192.455 63.264C192.871 62.912 193.367 62.648 193.943 62.472C194.535 62.28 195.191 62.184 195.911 62.184C196.519 62.184 197.055 62.232 197.519 62.328C197.999 62.408 198.431 62.536 198.815 62.712C199.199 62.872 199.551 63.08 199.871 63.336C200.191 63.576 200.503 63.848 200.807 64.152L199.007 65.952C198.639 65.568 198.199 65.248 197.687 64.992C197.175 64.736 196.615 64.608 196.007 64.608C195.335 64.608 194.847 64.728 194.543 64.968C194.255 65.208 194.111 65.52 194.111 65.904C194.111 66.32 194.231 66.64 194.471 66.864C194.727 67.072 195.151 67.224 195.743 67.32L197.015 67.488C199.719 67.872 201.071 69.104 201.071 71.184C201.071 71.792 200.943 72.352 200.687 72.864C200.447 73.36 200.103 73.792 199.655 74.16C199.207 74.512 198.663 74.792 198.023 75C197.399 75.192 196.695 75.288 195.911 75.288ZM203.784 57.24H206.856V64.536H206.952C207.176 63.816 207.6 63.248 208.224 62.832C208.848 62.4 209.576 62.184 210.408 62.184C212.008 62.184 213.224 62.752 214.056 63.888C214.904 65.008 215.328 66.616 215.328 68.712C215.328 70.824 214.904 72.448 214.056 73.584C213.224 74.72 212.008 75.288 210.408 75.288C209.576 75.288 208.848 75.072 208.224 74.64C207.616 74.208 207.192 73.632 206.952 72.912H206.856V75H203.784V57.24ZM209.424 72.744C210.224 72.744 210.872 72.48 211.368 71.952C211.864 71.424 212.112 70.712 212.112 69.816V67.656C212.112 66.76 211.864 66.048 211.368 65.52C210.872 64.976 210.224 64.704 209.424 64.704C208.688 64.704 208.072 64.888 207.576 65.256C207.096 65.624 206.856 66.112 206.856 66.72V70.704C206.856 71.36 207.096 71.864 207.576 72.216C208.072 72.568 208.688 72.744 209.424 72.744ZM225.644 62.472H228.523L223.484 77.232C223.324 77.68 223.14 78.064 222.932 78.384C222.74 78.72 222.508 78.992 222.236 79.2C221.964 79.408 221.636 79.56 221.252 79.656C220.868 79.752 220.42 79.8 219.908 79.8H218.06V77.352H220.316L220.892 75.6L216.404 62.472H219.452L221.636 69.096L222.452 72.264H222.596L223.46 69.096L225.644 62.472ZM241.268 76.056C241.268 76.712 241.148 77.288 240.908 77.784C240.684 78.296 240.308 78.72 239.78 79.056C239.252 79.392 238.572 79.648 237.74 79.824C236.908 80 235.892 80.088 234.692 80.088C233.636 80.088 232.74 80.016 232.004 79.872C231.268 79.744 230.66 79.552 230.18 79.296C229.716 79.056 229.38 78.752 229.172 78.384C228.964 78.016 228.86 77.6 228.86 77.136C228.86 76.432 229.052 75.88 229.436 75.48C229.836 75.096 230.388 74.848 231.092 74.736V74.472C230.58 74.344 230.18 74.096 229.892 73.728C229.62 73.344 229.484 72.896 229.484 72.384C229.484 72.064 229.548 71.784 229.676 71.544C229.804 71.288 229.972 71.072 230.18 70.896C230.404 70.72 230.652 70.576 230.924 70.464C231.196 70.336 231.484 70.24 231.788 70.176V70.08C231.02 69.728 230.444 69.24 230.06 68.616C229.692 67.992 229.508 67.264 229.508 66.432C229.508 65.152 229.948 64.128 230.828 63.36C231.708 62.576 232.996 62.184 234.692 62.184C235.076 62.184 235.452 62.208 235.82 62.256C236.204 62.304 236.556 62.384 236.876 62.496V62.088C236.876 60.872 237.468 60.264 238.652 60.264H240.596V62.616H237.932V62.952C238.588 63.32 239.076 63.8 239.396 64.392C239.716 64.984 239.876 65.664 239.876 66.432C239.876 67.696 239.436 68.712 238.556 69.48C237.692 70.248 236.404 70.632 234.692 70.632C233.956 70.632 233.316 70.56 232.772 70.416C232.532 70.528 232.324 70.68 232.148 70.872C231.972 71.048 231.884 71.272 231.884 71.544C231.884 72.168 232.428 72.48 233.516 72.48H236.876C238.412 72.48 239.524 72.8 240.212 73.44C240.916 74.064 241.268 74.936 241.268 76.056ZM238.388 76.416C238.388 76.016 238.228 75.704 237.908 75.48C237.588 75.256 237.036 75.144 236.252 75.144H231.98C231.548 75.464 231.332 75.896 231.332 76.44C231.332 76.92 231.532 77.296 231.932 77.568C232.332 77.84 233.012 77.976 233.972 77.976H235.508C236.516 77.976 237.244 77.848 237.692 77.592C238.156 77.336 238.388 76.944 238.388 76.416ZM234.692 68.544C236.196 68.544 236.948 67.904 236.948 66.624V66.216C236.948 64.936 236.196 64.296 234.692 64.296C233.188 64.296 232.436 64.936 232.436 66.216V66.624C232.436 67.904 233.188 68.544 234.692 68.544ZM254.486 76.056C254.486 76.712 254.366 77.288 254.126 77.784C253.902 78.296 253.526 78.72 252.998 79.056C252.47 79.392 251.79 79.648 250.958 79.824C250.126 80 249.11 80.088 247.91 80.088C246.854 80.088 245.958 80.016 245.222 79.872C244.486 79.744 243.878 79.552 243.398 79.296C242.934 79.056 242.598 78.752 242.39 78.384C242.182 78.016 242.078 77.6 242.078 77.136C242.078 76.432 242.27 75.88 242.654 75.48C243.054 75.096 243.606 74.848 244.31 74.736V74.472C243.798 74.344 243.398 74.096 243.11 73.728C242.838 73.344 242.702 72.896 242.702 72.384C242.702 72.064 242.766 71.784 242.894 71.544C243.022 71.288 243.19 71.072 243.398 70.896C243.622 70.72 243.87 70.576 244.142 70.464C244.414 70.336 244.702 70.24 245.006 70.176V70.08C244.238 69.728 243.662 69.24 243.278 68.616C242.91 67.992 242.726 67.264 242.726 66.432C242.726 65.152 243.166 64.128 244.046 63.36C244.926 62.576 246.214 62.184 247.91 62.184C248.294 62.184 248.67 62.208 249.038 62.256C249.422 62.304 249.774 62.384 250.094 62.496V62.088C250.094 60.872 250.686 60.264 251.87 60.264H253.814V62.616H251.15V62.952C251.806 63.32 252.294 63.8 252.614 64.392C252.934 64.984 253.094 65.664 253.094 66.432C253.094 67.696 252.654 68.712 251.774 69.48C250.91 70.248 249.622 70.632 247.91 70.632C247.174 70.632 246.534 70.56 245.99 70.416C245.75 70.528 245.542 70.68 245.366 70.872C245.19 71.048 245.102 71.272 245.102 71.544C245.102 72.168 245.646 72.48 246.734 72.48H250.094C251.63 72.48 252.742 72.8 253.43 73.44C254.134 74.064 254.486 74.936 254.486 76.056ZM251.606 76.416C251.606 76.016 251.446 75.704 251.126 75.48C250.806 75.256 250.254 75.144 249.47 75.144H245.198C244.766 75.464 244.55 75.896 244.55 76.44C244.55 76.92 244.75 77.296 245.15 77.568C245.55 77.84 246.23 77.976 247.19 77.976H248.726C249.734 77.976 250.462 77.848 250.91 77.592C251.374 77.336 251.606 76.944 251.606 76.416ZM247.91 68.544C249.414 68.544 250.166 67.904 250.166 66.624V66.216C250.166 64.936 249.414 64.296 247.91 64.296C246.406 64.296 245.654 64.936 245.654 66.216V66.624C245.654 67.904 246.406 68.544 247.91 68.544ZM265.408 58.224L263.632 59.376C264.736 60.528 265.624 61.856 266.296 63.36C266.968 64.864 267.304 66.536 267.304 68.376C267.304 69.56 267.16 70.592 266.872 71.472C266.584 72.336 266.176 73.056 265.648 73.632C265.136 74.192 264.52 74.608 263.8 74.88C263.08 75.152 262.28 75.288 261.4 75.288C260.456 75.288 259.608 75.144 258.856 74.856C258.12 74.552 257.488 74.128 256.96 73.584C256.448 73.04 256.056 72.376 255.784 71.592C255.512 70.808 255.376 69.936 255.376 68.976C255.376 68.08 255.488 67.264 255.712 66.528C255.952 65.792 256.288 65.16 256.72 64.632C257.152 64.104 257.672 63.696 258.28 63.408C258.904 63.12 259.592 62.976 260.344 62.976C261.208 62.976 261.928 63.192 262.504 63.624C263.096 64.04 263.56 64.608 263.896 65.328L264.04 65.256C263.848 64.44 263.504 63.664 263.008 62.928C262.528 62.192 261.944 61.488 261.256 60.816L259.192 62.112L258.088 60.792L259.96 59.664C259.4 59.2 258.808 58.768 258.184 58.368C257.576 57.968 256.96 57.592 256.336 57.24H261.016C261.24 57.368 261.456 57.52 261.664 57.696C261.872 57.856 262.088 58.024 262.312 58.2L264.328 56.928L265.408 58.224ZM261.352 72.936C262.2 72.936 262.872 72.664 263.368 72.12C263.864 71.576 264.112 70.816 264.112 69.84V68.448C264.112 67.472 263.864 66.712 263.368 66.168C262.872 65.624 262.2 65.352 261.352 65.352C260.488 65.352 259.808 65.624 259.312 66.168C258.816 66.712 258.568 67.472 258.568 68.448V69.84C258.568 70.816 258.816 71.576 259.312 72.12C259.808 72.664 260.488 72.936 261.352 72.936Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/mosfellsbaer.svg b/libs/application/templates/financial-aid/src/svg/mosfellsbaer.svg deleted file mode 100644 index 5865f4270844..000000000000 --- a/libs/application/templates/financial-aid/src/svg/mosfellsbaer.svg +++ /dev/null @@ -1,13 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57893)"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M48.8071 18C61.5117 24.5448 69.5963 37.7113 70.2893 51.4167C82.2239 60.1174 88.6916 72.8219 87.9217 87.4514C77.2191 94.8431 60.1257 95.9981 48.5761 89.4533C36.6416 95.9211 18.8553 94.8431 7.99866 86.7584C7.61367 71.975 14.0814 59.0395 26.709 50.8778C27.7869 37.3263 35.7176 24.5448 48.2681 18H48.8071ZM52.888 25.4687C63.8216 34.6314 68.5954 48.6449 64.8995 62.8123C64.2835 65.0452 63.4366 67.2012 62.4356 69.2801C58.5088 67.2782 54.7359 64.8912 50.809 62.8123L50.5781 61.9654L50.7321 44.949L50.5011 44.718C43.4943 44.41 37.1806 45.796 31.2518 48.3369C32.8687 38.0193 38.8745 28.3946 48.4221 22.6968C50.1161 23.1588 51.425 24.3908 52.888 25.4687ZM46.0352 62.7353L31.0208 71.359C31.2518 73.2069 32.6377 74.8239 33.5617 76.4408C36.2566 80.2137 39.8755 83.9865 43.6483 86.6044V86.8354C34.0237 90.8393 21.0882 89.9153 12.3875 84.5255C12.1565 76.8258 14.6974 69.9731 18.8553 63.9673C25.708 54.8046 35.3326 49.7998 46.1122 49.0298L46.0352 62.7353ZM83.7638 85.2185C73.9082 91.3783 58.3548 90.8393 48.5761 84.6795C44.1873 81.9846 39.4905 77.9808 36.7956 73.3609L48.0372 66.8932L48.7301 66.9702C53.7349 69.8961 58.6628 72.8989 63.5906 75.8248C67.6714 70.358 69.4424 63.8133 70.2893 56.8835C79.375 64.0443 83.6868 74.1309 83.7638 85.2185Z" fill="#414B1E"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M110.616 62.976H110.52L109.224 65.64L105.792 71.976L102.36 65.64L101.064 62.976H100.968V75H97.968V58.248H101.544L105.84 66.432H105.936L110.184 58.248H113.616V75H110.616V62.976ZM122.338 75.288C121.442 75.288 120.634 75.136 119.914 74.832C119.21 74.528 118.602 74.088 118.09 73.512C117.594 72.936 117.21 72.248 116.938 71.448C116.666 70.632 116.53 69.72 116.53 68.712C116.53 67.704 116.666 66.8 116.938 66C117.21 65.2 117.594 64.52 118.09 63.96C118.602 63.384 119.21 62.944 119.914 62.64C120.634 62.336 121.442 62.184 122.338 62.184C123.234 62.184 124.042 62.336 124.762 62.64C125.482 62.944 126.09 63.384 126.586 63.96C127.098 64.52 127.49 65.2 127.762 66C128.034 66.8 128.17 67.704 128.17 68.712C128.17 69.72 128.034 70.632 127.762 71.448C127.49 72.248 127.098 72.936 126.586 73.512C126.09 74.088 125.482 74.528 124.762 74.832C124.042 75.136 123.234 75.288 122.338 75.288ZM122.338 72.816C123.154 72.816 123.794 72.568 124.258 72.072C124.722 71.576 124.954 70.848 124.954 69.888V67.56C124.954 66.616 124.722 65.896 124.258 65.4C123.794 64.904 123.154 64.656 122.338 64.656C121.538 64.656 120.906 64.904 120.442 65.4C119.978 65.896 119.746 66.616 119.746 67.56V69.888C119.746 70.848 119.978 71.576 120.442 72.072C120.906 72.568 121.538 72.816 122.338 72.816ZM134.997 75.288C133.797 75.288 132.789 75.088 131.973 74.688C131.157 74.272 130.437 73.704 129.813 72.984L131.685 71.16C132.149 71.688 132.653 72.104 133.197 72.408C133.757 72.712 134.397 72.864 135.117 72.864C135.853 72.864 136.381 72.736 136.701 72.48C137.037 72.224 137.205 71.872 137.205 71.424C137.205 71.056 137.085 70.768 136.845 70.56C136.621 70.336 136.229 70.184 135.669 70.104L134.421 69.936C133.061 69.76 132.021 69.376 131.301 68.784C130.597 68.176 130.245 67.296 130.245 66.144C130.245 65.536 130.357 64.992 130.581 64.512C130.805 64.016 131.125 63.6 131.541 63.264C131.957 62.912 132.453 62.648 133.029 62.472C133.621 62.28 134.277 62.184 134.997 62.184C135.605 62.184 136.141 62.232 136.605 62.328C137.085 62.408 137.517 62.536 137.901 62.712C138.285 62.872 138.637 63.08 138.957 63.336C139.277 63.576 139.589 63.848 139.893 64.152L138.093 65.952C137.725 65.568 137.285 65.248 136.773 64.992C136.261 64.736 135.701 64.608 135.093 64.608C134.421 64.608 133.933 64.728 133.629 64.968C133.341 65.208 133.197 65.52 133.197 65.904C133.197 66.32 133.317 66.64 133.557 66.864C133.813 67.072 134.237 67.224 134.829 67.32L136.101 67.488C138.805 67.872 140.157 69.104 140.157 71.184C140.157 71.792 140.029 72.352 139.773 72.864C139.533 73.36 139.189 73.792 138.741 74.16C138.293 74.512 137.749 74.792 137.109 75C136.485 75.192 135.781 75.288 134.997 75.288ZM143.4 64.896H141.552V62.472H143.4V60.672C143.4 59.568 143.688 58.72 144.264 58.128C144.856 57.536 145.72 57.24 146.856 57.24H149.04V59.688H146.472V62.472H149.04V64.896H146.472V75H143.4V64.896ZM156.137 75.288C155.209 75.288 154.377 75.136 153.641 74.832C152.921 74.512 152.305 74.072 151.793 73.512C151.297 72.936 150.913 72.248 150.641 71.448C150.369 70.632 150.233 69.72 150.233 68.712C150.233 67.72 150.361 66.824 150.617 66.024C150.889 65.224 151.273 64.544 151.769 63.984C152.265 63.408 152.873 62.968 153.593 62.664C154.313 62.344 155.129 62.184 156.041 62.184C157.017 62.184 157.865 62.352 158.585 62.688C159.305 63.024 159.897 63.48 160.361 64.056C160.825 64.632 161.169 65.304 161.393 66.072C161.633 66.824 161.753 67.632 161.753 68.496V69.504H153.425V69.816C153.425 70.728 153.681 71.464 154.193 72.024C154.705 72.568 155.465 72.84 156.473 72.84C157.241 72.84 157.865 72.68 158.345 72.36C158.841 72.04 159.281 71.632 159.665 71.136L161.321 72.984C160.809 73.704 160.105 74.272 159.209 74.688C158.329 75.088 157.305 75.288 156.137 75.288ZM156.089 64.488C155.273 64.488 154.625 64.76 154.145 65.304C153.665 65.848 153.425 66.552 153.425 67.416V67.608H158.561V67.392C158.561 66.528 158.345 65.832 157.913 65.304C157.497 64.76 156.889 64.488 156.089 64.488ZM167.528 75C166.472 75 165.696 74.736 165.2 74.208C164.704 73.68 164.456 72.936 164.456 71.976V57.24H167.528V72.552H169.184V75H167.528ZM174.418 75C173.362 75 172.586 74.736 172.09 74.208C171.594 73.68 171.346 72.936 171.346 71.976V57.24H174.418V72.552H176.074V75H174.418ZM182.505 75.288C181.305 75.288 180.297 75.088 179.481 74.688C178.665 74.272 177.945 73.704 177.321 72.984L179.193 71.16C179.657 71.688 180.161 72.104 180.705 72.408C181.265 72.712 181.905 72.864 182.625 72.864C183.361 72.864 183.889 72.736 184.209 72.48C184.545 72.224 184.713 71.872 184.713 71.424C184.713 71.056 184.593 70.768 184.353 70.56C184.129 70.336 183.737 70.184 183.177 70.104L181.929 69.936C180.569 69.76 179.529 69.376 178.809 68.784C178.105 68.176 177.753 67.296 177.753 66.144C177.753 65.536 177.865 64.992 178.089 64.512C178.313 64.016 178.633 63.6 179.049 63.264C179.465 62.912 179.961 62.648 180.537 62.472C181.129 62.28 181.785 62.184 182.505 62.184C183.113 62.184 183.649 62.232 184.113 62.328C184.593 62.408 185.025 62.536 185.409 62.712C185.793 62.872 186.145 63.08 186.465 63.336C186.785 63.576 187.097 63.848 187.401 64.152L185.601 65.952C185.233 65.568 184.793 65.248 184.281 64.992C183.769 64.736 183.209 64.608 182.601 64.608C181.929 64.608 181.441 64.728 181.137 64.968C180.849 65.208 180.705 65.52 180.705 65.904C180.705 66.32 180.825 66.64 181.065 66.864C181.321 67.072 181.745 67.224 182.337 67.32L183.609 67.488C186.313 67.872 187.665 69.104 187.665 71.184C187.665 71.792 187.537 72.352 187.281 72.864C187.041 73.36 186.697 73.792 186.249 74.16C185.801 74.512 185.257 74.792 184.617 75C183.993 75.192 183.289 75.288 182.505 75.288ZM190.378 57.24H193.45V64.536H193.546C193.77 63.816 194.194 63.248 194.818 62.832C195.442 62.4 196.17 62.184 197.002 62.184C198.602 62.184 199.818 62.752 200.65 63.888C201.498 65.008 201.922 66.616 201.922 68.712C201.922 70.824 201.498 72.448 200.65 73.584C199.818 74.72 198.602 75.288 197.002 75.288C196.17 75.288 195.442 75.072 194.818 74.64C194.21 74.208 193.786 73.632 193.546 72.912H193.45V75H190.378V57.24ZM196.018 72.744C196.818 72.744 197.466 72.48 197.962 71.952C198.458 71.424 198.706 70.712 198.706 69.816V67.656C198.706 66.76 198.458 66.048 197.962 65.52C197.466 64.976 196.818 64.704 196.018 64.704C195.282 64.704 194.666 64.888 194.17 65.256C193.69 65.624 193.45 66.112 193.45 66.72V70.704C193.45 71.36 193.69 71.864 194.17 72.216C194.666 72.568 195.282 72.744 196.018 72.744ZM209.4 69.504C208.632 69.52 208.04 69.664 207.624 69.936C207.208 70.192 207 70.576 207 71.088V71.472C207 71.984 207.16 72.376 207.48 72.648C207.8 72.92 208.28 73.056 208.92 73.056C209.592 73.056 210.168 72.904 210.648 72.6C211.128 72.296 211.368 71.848 211.368 71.256V69.504H209.4ZM219.6 67.608V67.392C219.6 66.528 219.384 65.832 218.952 65.304C218.536 64.76 217.928 64.488 217.128 64.488C216.312 64.488 215.664 64.76 215.184 65.304C214.704 65.848 214.464 66.552 214.464 67.416V67.608H219.6ZM217.56 72.792C218.312 72.792 218.944 72.632 219.456 72.312C219.968 71.992 220.4 71.6 220.752 71.136L222.408 72.984C221.896 73.704 221.2 74.272 220.32 74.688C219.44 75.088 218.432 75.288 217.296 75.288C216.688 75.288 216.12 75.216 215.592 75.072C215.064 74.928 214.592 74.736 214.176 74.496C213.776 74.256 213.432 73.984 213.144 73.68C212.856 73.376 212.64 73.056 212.496 72.72H212.352C212.24 73.04 212.064 73.352 211.824 73.656C211.6 73.96 211.304 74.232 210.936 74.472C210.568 74.712 210.128 74.904 209.616 75.048C209.12 75.208 208.536 75.288 207.864 75.288C206.6 75.288 205.616 74.944 204.912 74.256C204.224 73.568 203.88 72.672 203.88 71.568C203.88 70.912 204.008 70.336 204.264 69.84C204.52 69.344 204.88 68.936 205.344 68.616C205.808 68.28 206.368 68.032 207.024 67.872C207.68 67.696 208.416 67.608 209.232 67.608H211.368V66.84C211.368 66.136 211.184 65.592 210.816 65.208C210.448 64.824 209.864 64.632 209.064 64.632C208.328 64.632 207.736 64.784 207.288 65.088C206.856 65.392 206.488 65.768 206.184 66.216L204.36 64.584C204.824 63.864 205.44 63.288 206.208 62.856C206.976 62.408 207.992 62.184 209.256 62.184C210.216 62.184 210.984 62.384 211.56 62.784C212.136 63.168 212.584 63.656 212.904 64.248H213.048C213.368 63.656 213.888 63.168 214.608 62.784C215.328 62.384 216.192 62.184 217.2 62.184C218.176 62.184 219.016 62.352 219.72 62.688C220.424 63.024 221 63.48 221.448 64.056C221.912 64.632 222.248 65.304 222.456 66.072C222.68 66.824 222.792 67.632 222.792 68.496V69.504H214.44V69.816C214.44 70.712 214.712 71.432 215.256 71.976C215.8 72.52 216.568 72.792 217.56 72.792ZM225.51 75V62.472H228.582V65.064H228.702C228.782 64.728 228.902 64.408 229.062 64.104C229.238 63.784 229.462 63.504 229.734 63.264C230.006 63.024 230.326 62.832 230.694 62.688C231.078 62.544 231.518 62.472 232.014 62.472H232.686V65.376H231.726C230.686 65.376 229.902 65.528 229.374 65.832C228.846 66.136 228.582 66.632 228.582 67.32V75H225.51Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57893"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/mulathing.svg b/libs/application/templates/financial-aid/src/svg/mulathing.svg deleted file mode 100644 index db8a74460069..000000000000 --- a/libs/application/templates/financial-aid/src/svg/mulathing.svg +++ /dev/null @@ -1,9 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M48.0976 95.3347H47.266C29.5251 95.3347 15.1107 80.9203 15.1662 63.124L15.3325 16.1663H80.1419L80.2528 63.1795C80.2528 80.9203 65.8938 95.3347 48.0976 95.3347Z" fill="white"/> -<path d="M76.6499 19.8254H47.7656V52.3133H76.6499V19.8254Z" fill="#15A638"/> -<path d="M47.7651 52.535H18.8809V63.2349C18.8809 70.8856 21.9301 78.2592 27.3077 83.6368C32.6854 89.0145 40.059 92.1192 47.7097 92.1192V52.535H47.7651Z" fill="#FFED00"/> -<path d="M79.1996 68.3909C75.2633 65.1199 72.4359 64.5655 68.3333 65.508C64.5634 66.3396 60.9044 67.6701 57.5225 69.4442C56.58 71.6064 54.0298 77.1504 50.9806 79.0353C50.0381 79.7006 48.9293 80.1996 47.8205 80.4768V83.0825H26.8087C26.0326 82.2509 25.3119 81.4193 24.6466 80.5322H47.8205V76.6514C48.3195 76.4851 48.8184 76.2633 49.3174 75.9861C50.9806 75.0437 53.3091 70.4976 54.5842 67.5593L54.806 67.0603L55.3049 66.7831C55.4712 66.6722 60.0173 63.9002 67.6681 62.1261C72.4913 61.0173 76.0395 61.7935 79.6985 64.3437C79.5322 65.6188 79.3659 67.0049 79.1996 68.3909ZM47.7651 92.1192C41.833 92.1192 36.0672 90.2897 31.1885 86.9078H47.7651V92.1192ZM22.1518 76.596C21.7082 75.7644 21.3202 74.8773 20.9321 73.9903H47.7651V74.1012V76.596H22.1518ZM39.2273 70.0541H27.474C27.5295 68.5572 28.1393 67.0603 29.2481 66.0069C30.3569 64.9536 31.7983 64.3437 33.3507 64.3437C34.903 64.3437 36.3444 64.9536 37.4532 66.0069C38.562 67.0603 39.1719 68.5572 39.2273 70.0541ZM18.8808 63.2349V52.535H47.7651V52.3132V36.79C42.7755 34.7942 39.2827 30.9688 37.4532 28.474C36.8434 29.3056 36.0672 30.359 35.2356 31.4123C31.1331 36.6791 29.7471 37.1227 28.6937 37.1227C27.5295 37.1227 26.3652 37.1781 25.5891 37.289C24.203 39.1185 20.1005 44.2744 15.8316 47.49V42.7775C18.4927 40.2273 20.9875 37.4553 23.2051 34.517L23.7041 33.8517L24.5357 33.7963C24.5911 33.7963 26.5315 33.6299 28.4719 33.5745C29.6916 32.8538 33.3507 28.3077 36.0672 24.316L37.7304 21.8766L39.1164 24.4823C39.1719 24.5378 42.2211 30.0818 47.7651 32.9092V19.8254H76.6493V42.6667H74.9861C67.0028 42.1677 66.8919 32.4657 66.8919 32.0776H63.0111C63.0665 34.4061 63.51 36.6791 64.3971 38.8413C64.8406 40.0055 65.4505 41.0589 66.1712 42.0568C64.2308 41.447 62.4567 40.3382 61.0152 38.8413C57.966 35.7367 56.4137 31.1906 56.4692 25.3139L52.5884 25.2585C52.5329 28.2523 52.9764 31.246 53.8635 34.1289C52.8101 33.8517 51.7013 33.6854 50.5925 33.6299L50.3153 37.5107C54.6951 37.8434 56.4692 39.5066 56.6355 39.6729C57.1344 40.3382 57.6888 41.0035 58.2987 41.6133C61.3479 44.7179 65.5059 46.492 69.8302 46.5475H76.7048V52.3132H47.7651V52.535V70.1095H42.9972C42.9418 67.6147 41.8884 65.1753 40.1143 63.4012C38.3403 61.6272 35.9009 60.6292 33.3507 60.6292C30.8004 60.6292 28.4165 61.6272 26.587 63.4012C24.7575 65.1753 23.7595 67.5592 23.7041 70.1095H19.657C19.1026 67.8365 18.8808 65.508 18.8808 63.2349ZM15 16V63.2349C15 80.754 29.2481 95.9446 47.7651 95.9446C65.0624 95.9446 80.5301 82.0291 80.5301 63.1795V16H15Z" fill="#26336A"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M110.616 62.976H110.52L109.224 65.64L105.792 71.976L102.36 65.64L101.064 62.976H100.968V75H97.968V58.248H101.544L105.84 66.432H105.936L110.184 58.248H113.616V75H110.616V62.976ZM122.914 61.056L121.066 60.168L123.346 55.68L125.938 56.952L122.914 61.056ZM124.858 72.912H124.738C124.626 73.232 124.474 73.536 124.282 73.824C124.106 74.096 123.874 74.344 123.586 74.568C123.314 74.792 122.978 74.968 122.578 75.096C122.194 75.224 121.746 75.288 121.234 75.288C119.938 75.288 118.946 74.864 118.258 74.016C117.57 73.168 117.226 71.96 117.226 70.392V62.472H120.298V70.08C120.298 70.944 120.466 71.608 120.802 72.072C121.138 72.52 121.674 72.744 122.41 72.744C122.714 72.744 123.01 72.704 123.298 72.624C123.602 72.544 123.866 72.424 124.09 72.264C124.314 72.088 124.498 71.88 124.642 71.64C124.786 71.384 124.858 71.088 124.858 70.752V62.472H127.93V75H124.858V72.912ZM134.551 75C133.495 75 132.719 74.736 132.223 74.208C131.727 73.68 131.479 72.936 131.479 71.976V57.24H134.551V72.552H136.207V75H134.551ZM147.75 75C147.078 75 146.542 74.808 146.142 74.424C145.758 74.024 145.518 73.496 145.422 72.84H145.278C145.07 73.656 144.646 74.272 144.006 74.688C143.366 75.088 142.574 75.288 141.63 75.288C140.35 75.288 139.366 74.952 138.678 74.28C137.99 73.608 137.646 72.712 137.646 71.592C137.646 70.296 138.11 69.336 139.038 68.712C139.966 68.072 141.286 67.752 142.998 67.752H145.134V66.84C145.134 66.136 144.95 65.592 144.582 65.208C144.214 64.824 143.622 64.632 142.806 64.632C142.086 64.632 141.502 64.792 141.054 65.112C140.622 65.416 140.254 65.784 139.95 66.216L138.126 64.584C138.59 63.864 139.206 63.288 139.974 62.856C140.742 62.408 141.758 62.184 143.022 62.184C144.718 62.184 146.006 62.568 146.886 63.336C147.766 64.104 148.206 65.208 148.206 66.648V72.552H149.454V75H147.75ZM142.662 73.056C143.35 73.056 143.934 72.904 144.414 72.6C144.894 72.296 145.134 71.848 145.134 71.256V69.6H143.166C141.566 69.6 140.766 70.112 140.766 71.136V71.544C140.766 72.056 140.926 72.44 141.246 72.696C141.582 72.936 142.054 73.056 142.662 73.056ZM151.94 57.24H155.012V64.536H155.108C155.332 63.816 155.756 63.248 156.38 62.832C157.004 62.4 157.732 62.184 158.564 62.184C160.164 62.184 161.38 62.752 162.212 63.888C163.06 65.008 163.484 66.616 163.484 68.712C163.484 70.824 163.06 72.448 162.212 73.584C161.38 74.72 160.164 75.288 158.564 75.288C157.732 75.288 157.004 75.072 156.38 74.64C155.772 74.208 155.348 73.632 155.108 72.912H155.012V79.8H151.94V57.24ZM157.58 72.744C158.38 72.744 159.028 72.48 159.524 71.952C160.02 71.424 160.268 70.712 160.268 69.816V67.656C160.268 66.76 160.02 66.048 159.524 65.52C159.028 64.976 158.38 64.704 157.58 64.704C156.844 64.704 156.228 64.888 155.732 65.256C155.252 65.624 155.012 66.112 155.012 66.72V70.704C155.012 71.36 155.252 71.864 155.732 72.216C156.228 72.568 156.844 72.744 157.58 72.744ZM167.867 60.648C167.227 60.648 166.763 60.504 166.475 60.216C166.203 59.928 166.067 59.56 166.067 59.112V58.632C166.067 58.184 166.203 57.816 166.475 57.528C166.763 57.24 167.227 57.096 167.867 57.096C168.491 57.096 168.947 57.24 169.235 57.528C169.523 57.816 169.667 58.184 169.667 58.632V59.112C169.667 59.56 169.523 59.928 169.235 60.216C168.947 60.504 168.491 60.648 167.867 60.648ZM166.331 62.472H169.403V75H166.331V62.472ZM172.964 75V62.472H176.036V64.56H176.156C176.412 63.888 176.812 63.328 177.355 62.88C177.916 62.416 178.684 62.184 179.66 62.184C180.956 62.184 181.948 62.608 182.636 63.456C183.324 64.304 183.668 65.512 183.668 67.08V75H180.596V67.392C180.596 66.496 180.436 65.824 180.116 65.376C179.796 64.928 179.268 64.704 178.532 64.704C178.212 64.704 177.9 64.752 177.596 64.848C177.308 64.928 177.044 65.056 176.804 65.232C176.58 65.392 176.396 65.6 176.252 65.856C176.108 66.096 176.036 66.384 176.036 66.72V75H172.964ZM198.377 76.056C198.377 76.712 198.257 77.288 198.017 77.784C197.793 78.296 197.417 78.72 196.889 79.056C196.361 79.392 195.681 79.648 194.849 79.824C194.017 80 193.001 80.088 191.801 80.088C190.745 80.088 189.849 80.016 189.113 79.872C188.377 79.744 187.769 79.552 187.289 79.296C186.825 79.056 186.489 78.752 186.281 78.384C186.073 78.016 185.969 77.6 185.969 77.136C185.969 76.432 186.161 75.88 186.545 75.48C186.945 75.096 187.497 74.848 188.201 74.736V74.472C187.689 74.344 187.289 74.096 187.001 73.728C186.729 73.344 186.593 72.896 186.593 72.384C186.593 72.064 186.657 71.784 186.785 71.544C186.913 71.288 187.081 71.072 187.289 70.896C187.513 70.72 187.761 70.576 188.033 70.464C188.305 70.336 188.593 70.24 188.897 70.176V70.08C188.129 69.728 187.553 69.24 187.169 68.616C186.801 67.992 186.617 67.264 186.617 66.432C186.617 65.152 187.057 64.128 187.937 63.36C188.817 62.576 190.105 62.184 191.801 62.184C192.185 62.184 192.561 62.208 192.929 62.256C193.313 62.304 193.665 62.384 193.985 62.496V62.088C193.985 60.872 194.577 60.264 195.761 60.264H197.705V62.616H195.041V62.952C195.697 63.32 196.185 63.8 196.505 64.392C196.825 64.984 196.985 65.664 196.985 66.432C196.985 67.696 196.545 68.712 195.665 69.48C194.801 70.248 193.513 70.632 191.801 70.632C191.065 70.632 190.425 70.56 189.881 70.416C189.641 70.528 189.433 70.68 189.257 70.872C189.081 71.048 188.993 71.272 188.993 71.544C188.993 72.168 189.537 72.48 190.625 72.48H193.985C195.521 72.48 196.633 72.8 197.321 73.44C198.025 74.064 198.377 74.936 198.377 76.056ZM195.497 76.416C195.497 76.016 195.337 75.704 195.017 75.48C194.697 75.256 194.145 75.144 193.361 75.144H189.089C188.657 75.464 188.441 75.896 188.441 76.44C188.441 76.92 188.641 77.296 189.041 77.568C189.441 77.84 190.121 77.976 191.081 77.976H192.617C193.625 77.976 194.353 77.848 194.801 77.592C195.265 77.336 195.497 76.944 195.497 76.416ZM191.801 68.544C193.305 68.544 194.057 67.904 194.057 66.624V66.216C194.057 64.936 193.305 64.296 191.801 64.296C190.297 64.296 189.545 64.936 189.545 66.216V66.624C189.545 67.904 190.297 68.544 191.801 68.544Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/myrdalshreppur.svg b/libs/application/templates/financial-aid/src/svg/myrdalshreppur.svg deleted file mode 100644 index ea2d8f17e461..000000000000 --- a/libs/application/templates/financial-aid/src/svg/myrdalshreppur.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M48.4513 96H47.8716L47.6232 95.9172C47.0435 95.6687 34.3727 90.2029 27.4162 83.2464C20.7909 76.4555 14 67.8427 14 54.5921V16H82.323V54.5921C82.323 67.8427 75.5321 76.4555 68.824 83.1636C61.8675 90.1201 49.1967 95.6687 48.617 95.8344L48.4513 96Z" fill="#527F66"/> -<path d="M16.6504 18.6501V54.5921C16.6504 66.9317 23.11 75.0476 29.3212 81.3416C35.1183 87.2215 45.6359 92.1076 48.1204 93.1842C50.6048 92.1076 61.1224 87.1387 66.9195 81.3416C73.2135 74.9648 79.5903 66.8488 79.5903 54.5921V18.6501H16.6504Z" fill="white"/> -<path d="M73.3793 49.8716H23.0273V54.7578H73.3793V49.8716Z" fill="#231F20"/> -<path d="M60.2944 42.1698L54.0832 24.2816L48.2033 31.4865L42.4062 24.2816L36.195 42.1698H23.0273V46.9731H39.2592L43.7313 34.0538L48.2033 39.6025L52.7582 34.0538L57.2302 46.9731H73.3793V42.1698H60.2944Z" fill="#527F66"/> -<path d="M47.6228 82.3354V44.323L42.9023 38.6915V76.9524L47.6228 82.3354Z" fill="#231F20"/> -<path d="M53.5037 86.7247V38.6915L48.7832 44.323V81.4244L53.5037 86.7247Z" fill="#231F20"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M110.616 62.976H110.52L109.224 65.64L105.792 71.976L102.36 65.64L101.064 62.976H100.968V75H97.968V58.248H101.544L105.84 66.432H105.936L110.184 58.248H113.616V75H110.616V62.976ZM125.05 62.472H127.93L122.89 77.232C122.73 77.68 122.546 78.064 122.338 78.384C122.146 78.72 121.914 78.992 121.642 79.2C121.37 79.408 121.042 79.56 120.658 79.656C120.274 79.752 119.826 79.8 119.314 79.8H117.466V77.352H119.722L120.298 75.6L115.81 62.472H118.858L121.042 69.096L121.858 72.264H122.002L122.866 69.096L125.05 62.472ZM122.29 61.056L120.442 60.168L122.722 55.68L125.314 56.952L122.29 61.056ZM129.956 75V62.472H133.028V65.064H133.148C133.228 64.728 133.348 64.408 133.508 64.104C133.684 63.784 133.908 63.504 134.18 63.264C134.452 63.024 134.772 62.832 135.14 62.688C135.524 62.544 135.964 62.472 136.46 62.472H137.132V65.376H136.172C135.132 65.376 134.348 65.528 133.82 65.832C133.292 66.136 133.028 66.632 133.028 67.32V75H129.956ZM147.036 72.912H146.916C146.692 73.632 146.268 74.208 145.644 74.64C145.02 75.072 144.292 75.288 143.46 75.288C141.876 75.288 140.66 74.72 139.812 73.584C138.98 72.448 138.564 70.824 138.564 68.712C138.564 66.616 138.98 65.008 139.812 63.888C140.66 62.752 141.876 62.184 143.46 62.184C144.292 62.184 145.02 62.4 145.644 62.832C146.268 63.248 146.692 63.816 146.916 64.536H147.036V57.24H150.108V75H147.036V72.912ZM144.444 72.744C145.18 72.744 145.796 72.568 146.292 72.216C146.788 71.864 147.036 71.36 147.036 70.704V66.72C147.036 66.112 146.788 65.624 146.292 65.256C145.796 64.888 145.18 64.704 144.444 64.704C143.644 64.704 142.996 64.976 142.5 65.52C142.02 66.048 141.78 66.76 141.78 67.656V69.816C141.78 70.712 142.02 71.424 142.5 71.952C142.996 72.48 143.644 72.744 144.444 72.744ZM162.867 75C162.195 75 161.659 74.808 161.259 74.424C160.875 74.024 160.635 73.496 160.539 72.84H160.395C160.187 73.656 159.763 74.272 159.123 74.688C158.483 75.088 157.691 75.288 156.747 75.288C155.467 75.288 154.483 74.952 153.795 74.28C153.107 73.608 152.763 72.712 152.763 71.592C152.763 70.296 153.227 69.336 154.155 68.712C155.083 68.072 156.403 67.752 158.115 67.752H160.251V66.84C160.251 66.136 160.067 65.592 159.699 65.208C159.331 64.824 158.739 64.632 157.923 64.632C157.203 64.632 156.619 64.792 156.171 65.112C155.739 65.416 155.371 65.784 155.067 66.216L153.243 64.584C153.707 63.864 154.323 63.288 155.091 62.856C155.859 62.408 156.875 62.184 158.139 62.184C159.835 62.184 161.123 62.568 162.003 63.336C162.883 64.104 163.323 65.208 163.323 66.648V72.552H164.571V75H162.867ZM157.779 73.056C158.467 73.056 159.051 72.904 159.531 72.6C160.011 72.296 160.251 71.848 160.251 71.256V69.6H158.283C156.683 69.6 155.883 70.112 155.883 71.136V71.544C155.883 72.056 156.043 72.44 156.363 72.696C156.699 72.936 157.171 73.056 157.779 73.056ZM170.129 75C169.073 75 168.297 74.736 167.801 74.208C167.305 73.68 167.057 72.936 167.057 71.976V57.24H170.129V72.552H171.785V75H170.129ZM178.216 75.288C177.016 75.288 176.008 75.088 175.192 74.688C174.376 74.272 173.656 73.704 173.032 72.984L174.904 71.16C175.368 71.688 175.872 72.104 176.416 72.408C176.976 72.712 177.616 72.864 178.336 72.864C179.072 72.864 179.6 72.736 179.92 72.48C180.256 72.224 180.424 71.872 180.424 71.424C180.424 71.056 180.304 70.768 180.064 70.56C179.84 70.336 179.448 70.184 178.888 70.104L177.64 69.936C176.28 69.76 175.24 69.376 174.52 68.784C173.816 68.176 173.464 67.296 173.464 66.144C173.464 65.536 173.576 64.992 173.8 64.512C174.024 64.016 174.344 63.6 174.76 63.264C175.176 62.912 175.672 62.648 176.248 62.472C176.84 62.28 177.496 62.184 178.216 62.184C178.824 62.184 179.36 62.232 179.824 62.328C180.304 62.408 180.736 62.536 181.12 62.712C181.504 62.872 181.856 63.08 182.176 63.336C182.496 63.576 182.808 63.848 183.112 64.152L181.312 65.952C180.944 65.568 180.504 65.248 179.992 64.992C179.48 64.736 178.92 64.608 178.312 64.608C177.64 64.608 177.152 64.728 176.848 64.968C176.56 65.208 176.416 65.52 176.416 65.904C176.416 66.32 176.536 66.64 176.776 66.864C177.032 67.072 177.456 67.224 178.048 67.32L179.32 67.488C182.024 67.872 183.376 69.104 183.376 71.184C183.376 71.792 183.248 72.352 182.992 72.864C182.752 73.36 182.408 73.792 181.96 74.16C181.512 74.512 180.968 74.792 180.328 75C179.704 75.192 179 75.288 178.216 75.288ZM186.089 57.24H189.161V64.56H189.281C189.537 63.888 189.937 63.328 190.48 62.88C191.041 62.416 191.809 62.184 192.785 62.184C194.081 62.184 195.073 62.608 195.761 63.456C196.449 64.304 196.793 65.512 196.793 67.08V75H193.721V67.392C193.721 66.496 193.561 65.824 193.241 65.376C192.921 64.928 192.393 64.704 191.657 64.704C191.337 64.704 191.025 64.752 190.721 64.848C190.433 64.928 190.169 65.056 189.929 65.232C189.705 65.392 189.521 65.6 189.377 65.856C189.233 66.096 189.161 66.384 189.161 66.72V75H186.089V57.24ZM200.198 75V62.472H203.27V65.064H203.39C203.47 64.728 203.59 64.408 203.75 64.104C203.926 63.784 204.15 63.504 204.422 63.264C204.694 63.024 205.014 62.832 205.382 62.688C205.766 62.544 206.206 62.472 206.702 62.472H207.374V65.376H206.414C205.374 65.376 204.59 65.528 204.062 65.832C203.534 66.136 203.27 66.632 203.27 67.32V75H200.198ZM214.567 75.288C213.639 75.288 212.807 75.136 212.071 74.832C211.351 74.512 210.735 74.072 210.223 73.512C209.727 72.936 209.343 72.248 209.071 71.448C208.799 70.632 208.663 69.72 208.663 68.712C208.663 67.72 208.791 66.824 209.047 66.024C209.319 65.224 209.703 64.544 210.199 63.984C210.695 63.408 211.303 62.968 212.023 62.664C212.743 62.344 213.559 62.184 214.471 62.184C215.447 62.184 216.295 62.352 217.015 62.688C217.735 63.024 218.327 63.48 218.791 64.056C219.255 64.632 219.599 65.304 219.823 66.072C220.063 66.824 220.183 67.632 220.183 68.496V69.504H211.855V69.816C211.855 70.728 212.111 71.464 212.623 72.024C213.135 72.568 213.895 72.84 214.903 72.84C215.671 72.84 216.295 72.68 216.775 72.36C217.271 72.04 217.711 71.632 218.095 71.136L219.751 72.984C219.239 73.704 218.535 74.272 217.639 74.688C216.759 75.088 215.735 75.288 214.567 75.288ZM214.519 64.488C213.703 64.488 213.055 64.76 212.575 65.304C212.095 65.848 211.855 66.552 211.855 67.416V67.608H216.991V67.392C216.991 66.528 216.775 65.832 216.343 65.304C215.927 64.76 215.319 64.488 214.519 64.488ZM222.885 62.472H225.957V64.536H226.053C226.277 63.816 226.701 63.248 227.325 62.832C227.949 62.4 228.677 62.184 229.509 62.184C231.109 62.184 232.325 62.752 233.157 63.888C234.005 65.008 234.429 66.616 234.429 68.712C234.429 70.824 234.005 72.448 233.157 73.584C232.325 74.72 231.109 75.288 229.509 75.288C228.677 75.288 227.949 75.072 227.325 74.64C226.717 74.208 226.293 73.632 226.053 72.912H225.957V79.8H222.885V62.472ZM228.525 72.744C229.325 72.744 229.973 72.48 230.469 71.952C230.965 71.424 231.213 70.712 231.213 69.816V67.656C231.213 66.76 230.965 66.048 230.469 65.52C229.973 64.976 229.325 64.704 228.525 64.704C227.789 64.704 227.173 64.888 226.677 65.256C226.197 65.624 225.957 66.112 225.957 66.72V70.704C225.957 71.36 226.197 71.864 226.677 72.216C227.173 72.568 227.789 72.744 228.525 72.744ZM237.276 62.472H240.348V64.536H240.444C240.668 63.816 241.092 63.248 241.716 62.832C242.34 62.4 243.068 62.184 243.9 62.184C245.5 62.184 246.716 62.752 247.548 63.888C248.396 65.008 248.82 66.616 248.82 68.712C248.82 70.824 248.396 72.448 247.548 73.584C246.716 74.72 245.5 75.288 243.9 75.288C243.068 75.288 242.34 75.072 241.716 74.64C241.108 74.208 240.684 73.632 240.444 72.912H240.348V79.8H237.276V62.472ZM242.916 72.744C243.716 72.744 244.364 72.48 244.86 71.952C245.356 71.424 245.604 70.712 245.604 69.816V67.656C245.604 66.76 245.356 66.048 244.86 65.52C244.364 64.976 243.716 64.704 242.916 64.704C242.18 64.704 241.564 64.888 241.068 65.256C240.588 65.624 240.348 66.112 240.348 66.72V70.704C240.348 71.36 240.588 71.864 241.068 72.216C241.564 72.568 242.18 72.744 242.916 72.744ZM259.155 72.912H259.035C258.923 73.232 258.771 73.536 258.579 73.824C258.403 74.096 258.171 74.344 257.883 74.568C257.611 74.792 257.275 74.968 256.875 75.096C256.491 75.224 256.043 75.288 255.531 75.288C254.235 75.288 253.243 74.864 252.555 74.016C251.867 73.168 251.523 71.96 251.523 70.392V62.472H254.595V70.08C254.595 70.944 254.763 71.608 255.099 72.072C255.435 72.52 255.971 72.744 256.707 72.744C257.011 72.744 257.307 72.704 257.595 72.624C257.899 72.544 258.163 72.424 258.387 72.264C258.611 72.088 258.795 71.88 258.939 71.64C259.083 71.384 259.155 71.088 259.155 70.752V62.472H262.227V75H259.155V72.912ZM265.776 75V62.472H268.848V65.064H268.968C269.048 64.728 269.168 64.408 269.328 64.104C269.504 63.784 269.728 63.504 270 63.264C270.272 63.024 270.592 62.832 270.96 62.688C271.344 62.544 271.784 62.472 272.28 62.472H272.952V65.376H271.992C270.952 65.376 270.168 65.528 269.64 65.832C269.112 66.136 268.848 66.632 268.848 67.32V75H265.776Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/nordurthing.svg b/libs/application/templates/financial-aid/src/svg/nordurthing.svg deleted file mode 100644 index 80f6e97777c9..000000000000 --- a/libs/application/templates/financial-aid/src/svg/nordurthing.svg +++ /dev/null @@ -1,38 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57871)"> -<path d="M76.3379 67.6844C75.3145 68.7079 74.291 69.7314 73.2676 70.7548C74.291 69.7314 75.4851 68.7079 76.3379 67.6844Z" fill="#55B1E1"/> -<path d="M71.0489 81.3304C70.0254 82.3539 69.002 83.3773 67.9785 84.4008C69.002 83.3773 70.0254 82.3539 71.0489 81.3304Z" fill="#55B1E1"/> -<path d="M75.9961 69.2196C74.9727 70.2431 74.1198 71.2665 72.9258 72.29C74.1198 71.0959 74.9727 70.2431 75.9961 69.2196Z" fill="#55B1E1"/> -<path d="M67.4668 83.0362C67.4668 82.8656 69.002 79.9659 70.5372 76.2132C68.8314 79.9659 67.4668 83.0362 67.4668 83.0362Z" fill="#55B1E1"/> -<path d="M32.3281 84.9126C34.2045 86.7889 35.0573 87.6418 35.2279 87.8124H35.3985C35.0573 87.8124 34.0339 86.7889 32.3281 84.9126Z" fill="#55B1E1"/> -<path d="M29.7696 79.2836C29.9401 79.4542 30.1107 79.6248 30.2813 79.7953C29.2578 78.7719 28.2344 77.7484 27.2109 76.725C28.0638 77.5779 28.9167 78.4307 29.7696 79.2836Z" fill="#55B1E1"/> -<path d="M29.5997 78.2601C28.5762 77.2367 27.5528 76.2132 26.5293 75.1898C27.7233 76.2132 28.5762 77.2367 29.5997 78.2601Z" fill="#55B1E1"/> -<path d="M31.9883 83.2068C30.9649 82.1834 29.9414 81.1599 28.918 80.1365C29.7708 81.3305 30.9649 82.1834 31.9883 83.2068Z" fill="#55B1E1"/> -<path d="M29.0873 79.7953C29.7696 80.4776 30.2813 80.9893 30.9636 81.6716L31.1342 81.8422C30.1107 80.8188 29.0873 79.7953 28.2344 78.7719C28.405 79.113 28.7461 79.4542 29.0873 79.7953Z" fill="#55B1E1"/> -<path d="M27.8939 77.7484C28.7468 78.6013 29.5996 79.4541 30.4525 80.307C30.4525 80.307 30.4525 80.4776 30.6231 80.4776C29.5996 79.4541 28.5762 78.4307 27.5527 77.4072C27.7233 77.5778 27.7233 77.7484 27.8939 77.7484Z" fill="#55B1E1"/> -<path d="M73.2676 43.4627C74.291 44.4862 75.3145 45.5096 76.3379 46.5331C75.3145 45.5096 74.291 44.4862 73.2676 43.4627Z" fill="#55B1E1"/> -<path d="M74.4606 61.032H74.1194L67.9787 60.6908C68.661 63.5906 67.8081 70.7548 65.5906 73.484C51.2623 67.3433 51.2623 45.6802 63.8849 24.1876C63.8849 24.3582 64.0554 24.5288 64.0554 24.5288C64.226 24.6994 64.226 24.8699 64.3966 24.8699C64.5672 25.0405 64.7377 25.3817 65.0789 25.5522C68.8316 30.1578 71.7313 36.2985 73.2665 43.2921C73.2665 43.4627 73.2665 43.4627 73.2665 43.6333C73.2665 43.8038 73.2665 43.9744 73.4371 44.145C74.29 47.8977 74.6311 51.8209 74.6311 55.9147C74.6311 57.791 74.6311 59.4968 74.4606 61.032ZM73.6077 67.0021C73.6077 67.1727 73.4371 67.5139 73.4371 67.6844C73.4371 67.855 73.2665 68.0256 73.2665 68.3667C73.2665 68.7079 73.0959 68.8785 73.0959 69.2196C73.0959 69.3902 72.9254 69.5608 72.9254 69.7313C72.9254 69.9019 72.7548 70.2431 72.7548 70.4136C72.5842 71.0959 72.4136 71.7782 72.2431 72.4606C72.2431 72.6311 72.0725 72.9723 72.0725 73.1429C72.0725 73.1429 72.0725 73.1429 72.0725 73.3134C71.049 76.2132 70.0256 78.7719 68.661 81.1599C68.661 81.1599 68.661 81.1599 68.661 81.3305C68.4904 81.6716 68.3198 81.8422 68.1493 82.1834C67.9787 82.5245 67.8081 82.8657 67.6375 83.0362C67.6375 83.0362 68.4904 80.1365 69.1727 76.2132C69.855 72.8017 70.7079 68.5373 70.8785 65.1258L71.7313 65.4669L73.9488 66.4904C73.6077 66.661 73.6077 66.8316 73.6077 67.0021ZM60.6439 85.936C57.5736 85.936 55.1855 83.548 55.1855 80.4776C55.1855 77.4072 57.5736 75.0192 60.6439 75.0192C63.7143 75.0192 66.1023 77.4072 66.1023 80.4776C66.1023 83.3774 63.7143 85.936 60.6439 85.936ZM49.3859 89.6887C46.3156 89.6887 43.9275 87.3006 43.9275 84.2303C43.9275 81.1599 46.3156 78.7719 49.3859 78.7719C52.4563 78.7719 54.8443 81.1599 54.8443 84.2303C54.8443 87.1301 52.4563 89.6887 49.3859 89.6887ZM38.1279 85.936C35.0576 85.936 32.6695 83.548 32.6695 80.4776C32.6695 77.4072 35.0576 75.0192 38.1279 75.0192C41.1983 75.0192 43.5864 77.4072 43.5864 80.4776C43.5864 83.548 41.1983 85.936 38.1279 85.936ZM32.4989 85.936C31.1343 84.2303 29.9403 82.3539 28.9168 80.307C28.9168 80.307 28.9168 80.307 28.9168 80.1365C28.7463 79.7953 28.5757 79.6247 28.5757 79.2836C28.5757 79.113 28.4051 79.113 28.4051 78.9424C28.4051 78.9424 28.4051 78.7719 28.2345 78.7719C28.2345 78.6013 28.064 78.6013 28.064 78.4307C27.8934 78.0896 27.7228 77.7484 27.7228 77.5778C27.7228 77.5778 27.7228 77.5778 27.7228 77.4072C27.7228 77.4072 27.7228 77.4072 27.7228 77.2367C27.7228 77.2367 27.7228 77.2367 27.7228 77.0661C27.7228 76.8955 27.5522 76.7249 27.5522 76.5544C27.3817 76.3838 27.3817 76.0426 27.2111 75.8721C27.0405 75.5309 27.0405 75.3603 26.8699 75.0192C26.5288 75.1898 26.5288 75.0192 26.5288 74.8486C25.6759 72.29 24.823 69.5608 24.3113 66.8316L28.5757 64.7846V65.2964C28.2345 72.29 29.258 78.6013 32.1578 84.5714C32.1578 84.742 32.3284 84.9126 32.3284 84.9126C32.4989 85.5949 32.4989 85.936 32.4989 85.936C32.6695 85.936 32.6695 85.936 32.4989 85.936ZM23.2878 59.3262C23.2878 58.3028 23.2878 57.1087 23.2878 56.0853C23.2878 51.9915 23.629 48.4094 24.4819 44.6567C30.1109 54.5501 37.7868 63.7612 48.3625 69.5608V77.7484C46.8273 77.919 45.6333 78.7719 44.6098 79.7953C44.2687 76.5544 41.3689 73.9957 38.1279 73.9957C36.4222 73.9957 35.0576 74.5075 33.8635 75.5309C32.6695 74.1663 30.1109 69.2196 31.3049 62.0554L23.629 61.5437C23.4584 60.6908 23.4584 60.0085 23.2878 59.3262ZM21.9232 37.322L26.1876 35.6162C29.5991 49.2623 42.3923 63.0789 56.7207 72.29C35.9104 63.5906 28.064 49.0917 21.9232 37.322ZM48.3625 21.2878C45.8038 21.7996 43.5864 23.3348 41.8806 23.3348C41.1983 23.3348 40.6866 22.9936 40.1748 22.4819C40.0043 21.7996 40.1748 20.7761 42.9041 20.7761C44.2687 20.6055 45.9744 20.7761 48.3625 21.2878ZM27.7228 33.9104C27.8934 33.5693 28.064 33.2281 28.2345 32.887C32.4989 24.5288 39.1514 18.3881 46.4861 17.3646C46.6567 17.3646 46.8273 17.3646 46.9979 17.3646C46.9979 17.3646 46.9979 17.3646 47.1684 17.3646C47.8507 17.3646 48.5331 17.194 49.0448 17.194C49.7271 17.194 50.2388 17.194 50.9211 17.3646C51.0917 17.3646 51.0917 17.3646 51.2623 17.3646C51.2623 17.3646 51.2623 17.3646 51.4328 17.3646C53.8209 17.7058 56.3795 18.5586 58.597 19.9232H58.7676C58.7676 19.9232 58.9382 19.9232 58.9382 20.0938C59.1087 20.2644 59.2793 20.2644 59.4499 20.435C59.6205 20.6055 59.791 20.7761 59.9616 20.7761C59.9616 20.7761 59.9616 20.7761 60.1322 20.7761C60.3028 20.9467 60.4733 20.9467 60.6439 21.1173L49.8977 25.2111L49.5565 21.629C49.8977 21.4584 50.2388 21.4584 50.58 21.4584C51.2623 21.4584 51.9446 21.629 52.6269 21.7996C52.6269 21.7996 52.6269 21.7996 52.7974 21.7996C52.2857 21.2878 51.6034 21.1173 50.2388 21.1173C49.8977 21.1173 49.7271 21.1173 49.3859 21.1173C49.3859 21.1173 49.3859 19.9232 49.2153 19.2409C49.2153 19.2409 49.2154 19.2409 49.0448 19.2409C48.5331 19.4115 47.8507 19.4115 46.9979 19.4115C45.6333 19.4115 44.2687 19.2409 43.0746 19.2409C41.3689 19.2409 40.0043 19.5821 39.1514 21.1173C38.4691 22.4819 38.9808 23.3348 40.0043 23.8465C40.3454 24.0171 40.6866 24.0171 41.1983 24.0171C43.4158 24.0171 45.4627 22.4819 48.1919 21.9701C48.1919 21.9701 48.1919 21.9701 48.3625 21.9701V26.064C42.2217 28.452 28.4051 33.7399 27.7228 33.9104ZM57.403 71.7783C48.7036 65.8081 34.3753 47.3859 32.4989 33.2281L38.1279 31.0107C38.6397 47.2154 46.9979 61.5437 57.403 71.7783ZM57.5736 70.9254C43.9275 54.7207 42.9041 36.4691 44.951 28.2814L51.2623 25.8934C48.0213 34.081 45.8038 55.7441 57.5736 70.9254ZM50.2388 70.4136C56.5501 73.8252 60.8145 73.8252 60.6439 73.8252C57.2324 73.8252 54.5032 76.3838 54.162 79.6247C53.1386 78.4307 51.774 77.7484 50.2388 77.5778C50.2388 77.5778 50.2388 71.9488 50.2388 70.4136ZM64.9083 20.435C61.6674 25.0405 45.2921 50.968 58.4264 70.2431C44.6098 52.162 56.3795 27.0874 59.1087 22.823L64.9083 20.435ZM75.484 61.2026C75.6546 59.4968 75.6546 57.791 75.6546 56.0853C75.6546 42.7804 71.2196 30.8401 64.5672 23.6759L66.7846 20.0938L69.5139 19.0704C69.5139 19.0704 69.855 18.3881 69.855 17.8763L61.838 21.1173C57.9147 17.7058 53.6503 16 49.0448 16C42.3923 16 36.2516 19.7527 31.4755 25.8934C29.5991 28.452 27.8934 31.3518 26.3582 34.5927L18 37.8337C18 38.516 18.5117 38.6866 18.5117 38.6866L20.8998 37.8337C21.5821 39.0277 22.7761 41.5864 23.629 43.2921C22.7761 47.3859 22.2644 51.6503 22.2644 56.2559C22.2644 58.1322 22.2644 59.838 22.435 61.7143L19.5352 61.5437L23.2878 67.6844C26.5288 84.2303 36.7633 96.3411 48.8742 96.3411C53.3092 96.3411 57.5736 94.6354 61.3262 91.7356C61.3262 91.7356 61.3262 91.7356 61.4968 91.7356C61.6674 91.7356 61.6674 91.565 61.838 91.565C62.0085 91.3945 62.1791 91.3945 62.1791 91.2239C67.6375 86.6183 71.9019 79.113 73.9488 70.2431V70.0725C73.9488 69.9019 74.1194 69.7313 74.1194 69.3902C74.1194 69.2196 74.1194 69.049 74.29 69.049C74.29 68.8785 74.29 68.8785 74.29 68.7079C74.29 68.5373 74.29 68.3667 74.4606 68.1962V68.0256C74.4606 67.855 74.6311 67.5139 74.6311 67.3433L77.5309 61.7143L75.484 61.2026Z" fill="#000F4D"/> -<path d="M32.157 84.5714C29.2572 78.6013 28.2338 72.29 28.5749 65.2964V64.7847L24.3105 66.8316C24.8223 69.7314 25.6752 72.4606 26.528 74.8486C26.528 75.0192 26.6986 75.0192 26.6986 75.1898C26.8692 75.5309 26.8692 75.7015 27.0398 76.0427C27.2103 76.2132 27.2103 76.5544 27.3809 76.725C27.3809 76.8955 27.5515 77.0661 27.5515 77.2367C27.5515 77.2367 27.5515 77.2367 27.5515 77.4073C27.7221 77.7484 27.8926 78.0896 28.0632 78.4307C28.0632 78.6013 28.2338 78.6013 28.2338 78.7719C28.2338 79.113 28.4044 79.2836 28.4044 79.4542C28.5749 79.7953 28.7455 79.9659 28.7455 80.3071C28.7455 80.3071 28.7455 80.3071 28.7455 80.4776C29.9395 82.354 31.3042 84.2303 32.4982 85.9361C32.4982 85.9361 32.3276 85.5949 32.157 84.9126C32.157 84.9126 32.157 84.742 32.157 84.5714Z" fill="#54B6E7"/> -<path d="M24.4811 44.4861C23.6283 48.2388 23.2871 51.8209 23.2871 55.9147C23.2871 57.1087 23.2871 58.1322 23.2871 59.1557C23.2871 59.838 23.4577 60.6908 23.4577 61.3731L31.1336 62.0554C30.1101 69.2196 32.6688 74.1663 33.6922 75.5309C34.8863 74.5075 36.2509 73.9957 37.9566 73.9957C41.3681 73.9957 44.0973 76.5544 44.4385 79.7953C45.462 78.7719 46.8266 78.0896 48.1912 77.7484V69.5608C37.786 63.5906 30.1101 54.5501 24.4811 44.4861Z" fill="#54B6E7"/> -<path d="M40.1756 22.6524C40.6873 23.3347 41.199 23.6759 41.8813 23.6759C43.5871 23.6759 45.8046 21.9701 48.3632 21.4584C45.9752 20.7761 44.2694 20.6055 42.9048 20.6055C40.3462 20.6055 40.005 21.7996 40.1756 22.6524Z" fill="#54B6E7"/> -<path d="M59.9615 20.7761C59.6203 20.6055 59.4497 20.435 59.2792 20.2644C59.1086 20.0938 58.938 20.0938 58.7674 19.9232L58.5969 19.7526H58.4263C56.2088 18.388 53.8207 17.5352 51.2621 17.194H51.0915C50.9209 17.194 50.921 17.194 50.7504 17.194C50.0681 17.194 49.5563 17.0234 48.874 17.0234C48.1917 17.0234 47.5094 17.0234 46.9977 17.194C46.9977 17.194 46.9977 17.194 46.8271 17.194C46.6566 17.194 46.486 17.194 46.3154 17.194C39.1512 18.388 32.4988 24.3582 28.2344 32.887C28.0638 33.2281 27.8932 33.5693 27.7227 33.9104C28.405 33.7399 42.051 28.452 48.3623 25.8934V21.7996C48.3623 21.7996 48.3623 21.7996 48.1917 21.7996C45.4625 22.3113 43.245 23.8465 41.1981 23.8465C40.857 23.8465 40.5158 23.8465 40.0041 23.6759C39.1512 23.1642 38.4689 22.3113 39.1512 20.9467C39.8335 19.4115 41.3687 19.0703 43.0745 19.0703C44.4391 19.2409 45.8037 19.4115 46.9977 19.4115C47.68 19.4115 48.3623 19.4115 49.0446 19.2409C49.0446 19.2409 49.0446 19.2409 49.2152 19.2409C49.3858 19.9232 49.3858 21.1173 49.3858 21.1173C49.7269 21.1173 50.0681 21.1173 50.2386 21.1173C51.4327 21.1173 52.115 21.2878 52.6267 21.9701C52.6267 21.9701 52.6267 21.9701 52.4561 21.9701C51.7738 21.7996 50.9209 21.629 50.4092 21.629C50.0681 21.629 49.7269 21.629 49.3858 21.7996L49.7269 25.3816L60.4732 21.2878C60.3026 21.1173 60.132 20.9467 59.9615 20.7761Z" fill="#54B6E7"/> -<path d="M70.7077 64.9552C70.5372 68.5373 69.6843 72.6311 69.002 76.0426C68.1491 79.9659 67.4668 82.8656 67.4668 82.8656C67.6374 82.5245 67.8079 82.1833 67.9785 82.0128C68.1491 81.8422 68.3197 81.501 68.4903 81.1599C68.4903 81.1599 68.4903 81.1599 68.4903 80.9893C68.6608 80.6482 69.002 80.1364 69.1726 79.7953C70.196 77.7484 71.2195 75.5309 71.9018 73.1428C71.9018 73.1428 71.9018 73.1428 71.9018 72.9723C71.9018 72.8017 72.0723 72.4605 72.0723 72.29C72.2429 71.6077 72.4135 70.9253 72.5841 70.243C72.5841 70.0725 72.7546 69.7313 72.7546 69.5607C72.7546 69.3902 72.9252 69.2196 72.9252 69.049C72.9252 68.7079 73.0958 68.5373 73.0958 68.1961C73.0958 68.0256 73.2664 67.855 73.2664 67.5138C73.2664 67.3433 73.4369 67.0021 73.4369 66.8315C73.4369 66.661 73.6075 66.3198 73.6075 66.1492L71.5606 65.4669L70.7077 64.9552Z" fill="#54B6E7"/> -<path d="M50.2383 77.5778C51.7735 77.7484 53.1381 78.6013 54.1615 79.6247C54.5027 76.3838 57.2319 73.8252 60.6434 73.8252C60.6434 73.8252 56.379 73.8251 50.2383 70.4136C50.2383 71.9488 50.2383 77.5778 50.2383 77.5778Z" fill="#54B6E7"/> -<path d="M73.4372 44.3156C73.4372 44.145 73.4372 43.9744 73.2666 43.8038C73.2666 43.6333 73.2666 43.6333 73.2666 43.4627C71.7314 36.4691 68.8316 30.3284 65.079 25.7228C64.9084 25.5522 64.7378 25.2111 64.3967 25.0405C64.3967 24.8699 64.2261 24.6994 64.0555 24.5288L63.885 24.3582C51.2624 45.6802 51.2624 67.5139 65.5907 73.6546C67.6376 70.9254 68.6611 63.7612 67.9788 60.8614L74.1195 61.2026H74.4606C74.6312 59.4968 74.6312 57.791 74.6312 56.0853C74.6312 51.9915 74.2901 48.0682 73.4372 44.3156Z" fill="#54B6E7"/> -<path d="M51.0913 25.8934L44.78 28.2814C42.7331 36.4691 43.7565 54.7207 57.4026 70.9254C45.8034 55.7441 48.0209 34.081 51.0913 25.8934Z" fill="white"/> -<path d="M57.4021 71.7783C47.1676 61.7143 38.6388 47.3859 38.127 31.0107L32.498 33.2282C34.3744 47.3859 48.7027 65.8081 57.4021 71.7783Z" fill="white"/> -<path d="M64.9081 20.435L59.1086 22.8231C56.3794 27.0875 44.6096 52.1621 58.4263 70.2431C45.2919 50.968 61.6672 25.0405 64.9081 20.435Z" fill="white"/> -<path d="M38.1283 74.8486C35.058 74.8486 32.6699 77.4073 32.6699 80.3071C32.6699 83.3774 35.058 85.7655 38.1283 85.7655C41.1987 85.7655 43.5868 83.3774 43.5868 80.3071C43.5868 77.4073 41.1987 74.8486 38.1283 74.8486Z" fill="white"/> -<path d="M60.644 74.8486C57.5736 74.8486 55.1855 77.4073 55.1855 80.3071C55.1855 83.3774 57.5736 85.7655 60.644 85.7655C63.7143 85.7655 66.1024 83.2068 66.1024 80.3071C66.1024 77.4073 63.7143 74.8486 60.644 74.8486Z" fill="white"/> -<path d="M49.3862 78.6013C46.3158 78.6013 43.9277 81.16 43.9277 84.0597C43.9277 87.1301 46.3158 89.5182 49.3862 89.5182C52.4565 89.5182 54.8446 86.9595 54.8446 84.0597C54.8446 80.9894 52.4565 78.6013 49.3862 78.6013Z" fill="white"/> -<path d="M56.7206 72.29C42.3923 63.0789 29.5991 49.0917 26.3581 35.6162L22.0938 37.322C28.0639 49.0917 35.9104 63.5906 56.7206 72.29Z" fill="white"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M102.768 66.408L101.04 62.928H100.968V75H97.968V58.248H101.448L106.488 66.84L108.216 70.32H108.288V58.248H111.288V75H107.808L102.768 66.408ZM119.994 75.288C119.098 75.288 118.29 75.136 117.57 74.832C116.866 74.528 116.258 74.088 115.746 73.512C115.25 72.936 114.866 72.248 114.594 71.448C114.322 70.632 114.186 69.72 114.186 68.712C114.186 67.704 114.322 66.8 114.594 66C114.866 65.2 115.25 64.52 115.746 63.96C116.258 63.384 116.866 62.944 117.57 62.64C118.29 62.336 119.098 62.184 119.994 62.184C120.89 62.184 121.698 62.336 122.418 62.64C123.138 62.944 123.746 63.384 124.242 63.96C124.754 64.52 125.146 65.2 125.418 66C125.69 66.8 125.826 67.704 125.826 68.712C125.826 69.72 125.69 70.632 125.418 71.448C125.146 72.248 124.754 72.936 124.242 73.512C123.746 74.088 123.138 74.528 122.418 74.832C121.698 75.136 120.89 75.288 119.994 75.288ZM119.994 72.816C120.81 72.816 121.45 72.568 121.914 72.072C122.378 71.576 122.61 70.848 122.61 69.888V67.56C122.61 66.616 122.378 65.896 121.914 65.4C121.45 64.904 120.81 64.656 119.994 64.656C119.194 64.656 118.562 64.904 118.098 65.4C117.634 65.896 117.402 66.616 117.402 67.56V69.888C117.402 70.848 117.634 71.576 118.098 72.072C118.562 72.568 119.194 72.816 119.994 72.816ZM128.549 75V62.472H131.621V65.064H131.741C131.821 64.728 131.941 64.408 132.101 64.104C132.277 63.784 132.501 63.504 132.773 63.264C133.045 63.024 133.365 62.832 133.733 62.688C134.117 62.544 134.557 62.472 135.053 62.472H135.725V65.376H134.765C133.725 65.376 132.941 65.528 132.413 65.832C131.885 66.136 131.621 66.632 131.621 67.32V75H128.549ZM147.142 58.224L145.366 59.376C146.47 60.528 147.358 61.856 148.03 63.36C148.702 64.864 149.038 66.536 149.038 68.376C149.038 69.56 148.894 70.592 148.606 71.472C148.318 72.336 147.91 73.056 147.382 73.632C146.87 74.192 146.254 74.608 145.534 74.88C144.814 75.152 144.014 75.288 143.134 75.288C142.19 75.288 141.342 75.144 140.59 74.856C139.854 74.552 139.222 74.128 138.694 73.584C138.182 73.04 137.79 72.376 137.518 71.592C137.246 70.808 137.11 69.936 137.11 68.976C137.11 68.08 137.222 67.264 137.446 66.528C137.686 65.792 138.022 65.16 138.454 64.632C138.886 64.104 139.406 63.696 140.014 63.408C140.638 63.12 141.326 62.976 142.078 62.976C142.942 62.976 143.662 63.192 144.238 63.624C144.83 64.04 145.294 64.608 145.63 65.328L145.774 65.256C145.582 64.44 145.238 63.664 144.742 62.928C144.262 62.192 143.678 61.488 142.99 60.816L140.926 62.112L139.822 60.792L141.694 59.664C141.134 59.2 140.542 58.768 139.918 58.368C139.31 57.968 138.694 57.592 138.07 57.24H142.75C142.974 57.368 143.19 57.52 143.398 57.696C143.606 57.856 143.822 58.024 144.046 58.2L146.062 56.928L147.142 58.224ZM143.086 72.936C143.934 72.936 144.606 72.664 145.102 72.12C145.598 71.576 145.846 70.816 145.846 69.84V68.448C145.846 67.472 145.598 66.712 145.102 66.168C144.606 65.624 143.934 65.352 143.086 65.352C142.222 65.352 141.542 65.624 141.046 66.168C140.55 66.712 140.302 67.472 140.302 68.448V69.84C140.302 70.816 140.55 71.576 141.046 72.12C141.542 72.664 142.222 72.936 143.086 72.936ZM159.475 72.912H159.355C159.243 73.232 159.091 73.536 158.899 73.824C158.723 74.096 158.491 74.344 158.203 74.568C157.931 74.792 157.595 74.968 157.195 75.096C156.811 75.224 156.363 75.288 155.851 75.288C154.555 75.288 153.563 74.864 152.875 74.016C152.187 73.168 151.843 71.96 151.843 70.392V62.472H154.915V70.08C154.915 70.944 155.083 71.608 155.419 72.072C155.755 72.52 156.291 72.744 157.027 72.744C157.331 72.744 157.627 72.704 157.915 72.624C158.219 72.544 158.483 72.424 158.707 72.264C158.931 72.088 159.115 71.88 159.259 71.64C159.403 71.384 159.475 71.088 159.475 70.752V62.472H162.547V75H159.475V72.912ZM166.096 75V62.472H169.168V65.064H169.288C169.368 64.728 169.488 64.408 169.648 64.104C169.824 63.784 170.048 63.504 170.32 63.264C170.592 63.024 170.912 62.832 171.28 62.688C171.664 62.544 172.104 62.472 172.6 62.472H173.272V65.376H172.312C171.272 65.376 170.488 65.528 169.96 65.832C169.432 66.136 169.168 66.632 169.168 67.32V75H166.096ZM175.518 57.24H178.59V64.536H178.686C178.91 63.816 179.334 63.248 179.958 62.832C180.582 62.4 181.31 62.184 182.142 62.184C183.742 62.184 184.958 62.752 185.79 63.888C186.638 65.008 187.062 66.616 187.062 68.712C187.062 70.824 186.638 72.448 185.79 73.584C184.958 74.72 183.742 75.288 182.142 75.288C181.31 75.288 180.582 75.072 179.958 74.64C179.35 74.208 178.926 73.632 178.686 72.912H178.59V79.8H175.518V57.24ZM181.158 72.744C181.958 72.744 182.606 72.48 183.102 71.952C183.598 71.424 183.846 70.712 183.846 69.816V67.656C183.846 66.76 183.598 66.048 183.102 65.52C182.606 64.976 181.958 64.704 181.158 64.704C180.422 64.704 179.806 64.888 179.31 65.256C178.83 65.624 178.59 66.112 178.59 66.72V70.704C178.59 71.36 178.83 71.864 179.31 72.216C179.806 72.568 180.422 72.744 181.158 72.744ZM191.445 60.648C190.805 60.648 190.341 60.504 190.053 60.216C189.781 59.928 189.645 59.56 189.645 59.112V58.632C189.645 58.184 189.781 57.816 190.053 57.528C190.341 57.24 190.805 57.096 191.445 57.096C192.069 57.096 192.525 57.24 192.813 57.528C193.101 57.816 193.245 58.184 193.245 58.632V59.112C193.245 59.56 193.101 59.928 192.813 60.216C192.525 60.504 192.069 60.648 191.445 60.648ZM189.909 62.472H192.981V75H189.909V62.472ZM196.542 75V62.472H199.614V64.56H199.734C199.99 63.888 200.39 63.328 200.934 62.88C201.494 62.416 202.262 62.184 203.238 62.184C204.534 62.184 205.526 62.608 206.214 63.456C206.902 64.304 207.246 65.512 207.246 67.08V75H204.174V67.392C204.174 66.496 204.014 65.824 203.694 65.376C203.374 64.928 202.846 64.704 202.11 64.704C201.79 64.704 201.478 64.752 201.174 64.848C200.886 64.928 200.622 65.056 200.382 65.232C200.158 65.392 199.974 65.6 199.83 65.856C199.686 66.096 199.614 66.384 199.614 66.72V75H196.542ZM221.955 76.056C221.955 76.712 221.835 77.288 221.595 77.784C221.371 78.296 220.995 78.72 220.467 79.056C219.939 79.392 219.259 79.648 218.427 79.824C217.595 80 216.579 80.088 215.379 80.088C214.323 80.088 213.427 80.016 212.691 79.872C211.955 79.744 211.347 79.552 210.867 79.296C210.403 79.056 210.067 78.752 209.859 78.384C209.651 78.016 209.547 77.6 209.547 77.136C209.547 76.432 209.739 75.88 210.123 75.48C210.523 75.096 211.075 74.848 211.779 74.736V74.472C211.267 74.344 210.867 74.096 210.579 73.728C210.307 73.344 210.171 72.896 210.171 72.384C210.171 72.064 210.235 71.784 210.363 71.544C210.491 71.288 210.659 71.072 210.867 70.896C211.091 70.72 211.339 70.576 211.611 70.464C211.883 70.336 212.171 70.24 212.475 70.176V70.08C211.707 69.728 211.131 69.24 210.747 68.616C210.379 67.992 210.195 67.264 210.195 66.432C210.195 65.152 210.635 64.128 211.515 63.36C212.395 62.576 213.683 62.184 215.379 62.184C215.763 62.184 216.139 62.208 216.507 62.256C216.891 62.304 217.243 62.384 217.563 62.496V62.088C217.563 60.872 218.155 60.264 219.339 60.264H221.283V62.616H218.619V62.952C219.275 63.32 219.763 63.8 220.083 64.392C220.403 64.984 220.563 65.664 220.563 66.432C220.563 67.696 220.123 68.712 219.243 69.48C218.379 70.248 217.091 70.632 215.379 70.632C214.643 70.632 214.003 70.56 213.459 70.416C213.219 70.528 213.011 70.68 212.835 70.872C212.659 71.048 212.571 71.272 212.571 71.544C212.571 72.168 213.115 72.48 214.203 72.48H217.563C219.099 72.48 220.211 72.8 220.899 73.44C221.603 74.064 221.955 74.936 221.955 76.056ZM219.075 76.416C219.075 76.016 218.915 75.704 218.595 75.48C218.275 75.256 217.723 75.144 216.939 75.144H212.667C212.235 75.464 212.019 75.896 212.019 76.44C212.019 76.92 212.219 77.296 212.619 77.568C213.019 77.84 213.699 77.976 214.659 77.976H216.195C217.203 77.976 217.931 77.848 218.379 77.592C218.843 77.336 219.075 76.944 219.075 76.416ZM215.379 68.544C216.883 68.544 217.635 67.904 217.635 66.624V66.216C217.635 64.936 216.883 64.296 215.379 64.296C213.875 64.296 213.123 64.936 213.123 66.216V66.624C213.123 67.904 213.875 68.544 215.379 68.544Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57871"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/olfus.svg b/libs/application/templates/financial-aid/src/svg/olfus.svg deleted file mode 100644 index 6e4d7cd5180d..000000000000 --- a/libs/application/templates/financial-aid/src/svg/olfus.svg +++ /dev/null @@ -1,19 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M66.5993 86.0953C61.5708 90.2858 55.3232 92.8762 49.1517 93.2572L47.5517 91.6572L45.9517 93.2572C39.7803 92.8762 33.4565 90.2858 28.5041 86.0953C23.247 81.6762 20.1993 76.1143 19.7422 70.2477L21.3422 68.6477L19.666 66.9715V44.9524L21.3422 43.2762L19.666 41.6V19.8858L20.7327 18.8191H45.9517L47.5517 20.4191L49.1517 18.8191H74.447L75.4374 19.8096V39.0096L73.8374 40.6096L75.4374 42.2096V66.9715L73.8374 68.5715L75.4374 70.1715C74.9041 76.0381 71.8565 81.6762 66.5993 86.0953Z" fill="white"/> -<path d="M47.4 24C35.1333 24 25.1523 33.981 25.1523 46.2476C25.1523 58.5143 35.1333 68.4952 47.4 68.4952C59.6666 68.4952 69.6476 58.5143 69.6476 46.2476C69.6476 33.981 59.6666 24 47.4 24ZM47.4 67.1238C35.819 67.1238 26.4476 57.7524 26.4476 46.1714C26.4476 34.5905 35.819 25.219 47.4 25.219C58.9809 25.219 68.3523 34.5905 68.3523 46.1714C68.3523 57.7524 58.9809 67.1238 47.4 67.1238Z" fill="#557A82"/> -<path d="M37.6472 36.2667L47.7043 38.8572L47.0186 50.8191L65.3043 59.5048L68.8091 64.8382L68.1233 67.6572L62.2567 71.2382L44.1995 71.9239L40.6948 70.0191L39.7805 66.9715L37.4186 66.2858L34.5995 70.2477L30.1805 70.4762L26.9043 68.1905L28.9614 53.8667L37.6472 36.2667Z" fill="white"/> -<path d="M69.0379 64.7619L65.3046 59.0476L47.1712 50.4381L47.857 38.4L36.8855 35.5809L27.8951 53.8666L25.7617 68.3428L29.4951 71.0095L34.5236 70.8571L37.2665 66.9714L38.9427 67.5047L39.857 70.4762L43.8189 72.6095L62.0284 71.8476L68.1998 68.1143L69.0379 64.7619ZM67.2093 67.3524L61.6474 70.7047H61.5712L43.8951 71.3904L40.6951 69.7143L39.7046 66.5905L36.657 65.6762L33.7617 69.7905L29.7998 70.019L26.9808 67.9619L28.9617 54.3238L37.5712 36.9524L46.7141 39.3143L46.0284 51.2L64.5427 59.9619L67.8189 64.9905L67.2093 67.3524Z" fill="#557A82"/> -<path d="M48.4672 62.8572L44.0482 60.8L40.3148 62.6286L38.7148 66.9715L39.7815 70.4001L43.7434 72.5334L48.6958 70.7048L49.7625 67.2L48.4672 62.8572ZM47.7815 69.7905L43.8196 71.2381L40.772 69.562L39.9339 66.8953L41.1529 63.2381L43.972 61.8667L47.4768 63.4667L48.5434 67.0477L47.7815 69.7905Z" fill="#557A82"/> -<path d="M40.0104 63.6952L40.3152 62.5523L33.9152 60.6476L29.3438 69.9428L30.4104 70.4L34.5247 62.019L40.0104 63.6952Z" fill="#557A82"/> -<path d="M53.8002 57.3714L41.3812 51.4285L43.5907 38.4L42.4478 38.1714L40.0859 52.1142L51.1336 57.4476L44.0478 60.8L44.5812 61.7904L53.8002 57.3714Z" fill="#557A82"/> -<path d="M36.7328 54.4762L40.7709 37.7143L39.628 37.4095L35.3613 55.1619L46.4851 60.1143L47.7042 59.3524L36.7328 54.4762Z" fill="#557A82"/> -<path d="M64.6955 60.1143L64.3907 58.9714L47.9336 62.6286L48.4669 63.6952L64.6955 60.1143Z" fill="#557A82"/> -<path d="M67.9913 64.4031L49.4609 66.6617L49.5992 67.7963L68.1296 65.5376L67.9913 64.4031Z" fill="#557A82"/> -<path d="M78.181 43.2762L76.581 41.6762V19.8095L78.181 18.2095L75.9714 16L74.5238 17.4476H49L47.5524 16L46.1048 17.4476H20.581L19.1333 16L17 18.1333L18.6 19.7333V41.6762L17 43.2762L18.6 44.8762V67.0476L17 68.6476L18.6 70.3238C19.0571 76.4191 22.2571 82.2095 27.6667 86.8571C32.8476 91.2762 39.4 93.9429 45.8 94.3238L47.4762 96L49.1524 94.3238C55.5524 93.9429 62.1048 91.2 67.2857 86.8571C72.6952 82.2857 75.8952 76.4952 76.3524 70.4L78.0286 68.7238L76.4286 67.1238V45.0286L78.181 43.2762ZM66.6 86.0952C61.5714 90.2857 55.3238 92.8762 49.1524 93.2571L47.5524 91.6572L45.9524 93.2571C39.781 92.8762 33.4571 90.2857 28.5048 86.0952C23.2476 81.6762 20.2 76.1143 19.7429 70.2476L21.3429 68.6476L19.6667 66.9714V44.9524L21.3429 43.2762L19.6667 41.6V19.8857L20.7333 18.819H45.9524L47.5524 20.419L49.1524 18.819H74.4476L75.4381 19.8095V41.6762L73.8381 43.2762L75.4381 44.8762V66.9714L73.8381 68.5714L75.4381 70.1714C74.9048 76.0381 71.8571 81.6762 66.6 86.0952Z" fill="#557A82"/> -<path d="M67.8949 81.6C67.6663 81.9047 67.4377 82.1333 67.133 82.4381C66.8282 81.9809 66.5234 81.6762 65.9901 81.6762C65.3806 81.6762 64.9996 82.1333 64.5425 82.819C64.0092 83.5047 63.4758 84.3428 62.2568 84.3428C61.0377 84.3428 60.5044 83.5809 59.9711 82.819C59.5139 82.1333 59.2091 81.6762 58.5234 81.6762C57.9139 81.6762 57.533 82.1333 57.0758 82.819C56.5425 83.5047 56.0091 84.3428 54.7901 84.3428C53.5711 84.3428 53.0377 83.5809 52.5044 82.819C52.0472 82.1333 51.7425 81.6762 51.0568 81.6762C50.4472 81.6762 50.0663 82.1333 49.6091 82.819C49.0758 83.5047 48.5425 84.3428 47.3234 84.3428C46.1044 84.3428 45.5711 83.5809 45.0377 82.819C44.5806 82.1333 44.2758 81.6762 43.5901 81.6762C42.9806 81.6762 42.5996 82.1333 42.1425 82.819C41.6092 83.5047 41.0758 84.3428 39.8568 84.3428C38.6377 84.3428 38.1044 83.5809 37.5711 82.819C37.1139 82.1333 36.8092 81.6762 36.1234 81.6762C35.5139 81.6762 35.133 82.1333 34.6758 82.819C34.1425 83.5047 33.6092 84.3428 32.3901 84.3428C31.1711 84.3428 30.6377 83.5809 30.1044 82.819C29.6472 82.1333 29.3425 81.6762 28.6568 81.6762C28.0472 81.6762 27.7425 82.0571 27.2853 82.7428L26.5996 81.9809C26.5996 81.9809 26.5996 81.9047 26.5234 81.9047C26.9806 81.2952 27.5139 80.6095 28.6568 80.6095C29.8758 80.6095 30.4092 81.3714 30.9425 82.1333C31.3996 82.819 31.7044 83.2762 32.3901 83.2762C32.9996 83.2762 33.3806 82.819 33.8377 82.1333C34.3711 81.4476 34.9044 80.6095 36.1234 80.6095C37.3425 80.6095 37.8758 81.3714 38.4092 82.1333C38.8663 82.819 39.1711 83.2762 39.8568 83.2762C40.4663 83.2762 40.8472 82.819 41.3044 82.1333C41.8377 81.4476 42.3711 80.6095 43.5901 80.6095C44.8092 80.6095 45.3425 81.3714 45.8758 82.1333C46.333 82.819 46.6377 83.2762 47.3234 83.2762C47.933 83.2762 48.3139 82.819 48.7711 82.1333C49.3044 81.4476 49.8377 80.6095 51.0568 80.6095C52.2758 80.6095 52.8092 81.3714 53.3425 82.1333C53.7996 82.819 54.1044 83.2762 54.7901 83.2762C55.3996 83.2762 55.7806 82.819 56.2377 82.1333C56.7711 81.4476 57.3044 80.6095 58.5234 80.6095C59.7425 80.6095 60.2758 81.3714 60.8092 82.1333C61.2663 82.819 61.5711 83.2762 62.2568 83.2762C62.8663 83.2762 63.2472 82.819 63.7044 82.1333C64.2377 81.4476 64.7711 80.6095 65.9901 80.6095C66.9044 80.6095 67.4377 81.0666 67.8949 81.6Z" fill="#557A82"/> -<path d="M34.3713 88.1524C34.4475 88 34.5237 87.9238 34.6761 87.7714C35.1332 87.0857 35.5142 86.6286 36.1237 86.6286C36.8094 86.6286 37.1142 87.0857 37.5713 87.7714C38.1047 88.5333 38.638 89.2952 39.857 89.2952C41.0761 89.2952 41.6094 88.4571 42.1427 87.7714C42.5999 87.0857 42.9808 86.6286 43.5904 86.6286C44.2761 86.6286 44.5808 87.0857 45.038 87.7714C45.5713 88.5333 46.1046 89.2952 47.3237 89.2952C48.5427 89.2952 49.0761 88.4571 49.6094 87.7714C50.0666 87.0857 50.4475 86.6286 51.057 86.6286C51.7427 86.6286 52.0475 87.0857 52.5047 87.7714C53.038 88.5333 53.5713 89.2952 54.7904 89.2952C56.0094 89.2952 56.5427 88.4571 57.0761 87.7714C57.5332 87.0857 57.9142 86.6286 58.5237 86.6286C59.2094 86.6286 59.5142 87.0857 59.9713 87.7714C60.0475 87.8476 60.0475 87.9238 60.1237 87.9238L60.1999 87.8476L61.038 87.3905C60.9618 87.3143 60.8856 87.1619 60.8094 87.0857C60.2761 86.3238 59.7427 85.5619 58.5237 85.5619C57.3047 85.5619 56.7713 86.4 56.238 87.0857C55.7808 87.7714 55.3999 88.2286 54.7904 88.2286C54.1046 88.2286 53.7999 87.7714 53.3427 87.0857C52.8094 86.3238 52.2761 85.5619 51.057 85.5619C49.838 85.5619 49.3047 86.4 48.7713 87.0857C48.3142 87.7714 47.9332 88.2286 47.3237 88.2286C46.638 88.2286 46.3332 87.7714 45.8761 87.0857C45.3427 86.3238 44.8094 85.5619 43.5904 85.5619C42.3713 85.5619 41.838 86.4 41.3046 87.0857C40.8475 87.7714 40.4666 88.2286 39.857 88.2286C39.1713 88.2286 38.8666 87.7714 38.4094 87.0857C37.8761 86.3238 37.3427 85.5619 36.1237 85.5619C34.9047 85.5619 34.3713 86.4 33.838 87.0857C33.6856 87.2381 33.6094 87.4666 33.457 87.619L34.3713 88.1524Z" fill="#557A82"/> -<path d="M71.4003 76.1904C70.9431 77.2571 70.3336 78.3238 69.6479 79.3142C69.4955 79.3904 69.2669 79.3904 69.0384 79.3904C67.8193 79.3904 67.286 78.6285 66.7527 77.8666C66.2955 77.1809 65.9908 76.7238 65.305 76.7238C64.6955 76.7238 64.3146 77.1809 63.8574 77.8666C63.3241 78.5523 62.7908 79.3904 61.5717 79.3904C60.3527 79.3904 59.8193 78.6285 59.286 77.8666C58.8288 77.1809 58.5241 76.7238 57.8384 76.7238C57.2289 76.7238 56.8479 77.1809 56.3908 77.8666C55.8574 78.5523 55.3241 79.3904 54.105 79.3904C52.886 79.3904 52.3527 78.6285 51.8193 77.8666C51.3622 77.1809 51.0574 76.7238 50.3717 76.7238C49.7622 76.7238 49.3812 77.1809 48.9241 77.8666C48.3908 78.5523 47.8574 79.3904 46.6384 79.3904C45.4193 79.3904 44.886 78.6285 44.3527 77.8666C43.8955 77.1809 43.5908 76.7238 42.905 76.7238C42.2955 76.7238 41.9146 77.1809 41.4574 77.8666C40.9241 78.5523 40.3908 79.3904 39.1717 79.3904C37.9527 79.3904 37.4193 78.6285 36.886 77.8666C36.4289 77.1809 36.1241 76.7238 35.4384 76.7238C34.8289 76.7238 34.4479 77.1809 33.9908 77.8666C33.4574 78.5523 32.9241 79.3904 31.705 79.3904C30.486 79.3904 29.9527 78.6285 29.4193 77.8666C28.9622 77.1809 28.6574 76.7238 27.9717 76.7238C27.3622 76.7238 26.9812 77.1809 26.5241 77.8666C26.0669 78.4761 25.5336 79.2381 24.5431 79.3904L23.8574 78.2476C23.9336 78.3238 24.086 78.3238 24.2384 78.3238C24.8479 78.3238 25.2289 77.8666 25.686 77.1809C26.2193 76.4952 26.7527 75.6571 27.9717 75.6571C29.1908 75.6571 29.7241 76.419 30.2574 77.1809C30.7146 77.8666 31.0193 78.3238 31.705 78.3238C32.3146 78.3238 32.6955 77.8666 33.1527 77.1809C33.686 76.4952 34.2193 75.6571 35.4384 75.6571C36.6574 75.6571 37.1908 76.419 37.7241 77.1809C38.1812 77.8666 38.486 78.3238 39.1717 78.3238C39.7812 78.3238 40.1622 77.8666 40.6193 77.1809C41.1527 76.4952 41.686 75.6571 42.905 75.6571C44.1241 75.6571 44.6574 76.419 45.1908 77.1809C45.6479 77.8666 45.9527 78.3238 46.6384 78.3238C47.2479 78.3238 47.6289 77.8666 48.086 77.1809C48.6193 76.4952 49.1527 75.6571 50.3717 75.6571C51.5908 75.6571 52.1241 76.419 52.6574 77.1809C53.1146 77.8666 53.4193 78.3238 54.105 78.3238C54.7146 78.3238 55.0955 77.8666 55.5527 77.1809C56.086 76.4952 56.6193 75.6571 57.8384 75.6571C59.0574 75.6571 59.5908 76.419 60.1241 77.1809C60.5812 77.8666 60.886 78.3238 61.5717 78.3238C62.1812 78.3238 62.5622 77.8666 63.0193 77.1809C63.4765 76.4952 64.086 75.6571 65.305 75.6571C66.5241 75.6571 67.0574 76.419 67.5908 77.1809C68.0479 77.8666 68.3527 78.3238 69.0384 78.3238C69.6479 78.3238 70.0289 77.8666 70.486 77.1809C70.7908 76.8 71.0193 76.419 71.4003 76.1904Z" fill="#557A82"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M104.544 75.288C103.44 75.288 102.44 75.104 101.544 74.736C100.648 74.368 99.88 73.816 99.24 73.08C98.616 72.344 98.128 71.44 97.776 70.368C97.424 69.296 97.248 68.048 97.248 66.624C97.248 65.216 97.424 63.976 97.776 62.904C98.128 61.816 98.616 60.904 99.24 60.168C99.88 59.432 100.648 58.88 101.544 58.512C102.44 58.144 103.44 57.96 104.544 57.96C105.648 57.96 106.648 58.144 107.544 58.512C108.44 58.88 109.208 59.432 109.848 60.168C110.488 60.904 110.976 61.816 111.312 62.904C111.664 63.976 111.84 65.216 111.84 66.624C111.84 68.048 111.664 69.296 111.312 70.368C110.976 71.44 110.488 72.344 109.848 73.08C109.208 73.816 108.44 74.368 107.544 74.736C106.648 75.104 105.648 75.288 104.544 75.288ZM104.544 72.48C105.744 72.48 106.696 72.08 107.4 71.28C108.12 70.48 108.48 69.36 108.48 67.92V65.328C108.48 63.888 108.12 62.768 107.4 61.968C106.696 61.168 105.744 60.768 104.544 60.768C103.344 60.768 102.384 61.168 101.664 61.968C100.96 62.768 100.608 63.888 100.608 65.328V67.92C100.608 69.36 100.96 70.48 101.664 71.28C102.384 72.08 103.344 72.48 104.544 72.48ZM102.024 56.544C101.4 56.544 100.96 56.416 100.704 56.16C100.448 55.888 100.32 55.552 100.32 55.152V54.648C100.32 54.248 100.448 53.912 100.704 53.64C100.96 53.368 101.4 53.232 102.024 53.232C102.648 53.232 103.088 53.368 103.344 53.64C103.6 53.912 103.728 54.248 103.728 54.648V55.152C103.728 55.552 103.6 55.888 103.344 56.16C103.088 56.416 102.648 56.544 102.024 56.544ZM107.064 56.544C106.44 56.544 106 56.416 105.744 56.16C105.488 55.888 105.36 55.552 105.36 55.152V54.648C105.36 54.248 105.488 53.912 105.744 53.64C106 53.368 106.44 53.232 107.064 53.232C107.688 53.232 108.128 53.368 108.384 53.64C108.64 53.912 108.768 54.248 108.768 54.648V55.152C108.768 55.552 108.64 55.888 108.384 56.16C108.128 56.416 107.688 56.544 107.064 56.544ZM117.934 75C116.878 75 116.102 74.736 115.606 74.208C115.11 73.68 114.862 72.936 114.862 71.976V57.24H117.934V72.552H119.59V75H117.934ZM122.541 64.896H120.693V62.472H122.541V60.672C122.541 59.568 122.829 58.72 123.405 58.128C123.997 57.536 124.861 57.24 125.997 57.24H128.181V59.688H125.613V62.472H128.181V64.896H125.613V75H122.541V64.896ZM137.795 72.912H137.675C137.563 73.232 137.411 73.536 137.219 73.824C137.043 74.096 136.811 74.344 136.523 74.568C136.251 74.792 135.915 74.968 135.515 75.096C135.131 75.224 134.683 75.288 134.171 75.288C132.875 75.288 131.883 74.864 131.195 74.016C130.507 73.168 130.163 71.96 130.163 70.392V62.472H133.235V70.08C133.235 70.944 133.403 71.608 133.739 72.072C134.075 72.52 134.611 72.744 135.347 72.744C135.651 72.744 135.947 72.704 136.235 72.624C136.539 72.544 136.803 72.424 137.027 72.264C137.251 72.088 137.435 71.88 137.579 71.64C137.723 71.384 137.795 71.088 137.795 70.752V62.472H140.867V75H137.795V72.912ZM148.521 75.288C147.321 75.288 146.313 75.088 145.497 74.688C144.681 74.272 143.961 73.704 143.337 72.984L145.209 71.16C145.673 71.688 146.177 72.104 146.721 72.408C147.281 72.712 147.921 72.864 148.641 72.864C149.377 72.864 149.905 72.736 150.225 72.48C150.561 72.224 150.729 71.872 150.729 71.424C150.729 71.056 150.609 70.768 150.369 70.56C150.145 70.336 149.753 70.184 149.193 70.104L147.945 69.936C146.585 69.76 145.545 69.376 144.825 68.784C144.121 68.176 143.769 67.296 143.769 66.144C143.769 65.536 143.881 64.992 144.105 64.512C144.329 64.016 144.649 63.6 145.065 63.264C145.481 62.912 145.977 62.648 146.553 62.472C147.145 62.28 147.801 62.184 148.521 62.184C149.129 62.184 149.665 62.232 150.129 62.328C150.609 62.408 151.041 62.536 151.425 62.712C151.809 62.872 152.161 63.08 152.481 63.336C152.801 63.576 153.113 63.848 153.417 64.152L151.617 65.952C151.249 65.568 150.809 65.248 150.297 64.992C149.785 64.736 149.225 64.608 148.617 64.608C147.945 64.608 147.457 64.728 147.153 64.968C146.865 65.208 146.721 65.52 146.721 65.904C146.721 66.32 146.841 66.64 147.081 66.864C147.337 67.072 147.761 67.224 148.353 67.32L149.625 67.488C152.329 67.872 153.681 69.104 153.681 71.184C153.681 71.792 153.553 72.352 153.297 72.864C153.057 73.36 152.713 73.792 152.265 74.16C151.817 74.512 151.273 74.792 150.633 75C150.009 75.192 149.305 75.288 148.521 75.288Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/rangarthing-ytra.svg b/libs/application/templates/financial-aid/src/svg/rangarthing-ytra.svg deleted file mode 100644 index 2d266594ad59..000000000000 --- a/libs/application/templates/financial-aid/src/svg/rangarthing-ytra.svg +++ /dev/null @@ -1,7 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.692 16H47.4754H16L16.1564 76.376V76.4241C16.1805 76.773 16.8182 84.9186 31.9663 90.6819C37.9823 92.968 42.3498 94.5441 44.9728 95.3623C45.9233 95.6631 46.6332 95.8556 47.0904 95.9398C47.1987 95.9639 47.331 95.988 47.4634 95.988C47.5115 95.988 47.5476 96 47.5957 96C47.7762 96 47.9567 95.9639 48.089 95.9398C48.5462 95.8556 49.2561 95.6631 50.2066 95.3623C52.8296 94.5441 57.1972 92.968 63.2131 90.6819C78.3733 84.9186 79.011 76.773 79.023 76.4241L79.1794 16H47.692Z" fill="white"/> -<path d="M47.692 16H47.4754H16L16.1564 76.376V76.4241C16.1805 76.773 16.8182 84.9186 31.9663 90.6819C37.9823 92.968 42.3498 94.5441 44.9728 95.3623C45.9233 95.6631 46.6332 95.8556 47.0904 95.9398C47.1987 95.9639 47.331 95.988 47.4634 95.988C47.5115 95.988 47.5476 96 47.5957 96C47.7762 96 47.9567 95.9639 48.089 95.9398C48.5462 95.8556 49.2561 95.6631 50.2066 95.3623C52.8296 94.5441 57.1972 92.968 63.2131 90.6819C78.3733 84.9186 79.011 76.773 79.023 76.4241L79.1794 16H47.692ZM77.4589 76.3399C77.4348 76.5324 77.2182 78.3252 75.4375 80.6954C73.6929 83.0296 70.0593 86.3986 62.6476 89.214C49.6652 94.1471 47.8123 94.4238 47.5717 94.4238C47.6799 94.4238 47.4634 94.4238 47.5717 94.4238C47.331 94.4238 45.4781 94.1471 32.5077 89.214C25.1202 86.3986 21.4865 83.0296 19.7299 80.6954C17.9492 78.3252 17.7326 76.5204 17.7206 76.3519L17.5641 17.5641H47.4634H47.6799H77.6032L77.4589 76.3399ZM76.2677 51.3136L48.4741 28.838L32.8446 43.7335L28.1763 41.1105L18.9598 51.2053L18.9358 51.2294C18.7192 51.4941 18.6831 51.867 18.8275 52.1799C18.9719 52.4807 19.2606 52.6612 19.5855 52.6612C23.0026 52.6732 42.025 52.7333 74.6193 52.8296H75.7142C76.0632 52.8296 76.364 52.613 76.4963 52.2882C76.6287 51.9633 76.5324 51.5662 76.2677 51.3136ZM42.8913 36.6347L48.5342 31.3407L55.3322 36.5745L53.5154 38.8606L48.7267 35.1307L44.8525 38.8606L42.8913 36.6347ZM46.8257 79.781L18.9117 57.1972C18.5869 56.8964 18.4786 56.4271 18.635 56.006C18.7914 55.609 19.1644 55.3443 19.5855 55.3443H20.6804C53.2627 55.4405 72.2972 55.5007 75.7022 55.5127C76.0993 55.5127 76.4482 55.7413 76.6166 56.1023C76.7971 56.4753 76.749 56.9204 76.4843 57.2453L76.4482 57.2814L67.1355 67.4844L62.4551 64.8615L46.8257 79.781ZM21.0414 56.9084L46.7415 77.6875L62.2385 62.9243L66.8347 65.4992L74.5351 57.0528C69.0726 57.0648 50.712 57.0047 21.0414 56.9084Z" fill="#146CB5"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M101.136 75H97.968V58.248H105.528C106.296 58.248 106.984 58.368 107.592 58.608C108.2 58.848 108.712 59.2 109.128 59.664C109.56 60.112 109.888 60.656 110.112 61.296C110.352 61.936 110.472 62.648 110.472 63.432C110.472 64.584 110.208 65.576 109.68 66.408C109.168 67.24 108.392 67.832 107.352 68.184L110.784 75H107.256L104.136 68.544H101.136V75ZM105.216 65.88C105.824 65.88 106.304 65.72 106.656 65.4C107.008 65.064 107.184 64.592 107.184 63.984V62.88C107.184 62.272 107.008 61.808 106.656 61.488C106.304 61.168 105.824 61.008 105.216 61.008H101.136V65.88H105.216ZM122.695 75C122.023 75 121.487 74.808 121.087 74.424C120.703 74.024 120.463 73.496 120.367 72.84H120.223C120.015 73.656 119.591 74.272 118.951 74.688C118.311 75.088 117.519 75.288 116.575 75.288C115.295 75.288 114.311 74.952 113.623 74.28C112.935 73.608 112.591 72.712 112.591 71.592C112.591 70.296 113.055 69.336 113.983 68.712C114.911 68.072 116.231 67.752 117.943 67.752H120.079V66.84C120.079 66.136 119.895 65.592 119.527 65.208C119.159 64.824 118.567 64.632 117.751 64.632C117.031 64.632 116.447 64.792 115.999 65.112C115.567 65.416 115.199 65.784 114.895 66.216L113.071 64.584C113.535 63.864 114.151 63.288 114.919 62.856C115.687 62.408 116.703 62.184 117.967 62.184C119.663 62.184 120.951 62.568 121.831 63.336C122.711 64.104 123.151 65.208 123.151 66.648V72.552H124.399V75H122.695ZM117.607 73.056C118.295 73.056 118.879 72.904 119.359 72.6C119.839 72.296 120.079 71.848 120.079 71.256V69.6H118.111C116.511 69.6 115.711 70.112 115.711 71.136V71.544C115.711 72.056 115.871 72.44 116.191 72.696C116.527 72.936 116.999 73.056 117.607 73.056ZM126.885 75V62.472H129.957V64.56H130.077C130.333 63.888 130.733 63.328 131.277 62.88C131.837 62.416 132.605 62.184 133.581 62.184C134.877 62.184 135.869 62.608 136.557 63.456C137.245 64.304 137.589 65.512 137.589 67.08V75H134.517V67.392C134.517 66.496 134.357 65.824 134.037 65.376C133.717 64.928 133.189 64.704 132.453 64.704C132.133 64.704 131.821 64.752 131.517 64.848C131.229 64.928 130.965 65.056 130.725 65.232C130.501 65.392 130.317 65.6 130.173 65.856C130.029 66.096 129.957 66.384 129.957 66.72V75H126.885ZM152.299 76.056C152.299 76.712 152.179 77.288 151.939 77.784C151.715 78.296 151.339 78.72 150.811 79.056C150.283 79.392 149.603 79.648 148.771 79.824C147.939 80 146.923 80.088 145.723 80.088C144.667 80.088 143.771 80.016 143.035 79.872C142.299 79.744 141.691 79.552 141.211 79.296C140.747 79.056 140.411 78.752 140.203 78.384C139.995 78.016 139.891 77.6 139.891 77.136C139.891 76.432 140.083 75.88 140.467 75.48C140.867 75.096 141.419 74.848 142.123 74.736V74.472C141.611 74.344 141.211 74.096 140.923 73.728C140.651 73.344 140.515 72.896 140.515 72.384C140.515 72.064 140.579 71.784 140.707 71.544C140.835 71.288 141.003 71.072 141.211 70.896C141.435 70.72 141.683 70.576 141.955 70.464C142.227 70.336 142.515 70.24 142.819 70.176V70.08C142.051 69.728 141.475 69.24 141.091 68.616C140.723 67.992 140.539 67.264 140.539 66.432C140.539 65.152 140.979 64.128 141.859 63.36C142.739 62.576 144.027 62.184 145.723 62.184C146.107 62.184 146.483 62.208 146.851 62.256C147.235 62.304 147.587 62.384 147.907 62.496V62.088C147.907 60.872 148.499 60.264 149.683 60.264H151.627V62.616H148.963V62.952C149.619 63.32 150.107 63.8 150.427 64.392C150.747 64.984 150.907 65.664 150.907 66.432C150.907 67.696 150.467 68.712 149.587 69.48C148.723 70.248 147.435 70.632 145.723 70.632C144.987 70.632 144.347 70.56 143.803 70.416C143.563 70.528 143.355 70.68 143.179 70.872C143.003 71.048 142.915 71.272 142.915 71.544C142.915 72.168 143.459 72.48 144.547 72.48H147.907C149.443 72.48 150.555 72.8 151.243 73.44C151.947 74.064 152.299 74.936 152.299 76.056ZM149.419 76.416C149.419 76.016 149.259 75.704 148.939 75.48C148.619 75.256 148.067 75.144 147.283 75.144H143.011C142.579 75.464 142.363 75.896 142.363 76.44C142.363 76.92 142.563 77.296 142.963 77.568C143.363 77.84 144.043 77.976 145.003 77.976H146.539C147.547 77.976 148.275 77.848 148.723 77.592C149.187 77.336 149.419 76.944 149.419 76.416ZM145.723 68.544C147.227 68.544 147.979 67.904 147.979 66.624V66.216C147.979 64.936 147.227 64.296 145.723 64.296C144.219 64.296 143.467 64.936 143.467 66.216V66.624C143.467 67.904 144.219 68.544 145.723 68.544ZM163.242 75C162.57 75 162.034 74.808 161.634 74.424C161.25 74.024 161.01 73.496 160.914 72.84H160.77C160.562 73.656 160.138 74.272 159.498 74.688C158.858 75.088 158.066 75.288 157.122 75.288C155.842 75.288 154.858 74.952 154.17 74.28C153.482 73.608 153.138 72.712 153.138 71.592C153.138 70.296 153.602 69.336 154.53 68.712C155.458 68.072 156.778 67.752 158.49 67.752H160.626V66.84C160.626 66.136 160.442 65.592 160.074 65.208C159.706 64.824 159.114 64.632 158.298 64.632C157.578 64.632 156.994 64.792 156.546 65.112C156.114 65.416 155.746 65.784 155.442 66.216L153.618 64.584C154.082 63.864 154.698 63.288 155.466 62.856C156.234 62.408 157.25 62.184 158.514 62.184C160.21 62.184 161.498 62.568 162.378 63.336C163.258 64.104 163.698 65.208 163.698 66.648V72.552H164.946V75H163.242ZM158.154 73.056C158.842 73.056 159.426 72.904 159.906 72.6C160.386 72.296 160.626 71.848 160.626 71.256V69.6H158.658C157.058 69.6 156.258 70.112 156.258 71.136V71.544C156.258 72.056 156.418 72.44 156.738 72.696C157.074 72.936 157.546 73.056 158.154 73.056ZM158.898 61.056L157.05 60.168L159.33 55.68L161.922 56.952L158.898 61.056ZM167.432 75V62.472H170.504V65.064H170.624C170.704 64.728 170.824 64.408 170.984 64.104C171.16 63.784 171.384 63.504 171.656 63.264C171.928 63.024 172.248 62.832 172.616 62.688C173 62.544 173.44 62.472 173.936 62.472H174.608V65.376H173.648C172.608 65.376 171.824 65.528 171.296 65.832C170.768 66.136 170.504 66.632 170.504 67.32V75H167.432ZM176.854 57.24H179.926V64.536H180.022C180.246 63.816 180.67 63.248 181.294 62.832C181.918 62.4 182.646 62.184 183.478 62.184C185.078 62.184 186.294 62.752 187.126 63.888C187.974 65.008 188.398 66.616 188.398 68.712C188.398 70.824 187.974 72.448 187.126 73.584C186.294 74.72 185.078 75.288 183.478 75.288C182.646 75.288 181.918 75.072 181.294 74.64C180.686 74.208 180.262 73.632 180.022 72.912H179.926V79.8H176.854V57.24ZM182.494 72.744C183.294 72.744 183.942 72.48 184.438 71.952C184.934 71.424 185.182 70.712 185.182 69.816V67.656C185.182 66.76 184.934 66.048 184.438 65.52C183.942 64.976 183.294 64.704 182.494 64.704C181.758 64.704 181.142 64.888 180.646 65.256C180.166 65.624 179.926 66.112 179.926 66.72V70.704C179.926 71.36 180.166 71.864 180.646 72.216C181.142 72.568 181.758 72.744 182.494 72.744ZM192.781 60.648C192.141 60.648 191.677 60.504 191.389 60.216C191.117 59.928 190.981 59.56 190.981 59.112V58.632C190.981 58.184 191.117 57.816 191.389 57.528C191.677 57.24 192.141 57.096 192.781 57.096C193.405 57.096 193.861 57.24 194.149 57.528C194.437 57.816 194.581 58.184 194.581 58.632V59.112C194.581 59.56 194.437 59.928 194.149 60.216C193.861 60.504 193.405 60.648 192.781 60.648ZM191.245 62.472H194.317V75H191.245V62.472ZM197.878 75V62.472H200.95V64.56H201.07C201.326 63.888 201.726 63.328 202.27 62.88C202.83 62.416 203.598 62.184 204.574 62.184C205.87 62.184 206.862 62.608 207.55 63.456C208.238 64.304 208.582 65.512 208.582 67.08V75H205.51V67.392C205.51 66.496 205.35 65.824 205.03 65.376C204.71 64.928 204.182 64.704 203.446 64.704C203.126 64.704 202.814 64.752 202.51 64.848C202.222 64.928 201.958 65.056 201.718 65.232C201.494 65.392 201.31 65.6 201.166 65.856C201.022 66.096 200.95 66.384 200.95 66.72V75H197.878ZM223.291 76.056C223.291 76.712 223.171 77.288 222.931 77.784C222.707 78.296 222.331 78.72 221.803 79.056C221.275 79.392 220.595 79.648 219.763 79.824C218.931 80 217.915 80.088 216.715 80.088C215.659 80.088 214.763 80.016 214.027 79.872C213.291 79.744 212.683 79.552 212.203 79.296C211.739 79.056 211.403 78.752 211.195 78.384C210.987 78.016 210.883 77.6 210.883 77.136C210.883 76.432 211.075 75.88 211.459 75.48C211.859 75.096 212.411 74.848 213.115 74.736V74.472C212.603 74.344 212.203 74.096 211.915 73.728C211.643 73.344 211.507 72.896 211.507 72.384C211.507 72.064 211.571 71.784 211.699 71.544C211.827 71.288 211.995 71.072 212.203 70.896C212.427 70.72 212.675 70.576 212.947 70.464C213.219 70.336 213.507 70.24 213.811 70.176V70.08C213.043 69.728 212.467 69.24 212.083 68.616C211.715 67.992 211.531 67.264 211.531 66.432C211.531 65.152 211.971 64.128 212.851 63.36C213.731 62.576 215.019 62.184 216.715 62.184C217.099 62.184 217.475 62.208 217.843 62.256C218.227 62.304 218.579 62.384 218.899 62.496V62.088C218.899 60.872 219.491 60.264 220.675 60.264H222.619V62.616H219.955V62.952C220.611 63.32 221.099 63.8 221.419 64.392C221.739 64.984 221.899 65.664 221.899 66.432C221.899 67.696 221.459 68.712 220.579 69.48C219.715 70.248 218.427 70.632 216.715 70.632C215.979 70.632 215.339 70.56 214.795 70.416C214.555 70.528 214.347 70.68 214.171 70.872C213.995 71.048 213.907 71.272 213.907 71.544C213.907 72.168 214.451 72.48 215.539 72.48H218.899C220.435 72.48 221.547 72.8 222.235 73.44C222.939 74.064 223.291 74.936 223.291 76.056ZM220.411 76.416C220.411 76.016 220.251 75.704 219.931 75.48C219.611 75.256 219.059 75.144 218.275 75.144H214.003C213.571 75.464 213.355 75.896 213.355 76.44C213.355 76.92 213.555 77.296 213.955 77.568C214.355 77.84 215.035 77.976 215.995 77.976H217.531C218.539 77.976 219.267 77.848 219.715 77.592C220.179 77.336 220.411 76.944 220.411 76.416ZM216.715 68.544C218.219 68.544 218.971 67.904 218.971 66.624V66.216C218.971 64.936 218.219 64.296 216.715 64.296C215.211 64.296 214.459 64.936 214.459 66.216V66.624C214.459 67.904 215.211 68.544 216.715 68.544ZM238.417 62.472H241.297L236.257 77.232C236.097 77.68 235.913 78.064 235.705 78.384C235.513 78.72 235.281 78.992 235.009 79.2C234.737 79.408 234.409 79.56 234.025 79.656C233.641 79.752 233.193 79.8 232.681 79.8H230.833V77.352H233.089L233.665 75.6L229.177 62.472H232.225L234.409 69.096L235.225 72.264H235.369L236.233 69.096L238.417 62.472ZM247.235 75C246.179 75 245.371 74.728 244.811 74.184C244.267 73.624 243.995 72.832 243.995 71.808V64.92H242.147V62.472H243.107C243.571 62.472 243.883 62.368 244.043 62.16C244.219 61.936 244.307 61.608 244.307 61.176V59.04H247.067V62.472H249.635V64.92H247.067V72.552H249.443V75H247.235ZM252.299 75V62.472H255.371V65.064H255.491C255.571 64.728 255.691 64.408 255.851 64.104C256.027 63.784 256.251 63.504 256.523 63.264C256.795 63.024 257.115 62.832 257.483 62.688C257.867 62.544 258.307 62.472 258.803 62.472H259.475V65.376H258.515C257.475 65.376 256.691 65.528 256.163 65.832C255.635 66.136 255.371 66.632 255.371 67.32V75H252.299ZM270.68 75C270.008 75 269.472 74.808 269.072 74.424C268.688 74.024 268.448 73.496 268.352 72.84H268.208C268 73.656 267.576 74.272 266.936 74.688C266.296 75.088 265.504 75.288 264.56 75.288C263.28 75.288 262.296 74.952 261.608 74.28C260.92 73.608 260.576 72.712 260.576 71.592C260.576 70.296 261.04 69.336 261.968 68.712C262.896 68.072 264.216 67.752 265.928 67.752H268.064V66.84C268.064 66.136 267.88 65.592 267.512 65.208C267.144 64.824 266.552 64.632 265.736 64.632C265.016 64.632 264.432 64.792 263.984 65.112C263.552 65.416 263.184 65.784 262.88 66.216L261.056 64.584C261.52 63.864 262.136 63.288 262.904 62.856C263.672 62.408 264.688 62.184 265.952 62.184C267.648 62.184 268.936 62.568 269.816 63.336C270.696 64.104 271.136 65.208 271.136 66.648V72.552H272.384V75H270.68ZM265.592 73.056C266.28 73.056 266.864 72.904 267.344 72.6C267.824 72.296 268.064 71.848 268.064 71.256V69.6H266.096C264.496 69.6 263.696 70.112 263.696 71.136V71.544C263.696 72.056 263.856 72.44 264.176 72.696C264.512 72.936 264.984 73.056 265.592 73.056Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/rangarthing_eystra.svg b/libs/application/templates/financial-aid/src/svg/rangarthing_eystra.svg deleted file mode 100644 index 995458056c8d..000000000000 --- a/libs/application/templates/financial-aid/src/svg/rangarthing_eystra.svg +++ /dev/null @@ -1,8 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M80.7364 56.3273C80.7364 65.2204 75.7316 74.2676 69.8028 80.9663C63.2388 88.3773 49.2831 95.846 47.6854 95.5188C45.9722 95.153 42.1609 93.4398 38.3688 91.0722C31.362 86.6064 29.6873 85.4322 24.8365 80.2156C17.2331 72.0732 15.7124 65.3167 14.5382 57.8287C14.2687 56.1733 14.8846 53.2859 14.5382 47.2416C14.4419 36.3465 14.6729 20.7738 14.5382 17.2127C14.5382 16.77 14.5382 16.539 14.5574 16.539H80.7749C80.7749 16.539 80.7364 46.3946 80.7364 56.3273Z" fill="white"/> -<path d="M47.763 96C47.7052 96 47.6475 96 47.5897 95.9808C45.8765 95.615 42.0844 93.9596 38.1191 91.4572C31.2471 87.0876 29.4377 85.8364 24.4906 80.5236C16.8679 72.3619 15.2702 65.4514 14.0767 57.9057C13.9612 57.155 13.9997 56.1925 14.0575 54.8835C14.1345 53.1319 14.25 50.7257 14.0575 47.2801V47.2608C13.9997 41.7748 14.0382 35.1915 14.0575 29.3975C14.0767 23.8152 14.1152 19.0029 14.0382 17.2512C14.0382 16.3465 14.0382 16.308 14.2692 16.154L14.5195 16L14.6542 16.077H81.2375V16.5582C81.2375 16.8662 81.199 46.5101 81.199 56.3272C81.199 64.2579 77.1759 73.3629 70.1499 81.2743C63.6821 88.5698 50.2076 96 47.763 96ZM15.02 47.2416C15.2124 50.7449 15.097 53.1704 15.02 54.9413C14.9622 56.2117 14.9237 57.1165 15.02 57.7709C16.2327 65.4129 17.7341 71.8999 25.1836 79.8884C30.0729 85.1434 31.7091 86.2599 38.6388 90.6679C42.4694 93.0741 46.2038 94.7296 47.8015 95.0568C47.8207 95.0568 47.84 95.0568 47.8592 95.0568C49.4954 95.0568 62.8159 88.1463 69.4569 80.6583C76.3289 72.9009 80.275 64.0462 80.275 56.3272C80.275 47.2031 80.3135 20.9086 80.3135 17.0202H15.0007C15.0007 17.078 15.0007 17.155 15.0007 17.2127C15.0585 18.9836 15.0392 23.796 15.02 29.3782C15.0007 35.1915 14.9622 41.7555 15.02 47.2416Z" fill="#2C448E"/> -<path d="M18.4085 20.3311C18.4085 20.3311 77.0995 20.3696 77.0995 20.3311V57.001C76.291 56.2503 76.599 56.6545 74.4816 54.6526C66.4162 46.7411 55.2901 34.9798 49.5153 35.384C47.1476 35.538 41.8541 38.2329 34.5009 44.8547C33.1149 46.1059 29.2458 49.7633 24.2795 55.7113C24.318 55.7498 30.6895 53.1704 35.5403 52.5544C37.2343 52.3427 39.1014 51.9962 40.2949 51.8422C45.8002 51.3994 46.0312 51.3225 51.9407 51.7074C57.6577 52.0732 60.0062 52.8046 65.2227 54.5756C69.881 56.154 75.6751 58.7142 75.2708 62.3908C74.8858 65.7979 65.1842 67.1069 61.2766 67.2608C54.0389 67.6458 53.4999 67.4726 47.3979 68.3581C45.6654 68.6083 42.4701 69.2243 42.5663 71.7267C42.6625 74.2291 47.5519 75.3648 50.1313 75.846C55.4633 76.847 61.9888 77.2705 68.1293 77.1935C66.3199 79.6766 64.472 80.7353 59.9292 84.2965C56.291 87.1454 48.9956 90.8605 47.5711 90.899C45.9349 90.9375 36.0215 85.8364 32.4412 82.2368C31.7675 81.5631 27.2246 78.6179 25.2997 74.0751C22.1813 66.7604 33.4614 63.2763 41.1034 62.0828C52.8839 60.2734 64.01 61.5438 64.1062 60.0231C64.1062 56.9625 53.2497 54.3831 42.9128 55.1916C28.9571 56.2888 18.139 61.3706 18.3507 61.3706L18.4085 20.3311Z" fill="#2C448E"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M101.136 75H97.968V58.248H105.528C106.296 58.248 106.984 58.368 107.592 58.608C108.2 58.848 108.712 59.2 109.128 59.664C109.56 60.112 109.888 60.656 110.112 61.296C110.352 61.936 110.472 62.648 110.472 63.432C110.472 64.584 110.208 65.576 109.68 66.408C109.168 67.24 108.392 67.832 107.352 68.184L110.784 75H107.256L104.136 68.544H101.136V75ZM105.216 65.88C105.824 65.88 106.304 65.72 106.656 65.4C107.008 65.064 107.184 64.592 107.184 63.984V62.88C107.184 62.272 107.008 61.808 106.656 61.488C106.304 61.168 105.824 61.008 105.216 61.008H101.136V65.88H105.216ZM122.695 75C122.023 75 121.487 74.808 121.087 74.424C120.703 74.024 120.463 73.496 120.367 72.84H120.223C120.015 73.656 119.591 74.272 118.951 74.688C118.311 75.088 117.519 75.288 116.575 75.288C115.295 75.288 114.311 74.952 113.623 74.28C112.935 73.608 112.591 72.712 112.591 71.592C112.591 70.296 113.055 69.336 113.983 68.712C114.911 68.072 116.231 67.752 117.943 67.752H120.079V66.84C120.079 66.136 119.895 65.592 119.527 65.208C119.159 64.824 118.567 64.632 117.751 64.632C117.031 64.632 116.447 64.792 115.999 65.112C115.567 65.416 115.199 65.784 114.895 66.216L113.071 64.584C113.535 63.864 114.151 63.288 114.919 62.856C115.687 62.408 116.703 62.184 117.967 62.184C119.663 62.184 120.951 62.568 121.831 63.336C122.711 64.104 123.151 65.208 123.151 66.648V72.552H124.399V75H122.695ZM117.607 73.056C118.295 73.056 118.879 72.904 119.359 72.6C119.839 72.296 120.079 71.848 120.079 71.256V69.6H118.111C116.511 69.6 115.711 70.112 115.711 71.136V71.544C115.711 72.056 115.871 72.44 116.191 72.696C116.527 72.936 116.999 73.056 117.607 73.056ZM126.885 75V62.472H129.957V64.56H130.077C130.333 63.888 130.733 63.328 131.277 62.88C131.837 62.416 132.605 62.184 133.581 62.184C134.877 62.184 135.869 62.608 136.557 63.456C137.245 64.304 137.589 65.512 137.589 67.08V75H134.517V67.392C134.517 66.496 134.357 65.824 134.037 65.376C133.717 64.928 133.189 64.704 132.453 64.704C132.133 64.704 131.821 64.752 131.517 64.848C131.229 64.928 130.965 65.056 130.725 65.232C130.501 65.392 130.317 65.6 130.173 65.856C130.029 66.096 129.957 66.384 129.957 66.72V75H126.885ZM152.299 76.056C152.299 76.712 152.179 77.288 151.939 77.784C151.715 78.296 151.339 78.72 150.811 79.056C150.283 79.392 149.603 79.648 148.771 79.824C147.939 80 146.923 80.088 145.723 80.088C144.667 80.088 143.771 80.016 143.035 79.872C142.299 79.744 141.691 79.552 141.211 79.296C140.747 79.056 140.411 78.752 140.203 78.384C139.995 78.016 139.891 77.6 139.891 77.136C139.891 76.432 140.083 75.88 140.467 75.48C140.867 75.096 141.419 74.848 142.123 74.736V74.472C141.611 74.344 141.211 74.096 140.923 73.728C140.651 73.344 140.515 72.896 140.515 72.384C140.515 72.064 140.579 71.784 140.707 71.544C140.835 71.288 141.003 71.072 141.211 70.896C141.435 70.72 141.683 70.576 141.955 70.464C142.227 70.336 142.515 70.24 142.819 70.176V70.08C142.051 69.728 141.475 69.24 141.091 68.616C140.723 67.992 140.539 67.264 140.539 66.432C140.539 65.152 140.979 64.128 141.859 63.36C142.739 62.576 144.027 62.184 145.723 62.184C146.107 62.184 146.483 62.208 146.851 62.256C147.235 62.304 147.587 62.384 147.907 62.496V62.088C147.907 60.872 148.499 60.264 149.683 60.264H151.627V62.616H148.963V62.952C149.619 63.32 150.107 63.8 150.427 64.392C150.747 64.984 150.907 65.664 150.907 66.432C150.907 67.696 150.467 68.712 149.587 69.48C148.723 70.248 147.435 70.632 145.723 70.632C144.987 70.632 144.347 70.56 143.803 70.416C143.563 70.528 143.355 70.68 143.179 70.872C143.003 71.048 142.915 71.272 142.915 71.544C142.915 72.168 143.459 72.48 144.547 72.48H147.907C149.443 72.48 150.555 72.8 151.243 73.44C151.947 74.064 152.299 74.936 152.299 76.056ZM149.419 76.416C149.419 76.016 149.259 75.704 148.939 75.48C148.619 75.256 148.067 75.144 147.283 75.144H143.011C142.579 75.464 142.363 75.896 142.363 76.44C142.363 76.92 142.563 77.296 142.963 77.568C143.363 77.84 144.043 77.976 145.003 77.976H146.539C147.547 77.976 148.275 77.848 148.723 77.592C149.187 77.336 149.419 76.944 149.419 76.416ZM145.723 68.544C147.227 68.544 147.979 67.904 147.979 66.624V66.216C147.979 64.936 147.227 64.296 145.723 64.296C144.219 64.296 143.467 64.936 143.467 66.216V66.624C143.467 67.904 144.219 68.544 145.723 68.544ZM163.242 75C162.57 75 162.034 74.808 161.634 74.424C161.25 74.024 161.01 73.496 160.914 72.84H160.77C160.562 73.656 160.138 74.272 159.498 74.688C158.858 75.088 158.066 75.288 157.122 75.288C155.842 75.288 154.858 74.952 154.17 74.28C153.482 73.608 153.138 72.712 153.138 71.592C153.138 70.296 153.602 69.336 154.53 68.712C155.458 68.072 156.778 67.752 158.49 67.752H160.626V66.84C160.626 66.136 160.442 65.592 160.074 65.208C159.706 64.824 159.114 64.632 158.298 64.632C157.578 64.632 156.994 64.792 156.546 65.112C156.114 65.416 155.746 65.784 155.442 66.216L153.618 64.584C154.082 63.864 154.698 63.288 155.466 62.856C156.234 62.408 157.25 62.184 158.514 62.184C160.21 62.184 161.498 62.568 162.378 63.336C163.258 64.104 163.698 65.208 163.698 66.648V72.552H164.946V75H163.242ZM158.154 73.056C158.842 73.056 159.426 72.904 159.906 72.6C160.386 72.296 160.626 71.848 160.626 71.256V69.6H158.658C157.058 69.6 156.258 70.112 156.258 71.136V71.544C156.258 72.056 156.418 72.44 156.738 72.696C157.074 72.936 157.546 73.056 158.154 73.056ZM158.898 61.056L157.05 60.168L159.33 55.68L161.922 56.952L158.898 61.056ZM167.432 75V62.472H170.504V65.064H170.624C170.704 64.728 170.824 64.408 170.984 64.104C171.16 63.784 171.384 63.504 171.656 63.264C171.928 63.024 172.248 62.832 172.616 62.688C173 62.544 173.44 62.472 173.936 62.472H174.608V65.376H173.648C172.608 65.376 171.824 65.528 171.296 65.832C170.768 66.136 170.504 66.632 170.504 67.32V75H167.432ZM176.854 57.24H179.926V64.536H180.022C180.246 63.816 180.67 63.248 181.294 62.832C181.918 62.4 182.646 62.184 183.478 62.184C185.078 62.184 186.294 62.752 187.126 63.888C187.974 65.008 188.398 66.616 188.398 68.712C188.398 70.824 187.974 72.448 187.126 73.584C186.294 74.72 185.078 75.288 183.478 75.288C182.646 75.288 181.918 75.072 181.294 74.64C180.686 74.208 180.262 73.632 180.022 72.912H179.926V79.8H176.854V57.24ZM182.494 72.744C183.294 72.744 183.942 72.48 184.438 71.952C184.934 71.424 185.182 70.712 185.182 69.816V67.656C185.182 66.76 184.934 66.048 184.438 65.52C183.942 64.976 183.294 64.704 182.494 64.704C181.758 64.704 181.142 64.888 180.646 65.256C180.166 65.624 179.926 66.112 179.926 66.72V70.704C179.926 71.36 180.166 71.864 180.646 72.216C181.142 72.568 181.758 72.744 182.494 72.744ZM192.781 60.648C192.141 60.648 191.677 60.504 191.389 60.216C191.117 59.928 190.981 59.56 190.981 59.112V58.632C190.981 58.184 191.117 57.816 191.389 57.528C191.677 57.24 192.141 57.096 192.781 57.096C193.405 57.096 193.861 57.24 194.149 57.528C194.437 57.816 194.581 58.184 194.581 58.632V59.112C194.581 59.56 194.437 59.928 194.149 60.216C193.861 60.504 193.405 60.648 192.781 60.648ZM191.245 62.472H194.317V75H191.245V62.472ZM197.878 75V62.472H200.95V64.56H201.07C201.326 63.888 201.726 63.328 202.27 62.88C202.83 62.416 203.598 62.184 204.574 62.184C205.87 62.184 206.862 62.608 207.55 63.456C208.238 64.304 208.582 65.512 208.582 67.08V75H205.51V67.392C205.51 66.496 205.35 65.824 205.03 65.376C204.71 64.928 204.182 64.704 203.446 64.704C203.126 64.704 202.814 64.752 202.51 64.848C202.222 64.928 201.958 65.056 201.718 65.232C201.494 65.392 201.31 65.6 201.166 65.856C201.022 66.096 200.95 66.384 200.95 66.72V75H197.878ZM223.291 76.056C223.291 76.712 223.171 77.288 222.931 77.784C222.707 78.296 222.331 78.72 221.803 79.056C221.275 79.392 220.595 79.648 219.763 79.824C218.931 80 217.915 80.088 216.715 80.088C215.659 80.088 214.763 80.016 214.027 79.872C213.291 79.744 212.683 79.552 212.203 79.296C211.739 79.056 211.403 78.752 211.195 78.384C210.987 78.016 210.883 77.6 210.883 77.136C210.883 76.432 211.075 75.88 211.459 75.48C211.859 75.096 212.411 74.848 213.115 74.736V74.472C212.603 74.344 212.203 74.096 211.915 73.728C211.643 73.344 211.507 72.896 211.507 72.384C211.507 72.064 211.571 71.784 211.699 71.544C211.827 71.288 211.995 71.072 212.203 70.896C212.427 70.72 212.675 70.576 212.947 70.464C213.219 70.336 213.507 70.24 213.811 70.176V70.08C213.043 69.728 212.467 69.24 212.083 68.616C211.715 67.992 211.531 67.264 211.531 66.432C211.531 65.152 211.971 64.128 212.851 63.36C213.731 62.576 215.019 62.184 216.715 62.184C217.099 62.184 217.475 62.208 217.843 62.256C218.227 62.304 218.579 62.384 218.899 62.496V62.088C218.899 60.872 219.491 60.264 220.675 60.264H222.619V62.616H219.955V62.952C220.611 63.32 221.099 63.8 221.419 64.392C221.739 64.984 221.899 65.664 221.899 66.432C221.899 67.696 221.459 68.712 220.579 69.48C219.715 70.248 218.427 70.632 216.715 70.632C215.979 70.632 215.339 70.56 214.795 70.416C214.555 70.528 214.347 70.68 214.171 70.872C213.995 71.048 213.907 71.272 213.907 71.544C213.907 72.168 214.451 72.48 215.539 72.48H218.899C220.435 72.48 221.547 72.8 222.235 73.44C222.939 74.064 223.291 74.936 223.291 76.056ZM220.411 76.416C220.411 76.016 220.251 75.704 219.931 75.48C219.611 75.256 219.059 75.144 218.275 75.144H214.003C213.571 75.464 213.355 75.896 213.355 76.44C213.355 76.92 213.555 77.296 213.955 77.568C214.355 77.84 215.035 77.976 215.995 77.976H217.531C218.539 77.976 219.267 77.848 219.715 77.592C220.179 77.336 220.411 76.944 220.411 76.416ZM216.715 68.544C218.219 68.544 218.971 67.904 218.971 66.624V66.216C218.971 64.936 218.219 64.296 216.715 64.296C215.211 64.296 214.459 64.936 214.459 66.216V66.624C214.459 67.904 215.211 68.544 216.715 68.544ZM235.801 75.288C234.873 75.288 234.041 75.136 233.305 74.832C232.585 74.512 231.969 74.072 231.457 73.512C230.961 72.936 230.577 72.248 230.305 71.448C230.033 70.632 229.897 69.72 229.897 68.712C229.897 67.72 230.025 66.824 230.281 66.024C230.553 65.224 230.937 64.544 231.433 63.984C231.929 63.408 232.537 62.968 233.257 62.664C233.977 62.344 234.793 62.184 235.705 62.184C236.681 62.184 237.529 62.352 238.249 62.688C238.969 63.024 239.561 63.48 240.025 64.056C240.489 64.632 240.833 65.304 241.057 66.072C241.297 66.824 241.417 67.632 241.417 68.496V69.504H233.089V69.816C233.089 70.728 233.345 71.464 233.857 72.024C234.369 72.568 235.129 72.84 236.137 72.84C236.905 72.84 237.529 72.68 238.009 72.36C238.505 72.04 238.945 71.632 239.329 71.136L240.985 72.984C240.473 73.704 239.769 74.272 238.873 74.688C237.993 75.088 236.969 75.288 235.801 75.288ZM235.753 64.488C234.937 64.488 234.289 64.76 233.809 65.304C233.329 65.848 233.089 66.552 233.089 67.416V67.608H238.225V67.392C238.225 66.528 238.009 65.832 237.577 65.304C237.161 64.76 236.553 64.488 235.753 64.488ZM251.659 62.472H254.539L249.499 77.232C249.339 77.68 249.155 78.064 248.947 78.384C248.755 78.72 248.523 78.992 248.251 79.2C247.979 79.408 247.651 79.56 247.267 79.656C246.883 79.752 246.435 79.8 245.923 79.8H244.075V77.352H246.331L246.907 75.6L242.419 62.472H245.467L247.651 69.096L248.467 72.264H248.611L249.475 69.096L251.659 62.472ZM260.482 75.288C259.282 75.288 258.274 75.088 257.458 74.688C256.642 74.272 255.922 73.704 255.298 72.984L257.17 71.16C257.634 71.688 258.138 72.104 258.682 72.408C259.242 72.712 259.882 72.864 260.602 72.864C261.338 72.864 261.866 72.736 262.186 72.48C262.522 72.224 262.69 71.872 262.69 71.424C262.69 71.056 262.57 70.768 262.33 70.56C262.106 70.336 261.714 70.184 261.154 70.104L259.906 69.936C258.546 69.76 257.506 69.376 256.786 68.784C256.082 68.176 255.73 67.296 255.73 66.144C255.73 65.536 255.842 64.992 256.066 64.512C256.29 64.016 256.61 63.6 257.026 63.264C257.442 62.912 257.938 62.648 258.514 62.472C259.106 62.28 259.762 62.184 260.482 62.184C261.09 62.184 261.626 62.232 262.09 62.328C262.57 62.408 263.002 62.536 263.386 62.712C263.77 62.872 264.122 63.08 264.442 63.336C264.762 63.576 265.074 63.848 265.378 64.152L263.578 65.952C263.21 65.568 262.77 65.248 262.258 64.992C261.746 64.736 261.186 64.608 260.578 64.608C259.906 64.608 259.418 64.728 259.114 64.968C258.826 65.208 258.682 65.52 258.682 65.904C258.682 66.32 258.802 66.64 259.042 66.864C259.298 67.072 259.722 67.224 260.314 67.32L261.586 67.488C264.29 67.872 265.642 69.104 265.642 71.184C265.642 71.792 265.514 72.352 265.258 72.864C265.018 73.36 264.674 73.792 264.226 74.16C263.778 74.512 263.234 74.792 262.594 75C261.97 75.192 261.266 75.288 260.482 75.288ZM272.079 75C271.023 75 270.215 74.728 269.655 74.184C269.111 73.624 268.839 72.832 268.839 71.808V64.92H266.991V62.472H267.951C268.415 62.472 268.727 62.368 268.887 62.16C269.063 61.936 269.151 61.608 269.151 61.176V59.04H271.911V62.472H274.479V64.92H271.911V72.552H274.287V75H272.079ZM277.143 75V62.472H280.215V65.064H280.335C280.415 64.728 280.535 64.408 280.695 64.104C280.871 63.784 281.095 63.504 281.367 63.264C281.639 63.024 281.959 62.832 282.327 62.688C282.711 62.544 283.151 62.472 283.647 62.472H284.319V65.376H283.359C282.319 65.376 281.535 65.528 281.007 65.832C280.479 66.136 280.215 66.632 280.215 67.32V75H277.143ZM295.523 75C294.851 75 294.315 74.808 293.915 74.424C293.531 74.024 293.291 73.496 293.195 72.84H293.051C292.843 73.656 292.419 74.272 291.779 74.688C291.139 75.088 290.347 75.288 289.403 75.288C288.123 75.288 287.139 74.952 286.451 74.28C285.763 73.608 285.419 72.712 285.419 71.592C285.419 70.296 285.883 69.336 286.811 68.712C287.739 68.072 289.059 67.752 290.771 67.752H292.907V66.84C292.907 66.136 292.723 65.592 292.355 65.208C291.987 64.824 291.395 64.632 290.579 64.632C289.859 64.632 289.275 64.792 288.827 65.112C288.395 65.416 288.027 65.784 287.723 66.216L285.899 64.584C286.363 63.864 286.979 63.288 287.747 62.856C288.515 62.408 289.531 62.184 290.795 62.184C292.491 62.184 293.779 62.568 294.659 63.336C295.539 64.104 295.979 65.208 295.979 66.648V72.552H297.227V75H295.523ZM290.435 73.056C291.123 73.056 291.707 72.904 292.187 72.6C292.667 72.296 292.907 71.848 292.907 71.256V69.6H290.939C289.339 69.6 288.539 70.112 288.539 71.136V71.544C288.539 72.056 288.699 72.44 289.019 72.696C289.355 72.936 289.827 73.056 290.435 73.056Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/reykholahreppur.svg b/libs/application/templates/financial-aid/src/svg/reykholahreppur.svg deleted file mode 100644 index 2633377ef346..000000000000 --- a/libs/application/templates/financial-aid/src/svg/reykholahreppur.svg +++ /dev/null @@ -1,20 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57919)"> -<path d="M77.1971 55.9926C77.1971 78.0575 63.9553 95.9555 47.6142 95.9555C31.2731 95.9555 18.0312 78.0723 18.0312 55.9926C18.0312 33.9129 31.288 16.0297 47.6142 16.0297C63.9404 16.0297 77.1971 33.9277 77.1971 55.9926Z" fill="white"/> -<path d="M21.6468 62.8137C20.7719 62.8137 19.6449 62.8879 18.4883 62.9917C18.8738 65.9129 19.4966 68.7303 20.3122 71.4143V71.2363C20.3122 71.2363 29.4021 69.1603 33.9545 69.1603C43.3706 69.4866 52.5495 73.2085 61.2538 73.3123C65.8062 73.3123 74.8961 71.2363 74.8961 71.2363V71.4143C75.7413 68.7007 76.3641 65.8239 76.7496 62.8434C76.4086 62.8285 76.0824 62.8137 75.7858 62.8137C72.7756 62.8137 69.7654 63.7034 66.7552 63.7034C63.745 63.7034 60.7348 62.8137 57.7246 62.8137C54.7144 62.8137 51.7042 63.7034 48.694 63.7034C45.6838 63.7034 42.6736 62.8137 39.6634 62.8137C36.6532 62.8137 33.6431 63.7034 30.6329 63.7034C27.6227 63.7034 24.657 62.8137 21.6468 62.8137ZM33.9693 70.7915C30.0101 70.7915 22.6254 72.3633 20.7719 72.7637C22.4772 77.7164 24.8942 82.1205 27.8599 85.7238C30.5291 85.2345 36.6829 84.1965 40.1973 84.1965C49.6134 84.5227 46.9294 86.4652 55.6338 86.569C59.4595 86.569 65.9989 85.3234 68.0156 84.9231C70.6551 81.5273 72.8201 77.4791 74.3919 72.9861C72.4494 73.4161 65.1834 74.9435 61.2686 74.9435C51.8525 74.6172 42.6736 70.8953 33.9693 70.7915ZM40.1973 85.8276C37.1574 85.8276 32.1305 86.6135 29.0907 87.1474C34.1621 92.6636 40.5976 95.9555 47.6115 95.9555C54.7441 95.9555 61.2835 92.545 66.3845 86.8656C63.5374 87.3994 58.7033 88.2002 55.619 88.2002C46.2177 87.874 48.9016 85.9314 40.1973 85.8276Z" fill="#0044AA"/> -<path d="M39.3516 46.0427C38.2246 46.102 36.4897 47.8666 35.7779 47.9111C34.7251 47.9704 34.4433 47.1993 33.2719 47.2142C29.8465 47.2586 29.5351 53.3087 24.9382 53.2642L18.1171 53.2049C18.0726 54.1243 18.043 55.0585 18.043 55.9927C18.043 57.9204 18.1468 59.8036 18.3395 61.6572H76.9123C77.1051 59.8036 77.2089 57.9204 77.2089 55.9927C77.2089 55.014 77.1792 54.0501 77.1347 53.1011C67.2293 52.9676 56.182 53.4125 45.9948 53.6646C43.1477 53.7387 41.9762 45.9092 39.3516 46.0427Z" fill="black"/> -<path d="M35.6597 55.266C36.9794 56.9861 38.833 59.5811 40.4196 61.8202L41.3687 63.14C44.112 67.6627 42.3325 66.8323 44.631 70.2132L45.2538 71.5626C47.3742 74.7952 47.7449 75.6553 47.6263 75.8925C42.1991 78.6506 37.7357 76.5153 35.4966 76.4263C32.5902 76.3077 32.7385 78.4282 29.1055 79.3772C31.656 79.1696 33.6282 79.9852 35.0814 79.7776C46.618 76.975 48.2046 81.4829 54.2992 81.6312C58.1694 81.7201 62.6031 79.1844 66.4586 77.6571C65.5392 75.9667 63.656 75.848 62.6921 75.8035C61.0165 75.7294 57.6208 76.8712 57.2649 75.4328C57.1907 74.2762 59.4298 72.393 58.3622 72.4819C57.8432 72.393 61.669 67.7813 59.8006 68.5375C60.0971 67.5589 62.618 65.0528 60.8979 65.4532C62.0693 63.7628 62.3214 63.0806 62.3511 62.532L61.9062 61.6868C61.9804 61.1381 62.6773 60.6933 62.7218 60.1446C62.4549 60.2484 62.0545 60.6191 61.9359 60.4412C61.8024 60.1001 62.6328 59.2549 62.8701 57.6386C62.3807 58.0389 61.58 58.9435 61.4465 58.7655C61.2982 58.7359 62.5735 55.9185 62.2028 53.5162C59.6968 61.1381 54.4623 64.5338 51.2297 69.3086C50.8886 69.6645 50.2361 66.9064 48.694 65.8684C48.7681 66.2391 48.8571 66.6098 48.5902 66.8174C48.2639 66.9657 47.6263 64.5635 46.6625 63.4514L44.5716 61.6275C44.1713 61.2864 43.7264 60.545 43.1926 59.9963C43.2964 60.4115 43.2816 60.6784 43.0888 60.7377C42.7032 60.5598 42.0953 58.38 40.7607 57.772C40.8348 58.1279 41.2649 58.7804 40.9683 58.8249C40.731 58.9731 39.6782 57.0306 38.6402 56.393C38.6402 56.734 38.9071 57.3272 38.6402 57.4013C37.6319 56.6747 36.8311 55.3698 35.6597 55.266Z" fill="white"/> -<path d="M34.1482 20.4041C33.4809 20.8637 32.8285 21.3679 32.1908 21.8869H63.0342C62.3966 21.3679 61.7441 20.8637 61.0768 20.4041H34.1482ZM27.7867 26.3355C27.4012 26.81 27.0157 27.3142 26.6301 27.8183H68.5801C68.2094 27.3142 67.8238 26.81 67.4234 26.3355H27.7867ZM23.8127 32.2669C23.5458 32.7562 23.2789 33.2456 23.0416 33.7497H72.2131C71.961 33.2456 71.6941 32.7562 71.442 32.2669C71.4271 32.2669 23.8127 32.2669 23.8127 32.2669ZM21.1287 38.1983C20.9508 38.6876 20.7728 39.177 20.6097 39.6812H74.6301C74.467 39.177 74.2891 38.6876 74.1111 38.1983H21.1287ZM19.3641 44.1297C19.2455 44.6191 19.1417 45.1084 19.0527 45.6126H76.2019C76.0981 45.1084 75.9943 44.6191 75.8905 44.1297H19.3641Z" fill="black"/> -<path d="M61.5804 35.974C61.5804 39.0435 59.0892 41.5347 56.0197 41.5347C52.9502 41.5347 50.459 39.0435 50.459 35.974C50.459 32.9045 52.9502 30.4133 56.0197 30.4133C59.0892 30.4133 61.5804 32.9045 61.5804 35.974Z" fill="#F00000"/> -<path d="M51.8826 32.267C51.4971 32.697 51.1709 33.2012 50.9336 33.7498H61.1208C60.8835 33.2012 60.5573 32.697 60.1718 32.267H51.8826ZM50.9336 38.1984C51.1709 38.747 51.4971 39.2512 51.8826 39.6812H60.1718C60.5573 39.2512 60.8835 38.747 61.1208 38.1984H50.9336Z" fill="white"/> -<path d="M77.1971 55.9926C77.1971 78.0575 63.9553 95.9555 47.6142 95.9555C31.2731 95.9555 18.0312 78.0723 18.0312 55.9926C18.0312 33.9129 31.288 16.0297 47.6142 16.0297C63.9404 16.0297 77.1971 33.9277 77.1971 55.9926Z" stroke="#808080" stroke-width="0.4842"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M101.136 75H97.968V58.248H105.528C106.296 58.248 106.984 58.368 107.592 58.608C108.2 58.848 108.712 59.2 109.128 59.664C109.56 60.112 109.888 60.656 110.112 61.296C110.352 61.936 110.472 62.648 110.472 63.432C110.472 64.584 110.208 65.576 109.68 66.408C109.168 67.24 108.392 67.832 107.352 68.184L110.784 75H107.256L104.136 68.544H101.136V75ZM105.216 65.88C105.824 65.88 106.304 65.72 106.656 65.4C107.008 65.064 107.184 64.592 107.184 63.984V62.88C107.184 62.272 107.008 61.808 106.656 61.488C106.304 61.168 105.824 61.008 105.216 61.008H101.136V65.88H105.216ZM118.426 75.288C117.498 75.288 116.666 75.136 115.93 74.832C115.21 74.512 114.594 74.072 114.082 73.512C113.586 72.936 113.202 72.248 112.93 71.448C112.658 70.632 112.522 69.72 112.522 68.712C112.522 67.72 112.65 66.824 112.906 66.024C113.178 65.224 113.562 64.544 114.058 63.984C114.554 63.408 115.162 62.968 115.882 62.664C116.602 62.344 117.418 62.184 118.33 62.184C119.306 62.184 120.154 62.352 120.874 62.688C121.594 63.024 122.186 63.48 122.65 64.056C123.114 64.632 123.458 65.304 123.682 66.072C123.922 66.824 124.042 67.632 124.042 68.496V69.504H115.714V69.816C115.714 70.728 115.97 71.464 116.482 72.024C116.994 72.568 117.754 72.84 118.762 72.84C119.53 72.84 120.154 72.68 120.634 72.36C121.13 72.04 121.57 71.632 121.954 71.136L123.61 72.984C123.098 73.704 122.394 74.272 121.498 74.688C120.618 75.088 119.594 75.288 118.426 75.288ZM118.378 64.488C117.562 64.488 116.914 64.76 116.434 65.304C115.954 65.848 115.714 66.552 115.714 67.416V67.608H120.85V67.392C120.85 66.528 120.634 65.832 120.202 65.304C119.786 64.76 119.178 64.488 118.378 64.488ZM134.284 62.472H137.164L132.124 77.232C131.964 77.68 131.78 78.064 131.572 78.384C131.38 78.72 131.148 78.992 130.876 79.2C130.604 79.408 130.276 79.56 129.892 79.656C129.508 79.752 129.06 79.8 128.548 79.8H126.7V77.352H128.956L129.532 75.6L125.044 62.472H128.092L130.276 69.096L131.092 72.264H131.236L132.1 69.096L134.284 62.472ZM139.19 57.24H142.262V67.944H142.382L144.038 65.688L146.846 62.472H150.326L146.006 67.32L150.782 75H147.134L143.918 69.384L142.262 71.184V75H139.19V57.24ZM152.667 57.24H155.739V64.56H155.859C156.115 63.888 156.515 63.328 157.059 62.88C157.619 62.416 158.387 62.184 159.363 62.184C160.659 62.184 161.651 62.608 162.339 63.456C163.027 64.304 163.371 65.512 163.371 67.08V75H160.299V67.392C160.299 66.496 160.139 65.824 159.819 65.376C159.499 64.928 158.971 64.704 158.235 64.704C157.915 64.704 157.603 64.752 157.299 64.848C157.011 64.928 156.747 65.056 156.507 65.232C156.283 65.392 156.099 65.6 155.955 65.856C155.811 66.096 155.739 66.384 155.739 66.72V75H152.667V57.24ZM171.744 75.288C170.848 75.288 170.04 75.136 169.32 74.832C168.616 74.528 168.008 74.088 167.496 73.512C167 72.936 166.616 72.248 166.344 71.448C166.072 70.632 165.936 69.72 165.936 68.712C165.936 67.704 166.072 66.8 166.344 66C166.616 65.2 167 64.52 167.496 63.96C168.008 63.384 168.616 62.944 169.32 62.64C170.04 62.336 170.848 62.184 171.744 62.184C172.64 62.184 173.448 62.336 174.168 62.64C174.888 62.944 175.496 63.384 175.992 63.96C176.504 64.52 176.896 65.2 177.168 66C177.44 66.8 177.576 67.704 177.576 68.712C177.576 69.72 177.44 70.632 177.168 71.448C176.896 72.248 176.504 72.936 175.992 73.512C175.496 74.088 174.888 74.528 174.168 74.832C173.448 75.136 172.64 75.288 171.744 75.288ZM171.744 72.816C172.56 72.816 173.2 72.568 173.664 72.072C174.128 71.576 174.36 70.848 174.36 69.888V67.56C174.36 66.616 174.128 65.896 173.664 65.4C173.2 64.904 172.56 64.656 171.744 64.656C170.944 64.656 170.312 64.904 169.848 65.4C169.384 65.896 169.152 66.616 169.152 67.56V69.888C169.152 70.848 169.384 71.576 169.848 72.072C170.312 72.568 170.944 72.816 171.744 72.816ZM172.08 61.056L170.232 60.168L172.512 55.68L175.104 56.952L172.08 61.056ZM183.371 75C182.315 75 181.539 74.736 181.043 74.208C180.547 73.68 180.299 72.936 180.299 71.976V57.24H183.371V72.552H185.027V75H183.371ZM196.57 75C195.898 75 195.362 74.808 194.962 74.424C194.578 74.024 194.338 73.496 194.242 72.84H194.098C193.89 73.656 193.466 74.272 192.826 74.688C192.186 75.088 191.394 75.288 190.45 75.288C189.17 75.288 188.186 74.952 187.498 74.28C186.81 73.608 186.466 72.712 186.466 71.592C186.466 70.296 186.93 69.336 187.858 68.712C188.786 68.072 190.106 67.752 191.818 67.752H193.954V66.84C193.954 66.136 193.77 65.592 193.402 65.208C193.034 64.824 192.442 64.632 191.626 64.632C190.906 64.632 190.322 64.792 189.874 65.112C189.442 65.416 189.074 65.784 188.77 66.216L186.946 64.584C187.41 63.864 188.026 63.288 188.794 62.856C189.562 62.408 190.578 62.184 191.842 62.184C193.538 62.184 194.826 62.568 195.706 63.336C196.586 64.104 197.026 65.208 197.026 66.648V72.552H198.274V75H196.57ZM191.482 73.056C192.17 73.056 192.754 72.904 193.234 72.6C193.714 72.296 193.954 71.848 193.954 71.256V69.6H191.986C190.386 69.6 189.586 70.112 189.586 71.136V71.544C189.586 72.056 189.746 72.44 190.066 72.696C190.402 72.936 190.874 73.056 191.482 73.056ZM200.76 57.24H203.832V64.56H203.952C204.208 63.888 204.608 63.328 205.152 62.88C205.712 62.416 206.48 62.184 207.456 62.184C208.752 62.184 209.744 62.608 210.432 63.456C211.12 64.304 211.464 65.512 211.464 67.08V75H208.392V67.392C208.392 66.496 208.232 65.824 207.912 65.376C207.592 64.928 207.064 64.704 206.328 64.704C206.008 64.704 205.696 64.752 205.392 64.848C205.104 64.928 204.84 65.056 204.6 65.232C204.376 65.392 204.192 65.6 204.048 65.856C203.904 66.096 203.832 66.384 203.832 66.72V75H200.76V57.24ZM214.87 75V62.472H217.942V65.064H218.062C218.142 64.728 218.262 64.408 218.422 64.104C218.598 63.784 218.822 63.504 219.094 63.264C219.366 63.024 219.686 62.832 220.054 62.688C220.438 62.544 220.878 62.472 221.374 62.472H222.046V65.376H221.086C220.046 65.376 219.262 65.528 218.734 65.832C218.206 66.136 217.942 66.632 217.942 67.32V75H214.87ZM229.238 75.288C228.31 75.288 227.478 75.136 226.742 74.832C226.022 74.512 225.406 74.072 224.894 73.512C224.398 72.936 224.014 72.248 223.742 71.448C223.47 70.632 223.334 69.72 223.334 68.712C223.334 67.72 223.462 66.824 223.718 66.024C223.99 65.224 224.374 64.544 224.87 63.984C225.366 63.408 225.974 62.968 226.694 62.664C227.414 62.344 228.23 62.184 229.142 62.184C230.118 62.184 230.966 62.352 231.686 62.688C232.406 63.024 232.998 63.48 233.462 64.056C233.926 64.632 234.27 65.304 234.494 66.072C234.734 66.824 234.854 67.632 234.854 68.496V69.504H226.526V69.816C226.526 70.728 226.782 71.464 227.294 72.024C227.806 72.568 228.566 72.84 229.574 72.84C230.342 72.84 230.966 72.68 231.446 72.36C231.942 72.04 232.382 71.632 232.766 71.136L234.422 72.984C233.91 73.704 233.206 74.272 232.31 74.688C231.43 75.088 230.406 75.288 229.238 75.288ZM229.19 64.488C228.374 64.488 227.726 64.76 227.246 65.304C226.766 65.848 226.526 66.552 226.526 67.416V67.608H231.662V67.392C231.662 66.528 231.446 65.832 231.014 65.304C230.598 64.76 229.99 64.488 229.19 64.488ZM237.557 62.472H240.629V64.536H240.725C240.949 63.816 241.373 63.248 241.997 62.832C242.621 62.4 243.349 62.184 244.181 62.184C245.781 62.184 246.997 62.752 247.829 63.888C248.677 65.008 249.101 66.616 249.101 68.712C249.101 70.824 248.677 72.448 247.829 73.584C246.997 74.72 245.781 75.288 244.181 75.288C243.349 75.288 242.621 75.072 241.997 74.64C241.389 74.208 240.965 73.632 240.725 72.912H240.629V79.8H237.557V62.472ZM243.197 72.744C243.997 72.744 244.645 72.48 245.141 71.952C245.637 71.424 245.885 70.712 245.885 69.816V67.656C245.885 66.76 245.637 66.048 245.141 65.52C244.645 64.976 243.997 64.704 243.197 64.704C242.461 64.704 241.845 64.888 241.349 65.256C240.869 65.624 240.629 66.112 240.629 66.72V70.704C240.629 71.36 240.869 71.864 241.349 72.216C241.845 72.568 242.461 72.744 243.197 72.744ZM251.948 62.472H255.02V64.536H255.116C255.34 63.816 255.764 63.248 256.388 62.832C257.012 62.4 257.74 62.184 258.572 62.184C260.172 62.184 261.388 62.752 262.22 63.888C263.068 65.008 263.492 66.616 263.492 68.712C263.492 70.824 263.068 72.448 262.22 73.584C261.388 74.72 260.172 75.288 258.572 75.288C257.74 75.288 257.012 75.072 256.388 74.64C255.78 74.208 255.356 73.632 255.116 72.912H255.02V79.8H251.948V62.472ZM257.588 72.744C258.388 72.744 259.036 72.48 259.532 71.952C260.028 71.424 260.276 70.712 260.276 69.816V67.656C260.276 66.76 260.028 66.048 259.532 65.52C259.036 64.976 258.388 64.704 257.588 64.704C256.852 64.704 256.236 64.888 255.74 65.256C255.26 65.624 255.02 66.112 255.02 66.72V70.704C255.02 71.36 255.26 71.864 255.74 72.216C256.236 72.568 256.852 72.744 257.588 72.744ZM273.827 72.912H273.707C273.595 73.232 273.443 73.536 273.251 73.824C273.075 74.096 272.843 74.344 272.555 74.568C272.283 74.792 271.947 74.968 271.547 75.096C271.163 75.224 270.715 75.288 270.203 75.288C268.907 75.288 267.915 74.864 267.227 74.016C266.539 73.168 266.195 71.96 266.195 70.392V62.472H269.267V70.08C269.267 70.944 269.435 71.608 269.771 72.072C270.107 72.52 270.643 72.744 271.379 72.744C271.683 72.744 271.979 72.704 272.267 72.624C272.571 72.544 272.835 72.424 273.059 72.264C273.283 72.088 273.467 71.88 273.611 71.64C273.755 71.384 273.827 71.088 273.827 70.752V62.472H276.898V75H273.827V72.912ZM280.448 75V62.472H283.52V65.064H283.64C283.72 64.728 283.84 64.408 284 64.104C284.176 63.784 284.4 63.504 284.672 63.264C284.944 63.024 285.264 62.832 285.632 62.688C286.016 62.544 286.456 62.472 286.952 62.472H287.624V65.376H286.664C285.624 65.376 284.84 65.528 284.312 65.832C283.784 66.136 283.52 66.632 283.52 67.32V75H280.448Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57919"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/reykjanesbaer.svg b/libs/application/templates/financial-aid/src/svg/reykjanesbaer.svg deleted file mode 100644 index a51280fdb0d5..000000000000 --- a/libs/application/templates/financial-aid/src/svg/reykjanesbaer.svg +++ /dev/null @@ -1,19 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M59.2816 35.9642C61.3567 35.034 63.5034 35.034 62.7163 35.678C62.1438 36.1073 62.0007 36.6082 62.7878 36.6082C63.6465 36.6798 64.0043 36.322 65.4354 36.322C67.5821 36.2504 69.371 37.1807 67.5821 37.3238C66.5088 37.3953 63.6465 37.6816 65.0776 38.6118C65.8648 39.1843 68.1546 38.5402 70.015 38.8265C72.0902 39.1843 73.6644 41.1163 72.9488 41.9034C72.4479 42.4043 72.3048 41.6172 69.8004 41.3309C60.5696 40.4007 57.4927 47.9857 56.1331 52.2075C53.8433 59.7209 55.5606 63.9427 48.4766 73.4597C52.6984 63.9427 49.4784 59.7925 50.4801 51.0626C51.4104 43.6923 54.9166 37.9678 59.2816 35.9642Z" fill="white"/> -<path d="M52.8429 27.7352C58.2096 36.2504 47.2615 40.5438 48.4064 54.712C44.2561 45.4812 52.7713 37.7531 44.3992 31.0984C43.3259 30.2397 44.113 28.737 45.1148 28.6655C46.045 28.5939 46.689 29.3095 46.689 30.3113C46.689 30.5259 46.689 30.669 46.6175 30.8837C46.9037 30.5975 47.0468 30.3113 47.1184 29.7388C47.2615 28.3792 46.045 27.1628 44.5423 27.1628C43.2543 27.1628 42.181 28.1646 41.9663 29.381C41.2507 28.8086 39.748 27.449 39.748 25.3023C43.2543 22.6547 50.1237 23.8712 52.8429 27.7352Z" fill="white"/> -<path d="M25.1496 40.1145C24.2909 40.2576 24.9349 37.8247 28.2265 37.61C29.8723 37.4669 30.9457 38.1825 32.2337 38.254C33.0208 38.1825 32.8061 37.5385 32.2337 37.1091C31.8043 36.8229 31.375 36.6082 30.5879 36.3936C29.0136 35.9642 32.5199 35.034 34.8097 36.322C38.4591 38.3972 38.7453 43.5492 37.4573 49.7746C35.5968 41.1163 29.5861 39.4705 25.1496 40.1145Z" fill="white"/> -<path d="M38.1728 74.5331C33.8794 64.5152 40.1048 50.2039 41.3928 40.0429C41.8937 35.9642 38.5305 33.6029 35.6683 31.0984C30.8025 26.9481 24.9348 22.6547 24.8633 21.6529C26.0082 20.9374 37.4572 25.517 38.459 25.8748C38.7452 28.5939 40.0332 29.381 40.8203 30.3113C42.8239 32.1717 44.8991 34.8193 44.4697 38.1109C42.4661 52.6368 36.8132 73.2451 55.0601 81.6172C52.1262 82.9052 42.8239 84.6225 38.1728 74.5331Z" fill="white"/> -<path d="M69.8005 61.653C69.7289 61.5814 69.8005 61.5098 69.8005 61.4383C70.6592 59.5778 68.1547 56.9302 64.1475 63.0841C62.0009 66.3757 55.3461 73.8175 51.0527 75.5349C58.2084 70.3828 58.5662 66.5903 62.0724 60.0787C64.4338 55.5707 66.008 53.424 69.1565 53.424C70.9454 53.424 71.661 54.9982 71.017 54.8551C69.5143 54.4973 68.7987 55.4991 69.5858 55.7853C70.7307 56.2862 71.5894 56.7156 71.9472 57.8605C72.7343 60.7227 70.0867 61.8676 69.8005 61.653Z" fill="white"/> -<path d="M72.2336 52.4938C71.8758 52.5653 71.8758 52.0644 71.8758 51.7782C71.9474 49.7746 65.2211 48.7728 61.2139 56.2862C58.8526 60.7227 56.7059 69.6673 49.6934 74.7478C56.0619 67.7353 55.3463 63.4419 57.7792 54.9982C59.425 49.3453 62.7166 45.6243 65.5789 44.551C66.7953 44.0501 67.5824 44.1932 68.298 44.2648C69.5145 44.4079 70.5163 45.3381 69.4429 45.195C67.7256 45.0519 65.9367 45.7675 67.3678 46.3399C68.8705 46.9839 70.9456 46.1252 72.7345 47.771C74.4519 49.3453 73.6647 52.2791 72.2336 52.4938Z" fill="white"/> -<path d="M20.9996 16V53.3524C20.9996 53.3524 20.284 69.5241 32.9495 82.2612C45.6149 94.9267 48.4772 96 48.4772 96C48.4772 96 51.2679 94.9267 63.9334 82.2612C76.5988 69.5957 75.8833 53.3524 75.8833 53.3524V16H20.9996Z" fill="#0260AA"/> -<path d="M49.7656 74.7478C56.1341 67.7353 55.4186 63.4419 57.8515 54.9982C59.4973 49.3453 62.7889 45.6243 65.6511 44.551C66.8676 44.0501 67.6547 44.1932 68.3703 44.2648C69.5867 44.4079 70.5885 45.3381 69.5152 45.195C67.7978 45.0519 66.0089 45.7675 67.44 46.3399C68.9427 46.9839 71.0179 46.1252 72.8068 47.771C74.5241 49.2737 73.6654 52.2075 72.2343 52.4938C71.8765 52.5653 71.8765 52.0644 71.8765 51.7782C71.9481 49.7746 65.2218 48.7728 61.2146 56.2862C58.8533 60.7227 56.7066 69.6673 49.7656 74.7478Z" fill="white"/> -<path d="M44.4695 31.0984C43.3962 30.2397 44.1833 28.737 45.1851 28.6655C46.1153 28.5939 46.7593 29.3095 46.7593 30.3113C46.7593 30.5259 46.7593 30.6691 46.6878 30.8837C46.974 30.5975 47.1171 30.3113 47.1887 29.7388C47.3318 28.3793 46.1153 27.1628 44.6126 27.1628C43.3246 27.1628 42.2513 28.1646 42.0366 29.381C41.321 28.8086 39.8184 27.449 39.8184 25.3023C43.1815 22.7263 50.0509 23.9428 52.7701 27.8068C58.1368 36.322 47.1887 40.6154 48.3336 54.7835C44.3264 45.4097 52.8416 37.7531 44.4695 31.0984Z" fill="white"/> -<path d="M40.8919 30.2397C42.8955 32.1002 44.9706 34.7478 44.5413 38.0393C42.4661 52.6368 36.8132 73.2451 55.0601 81.6172C52.1262 82.9052 42.8239 84.6941 38.1728 74.5331C33.8794 64.5152 40.1048 50.2039 41.3928 40.0429C41.8937 35.9642 38.5305 33.6029 35.6683 31.0984C30.8025 26.9481 24.9348 22.6547 24.8633 21.6529C26.0082 20.9374 37.4572 25.517 38.459 25.8748C38.8168 28.5939 40.0332 29.3095 40.8919 30.2397Z" fill="white"/> -<path d="M37.385 49.7746C38.673 43.5492 38.3868 38.3972 34.7374 36.322C32.5192 35.034 28.9414 35.9642 30.5156 36.3936C31.3027 36.6082 31.7321 36.8229 32.1614 37.1091C32.8054 37.5385 33.0201 38.1825 32.1614 38.254C30.9449 38.1825 29.8716 37.4669 28.1542 37.61C24.8627 37.8247 24.2186 40.2576 25.0773 40.1145C29.5854 39.4705 35.5961 41.1163 37.385 49.7746Z" fill="white"/> -<path d="M35.8826 56.2147C36.5981 48.8444 33.0203 44.4079 29.5856 43.1199C28.226 42.619 26.5803 42.8336 26.0078 43.1914C25.2207 43.6208 26.938 43.6923 27.6536 43.9786C28.7269 44.4079 28.7985 45.2666 28.0829 45.195C27.8683 45.195 25.3638 44.4079 24.0042 45.7675C22.5731 47.1986 23.3602 49.7031 24.2904 50.2755C24.7913 50.5617 24.7198 50.3471 24.6482 49.8462C24.5051 48.9159 24.9345 48.415 25.2922 48.1288C27.7967 46.483 33.3781 49.6315 35.8826 56.2147Z" fill="white"/> -<path d="M51.0527 75.6064C58.2084 70.4544 58.5662 66.6619 62.0724 60.1503C64.4338 55.6422 66.008 53.4955 69.1565 53.4955C70.9454 53.4955 71.661 55.0698 71.017 54.9266C69.5143 54.5689 68.7987 55.5706 69.5858 55.8569C70.7307 56.3578 71.5894 56.7871 71.9472 57.932C72.7343 60.6511 70.0867 61.8676 69.8005 61.6529C69.7289 61.5814 69.8005 61.5098 69.8005 61.4383C70.6592 59.5062 68.1547 56.9302 64.1475 63.0841C62.0009 66.3757 55.3461 73.8175 51.0527 75.6064Z" fill="white"/> -<path d="M48.4766 73.5313C52.6984 64.0143 49.4784 59.864 50.4801 51.1342C51.3388 43.6207 54.8451 37.9678 59.21 35.9642C61.2851 35.034 63.4318 35.034 62.6447 35.6064C62.0723 36.0358 61.9292 36.5367 62.7163 36.5367C63.575 36.5367 63.9327 36.2504 65.3639 36.2504C67.5105 36.1789 69.2995 37.1091 67.5105 37.2522C66.4372 37.3238 63.575 37.61 65.0061 38.5402C65.7932 39.1127 68.083 38.4687 69.9435 38.7549C72.0186 39.1127 73.5928 41.0447 72.8773 41.8318C72.3764 42.3327 72.2333 41.5456 69.7288 41.2594C60.498 40.3291 57.4211 47.9141 56.0615 52.1359C53.8433 59.7209 55.5606 64.0143 48.4766 73.5313Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M101.136 75H97.968V58.248H105.528C106.296 58.248 106.984 58.368 107.592 58.608C108.2 58.848 108.712 59.2 109.128 59.664C109.56 60.112 109.888 60.656 110.112 61.296C110.352 61.936 110.472 62.648 110.472 63.432C110.472 64.584 110.208 65.576 109.68 66.408C109.168 67.24 108.392 67.832 107.352 68.184L110.784 75H107.256L104.136 68.544H101.136V75ZM105.216 65.88C105.824 65.88 106.304 65.72 106.656 65.4C107.008 65.064 107.184 64.592 107.184 63.984V62.88C107.184 62.272 107.008 61.808 106.656 61.488C106.304 61.168 105.824 61.008 105.216 61.008H101.136V65.88H105.216ZM118.426 75.288C117.498 75.288 116.666 75.136 115.93 74.832C115.21 74.512 114.594 74.072 114.082 73.512C113.586 72.936 113.202 72.248 112.93 71.448C112.658 70.632 112.522 69.72 112.522 68.712C112.522 67.72 112.65 66.824 112.906 66.024C113.178 65.224 113.562 64.544 114.058 63.984C114.554 63.408 115.162 62.968 115.882 62.664C116.602 62.344 117.418 62.184 118.33 62.184C119.306 62.184 120.154 62.352 120.874 62.688C121.594 63.024 122.186 63.48 122.65 64.056C123.114 64.632 123.458 65.304 123.682 66.072C123.922 66.824 124.042 67.632 124.042 68.496V69.504H115.714V69.816C115.714 70.728 115.97 71.464 116.482 72.024C116.994 72.568 117.754 72.84 118.762 72.84C119.53 72.84 120.154 72.68 120.634 72.36C121.13 72.04 121.57 71.632 121.954 71.136L123.61 72.984C123.098 73.704 122.394 74.272 121.498 74.688C120.618 75.088 119.594 75.288 118.426 75.288ZM118.378 64.488C117.562 64.488 116.914 64.76 116.434 65.304C115.954 65.848 115.714 66.552 115.714 67.416V67.608H120.85V67.392C120.85 66.528 120.634 65.832 120.202 65.304C119.786 64.76 119.178 64.488 118.378 64.488ZM134.284 62.472H137.164L132.124 77.232C131.964 77.68 131.78 78.064 131.572 78.384C131.38 78.72 131.148 78.992 130.876 79.2C130.604 79.408 130.276 79.56 129.892 79.656C129.508 79.752 129.06 79.8 128.548 79.8H126.7V77.352H128.956L129.532 75.6L125.044 62.472H128.092L130.276 69.096L131.092 72.264H131.236L132.1 69.096L134.284 62.472ZM139.19 57.24H142.262V67.944H142.382L144.038 65.688L146.846 62.472H150.326L146.006 67.32L150.782 75H147.134L143.918 69.384L142.262 71.184V75H139.19V57.24ZM152.667 62.472H155.739V76.512C155.739 77.568 155.475 78.376 154.947 78.936C154.419 79.512 153.579 79.8 152.427 79.8H150.747V77.352H152.667V62.472ZM154.203 60.648C153.563 60.648 153.099 60.504 152.811 60.216C152.539 59.928 152.403 59.56 152.403 59.112V58.632C152.403 58.184 152.539 57.816 152.811 57.528C153.099 57.24 153.563 57.096 154.203 57.096C154.827 57.096 155.283 57.24 155.571 57.528C155.859 57.816 156.003 58.184 156.003 58.632V59.112C156.003 59.56 155.859 59.928 155.571 60.216C155.283 60.504 154.827 60.648 154.203 60.648ZM168.515 75C167.843 75 167.307 74.808 166.907 74.424C166.523 74.024 166.283 73.496 166.187 72.84H166.043C165.835 73.656 165.411 74.272 164.771 74.688C164.131 75.088 163.339 75.288 162.395 75.288C161.115 75.288 160.131 74.952 159.443 74.28C158.755 73.608 158.411 72.712 158.411 71.592C158.411 70.296 158.875 69.336 159.803 68.712C160.731 68.072 162.051 67.752 163.763 67.752H165.899V66.84C165.899 66.136 165.715 65.592 165.347 65.208C164.979 64.824 164.387 64.632 163.571 64.632C162.851 64.632 162.267 64.792 161.819 65.112C161.387 65.416 161.019 65.784 160.715 66.216L158.891 64.584C159.355 63.864 159.971 63.288 160.739 62.856C161.507 62.408 162.523 62.184 163.787 62.184C165.483 62.184 166.771 62.568 167.651 63.336C168.531 64.104 168.971 65.208 168.971 66.648V72.552H170.219V75H168.515ZM163.427 73.056C164.115 73.056 164.699 72.904 165.179 72.6C165.659 72.296 165.899 71.848 165.899 71.256V69.6H163.931C162.331 69.6 161.531 70.112 161.531 71.136V71.544C161.531 72.056 161.691 72.44 162.011 72.696C162.347 72.936 162.819 73.056 163.427 73.056ZM172.706 75V62.472H175.778V64.56H175.898C176.154 63.888 176.554 63.328 177.098 62.88C177.658 62.416 178.426 62.184 179.402 62.184C180.698 62.184 181.69 62.608 182.378 63.456C183.066 64.304 183.41 65.512 183.41 67.08V75H180.338V67.392C180.338 66.496 180.178 65.824 179.858 65.376C179.538 64.928 179.01 64.704 178.274 64.704C177.954 64.704 177.642 64.752 177.338 64.848C177.05 64.928 176.786 65.056 176.546 65.232C176.322 65.392 176.138 65.6 175.994 65.856C175.85 66.096 175.778 66.384 175.778 66.72V75H172.706ZM191.879 75.288C190.951 75.288 190.119 75.136 189.383 74.832C188.663 74.512 188.047 74.072 187.535 73.512C187.039 72.936 186.655 72.248 186.383 71.448C186.111 70.632 185.975 69.72 185.975 68.712C185.975 67.72 186.103 66.824 186.359 66.024C186.631 65.224 187.015 64.544 187.511 63.984C188.007 63.408 188.615 62.968 189.335 62.664C190.055 62.344 190.871 62.184 191.783 62.184C192.759 62.184 193.607 62.352 194.327 62.688C195.047 63.024 195.639 63.48 196.103 64.056C196.567 64.632 196.911 65.304 197.135 66.072C197.375 66.824 197.495 67.632 197.495 68.496V69.504H189.167V69.816C189.167 70.728 189.423 71.464 189.935 72.024C190.447 72.568 191.207 72.84 192.215 72.84C192.983 72.84 193.607 72.68 194.087 72.36C194.583 72.04 195.023 71.632 195.407 71.136L197.063 72.984C196.551 73.704 195.847 74.272 194.951 74.688C194.071 75.088 193.047 75.288 191.879 75.288ZM191.831 64.488C191.015 64.488 190.367 64.76 189.887 65.304C189.407 65.848 189.167 66.552 189.167 67.416V67.608H194.303V67.392C194.303 66.528 194.087 65.832 193.655 65.304C193.239 64.76 192.631 64.488 191.831 64.488ZM204.302 75.288C203.102 75.288 202.094 75.088 201.278 74.688C200.462 74.272 199.742 73.704 199.118 72.984L200.99 71.16C201.454 71.688 201.958 72.104 202.502 72.408C203.062 72.712 203.702 72.864 204.422 72.864C205.158 72.864 205.686 72.736 206.006 72.48C206.342 72.224 206.51 71.872 206.51 71.424C206.51 71.056 206.39 70.768 206.15 70.56C205.926 70.336 205.534 70.184 204.974 70.104L203.726 69.936C202.366 69.76 201.326 69.376 200.606 68.784C199.902 68.176 199.55 67.296 199.55 66.144C199.55 65.536 199.662 64.992 199.886 64.512C200.11 64.016 200.43 63.6 200.846 63.264C201.262 62.912 201.758 62.648 202.334 62.472C202.926 62.28 203.582 62.184 204.302 62.184C204.91 62.184 205.446 62.232 205.91 62.328C206.39 62.408 206.822 62.536 207.206 62.712C207.59 62.872 207.942 63.08 208.262 63.336C208.582 63.576 208.894 63.848 209.198 64.152L207.398 65.952C207.03 65.568 206.59 65.248 206.078 64.992C205.566 64.736 205.006 64.608 204.398 64.608C203.726 64.608 203.238 64.728 202.934 64.968C202.646 65.208 202.502 65.52 202.502 65.904C202.502 66.32 202.622 66.64 202.862 66.864C203.118 67.072 203.542 67.224 204.134 67.32L205.406 67.488C208.11 67.872 209.462 69.104 209.462 71.184C209.462 71.792 209.334 72.352 209.078 72.864C208.838 73.36 208.494 73.792 208.046 74.16C207.598 74.512 207.054 74.792 206.414 75C205.79 75.192 205.086 75.288 204.302 75.288ZM212.174 57.24H215.246V64.536H215.342C215.566 63.816 215.99 63.248 216.614 62.832C217.238 62.4 217.966 62.184 218.798 62.184C220.398 62.184 221.614 62.752 222.446 63.888C223.294 65.008 223.718 66.616 223.718 68.712C223.718 70.824 223.294 72.448 222.446 73.584C221.614 74.72 220.398 75.288 218.798 75.288C217.966 75.288 217.238 75.072 216.614 74.64C216.006 74.208 215.582 73.632 215.342 72.912H215.246V75H212.174V57.24ZM217.814 72.744C218.614 72.744 219.262 72.48 219.758 71.952C220.254 71.424 220.502 70.712 220.502 69.816V67.656C220.502 66.76 220.254 66.048 219.758 65.52C219.262 64.976 218.614 64.704 217.814 64.704C217.078 64.704 216.462 64.888 215.966 65.256C215.486 65.624 215.246 66.112 215.246 66.72V70.704C215.246 71.36 215.486 71.864 215.966 72.216C216.462 72.568 217.078 72.744 217.814 72.744ZM231.197 69.504C230.429 69.52 229.837 69.664 229.421 69.936C229.005 70.192 228.797 70.576 228.797 71.088V71.472C228.797 71.984 228.957 72.376 229.277 72.648C229.597 72.92 230.077 73.056 230.717 73.056C231.389 73.056 231.965 72.904 232.445 72.6C232.925 72.296 233.165 71.848 233.165 71.256V69.504H231.197ZM241.397 67.608V67.392C241.397 66.528 241.181 65.832 240.749 65.304C240.333 64.76 239.725 64.488 238.925 64.488C238.109 64.488 237.461 64.76 236.981 65.304C236.501 65.848 236.261 66.552 236.261 67.416V67.608H241.397ZM239.357 72.792C240.109 72.792 240.741 72.632 241.253 72.312C241.765 71.992 242.197 71.6 242.549 71.136L244.205 72.984C243.693 73.704 242.997 74.272 242.117 74.688C241.237 75.088 240.229 75.288 239.093 75.288C238.485 75.288 237.917 75.216 237.389 75.072C236.861 74.928 236.389 74.736 235.973 74.496C235.573 74.256 235.229 73.984 234.941 73.68C234.653 73.376 234.437 73.056 234.293 72.72H234.149C234.037 73.04 233.861 73.352 233.621 73.656C233.397 73.96 233.101 74.232 232.733 74.472C232.365 74.712 231.925 74.904 231.413 75.048C230.917 75.208 230.333 75.288 229.661 75.288C228.397 75.288 227.413 74.944 226.709 74.256C226.021 73.568 225.677 72.672 225.677 71.568C225.677 70.912 225.805 70.336 226.061 69.84C226.317 69.344 226.677 68.936 227.141 68.616C227.605 68.28 228.165 68.032 228.821 67.872C229.477 67.696 230.213 67.608 231.029 67.608H233.165V66.84C233.165 66.136 232.981 65.592 232.613 65.208C232.245 64.824 231.661 64.632 230.861 64.632C230.125 64.632 229.533 64.784 229.085 65.088C228.653 65.392 228.285 65.768 227.981 66.216L226.157 64.584C226.621 63.864 227.237 63.288 228.005 62.856C228.773 62.408 229.789 62.184 231.053 62.184C232.013 62.184 232.781 62.384 233.357 62.784C233.933 63.168 234.381 63.656 234.701 64.248H234.845C235.165 63.656 235.685 63.168 236.405 62.784C237.125 62.384 237.989 62.184 238.997 62.184C239.973 62.184 240.813 62.352 241.517 62.688C242.221 63.024 242.797 63.48 243.245 64.056C243.709 64.632 244.045 65.304 244.253 66.072C244.477 66.824 244.589 67.632 244.589 68.496V69.504H236.237V69.816C236.237 70.712 236.509 71.432 237.053 71.976C237.597 72.52 238.365 72.792 239.357 72.792ZM247.307 75V62.472H250.379V65.064H250.499C250.579 64.728 250.699 64.408 250.859 64.104C251.035 63.784 251.259 63.504 251.531 63.264C251.803 63.024 252.123 62.832 252.491 62.688C252.875 62.544 253.315 62.472 253.811 62.472H254.483V65.376H253.523C252.483 65.376 251.699 65.528 251.171 65.832C250.643 66.136 250.379 66.632 250.379 67.32V75H247.307Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/sambandid.svg b/libs/application/templates/financial-aid/src/svg/sambandid.svg deleted file mode 100644 index a88407920cb4..000000000000 --- a/libs/application/templates/financial-aid/src/svg/sambandid.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M61.8929 35.5807L47.933 22L34.097 35.5172V42.0933H27.5709L14 56.0678L27.5089 69.9225H34.097V76.4193L48.0526 90L61.8929 76.4842V69.9211H68.4349L82 55.9466L68.4911 42.0933H61.8915V35.5807H61.8929ZM37.5956 69.9225V74.9408L48.0483 85.1115L58.3943 75.0072V69.9225H50.7529V62.2227H45.2471V69.9225H37.5956V69.9225ZM41.7484 62.2227V66.4203H37.5956V62.2227H41.7484ZM41.7484 58.7219H34.097V66.4203H28.9816L18.8834 56.0635L29.0493 45.5942H34.097V53.2738H41.7484V58.7219ZM45.2471 58.7219H50.7529V53.2723H45.2471V58.7205V58.7219ZM45.2471 49.7715H50.7529V42.0933H58.3943V37.0592L47.9373 26.8899L37.5956 36.9943V42.0948H45.2471V49.7729V49.7715ZM37.5956 45.5942V49.7715H41.7484V45.5942H37.5956ZM54.253 66.4203H58.3943V62.2227H54.2516V66.4203H54.253ZM61.8929 58.7219V66.4203H66.955L77.1166 55.9524L67.017 45.5956H61.8929V53.2738H54.2516V58.7219H61.8929V58.7219ZM54.2516 49.7715V45.5942H58.3943V49.7715H54.2516Z" fill="#153C68"/> -<path d="M97.148 33V23.228H98.996V25.006H101.544C101.992 25.006 102.393 25.0807 102.748 25.23C103.112 25.3793 103.42 25.5893 103.672 25.86C103.924 26.1213 104.115 26.4387 104.246 26.812C104.377 27.176 104.442 27.582 104.442 28.03C104.442 28.478 104.377 28.8887 104.246 29.262C104.115 29.6353 103.924 29.9573 103.672 30.228C103.42 30.4893 103.112 30.6947 102.748 30.844C102.393 30.9933 101.992 31.068 101.544 31.068H98.996V33H97.148ZM98.996 29.444H101.376C101.731 29.444 102.011 29.3507 102.216 29.164C102.421 28.9773 102.524 28.7067 102.524 28.352V27.708C102.524 27.3533 102.421 27.0827 102.216 26.896C102.011 26.7093 101.731 26.616 101.376 26.616H98.996V29.444ZM106.005 25.692H107.797V33.882C107.797 34.498 107.643 34.9693 107.335 35.296C107.027 35.632 106.537 35.8 105.865 35.8H104.885V34.372H106.005V25.692ZM106.901 24.628C106.527 24.628 106.257 24.544 106.089 24.376C105.93 24.208 105.851 23.9933 105.851 23.732V23.452C105.851 23.1907 105.93 22.976 106.089 22.808C106.257 22.64 106.527 22.556 106.901 22.556C107.265 22.556 107.531 22.64 107.699 22.808C107.867 22.976 107.951 23.1907 107.951 23.452V23.732C107.951 23.9933 107.867 24.208 107.699 24.376C107.531 24.544 107.265 24.628 106.901 24.628ZM112.772 33.168C112.249 33.168 111.778 33.0793 111.358 32.902C110.947 32.7247 110.593 32.468 110.294 32.132C110.005 31.796 109.781 31.3947 109.622 30.928C109.463 30.452 109.384 29.92 109.384 29.332C109.384 28.744 109.463 28.2167 109.622 27.75C109.781 27.2833 110.005 26.8867 110.294 26.56C110.593 26.224 110.947 25.9673 111.358 25.79C111.778 25.6127 112.249 25.524 112.772 25.524C113.295 25.524 113.766 25.6127 114.186 25.79C114.606 25.9673 114.961 26.224 115.25 26.56C115.549 26.8867 115.777 27.2833 115.936 27.75C116.095 28.2167 116.174 28.744 116.174 29.332C116.174 29.92 116.095 30.452 115.936 30.928C115.777 31.3947 115.549 31.796 115.25 32.132C114.961 32.468 114.606 32.7247 114.186 32.902C113.766 33.0793 113.295 33.168 112.772 33.168ZM112.772 31.726C113.248 31.726 113.621 31.5813 113.892 31.292C114.163 31.0027 114.298 30.578 114.298 30.018V28.66C114.298 28.1093 114.163 27.6893 113.892 27.4C113.621 27.1107 113.248 26.966 112.772 26.966C112.305 26.966 111.937 27.1107 111.666 27.4C111.395 27.6893 111.26 28.1093 111.26 28.66V30.018C111.26 30.578 111.395 31.0027 111.666 31.292C111.937 31.5813 112.305 31.726 112.772 31.726ZM112.968 24.866L111.89 24.348L113.22 21.73L114.732 22.472L112.968 24.866ZM117.763 33V25.692H119.555V26.91H119.625C119.774 26.518 120.007 26.1913 120.325 25.93C120.651 25.6593 121.099 25.524 121.669 25.524C122.425 25.524 123.003 25.7713 123.405 26.266C123.806 26.7607 124.007 27.4653 124.007 28.38V33H122.215V28.562C122.215 28.0393 122.121 27.6473 121.935 27.386C121.748 27.1247 121.44 26.994 121.011 26.994C120.824 26.994 120.642 27.022 120.465 27.078C120.297 27.1247 120.143 27.1993 120.003 27.302C119.872 27.3953 119.765 27.5167 119.681 27.666C119.597 27.806 119.555 27.974 119.555 28.17V33H117.763ZM130.361 31.782H130.291C130.226 31.9687 130.137 32.146 130.025 32.314C129.922 32.4727 129.787 32.6173 129.619 32.748C129.46 32.8787 129.264 32.9813 129.031 33.056C128.807 33.1307 128.546 33.168 128.247 33.168C127.491 33.168 126.912 32.9207 126.511 32.426C126.11 31.9313 125.909 31.2267 125.909 30.312V25.692H127.701V30.13C127.701 30.634 127.799 31.0213 127.995 31.292C128.191 31.5533 128.504 31.684 128.933 31.684C129.11 31.684 129.283 31.6607 129.451 31.614C129.628 31.5673 129.782 31.4973 129.913 31.404C130.044 31.3013 130.151 31.18 130.235 31.04C130.319 30.8907 130.361 30.718 130.361 30.522V25.692H132.153V33H130.361V31.782ZM136.618 33.168C135.918 33.168 135.33 33.0513 134.854 32.818C134.378 32.5753 133.958 32.244 133.594 31.824L134.686 30.76C134.956 31.068 135.25 31.3107 135.568 31.488C135.894 31.6653 136.268 31.754 136.688 31.754C137.117 31.754 137.425 31.6793 137.612 31.53C137.808 31.3807 137.906 31.1753 137.906 30.914C137.906 30.6993 137.836 30.5313 137.696 30.41C137.565 30.2793 137.336 30.1907 137.01 30.144L136.282 30.046C135.488 29.9433 134.882 29.7193 134.462 29.374C134.051 29.0193 133.846 28.506 133.846 27.834C133.846 27.4793 133.911 27.162 134.042 26.882C134.172 26.5927 134.359 26.35 134.602 26.154C134.844 25.9487 135.134 25.7947 135.47 25.692C135.815 25.58 136.198 25.524 136.618 25.524C136.972 25.524 137.285 25.552 137.556 25.608C137.836 25.6547 138.088 25.7293 138.312 25.832C138.536 25.9253 138.741 26.0467 138.928 26.196C139.114 26.336 139.296 26.4947 139.474 26.672L138.424 27.722C138.209 27.498 137.952 27.3113 137.654 27.162C137.355 27.0127 137.028 26.938 136.674 26.938C136.282 26.938 135.997 27.008 135.82 27.148C135.652 27.288 135.568 27.47 135.568 27.694C135.568 27.9367 135.638 28.1233 135.778 28.254C135.927 28.3753 136.174 28.464 136.52 28.52L137.262 28.618C138.839 28.842 139.628 29.5607 139.628 30.774C139.628 31.1287 139.553 31.4553 139.404 31.754C139.264 32.0433 139.063 32.2953 138.802 32.51C138.54 32.7153 138.223 32.8787 137.85 33C137.486 33.112 137.075 33.168 136.618 33.168ZM143.382 33C142.766 33 142.295 32.8413 141.968 32.524C141.651 32.1973 141.492 31.7353 141.492 31.138V27.12H140.414V25.692H140.974C141.245 25.692 141.427 25.6313 141.52 25.51C141.623 25.3793 141.674 25.188 141.674 24.936V23.69H143.284V25.692H144.782V27.12H143.284V31.572H144.67V33H143.382ZM150.705 31.782H150.635C150.569 31.9687 150.481 32.146 150.369 32.314C150.266 32.4727 150.131 32.6173 149.963 32.748C149.804 32.8787 149.608 32.9813 149.375 33.056C149.151 33.1307 148.889 33.168 148.591 33.168C147.835 33.168 147.256 32.9207 146.855 32.426C146.453 31.9313 146.253 31.2267 146.253 30.312V25.692H148.045V30.13C148.045 30.634 148.143 31.0213 148.339 31.292C148.535 31.5533 148.847 31.684 149.277 31.684C149.454 31.684 149.627 31.6607 149.795 31.614C149.972 31.5673 150.126 31.4973 150.257 31.404C150.387 31.3013 150.495 31.18 150.579 31.04C150.663 30.8907 150.705 30.718 150.705 30.522V25.692H152.497V33H150.705V31.782ZM159.943 33C159.551 33 159.239 32.888 159.005 32.664C158.781 32.4307 158.641 32.1227 158.585 31.74H158.501C158.38 32.216 158.133 32.5753 157.759 32.818C157.386 33.0513 156.924 33.168 156.373 33.168C155.627 33.168 155.053 32.972 154.651 32.58C154.25 32.188 154.049 31.6653 154.049 31.012C154.049 30.256 154.32 29.696 154.861 29.332C155.403 28.9587 156.173 28.772 157.171 28.772H158.417V28.24C158.417 27.8293 158.31 27.512 158.095 27.288C157.881 27.064 157.535 26.952 157.059 26.952C156.639 26.952 156.299 27.0453 156.037 27.232C155.785 27.4093 155.571 27.624 155.393 27.876L154.329 26.924C154.6 26.504 154.959 26.168 155.407 25.916C155.855 25.6547 156.448 25.524 157.185 25.524C158.175 25.524 158.926 25.748 159.439 26.196C159.953 26.644 160.209 27.288 160.209 28.128V31.572H160.937V33H159.943ZM156.975 31.866C157.377 31.866 157.717 31.7773 157.997 31.6C158.277 31.4227 158.417 31.1613 158.417 30.816V29.85H157.269C156.336 29.85 155.869 30.1487 155.869 30.746V30.984C155.869 31.2827 155.963 31.5067 156.149 31.656C156.345 31.796 156.621 31.866 156.975 31.866ZM167.806 23.214L166.77 23.886C167.414 24.558 167.932 25.3327 168.324 26.21C168.716 27.0873 168.912 28.0627 168.912 29.136C168.912 29.8267 168.828 30.4287 168.66 30.942C168.492 31.446 168.254 31.866 167.946 32.202C167.647 32.5287 167.288 32.7713 166.868 32.93C166.448 33.0887 165.981 33.168 165.468 33.168C164.917 33.168 164.422 33.084 163.984 32.916C163.554 32.7387 163.186 32.4913 162.878 32.174C162.579 31.8567 162.35 31.4693 162.192 31.012C162.033 30.5547 161.954 30.046 161.954 29.486C161.954 28.9633 162.019 28.4873 162.15 28.058C162.29 27.6287 162.486 27.26 162.738 26.952C162.99 26.644 163.293 26.406 163.648 26.238C164.012 26.07 164.413 25.986 164.852 25.986C165.356 25.986 165.776 26.112 166.112 26.364C166.457 26.6067 166.728 26.938 166.924 27.358L167.008 27.316C166.896 26.84 166.695 26.3873 166.406 25.958C166.126 25.5287 165.785 25.118 165.384 24.726L164.18 25.482L163.536 24.712L164.628 24.054C164.301 23.7833 163.956 23.5313 163.592 23.298C163.237 23.0647 162.878 22.8453 162.514 22.64H165.244C165.374 22.7147 165.5 22.8033 165.622 22.906C165.743 22.9993 165.869 23.0973 166 23.2L167.176 22.458L167.806 23.214ZM165.44 31.796C165.934 31.796 166.326 31.6373 166.616 31.32C166.905 31.0027 167.05 30.5593 167.05 29.99V29.178C167.05 28.6087 166.905 28.1653 166.616 27.848C166.326 27.5307 165.934 27.372 165.44 27.372C164.936 27.372 164.539 27.5307 164.25 27.848C163.96 28.1653 163.816 28.6087 163.816 29.178V29.99C163.816 30.5593 163.96 31.0027 164.25 31.32C164.539 31.6373 164.936 31.796 165.44 31.796ZM171.528 24.628C171.154 24.628 170.884 24.544 170.716 24.376C170.557 24.208 170.478 23.9933 170.478 23.732V23.452C170.478 23.1907 170.557 22.976 170.716 22.808C170.884 22.64 171.154 22.556 171.528 22.556C171.892 22.556 172.158 22.64 172.326 22.808C172.494 22.976 172.578 23.1907 172.578 23.452V23.732C172.578 23.9933 172.494 24.208 172.326 24.376C172.158 24.544 171.892 24.628 171.528 24.628ZM170.632 25.692H172.424V33H170.632V25.692ZM176.293 33C175.677 33 175.224 32.846 174.935 32.538C174.646 32.23 174.501 31.796 174.501 31.236V22.64H176.293V31.572H177.259V33H176.293ZM179.512 24.628C179.139 24.628 178.868 24.544 178.7 24.376C178.541 24.208 178.462 23.9933 178.462 23.732V23.452C178.462 23.1907 178.541 22.976 178.7 22.808C178.868 22.64 179.139 22.556 179.512 22.556C179.876 22.556 180.142 22.64 180.31 22.808C180.478 22.976 180.562 23.1907 180.562 23.452V23.732C180.562 23.9933 180.478 24.208 180.31 24.376C180.142 24.544 179.876 24.628 179.512 24.628ZM178.616 25.692H180.408V33H178.616V25.692Z" fill="#421C63"/> -<path d="M198 21.75C194.554 21.75 191.75 24.5538 191.75 28C191.75 31.4462 194.554 34.25 198 34.25C201.446 34.25 204.25 31.4462 204.25 28C204.25 24.5538 201.446 21.75 198 21.75ZM198 24.3125V24.3125C198.449 24.3125 198.812 24.6763 198.812 25.125C198.813 25.5737 198.449 25.9375 198 25.9375C197.551 25.9375 197.188 25.5737 197.188 25.125V25.125C197.187 24.6763 197.551 24.3125 198 24.3125C198 24.3125 198 24.3125 198 24.3125V24.3125ZM199.5 31.375H196.75V31.375C196.474 31.375 196.25 31.1511 196.25 30.875C196.25 30.5989 196.474 30.375 196.75 30.375H197.625V27.625H197.125V27.625C196.849 27.625 196.625 27.4011 196.625 27.125C196.625 26.8489 196.849 26.625 197.125 26.625H198.125V26.625C198.401 26.625 198.625 26.8489 198.625 27.125V30.375H199.5V30.375C199.776 30.375 200 30.5989 200 30.875C200 31.1511 199.776 31.375 199.5 31.375V31.375Z" fill="#C3ABD9"/> -<path d="M102.578 61.264C101.258 61.264 100.136 61.0293 99.212 60.56C98.3027 60.0907 97.518 59.4747 96.858 58.712L98.816 56.82C99.344 57.436 99.9307 57.9053 100.576 58.228C101.236 58.5507 101.962 58.712 102.754 58.712C103.649 58.712 104.323 58.5213 104.778 58.14C105.233 57.744 105.46 57.216 105.46 56.556C105.46 56.0427 105.313 55.6247 105.02 55.302C104.727 54.9793 104.177 54.7447 103.37 54.598L101.918 54.378C98.8527 53.894 97.32 52.4053 97.32 49.912C97.32 49.2227 97.4447 48.5993 97.694 48.042C97.958 47.4847 98.332 47.008 98.816 46.612C99.3 46.216 99.8793 45.9153 100.554 45.71C101.243 45.49 102.021 45.38 102.886 45.38C104.045 45.38 105.057 45.5707 105.922 45.952C106.787 46.3333 107.528 46.898 108.144 47.646L106.164 49.516C105.783 49.0467 105.321 48.6653 104.778 48.372C104.235 48.0787 103.553 47.932 102.732 47.932C101.896 47.932 101.265 48.0933 100.84 48.416C100.429 48.724 100.224 49.164 100.224 49.736C100.224 50.3227 100.393 50.7553 100.73 51.034C101.067 51.3127 101.61 51.518 102.358 51.65L103.788 51.914C105.343 52.1927 106.487 52.6913 107.22 53.41C107.968 54.114 108.342 55.104 108.342 56.38C108.342 57.1133 108.21 57.7807 107.946 58.382C107.697 58.9687 107.323 59.482 106.824 59.922C106.34 60.3473 105.739 60.6773 105.02 60.912C104.316 61.1467 103.502 61.264 102.578 61.264ZM119.525 61C118.909 61 118.418 60.824 118.051 60.472C117.699 60.1053 117.479 59.6213 117.391 59.02H117.259C117.069 59.768 116.68 60.3327 116.093 60.714C115.507 61.0807 114.781 61.264 113.915 61.264C112.742 61.264 111.84 60.956 111.209 60.34C110.579 59.724 110.263 58.9027 110.263 57.876C110.263 56.688 110.689 55.808 111.539 55.236C112.39 54.6493 113.6 54.356 115.169 54.356H117.127V53.52C117.127 52.8747 116.959 52.376 116.621 52.024C116.284 51.672 115.741 51.496 114.993 51.496C114.333 51.496 113.798 51.6427 113.387 51.936C112.991 52.2147 112.654 52.552 112.375 52.948L110.703 51.452C111.129 50.792 111.693 50.264 112.397 49.868C113.101 49.4573 114.033 49.252 115.191 49.252C116.746 49.252 117.927 49.604 118.733 50.308C119.54 51.012 119.943 52.024 119.943 53.344V58.756H121.087V61H119.525ZM114.861 59.218C115.492 59.218 116.027 59.0787 116.467 58.8C116.907 58.5213 117.127 58.1107 117.127 57.568V56.05H115.323C113.857 56.05 113.123 56.5193 113.123 57.458V57.832C113.123 58.3013 113.27 58.6533 113.563 58.888C113.871 59.108 114.304 59.218 114.861 59.218ZM123.366 61V49.516H126.182V51.43H126.292C126.512 50.8287 126.864 50.3153 127.348 49.89C127.832 49.4647 128.507 49.252 129.372 49.252C130.164 49.252 130.846 49.4427 131.418 49.824C131.99 50.2053 132.416 50.7847 132.694 51.562H132.738C132.944 50.9167 133.347 50.374 133.948 49.934C134.564 49.4793 135.334 49.252 136.258 49.252C137.388 49.252 138.253 49.6407 138.854 50.418C139.47 51.1953 139.778 52.3027 139.778 53.74V61H136.962V54.026C136.962 52.3833 136.346 51.562 135.114 51.562C134.836 51.562 134.564 51.606 134.3 51.694C134.051 51.7673 133.824 51.8847 133.618 52.046C133.428 52.1927 133.274 52.3833 133.156 52.618C133.039 52.838 132.98 53.102 132.98 53.41V61H130.164V54.026C130.164 52.3833 129.548 51.562 128.316 51.562C128.052 51.562 127.788 51.606 127.524 51.694C127.275 51.7673 127.048 51.8847 126.842 52.046C126.652 52.1927 126.49 52.3833 126.358 52.618C126.241 52.838 126.182 53.102 126.182 53.41V61H123.366ZM142.896 44.72H145.712V51.408H145.8C146.005 50.748 146.394 50.2273 146.966 49.846C147.538 49.45 148.205 49.252 148.968 49.252C150.434 49.252 151.549 49.7727 152.312 50.814C153.089 51.8407 153.478 53.3147 153.478 55.236C153.478 57.172 153.089 58.6607 152.312 59.702C151.549 60.7433 150.434 61.264 148.968 61.264C148.205 61.264 147.538 61.066 146.966 60.67C146.408 60.274 146.02 59.746 145.8 59.086H145.712V61H142.896V44.72ZM148.066 58.932C148.799 58.932 149.393 58.69 149.848 58.206C150.302 57.722 150.53 57.0693 150.53 56.248V54.268C150.53 53.4467 150.302 52.794 149.848 52.31C149.393 51.8113 148.799 51.562 148.066 51.562C147.391 51.562 146.826 51.7307 146.372 52.068C145.932 52.4053 145.712 52.8527 145.712 53.41V57.062C145.712 57.6633 145.932 58.1253 146.372 58.448C146.826 58.7707 147.391 58.932 148.066 58.932ZM164.535 61C163.919 61 163.428 60.824 163.061 60.472C162.709 60.1053 162.489 59.6213 162.401 59.02H162.269C162.078 59.768 161.69 60.3327 161.103 60.714C160.516 61.0807 159.79 61.264 158.925 61.264C157.752 61.264 156.85 60.956 156.219 60.34C155.588 59.724 155.273 58.9027 155.273 57.876C155.273 56.688 155.698 55.808 156.549 55.236C157.4 54.6493 158.61 54.356 160.179 54.356H162.137V53.52C162.137 52.8747 161.968 52.376 161.631 52.024C161.294 51.672 160.751 51.496 160.003 51.496C159.343 51.496 158.808 51.6427 158.397 51.936C158.001 52.2147 157.664 52.552 157.385 52.948L155.713 51.452C156.138 50.792 156.703 50.264 157.407 49.868C158.111 49.4573 159.042 49.252 160.201 49.252C161.756 49.252 162.936 49.604 163.743 50.308C164.55 51.012 164.953 52.024 164.953 53.344V58.756H166.097V61H164.535ZM159.871 59.218C160.502 59.218 161.037 59.0787 161.477 58.8C161.917 58.5213 162.137 58.1107 162.137 57.568V56.05H160.333C158.866 56.05 158.133 56.5193 158.133 57.458V57.832C158.133 58.3013 158.28 58.6533 158.573 58.888C158.881 59.108 159.314 59.218 159.871 59.218ZM168.376 61V49.516H171.192V51.43H171.302C171.537 50.814 171.903 50.3007 172.402 49.89C172.915 49.4647 173.619 49.252 174.514 49.252C175.702 49.252 176.611 49.6407 177.242 50.418C177.873 51.1953 178.188 52.3027 178.188 53.74V61H175.372V54.026C175.372 53.2047 175.225 52.5887 174.932 52.178C174.639 51.7673 174.155 51.562 173.48 51.562C173.187 51.562 172.901 51.606 172.622 51.694C172.358 51.7673 172.116 51.8847 171.896 52.046C171.691 52.1927 171.522 52.3833 171.39 52.618C171.258 52.838 171.192 53.102 171.192 53.41V61H168.376ZM188.438 59.086H188.328C188.122 59.746 187.734 60.274 187.162 60.67C186.59 61.066 185.922 61.264 185.16 61.264C183.708 61.264 182.593 60.7433 181.816 59.702C181.053 58.6607 180.672 57.172 180.672 55.236C180.672 53.3147 181.053 51.8407 181.816 50.814C182.593 49.7727 183.708 49.252 185.16 49.252C185.922 49.252 186.59 49.45 187.162 49.846C187.734 50.2273 188.122 50.748 188.328 51.408H188.438V44.72H191.254V61H188.438V59.086ZM186.062 58.932C186.736 58.932 187.301 58.7707 187.756 58.448C188.21 58.1253 188.438 57.6633 188.438 57.062V53.41C188.438 52.8527 188.21 52.4053 187.756 52.068C187.301 51.7307 186.736 51.562 186.062 51.562C185.328 51.562 184.734 51.8113 184.28 52.31C183.84 52.794 183.62 53.4467 183.62 54.268V56.248C183.62 57.0693 183.84 57.722 184.28 58.206C184.734 58.69 185.328 58.932 186.062 58.932ZM199.7 61V49.516H202.516V61H199.7ZM201.416 48.218L199.722 47.404L201.812 43.29L204.188 44.456L201.416 48.218ZM209.542 61.264C208.442 61.264 207.518 61.0807 206.77 60.714C206.022 60.3327 205.362 59.812 204.79 59.152L206.506 57.48C206.932 57.964 207.394 58.3453 207.892 58.624C208.406 58.9027 208.992 59.042 209.652 59.042C210.327 59.042 210.811 58.9247 211.104 58.69C211.412 58.4553 211.566 58.1327 211.566 57.722C211.566 57.3847 211.456 57.1207 211.236 56.93C211.031 56.7247 210.672 56.5853 210.158 56.512L209.014 56.358C207.768 56.1967 206.814 55.8447 206.154 55.302C205.509 54.7447 205.186 53.938 205.186 52.882C205.186 52.3247 205.289 51.826 205.494 51.386C205.7 50.9313 205.993 50.55 206.374 50.242C206.756 49.9193 207.21 49.6773 207.738 49.516C208.281 49.34 208.882 49.252 209.542 49.252C210.1 49.252 210.591 49.296 211.016 49.384C211.456 49.4573 211.852 49.5747 212.204 49.736C212.556 49.8827 212.879 50.0733 213.172 50.308C213.466 50.528 213.752 50.7773 214.03 51.056L212.38 52.706C212.043 52.354 211.64 52.0607 211.17 51.826C210.701 51.5913 210.188 51.474 209.63 51.474C209.014 51.474 208.567 51.584 208.288 51.804C208.024 52.024 207.892 52.31 207.892 52.662C207.892 53.0433 208.002 53.3367 208.222 53.542C208.457 53.7327 208.846 53.872 209.388 53.96L210.554 54.114C213.033 54.466 214.272 55.5953 214.272 57.502C214.272 58.0593 214.155 58.5727 213.92 59.042C213.7 59.4967 213.385 59.8927 212.974 60.23C212.564 60.5527 212.065 60.8093 211.478 61C210.906 61.176 210.261 61.264 209.542 61.264ZM219.575 61C218.607 61 217.896 60.758 217.441 60.274C216.986 59.79 216.759 59.108 216.759 58.228V44.72H219.575V58.756H221.093V61H219.575ZM227.868 61.264C227.017 61.264 226.254 61.1247 225.58 60.846C224.92 60.5527 224.355 60.1493 223.886 59.636C223.431 59.108 223.079 58.4773 222.83 57.744C222.58 56.996 222.456 56.16 222.456 55.236C222.456 54.3267 222.573 53.5053 222.808 52.772C223.057 52.0387 223.409 51.4153 223.864 50.902C224.318 50.374 224.876 49.9707 225.536 49.692C226.196 49.3987 226.944 49.252 227.78 49.252C228.674 49.252 229.452 49.406 230.112 49.714C230.772 50.022 231.314 50.44 231.74 50.968C232.165 51.496 232.48 52.112 232.686 52.816C232.906 53.5053 233.016 54.246 233.016 55.038V55.962H225.382V56.248C225.382 57.084 225.616 57.7587 226.086 58.272C226.555 58.7707 227.252 59.02 228.176 59.02C228.88 59.02 229.452 58.8733 229.892 58.58C230.346 58.2867 230.75 57.9127 231.102 57.458L232.62 59.152C232.15 59.812 231.505 60.3327 230.684 60.714C229.877 61.0807 228.938 61.264 227.868 61.264ZM227.824 51.364C227.076 51.364 226.482 51.6133 226.042 52.112C225.602 52.6107 225.382 53.256 225.382 54.048V54.224H230.09V54.026C230.09 53.234 229.892 52.596 229.496 52.112C229.114 51.6133 228.557 51.364 227.824 51.364ZM235.493 61V49.516H238.309V51.43H238.419C238.654 50.814 239.021 50.3007 239.519 49.89C240.033 49.4647 240.737 49.252 241.631 49.252C242.819 49.252 243.729 49.6407 244.359 50.418C244.99 51.1953 245.305 52.3027 245.305 53.74V61H242.489V54.026C242.489 53.2047 242.343 52.5887 242.049 52.178C241.756 51.7673 241.272 51.562 240.597 51.562C240.304 51.562 240.018 51.606 239.739 51.694C239.475 51.7673 239.233 51.8847 239.013 52.046C238.808 52.1927 238.639 52.3833 238.507 52.618C238.375 52.838 238.309 53.102 238.309 53.41V61H235.493ZM252.189 61.264C251.089 61.264 250.165 61.0807 249.417 60.714C248.669 60.3327 248.009 59.812 247.437 59.152L249.153 57.48C249.578 57.964 250.04 58.3453 250.539 58.624C251.052 58.9027 251.639 59.042 252.299 59.042C252.973 59.042 253.457 58.9247 253.751 58.69C254.059 58.4553 254.213 58.1327 254.213 57.722C254.213 57.3847 254.103 57.1207 253.883 56.93C253.677 56.7247 253.318 56.5853 252.805 56.512L251.661 56.358C250.414 56.1967 249.461 55.8447 248.801 55.302C248.155 54.7447 247.833 53.938 247.833 52.882C247.833 52.3247 247.935 51.826 248.141 51.386C248.346 50.9313 248.639 50.55 249.021 50.242C249.402 49.9193 249.857 49.6773 250.385 49.516C250.927 49.34 251.529 49.252 252.189 49.252C252.746 49.252 253.237 49.296 253.663 49.384C254.103 49.4573 254.499 49.5747 254.851 49.736C255.203 49.8827 255.525 50.0733 255.819 50.308C256.112 50.528 256.398 50.7773 256.677 51.056L255.027 52.706C254.689 52.354 254.286 52.0607 253.817 51.826C253.347 51.5913 252.834 51.474 252.277 51.474C251.661 51.474 251.213 51.584 250.935 51.804C250.671 52.024 250.539 52.31 250.539 52.662C250.539 53.0433 250.649 53.3367 250.869 53.542C251.103 53.7327 251.492 53.872 252.035 53.96L253.201 54.114C255.679 54.466 256.919 55.5953 256.919 57.502C256.919 58.0593 256.801 58.5727 256.567 59.042C256.347 59.4967 256.031 59.8927 255.621 60.23C255.21 60.5527 254.711 60.8093 254.125 61C253.553 61.176 252.907 61.264 252.189 61.264ZM259.405 44.72H262.221V54.532H262.331L263.849 52.464L266.423 49.516H269.613L265.653 53.96L270.031 61H266.687L263.739 55.852L262.221 57.502V61H259.405V44.72ZM271.759 61V49.516H274.575V51.892H274.685C274.758 51.584 274.868 51.2907 275.015 51.012C275.176 50.7187 275.382 50.462 275.631 50.242C275.88 50.022 276.174 49.846 276.511 49.714C276.863 49.582 277.266 49.516 277.721 49.516H278.337V52.178H277.457C276.504 52.178 275.785 52.3173 275.301 52.596C274.817 52.8747 274.575 53.3293 274.575 53.96V61H271.759ZM288.607 61C287.991 61 287.5 60.824 287.133 60.472C286.781 60.1053 286.561 59.6213 286.473 59.02H286.341C286.151 59.768 285.762 60.3327 285.175 60.714C284.589 61.0807 283.863 61.264 282.997 61.264C281.824 61.264 280.922 60.956 280.291 60.34C279.661 59.724 279.345 58.9027 279.345 57.876C279.345 56.688 279.771 55.808 280.621 55.236C281.472 54.6493 282.682 54.356 284.251 54.356H286.209V53.52C286.209 52.8747 286.041 52.376 285.703 52.024C285.366 51.672 284.823 51.496 284.075 51.496C283.415 51.496 282.88 51.6427 282.469 51.936C282.073 52.2147 281.736 52.552 281.457 52.948L279.785 51.452C280.211 50.792 280.775 50.264 281.479 49.868C282.183 49.4573 283.115 49.252 284.273 49.252C285.828 49.252 287.009 49.604 287.815 50.308C288.622 51.012 289.025 52.024 289.025 53.344V58.756H290.169V61H288.607ZM283.943 59.218C284.574 59.218 285.109 59.0787 285.549 58.8C285.989 58.5213 286.209 58.1107 286.209 57.568V56.05H284.405C282.939 56.05 282.205 56.5193 282.205 57.458V57.832C282.205 58.3013 282.352 58.6533 282.645 58.888C282.953 59.108 283.386 59.218 283.943 59.218ZM101.39 87.264C100.29 87.264 99.366 87.0807 98.618 86.714C97.87 86.3327 97.21 85.812 96.638 85.152L98.354 83.48C98.7793 83.964 99.2413 84.3453 99.74 84.624C100.253 84.9027 100.84 85.042 101.5 85.042C102.175 85.042 102.659 84.9247 102.952 84.69C103.26 84.4553 103.414 84.1327 103.414 83.722C103.414 83.3847 103.304 83.1207 103.084 82.93C102.879 82.7247 102.519 82.5853 102.006 82.512L100.862 82.358C99.6153 82.1967 98.662 81.8447 98.002 81.302C97.3567 80.7447 97.034 79.938 97.034 78.882C97.034 78.3247 97.1367 77.826 97.342 77.386C97.5473 76.9313 97.8407 76.55 98.222 76.242C98.6033 75.9193 99.058 75.6773 99.586 75.516C100.129 75.34 100.73 75.252 101.39 75.252C101.947 75.252 102.439 75.296 102.864 75.384C103.304 75.4573 103.7 75.5747 104.052 75.736C104.404 75.8827 104.727 76.0733 105.02 76.308C105.313 76.528 105.599 76.7773 105.878 77.056L104.228 78.706C103.891 78.354 103.487 78.0607 103.018 77.826C102.549 77.5913 102.035 77.474 101.478 77.474C100.862 77.474 100.415 77.584 100.136 77.804C99.872 78.024 99.74 78.31 99.74 78.662C99.74 79.0433 99.85 79.3367 100.07 79.542C100.305 79.7327 100.693 79.872 101.236 79.96L102.402 80.114C104.881 80.466 106.12 81.5953 106.12 83.502C106.12 84.0593 106.003 84.5727 105.768 85.042C105.548 85.4967 105.233 85.8927 104.822 86.23C104.411 86.5527 103.913 86.8093 103.326 87C102.754 87.176 102.109 87.264 101.39 87.264ZM110.813 87L106.985 75.516H109.757L111.363 80.466L112.485 84.558H112.639L113.761 80.466L115.323 75.516H118.007L114.157 87H110.813ZM124.356 87.264C123.505 87.264 122.743 87.1247 122.068 86.846C121.408 86.5527 120.843 86.1493 120.374 85.636C119.919 85.108 119.567 84.4773 119.318 83.744C119.069 82.996 118.944 82.16 118.944 81.236C118.944 80.3267 119.061 79.5053 119.296 78.772C119.545 78.0387 119.897 77.4153 120.352 76.902C120.807 76.374 121.364 75.9707 122.024 75.692C122.684 75.3987 123.432 75.252 124.268 75.252C125.163 75.252 125.94 75.406 126.6 75.714C127.26 76.022 127.803 76.44 128.228 76.968C128.653 77.496 128.969 78.112 129.174 78.816C129.394 79.5053 129.504 80.246 129.504 81.038V81.962H121.87V82.248C121.87 83.084 122.105 83.7587 122.574 84.272C123.043 84.7707 123.74 85.02 124.664 85.02C125.368 85.02 125.94 84.8733 126.38 84.58C126.835 84.2867 127.238 83.9127 127.59 83.458L129.108 85.152C128.639 85.812 127.993 86.3327 127.172 86.714C126.365 87.0807 125.427 87.264 124.356 87.264ZM124.312 77.364C123.564 77.364 122.97 77.6133 122.53 78.112C122.09 78.6107 121.87 79.256 121.87 80.048V80.224H126.578V80.026C126.578 79.234 126.38 78.596 125.984 78.112C125.603 77.6133 125.045 77.364 124.312 77.364ZM133.39 73.844C132.803 73.844 132.378 73.712 132.114 73.448C131.864 73.184 131.74 72.8467 131.74 72.436V71.996C131.74 71.5853 131.864 71.248 132.114 70.984C132.378 70.72 132.803 70.588 133.39 70.588C133.962 70.588 134.38 70.72 134.644 70.984C134.908 71.248 135.04 71.5853 135.04 71.996V72.436C135.04 72.8467 134.908 73.184 134.644 73.448C134.38 73.712 133.962 73.844 133.39 73.844ZM131.982 75.516H134.798V87H131.982V75.516ZM141.648 87C140.68 87 139.939 86.7507 139.426 86.252C138.927 85.7387 138.678 85.0127 138.678 84.074V77.76H136.984V75.516H137.864C138.289 75.516 138.575 75.4207 138.722 75.23C138.883 75.0247 138.964 74.724 138.964 74.328V72.37H141.494V75.516H143.848V77.76H141.494V84.756H143.672V87H141.648ZM154.738 87C154.122 87 153.631 86.824 153.264 86.472C152.912 86.1053 152.692 85.6213 152.604 85.02H152.472C152.281 85.768 151.893 86.3327 151.306 86.714C150.719 87.0807 149.993 87.264 149.128 87.264C147.955 87.264 147.053 86.956 146.422 86.34C145.791 85.724 145.476 84.9027 145.476 83.876C145.476 82.688 145.901 81.808 146.752 81.236C147.603 80.6493 148.813 80.356 150.382 80.356H152.34V79.52C152.34 78.8747 152.171 78.376 151.834 78.024C151.497 77.672 150.954 77.496 150.206 77.496C149.546 77.496 149.011 77.6427 148.6 77.936C148.204 78.2147 147.867 78.552 147.588 78.948L145.916 77.452C146.341 76.792 146.906 76.264 147.61 75.868C148.314 75.4573 149.245 75.252 150.404 75.252C151.959 75.252 153.139 75.604 153.946 76.308C154.753 77.012 155.156 78.024 155.156 79.344V84.756H156.3V87H154.738ZM150.074 85.218C150.705 85.218 151.24 85.0787 151.68 84.8C152.12 84.5213 152.34 84.1107 152.34 83.568V82.05H150.536C149.069 82.05 148.336 82.5193 148.336 83.458V83.832C148.336 84.3013 148.483 84.6533 148.776 84.888C149.084 85.108 149.517 85.218 150.074 85.218ZM158.579 87V75.516H161.395V77.892H161.505C161.579 77.584 161.689 77.2907 161.835 77.012C161.997 76.7187 162.202 76.462 162.451 76.242C162.701 76.022 162.994 75.846 163.331 75.714C163.683 75.582 164.087 75.516 164.541 75.516H165.157V78.178H164.277C163.324 78.178 162.605 78.3173 162.121 78.596C161.637 78.8747 161.395 79.3293 161.395 79.96V87H158.579ZM167.96 77.738H166.266V75.516H167.96V73.866C167.96 72.854 168.224 72.0767 168.752 71.534C169.294 70.9913 170.086 70.72 171.128 70.72H173.13V72.964H170.776V75.516H173.13V77.738H170.776V87H167.96V77.738ZM179.943 74.218L178.249 73.404L180.339 69.29L182.715 70.456L179.943 74.218ZM179.635 87.264C178.785 87.264 178.022 87.1247 177.347 86.846C176.687 86.5527 176.123 86.1493 175.653 85.636C175.199 85.108 174.847 84.4773 174.597 83.744C174.348 82.996 174.223 82.16 174.223 81.236C174.223 80.3267 174.341 79.5053 174.575 78.772C174.825 78.0387 175.177 77.4153 175.631 76.902C176.086 76.374 176.643 75.9707 177.303 75.692C177.963 75.3987 178.711 75.252 179.547 75.252C180.442 75.252 181.219 75.406 181.879 75.714C182.539 76.022 183.082 76.44 183.507 76.968C183.933 77.496 184.248 78.112 184.453 78.816C184.673 79.5053 184.783 80.246 184.783 81.038V81.962H177.149V82.248C177.149 83.084 177.384 83.7587 177.853 84.272C178.323 84.7707 179.019 85.02 179.943 85.02C180.647 85.02 181.219 84.8733 181.659 84.58C182.114 84.2867 182.517 83.9127 182.869 83.458L184.387 85.152C183.918 85.812 183.273 86.3327 182.451 86.714C181.645 87.0807 180.706 87.264 179.635 87.264ZM179.591 77.364C178.843 77.364 178.249 77.6133 177.809 78.112C177.369 78.6107 177.149 79.256 177.149 80.048V80.224H181.857V80.026C181.857 79.234 181.659 78.596 181.263 78.112C180.882 77.6133 180.325 77.364 179.591 77.364ZM190.077 87C189.109 87 188.397 86.758 187.943 86.274C187.488 85.79 187.261 85.108 187.261 84.228V70.72H190.077V84.756H191.595V87H190.077ZM202.176 87C201.56 87 201.068 86.824 200.702 86.472C200.35 86.1053 200.13 85.6213 200.042 85.02H199.91C199.719 85.768 199.33 86.3327 198.744 86.714C198.157 87.0807 197.431 87.264 196.566 87.264C195.392 87.264 194.49 86.956 193.86 86.34C193.229 85.724 192.914 84.9027 192.914 83.876C192.914 82.688 193.339 81.808 194.19 81.236C195.04 80.6493 196.25 80.356 197.82 80.356H199.778V79.52C199.778 78.8747 199.609 78.376 199.272 78.024C198.934 77.672 198.392 77.496 197.644 77.496C196.984 77.496 196.448 77.6427 196.038 77.936C195.642 78.2147 195.304 78.552 195.026 78.948L193.354 77.452C193.779 76.792 194.344 76.264 195.048 75.868C195.752 75.4573 196.683 75.252 197.842 75.252C199.396 75.252 200.577 75.604 201.384 76.308C202.19 77.012 202.594 78.024 202.594 79.344V84.756H203.738V87H202.176ZM197.512 85.218C198.142 85.218 198.678 85.0787 199.118 84.8C199.558 84.5213 199.778 84.1107 199.778 83.568V82.05H197.974C196.507 82.05 195.774 82.5193 195.774 83.458V83.832C195.774 84.3013 195.92 84.6533 196.214 84.888C196.522 85.108 196.954 85.218 197.512 85.218ZM216.379 87.968C216.379 88.5693 216.269 89.0973 216.049 89.552C215.843 90.0213 215.499 90.41 215.015 90.718C214.531 91.026 213.907 91.2607 213.145 91.422C212.382 91.5833 211.451 91.664 210.351 91.664C209.383 91.664 208.561 91.598 207.887 91.466C207.212 91.3487 206.655 91.1727 206.215 90.938C205.789 90.718 205.481 90.4393 205.291 90.102C205.1 89.7647 205.005 89.3833 205.005 88.958C205.005 88.3127 205.181 87.8067 205.533 87.44C205.899 87.088 206.405 86.8607 207.051 86.758V86.516C206.581 86.3987 206.215 86.1713 205.951 85.834C205.701 85.482 205.577 85.0713 205.577 84.602C205.577 84.3087 205.635 84.052 205.753 83.832C205.87 83.5973 206.024 83.3993 206.215 83.238C206.42 83.0767 206.647 82.9447 206.897 82.842C207.146 82.7247 207.41 82.6367 207.689 82.578V82.49C206.985 82.1673 206.457 81.72 206.105 81.148C205.767 80.576 205.599 79.9087 205.599 79.146C205.599 77.9727 206.002 77.034 206.809 76.33C207.615 75.6113 208.796 75.252 210.351 75.252C210.703 75.252 211.047 75.274 211.385 75.318C211.737 75.362 212.059 75.4353 212.353 75.538V75.164C212.353 74.0493 212.895 73.492 213.981 73.492H215.763V75.648H213.321V75.956C213.922 76.2933 214.369 76.7333 214.663 77.276C214.956 77.8187 215.103 78.442 215.103 79.146C215.103 80.3047 214.699 81.236 213.893 81.94C213.101 82.644 211.92 82.996 210.351 82.996C209.676 82.996 209.089 82.93 208.591 82.798C208.371 82.9007 208.18 83.04 208.019 83.216C207.857 83.3773 207.777 83.5827 207.777 83.832C207.777 84.404 208.275 84.69 209.273 84.69H212.353C213.761 84.69 214.78 84.9833 215.411 85.57C216.056 86.142 216.379 86.9413 216.379 87.968ZM213.739 88.298C213.739 87.9313 213.592 87.6453 213.299 87.44C213.005 87.2347 212.499 87.132 211.781 87.132H207.865C207.469 87.4253 207.271 87.8213 207.271 88.32C207.271 88.76 207.454 89.1047 207.821 89.354C208.187 89.6033 208.811 89.728 209.691 89.728H211.099C212.023 89.728 212.69 89.6107 213.101 89.376C213.526 89.1413 213.739 88.782 213.739 88.298ZM210.351 81.082C211.729 81.082 212.419 80.4953 212.419 79.322V78.948C212.419 77.7747 211.729 77.188 210.351 77.188C208.972 77.188 208.283 77.7747 208.283 78.948V79.322C208.283 80.4953 208.972 81.082 210.351 81.082ZM226.41 87C225.794 87 225.303 86.824 224.936 86.472C224.584 86.1053 224.364 85.6213 224.276 85.02H224.144C223.953 85.768 223.565 86.3327 222.978 86.714C222.391 87.0807 221.665 87.264 220.8 87.264C219.627 87.264 218.725 86.956 218.094 86.34C217.463 85.724 217.148 84.9027 217.148 83.876C217.148 82.688 217.573 81.808 218.424 81.236C219.275 80.6493 220.485 80.356 222.054 80.356H224.012V79.52C224.012 78.8747 223.843 78.376 223.506 78.024C223.169 77.672 222.626 77.496 221.878 77.496C221.218 77.496 220.683 77.6427 220.272 77.936C219.876 78.2147 219.539 78.552 219.26 78.948L217.588 77.452C218.013 76.792 218.578 76.264 219.282 75.868C219.986 75.4573 220.917 75.252 222.076 75.252C223.631 75.252 224.811 75.604 225.618 76.308C226.425 77.012 226.828 78.024 226.828 79.344V84.756H227.972V87H226.41ZM221.746 85.218C222.377 85.218 222.912 85.0787 223.352 84.8C223.792 84.5213 224.012 84.1107 224.012 83.568V82.05H222.208C220.741 82.05 220.008 82.5193 220.008 83.458V83.832C220.008 84.3013 220.155 84.6533 220.448 84.888C220.756 85.108 221.189 85.218 221.746 85.218Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/seltjarnarnes.svg b/libs/application/templates/financial-aid/src/svg/seltjarnarnes.svg deleted file mode 100644 index 339e9598e98e..000000000000 --- a/libs/application/templates/financial-aid/src/svg/seltjarnarnes.svg +++ /dev/null @@ -1,14 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57905)"> -<path d="M45.8764 94.8474C40.828 92.2052 36.3524 89.0104 32.7127 85.4246C27.826 80.6255 24.8468 75.5029 23.4853 69.5782L23 67.8999V16H73.5519V67.7314L73.1744 69.3895C72.6217 71.8295 72.3251 72.7799 71.523 74.6536C68.4495 81.8387 62.4439 88.06 53.385 93.432C51.7741 94.3891 48.559 96.0067 48.2827 96C48.1681 95.9933 47.0829 95.481 45.8764 94.8474Z" fill="white"/> -<path d="M45.8764 94.8474C40.828 92.2052 36.3524 89.0104 32.7127 85.4246C27.826 80.6255 24.8468 75.5029 23.4853 69.5782L23 67.8999V16H73.5519V67.7314L73.1744 69.3895C72.6217 71.8295 72.3251 72.7799 71.523 74.6536C68.4495 81.8387 62.4439 88.06 53.385 93.432C51.7741 94.3891 48.559 96.0067 48.2827 96C48.1681 95.9933 47.0829 95.481 45.8764 94.8474ZM31.7084 80.6322C33.1171 80.3761 34.5595 79.9178 36.7905 79.0213L38.7115 78.2395L40.8819 79.1089C44.4475 80.5311 45.2967 80.7131 48.3231 80.7131C51.2821 80.7064 52.1988 80.5042 55.8991 79.0146L57.8201 78.2395L59.1075 78.7854C61.5812 79.8369 63.0371 80.3155 64.6412 80.5985L66.2589 80.8816L66.7442 80.302C67.5598 79.3246 68.281 78.1383 68.1664 77.9564C68.1057 77.862 67.5733 77.7811 66.9801 77.7811C65.1063 77.7811 63.0168 77.2149 59.5052 75.759L57.7729 75.0378L56.4653 75.631C50.3789 78.4012 46.6717 78.4619 40.6931 75.8804L38.7115 75.0244L36.649 75.9006C33.6698 77.1745 32.0117 77.6261 29.9694 77.7272C29.019 77.7744 28.2372 77.889 28.2372 77.9766C28.2372 78.1788 29.1404 79.4931 29.7942 80.2346C30.3604 80.8816 30.3401 80.8749 31.7084 80.6322ZM31.7151 73.892C33.3665 73.4741 35.4829 72.4698 37.2826 71.2633C38.0308 70.7578 38.7048 70.3466 38.7722 70.3466C38.8396 70.3466 39.217 70.5623 39.6012 70.8319C40.7066 71.5868 42.9174 72.7866 43.9352 73.1843C48.0063 74.7817 51.7404 74.1886 56.3912 71.2026C57.1259 70.7308 57.7797 70.3466 57.8471 70.3466C57.9145 70.3466 58.4402 70.6769 59.0131 71.0813C60.6106 72.2069 62.0934 72.9753 63.8526 73.5752C65.3085 74.074 65.6388 74.1279 67.398 74.1212C68.6921 74.1144 69.5616 74.0335 70.0132 73.8583C70.6401 73.6224 70.721 73.5145 71.1388 72.3552C71.6915 70.8319 71.7455 70.2523 71.3208 70.4342C69.0494 71.3846 66.8049 71.5059 64.6075 70.7915C62.9831 70.2657 60.7521 68.8503 59.0131 67.2394L57.7999 66.1205L56.7349 67.0776C53.5535 69.9355 50.9855 71.1959 48.3366 71.1892C45.5866 71.1824 43.1803 70.05 40.0326 67.2798L38.7183 66.1205L37.4039 67.327C33.3867 71.0206 29.7268 72.0789 25.9253 70.6567C25.4197 70.4679 24.9614 70.3601 24.9075 70.4208C24.7525 70.5758 25.6759 73.3191 25.9657 73.555C26.7948 74.2425 29.6594 74.411 31.7151 73.892ZM49.7655 67.1248C52.6773 66.5856 54.9555 64.5972 55.9261 61.7393C56.2362 60.8294 56.2968 60.3036 56.2766 58.6523C56.2362 54.6823 54.2545 40.548 53.6951 40.2042C53.6209 40.157 53.1154 40.3862 52.5829 40.7165C49.779 42.442 46.7594 42.442 43.9082 40.7165C43.3825 40.3997 42.9174 40.1436 42.8702 40.1436C42.7017 40.1436 42.5804 40.7098 41.9199 44.6595C40.5516 52.8557 39.9585 59.0095 40.3629 60.8901C41.3065 65.224 45.3776 67.9336 49.7655 67.1248ZM50.8911 36.888C56.0407 34.5222 56.0811 27.3236 50.9653 24.9308C48.4849 23.7715 45.6338 24.2838 43.6723 26.2452C42.0008 27.9168 41.3133 30.6061 42.0008 32.7832C42.6074 34.7042 44.2385 36.4095 46.1325 37.0902C47.4806 37.5823 49.5835 37.4879 50.8911 36.888Z" fill="#BD6531"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM117.512 75.288C116.584 75.288 115.752 75.136 115.016 74.832C114.296 74.512 113.68 74.072 113.168 73.512C112.672 72.936 112.288 72.248 112.016 71.448C111.744 70.632 111.608 69.72 111.608 68.712C111.608 67.72 111.736 66.824 111.992 66.024C112.264 65.224 112.648 64.544 113.144 63.984C113.64 63.408 114.248 62.968 114.968 62.664C115.688 62.344 116.504 62.184 117.416 62.184C118.392 62.184 119.24 62.352 119.96 62.688C120.68 63.024 121.272 63.48 121.736 64.056C122.2 64.632 122.544 65.304 122.768 66.072C123.008 66.824 123.128 67.632 123.128 68.496V69.504H114.8V69.816C114.8 70.728 115.056 71.464 115.568 72.024C116.08 72.568 116.84 72.84 117.848 72.84C118.616 72.84 119.24 72.68 119.72 72.36C120.216 72.04 120.656 71.632 121.04 71.136L122.696 72.984C122.184 73.704 121.48 74.272 120.584 74.688C119.704 75.088 118.68 75.288 117.512 75.288ZM117.464 64.488C116.648 64.488 116 64.76 115.52 65.304C115.04 65.848 114.8 66.552 114.8 67.416V67.608H119.936V67.392C119.936 66.528 119.72 65.832 119.288 65.304C118.872 64.76 118.264 64.488 117.464 64.488ZM128.903 75C127.847 75 127.071 74.736 126.575 74.208C126.079 73.68 125.831 72.936 125.831 71.976V57.24H128.903V72.552H130.559V75H128.903ZM136.68 75C135.624 75 134.816 74.728 134.256 74.184C133.712 73.624 133.44 72.832 133.44 71.808V64.92H131.592V62.472H132.552C133.016 62.472 133.328 62.368 133.488 62.16C133.664 61.936 133.752 61.608 133.752 61.176V59.04H136.512V62.472H139.08V64.92H136.512V72.552H138.888V75H136.68ZM141.745 62.472H144.817V76.512C144.817 77.568 144.553 78.376 144.025 78.936C143.497 79.512 142.657 79.8 141.505 79.8H139.825V77.352H141.745V62.472ZM143.281 60.648C142.641 60.648 142.177 60.504 141.889 60.216C141.617 59.928 141.481 59.56 141.481 59.112V58.632C141.481 58.184 141.617 57.816 141.889 57.528C142.177 57.24 142.641 57.096 143.281 57.096C143.905 57.096 144.361 57.24 144.649 57.528C144.937 57.816 145.081 58.184 145.081 58.632V59.112C145.081 59.56 144.937 59.928 144.649 60.216C144.361 60.504 143.905 60.648 143.281 60.648ZM157.594 75C156.922 75 156.386 74.808 155.986 74.424C155.602 74.024 155.362 73.496 155.266 72.84H155.122C154.914 73.656 154.49 74.272 153.85 74.688C153.21 75.088 152.418 75.288 151.474 75.288C150.194 75.288 149.21 74.952 148.522 74.28C147.834 73.608 147.49 72.712 147.49 71.592C147.49 70.296 147.954 69.336 148.882 68.712C149.81 68.072 151.13 67.752 152.842 67.752H154.978V66.84C154.978 66.136 154.794 65.592 154.426 65.208C154.058 64.824 153.466 64.632 152.65 64.632C151.93 64.632 151.346 64.792 150.898 65.112C150.466 65.416 150.098 65.784 149.794 66.216L147.97 64.584C148.434 63.864 149.05 63.288 149.818 62.856C150.586 62.408 151.602 62.184 152.866 62.184C154.562 62.184 155.85 62.568 156.73 63.336C157.61 64.104 158.05 65.208 158.05 66.648V72.552H159.298V75H157.594ZM152.506 73.056C153.194 73.056 153.778 72.904 154.258 72.6C154.738 72.296 154.978 71.848 154.978 71.256V69.6H153.01C151.41 69.6 150.61 70.112 150.61 71.136V71.544C150.61 72.056 150.77 72.44 151.09 72.696C151.426 72.936 151.898 73.056 152.506 73.056ZM161.784 75V62.472H164.856V65.064H164.976C165.056 64.728 165.176 64.408 165.336 64.104C165.512 63.784 165.736 63.504 166.008 63.264C166.28 63.024 166.6 62.832 166.968 62.688C167.352 62.544 167.792 62.472 168.288 62.472H168.96V65.376H168C166.96 65.376 166.176 65.528 165.648 65.832C165.12 66.136 164.856 66.632 164.856 67.32V75H161.784ZM171.206 75V62.472H174.278V64.56H174.398C174.654 63.888 175.054 63.328 175.598 62.88C176.158 62.416 176.926 62.184 177.902 62.184C179.198 62.184 180.19 62.608 180.878 63.456C181.566 64.304 181.91 65.512 181.91 67.08V75H178.838V67.392C178.838 66.496 178.678 65.824 178.358 65.376C178.038 64.928 177.51 64.704 176.774 64.704C176.454 64.704 176.142 64.752 175.838 64.848C175.55 64.928 175.286 65.056 175.046 65.232C174.822 65.392 174.638 65.6 174.494 65.856C174.35 66.096 174.278 66.384 174.278 66.72V75H171.206ZM194.531 75C193.859 75 193.323 74.808 192.923 74.424C192.539 74.024 192.299 73.496 192.203 72.84H192.059C191.851 73.656 191.427 74.272 190.787 74.688C190.147 75.088 189.355 75.288 188.411 75.288C187.131 75.288 186.147 74.952 185.459 74.28C184.771 73.608 184.427 72.712 184.427 71.592C184.427 70.296 184.891 69.336 185.819 68.712C186.747 68.072 188.067 67.752 189.779 67.752H191.915V66.84C191.915 66.136 191.731 65.592 191.363 65.208C190.995 64.824 190.403 64.632 189.587 64.632C188.867 64.632 188.283 64.792 187.835 65.112C187.403 65.416 187.035 65.784 186.731 66.216L184.907 64.584C185.371 63.864 185.987 63.288 186.755 62.856C187.523 62.408 188.539 62.184 189.803 62.184C191.499 62.184 192.787 62.568 193.667 63.336C194.547 64.104 194.987 65.208 194.987 66.648V72.552H196.235V75H194.531ZM189.443 73.056C190.131 73.056 190.715 72.904 191.195 72.6C191.675 72.296 191.915 71.848 191.915 71.256V69.6H189.947C188.347 69.6 187.547 70.112 187.547 71.136V71.544C187.547 72.056 187.707 72.44 188.027 72.696C188.363 72.936 188.835 73.056 189.443 73.056ZM198.721 75V62.472H201.793V65.064H201.913C201.993 64.728 202.113 64.408 202.273 64.104C202.449 63.784 202.673 63.504 202.945 63.264C203.217 63.024 203.537 62.832 203.905 62.688C204.289 62.544 204.729 62.472 205.225 62.472H205.897V65.376H204.937C203.897 65.376 203.113 65.528 202.585 65.832C202.057 66.136 201.793 66.632 201.793 67.32V75H198.721ZM208.143 75V62.472H211.215V64.56H211.335C211.591 63.888 211.991 63.328 212.535 62.88C213.095 62.416 213.863 62.184 214.839 62.184C216.135 62.184 217.127 62.608 217.815 63.456C218.503 64.304 218.847 65.512 218.847 67.08V75H215.775V67.392C215.775 66.496 215.615 65.824 215.295 65.376C214.975 64.928 214.447 64.704 213.711 64.704C213.391 64.704 213.079 64.752 212.775 64.848C212.487 64.928 212.223 65.056 211.983 65.232C211.759 65.392 211.575 65.6 211.431 65.856C211.287 66.096 211.215 66.384 211.215 66.72V75H208.143ZM227.317 75.288C226.389 75.288 225.557 75.136 224.821 74.832C224.101 74.512 223.485 74.072 222.973 73.512C222.477 72.936 222.093 72.248 221.821 71.448C221.549 70.632 221.413 69.72 221.413 68.712C221.413 67.72 221.541 66.824 221.797 66.024C222.069 65.224 222.453 64.544 222.949 63.984C223.445 63.408 224.053 62.968 224.773 62.664C225.493 62.344 226.309 62.184 227.221 62.184C228.197 62.184 229.045 62.352 229.765 62.688C230.485 63.024 231.077 63.48 231.541 64.056C232.005 64.632 232.349 65.304 232.573 66.072C232.813 66.824 232.933 67.632 232.933 68.496V69.504H224.605V69.816C224.605 70.728 224.861 71.464 225.373 72.024C225.885 72.568 226.645 72.84 227.653 72.84C228.421 72.84 229.045 72.68 229.525 72.36C230.021 72.04 230.461 71.632 230.845 71.136L232.501 72.984C231.989 73.704 231.285 74.272 230.389 74.688C229.509 75.088 228.485 75.288 227.317 75.288ZM227.269 64.488C226.453 64.488 225.805 64.76 225.325 65.304C224.845 65.848 224.605 66.552 224.605 67.416V67.608H229.741V67.392C229.741 66.528 229.525 65.832 229.093 65.304C228.677 64.76 228.069 64.488 227.269 64.488ZM239.739 75.288C238.539 75.288 237.531 75.088 236.715 74.688C235.899 74.272 235.179 73.704 234.555 72.984L236.427 71.16C236.891 71.688 237.395 72.104 237.939 72.408C238.499 72.712 239.139 72.864 239.859 72.864C240.595 72.864 241.123 72.736 241.443 72.48C241.779 72.224 241.947 71.872 241.947 71.424C241.947 71.056 241.827 70.768 241.587 70.56C241.363 70.336 240.971 70.184 240.411 70.104L239.163 69.936C237.803 69.76 236.763 69.376 236.043 68.784C235.339 68.176 234.987 67.296 234.987 66.144C234.987 65.536 235.099 64.992 235.323 64.512C235.547 64.016 235.867 63.6 236.283 63.264C236.699 62.912 237.195 62.648 237.771 62.472C238.363 62.28 239.019 62.184 239.739 62.184C240.347 62.184 240.883 62.232 241.347 62.328C241.827 62.408 242.259 62.536 242.643 62.712C243.027 62.872 243.379 63.08 243.699 63.336C244.019 63.576 244.331 63.848 244.635 64.152L242.835 65.952C242.467 65.568 242.027 65.248 241.515 64.992C241.003 64.736 240.443 64.608 239.835 64.608C239.163 64.608 238.675 64.728 238.371 64.968C238.083 65.208 237.939 65.52 237.939 65.904C237.939 66.32 238.059 66.64 238.299 66.864C238.555 67.072 238.979 67.224 239.571 67.32L240.843 67.488C243.547 67.872 244.899 69.104 244.899 71.184C244.899 71.792 244.771 72.352 244.515 72.864C244.275 73.36 243.931 73.792 243.483 74.16C243.035 74.512 242.491 74.792 241.851 75C241.227 75.192 240.523 75.288 239.739 75.288Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57905"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/skaftarhreppur.svg b/libs/application/templates/financial-aid/src/svg/skaftarhreppur.svg deleted file mode 100644 index d11c1cde26a1..000000000000 --- a/libs/application/templates/financial-aid/src/svg/skaftarhreppur.svg +++ /dev/null @@ -1,18 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M48.4646 96H48.2166C48.2001 95.9769 48.1887 95.9457 48.1664 95.9318C47.1598 95.3032 46.1455 94.6865 45.1469 94.0453C44.4209 93.5791 43.6931 93.1104 43.0062 92.5898C41.9597 91.7965 40.933 90.9772 39.9261 90.1321C38.8693 89.2434 37.8377 88.3237 36.8172 87.3934C36.2415 86.8687 35.7062 86.2992 35.1602 85.7426C34.6917 85.265 34.2321 84.7787 33.7722 84.2928C33.5324 84.0395 33.2893 83.7879 33.0675 83.5192C32.5489 82.8908 32.0372 82.2567 31.5325 81.6168C30.9044 80.8168 30.2616 80.0263 29.6758 79.1958C29.1323 78.4252 28.6403 77.6168 28.1534 76.8082C27.572 75.8424 26.9746 74.8817 26.4676 73.8767C25.8872 72.726 25.3846 71.5351 24.8752 70.3501C24.5552 69.6055 24.253 68.8501 24.0006 68.0806C23.7135 67.2058 23.4673 66.3156 23.2469 65.4214C23.0313 64.5467 22.8704 63.6586 22.6858 62.7764C22.6028 62.3797 22.4964 61.9861 22.4434 61.5854C22.3593 60.9487 22.3103 60.3073 22.248 59.6678C22.1659 58.8253 22.0154 57.9827 22.0145 57.14C21.9997 43.5499 21.9962 29.9599 22.0041 16.3698V16.0107H22.4653C39.7284 16.0107 56.9916 16.0106 74.2547 16.0103C74.3991 16.0103 74.5435 16.0036 74.6879 16V57.4884C74.6565 57.5877 74.633 57.6894 74.6177 57.7925C74.5893 58.1807 74.5852 58.5712 74.5455 58.958C74.4758 59.636 74.3927 60.3127 74.3035 60.9884C74.2172 61.6426 74.1544 62.3033 74.0132 62.9462C73.7658 64.0726 73.5056 65.1993 73.1786 66.3045C72.7712 67.6819 72.3679 69.0694 71.8215 70.3942C71.2107 71.8748 70.4809 73.3109 69.729 74.7272C69.097 75.9178 68.3966 77.0767 67.6576 78.2044C66.9068 79.35 66.0989 80.4613 65.2648 81.5483C64.6006 82.4137 63.8808 83.2393 63.1468 84.0473C62.2862 84.9947 61.4121 85.9334 60.4917 86.8218C59.4605 87.8171 58.3801 88.7624 57.3035 89.7094C56.5609 90.3625 55.8151 91.0175 55.0231 91.6075C53.7865 92.5287 52.527 93.4189 51.2447 94.2782C50.3413 94.8868 49.3929 95.4285 48.4646 96Z" fill="#82C8B8"/> -<path d="M56.6455 30.856C56.9464 30.9772 57.2522 31.0876 57.5472 31.222C58.2567 31.5451 58.6821 32.149 59.0437 32.7988C59.6645 33.9144 59.9576 35.1383 60.176 36.3821C60.2155 36.6334 60.2363 36.8873 60.2382 37.1416C60.264 38.1783 60.248 39.2173 60.3139 40.2512C60.3652 40.9773 60.5577 41.6864 60.8806 42.3387C61.242 43.081 61.5816 43.843 62.0318 44.5304C62.5385 45.3127 63.1122 46.0493 63.7466 46.7321C64.5099 47.544 65.3764 48.2555 66.4082 48.7303C67.0584 49.0363 67.77 49.1897 68.4885 49.1789C70.0366 49.1555 71.5853 49.1716 73.1338 49.1714V51.5228C71.4088 51.5226 69.6837 51.5119 67.9588 51.5275C67.2507 51.5339 66.6058 51.2915 65.9557 51.081C65.4948 50.9343 65.0527 50.7342 64.6382 50.4849C64.0532 50.1274 63.4998 49.7151 62.9517 49.3013C62.6039 49.0337 62.2726 48.7453 61.9596 48.4377C61.0777 47.5859 60.2659 46.6694 59.6403 45.6125C59.1578 44.7973 58.6766 43.971 58.3075 43.102C57.9568 42.282 57.7692 41.4015 57.7554 40.5097C57.7408 39.4862 57.717 38.4599 57.6227 37.4417C57.5676 36.8472 57.3636 36.267 57.2329 35.679C57.1269 35.1778 56.9284 34.7007 56.6475 34.2723C56.3473 33.8217 55.9872 33.5569 55.3786 33.5639C52.5383 33.5961 49.6979 33.5963 46.8571 33.5642C46.279 33.5506 45.7111 33.7176 45.2324 34.042C44.0548 34.8076 42.8583 35.5441 41.6703 36.2938C41.5974 36.3521 41.5062 36.3828 41.4129 36.3804C41.3196 36.3781 41.2301 36.3429 41.1602 36.281C40.0565 35.4394 38.9504 34.6009 37.8337 33.7768C37.6736 33.6601 37.4823 33.5938 37.2843 33.5863C32.8427 33.5759 28.4011 33.5732 23.9594 33.5782H23.5449V30.856H38.5456C38.5542 30.874 38.558 30.8979 38.572 30.9092C39.3198 31.5137 40.0617 32.1256 40.8203 32.7161C41.1007 32.9344 41.3186 33.2754 41.8078 32.9254C42.8362 32.1896 43.927 31.5406 44.9921 30.856H56.6455Z" fill="white"/> -<path d="M56.3388 66.4194L56.291 66.415C56.2614 66.5086 56.2316 66.602 56.2024 66.6957C56.1726 66.7917 56.1425 66.8875 56.1141 66.9839C55.7948 68.0691 55.0772 68.9031 54.353 69.7216C53.9256 70.2047 53.4306 70.6285 52.9574 71.0697C52.5992 71.4037 52.2227 71.7181 51.8627 72.0502C51.4979 72.3867 51.1101 72.7063 50.7924 73.084C50.3524 73.6128 49.9412 74.1648 49.5604 74.7377C49.196 75.2797 48.9329 75.8945 48.9299 76.548C48.9106 80.7632 48.92 84.9785 48.92 89.1938V89.559C49.4666 89.0355 49.9653 88.5624 50.4589 88.0841C51.5227 87.0371 52.5141 85.919 53.4261 84.7375C54.3466 83.5643 55.2049 82.3509 55.8127 80.9789C56.1303 80.2619 56.3565 79.5347 56.3492 78.7234C56.3228 75.7688 56.3388 72.8138 56.3388 69.859C56.3388 68.7125 56.3388 67.566 56.3388 66.4194ZM55.164 53.272L55.1155 53.2743C54.9553 53.6861 54.8502 54.132 54.623 54.5024C54.1997 55.2234 53.6759 55.8803 53.0673 56.4534C52.5228 56.947 51.9538 57.4146 51.4251 57.9244C50.661 58.661 49.9263 59.4212 49.3614 60.3389C49.0266 60.8826 48.7969 61.4324 48.7968 62.0709C48.7959 65.6047 48.7957 69.1385 48.7963 72.6722V73.0599C48.914 72.9485 48.9886 72.884 49.0564 72.8129C49.9211 71.9059 50.7919 71.0045 51.646 70.0876C52.0931 69.6257 52.5134 69.1388 52.9051 68.6291C53.5961 67.6926 54.2416 66.7214 54.7091 65.6477C54.9808 65.0237 55.1821 64.3943 55.1758 63.6836C55.1485 60.5634 55.164 57.4428 55.164 54.3223L55.164 53.272ZM47.7936 73.0434L47.8682 73.0012C47.8682 72.9328 47.8682 72.8643 47.8682 72.7959C47.8682 69.1597 47.8678 65.5236 47.8671 61.8875C47.871 61.8057 47.8622 61.7238 47.8412 61.6447C47.5241 60.6671 47.0523 59.7776 46.3103 59.0548C45.2622 58.0339 44.2009 57.0266 43.152 56.0065C42.3765 55.2513 41.8119 54.3065 41.5143 53.2657C41.5085 53.2892 41.5044 53.313 41.5021 53.337C41.5013 56.9835 41.5033 60.6299 41.5081 64.2764C41.5197 64.5484 41.5778 64.8164 41.6799 65.0688C42.0773 66.15 42.6727 67.1362 43.3341 68.0612C44.0305 69.035 44.8512 69.9209 45.6366 70.8285C45.9666 71.2099 46.3483 71.546 46.7016 71.9074C47.0687 72.283 47.4299 72.6645 47.7936 73.0434Z" fill="#FFE781"/> -<path d="M40.3867 66.5966C40.4279 66.6094 40.5002 66.6142 40.5059 66.6361C40.7561 67.6119 41.3448 68.3995 41.935 69.1796C42.1899 69.5164 42.5117 69.8026 42.8064 70.1085C42.9954 70.3046 43.1845 70.5013 43.384 70.6864C44.1415 71.3891 44.9362 72.0552 45.6527 72.7973C46.218 73.3665 46.7189 73.9963 47.1464 74.6752C47.5769 75.3836 47.8932 76.1434 47.8846 77.044C47.8458 81.0814 47.8677 85.1193 47.8677 89.1571V89.5385C47.7474 89.4592 47.6322 89.3723 47.5229 89.2785C46.8352 88.5953 46.1236 87.9334 45.4746 87.2147C44.6267 86.2755 43.8239 85.2949 43.012 84.3234C42.2166 83.3637 41.5538 82.3015 41.0413 81.1653C40.8326 80.7087 40.6705 80.2303 40.4968 79.7582C40.4629 79.6521 40.4473 79.5409 40.4509 79.4295C40.4475 78.4588 40.4508 77.4881 40.4462 76.5174C40.4362 76.4121 40.4163 76.3079 40.3867 76.2063L40.3867 66.5966Z" fill="#FFE781"/> -<path d="M48.7958 40.6815C48.7751 41.276 48.7219 41.8715 48.7402 42.4648C48.7684 43.8257 49.0856 45.1651 49.6706 46.3942C49.9827 47.039 50.4015 47.6321 50.7098 48.2785C51.005 48.9192 51.2641 49.5758 51.486 50.2454C51.587 50.5376 51.598 50.8626 51.6379 51.1742C51.7689 52.2925 51.7173 53.4247 51.485 54.5264C51.3678 55.1145 50.9914 55.6703 50.6542 56.1899C50.1812 56.9187 49.6087 57.5823 49.1311 58.3084C48.8163 58.7869 48.5936 59.3264 48.3402 59.8182C48.2817 59.677 48.1985 59.4756 48.1147 59.2745C47.6082 58.0577 46.7617 57.0524 46.0586 55.9581C45.5811 55.2149 45.2285 54.4383 45.2054 53.532C45.1843 52.7031 45.0713 51.8729 45.1034 51.0474C45.1451 50.3195 45.2527 49.5969 45.4246 48.8883C45.6053 48.1042 45.8268 47.33 46.0883 46.569C46.2926 45.9987 46.5275 45.4399 46.7921 44.8949C47.4294 43.5176 48.0816 42.1472 48.7262 40.7734C48.734 40.7434 48.7366 40.7124 48.734 40.6815L48.7958 40.6815Z" fill="#FFE781"/> -<path d="M56.3391 66.4194C56.3391 67.5659 56.3391 68.7125 56.3391 69.859C56.3391 72.8138 56.3231 75.7688 56.3495 78.7234C56.3568 79.5347 56.1306 80.2619 55.813 80.9789C55.2052 82.3509 54.3468 83.5643 53.4264 84.7375C52.5143 85.919 51.523 87.0371 50.4592 88.0841C49.9656 88.5624 49.4669 89.0355 48.9203 89.559V89.1938C48.9203 84.9785 48.9108 80.7632 48.9302 76.548C48.9332 75.8945 49.1962 75.2797 49.5607 74.7377C49.9415 74.1648 50.3527 73.6127 50.7926 73.0839C51.1104 72.7063 51.4982 72.3867 51.863 72.0502C52.223 71.7181 52.5994 71.4037 52.9577 71.0697C53.4309 70.6285 53.9259 70.2046 54.3533 69.7216C55.0775 68.9031 55.7951 68.0691 56.1144 66.9839C56.1428 66.8875 56.1729 66.7916 56.2027 66.6957C56.2318 66.602 56.2617 66.5086 56.2912 66.415L56.3391 66.4194Z" fill="#FFE781"/> -<path d="M55.1646 53.272V54.3223C55.1646 57.4428 55.149 60.5634 55.1764 63.6836C55.1826 64.3942 54.9813 65.0237 54.7096 65.6476C54.2421 66.7214 53.5967 67.6926 52.9056 68.629C52.514 69.1387 52.0936 69.6257 51.6466 70.0876C50.7924 71.0045 49.9217 71.9059 49.0569 72.8129C48.9891 72.884 48.9146 72.9485 48.7969 73.0599V72.6722C48.7969 69.1385 48.797 65.6047 48.7973 62.0709C48.7975 61.4324 49.0272 60.8826 49.3619 60.3389C49.9268 59.4212 50.6616 58.661 51.4256 57.9243C51.9543 57.4146 52.5233 56.947 53.0678 56.4534C53.6764 55.8803 54.2003 55.2234 54.6235 54.5024C54.8508 54.132 54.9558 53.6861 55.1161 53.2743L55.1646 53.272Z" fill="#FFE781"/> -<path d="M47.7935 73.0434C47.4297 72.6645 47.0686 72.283 46.7015 71.9074C46.3482 71.546 45.9665 71.2099 45.6365 70.8285C44.851 69.9209 44.0303 69.035 43.334 68.0612C42.6725 67.1362 42.0772 66.15 41.6797 65.0687C41.5777 64.8164 41.5196 64.5484 41.5079 64.2764C41.4972 60.6299 41.4952 56.9835 41.502 53.337C41.5043 53.313 41.5083 53.2892 41.5142 53.2657C41.8118 54.3065 42.3763 55.2513 43.1519 56.0065C44.2008 57.0266 45.2621 58.0339 46.3102 59.0548C47.0521 59.7776 47.5239 60.6671 47.8411 61.6447C47.8621 61.7238 47.8708 61.8057 47.867 61.8875C47.8682 65.5236 47.8685 69.1597 47.868 72.7959C47.868 72.8643 47.868 72.9328 47.868 73.0012L47.7935 73.0434Z" fill="#FFE781"/> -<path d="M73.1358 17.6354V49.1638H67.681C67.3561 49.0751 67.0069 49.0348 66.7117 48.887C66.1718 48.6367 65.6593 48.3312 65.1824 47.9754C64.5444 47.4524 63.9385 46.8914 63.3681 46.2955C62.9965 45.9057 62.6559 45.4877 62.3492 45.0451C61.804 44.2656 61.3419 43.4312 60.9701 42.5556C60.6495 41.8222 60.3787 41.066 60.3165 40.2692C60.2469 39.379 60.2625 38.4821 60.2436 37.588C60.236 37.2273 60.2922 36.8546 60.2196 36.5082C60.0547 35.7213 59.8445 34.9426 59.6223 34.1693C59.334 33.1655 58.8777 32.2525 58.0777 31.5444C57.5917 31.1142 57.0343 30.8343 56.3809 30.8328C52.6726 30.8242 48.9643 30.8247 45.2561 30.8342C45.1064 30.8397 44.9608 30.8847 44.8341 30.9645C43.7776 31.6193 42.7176 32.2695 41.6829 32.9575C41.423 33.1303 41.2843 33.0698 41.0899 32.9085C40.4093 32.3436 39.7115 31.799 39.0411 31.2225C38.6783 30.9105 38.2926 30.8165 37.816 30.8183C33.1885 30.8355 28.5609 30.8286 23.9333 30.8286H23.5684V17.6354H73.1358Z" fill="#83CDE1"/> -<path d="M68.9229 18.3987C68.6983 18.4402 68.4732 18.4795 68.2492 18.5236C67.4595 18.6789 66.6644 18.8121 65.8825 18.9997C65.219 19.1606 64.5643 19.3556 63.9209 19.5838C63.4331 19.7477 62.9624 19.9589 62.5157 20.2144C61.7703 20.6347 61.0552 21.1066 60.3758 21.6268C59.5673 22.2749 58.8605 23.0544 58.492 24.0418C58.3188 24.4757 58.243 24.9423 58.2699 25.4087C58.2968 25.8751 58.4259 26.3299 58.6479 26.741C58.6702 26.783 58.6861 26.8284 58.7049 26.8722L58.6294 26.9167C58.4913 26.6947 58.3086 26.4882 58.2247 26.2475C58.0669 25.7948 57.8833 25.3255 57.8653 24.8571C57.8635 24.3841 57.9522 23.9151 58.1265 23.4754C58.3721 22.7852 58.7822 22.1653 59.3212 21.6693C59.888 21.1598 60.4524 20.6296 61.1685 20.3066C61.6322 20.0975 62.0666 19.8232 62.5319 19.6182C63.0073 19.4106 63.4936 19.2288 63.9887 19.0738C64.5901 18.8835 65.2 18.716 65.8132 18.5673C66.1671 18.4831 66.5275 18.4286 66.8906 18.4043C67.5646 18.3566 68.2409 18.3392 68.9162 18.3091L68.9229 18.3987Z" fill="#292C68"/> -<path d="M59.2149 27.6298C58.8968 27.5586 58.5815 27.4691 58.26 27.4208C57.8588 27.3605 57.4533 27.3244 57.0484 27.2955C56.3557 27.246 55.6599 27.1548 54.9692 27.1809C53.7235 27.228 52.4822 27.3066 51.2582 27.6255C50.2229 27.8954 49.2138 28.2062 48.3622 28.8518C47.744 29.3206 47.2084 29.8978 46.6723 30.3931C46.6676 30.1835 46.705 29.975 46.7824 29.7801C46.8598 29.5852 46.9756 29.4079 47.1229 29.2586C47.7083 28.6349 48.3389 28.0588 49.1453 27.7153C49.9807 27.3595 50.8298 27.058 51.7443 26.9817C52.4433 26.9233 53.1407 26.8369 53.8408 26.8036C54.4815 26.7648 55.124 26.7662 55.7645 26.8079C56.4367 26.8607 57.102 27.0005 57.7708 27.0989C58.0909 27.146 58.4179 27.1616 58.7307 27.2372C58.9197 27.2829 59.0875 27.4163 59.2648 27.5103L59.2149 27.6298Z" fill="#292C68"/> -<path d="M46.4883 29.9431C46.5658 29.6062 46.6227 29.2629 46.7245 28.9335C47.0445 27.8869 47.7412 26.9963 48.6799 26.4338C49.2823 26.0559 49.9515 25.875 50.6339 25.7526C51.3002 25.6331 51.977 25.5625 52.6521 25.5029C53.1921 25.4552 53.7367 25.4368 54.2789 25.4417C54.7441 25.4459 55.2088 25.5015 55.6893 25.5355C55.6544 25.2449 55.6328 24.9479 55.5811 24.6562C55.4492 23.912 55.6202 23.2169 55.8955 22.5344C56.2416 21.6766 56.8279 20.9848 57.522 20.41C58.035 19.9613 58.6245 19.6084 59.2623 19.3681C59.9499 19.1293 60.6132 18.8137 61.3103 18.6115C61.8491 18.4552 62.4253 18.431 62.9821 18.3324C64.3337 18.0931 65.698 18.1479 67.0592 18.155C67.5464 18.1663 68.0317 18.218 68.5103 18.3097C68.0765 18.3587 67.6407 18.3948 67.2092 18.4597C66.5322 18.5614 65.8483 18.6428 65.1854 18.8059C64.3971 18.9972 63.6211 19.2356 62.8613 19.5196C62.3214 19.7328 61.8042 19.9994 61.3173 20.3153C60.6799 20.7166 60.068 21.1614 59.4687 21.6184C59.217 21.8115 59.0004 22.0465 58.8285 22.313C58.4001 22.9829 57.9737 23.6685 57.8989 24.4838C57.866 24.8268 57.8966 25.1729 57.9893 25.5048C58.1309 25.9432 58.3095 26.3688 58.5234 26.7769C58.6114 26.9564 58.7774 27.0977 58.9592 27.3187C58.3718 27.2122 57.8599 27.1184 57.3477 27.027C57.1306 26.9802 56.9112 26.9449 56.6904 26.9212C56.2313 26.8886 55.7714 26.8674 55.3107 26.8576C54.8448 26.8471 54.3785 26.8558 53.9124 26.855C53.1065 26.8536 52.3157 26.973 51.5177 27.0773C50.6812 27.1982 49.8684 27.4475 49.1079 27.8165C47.9868 28.3201 47.0805 29.2049 46.5502 30.3136L46.4883 29.9431Z" fill="white"/> -<path d="M48.4646 96H48.2166C48.2001 95.9769 48.1887 95.9457 48.1664 95.9318C47.1598 95.3032 46.1455 94.6865 45.1469 94.0453C44.4209 93.5791 43.6931 93.1104 43.0062 92.5898C41.9597 91.7965 40.933 90.9772 39.9261 90.1321C38.8693 89.2434 37.8377 88.3237 36.8172 87.3934C36.2415 86.8687 35.7062 86.2992 35.1602 85.7426C34.6917 85.265 34.2321 84.7787 33.7722 84.2928C33.5324 84.0395 33.2893 83.7879 33.0675 83.5192C32.5489 82.8908 32.0372 82.2567 31.5325 81.6168C30.9044 80.8168 30.2616 80.0263 29.6758 79.1958C29.1323 78.4252 28.6403 77.6168 28.1534 76.8082C27.572 75.8424 26.9746 74.8817 26.4676 73.8767C25.8872 72.726 25.3846 71.5351 24.8752 70.3501C24.5552 69.6055 24.253 68.8501 24.0006 68.0806C23.7135 67.2058 23.4673 66.3156 23.2469 65.4214C23.0313 64.5467 22.8704 63.6586 22.6858 62.7764C22.6028 62.3797 22.4964 61.9861 22.4434 61.5854C22.3593 60.9487 22.3103 60.3073 22.248 59.6678C22.1659 58.8253 22.0154 57.9827 22.0145 57.14C21.9997 43.5499 21.9962 29.9599 22.0041 16.3698V16.0107H22.4653C39.7284 16.0107 56.9916 16.0106 74.2547 16.0103C74.3991 16.0103 74.5435 16.0036 74.6879 16V57.4884C74.6565 57.5877 74.633 57.6894 74.6177 57.7925C74.5893 58.1807 74.5852 58.5712 74.5455 58.958C74.4758 59.636 74.3927 60.3127 74.3035 60.9884C74.2172 61.6426 74.1544 62.3033 74.0132 62.9462C73.7658 64.0726 73.5056 65.1993 73.1786 66.3045C72.7712 67.6819 72.3679 69.0694 71.8215 70.3942C71.2107 71.8748 70.4809 73.3109 69.729 74.7272C69.097 75.9178 68.3966 77.0767 67.6576 78.2044C66.9068 79.35 66.0989 80.4613 65.2648 81.5483C64.6006 82.4137 63.8808 83.2393 63.1468 84.0473C62.2862 84.9947 61.4121 85.9334 60.4917 86.8218C59.4605 87.8171 58.3801 88.7624 57.3035 89.7094C56.5609 90.3625 55.8151 91.0175 55.0231 91.6075C53.7865 92.5287 52.527 93.4189 51.2447 94.2782C50.3413 94.8868 49.3929 95.4285 48.4646 96ZM23.5324 17.6137V18.0776C23.5324 29.974 23.5333 41.8704 23.5351 53.7668C23.5352 54.3832 23.5643 55.0001 23.5962 55.6159C23.6507 56.6695 23.6977 57.7241 23.7864 58.7751C23.8601 59.6468 23.9215 60.5287 24.1087 61.3796C24.4501 62.9313 24.8725 64.4655 25.276 66.003C25.7701 67.8857 26.5559 69.6576 27.3869 71.4086C27.8184 72.3178 28.2679 73.2217 28.7685 74.094C29.4253 75.2383 30.1052 76.3729 30.8413 77.4671C31.4875 78.4279 32.209 79.3399 32.9265 80.2503C33.6712 81.195 34.4235 82.1364 35.2234 83.0339C35.9735 83.8756 36.7826 84.6655 37.58 85.464C38.2936 86.1786 39.0183 86.8822 39.754 87.5746C40.2458 88.0366 40.7517 88.4864 41.2777 88.9088C42.1817 89.6347 43.1018 90.3408 44.0237 91.0439C44.7349 91.5864 45.4477 92.1282 46.1814 92.6391C46.7639 93.0448 47.391 93.3861 47.9739 93.7913C48.2028 93.9504 48.3723 94.0691 48.6404 93.885C49.109 93.5634 49.6029 93.2784 50.0674 92.9513C50.9726 92.3139 51.8752 91.6719 52.7597 91.0062C53.7024 90.2967 54.6385 89.5767 55.5479 88.8254C56.2346 88.2579 56.8858 87.6455 57.5328 87.032C58.3741 86.2342 59.2163 85.4355 60.0199 84.6004C60.8655 83.7215 61.6789 82.8105 62.4823 81.8925C63.1205 81.1634 63.759 80.4295 64.3315 79.6494C65.124 78.5696 65.8509 77.4419 66.613 76.3396C67.4768 75.0905 68.1483 73.7311 68.8837 72.4082C69.4949 71.2705 70.013 70.0851 70.433 68.8638C70.9205 67.5107 71.4356 66.1632 71.8297 64.7821C72.3362 62.9741 72.6934 61.1277 72.8979 59.2613C73.0105 58.2775 73.137 57.2874 73.1382 56.3001C73.1542 43.5147 73.1578 30.7293 73.1488 17.9439V17.6137H23.5324Z" fill="#E52521"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM112.448 57.24H115.52V67.944H115.64L117.296 65.688L120.104 62.472H123.584L119.264 67.32L124.04 75H120.392L117.176 69.384L115.52 71.184V75H112.448V57.24ZM135.117 75C134.445 75 133.909 74.808 133.509 74.424C133.125 74.024 132.885 73.496 132.789 72.84H132.645C132.437 73.656 132.013 74.272 131.373 74.688C130.733 75.088 129.941 75.288 128.997 75.288C127.717 75.288 126.733 74.952 126.045 74.28C125.357 73.608 125.013 72.712 125.013 71.592C125.013 70.296 125.477 69.336 126.405 68.712C127.333 68.072 128.653 67.752 130.365 67.752H132.501V66.84C132.501 66.136 132.317 65.592 131.949 65.208C131.581 64.824 130.989 64.632 130.173 64.632C129.453 64.632 128.869 64.792 128.421 65.112C127.989 65.416 127.621 65.784 127.317 66.216L125.493 64.584C125.957 63.864 126.573 63.288 127.341 62.856C128.109 62.408 129.125 62.184 130.389 62.184C132.085 62.184 133.373 62.568 134.253 63.336C135.133 64.104 135.573 65.208 135.573 66.648V72.552H136.821V75H135.117ZM130.029 73.056C130.717 73.056 131.301 72.904 131.781 72.6C132.261 72.296 132.501 71.848 132.501 71.256V69.6H130.533C128.933 69.6 128.133 70.112 128.133 71.136V71.544C128.133 72.056 128.293 72.44 128.613 72.696C128.949 72.936 129.421 73.056 130.029 73.056ZM139.931 64.896H138.083V62.472H139.931V60.672C139.931 59.568 140.219 58.72 140.795 58.128C141.387 57.536 142.251 57.24 143.387 57.24H145.571V59.688H143.003V62.472H145.571V64.896H143.003V75H139.931V64.896ZM151.61 75C150.554 75 149.746 74.728 149.186 74.184C148.642 73.624 148.37 72.832 148.37 71.808V64.92H146.522V62.472H147.482C147.946 62.472 148.258 62.368 148.418 62.16C148.594 61.936 148.682 61.608 148.682 61.176V59.04H151.442V62.472H154.01V64.92H151.442V72.552H153.818V75H151.61ZM165.89 75C165.218 75 164.682 74.808 164.282 74.424C163.898 74.024 163.658 73.496 163.562 72.84H163.418C163.21 73.656 162.786 74.272 162.146 74.688C161.506 75.088 160.714 75.288 159.77 75.288C158.49 75.288 157.506 74.952 156.818 74.28C156.13 73.608 155.786 72.712 155.786 71.592C155.786 70.296 156.25 69.336 157.178 68.712C158.106 68.072 159.426 67.752 161.138 67.752H163.274V66.84C163.274 66.136 163.09 65.592 162.722 65.208C162.354 64.824 161.762 64.632 160.946 64.632C160.226 64.632 159.642 64.792 159.194 65.112C158.762 65.416 158.394 65.784 158.09 66.216L156.266 64.584C156.73 63.864 157.346 63.288 158.114 62.856C158.882 62.408 159.898 62.184 161.162 62.184C162.858 62.184 164.146 62.568 165.026 63.336C165.906 64.104 166.346 65.208 166.346 66.648V72.552H167.594V75H165.89ZM160.802 73.056C161.49 73.056 162.074 72.904 162.554 72.6C163.034 72.296 163.274 71.848 163.274 71.256V69.6H161.306C159.706 69.6 158.906 70.112 158.906 71.136V71.544C158.906 72.056 159.066 72.44 159.386 72.696C159.722 72.936 160.194 73.056 160.802 73.056ZM161.546 61.056L159.698 60.168L161.978 55.68L164.57 56.952L161.546 61.056ZM170.081 75V62.472H173.153V65.064H173.273C173.353 64.728 173.473 64.408 173.633 64.104C173.809 63.784 174.033 63.504 174.305 63.264C174.577 63.024 174.897 62.832 175.265 62.688C175.649 62.544 176.089 62.472 176.585 62.472H177.257V65.376H176.297C175.257 65.376 174.473 65.528 173.945 65.832C173.417 66.136 173.153 66.632 173.153 67.32V75H170.081ZM179.503 57.24H182.575V64.56H182.695C182.951 63.888 183.351 63.328 183.895 62.88C184.455 62.416 185.223 62.184 186.199 62.184C187.495 62.184 188.487 62.608 189.175 63.456C189.863 64.304 190.207 65.512 190.207 67.08V75H187.135V67.392C187.135 66.496 186.975 65.824 186.655 65.376C186.335 64.928 185.807 64.704 185.071 64.704C184.751 64.704 184.439 64.752 184.135 64.848C183.847 64.928 183.583 65.056 183.343 65.232C183.119 65.392 182.935 65.6 182.791 65.856C182.647 66.096 182.575 66.384 182.575 66.72V75H179.503V57.24ZM193.612 75V62.472H196.684V65.064H196.804C196.884 64.728 197.004 64.408 197.164 64.104C197.34 63.784 197.564 63.504 197.836 63.264C198.108 63.024 198.428 62.832 198.796 62.688C199.18 62.544 199.62 62.472 200.116 62.472H200.788V65.376H199.828C198.788 65.376 198.004 65.528 197.476 65.832C196.948 66.136 196.684 66.632 196.684 67.32V75H193.612ZM207.981 75.288C207.053 75.288 206.221 75.136 205.485 74.832C204.765 74.512 204.149 74.072 203.637 73.512C203.141 72.936 202.757 72.248 202.485 71.448C202.213 70.632 202.077 69.72 202.077 68.712C202.077 67.72 202.205 66.824 202.461 66.024C202.733 65.224 203.117 64.544 203.613 63.984C204.109 63.408 204.717 62.968 205.437 62.664C206.157 62.344 206.973 62.184 207.885 62.184C208.861 62.184 209.709 62.352 210.429 62.688C211.149 63.024 211.741 63.48 212.205 64.056C212.669 64.632 213.013 65.304 213.237 66.072C213.477 66.824 213.597 67.632 213.597 68.496V69.504H205.269V69.816C205.269 70.728 205.525 71.464 206.037 72.024C206.549 72.568 207.309 72.84 208.317 72.84C209.085 72.84 209.709 72.68 210.189 72.36C210.685 72.04 211.125 71.632 211.509 71.136L213.165 72.984C212.653 73.704 211.949 74.272 211.053 74.688C210.173 75.088 209.149 75.288 207.981 75.288ZM207.933 64.488C207.117 64.488 206.469 64.76 205.989 65.304C205.509 65.848 205.269 66.552 205.269 67.416V67.608H210.405V67.392C210.405 66.528 210.189 65.832 209.757 65.304C209.341 64.76 208.733 64.488 207.933 64.488ZM216.299 62.472H219.371V64.536H219.467C219.691 63.816 220.115 63.248 220.739 62.832C221.363 62.4 222.091 62.184 222.923 62.184C224.523 62.184 225.739 62.752 226.571 63.888C227.419 65.008 227.843 66.616 227.843 68.712C227.843 70.824 227.419 72.448 226.571 73.584C225.739 74.72 224.523 75.288 222.923 75.288C222.091 75.288 221.363 75.072 220.739 74.64C220.131 74.208 219.707 73.632 219.467 72.912H219.371V79.8H216.299V62.472ZM221.939 72.744C222.739 72.744 223.387 72.48 223.883 71.952C224.379 71.424 224.627 70.712 224.627 69.816V67.656C224.627 66.76 224.379 66.048 223.883 65.52C223.387 64.976 222.739 64.704 221.939 64.704C221.203 64.704 220.587 64.888 220.091 65.256C219.611 65.624 219.371 66.112 219.371 66.72V70.704C219.371 71.36 219.611 71.864 220.091 72.216C220.587 72.568 221.203 72.744 221.939 72.744ZM230.69 62.472H233.762V64.536H233.858C234.082 63.816 234.506 63.248 235.13 62.832C235.754 62.4 236.482 62.184 237.314 62.184C238.914 62.184 240.13 62.752 240.962 63.888C241.81 65.008 242.234 66.616 242.234 68.712C242.234 70.824 241.81 72.448 240.962 73.584C240.13 74.72 238.914 75.288 237.314 75.288C236.482 75.288 235.754 75.072 235.13 74.64C234.522 74.208 234.098 73.632 233.858 72.912H233.762V79.8H230.69V62.472ZM236.33 72.744C237.13 72.744 237.778 72.48 238.274 71.952C238.77 71.424 239.018 70.712 239.018 69.816V67.656C239.018 66.76 238.77 66.048 238.274 65.52C237.778 64.976 237.13 64.704 236.33 64.704C235.594 64.704 234.978 64.888 234.482 65.256C234.002 65.624 233.762 66.112 233.762 66.72V70.704C233.762 71.36 234.002 71.864 234.482 72.216C234.978 72.568 235.594 72.744 236.33 72.744ZM252.569 72.912H252.449C252.337 73.232 252.185 73.536 251.993 73.824C251.817 74.096 251.585 74.344 251.297 74.568C251.025 74.792 250.689 74.968 250.289 75.096C249.905 75.224 249.457 75.288 248.945 75.288C247.649 75.288 246.657 74.864 245.969 74.016C245.281 73.168 244.937 71.96 244.937 70.392V62.472H248.009V70.08C248.009 70.944 248.177 71.608 248.513 72.072C248.849 72.52 249.385 72.744 250.121 72.744C250.425 72.744 250.721 72.704 251.009 72.624C251.313 72.544 251.577 72.424 251.801 72.264C252.025 72.088 252.209 71.88 252.353 71.64C252.497 71.384 252.569 71.088 252.569 70.752V62.472H255.641V75H252.569V72.912ZM259.19 75V62.472H262.262V65.064H262.382C262.462 64.728 262.582 64.408 262.742 64.104C262.918 63.784 263.142 63.504 263.414 63.264C263.686 63.024 264.006 62.832 264.374 62.688C264.758 62.544 265.198 62.472 265.694 62.472H266.366V65.376H265.406C264.366 65.376 263.582 65.528 263.054 65.832C262.526 66.136 262.262 66.632 262.262 67.32V75H259.19Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/skagabyggd.svg b/libs/application/templates/financial-aid/src/svg/skagabyggd.svg deleted file mode 100644 index 038b4a818d38..000000000000 --- a/libs/application/templates/financial-aid/src/svg/skagabyggd.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.606 96C30.4519 89.1714 16.7516 75.392 17.0034 58.353V16.6189C17.0034 16.4547 17.0686 16.2973 17.1847 16.1813C17.3007 16.0652 17.4581 16 17.6222 16H77.5826C77.6645 15.9991 77.7457 16.0144 77.8216 16.0451C77.8976 16.0757 77.9666 16.1212 78.0248 16.1787C78.0831 16.2363 78.1293 16.3048 78.1609 16.3804C78.1924 16.4559 78.2086 16.537 78.2086 16.6189V58.353C78.4533 75.392 64.753 89.1714 47.606 96Z" fill="#848484"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM112.448 57.24H115.52V67.944H115.64L117.296 65.688L120.104 62.472H123.584L119.264 67.32L124.04 75H120.392L117.176 69.384L115.52 71.184V75H112.448V57.24ZM135.117 75C134.445 75 133.909 74.808 133.509 74.424C133.125 74.024 132.885 73.496 132.789 72.84H132.645C132.437 73.656 132.013 74.272 131.373 74.688C130.733 75.088 129.941 75.288 128.997 75.288C127.717 75.288 126.733 74.952 126.045 74.28C125.357 73.608 125.013 72.712 125.013 71.592C125.013 70.296 125.477 69.336 126.405 68.712C127.333 68.072 128.653 67.752 130.365 67.752H132.501V66.84C132.501 66.136 132.317 65.592 131.949 65.208C131.581 64.824 130.989 64.632 130.173 64.632C129.453 64.632 128.869 64.792 128.421 65.112C127.989 65.416 127.621 65.784 127.317 66.216L125.493 64.584C125.957 63.864 126.573 63.288 127.341 62.856C128.109 62.408 129.125 62.184 130.389 62.184C132.085 62.184 133.373 62.568 134.253 63.336C135.133 64.104 135.573 65.208 135.573 66.648V72.552H136.821V75H135.117ZM130.029 73.056C130.717 73.056 131.301 72.904 131.781 72.6C132.261 72.296 132.501 71.848 132.501 71.256V69.6H130.533C128.933 69.6 128.133 70.112 128.133 71.136V71.544C128.133 72.056 128.293 72.44 128.613 72.696C128.949 72.936 129.421 73.056 130.029 73.056ZM150.611 76.056C150.611 76.712 150.491 77.288 150.251 77.784C150.027 78.296 149.651 78.72 149.123 79.056C148.595 79.392 147.915 79.648 147.083 79.824C146.251 80 145.235 80.088 144.035 80.088C142.979 80.088 142.083 80.016 141.347 79.872C140.611 79.744 140.003 79.552 139.523 79.296C139.059 79.056 138.723 78.752 138.515 78.384C138.307 78.016 138.203 77.6 138.203 77.136C138.203 76.432 138.395 75.88 138.779 75.48C139.179 75.096 139.731 74.848 140.435 74.736V74.472C139.923 74.344 139.523 74.096 139.235 73.728C138.963 73.344 138.827 72.896 138.827 72.384C138.827 72.064 138.891 71.784 139.019 71.544C139.147 71.288 139.315 71.072 139.523 70.896C139.747 70.72 139.995 70.576 140.267 70.464C140.539 70.336 140.827 70.24 141.131 70.176V70.08C140.363 69.728 139.787 69.24 139.403 68.616C139.035 67.992 138.851 67.264 138.851 66.432C138.851 65.152 139.291 64.128 140.171 63.36C141.051 62.576 142.339 62.184 144.035 62.184C144.419 62.184 144.795 62.208 145.163 62.256C145.547 62.304 145.899 62.384 146.219 62.496V62.088C146.219 60.872 146.811 60.264 147.995 60.264H149.939V62.616H147.275V62.952C147.931 63.32 148.419 63.8 148.739 64.392C149.059 64.984 149.219 65.664 149.219 66.432C149.219 67.696 148.779 68.712 147.899 69.48C147.035 70.248 145.747 70.632 144.035 70.632C143.299 70.632 142.659 70.56 142.115 70.416C141.875 70.528 141.667 70.68 141.491 70.872C141.315 71.048 141.227 71.272 141.227 71.544C141.227 72.168 141.771 72.48 142.859 72.48H146.219C147.755 72.48 148.867 72.8 149.555 73.44C150.259 74.064 150.611 74.936 150.611 76.056ZM147.731 76.416C147.731 76.016 147.571 75.704 147.251 75.48C146.931 75.256 146.379 75.144 145.595 75.144H141.323C140.891 75.464 140.675 75.896 140.675 76.44C140.675 76.92 140.875 77.296 141.275 77.568C141.675 77.84 142.355 77.976 143.315 77.976H144.851C145.859 77.976 146.587 77.848 147.035 77.592C147.499 77.336 147.731 76.944 147.731 76.416ZM144.035 68.544C145.539 68.544 146.291 67.904 146.291 66.624V66.216C146.291 64.936 145.539 64.296 144.035 64.296C142.531 64.296 141.779 64.936 141.779 66.216V66.624C141.779 67.904 142.531 68.544 144.035 68.544ZM161.555 75C160.883 75 160.347 74.808 159.947 74.424C159.563 74.024 159.323 73.496 159.227 72.84H159.083C158.875 73.656 158.451 74.272 157.811 74.688C157.171 75.088 156.379 75.288 155.435 75.288C154.155 75.288 153.171 74.952 152.483 74.28C151.795 73.608 151.451 72.712 151.451 71.592C151.451 70.296 151.915 69.336 152.843 68.712C153.771 68.072 155.091 67.752 156.803 67.752H158.939V66.84C158.939 66.136 158.755 65.592 158.387 65.208C158.019 64.824 157.427 64.632 156.611 64.632C155.891 64.632 155.307 64.792 154.859 65.112C154.427 65.416 154.059 65.784 153.755 66.216L151.931 64.584C152.395 63.864 153.011 63.288 153.779 62.856C154.547 62.408 155.563 62.184 156.827 62.184C158.523 62.184 159.811 62.568 160.691 63.336C161.571 64.104 162.011 65.208 162.011 66.648V72.552H163.259V75H161.555ZM156.467 73.056C157.155 73.056 157.739 72.904 158.219 72.6C158.699 72.296 158.939 71.848 158.939 71.256V69.6H156.971C155.371 69.6 154.571 70.112 154.571 71.136V71.544C154.571 72.056 154.731 72.44 155.051 72.696C155.387 72.936 155.859 73.056 156.467 73.056ZM165.745 57.24H168.817V64.536H168.913C169.137 63.816 169.561 63.248 170.185 62.832C170.809 62.4 171.537 62.184 172.369 62.184C173.969 62.184 175.185 62.752 176.017 63.888C176.865 65.008 177.289 66.616 177.289 68.712C177.289 70.824 176.865 72.448 176.017 73.584C175.185 74.72 173.969 75.288 172.369 75.288C171.537 75.288 170.809 75.072 170.185 74.64C169.577 74.208 169.153 73.632 168.913 72.912H168.817V75H165.745V57.24ZM171.385 72.744C172.185 72.744 172.833 72.48 173.329 71.952C173.825 71.424 174.073 70.712 174.073 69.816V67.656C174.073 66.76 173.825 66.048 173.329 65.52C172.833 64.976 172.185 64.704 171.385 64.704C170.649 64.704 170.033 64.888 169.537 65.256C169.057 65.624 168.817 66.112 168.817 66.72V70.704C168.817 71.36 169.057 71.864 169.537 72.216C170.033 72.568 170.649 72.744 171.385 72.744ZM187.604 62.472H190.484L185.444 77.232C185.284 77.68 185.1 78.064 184.892 78.384C184.7 78.72 184.468 78.992 184.196 79.2C183.924 79.408 183.596 79.56 183.212 79.656C182.828 79.752 182.38 79.8 181.868 79.8H180.02V77.352H182.276L182.852 75.6L178.364 62.472H181.412L183.596 69.096L184.412 72.264H184.556L185.42 69.096L187.604 62.472ZM203.228 76.056C203.228 76.712 203.108 77.288 202.868 77.784C202.644 78.296 202.268 78.72 201.74 79.056C201.212 79.392 200.532 79.648 199.7 79.824C198.868 80 197.852 80.088 196.652 80.088C195.596 80.088 194.7 80.016 193.964 79.872C193.228 79.744 192.62 79.552 192.14 79.296C191.676 79.056 191.34 78.752 191.132 78.384C190.924 78.016 190.82 77.6 190.82 77.136C190.82 76.432 191.012 75.88 191.396 75.48C191.796 75.096 192.348 74.848 193.052 74.736V74.472C192.54 74.344 192.14 74.096 191.852 73.728C191.58 73.344 191.444 72.896 191.444 72.384C191.444 72.064 191.508 71.784 191.636 71.544C191.764 71.288 191.932 71.072 192.14 70.896C192.364 70.72 192.612 70.576 192.884 70.464C193.156 70.336 193.444 70.24 193.748 70.176V70.08C192.98 69.728 192.404 69.24 192.02 68.616C191.652 67.992 191.468 67.264 191.468 66.432C191.468 65.152 191.908 64.128 192.788 63.36C193.668 62.576 194.956 62.184 196.652 62.184C197.036 62.184 197.412 62.208 197.78 62.256C198.164 62.304 198.516 62.384 198.836 62.496V62.088C198.836 60.872 199.428 60.264 200.612 60.264H202.556V62.616H199.892V62.952C200.548 63.32 201.036 63.8 201.356 64.392C201.676 64.984 201.836 65.664 201.836 66.432C201.836 67.696 201.396 68.712 200.516 69.48C199.652 70.248 198.364 70.632 196.652 70.632C195.916 70.632 195.276 70.56 194.732 70.416C194.492 70.528 194.284 70.68 194.108 70.872C193.932 71.048 193.844 71.272 193.844 71.544C193.844 72.168 194.388 72.48 195.476 72.48H198.836C200.372 72.48 201.484 72.8 202.172 73.44C202.876 74.064 203.228 74.936 203.228 76.056ZM200.348 76.416C200.348 76.016 200.188 75.704 199.868 75.48C199.548 75.256 198.996 75.144 198.212 75.144H193.94C193.508 75.464 193.292 75.896 193.292 76.44C193.292 76.92 193.492 77.296 193.892 77.568C194.292 77.84 194.972 77.976 195.932 77.976H197.468C198.476 77.976 199.204 77.848 199.652 77.592C200.116 77.336 200.348 76.944 200.348 76.416ZM196.652 68.544C198.156 68.544 198.908 67.904 198.908 66.624V66.216C198.908 64.936 198.156 64.296 196.652 64.296C195.148 64.296 194.396 64.936 194.396 66.216V66.624C194.396 67.904 195.148 68.544 196.652 68.544ZM216.447 76.056C216.447 76.712 216.327 77.288 216.087 77.784C215.863 78.296 215.487 78.72 214.959 79.056C214.431 79.392 213.751 79.648 212.919 79.824C212.087 80 211.071 80.088 209.871 80.088C208.815 80.088 207.919 80.016 207.183 79.872C206.447 79.744 205.839 79.552 205.359 79.296C204.895 79.056 204.559 78.752 204.351 78.384C204.143 78.016 204.039 77.6 204.039 77.136C204.039 76.432 204.231 75.88 204.615 75.48C205.015 75.096 205.567 74.848 206.271 74.736V74.472C205.759 74.344 205.359 74.096 205.071 73.728C204.799 73.344 204.663 72.896 204.663 72.384C204.663 72.064 204.727 71.784 204.855 71.544C204.983 71.288 205.151 71.072 205.359 70.896C205.583 70.72 205.831 70.576 206.103 70.464C206.375 70.336 206.663 70.24 206.967 70.176V70.08C206.199 69.728 205.623 69.24 205.239 68.616C204.871 67.992 204.687 67.264 204.687 66.432C204.687 65.152 205.127 64.128 206.007 63.36C206.887 62.576 208.175 62.184 209.871 62.184C210.255 62.184 210.631 62.208 210.999 62.256C211.383 62.304 211.735 62.384 212.055 62.496V62.088C212.055 60.872 212.647 60.264 213.831 60.264H215.775V62.616H213.111V62.952C213.767 63.32 214.255 63.8 214.575 64.392C214.895 64.984 215.055 65.664 215.055 66.432C215.055 67.696 214.615 68.712 213.735 69.48C212.871 70.248 211.583 70.632 209.871 70.632C209.135 70.632 208.495 70.56 207.951 70.416C207.711 70.528 207.503 70.68 207.327 70.872C207.151 71.048 207.063 71.272 207.063 71.544C207.063 72.168 207.607 72.48 208.695 72.48H212.055C213.591 72.48 214.703 72.8 215.391 73.44C216.095 74.064 216.447 74.936 216.447 76.056ZM213.567 76.416C213.567 76.016 213.407 75.704 213.087 75.48C212.767 75.256 212.215 75.144 211.431 75.144H207.159C206.727 75.464 206.511 75.896 206.511 76.44C206.511 76.92 206.711 77.296 207.111 77.568C207.511 77.84 208.191 77.976 209.151 77.976H210.687C211.695 77.976 212.423 77.848 212.871 77.592C213.335 77.336 213.567 76.944 213.567 76.416ZM209.871 68.544C211.375 68.544 212.127 67.904 212.127 66.624V66.216C212.127 64.936 211.375 64.296 209.871 64.296C208.367 64.296 207.615 64.936 207.615 66.216V66.624C207.615 67.904 208.367 68.544 209.871 68.544ZM227.369 58.224L225.593 59.376C226.697 60.528 227.585 61.856 228.257 63.36C228.929 64.864 229.265 66.536 229.265 68.376C229.265 69.56 229.121 70.592 228.833 71.472C228.545 72.336 228.137 73.056 227.609 73.632C227.097 74.192 226.481 74.608 225.761 74.88C225.041 75.152 224.241 75.288 223.361 75.288C222.417 75.288 221.569 75.144 220.817 74.856C220.081 74.552 219.449 74.128 218.921 73.584C218.409 73.04 218.017 72.376 217.745 71.592C217.473 70.808 217.337 69.936 217.337 68.976C217.337 68.08 217.449 67.264 217.673 66.528C217.913 65.792 218.249 65.16 218.681 64.632C219.113 64.104 219.633 63.696 220.241 63.408C220.865 63.12 221.553 62.976 222.305 62.976C223.169 62.976 223.889 63.192 224.465 63.624C225.057 64.04 225.521 64.608 225.857 65.328L226.001 65.256C225.809 64.44 225.465 63.664 224.969 62.928C224.489 62.192 223.905 61.488 223.217 60.816L221.153 62.112L220.049 60.792L221.921 59.664C221.361 59.2 220.769 58.768 220.145 58.368C219.537 57.968 218.921 57.592 218.297 57.24H222.977C223.201 57.368 223.417 57.52 223.625 57.696C223.833 57.856 224.049 58.024 224.273 58.2L226.289 56.928L227.369 58.224ZM223.313 72.936C224.161 72.936 224.833 72.664 225.329 72.12C225.825 71.576 226.073 70.816 226.073 69.84V68.448C226.073 67.472 225.825 66.712 225.329 66.168C224.833 65.624 224.161 65.352 223.313 65.352C222.449 65.352 221.769 65.624 221.273 66.168C220.777 66.712 220.529 67.472 220.529 68.448V69.84C220.529 70.816 220.777 71.576 221.273 72.12C221.769 72.664 222.449 72.936 223.313 72.936Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/skagafjordur.svg b/libs/application/templates/financial-aid/src/svg/skagafjordur.svg deleted file mode 100644 index 96d3f326d8a7..000000000000 --- a/libs/application/templates/financial-aid/src/svg/skagafjordur.svg +++ /dev/null @@ -1,8 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.9809 96C30.3165 96 16 81.6676 16 64.0032V16H79.9777V64.0032C79.9777 81.6676 65.6612 96 47.9809 96Z" fill="#033390"/> -<path d="M43.8201 48.6664C41.4925 48.6345 39.1649 48.6504 36.8373 48.6504V48.6026H36.7895C36.7895 42.3372 36.7895 36.0717 36.7735 29.8063C36.7735 29.2005 36.9808 29.0092 37.5547 29.041C38.3199 29.0729 39.1011 29.0889 39.8664 29.057C42.2737 28.9613 42.5447 25.8366 40.2171 25.3105C39.6591 24.9278 38.0649 25.725 38.575 24.5452C39.2287 21.8669 36.7097 22.6959 36.7735 21.5321C36.088 18.3117 31.927 18.9015 31.5603 22.0901C30.8269 22.2654 30.0936 22.4567 29.982 23.3974C29.424 23.8278 29.7428 24.2423 30.0138 24.6728C30.0776 24.9916 30.0457 25.2786 29.5993 25.2308C28.0051 25.0554 26.5702 25.6931 26.7297 27.5105C26.8891 29.7425 30.0936 28.7381 31.6081 29.1526C31.8313 30.731 31.5443 32.3412 31.7197 33.9354C31.6559 34.047 31.6559 34.1586 31.7197 34.2702C31.64 34.5891 31.64 34.892 31.7197 35.2108C31.6559 35.3224 31.6559 35.434 31.7197 35.5456C31.64 35.8645 31.64 36.1674 31.7197 36.4862C31.6559 36.5978 31.6559 36.7094 31.7197 36.821C31.64 37.1399 31.64 37.4428 31.7197 37.7616C31.6559 37.8732 31.6559 37.9848 31.7197 38.0964C31.64 38.4153 31.64 38.7182 31.7197 39.037C31.6559 39.1486 31.6559 39.2602 31.7197 39.3718C31.64 39.6907 31.64 39.9936 31.7197 40.3125C31.6559 40.4241 31.6559 40.5357 31.7197 40.6473C31.64 40.9661 31.64 41.269 31.7197 41.5879C31.6559 41.6995 31.6559 41.8111 31.7197 41.9227C31.64 42.2415 31.64 42.5444 31.7197 42.8633C31.6559 42.9749 31.6559 43.0865 31.7197 43.1981C31.64 43.5169 31.64 43.8198 31.7197 44.1387C31.6559 44.2503 31.6559 44.3619 31.7197 44.4735C31.6559 45.6692 31.6241 46.9127 31.7197 48.1243C31.64 48.6345 31.3052 48.6983 30.8588 48.6983C27.0804 48.8099 19.8584 47.4388 20.8469 53.481C21.6121 56.8131 26.65 57.4508 27.9891 54.1825C28.2123 53.7521 28.4196 53.7042 28.7544 54.0231C29.4399 54.8681 30.4284 55.6014 30.5718 56.7493C30.54 67.2714 30.5559 77.7776 30.54 88.2997C30.3327 89.6867 35.1474 91.5201 36.3271 92.1419C38.0489 92.8912 37.9214 92.6201 37.9214 90.9621C37.9214 79.5153 37.9214 68.0685 37.9214 56.6217C37.9533 55.4898 39.4359 54.6449 40.0417 53.7042C40.0896 53.7042 40.1533 53.7042 40.2012 53.7042C41.8114 57.4508 46.642 57.1797 47.7101 53.2419C48.1565 50.8505 46.3391 48.6983 43.8201 48.6664ZM32.3096 29.4874C32.2936 29.4555 32.3415 29.4077 32.3574 29.3599C32.3415 29.4077 32.2936 29.4555 32.3096 29.4874ZM30.0776 50.5317C30.0617 50.4998 30.1095 50.452 30.1254 50.4041C30.1095 50.452 30.0617 50.4998 30.0776 50.5317Z" fill="#FDFEFE"/> -<path d="M74.6209 25.1829C74.1745 23.7959 73.218 22.8234 72.0861 21.9785L72.0701 21.9625C72.0382 21.7872 71.9585 21.6756 71.7513 21.6756C67.9251 19.0929 62.951 19.1726 58.5508 19.7465C58.2638 19.8422 57.929 19.8262 57.5783 19.9856C57.0363 20.0335 55.2826 20.4799 54.2144 21.1335C53.3057 21.5002 52.5086 22.0263 51.8071 22.7278C51.2969 23.2379 50.5317 23.5249 50.4201 24.3539C49.4795 25.2786 49.0809 26.4583 48.8258 27.7019C48.3476 29.5193 48.3794 31.7832 49.4157 33.505V33.5687L49.4635 33.6006C49.9099 34.876 50.9303 36.1833 52.1897 36.7732C52.3173 37.1399 52.5723 37.3631 52.955 37.4109C53.6086 38.1602 54.4217 38.6704 55.3464 38.9892L55.3782 39.0052C55.3782 39.1805 55.4739 39.2603 55.6493 39.2603V39.3081C56.0319 39.5153 56.3826 39.8342 56.7493 40.0893C56.7652 40.1371 56.7971 40.169 56.845 40.169C57.2435 40.5835 57.658 40.998 58.0406 41.4125C58.0566 43.4532 58.0725 45.4938 58.0725 47.5345C58.0725 48.9055 58.2001 48.6504 56.9247 48.6504C52.4289 48.1403 51.1216 54.7086 55.3942 55.7768C55.9522 56.1275 56.9884 56.0319 56.7174 57.1797C56.5899 68.9454 56.7174 80.7589 56.6696 92.5404C56.6536 92.9549 56.7334 93.1303 57.2116 92.9231C59.4436 92.1897 61.6915 91.3926 63.6684 90.0534C64.6249 79.5791 63.6843 68.4193 64.0032 57.7058C64.0032 56.8131 63.9394 55.984 65.167 55.9522C65.2148 55.9522 65.2626 55.8406 65.3105 55.7768C65.3742 55.7768 65.4221 55.7608 65.4858 55.7608C65.5655 55.8246 65.6293 55.8565 65.6771 55.729C68.5628 55.0115 68.7222 50.0056 66.1873 49.32C66.1395 49.2722 66.0757 49.2403 66.0279 49.1925C65.996 48.9693 65.7569 49.049 65.5815 49.0171C64.6887 47.9968 62.4408 49.4476 62.5843 47.9809C62.6002 45.6054 62.6162 43.23 62.5683 40.8545C62.6321 39.9458 62.3133 39.1487 61.8509 38.3675C61.8828 38.1443 61.7234 38.0646 61.564 37.9689V37.9051L61.5002 37.8892C60.5755 36.2471 58.9015 35.5775 57.387 34.7166C57.1319 34.3021 56.7493 34.0311 56.271 33.9354C54.3579 31.9585 53.2419 28.8657 55.0434 26.4424C56.3188 25.0873 58.0566 24.609 59.6827 23.8916C61.0857 23.9235 62.4089 23.2539 63.8756 23.6206C65.9801 23.9713 66.825 23.9075 68.7222 25.1351C68.9932 25.3902 69.2483 25.6772 69.5193 25.9482C72.0382 30.0773 64.9757 34.2383 61.9785 30.9382C61.006 30.0933 62.1857 29.0729 62.951 30.0614C63.0944 30.2208 63.1263 30.444 63.5249 30.3962C64.3699 30.3005 64.051 29.7744 64.0351 29.3918C64.0829 28.2758 65.4699 28.5628 65.3105 30.2049C66.5062 29.599 66.5221 29.5831 65.8844 28.483C65.0235 27.399 66.1076 26.1714 65.0554 26.3627C62.3451 26.5381 58.0247 27.4787 58.9813 31.0976C60.432 37.0921 72.8354 35.9123 74.6369 30.7628C75.705 29.0729 75.3702 26.9526 74.6209 25.1829ZM73.6644 24.0669C73.6484 23.9713 73.6006 23.8916 73.5528 23.8278C73.6006 23.8916 73.6325 23.9713 73.6644 24.0669ZM71.5121 33.1702C71.544 33.1861 71.5918 33.218 71.6078 33.218C71.5759 33.218 71.544 33.1861 71.5121 33.1702ZM68.1801 32.6441C68.1642 32.7397 68.1004 32.7716 68.0207 32.7876C68.1004 32.7876 68.1642 32.7557 68.1801 32.6441Z" fill="#FDFEFE"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM112.448 57.24H115.52V67.944H115.64L117.296 65.688L120.104 62.472H123.584L119.264 67.32L124.04 75H120.392L117.176 69.384L115.52 71.184V75H112.448V57.24ZM135.117 75C134.445 75 133.909 74.808 133.509 74.424C133.125 74.024 132.885 73.496 132.789 72.84H132.645C132.437 73.656 132.013 74.272 131.373 74.688C130.733 75.088 129.941 75.288 128.997 75.288C127.717 75.288 126.733 74.952 126.045 74.28C125.357 73.608 125.013 72.712 125.013 71.592C125.013 70.296 125.477 69.336 126.405 68.712C127.333 68.072 128.653 67.752 130.365 67.752H132.501V66.84C132.501 66.136 132.317 65.592 131.949 65.208C131.581 64.824 130.989 64.632 130.173 64.632C129.453 64.632 128.869 64.792 128.421 65.112C127.989 65.416 127.621 65.784 127.317 66.216L125.493 64.584C125.957 63.864 126.573 63.288 127.341 62.856C128.109 62.408 129.125 62.184 130.389 62.184C132.085 62.184 133.373 62.568 134.253 63.336C135.133 64.104 135.573 65.208 135.573 66.648V72.552H136.821V75H135.117ZM130.029 73.056C130.717 73.056 131.301 72.904 131.781 72.6C132.261 72.296 132.501 71.848 132.501 71.256V69.6H130.533C128.933 69.6 128.133 70.112 128.133 71.136V71.544C128.133 72.056 128.293 72.44 128.613 72.696C128.949 72.936 129.421 73.056 130.029 73.056ZM150.611 76.056C150.611 76.712 150.491 77.288 150.251 77.784C150.027 78.296 149.651 78.72 149.123 79.056C148.595 79.392 147.915 79.648 147.083 79.824C146.251 80 145.235 80.088 144.035 80.088C142.979 80.088 142.083 80.016 141.347 79.872C140.611 79.744 140.003 79.552 139.523 79.296C139.059 79.056 138.723 78.752 138.515 78.384C138.307 78.016 138.203 77.6 138.203 77.136C138.203 76.432 138.395 75.88 138.779 75.48C139.179 75.096 139.731 74.848 140.435 74.736V74.472C139.923 74.344 139.523 74.096 139.235 73.728C138.963 73.344 138.827 72.896 138.827 72.384C138.827 72.064 138.891 71.784 139.019 71.544C139.147 71.288 139.315 71.072 139.523 70.896C139.747 70.72 139.995 70.576 140.267 70.464C140.539 70.336 140.827 70.24 141.131 70.176V70.08C140.363 69.728 139.787 69.24 139.403 68.616C139.035 67.992 138.851 67.264 138.851 66.432C138.851 65.152 139.291 64.128 140.171 63.36C141.051 62.576 142.339 62.184 144.035 62.184C144.419 62.184 144.795 62.208 145.163 62.256C145.547 62.304 145.899 62.384 146.219 62.496V62.088C146.219 60.872 146.811 60.264 147.995 60.264H149.939V62.616H147.275V62.952C147.931 63.32 148.419 63.8 148.739 64.392C149.059 64.984 149.219 65.664 149.219 66.432C149.219 67.696 148.779 68.712 147.899 69.48C147.035 70.248 145.747 70.632 144.035 70.632C143.299 70.632 142.659 70.56 142.115 70.416C141.875 70.528 141.667 70.68 141.491 70.872C141.315 71.048 141.227 71.272 141.227 71.544C141.227 72.168 141.771 72.48 142.859 72.48H146.219C147.755 72.48 148.867 72.8 149.555 73.44C150.259 74.064 150.611 74.936 150.611 76.056ZM147.731 76.416C147.731 76.016 147.571 75.704 147.251 75.48C146.931 75.256 146.379 75.144 145.595 75.144H141.323C140.891 75.464 140.675 75.896 140.675 76.44C140.675 76.92 140.875 77.296 141.275 77.568C141.675 77.84 142.355 77.976 143.315 77.976H144.851C145.859 77.976 146.587 77.848 147.035 77.592C147.499 77.336 147.731 76.944 147.731 76.416ZM144.035 68.544C145.539 68.544 146.291 67.904 146.291 66.624V66.216C146.291 64.936 145.539 64.296 144.035 64.296C142.531 64.296 141.779 64.936 141.779 66.216V66.624C141.779 67.904 142.531 68.544 144.035 68.544ZM161.555 75C160.883 75 160.347 74.808 159.947 74.424C159.563 74.024 159.323 73.496 159.227 72.84H159.083C158.875 73.656 158.451 74.272 157.811 74.688C157.171 75.088 156.379 75.288 155.435 75.288C154.155 75.288 153.171 74.952 152.483 74.28C151.795 73.608 151.451 72.712 151.451 71.592C151.451 70.296 151.915 69.336 152.843 68.712C153.771 68.072 155.091 67.752 156.803 67.752H158.939V66.84C158.939 66.136 158.755 65.592 158.387 65.208C158.019 64.824 157.427 64.632 156.611 64.632C155.891 64.632 155.307 64.792 154.859 65.112C154.427 65.416 154.059 65.784 153.755 66.216L151.931 64.584C152.395 63.864 153.011 63.288 153.779 62.856C154.547 62.408 155.563 62.184 156.827 62.184C158.523 62.184 159.811 62.568 160.691 63.336C161.571 64.104 162.011 65.208 162.011 66.648V72.552H163.259V75H161.555ZM156.467 73.056C157.155 73.056 157.739 72.904 158.219 72.6C158.699 72.296 158.939 71.848 158.939 71.256V69.6H156.971C155.371 69.6 154.571 70.112 154.571 71.136V71.544C154.571 72.056 154.731 72.44 155.051 72.696C155.387 72.936 155.859 73.056 156.467 73.056ZM166.369 64.896H164.521V62.472H166.369V60.672C166.369 59.568 166.657 58.72 167.233 58.128C167.825 57.536 168.689 57.24 169.825 57.24H172.009V59.688H169.441V62.472H172.009V64.896H169.441V75H166.369V64.896ZM174.135 62.472H177.207V76.512C177.207 77.568 176.943 78.376 176.415 78.936C175.887 79.512 175.047 79.8 173.895 79.8H172.215V77.352H174.135V62.472ZM175.671 60.648C175.031 60.648 174.567 60.504 174.279 60.216C174.007 59.928 173.871 59.56 173.871 59.112V58.632C173.871 58.184 174.007 57.816 174.279 57.528C174.567 57.24 175.031 57.096 175.671 57.096C176.295 57.096 176.751 57.24 177.039 57.528C177.327 57.816 177.471 58.184 177.471 58.632V59.112C177.471 59.56 177.327 59.928 177.039 60.216C176.751 60.504 176.295 60.648 175.671 60.648ZM185.736 75.288C184.84 75.288 184.032 75.136 183.312 74.832C182.608 74.528 182 74.088 181.488 73.512C180.992 72.936 180.608 72.248 180.336 71.448C180.064 70.632 179.928 69.72 179.928 68.712C179.928 67.704 180.064 66.8 180.336 66C180.608 65.2 180.992 64.52 181.488 63.96C182 63.384 182.608 62.944 183.312 62.64C184.032 62.336 184.84 62.184 185.736 62.184C186.632 62.184 187.44 62.336 188.16 62.64C188.88 62.944 189.488 63.384 189.984 63.96C190.496 64.52 190.888 65.2 191.16 66C191.432 66.8 191.568 67.704 191.568 68.712C191.568 69.72 191.432 70.632 191.16 71.448C190.888 72.248 190.496 72.936 189.984 73.512C189.488 74.088 188.88 74.528 188.16 74.832C187.44 75.136 186.632 75.288 185.736 75.288ZM185.736 72.816C186.552 72.816 187.192 72.568 187.656 72.072C188.12 71.576 188.352 70.848 188.352 69.888V67.56C188.352 66.616 188.12 65.896 187.656 65.4C187.192 64.904 186.552 64.656 185.736 64.656C184.936 64.656 184.304 64.904 183.84 65.4C183.376 65.896 183.144 66.616 183.144 67.56V69.888C183.144 70.848 183.376 71.576 183.84 72.072C184.304 72.568 184.936 72.816 185.736 72.816ZM183.24 60.48C182.616 60.48 182.176 60.352 181.92 60.096C181.664 59.824 181.536 59.488 181.536 59.088V58.584C181.536 58.184 181.664 57.856 181.92 57.6C182.176 57.328 182.616 57.192 183.24 57.192C183.864 57.192 184.304 57.328 184.56 57.6C184.816 57.856 184.944 58.184 184.944 58.584V59.088C184.944 59.488 184.816 59.824 184.56 60.096C184.304 60.352 183.864 60.48 183.24 60.48ZM188.28 60.48C187.656 60.48 187.216 60.352 186.96 60.096C186.704 59.824 186.576 59.488 186.576 59.088V58.584C186.576 58.184 186.704 57.856 186.96 57.6C187.216 57.328 187.656 57.192 188.28 57.192C188.904 57.192 189.344 57.328 189.6 57.6C189.856 57.856 189.984 58.184 189.984 58.584V59.088C189.984 59.488 189.856 59.824 189.6 60.096C189.344 60.352 188.904 60.48 188.28 60.48ZM194.292 75V62.472H197.364V65.064H197.484C197.564 64.728 197.684 64.408 197.844 64.104C198.02 63.784 198.244 63.504 198.516 63.264C198.788 63.024 199.108 62.832 199.476 62.688C199.86 62.544 200.3 62.472 200.796 62.472H201.468V65.376H200.508C199.468 65.376 198.684 65.528 198.156 65.832C197.628 66.136 197.364 66.632 197.364 67.32V75H194.292ZM212.884 58.224L211.108 59.376C212.212 60.528 213.1 61.856 213.772 63.36C214.444 64.864 214.78 66.536 214.78 68.376C214.78 69.56 214.636 70.592 214.348 71.472C214.06 72.336 213.652 73.056 213.124 73.632C212.612 74.192 211.996 74.608 211.276 74.88C210.556 75.152 209.756 75.288 208.876 75.288C207.932 75.288 207.084 75.144 206.332 74.856C205.596 74.552 204.964 74.128 204.436 73.584C203.924 73.04 203.532 72.376 203.26 71.592C202.988 70.808 202.852 69.936 202.852 68.976C202.852 68.08 202.964 67.264 203.188 66.528C203.428 65.792 203.764 65.16 204.196 64.632C204.628 64.104 205.148 63.696 205.756 63.408C206.38 63.12 207.068 62.976 207.82 62.976C208.684 62.976 209.404 63.192 209.98 63.624C210.572 64.04 211.036 64.608 211.372 65.328L211.516 65.256C211.324 64.44 210.98 63.664 210.484 62.928C210.004 62.192 209.42 61.488 208.732 60.816L206.668 62.112L205.564 60.792L207.436 59.664C206.876 59.2 206.284 58.768 205.66 58.368C205.052 57.968 204.436 57.592 203.812 57.24H208.492C208.716 57.368 208.932 57.52 209.14 57.696C209.348 57.856 209.564 58.024 209.788 58.2L211.804 56.928L212.884 58.224ZM208.828 72.936C209.676 72.936 210.348 72.664 210.844 72.12C211.34 71.576 211.588 70.816 211.588 69.84V68.448C211.588 67.472 211.34 66.712 210.844 66.168C210.348 65.624 209.676 65.352 208.828 65.352C207.964 65.352 207.284 65.624 206.788 66.168C206.292 66.712 206.044 67.472 206.044 68.448V69.84C206.044 70.816 206.292 71.576 206.788 72.12C207.284 72.664 207.964 72.936 208.828 72.936ZM225.217 72.912H225.097C224.985 73.232 224.833 73.536 224.641 73.824C224.465 74.096 224.233 74.344 223.945 74.568C223.673 74.792 223.337 74.968 222.937 75.096C222.553 75.224 222.105 75.288 221.593 75.288C220.297 75.288 219.305 74.864 218.617 74.016C217.929 73.168 217.585 71.96 217.585 70.392V62.472H220.657V70.08C220.657 70.944 220.825 71.608 221.161 72.072C221.497 72.52 222.033 72.744 222.769 72.744C223.073 72.744 223.369 72.704 223.657 72.624C223.961 72.544 224.225 72.424 224.449 72.264C224.673 72.088 224.857 71.88 225.001 71.64C225.145 71.384 225.217 71.088 225.217 70.752V62.472H228.289V75H225.217V72.912ZM231.839 75V62.472H234.911V65.064H235.031C235.111 64.728 235.231 64.408 235.391 64.104C235.567 63.784 235.791 63.504 236.062 63.264C236.335 63.024 236.655 62.832 237.023 62.688C237.407 62.544 237.847 62.472 238.343 62.472H239.015V65.376H238.055C237.015 65.376 236.231 65.528 235.703 65.832C235.175 66.136 234.911 66.632 234.911 67.32V75H231.839Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/skagastrond.svg b/libs/application/templates/financial-aid/src/svg/skagastrond.svg deleted file mode 100644 index 241f15b95f3e..000000000000 --- a/libs/application/templates/financial-aid/src/svg/skagastrond.svg +++ /dev/null @@ -1,44 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57907)"> -<path d="M83.5995 22.9843C83.0062 22.3199 82.3655 21.6871 81.7644 21.0306C80.7677 19.939 79.7632 18.8475 78.727 17.7955C78.7033 17.7164 78.6637 17.6531 78.5767 17.6373C78.5214 17.5819 78.466 17.5345 78.4106 17.4791C78.3948 17.3684 78.3394 17.3051 78.2208 17.313C78.2129 17.2418 78.1733 17.2022 78.11 17.1864C77.8648 16.7672 77.4693 16.4745 77.1609 16.1107C77.0106 15.9288 76.8919 16.0237 76.7733 16.1265C76.4569 16.3875 76.1484 16.6644 75.832 16.9333C74.7879 17.8271 73.6647 18.6102 72.5732 19.4486L72.3991 19.5831C72.2963 19.6385 72.1698 19.6701 72.1065 19.7808C71.9246 19.8916 71.7505 20.0102 71.5686 20.121L71.5449 20.1289C71.4579 20.1763 71.3709 20.2238 71.2839 20.2713L71.2522 20.2871C71.1098 20.382 70.9754 20.469 70.833 20.5639C70.7776 20.5956 70.7302 20.6351 70.6748 20.6668C70.1765 20.8329 69.7098 21.0702 69.2352 21.2995C69.1878 21.3074 69.1482 21.3074 69.1007 21.3154C68.3651 21.4577 67.6295 21.5843 66.8781 21.6713C66.0238 21.7741 65.1933 21.608 64.3549 21.5131C64.2678 21.4182 64.1492 21.434 64.0385 21.434C63.8882 21.3707 63.7458 21.2521 63.5639 21.3074C63.4848 21.2837 63.4294 21.1809 63.3187 21.2283C63.2396 21.1176 63.1288 21.1176 63.0102 21.1255H63.0023C62.765 20.904 62.4328 20.904 62.1559 20.7617C61.7842 20.6035 61.4282 20.4136 61.0485 20.2871C59.0236 19.5752 56.975 18.9187 54.8631 18.4915C53.7715 18.2701 52.6799 18.017 51.5567 17.9537C51.3511 17.8667 51.1375 17.8429 50.916 17.8429C50.8686 17.835 50.8132 17.835 50.7658 17.8271C50.6629 17.7718 50.5522 17.7955 50.4494 17.8192C50.3703 17.8034 50.2991 17.7876 50.22 17.7797C49.7454 17.6768 49.2708 17.6294 48.7883 17.6689C48.4245 17.574 48.0527 17.6294 47.6809 17.6373C47.6256 17.6056 47.5781 17.6056 47.5227 17.6373C47.4436 17.6452 47.3645 17.6452 47.2854 17.6531C46.5894 17.6056 45.9012 17.7164 45.2131 17.7955C44.082 17.922 42.9667 18.1119 41.8514 18.3334C41.005 18.5074 40.1666 18.7288 39.3202 18.9345C37.8965 19.2825 36.5202 19.7334 35.1439 20.2317C33.7517 20.7379 32.4387 21.4577 30.9675 21.782C29.1482 22.1933 27.3843 21.9877 25.7074 21.3154C23.9673 20.6114 22.4723 19.4565 20.9853 18.3254C20.2496 17.7638 19.5457 17.1706 18.8338 16.5853C18.6993 16.4745 18.5886 16.348 18.4225 16.5378C17.758 17.2813 17.0936 18.017 16.4292 18.7526C15.5908 19.6701 14.7444 20.6114 13.898 21.5527C13.289 22.225 12.6878 22.9052 12.0788 23.5776C11.9997 23.6646 11.9601 23.6883 12.0788 23.807C13.3681 25.12 14.5704 26.5042 15.8676 27.8093C16.2235 28.1653 16.532 28.5766 16.7772 29.0354C17.3863 30.1744 17.4891 31.4162 17.4891 32.6581C17.5208 39.9905 17.5208 47.315 17.5366 54.6474C17.5366 56.4825 17.5366 58.3096 17.5445 60.1447C17.5445 63.103 17.5445 66.0692 17.5524 69.0275C17.5603 70.6253 17.4337 72.2389 17.7106 73.8287C18.0033 75.5135 18.4067 77.1667 19.1185 78.7486C19.4587 79.508 19.7751 80.2673 20.1864 80.995C21.0644 82.5375 22.1243 83.9375 23.3898 85.1793C24.2995 86.0732 25.2803 86.88 26.3639 87.5602C27.3685 88.2088 28.3809 88.8416 29.5279 89.2292C30.2239 89.6247 30.9991 89.8382 31.7505 90.1072C32.7314 90.4631 33.7122 90.8032 34.7484 90.9377C35.8162 91.1908 36.8998 91.3807 37.9835 91.5705C38.1654 91.5942 38.3552 91.6259 38.5372 91.6496C38.5609 91.6496 38.5925 91.6575 38.6163 91.6575C38.727 91.6891 38.8456 91.7287 38.9564 91.7524C40.0875 91.966 41.1949 92.2507 42.2864 92.5909C43.2989 92.9072 44.2164 93.4135 45.1181 93.9751C46.0199 94.5446 46.8899 95.1536 47.6493 95.9051C47.8312 96.087 47.9182 95.9842 48.021 95.8576C48.3849 95.3909 48.9149 95.1141 49.3657 94.7582C50.1646 94.1333 51.0505 93.6429 51.9601 93.1841C53.3523 92.488 54.8314 92.053 56.3501 91.7445C57.3705 91.5309 58.4067 91.4044 59.3954 91.0484C60.1785 90.9298 60.9457 90.74 61.713 90.5422C63.3899 90.0993 65.0509 89.6009 66.625 88.8574C68.3256 88.0506 69.8996 87.0223 71.3155 85.7647C72.5494 84.6731 73.6726 83.4946 74.606 82.142C75.397 80.9871 76.0772 79.769 76.6309 78.4876C76.8998 78.0684 76.9948 77.578 77.1609 77.1113C77.7778 75.3949 78.1891 73.6231 78.205 71.8038C78.2524 65.294 78.1496 58.7842 78.2445 52.2744C78.2841 49.5614 78.2524 46.8562 78.2445 44.1431C78.2445 42.9962 78.2287 41.8572 78.2129 40.7103C78.2445 40.6312 78.2445 40.56 78.205 40.4809C78.2524 40.1882 78.2524 39.8956 78.205 39.6029C78.205 39.5554 78.205 39.5001 78.205 39.4526C78.2603 38.5272 78.2603 37.6017 78.205 36.6763C78.2445 36.5181 78.2445 36.3678 78.205 36.2096C78.2603 34.9124 78.2524 33.6231 78.205 32.3258C78.2445 32.1439 78.2445 31.962 78.205 31.7801C78.2208 31.5111 78.2366 31.2501 78.2524 30.9812C78.2603 30.9021 78.2682 30.823 78.2762 30.7439C78.3394 30.4591 78.4027 30.1744 78.4739 29.8896C78.4976 29.8501 78.4976 29.8105 78.4581 29.7789C78.4818 29.7314 78.4976 29.6919 78.5214 29.6444C78.7349 29.3755 78.8061 29.0354 78.9485 28.7348C79.4784 27.6037 80.396 26.7731 81.2028 25.8635C81.9859 24.9776 82.8085 24.1233 83.6153 23.2612C83.7102 23.1425 83.7023 23.103 83.5995 22.9843Z" fill="#FCFDFD"/> -<path d="M18.8487 64.5742L24.5359 62.1775L27.1224 59.417L35.056 63.625L41.9217 62.8419L47.7512 59.4249L54.348 62.8419L61.0635 63.3719L67.5416 59.4249C67.5416 59.4249 69.9304 62.0351 70.3338 61.8849C70.7372 61.7346 77.2865 63.4589 77.2865 63.4589V72.1597L75.3882 79.0571L70.3338 85.1793L62.7166 89.1421L53.4068 91.2145L48.2337 94.5762L42.6336 91.8156L35.3961 90.0043L28.9338 87.7658L24.6229 84.7522L20.4861 80.0142L18.7617 72.9428L18.8487 64.5742Z" fill="#0078E7"/> -<path d="M20.8587 44.4278C20.3841 44.412 19.9966 44.7047 19.5457 44.7759C19.5061 44.7838 19.4745 44.7759 19.435 44.7759C19.4191 43.6369 18.6044 42.4899 18.5965 41.3509C18.5807 38.0762 18.5728 34.8095 18.557 31.5348C18.5491 29.9766 17.9954 28.6082 17.0857 27.3584C16.2948 26.259 15.4247 25.2386 14.4676 24.2894C14.4439 24.2657 14.428 24.2182 14.3964 24.1945C13.8032 23.6171 14.5941 22.8182 15.1399 22.1933C16.0021 21.1888 16.8643 20.1921 17.7106 19.1718C17.9163 18.9186 18.2485 18.7921 18.3909 18.4757C18.4146 18.452 18.4383 18.4282 18.4621 18.4124L18.4541 18.4203C18.6519 18.3966 18.7784 18.1118 19.0236 18.2621L19.8067 19.0452C19.8067 19.1006 19.0395 18.3412 19.1027 18.3412L19.8858 19.1243C20.3683 19.6543 20.1073 19.3458 20.6452 19.8125C20.8587 19.9944 22.0452 20.8249 22.0768 21.078C22.1401 21.5605 21.8158 20.3978 21.9424 20.6746C21.974 20.7537 22.8599 21.5922 22.9311 21.6475C23.1921 21.8532 23.4532 22.0747 23.817 22.0668C24.252 22.1459 24.608 22.4069 24.9797 22.6046C25.573 22.921 25.4069 22.3357 26.0318 22.5572C25.9685 22.6363 26.0001 22.6679 26.0871 22.6837C26.6013 22.7945 27.0521 23.0634 27.6058 23.1346C28.6657 23.2691 29.7098 23.2058 30.7539 23.0871C31.0861 23.0476 31.3867 22.8577 31.7347 22.9052C31.798 22.9131 31.8613 22.9289 31.9167 22.9447C31.9088 22.9368 31.8929 22.9368 31.885 22.921C31.8376 22.8103 31.9246 22.7786 31.9958 22.7549C32.2251 22.6679 32.0274 22.6125 31.9799 22.5493C33.1901 22.2329 34.3133 21.6871 35.484 21.2679C35.5631 21.3786 35.6343 21.3786 35.6817 21.2441L35.6738 20.4611C35.8241 20.4848 35.9507 21.2679 35.9981 21.0938L35.9902 21.1018C36.6942 20.9831 37.3349 20.6984 37.9677 20.382H37.9598C38.0389 20.4532 38.118 20.4611 38.2129 20.4057C38.5847 20.1921 38.9881 20.1288 39.4073 20.0735C40.2457 19.9707 41.0288 19.5435 41.8989 19.591C41.9147 19.591 41.9305 19.591 41.9384 19.5831C42.3972 19.2271 42.9825 19.2429 43.4967 19.1797C44.4854 19.061 45.482 18.887 46.4787 18.8395C47.1985 18.8 47.9262 18.8079 48.646 18.8316C49.4369 18.8554 50.2358 18.7763 51.0031 19.0057C51.359 19.1085 51.715 19.1797 52.0709 19.148C52.7591 19.0848 53.3918 19.3537 54.0167 19.5277C54.6732 19.7017 55.3456 19.8995 56.0021 20.0498C56.6665 20.2 57.3072 20.4532 57.9479 20.6351C58.8101 20.8803 59.6643 21.2204 60.5423 21.434C61.0881 21.5684 61.5785 21.8848 62.1559 21.8927L62.148 21.8848C62.6068 22.2091 63.113 22.3594 63.6667 22.312C64.6634 22.573 65.6758 22.7549 66.712 22.7233C66.364 22.747 66.0238 22.7628 65.6758 22.7866C66.182 22.7707 66.6962 22.9527 67.2024 22.7549C67.8115 22.7786 68.3889 22.573 68.9821 22.4622C69.6861 22.3357 70.398 22.1854 71.0308 21.8136C71.4183 21.5922 71.8217 21.3786 72.2331 21.2125C72.6523 21.0464 73.0794 20.904 73.3879 20.5402C73.4274 20.4927 73.4591 20.4452 73.5145 20.4057C73.9653 20.0814 74.4241 19.7729 74.8512 19.4091C75.4049 18.9424 76.0693 18.6339 76.6072 18.1356C76.7179 18.0327 76.9552 17.9378 77.0818 18.1751C77.4061 18.8079 78.0626 19.0927 78.5055 19.5831V20.3661C78.4976 20.5402 78.6321 19.8125 78.7587 19.8836C79.4547 20.643 80.1587 21.3944 80.8469 22.1617C80.918 22.2408 81.8751 23.1188 81.7486 23.277C81.1791 23.8781 80.5542 24.4239 80.0717 25.0962L80.0875 25.112L80.0717 25.0962C79.7078 25.3414 79.4547 25.6974 79.17 26.0138C78.6954 26.5279 78.2841 27.1053 78.0072 27.7697C77.6276 28.6794 77.2953 29.5969 77.1292 30.5619C76.979 30.989 76.9552 31.432 76.9552 31.8749C76.9473 35.5056 76.9552 39.1362 76.9473 42.7668C76.9473 42.9962 76.2196 43.2255 76.1721 43.4707C76.1247 43.6764 76.0377 43.7476 75.8478 43.6843C75.5077 43.5815 75.2309 43.3442 74.9303 43.1702C74.8749 43.1385 74.8354 43.0673 74.78 43.0594C74.1393 42.9329 73.5382 42.7114 72.9766 42.3792C72.8896 42.3238 72.8105 42.3476 72.7235 42.4187C72.415 42.6719 71.8929 42.4425 71.8613 42.0233C71.8297 41.6436 71.5528 41.4617 71.3472 41.1927C70.9042 40.6232 70.5562 40.9001 70.1449 41.1927C69.7335 41.4854 69.1957 41.2718 69.0375 40.7972C68.9742 40.5995 68.3414 40.1486 68.1595 40.2277C67.6137 40.4413 67.4476 39.9509 67.3052 39.6978C66.9493 39.0412 66.4352 38.5746 65.8577 38.1395C65.7707 37.8943 65.5888 37.8864 65.3831 37.9418C64.9956 38.0446 64.6713 38.2503 64.3707 38.5113C64.1334 38.7169 63.8724 38.9147 63.5322 38.8672C63.1051 38.8119 62.6701 38.8277 62.2983 39.0017C61.5232 39.3497 61.2463 38.5113 60.6768 38.3847C60.574 38.361 60.5186 38.2503 60.4791 38.1553C60.4632 38.1158 60.4553 38.0842 60.4316 38.0446C60.3446 37.9101 60.2576 37.7836 60.1706 37.657C60.2022 37.5858 60.2101 37.4909 60.2576 37.4435C60.5819 37.1745 60.6135 36.9451 60.2892 36.6604C59.9016 36.3124 59.4508 36.0276 58.9762 35.814C58.3829 35.5451 57.7976 35.2445 57.149 35.1101C57.0778 35.0942 56.9987 35.0468 56.9592 34.9914C56.6191 34.5247 56.1207 34.5089 55.6224 34.5168C55.6066 34.4298 55.5512 34.3824 55.4642 34.3824C55.3298 34.3824 55.4642 34.5247 55.3693 34.5485C55.2111 34.5326 55.0608 34.4773 54.9817 34.3349C54.9264 34.2321 54.8314 34.1451 54.7365 34.1846C54.428 34.3112 54.2461 34.1213 54.0563 33.9473C54.0484 33.9315 54.0484 33.9236 54.0484 33.9078C54.08 33.8603 54.1116 33.8208 54.0167 33.8128L54.0246 33.8208C53.9376 33.5123 53.8032 33.2275 53.4947 33.0772C53.4314 32.6976 53.1862 32.7134 52.9014 32.7925C52.6958 32.8083 52.4822 32.8479 52.2924 32.7134C51.9839 32.6501 51.7782 32.8716 51.5489 33.014C51.4223 32.927 51.4144 32.6976 51.2008 32.7055C51.1138 32.5789 51.0822 32.3891 50.8844 32.397C50.2596 32.4128 49.6268 32.3258 49.0256 32.571C48.8437 32.6106 48.646 32.4998 48.4798 32.6343C48.0764 32.4445 47.6335 32.5156 47.2064 32.4761C45.7114 32.3337 44.2323 32.4761 42.761 32.7213C42.0254 32.8399 41.9621 32.9507 41.9226 33.5202C41.7169 33.9394 41.709 34.3665 41.9068 34.7937C41.9147 34.8569 41.8751 34.8807 41.8277 34.9123C41.1553 35.3948 40.744 36.0988 40.3011 36.7711C40.2299 36.8819 40.2062 37.135 40.0796 37.1033C39.7711 37.0084 39.7158 37.2457 39.5971 37.396C39.5101 37.4988 39.431 37.6017 39.2886 37.6175C38.6558 37.7124 38.4423 38.2344 38.1971 38.7169C37.849 38.8514 37.8174 39.2232 37.6434 39.4842C37.2083 40.1486 36.7812 40.8368 35.919 40.9554C35.4919 41.0187 35.0727 41.1294 34.6456 41.1532C34.5032 41.1611 34.3845 41.256 34.2263 41.2006C33.7438 41.0266 33.2218 41.0424 32.7235 40.9317C32.1381 40.7972 31.5133 40.8842 30.9675 40.5758C30.4929 40.3068 29.9788 40.0774 29.5674 39.7136C29.259 39.4446 28.9188 39.4209 28.5392 39.4684C27.6612 39.587 26.8148 39.8164 25.9922 40.1091C25.217 40.3859 24.4498 40.5916 23.9989 41.4775C23.3899 42.6639 22.3458 43.4945 21.1435 44.0877C20.9695 44.1747 20.9853 44.3408 20.8587 44.4278Z" fill="#03BFF3"/> -<path d="M39.8028 77.222C39.2412 76.953 38.6163 76.8897 38.0547 76.6445C37.8174 76.5417 37.5643 76.4626 37.3349 76.3282C37.0423 76.1541 36.805 76.162 36.5835 76.431C36.4886 76.5496 36.3699 76.6366 36.2117 76.5654C36.0614 76.4943 36.014 76.3361 36.0298 76.2016C36.0931 75.7349 35.8241 75.4739 35.484 75.2524C34.875 74.8569 34.7959 74.2716 34.9224 73.623C34.9699 73.3778 35.2072 73.3066 35.3891 73.188C35.7609 72.9586 36.1405 72.7292 36.5202 72.5077C36.9236 72.3416 37.3349 72.1676 37.7383 72.0015C38.9485 71.5902 40.1983 71.3529 41.4322 71.0128C41.63 70.9574 41.7486 70.8783 41.8277 70.6964C42.3418 69.6286 43.0537 68.7664 44.2165 68.363C44.2718 68.3472 44.3272 68.3234 44.3747 68.3076C44.4142 68.3234 44.4538 68.3313 44.4933 68.3472C45.0154 68.5607 45.5374 68.7664 45.8775 69.2568C46.1386 69.6206 46.3126 70.0399 46.5341 70.4749C46.9928 69.8975 47.4674 69.4308 48.0053 69.0432C48.2426 68.9879 48.4561 68.8534 48.7093 68.8138C49.4132 68.711 49.959 68.9562 50.4099 69.4783C50.5364 69.6206 50.7025 69.7393 50.8449 69.8738C50.9952 70.111 51.2483 70.2297 51.4302 70.4274C51.6122 70.6252 51.7704 70.9258 51.9998 70.989C52.245 71.0602 52.4269 70.7201 52.6563 70.5856C52.767 70.5224 52.8857 70.467 52.9964 70.4037C53.7399 70.2772 54.4755 70.3404 55.1874 70.5856C55.227 70.6489 55.2823 70.6647 55.3456 70.6568C55.4326 70.728 55.5196 70.7992 55.6383 70.8071C55.7807 70.9653 55.9388 71.1156 56.0654 71.2896C56.4846 71.8512 56.4846 71.8512 57.1411 71.606C57.1491 71.5981 57.157 71.5902 57.1728 71.5823C57.9717 71.4003 58.6598 70.9337 59.435 70.7043C60.0678 70.5224 60.7006 70.4116 61.3571 70.38C61.5548 70.3721 61.6893 70.4274 61.7763 70.6015C61.8 70.6647 61.8317 70.728 61.8554 70.7913C62.5357 72.4603 62.5357 74.1055 61.6735 75.7191C61.5232 75.9959 61.3729 76.0671 61.0802 75.9801C60.2893 75.7586 59.4983 75.5214 58.6915 75.3552C58.0666 75.2287 57.4575 75.0072 56.8089 74.9914C56.5163 74.9835 56.3502 75.0784 56.279 75.379C56.2315 75.5767 56.1841 75.8061 55.9626 75.8931C55.6225 76.0276 55.3693 76.2649 55.0846 76.4784C54.4993 76.9135 53.8507 77.0796 53.1704 76.7553C52.8145 76.5892 52.68 76.6762 52.6484 77.0321C52.5534 77.0796 52.5693 77.1745 52.5613 77.2536C51.9681 77.7994 51.3274 78.274 50.5839 78.5903C50.4336 78.5903 50.307 78.6694 50.1726 78.7327C49.8404 78.8514 49.5002 78.9542 49.1759 79.0887C48.7172 79.2785 48.2979 79.1599 47.9025 78.9147C47.5386 78.6853 47.1827 78.4322 46.8504 78.1553C46.6211 77.9655 46.3917 77.8864 46.099 77.8943C45.4267 77.9259 44.7623 77.9655 44.0899 77.9101C43.8131 77.8864 43.6786 78.005 43.6549 78.2819C43.6391 78.4875 43.5995 78.7011 43.56 78.9067C43.4334 79.5079 42.769 79.8005 42.2153 79.5C42.0887 79.4288 41.9701 79.3418 41.8514 79.2706C41.5429 78.8751 41.3689 78.4163 41.187 77.9497C40.9814 77.4039 40.8073 77.3248 40.1825 77.3722C40.0559 77.3169 39.9293 77.2694 39.8028 77.222ZM51.5173 71.4083L51.5093 71.4003C51.5331 71.2263 51.3907 71.1551 51.2958 71.0602C50.7658 70.5382 50.2438 70.0082 49.6822 69.5257C49.3341 69.2252 49.0098 69.1856 48.5906 69.3754C47.7522 69.7472 47.238 70.4591 46.6685 71.1235C46.5182 71.1789 46.3838 71.3054 46.2018 71.2738C46.1702 71.1868 46.1386 71.1077 46.1148 71.0207C45.9171 70.4433 45.7114 69.8738 45.2685 69.415C44.7069 68.8376 44.2086 68.7664 43.5758 69.2805C42.8797 69.8579 42.4209 70.6015 42.0887 71.432C42.0017 71.432 41.9068 71.4241 41.8514 71.5111C41.6853 71.4715 41.5271 71.5032 41.3768 71.5744C41.3294 71.5823 41.274 71.5902 41.2266 71.5981C41.0684 71.6297 40.9023 71.6614 40.7441 71.693C40.6096 71.7246 40.4751 71.7563 40.3407 71.7879C39.8661 71.8275 39.4231 72.0094 38.9643 72.1439C38.3316 72.3337 37.6829 72.4603 37.1055 72.8004C36.9157 72.8478 36.7654 72.9665 36.6072 73.0693C36.2592 73.1642 35.9902 73.4015 35.6818 73.5755C35.4682 73.6942 35.4049 73.8682 35.4286 74.0976C35.4524 74.3902 35.5948 74.5959 35.8241 74.7383C36.3304 75.0705 36.7179 75.4343 36.4016 76.1067C36.3936 76.1146 36.4016 76.1304 36.4016 76.1462C36.3857 76.17 36.3778 76.1858 36.362 76.2095C36.3857 76.1937 36.4095 76.1858 36.4332 76.17C36.536 76.0671 36.6705 75.9801 36.7259 75.8615C36.9078 75.4897 37.1925 75.5767 37.4457 75.7112C38.5214 76.2649 39.7 76.5022 40.8627 76.8027C41.3294 76.9214 41.5667 77.2061 41.7249 77.6095C41.7961 77.7915 41.8435 77.9813 41.9147 78.1553C42.0413 78.4559 42.1678 78.7644 42.4763 78.9384C42.6503 79.0333 42.9114 79.0887 42.9588 78.8988C43.0775 78.4796 43.2831 77.9892 43.1091 77.6016C42.8876 77.0796 43.2357 77.2457 43.4255 77.2615C44.2244 77.3327 45.0233 77.4197 45.8143 77.3327C46.4154 77.2615 46.9137 77.3485 47.3646 77.744C47.3883 77.7994 47.4279 77.8389 47.4911 77.8389C47.5702 77.9892 47.7284 78.0525 47.855 78.1395C48.3138 78.6062 48.8358 78.6457 49.4211 78.3847C49.7929 78.2186 50.1884 78.1237 50.5523 77.9417C51.5014 77.4751 52.4823 77.0242 52.2924 75.6637C52.2608 75.4106 52.4902 75.4581 52.6167 75.5451C52.7986 75.6716 52.9568 75.8377 53.115 75.988C53.4631 76.3361 53.8823 76.3993 54.3094 76.2016C54.784 75.988 55.2428 75.727 55.6304 75.3711C55.7727 75.2445 55.8914 75.0942 55.8756 74.8965C55.836 74.4693 56.0812 74.4061 56.4293 74.3903C57.1491 74.3428 57.8293 74.588 58.5254 74.6592C58.5966 74.7145 58.6757 74.7304 58.7627 74.7225C58.7864 74.7383 58.8101 74.7462 58.8338 74.762C59.5695 74.936 60.3051 75.1021 61.0407 75.292C61.1831 75.3315 61.2464 75.3394 61.3096 75.1891C61.4836 74.7778 61.6498 74.3744 61.713 73.9315C61.7209 73.8761 61.7288 73.8207 61.7368 73.7654C61.8159 72.9111 61.8396 72.0727 61.5074 71.258C61.3096 70.7755 60.7797 70.7201 60.3842 71.1472C60.2655 71.0998 60.139 71.0602 60.0045 71.0998C59.6011 71.2263 59.1819 71.3292 58.7864 71.4874C57.8689 71.867 56.9276 72.1518 55.9705 72.397C55.8439 72.2151 55.9626 71.9936 55.8281 71.8037C55.3298 71.1235 54.6812 70.7676 53.8348 70.7676C53.4314 70.7676 53.0439 70.8388 52.7512 71.1393C52.4981 71.4083 52.1817 71.5902 51.8811 71.7879C51.7783 71.7879 51.6834 71.7879 51.5805 71.7879C51.5014 71.693 51.8257 71.5032 51.5173 71.4083Z" fill="#FCFDFD"/> -<path d="M32.3586 58.2226C33.1417 57.4553 33.8615 56.6169 34.5892 55.7943C35.5463 54.7185 36.5429 53.6744 37.413 52.5275C37.8955 51.8947 38.4492 51.4439 39.1453 51.1275C39.5645 50.9376 39.8809 50.6212 40.1419 50.2574C40.2527 50.1071 40.4188 49.8619 40.1498 49.7274C39.8651 49.5771 39.9758 49.5139 40.1498 49.3873C40.9171 48.8178 41.7318 48.3037 42.4279 47.6472C43.4561 46.6743 44.7138 45.8991 45.1805 44.42C45.3703 43.8109 45.8845 43.368 46.3116 42.9092C46.2008 42.7826 46.0664 42.925 45.9477 42.8696C45.5443 43.0832 45.2991 43.4629 45.0065 43.7951C44.7692 44.0561 44.6031 44.325 44.5398 44.7047C44.437 45.2979 44.0019 45.6934 43.5036 46.0098C42.9024 46.3816 42.2618 46.698 41.716 47.1488C41.5261 47.2991 41.36 47.4573 41.3838 47.7342C41.3996 47.8924 41.3047 47.9952 41.1544 48.0585C39.7306 48.7071 38.7261 49.854 37.7294 51.0088C37.5791 51.1828 37.4368 51.341 37.239 51.4597C37.0413 51.5704 36.8752 51.7207 36.8673 51.9817C36.8514 52.2269 36.6379 52.3298 36.4876 52.4563C34.518 54.1965 32.5643 55.9604 30.5078 57.6056C30.4049 57.6926 30.3021 57.7638 30.1281 57.7796C30.2705 57.3367 30.5157 56.9649 30.8083 56.6564C31.1801 56.2768 31.4886 55.818 31.9632 55.5332C32.066 55.47 32.1767 55.3513 32.2084 55.2327C32.4694 54.2914 33.2841 53.7614 33.8378 53.0416C34.2728 52.4721 34.7553 51.9264 35.3407 51.4992C35.8864 51.0958 36.4639 50.7241 37.0017 50.3207C37.7848 49.7353 38.5046 49.1105 38.9317 48.1929C39.3035 47.394 40.0707 46.9432 40.7114 46.3974C41.0357 46.1206 41.3759 45.8437 41.6606 45.5273C41.6131 45.4245 41.5657 45.4482 41.4866 45.5036C41.0674 45.7725 40.6244 46.0098 40.1657 46.2076C39.9679 46.3341 39.7227 46.3816 39.525 46.3025C39.2323 46.1838 39.0425 46.2867 38.8605 46.4765C38.117 47.2279 37.2074 47.7974 36.4243 48.5014C35.4672 49.3557 34.7949 50.4393 34.1463 51.5309C33.5056 52.5987 32.9202 53.6744 31.8129 54.3784C31.2829 54.7106 30.8795 55.2248 30.753 55.8892C30.7371 55.9762 30.6739 56.0553 30.6185 56.1186C30.0964 56.7434 29.7247 57.4711 29.2896 58.1514C29.2026 58.2938 29.1552 58.4203 29.1789 58.5864C29.2105 58.7921 29.1789 58.974 29.0365 59.1638C28.8546 59.409 28.9495 59.6859 29.1868 59.8915C29.3055 59.9786 29.4399 59.9469 29.5665 59.9706C29.788 59.9548 30.0015 59.9153 30.2072 59.8045C31.0298 59.3932 31.7338 58.8395 32.3586 58.2226Z" fill="#FCFDFD"/> -<path d="M34.7714 57.9695C34.7556 57.9537 34.7398 57.9379 34.7239 57.9142C33.2764 58.4441 31.9476 59.2193 30.5792 59.9233C30.3656 60.034 30.0176 60.1289 30.0255 60.39C30.0413 60.738 30.4289 60.7775 30.6979 60.8883C30.7453 60.9041 30.8007 60.9041 30.8561 60.912C30.9589 60.8566 31.0617 60.7934 31.1645 60.738C31.7182 60.3267 32.3826 60.1527 32.9838 59.8521C33.3872 59.6543 33.8222 59.4724 34.1149 59.0216C33.577 58.9662 33.3714 59.5278 32.8414 59.5515C33.4584 58.9029 34.1149 58.4362 34.7714 57.9695Z" fill="#FCFDFD"/> -<path d="M37.4931 56.2926C38.197 55.7469 38.9643 55.2881 39.7236 54.8293C41.0762 54.0067 42.3972 53.1366 43.5994 52.1004C43.7735 51.9502 43.9712 51.792 44.0582 51.5072C43.5757 51.61 43.2198 51.8869 42.8559 52.1163C42.0966 52.5908 41.1395 52.8361 40.7756 53.801C40.4276 53.4926 40.4197 53.5005 40.0479 53.6903C38.2603 54.6158 36.7891 56.0158 35.041 57.0203C35.2704 57.0283 35.5552 56.8938 35.6817 57.0362C36.006 57.3842 36.1405 57.0836 36.3303 56.9175C36.5122 56.7593 36.623 56.4667 36.9236 56.5141C37.1846 56.5537 37.3349 56.4192 37.4931 56.2926Z" fill="#FCFDFD"/> -<path d="M47.5612 48.193C47.403 48.3274 47.5059 48.4619 47.5533 48.6043C47.6403 48.8574 47.498 49.0235 47.316 49.1659C47.229 49.2371 47.1499 49.332 47.0471 49.3874C46.6911 49.5772 46.351 49.767 46.3273 50.2337C46.3273 50.2733 46.2719 50.3128 46.2324 50.3524C45.2516 51.3332 44.247 52.2903 43.1317 53.1129C42.8232 53.3423 42.6176 53.6191 42.4277 54.0225C42.5938 53.9434 42.6967 53.9039 42.7758 53.8485C44.1521 52.9151 45.3702 51.7919 46.6437 50.7399C46.6991 50.6925 46.8098 50.645 46.7702 50.558C46.6279 50.21 46.9126 50.0518 47.0787 49.8619C47.4347 49.4585 47.7036 48.9919 48.0042 48.5489C48.0912 48.4224 48.0675 48.3433 47.9884 48.2404C47.8539 48.2088 47.7273 48.0506 47.5612 48.193Z" fill="#FCFDFD"/> -<path d="M37.025 57.2181C37.025 57.2102 37.025 57.2102 37.025 57.2181C37.025 57.2102 37.0171 57.2102 37.025 57.2181Z" fill="#FCFDFD"/> -<path d="M42.4593 53.8881C41.613 54.2756 40.8062 54.5446 40.3395 55.3435C40.2604 55.47 40.1813 55.557 40.031 55.6045C39.2242 55.8576 38.4886 56.2531 37.753 56.6486C37.4841 56.791 37.1993 56.9334 37.0332 57.2102C37.1993 57.2498 37.3259 57.1707 37.4682 57.0995C38.0536 56.8147 38.6152 56.4588 39.2796 56.3718C39.6514 56.3164 39.9836 56.174 40.3079 56.0237C40.4898 55.9367 40.8141 55.8102 40.7746 55.6757C40.6955 55.383 40.9011 55.3988 41.0198 55.3277C41.2491 55.1774 41.5023 55.0666 41.7237 54.9084C42.048 54.6632 42.3407 54.4022 42.4593 53.8881Z" fill="#FCFDFD"/> -<path d="M42.8706 51.436C43.8277 50.8665 44.7769 50.2812 45.6312 49.5693C45.7103 49.506 45.8289 49.4507 45.7815 49.3241C45.734 49.1896 45.6074 49.1817 45.4888 49.1738C45.2357 49.158 45.0379 49.2925 44.8639 49.4427C43.891 50.3049 42.8548 51.0722 41.7079 51.697C41.4469 51.8394 41.2728 52.0688 41.1621 52.3457C41.1858 52.3615 41.2096 52.3852 41.2333 52.401C41.8186 52.1716 42.3249 51.7682 42.8706 51.436Z" fill="#FCFDFD"/> -<path d="M42.8461 49.8778C42.8224 49.8857 42.8066 49.8778 42.7908 49.8619C42.419 50.1388 42.0077 50.3365 41.5806 50.5264C40.924 50.8348 40.2042 51.1038 39.8483 51.8394C39.611 52.3219 39.1839 52.6937 39.002 53.2394C39.5398 53.1208 40.2042 52.7965 40.2517 52.5592C40.4336 51.6575 41.1455 51.2303 41.802 50.7399C42.158 50.471 42.5851 50.2732 42.8461 49.8778Z" fill="#FCFDFD"/> -<path d="M43.9783 53.8248C43.1478 54.07 42.5387 54.5762 41.9297 55.1299C42.6495 55.0903 43.7331 54.5208 43.9783 53.8248Z" fill="#FCFDFD"/> -<path d="M47.047 41.5487C47.3397 41.699 47.6323 41.5566 47.925 41.5566C47.9962 41.4459 47.9487 41.3747 47.838 41.3668C47.5374 41.351 47.221 41.264 46.9283 41.4222C46.9204 41.5092 46.9916 41.5171 47.047 41.5487Z" fill="#FCFDFD"/> -<path d="M44.1298 47.7263C44.1377 47.7263 44.1377 47.671 44.1377 47.6472C44.114 47.6472 44.0823 47.6551 44.0586 47.6551C44.0586 47.7026 44.0665 47.7501 44.1298 47.7263Z" fill="#FCFDFD"/> -<path d="M36.9686 46.8799C37.024 47.1409 37.1268 47.2279 37.3958 47.0618C37.8941 46.7534 38.3054 46.3579 38.6613 45.8991C39.041 45.4087 39.4128 44.9104 39.7845 44.4121C39.8241 44.2697 40.0455 44.238 39.9902 44.0245C39.5789 44.0878 39.2783 44.3488 38.9303 44.5307C38.3528 44.9895 37.7675 45.4324 37.1901 45.8991C36.8658 46.1522 36.8974 46.5161 36.9686 46.8799Z" fill="#FCFDFD"/> -<path d="M53.4699 33.0852C53.4541 33.5282 53.5965 33.7259 53.9999 33.8287C53.9129 33.5202 53.7863 33.2355 53.4699 33.0852Z" fill="#FCFDFD"/> -<path d="M41.9054 33.5203C41.6998 33.9395 41.6918 34.3666 41.8896 34.7937C41.8896 34.3666 41.7947 33.9395 41.9054 33.5203Z" fill="#FCFDFD"/> -<path d="M37.7849 42.1815C37.9906 42.0945 38.1646 41.96 38.2991 41.7781C38.3782 41.6674 38.4335 41.525 38.3544 41.4143C38.2595 41.2798 38.0064 41.2719 37.9431 41.3193C37.5081 41.5962 37.0018 41.7465 36.5826 42.0629C35.8154 42.6403 35.1905 43.4154 34.3046 43.8505C34.2571 43.8742 34.2334 43.9454 34.1543 44.0482C34.6289 43.9691 34.9532 43.6765 35.2459 43.4787C36.0368 42.9329 36.9069 42.5612 37.7849 42.1815Z" fill="#FCFDFD"/> -<path d="M43.2421 44.0482C43.163 43.7556 43.3686 43.629 43.5584 43.4866C43.6455 43.4154 43.7799 43.3126 43.7008 43.194C43.6375 43.099 43.4794 43.1386 43.3686 43.1702C43.1709 43.2256 43.0997 43.4075 42.9889 43.5499C42.981 43.5736 42.9731 43.5974 42.9573 43.6211C42.9731 43.6844 42.9652 43.7397 42.9098 43.7872C42.8466 44.1036 42.9573 44.1827 43.2421 44.0482Z" fill="#FCFDFD"/> -<path d="M46.9061 76.9373C46.6293 76.8503 46.3682 76.9847 46.0914 77.0005C45.1264 77.048 44.1614 77.0875 43.1964 76.961C42.6506 76.8898 42.1444 76.7395 41.8201 76.2412C41.6856 76.0355 41.5828 76.2016 41.5353 76.3045C41.3376 76.7079 41.0291 76.6921 40.6811 76.5655C40.1432 76.3757 39.5974 76.1937 39.0675 75.9802C38.9093 75.9169 38.6561 75.8615 38.7748 75.5689C38.9725 75.6796 39.1307 75.7112 39.2019 75.4186C39.2336 75.292 39.3522 75.2999 39.455 75.3078C39.6211 75.7587 40.0325 75.909 40.42 75.9723C41.0766 76.0672 41.3534 75.5768 41.5749 75.0626C41.5986 75.0547 41.6065 75.0389 41.6065 75.0152C41.6619 74.9677 41.7093 74.9123 41.7093 74.8332C41.7726 74.8016 41.7805 74.7383 41.7805 74.6751C41.9466 74.6434 41.915 74.7383 41.8754 74.8253C41.7805 75.0785 41.6856 75.3237 41.5591 75.6717C41.7331 75.5293 41.8438 75.4739 41.9071 75.379C42.0969 75.118 42.2551 75.0705 42.5399 75.292C42.7534 75.4581 43.0145 75.6084 43.3229 75.6242C43.8134 75.64 44.2959 75.6163 44.7704 75.5372C45.3558 75.4423 45.9174 75.1022 45.9174 74.4536C45.9727 74.066 45.6959 74.0502 45.4349 74.0185C44.4936 73.8999 43.5602 74.0344 42.6269 74.1451C42.5952 74.153 42.5794 74.153 42.5715 74.0344C43.7817 73.631 45.0077 73.5756 46.2575 73.9632C46.7479 74.3982 46.6846 74.9282 46.0914 75.2446C45.9253 75.3316 45.7592 75.4028 45.6405 75.561C46.9694 75.6954 48.235 75.4265 49.5084 75.1734C50.7503 74.9282 51.9921 74.6592 53.2261 74.4061C53.2498 74.4378 53.2656 74.4773 53.2893 74.5089C53.0837 74.6434 52.8385 74.7067 52.6724 74.8965C51.4384 75.4739 50.1966 76.0276 48.8836 76.4231C48.3299 76.5892 47.7762 76.7395 47.2225 76.8898C47.1434 76.8977 47.0722 76.9056 46.9931 76.9135C46.9615 76.9214 46.9298 76.9293 46.9061 76.9373Z" fill="#FCFDFD"/> -<path d="M28.9259 50.1388C28.9259 49.5456 28.6648 49.0868 28.2772 48.6359C28.032 49.3557 28.1902 49.7117 28.9259 50.1388Z" fill="black"/> -<path d="M44.1289 47.6472C44.1289 47.6472 44.1368 47.6472 44.1368 47.6551V47.6472H44.1289Z" fill="black"/> -<path d="M49.8477 33.6863C49.9584 33.5756 50.0692 33.4648 50.172 33.3462C50.3065 33.188 50.433 33.1801 50.6149 33.275C51.1607 33.5598 51.1607 33.5519 51.2003 32.9428C51.2082 32.8637 51.1844 32.7846 51.1765 32.7134C51.0895 32.5869 51.0579 32.397 50.8601 32.4049C50.2353 32.4207 49.6025 32.3337 49.0013 32.5789C48.9855 32.9507 49.1121 33.2908 49.2703 33.6151C49.4285 33.9157 49.6025 33.9315 49.8477 33.6863Z" fill="black"/> -<path d="M51.716 36.5892C51.7635 36.6525 51.803 36.7079 51.8505 36.7712C51.9059 36.8898 51.9533 37.0084 52.0166 37.1271C52.2381 37.5384 52.5624 37.5542 52.8234 37.1746C52.8788 37.0955 52.9341 36.9926 53.0291 37.0164C53.4878 37.135 53.8912 36.9768 54.3184 36.8265C54.698 36.6921 54.7455 36.7474 54.4924 36.4073C54.2393 36.0672 53.8754 35.8141 53.6539 35.4502C53.6381 35.4265 53.5827 35.4344 53.5432 35.4344C53.4008 35.3316 53.2505 35.2446 53.1477 35.0943C52.9341 34.675 52.8392 34.1846 52.4595 33.8524C52.3567 33.7654 52.3488 33.623 52.3567 33.4886C52.3725 33.2275 52.3409 32.9744 52.2855 32.7213C51.977 32.658 51.7714 32.8795 51.542 33.0219C51.5499 33.2196 51.5816 33.4174 51.7081 33.5677C51.9375 33.8445 52.3646 33.9711 52.3725 34.4377C52.3725 34.501 52.5307 34.5564 52.6098 34.6276C52.6889 34.6988 52.7364 34.77 52.6019 34.8332C52.5465 34.8174 52.4991 34.8016 52.4437 34.7779C52.3804 34.683 52.2855 34.7304 52.2064 34.7304C51.7556 34.6909 51.3126 34.6513 50.8697 34.7621C50.6798 34.7304 50.4979 34.6909 50.316 34.7858C50.1024 34.7937 49.8968 34.7937 49.6832 34.8016C49.5566 34.7146 49.4143 34.7541 49.2798 34.7462C49.2007 34.7304 49.1216 34.7225 49.0425 34.7067C48.9318 34.6118 48.8131 34.501 48.7182 34.7225C48.3781 34.8016 48.117 35.1101 47.8086 35.1417C47.4289 35.1892 47.3577 35.3236 47.3735 35.648C47.3814 35.8299 47.3577 36.0118 47.3419 36.1858C47.1837 36.3915 47.3419 36.5655 47.3893 36.7553C47.3972 36.8819 47.4052 37.0084 47.421 37.1429C47.3261 37.5305 47.1995 37.9102 46.8594 38.2186C46.9622 38.2424 47.0097 38.2661 47.0492 38.2582C47.6266 38.1 48.2278 38.0684 48.821 37.9734C49.0899 37.926 49.2719 37.7836 49.4222 37.5384C49.6832 37.1034 49.7306 36.6683 49.5883 36.1937C49.8018 36.0355 49.96 36.17 50.1261 36.2807C50.229 36.5339 50.3397 36.7791 50.4346 37.0322C50.5533 37.3565 50.7985 37.5305 51.1149 37.6017C51.1861 37.6175 51.3601 37.665 51.3047 37.5305C51.1781 37.2062 51.4075 36.9531 51.4075 36.6604C51.4787 36.518 51.5816 36.5101 51.716 36.5892Z" fill="black"/> -<path d="M54.1266 35.6242C54.269 35.3948 54.2136 35.1971 54.0633 35.0152C53.834 34.7304 53.826 34.2558 54.0396 33.9552C54.0317 33.9394 54.0317 33.9315 54.0317 33.9157C54.0633 33.8682 54.095 33.8287 54.0001 33.8208C54.0001 33.8208 54.0001 33.8208 54.0001 33.8287C53.6046 33.7179 53.4622 33.5202 53.478 33.0852C53.4147 32.7055 53.1695 32.7213 52.8848 32.8004C52.9797 33.3225 53.3989 33.7259 53.478 34.24C53.5571 34.7779 54.0475 35.0943 54.1266 35.6242Z" fill="black"/> -<path d="M55.5908 35.205C55.7253 35.1892 55.6779 35.0706 55.67 34.9836C55.6541 34.8333 55.6304 34.6751 55.6067 34.5248C55.5908 34.4378 55.5355 34.3903 55.4484 34.3903C55.314 34.3903 55.4484 34.5327 55.3535 34.5564C55.3772 34.7067 55.401 34.8649 55.4326 35.0152C55.4564 35.1022 55.4643 35.2288 55.5908 35.205Z" fill="black"/> -<path d="M83.5995 22.9843C83.0062 22.3199 82.3655 21.6871 81.7644 21.0306C80.7677 19.939 79.7632 18.8475 78.727 17.7955C78.7033 17.7164 78.6637 17.6531 78.5767 17.6373C78.5214 17.5819 78.466 17.5345 78.4106 17.4791C78.3948 17.3684 78.3394 17.3051 78.2208 17.313C78.2129 17.2418 78.1733 17.2022 78.11 17.1864C77.8648 16.7672 77.4693 16.4745 77.1609 16.1107C77.0106 15.9288 76.8919 16.0237 76.7733 16.1265C76.4569 16.3875 76.1484 16.6644 75.832 16.9333C74.7879 17.8271 73.6647 18.6102 72.5732 19.4486L72.3991 19.5831C72.2963 19.6385 72.1698 19.6701 72.1065 19.7808C71.9246 19.8916 71.7505 20.0102 71.5686 20.121L71.5449 20.1289C71.4579 20.1763 71.3709 20.2238 71.2839 20.2713L71.2522 20.2871C71.1098 20.382 70.9754 20.469 70.833 20.5639C70.7776 20.5956 70.7302 20.6351 70.6748 20.6668C70.1765 20.8329 69.7098 21.0702 69.2352 21.2995C69.1878 21.3074 69.1482 21.3074 69.1007 21.3154C68.3651 21.4577 67.6295 21.5843 66.8781 21.6713C66.0238 21.7741 65.1933 21.608 64.3549 21.5131C64.2678 21.4182 64.1492 21.434 64.0385 21.434C63.8882 21.3707 63.7458 21.2521 63.5639 21.3074C63.4848 21.2837 63.4294 21.1809 63.3187 21.2283C63.2396 21.1176 63.1288 21.1176 63.0102 21.1255H63.0023C62.765 20.904 62.4328 20.904 62.1559 20.7617C61.7842 20.6035 61.4282 20.4136 61.0485 20.2871C59.0236 19.5752 56.975 18.9187 54.8631 18.4915C53.7715 18.2701 52.6799 18.017 51.5567 17.9537C51.3511 17.8667 51.1375 17.8429 50.916 17.8429C50.8686 17.835 50.8132 17.835 50.7658 17.8271C50.6629 17.7718 50.5522 17.7955 50.4494 17.8192C50.3703 17.8034 50.2991 17.7876 50.22 17.7797C49.7454 17.6768 49.2708 17.6294 48.7883 17.6689C48.4245 17.574 48.0527 17.6294 47.6809 17.6373C47.6256 17.6056 47.5781 17.6056 47.5227 17.6373C47.4436 17.6452 47.3645 17.6452 47.2854 17.6531C46.5894 17.6056 45.9012 17.7164 45.2131 17.7955C44.082 17.922 42.9667 18.1119 41.8514 18.3334C41.005 18.5074 40.1666 18.7288 39.3202 18.9345C37.8965 19.2825 36.5202 19.7334 35.1439 20.2317C33.7517 20.7379 32.4387 21.4577 30.9675 21.782C29.1482 22.1933 27.3843 21.9877 25.7074 21.3154C23.9673 20.6114 22.4723 19.4565 20.9853 18.3254C20.2496 17.7638 19.5457 17.1706 18.8338 16.5853C18.6993 16.4745 18.5886 16.348 18.4225 16.5378C17.758 17.2813 17.0936 18.017 16.4292 18.7526C15.5908 19.6701 14.7444 20.6114 13.898 21.5527C13.289 22.225 12.6878 22.9052 12.0788 23.5776C11.9997 23.6646 11.9601 23.6883 12.0788 23.807C13.3681 25.12 14.5704 26.5042 15.8676 27.8093C16.2235 28.1653 16.532 28.5766 16.7772 29.0354C17.3863 30.1744 17.4891 31.4162 17.4891 32.6581C17.5208 39.9905 17.5208 47.315 17.5366 54.6474C17.5366 56.4825 17.5366 58.3096 17.5445 60.1447C17.5445 63.103 17.5445 66.0692 17.5524 69.0275C17.5603 70.6253 17.4337 72.2389 17.7106 73.8287C18.0033 75.5135 18.4067 77.1667 19.1185 78.7486C19.4587 79.508 19.7751 80.2673 20.1864 80.995C21.0644 82.5375 22.1243 83.9375 23.3898 85.1793C24.2995 86.0732 25.2803 86.88 26.3639 87.5602C27.3685 88.2088 28.3809 88.8416 29.5279 89.2292C30.2239 89.6247 30.9991 89.8382 31.7505 90.1072C32.7314 90.4631 33.7122 90.8032 34.7484 90.9377C35.8162 91.1908 36.8998 91.3807 37.9835 91.5705C38.1654 91.5942 38.3552 91.6259 38.5372 91.6496C38.5609 91.6496 38.5925 91.6575 38.6163 91.6575C38.727 91.6891 38.8456 91.7287 38.9564 91.7524C40.0875 91.966 41.1949 92.2507 42.2864 92.5909C43.2989 92.9072 44.2164 93.4135 45.1181 93.9751C46.0199 94.5446 46.8899 95.1536 47.6493 95.9051C47.8312 96.087 47.9182 95.9842 48.021 95.8576C48.3849 95.3909 48.9149 95.1141 49.3657 94.7582C50.1646 94.1333 51.0505 93.6429 51.9601 93.1841C53.3523 92.488 54.8314 92.053 56.3501 91.7445C57.3705 91.5309 58.4067 91.4044 59.3954 91.0484C60.1785 90.9298 60.9457 90.74 61.713 90.5422C63.3899 90.0993 65.0509 89.6009 66.625 88.8574C68.3256 88.0506 69.8996 87.0223 71.3155 85.7647C72.5494 84.6731 73.6726 83.4946 74.606 82.142C75.397 80.9871 76.0772 79.769 76.6309 78.4876C76.8998 78.0684 76.9948 77.578 77.1609 77.1113C77.7778 75.3949 78.1891 73.6231 78.205 71.8038C78.2524 65.294 78.1496 58.7842 78.2445 52.2744C78.2841 49.5614 78.2524 46.8562 78.2445 44.1431C78.2445 42.9962 78.2287 41.8572 78.2129 40.7103C78.2445 40.6312 78.2445 40.56 78.205 40.4809C78.2524 40.1882 78.2524 39.8956 78.205 39.6029C78.205 39.5554 78.205 39.5001 78.205 39.4526C78.2603 38.5272 78.2603 37.6017 78.205 36.6763C78.2445 36.5181 78.2445 36.3678 78.205 36.2096C78.2603 34.9124 78.2524 33.6231 78.205 32.3258C78.2445 32.1439 78.2445 31.962 78.205 31.7801C78.2208 31.5111 78.2366 31.2501 78.2524 30.9812C78.2603 30.9021 78.2682 30.823 78.2762 30.7439C78.3394 30.4591 78.4027 30.1744 78.4739 29.8896C78.4976 29.8501 78.4976 29.8105 78.4581 29.7789C78.4818 29.7314 78.4976 29.6919 78.5214 29.6444C78.7349 29.3755 78.8061 29.0354 78.9485 28.7348C79.4784 27.6037 80.396 26.7731 81.2028 25.8635C81.9859 24.9776 82.8085 24.1233 83.6153 23.2612C83.7102 23.1425 83.7023 23.103 83.5995 22.9843ZM49.8799 92.0055C49.5635 92.2982 49.1838 92.4959 48.8516 92.7728C48.7804 92.8282 48.6855 92.8598 48.7013 92.9784H48.6934C48.3849 92.9073 48.3058 93.2474 48.0764 93.3344C47.9103 93.3977 47.8154 93.4451 47.6651 93.3186C47.0877 92.844 46.4865 92.4089 45.8458 92.0293C45.7114 91.9502 45.6006 91.879 45.8142 91.7287C46.4233 91.2936 47.064 90.914 47.6097 90.3998C47.7284 90.2891 47.8708 90.2891 48.0052 90.3919C48.5906 90.8349 49.1996 91.2383 49.8403 91.5942C50.0618 91.7208 50.0697 91.8315 49.8799 92.0055ZM70.1053 84.1511C69.5437 84.6652 68.9426 85.124 68.3256 85.559C67.408 86.1997 66.4351 86.7297 65.4385 87.228C64.9006 87.4969 64.2916 87.576 63.8012 87.932H63.7933C63.6588 87.9162 63.5322 87.9399 63.4057 87.9873C62.3616 88.3828 61.2858 88.6597 60.2022 88.8732C58.5095 89.2055 56.8247 89.593 55.1399 89.9727C54.7128 90.0676 54.2935 90.2891 53.8348 90.1546C52.9568 89.8936 52.0788 89.6247 51.2404 89.2608C50.0855 88.7625 49.0889 88.0269 48.1318 87.2359C47.8549 87.0144 47.6572 87.054 47.412 87.228C46.9453 87.5523 46.4786 87.8608 46.0199 88.1851C45.8538 88.2958 45.6006 88.3037 45.5532 88.5648H45.5453C45.482 88.5806 45.4108 88.5806 45.3554 88.6043C44.4854 89.1105 43.5915 89.5693 42.6424 89.8936C42.1994 90.0439 41.7723 90.3128 41.3056 90.2733C40.7361 90.2258 40.1745 90.0597 39.6129 89.9411C38.5767 89.7196 37.5405 89.4981 36.5122 89.2608C36.2908 89.2134 36.0772 89.1817 35.8478 89.1896L35.8162 89.1738H35.7766C35.7371 89.1026 35.6659 89.0631 35.5868 89.0473C33.9732 88.6992 32.3912 88.2563 30.8567 87.6314C29.0691 86.9037 27.3685 86.0257 25.8973 84.7443C25.6046 84.4833 25.6204 84.3488 25.9684 84.1432C26.269 83.9612 26.6091 83.8109 26.8623 83.5736C27.147 83.3126 27.3448 83.3205 27.6374 83.5341C29.5358 84.9658 31.6161 86.0415 33.8941 86.7613C35.3732 87.228 36.8919 87.402 38.4264 87.4099C39.6841 87.4099 40.918 87.1647 42.1361 86.8009C44.0345 86.2393 45.7668 85.4008 47.2222 84.0324C47.847 83.4471 47.8391 83.455 48.5036 84.0087C49.9985 85.2505 51.6912 86.1206 53.5579 86.6506C55.4326 87.1805 57.3467 87.141 59.2609 86.9511C59.6485 86.9116 60.0756 86.9116 60.4237 86.6664H60.4316C60.6451 86.6901 60.8429 86.6268 61.0485 86.5794C62.0373 86.35 62.939 85.915 63.8486 85.4878C64.2441 85.3059 64.6554 85.1398 64.9481 84.7839L64.956 84.7759C65.0509 84.7918 65.13 84.7443 65.217 84.6968C65.9843 84.3093 66.6329 83.7556 67.2815 83.2019C67.5504 82.9725 67.8114 82.8539 68.1753 82.9962C68.7606 83.2177 69.3618 83.4075 69.9787 83.5183C70.4138 83.6369 70.4533 83.8347 70.1053 84.1511ZM29.9234 82.577C30.0499 82.664 30.1844 82.751 30.3347 82.8064C30.1844 82.7431 30.0499 82.664 29.9234 82.577ZM76.1405 72.3654C76.0139 73.4886 75.8004 74.596 75.4919 75.6796C75.4207 75.9407 75.31 76.2017 75.2309 76.4627C75.1597 76.7079 75.0015 76.7633 74.78 76.7158C73.4907 76.4073 72.2014 76.1068 70.9675 75.6164C69.7652 75.1418 68.5945 74.596 67.59 73.7496C67.3843 73.5756 67.1708 73.4016 66.9651 73.2118C66.7436 73.014 66.625 73.0852 66.451 73.2355C65.5651 73.9869 64.7187 74.7779 63.7774 75.4502C62.8915 76.083 61.9582 76.6605 60.9299 77.048C60.8745 77.0718 60.8271 77.1271 60.7796 77.1667C59.8937 77.4989 58.9762 77.7046 58.027 77.7757C57.4496 77.8153 56.8722 77.8786 56.3026 77.752C55.7885 77.6334 55.2585 77.6966 54.7365 77.578C54.1274 77.4356 53.5184 77.317 52.9172 77.1825C52.8223 77.1588 52.7432 77.0797 52.6562 77.0243C52.5613 77.0718 52.5771 77.1667 52.5692 77.2458C51.976 77.7916 51.3353 78.2662 50.5917 78.5825C50.4415 78.5825 50.3149 78.6616 50.1804 78.7249C50.2754 78.8198 50.394 78.8752 50.5047 78.9385C51.2404 79.3498 52.0472 79.595 52.854 79.8323C54.3568 80.2753 55.8676 80.5758 57.4654 80.4255C58.9208 80.2911 60.2813 79.8402 61.618 79.3103C62.4486 78.986 63.2158 78.5351 63.9673 78.0684C64.6871 77.6175 65.4306 77.1983 66.0238 76.5734L66.0317 76.5655C66.2532 76.5181 66.4035 76.3441 66.538 76.2096C66.7753 75.9644 66.9809 76.0118 67.2182 76.1621C67.8905 76.5893 68.5866 76.9848 69.3143 77.3091C70.4771 77.8232 71.6398 78.3136 72.9212 78.4955C73.38 78.5588 73.8625 78.5272 74.3054 78.717C74.2896 78.7328 74.2896 78.7566 74.3054 78.7724C74.3766 78.8515 74.4082 78.9385 74.4082 79.0176C74.4082 78.9385 74.3845 78.8515 74.3054 78.7724C73.9178 79.4368 73.5223 80.0933 73.1427 80.7578C72.7472 81.438 72.241 81.438 71.6161 81.351C70.2556 81.1453 68.9663 80.7261 67.8035 79.9747C67.5583 79.8165 67.3843 79.8481 67.147 80.0459C66.1978 80.8606 65.3119 81.7544 64.2204 82.3951C63.7853 82.6561 63.3582 82.933 62.9311 83.194H62.9232C62.3853 83.3917 61.8474 83.5895 61.3017 83.7714C60.2417 84.1273 59.1581 84.3488 58.0349 84.3805C56.7931 84.4121 55.5829 84.2697 54.3726 83.9929C53.3444 83.7635 52.3556 83.4471 51.3985 83.0041C51.0189 82.8301 50.7341 82.4979 50.3149 82.403H50.307C49.5239 81.7465 48.7408 81.0821 47.9657 80.4255C47.847 80.3306 47.7126 80.3227 47.6018 80.4097C47.2538 80.6945 46.9137 80.995 46.5736 81.2877C46.7318 81.3194 46.8504 81.2798 46.9532 81.2165C46.8504 81.2798 46.7238 81.3194 46.5736 81.2877C46.5656 81.3747 46.5419 81.4538 46.5103 81.5171C46.5419 81.4538 46.5656 81.3747 46.5736 81.2877C46.012 81.6674 45.4345 82.0233 44.8809 82.4188C43.7339 83.2335 42.4604 83.7556 41.1158 84.1194C39.6604 84.5149 38.1654 84.6257 36.6546 84.5545C35.1992 84.4833 33.8466 84.0324 32.4861 83.5816C31.9245 83.3996 31.4579 83.012 30.8725 82.8855L30.8567 82.8776C30.8093 82.838 30.7697 82.7827 30.7143 82.751C29.6623 82.1182 28.6341 81.438 27.7323 80.5996C27.4397 80.3227 27.2024 80.4255 26.9414 80.5996C26.1583 81.1216 25.3119 81.5725 24.4339 81.881C23.4848 82.2132 23.3345 82.3634 22.7729 81.3747C22.5672 81.0188 22.3457 80.6391 22.0294 80.3464C22.0452 80.1645 21.9265 80.03 21.8474 79.8718C21.6576 79.4764 21.6971 79.4052 22.1085 79.2549C23.1842 78.8515 24.2757 78.4718 25.2407 77.8232C25.6758 77.5305 26.2057 77.3486 26.53 76.8978H26.538C26.6408 76.8898 26.7515 76.8978 26.7753 76.7475L26.7832 76.7396C26.9888 76.7079 27.1391 76.5972 27.2498 76.4152C27.503 76.3757 27.6532 76.5576 27.8352 76.6763C28.3414 77.0085 28.7764 77.4435 29.2985 77.7599C29.3697 77.7995 29.425 77.8469 29.5121 77.839C29.5358 77.9735 29.6386 78.0368 29.7414 78.0921C30.6906 78.6221 31.6002 79.2074 32.6364 79.5871C33.5777 79.9272 34.519 80.2753 35.5156 80.3385C37.1688 80.4414 38.8219 80.4414 40.4118 79.8877C40.9022 79.7137 41.4084 79.5713 41.8356 79.2549L41.8672 79.2628C41.5587 78.8673 41.3847 78.4085 41.2028 77.9418C40.9971 77.3961 40.8231 77.317 40.1982 77.3644C40.0717 77.317 39.9451 77.2616 39.8186 77.2141C39.8106 77.3249 39.953 77.317 39.9688 77.404C39.0118 77.7125 38.0151 77.6334 37.0422 77.5859C35.6263 77.5147 34.2184 77.3249 32.8342 76.9215C31.8613 76.6367 30.9516 76.2017 30.1053 75.6796C29.433 75.2604 28.8397 74.7146 28.2386 74.1768C28.0092 73.9711 27.8826 73.6468 27.5583 73.5598L27.5504 73.5519C27.3448 73.2355 27.1549 73.4807 27.0125 73.5914C26.3007 74.153 25.573 74.683 24.7741 75.1101C24.2757 75.3791 23.7774 75.648 23.2712 75.9248H23.2633C22.8124 75.9723 22.409 76.17 21.9819 76.2966C21.9423 76.3045 21.9107 76.3282 21.8712 76.3441C21.4757 76.4864 21.0327 76.6763 20.653 76.5893C20.2101 76.4944 20.305 75.9328 20.1785 75.5768C19.8225 74.5723 19.5773 73.544 19.6169 72.4603C19.6248 72.1914 19.688 72.0728 19.9886 72.049C21.8712 71.9066 23.5401 71.1394 25.1221 70.1902C25.9526 69.6919 26.7199 69.0987 27.4634 68.4817C27.503 68.4501 27.5188 68.3947 27.5425 68.3551C27.6928 68.3235 27.7877 68.4342 27.8905 68.5133C29.0612 69.4467 30.2635 70.3484 31.5607 71.1078C32.8975 71.8829 34.3291 72.318 35.8874 72.3259C36.1088 72.3259 36.3303 72.3338 36.5122 72.492C36.9157 72.3259 37.327 72.1519 37.7304 71.9857C38.9406 71.5744 40.1903 71.3371 41.4243 70.997C41.622 70.9416 41.7406 70.8625 41.8197 70.6806C42.3339 69.6128 43.0458 68.7506 44.2085 68.3472C44.2639 68.3314 44.3193 68.3077 44.3667 68.2919C44.4063 68.3077 44.4458 68.3156 44.4854 68.3314C45.0074 68.545 45.5295 68.7506 45.8696 69.241C46.1781 68.9246 46.4786 68.6082 46.8267 68.3393C46.9611 68.2365 47.0481 68.2286 47.1589 68.3393C47.4278 68.5845 47.7679 68.7427 47.9894 69.0354C48.2267 68.98 48.4403 68.8455 48.6934 68.806C49.3974 68.7032 49.9431 68.9484 50.394 69.4704C50.5206 69.6128 50.6867 69.7314 50.829 69.8659C50.9793 70.1032 51.2324 70.2219 51.4144 70.4196C51.5963 70.6173 51.7545 70.9179 51.9839 70.9812C52.2291 71.0524 52.411 70.7123 52.6404 70.5778C52.7511 70.5145 52.8698 70.4591 52.9805 70.3959C53.724 70.2693 54.4597 70.3326 55.1715 70.5778C55.2032 70.6411 55.2665 70.6569 55.3297 70.649C55.4167 70.7202 55.5038 70.7914 55.6224 70.7993C55.7648 70.9575 55.923 71.1078 56.0495 71.2818C56.4688 71.8434 56.4688 71.8434 57.1253 71.5982C57.1332 71.5903 57.1411 71.5823 57.1569 71.5744C57.9558 71.3925 58.644 70.9258 59.4191 70.6964C60.0519 70.5145 60.6847 70.4038 61.3412 70.3721C61.539 70.3642 61.6734 70.4196 61.7604 70.5936C61.7842 70.6569 61.8158 70.7202 61.8395 70.7834C63.4531 70.3247 64.8294 69.4467 66.0871 68.3551C66.5854 67.928 66.5933 67.9122 67.1233 68.3077C68.4601 69.3122 69.8759 70.1665 71.4342 70.7676C72.4308 71.1552 73.4353 71.527 74.5111 71.701C74.9303 71.7643 75.3653 71.8275 75.7846 71.9225C76.0772 71.9778 76.1721 72.0965 76.1405 72.3654ZM61.1118 77.2062C61.009 77.2062 60.9062 77.1904 60.8033 77.2062C60.5977 77.3644 60.3999 77.5305 60.1785 77.6492C60.3999 77.5305 60.5977 77.3644 60.8033 77.2062C60.9062 77.1904 61.009 77.2062 61.1118 77.2062ZM19.6248 66.3144C19.6248 65.6262 19.6248 65.6262 20.2892 65.5234C20.3287 65.5155 20.3683 65.5155 20.4078 65.5155C21.4361 65.3494 22.4248 65.0488 23.3345 64.5426C24.8611 63.6962 25.9447 62.3674 27.0758 61.0939C27.1312 61.086 27.1787 61.086 27.234 61.0781C27.3922 61.0781 27.5583 61.0623 27.5425 61.2996L27.5504 61.3233C27.5741 61.347 27.59 61.3708 27.6137 61.3945C27.6295 61.4103 27.6532 61.4182 27.6849 61.4103C27.9301 61.3707 28.025 61.521 28.0804 61.7188H28.0883C28.4442 62.1222 28.8714 62.4228 29.3618 62.6442C30.5957 63.5222 32.0116 63.981 33.4116 64.4714C33.554 64.5268 33.7201 64.5268 33.8704 64.5505C34.0365 64.7641 34.3054 64.7166 34.519 64.7799C35.5314 65.0726 36.5597 65.207 37.6196 65.12C38.6163 65.0409 39.5417 64.7166 40.483 64.4635C40.8152 64.3765 41.179 64.3369 41.448 64.0838H41.4559C41.6062 64.0917 41.7406 64.0443 41.8435 63.9256C41.8672 63.9335 41.8988 63.9256 41.9147 63.9098C42.2152 63.9256 42.413 63.7041 42.6582 63.6013C43.3859 63.3007 44.0582 62.8973 44.6989 62.4465C45.4662 61.9086 46.2255 61.347 46.882 60.6668C47.0007 60.5481 47.1352 60.4928 47.2854 60.643C48.3295 61.6713 49.516 62.4939 50.7895 63.2058C51.4302 63.5618 52.0551 63.9494 52.7907 64.0917L52.7986 64.0996C52.8065 64.1708 52.8461 64.2104 52.9172 64.2341C54.5229 64.7799 56.1682 65.033 57.8688 64.9697C58.9762 64.9302 60.0598 64.7482 61.1118 64.3923C62.3695 63.9573 63.4689 63.2137 64.5605 62.4623C65.3831 61.9007 66.182 61.3075 66.9967 60.7221C67.1075 60.643 67.2024 60.556 67.3369 60.6905C67.6295 60.9911 67.9696 61.2363 68.2781 61.5131C69.1878 62.3358 70.1765 63.0635 71.2918 63.538C72.7234 64.155 74.2026 64.6375 75.7687 64.8194C75.9428 64.8432 76.0535 64.9064 76.0614 65.1121C76.0772 66.2432 76.1089 67.3743 76.1405 68.5054C76.1484 68.7585 76.0456 68.8455 75.7925 68.8535C75.0252 68.8693 74.2817 68.7348 73.5461 68.5212C71.2443 67.8568 69.0928 66.8918 67.234 65.3494C66.799 64.9935 66.7911 65.0014 66.3481 65.3889C65.2645 66.3223 64.1096 67.1449 62.8757 67.8647C62.496 68.0862 62.0689 68.2048 61.7288 68.4896H61.7209C61.6418 68.4975 61.5548 68.4896 61.4915 68.5133C60.6531 68.8851 59.7513 69.0433 58.8575 69.1145C57.4417 69.241 56.0258 69.154 54.6179 68.9009C52.9884 68.6003 51.5172 67.9122 50.0934 67.0975C49.7296 66.8918 49.4132 66.6071 49.0177 66.4568L49.0019 66.4489C48.5431 66.0217 48.0369 65.6579 47.5465 65.2782C47.2933 65.0805 47.1114 65.1279 46.8979 65.3257C46.5261 65.6658 46.1543 66.0059 45.7272 66.2907C45.5374 66.4172 45.3238 66.528 45.2289 66.7573L45.221 66.7653C45.0944 66.7653 44.9995 66.8364 44.9046 66.9076C44.1294 67.493 43.2593 67.9201 42.3893 68.3235C40.9734 68.9879 39.4547 69.328 37.9044 69.423C35.6184 69.5574 33.3879 69.336 31.2918 68.2602C29.9866 67.5879 28.8476 66.7573 27.8826 65.6579C27.7482 65.4997 27.5979 65.4048 27.4159 65.5788C27.1549 65.8319 26.9176 66.1087 26.7278 66.4172H26.7199C26.1504 66.8127 25.573 67.1924 25.0825 67.6907C25.0509 67.7065 25.0193 67.7223 24.9876 67.7461C24.8373 67.7935 24.6871 67.8489 24.6159 68.0071L24.608 68.015C24.2837 68.0941 23.991 68.2523 23.7458 68.4896L23.7379 68.4975C23.374 68.6082 23.0339 68.7506 22.7254 68.9721H22.7175C22.5514 68.9405 22.409 69.0354 22.2666 69.0907C21.5469 69.3834 20.8191 69.6365 20.0282 69.6286C19.7118 69.6286 19.6169 69.5258 19.6169 69.2252C19.6327 68.2602 19.6248 67.2873 19.6248 66.3144ZM29.2115 58.5786C29.1877 58.4046 29.2352 58.2859 29.3222 58.1435C29.7573 57.4633 30.1211 56.7356 30.6511 56.1107C30.7064 56.0395 30.7697 55.9604 30.7855 55.8813C30.9121 55.2169 31.3155 54.7107 31.8455 54.3705C32.9449 53.6666 33.5382 52.5829 34.1789 51.523C34.8275 50.4315 35.5077 49.3478 36.4569 48.4935C37.24 47.7896 38.1496 47.2201 38.8931 46.4686C39.075 46.2867 39.2649 46.1839 39.5575 46.2946C39.7553 46.3737 40.0005 46.3262 40.1982 46.1997C40.657 46.0019 41.1 45.7647 41.5192 45.4957C41.5983 45.4483 41.6457 45.4166 41.6932 45.5194C41.8197 45.6618 41.9542 45.7805 42.1124 45.8596C41.9463 45.7805 41.8197 45.6618 41.6932 45.5194C41.4084 45.8438 41.0683 46.1127 40.744 46.3895C40.1033 46.9353 39.3281 47.3862 38.9643 48.1851C38.5372 49.1105 37.8095 49.7275 37.0343 50.3128C36.4885 50.7162 35.919 51.088 35.3732 51.4914C34.7879 51.9185 34.3054 52.4643 33.8704 53.0338C33.3167 53.7536 32.502 54.2835 32.2409 55.2248C32.2093 55.3435 32.0986 55.4621 31.9957 55.5254C31.5211 55.8101 31.2127 56.2689 30.8409 56.6486C30.5403 56.9571 30.303 57.3209 30.1607 57.7718C30.3426 57.756 30.4375 57.6769 30.5403 57.5978C32.5969 55.9525 34.5506 54.1965 36.5202 52.4485C36.6704 52.314 36.884 52.2112 36.8998 51.9739C36.9156 51.7128 37.0818 51.5705 37.2716 51.4518C37.4693 51.3332 37.6117 51.175 37.762 51.001C38.7507 49.8461 39.7632 48.7071 41.187 48.0506C41.3372 47.9794 41.4322 47.8845 41.4163 47.7263C41.3926 47.4494 41.5587 47.2913 41.7486 47.141C42.3022 46.6901 42.935 46.3816 43.5362 46.0019C44.0345 45.6935 44.4695 45.2901 44.5724 44.6968C44.6356 44.3251 44.8018 44.0561 45.039 43.7872C45.3317 43.4629 45.5769 43.0753 45.9803 42.8617C45.9566 42.7668 45.8696 42.7194 45.7984 42.6482C45.8696 42.7194 45.9566 42.7589 45.9803 42.8617C46.099 42.9171 46.2334 42.7747 46.3442 42.9013C45.9091 43.368 45.4029 43.803 45.2131 44.4121C44.7464 45.8912 43.4887 46.6664 42.4604 47.6393C41.7644 48.2958 40.9497 48.8178 40.1824 49.3794C40.0163 49.506 39.9056 49.5693 40.1824 49.7196C40.4513 49.8619 40.2773 50.0992 40.1745 50.2495C39.9135 50.6134 39.5892 50.9219 39.1779 51.1196C38.4818 51.4439 37.9281 51.8869 37.4456 52.5196C36.5755 53.6666 35.5789 54.7107 34.6218 55.7864C33.8941 56.609 33.1743 57.4396 32.3912 58.2147C31.7584 58.8317 31.0624 59.3854 30.2635 59.7967C30.0657 59.8995 29.8443 59.947 29.6228 59.9628C29.4962 59.9391 29.3539 59.9707 29.2431 59.8837C29.0058 59.678 28.9109 59.4012 29.0928 59.156C29.2115 58.9662 29.2352 58.7842 29.2115 58.5786ZM35.2309 43.4787C34.9382 43.6765 34.606 43.9691 34.1393 44.0482C34.2184 43.9375 34.2421 43.8742 34.2896 43.8505C35.1755 43.4075 35.7925 42.6403 36.5676 42.0628C36.9868 41.7465 37.4931 41.5962 37.9281 41.3193C37.9993 41.2719 38.2445 41.2798 38.3394 41.4142C38.4264 41.525 38.3711 41.6674 38.284 41.7781C38.1496 41.96 37.9756 42.0945 37.7699 42.1815C36.9077 42.5612 36.0377 42.9329 35.2309 43.4787ZM38.6084 44.3725C38.7033 44.3883 38.814 44.4516 38.9247 44.5307C39.2728 44.3567 39.5813 44.0878 39.9847 44.0245C40.0479 44.2381 39.8186 44.2776 39.779 44.4121C39.4072 44.9104 39.0355 45.4087 38.6558 45.8991C38.2999 46.3579 37.8886 46.7534 37.3902 47.0619C37.1213 47.228 37.0106 47.141 36.9631 46.8799C36.8919 46.524 36.8603 46.1601 37.1767 45.8991C37.7462 45.4324 38.3315 44.9816 38.9168 44.5307C38.814 44.4516 38.7033 44.3883 38.6084 44.3725ZM47.9261 41.5566C47.9103 41.5962 47.9024 41.6436 47.9024 41.6753C47.9024 41.6436 47.9103 41.6041 47.9261 41.5566C47.6335 41.5566 47.3408 41.699 47.0481 41.5487C46.9928 41.5171 46.9216 41.5171 46.9295 41.4222C46.7871 41.3035 46.6606 41.1769 46.6685 40.9792C46.6606 41.1769 46.7871 41.3035 46.9295 41.4222C47.2222 41.264 47.5306 41.3431 47.8391 41.3668C47.9499 41.3747 47.9973 41.4459 47.9261 41.5566ZM46.6764 40.9238C46.6606 40.9238 46.6447 40.9238 46.6289 40.9238C46.6368 40.9238 46.6606 40.9238 46.6764 40.9238ZM43.5599 43.4866C43.3701 43.629 43.1644 43.7556 43.2435 44.0482C43.2593 44.0719 43.2672 44.1036 43.2831 44.1273C43.2752 44.0957 43.2593 44.0719 43.2435 44.0482C42.9588 44.1827 42.8559 44.0957 42.9271 43.7872C42.9825 43.7397 42.9904 43.6844 42.9746 43.6211C42.9825 43.5974 42.9904 43.5736 43.0062 43.5499C42.9904 43.5499 42.9667 43.5499 42.9508 43.5499C42.9667 43.5499 42.9904 43.5499 43.0062 43.5499C43.117 43.4075 43.1881 43.2256 43.3859 43.1702C43.4966 43.1386 43.6548 43.099 43.7181 43.194C43.7814 43.3126 43.6548 43.4233 43.5599 43.4866ZM47.5544 48.6043C47.5069 48.4619 47.4041 48.3274 47.5623 48.193C47.7284 48.0506 47.8549 48.2088 47.9894 48.2483C48.0685 48.3433 48.0922 48.4303 48.0052 48.5568C47.7047 48.9998 47.4357 49.4665 47.0798 49.8699C46.9137 50.0676 46.6289 50.2258 46.7713 50.5659C46.8108 50.6529 46.7001 50.7004 46.6447 50.7478C45.3713 51.8078 44.1531 52.923 42.7768 53.8564C42.6898 53.9118 42.5949 53.9513 42.4288 54.0304C42.6186 53.627 42.8243 53.3502 43.1328 53.1208C44.2481 52.2903 45.2526 51.3411 46.2334 50.3603C46.273 50.3207 46.3283 50.2812 46.3283 50.2416C46.3521 49.7749 46.7001 49.5772 47.0481 49.3953C47.151 49.3399 47.2301 49.2529 47.3171 49.1738C47.499 49.0235 47.6414 48.8574 47.5544 48.6043ZM40.7677 55.6678C40.8073 55.8022 40.483 55.9288 40.3011 56.0158C39.9768 56.174 39.6445 56.3164 39.2728 56.3638C38.6163 56.4587 38.0468 56.8068 37.4614 57.0915C37.3191 57.1627 37.1925 57.2418 37.0264 57.2023C37.2004 56.9254 37.4772 56.783 37.7462 56.6407C38.4818 56.2452 39.2253 55.8497 40.0242 55.5966C40.1745 55.5491 40.2615 55.4621 40.3327 55.3355C40.7994 54.5446 41.6062 54.2677 42.4525 53.8801C42.3339 54.3943 42.0333 54.6632 41.709 54.8926C41.4875 55.0508 41.2344 55.1615 41.005 55.3118C40.8943 55.3909 40.6886 55.3751 40.7677 55.6678ZM36.9394 56.522C36.6388 56.4746 36.5281 56.7672 36.3461 56.9254C36.1563 57.0915 36.0218 57.3842 35.6975 57.0441C35.571 56.9017 35.2783 57.0441 35.0568 57.0283C36.8049 56.0316 38.2761 54.6237 40.0638 53.6982C40.4355 53.5084 40.4355 53.5005 40.7915 53.809C41.1553 52.844 42.1124 52.5987 42.8718 52.1242C43.2356 51.8948 43.5915 51.6258 44.074 51.5151C43.987 51.7999 43.7893 51.958 43.6153 52.1083C42.413 53.1445 41.0841 54.0067 39.7395 54.8372C38.9801 55.3039 38.2129 55.7548 37.5089 56.3005C37.3349 56.4192 37.1846 56.5537 36.9394 56.522ZM37.0185 57.2181C36.9868 57.226 36.9552 57.2418 36.9236 57.2497C36.9631 57.2418 36.9947 57.226 37.0185 57.2181ZM29.7731 60.0735C29.7889 60.0894 29.8047 60.1131 29.8047 60.1368C29.8047 60.1131 29.7889 60.0973 29.7731 60.0735ZM30.3109 61.1255C30.303 61.0148 30.3268 60.9832 30.3663 60.9832C30.3268 60.9832 30.303 61.0069 30.3109 61.1255ZM30.7064 60.8962C30.4296 60.7854 30.042 60.7459 30.0341 60.3978C30.0262 60.1368 30.3742 60.0419 30.5878 59.9312C31.9562 59.2272 33.285 58.452 34.7325 57.9221C34.7484 57.9379 34.7642 57.9616 34.78 57.9774C34.1235 58.4362 33.467 58.9108 32.85 59.5673C32.9766 59.5594 33.0873 59.5198 33.1901 59.4645C33.024 59.5989 32.8658 59.7334 32.6997 59.8679C32.589 59.9549 32.4861 60.0419 32.3754 60.1289C31.9562 60.3029 31.537 60.469 31.1731 60.7459C31.0703 60.8012 30.9675 60.8645 30.8646 60.9199C30.8093 60.912 30.7539 60.912 30.7064 60.8962ZM30.6906 61.086C30.6748 61.086 30.659 61.086 30.6432 61.086C30.659 61.086 30.6748 61.086 30.6906 61.086ZM30.2951 61.2126C30.2477 61.2205 30.1527 61.1809 30.1369 61.1097C30.0974 60.9673 30.0183 60.8487 29.9471 60.7221C29.9234 60.6826 29.9075 60.651 29.8917 60.6114C29.9075 60.651 29.9313 60.6826 29.9471 60.7221C30.0183 60.8487 30.0974 60.9753 30.1369 61.1097C30.1527 61.173 30.2556 61.2126 30.2951 61.2126ZM32.0986 61.0227C32.1144 61.0306 32.1302 61.0306 32.146 61.0385C32.1302 61.0306 32.1144 61.0306 32.0986 61.0227ZM32.1777 61.0464C32.1935 61.0544 32.2093 61.0544 32.2251 61.0544C32.2093 61.0544 32.1935 61.0544 32.1777 61.0464ZM32.2568 61.0702C32.2726 61.0702 32.2884 61.0781 32.3042 61.0781C32.2884 61.0702 32.2726 61.0702 32.2568 61.0702ZM32.3359 61.0781C32.3517 61.0781 32.3675 61.0781 32.3912 61.0781C32.3675 61.0781 32.3517 61.0781 32.3359 61.0781ZM32.415 61.0781C32.4387 61.0781 32.4703 61.0781 32.4941 61.0702C32.4703 61.0781 32.4387 61.0781 32.415 61.0781ZM31.3709 60.8171C31.3471 60.8171 31.3155 60.825 31.2918 60.8329C31.3155 60.825 31.3392 60.8171 31.3709 60.8171ZM31.9325 60.9594C31.9562 60.9674 31.9799 60.9753 32.0036 60.9911C31.9799 60.9753 31.9562 60.9674 31.9325 60.9594ZM32.0748 61.0148C32.059 61.0069 32.0432 60.999 32.0195 60.999C32.0432 60.999 32.059 61.0069 32.0748 61.0148ZM32.8263 61.9798C32.8421 62.0352 32.8342 62.1143 32.85 62.1696C32.8263 62.1222 32.8421 62.0352 32.8263 61.9798C32.8025 61.9086 32.7551 61.877 32.6997 61.8691C32.7472 61.8849 32.7946 61.9086 32.8263 61.9798ZM41.5825 50.5264C42.0096 50.3286 42.4209 50.1388 42.7927 49.8619C42.8085 49.8778 42.8243 49.8857 42.848 49.8778C42.587 50.2733 42.1678 50.4789 41.8039 50.7478C41.1395 51.2303 40.4355 51.6575 40.2536 52.5671C40.2061 52.8044 39.5417 53.1287 39.0038 53.2474C39.1937 52.7095 39.6208 52.3298 39.8502 51.8473C40.2061 51.1038 40.918 50.8349 41.5825 50.5264ZM43.9791 53.8248C43.7418 54.5287 42.6503 55.0983 41.9305 55.1299C42.5395 54.5762 43.1486 54.07 43.9791 53.8248ZM45.6323 49.5772C44.7701 50.2891 43.8209 50.8665 42.8718 51.4439C42.326 51.7682 41.8277 52.1716 41.2265 52.4168C41.2028 52.401 41.179 52.3773 41.1553 52.3615C41.274 52.0925 41.4401 51.8552 41.7011 51.7128C42.848 51.088 43.8921 50.3286 44.8571 49.4585C45.0311 49.3003 45.2368 49.1738 45.482 49.1896C45.6006 49.1975 45.7272 49.2054 45.7747 49.3399C45.83 49.4585 45.7114 49.5139 45.6323 49.5772ZM48.7962 66.433C48.7092 66.4093 48.6301 66.3698 48.551 66.3223C48.6301 66.3698 48.7092 66.4093 48.7962 66.433ZM36.7812 58.3255C36.8366 58.2068 36.9157 58.1277 37.0264 58.0803C38.0151 57.6294 39.0197 57.226 40.04 56.8463C40.8706 56.5378 41.8356 56.6407 42.5475 55.9604C42.7847 55.731 43.109 55.5887 43.3938 55.3988C44.6277 54.5762 45.7905 53.6666 46.708 52.4722C47.3883 51.5863 47.8945 50.5659 48.6776 49.7591C48.9702 49.4506 49.0731 49.1026 49.1284 48.6992C49.1917 48.2009 49.1522 47.6709 49.4369 47.2122C49.5002 47.1093 49.4211 47.0381 49.4053 46.959C49.3657 46.7376 49.3024 46.524 49.2787 46.3025C49.2392 45.8279 49.6109 45.7014 49.9431 45.5432C50.1092 45.4641 50.2437 45.3533 50.22 45.1635C50.1963 44.9737 50.0301 44.8629 49.8482 44.8629C49.5476 44.855 49.5239 44.6968 49.5951 44.4833C49.6821 44.2222 49.5951 44.1194 49.3262 44.1115C49.0335 44.0957 49.0019 43.8979 49.0493 43.6606C49.0651 43.5657 49.1759 43.5024 49.1205 43.368C48.994 43.3996 48.8753 43.4075 48.7725 43.455C47.942 43.8347 47.2459 44.3804 46.7159 45.124C46.5736 45.3217 46.4233 45.559 46.5656 45.8358C46.5577 45.8833 46.5577 45.9308 46.5498 45.9861C46.4865 45.9782 46.4312 45.9782 46.4074 46.0494C45.7193 46.4765 45.134 47.046 44.4695 47.5127C44.3746 47.5839 44.3034 47.75 44.1373 47.663C44.1373 47.6946 44.1373 47.7342 44.1294 47.7342C44.0661 47.7579 44.0582 47.7105 44.0582 47.663C44.082 47.663 44.1057 47.6551 44.1294 47.6551C44.8413 46.7534 45.6639 45.9466 46.2018 44.9104C46.5736 44.1985 47.1272 43.629 47.7205 43.0832C48.029 42.7985 48.4482 42.7826 48.7567 42.5295C48.8832 42.4346 48.9702 42.3872 48.7962 42.2764C48.6301 42.1815 48.6697 42.1182 48.812 42.0391C48.907 41.9838 49.0572 41.9363 49.0335 41.8097C49.0098 41.6674 48.8358 41.6515 48.725 41.5883C48.6459 41.5408 48.4324 41.5962 48.5036 41.4538C48.7171 40.995 48.3295 40.9476 48.1001 40.8764C47.76 40.7656 47.5227 40.647 47.6335 40.1961C47.2538 40.3069 47.0481 40.5442 46.9849 40.8526C46.9137 41.169 46.8029 41.0029 46.6764 40.9317C46.6685 40.8447 46.6447 40.7656 46.5656 40.7261C46.5024 40.7103 46.4391 40.6865 46.3758 40.6707C46.2255 40.4967 46.2651 40.291 46.2967 40.0933C45.8063 40.2357 45.3396 40.3781 44.865 40.5204C44.8334 40.6312 44.8018 40.7498 44.7543 40.8526C44.691 41.0029 44.6752 41.169 44.8334 41.2323C45.039 41.3114 45.0549 41.0979 45.0865 40.9713C45.0944 40.9476 45.1023 40.9238 45.1102 40.9001C45.1023 40.9238 45.0944 40.9476 45.0865 40.9713C45.047 41.0979 45.039 41.3114 44.8334 41.2323C44.6752 41.1769 44.691 41.0029 44.7543 40.8526C44.8018 40.7419 44.8255 40.6312 44.865 40.5204C44.8729 40.5046 44.8729 40.4888 44.8492 40.473C44.9916 40.2278 45.2684 40.0379 45.2368 39.7294C45.2131 39.5238 45.3396 39.4526 45.4504 39.3498C45.6323 39.1837 46.1464 39.2311 45.83 38.7486C46.0436 38.3848 45.8538 37.8627 46.2888 37.5938C46.3521 37.5542 46.36 37.491 46.3204 37.4198C46.1622 37.1429 46.3363 37.1034 46.5577 37.048C46.9611 36.9531 46.9374 36.5813 46.969 36.2887C46.9928 36.0435 46.8108 35.9248 46.5736 35.8378C46.3204 35.7508 45.9882 35.8062 45.8379 35.5293C45.6165 35.1417 45.2684 35.2129 44.9837 35.3316C44.7464 35.4265 44.5645 35.7983 44.343 35.3237C44.3351 35.3079 44.2402 35.3237 44.1927 35.3395C44.0424 35.379 43.9 35.4265 43.7497 35.474C43.5915 35.4819 43.4333 35.4977 43.2831 35.4898C42.9034 35.474 42.8085 35.2999 42.9429 34.944C43.0932 34.5327 43.4017 34.7225 43.639 34.7621C43.9949 34.8254 44.1373 34.7463 44.169 34.3745C44.1769 34.2875 44.169 34.1926 44.169 34.0344C44.5249 34.3191 45.0311 34.1214 45.2922 34.5564C45.3317 34.6118 45.395 34.6197 45.4741 34.5327C45.6956 34.3033 46.2413 34.3508 46.4312 34.6039C46.5815 34.8016 46.7634 35.0152 46.9928 34.7542C47.4674 34.2242 48.0448 33.8841 48.7171 33.6626C48.812 33.631 48.8832 33.544 48.9623 33.4807C48.725 33.2434 48.8437 32.8083 48.4877 32.6343C48.0843 32.4445 47.6414 32.5157 47.2142 32.4761C45.7193 32.3338 44.2402 32.4761 42.7689 32.7213C42.0412 32.84 41.97 32.9507 41.9305 33.5202C41.8197 33.9395 41.9147 34.3666 41.9147 34.7937C41.9226 34.857 41.883 34.8807 41.8356 34.9124C41.1632 35.3949 40.7519 36.0988 40.309 36.7712C40.2378 36.8898 40.2141 37.135 40.0875 37.1034C39.779 37.0085 39.7236 37.2458 39.605 37.396C39.518 37.4989 39.4389 37.6017 39.2965 37.6175C38.6637 37.7124 38.4502 38.2345 38.205 38.7091C37.8569 38.8435 37.8253 39.2153 37.6513 39.4763C37.2162 40.1408 36.7891 40.8289 35.9269 40.9476C35.4998 41.0108 35.0806 41.1216 34.6534 41.1453C34.5111 41.1532 34.3924 41.2481 34.2342 41.1928C33.7517 41.0267 33.2297 41.0346 32.7314 40.9238C32.146 40.7894 31.5211 40.8764 30.9754 40.5679C30.5008 40.299 29.9866 40.0696 29.5753 39.7057C29.2668 39.4368 28.9267 39.4131 28.5471 39.4605C27.6691 39.5792 26.8227 39.8085 26.0001 40.1012C25.2249 40.3781 24.4577 40.5758 24.0068 41.4696C23.3978 42.6561 22.3537 43.4866 21.1514 44.0799C20.9773 44.1669 20.9932 44.333 20.8666 44.42C20.8271 44.4912 20.7796 44.5703 20.7401 44.6415L20.748 44.6494V44.6335C21.1435 44.4121 21.5864 44.2381 21.9344 43.9533C23.1605 42.9408 24.8373 42.8697 26.1029 41.9521C26.1108 41.9442 26.1346 41.96 26.1425 41.9521C26.6566 41.612 27.2973 41.4222 27.5662 40.7894C27.6295 40.6391 27.7244 40.5679 27.8668 40.5363C27.9459 40.5363 28.0171 40.5442 28.0883 40.5442C28.2939 40.6153 28.46 40.734 28.6024 40.8843C28.9584 41.2719 29.3222 41.6515 29.8838 41.7227C29.9313 41.7306 29.9946 41.7702 30.0104 41.8097C30.1211 42.134 29.9866 42.5295 30.2951 42.7985C30.303 42.8064 30.2793 42.8459 30.2635 42.8697C29.8284 43.5657 29.3222 44.1827 28.4838 44.42C28.373 44.3962 28.199 44.4516 28.2386 44.2301C28.5154 43.8426 28.5075 43.8109 28.0408 43.7635C27.9143 43.7476 27.7798 43.7476 27.6532 43.7397C27.4397 43.7397 27.2103 43.7318 27.4634 44.0403C27.5741 44.1748 27.4239 44.1985 27.3685 44.2301C27.1075 44.3883 26.9888 44.6177 27.0284 44.9183C26.973 44.9262 26.9176 44.9341 26.8939 44.9974C26.8544 45.029 26.8227 45.0528 26.7911 45.0844C26.7673 45.0765 26.7515 45.0844 26.7515 45.1081C26.6487 45.116 26.5775 45.1793 26.5142 45.2584C25.4227 45.9149 25.3752 45.6381 25.1775 45.0211C25.2487 44.6256 25.13 44.246 25.043 43.8663C24.9639 43.5578 24.7424 43.455 24.4419 43.6053C24.3232 43.6606 24.2125 43.7239 24.0859 43.7951C24.252 43.9849 24.5051 43.8821 24.6712 44.0324C24.4498 44.246 24.6317 44.5703 24.4656 44.7997C24.2678 45.0765 23.9514 44.9025 23.6667 44.9658C23.9356 45.385 23.817 45.8121 23.7062 46.2313C23.635 46.5161 23.4294 46.5794 23.2158 46.3816C23.1525 46.3263 23.1367 46.2234 23.026 46.1918C22.8836 46.5082 23.0655 46.785 23.1446 47.054C23.2396 47.3545 23.1605 47.5365 22.8599 47.6235C22.1085 47.837 21.6734 48.4698 21.1039 48.9286C21.0881 48.9444 21.1039 48.9919 21.1039 49.0472C21.3254 49.0077 21.5073 48.9128 21.6971 48.8574C21.9344 48.7862 22.2666 48.4777 22.4248 48.9998C22.4644 49.1422 22.6305 49.0789 22.7412 49.0551C22.9073 49.0235 23.113 48.8811 23.2237 48.9365C23.5085 49.071 23.7062 48.9523 23.9119 48.8178C25.1696 48.0348 26.4747 47.3387 27.8193 46.7059C28.0092 46.611 28.2386 46.3816 28.4047 46.5161C28.6182 46.698 28.2939 46.8878 28.2623 47.0935C28.2623 47.1093 28.2781 47.1331 28.3018 47.1726C29.7652 46.5873 31.2285 45.994 32.6918 45.4087C33.0873 45.3059 33.4828 45.2189 33.8625 45.0844C34.0998 44.9974 34.3924 45.029 34.5823 44.8076C34.5743 44.7838 34.5743 44.7601 34.5664 44.7364C34.5664 44.7601 34.5743 44.7838 34.5823 44.8076C34.8116 44.8076 35.0252 44.6415 35.3574 44.7759C34.8907 45.0211 34.867 45.7884 34.1235 45.5669C34.0839 45.559 34.0048 45.6223 33.9653 45.6697C33.1506 46.7217 32.2963 47.75 31.7268 48.976C31.6477 49.158 31.5607 49.3399 31.7664 49.506C31.8929 49.6088 31.8692 49.7512 31.8375 49.9015C31.6161 51.1354 31.094 52.2428 30.485 53.3185C30.1607 53.896 29.8364 54.4734 29.5121 55.0508C29.5595 55.0824 29.5437 55.0666 29.5912 55.0983C29.9234 54.6316 30.2556 54.1649 30.5957 53.6982C31.363 52.6541 31.6082 51.3569 32.32 50.2891C32.415 50.1546 32.4387 49.9727 32.4861 49.8066C32.6048 49.4348 32.6997 49.0472 32.8421 48.6834C33.0794 48.0822 33.1743 47.402 33.6805 46.9274C34.1709 46.4607 34.6693 46.0019 35.2941 45.7093C35.3258 45.5985 35.3416 45.4878 35.3574 45.3692C35.3416 45.4799 35.3258 45.5985 35.302 45.7093C35.4049 45.6935 35.5077 45.6776 35.6026 45.6618C35.6422 45.907 35.484 46.081 35.3732 46.2709C35.0568 46.8325 34.5348 47.2359 34.2026 47.7817C34.163 47.8528 34.0444 47.9082 34.1156 48.011C34.3291 48.3037 34.1077 48.4698 33.9336 48.6676C33.6964 48.9365 33.4274 49.2054 33.372 49.593C33.3167 50.0043 33.1822 50.4473 32.9924 50.7558C32.4941 51.5626 31.8613 52.2903 31.5607 53.2078C30.5641 54.2282 30.1686 55.6203 29.3776 56.7672C29.2985 56.8859 29.2431 57.0283 29.2115 57.1627C29.1719 57.3051 29.2906 57.2497 29.3539 57.2576C29.3776 57.2023 29.425 57.1311 29.4804 57.1785C29.5516 57.2418 29.4567 57.2735 29.4171 57.313C29.2827 57.5898 29.0296 57.7718 28.8714 58.0249C28.6815 58.3334 28.3809 58.5786 28.1357 58.7605C27.8826 58.9503 27.6216 58.4046 27.3131 58.2622C27.2894 58.2543 27.2578 58.2305 27.2419 58.2068C27.0521 57.9695 26.9018 58.0723 26.7436 58.2543C26.5063 58.5311 26.269 58.808 26.0159 59.0611C25.5255 59.5436 25.0193 60.0103 24.513 60.4848C24.4972 60.5086 24.4814 60.5244 24.4577 60.5481C23.9119 60.9515 23.3819 61.3312 22.8362 61.7346C22.1717 61.9877 21.5785 62.3832 20.9062 62.6363C20.4395 62.8103 19.9649 62.8262 19.4824 62.7866C19.4745 57.8113 19.4745 52.836 19.4507 47.8608C19.4428 46.8246 19.4033 45.7805 19.427 44.7443C19.4112 43.6053 19.3875 42.4583 19.3796 41.3193C19.3637 38.0447 19.3558 34.7779 19.34 31.5032C19.3321 29.945 18.7784 28.5766 17.8688 27.3268C17.0778 26.2274 16.2077 25.207 15.2506 24.2578C15.2269 24.2341 15.2111 24.1866 15.1794 24.1629C14.8393 23.8307 14.8551 23.2691 15.1636 22.9131C16.0179 21.9244 16.8721 20.9357 17.7027 19.9311C17.9083 19.678 18.2405 19.5515 18.3829 19.2351C18.4067 19.2113 18.4304 19.1876 18.4541 19.1718L18.4462 19.1797C18.7547 18.6893 18.7705 18.6893 19.0078 19.0136C19.0869 18.9899 19.1106 19.0215 19.0948 19.1006C19.4982 19.2746 19.8067 19.591 20.1389 19.8679C20.8903 20.4927 21.6734 21.0781 22.5039 21.5922C22.7096 21.7188 22.8124 21.9402 23.0181 22.051C23.4531 22.1301 23.8091 22.3911 24.1808 22.5888C24.7741 22.9052 25.3989 23.1109 26.0238 23.3324C27.3764 23.7832 28.7606 23.894 30.1765 23.6962C30.7855 23.6171 31.3867 23.4985 31.972 23.3245C33.1822 23.0081 34.3054 22.4623 35.4761 22.0431C35.5393 22.0352 35.6026 22.0272 35.6738 22.0193C35.745 21.8928 35.8716 21.877 35.9981 21.8611L35.9902 21.869C36.623 21.5606 37.2874 21.3312 37.9677 21.1493C38.4343 20.904 38.9485 20.8012 39.4468 20.643C39.9609 20.4769 40.5304 20.4453 40.9971 20.1131C41.1474 20.0023 41.4322 20.2001 41.6378 20.0656C41.6774 20.0419 41.7248 20.0261 41.7723 20.0102C42.2864 19.9153 42.8006 19.8204 43.3147 19.7097C43.3543 19.7018 43.378 19.6385 43.4096 19.6068L43.4333 19.5989C43.4413 19.7018 43.4966 19.7097 43.5757 19.6701C44.4774 19.5673 45.3713 19.4724 46.273 19.3695C47.8866 19.2984 49.4923 19.3537 51.1059 19.5356C53.8901 19.8599 56.5558 20.6509 59.1897 21.5527C60.1864 21.8928 61.1593 22.2804 62.148 22.6521L62.1401 22.6442C62.6463 22.7866 63.1526 22.929 63.6588 23.0713C64.6554 23.3324 65.6679 23.5143 66.7041 23.4827C66.7673 23.4827 66.8385 23.4827 66.9018 23.4827C66.9967 23.4747 67.0996 23.4668 67.1945 23.4589C69.2748 23.103 71.2522 22.4465 73.0319 21.2837C74.258 20.4769 75.3416 19.4882 76.4964 18.5944C76.7337 18.4124 76.8524 18.365 77.0739 18.6497C77.4852 19.1797 77.9519 19.6543 78.3948 20.1526C78.4423 20.208 78.466 20.2871 78.4976 20.3504C78.6321 20.4057 78.7587 20.4769 78.7428 20.6588C79.4389 21.4182 80.1429 22.1696 80.831 22.9369C80.9022 23.016 81.0683 23.103 80.9418 23.2612C80.3723 23.8623 79.7474 24.4081 79.2649 25.0804C78.9089 25.3256 78.6479 25.6816 78.3632 25.998C77.8886 26.5121 77.4773 27.0895 77.2004 27.754C76.8445 28.6082 76.5202 29.4783 76.3462 30.3879C76.3303 30.5303 76.3224 30.6727 76.3066 30.8151C76.3066 31.0445 76.2987 31.2659 76.2987 31.4953C76.2908 31.527 76.2908 31.5507 76.2829 31.5823C76.2275 32.2388 76.2512 32.8954 76.275 33.5519C76.2354 34.683 76.2354 35.822 76.275 36.9531C76.275 37.0085 76.275 37.0559 76.275 37.1113C76.2671 38.7803 76.2591 40.4572 76.2591 42.1261C76.2591 48.7229 76.2671 55.3197 76.2671 61.9165C76.2671 61.9877 76.2433 62.0589 76.2591 62.1301C70.4217 61.3866 68.2148 58.2305 67.7482 57.4554C67.6928 57.3684 67.5742 57.3526 67.503 57.4237C63.8803 60.8724 60.7638 61.8612 59.7751 62.1064C59.3005 62.2092 58.818 62.2962 58.3355 62.3753C58.288 62.3832 58.2406 62.3911 58.1931 62.399C58.1773 62.4228 58.1615 62.4465 58.1377 62.4544C58.1615 62.4465 58.1773 62.4228 58.1931 62.399C58.1298 62.3832 58.0665 62.3674 58.0586 62.4623C57.584 62.2883 57.0936 62.4148 56.6111 62.4069C56.532 62.399 56.4529 62.3911 56.3817 62.3832C56.3185 62.3674 56.2631 62.3437 56.1998 62.3357C54.5229 62.1301 52.9726 61.5606 51.533 60.6747C50.0143 59.7413 48.7488 58.5153 47.5227 57.2418C47.412 57.1311 47.3487 57.0362 47.1905 57.1944C46.4074 57.9616 45.6086 58.713 44.778 59.4328C43.9475 60.1526 43.0537 60.7854 42.1124 61.3154C41.9621 61.4024 41.7881 61.4736 41.6141 61.5369C41.5508 61.6871 41.1474 61.6792 41.1474 61.6792C40.9576 61.7346 40.7677 61.7821 40.5858 61.8295C38.901 62.2725 37.1846 62.3674 35.4523 62.312C34.7404 62.2883 34.0048 62.2804 33.3167 62.0035C33.285 61.9323 33.2139 61.9482 33.1506 61.9403C33.0003 61.7267 33.1348 61.5685 33.2534 61.4182C33.4749 61.1414 33.7438 60.8962 33.9178 60.5956C34.345 59.8442 35.0015 59.4249 35.7925 59.1481C36.0377 59.0611 36.267 58.9266 36.4569 58.7447C36.4648 58.7684 36.7812 58.3255 36.7812 58.3255ZM32.0116 45.2505C32.0195 45.2584 32.0353 45.2742 32.0432 45.2822C32.0353 45.2742 32.0274 45.2584 32.0116 45.2505ZM32.0432 45.2822C32.0353 45.2822 32.0274 45.2742 32.0195 45.2663C32.0195 45.2663 32.0195 45.2584 32.0116 45.2584C32.0116 45.2663 32.0116 45.2663 32.0195 45.2663C32.0274 45.2742 32.0353 45.2742 32.0432 45.2822ZM30.2081 45.6935C30.2002 45.6935 30.1844 45.7014 30.1844 45.7014C30.1844 45.7014 30.2002 45.6935 30.2081 45.6935ZM30.1686 45.6618C30.1765 45.6618 30.1923 45.6539 30.1923 45.6539C30.1923 45.6539 30.1765 45.6618 30.1686 45.6618Z" fill="black"/> -<path d="M65.3658 37.9576C64.9782 38.0605 64.6539 38.2661 64.3534 38.5271C64.1161 38.7328 63.855 38.9305 63.5149 38.8831C63.0878 38.8277 62.6528 38.8435 62.281 39.0096C61.5058 39.3577 61.229 38.5192 60.6595 38.3927C60.5567 38.369 60.5013 38.2582 60.4617 38.1633C60.4459 38.1237 60.4301 38.0842 60.4143 38.0526C60.3273 37.9181 60.2403 37.7915 60.1533 37.665C60.0504 37.5701 59.9397 37.483 59.8369 37.3802C59.734 37.2774 59.5996 37.3169 59.5046 37.3249C59.3939 37.3328 59.4493 37.4751 59.4572 37.5542C59.4888 37.8706 59.4651 38.1712 59.3702 38.4797C59.3465 38.4797 59.3227 38.4797 59.3069 38.4639C59.1883 38.2978 59.0933 38.0526 58.9747 38.4718C58.9114 38.6774 58.7374 38.6853 58.5713 38.543C58.3419 38.3373 58.1679 38.1 58.1046 37.7915C58.0651 37.6017 58.0413 37.404 57.978 37.2141C57.7882 36.6921 57.4797 36.2649 56.9735 36.0118C56.8311 35.9406 56.6413 35.8932 56.5464 35.996C56.3407 36.2333 56.4752 36.7791 56.7916 37.0638C56.8232 36.9135 56.8549 36.7712 56.8865 36.6051C57.0921 36.7553 57.0051 37.0164 57.1633 37.1034C57.4006 37.2299 57.456 37.404 57.4244 37.6492C57.4165 37.6966 57.456 37.7441 57.4718 37.7915C57.5114 37.8865 57.7724 37.8944 57.6221 38.0763C57.5114 38.2108 57.3769 38.1 57.2583 38.0605C57.0842 38.0051 56.934 37.9102 56.7758 37.8153C56.4119 37.5938 56.1351 37.2378 55.7079 37.0955C55.6921 37.1113 55.6763 37.135 55.6605 37.1508C55.6605 37.2458 55.7317 37.2774 55.787 37.3328C56.4435 38.0446 57.1238 38.7486 57.6537 39.5633C57.6696 39.5871 57.6933 39.6108 57.7091 39.6345C57.1475 40.0142 56.5622 40.3701 55.961 40.7023C55.352 41.0425 54.7746 41.4221 54.2763 41.9126C54.1576 42.0233 54.039 42.1578 54.1181 42.3555C54.1972 42.5612 54.3633 42.6086 54.5531 42.6323C54.7192 42.6561 54.8932 42.6561 55.0593 42.6877C55.1859 42.7114 55.3599 42.7194 55.3994 42.838C55.4469 42.9725 55.2887 43.0595 55.1859 43.1386C55.0514 43.2414 54.9249 43.3521 54.7667 43.4154C53.8254 43.7951 52.8841 44.1827 51.9429 44.5623C51.8163 44.6098 51.6897 44.6414 51.5078 44.8155C53.161 44.2776 54.7429 44.7838 56.3012 44.6256C56.3249 44.6335 56.3486 44.6414 56.3803 44.6414C56.3724 44.8076 56.3961 44.9816 56.3486 45.1398C56.2616 45.4403 56.4356 45.5906 56.6413 45.6855C56.8232 45.7646 57.0131 45.8596 57.2266 45.8358C57.1792 46.1048 56.9656 46.2392 56.7599 46.3658C56.3803 46.6031 55.961 46.7534 55.5497 46.9195C55.4232 46.9669 55.1938 46.9669 55.2096 47.1805C55.2254 47.4415 55.0514 47.5048 54.8695 47.5918C54.6797 47.6788 54.5056 47.7896 54.3158 47.8924C53.4299 48.1771 52.5835 48.5726 51.7372 48.9681C52.2513 48.9523 52.7497 48.8416 53.2559 48.8495C53.7147 48.8574 54.0943 49.0077 54.4424 49.2845C54.6243 49.4269 54.6876 49.5693 54.5056 49.8066C54.2209 50.1862 53.857 50.4552 53.3903 50.732C53.5485 50.732 53.6276 50.7478 53.6988 50.732C55.2887 50.2179 56.8707 49.7037 58.3182 48.8099C59.3939 48.1455 60.1849 47.2754 60.8335 46.2313C60.8651 46.1918 60.8968 46.1443 60.9205 46.1048C60.8889 46.0731 60.8177 46.0336 60.8256 46.0178C60.8651 45.9228 60.9126 46.0098 60.968 46.0178C60.968 45.9861 60.9601 45.9545 60.9521 45.9228C60.9442 45.8437 60.9601 45.7805 61.1183 45.8516C61.4584 45.3296 61.8064 44.8076 62.1465 44.2934C62.3522 44.1985 62.3126 44.0245 62.2889 43.8505C62.2731 43.7318 62.6132 42.664 62.6844 42.577C63.3646 41.7702 64.0449 40.9555 64.7251 40.1408C64.7884 40.0617 64.8912 39.9746 64.7884 39.8718C64.5353 39.6187 64.7014 39.3656 64.7568 39.0967C64.8754 38.5034 65.1839 38.1317 65.8325 38.1712C65.7613 37.9181 65.5794 37.9023 65.3658 37.9576ZM64.3376 39.239C64.3138 39.2232 64.298 39.1837 64.2901 39.152C64.2901 39.1204 64.3059 39.0729 64.3534 39.1046C64.3771 39.1204 64.3929 39.1599 64.4087 39.1758C64.4008 39.2311 64.3692 39.2628 64.3376 39.239Z" fill="black"/> -<path d="M36.3457 76.2254C36.3694 76.2095 36.3932 76.2016 36.4169 76.1858C36.409 76.1779 36.3932 76.17 36.3853 76.1542C36.3694 76.1858 36.3536 76.2095 36.3457 76.2254Z" fill="black"/> -<path d="M61.4915 71.2896C61.2937 70.8071 60.7638 70.7518 60.3683 71.1789C60.2496 71.1314 60.1231 71.0919 59.9886 71.1314C59.5852 71.258 59.166 71.3608 58.7705 71.519C57.853 71.8987 56.9117 72.1834 55.9546 72.4286C55.8281 72.2467 55.9467 72.0252 55.8122 71.8354C55.3139 71.1552 54.6653 70.7992 53.819 70.7992C53.4156 70.7992 53.028 70.8704 52.7353 71.171C52.4822 71.4399 52.1658 71.6218 51.8652 71.8196C51.7624 71.8196 51.6675 71.8196 51.5647 71.8196C51.4935 71.6851 51.8178 71.5032 51.5093 71.4083L51.5014 71.4004C51.5251 71.2264 51.3827 71.1552 51.2878 71.0602C50.7579 70.5382 50.2358 70.0082 49.6742 69.5257C49.3262 69.2252 49.0019 69.1856 48.5827 69.3755C47.7442 69.7472 47.2301 70.4591 46.6606 71.1235C46.5103 71.1789 46.3758 71.3055 46.1939 71.2738C46.1623 71.1868 46.1306 71.1077 46.1069 71.0207C45.9091 70.4433 45.7035 69.8738 45.2605 69.415C44.6989 68.8376 44.2006 68.7664 43.5678 69.2805C42.8718 69.858 42.413 70.6015 42.0808 71.432C41.9938 71.432 41.8989 71.4241 41.8435 71.5111C41.6774 71.4716 41.5192 71.5032 41.3689 71.5744C41.3214 71.5823 41.2661 71.5902 41.2186 71.5981C41.0604 71.6298 40.8943 71.6614 40.7361 71.693C40.6016 71.7247 40.4672 71.7563 40.3327 71.788C39.8581 71.8275 39.4152 72.0094 38.9564 72.1439C38.3236 72.3337 37.675 72.4603 37.0976 72.8004C36.9078 72.8479 36.7575 72.9665 36.5993 73.0693C36.2513 73.1643 35.9823 73.4016 35.6738 73.5756C35.4603 73.6942 35.397 73.8682 35.4207 74.0976C35.4444 74.3903 35.5868 74.5959 35.8162 74.7383C36.3224 75.0705 36.71 75.4344 36.3936 76.1067C36.3857 76.1146 36.3936 76.1304 36.3936 76.1463C36.4015 76.1542 36.4174 76.1621 36.4253 76.1779C36.5281 76.0751 36.6626 75.9881 36.7179 75.8694C36.8999 75.4977 37.1846 75.5847 37.4377 75.7191C38.5135 76.2728 39.692 76.5101 40.8548 76.8186C41.3214 76.9372 41.5587 77.222 41.7169 77.6254C41.7881 77.8073 41.8356 77.9972 41.9068 78.1712C42.0333 78.4717 42.1599 78.7802 42.4684 78.9543C42.6424 79.0492 42.9034 79.1045 42.9509 78.9147C43.0695 78.4955 43.2752 78.0051 43.1012 77.6175C42.8797 77.0954 43.2277 77.2615 43.4175 77.2774C44.2164 77.3486 45.0153 77.4356 45.8063 77.3486C46.4075 77.2774 46.9058 77.3644 47.3566 77.7599C47.3804 77.8152 47.4199 77.8548 47.4832 77.8548C47.5623 78.0051 47.7205 78.0683 47.847 78.1554C48.3058 78.622 48.8279 78.6616 49.4132 78.4006C49.785 78.2345 50.1804 78.1395 50.5443 77.9576C51.4935 77.4909 52.4743 77.0401 52.2845 75.6796C52.2528 75.4265 52.4822 75.4739 52.6088 75.5609C52.7907 75.6875 52.9489 75.8536 53.1071 76.0039C53.4551 76.3519 53.8743 76.4152 54.3015 76.2174C54.776 76.0039 55.2348 75.7429 55.6224 75.3869C55.7648 75.2604 55.8834 75.1101 55.8676 74.9123C55.8281 74.4852 56.0733 74.4219 56.4213 74.4061C57.1411 74.3586 57.8213 74.6038 58.5174 74.675C58.5886 74.7304 58.6677 74.7462 58.7547 74.7383C58.7784 74.7541 58.8021 74.762 58.8259 74.7779C59.5615 74.9519 60.2971 75.118 61.0327 75.3078C61.1751 75.3474 61.2384 75.3553 61.3016 75.205C61.4757 74.7937 61.6418 74.3903 61.705 73.9473C61.713 73.892 61.7209 73.8366 61.7288 73.7812C61.8 72.9507 61.8237 72.1043 61.4915 71.2896ZM48.9544 70.2455C48.9465 70.2376 48.9386 70.2297 48.9307 70.2218C48.9307 70.2297 48.9386 70.2376 48.9544 70.2455ZM48.8753 76.4231C48.3216 76.5892 47.7679 76.7395 47.2143 76.8898C47.1352 76.8977 47.064 76.9056 46.9849 76.9135C46.9532 76.9214 46.9295 76.9293 46.9058 76.9372C46.6289 76.8502 46.3679 76.9847 46.0911 77.0005C45.1261 77.048 44.1611 77.0875 43.1961 76.961C42.6503 76.8898 42.1441 76.7395 41.8198 76.2412C41.6853 76.0355 41.5825 76.2016 41.535 76.3045C41.3373 76.7079 41.0288 76.692 40.6807 76.5655C40.1429 76.3756 39.5971 76.1937 39.0671 75.9802C38.909 75.9169 38.6558 75.8615 38.7745 75.5688C38.9722 75.6796 39.1304 75.7112 39.2016 75.4186C39.2333 75.292 39.3519 75.2999 39.4547 75.3078C39.6208 75.7587 40.0321 75.909 40.4197 75.9722C41.0762 76.0672 41.3531 75.5768 41.5746 75.0626C41.5983 75.0547 41.6062 75.0389 41.6062 75.0152C41.6616 74.9677 41.709 74.9123 41.709 74.8332C41.7723 74.8016 41.7802 74.7383 41.7802 74.675C41.9463 74.6434 41.9147 74.7383 41.8751 74.8253C41.7802 75.0784 41.6853 75.3236 41.5587 75.6717C41.7328 75.5293 41.8435 75.4739 41.9068 75.379C42.0966 75.118 42.2548 75.0705 42.5396 75.292C42.7531 75.4581 43.0141 75.6084 43.3226 75.6242C43.813 75.64 44.2955 75.6163 44.7701 75.5372C45.3555 75.4423 45.917 75.1022 45.917 74.4536C45.9724 74.066 45.6956 74.0502 45.4346 74.0185C44.4933 73.8999 43.5599 74.0343 42.6266 74.1451C42.5949 74.153 42.5791 74.153 42.5712 74.0343C43.7814 73.6309 45.0074 73.5756 46.2572 73.9632C46.7476 74.3982 46.6843 74.9282 46.0911 75.2445C45.925 75.3316 45.7589 75.4027 45.6402 75.5609C46.9691 75.6954 48.2346 75.4265 49.5081 75.1734C50.7499 74.9281 51.9918 74.6592 53.2257 74.4061C53.2495 74.4377 53.2653 74.4773 53.289 74.5089C53.0833 74.6434 52.8381 74.7067 52.672 74.8965C51.4223 75.4739 50.1804 76.0276 48.8753 76.4231Z" fill="black"/> -<path d="M38.4422 74.1213C38.6519 74.1213 38.8218 73.9514 38.8218 73.7417C38.8218 73.532 38.6519 73.362 38.4422 73.362C38.2325 73.362 38.0625 73.532 38.0625 73.7417C38.0625 73.9514 38.2325 74.1213 38.4422 74.1213Z" fill="#FCFDFD"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM112.448 57.24H115.52V67.944H115.64L117.296 65.688L120.104 62.472H123.584L119.264 67.32L124.04 75H120.392L117.176 69.384L115.52 71.184V75H112.448V57.24ZM135.117 75C134.445 75 133.909 74.808 133.509 74.424C133.125 74.024 132.885 73.496 132.789 72.84H132.645C132.437 73.656 132.013 74.272 131.373 74.688C130.733 75.088 129.941 75.288 128.997 75.288C127.717 75.288 126.733 74.952 126.045 74.28C125.357 73.608 125.013 72.712 125.013 71.592C125.013 70.296 125.477 69.336 126.405 68.712C127.333 68.072 128.653 67.752 130.365 67.752H132.501V66.84C132.501 66.136 132.317 65.592 131.949 65.208C131.581 64.824 130.989 64.632 130.173 64.632C129.453 64.632 128.869 64.792 128.421 65.112C127.989 65.416 127.621 65.784 127.317 66.216L125.493 64.584C125.957 63.864 126.573 63.288 127.341 62.856C128.109 62.408 129.125 62.184 130.389 62.184C132.085 62.184 133.373 62.568 134.253 63.336C135.133 64.104 135.573 65.208 135.573 66.648V72.552H136.821V75H135.117ZM130.029 73.056C130.717 73.056 131.301 72.904 131.781 72.6C132.261 72.296 132.501 71.848 132.501 71.256V69.6H130.533C128.933 69.6 128.133 70.112 128.133 71.136V71.544C128.133 72.056 128.293 72.44 128.613 72.696C128.949 72.936 129.421 73.056 130.029 73.056ZM150.611 76.056C150.611 76.712 150.491 77.288 150.251 77.784C150.027 78.296 149.651 78.72 149.123 79.056C148.595 79.392 147.915 79.648 147.083 79.824C146.251 80 145.235 80.088 144.035 80.088C142.979 80.088 142.083 80.016 141.347 79.872C140.611 79.744 140.003 79.552 139.523 79.296C139.059 79.056 138.723 78.752 138.515 78.384C138.307 78.016 138.203 77.6 138.203 77.136C138.203 76.432 138.395 75.88 138.779 75.48C139.179 75.096 139.731 74.848 140.435 74.736V74.472C139.923 74.344 139.523 74.096 139.235 73.728C138.963 73.344 138.827 72.896 138.827 72.384C138.827 72.064 138.891 71.784 139.019 71.544C139.147 71.288 139.315 71.072 139.523 70.896C139.747 70.72 139.995 70.576 140.267 70.464C140.539 70.336 140.827 70.24 141.131 70.176V70.08C140.363 69.728 139.787 69.24 139.403 68.616C139.035 67.992 138.851 67.264 138.851 66.432C138.851 65.152 139.291 64.128 140.171 63.36C141.051 62.576 142.339 62.184 144.035 62.184C144.419 62.184 144.795 62.208 145.163 62.256C145.547 62.304 145.899 62.384 146.219 62.496V62.088C146.219 60.872 146.811 60.264 147.995 60.264H149.939V62.616H147.275V62.952C147.931 63.32 148.419 63.8 148.739 64.392C149.059 64.984 149.219 65.664 149.219 66.432C149.219 67.696 148.779 68.712 147.899 69.48C147.035 70.248 145.747 70.632 144.035 70.632C143.299 70.632 142.659 70.56 142.115 70.416C141.875 70.528 141.667 70.68 141.491 70.872C141.315 71.048 141.227 71.272 141.227 71.544C141.227 72.168 141.771 72.48 142.859 72.48H146.219C147.755 72.48 148.867 72.8 149.555 73.44C150.259 74.064 150.611 74.936 150.611 76.056ZM147.731 76.416C147.731 76.016 147.571 75.704 147.251 75.48C146.931 75.256 146.379 75.144 145.595 75.144H141.323C140.891 75.464 140.675 75.896 140.675 76.44C140.675 76.92 140.875 77.296 141.275 77.568C141.675 77.84 142.355 77.976 143.315 77.976H144.851C145.859 77.976 146.587 77.848 147.035 77.592C147.499 77.336 147.731 76.944 147.731 76.416ZM144.035 68.544C145.539 68.544 146.291 67.904 146.291 66.624V66.216C146.291 64.936 145.539 64.296 144.035 64.296C142.531 64.296 141.779 64.936 141.779 66.216V66.624C141.779 67.904 142.531 68.544 144.035 68.544ZM161.555 75C160.883 75 160.347 74.808 159.947 74.424C159.563 74.024 159.323 73.496 159.227 72.84H159.083C158.875 73.656 158.451 74.272 157.811 74.688C157.171 75.088 156.379 75.288 155.435 75.288C154.155 75.288 153.171 74.952 152.483 74.28C151.795 73.608 151.451 72.712 151.451 71.592C151.451 70.296 151.915 69.336 152.843 68.712C153.771 68.072 155.091 67.752 156.803 67.752H158.939V66.84C158.939 66.136 158.755 65.592 158.387 65.208C158.019 64.824 157.427 64.632 156.611 64.632C155.891 64.632 155.307 64.792 154.859 65.112C154.427 65.416 154.059 65.784 153.755 66.216L151.931 64.584C152.395 63.864 153.011 63.288 153.779 62.856C154.547 62.408 155.563 62.184 156.827 62.184C158.523 62.184 159.811 62.568 160.691 63.336C161.571 64.104 162.011 65.208 162.011 66.648V72.552H163.259V75H161.555ZM156.467 73.056C157.155 73.056 157.739 72.904 158.219 72.6C158.699 72.296 158.939 71.848 158.939 71.256V69.6H156.971C155.371 69.6 154.571 70.112 154.571 71.136V71.544C154.571 72.056 154.731 72.44 155.051 72.696C155.387 72.936 155.859 73.056 156.467 73.056ZM169.849 75.288C168.649 75.288 167.641 75.088 166.825 74.688C166.009 74.272 165.289 73.704 164.665 72.984L166.537 71.16C167.001 71.688 167.505 72.104 168.049 72.408C168.609 72.712 169.249 72.864 169.969 72.864C170.705 72.864 171.233 72.736 171.553 72.48C171.889 72.224 172.057 71.872 172.057 71.424C172.057 71.056 171.937 70.768 171.697 70.56C171.473 70.336 171.081 70.184 170.521 70.104L169.273 69.936C167.913 69.76 166.873 69.376 166.153 68.784C165.449 68.176 165.097 67.296 165.097 66.144C165.097 65.536 165.209 64.992 165.433 64.512C165.657 64.016 165.977 63.6 166.393 63.264C166.809 62.912 167.305 62.648 167.881 62.472C168.473 62.28 169.129 62.184 169.849 62.184C170.457 62.184 170.993 62.232 171.457 62.328C171.937 62.408 172.369 62.536 172.753 62.712C173.137 62.872 173.489 63.08 173.809 63.336C174.129 63.576 174.441 63.848 174.745 64.152L172.945 65.952C172.577 65.568 172.137 65.248 171.625 64.992C171.113 64.736 170.553 64.608 169.945 64.608C169.273 64.608 168.785 64.728 168.481 64.968C168.193 65.208 168.049 65.52 168.049 65.904C168.049 66.32 168.169 66.64 168.409 66.864C168.665 67.072 169.089 67.224 169.681 67.32L170.953 67.488C173.657 67.872 175.009 69.104 175.009 71.184C175.009 71.792 174.881 72.352 174.625 72.864C174.385 73.36 174.041 73.792 173.593 74.16C173.145 74.512 172.601 74.792 171.961 75C171.337 75.192 170.633 75.288 169.849 75.288ZM181.446 75C180.39 75 179.582 74.728 179.022 74.184C178.478 73.624 178.206 72.832 178.206 71.808V64.92H176.358V62.472H177.318C177.782 62.472 178.094 62.368 178.254 62.16C178.43 61.936 178.518 61.608 178.518 61.176V59.04H181.278V62.472H183.846V64.92H181.278V72.552H183.654V75H181.446ZM186.51 75V62.472H189.582V65.064H189.702C189.782 64.728 189.902 64.408 190.062 64.104C190.238 63.784 190.462 63.504 190.734 63.264C191.006 63.024 191.326 62.832 191.694 62.688C192.078 62.544 192.518 62.472 193.014 62.472H193.686V65.376H192.726C191.686 65.376 190.902 65.528 190.374 65.832C189.846 66.136 189.582 66.632 189.582 67.32V75H186.51ZM200.783 75.288C199.887 75.288 199.079 75.136 198.359 74.832C197.655 74.528 197.047 74.088 196.535 73.512C196.039 72.936 195.655 72.248 195.383 71.448C195.111 70.632 194.975 69.72 194.975 68.712C194.975 67.704 195.111 66.8 195.383 66C195.655 65.2 196.039 64.52 196.535 63.96C197.047 63.384 197.655 62.944 198.359 62.64C199.079 62.336 199.887 62.184 200.783 62.184C201.679 62.184 202.487 62.336 203.207 62.64C203.927 62.944 204.535 63.384 205.031 63.96C205.543 64.52 205.935 65.2 206.207 66C206.479 66.8 206.615 67.704 206.615 68.712C206.615 69.72 206.479 70.632 206.207 71.448C205.935 72.248 205.543 72.936 205.031 73.512C204.535 74.088 203.927 74.528 203.207 74.832C202.487 75.136 201.679 75.288 200.783 75.288ZM200.783 72.816C201.599 72.816 202.239 72.568 202.703 72.072C203.167 71.576 203.399 70.848 203.399 69.888V67.56C203.399 66.616 203.167 65.896 202.703 65.4C202.239 64.904 201.599 64.656 200.783 64.656C199.983 64.656 199.351 64.904 198.887 65.4C198.423 65.896 198.191 66.616 198.191 67.56V69.888C198.191 70.848 198.423 71.576 198.887 72.072C199.351 72.568 199.983 72.816 200.783 72.816ZM198.287 60.48C197.663 60.48 197.223 60.352 196.967 60.096C196.711 59.824 196.583 59.488 196.583 59.088V58.584C196.583 58.184 196.711 57.856 196.967 57.6C197.223 57.328 197.663 57.192 198.287 57.192C198.911 57.192 199.351 57.328 199.607 57.6C199.863 57.856 199.991 58.184 199.991 58.584V59.088C199.991 59.488 199.863 59.824 199.607 60.096C199.351 60.352 198.911 60.48 198.287 60.48ZM203.327 60.48C202.703 60.48 202.263 60.352 202.007 60.096C201.751 59.824 201.623 59.488 201.623 59.088V58.584C201.623 58.184 201.751 57.856 202.007 57.6C202.263 57.328 202.703 57.192 203.327 57.192C203.951 57.192 204.391 57.328 204.647 57.6C204.903 57.856 205.031 58.184 205.031 58.584V59.088C205.031 59.488 204.903 59.824 204.647 60.096C204.391 60.352 203.951 60.48 203.327 60.48ZM209.339 75V62.472H212.411V64.56H212.531C212.787 63.888 213.187 63.328 213.73 62.88C214.291 62.416 215.059 62.184 216.035 62.184C217.331 62.184 218.323 62.608 219.011 63.456C219.699 64.304 220.043 65.512 220.043 67.08V75H216.971V67.392C216.971 66.496 216.811 65.824 216.491 65.376C216.171 64.928 215.643 64.704 214.907 64.704C214.587 64.704 214.275 64.752 213.971 64.848C213.683 64.928 213.419 65.056 213.179 65.232C212.955 65.392 212.771 65.6 212.627 65.856C212.483 66.096 212.411 66.384 212.411 66.72V75H209.339ZM231.224 72.912H231.104C230.88 73.632 230.456 74.208 229.832 74.64C229.208 75.072 228.48 75.288 227.648 75.288C226.064 75.288 224.848 74.72 224 73.584C223.168 72.448 222.752 70.824 222.752 68.712C222.752 66.616 223.168 65.008 224 63.888C224.848 62.752 226.064 62.184 227.648 62.184C228.48 62.184 229.208 62.4 229.832 62.832C230.456 63.248 230.88 63.816 231.104 64.536H231.224V57.24H234.296V75H231.224V72.912ZM228.632 72.744C229.368 72.744 229.984 72.568 230.48 72.216C230.976 71.864 231.224 71.36 231.224 70.704V66.72C231.224 66.112 230.976 65.624 230.48 65.256C229.984 64.888 229.368 64.704 228.632 64.704C227.832 64.704 227.184 64.976 226.688 65.52C226.208 66.048 225.968 66.76 225.968 67.656V69.816C225.968 70.712 226.208 71.424 226.688 71.952C227.184 72.48 227.832 72.744 228.632 72.744Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57907"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/skeida-og-gnupverjahreppur.svg b/libs/application/templates/financial-aid/src/svg/skeida-og-gnupverjahreppur.svg deleted file mode 100644 index 22aa78972881..000000000000 --- a/libs/application/templates/financial-aid/src/svg/skeida-og-gnupverjahreppur.svg +++ /dev/null @@ -1,16 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57890)"> -<path d="M47.5663 95.2835C47.5126 95.2835 47.423 95.2656 47.3155 95.2119C44.2345 93.9221 41.3326 92.1666 38.6814 89.9454C38.2515 89.5871 37.8037 89.2289 37.3738 88.8706C35.9944 87.7421 34.5614 86.5598 33.2537 85.288C31.1579 83.228 29.492 80.7381 27.8798 78.3377C25.8914 75.3641 24.1539 72.0681 22.5775 68.2884C21.1086 64.7595 19.4427 60.747 18.4575 56.5912C17.7589 53.6534 17.4006 50.6082 17.0245 47.6525L16.9886 47.348C16.917 46.8106 16.8632 46.2732 16.7916 45.7358C16.505 43.425 16.2005 41.0426 16.0392 38.696C15.7168 33.9131 15.7347 29.0408 15.7347 24.3296C15.7347 23.0936 15.7347 21.8397 15.7347 20.6037C15.7347 20.3171 15.7347 20.0484 15.7347 19.7618C15.7347 18.8661 15.7347 17.9346 15.7168 17.0032C15.7168 16.8957 15.7168 16.824 15.7347 16.8061C15.7526 16.8061 15.7884 16.7882 15.8422 16.7882L16.0392 16.7703C16.3617 16.7345 16.6483 16.7166 16.9528 16.7166C25.372 16.7166 33.809 16.7166 42.2461 16.7166H78.2873H78.4485C78.6456 16.7166 79.0934 16.7166 79.2905 16.7703C79.3263 16.9494 79.3263 17.3793 79.3263 17.6122C79.3263 19.2781 79.3263 20.944 79.3263 22.6279C79.3263 25.7448 79.3442 28.9512 79.3084 32.1039C79.2546 36.6718 78.9501 40.8097 78.4127 44.7327C78.2336 46.0582 78.0545 47.4017 77.8932 48.7094C77.732 49.9633 77.5708 51.2531 77.3917 52.5249C76.9438 55.7851 76.0482 59.1348 74.5614 63.0757C73.2358 66.6046 71.767 70.3664 69.8503 73.8773C67.2349 78.678 64.7808 82.5294 61.3953 85.6821C57.8664 88.9602 54.033 92.3458 49.3755 94.4953L48.8382 94.7461C48.4441 94.9252 48.05 95.1044 47.6559 95.2835C47.6201 95.2835 47.5842 95.2835 47.5663 95.2835Z" fill="white"/> -<path d="M47.5671 16C57.7059 16 67.8447 16 78.0015 16C78.1448 16 78.306 16 78.4493 16C79.954 16.0179 80.0436 16.1075 80.0257 17.6122C80.0257 22.4487 80.0615 27.2853 80.0078 32.1218C79.954 36.3851 79.6853 40.6305 79.1121 44.8401C78.7538 47.4375 78.4493 50.0349 78.091 52.6323C77.5895 56.3224 76.5326 59.8692 75.2249 63.3444C73.8277 67.0524 72.3768 70.7425 70.478 74.2355C68.1134 78.5705 65.5339 82.8159 61.8797 86.2194C58.1717 89.6587 54.3562 93.0085 49.6808 95.1581C49.1076 95.4268 48.5523 95.6775 47.9791 95.9462C47.6566 96.0895 47.37 96.0537 47.0476 95.9104C43.8232 94.5669 40.9034 92.7756 38.2164 90.5365C36.3714 88.9959 34.4726 87.5271 32.7529 85.8432C30.6034 83.7295 28.9374 81.2575 27.2715 78.7676C25.1219 75.5611 23.3844 72.1576 21.8976 68.5929C20.3033 64.7416 18.709 60.8724 17.7417 56.7882C17.0073 53.725 16.649 50.5902 16.2729 47.4554C15.9146 44.5535 15.5205 41.6695 15.3235 38.7676C14.9115 32.695 15.0369 26.6404 15.0189 20.5858C15.0189 19.3856 15.0189 18.2033 15.001 17.0031C14.9831 16.412 15.1981 16.1075 15.7892 16.0537C16.1833 16.0358 16.5595 16 16.9536 16C27.1461 16 37.3566 16 47.5671 16ZM40.8855 79.5736C40.9034 79.5199 40.9034 79.4662 40.8855 79.4124C40.9034 79.3945 40.9392 79.3766 40.9392 79.3587C40.9392 79.3229 40.9213 79.2691 40.9213 79.2333C40.9392 79.1437 40.9571 79.0363 40.9751 78.9467C41.1721 78.8213 41.1721 78.6422 41.0825 78.4451C41.1363 78.1764 41.19 77.9256 41.2258 77.6569C41.405 77.639 41.3871 77.5315 41.3512 77.4062C41.4766 76.7792 41.6199 76.0627 42.3544 76.0268C43.0351 76.0089 43.1784 76.7613 43.3933 77.2808C43.7695 78.1764 43.7874 79.1616 43.9845 80.0931V80.1469C43.9845 80.3618 44.0024 80.5768 44.0024 80.7917C43.9486 81.1858 43.9486 81.5799 44.2352 81.9382C44.2352 81.5441 44.2352 81.1679 44.2352 80.7738C44.3069 79.5557 44.5219 78.3914 45.0413 77.2808C45.1846 76.9762 45.2742 76.6001 45.7579 76.6001C46.2236 76.6001 46.3669 76.9762 46.5281 77.2629C46.9222 78.0331 47.1551 78.8571 47.2446 79.717C47.1909 79.8782 47.2088 80.0215 47.37 80.129C47.388 80.4693 47.4059 80.8097 47.4238 81.1321C47.4059 81.347 47.2805 81.5799 47.5671 81.7949C47.7462 81.5978 47.7641 81.3829 47.7104 81.15C48.0149 79.9856 47.9612 78.7138 48.606 77.639C49.036 76.9225 49.4659 76.9046 49.9137 77.6211C50.3436 78.3018 50.5407 79.09 50.6661 79.8782C50.6302 80.0394 50.6661 80.1827 50.7914 80.3081C50.8273 80.5768 50.8452 80.8455 50.881 81.1321C50.684 81.7949 51.1855 82.3323 51.2034 82.9771C51.2572 82.601 51.4901 82.2606 51.3109 81.8665C51.3467 81.347 51.4005 80.8455 51.4363 80.326C51.5975 80.2185 51.6154 80.0752 51.5617 79.8961C51.705 79.3587 51.8125 78.8034 51.9916 78.2839C52.117 77.9077 52.2603 77.4599 52.7798 77.442C53.2814 77.4241 53.4784 77.8361 53.6217 78.2122C54.177 79.5557 54.4636 80.9709 54.5532 82.4218C54.5532 82.6547 54.5532 82.8876 54.5532 83.2817C54.7502 82.8876 54.8756 82.6547 54.7323 82.3681C54.7682 82.0994 54.804 81.8307 54.8398 81.562C55.0189 81.3829 55.0189 81.1679 54.9473 80.953C55.0548 79.9677 55.1981 79.0004 55.5922 78.0869C55.7355 77.7644 55.9504 77.442 56.3624 77.4241C56.7565 77.4062 56.9177 77.7107 57.0969 77.9973C57.4014 78.4809 57.491 79.0542 57.6701 79.5736C58.0283 80.5768 57.8313 81.6874 58.3687 82.8517C58.4045 82.5114 58.4224 82.3502 58.4224 82.189C58.4045 80.8992 58.6374 79.6453 59.0136 78.4093C59.139 77.9973 59.3002 77.4062 59.8913 77.4241C60.4287 77.442 60.6437 77.8898 60.8228 78.3556C61.0736 79.0183 61.2885 79.699 61.3781 80.4156C61.3244 80.6305 61.3423 80.8276 61.5035 81.0067C61.5214 81.2754 61.5393 81.562 61.5572 81.8307C61.5214 81.9919 61.396 82.2427 61.6289 82.2606C61.8976 82.2964 61.808 82.0277 61.7901 81.8665C61.8259 81.365 61.8259 80.8455 61.8976 80.3439C62.0051 79.3945 62.1125 78.4451 62.7395 77.6749C62.9186 77.4599 63.0619 77.1016 63.4202 77.1733C63.8322 77.2449 63.6531 77.6569 63.7068 77.9256C63.7605 78.1585 63.7605 78.3914 63.8143 78.6243C63.868 78.9646 63.868 79.4124 64.3338 79.4483C64.7637 79.4841 64.9249 79.09 65.0503 78.7496C65.319 77.9256 65.8206 77.227 66.358 76.5822C67.2357 75.5253 67.6119 74.4505 66.9491 73.1608C66.9133 72.91 66.8416 72.6592 66.555 72.5517C66.555 73.3578 66.555 74.146 66.555 74.9341C66.4296 75.2208 66.4117 75.6507 65.9639 75.579C65.516 75.5074 65.7489 75.1133 65.7131 74.8446C65.6414 74.343 65.516 73.8594 65.2294 73.4474C65.2294 72.9995 64.9607 72.4442 64.6204 72.5696C64.0472 72.7667 64.907 73.1249 64.7279 73.4653C64.7099 73.5011 64.8174 73.5907 64.8532 73.6623C64.8532 74.1281 65.0324 74.5938 64.8353 75.0416C64.7458 75.0416 64.6562 75.0237 64.5487 75.0237C64.083 74.558 63.9039 73.9489 63.7247 73.3757C63.1873 71.6023 62.0588 70.2588 60.6616 69.1124C58.709 67.536 56.3803 66.7299 54.0695 65.8522C52.0633 65.0998 50.0749 64.3117 48.4269 62.8965C47.0118 61.6784 46.7073 60.3529 48.1761 58.8661C49.0539 57.9704 50.0928 57.2897 51.1497 56.6269C52.8515 55.5701 54.6965 54.7102 56.3266 53.528C57.061 52.9906 57.0073 52.4711 56.237 52.0233C55.9862 51.88 55.6996 51.7904 55.413 51.7008C54.0695 51.2709 52.6723 51.2172 51.2751 51.0739C48.3373 50.7514 45.4175 50.3932 42.4798 50.1245C39.7749 49.8916 37.1058 49.4617 34.4726 48.8168C32.8962 48.4407 32.2155 46.8643 32.9858 45.5746C33.1112 45.3775 33.4336 45.2879 33.3441 44.8759C30.3705 45.6641 27.3969 45.7358 24.4412 44.6789C26.8774 47.0613 29.6898 48.6556 32.9858 49.3542C34.5801 49.6946 36.1564 50.1603 37.7149 50.5902C38.2164 50.7335 38.718 50.9485 38.7001 51.5575C38.7001 52.2024 38.1448 52.3099 37.6432 52.4532C37.0342 52.6144 36.4251 52.7219 35.7982 52.7577C31.8214 52.9368 27.8985 52.4174 23.9576 51.8262C22.1842 51.5575 20.3929 51.4321 18.6016 51.5396C18.297 51.5575 17.8671 51.5217 17.9388 52.0233C18.0821 52.9906 18.2433 53.9579 18.4224 54.9431C18.4941 55.3372 18.7986 55.4984 19.139 55.6596C20.1063 56.1075 21.0557 56.5911 21.8976 57.2718C22.8291 58.0063 23.5635 58.8482 23.5993 60.1558C23.6352 61.768 22.8649 63.0578 21.9871 64.2938C21.7184 64.6699 21.5931 65.0103 21.7722 65.4402C22.0588 66.0851 22.3454 66.7479 22.5783 67.4106C22.8828 68.3063 23.4023 68.9333 24.3338 69.2736C25.3906 69.6677 25.8743 70.5813 26.1788 71.6202C26.5729 72.9458 26.6087 74.343 26.7699 75.8119C27.0386 75.579 26.9849 75.3641 27.0386 75.1849C27.2536 74.1639 27.2178 73.107 27.7552 72.1755C28.1672 71.4769 28.6867 71.459 29.1166 72.1397C29.3673 72.5338 29.5823 72.9637 29.636 73.4474C29.6002 73.6265 29.636 73.7519 29.7973 73.8594C29.8331 74.0743 29.8689 74.2714 29.9047 74.4863C29.8152 74.6475 29.8152 74.8088 29.9764 74.9341C30.0122 75.3999 30.048 75.8656 30.0839 76.3314L30.0301 76.3493L30.0839 76.3672C30.0839 76.6001 30.0839 76.8329 30.0839 77.0658C30.478 75.9552 30.6213 74.8088 31.087 73.7519C31.2482 73.4115 31.4453 73.0712 31.8214 73.0712C32.1976 73.0533 32.4484 73.3757 32.6096 73.7161C33.147 74.8804 33.3261 76.1522 33.5232 77.4062C33.5232 77.9256 33.5232 78.4451 33.5232 79.1975C33.9173 78.4989 34.0068 77.9794 33.9531 77.4062C33.971 76.618 34.1681 75.8835 34.4009 75.1491C34.5622 74.6834 34.6338 74.0743 35.2787 74.0564C35.9594 74.0385 36.1564 74.6296 36.2997 75.1312C36.6043 76.2418 36.9625 77.3524 36.9088 78.5347C36.8909 78.8213 36.855 79.1437 37.1237 79.5557C37.482 78.3376 37.3924 77.1733 37.8403 76.1164C38.0373 75.6686 38.1269 75.1312 38.6822 75.0954C39.2912 75.0595 39.5241 75.6148 39.6674 76.0806C39.9898 77.1016 40.3123 78.1048 40.366 79.1975C40.4018 79.8603 40.4735 80.523 40.7959 81.1321C40.7959 80.7738 40.7959 80.4335 40.7959 80.0752C40.8138 79.914 40.8138 79.7528 40.8317 79.5916L40.8855 79.5736ZM47.5133 17.4151C37.4641 17.4151 27.3969 17.4151 17.3476 17.3972C16.5774 17.3972 16.3087 17.5764 16.3266 18.3824C16.4162 22.4666 16.4341 26.5508 16.4878 30.6171C16.5057 32.1397 16.4878 33.6623 16.5236 35.1849C16.5416 36.0089 16.237 37.03 16.7386 37.6032C17.276 38.1943 18.3508 38.0331 19.1927 38.1943C20.0525 38.3377 20.8407 38.5347 21.3064 39.4304C21.8618 40.4872 22.8291 40.8455 23.9934 40.8097C24.3158 40.7918 24.6562 40.7918 24.9786 40.8634C25.6772 41.0246 26.4833 40.7738 27.0924 41.3471C28.3821 42.5651 29.9406 42.9592 31.6781 42.8338C32.4126 42.7801 33.1649 42.8697 33.9173 42.8876C34.1143 42.8876 34.4009 42.9413 34.5263 42.8338C35.834 41.6337 37.7328 41.0067 38.1448 38.9646C38.2702 38.3377 38.5747 37.7286 38.8076 37.1196C38.915 36.8509 38.9867 36.5284 39.3808 36.5105C41.2975 36.3672 43.2142 35.5432 45.1667 36.3851C45.6504 36.6001 46.1519 36.618 46.6535 36.4926C48.3194 36.0806 49.5375 37.1196 50.6123 37.9973C51.5975 38.7855 52.3678 39.9498 52.5469 41.3112C52.6723 42.2248 53.1739 42.4218 53.9621 42.2965C54.1591 42.2606 54.392 42.3144 54.589 42.2785C55.216 42.189 55.6638 42.4039 55.9862 42.9592C56.649 44.1594 57.8313 44.3923 59.0494 44.4102C60.5362 44.446 62.0409 44.3744 63.5277 44.3385C64.0651 44.3206 64.5846 44.3565 65.0861 44.6072C67.9701 45.9866 71.0691 45.5208 74.0606 45.3417C75.0996 45.2879 76.1206 44.9476 77.1775 45.2342C77.6074 45.3596 77.7328 45.1626 77.7865 44.7505C78.1448 41.7591 78.503 38.7676 78.5747 35.7761C78.7001 29.9543 78.6464 24.1505 78.718 18.3287C78.7359 17.4868 78.4314 17.3614 77.697 17.3614C67.6119 17.4151 57.5626 17.4151 47.5133 17.4151ZM63.7964 50.5902C64.4054 50.9306 65.0503 51.0022 65.6952 50.9843C69.027 50.9306 72.3588 51.1634 75.6728 51.2888C77.1596 51.3426 77.1237 51.3605 77.4283 49.8916C77.5536 49.2647 77.3924 49.1213 76.7834 49.1034C74.3293 49.0318 71.911 49.3184 69.4748 49.4975C67.8268 49.6229 66.1609 49.7483 64.5308 50.1245C64.28 50.1782 63.9397 50.1424 63.7964 50.5902Z" fill="#037505"/> -<path d="M47.5137 17.4151C57.563 17.4151 67.6302 17.4151 77.6794 17.3972C78.4318 17.3972 78.7184 17.5226 78.7005 18.3645C78.6288 24.1863 78.6826 30.0081 78.5572 35.8119C78.4855 38.8213 78.1273 41.8128 77.769 44.7864C77.7153 45.1984 77.5899 45.3954 77.16 45.27C76.1031 44.9834 75.082 45.3059 74.0431 45.3775C71.0337 45.5387 67.9526 46.0224 65.0686 44.6431C64.567 44.4102 64.0476 44.3565 63.5102 44.3744C62.0234 44.4102 60.5187 44.4819 59.0319 44.446C57.8138 44.4281 56.6315 44.1952 55.9687 42.9951C55.6463 42.4218 55.2164 42.2069 54.5715 42.3144C54.3745 42.3502 54.1595 42.2965 53.9446 42.3323C53.1564 42.4398 52.6548 42.2606 52.5294 41.3471C52.3503 39.9857 51.58 38.8213 50.5948 38.0331C49.5021 37.1554 48.3019 36.1164 46.636 36.5284C46.1344 36.6538 45.6329 36.618 45.1492 36.4209C43.1967 35.579 41.2979 36.403 39.3633 36.5463C38.9871 36.5822 38.8975 36.8867 38.7901 37.1554C38.5572 37.7644 38.2527 38.3556 38.1273 39.0004C37.7153 41.0425 35.8165 41.6695 34.5088 42.8697C34.3834 42.9772 34.1147 42.9413 33.8998 42.9234C33.1474 42.9055 32.413 42.8338 31.6606 42.8697C29.9231 42.9951 28.3646 42.601 27.0749 41.3829C26.4658 40.8097 25.6597 41.0604 24.9611 40.8992C24.6387 40.8276 24.3163 40.8276 23.9759 40.8455C22.8116 40.8992 21.8442 40.5231 21.2889 39.4662C20.8232 38.5705 20.0171 38.3735 19.1752 38.2302C18.3333 38.0869 17.2585 38.2481 16.7211 37.639C16.2195 37.0658 16.524 36.0448 16.5061 35.2208C16.4703 33.6982 16.4882 32.1755 16.4703 30.6529C16.4345 26.5508 16.4166 22.4666 16.327 18.3824C16.3091 17.5763 16.5778 17.3972 17.3481 17.3972C27.3973 17.4151 37.4466 17.4151 47.5137 17.4151ZM39.5066 25.5835C39.4887 25.6373 39.4887 25.691 39.4708 25.7268C39.7574 25.8701 40.0261 26.0313 40.3306 26.1388C42.7847 27.0703 45.2567 27.8764 47.7824 28.5571C52.1712 29.7214 56.542 29.5602 60.9486 28.8437C63.1161 28.4854 65.2656 27.8406 67.469 27.966C69.5648 28.0914 71.6606 28.4675 73.7386 28.8616C74.9387 29.0945 76.121 29.3094 77.3212 29.5244C77.4824 29.5602 77.7153 29.5602 77.8228 29.4527C77.984 29.2915 77.8048 29.1303 77.6974 29.0049C75.7448 26.2642 73.2012 24.3475 69.8693 23.6668C66.5733 22.9861 63.4385 23.7922 60.3575 24.9207C57.5809 25.9418 54.7686 26.7479 51.7412 26.515C49.6633 26.3538 47.5854 26.2821 45.5075 26.1388C43.5191 25.9776 41.5129 25.7806 39.5066 25.5835Z" fill="#7DC2FD"/> -<path d="M63.7969 50.5902C63.9581 50.1424 64.2805 50.1782 64.5671 50.1245C66.1972 49.7483 67.8632 49.6229 69.5112 49.4975C71.9473 49.3184 74.3656 49.0318 76.8197 49.1034C77.4288 49.1213 77.59 49.2826 77.4646 49.8916C77.1601 51.3426 77.178 51.3426 75.7091 51.2888C72.3773 51.1634 69.0633 50.9306 65.7315 50.9843C65.0329 51.0022 64.388 50.9306 63.7969 50.5902Z" fill="#7DC2FD"/> -</g> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M103.176 61.288C101.736 61.288 100.512 61.032 99.504 60.52C98.512 60.008 97.656 59.336 96.936 58.504L99.072 56.44C99.648 57.112 100.288 57.624 100.992 57.976C101.712 58.328 102.504 58.504 103.368 58.504C104.344 58.504 105.08 58.296 105.576 57.88C106.072 57.448 106.32 56.872 106.32 56.152C106.32 55.592 106.16 55.136 105.84 54.784C105.52 54.432 104.92 54.176 104.04 54.016L102.456 53.776C99.112 53.248 97.44 51.624 97.44 48.904C97.44 48.152 97.576 47.472 97.848 46.864C98.136 46.256 98.544 45.736 99.072 45.304C99.6 44.872 100.232 44.544 100.968 44.32C101.72 44.08 102.568 43.96 103.512 43.96C104.776 43.96 105.88 44.168 106.824 44.584C107.768 45 108.576 45.616 109.248 46.432L107.088 48.472C106.672 47.96 106.168 47.544 105.576 47.224C104.984 46.904 104.24 46.744 103.344 46.744C102.432 46.744 101.744 46.92 101.28 47.272C100.832 47.608 100.608 48.088 100.608 48.712C100.608 49.352 100.792 49.824 101.16 50.128C101.528 50.432 102.12 50.656 102.936 50.8L104.496 51.088C106.192 51.392 107.44 51.936 108.24 52.72C109.056 53.488 109.464 54.568 109.464 55.96C109.464 56.76 109.32 57.488 109.032 58.144C108.76 58.784 108.352 59.344 107.808 59.824C107.28 60.288 106.624 60.648 105.84 60.904C105.072 61.16 104.184 61.288 103.176 61.288ZM112.448 43.24H115.52V53.944H115.64L117.296 51.688L120.104 48.472H123.584L119.264 53.32L124.04 61H120.392L117.176 55.384L115.52 57.184V61H112.448V43.24ZM130.403 61.288C129.475 61.288 128.643 61.136 127.907 60.832C127.187 60.512 126.571 60.072 126.059 59.512C125.563 58.936 125.179 58.248 124.907 57.448C124.635 56.632 124.499 55.72 124.499 54.712C124.499 53.72 124.627 52.824 124.883 52.024C125.155 51.224 125.539 50.544 126.035 49.984C126.531 49.408 127.139 48.968 127.859 48.664C128.579 48.344 129.395 48.184 130.307 48.184C131.283 48.184 132.131 48.352 132.851 48.688C133.571 49.024 134.163 49.48 134.627 50.056C135.091 50.632 135.435 51.304 135.659 52.072C135.899 52.824 136.019 53.632 136.019 54.496V55.504H127.691V55.816C127.691 56.728 127.947 57.464 128.459 58.024C128.971 58.568 129.731 58.84 130.739 58.84C131.507 58.84 132.131 58.68 132.611 58.36C133.107 58.04 133.547 57.632 133.931 57.136L135.587 58.984C135.075 59.704 134.371 60.272 133.475 60.688C132.595 61.088 131.571 61.288 130.403 61.288ZM130.355 50.488C129.539 50.488 128.891 50.76 128.411 51.304C127.931 51.848 127.691 52.552 127.691 53.416V53.608H132.827V53.392C132.827 52.528 132.611 51.832 132.179 51.304C131.763 50.76 131.155 50.488 130.355 50.488ZM140.257 46.648C139.617 46.648 139.153 46.504 138.865 46.216C138.593 45.928 138.457 45.56 138.457 45.112V44.632C138.457 44.184 138.593 43.816 138.865 43.528C139.153 43.24 139.617 43.096 140.257 43.096C140.881 43.096 141.337 43.24 141.625 43.528C141.913 43.816 142.057 44.184 142.057 44.632V45.112C142.057 45.56 141.913 45.928 141.625 46.216C141.337 46.504 140.881 46.648 140.257 46.648ZM138.721 48.472H141.793V61H138.721V48.472ZM154.642 44.224L152.866 45.376C153.97 46.528 154.858 47.856 155.53 49.36C156.202 50.864 156.538 52.536 156.538 54.376C156.538 55.56 156.394 56.592 156.106 57.472C155.818 58.336 155.41 59.056 154.882 59.632C154.37 60.192 153.754 60.608 153.034 60.88C152.314 61.152 151.514 61.288 150.634 61.288C149.69 61.288 148.842 61.144 148.09 60.856C147.354 60.552 146.722 60.128 146.194 59.584C145.682 59.04 145.29 58.376 145.018 57.592C144.746 56.808 144.61 55.936 144.61 54.976C144.61 54.08 144.722 53.264 144.946 52.528C145.186 51.792 145.522 51.16 145.954 50.632C146.386 50.104 146.906 49.696 147.514 49.408C148.138 49.12 148.826 48.976 149.578 48.976C150.442 48.976 151.162 49.192 151.738 49.624C152.33 50.04 152.794 50.608 153.13 51.328L153.274 51.256C153.082 50.44 152.738 49.664 152.242 48.928C151.762 48.192 151.178 47.488 150.49 46.816L148.426 48.112L147.322 46.792L149.194 45.664C148.634 45.2 148.042 44.768 147.418 44.368C146.81 43.968 146.194 43.592 145.57 43.24H150.25C150.474 43.368 150.69 43.52 150.898 43.696C151.106 43.856 151.322 44.024 151.546 44.2L153.562 42.928L154.642 44.224ZM150.586 58.936C151.434 58.936 152.106 58.664 152.602 58.12C153.098 57.576 153.346 56.816 153.346 55.84V54.448C153.346 53.472 153.098 52.712 152.602 52.168C152.106 51.624 151.434 51.352 150.586 51.352C149.722 51.352 149.042 51.624 148.546 52.168C148.05 52.712 147.802 53.472 147.802 54.448V55.84C147.802 56.816 148.05 57.576 148.546 58.12C149.042 58.664 149.722 58.936 150.586 58.936ZM168.703 61C168.031 61 167.495 60.808 167.095 60.424C166.711 60.024 166.471 59.496 166.375 58.84H166.231C166.023 59.656 165.599 60.272 164.959 60.688C164.319 61.088 163.527 61.288 162.583 61.288C161.303 61.288 160.319 60.952 159.631 60.28C158.943 59.608 158.599 58.712 158.599 57.592C158.599 56.296 159.063 55.336 159.991 54.712C160.919 54.072 162.239 53.752 163.951 53.752H166.087V52.84C166.087 52.136 165.903 51.592 165.535 51.208C165.167 50.824 164.575 50.632 163.759 50.632C163.039 50.632 162.455 50.792 162.007 51.112C161.575 51.416 161.207 51.784 160.903 52.216L159.079 50.584C159.543 49.864 160.159 49.288 160.927 48.856C161.695 48.408 162.711 48.184 163.975 48.184C165.671 48.184 166.959 48.568 167.839 49.336C168.719 50.104 169.159 51.208 169.159 52.648V58.552H170.407V61H168.703ZM163.615 59.056C164.303 59.056 164.887 58.904 165.367 58.6C165.847 58.296 166.087 57.848 166.087 57.256V55.6H164.119C162.519 55.6 161.719 56.112 161.719 57.136V57.544C161.719 58.056 161.879 58.44 162.199 58.696C162.535 58.936 163.007 59.056 163.615 59.056ZM172.392 55.216V52.168H179.256V55.216H172.392ZM193.072 61.288C192.176 61.288 191.368 61.136 190.648 60.832C189.944 60.528 189.336 60.088 188.824 59.512C188.328 58.936 187.944 58.248 187.672 57.448C187.4 56.632 187.264 55.72 187.264 54.712C187.264 53.704 187.4 52.8 187.672 52C187.944 51.2 188.328 50.52 188.824 49.96C189.336 49.384 189.944 48.944 190.648 48.64C191.368 48.336 192.176 48.184 193.072 48.184C193.968 48.184 194.776 48.336 195.496 48.64C196.216 48.944 196.824 49.384 197.32 49.96C197.832 50.52 198.224 51.2 198.496 52C198.768 52.8 198.904 53.704 198.904 54.712C198.904 55.72 198.768 56.632 198.496 57.448C198.224 58.248 197.832 58.936 197.32 59.512C196.824 60.088 196.216 60.528 195.496 60.832C194.776 61.136 193.968 61.288 193.072 61.288ZM193.072 58.816C193.888 58.816 194.528 58.568 194.992 58.072C195.456 57.576 195.688 56.848 195.688 55.888V53.56C195.688 52.616 195.456 51.896 194.992 51.4C194.528 50.904 193.888 50.656 193.072 50.656C192.272 50.656 191.64 50.904 191.176 51.4C190.712 51.896 190.48 52.616 190.48 53.56V55.888C190.48 56.848 190.712 57.576 191.176 58.072C191.64 58.568 192.272 58.816 193.072 58.816ZM212.932 62.056C212.932 62.712 212.812 63.288 212.572 63.784C212.348 64.296 211.972 64.72 211.444 65.056C210.916 65.392 210.236 65.648 209.404 65.824C208.572 66 207.556 66.088 206.356 66.088C205.3 66.088 204.404 66.016 203.668 65.872C202.932 65.744 202.324 65.552 201.844 65.296C201.38 65.056 201.044 64.752 200.836 64.384C200.628 64.016 200.524 63.6 200.524 63.136C200.524 62.432 200.716 61.88 201.1 61.48C201.5 61.096 202.052 60.848 202.756 60.736V60.472C202.244 60.344 201.844 60.096 201.556 59.728C201.284 59.344 201.148 58.896 201.148 58.384C201.148 58.064 201.212 57.784 201.34 57.544C201.468 57.288 201.636 57.072 201.844 56.896C202.068 56.72 202.316 56.576 202.588 56.464C202.86 56.336 203.148 56.24 203.452 56.176V56.08C202.684 55.728 202.108 55.24 201.724 54.616C201.356 53.992 201.172 53.264 201.172 52.432C201.172 51.152 201.612 50.128 202.492 49.36C203.372 48.576 204.66 48.184 206.356 48.184C206.74 48.184 207.116 48.208 207.484 48.256C207.868 48.304 208.22 48.384 208.54 48.496V48.088C208.54 46.872 209.132 46.264 210.316 46.264H212.26V48.616H209.596V48.952C210.252 49.32 210.74 49.8 211.06 50.392C211.38 50.984 211.54 51.664 211.54 52.432C211.54 53.696 211.1 54.712 210.22 55.48C209.356 56.248 208.068 56.632 206.356 56.632C205.62 56.632 204.98 56.56 204.436 56.416C204.196 56.528 203.988 56.68 203.812 56.872C203.636 57.048 203.548 57.272 203.548 57.544C203.548 58.168 204.092 58.48 205.18 58.48H208.54C210.076 58.48 211.188 58.8 211.876 59.44C212.58 60.064 212.932 60.936 212.932 62.056ZM210.052 62.416C210.052 62.016 209.892 61.704 209.572 61.48C209.252 61.256 208.7 61.144 207.916 61.144H203.644C203.212 61.464 202.996 61.896 202.996 62.44C202.996 62.92 203.196 63.296 203.596 63.568C203.996 63.84 204.676 63.976 205.636 63.976H207.172C208.18 63.976 208.908 63.848 209.356 63.592C209.82 63.336 210.052 62.944 210.052 62.416ZM206.356 54.544C207.86 54.544 208.612 53.904 208.612 52.624V52.216C208.612 50.936 207.86 50.296 206.356 50.296C204.852 50.296 204.1 50.936 204.1 52.216V52.624C204.1 53.904 204.852 54.544 206.356 54.544ZM108.648 86.408H108.552C108.408 87.224 107.952 87.912 107.184 88.472C106.432 89.016 105.424 89.288 104.16 89.288C103.168 89.288 102.248 89.104 101.4 88.736C100.568 88.368 99.84 87.824 99.216 87.104C98.608 86.368 98.128 85.464 97.776 84.392C97.424 83.32 97.248 82.08 97.248 80.672C97.248 79.264 97.424 78.024 97.776 76.952C98.144 75.864 98.656 74.952 99.312 74.216C99.968 73.48 100.752 72.92 101.664 72.536C102.576 72.152 103.592 71.96 104.712 71.96C106.216 71.96 107.496 72.288 108.552 72.944C109.608 73.6 110.44 74.544 111.048 75.776L108.48 77.288C108.176 76.568 107.72 75.968 107.112 75.488C106.52 75.008 105.72 74.768 104.712 74.768C103.464 74.768 102.464 75.152 101.712 75.92C100.976 76.672 100.608 77.792 100.608 79.28V81.968C100.608 83.44 100.984 84.56 101.736 85.328C102.488 86.096 103.496 86.48 104.76 86.48C105.256 86.48 105.72 86.424 106.152 86.312C106.584 86.184 106.96 86 107.28 85.76C107.6 85.52 107.856 85.224 108.048 84.872C108.24 84.52 108.336 84.104 108.336 83.624V82.544H105.048V79.88H111.384V89H108.648V86.408ZM114.862 89V76.472H117.934V78.56H118.054C118.31 77.888 118.71 77.328 119.254 76.88C119.814 76.416 120.582 76.184 121.558 76.184C122.854 76.184 123.846 76.608 124.534 77.456C125.222 78.304 125.566 79.512 125.566 81.08V89H122.494V81.392C122.494 80.496 122.334 79.824 122.014 79.376C121.694 78.928 121.166 78.704 120.43 78.704C120.11 78.704 119.798 78.752 119.494 78.848C119.206 78.928 118.942 79.056 118.702 79.232C118.478 79.392 118.294 79.6 118.15 79.856C118.006 80.096 117.934 80.384 117.934 80.72V89H114.862ZM134.515 75.056L132.667 74.168L134.947 69.68L137.539 70.952L134.515 75.056ZM136.459 86.912H136.339C136.227 87.232 136.075 87.536 135.883 87.824C135.707 88.096 135.475 88.344 135.187 88.568C134.915 88.792 134.579 88.968 134.179 89.096C133.795 89.224 133.347 89.288 132.835 89.288C131.539 89.288 130.547 88.864 129.859 88.016C129.171 87.168 128.827 85.96 128.827 84.392V76.472H131.899V84.08C131.899 84.944 132.067 85.608 132.403 86.072C132.739 86.52 133.275 86.744 134.011 86.744C134.315 86.744 134.611 86.704 134.899 86.624C135.203 86.544 135.467 86.424 135.691 86.264C135.915 86.088 136.099 85.88 136.243 85.64C136.387 85.384 136.459 85.088 136.459 84.752V76.472H139.531V89H136.459V86.912ZM143.081 76.472H146.153V78.536H146.249C146.473 77.816 146.897 77.248 147.521 76.832C148.145 76.4 148.873 76.184 149.705 76.184C151.305 76.184 152.521 76.752 153.353 77.888C154.201 79.008 154.625 80.616 154.625 82.712C154.625 84.824 154.201 86.448 153.353 87.584C152.521 88.72 151.305 89.288 149.705 89.288C148.873 89.288 148.145 89.072 147.521 88.64C146.913 88.208 146.489 87.632 146.249 86.912H146.153V93.8H143.081V76.472ZM148.721 86.744C149.521 86.744 150.169 86.48 150.665 85.952C151.161 85.424 151.409 84.712 151.409 83.816V81.656C151.409 80.76 151.161 80.048 150.665 79.52C150.169 78.976 149.521 78.704 148.721 78.704C147.985 78.704 147.369 78.888 146.873 79.256C146.393 79.624 146.153 80.112 146.153 80.72V84.704C146.153 85.36 146.393 85.864 146.873 86.216C147.369 86.568 147.985 86.744 148.721 86.744ZM159.972 89L155.796 76.472H158.82L160.572 81.872L161.796 86.336H161.964L163.188 81.872L164.892 76.472H167.82L163.62 89H159.972ZM174.746 89.288C173.818 89.288 172.986 89.136 172.25 88.832C171.53 88.512 170.914 88.072 170.402 87.512C169.906 86.936 169.522 86.248 169.25 85.448C168.978 84.632 168.842 83.72 168.842 82.712C168.842 81.72 168.97 80.824 169.226 80.024C169.498 79.224 169.882 78.544 170.378 77.984C170.874 77.408 171.482 76.968 172.202 76.664C172.922 76.344 173.738 76.184 174.65 76.184C175.626 76.184 176.474 76.352 177.194 76.688C177.914 77.024 178.506 77.48 178.97 78.056C179.434 78.632 179.778 79.304 180.002 80.072C180.242 80.824 180.362 81.632 180.362 82.496V83.504H172.034V83.816C172.034 84.728 172.29 85.464 172.802 86.024C173.314 86.568 174.074 86.84 175.082 86.84C175.85 86.84 176.474 86.68 176.954 86.36C177.45 86.04 177.89 85.632 178.274 85.136L179.93 86.984C179.418 87.704 178.714 88.272 177.818 88.688C176.938 89.088 175.914 89.288 174.746 89.288ZM174.698 78.488C173.882 78.488 173.234 78.76 172.754 79.304C172.274 79.848 172.034 80.552 172.034 81.416V81.608H177.17V81.392C177.17 80.528 176.954 79.832 176.522 79.304C176.106 78.76 175.498 78.488 174.698 78.488ZM183.065 89V76.472H186.137V79.064H186.257C186.337 78.728 186.457 78.408 186.617 78.104C186.793 77.784 187.017 77.504 187.289 77.264C187.561 77.024 187.881 76.832 188.249 76.688C188.633 76.544 189.073 76.472 189.569 76.472H190.241V79.376H189.281C188.241 79.376 187.457 79.528 186.929 79.832C186.401 80.136 186.137 80.632 186.137 81.32V89H183.065ZM192.487 76.472H195.559V90.512C195.559 91.568 195.295 92.376 194.767 92.936C194.239 93.512 193.399 93.8 192.247 93.8H190.567V91.352H192.487V76.472ZM194.023 74.648C193.383 74.648 192.919 74.504 192.631 74.216C192.359 73.928 192.223 73.56 192.223 73.112V72.632C192.223 72.184 192.359 71.816 192.631 71.528C192.919 71.24 193.383 71.096 194.023 71.096C194.647 71.096 195.103 71.24 195.391 71.528C195.679 71.816 195.823 72.184 195.823 72.632V73.112C195.823 73.56 195.679 73.928 195.391 74.216C195.103 74.504 194.647 74.648 194.023 74.648ZM208.336 89C207.664 89 207.128 88.808 206.728 88.424C206.344 88.024 206.104 87.496 206.008 86.84H205.864C205.656 87.656 205.232 88.272 204.592 88.688C203.952 89.088 203.16 89.288 202.216 89.288C200.936 89.288 199.952 88.952 199.264 88.28C198.576 87.608 198.232 86.712 198.232 85.592C198.232 84.296 198.696 83.336 199.624 82.712C200.552 82.072 201.872 81.752 203.584 81.752H205.72V80.84C205.72 80.136 205.536 79.592 205.168 79.208C204.8 78.824 204.208 78.632 203.392 78.632C202.672 78.632 202.088 78.792 201.64 79.112C201.208 79.416 200.84 79.784 200.536 80.216L198.712 78.584C199.176 77.864 199.792 77.288 200.56 76.856C201.328 76.408 202.344 76.184 203.608 76.184C205.304 76.184 206.592 76.568 207.472 77.336C208.352 78.104 208.792 79.208 208.792 80.648V86.552H210.04V89H208.336ZM203.248 87.056C203.936 87.056 204.52 86.904 205 86.6C205.48 86.296 205.72 85.848 205.72 85.256V83.6H203.752C202.152 83.6 201.352 84.112 201.352 85.136V85.544C201.352 86.056 201.512 86.44 201.832 86.696C202.168 86.936 202.64 87.056 203.248 87.056ZM212.526 71.24H215.598V78.56H215.718C215.974 77.888 216.374 77.328 216.918 76.88C217.478 76.416 218.246 76.184 219.222 76.184C220.518 76.184 221.51 76.608 222.198 77.456C222.886 78.304 223.23 79.512 223.23 81.08V89H220.158V81.392C220.158 80.496 219.998 79.824 219.678 79.376C219.358 78.928 218.83 78.704 218.094 78.704C217.774 78.704 217.462 78.752 217.158 78.848C216.87 78.928 216.606 79.056 216.366 79.232C216.142 79.392 215.958 79.6 215.814 79.856C215.67 80.096 215.598 80.384 215.598 80.72V89H212.526V71.24ZM226.635 89V76.472H229.707V79.064H229.827C229.907 78.728 230.027 78.408 230.187 78.104C230.363 77.784 230.587 77.504 230.859 77.264C231.131 77.024 231.451 76.832 231.819 76.688C232.203 76.544 232.643 76.472 233.139 76.472H233.811V79.376H232.851C231.811 79.376 231.027 79.528 230.499 79.832C229.971 80.136 229.707 80.632 229.707 81.32V89H226.635ZM241.004 89.288C240.076 89.288 239.244 89.136 238.508 88.832C237.788 88.512 237.172 88.072 236.66 87.512C236.164 86.936 235.78 86.248 235.508 85.448C235.236 84.632 235.1 83.72 235.1 82.712C235.1 81.72 235.228 80.824 235.484 80.024C235.756 79.224 236.14 78.544 236.636 77.984C237.132 77.408 237.74 76.968 238.46 76.664C239.18 76.344 239.996 76.184 240.908 76.184C241.884 76.184 242.732 76.352 243.452 76.688C244.172 77.024 244.764 77.48 245.228 78.056C245.692 78.632 246.036 79.304 246.26 80.072C246.5 80.824 246.62 81.632 246.62 82.496V83.504H238.292V83.816C238.292 84.728 238.548 85.464 239.06 86.024C239.572 86.568 240.332 86.84 241.34 86.84C242.108 86.84 242.732 86.68 243.212 86.36C243.708 86.04 244.148 85.632 244.532 85.136L246.188 86.984C245.676 87.704 244.972 88.272 244.076 88.688C243.196 89.088 242.172 89.288 241.004 89.288ZM240.956 78.488C240.14 78.488 239.492 78.76 239.012 79.304C238.532 79.848 238.292 80.552 238.292 81.416V81.608H243.428V81.392C243.428 80.528 243.212 79.832 242.78 79.304C242.364 78.76 241.756 78.488 240.956 78.488ZM249.323 76.472H252.395V78.536H252.491C252.715 77.816 253.139 77.248 253.763 76.832C254.387 76.4 255.115 76.184 255.947 76.184C257.547 76.184 258.763 76.752 259.595 77.888C260.443 79.008 260.867 80.616 260.867 82.712C260.867 84.824 260.443 86.448 259.595 87.584C258.763 88.72 257.547 89.288 255.947 89.288C255.115 89.288 254.387 89.072 253.763 88.64C253.155 88.208 252.731 87.632 252.491 86.912H252.395V93.8H249.323V76.472ZM254.963 86.744C255.763 86.744 256.411 86.48 256.907 85.952C257.403 85.424 257.651 84.712 257.651 83.816V81.656C257.651 80.76 257.403 80.048 256.907 79.52C256.411 78.976 255.763 78.704 254.963 78.704C254.227 78.704 253.611 78.888 253.115 79.256C252.635 79.624 252.395 80.112 252.395 80.72V84.704C252.395 85.36 252.635 85.864 253.115 86.216C253.611 86.568 254.227 86.744 254.963 86.744ZM263.714 76.472H266.786V78.536H266.882C267.106 77.816 267.53 77.248 268.154 76.832C268.778 76.4 269.506 76.184 270.338 76.184C271.938 76.184 273.154 76.752 273.986 77.888C274.834 79.008 275.258 80.616 275.258 82.712C275.258 84.824 274.834 86.448 273.986 87.584C273.154 88.72 271.938 89.288 270.338 89.288C269.506 89.288 268.778 89.072 268.154 88.64C267.546 88.208 267.122 87.632 266.882 86.912H266.786V93.8H263.714V76.472ZM269.354 86.744C270.154 86.744 270.802 86.48 271.298 85.952C271.794 85.424 272.042 84.712 272.042 83.816V81.656C272.042 80.76 271.794 80.048 271.298 79.52C270.802 78.976 270.154 78.704 269.354 78.704C268.618 78.704 268.002 78.888 267.506 79.256C267.026 79.624 266.786 80.112 266.786 80.72V84.704C266.786 85.36 267.026 85.864 267.506 86.216C268.002 86.568 268.618 86.744 269.354 86.744ZM285.592 86.912H285.472C285.36 87.232 285.208 87.536 285.016 87.824C284.84 88.096 284.608 88.344 284.32 88.568C284.048 88.792 283.712 88.968 283.312 89.096C282.928 89.224 282.48 89.288 281.968 89.288C280.672 89.288 279.68 88.864 278.992 88.016C278.304 87.168 277.96 85.96 277.96 84.392V76.472H281.032V84.08C281.032 84.944 281.2 85.608 281.536 86.072C281.872 86.52 282.408 86.744 283.144 86.744C283.448 86.744 283.744 86.704 284.032 86.624C284.336 86.544 284.6 86.424 284.824 86.264C285.048 86.088 285.232 85.88 285.376 85.64C285.52 85.384 285.592 85.088 285.592 84.752V76.472H288.664V89H285.592V86.912ZM292.214 89V76.472H295.286V79.064H295.406C295.486 78.728 295.606 78.408 295.766 78.104C295.942 77.784 296.166 77.504 296.438 77.264C296.71 77.024 297.03 76.832 297.398 76.688C297.782 76.544 298.222 76.472 298.718 76.472H299.39V79.376H298.43C297.39 79.376 296.606 79.528 296.078 79.832C295.55 80.136 295.286 80.632 295.286 81.32V89H292.214Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57890"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/skorradalur.svg b/libs/application/templates/financial-aid/src/svg/skorradalur.svg deleted file mode 100644 index c729263e3047..000000000000 --- a/libs/application/templates/financial-aid/src/svg/skorradalur.svg +++ /dev/null @@ -1,16 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57887)"> -<path d="M48.2156 16.0115C58.957 16.0105 69.6984 16.0067 80.4398 16C80.9728 16 81.1582 16.1437 81.1582 16.694C80.6452 31.5876 82.2287 46.7255 80.3837 61.4868C80.0647 62.9237 79.4368 64.3032 79.1609 65.7487C78.0803 69.5968 76.0054 73.0856 73.7696 76.3574C70.5251 80.6682 67.0161 84.7734 62.7054 88.0654C59.2223 90.8142 55.4016 93.1348 51.2805 94.7959C50.131 95.1623 48.9714 96.0144 47.763 96C36.8913 92.0212 27.3574 84.3854 21.2477 74.5167C19.6987 72.3614 18.7661 69.8267 17.5275 67.4917C16.868 65.1581 16.0403 62.8189 15.638 60.4192C14.3289 45.9567 15.5072 31.2614 15.1063 16.7185C15.1063 16.1724 15.3003 16 15.8248 16C26.6236 16.0134 37.4206 16.0172 48.2156 16.0115ZM48.0805 17.9729V17.9872C37.9321 17.9872 27.7832 17.9786 17.6338 17.9614C16.9901 17.9614 17.0131 18.3422 17.0131 18.7718C17.3479 32.5949 16.3406 46.5717 17.4169 60.3215C18.4931 64.8018 20.0823 69.2059 22.6084 73.0784C25.8084 78.5387 30.2556 83.154 35.1986 87.0567C37.1183 88.3944 39.0524 89.7308 41.031 90.978C43.1663 91.8401 45.1665 93.0673 47.3046 93.9208C49.1438 94.372 50.7259 92.9581 52.3596 92.3402C52.966 92.0413 53.525 91.58 54.1615 91.4249C55.3226 91.1375 56.1416 90.3328 57.1115 89.7624C58.5398 88.5611 60.2727 87.8829 61.6019 86.5753C63.6739 84.8093 65.7689 83.1569 67.5622 81.1021C68.4473 79.7888 69.877 78.9094 70.653 77.4524C71.0136 76.777 71.6732 76.2683 72.1114 75.6246C75.3243 70.9374 77.8102 65.6481 78.9813 60.0787C79.5331 46.3404 79.079 32.5719 79.2212 18.8235C79.2212 18.1683 79.0517 17.9786 78.4726 17.9786L48.0805 17.9729Z" fill="#14995A"/> -<path d="M47.9114 20.1081C57.3068 20.1081 66.7033 20.1081 76.1007 20.1081C77.1999 20.0521 77.2315 20.0909 77.2301 21.2117C77.1783 32.8866 77.2947 44.5715 77.2301 56.2392C76.9082 59.4407 76.5202 62.7743 75.4497 65.8263C74.0229 68.8927 72.5529 71.9849 70.6074 74.7351C66.5093 80.6265 61.0462 85.6212 54.6763 88.9174C53.0957 89.6833 51.5266 90.4621 49.9345 91.1878C48.7735 91.8329 47.5507 91.7366 46.3652 91.2036C40.0012 88.6602 34.2679 84.5995 29.6338 79.6048C26.8333 76.5284 24.2368 73.1603 22.5427 69.3324C21.4894 67.1281 20.3428 64.9368 19.9563 62.4855C19.7795 61.0486 19.4605 59.6332 19.2378 58.2021C19.0065 45.9883 19.2277 33.7387 19.1516 21.5106C19.1516 19.8955 18.9648 20.1067 20.5885 20.1081H47.9114ZM21.6446 42.5527C21.9823 48.2888 20.5382 58.1776 22.9551 62.9482C23.1175 63.5229 22.7094 64.7357 23.6362 64.6337C31.1871 64.6179 38.7367 64.6337 46.2862 64.6495C47.5421 64.5647 46.9069 65.8866 46.7776 66.5936C46.736 67.1267 46.5003 67.2804 45.9873 67.2833C42.6005 67.2589 39.2338 67.4572 35.8528 67.7144C32.7879 68.0521 29.4499 67.6497 26.5129 68.3524C31.5421 69.4444 36.7667 69.0177 41.8993 69.0162C49.6285 69.6571 36.2839 71.8153 34.7507 72.0711C32.3798 72.5252 29.8652 72.3987 27.5561 73.0769C28.6639 74.6575 38.5255 71.6688 40.8058 73.0669C40.129 73.9491 38.9378 73.9032 37.9636 74.2926C36.7997 74.669 35.6559 75.1217 34.4777 75.4421C33.6816 75.8171 30.6196 75.9996 30.4543 76.6189C30.7417 76.8776 31.0003 77.1635 31.4745 77.05C33.8109 76.5744 36.1488 76.1218 38.3717 75.2251C42.2686 73.9836 46.131 71.8196 47.647 67.8078C49.6012 63.5301 46.21 59.2381 43.4382 56.2249C39.958 52.3668 35.301 49.2357 33.3296 44.2511C32.2821 40.7766 32.7333 36.8754 34.6372 33.7775C35.4447 32.0388 37.7294 30.4137 39.4163 29.5027C41.5918 27.991 43.8708 26.5828 46.3968 25.7121C48.4976 24.7652 50.5481 23.4719 52.9563 23.7349C53.1031 23.7485 53.245 23.7941 53.3721 23.8686C53.4993 23.9431 53.6085 24.0446 53.692 24.166C53.8616 25.0913 51.7134 26.557 51.0079 27.0915C49.9848 28.0715 49.0278 29.1247 47.9602 30.053C46.7604 31.0962 45.881 32.523 44.1912 33.0015C43.3132 33.2515 42.533 33.8392 41.6967 34.2473C40.3503 35.1023 37.8372 35.3437 37.6834 37.2648C37.6403 39.5021 37.396 41.9348 38.7137 43.9307C39.7325 45.1262 40.3532 46.6148 41.5645 47.6666C46.075 52.4932 52.1459 55.1659 57.6737 58.5541C61.6698 60.6319 64.4459 64.1351 66.9763 67.7503C67.4548 68.4127 67.3671 68.5133 66.5538 68.6326C62.8768 69.4071 59.2558 70.7319 55.8675 72.3556C53.0325 73.8213 50.1055 75.0541 47.5794 77.0227C48.8468 77.3015 50.8441 76.3948 52.1459 76.0614C54.55 75.153 57.0034 74.3806 59.4943 73.748C62.565 73.3873 65.6601 73.2192 68.7308 72.8312C68.8055 72.813 68.8758 72.7799 68.9375 72.734C68.9992 72.6881 69.051 72.6303 69.09 72.564C69.9263 71.1453 70.751 69.7203 71.5643 68.2892C71.7281 67.9112 71.5643 67.6943 71.1462 67.7906C69.7653 67.9917 68.36 68.7964 67.7666 67.0002C67.3657 66.1755 67.2162 65.1668 66.3297 64.6179C66.287 64.5797 66.2546 64.5314 66.2355 64.4774C66.2164 64.4234 66.2112 64.3654 66.2205 64.3089C66.2514 64.2583 66.2932 64.2152 66.3429 64.1829C66.3927 64.1505 66.449 64.1298 66.5079 64.1221C68.2695 64.0488 70.0254 63.7586 71.7871 63.691C73.5487 63.6235 73.5645 63.6695 73.9697 61.9668C75.3448 55.6558 74.4568 49.0877 74.6594 42.6676C74.6954 41.7078 74.8779 41.35 73.7398 41.4089C70.3458 41.2523 67.0611 42.3558 63.6814 41.998C62.0189 42.123 60.4197 41.6603 58.7888 41.4161C57.895 41.2724 56.928 41.3356 56.1104 41.0109C54.7309 40.4634 53.3386 40.6286 51.9433 40.5798C49.0408 40.5281 46.1497 40.3025 43.2673 40.7838C42.2241 40.7551 39.1002 41.748 38.7367 40.5985C38.4493 39.357 38.4292 37.841 39.2468 36.8165C40.5141 35.5492 42.5172 35.5104 43.98 34.5074C45.9773 33.2573 47.8812 31.9468 49.4733 30.1837C51.1645 28.869 56.6665 30.0257 57.8074 27.9249C57.9166 27.7381 58.2384 27.6289 58.4813 27.5786C59.592 27.5887 59.9613 26.2366 60.8565 25.896C61.9859 25.5842 63.1771 25.4161 64.3482 25.1962C65.8153 24.7752 67.4936 28.2037 68.7236 29.0974C69.34 29.7282 70.0082 30.2858 70.284 31.158C70.7913 32.7659 72.05 33.5749 73.4884 34.2057C73.8648 34.2976 74.2715 34.8896 74.6479 34.5807C74.7428 30.7758 74.648 26.9392 74.6911 23.1256C74.6911 22.6313 74.5474 22.4776 74.0473 22.4776C56.7431 22.4862 39.4384 22.4896 22.1332 22.4877C21.7136 22.4877 21.5225 22.6313 21.5311 23.0926C21.5555 24.2752 21.5915 25.4635 21.511 26.6418C21.4722 27.205 21.7064 27.2769 22.1059 27.2165C26.7615 25.794 24.9955 28.8129 27.9455 28.5011C28.3435 28.3991 28.5475 28.6031 28.753 28.9897C29.8408 31.5301 32.9962 30.257 35.1056 30.8375C35.0553 31.0215 35.0596 31.2528 34.9475 31.3821C32.4933 33.9111 31.4228 37.3985 31.6771 40.8801C31.7217 41.8198 30.1497 41.4003 29.5218 41.6388C27.1164 42.1058 24.7426 41.577 22.353 41.2896C21.4851 41.1287 21.465 41.9233 21.6446 42.5527ZM40.3589 79.8764L40.3374 79.6537C38.981 79.9799 35.3082 79.8218 34.6314 80.7874C37.3501 81.1696 40.2038 80.8765 42.9483 81.4541C50.1012 82.5878 61.0533 83.9917 65.5308 76.8948C61.6425 77.1535 57.6206 78.3202 53.6748 78.7958C49.2606 79.4051 44.8033 79.5933 40.3589 79.8764ZM45.2373 87.2707C48.3985 86.9331 51.9994 87.1357 54.7898 85.5134C51.005 84.9846 46.8969 85.637 43.069 84.4975C41.4467 84.0952 39.8273 83.6842 38.2065 83.2776C37.978 83.1899 37.7668 83.1583 37.5527 83.3063C38.4895 84.5464 40.1908 85.1297 41.451 86.0479C42.612 86.775 43.8176 87.3512 45.2373 87.2707ZM62.2474 34.1482C62.1224 35.1957 62.4701 34.7431 63.1512 34.6094C64.637 34.4097 65.8656 33.9786 66.5711 32.5518C66.6286 32.4742 66.5193 32.2098 66.4145 32.1006C66.3656 32.0489 66.1271 32.1336 66.0049 32.2084C64.6384 33.4886 64.7907 32.1078 63.795 31.2873C63.3179 31.2241 62.7633 31.5143 62.2747 31.5747C61.7905 31.681 61.4054 31.8621 61.368 32.4483C61.358 32.6049 61.2559 32.842 61.141 32.8794C60.7918 32.9527 60.4987 32.592 60.4067 32.2701C58.9986 30.0587 58.4396 33.8881 58.329 34.8709C58.7701 34.8192 59.1782 34.631 59.5848 34.46C60.2056 34.1726 61.0088 34.2804 61.4327 33.5547C61.9342 33.0547 62.3178 33.572 62.2474 34.1482ZM58.2499 35.5147C58.3462 35.0908 58.2772 34.7675 57.7844 34.608C57.5516 34.4772 57.4136 34.0332 57.2312 33.7976C56.9165 34.6353 56.8446 35.3408 55.8144 35.4371C54.5125 35.7546 53.603 36.9013 52.5454 37.6629C52.4836 37.7146 52.5109 37.9646 52.5799 38.0681C53.6001 39.7018 55.2899 37.637 56.5084 37.2145C56.9711 36.9731 57.3174 36.486 57.7915 36.2964C58.2312 36.1167 58.3591 35.9343 58.2499 35.5147ZM47.9042 26.6231L47.8711 26.6978C46.6857 26.5211 44.7875 28.2066 45.6525 29.3087C46.7891 29.0026 47.8553 27.7281 48.706 26.9047L47.9042 26.6231ZM62.848 28.9811C62.246 28.4336 61.7589 28.3934 61.7301 29.1707C61.7158 29.2814 61.8566 29.4121 61.927 29.5343L62.848 28.9811Z" fill="#2E5398"/> -<path d="M73.9646 61.9711C71.0908 61.3518 68.0446 61.7757 65.1348 61.9021C63.9192 62.0242 63.4105 61.2957 62.7639 60.6994C61.7102 59.751 60.5673 58.9065 59.3513 58.1776C56.2102 55.9935 52.7946 54.2477 49.428 52.453C46.501 50.5017 43.6889 48.3564 41.3884 45.6808C41.091 45.1377 38.802 42.6073 40.1254 42.5656C46.1532 42.0282 52.3147 41.5598 58.2966 42.636C60.9965 43.0269 63.6591 43.7123 66.418 43.5528C69.1682 43.2122 71.8524 42.4823 74.6544 42.6719C74.4518 49.0921 75.3398 55.6587 73.9646 61.9711Z" fill="#14995A"/> -<path d="M21.6448 42.5527C24.0875 42.7122 26.2774 43.9652 28.779 43.4148C29.5923 43.5082 31.5752 42.409 31.7707 43.4809C32.3641 46.6895 34.7882 49.0734 36.9565 51.3552C38.8977 53.8123 41.5302 55.6429 43.4398 58.1489C44.5893 59.7654 46.1441 61.2469 46.6139 63.2212C38.7885 62.9338 30.8424 62.5501 22.9552 62.9496C20.5398 58.1977 21.981 48.2816 21.6448 42.5527Z" fill="#14995A"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM112.448 57.24H115.52V67.944H115.64L117.296 65.688L120.104 62.472H123.584L119.264 67.32L124.04 75H120.392L117.176 69.384L115.52 71.184V75H112.448V57.24ZM130.307 75.288C129.411 75.288 128.603 75.136 127.883 74.832C127.179 74.528 126.571 74.088 126.059 73.512C125.563 72.936 125.179 72.248 124.907 71.448C124.635 70.632 124.499 69.72 124.499 68.712C124.499 67.704 124.635 66.8 124.907 66C125.179 65.2 125.563 64.52 126.059 63.96C126.571 63.384 127.179 62.944 127.883 62.64C128.603 62.336 129.411 62.184 130.307 62.184C131.203 62.184 132.011 62.336 132.731 62.64C133.451 62.944 134.059 63.384 134.555 63.96C135.067 64.52 135.459 65.2 135.731 66C136.003 66.8 136.139 67.704 136.139 68.712C136.139 69.72 136.003 70.632 135.731 71.448C135.459 72.248 135.067 72.936 134.555 73.512C134.059 74.088 133.451 74.528 132.731 74.832C132.011 75.136 131.203 75.288 130.307 75.288ZM130.307 72.816C131.123 72.816 131.763 72.568 132.227 72.072C132.691 71.576 132.923 70.848 132.923 69.888V67.56C132.923 66.616 132.691 65.896 132.227 65.4C131.763 64.904 131.123 64.656 130.307 64.656C129.507 64.656 128.875 64.904 128.411 65.4C127.947 65.896 127.715 66.616 127.715 67.56V69.888C127.715 70.848 127.947 71.576 128.411 72.072C128.875 72.568 129.507 72.816 130.307 72.816ZM138.862 75V62.472H141.934V65.064H142.054C142.134 64.728 142.254 64.408 142.414 64.104C142.59 63.784 142.814 63.504 143.086 63.264C143.358 63.024 143.678 62.832 144.046 62.688C144.43 62.544 144.87 62.472 145.366 62.472H146.038V65.376H145.078C144.038 65.376 143.254 65.528 142.726 65.832C142.198 66.136 141.934 66.632 141.934 67.32V75H138.862ZM148.284 75V62.472H151.356V65.064H151.476C151.556 64.728 151.676 64.408 151.836 64.104C152.012 63.784 152.236 63.504 152.508 63.264C152.78 63.024 153.1 62.832 153.468 62.688C153.852 62.544 154.292 62.472 154.788 62.472H155.46V65.376H154.5C153.46 65.376 152.676 65.528 152.148 65.832C151.62 66.136 151.356 66.632 151.356 67.32V75H148.284ZM166.664 75C165.992 75 165.456 74.808 165.056 74.424C164.672 74.024 164.432 73.496 164.336 72.84H164.192C163.984 73.656 163.56 74.272 162.92 74.688C162.28 75.088 161.488 75.288 160.544 75.288C159.264 75.288 158.28 74.952 157.592 74.28C156.904 73.608 156.56 72.712 156.56 71.592C156.56 70.296 157.024 69.336 157.952 68.712C158.88 68.072 160.2 67.752 161.912 67.752H164.048V66.84C164.048 66.136 163.864 65.592 163.496 65.208C163.128 64.824 162.536 64.632 161.72 64.632C161 64.632 160.416 64.792 159.968 65.112C159.536 65.416 159.168 65.784 158.864 66.216L157.04 64.584C157.504 63.864 158.12 63.288 158.888 62.856C159.656 62.408 160.672 62.184 161.936 62.184C163.632 62.184 164.92 62.568 165.8 63.336C166.68 64.104 167.12 65.208 167.12 66.648V72.552H168.368V75H166.664ZM161.576 73.056C162.264 73.056 162.848 72.904 163.328 72.6C163.808 72.296 164.048 71.848 164.048 71.256V69.6H162.08C160.48 69.6 159.68 70.112 159.68 71.136V71.544C159.68 72.056 159.84 72.44 160.16 72.696C160.496 72.936 160.968 73.056 161.576 73.056ZM178.63 72.912H178.51C178.286 73.632 177.862 74.208 177.238 74.64C176.614 75.072 175.886 75.288 175.054 75.288C173.47 75.288 172.254 74.72 171.406 73.584C170.574 72.448 170.158 70.824 170.158 68.712C170.158 66.616 170.574 65.008 171.406 63.888C172.254 62.752 173.47 62.184 175.054 62.184C175.886 62.184 176.614 62.4 177.238 62.832C177.862 63.248 178.286 63.816 178.51 64.536H178.63V57.24H181.702V75H178.63V72.912ZM176.038 72.744C176.774 72.744 177.39 72.568 177.886 72.216C178.382 71.864 178.63 71.36 178.63 70.704V66.72C178.63 66.112 178.382 65.624 177.886 65.256C177.39 64.888 176.774 64.704 176.038 64.704C175.238 64.704 174.59 64.976 174.094 65.52C173.614 66.048 173.374 66.76 173.374 67.656V69.816C173.374 70.712 173.614 71.424 174.094 71.952C174.59 72.48 175.238 72.744 176.038 72.744ZM194.461 75C193.789 75 193.253 74.808 192.853 74.424C192.469 74.024 192.229 73.496 192.133 72.84H191.989C191.781 73.656 191.357 74.272 190.717 74.688C190.077 75.088 189.285 75.288 188.341 75.288C187.061 75.288 186.077 74.952 185.389 74.28C184.701 73.608 184.357 72.712 184.357 71.592C184.357 70.296 184.821 69.336 185.749 68.712C186.677 68.072 187.997 67.752 189.709 67.752H191.845V66.84C191.845 66.136 191.661 65.592 191.293 65.208C190.925 64.824 190.333 64.632 189.517 64.632C188.797 64.632 188.213 64.792 187.765 65.112C187.333 65.416 186.965 65.784 186.661 66.216L184.837 64.584C185.301 63.864 185.917 63.288 186.685 62.856C187.453 62.408 188.469 62.184 189.733 62.184C191.429 62.184 192.717 62.568 193.597 63.336C194.477 64.104 194.917 65.208 194.917 66.648V72.552H196.165V75H194.461ZM189.373 73.056C190.061 73.056 190.645 72.904 191.125 72.6C191.605 72.296 191.845 71.848 191.845 71.256V69.6H189.877C188.277 69.6 187.477 70.112 187.477 71.136V71.544C187.477 72.056 187.637 72.44 187.957 72.696C188.293 72.936 188.765 73.056 189.373 73.056ZM201.723 75C200.667 75 199.891 74.736 199.395 74.208C198.899 73.68 198.651 72.936 198.651 71.976V57.24H201.723V72.552H203.379V75H201.723ZM213.194 72.912H213.074C212.962 73.232 212.81 73.536 212.618 73.824C212.442 74.096 212.21 74.344 211.922 74.568C211.65 74.792 211.314 74.968 210.914 75.096C210.53 75.224 210.082 75.288 209.57 75.288C208.274 75.288 207.282 74.864 206.594 74.016C205.906 73.168 205.562 71.96 205.562 70.392V62.472H208.634V70.08C208.634 70.944 208.802 71.608 209.138 72.072C209.474 72.52 210.01 72.744 210.746 72.744C211.05 72.744 211.346 72.704 211.634 72.624C211.938 72.544 212.202 72.424 212.426 72.264C212.65 72.088 212.834 71.88 212.978 71.64C213.122 71.384 213.194 71.088 213.194 70.752V62.472H216.266V75H213.194V72.912ZM219.815 75V62.472H222.887V65.064H223.007C223.087 64.728 223.207 64.408 223.367 64.104C223.543 63.784 223.767 63.504 224.039 63.264C224.311 63.024 224.631 62.832 224.999 62.688C225.383 62.544 225.823 62.472 226.319 62.472H226.991V65.376H226.031C224.991 65.376 224.207 65.528 223.679 65.832C223.151 66.136 222.887 66.632 222.887 67.32V75H219.815Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57887"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/skutustadahreppur.svg b/libs/application/templates/financial-aid/src/svg/skutustadahreppur.svg deleted file mode 100644 index 469ba9092f3a..000000000000 --- a/libs/application/templates/financial-aid/src/svg/skutustadahreppur.svg +++ /dev/null @@ -1,120 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57914)"> -<path d="M17.0427 55.9264C15.7799 81.8353 40.4261 109.07 65.0512 89.1176C85.0459 70.8067 83.0464 31.7643 58.295 18.5046C34.8486 7.64433 15.9062 34.3741 17.0427 55.9264Z" fill="#F9FCFC"/> -<path d="M17.0427 55.9264C15.9062 34.3741 34.8486 7.64433 58.3161 18.5046C83.0675 31.7643 85.0669 70.8066 65.0722 89.1176C40.4261 109.049 15.7799 81.8353 17.0427 55.9264ZM28.9344 26.2079C24.7881 30.5646 21.9678 36.2052 20.1788 42.0142C18.8738 46.5394 18.1582 51.1487 18.2003 55.8632C18.2424 59.799 17.6531 58.8309 21.4205 58.9571C22.8096 59.0203 22.3045 56.4315 23.4411 56.0316C25.9667 54.3689 22.4939 51.6959 26.4718 50.8119C29.8815 49.1492 27.3558 53.4007 29.1869 54.4952C29.671 54.874 29.7973 55.3581 29.65 55.9053C29.3763 56.8945 29.8604 57.1892 30.7444 57.3365C32.2387 57.7154 32.5334 55.9474 33.0175 54.9161C33.228 54.2215 33.6489 53.527 34.3435 53.4217C34.9959 53.3376 34.8907 53.0429 34.8486 52.6641C34.7223 51.2118 34.5539 49.7806 34.8065 48.3073C34.7433 46.9182 37.1217 43.256 36.4903 43.0034C35.2064 42.351 34.8486 40.141 33.228 40.3305C31.3337 40.6462 29.4816 39.9516 27.5873 40.0779C26.6402 40.2673 26.4718 39.236 27.3979 39.0045C28.2398 38.6888 28.6607 38.1416 28.8712 37.2155C29.1448 34.9003 31.5021 35.1318 33.1648 35.9106C34.3224 36.7525 35.5642 36.4157 36.7849 36.2684C37.4795 36.1842 37.9846 35.8474 37.6478 34.9845C37.0796 33.6585 38.595 32.4168 39.6894 31.9116C41.0996 31.4065 42.2572 32.1221 43.3727 32.8167C43.6884 31.4065 40.826 31.2592 39.9209 31.2592C39.2685 29.9332 33.9225 31.175 35.3748 29.5544C36.0272 28.8808 36.7218 28.2494 37.3111 27.5128C38.5529 25.9553 42.9517 25.9343 44.0251 27.7864C44.1093 28.4599 44.5934 28.3968 45.0564 28.3336C46.2561 27.9758 48.7817 28.0179 48.6765 26.2921C48.9291 22.5457 54.6749 21.8301 57.5584 21.4512C59.4947 21.2407 59.9157 23.8716 58.8212 25.2397C57.8109 26.9024 58.4003 28.6704 58.6318 30.3541C60.1261 33.3639 64.2724 33.9532 67.0085 35.4475C70.0183 36.9629 64.3987 39.3623 62.8622 38.3731C59.8946 36.9208 58.8423 39.5938 55.9167 38.6467C54.1067 37.9732 53.9593 39.8885 52.8228 40.9198C52.2966 40.9829 52.2545 41.3618 52.2756 41.7617C52.3177 42.8351 52.1282 43.8874 52.002 44.9398C51.4547 47.8443 50.1498 50.5804 48.2345 52.8956C47.6452 53.2955 47.2032 53.969 46.5508 54.3689C46.1088 54.7056 46.2351 54.9792 46.5508 55.2949C46.7612 55.8211 46.8665 56.6209 47.4558 56.663C48.1082 56.7051 48.1293 55.8211 48.445 55.3581C49.0133 52.6009 50.5497 53.2955 52.8649 53.1902C54.7591 52.8114 52.1282 56.9577 52.6755 57.7364C53.2858 58.2836 55.2222 57.7995 55.4958 57.0208C56.064 56.1158 56.2324 53.2323 57.369 53.1902C58.2108 53.4217 60.2945 52.643 60.3997 53.8216C60.6734 56.0737 60.6734 56.0737 62.9885 56.0737C63.9356 56.0316 64.9459 55.9053 65.0722 57.1471C65.0722 57.9048 67.3453 57.5049 67.9556 57.5891C68.4818 57.547 68.5871 56.9156 68.8396 56.5157C69.5763 55.4423 68.8817 54.2215 69.2606 53.1481C70.1445 53.085 71.0706 53.2534 71.8073 52.5588C72.4387 52.3063 73.5542 51.8432 74.0172 52.5588C74.0593 54.4952 71.2811 54.7267 72.4597 56.2631C73.2385 57.9048 73.9751 59.4412 76.143 58.9992C76.9217 58.894 77.2585 58.8309 77.2795 57.9048C79.0896 35.8474 59.8315 7.34967 35.9009 20.5883C35.7326 20.5883 35.5852 20.6514 35.501 20.8198C35.3748 20.904 35.1853 20.9461 35.0801 21.0513C34.9959 21.1145 34.9117 21.1566 34.8486 21.2197C34.2382 21.367 33.9015 21.9353 33.3753 22.251C33.1017 22.2931 32.8912 22.4404 32.7649 22.693C31.9441 23.3455 31.0391 23.8927 30.3866 24.7346C30.3235 24.7556 30.3024 24.7767 30.2814 24.8398C29.9446 24.924 29.9025 25.2818 29.65 25.4502C29.1027 25.4291 29.3132 26.0184 28.9344 26.2079ZM59.8315 65.1239C60.2103 64.5978 60.063 64.0295 59.9998 63.4612C60.7786 61.6301 64.083 63.5244 64.6512 62.03C65.1143 60.3252 66.9454 61.7354 68.0609 61.3776C69.6394 61.4196 69.7236 64.0716 69.2606 65.2081C66.4403 65.0397 63.6199 65.166 60.8207 65.1239C60.3787 65.1239 60.2103 65.3554 60.063 65.7343C61.5573 65.5028 69.0922 66.2815 69.2606 65.2502C70.4392 65.7343 71.702 65.8606 72.8596 66.4499C73.5121 66.7867 73.7225 66.3447 73.4279 65.7132C74.4802 65.8606 75.5747 66.3236 76.6691 65.0397C75.4274 65.2923 74.3961 64.7661 73.4279 65.3554C72.7333 64.6609 71.1127 64.0716 72.1651 62.9771C73.491 62.9982 74.7959 63.0192 76.1219 62.9982C76.3534 62.9982 76.8165 63.2928 76.8375 62.6614C77.1743 61.7774 73.0701 62.3457 72.3755 62.1773C72.565 61.7353 72.8386 61.3355 73.2385 61.0408C73.2174 62.0511 75.6799 61.3775 76.3955 61.5459C76.6481 61.5459 77.0059 61.6091 76.9848 61.1671C77.0059 60.5146 73.8909 61.0408 73.2385 60.8935C73.1332 60.3252 73.8909 60.0937 73.8067 59.4202C62.5044 59.4833 51.1811 59.4202 39.8788 59.3781C40.7628 56.9366 41.8994 54.5793 42.2572 51.9695C42.8044 51.5696 43.2674 51.9905 43.6463 52.2431C44.2566 52.6641 44.9512 52.4325 44.6565 51.6748C44.5723 50.0753 44.3829 48.4967 44.3619 46.8972C44.3408 45.95 43.7725 45.024 44.2566 44.0768C44.2987 41.6775 43.9199 39.215 45.4142 37.0261C42.9938 38.7309 43.8988 43.719 43.7305 46.371C43.6463 46.6656 43.6884 46.9813 43.4989 47.255C42.615 48.5388 42.3203 50.0332 42.1519 51.5486C40.8891 55.4844 39.7315 60.2621 36.3219 62.7456C35.1853 62.3457 36.2798 59.0834 34.7013 59.357C30.9338 59.4412 27.1664 59.3149 23.42 59.357C23.1043 59.357 22.515 59.1466 22.5781 59.778C22.5781 63.1455 24.9985 62.3878 24.8091 64.7872C24.746 67.3339 24.9985 67.397 27.4611 68.0284C27.3769 68.4283 27.1033 68.302 26.8086 68.281C24.6197 68.0495 22.4308 68.2179 20.2419 68.1758C19.842 68.1758 19.7999 68.3862 19.8631 68.7019C19.9472 69.2281 20.284 69.2492 20.7049 69.2492C25.7983 69.2492 30.8707 69.2492 35.9641 69.2071C36.4482 69.2071 37.0375 69.2492 37.4584 68.8282C39.6894 68.5967 40.7839 65.6922 43.0569 66.513C43.8567 66.2184 44.7618 65.8606 45.3932 65.2081C45.6247 66.05 48.2977 65.5238 49.1185 65.587C49.3921 65.5659 49.329 65.3134 49.1816 65.1239C49.9604 65.2713 50.7391 65.3765 51.5389 65.3554C53.2858 65.3344 53.2858 65.3554 52.907 63.6927C52.9701 63.6717 53.0333 63.6717 53.0964 63.6506C53.0333 63.6506 52.9701 63.6506 52.907 63.6506C52.928 63.377 52.8438 63.1245 52.6965 62.914C53.2648 62.7877 55.7062 63.2297 55.7694 62.7035C55.7904 61.5249 53.1385 62.2194 52.7386 62.7246C51.3916 60.4094 53.0754 60.8303 54.8223 60.683C56.1272 60.5357 56.1903 63.2928 56.7586 64.1979C56.8849 64.5978 56.7796 65.1029 57.3479 65.2502C58.1477 65.2081 59.0317 65.5238 59.8315 65.1239ZM69.6815 81.8985C70.7128 81.0987 65.8509 81.6249 65.4089 81.4986C65.0301 81.4986 64.988 81.6669 65.2616 81.9195C67.1559 85.5607 67.5137 84.9924 69.6815 81.8985ZM38.4266 80.8882C38.9949 80.8882 39.5631 80.8882 40.1314 80.8882L40.2156 80.9303L40.2998 80.8882C43.2464 80.9092 46.2561 81.1197 49.1395 80.8251C47.6663 80.2989 48.2135 78.8256 45.8983 78.8256C44.2566 79.0361 39.7105 78.131 38.9107 79.6254C38.3424 79.8358 38.0056 80.1936 38.2582 80.8461C38.3003 80.9513 38.3214 81.0145 38.4266 80.8882ZM34.6592 88.1705C35.1853 87.4759 34.7433 86.7182 34.8065 86.0026C34.8907 85.0976 34.4697 84.803 33.6279 85.0345C32.1335 85.0134 30.6392 84.9924 29.1448 85.0134C28.9554 85.0134 28.7028 84.9293 28.5976 85.1818C28.5345 85.3923 28.5976 85.5607 28.7449 85.7501C30.3024 87.7285 32.0072 88.6756 34.6592 88.1705ZM26.9559 80.8882C29.4816 81.0145 32.0072 80.9092 34.5329 80.9934C34.7854 81.0145 35.0591 81.0145 35.0801 80.6777C35.4169 78.9519 34.4487 78.9308 35.0801 78.0889C36.9533 75.0792 29.692 76.6367 28.1767 76.2789C27.4611 76.4262 22.4308 75.9211 22.7465 76.5946C22.7044 77.3733 23.6094 78.3205 24.4092 78.3205C27.3348 78.3415 30.2603 78.3205 33.2069 78.3415C33.3753 78.3415 33.6068 78.3205 33.6279 78.5309C34.1119 79.4781 21.2943 78.0679 24.304 79.3728C24.4092 79.899 24.746 80.2989 25.1248 80.6356C25.188 80.6988 25.0827 80.9093 25.2932 80.8461C25.6931 81.0355 26.114 80.9303 26.535 80.9092C26.6613 81.0145 26.8086 80.9724 26.9559 80.8882ZM40.3208 81.5407C39.6052 81.6249 38.8896 81.2039 38.2372 81.688C38.1109 82.7824 39.6894 82.13 40.3208 82.2563C41.6468 82.6562 41.9204 83.1192 40.7207 84.3399C45.0985 84.3399 49.4553 84.3399 54.0014 84.3399C52.8859 82.8877 51.6652 82.0247 50.0656 81.4986C46.8244 81.5196 43.5621 81.5407 40.3208 81.5407ZM35.501 90.2752C35.5852 87.6654 34.1119 89.286 32.5124 89.0755C34.5539 91.0329 36.9322 92.5272 39.963 92.5062C45.2037 92.3168 50.4445 92.422 55.6852 92.4641C58.8633 92.7377 60.947 90.6961 63.4516 88.8019C55.3695 88.8019 47.4137 88.844 39.3527 88.7809C36.9743 88.5283 36.2587 91.2223 35.501 90.2752ZM67.3453 84.9924C66.6718 85.0345 66.1456 84.9082 65.9141 85.1187C64.7565 86.1289 63.3884 85.6449 62.1046 85.7922C60.3997 86.0026 58.8843 84.7609 57.1795 85.2449C55.7062 85.6659 54.3171 84.9503 52.8649 84.9713C48.7397 85.0345 44.6144 85.0766 40.5102 84.9713C39.4368 84.9503 38.8896 85.4765 38.3845 86.15C38.0267 86.6551 38.153 87.3918 38.3214 87.96C38.4476 88.4231 39.058 88.1915 39.4368 88.1915C47.3926 88.2126 55.3695 88.1915 63.3253 88.1915C64.8828 88.402 66.1245 86.15 67.3453 84.9924ZM37.3111 72.0274C32.1335 72.0274 26.9138 72.0274 21.7152 72.0274C21.2943 72.0274 20.7891 71.9642 21.0627 72.6798C21.631 73.5849 21.61 75.6264 22.8728 75.7527C26.7455 75.7317 30.6392 75.7527 34.5118 75.7317C34.8696 75.7317 35.8167 74.6583 35.7536 74.3215C35.7115 74.111 35.48 73.9006 35.3116 73.9637C34.4487 74.3426 33.6279 73.8795 32.7649 73.9006C29.8394 73.9848 26.8928 73.9427 23.9672 73.9216C23.6305 73.9216 23.2306 74.0689 22.8938 73.648C26.7244 73.2271 30.6602 73.5849 34.5329 73.5007C35.7326 73.5217 36.8481 73.5638 37.3111 72.0274ZM40.7207 67.6285C42.9938 67.376 45.1196 68.281 46.9927 66.934C48.0241 65.9869 48.7817 67.8601 49.9814 67.6496C58.295 67.7127 66.6086 67.5654 74.9222 67.6285C75.4695 67.6706 76.164 67.6075 76.143 66.9129C76.1851 66.7235 76.2271 66.4289 75.9325 66.4078C75.3221 66.3868 74.5644 66.1342 74.1014 66.492C73.3226 67.0813 72.6702 66.8919 71.9756 66.5341C64.6723 65.9869 57.1795 66.492 49.8131 66.3447C47.6031 66.4078 42.2782 65.9237 40.7207 67.6285ZM64.4197 69.9227C63.4937 70.1542 52.1493 69.3544 53.5173 70.4278C54.0435 70.8698 54.4224 71.4591 55.3274 71.4591C61.5363 71.417 67.7662 71.4381 73.9751 71.4591C74.9222 71.5854 75.28 70.9119 75.2169 70.1963C75.2379 69.6701 74.6697 69.9437 74.375 69.9437C71.0706 69.9016 67.7452 69.9227 64.4197 69.9227ZM64.7144 72.0274C61.6836 72.0274 58.6318 72.0274 55.601 72.0484C55.3274 72.0484 54.9275 71.8169 54.8223 72.301C54.9906 73.7743 56.9901 73.648 58.0635 73.5007C60.2945 73.4165 62.5255 73.4796 64.7565 73.4796C67.661 73.4796 70.5444 73.4375 73.4489 73.5007C74.3329 73.5217 74.4802 72.9324 74.4802 72.3852C74.4802 71.7327 73.8278 72.0484 73.5121 72.0484C70.5865 72.0274 67.661 72.0274 64.7144 72.0274ZM57.4111 73.9216C58.8002 74.8898 59.642 75.9211 61.431 75.7527C64.988 75.6896 68.545 75.7317 72.1019 75.7317C73.1964 75.9842 73.7646 75.1003 73.8278 74.1742C73.933 73.7743 73.4068 73.9216 73.1964 73.9216C67.9767 73.9216 62.7781 73.9216 57.4111 73.9216ZM40.1945 69.9227C33.7331 69.9227 27.2927 69.9227 20.8312 69.9227C20.5787 69.9227 20.1367 69.7964 20.2209 70.2384C20.1998 71.2065 20.6839 71.5854 21.6731 71.4381C26.7034 71.4381 31.7126 71.3539 36.7428 71.4802C38.2372 71.5223 39.1211 70.6383 40.1945 69.9227ZM50.1709 68.2389C50.5497 69.1229 51.139 69.3333 51.9599 69.3333C59.5368 69.3123 67.1138 69.3123 74.6907 69.3333C75.2379 69.3333 75.7431 69.2913 75.701 68.6177C75.6589 67.9232 75.0485 68.2599 74.7118 68.2389C66.5244 68.2179 58.3582 68.2389 50.1709 68.2389ZM25.5247 81.5196C26.6192 82.6772 26.8507 84.382 28.5134 84.4241C29.9236 84.0874 34.8696 85.1187 35.1643 83.7085C35.2906 83.0771 35.6063 81.5828 34.6171 81.5407C31.6705 81.5196 28.7239 81.5196 25.5247 81.5196ZM56.1903 92.9692C50.5497 92.9692 44.9091 92.9692 39.2685 92.9692C44.9091 95.2844 50.5497 95.3055 56.1903 92.9692ZM60.8207 76.2578C60.7786 76.342 60.7365 76.4262 60.6944 76.5315C61.5363 77.0366 61.8309 78.2573 63.0096 78.2784C65.7668 78.3205 68.5239 78.2994 71.2811 78.2994C71.8914 78.2994 72.9228 77.226 72.7754 76.5946C72.607 75.8579 71.9125 76.4052 71.4705 76.2789C67.9346 76.2158 64.3776 76.2789 60.8207 76.2578ZM67.3453 78.8045C66.0825 78.8045 64.8407 78.8045 63.5779 78.8045C63.3884 78.8045 63.0517 78.6362 63.1148 79.0992C63.199 79.7306 64.525 80.9724 65.1774 80.9724C67.2611 80.6777 70.2708 81.9195 71.3021 79.4781C71.5968 78.9519 71.5757 78.7625 70.9022 78.7625C69.7236 78.8256 68.545 78.8045 67.3453 78.8045ZM64.7565 64.4925C65.43 64.3452 69.3027 64.8714 69.1343 64.1558C69.1132 63.819 68.9659 63.6506 68.6081 63.6506C67.4716 63.9032 60.1261 63.1034 60.4418 64.1768C60.2735 64.8293 64.1461 64.3452 64.7565 64.4925ZM24.7039 67.5864C23.9672 66.3447 23.9672 66.3447 22.4939 66.3447C21.7362 66.3447 20.9575 66.3236 20.1998 66.3657C19.9052 66.3868 19.3369 66.0921 19.379 66.7867C19.4 67.3549 19.7157 67.9232 20.284 67.7969C21.7362 67.4812 23.1885 67.7759 24.7039 67.5864ZM37.9004 69.3123C40.1314 69.0808 42.4887 69.8806 44.404 68.8493C44.7407 68.723 44.6986 68.1547 44.2777 68.2599C42.173 68.4073 39.942 67.7127 37.9004 69.3123ZM21.631 63.6717C21.1259 63.819 18.6634 63.3139 18.8738 64.0505C18.9159 64.4083 19.1054 64.5136 19.4421 64.5136C20.2209 64.3241 24.5987 64.9345 24.4092 64.0926C24.3671 63.2507 22.2624 63.819 21.631 63.6717ZM20.8523 63.0403C21.3364 63.0403 21.8204 63.0613 22.3045 63.0192C22.5781 62.9982 23.1043 63.2928 23.1043 62.7035C23.1043 62.2826 22.7465 62.1984 22.3466 62.1984C21.7783 62.3457 18.3687 61.8406 18.6423 62.5562C18.8318 63.4612 20.1788 62.8719 20.8523 63.0403ZM72.1651 63.6506C73.049 65.1029 74.7328 64.3031 76.0798 64.4504C76.3113 64.4294 76.7954 64.6609 76.7323 64.0716C76.7112 63.2086 73.1332 63.8401 72.1651 63.6506ZM64.7565 63.0192C65.3879 62.8929 69.1343 63.3349 68.9869 62.7667C68.9869 62.3668 68.6923 62.1984 68.2714 62.1984C67.219 62.493 64.9249 61.5038 64.7565 63.0192ZM21.7573 65.1239C21.2732 65.2502 19.0212 64.8082 19.1685 65.4186C19.1685 66.1131 23.1254 65.587 23.8831 65.7343C24.0725 65.7343 24.3671 65.9658 24.4092 65.5238C24.4303 64.724 22.3256 65.2713 21.7573 65.1239ZM74.1645 60.241C74.7749 60.0937 77.1953 60.6199 77.1322 59.8622C76.9848 59.1887 75.4905 59.6517 74.9222 59.5044C74.4802 59.5044 74.2066 59.6938 74.1645 60.241ZM20.1788 59.5675C19.6526 59.6938 18.6002 59.2518 18.3898 59.8832C18.3687 60.1358 18.5371 60.241 18.7897 60.2621C19.5263 60.0937 22.2203 60.8514 22.094 59.9043C21.9678 59.2728 20.6839 59.6727 20.1788 59.5675ZM20.5576 61.567C20.9365 61.4828 22.5781 61.8406 22.4308 61.3144C22.4098 61.0408 22.2203 60.9145 21.9257 60.9145C21.168 61.0829 18.8528 60.5778 18.5371 61.1881C18.6423 61.9458 19.9683 61.3986 20.5576 61.567ZM54.8223 64.5767C55.2222 64.24 56.1482 64.8714 56.1693 64.1768C56.2114 63.3139 55.2643 63.6927 54.7591 63.6927C54.2961 63.6927 53.4121 63.2928 53.3911 63.9874C53.349 64.9135 54.3171 64.282 54.8223 64.5767ZM55.2432 65.7764C55.7273 65.587 56.5902 66.0079 56.5902 65.4607C56.5902 64.8082 55.7483 65.1871 55.2853 65.145C54.7802 65.1029 53.812 64.9135 53.833 65.3344C53.8751 66.1973 54.7802 65.4817 55.2432 65.7764ZM45.7931 35.3423C45.2669 34.3952 44.2987 33.848 43.6042 33.0482C44.0462 34.0584 44.7618 34.8582 45.7931 35.3423ZM34.8907 56.1158C34.9749 56.8103 35.0591 57.5049 35.1432 58.2205C35.2695 57.4838 35.3327 56.7682 34.8907 56.1158Z" fill="#004FA9"/> -<path d="M30.2818 24.8608C31.3341 24.6504 31.9445 24.1031 32.2812 23.0718H32.3023C32.4496 23.0929 32.5128 23.0297 32.5338 22.8824C32.5969 22.8193 32.6811 22.7772 32.7443 22.714C33.06 22.7351 33.3757 22.7351 33.3546 22.272C33.4809 22.2931 33.5651 22.2089 33.5862 22.1037C33.7124 22.0195 33.8177 21.9353 33.944 21.8511C34.5333 22.0826 34.9332 22.0405 34.8279 21.2618C34.9121 21.1986 34.9963 21.1565 35.0595 21.0934C35.1647 20.925 35.4173 21.0934 35.4804 20.8619C35.6488 20.8829 35.8171 20.8198 35.8803 20.6304C36.3223 20.6093 36.9537 20.8829 36.9537 20.041C37.1431 19.9569 37.3325 19.8516 37.522 19.7674C38.2376 20.2094 38.5743 19.7885 38.8269 19.1781C47.7508 15.1581 58.2533 17.9363 65.0516 24.6504C64.9674 25.4081 65.3041 25.7448 66.0618 25.6606C70.0187 29.6596 72.6496 34.4373 74.5438 39.678C75.6382 41.7827 79.3846 59.1044 76.1644 58.9782C74.5017 59.2307 73.4914 58.5783 72.9232 57.0839C70.9447 54.2005 73.7651 55.2318 74.0387 52.5588C73.9755 52.4746 73.9334 52.3904 73.8703 52.3062C73.8282 51.9905 73.9334 51.5485 73.3652 51.6538C72.7969 51.738 72.0813 51.5906 71.9761 52.4746C71.0921 52.7903 69.9976 52.1379 69.261 53.1481C68.2718 54.4741 69.6609 56.8314 67.9561 57.5891C67.3878 57.5049 65.0516 57.8837 65.0726 57.1471C64.9463 55.9053 63.9361 56.0526 62.9889 56.0737C58.9479 56.4736 61.4946 53.4217 59.7687 53.2113C58.7795 53.4428 56.9695 52.6219 56.5906 53.8637C56.2539 54.9161 55.875 55.9684 55.5172 57.0208C55.2436 57.7995 53.3073 58.2836 52.6969 57.7364C52.1497 56.9576 54.7806 52.8114 52.8863 53.1902C50.6974 53.3165 49.161 52.5588 48.5085 55.1476C48.0455 56.8945 47.0984 57.3365 46.5722 55.2739C46.7616 54.4741 47.7719 54.2005 47.814 53.2955C48.1086 53.3165 48.277 53.1902 48.2349 52.8745C49.9397 50.7698 51.1815 48.4125 51.855 45.7816C52.1286 45.5291 52.0865 45.2344 52.0024 44.9187C52.9284 44.2031 53.7703 45.5291 55.9592 44.3294C57.8745 43.4033 55.8329 40.5409 54.1492 40.7303C53.8545 40.5199 53.6651 40.2673 53.7072 39.8885C54.2754 38.5625 54.6332 38.352 55.9171 38.6256C58.8427 39.5727 59.895 36.8787 62.8627 38.352C64.4201 39.3623 69.9766 36.9419 67.0089 35.4265C64.2728 33.9321 60.1265 33.3428 58.6322 30.3331C58.4007 28.6493 57.8324 26.8814 58.8216 25.2186C59.9161 23.8506 59.5162 21.1986 57.5588 21.4302C54.6753 21.809 48.9084 22.5457 48.6769 26.271C48.7822 27.9758 46.2565 27.9548 45.0568 28.3126C44.5938 28.3757 44.1307 28.4388 44.0255 27.7653C42.9732 25.9132 38.5743 25.9342 37.3115 27.4917C36.7222 28.2494 36.0487 28.8808 35.3752 29.5333C33.8808 31.1539 39.2689 29.9121 39.9213 31.2381C39.8371 31.4696 39.753 31.6801 39.6898 31.9116C35.4173 34.2268 39.3531 35.8685 36.7853 36.2894C34.1755 36.8577 34.0281 36.0579 31.7761 35.4896C30.0713 35.1318 29.2084 35.5528 28.8716 37.2155C28.6822 39.1097 26.7879 38.6888 26.809 39.7411C26.8932 40.12 27.3141 40.0989 27.6088 40.0779C29.503 39.9516 31.3341 40.6461 33.2494 40.3304C33.6703 40.2673 34.1123 40.3304 34.407 40.6882C38.1744 45.2344 36.3223 41.6354 34.8069 48.3283C34.5543 49.8016 34.7437 51.2328 34.849 52.6851C34.87 53.0429 34.9753 53.3375 34.3438 53.4428C32.3654 53.8006 33.1231 57.8206 30.7237 57.3575C28.5769 57.1681 30.4501 55.4633 29.1873 54.5372C27.3562 53.4428 29.8819 49.1913 26.4722 50.854C24.3886 51.6117 24.3886 51.6117 24.4307 53.8216C24.4517 54.7267 24.5149 55.5054 23.4625 56.0737C22.326 56.4736 22.8521 59.0624 21.442 58.9992C17.6746 58.894 18.2639 59.8411 18.2218 55.9053C18.1797 48.2442 19.9897 40.5199 23.6309 33.7427C25.02 33.869 23.8834 32.6693 24.7885 31.7643C25.6935 31.7432 25.5462 31.0487 25.6093 30.5015C25.7356 30.4804 25.7987 30.4173 25.7566 30.2699L25.7777 30.2278C26.5985 30.3541 26.4301 29.7438 26.4722 29.2807C26.809 28.8598 27.1036 28.3757 27.4614 27.9758C27.6088 27.9758 27.693 27.8916 27.6719 27.7443L27.693 27.7232C28.1981 27.8285 28.1771 27.4917 28.156 27.155C28.6611 27.2181 28.8506 26.9866 28.7453 26.5025C28.8716 26.5025 28.9347 26.4183 28.9347 26.292L28.9558 26.271C29.0821 26.292 29.1663 26.2289 29.1452 26.0816L29.1663 26.0605C29.503 26.0605 29.6083 25.829 29.6503 25.5343C29.7345 25.4501 29.7977 25.387 29.8819 25.3028C30.1344 25.2397 30.2607 25.1134 30.2818 24.8608Z" fill="#F9FCFC"/> -<path d="M52.6749 62.9982C52.8223 63.2297 52.9065 63.4612 52.8854 63.7349C53.2432 65.3976 53.2853 65.4186 51.5174 65.4397C50.7176 65.4607 49.9388 65.3555 49.1601 65.2082H49.139C49.3705 64.9556 49.1601 64.7241 49.118 64.4715C49.1811 63.8611 48.7181 63.4192 48.5287 62.8719V62.893C48.5287 61.6722 47.0975 60.9145 47.0343 62.5773C46.1924 63.3139 45.6452 64.2189 45.3295 65.2923V65.2713C44.6981 65.9238 43.8141 66.2816 42.9933 66.5762C40.7202 65.7554 39.6257 68.6599 37.3948 68.8914C37.1001 68.8072 36.7423 68.9756 36.5318 68.6388C36.8475 68.6809 36.9738 68.5336 36.9738 68.2389C36.9738 67.6075 37.0159 66.9761 36.9949 66.3657C36.9738 65.587 35.7531 64.6399 35.1006 64.9977C34.1745 65.5239 33.8799 64.9977 33.5431 64.3242C32.9328 62.3878 31.6489 60.4305 29.6915 61.567C29.5021 61.6512 29.1022 61.6933 29.1864 61.988C29.5863 63.2508 29.0391 64.1558 28.3235 65.0819C27.7762 65.145 28.1761 65.4818 28.134 65.6922C28.113 66.5341 27.9025 67.376 28.134 68.2179C27.7341 68.9545 27.692 67.839 27.3974 68.0706C24.9559 67.4391 24.6823 67.376 24.7455 64.8293C24.9349 62.4299 22.5145 63.1876 22.5145 59.8201C22.4513 59.1676 23.0406 59.3992 23.3563 59.3992C26.0714 59.3992 28.7865 59.3992 31.5226 59.4202C35.3532 59.778 35.29 58.0311 35.8583 62.1563C35.8373 62.8719 36.6792 62.9982 36.9738 62.3668C37.5842 61.2513 38.5944 60.4515 39.289 59.4202C50.7386 59.3781 62.3145 59.5254 73.7852 59.4413C73.8694 60.0937 73.1117 60.3252 73.2169 60.9145C73.1959 60.9566 73.1959 60.9987 73.2169 61.0408C72.817 61.3355 72.5434 61.7143 72.354 62.1774C72.0383 62.3878 72.1646 62.7036 72.1646 62.9772C71.1122 64.0716 72.7328 64.6609 73.4274 65.3555C73.4484 65.9659 73.8273 66.8919 72.8591 66.4289C71.7015 65.8396 70.4387 65.6922 69.2601 65.2292C69.702 64.1137 69.6599 61.3565 68.0604 61.3355C67.45 61.5249 66.8607 61.2513 66.2503 61.1882C64.1035 60.7672 65.219 62.5983 63.8089 62.5562C61.7883 62.5141 59.3258 62.2195 59.8099 65.0819C59.2416 65.1029 58.6523 64.9135 58.1261 65.2713C57.8525 65.2923 57.5579 65.2923 57.2843 65.3134C57.0106 64.9977 57.2843 64.3873 56.6949 64.261C56.1267 63.356 56.0635 60.5988 54.7586 60.7462C53.0117 60.8935 51.3279 60.4726 52.6749 62.7877C52.5697 62.8509 52.4855 62.893 52.6749 62.9982Z" fill="#F9FCFC"/> -<path d="M35.5024 90.2752C36.239 91.2223 37.0178 88.5283 39.375 88.7808C47.4361 88.844 55.3919 88.8019 63.4529 88.8019C60.9483 90.6961 58.8857 92.7377 55.6865 92.4641C50.4458 92.422 45.2051 92.3168 39.9643 92.5062C36.9125 92.5272 34.5552 91.0329 32.5137 89.0755C33.987 88.9282 34.892 88.7808 35.5024 90.2752Z" fill="#F9FCFC"/> -<path d="M67.3447 84.9924C66.145 86.1499 64.8611 88.423 63.3247 88.1915C55.3689 88.1915 47.392 88.2126 39.4362 88.1915C39.0574 88.1915 38.447 88.4441 38.3207 87.96C38.1524 87.3917 38.0261 86.6551 38.3839 86.1499C38.868 85.4764 39.4362 84.9503 40.5096 84.9713C44.6349 85.0765 48.7601 85.0345 52.8643 84.9713C54.3165 84.9503 55.7056 85.6659 57.1789 85.2449C58.8837 84.7398 60.3991 85.9816 62.104 85.7921C63.3878 85.6448 64.7559 86.1289 65.9135 85.1186C66.145 84.9082 66.6922 85.0344 67.3447 84.9924Z" fill="#F9FCFC"/> -<path d="M37.3104 72.0274C36.8473 73.5638 35.7318 73.5007 34.5322 73.4796C30.6595 73.5638 26.7237 73.206 22.8931 73.627C23.2088 74.069 23.6298 73.9006 23.9665 73.9006C27.755 73.8374 31.5856 74.0269 35.3109 73.9427C36.4474 74.0058 35.0162 75.6685 34.5111 75.7106C30.6384 75.7106 26.7658 75.7106 22.8721 75.7317C21.6092 75.6054 21.6513 73.5638 21.062 72.6588C20.7884 71.9643 21.2935 72.0064 21.7145 72.0064C24.3243 72.0064 26.9552 72.0064 29.565 72.0064C32.1538 72.0274 34.7426 72.0274 37.3104 72.0274Z" fill="#BCD5F6"/> -<path d="M40.7207 67.6285C42.2361 65.9237 47.6452 66.3868 49.8341 66.3657C57.2006 66.5131 64.6933 66.0079 71.9967 66.5552C72.6912 66.913 73.3437 67.1024 74.1224 66.5131C74.5855 66.1553 75.3432 66.3868 75.9535 66.4289C76.2482 66.4499 76.1851 66.7446 76.164 66.934C76.164 67.6285 75.5115 67.7127 74.9433 67.6496C66.6297 67.5865 58.3161 67.7338 50.0025 67.6706C48.8028 67.8811 48.0451 66.0079 47.0138 66.955C45.0985 68.281 42.9938 67.376 40.7207 67.6285Z" fill="#BCD5F6"/> -<path d="M24.2629 79.3518C21.2532 78.0258 34.0709 79.436 33.5868 78.5099C33.5657 78.2994 33.3342 78.3205 33.1658 78.2994C30.2403 78.2784 27.3147 78.2994 24.3681 78.2784C23.5684 78.2784 22.6633 77.3313 22.7054 76.5525C22.3687 75.9001 27.4621 76.3842 28.1356 76.2368C29.651 76.5946 36.8912 75.0371 35.039 78.0469C34.8285 78.4257 34.6391 78.5309 34.9548 79.015C35.2074 79.4149 35.0601 80.0884 35.039 80.6567C35.0811 81.246 32.9554 80.9513 32.5134 80.8882C31.924 80.2357 30.998 80.9724 30.3876 80.3199C31.5242 80.5094 32.787 79.5622 33.8183 80.7409C33.9025 80.8251 34.134 80.7619 34.155 80.6146C34.1971 80.2357 34.7233 80.0042 34.5549 79.5833C34.4076 79.2044 33.9867 79.436 33.7131 79.3097C33.3132 79.1203 32.8922 79.1413 32.4923 79.1413C30.5349 79.1413 28.5986 79.1413 26.6412 79.1413C25.8625 79.1624 25.0206 78.7414 24.2629 79.3518Z" fill="#BCD5F6"/> -<path d="M40.7418 81.5406C43.9199 81.7301 47.1822 81.8564 50.4024 81.6669C51.8968 82.0668 52.9491 83.056 53.9804 84.3399C49.4553 84.3399 45.0985 84.3399 40.6997 84.3399C41.7731 83.1402 41.731 82.8666 40.5103 82.2983C40.4682 82.1721 40.384 82.151 40.2998 82.2563C39.6684 82.1089 38.0899 82.7824 38.2161 81.688C38.9317 81.7722 39.6052 81.6038 40.2998 81.5406C40.4682 81.7301 40.6155 81.709 40.7418 81.5406Z" fill="#F9FCFC"/> -<path d="M64.4187 69.9227C67.7441 69.9227 71.0485 69.9227 74.3739 69.9437C74.6686 69.9437 75.2369 69.6701 75.2158 70.1963C75.2579 70.9119 74.9422 71.5854 73.974 71.4591C67.7652 71.4591 61.5352 71.417 55.3263 71.4591C54.4213 71.4591 54.0635 70.8698 53.5163 70.4278C52.1482 69.3544 63.5347 70.1331 64.4187 69.9227Z" fill="#BCD5F6"/> -<path d="M64.7144 72.0274C67.6399 72.0274 70.5865 72.0063 73.5121 72.0484C73.8488 72.0484 74.5013 71.7327 74.4803 72.3852C74.4803 72.9324 74.3329 73.5217 73.4489 73.5007C70.5444 73.4375 67.661 73.4796 64.7565 73.4796C62.5255 73.4796 60.2945 73.4165 58.0635 73.5007C56.9901 73.627 54.9906 73.7743 54.8223 72.301C54.9275 71.8379 55.3484 72.0484 55.601 72.0484C58.6528 72.0274 61.6836 72.0274 64.7144 72.0274Z" fill="#BCD5F6"/> -<path d="M57.4102 73.9216C62.7982 73.9216 67.9968 73.9216 73.1955 73.9427C73.427 73.9427 73.9321 73.7953 73.8269 74.1952C73.7638 75.1213 73.1955 76.0053 72.101 75.7527C68.5441 75.7527 64.9871 75.7106 61.4302 75.7737C59.6201 75.9211 58.7993 74.8898 57.4102 73.9216Z" fill="#BCD5F6"/> -<path d="M40.1956 69.9227C39.1222 70.6383 38.2382 71.5223 36.7649 71.4802C31.7346 71.3539 26.7254 71.4381 21.6952 71.4381C20.706 71.5854 20.2008 71.2066 20.2429 70.2384C20.1587 69.7964 20.6007 69.9227 20.8533 69.9227C27.2937 69.9227 33.7552 69.9227 40.1956 69.9227Z" fill="#BCD5F6"/> -<path d="M50.1719 68.2389C58.3802 68.2389 66.5255 68.2178 74.7128 68.2599C75.0495 68.2599 75.6599 67.9442 75.702 68.6388C75.7441 69.3123 75.239 69.3544 74.6917 69.3544C67.1148 69.3333 59.5378 69.3333 51.9609 69.3544C51.14 69.3333 50.5507 69.1229 50.1719 68.2389Z" fill="#BCD5F6"/> -<path d="M25.5254 81.5196C28.7245 81.5196 31.6711 81.5196 34.6177 81.5196C35.628 81.5617 35.2912 83.056 35.165 83.6874C34.8703 85.0976 29.9032 84.0873 28.5141 84.403C26.8303 84.382 26.6198 82.6982 25.5254 81.5196Z" fill="#F9FCFC"/> -<path d="M56.1914 92.9692C50.5508 95.3055 44.9102 95.2844 39.2695 92.9692C44.9102 92.9692 50.5508 92.9692 56.1914 92.9692Z" fill="#F9FCFC"/> -<path d="M60.8216 76.2578C64.3575 76.2789 67.9355 76.2157 71.4714 76.2789C71.9134 76.4052 72.608 75.879 72.7764 76.5946C72.9237 77.226 71.8924 78.2994 71.282 78.2994C68.5248 78.2994 65.7677 78.3204 63.0105 78.2783C61.8319 78.2573 61.5582 77.0155 60.6953 76.5314C60.7585 76.4262 60.7795 76.342 60.8216 76.2578Z" fill="#BCD5F6"/> -<path d="M36.5524 68.6599C36.7629 68.9966 37.1417 68.8072 37.4153 68.9124C36.9944 69.3334 36.4051 69.2913 35.921 69.2913C30.8276 69.3334 25.7552 69.3123 20.6618 69.3334C20.2409 69.3334 19.9041 69.3123 19.8199 68.7862C19.7779 68.4494 19.7989 68.2389 20.1988 68.26C22.3877 68.3021 24.5766 68.1337 26.7655 68.3652C27.0601 68.4073 27.3127 68.5336 27.4179 68.1127C27.7126 67.8811 27.7547 68.9756 28.1546 68.26C30.6171 68.26 33.1007 68.2389 35.5632 68.26C35.8999 68.26 36.4682 67.9653 36.5524 68.6599Z" fill="#BCD5F6"/> -<path d="M67.3453 78.8046C68.5239 78.8046 69.7025 78.8256 70.9022 78.8046C71.5757 78.7835 71.5968 78.994 71.3021 79.5202C70.2919 81.9617 67.2821 80.7199 65.1774 81.0145C64.525 81.0145 63.199 79.7727 63.1148 79.1413C63.0517 78.6572 63.4095 78.8467 63.5778 78.8467C64.8407 78.7835 66.1035 78.8046 67.3453 78.8046Z" fill="#BCD5F6"/> -<path d="M24.2617 79.3518C25.0194 78.7414 25.8613 79.1623 26.6821 79.1623C28.6395 79.1834 30.5758 79.1623 32.5332 79.1623C32.9542 79.1623 33.3751 79.1202 33.754 79.3307C34.0276 79.457 34.4485 79.2465 34.5958 79.6043C34.7642 80.0253 34.238 80.2568 34.1959 80.6356C34.1749 80.783 33.9434 80.8461 33.8592 80.7619C32.8279 79.5833 31.5651 80.5304 30.4285 80.341C31.0389 80.9724 31.965 80.2357 32.5543 80.9093C30.5548 81.0355 28.4711 80.9093 26.5348 80.9093C25.4404 81.225 24.5353 80.3831 24.2617 79.3518Z" fill="#F9FCFC"/> -<path d="M33.8388 88.1705C31.4816 88.7598 30.1135 87.2444 28.7665 85.7501C28.5981 85.5817 28.535 85.3923 28.6192 85.1818C28.7033 84.9082 28.977 85.0134 29.1664 85.0134C30.6607 85.0134 32.1551 85.0345 33.6494 85.0345C33.6494 85.4133 33.9651 85.4344 34.1966 85.5396C34.4702 85.6448 34.7228 85.8553 34.6176 86.15C34.3861 86.8445 34.7649 87.497 34.6597 88.1705C34.5123 88.1705 34.3861 88.1705 34.2387 88.1915C34.1124 87.9811 33.9651 87.9811 33.8388 88.1705Z" fill="#F9FCFC"/> -<path d="M40.1306 80.8883C39.5623 80.8883 38.9941 80.8883 38.4258 80.8883C38.3837 80.8251 38.3416 80.8041 38.2785 80.8251C38.0259 80.1516 38.3626 79.8148 38.9309 79.6044C40.2358 80.0885 42.1932 78.2994 43.2877 79.2676C44.4663 80.6357 48.0654 78.6362 47.8549 80.8883C45.2871 80.9724 42.6983 80.9724 40.1306 80.8883Z" fill="#F9FCFC"/> -<path d="M44.2564 44.14C43.7723 45.0871 44.3406 46.0132 44.3616 46.9603C44.3826 48.5599 44.5721 50.1384 44.6563 51.738C44.6773 51.9906 44.8457 52.3484 44.5089 52.4536C43.6881 52.7903 43.1409 51.4012 42.2569 52.0116C41.857 50.0121 43.2461 48.2442 43.7512 46.4131C44.1932 45.2134 43.7302 43.9295 44.0038 42.6667C44.2143 43.1718 43.8986 43.719 44.2564 44.14Z" fill="#F9FCFC"/> -<path d="M69.6816 81.8985C67.5138 85.0134 67.156 85.5607 65.2617 81.9195C66.735 81.5407 68.2083 81.5617 69.6816 81.8985Z" fill="#F9FCFC"/> -<path d="M47.8556 80.8882C48.024 78.6151 44.4881 80.6567 43.2884 79.2676C42.1939 78.2994 40.2366 80.0885 38.9316 79.6044C39.7104 78.11 44.2776 79.015 45.9193 78.8046C48.2345 78.8256 47.6662 80.2779 49.1605 80.8041C48.6765 81.0987 48.2766 80.9935 47.8556 80.8882Z" fill="#BCD5F6"/> -<path d="M64.7559 64.4925C64.1035 64.3452 60.294 64.8503 60.4623 64.1768C60.1256 63.1245 67.5131 63.9032 68.6286 63.6507C68.9864 63.6507 69.1337 63.819 69.1548 64.1558C69.3442 64.8503 65.4084 64.3242 64.7559 64.4925Z" fill="#BCD5F6"/> -<path d="M24.7044 67.5864C23.168 67.7548 21.7157 67.4602 20.2845 67.7759C19.7162 67.9022 19.4005 67.3339 19.3795 66.7656C19.3584 66.0921 19.9057 66.3657 20.2003 66.3447C20.958 66.3026 21.7157 66.3236 22.4945 66.3236C23.9678 66.3447 23.9678 66.3447 24.7044 67.5864Z" fill="#BCD5F6"/> -<path d="M37.9004 69.3123C39.942 67.7128 42.173 68.4073 44.2777 68.26C44.6986 68.1547 44.7407 68.702 44.4039 68.8493C42.4887 69.8596 40.1314 69.0808 37.9004 69.3123Z" fill="#BCD5F6"/> -<path d="M69.2816 65.2082V65.2713C69.1132 66.3026 61.5783 65.5239 60.084 65.7554C60.2313 65.3765 60.3997 65.145 60.8417 65.145C63.662 65.1661 66.4823 65.0187 69.2816 65.2082Z" fill="#BCD5F6"/> -<path d="M21.6305 63.6717C22.2619 63.84 24.3666 63.2718 24.3876 64.0926C24.5771 64.9345 20.1993 64.3241 19.4205 64.5135C19.0838 64.5135 18.8943 64.4083 18.8522 64.0505C18.6628 63.3139 21.1043 63.7979 21.6305 63.6717Z" fill="#BCD5F6"/> -<path d="M72.1871 62.9982C72.2082 62.7246 72.0819 62.4089 72.3766 62.1984C73.0922 62.3668 77.1542 61.7985 76.8385 62.6825C76.8385 63.3139 76.3545 63.0192 76.1229 63.0192C74.818 63.0402 73.5131 62.9982 72.1871 62.9982Z" fill="#BCD5F6"/> -<path d="M44.2577 44.14C43.8789 43.7191 44.2156 43.1929 44.0052 42.6667C43.7316 43.9506 44.1946 45.2134 43.7526 46.4131C43.921 43.7401 42.9949 38.794 45.4364 37.0682C43.942 39.2781 44.2998 41.7406 44.2577 44.14Z" fill="#BCD5F6"/> -<path d="M20.8521 63.0403C20.1785 62.8719 18.8315 63.4612 18.6211 62.5562C18.3475 61.8406 21.7571 62.3457 22.3254 62.1984C22.7252 62.1984 23.083 62.2826 23.083 62.7035C23.083 63.2928 22.5779 62.9771 22.2833 63.0192C21.8202 63.0613 21.3361 63.0403 20.8521 63.0403Z" fill="#BCD5F6"/> -<path d="M72.166 63.6507C73.1342 63.8401 76.6911 63.1876 76.7543 64.0926C76.8174 64.6609 76.3333 64.4504 76.1018 64.4715C74.7338 64.3242 73.071 65.1029 72.166 63.6507Z" fill="#BCD5F6"/> -<path d="M42.1519 51.6117C42.2782 54.3268 40.6786 56.8735 39.8788 59.4202C39.6894 59.357 39.5 59.3149 39.3105 59.4412C40.5102 56.9366 41.3311 54.2636 42.1519 51.6117Z" fill="#BCD5F6"/> -<path d="M64.7559 63.0192C64.9242 61.5039 67.2184 62.472 68.2707 62.1984C68.6917 62.1984 69.0074 62.3668 68.9863 62.7667C69.1547 63.3349 65.3873 62.893 64.7559 63.0192Z" fill="#BCD5F6"/> -<path d="M21.7573 65.124C22.3466 65.2713 24.4302 64.7241 24.3881 65.5239C24.3671 65.9658 24.0724 65.7343 23.862 65.7343C23.0832 65.587 19.1685 66.1132 19.1474 65.4186C19.0001 64.8083 21.2942 65.2292 21.7573 65.124Z" fill="#BCD5F6"/> -<path d="M74.1641 60.241C74.2062 59.6938 74.4798 59.5044 74.9218 59.5044C75.49 59.6307 76.9844 59.1676 77.1317 59.8622C77.2159 60.6409 74.7744 60.0937 74.1641 60.241Z" fill="#BCD5F6"/> -<path d="M20.1792 59.5675C20.6843 59.6728 21.9471 59.2729 22.0734 59.8832C22.2418 60.8303 19.5057 60.0726 18.769 60.241C18.5375 60.22 18.3691 60.1358 18.3691 59.8622C18.6217 59.2518 19.653 59.6728 20.1792 59.5675Z" fill="#BCD5F6"/> -<path d="M49.1396 65.2292C49.1396 65.2292 49.1606 65.2081 49.1396 65.2292C49.2869 65.3976 49.3711 65.6712 49.0765 65.6712C48.1714 65.608 45.6879 66.1342 45.3301 65.3134C46.614 64.9977 47.8768 65.0608 49.1396 65.2292Z" fill="#BCD5F6"/> -<path d="M20.5576 61.567C19.9683 61.4196 18.6634 61.9668 18.5371 61.1881C18.8318 60.5778 21.168 61.0829 21.9257 60.9145C22.2204 60.9145 22.4098 61.0408 22.4308 61.3144C22.5782 61.8406 20.9154 61.4828 20.5576 61.567Z" fill="#BCD5F6"/> -<path d="M52.6757 62.9982C52.4863 62.8929 52.5915 62.8298 52.7178 62.7877C53.1177 62.2826 55.7696 61.588 55.7486 62.7666C55.6854 63.3349 53.2439 62.8719 52.6757 62.9982Z" fill="#BCD5F6"/> -<path d="M73.2581 61.0619C73.216 61.0198 73.216 60.9777 73.2581 60.9356C73.8895 61.0619 77.0256 60.5568 77.0045 61.2092C77.0466 61.6512 76.6888 61.588 76.4152 61.588C75.6786 61.3776 73.2371 62.0511 73.2581 61.0619Z" fill="#BCD5F6"/> -<path d="M54.8232 64.5767C54.318 64.2821 53.3499 64.9135 53.392 64.0085C53.413 63.2929 54.297 63.7138 54.76 63.7138C55.2651 63.7138 56.2123 63.335 56.1702 64.1979C56.1491 64.8714 55.223 64.24 54.8232 64.5767Z" fill="#BCD5F6"/> -<path d="M73.4492 65.7343C73.4492 65.608 73.4492 65.5028 73.4492 65.3765C74.4174 64.7872 75.4276 65.3133 76.6905 65.0608C75.6171 66.3236 74.5016 65.8816 73.4492 65.7343Z" fill="#BCD5F6"/> -<path d="M50.4237 81.6669C47.435 81.7932 44.3411 81.7932 41.3945 81.5407C44.3622 81.688 47.5192 81.2039 50.4237 81.6669Z" fill="#BCD5F6"/> -<path d="M52.7811 44.6872C52.4654 44.5399 52.276 44.8346 52.0234 44.9398C52.1497 43.8874 52.3391 42.8351 52.297 41.7617C52.276 41.3618 52.3391 40.9829 52.8443 40.9198C52.9285 40.9829 52.9916 41.0671 53.0758 41.1303C52.718 42.3089 52.4444 43.4665 52.7811 44.6872Z" fill="#BCD5F6"/> -<path d="M39.709 31.9537C39.7932 31.7222 39.8774 31.5117 39.9405 31.2802C40.8245 31.2802 43.6869 31.4486 43.3922 32.8377C42.2767 32.1431 41.1191 31.4486 39.709 31.9537Z" fill="#BCD5F6"/> -<path d="M55.2425 65.7764C54.8005 65.4817 53.8745 66.1973 53.8324 65.3344C53.8113 64.9135 54.7795 65.1029 55.2846 65.145C55.7477 65.166 56.5895 64.7872 56.5895 65.4607C56.5895 66.0079 55.7266 65.587 55.2425 65.7764Z" fill="#BCD5F6"/> -<path d="M45.7924 35.3423C44.7401 34.8582 44.0455 34.0795 43.6035 33.0482C44.2981 33.8479 45.2662 34.3952 45.7924 35.3423Z" fill="#BCD5F6"/> -<path d="M34.6577 88.1705C34.763 87.497 34.3631 86.8446 34.6157 86.15C34.7209 85.8554 34.4683 85.6449 34.1947 85.5397C33.9421 85.4344 33.6264 85.4134 33.6475 85.0345C34.5104 84.782 34.9103 85.0977 34.8261 86.0027C34.7419 86.7183 35.1839 87.476 34.6577 88.1705Z" fill="#BCD5F6"/> -<path d="M69.2812 53.1481C69.9548 52.2431 70.944 52.6219 71.8279 52.5588C71.0913 53.2533 70.1652 53.085 69.2812 53.1481Z" fill="#BCD5F6"/> -<path d="M68.8605 56.5157C69.0079 55.5265 68.5659 54.4952 69.1131 53.548C69.2183 54.5583 69.4078 55.5686 68.8605 56.5157Z" fill="#BCD5F6"/> -<path d="M69.6803 81.8984C68.207 81.5617 66.7337 81.5406 65.2604 81.9195C64.2502 81.0566 69.0489 81.6459 69.533 81.4986C69.8487 81.4986 70.0171 81.6038 69.6803 81.8984Z" fill="#BCD5F6"/> -<path d="M71.9766 52.4746C72.0818 51.5907 72.7974 51.738 73.3657 51.6538C73.9129 51.5696 73.8287 51.9905 73.8708 52.3063C73.2183 52.0747 72.608 52.2431 71.9766 52.4746Z" fill="#BCD5F6"/> -<path d="M47.8351 53.3165C47.793 54.2005 46.7617 54.4741 46.5933 55.295C45.6673 54.5162 47.3931 53.9058 47.8351 53.3165Z" fill="#BCD5F6"/> -<path d="M32.281 23.0718C31.9021 23.9137 31.5022 24.7556 30.3867 24.7556C30.9129 24.0821 31.5654 23.5559 32.281 23.0718Z" fill="#BCD5F6"/> -<path d="M35.5017 90.2752C35.1229 89.6859 34.9124 88.9282 33.9863 88.9914C35.2702 88.5073 35.4386 88.6546 35.5017 90.2752Z" fill="#BCD5F6"/> -<path d="M34.8906 56.1158C35.3326 56.7682 35.2695 57.4838 35.1432 58.2205C35.08 57.5049 34.9748 56.8103 34.8906 56.1158Z" fill="#BCD5F6"/> -<path d="M66.062 25.6817C65.3043 25.7659 64.9675 25.4291 65.0517 24.6714C65.5147 24.8819 65.7883 25.2818 66.062 25.6817Z" fill="#BCD5F6"/> -<path d="M24.3881 32.3747C24.1776 32.8377 24.8722 33.8269 23.6094 33.7007C23.8198 33.2166 23.9882 32.7325 24.3881 32.3747Z" fill="#BCD5F6"/> -<path d="M53.7277 39.9095C53.6856 40.2884 53.8751 40.541 54.1697 40.7514C53.7909 40.8146 53.391 40.8356 53.0753 41.1303C52.9911 41.0671 52.9279 40.9829 52.8438 40.9198C53.1384 40.5831 53.4331 40.2463 53.7277 39.9095Z" fill="#BCD5F6"/> -<path d="M25.5865 30.4594C25.5233 31.0277 25.6706 31.7222 24.7656 31.7222C24.9761 31.2382 25.2076 30.8172 25.5865 30.4594Z" fill="#BCD5F6"/> -<path d="M38.8264 19.136C38.5738 19.7464 38.2371 20.1674 37.5215 19.7254C37.9214 19.4307 38.3423 19.1992 38.8264 19.136Z" fill="#BCD5F6"/> -<path d="M34.8488 21.2197C34.933 21.9985 34.5331 22.0406 33.9648 21.809C34.1964 21.5354 34.491 21.325 34.8488 21.2197Z" fill="#BCD5F6"/> -<path d="M26.4719 29.2176C26.4509 29.6806 26.6192 30.2699 25.7773 30.1647C25.9247 29.7859 26.1562 29.4702 26.4719 29.2176Z" fill="#BCD5F6"/> -<path d="M36.9757 19.999C36.9757 20.8408 36.3443 20.5672 35.9023 20.5883C36.197 20.2936 36.5548 20.1042 36.9757 19.999Z" fill="#BCD5F6"/> -<path d="M58.1484 65.2923C58.6746 64.9556 59.2639 65.124 59.8322 65.1029C59.306 65.4397 58.7167 65.2923 58.1484 65.2923Z" fill="#BCD5F6"/> -<path d="M56.7168 64.282C57.3061 64.4294 57.0325 65.0397 57.3061 65.3344C56.7378 65.1871 56.8431 64.6609 56.7168 64.282Z" fill="#BCD5F6"/> -<path d="M59.8311 65.124C59.8732 64.5767 59.6837 63.9874 59.9994 63.4612C60.0626 64.0295 60.2099 64.5978 59.8311 65.124Z" fill="#BCD5F6"/> -<path d="M39.9205 81.5407C39.3944 81.8353 38.805 81.6459 38.2578 81.688C38.7629 81.2881 39.3523 81.5407 39.9205 81.5407Z" fill="#BCD5F6"/> -<path d="M28.7241 26.4604C28.8293 26.9445 28.6399 27.176 28.1348 27.1129C28.261 26.8182 28.4505 26.5867 28.7241 26.4604Z" fill="#BCD5F6"/> -<path d="M28.1349 27.1129C28.1349 27.4286 28.156 27.7654 27.6719 27.6812C27.735 27.4076 27.9034 27.2392 28.1349 27.1129Z" fill="#BCD5F6"/> -<path d="M29.6501 25.4712C29.608 25.7659 29.5028 25.9974 29.166 25.9974C29.2292 25.7448 29.2502 25.4291 29.6501 25.4712Z" fill="#BCD5F6"/> -<path d="M33.3545 22.251C33.3966 22.7141 33.0809 22.7141 32.7441 22.693C32.8704 22.4615 33.0809 22.2931 33.3545 22.251Z" fill="#BCD5F6"/> -<path d="M48.2549 52.8956C48.297 53.2113 48.1286 53.3375 47.834 53.3165C47.8971 53.085 48.0234 52.9377 48.2549 52.8956Z" fill="#BCD5F6"/> -<path d="M52.0234 44.9398C52.0865 45.2555 52.1497 45.5501 51.8761 45.8027C51.8761 45.508 51.8129 45.1923 52.0234 44.9398Z" fill="#BCD5F6"/> -<path d="M30.2827 24.8608C30.2617 25.1134 30.1354 25.2397 29.8828 25.2397C29.946 25.0503 30.0722 24.924 30.2827 24.8608Z" fill="#BCD5F6"/> -<path d="M25.1035 80.6356C25.1667 80.6988 25.2298 80.7829 25.2719 80.8461C25.0404 80.9092 25.1667 80.6988 25.1035 80.6356Z" fill="#BCD5F6"/> -<path d="M26.5137 80.8882C26.661 80.783 26.8083 80.783 26.9557 80.8882C26.8083 80.9724 26.661 81.0145 26.5137 80.8882Z" fill="#BCD5F6"/> -<path d="M40.7432 81.5406C40.5959 81.7091 40.4696 81.7301 40.3223 81.5406C40.4696 81.5406 40.6169 81.5406 40.7432 81.5406Z" fill="#BCD5F6"/> -<path d="M33.8379 88.1705C33.9642 87.9811 34.1115 87.9811 34.2378 88.1705C34.1115 88.1705 33.9642 88.1705 33.8379 88.1705Z" fill="#BCD5F6"/> -<path d="M35.8999 20.5883C35.8368 20.7777 35.6894 20.8619 35.5 20.8198C35.5842 20.6515 35.7105 20.5883 35.8999 20.5883Z" fill="#BCD5F6"/> -<path d="M52.8848 63.7769V63.7348C52.9479 63.7348 53.011 63.7348 53.0742 63.7348C52.99 63.7559 52.9269 63.7559 52.8848 63.7769Z" fill="#BCD5F6"/> -<path d="M73.8926 52.3273C73.9347 52.4115 73.9978 52.4747 74.0399 52.5588C73.9978 52.4747 73.9347 52.3905 73.8926 52.3273Z" fill="#BCD5F6"/> -<path d="M25.7548 30.2068C25.7968 30.3331 25.7548 30.4173 25.6074 30.4383C25.6495 30.3752 25.6916 30.291 25.7548 30.2068Z" fill="#BCD5F6"/> -<path d="M27.2929 28.1232C27.2298 28.2074 27.1667 28.2915 27.1035 28.3757C27.1667 28.2705 27.2298 28.2074 27.2929 28.1232Z" fill="#BCD5F6"/> -<path d="M27.6714 27.7022C27.6925 27.8495 27.6083 27.9337 27.4609 27.9337C27.5241 27.8495 27.5872 27.7654 27.6714 27.7022Z" fill="#BCD5F6"/> -<path d="M38.2793 80.8461C38.3424 80.825 38.4056 80.8461 38.4266 80.9092C38.3214 81.0145 38.3003 80.9513 38.2793 80.8461Z" fill="#BCD5F6"/> -<path d="M40.1309 80.8882C40.194 80.8882 40.2361 80.8882 40.2992 80.8882L40.215 80.9303L40.1309 80.8882Z" fill="#BCD5F6"/> -<path d="M28.914 26.2289C28.9351 26.3763 28.8719 26.4394 28.7246 26.4394C28.8088 26.3763 28.8719 26.3131 28.914 26.2289Z" fill="#BCD5F6"/> -<path d="M29.125 26.0395C29.146 26.1868 29.0829 26.2289 28.9355 26.2289C28.9987 26.1447 29.0618 26.0816 29.125 26.0395Z" fill="#BCD5F6"/> -<path d="M40.3223 82.2773C40.4065 82.1721 40.4696 82.1932 40.5327 82.3194C40.4696 82.2984 40.4065 82.2773 40.3223 82.2773Z" fill="#BCD5F6"/> -<path d="M32.5343 22.8824C32.5132 23.0298 32.4501 23.0929 32.3027 23.0719C32.3869 23.0087 32.4501 22.9456 32.5343 22.8824Z" fill="#BCD5F6"/> -<path d="M33.6085 22.0826C33.5664 22.2089 33.5032 22.2721 33.377 22.251C33.4401 22.1879 33.5243 22.1458 33.6085 22.0826Z" fill="#BCD5F6"/> -<path d="M35.0811 21.0724C34.9969 21.1355 34.9127 21.1776 34.8496 21.2408C34.9338 21.1776 35.018 21.1145 35.0811 21.0724Z" fill="#BCD5F6"/> -<path d="M35.5017 20.8198C35.4386 20.9461 35.3544 21.0092 35.207 20.9672C35.3123 20.9251 35.3965 20.883 35.5017 20.8198Z" fill="#BCD5F6"/> -<path d="M53.0746 41.1303C54.8847 39.5517 58.2733 43.0666 55.9791 44.3505C54.9689 44.8135 53.8955 45.1503 52.78 44.6872C52.4432 43.4665 52.7168 42.3089 53.0746 41.1303Z" fill="#004FA9"/> -<path d="M36.5537 68.6598C36.4695 67.9653 35.9012 68.2599 35.5645 68.2599C33.1019 68.2389 30.6394 68.2599 28.1559 68.2599C27.9244 67.418 28.1138 66.5762 28.1559 65.7343C30.1133 65.7343 32.0706 65.7343 34.028 65.7343C34.028 65.629 34.0491 65.5238 34.0491 65.4186C32.1969 64.7451 30.2395 65.3133 28.3453 65.1029C29.0609 64.1768 29.6081 63.2718 29.2082 62.0089C29.124 61.7143 29.5239 61.6722 29.7134 61.588C31.2288 60.8934 31.9233 61.2091 32.9967 63.0192C32.9967 63.4612 33.0809 63.8611 32.3442 63.6927C31.3129 63.7138 29.5239 63.1455 29.3977 64.6609C30.8289 64.6819 32.218 64.7661 33.565 64.3452C33.8807 64.9976 34.1753 65.5238 35.1225 65.0187C35.7749 64.6609 36.9957 65.608 37.0167 66.3867C37.0377 67.0181 36.9957 67.6496 36.9957 68.2599C36.9957 68.5546 36.8694 68.723 36.5537 68.6598ZM32.4916 67.6285C33.2703 67.4391 36.9536 68.1547 36.5958 67.0392C36.5747 66.5762 36.5747 66.3446 36.0275 66.3446C33.7123 66.3657 31.4182 66.3657 29.103 66.3446C28.661 66.3446 28.4926 66.492 28.4926 66.955C28.3032 68.2389 31.6076 67.397 32.4916 67.6285ZM30.913 63.0402C31.2288 62.9771 32.3653 63.2297 32.3232 62.8087C32.3442 61.8827 30.9972 62.2615 30.3869 62.2194C30.0922 62.2405 29.6081 61.9879 29.6081 62.5983C29.6502 63.2928 30.4711 62.9561 30.913 63.0402Z" fill="#004FA9"/> -<path d="M49.1396 65.2292C47.8768 65.0608 46.5929 64.9976 45.3301 65.3344C45.6247 64.261 46.193 63.356 47.0349 62.6193L47.0138 62.5983C47.3716 63.4402 47.982 62.9771 48.5292 62.914C48.6134 63.1034 48.6976 63.2718 48.7818 63.4612C48.0241 64.1979 46.3614 62.9771 46.2772 64.5136C47.2454 64.5136 48.1714 64.5136 49.1185 64.5136C49.1606 64.7451 49.3711 64.9766 49.1396 65.2292Z" fill="#004FA9"/> -<path d="M33.5638 64.3452C32.2168 64.7451 30.8277 64.682 29.3965 64.6609C29.5228 63.1455 31.3118 63.7138 32.3431 63.6927C33.0797 63.8611 32.9955 63.4612 32.9955 63.0192C33.4796 63.3349 33.2481 63.9663 33.5638 64.3452Z" fill="#BCD5F6"/> -<path d="M28.3647 65.124C30.2589 65.3134 32.2163 64.7451 34.0684 65.4397C34.0684 65.5449 34.0474 65.6501 34.0474 65.7554C32.09 65.7554 30.1326 65.7554 28.1752 65.7554C28.2173 65.5239 27.7964 65.1661 28.3647 65.124Z" fill="#BCD5F6"/> -<path d="M49.1402 64.4925C48.2141 64.4925 47.267 64.4925 46.2988 64.4925C46.362 62.9561 48.0457 64.1768 48.8034 63.4402C48.9718 63.7559 49.2033 64.0926 49.1402 64.4925Z" fill="#BCD5F6"/> -<path d="M47.0566 62.5983C47.1198 60.9356 48.551 61.6722 48.551 62.914C48.0669 62.6193 47.6881 61.9248 47.0566 62.5983Z" fill="#004FA9"/> -<path d="M47.0352 62.5772C47.7087 61.9248 48.0875 62.6193 48.5505 62.8929V62.8719C48.0033 62.9561 47.3719 63.4402 47.0352 62.5772Z" fill="#BCD5F6"/> -<path d="M32.4909 67.6285C31.607 67.397 28.2815 68.2389 28.492 66.955C28.492 66.492 28.6604 66.3447 29.1023 66.3447C31.4175 66.3657 33.7117 66.3657 36.0268 66.3447C36.5741 66.3447 36.5741 66.5762 36.5951 67.0392C36.974 68.1547 33.2486 67.4391 32.4909 67.6285Z" fill="#BCD5F6"/> -<path d="M30.9123 63.0403C30.4704 62.9561 29.6495 63.2929 29.6074 62.5983C29.6074 62.009 30.0915 62.2405 30.3862 62.2195C30.9965 62.2616 32.3435 61.8827 32.3225 62.8088C32.3856 63.2297 31.228 62.9772 30.9123 63.0403Z" fill="#BCD5F6"/> -</g> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M103.176 61.288C101.736 61.288 100.512 61.032 99.504 60.52C98.512 60.008 97.656 59.336 96.936 58.504L99.072 56.44C99.648 57.112 100.288 57.624 100.992 57.976C101.712 58.328 102.504 58.504 103.368 58.504C104.344 58.504 105.08 58.296 105.576 57.88C106.072 57.448 106.32 56.872 106.32 56.152C106.32 55.592 106.16 55.136 105.84 54.784C105.52 54.432 104.92 54.176 104.04 54.016L102.456 53.776C99.112 53.248 97.44 51.624 97.44 48.904C97.44 48.152 97.576 47.472 97.848 46.864C98.136 46.256 98.544 45.736 99.072 45.304C99.6 44.872 100.232 44.544 100.968 44.32C101.72 44.08 102.568 43.96 103.512 43.96C104.776 43.96 105.88 44.168 106.824 44.584C107.768 45 108.576 45.616 109.248 46.432L107.088 48.472C106.672 47.96 106.168 47.544 105.576 47.224C104.984 46.904 104.24 46.744 103.344 46.744C102.432 46.744 101.744 46.92 101.28 47.272C100.832 47.608 100.608 48.088 100.608 48.712C100.608 49.352 100.792 49.824 101.16 50.128C101.528 50.432 102.12 50.656 102.936 50.8L104.496 51.088C106.192 51.392 107.44 51.936 108.24 52.72C109.056 53.488 109.464 54.568 109.464 55.96C109.464 56.76 109.32 57.488 109.032 58.144C108.76 58.784 108.352 59.344 107.808 59.824C107.28 60.288 106.624 60.648 105.84 60.904C105.072 61.16 104.184 61.288 103.176 61.288ZM112.448 43.24H115.52V53.944H115.64L117.296 51.688L120.104 48.472H123.584L119.264 53.32L124.04 61H120.392L117.176 55.384L115.52 57.184V61H112.448V43.24ZM131.234 47.056L129.386 46.168L131.666 41.68L134.258 42.952L131.234 47.056ZM133.178 58.912H133.058C132.946 59.232 132.794 59.536 132.602 59.824C132.426 60.096 132.194 60.344 131.906 60.568C131.634 60.792 131.298 60.968 130.898 61.096C130.514 61.224 130.066 61.288 129.554 61.288C128.258 61.288 127.266 60.864 126.578 60.016C125.89 59.168 125.546 57.96 125.546 56.392V48.472H128.618V56.08C128.618 56.944 128.786 57.608 129.122 58.072C129.458 58.52 129.994 58.744 130.73 58.744C131.034 58.744 131.33 58.704 131.618 58.624C131.922 58.544 132.186 58.424 132.41 58.264C132.634 58.088 132.818 57.88 132.962 57.64C133.106 57.384 133.178 57.088 133.178 56.752V48.472H136.25V61H133.178V58.912ZM143.711 61C142.655 61 141.847 60.728 141.287 60.184C140.743 59.624 140.471 58.832 140.471 57.808V50.92H138.623V48.472H139.583C140.047 48.472 140.359 48.368 140.519 48.16C140.695 47.936 140.783 47.608 140.783 47.176V45.04H143.543V48.472H146.111V50.92H143.543V58.552H145.919V61H143.711ZM156.264 58.912H156.144C156.032 59.232 155.88 59.536 155.688 59.824C155.512 60.096 155.28 60.344 154.992 60.568C154.72 60.792 154.384 60.968 153.984 61.096C153.6 61.224 153.152 61.288 152.64 61.288C151.344 61.288 150.352 60.864 149.664 60.016C148.976 59.168 148.632 57.96 148.632 56.392V48.472H151.704V56.08C151.704 56.944 151.872 57.608 152.208 58.072C152.544 58.52 153.08 58.744 153.816 58.744C154.12 58.744 154.416 58.704 154.704 58.624C155.008 58.544 155.272 58.424 155.496 58.264C155.72 58.088 155.904 57.88 156.048 57.64C156.192 57.384 156.264 57.088 156.264 56.752V48.472H159.336V61H156.264V58.912ZM166.989 61.288C165.789 61.288 164.781 61.088 163.965 60.688C163.149 60.272 162.429 59.704 161.805 58.984L163.677 57.16C164.141 57.688 164.645 58.104 165.189 58.408C165.749 58.712 166.389 58.864 167.109 58.864C167.845 58.864 168.373 58.736 168.693 58.48C169.029 58.224 169.197 57.872 169.197 57.424C169.197 57.056 169.077 56.768 168.837 56.56C168.613 56.336 168.221 56.184 167.661 56.104L166.413 55.936C165.053 55.76 164.013 55.376 163.293 54.784C162.589 54.176 162.237 53.296 162.237 52.144C162.237 51.536 162.349 50.992 162.573 50.512C162.797 50.016 163.117 49.6 163.533 49.264C163.949 48.912 164.445 48.648 165.021 48.472C165.613 48.28 166.269 48.184 166.989 48.184C167.597 48.184 168.133 48.232 168.597 48.328C169.077 48.408 169.509 48.536 169.893 48.712C170.277 48.872 170.629 49.08 170.949 49.336C171.269 49.576 171.581 49.848 171.885 50.152L170.085 51.952C169.717 51.568 169.277 51.248 168.765 50.992C168.253 50.736 167.693 50.608 167.085 50.608C166.413 50.608 165.925 50.728 165.621 50.968C165.333 51.208 165.189 51.52 165.189 51.904C165.189 52.32 165.309 52.64 165.549 52.864C165.805 53.072 166.229 53.224 166.821 53.32L168.093 53.488C170.797 53.872 172.149 55.104 172.149 57.184C172.149 57.792 172.021 58.352 171.765 58.864C171.525 59.36 171.181 59.792 170.733 60.16C170.285 60.512 169.741 60.792 169.101 61C168.477 61.192 167.773 61.288 166.989 61.288ZM178.586 61C177.53 61 176.722 60.728 176.162 60.184C175.618 59.624 175.346 58.832 175.346 57.808V50.92H173.498V48.472H174.458C174.922 48.472 175.234 48.368 175.394 48.16C175.57 47.936 175.658 47.608 175.658 47.176V45.04H178.418V48.472H180.986V50.92H178.418V58.552H180.794V61H178.586ZM192.867 61C192.195 61 191.659 60.808 191.259 60.424C190.875 60.024 190.635 59.496 190.539 58.84H190.395C190.187 59.656 189.763 60.272 189.123 60.688C188.483 61.088 187.691 61.288 186.747 61.288C185.467 61.288 184.483 60.952 183.795 60.28C183.107 59.608 182.763 58.712 182.763 57.592C182.763 56.296 183.227 55.336 184.155 54.712C185.083 54.072 186.403 53.752 188.115 53.752H190.251V52.84C190.251 52.136 190.067 51.592 189.699 51.208C189.331 50.824 188.739 50.632 187.923 50.632C187.203 50.632 186.619 50.792 186.171 51.112C185.739 51.416 185.371 51.784 185.067 52.216L183.243 50.584C183.707 49.864 184.323 49.288 185.091 48.856C185.859 48.408 186.875 48.184 188.139 48.184C189.835 48.184 191.123 48.568 192.003 49.336C192.883 50.104 193.323 51.208 193.323 52.648V58.552H194.571V61H192.867ZM187.779 59.056C188.467 59.056 189.051 58.904 189.531 58.6C190.011 58.296 190.251 57.848 190.251 57.256V55.6H188.283C186.683 55.6 185.883 56.112 185.883 57.136V57.544C185.883 58.056 186.043 58.44 186.363 58.696C186.699 58.936 187.171 59.056 187.779 59.056ZM206.345 44.224L204.569 45.376C205.673 46.528 206.561 47.856 207.233 49.36C207.905 50.864 208.241 52.536 208.241 54.376C208.241 55.56 208.097 56.592 207.809 57.472C207.521 58.336 207.113 59.056 206.585 59.632C206.073 60.192 205.457 60.608 204.737 60.88C204.017 61.152 203.217 61.288 202.337 61.288C201.393 61.288 200.545 61.144 199.793 60.856C199.057 60.552 198.425 60.128 197.897 59.584C197.385 59.04 196.993 58.376 196.721 57.592C196.449 56.808 196.313 55.936 196.313 54.976C196.313 54.08 196.425 53.264 196.649 52.528C196.889 51.792 197.225 51.16 197.657 50.632C198.089 50.104 198.609 49.696 199.217 49.408C199.841 49.12 200.529 48.976 201.281 48.976C202.145 48.976 202.865 49.192 203.441 49.624C204.033 50.04 204.497 50.608 204.833 51.328L204.977 51.256C204.785 50.44 204.441 49.664 203.945 48.928C203.465 48.192 202.881 47.488 202.193 46.816L200.129 48.112L199.025 46.792L200.897 45.664C200.337 45.2 199.745 44.768 199.121 44.368C198.513 43.968 197.897 43.592 197.273 43.24H201.953C202.177 43.368 202.393 43.52 202.601 43.696C202.809 43.856 203.025 44.024 203.249 44.2L205.265 42.928L206.345 44.224ZM202.289 58.936C203.137 58.936 203.809 58.664 204.305 58.12C204.801 57.576 205.049 56.816 205.049 55.84V54.448C205.049 53.472 204.801 52.712 204.305 52.168C203.809 51.624 203.137 51.352 202.289 51.352C201.425 51.352 200.745 51.624 200.249 52.168C199.753 52.712 199.505 53.472 199.505 54.448V55.84C199.505 56.816 199.753 57.576 200.249 58.12C200.745 58.664 201.425 58.936 202.289 58.936ZM220.406 61C219.734 61 219.198 60.808 218.798 60.424C218.414 60.024 218.174 59.496 218.078 58.84H217.934C217.726 59.656 217.302 60.272 216.662 60.688C216.022 61.088 215.23 61.288 214.286 61.288C213.006 61.288 212.022 60.952 211.334 60.28C210.646 59.608 210.302 58.712 210.302 57.592C210.302 56.296 210.766 55.336 211.694 54.712C212.622 54.072 213.942 53.752 215.654 53.752H217.79V52.84C217.79 52.136 217.606 51.592 217.238 51.208C216.87 50.824 216.278 50.632 215.462 50.632C214.742 50.632 214.158 50.792 213.71 51.112C213.278 51.416 212.91 51.784 212.606 52.216L210.782 50.584C211.246 49.864 211.862 49.288 212.63 48.856C213.398 48.408 214.414 48.184 215.678 48.184C217.374 48.184 218.662 48.568 219.542 49.336C220.422 50.104 220.862 51.208 220.862 52.648V58.552H222.11V61H220.406ZM215.318 59.056C216.006 59.056 216.59 58.904 217.07 58.6C217.55 58.296 217.79 57.848 217.79 57.256V55.6H215.822C214.222 55.6 213.422 56.112 213.422 57.136V57.544C213.422 58.056 213.582 58.44 213.902 58.696C214.238 58.936 214.71 59.056 215.318 59.056ZM224.095 55.216V52.168H230.959V55.216H224.095ZM97.776 71.24H100.848V78.56H100.968C101.224 77.888 101.624 77.328 102.168 76.88C102.728 76.416 103.496 76.184 104.472 76.184C105.768 76.184 106.76 76.608 107.448 77.456C108.136 78.304 108.48 79.512 108.48 81.08V89H105.408V81.392C105.408 80.496 105.248 79.824 104.928 79.376C104.608 78.928 104.08 78.704 103.344 78.704C103.024 78.704 102.712 78.752 102.408 78.848C102.12 78.928 101.856 79.056 101.616 79.232C101.392 79.392 101.208 79.6 101.064 79.856C100.92 80.096 100.848 80.384 100.848 80.72V89H97.776V71.24ZM111.885 89V76.472H114.957V79.064H115.077C115.157 78.728 115.277 78.408 115.437 78.104C115.613 77.784 115.837 77.504 116.109 77.264C116.381 77.024 116.701 76.832 117.069 76.688C117.453 76.544 117.893 76.472 118.389 76.472H119.061V79.376H118.101C117.061 79.376 116.277 79.528 115.749 79.832C115.221 80.136 114.957 80.632 114.957 81.32V89H111.885ZM126.254 89.288C125.326 89.288 124.494 89.136 123.758 88.832C123.038 88.512 122.422 88.072 121.91 87.512C121.414 86.936 121.03 86.248 120.758 85.448C120.486 84.632 120.35 83.72 120.35 82.712C120.35 81.72 120.478 80.824 120.734 80.024C121.006 79.224 121.39 78.544 121.886 77.984C122.382 77.408 122.99 76.968 123.71 76.664C124.43 76.344 125.246 76.184 126.158 76.184C127.134 76.184 127.982 76.352 128.702 76.688C129.422 77.024 130.014 77.48 130.478 78.056C130.942 78.632 131.286 79.304 131.51 80.072C131.75 80.824 131.87 81.632 131.87 82.496V83.504H123.542V83.816C123.542 84.728 123.798 85.464 124.31 86.024C124.822 86.568 125.582 86.84 126.59 86.84C127.358 86.84 127.982 86.68 128.462 86.36C128.958 86.04 129.398 85.632 129.782 85.136L131.438 86.984C130.926 87.704 130.222 88.272 129.326 88.688C128.446 89.088 127.422 89.288 126.254 89.288ZM126.206 78.488C125.39 78.488 124.742 78.76 124.262 79.304C123.782 79.848 123.542 80.552 123.542 81.416V81.608H128.678V81.392C128.678 80.528 128.462 79.832 128.03 79.304C127.614 78.76 127.006 78.488 126.206 78.488ZM134.573 76.472H137.645V78.536H137.741C137.965 77.816 138.389 77.248 139.013 76.832C139.637 76.4 140.365 76.184 141.197 76.184C142.797 76.184 144.013 76.752 144.845 77.888C145.693 79.008 146.117 80.616 146.117 82.712C146.117 84.824 145.693 86.448 144.845 87.584C144.013 88.72 142.797 89.288 141.197 89.288C140.365 89.288 139.637 89.072 139.013 88.64C138.405 88.208 137.981 87.632 137.741 86.912H137.645V93.8H134.573V76.472ZM140.213 86.744C141.013 86.744 141.661 86.48 142.157 85.952C142.653 85.424 142.901 84.712 142.901 83.816V81.656C142.901 80.76 142.653 80.048 142.157 79.52C141.661 78.976 141.013 78.704 140.213 78.704C139.477 78.704 138.861 78.888 138.365 79.256C137.885 79.624 137.645 80.112 137.645 80.72V84.704C137.645 85.36 137.885 85.864 138.365 86.216C138.861 86.568 139.477 86.744 140.213 86.744ZM148.964 76.472H152.036V78.536H152.132C152.356 77.816 152.78 77.248 153.404 76.832C154.028 76.4 154.756 76.184 155.588 76.184C157.188 76.184 158.404 76.752 159.236 77.888C160.084 79.008 160.508 80.616 160.508 82.712C160.508 84.824 160.084 86.448 159.236 87.584C158.404 88.72 157.188 89.288 155.588 89.288C154.756 89.288 154.028 89.072 153.404 88.64C152.796 88.208 152.372 87.632 152.132 86.912H152.036V93.8H148.964V76.472ZM154.604 86.744C155.404 86.744 156.052 86.48 156.548 85.952C157.044 85.424 157.292 84.712 157.292 83.816V81.656C157.292 80.76 157.044 80.048 156.548 79.52C156.052 78.976 155.404 78.704 154.604 78.704C153.868 78.704 153.252 78.888 152.756 79.256C152.276 79.624 152.036 80.112 152.036 80.72V84.704C152.036 85.36 152.276 85.864 152.756 86.216C153.252 86.568 153.868 86.744 154.604 86.744ZM170.842 86.912H170.722C170.61 87.232 170.458 87.536 170.266 87.824C170.09 88.096 169.858 88.344 169.57 88.568C169.298 88.792 168.962 88.968 168.562 89.096C168.178 89.224 167.73 89.288 167.218 89.288C165.922 89.288 164.93 88.864 164.242 88.016C163.554 87.168 163.21 85.96 163.21 84.392V76.472H166.282V84.08C166.282 84.944 166.45 85.608 166.786 86.072C167.122 86.52 167.658 86.744 168.394 86.744C168.698 86.744 168.994 86.704 169.282 86.624C169.586 86.544 169.85 86.424 170.074 86.264C170.298 86.088 170.482 85.88 170.626 85.64C170.77 85.384 170.842 85.088 170.842 84.752V76.472H173.914V89H170.842V86.912ZM177.464 89V76.472H180.536V79.064H180.656C180.736 78.728 180.856 78.408 181.016 78.104C181.192 77.784 181.416 77.504 181.688 77.264C181.96 77.024 182.28 76.832 182.648 76.688C183.032 76.544 183.472 76.472 183.968 76.472H184.64V79.376H183.68C182.64 79.376 181.856 79.528 181.328 79.832C180.8 80.136 180.536 80.632 180.536 81.32V89H177.464Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57914"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/snaefellsbaer.svg b/libs/application/templates/financial-aid/src/svg/snaefellsbaer.svg deleted file mode 100644 index 9a2b668f984f..000000000000 --- a/libs/application/templates/financial-aid/src/svg/snaefellsbaer.svg +++ /dev/null @@ -1,10 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M21 16V67.4286C21 76.5042 25.5938 84.3473 34.2213 90.0616C40.7199 94.3193 47.1064 95.888 47.3305 95.888L47.5546 96L47.7787 95.888C48.0028 95.7759 54.5014 94.3193 61 90.0616C69.7395 84.3473 74.4454 76.5042 74.4454 67.4286V16H21Z" fill="white"/> -<path d="M50.0194 61.7143C49.5713 61.7143 49.2351 61.4902 49.1231 61.042C49.1231 60.5938 49.3472 60.2577 49.7953 60.1457C50.2435 60.1457 50.5797 60.3697 50.6917 60.8179C50.8037 61.2661 50.4676 61.6022 50.0194 61.7143ZM65.0334 65.972C66.1539 50.6218 50.2435 51.2941 48.4508 60.8179C47.5544 65.4118 50.9158 68.2129 50.9158 68.2129C52.4844 61.2661 57.6385 59.2493 61.2239 60.8179C67.1623 63.395 60.9998 76.9524 62.3444 74.0392C66.6021 65.5238 71.1959 67.8767 71.1959 67.8767C69.6273 65.0756 65.0334 66.5322 65.0334 65.972Z" fill="#034DA1"/> -<path d="M40.944 65.1877C41.3922 65.1877 41.7283 65.4118 41.8403 65.8599C41.8403 66.3081 41.6162 66.6443 41.1681 66.7563C40.7199 66.7563 40.3838 66.5322 40.2717 66.084C40.1597 65.6359 40.4958 65.1877 40.944 65.1877ZM47.6667 93.6471C44.9776 92.9748 23.2409 86.4762 23.2409 67.4286V44.6835C24.0252 44.3473 24.9216 44.0112 26.042 44.0112C27.9468 44.0112 29.2913 44.9076 30.4118 45.6919C31.4202 46.3641 32.2045 46.8123 33.2129 46.8123C34.3333 46.8123 35.1176 46.2521 36.014 45.6919C37.1345 44.9076 38.3669 44.0112 40.2717 44.0112C42.2885 44.0112 43.521 44.9076 44.6415 45.6919C45.3137 46.1401 45.7619 46.4762 46.4342 46.7003C45.874 48.605 46.4342 50.958 46.098 50.8459C30.7479 49.7255 31.4202 65.6359 40.944 67.4286C45.5378 68.3249 48.3389 64.9636 48.3389 64.9636C41.3922 63.395 39.3754 58.2409 40.944 54.6555C43.521 48.7171 57.0784 54.8796 54.1653 53.535C49.3473 51.1821 48.0028 48.605 47.7787 46.9244C48.7871 46.9244 49.5714 46.3641 50.5798 45.8039C51.7003 45.0196 53.0448 44.1232 54.9496 44.1232C56.8543 44.1232 58.1989 45.0196 59.3193 45.8039C60.3277 46.4762 61.112 47.0364 62.2325 47.0364C63.3529 47.0364 64.0252 46.4762 65.0336 45.916C66.1541 45.1317 67.4986 44.2353 69.4034 44.2353C70.6359 44.2353 71.6443 44.5714 72.4286 45.0196V67.5406C72.3165 86.4762 50.2437 92.9748 47.6667 93.6471ZM62.9048 31.6863C63.577 32.3585 64.0252 32.5826 64.6975 33.1429C65.2577 33.591 65.5938 33.8151 66.042 34.2633C66.7143 34.9356 67.8347 35.2717 67.7227 36.1681C67.6106 37.4006 65.8179 35.1597 64.6975 34.5994C63.9132 34.2633 63.465 34.1513 62.7927 33.7031C62.0084 33.1429 62.1205 32.3585 61.2241 32.0224C60.5518 31.7983 59.9916 34.9356 59.3193 34.5994C58.6471 34.2633 58.7591 33.591 58.1989 33.1429C57.3025 32.4706 55.958 32.9188 55.2857 32.8067C55.0616 34.1513 56.1821 34.5994 55.958 35.4958C53.9412 34.0392 50.5798 34.3753 49.3473 32.2465C49.0112 31.5742 47.6667 33.9272 47.1064 34.4874C46.4342 34.0392 47.1064 32.8067 46.3221 32.5826C46.3221 32.5826 45.4258 33.8151 44.6415 34.4874C43.8571 35.2717 41.9524 37.1765 42.2885 36.1681C42.7367 34.9356 43.6331 32.5826 42.5126 31.9104L39.2633 35.1597C38.479 34.4874 38.2549 34.2633 37.4706 34.1513C36.1261 33.9272 35.0056 36.1681 34.2213 35.1597C33.8852 34.7115 33.8852 34.3753 33.9972 33.9272C33.9972 32.6947 35.902 32.4706 35.902 31.2381C35.902 31.2381 32.8768 33.3669 30.7479 33.1429C30.2997 33.1429 29.9636 32.9188 29.5154 32.9188C27.4986 32.5826 25.3697 33.479 24.2493 33.7031C23.577 33.7031 23.3529 34.2633 23.1289 34.7115V29.3333L42.5126 22.6106C43.1849 22.8347 43.521 23.0588 43.8571 23.1709C44.5294 23.507 44.7535 23.619 45.6499 23.7311H45.7619C47.5546 24.0672 48.7871 24.2913 50.4678 23.619C50.8039 23.507 51.028 23.1709 51.2521 22.9468C51.5882 22.4986 51.8123 22.1625 52.3726 22.3866L72.2045 29.1092V34.2633C71.8684 34.1513 71.4202 33.9272 70.972 33.8151C70.0756 33.3669 69.7395 32.8067 68.8431 32.2465C67.6106 31.5742 66.8263 31.3501 65.4818 31.126C64.6975 31.014 64.2493 31.126 63.577 31.014C62.6807 30.7899 61.8964 29.5574 61.4482 30.2297C61.2241 30.7899 62.3445 31.126 62.9048 31.6863ZM21 16V67.4286C21 76.5042 25.5938 84.3473 34.2213 90.0616C40.7199 94.3193 47.1064 95.888 47.3305 95.888L47.5546 96L47.7787 95.888C48.0028 95.7759 54.5014 94.3193 61 90.0616C69.7395 84.3473 74.4454 76.5042 74.4454 67.4286V16H21Z" fill="#034DA1"/> -<path d="M55.0618 70.7899C54.6136 70.7899 54.2775 70.5658 54.1654 70.1176C54.1654 69.6695 54.3895 69.3333 54.8377 69.2213C55.2859 69.1092 55.622 69.4454 55.7341 69.8935C55.8461 70.3417 55.51 70.7899 55.0618 70.7899ZM55.0618 68.549C50.468 67.6527 47.6668 71.014 47.6668 71.014C54.6136 72.5826 56.6304 77.7367 55.0618 81.3221C52.4848 87.2605 38.9274 81.098 41.8405 82.4426C50.3559 86.7003 48.003 91.2941 48.003 91.2941C50.6921 89.6134 49.2355 85.0196 49.7957 85.0196C65.3699 86.14 64.5856 70.3417 55.0618 68.549Z" fill="#034DA1"/> -<path d="M45.9855 75.8319C45.5373 75.8319 45.2012 75.6078 45.0892 75.1597C45.0892 74.7115 45.3133 74.3753 45.7614 74.2633C46.2096 74.2633 46.5457 74.4874 46.6578 74.9356C46.7698 75.3837 46.4337 75.8319 45.9855 75.8319ZM44.8651 67.6527C43.2964 74.5994 38.1424 76.6162 34.557 75.0476C28.6186 72.4706 34.781 58.9132 33.4365 61.8263C29.1788 70.3417 24.585 67.9888 24.585 67.9888C26.2656 70.6779 30.8595 69.2213 30.8595 69.7815C29.739 85.1316 45.6494 84.4594 47.4421 74.9356C48.2264 70.4538 44.8651 67.6527 44.8651 67.6527Z" fill="#034DA1"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM112.448 75V62.472H115.52V64.56H115.64C115.896 63.888 116.296 63.328 116.84 62.88C117.4 62.416 118.168 62.184 119.144 62.184C120.44 62.184 121.432 62.608 122.12 63.456C122.808 64.304 123.152 65.512 123.152 67.08V75H120.08V67.392C120.08 66.496 119.92 65.824 119.6 65.376C119.28 64.928 118.752 64.704 118.016 64.704C117.696 64.704 117.384 64.752 117.08 64.848C116.792 64.928 116.528 65.056 116.288 65.232C116.064 65.392 115.88 65.6 115.736 65.856C115.592 66.096 115.52 66.384 115.52 66.72V75H112.448ZM131.189 69.504C130.421 69.52 129.829 69.664 129.413 69.936C128.997 70.192 128.789 70.576 128.789 71.088V71.472C128.789 71.984 128.949 72.376 129.269 72.648C129.589 72.92 130.069 73.056 130.709 73.056C131.381 73.056 131.957 72.904 132.437 72.6C132.917 72.296 133.157 71.848 133.157 71.256V69.504H131.189ZM141.389 67.608V67.392C141.389 66.528 141.173 65.832 140.741 65.304C140.325 64.76 139.717 64.488 138.917 64.488C138.101 64.488 137.453 64.76 136.973 65.304C136.493 65.848 136.253 66.552 136.253 67.416V67.608H141.389ZM139.349 72.792C140.101 72.792 140.733 72.632 141.245 72.312C141.757 71.992 142.189 71.6 142.541 71.136L144.197 72.984C143.685 73.704 142.989 74.272 142.109 74.688C141.229 75.088 140.221 75.288 139.085 75.288C138.477 75.288 137.909 75.216 137.381 75.072C136.853 74.928 136.381 74.736 135.965 74.496C135.565 74.256 135.221 73.984 134.933 73.68C134.645 73.376 134.429 73.056 134.285 72.72H134.141C134.029 73.04 133.853 73.352 133.613 73.656C133.389 73.96 133.093 74.232 132.725 74.472C132.357 74.712 131.917 74.904 131.405 75.048C130.909 75.208 130.325 75.288 129.653 75.288C128.389 75.288 127.405 74.944 126.701 74.256C126.013 73.568 125.669 72.672 125.669 71.568C125.669 70.912 125.797 70.336 126.053 69.84C126.309 69.344 126.669 68.936 127.133 68.616C127.597 68.28 128.157 68.032 128.813 67.872C129.469 67.696 130.205 67.608 131.021 67.608H133.157V66.84C133.157 66.136 132.973 65.592 132.605 65.208C132.237 64.824 131.653 64.632 130.853 64.632C130.117 64.632 129.525 64.784 129.077 65.088C128.645 65.392 128.277 65.768 127.973 66.216L126.149 64.584C126.613 63.864 127.229 63.288 127.997 62.856C128.765 62.408 129.781 62.184 131.045 62.184C132.005 62.184 132.773 62.384 133.349 62.784C133.925 63.168 134.373 63.656 134.693 64.248H134.837C135.157 63.656 135.677 63.168 136.397 62.784C137.117 62.384 137.981 62.184 138.989 62.184C139.965 62.184 140.805 62.352 141.509 62.688C142.213 63.024 142.789 63.48 143.237 64.056C143.701 64.632 144.037 65.304 144.245 66.072C144.469 66.824 144.581 67.632 144.581 68.496V69.504H136.229V69.816C136.229 70.712 136.501 71.432 137.045 71.976C137.589 72.52 138.357 72.792 139.349 72.792ZM147.923 64.896H146.075V62.472H147.923V60.672C147.923 59.568 148.211 58.72 148.787 58.128C149.379 57.536 150.243 57.24 151.379 57.24H153.563V59.688H150.995V62.472H153.563V64.896H150.995V75H147.923V64.896ZM160.66 75.288C159.732 75.288 158.9 75.136 158.164 74.832C157.444 74.512 156.828 74.072 156.316 73.512C155.82 72.936 155.436 72.248 155.164 71.448C154.892 70.632 154.756 69.72 154.756 68.712C154.756 67.72 154.884 66.824 155.14 66.024C155.412 65.224 155.796 64.544 156.292 63.984C156.788 63.408 157.396 62.968 158.116 62.664C158.836 62.344 159.652 62.184 160.564 62.184C161.54 62.184 162.388 62.352 163.108 62.688C163.828 63.024 164.42 63.48 164.884 64.056C165.348 64.632 165.692 65.304 165.916 66.072C166.156 66.824 166.276 67.632 166.276 68.496V69.504H157.948V69.816C157.948 70.728 158.204 71.464 158.716 72.024C159.228 72.568 159.988 72.84 160.996 72.84C161.764 72.84 162.388 72.68 162.868 72.36C163.364 72.04 163.804 71.632 164.188 71.136L165.844 72.984C165.332 73.704 164.628 74.272 163.732 74.688C162.852 75.088 161.828 75.288 160.66 75.288ZM160.612 64.488C159.796 64.488 159.148 64.76 158.668 65.304C158.188 65.848 157.948 66.552 157.948 67.416V67.608H163.084V67.392C163.084 66.528 162.868 65.832 162.436 65.304C162.02 64.76 161.412 64.488 160.612 64.488ZM172.051 75C170.995 75 170.219 74.736 169.723 74.208C169.227 73.68 168.979 72.936 168.979 71.976V57.24H172.051V72.552H173.707V75H172.051ZM178.942 75C177.886 75 177.11 74.736 176.614 74.208C176.118 73.68 175.87 72.936 175.87 71.976V57.24H178.942V72.552H180.598V75H178.942ZM187.028 75.288C185.828 75.288 184.82 75.088 184.004 74.688C183.188 74.272 182.468 73.704 181.844 72.984L183.716 71.16C184.18 71.688 184.684 72.104 185.228 72.408C185.788 72.712 186.428 72.864 187.148 72.864C187.884 72.864 188.412 72.736 188.732 72.48C189.068 72.224 189.236 71.872 189.236 71.424C189.236 71.056 189.116 70.768 188.876 70.56C188.652 70.336 188.26 70.184 187.7 70.104L186.452 69.936C185.092 69.76 184.052 69.376 183.332 68.784C182.628 68.176 182.276 67.296 182.276 66.144C182.276 65.536 182.388 64.992 182.612 64.512C182.836 64.016 183.156 63.6 183.572 63.264C183.988 62.912 184.484 62.648 185.06 62.472C185.652 62.28 186.308 62.184 187.028 62.184C187.636 62.184 188.172 62.232 188.636 62.328C189.116 62.408 189.548 62.536 189.932 62.712C190.316 62.872 190.668 63.08 190.988 63.336C191.308 63.576 191.62 63.848 191.924 64.152L190.124 65.952C189.756 65.568 189.316 65.248 188.804 64.992C188.292 64.736 187.732 64.608 187.124 64.608C186.452 64.608 185.964 64.728 185.66 64.968C185.372 65.208 185.228 65.52 185.228 65.904C185.228 66.32 185.348 66.64 185.588 66.864C185.844 67.072 186.268 67.224 186.86 67.32L188.132 67.488C190.836 67.872 192.188 69.104 192.188 71.184C192.188 71.792 192.06 72.352 191.804 72.864C191.564 73.36 191.22 73.792 190.772 74.16C190.324 74.512 189.78 74.792 189.14 75C188.516 75.192 187.812 75.288 187.028 75.288ZM194.901 57.24H197.973V64.536H198.069C198.293 63.816 198.717 63.248 199.341 62.832C199.965 62.4 200.693 62.184 201.525 62.184C203.125 62.184 204.341 62.752 205.173 63.888C206.021 65.008 206.445 66.616 206.445 68.712C206.445 70.824 206.021 72.448 205.173 73.584C204.341 74.72 203.125 75.288 201.525 75.288C200.693 75.288 199.965 75.072 199.341 74.64C198.733 74.208 198.309 73.632 198.069 72.912H197.973V75H194.901V57.24ZM200.541 72.744C201.341 72.744 201.989 72.48 202.485 71.952C202.981 71.424 203.229 70.712 203.229 69.816V67.656C203.229 66.76 202.981 66.048 202.485 65.52C201.989 64.976 201.341 64.704 200.541 64.704C199.805 64.704 199.189 64.888 198.693 65.256C198.213 65.624 197.973 66.112 197.973 66.72V70.704C197.973 71.36 198.213 71.864 198.693 72.216C199.189 72.568 199.805 72.744 200.541 72.744ZM213.924 69.504C213.156 69.52 212.564 69.664 212.148 69.936C211.732 70.192 211.524 70.576 211.524 71.088V71.472C211.524 71.984 211.684 72.376 212.004 72.648C212.324 72.92 212.804 73.056 213.444 73.056C214.116 73.056 214.692 72.904 215.172 72.6C215.652 72.296 215.892 71.848 215.892 71.256V69.504H213.924ZM224.124 67.608V67.392C224.124 66.528 223.908 65.832 223.476 65.304C223.06 64.76 222.452 64.488 221.652 64.488C220.836 64.488 220.188 64.76 219.708 65.304C219.228 65.848 218.988 66.552 218.988 67.416V67.608H224.124ZM222.084 72.792C222.836 72.792 223.468 72.632 223.98 72.312C224.492 71.992 224.924 71.6 225.276 71.136L226.932 72.984C226.42 73.704 225.724 74.272 224.844 74.688C223.964 75.088 222.956 75.288 221.82 75.288C221.212 75.288 220.644 75.216 220.116 75.072C219.588 74.928 219.116 74.736 218.7 74.496C218.3 74.256 217.956 73.984 217.668 73.68C217.38 73.376 217.164 73.056 217.02 72.72H216.876C216.764 73.04 216.588 73.352 216.348 73.656C216.124 73.96 215.828 74.232 215.46 74.472C215.092 74.712 214.652 74.904 214.14 75.048C213.644 75.208 213.06 75.288 212.388 75.288C211.124 75.288 210.14 74.944 209.436 74.256C208.748 73.568 208.404 72.672 208.404 71.568C208.404 70.912 208.532 70.336 208.788 69.84C209.044 69.344 209.404 68.936 209.868 68.616C210.332 68.28 210.892 68.032 211.548 67.872C212.204 67.696 212.94 67.608 213.756 67.608H215.892V66.84C215.892 66.136 215.708 65.592 215.34 65.208C214.972 64.824 214.388 64.632 213.588 64.632C212.852 64.632 212.26 64.784 211.812 65.088C211.38 65.392 211.012 65.768 210.708 66.216L208.884 64.584C209.348 63.864 209.964 63.288 210.732 62.856C211.5 62.408 212.516 62.184 213.78 62.184C214.74 62.184 215.508 62.384 216.084 62.784C216.66 63.168 217.108 63.656 217.428 64.248H217.572C217.892 63.656 218.412 63.168 219.132 62.784C219.852 62.384 220.716 62.184 221.724 62.184C222.7 62.184 223.54 62.352 224.244 62.688C224.948 63.024 225.524 63.48 225.972 64.056C226.436 64.632 226.772 65.304 226.98 66.072C227.204 66.824 227.316 67.632 227.316 68.496V69.504H218.964V69.816C218.964 70.712 219.236 71.432 219.78 71.976C220.324 72.52 221.092 72.792 222.084 72.792ZM230.034 75V62.472H233.106V65.064H233.226C233.306 64.728 233.426 64.408 233.586 64.104C233.762 63.784 233.986 63.504 234.258 63.264C234.53 63.024 234.85 62.832 235.218 62.688C235.602 62.544 236.042 62.472 236.538 62.472H237.21V65.376H236.25C235.21 65.376 234.426 65.528 233.898 65.832C233.37 66.136 233.106 66.632 233.106 67.32V75H230.034Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/strandabyggd.svg b/libs/application/templates/financial-aid/src/svg/strandabyggd.svg deleted file mode 100644 index 6a44911118ad..000000000000 --- a/libs/application/templates/financial-aid/src/svg/strandabyggd.svg +++ /dev/null @@ -1,27 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57920)"> -<path d="M47.5271 95.6802C43.7963 92.1625 18.2666 80.6502 18.2666 64.5543C18.2666 49.6842 18.2666 16.3198 18.2666 16.3198H76.8409C76.8409 16.3198 76.8409 49.7375 76.8409 64.5543C76.8409 80.5969 51.3112 92.1092 47.5271 95.6802Z" fill="white"/> -<path d="M52.2172 36.0933V76.0133L23.1166 76.2798H22.477C20.8248 74.0946 19.4923 71.7495 18.7462 69.2978C18.6929 69.0846 18.6396 68.9247 18.5863 68.7115C18.533 68.5517 18.4797 68.3385 18.4264 68.1253C18.1599 67.006 18 65.7802 18 64.501V46.8594L18.533 46.3265L37.1872 28.1519V49.3644L52.2172 36.0933Z" fill="url(#paint0_linear_2491:57920)"/> -<path d="M47.5271 95.6802C43.7963 92.1625 18.2666 80.6502 18.2666 64.5543C18.2666 49.6842 18.2666 16.3198 18.2666 16.3198H76.8409C76.8409 16.3198 76.8409 49.7375 76.8409 64.5543C76.8409 80.5969 51.3112 92.1092 47.5271 95.6802Z" stroke="#0B3673" stroke-miterlimit="10"/> -<path d="M52.2175 34.1213L42.7305 42.7022V22.8221L37.1875 28.2052V49.3644L52.2175 36.0933V76.0133L58.1335 74.2012V34.1213H52.2175Z" fill="#0B3673"/> -<path d="M76.6263 68.2852C76.5197 68.6582 76.4131 69.0313 76.3065 69.4044C75.7735 71.0566 75.0273 72.6023 74.1213 74.1479C73.9614 74.4677 73.7482 74.7342 73.535 75.054C73.3751 75.3205 73.2152 75.5337 73.002 75.8001C71.563 77.8255 69.8041 79.7442 67.8854 81.503C67.7255 81.6096 67.6189 81.7695 67.459 81.8761C67.3525 81.9827 67.1926 82.0893 67.086 82.1959C62.2359 86.5663 56.5863 90.0307 52.589 92.5357C50.2972 93.9747 48.485 95.094 47.6856 95.8401L47.5257 96L47.3658 95.8401C46.5663 95.094 44.7542 93.9747 42.4624 92.5357C39.0513 90.4038 34.521 87.579 30.2572 84.1679C30.1506 84.0613 30.044 84.008 29.9374 83.9014C29.8308 83.7948 29.7242 83.7415 29.6176 83.6349C28.4451 82.6223 27.2725 81.6096 26.1532 80.4904C26.0467 80.3838 25.9401 80.2772 25.8868 80.2239C25.7802 80.1173 25.6736 80.0107 25.567 79.9041C22.4757 76.7595 19.9707 73.1886 18.7449 69.3511C18.6916 69.1379 18.6383 68.978 18.585 68.7648C18.8514 69.0846 19.1179 69.3511 19.3844 69.6176C22.3158 72.549 25.7802 74.1479 29.9907 74.521C37.4524 75.1606 42.1959 69.0313 42.1959 69.0313C45.7668 73.2952 46.7262 74.1479 52.2159 74.3611C57.7588 74.521 61.1699 69.2978 61.1699 69.2978C61.1699 69.2978 63.4084 73.988 69.3245 73.7215C71.9894 73.6149 74.068 72.1226 75.5603 70.044C75.9334 69.511 76.3065 68.9247 76.6263 68.2852Z" fill="#6FBAD2"/> -<path d="M75.8808 69.1379C74.4951 71.4297 72.4165 73.3484 69.3252 73.455C63.6756 73.6682 61.4904 69.3511 61.3838 69.1379L61.1706 68.7648L60.9041 69.1912C60.8508 69.2445 57.5464 74.3078 52.2166 74.0946C46.7802 73.8814 45.9274 73.082 42.3565 68.8714L42.1433 68.6049L41.9834 68.8714C41.9301 68.9247 37.1866 74.9474 29.9914 74.3078C25.7276 73.9347 22.1566 72.2292 19.2252 69.0846C18.9588 68.8181 18.6923 68.4984 18.4258 68.1786C18.4791 68.3918 18.5324 68.5516 18.5857 68.7648C18.639 68.978 18.6923 69.1912 18.7456 69.3511C19.0121 69.6709 19.3318 69.9374 19.5983 70.2039C22.4764 72.9754 25.8875 74.4677 29.9381 74.7875C36.547 75.3738 41.1839 70.577 42.1966 69.4044C45.661 73.5083 46.6736 74.3611 52.2166 74.5743C56.9601 74.7342 60.2113 70.95 61.1173 69.7242C61.8102 70.8435 64.3152 74.2012 69.3252 73.9347C71.8302 73.8281 73.7489 72.6023 75.1346 70.95C75.561 70.4704 75.9341 69.8841 76.3072 69.2978C76.4138 68.9247 76.5204 68.5516 76.627 68.1786C76.7336 67.8055 76.7869 67.4857 76.8402 67.1126C76.5737 67.8588 76.2539 68.4983 75.8808 69.1379Z" fill="#0B3673"/> -<path d="M73.5896 75.0007C73.4297 75.2672 73.2699 75.4804 73.0567 75.7469C71.6176 77.7722 69.8588 79.6909 67.9401 81.4497C67.7802 81.5563 67.6736 81.7162 67.5137 81.8228C67.4071 81.9294 67.2472 82.036 67.1406 82.1426C62.2905 86.513 56.6409 89.9774 52.6436 92.4824C50.3518 93.9214 48.5397 95.0407 47.7402 95.7868L47.5803 95.9467L47.4204 95.7868C46.621 95.0407 44.8088 93.9214 42.517 92.4824C39.106 90.3505 34.5757 87.5257 30.3118 84.1146C30.2052 84.008 30.0986 83.9547 29.992 83.8481C29.8854 83.7415 29.7788 83.6882 29.6723 83.5816C28.4997 82.569 27.3271 81.5563 26.2079 80.4371C26.1013 80.3305 25.9947 80.2239 25.9414 80.1706C26.2079 80.2239 26.4744 80.2239 26.7942 80.2772C33.2965 80.9167 45.6616 80.7035 50.8848 71.2698C50.8848 71.2698 53.603 81.6096 64.3158 75.3205C64.3158 75.3205 67.6736 78.7848 72.3105 75.96C72.6303 75.6936 73.11 75.3738 73.5896 75.0007Z" fill="#B9F4F7"/> -<path d="M72.6842 75.3738C71.405 76.2798 70.1259 76.8128 68.7934 76.8661C66.1818 76.9727 64.423 75.2139 64.3697 75.2139L64.2098 75.054L64.0499 75.1606C60.6922 77.1326 57.8141 77.6656 55.469 76.7062C52.1112 75.3205 51.0453 71.3231 50.992 71.2698L50.8321 70.6302L50.5123 71.2165C45.2891 80.5969 32.7108 80.6502 26.3684 80.0107C26.0486 79.9574 25.7821 79.9574 25.5156 79.9041C25.6222 80.0107 25.7288 80.1173 25.8354 80.2238C25.942 80.3304 26.0486 80.437 26.1019 80.4903C26.3684 80.5436 26.6349 80.5436 26.9547 80.5436C33.5103 81.1299 45.3424 80.7568 50.6722 71.9094C51.0986 73.1352 52.431 75.96 55.2558 77.1326C57.7075 78.1452 60.6922 77.6656 64.1565 75.6935C64.6895 76.1199 66.3417 77.5057 68.7934 77.3991C69.8061 77.3458 70.8188 77.0793 71.7781 76.5463C72.2045 76.3331 72.6309 76.0666 73.0573 75.7468C73.2172 75.4803 73.4303 75.2672 73.5902 75.0007C73.8034 74.6809 73.9633 74.4144 74.1765 74.0946C73.6435 74.5743 73.1639 75.0007 72.6842 75.3738Z" fill="#0B3673"/> -<path d="M67.5129 81.8761C67.4063 81.9827 67.2464 82.0893 67.1398 82.1959C62.2897 86.5663 56.6401 90.0307 52.6428 92.5357C50.351 93.9747 48.5388 95.094 47.7394 95.8401L47.5795 96L47.4196 95.8401C46.6201 95.094 44.808 93.9747 42.5162 92.5357C39.1051 90.4037 34.5748 87.579 30.311 84.1679C30.2044 84.0613 30.0978 84.008 29.9912 83.9014C30.2577 83.9014 30.5775 83.9014 30.844 83.9014C43.5289 83.9547 46.9932 80.064 46.9932 80.064C52.323 85.9267 58.6121 80.064 58.6121 80.064C58.6121 80.064 61.7567 82.7289 66.5535 82.036C66.82 81.9827 67.1931 81.9294 67.5129 81.8761Z" fill="#6FBAD2"/> -<path d="M66.8733 81.7162C62.0232 82.569 58.7721 79.9041 58.7188 79.8508L58.5589 79.6909L58.399 79.8508C58.399 79.8508 55.4676 82.5157 52.0565 82.3558C50.2444 82.2492 48.5922 81.4497 47.1531 79.8508L46.94 79.6376L46.7268 79.8508C46.6735 79.9041 43.1025 83.6882 30.4709 83.5816C30.2044 83.5816 29.8847 83.5816 29.6182 83.5816C29.7248 83.6882 29.8314 83.7415 29.938 83.8481C30.0445 83.9547 30.1511 84.008 30.2577 84.1146C30.5242 84.1146 30.844 84.1146 31.1105 84.1146C41.9833 84.1146 45.9806 81.1832 46.8867 80.3837C48.379 81.9294 50.0845 82.7821 51.9499 82.8887C55.1478 83.0486 57.8127 80.97 58.5056 80.3837C59.2517 80.9167 62.0765 82.7288 66.0739 82.3025C66.3936 82.2492 66.7134 82.2492 67.0332 82.1426C67.1398 82.036 67.2997 81.9294 67.4063 81.8228C67.5662 81.7162 67.6728 81.5563 67.8327 81.4497C67.5662 81.5563 67.2464 81.6096 66.8733 81.7162Z" fill="#0B3673"/> -<path d="M47.527 96L47.3671 95.8401C46.5676 95.0939 44.7555 93.9747 42.4637 92.5356C33.936 87.2059 18 77.2925 18 64.501V16H77.1073V64.501C77.1073 77.2925 61.1712 87.2059 52.6436 92.5356C50.3518 93.9747 48.5396 95.0939 47.7402 95.8401L47.527 96ZM18.533 16.533V64.501C18.533 76.9727 34.3091 86.7795 42.7302 92.056C44.9154 93.3884 46.6209 94.5077 47.527 95.2538C48.433 94.5077 50.1919 93.3884 52.3238 92.056C60.7981 86.7795 76.521 76.9727 76.521 64.501V16.533H18.533Z" fill="#0B3673"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM116.266 75C115.21 75 114.402 74.728 113.842 74.184C113.298 73.624 113.026 72.832 113.026 71.808V64.92H111.178V62.472H112.138C112.602 62.472 112.914 62.368 113.074 62.16C113.25 61.936 113.338 61.608 113.338 61.176V59.04H116.098V62.472H118.666V64.92H116.098V72.552H118.474V75H116.266ZM121.331 75V62.472H124.403V65.064H124.523C124.603 64.728 124.723 64.408 124.883 64.104C125.059 63.784 125.283 63.504 125.555 63.264C125.827 63.024 126.147 62.832 126.515 62.688C126.899 62.544 127.339 62.472 127.835 62.472H128.507V65.376H127.547C126.507 65.376 125.723 65.528 125.195 65.832C124.667 66.136 124.403 66.632 124.403 67.32V75H121.331ZM139.711 75C139.039 75 138.503 74.808 138.103 74.424C137.719 74.024 137.479 73.496 137.383 72.84H137.239C137.031 73.656 136.607 74.272 135.967 74.688C135.327 75.088 134.535 75.288 133.591 75.288C132.311 75.288 131.327 74.952 130.639 74.28C129.951 73.608 129.607 72.712 129.607 71.592C129.607 70.296 130.071 69.336 130.999 68.712C131.927 68.072 133.247 67.752 134.959 67.752H137.095V66.84C137.095 66.136 136.911 65.592 136.543 65.208C136.175 64.824 135.583 64.632 134.767 64.632C134.047 64.632 133.463 64.792 133.015 65.112C132.583 65.416 132.215 65.784 131.911 66.216L130.087 64.584C130.551 63.864 131.167 63.288 131.935 62.856C132.703 62.408 133.719 62.184 134.983 62.184C136.679 62.184 137.967 62.568 138.847 63.336C139.727 64.104 140.167 65.208 140.167 66.648V72.552H141.415V75H139.711ZM134.623 73.056C135.311 73.056 135.895 72.904 136.375 72.6C136.855 72.296 137.095 71.848 137.095 71.256V69.6H135.127C133.527 69.6 132.727 70.112 132.727 71.136V71.544C132.727 72.056 132.887 72.44 133.207 72.696C133.543 72.936 134.015 73.056 134.623 73.056ZM143.901 75V62.472H146.973V64.56H147.093C147.349 63.888 147.749 63.328 148.293 62.88C148.853 62.416 149.621 62.184 150.597 62.184C151.893 62.184 152.885 62.608 153.573 63.456C154.261 64.304 154.605 65.512 154.605 67.08V75H151.533V67.392C151.533 66.496 151.373 65.824 151.053 65.376C150.733 64.928 150.205 64.704 149.469 64.704C149.149 64.704 148.837 64.752 148.533 64.848C148.245 64.928 147.981 65.056 147.741 65.232C147.517 65.392 147.333 65.6 147.189 65.856C147.045 66.096 146.973 66.384 146.973 66.72V75H143.901ZM165.786 72.912H165.666C165.442 73.632 165.018 74.208 164.394 74.64C163.77 75.072 163.042 75.288 162.21 75.288C160.626 75.288 159.41 74.72 158.562 73.584C157.73 72.448 157.314 70.824 157.314 68.712C157.314 66.616 157.73 65.008 158.562 63.888C159.41 62.752 160.626 62.184 162.21 62.184C163.042 62.184 163.77 62.4 164.394 62.832C165.018 63.248 165.442 63.816 165.666 64.536H165.786V57.24H168.858V75H165.786V72.912ZM163.194 72.744C163.93 72.744 164.546 72.568 165.042 72.216C165.538 71.864 165.786 71.36 165.786 70.704V66.72C165.786 66.112 165.538 65.624 165.042 65.256C164.546 64.888 163.93 64.704 163.194 64.704C162.394 64.704 161.746 64.976 161.25 65.52C160.77 66.048 160.53 66.76 160.53 67.656V69.816C160.53 70.712 160.77 71.424 161.25 71.952C161.746 72.48 162.394 72.744 163.194 72.744ZM181.617 75C180.945 75 180.409 74.808 180.009 74.424C179.625 74.024 179.385 73.496 179.289 72.84H179.145C178.937 73.656 178.513 74.272 177.873 74.688C177.233 75.088 176.441 75.288 175.497 75.288C174.217 75.288 173.233 74.952 172.545 74.28C171.857 73.608 171.513 72.712 171.513 71.592C171.513 70.296 171.977 69.336 172.905 68.712C173.833 68.072 175.153 67.752 176.865 67.752H179.001V66.84C179.001 66.136 178.817 65.592 178.449 65.208C178.081 64.824 177.489 64.632 176.673 64.632C175.953 64.632 175.369 64.792 174.921 65.112C174.489 65.416 174.121 65.784 173.817 66.216L171.993 64.584C172.457 63.864 173.073 63.288 173.841 62.856C174.609 62.408 175.625 62.184 176.889 62.184C178.585 62.184 179.873 62.568 180.753 63.336C181.633 64.104 182.073 65.208 182.073 66.648V72.552H183.321V75H181.617ZM176.529 73.056C177.217 73.056 177.801 72.904 178.281 72.6C178.761 72.296 179.001 71.848 179.001 71.256V69.6H177.033C175.433 69.6 174.633 70.112 174.633 71.136V71.544C174.633 72.056 174.793 72.44 175.113 72.696C175.449 72.936 175.921 73.056 176.529 73.056ZM185.807 57.24H188.879V64.536H188.975C189.199 63.816 189.623 63.248 190.247 62.832C190.871 62.4 191.599 62.184 192.431 62.184C194.031 62.184 195.247 62.752 196.079 63.888C196.927 65.008 197.351 66.616 197.351 68.712C197.351 70.824 196.927 72.448 196.079 73.584C195.247 74.72 194.031 75.288 192.431 75.288C191.599 75.288 190.871 75.072 190.247 74.64C189.639 74.208 189.215 73.632 188.975 72.912H188.879V75H185.807V57.24ZM191.447 72.744C192.247 72.744 192.895 72.48 193.391 71.952C193.887 71.424 194.135 70.712 194.135 69.816V67.656C194.135 66.76 193.887 66.048 193.391 65.52C192.895 64.976 192.247 64.704 191.447 64.704C190.711 64.704 190.095 64.888 189.599 65.256C189.119 65.624 188.879 66.112 188.879 66.72V70.704C188.879 71.36 189.119 71.864 189.599 72.216C190.095 72.568 190.711 72.744 191.447 72.744ZM207.667 62.472H210.547L205.507 77.232C205.347 77.68 205.163 78.064 204.955 78.384C204.763 78.72 204.531 78.992 204.259 79.2C203.987 79.408 203.659 79.56 203.275 79.656C202.891 79.752 202.443 79.8 201.931 79.8H200.083V77.352H202.339L202.915 75.6L198.427 62.472H201.475L203.659 69.096L204.475 72.264H204.619L205.483 69.096L207.667 62.472ZM223.291 76.056C223.291 76.712 223.171 77.288 222.931 77.784C222.707 78.296 222.331 78.72 221.803 79.056C221.275 79.392 220.595 79.648 219.763 79.824C218.931 80 217.915 80.088 216.715 80.088C215.659 80.088 214.763 80.016 214.027 79.872C213.291 79.744 212.683 79.552 212.203 79.296C211.739 79.056 211.403 78.752 211.195 78.384C210.987 78.016 210.883 77.6 210.883 77.136C210.883 76.432 211.075 75.88 211.459 75.48C211.859 75.096 212.411 74.848 213.115 74.736V74.472C212.603 74.344 212.203 74.096 211.915 73.728C211.643 73.344 211.507 72.896 211.507 72.384C211.507 72.064 211.571 71.784 211.699 71.544C211.827 71.288 211.995 71.072 212.203 70.896C212.427 70.72 212.675 70.576 212.947 70.464C213.219 70.336 213.507 70.24 213.811 70.176V70.08C213.043 69.728 212.467 69.24 212.083 68.616C211.715 67.992 211.531 67.264 211.531 66.432C211.531 65.152 211.971 64.128 212.851 63.36C213.731 62.576 215.019 62.184 216.715 62.184C217.099 62.184 217.475 62.208 217.843 62.256C218.227 62.304 218.579 62.384 218.899 62.496V62.088C218.899 60.872 219.491 60.264 220.675 60.264H222.619V62.616H219.955V62.952C220.611 63.32 221.099 63.8 221.419 64.392C221.739 64.984 221.899 65.664 221.899 66.432C221.899 67.696 221.459 68.712 220.579 69.48C219.715 70.248 218.427 70.632 216.715 70.632C215.979 70.632 215.339 70.56 214.795 70.416C214.555 70.528 214.347 70.68 214.171 70.872C213.995 71.048 213.907 71.272 213.907 71.544C213.907 72.168 214.451 72.48 215.539 72.48H218.899C220.435 72.48 221.547 72.8 222.235 73.44C222.939 74.064 223.291 74.936 223.291 76.056ZM220.411 76.416C220.411 76.016 220.251 75.704 219.931 75.48C219.611 75.256 219.059 75.144 218.275 75.144H214.003C213.571 75.464 213.355 75.896 213.355 76.44C213.355 76.92 213.555 77.296 213.955 77.568C214.355 77.84 215.035 77.976 215.995 77.976H217.531C218.539 77.976 219.267 77.848 219.715 77.592C220.179 77.336 220.411 76.944 220.411 76.416ZM216.715 68.544C218.219 68.544 218.971 67.904 218.971 66.624V66.216C218.971 64.936 218.219 64.296 216.715 64.296C215.211 64.296 214.459 64.936 214.459 66.216V66.624C214.459 67.904 215.211 68.544 216.715 68.544ZM236.51 76.056C236.51 76.712 236.39 77.288 236.15 77.784C235.926 78.296 235.55 78.72 235.022 79.056C234.494 79.392 233.814 79.648 232.982 79.824C232.15 80 231.134 80.088 229.934 80.088C228.878 80.088 227.982 80.016 227.246 79.872C226.51 79.744 225.902 79.552 225.422 79.296C224.958 79.056 224.622 78.752 224.414 78.384C224.206 78.016 224.102 77.6 224.102 77.136C224.102 76.432 224.294 75.88 224.678 75.48C225.078 75.096 225.63 74.848 226.334 74.736V74.472C225.822 74.344 225.422 74.096 225.134 73.728C224.862 73.344 224.726 72.896 224.726 72.384C224.726 72.064 224.79 71.784 224.918 71.544C225.046 71.288 225.214 71.072 225.422 70.896C225.646 70.72 225.894 70.576 226.166 70.464C226.438 70.336 226.726 70.24 227.03 70.176V70.08C226.262 69.728 225.686 69.24 225.302 68.616C224.934 67.992 224.75 67.264 224.75 66.432C224.75 65.152 225.19 64.128 226.07 63.36C226.95 62.576 228.238 62.184 229.934 62.184C230.318 62.184 230.694 62.208 231.062 62.256C231.446 62.304 231.798 62.384 232.118 62.496V62.088C232.118 60.872 232.71 60.264 233.894 60.264H235.838V62.616H233.174V62.952C233.83 63.32 234.318 63.8 234.638 64.392C234.958 64.984 235.118 65.664 235.118 66.432C235.118 67.696 234.678 68.712 233.798 69.48C232.934 70.248 231.646 70.632 229.934 70.632C229.198 70.632 228.558 70.56 228.014 70.416C227.774 70.528 227.566 70.68 227.39 70.872C227.214 71.048 227.126 71.272 227.126 71.544C227.126 72.168 227.67 72.48 228.758 72.48H232.118C233.654 72.48 234.766 72.8 235.454 73.44C236.158 74.064 236.51 74.936 236.51 76.056ZM233.63 76.416C233.63 76.016 233.47 75.704 233.15 75.48C232.83 75.256 232.278 75.144 231.494 75.144H227.222C226.79 75.464 226.574 75.896 226.574 76.44C226.574 76.92 226.774 77.296 227.174 77.568C227.574 77.84 228.254 77.976 229.214 77.976H230.75C231.758 77.976 232.486 77.848 232.934 77.592C233.398 77.336 233.63 76.944 233.63 76.416ZM229.934 68.544C231.438 68.544 232.19 67.904 232.19 66.624V66.216C232.19 64.936 231.438 64.296 229.934 64.296C228.43 64.296 227.678 64.936 227.678 66.216V66.624C227.678 67.904 228.43 68.544 229.934 68.544ZM247.431 58.224L245.655 59.376C246.759 60.528 247.647 61.856 248.319 63.36C248.991 64.864 249.327 66.536 249.327 68.376C249.327 69.56 249.183 70.592 248.895 71.472C248.607 72.336 248.199 73.056 247.671 73.632C247.159 74.192 246.543 74.608 245.823 74.88C245.103 75.152 244.303 75.288 243.423 75.288C242.479 75.288 241.631 75.144 240.879 74.856C240.143 74.552 239.511 74.128 238.983 73.584C238.471 73.04 238.079 72.376 237.807 71.592C237.535 70.808 237.399 69.936 237.399 68.976C237.399 68.08 237.511 67.264 237.735 66.528C237.975 65.792 238.311 65.16 238.743 64.632C239.175 64.104 239.695 63.696 240.303 63.408C240.927 63.12 241.615 62.976 242.367 62.976C243.231 62.976 243.951 63.192 244.527 63.624C245.119 64.04 245.583 64.608 245.919 65.328L246.063 65.256C245.871 64.44 245.527 63.664 245.031 62.928C244.551 62.192 243.967 61.488 243.279 60.816L241.215 62.112L240.111 60.792L241.983 59.664C241.423 59.2 240.831 58.768 240.207 58.368C239.599 57.968 238.983 57.592 238.359 57.24H243.039C243.263 57.368 243.479 57.52 243.687 57.696C243.895 57.856 244.111 58.024 244.335 58.2L246.351 56.928L247.431 58.224ZM243.375 72.936C244.223 72.936 244.895 72.664 245.391 72.12C245.887 71.576 246.135 70.816 246.135 69.84V68.448C246.135 67.472 245.887 66.712 245.391 66.168C244.895 65.624 244.223 65.352 243.375 65.352C242.511 65.352 241.831 65.624 241.335 66.168C240.839 66.712 240.591 67.472 240.591 68.448V69.84C240.591 70.816 240.839 71.576 241.335 72.12C241.831 72.664 242.511 72.936 243.375 72.936Z" fill="#421C63"/> -<defs> -<linearGradient id="paint0_linear_2491:57920" x1="18.001" y1="52.2482" x2="52.2289" y2="52.2482" gradientUnits="userSpaceOnUse"> -<stop stop-color="white"/> -<stop offset="1" stop-color="#86AFCF"/> -</linearGradient> -<clipPath id="clip0_2491:57920"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/stykkisholmsbaer.svg b/libs/application/templates/financial-aid/src/svg/stykkisholmsbaer.svg deleted file mode 100644 index d509191d32bc..000000000000 --- a/libs/application/templates/financial-aid/src/svg/stykkisholmsbaer.svg +++ /dev/null @@ -1,12 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.9057 16.0943C47.8113 16.0943 47.717 16.0943 47.717 16C47.717 16 47.6226 16 47.5283 16.0943C33.566 21.0943 29.3208 22.5094 18 26.4717C18 30.3396 18 41.0943 18 53.9245V56.566C18 56.6604 18 56.6604 18.0943 56.6604C19.0377 77.6981 31.1132 96 47.1509 96C47.3396 96 47.6226 96 47.8113 96C48 96 48.1887 96 48.4717 96C64.5094 96 76.4906 77.6981 77.5283 56.6604C77.5283 56.6604 77.6226 56.6604 77.6226 56.566V53.9245C77.6226 41.1887 77.6226 30.3396 77.6226 26.4717C66.1132 22.5094 61.8679 21.0943 47.9057 16.0943Z" fill="#002E6D"/> -<path d="M47.9997 19.2076C47.9054 19.2076 47.811 19.2076 47.811 19.1132C47.811 19.1132 47.7167 19.1132 47.6223 19.2076C34.7922 23.7359 30.9242 25.0566 20.5469 28.7359C20.5469 32.2264 20.5469 42.1321 20.5469 53.8302V56.283C20.5469 56.3774 20.5469 56.3774 20.5469 56.3774C21.4903 75.717 32.528 92.4151 47.245 92.4151C47.4337 92.4151 47.6223 92.4151 47.811 92.4151C47.9997 92.4151 48.1884 92.4151 48.3771 92.4151C63.094 92.4151 74.1318 75.6227 74.9808 56.3774C74.9808 56.3774 75.0752 56.3774 75.0752 56.283V53.8302C75.0752 42.1321 75.0752 32.2264 75.0752 28.7359C64.6035 25.0566 60.7355 23.7359 47.9997 19.2076Z" fill="white"/> -<path d="M47.717 21.8491L23 30.1509V47.6981L36.6792 47.8868L38 76.3774C38 76.3774 41.5849 78.3585 47.8113 78.6415H47.9057C54.1321 78.3585 57.6226 76.3774 57.6226 76.3774L58.8491 47.8868L72.434 47.6981V30.1509L47.717 21.8491Z" fill="#002E6D"/> -<path d="M47.7164 81.283C43.2824 81.283 38.0938 79.3019 38.0938 79.3019L38.4711 87.6038C38.4711 87.6038 40.2636 88.3585 41.773 88.8302C43.0938 89.3019 45.0749 90.0566 47.7164 90.1509C50.2636 89.9623 52.2447 89.2075 53.5655 88.8302C54.9805 88.3585 56.8673 87.6038 56.8673 87.6038L57.2447 79.3019C57.2447 79.3962 52.1504 81.283 47.7164 81.283Z" fill="#002E6D"/> -<path d="M57.434 58.5472C57.434 63.9245 53.0943 68.2642 47.717 68.2642C42.3396 68.2642 38 63.9245 38 58.5472C38 53.1698 42.3396 48.8302 47.717 48.8302C53.0943 48.8302 57.434 53.2642 57.434 58.5472Z" fill="white"/> -<path d="M71.1134 42.9811H24.2266C24.2266 42.3207 24.4152 41.566 24.6039 40.9056C24.7926 40.2453 25.0756 39.5849 25.3586 39.0189C25.9247 37.8868 26.3964 36.849 27.5284 36.1887C28.7549 35.3396 30.5473 34.5849 32.0568 34.5849C32.8115 34.5849 33.5662 34.5849 34.2266 34.5849C34.8869 34.6792 35.453 34.7736 36.1134 34.8679C36.6794 35.0566 37.2454 35.1509 37.8115 35.3396C38.1888 35.4339 38.6605 35.6226 39.0379 35.717C40.3586 36.0943 42.2454 36.7547 44.1322 36.7547C45.8303 36.7547 47.2454 36.0943 48.7549 35.5283C49.2266 35.3396 49.6039 35.1509 49.9813 34.9623C50.3586 34.7736 50.8303 34.5849 51.2077 34.3962C52.0568 34.0189 52.9058 33.6415 53.7549 33.3585C54.6039 32.9811 55.5473 32.6981 56.3964 32.4151C57.2454 32.1321 58.0945 31.849 58.9435 31.6604C59.8869 31.566 60.736 31.4717 61.6794 31.566C62.5285 31.566 63.4718 31.6604 64.2266 32.0377C64.9813 32.3207 65.736 32.6981 66.3964 33.0755C67.1511 33.5472 67.8115 34.2075 68.3775 34.9623C68.6605 35.2453 68.7549 35.4339 69.0379 35.717C69.3209 36.1887 69.8869 37.1321 70.17 37.9811C70.736 39.5849 71.2077 40.9056 71.1134 42.9811Z" fill="white"/> -<path d="M56.3957 61.566L50.924 59.3962L48.6598 58.4528L48.2825 58.3585C48.2825 58.3585 48.2825 56.566 48.2825 55.717C49.2259 55.2453 50.0749 54.2076 50.0749 52.9811C50.0749 51.3774 48.7542 50.0566 47.056 50.0566C46.9617 50.0566 46.9617 50.0566 46.773 50.0566V55.9057V58.3585V58.4528C46.6787 58.5472 45.3579 59.6793 44.7919 60.151C43.8485 59.7736 42.5277 59.7736 41.5844 60.6227C40.3579 61.6604 40.2636 63.5472 41.3013 64.7736C41.3013 64.7736 41.3013 64.7736 41.49 64.9623L45.924 61.1887L47.7164 59.5849L48.1881 59.7736C48.1881 59.7736 49.8862 60.434 50.641 60.8113C50.7353 61.8491 51.3957 62.9811 52.5277 63.4528C54.0372 64.0189 55.7353 63.2642 56.3957 61.7547C56.3013 61.6604 56.3013 61.7547 56.3957 61.566Z" fill="#002E6D"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM116.266 75C115.21 75 114.402 74.728 113.842 74.184C113.298 73.624 113.026 72.832 113.026 71.808V64.92H111.178V62.472H112.138C112.602 62.472 112.914 62.368 113.074 62.16C113.25 61.936 113.338 61.608 113.338 61.176V59.04H116.098V62.472H118.666V64.92H116.098V72.552H118.474V75H116.266ZM129.011 62.472H131.891L126.851 77.232C126.691 77.68 126.507 78.064 126.299 78.384C126.107 78.72 125.875 78.992 125.603 79.2C125.331 79.408 125.003 79.56 124.619 79.656C124.235 79.752 123.787 79.8 123.275 79.8H121.427V77.352H123.683L124.259 75.6L119.771 62.472H122.819L125.003 69.096L125.819 72.264H125.963L126.827 69.096L129.011 62.472ZM133.917 57.24H136.989V67.944H137.109L138.765 65.688L141.573 62.472H145.053L140.733 67.32L145.509 75H141.861L138.645 69.384L136.989 71.184V75H133.917V57.24ZM147.393 57.24H150.465V67.944H150.585L152.241 65.688L155.049 62.472H158.529L154.209 67.32L158.985 75H155.337L152.121 69.384L150.465 71.184V75H147.393V57.24ZM162.406 60.648C161.766 60.648 161.302 60.504 161.014 60.216C160.742 59.928 160.606 59.56 160.606 59.112V58.632C160.606 58.184 160.742 57.816 161.014 57.528C161.302 57.24 161.766 57.096 162.406 57.096C163.03 57.096 163.486 57.24 163.774 57.528C164.062 57.816 164.206 58.184 164.206 58.632V59.112C164.206 59.56 164.062 59.928 163.774 60.216C163.486 60.504 163.03 60.648 162.406 60.648ZM160.87 62.472H163.942V75H160.87V62.472ZM171.607 75.288C170.407 75.288 169.399 75.088 168.583 74.688C167.767 74.272 167.047 73.704 166.423 72.984L168.295 71.16C168.759 71.688 169.263 72.104 169.807 72.408C170.367 72.712 171.007 72.864 171.727 72.864C172.463 72.864 172.991 72.736 173.311 72.48C173.647 72.224 173.815 71.872 173.815 71.424C173.815 71.056 173.695 70.768 173.455 70.56C173.231 70.336 172.839 70.184 172.279 70.104L171.031 69.936C169.671 69.76 168.631 69.376 167.911 68.784C167.207 68.176 166.855 67.296 166.855 66.144C166.855 65.536 166.967 64.992 167.191 64.512C167.415 64.016 167.735 63.6 168.151 63.264C168.567 62.912 169.063 62.648 169.639 62.472C170.231 62.28 170.887 62.184 171.607 62.184C172.215 62.184 172.751 62.232 173.215 62.328C173.695 62.408 174.127 62.536 174.511 62.712C174.895 62.872 175.247 63.08 175.567 63.336C175.887 63.576 176.199 63.848 176.503 64.152L174.703 65.952C174.335 65.568 173.895 65.248 173.383 64.992C172.871 64.736 172.311 64.608 171.703 64.608C171.031 64.608 170.543 64.728 170.239 64.968C169.951 65.208 169.807 65.52 169.807 65.904C169.807 66.32 169.927 66.64 170.167 66.864C170.423 67.072 170.847 67.224 171.439 67.32L172.711 67.488C175.415 67.872 176.767 69.104 176.767 71.184C176.767 71.792 176.639 72.352 176.383 72.864C176.143 73.36 175.799 73.792 175.351 74.16C174.903 74.512 174.359 74.792 173.719 75C173.095 75.192 172.391 75.288 171.607 75.288ZM179.479 57.24H182.551V64.56H182.671C182.927 63.888 183.327 63.328 183.871 62.88C184.431 62.416 185.199 62.184 186.175 62.184C187.471 62.184 188.463 62.608 189.151 63.456C189.839 64.304 190.183 65.512 190.183 67.08V75H187.111V67.392C187.111 66.496 186.951 65.824 186.631 65.376C186.311 64.928 185.783 64.704 185.047 64.704C184.727 64.704 184.415 64.752 184.111 64.848C183.823 64.928 183.559 65.056 183.319 65.232C183.095 65.392 182.911 65.6 182.767 65.856C182.623 66.096 182.551 66.384 182.551 66.72V75H179.479V57.24ZM198.557 75.288C197.661 75.288 196.853 75.136 196.133 74.832C195.429 74.528 194.821 74.088 194.309 73.512C193.813 72.936 193.429 72.248 193.157 71.448C192.885 70.632 192.749 69.72 192.749 68.712C192.749 67.704 192.885 66.8 193.157 66C193.429 65.2 193.813 64.52 194.309 63.96C194.821 63.384 195.429 62.944 196.133 62.64C196.853 62.336 197.661 62.184 198.557 62.184C199.453 62.184 200.261 62.336 200.981 62.64C201.701 62.944 202.309 63.384 202.805 63.96C203.317 64.52 203.709 65.2 203.981 66C204.253 66.8 204.389 67.704 204.389 68.712C204.389 69.72 204.253 70.632 203.981 71.448C203.709 72.248 203.317 72.936 202.805 73.512C202.309 74.088 201.701 74.528 200.981 74.832C200.261 75.136 199.453 75.288 198.557 75.288ZM198.557 72.816C199.373 72.816 200.013 72.568 200.477 72.072C200.941 71.576 201.173 70.848 201.173 69.888V67.56C201.173 66.616 200.941 65.896 200.477 65.4C200.013 64.904 199.373 64.656 198.557 64.656C197.757 64.656 197.125 64.904 196.661 65.4C196.197 65.896 195.965 66.616 195.965 67.56V69.888C195.965 70.848 196.197 71.576 196.661 72.072C197.125 72.568 197.757 72.816 198.557 72.816ZM198.893 61.056L197.045 60.168L199.325 55.68L201.917 56.952L198.893 61.056ZM210.184 75C209.128 75 208.352 74.736 207.856 74.208C207.36 73.68 207.112 72.936 207.112 71.976V57.24H210.184V72.552H211.84V75H210.184ZM214.167 75V62.472H217.239V64.56H217.359C217.599 63.904 217.983 63.344 218.511 62.88C219.039 62.416 219.775 62.184 220.719 62.184C221.583 62.184 222.327 62.392 222.951 62.808C223.575 63.224 224.039 63.856 224.343 64.704H224.391C224.615 64 225.055 63.408 225.711 62.928C226.383 62.432 227.223 62.184 228.231 62.184C229.463 62.184 230.407 62.608 231.063 63.456C231.735 64.304 232.071 65.512 232.071 67.08V75H228.999V67.392C228.999 65.6 228.327 64.704 226.983 64.704C226.679 64.704 226.383 64.752 226.095 64.848C225.823 64.928 225.575 65.056 225.351 65.232C225.143 65.392 224.975 65.6 224.847 65.856C224.719 66.096 224.655 66.384 224.655 66.72V75H221.583V67.392C221.583 65.6 220.911 64.704 219.567 64.704C219.279 64.704 218.991 64.752 218.703 64.848C218.431 64.928 218.183 65.056 217.959 65.232C217.751 65.392 217.575 65.6 217.431 65.856C217.303 66.096 217.239 66.384 217.239 66.72V75H214.167ZM239.575 75.288C238.375 75.288 237.367 75.088 236.551 74.688C235.735 74.272 235.015 73.704 234.391 72.984L236.263 71.16C236.727 71.688 237.231 72.104 237.775 72.408C238.335 72.712 238.975 72.864 239.695 72.864C240.431 72.864 240.959 72.736 241.279 72.48C241.615 72.224 241.783 71.872 241.783 71.424C241.783 71.056 241.663 70.768 241.423 70.56C241.199 70.336 240.807 70.184 240.247 70.104L238.999 69.936C237.639 69.76 236.599 69.376 235.879 68.784C235.175 68.176 234.823 67.296 234.823 66.144C234.823 65.536 234.935 64.992 235.159 64.512C235.383 64.016 235.703 63.6 236.119 63.264C236.535 62.912 237.031 62.648 237.607 62.472C238.199 62.28 238.855 62.184 239.575 62.184C240.183 62.184 240.719 62.232 241.183 62.328C241.663 62.408 242.095 62.536 242.479 62.712C242.863 62.872 243.215 63.08 243.535 63.336C243.855 63.576 244.167 63.848 244.471 64.152L242.671 65.952C242.303 65.568 241.863 65.248 241.351 64.992C240.839 64.736 240.279 64.608 239.671 64.608C238.999 64.608 238.511 64.728 238.207 64.968C237.919 65.208 237.775 65.52 237.775 65.904C237.775 66.32 237.895 66.64 238.135 66.864C238.391 67.072 238.815 67.224 239.407 67.32L240.679 67.488C243.383 67.872 244.735 69.104 244.735 71.184C244.735 71.792 244.607 72.352 244.351 72.864C244.111 73.36 243.767 73.792 243.319 74.16C242.871 74.512 242.327 74.792 241.687 75C241.063 75.192 240.359 75.288 239.575 75.288ZM247.448 57.24H250.52V64.536H250.616C250.84 63.816 251.264 63.248 251.888 62.832C252.512 62.4 253.24 62.184 254.072 62.184C255.672 62.184 256.888 62.752 257.72 63.888C258.568 65.008 258.992 66.616 258.992 68.712C258.992 70.824 258.568 72.448 257.72 73.584C256.888 74.72 255.672 75.288 254.072 75.288C253.24 75.288 252.512 75.072 251.888 74.64C251.28 74.208 250.856 73.632 250.616 72.912H250.52V75H247.448V57.24ZM253.088 72.744C253.888 72.744 254.536 72.48 255.032 71.952C255.528 71.424 255.776 70.712 255.776 69.816V67.656C255.776 66.76 255.528 66.048 255.032 65.52C254.536 64.976 253.888 64.704 253.088 64.704C252.352 64.704 251.736 64.888 251.24 65.256C250.76 65.624 250.52 66.112 250.52 66.72V70.704C250.52 71.36 250.76 71.864 251.24 72.216C251.736 72.568 252.352 72.744 253.088 72.744ZM266.471 69.504C265.703 69.52 265.111 69.664 264.695 69.936C264.279 70.192 264.071 70.576 264.071 71.088V71.472C264.071 71.984 264.231 72.376 264.551 72.648C264.871 72.92 265.351 73.056 265.991 73.056C266.663 73.056 267.239 72.904 267.719 72.6C268.199 72.296 268.439 71.848 268.439 71.256V69.504H266.471ZM276.671 67.608V67.392C276.671 66.528 276.455 65.832 276.023 65.304C275.607 64.76 274.999 64.488 274.199 64.488C273.383 64.488 272.735 64.76 272.255 65.304C271.775 65.848 271.535 66.552 271.535 67.416V67.608H276.671ZM274.631 72.792C275.383 72.792 276.015 72.632 276.527 72.312C277.039 71.992 277.471 71.6 277.823 71.136L279.479 72.984C278.967 73.704 278.271 74.272 277.391 74.688C276.511 75.088 275.503 75.288 274.367 75.288C273.759 75.288 273.191 75.216 272.663 75.072C272.135 74.928 271.663 74.736 271.247 74.496C270.847 74.256 270.503 73.984 270.215 73.68C269.927 73.376 269.711 73.056 269.567 72.72H269.423C269.311 73.04 269.135 73.352 268.895 73.656C268.671 73.96 268.375 74.232 268.007 74.472C267.639 74.712 267.199 74.904 266.687 75.048C266.191 75.208 265.607 75.288 264.935 75.288C263.671 75.288 262.687 74.944 261.983 74.256C261.295 73.568 260.951 72.672 260.951 71.568C260.951 70.912 261.079 70.336 261.335 69.84C261.591 69.344 261.951 68.936 262.415 68.616C262.879 68.28 263.439 68.032 264.095 67.872C264.751 67.696 265.487 67.608 266.303 67.608H268.439V66.84C268.439 66.136 268.255 65.592 267.887 65.208C267.519 64.824 266.935 64.632 266.135 64.632C265.399 64.632 264.807 64.784 264.359 65.088C263.927 65.392 263.559 65.768 263.255 66.216L261.431 64.584C261.895 63.864 262.511 63.288 263.279 62.856C264.047 62.408 265.063 62.184 266.327 62.184C267.287 62.184 268.055 62.384 268.631 62.784C269.207 63.168 269.655 63.656 269.975 64.248H270.119C270.439 63.656 270.959 63.168 271.679 62.784C272.399 62.384 273.263 62.184 274.271 62.184C275.247 62.184 276.087 62.352 276.791 62.688C277.495 63.024 278.071 63.48 278.519 64.056C278.983 64.632 279.319 65.304 279.527 66.072C279.751 66.824 279.863 67.632 279.863 68.496V69.504H271.511V69.816C271.511 70.712 271.783 71.432 272.327 71.976C272.871 72.52 273.639 72.792 274.631 72.792ZM282.581 75V62.472H285.653V65.064H285.773C285.853 64.728 285.973 64.408 286.133 64.104C286.309 63.784 286.533 63.504 286.805 63.264C287.077 63.024 287.397 62.832 287.765 62.688C288.149 62.544 288.589 62.472 289.085 62.472H289.757V65.376H288.797C287.757 65.376 286.973 65.528 286.445 65.832C285.917 66.136 285.653 66.632 285.653 67.32V75H282.581Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/sudavikurhreppur.svg b/libs/application/templates/financial-aid/src/svg/sudavikurhreppur.svg deleted file mode 100644 index d52d4321013d..000000000000 --- a/libs/application/templates/financial-aid/src/svg/sudavikurhreppur.svg +++ /dev/null @@ -1,17 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M81.602 16C81.602 30.2598 81.602 44.5542 81.602 58.814C81.4639 59.1938 81.2913 59.5391 81.1877 59.9189C80.0828 63.5097 79.4959 67.3423 77.8385 70.6569C71.7617 82.8796 61.369 90.4756 49.2153 95.8619C48.6974 96.1036 47.8342 96 47.2818 95.7583C38.8571 92.0639 31.2956 87.161 25.1842 80.1864C18.5205 72.5904 14.8605 63.9586 15.0332 53.6694C15.2058 41.8956 15.0332 30.0872 15.0332 18.3133C15.0332 17.6228 15.0332 16.9668 15.0332 16.0691C15.9309 16.0691 16.6905 16.0691 17.4156 16.0691C37.9939 16.0691 58.5722 16.0691 79.1851 16.0691C79.9792 16.0691 80.7734 16.0345 81.602 16ZM80.5317 36.7855C80.5662 36.3366 80.6353 35.8187 80.6353 35.3008C80.6353 29.8455 80.6007 24.3556 80.6698 18.9003C80.7043 17.3811 80.2209 16.9322 78.7017 16.9322C58.4341 16.9668 38.2011 16.9668 17.9335 16.9322C16.3798 16.9322 15.9654 17.4847 15.9654 18.9348C16.0345 28.8787 16 38.8571 16 48.801C16 49.388 16.1381 49.9404 16.2416 50.7691C17.0703 50.2167 17.5882 49.9059 18.0716 49.5261C22.4911 46.0388 26.9106 42.5516 31.2956 39.0298C31.9171 38.5464 32.4695 37.9594 32.9874 37.3725C36.3021 33.6435 39.5131 29.811 43.0004 26.2546C44.347 24.8735 45.9352 23.7341 46.6948 21.8351C47.1782 20.6267 48.2486 20.5576 49.0772 21.3517C50.5274 22.8019 52.599 23.8722 52.5645 26.3927C52.5645 26.7035 52.7371 27.1178 52.9788 27.2905C56.2934 29.5347 59.4009 32.1934 63.6133 32.6767C65.9611 32.953 68.2399 33.3673 70.1044 35.0591C70.6914 35.6116 71.6581 35.9223 72.4523 36.0259C75.0763 36.3366 77.7004 36.5093 80.5317 36.7855ZM80.6007 50.2857C76.5956 50.3893 72.9702 50.044 69.5174 48.6629C62.1286 45.7281 54.5325 43.6219 46.6258 42.6897C44.6577 42.448 42.6551 42.2754 40.687 42.0682C40.3418 38.8571 40.1346 35.9223 42.3789 33.4363C43.0004 32.7458 43.5183 31.9517 43.8636 31.123C44.2088 30.3289 44.2434 29.3966 44.3815 28.4989C43.5874 28.568 43.2076 28.7061 42.9313 28.9823C40.2727 31.9862 37.6141 34.9901 34.921 37.9594C34.0233 38.9607 33.1601 40.0311 32.1588 40.9633C30.3979 42.6552 28.637 44.3815 26.7035 45.9007C23.5269 48.3867 20.2468 50.7 17.0358 53.117C16.5524 53.4968 16.2762 54.1873 15.6202 55.1886C16.8631 55.1886 17.4501 55.1886 18.0716 55.1886C38.132 55.1886 58.1924 55.1886 78.2529 55.1886C78.6672 55.1886 79.1161 55.2922 79.4613 55.1541C79.8757 54.9469 80.4972 54.5671 80.5317 54.1873C80.7043 52.9098 80.6007 51.6668 80.6007 50.2857ZM72.4868 62.1286C72.4523 61.9905 72.4523 61.8179 72.4177 61.6798C55.4303 61.6798 38.4428 61.6798 21.0064 61.6798C21.9387 62.4394 22.4911 62.9227 23.3888 63.6824C21.1445 63.6824 19.3146 63.6824 17.4846 63.6824C17.2775 65.754 18.5895 65.6504 19.798 65.6504C38.7535 65.6504 57.7436 65.6504 76.6991 65.6504C76.9754 65.6504 77.2861 65.6504 77.5623 65.6159C78.7363 65.5814 79.1851 65.0289 78.9089 63.6478C75.7324 63.6478 72.5558 63.6478 69.3793 63.6478C69.3793 63.5442 69.3448 63.4407 69.3448 63.3371C70.4151 62.9227 71.451 62.5084 72.4868 62.1286ZM48.2486 56.6042C38.3737 56.6042 28.4643 56.6042 18.5895 56.6042C18.1407 56.6042 17.6573 56.6042 17.2084 56.6042C16.0345 56.6388 15.8618 57.4674 16.4833 58.0544C17.5882 59.1247 18.624 60.3332 20.523 60.3332C39.7893 60.2641 59.0211 60.2641 78.2874 60.3332C80.3245 60.3332 80.29 59.2628 80.3936 57.8472C80.5317 56.0518 79.2542 56.5697 78.4255 56.5697C68.378 56.6042 58.3306 56.6042 48.2486 56.6042ZM47.7306 69.0686C47.7306 69.0341 47.7652 68.9996 47.7652 68.965C50.7345 68.4126 53.7039 67.8602 56.6387 67.3077C56.6042 67.1696 56.5697 67.0315 56.5351 66.8934C47.2127 66.8934 37.8903 66.8934 28.3608 66.8934C28.8096 67.6875 29.1204 68.24 29.4311 68.7924C29.3621 68.9305 29.293 69.0341 29.224 69.1722C28.4643 68.9305 27.4631 68.896 26.9797 68.3781C24.4592 65.5123 21.3862 67.1351 18.4514 66.7208C18.9348 70.2771 19.3836 70.6914 22.4221 70.6914C28.5334 70.6914 34.6102 70.6914 40.7216 70.6914C52.1156 70.6914 63.5097 70.6914 74.9037 70.6914C76.0086 70.6914 77.1135 70.7259 77.0789 69.0341C67.2732 69.0686 57.5019 69.0686 47.7306 69.0686ZM74.662 74.6275C74.593 74.3858 74.4894 74.1441 74.4203 73.9025C73.6262 73.8679 72.8666 73.7644 72.0725 73.7644C62.3703 73.7644 52.6335 73.7644 42.9313 73.7644C41.8265 73.7644 40.5489 74.0751 40.2727 72.3833C40.2382 72.2106 39.8584 71.9344 39.6167 71.9344C37.8213 71.8999 36.0259 71.8999 34.0923 71.8999C34.2995 72.6595 34.4376 73.1083 34.6448 73.9025C33.9542 73.7989 33.2637 73.9025 33.091 73.6262C31.6063 71.451 29.3966 71.8653 27.2904 71.8653C25.1842 71.8653 23.1126 71.8653 20.9374 71.8653C21.5589 74.9038 22.6292 75.836 25.1842 75.836C40.2382 75.836 55.3267 75.836 70.3806 75.836C71.0712 75.836 71.7962 75.905 72.4523 75.7324C73.2119 75.4907 73.9369 75.0073 74.662 74.6275ZM24.252 76.9409C25.4605 79.9102 27.1178 81.0496 29.8454 81.0496C42.1372 81.0496 54.4635 81.0496 66.7552 81.0496C69.4829 81.0496 71.3129 79.7376 72.4868 76.6646C71.1748 76.7337 70.0008 76.6646 68.8959 76.9063C66.5481 77.4243 64.2693 78.5291 61.9214 78.6327C55.8446 78.978 49.7678 78.9435 43.6564 78.978C43.173 78.978 42.5861 78.5637 42.2753 78.1839C40.8942 76.5611 39.7893 76.2849 37.5451 77.1826C37.9594 77.7695 38.3392 78.3565 38.719 78.9435C37.9249 79.047 37.0271 79.0125 36.7509 78.5982C35.5079 76.6992 33.678 76.6646 31.7445 76.7337C29.8454 76.8028 27.9464 76.7337 26.0474 76.7682C25.495 76.7682 24.908 76.8718 24.252 76.9409ZM28.706 82.189C31.0884 84.7441 33.022 86.4014 36.3711 86.2978C44.6577 86.0216 52.9443 86.1252 61.2309 86.2633C64.3038 86.3323 65.6504 84.2262 67.722 82.3962C67.1696 82.2581 66.9624 82.1545 66.7552 82.1545C63.3025 82.1545 59.8498 82.12 56.397 82.1545C55.8101 82.1545 55.085 82.3962 54.6707 82.8105C53.2205 84.2262 51.4941 84.4333 49.5951 84.3297C48.0414 84.2262 46.4877 84.2607 44.9339 84.3297C43.2766 84.4333 41.7574 84.2607 40.618 82.8105C40.4108 82.5343 39.962 82.2236 39.6167 82.2236C36.164 82.1545 32.6767 82.189 28.706 82.189ZM60.9892 87.3681C59.539 87.3681 58.0543 87.4027 56.6042 87.3681C53.911 87.2646 51.2524 87.0919 49.3189 89.6815C48.5248 90.7173 47.3163 90.6828 46.6948 89.3017C45.9352 87.5753 44.6922 87.1955 42.9659 87.3336C41.3085 87.4717 39.6167 87.3681 37.9594 87.3681C37.1307 87.3681 36.3366 87.3681 35.5079 87.3681C35.4734 87.5408 35.4734 87.7134 35.4389 87.8861C37.7522 89.3362 39.6512 91.3388 42.8623 91.0971C46.246 90.8554 49.6642 90.8209 53.0479 91.0971C56.4661 91.4424 58.7104 89.6815 60.9892 87.3681ZM43.6564 92.5127C46.6948 95.3095 49.7332 95.344 53.0824 92.5127C49.8368 92.5127 46.8329 92.5127 43.6564 92.5127Z" fill="#0066B9"/> -<path d="M80.5311 36.7855C77.6998 36.5438 75.0758 36.3367 72.4862 36.0259C71.6575 35.9223 70.7253 35.6116 70.1383 35.0591C68.2739 33.3673 65.9951 32.953 63.6472 32.6767C59.4348 32.1934 56.3274 29.5002 53.0127 27.2905C52.7711 27.1178 52.5639 26.7035 52.5984 26.3928C52.6675 23.8723 50.5958 22.8019 49.1112 21.3518C48.2825 20.5576 47.2121 20.6267 46.7288 21.8351C45.9692 23.7342 44.4154 24.8736 43.0343 26.2547C39.5471 29.811 36.336 33.6435 32.9869 37.3725C32.4689 37.9594 31.9165 38.5464 31.295 39.0298C26.91 42.5516 22.4905 46.0389 18.071 49.5261C17.5876 49.9059 17.0352 50.2167 16.2411 50.7691C16.1375 49.9405 15.9994 49.388 15.9994 48.8011C15.9994 38.8572 15.9994 28.8787 15.9648 18.9348C15.9648 17.4847 16.3446 16.9323 17.9329 16.9323C38.2005 16.9668 58.4336 16.9668 78.7011 16.9323C80.2203 16.9323 80.7037 17.3811 80.6692 18.9003C80.6001 24.3556 80.6347 29.8455 80.6347 35.3008C80.6347 35.8187 80.5656 36.3021 80.5311 36.7855ZM25.3218 30.7777C27.9804 30.7777 30.052 28.7406 30.052 26.1165C30.052 23.4579 28.0494 21.5244 25.3218 21.5589C22.7322 21.5589 20.6606 23.5615 20.626 26.0475C20.626 28.6025 22.7322 30.7432 25.3218 30.7777Z" fill="white"/> -<path d="M80.6003 50.2857C80.6003 51.6668 80.6694 52.9443 80.5658 54.1528C80.5313 54.5326 79.9443 54.9124 79.4955 55.1196C79.1502 55.2922 78.7013 55.1541 78.287 55.1541C58.2266 55.1541 38.1662 55.1541 18.1057 55.1541C17.4842 55.1541 16.8628 55.1541 15.6543 55.1541C16.3103 54.1528 16.552 53.4622 17.0699 53.0824C20.281 50.631 23.5611 48.3522 26.7376 45.8662C28.6711 44.347 30.432 42.6206 32.1929 40.9288C33.1597 39.9965 34.0229 38.9262 34.9551 37.9249C37.6137 34.9901 40.2723 31.9862 42.9655 29.0168C43.2072 28.7406 43.587 28.6025 44.4156 28.5334C44.243 29.3966 44.2085 30.3289 43.8977 31.1575C43.5524 31.9862 43 32.7803 42.413 33.4709C40.1688 35.9568 40.3759 38.9262 40.7212 42.1027C42.7238 42.3099 44.6918 42.4825 46.6599 42.7242C54.5667 43.6565 62.1627 45.7626 69.5516 48.6975C72.9698 50.044 76.5952 50.3893 80.6003 50.2857Z" fill="white"/> -<path d="M72.4874 62.1286C71.4516 62.5429 70.4158 62.9227 69.3799 63.3371C69.3799 63.4406 69.4145 63.5442 69.4145 63.6478C72.591 63.6478 75.733 63.6478 78.944 63.6478C79.2203 65.0289 78.7714 65.5813 77.5975 65.6159C77.3212 65.6159 77.0105 65.6504 76.7343 65.6504C57.7787 65.6504 38.7887 65.6504 19.8331 65.6504C18.6247 65.6504 17.3126 65.754 17.5198 63.6823C19.3497 63.6823 21.1797 63.6823 23.424 63.6823C22.5263 62.9227 21.9393 62.4394 21.0416 61.6797C38.5124 61.6797 55.4654 61.6797 72.4529 61.6797C72.4529 61.8179 72.4529 61.956 72.4874 62.1286Z" fill="white"/> -<path d="M48.2493 56.6043C58.2968 56.6043 68.3788 56.6043 78.4263 56.6388C79.2549 56.6388 80.5324 56.1209 80.3943 57.9163C80.2907 59.3319 80.3253 60.4023 78.2882 60.4023C59.0219 60.3332 39.7901 60.3332 20.5238 60.4023C18.6248 60.4023 17.589 59.2283 16.4841 58.1235C15.8626 57.5365 16.0352 56.6733 17.2092 56.6733C17.658 56.6733 18.1414 56.6733 18.5903 56.6733C28.4996 56.6043 38.3745 56.6043 48.2493 56.6043Z" fill="white"/> -<path d="M47.731 69.0686C57.5023 69.0686 67.2736 69.0686 77.1139 69.0686C77.1829 70.7605 76.078 70.726 74.9386 70.726C63.5446 70.726 52.1506 70.726 40.7565 70.726C34.6452 70.726 28.5683 70.726 22.457 70.726C19.4531 70.726 18.9697 70.2771 18.4863 66.7553C21.4212 67.1351 24.4941 65.5469 27.0146 68.4126C27.4635 68.9305 28.4993 68.9651 29.2589 69.2068C29.3279 69.0686 29.397 68.9651 29.466 68.827C29.1553 68.2745 28.8446 67.7221 28.3957 66.928C37.9253 66.928 47.2477 66.928 56.5701 66.928C56.6046 67.0661 56.6391 67.2042 56.6736 67.3423C53.7043 67.8947 50.7349 68.4472 47.8001 68.9996C47.7656 68.9996 47.7656 69.0341 47.731 69.0686Z" fill="white"/> -<path d="M74.6615 74.6276C73.9364 75.0074 73.2114 75.4562 72.4172 75.6979C71.7612 75.8705 71.0361 75.8015 70.3456 75.8015C55.2916 75.8015 40.2032 75.8015 25.1492 75.8015C22.5942 75.8015 21.5238 74.8693 20.9023 71.8308C23.043 71.8308 25.1492 71.8308 27.2554 71.8308C29.3616 71.8308 31.5713 71.4165 33.056 73.5917C33.2286 73.868 33.9537 73.7644 34.6097 73.868C34.4026 73.1084 34.2644 72.625 34.0573 71.8654C35.9908 71.8654 37.7862 71.8654 39.5817 71.8999C39.8234 71.8999 40.2032 72.1761 40.2377 72.3488C40.5139 74.0406 41.7914 73.7299 42.8963 73.7299C52.5985 73.7299 62.3352 73.7299 72.0374 73.7299C72.8316 73.7299 73.5912 73.8334 74.3853 73.868C74.4889 74.1442 74.5925 74.3859 74.6615 74.6276Z" fill="white"/> -<path d="M24.252 76.9409C24.908 76.8718 25.4949 76.7682 26.0819 76.7337C27.9809 76.6992 29.8799 76.7682 31.7789 76.6992C33.7125 76.6301 35.5424 76.6301 36.7854 78.5637C37.0616 78.978 37.9593 79.0125 38.7535 78.9089C38.3737 78.322 37.9939 77.7695 37.5795 77.148C39.7893 76.2503 40.9287 76.5611 42.3098 78.1493C42.6551 78.5291 43.242 78.9435 43.6909 78.9435C49.7677 78.9089 55.8791 78.9435 61.9559 78.5982C64.3037 78.4601 66.5826 77.3897 68.9304 76.8718C70.0353 76.6301 71.2092 76.6992 72.5213 76.6301C71.3473 79.7031 69.4829 81.0151 66.7897 81.0151C54.498 81.0151 42.1717 81.0151 29.8799 81.0151C27.0832 81.0842 25.4604 79.9102 24.252 76.9409Z" fill="white"/> -<path d="M28.7051 82.189C32.6757 82.189 36.163 82.189 39.6503 82.2235C39.9955 82.2235 40.4099 82.5343 40.6516 82.8105C41.7564 84.2607 43.2756 84.4333 44.9675 84.3297C46.5212 84.2607 48.075 84.2261 49.6287 84.3297C51.5277 84.4333 53.2541 84.2261 54.7042 82.8105C55.1185 82.4307 55.8436 82.1545 56.4306 82.1545C59.8833 82.0854 63.3361 82.12 66.7888 82.1545C66.996 82.1545 67.2031 82.2581 67.7556 82.3962C65.6839 84.1916 64.3374 86.2978 61.2644 86.2633C52.9778 86.1251 44.6913 86.0216 36.4047 86.2978C33.021 86.4014 31.0529 84.744 28.7051 82.189Z" fill="white"/> -<path d="M60.9884 87.3681C58.7096 89.6815 56.4653 91.4424 53.0816 91.1316C49.6979 90.8554 46.2797 90.8554 42.896 91.1316C39.685 91.3733 37.7515 89.3362 35.4727 87.9206C35.5072 87.7479 35.5072 87.5753 35.5417 87.4027C36.3704 87.4027 37.1645 87.4027 37.9932 87.4027C39.6505 87.4027 41.3423 87.5063 42.9996 87.3681C44.726 87.23 45.969 87.6098 46.7286 89.3362C47.3156 90.7173 48.5585 90.7518 49.3527 89.716C51.2862 87.1265 53.9103 87.2991 56.638 87.4027C58.0536 87.4372 59.5383 87.3681 60.9884 87.3681Z" fill="white"/> -<path d="M43.6562 92.5128C46.8328 92.5128 49.8367 92.5128 53.0822 92.5128C49.7676 95.3094 46.6947 95.3094 43.6562 92.5128Z" fill="white"/> -<path d="M25.3231 30.7777C22.7335 30.7777 20.5928 28.637 20.6274 26.0475C20.6274 23.5615 22.7335 21.5589 25.3231 21.5589C28.0853 21.5589 30.0533 23.4579 30.0533 26.1165C30.0533 28.7406 27.9817 30.7777 25.3231 30.7777Z" fill="#0066B9"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM117.992 61.056L116.144 60.168L118.424 55.68L121.016 56.952L117.992 61.056ZM119.936 72.912H119.816C119.704 73.232 119.552 73.536 119.36 73.824C119.184 74.096 118.952 74.344 118.664 74.568C118.392 74.792 118.056 74.968 117.656 75.096C117.272 75.224 116.824 75.288 116.312 75.288C115.016 75.288 114.024 74.864 113.336 74.016C112.648 73.168 112.304 71.96 112.304 70.392V62.472H115.376V70.08C115.376 70.944 115.544 71.608 115.88 72.072C116.216 72.52 116.752 72.744 117.488 72.744C117.792 72.744 118.088 72.704 118.376 72.624C118.68 72.544 118.944 72.424 119.168 72.264C119.392 72.088 119.576 71.88 119.72 71.64C119.864 71.384 119.936 71.088 119.936 70.752V62.472H123.008V75H119.936V72.912ZM135.845 58.224L134.069 59.376C135.173 60.528 136.061 61.856 136.733 63.36C137.405 64.864 137.741 66.536 137.741 68.376C137.741 69.56 137.597 70.592 137.309 71.472C137.021 72.336 136.613 73.056 136.085 73.632C135.573 74.192 134.957 74.608 134.237 74.88C133.517 75.152 132.717 75.288 131.837 75.288C130.893 75.288 130.045 75.144 129.293 74.856C128.557 74.552 127.925 74.128 127.397 73.584C126.885 73.04 126.493 72.376 126.221 71.592C125.949 70.808 125.813 69.936 125.813 68.976C125.813 68.08 125.925 67.264 126.149 66.528C126.389 65.792 126.725 65.16 127.157 64.632C127.589 64.104 128.109 63.696 128.717 63.408C129.341 63.12 130.029 62.976 130.781 62.976C131.645 62.976 132.365 63.192 132.941 63.624C133.533 64.04 133.997 64.608 134.333 65.328L134.477 65.256C134.285 64.44 133.941 63.664 133.445 62.928C132.965 62.192 132.381 61.488 131.693 60.816L129.629 62.112L128.525 60.792L130.397 59.664C129.837 59.2 129.245 58.768 128.621 58.368C128.013 57.968 127.397 57.592 126.773 57.24H131.453C131.677 57.368 131.893 57.52 132.101 57.696C132.309 57.856 132.525 58.024 132.749 58.2L134.765 56.928L135.845 58.224ZM131.789 72.936C132.637 72.936 133.309 72.664 133.805 72.12C134.301 71.576 134.549 70.816 134.549 69.84V68.448C134.549 67.472 134.301 66.712 133.805 66.168C133.309 65.624 132.637 65.352 131.789 65.352C130.925 65.352 130.245 65.624 129.749 66.168C129.253 66.712 129.005 67.472 129.005 68.448V69.84C129.005 70.816 129.253 71.576 129.749 72.12C130.245 72.664 130.925 72.936 131.789 72.936ZM149.906 75C149.234 75 148.698 74.808 148.298 74.424C147.914 74.024 147.674 73.496 147.578 72.84H147.434C147.226 73.656 146.802 74.272 146.162 74.688C145.522 75.088 144.73 75.288 143.786 75.288C142.506 75.288 141.522 74.952 140.834 74.28C140.146 73.608 139.802 72.712 139.802 71.592C139.802 70.296 140.266 69.336 141.194 68.712C142.122 68.072 143.442 67.752 145.154 67.752H147.29V66.84C147.29 66.136 147.106 65.592 146.738 65.208C146.37 64.824 145.778 64.632 144.962 64.632C144.242 64.632 143.658 64.792 143.21 65.112C142.778 65.416 142.41 65.784 142.106 66.216L140.282 64.584C140.746 63.864 141.362 63.288 142.13 62.856C142.898 62.408 143.914 62.184 145.178 62.184C146.874 62.184 148.162 62.568 149.042 63.336C149.922 64.104 150.362 65.208 150.362 66.648V72.552H151.61V75H149.906ZM144.818 73.056C145.506 73.056 146.09 72.904 146.57 72.6C147.05 72.296 147.29 71.848 147.29 71.256V69.6H145.322C143.722 69.6 142.922 70.112 142.922 71.136V71.544C142.922 72.056 143.082 72.44 143.402 72.696C143.738 72.936 144.21 73.056 144.818 73.056ZM156.573 75L152.397 62.472H155.421L157.173 67.872L158.397 72.336H158.565L159.789 67.872L161.493 62.472H164.421L160.221 75H156.573ZM166.471 75V62.472H169.543V75H166.471ZM168.343 61.056L166.495 60.168L168.775 55.68L171.367 56.952L168.343 61.056ZM173.104 57.24H176.176V67.944H176.296L177.952 65.688L180.76 62.472H184.24L179.92 67.32L184.696 75H181.048L177.832 69.384L176.176 71.184V75H173.104V57.24ZM193.834 72.912H193.714C193.602 73.232 193.45 73.536 193.258 73.824C193.082 74.096 192.85 74.344 192.562 74.568C192.29 74.792 191.954 74.968 191.554 75.096C191.17 75.224 190.722 75.288 190.21 75.288C188.914 75.288 187.922 74.864 187.234 74.016C186.546 73.168 186.202 71.96 186.202 70.392V62.472H189.274V70.08C189.274 70.944 189.442 71.608 189.778 72.072C190.114 72.52 190.65 72.744 191.386 72.744C191.69 72.744 191.986 72.704 192.274 72.624C192.578 72.544 192.842 72.424 193.066 72.264C193.29 72.088 193.474 71.88 193.618 71.64C193.762 71.384 193.834 71.088 193.834 70.752V62.472H196.906V75H193.834V72.912ZM200.456 75V62.472H203.528V65.064H203.648C203.728 64.728 203.848 64.408 204.008 64.104C204.184 63.784 204.408 63.504 204.68 63.264C204.952 63.024 205.272 62.832 205.64 62.688C206.024 62.544 206.464 62.472 206.96 62.472H207.632V65.376H206.672C205.632 65.376 204.848 65.528 204.32 65.832C203.792 66.136 203.528 66.632 203.528 67.32V75H200.456ZM209.878 57.24H212.95V64.56H213.07C213.326 63.888 213.726 63.328 214.27 62.88C214.83 62.416 215.598 62.184 216.574 62.184C217.87 62.184 218.862 62.608 219.55 63.456C220.238 64.304 220.582 65.512 220.582 67.08V75H217.51V67.392C217.51 66.496 217.35 65.824 217.03 65.376C216.71 64.928 216.182 64.704 215.446 64.704C215.126 64.704 214.814 64.752 214.51 64.848C214.222 64.928 213.958 65.056 213.718 65.232C213.494 65.392 213.31 65.6 213.166 65.856C213.022 66.096 212.95 66.384 212.95 66.72V75H209.878V57.24ZM223.987 75V62.472H227.059V65.064H227.179C227.259 64.728 227.379 64.408 227.539 64.104C227.715 63.784 227.939 63.504 228.211 63.264C228.483 63.024 228.803 62.832 229.171 62.688C229.555 62.544 229.995 62.472 230.491 62.472H231.163V65.376H230.203C229.163 65.376 228.379 65.528 227.851 65.832C227.323 66.136 227.059 66.632 227.059 67.32V75H223.987ZM238.356 75.288C237.428 75.288 236.596 75.136 235.86 74.832C235.14 74.512 234.524 74.072 234.012 73.512C233.516 72.936 233.132 72.248 232.86 71.448C232.588 70.632 232.452 69.72 232.452 68.712C232.452 67.72 232.58 66.824 232.836 66.024C233.108 65.224 233.492 64.544 233.988 63.984C234.484 63.408 235.092 62.968 235.812 62.664C236.532 62.344 237.348 62.184 238.26 62.184C239.236 62.184 240.084 62.352 240.804 62.688C241.524 63.024 242.116 63.48 242.58 64.056C243.044 64.632 243.388 65.304 243.612 66.072C243.852 66.824 243.972 67.632 243.972 68.496V69.504H235.644V69.816C235.644 70.728 235.9 71.464 236.412 72.024C236.924 72.568 237.684 72.84 238.692 72.84C239.46 72.84 240.084 72.68 240.564 72.36C241.06 72.04 241.5 71.632 241.884 71.136L243.54 72.984C243.028 73.704 242.324 74.272 241.428 74.688C240.548 75.088 239.524 75.288 238.356 75.288ZM238.308 64.488C237.492 64.488 236.844 64.76 236.364 65.304C235.884 65.848 235.644 66.552 235.644 67.416V67.608H240.78V67.392C240.78 66.528 240.564 65.832 240.132 65.304C239.716 64.76 239.108 64.488 238.308 64.488ZM246.674 62.472H249.746V64.536H249.842C250.066 63.816 250.49 63.248 251.114 62.832C251.738 62.4 252.466 62.184 253.298 62.184C254.898 62.184 256.114 62.752 256.946 63.888C257.794 65.008 258.218 66.616 258.218 68.712C258.218 70.824 257.794 72.448 256.946 73.584C256.114 74.72 254.898 75.288 253.298 75.288C252.466 75.288 251.738 75.072 251.114 74.64C250.506 74.208 250.082 73.632 249.842 72.912H249.746V79.8H246.674V62.472ZM252.314 72.744C253.114 72.744 253.762 72.48 254.258 71.952C254.754 71.424 255.002 70.712 255.002 69.816V67.656C255.002 66.76 254.754 66.048 254.258 65.52C253.762 64.976 253.114 64.704 252.314 64.704C251.578 64.704 250.962 64.888 250.466 65.256C249.986 65.624 249.746 66.112 249.746 66.72V70.704C249.746 71.36 249.986 71.864 250.466 72.216C250.962 72.568 251.578 72.744 252.314 72.744ZM261.065 62.472H264.137V64.536H264.233C264.457 63.816 264.881 63.248 265.505 62.832C266.129 62.4 266.857 62.184 267.689 62.184C269.289 62.184 270.505 62.752 271.337 63.888C272.185 65.008 272.609 66.616 272.609 68.712C272.609 70.824 272.185 72.448 271.337 73.584C270.505 74.72 269.289 75.288 267.689 75.288C266.857 75.288 266.129 75.072 265.505 74.64C264.897 74.208 264.473 73.632 264.233 72.912H264.137V79.8H261.065V62.472ZM266.705 72.744C267.505 72.744 268.153 72.48 268.649 71.952C269.145 71.424 269.393 70.712 269.393 69.816V67.656C269.393 66.76 269.145 66.048 268.649 65.52C268.153 64.976 267.505 64.704 266.705 64.704C265.969 64.704 265.353 64.888 264.857 65.256C264.377 65.624 264.137 66.112 264.137 66.72V70.704C264.137 71.36 264.377 71.864 264.857 72.216C265.353 72.568 265.969 72.744 266.705 72.744ZM282.944 72.912H282.824C282.712 73.232 282.56 73.536 282.368 73.824C282.192 74.096 281.96 74.344 281.672 74.568C281.4 74.792 281.064 74.968 280.664 75.096C280.28 75.224 279.832 75.288 279.32 75.288C278.024 75.288 277.032 74.864 276.344 74.016C275.656 73.168 275.312 71.96 275.312 70.392V62.472H278.384V70.08C278.384 70.944 278.552 71.608 278.888 72.072C279.224 72.52 279.76 72.744 280.496 72.744C280.8 72.744 281.096 72.704 281.384 72.624C281.688 72.544 281.952 72.424 282.176 72.264C282.4 72.088 282.584 71.88 282.728 71.64C282.872 71.384 282.944 71.088 282.944 70.752V62.472H286.016V75H282.944V72.912ZM289.565 75V62.472H292.637V65.064H292.757C292.837 64.728 292.957 64.408 293.117 64.104C293.293 63.784 293.517 63.504 293.789 63.264C294.061 63.024 294.381 62.832 294.749 62.688C295.133 62.544 295.573 62.472 296.069 62.472H296.741V65.376H295.781C294.741 65.376 293.957 65.528 293.429 65.832C292.901 66.136 292.637 66.632 292.637 67.32V75H289.565Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/sudurnesjabaer.svg b/libs/application/templates/financial-aid/src/svg/sudurnesjabaer.svg deleted file mode 100644 index ce541b2c25b2..000000000000 --- a/libs/application/templates/financial-aid/src/svg/sudurnesjabaer.svg +++ /dev/null @@ -1,8 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.606 96C30.4519 89.1714 16.7516 75.392 17.0034 58.353V16.6189C17.0034 16.4547 17.0686 16.2973 17.1847 16.1813C17.3007 16.0652 17.4581 16 17.6222 16H77.5826C77.6645 15.9991 77.7457 16.0144 77.8216 16.0451C77.8976 16.0757 77.9666 16.1212 78.0248 16.1787C78.0831 16.2363 78.1293 16.3048 78.1609 16.3804C78.1924 16.4559 78.2086 16.537 78.2086 16.6189V58.353C78.4533 75.392 64.753 89.1714 47.606 96Z" fill="#003B71"/> -<path d="M39.3311 28.6354C38.9557 28.6448 38.5988 28.8005 38.3366 29.0694C38.0745 29.3383 37.9278 29.699 37.9279 30.0745L37.8848 45.9047C37.8942 46.2801 38.0499 46.6369 38.3188 46.8991C38.5877 47.1612 38.9484 47.3079 39.3239 47.3078C39.6994 47.3079 40.0601 47.1612 40.329 46.8991C40.5978 46.6369 40.7536 46.2801 40.763 45.9047L40.8062 30.1105C40.8062 29.7288 40.6545 29.3627 40.3846 29.0929C40.1148 28.823 39.7487 28.6714 39.367 28.6714L39.3311 28.6354ZM55.924 28.6354C55.5423 28.6354 55.1763 28.787 54.9064 29.0569C54.6365 29.3268 54.4849 29.6928 54.4849 30.0745L54.4417 45.9047C54.4508 46.2739 54.6016 46.6255 54.8628 46.8867C55.1239 47.1479 55.4756 47.2987 55.8448 47.3078C56.2203 47.3079 56.581 47.1612 56.8499 46.8991C57.1188 46.6369 57.2745 46.2801 57.2839 45.9047L57.3271 30.1105C57.3273 29.7361 57.1816 29.3765 56.921 29.1078C56.6604 28.8391 56.3053 28.6826 55.9312 28.6714L55.924 28.6354Z" fill="white"/> -<path d="M59.1031 90.0061C60.0961 89.3442 61.0555 88.6558 61.9813 87.941C57.5519 86.7784 53.3951 84.7539 49.7489 81.9831C51.1419 80.7065 52.4382 79.3284 53.6273 77.8601C57.6517 80.7931 62.3567 82.6528 67.2988 83.2639C68.1407 82.4148 68.9322 81.5442 69.6877 80.6447C64.4996 80.4185 59.4935 78.6664 55.2967 75.6079C56.4655 73.9267 57.4955 72.1532 58.3764 70.3048C61.9131 73.163 66.3277 74.7133 70.875 74.694H73.8252C74.3504 73.773 74.8254 72.8376 75.2643 71.8878H70.8822C66.7014 71.8953 62.6653 70.3578 59.5492 67.5705C61.2122 63.2494 62.0636 58.6585 62.0605 54.0285C62.0511 53.6531 61.8953 53.2962 61.6265 53.034C61.3576 52.7719 60.9969 52.6252 60.6214 52.6253H48.9862L49.0294 26.9373C49.0295 26.563 48.8838 26.2033 48.6232 25.9346C48.3626 25.666 48.0076 25.5094 47.6334 25.4982C47.2579 25.4981 46.8972 25.6447 46.6283 25.9069C46.3595 26.169 46.2037 26.5259 46.1943 26.9013V52.5966H34.5016C34.126 52.5964 33.7654 52.7431 33.4965 53.0053C33.2276 53.2674 33.0719 53.6243 33.0625 53.9997C33.0606 58.6533 33.9218 63.2669 35.6025 67.6064C32.4846 70.3954 28.4456 71.9331 24.2623 71.9238H19.873C20.3048 72.8736 20.7797 73.809 21.3122 74.73H24.2695C28.8172 74.7516 33.2326 73.201 36.7682 70.3407C37.6515 72.1893 38.6839 73.9628 39.855 75.6439C35.6568 78.6997 30.6516 80.4516 25.464 80.6807C26.2195 81.5802 27.011 82.4508 27.8529 83.2999C32.796 82.6928 37.5021 80.8327 41.5244 77.8961C42.7115 79.3661 44.008 80.7444 45.4028 82.0191C41.7561 84.789 37.5995 86.8135 33.1704 87.977C34.1058 88.6966 35.07 89.3801 36.0486 90.0421C40.2143 88.6686 44.1098 86.582 47.5615 83.8755C51.0128 86.5827 54.9084 88.6692 59.0743 90.0421L59.1031 90.0061ZM59.2614 55.5035C59.1284 58.8555 58.5128 62.1707 57.4337 65.347C55.2476 62.5059 53.953 59.0804 53.7136 55.5035H59.2614ZM56.2681 68.3188C55.3997 70.2669 54.3544 72.1312 53.1452 73.8881C51.7035 72.5901 50.4035 71.1429 49.2668 69.5708C50.6562 67.328 51.7357 64.9076 52.476 62.3753C53.3815 64.5679 54.665 66.5845 56.2681 68.3332V68.3188ZM50.821 55.5179C50.6129 59.5033 49.506 63.3899 47.5831 66.8869C45.6569 63.3913 44.5497 59.5039 44.3451 55.5179H50.821ZM35.9047 55.5179H41.4453C41.21 59.0742 39.9282 62.4815 37.7611 65.3111C36.6879 62.1335 36.0749 58.8188 35.9407 55.4676L35.9047 55.5179ZM42.0785 73.8522C40.8716 72.095 39.8286 70.2307 38.9628 68.2828C40.5636 66.5339 41.8447 64.5172 42.7477 62.3249C43.488 64.8572 44.5675 67.2776 45.9569 69.5205C44.8244 71.0959 43.5239 72.5435 42.0785 73.8378V73.8522ZM43.7694 76.09C45.1913 74.8325 46.4899 73.4422 47.6478 71.9382C48.8057 73.4422 50.1044 74.8325 51.5262 76.09C50.3442 77.5489 49.0472 78.9108 47.6478 80.1626C46.2465 78.9128 44.9494 77.5507 43.7694 76.09Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM119.936 72.912H119.816C119.704 73.232 119.552 73.536 119.36 73.824C119.184 74.096 118.952 74.344 118.664 74.568C118.392 74.792 118.056 74.968 117.656 75.096C117.272 75.224 116.824 75.288 116.312 75.288C115.016 75.288 114.024 74.864 113.336 74.016C112.648 73.168 112.304 71.96 112.304 70.392V62.472H115.376V70.08C115.376 70.944 115.544 71.608 115.88 72.072C116.216 72.52 116.752 72.744 117.488 72.744C117.792 72.744 118.088 72.704 118.376 72.624C118.68 72.544 118.944 72.424 119.168 72.264C119.392 72.088 119.576 71.88 119.72 71.64C119.864 71.384 119.936 71.088 119.936 70.752V62.472H123.008V75H119.936V72.912ZM135.845 58.224L134.069 59.376C135.173 60.528 136.061 61.856 136.733 63.36C137.405 64.864 137.741 66.536 137.741 68.376C137.741 69.56 137.597 70.592 137.309 71.472C137.021 72.336 136.613 73.056 136.085 73.632C135.573 74.192 134.957 74.608 134.237 74.88C133.517 75.152 132.717 75.288 131.837 75.288C130.893 75.288 130.045 75.144 129.293 74.856C128.557 74.552 127.925 74.128 127.397 73.584C126.885 73.04 126.493 72.376 126.221 71.592C125.949 70.808 125.813 69.936 125.813 68.976C125.813 68.08 125.925 67.264 126.149 66.528C126.389 65.792 126.725 65.16 127.157 64.632C127.589 64.104 128.109 63.696 128.717 63.408C129.341 63.12 130.029 62.976 130.781 62.976C131.645 62.976 132.365 63.192 132.941 63.624C133.533 64.04 133.997 64.608 134.333 65.328L134.477 65.256C134.285 64.44 133.941 63.664 133.445 62.928C132.965 62.192 132.381 61.488 131.693 60.816L129.629 62.112L128.525 60.792L130.397 59.664C129.837 59.2 129.245 58.768 128.621 58.368C128.013 57.968 127.397 57.592 126.773 57.24H131.453C131.677 57.368 131.893 57.52 132.101 57.696C132.309 57.856 132.525 58.024 132.749 58.2L134.765 56.928L135.845 58.224ZM131.789 72.936C132.637 72.936 133.309 72.664 133.805 72.12C134.301 71.576 134.549 70.816 134.549 69.84V68.448C134.549 67.472 134.301 66.712 133.805 66.168C133.309 65.624 132.637 65.352 131.789 65.352C130.925 65.352 130.245 65.624 129.749 66.168C129.253 66.712 129.005 67.472 129.005 68.448V69.84C129.005 70.816 129.253 71.576 129.749 72.12C130.245 72.664 130.925 72.936 131.789 72.936ZM148.178 72.912H148.058C147.946 73.232 147.794 73.536 147.602 73.824C147.426 74.096 147.194 74.344 146.906 74.568C146.634 74.792 146.298 74.968 145.898 75.096C145.514 75.224 145.066 75.288 144.554 75.288C143.258 75.288 142.266 74.864 141.578 74.016C140.89 73.168 140.546 71.96 140.546 70.392V62.472H143.618V70.08C143.618 70.944 143.786 71.608 144.122 72.072C144.458 72.52 144.994 72.744 145.73 72.744C146.034 72.744 146.33 72.704 146.618 72.624C146.922 72.544 147.186 72.424 147.41 72.264C147.634 72.088 147.818 71.88 147.962 71.64C148.106 71.384 148.178 71.088 148.178 70.752V62.472H151.25V75H148.178V72.912ZM154.799 75V62.472H157.871V65.064H157.991C158.071 64.728 158.191 64.408 158.351 64.104C158.527 63.784 158.751 63.504 159.023 63.264C159.295 63.024 159.615 62.832 159.983 62.688C160.367 62.544 160.807 62.472 161.303 62.472H161.975V65.376H161.015C159.975 65.376 159.191 65.528 158.663 65.832C158.135 66.136 157.871 66.632 157.871 67.32V75H154.799ZM164.221 75V62.472H167.293V64.56H167.413C167.669 63.888 168.069 63.328 168.613 62.88C169.173 62.416 169.941 62.184 170.917 62.184C172.213 62.184 173.205 62.608 173.893 63.456C174.581 64.304 174.925 65.512 174.925 67.08V75H171.853V67.392C171.853 66.496 171.693 65.824 171.373 65.376C171.053 64.928 170.525 64.704 169.789 64.704C169.469 64.704 169.157 64.752 168.853 64.848C168.565 64.928 168.301 65.056 168.061 65.232C167.837 65.392 167.653 65.6 167.509 65.856C167.365 66.096 167.293 66.384 167.293 66.72V75H164.221ZM183.395 75.288C182.467 75.288 181.635 75.136 180.899 74.832C180.179 74.512 179.563 74.072 179.051 73.512C178.555 72.936 178.171 72.248 177.899 71.448C177.627 70.632 177.491 69.72 177.491 68.712C177.491 67.72 177.619 66.824 177.875 66.024C178.147 65.224 178.531 64.544 179.027 63.984C179.523 63.408 180.131 62.968 180.851 62.664C181.571 62.344 182.387 62.184 183.299 62.184C184.275 62.184 185.123 62.352 185.843 62.688C186.563 63.024 187.155 63.48 187.619 64.056C188.083 64.632 188.427 65.304 188.651 66.072C188.891 66.824 189.011 67.632 189.011 68.496V69.504H180.683V69.816C180.683 70.728 180.939 71.464 181.451 72.024C181.963 72.568 182.723 72.84 183.731 72.84C184.499 72.84 185.123 72.68 185.603 72.36C186.099 72.04 186.539 71.632 186.923 71.136L188.579 72.984C188.067 73.704 187.363 74.272 186.467 74.688C185.587 75.088 184.563 75.288 183.395 75.288ZM183.347 64.488C182.531 64.488 181.883 64.76 181.403 65.304C180.923 65.848 180.683 66.552 180.683 67.416V67.608H185.819V67.392C185.819 66.528 185.603 65.832 185.171 65.304C184.755 64.76 184.147 64.488 183.347 64.488ZM195.818 75.288C194.618 75.288 193.61 75.088 192.794 74.688C191.978 74.272 191.258 73.704 190.634 72.984L192.506 71.16C192.97 71.688 193.474 72.104 194.018 72.408C194.578 72.712 195.218 72.864 195.938 72.864C196.674 72.864 197.202 72.736 197.522 72.48C197.858 72.224 198.026 71.872 198.026 71.424C198.026 71.056 197.906 70.768 197.666 70.56C197.442 70.336 197.05 70.184 196.49 70.104L195.242 69.936C193.882 69.76 192.842 69.376 192.122 68.784C191.418 68.176 191.066 67.296 191.066 66.144C191.066 65.536 191.178 64.992 191.402 64.512C191.626 64.016 191.946 63.6 192.362 63.264C192.778 62.912 193.274 62.648 193.85 62.472C194.442 62.28 195.098 62.184 195.818 62.184C196.426 62.184 196.962 62.232 197.426 62.328C197.906 62.408 198.338 62.536 198.722 62.712C199.106 62.872 199.458 63.08 199.778 63.336C200.098 63.576 200.41 63.848 200.714 64.152L198.914 65.952C198.546 65.568 198.106 65.248 197.594 64.992C197.082 64.736 196.522 64.608 195.914 64.608C195.242 64.608 194.754 64.728 194.45 64.968C194.162 65.208 194.018 65.52 194.018 65.904C194.018 66.32 194.138 66.64 194.378 66.864C194.634 67.072 195.058 67.224 195.65 67.32L196.922 67.488C199.626 67.872 200.978 69.104 200.978 71.184C200.978 71.792 200.85 72.352 200.594 72.864C200.354 73.36 200.01 73.792 199.562 74.16C199.114 74.512 198.57 74.792 197.93 75C197.306 75.192 196.602 75.288 195.818 75.288ZM203.69 62.472H206.762V76.512C206.762 77.568 206.498 78.376 205.97 78.936C205.442 79.512 204.602 79.8 203.45 79.8H201.77V77.352H203.69V62.472ZM205.226 60.648C204.586 60.648 204.122 60.504 203.834 60.216C203.562 59.928 203.426 59.56 203.426 59.112V58.632C203.426 58.184 203.562 57.816 203.834 57.528C204.122 57.24 204.586 57.096 205.226 57.096C205.85 57.096 206.306 57.24 206.594 57.528C206.882 57.816 207.026 58.184 207.026 58.632V59.112C207.026 59.56 206.882 59.928 206.594 60.216C206.306 60.504 205.85 60.648 205.226 60.648ZM219.539 75C218.867 75 218.331 74.808 217.931 74.424C217.547 74.024 217.307 73.496 217.211 72.84H217.067C216.859 73.656 216.435 74.272 215.795 74.688C215.155 75.088 214.363 75.288 213.419 75.288C212.139 75.288 211.155 74.952 210.467 74.28C209.779 73.608 209.435 72.712 209.435 71.592C209.435 70.296 209.899 69.336 210.827 68.712C211.755 68.072 213.075 67.752 214.787 67.752H216.923V66.84C216.923 66.136 216.739 65.592 216.371 65.208C216.003 64.824 215.411 64.632 214.595 64.632C213.875 64.632 213.291 64.792 212.843 65.112C212.411 65.416 212.043 65.784 211.739 66.216L209.915 64.584C210.379 63.864 210.995 63.288 211.763 62.856C212.531 62.408 213.547 62.184 214.811 62.184C216.507 62.184 217.795 62.568 218.675 63.336C219.555 64.104 219.995 65.208 219.995 66.648V72.552H221.243V75H219.539ZM214.451 73.056C215.139 73.056 215.723 72.904 216.203 72.6C216.683 72.296 216.923 71.848 216.923 71.256V69.6H214.955C213.355 69.6 212.555 70.112 212.555 71.136V71.544C212.555 72.056 212.715 72.44 213.035 72.696C213.371 72.936 213.843 73.056 214.451 73.056ZM223.729 57.24H226.801V64.536H226.897C227.121 63.816 227.545 63.248 228.169 62.832C228.793 62.4 229.521 62.184 230.353 62.184C231.953 62.184 233.169 62.752 234.001 63.888C234.849 65.008 235.273 66.616 235.273 68.712C235.273 70.824 234.849 72.448 234.001 73.584C233.169 74.72 231.953 75.288 230.353 75.288C229.521 75.288 228.793 75.072 228.169 74.64C227.561 74.208 227.137 73.632 226.897 72.912H226.801V75H223.729V57.24ZM229.369 72.744C230.169 72.744 230.817 72.48 231.313 71.952C231.809 71.424 232.057 70.712 232.057 69.816V67.656C232.057 66.76 231.809 66.048 231.313 65.52C230.817 64.976 230.169 64.704 229.369 64.704C228.633 64.704 228.017 64.888 227.521 65.256C227.041 65.624 226.801 66.112 226.801 66.72V70.704C226.801 71.36 227.041 71.864 227.521 72.216C228.017 72.568 228.633 72.744 229.369 72.744ZM242.752 69.504C241.984 69.52 241.392 69.664 240.976 69.936C240.56 70.192 240.352 70.576 240.352 71.088V71.472C240.352 71.984 240.512 72.376 240.832 72.648C241.152 72.92 241.632 73.056 242.272 73.056C242.944 73.056 243.52 72.904 244 72.6C244.48 72.296 244.72 71.848 244.72 71.256V69.504H242.752ZM252.952 67.608V67.392C252.952 66.528 252.736 65.832 252.304 65.304C251.888 64.76 251.28 64.488 250.48 64.488C249.664 64.488 249.016 64.76 248.536 65.304C248.056 65.848 247.816 66.552 247.816 67.416V67.608H252.952ZM250.912 72.792C251.664 72.792 252.296 72.632 252.808 72.312C253.32 71.992 253.752 71.6 254.104 71.136L255.76 72.984C255.248 73.704 254.552 74.272 253.672 74.688C252.792 75.088 251.784 75.288 250.648 75.288C250.04 75.288 249.472 75.216 248.944 75.072C248.416 74.928 247.944 74.736 247.528 74.496C247.128 74.256 246.784 73.984 246.496 73.68C246.208 73.376 245.992 73.056 245.848 72.72H245.704C245.592 73.04 245.416 73.352 245.176 73.656C244.952 73.96 244.656 74.232 244.288 74.472C243.92 74.712 243.48 74.904 242.968 75.048C242.472 75.208 241.888 75.288 241.216 75.288C239.952 75.288 238.968 74.944 238.264 74.256C237.576 73.568 237.232 72.672 237.232 71.568C237.232 70.912 237.36 70.336 237.616 69.84C237.872 69.344 238.232 68.936 238.696 68.616C239.16 68.28 239.72 68.032 240.376 67.872C241.032 67.696 241.768 67.608 242.584 67.608H244.72V66.84C244.72 66.136 244.536 65.592 244.168 65.208C243.8 64.824 243.216 64.632 242.416 64.632C241.68 64.632 241.088 64.784 240.64 65.088C240.208 65.392 239.84 65.768 239.536 66.216L237.712 64.584C238.176 63.864 238.792 63.288 239.56 62.856C240.328 62.408 241.344 62.184 242.608 62.184C243.568 62.184 244.336 62.384 244.912 62.784C245.488 63.168 245.936 63.656 246.256 64.248H246.4C246.72 63.656 247.24 63.168 247.96 62.784C248.68 62.384 249.544 62.184 250.552 62.184C251.528 62.184 252.368 62.352 253.072 62.688C253.776 63.024 254.352 63.48 254.8 64.056C255.264 64.632 255.6 65.304 255.808 66.072C256.032 66.824 256.144 67.632 256.144 68.496V69.504H247.792V69.816C247.792 70.712 248.064 71.432 248.608 71.976C249.152 72.52 249.92 72.792 250.912 72.792ZM258.862 75V62.472H261.934V65.064H262.054C262.134 64.728 262.254 64.408 262.414 64.104C262.59 63.784 262.814 63.504 263.086 63.264C263.358 63.024 263.678 62.832 264.046 62.688C264.43 62.544 264.87 62.472 265.366 62.472H266.038V65.376H265.078C264.038 65.376 263.254 65.528 262.726 65.832C262.198 66.136 261.934 66.632 261.934 67.32V75H258.862Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/svalbardshreppur.svg b/libs/application/templates/financial-aid/src/svg/svalbardshreppur.svg deleted file mode 100644 index cfd9c60859c7..000000000000 --- a/libs/application/templates/financial-aid/src/svg/svalbardshreppur.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.606 96C30.4519 89.1714 16.7516 75.392 17.0034 58.353V16.6189C17.0034 16.4547 17.0686 16.2973 17.1847 16.1813C17.3007 16.0652 17.4581 16 17.6222 16H77.5826C77.6645 15.9991 77.7457 16.0144 77.8216 16.0451C77.8976 16.0757 77.9666 16.1212 78.0248 16.1787C78.0831 16.2363 78.1293 16.3048 78.1609 16.3804C78.1924 16.4559 78.2086 16.537 78.2086 16.6189V58.353C78.4533 75.392 64.753 89.1714 47.606 96Z" fill="#848484"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M103.176 75.288C101.736 75.288 100.512 75.032 99.504 74.52C98.512 74.008 97.656 73.336 96.936 72.504L99.072 70.44C99.648 71.112 100.288 71.624 100.992 71.976C101.712 72.328 102.504 72.504 103.368 72.504C104.344 72.504 105.08 72.296 105.576 71.88C106.072 71.448 106.32 70.872 106.32 70.152C106.32 69.592 106.16 69.136 105.84 68.784C105.52 68.432 104.92 68.176 104.04 68.016L102.456 67.776C99.112 67.248 97.44 65.624 97.44 62.904C97.44 62.152 97.576 61.472 97.848 60.864C98.136 60.256 98.544 59.736 99.072 59.304C99.6 58.872 100.232 58.544 100.968 58.32C101.72 58.08 102.568 57.96 103.512 57.96C104.776 57.96 105.88 58.168 106.824 58.584C107.768 59 108.576 59.616 109.248 60.432L107.088 62.472C106.672 61.96 106.168 61.544 105.576 61.224C104.984 60.904 104.24 60.744 103.344 60.744C102.432 60.744 101.744 60.92 101.28 61.272C100.832 61.608 100.608 62.088 100.608 62.712C100.608 63.352 100.792 63.824 101.16 64.128C101.528 64.432 102.12 64.656 102.936 64.8L104.496 65.088C106.192 65.392 107.44 65.936 108.24 66.72C109.056 67.488 109.464 68.568 109.464 69.96C109.464 70.76 109.32 71.488 109.032 72.144C108.76 72.784 108.352 73.344 107.808 73.824C107.28 74.288 106.624 74.648 105.84 74.904C105.072 75.16 104.184 75.288 103.176 75.288ZM115.136 75L110.96 62.472H113.984L115.736 67.872L116.96 72.336H117.128L118.352 67.872L120.056 62.472H122.984L118.784 75H115.136ZM134.039 75C133.367 75 132.831 74.808 132.431 74.424C132.047 74.024 131.807 73.496 131.711 72.84H131.567C131.359 73.656 130.935 74.272 130.295 74.688C129.655 75.088 128.863 75.288 127.919 75.288C126.639 75.288 125.655 74.952 124.967 74.28C124.279 73.608 123.935 72.712 123.935 71.592C123.935 70.296 124.399 69.336 125.327 68.712C126.255 68.072 127.575 67.752 129.287 67.752H131.423V66.84C131.423 66.136 131.239 65.592 130.871 65.208C130.503 64.824 129.911 64.632 129.095 64.632C128.375 64.632 127.791 64.792 127.343 65.112C126.911 65.416 126.543 65.784 126.239 66.216L124.415 64.584C124.879 63.864 125.495 63.288 126.263 62.856C127.031 62.408 128.047 62.184 129.311 62.184C131.007 62.184 132.295 62.568 133.175 63.336C134.055 64.104 134.495 65.208 134.495 66.648V72.552H135.743V75H134.039ZM128.951 73.056C129.639 73.056 130.223 72.904 130.703 72.6C131.183 72.296 131.423 71.848 131.423 71.256V69.6H129.455C127.855 69.6 127.055 70.112 127.055 71.136V71.544C127.055 72.056 127.215 72.44 127.535 72.696C127.871 72.936 128.343 73.056 128.951 73.056ZM141.301 75C140.245 75 139.469 74.736 138.973 74.208C138.477 73.68 138.229 72.936 138.229 71.976V57.24H141.301V72.552H142.957V75H141.301ZM145.284 57.24H148.356V64.536H148.452C148.676 63.816 149.1 63.248 149.724 62.832C150.348 62.4 151.076 62.184 151.908 62.184C153.508 62.184 154.724 62.752 155.556 63.888C156.404 65.008 156.828 66.616 156.828 68.712C156.828 70.824 156.404 72.448 155.556 73.584C154.724 74.72 153.508 75.288 151.908 75.288C151.076 75.288 150.348 75.072 149.724 74.64C149.116 74.208 148.692 73.632 148.452 72.912H148.356V75H145.284V57.24ZM150.924 72.744C151.724 72.744 152.372 72.48 152.868 71.952C153.364 71.424 153.612 70.712 153.612 69.816V67.656C153.612 66.76 153.364 66.048 152.868 65.52C152.372 64.976 151.724 64.704 150.924 64.704C150.188 64.704 149.572 64.888 149.076 65.256C148.596 65.624 148.356 66.112 148.356 66.72V70.704C148.356 71.36 148.596 71.864 149.076 72.216C149.572 72.568 150.188 72.744 150.924 72.744ZM168.89 75C168.218 75 167.682 74.808 167.282 74.424C166.898 74.024 166.658 73.496 166.562 72.84H166.418C166.21 73.656 165.786 74.272 165.146 74.688C164.506 75.088 163.714 75.288 162.77 75.288C161.49 75.288 160.506 74.952 159.818 74.28C159.13 73.608 158.786 72.712 158.786 71.592C158.786 70.296 159.25 69.336 160.178 68.712C161.106 68.072 162.426 67.752 164.138 67.752H166.274V66.84C166.274 66.136 166.09 65.592 165.722 65.208C165.354 64.824 164.762 64.632 163.946 64.632C163.226 64.632 162.642 64.792 162.194 65.112C161.762 65.416 161.394 65.784 161.09 66.216L159.266 64.584C159.73 63.864 160.346 63.288 161.114 62.856C161.882 62.408 162.898 62.184 164.162 62.184C165.858 62.184 167.146 62.568 168.026 63.336C168.906 64.104 169.346 65.208 169.346 66.648V72.552H170.594V75H168.89ZM163.802 73.056C164.49 73.056 165.074 72.904 165.554 72.6C166.034 72.296 166.274 71.848 166.274 71.256V69.6H164.306C162.706 69.6 161.906 70.112 161.906 71.136V71.544C161.906 72.056 162.066 72.44 162.386 72.696C162.722 72.936 163.194 73.056 163.802 73.056ZM173.081 75V62.472H176.153V65.064H176.273C176.353 64.728 176.473 64.408 176.633 64.104C176.809 63.784 177.033 63.504 177.305 63.264C177.577 63.024 177.897 62.832 178.265 62.688C178.649 62.544 179.089 62.472 179.585 62.472H180.257V65.376H179.297C178.257 65.376 177.473 65.528 176.945 65.832C176.417 66.136 176.153 66.632 176.153 67.32V75H173.081ZM191.673 58.224L189.897 59.376C191.001 60.528 191.889 61.856 192.561 63.36C193.233 64.864 193.569 66.536 193.569 68.376C193.569 69.56 193.425 70.592 193.137 71.472C192.849 72.336 192.441 73.056 191.913 73.632C191.401 74.192 190.785 74.608 190.065 74.88C189.345 75.152 188.545 75.288 187.665 75.288C186.721 75.288 185.873 75.144 185.121 74.856C184.385 74.552 183.753 74.128 183.225 73.584C182.713 73.04 182.321 72.376 182.049 71.592C181.777 70.808 181.641 69.936 181.641 68.976C181.641 68.08 181.753 67.264 181.977 66.528C182.217 65.792 182.553 65.16 182.985 64.632C183.417 64.104 183.937 63.696 184.545 63.408C185.169 63.12 185.857 62.976 186.609 62.976C187.473 62.976 188.193 63.192 188.769 63.624C189.361 64.04 189.825 64.608 190.161 65.328L190.305 65.256C190.113 64.44 189.769 63.664 189.273 62.928C188.793 62.192 188.209 61.488 187.521 60.816L185.457 62.112L184.353 60.792L186.225 59.664C185.665 59.2 185.073 58.768 184.449 58.368C183.841 57.968 183.225 57.592 182.601 57.24H187.281C187.505 57.368 187.721 57.52 187.929 57.696C188.137 57.856 188.353 58.024 188.577 58.2L190.593 56.928L191.673 58.224ZM187.617 72.936C188.465 72.936 189.137 72.664 189.633 72.12C190.129 71.576 190.377 70.816 190.377 69.84V68.448C190.377 67.472 190.129 66.712 189.633 66.168C189.137 65.624 188.465 65.352 187.617 65.352C186.753 65.352 186.073 65.624 185.577 66.168C185.081 66.712 184.833 67.472 184.833 68.448V69.84C184.833 70.816 185.081 71.576 185.577 72.12C186.073 72.664 186.753 72.936 187.617 72.936ZM200.622 75.288C199.422 75.288 198.414 75.088 197.598 74.688C196.782 74.272 196.062 73.704 195.438 72.984L197.31 71.16C197.774 71.688 198.278 72.104 198.822 72.408C199.382 72.712 200.022 72.864 200.742 72.864C201.478 72.864 202.006 72.736 202.326 72.48C202.662 72.224 202.83 71.872 202.83 71.424C202.83 71.056 202.71 70.768 202.47 70.56C202.246 70.336 201.854 70.184 201.294 70.104L200.046 69.936C198.686 69.76 197.646 69.376 196.926 68.784C196.222 68.176 195.87 67.296 195.87 66.144C195.87 65.536 195.982 64.992 196.206 64.512C196.43 64.016 196.75 63.6 197.166 63.264C197.582 62.912 198.078 62.648 198.654 62.472C199.246 62.28 199.902 62.184 200.622 62.184C201.23 62.184 201.766 62.232 202.23 62.328C202.71 62.408 203.142 62.536 203.526 62.712C203.91 62.872 204.262 63.08 204.582 63.336C204.902 63.576 205.214 63.848 205.518 64.152L203.718 65.952C203.35 65.568 202.91 65.248 202.398 64.992C201.886 64.736 201.326 64.608 200.718 64.608C200.046 64.608 199.558 64.728 199.254 64.968C198.966 65.208 198.822 65.52 198.822 65.904C198.822 66.32 198.942 66.64 199.182 66.864C199.438 67.072 199.862 67.224 200.454 67.32L201.726 67.488C204.43 67.872 205.782 69.104 205.782 71.184C205.782 71.792 205.654 72.352 205.398 72.864C205.158 73.36 204.814 73.792 204.366 74.16C203.918 74.512 203.374 74.792 202.734 75C202.11 75.192 201.406 75.288 200.622 75.288ZM208.495 57.24H211.567V64.56H211.687C211.943 63.888 212.343 63.328 212.887 62.88C213.447 62.416 214.215 62.184 215.191 62.184C216.487 62.184 217.479 62.608 218.167 63.456C218.855 64.304 219.199 65.512 219.199 67.08V75H216.127V67.392C216.127 66.496 215.967 65.824 215.647 65.376C215.327 64.928 214.799 64.704 214.063 64.704C213.743 64.704 213.431 64.752 213.127 64.848C212.839 64.928 212.575 65.056 212.335 65.232C212.111 65.392 211.927 65.6 211.783 65.856C211.639 66.096 211.567 66.384 211.567 66.72V75H208.495V57.24ZM222.604 75V62.472H225.676V65.064H225.796C225.876 64.728 225.996 64.408 226.156 64.104C226.332 63.784 226.556 63.504 226.828 63.264C227.1 63.024 227.42 62.832 227.788 62.688C228.172 62.544 228.612 62.472 229.108 62.472H229.78V65.376H228.82C227.78 65.376 226.996 65.528 226.468 65.832C225.94 66.136 225.676 66.632 225.676 67.32V75H222.604ZM236.973 75.288C236.045 75.288 235.213 75.136 234.477 74.832C233.757 74.512 233.141 74.072 232.629 73.512C232.133 72.936 231.749 72.248 231.477 71.448C231.205 70.632 231.069 69.72 231.069 68.712C231.069 67.72 231.197 66.824 231.453 66.024C231.725 65.224 232.109 64.544 232.605 63.984C233.101 63.408 233.709 62.968 234.429 62.664C235.149 62.344 235.965 62.184 236.877 62.184C237.853 62.184 238.701 62.352 239.421 62.688C240.141 63.024 240.733 63.48 241.197 64.056C241.661 64.632 242.005 65.304 242.229 66.072C242.469 66.824 242.589 67.632 242.589 68.496V69.504H234.261V69.816C234.261 70.728 234.517 71.464 235.029 72.024C235.541 72.568 236.301 72.84 237.309 72.84C238.077 72.84 238.701 72.68 239.181 72.36C239.677 72.04 240.117 71.632 240.501 71.136L242.157 72.984C241.645 73.704 240.941 74.272 240.045 74.688C239.165 75.088 238.141 75.288 236.973 75.288ZM236.925 64.488C236.109 64.488 235.461 64.76 234.981 65.304C234.501 65.848 234.261 66.552 234.261 67.416V67.608H239.397V67.392C239.397 66.528 239.181 65.832 238.749 65.304C238.333 64.76 237.725 64.488 236.925 64.488ZM245.292 62.472H248.364V64.536H248.46C248.684 63.816 249.108 63.248 249.732 62.832C250.356 62.4 251.084 62.184 251.916 62.184C253.516 62.184 254.732 62.752 255.564 63.888C256.412 65.008 256.836 66.616 256.836 68.712C256.836 70.824 256.412 72.448 255.564 73.584C254.732 74.72 253.516 75.288 251.916 75.288C251.084 75.288 250.356 75.072 249.732 74.64C249.124 74.208 248.7 73.632 248.46 72.912H248.364V79.8H245.292V62.472ZM250.932 72.744C251.732 72.744 252.38 72.48 252.876 71.952C253.372 71.424 253.62 70.712 253.62 69.816V67.656C253.62 66.76 253.372 66.048 252.876 65.52C252.38 64.976 251.732 64.704 250.932 64.704C250.196 64.704 249.58 64.888 249.084 65.256C248.604 65.624 248.364 66.112 248.364 66.72V70.704C248.364 71.36 248.604 71.864 249.084 72.216C249.58 72.568 250.196 72.744 250.932 72.744ZM259.682 62.472H262.754V64.536H262.85C263.074 63.816 263.498 63.248 264.122 62.832C264.746 62.4 265.474 62.184 266.306 62.184C267.906 62.184 269.122 62.752 269.954 63.888C270.802 65.008 271.226 66.616 271.226 68.712C271.226 70.824 270.802 72.448 269.954 73.584C269.122 74.72 267.906 75.288 266.306 75.288C265.474 75.288 264.746 75.072 264.122 74.64C263.514 74.208 263.09 73.632 262.85 72.912H262.754V79.8H259.682V62.472ZM265.322 72.744C266.122 72.744 266.77 72.48 267.266 71.952C267.762 71.424 268.01 70.712 268.01 69.816V67.656C268.01 66.76 267.762 66.048 267.266 65.52C266.77 64.976 266.122 64.704 265.322 64.704C264.586 64.704 263.97 64.888 263.474 65.256C262.994 65.624 262.754 66.112 262.754 66.72V70.704C262.754 71.36 262.994 71.864 263.474 72.216C263.97 72.568 264.586 72.744 265.322 72.744ZM281.561 72.912H281.441C281.329 73.232 281.177 73.536 280.985 73.824C280.809 74.096 280.577 74.344 280.289 74.568C280.017 74.792 279.681 74.968 279.281 75.096C278.897 75.224 278.449 75.288 277.937 75.288C276.641 75.288 275.649 74.864 274.961 74.016C274.273 73.168 273.929 71.96 273.929 70.392V62.472H277.001V70.08C277.001 70.944 277.169 71.608 277.505 72.072C277.841 72.52 278.377 72.744 279.113 72.744C279.417 72.744 279.713 72.704 280.001 72.624C280.305 72.544 280.569 72.424 280.793 72.264C281.017 72.088 281.201 71.88 281.345 71.64C281.489 71.384 281.561 71.088 281.561 70.752V62.472H284.633V75H281.561V72.912ZM288.182 75V62.472H291.254V65.064H291.374C291.454 64.728 291.574 64.408 291.734 64.104C291.91 63.784 292.134 63.504 292.406 63.264C292.678 63.024 292.998 62.832 293.366 62.688C293.75 62.544 294.19 62.472 294.686 62.472H295.358V65.376H294.398C293.358 65.376 292.574 65.528 292.046 65.832C291.518 66.136 291.254 66.632 291.254 67.32V75H288.182Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/svalbardsstrandarhreppur.svg b/libs/application/templates/financial-aid/src/svg/svalbardsstrandarhreppur.svg deleted file mode 100644 index 7bbb1a9827b2..000000000000 --- a/libs/application/templates/financial-aid/src/svg/svalbardsstrandarhreppur.svg +++ /dev/null @@ -1,45 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57913)"> -<path d="M77.7859 44.301C77.7373 36.8738 77.7859 26.4854 77.7859 19.2524C77.5917 16.2912 73.2228 17.7476 71.1839 17.0679C66.3781 16.6311 61.4266 16.1456 56.5237 16.0971C44.2422 15.7573 32.4946 16.2427 20.8927 17.6019C17.7859 17.7476 19.582 23.4272 19.1451 25.3689C19.1451 34.0097 19.0965 45.5145 19.1451 54.1553L19.0965 54.1068C19.1451 58.0874 18.9995 62.1165 19.1451 66.0971C19.4849 68.1845 19.8732 70.3204 20.5043 72.3592H20.3587C21.1354 74.6408 22.3975 76.7281 23.6597 78.767C24.048 80.5631 26.0868 81.6311 27.0577 83.1844C29.048 85.7087 31.9606 87.6019 34.8247 89.6408C38.4655 92.165 42.1063 93.8641 46.9121 95.6602L46.8635 95.6116C50.5043 96.9223 55.9897 92.6019 58.7082 91.534C66.6694 86.9709 71.7179 82.0679 75.2131 74.8349C76.3296 72.4078 77.1063 69.7379 77.2033 67.0679C77.1548 66.6311 77.4946 66.1456 77.5431 65.7573C77.7373 60.7573 77.5431 55.5145 77.5917 50.466H77.6888C77.7859 49.6893 77.8344 44.9806 77.7859 44.301Z" fill="white"/> -<path d="M39 41.7767C33.1262 41.7282 27.2524 42.8932 21.3786 43.1845C19.6311 43.2815 19.0485 43.7184 19.0485 45.5146C19.1456 52.2136 19.0971 58.8641 19.0971 65.5631C19.0971 68.4272 19.8738 69.3981 22.5437 70.1262C25.7476 71.4369 27.932 66.8738 30.8446 69.2524C32.7864 70.6602 34.9709 70.7573 36.9126 69.301C40.165 66.5825 43.0291 72.4078 46.5243 69.5437C48.5145 68.0874 47.9806 71.6796 46.767 72.068C43.2233 74.9806 40.2621 69.301 36.9126 71.9223C32.9806 75.2718 30.4078 69.4951 27.0582 71.7767C25.2136 73.1845 23.1747 73.1359 21.0874 72.2621C20.9903 71.6311 19.6796 71.7767 20.3592 72.3592C21.1359 76.534 24.1942 76.3883 26.8641 74.7864C28.1747 73.767 29.3398 73.6699 30.7961 74.7379C34.9709 78.3786 37.4951 72.068 41.0388 74.7379C43.3204 76.6311 45.3107 75.5146 47.5437 74.7864C49 78.233 43.3689 79.3981 41.233 77.5049C39.6796 76.4369 38.3689 76.3883 36.8155 77.5049C31.8641 80.9029 30.699 74.1068 25.2136 78.233C22.932 78.3301 23.466 79.4466 24.7767 80.7087C26.5243 82.068 27.7378 77.7961 30.8446 80.2718C35.0194 83.6699 37.3495 77.8932 40.699 80.0777C44.3398 83.2816 47.8835 78.7184 47.7864 81.0485C47.7864 84.301 43.0291 84.6893 40.9903 82.8932C39.7281 81.9709 38.5145 81.8252 37.2524 82.7961C35.0194 84.4951 32.7864 84.3981 30.5534 82.7961C27.6893 80.9515 24.7281 83.7184 30.2136 85.4175C35.2136 89.4466 37.0582 83.5728 40.5048 85.4175C42.5922 86.9709 44.7281 87.3107 47.0097 85.8544C47.7379 85.3689 47.7864 85.8544 47.8349 86.3884C48.1747 89.1553 43.7573 90.2718 41.9612 88.8155C39.8738 87.3107 38.0291 87.2621 36.1359 88.9126C35.7476 89.2524 34.8252 89.1068 34.9223 89.6893C35.4078 90.3689 37.0582 91.534 37.9806 90.7087C40.9903 89.301 42.8349 94.3981 46.9611 91.3884C47.7864 90.8058 47.8349 91.3398 47.8835 91.9709C48.2718 93.8641 46.3301 94.0583 45.3107 95.0777C46.8641 95.5631 48.3204 96.6311 49.8738 95.7087C53.0291 94.6893 55.9903 93.1845 58.8544 91.5825C68.0777 86.4369 76.767 77.7476 77.398 66.6311C78.4175 61.1942 77.4466 55.3204 77.7378 49.7379C77.301 47.7476 79.2427 43.6699 76.3786 43.233C71.2815 42.5534 66.1359 42.3107 61.0388 41.8252C60.7476 37.9903 60.7476 37.9903 57.8835 37.8447L57.932 37.8932C57.5922 36.9709 56.6213 37.2621 55.9903 36.8738C56.3301 36.1942 56.9126 36.0971 57.5922 36C63.8058 35.2233 69.9709 34.3495 76.1845 33.5728C79.2912 34.1068 77.2039 21.8252 77.7864 19.301C77.7864 18.233 77.3495 17.6505 76.233 17.5534C61.7184 16 47.0582 15.5146 32.398 16.534C16.4272 18.3301 19.3398 14.5437 19.0971 30.8058C19.0485 32.165 19.6311 32.6019 20.8446 32.7961C28.6602 34.1068 36.5728 34.7864 44.3398 36.4854C44.3883 36.6311 44.3883 36.7767 44.3883 36.9223C43.9514 37.165 43.4175 37.3107 43.1747 37.7961C44.1456 37.5049 44.3883 38.4757 45.1165 36.9709C46.0874 37.0194 46.7184 36.2427 47.5922 36.0485C47.7864 37.5049 47.7379 38.9126 47.5922 40.3689C47.301 40.2718 47.0097 40.3204 46.8155 40.6116C43.9029 42.2136 45.7961 38.0874 43.466 39.8835C42.2039 40.4175 41.0874 40.2233 40.0194 39.3981C40.165 39.3495 40.2621 39.301 40.4078 39.2524C40.3107 39.2039 40.2621 39.1553 40.165 39.1068C40.1165 39.2039 40.0679 39.3495 40.0679 39.4466C39.4854 39.3495 38.8058 39.3495 38.7087 40.0291C38.6602 40.9515 40.5048 39.8835 40.5048 41.3398V41.3883C40.165 41.4854 39.8738 41.5825 39.534 41.6796C39.2912 41.534 39.1456 41.6311 39 41.7767Z" fill="#FDFCFC"/> -<path d="M77.3501 66.5825C76.719 77.699 68.0297 86.3884 58.8064 91.534C55.9423 93.1359 52.9812 94.6408 49.8258 95.6602C48.2724 96.5825 46.8161 95.466 45.2627 95.0291C46.2821 94.0097 48.2724 93.8156 47.8355 91.9223C47.787 91.2427 47.787 90.7573 46.9132 91.3398C42.8355 94.3495 40.9909 89.301 37.9326 90.6602C37.0103 91.4855 35.3598 90.3204 34.8744 89.6408C40.9909 84.3495 41.3792 91.7767 46.7676 88.5728C47.8355 88.3787 48.4666 84.9806 47.0103 85.8058C44.7287 87.2622 42.5928 86.8738 40.5054 85.3689C37.1074 83.4757 35.2142 89.3981 30.2142 85.3689C24.7287 83.6699 27.6899 80.8544 30.554 82.7476C35.1171 86.6311 37.3501 80.2233 40.9909 82.8932C42.9811 84.6893 47.787 84.3495 47.787 81.0486C47.7384 80.2719 47.5928 79.9806 46.8161 80.466C42.9326 83.4272 40.4569 77.7961 37.1559 80.2233C33.1268 83.767 30.3598 77.8447 26.8646 80.3204C26.2821 80.7573 25.6025 81.5825 24.7773 80.7573C23.5151 79.5437 22.8841 78.3787 25.2142 78.2816C30.6025 74.2039 31.9132 80.9515 36.8161 77.5534C38.3695 76.4369 39.6802 76.4855 41.2336 77.5534C43.321 79.4466 48.952 78.2816 47.5443 74.835C41.0879 78.1359 41.2336 72.068 37.1074 74.7864C35.0685 76.2913 32.8355 76.2913 30.7967 74.835C28.321 72.699 26.719 75.8544 24.1947 75.8544C21.8646 76 21.2821 75.466 20.4083 72.4563C27.0103 74.4952 26.9617 69.5923 30.8452 71.9709C32.8355 73.3301 34.9714 73.4757 36.9132 72.0194C40.2627 69.4466 43.2239 75.1262 46.7676 72.1651C47.9812 71.7767 48.4666 68.1845 46.5248 69.6408C43.0782 72.4563 40.1656 66.6796 36.9132 69.3981C34.9229 70.8544 32.787 70.7573 30.8452 69.3495C27.9326 66.9709 25.7481 71.534 22.5443 70.2233C19.8744 69.4952 19.0977 68.5243 19.0977 65.6602C22.2045 67.7476 25.2627 68.1845 28.321 65.6117C29.2433 65.5631 30.02 65.9029 30.7481 66.4369C34.5345 69.5437 36.7676 65.0777 40.3598 65.8058C42.8841 68.7185 48.0297 67.8932 47.7384 63.4757C47.7384 57.8447 47.7384 52.1651 47.7384 46.534C48.5637 41.9223 41.6705 47.7476 39.0006 46.6796C39.4375 46 40.5054 46.0971 40.8938 45.3204C42.787 45.5631 41.6219 44.1554 40.8938 45.3204C40.554 45.2719 40.1656 45.3204 39.9714 44.8835C46.3307 41.7282 48.418 44.3495 47.5443 36.0971C48.1268 33.7185 45.4569 36.5825 44.2918 36.0971C43.7093 33.4757 49.5831 32.7961 48.8064 29.6408C48.7579 29.301 49.1947 29.2039 49.5345 29.2524C50.8452 29.5922 48.6122 30.5631 51.1365 32.2136C56.5248 35.6602 53.3695 36.7282 55.9909 36.8738C56.6219 37.2622 57.5928 36.9709 57.9326 37.8932C57.0588 38.0388 56.8646 38.6214 57.0588 39.3495C56.8646 39.3495 56.6705 39.3495 56.4763 39.3495C56.8646 37.7476 55.7967 37.5049 54.6316 37.3592C53.1268 37.068 53.952 39.1554 53.7093 39.9806C53.4666 41.4855 54.0491 42.3107 55.6025 42.2622C57.1559 42.2622 56.4278 41.0971 56.4763 40.3689C56.6705 40.3689 56.8646 40.4175 57.0588 40.4175C56.719 41.6796 57.3986 41.9709 58.4666 41.8253C58.7579 42.3592 57.787 42.4078 58.0297 42.6505C58.5151 43.0874 60.3598 43.767 60.3598 42.602C60.554 41.0971 59.0977 42.4078 58.418 41.8738C59.9229 40.6117 58.0782 40.8544 57.0588 40.466C57.2045 40.1262 57.3986 39.835 57.5443 39.4952C57.8355 39.4466 58.1753 39.4466 58.4666 39.3981C58.4666 40.4175 60.4569 40.8544 60.3112 39.7864C59.8258 38.8641 59.0491 39.7864 58.3695 39.4466C59.5345 38.5243 57.7384 38.4757 57.8841 37.8447C60.7967 37.9903 60.7967 37.9903 60.9909 41.7767C60.8938 42.4078 60.6511 43.1359 61.3307 43.5243C63.2724 44.5437 61.719 45.466 61.0394 45.6117C57.6413 46.3398 59.4375 49.6893 58.8549 52.0194C58.1268 52.0194 56.719 52.2622 56.5248 52.8932C57.3501 53.0389 58.2239 53.233 58.952 52.5049C60.8938 52.699 64.8258 53.3787 64.1462 56.0971C63.2724 58.9612 63.9035 61.8253 63.6608 64.6893C63.5637 66.1456 64.0491 66.6796 65.554 66.6311C69.4375 66.4855 73.3695 66.5825 77.3501 66.5825Z" fill="#9B0E10"/> -<path d="M55.9908 36.8738C53.418 36.7282 56.5248 35.6602 51.1364 32.2136C48.6122 30.5631 50.8937 29.5922 49.5345 29.2039C49.1947 29.1553 48.7578 29.2524 48.8064 29.5922C49.3889 33.1359 43.5636 33.1359 44.3403 36.4369C36.5733 34.7379 28.6607 34.0097 20.8452 32.7476C19.6316 32.5534 19.0491 32.1165 19.0976 30.7573C19.3889 14.5922 16.3306 18.3301 32.3986 16.534C47.0588 15.5146 61.719 16 76.2821 17.5534C77.3986 17.6505 77.8355 18.233 77.8355 19.301C77.253 21.8252 79.3403 34.1068 76.2335 33.5728C70.0199 34.3495 63.8549 35.2233 57.6413 36C56.9131 36.0485 56.3306 36.1942 55.9908 36.8738ZM39.1462 25.9029C38.1267 25.7087 37.1073 25.7087 36.1365 25.8544C34.0976 25.9515 32.884 23.8641 30.8937 23.9612C30.117 23.8155 29.486 23.233 28.6607 23.5243C29.1462 24.301 30.117 24.5437 30.8937 24.7379C31.719 25.4175 33.6122 25.7087 33.4665 26.4854C32.9326 29.1553 35.6996 27.068 36.3792 26.4369C37.35 26.4369 38.2724 26.4369 39.2432 26.4369C39.9714 27.165 40.0685 25.7087 39.1462 25.9029Z" fill="#FDD7AE"/> -<path d="M47.5917 40.3204C49.7276 43.1359 33.4169 45.1748 39.0965 46.5825C41.7664 47.6991 48.6596 41.8738 47.8344 46.4369C47.8344 52.068 47.8344 57.7476 47.8344 63.3787C47.8344 66.6311 45.5043 68.1845 42.3975 67.0194C40.5043 66.6311 40.213 64.9806 39.8247 63.3787C37.3489 56.9709 28.3198 58.767 28.3684 65.4661C25.3101 68.0874 22.2033 67.602 19.1451 65.5146C19.1451 58.8156 19.1936 52.1651 19.0965 45.466C19.048 43.6214 19.6305 43.233 21.4266 43.1359C27.1548 42.8447 32.8829 41.6796 38.6596 41.7767C38.7567 42.5534 39.4363 42.3107 39.8732 42.4078C39.8247 44.3981 41.815 43.0389 42.6402 42.5049C42.7373 42.1165 41.0868 41.9709 40.7955 42.1651C40.5528 41.9224 40.4072 41.6796 40.5043 41.2913V41.2427C41.6208 41.0971 42.6887 40.9029 43.8053 41.3398C43.8538 41.6311 43.2227 42.2622 43.9023 42.068C44.9218 41.7767 46.2324 41.6796 46.815 40.5146C47.0091 40.2719 47.2519 40.2719 47.5917 40.3204Z" fill="#FDD6AD"/> -<path d="M77.3503 66.5825C73.4182 66.5825 69.4862 66.534 65.5056 66.5825C64.0008 66.631 63.5153 66.0971 63.6124 64.6407C63.8551 61.7767 63.2241 58.864 64.0978 56.0485C64.7775 53.9611 62.2532 53.3301 60.7969 52.699C66.0396 50.9514 73.0784 42.7961 77.6901 49.6893C77.3988 55.2718 78.3697 61.1456 77.3503 66.5825Z" fill="#F59528"/> -<path d="M77.6902 49.6893C72.3019 41.6796 65.2145 53.4272 58.9038 52.4563C59.2922 50.0777 57.6902 46.2913 61.0398 45.5631C61.7194 45.4175 63.2728 44.4951 61.331 43.4757C60.6514 43.1359 60.8941 42.3592 60.9912 41.7281C66.0883 42.2621 71.2339 42.4563 76.331 43.1359C79.1466 43.6214 77.2048 47.699 77.6902 49.6893Z" fill="#FDD6AD"/> -<path d="M42.9329 41.2427C42.1077 40.8544 41.2825 41.3883 40.4572 41.3398C40.4572 39.8835 38.6126 40.9515 38.6611 40.0291C38.7096 39.3495 39.3893 39.301 40.0203 39.4466L39.9718 39.3981C41.0397 40.2233 42.1562 40.4175 43.4184 39.8835C43.4184 40.2233 43.4184 40.5146 43.3698 40.8544C43.2727 40.9515 43.1271 41.0971 42.9329 41.2427Z" fill="#B6463D"/> -<path d="M44.3398 36.4855C44.3398 36.3398 44.3398 36.1942 44.3398 36C45.4563 36.4369 48.1263 33.5728 47.5923 36C46.5243 36.3398 45.602 37.1651 44.3884 36.9224C44.3884 36.7767 44.3884 36.6311 44.3398 36.4855Z" fill="#FDD6AD"/> -<path d="M43.418 40.8058C43.418 40.466 43.418 40.1747 43.4665 39.8349C45.2141 38.2815 44.6801 40.8544 45.5053 40.9514C45.3112 41.3883 44.8743 41.1942 44.5345 41.2427C44.2918 40.8058 43.8549 40.8544 43.418 40.8058Z" fill="#FDD6AD"/> -<path d="M44.5347 41.2913C44.8745 41.2427 45.2629 41.4369 45.5056 41C45.9425 40.8544 46.3794 40.7087 46.8163 40.5631C46.2338 41.7282 44.9231 41.8252 43.9037 42.1165C43.2241 42.3107 43.8066 41.6311 43.8066 41.3884C44.0493 41.3398 44.292 41.3398 44.5347 41.2913Z" fill="#B6463D"/> -<path d="M44.3874 36.9223C44.6301 36.9223 44.8729 36.9223 45.1156 36.9708C44.3874 38.4757 44.1932 37.5048 43.1738 37.7961C43.4165 37.2621 43.9505 37.1165 44.3874 36.9223Z" fill="#B6463D"/> -<path d="M39.8249 42.4563C39.388 42.3107 38.7084 42.6019 38.6113 41.8252C39.2424 41.8252 39.8735 41.534 40.5045 41.3398C40.3589 41.7281 40.5045 41.9709 40.7472 42.2136C40.456 42.3107 40.1162 42.3592 39.8249 42.4563Z" fill="#9B0E10"/> -<path d="M21.1836 72.3107C20.9409 72.3592 20.6982 72.3592 20.4554 72.4078C19.7758 71.7767 21.038 71.6311 21.1836 72.3107Z" fill="#B6463D"/> -<path d="M39.4854 41.6796C39.3398 41.7282 39.1456 41.7767 39 41.8253C39.1456 41.6311 39.2913 41.534 39.4854 41.6796Z" fill="#B6463D"/> -<path d="M40.0196 39.398C40.0682 39.3009 40.1167 39.1553 40.1167 39.0582C40.2138 39.1068 40.2623 39.1553 40.3594 39.2039C40.2623 39.2524 40.1167 39.3009 40.0196 39.398C39.9711 39.3495 40.0196 39.398 40.0196 39.398Z" fill="#B6463D"/> -<path d="M28.3691 65.466C28.7089 57.068 39.7769 57.6019 40.408 65.6602C36.8157 64.932 34.5342 69.3981 30.7963 66.2913C30.0682 65.8058 29.2915 65.466 28.3691 65.466Z" fill="#FDFCFC"/> -<path d="M56.4275 40.3689C56.3304 41.0971 57.1071 42.2621 55.5537 42.2621C54.0003 42.2621 53.4178 41.4369 53.6605 39.9806C54.6314 39.6407 55.5052 40.2233 56.4275 40.3689Z" fill="#FDD7AE"/> -<path d="M53.6603 38.7184C53.806 38.1844 53.2234 37.1165 54.5827 37.3107C55.7477 37.5048 56.8157 37.7475 56.4273 39.3009C55.4565 39.4466 54.5827 39.0582 53.6603 38.7184Z" fill="#FDFCFC"/> -<path d="M58.3691 41.8252C59.0487 42.3592 60.505 41.0485 60.3109 42.5534C60.3109 43.7184 58.4662 43.0388 57.9808 42.6019C57.7381 42.3592 58.7089 42.3592 58.4177 41.7767L58.3691 41.8252Z" fill="#FDD6AD"/> -<path d="M39.0965 46.5825C36.4266 46.0485 38.7081 44.9806 40.0673 44.7864C40.2615 45.1747 40.6499 45.1747 40.9897 45.2233C40.5528 45.9514 39.5334 45.8543 39.0965 46.5825Z" fill="#B6463D"/> -<path d="M53.6599 38.7184C54.8735 39.3495 56.1841 39.2524 57.4463 39.4466C57.3006 39.7864 57.1065 40.0777 56.9608 40.4175C55.7958 40.466 54.7764 39.6408 53.6113 39.9806C53.6599 39.5437 53.6599 39.1553 53.6599 38.7184Z" fill="#B6463D"/> -<path d="M57.0085 40.4175C58.0765 40.8058 59.9211 40.5631 58.3677 41.8253L58.4163 41.7767C57.3483 41.9709 56.7173 41.6796 57.0085 40.4175Z" fill="#FDD7AE"/> -<path d="M57.4948 39.4952C57.3492 39.4466 57.2036 39.3981 57.058 39.3981C56.9123 38.6214 57.1065 38.0874 57.9317 37.9418L57.8832 37.8447C57.7376 38.4757 59.4851 38.5243 58.3686 39.4466L58.4172 39.3981C58.0774 39.3981 57.7861 39.4466 57.4948 39.4952Z" fill="#FDFCFC"/> -<path d="M58.8552 51.9709C58.8552 52.1165 58.9037 52.3107 58.9037 52.4563C58.1756 53.1845 57.3503 52.9418 56.4766 52.8447C56.7193 52.2136 58.127 51.9709 58.8552 51.9709Z" fill="#B6463D"/> -<path d="M58.3691 39.4466C59.0002 39.7864 59.8254 38.8641 60.3109 39.7864C60.408 40.9029 58.4177 40.466 58.4662 39.3981C58.4177 39.3981 58.3691 39.4466 58.3691 39.4466Z" fill="#FDFCFC"/> -<path d="M40.9902 45.2233C41.7184 44.0097 42.8349 45.4175 40.9902 45.2233V45.2233Z" fill="#B6463D"/> -<path d="M36.2804 26.4854C35.6007 27.1165 32.8338 29.2039 33.3677 26.534C33.5134 25.7087 31.6202 25.466 30.7949 24.7864C30.7949 24.5437 30.7949 24.2524 30.7949 24.0097C32.7852 23.9126 34.0473 26 36.0376 25.9029C36.1347 26.0971 36.2318 26.2912 36.2804 26.4854Z" fill="#9B0E10"/> -<path d="M30.8443 23.9611C30.8443 24.2039 30.8443 24.4951 30.8443 24.7378C30.0191 24.5437 29.0968 24.301 28.6113 23.5243C29.388 23.2815 30.0676 23.8641 30.8443 23.9611Z" fill="#9B0E10"/> -<path d="M36.2821 26.4854C36.2335 26.2913 36.1364 26.0971 36.0879 25.8544C37.1073 25.6602 38.1267 25.6602 39.0976 25.9029C39.0976 26.0971 39.0976 26.2913 39.0976 26.4854C38.1753 26.4854 37.2529 26.4854 36.2821 26.4854Z" fill="#9B0E10"/> -<path d="M39.1465 26.4854C39.1465 26.2912 39.1465 26.0971 39.1465 25.9029C40.0688 25.7087 39.9717 27.165 39.1465 26.4854Z" fill="#9B0E10"/> -<path d="M39.8251 42.4563C40.6018 42.2136 41.3785 42.0194 42.1552 42.2621C42.3494 42.2621 42.6406 42.2136 42.5921 42.5534C41.7668 43.0874 39.7765 44.4466 39.8251 42.4563Z" fill="#B6463D"/> -<path d="M44.5339 41.2913C43.9999 41.4369 43.4659 41.3884 42.9805 41.2427C43.1261 41.0971 43.2717 40.9515 43.4174 40.8544C43.8543 40.8544 44.2911 40.8058 44.5339 41.2913Z" fill="#9B0E10"/> -</g> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M103.176 61.288C101.736 61.288 100.512 61.032 99.504 60.52C98.512 60.008 97.656 59.336 96.936 58.504L99.072 56.44C99.648 57.112 100.288 57.624 100.992 57.976C101.712 58.328 102.504 58.504 103.368 58.504C104.344 58.504 105.08 58.296 105.576 57.88C106.072 57.448 106.32 56.872 106.32 56.152C106.32 55.592 106.16 55.136 105.84 54.784C105.52 54.432 104.92 54.176 104.04 54.016L102.456 53.776C99.112 53.248 97.44 51.624 97.44 48.904C97.44 48.152 97.576 47.472 97.848 46.864C98.136 46.256 98.544 45.736 99.072 45.304C99.6 44.872 100.232 44.544 100.968 44.32C101.72 44.08 102.568 43.96 103.512 43.96C104.776 43.96 105.88 44.168 106.824 44.584C107.768 45 108.576 45.616 109.248 46.432L107.088 48.472C106.672 47.96 106.168 47.544 105.576 47.224C104.984 46.904 104.24 46.744 103.344 46.744C102.432 46.744 101.744 46.92 101.28 47.272C100.832 47.608 100.608 48.088 100.608 48.712C100.608 49.352 100.792 49.824 101.16 50.128C101.528 50.432 102.12 50.656 102.936 50.8L104.496 51.088C106.192 51.392 107.44 51.936 108.24 52.72C109.056 53.488 109.464 54.568 109.464 55.96C109.464 56.76 109.32 57.488 109.032 58.144C108.76 58.784 108.352 59.344 107.808 59.824C107.28 60.288 106.624 60.648 105.84 60.904C105.072 61.16 104.184 61.288 103.176 61.288ZM115.136 61L110.96 48.472H113.984L115.736 53.872L116.96 58.336H117.128L118.352 53.872L120.056 48.472H122.984L118.784 61H115.136ZM134.039 61C133.367 61 132.831 60.808 132.431 60.424C132.047 60.024 131.807 59.496 131.711 58.84H131.567C131.359 59.656 130.935 60.272 130.295 60.688C129.655 61.088 128.863 61.288 127.919 61.288C126.639 61.288 125.655 60.952 124.967 60.28C124.279 59.608 123.935 58.712 123.935 57.592C123.935 56.296 124.399 55.336 125.327 54.712C126.255 54.072 127.575 53.752 129.287 53.752H131.423V52.84C131.423 52.136 131.239 51.592 130.871 51.208C130.503 50.824 129.911 50.632 129.095 50.632C128.375 50.632 127.791 50.792 127.343 51.112C126.911 51.416 126.543 51.784 126.239 52.216L124.415 50.584C124.879 49.864 125.495 49.288 126.263 48.856C127.031 48.408 128.047 48.184 129.311 48.184C131.007 48.184 132.295 48.568 133.175 49.336C134.055 50.104 134.495 51.208 134.495 52.648V58.552H135.743V61H134.039ZM128.951 59.056C129.639 59.056 130.223 58.904 130.703 58.6C131.183 58.296 131.423 57.848 131.423 57.256V55.6H129.455C127.855 55.6 127.055 56.112 127.055 57.136V57.544C127.055 58.056 127.215 58.44 127.535 58.696C127.871 58.936 128.343 59.056 128.951 59.056ZM141.301 61C140.245 61 139.469 60.736 138.973 60.208C138.477 59.68 138.229 58.936 138.229 57.976V43.24H141.301V58.552H142.957V61H141.301ZM145.284 43.24H148.356V50.536H148.452C148.676 49.816 149.1 49.248 149.724 48.832C150.348 48.4 151.076 48.184 151.908 48.184C153.508 48.184 154.724 48.752 155.556 49.888C156.404 51.008 156.828 52.616 156.828 54.712C156.828 56.824 156.404 58.448 155.556 59.584C154.724 60.72 153.508 61.288 151.908 61.288C151.076 61.288 150.348 61.072 149.724 60.64C149.116 60.208 148.692 59.632 148.452 58.912H148.356V61H145.284V43.24ZM150.924 58.744C151.724 58.744 152.372 58.48 152.868 57.952C153.364 57.424 153.612 56.712 153.612 55.816V53.656C153.612 52.76 153.364 52.048 152.868 51.52C152.372 50.976 151.724 50.704 150.924 50.704C150.188 50.704 149.572 50.888 149.076 51.256C148.596 51.624 148.356 52.112 148.356 52.72V56.704C148.356 57.36 148.596 57.864 149.076 58.216C149.572 58.568 150.188 58.744 150.924 58.744ZM168.89 61C168.218 61 167.682 60.808 167.282 60.424C166.898 60.024 166.658 59.496 166.562 58.84H166.418C166.21 59.656 165.786 60.272 165.146 60.688C164.506 61.088 163.714 61.288 162.77 61.288C161.49 61.288 160.506 60.952 159.818 60.28C159.13 59.608 158.786 58.712 158.786 57.592C158.786 56.296 159.25 55.336 160.178 54.712C161.106 54.072 162.426 53.752 164.138 53.752H166.274V52.84C166.274 52.136 166.09 51.592 165.722 51.208C165.354 50.824 164.762 50.632 163.946 50.632C163.226 50.632 162.642 50.792 162.194 51.112C161.762 51.416 161.394 51.784 161.09 52.216L159.266 50.584C159.73 49.864 160.346 49.288 161.114 48.856C161.882 48.408 162.898 48.184 164.162 48.184C165.858 48.184 167.146 48.568 168.026 49.336C168.906 50.104 169.346 51.208 169.346 52.648V58.552H170.594V61H168.89ZM163.802 59.056C164.49 59.056 165.074 58.904 165.554 58.6C166.034 58.296 166.274 57.848 166.274 57.256V55.6H164.306C162.706 55.6 161.906 56.112 161.906 57.136V57.544C161.906 58.056 162.066 58.44 162.386 58.696C162.722 58.936 163.194 59.056 163.802 59.056ZM173.081 61V48.472H176.153V51.064H176.273C176.353 50.728 176.473 50.408 176.633 50.104C176.809 49.784 177.033 49.504 177.305 49.264C177.577 49.024 177.897 48.832 178.265 48.688C178.649 48.544 179.089 48.472 179.585 48.472H180.257V51.376H179.297C178.257 51.376 177.473 51.528 176.945 51.832C176.417 52.136 176.153 52.632 176.153 53.32V61H173.081ZM191.673 44.224L189.897 45.376C191.001 46.528 191.889 47.856 192.561 49.36C193.233 50.864 193.569 52.536 193.569 54.376C193.569 55.56 193.425 56.592 193.137 57.472C192.849 58.336 192.441 59.056 191.913 59.632C191.401 60.192 190.785 60.608 190.065 60.88C189.345 61.152 188.545 61.288 187.665 61.288C186.721 61.288 185.873 61.144 185.121 60.856C184.385 60.552 183.753 60.128 183.225 59.584C182.713 59.04 182.321 58.376 182.049 57.592C181.777 56.808 181.641 55.936 181.641 54.976C181.641 54.08 181.753 53.264 181.977 52.528C182.217 51.792 182.553 51.16 182.985 50.632C183.417 50.104 183.937 49.696 184.545 49.408C185.169 49.12 185.857 48.976 186.609 48.976C187.473 48.976 188.193 49.192 188.769 49.624C189.361 50.04 189.825 50.608 190.161 51.328L190.305 51.256C190.113 50.44 189.769 49.664 189.273 48.928C188.793 48.192 188.209 47.488 187.521 46.816L185.457 48.112L184.353 46.792L186.225 45.664C185.665 45.2 185.073 44.768 184.449 44.368C183.841 43.968 183.225 43.592 182.601 43.24H187.281C187.505 43.368 187.721 43.52 187.929 43.696C188.137 43.856 188.353 44.024 188.577 44.2L190.593 42.928L191.673 44.224ZM187.617 58.936C188.465 58.936 189.137 58.664 189.633 58.12C190.129 57.576 190.377 56.816 190.377 55.84V54.448C190.377 53.472 190.129 52.712 189.633 52.168C189.137 51.624 188.465 51.352 187.617 51.352C186.753 51.352 186.073 51.624 185.577 52.168C185.081 52.712 184.833 53.472 184.833 54.448V55.84C184.833 56.816 185.081 57.576 185.577 58.12C186.073 58.664 186.753 58.936 187.617 58.936ZM200.622 61.288C199.422 61.288 198.414 61.088 197.598 60.688C196.782 60.272 196.062 59.704 195.438 58.984L197.31 57.16C197.774 57.688 198.278 58.104 198.822 58.408C199.382 58.712 200.022 58.864 200.742 58.864C201.478 58.864 202.006 58.736 202.326 58.48C202.662 58.224 202.83 57.872 202.83 57.424C202.83 57.056 202.71 56.768 202.47 56.56C202.246 56.336 201.854 56.184 201.294 56.104L200.046 55.936C198.686 55.76 197.646 55.376 196.926 54.784C196.222 54.176 195.87 53.296 195.87 52.144C195.87 51.536 195.982 50.992 196.206 50.512C196.43 50.016 196.75 49.6 197.166 49.264C197.582 48.912 198.078 48.648 198.654 48.472C199.246 48.28 199.902 48.184 200.622 48.184C201.23 48.184 201.766 48.232 202.23 48.328C202.71 48.408 203.142 48.536 203.526 48.712C203.91 48.872 204.262 49.08 204.582 49.336C204.902 49.576 205.214 49.848 205.518 50.152L203.718 51.952C203.35 51.568 202.91 51.248 202.398 50.992C201.886 50.736 201.326 50.608 200.718 50.608C200.046 50.608 199.558 50.728 199.254 50.968C198.966 51.208 198.822 51.52 198.822 51.904C198.822 52.32 198.942 52.64 199.182 52.864C199.438 53.072 199.862 53.224 200.454 53.32L201.726 53.488C204.43 53.872 205.782 55.104 205.782 57.184C205.782 57.792 205.654 58.352 205.398 58.864C205.158 59.36 204.814 59.792 204.366 60.16C203.918 60.512 203.374 60.792 202.734 61C202.11 61.192 201.406 61.288 200.622 61.288ZM208.04 55.216V52.168H214.904V55.216H208.04ZM101.88 89.288C100.68 89.288 99.672 89.088 98.856 88.688C98.04 88.272 97.32 87.704 96.696 86.984L98.568 85.16C99.032 85.688 99.536 86.104 100.08 86.408C100.64 86.712 101.28 86.864 102 86.864C102.736 86.864 103.264 86.736 103.584 86.48C103.92 86.224 104.088 85.872 104.088 85.424C104.088 85.056 103.968 84.768 103.728 84.56C103.504 84.336 103.112 84.184 102.552 84.104L101.304 83.936C99.944 83.76 98.904 83.376 98.184 82.784C97.48 82.176 97.128 81.296 97.128 80.144C97.128 79.536 97.24 78.992 97.464 78.512C97.688 78.016 98.008 77.6 98.424 77.264C98.84 76.912 99.336 76.648 99.912 76.472C100.504 76.28 101.16 76.184 101.88 76.184C102.488 76.184 103.024 76.232 103.488 76.328C103.968 76.408 104.4 76.536 104.784 76.712C105.168 76.872 105.52 77.08 105.84 77.336C106.16 77.576 106.472 77.848 106.776 78.152L104.976 79.952C104.608 79.568 104.168 79.248 103.656 78.992C103.144 78.736 102.584 78.608 101.976 78.608C101.304 78.608 100.816 78.728 100.512 78.968C100.224 79.208 100.08 79.52 100.08 79.904C100.08 80.32 100.2 80.64 100.44 80.864C100.696 81.072 101.12 81.224 101.712 81.32L102.984 81.488C105.688 81.872 107.04 83.104 107.04 85.184C107.04 85.792 106.912 86.352 106.656 86.864C106.416 87.36 106.072 87.792 105.624 88.16C105.176 88.512 104.632 88.792 103.992 89C103.368 89.192 102.664 89.288 101.88 89.288ZM113.477 89C112.421 89 111.613 88.728 111.053 88.184C110.509 87.624 110.237 86.832 110.237 85.808V78.92H108.389V76.472H109.349C109.813 76.472 110.125 76.368 110.285 76.16C110.461 75.936 110.549 75.608 110.549 75.176V73.04H113.309V76.472H115.877V78.92H113.309V86.552H115.685V89H113.477ZM118.542 89V76.472H121.614V79.064H121.734C121.814 78.728 121.934 78.408 122.094 78.104C122.27 77.784 122.494 77.504 122.766 77.264C123.038 77.024 123.358 76.832 123.726 76.688C124.11 76.544 124.55 76.472 125.046 76.472H125.718V79.376H124.758C123.718 79.376 122.934 79.528 122.406 79.832C121.878 80.136 121.614 80.632 121.614 81.32V89H118.542ZM136.922 89C136.25 89 135.714 88.808 135.314 88.424C134.93 88.024 134.69 87.496 134.594 86.84H134.45C134.242 87.656 133.818 88.272 133.178 88.688C132.538 89.088 131.746 89.288 130.802 89.288C129.522 89.288 128.538 88.952 127.85 88.28C127.162 87.608 126.818 86.712 126.818 85.592C126.818 84.296 127.282 83.336 128.21 82.712C129.138 82.072 130.458 81.752 132.17 81.752H134.306V80.84C134.306 80.136 134.122 79.592 133.754 79.208C133.386 78.824 132.794 78.632 131.978 78.632C131.258 78.632 130.674 78.792 130.226 79.112C129.794 79.416 129.426 79.784 129.122 80.216L127.298 78.584C127.762 77.864 128.378 77.288 129.146 76.856C129.914 76.408 130.93 76.184 132.194 76.184C133.89 76.184 135.178 76.568 136.058 77.336C136.938 78.104 137.378 79.208 137.378 80.648V86.552H138.626V89H136.922ZM131.834 87.056C132.522 87.056 133.106 86.904 133.586 86.6C134.066 86.296 134.306 85.848 134.306 85.256V83.6H132.338C130.738 83.6 129.938 84.112 129.938 85.136V85.544C129.938 86.056 130.098 86.44 130.418 86.696C130.754 86.936 131.226 87.056 131.834 87.056ZM141.112 89V76.472H144.184V78.56H144.304C144.56 77.888 144.96 77.328 145.504 76.88C146.064 76.416 146.832 76.184 147.808 76.184C149.104 76.184 150.096 76.608 150.784 77.456C151.472 78.304 151.816 79.512 151.816 81.08V89H148.744V81.392C148.744 80.496 148.584 79.824 148.264 79.376C147.944 78.928 147.416 78.704 146.68 78.704C146.36 78.704 146.048 78.752 145.744 78.848C145.456 78.928 145.192 79.056 144.952 79.232C144.728 79.392 144.544 79.6 144.4 79.856C144.256 80.096 144.184 80.384 144.184 80.72V89H141.112ZM162.997 86.912H162.877C162.653 87.632 162.229 88.208 161.605 88.64C160.981 89.072 160.253 89.288 159.421 89.288C157.837 89.288 156.621 88.72 155.773 87.584C154.941 86.448 154.525 84.824 154.525 82.712C154.525 80.616 154.941 79.008 155.773 77.888C156.621 76.752 157.837 76.184 159.421 76.184C160.253 76.184 160.981 76.4 161.605 76.832C162.229 77.248 162.653 77.816 162.877 78.536H162.997V71.24H166.069V89H162.997V86.912ZM160.405 86.744C161.141 86.744 161.757 86.568 162.253 86.216C162.749 85.864 162.997 85.36 162.997 84.704V80.72C162.997 80.112 162.749 79.624 162.253 79.256C161.757 78.888 161.141 78.704 160.405 78.704C159.605 78.704 158.957 78.976 158.461 79.52C157.981 80.048 157.741 80.76 157.741 81.656V83.816C157.741 84.712 157.981 85.424 158.461 85.952C158.957 86.48 159.605 86.744 160.405 86.744ZM178.828 89C178.156 89 177.62 88.808 177.22 88.424C176.836 88.024 176.596 87.496 176.5 86.84H176.356C176.148 87.656 175.724 88.272 175.084 88.688C174.444 89.088 173.652 89.288 172.708 89.288C171.428 89.288 170.444 88.952 169.756 88.28C169.068 87.608 168.724 86.712 168.724 85.592C168.724 84.296 169.188 83.336 170.116 82.712C171.044 82.072 172.364 81.752 174.076 81.752H176.212V80.84C176.212 80.136 176.028 79.592 175.66 79.208C175.292 78.824 174.7 78.632 173.884 78.632C173.164 78.632 172.58 78.792 172.132 79.112C171.7 79.416 171.332 79.784 171.028 80.216L169.204 78.584C169.668 77.864 170.284 77.288 171.052 76.856C171.82 76.408 172.836 76.184 174.1 76.184C175.796 76.184 177.084 76.568 177.964 77.336C178.844 78.104 179.284 79.208 179.284 80.648V86.552H180.532V89H178.828ZM173.74 87.056C174.428 87.056 175.012 86.904 175.492 86.6C175.972 86.296 176.212 85.848 176.212 85.256V83.6H174.244C172.644 83.6 171.844 84.112 171.844 85.136V85.544C171.844 86.056 172.004 86.44 172.324 86.696C172.66 86.936 173.132 87.056 173.74 87.056ZM183.018 89V76.472H186.09V79.064H186.21C186.29 78.728 186.41 78.408 186.57 78.104C186.746 77.784 186.97 77.504 187.242 77.264C187.514 77.024 187.834 76.832 188.202 76.688C188.586 76.544 189.026 76.472 189.522 76.472H190.194V79.376H189.234C188.194 79.376 187.41 79.528 186.882 79.832C186.354 80.136 186.09 80.632 186.09 81.32V89H183.018ZM192.44 71.24H195.512V78.56H195.632C195.888 77.888 196.288 77.328 196.832 76.88C197.392 76.416 198.16 76.184 199.136 76.184C200.432 76.184 201.424 76.608 202.112 77.456C202.8 78.304 203.144 79.512 203.144 81.08V89H200.072V81.392C200.072 80.496 199.912 79.824 199.592 79.376C199.272 78.928 198.744 78.704 198.008 78.704C197.688 78.704 197.376 78.752 197.072 78.848C196.784 78.928 196.52 79.056 196.28 79.232C196.056 79.392 195.872 79.6 195.728 79.856C195.584 80.096 195.512 80.384 195.512 80.72V89H192.44V71.24ZM206.549 89V76.472H209.621V79.064H209.741C209.821 78.728 209.941 78.408 210.101 78.104C210.277 77.784 210.501 77.504 210.773 77.264C211.045 77.024 211.365 76.832 211.733 76.688C212.117 76.544 212.557 76.472 213.053 76.472H213.725V79.376H212.765C211.725 79.376 210.941 79.528 210.413 79.832C209.885 80.136 209.621 80.632 209.621 81.32V89H206.549ZM220.918 89.288C219.99 89.288 219.158 89.136 218.422 88.832C217.702 88.512 217.086 88.072 216.574 87.512C216.078 86.936 215.694 86.248 215.422 85.448C215.15 84.632 215.014 83.72 215.014 82.712C215.014 81.72 215.142 80.824 215.398 80.024C215.67 79.224 216.054 78.544 216.55 77.984C217.046 77.408 217.654 76.968 218.374 76.664C219.094 76.344 219.91 76.184 220.822 76.184C221.798 76.184 222.646 76.352 223.366 76.688C224.086 77.024 224.678 77.48 225.142 78.056C225.606 78.632 225.95 79.304 226.174 80.072C226.414 80.824 226.534 81.632 226.534 82.496V83.504H218.206V83.816C218.206 84.728 218.462 85.464 218.974 86.024C219.486 86.568 220.246 86.84 221.254 86.84C222.022 86.84 222.646 86.68 223.126 86.36C223.622 86.04 224.062 85.632 224.446 85.136L226.102 86.984C225.59 87.704 224.886 88.272 223.99 88.688C223.11 89.088 222.086 89.288 220.918 89.288ZM220.87 78.488C220.054 78.488 219.406 78.76 218.926 79.304C218.446 79.848 218.206 80.552 218.206 81.416V81.608H223.342V81.392C223.342 80.528 223.126 79.832 222.694 79.304C222.278 78.76 221.67 78.488 220.87 78.488ZM229.237 76.472H232.309V78.536H232.405C232.629 77.816 233.053 77.248 233.677 76.832C234.301 76.4 235.029 76.184 235.861 76.184C237.461 76.184 238.677 76.752 239.509 77.888C240.357 79.008 240.781 80.616 240.781 82.712C240.781 84.824 240.357 86.448 239.509 87.584C238.677 88.72 237.461 89.288 235.861 89.288C235.029 89.288 234.301 89.072 233.677 88.64C233.069 88.208 232.645 87.632 232.405 86.912H232.309V93.8H229.237V76.472ZM234.877 86.744C235.677 86.744 236.325 86.48 236.821 85.952C237.317 85.424 237.565 84.712 237.565 83.816V81.656C237.565 80.76 237.317 80.048 236.821 79.52C236.325 78.976 235.677 78.704 234.877 78.704C234.141 78.704 233.525 78.888 233.029 79.256C232.549 79.624 232.309 80.112 232.309 80.72V84.704C232.309 85.36 232.549 85.864 233.029 86.216C233.525 86.568 234.141 86.744 234.877 86.744ZM243.628 76.472H246.7V78.536H246.796C247.02 77.816 247.444 77.248 248.068 76.832C248.692 76.4 249.42 76.184 250.252 76.184C251.852 76.184 253.068 76.752 253.9 77.888C254.748 79.008 255.172 80.616 255.172 82.712C255.172 84.824 254.748 86.448 253.9 87.584C253.068 88.72 251.852 89.288 250.252 89.288C249.42 89.288 248.692 89.072 248.068 88.64C247.46 88.208 247.036 87.632 246.796 86.912H246.7V93.8H243.628V76.472ZM249.268 86.744C250.068 86.744 250.716 86.48 251.212 85.952C251.708 85.424 251.956 84.712 251.956 83.816V81.656C251.956 80.76 251.708 80.048 251.212 79.52C250.716 78.976 250.068 78.704 249.268 78.704C248.532 78.704 247.916 78.888 247.42 79.256C246.94 79.624 246.7 80.112 246.7 80.72V84.704C246.7 85.36 246.94 85.864 247.42 86.216C247.916 86.568 248.532 86.744 249.268 86.744ZM265.506 86.912H265.386C265.274 87.232 265.122 87.536 264.93 87.824C264.754 88.096 264.522 88.344 264.234 88.568C263.962 88.792 263.626 88.968 263.226 89.096C262.842 89.224 262.394 89.288 261.882 89.288C260.586 89.288 259.594 88.864 258.906 88.016C258.218 87.168 257.874 85.96 257.874 84.392V76.472H260.946V84.08C260.946 84.944 261.114 85.608 261.45 86.072C261.786 86.52 262.322 86.744 263.058 86.744C263.362 86.744 263.658 86.704 263.946 86.624C264.25 86.544 264.514 86.424 264.738 86.264C264.962 86.088 265.146 85.88 265.29 85.64C265.434 85.384 265.506 85.088 265.506 84.752V76.472H268.578V89H265.506V86.912ZM272.128 89V76.472H275.2V79.064H275.32C275.4 78.728 275.52 78.408 275.68 78.104C275.856 77.784 276.08 77.504 276.352 77.264C276.624 77.024 276.944 76.832 277.312 76.688C277.696 76.544 278.136 76.472 278.632 76.472H279.304V79.376H278.344C277.304 79.376 276.52 79.528 275.992 79.832C275.464 80.136 275.2 80.632 275.2 81.32V89H272.128Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57913"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/talknafjardarhreppur.svg b/libs/application/templates/financial-aid/src/svg/talknafjardarhreppur.svg deleted file mode 100644 index 8366263e28eb..000000000000 --- a/libs/application/templates/financial-aid/src/svg/talknafjardarhreppur.svg +++ /dev/null @@ -1,15 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57901)"> -<path d="M15.0001 16C15.0001 16.3395 15.0001 16.6143 15.0001 16.8729C15.0001 32.3427 14.984 47.8125 15.0163 63.2661C15.0163 64.9634 15.081 66.6607 15.3073 68.3419C16.5358 77.4912 20.9811 84.7492 28.5463 90.0028C35.4325 94.7876 43.1594 96.5819 51.4681 95.8383C57.5784 95.2887 63.2038 93.3166 68.1503 89.6472C76.7338 83.2621 81.0014 74.6462 81.0175 63.9612C81.0498 48.4106 81.0175 32.86 81.0175 17.3255C81.0175 16.9052 81.0175 16.4849 81.0175 16.0162C58.9686 16 37.049 16 15.0001 16Z" fill="white"/> -<path d="M15 16C37.0489 16 58.9685 16 81.0174 16C81.0174 16.4688 81.0174 16.8891 81.0174 17.3094C81.0174 32.86 81.0335 48.4106 81.0174 63.945C81.0012 74.63 76.7175 83.2459 68.1501 89.631C63.2198 93.3005 57.5783 95.2887 51.468 95.8222C43.1592 96.5658 35.4324 94.7715 28.5462 89.9867C20.981 84.7492 16.5357 77.4912 15.3071 68.3419C15.0808 66.6607 15.0162 64.9634 15.0162 63.2661C15 47.7963 15 32.3427 15 16.8729C15 16.6143 15 16.3395 15 16ZM30.3405 48.8794C30.2111 48.8955 30.1465 48.9279 30.0657 48.9279C26.0244 48.9117 21.9832 48.9117 17.942 48.847C17.1661 48.8309 16.9883 49.1057 17.0044 49.8169C17.0368 52.0477 17.0044 54.2946 17.0206 56.5254C17.0529 60.0008 16.8913 63.4924 17.1984 66.9517C18.0552 76.4243 22.7268 83.6662 30.6153 88.8875C30.8577 89.0491 31.278 89.1138 31.5528 89.0168C35.1253 87.8206 38.6492 86.4627 42.254 85.3958C49.6575 83.1974 57.1257 81.2091 64.5292 79.0107C67.8753 78.0085 71.2053 76.8285 74.1473 74.8563C75.0848 74.2259 75.9254 73.3692 76.6043 72.4639C77.2994 71.5425 77.0893 70.4595 76.2164 69.7159C75.6183 69.1825 74.9394 68.7137 74.2281 68.3419C69.7828 65.9656 65.0141 64.4623 60.1323 63.2338C51.8721 61.1647 43.4017 60.5019 34.9475 59.823C31.86 59.5805 28.7725 59.3057 25.7011 58.9986C25.1192 58.9501 24.5696 58.7238 23.9877 58.5783C24.0038 58.4975 24.0038 58.4328 24.02 58.352C24.2786 58.2873 24.5211 58.1903 24.7797 58.158C26.3316 57.9964 27.8834 57.7539 29.4352 57.7054C37.6955 57.4144 45.9719 57.1396 54.2322 56.9133C62.1529 56.7032 70.0737 56.5415 77.9945 56.3799C78.7058 56.3637 78.9806 56.1697 78.9644 55.4261C78.9159 53.5187 78.9321 51.5951 78.9644 49.6876C78.9806 49.041 78.8189 48.7985 78.1238 48.7985C70.882 48.8309 63.6239 48.8147 56.3821 48.8309C54.3453 48.8309 52.2924 48.8309 50.2556 48.8309C51.7428 48.5561 53.2299 48.3459 54.7333 48.2489C56.5922 48.1358 57.9016 47.1012 58.726 45.6141C59.5827 44.0461 60.9567 43.4156 62.4924 43.157C67.7298 42.2841 72.9672 41.492 78.2208 40.6999C78.8028 40.6191 78.9644 40.3766 78.9644 39.8109C78.9483 32.86 78.9483 25.9091 78.9644 18.9582C78.9644 18.3116 78.8028 18.0691 78.1077 18.0691C58.0309 18.0853 37.9541 18.0853 17.8773 18.0691C17.2308 18.0691 16.9883 18.2469 16.9883 18.9258C17.0044 25.2786 17.0044 31.6476 16.9883 38.0004C16.9883 38.5985 17.2146 38.7925 17.7642 38.8571C19.122 39.0188 20.4961 39.2128 21.8377 39.4229C22.9208 39.5846 23.7614 40.1018 24.1655 41.1687C24.5049 42.0901 24.6989 43.0762 25.1839 43.9006C25.8143 44.9513 26.1699 46.2122 27.3823 46.8749C28.4007 47.4569 29.3221 48.1843 30.3405 48.8794Z" fill="#2F1273"/> -<path d="M30.3394 48.8794C29.321 48.1843 28.4158 47.4569 27.4136 46.9073C26.2012 46.2283 25.8456 44.9836 25.2151 43.9329C24.7302 43.1085 24.5362 42.1063 24.1967 41.2011C23.7926 40.118 22.952 39.6169 21.869 39.4553C20.5111 39.2451 19.1533 39.0511 17.7954 38.8895C17.2458 38.8248 17.0195 38.6308 17.0195 38.0327C17.0357 31.6799 17.0357 25.311 17.0195 18.9582C17.0195 18.2793 17.262 18.1014 17.9086 18.1014C37.9854 18.1176 58.0622 18.1176 78.139 18.1014C78.834 18.1014 78.9957 18.3439 78.9957 18.9905C78.9795 25.9414 78.9795 32.8923 78.9957 39.8432C78.9957 40.409 78.834 40.6353 78.2521 40.7323C72.9985 41.5244 67.7611 42.3164 62.5237 43.1893C60.9718 43.448 59.614 44.0784 58.7573 45.6464C57.9328 47.1497 56.6235 48.1681 54.7645 48.2813C53.2612 48.3783 51.774 48.5884 50.2869 48.8632C52.3236 48.8632 54.3766 48.8632 56.4134 48.8632C63.6552 48.8632 70.9132 48.8632 78.1551 48.8309C78.8664 48.8309 79.0119 49.0734 78.9957 49.72C78.9634 51.6274 78.9472 53.551 78.9957 55.4585C79.0119 56.2182 78.7532 56.4122 78.0258 56.4122C70.105 56.5739 62.1842 56.7193 54.2634 56.9457C46.0032 57.172 37.7267 57.4468 29.4665 57.7377C27.9147 57.7862 26.3628 58.0287 24.811 58.1903C24.5524 58.2227 24.2937 58.3197 24.0513 58.3843C24.0351 58.4652 24.0351 58.5298 24.0189 58.6106C24.5847 58.7561 25.1505 58.9824 25.7324 59.0309C28.8199 59.3219 31.9074 59.5967 34.9787 59.8553C43.4329 60.5343 51.9033 61.197 60.1636 63.2661C65.0292 64.4785 69.7979 65.9818 74.2594 68.3742C74.9706 68.746 75.6334 69.2148 76.2477 69.7482C77.1206 70.508 77.3307 71.591 76.6356 72.4963C75.9567 73.4015 75.1161 74.2582 74.1786 74.8887C71.2365 76.8608 67.9227 78.0408 64.5605 79.043C57.1569 81.2415 49.6888 83.2298 42.2852 85.4282C38.6805 86.4951 35.1565 87.8529 31.5841 89.0491C31.3093 89.1461 30.889 89.0814 30.6465 88.9198C22.7581 83.6985 18.0864 76.4567 17.2297 66.984C16.9225 63.5409 17.0842 60.0331 17.0519 56.5577C17.0357 54.3269 17.068 52.08 17.0357 49.8493C17.0195 49.138 17.1812 48.8632 17.9733 48.8794C22.0145 48.944 26.0557 48.944 30.0969 48.9602C30.1293 48.9117 30.2101 48.8955 30.3394 48.8794Z" fill="white"/> -</g> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M104.544 47.056V61H101.376V47.056H96.624V44.248H109.296V47.056H104.544ZM119.226 61C118.554 61 118.018 60.808 117.618 60.424C117.234 60.024 116.994 59.496 116.898 58.84H116.754C116.546 59.656 116.122 60.272 115.482 60.688C114.842 61.088 114.05 61.288 113.106 61.288C111.826 61.288 110.842 60.952 110.154 60.28C109.466 59.608 109.122 58.712 109.122 57.592C109.122 56.296 109.586 55.336 110.514 54.712C111.442 54.072 112.762 53.752 114.474 53.752H116.61V52.84C116.61 52.136 116.426 51.592 116.058 51.208C115.69 50.824 115.098 50.632 114.282 50.632C113.562 50.632 112.978 50.792 112.53 51.112C112.098 51.416 111.73 51.784 111.426 52.216L109.602 50.584C110.066 49.864 110.682 49.288 111.45 48.856C112.218 48.408 113.234 48.184 114.498 48.184C116.194 48.184 117.482 48.568 118.362 49.336C119.242 50.104 119.682 51.208 119.682 52.648V58.552H120.93V61H119.226ZM114.138 59.056C114.826 59.056 115.41 58.904 115.89 58.6C116.37 58.296 116.61 57.848 116.61 57.256V55.6H114.642C113.042 55.6 112.242 56.112 112.242 57.136V57.544C112.242 58.056 112.402 58.44 112.722 58.696C113.058 58.936 113.53 59.056 114.138 59.056ZM114.882 47.056L113.034 46.168L115.314 41.68L117.906 42.952L114.882 47.056ZM126.489 61C125.433 61 124.657 60.736 124.161 60.208C123.665 59.68 123.417 58.936 123.417 57.976V43.24H126.489V58.552H128.145V61H126.489ZM130.471 43.24H133.543V53.944H133.663L135.319 51.688L138.127 48.472H141.607L137.287 53.32L142.063 61H138.415L135.199 55.384L133.543 57.184V61H130.471V43.24ZM143.948 61V48.472H147.02V50.56H147.14C147.396 49.888 147.796 49.328 148.34 48.88C148.9 48.416 149.668 48.184 150.644 48.184C151.94 48.184 152.932 48.608 153.62 49.456C154.308 50.304 154.652 51.512 154.652 53.08V61H151.58V53.392C151.58 52.496 151.42 51.824 151.1 51.376C150.78 50.928 150.252 50.704 149.516 50.704C149.196 50.704 148.884 50.752 148.58 50.848C148.292 50.928 148.028 51.056 147.788 51.232C147.564 51.392 147.38 51.6 147.236 51.856C147.092 52.096 147.02 52.384 147.02 52.72V61H143.948ZM167.273 61C166.601 61 166.065 60.808 165.665 60.424C165.281 60.024 165.041 59.496 164.945 58.84H164.801C164.593 59.656 164.169 60.272 163.529 60.688C162.889 61.088 162.097 61.288 161.153 61.288C159.873 61.288 158.889 60.952 158.201 60.28C157.513 59.608 157.169 58.712 157.169 57.592C157.169 56.296 157.633 55.336 158.561 54.712C159.489 54.072 160.809 53.752 162.521 53.752H164.657V52.84C164.657 52.136 164.473 51.592 164.105 51.208C163.737 50.824 163.145 50.632 162.329 50.632C161.609 50.632 161.025 50.792 160.577 51.112C160.145 51.416 159.777 51.784 159.473 52.216L157.649 50.584C158.113 49.864 158.729 49.288 159.497 48.856C160.265 48.408 161.281 48.184 162.545 48.184C164.241 48.184 165.529 48.568 166.409 49.336C167.289 50.104 167.729 51.208 167.729 52.648V58.552H168.977V61H167.273ZM162.185 59.056C162.873 59.056 163.457 58.904 163.937 58.6C164.417 58.296 164.657 57.848 164.657 57.256V55.6H162.689C161.089 55.6 160.289 56.112 160.289 57.136V57.544C160.289 58.056 160.449 58.44 160.769 58.696C161.105 58.936 161.577 59.056 162.185 59.056ZM172.088 50.896H170.24V48.472H172.088V46.672C172.088 45.568 172.376 44.72 172.952 44.128C173.544 43.536 174.408 43.24 175.544 43.24H177.728V45.688H175.16V48.472H177.728V50.896H175.16V61H172.088V50.896ZM179.854 48.472H182.926V62.512C182.926 63.568 182.662 64.376 182.134 64.936C181.606 65.512 180.766 65.8 179.614 65.8H177.934V63.352H179.854V48.472ZM181.39 46.648C180.75 46.648 180.286 46.504 179.998 46.216C179.726 45.928 179.59 45.56 179.59 45.112V44.632C179.59 44.184 179.726 43.816 179.998 43.528C180.286 43.24 180.75 43.096 181.39 43.096C182.014 43.096 182.47 43.24 182.758 43.528C183.046 43.816 183.19 44.184 183.19 44.632V45.112C183.19 45.56 183.046 45.928 182.758 46.216C182.47 46.504 182.014 46.648 181.39 46.648ZM195.703 61C195.031 61 194.495 60.808 194.095 60.424C193.711 60.024 193.471 59.496 193.375 58.84H193.231C193.023 59.656 192.599 60.272 191.959 60.688C191.319 61.088 190.527 61.288 189.583 61.288C188.303 61.288 187.319 60.952 186.631 60.28C185.943 59.608 185.599 58.712 185.599 57.592C185.599 56.296 186.063 55.336 186.991 54.712C187.919 54.072 189.239 53.752 190.951 53.752H193.087V52.84C193.087 52.136 192.903 51.592 192.535 51.208C192.167 50.824 191.575 50.632 190.759 50.632C190.039 50.632 189.455 50.792 189.007 51.112C188.575 51.416 188.207 51.784 187.903 52.216L186.079 50.584C186.543 49.864 187.159 49.288 187.927 48.856C188.695 48.408 189.711 48.184 190.975 48.184C192.671 48.184 193.959 48.568 194.839 49.336C195.719 50.104 196.159 51.208 196.159 52.648V58.552H197.407V61H195.703ZM190.615 59.056C191.303 59.056 191.887 58.904 192.367 58.6C192.847 58.296 193.087 57.848 193.087 57.256V55.6H191.119C189.519 55.6 188.719 56.112 188.719 57.136V57.544C188.719 58.056 188.879 58.44 189.199 58.696C189.535 58.936 190.007 59.056 190.615 59.056ZM199.893 61V48.472H202.965V51.064H203.085C203.165 50.728 203.285 50.408 203.445 50.104C203.621 49.784 203.845 49.504 204.117 49.264C204.389 49.024 204.709 48.832 205.077 48.688C205.461 48.544 205.901 48.472 206.397 48.472H207.069V51.376H206.109C205.069 51.376 204.285 51.528 203.757 51.832C203.229 52.136 202.965 52.632 202.965 53.32V61H199.893ZM218.486 44.224L216.71 45.376C217.814 46.528 218.702 47.856 219.374 49.36C220.046 50.864 220.382 52.536 220.382 54.376C220.382 55.56 220.238 56.592 219.95 57.472C219.662 58.336 219.254 59.056 218.726 59.632C218.214 60.192 217.598 60.608 216.878 60.88C216.158 61.152 215.358 61.288 214.478 61.288C213.534 61.288 212.686 61.144 211.934 60.856C211.198 60.552 210.566 60.128 210.038 59.584C209.526 59.04 209.134 58.376 208.862 57.592C208.59 56.808 208.454 55.936 208.454 54.976C208.454 54.08 208.566 53.264 208.79 52.528C209.03 51.792 209.366 51.16 209.798 50.632C210.23 50.104 210.75 49.696 211.358 49.408C211.982 49.12 212.67 48.976 213.422 48.976C214.286 48.976 215.006 49.192 215.582 49.624C216.174 50.04 216.638 50.608 216.974 51.328L217.118 51.256C216.926 50.44 216.582 49.664 216.086 48.928C215.606 48.192 215.022 47.488 214.334 46.816L212.27 48.112L211.166 46.792L213.038 45.664C212.478 45.2 211.886 44.768 211.262 44.368C210.654 43.968 210.038 43.592 209.414 43.24H214.094C214.318 43.368 214.534 43.52 214.742 43.696C214.95 43.856 215.166 44.024 215.39 44.2L217.406 42.928L218.486 44.224ZM214.43 58.936C215.278 58.936 215.95 58.664 216.446 58.12C216.942 57.576 217.19 56.816 217.19 55.84V54.448C217.19 53.472 216.942 52.712 216.446 52.168C215.95 51.624 215.278 51.352 214.43 51.352C213.566 51.352 212.886 51.624 212.39 52.168C211.894 52.712 211.646 53.472 211.646 54.448V55.84C211.646 56.816 211.894 57.576 212.39 58.12C212.886 58.664 213.566 58.936 214.43 58.936ZM232.547 61C231.875 61 231.339 60.808 230.939 60.424C230.555 60.024 230.315 59.496 230.219 58.84H230.075C229.867 59.656 229.443 60.272 228.803 60.688C228.163 61.088 227.371 61.288 226.427 61.288C225.147 61.288 224.163 60.952 223.475 60.28C222.787 59.608 222.443 58.712 222.443 57.592C222.443 56.296 222.907 55.336 223.835 54.712C224.763 54.072 226.083 53.752 227.795 53.752H229.931V52.84C229.931 52.136 229.747 51.592 229.379 51.208C229.011 50.824 228.419 50.632 227.603 50.632C226.883 50.632 226.299 50.792 225.851 51.112C225.419 51.416 225.051 51.784 224.747 52.216L222.923 50.584C223.387 49.864 224.003 49.288 224.771 48.856C225.539 48.408 226.555 48.184 227.819 48.184C229.515 48.184 230.803 48.568 231.683 49.336C232.563 50.104 233.003 51.208 233.003 52.648V58.552H234.251V61H232.547ZM227.459 59.056C228.147 59.056 228.731 58.904 229.211 58.6C229.691 58.296 229.931 57.848 229.931 57.256V55.6H227.963C226.363 55.6 225.563 56.112 225.563 57.136V57.544C225.563 58.056 225.723 58.44 226.043 58.696C226.379 58.936 226.851 59.056 227.459 59.056ZM236.737 61V48.472H239.809V51.064H239.929C240.009 50.728 240.129 50.408 240.289 50.104C240.465 49.784 240.689 49.504 240.961 49.264C241.233 49.024 241.553 48.832 241.921 48.688C242.305 48.544 242.745 48.472 243.241 48.472H243.913V51.376H242.953C241.913 51.376 241.129 51.528 240.601 51.832C240.073 52.136 239.809 52.632 239.809 53.32V61H236.737ZM245.634 55.216V52.168H252.498V55.216H245.634ZM97.776 71.24H100.848V78.56H100.968C101.224 77.888 101.624 77.328 102.168 76.88C102.728 76.416 103.496 76.184 104.472 76.184C105.768 76.184 106.76 76.608 107.448 77.456C108.136 78.304 108.48 79.512 108.48 81.08V89H105.408V81.392C105.408 80.496 105.248 79.824 104.928 79.376C104.608 78.928 104.08 78.704 103.344 78.704C103.024 78.704 102.712 78.752 102.408 78.848C102.12 78.928 101.856 79.056 101.616 79.232C101.392 79.392 101.208 79.6 101.064 79.856C100.92 80.096 100.848 80.384 100.848 80.72V89H97.776V71.24ZM111.885 89V76.472H114.957V79.064H115.077C115.157 78.728 115.277 78.408 115.437 78.104C115.613 77.784 115.837 77.504 116.109 77.264C116.381 77.024 116.701 76.832 117.069 76.688C117.453 76.544 117.893 76.472 118.389 76.472H119.061V79.376H118.101C117.061 79.376 116.277 79.528 115.749 79.832C115.221 80.136 114.957 80.632 114.957 81.32V89H111.885ZM126.254 89.288C125.326 89.288 124.494 89.136 123.758 88.832C123.038 88.512 122.422 88.072 121.91 87.512C121.414 86.936 121.03 86.248 120.758 85.448C120.486 84.632 120.35 83.72 120.35 82.712C120.35 81.72 120.478 80.824 120.734 80.024C121.006 79.224 121.39 78.544 121.886 77.984C122.382 77.408 122.99 76.968 123.71 76.664C124.43 76.344 125.246 76.184 126.158 76.184C127.134 76.184 127.982 76.352 128.702 76.688C129.422 77.024 130.014 77.48 130.478 78.056C130.942 78.632 131.286 79.304 131.51 80.072C131.75 80.824 131.87 81.632 131.87 82.496V83.504H123.542V83.816C123.542 84.728 123.798 85.464 124.31 86.024C124.822 86.568 125.582 86.84 126.59 86.84C127.358 86.84 127.982 86.68 128.462 86.36C128.958 86.04 129.398 85.632 129.782 85.136L131.438 86.984C130.926 87.704 130.222 88.272 129.326 88.688C128.446 89.088 127.422 89.288 126.254 89.288ZM126.206 78.488C125.39 78.488 124.742 78.76 124.262 79.304C123.782 79.848 123.542 80.552 123.542 81.416V81.608H128.678V81.392C128.678 80.528 128.462 79.832 128.03 79.304C127.614 78.76 127.006 78.488 126.206 78.488ZM134.573 76.472H137.645V78.536H137.741C137.965 77.816 138.389 77.248 139.013 76.832C139.637 76.4 140.365 76.184 141.197 76.184C142.797 76.184 144.013 76.752 144.845 77.888C145.693 79.008 146.117 80.616 146.117 82.712C146.117 84.824 145.693 86.448 144.845 87.584C144.013 88.72 142.797 89.288 141.197 89.288C140.365 89.288 139.637 89.072 139.013 88.64C138.405 88.208 137.981 87.632 137.741 86.912H137.645V93.8H134.573V76.472ZM140.213 86.744C141.013 86.744 141.661 86.48 142.157 85.952C142.653 85.424 142.901 84.712 142.901 83.816V81.656C142.901 80.76 142.653 80.048 142.157 79.52C141.661 78.976 141.013 78.704 140.213 78.704C139.477 78.704 138.861 78.888 138.365 79.256C137.885 79.624 137.645 80.112 137.645 80.72V84.704C137.645 85.36 137.885 85.864 138.365 86.216C138.861 86.568 139.477 86.744 140.213 86.744ZM148.964 76.472H152.036V78.536H152.132C152.356 77.816 152.78 77.248 153.404 76.832C154.028 76.4 154.756 76.184 155.588 76.184C157.188 76.184 158.404 76.752 159.236 77.888C160.084 79.008 160.508 80.616 160.508 82.712C160.508 84.824 160.084 86.448 159.236 87.584C158.404 88.72 157.188 89.288 155.588 89.288C154.756 89.288 154.028 89.072 153.404 88.64C152.796 88.208 152.372 87.632 152.132 86.912H152.036V93.8H148.964V76.472ZM154.604 86.744C155.404 86.744 156.052 86.48 156.548 85.952C157.044 85.424 157.292 84.712 157.292 83.816V81.656C157.292 80.76 157.044 80.048 156.548 79.52C156.052 78.976 155.404 78.704 154.604 78.704C153.868 78.704 153.252 78.888 152.756 79.256C152.276 79.624 152.036 80.112 152.036 80.72V84.704C152.036 85.36 152.276 85.864 152.756 86.216C153.252 86.568 153.868 86.744 154.604 86.744ZM170.842 86.912H170.722C170.61 87.232 170.458 87.536 170.266 87.824C170.09 88.096 169.858 88.344 169.57 88.568C169.298 88.792 168.962 88.968 168.562 89.096C168.178 89.224 167.73 89.288 167.218 89.288C165.922 89.288 164.93 88.864 164.242 88.016C163.554 87.168 163.21 85.96 163.21 84.392V76.472H166.282V84.08C166.282 84.944 166.45 85.608 166.786 86.072C167.122 86.52 167.658 86.744 168.394 86.744C168.698 86.744 168.994 86.704 169.282 86.624C169.586 86.544 169.85 86.424 170.074 86.264C170.298 86.088 170.482 85.88 170.626 85.64C170.77 85.384 170.842 85.088 170.842 84.752V76.472H173.914V89H170.842V86.912ZM177.464 89V76.472H180.536V79.064H180.656C180.736 78.728 180.856 78.408 181.016 78.104C181.192 77.784 181.416 77.504 181.688 77.264C181.96 77.024 182.28 76.832 182.648 76.688C183.032 76.544 183.472 76.472 183.968 76.472H184.64V79.376H183.68C182.64 79.376 181.856 79.528 181.328 79.832C180.8 80.136 180.536 80.632 180.536 81.32V89H177.464Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57901"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/thingeyjarsveit.svg b/libs/application/templates/financial-aid/src/svg/thingeyjarsveit.svg deleted file mode 100644 index 376d0daa9ef2..000000000000 --- a/libs/application/templates/financial-aid/src/svg/thingeyjarsveit.svg +++ /dev/null @@ -1,20 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57877)"> -<path d="M18 34.8764V16H77.2135" stroke="#0090D9" stroke-width="0.034058" stroke-linejoin="round"/> -<path d="M25.5279 42.5169L24.9661 36.5618L24.4043 35.8877C25.0785 35.1011 25.865 34.5393 26.8762 34.2023L27.2133 34.7641V41.1686C26.5391 41.5056 25.9773 41.9551 25.5279 42.5169Z" fill="#00AEEF"/> -<path d="M31.9331 32.7416L33.0567 39.0337C33.7309 39.0337 34.405 39.0337 35.0792 39.1461V32.5169L34.405 31.8427C33.2814 31.7304 32.1578 31.7304 30.9219 31.9551L31.9331 32.7416Z" fill="#00AEEF"/> -<path d="M38.1115 40.0449L37.8868 32.6292C37.8868 32.5169 37.7744 32.2921 37.7744 32.2921L21.707 16H77.2127V63.6405L63.0553 57.1236C60.5834 56 58.2239 54.6517 56.0891 53.0787L38.561 40.7191C38.2239 40.4944 38.1115 40.2697 38.1115 40.0449Z" fill="#00AEEF"/> -<path d="M18 66.3371C18 74.5393 21.3708 82.4045 27.4382 88.0225" stroke="black" stroke-width="0.034012" stroke-linecap="round" stroke-linejoin="round"/> -<path d="M41.7079 52.7416C46.6517 54.8764 50.9213 58.0225 54.4045 62.0674L72.2697 82.6292C63.2809 96.3371 44.9663 100.157 31.2584 91.1686C23.0562 85.6629 18 76.3371 18 66.3371V33.9775L21.9326 37.3483C22.4944 37.7978 22.8315 38.4719 22.9438 39.1461L23.7303 44.2023C23.8427 44.6517 24.1798 45.1011 24.6292 45.3259L41.7079 52.7416Z" fill="#00A651"/> -<path d="M60.8087 58.9213L73.2807 65.8876C73.5054 66 73.6177 66.2247 73.6177 66.4494C73.6177 66.6742 73.5054 66.8989 73.2807 67.0112L69.5728 68.6966C68.7863 69.1461 67.775 69.0337 67.1009 68.4719L52.6065 57.573C52.4941 57.4607 52.4941 57.3483 52.4941 57.2359C52.4941 57.1236 52.6065 57.0112 52.7189 57.0112C55.5278 56.7865 58.3368 57.4607 60.8087 58.9213Z" fill="#00A651"/> -<path d="M56.0899 53.0787L38.5618 40.7191C38.3371 40.6067 38.2247 40.2697 38.2247 40.0449L38 32.6292C38 32.5169 37.8876 32.2921 37.8876 32.2921L21.7079 16H18V33.9775L21.9326 37.3483C22.4944 37.7978 22.8315 38.4719 22.9438 39.1461L23.7303 44.2022C23.8427 44.6517 24.1798 45.1011 24.6292 45.3258L41.7079 52.7416C46.6517 54.8764 50.9214 58.0225 54.4045 62.0674L72.2697 82.6292C75.4157 77.7977 77.1011 72.1798 77.1011 66.4494V63.7528L62.9438 57.236C60.5843 56 58.2247 54.6517 56.0899 53.0787ZM27.2135 41.0562C26.6517 41.5056 26.0899 41.9551 25.5281 42.5169L24.9663 36.5618L24.4045 35.8876C25.0787 35.1011 25.8652 34.5393 26.8764 34.2022L27.2135 34.764V41.0562ZM35.0787 39.2584C34.4045 39.1461 33.7303 39.0337 33.0562 39.1461L31.9326 32.8539L31.0337 32.1798C32.1573 31.9551 33.2809 31.9551 34.5169 32.0674L35.191 32.7416L35.0787 39.2584ZM73.5056 66.3371C73.5056 66.5618 73.3933 66.7865 73.1685 66.8989L69.4607 68.5843C68.6742 69.0337 67.6629 68.9213 66.9888 68.3595L52.4944 57.4607C52.382 57.3483 52.382 57.236 52.382 57.1236C52.382 57.0112 52.4944 56.8989 52.6067 56.8989C55.4157 56.7865 58.2247 57.4607 60.6966 58.9213L73.1685 65.8876C73.3933 65.8876 73.5056 66.1124 73.5056 66.3371Z" fill="white"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M97.968 75V58.248H101.136V61.296H105.504C106.272 61.296 106.96 61.424 107.568 61.68C108.192 61.936 108.72 62.296 109.152 62.76C109.584 63.208 109.912 63.752 110.136 64.392C110.36 65.016 110.472 65.712 110.472 66.48C110.472 67.248 110.36 67.952 110.136 68.592C109.912 69.232 109.584 69.784 109.152 70.248C108.72 70.696 108.192 71.048 107.568 71.304C106.96 71.56 106.272 71.688 105.504 71.688H101.136V75H97.968ZM101.136 68.904H105.216C105.824 68.904 106.304 68.744 106.656 68.424C107.008 68.104 107.184 67.64 107.184 67.032V65.928C107.184 65.32 107.008 64.856 106.656 64.536C106.304 64.216 105.824 64.056 105.216 64.056H101.136V68.904ZM114.687 60.648C114.047 60.648 113.583 60.504 113.295 60.216C113.023 59.928 112.887 59.56 112.887 59.112V58.632C112.887 58.184 113.023 57.816 113.295 57.528C113.583 57.24 114.047 57.096 114.687 57.096C115.311 57.096 115.767 57.24 116.055 57.528C116.343 57.816 116.487 58.184 116.487 58.632V59.112C116.487 59.56 116.343 59.928 116.055 60.216C115.767 60.504 115.311 60.648 114.687 60.648ZM113.151 62.472H116.223V75H113.151V62.472ZM119.784 75V62.472H122.856V64.56H122.976C123.232 63.888 123.632 63.328 124.176 62.88C124.736 62.416 125.504 62.184 126.48 62.184C127.776 62.184 128.768 62.608 129.456 63.456C130.144 64.304 130.488 65.512 130.488 67.08V75H127.416V67.392C127.416 66.496 127.256 65.824 126.936 65.376C126.616 64.928 126.088 64.704 125.352 64.704C125.032 64.704 124.72 64.752 124.416 64.848C124.128 64.928 123.864 65.056 123.624 65.232C123.4 65.392 123.216 65.6 123.072 65.856C122.928 66.096 122.856 66.384 122.856 66.72V75H119.784ZM145.197 76.056C145.197 76.712 145.077 77.288 144.837 77.784C144.613 78.296 144.237 78.72 143.709 79.056C143.181 79.392 142.501 79.648 141.669 79.824C140.837 80 139.821 80.088 138.621 80.088C137.565 80.088 136.669 80.016 135.933 79.872C135.197 79.744 134.589 79.552 134.109 79.296C133.645 79.056 133.309 78.752 133.101 78.384C132.893 78.016 132.789 77.6 132.789 77.136C132.789 76.432 132.981 75.88 133.365 75.48C133.765 75.096 134.317 74.848 135.021 74.736V74.472C134.509 74.344 134.109 74.096 133.821 73.728C133.549 73.344 133.413 72.896 133.413 72.384C133.413 72.064 133.477 71.784 133.605 71.544C133.733 71.288 133.901 71.072 134.109 70.896C134.333 70.72 134.581 70.576 134.853 70.464C135.125 70.336 135.413 70.24 135.717 70.176V70.08C134.949 69.728 134.373 69.24 133.989 68.616C133.621 67.992 133.437 67.264 133.437 66.432C133.437 65.152 133.877 64.128 134.757 63.36C135.637 62.576 136.925 62.184 138.621 62.184C139.005 62.184 139.381 62.208 139.749 62.256C140.133 62.304 140.485 62.384 140.805 62.496V62.088C140.805 60.872 141.397 60.264 142.581 60.264H144.525V62.616H141.861V62.952C142.517 63.32 143.005 63.8 143.325 64.392C143.645 64.984 143.805 65.664 143.805 66.432C143.805 67.696 143.365 68.712 142.485 69.48C141.621 70.248 140.333 70.632 138.621 70.632C137.885 70.632 137.245 70.56 136.701 70.416C136.461 70.528 136.253 70.68 136.077 70.872C135.901 71.048 135.813 71.272 135.813 71.544C135.813 72.168 136.357 72.48 137.445 72.48H140.805C142.341 72.48 143.453 72.8 144.141 73.44C144.845 74.064 145.197 74.936 145.197 76.056ZM142.317 76.416C142.317 76.016 142.157 75.704 141.837 75.48C141.517 75.256 140.965 75.144 140.181 75.144H135.909C135.477 75.464 135.261 75.896 135.261 76.44C135.261 76.92 135.461 77.296 135.861 77.568C136.261 77.84 136.941 77.976 137.901 77.976H139.437C140.445 77.976 141.173 77.848 141.621 77.592C142.085 77.336 142.317 76.944 142.317 76.416ZM138.621 68.544C140.125 68.544 140.877 67.904 140.877 66.624V66.216C140.877 64.936 140.125 64.296 138.621 64.296C137.117 64.296 136.365 64.936 136.365 66.216V66.624C136.365 67.904 137.117 68.544 138.621 68.544ZM151.895 75.288C150.967 75.288 150.135 75.136 149.399 74.832C148.679 74.512 148.063 74.072 147.551 73.512C147.055 72.936 146.671 72.248 146.399 71.448C146.127 70.632 145.991 69.72 145.991 68.712C145.991 67.72 146.119 66.824 146.375 66.024C146.647 65.224 147.031 64.544 147.527 63.984C148.023 63.408 148.631 62.968 149.351 62.664C150.071 62.344 150.887 62.184 151.799 62.184C152.775 62.184 153.623 62.352 154.343 62.688C155.063 63.024 155.655 63.48 156.119 64.056C156.583 64.632 156.927 65.304 157.151 66.072C157.391 66.824 157.511 67.632 157.511 68.496V69.504H149.183V69.816C149.183 70.728 149.439 71.464 149.951 72.024C150.463 72.568 151.223 72.84 152.231 72.84C152.999 72.84 153.623 72.68 154.103 72.36C154.599 72.04 155.039 71.632 155.423 71.136L157.079 72.984C156.567 73.704 155.863 74.272 154.967 74.688C154.087 75.088 153.063 75.288 151.895 75.288ZM151.847 64.488C151.031 64.488 150.383 64.76 149.903 65.304C149.423 65.848 149.183 66.552 149.183 67.416V67.608H154.319V67.392C154.319 66.528 154.103 65.832 153.671 65.304C153.255 64.76 152.647 64.488 151.847 64.488ZM167.753 62.472H170.633L165.593 77.232C165.433 77.68 165.249 78.064 165.041 78.384C164.849 78.72 164.617 78.992 164.345 79.2C164.073 79.408 163.745 79.56 163.361 79.656C162.977 79.752 162.529 79.8 162.017 79.8H160.169V77.352H162.425L163.001 75.6L158.513 62.472H161.561L163.745 69.096L164.561 72.264H164.705L165.569 69.096L167.753 62.472ZM172.659 62.472H175.731V76.512C175.731 77.568 175.467 78.376 174.939 78.936C174.411 79.512 173.571 79.8 172.419 79.8H170.739V77.352H172.659V62.472ZM174.195 60.648C173.555 60.648 173.091 60.504 172.803 60.216C172.531 59.928 172.395 59.56 172.395 59.112V58.632C172.395 58.184 172.531 57.816 172.803 57.528C173.091 57.24 173.555 57.096 174.195 57.096C174.819 57.096 175.275 57.24 175.563 57.528C175.851 57.816 175.995 58.184 175.995 58.632V59.112C175.995 59.56 175.851 59.928 175.563 60.216C175.275 60.504 174.819 60.648 174.195 60.648ZM188.508 75C187.836 75 187.3 74.808 186.9 74.424C186.516 74.024 186.276 73.496 186.18 72.84H186.036C185.828 73.656 185.404 74.272 184.764 74.688C184.124 75.088 183.332 75.288 182.388 75.288C181.108 75.288 180.124 74.952 179.436 74.28C178.748 73.608 178.404 72.712 178.404 71.592C178.404 70.296 178.868 69.336 179.796 68.712C180.724 68.072 182.044 67.752 183.756 67.752H185.892V66.84C185.892 66.136 185.708 65.592 185.34 65.208C184.972 64.824 184.38 64.632 183.564 64.632C182.844 64.632 182.26 64.792 181.812 65.112C181.38 65.416 181.012 65.784 180.708 66.216L178.884 64.584C179.348 63.864 179.964 63.288 180.732 62.856C181.5 62.408 182.516 62.184 183.78 62.184C185.476 62.184 186.764 62.568 187.644 63.336C188.524 64.104 188.964 65.208 188.964 66.648V72.552H190.212V75H188.508ZM183.42 73.056C184.108 73.056 184.692 72.904 185.172 72.6C185.652 72.296 185.892 71.848 185.892 71.256V69.6H183.924C182.324 69.6 181.524 70.112 181.524 71.136V71.544C181.524 72.056 181.684 72.44 182.004 72.696C182.34 72.936 182.812 73.056 183.42 73.056ZM192.698 75V62.472H195.77V65.064H195.89C195.97 64.728 196.09 64.408 196.25 64.104C196.426 63.784 196.65 63.504 196.922 63.264C197.194 63.024 197.514 62.832 197.882 62.688C198.266 62.544 198.706 62.472 199.202 62.472H199.874V65.376H198.914C197.874 65.376 197.09 65.528 196.562 65.832C196.034 66.136 195.77 66.632 195.77 67.32V75H192.698ZM206.224 75.288C205.024 75.288 204.016 75.088 203.2 74.688C202.384 74.272 201.664 73.704 201.04 72.984L202.912 71.16C203.376 71.688 203.88 72.104 204.424 72.408C204.984 72.712 205.624 72.864 206.344 72.864C207.08 72.864 207.608 72.736 207.928 72.48C208.264 72.224 208.432 71.872 208.432 71.424C208.432 71.056 208.312 70.768 208.072 70.56C207.848 70.336 207.456 70.184 206.896 70.104L205.648 69.936C204.288 69.76 203.248 69.376 202.528 68.784C201.824 68.176 201.472 67.296 201.472 66.144C201.472 65.536 201.584 64.992 201.808 64.512C202.032 64.016 202.352 63.6 202.768 63.264C203.184 62.912 203.68 62.648 204.256 62.472C204.848 62.28 205.504 62.184 206.224 62.184C206.832 62.184 207.368 62.232 207.832 62.328C208.312 62.408 208.744 62.536 209.128 62.712C209.512 62.872 209.864 63.08 210.184 63.336C210.504 63.576 210.816 63.848 211.12 64.152L209.32 65.952C208.952 65.568 208.512 65.248 208 64.992C207.488 64.736 206.928 64.608 206.32 64.608C205.648 64.608 205.16 64.728 204.856 64.968C204.568 65.208 204.424 65.52 204.424 65.904C204.424 66.32 204.544 66.64 204.784 66.864C205.04 67.072 205.464 67.224 206.056 67.32L207.328 67.488C210.032 67.872 211.384 69.104 211.384 71.184C211.384 71.792 211.256 72.352 211 72.864C210.76 73.36 210.416 73.792 209.968 74.16C209.52 74.512 208.976 74.792 208.336 75C207.712 75.192 207.008 75.288 206.224 75.288ZM216.503 75L212.327 62.472H215.351L217.103 67.872L218.327 72.336H218.495L219.719 67.872L221.423 62.472H224.351L220.151 75H216.503ZM231.278 75.288C230.35 75.288 229.518 75.136 228.782 74.832C228.062 74.512 227.446 74.072 226.934 73.512C226.438 72.936 226.054 72.248 225.782 71.448C225.51 70.632 225.374 69.72 225.374 68.712C225.374 67.72 225.502 66.824 225.758 66.024C226.03 65.224 226.414 64.544 226.91 63.984C227.406 63.408 228.014 62.968 228.734 62.664C229.454 62.344 230.27 62.184 231.182 62.184C232.158 62.184 233.006 62.352 233.726 62.688C234.446 63.024 235.038 63.48 235.502 64.056C235.966 64.632 236.31 65.304 236.534 66.072C236.774 66.824 236.894 67.632 236.894 68.496V69.504H228.566V69.816C228.566 70.728 228.822 71.464 229.334 72.024C229.846 72.568 230.606 72.84 231.614 72.84C232.382 72.84 233.006 72.68 233.486 72.36C233.982 72.04 234.422 71.632 234.806 71.136L236.462 72.984C235.95 73.704 235.246 74.272 234.35 74.688C233.47 75.088 232.446 75.288 231.278 75.288ZM231.23 64.488C230.414 64.488 229.766 64.76 229.286 65.304C228.806 65.848 228.566 66.552 228.566 67.416V67.608H233.702V67.392C233.702 66.528 233.486 65.832 233.054 65.304C232.638 64.76 232.03 64.488 231.23 64.488ZM241.132 60.648C240.492 60.648 240.028 60.504 239.74 60.216C239.468 59.928 239.332 59.56 239.332 59.112V58.632C239.332 58.184 239.468 57.816 239.74 57.528C240.028 57.24 240.492 57.096 241.132 57.096C241.756 57.096 242.212 57.24 242.5 57.528C242.788 57.816 242.932 58.184 242.932 58.632V59.112C242.932 59.56 242.788 59.928 242.5 60.216C242.212 60.504 241.756 60.648 241.132 60.648ZM239.596 62.472H242.668V75H239.596V62.472ZM250.141 75C249.085 75 248.277 74.728 247.717 74.184C247.173 73.624 246.901 72.832 246.901 71.808V64.92H245.053V62.472H246.013C246.477 62.472 246.789 62.368 246.949 62.16C247.125 61.936 247.213 61.608 247.213 61.176V59.04H249.973V62.472H252.541V64.92H249.973V72.552H252.349V75H250.141Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57877"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/tjorneshreppur.svg b/libs/application/templates/financial-aid/src/svg/tjorneshreppur.svg deleted file mode 100644 index 65289a87208f..000000000000 --- a/libs/application/templates/financial-aid/src/svg/tjorneshreppur.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M47.606 96C30.4519 89.1714 16.7516 75.392 17.0034 58.353V16.6189C17.0034 16.4547 17.0686 16.2973 17.1847 16.1813C17.3007 16.0652 17.4581 16 17.6222 16H77.5826C77.6645 15.9991 77.7457 16.0144 77.8216 16.0451C77.8976 16.0757 77.9666 16.1212 78.0248 16.1787C78.0831 16.2363 78.1293 16.3048 78.1609 16.3804C78.1924 16.4559 78.2086 16.537 78.2086 16.6189V58.353C78.4533 75.392 64.753 89.1714 47.606 96Z" fill="#848484"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M104.544 61.056V75H101.376V61.056H96.624V58.248H109.296V61.056H104.544ZM111.698 62.472H114.77V76.512C114.77 77.568 114.506 78.376 113.978 78.936C113.45 79.512 112.61 79.8 111.458 79.8H109.778V77.352H111.698V62.472ZM113.234 60.648C112.594 60.648 112.13 60.504 111.842 60.216C111.57 59.928 111.434 59.56 111.434 59.112V58.632C111.434 58.184 111.57 57.816 111.842 57.528C112.13 57.24 112.594 57.096 113.234 57.096C113.858 57.096 114.314 57.24 114.602 57.528C114.89 57.816 115.034 58.184 115.034 58.632V59.112C115.034 59.56 114.89 59.928 114.602 60.216C114.314 60.504 113.858 60.648 113.234 60.648ZM123.299 75.288C122.403 75.288 121.595 75.136 120.875 74.832C120.171 74.528 119.563 74.088 119.051 73.512C118.555 72.936 118.171 72.248 117.899 71.448C117.627 70.632 117.491 69.72 117.491 68.712C117.491 67.704 117.627 66.8 117.899 66C118.171 65.2 118.555 64.52 119.051 63.96C119.563 63.384 120.171 62.944 120.875 62.64C121.595 62.336 122.403 62.184 123.299 62.184C124.195 62.184 125.003 62.336 125.723 62.64C126.443 62.944 127.051 63.384 127.547 63.96C128.059 64.52 128.451 65.2 128.723 66C128.995 66.8 129.131 67.704 129.131 68.712C129.131 69.72 128.995 70.632 128.723 71.448C128.451 72.248 128.059 72.936 127.547 73.512C127.051 74.088 126.443 74.528 125.723 74.832C125.003 75.136 124.195 75.288 123.299 75.288ZM123.299 72.816C124.115 72.816 124.755 72.568 125.219 72.072C125.683 71.576 125.915 70.848 125.915 69.888V67.56C125.915 66.616 125.683 65.896 125.219 65.4C124.755 64.904 124.115 64.656 123.299 64.656C122.499 64.656 121.867 64.904 121.403 65.4C120.939 65.896 120.707 66.616 120.707 67.56V69.888C120.707 70.848 120.939 71.576 121.403 72.072C121.867 72.568 122.499 72.816 123.299 72.816ZM120.803 60.48C120.179 60.48 119.739 60.352 119.483 60.096C119.227 59.824 119.099 59.488 119.099 59.088V58.584C119.099 58.184 119.227 57.856 119.483 57.6C119.739 57.328 120.179 57.192 120.803 57.192C121.427 57.192 121.867 57.328 122.123 57.6C122.379 57.856 122.507 58.184 122.507 58.584V59.088C122.507 59.488 122.379 59.824 122.123 60.096C121.867 60.352 121.427 60.48 120.803 60.48ZM125.843 60.48C125.219 60.48 124.779 60.352 124.523 60.096C124.267 59.824 124.139 59.488 124.139 59.088V58.584C124.139 58.184 124.267 57.856 124.523 57.6C124.779 57.328 125.219 57.192 125.843 57.192C126.467 57.192 126.907 57.328 127.163 57.6C127.419 57.856 127.547 58.184 127.547 58.584V59.088C127.547 59.488 127.419 59.824 127.163 60.096C126.907 60.352 126.467 60.48 125.843 60.48ZM131.854 75V62.472H134.926V65.064H135.046C135.126 64.728 135.246 64.408 135.406 64.104C135.582 63.784 135.806 63.504 136.078 63.264C136.35 63.024 136.67 62.832 137.038 62.688C137.422 62.544 137.862 62.472 138.358 62.472H139.03V65.376H138.07C137.03 65.376 136.246 65.528 135.718 65.832C135.19 66.136 134.926 66.632 134.926 67.32V75H131.854ZM141.276 75V62.472H144.348V64.56H144.468C144.724 63.888 145.124 63.328 145.668 62.88C146.228 62.416 146.996 62.184 147.972 62.184C149.268 62.184 150.26 62.608 150.948 63.456C151.636 64.304 151.98 65.512 151.98 67.08V75H148.908V67.392C148.908 66.496 148.748 65.824 148.428 65.376C148.108 64.928 147.58 64.704 146.844 64.704C146.524 64.704 146.212 64.752 145.908 64.848C145.62 64.928 145.356 65.056 145.116 65.232C144.892 65.392 144.708 65.6 144.564 65.856C144.42 66.096 144.348 66.384 144.348 66.72V75H141.276ZM160.449 75.288C159.521 75.288 158.689 75.136 157.953 74.832C157.233 74.512 156.617 74.072 156.105 73.512C155.609 72.936 155.225 72.248 154.953 71.448C154.681 70.632 154.545 69.72 154.545 68.712C154.545 67.72 154.673 66.824 154.929 66.024C155.201 65.224 155.585 64.544 156.081 63.984C156.577 63.408 157.185 62.968 157.905 62.664C158.625 62.344 159.441 62.184 160.353 62.184C161.329 62.184 162.177 62.352 162.897 62.688C163.617 63.024 164.209 63.48 164.673 64.056C165.137 64.632 165.481 65.304 165.705 66.072C165.945 66.824 166.065 67.632 166.065 68.496V69.504H157.737V69.816C157.737 70.728 157.993 71.464 158.505 72.024C159.017 72.568 159.777 72.84 160.785 72.84C161.553 72.84 162.177 72.68 162.657 72.36C163.153 72.04 163.593 71.632 163.977 71.136L165.633 72.984C165.121 73.704 164.417 74.272 163.521 74.688C162.641 75.088 161.617 75.288 160.449 75.288ZM160.401 64.488C159.585 64.488 158.937 64.76 158.457 65.304C157.977 65.848 157.737 66.552 157.737 67.416V67.608H162.873V67.392C162.873 66.528 162.657 65.832 162.225 65.304C161.809 64.76 161.201 64.488 160.401 64.488ZM172.872 75.288C171.672 75.288 170.664 75.088 169.848 74.688C169.032 74.272 168.312 73.704 167.688 72.984L169.56 71.16C170.024 71.688 170.528 72.104 171.072 72.408C171.632 72.712 172.272 72.864 172.992 72.864C173.728 72.864 174.256 72.736 174.576 72.48C174.912 72.224 175.08 71.872 175.08 71.424C175.08 71.056 174.96 70.768 174.72 70.56C174.496 70.336 174.104 70.184 173.544 70.104L172.296 69.936C170.936 69.76 169.896 69.376 169.176 68.784C168.472 68.176 168.12 67.296 168.12 66.144C168.12 65.536 168.232 64.992 168.456 64.512C168.68 64.016 169 63.6 169.416 63.264C169.832 62.912 170.328 62.648 170.904 62.472C171.496 62.28 172.152 62.184 172.872 62.184C173.48 62.184 174.016 62.232 174.48 62.328C174.96 62.408 175.392 62.536 175.776 62.712C176.16 62.872 176.512 63.08 176.832 63.336C177.152 63.576 177.464 63.848 177.768 64.152L175.968 65.952C175.6 65.568 175.16 65.248 174.648 64.992C174.136 64.736 173.576 64.608 172.968 64.608C172.296 64.608 171.808 64.728 171.504 64.968C171.216 65.208 171.072 65.52 171.072 65.904C171.072 66.32 171.192 66.64 171.432 66.864C171.688 67.072 172.112 67.224 172.704 67.32L173.976 67.488C176.68 67.872 178.032 69.104 178.032 71.184C178.032 71.792 177.904 72.352 177.648 72.864C177.408 73.36 177.064 73.792 176.616 74.16C176.168 74.512 175.624 74.792 174.984 75C174.36 75.192 173.656 75.288 172.872 75.288ZM180.745 57.24H183.817V64.56H183.937C184.193 63.888 184.593 63.328 185.137 62.88C185.697 62.416 186.465 62.184 187.441 62.184C188.737 62.184 189.729 62.608 190.417 63.456C191.105 64.304 191.449 65.512 191.449 67.08V75H188.377V67.392C188.377 66.496 188.217 65.824 187.897 65.376C187.577 64.928 187.049 64.704 186.313 64.704C185.993 64.704 185.681 64.752 185.377 64.848C185.089 64.928 184.825 65.056 184.585 65.232C184.361 65.392 184.177 65.6 184.033 65.856C183.889 66.096 183.817 66.384 183.817 66.72V75H180.745V57.24ZM194.854 75V62.472H197.926V65.064H198.046C198.126 64.728 198.246 64.408 198.406 64.104C198.582 63.784 198.806 63.504 199.078 63.264C199.35 63.024 199.67 62.832 200.038 62.688C200.422 62.544 200.862 62.472 201.358 62.472H202.03V65.376H201.07C200.03 65.376 199.246 65.528 198.718 65.832C198.19 66.136 197.926 66.632 197.926 67.32V75H194.854ZM209.223 75.288C208.295 75.288 207.463 75.136 206.727 74.832C206.007 74.512 205.391 74.072 204.879 73.512C204.383 72.936 203.999 72.248 203.727 71.448C203.455 70.632 203.319 69.72 203.319 68.712C203.319 67.72 203.447 66.824 203.703 66.024C203.975 65.224 204.359 64.544 204.855 63.984C205.351 63.408 205.959 62.968 206.679 62.664C207.399 62.344 208.215 62.184 209.127 62.184C210.103 62.184 210.951 62.352 211.671 62.688C212.391 63.024 212.983 63.48 213.447 64.056C213.911 64.632 214.255 65.304 214.479 66.072C214.719 66.824 214.839 67.632 214.839 68.496V69.504H206.511V69.816C206.511 70.728 206.767 71.464 207.279 72.024C207.791 72.568 208.551 72.84 209.559 72.84C210.327 72.84 210.951 72.68 211.431 72.36C211.927 72.04 212.367 71.632 212.751 71.136L214.407 72.984C213.895 73.704 213.191 74.272 212.295 74.688C211.415 75.088 210.391 75.288 209.223 75.288ZM209.175 64.488C208.359 64.488 207.711 64.76 207.231 65.304C206.751 65.848 206.511 66.552 206.511 67.416V67.608H211.647V67.392C211.647 66.528 211.431 65.832 210.999 65.304C210.583 64.76 209.975 64.488 209.175 64.488ZM217.542 62.472H220.614V64.536H220.71C220.934 63.816 221.358 63.248 221.982 62.832C222.606 62.4 223.334 62.184 224.166 62.184C225.766 62.184 226.982 62.752 227.814 63.888C228.662 65.008 229.086 66.616 229.086 68.712C229.086 70.824 228.662 72.448 227.814 73.584C226.982 74.72 225.766 75.288 224.166 75.288C223.334 75.288 222.606 75.072 221.982 74.64C221.374 74.208 220.95 73.632 220.71 72.912H220.614V79.8H217.542V62.472ZM223.182 72.744C223.982 72.744 224.63 72.48 225.126 71.952C225.622 71.424 225.87 70.712 225.87 69.816V67.656C225.87 66.76 225.622 66.048 225.126 65.52C224.63 64.976 223.982 64.704 223.182 64.704C222.446 64.704 221.83 64.888 221.334 65.256C220.854 65.624 220.614 66.112 220.614 66.72V70.704C220.614 71.36 220.854 71.864 221.334 72.216C221.83 72.568 222.446 72.744 223.182 72.744ZM231.932 62.472H235.004V64.536H235.1C235.324 63.816 235.748 63.248 236.372 62.832C236.996 62.4 237.724 62.184 238.556 62.184C240.156 62.184 241.372 62.752 242.204 63.888C243.052 65.008 243.476 66.616 243.476 68.712C243.476 70.824 243.052 72.448 242.204 73.584C241.372 74.72 240.156 75.288 238.556 75.288C237.724 75.288 236.996 75.072 236.372 74.64C235.764 74.208 235.34 73.632 235.1 72.912H235.004V79.8H231.932V62.472ZM237.572 72.744C238.372 72.744 239.02 72.48 239.516 71.952C240.012 71.424 240.26 70.712 240.26 69.816V67.656C240.26 66.76 240.012 66.048 239.516 65.52C239.02 64.976 238.372 64.704 237.572 64.704C236.836 64.704 236.22 64.888 235.724 65.256C235.244 65.624 235.004 66.112 235.004 66.72V70.704C235.004 71.36 235.244 71.864 235.724 72.216C236.22 72.568 236.836 72.744 237.572 72.744ZM253.811 72.912H253.691C253.579 73.232 253.427 73.536 253.235 73.824C253.059 74.096 252.827 74.344 252.539 74.568C252.267 74.792 251.931 74.968 251.531 75.096C251.147 75.224 250.699 75.288 250.187 75.288C248.891 75.288 247.899 74.864 247.211 74.016C246.523 73.168 246.179 71.96 246.179 70.392V62.472H249.251V70.08C249.251 70.944 249.419 71.608 249.755 72.072C250.091 72.52 250.627 72.744 251.363 72.744C251.667 72.744 251.963 72.704 252.251 72.624C252.555 72.544 252.819 72.424 253.043 72.264C253.267 72.088 253.451 71.88 253.595 71.64C253.739 71.384 253.811 71.088 253.811 70.752V62.472H256.883V75H253.811V72.912ZM260.432 75V62.472H263.504V65.064H263.624C263.704 64.728 263.824 64.408 263.984 64.104C264.16 63.784 264.384 63.504 264.656 63.264C264.928 63.024 265.248 62.832 265.616 62.688C266 62.544 266.44 62.472 266.936 62.472H267.608V65.376H266.648C265.608 65.376 264.824 65.528 264.296 65.832C263.768 66.136 263.504 66.632 263.504 67.32V75H260.432Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/vestmannaeyjabaer.svg b/libs/application/templates/financial-aid/src/svg/vestmannaeyjabaer.svg deleted file mode 100644 index 8baa48669f5a..000000000000 --- a/libs/application/templates/financial-aid/src/svg/vestmannaeyjabaer.svg +++ /dev/null @@ -1,16 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M17.0119 16C17.0119 16 16.6559 43.5999 19.8327 56.8072C27.4283 88.3791 47.7578 96 47.7578 96C47.7578 96 68.0751 88.3791 75.6706 56.8072C78.8475 43.5999 78.4915 16 78.4915 16H17.0108H17.0119Z" fill="#004FA2"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M74.7647 19.8912C74.8387 32.8065 74.7271 46.2471 71.4639 58.4869C68.4972 68.4741 63.7888 77.9351 55.8538 85.5936C53.4433 87.8096 50.6258 89.8364 47.8072 91.4885C45.1003 90.0244 42.5791 88.0716 40.1321 86.1576C30.1204 76.9587 25.3004 65.0197 22.6676 52.404C20.8132 41.9656 20.665 30.5917 20.7391 19.8912H74.7647Z" fill="#FEFEFE"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M71.798 22.6313L71.6122 36.1106C71.056 44.1451 70.4998 52.5168 67.9411 59.8381C64.5298 70.7266 57.967 81.6516 47.6215 88.0717C42.0971 84.2059 36.7573 79.0608 33.4201 73.2809C27.3384 62.9553 24.6702 51.055 24.2246 38.5521C23.9282 33.3705 23.8541 28.1524 23.9647 22.6324H71.798V22.6313Z" fill="#004FA2"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M70.9447 23.6453C71.0176 23.7581 70.9811 24.0964 70.9811 24.2457L70.7589 37.0118C70.2768 46.6983 69.0527 56.3096 65.271 64.7566C63.4907 65.5826 61.0436 65.4322 59.375 64.5321C56.4094 63.8178 53.8506 65.4698 51.0331 65.2066C49.5127 65.2453 48.1769 64.6062 46.5459 64.7201C43.839 64.908 41.2438 66.3345 38.4993 65.3581C36.4978 64.5686 34.1613 65.2077 32.2329 65.6954C31.6402 65.8081 31.0099 65.7705 30.4902 65.5826C26.6709 56.836 25.4479 47.26 24.9658 37.2362C24.8552 32.6562 24.6694 28.1889 24.78 23.6464H70.9447V23.6453Z" fill="#FEFEFE"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M43.5451 25.6733C43.471 26.0857 43.2852 26.3865 43.471 26.8741C44.621 27.5874 45.8439 28.0761 47.0304 28.6765C47.1786 28.5262 47.0304 28.2254 46.9928 28.0009C47.141 27.2125 47.5866 26.4241 47.8465 25.5981C48.2169 26.5369 48.9589 27.5498 48.5874 28.6389C49.9961 28.2254 51.406 27.625 52.7406 26.9493C53.0381 26.8741 52.8888 26.5369 53.0381 26.3489C52.8147 26.0105 52.7771 25.5605 53.0381 25.2597C53.2968 25.1469 53.5943 25.0341 53.853 25.2221C53.8895 25.3349 54.0753 25.4477 54.1129 25.5605C54.187 26.3113 53.2968 26.423 53.3333 27.1373V27.1749C57.042 26.6862 60.3416 28.8269 62.2325 31.9806C62.4183 32.8066 62.9745 34.0074 62.2701 34.7583C61.1577 36.073 60.4157 37.6874 59.1552 38.8883H59.007C59.1928 37.4619 57.7829 36.5994 56.7457 35.9226C54.9278 34.9838 52.5548 34.5338 50.5899 34.9462C50.4793 35.2094 50.2571 35.5843 50.4793 35.8474C50.664 36.1858 50.3676 36.5231 50.1078 36.6358C49.7009 36.711 49.4034 36.5982 49.2176 36.2599C49.1447 35.885 49.3293 35.5854 49.6268 35.4726C49.9961 35.5091 49.8114 35.0966 50.0337 34.9462C49.4034 34.6466 48.8837 33.9322 48.7731 33.219C48.699 33.1062 48.5509 33.0686 48.4768 32.957L48.2534 33.219L48.3275 37.3115C48.699 37.3491 49.0695 37.537 49.4399 37.4619C49.5151 37.7626 49.2917 38.3631 49.7738 38.4382C50.183 38.5134 50.5523 38.2127 50.7016 37.8378C50.9979 37.9871 51.7023 37.8378 51.6282 38.2879C51.3695 38.8883 50.9603 39.4522 50.4782 39.9399L62.9004 53.0432C63.6048 53.1184 64.4949 52.1033 64.977 52.968C64.5325 56.9477 63.2708 60.589 61.2683 63.9682C62.5665 64.3441 64.0493 64.0058 65.3486 63.5557L65.385 63.5933C64.6807 64.081 63.6789 64.1186 62.7887 64.2678C60.6756 64.3817 59.1176 63.1422 56.9304 63.4429C54.9654 63.4053 53.2968 64.4934 51.2202 64.081C49.1811 63.5933 46.8447 62.9918 44.768 63.8178C42.4691 64.7577 39.3918 64.5697 37.167 63.6298C34.794 62.8049 32.9396 64.4193 30.7148 64.3065L30.863 64.1938C31.8272 64.081 32.7915 63.893 33.6816 63.5557C33.6075 62.8801 33.2371 62.2034 32.9772 61.5278C31.9378 58.7501 31.1605 55.7457 31.0864 52.7048C31.1229 52.5169 31.3075 52.5169 31.4192 52.4793L33.2371 52.8176L44.5823 41.0667L45.4724 40.1267C45.0279 39.6015 44.36 39.0387 44.36 38.2138L45.4724 37.7626C45.6582 38.0999 45.9545 38.6638 46.4742 38.3631C46.8823 38.2503 46.66 37.7991 46.7706 37.537L47.5866 37.3867L47.6607 33.219L47.3644 32.8066C46.6224 33.3705 46.6965 34.421 45.7699 34.8334C45.7323 35.3974 46.6965 35.3974 46.2896 36.0719C46.1403 36.4479 45.7323 36.4855 45.3983 36.3727C45.0655 36.2234 44.9914 35.8474 45.102 35.5102C45.3618 35.3598 45.2501 35.1342 45.2501 34.9086C44.5458 34.6466 43.6556 34.7583 42.9148 34.7958C40.5042 35.1718 38.4652 36.5231 36.9812 38.6262C35.8688 36.8238 34.8316 34.8334 33.7557 32.9946C34.2002 30.3286 36.759 28.2254 39.2436 27.5874C40.356 27.3994 41.6166 26.9869 42.7666 27.3994C42.9148 27.437 42.9877 27.3629 43.0994 27.3253C42.9148 26.7989 42.8031 26.2737 42.2845 25.9729C42.1352 25.6357 42.3586 25.3725 42.5808 25.1469C42.9513 25.1093 43.5075 25.1469 43.5451 25.6733Z" fill="#004FA2"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M28.452 25.7473C28.1921 26.3488 26.7458 26.3112 27.3761 27.25C28.2662 28.3757 30.1571 27.7001 30.7133 29.3521C30.8991 29.8613 30.8991 30.4197 30.7133 30.9289C30.1947 31.379 29.0823 31.4166 29.4527 32.4306C29.8618 33.0686 30.6392 32.9945 31.1589 33.3694C32.8275 33.8194 32.8275 36.3726 34.7184 36.1857C34.9041 36.1857 35.0147 35.885 35.2005 36.073L36.9808 39.3394C37.4253 39.7518 38.018 39.639 38.5377 39.5274C39.168 38.9258 39.7983 38.0246 40.5391 37.537C41.0223 37.4994 41.0964 37.987 41.1694 38.3254C41.207 39.9022 39.9464 41.1783 38.6859 41.8915C37.1654 42.5682 35.0147 42.5306 33.6436 41.5542C32.383 40.9162 32.2337 39.5639 32.049 38.363C31.3447 37.8366 30.9731 38.8506 30.4169 39.1138C29.7866 39.5639 29.0823 39.9763 28.2662 39.7894C27.5994 39.6015 27.2279 38.2502 26.3389 38.8506C26.2637 38.8882 26.2637 38.7378 26.2637 38.6627C26.3013 38.4747 26.4494 38.2502 26.6728 38.1761C27.5242 38.1761 28.7483 39.4146 29.3045 38.1374C29.6385 37.4994 29.8607 36.5606 30.7133 36.4102C31.9374 36.073 32.3078 37.4994 33.1614 37.987C33.8282 38.363 34.4961 38.9634 35.237 38.813V38.7379C34.1246 38.2878 33.0874 37.537 32.1961 36.5982C32.1961 35.2469 30.5651 34.4198 29.5644 33.857C28.8235 33.5949 28.3403 32.7689 28.3038 32.0181C28.3038 31.1545 29.4903 30.6282 28.8965 29.6518C28.2662 28.8645 27.2655 28.5261 26.7093 27.5873C26.5235 27.2113 26.6352 26.7248 26.7834 26.3864C27.1538 25.8601 27.7841 26.0105 28.2297 25.6732C28.3403 25.6356 28.3779 25.7108 28.4509 25.7473H28.452ZM68.3491 26.1985C67.7929 26.0857 67.2743 26.3864 66.9404 26.7989C66.8298 27.25 66.5689 27.9633 66.978 28.3005C66.978 28.6389 67.3849 28.6013 67.4601 28.9021C68.0528 29.5766 68.4232 30.4037 68.1645 31.3425C68.0163 32.0933 67.3849 32.9569 66.6065 33.219C66.236 33.2942 65.9021 33.4069 65.6433 33.7077C65.2342 34.3082 65.5681 35.2093 65.013 35.7346C64.3828 35.5842 63.6773 35.7722 63.1587 36.1105C62.3791 36.5606 62.0463 37.4994 62.2309 38.3254C62.2685 38.363 62.3061 38.4382 62.3791 38.4006C62.6025 38.175 62.3426 37.9118 62.4908 37.6487C62.639 36.8238 63.455 36.2974 64.1605 36.0343C65.0119 35.8098 65.5317 36.5982 66.0514 37.1621C66.4218 37.6874 65.7915 38.551 66.6065 38.813C67.2003 38.7003 67.8305 38.5886 68.3491 38.8882C68.4973 39.1514 68.8313 39.189 68.8313 39.4522C67.7565 38.5123 66.4583 40.653 65.6798 38.9634C65.1601 38.2878 65.9762 37.349 65.1601 36.9366C64.6415 36.9366 64.1229 37.0117 63.8995 37.537C63.6032 38.5875 63.5291 39.7518 62.5649 40.4651C61.824 41.1783 60.8598 40.9914 59.8956 41.1407C57.8941 41.2535 55.7047 40.9527 54.7416 38.8882C54.4452 38.4758 54.3336 37.7626 54.6675 37.3114C54.8522 37.1234 55.1485 37.1234 55.4084 37.1986C56.5584 37.8742 56.8547 39.377 58.2634 39.4146C58.7091 39.377 59.2277 39.3018 59.451 38.9634C60.5623 37.8742 61.4525 36.5982 62.2309 35.2469C63.047 35.2469 63.9747 35.3973 64.4557 34.683C64.3076 33.7453 64.5674 32.8065 65.42 32.3178C66.0879 32.0557 66.978 32.2061 67.3484 31.3425C68.1269 29.5025 64.9379 28.6765 66.2725 26.8365C66.5324 26.5368 66.8287 26.0481 67.2367 26.0105C67.6083 26.0481 68.1645 25.9353 68.3491 26.1985Z" fill="#004FA2"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M48.2882 28.7141C47.9177 28.7517 47.398 28.9021 47.2123 28.5261C47.0641 27.6249 47.6214 26.9117 47.8426 26.1233C48.1765 26.8752 48.882 27.8129 48.2882 28.7141ZM47.1006 28.8645C46.8418 29.5777 46.582 30.3661 46.5079 31.1921C46.5079 31.9429 46.3597 32.7314 46.2115 33.4446C46.2856 33.6701 46.4338 33.407 46.582 33.4822C46.4714 33.9322 46.1751 34.4586 45.6929 34.5714L43.6528 27.2501C44.7733 27.8483 45.9246 28.3872 47.1017 28.8645H47.1006ZM50.0685 34.6089C49.4747 34.6089 49.2148 33.857 48.9926 33.407C49.2148 33.2566 49.4382 33.6701 49.6604 33.407C49.0666 32.0181 49.4747 30.1781 48.5845 28.9021C49.9557 28.3381 51.3655 27.8881 52.7013 27.2501L50.0685 34.6089ZM59.672 29.2769C58.522 30.929 57.372 32.6938 56.2608 34.3834H56.1491L57.3732 28.4133L57.2239 28.3005C55.9268 30.1405 54.7027 31.9805 53.3316 33.7829C53.4057 31.6422 53.4422 29.5025 53.6644 27.3629C55.8527 27.1749 58.0034 27.8129 59.672 29.2769ZM39.0174 27.9257C39.316 28.7517 39.2784 29.7657 40.0193 30.3285C41.1693 29.9902 42.4663 29.6905 43.7645 29.8774L44.2466 31.6046C43.1718 31.7174 42.0594 31.9053 41.0952 32.3565C40.3908 33.219 41.3163 34.0826 41.6879 34.7958C40.9835 35.2094 40.1309 35.435 39.389 35.8474C39.055 35.2094 38.8693 34.421 38.3142 33.8946C37.6839 34.0826 37.3123 34.683 36.8678 35.1718C36.4974 35.6218 36.3116 36.1858 36.0894 36.711H36.0153L35.1992 35.2094C35.6072 34.045 36.274 32.9193 37.3499 32.0933C37.6098 31.755 37.3499 31.4177 37.3123 31.0793C37.016 30.4413 36.6821 29.7281 36.5715 29.089C37.3499 28.5637 38.1284 28.1137 39.0185 27.9257" fill="#FEFEFE"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M48.4372 28.9762C49.0675 30.2533 48.9934 31.8302 49.3639 33.1814C49.0675 33.2942 48.8077 32.9569 48.5854 32.8055C48.5854 31.943 48.8453 30.8925 48.5489 30.0278C48.4748 30.0278 48.4008 30.103 48.4384 30.1782C48.5489 31.1545 48.4384 32.2426 48.1398 33.031C48.0668 33.1438 47.9927 33.219 47.8435 33.1814C47.3248 32.3554 47.3624 31.379 47.4365 30.3285C47.3624 30.3285 47.2508 30.1782 47.1767 30.2909C47.0661 31.0794 47.1767 31.755 47.2508 32.581C46.9544 32.8066 46.9544 33.1062 46.584 33.1814C46.9909 31.755 46.4723 30.1782 47.3989 28.9397L48.4384 28.9762H48.4372ZM61.7861 31.6046C61.7861 31.8302 61.6003 31.943 61.4897 32.0933C61.1558 31.943 61.1182 31.4166 60.8218 31.117C60.6737 31.0418 60.7113 30.8162 60.5255 30.7786L60.4514 30.8914L61.3415 32.3178C61.227 32.5414 61.0765 32.7447 60.8959 32.9194C60.5996 32.7314 60.6361 32.0933 60.2656 32.2802L60.7478 33.1062C59.8576 34.0461 59.4131 35.247 58.4865 36.1106C58.931 33.9322 59.1908 31.7174 59.6365 29.5401L59.7835 29.3897C60.562 30.0654 61.2299 30.741 61.7861 31.6046ZM62.1565 32.3565C62.2306 33.031 62.6386 33.7078 62.3423 34.3834C62.12 34.609 62.0083 34.8334 61.7861 35.0214C61.4521 34.4962 61.2299 33.7454 61.6379 33.1438C61.8602 33.3694 61.8601 33.8957 62.12 34.0837C62.1941 33.407 61.3415 32.8066 62.0094 32.1309L62.1565 32.3554V32.3565ZM61.3415 34.3458C61.378 34.8334 61.9342 35.3222 61.3415 35.697C61.1558 35.5467 61.0817 35.2846 61.0076 35.0225L61.1934 34.3458H61.3415ZM60.2291 37.4242L60.154 37.4618C60.2656 36.7862 60.6372 36.0354 60.8959 35.3598C61.712 36.0343 60.4514 36.711 60.2291 37.4242Z" fill="#FEFEFE"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M58.7085 38.1751C58.6344 38.5134 58.6709 38.927 58.2629 38.9635C56.7812 38.9259 56.5578 37.0118 55.1856 36.7851C55.2596 36.4479 55.6312 36.2234 55.9264 36.073C57.0764 36.4103 58.0407 37.1235 58.7085 38.1751ZM40.1317 37.1998V37.3115H40.0211C39.4638 37.9119 39.0193 38.4006 38.6477 39.0387C38.3149 39.3394 37.9809 39.2642 37.5729 39.2266C37.4623 39.1139 37.1649 39.1139 37.2025 38.8507C37.7968 38.0037 38.5083 37.2454 39.3156 36.5982C39.6119 36.711 39.7977 37.1622 40.1317 37.1987" fill="#004FA2"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M51.2198 38.6638C51.1833 38.8131 51.1457 39.2267 50.8117 39.1139H44.9169L44.6935 38.8131L44.8793 38.6638H51.2198ZM47.5486 39.4146C47.438 39.7906 47.6227 40.1655 47.0289 40.0892C46.6972 40.0527 46.9924 39.6391 46.9559 39.4146C47.0376 39.3422 47.1431 39.3022 47.2523 39.3022C47.3615 39.3022 47.4669 39.3422 47.5486 39.4146ZM49.0326 39.7143C49.0326 39.7519 49.069 39.7895 49.1066 39.7895C48.8844 40.0527 48.5869 39.9399 48.3647 39.9023C48.4023 39.7143 48.3282 39.5263 48.4388 39.3018C48.7727 39.2643 49.0326 39.3394 49.0326 39.7143ZM62.7518 53.6436L62.3427 55.3333C59.2288 57.0229 55.8551 57.9981 52.2581 58.4493L49.6993 40.4275C49.811 40.3158 49.9592 40.2782 50.1074 40.3158L62.7518 53.6425V53.6436ZM43.6552 58.6738C43.3224 58.6373 42.9508 58.6373 42.6545 58.4869C42.6545 56.3461 42.618 54.0937 42.5063 51.9164L43.1366 50.678C42.6545 50.5276 41.9866 50.5276 41.5421 50.678C41.6162 51.128 41.9125 51.5405 42.0983 51.954L42.0242 58.4493C41.2457 58.4493 40.4297 58.1496 39.6512 57.9981C39.5771 57.2108 39.8735 56.4965 39.5771 55.7468L37.9074 55.8585L37.871 57.4729C37.2407 57.3977 36.6845 57.0605 36.0907 56.8725L36.2023 54.808C36.7221 54.9208 37.2042 54.6576 37.5381 54.2065C37.871 54.6576 38.3896 54.8445 38.9093 54.7704C39.3184 54.6941 39.5396 53.982 39.8735 54.1689C40.1333 54.4696 40.4297 54.5448 40.7636 54.5824C41.1341 54.5448 41.468 54.3945 41.6538 54.0572C41.7644 53.7188 41.4304 53.3805 41.8019 53.1549C39.6877 53.2688 37.4629 53.4557 35.3498 53.4933C35.1275 53.982 35.6461 54.3945 35.906 54.7317C35.7578 55.3333 35.8695 56.0476 35.8319 56.6845C35.0535 56.4965 34.0516 56.1969 33.5695 55.3333C33.4213 54.8445 33.1626 54.3569 33.125 53.7564L46.0293 40.3899L46.2504 40.4275L43.6552 58.6749V58.6738ZM49.1431 40.4286C49.069 40.6907 49.2172 40.8787 49.1807 41.0666C48.9585 41.1407 48.661 41.1031 48.4399 41.1031C48.3647 40.9152 48.3282 40.5779 48.4753 40.4286H49.1431ZM47.438 41.1407L46.7337 41.2159L46.8078 40.5779C47.0289 40.5027 47.364 40.5027 47.5486 40.5779L47.438 41.1418V41.1407ZM49.403 42.3803C49.1066 42.4931 48.6245 42.4931 48.3647 42.3803C48.5128 42.0795 48.1789 41.3663 48.8844 41.5543C49.5888 41.3287 49.1431 42.0795 49.403 42.3803ZM47.438 42.4931L46.5479 42.6059C46.5479 42.3427 46.5844 41.9667 46.6961 41.7047L47.4745 41.7423L47.438 42.4931ZM49.6252 43.9947C49.2913 44.1451 48.7727 44.0699 48.4388 44.0699C48.6245 43.7691 48.1789 43.0559 48.661 42.9431H49.4771L49.6252 43.9936V43.9947ZM47.4016 44.144C47.03 44.1827 46.6961 44.2203 46.3256 44.2579C46.288 43.9195 46.3997 43.506 46.4362 43.13C46.7337 43.0559 47.1041 43.13 47.4004 43.0559V44.1451L47.4016 44.144ZM49.8851 45.7219C49.4406 45.8347 48.9585 45.8723 48.4753 45.8347V44.6327C48.9209 44.5952 49.2913 44.4448 49.6993 44.5952L49.8851 45.7219ZM47.364 44.7079C47.364 45.0463 47.3264 45.4964 47.4004 45.8347C46.9924 45.984 46.5103 45.9464 46.0658 46.0227C45.9917 45.6091 46.214 45.1956 46.214 44.7455C46.5479 44.7079 47.0665 44.7079 47.364 44.7079ZM49.9968 46.4351C50.0333 46.8476 50.0333 47.2976 50.1439 47.6736C49.7369 47.824 49.1066 47.7864 48.5504 47.824L48.5128 46.4351C48.922 46.2472 49.4771 46.3976 49.8851 46.2848L49.9957 46.4351H49.9968ZM47.3264 47.8616L45.7694 48.012L45.9176 46.6231C46.3256 46.4727 46.9183 46.4727 47.364 46.5103L47.3264 47.8616ZM50.4424 49.6264C49.811 49.664 49.2172 49.7016 48.5869 49.7768C48.6245 49.3256 48.3647 48.4244 48.8103 48.3503C49.2913 48.4244 49.7734 48.2751 50.219 48.3127L50.4413 49.6264H50.4424ZM47.2523 48.5007V49.852L45.472 49.9272C45.5096 49.5512 45.5837 49.0636 45.6213 48.65C46.1399 48.5372 46.7337 48.462 47.2523 48.4996V48.5007ZM50.553 50.2644C50.5154 50.678 50.5895 51.2032 50.7001 51.6168C50.0022 51.7307 49.294 51.7682 48.588 51.7285V50.302C49.2183 50.2268 49.9227 50.0764 50.553 50.2644ZM47.2523 50.3772C47.1782 50.9411 47.2523 51.316 47.2158 51.8412C46.5855 51.954 45.8435 51.9916 45.1756 51.954L45.3614 50.5652C45.8435 50.3396 46.6596 50.49 47.2523 50.3772Z" fill="#FEFEFE"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M42.8011 50.7531C42.6154 51.0904 42.5413 51.5039 42.319 51.8412C42.1332 51.5415 41.7993 51.0528 41.8745 50.7531H42.8011ZM50.8102 52.2923C50.7361 52.7424 50.9584 53.1935 50.996 53.6436L50.8854 53.7564L48.6971 53.9068L48.5865 52.3675C49.2533 52.2923 50.1423 52.1796 50.8102 52.2923ZM47.1402 53.982L44.8778 54.1699L45.0259 52.7048C45.7668 52.6296 46.4723 52.4416 47.1766 52.5168L47.1402 53.982ZM41.4289 53.418C41.5041 53.8316 41.3924 54.2064 40.9844 54.3579C40.6139 54.3944 40.3165 54.3192 40.0577 54.0936L39.6486 53.5308C40.2424 53.3804 40.7986 53.3052 41.4289 53.418ZM39.4639 53.6812C39.5015 54.0195 39.2417 54.3568 38.9442 54.5072C38.6479 54.6576 38.2409 54.5448 37.9811 54.3944C37.7953 54.1688 37.4614 54.0184 37.572 53.6812C38.0917 53.418 38.7971 53.6436 39.3522 53.4932L39.4639 53.6812ZM37.2391 53.606C37.499 54.056 37.0169 54.3944 36.7194 54.5824C36.2749 54.808 35.9045 54.3192 35.6446 53.9444C35.5705 53.8692 35.6081 53.7564 35.7552 53.7188L37.2391 53.606ZM51.2558 55.8584C50.4398 55.9712 49.5496 55.9712 48.6971 56.0088V54.5448C49.4014 54.3944 50.254 54.432 51.0325 54.3568L51.2558 55.8584ZM47.1766 54.6576C47.1026 55.1452 47.0661 55.6329 47.1026 56.1216L44.5814 56.3472C44.6555 55.8584 44.692 55.258 44.7661 54.7704C45.5821 54.7328 46.3982 54.62 47.1766 54.6576ZM51.3664 56.46C51.404 57.1732 51.4781 57.8488 51.6263 58.4868C50.662 58.7124 49.7354 58.6748 48.7712 58.6748L48.6971 56.6844C49.5496 56.5341 50.4398 56.4965 51.3664 56.46ZM47.1015 56.6844C47.065 57.3225 46.9544 58.0733 47.0285 58.7124H44.2475L44.4697 56.91C45.434 56.8348 46.0642 56.722 47.1015 56.6844ZM60.0433 58.6372C60.0057 58.75 60.1174 58.8252 60.1539 58.8252C60.3773 58.7876 60.5995 58.8252 60.5631 59.0873C60.6736 59.4632 59.9637 59.4057 59.778 59.4809C59.6674 59.8182 59.7072 60.8078 59.9295 61.071C60.1517 61.4835 61.0076 60.2516 61.1182 60.8521C60.8218 61.416 60.3397 62.0905 59.6353 62.0164C58.8569 62.054 58.1525 61.6781 57.7069 61.0401C57.8174 60.3644 58.6169 61.4127 59.0614 61.2999C59.4706 61.0367 59.3633 60.046 59.3257 59.5959C59.2516 59.4455 58.8945 59.4632 58.7452 59.4632L58.7087 59.5008C58.6346 59.4256 58.6346 59.1249 58.7087 59.0121C58.9298 58.9745 59.2284 59.0508 59.339 58.7876C59.3014 58.5244 59.3014 58.2237 59.6353 58.2613C59.9317 58.1861 60.0057 58.4117 60.0433 58.6372ZM63.7875 67.9478C63.8627 68.0982 64.0473 67.8726 64.0473 68.0606C63.4911 68.2485 63.417 68.9242 63.1207 69.3742C62.9349 69.6374 62.8995 70.0134 62.601 70.2002C60.489 70.8018 59.1156 69.3377 57.1142 69.5998C55.1481 69.675 53.5171 70.877 51.404 70.313C48.8828 69.4118 45.6938 69.6374 43.1716 70.3506C40.5763 71.0262 38.0928 69.6374 35.6081 70.125C34.718 70.3506 33.6432 70.2389 32.753 70.2754C32.3815 69.5246 32.0111 68.7738 31.6406 68.0606C33.087 68.4365 34.8285 68.1358 36.3125 67.9102C38.3515 68.2486 40.9468 68.6621 43.1351 68.0982C45.1 67.3462 47.7328 67.3462 49.7719 67.9478C53.2584 68.8866 56.2605 66.2582 59.6718 67.6846C60.97 67.9854 62.4163 68.473 63.7886 67.9478H63.7875ZM55.4456 72.979C57.2259 72.7158 59.2649 72.4151 60.8959 73.2422C60.4379 73.9472 59.9929 74.6605 59.5612 75.3819C58.7922 75.075 57.9777 74.8975 57.1507 74.8566C55.4832 74.8179 53.9992 75.6826 52.2565 75.3067C48.7712 73.993 45.6562 76.471 42.2073 75.457C40.0577 75.0811 38.0928 75.1187 36.0526 75.6826C35.5329 75.0059 35.0519 74.2562 34.6439 73.5043C37.7212 72.153 40.6504 73.7674 43.9135 73.4291C46.0278 73.3926 47.6588 72.0778 49.846 72.5666C51.7003 72.6783 53.5912 73.6546 55.4456 72.979ZM54.7412 78.0467C55.6313 77.5967 56.7802 77.4098 57.8185 77.7095L55.8536 79.9995C54.4437 79.6988 53.3689 80.7127 51.9967 80.3379C50.0317 79.5119 47.4365 79.586 45.4716 80.4131C43.6913 80.3755 41.6522 79.4367 39.9095 80.3379C39.1676 79.6988 38.4997 78.948 37.8694 78.1595C39.0559 77.6343 40.4657 77.6343 41.8369 77.7847C43.9135 78.2358 46.3241 78.5366 48.3266 77.7095C49.7354 77.4839 51.3675 77.4463 52.6646 78.0855C53.2949 78.2358 54.1109 78.2734 54.7412 78.0479" fill="#FEFEFE"/> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M101.856 61L96.384 44.248H99.624L102.192 52.408L103.68 57.976H103.752L105.216 52.408L107.784 44.248H110.928L105.456 61H101.856ZM117.324 61.288C116.396 61.288 115.564 61.136 114.828 60.832C114.108 60.512 113.492 60.072 112.98 59.512C112.484 58.936 112.1 58.248 111.828 57.448C111.556 56.632 111.42 55.72 111.42 54.712C111.42 53.72 111.548 52.824 111.804 52.024C112.076 51.224 112.46 50.544 112.956 49.984C113.452 49.408 114.06 48.968 114.78 48.664C115.5 48.344 116.316 48.184 117.228 48.184C118.204 48.184 119.052 48.352 119.772 48.688C120.492 49.024 121.084 49.48 121.548 50.056C122.012 50.632 122.356 51.304 122.58 52.072C122.82 52.824 122.94 53.632 122.94 54.496V55.504H114.612V55.816C114.612 56.728 114.868 57.464 115.38 58.024C115.892 58.568 116.652 58.84 117.66 58.84C118.428 58.84 119.052 58.68 119.532 58.36C120.028 58.04 120.468 57.632 120.852 57.136L122.508 58.984C121.996 59.704 121.292 60.272 120.396 60.688C119.516 61.088 118.492 61.288 117.324 61.288ZM117.276 50.488C116.46 50.488 115.812 50.76 115.332 51.304C114.852 51.848 114.612 52.552 114.612 53.416V53.608H119.748V53.392C119.748 52.528 119.532 51.832 119.1 51.304C118.684 50.76 118.076 50.488 117.276 50.488ZM129.747 61.288C128.547 61.288 127.539 61.088 126.723 60.688C125.907 60.272 125.187 59.704 124.563 58.984L126.435 57.16C126.899 57.688 127.403 58.104 127.947 58.408C128.507 58.712 129.147 58.864 129.867 58.864C130.603 58.864 131.131 58.736 131.451 58.48C131.787 58.224 131.955 57.872 131.955 57.424C131.955 57.056 131.835 56.768 131.595 56.56C131.371 56.336 130.979 56.184 130.419 56.104L129.171 55.936C127.811 55.76 126.771 55.376 126.051 54.784C125.347 54.176 124.995 53.296 124.995 52.144C124.995 51.536 125.107 50.992 125.331 50.512C125.555 50.016 125.875 49.6 126.291 49.264C126.707 48.912 127.203 48.648 127.779 48.472C128.371 48.28 129.027 48.184 129.747 48.184C130.355 48.184 130.891 48.232 131.355 48.328C131.835 48.408 132.267 48.536 132.651 48.712C133.035 48.872 133.387 49.08 133.707 49.336C134.027 49.576 134.339 49.848 134.643 50.152L132.843 51.952C132.475 51.568 132.035 51.248 131.523 50.992C131.011 50.736 130.451 50.608 129.843 50.608C129.171 50.608 128.683 50.728 128.379 50.968C128.091 51.208 127.947 51.52 127.947 51.904C127.947 52.32 128.067 52.64 128.307 52.864C128.563 53.072 128.987 53.224 129.579 53.32L130.851 53.488C133.555 53.872 134.907 55.104 134.907 57.184C134.907 57.792 134.779 58.352 134.523 58.864C134.283 59.36 133.939 59.792 133.491 60.16C133.043 60.512 132.499 60.792 131.859 61C131.235 61.192 130.531 61.288 129.747 61.288ZM141.344 61C140.288 61 139.48 60.728 138.92 60.184C138.376 59.624 138.104 58.832 138.104 57.808V50.92H136.256V48.472H137.216C137.68 48.472 137.992 48.368 138.152 48.16C138.328 47.936 138.416 47.608 138.416 47.176V45.04H141.176V48.472H143.744V50.92H141.176V58.552H143.552V61H141.344ZM146.409 61V48.472H149.481V50.56H149.601C149.841 49.904 150.225 49.344 150.753 48.88C151.281 48.416 152.017 48.184 152.961 48.184C153.825 48.184 154.569 48.392 155.193 48.808C155.817 49.224 156.281 49.856 156.585 50.704H156.633C156.857 50 157.297 49.408 157.953 48.928C158.625 48.432 159.465 48.184 160.473 48.184C161.705 48.184 162.649 48.608 163.305 49.456C163.977 50.304 164.313 51.512 164.313 53.08V61H161.241V53.392C161.241 51.6 160.569 50.704 159.225 50.704C158.921 50.704 158.625 50.752 158.337 50.848C158.065 50.928 157.817 51.056 157.593 51.232C157.385 51.392 157.217 51.6 157.089 51.856C156.961 52.096 156.897 52.384 156.897 52.72V61H153.825V53.392C153.825 51.6 153.153 50.704 151.809 50.704C151.521 50.704 151.233 50.752 150.945 50.848C150.673 50.928 150.425 51.056 150.201 51.232C149.993 51.392 149.817 51.6 149.673 51.856C149.545 52.096 149.481 52.384 149.481 52.72V61H146.409ZM176.93 61C176.258 61 175.722 60.808 175.322 60.424C174.938 60.024 174.698 59.496 174.602 58.84H174.458C174.25 59.656 173.826 60.272 173.186 60.688C172.546 61.088 171.754 61.288 170.81 61.288C169.53 61.288 168.546 60.952 167.858 60.28C167.17 59.608 166.826 58.712 166.826 57.592C166.826 56.296 167.29 55.336 168.218 54.712C169.146 54.072 170.466 53.752 172.178 53.752H174.314V52.84C174.314 52.136 174.13 51.592 173.762 51.208C173.394 50.824 172.802 50.632 171.986 50.632C171.266 50.632 170.682 50.792 170.234 51.112C169.802 51.416 169.434 51.784 169.13 52.216L167.306 50.584C167.77 49.864 168.386 49.288 169.154 48.856C169.922 48.408 170.938 48.184 172.202 48.184C173.898 48.184 175.186 48.568 176.066 49.336C176.946 50.104 177.386 51.208 177.386 52.648V58.552H178.634V61H176.93ZM171.842 59.056C172.53 59.056 173.114 58.904 173.594 58.6C174.074 58.296 174.314 57.848 174.314 57.256V55.6H172.346C170.746 55.6 169.946 56.112 169.946 57.136V57.544C169.946 58.056 170.106 58.44 170.426 58.696C170.762 58.936 171.234 59.056 171.842 59.056ZM181.12 61V48.472H184.192V50.56H184.312C184.568 49.888 184.968 49.328 185.512 48.88C186.072 48.416 186.84 48.184 187.816 48.184C189.112 48.184 190.104 48.608 190.792 49.456C191.48 50.304 191.824 51.512 191.824 53.08V61H188.752V53.392C188.752 52.496 188.592 51.824 188.272 51.376C187.952 50.928 187.424 50.704 186.688 50.704C186.368 50.704 186.056 50.752 185.752 50.848C185.464 50.928 185.2 51.056 184.96 51.232C184.736 51.392 184.552 51.6 184.408 51.856C184.264 52.096 184.192 52.384 184.192 52.72V61H181.12ZM195.229 61V48.472H198.301V50.56H198.421C198.677 49.888 199.077 49.328 199.621 48.88C200.181 48.416 200.949 48.184 201.925 48.184C203.221 48.184 204.213 48.608 204.901 49.456C205.589 50.304 205.933 51.512 205.933 53.08V61H202.861V53.392C202.861 52.496 202.701 51.824 202.381 51.376C202.061 50.928 201.533 50.704 200.797 50.704C200.477 50.704 200.165 50.752 199.861 50.848C199.573 50.928 199.309 51.056 199.069 51.232C198.845 51.392 198.661 51.6 198.517 51.856C198.373 52.096 198.301 52.384 198.301 52.72V61H195.229ZM218.555 61C217.883 61 217.347 60.808 216.947 60.424C216.563 60.024 216.323 59.496 216.227 58.84H216.083C215.875 59.656 215.451 60.272 214.811 60.688C214.171 61.088 213.379 61.288 212.435 61.288C211.155 61.288 210.171 60.952 209.483 60.28C208.795 59.608 208.451 58.712 208.451 57.592C208.451 56.296 208.915 55.336 209.843 54.712C210.771 54.072 212.091 53.752 213.803 53.752H215.939V52.84C215.939 52.136 215.755 51.592 215.387 51.208C215.019 50.824 214.427 50.632 213.611 50.632C212.891 50.632 212.307 50.792 211.859 51.112C211.427 51.416 211.059 51.784 210.755 52.216L208.931 50.584C209.395 49.864 210.011 49.288 210.779 48.856C211.547 48.408 212.563 48.184 213.827 48.184C215.523 48.184 216.811 48.568 217.691 49.336C218.571 50.104 219.011 51.208 219.011 52.648V58.552H220.259V61H218.555ZM213.467 59.056C214.155 59.056 214.739 58.904 215.219 58.6C215.699 58.296 215.939 57.848 215.939 57.256V55.6H213.971C212.371 55.6 211.571 56.112 211.571 57.136V57.544C211.571 58.056 211.731 58.44 212.051 58.696C212.387 58.936 212.859 59.056 213.467 59.056ZM227.809 61.288C226.881 61.288 226.049 61.136 225.313 60.832C224.593 60.512 223.977 60.072 223.465 59.512C222.969 58.936 222.585 58.248 222.313 57.448C222.041 56.632 221.905 55.72 221.905 54.712C221.905 53.72 222.033 52.824 222.289 52.024C222.561 51.224 222.945 50.544 223.441 49.984C223.937 49.408 224.545 48.968 225.265 48.664C225.985 48.344 226.801 48.184 227.713 48.184C228.689 48.184 229.537 48.352 230.257 48.688C230.977 49.024 231.569 49.48 232.033 50.056C232.497 50.632 232.841 51.304 233.065 52.072C233.305 52.824 233.425 53.632 233.425 54.496V55.504H225.097V55.816C225.097 56.728 225.353 57.464 225.865 58.024C226.377 58.568 227.137 58.84 228.145 58.84C228.913 58.84 229.537 58.68 230.017 58.36C230.513 58.04 230.953 57.632 231.337 57.136L232.993 58.984C232.481 59.704 231.777 60.272 230.881 60.688C230.001 61.088 228.977 61.288 227.809 61.288ZM227.761 50.488C226.945 50.488 226.297 50.76 225.817 51.304C225.337 51.848 225.097 52.552 225.097 53.416V53.608H230.233V53.392C230.233 52.528 230.017 51.832 229.585 51.304C229.169 50.76 228.561 50.488 227.761 50.488ZM243.667 48.472H246.547L241.507 63.232C241.347 63.68 241.163 64.064 240.955 64.384C240.763 64.72 240.531 64.992 240.259 65.2C239.987 65.408 239.659 65.56 239.275 65.656C238.891 65.752 238.443 65.8 237.931 65.8H236.083V63.352H238.339L238.915 61.6L234.427 48.472H237.475L239.659 55.096L240.475 58.264H240.619L241.483 55.096L243.667 48.472ZM248.573 48.472H251.645V62.512C251.645 63.568 251.381 64.376 250.853 64.936C250.325 65.512 249.485 65.8 248.333 65.8H246.653V63.352H248.573V48.472ZM250.109 46.648C249.469 46.648 249.005 46.504 248.717 46.216C248.445 45.928 248.309 45.56 248.309 45.112V44.632C248.309 44.184 248.445 43.816 248.717 43.528C249.005 43.24 249.469 43.096 250.109 43.096C250.733 43.096 251.189 43.24 251.477 43.528C251.765 43.816 251.909 44.184 251.909 44.632V45.112C251.909 45.56 251.765 45.928 251.477 46.216C251.189 46.504 250.733 46.648 250.109 46.648ZM264.422 61C263.75 61 263.214 60.808 262.814 60.424C262.43 60.024 262.19 59.496 262.094 58.84H261.95C261.742 59.656 261.318 60.272 260.678 60.688C260.038 61.088 259.246 61.288 258.302 61.288C257.022 61.288 256.038 60.952 255.35 60.28C254.662 59.608 254.318 58.712 254.318 57.592C254.318 56.296 254.782 55.336 255.71 54.712C256.638 54.072 257.958 53.752 259.67 53.752H261.806V52.84C261.806 52.136 261.622 51.592 261.254 51.208C260.886 50.824 260.294 50.632 259.478 50.632C258.758 50.632 258.174 50.792 257.726 51.112C257.294 51.416 256.926 51.784 256.622 52.216L254.798 50.584C255.262 49.864 255.878 49.288 256.646 48.856C257.414 48.408 258.43 48.184 259.694 48.184C261.39 48.184 262.678 48.568 263.558 49.336C264.438 50.104 264.878 51.208 264.878 52.648V58.552H266.126V61H264.422ZM259.334 59.056C260.022 59.056 260.606 58.904 261.086 58.6C261.566 58.296 261.806 57.848 261.806 57.256V55.6H259.838C258.238 55.6 257.438 56.112 257.438 57.136V57.544C257.438 58.056 257.598 58.44 257.918 58.696C258.254 58.936 258.726 59.056 259.334 59.056ZM268.111 55.216V52.168H274.975V55.216H268.111ZM97.776 71.24H100.848V78.536H100.944C101.168 77.816 101.592 77.248 102.216 76.832C102.84 76.4 103.568 76.184 104.4 76.184C106 76.184 107.216 76.752 108.048 77.888C108.896 79.008 109.32 80.616 109.32 82.712C109.32 84.824 108.896 86.448 108.048 87.584C107.216 88.72 106 89.288 104.4 89.288C103.568 89.288 102.84 89.072 102.216 88.64C101.608 88.208 101.184 87.632 100.944 86.912H100.848V89H97.776V71.24ZM103.416 86.744C104.216 86.744 104.864 86.48 105.36 85.952C105.856 85.424 106.104 84.712 106.104 83.816V81.656C106.104 80.76 105.856 80.048 105.36 79.52C104.864 78.976 104.216 78.704 103.416 78.704C102.68 78.704 102.064 78.888 101.568 79.256C101.088 79.624 100.848 80.112 100.848 80.72V84.704C100.848 85.36 101.088 85.864 101.568 86.216C102.064 86.568 102.68 86.744 103.416 86.744ZM116.799 83.504C116.031 83.52 115.439 83.664 115.023 83.936C114.607 84.192 114.399 84.576 114.399 85.088V85.472C114.399 85.984 114.559 86.376 114.879 86.648C115.199 86.92 115.679 87.056 116.319 87.056C116.991 87.056 117.567 86.904 118.047 86.6C118.527 86.296 118.767 85.848 118.767 85.256V83.504H116.799ZM126.999 81.608V81.392C126.999 80.528 126.783 79.832 126.351 79.304C125.935 78.76 125.327 78.488 124.527 78.488C123.711 78.488 123.063 78.76 122.583 79.304C122.103 79.848 121.863 80.552 121.863 81.416V81.608H126.999ZM124.959 86.792C125.711 86.792 126.343 86.632 126.855 86.312C127.367 85.992 127.799 85.6 128.151 85.136L129.807 86.984C129.295 87.704 128.599 88.272 127.719 88.688C126.839 89.088 125.831 89.288 124.695 89.288C124.087 89.288 123.519 89.216 122.991 89.072C122.463 88.928 121.991 88.736 121.575 88.496C121.175 88.256 120.831 87.984 120.543 87.68C120.255 87.376 120.039 87.056 119.895 86.72H119.751C119.639 87.04 119.463 87.352 119.223 87.656C118.999 87.96 118.703 88.232 118.335 88.472C117.967 88.712 117.527 88.904 117.015 89.048C116.519 89.208 115.935 89.288 115.263 89.288C113.999 89.288 113.015 88.944 112.311 88.256C111.623 87.568 111.279 86.672 111.279 85.568C111.279 84.912 111.407 84.336 111.663 83.84C111.919 83.344 112.279 82.936 112.743 82.616C113.207 82.28 113.767 82.032 114.423 81.872C115.079 81.696 115.815 81.608 116.631 81.608H118.767V80.84C118.767 80.136 118.583 79.592 118.215 79.208C117.847 78.824 117.263 78.632 116.463 78.632C115.727 78.632 115.135 78.784 114.687 79.088C114.255 79.392 113.887 79.768 113.583 80.216L111.759 78.584C112.223 77.864 112.839 77.288 113.607 76.856C114.375 76.408 115.391 76.184 116.655 76.184C117.615 76.184 118.383 76.384 118.959 76.784C119.535 77.168 119.983 77.656 120.303 78.248H120.447C120.767 77.656 121.287 77.168 122.007 76.784C122.727 76.384 123.591 76.184 124.599 76.184C125.575 76.184 126.415 76.352 127.119 76.688C127.823 77.024 128.399 77.48 128.847 78.056C129.311 78.632 129.647 79.304 129.855 80.072C130.079 80.824 130.191 81.632 130.191 82.496V83.504H121.839V83.816C121.839 84.712 122.111 85.432 122.655 85.976C123.199 86.52 123.967 86.792 124.959 86.792ZM132.909 89V76.472H135.981V79.064H136.101C136.181 78.728 136.301 78.408 136.461 78.104C136.637 77.784 136.861 77.504 137.133 77.264C137.405 77.024 137.725 76.832 138.093 76.688C138.477 76.544 138.917 76.472 139.413 76.472H140.085V79.376H139.125C138.085 79.376 137.301 79.528 136.773 79.832C136.245 80.136 135.981 80.632 135.981 81.32V89H132.909Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/vesturbyggd.svg b/libs/application/templates/financial-aid/src/svg/vesturbyggd.svg deleted file mode 100644 index 5bbd6a2e7c64..000000000000 --- a/libs/application/templates/financial-aid/src/svg/vesturbyggd.svg +++ /dev/null @@ -1,15 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M63.7102 57.069L68.6099 52.1693H63.7102H61.6612H60.8594V66.7795L63.7102 62.7706V57.069Z" fill="black"/> -<path d="M21.7503 34.8864H28.7882C28.7882 33.5501 26.8282 32.392 25.4919 32.392H25.0465V29.1849C23.7102 29.1849 22.5521 31.0557 22.5521 32.392H19.2559L21.7503 34.8864Z" fill="black"/> -<path d="M30.0354 28.4722H37.0733C37.0733 27.1359 35.1134 25.9778 33.7771 25.9778H33.3317V22.7706C31.9954 22.7706 30.8372 24.6415 30.8372 25.9778H27.541L30.0354 28.4722Z" fill="black"/> -<path d="M32.1733 38.8062H25.6699L28.1644 41.3006H29.6788C29.857 42.6369 30.7479 44.1514 31.9951 44.1514V41.3006H35.3804C35.3804 39.9643 33.5987 38.8062 32.1733 38.8062Z" fill="black"/> -<path d="M78.588 22.0579C68.0757 22.5033 61.3942 28.6503 57.5635 33.9065C52.3964 41.0334 50.5256 48.9621 50.5256 53.5947V55.02H53.2873L43.8441 70.7884H50.4365V76.6681L43.2205 86.5568V90.922C38.588 88.6058 34.3118 85.755 30.5702 82.5479V70.0757L43.755 56.8909L37.6971 50.833L50.4365 38.0935L43.6659 31.3229L56.1381 18.8508H78.4989V22.0579H78.588ZM78.588 46.6459H54.5345C55.6036 43.0824 57.2962 39.0735 59.9688 35.51C63.3541 30.7884 69.412 25.265 78.6771 24.8196L78.588 46.6459ZM78.588 54.931C78.588 63.1269 75.3808 71.2339 69.1448 78.1826C66.5612 81.1225 63.3541 83.8842 59.8797 86.3786L66.0267 77.6481H62.5523L53.7327 90.1203C52.3073 90.922 50.7929 91.5457 49.3675 92.2583L59.6125 77.6481H56.1381L46.0713 92.0802V87.5367L53.2873 77.6481V74.7973H61.8396L63.7996 71.9465H53.2873V67.9376H48.833L58.1871 52.1693H53.3764C53.4655 51.3675 53.5546 50.4766 53.7327 49.4967H78.4989V54.931H78.588ZM16.8508 18.8508H52.2183L39.657 31.3229L37.8753 46.6459L33.6882 50.833L31.9955 64.6414L22.8196 73.8174C18.8998 67.9376 16.8508 61.5234 16.8508 54.931V18.8508ZM14 16V54.931C14 63.8396 17.4744 72.5702 24.0668 80.0535C29.8575 86.6459 38.0535 92.2583 47.1403 95.7327L47.6748 95.9109L48.2094 95.7327C57.2071 92.2583 65.4031 86.735 71.2828 80.1425C77.8753 72.6592 81.3497 63.9287 81.3497 55.02V16.0891H14V16Z" fill="black"/> -<path d="M78.5878 24.9087C69.3228 25.3541 63.354 30.8775 59.8796 35.5991C57.2961 39.1626 55.5144 43.0824 54.4453 46.735H78.4988L78.5878 24.9087Z" fill="#FFFF00"/> -<path d="M78.5881 18.8508H56.1382L43.6661 31.3229L50.4367 38.0935L37.6973 50.833L43.7552 56.8909L30.5703 70.0757V82.637C34.2229 85.8441 38.5881 88.6949 43.2206 91.0111V86.6459L50.4367 76.6681V70.7884H43.8443L53.1984 55.02H50.5258V53.5946C50.5258 48.9621 52.3966 41.0334 57.5636 33.9064C61.3944 28.6503 68.0759 22.5033 78.5881 22.0579V18.8508Z" fill="#00A550"/> -<path d="M64.0664 30.9666L66.2045 29.1849C64.2446 30.6103 62.641 32.2138 61.3047 33.8174L64.0664 30.9666Z" fill="black"/> -<path d="M19.2569 32.392H22.5531C22.5531 31.0557 23.7113 29.1848 25.0476 29.1848V32.392H25.493C26.8293 32.392 28.7892 33.5501 28.7892 34.8864H21.7513L19.2569 32.392ZM30.8382 25.9777C30.8382 24.6414 31.9963 22.7706 33.3326 22.7706V25.9777H33.7781C35.1144 25.9777 37.0743 27.1358 37.0743 28.4721H30.0364L27.542 25.9777H30.8382ZM31.9963 41.3007V44.1514C30.7491 44.1514 29.8582 42.637 29.6801 41.3007H28.1656L25.6712 38.8062H32.1745C33.5108 38.8953 35.3816 39.9644 35.3816 41.3007H31.9963ZM31.9963 64.6414L33.689 50.833L37.8761 46.6459L39.6578 31.3229L52.13 18.8508H16.8516V55.02C16.8516 61.6125 18.9006 68.0267 22.8204 73.9064L31.9963 64.6414Z" fill="#00AFF0"/> -<path d="M68.6093 52.1692L63.7095 57.069V62.7706L60.8587 66.7795V52.1692H61.5714H63.7095H68.6093ZM78.587 49.4966H53.8209C53.6427 50.4766 53.5536 51.3675 53.4645 52.1692H58.2752L48.832 67.9376H53.2863V71.9465H63.7986L61.7496 74.7973H53.1973V77.6481L46.0703 87.5367V92.0802L56.3153 77.559H59.7897L49.4556 92.1693C50.9701 91.5456 52.3955 90.833 53.8209 90.0312L62.6405 77.559H66.1149L59.8788 86.3786C63.3532 83.9733 66.4712 81.2116 69.1438 78.1826C75.2908 71.2338 78.587 63.216 78.587 54.9309V49.4966Z" fill="white"/> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M101.856 75L96.384 58.248H99.624L102.192 66.408L103.68 71.976H103.752L105.216 66.408L107.784 58.248H110.928L105.456 75H101.856ZM117.324 75.288C116.396 75.288 115.564 75.136 114.828 74.832C114.108 74.512 113.492 74.072 112.98 73.512C112.484 72.936 112.1 72.248 111.828 71.448C111.556 70.632 111.42 69.72 111.42 68.712C111.42 67.72 111.548 66.824 111.804 66.024C112.076 65.224 112.46 64.544 112.956 63.984C113.452 63.408 114.06 62.968 114.78 62.664C115.5 62.344 116.316 62.184 117.228 62.184C118.204 62.184 119.052 62.352 119.772 62.688C120.492 63.024 121.084 63.48 121.548 64.056C122.012 64.632 122.356 65.304 122.58 66.072C122.82 66.824 122.94 67.632 122.94 68.496V69.504H114.612V69.816C114.612 70.728 114.868 71.464 115.38 72.024C115.892 72.568 116.652 72.84 117.66 72.84C118.428 72.84 119.052 72.68 119.532 72.36C120.028 72.04 120.468 71.632 120.852 71.136L122.508 72.984C121.996 73.704 121.292 74.272 120.396 74.688C119.516 75.088 118.492 75.288 117.324 75.288ZM117.276 64.488C116.46 64.488 115.812 64.76 115.332 65.304C114.852 65.848 114.612 66.552 114.612 67.416V67.608H119.748V67.392C119.748 66.528 119.532 65.832 119.1 65.304C118.684 64.76 118.076 64.488 117.276 64.488ZM129.747 75.288C128.547 75.288 127.539 75.088 126.723 74.688C125.907 74.272 125.187 73.704 124.563 72.984L126.435 71.16C126.899 71.688 127.403 72.104 127.947 72.408C128.507 72.712 129.147 72.864 129.867 72.864C130.603 72.864 131.131 72.736 131.451 72.48C131.787 72.224 131.955 71.872 131.955 71.424C131.955 71.056 131.835 70.768 131.595 70.56C131.371 70.336 130.979 70.184 130.419 70.104L129.171 69.936C127.811 69.76 126.771 69.376 126.051 68.784C125.347 68.176 124.995 67.296 124.995 66.144C124.995 65.536 125.107 64.992 125.331 64.512C125.555 64.016 125.875 63.6 126.291 63.264C126.707 62.912 127.203 62.648 127.779 62.472C128.371 62.28 129.027 62.184 129.747 62.184C130.355 62.184 130.891 62.232 131.355 62.328C131.835 62.408 132.267 62.536 132.651 62.712C133.035 62.872 133.387 63.08 133.707 63.336C134.027 63.576 134.339 63.848 134.643 64.152L132.843 65.952C132.475 65.568 132.035 65.248 131.523 64.992C131.011 64.736 130.451 64.608 129.843 64.608C129.171 64.608 128.683 64.728 128.379 64.968C128.091 65.208 127.947 65.52 127.947 65.904C127.947 66.32 128.067 66.64 128.307 66.864C128.563 67.072 128.987 67.224 129.579 67.32L130.851 67.488C133.555 67.872 134.907 69.104 134.907 71.184C134.907 71.792 134.779 72.352 134.523 72.864C134.283 73.36 133.939 73.792 133.491 74.16C133.043 74.512 132.499 74.792 131.859 75C131.235 75.192 130.531 75.288 129.747 75.288ZM141.344 75C140.288 75 139.48 74.728 138.92 74.184C138.376 73.624 138.104 72.832 138.104 71.808V64.92H136.256V62.472H137.216C137.68 62.472 137.992 62.368 138.152 62.16C138.328 61.936 138.416 61.608 138.416 61.176V59.04H141.176V62.472H143.744V64.92H141.176V72.552H143.552V75H141.344ZM153.897 72.912H153.777C153.665 73.232 153.513 73.536 153.321 73.824C153.145 74.096 152.913 74.344 152.625 74.568C152.353 74.792 152.017 74.968 151.617 75.096C151.233 75.224 150.785 75.288 150.273 75.288C148.977 75.288 147.985 74.864 147.297 74.016C146.609 73.168 146.265 71.96 146.265 70.392V62.472H149.337V70.08C149.337 70.944 149.505 71.608 149.841 72.072C150.177 72.52 150.713 72.744 151.449 72.744C151.753 72.744 152.049 72.704 152.337 72.624C152.641 72.544 152.905 72.424 153.129 72.264C153.353 72.088 153.537 71.88 153.681 71.64C153.825 71.384 153.897 71.088 153.897 70.752V62.472H156.969V75H153.897V72.912ZM160.518 75V62.472H163.59V65.064H163.71C163.79 64.728 163.91 64.408 164.07 64.104C164.246 63.784 164.47 63.504 164.742 63.264C165.014 63.024 165.334 62.832 165.702 62.688C166.086 62.544 166.526 62.472 167.022 62.472H167.694V65.376H166.734C165.694 65.376 164.91 65.528 164.382 65.832C163.854 66.136 163.59 66.632 163.59 67.32V75H160.518ZM169.94 57.24H173.012V64.536H173.108C173.332 63.816 173.756 63.248 174.38 62.832C175.004 62.4 175.732 62.184 176.564 62.184C178.164 62.184 179.38 62.752 180.212 63.888C181.06 65.008 181.484 66.616 181.484 68.712C181.484 70.824 181.06 72.448 180.212 73.584C179.38 74.72 178.164 75.288 176.564 75.288C175.732 75.288 175.004 75.072 174.38 74.64C173.772 74.208 173.348 73.632 173.108 72.912H173.012V75H169.94V57.24ZM175.58 72.744C176.38 72.744 177.028 72.48 177.524 71.952C178.02 71.424 178.268 70.712 178.268 69.816V67.656C178.268 66.76 178.02 66.048 177.524 65.52C177.028 64.976 176.38 64.704 175.58 64.704C174.844 64.704 174.228 64.888 173.732 65.256C173.252 65.624 173.012 66.112 173.012 66.72V70.704C173.012 71.36 173.252 71.864 173.732 72.216C174.228 72.568 174.844 72.744 175.58 72.744ZM191.8 62.472H194.68L189.64 77.232C189.48 77.68 189.296 78.064 189.088 78.384C188.896 78.72 188.664 78.992 188.392 79.2C188.12 79.408 187.792 79.56 187.408 79.656C187.024 79.752 186.576 79.8 186.064 79.8H184.216V77.352H186.472L187.048 75.6L182.56 62.472H185.608L187.792 69.096L188.608 72.264H188.752L189.616 69.096L191.8 62.472ZM207.424 76.056C207.424 76.712 207.304 77.288 207.064 77.784C206.84 78.296 206.464 78.72 205.936 79.056C205.408 79.392 204.728 79.648 203.896 79.824C203.064 80 202.048 80.088 200.848 80.088C199.792 80.088 198.896 80.016 198.16 79.872C197.424 79.744 196.816 79.552 196.336 79.296C195.872 79.056 195.536 78.752 195.328 78.384C195.12 78.016 195.016 77.6 195.016 77.136C195.016 76.432 195.208 75.88 195.592 75.48C195.992 75.096 196.544 74.848 197.248 74.736V74.472C196.736 74.344 196.336 74.096 196.048 73.728C195.776 73.344 195.64 72.896 195.64 72.384C195.64 72.064 195.704 71.784 195.832 71.544C195.96 71.288 196.128 71.072 196.336 70.896C196.56 70.72 196.808 70.576 197.08 70.464C197.352 70.336 197.64 70.24 197.944 70.176V70.08C197.176 69.728 196.6 69.24 196.216 68.616C195.848 67.992 195.664 67.264 195.664 66.432C195.664 65.152 196.104 64.128 196.984 63.36C197.864 62.576 199.152 62.184 200.848 62.184C201.232 62.184 201.608 62.208 201.976 62.256C202.36 62.304 202.712 62.384 203.032 62.496V62.088C203.032 60.872 203.624 60.264 204.808 60.264H206.752V62.616H204.088V62.952C204.744 63.32 205.232 63.8 205.552 64.392C205.872 64.984 206.032 65.664 206.032 66.432C206.032 67.696 205.592 68.712 204.712 69.48C203.848 70.248 202.56 70.632 200.848 70.632C200.112 70.632 199.472 70.56 198.928 70.416C198.688 70.528 198.48 70.68 198.304 70.872C198.128 71.048 198.04 71.272 198.04 71.544C198.04 72.168 198.584 72.48 199.672 72.48H203.032C204.568 72.48 205.68 72.8 206.368 73.44C207.072 74.064 207.424 74.936 207.424 76.056ZM204.544 76.416C204.544 76.016 204.384 75.704 204.064 75.48C203.744 75.256 203.192 75.144 202.408 75.144H198.136C197.704 75.464 197.488 75.896 197.488 76.44C197.488 76.92 197.688 77.296 198.088 77.568C198.488 77.84 199.168 77.976 200.128 77.976H201.664C202.672 77.976 203.4 77.848 203.848 77.592C204.312 77.336 204.544 76.944 204.544 76.416ZM200.848 68.544C202.352 68.544 203.104 67.904 203.104 66.624V66.216C203.104 64.936 202.352 64.296 200.848 64.296C199.344 64.296 198.592 64.936 198.592 66.216V66.624C198.592 67.904 199.344 68.544 200.848 68.544ZM220.643 76.056C220.643 76.712 220.523 77.288 220.283 77.784C220.059 78.296 219.683 78.72 219.155 79.056C218.627 79.392 217.947 79.648 217.115 79.824C216.283 80 215.267 80.088 214.067 80.088C213.011 80.088 212.115 80.016 211.379 79.872C210.643 79.744 210.035 79.552 209.555 79.296C209.091 79.056 208.755 78.752 208.547 78.384C208.339 78.016 208.235 77.6 208.235 77.136C208.235 76.432 208.427 75.88 208.811 75.48C209.211 75.096 209.763 74.848 210.467 74.736V74.472C209.955 74.344 209.555 74.096 209.267 73.728C208.995 73.344 208.859 72.896 208.859 72.384C208.859 72.064 208.923 71.784 209.051 71.544C209.179 71.288 209.347 71.072 209.555 70.896C209.779 70.72 210.027 70.576 210.299 70.464C210.571 70.336 210.859 70.24 211.163 70.176V70.08C210.395 69.728 209.819 69.24 209.435 68.616C209.067 67.992 208.883 67.264 208.883 66.432C208.883 65.152 209.323 64.128 210.203 63.36C211.083 62.576 212.371 62.184 214.067 62.184C214.451 62.184 214.827 62.208 215.195 62.256C215.579 62.304 215.931 62.384 216.251 62.496V62.088C216.251 60.872 216.843 60.264 218.027 60.264H219.971V62.616H217.307V62.952C217.963 63.32 218.451 63.8 218.771 64.392C219.091 64.984 219.251 65.664 219.251 66.432C219.251 67.696 218.811 68.712 217.931 69.48C217.067 70.248 215.779 70.632 214.067 70.632C213.331 70.632 212.691 70.56 212.147 70.416C211.907 70.528 211.699 70.68 211.523 70.872C211.347 71.048 211.259 71.272 211.259 71.544C211.259 72.168 211.803 72.48 212.891 72.48H216.251C217.787 72.48 218.899 72.8 219.587 73.44C220.291 74.064 220.643 74.936 220.643 76.056ZM217.763 76.416C217.763 76.016 217.603 75.704 217.283 75.48C216.963 75.256 216.411 75.144 215.627 75.144H211.355C210.923 75.464 210.707 75.896 210.707 76.44C210.707 76.92 210.907 77.296 211.307 77.568C211.707 77.84 212.387 77.976 213.347 77.976H214.883C215.891 77.976 216.619 77.848 217.067 77.592C217.531 77.336 217.763 76.944 217.763 76.416ZM214.067 68.544C215.571 68.544 216.323 67.904 216.323 66.624V66.216C216.323 64.936 215.571 64.296 214.067 64.296C212.563 64.296 211.811 64.936 211.811 66.216V66.624C211.811 67.904 212.563 68.544 214.067 68.544ZM231.564 58.224L229.788 59.376C230.892 60.528 231.78 61.856 232.452 63.36C233.124 64.864 233.46 66.536 233.46 68.376C233.46 69.56 233.316 70.592 233.028 71.472C232.74 72.336 232.332 73.056 231.804 73.632C231.292 74.192 230.676 74.608 229.956 74.88C229.236 75.152 228.436 75.288 227.556 75.288C226.612 75.288 225.764 75.144 225.012 74.856C224.276 74.552 223.644 74.128 223.116 73.584C222.604 73.04 222.212 72.376 221.94 71.592C221.668 70.808 221.532 69.936 221.532 68.976C221.532 68.08 221.644 67.264 221.868 66.528C222.108 65.792 222.444 65.16 222.876 64.632C223.308 64.104 223.828 63.696 224.436 63.408C225.06 63.12 225.748 62.976 226.5 62.976C227.364 62.976 228.084 63.192 228.66 63.624C229.252 64.04 229.716 64.608 230.052 65.328L230.196 65.256C230.004 64.44 229.66 63.664 229.164 62.928C228.684 62.192 228.1 61.488 227.412 60.816L225.348 62.112L224.244 60.792L226.116 59.664C225.556 59.2 224.964 58.768 224.34 58.368C223.732 57.968 223.116 57.592 222.492 57.24H227.172C227.396 57.368 227.612 57.52 227.82 57.696C228.028 57.856 228.244 58.024 228.468 58.2L230.484 56.928L231.564 58.224ZM227.508 72.936C228.356 72.936 229.028 72.664 229.524 72.12C230.02 71.576 230.268 70.816 230.268 69.84V68.448C230.268 67.472 230.02 66.712 229.524 66.168C229.028 65.624 228.356 65.352 227.508 65.352C226.644 65.352 225.964 65.624 225.468 66.168C224.972 66.712 224.724 67.472 224.724 68.448V69.84C224.724 70.816 224.972 71.576 225.468 72.12C225.964 72.664 226.644 72.936 227.508 72.936Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/vogar.svg b/libs/application/templates/financial-aid/src/svg/vogar.svg deleted file mode 100644 index 100d94ee4ded..000000000000 --- a/libs/application/templates/financial-aid/src/svg/vogar.svg +++ /dev/null @@ -1,14 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_2491:57868)"> -<path d="M16.0191 16L16.0003 62.2603C15.9626 72.8604 19.8035 81.5025 27.7301 88.5818C38.4997 98.2029 55.5013 98.7677 67.4947 88.6006C78.0572 79.2619 79.4505 69.9233 79.3375 62.1285L79.4128 16.0188L16.0191 16Z" fill="white"/> -<path d="M77.0405 49.4761C77.0405 49.4761 53.3926 26.0353 50.3048 23.117C47.4806 20.4434 45.0895 23.0605 45.0895 23.0605L18.4479 49.4761V18.5041H77.0405V49.4761ZM71.2603 53.4865C71.5992 55.7647 71.5992 59.3231 70.6955 61.4884C69.434 64.8774 66.1391 68.0028 63.1831 68.7559C54.4093 69.1513 50.9073 56.2165 42.7548 52.7145C44.1292 48.9489 48.5162 47.0661 52.4135 46.6896C59.5493 45.5599 62.3171 56.0847 69.2081 54.5785C70.093 54.2019 69.8294 52.6957 70.9591 53.0723C70.9779 53.2982 71.2227 53.2794 71.2603 53.4865ZM50.8885 69.0195C43.8657 68.3982 42.2465 59.3608 35.4684 57.6098C35.9767 55.9718 37.7277 54.9739 39.1022 54.5973C46.8781 54.7291 47.876 64.2561 54.3905 67.2497C54.1457 68.7748 52.037 69.0007 50.8885 69.0195ZM30.0836 61.7519C29.4623 59.7374 32.6254 59.0219 33.3408 59.116C38.3491 60.0009 39.3658 65.141 43.3761 67.7581C37.0876 72.145 34.8471 62.8816 30.0836 61.7519ZM29.82 68.3982L25.3013 64.2561C28.6903 61.1306 31.8158 65.7623 33.6986 67.7581C32.8325 68.5112 31.0815 69.1513 29.82 68.3982ZM22.5524 67.5133C22.7972 65.3857 25.6778 66.3836 26.431 67.7581C25.1883 68.643 23.8139 67.6451 22.5524 67.5133ZM16.0191 16L16.0003 62.2603C15.9626 72.8604 19.8035 81.5025 27.7301 88.5818C38.4997 98.2029 55.5013 98.7677 67.4947 88.6006C78.0572 79.2619 79.4505 69.9233 79.3375 62.1285L79.4128 16.0188L16.0191 16Z" fill="#0072BC"/> -</g> -<path d="M97.148 45V35.228H98.996V37.006H101.544C101.992 37.006 102.393 37.0807 102.748 37.23C103.112 37.3793 103.42 37.5893 103.672 37.86C103.924 38.1213 104.115 38.4387 104.246 38.812C104.377 39.176 104.442 39.582 104.442 40.03C104.442 40.478 104.377 40.8887 104.246 41.262C104.115 41.6353 103.924 41.9573 103.672 42.228C103.42 42.4893 103.112 42.6947 102.748 42.844C102.393 42.9933 101.992 43.068 101.544 43.068H98.996V45H97.148ZM98.996 41.444H101.376C101.731 41.444 102.011 41.3507 102.216 41.164C102.421 40.9773 102.524 40.7067 102.524 40.352V39.708C102.524 39.3533 102.421 39.0827 102.216 38.896C102.011 38.7093 101.731 38.616 101.376 38.616H98.996V41.444ZM106.005 37.692H107.797V45.882C107.797 46.498 107.643 46.9693 107.335 47.296C107.027 47.632 106.537 47.8 105.865 47.8H104.885V46.372H106.005V37.692ZM106.901 36.628C106.527 36.628 106.257 36.544 106.089 36.376C105.93 36.208 105.851 35.9933 105.851 35.732V35.452C105.851 35.1907 105.93 34.976 106.089 34.808C106.257 34.64 106.527 34.556 106.901 34.556C107.265 34.556 107.531 34.64 107.699 34.808C107.867 34.976 107.951 35.1907 107.951 35.452V35.732C107.951 35.9933 107.867 36.208 107.699 36.376C107.531 36.544 107.265 36.628 106.901 36.628ZM112.772 45.168C112.249 45.168 111.778 45.0793 111.358 44.902C110.947 44.7247 110.593 44.468 110.294 44.132C110.005 43.796 109.781 43.3947 109.622 42.928C109.463 42.452 109.384 41.92 109.384 41.332C109.384 40.744 109.463 40.2167 109.622 39.75C109.781 39.2833 110.005 38.8867 110.294 38.56C110.593 38.224 110.947 37.9673 111.358 37.79C111.778 37.6127 112.249 37.524 112.772 37.524C113.295 37.524 113.766 37.6127 114.186 37.79C114.606 37.9673 114.961 38.224 115.25 38.56C115.549 38.8867 115.777 39.2833 115.936 39.75C116.095 40.2167 116.174 40.744 116.174 41.332C116.174 41.92 116.095 42.452 115.936 42.928C115.777 43.3947 115.549 43.796 115.25 44.132C114.961 44.468 114.606 44.7247 114.186 44.902C113.766 45.0793 113.295 45.168 112.772 45.168ZM112.772 43.726C113.248 43.726 113.621 43.5813 113.892 43.292C114.163 43.0027 114.298 42.578 114.298 42.018V40.66C114.298 40.1093 114.163 39.6893 113.892 39.4C113.621 39.1107 113.248 38.966 112.772 38.966C112.305 38.966 111.937 39.1107 111.666 39.4C111.395 39.6893 111.26 40.1093 111.26 40.66V42.018C111.26 42.578 111.395 43.0027 111.666 43.292C111.937 43.5813 112.305 43.726 112.772 43.726ZM112.968 36.866L111.89 36.348L113.22 33.73L114.732 34.472L112.968 36.866ZM117.763 45V37.692H119.555V38.91H119.625C119.774 38.518 120.007 38.1913 120.325 37.93C120.651 37.6593 121.099 37.524 121.669 37.524C122.425 37.524 123.003 37.7713 123.405 38.266C123.806 38.7607 124.007 39.4653 124.007 40.38V45H122.215V40.562C122.215 40.0393 122.121 39.6473 121.935 39.386C121.748 39.1247 121.44 38.994 121.011 38.994C120.824 38.994 120.642 39.022 120.465 39.078C120.297 39.1247 120.143 39.1993 120.003 39.302C119.872 39.3953 119.765 39.5167 119.681 39.666C119.597 39.806 119.555 39.974 119.555 40.17V45H117.763ZM130.361 43.782H130.291C130.226 43.9687 130.137 44.146 130.025 44.314C129.922 44.4727 129.787 44.6173 129.619 44.748C129.46 44.8787 129.264 44.9813 129.031 45.056C128.807 45.1307 128.546 45.168 128.247 45.168C127.491 45.168 126.912 44.9207 126.511 44.426C126.11 43.9313 125.909 43.2267 125.909 42.312V37.692H127.701V42.13C127.701 42.634 127.799 43.0213 127.995 43.292C128.191 43.5533 128.504 43.684 128.933 43.684C129.11 43.684 129.283 43.6607 129.451 43.614C129.628 43.5673 129.782 43.4973 129.913 43.404C130.044 43.3013 130.151 43.18 130.235 43.04C130.319 42.8907 130.361 42.718 130.361 42.522V37.692H132.153V45H130.361V43.782ZM136.618 45.168C135.918 45.168 135.33 45.0513 134.854 44.818C134.378 44.5753 133.958 44.244 133.594 43.824L134.686 42.76C134.956 43.068 135.25 43.3107 135.568 43.488C135.894 43.6653 136.268 43.754 136.688 43.754C137.117 43.754 137.425 43.6793 137.612 43.53C137.808 43.3807 137.906 43.1753 137.906 42.914C137.906 42.6993 137.836 42.5313 137.696 42.41C137.565 42.2793 137.336 42.1907 137.01 42.144L136.282 42.046C135.488 41.9433 134.882 41.7193 134.462 41.374C134.051 41.0193 133.846 40.506 133.846 39.834C133.846 39.4793 133.911 39.162 134.042 38.882C134.172 38.5927 134.359 38.35 134.602 38.154C134.844 37.9487 135.134 37.7947 135.47 37.692C135.815 37.58 136.198 37.524 136.618 37.524C136.972 37.524 137.285 37.552 137.556 37.608C137.836 37.6547 138.088 37.7293 138.312 37.832C138.536 37.9253 138.741 38.0467 138.928 38.196C139.114 38.336 139.296 38.4947 139.474 38.672L138.424 39.722C138.209 39.498 137.952 39.3113 137.654 39.162C137.355 39.0127 137.028 38.938 136.674 38.938C136.282 38.938 135.997 39.008 135.82 39.148C135.652 39.288 135.568 39.47 135.568 39.694C135.568 39.9367 135.638 40.1233 135.778 40.254C135.927 40.3753 136.174 40.464 136.52 40.52L137.262 40.618C138.839 40.842 139.628 41.5607 139.628 42.774C139.628 43.1287 139.553 43.4553 139.404 43.754C139.264 44.0433 139.063 44.2953 138.802 44.51C138.54 44.7153 138.223 44.8787 137.85 45C137.486 45.112 137.075 45.168 136.618 45.168ZM143.382 45C142.766 45 142.295 44.8413 141.968 44.524C141.651 44.1973 141.492 43.7353 141.492 43.138V39.12H140.414V37.692H140.974C141.245 37.692 141.427 37.6313 141.52 37.51C141.623 37.3793 141.674 37.188 141.674 36.936V35.69H143.284V37.692H144.782V39.12H143.284V43.572H144.67V45H143.382ZM150.705 43.782H150.635C150.569 43.9687 150.481 44.146 150.369 44.314C150.266 44.4727 150.131 44.6173 149.963 44.748C149.804 44.8787 149.608 44.9813 149.375 45.056C149.151 45.1307 148.889 45.168 148.591 45.168C147.835 45.168 147.256 44.9207 146.855 44.426C146.453 43.9313 146.253 43.2267 146.253 42.312V37.692H148.045V42.13C148.045 42.634 148.143 43.0213 148.339 43.292C148.535 43.5533 148.847 43.684 149.277 43.684C149.454 43.684 149.627 43.6607 149.795 43.614C149.972 43.5673 150.126 43.4973 150.257 43.404C150.387 43.3013 150.495 43.18 150.579 43.04C150.663 42.8907 150.705 42.718 150.705 42.522V37.692H152.497V45H150.705V43.782ZM159.943 45C159.551 45 159.239 44.888 159.005 44.664C158.781 44.4307 158.641 44.1227 158.585 43.74H158.501C158.38 44.216 158.133 44.5753 157.759 44.818C157.386 45.0513 156.924 45.168 156.373 45.168C155.627 45.168 155.053 44.972 154.651 44.58C154.25 44.188 154.049 43.6653 154.049 43.012C154.049 42.256 154.32 41.696 154.861 41.332C155.403 40.9587 156.173 40.772 157.171 40.772H158.417V40.24C158.417 39.8293 158.31 39.512 158.095 39.288C157.881 39.064 157.535 38.952 157.059 38.952C156.639 38.952 156.299 39.0453 156.037 39.232C155.785 39.4093 155.571 39.624 155.393 39.876L154.329 38.924C154.6 38.504 154.959 38.168 155.407 37.916C155.855 37.6547 156.448 37.524 157.185 37.524C158.175 37.524 158.926 37.748 159.439 38.196C159.953 38.644 160.209 39.288 160.209 40.128V43.572H160.937V45H159.943ZM156.975 43.866C157.377 43.866 157.717 43.7773 157.997 43.6C158.277 43.4227 158.417 43.1613 158.417 42.816V41.85H157.269C156.336 41.85 155.869 42.1487 155.869 42.746V42.984C155.869 43.2827 155.963 43.5067 156.149 43.656C156.345 43.796 156.621 43.866 156.975 43.866ZM167.806 35.214L166.77 35.886C167.414 36.558 167.932 37.3327 168.324 38.21C168.716 39.0873 168.912 40.0627 168.912 41.136C168.912 41.8267 168.828 42.4287 168.66 42.942C168.492 43.446 168.254 43.866 167.946 44.202C167.647 44.5287 167.288 44.7713 166.868 44.93C166.448 45.0887 165.981 45.168 165.468 45.168C164.917 45.168 164.422 45.084 163.984 44.916C163.554 44.7387 163.186 44.4913 162.878 44.174C162.579 43.8567 162.35 43.4693 162.192 43.012C162.033 42.5547 161.954 42.046 161.954 41.486C161.954 40.9633 162.019 40.4873 162.15 40.058C162.29 39.6287 162.486 39.26 162.738 38.952C162.99 38.644 163.293 38.406 163.648 38.238C164.012 38.07 164.413 37.986 164.852 37.986C165.356 37.986 165.776 38.112 166.112 38.364C166.457 38.6067 166.728 38.938 166.924 39.358L167.008 39.316C166.896 38.84 166.695 38.3873 166.406 37.958C166.126 37.5287 165.785 37.118 165.384 36.726L164.18 37.482L163.536 36.712L164.628 36.054C164.301 35.7833 163.956 35.5313 163.592 35.298C163.237 35.0647 162.878 34.8453 162.514 34.64H165.244C165.374 34.7147 165.5 34.8033 165.622 34.906C165.743 34.9993 165.869 35.0973 166 35.2L167.176 34.458L167.806 35.214ZM165.44 43.796C165.934 43.796 166.326 43.6373 166.616 43.32C166.905 43.0027 167.05 42.5593 167.05 41.99V41.178C167.05 40.6087 166.905 40.1653 166.616 39.848C166.326 39.5307 165.934 39.372 165.44 39.372C164.936 39.372 164.539 39.5307 164.25 39.848C163.96 40.1653 163.816 40.6087 163.816 41.178V41.99C163.816 42.5593 163.96 43.0027 164.25 43.32C164.539 43.6373 164.936 43.796 165.44 43.796ZM171.528 36.628C171.154 36.628 170.884 36.544 170.716 36.376C170.557 36.208 170.478 35.9933 170.478 35.732V35.452C170.478 35.1907 170.557 34.976 170.716 34.808C170.884 34.64 171.154 34.556 171.528 34.556C171.892 34.556 172.158 34.64 172.326 34.808C172.494 34.976 172.578 35.1907 172.578 35.452V35.732C172.578 35.9933 172.494 36.208 172.326 36.376C172.158 36.544 171.892 36.628 171.528 36.628ZM170.632 37.692H172.424V45H170.632V37.692ZM176.293 45C175.677 45 175.224 44.846 174.935 44.538C174.646 44.23 174.501 43.796 174.501 43.236V34.64H176.293V43.572H177.259V45H176.293ZM179.512 36.628C179.139 36.628 178.868 36.544 178.7 36.376C178.541 36.208 178.462 35.9933 178.462 35.732V35.452C178.462 35.1907 178.541 34.976 178.7 34.808C178.868 34.64 179.139 34.556 179.512 34.556C179.876 34.556 180.142 34.64 180.31 34.808C180.478 34.976 180.562 35.1907 180.562 35.452V35.732C180.562 35.9933 180.478 36.208 180.31 36.376C180.142 36.544 179.876 36.628 179.512 36.628ZM178.616 37.692H180.408V45H178.616V37.692Z" fill="#421C63"/> -<path d="M198 33.75C194.554 33.75 191.75 36.5538 191.75 40C191.75 43.4462 194.554 46.25 198 46.25C201.446 46.25 204.25 43.4462 204.25 40C204.25 36.5538 201.446 33.75 198 33.75ZM198 36.3125C198.449 36.3125 198.812 36.6763 198.812 37.125C198.812 37.5737 198.449 37.9375 198 37.9375C197.551 37.9375 197.188 37.5737 197.188 37.125C197.188 36.6763 197.551 36.3125 198 36.3125ZM199.5 43.375H196.75C196.474 43.375 196.25 43.1511 196.25 42.875C196.25 42.5989 196.474 42.375 196.75 42.375H197.625V39.625H197.125C196.849 39.625 196.625 39.4011 196.625 39.125C196.625 38.8489 196.849 38.625 197.125 38.625H198.125C198.401 38.625 198.625 38.8489 198.625 39.125V42.375H199.5C199.776 42.375 200 42.5989 200 42.875C200 43.1511 199.776 43.375 199.5 43.375Z" fill="#C3ABD9"/> -<path d="M101.856 75L96.384 58.248H99.624L102.192 66.408L103.68 71.976H103.752L105.216 66.408L107.784 58.248H110.928L105.456 75H101.856ZM117.228 75.288C116.332 75.288 115.524 75.136 114.804 74.832C114.1 74.528 113.492 74.088 112.98 73.512C112.484 72.936 112.1 72.248 111.828 71.448C111.556 70.632 111.42 69.72 111.42 68.712C111.42 67.704 111.556 66.8 111.828 66C112.1 65.2 112.484 64.52 112.98 63.96C113.492 63.384 114.1 62.944 114.804 62.64C115.524 62.336 116.332 62.184 117.228 62.184C118.124 62.184 118.932 62.336 119.652 62.64C120.372 62.944 120.98 63.384 121.476 63.96C121.988 64.52 122.38 65.2 122.652 66C122.924 66.8 123.06 67.704 123.06 68.712C123.06 69.72 122.924 70.632 122.652 71.448C122.38 72.248 121.988 72.936 121.476 73.512C120.98 74.088 120.372 74.528 119.652 74.832C118.932 75.136 118.124 75.288 117.228 75.288ZM117.228 72.816C118.044 72.816 118.684 72.568 119.148 72.072C119.612 71.576 119.844 70.848 119.844 69.888V67.56C119.844 66.616 119.612 65.896 119.148 65.4C118.684 64.904 118.044 64.656 117.228 64.656C116.428 64.656 115.796 64.904 115.332 65.4C114.868 65.896 114.636 66.616 114.636 67.56V69.888C114.636 70.848 114.868 71.576 115.332 72.072C115.796 72.568 116.428 72.816 117.228 72.816ZM137.088 76.056C137.088 76.712 136.968 77.288 136.728 77.784C136.504 78.296 136.128 78.72 135.6 79.056C135.072 79.392 134.392 79.648 133.56 79.824C132.728 80 131.712 80.088 130.512 80.088C129.456 80.088 128.56 80.016 127.824 79.872C127.088 79.744 126.48 79.552 126 79.296C125.536 79.056 125.2 78.752 124.992 78.384C124.784 78.016 124.68 77.6 124.68 77.136C124.68 76.432 124.872 75.88 125.256 75.48C125.656 75.096 126.208 74.848 126.912 74.736V74.472C126.4 74.344 126 74.096 125.712 73.728C125.44 73.344 125.304 72.896 125.304 72.384C125.304 72.064 125.368 71.784 125.496 71.544C125.624 71.288 125.792 71.072 126 70.896C126.224 70.72 126.472 70.576 126.744 70.464C127.016 70.336 127.304 70.24 127.608 70.176V70.08C126.84 69.728 126.264 69.24 125.88 68.616C125.512 67.992 125.328 67.264 125.328 66.432C125.328 65.152 125.768 64.128 126.648 63.36C127.528 62.576 128.816 62.184 130.512 62.184C130.896 62.184 131.272 62.208 131.64 62.256C132.024 62.304 132.376 62.384 132.696 62.496V62.088C132.696 60.872 133.288 60.264 134.472 60.264H136.416V62.616H133.752V62.952C134.408 63.32 134.896 63.8 135.216 64.392C135.536 64.984 135.696 65.664 135.696 66.432C135.696 67.696 135.256 68.712 134.376 69.48C133.512 70.248 132.224 70.632 130.512 70.632C129.776 70.632 129.136 70.56 128.592 70.416C128.352 70.528 128.144 70.68 127.968 70.872C127.792 71.048 127.704 71.272 127.704 71.544C127.704 72.168 128.248 72.48 129.336 72.48H132.696C134.232 72.48 135.344 72.8 136.032 73.44C136.736 74.064 137.088 74.936 137.088 76.056ZM134.208 76.416C134.208 76.016 134.048 75.704 133.728 75.48C133.408 75.256 132.856 75.144 132.072 75.144H127.8C127.368 75.464 127.152 75.896 127.152 76.44C127.152 76.92 127.352 77.296 127.752 77.568C128.152 77.84 128.832 77.976 129.792 77.976H131.328C132.336 77.976 133.064 77.848 133.512 77.592C133.976 77.336 134.208 76.944 134.208 76.416ZM130.512 68.544C132.016 68.544 132.768 67.904 132.768 66.624V66.216C132.768 64.936 132.016 64.296 130.512 64.296C129.008 64.296 128.256 64.936 128.256 66.216V66.624C128.256 67.904 129.008 68.544 130.512 68.544ZM148.031 75C147.359 75 146.823 74.808 146.423 74.424C146.039 74.024 145.799 73.496 145.703 72.84H145.559C145.351 73.656 144.927 74.272 144.287 74.688C143.647 75.088 142.855 75.288 141.911 75.288C140.631 75.288 139.647 74.952 138.959 74.28C138.271 73.608 137.927 72.712 137.927 71.592C137.927 70.296 138.391 69.336 139.319 68.712C140.247 68.072 141.567 67.752 143.279 67.752H145.415V66.84C145.415 66.136 145.231 65.592 144.863 65.208C144.495 64.824 143.903 64.632 143.087 64.632C142.367 64.632 141.783 64.792 141.335 65.112C140.903 65.416 140.535 65.784 140.231 66.216L138.407 64.584C138.871 63.864 139.487 63.288 140.255 62.856C141.023 62.408 142.039 62.184 143.303 62.184C144.999 62.184 146.287 62.568 147.167 63.336C148.047 64.104 148.487 65.208 148.487 66.648V72.552H149.735V75H148.031ZM142.943 73.056C143.631 73.056 144.215 72.904 144.695 72.6C145.175 72.296 145.415 71.848 145.415 71.256V69.6H143.447C141.847 69.6 141.047 70.112 141.047 71.136V71.544C141.047 72.056 141.207 72.44 141.527 72.696C141.863 72.936 142.335 73.056 142.943 73.056ZM152.221 75V62.472H155.293V65.064H155.413C155.493 64.728 155.613 64.408 155.773 64.104C155.949 63.784 156.173 63.504 156.445 63.264C156.717 63.024 157.037 62.832 157.405 62.688C157.789 62.544 158.229 62.472 158.725 62.472H159.397V65.376H158.437C157.397 65.376 156.613 65.528 156.085 65.832C155.557 66.136 155.293 66.632 155.293 67.32V75H152.221Z" fill="#421C63"/> -<defs> -<clipPath id="clip0_2491:57868"> -<rect width="80" height="80" fill="white" transform="translate(8 16)"/> -</clipPath> -</defs> -</svg> diff --git a/libs/application/templates/financial-aid/src/svg/vopnafjardarhreppur.svg b/libs/application/templates/financial-aid/src/svg/vopnafjardarhreppur.svg deleted file mode 100644 index c17bad9fc651..000000000000 --- a/libs/application/templates/financial-aid/src/svg/vopnafjardarhreppur.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="318" height="112" viewBox="0 0 318 112" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M79.3525 17.9753H16V63.1285C16 80.7642 30.1554 93.0371 47.6762 93.0371C65.1971 93.0371 79.3525 80.7642 79.3525 63.1285V17.9753Z" fill="white"/> -<path d="M16 16.9115V63.2361C16 80.7184 30.029 95.1513 47.5113 95.2215C65.0169 95.2917 79.2041 81.0813 79.2041 63.5932L79.2275 16.9115H16ZM47.3767 92.2659C31.5391 92.1196 18.8796 79.0094 18.8796 63.1777V19.7852L76.3362 19.7911L76.342 62.8733C76.342 79.021 63.5537 92.4122 47.3767 92.2659Z" fill="#1E45AB"/> -<path d="M61.3231 43.3602C65.3557 41.1888 69.1835 37.2792 69.1835 27.9381C67.8257 26.7442 65.1391 24.3446 64.8056 24.0402C66.6199 24.0344 70.2779 24.0344 71.8465 24.0344C71.9577 24.0344 72.0454 24.1222 72.0454 24.2275C72.0454 25.5268 72.0162 27.0134 72.0162 28.3128C72.0162 36.0794 72.0513 57.9512 72.0454 62.8675C72.0454 69.1533 70.0731 74.3916 66.9126 78.547C66.8248 78.6641 66.6433 78.5528 66.7077 78.4242C69.6458 72.7001 69.1542 64.4946 66.737 62.9318C66.6843 62.8968 66.6667 62.8265 66.7019 62.7738C69.757 57.9687 69.1835 49.2656 69.1776 48.5516C68.7328 50.9571 67.1701 54.9604 65.5723 57.3307C65.5196 57.4069 65.4084 57.401 65.3675 57.3191C64.7354 56.0139 62.7864 54.2522 61.1417 54.1644C61.0305 54.1586 60.9896 54.0122 61.0832 53.9478C65.9293 50.4947 69.1951 43.9982 69.1951 39.2515C68.487 41.9263 66.895 45.8711 62.0958 48.6043C62.008 48.657 61.8968 48.575 61.9202 48.4813C62.0372 47.9488 62.0196 47.0475 61.967 46.0408C61.9144 44.9814 61.4871 43.9396 61.2763 43.5065C61.2471 43.4539 61.2705 43.3895 61.3231 43.3602Z" fill="#1E45AB"/> -<path d="M26.1188 32.6261C31.4506 39.5851 40.6278 41.8092 42.05 38.1044C37.7716 39.1579 27.816 33.6797 26.1304 27.9264C27.4298 26.7734 29.2909 25.1112 30.4966 24.0402C29.7943 24.046 24.5502 24.0402 23.4674 24.0402C23.3621 24.0402 23.2743 24.128 23.2743 24.2333C23.2743 26.826 23.2626 54.6208 23.2626 57.9745C23.2626 62.7036 23.1104 64.8398 23.6372 67.8306C23.6547 67.9242 23.7893 67.9184 23.7952 67.8247C24.123 64.2253 25.3228 62.1007 26.0719 60.8716C26.8913 59.5196 28.7525 57.7053 31.1931 57.3424C31.2926 57.3248 31.3336 57.2078 31.2575 57.1434C29.7591 55.8382 26.1304 51.5599 26.1188 43.5416C28.1731 48.9379 31.0995 52.192 35.3368 55.3115C35.3954 55.3525 35.4773 55.3407 35.5183 55.2764C36.4488 53.661 38.7373 51.7355 40.8443 51.3024C40.9673 51.2789 40.9673 51.1034 40.8443 51.0682C32.4982 48.8735 26.1188 43.126 26.1188 32.6261Z" fill="#1E45AB"/> -<path d="M65.7309 33.6095C65.9883 33.7793 66.5092 34.0836 66.796 34.2767C67.3403 33.3286 67.674 31.4323 67.3052 30.3554C65.0578 32.6906 59.5035 38.0108 52.5504 36.571C49.7 35.9857 47.6867 34.9205 47.8799 33.6037C48.2076 31.3855 52.9717 31.6547 54.1599 32.1873C53.9901 31.4908 53.756 30.4373 53.5922 29.653C49.1265 31.6196 47.0136 29.8403 47.8975 28.383C49.5011 25.7317 53.8497 24.3972 56.2728 25.7726C56.103 25.0703 56.0094 24.4207 55.6231 23.3437C55.2602 22.4307 53.1825 22.2902 52.9483 22.659C52.7845 22.9223 52.9425 23.4374 53.0186 23.7534C52.2752 23.97 51.8188 24.0344 50.2561 24.5319C49.542 21.7752 47.0195 22.8989 43.6659 24.3797C41.8106 25.1991 39.7387 26.6916 35.3666 24.6021C34.0439 23.97 34.4244 26.5218 37.7195 27.1773C38.8491 27.3997 38.9895 28.0844 38.217 28.4707C37.9009 28.6287 37.7897 28.8863 37.8365 29.1438C37.8833 29.4248 38.2462 29.7057 38.7145 29.7818C39.5162 29.9047 40.0255 30.332 39.604 30.8938C39.4402 31.1103 39.329 31.4147 39.528 31.6956C39.727 31.9824 40.1717 32.0585 40.5054 32.1288C41.7754 32.3863 44.7838 34.8386 44.8189 37.209C44.8598 39.9422 40.722 43.7055 35.1677 41.6687C32.2998 40.6152 30.7312 39.4681 28.8525 38.0868C28.8291 39.4447 29.4963 40.8376 30.585 41.9731C30.702 41.856 31.3633 41.1596 31.4863 41.0308C32.5105 41.6863 33.1134 42.5115 32.2062 43.5124C32.9553 44.1737 33.7513 43.7757 34.1434 43.2958C35.3842 43.846 36.6074 44.5834 36.0749 46.1461C37.222 46.7021 39.0129 47.3108 40.2245 47.7147C40.2947 45.1863 44.3214 43.0617 46.6391 44.8585C48.1491 46.029 48.0555 48.7448 46.1709 51.6829C46.0128 51.9287 46.1182 52.274 46.2703 52.4086C46.5395 52.6544 45.9543 53.0817 45.7085 53.2455C44.9008 53.784 44.3272 53.7898 43.4728 54.1117C43.063 54.2639 42.8933 54.5156 42.9518 54.8082C42.9811 54.972 42.747 55.294 42.4485 55.3993C41.3775 55.7973 40.3298 55.9261 39.3114 56.2188C38.931 56.33 38.7495 56.5465 38.732 56.7455C38.7145 56.9561 38.7554 57.1083 38.416 57.3074C38.1174 57.483 36.5548 58.1325 34.4888 58.3609C34.1961 58.3901 33.9444 58.6125 33.8215 58.911C33.4469 59.8182 30.1694 60.9595 29.1334 61.8081C28.9169 61.9837 28.9286 62.3056 28.8408 62.5338C28.6243 63.084 27.7346 63.88 27.0967 65.7646C26.2305 68.3223 25.3292 72.5831 26.9914 75.6382C31.0063 83.0127 39.9493 82.6908 44.216 80.6774C48.354 78.7227 51.3623 76.9902 54.0838 77.5931C58.4266 78.5587 58.526 84.6983 52.5679 85.9859C51.4735 86.2201 49.2085 85.9332 47.6341 82.7376C45.9718 85.1723 41.2194 86.4483 38.1116 86.1088C44.7194 89.1347 50.0103 88.1163 52.328 87.6423C56.9751 86.7 59.2577 83.9667 59.7142 81.9358C61.0662 75.9484 54.8914 72.2905 48.1257 75.8255C42.8933 78.5587 38.5564 81.3798 32.8558 77.4877C30.0231 75.5562 29.432 71.8456 30.6962 68.6793C31.9896 65.4486 34.5531 63.8508 38.1408 63.4527C41.0907 63.1309 43.7244 64.2604 44.2336 65.9167C44.8306 67.8364 43.3322 68.5505 42.0212 68.5505C40.7102 68.5505 38.6793 67.8658 36.9644 66.4318C35.7178 69.5806 33.1368 71.3306 33.1368 71.3306L38.4745 75.9016L40.2947 74.3214L39.7679 72.8992L38.3984 73.262C38.3984 73.262 36.3675 71.711 36.8884 70.7745C37.4444 69.7796 39.2763 70.2654 42.0271 71.2018C45.7553 72.4719 49.2085 72.3958 50.7536 70.1249C52.3924 67.7194 51.5847 63.4118 49.9752 61.5214C53.7326 61.498 60.7793 62.3817 55.5119 70.8039C58.608 71.711 61.4114 74.3799 61.4114 74.3799L66.4507 69.2821L65.046 67.6492L63.5653 68.1993L63.7818 69.3933C63.7818 69.3933 61.9733 71.4886 60.7384 70.6165C59.9014 70.0196 60.1882 68.849 61.1071 67.696C65.9005 61.6911 61.4349 56.9387 56.3781 56.2422C59.2049 51.3609 59.1991 44.6478 56.501 39.8837C58.4266 38.7365 59.5035 39.2516 59.9542 39.9422C60.8847 39.4856 61.7041 38.9941 62.6112 38.4263C62.2308 37.5835 62.8981 36.4013 63.4892 36.0969C64.2091 36.6061 64.8704 36.6822 65.4616 36.0384C64.9816 35.734 63.8872 35.1371 65.7309 33.6095ZM46.4693 27.0368C44.8306 27.7626 43.2972 27.6982 42.39 27.0661C43.4142 26.7208 46.6333 25.4917 47.4585 25.1991C47.7219 25.7726 47.3648 26.6447 46.4693 27.0368ZM55.5177 42.0609C56.1616 42.9095 56.2903 44.3201 56.3781 45.2448C55.0436 45.6486 53.0771 45.9296 50.976 45.9296C52.6499 45.0224 54.593 43.6412 55.5177 42.0609ZM52.2694 38.6546C52.7903 38.9179 53.6682 39.6671 53.9609 40.1061C53.399 40.5977 51.9241 41.1596 50.8706 41.4463C51.6549 40.3519 52.0588 39.3979 52.2694 38.6546ZM54.0955 56.6811C52.8723 57.0908 50.8062 57.3074 49.3313 57.401C51.2803 56.5289 54.3765 54.82 55.8396 53.1987C55.5235 54.4103 54.7802 55.692 54.0955 56.6811ZM56.6181 47.264C56.7761 48.4462 56.5771 49.8276 56.4542 50.7991C55.1958 51.1736 52.404 51.5775 50.4551 51.5833C52.8605 50.4655 55.8748 48.6336 56.6181 47.264Z" fill="#1E45AB"/> -<path d="M51.9941 28.7341C55.9181 24.7425 59.9294 30.7475 62.6644 29.6295C61.4028 28.8804 60.2212 27.4582 60.0097 26.8963C63.2917 28.9214 66.0195 28.4063 67.8136 27.8504C65.4797 29.7057 62.2925 30.9289 60.1701 30.4138C57.0922 29.6647 56.5598 27.0075 51.9941 28.7341Z" fill="#F66868"/> -<path d="M97.148 31V21.228H98.996V23.006H101.544C101.992 23.006 102.393 23.0807 102.748 23.23C103.112 23.3793 103.42 23.5893 103.672 23.86C103.924 24.1213 104.115 24.4387 104.246 24.812C104.377 25.176 104.442 25.582 104.442 26.03C104.442 26.478 104.377 26.8887 104.246 27.262C104.115 27.6353 103.924 27.9573 103.672 28.228C103.42 28.4893 103.112 28.6947 102.748 28.844C102.393 28.9933 101.992 29.068 101.544 29.068H98.996V31H97.148ZM98.996 27.444H101.376C101.731 27.444 102.011 27.3507 102.216 27.164C102.421 26.9773 102.524 26.7067 102.524 26.352V25.708C102.524 25.3533 102.421 25.0827 102.216 24.896C102.011 24.7093 101.731 24.616 101.376 24.616H98.996V27.444ZM106.005 23.692H107.797V31.882C107.797 32.498 107.643 32.9693 107.335 33.296C107.027 33.632 106.537 33.8 105.865 33.8H104.885V32.372H106.005V23.692ZM106.901 22.628C106.527 22.628 106.257 22.544 106.089 22.376C105.93 22.208 105.851 21.9933 105.851 21.732V21.452C105.851 21.1907 105.93 20.976 106.089 20.808C106.257 20.64 106.527 20.556 106.901 20.556C107.265 20.556 107.531 20.64 107.699 20.808C107.867 20.976 107.951 21.1907 107.951 21.452V21.732C107.951 21.9933 107.867 22.208 107.699 22.376C107.531 22.544 107.265 22.628 106.901 22.628ZM112.772 31.168C112.249 31.168 111.778 31.0793 111.358 30.902C110.947 30.7247 110.593 30.468 110.294 30.132C110.005 29.796 109.781 29.3947 109.622 28.928C109.463 28.452 109.384 27.92 109.384 27.332C109.384 26.744 109.463 26.2167 109.622 25.75C109.781 25.2833 110.005 24.8867 110.294 24.56C110.593 24.224 110.947 23.9673 111.358 23.79C111.778 23.6127 112.249 23.524 112.772 23.524C113.295 23.524 113.766 23.6127 114.186 23.79C114.606 23.9673 114.961 24.224 115.25 24.56C115.549 24.8867 115.777 25.2833 115.936 25.75C116.095 26.2167 116.174 26.744 116.174 27.332C116.174 27.92 116.095 28.452 115.936 28.928C115.777 29.3947 115.549 29.796 115.25 30.132C114.961 30.468 114.606 30.7247 114.186 30.902C113.766 31.0793 113.295 31.168 112.772 31.168ZM112.772 29.726C113.248 29.726 113.621 29.5813 113.892 29.292C114.163 29.0027 114.298 28.578 114.298 28.018V26.66C114.298 26.1093 114.163 25.6893 113.892 25.4C113.621 25.1107 113.248 24.966 112.772 24.966C112.305 24.966 111.937 25.1107 111.666 25.4C111.395 25.6893 111.26 26.1093 111.26 26.66V28.018C111.26 28.578 111.395 29.0027 111.666 29.292C111.937 29.5813 112.305 29.726 112.772 29.726ZM112.968 22.866L111.89 22.348L113.22 19.73L114.732 20.472L112.968 22.866ZM117.763 31V23.692H119.555V24.91H119.625C119.774 24.518 120.007 24.1913 120.325 23.93C120.651 23.6593 121.099 23.524 121.669 23.524C122.425 23.524 123.003 23.7713 123.405 24.266C123.806 24.7607 124.007 25.4653 124.007 26.38V31H122.215V26.562C122.215 26.0393 122.121 25.6473 121.935 25.386C121.748 25.1247 121.44 24.994 121.011 24.994C120.824 24.994 120.642 25.022 120.465 25.078C120.297 25.1247 120.143 25.1993 120.003 25.302C119.872 25.3953 119.765 25.5167 119.681 25.666C119.597 25.806 119.555 25.974 119.555 26.17V31H117.763ZM130.361 29.782H130.291C130.226 29.9687 130.137 30.146 130.025 30.314C129.922 30.4727 129.787 30.6173 129.619 30.748C129.46 30.8787 129.264 30.9813 129.031 31.056C128.807 31.1307 128.546 31.168 128.247 31.168C127.491 31.168 126.912 30.9207 126.511 30.426C126.11 29.9313 125.909 29.2267 125.909 28.312V23.692H127.701V28.13C127.701 28.634 127.799 29.0213 127.995 29.292C128.191 29.5533 128.504 29.684 128.933 29.684C129.11 29.684 129.283 29.6607 129.451 29.614C129.628 29.5673 129.782 29.4973 129.913 29.404C130.044 29.3013 130.151 29.18 130.235 29.04C130.319 28.8907 130.361 28.718 130.361 28.522V23.692H132.153V31H130.361V29.782ZM136.618 31.168C135.918 31.168 135.33 31.0513 134.854 30.818C134.378 30.5753 133.958 30.244 133.594 29.824L134.686 28.76C134.956 29.068 135.25 29.3107 135.568 29.488C135.894 29.6653 136.268 29.754 136.688 29.754C137.117 29.754 137.425 29.6793 137.612 29.53C137.808 29.3807 137.906 29.1753 137.906 28.914C137.906 28.6993 137.836 28.5313 137.696 28.41C137.565 28.2793 137.336 28.1907 137.01 28.144L136.282 28.046C135.488 27.9433 134.882 27.7193 134.462 27.374C134.051 27.0193 133.846 26.506 133.846 25.834C133.846 25.4793 133.911 25.162 134.042 24.882C134.172 24.5927 134.359 24.35 134.602 24.154C134.844 23.9487 135.134 23.7947 135.47 23.692C135.815 23.58 136.198 23.524 136.618 23.524C136.972 23.524 137.285 23.552 137.556 23.608C137.836 23.6547 138.088 23.7293 138.312 23.832C138.536 23.9253 138.741 24.0467 138.928 24.196C139.114 24.336 139.296 24.4947 139.474 24.672L138.424 25.722C138.209 25.498 137.952 25.3113 137.654 25.162C137.355 25.0127 137.028 24.938 136.674 24.938C136.282 24.938 135.997 25.008 135.82 25.148C135.652 25.288 135.568 25.47 135.568 25.694C135.568 25.9367 135.638 26.1233 135.778 26.254C135.927 26.3753 136.174 26.464 136.52 26.52L137.262 26.618C138.839 26.842 139.628 27.5607 139.628 28.774C139.628 29.1287 139.553 29.4553 139.404 29.754C139.264 30.0433 139.063 30.2953 138.802 30.51C138.54 30.7153 138.223 30.8787 137.85 31C137.486 31.112 137.075 31.168 136.618 31.168ZM143.382 31C142.766 31 142.295 30.8413 141.968 30.524C141.651 30.1973 141.492 29.7353 141.492 29.138V25.12H140.414V23.692H140.974C141.245 23.692 141.427 23.6313 141.52 23.51C141.623 23.3793 141.674 23.188 141.674 22.936V21.69H143.284V23.692H144.782V25.12H143.284V29.572H144.67V31H143.382ZM150.705 29.782H150.635C150.569 29.9687 150.481 30.146 150.369 30.314C150.266 30.4727 150.131 30.6173 149.963 30.748C149.804 30.8787 149.608 30.9813 149.375 31.056C149.151 31.1307 148.889 31.168 148.591 31.168C147.835 31.168 147.256 30.9207 146.855 30.426C146.453 29.9313 146.253 29.2267 146.253 28.312V23.692H148.045V28.13C148.045 28.634 148.143 29.0213 148.339 29.292C148.535 29.5533 148.847 29.684 149.277 29.684C149.454 29.684 149.627 29.6607 149.795 29.614C149.972 29.5673 150.126 29.4973 150.257 29.404C150.387 29.3013 150.495 29.18 150.579 29.04C150.663 28.8907 150.705 28.718 150.705 28.522V23.692H152.497V31H150.705V29.782ZM159.943 31C159.551 31 159.239 30.888 159.005 30.664C158.781 30.4307 158.641 30.1227 158.585 29.74H158.501C158.38 30.216 158.133 30.5753 157.759 30.818C157.386 31.0513 156.924 31.168 156.373 31.168C155.627 31.168 155.053 30.972 154.651 30.58C154.25 30.188 154.049 29.6653 154.049 29.012C154.049 28.256 154.32 27.696 154.861 27.332C155.403 26.9587 156.173 26.772 157.171 26.772H158.417V26.24C158.417 25.8293 158.31 25.512 158.095 25.288C157.881 25.064 157.535 24.952 157.059 24.952C156.639 24.952 156.299 25.0453 156.037 25.232C155.785 25.4093 155.571 25.624 155.393 25.876L154.329 24.924C154.6 24.504 154.959 24.168 155.407 23.916C155.855 23.6547 156.448 23.524 157.185 23.524C158.175 23.524 158.926 23.748 159.439 24.196C159.953 24.644 160.209 25.288 160.209 26.128V29.572H160.937V31H159.943ZM156.975 29.866C157.377 29.866 157.717 29.7773 157.997 29.6C158.277 29.4227 158.417 29.1613 158.417 28.816V27.85H157.269C156.336 27.85 155.869 28.1487 155.869 28.746V28.984C155.869 29.2827 155.963 29.5067 156.149 29.656C156.345 29.796 156.621 29.866 156.975 29.866ZM167.806 21.214L166.77 21.886C167.414 22.558 167.932 23.3327 168.324 24.21C168.716 25.0873 168.912 26.0627 168.912 27.136C168.912 27.8267 168.828 28.4287 168.66 28.942C168.492 29.446 168.254 29.866 167.946 30.202C167.647 30.5287 167.288 30.7713 166.868 30.93C166.448 31.0887 165.981 31.168 165.468 31.168C164.917 31.168 164.422 31.084 163.984 30.916C163.554 30.7387 163.186 30.4913 162.878 30.174C162.579 29.8567 162.35 29.4693 162.192 29.012C162.033 28.5547 161.954 28.046 161.954 27.486C161.954 26.9633 162.019 26.4873 162.15 26.058C162.29 25.6287 162.486 25.26 162.738 24.952C162.99 24.644 163.293 24.406 163.648 24.238C164.012 24.07 164.413 23.986 164.852 23.986C165.356 23.986 165.776 24.112 166.112 24.364C166.457 24.6067 166.728 24.938 166.924 25.358L167.008 25.316C166.896 24.84 166.695 24.3873 166.406 23.958C166.126 23.5287 165.785 23.118 165.384 22.726L164.18 23.482L163.536 22.712L164.628 22.054C164.301 21.7833 163.956 21.5313 163.592 21.298C163.237 21.0647 162.878 20.8453 162.514 20.64H165.244C165.374 20.7147 165.5 20.8033 165.622 20.906C165.743 20.9993 165.869 21.0973 166 21.2L167.176 20.458L167.806 21.214ZM165.44 29.796C165.934 29.796 166.326 29.6373 166.616 29.32C166.905 29.0027 167.05 28.5593 167.05 27.99V27.178C167.05 26.6087 166.905 26.1653 166.616 25.848C166.326 25.5307 165.934 25.372 165.44 25.372C164.936 25.372 164.539 25.5307 164.25 25.848C163.96 26.1653 163.816 26.6087 163.816 27.178V27.99C163.816 28.5593 163.96 29.0027 164.25 29.32C164.539 29.6373 164.936 29.796 165.44 29.796ZM171.528 22.628C171.154 22.628 170.884 22.544 170.716 22.376C170.557 22.208 170.478 21.9933 170.478 21.732V21.452C170.478 21.1907 170.557 20.976 170.716 20.808C170.884 20.64 171.154 20.556 171.528 20.556C171.892 20.556 172.158 20.64 172.326 20.808C172.494 20.976 172.578 21.1907 172.578 21.452V21.732C172.578 21.9933 172.494 22.208 172.326 22.376C172.158 22.544 171.892 22.628 171.528 22.628ZM170.632 23.692H172.424V31H170.632V23.692ZM176.293 31C175.677 31 175.224 30.846 174.935 30.538C174.646 30.23 174.501 29.796 174.501 29.236V20.64H176.293V29.572H177.259V31H176.293ZM179.512 22.628C179.139 22.628 178.868 22.544 178.7 22.376C178.541 22.208 178.462 21.9933 178.462 21.732V21.452C178.462 21.1907 178.541 20.976 178.7 20.808C178.868 20.64 179.139 20.556 179.512 20.556C179.876 20.556 180.142 20.64 180.31 20.808C180.478 20.976 180.562 21.1907 180.562 21.452V21.732C180.562 21.9933 180.478 22.208 180.31 22.376C180.142 22.544 179.876 22.628 179.512 22.628ZM178.616 23.692H180.408V31H178.616V23.692Z" fill="#421C63"/> -<path d="M198 19.75C194.554 19.75 191.75 22.5538 191.75 26C191.75 29.4462 194.554 32.25 198 32.25C201.446 32.25 204.25 29.4462 204.25 26C204.25 22.5538 201.446 19.75 198 19.75ZM198 22.3125C198.449 22.3125 198.812 22.6763 198.812 23.125C198.812 23.5737 198.449 23.9375 198 23.9375C197.551 23.9375 197.188 23.5737 197.188 23.125C197.188 22.6763 197.551 22.3125 198 22.3125ZM199.5 29.375H196.75C196.474 29.375 196.25 29.1511 196.25 28.875C196.25 28.5989 196.474 28.375 196.75 28.375H197.625V25.625H197.125C196.849 25.625 196.625 25.4011 196.625 25.125C196.625 24.8489 196.849 24.625 197.125 24.625H198.125C198.401 24.625 198.625 24.8489 198.625 25.125V28.375H199.5C199.776 28.375 200 28.5989 200 28.875C200 29.1511 199.776 29.375 199.5 29.375Z" fill="#C3ABD9"/> -<path d="M101.856 61L96.384 44.248H99.624L102.192 52.408L103.68 57.976H103.752L105.216 52.408L107.784 44.248H110.928L105.456 61H101.856ZM117.228 61.288C116.332 61.288 115.524 61.136 114.804 60.832C114.1 60.528 113.492 60.088 112.98 59.512C112.484 58.936 112.1 58.248 111.828 57.448C111.556 56.632 111.42 55.72 111.42 54.712C111.42 53.704 111.556 52.8 111.828 52C112.1 51.2 112.484 50.52 112.98 49.96C113.492 49.384 114.1 48.944 114.804 48.64C115.524 48.336 116.332 48.184 117.228 48.184C118.124 48.184 118.932 48.336 119.652 48.64C120.372 48.944 120.98 49.384 121.476 49.96C121.988 50.52 122.38 51.2 122.652 52C122.924 52.8 123.06 53.704 123.06 54.712C123.06 55.72 122.924 56.632 122.652 57.448C122.38 58.248 121.988 58.936 121.476 59.512C120.98 60.088 120.372 60.528 119.652 60.832C118.932 61.136 118.124 61.288 117.228 61.288ZM117.228 58.816C118.044 58.816 118.684 58.568 119.148 58.072C119.612 57.576 119.844 56.848 119.844 55.888V53.56C119.844 52.616 119.612 51.896 119.148 51.4C118.684 50.904 118.044 50.656 117.228 50.656C116.428 50.656 115.796 50.904 115.332 51.4C114.868 51.896 114.636 52.616 114.636 53.56V55.888C114.636 56.848 114.868 57.576 115.332 58.072C115.796 58.568 116.428 58.816 117.228 58.816ZM125.784 48.472H128.856V50.536H128.952C129.176 49.816 129.6 49.248 130.224 48.832C130.848 48.4 131.576 48.184 132.408 48.184C134.008 48.184 135.224 48.752 136.056 49.888C136.904 51.008 137.328 52.616 137.328 54.712C137.328 56.824 136.904 58.448 136.056 59.584C135.224 60.72 134.008 61.288 132.408 61.288C131.576 61.288 130.848 61.072 130.224 60.64C129.616 60.208 129.192 59.632 128.952 58.912H128.856V65.8H125.784V48.472ZM131.424 58.744C132.224 58.744 132.872 58.48 133.368 57.952C133.864 57.424 134.112 56.712 134.112 55.816V53.656C134.112 52.76 133.864 52.048 133.368 51.52C132.872 50.976 132.224 50.704 131.424 50.704C130.688 50.704 130.072 50.888 129.576 51.256C129.096 51.624 128.856 52.112 128.856 52.72V56.704C128.856 57.36 129.096 57.864 129.576 58.216C130.072 58.568 130.688 58.744 131.424 58.744ZM140.174 61V48.472H143.246V50.56H143.366C143.622 49.888 144.022 49.328 144.566 48.88C145.126 48.416 145.894 48.184 146.87 48.184C148.166 48.184 149.158 48.608 149.846 49.456C150.534 50.304 150.878 51.512 150.878 53.08V61H147.806V53.392C147.806 52.496 147.646 51.824 147.326 51.376C147.006 50.928 146.478 50.704 145.742 50.704C145.422 50.704 145.11 50.752 144.806 50.848C144.518 50.928 144.254 51.056 144.014 51.232C143.79 51.392 143.606 51.6 143.462 51.856C143.318 52.096 143.246 52.384 143.246 52.72V61H140.174ZM163.5 61C162.828 61 162.292 60.808 161.892 60.424C161.508 60.024 161.268 59.496 161.172 58.84H161.028C160.82 59.656 160.396 60.272 159.756 60.688C159.116 61.088 158.324 61.288 157.38 61.288C156.1 61.288 155.116 60.952 154.428 60.28C153.74 59.608 153.396 58.712 153.396 57.592C153.396 56.296 153.86 55.336 154.788 54.712C155.716 54.072 157.036 53.752 158.748 53.752H160.884V52.84C160.884 52.136 160.7 51.592 160.332 51.208C159.964 50.824 159.372 50.632 158.556 50.632C157.836 50.632 157.252 50.792 156.804 51.112C156.372 51.416 156.004 51.784 155.7 52.216L153.876 50.584C154.34 49.864 154.956 49.288 155.724 48.856C156.492 48.408 157.508 48.184 158.772 48.184C160.468 48.184 161.756 48.568 162.636 49.336C163.516 50.104 163.956 51.208 163.956 52.648V58.552H165.204V61H163.5ZM158.412 59.056C159.1 59.056 159.684 58.904 160.164 58.6C160.644 58.296 160.884 57.848 160.884 57.256V55.6H158.916C157.316 55.6 156.516 56.112 156.516 57.136V57.544C156.516 58.056 156.676 58.44 156.996 58.696C157.332 58.936 157.804 59.056 158.412 59.056ZM168.314 50.896H166.466V48.472H168.314V46.672C168.314 45.568 168.602 44.72 169.178 44.128C169.77 43.536 170.634 43.24 171.77 43.24H173.954V45.688H171.386V48.472H173.954V50.896H171.386V61H168.314V50.896ZM176.081 48.472H179.153V62.512C179.153 63.568 178.889 64.376 178.361 64.936C177.833 65.512 176.993 65.8 175.841 65.8H174.161V63.352H176.081V48.472ZM177.617 46.648C176.977 46.648 176.513 46.504 176.225 46.216C175.953 45.928 175.817 45.56 175.817 45.112V44.632C175.817 44.184 175.953 43.816 176.225 43.528C176.513 43.24 176.977 43.096 177.617 43.096C178.241 43.096 178.697 43.24 178.985 43.528C179.273 43.816 179.417 44.184 179.417 44.632V45.112C179.417 45.56 179.273 45.928 178.985 46.216C178.697 46.504 178.241 46.648 177.617 46.648ZM191.93 61C191.258 61 190.722 60.808 190.322 60.424C189.938 60.024 189.698 59.496 189.602 58.84H189.458C189.25 59.656 188.826 60.272 188.186 60.688C187.546 61.088 186.754 61.288 185.81 61.288C184.53 61.288 183.546 60.952 182.858 60.28C182.17 59.608 181.826 58.712 181.826 57.592C181.826 56.296 182.29 55.336 183.218 54.712C184.146 54.072 185.466 53.752 187.178 53.752H189.314V52.84C189.314 52.136 189.13 51.592 188.762 51.208C188.394 50.824 187.802 50.632 186.986 50.632C186.266 50.632 185.682 50.792 185.234 51.112C184.802 51.416 184.434 51.784 184.13 52.216L182.306 50.584C182.77 49.864 183.386 49.288 184.154 48.856C184.922 48.408 185.938 48.184 187.202 48.184C188.898 48.184 190.186 48.568 191.066 49.336C191.946 50.104 192.386 51.208 192.386 52.648V58.552H193.634V61H191.93ZM186.842 59.056C187.53 59.056 188.114 58.904 188.594 58.6C189.074 58.296 189.314 57.848 189.314 57.256V55.6H187.346C185.746 55.6 184.946 56.112 184.946 57.136V57.544C184.946 58.056 185.106 58.44 185.426 58.696C185.762 58.936 186.234 59.056 186.842 59.056ZM196.12 61V48.472H199.192V51.064H199.312C199.392 50.728 199.512 50.408 199.672 50.104C199.848 49.784 200.072 49.504 200.344 49.264C200.616 49.024 200.936 48.832 201.304 48.688C201.688 48.544 202.128 48.472 202.624 48.472H203.296V51.376H202.336C201.296 51.376 200.512 51.528 199.984 51.832C199.456 52.136 199.192 52.632 199.192 53.32V61H196.12ZM214.712 44.224L212.936 45.376C214.04 46.528 214.928 47.856 215.6 49.36C216.272 50.864 216.608 52.536 216.608 54.376C216.608 55.56 216.464 56.592 216.176 57.472C215.888 58.336 215.48 59.056 214.952 59.632C214.44 60.192 213.824 60.608 213.104 60.88C212.384 61.152 211.584 61.288 210.704 61.288C209.76 61.288 208.912 61.144 208.16 60.856C207.424 60.552 206.792 60.128 206.264 59.584C205.752 59.04 205.36 58.376 205.088 57.592C204.816 56.808 204.68 55.936 204.68 54.976C204.68 54.08 204.792 53.264 205.016 52.528C205.256 51.792 205.592 51.16 206.024 50.632C206.456 50.104 206.976 49.696 207.584 49.408C208.208 49.12 208.896 48.976 209.648 48.976C210.512 48.976 211.232 49.192 211.808 49.624C212.4 50.04 212.864 50.608 213.2 51.328L213.344 51.256C213.152 50.44 212.808 49.664 212.312 48.928C211.832 48.192 211.248 47.488 210.56 46.816L208.496 48.112L207.392 46.792L209.264 45.664C208.704 45.2 208.112 44.768 207.488 44.368C206.88 43.968 206.264 43.592 205.64 43.24H210.32C210.544 43.368 210.76 43.52 210.968 43.696C211.176 43.856 211.392 44.024 211.616 44.2L213.632 42.928L214.712 44.224ZM210.656 58.936C211.504 58.936 212.176 58.664 212.672 58.12C213.168 57.576 213.416 56.816 213.416 55.84V54.448C213.416 53.472 213.168 52.712 212.672 52.168C212.176 51.624 211.504 51.352 210.656 51.352C209.792 51.352 209.112 51.624 208.616 52.168C208.12 52.712 207.872 53.472 207.872 54.448V55.84C207.872 56.816 208.12 57.576 208.616 58.12C209.112 58.664 209.792 58.936 210.656 58.936ZM228.773 61C228.101 61 227.565 60.808 227.165 60.424C226.781 60.024 226.541 59.496 226.445 58.84H226.301C226.093 59.656 225.669 60.272 225.029 60.688C224.389 61.088 223.597 61.288 222.653 61.288C221.373 61.288 220.389 60.952 219.701 60.28C219.013 59.608 218.669 58.712 218.669 57.592C218.669 56.296 219.133 55.336 220.061 54.712C220.989 54.072 222.309 53.752 224.021 53.752H226.157V52.84C226.157 52.136 225.973 51.592 225.605 51.208C225.237 50.824 224.645 50.632 223.829 50.632C223.109 50.632 222.525 50.792 222.077 51.112C221.645 51.416 221.277 51.784 220.973 52.216L219.149 50.584C219.613 49.864 220.229 49.288 220.997 48.856C221.765 48.408 222.781 48.184 224.045 48.184C225.741 48.184 227.029 48.568 227.909 49.336C228.789 50.104 229.229 51.208 229.229 52.648V58.552H230.477V61H228.773ZM223.685 59.056C224.373 59.056 224.957 58.904 225.437 58.6C225.917 58.296 226.157 57.848 226.157 57.256V55.6H224.189C222.589 55.6 221.789 56.112 221.789 57.136V57.544C221.789 58.056 221.949 58.44 222.269 58.696C222.605 58.936 223.077 59.056 223.685 59.056ZM232.964 61V48.472H236.036V51.064H236.156C236.236 50.728 236.356 50.408 236.516 50.104C236.692 49.784 236.916 49.504 237.188 49.264C237.46 49.024 237.78 48.832 238.148 48.688C238.532 48.544 238.972 48.472 239.468 48.472H240.14V51.376H239.18C238.14 51.376 237.356 51.528 236.828 51.832C236.3 52.136 236.036 52.632 236.036 53.32V61H232.964ZM241.861 55.216V52.168H248.725V55.216H241.861ZM97.776 71.24H100.848V78.56H100.968C101.224 77.888 101.624 77.328 102.168 76.88C102.728 76.416 103.496 76.184 104.472 76.184C105.768 76.184 106.76 76.608 107.448 77.456C108.136 78.304 108.48 79.512 108.48 81.08V89H105.408V81.392C105.408 80.496 105.248 79.824 104.928 79.376C104.608 78.928 104.08 78.704 103.344 78.704C103.024 78.704 102.712 78.752 102.408 78.848C102.12 78.928 101.856 79.056 101.616 79.232C101.392 79.392 101.208 79.6 101.064 79.856C100.92 80.096 100.848 80.384 100.848 80.72V89H97.776V71.24ZM111.885 89V76.472H114.957V79.064H115.077C115.157 78.728 115.277 78.408 115.437 78.104C115.613 77.784 115.837 77.504 116.109 77.264C116.381 77.024 116.701 76.832 117.069 76.688C117.453 76.544 117.893 76.472 118.389 76.472H119.061V79.376H118.101C117.061 79.376 116.277 79.528 115.749 79.832C115.221 80.136 114.957 80.632 114.957 81.32V89H111.885ZM126.254 89.288C125.326 89.288 124.494 89.136 123.758 88.832C123.038 88.512 122.422 88.072 121.91 87.512C121.414 86.936 121.03 86.248 120.758 85.448C120.486 84.632 120.35 83.72 120.35 82.712C120.35 81.72 120.478 80.824 120.734 80.024C121.006 79.224 121.39 78.544 121.886 77.984C122.382 77.408 122.99 76.968 123.71 76.664C124.43 76.344 125.246 76.184 126.158 76.184C127.134 76.184 127.982 76.352 128.702 76.688C129.422 77.024 130.014 77.48 130.478 78.056C130.942 78.632 131.286 79.304 131.51 80.072C131.75 80.824 131.87 81.632 131.87 82.496V83.504H123.542V83.816C123.542 84.728 123.798 85.464 124.31 86.024C124.822 86.568 125.582 86.84 126.59 86.84C127.358 86.84 127.982 86.68 128.462 86.36C128.958 86.04 129.398 85.632 129.782 85.136L131.438 86.984C130.926 87.704 130.222 88.272 129.326 88.688C128.446 89.088 127.422 89.288 126.254 89.288ZM126.206 78.488C125.39 78.488 124.742 78.76 124.262 79.304C123.782 79.848 123.542 80.552 123.542 81.416V81.608H128.678V81.392C128.678 80.528 128.462 79.832 128.03 79.304C127.614 78.76 127.006 78.488 126.206 78.488ZM134.573 76.472H137.645V78.536H137.741C137.965 77.816 138.389 77.248 139.013 76.832C139.637 76.4 140.365 76.184 141.197 76.184C142.797 76.184 144.013 76.752 144.845 77.888C145.693 79.008 146.117 80.616 146.117 82.712C146.117 84.824 145.693 86.448 144.845 87.584C144.013 88.72 142.797 89.288 141.197 89.288C140.365 89.288 139.637 89.072 139.013 88.64C138.405 88.208 137.981 87.632 137.741 86.912H137.645V93.8H134.573V76.472ZM140.213 86.744C141.013 86.744 141.661 86.48 142.157 85.952C142.653 85.424 142.901 84.712 142.901 83.816V81.656C142.901 80.76 142.653 80.048 142.157 79.52C141.661 78.976 141.013 78.704 140.213 78.704C139.477 78.704 138.861 78.888 138.365 79.256C137.885 79.624 137.645 80.112 137.645 80.72V84.704C137.645 85.36 137.885 85.864 138.365 86.216C138.861 86.568 139.477 86.744 140.213 86.744ZM148.964 76.472H152.036V78.536H152.132C152.356 77.816 152.78 77.248 153.404 76.832C154.028 76.4 154.756 76.184 155.588 76.184C157.188 76.184 158.404 76.752 159.236 77.888C160.084 79.008 160.508 80.616 160.508 82.712C160.508 84.824 160.084 86.448 159.236 87.584C158.404 88.72 157.188 89.288 155.588 89.288C154.756 89.288 154.028 89.072 153.404 88.64C152.796 88.208 152.372 87.632 152.132 86.912H152.036V93.8H148.964V76.472ZM154.604 86.744C155.404 86.744 156.052 86.48 156.548 85.952C157.044 85.424 157.292 84.712 157.292 83.816V81.656C157.292 80.76 157.044 80.048 156.548 79.52C156.052 78.976 155.404 78.704 154.604 78.704C153.868 78.704 153.252 78.888 152.756 79.256C152.276 79.624 152.036 80.112 152.036 80.72V84.704C152.036 85.36 152.276 85.864 152.756 86.216C153.252 86.568 153.868 86.744 154.604 86.744ZM170.842 86.912H170.722C170.61 87.232 170.458 87.536 170.266 87.824C170.09 88.096 169.858 88.344 169.57 88.568C169.298 88.792 168.962 88.968 168.562 89.096C168.178 89.224 167.73 89.288 167.218 89.288C165.922 89.288 164.93 88.864 164.242 88.016C163.554 87.168 163.21 85.96 163.21 84.392V76.472H166.282V84.08C166.282 84.944 166.45 85.608 166.786 86.072C167.122 86.52 167.658 86.744 168.394 86.744C168.698 86.744 168.994 86.704 169.282 86.624C169.586 86.544 169.85 86.424 170.074 86.264C170.298 86.088 170.482 85.88 170.626 85.64C170.77 85.384 170.842 85.088 170.842 84.752V76.472H173.914V89H170.842V86.912ZM177.464 89V76.472H180.536V79.064H180.656C180.736 78.728 180.856 78.408 181.016 78.104C181.192 77.784 181.416 77.504 181.688 77.264C181.96 77.024 182.28 76.832 182.648 76.688C183.032 76.544 183.472 76.472 183.968 76.472H184.64V79.376H183.68C182.64 79.376 181.856 79.528 181.328 79.832C180.8 80.136 180.536 80.632 180.536 81.32V89H177.464Z" fill="#421C63"/> -</svg> diff --git a/libs/application/templates/financial-statement-cemetery/.babelrc b/libs/application/templates/financial-statement-cemetery/.babelrc deleted file mode 100644 index 1ea870ead410..000000000000 --- a/libs/application/templates/financial-statement-cemetery/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - [ - "@nx/react/babel", - { - "runtime": "automatic", - "useBuiltIns": "usage" - } - ] - ], - "plugins": [] -} diff --git a/libs/application/templates/financial-statement-cemetery/README.md b/libs/application/templates/financial-statement-cemetery/README.md deleted file mode 100644 index 759b46c0bb58..000000000000 --- a/libs/application/templates/financial-statement-cemetery/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# financial-statement-cemetery - -This application turns in financial statements for cemeteries to the The Icelandic National Audit Office (Ríkisendurskoðun, inao for short). - -## Running unit tests - -Run `nx test financial-statement-cemetery` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/application/templates/financial-statement-cemetery/jest.config.ts b/libs/application/templates/financial-statement-cemetery/jest.config.ts deleted file mode 100644 index d1a9047508d2..000000000000 --- a/libs/application/templates/financial-statement-cemetery/jest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'financial-statement-cemetery', - preset: '../../../../jest.preset.js', - transform: { - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', - '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }], - }, - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], - coverageDirectory: - '../../../../coverage/libs/application/templates/financial-statement-cemetery', -} diff --git a/libs/application/templates/financial-statement-cemetery/project.json b/libs/application/templates/financial-statement-cemetery/project.json deleted file mode 100644 index cb3b7eecab67..000000000000 --- a/libs/application/templates/financial-statement-cemetery/project.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "financial-statement-cemetery", - "$schema": "../../../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "libs/application/templates/financial-statement-cemetery/src", - "projectType": "library", - "tags": ["scope:application-system", "lib:application-system"], - "generators": {}, - "targets": { - "lint": { - "executor": "@nx/eslint:lint" - }, - "extract-strings": { - "executor": "nx:run-commands", - "options": { - "command": "yarn ts-node -P libs/localization/tsconfig.lib.json libs/localization/scripts/extract 'libs/application/templates/financial-statement-cemetery/src/lib/messages.ts'" - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], - "options": { - "jestConfig": "libs/application/templates/financial-statement-cemetery/jest.config.ts" - } - } - } -} diff --git a/libs/application/templates/financial-statement-cemetery/src/components/Logo.tsx b/libs/application/templates/financial-statement-cemetery/src/components/Logo.tsx deleted file mode 100644 index a3fc5fc686a4..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/components/Logo.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useLocale } from '@island.is/localization' -import { Box, Text } from '@island.is/island-ui/core' -import { m } from '../lib/messages' - -const Logo = () => { - const { formatMessage } = useLocale() - - return ( - <Box> - <Text variant="eyebrow" as="p" color="purple600"> - {formatMessage(m.serviceProvider)} - </Text> - <Text variant="h3" as="p" color="purple600"> - {formatMessage(m.inao).toUpperCase()} - </Text> - </Box> - ) -} - -export default Logo diff --git a/libs/application/templates/financial-statement-cemetery/src/dataProviders/index.ts b/libs/application/templates/financial-statement-cemetery/src/dataProviders/index.ts deleted file mode 100644 index 91d817999f92..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/dataProviders/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defineTemplateApi } from '@island.is/application/types' -import { UserProfileApi } from '@island.is/application/types' - -export { - NationalRegistryUserApi, - IdentityApi as IndentityApiProvider, -} from '@island.is/application/types' - -export const CurrentUserTypeProvider = defineTemplateApi({ - action: 'getUserType', - externalDataId: 'currentUserType', -}) - -export const UserInfoApi = UserProfileApi.configure({ - params: { - catchMock: true, - }, -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/CemeteryCaretaker.css.ts b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/CemeteryCaretaker.css.ts deleted file mode 100644 index b9419afdce8e..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/CemeteryCaretaker.css.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { theme, themeUtils } from '@island.is/island-ui/theme' -import { style } from '@vanilla-extract/css' - -export const removeFieldButton = style({ - top: '-94%', - right: -theme.spacing['2'], - ...themeUtils.responsiveStyle({ - md: { - top: '50%', - right: -theme.spacing['3'], - }, - }), -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/CemeteryCaretakerRepeaterItem.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/CemeteryCaretakerRepeaterItem.tsx deleted file mode 100644 index b843a538d72d..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/CemeteryCaretakerRepeaterItem.tsx +++ /dev/null @@ -1,154 +0,0 @@ -import { useState, useEffect } from 'react' -import { useFormContext } from 'react-hook-form' -import { IdentityInput, Query } from '@island.is/api/schema' -import * as kennitala from 'kennitala' - -import { RecordObject } from '@island.is/application/types' -import { - Box, - Button, - GridColumn, - GridRow, - GridContainer, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' -import { useLazyQuery } from '@apollo/client' -import { getValueViaPath, getErrorViaPath } from '@island.is/application/core' - -import { FinancialStatementCemetery } from '../../lib/dataSchema' -import * as styles from './CemeteryCaretaker.css' -import { IdentityQuery } from '../../graphql' -import { BOARDMEMEBER, CARETAKER } from '../../utils/constants' -import { - InputController, - SelectController, -} from '@island.is/shared/form-fields' - -type Props = { - id: string - index: number - answers: FinancialStatementCemetery - handleRemoveCaretaker: (index: number) => void - errors: RecordObject<unknown> | undefined -} - -export const CaretakerRepeaterItem = ({ - id, - index, - answers, - errors, - handleRemoveCaretaker, -}: Props) => { - const { formatMessage } = useLocale() - - const [nationalIdInput, setNationalIdInput] = useState('') - - const { clearErrors, setValue } = useFormContext() - - const fieldIndex = `${id}[${index}]` - const nameField = `${fieldIndex}.name` - const nationalIdField = `${fieldIndex}.nationalId` - const roleField = `${fieldIndex}.role` - - const [getIdentity, { loading, error: queryError }] = useLazyQuery< - Query, - { input: IdentityInput } - >(IdentityQuery, { - onCompleted: (data) => { - setValue(nameField, data.identity?.name ?? '') - }, - }) - - useEffect(() => { - clearErrors() - if (nationalIdInput.length === 10 && kennitala.isValid(nationalIdInput)) { - getIdentity({ - variables: { - input: { - nationalId: nationalIdInput, - }, - }, - }) - } - }, [nationalIdInput, getIdentity, clearErrors]) - - return ( - <GridContainer> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box position="relative" paddingTop={3} paddingRight={1}> - <InputController - id={nationalIdField} - name={nationalIdField} - label={formatMessage(m.nationalId)} - backgroundColor="blue" - format="######-####" - onChange={(v) => - setNationalIdInput(v.target.value.replace(/\W/g, '')) - } - error={errors && getErrorViaPath(errors, nationalIdField)} - defaultValue={ - getValueViaPath(answers, nationalIdField, '') as string - } - /> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box position="relative" paddingTop={3} paddingRight={1}> - {index > 0 && ( - <Box position="absolute" className={styles.removeFieldButton}> - <Button - variant="ghost" - size="small" - circle - icon="remove" - onClick={() => { - handleRemoveCaretaker(index) - }} - /> - </Box> - )} - <InputController - id={nameField} - name={nameField} - label={formatMessage(m.fullName)} - backgroundColor="blue" - loading={loading} - readOnly - error={ - queryError - ? formatMessage(m.errorNationalIdIncorrect) - : undefined - } - /> - </Box> - </GridColumn> - </GridRow> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box paddingTop={2} paddingRight={1}> - <SelectController - id={roleField} - name={roleField} - label={formatMessage(m.role)} - placeholder={formatMessage(m.selectRole)} - backgroundColor="blue" - error={errors && getErrorViaPath(errors, roleField)} - options={[ - { - label: formatMessage(m.cemeteryInspector), - value: CARETAKER, - }, - { - label: formatMessage(m.cemeteryBoardMember), - value: BOARDMEMEBER, - }, - ]} - /> - </Box> - </GridColumn> - </GridRow> - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/index.tsx deleted file mode 100644 index af4434842a2e..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryCareteker/index.tsx +++ /dev/null @@ -1,156 +0,0 @@ -import { useEffect, useCallback } from 'react' -import { useFieldArray, useFormContext } from 'react-hook-form' -import { - Box, - Button, - GridRow, - GridContainer, - InputError, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' -import { FieldBaseProps } from '@island.is/application/types' - -import { FinancialStatementCemetery } from '../../lib/dataSchema' -import { - APPLICANTASMEMBER, - ACTORASCARETAKER, - ACTORLONEBOARDMEMBER, -} from '../../utils/constants' - -import { getBoardmembersAndCaretakers } from '../../utils/helpers' -import { CaretakerRepeaterItem } from './CemeteryCaretakerRepeaterItem' -import { BoardMember } from '../../types/types' - -export const CemeteryCaretaker = ({ - application, - field, - errors, - setBeforeSubmitCallback, -}: FieldBaseProps<FinancialStatementCemetery>) => { - const { formatMessage } = useLocale() - const { id } = field - - const { getValues, setError } = useFormContext() - const values = getValues() - - const { fields, append, remove } = useFieldArray({ - name: id ?? '', - }) - - const handleAddCaretaker = useCallback(() => { - append({ - nationalId: '', - name: '', - role: '', - }) - }, [append]) - - const handleRemoveCaretaker = (index: number) => remove(index) - - useEffect(() => { - if (fields.length === 0) handleAddCaretaker() - }, [fields, handleAddCaretaker]) - - setBeforeSubmitCallback && - setBeforeSubmitCallback(async () => { - const actors = application.applicantActors - const currentActor: string = actors[actors.length - 1] - - console.log('Values: ', values) - - const allMembers = values.cemeteryCaretaker - const { careTakers, boardMembers } = - getBoardmembersAndCaretakers(allMembers) - - const caretakersIncludeActor = - careTakers.filter((careTaker) => careTaker === currentActor).length > 0 - - const boardMembersIncludeActor = - boardMembers.filter((boardMember) => boardMember === currentActor) - .length > 0 - - const includesApplicant = - allMembers.filter( - (member: BoardMember) => member.nationalId === application.applicant, - ).length > 0 - - if (caretakersIncludeActor) { - setError(ACTORASCARETAKER, { - type: 'custom', - message: formatMessage(m.errorCaretakerCanNotIncludeActor), - }) - return [false, formatMessage(m.errorCaretakerCanNotIncludeActor)] - } else if (boardMembersIncludeActor && boardMembers.length <= 1) { - setError(ACTORLONEBOARDMEMBER, { - type: 'custom', - message: formatMessage(m.errorCaretakerCanNotIncludeActor), - }) - return [false, formatMessage(m.errorCaretakerCanNotIncludeActor)] - } else if (includesApplicant) { - setError(APPLICANTASMEMBER, { - type: 'custom', - message: formatMessage(m.errorMemberCanNotIncludeApplicant), - }) - return [false, formatMessage(m.errorMemberCanNotIncludeApplicant)] - } else { - return [true, null] - } - }) - - return ( - <GridContainer> - {fields.map((field, index) => ( - <Box key={field.id}> - <CaretakerRepeaterItem - id={id} - answers={application.answers} - index={index} - handleRemoveCaretaker={handleRemoveCaretaker} - key={field.id} - errors={errors} - /> - </Box> - ))} - <GridRow> - <Box paddingTop={2} paddingLeft="p2"> - <Button - variant="ghost" - icon="add" - iconType="outline" - size="small" - onClick={handleAddCaretaker} - > - {formatMessage(m.add)} - </Button> - </Box> - </GridRow> - {errors && errors.cemeteryCaretaker ? ( - <InputError - errorMessage={ - typeof errors.cemeteryCaretaker === 'string' - ? errors.cemeteryCaretaker - : undefined - } - /> - ) : null} - {errors && errors.applicantasmember ? ( - <InputError - errorMessage={formatMessage(m.errorMemberCanNotIncludeApplicant)} - /> - ) : null} - {errors && errors.actorascaretaker ? ( - <InputError - errorMessage={formatMessage(m.errorCaretakerCanNotIncludeActor)} - /> - ) : null} - {errors && errors.actorloneboardmember ? ( - <InputError - errorMessage={formatMessage( - m.errorBoardmembersCanNotJustIncludeActor, - )} - /> - ) : null} - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryEquities/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryEquities/index.tsx deleted file mode 100644 index e16606e47af3..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryEquities/index.tsx +++ /dev/null @@ -1,326 +0,0 @@ -import { useState, useEffect } from 'react' -import { - AlertBanner, - Box, - GridColumn, - GridContainer, - GridRow, - Text, -} from '@island.is/island-ui/core' -import debounce from 'lodash/debounce' -import { useFormContext } from 'react-hook-form' -import { useLocale } from '@island.is/localization' -import { FieldBaseProps } from '@island.is/application/types' -import { InputController } from '@island.is/shared/form-fields' -import { m } from '../../lib/messages' -import { Total } from '../KeyNumbers' -import { getErrorViaPath, getValueViaPath } from '@island.is/application/core' -import { - CAPITALNUMBERS, - CEMETERYEQUITIESANDLIABILITIESIDS, - INPUTCHANGEINTERVAL, - OPERATINGCOST, - VALIDATOR, -} from '../../utils/constants' -import { useTotals } from '../../hooks/useTotals' -import { getTotal } from '../../utils/helpers' - -export const CemeteryEquities = ({ - application, - setBeforeSubmitCallback, -}: FieldBaseProps) => { - const answers = application.answers - const { formatMessage } = useLocale() - const { - clearErrors, - formState: { errors }, - setValue, - getValues, - setError, - } = useFormContext() - - const operatingCostTotal = Number( - getValueViaPath(answers, OPERATINGCOST.total), - ) - - const capitalTotal = Number(getValueViaPath(answers, CAPITALNUMBERS.total)) - - useEffect(() => { - const total = operatingCostTotal + capitalTotal - setValue(CEMETERYEQUITIESANDLIABILITIESIDS.operationResult, total) - setTotalOperatingCost(total) - }, [operatingCostTotal, capitalTotal, setValue]) - - const [totalOperatingCost, setTotalOperatingCost] = useState(0) - const [equityTotal, setEquityTotal] = useState(0) - const [equityAndDebts, setEquityAndDebts] = useState(0) - - const [getTotalAssets, totalAssets] = useTotals( - CEMETERYEQUITIESANDLIABILITIESIDS.assetPrefix, - ) - const [getTotalLiabilities, totalLiabilities] = useTotals( - CEMETERYEQUITIESANDLIABILITIESIDS.liabilityPrefix, - ) - const [getTotalEquity, totalEquity] = useTotals( - CEMETERYEQUITIESANDLIABILITIESIDS.equityPrefix, - ) - - useEffect(() => { - setEquityTotal(totalEquity) - }, [totalEquity, totalOperatingCost]) - - useEffect(() => { - const total = totalEquity + totalLiabilities - setEquityAndDebts(total) - }, [totalEquity, totalLiabilities]) - - useEffect(() => { - clearErrors(VALIDATOR) - }, [totalEquity, totalLiabilities, totalAssets, clearErrors]) - - // we need to validate some info before allowing submission of the current screen data - // since we're comparing values from different objects, doing it via zod is not an option - setBeforeSubmitCallback && - setBeforeSubmitCallback(async () => { - const values = getValues() - const assets = getTotal(values, 'cemetryAsset') - const liabilties = getTotal(values, 'cemetryLiability') - const equities = getTotal(values, 'cemetryEquity') - - // assets should equal liabilties + equities - const isValid = liabilties + equities === assets - if (!isValid) { - setError(VALIDATOR, { - type: 'custom', - message: formatMessage(m.equityDebtsAssetsValidatorError), - }) - return [false, formatMessage(m.equityDebtsAssetsValidatorError)] - } - return [true, null] - }) - - return ( - <GridContainer> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text paddingY={1} as="h2" variant="h4"> - {formatMessage(m.properties)} - </Text> - <Box paddingY={1}> - <InputController - id={CEMETERYEQUITIESANDLIABILITIESIDS.fixedAssetsTotal} - name={CEMETERYEQUITIESANDLIABILITIESIDS.fixedAssetsTotal} - error={ - errors && - getErrorViaPath( - errors, - CEMETERYEQUITIESANDLIABILITIESIDS.fixedAssetsTotal, - ) - } - onChange={debounce(() => { - getTotalAssets() - clearErrors(CEMETERYEQUITIESANDLIABILITIESIDS.fixedAssetsTotal) - }, INPUTCHANGEINTERVAL)} - label={formatMessage(m.fixedAssetsTotal)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYEQUITIESANDLIABILITIESIDS.currentAssets} - name={CEMETERYEQUITIESANDLIABILITIESIDS.currentAssets} - onChange={debounce(() => { - getTotalAssets() - clearErrors(CEMETERYEQUITIESANDLIABILITIESIDS.currentAssets) - }, INPUTCHANGEINTERVAL)} - label={formatMessage(m.currentAssets)} - error={ - errors && - getErrorViaPath( - errors, - CEMETERYEQUITIESANDLIABILITIESIDS.currentAssets, - ) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Total - name={CEMETERYEQUITIESANDLIABILITIESIDS.assetTotal} - total={totalAssets} - label={formatMessage(m.totalAssets)} - /> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text paddingY={1} as="h2" variant="h4"> - {formatMessage(m.debtsAndEquity)} - </Text> - <Box paddingY={1}> - <InputController - id={CEMETERYEQUITIESANDLIABILITIESIDS.longTerm} - name={CEMETERYEQUITIESANDLIABILITIESIDS.longTerm} - onChange={debounce(() => { - getTotalLiabilities() - clearErrors(CEMETERYEQUITIESANDLIABILITIESIDS.longTerm) - }, INPUTCHANGEINTERVAL)} - error={ - errors && - getErrorViaPath( - errors, - CEMETERYEQUITIESANDLIABILITIESIDS.longTerm, - ) - } - label={formatMessage(m.longTerm)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYEQUITIESANDLIABILITIESIDS.shortTerm} - name={CEMETERYEQUITIESANDLIABILITIESIDS.shortTerm} - onChange={debounce(() => { - getTotalLiabilities() - clearErrors(CEMETERYEQUITIESANDLIABILITIESIDS.shortTerm) - }, INPUTCHANGEINTERVAL)} - error={ - errors && - getErrorViaPath( - errors, - CEMETERYEQUITIESANDLIABILITIESIDS.shortTerm, - ) - } - label={formatMessage(m.shortTerm)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Total - name={CEMETERYEQUITIESANDLIABILITIESIDS.liabilityTotal} - total={totalLiabilities} - label={formatMessage(m.totalDebts)} - /> - <Box paddingBottom={1} paddingTop={2}> - <InputController - id={ - CEMETERYEQUITIESANDLIABILITIESIDS.equityAtTheBeginningOfTheYear - } - name={ - CEMETERYEQUITIESANDLIABILITIESIDS.equityAtTheBeginningOfTheYear - } - onChange={debounce(() => { - getTotalEquity() - clearErrors( - CEMETERYEQUITIESANDLIABILITIESIDS.equityAtTheBeginningOfTheYear, - ) - }, INPUTCHANGEINTERVAL)} - error={ - errors && - getErrorViaPath( - errors, - CEMETERYEQUITIESANDLIABILITIESIDS.equityAtTheBeginningOfTheYear, - ) - } - label={formatMessage(m.equityAtTheBeginningOfTheYear)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={ - CEMETERYEQUITIESANDLIABILITIESIDS.revaluationDueToPriceChanges - } - name={ - CEMETERYEQUITIESANDLIABILITIESIDS.revaluationDueToPriceChanges - } - onChange={debounce(() => { - getTotalEquity() - clearErrors( - CEMETERYEQUITIESANDLIABILITIESIDS.revaluationDueToPriceChanges, - ) - }, INPUTCHANGEINTERVAL)} - error={ - errors && - getErrorViaPath( - errors, - CEMETERYEQUITIESANDLIABILITIESIDS.revaluationDueToPriceChanges, - ) - } - label={formatMessage(m.revaluationDueToPriceChanges)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYEQUITIESANDLIABILITIESIDS.reevaluateOther} - name={CEMETERYEQUITIESANDLIABILITIESIDS.reevaluateOther} - onChange={debounce(() => { - getTotalEquity() - clearErrors(CEMETERYEQUITIESANDLIABILITIESIDS.reevaluateOther) - }, INPUTCHANGEINTERVAL)} - error={ - errors && - getErrorViaPath( - errors, - CEMETERYEQUITIESANDLIABILITIESIDS.reevaluateOther, - ) - } - label={formatMessage(m.reevaluateOther)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYEQUITIESANDLIABILITIESIDS.operationResult} - name={CEMETERYEQUITIESANDLIABILITIESIDS.operationResult} - readOnly - error={ - errors && - getErrorViaPath( - errors, - CEMETERYEQUITIESANDLIABILITIESIDS.operationResult, - ) - } - label={formatMessage(m.operationResult)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Total - name={CEMETERYEQUITIESANDLIABILITIESIDS.equityTotal} - total={equityTotal} - label={formatMessage(m.totalEquity)} - /> - <Box paddingY={1}> - <Total - name={CEMETERYEQUITIESANDLIABILITIESIDS.totalEquityAndLiabilities} - total={equityAndDebts} - label={formatMessage(m.debtsAndCash)} - /> - </Box> - </GridColumn> - </GridRow> - {errors && errors.validator ? ( - <Box paddingY={2}> - <AlertBanner - title={formatMessage(m.equityErrorTitle)} - description={formatMessage(m.equityDebtsAssetsValidatorError)} - variant="error" - /> - </Box> - ) : null} - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryIncomeLimit/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryIncomeLimit/index.tsx deleted file mode 100644 index a76d1ed2d9e0..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryIncomeLimit/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { useEffect } from 'react' -import { AlertMessage, ContentBlock } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { useQuery } from '@apollo/client' -import { useFormContext } from 'react-hook-form' -import { m } from '../../lib/messages' -import { financialLimitQuery } from '../../graphql' -import { CEMETERYOPERATIONIDS } from '../../utils/constants' -import { FSIUSERTYPE } from '../../types/types' - -export const CemeteryIncomeLimit = () => { - const { getValues, setValue } = useFormContext() - const { formatMessage } = useLocale() - - const values = getValues() - const year: string = values?.conditionalAbout?.operatingYear - - const { data, error } = useQuery(financialLimitQuery, { - variables: { input: { year, clientType: `${FSIUSERTYPE.CEMETRY}` } }, - }) - - useEffect(() => { - const limit = - data?.financialStatementCemeteryClientFinancialLimit?.toString() - if (limit) { - setValue(CEMETERYOPERATIONIDS.incomeLimit, limit) - } - }, [data, setValue]) - - if (error) { - return ( - <ContentBlock> - <AlertMessage - type="error" - title={formatMessage(m.fetchErrorTitle)} - message={formatMessage(m.fetchCemetryLimitErrorMsg)} - /> - </ContentBlock> - ) - } - - return null -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/CemeteryExpenses.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/CemeteryExpenses.tsx deleted file mode 100644 index ef7aa2b9a900..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/CemeteryExpenses.tsx +++ /dev/null @@ -1,168 +0,0 @@ -import { useEffect } from 'react' -import { useLocale } from '@island.is/localization' -import { Box } from '@island.is/island-ui/core' -import { InputController } from '@island.is/shared/form-fields' -import { getErrorViaPath, getValueViaPath } from '@island.is/application/core' -import { RecordObject } from '@island.is/application/types' -import debounce from 'lodash/debounce' -import { useFormContext } from 'react-hook-form' -import { m } from '../../lib/messages' - -import { FinancialStatementsInaoTaxInfo } from '@island.is/api/schema' -import { - CEMETERYOPERATIONIDS, - INPUTCHANGEINTERVAL, -} from '../../utils/constants' -type Props = { - data?: { - financialStatementsInaoTaxInfo: FinancialStatementsInaoTaxInfo[] - } | null - loading: boolean - getSum: () => void - errors: RecordObject<unknown> | undefined -} - -export const CemeteryExpenses = ({ data, loading, errors, getSum }: Props) => { - const { formatMessage } = useLocale() - const { clearErrors, setValue, getValues } = useFormContext() - const values = getValues() - - const donationsToCemeteryFund = getValueViaPath( - values, - CEMETERYOPERATIONIDS.donationsToCemeteryFund, - ) - - useEffect(() => { - if (data?.financialStatementsInaoTaxInfo) { - if (!donationsToCemeteryFund) { - setValue( - CEMETERYOPERATIONIDS.donationsToCemeteryFund, - data.financialStatementsInaoTaxInfo - ?.find((x) => x.key === 334) - ?.value?.toString() ?? '', - ) - } - } - getSum() - }, [data, getSum, setValue]) - - const onInputChange = debounce((fieldId: string) => { - getSum() - clearErrors(fieldId) - }, INPUTCHANGEINTERVAL) - - return ( - <> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.payroll} - name={CEMETERYOPERATIONIDS.payroll} - label={formatMessage(m.payroll)} - onChange={() => onInputChange(CEMETERYOPERATIONIDS.payroll)} - error={ - errors && getErrorViaPath(errors, CEMETERYOPERATIONIDS.payroll) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.funeralCost} - name={CEMETERYOPERATIONIDS.funeralCost} - label={formatMessage(m.funeralCost)} - onChange={() => onInputChange(CEMETERYOPERATIONIDS.funeralCost)} - error={ - errors && getErrorViaPath(errors, CEMETERYOPERATIONIDS.funeralCost) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.chapelExpense} - name={CEMETERYOPERATIONIDS.chapelExpense} - label={formatMessage(m.chapelExpense)} - onChange={() => onInputChange(CEMETERYOPERATIONIDS.chapelExpense)} - error={ - errors && - getErrorViaPath(errors, CEMETERYOPERATIONIDS.chapelExpense) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.donationsToCemeteryFund} - name={CEMETERYOPERATIONIDS.donationsToCemeteryFund} - label={formatMessage(m.donationsToCemeteryFund)} - loading={loading} - onChange={() => - onInputChange(CEMETERYOPERATIONIDS.donationsToCemeteryFund) - } - error={ - errors && - getErrorViaPath( - errors, - CEMETERYOPERATIONIDS.donationsToCemeteryFund, - ) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.donationsToOther} - name={CEMETERYOPERATIONIDS.donationsToOther} - label={formatMessage(m.donationsToOther)} - onChange={() => onInputChange(CEMETERYOPERATIONIDS.donationsToOther)} - error={ - errors && - getErrorViaPath(errors, CEMETERYOPERATIONIDS.donationsToOther) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.otherOperationCost} - name={CEMETERYOPERATIONIDS.otherOperationCost} - label={formatMessage(m.otherOperationCost)} - onChange={() => - onInputChange(CEMETERYOPERATIONIDS.otherOperationCost) - } - error={ - errors && - getErrorViaPath(errors, CEMETERYOPERATIONIDS.otherOperationCost) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.depreciation} - name={CEMETERYOPERATIONIDS.depreciation} - label={formatMessage(m.depreciation)} - onChange={() => onInputChange(CEMETERYOPERATIONIDS.depreciation)} - error={ - errors && getErrorViaPath(errors, CEMETERYOPERATIONIDS.depreciation) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - </> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/CemeteryIncome.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/CemeteryIncome.tsx deleted file mode 100644 index 46179f7371da..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/CemeteryIncome.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import { useEffect } from 'react' -import { Box } from '@island.is/island-ui/core' -import { RecordObject } from '@island.is/application/types' -import debounce from 'lodash/debounce' -import { InputController } from '@island.is/shared/form-fields' -import { useLocale } from '@island.is/localization' -import { useFormContext } from 'react-hook-form' -import { getErrorViaPath, getValueViaPath } from '@island.is/application/core' -import { m } from '../../lib/messages' -import { FinancialStatementsInaoTaxInfo } from '@island.is/api/schema' -import { - CEMETERYOPERATIONIDS, - INPUTCHANGEINTERVAL, - TaxInfoTypes, -} from '../../utils/constants' - -type Props = { - data?: { - financialStatementsInaoTaxInfo: FinancialStatementsInaoTaxInfo[] - } | null - loading: boolean - getSum: () => void - errors: RecordObject<unknown> | undefined -} - -export const CemetryIncome = ({ data, loading, errors, getSum }: Props) => { - const { formatMessage } = useLocale() - const { clearErrors, getValues, setValue } = useFormContext() - - useEffect(() => { - const values = getValues() - - const careIncome = getValueViaPath(values, CEMETERYOPERATIONIDS.careIncome) - const burialRevenue = getValueViaPath( - values, - CEMETERYOPERATIONIDS.burialRevenue, - ) - const grantFromTheCemeteryFund = getValueViaPath( - values, - CEMETERYOPERATIONIDS.grantFromTheCemeteryFund, - ) - - if (data?.financialStatementsInaoTaxInfo) { - if (!careIncome) { - setValue( - CEMETERYOPERATIONIDS.careIncome, - data.financialStatementsInaoTaxInfo - ?.find((x) => x.key === TaxInfoTypes.CARE_INCOME) - ?.value?.toString() ?? '', - ) - } - if (!burialRevenue) { - setValue( - CEMETERYOPERATIONIDS.burialRevenue, - data.financialStatementsInaoTaxInfo - ?.find((x) => x.key === TaxInfoTypes.BURIAL_REVENUE) - ?.value?.toString() ?? '', - ) - } - if (!grantFromTheCemeteryFund) { - setValue( - CEMETERYOPERATIONIDS.grantFromTheCemeteryFund, - data.financialStatementsInaoTaxInfo - ?.find((x) => x.key === TaxInfoTypes.GRANT_FROM_THE_CEMETERY_FUND) - ?.value?.toString() ?? '', - ) - } - getSum() - } - }, [data, getSum, setValue]) - - const onInputChange = debounce((fieldId: string) => { - getSum() - clearErrors(fieldId) - }, INPUTCHANGEINTERVAL) - - return ( - <> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.careIncome} - loading={loading} - name={CEMETERYOPERATIONIDS.careIncome} - label={formatMessage(m.careIncome)} - onChange={() => onInputChange(CEMETERYOPERATIONIDS.careIncome)} - backgroundColor="blue" - currency - rightAlign - error={ - errors && getErrorViaPath(errors, CEMETERYOPERATIONIDS.careIncome) - } - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.burialRevenue} - loading={loading} - name={CEMETERYOPERATIONIDS.burialRevenue} - label={formatMessage(m.burialRevenue)} - onChange={() => onInputChange(CEMETERYOPERATIONIDS.burialRevenue)} - backgroundColor="blue" - currency - rightAlign - error={ - errors && - getErrorViaPath(errors, CEMETERYOPERATIONIDS.burialRevenue) - } - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.grantFromTheCemeteryFund} - loading={loading} - name={CEMETERYOPERATIONIDS.grantFromTheCemeteryFund} - label={formatMessage(m.grantFromTheCemeteryFund)} - onChange={() => - onInputChange(CEMETERYOPERATIONIDS.grantFromTheCemeteryFund) - } - backgroundColor="blue" - currency - rightAlign - error={ - errors && - getErrorViaPath( - errors, - CEMETERYOPERATIONIDS.grantFromTheCemeteryFund, - ) - } - /> - </Box> - <Box paddingY={1}> - <InputController - id={CEMETERYOPERATIONIDS.otherIncome} - name={CEMETERYOPERATIONIDS.otherIncome} - label={formatMessage(m.otherIncome)} - onChange={() => onInputChange(CEMETERYOPERATIONIDS.otherIncome)} - backgroundColor="blue" - currency - rightAlign - error={ - errors && getErrorViaPath(errors, CEMETERYOPERATIONIDS.otherIncome) - } - /> - </Box> - </> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/index.tsx deleted file mode 100644 index 424169cccdfa..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOperation/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import { useFormContext } from 'react-hook-form' -import { - GridColumn, - GridContainer, - GridRow, - Text, -} from '@island.is/island-ui/core' -import { Application } from '@island.is/application/types' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' -import { Total } from '../KeyNumbers' -import { CemetryIncome } from './CemeteryIncome' -import { CemeteryExpenses } from './CemeteryExpenses' -import { CemeteryIncomeLimit } from '../CemeteryIncomeLimit/index' -import { useQuery } from '@apollo/client' -import { getValueViaPath } from '@island.is/application/core' -import { taxInfoQuery } from '../../graphql' -import { CEMETERYOPERATIONIDS, OPERATINGCOST } from '../../utils/constants' -import { useTotals } from '../../hooks/useTotals' - -export const CemeteryOperation = ({ - application, -}: { - application: Application -}) => { - const { answers } = application - - const operatingYear = - getValueViaPath(answers, 'conditionalAbout.operatingYear') ?? '' - - const { data, loading } = useQuery(taxInfoQuery, { - variables: { year: operatingYear }, - }) - - const { - formState: { errors }, - } = useFormContext() - const { formatMessage } = useLocale() - const [getTotalIncome, totalIncome] = useTotals( - CEMETERYOPERATIONIDS.prefixIncome, - ) - const [getTotalExpense, totalExpense] = useTotals( - CEMETERYOPERATIONIDS.prefixExpense, - ) - - return ( - <GridContainer> - <CemeteryIncomeLimit /> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text paddingY={1} as="h2" variant="h4"> - {formatMessage(m.income)} - </Text> - <CemetryIncome - data={data} - loading={loading} - getSum={getTotalIncome} - errors={errors} - /> - <Total - name={CEMETERYOPERATIONIDS.totalIncome} - total={totalIncome} - label={formatMessage(m.totalIncome)} - /> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text paddingY={1} as="h2" variant="h4"> - {formatMessage(m.expenses)} - </Text> - <CemeteryExpenses - data={data} - loading={loading} - getSum={getTotalExpense} - errors={errors} - /> - <Total - name={CEMETERYOPERATIONIDS.totalExpense} - total={totalExpense} - label={formatMessage(m.totalExpenses)} - /> - </GridColumn> - </GridRow> - <GridRow align="flexEnd"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Total - name={OPERATINGCOST.total} - label={formatMessage(m.operatingCost)} - title={formatMessage(m.operatingCostBefore)} - total={totalIncome - totalExpense} - /> - </GridColumn> - </GridRow> - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/AboutOverview.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/AboutOverview.tsx deleted file mode 100644 index 926d2038faba..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/AboutOverview.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { GridColumn, GridRow } from '@island.is/island-ui/core' -import { formatPhoneNumber } from '@island.is/application/ui-components' - -import { format as formatNationalId } from 'kennitala' -import { m } from '../../lib/messages' -import { sectionColumn } from './overviewStyles.css' -import { FinancialStatementCemetery } from '../../lib/dataSchema' -import { ValueLine } from './ValueLine' - -export const AboutOverview = ({ - answers, -}: { - answers: FinancialStatementCemetery -}) => { - return ( - <> - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine label={m.fullName} value={answers.about.fullName} /> - </GridColumn> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.nationalId} - value={ - answers.about?.nationalId - ? formatNationalId(answers.about.nationalId) - : '-' - } - /> - </GridColumn> - </GridRow> - <GridRow> - {answers.about.powerOfAttorneyName ? ( - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.powerOfAttorneyName} - value={answers.about.powerOfAttorneyName} - /> - </GridColumn> - ) : null} - {answers.about.powerOfAttorneyNationalId ? ( - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.powerOfAttorneyNationalId} - value={formatNationalId(answers.about.powerOfAttorneyNationalId)} - /> - </GridColumn> - ) : null} - </GridRow> - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine label={m.email} value={answers.about.email} /> - </GridColumn> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.phoneNumber} - value={formatPhoneNumber(answers.about.phoneNumber)} - /> - </GridColumn> - </GridRow> - </> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/BottomBar.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/BottomBar.tsx deleted file mode 100644 index a014701fc18c..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/BottomBar.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { Box, Button, Divider } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' - -type Props = { - onBackButtonClick: () => void - onSendButtonClick: () => void - loading?: boolean - sendText?: string -} - -const BottomBar = ({ - onBackButtonClick, - onSendButtonClick, - loading = false, - sendText, -}: Props) => { - const { formatMessage } = useLocale() - - return ( - <> - <Box paddingY={3}> - <Divider /> - </Box> - <Box display="flex" justifyContent="spaceBetween" paddingY={5}> - <Button variant="ghost" onClick={onBackButtonClick} disabled={loading}> - {formatMessage(m.goBack)} - </Button> - <Button icon="checkmark" onClick={onSendButtonClick} loading={loading}> - {sendText ? sendText : formatMessage(m.send)} - </Button> - </Box> - </> - ) -} - -export default BottomBar diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/CapitalNumbersOverview.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/CapitalNumbersOverview.tsx deleted file mode 100644 index 30f7f0a71bf7..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/CapitalNumbersOverview.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { Box, GridColumn, GridRow, Text } from '@island.is/island-ui/core' - -import { m } from '../../lib/messages' -import { ValueLine } from '../CemeteryOverview/ValueLine' -import { - sectionColumn, - starterColumnStyle, -} from '../CemeteryOverview/overviewStyles.css' -import { useLocale } from '@island.is/localization' -import { FinancialStatementCemetery } from '../../lib/dataSchema' -import { formatCurrency } from '../../utils/helpers' - -export const CapitalNumberOverview = ({ - answers, -}: { - answers: FinancialStatementCemetery -}) => { - const { formatMessage } = useLocale() - return ( - <> - <Box className={starterColumnStyle}> - <Text variant="h3" as="h3"> - {formatMessage(m.capitalNumbers)} - </Text> - </Box> - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.capitalIncome} - value={formatCurrency(answers.capitalNumbers.capitalIncome)} - /> - </GridColumn> - {answers.capitalNumbers?.capitalCost ? ( - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.capitalCost} - value={formatCurrency(answers.capitalNumbers.capitalCost)} - /> - </GridColumn> - ) : null} - </GridRow> - <GridRow> - <GridColumn className={sectionColumn}> - <ValueLine - isTotal - label={m.totalCapital} - value={formatCurrency(answers.capitalNumbers?.total)} - /> - </GridColumn> - </GridRow> - </> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/FileValueLine.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/FileValueLine.tsx deleted file mode 100644 index 54ff41ae2139..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/FileValueLine.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { ActionCard, Box, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' - -type Props = { - label?: string -} - -export const FileValueLine = ({ label = '' }: Props) => { - const { formatMessage } = useLocale() - - return ( - <Box paddingY={2}> - <Text variant="h3">{formatMessage(m.files)}</Text> - <Box paddingY={2}> - <ActionCard - heading={label} - headingVariant="h4" - cta={{ - label: '', - }} - tag={{ - label: 'PDF', - }} - backgroundColor="blue" - /> - </Box> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/ValueLine.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/ValueLine.tsx deleted file mode 100644 index e52d48763b63..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/ValueLine.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Box, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { MessageDescriptor } from 'react-intl' - -type Props = { - label: string | MessageDescriptor - value?: string | MessageDescriptor - isTotal?: boolean -} - -export const ValueLine = ({ label, value = '-', isTotal = false }: Props) => { - const { formatMessage } = useLocale() - - return ( - <Box paddingY={1} style={isTotal ? { borderTop: '1px solid black' } : {}}> - <Text variant="medium" fontWeight="semiBold" as="label"> - {formatMessage(label)} - </Text> - - <Text - variant="default" - as="p" - fontWeight={isTotal ? 'semiBold' : 'regular'} - > - {formatMessage(value)} - </Text> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/index.tsx deleted file mode 100644 index 57040fecba5d..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/index.tsx +++ /dev/null @@ -1,378 +0,0 @@ -import { useState } from 'react' -import { DefaultEvents, FieldBaseProps } from '@island.is/application/types' -import { getErrorViaPath, getValueViaPath } from '@island.is/application/core' - -import { - AlertBanner, - Box, - Checkbox, - Divider, - GridColumn, - GridRow, - InputError, - Text, -} from '@island.is/island-ui/core' -import { Controller, useFormContext } from 'react-hook-form' -import { useLocale } from '@island.is/localization' -import { format as formatNationalId } from 'kennitala' -import { useSubmitApplication } from '../../hooks/useSubmitApplication' -import { m } from '../../lib/messages' -import { FinancialStatementCemetery } from '../../lib/dataSchema' -import { currencyStringToNumber, formatCurrency } from '../../utils/helpers' -import { AboutOverview } from './AboutOverview' -import { ValueLine } from './ValueLine' -import { CapitalNumberOverview } from './CapitalNumbersOverview' -import { BOARDMEMEBER } from '../../utils/constants' -import { FileValueLine } from './FileValueLine' -import BottomBar from './BottomBar' -import { - columnStyle, - sectionColumn, - starterColumnStyle, -} from './overviewStyles.css' - -export const CemeteryOverview = ({ - application, - goToScreen, - refetch, -}: FieldBaseProps) => { - const { - formState: { errors }, - setError, - setValue, - } = useFormContext() - const { formatMessage } = useLocale() - const [approveOverview, setApproveOverview] = useState(false) - - const [submitApplication, { error: submitError, loading }] = - useSubmitApplication({ - application, - refetch, - event: DefaultEvents.SUBMIT, - }) - - const answers = application.answers as FinancialStatementCemetery - const fileName = answers.attachments?.file?.[0]?.name - const careTakerLimit = answers.cemeteryOperation?.incomeLimit ?? '0' - const cemeteryIncome = currencyStringToNumber(answers.cemeteryIncome?.total) - const fixedAssetsTotal = answers.cemeteryAsset?.fixedAssetsTotal - const longTermDebt = answers.cemeteryLiability?.longTerm - const email = getValueViaPath(answers, 'about.email') - const cemeteryCaretakers = answers.cemeteryCaretaker - - const onBackButtonClick = () => { - if ( - Number(cemeteryIncome) < Number(careTakerLimit) && - fixedAssetsTotal === '0' && - longTermDebt === '0' - ) { - goToScreen && goToScreen('caretakers') - } else { - goToScreen && goToScreen('attachments.file') - } - } - - const onSendButtonClick = () => { - if (approveOverview) { - submitApplication() - } else { - setError('applicationApprove', { - type: 'error', - }) - } - } - - return ( - <Box marginBottom={2}> - <Divider /> - <Box paddingY={3}> - <AboutOverview answers={answers} /> - </Box> - <Divider /> - <Box paddingY={3}> - <Box className={starterColumnStyle}> - <Text variant="h3" as="h3"> - {formatMessage(m.expensesIncome)} - </Text> - </Box> - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.income)} - </Text> - </Box> - <ValueLine - label={m.careIncome} - value={formatCurrency(answers.cemeteryIncome?.careIncome)} - /> - <ValueLine - label={m.burialRevenue} - value={formatCurrency(answers.cemeteryIncome?.burialRevenue)} - /> - <ValueLine - label={m.grantFromTheCemeteryFund} - value={formatCurrency( - answers.cemeteryIncome?.grantFromTheCemeteryFund, - )} - /> - <ValueLine - label={m.otherIncome} - value={formatCurrency(answers.cemeteryIncome?.otherIncome)} - /> - <ValueLine - isTotal - label={m.totalIncome} - value={formatCurrency(answers.cemeteryIncome?.total)} - /> - </GridColumn> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.expenses)} - </Text> - </Box> - <ValueLine - label={m.payroll} - value={formatCurrency(answers.cemeteryExpense?.payroll)} - /> - <ValueLine - label={m.funeralCost} - value={formatCurrency(answers.cemeteryExpense?.funeralCost)} - /> - <ValueLine - label={m.chapelExpense} - value={formatCurrency(answers.cemeteryExpense?.chapelExpense)} - /> - <ValueLine - label={m.donationsToCemeteryFund} - value={formatCurrency( - answers.cemeteryExpense?.cemeteryFundExpense, - )} - /> - <ValueLine - label={m.donationsToOther} - value={formatCurrency(answers.cemeteryExpense?.donationsToOther)} - /> - <ValueLine - label={m.otherOperationCost} - value={formatCurrency( - answers.cemeteryExpense?.otherOperationCost, - )} - /> - <ValueLine - label={m.depreciation} - value={formatCurrency(answers.cemeteryExpense?.depreciation)} - /> - <ValueLine - isTotal - label={m.totalExpenses} - value={formatCurrency(answers.cemeteryExpense.total)} - /> - </GridColumn> - </GridRow> - </Box> - <Divider /> - - <Box paddingY={3}> - <CapitalNumberOverview answers={answers} /> - </Box> - <Divider /> - <Box paddingY={3}> - <Box className={starterColumnStyle}> - <Text variant="h3" as="h3"> - {formatMessage(m.propertiesAndDebts)} - </Text> - </Box> - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.properties)} - </Text> - </Box> - <ValueLine - label={m.fixedAssetsTotal} - value={formatCurrency(answers.cemeteryAsset?.fixedAssetsTotal)} - /> - - <ValueLine - label={m.currentAssets} - value={formatCurrency(answers.cemeteryAsset?.currentAssets)} - /> - <ValueLine - label={m.totalAssets} - value={formatCurrency(answers.cemeteryAsset.total)} - isTotal - /> - </GridColumn> - - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.debts)} - </Text> - </Box> - <ValueLine - label={m.longTerm} - value={formatCurrency(answers.cemeteryLiability?.longTerm)} - /> - <ValueLine - label={m.shortTerm} - value={formatCurrency(answers.cemeteryLiability?.shortTerm)} - /> - <ValueLine - isTotal - label={m.totalLiabilities} - value={formatCurrency(answers.cemeteryLiability?.total)} - /> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.equity)} - </Text> - </Box> - <ValueLine - label={m.equityAtTheBeginningOfTheYear} - value={formatCurrency( - answers.cemeteryEquity?.equityAtTheBeginningOfTheYear, - )} - /> - <ValueLine - label={m.revaluationDueToPriceChanges} - value={formatCurrency( - answers.cemeteryEquity?.revaluationDueToPriceChanges, - )} - /> - <ValueLine - label={m.reevaluateOther} - value={formatCurrency(answers.cemeteryEquity?.reevaluateOther)} - /> - <ValueLine - label={m.operationResult} - value={formatCurrency(answers.cemeteryEquity?.operationResult)} - /> - <ValueLine - isTotal - label={m.totalEquity} - value={formatCurrency(answers.cemeteryEquity?.total)} - /> - <ValueLine - isTotal - label={m.debtsAndCash} - value={formatCurrency(answers.equityAndLiabilities?.total)} - /> - </GridColumn> - </GridRow> - </Box> - <Divider /> - {parseInt(answers.cemeteryIncome?.total, 10) < Number(careTakerLimit) && - cemeteryCaretakers?.length > 0 ? ( - <> - <Box className={starterColumnStyle}> - <Text variant="h3" as="h3"> - {formatMessage(m.cemeteryBoardmembers)} - </Text> - </Box> - {cemeteryCaretakers.map((careTaker) => ( - <> - <Box className={columnStyle}> - <GridRow> - <GridColumn span={['12/12', '6/12']}> - <ValueLine label={m.fullName} value={careTaker.name} /> - </GridColumn> - <GridColumn span={['12/12', '6/12']}> - <ValueLine - label={m.nationalId} - value={formatNationalId(careTaker.nationalId)} - /> - </GridColumn> - </GridRow> - </Box> - <Box className={columnStyle}> - <GridRow> - <GridColumn span={['12/12', '6/12']}> - <ValueLine - label={m.role} - value={ - careTaker.role === BOARDMEMEBER - ? formatMessage(m.cemeteryBoardMember) - : formatMessage(m.cemeteryInspector) - } - /> - </GridColumn> - </GridRow> - </Box> - <Divider /> - </> - ))} - </> - ) : null} - {fileName ? ( - <> - <FileValueLine label={answers.attachments?.file?.[0]?.name} /> - <Divider /> - </> - ) : null} - <Box paddingY={3}> - <Text variant="h3" as="h3"> - {formatMessage(m.overview)} - </Text> - </Box> - - <Box background="blue100"> - <Controller - name="applicationApprove" - defaultValue={approveOverview} - rules={{ required: true }} - render={({ field: { onChange, value } }) => { - return ( - <Checkbox - onChange={(e) => { - onChange(e.target.checked) - setApproveOverview(e.target.checked) - setValue('applicationApprove' as string, e.target.checked) - }} - checked={value} - name="applicationApprove" - id="applicationApprove" - label={formatMessage(m.overviewCorrect)} - large - /> - ) - }} - /> - </Box> - {Number(cemeteryIncome) < Number(careTakerLimit) && - fixedAssetsTotal === '0' && - longTermDebt === '0' ? ( - <Box paddingTop={4}> - <AlertBanner - title={`${formatMessage(m.SignatureMessage)}`} - description={`${formatMessage( - m.SignatureMessage, - )} ${email} ${formatMessage(m.SignaturePossible)}`} - variant="info" - /> - </Box> - ) : null} - {errors && getErrorViaPath(errors, 'applicationApprove') ? ( - <InputError errorMessage={formatMessage(m.errorApproval)} /> - ) : null} - {submitError ? ( - <Box paddingY={2}> - <AlertBanner - title={formatMessage(m.submitErrorTitle)} - description={formatMessage(m.submitErrorMessage)} - variant="error" - dismissable - /> - </Box> - ) : null} - <BottomBar - loading={loading} - onSendButtonClick={onSendButtonClick} - onBackButtonClick={onBackButtonClick} - /> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/overviewStyles.css.ts b/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/overviewStyles.css.ts deleted file mode 100644 index 02636c43d839..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/CemeteryOverview/overviewStyles.css.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { style } from '@vanilla-extract/css' - -export const columnStyle = style({ - paddingTop: '0px', - paddingBottom: '0px', - '@media': { - 'screen and (min-width: 576px)': { - paddingTop: '0.5rem', - paddingBottom: '0.5rem', - }, - }, -}) - -export const starterColumnStyle = style({ - paddingTop: '1.5rem', - paddingBottom: '1rem', -}) - -export const sectionColumn = style({ - '@media': { - print: { - flexBasis: '50%', - maxWidth: '50%', - }, - }, -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/DelegationCheck/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/DelegationCheck/index.tsx deleted file mode 100644 index 7c31e9fd9672..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/DelegationCheck/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { FieldBaseProps } from '@island.is/application/types' -import { AlertBanner, Box } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { useFormContext } from 'react-hook-form' -import { FinancialStatementCemetery } from '../../lib/dataSchema' -import { m } from '../../lib/messages' -import { VALIDATOR } from '../../utils/constants' - -export const DelegationCheck = ({ - application, - setBeforeSubmitCallback, -}: FieldBaseProps<FinancialStatementCemetery>) => { - const { formatMessage } = useLocale() - const { - formState: { errors }, - setError, - } = useFormContext() - setBeforeSubmitCallback && - setBeforeSubmitCallback(async () => { - const userType = application.externalData.getUserType?.data - const hasUserType = !!userType - - if (hasUserType) { - setError(VALIDATOR, { - type: 'custom', - message: formatMessage(m.wrongDelegation), - }) - return [false, formatMessage(m.wrongDelegation)] - } else { - return [true, null] - } - }) - - return errors && errors.validator ? ( - <Box paddingBottom={2} paddingTop={4}> - <AlertBanner - title={formatMessage(m.genericError)} - description={formatMessage(m.wrongDelegation)} - variant="error" - /> - </Box> - ) : null -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/KeyNumbers/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/KeyNumbers/index.tsx deleted file mode 100644 index d565106e5e7b..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/KeyNumbers/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { useEffect } from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import { InputController } from '@island.is/shared/form-fields' -import { useFormContext } from 'react-hook-form' - -type PropTypes = { name: string; total: number; label: string; title?: string } - -export const Total = ({ name, total, label, title }: PropTypes) => { - const { setValue } = useFormContext() - - useEffect(() => { - setValue(name, total.toString()) - }, [total]) - - return ( - <Box paddingY={3}> - {title ? ( - <Text as="h4" variant="h4" paddingBottom={1}> - {title} - </Text> - ) : null} - - <InputController - id={name} - name={name} - label={label} - rightAlign - readOnly - backgroundColor="blue" - currency - /> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/KeyNumbersCapital/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/KeyNumbersCapital/index.tsx deleted file mode 100644 index 23ce3e66e903..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/KeyNumbersCapital/index.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import React, { useState, useEffect } from 'react' -import { - Box, - GridColumn, - GridContainer, - GridRow, -} from '@island.is/island-ui/core' -import { getValueViaPath } from '@island.is/application/core' -import debounce from 'lodash/debounce' -import { useFormContext } from 'react-hook-form' -import { useLocale } from '@island.is/localization' -import { InputController } from '@island.is/shared/form-fields' -import { m } from '../../lib/messages' -import { Total } from '../KeyNumbers' - -import { getErrorViaPath } from '@island.is/application/core' -import { CAPITALNUMBERS, INPUTCHANGEINTERVAL } from '../../utils/constants' - -export const KeyNumbersCapital = () => { - const { formatMessage } = useLocale() - const [totalCapital, setTotalCapital] = useState(0) - const { - clearErrors, - formState: { errors }, - getValues, - } = useFormContext() - - const getTotalCapital = () => { - const values = getValues() - - const income = getValueViaPath(values, CAPITALNUMBERS.capitalIncome) || '0' - const expense = getValueViaPath(values, CAPITALNUMBERS.capitalCost) || '0' - const total = Number(income) - Number(expense) - setTotalCapital(total) - } - - useEffect(() => { - getTotalCapital() - }, [getTotalCapital]) - - return ( - <GridContainer> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box paddingY={1}> - <InputController - id={CAPITALNUMBERS.capitalIncome} - name={CAPITALNUMBERS.capitalIncome} - error={ - errors && getErrorViaPath(errors, CAPITALNUMBERS.capitalIncome) - } - onChange={debounce(() => { - getTotalCapital() - clearErrors(CAPITALNUMBERS.capitalIncome) - }, INPUTCHANGEINTERVAL)} - label={formatMessage(m.capitalIncome)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box paddingY={1}> - <InputController - id={CAPITALNUMBERS.capitalCost} - name={CAPITALNUMBERS.capitalCost} - onChange={debounce(() => { - getTotalCapital() - clearErrors(CAPITALNUMBERS.capitalCost) - }, INPUTCHANGEINTERVAL)} - label={formatMessage(m.capitalCost)} - error={ - errors && getErrorViaPath(errors, CAPITALNUMBERS.capitalCost) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - </GridColumn> - </GridRow> - <GridRow> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Total - name={CAPITALNUMBERS.total} - total={totalCapital} - label={formatMessage(m.totalCapital)} - /> - </GridColumn> - </GridRow> - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/OperatingYear/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/OperatingYear/index.tsx deleted file mode 100644 index 87dfb926490b..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/OperatingYear/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { - AlertMessage, - Box, - ContentBlock, - SkeletonLoader, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' - -import * as styles from './styles.css' -import { useFormContext } from 'react-hook-form' -import { getErrorViaPath } from '@island.is/application/core' -import { SelectController } from '@island.is/shared/form-fields' -import { useQuery } from '@apollo/client' - -import { getAuditConfig } from '../../graphql' -import { - getConfigInfoForKey, - possibleOperatingYears, -} from '../../utils/helpers' -import { - ABOUTIDS, - CemeteriesBackwardLimit, - CemeteriesYearAllowed, -} from '../../utils/constants' - -export const OperatingYear = () => { - const { data, loading, error } = useQuery(getAuditConfig) - const { formatMessage } = useLocale() - const { - formState: { errors }, - } = useFormContext() - - if (loading) { - return ( - <Box width="half" className={styles.selectSpace}> - <SkeletonLoader height={70} /> - </Box> - ) - } - - if (error || data?.financialStatementsInaoConfig?.length <= 0) { - return ( - <ContentBlock> - <AlertMessage - type="error" - title={formatMessage(m.fetchErrorTitle)} - message={formatMessage(m.fetchErrorMsg)} - /> - </ContentBlock> - ) - } - - const { financialStatementsInaoConfig } = data - - const backwardsYearLimit = getConfigInfoForKey( - financialStatementsInaoConfig, - CemeteriesBackwardLimit, - ) - - const countYearBackwardsFrom = getConfigInfoForKey( - financialStatementsInaoConfig, - CemeteriesYearAllowed, - ) - - const operatingYear = possibleOperatingYears( - backwardsYearLimit, - countYearBackwardsFrom, - ) - - return ( - <Box width="half" className={styles.selectSpace}> - <SelectController - id={ABOUTIDS.operatingYear} - name={ABOUTIDS.operatingYear} - backgroundColor="blue" - label={formatMessage(m.operatingYear)} - placeholder={formatMessage(m.selectOperatingYear)} - error={errors && getErrorViaPath(errors, ABOUTIDS.operatingYear)} - options={operatingYear} - /> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/OperatingYear/styles.css.ts b/libs/application/templates/financial-statement-cemetery/src/fields/OperatingYear/styles.css.ts deleted file mode 100644 index c5dd8724f088..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/OperatingYear/styles.css.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { style } from '@vanilla-extract/css' - -export const selectSpace = style({ - paddingRight: '10px', -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/PowerOfAttorney/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/PowerOfAttorney/index.tsx deleted file mode 100644 index cdf31e9ad78f..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/PowerOfAttorney/index.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import { useEffect } from 'react' -import { useFormContext } from 'react-hook-form' -import { useLazyQuery } from '@apollo/client' -import { - Box, - GridColumn, - GridContainer, - GridRow, - InputError, -} from '@island.is/island-ui/core' -import { InputController } from '@island.is/shared/form-fields' -import { useLocale } from '@island.is/localization' -import { IdentityInput, Query } from '@island.is/api/schema' - -import { m } from '../../lib/messages' - -import { FieldBaseProps } from '@island.is/application/types' -import { getErrorViaPath } from '@island.is/application/core' -import { IdentityQuery } from '../../graphql' -import { ABOUTIDS } from '../../utils/constants' - -export const PowerOfAttorneyFields = ({ application }: FieldBaseProps) => { - const { formatMessage } = useLocale() - const { - formState: { errors }, - setValue, - } = useFormContext() - - const currentActor = - application.applicantActors[application.applicantActors.length - 1] - - const [getIdentity, { loading, error: queryError }] = useLazyQuery< - Query, - { input: IdentityInput } - >(IdentityQuery, { - onCompleted: (data) => { - setValue(ABOUTIDS.powerOfAttorneyName, data.identity?.name ?? '') - }, - }) - - useEffect(() => { - if (currentActor) { - getIdentity({ - variables: { - input: { - nationalId: currentActor, - }, - }, - }) - } - }, []) - - if (application.applicantActors.length === 0) { - return null - } - - return ( - <GridContainer> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box paddingTop={2}> - <InputController - id={ABOUTIDS.powerOfAttorneyNationalId} - name={ABOUTIDS.powerOfAttorneyNationalId} - label={formatMessage(m.powerOfAttorneyNationalId)} - readOnly - defaultValue={currentActor} - format="######-####" - backgroundColor="blue" - error={ - errors && - getErrorViaPath(errors, ABOUTIDS.powerOfAttorneyNationalId) - } - /> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box paddingTop={2}> - <InputController - id={ABOUTIDS.powerOfAttorneyName} - name={ABOUTIDS.powerOfAttorneyName} - label={formatMessage(m.powerOfAttorneyName)} - loading={loading} - readOnly - backgroundColor="blue" - error={ - errors && getErrorViaPath(errors, ABOUTIDS.powerOfAttorneyName) - } - /> - {queryError ? ( - <InputError errorMessage={formatMessage(m.errorFetchingName)} /> - ) : null} - </Box> - </GridColumn> - </GridRow> - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/Success/index.tsx b/libs/application/templates/financial-statement-cemetery/src/fields/Success/index.tsx deleted file mode 100644 index 381aa88a1499..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/Success/index.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { - Box, - ContentBlock, - ActionCard, - AlertMessage, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { CustomField, FieldBaseProps } from '@island.is/application/types' -import format from 'date-fns/format' -import { m } from '../../lib/messages' -import { FinancialStatementCemetery } from '../../lib/dataSchema' -import { - getCurrentUserType, - isCemetryUnderFinancialLimit, -} from '../../utils/helpers' - -interface PropTypes extends FieldBaseProps { - field: CustomField -} - -export const Success = ({ application }: PropTypes) => { - const { answers, externalData } = application - const applicationAnswers = application.answers as FinancialStatementCemetery - const userType = getCurrentUserType(answers, externalData) - const { formatMessage } = useLocale() - - const getDescriptionText = () => { - const currentDate = format(new Date(), "dd.MM.yyyy 'kl.' kk:mm") - return `${formatMessage(m.operatingYearMsgFirst)} ${ - applicationAnswers.conditionalAbout.operatingYear - } - ${formatMessage(m.individualReceivedMsgSecond)} ${currentDate}` - } - - const shouldShowDigitalSigningMessage = () => { - return isCemetryUnderFinancialLimit(answers, externalData) - } - - return ( - <Box paddingTop={2}> - <Box marginTop={2} marginBottom={5}> - <ContentBlock> - <AlertMessage - type="success" - title={formatMessage(m.returned)} - message={getDescriptionText()} - /> - </ContentBlock> - {shouldShowDigitalSigningMessage() && ( - <Box paddingTop={2}> - <AlertMessage - type="info" - title={formatMessage(m.digitalSignatureTitle)} - message={formatMessage(m.digitalSignatureMessage, { - email: applicationAnswers.about.email, - })} - /> - </Box> - )} - <Box paddingTop={2}> - <ActionCard - heading="" - text={formatMessage(m.myPagesLinkText)} - cta={{ - label: formatMessage(m.continue), - onClick: () => window.open('/minarsidur/postholf', '_blank'), - }} - backgroundColor="blue" - /> - </Box> - </Box> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/fields/index.ts b/libs/application/templates/financial-statement-cemetery/src/fields/index.ts deleted file mode 100644 index a3db9a6b56c7..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/fields/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { CemeteryCaretaker } from './CemeteryCareteker' -export { CemeteryOperation } from './CemeteryOperation' -export { KeyNumbersCapital } from './KeyNumbersCapital' -export { CemeteryEquities } from './CemeteryEquities' -export { OperatingYear } from './OperatingYear' -export { PowerOfAttorneyFields } from './PowerOfAttorney' -export { DelegationCheck } from './DelegationCheck' -export { CemeteryOverview } from './CemeteryOverview' -export { Success } from './Success' diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryCaretakerSection/caretakerMultiField.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryCaretakerSection/caretakerMultiField.ts deleted file mode 100644 index 21b59e7439fe..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryCaretakerSection/caretakerMultiField.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { buildCustomField, buildMultiField } from '@island.is/application/core' -import { m } from '../../../lib/messages' -import { CEMETERYCARETAKER } from '../../../utils/constants' - -export const caretakerMultiField = buildMultiField({ - id: 'caretakers', - title: m.cemeteryBoardmembers, - description: m.cemeteryRegisterCaretakers, - children: [ - buildCustomField({ - id: 'cemeteryCaretaker', - title: m.cemeteryBoardmembers, - component: 'CemeteryCaretaker', - childInputIds: Object.values(CEMETERYCARETAKER), - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryCaretakerSection/index.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryCaretakerSection/index.ts deleted file mode 100644 index a5805af6e458..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryCaretakerSection/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { buildSection } from '@island.is/application/core' -import { m } from '../../../lib/messages' -import { caretakerMultiField } from './caretakerMultiField' - -export const cemeteryCaretekerSection = buildSection({ - id: 'cemeteryCaretekerSection', - title: m.cemeteryCaretakers, - children: [caretakerMultiField], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryFinancialStatementSection/index.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryFinancialStatementSection/index.ts deleted file mode 100644 index 8df2c99ea9cd..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryFinancialStatementSection/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { buildFileUploadField, buildSection } from '@island.is/application/core' -import { m } from '../../../lib/messages' -import { currencyStringToNumber } from '../../../utils/helpers' -import { FinancialStatementCemetery } from '../../../lib/dataSchema' - -export const cemeteryFinancialStatementSection = buildSection({ - id: 'documents', - title: m.financialStatement, - children: [ - buildFileUploadField({ - id: 'attachments.file', - title: m.upload, - condition: (answers) => { - const applicationAnswers = answers as FinancialStatementCemetery - const careTakerLimit = - applicationAnswers.cemeteryOperation?.incomeLimit ?? '0' - const fixedAssetsTotal = - applicationAnswers.cemeteryAsset?.fixedAssetsTotal - const totalIncome = applicationAnswers.cemeteryIncome?.total - const longTermDebt = applicationAnswers.cemeteryLiability?.longTerm - const isUnderLimit = - currencyStringToNumber(totalIncome) < careTakerLimit - if (isUnderLimit && fixedAssetsTotal === '0' && longTermDebt === '0') { - return false - } - return true - }, - introduction: m.uploadIntro, - description: m.uploadDescription, - uploadHeader: m.uploadHeader, - uploadAccept: '.pdf', - uploadDescription: m.uploadAccept, - uploadButtonLabel: m.uploadButtonLabel, - uploadMultiple: false, - forImageUpload: false, - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/capitalNumberSubSection.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/capitalNumberSubSection.ts deleted file mode 100644 index 549bf3b78658..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/capitalNumberSubSection.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSubSection, -} from '@island.is/application/core' -import { m } from '../../../lib/messages' -import { CAPITALNUMBERS } from '../../../utils/constants' - -export const capitalNumberSubSection = buildSubSection({ - id: 'keynumbers.capitalNumbers', - title: m.capitalNumbers, - children: [ - buildMultiField({ - id: 'capitalNumber', - title: m.capitalNumbersSectionTitle, - description: m.fillOutAppopriate, - children: [ - buildCustomField({ - id: 'capitalNumberField', - title: '', - description: '', - component: 'KeyNumbersCapital', - childInputIds: Object.values(CAPITALNUMBERS), - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/equityAndLiabilitySubSection.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/equityAndLiabilitySubSection.ts deleted file mode 100644 index f5cb6fdf8f6e..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/equityAndLiabilitySubSection.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSubSection, -} from '@island.is/application/core' -import { m } from '../../../lib/messages' -import { CEMETERYEQUITIESANDLIABILITIESIDS } from '../../../utils/constants' - -export const equityAndLiabilitiesSubSection = buildSubSection({ - id: 'keyNumbers.cemetryEquitiesAndLiabilities', - title: m.propertiesAndDebts, - children: [ - buildMultiField({ - id: 'cemetryEquitiesAndLiabilities', - title: m.keyNumbersDebt, - description: m.fillOutAppopriate, - children: [ - buildCustomField({ - id: 'cemeteryEquitiesAndLiabilities', - title: m.keyNumbersDebt, - description: m.fillOutAppopriate, - component: 'CemeteryEquities', - childInputIds: Object.values(CEMETERYEQUITIESANDLIABILITIESIDS), - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/index.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/index.ts deleted file mode 100644 index 0125b6327d17..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { buildSection } from '@island.is/application/core' -import { m } from '../../../lib/messages' -import { opperatingCostSubSection } from './opperatingCostSubSection' -import { capitalNumberSubSection } from './capitalNumberSubSection' -import { equityAndLiabilitiesSubSection } from './equityAndLiabilitySubSection' - -export const cemeteryKeyNumbersSection = buildSection({ - id: 'cemeteryKeyNumbers', - title: m.keynumbers, - children: [ - opperatingCostSubSection, - capitalNumberSubSection, - equityAndLiabilitiesSubSection, - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/opperatingCostSubSection.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/opperatingCostSubSection.ts deleted file mode 100644 index 66ef7c08bc52..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/cemeteryKeyNumbersSection/opperatingCostSubSection.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSubSection, -} from '@island.is/application/core' -import { CEMETERYOPERATIONIDS } from '../../../utils/constants' -import { m } from '../../../lib/messages' - -export const opperatingCostSubSection = buildSubSection({ - id: 'operatingCost', - title: m.expensesIncome, - children: [ - buildMultiField({ - id: 'cemetryIncomeAndExpense', - title: m.keyNumbersIncomeAndExpenses, - description: m.fillOutAppopriate, - children: [ - buildCustomField({ - id: 'cemetryKeyNumbers', - title: '', - component: 'CemeteryOperation', - childInputIds: Object.values(CEMETERYOPERATIONIDS), - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/clientInfoSection/index.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/clientInfoSection/index.ts deleted file mode 100644 index 9846bfef640e..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/clientInfoSection/index.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { - buildCustomField, - buildDescriptionField, - buildMultiField, - buildSection, - buildTextField, -} from '@island.is/application/core' -import { getCurrentUserType } from '../../../utils/helpers' -import { Application, UserProfile } from '@island.is/application/types' -import { m } from '../../../lib/messages' -import { ABOUTIDS } from '../../../utils/constants' -import { Identity } from '@island.is/api/schema' -import { FSIUSERTYPE } from '../../../types/types' - -export const clientInfoSection = buildSection({ - id: 'info', - title: m.info, - children: [ - buildMultiField({ - id: 'about', - title: m.info, - description: (application: Application) => { - const answers = application.answers - const externalData = application.externalData - const userType = getCurrentUserType(answers, externalData) - return userType === FSIUSERTYPE.INDIVIDUAL - ? m.reviewInfo - : m.reviewContact - }, - children: [ - buildDescriptionField({ - id: ABOUTIDS.operatingYear, - title: '', - }), - buildCustomField({ - id: 'OperatingYear', - childInputIds: [ABOUTIDS.operatingYear], - title: '', - component: 'OperatingYear', - }), - buildTextField({ - id: 'about.nationalId', - title: m.clientNationalId, - width: 'half', - readOnly: true, - format: '######-####', - defaultValue: (application: Application) => application.applicant, - }), - buildTextField({ - id: 'about.fullName', - title: m.clientName, - width: 'half', - readOnly: true, - defaultValue: (application: Application) => { - const nationalRegistry = application.externalData.identity - .data as Identity - return nationalRegistry.name - }, - }), - buildDescriptionField({ - id: ABOUTIDS.powerOfAttorneyName, - title: '', - }), - buildCustomField({ - id: 'powerOfAttorney', - title: '', - description: '', - component: 'PowerOfAttorneyFields', - childInputIds: [ - ABOUTIDS.powerOfAttorneyNationalId, - ABOUTIDS.powerOfAttorneyName, - ], - }), - - buildTextField({ - id: 'about.email', - title: m.email, - width: 'half', - variant: 'email', - defaultValue: (application: Application) => { - const userProfile = application.externalData.userProfile - .data as UserProfile - return userProfile.email - }, - }), - buildTextField({ - id: 'about.phoneNumber', - title: m.phoneNumber, - width: 'half', - variant: 'tel', - defaultValue: (application: Application) => { - const userProfile = application.externalData.userProfile - .data as UserProfile - return userProfile.mobilePhoneNumber - }, - }), - buildCustomField({ - id: 'delegation check', - component: 'DelegationCheck', - title: '', - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/index.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/index.ts deleted file mode 100644 index bf4875117557..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { buildForm } from '@island.is/application/core' -import { Form, FormModes } from '@island.is/application/types' -import { m } from '../../lib/messages' -import { cemeteryKeyNumbersSection } from './cemeteryKeyNumbersSection' -import { cemeteryCaretekerSection } from './cemeteryCaretakerSection' -import { cemeteryFinancialStatementSection } from './cemeteryFinancialStatementSection' -import Logo from '../../components/Logo' -import { clientInfoSection } from './clientInfoSection' -import { overviewSection } from './overviewSection' - -export const FinancialStatementCemeteryForm: Form = buildForm({ - id: 'FinancialStatementCemeteryForm', - title: m.applicationTitle, - mode: FormModes.DRAFT, - renderLastScreenButton: false, - logo: Logo, - children: [ - clientInfoSection, - cemeteryKeyNumbersSection, - cemeteryCaretekerSection, - cemeteryFinancialStatementSection, - overviewSection, - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/overviewSection/index.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/overviewSection/index.ts deleted file mode 100644 index 3d1cb64989b8..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/overviewSection/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { buildSection } from '@island.is/application/core' -import { m } from '../../../lib/messages' -import { overviewMultiField } from './oveviewMultiField' - -export const overviewSection = buildSection({ - id: 'overviewSection', - title: m.overviewSectionTitle, - children: [overviewMultiField], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/overviewSection/oveviewMultiField.ts b/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/overviewSection/oveviewMultiField.ts deleted file mode 100644 index 4f93c70dd20a..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/applicationForm/overviewSection/oveviewMultiField.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { buildCustomField, buildMultiField } from '@island.is/application/core' -import { m } from '../../../lib/messages' - -export const overviewMultiField = buildMultiField({ - id: 'overview', - title: m.yearlyOverview, - description: m.review, - children: [ - buildCustomField({ - id: 'overviewCemetryField', - title: '', - doesNotRequireAnswer: true, - component: 'CemeteryOverview', - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/done/conclusionSection.ts b/libs/application/templates/financial-statement-cemetery/src/forms/done/conclusionSection.ts deleted file mode 100644 index 532136f509bc..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/done/conclusionSection.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSection, -} from '@island.is/application/core' -import { m } from '../../lib/messages' - -export const conclusionSection = buildSection({ - id: 'conclusionSection', - title: '', - children: [ - buildMultiField({ - id: 'conclusion', - title: m.received, - children: [ - buildCustomField({ - id: 'overview', - component: 'Success', - title: m.applicationAccept, - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/done/index.ts b/libs/application/templates/financial-statement-cemetery/src/forms/done/index.ts deleted file mode 100644 index e4ea0c21bc77..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/done/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { buildForm } from '@island.is/application/core' -import { Form, FormModes } from '@island.is/application/types' -import { conclusionSection } from './conclusionSection' -import { m } from '../../lib/messages' - -export const done: Form = buildForm({ - id: 'done', - title: m.applicationAccept, - mode: FormModes.COMPLETED, - children: [conclusionSection], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/prerequisites/index.ts b/libs/application/templates/financial-statement-cemetery/src/forms/prerequisites/index.ts deleted file mode 100644 index e8f8d9631b70..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/prerequisites/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { buildForm } from '@island.is/application/core' -import { Form, FormModes } from '@island.is/application/types' -import Logo from '../../components/Logo' -import { prerequisitesSection } from './prerequsitesSection' - -export const PrerequisitesForm: Form = buildForm({ - id: 'PrerequisitesForm', - title: '', - mode: FormModes.NOT_STARTED, - renderLastScreenButton: true, - logo: Logo, - children: [prerequisitesSection], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/forms/prerequisites/prerequsitesSection.ts b/libs/application/templates/financial-statement-cemetery/src/forms/prerequisites/prerequsitesSection.ts deleted file mode 100644 index 6b9bed52110a..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/forms/prerequisites/prerequsitesSection.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { - buildDataProviderItem, - buildExternalDataProvider, - buildSection, - buildSubmitField, - coreMessages, -} from '@island.is/application/core' -import { m } from '../../lib/messages' -import { - CurrentUserTypeProvider, - IndentityApiProvider, - UserInfoApi, -} from '../../dataProviders' -import { DefaultEvents } from '@island.is/application/types' - -export const prerequisitesSection = buildSection({ - id: 'ExternalDataSection', - title: '', - children: [ - buildExternalDataProvider({ - id: 'approveExternalData', - title: m.dataCollectionTitleUserCemetry, - checkboxLabel: m.dataCollectionCheckboxLabel, - dataProviders: [ - buildDataProviderItem({ - provider: IndentityApiProvider, - title: m.dataCollectionNationalRegistryTitle, - subTitle: m.dataCollectionNationalRegistrySubtitle, - }), - buildDataProviderItem({ - provider: UserInfoApi, - title: m.dataCollectionUserProfileTitle, - subTitle: m.dataCollectionUserProfileSubtitle, - }), - buildDataProviderItem({ - provider: CurrentUserTypeProvider, - title: m.dataCollectionUserFinancialInfoTitle, - subTitle: m.dataCollectionUserFinancialInfo, - }), - ], - submitField: buildSubmitField({ - id: 'submit', - placement: 'footer', - title: '', - refetchApplicationAfterSubmit: true, - actions: [ - { - event: DefaultEvents.SUBMIT, - name: coreMessages.buttonNext, - type: 'primary', - }, - ], - }), - }), - ], -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/graphql/index.ts b/libs/application/templates/financial-statement-cemetery/src/graphql/index.ts deleted file mode 100644 index a8772bef2253..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/graphql/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { gql } from '@apollo/client' - -export const IdentityQuery = gql` - query IdentityQuery($input: IdentityInput!) { - identity(input: $input) { - name - nationalId - } - } -` - -export const taxInfoQuery = gql` - query TaxInfoQuery($year: String!) { - financialStatementsInaoTaxInfo(year: $year) { - key - value - } - } -` - -export const financialLimitQuery = gql` - query FinancialStatementsInaoClientFinancialLimit( - $input: InaoClientFinancialLimitInput! - ) { - financialStatementsInaoClientFinancialLimit(input: $input) - } -` - -export const getAuditConfig = gql` - query FinancialStatementsInaoConfig { - financialStatementsInaoConfig { - value - key - } - } -` diff --git a/libs/application/templates/financial-statement-cemetery/src/hooks/useSubmitApplication.ts b/libs/application/templates/financial-statement-cemetery/src/hooks/useSubmitApplication.ts deleted file mode 100644 index de5e2838cb93..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/hooks/useSubmitApplication.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { MutationTuple, useMutation } from '@apollo/client' -import { DefaultEvents, Application } from '@island.is/application/types' -import { SUBMIT_APPLICATION } from '@island.is/application/graphql' - -export interface UseSubmitApplication { - (params: { - application: Application - refetch: (() => void) | undefined - event: DefaultEvents - }): MutationTuple< - void, - { - input: { - id: Application['id'] - event: DefaultEvents - answers: Application['answers'] - } - } - > -} - -export const useSubmitApplication: UseSubmitApplication = ({ - application, - refetch, - event, -}) => { - return useMutation(SUBMIT_APPLICATION, { - onError: (e) => { - console.error(e.message) - return - }, - onCompleted: () => { - refetch?.() - }, - variables: { - input: { - id: application.id, - event, - answers: application.answers, - }, - }, - }) -} diff --git a/libs/application/templates/financial-statement-cemetery/src/hooks/useTotals.ts b/libs/application/templates/financial-statement-cemetery/src/hooks/useTotals.ts deleted file mode 100644 index 15a5873fdd5e..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/hooks/useTotals.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useCallback, useEffect, useState } from 'react' -import { useFormContext } from 'react-hook-form' -import { getTotal } from '../utils/helpers' - -const useTotals = (key: string): [() => void, number] => { - const [total, setTotal] = useState(0) - const { getValues } = useFormContext() - const getSum = useCallback(() => { - const values = getValues() - const sum = getTotal(values, key) - setTotal(sum) - }, [key, getValues, setTotal]) - - useEffect(() => { - getSum() - }, [getSum]) - - return [getSum, total] -} - -export { useTotals } diff --git a/libs/application/templates/financial-statement-cemetery/src/index.ts b/libs/application/templates/financial-statement-cemetery/src/index.ts deleted file mode 100644 index 3c37391dec2c..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import FinancialStatementCemeteryTemplate from './lib/financialStatementCemeteryTemplate' - -export const getDataProviders = () => import('./dataProviders/') -export const getFields = () => import('./fields/') - -export default FinancialStatementCemeteryTemplate diff --git a/libs/application/templates/financial-statement-cemetery/src/lib/dataSchema.ts b/libs/application/templates/financial-statement-cemetery/src/lib/dataSchema.ts deleted file mode 100644 index b177ee8daac2..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/lib/dataSchema.ts +++ /dev/null @@ -1,231 +0,0 @@ -import { z } from 'zod' -import { m } from './messages' -import * as kennitala from 'kennitala' -import { parsePhoneNumberFromString } from 'libphonenumber-js' -import { BOARDMEMEBER, CARETAKER } from '../utils/constants' -import { getBoardmembersAndCaretakers } from '../utils/helpers' - -const FileSchema = z.object({ - name: z.string(), - key: z.string(), - url: z.string().optional(), -}) - -const checkIfNegative = (inputNumber: string) => { - if (Number(inputNumber) < 0) { - return false - } else { - return true - } -} - -const conditionalAbout = z.object({ - operatingYear: z.string().refine((x) => !!x, { params: m.required }), -}) - -const cemeteryOperation = z.object({ - incomeLimit: z.string().optional(), -}) - -const cemeteryLiability = z.object({ - longTerm: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - shortTerm: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string().refine((x) => !!x, { params: m.required }), -}) - -const cemeteryAsset = z.object({ - currentAssets: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - fixedAssetsTotal: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string(), -}) - -const cemeteryIncome = z.object({ - careIncome: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - burialRevenue: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - grantFromTheCemeteryFund: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - otherIncome: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string(), -}) - -const cemeteryExpense = z.object({ - payroll: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - funeralCost: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - chapelExpense: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - donationsToOther: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - cemeteryFundExpense: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - otherOperationCost: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - depreciation: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string(), -}) - -const about = z.object({ - nationalId: z - .string() - .refine((val) => (val ? kennitala.isValid(val) : false), { - params: m.nationalIdError, - }), - fullName: z.string().refine((x) => !!x, { params: m.required }), - powerOfAttorneyNationalId: z.string().optional(), - powerOfAttorneyName: z.string().optional(), - phoneNumber: z.string().refine( - (p) => { - const phoneNumber = parsePhoneNumberFromString(p, 'IS') - return phoneNumber && phoneNumber.isValid() - }, - { params: m.dataSchemePhoneNumber }, - ), - email: z.string().email(), -}) - -const cemeteryCaretaker = z - .array( - z.object({ - // name: z.string().refine((x) => !!x, { params: m.required }), - name: z.string(), - nationalId: z - .string() - .refine((val) => (val ? kennitala.isPerson(val) : false), { - params: m.nationalIdError, - }) - .refine((val) => { - return ( - val ? kennitala.info(val).age < 18 : false, - { - params: m.nationalIdAgeError, - } - ) - }), - role: z.string().refine((x) => !!x, { params: m.required }), - }), - ) - .refine( - (x) => { - if (x.length <= 0) { - return false - } - const careTakers = x.filter((member) => member.role === CARETAKER) - const boardMembers = x.filter((member) => member.role === BOARDMEMEBER) - if (careTakers.length < 1 || boardMembers.length < 1) { - return false - } else { - return true - } - }, - { params: m.errorMembersMissing }, - ) - .refine( - (x) => { - const { careTakers, boardMembers } = getBoardmembersAndCaretakers(x) - - const careTakersUnique = careTakers.filter((member) => - boardMembers.includes(member), - ) - const boardMembersUnique = boardMembers.filter((member) => - careTakers.includes(member), - ) - - if (careTakersUnique.length > 0 || boardMembersUnique.length > 0) { - return false - } else { - return true - } - }, - { params: m.errormemberNotUnique }, - ) - -const cemeteryEquity = z.object({ - equityAtTheBeginningOfTheYear: z - .string() - .refine((x) => !!x, { params: m.required }), - operationResult: z.string(), - revaluationDueToPriceChanges: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - reevaluateOther: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string(), -}) - -const equityAndLiabilities = z.object({ - total: z.string(), -}) - -const capitalNumbers = z.object({ - capitalIncome: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - capitalCost: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string(), -}) - -export const dataSchema = z.object({ - conditionalAbout, - about, - approveExternalData: z.boolean().refine((v) => v), - cemeteryOperation, - cemeteryAsset, - cemeteryLiability, - cemeteryIncome, - cemeteryExpense, - attachments: z.object({ - file: z.array(FileSchema).nonempty(), - }), - cemeteryCaretaker, - cemeteryEquity, - equityAndLiabilities, - capitalNumbers, -}) - -export type FinancialStatementCemetery = z.TypeOf<typeof dataSchema> diff --git a/libs/application/templates/financial-statement-cemetery/src/lib/financialStatementCemeteryTemplate.ts b/libs/application/templates/financial-statement-cemetery/src/lib/financialStatementCemeteryTemplate.ts deleted file mode 100644 index ebd0fc224d5f..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/lib/financialStatementCemeteryTemplate.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { - DefaultStateLifeCycle, - pruneAfterDays, -} from '@island.is/application/core' - -import { - ApplicationTemplate, - ApplicationTypes, - ApplicationContext, - ApplicationRole, - ApplicationStateSchema, - Application, - DefaultEvents, - ApplicationConfigurations, - defineTemplateApi, -} from '@island.is/application/types' -import { m } from './messages' -import { AuthDelegationType } from '@island.is/shared/types' -import { dataSchema } from './dataSchema' - -import { - CurrentUserTypeProvider, - IndentityApiProvider, - NationalRegistryUserApi, - UserInfoApi, -} from '../dataProviders' -import { ApiActions, Events, Roles, States } from '../types/types' -import { Features } from '@island.is/feature-flags' - -const configuration = - ApplicationConfigurations[ApplicationTypes.FINANCIAL_STATEMENTS_INAO] - -const FinancialStatementCemeteryTemplate: ApplicationTemplate< - ApplicationContext, - ApplicationStateSchema<Events>, - Events -> = { - type: ApplicationTypes.FINANCIAL_STATEMENT_CEMETERY, - name: m.applicationTitle, - institution: m.institutionName, - translationNamespaces: [configuration.translation], - featureFlag: Features.FinancialStatementCemetery, - dataSchema, - allowedDelegations: [{ type: AuthDelegationType.ProcurationHolder }], - stateMachineConfig: { - initial: States.PREREQUISITES, - states: { - [States.PREREQUISITES]: { - meta: { - name: States.PREREQUISITES, - progress: 0, - status: 'draft', - actionCard: { - pendingAction: { - title: '', - displayStatus: 'success', - }, - }, - lifecycle: pruneAfterDays(60), - roles: [ - { - id: Roles.APPLICANT, - formLoader: () => - import('../forms/prerequisites').then((val) => - Promise.resolve(val.PrerequisitesForm), - ), - actions: [ - { - event: DefaultEvents.SUBMIT, - name: 'Submit', - type: 'primary', - }, - ], - write: 'all', - delete: true, - api: [ - CurrentUserTypeProvider, - IndentityApiProvider, - NationalRegistryUserApi, - UserInfoApi, - ], - }, - ], - }, - on: { - [DefaultEvents.SUBMIT]: [{ target: States.DRAFT }], - }, - }, - [States.DRAFT]: { - meta: { - name: 'Draft', - actionCard: { - title: m.applicationTitle, - }, - status: 'draft', - lifecycle: pruneAfterDays(60), - roles: [ - { - id: Roles.APPLICANT, - formLoader: () => - import('../forms/applicationForm').then((val) => - Promise.resolve(val.FinancialStatementCemeteryForm), - ), - actions: [ - { event: 'SUBMIT', name: 'Staðfesta', type: 'primary' }, - ], - write: 'all', - delete: true, - api: [NationalRegistryUserApi, UserInfoApi], - }, - ], - }, - on: { - [DefaultEvents.SUBMIT]: { target: States.DONE }, - }, - }, - [States.DONE]: { - meta: { - name: 'Done', - status: 'completed', - progress: 1, - lifecycle: DefaultStateLifeCycle, - onEntry: defineTemplateApi({ - action: ApiActions.submitApplication, - throwOnError: true, - }), - roles: [ - { - id: Roles.APPLICANT, - formLoader: () => import('../forms/done').then((val) => val.done), - read: 'all', - }, - ], - }, - }, - }, - }, - mapUserToRole( - nationalId: string, - application: Application, - ): ApplicationRole | undefined { - if (application.applicant === nationalId) { - return Roles.APPLICANT - } - return undefined - }, -} - -export default FinancialStatementCemeteryTemplate diff --git a/libs/application/templates/financial-statement-cemetery/src/lib/messages.ts b/libs/application/templates/financial-statement-cemetery/src/lib/messages.ts deleted file mode 100644 index 2cf2aa890850..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/lib/messages.ts +++ /dev/null @@ -1,673 +0,0 @@ -import { defineMessages } from 'react-intl' - -export const m = defineMessages({ - applicationTitle: { - id: 'fsc.application:title', - defaultMessage: 'Skil ársreikninga kirkjugarða', - description: 'Title of the application', - }, - institutionName: { - id: 'fsc.application:institution', - defaultMessage: 'Ríkisendurskoðun', - description: `Institution's name`, - }, - keynumbers: { - id: 'fsc.application:keynumbers', - defaultMessage: 'Lykiltölur', - description: 'Key numbers', - }, - cemeteryCaretakers: { - id: 'fsc.application:cemeteryCaretakers', - defaultMessage: 'Umsjónaraðilar', - description: 'Cemetry caretakers', - }, - cemeteryBoardmembers: { - id: 'fsc.application:cemeteryBoardmembers', - defaultMessage: 'Stjórnar- og skoðunarmenn', - description: 'Cemetries board and caretakers', - }, - cemeteryRegisterCaretakers: { - id: 'fsc.application:cemeteryRegisterCaretakers', - defaultMessage: - 'Vinsamlegast skráið inn stjórnar- og skoðunarmenn kirkjugarðsins', - description: 'Cemetries board and caretakers', - }, - expensesIncome: { - id: 'fsc.application:keyNumbers.expensesIncome', - defaultMessage: 'Tekjur og gjöld', - description: 'Expenses and income', - }, - keyNumbersIncomeAndExpenses: { - id: 'fsc.application:keyNumbersIncomeAndExpenses', - defaultMessage: 'Lykiltölur - Tekjur og gjöld', - description: 'income and expenses of keynumbers', - }, - fillOutAppopriate: { - id: 'fsc.application:fillOutAppopriate', - defaultMessage: 'Vinsamlegast fylltu út þá reiti sem eiga við', - description: 'Fill out fields', - }, - capitalNumbers: { - id: 'fsc.application:income.capitalNumbers', - defaultMessage: 'Fjármagnsliðir', - description: 'capital numbers', - }, - capitalNumbersSectionTitle: { - id: 'fsc.application:income.capitalNumbersSectionTitle', - defaultMessage: 'Lykiltölur Fjármagnsliðir', - description: 'capital numbers', - }, - propertiesAndDebts: { - id: 'fsc.application:keyNumbers.properties', - defaultMessage: 'Eignir, skuldir og eigið fé', - description: 'Statement property numbers', - }, - keyNumbersDebt: { - id: 'fsc.application:keyNumbers.debt', - defaultMessage: 'Lykiltölur - Eignir, Skuldir og eigið fé', - description: 'Statement debts', - }, - required: { - id: 'fsc.application:error.required', - defaultMessage: 'Reitur má ekki vera tómur', - description: 'Error message when a required field has not been filled', - }, - negativeNumberError: { - id: 'fsc.application:error.negativeNumberError', - defaultMessage: 'Ekki er leyfilegt að setja inn neikvæðar tölur', - description: 'Error message when a required field has not been filled', - }, - nationalId: { - id: 'fsc.application:nationalId', - defaultMessage: 'Kennitala', - description: 'National id', - }, - fullName: { - id: 'fsc.application:fullName', - defaultMessage: 'Fullt nafn', - description: 'Full name', - }, - errorNationalIdIncorrect: { - id: 'fsc.application:error.nationalIdIncorrect', - defaultMessage: 'Þessi kennitala virðist ekki vera rétt', - description: 'National id is invalid', - }, - role: { - id: 'fsc.application:role', - defaultMessage: 'Hlutverk', - description: 'Role in board fx.', - }, - selectRole: { - id: 'fsc.application:selectRole', - defaultMessage: 'Veldu hlutverk', - description: 'role select', - }, - cemeteryInspector: { - id: 'fsc.application:cemeteryInspector', - defaultMessage: 'Skoðunarmaður', - description: 'inspector', - }, - cemeteryBoardMember: { - id: 'fsc.application:cemeteryBoardMember', - defaultMessage: 'Stjórnarmaður', - description: 'Boardmember', - }, - errorCaretakerCanNotIncludeActor: { - id: 'fsc.application:error.errorcaretakerCanNotIncludeActor', - defaultMessage: 'Innskráður aðili má ekki vera skráður sem skoðunarmaður', - description: 'error, applicant regsitered as caretaker', - }, - errorMemberCanNotIncludeApplicant: { - id: 'fsc.application:error.errormemberCanNotIncludeApplicant', - defaultMessage: - 'Umsækjandi má ekki vera skráður sem stjórnarmaður eða skoðunarmaður', - description: 'error, applicant regsitered as caretaker/boardmember', - }, - errorBoardmembersCanNotJustIncludeActor: { - id: 'fsc.application:error.errorBoardmembersCanNotJustIncludeActor', - defaultMessage: - 'Innskráður aðili má ekki vera skráður einn sem stjórnarmaður', - description: 'error, applicant regsitered as caretaker', - }, - add: { - id: 'fsc.application:add', - defaultMessage: 'Bæta við línu', - description: 'Cemetries board and caretakers', - }, - payroll: { - id: 'fsc.application:income.payroll', - defaultMessage: 'Laun og launatengd gjöld', - description: 'Payroll expense', - }, - chapelExpense: { - id: 'fsc.application:income.chapelExpense', - defaultMessage: 'Rekstur útfararkapellu', - description: 'chapel Operation expenses', - }, - funeralCost: { - id: 'fsc.application:income.funeralCost', - defaultMessage: 'Útfarakostnaður', - description: 'funerals expenses', - }, - donationsToOther: { - id: 'fsc.application:income.donationsToOther', - defaultMessage: 'Framlög og styrkir til annarra', - description: 'Donations made to others', - }, - donationsToCemeteryFund: { - id: 'fsc.application:income.donationsToCemeteryFund', - defaultMessage: 'Framlög til kirkjugarðasjóðs', - description: 'donations from cemetry fund', - }, - otherOperationCost: { - id: 'fsc.application:income.otherOperationCost', - defaultMessage: 'Annar rekstrarkostnaður', - description: 'other operations cost', - }, - depreciation: { - id: 'fsc.application:income.depreciation', - defaultMessage: 'Afskriftir', - description: 'Depreciation', - }, - careIncome: { - id: 'fsc.application:income.careIncome', - defaultMessage: 'Umhirðutekjur', - description: 'caretaking income', - }, - burialRevenue: { - id: 'fsc.application:income.burialRevenue', - defaultMessage: 'Grafartekjur', - description: 'burial revenue', - }, - grantFromTheCemeteryFund: { - id: 'fsc.application:income.grantFromTheCemeteryFund', - defaultMessage: 'Styrkur frá kirkjugarðasjóði', - description: 'Income from cemetry fund', - }, - otherIncome: { - id: 'fsc.application:income.other', - defaultMessage: 'Aðrar tekjur', - description: 'Other income', - }, - income: { - id: 'fsc.application:income', - defaultMessage: 'Tekjur', - description: 'Applicants income', - }, - totalIncome: { - id: 'fsc.application:income.totalIncome', - defaultMessage: 'Tekjur samtals:', - description: 'Total income', - }, - expenses: { - id: 'fsc.application:keyNumbers.expenses', - defaultMessage: 'Gjöld', - description: 'expenses', - }, - totalExpenses: { - id: 'fsc.application:income.totalExpenses', - defaultMessage: 'Gjöld samtals:', - description: 'Total expenses', - }, - operatingCost: { - id: 'fsc.application:keyNumbers.operatingCost', - defaultMessage: 'Rekstrarniðurstaða alls', - description: 'Operating Cost', - }, - operatingCostBefore: { - id: 'fsc.application:keyNumbers.operatingCostBeforeCapital', - defaultMessage: 'Rekstrarniðurstaða fyrir fjármagnsliði', - description: 'Operating Cost Capital', - }, - fetchErrorTitle: { - id: 'fsc.application:fetchErrorMsg', - defaultMessage: 'Eitthvað fór úrskeiðiðs', - description: 'Error msg title when fetching data fails', - }, - fetchCemetryLimitErrorMsg: { - id: 'fsc.application:fetchCemetryLimitErrorMsg', - defaultMessage: - 'Ef skil falla undir lög um ársreikninga sem þarfnast ekki skila, reynið aftur síðar', - description: 'Error msg when fetching data fails', - }, - capitalIncome: { - id: 'fsc.application:income.capital', - defaultMessage: 'Fjármagnstekjur', - description: 'capital income', - }, - capitalCost: { - id: 'fsc.application:income.capitalCost', - defaultMessage: 'Fjármagnsgjöld', - description: 'capital costs', - }, - totalCapital: { - id: 'fsc.application:totalCapital', - defaultMessage: 'Fjármagnsliðir samtals', - description: 'Total capital', - }, - equityDebtsAssetsValidatorError: { - id: 'fsc.application:equityValidatorError', - defaultMessage: 'Skuldir og eigið fé þarf að vera jafnt og eignir samtals', - description: 'Equity + debts shout equal assets', - }, - properties: { - id: 'fsc.application:properties', - defaultMessage: 'Eignir', - description: 'List of applicants properties', - }, - fixedAssetsTotal: { - id: 'fsc.application:keyNumbers.fixedAssetsTotal', - defaultMessage: 'Fastafjármunir samtals', - description: 'Fixed assets', - }, - currentAssets: { - id: 'fsc.application:keyNumbers.currentAssets', - defaultMessage: 'Veltufjármunir samtals', - description: 'Current assets', - }, - totalAssets: { - id: 'fsc.application:totalAssets', - defaultMessage: 'Eignir samtals', - description: 'Total assets', - }, - debtsAndEquity: { - id: 'fsc.application:keyNumbers.debtsAndEquity', - defaultMessage: 'Skuldir og eigið fé', - description: 'debts and equity', - }, - longTerm: { - id: 'fsc.application:keyNumbers.longTermdebt', - defaultMessage: 'Langtímaskuldir samtals', - description: 'Long term debt', - }, - shortTerm: { - id: 'fsc.application:keyNumbers.shortTermDebt', - defaultMessage: 'Skammtímaskuldir samtals', - description: 'Short term debt', - }, - totalDebts: { - id: 'fsc.application:income.totalDebts', - defaultMessage: 'Skuldir samtals:', - description: 'Total debts', - }, - equityAtTheBeginningOfTheYear: { - id: 'fsc.application:keyNumbers.equityAtTheBeginningOfTheYear', - defaultMessage: 'Eigið fé 1. Janúar', - description: 'equity january first', - }, - revaluationDueToPriceChanges: { - id: 'fsc.application:keyNumbers.reevaluatePrice', - defaultMessage: 'Endurmat vegna verðbreytinga', - description: 'Revaluation because of price change', - }, - reevaluateOther: { - id: 'fsc.application:keyNumbers.reevaluateOther', - defaultMessage: 'Endurmat, annað', - description: 'Revaluation other', - }, - operationResult: { - id: 'fsc.application:keyNumbers.operationResult', - defaultMessage: 'Rekstrarafkoma', - description: 'Result of operation', - }, - totalEquity: { - id: 'fsc.application:totalEquity', - defaultMessage: 'Samtals eigið fé', - description: 'Total equity', - }, - debtsAndCash: { - id: 'fsc.application:keyNumbers.debtsAndCash', - defaultMessage: 'Skuldir og eigið fé samtals', - description: 'Debts and cash', - }, - equityErrorTitle: { - id: 'fsc.application:equityErrorTitle', - defaultMessage: 'Ósamræmi í tölum', - description: 'Error msg title when E = S+E.fé is incorrect', - }, - financialStatement: { - id: 'fsc.application:financial.statment', - defaultMessage: 'Ársreikningur', - description: 'financial statements', - }, - upload: { - id: 'fsc.application:upload', - defaultMessage: 'Hlaða upp ársreikningi', - description: 'Upload financial statements', - }, - uploadHeader: { - id: 'fsc.application:uploadHeader', - defaultMessage: 'Dragðu skjöl hingað til að hlaða upp', - description: 'Upload here', - }, - uploadIntro: { - id: 'fsc.application:upload.intro', - defaultMessage: 'Vinsamlegast hlaðið upp ársreikning hér að neðan.', - description: 'Upload financial statements intro', - }, - uploadDescription: { - id: 'fsc.application:upload.description', - defaultMessage: 'Vinsamlegast hlaðið upp ársreikning hér að neðan.', - description: 'Upload financial statements intro', - }, - uploadAccept: { - id: 'fsc.application:upload.accept', - defaultMessage: 'Eingöngu er tekið við skjölum á PDF formi', - description: 'Upload financial statements intro', - }, - uploadButtonLabel: { - id: 'fsc.application:upload.buttonlabel', - defaultMessage: 'Velja skjöl til að hlaða upp', - description: 'Upload button label', - }, - serviceProvider: { - id: 'fsc.application:serviceProvider', - defaultMessage: 'Þjónustuaðili', - description: 'service provider', - }, - inao: { - id: 'fsc.application:inao', - defaultMessage: 'Ríkisendurskoðun', - description: 'icelandic national audit', - }, - dataCollectionTitle: { - id: 'fsc.application:applicationDataCollectionTitle', - defaultMessage: 'Gagnaöflun', - description: 'Title for data collection section', - }, - dataCollectionTitleUserCemetry: { - id: 'fsc.application:applicationDataCollectionTitleUserCemetry', - defaultMessage: 'Gagnaöflun vegna skila ársreiknings kirkjugarðs', - description: 'Title for data collection section', - }, - dataCollectionNationalRegistryTitle: { - id: 'fsc.application:dataCollectionNationalRegistryTitle', - defaultMessage: 'Persónuupplýsingar', - description: 'National registry title', - }, - dataCollectionNationalRegistrySubtitle: { - id: 'fsc.application:dataCollectionNationalRegistrySubtitle', - defaultMessage: 'Fullt nafn, kennitala, heimilisfang.', - description: 'National registry subtitle', - }, - dataCollectionUserProfileTitle: { - id: 'fsc.application:dataCollectionUserProfileTitle', - defaultMessage: 'Mínar síður á Ísland.is/stillingar', - description: 'Your user profile information', - }, - dataCollectionUserFinancialInfoTitle: { - id: 'fsc.application:dataCollectionUserFinancialInfoTitle', - defaultMessage: 'Fjárhagsupplýsingar', - description: 'Financial info', - }, - dataCollectionUserFinancialInfo: { - id: 'fsc.application:dataCollectionUserFinancialInfo', - defaultMessage: - 'Til þess að auðvelda fyrir sækjum við fjárhagsupplýsingar til Ríkisendurskoðunar, sem embættið aflar frá viðeigandi aðilum á grundvelli aðgangs- og skoðunarheimilda sem það hefur, og forskráum þær.', - description: 'Financial info', - }, - dataCollectionUserProfileSubtitle: { - id: 'fsc.application:dataCollectionUserProfileSubtitle', - defaultMessage: - 'Ef þú ert með skráðar upplýsingar um síma og netfang inni á Mínar síður á Ísland.is þá verða þær sjálfkrafa settar inn í umsóknina.', - description: - 'In order to apply for this application we need your email and phone number', - }, - dataCollectionCheckboxLabel: { - id: 'fsc.application:dataCollectionCheckboxLabel', - defaultMessage: - 'Ég skil að ofangreindra gagna verður aflað við vinnslu innsendingarinnar', - description: 'Checkbox label for data collection section', - }, - received: { - id: 'fsc.application:received', - defaultMessage: 'Ársreikningur mótekinn', - description: 'financial statement received', - }, - applicationAccept: { - id: 'fsc.application:applicationAccept', - defaultMessage: 'Umsókn móttekin', - description: 'application accept', - }, - reviewContact: { - id: 'fsc.application:reviewContact', - defaultMessage: 'Vinsamlega yfirfarið upplýsingar um tengilið hér að neðan', - description: 'Review contact info', - }, - reviewInfo: { - id: 'fsc.application:reviewInfo', - defaultMessage: 'Vinsamlega yfirfarið upplýsingarnar hér að neðan', - description: 'Review info', - }, - info: { - id: 'fsc.application:info', - defaultMessage: 'Upplýsingar', - description: 'info', - }, - clientNationalId: { - id: 'fsc.application:clientNationalId', - defaultMessage: 'Kennitala viðskiptavinar', - description: 'client national id', - }, - clientName: { - id: 'fsc.application:clientName', - defaultMessage: 'Nafn viðskiptavinar', - description: 'client name', - }, - email: { - id: 'fsc.application:person.email', - defaultMessage: 'Netfang', - description: 'email', - }, - phoneNumber: { - id: 'fsc.application:about.phoneNumber', - defaultMessage: 'Símanúmer', - description: 'phone number', - }, - fetchErrorMsg: { - id: 'fsc.application:fetchError', - defaultMessage: 'Ekki tókst að sækja gögn, reyndur aftur seinna', - description: 'Error msg when fetching data fails', - }, - operatingYear: { - id: 'fsc.application:keyNumbers.operatingYear', - defaultMessage: 'Rekstrarár', - description: 'Operating year', - }, - selectOperatingYear: { - id: 'fsc.application:keyNumbers.selectOperatingYear', - defaultMessage: 'Veldu rekstrarár', - description: 'Select operating year', - }, - powerOfAttorneyNationalId: { - id: 'fsc.application:powerOfAttorneyNationalId', - defaultMessage: 'Kennitala umboðsmanns', - description: `national id for power of attorney`, - }, - powerOfAttorneyName: { - id: 'fsc.application:powerOfAttorneyName', - defaultMessage: 'Nafn umboðsmanns', - description: `name for power of attorney`, - }, - errorFetchingName: { - id: 'fsc.application:error.errorFetchingName', - defaultMessage: 'Tókst ekki að sækja nafn umboðsmanns', - description: 'Could not fetch powerofattorney name', - }, - wrongDelegation: { - id: 'fsc.application:wrongDelegation', - defaultMessage: 'Eingöngu er hægt að skila fyrir hönd Kirkjugarða', - description: 'Logged in user with incorrect delegation type', - }, - genericError: { - id: 'fsc.application:error.genericError', - defaultMessage: 'Eitthvað fór úrskeiðis', - description: 'Generic error message', - }, - statement: { - id: 'fsc.application:statement', - defaultMessage: 'Yfirlýsing', - description: 'statement', - }, - overviewSectionTitle: { - id: 'fsc.application:overview.general.sectionTitle', - defaultMessage: 'Yfirlit', - description: 'Overview section title', - }, - overviewReview: { - id: 'fsc.application:overview.general.review', - defaultMessage: 'Yfitlit uppgjörs', - description: 'Overview review', - }, - yearlyOverview: { - id: 'fsc.application:overview.general.yearly', - defaultMessage: 'Yfirlit ársreiknings', - description: 'Yearly overview', - }, - overviewDescription: { - id: 'fsc.application:overview.general.description', - defaultMessage: 'Farðu vel yfir efnið áður en þú sendir inn umsóknina.', - description: 'Overview description', - }, - review: { - id: 'fsc.application:review', - defaultMessage: - 'Endilega lestu yfir til að vera viss um að allar upplýsingar hafi verið gefnar', - description: 'financial statements', - }, - files: { - id: 'fsc.application:files', - defaultMessage: 'Skjöl', - description: 'files', - }, - overview: { - id: 'fsc.application:overview.general.overview', - defaultMessage: 'Yfirferð', - description: 'Overview section title', - }, - overviewCorrect: { - id: 'fsc.application:overview.overViewCorrect', - defaultMessage: 'Ég samþykki að ofangreindar upplýsingar séu réttar', - description: 'Overview correct', - }, - errorApproval: { - id: 'fsc.application:error.errorApproval', - defaultMessage: 'Samþykkja þarf yfirlit', - description: 'Approval missing', - }, - submitErrorTitle: { - id: 'fsc.application:submitErrorTitle', - defaultMessage: 'Móttaka ársreiknings tókst ekki', - description: - 'Title that shows up when an error occurs while submitting the application', - }, - submitErrorMessage: { - id: 'fsc.application:submitErrorMessage', - defaultMessage: - 'Eitthvað fór úrskeiðis við að senda inn ársreikning. Reyndu aftur síðar.', - description: - 'Text that shows up when an error occurs while submitting the application', - }, - goBack: { - id: 'fsc.application:overview.goBack', - defaultMessage: 'Til Baka', - description: 'Go back btn text', - }, - send: { - id: 'fsc.application:send', - defaultMessage: 'Senda umsókn', - description: 'Send application', - }, - nationalIdError: { - id: 'fsc.application:error.nationalIdError', - defaultMessage: 'Kennitala er ekki á réttu formi', - description: 'Error message when nationalid is wrong', - }, - dataSchemePhoneNumber: { - id: 'fsc.application:dataSchema.phoneNumber', - defaultMessage: 'Símanúmerið þarf að vera gilt.', - description: 'Error message when phone number is invalid.', - }, - totalLiabilities: { - id: 'fsc.application:keyNumbers.totalLiabilities', - defaultMessage: 'Skuldir samtals', - description: 'total liabilities', - }, - equity: { - id: 'fsc.application:keyNumbers.equity', - defaultMessage: 'Eigið fé', - description: 'total equity', - }, - nationalIdAgeError: { - id: 'fsc.application:error.nationalIdAgeError', - defaultMessage: 'Skoðunar- og Stjórnunarmenn þurfa að vera eldri en 18 ára', - description: - 'Error message when attempting to register younger then 18 caretaker', - }, - errorMembersMissing: { - id: 'fsc.application:error.errorMembersMissing', - defaultMessage: 'Skrá þarf bæði skoðunarmann og stjórnarmann', - description: 'Members missing', - }, - errormemberNotUnique: { - id: 'fsc.application:error.errormemberNotUnique', - defaultMessage: - 'Ekki er hægt að skrá sama aðila sem Stjórnarmann og Skoðunarmann', - description: 'Members missing', - }, - debts: { - id: 'fsc.application:keyNumbers.debts', - defaultMessage: 'Skuldir', - description: 'debts', - }, - SignatureMessage: { - id: 'fsc.application:SignatureMessage', - defaultMessage: - 'Eftir að þú hefur sent inn umsókn mun rafræn undirritun verða send á netfangið', - description: 'Signature message', - }, - SignaturePossible: { - id: 'fsc.application:SignaturePossible', - defaultMessage: 'svo hægt sé að undirrita hana með rafrænum skilríkjum.', - description: 'Signature possible message', - }, - operatingYearMsgFirst: { - id: 'fsc.application:operatingYearMsgFirst', - defaultMessage: 'Ársreikningi fyrir rekstrarárið', - description: 'First part of audit received message', - }, - individualReceivedMsgSecond: { - id: 'fsc.application:individualReceivedMsgSecond', - defaultMessage: 'hefur verið skilað þann', - description: 'Second part of audit received message', - }, - returned: { - id: 'fsc.application:returned', - defaultMessage: 'Skilað', - description: 'Returned', - }, - digitalSignatureTitle: { - id: 'fsc.application:digitalSignatureTitle', - defaultMessage: 'Rafræn undirritun', - description: - 'Reminder of digital signature after the application is returned', - }, - digitalSignatureMessage: { - id: 'fsc.application:digitalSignatureMessage', - defaultMessage: - 'Það bíður þín skjal sem á eftir að undirrita með rafrænum skilríkjum. Hlekkur á skjalið hefur verið sendur í tölvupósti á netfangið þitt: {email}', - description: - 'Reminder of digital signature after the application is returned', - }, - myPagesLinkText: { - id: 'fsc.application:myPagesLinkText', - defaultMessage: - 'Á Mínum síðum Ísland.is hefur þú aðgang að marvíslegum upplýsingum s.s stafrænt pósthólf, þínar upplýsingar, fjármál, umsóknir, menntun, fasteignir, ökutæki, skírteini, starfsleyfi ofl. ', - description: 'island.is my pages info', - }, - continue: { - id: 'fsc.application:continue', - defaultMessage: 'Áfram', - description: 'continue', - }, -}) diff --git a/libs/application/templates/financial-statement-cemetery/src/types/types.ts b/libs/application/templates/financial-statement-cemetery/src/types/types.ts deleted file mode 100644 index 5d9619eecf6c..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/types/types.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { DefaultEvents } from '@island.is/application/types' - -export type Options = { - label: string - value: string -}[] - -export type Config = { key: string; value: string } - -export enum FSIUSERTYPE { - INDIVIDUAL = 150000000, - PARTY = 150000001, - CEMETRY = 150000002, -} - -export type BoardMember = { - nationalId: string - name: string - role: string -} - -export enum ApiActions { - getUserType = 'getUserType', - submitApplication = 'submitApplication', -} - -export type Events = { type: DefaultEvents.SUBMIT } - -export enum States { - PREREQUISITES = 'prerequisites', - DRAFT = 'draft', - DONE = 'done', -} - -export enum Roles { - APPLICANT = 'applicant', -} diff --git a/libs/application/templates/financial-statement-cemetery/src/utils/constants.ts b/libs/application/templates/financial-statement-cemetery/src/utils/constants.ts deleted file mode 100644 index 87efecc3fb85..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/utils/constants.ts +++ /dev/null @@ -1,86 +0,0 @@ -export const CEMETERYCARETAKER = { - nationalId: 'cemeteryCaretaker.nationalId', - name: 'cemeteryCaretaker.name', - role: 'cemeteryCaretaker.role', -} - -export const CARETAKER = 'Skoðunarmaður' -export const BOARDMEMEBER = 'Stjórnarmaður' -export const INPUTCHANGEINTERVAL = 300 -export const TOTAL = 'total' -export const GREATER = 'greater' -export const LESS = 'less' -export const PartiesBackwardLimit = 'PartiesBackwardLimit' -export const CemeteriesBackwardLimit = 'CemeteriesBackwardLimit' -export const PartiesYearAllowed = 'PartiesYearAllowed' -export const CemeteriesYearAllowed = 'CemeteriesYearAllowed' - -// error helpers -export const VALIDATOR = 'validator' -export const APPLICANTASMEMBER = 'applicantasmember' -export const ACTORASCARETAKER = 'actorascaretaker' -export const ACTORLONEBOARDMEMBER = 'actorloneboardmember' - -export enum TaxInfoTypes { - CARE_INCOME = 300, - BURIAL_REVENUE = 301, - GRANT_FROM_THE_CEMETERY_FUND = 302, -} - -export const CEMETERYOPERATIONIDS = { - prefixIncome: 'cemeteryIncome', - prefixExpense: 'cemeteryExpense', - incomeLimit: 'cemeteryOperation.incomeLimit', - applicationType: 'cemeteryIncome.applicationType', - careIncome: 'cemeteryIncome.careIncome', - burialRevenue: 'cemeteryIncome.burialRevenue', - grantFromTheCemeteryFund: 'cemeteryIncome.grantFromTheCemeteryFund', - capitalIncome: 'cemeteryIncome.capitalIncome', - otherIncome: 'cemeteryIncome.otherIncome', - totalIncome: 'cemeteryIncome.total', - totalOperation: 'cemeteryRunningCost.totalOperation', - totalExpense: 'cemeteryExpense.total', - payroll: 'cemeteryExpense.payroll', - funeralCost: 'cemeteryExpense.funeralCost', - chapelExpense: 'cemeteryExpense.chapelExpense', - donationsToCemeteryFund: 'cemeteryExpense.cemeteryFundExpense', - donationsToOther: 'cemeteryExpense.donationsToOther', - otherOperationCost: 'cemeteryExpense.otherOperationCost', - depreciation: 'cemeteryExpense.depreciation', -} - -export const CAPITALNUMBERS = { - capitalPrefix: 'capitalNumbers', - capitalIncome: 'capitalNumbers.capitalIncome', - capitalCost: 'capitalNumbers.capitalCost', - total: 'capitalNumbers.total', -} - -export const CEMETERYEQUITIESANDLIABILITIESIDS = { - assetPrefix: 'cemeteryAsset', - liabilityPrefix: 'cemeteryLiability', - equityPrefix: 'cemeteryEquity', - currentAssets: 'cemeteryAsset.currentAssets', - fixedAssetsTotal: 'cemeteryAsset.fixedAssetsTotal', - assetTotal: 'cemeteryAsset.total', - longTerm: 'cemeteryLiability.longTerm', - shortTerm: 'cemeteryLiability.shortTerm', - liabilityTotal: 'cemeteryLiability.total', - equityAtTheBeginningOfTheYear: 'cemeteryEquity.equityAtTheBeginningOfTheYear', - revaluationDueToPriceChanges: 'cemeteryEquity.revaluationDueToPriceChanges', - reevaluateOther: 'cemeteryEquity.reevaluateOther', - operationResult: 'cemeteryEquity.operationResult', - equityTotal: 'cemeteryEquity.total', - totalEquityAndLiabilities: 'equityAndLiabilities.total', -} - -export const OPERATINGCOST = { - total: 'operatingCost.total', -} - -export const ABOUTIDS = { - operatingYear: 'conditionalAbout.operatingYear', - applicationType: 'conditionalAbout.applicationType', - powerOfAttorneyNationalId: 'about.powerOfAttorneyNationalId', - powerOfAttorneyName: 'about.powerOfAttorneyName', -} diff --git a/libs/application/templates/financial-statement-cemetery/src/utils/helpers.ts b/libs/application/templates/financial-statement-cemetery/src/utils/helpers.ts deleted file mode 100644 index c7b382ede33f..000000000000 --- a/libs/application/templates/financial-statement-cemetery/src/utils/helpers.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { ExternalData, FormValue } from '@island.is/application/types' -import { getValueViaPath } from '@island.is/application/core' -import { BOARDMEMEBER, CARETAKER, TOTAL } from './constants' -import { FinancialStatementCemetery } from '../lib/dataSchema' -import getYear from 'date-fns/getYear' -import subYears from 'date-fns/subYears' -import { BoardMember, Config, FSIUSERTYPE } from '../types/types' - -export const getTotal = (values: Record<string, string>, key: string) => { - if (!values[key]) { - return 0 - } - const total = Object.entries(values[key]) - .filter(([k, v]) => k !== TOTAL && !isNaN(Number(v))) - .map(([_k, v]) => Number(v)) - .reduce((prev, current) => { - return (prev += current) - }, 0) - return total -} - -export const currencyStringToNumber = (str: string) => { - if (!str) { - return str - } - const cleanString = str.replace(/[,\s]+|[.\s]+/g, '') - return parseInt(cleanString, 10) -} - -export const getCurrentUserType = ( - answers: FormValue, - externalData: ExternalData, -) => { - const fakeUserType: FSIUSERTYPE | undefined = getValueViaPath( - answers, - 'fakeData.options', - ) - - const currentUserType: FSIUSERTYPE | undefined = getValueViaPath( - externalData, - 'getUserType.data.value', - ) - - return fakeUserType ? fakeUserType : currentUserType -} - -export const getBoardmembersAndCaretakers = (members: Array<BoardMember>) => { - const careTakers = members - ?.filter((member) => member.role === CARETAKER) - .map((member) => member.nationalId) - const boardMembers = members - ?.filter((member) => member.role === BOARDMEMEBER) - ?.map((member) => member.nationalId) - - return { careTakers, boardMembers } -} - -export const isCemetryUnderFinancialLimit = ( - answers: FormValue, - externalData: ExternalData, -) => { - const userType = getCurrentUserType(answers, externalData) - const applicationAnswers = answers as FinancialStatementCemetery - const careTakerLimit = - applicationAnswers.cemeteryOperation?.incomeLimit ?? '0' - const fixedAssetsTotal = applicationAnswers.cemeteryAsset?.fixedAssetsTotal - const isCemetry = userType === FSIUSERTYPE.CEMETRY - const totalIncome = isCemetry ? applicationAnswers.cemeteryIncome?.total : '0' - const longTermDebt = applicationAnswers.cemeteryLiability?.longTerm - const isUnderLimit = currencyStringToNumber(totalIncome) < careTakerLimit - if ( - isCemetry && - isUnderLimit && - fixedAssetsTotal === '0' && - longTermDebt === '0' - ) { - return true - } - return false -} - -export const possibleOperatingYears = ( - yearLimit: string, - countYearBackwardsFrom: string, -) => { - const countFromYear = new Date(countYearBackwardsFrom) - const backwardsYearLimit = Number(yearLimit) - const operationYears = Array(backwardsYearLimit) - .fill('') - .map((_, index) => { - const dateDiff = subYears(countFromYear, index) - const yearsFromNow = getYear(dateDiff).toString() - return { label: yearsFromNow, value: yearsFromNow } - }) - return operationYears -} - -export const getConfigInfoForKey = (config: Config[], configKey: string) => { - return config?.filter((config: Config) => config.key === configKey)[0].value -} - -export const formatCurrency = (answer?: string) => { - if (!answer) return '0. kr' - return answer.replace(/\B(?=(\d{3})+(?!\d))/g, '.') + ' kr.' -} diff --git a/libs/application/templates/financial-statement-cemetery/tsconfig.lib.json b/libs/application/templates/financial-statement-cemetery/tsconfig.lib.json deleted file mode 100644 index 1547ea009d18..000000000000 --- a/libs/application/templates/financial-statement-cemetery/tsconfig.lib.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../../dist/out-tsc", - "types": ["node"] - }, - "files": [ - "../../../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": [ - "jest.config.ts", - "src/**/*.spec.ts", - "src/**/*.test.ts", - "src/**/*.spec.tsx", - "src/**/*.test.tsx", - "src/**/*.spec.js", - "src/**/*.test.js", - "src/**/*.spec.jsx", - "src/**/*.test.jsx" - ], - "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"] -} diff --git a/libs/application/templates/financial-statement-individual-election/.babelrc b/libs/application/templates/financial-statement-individual-election/.babelrc deleted file mode 100644 index 1ea870ead410..000000000000 --- a/libs/application/templates/financial-statement-individual-election/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - [ - "@nx/react/babel", - { - "runtime": "automatic", - "useBuiltIns": "usage" - } - ] - ], - "plugins": [] -} diff --git a/libs/application/templates/financial-statement-individual-election/README.md b/libs/application/templates/financial-statement-individual-election/README.md deleted file mode 100644 index 1cb047486eae..000000000000 --- a/libs/application/templates/financial-statement-individual-election/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# fiancial-statement-individual-election - -This library was generated with [Nx](https://nx.dev). - -## Running unit tests - -Run `nx test fiancial-statement-individual-election` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/application/templates/financial-statement-individual-election/jest.config.js b/libs/application/templates/financial-statement-individual-election/jest.config.js deleted file mode 100644 index 241cded06811..000000000000 --- a/libs/application/templates/financial-statement-individual-election/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - preset: './jest.preset.js', - rootDir: '../../../..', - roots: [__dirname], - transform: { - '^.+\\.[tj]sx?$': [ - 'babel-jest', - { cwd: __dirname, configFile: `${__dirname}/babel-jest.config.json` }, - ], - }, - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], - coverageDirectory: - '<rootDir>/coverage/libs/application/templates/financial-statement-individual-election', - displayName: 'application-templates-financial-statment-individual-election', -} diff --git a/libs/application/templates/financial-statement-individual-election/project.json b/libs/application/templates/financial-statement-individual-election/project.json deleted file mode 100644 index 52d173ca7dbe..000000000000 --- a/libs/application/templates/financial-statement-individual-election/project.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "fiancial-statement-individual-election", - "$schema": "../../../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "libs/application/templates/fiancial-statement-individual-election/src", - "projectType": "library", - "tags": ["lib:js", "scope:application-system"], - "targets": { - "lint": { - "executor": "@nx/eslint:lint" - }, - "extract-strings": { - "executor": "nx:run-commands", - "options": { - "command": "yarn ts-node -P libs/localization/tsconfig.lib.json libs/localization/scripts/extract libs/application/templates/financial-statement-individual-election/src/lib/messages.ts" - } - } - } -} diff --git a/libs/application/templates/financial-statement-individual-election/src/components/Logo.tsx b/libs/application/templates/financial-statement-individual-election/src/components/Logo.tsx deleted file mode 100644 index 0329185dbd37..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/components/Logo.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { useLocale } from '@island.is/localization' -import { Box, Text } from '@island.is/island-ui/core' -import { m } from '../lib/utils/messages' - -export const Logo = () => { - const { formatMessage } = useLocale() - - return ( - <Box> - <Text variant="eyebrow" as="p" color="purple600"> - {formatMessage(m.serviceProvider)} - </Text> - <Text variant="h3" as="p" color="purple600"> - {formatMessage(m.inao).toUpperCase()} - </Text> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/dataProviders/index.ts b/libs/application/templates/financial-statement-individual-election/src/dataProviders/index.ts deleted file mode 100644 index 36303255e230..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/dataProviders/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { defineTemplateApi } from '@island.is/application/types' -import { UserProfileApi } from '@island.is/application/types' - -export { - NationalRegistryUserApi, - IdentityApi as IndentityApiProvider, -} from '@island.is/application/types' -export const CurrentUserTypeProvider = defineTemplateApi({ - action: 'getUserType', - externalDataId: 'currentUserType', -}) -export const UserInfoApi = UserProfileApi.configure({ - params: { - catchMock: true, - }, -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionEquities/index.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/ElectionEquities/index.tsx deleted file mode 100644 index 8d9add4def32..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionEquities/index.tsx +++ /dev/null @@ -1,213 +0,0 @@ -import { useState, useEffect } from 'react' -import debounce from 'lodash/debounce' -import { useFormContext } from 'react-hook-form' -import { FieldBaseProps } from '@island.is/application/types' -import { - AlertBanner, - Box, - GridColumn, - GridContainer, - GridRow, - Text, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { InputController } from '@island.is/shared/form-fields' -import { getErrorViaPath } from '@island.is/application/core' -import { getTotal } from '../../lib/utils/helpers' -import { useTotals } from '../../hooks/useTotals' -import { - EQUITIESANDLIABILITIESIDS, - INPUTCHANGEINTERVAL, - VALIDATOR, -} from '../../lib/utils/constants' -import { m } from '../../lib/utils/messages' -import { Total } from '../IndividualElectionOperatingIncome/Total' - -export const ElectionEquities = ({ - setBeforeSubmitCallback, -}: FieldBaseProps) => { - const { formatMessage } = useLocale() - - const { - formState: { errors }, - clearErrors, - getValues, - setError, - } = useFormContext() - - const [getTotalEquity, totalEquity] = useTotals( - EQUITIESANDLIABILITIESIDS.equityPrefix, - ) - const [getTotalAssets, totalAssets] = useTotals( - EQUITIESANDLIABILITIESIDS.assetPrefix, - ) - const [getTotalLiabilities, totalLiabilities] = useTotals( - EQUITIESANDLIABILITIESIDS.liabilityPrefix, - ) - - const [equityAndDebts, setEquityAndDebts] = useState(0) - - useEffect(() => { - const total = totalEquity + totalLiabilities - setEquityAndDebts(total) - }, [totalEquity, totalLiabilities]) - - useEffect(() => { - clearErrors(VALIDATOR) - }, [totalEquity, totalLiabilities, totalAssets, clearErrors]) - - setBeforeSubmitCallback && - setBeforeSubmitCallback(async () => { - const values = getValues() - const assets = getTotal(values, 'asset') - const liabilties = getTotal(values, 'liability') - const equities = getTotal(values, 'equity') - - // assets should equal liabilties + equities - const isValid = liabilties + equities === assets - if (!isValid) { - setError(VALIDATOR, { - type: 'custom', - message: formatMessage(m.equityDebtsAssetsValidatorError), - }) - return [false, formatMessage(m.equityDebtsAssetsValidatorError)] - } - return [true, null] - }) - - return ( - <GridContainer> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text paddingY={1} as="h2" variant="h4"> - {formatMessage(m.properties)} - </Text> - <Box paddingY={1}> - <InputController - id={EQUITIESANDLIABILITIESIDS.fixedAssetsTotal} - name={EQUITIESANDLIABILITIESIDS.fixedAssetsTotal} - rightAlign - error={ - errors && - getErrorViaPath( - errors, - EQUITIESANDLIABILITIESIDS.fixedAssetsTotal, - ) - } - label={formatMessage(m.fixedAssetsTotal)} - onChange={debounce(() => { - getTotalAssets() - clearErrors(EQUITIESANDLIABILITIESIDS.fixedAssetsTotal) - }, INPUTCHANGEINTERVAL)} - backgroundColor="blue" - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={EQUITIESANDLIABILITIESIDS.currentAssets} - name={EQUITIESANDLIABILITIESIDS.currentAssets} - error={ - errors && - getErrorViaPath(errors, EQUITIESANDLIABILITIESIDS.currentAssets) - } - rightAlign - onChange={debounce(() => { - getTotalAssets() - clearErrors(EQUITIESANDLIABILITIESIDS.currentAssets) - }, INPUTCHANGEINTERVAL)} - label={formatMessage(m.currentAssets)} - backgroundColor="blue" - currency - /> - </Box> - <Total - name={EQUITIESANDLIABILITIESIDS.assetTotal} - total={totalAssets} - label={formatMessage(m.totalAssets)} - /> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text paddingY={1} as="h2" variant="h4"> - {formatMessage(m.debtsAndEquity)} - </Text> - <Box paddingY={1}> - <InputController - id={EQUITIESANDLIABILITIESIDS.longTerm} - name={EQUITIESANDLIABILITIESIDS.longTerm} - rightAlign - onChange={debounce(() => { - getTotalLiabilities() - clearErrors(EQUITIESANDLIABILITIESIDS.longTerm) - }, INPUTCHANGEINTERVAL)} - error={ - errors && - getErrorViaPath(errors, EQUITIESANDLIABILITIESIDS.longTerm) - } - label={formatMessage(m.longTerm)} - backgroundColor="blue" - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={EQUITIESANDLIABILITIESIDS.shortTerm} - name={EQUITIESANDLIABILITIESIDS.shortTerm} - rightAlign - onChange={debounce(() => { - getTotalLiabilities() - clearErrors(EQUITIESANDLIABILITIESIDS.shortTerm) - }, INPUTCHANGEINTERVAL)} - error={ - errors && - getErrorViaPath(errors, EQUITIESANDLIABILITIESIDS.shortTerm) - } - label={formatMessage(m.shortTerm)} - backgroundColor="blue" - currency - /> - </Box> - <Total - name={EQUITIESANDLIABILITIESIDS.totalLiability} - total={totalLiabilities} - label={formatMessage(m.totalDebts)} - /> - <Box paddingBottom={1} paddingTop={2}> - <InputController - id={EQUITIESANDLIABILITIESIDS.totalEquity} - name={EQUITIESANDLIABILITIESIDS.totalEquity} - rightAlign - onChange={debounce(() => { - getTotalEquity() - clearErrors(EQUITIESANDLIABILITIESIDS.totalEquity) - }, INPUTCHANGEINTERVAL)} - error={ - errors && - getErrorViaPath(errors, EQUITIESANDLIABILITIESIDS.totalEquity) - } - label={formatMessage(m.equity)} - backgroundColor="blue" - currency - /> - </Box> - <Box paddingY={1}> - <Total - name={EQUITIESANDLIABILITIESIDS.totalEquityAndLiabilities} - total={equityAndDebts} - label={formatMessage(m.debtsAndCash)} - /> - </Box> - </GridColumn> - </GridRow> - {errors && errors.validator ? ( - <Box paddingY={2}> - <AlertBanner - title={formatMessage(m.equityErrorTitle)} - description={formatMessage(m.equityDebtsAssetsValidatorError)} - variant="error" - /> - </Box> - ) : null} - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/ElectionSelect.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/ElectionSelect.tsx deleted file mode 100644 index 63feb31917f1..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/ElectionSelect.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { useEffect } from 'react' -import { - AlertMessage, - Box, - ContentBlock, - SkeletonLoader, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { SelectController } from '@island.is/shared/form-fields' -import { ApolloError } from '@apollo/client/errors' -import { getErrorViaPath } from '@island.is/application/core' -import { useFormContext } from 'react-hook-form' -import { m } from '../../lib/utils/messages' -import { ABOUTIDS } from '../../lib/utils/constants' -import { Options } from '../../types/types' -import { FinancialStatementsInaoElection } from '@island.is/api/schema' - -export type ElectionSelectProps = { - defaultElections: string - error?: ApolloError - financialStatementsInaoElections: FinancialStatementsInaoElection[] - getDefaultElection: () => string - getElectionInfo: (electionId: string | undefined) => void - loading: boolean - options: Options -} - -export const ElectionSelect = ({ - defaultElections, - error, - financialStatementsInaoElections, - getDefaultElection, - getElectionInfo, - loading, - options, -}: ElectionSelectProps) => { - const { formatMessage } = useLocale() - const { - formState: { errors }, - setValue, - } = useFormContext() - - useEffect(() => { - getDefaultElection() - }, [getDefaultElection]) - - if (loading) { - return <SkeletonLoader height={70} width="100%" borderRadius="large" /> - } - - if (error || financialStatementsInaoElections?.length <= 0) { - return ( - <ContentBlock> - <AlertMessage - type="error" - title={formatMessage(m.fetchErrorTitle)} - message={formatMessage(m.fetchErrorMsg)} - /> - </ContentBlock> - ) - } - - return ( - <Box width="full"> - <SelectController - id={ABOUTIDS.selectElection} - name={ABOUTIDS.selectElection} - onSelect={(val) => { - setValue(ABOUTIDS.electionName, val.label) - getElectionInfo(val.value) - }} - backgroundColor="blue" - label={formatMessage(m.election)} - placeholder={formatMessage(m.pickElectionType)} - error={errors && getErrorViaPath(errors, ABOUTIDS.selectElection)} - options={options} - defaultValue={defaultElections} - /> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/IncomeLimitFields.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/IncomeLimitFields.tsx deleted file mode 100644 index 6dcfa15fe668..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/IncomeLimitFields.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { useEffect } from 'react' -import { - AlertMessage, - ContentBlock, - SkeletonLoader, -} from '@island.is/island-ui/core' -import { RadioController } from '@island.is/shared/form-fields' -import { useLocale } from '@island.is/localization' -import { useLazyQuery } from '@apollo/client' -import { getFinancialLimit } from '../../graphql' -import { FSIUSERTYPE } from '../../types/types' -import { ABOUTIDS, GREATER, LESS } from '../../lib/utils/constants' -import { m } from '../../lib/utils/messages' - -type IncomeLimitProps = { - clientType?: FSIUSERTYPE - year?: string -} - -export const IncomeLimitFields = ({ year }: IncomeLimitProps) => { - const { formatMessage, formatNumber } = useLocale() - const [getLimit, { data, loading, error }] = useLazyQuery(getFinancialLimit, { - variables: { - input: { year, clientType: FSIUSERTYPE.INDIVIDUAL.toString() }, - }, - }) - useEffect(() => { - if (year) { - getLimit() - } - }, [year, getLimit]) - - if (loading || !year) { - return ( - <ContentBlock> - <SkeletonLoader height={100} width="100%" borderRadius="large" /> - <SkeletonLoader height={100} width="100%" borderRadius="large" /> - </ContentBlock> - ) - } - const limit = data?.financialStatementsInaoClientFinancialLimit - - if (!limit) { - return ( - <ContentBlock> - <AlertMessage - type="error" - title={formatMessage(m.fetchErrorTitle)} - message={formatMessage(m.financialLimitErrorMessage)} - /> - </ContentBlock> - ) - } - - if (error) { - return ( - <ContentBlock> - <AlertMessage - type="error" - title={formatMessage(m.fetchErrorTitle)} - message={formatMessage(m.fetchErrorMsg)} - /> - </ContentBlock> - ) - } - - return ( - <RadioController - id={ABOUTIDS.incomeLimit} - options={[ - { - label: `${formatMessage(m.lessThanLimit)} ${formatNumber( - limit, - )} ${formatMessage(m.crowns)}`, - value: LESS, - dataTestId: 'radio-incomeLimit-lessThan', - }, - { - label: `${formatMessage(m.moreThanLimit)} ${formatNumber( - limit, - )} ${formatMessage(m.crowns)}`, - value: GREATER, - dataTestId: 'radio-incomeLimit-moreThan', - }, - ]} - /> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/electionReducer.ts b/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/electionReducer.ts deleted file mode 100644 index b85f3a232b4f..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/electionReducer.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { UPDATE_ELECTION_ACTION } from '../../lib/utils/constants' - -type ElectionState = { name?: string; year?: string } - -type ElectionAction = { - type: string - payload: { name?: string; year?: string } -} - -export const electionInitialState = { - name: '', - year: '', -} - -export const electionReducer = ( - state: ElectionState, - action: ElectionAction, -) => { - switch (action.type) { - case UPDATE_ELECTION_ACTION: - return { - ...state, - name: action.payload.name, - year: action.payload.year, - } - default: - return state - } -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/index.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/index.tsx deleted file mode 100644 index 7cf45058ccb9..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionInfoFields/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { useCallback, useMemo, useReducer } from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' - -import { useQuery } from '@apollo/client' -import { getAvailableElections } from '../../graphql' -import { - Application, - FinancialStatementsInaoElection, -} from '@island.is/api/schema' -import { useFormContext } from 'react-hook-form' -import { ABOUTIDS, UPDATE_ELECTION_ACTION } from '../../lib/utils/constants' -import { electionInitialState, electionReducer } from './electionReducer' -import { Options } from '../../types/types' -import { ElectionSelect } from './ElectionSelect' -import { IncomeLimitFields } from './IncomeLimitFields' -import { m } from '../../lib/utils/messages' - -export const ElectionsInfoFields = ({ - application, -}: { - application: Application -}) => { - const [state, dispatch] = useReducer(electionReducer, electionInitialState) - const { getValues, setValue } = useFormContext() - const values = getValues() - const { data, loading, error } = useQuery(getAvailableElections) - - const { formatMessage } = useLocale() - - const financialStatementsInaoElections: FinancialStatementsInaoElection[] = - useMemo( - () => data?.financialStatementsInaoElections, - [data?.financialStatementsInaoElections], - ) - - const options: Options = useMemo( - () => - financialStatementsInaoElections?.map((option) => { - return { label: option.name, value: option.electionId } - }), - [financialStatementsInaoElections], - ) - - const defaultElections = options?.[0]?.value - - const getElectionInfo = useCallback( - (selectedElectionId: string | undefined) => { - const currentElectionInfo = financialStatementsInaoElections?.find( - (elections: FinancialStatementsInaoElection) => - elections.electionId === selectedElectionId, - ) - const electionYear = currentElectionInfo?.electionDate - ? new Date(currentElectionInfo.electionDate).getFullYear() - : '' - - const electionName = currentElectionInfo?.name - const genitiveName = currentElectionInfo?.genitiveName - setValue(ABOUTIDS.electionName, electionName) - setValue(ABOUTIDS.genitiveName, genitiveName) - dispatch({ - type: UPDATE_ELECTION_ACTION, - payload: { - name: electionName, - year: electionYear.toString(), - }, - }) - }, - [financialStatementsInaoElections, setValue], - ) - - const getDefaultElection = useCallback(() => { - const selectedElectionId = - values?.election?.selectElection || defaultElections - - const currentElection = options?.find( - (option) => option.value === selectedElectionId, - ) - getElectionInfo(currentElection?.value) - - return currentElection?.label || '' - }, [ - defaultElections, - values?.election?.selectElection, - options, - getElectionInfo, - ]) - - return ( - <> - <ElectionSelect - defaultElections={defaultElections} - getDefaultElection={getDefaultElection} - getElectionInfo={getElectionInfo} - financialStatementsInaoElections={financialStatementsInaoElections} - options={options} - loading={loading} - error={error} - /> - <Box paddingTop={4} paddingBottom={3}> - <Text variant="h3">{formatMessage(m.campaignCost)}</Text> - <Text>{formatMessage(m.pleaseSelect)}</Text> - </Box> - <IncomeLimitFields year={state.year} /> - </> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionStatement/index.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/ElectionStatement/index.tsx deleted file mode 100644 index eb7a3e8424a9..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/ElectionStatement/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { getErrorViaPath, getValueViaPath } from '@island.is/application/core' -import { AlertBanner, Box, InputError, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { DefaultEvents, FieldBaseProps } from '@island.is/application/types' -import { format as formatNationalId } from 'kennitala' -import { useSubmitApplication } from '../../hooks/useSubmitApplication' -import { useFormContext } from 'react-hook-form' -import { FinancialStatementIndividualElection } from '../../lib/utils/dataSchema' -import { ELECTIONLIMIT, GREATER } from '../../lib/utils/constants' -import BottomBar from '../Overview/BottomBar' -import { m } from '../../lib/utils/messages' -import { formatNumber } from '../../lib/utils/helpers' - -export const ElectionStatement = ({ - application, - goToScreen, - refetch, -}: FieldBaseProps) => { - const { formatMessage } = useLocale() - const { - formState: { errors }, - } = useFormContext() - const answers = application.answers as FinancialStatementIndividualElection - const email = getValueViaPath(answers, 'about.email') - const [submitApplication, { loading }] = useSubmitApplication({ - application, - refetch, - event: DefaultEvents.SUBMIT, - }) - - const onBackButtonClick = () => { - const incomeLimit = getValueViaPath(answers, 'election.incomeLimit') - - if (incomeLimit === GREATER) { - goToScreen && goToScreen('attachments.file') - } else { - goToScreen && goToScreen('election') - } - } - - const onSendButtonClick = () => { - submitApplication() - } - - return ( - <Box> - <Box paddingBottom={2}> - <Text> - {`${answers.about.fullName}, - ${formatMessage(m.nationalId)}: ${formatNationalId( - answers.about.nationalId, - )}, ${formatMessage(m.participated)} - ${answers.election.genitiveName}`} - </Text> - </Box> - <Box paddingY={2}> - <Text>{`${formatMessage(m.electionDeclare)} ${formatNumber( - ELECTIONLIMIT, - )}`}</Text> - </Box> - <Box paddingY={2}> - <Text>{formatMessage(m.electionStatementLaw)}</Text> - </Box> - <Box paddingY={2}> - <AlertBanner - title={`${formatMessage(m.signatureTitle)}`} - description={`${formatMessage( - m.signatureMessage, - )} ${email} ${formatMessage(m.signaturePossible)}`} - variant="info" - /> - </Box> - {errors && getErrorViaPath(errors, 'applicationApprove') ? ( - <InputError errorMessage={formatMessage(m.errorApproval)} /> - ) : null} - <BottomBar - loading={loading} - onSendButtonClick={onSendButtonClick} - onBackButtonClick={onBackButtonClick} - sendText={formatMessage(m.sendStatement)} - /> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Expenses.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Expenses.tsx deleted file mode 100644 index fbf1c4c19c0e..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Expenses.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import debounce from 'lodash/debounce' -import { useFormContext } from 'react-hook-form' -import { InputController } from '@island.is/shared/form-fields' -import { Box } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { getErrorViaPath } from '@island.is/application/core' -import { - INDIVIDUALOPERATIONIDS, - INPUTCHANGEINTERVAL, -} from '../../lib/utils/constants' -import { m } from '../../lib/utils/messages' - -type Props = { - getSum: () => void -} - -export const Expenses = ({ getSum }: Props) => { - const { formatMessage } = useLocale() - const { - formState: { errors }, - clearErrors, - } = useFormContext() - - const onInputChange = debounce((fieldId: string) => { - getSum() - clearErrors(fieldId) - }, INPUTCHANGEINTERVAL) - - return ( - <> - <Box paddingY={1}> - <InputController - id={INDIVIDUALOPERATIONIDS.electionOffice} - name={INDIVIDUALOPERATIONIDS.electionOffice} - error={ - errors && - getErrorViaPath(errors, INDIVIDUALOPERATIONIDS.electionOffice) - } - label={formatMessage(m.electionOffice)} - onChange={() => onInputChange(INDIVIDUALOPERATIONIDS.electionOffice)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={INDIVIDUALOPERATIONIDS.advertisements} - name={INDIVIDUALOPERATIONIDS.advertisements} - error={ - errors && - getErrorViaPath(errors, INDIVIDUALOPERATIONIDS.advertisements) - } - label={formatMessage(m.advertisements)} - onChange={() => onInputChange(INDIVIDUALOPERATIONIDS.electionOffice)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={INDIVIDUALOPERATIONIDS.travelCost} - name={INDIVIDUALOPERATIONIDS.travelCost} - error={ - errors && getErrorViaPath(errors, INDIVIDUALOPERATIONIDS.travelCost) - } - label={formatMessage(m.travelCost)} - onChange={() => onInputChange(INDIVIDUALOPERATIONIDS.travelCost)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={INDIVIDUALOPERATIONIDS.otherCost} - name={INDIVIDUALOPERATIONIDS.otherCost} - error={ - errors && getErrorViaPath(errors, INDIVIDUALOPERATIONIDS.otherCost) - } - label={formatMessage(m.otherCost)} - onChange={() => onInputChange(INDIVIDUALOPERATIONIDS.otherCost)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - </> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Income.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Income.tsx deleted file mode 100644 index 79a91c9f750b..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Income.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import debounce from 'lodash/debounce' -import { useFormContext } from 'react-hook-form' -import { Box } from '@island.is/island-ui/core' -import { getErrorViaPath } from '@island.is/application/core' -import { InputController } from '@island.is/shared/form-fields' -import { useLocale } from '@island.is/localization' -import { - INDIVIDUALOPERATIONIDS, - INPUTCHANGEINTERVAL, -} from '../../lib/utils/constants' -import { m } from '../../lib/utils/messages' - -type Props = { - getSum: () => void -} - -export const Income = ({ getSum }: Props) => { - const { formatMessage } = useLocale() - const { - formState: { errors }, - clearErrors, - } = useFormContext() - - const onInputChange = debounce((fieldId: string) => { - getSum() - clearErrors(fieldId) - }, INPUTCHANGEINTERVAL) - - return ( - <> - <Box paddingY={1}> - <InputController - id={INDIVIDUALOPERATIONIDS.contributionsByLegalEntities} - name={INDIVIDUALOPERATIONIDS.contributionsByLegalEntities} - error={ - errors && - getErrorViaPath( - errors, - INDIVIDUALOPERATIONIDS.contributionsByLegalEntities, - ) - } - label={formatMessage(m.contributionsFromLegalEntities)} - onChange={() => - onInputChange(INDIVIDUALOPERATIONIDS.contributionsByLegalEntities) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={INDIVIDUALOPERATIONIDS.individualContributions} - name={INDIVIDUALOPERATIONIDS.individualContributions} - error={ - errors && - getErrorViaPath( - errors, - INDIVIDUALOPERATIONIDS.individualContributions, - ) - } - label={formatMessage(m.contributionsFromIndividuals)} - onChange={() => - onInputChange(INDIVIDUALOPERATIONIDS.individualContributions) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={INDIVIDUALOPERATIONIDS.candidatesOwnContributions} - name={INDIVIDUALOPERATIONIDS.candidatesOwnContributions} - error={ - errors && - getErrorViaPath( - errors, - INDIVIDUALOPERATIONIDS.candidatesOwnContributions, - ) - } - label={formatMessage(m.candidatesOwnContributions)} - onChange={() => - onInputChange(INDIVIDUALOPERATIONIDS.candidatesOwnContributions) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - <Box paddingY={1}> - <InputController - id={INDIVIDUALOPERATIONIDS.otherIncome} - name={INDIVIDUALOPERATIONIDS.otherIncome} - error={ - errors && - getErrorViaPath(errors, INDIVIDUALOPERATIONIDS.otherIncome) - } - label={formatMessage(m.otherIncome)} - onChange={() => onInputChange(INDIVIDUALOPERATIONIDS.otherIncome)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - </> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Total.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Total.tsx deleted file mode 100644 index f0cd9b51798f..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/Total.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { useEffect } from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import { InputController } from '@island.is/shared/form-fields' -import { useFormContext } from 'react-hook-form' - -type Props = { - name: string - total: number - label: string - title?: string -} - -export const Total = ({ name, total, label, title }: Props) => { - const { setValue } = useFormContext() - - useEffect(() => { - setValue(name, total.toString()) - }, [total]) - - return ( - <Box paddingY={3}> - {title ? ( - <Text as="h4" variant="h4" paddingBottom={1}> - {title} - </Text> - ) : null} - - <InputController - id={name} - name={name} - label={label} - rightAlign - readOnly - backgroundColor="blue" - currency - /> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/index.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/index.tsx deleted file mode 100644 index dd07aff8f432..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/IndividualElectionOperatingIncome/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { - GridColumn, - GridContainer, - GridRow, - Text, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { - INDIVIDUALOPERATIONIDS, - OPERATINGCOST, -} from '../../lib/utils/constants' -import { m } from '../../lib/utils/messages' -import { Income } from './Income' -import { Expenses } from './Expenses' -import { Total } from './Total' -import { useTotals } from '../../hooks/useTotals' - -export const IndividualElectionOperatingIncome = () => { - const { formatMessage } = useLocale() - const [getTotalIncome, totalIncome] = useTotals( - INDIVIDUALOPERATIONIDS.incomePrefix, - ) - const [getTotalExpense, totalExpense] = useTotals( - INDIVIDUALOPERATIONIDS.expensePrefix, - ) - - return ( - <GridContainer> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text paddingY={1} as="h2" variant="h4"> - {formatMessage(m.income)} - </Text> - <Income getSum={getTotalIncome} /> - <Total - name={INDIVIDUALOPERATIONIDS.totalIncome} - total={totalIncome} - label={formatMessage(m.totalIncome)} - /> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Text paddingY={1} as="h2" variant="h4"> - {formatMessage(m.expenses)} - </Text> - <Expenses getSum={getTotalExpense} /> - <Total - name={INDIVIDUALOPERATIONIDS.totalExpense} - total={totalExpense} - label={formatMessage(m.totalExpenses)} - /> - </GridColumn> - </GridRow> - <GridRow align="flexEnd"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Total - name={OPERATINGCOST.total} - label={formatMessage(m.operatingCost)} - title={formatMessage(m.operatingCostBefore)} - total={totalIncome - totalExpense} - /> - </GridColumn> - </GridRow> - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/KeyNumbersCapital/index.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/KeyNumbersCapital/index.tsx deleted file mode 100644 index 9e6a4b91fbd4..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/KeyNumbersCapital/index.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { useState, useEffect } from 'react' -import { - Box, - GridColumn, - GridContainer, - GridRow, -} from '@island.is/island-ui/core' -import { getValueViaPath } from '@island.is/application/core' -import debounce from 'lodash/debounce' -import { useFormContext } from 'react-hook-form' -import { useLocale } from '@island.is/localization' -import { InputController } from '@island.is/shared/form-fields' -import { getErrorViaPath } from '@island.is/application/core' -import { CAPITALNUMBERS, INPUTCHANGEINTERVAL } from '../../lib/utils/constants' -import { m } from '../../lib/utils/messages' -import { Total } from '../IndividualElectionOperatingIncome/Total' - -export const KeyNumbersCapital = () => { - const { formatMessage } = useLocale() - const [totalCapital, setTotalCapital] = useState(0) - const { - clearErrors, - formState: { errors }, - getValues, - } = useFormContext() - - const getTotalCapital = () => { - const values = getValues() - - const income = getValueViaPath(values, CAPITALNUMBERS.capitalIncome) || '0' - const expense = getValueViaPath(values, CAPITALNUMBERS.capitalCost) || '0' - const total = Number(income) - Number(expense) - setTotalCapital(total) - } - - useEffect(() => { - getTotalCapital() - }, [getTotalCapital]) - - return ( - <GridContainer> - <GridRow align="spaceBetween"> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box paddingY={1}> - <InputController - id={CAPITALNUMBERS.capitalIncome} - name={CAPITALNUMBERS.capitalIncome} - error={ - errors && getErrorViaPath(errors, CAPITALNUMBERS.capitalIncome) - } - onChange={debounce(() => { - getTotalCapital() - clearErrors(CAPITALNUMBERS.capitalIncome) - }, INPUTCHANGEINTERVAL)} - label={formatMessage(m.capitalIncome)} - backgroundColor="blue" - rightAlign - currency - /> - </Box> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box paddingY={1}> - <InputController - id={CAPITALNUMBERS.capitalCost} - name={CAPITALNUMBERS.capitalCost} - onChange={debounce(() => { - getTotalCapital() - clearErrors(CAPITALNUMBERS.capitalCost) - }, INPUTCHANGEINTERVAL)} - label={formatMessage(m.capitalCost)} - error={ - errors && getErrorViaPath(errors, CAPITALNUMBERS.capitalCost) - } - backgroundColor="blue" - rightAlign - currency - /> - </Box> - </GridColumn> - </GridRow> - <GridRow> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Total - name={CAPITALNUMBERS.total} - total={totalCapital} - label={formatMessage(m.totalCapital)} - /> - </GridColumn> - </GridRow> - </GridContainer> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/AboutOverview.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/Overview/AboutOverview.tsx deleted file mode 100644 index 2ab995ec5668..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/AboutOverview.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { GridColumn, GridRow } from '@island.is/island-ui/core' -import { formatPhoneNumber } from '@island.is/application/ui-components' -import { format as formatNationalId } from 'kennitala' -import { sectionColumn } from './overviewStyles.css' -import { FinancialStatementIndividualElection } from '../../lib/utils/dataSchema' -import { ValueLine } from './ValueLine' -import { m } from '../../lib/utils/messages' - -type Props = { - answers: FinancialStatementIndividualElection -} - -export const AboutOverview = ({ answers }: Props) => { - return ( - <> - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine label={m.fullName} value={answers.about.fullName} /> - </GridColumn> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.nationalId} - value={ - answers.about?.nationalId - ? formatNationalId(answers.about.nationalId) - : '-' - } - /> - </GridColumn> - </GridRow> - <GridRow> - {answers.about.powerOfAttorneyName ? ( - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.powerOfAttorneyName} - value={answers.about.powerOfAttorneyName} - /> - </GridColumn> - ) : null} - {answers.about.powerOfAttorneyNationalId ? ( - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.powerOfAttorneyNationalId} - value={formatNationalId(answers.about.powerOfAttorneyNationalId)} - /> - </GridColumn> - ) : null} - </GridRow> - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine label={m.email} value={answers.about.email} /> - </GridColumn> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.phoneNumber} - value={formatPhoneNumber(answers.about.phoneNumber)} - /> - </GridColumn> - </GridRow> - </> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/AssetDebtEquityOverview.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/Overview/AssetDebtEquityOverview.tsx deleted file mode 100644 index 2109c38e9416..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/AssetDebtEquityOverview.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { Box, GridColumn, GridRow, Text } from '@island.is/island-ui/core' -import { ValueLine } from './ValueLine' -import { useLocale } from '@island.is/localization' -import { formatCurrency } from '../../lib/utils/helpers' -import { sectionColumn } from './overviewStyles.css' -import { FinancialStatementIndividualElection } from '../../lib/utils/dataSchema' -import { m } from '../../lib/utils/messages' - -type Props = { - answers: FinancialStatementIndividualElection -} - -export const AssetDebtEquityOverview = ({ answers }: Props) => { - const { formatMessage } = useLocale() - - return ( - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.properties)} - </Text> - </Box> - <ValueLine - label={m.fixedAssetsTotal} - value={formatCurrency(answers.asset?.fixedAssetsTotal)} - /> - <ValueLine - label={m.currentAssets} - value={formatCurrency(answers.asset?.currentAssets)} - /> - <ValueLine - label={m.totalAssets} - value={formatCurrency(answers.asset?.total)} - isTotal - /> - </GridColumn> - - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.debtsAndEquity)} - </Text> - </Box> - <ValueLine - label={m.longTerm} - value={formatCurrency(answers.liability?.longTerm)} - /> - <ValueLine - label={m.shortTerm} - value={formatCurrency(answers.liability?.shortTerm)} - /> - <ValueLine - label={m.totalLiabilities} - value={formatCurrency(answers.liability?.total)} - isTotal - /> - <Box paddingTop={3}> - <ValueLine - label={m.equity} - value={formatCurrency(answers.equity?.totalEquity)} - /> - <ValueLine - label={m.debtsAndCash} - value={formatCurrency(answers.equityAndLiabilities?.total)} - isTotal - /> - </Box> - </GridColumn> - </GridRow> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/BottomBar.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/Overview/BottomBar.tsx deleted file mode 100644 index d35950f2eebc..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/BottomBar.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { Box, Button, Divider } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/utils/messages' - -type Props = { - onBackButtonClick: () => void - onSendButtonClick: () => void - loading?: boolean - sendText?: string -} - -const BottomBar = ({ - onBackButtonClick, - onSendButtonClick, - loading = false, - sendText, -}: Props) => { - const { formatMessage } = useLocale() - - return ( - <> - <Box paddingY={3}> - <Divider /> - </Box> - <Box display="flex" justifyContent="spaceBetween" paddingY={5}> - <Button variant="ghost" onClick={onBackButtonClick} disabled={loading}> - {formatMessage(m.goBack)} - </Button> - <Button icon="checkmark" onClick={onSendButtonClick} loading={loading}> - {sendText ? sendText : formatMessage(m.send)} - </Button> - </Box> - </> - ) -} - -export default BottomBar diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/CapitalNumbersOverview.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/Overview/CapitalNumbersOverview.tsx deleted file mode 100644 index 5dfba0d08c0f..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/CapitalNumbersOverview.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Box, GridColumn, GridRow, Text } from '@island.is/island-ui/core' -import { ValueLine } from './ValueLine' -import { sectionColumn, starterColumnStyle } from './overviewStyles.css' -import { useLocale } from '@island.is/localization' -import { formatCurrency } from '../../lib/utils/helpers' -import { FinancialStatementIndividualElection } from '../../lib/utils/dataSchema' -import { m } from '../../lib/utils/messages' - -type Props = { - answers: FinancialStatementIndividualElection -} - -export const CapitalNumberOverview = ({ answers }: Props) => { - const { formatMessage } = useLocale() - return ( - <> - <Box className={starterColumnStyle}> - <Text variant="h3" as="h3"> - {formatMessage(m.capitalNumbers)} - </Text> - </Box> - <GridRow> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.capitalIncome} - value={formatCurrency(answers.capitalNumbers.capitalIncome)} - /> - </GridColumn> - {answers.capitalNumbers?.capitalCost ? ( - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <ValueLine - label={m.capitalCost} - value={formatCurrency(answers.capitalNumbers.capitalCost)} - /> - </GridColumn> - ) : null} - </GridRow> - <GridRow> - <GridColumn className={sectionColumn}> - <ValueLine - isTotal - label={m.totalCapital} - value={formatCurrency(answers.capitalNumbers?.total)} - /> - </GridColumn> - </GridRow> - </> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/FileValueLine.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/Overview/FileValueLine.tsx deleted file mode 100644 index 9f89d64da2d9..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/FileValueLine.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { ActionCard, Box, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/utils/messages' - -type Props = { - label?: string -} - -export const FileValueLine = ({ label = '' }: Props) => { - const { formatMessage } = useLocale() - - return ( - <Box paddingY={2}> - <Text variant="h3">{formatMessage(m.files)}</Text> - <Box paddingY={2}> - <ActionCard - heading={label} - headingVariant="h4" - cta={{ - label: '', - }} - tag={{ - label: 'PDF', - }} - backgroundColor="blue" - /> - </Box> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/ValueLine.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/Overview/ValueLine.tsx deleted file mode 100644 index e52d48763b63..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/ValueLine.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Box, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { MessageDescriptor } from 'react-intl' - -type Props = { - label: string | MessageDescriptor - value?: string | MessageDescriptor - isTotal?: boolean -} - -export const ValueLine = ({ label, value = '-', isTotal = false }: Props) => { - const { formatMessage } = useLocale() - - return ( - <Box paddingY={1} style={isTotal ? { borderTop: '1px solid black' } : {}}> - <Text variant="medium" fontWeight="semiBold" as="label"> - {formatMessage(label)} - </Text> - - <Text - variant="default" - as="p" - fontWeight={isTotal ? 'semiBold' : 'regular'} - > - {formatMessage(value)} - </Text> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/index.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/Overview/index.tsx deleted file mode 100644 index b90e42bcb992..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/index.tsx +++ /dev/null @@ -1,224 +0,0 @@ -import { useState } from 'react' -import { DefaultEvents, FieldBaseProps } from '@island.is/application/types' - -import { - AlertBanner, - Box, - Checkbox, - Divider, - GridColumn, - GridRow, - InputError, - Text, -} from '@island.is/island-ui/core' -import { Controller, useFormContext } from 'react-hook-form' -import { getErrorViaPath, getValueViaPath } from '@island.is/application/core' -import { useLocale } from '@island.is/localization' -import { formatCurrency } from '../../lib/utils/helpers' -import { starterColumnStyle, sectionColumn } from './overviewStyles.css' -import { FinancialStatementIndividualElection } from '../../lib/utils/dataSchema' -import { useSubmitApplication } from '../../hooks/useSubmitApplication' -import { GREATER } from '../../lib/utils/constants' -import { m } from '../../lib/utils/messages' -import { AboutOverview } from './AboutOverview' -import { ValueLine } from './ValueLine' -import { CapitalNumberOverview } from './CapitalNumbersOverview' -import { AssetDebtEquityOverview } from './AssetDebtEquityOverview' -import { FileValueLine } from './FileValueLine' -import BottomBar from './BottomBar' - -export const Overview = ({ - application, - goToScreen, - refetch, -}: FieldBaseProps) => { - const { formatMessage } = useLocale() - const { - formState: { errors }, - setError, - setValue, - } = useFormContext() - const [approveOverview, setApproveOverview] = useState(false) - - const answers = application.answers as FinancialStatementIndividualElection - const fileName = answers.attachments?.file?.[0]?.name - - const [submitApplication, { error: submitError, loading }] = - useSubmitApplication({ - application, - refetch, - event: DefaultEvents.SUBMIT, - }) - - const onBackButtonClick = () => { - const incomeLimit = getValueViaPath(answers, 'election.incomeLimit') - - if (incomeLimit === GREATER) { - goToScreen && goToScreen('attachments.file') - } else { - goToScreen && goToScreen('election') - } - } - - const onSendButtonClick = () => { - if (approveOverview) { - submitApplication() - } else { - setError('applicationApprove', { - type: 'error', - }) - } - } - - return ( - <Box marginBottom={2}> - <Divider /> - <Box paddingY={3}> - <AboutOverview answers={answers} /> - </Box> - <Divider /> - <Box paddingY={3}> - <Box className={starterColumnStyle}> - <Text variant="h3" as="h3"> - {formatMessage(m.expensesIncome)} - </Text> - </Box> - <GridRow direction="row"> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.income)} - </Text> - </Box> - - <ValueLine - label={m.contributionsFromLegalEntities} - value={formatCurrency( - answers.individualIncome?.contributionsByLegalEntities, - )} - /> - <ValueLine - label={m.contributionsFromIndividuals} - value={formatCurrency( - answers.individualIncome?.individualContributions, - )} - /> - <ValueLine - label={m.candidatesOwnContributions} - value={formatCurrency( - answers.individualIncome?.candidatesOwnContributions, - )} - /> - <ValueLine - label={m.otherIncome} - value={formatCurrency(answers.individualIncome?.otherIncome)} - /> - <ValueLine - label={m.totalIncome} - value={formatCurrency(answers.individualIncome?.total)} - isTotal - /> - </GridColumn> - <GridColumn span={['12/12', '6/12']} className={sectionColumn}> - <Box paddingTop={3} paddingBottom={2}> - <Text variant="h4" as="h4"> - {formatMessage(m.expenses)} - </Text> - </Box> - <ValueLine - label={m.electionOffice} - value={formatCurrency(answers.individualExpense?.electionOffice)} - /> - <ValueLine - label={m.advertisements} - value={formatCurrency(answers.individualExpense?.advertisements)} - /> - <ValueLine - label={m.travelCost} - value={formatCurrency(answers.individualExpense?.travelCost)} - /> - <ValueLine - label={m.otherCost} - value={formatCurrency(answers.individualExpense?.otherCost)} - /> - <ValueLine - label={m.totalExpenses} - value={formatCurrency(answers.individualExpense?.total)} - isTotal - /> - </GridColumn> - </GridRow> - </Box> - <Divider /> - <Box paddingY={3}> - <CapitalNumberOverview answers={answers} /> - </Box> - <Divider /> - <Box paddingY={3}> - <Box className={starterColumnStyle}> - <Text variant="h3" as="h3"> - {formatMessage(m.propertiesAndDebts)} - </Text> - </Box> - <AssetDebtEquityOverview answers={answers} /> - </Box> - <Divider /> - - <Box paddingY={3}> - {fileName ? ( - <> - <FileValueLine label={answers.attachments?.file?.[0]?.name} /> - <Divider /> - </> - ) : null} - </Box> - - <Box paddingY={3}> - <Text variant="h3" as="h3"> - {formatMessage(m.overview)} - </Text> - </Box> - <Box background="blue100"> - <Controller - name="applicationApprove" - defaultValue={approveOverview} - rules={{ required: true }} - render={({ field: { onChange, value } }) => { - return ( - <Checkbox - onChange={(e) => { - onChange(e.target.checked) - setApproveOverview(e.target.checked) - setValue('applicationApprove' as string, e.target.checked) - }} - checked={value} - name="applicationApprove" - id="applicationApprove" - label={formatMessage(m.overviewCorrect)} - large - /> - ) - }} - /> - </Box> - {errors && getErrorViaPath(errors, 'applicationApprove') ? ( - <InputError errorMessage={formatMessage(m.errorApproval)} /> - ) : null} - {submitError ? ( - <Box paddingY={3}> - <AlertBanner - title={formatMessage(m.submitErrorTitle)} - description={formatMessage(m.submitErrorMessage)} - variant="error" - dismissable - /> - </Box> - ) : null} - <BottomBar - loading={loading} - onSendButtonClick={onSendButtonClick} - onBackButtonClick={onBackButtonClick} - /> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/overviewStyles.css.ts b/libs/application/templates/financial-statement-individual-election/src/fields/Overview/overviewStyles.css.ts deleted file mode 100644 index 02636c43d839..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Overview/overviewStyles.css.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { style } from '@vanilla-extract/css' - -export const columnStyle = style({ - paddingTop: '0px', - paddingBottom: '0px', - '@media': { - 'screen and (min-width: 576px)': { - paddingTop: '0.5rem', - paddingBottom: '0.5rem', - }, - }, -}) - -export const starterColumnStyle = style({ - paddingTop: '1.5rem', - paddingBottom: '1rem', -}) - -export const sectionColumn = style({ - '@media': { - print: { - flexBasis: '50%', - maxWidth: '50%', - }, - }, -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/Success/index.tsx b/libs/application/templates/financial-statement-individual-election/src/fields/Success/index.tsx deleted file mode 100644 index 642d30725ddb..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/Success/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { Box, ContentBlock, AlertMessage } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { FieldBaseProps } from '@island.is/application/types' -import format from 'date-fns/format' -import { FinancialStatementIndividualElection } from '../../lib/utils/dataSchema' -import { m } from '../../lib/utils/messages' - -export const Success = ({ application }: FieldBaseProps) => { - const applicationAnswers = - application.answers as FinancialStatementIndividualElection - const { formatMessage } = useLocale() - - const getDescriptionText = () => { - const currentDate = format(new Date(), "dd.MM.yyyy 'kl.' kk:mm") - return `${formatMessage(m.individualReceivedMsgFirst)} ${ - applicationAnswers.election.genitiveName - } - ${formatMessage(m.individualReceivedMsgSecond)} ${currentDate}` - } - - const shouldShowDigitalSigningMessage = () => { - if (applicationAnswers.election.incomeLimit === 'less') { - return true - } - - return false - } - - return ( - <Box paddingTop={2}> - <Box marginTop={2} marginBottom={5}> - <ContentBlock> - <AlertMessage - type="success" - title={formatMessage(m.returned)} - message={getDescriptionText()} - /> - </ContentBlock> - {shouldShowDigitalSigningMessage() && ( - <Box paddingTop={2}> - <AlertMessage - type="info" - title={formatMessage(m.digitalSignatureTitle)} - message={formatMessage(m.digitalSignatureMessage, { - email: applicationAnswers.about.email, - })} - /> - </Box> - )} - </Box> - </Box> - ) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/fields/index.ts b/libs/application/templates/financial-statement-individual-election/src/fields/index.ts deleted file mode 100644 index 7c30ad52830b..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/fields/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export { ElectionsInfoFields } from './ElectionInfoFields' -export { IndividualElectionOperatingIncome } from './IndividualElectionOperatingIncome' -export { KeyNumbersCapital } from './KeyNumbersCapital' -export { ElectionEquities } from './ElectionEquities' -export { Overview } from './Overview' -export { ElectionStatement } from './ElectionStatement' -export { Success } from './Success' diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/clientInfoSection/index.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/clientInfoSection/index.ts deleted file mode 100644 index 938c3257b445..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/clientInfoSection/index.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { - buildMultiField, - buildSection, - buildTextField, -} from '@island.is/application/core' -import { m } from '../../../lib/utils/messages' -import { ABOUTIDS } from '../../../lib/utils/constants' -import { Application, UserProfile } from '@island.is/application/types' -import { Identity } from '@island.is/api/schema' - -export const clientInfoSection = buildSection({ - id: 'info', - title: m.info, - children: [ - buildMultiField({ - id: 'about', - title: m.info, - description: m.reviewInfo, - children: [ - buildTextField({ - id: 'about.nationalId', - title: m.candidateNationalId, - width: 'half', - readOnly: true, - format: '######-####', - defaultValue: (application: Application) => application.applicant, - }), - buildTextField({ - id: 'about.fullName', - title: m.candidateFullName, - width: 'half', - readOnly: true, - defaultValue: (application: Application) => { - const nationalRegistry = application.externalData.identity - ?.data as Identity - return nationalRegistry?.name - }, - }), - buildTextField({ - id: 'about.email', - title: m.email, - width: 'half', - variant: 'email', - defaultValue: (application: Application) => { - const userProfile = application.externalData?.userProfile - ?.data as UserProfile - return userProfile?.email - }, - }), - buildTextField({ - id: 'about.phoneNumber', - title: m.phoneNumber, - width: 'half', - variant: 'tel', - defaultValue: (application: Application) => { - const userProfile = application.externalData?.userProfile - ?.data as UserProfile - return userProfile?.mobilePhoneNumber - }, - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/documentsSection/index.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/documentsSection/index.ts deleted file mode 100644 index c01291a794f8..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/documentsSection/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { - buildFileUploadField, - buildSection, - getValueViaPath, -} from '@island.is/application/core' -import { m } from '../../../lib/utils/messages' -import { LESS } from '../../../lib/utils/constants' - -export const documentsSection = buildSection({ - id: 'documents', - title: m.financialStatement, - condition: (answers, _externalData) => { - const incomeLimit = getValueViaPath(answers, 'election.incomeLimit') - return incomeLimit !== LESS - }, - children: [ - buildFileUploadField({ - id: 'attachments.file', - title: m.upload, - introduction: m.uploadIntro, - description: m.uploadDescription, - uploadHeader: m.uploadHeader, - uploadAccept: '.pdf', - uploadDescription: m.uploadAccept, - uploadButtonLabel: m.uploadButtonLabel, - uploadMultiple: false, - forImageUpload: false, - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/electionInfoSection/index.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/electionInfoSection/index.ts deleted file mode 100644 index e7dc3cc442bc..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/electionInfoSection/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - buildMultiField, - buildSection, - buildCustomField, -} from '@island.is/application/core' -import { m } from '../../../lib/utils/messages' -import { ABOUTIDS } from '../../../lib/utils/constants' - -export const electionInfoSection = buildSection({ - id: 'electionInfo', - title: m.election, - children: [ - buildMultiField({ - id: 'election', - title: m.election, - description: m.fillOutElectionInfo, - children: [ - buildCustomField({ - id: 'election.availableElectionField', - title: m.election, - childInputIds: [ABOUTIDS.selectElection, ABOUTIDS.incomeLimit], - component: 'ElectionsInfoFields', - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/index.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/index.ts deleted file mode 100644 index d160f81a0fe2..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { buildForm } from '@island.is/application/core' -import { Form, FormModes } from '@island.is/application/types' -import { Logo } from '../../components/Logo' -import { m } from '../../lib/utils/messages' -import { clientInfoSection } from './clientInfoSection' -import { electionInfoSection } from './electionInfoSection' -import { individualKeyNumbersSection } from './individualKeyNumbersSection' -import { documentsSection } from './documentsSection' -import { overviewSection } from './overviewSection' - -export const FinancialStatementIndividualElectionForm: Form = buildForm({ - id: 'FinancialStatementIndividualelectionForm', - title: m.applicationTitle, - mode: FormModes.DRAFT, - renderLastScreenButton: false, - logo: Logo, - children: [ - clientInfoSection, - electionInfoSection, - individualKeyNumbersSection, - documentsSection, - overviewSection, - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/capitalNumbersSection.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/capitalNumbersSection.ts deleted file mode 100644 index 21572289eb8e..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/capitalNumbersSection.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSubSection, -} from '@island.is/application/core' -import { m } from '../../../lib/utils/messages' -import { CAPITALNUMBERS } from '../../../lib/utils/constants' - -export const capitalNumberSection = buildSubSection({ - id: 'keynumbers.capitalNumbers', - title: m.capitalNumbers, - children: [ - buildMultiField({ - id: 'capitalNumber', - title: m.capitalNumbersSectionTitle, - description: m.fillOutAppopriate, - children: [ - buildCustomField({ - id: 'capitalNumberField', - title: '', - description: '', - component: 'KeyNumbersCapital', - childInputIds: Object.values(CAPITALNUMBERS), - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/equitiesAndLiabilitiesSubSection.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/equitiesAndLiabilitiesSubSection.ts deleted file mode 100644 index 04b7702a9d1d..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/equitiesAndLiabilitiesSubSection.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSubSection, -} from '@island.is/application/core' -import { EQUITIESANDLIABILITIESIDS } from '../../../lib/utils/constants' -import { m } from '../../../lib/utils/messages' - -export const equityAndLiabilitiesSubSection = buildSubSection({ - id: 'keyNumbers.equitiesAndLiabilities', - title: m.propertiesAndDebts, - children: [ - buildMultiField({ - id: 'operations.equitiesAndLiabilities', - title: m.keyNumbersDebt, - description: m.fillOutAppopriate, - children: [ - buildCustomField({ - id: 'equitiesAndLiabilities', - title: m.keyNumbersDebt, - component: 'ElectionEquities', - childInputIds: Object.values(EQUITIESANDLIABILITIESIDS), - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/index.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/index.ts deleted file mode 100644 index 6585cd68a648..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { buildSection, getValueViaPath } from '@island.is/application/core' -import { GREATER } from '../../../lib/utils/constants' -import { m } from '../../../lib/utils/messages' -import { operatingCostSubSection } from './operatingcostSubSection' -import { equityAndLiabilitiesSubSection } from './equitiesAndLiabilitiesSubSection' -import { capitalNumberSection } from './capitalNumbersSection' - -export const individualKeyNumbersSection = buildSection({ - id: 'keyNumbers', - title: m.keyNumbers, - condition: (answers) => { - const greaterThanLimit = - getValueViaPath(answers, 'election.incomeLimit') === GREATER - return greaterThanLimit - }, - children: [ - operatingCostSubSection, - capitalNumberSection, - equityAndLiabilitiesSubSection, - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/operatingcostSubSection.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/operatingcostSubSection.ts deleted file mode 100644 index 4ddfbba5b195..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/individualKeyNumbersSection/operatingcostSubSection.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSubSection, -} from '@island.is/application/core' -import { m } from '../../../lib/utils/messages' -import { INDIVIDUALOPERATIONIDS } from '../../../lib/utils/constants' - -export const operatingCostSubSection = buildSubSection({ - id: 'operatingCost', - title: m.expensesIncome, - children: [ - buildMultiField({ - id: 'operatinCostfields', - title: m.keyNumbersIncomeAndExpenses, - description: m.fillOutAppopriate, - children: [ - buildCustomField({ - id: 'IndividualIncome', - title: '', - component: 'IndividualElectionOperatingIncome', - childInputIds: Object.values(INDIVIDUALOPERATIONIDS), - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/overviewSection/index.ts b/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/overviewSection/index.ts deleted file mode 100644 index 540ddec2b9fa..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/applicationForm/overviewSection/index.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSection, - getValueViaPath, -} from '@island.is/application/core' -import { ABOUTIDS, GREATER, LESS } from '../../../lib/utils/constants' -import { m } from '../../../lib/utils/messages' - -export const overviewSection = buildSection({ - id: 'overviewSection', - title: (application) => { - return getValueViaPath(application.answers, 'election.incomeLimit') === LESS - ? m.statement - : m.overviewSectionTitle - }, - children: [ - buildMultiField({ - id: 'overview', - title: (application) => { - return getValueViaPath(application.answers, 'election.incomeLimit') === - LESS - ? m.statement - : m.overviewReview - }, - description: (application) => { - return getValueViaPath(application.answers, 'election.incomeLimit') === - GREATER - ? m.overviewDescription - : `${m.electionStatement.defaultMessage} ${getValueViaPath( - application.answers, - ABOUTIDS.genitiveName, - )}` - }, - children: [ - buildCustomField({ - id: 'overviewField', - title: '', - condition: (answers) => - getValueViaPath(answers, 'election.incomeLimit') === GREATER, - doesNotRequireAnswer: true, - component: 'Overview', - }), - buildCustomField({ - id: 'overviewStatementField', - title: '', - condition: (answers) => - getValueViaPath(answers, 'election.incomeLimit') === LESS, - doesNotRequireAnswer: true, - component: 'ElectionStatement', - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/done/conclusionSection.ts b/libs/application/templates/financial-statement-individual-election/src/forms/done/conclusionSection.ts deleted file mode 100644 index fc2574e2fff8..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/done/conclusionSection.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { - buildCustomField, - buildMultiField, - buildSection, -} from '@island.is/application/core' -import { m } from '../../lib/utils/messages' -import { FSIUSERTYPE } from '../../types/types' -import { Application } from '@island.is/application/types' -import { getCurrentUserType } from '../../lib/utils/helpers' - -export const conclusionSection = buildSection({ - id: 'conclusionSection', - title: '', - children: [ - buildMultiField({ - id: 'conclusion', - title: (application: Application) => { - const answers = application.answers - const externalData = application.externalData - const userType = getCurrentUserType(answers, externalData) - return userType === FSIUSERTYPE.INDIVIDUAL ? m.infoReceived : m.received - }, - children: [ - buildCustomField({ - id: 'overview', - component: 'Success', - title: m.applicationAccept, - }), - ], - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/done/index.ts b/libs/application/templates/financial-statement-individual-election/src/forms/done/index.ts deleted file mode 100644 index bfb95dec1cee..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/done/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { buildForm } from '@island.is/application/core' -import { Form, FormModes } from '@island.is/application/types' -import { conclusionSection } from './conclusionSection' - -export const done: Form = buildForm({ - id: 'done', - title: 'Umsókn móttekin', - mode: FormModes.COMPLETED, - children: [conclusionSection], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/prerequisites/index.ts b/libs/application/templates/financial-statement-individual-election/src/forms/prerequisites/index.ts deleted file mode 100644 index 242a7c7ff2b0..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/prerequisites/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { buildForm } from '@island.is/application/core' -import { Form, FormModes } from '@island.is/application/types' -import { Logo } from '../../components/Logo' -import { prerequisitesSection } from './prerequisitesSection' - -export const PrerequisitesForm: Form = buildForm({ - id: 'PrerequisitesForm', - title: '', - mode: FormModes.NOT_STARTED, - renderLastScreenButton: true, - logo: Logo, - children: [prerequisitesSection], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/forms/prerequisites/prerequisitesSection.ts b/libs/application/templates/financial-statement-individual-election/src/forms/prerequisites/prerequisitesSection.ts deleted file mode 100644 index e9820806c3d6..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/forms/prerequisites/prerequisitesSection.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { - buildDataProviderItem, - buildExternalDataProvider, - buildSection, - buildSubmitField, - coreMessages, -} from '@island.is/application/core' -import { m } from '../../lib/utils/messages' -import { - CurrentUserTypeProvider, - IndentityApiProvider, - UserInfoApi, -} from '../../dataProviders' -import { DefaultEvents } from '@island.is/application/types' - -export const prerequisitesSection = buildSection({ - id: 'ExternalDataSection', - title: '', - children: [ - buildExternalDataProvider({ - id: 'approveExternalData', - title: m.dataCollectionTitleUserIndividual, - checkboxLabel: m.dataCollectionCheckboxLabel, - dataProviders: [ - buildDataProviderItem({ - provider: IndentityApiProvider, - title: m.dataCollectionNationalRegistryTitle, - subTitle: m.dataCollectionNationalRegistrySubtitle, - }), - buildDataProviderItem({ - provider: UserInfoApi, - title: m.dataCollectionUserProfileTitle, - subTitle: m.dataCollectionUserProfileSubtitle, - }), - buildDataProviderItem({ - provider: CurrentUserTypeProvider, - title: m.dataCollectionUserFinancialInfoTitle, - subTitle: m.dataCollectionUserFinancialInfo, - }), - ], - submitField: buildSubmitField({ - id: 'submit', - placement: 'footer', - title: '', - refetchApplicationAfterSubmit: true, - actions: [ - { - event: DefaultEvents.SUBMIT, - name: coreMessages.buttonNext, - type: 'primary', - }, - ], - }), - }), - ], -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/graphql/index.ts b/libs/application/templates/financial-statement-individual-election/src/graphql/index.ts deleted file mode 100644 index a44b4b629238..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/graphql/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { gql } from '@apollo/client' - -export const IdentityQuery = gql` - query IdentityQuery($input: IdentityInput!) { - identity(input: $input) { - name - nationalId - } - } -` -export const getAvailableElections = gql` - query FinancialStatementsInaoElections { - financialStatementsInaoElections { - electionId - name - electionDate - genitiveName - } - } -` - -export const getFinancialLimit = gql` - query FinancialStatementsInaoClientFinancialLimit( - $input: InaoClientFinancialLimitInput! - ) { - financialStatementsInaoClientFinancialLimit(input: $input) - } -` diff --git a/libs/application/templates/financial-statement-individual-election/src/hooks/useSubmitApplication.ts b/libs/application/templates/financial-statement-individual-election/src/hooks/useSubmitApplication.ts deleted file mode 100644 index de5e2838cb93..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/hooks/useSubmitApplication.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { MutationTuple, useMutation } from '@apollo/client' -import { DefaultEvents, Application } from '@island.is/application/types' -import { SUBMIT_APPLICATION } from '@island.is/application/graphql' - -export interface UseSubmitApplication { - (params: { - application: Application - refetch: (() => void) | undefined - event: DefaultEvents - }): MutationTuple< - void, - { - input: { - id: Application['id'] - event: DefaultEvents - answers: Application['answers'] - } - } - > -} - -export const useSubmitApplication: UseSubmitApplication = ({ - application, - refetch, - event, -}) => { - return useMutation(SUBMIT_APPLICATION, { - onError: (e) => { - console.error(e.message) - return - }, - onCompleted: () => { - refetch?.() - }, - variables: { - input: { - id: application.id, - event, - answers: application.answers, - }, - }, - }) -} diff --git a/libs/application/templates/financial-statement-individual-election/src/hooks/useTotals.ts b/libs/application/templates/financial-statement-individual-election/src/hooks/useTotals.ts deleted file mode 100644 index ad8694776645..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/hooks/useTotals.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useCallback, useEffect, useState } from 'react' -import { useFormContext } from 'react-hook-form' -import { getTotal } from '../lib/utils/helpers' - -const useTotals = (key: string): [() => void, number] => { - const [total, setTotal] = useState(0) - const { getValues } = useFormContext() - const getSum = useCallback(() => { - const values = getValues() - const sum = getTotal(values, key) - setTotal(sum) - }, [key, getValues, setTotal]) - - useEffect(() => { - getSum() - }, [getSum]) - - return [getSum, total] -} - -export { useTotals } diff --git a/libs/application/templates/financial-statement-individual-election/src/index.ts b/libs/application/templates/financial-statement-individual-election/src/index.ts deleted file mode 100644 index 72b30d688c13..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import FinancialStatementIndividualElectionTemplate from './lib/financial-statement-individual-election' - -export const getDataProviders = () => import('./dataProviders/') -export const getFields = () => import('./fields') - -export default FinancialStatementIndividualElectionTemplate diff --git a/libs/application/templates/financial-statement-individual-election/src/lib/financial-statement-individual-election.ts b/libs/application/templates/financial-statement-individual-election/src/lib/financial-statement-individual-election.ts deleted file mode 100644 index 83e1e625a391..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/lib/financial-statement-individual-election.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { - DefaultStateLifeCycle, - pruneAfterDays, -} from '@island.is/application/core' - -import { - ApplicationTemplate, - ApplicationTypes, - ApplicationContext, - ApplicationRole, - ApplicationStateSchema, - Application, - DefaultEvents, - defineTemplateApi, - ApplicationConfigurations, -} from '@island.is/application/types' - -import { - CurrentUserTypeProvider, - IndentityApiProvider, - NationalRegistryUserApi, - UserInfoApi, -} from '../dataProviders' - -import { m } from './utils/messages' -import { ApiActions, Events, Roles, States } from '../types/types' -import { dataSchema } from './utils/dataSchema' -import { Features } from '@island.is/feature-flags' - -const configuration = - ApplicationConfigurations[ - ApplicationTypes.FINANCIAL_STATEMENT_INDIVIDUAL_ELECTION - ] - -const FinancialStatementIndividualElectionTemplate: ApplicationTemplate< - ApplicationContext, - ApplicationStateSchema<Events>, - Events -> = { - type: ApplicationTypes.FINANCIAL_STATEMENT_INDIVIDUAL_ELECTION, - name: m.applicationTitleAlt, - institution: m.institutionName, - dataSchema, - translationNamespaces: [configuration.translation], - featureFlag: Features.FinancialStatementIndividualElectionEnabled, - // allowedDelegations: ..., - stateMachineConfig: { - initial: States.PREREQUISITES, - states: { - [States.PREREQUISITES]: { - meta: { - name: States.PREREQUISITES, - progress: 0, - status: 'draft', - actionCard: { - pendingAction: { - title: '', - displayStatus: 'success', - }, - }, - lifecycle: pruneAfterDays(60), - roles: [ - { - id: Roles.APPLICANT, - formLoader: () => - import('../forms/prerequisites').then((val) => - Promise.resolve(val.PrerequisitesForm), - ), - actions: [ - { - event: DefaultEvents.SUBMIT, - name: 'Submit', - type: 'primary', - }, - ], - write: 'all', - delete: true, - api: [ - CurrentUserTypeProvider, - IndentityApiProvider, - NationalRegistryUserApi, - UserInfoApi, - ], - }, - ], - }, - on: { - [DefaultEvents.SUBMIT]: [{ target: States.DRAFT }], - }, - }, - [States.DRAFT]: { - meta: { - name: 'Draft', - actionCard: { - title: m.applicationTitle, - }, - status: 'draft', - lifecycle: pruneAfterDays(60), - roles: [ - { - id: Roles.APPLICANT, - formLoader: () => - import('../forms/applicationForm').then((val) => - Promise.resolve(val.FinancialStatementIndividualElectionForm), - ), - actions: [ - { event: 'SUBMIT', name: 'Staðfesta', type: 'primary' }, - ], - write: 'all', - delete: true, - api: [NationalRegistryUserApi, UserInfoApi], - }, - ], - }, - on: { - [DefaultEvents.SUBMIT]: { target: States.DONE }, - }, - }, - [States.DONE]: { - meta: { - name: 'Done', - status: 'completed', - progress: 1, - lifecycle: DefaultStateLifeCycle, - onEntry: defineTemplateApi({ - action: ApiActions.submitApplication, - throwOnError: true, - }), - roles: [ - { - id: Roles.APPLICANT, - formLoader: () => import('../forms/done').then((val) => val.done), - read: 'all', - }, - ], - }, - }, - }, - }, - mapUserToRole( - nationalId: string, - application: Application, - ): ApplicationRole | undefined { - if (application.applicant === nationalId) { - return Roles.APPLICANT - } - return undefined - }, -} - -export default FinancialStatementIndividualElectionTemplate diff --git a/libs/application/templates/financial-statement-individual-election/src/lib/utils/constants.ts b/libs/application/templates/financial-statement-individual-election/src/lib/utils/constants.ts deleted file mode 100644 index 0e9ea1b80ff1..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/lib/utils/constants.ts +++ /dev/null @@ -1,64 +0,0 @@ -export const ABOUTIDS = { - operatingYear: 'conditionalAbout.operatingYear', - applicationType: 'conditionalAbout.applicationType', - selectElection: 'election.selectElection', - electionName: 'election.electionName', - electionId: 'election.electionId', - genitiveName: 'election.genitiveName', - incomeLimit: 'election.incomeLimit', - powerOfAttorneyNationalId: 'about.powerOfAttorneyNationalId', - powerOfAttorneyName: 'about.powerOfAttorneyName', -} - -export const GREATER = 'greater' -export const LESS = 'less' -export const VALIDATOR = 'validator' -export const UPDATE_ELECTION_ACTION = 'updateCurrentElection' -export const INPUTCHANGEINTERVAL = 300 -export const TOTAL = 'total' -export const ELECTIONLIMIT = 550000 - -export const INDIVIDUALOPERATIONIDS = { - incomePrefix: 'individualIncome', - expensePrefix: 'individualExpense', - contributionsByLegalEntities: 'individualIncome.contributionsByLegalEntities', - individualContributions: 'individualIncome.individualContributions', - candidatesOwnContributions: 'individualIncome.candidatesOwnContributions', - otherIncome: 'individualIncome.otherIncome', - capitalIncome: 'individualIncome.capitalIncome', - electionOffice: 'individualExpense.electionOffice', - advertisements: 'individualExpense.advertisements', - travelCost: 'individualExpense.travelCost', - otherCost: 'individualExpense.otherCost', - capitalCost: 'individualExpense.capitalCost', - totalIncome: 'individualIncome.total', - totalExpense: 'individualExpense.total', -} - -export const EQUITIESANDLIABILITIESIDS = { - assetPrefix: 'asset', - currentAssets: 'asset.currentAssets', - fixedAssetsTotal: 'asset.fixedAssetsTotal', - assetTotal: 'asset.total', - liabilityPrefix: 'liability', - longTerm: 'liability.longTerm', - shortTerm: 'liability.shortTerm', - asset: 'liability.asset', - totalLiability: 'liability.total', - operationResult: 'equity.operationResult', - equityPrefix: 'equity', - totalEquity: 'equity.totalEquity', - totalCash: 'equity.total', - totalEquityAndLiabilities: 'equityAndLiabilities.total', -} - -export const CAPITALNUMBERS = { - capitalPrefix: 'capitalNumbers', - capitalIncome: 'capitalNumbers.capitalIncome', - capitalCost: 'capitalNumbers.capitalCost', - total: 'capitalNumbers.total', -} - -export const OPERATINGCOST = { - total: 'operatingCost.total', -} diff --git a/libs/application/templates/financial-statement-individual-election/src/lib/utils/dataSchema.ts b/libs/application/templates/financial-statement-individual-election/src/lib/utils/dataSchema.ts deleted file mode 100644 index 698a22b70fe2..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/lib/utils/dataSchema.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { z } from 'zod' -import * as kennitala from 'kennitala' -import { parsePhoneNumberFromString } from 'libphonenumber-js' -import { m } from './messages' -import { isRunningOnEnvironment } from '@island.is/shared/utils' -import { checkIfNegative } from './helpers' -import { - Override, - NestedType, -} from '@island.is/application/templates/family-matters-core/types' -import { FieldBaseProps } from '@island.is/application/types' - -const FileSchema = z.object({ - name: z.string(), - key: z.string(), - url: z.string().optional(), -}) - -const election = z.object({ - selectElection: z.string().optional(), - electionName: z.string().optional(), - genitiveName: z.string().optional(), - incomeLimit: z.string().refine((x) => !!x, { params: m.required }), -}) - -const conditionalAbout = z.object({ - operatingYear: z.string().refine((x) => !!x, { params: m.required }), -}) - -const about = z.object({ - nationalId: z - .string() - .refine((val) => (val ? kennitala.isValid(val) : false), { - params: m.nationalIdError, - }), - fullName: z.string().refine((x) => !!x, { params: m.required }), - powerOfAttorneyNationalId: z.string().optional(), - powerOfAttorneyName: z.string().optional(), - phoneNumber: z.string().refine( - (p) => { - // ignore validation on dev to test with Gervimenn remove b4 release - if (isRunningOnEnvironment('dev')) { - return true - } - const phoneNumber = parsePhoneNumberFromString(p, 'IS') - return phoneNumber && phoneNumber.isValid() - }, - { params: m.dataSchemePhoneNumber }, - ), - email: z.string().email(), -}) - -const individualIncome = z.object({ - contributionsByLegalEntities: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - candidatesOwnContributions: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - individualContributions: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - otherIncome: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string(), -}) - -const individualExpense = z.object({ - electionOffice: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - advertisements: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - travelCost: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - otherCost: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string().refine((x) => !!x, { params: m.required }), -}) - -const capitalNumbers = z.object({ - capitalIncome: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - capitalCost: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string(), -}) - -const asset = z.object({ - currentAssets: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - fixedAssetsTotal: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z.string().refine((x) => !!x, { params: m.required }), -}) - -const equity = z.object({ - totalEquity: z.string().refine((x) => !!x, { params: m.required }), -}) - -const liability = z.object({ - longTerm: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - shortTerm: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), - total: z - .string() - .refine((x) => !!x, { params: m.required }) - .refine((x) => checkIfNegative(x), { params: m.negativeNumberError }), -}) -const equityAndLiabilities = z.object({ - total: z.string(), -}) - -export const dataSchema = z.object({ - approveExternalData: z.boolean().refine((v) => v), - conditionalAbout, - about, - election, - individualIncome, - individualExpense, - capitalNumbers, - equityAndLiabilities, - asset, - equity, - liability, - attachments: z.object({ - file: z.array(FileSchema).nonempty(), - }), -}) - -export type FinancialStatementIndividualElection = z.TypeOf<typeof dataSchema> - -type ErrorSchema = NestedType<FinancialStatementIndividualElection> - -export type FSNFieldBaseProps = Override< - FieldBaseProps, - { errors: ErrorSchema } -> diff --git a/libs/application/templates/financial-statement-individual-election/src/lib/utils/helpers.ts b/libs/application/templates/financial-statement-individual-election/src/lib/utils/helpers.ts deleted file mode 100644 index eaa5730d46bd..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/lib/utils/helpers.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { getValueViaPath } from '@island.is/application/core' -import { ExternalData, FormValue } from '@island.is/application/types' -import { FSIUSERTYPE } from '../../types/types' -import { TOTAL } from './constants' - -export const checkIfNegative = (inputNumber: string) => { - if (Number(inputNumber) < 0) { - return false - } else { - return true - } -} - -export const currencyStringToNumber = (str: string) => { - if (!str) { - return str - } - const cleanString = str.replace(/[,\s]+|[.\s]+/g, '') - return parseInt(cleanString, 10) -} - -export const getCurrentUserType = ( - answers: FormValue, - externalData: ExternalData, -) => { - const fakeUserType: FSIUSERTYPE | undefined = getValueViaPath( - answers, - 'fakeData.options', - ) - - const currentUserType: FSIUSERTYPE | undefined = getValueViaPath( - externalData, - 'getUserType.data.value', - ) - - return fakeUserType ? fakeUserType : currentUserType -} - -export const getTotal = (values: Record<string, string>, key: string) => { - if (!values[key]) { - return 0 - } - const total = Object.entries(values[key]) - .filter(([k, v]) => k !== TOTAL && !isNaN(Number(v))) - .map(([_k, v]) => Number(v)) - .reduce((prev, current) => { - return (prev += current) - }, 0) - return total -} -export const formatCurrency = (answer: string) => - answer.replace(/\B(?=(\d{3})+(?!\d))/g, '.') + ' kr.' - -export const formatNumber = (num: number) => num.toLocaleString('de-DE') diff --git a/libs/application/templates/financial-statement-individual-election/src/lib/utils/messages.ts b/libs/application/templates/financial-statement-individual-election/src/lib/utils/messages.ts deleted file mode 100644 index 1c747966038b..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/lib/utils/messages.ts +++ /dev/null @@ -1,623 +0,0 @@ -import { defineMessages } from 'react-intl' - -export const m = defineMessages({ - applicationTitle: { - id: 'fsie.application:applicationTitle', - defaultMessage: 'Skil á ársreikningi - einstaklingsframboð', - description: 'Application for Digital', - }, - applicationTitleAlt: { - id: 'fsie.application:applicationTitleAlt', - defaultMessage: 'Skil á ársreikningi fyrir einstaklingsframboð', - description: 'Application for Individual elections', - }, - institutionName: { - id: 'fsie.application:institution', - defaultMessage: 'Ríkisendurskoðun', - description: `Institution's name`, - }, - required: { - id: 'fsie.application:error.required', - defaultMessage: 'Reitur má ekki vera tómur', - description: 'Error message when a required field has not been filled', - }, - nationalIdError: { - id: 'fsie.application:error.nationalIdError', - defaultMessage: 'Kennitala er ekki á réttu formi', - description: 'Error message when nationalid is wrong', - }, - dataSchemePhoneNumber: { - id: 'fsie.application:dataSchema.phoneNumber', - defaultMessage: 'Símanúmerið þarf að vera gilt.', - description: 'Error message when phone number is invalid.', - }, - negativeNumberError: { - id: 'fsie.application:error.negativeNumberError', - defaultMessage: 'Ekki er leyfilegt að setja inn neikvæðar tölur', - description: 'Error message when a required field has not been filled', - }, - serviceProvider: { - id: 'fsie.application:serviceProvider', - defaultMessage: 'Þjónustuaðili', - description: 'service provider', - }, - inao: { - id: 'fsie.application:inao', - defaultMessage: 'Ríkisendurskoðun', - description: 'icelandic national audit', - }, - dataCollectionTitle: { - id: 'fsie.application:applicationDataCollectionTitle', - defaultMessage: 'Gagnaöflun', - description: 'Title for data collection section', - }, - dataCollectionTitleUserIndividual: { - id: 'fsie.application:applicationDataCollectionTitleUserIndividual', - defaultMessage: 'Gagnaöflun vegna einstaklingsframboðs', - description: 'Title for data collection section', - }, - dataCollectionCheckboxLabel: { - id: 'fsie.application:dataCollectionCheckboxLabel', - defaultMessage: - 'Ég skil að ofangreindra gagna verður aflað við vinnslu innsendingarinnar', - description: 'Checkbox label for data collection section', - }, - dataCollectionNationalRegistryTitle: { - id: 'fsie.application:dataCollectionNationalRegistryTitle', - defaultMessage: 'Persónuupplýsingar', - description: 'National registry title', - }, - dataCollectionNationalRegistrySubtitle: { - id: 'fsie.application:dataCollectionNationalRegistrySubtitle', - defaultMessage: 'Fullt nafn, kennitala, heimilisfang.', - description: 'National registry subtitle', - }, - dataCollectionUserProfileTitle: { - id: 'fsie.application:dataCollectionUserProfileTitle', - defaultMessage: 'Mínar síður á Ísland.is/stillingar', - description: 'Your user profile information', - }, - dataCollectionUserProfileSubtitle: { - id: 'fsie.application:dataCollectionUserProfileSubtitle', - defaultMessage: - 'Ef þú ert með skráðar upplýsingar um síma og netfang inni á Mínar síður á Ísland.is þá verða þær sjálfkrafa settar inn í umsóknina.', - description: - 'In order to apply for this application we need your email and phone number', - }, - dataCollectionUserFinancialInfoTitle: { - id: 'fsie.application:dataCollectionUserFinancialInfoTitle', - defaultMessage: 'Fjárhagsupplýsingar', - description: 'Financial info', - }, - dataCollectionUserFinancialInfo: { - id: 'fsie.application:dataCollectionUserFinancialInfo', - defaultMessage: - 'Til þess að auðvelda fyrir sækjum við fjárhagsupplýsingar til Ríkisendurskoðunar, sem embættið aflar frá viðeigandi aðilum á grundvelli aðgangs- og skoðunarheimilda sem það hefur, og forskráum þær.', - description: 'Financial info', - }, - info: { - id: 'fsie.application:info', - defaultMessage: 'Upplýsingar', - description: 'info', - }, - reviewInfo: { - id: 'fsie.application:reviewInfo', - defaultMessage: 'Vinsamlega yfirfarið upplýsingarnar hér að neðan', - description: 'Review info', - }, - candidateNationalId: { - id: 'fsie.application:candidateId', - defaultMessage: 'Kennitala frambjóðanda', - description: 'Nationalid of candiate', - }, - candidatesOwnContributions: { - id: 'fsie.application:income.candidatesOwnContributions', - defaultMessage: 'Eigin framlög frambjóðenda', - description: 'Candiates own donation', - }, - candidateFullName: { - id: 'fsie.application:candidateFullName', - defaultMessage: 'Nafn frambjóðanda', - description: 'Full name o candiate', - }, - email: { - id: 'fsie.application:person.email', - defaultMessage: 'Netfang', - description: 'email', - }, - phoneNumber: { - id: 'fsie.application:about.phoneNumber', - defaultMessage: 'Símanúmer', - description: 'phone number', - }, - election: { - id: 'fsie.application:election', - defaultMessage: 'Kosningar', - description: 'Election', - }, - fillOutElectionInfo: { - id: 'fsie.application:fillOutElectionInfo', - defaultMessage: 'Vinsamlegast veldu þær kosningar sem við eiga', - description: 'Fill out fields', - }, - expensesIncome: { - id: 'fsie.application:keyNumbers.expensesIncome', - defaultMessage: 'Tekjur og gjöld', - description: 'Expenses and income', - }, - expenses: { - id: 'fsie.application:keyNumbers.expenses', - defaultMessage: 'Gjöld', - description: 'expenses', - }, - keyNumbersIncomeAndExpenses: { - id: 'fsie.application:keyNumbersIncomeAndExpenses', - defaultMessage: 'Lykiltölur - Tekjur og gjöld', - description: 'income and expenses of keynumbers', - }, - fillOutAppopriate: { - id: 'fsie.application:fillOutAppopriate', - defaultMessage: 'Vinsamlegast fylltu út þá reiti sem eiga við', - description: 'Fill out fields', - }, - propertiesAndDebts: { - id: 'fsie.application:keyNumbers.properties', - defaultMessage: 'Eignir, skuldir og eigið fé', - description: 'Statement property numbers', - }, - keyNumbersDebt: { - id: 'fsie.application:keyNumbers.debt', - defaultMessage: 'Lykiltölur - Eignir, Skuldir og eigið fé', - description: 'Statement debts', - }, - keyNumbers: { - id: 'fsie.application:keyNumbers', - defaultMessage: 'Lykiltölur', - description: 'Statement key numbers', - }, - capitalNumbers: { - id: 'fsie.application:income.capitalNumbers', - defaultMessage: 'Fjármagnsliðir', - description: 'capital numbers', - }, - capitalNumbersSectionTitle: { - id: 'fsie.application:income.capitalNumbersSectionTitle', - defaultMessage: 'Lykiltölur Fjármagnsliðir', - description: 'capital numbers', - }, - financialStatement: { - id: 'fsie.application:financial.statment', - defaultMessage: 'Ársreikningur', - description: 'financial statements', - }, - upload: { - id: 'fsie.application:upload', - defaultMessage: 'Hlaða upp ársreikningi', - description: 'Upload financial statements', - }, - uploadHeader: { - id: 'fsie.application:uploadHeader', - defaultMessage: 'Dragðu skjöl hingað til að hlaða upp', - description: 'Upload here', - }, - uploadIntro: { - id: 'fsie.application:upload.intro', - defaultMessage: 'Vinsamlegast hlaðið upp ársreikning hér að neðan.', - description: 'Upload financial statements intro', - }, - uploadDescription: { - id: 'fsie.application:upload.description', - defaultMessage: 'Vinsamlegast hlaðið upp ársreikning hér að neðan.', - description: 'Upload financial statements intro', - }, - uploadAccept: { - id: 'fsie.application:upload.accept', - defaultMessage: 'Eingöngu er tekið við skjölum á PDF formi', - description: 'Upload financial statements intro', - }, - uploadButtonLabel: { - id: 'fsie.application:upload.buttonlabel', - defaultMessage: 'Velja skjöl til að hlaða upp', - description: 'Upload button label', - }, - statement: { - id: 'fsie.application:statement', - defaultMessage: 'Yfirlýsing', - description: 'statement', - }, - overviewSectionTitle: { - id: 'fsie.application:overview.general.sectionTitle', - defaultMessage: 'Yfirlit', - description: 'Overview section title', - }, - overviewReview: { - id: 'fsie.application:overview.general.review', - defaultMessage: 'Yfitlit uppgjörs', - description: 'Overview review', - }, - yearlyOverview: { - id: 'fsie.application:overview.general.yearly', - defaultMessage: 'Yfirlit ársreiknings', - description: 'Yearly overview', - }, - overviewDescription: { - id: 'fsie.application:overview.general.description', - defaultMessage: 'Farðu vel yfir efnið áður en þú sendir inn umsóknina.', - description: 'Overview description', - }, - electionStatement: { - id: 'fsie.application:electionStatement', - defaultMessage: 'Yfirlýsing frambjóðanda vegna', - description: 'statement', - }, - review: { - id: 'fsie.application:review', - defaultMessage: - 'Endilega lestu yfir til að vera viss um að allar upplýsingar hafi verið gefnar', - description: 'financial statements', - }, - powerOfAttorneyNationalId: { - id: 'fsie.application:powerOfAttorneyNationalId', - defaultMessage: 'Kennitala umboðsmanns', - description: `national id for power of attorney`, - }, - powerOfAttorneyName: { - id: 'fsie.application:powerOfAttorneyName', - defaultMessage: 'Nafn umboðsmanns', - description: `name for power of attorney`, - }, - errorFetchingName: { - id: 'fsie.application:error.errorFetchingName', - defaultMessage: 'Tókst ekki að sækja nafn umboðsmanns', - description: 'Could not fetch powerofattorney name', - }, - wrongDelegation: { - id: 'fsie.application:wrongDelegation', - defaultMessage: - 'Eingöngu er hægt að skila fyrir hönd Kirkjugarða eða Stjórnmálasamtaka', - description: 'Logged in user with incorrect delegation type', - }, - genericError: { - id: 'fsie.application:error.genericError', - defaultMessage: 'Eitthvað fór úrskeiðis', - description: 'Generic error message', - }, - campaignCost: { - id: 'fsie.application:campaignCost', - defaultMessage: 'Heildartekjur við kosningabaráttu', - description: 'Election campaign cost', - }, - pleaseSelect: { - id: 'fsie.application:pleaseSelect', - defaultMessage: 'Vinsamlegast veldu það sem við á', - description: 'Please select', - }, - fetchErrorTitle: { - id: 'fsie.application:fetchErrorMsg', - defaultMessage: 'Eitthvað fór úrskeiðiðs', - description: 'Error msg title when fetching data fails', - }, - fetchErrorMsg: { - id: 'fsie.application:fetchError', - defaultMessage: 'Ekki tókst að sækja gögn, reyndur aftur seinna', - description: 'Error msg when fetching data fails', - }, - pickElectionType: { - id: 'fsie.application:SelectElectionType', - defaultMessage: 'Veldu kosningar', - description: 'Select election type', - }, - financialLimitErrorMessage: { - id: 'fsie.application:financialLimitErrorMessage', - defaultMessage: - 'Fjárhæðarmörk fyrir rekstrarár hafa ekki verið skilgreind. Vinsamlegast hafðu samband við Ríkisendurskoðun.', - description: 'Happens when financial limit has not been set in Dataverse', - }, - lessThanLimit: { - id: 'fsie.application:lessThanLimit', - defaultMessage: - 'Heildartekjur og heildarkostnað við kosningabaráttuna var minni en', - description: 'Spending was less than a specific limit', - }, - moreThanLimit: { - id: 'fsie.application:moreThanLimit', - defaultMessage: - 'Heildartekjur og heildarkostnað við kosningabaráttuna var meira en', - description: 'Spending was more than a specific limit', - }, - crowns: { - id: 'fsie.application:crowns', - defaultMessage: 'krónum', - description: 'crowns', - }, - income: { - id: 'fsie.application:income', - defaultMessage: 'Tekjur', - description: 'Applicants income', - }, - totalIncome: { - id: 'fsie.application:income.totalIncome', - defaultMessage: 'Tekjur samtals:', - description: 'Total income', - }, - totalExpenses: { - id: 'fsie.application:income.totalExpenses', - defaultMessage: 'Gjöld samtals:', - description: 'Total expenses', - }, - operatingCost: { - id: 'fsie.application:keyNumbers.operatingCost', - defaultMessage: 'Rekstrarniðurstaða alls', - description: 'Operating Cost', - }, - operatingCostBefore: { - id: 'fsie.application:keyNumbers.operatingCostBeforeCapital', - defaultMessage: 'Rekstrarniðurstaða fyrir fjármagnsliði', - description: 'Operating Cost Capital', - }, - contributionsFromLegalEntities: { - id: 'fsie.application:income.contributionsFromLegalEntities', - defaultMessage: 'Framlög lögaðila', - description: 'Contributions From Legal Entities', - }, - contributionsFromIndividuals: { - id: 'fsie.application:income.contributionsFromIndividuals', - defaultMessage: 'Framlög einstaklinga', - description: 'Contributions From Individuals', - }, - otherIncome: { - id: 'fsie.application:income.other', - defaultMessage: 'Aðrar tekjur', - description: 'Other income', - }, - electionOffice: { - id: 'fsie.application:income.electionOffice', - defaultMessage: 'Kosningaskrifstofa', - description: 'electionOffice', - }, - advertisements: { - id: 'fsie.application:income.advertisements', - defaultMessage: 'Auglýsingar og kynningar', - description: 'Advertisements costs', - }, - travelCost: { - id: 'fsie.application:income.travelCost', - defaultMessage: 'Fundir ferðakostnaður', - description: 'Meeting and travel cost', - }, - otherCost: { - id: 'fsie.application:income.otherCost', - defaultMessage: 'Annar kostnaður', - description: 'Other costs', - }, - totalCapital: { - id: 'fsie.application:totalCapital', - defaultMessage: 'Fjármagnsliðir samtals', - description: 'Total capital', - }, - capitalCost: { - id: 'fsie.application:income.capitalCost', - defaultMessage: 'Fjármagnsgjöld', - description: 'capital costs', - }, - capitalIncome: { - id: 'fsie.application:income.capital', - defaultMessage: 'Fjármagnstekjur', - description: 'capital income', - }, - equityDebtsAssetsValidatorError: { - id: 'fsie.application:equityValidatorError', - defaultMessage: 'Skuldir og eigið fé þarf að vera jafnt og eignir samtals', - description: 'Equity + debts shout equal assets', - }, - properties: { - id: 'fsie.application:properties', - defaultMessage: 'Eignir', - description: 'List of applicants properties', - }, - fixedAssetsTotal: { - id: 'fsie.application:keyNumbers.fixedAssetsTotal', - defaultMessage: 'Fastafjármunir samtals', - description: 'Fixed assets', - }, - currentAssets: { - id: 'fsie.application:keyNumbers.currentAssets', - defaultMessage: 'Veltufjármunir samtals', - description: 'Current assets', - }, - totalAssets: { - id: 'fsie.application:totalAssets', - defaultMessage: 'Eignir samtals', - description: 'Total assets', - }, - debtsAndEquity: { - id: 'fsie.application:keyNumbers.debtsAndEquity', - defaultMessage: 'Skuldir og eigið fé', - description: 'debts and equity', - }, - longTerm: { - id: 'fsie.application:keyNumbers.longTermdebt', - defaultMessage: 'Langtímaskuldir samtals', - description: 'Long term debt', - }, - shortTerm: { - id: 'fsie.application:keyNumbers.shortTermDebt', - defaultMessage: 'Skammtímaskuldir samtals', - description: 'Short term debt', - }, - totalDebts: { - id: 'fsie.application:income.totalDebts', - defaultMessage: 'Skuldir samtals:', - description: 'Total debts', - }, - equity: { - id: 'fsie.application:keyNumbers.equity', - defaultMessage: 'Eigið fé', - description: 'total equity', - }, - debtsAndCash: { - id: 'fsie.application:keyNumbers.debtsAndCash', - defaultMessage: 'Skuldir og eigið fé samtals', - description: 'Debts and cash', - }, - equityErrorTitle: { - id: 'fsie.application:equityErrorTitle', - defaultMessage: 'Ósamræmi í tölum', - description: 'Error msg title when E = S+E.fé is incorrect', - }, - fullName: { - id: 'fsie.application:fullName', - defaultMessage: 'Fullt nafn', - description: 'Full name', - }, - nationalId: { - id: 'fsie.application:nationalId', - defaultMessage: 'Kennitala', - description: 'National id', - }, - totalLiabilities: { - id: 'fsie.application:keyNumbers.totalLiabilities', - defaultMessage: 'Skuldir samtals', - description: 'total liabilities', - }, - overview: { - id: 'fsie.application:overview.general.overview', - defaultMessage: 'Yfirferð', - description: 'Overview section title', - }, - overviewCorrect: { - id: 'fsie.application:overview.overViewCorrect', - defaultMessage: 'Ég samþykki að ofangreindar upplýsingar séu réttar', - description: 'Overview correct', - }, - files: { - id: 'fsie.application:files', - defaultMessage: 'Skjöl', - description: 'files', - }, - errorApproval: { - id: 'fsie.application:error.errorApproval', - defaultMessage: 'Samþykkja þarf yfirlit', - description: 'Approval missing', - }, - submitErrorTitle: { - id: 'fsie.application:submitErrorTitle', - defaultMessage: 'Móttaka ársreiknings tókst ekki', - description: - 'Title that shows up when an error occurs while submitting the application', - }, - submitErrorMessage: { - id: 'fsie.application:submitErrorMessage', - defaultMessage: - 'Eitthvað fór úrskeiðis við að senda inn ársreikning. Reyndu aftur síðar.', - description: - 'Text that shows up when an error occurs while submitting the application', - }, - goBack: { - id: 'fsie.application:overview.goBack', - defaultMessage: 'Til Baka', - description: 'Go back btn text', - }, - send: { - id: 'fsie.application:send', - defaultMessage: 'Senda umsókn', - description: 'Send application', - }, - participated: { - id: 'fsie.application:overview.participated', - defaultMessage: 'tók þátt í kjöri til', - description: 'Participated in election', - }, - electionDeclare: { - id: 'fsie.application:electionStatementDeclare', - defaultMessage: - 'Ég lýsi því hér með yfir að viðlögðum drengskap að hvorki heildartekjur né heildarkostnaður vegna framboðs míns í kjörinu voru hærri en kr.', - description: 'statement', - }, - electionStatementLaw: { - id: 'fsie.application:electionStatementLaw', - defaultMessage: - 'Það staðfestist hér með að heildartekjur eða -kostnaður vegna framboðsins voru ekki umfram þau fjárhæðarmörk sem tilgreind eru í 3. mgr. 10. gr. laga nr. 162/2006, um starfsemi stjórnmálasamtaka, og er framboðið því undanþegið uppgjörsskyldu.', - description: 'statement', - }, - signatureTitle: { - id: 'fsie.application:SignatureTitle', - defaultMessage: 'Rafræn undirritun', - description: 'Signature alert title', - }, - signatureMessage: { - id: 'fsie.application:SignatureMessage', - defaultMessage: - 'Eftir að þú hefur sent inn umsókn mun rafræn undirritun verða send á netfangið', - description: 'Signature message', - }, - signaturePossible: { - id: 'fsie.application:SignaturePossible', - defaultMessage: 'svo hægt sé að undirrita hana með rafrænum skilríkjum.', - description: 'Signature possible message', - }, - sendStatement: { - id: 'fsie.application:sendStatement', - defaultMessage: 'Senda yfirlýsingu', - description: 'Send statement', - }, - infoReceived: { - id: 'fsie.application:infoReceived', - defaultMessage: 'Uppgjör móttekið', - description: 'election info received', - }, - received: { - id: 'fsie.application:received', - defaultMessage: 'Ársreikningur mótekinn', - description: 'financial statement received', - }, - applicationAccept: { - id: 'fsie.application:applicationAccept', - defaultMessage: 'Umsókn móttekin', - description: 'application accept', - }, - individualReceivedMsgFirst: { - id: 'fsie.application:individualReceivedMsgFirst', - defaultMessage: 'Uppgjör fyrir persónukjör vegna', - description: 'First part of audit received message', - }, - individualReceivedMsgSecond: { - id: 'fsie.application:individualReceivedMsgSecond', - defaultMessage: 'hefur verið skilað þann', - description: 'Second part of audit received message', - }, - operatingYearMsgFirst: { - id: 'fsie.application:operatingYearMsgFirst', - defaultMessage: 'Ársreikningi fyrir rekstrarárið', - description: 'First part of audit received message', - }, - returned: { - id: 'fsie.application:returned', - defaultMessage: 'Skilað', - description: 'Returned', - }, - digitalSignatureTitle: { - id: 'fsie.application:digitalSignatureTitle', - defaultMessage: 'Rafræn undirritun', - description: - 'Reminder of digital signature after the application is returned', - }, - digitalSignatureMessage: { - id: 'fsie.application:digitalSignatureMessage', - defaultMessage: - 'Það bíður þín skjal sem á eftir að undirrita með rafrænum skilríkjum. Hlekkur á skjalið hefur verið sendur í tölvupósti á netfangið þitt: {email}', - description: - 'Reminder of digital signature after the application is returned', - }, - myPagesLinkText: { - id: 'fsie.application:myPagesLinkText', - defaultMessage: - 'Á Mínum síðum Ísland.is hefur þú aðgang að marvíslegum upplýsingum s.s stafrænt pósthólf, þínar upplýsingar, fjármál, umsóknir, menntun, fasteignir, ökutæki, skírteini, starfsleyfi ofl. ', - description: 'island.is my pages info', - }, - continue: { - id: 'fsie.application:continue', - defaultMessage: 'Áfram', - description: 'continue', - }, -}) diff --git a/libs/application/templates/financial-statement-individual-election/src/types/types.ts b/libs/application/templates/financial-statement-individual-election/src/types/types.ts deleted file mode 100644 index e4cbd4a2106c..000000000000 --- a/libs/application/templates/financial-statement-individual-election/src/types/types.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { DefaultEvents } from '@island.is/application/types' - -export type Events = { type: DefaultEvents.SUBMIT } - -export enum States { - PREREQUISITES = 'prerequisites', - DRAFT = 'draft', - DONE = 'done', -} - -export enum Roles { - APPLICANT = 'applicant', -} - -export enum ApiActions { - getUserType = 'getUserType', - submitApplication = 'submitApplication', -} - -export enum FSIUSERTYPE { - INDIVIDUAL = 150000000, - PARTY = 150000001, - CEMETRY = 150000002, -} - -export type Options = { - label: string - value: string -}[] diff --git a/libs/application/templates/financial-statement-individual-election/tsconfig.json b/libs/application/templates/financial-statement-individual-election/tsconfig.json deleted file mode 100644 index c88d07daddd5..000000000000 --- a/libs/application/templates/financial-statement-individual-election/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react-jsx", - "allowJs": false, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "extends": "../../../../tsconfig.base.json" -} diff --git a/libs/application/templates/financial-statement-individual-election/tsconfig.lib.json b/libs/application/templates/financial-statement-individual-election/tsconfig.lib.json deleted file mode 100644 index 4be621b7daa0..000000000000 --- a/libs/application/templates/financial-statement-individual-election/tsconfig.lib.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../../dist/out-tsc", - "types": ["node"] - }, - "files": [ - "../../../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": ["/**/*.spec.ts", "/**/*.spec.tsx"], - "include": ["/**/*.js", "/**/*.jsx", "/**/*.ts", "/**/*.tsx"] -} diff --git a/libs/application/templates/funding-government-projects/src/fields/YearSlider/YearSlider.tsx b/libs/application/templates/funding-government-projects/src/fields/YearSlider/YearSlider.tsx deleted file mode 100644 index 0c4a20478228..000000000000 --- a/libs/application/templates/funding-government-projects/src/fields/YearSlider/YearSlider.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { formatText, getValueViaPath } from '@island.is/application/core' -import { FieldBaseProps } from '@island.is/application/types' -import { Controller, useFormContext } from 'react-hook-form' -import { Box, Text } from '@island.is/island-ui/core' -import React, { useState } from 'react' -import { useLocale } from '@island.is/localization' -import Slider from '../components/Slider/Slider' -import { shared } from '../../lib/messages' -import { theme } from '@island.is/island-ui/theme' - -const minYears = 5 -const maxYears = 10 - -export const YearSlider = ({ field, application }: FieldBaseProps) => { - const { id } = field - const { formatMessage } = useLocale() - const currentAnswer = getValueViaPath( - application.answers, - field.id, - 5, - ) as number - - const { clearErrors } = useFormContext() - const [chosenGivenYears, setChosenGivenYears] = - useState<number>(currentAnswer) - - return ( - <Box marginBottom={6} marginTop={6}> - <Text marginBottom={4} variant="h4"> - {formatText(field.title, application, formatMessage)} - </Text> - <Box marginBottom={12}> - <Controller - defaultValue={chosenGivenYears} - name={id} - render={({ field: { onChange, value } }) => ( - <Slider - label={{ - singular: formatMessage(shared.yearSingular), - plural: formatMessage(shared.yearPlural), - }} - min={minYears} - max={maxYears} - step={1} - currentIndex={value || chosenGivenYears} - showMinMaxLabels - showToolTip - trackStyle={{ gridTemplateRows: 5 }} - calculateCellStyle={() => { - return { - background: theme.color.dark200, - } - }} - onChange={(newValue: number) => { - clearErrors(id) - onChange(newValue) - setChosenGivenYears(newValue) - }} - /> - )} - /> - </Box> - </Box> - ) -} diff --git a/libs/application/templates/funding-government-projects/src/fields/components/Slider/Slider.css.ts b/libs/application/templates/funding-government-projects/src/fields/components/Slider/Slider.css.ts deleted file mode 100644 index 3e3ad4350ded..000000000000 --- a/libs/application/templates/funding-government-projects/src/fields/components/Slider/Slider.css.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { keyframes, style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const TooltipContainer = style({ - filter: 'drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.15))', - position: 'absolute', - bottom: '100%', - transition: ' transform 0.3s', - - ':after': { - content: '""', - background: '#fff', - width: 16, - height: 16, - bottom: 8, - position: 'absolute', - left: 0, - transform: 'translateX(-50%) rotate(45deg)', - zIndex: -1, - }, -}) - -export const TooltipBox = style({ - background: '#fff', - padding: '3px 1em', - display: 'inline-block', - lineHeight: 1.5, - fontWeight: 600, - color: '#0061ff', - marginBottom: 16, - transition: 'transform 0.3s', -}) - -const thumbAnimation = keyframes({ - from: { - transform: 'scale(0.6)', - }, - to: { - transform: 'scale(0.8)', - }, -}) - -export const Thumb = style({ - boxSizing: 'border-box', - cursor: 'pointer', - background: '#00e4ca', - backgroundClip: 'content-box', - padding: 20, - width: 64, - height: 64, - borderRadius: '50%', - marginLeft: -32, - top: 'calc(100% + 2px)', - position: 'absolute', - transition: 'transform 0.3s', - WebkitTapHighlightColor: 'transparent', - outline: 'none', // TODO: temp - - ':before': { - content: '""', - position: 'absolute', - left: 31, - width: 2, - height: 32, - top: 0, - background: '#00e4ca', - }, - - ':after': { - content: '""', - position: 'absolute', - left: 0, - top: 0, - width: 64, - height: 64, - borderRadius: '50%', - background: '#00e4ca', - opacity: 0.25, - animation: `${thumbAnimation} 1.5s infinite alternate`, - }, -}) - -export const TrackGrid = style({ - position: 'relative', - display: 'grid', -}) - -export const TrackCell = style({ - cursor: 'pointer', -}) - -export const remainderBar = style({ - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - right: -1, - marginLeft: -1, - height: '100%', - pointerEvents: 'none', - background: `repeating-linear-gradient(-45deg, #fff, #fff 5%, rgba(255, 255, 255, 0.5) 5%, rgba(255, 255, 255, 0.5) 50%, #fff 50%) top left fixed`, - backgroundSize: '15px 15px', - borderLeftWidth: 2, - borderLeftStyle: 'solid', - borderLeftColor: theme.color.white, - transition: 'left 0.3s', -}) - -export const progressBar = style({ - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - marginLeft: -1, - height: '100%', - pointerEvents: 'none', - transition: 'width 0.3s', - background: theme.color.mint400, -}) diff --git a/libs/application/templates/funding-government-projects/src/fields/components/Slider/Slider.tsx b/libs/application/templates/funding-government-projects/src/fields/components/Slider/Slider.tsx deleted file mode 100644 index bcd6ecfd904c..000000000000 --- a/libs/application/templates/funding-government-projects/src/fields/components/Slider/Slider.tsx +++ /dev/null @@ -1,258 +0,0 @@ -import React, { CSSProperties, FC, useRef, useState, useEffect } from 'react' -import useComponentSize from '@rehooks/component-size' -import { useDrag } from '../utils' - -import * as styles from './Slider.css' -import { Box, Text } from '@island.is/island-ui/core' - -interface TooltipProps { - style?: CSSProperties - atEnd?: boolean -} - -const Tooltip: FC<React.PropsWithChildren<TooltipProps>> = ({ - style, - atEnd = false, - children, -}) => ( - <Box - data-test="slider-tooltip" - className={styles.TooltipContainer} - style={style} - > - <Box - className={styles.TooltipBox} - style={{ - transform: `translateX(${atEnd ? -85 : -50}%)`, - }} - > - {children} - </Box> - </Box> -) - -const useLatest = <T extends number>(value: T) => { - const ref = useRef<T>() - ref.current = value - return ref -} - -const roundByNum = (num: number, rounder: number) => { - const multiplier = 1 / (rounder || 0.5) - return Math.round(num * multiplier) / multiplier -} - -interface TrackProps { - min: number - max: number - step?: number - snap?: boolean - trackStyle?: CSSProperties - calculateCellStyle: (index: number) => CSSProperties - showLabel?: boolean - showMinMaxLabels?: boolean - showRemainderOverlay?: boolean - showProgressOverlay?: boolean - showToolTip?: boolean - label: { - singular: string - plural: string - } - currentIndex: number - onChange?: (index: number) => void -} - -const Slider = ({ - min = 0, - max, - step = 0.5, - snap = true, - trackStyle, - calculateCellStyle, - showLabel = false, - showMinMaxLabels = false, - showRemainderOverlay = true, - showProgressOverlay = true, - showToolTip = false, - label, - currentIndex, - onChange, -}: TrackProps) => { - const [isDragging, setIsDragging] = useState(false) - const ref = useRef(null) - const size = useComponentSize(ref) - const dragX = useRef<number>() - const indexRef = useLatest(currentIndex) - const stepCount = max - min - const sizePerCell = size.width / stepCount - const x = sizePerCell * currentIndex - sizePerCell * min - const thumbRef = React.useRef<HTMLDivElement>(null) - const remainderRef = React.useRef<HTMLDivElement>(null) - const progressRef = React.useRef<HTMLDivElement>(null) - - useEffect(() => { - if (thumbRef.current != null && !isDragging) { - thumbRef.current.style.transform = `translateX(${x}px)` - } - - if (remainderRef.current != null) { - remainderRef.current.style.left = `${x}px` - } - - if (progressRef.current != null) { - progressRef.current.style.width = `${x}px` - } - }, [isDragging, x]) - - const tooltipStyle = { transform: `translateX(${x}px)` } - const thumbStyle = { - transform: `translateX(${dragX.current == null ? x : dragX.current}px)`, - transition: isDragging ? 'none' : '', - touchAction: 'none', - } - const remainderStyle = { - left: `${dragX.current == null ? x : dragX.current}px`, - transition: isDragging ? 'none' : '', - } - const progressStyle = { - right: `${dragX.current == null ? x : dragX.current}px`, - transition: isDragging ? 'none' : '', - } - - const dragBind = useDrag({ - onDragMove(deltaX) { - const currentX = x + deltaX - dragX.current = Math.max(0, Math.min(size.width, currentX)) - const index = roundByNum(dragX.current / sizePerCell, step) + min - - if (onChange && index !== indexRef.current) { - onChange(index) - } - - if (thumbRef.current && dragX.current != null) { - thumbRef.current.style.transform = `translateX(${dragX.current}px)` - } - - if (remainderRef.current && dragX.current != null) { - if (!snap) remainderRef.current.style.left = `${dragX.current}px` - } - - if (progressRef.current && dragX.current != null) { - if (!snap) progressRef.current.style.width = `${dragX.current}px` - } - }, - onDragStart() { - setIsDragging(true) - }, - onDragEnd() { - dragX.current = undefined - setIsDragging(false) - }, - }) - - const formatTooltip = (count: number) => - count <= 1 - ? `${currentIndex} ${label.singular}` - : `${count} ${label.plural}` - - const onKeyDown = (event: React.KeyboardEvent) => { - if (onChange == null) { - return - } - switch (event.key) { - case 'ArrowLeft': - if (currentIndex > min) { - onChange(currentIndex - step) - } - break - case 'ArrowRight': - if (currentIndex < max) { - onChange(currentIndex + step) - } - break - } - } - - const onCellClick = ( - index: number, - event: React.MouseEvent<HTMLElement, MouseEvent>, - ) => { - const rect = event.currentTarget.getBoundingClientRect() - const percentClicked = event.nativeEvent.offsetX / rect.width - const newIndex = Math.max( - min, - index + min + roundByNum(percentClicked, step), - ) - onChange && onChange(newIndex) - } - - return ( - <Box> - {showMinMaxLabels && ( - <Box display="flex" justifyContent="spaceBetween" width="full"> - <Text color="blue400" variant="eyebrow"> - {formatTooltip(min)} - </Text> - <Text color="blue400" variant="eyebrow"> - {formatTooltip(max)} - </Text> - </Box> - )} - {showLabel && ( - <Text variant="h4" as="p"> - {formatTooltip(currentIndex)} - </Text> - )} - <Box - className={styles.TrackGrid} - marginTop={1} - style={{ - gridTemplateColumns: `repeat(${stepCount}, 1fr)`, - ...trackStyle, - }} - ref={ref} - > - {Array.from({ length: stepCount }).map((_, index) => { - return ( - <Box - className={styles.TrackCell} - key={index} - style={calculateCellStyle(index)} - onClick={(e) => onCellClick(index, e)} - /> - ) - })} - {showToolTip && ( - <Tooltip style={tooltipStyle} atEnd={currentIndex === max}> - {formatTooltip(currentIndex)} - </Tooltip> - )} - <Box - className={styles.Thumb} - data-test="slider-thumb" - style={thumbStyle} - ref={thumbRef} - {...dragBind} - onKeyDown={onKeyDown} - tabIndex={0} - /> - {showRemainderOverlay && ( - <Box - className={styles.remainderBar} - style={remainderStyle} - ref={remainderRef} - /> - )} - {showProgressOverlay && ( - <Box - className={styles.progressBar} - style={progressStyle} - ref={progressRef} - /> - )} - </Box> - </Box> - ) -} - -export default Slider diff --git a/libs/application/templates/funding-government-projects/src/fields/components/utils.ts b/libs/application/templates/funding-government-projects/src/fields/components/utils.ts deleted file mode 100644 index c6541a3ae05c..000000000000 --- a/libs/application/templates/funding-government-projects/src/fields/components/utils.ts +++ /dev/null @@ -1,82 +0,0 @@ -import React, { useRef } from 'react' - -interface UseDragOptions { - onDragStart?: () => void - onDragEnd?: (delta: number) => void - onDragMove?: (delta: number) => void -} - -interface PointerInfo { - id: number - startX: number -} - -export const useDrag = ({ - onDragStart, - onDragEnd, - onDragMove, -}: UseDragOptions) => { - const pointerInfo = useRef<PointerInfo | null>(null) - - const handleDragStart = (event: React.PointerEvent<HTMLElement>) => { - if (event.button !== 0) { - return - } - event.preventDefault() - - pointerInfo.current = { id: event.pointerId, startX: event.clientX } - - event.currentTarget.setPointerCapture(event.pointerId) - event.currentTarget.addEventListener('pointermove', handleDragMove) - event.currentTarget.addEventListener('pointerup', handleDragEnd) - event.currentTarget.addEventListener('pointercancel', handleDragEnd) - - if (onDragStart) { - onDragStart() - } - } - - const handleDragMove = (event: PointerEvent) => { - if ( - pointerInfo.current === null || - pointerInfo.current?.id !== event.pointerId - ) { - return - } - event.preventDefault() - - const deltaX = event.clientX - pointerInfo.current.startX - - if (onDragMove) { - onDragMove(deltaX) - } - } - - const handleDragEnd = (event: PointerEvent) => { - if ( - event.button !== 0 || - pointerInfo.current === null || - pointerInfo.current?.id !== event.pointerId - ) { - return - } - event.preventDefault() - - const deltaX = event.clientX - pointerInfo.current.startX - pointerInfo.current = null - - if (event.currentTarget && event.currentTarget instanceof HTMLElement) { - event.currentTarget.removeEventListener('pointermove', handleDragMove) - event.currentTarget.removeEventListener('pointerup', handleDragEnd) - event.currentTarget.removeEventListener('pointercancel', handleDragEnd) - } - - if (onDragEnd) { - onDragEnd(deltaX) - } - } - - return { - onPointerDown: handleDragStart, - } -} diff --git a/libs/application/templates/health-insurance/src/assets/ManOnBenchIllustration.tsx b/libs/application/templates/health-insurance/src/assets/ManOnBenchIllustration.tsx deleted file mode 100644 index 6be7c64ac9e7..000000000000 --- a/libs/application/templates/health-insurance/src/assets/ManOnBenchIllustration.tsx +++ /dev/null @@ -1,1773 +0,0 @@ -import React, { FC } from 'react' - -const ManOnBenchIllustration: FC<React.PropsWithChildren<unknown>> = () => ( - <svg - width="432" - height="445" - viewBox="0 0 432 445" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <path - d="M244.614 98.1996C245.485 98.1996 246.19 97.4947 246.19 96.6251C246.19 95.7555 245.485 95.0506 244.614 95.0506C243.744 95.0506 243.038 95.7555 243.038 96.6251C243.038 97.4947 243.744 98.1996 244.614 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M206.793 98.1996C207.664 98.1996 208.369 97.4947 208.369 96.6251C208.369 95.7555 207.664 95.0506 206.793 95.0506C205.923 95.0506 205.218 95.7555 205.218 96.6251C205.218 97.4947 205.923 98.1996 206.793 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M168.972 98.1996C169.843 98.1996 170.548 97.4947 170.548 96.6251C170.548 95.7555 169.843 95.0506 168.972 95.0506C168.102 95.0506 167.397 95.7555 167.397 96.6251C167.397 97.4947 168.102 98.1996 168.972 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M244.614 135.987C245.485 135.987 246.19 135.282 246.19 134.412C246.19 133.543 245.485 132.838 244.614 132.838C243.744 132.838 243.038 133.543 243.038 134.412C243.038 135.282 243.744 135.987 244.614 135.987Z" - fill="#CCDFFF" - /> - <path - d="M244.614 192.668C245.485 192.668 246.19 191.963 246.19 191.093C246.19 190.224 245.485 189.519 244.614 189.519C243.744 189.519 243.038 190.224 243.038 191.093C243.038 191.963 243.744 192.668 244.614 192.668Z" - fill="#CCDFFF" - /> - <path - d="M206.793 135.987C207.664 135.987 208.369 135.282 208.369 134.412C208.369 133.543 207.664 132.838 206.793 132.838C205.923 132.838 205.218 133.543 205.218 134.412C205.218 135.282 205.923 135.987 206.793 135.987Z" - fill="#CCDFFF" - /> - <path - d="M168.972 135.987C169.843 135.987 170.548 135.282 170.548 134.412C170.548 133.543 169.843 132.838 168.972 132.838C168.102 132.838 167.397 133.543 167.397 134.412C167.397 135.282 168.102 135.987 168.972 135.987Z" - fill="#CCDFFF" - /> - <path - d="M206.793 192.668C207.664 192.668 208.369 191.963 208.369 191.093C208.369 190.224 207.664 189.519 206.793 189.519C205.923 189.519 205.218 190.224 205.218 191.093C205.218 191.963 205.923 192.668 206.793 192.668Z" - fill="#CCDFFF" - /> - <path - d="M168.972 192.668C169.843 192.668 170.548 191.963 170.548 191.093C170.548 190.224 169.843 189.519 168.972 189.519C168.102 189.519 167.397 190.224 167.397 191.093C167.397 191.963 168.102 192.668 168.972 192.668Z" - fill="#CCDFFF" - /> - <path - d="M225.704 98.1996C226.574 98.1996 227.28 97.4947 227.28 96.6251C227.28 95.7555 226.574 95.0506 225.704 95.0506C224.833 95.0506 224.128 95.7555 224.128 96.6251C224.128 97.4947 224.833 98.1996 225.704 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M187.883 98.1996C188.753 98.1996 189.459 97.4947 189.459 96.6251C189.459 95.7555 188.753 95.0506 187.883 95.0506C187.013 95.0506 186.307 95.7555 186.307 96.6251C186.307 97.4947 187.013 98.1996 187.883 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M150.062 98.1996C150.932 98.1996 151.638 97.4947 151.638 96.6251C151.638 95.7555 150.932 95.0506 150.062 95.0506C149.192 95.0506 148.486 95.7555 148.486 96.6251C148.486 97.4947 149.192 98.1996 150.062 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M131.152 98.1996C132.022 98.1996 132.728 97.4947 132.728 96.6251C132.728 95.7555 132.022 95.0506 131.152 95.0506C130.281 95.0506 129.576 95.7555 129.576 96.6251C129.576 97.4947 130.281 98.1996 131.152 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M225.704 135.987C226.574 135.987 227.28 135.282 227.28 134.412C227.28 133.543 226.574 132.838 225.704 132.838C224.833 132.838 224.128 133.543 224.128 134.412C224.128 135.282 224.833 135.987 225.704 135.987Z" - fill="#CCDFFF" - /> - <path - d="M225.704 192.668C226.574 192.668 227.28 191.963 227.28 191.093C227.28 190.224 226.574 189.519 225.704 189.519C224.833 189.519 224.128 190.224 224.128 191.093C224.128 191.963 224.833 192.668 225.704 192.668Z" - fill="#CCDFFF" - /> - <path - d="M187.883 135.987C188.753 135.987 189.459 135.282 189.459 134.412C189.459 133.543 188.753 132.838 187.883 132.838C187.013 132.838 186.307 133.543 186.307 134.412C186.307 135.282 187.013 135.987 187.883 135.987Z" - fill="#CCDFFF" - /> - <path - d="M150.062 135.987C150.932 135.987 151.638 135.282 151.638 134.412C151.638 133.543 150.932 132.838 150.062 132.838C149.192 132.838 148.486 133.543 148.486 134.412C148.486 135.282 149.192 135.987 150.062 135.987Z" - fill="#CCDFFF" - /> - <path - d="M131.152 135.987C132.022 135.987 132.728 135.282 132.728 134.412C132.728 133.543 132.022 132.838 131.152 132.838C130.281 132.838 129.576 133.543 129.576 134.412C129.576 135.282 130.281 135.987 131.152 135.987Z" - fill="#CCDFFF" - /> - <path - d="M187.883 192.668C188.753 192.668 189.459 191.963 189.459 191.093C189.459 190.224 188.753 189.519 187.883 189.519C187.013 189.519 186.307 190.224 186.307 191.093C186.307 191.963 187.013 192.668 187.883 192.668Z" - fill="#CCDFFF" - /> - <path - d="M150.062 192.668C150.932 192.668 151.638 191.963 151.638 191.093C151.638 190.224 150.932 189.519 150.062 189.519C149.192 189.519 148.486 190.224 148.486 191.093C148.486 191.963 149.192 192.668 150.062 192.668Z" - fill="#CCDFFF" - /> - <path - d="M131.152 192.668C132.022 192.668 132.728 191.963 132.728 191.093C132.728 190.224 132.022 189.519 131.152 189.519C130.281 189.519 129.576 190.224 129.576 191.093C129.576 191.963 130.281 192.668 131.152 192.668Z" - fill="#CCDFFF" - /> - <path - d="M244.614 117.093C245.485 117.093 246.19 116.388 246.19 115.519C246.19 114.649 245.485 113.944 244.614 113.944C243.744 113.944 243.038 114.649 243.038 115.519C243.038 116.388 243.744 117.093 244.614 117.093Z" - fill="#CCDFFF" - /> - <path - d="M244.614 173.774C245.485 173.774 246.19 173.069 246.19 172.2C246.19 171.33 245.485 170.625 244.614 170.625C243.744 170.625 243.038 171.33 243.038 172.2C243.038 173.069 243.744 173.774 244.614 173.774Z" - fill="#CCDFFF" - /> - <path - d="M206.793 117.093C207.664 117.093 208.369 116.388 208.369 115.519C208.369 114.649 207.664 113.944 206.793 113.944C205.923 113.944 205.218 114.649 205.218 115.519C205.218 116.388 205.923 117.093 206.793 117.093Z" - fill="#CCDFFF" - /> - <path - d="M168.972 117.093C169.843 117.093 170.548 116.388 170.548 115.519C170.548 114.649 169.843 113.944 168.972 113.944C168.102 113.944 167.397 114.649 167.397 115.519C167.397 116.388 168.102 117.093 168.972 117.093Z" - fill="#CCDFFF" - /> - <path - d="M206.793 173.774C207.664 173.774 208.369 173.069 208.369 172.2C208.369 171.33 207.664 170.625 206.793 170.625C205.923 170.625 205.218 171.33 205.218 172.2C205.218 173.069 205.923 173.774 206.793 173.774Z" - fill="#CCDFFF" - /> - <path - d="M168.972 173.774C169.843 173.774 170.548 173.069 170.548 172.2C170.548 171.33 169.843 170.625 168.972 170.625C168.102 170.625 167.397 171.33 167.397 172.2C167.397 173.069 168.102 173.774 168.972 173.774Z" - fill="#CCDFFF" - /> - <path - d="M244.614 154.88C245.485 154.88 246.19 154.176 246.19 153.306C246.19 152.436 245.485 151.731 244.614 151.731C243.744 151.731 243.038 152.436 243.038 153.306C243.038 154.176 243.744 154.88 244.614 154.88Z" - fill="#CCDFFF" - /> - <path - d="M244.614 211.561C245.485 211.561 246.19 210.856 246.19 209.987C246.19 209.117 245.485 208.412 244.614 208.412C243.744 208.412 243.038 209.117 243.038 209.987C243.038 210.856 243.744 211.561 244.614 211.561Z" - fill="#CCDFFF" - /> - <path - d="M206.793 154.88C207.664 154.88 208.369 154.176 208.369 153.306C208.369 152.436 207.664 151.731 206.793 151.731C205.923 151.731 205.218 152.436 205.218 153.306C205.218 154.176 205.923 154.88 206.793 154.88Z" - fill="#CCDFFF" - /> - <path - d="M168.972 154.88C169.843 154.88 170.548 154.176 170.548 153.306C170.548 152.436 169.843 151.731 168.972 151.731C168.102 151.731 167.397 152.436 167.397 153.306C167.397 154.176 168.102 154.88 168.972 154.88Z" - fill="#CCDFFF" - /> - <path - d="M206.793 211.561C207.664 211.561 208.369 210.856 208.369 209.987C208.369 209.117 207.664 208.412 206.793 208.412C205.923 208.412 205.218 209.117 205.218 209.987C205.218 210.856 205.923 211.561 206.793 211.561Z" - fill="#CCDFFF" - /> - <path - d="M168.972 211.561C169.843 211.561 170.548 210.856 170.548 209.987C170.548 209.117 169.843 208.412 168.972 208.412C168.102 208.412 167.397 209.117 167.397 209.987C167.397 210.856 168.102 211.561 168.972 211.561Z" - fill="#CCDFFF" - /> - <path - d="M225.704 117.093C226.574 117.093 227.28 116.388 227.28 115.519C227.28 114.649 226.574 113.944 225.704 113.944C224.833 113.944 224.128 114.649 224.128 115.519C224.128 116.388 224.833 117.093 225.704 117.093Z" - fill="#CCDFFF" - /> - <path - d="M225.704 173.774C226.574 173.774 227.28 173.069 227.28 172.2C227.28 171.33 226.574 170.625 225.704 170.625C224.833 170.625 224.128 171.33 224.128 172.2C224.128 173.069 224.833 173.774 225.704 173.774Z" - fill="#CCDFFF" - /> - <path - d="M187.883 117.093C188.753 117.093 189.459 116.388 189.459 115.519C189.459 114.649 188.753 113.944 187.883 113.944C187.013 113.944 186.307 114.649 186.307 115.519C186.307 116.388 187.013 117.093 187.883 117.093Z" - fill="#CCDFFF" - /> - <path - d="M150.062 117.093C150.932 117.093 151.638 116.388 151.638 115.519C151.638 114.649 150.932 113.944 150.062 113.944C149.192 113.944 148.486 114.649 148.486 115.519C148.486 116.388 149.192 117.093 150.062 117.093Z" - fill="#CCDFFF" - /> - <path - d="M131.152 117.093C132.022 117.093 132.728 116.388 132.728 115.519C132.728 114.649 132.022 113.944 131.152 113.944C130.281 113.944 129.576 114.649 129.576 115.519C129.576 116.388 130.281 117.093 131.152 117.093Z" - fill="#CCDFFF" - /> - <path - d="M187.883 173.774C188.753 173.774 189.459 173.069 189.459 172.2C189.459 171.33 188.753 170.625 187.883 170.625C187.013 170.625 186.307 171.33 186.307 172.2C186.307 173.069 187.013 173.774 187.883 173.774Z" - fill="#CCDFFF" - /> - <path - d="M150.062 173.774C150.932 173.774 151.638 173.069 151.638 172.2C151.638 171.33 150.932 170.625 150.062 170.625C149.192 170.625 148.486 171.33 148.486 172.2C148.486 173.069 149.192 173.774 150.062 173.774Z" - fill="#CCDFFF" - /> - <path - d="M131.152 173.774C132.022 173.774 132.728 173.069 132.728 172.2C132.728 171.33 132.022 170.625 131.152 170.625C130.281 170.625 129.576 171.33 129.576 172.2C129.576 173.069 130.281 173.774 131.152 173.774Z" - fill="#CCDFFF" - /> - <path - d="M225.704 154.88C226.574 154.88 227.28 154.176 227.28 153.306C227.28 152.436 226.574 151.731 225.704 151.731C224.833 151.731 224.128 152.436 224.128 153.306C224.128 154.176 224.833 154.88 225.704 154.88Z" - fill="#CCDFFF" - /> - <path - d="M225.704 211.561C226.574 211.561 227.28 210.856 227.28 209.987C227.28 209.117 226.574 208.412 225.704 208.412C224.833 208.412 224.128 209.117 224.128 209.987C224.128 210.856 224.833 211.561 225.704 211.561Z" - fill="#CCDFFF" - /> - <path - d="M187.883 154.88C188.753 154.88 189.459 154.176 189.459 153.306C189.459 152.436 188.753 151.731 187.883 151.731C187.013 151.731 186.307 152.436 186.307 153.306C186.307 154.176 187.013 154.88 187.883 154.88Z" - fill="#CCDFFF" - /> - <path - d="M150.062 154.88C150.932 154.88 151.638 154.176 151.638 153.306C151.638 152.436 150.932 151.731 150.062 151.731C149.192 151.731 148.486 152.436 148.486 153.306C148.486 154.176 149.192 154.88 150.062 154.88Z" - fill="#CCDFFF" - /> - <path - d="M131.152 154.88C132.022 154.88 132.728 154.176 132.728 153.306C132.728 152.436 132.022 151.731 131.152 151.731C130.281 151.731 129.576 152.436 129.576 153.306C129.576 154.176 130.281 154.88 131.152 154.88Z" - fill="#CCDFFF" - /> - <path - d="M187.883 211.561C188.753 211.561 189.459 210.856 189.459 209.987C189.459 209.117 188.753 208.412 187.883 208.412C187.013 208.412 186.307 209.117 186.307 209.987C186.307 210.856 187.013 211.561 187.883 211.561Z" - fill="#CCDFFF" - /> - <path - d="M150.062 211.561C150.932 211.561 151.638 210.856 151.638 209.987C151.638 209.117 150.932 208.412 150.062 208.412C149.192 208.412 148.486 209.117 148.486 209.987C148.486 210.856 149.192 211.561 150.062 211.561Z" - fill="#CCDFFF" - /> - <path - d="M131.152 211.561C132.022 211.561 132.728 210.856 132.728 209.987C132.728 209.117 132.022 208.412 131.152 208.412C130.281 208.412 129.576 209.117 129.576 209.987C129.576 210.856 130.281 211.561 131.152 211.561Z" - fill="#CCDFFF" - /> - <path - d="M263.525 98.1996C264.395 98.1996 265.1 97.4947 265.1 96.6251C265.1 95.7555 264.395 95.0506 263.525 95.0506C262.654 95.0506 261.949 95.7555 261.949 96.6251C261.949 97.4947 262.654 98.1996 263.525 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M263.525 135.987C264.395 135.987 265.1 135.282 265.1 134.412C265.1 133.543 264.395 132.838 263.525 132.838C262.654 132.838 261.949 133.543 261.949 134.412C261.949 135.282 262.654 135.987 263.525 135.987Z" - fill="#CCDFFF" - /> - <path - d="M263.525 192.668C264.395 192.668 265.1 191.963 265.1 191.093C265.1 190.224 264.395 189.519 263.525 189.519C262.654 189.519 261.949 190.224 261.949 191.093C261.949 191.963 262.654 192.668 263.525 192.668Z" - fill="#CCDFFF" - /> - <path - d="M263.525 117.093C264.395 117.093 265.1 116.388 265.1 115.519C265.1 114.649 264.395 113.944 263.525 113.944C262.654 113.944 261.949 114.649 261.949 115.519C261.949 116.388 262.654 117.093 263.525 117.093Z" - fill="#CCDFFF" - /> - <path - d="M263.525 173.774C264.395 173.774 265.1 173.069 265.1 172.2C265.1 171.33 264.395 170.625 263.525 170.625C262.654 170.625 261.949 171.33 261.949 172.2C261.949 173.069 262.654 173.774 263.525 173.774Z" - fill="#CCDFFF" - /> - <path - d="M263.525 154.88C264.395 154.88 265.1 154.176 265.1 153.306C265.1 152.436 264.395 151.731 263.525 151.731C262.654 151.731 261.949 152.436 261.949 153.306C261.949 154.176 262.654 154.88 263.525 154.88Z" - fill="#CCDFFF" - /> - <path - d="M263.525 211.561C264.395 211.561 265.1 210.856 265.1 209.987C265.1 209.117 264.395 208.412 263.525 208.412C262.654 208.412 261.949 209.117 261.949 209.987C261.949 210.856 262.654 211.561 263.525 211.561Z" - fill="#CCDFFF" - /> - <path - d="M112.241 98.1996C113.112 98.1996 113.817 97.4947 113.817 96.6251C113.817 95.7555 113.112 95.0506 112.241 95.0506C111.371 95.0506 110.665 95.7555 110.665 96.6251C110.665 97.4947 111.371 98.1996 112.241 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 98.1996C75.2907 98.1996 75.9962 97.4947 75.9962 96.6251C75.9962 95.7555 75.2907 95.0506 74.4203 95.0506C73.55 95.0506 72.8445 95.7555 72.8445 96.6251C72.8445 97.4947 73.55 98.1996 74.4203 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 98.1996C37.4699 98.1996 38.1754 97.4947 38.1754 96.6251C38.1754 95.7555 37.4699 95.0506 36.5996 95.0506C35.7292 95.0506 35.0237 95.7555 35.0237 96.6251C35.0237 97.4947 35.7292 98.1996 36.5996 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M112.241 135.987C113.112 135.987 113.817 135.282 113.817 134.412C113.817 133.543 113.112 132.838 112.241 132.838C111.371 132.838 110.665 133.543 110.665 134.412C110.665 135.282 111.371 135.987 112.241 135.987Z" - fill="#CCDFFF" - /> - <path - d="M112.241 192.668C113.112 192.668 113.817 191.963 113.817 191.093C113.817 190.224 113.112 189.519 112.241 189.519C111.371 189.519 110.665 190.224 110.665 191.093C110.665 191.963 111.371 192.668 112.241 192.668Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 135.987C75.2907 135.987 75.9962 135.282 75.9962 134.412C75.9962 133.543 75.2907 132.838 74.4203 132.838C73.55 132.838 72.8445 133.543 72.8445 134.412C72.8445 135.282 73.55 135.987 74.4203 135.987Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 135.987C37.4699 135.987 38.1754 135.282 38.1754 134.412C38.1754 133.543 37.4699 132.838 36.5996 132.838C35.7292 132.838 35.0237 133.543 35.0237 134.412C35.0237 135.282 35.7292 135.987 36.5996 135.987Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 192.668C75.2907 192.668 75.9962 191.963 75.9962 191.093C75.9962 190.224 75.2907 189.519 74.4203 189.519C73.55 189.519 72.8445 190.224 72.8445 191.093C72.8445 191.963 73.55 192.668 74.4203 192.668Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 192.668C37.4699 192.668 38.1754 191.963 38.1754 191.093C38.1754 190.224 37.4699 189.519 36.5996 189.519C35.7292 189.519 35.0237 190.224 35.0237 191.093C35.0237 191.963 35.7292 192.668 36.5996 192.668Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 98.1996C94.2012 98.1996 94.9068 97.4947 94.9068 96.6251C94.9068 95.7555 94.2012 95.0506 93.3309 95.0506C92.4605 95.0506 91.755 95.7555 91.755 96.6251C91.755 97.4947 92.4605 98.1996 93.3309 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M55.51 98.1996C56.3803 98.1996 57.0858 97.4947 57.0858 96.6251C57.0858 95.7555 56.3803 95.0506 55.51 95.0506C54.6396 95.0506 53.9341 95.7555 53.9341 96.6251C53.9341 97.4947 54.6396 98.1996 55.51 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 98.1996C18.5595 98.1996 19.265 97.4947 19.265 96.6251C19.265 95.7555 18.5595 95.0506 17.6891 95.0506C16.8188 95.0506 16.1133 95.7555 16.1133 96.6251C16.1133 97.4947 16.8188 98.1996 17.6891 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 135.987C94.2012 135.987 94.9068 135.282 94.9068 134.412C94.9068 133.543 94.2012 132.838 93.3309 132.838C92.4605 132.838 91.755 133.543 91.755 134.412C91.755 135.282 92.4605 135.987 93.3309 135.987Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 192.668C94.2012 192.668 94.9068 191.963 94.9068 191.093C94.9068 190.224 94.2012 189.519 93.3309 189.519C92.4605 189.519 91.755 190.224 91.755 191.093C91.755 191.963 92.4605 192.668 93.3309 192.668Z" - fill="#CCDFFF" - /> - <path - d="M55.51 135.987C56.3803 135.987 57.0858 135.282 57.0858 134.412C57.0858 133.543 56.3803 132.838 55.51 132.838C54.6396 132.838 53.9341 133.543 53.9341 134.412C53.9341 135.282 54.6396 135.987 55.51 135.987Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 135.987C18.5595 135.987 19.265 135.282 19.265 134.412C19.265 133.543 18.5595 132.838 17.6891 132.838C16.8188 132.838 16.1133 133.543 16.1133 134.412C16.1133 135.282 16.8188 135.987 17.6891 135.987Z" - fill="#CCDFFF" - /> - <path - d="M55.51 192.668C56.3803 192.668 57.0858 191.963 57.0858 191.093C57.0858 190.224 56.3803 189.519 55.51 189.519C54.6396 189.519 53.9341 190.224 53.9341 191.093C53.9341 191.963 54.6396 192.668 55.51 192.668Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 192.668C18.5595 192.668 19.265 191.963 19.265 191.093C19.265 190.224 18.5595 189.519 17.6891 189.519C16.8188 189.519 16.1133 190.224 16.1133 191.093C16.1133 191.963 16.8188 192.668 17.6891 192.668Z" - fill="#CCDFFF" - /> - <path - d="M112.241 117.093C113.112 117.093 113.817 116.388 113.817 115.519C113.817 114.649 113.112 113.944 112.241 113.944C111.371 113.944 110.665 114.649 110.665 115.519C110.665 116.388 111.371 117.093 112.241 117.093Z" - fill="#CCDFFF" - /> - <path - d="M112.241 173.774C113.112 173.774 113.817 173.069 113.817 172.2C113.817 171.33 113.112 170.625 112.241 170.625C111.371 170.625 110.665 171.33 110.665 172.2C110.665 173.069 111.371 173.774 112.241 173.774Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 117.093C75.2907 117.093 75.9962 116.388 75.9962 115.519C75.9962 114.649 75.2907 113.944 74.4203 113.944C73.55 113.944 72.8445 114.649 72.8445 115.519C72.8445 116.388 73.55 117.093 74.4203 117.093Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 117.093C37.4699 117.093 38.1754 116.388 38.1754 115.519C38.1754 114.649 37.4699 113.944 36.5996 113.944C35.7292 113.944 35.0237 114.649 35.0237 115.519C35.0237 116.388 35.7292 117.093 36.5996 117.093Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 173.774C75.2907 173.774 75.9962 173.069 75.9962 172.2C75.9962 171.33 75.2907 170.625 74.4203 170.625C73.55 170.625 72.8445 171.33 72.8445 172.2C72.8445 173.069 73.55 173.774 74.4203 173.774Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 173.774C37.4699 173.774 38.1754 173.069 38.1754 172.2C38.1754 171.33 37.4699 170.625 36.5996 170.625C35.7292 170.625 35.0237 171.33 35.0237 172.2C35.0237 173.069 35.7292 173.774 36.5996 173.774Z" - fill="#CCDFFF" - /> - <path - d="M112.241 154.88C113.112 154.88 113.817 154.176 113.817 153.306C113.817 152.436 113.112 151.731 112.241 151.731C111.371 151.731 110.665 152.436 110.665 153.306C110.665 154.176 111.371 154.88 112.241 154.88Z" - fill="#CCDFFF" - /> - <path - d="M112.241 211.561C113.112 211.561 113.817 210.856 113.817 209.987C113.817 209.117 113.112 208.412 112.241 208.412C111.371 208.412 110.665 209.117 110.665 209.987C110.665 210.856 111.371 211.561 112.241 211.561Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 154.88C75.2907 154.88 75.9962 154.176 75.9962 153.306C75.9962 152.436 75.2907 151.731 74.4203 151.731C73.55 151.731 72.8445 152.436 72.8445 153.306C72.8445 154.176 73.55 154.88 74.4203 154.88Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 154.88C37.4699 154.88 38.1754 154.176 38.1754 153.306C38.1754 152.436 37.4699 151.731 36.5996 151.731C35.7292 151.731 35.0237 152.436 35.0237 153.306C35.0237 154.176 35.7292 154.88 36.5996 154.88Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 211.561C75.2907 211.561 75.9962 210.856 75.9962 209.987C75.9962 209.117 75.2907 208.412 74.4203 208.412C73.55 208.412 72.8445 209.117 72.8445 209.987C72.8445 210.856 73.55 211.561 74.4203 211.561Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 211.561C37.4699 211.561 38.1754 210.856 38.1754 209.987C38.1754 209.117 37.4699 208.412 36.5996 208.412C35.7292 208.412 35.0237 209.117 35.0237 209.987C35.0237 210.856 35.7292 211.561 36.5996 211.561Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 117.093C94.2012 117.093 94.9068 116.388 94.9068 115.519C94.9068 114.649 94.2012 113.944 93.3309 113.944C92.4605 113.944 91.755 114.649 91.755 115.519C91.755 116.388 92.4605 117.093 93.3309 117.093Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 173.774C94.2012 173.774 94.9068 173.069 94.9068 172.2C94.9068 171.33 94.2012 170.625 93.3309 170.625C92.4605 170.625 91.755 171.33 91.755 172.2C91.755 173.069 92.4605 173.774 93.3309 173.774Z" - fill="#CCDFFF" - /> - <path - d="M55.51 117.093C56.3803 117.093 57.0858 116.388 57.0858 115.519C57.0858 114.649 56.3803 113.944 55.51 113.944C54.6396 113.944 53.9341 114.649 53.9341 115.519C53.9341 116.388 54.6396 117.093 55.51 117.093Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 117.093C18.5595 117.093 19.265 116.388 19.265 115.519C19.265 114.649 18.5595 113.944 17.6891 113.944C16.8188 113.944 16.1133 114.649 16.1133 115.519C16.1133 116.388 16.8188 117.093 17.6891 117.093Z" - fill="#CCDFFF" - /> - <path - d="M55.51 173.774C56.3803 173.774 57.0858 173.069 57.0858 172.2C57.0858 171.33 56.3803 170.625 55.51 170.625C54.6396 170.625 53.9341 171.33 53.9341 172.2C53.9341 173.069 54.6396 173.774 55.51 173.774Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 173.774C18.5595 173.774 19.265 173.069 19.265 172.2C19.265 171.33 18.5595 170.625 17.6891 170.625C16.8188 170.625 16.1133 171.33 16.1133 172.2C16.1133 173.069 16.8188 173.774 17.6891 173.774Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 154.88C94.2012 154.88 94.9068 154.176 94.9068 153.306C94.9068 152.436 94.2012 151.731 93.3309 151.731C92.4605 151.731 91.755 152.436 91.755 153.306C91.755 154.176 92.4605 154.88 93.3309 154.88Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 211.561C94.2012 211.561 94.9068 210.856 94.9068 209.987C94.9068 209.117 94.2012 208.412 93.3309 208.412C92.4605 208.412 91.755 209.117 91.755 209.987C91.755 210.856 92.4605 211.561 93.3309 211.561Z" - fill="#CCDFFF" - /> - <path - d="M55.51 154.88C56.3803 154.88 57.0858 154.176 57.0858 153.306C57.0858 152.436 56.3803 151.731 55.51 151.731C54.6396 151.731 53.9341 152.436 53.9341 153.306C53.9341 154.176 54.6396 154.88 55.51 154.88Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 154.88C18.5595 154.88 19.265 154.176 19.265 153.306C19.265 152.436 18.5595 151.731 17.6891 151.731C16.8188 151.731 16.1133 152.436 16.1133 153.306C16.1133 154.176 16.8188 154.88 17.6891 154.88Z" - fill="#CCDFFF" - /> - <path - d="M55.51 211.561C56.3803 211.561 57.0858 210.856 57.0858 209.987C57.0858 209.117 56.3803 208.412 55.51 208.412C54.6396 208.412 53.9341 209.117 53.9341 209.987C53.9341 210.856 54.6396 211.561 55.51 211.561Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 211.561C18.5595 211.561 19.265 210.856 19.265 209.987C19.265 209.117 18.5595 208.412 17.6891 208.412C16.8188 208.412 16.1133 209.117 16.1133 209.987C16.1133 210.856 16.8188 211.561 17.6891 211.561Z" - fill="#CCDFFF" - /> - <path - d="M244.614 230.455C245.485 230.455 246.19 229.75 246.19 228.88C246.19 228.011 245.485 227.306 244.614 227.306C243.744 227.306 243.038 228.011 243.038 228.88C243.038 229.75 243.744 230.455 244.614 230.455Z" - fill="#CCDFFF" - /> - <path - d="M206.793 230.455C207.664 230.455 208.369 229.75 208.369 228.88C208.369 228.011 207.664 227.306 206.793 227.306C205.923 227.306 205.218 228.011 205.218 228.88C205.218 229.75 205.923 230.455 206.793 230.455Z" - fill="#CCDFFF" - /> - <path - d="M168.972 230.455C169.843 230.455 170.548 229.75 170.548 228.88C170.548 228.011 169.843 227.306 168.972 227.306C168.102 227.306 167.397 228.011 167.397 228.88C167.397 229.75 168.102 230.455 168.972 230.455Z" - fill="#CCDFFF" - /> - <path - d="M244.614 268.242C245.485 268.242 246.19 267.537 246.19 266.668C246.19 265.798 245.485 265.093 244.614 265.093C243.744 265.093 243.038 265.798 243.038 266.668C243.038 267.537 243.744 268.242 244.614 268.242Z" - fill="#CCDFFF" - /> - <path - d="M244.614 324.923C245.485 324.923 246.19 324.218 246.19 323.349C246.19 322.479 245.485 321.774 244.614 321.774C243.744 321.774 243.038 322.479 243.038 323.349C243.038 324.218 243.744 324.923 244.614 324.923Z" - fill="#CCDFFF" - /> - <path - d="M206.793 268.242C207.664 268.242 208.369 267.537 208.369 266.668C208.369 265.798 207.664 265.093 206.793 265.093C205.923 265.093 205.218 265.798 205.218 266.668C205.218 267.537 205.923 268.242 206.793 268.242Z" - fill="#CCDFFF" - /> - <path - d="M168.972 268.242C169.843 268.242 170.548 267.537 170.548 266.668C170.548 265.798 169.843 265.093 168.972 265.093C168.102 265.093 167.397 265.798 167.397 266.668C167.397 267.537 168.102 268.242 168.972 268.242Z" - fill="#CCDFFF" - /> - <path - d="M206.793 324.923C207.664 324.923 208.369 324.218 208.369 323.349C208.369 322.479 207.664 321.774 206.793 321.774C205.923 321.774 205.218 322.479 205.218 323.349C205.218 324.218 205.923 324.923 206.793 324.923Z" - fill="#CCDFFF" - /> - <path - d="M168.972 324.923C169.843 324.923 170.548 324.218 170.548 323.349C170.548 322.479 169.843 321.774 168.972 321.774C168.102 321.774 167.397 322.479 167.397 323.349C167.397 324.218 168.102 324.923 168.972 324.923Z" - fill="#CCDFFF" - /> - <path - d="M225.704 230.455C226.574 230.455 227.28 229.75 227.28 228.88C227.28 228.011 226.574 227.306 225.704 227.306C224.833 227.306 224.128 228.011 224.128 228.88C224.128 229.75 224.833 230.455 225.704 230.455Z" - fill="#CCDFFF" - /> - <path - d="M187.883 230.455C188.753 230.455 189.459 229.75 189.459 228.88C189.459 228.011 188.753 227.306 187.883 227.306C187.013 227.306 186.307 228.011 186.307 228.88C186.307 229.75 187.013 230.455 187.883 230.455Z" - fill="#CCDFFF" - /> - <path - d="M150.062 230.455C150.932 230.455 151.638 229.75 151.638 228.88C151.638 228.011 150.932 227.306 150.062 227.306C149.192 227.306 148.486 228.011 148.486 228.88C148.486 229.75 149.192 230.455 150.062 230.455Z" - fill="#CCDFFF" - /> - <path - d="M131.152 230.455C132.022 230.455 132.728 229.75 132.728 228.88C132.728 228.011 132.022 227.306 131.152 227.306C130.281 227.306 129.576 228.011 129.576 228.88C129.576 229.75 130.281 230.455 131.152 230.455Z" - fill="#CCDFFF" - /> - <path - d="M225.704 268.242C226.574 268.242 227.28 267.537 227.28 266.668C227.28 265.798 226.574 265.093 225.704 265.093C224.833 265.093 224.128 265.798 224.128 266.668C224.128 267.537 224.833 268.242 225.704 268.242Z" - fill="#CCDFFF" - /> - <path - d="M225.704 324.923C226.574 324.923 227.28 324.218 227.28 323.349C227.28 322.479 226.574 321.774 225.704 321.774C224.833 321.774 224.128 322.479 224.128 323.349C224.128 324.218 224.833 324.923 225.704 324.923Z" - fill="#CCDFFF" - /> - <path - d="M187.883 268.242C188.753 268.242 189.459 267.537 189.459 266.668C189.459 265.798 188.753 265.093 187.883 265.093C187.013 265.093 186.307 265.798 186.307 266.668C186.307 267.537 187.013 268.242 187.883 268.242Z" - fill="#CCDFFF" - /> - <path - d="M150.062 268.242C150.932 268.242 151.638 267.537 151.638 266.668C151.638 265.798 150.932 265.093 150.062 265.093C149.192 265.093 148.486 265.798 148.486 266.668C148.486 267.537 149.192 268.242 150.062 268.242Z" - fill="#CCDFFF" - /> - <path - d="M131.152 268.242C132.022 268.242 132.728 267.537 132.728 266.668C132.728 265.798 132.022 265.093 131.152 265.093C130.281 265.093 129.576 265.798 129.576 266.668C129.576 267.537 130.281 268.242 131.152 268.242Z" - fill="#CCDFFF" - /> - <path - d="M187.883 324.923C188.753 324.923 189.459 324.218 189.459 323.349C189.459 322.479 188.753 321.774 187.883 321.774C187.013 321.774 186.307 322.479 186.307 323.349C186.307 324.218 187.013 324.923 187.883 324.923Z" - fill="#CCDFFF" - /> - <path - d="M150.062 324.923C150.932 324.923 151.638 324.218 151.638 323.349C151.638 322.479 150.932 321.774 150.062 321.774C149.192 321.774 148.486 322.479 148.486 323.349C148.486 324.218 149.192 324.923 150.062 324.923Z" - fill="#CCDFFF" - /> - <path - d="M131.152 324.923C132.022 324.923 132.728 324.218 132.728 323.349C132.728 322.479 132.022 321.774 131.152 321.774C130.281 321.774 129.576 322.479 129.576 323.349C129.576 324.218 130.281 324.923 131.152 324.923Z" - fill="#CCDFFF" - /> - <path - d="M244.614 249.349C245.485 249.349 246.19 248.644 246.19 247.774C246.19 246.904 245.485 246.2 244.614 246.2C243.744 246.2 243.038 246.904 243.038 247.774C243.038 248.644 243.744 249.349 244.614 249.349Z" - fill="#CCDFFF" - /> - <path - d="M244.614 306.029C245.485 306.029 246.19 305.324 246.19 304.455C246.19 303.585 245.485 302.88 244.614 302.88C243.744 302.88 243.038 303.585 243.038 304.455C243.038 305.324 243.744 306.029 244.614 306.029Z" - fill="#CCDFFF" - /> - <path - d="M206.793 249.349C207.664 249.349 208.369 248.644 208.369 247.774C208.369 246.904 207.664 246.2 206.793 246.2C205.923 246.2 205.218 246.904 205.218 247.774C205.218 248.644 205.923 249.349 206.793 249.349Z" - fill="#CCDFFF" - /> - <path - d="M168.972 249.349C169.843 249.349 170.548 248.644 170.548 247.774C170.548 246.904 169.843 246.2 168.972 246.2C168.102 246.2 167.397 246.904 167.397 247.774C167.397 248.644 168.102 249.349 168.972 249.349Z" - fill="#CCDFFF" - /> - <path - d="M206.793 306.029C207.664 306.029 208.369 305.324 208.369 304.455C208.369 303.585 207.664 302.88 206.793 302.88C205.923 302.88 205.218 303.585 205.218 304.455C205.218 305.324 205.923 306.029 206.793 306.029Z" - fill="#CCDFFF" - /> - <path - d="M168.972 306.029C169.843 306.029 170.548 305.324 170.548 304.455C170.548 303.585 169.843 302.88 168.972 302.88C168.102 302.88 167.397 303.585 167.397 304.455C167.397 305.324 168.102 306.029 168.972 306.029Z" - fill="#CCDFFF" - /> - <path - d="M244.614 287.136C245.485 287.136 246.19 286.431 246.19 285.561C246.19 284.692 245.485 283.987 244.614 283.987C243.744 283.987 243.038 284.692 243.038 285.561C243.038 286.431 243.744 287.136 244.614 287.136Z" - fill="#CCDFFF" - /> - <path - d="M244.614 343.817C245.485 343.817 246.19 343.112 246.19 342.242C246.19 341.373 245.485 340.668 244.614 340.668C243.744 340.668 243.038 341.373 243.038 342.242C243.038 343.112 243.744 343.817 244.614 343.817Z" - fill="#CCDFFF" - /> - <path - d="M206.793 287.136C207.664 287.136 208.369 286.431 208.369 285.561C208.369 284.692 207.664 283.987 206.793 283.987C205.923 283.987 205.218 284.692 205.218 285.561C205.218 286.431 205.923 287.136 206.793 287.136Z" - fill="#CCDFFF" - /> - <path - d="M168.972 287.136C169.843 287.136 170.548 286.431 170.548 285.561C170.548 284.692 169.843 283.987 168.972 283.987C168.102 283.987 167.397 284.692 167.397 285.561C167.397 286.431 168.102 287.136 168.972 287.136Z" - fill="#CCDFFF" - /> - <path - d="M206.793 343.817C207.664 343.817 208.369 343.112 208.369 342.242C208.369 341.373 207.664 340.668 206.793 340.668C205.923 340.668 205.218 341.373 205.218 342.242C205.218 343.112 205.923 343.817 206.793 343.817Z" - fill="#CCDFFF" - /> - <path - d="M168.972 343.817C169.843 343.817 170.548 343.112 170.548 342.242C170.548 341.373 169.843 340.668 168.972 340.668C168.102 340.668 167.397 341.373 167.397 342.242C167.397 343.112 168.102 343.817 168.972 343.817Z" - fill="#CCDFFF" - /> - <path - d="M225.704 249.349C226.574 249.349 227.28 248.644 227.28 247.774C227.28 246.904 226.574 246.2 225.704 246.2C224.833 246.2 224.128 246.904 224.128 247.774C224.128 248.644 224.833 249.349 225.704 249.349Z" - fill="#CCDFFF" - /> - <path - d="M225.704 306.029C226.574 306.029 227.28 305.324 227.28 304.455C227.28 303.585 226.574 302.88 225.704 302.88C224.833 302.88 224.128 303.585 224.128 304.455C224.128 305.324 224.833 306.029 225.704 306.029Z" - fill="#CCDFFF" - /> - <path - d="M187.883 249.349C188.753 249.349 189.459 248.644 189.459 247.774C189.459 246.904 188.753 246.2 187.883 246.2C187.013 246.2 186.307 246.904 186.307 247.774C186.307 248.644 187.013 249.349 187.883 249.349Z" - fill="#CCDFFF" - /> - <path - d="M150.062 249.349C150.932 249.349 151.638 248.644 151.638 247.774C151.638 246.904 150.932 246.2 150.062 246.2C149.192 246.2 148.486 246.904 148.486 247.774C148.486 248.644 149.192 249.349 150.062 249.349Z" - fill="#CCDFFF" - /> - <path - d="M131.152 249.349C132.022 249.349 132.728 248.644 132.728 247.774C132.728 246.904 132.022 246.2 131.152 246.2C130.281 246.2 129.576 246.904 129.576 247.774C129.576 248.644 130.281 249.349 131.152 249.349Z" - fill="#CCDFFF" - /> - <path - d="M187.883 306.029C188.753 306.029 189.459 305.324 189.459 304.455C189.459 303.585 188.753 302.88 187.883 302.88C187.013 302.88 186.307 303.585 186.307 304.455C186.307 305.324 187.013 306.029 187.883 306.029Z" - fill="#CCDFFF" - /> - <path - d="M150.062 306.029C150.932 306.029 151.638 305.324 151.638 304.455C151.638 303.585 150.932 302.88 150.062 302.88C149.192 302.88 148.486 303.585 148.486 304.455C148.486 305.324 149.192 306.029 150.062 306.029Z" - fill="#CCDFFF" - /> - <path - d="M131.152 306.029C132.022 306.029 132.728 305.324 132.728 304.455C132.728 303.585 132.022 302.88 131.152 302.88C130.281 302.88 129.576 303.585 129.576 304.455C129.576 305.324 130.281 306.029 131.152 306.029Z" - fill="#CCDFFF" - /> - <path - d="M225.704 287.136C226.574 287.136 227.28 286.431 227.28 285.561C227.28 284.692 226.574 283.987 225.704 283.987C224.833 283.987 224.128 284.692 224.128 285.561C224.128 286.431 224.833 287.136 225.704 287.136Z" - fill="#CCDFFF" - /> - <path - d="M225.704 343.817C226.574 343.817 227.28 343.112 227.28 342.242C227.28 341.373 226.574 340.668 225.704 340.668C224.833 340.668 224.128 341.373 224.128 342.242C224.128 343.112 224.833 343.817 225.704 343.817Z" - fill="#CCDFFF" - /> - <path - d="M187.883 287.136C188.753 287.136 189.459 286.431 189.459 285.561C189.459 284.692 188.753 283.987 187.883 283.987C187.013 283.987 186.307 284.692 186.307 285.561C186.307 286.431 187.013 287.136 187.883 287.136Z" - fill="#CCDFFF" - /> - <path - d="M150.062 287.136C150.932 287.136 151.638 286.431 151.638 285.561C151.638 284.692 150.932 283.987 150.062 283.987C149.192 283.987 148.486 284.692 148.486 285.561C148.486 286.431 149.192 287.136 150.062 287.136Z" - fill="#CCDFFF" - /> - <path - d="M131.152 287.136C132.022 287.136 132.728 286.431 132.728 285.561C132.728 284.692 132.022 283.987 131.152 283.987C130.281 283.987 129.576 284.692 129.576 285.561C129.576 286.431 130.281 287.136 131.152 287.136Z" - fill="#CCDFFF" - /> - <path - d="M187.883 343.817C188.753 343.817 189.459 343.112 189.459 342.242C189.459 341.373 188.753 340.668 187.883 340.668C187.013 340.668 186.307 341.373 186.307 342.242C186.307 343.112 187.013 343.817 187.883 343.817Z" - fill="#CCDFFF" - /> - <path - d="M150.062 343.817C150.932 343.817 151.638 343.112 151.638 342.242C151.638 341.373 150.932 340.668 150.062 340.668C149.192 340.668 148.486 341.373 148.486 342.242C148.486 343.112 149.192 343.817 150.062 343.817Z" - fill="#CCDFFF" - /> - <path - d="M131.152 343.817C132.022 343.817 132.728 343.112 132.728 342.242C132.728 341.373 132.022 340.668 131.152 340.668C130.281 340.668 129.576 341.373 129.576 342.242C129.576 343.112 130.281 343.817 131.152 343.817Z" - fill="#CCDFFF" - /> - <path - d="M263.525 230.455C264.395 230.455 265.1 229.75 265.1 228.88C265.1 228.011 264.395 227.306 263.525 227.306C262.654 227.306 261.949 228.011 261.949 228.88C261.949 229.75 262.654 230.455 263.525 230.455Z" - fill="#CCDFFF" - /> - <path - d="M263.525 268.242C264.395 268.242 265.1 267.537 265.1 266.668C265.1 265.798 264.395 265.093 263.525 265.093C262.654 265.093 261.949 265.798 261.949 266.668C261.949 267.537 262.654 268.242 263.525 268.242Z" - fill="#CCDFFF" - /> - <path - d="M263.525 324.923C264.395 324.923 265.1 324.218 265.1 323.349C265.1 322.479 264.395 321.774 263.525 321.774C262.654 321.774 261.949 322.479 261.949 323.349C261.949 324.218 262.654 324.923 263.525 324.923Z" - fill="#CCDFFF" - /> - <path - d="M263.525 249.349C264.395 249.349 265.1 248.644 265.1 247.774C265.1 246.904 264.395 246.2 263.525 246.2C262.654 246.2 261.949 246.904 261.949 247.774C261.949 248.644 262.654 249.349 263.525 249.349Z" - fill="#CCDFFF" - /> - <path - d="M263.525 306.029C264.395 306.029 265.1 305.324 265.1 304.455C265.1 303.585 264.395 302.88 263.525 302.88C262.654 302.88 261.949 303.585 261.949 304.455C261.949 305.324 262.654 306.029 263.525 306.029Z" - fill="#CCDFFF" - /> - <path - d="M263.525 287.136C264.395 287.136 265.1 286.431 265.1 285.561C265.1 284.692 264.395 283.987 263.525 283.987C262.654 283.987 261.949 284.692 261.949 285.561C261.949 286.431 262.654 287.136 263.525 287.136Z" - fill="#CCDFFF" - /> - <path - d="M263.525 343.817C264.395 343.817 265.1 343.112 265.1 342.242C265.1 341.373 264.395 340.668 263.525 340.668C262.654 340.668 261.949 341.373 261.949 342.242C261.949 343.112 262.654 343.817 263.525 343.817Z" - fill="#CCDFFF" - /> - <path - d="M244.614 60.4123C245.485 60.4123 246.19 59.7074 246.19 58.8379C246.19 57.9683 245.485 57.2634 244.614 57.2634C243.744 57.2634 243.038 57.9683 243.038 58.8379C243.038 59.7074 243.744 60.4123 244.614 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M206.793 60.4123C207.664 60.4123 208.369 59.7074 208.369 58.8379C208.369 57.9683 207.664 57.2634 206.793 57.2634C205.923 57.2634 205.218 57.9683 205.218 58.8379C205.218 59.7074 205.923 60.4123 206.793 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M168.972 60.4123C169.843 60.4123 170.548 59.7074 170.548 58.8379C170.548 57.9683 169.843 57.2634 168.972 57.2634C168.102 57.2634 167.397 57.9683 167.397 58.8379C167.397 59.7074 168.102 60.4123 168.972 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M225.704 60.4123C226.574 60.4123 227.28 59.7074 227.28 58.8379C227.28 57.9683 226.574 57.2634 225.704 57.2634C224.833 57.2634 224.128 57.9683 224.128 58.8379C224.128 59.7074 224.833 60.4123 225.704 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M187.883 60.4123C188.753 60.4123 189.459 59.7074 189.459 58.8379C189.459 57.9683 188.753 57.2634 187.883 57.2634C187.013 57.2634 186.307 57.9683 186.307 58.8379C186.307 59.7074 187.013 60.4123 187.883 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M150.062 60.4123C150.932 60.4123 151.638 59.7074 151.638 58.8379C151.638 57.9683 150.932 57.2634 150.062 57.2634C149.192 57.2634 148.486 57.9683 148.486 58.8379C148.486 59.7074 149.192 60.4123 150.062 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M131.152 60.4123C132.022 60.4123 132.728 59.7074 132.728 58.8379C132.728 57.9683 132.022 57.2634 131.152 57.2634C130.281 57.2634 129.576 57.9683 129.576 58.8379C129.576 59.7074 130.281 60.4123 131.152 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M244.614 41.5187C245.485 41.5187 246.19 40.8138 246.19 39.9443C246.19 39.0747 245.485 38.3698 244.614 38.3698C243.744 38.3698 243.038 39.0747 243.038 39.9443C243.038 40.8138 243.744 41.5187 244.614 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M206.793 41.5187C207.664 41.5187 208.369 40.8138 208.369 39.9443C208.369 39.0747 207.664 38.3698 206.793 38.3698C205.923 38.3698 205.218 39.0747 205.218 39.9443C205.218 40.8138 205.923 41.5187 206.793 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M168.972 41.5187C169.843 41.5187 170.548 40.8138 170.548 39.9443C170.548 39.0747 169.843 38.3698 168.972 38.3698C168.102 38.3698 167.397 39.0747 167.397 39.9443C167.397 40.8138 168.102 41.5187 168.972 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M244.614 79.3059C245.485 79.3059 246.19 78.601 246.19 77.7315C246.19 76.8619 245.485 76.157 244.614 76.157C243.744 76.157 243.038 76.8619 243.038 77.7315C243.038 78.601 243.744 79.3059 244.614 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M206.793 79.3059C207.664 79.3059 208.369 78.601 208.369 77.7315C208.369 76.8619 207.664 76.157 206.793 76.157C205.923 76.157 205.218 76.8619 205.218 77.7315C205.218 78.601 205.923 79.3059 206.793 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M168.972 79.3059C169.843 79.3059 170.548 78.601 170.548 77.7315C170.548 76.8619 169.843 76.157 168.972 76.157C168.102 76.157 167.397 76.8619 167.397 77.7315C167.397 78.601 168.102 79.3059 168.972 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M225.704 41.5187C226.574 41.5187 227.28 40.8138 227.28 39.9443C227.28 39.0747 226.574 38.3698 225.704 38.3698C224.833 38.3698 224.128 39.0747 224.128 39.9443C224.128 40.8138 224.833 41.5187 225.704 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M187.883 41.5187C188.753 41.5187 189.459 40.8138 189.459 39.9443C189.459 39.0747 188.753 38.3698 187.883 38.3698C187.013 38.3698 186.307 39.0747 186.307 39.9443C186.307 40.8138 187.013 41.5187 187.883 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M150.062 41.5187C150.932 41.5187 151.638 40.8138 151.638 39.9443C151.638 39.0747 150.932 38.3698 150.062 38.3698C149.192 38.3698 148.486 39.0747 148.486 39.9443C148.486 40.8138 149.192 41.5187 150.062 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M131.152 41.5187C132.022 41.5187 132.728 40.8138 132.728 39.9443C132.728 39.0747 132.022 38.3698 131.152 38.3698C130.281 38.3698 129.576 39.0747 129.576 39.9443C129.576 40.8138 130.281 41.5187 131.152 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M225.704 79.3059C226.574 79.3059 227.28 78.601 227.28 77.7315C227.28 76.8619 226.574 76.157 225.704 76.157C224.833 76.157 224.128 76.8619 224.128 77.7315C224.128 78.601 224.833 79.3059 225.704 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M187.883 79.3059C188.753 79.3059 189.459 78.601 189.459 77.7315C189.459 76.8619 188.753 76.157 187.883 76.157C187.013 76.157 186.307 76.8619 186.307 77.7315C186.307 78.601 187.013 79.3059 187.883 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M150.062 79.3059C150.932 79.3059 151.638 78.601 151.638 77.7315C151.638 76.8619 150.932 76.157 150.062 76.157C149.192 76.157 148.486 76.8619 148.486 77.7315C148.486 78.601 149.192 79.3059 150.062 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M131.152 79.3059C132.022 79.3059 132.728 78.601 132.728 77.7315C132.728 76.8619 132.022 76.157 131.152 76.157C130.281 76.157 129.576 76.8619 129.576 77.7315C129.576 78.601 130.281 79.3059 131.152 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M263.525 60.4123C264.395 60.4123 265.1 59.7074 265.1 58.8379C265.1 57.9683 264.395 57.2634 263.525 57.2634C262.654 57.2634 261.949 57.9683 261.949 58.8379C261.949 59.7074 262.654 60.4123 263.525 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M263.525 41.5187C264.395 41.5187 265.1 40.8138 265.1 39.9443C265.1 39.0747 264.395 38.3698 263.525 38.3698C262.654 38.3698 261.949 39.0747 261.949 39.9443C261.949 40.8138 262.654 41.5187 263.525 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M263.525 79.3059C264.395 79.3059 265.1 78.601 265.1 77.7315C265.1 76.8619 264.395 76.157 263.525 76.157C262.654 76.157 261.949 76.8619 261.949 77.7315C261.949 78.601 262.654 79.3059 263.525 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M112.241 230.455C113.112 230.455 113.817 229.75 113.817 228.88C113.817 228.011 113.112 227.306 112.241 227.306C111.371 227.306 110.665 228.011 110.665 228.88C110.665 229.75 111.371 230.455 112.241 230.455Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 230.455C75.2907 230.455 75.9962 229.75 75.9962 228.88C75.9962 228.011 75.2907 227.306 74.4203 227.306C73.55 227.306 72.8445 228.011 72.8445 228.88C72.8445 229.75 73.55 230.455 74.4203 230.455Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 230.455C37.4699 230.455 38.1754 229.75 38.1754 228.88C38.1754 228.011 37.4699 227.306 36.5996 227.306C35.7292 227.306 35.0237 228.011 35.0237 228.88C35.0237 229.75 35.7292 230.455 36.5996 230.455Z" - fill="#CCDFFF" - /> - <path - d="M112.241 268.242C113.112 268.242 113.817 267.537 113.817 266.668C113.817 265.798 113.112 265.093 112.241 265.093C111.371 265.093 110.665 265.798 110.665 266.668C110.665 267.537 111.371 268.242 112.241 268.242Z" - fill="#CCDFFF" - /> - <path - d="M112.241 324.923C113.112 324.923 113.817 324.218 113.817 323.349C113.817 322.479 113.112 321.774 112.241 321.774C111.371 321.774 110.665 322.479 110.665 323.349C110.665 324.218 111.371 324.923 112.241 324.923Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 268.242C75.2907 268.242 75.9962 267.537 75.9962 266.668C75.9962 265.798 75.2907 265.093 74.4203 265.093C73.55 265.093 72.8445 265.798 72.8445 266.668C72.8445 267.537 73.55 268.242 74.4203 268.242Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 268.242C37.4699 268.242 38.1754 267.537 38.1754 266.668C38.1754 265.798 37.4699 265.093 36.5996 265.093C35.7292 265.093 35.0237 265.798 35.0237 266.668C35.0237 267.537 35.7292 268.242 36.5996 268.242Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 324.923C75.2907 324.923 75.9962 324.218 75.9962 323.349C75.9962 322.479 75.2907 321.774 74.4203 321.774C73.55 321.774 72.8445 322.479 72.8445 323.349C72.8445 324.218 73.55 324.923 74.4203 324.923Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 324.923C37.4699 324.923 38.1754 324.218 38.1754 323.349C38.1754 322.479 37.4699 321.774 36.5996 321.774C35.7292 321.774 35.0237 322.479 35.0237 323.349C35.0237 324.218 35.7292 324.923 36.5996 324.923Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 230.455C94.2012 230.455 94.9068 229.75 94.9068 228.88C94.9068 228.011 94.2012 227.306 93.3309 227.306C92.4605 227.306 91.755 228.011 91.755 228.88C91.755 229.75 92.4605 230.455 93.3309 230.455Z" - fill="#CCDFFF" - /> - <path - d="M55.51 230.455C56.3803 230.455 57.0858 229.75 57.0858 228.88C57.0858 228.011 56.3803 227.306 55.51 227.306C54.6396 227.306 53.9341 228.011 53.9341 228.88C53.9341 229.75 54.6396 230.455 55.51 230.455Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 230.455C18.5595 230.455 19.265 229.75 19.265 228.88C19.265 228.011 18.5595 227.306 17.6891 227.306C16.8188 227.306 16.1133 228.011 16.1133 228.88C16.1133 229.75 16.8188 230.455 17.6891 230.455Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 268.242C94.2012 268.242 94.9068 267.537 94.9068 266.668C94.9068 265.798 94.2012 265.093 93.3309 265.093C92.4605 265.093 91.755 265.798 91.755 266.668C91.755 267.537 92.4605 268.242 93.3309 268.242Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 324.923C94.2012 324.923 94.9068 324.218 94.9068 323.349C94.9068 322.479 94.2012 321.774 93.3309 321.774C92.4605 321.774 91.755 322.479 91.755 323.349C91.755 324.218 92.4605 324.923 93.3309 324.923Z" - fill="#CCDFFF" - /> - <path - d="M55.51 268.242C56.3803 268.242 57.0858 267.537 57.0858 266.668C57.0858 265.798 56.3803 265.093 55.51 265.093C54.6396 265.093 53.9341 265.798 53.9341 266.668C53.9341 267.537 54.6396 268.242 55.51 268.242Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 268.242C18.5595 268.242 19.265 267.537 19.265 266.668C19.265 265.798 18.5595 265.093 17.6891 265.093C16.8188 265.093 16.1133 265.798 16.1133 266.668C16.1133 267.537 16.8188 268.242 17.6891 268.242Z" - fill="#CCDFFF" - /> - <path - d="M55.51 324.923C56.3803 324.923 57.0858 324.218 57.0858 323.349C57.0858 322.479 56.3803 321.774 55.51 321.774C54.6396 321.774 53.9341 322.479 53.9341 323.349C53.9341 324.218 54.6396 324.923 55.51 324.923Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 324.923C18.5595 324.923 19.265 324.218 19.265 323.349C19.265 322.479 18.5595 321.774 17.6891 321.774C16.8188 321.774 16.1133 322.479 16.1133 323.349C16.1133 324.218 16.8188 324.923 17.6891 324.923Z" - fill="#CCDFFF" - /> - <path - d="M112.241 249.349C113.112 249.349 113.817 248.644 113.817 247.774C113.817 246.904 113.112 246.2 112.241 246.2C111.371 246.2 110.665 246.904 110.665 247.774C110.665 248.644 111.371 249.349 112.241 249.349Z" - fill="#CCDFFF" - /> - <path - d="M112.241 306.029C113.112 306.029 113.817 305.324 113.817 304.455C113.817 303.585 113.112 302.88 112.241 302.88C111.371 302.88 110.665 303.585 110.665 304.455C110.665 305.324 111.371 306.029 112.241 306.029Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 249.349C75.2907 249.349 75.9962 248.644 75.9962 247.774C75.9962 246.904 75.2907 246.2 74.4203 246.2C73.55 246.2 72.8445 246.904 72.8445 247.774C72.8445 248.644 73.55 249.349 74.4203 249.349Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 249.349C37.4699 249.349 38.1754 248.644 38.1754 247.774C38.1754 246.904 37.4699 246.2 36.5996 246.2C35.7292 246.2 35.0237 246.904 35.0237 247.774C35.0237 248.644 35.7292 249.349 36.5996 249.349Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 306.029C75.2907 306.029 75.9962 305.324 75.9962 304.455C75.9962 303.585 75.2907 302.88 74.4203 302.88C73.55 302.88 72.8445 303.585 72.8445 304.455C72.8445 305.324 73.55 306.029 74.4203 306.029Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 306.029C37.4699 306.029 38.1754 305.324 38.1754 304.455C38.1754 303.585 37.4699 302.88 36.5996 302.88C35.7292 302.88 35.0237 303.585 35.0237 304.455C35.0237 305.324 35.7292 306.029 36.5996 306.029Z" - fill="#CCDFFF" - /> - <path - d="M112.241 287.136C113.112 287.136 113.817 286.431 113.817 285.561C113.817 284.692 113.112 283.987 112.241 283.987C111.371 283.987 110.665 284.692 110.665 285.561C110.665 286.431 111.371 287.136 112.241 287.136Z" - fill="#CCDFFF" - /> - <path - d="M112.241 343.817C113.112 343.817 113.817 343.112 113.817 342.242C113.817 341.373 113.112 340.668 112.241 340.668C111.371 340.668 110.665 341.373 110.665 342.242C110.665 343.112 111.371 343.817 112.241 343.817Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 287.136C75.2907 287.136 75.9962 286.431 75.9962 285.561C75.9962 284.692 75.2907 283.987 74.4203 283.987C73.55 283.987 72.8445 284.692 72.8445 285.561C72.8445 286.431 73.55 287.136 74.4203 287.136Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 287.136C37.4699 287.136 38.1754 286.431 38.1754 285.561C38.1754 284.692 37.4699 283.987 36.5996 283.987C35.7292 283.987 35.0237 284.692 35.0237 285.561C35.0237 286.431 35.7292 287.136 36.5996 287.136Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 343.817C75.2907 343.817 75.9962 343.112 75.9962 342.242C75.9962 341.373 75.2907 340.668 74.4203 340.668C73.55 340.668 72.8445 341.373 72.8445 342.242C72.8445 343.112 73.55 343.817 74.4203 343.817Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 343.817C37.4699 343.817 38.1754 343.112 38.1754 342.242C38.1754 341.373 37.4699 340.668 36.5996 340.668C35.7292 340.668 35.0237 341.373 35.0237 342.242C35.0237 343.112 35.7292 343.817 36.5996 343.817Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 249.349C94.2012 249.349 94.9068 248.644 94.9068 247.774C94.9068 246.904 94.2012 246.2 93.3309 246.2C92.4605 246.2 91.755 246.904 91.755 247.774C91.755 248.644 92.4605 249.349 93.3309 249.349Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 306.029C94.2012 306.029 94.9068 305.324 94.9068 304.455C94.9068 303.585 94.2012 302.88 93.3309 302.88C92.4605 302.88 91.755 303.585 91.755 304.455C91.755 305.324 92.4605 306.029 93.3309 306.029Z" - fill="#CCDFFF" - /> - <path - d="M55.51 249.349C56.3803 249.349 57.0858 248.644 57.0858 247.774C57.0858 246.904 56.3803 246.2 55.51 246.2C54.6396 246.2 53.9341 246.904 53.9341 247.774C53.9341 248.644 54.6396 249.349 55.51 249.349Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 249.349C18.5595 249.349 19.265 248.644 19.265 247.774C19.265 246.904 18.5595 246.2 17.6891 246.2C16.8188 246.2 16.1133 246.904 16.1133 247.774C16.1133 248.644 16.8188 249.349 17.6891 249.349Z" - fill="#CCDFFF" - /> - <path - d="M55.51 306.029C56.3803 306.029 57.0858 305.324 57.0858 304.455C57.0858 303.585 56.3803 302.88 55.51 302.88C54.6396 302.88 53.9341 303.585 53.9341 304.455C53.9341 305.324 54.6396 306.029 55.51 306.029Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 306.029C18.5595 306.029 19.265 305.324 19.265 304.455C19.265 303.585 18.5595 302.88 17.6891 302.88C16.8188 302.88 16.1133 303.585 16.1133 304.455C16.1133 305.324 16.8188 306.029 17.6891 306.029Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 287.136C94.2012 287.136 94.9068 286.431 94.9068 285.561C94.9068 284.692 94.2012 283.987 93.3309 283.987C92.4605 283.987 91.755 284.692 91.755 285.561C91.755 286.431 92.4605 287.136 93.3309 287.136Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 343.817C94.2012 343.817 94.9068 343.112 94.9068 342.242C94.9068 341.373 94.2012 340.668 93.3309 340.668C92.4605 340.668 91.755 341.373 91.755 342.242C91.755 343.112 92.4605 343.817 93.3309 343.817Z" - fill="#CCDFFF" - /> - <path - d="M55.51 287.136C56.3803 287.136 57.0858 286.431 57.0858 285.561C57.0858 284.692 56.3803 283.987 55.51 283.987C54.6396 283.987 53.9341 284.692 53.9341 285.561C53.9341 286.431 54.6396 287.136 55.51 287.136Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 287.136C18.5595 287.136 19.265 286.431 19.265 285.561C19.265 284.692 18.5595 283.987 17.6891 283.987C16.8188 283.987 16.1133 284.692 16.1133 285.561C16.1133 286.431 16.8188 287.136 17.6891 287.136Z" - fill="#CCDFFF" - /> - <path - d="M55.51 343.817C56.3803 343.817 57.0858 343.112 57.0858 342.242C57.0858 341.373 56.3803 340.668 55.51 340.668C54.6396 340.668 53.9341 341.373 53.9341 342.242C53.9341 343.112 54.6396 343.817 55.51 343.817Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 343.817C18.5595 343.817 19.265 343.112 19.265 342.242C19.265 341.373 18.5595 340.668 17.6891 340.668C16.8188 340.668 16.1133 341.373 16.1133 342.242C16.1133 343.112 16.8188 343.817 17.6891 343.817Z" - fill="#CCDFFF" - /> - <path - d="M112.241 60.4123C113.112 60.4123 113.817 59.7074 113.817 58.8379C113.817 57.9683 113.112 57.2634 112.241 57.2634C111.371 57.2634 110.665 57.9683 110.665 58.8379C110.665 59.7074 111.371 60.4123 112.241 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 60.4123C75.2907 60.4123 75.9962 59.7074 75.9962 58.8379C75.9962 57.9683 75.2907 57.2634 74.4203 57.2634C73.55 57.2634 72.8445 57.9683 72.8445 58.8379C72.8445 59.7074 73.55 60.4123 74.4203 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 60.4123C37.4699 60.4123 38.1754 59.7074 38.1754 58.8379C38.1754 57.9683 37.4699 57.2634 36.5996 57.2634C35.7292 57.2634 35.0237 57.9683 35.0237 58.8379C35.0237 59.7074 35.7292 60.4123 36.5996 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 60.4123C94.2012 60.4123 94.9068 59.7074 94.9068 58.8379C94.9068 57.9683 94.2012 57.2634 93.3309 57.2634C92.4605 57.2634 91.755 57.9683 91.755 58.8379C91.755 59.7074 92.4605 60.4123 93.3309 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M55.51 60.4123C56.3803 60.4123 57.0858 59.7074 57.0858 58.8379C57.0858 57.9683 56.3803 57.2634 55.51 57.2634C54.6396 57.2634 53.9341 57.9683 53.9341 58.8379C53.9341 59.7074 54.6396 60.4123 55.51 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 60.4123C18.5595 60.4123 19.265 59.7074 19.265 58.8379C19.265 57.9683 18.5595 57.2634 17.6891 57.2634C16.8188 57.2634 16.1133 57.9683 16.1133 58.8379C16.1133 59.7074 16.8188 60.4123 17.6891 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M112.241 41.5187C113.112 41.5187 113.817 40.8138 113.817 39.9443C113.817 39.0747 113.112 38.3698 112.241 38.3698C111.371 38.3698 110.665 39.0747 110.665 39.9443C110.665 40.8138 111.371 41.5187 112.241 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 41.5187C75.2907 41.5187 75.9962 40.8138 75.9962 39.9443C75.9962 39.0747 75.2907 38.3698 74.4203 38.3698C73.55 38.3698 72.8445 39.0747 72.8445 39.9443C72.8445 40.8138 73.55 41.5187 74.4203 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 41.5187C37.4699 41.5187 38.1754 40.8138 38.1754 39.9443C38.1754 39.0747 37.4699 38.3698 36.5996 38.3698C35.7292 38.3698 35.0237 39.0747 35.0237 39.9443C35.0237 40.8138 35.7292 41.5187 36.5996 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M112.241 79.3059C113.112 79.3059 113.817 78.601 113.817 77.7315C113.817 76.8619 113.112 76.157 112.241 76.157C111.371 76.157 110.665 76.8619 110.665 77.7315C110.665 78.601 111.371 79.3059 112.241 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 79.3059C75.2907 79.3059 75.9962 78.601 75.9962 77.7315C75.9962 76.8619 75.2907 76.157 74.4203 76.157C73.55 76.157 72.8445 76.8619 72.8445 77.7315C72.8445 78.601 73.55 79.3059 74.4203 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 79.3059C37.4699 79.3059 38.1754 78.601 38.1754 77.7315C38.1754 76.8619 37.4699 76.157 36.5996 76.157C35.7292 76.157 35.0237 76.8619 35.0237 77.7315C35.0237 78.601 35.7292 79.3059 36.5996 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 41.5187C94.2012 41.5187 94.9068 40.8138 94.9068 39.9443C94.9068 39.0747 94.2012 38.3698 93.3309 38.3698C92.4605 38.3698 91.755 39.0747 91.755 39.9443C91.755 40.8138 92.4605 41.5187 93.3309 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M55.51 41.5187C56.3803 41.5187 57.0858 40.8138 57.0858 39.9443C57.0858 39.0747 56.3803 38.3698 55.51 38.3698C54.6396 38.3698 53.9341 39.0747 53.9341 39.9443C53.9341 40.8138 54.6396 41.5187 55.51 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 41.5187C18.5595 41.5187 19.265 40.8138 19.265 39.9443C19.265 39.0747 18.5595 38.3698 17.6891 38.3698C16.8188 38.3698 16.1133 39.0747 16.1133 39.9443C16.1133 40.8138 16.8188 41.5187 17.6891 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 79.3059C94.2012 79.3059 94.9068 78.601 94.9068 77.7315C94.9068 76.8619 94.2012 76.157 93.3309 76.157C92.4605 76.157 91.755 76.8619 91.755 77.7315C91.755 78.601 92.4605 79.3059 93.3309 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M55.51 79.3059C56.3803 79.3059 57.0858 78.601 57.0858 77.7315C57.0858 76.8619 56.3803 76.157 55.51 76.157C54.6396 76.157 53.9341 76.8619 53.9341 77.7315C53.9341 78.601 54.6396 79.3059 55.51 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 79.3059C18.5595 79.3059 19.265 78.601 19.265 77.7315C19.265 76.8619 18.5595 76.157 17.6891 76.157C16.8188 76.157 16.1133 76.8619 16.1133 77.7315C16.1133 78.601 16.8188 79.3059 17.6891 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M244.614 362.71C245.485 362.71 246.19 362.005 246.19 361.136C246.19 360.266 245.485 359.561 244.614 359.561C243.744 359.561 243.038 360.266 243.038 361.136C243.038 362.005 243.744 362.71 244.614 362.71Z" - fill="#CCDFFF" - /> - <path - d="M206.793 362.71C207.664 362.71 208.369 362.005 208.369 361.136C208.369 360.266 207.664 359.561 206.793 359.561C205.923 359.561 205.218 360.266 205.218 361.136C205.218 362.005 205.923 362.71 206.793 362.71Z" - fill="#CCDFFF" - /> - <path - d="M168.972 362.71C169.843 362.71 170.548 362.005 170.548 361.136C170.548 360.266 169.843 359.561 168.972 359.561C168.102 359.561 167.397 360.266 167.397 361.136C167.397 362.005 168.102 362.71 168.972 362.71Z" - fill="#CCDFFF" - /> - <path - d="M244.614 400.497C245.485 400.497 246.19 399.793 246.19 398.923C246.19 398.053 245.485 397.349 244.614 397.349C243.744 397.349 243.038 398.053 243.038 398.923C243.038 399.793 243.744 400.497 244.614 400.497Z" - fill="#CCDFFF" - /> - <path - d="M206.793 400.497C207.664 400.497 208.369 399.793 208.369 398.923C208.369 398.053 207.664 397.349 206.793 397.349C205.923 397.349 205.218 398.053 205.218 398.923C205.218 399.793 205.923 400.497 206.793 400.497Z" - fill="#CCDFFF" - /> - <path - d="M168.972 400.497C169.843 400.497 170.548 399.793 170.548 398.923C170.548 398.053 169.843 397.349 168.972 397.349C168.102 397.349 167.397 398.053 167.397 398.923C167.397 399.793 168.102 400.497 168.972 400.497Z" - fill="#CCDFFF" - /> - <path - d="M225.704 362.71C226.574 362.71 227.28 362.005 227.28 361.136C227.28 360.266 226.574 359.561 225.704 359.561C224.833 359.561 224.128 360.266 224.128 361.136C224.128 362.005 224.833 362.71 225.704 362.71Z" - fill="#CCDFFF" - /> - <path - d="M187.883 362.71C188.753 362.71 189.459 362.005 189.459 361.136C189.459 360.266 188.753 359.561 187.883 359.561C187.013 359.561 186.307 360.266 186.307 361.136C186.307 362.005 187.013 362.71 187.883 362.71Z" - fill="#CCDFFF" - /> - <path - d="M150.062 362.71C150.932 362.71 151.638 362.005 151.638 361.136C151.638 360.266 150.932 359.561 150.062 359.561C149.192 359.561 148.486 360.266 148.486 361.136C148.486 362.005 149.192 362.71 150.062 362.71Z" - fill="#CCDFFF" - /> - <path - d="M131.152 362.71C132.022 362.71 132.728 362.005 132.728 361.136C132.728 360.266 132.022 359.561 131.152 359.561C130.281 359.561 129.576 360.266 129.576 361.136C129.576 362.005 130.281 362.71 131.152 362.71Z" - fill="#CCDFFF" - /> - <path - d="M225.704 400.497C226.574 400.497 227.28 399.793 227.28 398.923C227.28 398.053 226.574 397.349 225.704 397.349C224.833 397.349 224.128 398.053 224.128 398.923C224.128 399.793 224.833 400.497 225.704 400.497Z" - fill="#CCDFFF" - /> - <path - d="M187.883 400.497C188.753 400.497 189.459 399.793 189.459 398.923C189.459 398.053 188.753 397.349 187.883 397.349C187.013 397.349 186.307 398.053 186.307 398.923C186.307 399.793 187.013 400.497 187.883 400.497Z" - fill="#CCDFFF" - /> - <path - d="M150.062 400.497C150.932 400.497 151.638 399.793 151.638 398.923C151.638 398.053 150.932 397.349 150.062 397.349C149.192 397.349 148.486 398.053 148.486 398.923C148.486 399.793 149.192 400.497 150.062 400.497Z" - fill="#CCDFFF" - /> - <path - d="M131.152 400.497C132.022 400.497 132.728 399.793 132.728 398.923C132.728 398.053 132.022 397.349 131.152 397.349C130.281 397.349 129.576 398.053 129.576 398.923C129.576 399.793 130.281 400.497 131.152 400.497Z" - fill="#CCDFFF" - /> - <path - d="M244.614 381.604C245.485 381.604 246.19 380.899 246.19 380.029C246.19 379.16 245.485 378.455 244.614 378.455C243.744 378.455 243.038 379.16 243.038 380.029C243.038 380.899 243.744 381.604 244.614 381.604Z" - fill="#CCDFFF" - /> - <path - d="M206.793 381.604C207.664 381.604 208.369 380.899 208.369 380.029C208.369 379.16 207.664 378.455 206.793 378.455C205.923 378.455 205.218 379.16 205.218 380.029C205.218 380.899 205.923 381.604 206.793 381.604Z" - fill="#CCDFFF" - /> - <path - d="M168.972 381.604C169.843 381.604 170.548 380.899 170.548 380.029C170.548 379.16 169.843 378.455 168.972 378.455C168.102 378.455 167.397 379.16 167.397 380.029C167.397 380.899 168.102 381.604 168.972 381.604Z" - fill="#CCDFFF" - /> - <path - d="M244.614 419.391C245.485 419.391 246.19 418.686 246.19 417.817C246.19 416.947 245.485 416.242 244.614 416.242C243.744 416.242 243.038 416.947 243.038 417.817C243.038 418.686 243.744 419.391 244.614 419.391Z" - fill="#CCDFFF" - /> - <path - d="M206.793 419.391C207.664 419.391 208.369 418.686 208.369 417.817C208.369 416.947 207.664 416.242 206.793 416.242C205.923 416.242 205.218 416.947 205.218 417.817C205.218 418.686 205.923 419.391 206.793 419.391Z" - fill="#CCDFFF" - /> - <path - d="M168.972 419.391C169.843 419.391 170.548 418.686 170.548 417.817C170.548 416.947 169.843 416.242 168.972 416.242C168.102 416.242 167.397 416.947 167.397 417.817C167.397 418.686 168.102 419.391 168.972 419.391Z" - fill="#CCDFFF" - /> - <path - d="M225.704 381.604C226.574 381.604 227.28 380.899 227.28 380.029C227.28 379.16 226.574 378.455 225.704 378.455C224.833 378.455 224.128 379.16 224.128 380.029C224.128 380.899 224.833 381.604 225.704 381.604Z" - fill="#CCDFFF" - /> - <path - d="M187.883 381.604C188.753 381.604 189.459 380.899 189.459 380.029C189.459 379.16 188.753 378.455 187.883 378.455C187.013 378.455 186.307 379.16 186.307 380.029C186.307 380.899 187.013 381.604 187.883 381.604Z" - fill="#CCDFFF" - /> - <path - d="M150.062 381.604C150.932 381.604 151.638 380.899 151.638 380.029C151.638 379.16 150.932 378.455 150.062 378.455C149.192 378.455 148.486 379.16 148.486 380.029C148.486 380.899 149.192 381.604 150.062 381.604Z" - fill="#CCDFFF" - /> - <path - d="M131.152 381.604C132.022 381.604 132.728 380.899 132.728 380.029C132.728 379.16 132.022 378.455 131.152 378.455C130.281 378.455 129.576 379.16 129.576 380.029C129.576 380.899 130.281 381.604 131.152 381.604Z" - fill="#CCDFFF" - /> - <path - d="M225.704 419.391C226.574 419.391 227.28 418.686 227.28 417.817C227.28 416.947 226.574 416.242 225.704 416.242C224.833 416.242 224.128 416.947 224.128 417.817C224.128 418.686 224.833 419.391 225.704 419.391Z" - fill="#CCDFFF" - /> - <path - d="M187.883 419.391C188.753 419.391 189.459 418.686 189.459 417.817C189.459 416.947 188.753 416.242 187.883 416.242C187.013 416.242 186.307 416.947 186.307 417.817C186.307 418.686 187.013 419.391 187.883 419.391Z" - fill="#CCDFFF" - /> - <path - d="M150.062 419.391C150.932 419.391 151.638 418.686 151.638 417.817C151.638 416.947 150.932 416.242 150.062 416.242C149.192 416.242 148.486 416.947 148.486 417.817C148.486 418.686 149.192 419.391 150.062 419.391Z" - fill="#CCDFFF" - /> - <path - d="M131.152 419.391C132.022 419.391 132.728 418.686 132.728 417.817C132.728 416.947 132.022 416.242 131.152 416.242C130.281 416.242 129.576 416.947 129.576 417.817C129.576 418.686 130.281 419.391 131.152 419.391Z" - fill="#CCDFFF" - /> - <path - d="M263.525 362.71C264.395 362.71 265.1 362.005 265.1 361.136C265.1 360.266 264.395 359.561 263.525 359.561C262.654 359.561 261.949 360.266 261.949 361.136C261.949 362.005 262.654 362.71 263.525 362.71Z" - fill="#CCDFFF" - /> - <path - d="M263.525 400.497C264.395 400.497 265.1 399.793 265.1 398.923C265.1 398.053 264.395 397.349 263.525 397.349C262.654 397.349 261.949 398.053 261.949 398.923C261.949 399.793 262.654 400.497 263.525 400.497Z" - fill="#CCDFFF" - /> - <path - d="M263.525 381.604C264.395 381.604 265.1 380.899 265.1 380.029C265.1 379.16 264.395 378.455 263.525 378.455C262.654 378.455 261.949 379.16 261.949 380.029C261.949 380.899 262.654 381.604 263.525 381.604Z" - fill="#CCDFFF" - /> - <path - d="M263.525 419.391C264.395 419.391 265.1 418.686 265.1 417.817C265.1 416.947 264.395 416.242 263.525 416.242C262.654 416.242 261.949 416.947 261.949 417.817C261.949 418.686 262.654 419.391 263.525 419.391Z" - fill="#CCDFFF" - /> - <path - d="M112.241 362.71C113.112 362.71 113.817 362.005 113.817 361.136C113.817 360.266 113.112 359.561 112.241 359.561C111.371 359.561 110.665 360.266 110.665 361.136C110.665 362.005 111.371 362.71 112.241 362.71Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 362.71C75.2907 362.71 75.9962 362.005 75.9962 361.136C75.9962 360.266 75.2907 359.561 74.4203 359.561C73.55 359.561 72.8445 360.266 72.8445 361.136C72.8445 362.005 73.55 362.71 74.4203 362.71Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 362.71C37.4699 362.71 38.1754 362.005 38.1754 361.136C38.1754 360.266 37.4699 359.561 36.5996 359.561C35.7292 359.561 35.0237 360.266 35.0237 361.136C35.0237 362.005 35.7292 362.71 36.5996 362.71Z" - fill="#CCDFFF" - /> - <path - d="M112.241 400.497C113.112 400.497 113.817 399.793 113.817 398.923C113.817 398.053 113.112 397.349 112.241 397.349C111.371 397.349 110.665 398.053 110.665 398.923C110.665 399.793 111.371 400.497 112.241 400.497Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 400.497C75.2907 400.497 75.9962 399.793 75.9962 398.923C75.9962 398.053 75.2907 397.349 74.4203 397.349C73.55 397.349 72.8445 398.053 72.8445 398.923C72.8445 399.793 73.55 400.497 74.4203 400.497Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 400.497C37.4699 400.497 38.1754 399.793 38.1754 398.923C38.1754 398.053 37.4699 397.349 36.5996 397.349C35.7292 397.349 35.0237 398.053 35.0237 398.923C35.0237 399.793 35.7292 400.497 36.5996 400.497Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 362.71C94.2012 362.71 94.9068 362.005 94.9068 361.136C94.9068 360.266 94.2012 359.561 93.3309 359.561C92.4605 359.561 91.755 360.266 91.755 361.136C91.755 362.005 92.4605 362.71 93.3309 362.71Z" - fill="#CCDFFF" - /> - <path - d="M55.51 362.71C56.3803 362.71 57.0858 362.005 57.0858 361.136C57.0858 360.266 56.3803 359.561 55.51 359.561C54.6396 359.561 53.9341 360.266 53.9341 361.136C53.9341 362.005 54.6396 362.71 55.51 362.71Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 362.71C18.5595 362.71 19.265 362.005 19.265 361.136C19.265 360.266 18.5595 359.561 17.6891 359.561C16.8188 359.561 16.1133 360.266 16.1133 361.136C16.1133 362.005 16.8188 362.71 17.6891 362.71Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 400.497C94.2012 400.497 94.9068 399.793 94.9068 398.923C94.9068 398.053 94.2012 397.349 93.3309 397.349C92.4605 397.349 91.755 398.053 91.755 398.923C91.755 399.793 92.4605 400.497 93.3309 400.497Z" - fill="#CCDFFF" - /> - <path - d="M55.51 400.497C56.3803 400.497 57.0858 399.793 57.0858 398.923C57.0858 398.053 56.3803 397.349 55.51 397.349C54.6396 397.349 53.9341 398.053 53.9341 398.923C53.9341 399.793 54.6396 400.497 55.51 400.497Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 400.497C18.5595 400.497 19.265 399.793 19.265 398.923C19.265 398.053 18.5595 397.349 17.6891 397.349C16.8188 397.349 16.1133 398.053 16.1133 398.923C16.1133 399.793 16.8188 400.497 17.6891 400.497Z" - fill="#CCDFFF" - /> - <path - d="M112.241 381.604C113.112 381.604 113.817 380.899 113.817 380.029C113.817 379.16 113.112 378.455 112.241 378.455C111.371 378.455 110.665 379.16 110.665 380.029C110.665 380.899 111.371 381.604 112.241 381.604Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 381.604C75.2907 381.604 75.9962 380.899 75.9962 380.029C75.9962 379.16 75.2907 378.455 74.4203 378.455C73.55 378.455 72.8445 379.16 72.8445 380.029C72.8445 380.899 73.55 381.604 74.4203 381.604Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 381.604C37.4699 381.604 38.1754 380.899 38.1754 380.029C38.1754 379.16 37.4699 378.455 36.5996 378.455C35.7292 378.455 35.0237 379.16 35.0237 380.029C35.0237 380.899 35.7292 381.604 36.5996 381.604Z" - fill="#CCDFFF" - /> - <path - d="M112.241 419.391C113.112 419.391 113.817 418.686 113.817 417.817C113.817 416.947 113.112 416.242 112.241 416.242C111.371 416.242 110.665 416.947 110.665 417.817C110.665 418.686 111.371 419.391 112.241 419.391Z" - fill="#CCDFFF" - /> - <path - d="M74.4203 419.391C75.2907 419.391 75.9962 418.686 75.9962 417.817C75.9962 416.947 75.2907 416.242 74.4203 416.242C73.55 416.242 72.8445 416.947 72.8445 417.817C72.8445 418.686 73.55 419.391 74.4203 419.391Z" - fill="#CCDFFF" - /> - <path - d="M36.5996 419.391C37.4699 419.391 38.1754 418.686 38.1754 417.817C38.1754 416.947 37.4699 416.242 36.5996 416.242C35.7292 416.242 35.0237 416.947 35.0237 417.817C35.0237 418.686 35.7292 419.391 36.5996 419.391Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 381.604C94.2012 381.604 94.9068 380.899 94.9068 380.029C94.9068 379.16 94.2012 378.455 93.3309 378.455C92.4605 378.455 91.755 379.16 91.755 380.029C91.755 380.899 92.4605 381.604 93.3309 381.604Z" - fill="#CCDFFF" - /> - <path - d="M55.51 381.604C56.3803 381.604 57.0858 380.899 57.0858 380.029C57.0858 379.16 56.3803 378.455 55.51 378.455C54.6396 378.455 53.9341 379.16 53.9341 380.029C53.9341 380.899 54.6396 381.604 55.51 381.604Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 381.604C18.5595 381.604 19.265 380.899 19.265 380.029C19.265 379.16 18.5595 378.455 17.6891 378.455C16.8188 378.455 16.1133 379.16 16.1133 380.029C16.1133 380.899 16.8188 381.604 17.6891 381.604Z" - fill="#CCDFFF" - /> - <path - d="M93.3309 419.391C94.2012 419.391 94.9068 418.686 94.9068 417.817C94.9068 416.947 94.2012 416.242 93.3309 416.242C92.4605 416.242 91.755 416.947 91.755 417.817C91.755 418.686 92.4605 419.391 93.3309 419.391Z" - fill="#CCDFFF" - /> - <path - d="M55.51 419.391C56.3803 419.391 57.0858 418.686 57.0858 417.817C57.0858 416.947 56.3803 416.242 55.51 416.242C54.6396 416.242 53.9341 416.947 53.9341 417.817C53.9341 418.686 54.6396 419.391 55.51 419.391Z" - fill="#CCDFFF" - /> - <path - d="M17.6891 419.391C18.5595 419.391 19.265 418.686 19.265 417.817C19.265 416.947 18.5595 416.242 17.6891 416.242C16.8188 416.242 16.1133 416.947 16.1133 417.817C16.1133 418.686 16.8188 419.391 17.6891 419.391Z" - fill="#CCDFFF" - /> - <path - d="M320.343 98.1996C321.213 98.1996 321.918 97.4947 321.918 96.6251C321.918 95.7555 321.213 95.0506 320.343 95.0506C319.472 95.0506 318.767 95.7555 318.767 96.6251C318.767 97.4947 319.472 98.1996 320.343 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M282.522 98.1996C283.392 98.1996 284.098 97.4947 284.098 96.6251C284.098 95.7555 283.392 95.0506 282.522 95.0506C281.651 95.0506 280.946 95.7555 280.946 96.6251C280.946 97.4947 281.651 98.1996 282.522 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M320.343 135.987C321.213 135.987 321.918 135.282 321.918 134.412C321.918 133.543 321.213 132.838 320.343 132.838C319.472 132.838 318.767 133.543 318.767 134.412C318.767 135.282 319.472 135.987 320.343 135.987Z" - fill="#CCDFFF" - /> - <path - d="M282.522 135.987C283.392 135.987 284.098 135.282 284.098 134.412C284.098 133.543 283.392 132.838 282.522 132.838C281.651 132.838 280.946 133.543 280.946 134.412C280.946 135.282 281.651 135.987 282.522 135.987Z" - fill="#CCDFFF" - /> - <path - d="M320.343 192.668C321.213 192.668 321.918 191.963 321.918 191.093C321.918 190.224 321.213 189.519 320.343 189.519C319.472 189.519 318.767 190.224 318.767 191.093C318.767 191.963 319.472 192.668 320.343 192.668Z" - fill="#CCDFFF" - /> - <path - d="M282.522 192.668C283.392 192.668 284.098 191.963 284.098 191.093C284.098 190.224 283.392 189.519 282.522 189.519C281.651 189.519 280.946 190.224 280.946 191.093C280.946 191.963 281.651 192.668 282.522 192.668Z" - fill="#CCDFFF" - /> - <path - d="M339.253 98.1996C340.123 98.1996 340.829 97.4947 340.829 96.6251C340.829 95.7555 340.123 95.0506 339.253 95.0506C338.383 95.0506 337.677 95.7555 337.677 96.6251C337.677 97.4947 338.383 98.1996 339.253 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M301.432 98.1996C302.302 98.1996 303.008 97.4947 303.008 96.6251C303.008 95.7555 302.302 95.0506 301.432 95.0506C300.562 95.0506 299.856 95.7555 299.856 96.6251C299.856 97.4947 300.562 98.1996 301.432 98.1996Z" - fill="#CCDFFF" - /> - <path - d="M339.253 135.987C340.123 135.987 340.829 135.282 340.829 134.412C340.829 133.543 340.123 132.838 339.253 132.838C338.383 132.838 337.677 133.543 337.677 134.412C337.677 135.282 338.383 135.987 339.253 135.987Z" - fill="#CCDFFF" - /> - <path - d="M339.253 192.668C340.123 192.668 340.829 191.963 340.829 191.093C340.829 190.224 340.123 189.519 339.253 189.519C338.383 189.519 337.677 190.224 337.677 191.093C337.677 191.963 338.383 192.668 339.253 192.668Z" - fill="#CCDFFF" - /> - <path - d="M301.432 135.987C302.302 135.987 303.008 135.282 303.008 134.412C303.008 133.543 302.302 132.838 301.432 132.838C300.562 132.838 299.856 133.543 299.856 134.412C299.856 135.282 300.562 135.987 301.432 135.987Z" - fill="#CCDFFF" - /> - <path - d="M301.432 192.668C302.302 192.668 303.008 191.963 303.008 191.093C303.008 190.224 302.302 189.519 301.432 189.519C300.562 189.519 299.856 190.224 299.856 191.093C299.856 191.963 300.562 192.668 301.432 192.668Z" - fill="#CCDFFF" - /> - <path - d="M320.343 117.093C321.213 117.093 321.918 116.388 321.918 115.519C321.918 114.649 321.213 113.944 320.343 113.944C319.472 113.944 318.767 114.649 318.767 115.519C318.767 116.388 319.472 117.093 320.343 117.093Z" - fill="#CCDFFF" - /> - <path - d="M282.522 117.093C283.392 117.093 284.098 116.388 284.098 115.519C284.098 114.649 283.392 113.944 282.522 113.944C281.651 113.944 280.946 114.649 280.946 115.519C280.946 116.388 281.651 117.093 282.522 117.093Z" - fill="#CCDFFF" - /> - <path - d="M320.343 173.774C321.213 173.774 321.918 173.069 321.918 172.2C321.918 171.33 321.213 170.625 320.343 170.625C319.472 170.625 318.767 171.33 318.767 172.2C318.767 173.069 319.472 173.774 320.343 173.774Z" - fill="#CCDFFF" - /> - <path - d="M282.522 173.774C283.392 173.774 284.098 173.069 284.098 172.2C284.098 171.33 283.392 170.625 282.522 170.625C281.651 170.625 280.946 171.33 280.946 172.2C280.946 173.069 281.651 173.774 282.522 173.774Z" - fill="#CCDFFF" - /> - <path - d="M320.343 154.88C321.213 154.88 321.918 154.176 321.918 153.306C321.918 152.436 321.213 151.731 320.343 151.731C319.472 151.731 318.767 152.436 318.767 153.306C318.767 154.176 319.472 154.88 320.343 154.88Z" - fill="#CCDFFF" - /> - <path - d="M282.522 154.88C283.392 154.88 284.098 154.176 284.098 153.306C284.098 152.436 283.392 151.731 282.522 151.731C281.651 151.731 280.946 152.436 280.946 153.306C280.946 154.176 281.651 154.88 282.522 154.88Z" - fill="#CCDFFF" - /> - <path - d="M320.343 211.561C321.213 211.561 321.918 210.856 321.918 209.987C321.918 209.117 321.213 208.412 320.343 208.412C319.472 208.412 318.767 209.117 318.767 209.987C318.767 210.856 319.472 211.561 320.343 211.561Z" - fill="#CCDFFF" - /> - <path - d="M282.522 211.561C283.392 211.561 284.098 210.856 284.098 209.987C284.098 209.117 283.392 208.412 282.522 208.412C281.651 208.412 280.946 209.117 280.946 209.987C280.946 210.856 281.651 211.561 282.522 211.561Z" - fill="#CCDFFF" - /> - <path - d="M339.253 117.093C340.123 117.093 340.829 116.388 340.829 115.519C340.829 114.649 340.123 113.944 339.253 113.944C338.383 113.944 337.677 114.649 337.677 115.519C337.677 116.388 338.383 117.093 339.253 117.093Z" - fill="#CCDFFF" - /> - <path - d="M339.253 173.774C340.123 173.774 340.829 173.069 340.829 172.2C340.829 171.33 340.123 170.625 339.253 170.625C338.383 170.625 337.677 171.33 337.677 172.2C337.677 173.069 338.383 173.774 339.253 173.774Z" - fill="#CCDFFF" - /> - <path - d="M301.432 117.093C302.302 117.093 303.008 116.388 303.008 115.519C303.008 114.649 302.302 113.944 301.432 113.944C300.562 113.944 299.856 114.649 299.856 115.519C299.856 116.388 300.562 117.093 301.432 117.093Z" - fill="#CCDFFF" - /> - <path - d="M301.432 173.774C302.302 173.774 303.008 173.069 303.008 172.2C303.008 171.33 302.302 170.625 301.432 170.625C300.562 170.625 299.856 171.33 299.856 172.2C299.856 173.069 300.562 173.774 301.432 173.774Z" - fill="#CCDFFF" - /> - <path - d="M339.253 154.88C340.123 154.88 340.829 154.176 340.829 153.306C340.829 152.436 340.123 151.731 339.253 151.731C338.383 151.731 337.677 152.436 337.677 153.306C337.677 154.176 338.383 154.88 339.253 154.88Z" - fill="#CCDFFF" - /> - <path - d="M339.253 211.561C340.123 211.561 340.829 210.856 340.829 209.987C340.829 209.117 340.123 208.412 339.253 208.412C338.383 208.412 337.677 209.117 337.677 209.987C337.677 210.856 338.383 211.561 339.253 211.561Z" - fill="#CCDFFF" - /> - <path - d="M301.432 154.88C302.302 154.88 303.008 154.176 303.008 153.306C303.008 152.436 302.302 151.731 301.432 151.731C300.562 151.731 299.856 152.436 299.856 153.306C299.856 154.176 300.562 154.88 301.432 154.88Z" - fill="#CCDFFF" - /> - <path - d="M301.432 211.561C302.302 211.561 303.008 210.856 303.008 209.987C303.008 209.117 302.302 208.412 301.432 208.412C300.562 208.412 299.856 209.117 299.856 209.987C299.856 210.856 300.562 211.561 301.432 211.561Z" - fill="#CCDFFF" - /> - <path - d="M320.343 230.455C321.213 230.455 321.918 229.75 321.918 228.88C321.918 228.011 321.213 227.306 320.343 227.306C319.472 227.306 318.767 228.011 318.767 228.88C318.767 229.75 319.472 230.455 320.343 230.455Z" - fill="#CCDFFF" - /> - <path - d="M282.522 230.455C283.392 230.455 284.098 229.75 284.098 228.88C284.098 228.011 283.392 227.306 282.522 227.306C281.651 227.306 280.946 228.011 280.946 228.88C280.946 229.75 281.651 230.455 282.522 230.455Z" - fill="#CCDFFF" - /> - <path - d="M320.343 268.242C321.213 268.242 321.918 267.537 321.918 266.668C321.918 265.798 321.213 265.093 320.343 265.093C319.472 265.093 318.767 265.798 318.767 266.668C318.767 267.537 319.472 268.242 320.343 268.242Z" - fill="#CCDFFF" - /> - <path - d="M282.522 268.242C283.392 268.242 284.098 267.537 284.098 266.668C284.098 265.798 283.392 265.093 282.522 265.093C281.651 265.093 280.946 265.798 280.946 266.668C280.946 267.537 281.651 268.242 282.522 268.242Z" - fill="#CCDFFF" - /> - <path - d="M320.343 324.923C321.213 324.923 321.918 324.218 321.918 323.349C321.918 322.479 321.213 321.774 320.343 321.774C319.472 321.774 318.767 322.479 318.767 323.349C318.767 324.218 319.472 324.923 320.343 324.923Z" - fill="#CCDFFF" - /> - <path - d="M282.522 324.923C283.392 324.923 284.098 324.218 284.098 323.349C284.098 322.479 283.392 321.774 282.522 321.774C281.651 321.774 280.946 322.479 280.946 323.349C280.946 324.218 281.651 324.923 282.522 324.923Z" - fill="#CCDFFF" - /> - <path - d="M339.253 230.455C340.123 230.455 340.829 229.75 340.829 228.88C340.829 228.011 340.123 227.306 339.253 227.306C338.383 227.306 337.677 228.011 337.677 228.88C337.677 229.75 338.383 230.455 339.253 230.455Z" - fill="#CCDFFF" - /> - <path - d="M301.432 230.455C302.302 230.455 303.008 229.75 303.008 228.88C303.008 228.011 302.302 227.306 301.432 227.306C300.562 227.306 299.856 228.011 299.856 228.88C299.856 229.75 300.562 230.455 301.432 230.455Z" - fill="#CCDFFF" - /> - <path - d="M339.253 268.242C340.123 268.242 340.829 267.537 340.829 266.668C340.829 265.798 340.123 265.093 339.253 265.093C338.383 265.093 337.677 265.798 337.677 266.668C337.677 267.537 338.383 268.242 339.253 268.242Z" - fill="#CCDFFF" - /> - <path - d="M339.253 324.923C340.123 324.923 340.829 324.218 340.829 323.349C340.829 322.479 340.123 321.774 339.253 321.774C338.383 321.774 337.677 322.479 337.677 323.349C337.677 324.218 338.383 324.923 339.253 324.923Z" - fill="#CCDFFF" - /> - <path - d="M301.432 268.242C302.302 268.242 303.008 267.537 303.008 266.668C303.008 265.798 302.302 265.093 301.432 265.093C300.562 265.093 299.856 265.798 299.856 266.668C299.856 267.537 300.562 268.242 301.432 268.242Z" - fill="#CCDFFF" - /> - <path - d="M301.432 324.923C302.302 324.923 303.008 324.218 303.008 323.349C303.008 322.479 302.302 321.774 301.432 321.774C300.562 321.774 299.856 322.479 299.856 323.349C299.856 324.218 300.562 324.923 301.432 324.923Z" - fill="#CCDFFF" - /> - <path - d="M320.343 249.349C321.213 249.349 321.918 248.644 321.918 247.774C321.918 246.904 321.213 246.2 320.343 246.2C319.472 246.2 318.767 246.904 318.767 247.774C318.767 248.644 319.472 249.349 320.343 249.349Z" - fill="#CCDFFF" - /> - <path - d="M282.522 249.349C283.392 249.349 284.098 248.644 284.098 247.774C284.098 246.904 283.392 246.2 282.522 246.2C281.651 246.2 280.946 246.904 280.946 247.774C280.946 248.644 281.651 249.349 282.522 249.349Z" - fill="#CCDFFF" - /> - <path - d="M320.343 306.029C321.213 306.029 321.918 305.324 321.918 304.455C321.918 303.585 321.213 302.88 320.343 302.88C319.472 302.88 318.767 303.585 318.767 304.455C318.767 305.324 319.472 306.029 320.343 306.029Z" - fill="#CCDFFF" - /> - <path - d="M282.522 306.029C283.392 306.029 284.098 305.324 284.098 304.455C284.098 303.585 283.392 302.88 282.522 302.88C281.651 302.88 280.946 303.585 280.946 304.455C280.946 305.324 281.651 306.029 282.522 306.029Z" - fill="#CCDFFF" - /> - <path - d="M320.343 287.136C321.213 287.136 321.918 286.431 321.918 285.561C321.918 284.692 321.213 283.987 320.343 283.987C319.472 283.987 318.767 284.692 318.767 285.561C318.767 286.431 319.472 287.136 320.343 287.136Z" - fill="#CCDFFF" - /> - <path - d="M282.522 287.136C283.392 287.136 284.098 286.431 284.098 285.561C284.098 284.692 283.392 283.987 282.522 283.987C281.651 283.987 280.946 284.692 280.946 285.561C280.946 286.431 281.651 287.136 282.522 287.136Z" - fill="#CCDFFF" - /> - <path - d="M320.343 343.817C321.213 343.817 321.918 343.112 321.918 342.242C321.918 341.373 321.213 340.668 320.343 340.668C319.472 340.668 318.767 341.373 318.767 342.242C318.767 343.112 319.472 343.817 320.343 343.817Z" - fill="#CCDFFF" - /> - <path - d="M282.522 343.817C283.392 343.817 284.098 343.112 284.098 342.242C284.098 341.373 283.392 340.668 282.522 340.668C281.651 340.668 280.946 341.373 280.946 342.242C280.946 343.112 281.651 343.817 282.522 343.817Z" - fill="#CCDFFF" - /> - <path - d="M339.253 249.349C340.123 249.349 340.829 248.644 340.829 247.774C340.829 246.904 340.123 246.2 339.253 246.2C338.383 246.2 337.677 246.904 337.677 247.774C337.677 248.644 338.383 249.349 339.253 249.349Z" - fill="#CCDFFF" - /> - <path - d="M339.253 306.029C340.123 306.029 340.829 305.324 340.829 304.455C340.829 303.585 340.123 302.88 339.253 302.88C338.383 302.88 337.677 303.585 337.677 304.455C337.677 305.324 338.383 306.029 339.253 306.029Z" - fill="#CCDFFF" - /> - <path - d="M301.432 249.349C302.302 249.349 303.008 248.644 303.008 247.774C303.008 246.904 302.302 246.2 301.432 246.2C300.562 246.2 299.856 246.904 299.856 247.774C299.856 248.644 300.562 249.349 301.432 249.349Z" - fill="#CCDFFF" - /> - <path - d="M301.432 306.029C302.302 306.029 303.008 305.324 303.008 304.455C303.008 303.585 302.302 302.88 301.432 302.88C300.562 302.88 299.856 303.585 299.856 304.455C299.856 305.324 300.562 306.029 301.432 306.029Z" - fill="#CCDFFF" - /> - <path - d="M339.253 287.136C340.123 287.136 340.829 286.431 340.829 285.561C340.829 284.692 340.123 283.987 339.253 283.987C338.383 283.987 337.677 284.692 337.677 285.561C337.677 286.431 338.383 287.136 339.253 287.136Z" - fill="#CCDFFF" - /> - <path - d="M339.253 343.817C340.123 343.817 340.829 343.112 340.829 342.242C340.829 341.373 340.123 340.668 339.253 340.668C338.383 340.668 337.677 341.373 337.677 342.242C337.677 343.112 338.383 343.817 339.253 343.817Z" - fill="#CCDFFF" - /> - <path - d="M301.432 287.136C302.302 287.136 303.008 286.431 303.008 285.561C303.008 284.692 302.302 283.987 301.432 283.987C300.562 283.987 299.856 284.692 299.856 285.561C299.856 286.431 300.562 287.136 301.432 287.136Z" - fill="#CCDFFF" - /> - <path - d="M301.432 343.817C302.302 343.817 303.008 343.112 303.008 342.242C303.008 341.373 302.302 340.668 301.432 340.668C300.562 340.668 299.856 341.373 299.856 342.242C299.856 343.112 300.562 343.817 301.432 343.817Z" - fill="#CCDFFF" - /> - <path - d="M320.343 60.4123C321.213 60.4123 321.918 59.7074 321.918 58.8379C321.918 57.9683 321.213 57.2634 320.343 57.2634C319.472 57.2634 318.767 57.9683 318.767 58.8379C318.767 59.7074 319.472 60.4123 320.343 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M282.522 60.4123C283.392 60.4123 284.098 59.7074 284.098 58.8379C284.098 57.9683 283.392 57.2634 282.522 57.2634C281.651 57.2634 280.946 57.9683 280.946 58.8379C280.946 59.7074 281.651 60.4123 282.522 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M339.253 60.4123C340.123 60.4123 340.829 59.7074 340.829 58.8379C340.829 57.9683 340.123 57.2634 339.253 57.2634C338.383 57.2634 337.677 57.9683 337.677 58.8379C337.677 59.7074 338.383 60.4123 339.253 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M301.432 60.4123C302.302 60.4123 303.008 59.7074 303.008 58.8379C303.008 57.9683 302.302 57.2634 301.432 57.2634C300.562 57.2634 299.856 57.9683 299.856 58.8379C299.856 59.7074 300.562 60.4123 301.432 60.4123Z" - fill="#CCDFFF" - /> - <path - d="M320.343 41.5187C321.213 41.5187 321.918 40.8138 321.918 39.9443C321.918 39.0747 321.213 38.3698 320.343 38.3698C319.472 38.3698 318.767 39.0747 318.767 39.9443C318.767 40.8138 319.472 41.5187 320.343 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M282.522 41.5187C283.392 41.5187 284.098 40.8138 284.098 39.9443C284.098 39.0747 283.392 38.3698 282.522 38.3698C281.651 38.3698 280.946 39.0747 280.946 39.9443C280.946 40.8138 281.651 41.5187 282.522 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M320.343 79.3059C321.213 79.3059 321.918 78.601 321.918 77.7315C321.918 76.8619 321.213 76.157 320.343 76.157C319.472 76.157 318.767 76.8619 318.767 77.7315C318.767 78.601 319.472 79.3059 320.343 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M282.522 79.3059C283.392 79.3059 284.098 78.601 284.098 77.7315C284.098 76.8619 283.392 76.157 282.522 76.157C281.651 76.157 280.946 76.8619 280.946 77.7315C280.946 78.601 281.651 79.3059 282.522 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M339.253 41.5187C340.123 41.5187 340.829 40.8138 340.829 39.9443C340.829 39.0747 340.123 38.3698 339.253 38.3698C338.383 38.3698 337.677 39.0747 337.677 39.9443C337.677 40.8138 338.383 41.5187 339.253 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M301.432 41.5187C302.302 41.5187 303.008 40.8138 303.008 39.9443C303.008 39.0747 302.302 38.3698 301.432 38.3698C300.562 38.3698 299.856 39.0747 299.856 39.9443C299.856 40.8138 300.562 41.5187 301.432 41.5187Z" - fill="#CCDFFF" - /> - <path - d="M339.253 79.3059C340.123 79.3059 340.829 78.601 340.829 77.7315C340.829 76.8619 340.123 76.157 339.253 76.157C338.383 76.157 337.677 76.8619 337.677 77.7315C337.677 78.601 338.383 79.3059 339.253 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M301.432 79.3059C302.302 79.3059 303.008 78.601 303.008 77.7315C303.008 76.8619 302.302 76.157 301.432 76.157C300.562 76.157 299.856 76.8619 299.856 77.7315C299.856 78.601 300.562 79.3059 301.432 79.3059Z" - fill="#CCDFFF" - /> - <path - d="M320.343 362.71C321.213 362.71 321.918 362.005 321.918 361.136C321.918 360.266 321.213 359.561 320.343 359.561C319.472 359.561 318.767 360.266 318.767 361.136C318.767 362.005 319.472 362.71 320.343 362.71Z" - fill="#CCDFFF" - /> - <path - d="M282.522 362.71C283.392 362.71 284.098 362.005 284.098 361.136C284.098 360.266 283.392 359.561 282.522 359.561C281.651 359.561 280.946 360.266 280.946 361.136C280.946 362.005 281.651 362.71 282.522 362.71Z" - fill="#CCDFFF" - /> - <path - d="M320.343 400.497C321.213 400.497 321.918 399.793 321.918 398.923C321.918 398.053 321.213 397.349 320.343 397.349C319.472 397.349 318.767 398.053 318.767 398.923C318.767 399.793 319.472 400.497 320.343 400.497Z" - fill="#CCDFFF" - /> - <path - d="M282.522 400.497C283.392 400.497 284.098 399.793 284.098 398.923C284.098 398.053 283.392 397.349 282.522 397.349C281.651 397.349 280.946 398.053 280.946 398.923C280.946 399.793 281.651 400.497 282.522 400.497Z" - fill="#CCDFFF" - /> - <path - d="M339.253 362.71C340.123 362.71 340.829 362.005 340.829 361.136C340.829 360.266 340.123 359.561 339.253 359.561C338.383 359.561 337.677 360.266 337.677 361.136C337.677 362.005 338.383 362.71 339.253 362.71Z" - fill="#CCDFFF" - /> - <path - d="M301.432 362.71C302.302 362.71 303.008 362.005 303.008 361.136C303.008 360.266 302.302 359.561 301.432 359.561C300.562 359.561 299.856 360.266 299.856 361.136C299.856 362.005 300.562 362.71 301.432 362.71Z" - fill="#CCDFFF" - /> - <path - d="M339.253 400.497C340.123 400.497 340.829 399.793 340.829 398.923C340.829 398.053 340.123 397.349 339.253 397.349C338.383 397.349 337.677 398.053 337.677 398.923C337.677 399.793 338.383 400.497 339.253 400.497Z" - fill="#CCDFFF" - /> - <path - d="M301.432 400.497C302.302 400.497 303.008 399.793 303.008 398.923C303.008 398.053 302.302 397.349 301.432 397.349C300.562 397.349 299.856 398.053 299.856 398.923C299.856 399.793 300.562 400.497 301.432 400.497Z" - fill="#CCDFFF" - /> - <path - d="M320.343 381.604C321.213 381.604 321.918 380.899 321.918 380.029C321.918 379.16 321.213 378.455 320.343 378.455C319.472 378.455 318.767 379.16 318.767 380.029C318.767 380.899 319.472 381.604 320.343 381.604Z" - fill="#CCDFFF" - /> - <path - d="M282.522 381.604C283.392 381.604 284.098 380.899 284.098 380.029C284.098 379.16 283.392 378.455 282.522 378.455C281.651 378.455 280.946 379.16 280.946 380.029C280.946 380.899 281.651 381.604 282.522 381.604Z" - fill="#CCDFFF" - /> - <path - d="M320.343 419.391C321.213 419.391 321.918 418.686 321.918 417.817C321.918 416.947 321.213 416.242 320.343 416.242C319.472 416.242 318.767 416.947 318.767 417.817C318.767 418.686 319.472 419.391 320.343 419.391Z" - fill="#CCDFFF" - /> - <path - d="M282.522 419.391C283.392 419.391 284.098 418.686 284.098 417.817C284.098 416.947 283.392 416.242 282.522 416.242C281.651 416.242 280.946 416.947 280.946 417.817C280.946 418.686 281.651 419.391 282.522 419.391Z" - fill="#CCDFFF" - /> - <path - d="M339.253 381.604C340.123 381.604 340.829 380.899 340.829 380.029C340.829 379.16 340.123 378.455 339.253 378.455C338.383 378.455 337.677 379.16 337.677 380.029C337.677 380.899 338.383 381.604 339.253 381.604Z" - fill="#CCDFFF" - /> - <path - d="M301.432 381.604C302.302 381.604 303.008 380.899 303.008 380.029C303.008 379.16 302.302 378.455 301.432 378.455C300.562 378.455 299.856 379.16 299.856 380.029C299.856 380.899 300.562 381.604 301.432 381.604Z" - fill="#CCDFFF" - /> - <path - d="M339.253 419.391C340.123 419.391 340.829 418.686 340.829 417.817C340.829 416.947 340.123 416.242 339.253 416.242C338.383 416.242 337.677 416.947 337.677 417.817C337.677 418.686 338.383 419.391 339.253 419.391Z" - fill="#CCDFFF" - /> - <path - d="M301.432 419.391C302.302 419.391 303.008 418.686 303.008 417.817C303.008 416.947 302.302 416.242 301.432 416.242C300.562 416.242 299.856 416.947 299.856 417.817C299.856 418.686 300.562 419.391 301.432 419.391Z" - fill="#CCDFFF" - /> - <path - d="M178.562 246.892C176.584 245.837 173.984 245.302 170.548 245.735C167.074 246.176 164.789 247.388 163.307 248.978C157.484 249.419 151.205 249.459 144.838 248.782C144.838 248.782 141.97 233.745 125.825 236.091C116.165 237.501 112.076 244.995 115.038 259.685C118.001 274.375 127.299 320.467 127.299 320.467H153.482L147.202 268.368L158.832 268.226L160.392 336.968L185.882 336.952L187.875 268.392C187.875 268.392 195.518 262.763 195.999 256.26C196.479 249.758 193.682 242.94 193.682 242.94C193.682 242.94 187.702 245.097 178.562 246.892ZM69.2122 70.0638C61.648 70.0638 55.51 76.1964 55.51 83.7538C55.51 91.3113 61.648 97.4438 69.2122 97.4438C76.7764 97.4438 82.9144 91.3113 82.9144 83.7538C82.9144 76.1964 76.7764 70.0638 69.2122 70.0638ZM360.015 403.599C359.85 398.718 358.888 393.641 358.888 393.641L346.084 404.371C346.084 404.371 337.512 402.332 336.803 407C336.472 409.173 337.748 411.086 339.3 412.802L340.592 409.708C340.592 409.708 346.329 414.353 353.31 414.085L350.379 419.548H352.798L357.336 413.408C364.475 411.369 368.848 405.654 368.848 405.654L360.015 403.599ZM304.403 384.934C302.937 383.147 301.227 381.604 299.037 381.604C294.309 381.604 295.05 390.381 295.05 390.381L282.522 401.434C282.522 401.434 290.677 405.174 298.036 404.52C302.551 403.741 303.898 401.954 304.403 399.978C305.876 394.215 301.149 385.745 301.149 385.745L304.403 384.934ZM298.359 122.336C301.684 132.854 301.795 136.609 291.796 144.796C281.624 153.117 281.884 163.194 286.43 172.239C290.18 179.694 287.895 189.33 277.25 196.368C260.01 207.767 258.442 226.44 268.733 245.704C281.954 270.462 320.319 272.753 320.421 272.737L320.114 88.6032C293.569 88.9968 296.846 117.542 298.359 122.336ZM160.471 195.62C155.932 195.62 152.245 191.983 152.166 187.464H141.82V199.044H157.154C157.154 199.044 156.326 202.484 154.79 203.098C154.79 203.098 155.909 208.373 150.842 209.31C150.842 209.326 150.85 209.349 150.85 209.365C150.889 211.813 148.147 214.883 144.531 214.883H160.55V195.612C160.518 195.612 160.494 195.62 160.471 195.62Z" - fill="url(#paint0_linear)" - /> - <path - d="M320.342 43.7308C322.344 43.7308 323.967 42.1095 323.967 40.1096C323.967 38.1096 322.344 36.4883 320.342 36.4883C318.341 36.4883 316.718 38.1096 316.718 40.1096C316.718 42.1095 318.341 43.7308 320.342 43.7308Z" - fill="#0061FF" - /> - <path - d="M93.3308 158.667C95.3326 158.667 96.9553 157.046 96.9553 155.046C96.9553 153.046 95.3326 151.424 93.3308 151.424C91.329 151.424 89.7063 153.046 89.7063 155.046C89.7063 157.046 91.329 158.667 93.3308 158.667Z" - fill="#0061FF" - /> - <path - d="M225.704 403.127C227.706 403.127 229.328 401.506 229.328 399.506C229.328 397.506 227.706 395.884 225.704 395.884C223.702 395.884 222.079 397.506 222.079 399.506C222.079 401.506 223.702 403.127 225.704 403.127Z" - fill="#0061FF" - /> - <path - d="M268.189 334.834H225.704C225.05 334.834 224.522 334.307 224.522 333.653C224.522 333 225.05 332.473 225.704 332.473H268.189C275.548 332.473 281.537 326.49 281.537 319.137C281.537 310.477 288.589 303.439 297.248 303.439H367.02C367.674 303.439 368.202 303.967 368.202 304.62C368.202 305.274 367.674 305.801 367.02 305.801H297.248C289.889 305.801 283.901 311.784 283.901 319.137C283.901 327.789 276.856 334.834 268.189 334.834Z" - fill="#6A2EA0" - /> - <path - d="M134.028 362.23H43.3757C42.7218 362.23 42.1938 361.703 42.1938 361.049C42.1938 360.396 42.7218 359.868 43.3757 359.868H134.028C134.682 359.868 135.209 360.396 135.209 361.049C135.209 361.703 134.682 362.23 134.028 362.23Z" - fill="#6A2EA0" - /> - <path - d="M263.525 362.23H200.23C199.576 362.23 199.048 361.703 199.048 361.049C199.048 360.396 199.576 359.868 200.23 359.868H263.525C264.179 359.868 264.707 360.396 264.707 361.049C264.707 361.703 264.179 362.23 263.525 362.23Z" - fill="#6A2EA0" - /> - <path - d="M240.438 183.803C211.355 183.803 192.666 177.466 180.295 173.27C175.457 171.633 171.636 170.334 168.515 169.846C167.869 169.743 167.428 169.145 167.531 168.5C167.633 167.854 168.24 167.413 168.878 167.515C172.203 168.035 176.103 169.358 181.051 171.034C193.272 175.183 211.742 181.442 240.43 181.442C241.084 181.442 241.612 181.969 241.612 182.623C241.612 183.276 241.092 183.803 240.438 183.803Z" - fill="#6A2EA0" - /> - <path - d="M158.761 168.854C151.346 168.854 145.311 162.824 145.311 155.416V138.734C145.311 138.081 145.839 137.553 146.493 137.553C147.147 137.553 147.675 138.081 147.675 138.734V155.416C147.675 161.525 152.646 166.492 158.761 166.492C164.875 166.492 169.847 161.525 169.847 155.416V138.734C169.847 138.081 170.375 137.553 171.029 137.553C171.683 137.553 172.211 138.081 172.211 138.734V155.416C172.219 162.824 166.183 168.854 158.761 168.854Z" - fill="#6A2EA0" - /> - <path - d="M147.943 173.664C147.289 173.664 146.761 173.136 146.761 172.483V161.422C146.761 160.769 147.289 160.241 147.943 160.241C148.597 160.241 149.124 160.769 149.124 161.422V172.483C149.124 173.136 148.597 173.664 147.943 173.664Z" - fill="#6A2EA0" - /> - <path - d="M168.579 173.664C167.925 173.664 167.397 173.136 167.397 172.483V162.871C167.397 162.217 167.925 161.69 168.579 161.69C169.232 161.69 169.76 162.217 169.76 162.871V172.483C169.76 173.136 169.232 173.664 168.579 173.664Z" - fill="#6A2EA0" - /> - <path - d="M160.55 216.064H141.836C141.182 216.064 140.654 215.537 140.654 214.883C140.654 214.23 141.182 213.703 141.836 213.703H159.368V188.645H143.002V199.044C143.002 199.698 142.474 200.225 141.82 200.225C141.166 200.225 140.638 199.698 140.638 199.044V187.464C140.638 186.811 141.166 186.283 141.82 186.283H160.55C161.203 186.283 161.731 186.811 161.731 187.464V214.883C161.731 215.537 161.203 216.064 160.55 216.064Z" - fill="#6A2EA0" - /> - <path - d="M114.25 247.758H36.5995C35.9455 247.758 35.4176 247.231 35.4176 246.577V226.983C35.4176 208.271 50.6562 193.046 69.3854 193.046H112.714C113.368 193.046 113.896 193.573 113.896 194.226C113.896 194.88 113.368 195.407 112.714 195.407H69.3854C51.9563 195.407 37.7814 209.57 37.7814 226.983V245.397H114.25C114.904 245.397 115.432 245.924 115.432 246.577C115.432 247.231 114.897 247.758 114.25 247.758Z" - fill="#6A2EA0" - /> - <path - d="M247.49 247.758H194.888C194.234 247.758 193.706 247.231 193.706 246.577C193.706 245.924 194.234 245.397 194.888 245.397H247.49C263.635 245.397 276.77 232.273 276.77 216.143V195.415H255.133C254.479 195.415 253.951 194.888 253.951 194.234C253.951 193.581 254.479 193.053 255.133 193.053H277.952C278.606 193.053 279.134 193.581 279.134 194.234V216.143C279.134 233.572 264.935 247.758 247.49 247.758Z" - fill="#6A2EA0" - /> - <path - d="M160.124 162.564C159.218 162.564 158.414 162.375 157.863 162.139C157.264 161.887 156.98 161.194 157.232 160.596C157.484 159.997 158.178 159.714 158.777 159.966C159.06 160.084 161.558 160.981 163.284 158.439C163.646 157.896 164.387 157.762 164.922 158.124C165.466 158.486 165.6 159.226 165.238 159.761C163.756 161.934 161.763 162.564 160.124 162.564Z" - fill="#6A2EA0" - /> - <path - d="M131.971 207.373C131.656 207.373 131.349 207.247 131.112 207.003C130.663 206.531 130.687 205.783 131.16 205.334L138.716 198.186C138.936 197.981 139.228 197.863 139.527 197.863H157.161C157.815 197.863 158.343 198.391 158.343 199.044C158.343 201.146 156.87 205.114 151.275 205.114H141.805C141.151 205.114 140.623 204.586 140.623 203.933C140.623 203.28 141.151 202.752 141.805 202.752H151.275C154.23 202.752 155.325 201.319 155.735 200.225H140L132.783 207.05C132.554 207.263 132.263 207.373 131.971 207.373Z" - fill="#6A2EA0" - /> - <path - d="M208.22 201.776C195.684 201.776 190.026 200.902 189.656 200.847C189.01 200.745 188.576 200.139 188.679 199.493C188.781 198.847 189.388 198.414 190.034 198.517C190.176 198.54 204.784 200.768 239.264 198.052V182.63C239.264 181.977 239.792 181.45 240.446 181.45C241.1 181.45 241.628 181.977 241.628 182.63V199.147C241.628 199.761 241.155 200.272 240.541 200.327C226.768 201.43 216.123 201.776 208.22 201.776Z" - fill="#6A2EA0" - /> - <path - d="M121.499 238.784C121.184 238.784 120.877 238.658 120.641 238.414C112.021 229.369 105.993 211.75 111.958 192.786C117.386 175.53 133.618 166.5 146.839 166.5C147.493 166.5 148.021 167.027 148.021 167.681C148.021 168.334 147.493 168.862 146.839 168.862C134.784 168.862 119.246 177.498 114.219 193.494C108.546 211.538 114.219 228.243 122.358 236.784C122.807 237.257 122.792 238.004 122.319 238.453C122.09 238.674 121.791 238.784 121.499 238.784Z" - fill="#6A2EA0" - /> - <path - d="M134.193 221.583C133.973 221.583 133.752 221.52 133.555 221.394C125.479 216.237 125.384 209.633 125.384 209.357C125.384 208.704 125.912 208.176 126.566 208.176C127.22 208.176 127.748 208.704 127.748 209.349C127.748 209.593 127.913 214.986 134.831 219.402C135.383 219.756 135.54 220.481 135.194 221.032C134.965 221.394 134.579 221.583 134.193 221.583Z" - fill="#6A2EA0" - /> - <path - d="M158.107 154.975C157.91 154.975 157.713 154.959 157.524 154.92C156.208 154.66 155.325 153.55 155.325 152.157V143.08C155.325 142.426 155.853 141.899 156.507 141.899C157.161 141.899 157.689 142.426 157.689 143.08V152.157C157.689 152.55 157.886 152.59 157.981 152.605C158.477 152.7 159.509 152.227 160.195 150.535C160.439 149.929 161.133 149.637 161.739 149.889C162.346 150.133 162.637 150.826 162.385 151.432C161.361 153.928 159.596 154.975 158.107 154.975Z" - fill="#6A2EA0" - /> - <path - d="M171.47 152.338C170.816 152.338 170.288 151.81 170.288 151.157C170.288 150.503 170.816 149.976 171.47 149.976C173.046 149.976 174.323 148.693 174.323 147.126C174.323 145.56 173.038 144.276 171.47 144.276C170.816 144.276 170.288 143.749 170.288 143.096C170.288 142.442 170.816 141.915 171.47 141.915C174.346 141.915 176.686 144.253 176.686 147.126C176.686 150 174.346 152.338 171.47 152.338Z" - fill="#6A2EA0" - /> - <path - d="M146.422 152.338C143.546 152.338 141.206 150 141.206 147.126C141.206 144.253 143.546 141.915 146.422 141.915C147.076 141.915 147.604 142.442 147.604 143.096C147.604 143.749 147.076 144.276 146.422 144.276C144.846 144.276 143.569 145.56 143.569 147.126C143.569 148.693 144.854 149.976 146.422 149.976C147.076 149.976 147.604 150.503 147.604 151.157C147.604 151.81 147.076 152.338 146.422 152.338Z" - fill="#6A2EA0" - /> - <path - d="M251.91 199.879C245.702 199.879 240.273 197.604 239.973 197.478C239.374 197.218 239.091 196.525 239.351 195.927C239.611 195.328 240.304 195.045 240.903 195.305C240.99 195.336 248.727 198.572 255.803 197.147C254.786 195.943 252.903 194.226 250.051 193.707C249.413 193.589 248.987 192.975 249.105 192.329C249.224 191.691 249.838 191.266 250.484 191.384C256.173 192.439 258.695 197.123 258.797 197.32C258.962 197.627 258.978 197.997 258.844 198.32C258.71 198.643 258.442 198.895 258.104 198.997C256.063 199.635 253.943 199.879 251.91 199.879Z" - fill="#6A2EA0" - /> - <path - d="M268.3 195.415C268.063 195.415 267.827 195.344 267.614 195.195L255.858 186.874L241.25 185.638C240.596 185.583 240.115 185.008 240.17 184.362C240.225 183.717 240.801 183.229 241.447 183.284L256.37 184.543C256.583 184.559 256.78 184.638 256.953 184.756L268.969 193.266C269.505 193.644 269.631 194.384 269.253 194.911C269.032 195.242 268.67 195.415 268.3 195.415Z" - fill="#6A2EA0" - /> - <path - d="M158.832 269.415H147.564C146.91 269.415 146.382 268.888 146.382 268.234C146.382 267.581 146.91 267.053 147.564 267.053H158.832C159.486 267.053 160.014 267.581 160.014 268.234C160.014 268.888 159.486 269.415 158.832 269.415Z" - fill="#6A2EA0" - /> - <path - d="M263.525 269.415H187.985C187.331 269.415 186.803 268.888 186.803 268.234C186.803 267.581 187.331 267.053 187.985 267.053H263.525C264.179 267.053 264.707 267.581 264.707 268.234C264.707 268.888 264.179 269.415 263.525 269.415Z" - fill="#6A2EA0" - /> - <path - d="M119.994 286.829H45.3141C39.8537 286.829 35.4176 282.397 35.4176 276.941C35.4176 271.486 39.8537 267.053 45.3141 267.053H116.528C117.182 267.053 117.709 267.581 117.709 268.234C117.709 268.888 117.182 269.415 116.528 269.415H45.3141C41.1616 269.415 37.7814 272.792 37.7814 276.941C37.7814 281.09 41.1616 284.467 45.3141 284.467H119.994C120.648 284.467 121.176 284.994 121.176 285.648C121.176 286.301 120.648 286.829 119.994 286.829Z" - fill="#6A2EA0" - /> - <path - d="M153.174 362.23H109.988C109.334 362.23 108.806 361.703 108.806 361.049C108.806 360.396 109.334 359.868 109.988 359.868H151.993L152.024 332.079C152.024 331.426 152.552 330.898 153.206 330.898C153.86 330.898 154.388 331.426 154.388 332.079L154.356 361.049C154.356 361.703 153.821 362.23 153.174 362.23Z" - fill="#6A2EA0" - /> - <path - d="M154.79 332.496L129.481 332.449C128.827 332.449 128.299 331.922 128.299 331.268C128.299 330.615 128.827 330.087 129.481 330.087L153.45 330.127L143.664 248.923C142.963 244.972 140.796 241.555 137.581 239.359C134.335 237.154 130.246 236.399 126.062 237.249C124.62 237.54 123.264 238.012 122.051 238.642C115.314 242.153 113.66 250.018 115.495 255.985C115.503 256.024 115.519 256.064 115.527 256.103L128.465 320.231C128.591 320.869 128.181 321.491 127.543 321.624C126.905 321.75 126.282 321.341 126.148 320.703L113.218 256.63C111.122 249.742 113.1 240.65 120.956 236.556C122.366 235.824 123.926 235.273 125.589 234.942C130.403 233.966 135.131 234.848 138.913 237.414C142.663 239.965 145.185 243.932 146.004 248.577L155.964 331.174C156.003 331.512 155.901 331.843 155.672 332.103C155.452 332.354 155.129 332.496 154.79 332.496Z" - fill="#6A2EA0" - /> - <path - d="M172.92 377.124C168.066 377.124 164.111 373.173 164.111 368.323V344.131C164.111 343.478 164.639 342.951 165.293 342.951C165.947 342.951 166.475 343.478 166.475 344.131V368.323C166.475 371.874 169.366 374.763 172.92 374.763C176.474 374.763 179.365 371.874 179.365 368.323V344.131C179.365 343.478 179.893 342.951 180.547 342.951C181.201 342.951 181.729 343.478 181.729 344.131V368.323C181.729 373.18 177.774 377.124 172.92 377.124Z" - fill="#6A2EA0" - /> - <path - d="M124.139 352.98C123.706 352.98 123.296 352.744 123.083 352.334C122.784 351.752 123.02 351.043 123.603 350.744L136.399 344.234L133.137 331.567C132.972 330.937 133.358 330.292 133.988 330.127C134.619 329.961 135.265 330.347 135.43 330.977L138.929 344.557C139.07 345.092 138.81 345.651 138.322 345.903L124.675 352.838C124.501 352.941 124.32 352.98 124.139 352.98Z" - fill="#6A2EA0" - /> - <path - d="M185.685 345.32H177.301C176.647 345.32 176.119 344.793 176.119 344.139C176.119 343.486 176.647 342.958 177.301 342.958H184.526L186.173 260.685C186.173 252.064 181.682 246.814 174.173 246.664C171.659 246.617 166.932 247.01 163.622 250.254C161.267 252.56 160.069 255.898 160.069 260.165L161.716 342.958H168.618C169.272 342.958 169.8 343.486 169.8 344.139C169.8 344.793 169.272 345.32 168.618 345.32H160.557C159.911 345.32 159.391 344.808 159.376 344.163L157.705 260.189C157.705 255.237 159.139 251.34 161.968 248.569C164.875 245.719 169.233 244.208 174.22 244.302C184.778 244.515 188.537 252.915 188.537 260.708L186.867 344.163C186.851 344.801 186.331 345.32 185.685 345.32Z" - fill="#6A2EA0" - /> - <path - d="M109.98 362.23C109.326 362.23 108.798 361.703 108.798 361.049C108.798 354.877 113.825 349.863 119.995 349.863C123.721 349.863 127.188 351.705 129.276 354.798C129.639 355.342 129.497 356.074 128.961 356.436C128.418 356.798 127.685 356.656 127.322 356.121C125.676 353.681 122.934 352.232 119.995 352.232C115.125 352.232 111.162 356.192 111.162 361.057C111.162 361.703 110.634 362.23 109.98 362.23Z" - fill="#6A2EA0" - /> - <path - d="M129.481 332.457C125.439 332.457 122.366 331.284 120.357 328.969C117.276 325.411 117.938 320.514 117.969 320.31C118.056 319.727 118.553 319.294 119.136 319.294H136.88C137.534 319.294 138.062 319.822 138.062 320.475C138.062 321.129 137.534 321.656 136.88 321.656H120.254C120.254 323.034 120.507 325.545 122.153 327.434C123.69 329.198 126.156 330.095 129.473 330.095C130.127 330.095 130.655 330.623 130.655 331.276C130.655 331.929 130.135 332.457 129.481 332.457Z" - fill="#6A2EA0" - /> - <path - d="M187.985 269.415C187.544 269.415 187.119 269.163 186.914 268.738C186.63 268.148 186.882 267.447 187.473 267.164C192.666 264.7 195.124 260.023 194.793 253.269C194.533 248.026 192.618 243.452 192.603 243.405C184.006 219.922 189.577 193.864 189.632 193.604C189.774 192.967 190.404 192.565 191.043 192.707C191.681 192.849 192.083 193.478 191.941 194.116C191.886 194.368 186.465 219.772 194.801 242.539C194.864 242.681 203.043 262.393 188.49 269.297C188.324 269.376 188.151 269.415 187.985 269.415Z" - fill="#6A2EA0" - /> - <path - d="M179.436 247.703C178.885 247.703 178.396 247.317 178.278 246.759C178.144 246.121 178.554 245.499 179.192 245.365C183.786 244.413 188.545 243.224 193.351 241.815C193.982 241.634 194.636 241.988 194.817 242.618C194.998 243.247 194.643 243.901 194.013 244.082C189.152 245.507 184.322 246.711 179.673 247.672C179.602 247.695 179.515 247.703 179.436 247.703Z" - fill="#6A2EA0" - /> - <path - d="M153.907 250.584C147.943 250.584 144.791 249.978 144.61 249.947C143.971 249.821 143.554 249.199 143.68 248.561C143.806 247.924 144.428 247.506 145.067 247.632C145.13 247.648 151.441 248.845 163.173 247.79C163.819 247.735 164.395 248.207 164.458 248.86C164.513 249.514 164.04 250.081 163.386 250.144C159.691 250.466 156.531 250.584 153.907 250.584Z" - fill="#6A2EA0" - /> - <path - d="M176.852 350.744C176.198 350.744 175.67 350.217 175.67 349.563V340.738C175.67 339.251 174.457 338.038 172.967 338.038C171.478 338.038 170.265 339.251 170.265 340.738V349.563C170.265 350.217 169.737 350.744 169.083 350.744C168.429 350.744 167.901 350.217 167.901 349.563V340.738C167.901 337.944 170.178 335.677 172.967 335.677C175.757 335.677 178.034 337.952 178.034 340.738V349.563C178.034 350.217 177.506 350.744 176.852 350.744Z" - fill="#6A2EA0" - /> - <path - d="M176.852 360.254H169.075C168.421 360.254 167.893 359.727 167.893 359.073C167.893 358.42 168.421 357.892 169.075 357.892H176.852C177.506 357.892 178.034 358.42 178.034 359.073C178.034 359.727 177.506 360.254 176.852 360.254Z" - fill="#6A2EA0" - /> - <path - d="M176.852 366.426H169.075C168.421 366.426 167.893 365.898 167.893 365.245C167.893 364.592 168.421 364.064 169.075 364.064H176.852C177.506 364.064 178.034 364.592 178.034 365.245C178.034 365.898 177.506 366.426 176.852 366.426Z" - fill="#6A2EA0" - /> - <path - d="M55.51 361.222C54.856 361.222 54.3281 360.695 54.3281 360.041V286.876C54.3281 286.223 54.856 285.695 55.51 285.695C56.164 285.695 56.6919 286.223 56.6919 286.876V360.041C56.6919 360.695 56.164 361.222 55.51 361.222Z" - fill="#6A2EA0" - /> - <path - d="M248.885 361.222C248.231 361.222 247.703 360.695 247.703 360.041V286.876C247.703 286.223 248.231 285.695 248.885 285.695C249.539 285.695 250.067 286.223 250.067 286.876V360.041C250.067 360.695 249.539 361.222 248.885 361.222Z" - fill="#6A2EA0" - /> - <path - d="M263.525 286.829H187.985C187.331 286.829 186.803 286.301 186.803 285.648C186.803 284.994 187.331 284.467 187.985 284.467H263.525C264.179 284.467 264.707 284.994 264.707 285.648C264.707 286.301 264.179 286.829 263.525 286.829Z" - fill="#6A2EA0" - /> - <path - d="M320.185 273.91C320.169 273.91 320.161 273.91 320.161 273.91C319.515 273.808 319.074 273.21 319.176 272.564C319.263 271.989 319.759 271.572 320.327 271.564C321.201 271.517 358.329 268.864 370.991 245.153C381.628 225.228 378.665 207.806 362.859 197.352C352.608 190.574 348.85 180.505 353.278 171.704C358.447 161.43 356.745 152.676 348.22 145.701C337.638 137.042 337.858 132.814 341.278 121.974C342.381 118.487 343.65 105.694 337.748 97.5225C334.124 92.5 328.364 89.9021 320.634 89.784C319.98 89.7762 319.46 89.2408 319.468 88.5874C319.476 87.934 320.012 87.4145 320.666 87.4223C329.183 87.5483 335.573 90.4768 339.663 96.137C346.171 105.143 344.776 118.746 343.531 122.683C340.388 132.633 339.923 135.853 349.717 143.875C361.544 153.558 359.33 164.926 355.39 172.766C351.537 180.434 354.98 189.306 364.167 195.384C381.108 206.586 384.354 225.133 373.079 246.263C359.66 271.391 321.375 273.91 320.185 273.91Z" - fill="#6A2EA0" - /> - <path - d="M320.28 304.998C319.626 304.998 319.098 304.471 319.098 303.817V77.3457C319.098 76.6923 319.626 76.1649 320.28 76.1649C320.934 76.1649 321.461 76.6923 321.461 77.3457V303.817C321.461 304.471 320.934 304.998 320.28 304.998Z" - fill="#6A2EA0" - /> - <path - d="M320.279 135.026C319.988 135.026 319.696 134.916 319.468 134.704L306.057 121.982C305.584 121.533 305.561 120.785 306.01 120.313C306.459 119.841 307.208 119.817 307.68 120.274L321.091 132.995C321.564 133.444 321.587 134.192 321.138 134.664C320.902 134.9 320.595 135.026 320.279 135.026Z" - fill="#6A2EA0" - /> - <path - d="M320.279 247.601C319.964 247.601 319.657 247.475 319.421 247.231C318.972 246.759 318.987 246.011 319.468 245.562L345.044 221.299C345.517 220.851 346.265 220.866 346.715 221.339C347.164 221.811 347.148 222.559 346.667 223.008L321.091 247.27C320.863 247.491 320.571 247.601 320.279 247.601Z" - fill="#6A2EA0" - /> - <path - d="M320.279 190.558C319.988 190.558 319.696 190.448 319.468 190.235L273.571 146.685C273.098 146.237 273.074 145.489 273.524 145.016C273.973 144.544 274.721 144.528 275.194 144.977L321.091 188.527C321.564 188.976 321.587 189.723 321.138 190.196C320.902 190.44 320.595 190.558 320.279 190.558Z" - fill="#6A2EA0" - /> - <path - d="M134.193 86.1627H35.2679C34.937 86.1627 34.6297 86.0289 34.4091 85.7928C34.1885 85.5566 34.0703 85.2338 34.0939 84.911C34.8661 73.2521 41.3429 63.6636 51.8776 58.6174C66.5962 51.5559 86.137 54.7915 104.236 67.2613C124.265 63.4353 133.342 76.9521 135.343 84.6906C135.438 85.0449 135.359 85.4228 135.131 85.7062C134.902 85.9896 134.556 86.1627 134.193 86.1627ZM36.5602 83.801H132.57C130.829 79.1642 123.981 65.6396 104.212 69.6702C103.897 69.7332 103.566 69.6702 103.298 69.4813C85.7982 57.2713 66.9587 54.0042 52.9019 60.743C43.5413 65.2223 37.6396 73.5827 36.5602 83.801Z" - fill="#6A2EA0" - /> - <path - d="M173.834 139.592H142.884C136.202 139.592 130.766 134.16 130.766 127.485C130.766 126.831 131.294 126.304 131.948 126.304H146.201C146.855 126.304 147.383 126.831 147.383 127.485C147.383 128.138 146.855 128.666 146.201 128.666H133.2C133.783 133.483 137.904 137.231 142.884 137.231H172.652V129.484C172.652 128.831 173.18 128.303 173.834 128.303C174.488 128.303 175.016 128.831 175.016 129.484V138.411C175.016 139.065 174.488 139.592 173.834 139.592Z" - fill="#6A2EA0" - /> - <path - d="M146.193 134.523C145.539 134.523 145.011 133.995 145.011 133.342V129.484C145.011 124.226 149.298 119.943 154.561 119.943H165.466C170.73 119.943 175.016 124.226 175.016 129.484C175.016 130.138 174.488 130.665 173.834 130.665C173.18 130.665 172.652 130.138 172.652 129.484C172.652 125.524 169.429 122.305 165.466 122.305H154.561C150.598 122.305 147.375 125.524 147.375 129.484V133.342C147.375 133.995 146.847 134.523 146.193 134.523Z" - fill="#6A2EA0" - /> - <path - d="M308.996 418.997C308.342 418.997 307.814 418.47 307.814 417.817C307.814 411.18 302.409 405.772 295.759 405.772C289.109 405.772 283.704 411.172 283.704 417.817C283.704 418.47 283.176 418.997 282.522 418.997C281.868 418.997 281.34 418.47 281.34 417.817C281.34 409.873 287.809 403.41 295.759 403.41C303.709 403.41 310.178 409.873 310.178 417.817C310.178 418.47 309.642 418.997 308.996 418.997Z" - fill="#6A2EA0" - /> - <path - d="M162.039 240.469C157.894 240.469 155.207 240.138 154.924 240.099C154.278 240.012 153.821 239.421 153.899 238.776C153.986 238.13 154.577 237.674 155.223 237.753C155.404 237.776 173.377 239.965 189.64 232.557C190.231 232.289 190.932 232.549 191.208 233.139C191.484 233.73 191.216 234.43 190.625 234.706C180.043 239.54 168.996 240.469 162.039 240.469Z" - fill="#6A2EA0" - /> - <path - d="M159.234 286.907H149.29C148.636 286.907 148.108 286.38 148.108 285.727C148.108 285.073 148.636 284.546 149.29 284.546H159.234C159.888 284.546 160.416 285.073 160.416 285.727C160.416 286.38 159.888 286.907 159.234 286.907Z" - fill="#6A2EA0" - /> - <path - d="M237.074 112.63C242.187 112.63 246.332 108.488 246.332 103.38C246.332 98.2709 242.187 94.1295 237.074 94.1295C231.96 94.1295 227.815 98.2709 227.815 103.38C227.815 108.488 231.96 112.63 237.074 112.63Z" - fill="#FF4C84" - /> - <path - d="M167.712 203.61C167.342 203.61 166.971 203.437 166.743 203.106C166.364 202.571 166.498 201.839 167.026 201.461L167.145 201.382C167.672 200.997 168.413 201.123 168.791 201.65C169.177 202.177 169.051 202.917 168.523 203.295L168.382 203.398C168.185 203.539 167.948 203.61 167.712 203.61ZM171.573 199.509C171.352 199.509 171.131 199.446 170.935 199.32C170.383 198.966 170.225 198.233 170.58 197.69L170.659 197.572C171.005 197.021 171.738 196.856 172.29 197.202C172.841 197.549 173.007 198.281 172.66 198.832L172.566 198.973C172.345 199.32 171.967 199.509 171.573 199.509ZM173.873 194.352C173.771 194.352 173.661 194.337 173.55 194.305C172.92 194.132 172.558 193.479 172.731 192.849L172.77 192.707C172.944 192.077 173.59 191.707 174.22 191.88C174.851 192.054 175.221 192.699 175.048 193.329L175 193.494C174.858 194.006 174.386 194.352 173.873 194.352ZM174.732 188.763C174.717 188.763 174.701 188.763 174.685 188.763C174.031 188.739 173.527 188.188 173.55 187.535L173.558 187.417C173.558 187.393 173.558 187.377 173.558 187.354C173.598 186.7 174.165 186.204 174.811 186.244C175.465 186.283 175.962 186.842 175.922 187.496C175.922 187.503 175.922 187.503 175.922 187.511L175.914 187.629C175.891 188.259 175.363 188.763 174.732 188.763ZM174.74 187.425H174.764H174.74ZM175.536 183.134C175.449 183.134 175.371 183.126 175.284 183.111C174.646 182.969 174.244 182.339 174.378 181.701L174.409 181.552C174.543 180.914 175.174 180.513 175.812 180.647C176.45 180.78 176.852 181.41 176.718 182.048L176.686 182.205C176.568 182.756 176.08 183.134 175.536 183.134ZM177.073 177.671C176.946 177.671 176.812 177.647 176.679 177.608C176.064 177.395 175.741 176.718 175.954 176.104L176.009 175.947C176.229 175.333 176.907 175.01 177.522 175.23C178.136 175.451 178.459 176.128 178.239 176.742L178.191 176.884C178.018 177.364 177.561 177.671 177.073 177.671ZM179.318 172.459C179.137 172.459 178.948 172.42 178.774 172.326C178.199 172.026 177.971 171.31 178.27 170.735L178.349 170.586C178.656 170.011 179.365 169.791 179.948 170.098C180.524 170.405 180.744 171.113 180.437 171.696L180.366 171.83C180.153 172.231 179.744 172.459 179.318 172.459ZM182.336 167.665C182.092 167.665 181.84 167.586 181.627 167.429C181.107 167.035 181.004 166.295 181.398 165.776L181.501 165.642C181.895 165.122 182.635 165.028 183.155 165.421C183.675 165.815 183.77 166.555 183.376 167.075L183.281 167.193C183.045 167.5 182.69 167.665 182.336 167.665ZM186.15 163.485C185.826 163.485 185.503 163.351 185.275 163.091C184.842 162.603 184.873 161.863 185.362 161.422L185.48 161.312C185.968 160.879 186.717 160.919 187.15 161.407C187.584 161.895 187.544 162.643 187.056 163.076L186.945 163.178C186.717 163.39 186.433 163.485 186.15 163.485ZM190.72 160.147C190.31 160.147 189.916 159.934 189.695 159.564C189.364 158.998 189.553 158.281 190.121 157.951L190.263 157.872C190.83 157.541 191.547 157.738 191.878 158.297C192.209 158.864 192.012 159.58 191.452 159.911L191.318 159.99C191.121 160.092 190.917 160.147 190.72 160.147ZM195.849 157.785C195.36 157.785 194.903 157.478 194.73 156.99C194.517 156.376 194.84 155.699 195.463 155.487L195.613 155.431C196.227 155.219 196.905 155.55 197.118 156.164C197.33 156.778 196.999 157.455 196.385 157.667L196.243 157.714C196.109 157.762 195.983 157.785 195.849 157.785ZM201.341 156.408C200.774 156.408 200.269 155.998 200.175 155.424C200.064 154.778 200.506 154.172 201.144 154.062L201.309 154.038C201.948 153.936 202.562 154.377 202.665 155.022C202.767 155.668 202.326 156.274 201.68 156.376L201.53 156.4C201.467 156.4 201.404 156.408 201.341 156.408ZM206.935 155.526C206.384 155.526 205.887 155.132 205.777 154.573C205.651 153.936 206.068 153.314 206.707 153.188L206.856 153.156C207.495 153.03 208.117 153.448 208.243 154.085C208.369 154.723 207.952 155.345 207.313 155.471L207.156 155.502C207.085 155.518 207.014 155.526 206.935 155.526ZM212.435 154.164C211.931 154.164 211.458 153.833 211.3 153.33C211.111 152.708 211.466 152.046 212.088 151.857L212.238 151.81C212.86 151.621 213.522 151.968 213.711 152.59C213.901 153.211 213.554 153.873 212.931 154.062L212.774 154.109C212.663 154.148 212.553 154.164 212.435 154.164ZM217.746 152.196C217.289 152.196 216.863 151.936 216.666 151.495C216.398 150.897 216.674 150.204 217.265 149.937L217.399 149.874C217.998 149.606 218.691 149.866 218.959 150.464C219.227 151.062 218.967 151.755 218.368 152.023L218.218 152.094C218.069 152.164 217.911 152.196 217.746 152.196ZM222.733 149.511C222.347 149.511 221.961 149.323 221.741 148.968C221.386 148.417 221.544 147.693 222.095 147.339L222.221 147.26C222.765 146.906 223.498 147.055 223.86 147.606C224.215 148.15 224.065 148.882 223.513 149.244L223.372 149.33C223.175 149.456 222.954 149.511 222.733 149.511ZM227.209 146.056C226.894 146.056 226.578 145.93 226.342 145.678C225.901 145.197 225.924 144.45 226.405 144.009L226.515 143.906C226.988 143.458 227.737 143.481 228.186 143.954C228.635 144.426 228.611 145.174 228.139 145.623L228.02 145.733C227.792 145.953 227.5 146.056 227.209 146.056ZM230.975 141.836C230.739 141.836 230.494 141.765 230.282 141.608C229.754 141.222 229.636 140.49 230.022 139.962L230.116 139.836C230.502 139.309 231.235 139.191 231.763 139.569C232.291 139.954 232.409 140.687 232.023 141.214L231.928 141.34C231.7 141.663 231.338 141.836 230.975 141.836ZM233.859 136.963C233.693 136.963 233.52 136.924 233.355 136.853C232.764 136.577 232.512 135.869 232.787 135.278L232.85 135.144C233.126 134.554 233.827 134.294 234.418 134.57C235.009 134.845 235.269 135.546 234.994 136.136L234.923 136.286C234.726 136.711 234.3 136.963 233.859 136.963ZM235.805 131.649C235.703 131.649 235.6 131.633 235.49 131.61C234.86 131.437 234.489 130.791 234.663 130.161L234.702 130.027L236.987 130.634L236.948 130.783C236.798 131.303 236.325 131.649 235.805 131.649ZM236.845 126.076C236.806 126.076 236.759 126.076 236.711 126.068C236.065 125.997 235.592 125.414 235.663 124.769L235.679 124.619C235.75 123.974 236.325 123.501 236.979 123.564C237.625 123.635 238.098 124.21 238.035 124.863L238.019 125.021C237.956 125.627 237.444 126.076 236.845 126.076ZM237.074 120.423C236.435 120.423 235.915 119.919 235.892 119.274L235.884 119.116C235.868 118.463 236.38 117.92 237.034 117.904C237.673 117.888 238.232 118.4 238.248 119.053L238.256 119.211C238.271 119.864 237.759 120.407 237.105 120.423C237.097 120.415 237.089 120.423 237.074 120.423Z" - fill="#6A2EA0" - /> - <path - d="M238.035 107.977C237.696 107.977 237.373 107.835 237.152 107.575L231.818 101.537C231.385 101.049 231.432 100.301 231.921 99.8685C232.409 99.4355 233.158 99.4827 233.591 99.9708L237.885 104.828L244.677 94.0272C245.024 93.4761 245.757 93.3108 246.308 93.6572C246.86 94.0036 247.025 94.7357 246.679 95.2868L239.043 107.426C238.846 107.741 238.508 107.946 238.137 107.977C238.098 107.977 238.066 107.977 238.035 107.977Z" - fill="#6A2EA0" - /> - <path - d="M150.574 210.546H141.82C141.166 210.546 140.638 210.018 140.638 209.365C140.638 208.711 141.166 208.184 141.82 208.184H150.574C151.228 208.184 151.756 208.711 151.756 209.365C151.756 210.018 151.228 210.546 150.574 210.546Z" - fill="#6A2EA0" - /> - <defs> - <linearGradient - id="paint0_linear" - x1="76.3245" - y1="57.2865" - x2="396.718" - y2="377.965" - gradientUnits="userSpaceOnUse" - > - <stop stopColor="#FF4C84" /> - <stop offset="0.2257" stopColor="#D45DA2" /> - <stop offset="0.7598" stopColor="#7382E5" /> - <stop offset="1" stopColor="#4C90FF" /> - </linearGradient> - </defs> - </svg> -) - -export default ManOnBenchIllustration diff --git a/libs/application/templates/health-insurance/src/fields/AgentComment/AgentComment.tsx b/libs/application/templates/health-insurance/src/fields/AgentComment/AgentComment.tsx deleted file mode 100644 index ab0835be0430..000000000000 --- a/libs/application/templates/health-insurance/src/fields/AgentComment/AgentComment.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React, { FC } from 'react' -import { formatText, getValueViaPath } from '@island.is/application/core' -import { FieldBaseProps } from '@island.is/application/types' -import { Text, Stack } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../forms/messages' - -const AgentComment: FC<React.PropsWithChildren<FieldBaseProps>> = ({ - application, -}) => { - const agentComments = getValueViaPath( - application.answers, - 'agentComments', - ) as string - const { formatMessage } = useLocale() - - return ( - <Stack space={1}> - <Text variant="h4"> - {formatText(m.agentCommentsTitle, application, formatMessage)} - </Text> - <Text> - {agentComments - ? agentComments - : formatText(m.agentCommentsEmpty, application, formatMessage)} - </Text> - </Stack> - ) -} - -export default AgentComment diff --git a/libs/application/templates/health-insurance/src/fields/ChildrenInfoMessage/ChildrenInfoMessage.css.ts b/libs/application/templates/health-insurance/src/fields/ChildrenInfoMessage/ChildrenInfoMessage.css.ts deleted file mode 100644 index be79cd764be3..000000000000 --- a/libs/application/templates/health-insurance/src/fields/ChildrenInfoMessage/ChildrenInfoMessage.css.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { style } from '@vanilla-extract/css' - -export const marginFix = style({ - marginTop: '-8px', -}) diff --git a/libs/application/templates/health-insurance/src/fields/ChildrenInfoMessage/ChildrenInfoMessage.tsx b/libs/application/templates/health-insurance/src/fields/ChildrenInfoMessage/ChildrenInfoMessage.tsx deleted file mode 100644 index 9ef1c5e184dd..000000000000 --- a/libs/application/templates/health-insurance/src/fields/ChildrenInfoMessage/ChildrenInfoMessage.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React, { FC } from 'react' -import { formatText } from '@island.is/application/core' -import { FieldBaseProps } from '@island.is/application/types' -import { AlertMessage, Box } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import * as styles from './ChildrenInfoMessage.css' -import { m } from '../../forms/messages' - -const ChildrenInfoMessage: FC<React.PropsWithChildren<FieldBaseProps>> = ({ - application, -}) => { - const { formatMessage } = useLocale() - - return ( - <Box className={styles.marginFix}> - <AlertMessage - type="info" - title={formatText( - m.childrenInfoMessageTitle, - application, - formatMessage, - )} - message={formatText( - m.childrenInfoMessageText, - application, - formatMessage, - )} - /> - </Box> - ) -} - -export default ChildrenInfoMessage diff --git a/libs/application/templates/health-insurance/src/fields/CitizenshipField/CitizenshipField.tsx b/libs/application/templates/health-insurance/src/fields/CitizenshipField/CitizenshipField.tsx deleted file mode 100644 index d176bb593568..000000000000 --- a/libs/application/templates/health-insurance/src/fields/CitizenshipField/CitizenshipField.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React, { FC, useEffect, useState } from 'react' -import { useFormContext } from 'react-hook-form' -import { getValueViaPath } from '@island.is/application/core' -import { FieldBaseProps } from '@island.is/application/types' -import { Box, Input } from '@island.is/island-ui/core' -import { ExternalDataNationalRegistry } from '../../types' - -const CitizenshipField: FC<React.PropsWithChildren<FieldBaseProps>> = ({ - field, - application, -}) => { - const { id } = field - const citizenship = ( - getValueViaPath( - application.externalData, - 'nationalRegistry', - ) as ExternalDataNationalRegistry - )?.data?.citizenship - - const [countryData, setCountryData] = useState<string>( - JSON.stringify(citizenship), - ) - const { register } = useFormContext() - - useEffect(() => { - setCountryData(JSON.stringify({ ...citizenship })) - }, [citizenship]) - - return ( - <Box hidden> - <Input - id={id} - {...register(id)} - value={countryData} - onChange={() => register} - /> - </Box> - ) -} - -export default CitizenshipField diff --git a/libs/application/templates/health-insurance/src/fields/ConfirmCheckbox/ConfirmCheckbox.tsx b/libs/application/templates/health-insurance/src/fields/ConfirmCheckbox/ConfirmCheckbox.tsx deleted file mode 100644 index 6ee0f96b98a0..000000000000 --- a/libs/application/templates/health-insurance/src/fields/ConfirmCheckbox/ConfirmCheckbox.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React, { FC } from 'react' -import { Controller, useFormContext } from 'react-hook-form' -import { formatText, getValueViaPath } from '@island.is/application/core' -import { FieldBaseProps } from '@island.is/application/types' -import { Box, Checkbox } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../forms/messages' - -const ConfirmCheckbox: FC<React.PropsWithChildren<FieldBaseProps>> = ({ - error, - field, - application, -}) => { - const { id, disabled } = field - const { setValue } = useFormContext() - const defaultValue = getValueViaPath( - application.answers, - id as string, - false, - ) as boolean - const { formatMessage } = useLocale() - - return ( - <Controller - name={id} - defaultValue={defaultValue} - render={({ field: { onChange, value } }) => { - return ( - <Box - border="standard" - borderColor="blue200" - borderRadius="large" - padding={3} - > - <Checkbox - id={id} - disabled={disabled} - name={`${id}`} - label={formatText( - m.confirmCorrectInfo, - application, - formatMessage, - )} - hasError={!!error} - checked={value} - onChange={(e) => { - onChange(e.target.checked) - setValue(id as string, e.target.checked) - }} - /> - </Box> - ) - }} - /> - ) -} - -export default ConfirmCheckbox diff --git a/libs/application/templates/health-insurance/src/forms/HealthInsuranceForm.ts b/libs/application/templates/health-insurance/src/forms/HealthInsuranceForm.ts deleted file mode 100644 index a567db4bc189..000000000000 --- a/libs/application/templates/health-insurance/src/forms/HealthInsuranceForm.ts +++ /dev/null @@ -1,373 +0,0 @@ -import { - buildCustomField, - buildDividerField, - buildFileUploadField, - buildForm, - buildDescriptionField, - buildMultiField, - buildRadioField, - buildSection, - buildSubmitField, - buildTextField, - buildSelectField, - buildAlertMessageField, -} from '@island.is/application/core' -import { - Form, - FormModes, - Comparators, - FormValue, -} from '@island.is/application/types' -import { m } from './messages' -import { YES, NO, FILE_SIZE_LIMIT, StatusTypes } from '../shared' -import Logo from '../assets/Logo' -import { - requireConfirmationOfResidency, - requireWaitingPeriod, -} from '../healthInsuranceUtils' -import { Countries } from '../lib/Countries' -import { - applicantInformationMultiField, - buildFormConclusionSection, -} from '@island.is/application/ui-forms' - -export const HealthInsuranceForm: Form = buildForm({ - id: 'HealthInsuranceDraft', - title: m.formTitle, - logo: Logo, - mode: FormModes.DRAFT, - children: [ - buildSection({ - id: 'applicantInfoSection', - title: m.applicantInfoSection, - children: [applicantInformationMultiField()], - }), - buildSection({ - id: 'statusAndChildrenSection', - title: m.statusAndChildren, - children: [ - buildMultiField({ - id: 'statusAndChildren', - title: m.statusAndChildren, - children: [ - buildCustomField({ - id: 'citizenship', - title: '', - component: 'CitizenshipField', - }), - buildRadioField({ - id: 'status.type', - title: '', - description: m.statusDescription, - width: 'half', - required: true, - largeButtons: true, - options: [ - { - label: m.statusEmployed, - value: StatusTypes.EMPLOYED, - tooltip: m.statusEmployedInformation, - }, - { - label: m.statusStudent, - value: StatusTypes.STUDENT, - tooltip: m.statusStudentInformation, - }, - { - label: m.statusPensioner, - value: StatusTypes.PENSIONER, - tooltip: m.statusPensionerInformation, - }, - { - label: m.statusOther, - value: StatusTypes.OTHER, - tooltip: m.statusOtherInformation, - }, - ], - }), - buildDescriptionField({ - id: 'confirmationOfStudiesDescription', - title: '', - description: m.confirmationOfStudies, - tooltip: m.confirmationOfStudiesTooltip, - condition: (answers) => - (answers.status as { type: string })?.type === - StatusTypes.STUDENT, - }), - buildFileUploadField({ - id: 'status.confirmationOfStudies', - title: '', - introduction: '', - maxSize: FILE_SIZE_LIMIT, - uploadHeader: m.fileUploadHeader, - uploadDescription: m.fileUploadDescription, - uploadButtonLabel: m.fileUploadButton, - condition: (answers) => - (answers.status as { type: string })?.type === - StatusTypes.STUDENT, - }), - buildRadioField({ - id: 'children', - title: '', - description: m.childrenDescription, - width: 'half', - largeButtons: true, - required: true, - options: [ - { label: m.noOptionLabel, value: NO }, - { label: m.yesOptionLabel, value: YES }, - ], - }), - buildCustomField({ - id: 'childrenInfo', - title: '', - component: 'ChildrenInfoMessage', - condition: (answers) => answers.children === YES, - }), - ], - }), - ], - }), - buildSection({ - id: 'formerInsuranceSection', - title: m.formerInsuranceSection, - children: [ - buildMultiField({ - id: 'formerInsurance', - title: m.formerInsuranceTitle, - children: [ - buildRadioField({ - id: 'formerInsurance.registration', - title: '', - description: m.formerInsuranceRegistration, - largeButtons: true, - required: true, - options: [ - { label: m.formerInsuranceNoOption, value: NO }, - { label: m.yesOptionLabel, value: YES }, - ], - }), - buildSelectField({ - id: 'formerInsurance.country', - title: m.formerInsuranceCountry, - description: m.formerInsuranceDetails, - placeholder: m.formerInsuranceCountryPlaceholder, - required: true, - backgroundColor: 'blue', - options: Countries.map(({ name, alpha2Code: countryCode }) => { - const option = { name, countryCode } - return { - label: name, - value: JSON.stringify(option), - } - }), - }), - buildTextField({ - id: 'formerInsurance.personalId', - title: m.formerPersonalId, - width: 'half', - backgroundColor: 'blue', - required: true, - }), - buildTextField({ - id: 'formerInsurance.institution', - title: m.formerInsuranceInstitution, - width: 'half', - backgroundColor: 'blue', - required: true, - }), - buildAlertMessageField({ - id: 'waitingPeriodInfo', - title: m.waitingPeriodTitle, - message: m.waitingPeriodDescription, - alertType: 'error', - condition: (answers: FormValue) => { - const formerCountry = ( - answers as { - formerInsurance: { country: string } - } - )?.formerInsurance?.country - const citizenship = ( - answers as { - citizenship: string - } - )?.citizenship - return ( - !!formerCountry && - requireWaitingPeriod(formerCountry, citizenship) - ) - }, - }), - buildFileUploadField({ - id: 'formerInsurance.confirmationOfResidencyDocument', - title: '', - maxSize: FILE_SIZE_LIMIT, - introduction: m.confirmationOfResidencyFileUpload, - uploadHeader: m.fileUploadHeader, - uploadDescription: m.fileUploadDescription, - uploadButtonLabel: m.fileUploadButton, - condition: (answers: FormValue) => { - const formerCountry = ( - answers as { - formerInsurance: { country: string } - } - )?.formerInsurance?.country - return requireConfirmationOfResidency(formerCountry) - }, - }), - buildDividerField({ - title: ' ', - color: 'transparent', - }), - buildDescriptionField({ - id: 'formerInsurance.entitlementDescription', - title: '', - description: m.formerInsuranceEntitlement, - tooltip: m.formerInsuranceEntitlementTooltip, - condition: (answers: FormValue) => { - const formerCountry = ( - answers as { - formerInsurance: { country: string } - } - )?.formerInsurance?.country - const citizenship = ( - answers as { - citizenship: string - } - )?.citizenship - return !requireWaitingPeriod(formerCountry, citizenship) - }, - }), - buildRadioField({ - id: 'formerInsurance.entitlement', - title: '', - width: 'half', - largeButtons: true, - options: [ - { label: m.noOptionLabel, value: NO }, - { label: m.yesOptionLabel, value: YES }, - ], - condition: (answers: FormValue) => { - const formerCountry = ( - answers as { - formerInsurance: { country: string } - } - )?.formerInsurance?.country - const citizenship = ( - answers as { - citizenship: string - } - ).citizenship - return !requireWaitingPeriod(formerCountry, citizenship) - }, - }), - buildTextField({ - id: 'formerInsurance.entitlementReason', - title: m.formerInsuranceAdditionalInformation, - placeholder: m.formerInsuranceAdditionalInformationPlaceholder, - variant: 'textarea', - rows: 4, - backgroundColor: 'blue', - condition: (answers: FormValue) => { - const formerCountry = ( - answers as { - formerInsurance: { country: string } - } - )?.formerInsurance?.country - const citizenship = ( - answers as { - citizenship: string - } - )?.citizenship - return !requireWaitingPeriod(formerCountry, citizenship) - }, - }), - ], - }), - ], - }), - buildSection({ - id: 'confirm', - title: m.confirmationSection, - children: [ - buildMultiField({ - id: '', - title: m.confirmationTitle, - children: [ - buildCustomField({ - id: 'review', - title: '', - component: 'Review', - }), - buildRadioField({ - id: 'hasAdditionalInfo', - title: '', - description: m.additionalInfo, - largeButtons: true, - width: 'half', - options: [ - { value: NO, label: m.noOptionLabel }, - { value: YES, label: m.yesOptionLabel }, - ], - }), - buildTextField({ - id: 'additionalRemarks', - title: m.additionalRemarks, - variant: 'textarea', - rows: 4, - placeholder: m.additionalRemarksPlaceholder, - backgroundColor: 'blue', - condition: { - questionId: 'hasAdditionalInfo', - comparator: Comparators.EQUALS, - value: YES, - }, - }), - buildFileUploadField({ - id: 'additionalFiles', - title: '', - introduction: '', - maxSize: FILE_SIZE_LIMIT, - uploadHeader: m.fileUploadHeader, - uploadDescription: m.fileUploadDescription, - uploadButtonLabel: m.fileUploadButton, - condition: { - questionId: 'hasAdditionalInfo', - comparator: Comparators.EQUALS, - value: YES, - }, - }), - buildDividerField({ - title: ' ', - color: 'transparent', - condition: { - questionId: 'hasAdditionalInfo', - comparator: Comparators.EQUALS, - value: YES, - }, - }), - buildCustomField({ - id: 'confirmCorrectInfo', - title: '', - component: 'ConfirmCheckbox', - }), - buildSubmitField({ - id: 'submit', - title: m.submitLabel, - placement: 'footer', - actions: [ - { event: 'SUBMIT', name: m.submitLabel, type: 'primary' }, - ], - }), - ], - }), - ], - }), - buildFormConclusionSection({ - alertTitle: m.successfulSubmissionTitle, - alertMessage: m.successfulSubmissionMessage, - expandableHeader: m.successfulExpendableHeader, - expandableDescription: m.nextStepReviewTime, - }), - ], -}) diff --git a/libs/application/templates/health-insurance/src/forms/messages.ts b/libs/application/templates/health-insurance/src/forms/messages.ts deleted file mode 100644 index 2177eb9eded7..000000000000 --- a/libs/application/templates/health-insurance/src/forms/messages.ts +++ /dev/null @@ -1,644 +0,0 @@ -import { defineMessages } from 'react-intl' - -export const m = defineMessages({ - formTitle: { - id: 'hi.application:title', - defaultMessage: 'Umsókn um sjúkratryggingu', - description: 'Apply for health insurance', - }, - applicantInfoSection: { - id: 'hi.application:applicant.section', - defaultMessage: 'Tengiliðaupplýsingar', - description: 'Your contact information', - }, - externalDataTitle: { - id: 'hi.application:externalData.title', - defaultMessage: 'Gögn sótt frá öðrum aðilum', - description: 'Information retrieval', - }, - nationalRegistryTitle: { - id: 'hi.application:externalData.nationalRegistry.title', - defaultMessage: 'Þjóðskrá', - description: 'Registers Iceland', - }, - nationalRegistrySubTitle: { - id: 'hi.application:externalData.nationalRegistry.subtitle#markdown', - defaultMessage: - 'Upplýsingar um nafn, kennitölu og heimilisfang \n \n Upplýsingar um börn og maka \n \nUpplýsingar um síðasta búsetuland \n \nUpplýsingar um hvernær viðkomandi var skráður í landið', - description: - 'Info about name, national id and address <br>Information about children and spouse <br>Information about the last country of residence <br>Information on when the person was registered in the country.', - }, - directorateOfLaborTitle: { - id: 'hi.application:externalData.directorateOfLabor.title', - defaultMessage: 'Vinnumálastofnun', - description: 'Directorate of Labor', - }, - directorateOfLaborSubTitle: { - id: 'hi.application:externalData.directorateOfLabor.subtitle#markdown', - defaultMessage: - 'Upplýsingar um atvinnuleysisbætur \n \nUpplýsingar um atvinnuleysisbætur erlendis (U2 vottorð) \n \nUpplýsingar um brottför frá öðru landi til Íslands: Réttur til atvinnuleysisbóta (U1 vottorð)', - description: - 'Information on unemployment benefits <br>Information on unemployment benefits abroad (U2 certificate) <br>Information on departure from another country to Iceland: Entitlement to unemployment benefits (U1 certificate)', - }, - internalRevenueTitle: { - id: 'hi.application:externalData.internalRevenue.title', - defaultMessage: 'Skatturinn', - description: 'Directorate of Internal Revenue', - }, - internalRevenueSubTitle: { - id: 'hi.application:externalData.internalRevenue.subtitle#markdown', - defaultMessage: - 'Upplýsingar um skattgreiðslur (mán/ár)\n \nNafn atvinnurekanda', - description: - 'Information on tax payments (month/year) <br> Name of employer', - }, - prerequisiteStartApplication: { - id: 'hi.application:externalData.prerequisiteStartApplication', - defaultMessage: 'Hefja umsókn', - description: 'Start application', - }, - socialInsuranceAdministrationTitle: { - id: 'hi.application:externalData.insuranceAdministration.title', - defaultMessage: 'Tryggingastofnun ríkisins', - description: 'Insurance administration', - }, - socialInsuranceAdministrationSubtitle: { - id: 'hi.application:externalData.insuranceAdministration.subTitle#markdown', - defaultMessage: - 'Upplýsingar um örorkumat (stöðu) \n \nUpplýsingar um greiðslur vegna örorku (stöðu)', - description: - 'Information on disability assessment (status) <br> Information on disability payments (status)', - }, - dataProvidersMoreInfo: { - id: 'hi.application:externalData.moreInfo#markdown', - defaultMessage: - 'Nánari upplýsingar um vinnslu persónuupplýsinga hjá Sjúkratryggingum Íslands [Persónuverndarsíðu SÍ](https://www.sjukra.is/personuvernd)', - description: - 'Further information on the processing of personal information by Sjúkratryggingar Íslands <a href="https://www.sjukra.is/personuvernd" target="_blank" style="color:#0061ff"> SÍ Privacy Page </a>', - }, - confirmationOfResidencyTitle: { - id: 'hi.application:confirmationOfResidency.title', - defaultMessage: 'Staðfesting á búsetu', - description: 'Confirmation of residency', - }, - confirmationOfResidencyDescription: { - id: 'hi.application:confirmationOfResidency.description', - defaultMessage: - 'Samkvæmt Þjóðskrá fluttir þú til Íslands frá Grænlandi eða Færeyjum. Til að sækja um sjúkratryggingu þarf búsetuvottorð frá Grænlændi eða Færeyjum ', - description: - 'According to Registers Iceland’s data it seems like you are moving to Iceland from Greenland or the Faroe Islands. To apply for the national health insurance, you need to provide a confirmation of residency from Greenland or the Faroe Islands.', - }, - confirmationOfResidencyFileUpload: { - id: 'hi.application:confirmationOfResidency.fileUpload', - defaultMessage: 'Setjið inn búsetuvottorð.', - description: 'Please add your confirmation of residency', - }, - contactInfoTitle: { - id: 'hi.application:contactInfo.title', - defaultMessage: 'Staðfestið tengiliðaupplýsingar', - description: 'Confirm your contact information', - }, - name: { - id: 'hi.application:applicant.name', - defaultMessage: 'Fullt nafn', - description: 'Full name', - }, - nationalId: { - id: 'hi.application:applicant.nationalId', - defaultMessage: 'Kennitala', - description: 'Icelandic ID number', - }, - address: { - id: 'hi.application:applicant.address', - defaultMessage: 'Lögheimili', - description: 'Address', - }, - postalCode: { - id: 'hi.application:applicant.postalCode', - defaultMessage: 'Póstnúmer', - description: 'Postal code', - }, - city: { - id: 'hi.application:applicant.city', - defaultMessage: 'Staður', - description: 'City', - }, - nationality: { - id: 'hi.application:applicant.nationality', - defaultMessage: 'Ríkisfang', - description: 'Nationality', - }, - editNationalRegistryData: { - id: 'hi.application:nationalRegistryData.edit#markdown', - defaultMessage: - 'Tilkynna [flutning lögheimilis](https://www.skra.is/umsoknir/eydublod-umsoknir-og-vottord/).', - description: - 'Need to update your address? Go to <a href="https://www.skra.is/umsoknir/eydublod-umsoknir-og-vottord/" target="_blank" style="color:#0061ff">Change of Address</a>', - }, - email: { - id: 'hi.application:applicant.email', - defaultMessage: 'Netfang', - description: 'E-mail', - }, - phoneNumber: { - id: 'hi.application:applicant.phoneNumber', - defaultMessage: 'Símanúmer', - description: 'Phone number', - }, - editDigitalIslandData: { - id: 'hi.application:digitalIslandData.edit#markdown', - defaultMessage: - 'Vinsamlegast uppfærið netfang og símanúmer á [Mínum síðum](https://island.is/minarsidur/stillingar/minar-stillingar/) ef með þarf. Eftir að búið er að skrá inn nýjar upplýsingar, uppfærið þessa síðu.', - description: - 'Update your e-mail and phone number on <a href="https://island.is/minarsidur/stillingar/minar-stillingar" target="_blank" style="color:#0061ff">My Pages</a> if incorrect. Refresh this page once updated.', - }, - statusAndChildren: { - id: 'hi.application:statusAndChildrend.section', - defaultMessage: 'Staða og börn', - description: 'Status and children', - }, - statusDescription: { - id: 'hi.application:status.description', - defaultMessage: 'Staða í fyrra tryggingarlandi', - description: 'Status in former country of insurance?', - }, - statusEmployed: { - id: 'hi.application:status.employed', - defaultMessage: 'Launþegi', - description: 'Employed', - }, - statusEmployedInformation: { - id: 'hi.application:status.employed.information', - defaultMessage: 'Þú varst í vinnu hjá fyrirtæki eða sjálfstætt starfandi.', - description: 'You were employed by a company or self-employed', - }, - statusOther: { - id: 'hi.application:status.other', - defaultMessage: 'Annað', - description: 'Other', - }, - statusOtherInformation: { - id: 'hi.application:other.information', - defaultMessage: 'Allar aðrar stöður', - description: 'All other statuses', - }, - statusPensioner: { - id: 'hi.application:status.pensioner', - defaultMessage: 'Lífeyrisþegi', - description: 'Pensioner', - }, - statusPensionerInformation: { - id: 'hi.application:pensioner.information', - defaultMessage: 'Þú færð lífeyri eða örorkubætur frá Íslandi.', - description: - 'You are receiving old age pension or disability pension from Iceland', - }, - statusStudent: { - id: 'hi.application:status.student', - defaultMessage: 'Námsmaður', - description: 'Student', - }, - statusStudentInformation: { - id: 'hi.application:student.information', - defaultMessage: - 'Þú fluttir frá Íslandi til að stunda nám erlendis og flytur til baka til Íslands innan sex mánaða frá lokum náms.', - description: - 'You moved away from Iceland for the purpose of studying abroad and are moving back to Iceland within six months of the end of studies', - }, - confirmationOfStudies: { - id: 'hi.application:student.confirmationOfStudies', - defaultMessage: 'Senda þarf inn staðfestingu á námi', - description: 'Confirmation of studies must be submitted', - }, - confirmationOfStudiesTooltip: { - id: 'hi.application:student.confirmationOfStudiesTooltip', - defaultMessage: - 'Þú þarft að senda inn afrit af útskriftarskírteini eða staðfestingu á námsferli fyrir hverja önn. Skráningar- eða inntökustaðfesting nægir ekki', - description: - 'You need to submit a copy of your Graduation certificate or a confirmation of completed credits for each semester. Admission or enrollement letters are not sufficient.', - }, - childrenDescription: { - id: 'hi.application:children.description', - defaultMessage: 'Flytja börn undir 18 ára aldri með þér til Íslands?', - description: - 'Are there any children under the age of 18 moving to Iceland with you?', - }, - childrenInfoMessageTitle: { - id: 'hi.application:children.infoMessageTitle', - defaultMessage: 'Sjúkratryggingar barna', - description: 'Health insurance for children', - }, - childrenInfoMessageText: { - id: 'hi.application:children.infoMessageText', - defaultMessage: - 'Börn skráð á þér munu sjálfkrafa verða sjúkratryggð á sama tíma og þú', - description: - 'Any children registered to you will automatically get health insurance once you get insured.', - }, - yesOptionLabel: { - id: 'hi.application:option.yes', - defaultMessage: 'Já', - description: 'Yes', - }, - noOptionLabel: { - id: 'hi.application:option.no', - defaultMessage: 'Nei', - description: 'No', - }, - fileUploadHeader: { - id: 'hi.application:fileUpload.header', - defaultMessage: 'Dragið skrár hingað', - description: 'Drag & drop your files here', - }, - fileUploadDescription: { - id: 'hi.application:fileUpload.description', - defaultMessage: - 'Hámark 10 MB á skrá. Samþykktar skráartegundir eru .pdf .docx og .jpg', - description: - 'Max 10 MB per file. Accepted documents is .pdf .docx and .jpg', - }, - fileUploadButton: { - id: 'hi.application:fileUpload.button', - defaultMessage: 'Veljið skjöl til að hlaða upp', - description: 'Select documents to upload', - }, - formerInsuranceSection: { - id: 'hi.application:formerInsurance.section', - defaultMessage: 'Fyrra tryggingarland', - description: 'Former country of insurance', - }, - formerInsuranceTitle: { - id: 'hi.application:formerInsurance.title', - defaultMessage: 'Fyrra tryggingarland', - description: 'Former country of insurance', - }, - formerInsuranceRegistration: { - id: 'hi.application:formerInsurance.registration', - defaultMessage: - 'Varst þú skráður í almannatryggingakerfi í fyrra tryggingarlandi?', - description: - 'Were you registered with a national health insurance institution in your former country of insurance?', - }, - formerInsuranceCountryPlaceholder: { - id: 'hi.application:formerInsurance.countryPlaceholder', - defaultMessage: 'Veldu land', - description: 'Select a country', - }, - formerInsuranceCountryError: { - id: 'hi.application:formerInsurance.countryError', - defaultMessage: 'Error when loading countries', - description: 'Error when loading countries', - }, - formerInsuranceDetails: { - id: 'hi.application:formerInsurance.details', - defaultMessage: - 'Vinsamlegast gefið upplýsingar um fyrra tryggingarland. Veldu landsheiti á ensku.', - description: - 'Please provide the following details regarding your former country of residence.', - }, - formerInsuranceEntitlement: { - id: 'hi.application:formerInsurance.entitlement', - defaultMessage: - 'Átt þú rétt á áframhaldandi tryggingu í fyrra tryggingarlandi á meðan búsetu á Íslandi stendur?', - description: - 'Are you entitled to continued insurance in your former country of residence while living in Iceland?', - }, - formerInsuranceEntitlementTooltip: { - id: 'hi.application:formerInsurance.entitlementTooltip', - defaultMessage: - 'Líklega Já ef þú ert enn í vinnu eða ert að fá atvinnuleysisbætur, lífeyri, fæðingarorlof eða annars konar bætur í peningum frá fyrra tryggingarlandi. ', - description: - 'Most likely yes if you are still employed/receiving unemployment benefits, pension, benefits in cash or paternity/maternity benefits from your former country of insurance.', - }, - formerInsuranceAdditionalInformation: { - id: 'hi.application:formerInsurance.additionalInformation', - defaultMessage: 'Skýrið ástæðuna ef já', - description: 'If yes, please explain why', - }, - formerInsuranceAdditionalInformationPlaceholder: { - id: 'hi.application:formerInsurance.additionalInformationPlaceholder', - defaultMessage: 'Ég á enn rétt á sjúkratryggingu vegna þess að ...', - description: "I'm still entitled to health insurance because...", - }, - formerInsuranceNoOption: { - id: 'hi.application:formerInsurance.noOption', - defaultMessage: 'Nei, eingöngu einkatrygging, eða engin trygging', - description: 'No, only private insurance or no insurance', - }, - formerInsuranceCountry: { - id: 'hi.application:formerInsurance.country', - defaultMessage: 'Land', - description: 'Country', - }, - formerPersonalId: { - id: 'hi.application:formerInsurance.formerPersonalId', - defaultMessage: 'Kennitala í fyrra búsetulandi', - description: 'ID number in previous country', - }, - formerInsuranceInstitution: { - id: 'hi.application:formerInsurance.instituiton', - defaultMessage: 'Nafn sjúkratryggingarstofnunar', - description: 'Name of the health insurance institution', - }, - confirmationSection: { - id: 'hi.application:confirmationSection', - defaultMessage: 'Staðfesta og senda', - description: 'Confirm and submit', - }, - confirmationTitle: { - id: 'hi.application:confirmationTitle', - defaultMessage: 'Staðfesta og senda inn umsókn', - description: 'Confirm and submit your application', - }, - additionalInfo: { - id: 'hi.application:hasAdditionalRemarks', - defaultMessage: 'Hefur þú frekari upplýsingar?', - description: 'Do you have any additional information or remarks?', - }, - additionalRemarks: { - id: 'hi.application:additionalRemarks', - defaultMessage: 'Viðbótarupplýsingar', - description: 'Additional information or remarks', - }, - additionalRemarksPlaceholder: { - id: 'hi.application:additionalRemarks.placeholder', - defaultMessage: 'Setið athugasemd hér', - description: 'Enter your text here', - }, - confirmCorrectInfo: { - id: 'hi.application:confirmCorrectInfo', - defaultMessage: 'Ég staðfesti að upplýsingar þessar eru réttar og sannar', - description: 'I am ensuring that the information is true and correct', - }, - submitLabel: { - id: 'hi.application:submit', - defaultMessage: 'Staðfesta umsókn', - description: 'Submit', - }, - successfulSubmissionTitle: { - id: 'hi.application:successfulSubmission.title', - defaultMessage: 'Við höfum sent umsóknina þína!', - description: 'Your application is sent!', - }, - successfulSubmissionMissingInfoTitle: { - id: 'hi.application:successfulSubmission.missingInfoTitle', - defaultMessage: 'Við höfum móttekið svar þitt!', - description: 'We have received your answer!', - }, - successfulSubmissionMessage: { - id: 'hi.application:successfulSubmission.message', - defaultMessage: - 'Þú færð staðfestingapóst með skjalanúmerinu þínu sendann á netfangið þitt', - description: 'A confirmation e-mail with your case number will be sent', - }, - successfulExpendableHeader: { - id: 'hi.application:successfulExpendable.header', - defaultMessage: 'Hvað gerist næst?', - description: 'What happens next title in expandable field', - }, - nextStepReviewTime: { - id: 'hi.application:nextStep.duration#markdown', - defaultMessage: - '* Tekið getur allt að 2-6 vikur að fara yfir umsókn. Lengd svartíma fer eftir því hversu fljótt fyrra tryggingarland þitt svarar fyrirspurn okkar og getur það tekið lengri tíma.', - description: - 'An application may take up to 2–6 weeks to process. Depending on how fast your former country of insurance responds to our request, it may take longer.', - }, - actionCardSuccessFullSubmissionTitle: { - id: 'hi.application:actionCard.successfulSubmission.title', - defaultMessage: 'Umsókn móttekin', - description: 'Application received', - }, - actionCardSuccessFullSubmissionDescription: { - id: 'hi.application:actionCard.successfulSubmission.description', - defaultMessage: - 'Tekið getur allt að 2-6 vikur að fara yfir umsókn. Lengd svartíma fer eftir því hversu fljótt fyrra tryggingarland þitt svarar fyrirspurn okkar og getur það tekið lengri tíma.', - description: 'A confirmation e-mail with your case number will be sent', - }, - missingInfoSection: { - id: 'hi.application:missingInfo.section', - defaultMessage: 'Vantar upplýsingar', - description: 'Missing information', - }, - agentCommentsTitle: { - id: 'hi.application:agentComments.title', - defaultMessage: 'Athugasemd frá Sjúkratryggingum Íslands', - description: 'Comment from the Icelandic Health Insurance', - }, - agentCommentsEmpty: { - id: 'hi.application:agentComments.empty', - defaultMessage: 'Agent did not leave any comments for you', - description: 'Agent did not leave any comments for you', - }, - missingInfoAnswersTitle: { - id: 'hi.application:missingInfo.addInfo.title', - defaultMessage: 'Svar', - description: 'Your answer', - }, - previousAnswersTitle: { - id: 'hi.application:previousInfo.title', - defaultMessage: 'Fyrri svör', - description: 'Previous answer', - }, - attachedFilesTitle: { - id: 'hi.application:attachedFiles.title', - defaultMessage: 'Attached files', - description: 'Attached files', - }, - modalCloseButtonText: { - id: 'hi.application:modalCloseButtonText', - defaultMessage: 'Loka', - description: 'Close', - }, - waitingPeriodTitle: { - id: 'hi.application:waitingPeriod.title', - defaultMessage: 'Biðtími', - description: 'Waiting period', - }, - waitingPeriodDescription: { - id: 'hi.application:waitingPeriod.description#markdown', - defaultMessage: - 'Þegar flutt er til Íslands frá landi utan [EES svæðisins](https://www.sjukra.is/heilbrigdisthjonusta/rettindi-milli-landa/evropska-sjukratryggingakortid/ees-londin/), Grænlandi eða Færeyjum fer einstaklingur á sex mánaða biðtíma eftir sjúkratryggingu. Þetta á einnig við um einstaklinga með ríkisborgararétt frá landi utan [EES svæðisins](https://www.sjukra.is/heilbrigdisthjonusta/rettindi-milli-landa/evropska-sjukratryggingakortid/ees-londin/), Grænlandi eða Færeyjum sem flytja til Íslands frá landi utan Norðurlandanna.\n \n Þú lendir á biðtíma og verður sjálfkrafa sjúkratryggður sex mánuðum eftir að lögheimili þitt var skráð á Íslandi hjá Þjóðskrá. Við ráðleggjum þér að kaupa einkatryggingar meðan á þessum biðtíma stendur. Ákveðnar [læknisfræðilegar undanþágur](https://island.is/umsokn-um-sjukratryggingu#laeknisfraedilegar-undanthagur) eru frá sex mánaða biðtímanum.', - description: - 'When moving to Iceland or being a citizen from a country outside the <a href="https://www.sjukra.is/english/health-insurance-abroad/european-health-insurance-card/european-countries/" target="_blank" style="color:#0061ff">EU/EEA</a>, Greenland or the Faroe Islands there is a six-month waiting period before qualifying for national health insurance. You will need to wait.<br/><br/> You will be automatically covered by the national health insurance six months from the day you registered your legal residence with Registers Iceland. We advise you to buy private health insurance until you are covered. There are some <a href="https://island.is/en/apply-for-health-insurance#waiting-period" target="_blank" style="color:#0061ff">medical exceptions</a> to the waiting period.', - }, - waitingPeriodButtonText: { - id: 'hi.application:waitingPeriod.buttonText', - defaultMessage: 'Lesa meira', - description: 'Read more', - }, - requiresActionTagLabel: { - id: 'hi.application:requiresActionTagLabel', - defaultMessage: 'Þarfnast aðgerðar', - description: 'Requires action', - }, - completeTagLabel: { - id: 'hi.application:completeTagLabel', - defaultMessage: 'Uppfletting í lagi', - description: 'Complete', - }, - registerYourselfTitle: { - id: 'hi.application:registerYourself.title', - defaultMessage: 'Skrá lögheimili á Íslandi', - description: 'Register yourself in Iceland', - }, - registerYourselfDescription: { - id: 'hi.application:registerYourself.description', - defaultMessage: - 'Skrá þarf lögheimili á Íslandi áður en sótt er um sjúkratryggingu.', - description: - 'You don’t seem to be registered with Registers Iceland. You need to register your legal residence in Iceland before applying for national health insurance.', - }, - registerYourselfButtonText: { - id: 'hi.application:registerYourself.buttonText', - defaultMessage: 'Leiðbeiningar', - description: 'How to register', - }, - registerYourselfButtonLink: { - id: 'hi.application:registerYourself.buttonLink', - defaultMessage: 'https://island.is/logheimili-upplysingar-innflytjendur', - description: 'https://island.is/en/legal-domicile-immigrant', - }, - activeDraftApplicationTitle: { - id: 'hi.application:activeDraftApplication.title', - defaultMessage: 'Opna ókláraða umsókn', - description: 'Open your previous draft', - }, - activeDraftApplicationDescription: { - id: 'hi.application:activeDraftApplication.description', - defaultMessage: - 'Þú átt nú þegar umsókn sem ekki hefur verið send inn. Vinsamlegast farðu í fyrri umsókn til að halda áfram.', - description: 'Information for those that alreade have a started draft', - }, - activeDraftApplicationButtonText: { - id: 'hi.application:activeDraftApplication.buttonText', - defaultMessage: 'Opna umsókn', - description: 'Open draft', - }, - prerequisiteCheckScreenTitle: { - id: 'hi.application:prerequisiteCheckScreenTitle', - defaultMessage: 'Öll gögn hafa verið sótt', - description: 'All data has been gathered', - }, - prerequisiteNationalRegistryTitle: { - id: 'hi.application:prerequisiteNationalRegistry.title', - defaultMessage: 'Uppfletting lögheimilis', - description: 'Legal residence lookup', - }, - prerequisiteNationalRegistryDescription: { - id: 'hi.application:prerequisiteNationalRegistry.description', - defaultMessage: 'Athugað hvort notandi sé með skráð lögheimili á Íslandi', - description: - 'Check whether the user has a registered legal residence in Iceland', - }, - prerequisiteActiveDraftApplicationTitle: { - id: 'hi.application:prerequisiteActiveDraftApplication.title', - defaultMessage: 'Uppfletting umsókna í umsóknarkerfi Island.is', - description: 'Search for previous applications in Island.is', - }, - prerequisiteActiveDraftApplicationDescription: { - id: 'hi.application:prerequisiteActiveDraftApplication.description', - defaultMessage: - 'Athugað hvort notandi sé þegar með umsókn í umsóknarkerfi Island.is', - description: - 'Search for previous applications in the application system at Island.is', - }, - prerequisiteHealthInsuranceTitle: { - id: 'hi.application:prerequisiteHealthInsurance.title', - defaultMessage: 'Uppfletting sjúkratryggingar', - description: 'Checking health insurance', - }, - prerequisiteHealthInsuranceDescription: { - id: 'hi.application:prerequisiteHealthInsurance.description', - defaultMessage: 'Athugað hvort notandi sé þegar með sjúkratryggingu', - description: 'Check if the user already has health insurance', - }, - prerequisitePendingApplicationTitle: { - id: 'hi.application:prerequisitePendingApplication.title', - defaultMessage: 'Uppfletting umsókna í Sjúkratryggingum ríkisins.', - description: - 'Search for previous applications in Sjúkratryggingar ríkisins', - }, - prerequisitePendingApplicationDescription: { - id: 'hi.application:prerequisitePendingApplication.description', - defaultMessage: - 'Athugað hvort notandi sé þegar með umsókn hjá Sjúkratryggingum ríkisins.', - description: - 'Check whether the user already has an application with Sjúkratryggingar ríkisins', - }, - pendingApplicationTitle: { - id: 'hi.application:activeApplication.title', - defaultMessage: 'Virk umsókn', - description: 'Active application', - }, - pendingApplicationDescription: { - id: 'hi.application:oldPendingApplication.description', - defaultMessage: - 'Þú hefur nú þegar sótt um sjúkratryggingu. Númer umsókninnar er **{applicationNumber}**. Vinsamlegast hafið samband við Sjúkratryggingar Íslands ef spurningar vakna.', - description: - 'You have already submitted an application for health insurance. Your application number is **{applicationNumber}**. Please contact the Icelandic Health Insurance if you have any questions.', - }, - pendingApplicationButtonText: { - id: 'hi.application:oldPendingApplication.buttonText', - defaultMessage: 'Hafa samband', - description: 'Contact info', - }, - pendingApplicationButtonLink: { - id: 'hi.application:oldPendingApplication.buttonLink', - defaultMessage: 'https://www.sjukra.is/um-okkur/thjonustuleidir/', - description: 'https://www.sjukra.is/english', - }, - alreadyInsuredTitle: { - id: 'hi.application:alreadyInsured.title', - defaultMessage: 'Þú ert nú þegar sjúkratryggður', - description: 'Already insured', - }, - alreadyInsuredDescription: { - id: 'hi.application:alreadyInsured.description', - defaultMessage: - 'Þú ert nú þegar með virka sjúkratryggingu hjá Sjúkratryggingum Íslands og þarft því ekki að sækja um.<br/><br/> Nánari upplýsingar er að finna á heimasíðu Sjúkratrygginga Íslands.', - description: - 'You are already covered by the Icelandic Health Insurance. You do not need to apply. You can read more about your health insurance at <a href="https://www.sjukra.is/english" target="_blank" style="color:#0061ff">sjukra.is/english</a>', - }, - alreadyInsuredButtonText: { - id: 'hi.application:alreadyInsured.buttonText', - defaultMessage: 'Opna vefsíðu', - description: 'A button to go to sjukra website', - }, - alreadyInsuredButtonLink: { - id: 'hi.application:alreadyInsured.buttonLink', - defaultMessage: 'https://www.sjukra.is', - description: 'https://www.sjukra.is/english', - }, - externalDataCheckbox: { - id: 'hi.application:externalDataCheckbox', - defaultMessage: 'Ég skil að ofangreindra gagna verður aflað', - description: 'I understand that the above data will be collected', - }, - externalDataSubtitle: { - id: 'hi.application:externalDataSubtitle', - defaultMessage: - 'Unnið verður með persónugreinanleg gögn frá eftirfarandi stofnunum við vinnslu umsóknarinnar', - description: - 'Personally identifiable data from the following institutions will be processed during the processing of the application', - }, - prerequisitesFormTitle: { - id: 'hi.application:PrerequisitesFormTitle', - defaultMessage: 'Skilyrði', - description: 'Conditions', - }, - externalDataSuccessDescription: { - id: 'hi.application:externalDataSuccessTitle', - defaultMessage: 'Öll gögn hafa verið sótt og er hægt að hefja umsókn', - description: 'All data has been fetched and the application can be started', - }, - externalDataSuccessSubmitFieldTitle: { - id: 'hi.application:externalDataSuccessSubmitFieldTitle', - defaultMessage: 'Hefja umsókn', - description: 'Start application', - }, - unexpectedError: { - id: 'hi.application:unexpectedError', - defaultMessage: 'Villa kom upp', - description: 'Unexpected error', - }, -}) diff --git a/libs/application/templates/health-insurance/src/lib/Countries.ts b/libs/application/templates/health-insurance/src/lib/Countries.ts deleted file mode 100644 index 8c35cc0ac9d7..000000000000 --- a/libs/application/templates/health-insurance/src/lib/Countries.ts +++ /dev/null @@ -1,2946 +0,0 @@ -export const Countries = [ - { - name: 'Afghanistan', - topLevelDomain: ['.af'], - alpha2Code: 'AF', - alpha3Code: 'AFG', - callingCodes: ['93'], - capital: 'Kabul', - altSpellings: ['AF', 'Afġānistān'], - region: 'Asia', - }, - { - name: 'Åland Islands', - topLevelDomain: ['.ax'], - alpha2Code: 'AX', - alpha3Code: 'ALA', - callingCodes: ['358'], - capital: 'Mariehamn', - altSpellings: ['AX', 'Aaland', 'Aland', 'Ahvenanmaa'], - region: 'Europe', - }, - { - name: 'Albania', - topLevelDomain: ['.al'], - alpha2Code: 'AL', - alpha3Code: 'ALB', - callingCodes: ['355'], - capital: 'Tirana', - altSpellings: ['AL', 'Shqipëri', 'Shqipëria', 'Shqipnia'], - region: 'Europe', - }, - { - name: 'Algeria', - topLevelDomain: ['.dz'], - alpha2Code: 'DZ', - alpha3Code: 'DZA', - callingCodes: ['213'], - capital: 'Algiers', - altSpellings: ['DZ', 'Dzayer', 'Algérie'], - region: 'Africa', - }, - { - name: 'American Samoa', - topLevelDomain: ['.as'], - alpha2Code: 'AS', - alpha3Code: 'ASM', - callingCodes: ['1'], - capital: 'Pago Pago', - altSpellings: ['AS', 'Amerika Sāmoa', 'Amelika Sāmoa', 'Sāmoa Amelika'], - region: 'Oceania', - }, - { - name: 'Andorra', - topLevelDomain: ['.ad'], - alpha2Code: 'AD', - alpha3Code: 'AND', - callingCodes: ['376'], - capital: 'Andorra la Vella', - altSpellings: ['AD', 'Principality of Andorra', "Principat d'Andorra"], - region: 'Europe', - }, - { - name: 'Angola', - topLevelDomain: ['.ao'], - alpha2Code: 'AO', - alpha3Code: 'AGO', - callingCodes: ['244'], - capital: 'Luanda', - altSpellings: ['AO', 'República de Angola', "ʁɛpublika de an'ɡɔla"], - region: 'Africa', - }, - { - name: 'Anguilla', - topLevelDomain: ['.ai'], - alpha2Code: 'AI', - alpha3Code: 'AIA', - callingCodes: ['1'], - capital: 'The Valley', - altSpellings: ['AI'], - region: 'Americas', - }, - { - name: 'Antarctica', - topLevelDomain: ['.aq'], - alpha2Code: 'AQ', - alpha3Code: 'ATA', - callingCodes: ['672'], - capital: '', - altSpellings: [], - region: 'Polar', - }, - { - name: 'Antigua and Barbuda', - topLevelDomain: ['.ag'], - alpha2Code: 'AG', - alpha3Code: 'ATG', - callingCodes: ['1'], - capital: "Saint John's", - altSpellings: ['AG'], - region: 'Americas', - }, - { - name: 'Argentina', - topLevelDomain: ['.ar'], - alpha2Code: 'AR', - alpha3Code: 'ARG', - callingCodes: ['54'], - capital: 'Buenos Aires', - altSpellings: ['AR', 'Argentine Republic', 'República Argentina'], - region: 'Americas', - }, - { - name: 'Armenia', - topLevelDomain: ['.am'], - alpha2Code: 'AM', - alpha3Code: 'ARM', - callingCodes: ['374'], - capital: 'Yerevan', - altSpellings: [ - 'AM', - 'Hayastan', - 'Republic of Armenia', - 'Հայաստանի Հանրապետություն', - ], - region: 'Asia', - }, - { - name: 'Aruba', - topLevelDomain: ['.aw'], - alpha2Code: 'AW', - alpha3Code: 'ABW', - callingCodes: ['297'], - capital: 'Oranjestad', - altSpellings: ['AW'], - region: 'Americas', - }, - { - name: 'Australia', - topLevelDomain: ['.au'], - alpha2Code: 'AU', - alpha3Code: 'AUS', - callingCodes: ['61'], - capital: 'Canberra', - altSpellings: ['AU'], - region: 'Oceania', - }, - { - name: 'Austria', - topLevelDomain: ['.at'], - alpha2Code: 'AT', - alpha3Code: 'AUT', - callingCodes: ['43'], - capital: 'Vienna', - altSpellings: ['AT', 'Österreich', 'Osterreich', 'Oesterreich'], - region: 'Europe', - }, - { - name: 'Azerbaijan', - topLevelDomain: ['.az'], - alpha2Code: 'AZ', - alpha3Code: 'AZE', - callingCodes: ['994'], - capital: 'Baku', - altSpellings: ['AZ', 'Republic of Azerbaijan', 'Azərbaycan Respublikası'], - region: 'Asia', - }, - { - name: 'Bahamas', - topLevelDomain: ['.bs'], - alpha2Code: 'BS', - alpha3Code: 'BHS', - callingCodes: ['1'], - capital: 'Nassau', - altSpellings: ['BS', 'Commonwealth of the Bahamas'], - region: 'Americas', - }, - { - name: 'Bahrain', - topLevelDomain: ['.bh'], - alpha2Code: 'BH', - alpha3Code: 'BHR', - callingCodes: ['973'], - capital: 'Manama', - altSpellings: ['BH', 'Kingdom of Bahrain', 'Mamlakat al-Baḥrayn'], - region: 'Asia', - }, - { - name: 'Bangladesh', - topLevelDomain: ['.bd'], - alpha2Code: 'BD', - alpha3Code: 'BGD', - callingCodes: ['880'], - capital: 'Dhaka', - altSpellings: [ - 'BD', - "People's Republic of Bangladesh", - 'Gônôprôjatôntri Bangladesh', - ], - region: 'Asia', - }, - { - name: 'Barbados', - topLevelDomain: ['.bb'], - alpha2Code: 'BB', - alpha3Code: 'BRB', - callingCodes: ['1'], - capital: 'Bridgetown', - altSpellings: ['BB'], - region: 'Americas', - }, - { - name: 'Belarus', - topLevelDomain: ['.by'], - alpha2Code: 'BY', - alpha3Code: 'BLR', - callingCodes: ['375'], - capital: 'Minsk', - altSpellings: [ - 'BY', - 'Bielaruś', - 'Republic of Belarus', - 'Белоруссия', - 'Республика Беларусь', - 'Belorussiya', - 'Respublika Belarus’', - ], - region: 'Europe', - }, - { - name: 'Belgium', - topLevelDomain: ['.be'], - alpha2Code: 'BE', - alpha3Code: 'BEL', - callingCodes: ['32'], - capital: 'Brussels', - altSpellings: [ - 'BE', - 'België', - 'Belgie', - 'Belgien', - 'Belgique', - 'Kingdom of Belgium', - 'Koninkrijk België', - 'Royaume de Belgique', - 'Königreich Belgien', - ], - region: 'Europe', - }, - { - name: 'Belize', - topLevelDomain: ['.bz'], - alpha2Code: 'BZ', - alpha3Code: 'BLZ', - callingCodes: ['501'], - capital: 'Belmopan', - altSpellings: ['BZ'], - region: 'Americas', - }, - { - name: 'Benin', - topLevelDomain: ['.bj'], - alpha2Code: 'BJ', - alpha3Code: 'BEN', - callingCodes: ['229'], - capital: 'Porto-Novo', - altSpellings: ['BJ', 'Republic of Benin', 'République du Bénin'], - region: 'Africa', - }, - { - name: 'Bermuda', - topLevelDomain: ['.bm'], - alpha2Code: 'BM', - alpha3Code: 'BMU', - callingCodes: ['1'], - capital: 'Hamilton', - altSpellings: [ - 'BM', - 'The Islands of Bermuda', - 'The Bermudas', - 'Somers Isles', - ], - region: 'Americas', - }, - { - name: 'Bhutan', - topLevelDomain: ['.bt'], - alpha2Code: 'BT', - alpha3Code: 'BTN', - callingCodes: ['975'], - capital: 'Thimphu', - altSpellings: ['BT', 'Kingdom of Bhutan'], - region: 'Asia', - }, - { - name: 'Bolivia (Plurinational State of)', - topLevelDomain: ['.bo'], - alpha2Code: 'BO', - alpha3Code: 'BOL', - callingCodes: ['591'], - capital: 'Sucre', - altSpellings: [ - 'BO', - 'Buliwya', - 'Wuliwya', - 'Plurinational State of Bolivia', - 'Estado Plurinacional de Bolivia', - 'Buliwya Mamallaqta', - 'Wuliwya Suyu', - 'Tetã Volívia', - ], - region: 'Americas', - }, - { - name: 'Bonaire, Sint Eustatius and Saba', - topLevelDomain: ['.an', '.nl'], - alpha2Code: 'BQ', - alpha3Code: 'BES', - callingCodes: ['599'], - capital: 'Kralendijk', - altSpellings: ['BQ', 'Boneiru'], - region: 'Americas', - }, - { - name: 'Bosnia and Herzegovina', - topLevelDomain: ['.ba'], - alpha2Code: 'BA', - alpha3Code: 'BIH', - callingCodes: ['387'], - capital: 'Sarajevo', - altSpellings: ['BA', 'Bosnia-Herzegovina', 'Босна и Херцеговина'], - region: 'Europe', - }, - { - name: 'Botswana', - topLevelDomain: ['.bw'], - alpha2Code: 'BW', - alpha3Code: 'BWA', - callingCodes: ['267'], - capital: 'Gaborone', - altSpellings: ['BW', 'Republic of Botswana', 'Lefatshe la Botswana'], - region: 'Africa', - }, - { - name: 'Bouvet Island', - topLevelDomain: ['.bv'], - alpha2Code: 'BV', - alpha3Code: 'BVT', - callingCodes: ['47'], - capital: '', - altSpellings: ['BV', 'Bouvetøya', 'Bouvet-øya'], - region: '', - }, - { - name: 'Brazil', - topLevelDomain: ['.br'], - alpha2Code: 'BR', - alpha3Code: 'BRA', - callingCodes: ['55'], - capital: 'Brasília', - altSpellings: [ - 'BR', - 'Brasil', - 'Federative Republic of Brazil', - 'República Federativa do Brasil', - ], - region: 'Americas', - }, - { - name: 'British Indian Ocean Territory', - topLevelDomain: ['.io'], - alpha2Code: 'IO', - alpha3Code: 'IOT', - callingCodes: ['246'], - capital: 'Diego Garcia', - altSpellings: ['IO'], - region: 'Africa', - }, - { - name: 'United States Minor Outlying Islands', - topLevelDomain: ['.us'], - alpha2Code: 'UM', - alpha3Code: 'UMI', - callingCodes: ['1'], - capital: '', - altSpellings: ['UM'], - region: 'Americas', - }, - { - name: 'Virgin Islands (British)', - topLevelDomain: ['.vg'], - alpha2Code: 'VG', - alpha3Code: 'VGB', - callingCodes: ['1'], - capital: 'Road Town', - altSpellings: ['VG'], - region: 'Americas', - }, - { - name: 'Virgin Islands (U.S.)', - topLevelDomain: ['.vi'], - alpha2Code: 'VI', - alpha3Code: 'VIR', - callingCodes: ['1 340'], - capital: 'Charlotte Amalie', - altSpellings: [ - 'VI', - 'USVI', - 'American Virgin Islands', - 'U.S. Virgin Islands', - ], - region: 'Americas', - }, - { - name: 'Brunei Darussalam', - topLevelDomain: ['.bn'], - alpha2Code: 'BN', - alpha3Code: 'BRN', - callingCodes: ['673'], - capital: 'Bandar Seri Begawan', - altSpellings: ['BN', 'Nation of Brunei', ' the Abode of Peace'], - region: 'Asia', - }, - { - name: 'Bulgaria', - topLevelDomain: ['.bg'], - alpha2Code: 'BG', - alpha3Code: 'BGR', - callingCodes: ['359'], - capital: 'Sofia', - altSpellings: ['BG', 'Republic of Bulgaria', 'Република България'], - region: 'Europe', - }, - { - name: 'Burkina Faso', - topLevelDomain: ['.bf'], - alpha2Code: 'BF', - alpha3Code: 'BFA', - callingCodes: ['226'], - capital: 'Ouagadougou', - altSpellings: ['BF'], - region: 'Africa', - }, - { - name: 'Burundi', - topLevelDomain: ['.bi'], - alpha2Code: 'BI', - alpha3Code: 'BDI', - callingCodes: ['257'], - capital: 'Bujumbura', - altSpellings: [ - 'BI', - 'Republic of Burundi', - "Republika y'Uburundi", - 'République du Burundi', - ], - region: 'Africa', - }, - { - name: 'Cambodia', - topLevelDomain: ['.kh'], - alpha2Code: 'KH', - alpha3Code: 'KHM', - callingCodes: ['855'], - capital: 'Phnom Penh', - altSpellings: ['KH', 'Kingdom of Cambodia'], - region: 'Asia', - }, - { - name: 'Cameroon', - topLevelDomain: ['.cm'], - alpha2Code: 'CM', - alpha3Code: 'CMR', - callingCodes: ['237'], - capital: 'Yaoundé', - altSpellings: ['CM', 'Republic of Cameroon', 'République du Cameroun'], - region: 'Africa', - }, - { - name: 'Canada', - topLevelDomain: ['.ca'], - alpha2Code: 'CA', - alpha3Code: 'CAN', - callingCodes: ['1'], - capital: 'Ottawa', - altSpellings: ['CA'], - region: 'Americas', - }, - { - name: 'Cabo Verde', - topLevelDomain: ['.cv'], - alpha2Code: 'CV', - alpha3Code: 'CPV', - callingCodes: ['238'], - capital: 'Praia', - altSpellings: ['CV', 'Republic of Cabo Verde', 'República de Cabo Verde'], - region: 'Africa', - }, - { - name: 'Cayman Islands', - topLevelDomain: ['.ky'], - alpha2Code: 'KY', - alpha3Code: 'CYM', - callingCodes: ['1'], - capital: 'George Town', - altSpellings: ['KY'], - region: 'Americas', - }, - { - name: 'Central African Republic', - topLevelDomain: ['.cf'], - alpha2Code: 'CF', - alpha3Code: 'CAF', - callingCodes: ['236'], - capital: 'Bangui', - altSpellings: [ - 'CF', - 'Central African Republic', - 'République centrafricaine', - ], - region: 'Africa', - }, - { - name: 'Chad', - topLevelDomain: ['.td'], - alpha2Code: 'TD', - alpha3Code: 'TCD', - callingCodes: ['235'], - capital: "N'Djamena", - altSpellings: ['TD', 'Tchad', 'Republic of Chad', 'République du Tchad'], - region: 'Africa', - }, - { - name: 'Chile', - topLevelDomain: ['.cl'], - alpha2Code: 'CL', - alpha3Code: 'CHL', - callingCodes: ['56'], - capital: 'Santiago', - altSpellings: ['CL', 'Republic of Chile', 'República de Chile'], - region: 'Americas', - }, - { - name: 'China', - topLevelDomain: ['.cn'], - alpha2Code: 'CN', - alpha3Code: 'CHN', - callingCodes: ['86'], - capital: 'Beijing', - altSpellings: [ - 'CN', - 'Zhōngguó', - 'Zhongguo', - 'Zhonghua', - "People's Republic of China", - '中华人民共和国', - 'Zhōnghuá Rénmín Gònghéguó', - ], - region: 'Asia', - }, - { - name: 'Christmas Island', - topLevelDomain: ['.cx'], - alpha2Code: 'CX', - alpha3Code: 'CXR', - callingCodes: ['61'], - capital: 'Flying Fish Cove', - altSpellings: ['CX', 'Territory of Christmas Island'], - region: 'Oceania', - }, - { - name: 'Cocos (Keeling) Islands', - topLevelDomain: ['.cc'], - alpha2Code: 'CC', - alpha3Code: 'CCK', - callingCodes: ['61'], - capital: 'West Island', - altSpellings: [ - 'CC', - 'Territory of the Cocos (Keeling) Islands', - 'Keeling Islands', - ], - region: 'Oceania', - }, - { - name: 'Colombia', - topLevelDomain: ['.co'], - alpha2Code: 'CO', - alpha3Code: 'COL', - callingCodes: ['57'], - capital: 'Bogotá', - altSpellings: ['CO', 'Republic of Colombia', 'República de Colombia'], - region: 'Americas', - }, - { - name: 'Comoros', - topLevelDomain: ['.km'], - alpha2Code: 'KM', - alpha3Code: 'COM', - callingCodes: ['269'], - capital: 'Moroni', - altSpellings: [ - 'KM', - 'Union of the Comoros', - 'Union des Comores', - 'Udzima wa Komori', - 'al-Ittiḥād al-Qumurī', - ], - region: 'Africa', - }, - { - name: 'Congo', - topLevelDomain: ['.cg'], - alpha2Code: 'CG', - alpha3Code: 'COG', - callingCodes: ['242'], - capital: 'Brazzaville', - altSpellings: ['CG', 'Congo-Brazzaville'], - region: 'Africa', - }, - { - name: 'Congo (Democratic Republic of the)', - topLevelDomain: ['.cd'], - alpha2Code: 'CD', - alpha3Code: 'COD', - callingCodes: ['243'], - capital: 'Kinshasa', - altSpellings: ['CD', 'DR Congo', 'Congo-Kinshasa', 'DRC'], - region: 'Africa', - }, - { - name: 'Cook Islands', - topLevelDomain: ['.ck'], - alpha2Code: 'CK', - alpha3Code: 'COK', - callingCodes: ['682'], - capital: 'Avarua', - altSpellings: ['CK', "Kūki 'Āirani"], - region: 'Oceania', - }, - { - name: 'Costa Rica', - topLevelDomain: ['.cr'], - alpha2Code: 'CR', - alpha3Code: 'CRI', - callingCodes: ['506'], - capital: 'San José', - altSpellings: ['CR', 'Republic of Costa Rica', 'República de Costa Rica'], - region: 'Americas', - }, - { - name: 'Croatia', - topLevelDomain: ['.hr'], - alpha2Code: 'HR', - alpha3Code: 'HRV', - callingCodes: ['385'], - capital: 'Zagreb', - altSpellings: [ - 'HR', - 'Hrvatska', - 'Republic of Croatia', - 'Republika Hrvatska', - ], - region: 'Europe', - }, - { - name: 'Cuba', - topLevelDomain: ['.cu'], - alpha2Code: 'CU', - alpha3Code: 'CUB', - callingCodes: ['53'], - capital: 'Havana', - altSpellings: ['CU', 'Republic of Cuba', 'República de Cuba'], - region: 'Americas', - }, - { - name: 'Curaçao', - topLevelDomain: ['.cw'], - alpha2Code: 'CW', - alpha3Code: 'CUW', - callingCodes: ['599'], - capital: 'Willemstad', - altSpellings: [ - 'CW', - 'Curacao', - 'Kòrsou', - 'Country of Curaçao', - 'Land Curaçao', - 'Pais Kòrsou', - ], - region: 'Americas', - }, - { - name: 'Cyprus', - topLevelDomain: ['.cy'], - alpha2Code: 'CY', - alpha3Code: 'CYP', - callingCodes: ['357'], - capital: 'Nicosia', - altSpellings: [ - 'CY', - 'Kýpros', - 'Kıbrıs', - 'Republic of Cyprus', - 'Κυπριακή Δημοκρατία', - 'Kıbrıs Cumhuriyeti', - ], - region: 'Europe', - }, - { - name: 'Czech Republic', - topLevelDomain: ['.cz'], - alpha2Code: 'CZ', - alpha3Code: 'CZE', - callingCodes: ['420'], - capital: 'Prague', - altSpellings: ['CZ', 'Česká republika', 'Česko'], - region: 'Europe', - }, - { - name: 'Denmark', - topLevelDomain: ['.dk'], - alpha2Code: 'DK', - alpha3Code: 'DNK', - callingCodes: ['45'], - capital: 'Copenhagen', - altSpellings: ['DK', 'Danmark', 'Kingdom of Denmark', 'Kongeriget Danmark'], - region: 'Europe', - }, - { - name: 'Djibouti', - topLevelDomain: ['.dj'], - alpha2Code: 'DJ', - alpha3Code: 'DJI', - callingCodes: ['253'], - capital: 'Djibouti', - altSpellings: [ - 'DJ', - 'Jabuuti', - 'Gabuuti', - 'Republic of Djibouti', - 'République de Djibouti', - 'Gabuutih Ummuuno', - 'Jamhuuriyadda Jabuuti', - ], - region: 'Africa', - }, - { - name: 'Dominica', - topLevelDomain: ['.dm'], - alpha2Code: 'DM', - alpha3Code: 'DMA', - callingCodes: ['1'], - capital: 'Roseau', - altSpellings: [ - 'DM', - 'Dominique', - 'Wai‘tu kubuli', - 'Commonwealth of Dominica', - ], - region: 'Americas', - }, - { - name: 'Dominican Republic', - topLevelDomain: ['.do'], - alpha2Code: 'DO', - alpha3Code: 'DOM', - callingCodes: ['1'], - capital: 'Santo Domingo', - altSpellings: ['DO'], - region: 'Americas', - }, - { - name: 'Ecuador', - topLevelDomain: ['.ec'], - alpha2Code: 'EC', - alpha3Code: 'ECU', - callingCodes: ['593'], - capital: 'Quito', - altSpellings: ['EC', 'Republic of Ecuador', 'República del Ecuador'], - region: 'Americas', - }, - { - name: 'Egypt', - topLevelDomain: ['.eg'], - alpha2Code: 'EG', - alpha3Code: 'EGY', - callingCodes: ['20'], - capital: 'Cairo', - altSpellings: ['EG', 'Arab Republic of Egypt'], - region: 'Africa', - }, - { - name: 'El Salvador', - topLevelDomain: ['.sv'], - alpha2Code: 'SV', - alpha3Code: 'SLV', - callingCodes: ['503'], - capital: 'San Salvador', - altSpellings: ['SV', 'Republic of El Salvador', 'República de El Salvador'], - region: 'Americas', - }, - { - name: 'Equatorial Guinea', - topLevelDomain: ['.gq'], - alpha2Code: 'GQ', - alpha3Code: 'GNQ', - callingCodes: ['240'], - capital: 'Malabo', - altSpellings: [ - 'GQ', - 'Republic of Equatorial Guinea', - 'República de Guinea Ecuatorial', - 'République de Guinée équatoriale', - 'República da Guiné Equatorial', - ], - region: 'Africa', - }, - { - name: 'Eritrea', - topLevelDomain: ['.er'], - alpha2Code: 'ER', - alpha3Code: 'ERI', - callingCodes: ['291'], - capital: 'Asmara', - altSpellings: [ - 'ER', - 'State of Eritrea', - 'ሃገረ ኤርትራ', - 'Dawlat Iritriyá', - 'ʾErtrā', - 'Iritriyā', - '', - ], - region: 'Africa', - }, - { - name: 'Estonia', - topLevelDomain: ['.ee'], - alpha2Code: 'EE', - alpha3Code: 'EST', - callingCodes: ['372'], - capital: 'Tallinn', - altSpellings: ['EE', 'Eesti', 'Republic of Estonia', 'Eesti Vabariik'], - region: 'Europe', - }, - { - name: 'Ethiopia', - topLevelDomain: ['.et'], - alpha2Code: 'ET', - alpha3Code: 'ETH', - callingCodes: ['251'], - capital: 'Addis Ababa', - altSpellings: [ - 'ET', - 'ʾĪtyōṗṗyā', - 'Federal Democratic Republic of Ethiopia', - 'የኢትዮጵያ ፌዴራላዊ ዲሞክራሲያዊ ሪፐብሊክ', - ], - region: 'Africa', - }, - { - name: 'Falkland Islands (Malvinas)', - topLevelDomain: ['.fk'], - alpha2Code: 'FK', - alpha3Code: 'FLK', - callingCodes: ['500'], - capital: 'Stanley', - altSpellings: ['FK', 'Islas Malvinas'], - region: 'Americas', - }, - { - name: 'Faroe Islands', - topLevelDomain: ['.fo'], - alpha2Code: 'FO', - alpha3Code: 'FRO', - callingCodes: ['298'], - capital: 'Tórshavn', - altSpellings: ['FO', 'Føroyar', 'Færøerne'], - region: 'Europe', - }, - { - name: 'Fiji', - topLevelDomain: ['.fj'], - alpha2Code: 'FJ', - alpha3Code: 'FJI', - callingCodes: ['679'], - capital: 'Suva', - altSpellings: [ - 'FJ', - 'Viti', - 'Republic of Fiji', - 'Matanitu ko Viti', - 'Fijī Gaṇarājya', - ], - region: 'Oceania', - }, - { - name: 'Finland', - topLevelDomain: ['.fi'], - alpha2Code: 'FI', - alpha3Code: 'FIN', - callingCodes: ['358'], - capital: 'Helsinki', - altSpellings: [ - 'FI', - 'Suomi', - 'Republic of Finland', - 'Suomen tasavalta', - 'Republiken Finland', - ], - region: 'Europe', - }, - { - name: 'France', - topLevelDomain: ['.fr'], - alpha2Code: 'FR', - alpha3Code: 'FRA', - callingCodes: ['33'], - capital: 'Paris', - altSpellings: ['FR', 'French Republic', 'République française'], - region: 'Europe', - }, - { - name: 'French Guiana', - topLevelDomain: ['.gf'], - alpha2Code: 'GF', - alpha3Code: 'GUF', - callingCodes: ['594'], - capital: 'Cayenne', - altSpellings: ['GF', 'Guiana', 'Guyane'], - region: 'Americas', - }, - { - name: 'French Polynesia', - topLevelDomain: ['.pf'], - alpha2Code: 'PF', - alpha3Code: 'PYF', - callingCodes: ['689'], - capital: 'Papeetē', - altSpellings: [ - 'PF', - 'Polynésie française', - 'French Polynesia', - 'Pōrīnetia Farāni', - ], - region: 'Oceania', - }, - { - name: 'French Southern Territories', - topLevelDomain: ['.tf'], - alpha2Code: 'TF', - alpha3Code: 'ATF', - callingCodes: ['262'], - capital: 'Port-aux-Français', - altSpellings: ['TF'], - region: 'Africa', - }, - { - name: 'Gabon', - topLevelDomain: ['.ga'], - alpha2Code: 'GA', - alpha3Code: 'GAB', - callingCodes: ['241'], - capital: 'Libreville', - altSpellings: ['GA', 'Gabonese Republic', 'République Gabonaise'], - region: 'Africa', - }, - { - name: 'Gambia', - topLevelDomain: ['.gm'], - alpha2Code: 'GM', - alpha3Code: 'GMB', - callingCodes: ['220'], - capital: 'Banjul', - altSpellings: ['GM', 'Republic of the Gambia'], - region: 'Africa', - }, - { - name: 'Georgia', - topLevelDomain: ['.ge'], - alpha2Code: 'GE', - alpha3Code: 'GEO', - callingCodes: ['995'], - capital: 'Tbilisi', - altSpellings: ['GE', 'Sakartvelo'], - region: 'Asia', - }, - { - name: 'Germany', - topLevelDomain: ['.de'], - alpha2Code: 'DE', - alpha3Code: 'DEU', - callingCodes: ['49'], - capital: 'Berlin', - altSpellings: [ - 'DE', - 'Federal Republic of Germany', - 'Bundesrepublik Deutschland', - ], - region: 'Europe', - }, - { - name: 'Ghana', - topLevelDomain: ['.gh'], - alpha2Code: 'GH', - alpha3Code: 'GHA', - callingCodes: ['233'], - capital: 'Accra', - altSpellings: ['GH'], - region: 'Africa', - }, - { - name: 'Gibraltar', - topLevelDomain: ['.gi'], - alpha2Code: 'GI', - alpha3Code: 'GIB', - callingCodes: ['350'], - capital: 'Gibraltar', - altSpellings: ['GI'], - region: 'Europe', - }, - { - name: 'Greece', - topLevelDomain: ['.gr'], - alpha2Code: 'GR', - alpha3Code: 'GRC', - callingCodes: ['30'], - capital: 'Athens', - altSpellings: ['GR', 'Elláda', 'Hellenic Republic', 'Ελληνική Δημοκρατία'], - region: 'Europe', - }, - { - name: 'Greenland', - topLevelDomain: ['.gl'], - alpha2Code: 'GL', - alpha3Code: 'GRL', - callingCodes: ['299'], - capital: 'Nuuk', - altSpellings: ['GL', 'Grønland'], - region: 'Americas', - }, - { - name: 'Grenada', - topLevelDomain: ['.gd'], - alpha2Code: 'GD', - alpha3Code: 'GRD', - callingCodes: ['1'], - capital: "St. George's", - altSpellings: ['GD'], - region: 'Americas', - }, - { - name: 'Guadeloupe', - topLevelDomain: ['.gp'], - alpha2Code: 'GP', - alpha3Code: 'GLP', - callingCodes: ['590'], - capital: 'Basse-Terre', - altSpellings: ['GP', 'Gwadloup'], - region: 'Americas', - }, - { - name: 'Guam', - topLevelDomain: ['.gu'], - alpha2Code: 'GU', - alpha3Code: 'GUM', - callingCodes: ['1'], - capital: 'Hagåtña', - altSpellings: ['GU', 'Guåhån'], - region: 'Oceania', - }, - { - name: 'Guatemala', - topLevelDomain: ['.gt'], - alpha2Code: 'GT', - alpha3Code: 'GTM', - callingCodes: ['502'], - capital: 'Guatemala City', - altSpellings: ['GT'], - region: 'Americas', - }, - { - name: 'Guernsey', - topLevelDomain: ['.gg'], - alpha2Code: 'GG', - alpha3Code: 'GGY', - callingCodes: ['44'], - capital: 'St. Peter Port', - altSpellings: ['GG', 'Bailiwick of Guernsey', 'Bailliage de Guernesey'], - region: 'Europe', - }, - { - name: 'Guinea', - topLevelDomain: ['.gn'], - alpha2Code: 'GN', - alpha3Code: 'GIN', - callingCodes: ['224'], - capital: 'Conakry', - altSpellings: ['GN', 'Republic of Guinea', 'République de Guinée'], - region: 'Africa', - }, - { - name: 'Guinea-Bissau', - topLevelDomain: ['.gw'], - alpha2Code: 'GW', - alpha3Code: 'GNB', - callingCodes: ['245'], - capital: 'Bissau', - altSpellings: [ - 'GW', - 'Republic of Guinea-Bissau', - 'República da Guiné-Bissau', - ], - region: 'Africa', - }, - { - name: 'Guyana', - topLevelDomain: ['.gy'], - alpha2Code: 'GY', - alpha3Code: 'GUY', - callingCodes: ['592'], - capital: 'Georgetown', - altSpellings: ['GY', 'Co-operative Republic of Guyana'], - region: 'Americas', - }, - { - name: 'Haiti', - topLevelDomain: ['.ht'], - alpha2Code: 'HT', - alpha3Code: 'HTI', - callingCodes: ['509'], - capital: 'Port-au-Prince', - altSpellings: [ - 'HT', - 'Republic of Haiti', - "République d'Haïti", - 'Repiblik Ayiti', - ], - region: 'Americas', - }, - { - name: 'Heard Island and McDonald Islands', - topLevelDomain: ['.hm', '.aq'], - alpha2Code: 'HM', - alpha3Code: 'HMD', - callingCodes: ['672'], - capital: '', - altSpellings: ['HM'], - region: '', - }, - { - name: 'Holy See', - topLevelDomain: ['.va'], - alpha2Code: 'VA', - alpha3Code: 'VAT', - callingCodes: ['379'], - capital: 'Rome', - altSpellings: ['Sancta Sedes', 'Vatican', 'The Vatican'], - region: 'Europe', - }, - { - name: 'Honduras', - topLevelDomain: ['.hn'], - alpha2Code: 'HN', - alpha3Code: 'HND', - callingCodes: ['504'], - capital: 'Tegucigalpa', - altSpellings: ['HN', 'Republic of Honduras', 'República de Honduras'], - region: 'Americas', - }, - { - name: 'Hong Kong', - topLevelDomain: ['.hk'], - alpha2Code: 'HK', - alpha3Code: 'HKG', - callingCodes: ['852'], - capital: 'City of Victoria', - altSpellings: ['HK', '香港'], - region: 'Asia', - }, - { - name: 'Hungary', - topLevelDomain: ['.hu'], - alpha2Code: 'HU', - alpha3Code: 'HUN', - callingCodes: ['36'], - capital: 'Budapest', - altSpellings: ['HU'], - region: 'Europe', - }, - { - name: 'Iceland', - topLevelDomain: ['.is'], - alpha2Code: 'IS', - alpha3Code: 'ISL', - callingCodes: ['354'], - capital: 'Reykjavík', - altSpellings: ['IS', 'Island', 'Republic of Iceland', 'Lýðveldið Ísland'], - region: 'Europe', - }, - { - name: 'India', - topLevelDomain: ['.in'], - alpha2Code: 'IN', - alpha3Code: 'IND', - callingCodes: ['91'], - capital: 'New Delhi', - altSpellings: ['IN', 'Bhārat', 'Republic of India', 'Bharat Ganrajya'], - region: 'Asia', - }, - { - name: 'Indonesia', - topLevelDomain: ['.id'], - alpha2Code: 'ID', - alpha3Code: 'IDN', - callingCodes: ['62'], - capital: 'Jakarta', - altSpellings: ['ID', 'Republic of Indonesia', 'Republik Indonesia'], - region: 'Asia', - }, - { - name: "Côte d'Ivoire", - topLevelDomain: ['.ci'], - alpha2Code: 'CI', - alpha3Code: 'CIV', - callingCodes: ['225'], - capital: 'Yamoussoukro', - altSpellings: [ - 'CI', - 'Ivory Coast', - "Republic of Côte d'Ivoire", - "République de Côte d'Ivoire", - ], - region: 'Africa', - }, - { - name: 'Iran (Islamic Republic of)', - topLevelDomain: ['.ir'], - alpha2Code: 'IR', - alpha3Code: 'IRN', - callingCodes: ['98'], - capital: 'Tehran', - altSpellings: [ - 'IR', - 'Islamic Republic of Iran', - 'Jomhuri-ye Eslāmi-ye Irān', - ], - region: 'Asia', - }, - { - name: 'Iraq', - topLevelDomain: ['.iq'], - alpha2Code: 'IQ', - alpha3Code: 'IRQ', - callingCodes: ['964'], - capital: 'Baghdad', - altSpellings: ['IQ', 'Republic of Iraq', 'Jumhūriyyat al-‘Irāq'], - region: 'Asia', - }, - { - name: 'Ireland', - topLevelDomain: ['.ie'], - alpha2Code: 'IE', - alpha3Code: 'IRL', - callingCodes: ['353'], - capital: 'Dublin', - altSpellings: ['IE', 'Éire', 'Republic of Ireland', 'Poblacht na hÉireann'], - region: 'Europe', - }, - { - name: 'Isle of Man', - topLevelDomain: ['.im'], - alpha2Code: 'IM', - alpha3Code: 'IMN', - callingCodes: ['44'], - capital: 'Douglas', - altSpellings: ['IM', 'Ellan Vannin', 'Mann', 'Mannin'], - region: 'Europe', - }, - { - name: 'Israel', - topLevelDomain: ['.il'], - alpha2Code: 'IL', - alpha3Code: 'ISR', - callingCodes: ['972'], - capital: 'Jerusalem', - altSpellings: ['IL', 'State of Israel', "Medīnat Yisrā'el"], - region: 'Asia', - }, - { - name: 'Italy', - topLevelDomain: ['.it'], - alpha2Code: 'IT', - alpha3Code: 'ITA', - callingCodes: ['39'], - capital: 'Rome', - altSpellings: ['IT', 'Italian Republic', 'Repubblica italiana'], - region: 'Europe', - }, - { - name: 'Jamaica', - topLevelDomain: ['.jm'], - alpha2Code: 'JM', - alpha3Code: 'JAM', - callingCodes: ['1'], - capital: 'Kingston', - altSpellings: ['JM'], - region: 'Americas', - }, - { - name: 'Japan', - topLevelDomain: ['.jp'], - alpha2Code: 'JP', - alpha3Code: 'JPN', - callingCodes: ['81'], - capital: 'Tokyo', - altSpellings: ['JP', 'Nippon', 'Nihon'], - region: 'Asia', - }, - { - name: 'Jersey', - topLevelDomain: ['.je'], - alpha2Code: 'JE', - alpha3Code: 'JEY', - callingCodes: ['44'], - capital: 'Saint Helier', - altSpellings: [ - 'JE', - 'Bailiwick of Jersey', - 'Bailliage de Jersey', - 'Bailliage dé Jèrri', - ], - region: 'Europe', - }, - { - name: 'Jordan', - topLevelDomain: ['.jo'], - alpha2Code: 'JO', - alpha3Code: 'JOR', - callingCodes: ['962'], - capital: 'Amman', - altSpellings: [ - 'JO', - 'Hashemite Kingdom of Jordan', - 'al-Mamlakah al-Urdunīyah al-Hāshimīyah', - ], - region: 'Asia', - }, - { - name: 'Kazakhstan', - topLevelDomain: ['.kz', '.қаз'], - alpha2Code: 'KZ', - alpha3Code: 'KAZ', - callingCodes: ['76', '77'], - capital: 'Astana', - altSpellings: [ - 'KZ', - 'Qazaqstan', - 'Казахстан', - 'Republic of Kazakhstan', - 'Қазақстан Республикасы', - 'Qazaqstan Respublïkası', - 'Республика Казахстан', - 'Respublika Kazakhstan', - ], - region: 'Asia', - }, - { - name: 'Kenya', - topLevelDomain: ['.ke'], - alpha2Code: 'KE', - alpha3Code: 'KEN', - callingCodes: ['254'], - capital: 'Nairobi', - altSpellings: ['KE', 'Republic of Kenya', 'Jamhuri ya Kenya'], - region: 'Africa', - }, - { - name: 'Kiribati', - topLevelDomain: ['.ki'], - alpha2Code: 'KI', - alpha3Code: 'KIR', - callingCodes: ['686'], - capital: 'South Tarawa', - altSpellings: ['KI', 'Republic of Kiribati', 'Ribaberiki Kiribati'], - region: 'Oceania', - }, - { - name: 'Kuwait', - topLevelDomain: ['.kw'], - alpha2Code: 'KW', - alpha3Code: 'KWT', - callingCodes: ['965'], - capital: 'Kuwait City', - altSpellings: ['KW', 'State of Kuwait', 'Dawlat al-Kuwait'], - region: 'Asia', - }, - { - name: 'Kyrgyzstan', - topLevelDomain: ['.kg'], - alpha2Code: 'KG', - alpha3Code: 'KGZ', - callingCodes: ['996'], - capital: 'Bishkek', - altSpellings: [ - 'KG', - 'Киргизия', - 'Kyrgyz Republic', - 'Кыргыз Республикасы', - 'Kyrgyz Respublikasy', - ], - region: 'Asia', - }, - { - name: "Lao People's Democratic Republic", - topLevelDomain: ['.la'], - alpha2Code: 'LA', - alpha3Code: 'LAO', - callingCodes: ['856'], - capital: 'Vientiane', - altSpellings: [ - 'LA', - 'Lao', - 'Laos', - "Lao People's Democratic Republic", - 'Sathalanalat Paxathipatai Paxaxon Lao', - ], - region: 'Asia', - }, - { - name: 'Latvia', - topLevelDomain: ['.lv'], - alpha2Code: 'LV', - alpha3Code: 'LVA', - callingCodes: ['371'], - capital: 'Riga', - altSpellings: ['LV', 'Republic of Latvia', 'Latvijas Republika'], - region: 'Europe', - }, - { - name: 'Lebanon', - topLevelDomain: ['.lb'], - alpha2Code: 'LB', - alpha3Code: 'LBN', - callingCodes: ['961'], - capital: 'Beirut', - altSpellings: ['LB', 'Lebanese Republic', 'Al-Jumhūrīyah Al-Libnānīyah'], - region: 'Asia', - }, - { - name: 'Lesotho', - topLevelDomain: ['.ls'], - alpha2Code: 'LS', - alpha3Code: 'LSO', - callingCodes: ['266'], - capital: 'Maseru', - altSpellings: ['LS', 'Kingdom of Lesotho', 'Muso oa Lesotho'], - region: 'Africa', - }, - { - name: 'Liberia', - topLevelDomain: ['.lr'], - alpha2Code: 'LR', - alpha3Code: 'LBR', - callingCodes: ['231'], - capital: 'Monrovia', - altSpellings: ['LR', 'Republic of Liberia'], - region: 'Africa', - }, - { - name: 'Libya', - topLevelDomain: ['.ly'], - alpha2Code: 'LY', - alpha3Code: 'LBY', - callingCodes: ['218'], - capital: 'Tripoli', - altSpellings: ['LY', 'State of Libya', 'Dawlat Libya'], - region: 'Africa', - }, - { - name: 'Liechtenstein', - topLevelDomain: ['.li'], - alpha2Code: 'LI', - alpha3Code: 'LIE', - callingCodes: ['423'], - capital: 'Vaduz', - altSpellings: [ - 'LI', - 'Principality of Liechtenstein', - 'Fürstentum Liechtenstein', - ], - region: 'Europe', - }, - { - name: 'Lithuania', - topLevelDomain: ['.lt'], - alpha2Code: 'LT', - alpha3Code: 'LTU', - callingCodes: ['370'], - capital: 'Vilnius', - altSpellings: ['LT', 'Republic of Lithuania', 'Lietuvos Respublika'], - region: 'Europe', - }, - { - name: 'Luxembourg', - topLevelDomain: ['.lu'], - alpha2Code: 'LU', - alpha3Code: 'LUX', - callingCodes: ['352'], - capital: 'Luxembourg', - altSpellings: [ - 'LU', - 'Grand Duchy of Luxembourg', - 'Grand-Duché de Luxembourg', - 'Großherzogtum Luxemburg', - 'Groussherzogtum Lëtzebuerg', - ], - region: 'Europe', - }, - { - name: 'Macao', - topLevelDomain: ['.mo'], - alpha2Code: 'MO', - alpha3Code: 'MAC', - callingCodes: ['853'], - capital: '', - altSpellings: [ - 'MO', - '澳门', - "Macao Special Administrative Region of the People's Republic of China", - '中華人民共和國澳門特別行政區', - 'Região Administrativa Especial de Macau da República Popular da China', - ], - region: 'Asia', - }, - { - name: 'Macedonia (the former Yugoslav Republic of)', - topLevelDomain: ['.mk'], - alpha2Code: 'MK', - alpha3Code: 'MKD', - callingCodes: ['389'], - capital: 'Skopje', - altSpellings: ['MK', 'Republic of Macedonia', 'Република Македонија'], - region: 'Europe', - }, - { - name: 'Madagascar', - topLevelDomain: ['.mg'], - alpha2Code: 'MG', - alpha3Code: 'MDG', - callingCodes: ['261'], - capital: 'Antananarivo', - altSpellings: [ - 'MG', - 'Republic of Madagascar', - "Repoblikan'i Madagasikara", - 'République de Madagascar', - ], - region: 'Africa', - }, - { - name: 'Malawi', - topLevelDomain: ['.mw'], - alpha2Code: 'MW', - alpha3Code: 'MWI', - callingCodes: ['265'], - capital: 'Lilongwe', - altSpellings: ['MW', 'Republic of Malawi'], - region: 'Africa', - }, - { - name: 'Malaysia', - topLevelDomain: ['.my'], - alpha2Code: 'MY', - alpha3Code: 'MYS', - callingCodes: ['60'], - capital: 'Kuala Lumpur', - altSpellings: ['MY'], - region: 'Asia', - }, - { - name: 'Maldives', - topLevelDomain: ['.mv'], - alpha2Code: 'MV', - alpha3Code: 'MDV', - callingCodes: ['960'], - capital: 'Malé', - altSpellings: [ - 'MV', - 'Maldive Islands', - 'Republic of the Maldives', - 'Dhivehi Raajjeyge Jumhooriyya', - ], - region: 'Asia', - }, - { - name: 'Mali', - topLevelDomain: ['.ml'], - alpha2Code: 'ML', - alpha3Code: 'MLI', - callingCodes: ['223'], - capital: 'Bamako', - altSpellings: ['ML', 'Republic of Mali', 'République du Mali'], - region: 'Africa', - }, - { - name: 'Malta', - topLevelDomain: ['.mt'], - alpha2Code: 'MT', - alpha3Code: 'MLT', - callingCodes: ['356'], - capital: 'Valletta', - altSpellings: ['MT', 'Republic of Malta', "Repubblika ta' Malta"], - region: 'Europe', - }, - { - name: 'Marshall Islands', - topLevelDomain: ['.mh'], - alpha2Code: 'MH', - alpha3Code: 'MHL', - callingCodes: ['692'], - capital: 'Majuro', - altSpellings: [ - 'MH', - 'Republic of the Marshall Islands', - 'Aolepān Aorōkin M̧ajeļ', - ], - region: 'Oceania', - }, - { - name: 'Martinique', - topLevelDomain: ['.mq'], - alpha2Code: 'MQ', - alpha3Code: 'MTQ', - callingCodes: ['596'], - capital: 'Fort-de-France', - altSpellings: ['MQ'], - region: 'Americas', - }, - { - name: 'Mauritania', - topLevelDomain: ['.mr'], - alpha2Code: 'MR', - alpha3Code: 'MRT', - callingCodes: ['222'], - capital: 'Nouakchott', - altSpellings: [ - 'MR', - 'Islamic Republic of Mauritania', - 'al-Jumhūriyyah al-ʾIslāmiyyah al-Mūrītāniyyah', - ], - region: 'Africa', - }, - { - name: 'Mauritius', - topLevelDomain: ['.mu'], - alpha2Code: 'MU', - alpha3Code: 'MUS', - callingCodes: ['230'], - capital: 'Port Louis', - altSpellings: ['MU', 'Republic of Mauritius', 'République de Maurice'], - region: 'Africa', - }, - { - name: 'Mayotte', - topLevelDomain: ['.yt'], - alpha2Code: 'YT', - alpha3Code: 'MYT', - callingCodes: ['262'], - capital: 'Mamoudzou', - altSpellings: ['YT', 'Department of Mayotte', 'Département de Mayotte'], - region: 'Africa', - }, - { - name: 'Mexico', - topLevelDomain: ['.mx'], - alpha2Code: 'MX', - alpha3Code: 'MEX', - callingCodes: ['52'], - capital: 'Mexico City', - altSpellings: [ - 'MX', - 'Mexicanos', - 'United Mexican States', - 'Estados Unidos Mexicanos', - ], - region: 'Americas', - }, - { - name: 'Micronesia (Federated States of)', - topLevelDomain: ['.fm'], - alpha2Code: 'FM', - alpha3Code: 'FSM', - callingCodes: ['691'], - capital: 'Palikir', - altSpellings: ['FM', 'Federated States of Micronesia'], - region: 'Oceania', - }, - { - name: 'Moldova (Republic of)', - topLevelDomain: ['.md'], - alpha2Code: 'MD', - alpha3Code: 'MDA', - callingCodes: ['373'], - capital: 'Chișinău', - altSpellings: ['MD', 'Republic of Moldova', 'Republica Moldova'], - region: 'Europe', - }, - { - name: 'Monaco', - topLevelDomain: ['.mc'], - alpha2Code: 'MC', - alpha3Code: 'MCO', - callingCodes: ['377'], - capital: 'Monaco', - altSpellings: ['MC', 'Principality of Monaco', 'Principauté de Monaco'], - region: 'Europe', - }, - { - name: 'Mongolia', - topLevelDomain: ['.mn'], - alpha2Code: 'MN', - alpha3Code: 'MNG', - callingCodes: ['976'], - capital: 'Ulan Bator', - altSpellings: ['MN'], - region: 'Asia', - }, - { - name: 'Montenegro', - topLevelDomain: ['.me'], - alpha2Code: 'ME', - alpha3Code: 'MNE', - callingCodes: ['382'], - capital: 'Podgorica', - altSpellings: ['ME', 'Crna Gora'], - region: 'Europe', - }, - { - name: 'Montserrat', - topLevelDomain: ['.ms'], - alpha2Code: 'MS', - alpha3Code: 'MSR', - callingCodes: ['1'], - capital: 'Plymouth', - altSpellings: ['MS'], - region: 'Americas', - }, - { - name: 'Morocco', - topLevelDomain: ['.ma'], - alpha2Code: 'MA', - alpha3Code: 'MAR', - callingCodes: ['212'], - capital: 'Rabat', - altSpellings: ['MA', 'Kingdom of Morocco', 'Al-Mamlakah al-Maġribiyah'], - region: 'Africa', - }, - { - name: 'Mozambique', - topLevelDomain: ['.mz'], - alpha2Code: 'MZ', - alpha3Code: 'MOZ', - callingCodes: ['258'], - capital: 'Maputo', - altSpellings: ['MZ', 'Republic of Mozambique', 'República de Moçambique'], - region: 'Africa', - }, - { - name: 'Myanmar', - topLevelDomain: ['.mm'], - alpha2Code: 'MM', - alpha3Code: 'MMR', - callingCodes: ['95'], - capital: 'Naypyidaw', - altSpellings: [ - 'MM', - 'Burma', - 'Republic of the Union of Myanmar', - 'Pyidaunzu Thanmăda Myăma Nainngandaw', - ], - region: 'Asia', - }, - { - name: 'Namibia', - topLevelDomain: ['.na'], - alpha2Code: 'NA', - alpha3Code: 'NAM', - callingCodes: ['264'], - capital: 'Windhoek', - altSpellings: ['NA', 'Namibië', 'Republic of Namibia'], - region: 'Africa', - }, - { - name: 'Nauru', - topLevelDomain: ['.nr'], - alpha2Code: 'NR', - alpha3Code: 'NRU', - callingCodes: ['674'], - capital: 'Yaren', - altSpellings: [ - 'NR', - 'Naoero', - 'Pleasant Island', - 'Republic of Nauru', - 'Ripublik Naoero', - ], - region: 'Oceania', - }, - { - name: 'Nepal', - topLevelDomain: ['.np'], - alpha2Code: 'NP', - alpha3Code: 'NPL', - callingCodes: ['977'], - capital: 'Kathmandu', - altSpellings: [ - 'NP', - 'Federal Democratic Republic of Nepal', - 'Loktāntrik Ganatantra Nepāl', - ], - region: 'Asia', - }, - { - name: 'Netherlands', - topLevelDomain: ['.nl'], - alpha2Code: 'NL', - alpha3Code: 'NLD', - callingCodes: ['31'], - capital: 'Amsterdam', - altSpellings: ['NL', 'Holland', 'Nederland'], - region: 'Europe', - }, - { - name: 'New Caledonia', - topLevelDomain: ['.nc'], - alpha2Code: 'NC', - alpha3Code: 'NCL', - callingCodes: ['687'], - capital: 'Nouméa', - altSpellings: ['NC'], - region: 'Oceania', - }, - { - name: 'New Zealand', - topLevelDomain: ['.nz'], - alpha2Code: 'NZ', - alpha3Code: 'NZL', - callingCodes: ['64'], - capital: 'Wellington', - altSpellings: ['NZ', 'Aotearoa'], - region: 'Oceania', - }, - { - name: 'Nicaragua', - topLevelDomain: ['.ni'], - alpha2Code: 'NI', - alpha3Code: 'NIC', - callingCodes: ['505'], - capital: 'Managua', - altSpellings: ['NI', 'Republic of Nicaragua', 'República de Nicaragua'], - region: 'Americas', - }, - { - name: 'Niger', - topLevelDomain: ['.ne'], - alpha2Code: 'NE', - alpha3Code: 'NER', - callingCodes: ['227'], - capital: 'Niamey', - altSpellings: ['NE', 'Nijar', 'Republic of Niger', 'République du Niger'], - region: 'Africa', - }, - { - name: 'Nigeria', - topLevelDomain: ['.ng'], - alpha2Code: 'NG', - alpha3Code: 'NGA', - callingCodes: ['234'], - capital: 'Abuja', - altSpellings: ['NG', 'Nijeriya', 'Naíjíríà', 'Federal Republic of Nigeria'], - region: 'Africa', - }, - { - name: 'Niue', - topLevelDomain: ['.nu'], - alpha2Code: 'NU', - alpha3Code: 'NIU', - callingCodes: ['683'], - capital: 'Alofi', - altSpellings: ['NU'], - region: 'Oceania', - }, - { - name: 'Norfolk Island', - topLevelDomain: ['.nf'], - alpha2Code: 'NF', - alpha3Code: 'NFK', - callingCodes: ['672'], - capital: 'Kingston', - altSpellings: [ - 'NF', - 'Territory of Norfolk Island', - "Teratri of Norf'k Ailen", - ], - region: 'Oceania', - }, - { - name: "Korea (Democratic People's Republic of)", - topLevelDomain: ['.kp'], - alpha2Code: 'KP', - alpha3Code: 'PRK', - callingCodes: ['850'], - capital: 'Pyongyang', - altSpellings: [ - 'KP', - "Democratic People's Republic of Korea", - '조선민주주의인민공화국', - 'Chosŏn Minjujuŭi Inmin Konghwaguk', - ], - region: 'Asia', - }, - { - name: 'Northern Mariana Islands', - topLevelDomain: ['.mp'], - alpha2Code: 'MP', - alpha3Code: 'MNP', - callingCodes: ['1'], - capital: 'Saipan', - altSpellings: [ - 'MP', - 'Commonwealth of the Northern Mariana Islands', - 'Sankattan Siha Na Islas Mariånas', - ], - region: 'Oceania', - }, - { - name: 'Norway', - topLevelDomain: ['.no'], - alpha2Code: 'NO', - alpha3Code: 'NOR', - callingCodes: ['47'], - capital: 'Oslo', - altSpellings: [ - 'NO', - 'Norge', - 'Noreg', - 'Kingdom of Norway', - 'Kongeriket Norge', - 'Kongeriket Noreg', - ], - region: 'Europe', - }, - { - name: 'Oman', - topLevelDomain: ['.om'], - alpha2Code: 'OM', - alpha3Code: 'OMN', - callingCodes: ['968'], - capital: 'Muscat', - altSpellings: ['OM', 'Sultanate of Oman', 'Salṭanat ʻUmān'], - region: 'Asia', - }, - { - name: 'Pakistan', - topLevelDomain: ['.pk'], - alpha2Code: 'PK', - alpha3Code: 'PAK', - callingCodes: ['92'], - capital: 'Islamabad', - altSpellings: [ - 'PK', - 'Pākistān', - 'Islamic Republic of Pakistan', - "Islāmī Jumhūriya'eh Pākistān", - ], - region: 'Asia', - }, - { - name: 'Palau', - topLevelDomain: ['.pw'], - alpha2Code: 'PW', - alpha3Code: 'PLW', - callingCodes: ['680'], - capital: 'Ngerulmud', - altSpellings: ['PW', 'Republic of Palau', 'Beluu er a Belau'], - region: 'Oceania', - }, - { - name: 'Palestine, State of', - topLevelDomain: ['.ps'], - alpha2Code: 'PS', - alpha3Code: 'PSE', - callingCodes: ['970'], - capital: 'Ramallah', - altSpellings: ['PS', 'State of Palestine', 'Dawlat Filasṭin'], - region: 'Asia', - }, - { - name: 'Panama', - topLevelDomain: ['.pa'], - alpha2Code: 'PA', - alpha3Code: 'PAN', - callingCodes: ['507'], - capital: 'Panama City', - altSpellings: ['PA', 'Republic of Panama', 'República de Panamá'], - region: 'Americas', - }, - { - name: 'Papua New Guinea', - topLevelDomain: ['.pg'], - alpha2Code: 'PG', - alpha3Code: 'PNG', - callingCodes: ['675'], - capital: 'Port Moresby', - altSpellings: [ - 'PG', - 'Independent State of Papua New Guinea', - 'Independen Stet bilong Papua Niugini', - ], - region: 'Oceania', - }, - { - name: 'Paraguay', - topLevelDomain: ['.py'], - alpha2Code: 'PY', - alpha3Code: 'PRY', - callingCodes: ['595'], - capital: 'Asunción', - altSpellings: [ - 'PY', - 'Republic of Paraguay', - 'República del Paraguay', - 'Tetã Paraguái', - ], - region: 'Americas', - }, - { - name: 'Peru', - topLevelDomain: ['.pe'], - alpha2Code: 'PE', - alpha3Code: 'PER', - callingCodes: ['51'], - capital: 'Lima', - altSpellings: ['PE', 'Republic of Peru', ' República del Perú'], - region: 'Americas', - }, - { - name: 'Philippines', - topLevelDomain: ['.ph'], - alpha2Code: 'PH', - alpha3Code: 'PHL', - callingCodes: ['63'], - capital: 'Manila', - altSpellings: [ - 'PH', - 'Republic of the Philippines', - 'Repúblika ng Pilipinas', - ], - region: 'Asia', - }, - { - name: 'Pitcairn', - topLevelDomain: ['.pn'], - alpha2Code: 'PN', - alpha3Code: 'PCN', - callingCodes: ['64'], - capital: 'Adamstown', - altSpellings: ['PN', 'Pitcairn Henderson Ducie and Oeno Islands'], - region: 'Oceania', - }, - { - name: 'Poland', - topLevelDomain: ['.pl'], - alpha2Code: 'PL', - alpha3Code: 'POL', - callingCodes: ['48'], - capital: 'Warsaw', - altSpellings: ['PL', 'Republic of Poland', 'Rzeczpospolita Polska'], - region: 'Europe', - }, - { - name: 'Portugal', - topLevelDomain: ['.pt'], - alpha2Code: 'PT', - alpha3Code: 'PRT', - callingCodes: ['351'], - capital: 'Lisbon', - altSpellings: [ - 'PT', - 'Portuguesa', - 'Portuguese Republic', - 'República Portuguesa', - ], - region: 'Europe', - }, - { - name: 'Puerto Rico', - topLevelDomain: ['.pr'], - alpha2Code: 'PR', - alpha3Code: 'PRI', - callingCodes: ['1'], - capital: 'San Juan', - altSpellings: [ - 'PR', - 'Commonwealth of Puerto Rico', - 'Estado Libre Asociado de Puerto Rico', - ], - region: 'Americas', - }, - { - name: 'Qatar', - topLevelDomain: ['.qa'], - alpha2Code: 'QA', - alpha3Code: 'QAT', - callingCodes: ['974'], - capital: 'Doha', - altSpellings: ['QA', 'State of Qatar', 'Dawlat Qaṭar'], - region: 'Asia', - }, - { - name: 'Republic of Kosovo', - topLevelDomain: [''], - alpha2Code: 'XK', - alpha3Code: 'KOS', - callingCodes: ['383'], - capital: 'Pristina', - altSpellings: ['XK', 'Република Косово'], - region: 'Europe', - }, - { - name: 'Réunion', - topLevelDomain: ['.re'], - alpha2Code: 'RE', - alpha3Code: 'REU', - callingCodes: ['262'], - capital: 'Saint-Denis', - altSpellings: ['RE', 'Reunion'], - region: 'Africa', - }, - { - name: 'Romania', - topLevelDomain: ['.ro'], - alpha2Code: 'RO', - alpha3Code: 'ROU', - callingCodes: ['40'], - capital: 'Bucharest', - altSpellings: ['RO', 'Rumania', 'Roumania', 'România'], - region: 'Europe', - }, - { - name: 'Russian Federation', - topLevelDomain: ['.ru'], - alpha2Code: 'RU', - alpha3Code: 'RUS', - callingCodes: ['7'], - capital: 'Moscow', - altSpellings: [ - 'RU', - 'Rossiya', - 'Russian Federation', - 'Российская Федерация', - 'Rossiyskaya Federatsiya', - ], - region: 'Europe', - }, - { - name: 'Rwanda', - topLevelDomain: ['.rw'], - alpha2Code: 'RW', - alpha3Code: 'RWA', - callingCodes: ['250'], - capital: 'Kigali', - altSpellings: [ - 'RW', - 'Republic of Rwanda', - "Repubulika y'u Rwanda", - 'République du Rwanda', - ], - region: 'Africa', - }, - { - name: 'Saint Barthélemy', - topLevelDomain: ['.bl'], - alpha2Code: 'BL', - alpha3Code: 'BLM', - callingCodes: ['590'], - capital: 'Gustavia', - altSpellings: [ - 'BL', - 'St. Barthelemy', - 'Collectivity of Saint Barthélemy', - 'Collectivité de Saint-Barthélemy', - ], - region: 'Americas', - }, - { - name: 'Saint Helena, Ascension and Tristan da Cunha', - topLevelDomain: ['.sh'], - alpha2Code: 'SH', - alpha3Code: 'SHN', - callingCodes: ['290'], - capital: 'Jamestown', - altSpellings: ['SH'], - region: 'Africa', - }, - { - name: 'Saint Kitts and Nevis', - topLevelDomain: ['.kn'], - alpha2Code: 'KN', - alpha3Code: 'KNA', - callingCodes: ['1'], - capital: 'Basseterre', - altSpellings: ['KN', 'Federation of Saint Christopher and Nevis'], - region: 'Americas', - }, - { - name: 'Saint Lucia', - topLevelDomain: ['.lc'], - alpha2Code: 'LC', - alpha3Code: 'LCA', - callingCodes: ['1'], - capital: 'Castries', - altSpellings: ['LC'], - region: 'Americas', - }, - { - name: 'Saint Martin (French part)', - topLevelDomain: ['.mf', '.fr', '.gp'], - alpha2Code: 'MF', - alpha3Code: 'MAF', - callingCodes: ['590'], - capital: 'Marigot', - altSpellings: [ - 'MF', - 'Collectivity of Saint Martin', - 'Collectivité de Saint-Martin', - ], - region: 'Americas', - }, - { - name: 'Saint Pierre and Miquelon', - topLevelDomain: ['.pm'], - alpha2Code: 'PM', - alpha3Code: 'SPM', - callingCodes: ['508'], - capital: 'Saint-Pierre', - altSpellings: [ - 'PM', - 'Collectivité territoriale de Saint-Pierre-et-Miquelon', - ], - region: 'Americas', - }, - { - name: 'Saint Vincent and the Grenadines', - topLevelDomain: ['.vc'], - alpha2Code: 'VC', - alpha3Code: 'VCT', - callingCodes: ['1'], - capital: 'Kingstown', - altSpellings: ['VC'], - region: 'Americas', - }, - { - name: 'Samoa', - topLevelDomain: ['.ws'], - alpha2Code: 'WS', - alpha3Code: 'WSM', - callingCodes: ['685'], - capital: 'Apia', - altSpellings: [ - 'WS', - 'Independent State of Samoa', - 'Malo Saʻoloto Tutoʻatasi o Sāmoa', - ], - region: 'Oceania', - }, - { - name: 'San Marino', - topLevelDomain: ['.sm'], - alpha2Code: 'SM', - alpha3Code: 'SMR', - callingCodes: ['378'], - capital: 'City of San Marino', - altSpellings: ['SM', 'Republic of San Marino', 'Repubblica di San Marino'], - region: 'Europe', - }, - { - name: 'Sao Tome and Principe', - topLevelDomain: ['.st'], - alpha2Code: 'ST', - alpha3Code: 'STP', - callingCodes: ['239'], - capital: 'São Tomé', - altSpellings: [ - 'ST', - 'Democratic Republic of São Tomé and Príncipe', - 'República Democrática de São Tomé e Príncipe', - ], - region: 'Africa', - }, - { - name: 'Saudi Arabia', - topLevelDomain: ['.sa'], - alpha2Code: 'SA', - alpha3Code: 'SAU', - callingCodes: ['966'], - capital: 'Riyadh', - altSpellings: [ - 'SA', - 'Kingdom of Saudi Arabia', - 'Al-Mamlakah al-‘Arabiyyah as-Su‘ūdiyyah', - ], - region: 'Asia', - }, - { - name: 'Senegal', - topLevelDomain: ['.sn'], - alpha2Code: 'SN', - alpha3Code: 'SEN', - callingCodes: ['221'], - capital: 'Dakar', - altSpellings: ['SN', 'Republic of Senegal', 'République du Sénégal'], - region: 'Africa', - }, - { - name: 'Serbia', - topLevelDomain: ['.rs'], - alpha2Code: 'RS', - alpha3Code: 'SRB', - callingCodes: ['381'], - capital: 'Belgrade', - altSpellings: [ - 'RS', - 'Srbija', - 'Republic of Serbia', - 'Република Србија', - 'Republika Srbija', - ], - region: 'Europe', - }, - { - name: 'Seychelles', - topLevelDomain: ['.sc'], - alpha2Code: 'SC', - alpha3Code: 'SYC', - callingCodes: ['248'], - capital: 'Victoria', - altSpellings: [ - 'SC', - 'Republic of Seychelles', - 'Repiblik Sesel', - 'République des Seychelles', - ], - region: 'Africa', - }, - { - name: 'Sierra Leone', - topLevelDomain: ['.sl'], - alpha2Code: 'SL', - alpha3Code: 'SLE', - callingCodes: ['232'], - capital: 'Freetown', - altSpellings: ['SL', 'Republic of Sierra Leone'], - region: 'Africa', - }, - { - name: 'Singapore', - topLevelDomain: ['.sg'], - alpha2Code: 'SG', - alpha3Code: 'SGP', - callingCodes: ['65'], - capital: 'Singapore', - altSpellings: ['SG', 'Singapura', 'Republik Singapura', '新加坡共和国'], - region: 'Asia', - }, - { - name: 'Sint Maarten (Dutch part)', - topLevelDomain: ['.sx'], - alpha2Code: 'SX', - alpha3Code: 'SXM', - callingCodes: ['1'], - capital: 'Philipsburg', - altSpellings: ['SX'], - region: 'Americas', - }, - { - name: 'Slovakia', - topLevelDomain: ['.sk'], - alpha2Code: 'SK', - alpha3Code: 'SVK', - callingCodes: ['421'], - capital: 'Bratislava', - altSpellings: ['SK', 'Slovak Republic', 'Slovenská republika'], - region: 'Europe', - }, - { - name: 'Slovenia', - topLevelDomain: ['.si'], - alpha2Code: 'SI', - alpha3Code: 'SVN', - callingCodes: ['386'], - capital: 'Ljubljana', - altSpellings: ['SI', 'Republic of Slovenia', 'Republika Slovenija'], - region: 'Europe', - }, - { - name: 'Solomon Islands', - topLevelDomain: ['.sb'], - alpha2Code: 'SB', - alpha3Code: 'SLB', - callingCodes: ['677'], - capital: 'Honiara', - altSpellings: ['SB'], - region: 'Oceania', - }, - { - name: 'Somalia', - topLevelDomain: ['.so'], - alpha2Code: 'SO', - alpha3Code: 'SOM', - callingCodes: ['252'], - capital: 'Mogadishu', - altSpellings: [ - 'SO', - 'aṣ-Ṣūmāl', - 'Federal Republic of Somalia', - 'Jamhuuriyadda Federaalka Soomaaliya', - 'Jumhūriyyat aṣ-Ṣūmāl al-Fiderāliyya', - ], - region: 'Africa', - }, - { - name: 'South Africa', - topLevelDomain: ['.za'], - alpha2Code: 'ZA', - alpha3Code: 'ZAF', - callingCodes: ['27'], - capital: 'Pretoria', - altSpellings: ['ZA', 'RSA', 'Suid-Afrika', 'Republic of South Africa'], - region: 'Africa', - }, - { - name: 'South Georgia and the South Sandwich Islands', - topLevelDomain: ['.gs'], - alpha2Code: 'GS', - alpha3Code: 'SGS', - callingCodes: ['500'], - capital: 'King Edward Point', - altSpellings: ['GS', 'South Georgia and the South Sandwich Islands'], - region: 'Americas', - }, - { - name: 'Korea (Republic of)', - topLevelDomain: ['.kr'], - alpha2Code: 'KR', - alpha3Code: 'KOR', - callingCodes: ['82'], - capital: 'Seoul', - altSpellings: ['KR', 'Republic of Korea'], - region: 'Asia', - }, - { - name: 'South Sudan', - topLevelDomain: ['.ss'], - alpha2Code: 'SS', - alpha3Code: 'SSD', - callingCodes: ['211'], - capital: 'Juba', - altSpellings: ['SS'], - region: 'Africa', - }, - { - name: 'Spain', - topLevelDomain: ['.es'], - alpha2Code: 'ES', - alpha3Code: 'ESP', - callingCodes: ['34'], - capital: 'Madrid', - altSpellings: ['ES', 'Kingdom of Spain', 'Reino de España'], - region: 'Europe', - }, - { - name: 'Sri Lanka', - topLevelDomain: ['.lk'], - alpha2Code: 'LK', - alpha3Code: 'LKA', - callingCodes: ['94'], - capital: 'Colombo', - altSpellings: [ - 'LK', - 'ilaṅkai', - 'Democratic Socialist Republic of Sri Lanka', - ], - region: 'Asia', - }, - { - name: 'Sudan', - topLevelDomain: ['.sd'], - alpha2Code: 'SD', - alpha3Code: 'SDN', - callingCodes: ['249'], - capital: 'Khartoum', - altSpellings: ['SD', 'Republic of the Sudan', 'Jumhūrīyat as-Sūdān'], - region: 'Africa', - }, - { - name: 'Suriname', - topLevelDomain: ['.sr'], - alpha2Code: 'SR', - alpha3Code: 'SUR', - callingCodes: ['597'], - capital: 'Paramaribo', - altSpellings: [ - 'SR', - 'Sarnam', - 'Sranangron', - 'Republic of Suriname', - 'Republiek Suriname', - ], - region: 'Americas', - }, - { - name: 'Svalbard and Jan Mayen', - topLevelDomain: ['.sj'], - alpha2Code: 'SJ', - alpha3Code: 'SJM', - callingCodes: ['47'], - capital: 'Longyearbyen', - altSpellings: ['SJ', 'Svalbard and Jan Mayen Islands'], - region: 'Europe', - }, - { - name: 'Swaziland', - topLevelDomain: ['.sz'], - alpha2Code: 'SZ', - alpha3Code: 'SWZ', - callingCodes: ['268'], - capital: 'Lobamba', - altSpellings: [ - 'SZ', - 'weSwatini', - 'Swatini', - 'Ngwane', - 'Kingdom of Swaziland', - 'Umbuso waseSwatini', - ], - region: 'Africa', - }, - { - name: 'Sweden', - topLevelDomain: ['.se'], - alpha2Code: 'SE', - alpha3Code: 'SWE', - callingCodes: ['46'], - capital: 'Stockholm', - altSpellings: ['SE', 'Kingdom of Sweden', 'Konungariket Sverige'], - region: 'Europe', - }, - { - name: 'Switzerland', - topLevelDomain: ['.ch'], - alpha2Code: 'CH', - alpha3Code: 'CHE', - callingCodes: ['41'], - capital: 'Bern', - altSpellings: [ - 'CH', - 'Swiss Confederation', - 'Schweiz', - 'Suisse', - 'Svizzera', - 'Svizra', - ], - region: 'Europe', - }, - { - name: 'Syrian Arab Republic', - topLevelDomain: ['.sy'], - alpha2Code: 'SY', - alpha3Code: 'SYR', - callingCodes: ['963'], - capital: 'Damascus', - altSpellings: [ - 'SY', - 'Syrian Arab Republic', - 'Al-Jumhūrīyah Al-ʻArabīyah As-Sūrīyah', - ], - region: 'Asia', - }, - { - name: 'Taiwan', - topLevelDomain: ['.tw'], - alpha2Code: 'TW', - alpha3Code: 'TWN', - callingCodes: ['886'], - capital: 'Taipei', - altSpellings: [ - 'TW', - 'Táiwān', - 'Republic of China', - '中華民國', - 'Zhōnghuá Mínguó', - ], - region: 'Asia', - }, - { - name: 'Tajikistan', - topLevelDomain: ['.tj'], - alpha2Code: 'TJ', - alpha3Code: 'TJK', - callingCodes: ['992'], - capital: 'Dushanbe', - altSpellings: [ - 'TJ', - 'Toçikiston', - 'Republic of Tajikistan', - 'Ҷумҳурии Тоҷикистон', - 'Çumhuriyi Toçikiston', - ], - region: 'Asia', - }, - { - name: 'Tanzania, United Republic of', - topLevelDomain: ['.tz'], - alpha2Code: 'TZ', - alpha3Code: 'TZA', - callingCodes: ['255'], - capital: 'Dodoma', - altSpellings: [ - 'TZ', - 'United Republic of Tanzania', - 'Jamhuri ya Muungano wa Tanzania', - ], - region: 'Africa', - }, - { - name: 'Thailand', - topLevelDomain: ['.th'], - alpha2Code: 'TH', - alpha3Code: 'THA', - callingCodes: ['66'], - capital: 'Bangkok', - altSpellings: [ - 'TH', - 'Prathet', - 'Thai', - 'Kingdom of Thailand', - 'ราชอาณาจักรไทย', - 'Ratcha Anachak Thai', - ], - region: 'Asia', - }, - { - name: 'Timor-Leste', - topLevelDomain: ['.tl'], - alpha2Code: 'TL', - alpha3Code: 'TLS', - callingCodes: ['670'], - capital: 'Dili', - altSpellings: [ - 'TL', - 'East Timor', - 'Democratic Republic of Timor-Leste', - 'República Democrática de Timor-Leste', - 'Repúblika Demokrátika Timór-Leste', - ], - region: 'Asia', - }, - { - name: 'Togo', - topLevelDomain: ['.tg'], - alpha2Code: 'TG', - alpha3Code: 'TGO', - callingCodes: ['228'], - capital: 'Lomé', - altSpellings: [ - 'TG', - 'Togolese', - 'Togolese Republic', - 'République Togolaise', - ], - region: 'Africa', - }, - { - name: 'Tokelau', - topLevelDomain: ['.tk'], - alpha2Code: 'TK', - alpha3Code: 'TKL', - callingCodes: ['690'], - capital: 'Fakaofo', - altSpellings: ['TK'], - region: 'Oceania', - }, - { - name: 'Tonga', - topLevelDomain: ['.to'], - alpha2Code: 'TO', - alpha3Code: 'TON', - callingCodes: ['676'], - capital: "Nuku'alofa", - altSpellings: ['TO'], - region: 'Oceania', - }, - { - name: 'Trinidad and Tobago', - topLevelDomain: ['.tt'], - alpha2Code: 'TT', - alpha3Code: 'TTO', - callingCodes: ['1'], - capital: 'Port of Spain', - altSpellings: ['TT', 'Republic of Trinidad and Tobago'], - region: 'Americas', - }, - { - name: 'Tunisia', - topLevelDomain: ['.tn'], - alpha2Code: 'TN', - alpha3Code: 'TUN', - callingCodes: ['216'], - capital: 'Tunis', - altSpellings: ['TN', 'Republic of Tunisia', 'al-Jumhūriyyah at-Tūnisiyyah'], - region: 'Africa', - }, - { - name: 'Turkey', - topLevelDomain: ['.tr'], - alpha2Code: 'TR', - alpha3Code: 'TUR', - callingCodes: ['90'], - capital: 'Ankara', - altSpellings: [ - 'TR', - 'Turkiye', - 'Republic of Turkey', - 'Türkiye Cumhuriyeti', - ], - region: 'Asia', - }, - { - name: 'Turkmenistan', - topLevelDomain: ['.tm'], - alpha2Code: 'TM', - alpha3Code: 'TKM', - callingCodes: ['993'], - capital: 'Ashgabat', - altSpellings: ['TM'], - region: 'Asia', - }, - { - name: 'Turks and Caicos Islands', - topLevelDomain: ['.tc'], - alpha2Code: 'TC', - alpha3Code: 'TCA', - callingCodes: ['1'], - capital: 'Cockburn Town', - altSpellings: ['TC'], - region: 'Americas', - }, - { - name: 'Tuvalu', - topLevelDomain: ['.tv'], - alpha2Code: 'TV', - alpha3Code: 'TUV', - callingCodes: ['688'], - capital: 'Funafuti', - altSpellings: ['TV'], - region: 'Oceania', - }, - { - name: 'Uganda', - topLevelDomain: ['.ug'], - alpha2Code: 'UG', - alpha3Code: 'UGA', - callingCodes: ['256'], - capital: 'Kampala', - altSpellings: ['UG', 'Republic of Uganda', 'Jamhuri ya Uganda'], - region: 'Africa', - }, - { - name: 'Ukraine', - topLevelDomain: ['.ua'], - alpha2Code: 'UA', - alpha3Code: 'UKR', - callingCodes: ['380'], - capital: 'Kiev', - altSpellings: ['UA', 'Ukrayina'], - region: 'Europe', - }, - { - name: 'United Arab Emirates', - topLevelDomain: ['.ae'], - alpha2Code: 'AE', - alpha3Code: 'ARE', - callingCodes: ['971'], - capital: 'Abu Dhabi', - altSpellings: ['AE', 'UAE'], - region: 'Asia', - }, - { - name: 'United Kingdom of Great Britain and Northern Ireland', - topLevelDomain: ['.uk'], - alpha2Code: 'GB', - alpha3Code: 'GBR', - callingCodes: ['44'], - capital: 'London', - altSpellings: ['GB', 'UK', 'Great Britain'], - region: 'Europe', - }, - { - name: 'United States of America', - topLevelDomain: ['.us'], - alpha2Code: 'US', - alpha3Code: 'USA', - callingCodes: ['1'], - capital: 'Washington, D.C.', - altSpellings: ['US', 'USA', 'United States of America'], - region: 'Americas', - }, - { - name: 'Uruguay', - topLevelDomain: ['.uy'], - alpha2Code: 'UY', - alpha3Code: 'URY', - callingCodes: ['598'], - capital: 'Montevideo', - altSpellings: [ - 'UY', - 'Oriental Republic of Uruguay', - 'República Oriental del Uruguay', - ], - region: 'Americas', - }, - { - name: 'Uzbekistan', - topLevelDomain: ['.uz'], - alpha2Code: 'UZ', - alpha3Code: 'UZB', - callingCodes: ['998'], - capital: 'Tashkent', - altSpellings: [ - 'UZ', - 'Republic of Uzbekistan', - 'O‘zbekiston Respublikasi', - 'Ўзбекистон Республикаси', - ], - region: 'Asia', - }, - { - name: 'Vanuatu', - topLevelDomain: ['.vu'], - alpha2Code: 'VU', - alpha3Code: 'VUT', - callingCodes: ['678'], - capital: 'Port Vila', - altSpellings: [ - 'VU', - 'Republic of Vanuatu', - 'Ripablik blong Vanuatu', - 'République de Vanuatu', - ], - region: 'Oceania', - }, - { - name: 'Venezuela (Bolivarian Republic of)', - topLevelDomain: ['.ve'], - alpha2Code: 'VE', - alpha3Code: 'VEN', - callingCodes: ['58'], - capital: 'Caracas', - altSpellings: [ - 'VE', - 'Bolivarian Republic of Venezuela', - 'República Bolivariana de Venezuela', - ], - region: 'Americas', - }, - { - name: 'Viet Nam', - topLevelDomain: ['.vn'], - alpha2Code: 'VN', - alpha3Code: 'VNM', - callingCodes: ['84'], - capital: 'Hanoi', - altSpellings: [ - 'VN', - 'Socialist Republic of Vietnam', - 'Cộng hòa Xã hội chủ nghĩa Việt Nam', - ], - region: 'Asia', - }, - { - name: 'Wallis and Futuna', - topLevelDomain: ['.wf'], - alpha2Code: 'WF', - alpha3Code: 'WLF', - callingCodes: ['681'], - capital: 'Mata-Utu', - altSpellings: [ - 'WF', - 'Territory of the Wallis and Futuna Islands', - 'Territoire des îles Wallis et Futuna', - ], - region: 'Oceania', - }, - { - name: 'Western Sahara', - topLevelDomain: ['.eh'], - alpha2Code: 'EH', - alpha3Code: 'ESH', - callingCodes: ['212'], - capital: 'El Aaiún', - altSpellings: ['EH', 'Taneẓroft Tutrimt'], - region: 'Africa', - }, - { - name: 'Yemen', - topLevelDomain: ['.ye'], - alpha2Code: 'YE', - alpha3Code: 'YEM', - callingCodes: ['967'], - capital: "Sana'a", - altSpellings: ['YE', 'Yemeni Republic', 'al-Jumhūriyyah al-Yamaniyyah'], - region: 'Asia', - }, - { - name: 'Zambia', - topLevelDomain: ['.zm'], - alpha2Code: 'ZM', - alpha3Code: 'ZMB', - callingCodes: ['260'], - capital: 'Lusaka', - altSpellings: ['ZM', 'Republic of Zambia'], - region: 'Africa', - }, - { - name: 'Zimbabwe', - topLevelDomain: ['.zw'], - alpha2Code: 'ZW', - alpha3Code: 'ZWE', - callingCodes: ['263'], - capital: 'Harare', - altSpellings: ['ZW', 'Republic of Zimbabwe'], - region: 'Africa', - }, -] diff --git a/libs/application/templates/health-insurance/src/lib/EFTA.ts b/libs/application/templates/health-insurance/src/lib/EFTA.ts deleted file mode 100644 index 3af094a3a8e5..000000000000 --- a/libs/application/templates/health-insurance/src/lib/EFTA.ts +++ /dev/null @@ -1,60 +0,0 @@ -export const EFTA = [ - { - name: 'Iceland', - topLevelDomain: ['.is'], - alpha2Code: 'IS', - alpha3Code: 'ISL', - callingCodes: ['354'], - capital: 'Reykjavík', - altSpellings: ['IS', 'Island', 'Republic of Iceland', 'Lýðveldið Ísland'], - region: 'Europe', - }, - { - name: 'Liechtenstein', - topLevelDomain: ['.li'], - alpha2Code: 'LI', - alpha3Code: 'LIE', - callingCodes: ['423'], - capital: 'Vaduz', - altSpellings: [ - 'LI', - 'Principality of Liechtenstein', - 'Fürstentum Liechtenstein', - ], - region: 'Europe', - }, - { - name: 'Norway', - topLevelDomain: ['.no'], - alpha2Code: 'NO', - alpha3Code: 'NOR', - callingCodes: ['47'], - capital: 'Oslo', - altSpellings: [ - 'NO', - 'Norge', - 'Noreg', - 'Kingdom of Norway', - 'Kongeriket Norge', - 'Kongeriket Noreg', - ], - region: 'Europe', - }, - { - name: 'Switzerland', - topLevelDomain: ['.ch'], - alpha2Code: 'CH', - alpha3Code: 'CHE', - callingCodes: ['41'], - capital: 'Bern', - altSpellings: [ - 'CH', - 'Swiss Confederation', - 'Schweiz', - 'Suisse', - 'Svizzera', - 'Svizra', - ], - region: 'Europe', - }, -] diff --git a/libs/application/templates/health-insurance/src/lib/EU.ts b/libs/application/templates/health-insurance/src/lib/EU.ts deleted file mode 100644 index 2653dcc45a67..000000000000 --- a/libs/application/templates/health-insurance/src/lib/EU.ts +++ /dev/null @@ -1,375 +0,0 @@ -export const EU = [ - { - name: 'Åland Islands', - topLevelDomain: ['.ax'], - alpha2Code: 'AX', - alpha3Code: 'ALA', - callingCodes: ['358'], - capital: 'Mariehamn', - altSpellings: ['AX', 'Aaland', 'Aland', 'Ahvenanmaa'], - region: 'Europe', - }, - { - name: 'Austria', - topLevelDomain: ['.at'], - alpha2Code: 'AT', - alpha3Code: 'AUT', - callingCodes: ['43'], - capital: 'Vienna', - altSpellings: ['AT', 'Österreich', 'Osterreich', 'Oesterreich'], - region: 'Europe', - }, - { - name: 'Belgium', - topLevelDomain: ['.be'], - alpha2Code: 'BE', - alpha3Code: 'BEL', - callingCodes: ['32'], - capital: 'Brussels', - altSpellings: [ - 'BE', - 'België', - 'Belgie', - 'Belgien', - 'Belgique', - 'Kingdom of Belgium', - 'Koninkrijk België', - 'Royaume de Belgique', - 'Königreich Belgien', - ], - region: 'Europe', - }, - { - name: 'Bulgaria', - topLevelDomain: ['.bg'], - alpha2Code: 'BG', - alpha3Code: 'BGR', - callingCodes: ['359'], - capital: 'Sofia', - altSpellings: ['BG', 'Republic of Bulgaria', 'Република България'], - region: 'Europe', - }, - { - name: 'Croatia', - topLevelDomain: ['.hr'], - alpha2Code: 'HR', - alpha3Code: 'HRV', - callingCodes: ['385'], - capital: 'Zagreb', - altSpellings: [ - 'HR', - 'Hrvatska', - 'Republic of Croatia', - 'Republika Hrvatska', - ], - region: 'Europe', - }, - { - name: 'Cyprus', - topLevelDomain: ['.cy'], - alpha2Code: 'CY', - alpha3Code: 'CYP', - callingCodes: ['357'], - capital: 'Nicosia', - altSpellings: [ - 'CY', - 'Kýpros', - 'Kıbrıs', - 'Republic of Cyprus', - 'Κυπριακή Δημοκρατία', - 'Kıbrıs Cumhuriyeti', - ], - region: 'Europe', - }, - { - name: 'Czech Republic', - topLevelDomain: ['.cz'], - alpha2Code: 'CZ', - alpha3Code: 'CZE', - callingCodes: ['420'], - capital: 'Prague', - altSpellings: ['CZ', 'Česká republika', 'Česko'], - region: 'Europe', - }, - { - name: 'Denmark', - topLevelDomain: ['.dk'], - alpha2Code: 'DK', - alpha3Code: 'DNK', - callingCodes: ['45'], - capital: 'Copenhagen', - altSpellings: ['DK', 'Danmark', 'Kingdom of Denmark', 'Kongeriget Danmark'], - region: 'Europe', - }, - { - name: 'Estonia', - topLevelDomain: ['.ee'], - alpha2Code: 'EE', - alpha3Code: 'EST', - callingCodes: ['372'], - capital: 'Tallinn', - altSpellings: ['EE', 'Eesti', 'Republic of Estonia', 'Eesti Vabariik'], - region: 'Europe', - }, - { - name: 'Faroe Islands', - topLevelDomain: ['.fo'], - alpha2Code: 'FO', - alpha3Code: 'FRO', - callingCodes: ['298'], - capital: 'Tórshavn', - altSpellings: ['FO', 'Føroyar', 'Færøerne'], - region: 'Europe', - }, - { - name: 'Finland', - topLevelDomain: ['.fi'], - alpha2Code: 'FI', - alpha3Code: 'FIN', - callingCodes: ['358'], - capital: 'Helsinki', - altSpellings: [ - 'FI', - 'Suomi', - 'Republic of Finland', - 'Suomen tasavalta', - 'Republiken Finland', - ], - region: 'Europe', - }, - { - name: 'France', - topLevelDomain: ['.fr'], - alpha2Code: 'FR', - alpha3Code: 'FRA', - callingCodes: ['33'], - capital: 'Paris', - altSpellings: ['FR', 'French Republic', 'République française'], - region: 'Europe', - }, - { - name: 'French Guiana', - topLevelDomain: ['.gf'], - alpha2Code: 'GF', - alpha3Code: 'GUF', - callingCodes: ['594'], - capital: 'Cayenne', - altSpellings: ['GF', 'Guiana', 'Guyane'], - region: 'Americas', - }, - { - name: 'Germany', - topLevelDomain: ['.de'], - alpha2Code: 'DE', - alpha3Code: 'DEU', - callingCodes: ['49'], - capital: 'Berlin', - altSpellings: [ - 'DE', - 'Federal Republic of Germany', - 'Bundesrepublik Deutschland', - ], - region: 'Europe', - }, - { - name: 'Gibraltar', - topLevelDomain: ['.gi'], - alpha2Code: 'GI', - alpha3Code: 'GIB', - callingCodes: ['350'], - capital: 'Gibraltar', - altSpellings: ['GI'], - region: 'Europe', - }, - { - name: 'Greece', - topLevelDomain: ['.gr'], - alpha2Code: 'GR', - alpha3Code: 'GRC', - callingCodes: ['30'], - capital: 'Athens', - altSpellings: ['GR', 'Elláda', 'Hellenic Republic', 'Ελληνική Δημοκρατία'], - region: 'Europe', - }, - { - name: 'Hungary', - topLevelDomain: ['.hu'], - alpha2Code: 'HU', - alpha3Code: 'HUN', - callingCodes: ['36'], - capital: 'Budapest', - altSpellings: ['HU'], - region: 'Europe', - }, - { - name: 'Ireland', - topLevelDomain: ['.ie'], - alpha2Code: 'IE', - alpha3Code: 'IRL', - callingCodes: ['353'], - capital: 'Dublin', - altSpellings: ['IE', 'Éire', 'Republic of Ireland', 'Poblacht na hÉireann'], - region: 'Europe', - }, - { - name: 'Isle of Man', - topLevelDomain: ['.im'], - alpha2Code: 'IM', - alpha3Code: 'IMN', - callingCodes: ['44'], - capital: 'Douglas', - altSpellings: ['IM', 'Ellan Vannin', 'Mann', 'Mannin'], - region: 'Europe', - }, - { - name: 'Italy', - topLevelDomain: ['.it'], - alpha2Code: 'IT', - alpha3Code: 'ITA', - callingCodes: ['39'], - capital: 'Rome', - altSpellings: ['IT', 'Italian Republic', 'Repubblica italiana'], - region: 'Europe', - }, - { - name: 'Latvia', - topLevelDomain: ['.lv'], - alpha2Code: 'LV', - alpha3Code: 'LVA', - callingCodes: ['371'], - capital: 'Riga', - altSpellings: ['LV', 'Republic of Latvia', 'Latvijas Republika'], - region: 'Europe', - }, - { - name: 'Lithuania', - topLevelDomain: ['.lt'], - alpha2Code: 'LT', - alpha3Code: 'LTU', - callingCodes: ['370'], - capital: 'Vilnius', - altSpellings: ['LT', 'Republic of Lithuania', 'Lietuvos Respublika'], - region: 'Europe', - }, - { - name: 'Luxembourg', - topLevelDomain: ['.lu'], - alpha2Code: 'LU', - alpha3Code: 'LUX', - callingCodes: ['352'], - capital: 'Luxembourg', - altSpellings: [ - 'LU', - 'Grand Duchy of Luxembourg', - 'Grand-Duché de Luxembourg', - 'Großherzogtum Luxemburg', - 'Groussherzogtum Lëtzebuerg', - ], - region: 'Europe', - }, - { - name: 'Malta', - topLevelDomain: ['.mt'], - alpha2Code: 'MT', - alpha3Code: 'MLT', - callingCodes: ['356'], - capital: 'Valletta', - altSpellings: ['MT', 'Republic of Malta', "Repubblika ta' Malta"], - region: 'Europe', - }, - { - name: 'Netherlands', - topLevelDomain: ['.nl'], - alpha2Code: 'NL', - alpha3Code: 'NLD', - callingCodes: ['31'], - capital: 'Amsterdam', - altSpellings: ['NL', 'Holland', 'Nederland'], - region: 'Europe', - }, - { - name: 'Poland', - topLevelDomain: ['.pl'], - alpha2Code: 'PL', - alpha3Code: 'POL', - callingCodes: ['48'], - capital: 'Warsaw', - altSpellings: ['PL', 'Republic of Poland', 'Rzeczpospolita Polska'], - region: 'Europe', - }, - { - name: 'Portugal', - topLevelDomain: ['.pt'], - alpha2Code: 'PT', - alpha3Code: 'PRT', - callingCodes: ['351'], - capital: 'Lisbon', - altSpellings: [ - 'PT', - 'Portuguesa', - 'Portuguese Republic', - 'República Portuguesa', - ], - region: 'Europe', - }, - { - name: 'Romania', - topLevelDomain: ['.ro'], - alpha2Code: 'RO', - alpha3Code: 'ROU', - callingCodes: ['40'], - capital: 'Bucharest', - altSpellings: ['RO', 'Rumania', 'Roumania', 'România'], - region: 'Europe', - }, - { - name: 'Slovakia', - topLevelDomain: ['.sk'], - alpha2Code: 'SK', - alpha3Code: 'SVK', - callingCodes: ['421'], - capital: 'Bratislava', - altSpellings: ['SK', 'Slovak Republic', 'Slovenská republika'], - region: 'Europe', - }, - { - name: 'Slovenia', - topLevelDomain: ['.si'], - alpha2Code: 'SI', - alpha3Code: 'SVN', - callingCodes: ['386'], - capital: 'Ljubljana', - altSpellings: ['SI', 'Republic of Slovenia', 'Republika Slovenija'], - region: 'Europe', - }, - { - name: 'Spain', - topLevelDomain: ['.es'], - alpha2Code: 'ES', - alpha3Code: 'ESP', - callingCodes: ['34'], - capital: 'Madrid', - altSpellings: ['ES', 'Kingdom of Spain', 'Reino de España'], - region: 'Europe', - }, - { - name: 'Sweden', - topLevelDomain: ['.se'], - alpha2Code: 'SE', - alpha3Code: 'SWE', - callingCodes: ['46'], - capital: 'Stockholm', - altSpellings: ['SE', 'Kingdom of Sweden', 'Konungariket Sverige'], - region: 'Europe', - }, - { - name: 'United Kingdom of Great Britain and Northern Ireland', - topLevelDomain: ['.uk'], - alpha2Code: 'GB', - alpha3Code: 'GBR', - callingCodes: ['44'], - capital: 'London', - altSpellings: ['GB', 'UK', 'Great Britain'], - region: 'Europe', - }, -] diff --git a/libs/application/templates/health-insurance/src/lib/HealthInsuranceTemplate.spec.ts b/libs/application/templates/health-insurance/src/lib/HealthInsuranceTemplate.spec.ts deleted file mode 100644 index 15966cb8a56c..000000000000 --- a/libs/application/templates/health-insurance/src/lib/HealthInsuranceTemplate.spec.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ApplicationTemplateHelper } from '@island.is/application/core' -import { - Application, - ApplicationTypes, - ExternalData, - DefaultEvents, - FormValue, - ApplicationStatus, -} from '@island.is/application/types' -import HealthInsuranceTemplate from './HealthInsuranceTemplate' - -function buildApplication(data: { - answers?: FormValue - externalData?: ExternalData - state?: string -}): Application { - const { answers = {}, externalData = {}, state = 'draft' } = data - return { - id: '12345', - assignees: [], - applicant: '123456-7890', - typeId: ApplicationTypes.HEALTH_INSURANCE, - created: new Date(), - status: ApplicationStatus.IN_PROGRESS, - modified: new Date(), - applicantActors: [], - answers, - state, - externalData, - } -} - -describe('Health Insurance Application Template', () => { - describe('state transitions', () => { - it('should transition from draft to inReview on submit', () => { - const helper = new ApplicationTemplateHelper( - buildApplication({ - answers: { - confirmCorrectInfo: true, - }, - }), - HealthInsuranceTemplate, - ) - const [hasChanged, newState] = helper.changeState({ - type: DefaultEvents.SUBMIT, - }) - expect(hasChanged).toBe(true) - expect(newState).toBe('inReview') - }) - }) -}) diff --git a/libs/application/templates/health-insurance/src/lib/answerValidators.spec.ts b/libs/application/templates/health-insurance/src/lib/answerValidators.spec.ts deleted file mode 100644 index 95345cbd293c..000000000000 --- a/libs/application/templates/health-insurance/src/lib/answerValidators.spec.ts +++ /dev/null @@ -1,306 +0,0 @@ -import { - ApplicationWithAttachments as Application, - ApplicationStatus, - ApplicationTypes, -} from '@island.is/application/types' -import { NO, YES, StatusTypes } from '../shared' - -import { answerValidators } from './answerValidators' - -describe('answerValidators', () => { - const baseApplication: Application = { - answers: { - fieldId: 'some answer', - citizenship: '{"code":"IS","name":"Ísland"}', - }, - assignees: [], - applicant: '', - applicantActors: [], - status: ApplicationStatus.IN_PROGRESS, - created: new Date(), - attachments: {}, - externalData: { - nationalRegistry: { - date: new Date(), - status: 'success', - data: {}, - }, - userProfile: { - date: new Date(), - status: 'success', - data: {}, - }, - }, - id: '', - modified: new Date(), - state: '', - typeId: ApplicationTypes.HEALTH_INSURANCE, - } - - it('should return error when status type is not a defined type', () => { - const newStatusAnswers = { - type: 'someType', - } - - expect( - answerValidators['status'](newStatusAnswers, baseApplication), - ).toStrictEqual({ - message: 'You must select one of the above', - path: 'status.type', - values: undefined, - }) - }) - - it('should not return any error when status type a defined type', () => { - const newStatusAnswers = { - type: StatusTypes.OTHER, - } - - expect( - answerValidators['status'](newStatusAnswers, baseApplication), - ).toStrictEqual(undefined) - }) - - it('should return error when student has not attached a file', () => { - const newStatusAnswers = { - type: StatusTypes.STUDENT, - confirmationOfStudies: [], - } - - expect( - answerValidators['status'](newStatusAnswers, baseApplication), - ).toStrictEqual({ - message: 'Please attach a confirmation of studies', - path: 'status.confirmationOfStudies', - values: undefined, - }) - }) - - it('should not return error when student has attached a file', () => { - const newStatusAnswers = { - type: StatusTypes.STUDENT, - confirmationOfStudies: [ - { name: 'some filename', key: 'uuid', url: 'url to file' }, - ], - } - - expect( - answerValidators['status'](newStatusAnswers, baseApplication), - ).toStrictEqual(undefined) - }) - - it('should return error when former insurance registration is empty', () => { - const newFormerInsuranceAnswers = { - registration: '', - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: 'You must select one of the above', - path: 'formerInsurance.registration', - values: undefined, - }) - }) - - it('should return error if waiting period is required due to moving form country outside of EU', () => { - const newFormerInsuranceAnswers = { - registration: YES, - country: 'Outside of EU', - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: '', - path: 'formerInsurance', - values: undefined, - }) - }) - - it('should return error if waiting period is required due to citizenship outside of EU', () => { - const newApplication = { - ...baseApplication, - answers: { citizenship: 'outside EU' }, - } as Application - - const newFormerInsuranceAnswers = { - registration: YES, - country: JSON.stringify({ name: 'Belgium', countryCode: 'BE' }), - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - newApplication, - ), - ).toStrictEqual({ - message: '', - path: 'formerInsurance', - values: undefined, - }) - }) - - it('should return error if personal id is undefined', () => { - const newFormerInsuranceAnswers = { - registration: YES, - country: JSON.stringify({ name: 'Greenland', countryCode: 'GL' }), - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: 'Please fill in your ID number in previous country', - path: 'formerInsurance.personalId', - values: undefined, - }) - }) - - it('should return error if personal id is greater than 20', () => { - const newFormerInsuranceAnswers = { - registration: YES, - country: JSON.stringify({ name: 'Greenland', countryCode: 'GL' }), - personalId: '012345678901234567890', - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: 'Should be at most 20 characters long', - path: 'formerInsurance.personalId', - values: undefined, - }) - }) - - it('should return error if personal id is less than 6', () => { - const newFormerInsuranceAnswers = { - registration: YES, - country: JSON.stringify({ name: 'Greenland', countryCode: 'GL' }), - personalId: '000', - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: 'Should be at least 6 characters', - path: 'formerInsurance.personalId', - values: undefined, - }) - }) - - it('should return error if moving from Greenland but not attached file', () => { - const newFormerInsuranceAnswers = { - registration: YES, - personalId: 'some id', - country: JSON.stringify({ name: 'Greenland', countryCode: 'GL' }), - confirmationOfResidencyDocument: [], - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: 'Please attach a confirmation of residency', - path: 'formerInsurance.confirmationOfResidencyDocument', - values: undefined, - }) - }) - - it('should return next error if moving from Greenland and attached file', () => { - const newFormerInsuranceAnswers = { - registration: YES, - personalId: 'some id', - country: JSON.stringify({ name: 'Greenland', countryCode: 'GL' }), - confirmationOfResidencyDocument: [ - { name: 'some filename', key: 'uuid', url: 'url to file' }, - ], - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: 'You must select one of the above', - path: 'formerInsurance.entitlement', - values: undefined, - }) - }) - - it('should return error if entitelment is not a defined answer', () => { - const newFormerInsuranceAnswers = { - registration: YES, - personalId: 'some id', - country: JSON.stringify({ name: 'Greenland', countryCode: 'GL' }), - confirmationOfResidencyDocument: [ - { name: 'some filename', key: 'uuid', url: 'url to file' }, - ], - entitelment: 'some answer', - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: 'You must select one of the above', - path: 'formerInsurance.entitlement', - values: undefined, - }) - }) - - it('should return error if user is entitled but doesnt explain why', () => { - const newFormerInsuranceAnswers = { - registration: YES, - personalId: 'some id', - country: JSON.stringify({ name: 'Belgium', countryCode: 'BE' }), - entitlement: YES, - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual({ - message: 'Please fill in a reason', - path: 'formerInsurance.entitlementReason', - values: undefined, - }) - }) - - it('should not return error if all is filled and country does not require attachment nor waiting period', () => { - const newFormerInsuranceAnswers = { - registration: YES, - personalId: 'some id', - country: JSON.stringify({ name: 'Belgium', countryCode: 'BE' }), - entitlement: NO, - } - - expect( - answerValidators['formerInsurance']( - newFormerInsuranceAnswers, - baseApplication, - ), - ).toStrictEqual(undefined) - }) -}) diff --git a/libs/application/templates/health-insurance/src/lib/answerValidators.ts b/libs/application/templates/health-insurance/src/lib/answerValidators.ts deleted file mode 100644 index 263e2c074a94..000000000000 --- a/libs/application/templates/health-insurance/src/lib/answerValidators.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { - AnswerValidator, - getValueViaPath, - buildValidationError, -} from '@island.is/application/core' -import { Application } from '@island.is/application/types' -import { Status, FormerInsurance } from '../types' -import { NO, YES, StatusTypes } from '../shared' -import { - requireConfirmationOfResidency, - requireWaitingPeriod, -} from '../healthInsuranceUtils' - -const STATUS = 'status' -const FORMER_INSURANCE = 'formerInsurance' - -// TODO: Add translation messages here -export const answerValidators: Record<string, AnswerValidator> = { - [STATUS]: (newAnswer: unknown, _application: Application) => { - const status = newAnswer as Status - - if (!Object.values(StatusTypes).includes(status.type)) { - const field = `${STATUS}.type` - const buildError = buildValidationError(field) - return buildError('You must select one of the above', field) - } - if ( - status.type === StatusTypes.STUDENT && - !status.confirmationOfStudies.length - ) { - const field = `${STATUS}.confirmationOfStudies` - const buildError = buildValidationError(field) - return buildError('Please attach a confirmation of studies', field) - } - - return undefined - }, - [FORMER_INSURANCE]: (newAnswer: unknown, application: Application) => { - const formerInsurance = newAnswer as FormerInsurance - const { - registration, - country, - personalId, - confirmationOfResidencyDocument, - entitlement, - entitlementReason, - } = formerInsurance - - const citizenship = getValueViaPath( - application.answers, - 'citizenship', - ) as string - - /* Registration must be Yes / No */ - if (registration !== YES && registration !== NO) { - const field = `${FORMER_INSURANCE}.registration` - const buildError = buildValidationError(field) - return buildError('You must select one of the above', field) - } - - if (!requireWaitingPeriod(country, citizenship)) { - const personalIdField = `${FORMER_INSURANCE}.personalId` - - if (personalId) { - /* Check that personal ID in former country length is as specified in Sjukra's api */ - if (personalId.length < 6) { - const buildError = buildValidationError(personalIdField) - return buildError('Should be at least 6 characters', personalIdField) - } else if (personalId.length > 20) { - const buildError = buildValidationError(personalIdField) - return buildError( - 'Should be at most 20 characters long', - personalIdField, - ) - } - } else { - /* Check that personal ID is not empty */ - const buildError = buildValidationError(personalIdField) - return buildError( - 'Please fill in your ID number in previous country', - personalIdField, - ) - } - /* Check file upload if country is Greenland / Faroe */ - if ( - requireConfirmationOfResidency(country) && - !confirmationOfResidencyDocument.length - ) { - const field = `${FORMER_INSURANCE}.confirmationOfResidencyDocument` - const buildError = buildValidationError(field) - return buildError('Please attach a confirmation of residency', field) - } - /* Check that entitlement is Yes / No */ - if (entitlement !== YES && entitlement !== NO) { - const field = `${FORMER_INSURANCE}.entitlement` - const buildError = buildValidationError(field) - return buildError('You must select one of the above', field) - } - /* Check that entitelmentReason is not empty if field is rendered (rendered if entitlement === YES) */ - if (entitlement === YES && !entitlementReason) { - const field = `${FORMER_INSURANCE}.entitlementReason` - const buildError = buildValidationError(field) - return buildError('Please fill in a reason', field) - } - } else { - /* User that requires waiting period, should not be allowed to continue */ - const buildError = buildValidationError(`${FORMER_INSURANCE}`) - return buildError('') - } - - return undefined - }, -} diff --git a/libs/application/templates/health-insurance/src/shared/constants.ts b/libs/application/templates/health-insurance/src/shared/constants.ts deleted file mode 100644 index 634b845ed2be..000000000000 --- a/libs/application/templates/health-insurance/src/shared/constants.ts +++ /dev/null @@ -1,29 +0,0 @@ -export enum API_MODULE { - sendApplyHealthInsuranceApplication = 'sendApplyHealthInsuranceApplication', -} - -export const YES = 'yes' -export const NO = 'no' - -export const FILE_SIZE_LIMIT = 10000000 - -export const EU = 'EU' -export const EFTA = 'EFTA' - -export enum StatusTypes { - PENSIONER = 'pensioner', - STUDENT = 'student', - OTHER = 'other', - EMPLOYED = 'employed', -} - -export enum NordicCountriesCountryCode { - 'NO', - 'DK', - 'SE', - 'FI', - 'FO', - 'GL', - 'AX', - 'SJ', -} diff --git a/libs/application/templates/health-insurance/src/shared/index.ts b/libs/application/templates/health-insurance/src/shared/index.ts deleted file mode 100644 index f87cf0102a14..000000000000 --- a/libs/application/templates/health-insurance/src/shared/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './constants' diff --git a/libs/application/templates/health-insurance/src/types.ts b/libs/application/templates/health-insurance/src/types.ts deleted file mode 100644 index 1d840763daff..000000000000 --- a/libs/application/templates/health-insurance/src/types.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { - FieldBaseProps, - FormText, - NationalRegistryIndividual, -} from '@island.is/application/types' -import { UserProfile } from '@island.is/api/schema' -import { StatusTypes } from './shared' - -export interface Status { - type: StatusTypes - confirmationOfStudies: FileType[] -} - -interface FileType { - name: string - key: string -} - -export interface FormerInsurance { - registration: string - country: string - personalId: string - confirmationOfResidencyDocument: FileType[] - institution?: string - entitlement: string - entitlementReason: string -} - -export interface Applicant { - name: string - nationalId: string - address: string - postalCode: string - city: string - email: string - phoneNumber: string - citizenship: string -} - -export interface AdditionalInfoType { - remarks: string - files?: string[] - hasAdditionalInfo?: string -} - -export interface MissingInfoType { - date: string - remarks: string - files?: string[] -} - -export interface ReviewFieldProps extends FieldBaseProps { - isEditable: boolean - index?: number -} - -export interface ContentType { - title: FormText - description: FormText | (() => void) - buttonText: FormText - buttonAction: () => void -} - -export interface ExternalDataNationalRegistry { - data: NationalRegistryIndividual -} - -export interface ExternalDataUserProfile { - data: UserProfile -} diff --git a/libs/application/templates/id-card/src/utils/formatText.ts b/libs/application/templates/id-card/src/utils/formatText.ts deleted file mode 100644 index 75216ce017f6..000000000000 --- a/libs/application/templates/id-card/src/utils/formatText.ts +++ /dev/null @@ -1,8 +0,0 @@ -// import { useLocale } from '@island.is/localization' -// import { MessageDescriptor } from 'react-intl' - -// export const GetFormattedText = (messageId: MessageDescriptor) => { -// const { formatMessage } = useLocale() -// const message = formatMessage(messageId) -// return `${message}` -// } diff --git a/libs/application/templates/inheritance-report/src/fields/CalculationsOfTotal/CalculateTotalAssets/index.tsx b/libs/application/templates/inheritance-report/src/fields/CalculationsOfTotal/CalculateTotalAssets/index.tsx deleted file mode 100644 index 2ac38968b7fc..000000000000 --- a/libs/application/templates/inheritance-report/src/fields/CalculationsOfTotal/CalculateTotalAssets/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { FieldBaseProps } from '@island.is/application/types' -import { formatCurrency } from '@island.is/application/ui-components' -import { Box, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { FC, useEffect, useState } from 'react' -import { useFormContext } from 'react-hook-form' -import { m } from '../../../lib/messages' -import { calculateTotalAssets } from '../../../lib/utils/calculateTotalAssets' - -export const CalculateTotalAssets: FC< - React.PropsWithChildren<FieldBaseProps> -> = ({ application }) => { - const { answers } = application - const { formatMessage } = useLocale() - const { setValue } = useFormContext() - - const acc = calculateTotalAssets(answers) - - const [total] = useState(acc) - - useEffect(() => { - setValue('assets.assetsTotal', total) - }, [total, setValue]) - - return ( - <Box - display={['block', 'block', 'flex']} - justifyContent="spaceBetween" - marginTop={4} - > - <Text variant="h3">{formatMessage(m.overviewTotal)}</Text> - <Text variant="h3">{formatCurrency(String(total))}</Text> - </Box> - ) -} - -export default CalculateTotalAssets diff --git a/libs/application/templates/marriage-conditions/src/fields/InfoAlert/index.tsx b/libs/application/templates/marriage-conditions/src/fields/InfoAlert/index.tsx deleted file mode 100644 index 86a351219acf..000000000000 --- a/libs/application/templates/marriage-conditions/src/fields/InfoAlert/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import { AlertMessage, Box } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' - -export const InfoAlert = () => { - const { formatMessage } = useLocale() - - return ( - <Box marginY={2}> - <AlertMessage - type="info" - message={formatMessage(m.informationAlertMessage)} - /> - </Box> - ) -} diff --git a/libs/application/templates/new-primary-school/src/assets/Logo.tsx b/libs/application/templates/new-primary-school/src/assets/Logo.tsx deleted file mode 100644 index d5564886e184..000000000000 --- a/libs/application/templates/new-primary-school/src/assets/Logo.tsx +++ /dev/null @@ -1,41 +0,0 @@ -function Logo() { - return ( - <svg - width="80" - height="80" - viewBox="0 0 80 80" - fill="none" - xmlns="http://www.w3.org/2000/svg" - > - <g clip-path="url(#clip0_5_635)"> - <path - d="M25.9494 56.5604C24.9527 58.6168 24.1254 60.7717 23.4832 63.0129C17.0501 58.8334 14.4224 55.1225 11.4677 49.9026C7.78827 43.3906 6.2597 39.1556 5.14484 32.6121C5.03847 31.9818 5.01092 31.3554 5.06602 30.7487C5.32611 27.8177 7.3825 25.2965 10.4198 24.7686C12.0745 34.2392 13.2524 40.1799 17.2431 46.5973C19.5556 50.3123 21.8916 53.4875 25.9494 56.5643V56.5604Z" - fill="#8985FF" - /> - <path - d="M32.8352 46.3135C31.3422 47.9524 29.9791 49.7134 28.7657 51.5846C23.928 47.393 20.4889 42.3977 18.3142 36.4412C16.4548 31.3434 15.5133 25.5563 15.4265 18.5677C15.4265 18.351 15.4305 18.1342 15.4502 17.9176C15.7536 14.4981 18.7357 11.8665 22.2379 12.0674C21.2925 28.4952 24.4047 38.8639 32.8313 46.3135H32.8352Z" - fill="#8985FF" - /> - <path - d="M42.3055 38.5642C40.3594 39.7225 38.5079 41.0383 36.7863 42.4999C27.1818 33.0175 26.3033 21.4589 27.5797 11.756C28.0327 8.3207 31.1134 5.92149 34.462 6.21696C34.7495 6.24059 35.0411 6.28794 35.3287 6.35489C31.9801 21.0453 34.1271 31.0989 42.3095 38.5603L42.3055 38.5642Z" - fill="#8985FF" - /> - <path - d="M59.7661 40.621H59.833C64.6984 40.621 69.3902 38.6158 73.0463 34.9717C77.2618 30.7761 79.5779 24.9339 79.5779 18.5243C79.5779 10.3892 74.2398 5.52787 68.7328 5.52787C66.4989 5.52787 64.45 7.47005 63.1501 9.10882C62.9334 9.38067 62.5075 9.54615 62.2442 9.3886C62.0191 9.25459 62.1144 8.75824 62.2321 8.42737C63.0987 6.06364 64.4976 3.58569 66.5503 0.804429C63.899 -0.231705 59.3406 -0.168669 57.5836 2.49446C56.3584 4.3539 56.6184 6.46156 57.1148 8.63609C57.166 8.86069 57.1463 9.29401 56.8942 9.4043C56.6224 9.52253 56.2481 9.32557 55.9999 8.95127C54.7117 6.97762 53.0216 5.52787 50.4609 5.52787C44.3863 5.52787 39.6155 11.4805 39.6155 18.5243C39.6155 32.1235 50.0749 40.5855 59.7621 40.621H59.7661ZM50.8273 12.1857C52.6631 12.1857 54.625 13.525 56.055 14.502C57.3629 15.3924 58.4345 15.6879 59.8213 15.6879C61.2076 15.6879 62.1415 15.3727 63.2883 14.5375C64.5723 13.5999 66.5185 12.1816 68.3779 12.1816C70.5678 12.1816 72.9315 14.6045 72.9315 18.5243C72.9315 23.1492 71.3046 27.3172 68.3545 30.2561C65.9507 32.6513 62.9259 33.9672 59.833 33.9672C59.8213 33.9672 59.8055 33.9672 59.7897 33.9672C53.2856 33.9435 46.2693 28.0303 46.2693 18.5243C46.2693 14.5966 48.9206 12.1816 50.8234 12.1816L50.8273 12.1857Z" - fill="#8985FF" - /> - <path - d="M38.2637 79.8182C22.1472 79.8182 8.18555 71.1163 1.20867 56.9221C1.18112 56.8669 1.14563 56.7921 1.10622 56.6935C-0.508914 52.951 0.818682 48.59 4.2263 46.3563C4.2263 46.3563 5.18754 49.5552 6.21181 51.8992C11.7508 64.5764 23.9594 73.1839 38.2637 73.1839C55.2193 73.1839 69.3031 61.0309 72.3363 45.0681C72.3951 44.7648 72.4465 44.4574 72.4941 44.1502C73.0255 40.6244 75.9691 37.9651 79.53 37.8115C79.5374 38.17 79.5458 38.5442 79.5458 38.8319C79.5458 61.4328 61.0262 79.8182 38.2676 79.8182H38.2637Z" - fill="#8985FF" - /> - </g> - <defs> - <clipPath id="clip0_5_635"> - <rect width="80" height="80" fill="white" /> - </clipPath> - </defs> - </svg> - ) -} - -export default Logo diff --git a/libs/application/templates/new-primary-school/src/fields/Review/review-groups/AllergiesAndIntolerances.tsx b/libs/application/templates/new-primary-school/src/fields/Review/review-groups/AllergiesAndIntolerances.tsx deleted file mode 100644 index 1b034ee09e9e..000000000000 --- a/libs/application/templates/new-primary-school/src/fields/Review/review-groups/AllergiesAndIntolerances.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { YES } from '@island.is/application/core' -import { DataValue, ReviewGroup } from '@island.is/application/ui-components' -import { GridColumn, GridRow, Stack } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { newPrimarySchoolMessages } from '../../../lib/messages' -import { - getApplicationAnswers, - getFoodAllergiesOptionsLabel, - getFoodIntolerancesOptionsLabel, -} from '../../../lib/newPrimarySchoolUtils' -import { ReviewGroupProps } from './props' - -export const AllergiesAndIntolerances = ({ - application, - editable, - goToScreen, -}: ReviewGroupProps) => { - const { formatMessage } = useLocale() - const { - hasFoodAllergies, - hasFoodIntolerances, - isUsingEpiPen, - foodAllergies, - foodIntolerances, - } = getApplicationAnswers(application.answers) - - return ( - <ReviewGroup - isEditable={editable} - editAction={() => goToScreen?.('allergiesAndIntolerances')} - > - <Stack space={2}> - {hasFoodAllergies.includes(YES) && ( - <GridRow> - <GridColumn span="9/12"> - <DataValue - label={formatMessage( - newPrimarySchoolMessages.overview.foodAllergies, - )} - value={foodAllergies - .map((allergies) => { - return formatMessage( - getFoodAllergiesOptionsLabel(allergies), - ) - }) - .join(', ')} - /> - </GridColumn> - </GridRow> - )} - {hasFoodIntolerances.includes(YES) && ( - <GridRow> - <GridColumn span={['12/12', '12/12', '12/12', '12/12']}> - <DataValue - label={formatMessage( - newPrimarySchoolMessages.overview.foodIntolerances, - )} - value={foodIntolerances - .map((intolerances) => { - return formatMessage( - getFoodIntolerancesOptionsLabel(intolerances), - ) - }) - .join(', ')} - /> - </GridColumn> - </GridRow> - )} - <GridRow> - <GridColumn span={['12/12', '12/12', '12/12', '12/12']}> - <DataValue - label={formatMessage( - newPrimarySchoolMessages.overview.usesEpinephrinePen, - )} - value={formatMessage( - isUsingEpiPen?.includes(YES) - ? newPrimarySchoolMessages.shared.yes - : newPrimarySchoolMessages.shared.no, - )} - /> - </GridColumn> - </GridRow> - </Stack> - </ReviewGroup> - ) -} diff --git a/libs/application/templates/new-primary-school/src/fields/Review/review-groups/Photography.tsx b/libs/application/templates/new-primary-school/src/fields/Review/review-groups/Photography.tsx deleted file mode 100644 index 1fc4c6ad8e1d..000000000000 --- a/libs/application/templates/new-primary-school/src/fields/Review/review-groups/Photography.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { YES } from '@island.is/application/core' -import { RadioValue, ReviewGroup } from '@island.is/application/ui-components' -import { GridColumn, GridRow, Stack } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { newPrimarySchoolMessages } from '../../../lib/messages' -import { getApplicationAnswers } from '../../../lib/newPrimarySchoolUtils' -import { ReviewGroupProps } from './props' - -export const Photography = ({ - application, - editable, - goToScreen, -}: ReviewGroupProps) => { - const { formatMessage } = useLocale() - const { photographyConsent, photoSchoolPublication, photoMediaPublication } = - getApplicationAnswers(application.answers) - - return ( - <ReviewGroup - isEditable={editable} - editAction={() => goToScreen?.('photography')} - isLast={true} - > - <Stack space={2}> - <GridRow> - <GridColumn span="9/12"> - <RadioValue - label={formatMessage( - newPrimarySchoolMessages.differentNeeds.photographyConsent, - )} - value={photographyConsent} - /> - </GridColumn> - </GridRow> - {photographyConsent === YES && ( - <> - <GridRow> - <GridColumn span="9/12"> - <RadioValue - label={formatMessage( - newPrimarySchoolMessages.differentNeeds - .photoSchoolPublication, - )} - value={photoSchoolPublication} - /> - </GridColumn> - </GridRow> - <GridRow> - <GridColumn span="9/12"> - <RadioValue - label={formatMessage( - newPrimarySchoolMessages.differentNeeds - .photoMediaPublication, - )} - value={photoMediaPublication} - /> - </GridColumn> - </GridRow> - </> - )} - </Stack> - </ReviewGroup> - ) -} diff --git a/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/childrenNParentsSection/childrenSubSection.ts b/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/childrenNParentsSection/childrenSubSection.ts deleted file mode 100644 index 3a4ddf4ae7f0..000000000000 --- a/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/childrenNParentsSection/childrenSubSection.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - buildMultiField, - buildRadioField, - buildSubSection, -} from '@island.is/application/core' -import { format as formatKennitala } from 'kennitala' -import { newPrimarySchoolMessages } from '../../../lib/messages' -import { - canApply, - getApplicationExternalData, -} from '../../../lib/newPrimarySchoolUtils' - -export const childrenSubSection = buildSubSection({ - id: 'childrenSubSection', - title: newPrimarySchoolMessages.childrenNParents.childrenSubSectionTitle, - children: [ - buildMultiField({ - id: 'childrenMultiField', - title: newPrimarySchoolMessages.childrenNParents.childrenSubSectionTitle, - description: - newPrimarySchoolMessages.childrenNParents.childrenDescription, - children: [ - buildRadioField({ - id: 'childNationalId', - title: newPrimarySchoolMessages.childrenNParents.childrenRadioTitle, - options: (application) => { - const { children } = getApplicationExternalData( - application.externalData, - ) - - return children - .filter((child) => canApply(child)) - .map((child) => { - return { - value: child.nationalId, - label: child.fullName, - subLabel: formatKennitala(child.nationalId), - } - }) - }, - required: true, - }), - ], - }), - ], -}) diff --git a/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/differentNeedsSection/allergiesAndIntolerancesSubSection.ts b/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/differentNeedsSection/allergiesAndIntolerancesSubSection.ts deleted file mode 100644 index 050db767ee53..000000000000 --- a/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/differentNeedsSection/allergiesAndIntolerancesSubSection.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { - buildAlertMessageField, - buildAsyncSelectField, - buildCheckboxField, - buildDescriptionField, - buildMultiField, - buildSubSection, -} from '@island.is/application/core' -import { YES } from '@island.is/application/types' -import { newPrimarySchoolMessages } from '../../../lib/messages' -import { - getApplicationAnswers, - getFoodAllergiesOptions, - getFoodIntolerancesOptions, -} from '../../../lib/newPrimarySchoolUtils' - -export const allergiesAndIntolerancesSubSection = buildSubSection({ - id: 'allergiesAndIntolerancesSubSection', - title: - newPrimarySchoolMessages.differentNeeds - .allergiesAndIntolerancesSubSectionTitle, - children: [ - buildMultiField({ - id: 'allergiesAndIntolerances', - title: - newPrimarySchoolMessages.differentNeeds - .foodAllergiesAndIntolerancesTitle, - description: - newPrimarySchoolMessages.differentNeeds - .foodAllergiesAndIntolerancesDescription, - children: [ - buildCheckboxField({ - id: 'allergiesAndIntolerances.hasFoodAllergies', - title: '', - spacing: 0, - options: [ - { - value: YES, - label: - newPrimarySchoolMessages.differentNeeds.childHasFoodAllergies, - }, - ], - }), - buildAsyncSelectField({ - id: 'allergiesAndIntolerances.foodAllergies', - title: newPrimarySchoolMessages.differentNeeds.typeOfAllergies, - dataTestId: 'food-allergies', - placeholder: - newPrimarySchoolMessages.differentNeeds.typeOfAllergiesPlaceholder, - // TODO: Nota gögn fá Júní - loadOptions: async ({ apolloClient }) => { - /* return await getOptionsListByType( - apolloClient, - OptionsType.ALLERGRY, - )*/ - - return getFoodAllergiesOptions() - }, - isMulti: true, - condition: (answers) => { - const { hasFoodAllergies } = getApplicationAnswers(answers) - - return hasFoodAllergies?.includes(YES) - }, - }), - buildAlertMessageField({ - id: 'allergiesAndIntolerances.info', - title: newPrimarySchoolMessages.shared.alertTitle, - message: - newPrimarySchoolMessages.differentNeeds - .confirmFoodAllergiesAlertMessage, - doesNotRequireAnswer: true, - alertType: 'info', - marginBottom: 4, - condition: (answers) => { - const { hasFoodAllergies } = getApplicationAnswers(answers) - - return hasFoodAllergies?.includes(YES) - }, - }), - buildCheckboxField({ - id: 'allergiesAndIntolerances.hasFoodIntolerances', - title: '', - spacing: 0, - options: [ - { - value: YES, - label: - newPrimarySchoolMessages.differentNeeds - .childHasFoodIntolerances, - }, - ], - }), - buildAsyncSelectField({ - id: 'allergiesAndIntolerances.foodIntolerances', - title: newPrimarySchoolMessages.differentNeeds.typeOfIntolerances, - dataTestId: 'food-intolerances', - placeholder: - newPrimarySchoolMessages.differentNeeds - .typeOfIntolerancesPlaceholder, - // TODO: Nota gögn fá Júní - loadOptions: async ({ apolloClient }) => { - /*return await getOptionsListByType( - apolloClient, - OptionsType.INTELERENCE, - )*/ - - return getFoodIntolerancesOptions() - }, - isMulti: true, - condition: (answers) => { - const { hasFoodIntolerances } = getApplicationAnswers(answers) - - return hasFoodIntolerances?.includes(YES) - }, - }), - buildDescriptionField({ - // Needed to add space - id: 'allergiesAndIntolerances.divider', - title: '', - marginBottom: 4, - condition: (answers) => { - const { hasFoodIntolerances } = getApplicationAnswers(answers) - - return hasFoodIntolerances?.includes(YES) - }, - }), - buildCheckboxField({ - id: 'allergiesAndIntolerances.isUsingEpiPen', - title: '', - spacing: 0, - options: [ - { - value: YES, - label: newPrimarySchoolMessages.differentNeeds.usesEpinephrinePen, - }, - ], - }), - ], - }), - ], -}) diff --git a/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/differentNeedsSection/useOfFootageSubSection.ts b/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/differentNeedsSection/useOfFootageSubSection.ts deleted file mode 100644 index 995dfbcf5552..000000000000 --- a/libs/application/templates/new-primary-school/src/forms/NewPrimarySchoolForm/differentNeedsSection/useOfFootageSubSection.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { - buildAlertMessageField, - buildMultiField, - buildRadioField, - buildSubSection, -} from '@island.is/application/core' -import { NO, YES } from '@island.is/application/types' -import { newPrimarySchoolMessages } from '../../../lib/messages' -import { getApplicationAnswers } from '../../../lib/newPrimarySchoolUtils' - -export const useOfFootageSubSection = buildSubSection({ - id: 'useOfFootageSubSection', - title: newPrimarySchoolMessages.differentNeeds.useOfFootageSubSectionTitle, - children: [ - buildMultiField({ - id: 'photography', - title: newPrimarySchoolMessages.differentNeeds.photography, - description: - newPrimarySchoolMessages.differentNeeds.photographyDescription, - children: [ - buildRadioField({ - id: 'photography.photographyConsent', - title: newPrimarySchoolMessages.differentNeeds.photographyConsent, - width: 'half', - required: true, - options: [ - { - label: newPrimarySchoolMessages.shared.yes, - dataTestId: 'yes-option', - value: YES, - }, - { - label: newPrimarySchoolMessages.shared.no, - dataTestId: 'no-option', - value: NO, - }, - ], - }), - buildRadioField({ - id: 'photography.photoSchoolPublication', - condition: (answers) => { - const { photographyConsent } = getApplicationAnswers(answers) - return photographyConsent === YES - }, - title: newPrimarySchoolMessages.differentNeeds.photoSchoolPublication, - width: 'half', - options: [ - { - label: newPrimarySchoolMessages.shared.yes, - dataTestId: 'yes-option', - value: YES, - }, - { - label: newPrimarySchoolMessages.shared.no, - dataTestId: 'no-option', - value: NO, - }, - ], - }), - buildRadioField({ - id: 'photography.photoMediaPublication', - condition: (answers) => { - const { photographyConsent } = getApplicationAnswers(answers) - return photographyConsent === YES - }, - title: newPrimarySchoolMessages.differentNeeds.photoMediaPublication, - width: 'half', - options: [ - { - label: newPrimarySchoolMessages.shared.yes, - dataTestId: 'yes-option', - value: YES, - }, - { - label: newPrimarySchoolMessages.shared.no, - dataTestId: 'no-option', - value: NO, - }, - ], - }), - buildAlertMessageField({ - id: 'differentNeeds.photographyInfo', - title: newPrimarySchoolMessages.shared.alertTitle, - message: newPrimarySchoolMessages.differentNeeds.photographyInfo, - doesNotRequireAnswer: true, - alertType: 'info', - }), - ], - }), - ], -}) diff --git a/libs/application/templates/new-primary-school/src/forms/Prerequisites.ts b/libs/application/templates/new-primary-school/src/forms/Prerequisites.ts deleted file mode 100644 index ede49c5d1d6f..000000000000 --- a/libs/application/templates/new-primary-school/src/forms/Prerequisites.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { - buildDataProviderItem, - buildExternalDataProvider, - buildForm, - buildSection, - buildSubmitField, -} from '@island.is/application/core' -import { - ChildrenCustodyInformationApi, - DefaultEvents, - Form, - FormModes, - NationalRegistryUserApi, - UserProfileApi, -} from '@island.is/application/types' -import { newPrimarySchoolMessages } from '../lib/messages' - -export const Prerequisites: Form = buildForm({ - id: 'newPrimarySchoolPrerequisites', - title: newPrimarySchoolMessages.shared.formTitle, - mode: FormModes.NOT_STARTED, - renderLastScreenButton: true, - children: [ - buildSection({ - id: 'prerequisites', - title: newPrimarySchoolMessages.pre.externalDataSection, - children: [ - buildExternalDataProvider({ - id: 'approveExternalData', - title: newPrimarySchoolMessages.pre.externalDataSection, - subTitle: newPrimarySchoolMessages.pre.externalDataDescription, - checkboxLabel: newPrimarySchoolMessages.pre.checkboxProvider, - submitField: buildSubmitField({ - id: 'submit', - placement: 'footer', - title: '', - refetchApplicationAfterSubmit: true, - actions: [ - { - event: DefaultEvents.SUBMIT, - name: newPrimarySchoolMessages.pre.startApplication, - type: 'primary', - }, - ], - }), - dataProviders: [ - buildDataProviderItem({ - provider: NationalRegistryUserApi, - title: - newPrimarySchoolMessages.pre.nationalRegistryInformationTitle, - subTitle: - newPrimarySchoolMessages.pre - .nationalRegistryInformationSubTitle, - }), - buildDataProviderItem({ - provider: ChildrenCustodyInformationApi, - title: '', - subTitle: '', - }), - buildDataProviderItem({ - provider: UserProfileApi, - title: newPrimarySchoolMessages.pre.userProfileInformationTitle, - subTitle: - newPrimarySchoolMessages.pre.userProfileInformationSubTitle, - }), - ], - }), - ], - }), - ], -}) diff --git a/libs/application/templates/official-journal-of-iceland/src/components/communicationChannels/Channel.tsx b/libs/application/templates/official-journal-of-iceland/src/components/communicationChannels/Channel.tsx deleted file mode 100644 index f87569b3e866..000000000000 --- a/libs/application/templates/official-journal-of-iceland/src/components/communicationChannels/Channel.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Icon, Table as T } from '@island.is/island-ui/core' - -export type Channel = { - email: string - phone: string -} - -type Props = { - channel: Channel - onEditChannel: (channel: Channel) => void - onRemoveChannel: (channel: Channel) => void -} - -export const Channel = ({ channel, onEditChannel, onRemoveChannel }: Props) => { - return ( - <T.Row> - <T.Data>{channel.email}</T.Data> - <T.Data>{channel.phone}</T.Data> - <T.Data style={{ paddingInline: 0 }} align="center" width={1}> - <button type="button" onClick={() => onEditChannel(channel)}> - <Icon color="blue400" icon="pencil" /> - </button> - </T.Data> - <T.Data style={{ paddingInline: 0 }} align="center" width={1}> - <button type="button" onClick={() => onRemoveChannel(channel)}> - <Icon color="blue400" icon="trash" /> - </button> - </T.Data> - </T.Row> - ) -} diff --git a/libs/application/templates/official-journal-of-iceland/src/components/htmlEditor/templates/signatures.ts b/libs/application/templates/official-journal-of-iceland/src/components/htmlEditor/templates/signatures.ts deleted file mode 100644 index b964b5c5dfe7..000000000000 --- a/libs/application/templates/official-journal-of-iceland/src/components/htmlEditor/templates/signatures.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { HTMLText } from '@island.is/regulations-tools/types' -import { - CommitteeSignatureState, - RegularSignatureState, -} from '../../../lib/types' -import is from 'date-fns/locale/is' -import en from 'date-fns/locale/en-US' -import format from 'date-fns/format' - -type RegularSignatureTemplateParams = { - signatureGroups?: RegularSignatureState - additionalSignature?: string - locale?: 'is' | 'en' -} - -type CommitteeSignatureTemplateParams = { - signature?: CommitteeSignatureState - additionalSignature?: string - locale?: 'is' | 'en' -} - -const signatureTemplate = ( - name?: string, - after?: string, - above?: string, - below?: string, -) => { - if (!name) return '' - return ` - <div class="signature"> - ${above ? `<p class="signature__above">${above}</p>` : ''} - <div class="signature__nameWrapper"> - <p class="signature__name">${name} - ${after ? `<span class="signature__after">${after}</span>` : ''} - </p> - ${below ? `<p class="signature__below">${below}</p>` : ''} - </div> - </div> - ` -} - -const additionalTemplate = (additional?: string) => { - if (!additional) return '' - - return `<p class="signature__additional">${additional}</p>` -} - -const titleTemplate = (title?: string, date?: string, locale = 'is') => { - if (!title && !date) return '' - - return ` - <p class="signature__title">${title}${title && date ? ', ' : ''}${ - date - ? format(new Date(date), 'd. MMMM yyyy', { - locale: locale === 'is' ? is : en, - }) - : '' - }</p>` -} - -export const regularSignatureTemplate = ({ - signatureGroups, - additionalSignature, - locale = 'is', -}: RegularSignatureTemplateParams): HTMLText => { - const results = signatureGroups - ?.map((signatureGroup) => { - const className = - signatureGroup?.members?.length === 1 - ? 'signatures single' - : signatureGroup?.members?.length === 2 - ? 'signatures double' - : signatureGroup?.members?.length === 3 - ? 'signatures triple' - : 'signatures' - - return ` - <div class="signature__group"> - ${titleTemplate( - signatureGroup.institution, - signatureGroup.date, - locale, - )} - <div class="${className}"> - ${signatureGroup?.members - ?.map((s) => signatureTemplate(s.name, s.after, s.above, s.below)) - .join('')} - </div> - </div>` - }) - - .join('') - - return additionalSignature - ? ((results + additionalTemplate(additionalSignature)) as HTMLText) - : (results as HTMLText) -} - -export const committeeSignatureTemplate = ({ - signature, - additionalSignature, - locale = 'is', -}: CommitteeSignatureTemplateParams): HTMLText => { - const className = - signature?.members?.length === 1 - ? 'signatures single' - : signature?.members?.length === 2 - ? 'signatures double' - : signature?.members?.length === 3 - ? 'signatures triple' - : 'signatures' - - const html = ` - <div class="signature__group"> - ${titleTemplate(signature?.institution, signature?.date, locale)} - <div class="signatures single chairman"> - ${signatureTemplate( - signature?.chairman.name, - signature?.chairman.after, - signature?.chairman.above, - signature?.chairman.below, - )} - </div> - <div class="${className}"> - ${signature?.members - ?.map((s) => signatureTemplate(s.name, '', '', s.below)) - .join('')} - </div> - </div> - ` - - return additionalSignature - ? ((html + additionalTemplate(additionalSignature)) as HTMLText) - : (html as HTMLText) -} diff --git a/libs/application/templates/parental-leave/src/fields/Rights/GiveDaysSlider.tsx b/libs/application/templates/parental-leave/src/fields/Rights/GiveDaysSlider.tsx deleted file mode 100644 index 8b47d5acce87..000000000000 --- a/libs/application/templates/parental-leave/src/fields/Rights/GiveDaysSlider.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import React, { FC, useState } from 'react' -import { FieldBaseProps } from '@island.is/application/types' -import { Controller, useFormContext } from 'react-hook-form' -import { Box } from '@island.is/island-ui/core' -import { theme } from '@island.is/island-ui/theme' -import { useLocale } from '@island.is/localization' -import { parentalLeaveFormMessages } from '../../lib/messages' -import Slider from '../components/Slider' -import BoxChart, { BoxChartKey } from '../components/BoxChart' -import { getApplicationAnswers } from '../../lib/parentalLeaveUtils' -import { - maxDaysToGiveOrReceive, - defaultMonths, - daysInMonth, -} from '../../config' -import { YES } from '../../constants' -import { useEffectOnce } from 'react-use' - -const GiveDaysSlider: FC<React.PropsWithChildren<FieldBaseProps>> = ({ - field, - application, -}) => { - const { id } = field - const { formatMessage } = useLocale() - const { setValue } = useFormContext() - const { giveDays } = getApplicationAnswers(application.answers) - - const [chosenGiveDays, setChosenGiveDays] = useState<number>( - giveDays === 0 ? 1 : giveDays, - ) - - useEffectOnce(() => { - setValue('giveRights.isGivingRights', YES) - }) - - const daysStringKey = - chosenGiveDays > 1 - ? parentalLeaveFormMessages.shared.giveRightsDays - : parentalLeaveFormMessages.shared.giveRightsDay - - const yourRightsWithGivenDaysStringKey = - maxDaysToGiveOrReceive - chosenGiveDays === 1 - ? parentalLeaveFormMessages.shared.yourRightsInMonthsAndDay - : parentalLeaveFormMessages.shared.yourRightsInMonthsAndDays - - const rightsAfterTransfer = defaultMonths * daysInMonth - chosenGiveDays - - const remainingMonths = Math.floor(rightsAfterTransfer / daysInMonth) - const remainingDays = rightsAfterTransfer % (remainingMonths * daysInMonth) - - const boxChartKeys: BoxChartKey[] = [ - { - label: () => ({ - ...yourRightsWithGivenDaysStringKey, - values: { - months: remainingMonths, - day: remainingDays, - }, - }), - bulletStyle: 'blue', - }, - { - label: () => ({ ...daysStringKey, values: { day: chosenGiveDays } }), - bulletStyle: 'greenWithLines', - }, - ] - - return ( - <Box marginBottom={6} marginTop={3}> - <Box marginBottom={12}> - <Controller - defaultValue={chosenGiveDays} - name={id} - render={({ field: { onChange, value } }) => ( - <Slider - label={{ - singular: formatMessage(parentalLeaveFormMessages.shared.day), - plural: formatMessage(parentalLeaveFormMessages.shared.days), - }} - min={1} - max={maxDaysToGiveOrReceive} - step={1} - currentIndex={value} - showMinMaxLabels - showToolTip - trackStyle={{ gridTemplateRows: 8 }} - calculateCellStyle={() => { - return { - background: theme.color.dark200, - } - }} - onChange={(newValue: number) => { - onChange(newValue.toString()) - setChosenGiveDays(newValue) - }} - /> - )} - /> - </Box> - <BoxChart - application={application} - boxes={defaultMonths} - calculateBoxStyle={(index) => { - if (index >= remainingMonths) { - return 'greenWithLines' - } - return 'blue' - }} - keys={boxChartKeys as BoxChartKey[]} - /> - </Box> - ) -} - -export default GiveDaysSlider diff --git a/libs/application/templates/parental-leave/src/fields/Rights/RequestDaysSlider.tsx b/libs/application/templates/parental-leave/src/fields/Rights/RequestDaysSlider.tsx deleted file mode 100644 index 23145d97e8b5..000000000000 --- a/libs/application/templates/parental-leave/src/fields/Rights/RequestDaysSlider.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import React, { FC, useState } from 'react' -import { FieldBaseProps } from '@island.is/application/types' -import { Controller, useFormContext } from 'react-hook-form' -import { Box } from '@island.is/island-ui/core' -import { theme } from '@island.is/island-ui/theme' -import { useLocale } from '@island.is/localization' -import { - getApplicationAnswers, - getMaxMultipleBirthsAndDefaultMonths, - getMaxMultipleBirthsInMonths, -} from '../../lib/parentalLeaveUtils' -import { parentalLeaveFormMessages } from '../../lib/messages' -import Slider from '../components/Slider' -import BoxChart, { BoxChartKey } from '../components/BoxChart' -import { - defaultMonths, - daysInMonth, - maxDaysToGiveOrReceive, -} from '../../config' -import { YES } from '../../constants' -import { useEffectOnce } from 'react-use' - -const RequestDaysSlider: FC<React.PropsWithChildren<FieldBaseProps>> = ({ - field, - application, -}) => { - const maxDays = maxDaysToGiveOrReceive - const alreadySelectedMonths = getMaxMultipleBirthsAndDefaultMonths( - application.answers, - ) - const maxMonths = - alreadySelectedMonths + Math.ceil(maxDaysToGiveOrReceive / daysInMonth) - const multipleBirthsInMonths = getMaxMultipleBirthsInMonths( - application.answers, - ) - const { id } = field - const { formatMessage } = useLocale() - const { setValue } = useFormContext() - const { requestDays } = getApplicationAnswers(application.answers) - - useEffectOnce(() => { - setValue('requestRights.isRequestingRights', YES) - }) - - const [chosenRequestDays, setChosenRequestDays] = useState<number>( - requestDays === 0 ? 1 : requestDays, - ) - - const requestedMonths = - defaultMonths + multipleBirthsInMonths + chosenRequestDays / daysInMonth - - const daysStringKey = - chosenRequestDays > 1 - ? parentalLeaveFormMessages.shared.requestRightsDays - : parentalLeaveFormMessages.shared.requestRightsDay - - const boxChartKeysWithMultipleBirths: BoxChartKey[] = [ - { - label: () => ({ - ...parentalLeaveFormMessages.shared.yourRightsInMonths, - values: { months: defaultMonths }, - }), - bulletStyle: 'blue', - }, - { - label: () => ({ - ...parentalLeaveFormMessages.shared.yourMultipleBirthsRightsInMonths, - values: { months: multipleBirthsInMonths }, - }), - bulletStyle: 'purple', - }, - { - label: () => ({ ...daysStringKey, values: { day: chosenRequestDays } }), - bulletStyle: 'greenWithLines', - }, - ] - - const boxChartKeys: BoxChartKey[] = [ - { - label: () => ({ - ...parentalLeaveFormMessages.shared.yourRightsInMonths, - values: { months: defaultMonths }, - }), - bulletStyle: 'blue', - }, - { - label: () => ({ ...daysStringKey, values: { day: chosenRequestDays } }), - bulletStyle: 'greenWithLines', - }, - ] - - return ( - <Box marginBottom={6} marginTop={5}> - <Box marginBottom={12}> - <Controller - defaultValue={chosenRequestDays} - name={id} - render={({ field: { onChange, value } }) => ( - <Slider - label={{ - singular: formatMessage(parentalLeaveFormMessages.shared.day), - plural: formatMessage(parentalLeaveFormMessages.shared.days), - }} - min={1} - max={maxDays} - step={1} - currentIndex={value} - showMinMaxLabels - showToolTip - trackStyle={{ gridTemplateRows: 8 }} - calculateCellStyle={() => { - return { - background: theme.color.dark200, - } - }} - onChange={(newValue: number) => { - onChange(newValue.toString()) - setChosenRequestDays(newValue) - }} - /> - )} - /> - </Box> - <BoxChart - application={application} - boxes={Math.ceil(maxMonths)} - calculateBoxStyle={(index) => { - if (index < defaultMonths) { - return 'blue' - } - - if (index < alreadySelectedMonths) { - return 'purple' - } - - if (index < requestedMonths) { - return 'greenWithLines' - } - - return 'grayWithLines' - }} - keys={ - defaultMonths === alreadySelectedMonths - ? boxChartKeys - : boxChartKeysWithMultipleBirths - } - /> - </Box> - ) -} - -export default RequestDaysSlider diff --git a/libs/application/templates/parental-leave/src/fields/Rights/RequestMultipleBirthsDaysSlider.tsx b/libs/application/templates/parental-leave/src/fields/Rights/RequestMultipleBirthsDaysSlider.tsx deleted file mode 100644 index 1c0dfc346013..000000000000 --- a/libs/application/templates/parental-leave/src/fields/Rights/RequestMultipleBirthsDaysSlider.tsx +++ /dev/null @@ -1,119 +0,0 @@ -import React, { FC, useState } from 'react' -import { FieldBaseProps } from '@island.is/application/types' -import { Controller, useFormContext } from 'react-hook-form' -import { Box } from '@island.is/island-ui/core' -import { theme } from '@island.is/island-ui/theme' -import { useLocale } from '@island.is/localization' -import { - getMaxMultipleBirthsDays, - getMaxMultipleBirthsAndDefaultMonths, - getMultipleBirthRequestDays, -} from '../../lib/parentalLeaveUtils' -import { parentalLeaveFormMessages } from '../../lib/messages' -import Slider from '../components/Slider' -import BoxChart, { BoxChartKey } from '../components/BoxChart' -import { defaultMonths, daysInMonth } from '../../config' -import { formatText } from '@island.is/application/core' -import { NO } from '../../constants' -import { useEffectOnce } from 'react-use' - -const RequestMultipleBirthsDaysSlider: FC< - React.PropsWithChildren<FieldBaseProps> -> = ({ field, application }) => { - const { id, description } = field - const { formatMessage } = useLocale() - const { setValue } = useFormContext() - const multipleBirthsRequestDays = getMultipleBirthRequestDays( - application.answers, - ) - - const maxDays = getMaxMultipleBirthsDays(application.answers) - const maxMonths = getMaxMultipleBirthsAndDefaultMonths(application.answers) - - const [chosenRequestDays, setChosenRequestDays] = useState<number>( - multipleBirthsRequestDays, - ) - useEffectOnce(() => { - setValue('requestRights.isRequestingRights', NO) - setValue('requestRights.requestDays', '0') - setValue('giveRights.isGivingRights', NO) - setValue('giveRights.giveDays', '0') - }) - - const requestedMonths = defaultMonths + chosenRequestDays / daysInMonth - - const daysStringKey = - chosenRequestDays === 1 - ? parentalLeaveFormMessages.shared.requestMultipleBirthsDay - : parentalLeaveFormMessages.shared.requestMultipleBirthsDays - - const boxChartKeys: BoxChartKey[] = [ - { - label: () => ({ - ...parentalLeaveFormMessages.shared.yourRightsInMonths, - values: { months: defaultMonths }, - }), - bulletStyle: 'blue', - }, - { - label: () => ({ ...daysStringKey, values: { day: chosenRequestDays } }), - bulletStyle: 'purpleWithLines', - }, - ] - - return ( - <> - <p>{formatText(description!, application, formatMessage)}</p> - <Box marginBottom={6} marginTop={5}> - <Box marginBottom={12}> - <Controller - defaultValue={chosenRequestDays} - name={id} - render={({ field: { onChange, value } }) => ( - <Slider - label={{ - singular: formatMessage(parentalLeaveFormMessages.shared.day), - plural: formatMessage(parentalLeaveFormMessages.shared.days), - }} - min={0} - max={maxDays} - step={1} - currentIndex={value} - showMinMaxLabels - showToolTip - trackStyle={{ gridTemplateRows: 8 }} - calculateCellStyle={() => { - return { - background: theme.color.dark200, - } - }} - onChange={(newValue: number) => { - onChange(newValue.toString()) - setChosenRequestDays(newValue) - }} - /> - )} - /> - </Box> - <BoxChart - application={application} - boxes={Math.ceil(maxMonths)} - calculateBoxStyle={(index) => { - if (index < defaultMonths) { - return 'blue' - } - - if (index < requestedMonths) { - return 'purpleWithLines' - } - - return 'grayWithLines' - }} - keys={boxChartKeys as BoxChartKey[]} - /> - </Box> - </> - ) -} - -export default RequestMultipleBirthsDaysSlider diff --git a/libs/application/templates/parental-leave/src/fields/components/Slider/Slider.css.ts b/libs/application/templates/parental-leave/src/fields/components/Slider/Slider.css.ts deleted file mode 100644 index 549f7aefaa8d..000000000000 --- a/libs/application/templates/parental-leave/src/fields/components/Slider/Slider.css.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { style, keyframes } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const TooltipContainer = style({ - filter: 'drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.15))', - position: 'absolute', - bottom: '100%', - transition: ' transform 0.3s', - - ':after': { - content: '""', - background: '#fff', - width: 16, - height: 16, - bottom: 8, - position: 'absolute', - left: 0, - transform: 'translateX(-50%) rotate(45deg)', - zIndex: -1, - }, -}) - -export const TooltipBox = style({ - background: '#fff', - padding: '3px 1em', - display: 'inline-block', - lineHeight: 1.5, - fontWeight: 600, - color: '#0061ff', - marginBottom: 16, - transition: 'transform 0.3s', -}) - -const thumbAnimation = keyframes({ - from: { - transform: 'scale(0.6)', - }, - to: { - transform: 'scale(0.8)', - }, -}) - -export const Thumb = style({ - boxSizing: 'border-box', - cursor: 'pointer', - background: '#00e4ca', - backgroundClip: 'content-box', - padding: 20, - width: 64, - height: 64, - borderRadius: '50%', - marginLeft: -32, - top: 'calc(100% + 2px)', - position: 'absolute', - transition: 'transform 0.3s', - WebkitTapHighlightColor: 'transparent', - outline: 'none', // TODO: temp - - ':before': { - content: '""', - position: 'absolute', - left: 31, - width: 2, - height: 32, - top: 0, - background: '#00e4ca', - }, - - ':after': { - content: '""', - position: 'absolute', - left: 0, - top: 0, - width: 64, - height: 64, - borderRadius: '50%', - background: '#00e4ca', - opacity: 0.25, - animation: `${thumbAnimation} 1.5s infinite alternate`, - }, -}) - -export const TrackGrid = style({ - position: 'relative', - display: 'grid', -}) - -export const TrackCell = style({ - cursor: 'pointer', -}) - -export const remainderBar = style({ - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - right: -1, - marginLeft: -1, - height: '100%', - pointerEvents: 'none', - background: `repeating-linear-gradient(-45deg, #fff, #fff 5%, rgba(255, 255, 255, 0.5) 5%, rgba(255, 255, 255, 0.5) 50%, #fff 50%) top left fixed`, - backgroundSize: '15px 15px', - borderLeftWidth: 2, - borderLeftStyle: 'solid', - borderLeftColor: theme.color.white, - transition: 'left 0.3s', -}) - -export const progressBar = style({ - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - marginLeft: -1, - height: '100%', - pointerEvents: 'none', - transition: 'width 0.3s', - background: theme.color.mint400, -}) diff --git a/libs/application/templates/parental-leave/src/fields/components/Slider/index.tsx b/libs/application/templates/parental-leave/src/fields/components/Slider/index.tsx deleted file mode 100644 index f4322c472f4e..000000000000 --- a/libs/application/templates/parental-leave/src/fields/components/Slider/index.tsx +++ /dev/null @@ -1,316 +0,0 @@ -import React, { CSSProperties, FC, useRef, useState, useEffect } from 'react' -import useComponentSize from '@rehooks/component-size' -import { useDrag } from '../utils' - -import * as styles from './Slider.css' -import { Box, Text } from '@island.is/island-ui/core' - -interface TooltipProps { - style?: CSSProperties - atEnd?: boolean -} - -const Tooltip: FC<React.PropsWithChildren<TooltipProps>> = ({ - style, - atEnd = false, - children, -}) => ( - <Box - data-test="slider-tooltip" - className={styles.TooltipContainer} - style={style} - > - <Box - className={styles.TooltipBox} - style={{ - transform: `translateX(${atEnd ? -85 : -50}%)`, - }} - > - {children} - </Box> - </Box> -) - -const useLatest = <T extends number>(value: T) => { - const ref = useRef<T>() - ref.current = value - return ref -} - -const roundByNum = (num: number, rounder: number) => { - const multiplier = 1 / (rounder || 0.5) - return Math.round(num * multiplier) / multiplier -} - -interface TrackProps { - min: number - max: number - step?: number - snap?: boolean - trackStyle?: CSSProperties - showLabel?: boolean - showMinMaxLabels?: boolean - showRemainderOverlay?: boolean - showProgressOverlay?: boolean - showToolTip?: boolean - label: { - singular: string - plural: string - } - rangeDates?: { - start: { - date: string - message: string - } - end: { date: string; message: string } - } - currentIndex: number - calculateCellStyle(index: number): CSSProperties - onChange?(index: number): void - onChangeEnd?(index: number): void -} - -const Slider = ({ - min = 0, - max, - step = 0.5, - snap = true, - trackStyle, - showLabel = false, - showMinMaxLabels = false, - showRemainderOverlay = true, - showProgressOverlay = true, - showToolTip = false, - label, - rangeDates, - currentIndex, - calculateCellStyle, - onChange, - onChangeEnd, -}: TrackProps) => { - const [isDragging, setIsDragging] = useState(false) - const ref = useRef(null) - const size = useComponentSize(ref) - const dragX = useRef<number>() - const indexRef = useLatest(currentIndex) - const sizePerCell = size.width / max - const x = sizePerCell * currentIndex - - useEffect(() => { - if (thumbRef.current != null && !isDragging) { - thumbRef.current.style.transform = `translateX(${x}px)` - } - - if (remainderRef.current != null) { - remainderRef.current.style.left = `${x}px` - } - - if (progressRef.current != null) { - progressRef.current.style.width = `${x}px` - } - }, [isDragging, x]) - - const tooltipStyle = { transform: `translateX(${x}px)` } - - const thumbStyle = { - transform: `translateX(${dragX.current == null ? x : dragX.current}px)`, - transition: isDragging ? 'none' : '', - touchAction: 'none', - } - - const remainderStyle = { - left: `${dragX.current == null ? x : dragX.current}px`, - transition: isDragging ? 'none' : '', - } - - const progressStyle = { - right: `${dragX.current == null ? x : dragX.current}px`, - transition: isDragging ? 'none' : '', - } - - const thumbRef = React.useRef<HTMLDivElement>(null) - const remainderRef = React.useRef<HTMLDivElement>(null) - const progressRef = React.useRef<HTMLDivElement>(null) - - const convertDeltaToIndex = (delta: number) => { - const currentX = x + delta - - dragX.current = Math.max(min * sizePerCell, Math.min(size.width, currentX)) - - return roundByNum(dragX.current / sizePerCell, step) - } - - const dragBind = useDrag({ - onDragMove(deltaX) { - const index = convertDeltaToIndex(deltaX) - - if (onChange && index !== indexRef.current) { - onChange(index) - } - - if (thumbRef.current && dragX.current != null) { - thumbRef.current.style.transform = `translateX(${dragX.current}px)` - } - - if (remainderRef.current && dragX.current != null) { - if (!snap) remainderRef.current.style.left = `${dragX.current}px` - } - - if (progressRef.current && dragX.current != null) { - if (!snap) progressRef.current.style.width = `${dragX.current}px` - } - }, - onDragStart() { - setIsDragging(true) - }, - onDragEnd(deltaX) { - dragX.current = undefined - - if (onChangeEnd) { - const index = convertDeltaToIndex(deltaX) - - onChangeEnd?.(index) - } - - setIsDragging(false) - }, - }) - - const formatTooltip = (count: number) => - count === 1 - ? `${currentIndex} ${label.singular}` - : `${count} ${label.plural}` - - const onKeyDown = (event: React.KeyboardEvent) => { - if (onChange == null) { - return - } - switch (event.key) { - case 'ArrowLeft': - if (currentIndex > min) { - const index = currentIndex - step - onChange(index) - onChangeEnd?.(index) - } - break - case 'ArrowRight': - if (currentIndex < max) { - const index = currentIndex + step - onChange(index) - onChangeEnd?.(index) - } - break - } - } - - const onCellClick = ( - index: number, - event: React.MouseEvent<HTMLElement, MouseEvent>, - ) => { - const rect = event.currentTarget.getBoundingClientRect() - const percentClicked = event.nativeEvent.offsetX / rect.width - const newIndex = Math.max(min, index + roundByNum(percentClicked, step)) - onChange?.(newIndex) - onChangeEnd?.(newIndex) - } - - return ( - <Box> - {showMinMaxLabels && ( - <Box display="flex" justifyContent="spaceBetween" width="full"> - <Text color="blue400" variant="eyebrow"> - {min} - </Text> - <Text color="blue400" variant="eyebrow"> - {max} - </Text> - </Box> - )} - {showLabel && ( - <Text variant="h4" as="p"> - {formatTooltip(currentIndex)} - </Text> - )} - <Box - className={styles.TrackGrid} - marginTop={1} - style={{ gridTemplateColumns: `repeat(${max}, 1fr)`, ...trackStyle }} - ref={ref} - > - {Array.from({ length: max }).map((_, index) => { - return ( - <Box - className={styles.TrackCell} - key={index} - role="button" - aria-label={`${index} months`} - style={calculateCellStyle(index)} - onClick={(e) => onCellClick(index, e)} - /> - ) - })} - {showToolTip && ( - <Tooltip style={tooltipStyle} atEnd={currentIndex === max}> - {formatTooltip(currentIndex)} - </Tooltip> - )} - <Box - className={styles.Thumb} - data-test="slider-thumb" - style={thumbStyle} - ref={thumbRef} - {...dragBind} - onKeyDown={onKeyDown} - tabIndex={0} - /> - {showRemainderOverlay && ( - <Box - className={styles.remainderBar} - style={remainderStyle} - ref={remainderRef} - /> - )} - {showProgressOverlay && ( - <Box - className={styles.progressBar} - style={progressStyle} - ref={progressRef} - /> - )} - </Box> - - <Box - display="flex" - justifyContent="spaceBetween" - width="full" - marginTop={9} - > - {rangeDates && ( - <> - <Box> - <Text color="blue400" variant="eyebrow"> - {rangeDates.start.message} - </Text> - - <Text color="blue400" variant="eyebrow" fontWeight="semiBold"> - {rangeDates.start.date} - </Text> - </Box> - - <Box textAlign="right"> - <Text color="blue400" variant="eyebrow"> - {rangeDates.end.message} - </Text> - - <Text color="blue400" variant="eyebrow" fontWeight="semiBold"> - {rangeDates.end.date} - </Text> - </Box> - </> - )} - </Box> - </Box> - ) -} - -export default Slider diff --git a/libs/application/templates/public-debt-payment-plan/src/fields/components/Slider/Slider.css.ts b/libs/application/templates/public-debt-payment-plan/src/fields/components/Slider/Slider.css.ts deleted file mode 100644 index 3e3ad4350ded..000000000000 --- a/libs/application/templates/public-debt-payment-plan/src/fields/components/Slider/Slider.css.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { keyframes, style } from '@vanilla-extract/css' -import { theme } from '@island.is/island-ui/theme' - -export const TooltipContainer = style({ - filter: 'drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.15))', - position: 'absolute', - bottom: '100%', - transition: ' transform 0.3s', - - ':after': { - content: '""', - background: '#fff', - width: 16, - height: 16, - bottom: 8, - position: 'absolute', - left: 0, - transform: 'translateX(-50%) rotate(45deg)', - zIndex: -1, - }, -}) - -export const TooltipBox = style({ - background: '#fff', - padding: '3px 1em', - display: 'inline-block', - lineHeight: 1.5, - fontWeight: 600, - color: '#0061ff', - marginBottom: 16, - transition: 'transform 0.3s', -}) - -const thumbAnimation = keyframes({ - from: { - transform: 'scale(0.6)', - }, - to: { - transform: 'scale(0.8)', - }, -}) - -export const Thumb = style({ - boxSizing: 'border-box', - cursor: 'pointer', - background: '#00e4ca', - backgroundClip: 'content-box', - padding: 20, - width: 64, - height: 64, - borderRadius: '50%', - marginLeft: -32, - top: 'calc(100% + 2px)', - position: 'absolute', - transition: 'transform 0.3s', - WebkitTapHighlightColor: 'transparent', - outline: 'none', // TODO: temp - - ':before': { - content: '""', - position: 'absolute', - left: 31, - width: 2, - height: 32, - top: 0, - background: '#00e4ca', - }, - - ':after': { - content: '""', - position: 'absolute', - left: 0, - top: 0, - width: 64, - height: 64, - borderRadius: '50%', - background: '#00e4ca', - opacity: 0.25, - animation: `${thumbAnimation} 1.5s infinite alternate`, - }, -}) - -export const TrackGrid = style({ - position: 'relative', - display: 'grid', -}) - -export const TrackCell = style({ - cursor: 'pointer', -}) - -export const remainderBar = style({ - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - right: -1, - marginLeft: -1, - height: '100%', - pointerEvents: 'none', - background: `repeating-linear-gradient(-45deg, #fff, #fff 5%, rgba(255, 255, 255, 0.5) 5%, rgba(255, 255, 255, 0.5) 50%, #fff 50%) top left fixed`, - backgroundSize: '15px 15px', - borderLeftWidth: 2, - borderLeftStyle: 'solid', - borderLeftColor: theme.color.white, - transition: 'left 0.3s', -}) - -export const progressBar = style({ - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - marginLeft: -1, - height: '100%', - pointerEvents: 'none', - transition: 'width 0.3s', - background: theme.color.mint400, -}) diff --git a/libs/application/templates/public-debt-payment-plan/src/fields/components/Slider/Slider.tsx b/libs/application/templates/public-debt-payment-plan/src/fields/components/Slider/Slider.tsx deleted file mode 100644 index 184edb47d1e6..000000000000 --- a/libs/application/templates/public-debt-payment-plan/src/fields/components/Slider/Slider.tsx +++ /dev/null @@ -1,282 +0,0 @@ -import { Box, Text } from '@island.is/island-ui/core' -import useComponentSize from '@rehooks/component-size' -import React, { CSSProperties, FC, useEffect, useRef, useState } from 'react' -import { useDrag } from '../utils' -import * as styles from './Slider.css' - -interface TooltipProps { - style?: CSSProperties - atEnd?: boolean -} - -const Tooltip: FC<React.PropsWithChildren<TooltipProps>> = ({ - style, - atEnd = false, - children, -}) => ( - <Box - data-test="slider-tooltip" - className={styles.TooltipContainer} - style={style} - > - <Box - className={styles.TooltipBox} - style={{ - transform: `translateX(${atEnd ? -85 : -50}%)`, - }} - > - {children} - </Box> - </Box> -) - -const useLatest = <T extends number>(value: T) => { - const ref = useRef<T>() - ref.current = value - return ref -} - -const roundByNum = (num: number, rounder: number) => { - const multiplier = 1 / (rounder || 0.5) - return Math.round(num * multiplier) / multiplier -} - -const toFixedNumber = (num: number, digits: number, base: number) => { - const pow = Math.pow(base || 10, digits) - return Math.floor(num * pow) / pow -} - -interface TrackProps { - min: number - max: number - step?: number - snap?: boolean - trackStyle?: CSSProperties - calculateCellStyle: (index: number) => CSSProperties - showLabel?: boolean - showMinMaxLabels?: boolean - showRemainderOverlay?: boolean - showProgressOverlay?: boolean - showToolTip?: boolean - label: { - singular: string - plural: string - } - currentIndex: number - onChange?: (index: number) => void - labelMultiplier?: number -} - -const Slider = ({ - min = 0, - max, - step = 0.5, - snap = true, - trackStyle, - calculateCellStyle, - showLabel = false, - showMinMaxLabels = false, - showRemainderOverlay = true, - showProgressOverlay = true, - showToolTip = false, - label, - currentIndex, - onChange, - labelMultiplier = 1, -}: TrackProps) => { - const [isDragging, setIsDragging] = useState(false) - const ref = useRef(null) - const size = useComponentSize(ref) - const dragX = useRef<number>() - const indexRef = useLatest(currentIndex) - const stepCount = max - min - const sizePerCell = size.width / stepCount - const x = sizePerCell * currentIndex - sizePerCell * min - const thumbRef = React.useRef<HTMLDivElement>(null) - const remainderRef = React.useRef<HTMLDivElement>(null) - const progressRef = React.useRef<HTMLDivElement>(null) - - useEffect(() => { - if (thumbRef.current != null && !isDragging) { - thumbRef.current.style.transform = `translateX(${x}px)` - } - - if (remainderRef.current != null) { - remainderRef.current.style.left = `${x}px` - } - - if (progressRef.current != null) { - progressRef.current.style.width = `${x}px` - } - }, [isDragging, x]) - - const tooltipStyle = { transform: `translateX(${x}px)`, marginBottom: '30px' } - const thumbStyle = { - transform: `translateX(${dragX.current == null ? x : dragX.current}px)`, - transition: isDragging ? 'none' : '', - touchAction: 'none', - } - const remainderStyle = { - left: `${dragX.current == null ? x : dragX.current}px`, - transition: isDragging ? 'none' : '', - } - const progressStyle = { - right: `${dragX.current == null ? x : dragX.current}px`, - transition: isDragging ? 'none' : '', - } - - const dragBind = useDrag({ - onDragMove(deltaX) { - const currentX = x + deltaX - const roundedMin = toFixedNumber(min, 1, 10) - dragX.current = Math.max(0, Math.min(size.width, currentX)) - // Get value to display in slider. - // Get max if more or equal to max, get min if less or equal to min and then show rest with only one decimal point. - const index = - dragX.current / sizePerCell + min >= max - ? max - : dragX.current / sizePerCell + min <= min - ? min - : roundByNum(dragX.current / sizePerCell, step) === 0 - ? min - : roundByNum(dragX.current / sizePerCell, step) + roundedMin - - if (onChange && index !== indexRef.current) { - onChange(index) - } - - if (thumbRef.current && dragX.current != null) { - thumbRef.current.style.transform = `translateX(${dragX.current}px)` - } - - if (remainderRef.current && dragX.current != null) { - if (!snap) remainderRef.current.style.left = `${dragX.current}px` - } - - if (progressRef.current && dragX.current != null) { - if (!snap) progressRef.current.style.width = `${dragX.current}px` - } - }, - onDragStart() { - setIsDragging(true) - }, - onDragEnd() { - dragX.current = undefined - setIsDragging(false) - }, - }) - - const formatTooltip = (count: number, max?: number) => { - let selectedAmount = count * labelMultiplier - if (max) { - const maxValue = max * labelMultiplier - if (selectedAmount > maxValue) { - selectedAmount = maxValue - } - } - return count <= 1 - ? `${selectedAmount.toLocaleString('is-IS')} ${label.singular}` - : `${selectedAmount.toLocaleString('is-IS')} ${label.plural}` - } - - const onKeyDown = (event: React.KeyboardEvent) => { - if (onChange == null) { - return - } - switch (event.key) { - case 'ArrowLeft': - if (currentIndex > min) { - onChange(currentIndex - step) - } - break - case 'ArrowRight': - if (currentIndex < max) { - onChange(currentIndex + step) - } - break - } - } - - const onCellClick = ( - index: number, - event: React.MouseEvent<HTMLElement, MouseEvent>, - ) => { - const rect = event.currentTarget.getBoundingClientRect() - const percentClicked = event.nativeEvent.offsetX / rect.width - const newIndex = Math.max( - min, - index + min + roundByNum(percentClicked, step), - ) - onChange && onChange(newIndex) - } - - return ( - <Box> - {showMinMaxLabels && ( - <Box display="flex" justifyContent="spaceBetween" width="full"> - <Text color="blue400" variant="eyebrow"> - {formatTooltip(min)} - </Text> - <Text color="blue400" variant="eyebrow"> - {formatTooltip(max)} - </Text> - </Box> - )} - {showLabel && ( - <Text variant="h4" as="p"> - {formatTooltip(currentIndex)} - </Text> - )} - <Box - className={styles.TrackGrid} - marginTop={1} - style={{ - gridTemplateColumns: `repeat(${stepCount}, 1fr)`, - ...trackStyle, - }} - ref={ref} - > - {Array.from({ length: stepCount }).map((_, index) => { - return ( - <Box - className={styles.TrackCell} - key={index} - style={calculateCellStyle(index)} - onClick={(e) => onCellClick(index, e)} - /> - ) - })} - {showToolTip && ( - <Tooltip style={tooltipStyle} atEnd={currentIndex === max}> - {formatTooltip(currentIndex, max)} - </Tooltip> - )} - <Box - className={styles.Thumb} - data-test="slider-thumb" - style={thumbStyle} - ref={thumbRef} - {...dragBind} - onKeyDown={onKeyDown} - tabIndex={0} - /> - {showRemainderOverlay && ( - <Box - className={styles.remainderBar} - style={remainderStyle} - ref={remainderRef} - /> - )} - {showProgressOverlay && ( - <Box - className={styles.progressBar} - style={progressStyle} - ref={progressRef} - /> - )} - </Box> - </Box> - ) -} - -export default Slider diff --git a/libs/application/templates/public-debt-payment-plan/src/fields/components/utils.ts b/libs/application/templates/public-debt-payment-plan/src/fields/components/utils.ts deleted file mode 100644 index c6541a3ae05c..000000000000 --- a/libs/application/templates/public-debt-payment-plan/src/fields/components/utils.ts +++ /dev/null @@ -1,82 +0,0 @@ -import React, { useRef } from 'react' - -interface UseDragOptions { - onDragStart?: () => void - onDragEnd?: (delta: number) => void - onDragMove?: (delta: number) => void -} - -interface PointerInfo { - id: number - startX: number -} - -export const useDrag = ({ - onDragStart, - onDragEnd, - onDragMove, -}: UseDragOptions) => { - const pointerInfo = useRef<PointerInfo | null>(null) - - const handleDragStart = (event: React.PointerEvent<HTMLElement>) => { - if (event.button !== 0) { - return - } - event.preventDefault() - - pointerInfo.current = { id: event.pointerId, startX: event.clientX } - - event.currentTarget.setPointerCapture(event.pointerId) - event.currentTarget.addEventListener('pointermove', handleDragMove) - event.currentTarget.addEventListener('pointerup', handleDragEnd) - event.currentTarget.addEventListener('pointercancel', handleDragEnd) - - if (onDragStart) { - onDragStart() - } - } - - const handleDragMove = (event: PointerEvent) => { - if ( - pointerInfo.current === null || - pointerInfo.current?.id !== event.pointerId - ) { - return - } - event.preventDefault() - - const deltaX = event.clientX - pointerInfo.current.startX - - if (onDragMove) { - onDragMove(deltaX) - } - } - - const handleDragEnd = (event: PointerEvent) => { - if ( - event.button !== 0 || - pointerInfo.current === null || - pointerInfo.current?.id !== event.pointerId - ) { - return - } - event.preventDefault() - - const deltaX = event.clientX - pointerInfo.current.startX - pointerInfo.current = null - - if (event.currentTarget && event.currentTarget instanceof HTMLElement) { - event.currentTarget.removeEventListener('pointermove', handleDragMove) - event.currentTarget.removeEventListener('pointerup', handleDragEnd) - event.currentTarget.removeEventListener('pointercancel', handleDragEnd) - } - - if (onDragEnd) { - onDragEnd(deltaX) - } - } - - return { - onPointerDown: handleDragStart, - } -} diff --git a/libs/application/templates/social-insurance-administration/additional-support-for-the-elderly/assets/additional-support-for-the-elderly-flow-chart.drawio b/libs/application/templates/social-insurance-administration/additional-support-for-the-elderly/assets/additional-support-for-the-elderly-flow-chart.drawio deleted file mode 100644 index c79273a3eced..000000000000 --- a/libs/application/templates/social-insurance-administration/additional-support-for-the-elderly/assets/additional-support-for-the-elderly-flow-chart.drawio +++ /dev/null @@ -1,158 +0,0 @@ -<mxfile host="65bd71144e"> - <diagram id="2TvxPNVq2NB_tCsKO4EG" name="Page-1"> - <mxGraphModel dx="1058" dy="1502" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> - <root> - <mxCell id="0"/> - <mxCell id="1" parent="0"/> - <mxCell id="23" value="" style="whiteSpace=wrap;html=1;fillColor=#FFFFFF;gradientColor=none;strokeColor=#666666;" vertex="1" parent="1"> - <mxGeometry x="-40" y="-90" width="720" height="810" as="geometry"/> - </mxCell> - <mxCell id="24" value="Draft" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="90" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="25" value="Tryggingastofnun submitted" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="200" y="210" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="26" value="Tryggingastofnun in review" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="465" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="27" value="Additional documents required" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="120" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="28" value="Approved" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="29" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="26" target="27"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="525" as="sourcePoint"/> - <mxPoint x="320" y="585" as="targetPoint"/> - <Array as="points"> - <mxPoint x="180" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="30" value="" style="endArrow=classic;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1" source="27" target="26"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="70" y="615" as="sourcePoint"/> - <mxPoint x="70" y="675" as="targetPoint"/> - <Array as="points"> - <mxPoint x="70" y="615"/> - <mxPoint x="70" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="31" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="24"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="200" y="240" as="sourcePoint"/> - <mxPoint x="140" y="120" as="targetPoint"/> - <Array as="points"> - <mxPoint x="140" y="240"/> - <mxPoint x="140" y="120"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="32" value="Edit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="100" y="165" width="40" height="30" as="geometry"/> - </mxCell> - <mxCell id="33" value="Reject" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="460" y="535" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="34" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="230" y="165" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="35" value="Additional documents required" style="text;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="110" y="515" width="65" height="50" as="geometry"/> - </mxCell> - <mxCell id="36" value="Approve" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="250" y="535" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="37" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="10" y="535" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="38" value="Rejected" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="400" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="39" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="26" target="38"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="340" y="545" as="sourcePoint"/> - <mxPoint x="200" y="605" as="targetPoint"/> - <Array as="points"> - <mxPoint x="460" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="40" value="TR makes a<br>state change" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="280" y="295" width="90" height="40" as="geometry"/> - </mxCell> - <mxCell id="41" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="25"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="319" y="350" as="sourcePoint"/> - <mxPoint x="318.8899999999999" y="465" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="42" value="Pre" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="-30" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="43" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="320" y="45" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="44" value="Tryggingastofnun abort" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="330" y="210" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="45" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="44" target="24"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="570" y="240" as="sourcePoint"/> - <mxPoint x="630" y="120" as="targetPoint"/> - <Array as="points"> - <mxPoint x="510" y="240"/> - <mxPoint x="510" y="120"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="46" value="Edit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="510" y="165" width="40" height="30" as="geometry"/> - </mxCell> - <mxCell id="47" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" target="26"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="391.1099999999999" y="270" as="sourcePoint"/> - <mxPoint x="449.9999999999999" y="465" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="48" value="In review" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="215" y="360" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="49" value="In review" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="359" y="360" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="50" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="30" as="sourcePoint"/> - <mxPoint x="320" y="90" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="51" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="150" as="sourcePoint"/> - <mxPoint x="390" y="210" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="52" value="Abort" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="359" y="165" width="50" height="30" as="geometry"/> - </mxCell> - <mxCell id="53" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="150" as="sourcePoint"/> - <mxPoint x="260" y="210" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="54" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="28"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="525" as="sourcePoint"/> - <mxPoint x="400" y="615" as="targetPoint"/> - <Array as="points"/> - </mxGeometry> - </mxCell> - </root> - </mxGraphModel> - </diagram> -</mxfile> \ No newline at end of file diff --git a/libs/application/templates/social-insurance-administration/additional-support-for-the-elderly/assets/additional-support-for-the-elderly-flow-chart.png b/libs/application/templates/social-insurance-administration/additional-support-for-the-elderly/assets/additional-support-for-the-elderly-flow-chart.png deleted file mode 100644 index d5278a3c18dd3573235c5dbf9cc690921cc91323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62440 zcmeFa1z1(v);>;2NQ<;cgQ6&Gq`OfOP)aF5*mQS@fT$R>grp!LlF}t%pb{e8rHGVZ z5la5YLbk`F=YHRf^WA%Y|9gGT^W4o^bIm!|m}8Fdj(3c??llcHWzwAtJF&2^NRO&0 zoWjDw>A=FmJxGWTSG+DOdcgl+yPQ&%!^&^nGmV8MHsq>!+SSg}+{zY>#VH{F?H8wj zBK$V9GO=(rvExMXS($MPC~%@sC@ptS4K*Dnl$zXGS9zD?>PHln;WD(aH?c#1YolRe zf#&5$u5NW==c(*$;%Iro!3=E+?aVyCwc_U!6#4d~nb-CeK|bgR>C3_yGu~D=-!5oc zd2bKE&$r#o&B_ezvi<P4ORf$Mwysu=zrSeeU~i8$b^TpK6K7`!kKZ>lcd*@l%k5De z;YEJ;5OP7&)Wr7JtGZTZu9n~0ilBtQ%>`+#g0`}-#Ei@@B>L@+oe8G#_M5m^nwU9w ze0zTD(w5|$9US0M#jQn=N82LO!^q{^b4q{V?)UjSqwTi`|DPW~34EKFyNRva_RD>{ z;Nt3qd0P)lD_69pqlqcfzyp?)Q$Wtr)y@|F;)kE0KeqA?whqo)Zy}(x^$)It0-0IC zG%)w<9qge4ITu%F2OBizA}2~fXzL%`*`5j7*%ggZm2a0EO@4cw->Dbc!4B=}>;>Z4 zet`GLwp_P0i&u2}Z;#)WNf@<#&GLsO62YjJ$+l`(eD53da$DT+!_ISSJ^pxYP)B|d zrh>DHx$7?yb#`#GH$x*jhY0Y0k?)@%7L?HM#qtMI;r}D4U>^I2gd+HhP_&%AEG(?- zElgZo9n9_B>|y;}+|Joqxw?W(w(P(U+V@YF72oe=g~DjY4=VJ3CoG}AMp#ye#GKLY zR%nlZy|^$svc2Pu2yL(TKSf;I2KNW+C2MA8<!a?%Z?ffb98BHpzy!H$$;-*j%K6_w z!M-ccw!{QQ{+SZncD+AJ%+b-=!TsMrFh5(Vf39G*J@gNP`DJgR?agEn^Z<6-)Yins z#mW?{_Ya;B?P=wD8gBBzW#so6<o6-L?Y|TdABDN4fGj@phq=RV9ul14cklU&o8;U2 zhxBC+E^lj?Z(SpQZjFSw_uD|ot?wg!dmXgdFVN;E=L*Ky!OeNg*~25KZHwe;;%tH5 zh7{j$&bAL!{_ZIGe%SJYf8b*=*PPL|CazZQ+i+tWviy;Y*&ac|!3x04cONf+@l=@o zgWBFdm@d9efBUK5ytkd_|JD&^BVs!G_Rha_1Ug`XU=B<(M`V6rV!p%PpT^-A`MpOu zBKmE@zoCk6J#M}37RLB4)88)r53oaEyZe7gb-ybWMvHz>-YqryuD!ogs(+5k|DCG4 z?Hzunx?Ae}uTov%-z$O;|KF*(Klda2Q$K%_;{H6$_H@4oA3y2&PtE^yHQ%-r|A?CZ zBi8nB+Zcbn%KlD0w<3stm3pFnhQ63+3S;U1TFc6hd2riAe}_Dnj{YPC{dpYJ_PBpZ zLw|0Mnb)6YiNV{ze|$fvs3O48Zx?@vX&}G_SNbD#FtN3=um?zB3f>(Jk+hsUguzz8 zILL0_u(L8VLjrO+XS9ozx5>G!;2Z%E+ujFA8bLWuK?S&C;^yiAZ4m#8gqOcZ65CPu zk3l=;((jSTcf7IvO8-b$&i|8Q@&7@PfKizrqjHRA!>G;Q6O;@5%5a=QTO+K{&ynVT z+NvD+DRdJQ*mfg7;5bZ^KYdlU4BhW`islvt@E^Y_D2&o$Z08^BmH)F<*;arb?AMR+ zG+-wIU_%7t%zlWgIgtqA+hu3;UkI_cch*nd_fNGj7?uVT6kwp$kGj15c0cMeCMNlZ zEX;O@^rO_i#nk^*W{i9>%kl>%1_K*^To%k8_=lF|S90jTCT1&_^YdQ$gGKp2voOE% zPv5-pzXAVr<R_H!PvxHk{zU!>L4E&!=AQ(%l;~d-B?(}VD#oTA`6>GTYonx}!!04c zpE~-JqNJa3-k%+qW90FJ|I<1JQIMU94J2uSCj*FJi^MzUoZ*)R^2^25#1##<Of609 zfsg!8N8+fT7(&!GL--@3ipkmi=q53e|3}>9k$*9*^0$%L-}%PxwECItFc-P=8}p6) zf$UENt$tIlznS>n+Km4)Bg4P#54Mer00u~5min(XG6MV}heSj~fBW}M8r$7|&(>kO z{R<}N?_i~m{K|!BIRCoU|LN&n46@ml051k={tzf&Xd%8I_ZsFojHLb^F5<|qT*QAN z=@umYIjMv3sXwd=W&wU&6wKoNLyPh&74ZiJ3MS_qoPVW^{@L0qfO+9<?fs_~Ct%j( z2S5Ld=l<VPq(4yre@(h`JE{7&fZD&$;vd;ognu7GUJw%-W0w18hyT}l0imDt=DUT% zY@EMf_y5*Zr{GVa<^M*=|J)ukuRn{BKk_Rz^It+9cE>Mr{{xZ{qicV<z5SJ!`Dd7s z?+NaIC&2kTQ?sS3|1!WS%72KT?>CtEd-#dM7$S_l_-hT%kt3pqe&|&6_uc+q!p~oc zrlbEu+1!6x?gxe8$G1I;00v$C0Jtz~{-+y&U#YJDE)9?&NQDhpLIJ_wZ<2rJ(qN*@ ze+1(Fz4d8-PiX(Q!^yuE8ve`d@K4ok7~uA|8s47+Dhz#u>E|y1zP}^T7yJ_lr2p#7 zpIH&fkJ-kU#r|u(wE#v-F!2Tk&SN_I6Sd}7dPw#UL+t-F&-}Cb|D#$N%=-S>o>}l$ ze(G<A=KtNw{}x;M=VJQrOws?rR{oVh``fkV?_hcUcIW^1>gHby8c=+{3+Vo}Y095~ zgy7#>CjWC<{Fkcbzu*-9GI#X5^K}1XtvkSx-_AmQ!zRBSDcyo-a1nD@74!G^gRFX8 z*T=B1Sg?*N$ZB~Sy-OmvrQO}Vp?jZ}%{@)2aCv0o>7$f$xFM9)ebI*t&k>(&$EL1U zxqpYHkN8Ps-<?PPbHz_Xd9T+TIIU6mV$;i`R-9f5f4*`#%6DlaY4X*{vBa9*m6`;B z_l6!xz8AWyJ>Hv-`(xp;U||!=VBt`}&ulKouM@GGGrFh_`5>~q6*jd?KirpT!P}Vh z+jz#;!C!#o9Q50rtZP_GRa~|Pc;7o>p%BLoc71oie~tCG-mTgEBl3wDX=T3+hK&0} z4U3&=btj7-W(F)+0r7;!={Ap^Dk2lwo?9VRy~?v%oafA2v)sCv!i7UO9e>}664Qpl zU*;ViUq@j9)~EkYZEGR^E4BaX+V<}Ie|3jaPy}G(;`dcJjT<OMZ{kN8@!dOe<Vb}9 z10!SJr_F~P%51RhwP4$yY&=m!L3q=j#C3CHeYoI|VO0eOzvYIt;n#4@uVd`PX4#^M z*@y}OOJ#eV@-Q9?A8A0oVYOIiFy(>CN8$HkQk5P%&nS0MTus7K5?i8{*`V0RkFDx@ zt-*$>s-=WXisEwG{x}&Hd@wt7T3pJ6cq%C!G;Lj7yN%tQGB3r2YI+o1k%=QRPH)cL zTPV+R4ySIVyFisI-e~GRO@OPNy*=51{Y3#-co#YSBgl00b_L2*;PLpDYNb8yyp`?h z86QcBC&vZ1&KNoe%B0|RF}~=rGP&Lyl+NeId4TZJF))<bMQ?Tl_`?v7scG4n^2^Nd z11R7xd9CO~777vU70bsobiR*!V&Ab)>;m(vVjW40$Hwa4zEj_FfmHu&QJ{<ph>G>z z(L)qhFJUPiuuW|jw)Jf!!(pYYR|!hzs+3{bg+rHj|FY8P{Y6f3!b=J;Xk`2woB$O< z<B~@-4FB!?XR%x|D|s4BZ>n!s+I^&H?*3yk_l0(4{oZ^-_LHsyN8~$%k6|BWz@Y^B zDsu?klVjP9!%CmG`o3<o%5B!1`TU0fx2d*=nW}N;?%uvoHSF|^X=%jgeSdCoE5mhL z?MceWT5awZ*FeYj!#W?|&nPR;VvqE2Jz`_}?(M{go{vK=FZ=au^3X4(R&ym6yEKKI zUO%DHlysfaU=(#uH*|csV`;JXtbTz}&AT@@)ybM1gVG&_HcvI~#d!rzHK>4}UXDd% zyUUrJg2adoX!h=1@yoKh^*M*7jn(&qXDpJ?>nn@Jc4hrfSC-~%Mtzr)?CRE+gv_2( z=%b^x-}&Q`-Ipg5eWE5h5oPR3c68KOft8X_#<&W!?H~!EOo}U>97>OxeOT|3V6Q=^ zn)uw2L3mZWvHF14Bf5Ih3l=vH7F{J}6lyVao`}{J8((iaP!Of|YzgOkUs&uf7yu7E zVxfp^&!(I1HS&2873+N`*2sIBCe<vRTlJQ4FTk4B;%FVcMkC+FZmUc0`U=y00nV6Q zwRtOYL|B;MCiykMIj?r5uzlM*#ze4snY}QriZUhd@etuMFdHQ$&Z_Z88l~1g$m=`Q zEM9CE=kN`rysQA$gQp`G{3;6xBCT{KJ#w0n^PgY1!?1BY?KM8jWtDH^o9!!JUEzC@ z!NwFE%7GI=N2n1IDvNf$Bx4K`=!o`B*MC3Iu9q*+D)Ja+&RP97-e!ndJz1jPd+D8( z>9bI`x>4gmQrm^8_Oh;1$9JSTtE}L&??k4pm3{^n^necUoUq;u^M%>Ga@(1%du6Y$ zAE-)x9Uj`ZNP6_RbAZegUY1HwKHpba78%&dSc-PhyH>8`9qyN9;Q+%G-o-&ns33=x zMqSo6#aLErMi3AVXiNUoO#>DRBJ5zDKDji9zLiKOJUPH>WJgaxj~sY>dM3mnwI;L2 z-6;qG>4|X&HtxWQps2UJ%zNa&o&S|$NwMk8@9FEaBqb${Fx#UZKmIhN7+l+FO-)US zqc`{Cv1sVQ0(Bfy9;3J#3qm%S<L`K7ecYUaFarKk&~7Bc382zwI2DxLvB!jRO#akq z??_TSIc``cLz7R4$CyeZRX?qrhE7jNNO*iaG#H>X3s{Z7sOWSS3MuUDj#pL(sq$() zYOM&>^-&jPvS4?n@*Fp!xayDf^uV5oug1GWW6W>@Zh=Oao=PxarC`C1vtoMp`lOK) zfBQst=yTTJP(1|}Hhtm7`l@;-O?{8&#?BlgOQ!K>VIEb}v~znlW)#gpS65+xTr$`( zbU4v@olzPMxjSwe$XwHsdecVE6rPn1ZUyGYPMuuBiWTsQ!Z;}Mlci!hJZJz9I!&J_ zgP%l*-P^~&DvyP8k^+n<tH4n?EF3gA%0tE8Psp$dFR6l$Dyn*ek4=at3qLOfb6~?y z75JHwl@1ZfB}ModlWc|yKjq;k@{Z5|@uyk$({}(SNCr%>uqzUx4GJ-En^QY)GQ)D{ zz;YDvC=bCTj=+4{RZiT2pN$}#<6LyFU=km}s6V?aN)J<;V1fArsVNX)6DlC{Dg2TS zQ}aB5#XeUmfkyyVqn?EQ1rHL?jB#TJm)x$RpoX|5fCh)oiUt>nV5H$a*SjufAt1$g zYpY}7Nx<SR8L&JGgvVqQ;{_2cSFa9_NV~D}AOX`ioACc$Lk)Gsl_ZamLPeT0Pu|`# z4b7I>_%a?Q)O@h`*4sB*QC|Q(IHzJcL>iuIDKzZ99~)=~Ib#jZQE{m{_OEX&*OeEy ziZ$yPc}>upR}VQi_fzW{nCROUDxT1){rZ+M!6Mn~U1_gTald)Oi@knpPJ?c}hBgd0 zZXi8=fuM7)TJ8y~i-J1Ky@(4_sX?~IFNBKuO`rC?O>nS(DZTk1>HMe0rH{{;#ZAT2 z(u~;GKfjbtczf1weQ|ircV(fl_pG0!Hz_vscIhZAcxJvCXcC?R^tKn=E|X(D_R`nM z+k<PLU%pp)u=c6h{qqaq!Tom=&t>bVgL_$7oSod5zjNbI(SFU$)1$S%CzPsumgkpV z`fYS_sVCb8?e)$Qe;>qr!7=mv`<msl0|gH{#N6LaJ!RlOcPWHPyhr=~;v|!p>wWv- zs{Ve9+jceHi$%gCo{teflBOI+rb2lNuqMj~W>6O$97Mxj5^)H2Sm&H}YM>rIOn;Vs zEJS#uB13)Uu;14kzAMvrg>3uyVk<9fcI%!M4di8CZ{)t+7tSjG?lHM^36+}2L-1_) zh}Sl3ewv+=Z@s>{>|w`_STV%&)4xx0A853H@KI^dB#3Fq3qd2pUXw{eo*#^>SLdtk zhTVD>6H%{_&|d|_pOi?i3kpo}JX+=yd)}DQ`HzaatUA;y!ycn<)Mnbr%flXLEfOuv z($Tf*l8aig<M!2aZ%MwirOGGC)^2XB+BNf*m)PW2J`Gu%h&@|Xh%ONxa+DVbWg7A- zs9nj<x!5@nF?-4c1=hy`HgaNs028v|((xi0rVHve2F#P(bP`-zMTfOe-KeLiZf4(w z2vUY4mJIB?pT*r~x?-*`WW*X-0|Y3oUTP6|S@LoG*&uKEP{${VSD%^>JESRvI7eHB z81fJ0<dwxU`K^7Vn@-1Zk^0e&`^y|ehVxzOe`bE$*PT)7yeIJ;;nDM*F=x!_eLgjE zClSS@>i89tm7)(8KH0^q<PCtR?AczQiaO1L(tPpxit$8QotMQI!XiS^ixJ!qv#`T* z_7HquPE;EK^ZEOOf@!I#4<+|y1#LoHWO(4p0IF4b^L%e+Y7kkkzJuhlhDnC<ig4Z6 zkXf4^d*(s=>bzl>my%^m12)`39oFwfKGfsR)hv&=P&<RQ#==QOqJhkPU*YFNN)_vL zzm;ij@lVg$hj9a<<;hn`>G<ls7p6=c>ekEbiW<4{J-iz^V_m7=3ig~%Yf#A%TOSJ~ zuR6XwU~{;7COhXHpxxW|A`ncb&(rHY<}_b9S?1Pr=9!q=j9I~hPsbdq!YPn93O-_k z5JUcxh|rFSWeeqGq`6GC@(zw^Z>X(G`h9pvQ1<2Z4fSQ-D+6Nc(eDNDG*d27Bd zAH6WUS7pm^P%wZ2x4a%n4z_$xfL@5JBZ~?l(y0ZQ@MI!65rkA4*afzQYs(VA-krO9 zNCEb)Ov+^}rTB(lY%Itd_7SpujMF7)uYN!t(}*x9MYQ+BO)RAWb;GMWVFWDd|9>|O z_(B-WDBQ}xz%U@#fs0Ra|LN1GU+Tm8w`2n@OOoo6BO;sU`@;5!b|?kYy&`eTD3$jc zsq^z&CT4#jhL|G_30R(w3>4V#RKQt^aIc>BN*4<su#Ll;9y48yi0OOr;spib@vyMT zk!~phD3ESTI5qA`m9M*Gx93tLI=TU1U^Q(=1hNdbuE=EY46l&iQz}+L+I|5yKNm)$ z0B&B!m;uKwr$a043=6XIYk+E(j+5U(=F(=b9dCW)1}>r<XF)qIOv@fY+GOfSXEMBa zgt(zGX7JU1@e~Nh7;siA0|wZ)HGnb<aGOg3&_$PujAVm%+_lgqKbt+*n^7DZUj4yK zkL=f9$C2DMvqYvE2UE4U7%dARM}ny2!pWnthYW|h=t?B0RfKdW<kcnu$?Xm_esL0l z0m)%NX*~)e5Ebq>dZHy^!`grHAt#urF3YI^x=Zka8~}gRf`f@+E@ugi@A#g)vms)Z z>GmNY>q1O0+<yb}OJcS$zleo*ibKPS*wWhin3L8Oo=7b7DwUNMQkb?J7P}#_U_J<9 zCwEHuMx#O}v0=sTd-yDd{iz(<=_CNB%m70ru^L>tf`wPasxh6D!H`5c%BGybW60tA z7A{7@Hsa=d`V~;ot8aA0<>v6CSm#xm@D2n5KB5ORVu2T90`L6}R<hVsf8jaZ^c`yB z3t*HX*l^vYmq-l$UDjVp@37hPgM<q&NO*ApP3;HYf0rcc6$t$uk#R|pg~1z=DgEt1 zL73dB4VAEHv=EpWJr6%aF_l2ChYu4vg@}cI-(zqx{Z#dq=$94G>D$V`y)XwW+>^WE z0(A6Y;4&VBvlg?o2@8~vkYE$017u4=X<PxVE8_NVZ%THG5J+)|Scqc;X9a>vx<oSx z?_&fJj~A=FxonDqxg|Xv+=~Nbj!q!~9AT!8l@={I&SoJq$~G+^jK>lV{E8S6Z|h|& zyaz1)?VseXv|N-KZD~XC!95hbe3J}48TdcIo(FuMDz^I9Dt1`d|0Ec!w28|kaXSKP z<5JPaa1RZhEGhuC2fC1iU~MV*Mk2QFjr5lYMg`(#nxjO77Oc`mETv{*dK58^uYi1W zJ=|*o_1=$*7J)8&AS!%EPb-SMLUZ(XB`ghucO6G9oeqKW?Z6I>p+%X|;H{Wni3xyv zQDE~l@tYi>izN_tCn{OYEqi^TQ(b6z$i;$OI*7hanBci8;O%roOgokEL7zTxXqcxh z0&*Gzcq2xdPb$<`A1bwCIS4L?%5;y^`HJeL2cKKF*aQqRqY4}E+=1@t<qmxUn-+x0 zo+N2%4qI>+1s$KUzj$?FVc~F2lWmFA$`m`GyawBrTl{4!GdY8d4i8Lp4c(#*-TTo( z=bjJ_`faXLwV`GQN^|V0=gNA@9nP*klio1FV77L;+9U}9-%_P2*XeT*i`8CMlYrMV z11UrhsZ~+z!^NiG&jjG+c7AGdT>B@{XV)Vxyp6N4%`5G(CRzk;q%4A6c|iRAgK?6@ zC)cPDzgY|fN%s{pCTjqlnT9@drAy;s(t6AD!*f8+lmf_jrY7-GK_6x~2Qb&ekIQtV z*g~CA(!1m(ojIMp&q|Yw&57KarGX_7ZLE+q4&*N$fxeO{A4dhq@Zs@XxfiLSFVA!* zVz0P+u3hCs%u)mG*}luPMwUR!xa2WpA30poCRf(2qu&o`$R40-oz1Yu4t?r51eL9e zA^sh3ZP~*>f<Zu7cC-1__Ex>}`o8)FL25~2{dwgh#{{cNW_F3-JwoFC<LX6Q<7!X$ z5NVURT~*Sf)`>f-om)`xdM6{w?5Z!g;+|A_0-x!OSlf>Dqh;+%jQ!Q`YiEN?vOBE( z`hgai3zsJ=1mweA(Gyz6oK-@Tr9|*qJyC&$0uPj*0u`xHipR5F4*1a}R%=6lZZUC^ zJmBqHbH9s6DUSN&F@aC7UYs8uq@NDJB^bCwMD?y}Hs6IkXLvmQrdkn#{17<2@vhG_ zjC4SSTc+tACx^zgL$6==`~1M<<y||EKED!SPN^W9a;pE7q9y@3&)37NVzarXGwk-h zmkc6C?8=7`WKs@jXpUA%ui9B+Wh%`bNT7j^<A?3UJW9KDhzC?=13MOYI`qiV>l724 zbyaI@wuVo_TUUI2UMjqyr52E75rwyLHa9rQhEpYKql;_b#<^>5vv&WN$IKhXH@Vf_ z1A_Y4eF3cYA($D$hf;*)T9l9mrY^rG%}%jOIc#rP3#z$dWZG|i_H4fM-C<ER;PI^V z#OEJ;R_i@r=%rF<ki989K)<M>?jRW@sQ!B6F!pec{`)?8xA^Xp5JFBD?Ndw?qzu2- zL+YiZf3N!pA1(S=%Bc`Cr{2)%Irh8@laI;7TgnFQ#h)z(3$!}=wp&lMIYC%4aH#s- z>kYqGmubu9%11{IRZX$!7D~Uq%5HF61tARAmq&#QJ8``bl$ObW7X8xVKG!y+l~Jsf zQc-wdR4&EAiGj}r1v4;vAX2S>$8(leNKi0(pS7Ge+IsEF$A|OmhB=SCeNuy+CtH(F zD1E-EE>*aL=5)Pz96HA8O4pL-=!I3g<A>eyK2v)Qx9sK0GcWkaHf}M$LYU&<yH+7~ z7P>y~C7`c{$HU8nYCo@di)vxd-MF~+CjQ--P5xLb=2)d>@<sT^xK2NLbuOKqM*2<H zfpvG_)V1Q6i%e$p8g~L^T^|1~>zJ<mHJ9@crZ36vIH!_?RY0M}bWa!eT*-q-_C@11 zVYl=QMhbRAvBo>3bnHxd3ntw8K_rX*taeN$Gr{dUHFbG9OlIRb#A~%x!HeABfOtPr z%EdwnEET=pVf?2mJ{Zq%T=4$<c*$h+v7&u}4Jyj}eZCz194KNN(oXC9m`lc;t-j8s zN0uHOVspwaelD(hQW5^5Q-=Pv8IcE^?oTDqoe8JCPj)d%up*tW<KfX`a$2ZIXK~m3 zN%c*E!ymOSHf7Q}e*N?H?=$dcbTqfDp`-Jy!T7WchFfkLJe7AyX}-NlD=B0JxG3D+ z*H-_-dl0ept#+TY4haeAX=|f!ze8y*Y(FHz2rfoYP*Cxf<o<H5df&uF4J65f%2Eiv zM&yXA7M!a^3#1RH?j2+Pj%$uPd{N6EQzl5cM1x)VPDK(%2YdGT^Tdd0MZYDyfyEs8 zsG~U9mak*6ZG7MXtnz2J7ZR1b#_$sl%*%1fkIUV+5WAP%j_LrI8`t`HY=Wh}?xXY6 zZl5T+={{YVl&>zhWLkYXRwvbLDmXE<0MTUXrg4^wHJ?w&dk*wOQZ9eg%W^s~0zS)& z%A(eQ&=I$Fhs&#*#t(MJvXo+dF^*zrGRA)`wKq6QmiuA^ncj%!&2juaVN0k^vA%}1 z2l1wNnsW?eB3zhXMjkS~3;b9T&C#bHuVV=t7rc2cLH7f(7iU`Fg|jF(ODBEdLFb7& z%gHQyi~F?B%;Y))DZ3u45O8ugYQgZKF1%W0YMM*b#WdVRb;bGTpQkbpI3!&U4PEtY z-^u4E2vhCWc%9fmIfic_)=20nhR0KVS}VIu%l-@(KjoOz-kSpxFR0lKjpnYN$H%L{ zE|zFgOF4IE@k-sX9kD?Nn)7)+a<kU^N&uqby$*EUzE3R)`?2lo<6fgb1QV&gRM5@L zl`v>LP$EDR@QRqb-uHnc5n;+sSVkTer(<7Xiid8SE37f&2%y@jmAorXO`2q$5oD!; zk&CKcy}7dGYpoRh8Tp!1gYmNY+w)$OcxURDUx?zjICn+H2d^TmSg1(`Kr?>yRepXL z`C5dN>_fcBTT{ofN)0p}<5kH6vWXm-3mB-mX#hAIvYgLs4aE{3d)J3@UcsB;f0F01 zWPJGTLaE7<*MyGDheIU=bOGlWN*-uEND2LM?mF;EV-^N(FHBQ@L%hF!p)!nMpSAyf zlXTqO(NQfRlbua6EWA{PjnPb!O(|mhI>-H2JxkL?3RK`V0d;zqgWxOxxoNV6mtD)h z)DXINKhYDu%kYv$6?k|W0PkF>!$mUAL$g@*;#+L3O$y~go$sb7JFo8)(48MQnPJe= zp_^{o&B?3`k|2Jli*qJn>ez_ai}3>%uX&`g=f@{{`L2*a{YTawlh7f5_T4pj`zP(} z``gp-Zd{}o<b=)BaPs$?Czu$;6<&VLK8Z}++w9<>#};xhYp&DuN4CLiA~Q^9H5K>d zT98ZxSJfSCaqs&K%}UUyfA<XmqhQy>DuUaB!ee8chfZ9Sx;3@)p!>qU7Z8vnyP1$i z0m`o8kfSu;_Cex|I8t#_J?8ODl11$aCp%$65{AjaF{JS7LI(7u#yCU%#5DfXHI|c> z>iEp0QpfRe>|oU_PDBMjPb55)rstpu75n(b-9%9jvx?G`uU{0<;)3NzA~?<M0OPBy zKjVF7u_ttj^s25lhJEeqPqp<z6Dz}F<?r^TJwZxUa9-SIbWC~VovhQZ>biql+}pGE zJ{xJ+s%QG6*n@V#u8nx?Lo=Y3`Jq%68OkZSTvc-ZOp+b?#KBQyAm?dEvnX3Y-^CNn zQ#+7NL-9rBE^qZUd%Mj3cJ>a%cP0Zv&m?zW4!;1L_lr9pLhHk%H!Oh?wJ~&Z!p$c> zdx*B~bE|mSbG93Odt6#hcAwXyEp9>GII4d;R72JEvQ_)nwGWTUg$8YlzjE*w?p9!F zUiD;<w%GaTQAskyZ9ZHoS6|syO=m7at4+32AOVLCJ^1kG?Aq4?zjYfQ0DyBn`VOTC zo23-G$0|%}B?}1*${M*6v@Y*!W^~lXc05&$cc}Kux#~BO$88^7BAQPe-P~Aq?>S@9 z59vJ#d24`0iH1N&mNn4mcPT6<IMfz;y^VWj<TEE|(S->OY#5qpJJ0BT5U3CdW0DLN zpBE9|T>CtCjXU{1<TXbXKhIacA8_zn)n8p2bg*j`oy--jNngGZ&;9z5DiKFz80|+F zuFf~~4-gJNBO?1jzzlx**S86StU-HFCw8G)h!0g5S1alHNxRKxS=?Wc*OfLvKgt%3 z9P-bh4|C~Y{m>>)4kWUjx#`njC!5zm>XrkF>6hC0VrpS);o4=B?zi#PqH_&p7hk7- zTWV=#wxBohbbIt*Jg&N<iH^8;){Mc|@=b_A+F^2uS|P3-tBN=riSg_K9LpcsF0{V6 zdhwnFDAv;HL=Cx4Qv1myk22FxQS++(H6I=kyLX*buC(sj>+{a!ZnAf_<mVQFB?v+W zfEu>U$*;-=+;(Ap;HH{bBV=a9HIE#%uNPnnraHx*;y_C#GKRGZ47A<G*GZ4@+8<cx z*HZgV{LDg&yg;WzNtpfS+N8AIr#Fr6z=~IWHfu6#S|0InsQ%P+AP*9h_PLboN_~BW zriMH8{YD@LnC;0+NCKeWlcRgs2jFwA#mi(Npa-9PZ7{xbK%=OyeH>P(44~vFKG~kB zjT3dyU4Bx|sfd^hv4-w(z_m8EN_<xJ*lZI%wX&HiA2hH$>i2%3XVK+_U@Vh+pUFJ# zGJtjSoPye_PN~LqwvRYt7YzuvmzI`L^)<x8CCj^_rDcZ47To3#6*+-Ih})cFjVyWh zAMJE+lO^asySbv<i_i8Aj6>j-^zr1PM)x#ql9w@OFMN%YJL-&^JZ+p9&VXI2om=tx z`h09~ILU{nj1EH`-0QJ*YYkHC3!02Vwzm>A>o$>0`NJNuudo!h&%;^gaeIik6ODm` z4%FAR?r$SFB)RWy86~};FD~174J5q#fo!)Fe|JAn{5`Psr4T-L;*;;SMY$rO*qya= z;Fb8S-cPa4`F&0p6(Ob7vt(T+4Uqbv6}*7YXgfwy7F;NGep<>AQt$nR&-Tu?EHK#Q zzUm2U`C@f9$z0#QGGn!^tJ=e1IaPl-f@ArH0<r&17xwTsQbtc+#tq5vMf8ID8#PlY zIaWPvl;N#>6WPh(y4bBd2#NlA)o7B)3n}n=ovnQ(LLFj<r*%s~k4!WUsnZ;;{c<OV zB4;P>c>2yFo|i!77YMWppgK_MD^KN~ZL#tdJW;6Uux51vTD=A?A&j%lhwEHTn=Kt6 z6+X{MnY0YTs^anF&12$^2iq(b!X&w1cd<4kYe5Mp<fZu$q~@@k&MNM0UfDoXS7=)H z!VX%4G1n2;b%{<rspR^oFW#2gRfkKvPVq)h!RG$7Hhb+r$G7eCBm=*{4EU}W1J4ud zgKM3EWv`eGI}c?9276Xkbk2S}mo5;S5l&RQv0`)AVL}!aXH9P!Hv<OiIX)2nArUcO zwb6yAB5D^pj-MDco6<l#L*z1_aHC27(n{I6uB?;!sJy}hS9~BKEQYwg_7FQ$@wNPe zF-PdK=3dw1l9!-k4SPs)Xc&FRA~tUOF2$`b9h+5%p9vp9bt6R`tKsQEnr>Ow^Q7Vb z+{0Z-&(0)zl8>+B^4e!L-;Q*psv4R{xffc~llgFCBEbhm6-6JIqNlg=Wy)c`IO7ui z&>K?yxxj<dO*<boa4T7TR~)uVBPZR*6Xb4w1_CJq^#`i=NwhPbY1`2sKUk=6BSJ?# zm*ghdqTZ}n99P^SdepiUF?-ULfLw;iN$#HNw4ed61>P>OvJ<FoA+ziwHnDpp33=G_ zcw8nJbAeRvvag!v()AsI_cD+!A@j|uT3;HROZJ&}S`L?79_l2M`eMB7L1*=n_GI*{ z40L+&il`=<A(2J|oa`9RYIt&RNv)o)wCSvTwe!K+FR$}6#*wH~n@5|wn`*d>Ew5m$ zoBJMfR`(uIvhLt#qSF-N0Wtk21q&gI;p-nc0`NSaTAo_j?pmf0sibSgi1%z|(9Q$Y zR*T))1!t;#ZGqTnRmcOv<XT9{fOyFW4|(N_ed4MM3)5XiX+ayLIlJ<t7NOFl7;Wrp z+(B^Amz|Y;eNuX}f0#JGZo~WTP4{;vZJt3!aB^iBU8EhNv*Q%6nBA6T7RyOE*}=8F zaY{a;A2<Wc8LL@-N^y8(BRQIhsw8$HLV54BbB9#>OUdQL!OVByd=hdrW=+^7_w=MG zliN7FpDvRD|8aar@tcR)ZpwPI0rgF($)4Jb8Se)j>gIa<z3-x9v`l&e(bVjDGbKxO zy{XsVYU>(KxI5lDqo^k?s>Rbg(|g-zzS1tqt;cD-Ji6@8bZUdbOV5X#!|n3S@m<WL zF<u!3>yV);($+cC;QM@+57W$TU1~k@TiMQetAS*a;hxW!JSt*Wo~zhMP6eQuj=rbm z+_a#!{c?1ETyZUth(_WXCr~|Vmu}oFW=kPxfpsF*&9i?0!Y%vs%&Q{nkxQ{}@DsJw zf(NCrwG+BKQiYP6ggm2*7ybJo<uq2CcWXqit;Z|dZ1%vWH(BZKtd4sd2CA-e9GxTW zX}hk$stCP>6mQJff~=~xopynCWpcazp_@a8tzRY|DCP)X@|BpoEpX;-Yu^MgU5CPS z6yp752874(G+nH*@Uj%RsZMTLipUpD{iz5{uX<$iCMbeTUb)Cp9>D4GJ32VGrUsrr z%oDOV=#~P=lpBfyZa7w!^PH+G#Kh;!42<8dICn1(c6Gg3aTSfE%<@nUGb?s-p8_-& zl<!FQ)g=9KTg1UEm16uE4*zTURK_{YHh`{b`sw%Y21u<DMIuff?Ao`Yl)xlBW|>j2 z-$~W=M4!3m$qqnjVg8iOY6wcD4rad)?7BxxIhIp+Y>J~m)I`<w#gw@>;`>`%h! z#9IEyVn!lG6zuw8*Rwbl;V}_6^>{%pvHgW_CX3UQfj;`kj5GA?3=tYBBM3b9<kl?+ z9G*PCQ;kKHbo<Ty)-X2}0Vihiqc0p?9;yW8*mcD@;fCsM#BqfcChWh{rEaVo))j#- z&9eM)jFXH__8Y&Z4?y+|)f{EL0&TTWUwhi=4Rn0cs%Ko+bzz-g*9QXxNut7IDHD03 zqR4zt)r2!io@$_fXFT*QFj^?<315e7<53hf(h0F0k@1~%J*sz8uVVK~DLwWbQr5nD zj~7YUv8h0Vz^Kx<>3r>iY0V3A?hDU%J4_QyN*Q?*r6ENams>t^Hj;`+y%=n!qncaR zlVPq~+>a6iE$pzEw+4ut!`a}K!B$UNq2-LGImpE;P;!r~C3Nq-*CghA^WzUy=v~?9 zrc)+DghlP^KU$w{+(TtpD_9@8ccSxP^VP~Qi=(lHorosi;28IW0Peo7vl&A$iHp4a z<0CG{cLWrZr^f^a+D*OnEEq@vX^+8@rGANfa103zWu5dYk<c*KXi=fMRcy8oD$~rs z`q<N{x=J2duPCcwl1yLhRF|Gp4p)c}1tp7PH@~<WqIymL=M)=&%irDRI-{V){{ooA zx)3^k9IB)pZ!SKytxhBG?b<<fa;#+N8S$l;UD}Y*&<(jx)vN%T8P}C9*>k<JgYd+O z6PaaL>*aPi%5wsa=m<PLzv>hb9y?~>1{AL}42eQuoJ?hzdG7}Jg+u2J-W`BAv6kni zy#Z881lItH?Sbss@>x~as`I{dd5b}u4eWV~qzW0)&w}W#u`+^A6~AiAng$DYxA|tf z1ZzEM9~CQ#L>_+@D)t=ls}>6(1w07ORz_P)e#wh0kA~bz!uief7^@8anhvjQjTVEU zXE$E8<|0)uH$T397fAu3$gb2G!eYCOqP#f!b*yttosL$rcs!CFb0<b2)tB9|!|G-) zyf(snEW(EDl@GJ2;e?U(txgf=cJ!R2*U&!J;$rPd%&fv3^)!sxp?ugq0l~FB_cXZ^ zB)puD8$=VR5|c+^q1YjOgA`378+exMeDqDQOZ?Z{*>0%tbX&H#(73MeDb6d@iIQ-g zx~pTQ*x)O{8yS3)6B@_3(pU3A<ITX@BIbgPvr3m9tK&o)DlK3c(ujxNCtK^PvC}$J z5a_J&#UX0wS###;M8FB-U6NmNP3y3ASB`fp4`dvtz3V}P&->+al;*`~a#8BX2|AmH zXIZ$hHRHK*+`><JR+3Y#`bv0=sh*~SF;DbWJomuiAN4Qo%~ur|4E$Pq>@M@|mM9X( z8ipdWrh9&zGbKH;ar>W~XFgnPU)T^D5qjdI%BPS;{9v!076Hwwvsn|kl(YVB6gUB= z-;c9e(rS{?P2cJY-PcR!P#;}}RTFiIodl=!mQ{}|-9UNkofv3&nGRY`(da|VzTIIQ zqtLP`PI&cldHv0NbdRj3jSM}fApxt#RsKl|*BiV9!LGK~l_MQ&g~yIbb9PUCpz(~f z=9p!XSU*6|d4?cW<LaE$-s|>-69L<ko5Rmd?#nGxyJ6PonP9%lrA6$6&eJN~<3(gM z$t^dr&sB%{TukEIg=7Npo=#7&Pz;jN;cADvojD$Llw|j83eBU53a&=6eacD#VW_gz zFD=&`uY>^<mCBY=b)&jEhrdU^*6nb3B&kMTZFjP6(E`!(CgGDz2ivbjZOxFJH&h$G z>dl3Bt{VGUjDzhaR(5y!z~^)0w8v@-ry2EYQ*%4}K0y^$rYFbOr|!6+yrU{HPRHZB zXY}X13O^Eaj`l5t@Q!NqSlN0(O`E1f<ayJro;aF;<V|Qh-zh|jJ#Vvy3t69FS9&eB zr%$$rdcEW1C*rNaj)k%hd@$`4E<2xQ*vF~9huzQ_o5*hkGo{&DJ>MM3!$KEQ-!LZB z7EUlWiG}cj*T9Im?^B2wedhpWLR*P@+rY#4!%Q&JGza^bHQ^KUgQm^p@q!c`qFWPY zExfirc5A}7dYn}%&ux`u?$Z4rC;OB<aUnYKh*jhZ>CLria)ZZLw;m9@L@~#SHXum7 z+Tcy5*m(allx^fWl=L^a<K}aYLYVb3#=yDJy;sG>#l;-zjaJ{6L$+!Va%gESZ!N_? zK#YV2+Mr?%QY!+9noq5QnB4DACi}D^q2kc%gm#6kVe%%=F{$1@AJ-c|dqe0li}jh8 z`&FAMC{&<0Jc*E&JNB{+sFU8Obtp*I3x;??$_7wQ&2$|xZ%Oz~FDTr4scIh=rEBEX zura#1>KFH--F?h&ZJfF1t~#^N`eLtz$RsYggt1|jYoSB!*QZbtn?LmWK$A)_S*Chz z%WVA(#RNHu(xKi{w_;dX!mmPJmGY3<A>x2O`})PVt6iGv{Sb3IF#D|)@&ZGl_7(|H zA;3F9eLOCYh>EKZiiWmul%L-dO65MJcn5;#iX^9}^zL(|y#qWsx#t*d?+3g<H6L6; z;yklkVPZ4;e7?L2LaK~h^L9a+(4NfD1^%eu7Yuq^1(LO^S?no>_`4~ob7XPQt~_b@ z!s?tm#M$EVwTnIaTP4!~#xGT8`fY9?S*0rS9V?%qv}(9)!1}-sakAy=>gc9DccSCP z8icO_CZrD_xY>4TSEYeq(9`xkNQu!FQG(DpkotQkg*8<dpL4eELTFI_Z4~<Y;@n^_ z0?VHr{cM>#>^}Gcg3EUmUCvrL4yBW&w79b@!EPGO44*&7d-oQHiBf8M!XA8Obxg^; zr_@H*#@hP&6~!89$4rY9Bt}<#4ZP5J%PZhmrZ&#L{WM!pR~E`7K5&cQG|@{d;pvB0 zkLMuISf;5a+5isZaP@rE?7NEbPyy{FHL0&=jDprth7i2BhP%%XRc4f?6&AKbN=pl& z+4HJqvLU1osyxeZw`LZp@>-p9@SAPzw@eE$utinV8aM_3Z1l?Pp=|I2d|k0eYIDt{ z`dv|TVq6VUM+O{<>tv2x4OB_>A)zni*vjDg%R_Z*&a?%pHJ_piH;~*LQb5;iXs$0h z9ry^MFzd%xNL^-Cw*&VP*Ul5eK?D;yE=Xd!eD5ObotU((eS9s#oGHqIsjKMe`D*i_ z3a9yGica4lVbZI2#Q-qOh&bsq5<XXHPU*HbI2MzSMyFgMp+AR|@e71yS3pH~#?tE> zhX)Y40#%I4%2q8v=!X{mXCk(e-V67^W51-Io`}(J)xM&gvGFR1*>(x&fc%Ia^5b!u zOsIw#i{$o2AP0)43Gy~pp#o2YeFIpvL3wh?H>zLK!lY)h2T;wZ5?~GT1=gc`$X=w1 zZZ7+6_P)4Bj+LEhV^n(Kxj~Mf{uKiyJ$$bbuSvJ32HogIwU;d_ImZsA6_`FI6)qX6 z@u@!M#;aVqqT^$93MzB<^@?SoL%zC`Dh&uLUcD=c)R-xS<7qXvu?jFfj))F8rGJqm zFVthyw^uvhEU<IBbJ2yc)rjrd6=_S6(!?r{_w%itqtjyAUg&gm*@5b_Sv97xd~1q| zE5J~>=W&R&O0C-ZyeoWWfUbmv@3&wU2fkqr$iy6hN^eVN$RtB-?9@cqEOQu^JD(wU z>1K~)2PBoNZE)$2ScWHj2CGt9Ihj0|eE!o>i%5OO=^k=LDJV-rILBLipV-=@FUp>S zns{Dnpb`+iDWq<$Y_N)e4*khSbjy}UGFbIIEFpikQcGri#<bRuon7+6+84|DSG6Cx zlV=btYS9q46&7*nKn^;OG)hUU`4ND^H$3$oLry_<P+Hph4!F3&{6*Oyo-WkO$wZe> zfeLSbrx${~u72em#}4#E<-;a1d*0sZV>c8URGQPvJ=QN0ADV)kPpwTsP1$TQFcGs! z5f>oqY71%5LMWANSv<+?^(LaVZxb;F_f(oMNdq3r4?6P<Qu*)CtpS0i%5|?aLTbz( z*MPY+v<&~4_G}XYmQ#diL5cg?$1uMVqZ;oW7U^dQHVOjGHdodq#LFD0*R=w&vLU+4 zzp`sGDpIDVyAs7|=#bydU{&h=oNqR@8c3T_NeK_2$3)q^J5LCU;^r~?XV)U7daZC@ zGR`zkFRo)663;JHa_&~u%xVkjsF$f$z3tj#&3H2B3Q3-7;Yy-*Ud;4HZ{5bkYe^_H z7!C{>7*Mm5_84}HU3E+eBI_=?LqO5}>10SmEfB#&fmf|J+vJ11RZiKSgYxje%?kpr z#>Mt^*4TI#W-}OiwQ|NRJt(rFaajZK(@ie1d@H--44u_n_D9IeR}#GC32Mp8&bPJ^ z0SOH==LG3dTT8ZZ2j*R{T0fPcLv1RV;sFe5l@wa?fk($t?#jGH9$qTzIxCy>+n%q9 zbb0OHd(YJu0;5~GVaa42*EYW=Th+#X?onzGt6SFHGu`$L`AJ8hH1Uo1okf}Sm2$V_ zvP#X_An&+Ed4oLmY`JERa@`0W@#_N;UB~V;Rc4Rb<Q6J9D#g2L)VgUb=~t_kkhmVq z^FsF?So*>br&0auKgT|diXdLUVo(r~?@pg(D5u|41Enji_h&Q?7q#3gdz1iluff^- zWeJ_3jO8QVIRXjZUmVN&&0Tu4cF2p{X}Ppac`xpteJG=yX8~oat6*XbwDmGiQ_mvw zdubAsr%Lc@u0w4}K6BN%B6PlXX^$5J`}9Z9o@(-4E5<COMPgeUU?$|I8y~OiXpd~o z3XNCIPL>tEW_u>Z?E0aj2*PiBJ=8&&CGj<{UVfy3og6nq^0sz=^qKB_rf7L>!$nCO zWfD8qy98L>=TeyjHWuzmSC)}$-|nu<-C6A3+ZO2Cy=T$r?2A2Uk-La7El5s0L$KJE z^L{{LA@A^`mHe1%I<L}_^Vnu@_~)>OCxRmv70BPm8qh>qHP?GNbzyYkBd(5Q>j2f6 zyj{`P^J6Y%JIx681kud37LJFCSJ4nKW$(&)e;Vptlx)gLO8vBax_o>~KYzJkv}MX9 zzXB>v)g3MMn$kaesWCtQT}x_?S&HeGB|duA)<YPGr$soGnJ2H$qrFl0X;h1ApC?7B znB%3RDSEitb6zH=c1q_Q91QxDsk{H2)&`^Zs^Q4_xWm$5{MSwkP~oB2{R5gv@@R2& z5zp!sv0D~u@oFI#h>eGWYW>zd{8UJd6?y}E6~abQnSo<3W97*?dp><I(fPRb44T@4 zW<1+XrS5zO`wfX4dI1IBoW=wfmN5Zfv0u(mFydu%XuM^<@15dU*g%uxWf6^lqPdn- z;X^YoZg^9rEd})8h72sq`y8{;4dr--NypehfzmPOGv<>z$js0*miV}{COS3AM&vm? zE?reLGjRfQHu7D<c1pnn0S~~|edcOCPx0JeCeE+E$0l7nFRD=wscugoTEwB5JD$fo zZFXsOan=HyyA9h6-LyglN>Y@U-Eda#`H{*?fw5mly&h?aGT~$(^i7Bs-p+s}qAv@$ zIu85~AXRW8`rNSb0uGH`&|TV0O9FDH0iPAHf{up`BO-cgpD<telImkuK5{*4XZliL z&w=NqZplwO)mZN)I$!r`Z-(^3@NwM*Oo4ml`n^RqYDt-Fo)V)0lw}*sa?x(Xv{9ta z^hFNs<Eh1A@6}X2`~|&_X`y0GH3o{^wl&5|g&Gm9@6RTUNZpIAn@aFU%FrN1GHX=D z&h9&4b+=Mj*?LgXDkpZ+vcS1?$8>{?H|0wt^U%{&AAmbd69ScGh5GtnOOkymgGOZf zym{Zmp79p=y6|42CYO!~X999IhsrM~kYg*?$1>j!lU%wrxS^(>K7Dx~90qfDAc#8I zvpH)QAhwYCm_1CQqeer~T=}WWTWtpdiKRYMJLuWHU{q(TntrCNA(ArksMMQq`CK># zFt0s^I)fS!Q$KtyPQ>YsUAp4!Axtd*oKwiG2`wESdGELB11@oWD5tt~$0#Jf9OSQ% z6e4tBO`(QqV`9#t{N$|L<N$%b5;J?!d+B`SWE{Pb6`SGv+Ex2yY~_OFQ7Fk9PS{uK z`x-J+<0F>$bgO1@BYSSNl$04nMf4B{l;B=6!b&GU>&+kT+FKf3ni9J+`s0U*Q7`&_ zN&&ngpj}$89~_rsQO2oV^JfCwH)!Dvm3jH`5+;xE^gUl)PTHRY3qG1-ohN_gOaY7T zWj*{eO6L(+UBEL6fMQsm7#(ibw|MM5*uYFE9?wgw=^;xhkjz~?MbDINp5uK1c+9@* z2lA&{;z(kQ=+b)QOw(Nq>djjvnm<_c&IaD9HEh%0r+qmlq9^&ab)^?nmk$Z=@P1L< z+D^c&o$IEeKSy6ct_2y30aTBe<=k^!b@M<d%!e-p>^qSxOZA~aWj4oM+pVB#hR4EP zdr`Yo!^fjsr~`EjRUdu5gv7Ri<Q~I=>C6PN#|OvLg9sN_oZ?)yGqtaEu|Cc(=bp*C z9({cwIJkr-Ia{w>YImBRq}BwIeHc2spP<wSw%Iy&8o37Q;Z}SC$Yu#LN+opDO@k=v z2zRZBqdf!#P<}VyTi+o}F1CQJ#w#Jc_90MQnfcAa9IlesS>8BO9Dd}aQMyni{_%QR z_I1d+_Crqh)rEVJ=OIWLgt%+oTT`2UZ7MA+5uet`GnI6&L<PLo%R@B_r<OftOm#}X zAoM-{nJdS5nHL$X7F*n>I~q!zr*1(^nd6<)aqoJ0ODsu=^VCqKfRflVKi(CY4D#bE zSefK1EA?qRoio_-q<oUn#vy@QZu2+}A`Y96{g5Ac2M1nV{O$^-lUuFC$SSQMgmkp7 z5j}fST8!$BfIe_4rkaW813AVZD>0!_lZRx;UVzuipVSsNe_r22cMp}9Y_V=6ZmY%9 zF;JvNp3u0K^|BO-;_`#U?nUS@UNh3nAJNm!S@e(Rc~#Xu{qPZ_iTi6>4WcdAEB9JP zd1)#dkXJEzjs@iF>hm&drGH+%`w2YZpc13q8+ZNo@}0_ioGu~3Q|rN5Z0%Ba%T+Po zv6F*gwHXx<#~Dgj_k<3}Ets6>wp{F;#Wm1pAKu#NRRUi>y_Xoyr6c`$qi2iQFpAAx zU@gvOqA|PFbtiSB7YRVtE8T}YApq15UeHvRoY;%sm1?6E5<_`AE~2NE)caO$QCLZK zyfyJjpR1~I?wcAm*GNj-m!|rQ?+$*H4|2cKmd|>ew=^mzyt!hw&+O(21Lpj)F3p2d zd$wY5sW)9>_%$O&<RLSxT1-&P>QsIIIo<3_?T8+=1J<i;EA2so)9DVoyV!Yac;d4e zYU*)_McDJCtV<WBL_R*D((jS$n4|E0rLE)Z`$~Ba#dD|;79-9MCJIPIthPJA=6ojk zXp<Vtj78RQ_M2&QjRSkLHD=$#0b8r(hbhVOc8u|7pH1HOn^&zIN!<51vxl@Hi-1J` z<!4a8Dk1X4$sTb($wKw_1J;XqOAkuMkK0Jh&D>c`C5MBuE8Rft2|rjO?uDG%82e2F z(XP&X>E8GbVlVS_!`aesoffZ9O?ThVW(@`u&w=d}JKWKN8$d$z0ar-AVlRmyLJm#J z9=oK0i@lJC%@8ZYVhSEP7+XLB?-NTsd7s2STH$Z;j8hz+izHrK`Ce}W;s9IFKZF5= zV@6og#x4y>t7co$tmLl0bdN%2RErNqh<6Ik<Ev3~2g;_<;jH=dUhy$1-g2Q6)WV<B zk7N0EPBdCls06~KNUsND2V8_nl^J8BlD`o@<Bs%F>^M^il&7y;mSF;`;#NO?itvk^ zKlA<CeGw<VtzN%EW7ZienbBM#0V%vl;DWg=o>EhM2!%=2+~nx?-@<06NJAewv-{Up zrkb-6YQfP#LqQ(3Oa66uU$AEjgsc>F5Fx}WsRl<#V=uh8Eh->qY!2fIus<1<Pr-v$ z`Zy6YgoRtkD^#PRL<VO{ABvE!$cRI$gQSFbGCv$a#Ws`QnMZ^i=)fnTGX^4BV8>&z zTl?>HB!`<ZMF}0n3Ht5iWeP7giB^RT+qHmmO!vtiamtwgaPZ|CVb-~O^4eCR_X#=p zpXCPLFL6jZ5$Q&8Xa_3L-w#IKu#!`tfX`2?-xM_Yyut?OQ&Zv-5^_Rsx@ibzcO;%} z7Tb5i8PEeFmRJLsM?o@|vAUms=((s`vNCe>d}qCwG1Dbw|6rD}!vK)#1}Nz9c2Q+D zcycCRB6eog2xB#8dc$_|(9N!5GH0Ujqbw9iMeZA7|AoiwEL0hRh7wIVb_{Q?xoH@! ze~r1fHV`2z0kisOc_NdNGMsXDv~Kf=9ky-A<a-<q^4w53<t0A6aNwx8vQJzg*;@B` z?+A1$S(9RbC9B3EP&wym#S&n?Qi|N-4`r`~s~y4Oo|H@Z#L8_Y?OOV<kSv>1`<)jM z%jb$s-G4h77?47g-o8R{Bt<3ic+oR=4iyzDDE&uH4_J(;!s&r7q!3K{F@=(`!vuvE z2LWMJ0x<qVE0mIWcR1@WG`1fbjTEu*M-G7QMiiq2r-dAzQt-DnJJENs@@iSAaXJSj zVN^Uk)%A%|0`E1ajF0kzfdej5Dh+wk{qps+5YwNHVnGh$QeyK&LKUMMs-T7Jm|A3j z%sl{u$9b6_BA*smc>eUBH1nO;T}ipDW9%UCuxtt{IE+G#Js_U_X!p?35;r{V{Y0`U zB_PC%=+JsNPeE^`&7BY*?@vjDo!uTmcp{!+A9A|m=p{B)IDfN(XZilB4LXY<shg2y zob4!bsFwjAw$d;ofkRh(I3*stuhfQLTYPwQR7T6_uAvHr>P|SgGqwqv_smXc{cV0{ z?~GZ^szACD&L!-DTQ2@ByWwUTbpJf2;BeaK@YKV{DBx(E1^`lXUO0D?!R`N$r{<D2 zXFWk?HlNcjI5h!p<QjTE4$f;mzk)T#)bF@xr8OXS{#4*;I7+j9yq^x|!So@z{evei zIWRryy+y*Rp#%qQo3j}B;b=-7OMUOgt3x}b_Fc~5jgw75zBq)|4gUgSQ1)L6b)?0y zW7;~ky$|{RQ9m^YoOMZQQ28A5n2#10sU<$9LqQ0oW@32Mjo3I8jxc*d2Ud*`GIdQj zk^S4(ITB%ZuXwSt+YyrP$5Z#POM=R=JUKnTeJ}*6)<;h1V<8<`lD73whTnp7)iSW8 zxYRKvEEET@OL5?fDW^?MO>+q^HYRMV3f^%@&E=MG;0K5hwT)1Q&PzxzY#sjAfG6d( zV;-<j?8i15p}g{;#O+cl`xzM)SJ3`8YA$I)1r>jSuBO9cc1#n!;Up{+NL)q2bCVs9 zjUAM(a>u0pW#?Jt1&XW4rvkW28>!(_0pSsEd4ndX8P}U~m?Gp^grKj!-P~v4Qw075 z-AxCMKwn$O%Ne0B+v_(E!&gh7FVV|yS>c;3O7KmVXy{94qLC5Kz$58+<Lvf{u8=HN zc)eiP+@_ntcx)`;XrE`PL3^!{PeQovPljU`$T5roATdQ=j3S(pJAftq+fu$mjC7q6 zNWOcv>)uUYaM?moP<B_;HQ%&w{8)ZP90?9Z798xWQu8-}L)>4Evox3QQG-u3Am@r> z*MLQLKpb_F_sqTd<+_c<0y`)Gat98$pUGqB)rRWR6`-TbVd#;)=Re2}0@bLwLzlk; zsSM%0UypMyG^y9P#O;k@yce8rDgjOIWNU<DiT)mVpRC{aA)m!S%3)*!@k{wcpm5?{ ze)W72!e&mqtX*HyPk^d`xdEGkQeg6Z7>tnPpZCs5nzzvT0GT>>iAwE0FbK_8NEywK zAFe4ebnDhGgVWJ*!9_g7sObZ__b&>3tST#w&_U~6Sw~Lx!eN#wn^54p%WpO!pAoUR z?OT=yb%a7z9UNdB>xMnYL(1CZi2IR`fItD$<HN3N!1bV;l$o)F`iyaB2g?iKyCCNG zW>4rVH-z}C72i)C6*0w!uV2yZF$nE4#NRh%JwOW>^UVzfXT66Mu=e9DNNdr-wy zqMiXhzK?zqPR~3=jv!d*gdtUaKo24;yGtI2@?Nj>#=fQnSb&5wpv(Gv-q%<F{S#(0 z_XXHd<TD~d)?NF2-b5(d!b#MU5TSwR>%+G<*DNf$-11aQ-d4eh;o+}vW+`lOw)bW2 z>by8Yxny3m%ZSz~x^e|y9OACTX}DfJ2Zw4@Y9u+y^R63)v>=}sfC_)6_&aal>jA3r zEMdumOTi0Axsw)%1-+N&?cgJ6>kYS?RUDu=C|~YiTHZ{t>U$b}Ta!Qn@-hg{hU4So zZQ(m4`5|x0>(=v5+~RxKW9VV%ksMss@`-u#i}DtA4hYKKR02+flmRn12&s!aDEH|Z z8nV5?TXxIPxslU8SDD$jOS@WE-%iltjbL*2+dT5PN#w`|y+s4-=lq$KM3>gM0qe9p zcEKnTIF<MYIl9Mgn+XR1KXHdE`#cNg=>S&!?s2`RpApK{X44bGPlJq#MOOAa8q!kh z2Oy!cC%caK!9Zrn$5?U{n)l?KP`ILL$AFZ%Fv{Dp<b}ARTey=wAJJQCXL^9bpY`v( zh0xlPOMQ>&ElZ>K_%5{1n>;TIQY{y`u=erUyafGvNeFE2ubYF$N?-^tz`kFhN5OIQ zG5!Dvo}}(2m04`XxvZ1-j+6^_WOFUgbmstNT7guW!f9xz!^+Qo0M&Dq1dQ4N$-sjc z)VXG`twYhBSn&oVat2|S{eOhLbwHKf`YkGm0-~hSodzjgf=DcBrCX6M5$TdtS}<q< z=@3x5kr0rUltw_1E<r)j^Gx>Mzx|zi&$;)nkI%K%`_7(Ej4_^##c{xi!3XV8bW<<# z%?dX4<&C)5S6*vp>DjX!)`CNv#a0G%{i(f21vXqa{vb5kwN-&gXL@RnI$8X4*huFo z0(72OoS}(g*m^&vwQVym*k?(~i~?hR#Zo)i^XJx=5uj|<LfCE{iQOQBUlQlyJuZzm zQ?f&cuk&{ilcxJ8gr`>{N_w@}^d)<3B=sN(vJQ=Pm7D~WY1(SzNMOjz8y1F=BP%T< zGYk(}NnAf%(E0r0l7{am?Ax!X8zsVZ0!9_1R^ebshjTbw+wTBwyKa25sp*(jOxLW9 z<=Jwj?rzK@;Ep>8pQD<iaj0sdcb~-)N5Rk{x_s`x8*YuIgmhw6u|(zJWz!1!MCWaC z&S||ECMYD2>U=FVTEw_gtxe>bb-OUElwR7-CpSlbTU%eV47Z|UTSKaHTxCGSY84a6 zd=D;AIY{4ATz@4BZ7{?)v(J2}($-z?{1tZVTLcr6l*lC~KKdI$s1?2U{<UYZLF3!6 z2>Mt1=v$NQ`tMKEOc_N-c`i||`~5srKRk)X#a7rl_TbKrflKq>Y)4^iy-K%*Sj-)= zTakpy>I44&W#Warl(y1ZR(I~c=hdvP8v{4{Kj^s8STJR$)mLesRYZwlIf=rxkKkut zNQr^A8%+V$$_}&9lth_}W_xHU-0hEGIFE)OcfiQLzz?#TgypGF`S6MF%k|knm9g_I z#xV8AfEH|Q;*iJEBkOc15IYg4Cw`~<Tkd|HP0%MAk}Et;d5hjAy{`*fDA+=PIGp<g zt_kF6fQU$#^vI&h{okvj#i_^n)P>vY9>eds3StPiC;V-`&(VVE#R=>G?RQohFpJo6 z2CO*L<vif-*oPEm^{9)9^C!8D9)AQGMEFcZX8hqQT`wY6ylH$l_=4TvqaT%lMAtso z%e~$604KQml~d;>bnaF1>_W~#s;5ii@-mVxB9#2D{=@Wq{fD>rXBsLX8<`YQ7Ex`y zUI?k1@;H=TLrNP}mFHK!ULk^{VV7W%eMQ1KI<cYpJoR6SGjO_Y?9F+es+#u8^*~p{ z|D-~_RD}fuKEqwNWXxaGIEYKy;{o|AwO#U78w!&V2CMwYz+J?T9s=vai066{@E8^4 z(x&&L)TEAvsCtp-p3r^ospJSmtE5(^>uZsU)W%<Pcck%PX}0(Hdi|CeT$B$MwTkB) zd{UH)mCKa#pyjK3ZPyb<N7^9~vJtTf80`BHJF1+5yLBJ7vpx{2lb2tLYBzod@d*o% zp%JF~j-p+W4?CEid<N+4x1zy<re8lcH|NO00cbaDlwor9I|P=Jy#mwEHqO;R&Ux}m z6Oq_A#vl2P2}e?Y5Bh}QPK`^7a2uc~&8059;o*ds<`*GI>zpvm;tG?==kFQ$9nN^* zufatNv96-dH<f204P4n<R^c$#Z(ALwZ*ytzN|V+lV@QU)IvBcAePwBHZER30%3RxP zZ{@4g81&*5pVo(3r*G?lK!Q*88m?5%JzJ`ei4vK^d)}n|wdz@1e%GVJ!BoRNgGIe; zBdwq4R!Q*qkUtvH)!NCss{ZvigpZtxe``OgEYcV@xUZHBVC+{h+QB}MT6eQ(fU9I9 zG7Q}$Uc=Qp7^nV`n19ikuYo1?>kZ*MU`r<u=T_F=(7LPT;F3$~({zfWYCm#BUVojy zCeR(?X@<4!kcaz4z)}yHwkjRhN=aA(!a5I%Xc0QNu;Fl}D7_vjGd!%(7dJ~ZUvcTs z+yshmQ8VZBD}jYNA;|jrSKQ0mhf$p%j8LnE!E23gl$4pJkO=qXXozhc0+v#Fd>G!Z z0vzsCOVltu>|Nlw!G`@0tPi9}Z?mbZX&nN@;Nkk&d;uv){(+<t<fw-y!(w7%w1%~h z25nxe2kXge9t{*;8OSH^gJkOdkH)`KRCnm0Nl^v2c^ZH3aEU^sdvxU8J%!Qdg`N8# z_p+wEgHCYY^6Byn(@a1l83;f2Of~l#KAryaGUO9??zTKuxtFPB9=H4mmi*KPi<qXh z&P+xADljM_SD$NhqW^a>F617j*UUhWHaO@0L-GUecphnPJEmY$&!@dlVmG2-rxQ-| zX|VM+Ue}{^?6oB%h4Yw*VPl-WsNv8?91?wNV2_jnB0B%8#FQUMyWF$9Jv@)hPw~?H zKW34GhsaiZb(aouqsw;{US$Xoe7GvfQaEyUPoRsJr)oB!=$tGUwMMq`gA3o5sjT;8 zS5NxUa}J5x;NF_7QDrzI&`6&z0V8O{4R^Ss<S2j)^oI|(6u0tkJz$3O6dMjJ(h%7Y z=m_watT)wzb+R=q^oA|UF~8xKd05}JA_W&3P&yi?Hnr-9XO@F65lMcJ&YP*;^T_|1 zFDYBdAogeLiBwfZ6e3V0W)6FPDl`!O@islb4eTRV_WJdGHwdxPyH6s`7;Xl!!|%)Y z;HIwU-^temgFsDUJ1CM~avUXmfAFRkY3vycZy~C~p2L+QFgh~WxYzNVn(;X_xd`p) zv@+&o;S@)Fb~chQUbwWJ@rNc%)1K^tV2sx&&D5d#qj%#XLn*KSj-K=i=dQ{15>cz~ zJbXk~*f-b`cy-!lH~OZ-X1_<ie!)vw2Aq7+q01!@M*A$W+kFp7-u)8HFcQ*S*WRpf zicZk+y*iuku&OR+@X~S5Rp&6bAoRx4P*>f!hX@fUN=O?+GdyA}=s~gR3ie)^oBK;l zXOmU?Q;48VgT&u`o$ETmAi9%U0VYH3M#9PgdD_NDDx`lReHwmBC2fv@pFYC2;a3mV zd}$i>mlQS_&t%I}n>}?w{fX7Q;H>GuiYQNfCrP*%|Ldto6JTA=tiI#=9QOIY6d-n3 zAWHvKkRSGW3Q1Z$3&ZtX`K6WwJ=j^l;a1$W?2Q2Lg98V&c6QvgTq*)!3D_N66@w)} z3#Z+KwFD~A6!1gta=5gC!hS>oIIb5T!_7yz(G8xuy9_wKcEM?dECvk`U@@OZhd<{d z3po7GK#HVS8@$-D9dl${>B5pSJ>VCI7GuE`T|$OcG4{^f3_fv(Pv!&}vEk1<*qSP( zBz_f9c2!p|!#DpSi9w8hgw==p;{Wu~v{U>w_xS9-7bM_}qu{~OU{DBj5*sf!PUqK6 zxVg^rdbw*1jF6;cn}Ln|8_@QNTA*DZ{l4336XQk&BgU;J4<Zo1fm^$;L6HvDvlIJ! z1H!?Rs)AyYu@Ug2pAddoue>G;L7N4PU*Y(Gf6tYs!7m*bVF>@iy#2A24T33D1$P{S z3zjeNxXvHXBc=6UL1r1aHaMWCht~&3Zb{vc2Z4i5&?+&aFAO;kev?0p@!s`pY9j`z zB9OD_1Y)KUcYO#sa;f|x(kkBD+SzrxXY)Q;3dF?MJOc$WULT0-XrD&%B--%GTp!W? zkz3;8MQ~Jh{u@0<4ZjXKaetwJj?<p5ymVd>hBz5odh9=+Krz<XmIcRy6VLvo$n+Jm znB0wz&EOW#RECLNkcOyBZ^RXN!wz!2O>SI;R)f;UC1t`F6;TV_RbVk)l!AqFAjo<W z`gan0?b<C#&1>$OePR5t3E#p@v<y7Ag9p68>z}?QiK#gICgp-99Ex|5&QKP|7~HIv z;7=VQFy>bD9<YOU4>>&WSm2H^ni(eDg7A4oR097TM2r{>VE`S=+4!L!s@P?m-L#Cu z-~Nvuxxq(Tzy4nzF`mMv{IJh7FcQ;@eGd<wG6bWM75j7+8v6!~#y<YwNX*{KJ#Uye zHyGcU3(VKxYw8fGQf81U#^G_+y9x&9ECjjAIAn-n^g+{YoMK#f;4u0VfX#CpkM)EY zaiO8KjQpoyBSB#8=HJ^=<B*-q4y6a>5HK9Y=%ON!5FHw2>knCq3|pogg3vz_=sL4u zGU$@Df)^)QxUyDEH{Xcu1S=vN@my+<G7XS9$Ho5;guYVF*X2!y$H*e>yWnnCP@o%9 z^2`7J2oIpPn~HOu@WlU7ew1e9hc^99`^wbP9ZQL%R@e}Y{IyjOyzTrAzkNb}%JZfB z@fZFnZ8S|<h45V<)AkNXGXO>vo^sX@|2Z3I4;E>k%k;?e55|!y;Ce3ZX?$)rH-#6X zw;W5IG_yJ)h#d;c0LRL_2p^G*Dn6TrkKOm(O)^}vm(*KZr?d8s4)HiTU*VVlqADE` zFf>S)#h(|yOh^Vi>~e%;WLHhLg8!minWyWpmd;o+0gr^r4vTz*<I=ZDB*5W3)e*z8 z4oT*>NZ-qIZ^fJ=)w=`<UAY2i3{lpmJf!~o%y3y9={fwdc^|S+rO5sqsrPdG1uVz) z+>9tEq6SE#>$}1gFCJJApo8(;TN!qMO{zdvD;PRgY5^K)57`pnkKaL86&J871qq(Z z%T+9XBxv9*)Cp*>^F0$Ay$q}AEG&I~zs_i4yaZ`mmLU*-L=?Wf+ej5_9Im`YUu41$ zGE#~-rlG(Dgi&ZvJjDk>IlbqJsIInZ>zQ9Twgo^<<3S_2iT499q*eD^Md%%hRG)ma z@&imUOI$kVXxsJAfT4S%k)yhgm@Y_^7QiC0h~_t<d+(e$L_h4|xrqDN2ho^sFgODh zVCT5?a+Y@Aj+1z|kC(H@#Js<!F*-L7llWd7mi{Iy6C<2?X@w*<HZ~==^zQFZ`OJlK zj3eaeN}#<DK;Z<CE*BC5(GfK^i;=VY{Pylf8N!5Vy)^OodSL?SOGy09Wl^{ObE@}F zC_)Bi(_2$5BPG}olSe)}UjQXoDkv;m8~ap=ySjCw@vkp9Bx7qKEK!b2t3QD``Q`E` zPu*645#W+sS|ZEqSt2V4o1Xd{4b`7OSLPNl!pE<O;+@9+LuO?gG!2>(8mo^96TSdQ zu-gITQcNh90SH<~x%NNeu)WJ54qG5m@O8dyP_-1P$(GxG`;jlN6Y(7kS6d($P4Gw? z0iLfnx$7HHQMZeRWwU*Njq~o&pWW07_(3)KGtZ}#k<R+VU|lVL9#N}beYy%aPb0c{ z1_G@ZXC?hB<n?{}UUoW_|3h8YFZZjAPv6SBk-t0;4HWYJ>9{(W^YmDN52#(0l*??f zy3OSw-@Fs<(_LL&36FhXZ1p<W4pe4c>W5cK8^T<F=KTi?0KT1(7ShZUG)ihCG4N9O zS7Rtg)u?Tw`M?vCLXGM7zsRUgjcrY7EvcLP1b4G$mD}<$pbYF0!E(y6<y=%tulVNL z*|+)vL!{{$w_~P}Io1-f5{%Gw>&OhHm-MU}i3EL_9wCs~^MWO?hKR7Di}5Ymh7aUM z8;`&^$!-&=$ahXG#<4ugtT;;rvTI;9$d8{S!NbBfXHNUGBz3f`R&?$L5luzm#m?3! zcxd8_UXl5;NJhr6xHRhHa}I;P6v?R#S}_z_bnCgT#P!v;_?7Tb!!~TtiA~=hwd5>D zV+x1aNe(5*05m6zd<6Di)r{?vrw}o%7BxFDELDhmUW-d@HRK~EXKaM&&zsaTZKip+ zW3E9s<5wCspERQkwkJlNh}}l#oK~c{=W|+QBooo*8{LCou$q(g<)yZP=@<(Gh0C*l z??;yurwZutlEaz%Uvmf|MkePh#xeH}-bV`ww}H(t2h^RY8<r)=Nnt0x;iWKcPj^Y_ zJxC`Zg)KN_4Y9G&b&p{z6h1mg_TtoXOBG}kf_-)$_F3Z|lNkJY51Xk{vUTfv(|nek z6_^nSl%>Rc{w~~=e@O7E>u*$lR9@|QNsAu(&%2)*KgdqVdNudKEk`Q2JTJfvqUrRU z6Cxo({=^gF?j5}ATFvh8!2gka^^@ktk+IuMqkh#jaF-O0>=STgpO9re1s5HtK~paa znBW^HU+so_;aD?jd5wx6bV`Xu{G-Rktyb~8-#w#;$6tmw<%>{3#5^R%PoD|I;og8! z)AwaCZ#?mD!q)6S;<XB&l|f)H=q6+4epGb+>fIut5-_d2A$PHV^PDN<E);JvzKDwh z)1~vPLO(RqA8zDR&6YOsZdz<6i8KWR1(DSlWiTPUVMKPnbaTR&W^p>Fr%4pGB)81v zJ;D6?ufm_SDE^Bht|#VC8<Ptj=fXi;f-D!K>vLd|)-kCs;_g|kZdp)~;K7_SL%&Hw z<#OQxGdP{&(@i%X`xakGM^+%@h4*!6nBh-F`Ls9ki8jt3$*Ga>>ohDRFP2mOu%?)Z zFW&P~z!Q%Odh6PO>|#)ib3PDYK?mqPY;&(J5RjqgVV8l2)FCxjV`gk*o5`lxt<#mc zys&m5xdP?`q&>>+hY^Elp}Hrwxy|N9jW<~)l&oNb;lPbgmz>E8rssK;G)~F(GMDr9 zx8tD>#y=8Fa8#RHZ>ANt)Mnj~hLQP)M(rQ6i#M_=&+;7>3y?s||4|X5Bgk*FzCB-l z6~y5>Ss$GSp|XGEau}n<v1TS<raOFY@-o3EjL<K?^k<Mn0}a1a6x97tOvDW9uo)IU zV&%b~60EbfUbw?nL=*%};B90f+ak*j2ju2n`1=*#7v=2Q_crg3r-T`)0?%W9By|nl zlK4MAPhU4scpShl053xP2<K<dkxUu~)(l!~9U4B1uwG<f{EnrLVMDRaCOz2e`Al({ z@HrSU|4i3N-;u}hwt>M2EJs;HMkAPCXOFAY$V9fr`)OwEQxH|EiGoxwK<B?^?F^|D zOn@X7!}uldtKX*y<o(d*%7>;Gk)F?iUJ&QL^dnlQt0S$`-m3z|w*Sf+gTfs`4+#qi z>EF0<qiyV}1bT@(tkC&SiOSG3Z2a?MsAvAo{DROk0q9x(&NEPNn<emPE*Ow7`_^^& zI3+6pjYO&&uxOO9<*1jL3%(eKT~|jfxs9l8_^d6k)`;V&{F%>k+0*fB1UJG`W>iNx z#`U!-Qq(GDY`HSs^L&=f7m?{Goz@C_h>iSdKeWS%q@%X}#;_ID^5Wv6lRvXQ9z2Z= z;r2q+gTP>Xkt#iHPwvsD;~U%oukn-qx0(jX-}y-!;q0tE&o0d1&Z`3J%<sK2%$#Ld z2pJl}Oa;c`eZu@t%hqie)Yx%wH7)E>Q#)e(BFdB<K-@aJbVqSZdHbpe3=S5uUuEEn zjM4o56326^r<o0VBOS&&>bC1MuyMm!qg}jk?E#e9g=FoNp&NX8Dn+nADR4@JK*_N_ zI)M?!84t#pg*f5-v9o73HXZZz^Pd=2X4JJ0;7m}orzAkvL-5VC1hWfS=H%p7;AtE1 zv}zVh8T2g+y>d4*^Zrk8ctMMN!CmUfM@>^d;m>J2^XfzVskFP`EWtYd55f^;gBaJ1 zEyl%U446<x=pRDDI7*D``-J0S0Y;ZuK|9eM<fYg1c!SWnr^eV*NegORk3gUa=KjB$ zlEftbKws93bg;5QYMLS6VlJZ<WC|l3{<Uun+Pi=Q@~q%l?*z*p!v8Ws^MmhL-bStZ z%M|@MCc7|j7>)*MfUbaNUBwTF2@;jwt8i0~wBSRl_aBZrD4a^yANA}}KgdM=JmEhM zLufnSrggl|Sk%?fu;+bz4@U?H@4=DDA>Vci{XM{@-baHEexMEka*zM1ZO9l+f>mxQ zAShVPwU#fr!Z$nI+XSI6_)`Bh;D;6*t83!o*c=~EC%=FtKpX-n1u>h0o8Sg*1xs_? z7tMrl`W_0W|2NAE*cj<&Q^L9OUK|Wq&<zqGm?>Noy9ArvmlQKFeQPt;!<UrtG8%}l zutR{sDGNb(9A(DPn4+&=TKzu79PfA;=pjK<FKCK`^Q4xRh-OGv68+zABn5T@Hyt%~ z7Eg1q1P*>qa`Zf3WF~+f4g3lD`F!im+-#e3s_2trwMH?owr*JZ;HQCkr&mZT_PvCB zT#WSf0)#Ojk_rvA42x@mRf)&S(SLYdMk^QM&i8@Q>A*NH_H1|I4EmZLtWZn2*azrq zLr_O#`V+7XEt6e3ly!Vf_=W`u`^=9AF&dTeP-LV!jdo%o&gFG##CHKvzq}73I&CO_ zy{rSuYEuk?LP9lvqZp*76Ku=99Z_5Tr2oKbIpDX1#2dmbs9S&OH|Y@Q(gbYd;IAV{ zA=^V#UO)gfK{|~Q)=$8DelD~uDsc3ZmiLvNzxMHcdIM(?Y$#X^6vbF1=($!*ypsG= z)KAC7hdTKnN0EzGnV)nMyzCUg`|rmit&@O6un|FZqu4BE@2}0lx4|4WrKbW5=+yXU z9O#7qGO4<`=hkc!7ZK$($YMDxMRf)~zJr$83I92?6Gr{;(67pDv&%CS%ykHr1qe>T z8~>r%3b-rH4~2E7-tNqZJ)R$kz$^Q6=lzHe)pZM9m?wa~EF1FjgQRLSn}6p?&zEtr zR@`UxV_R2gYIm4&cAB2VzC3hyf)n~51|G)WZ~8aKpz_3xGrR<p={r}c1vpP!(|{|~ z1;%1DG8zk-mk!#i;moOj>Ryhf@A_Z#sffS>@k%)3UeOuI!%=qi-`cC4j^vMfpP#T0 zQycGw10fS!^;f6m+F<E9acmWs9CezdF9-M1`DBwRj=~A8ymZGAjk+}~k{r2b58zFc zc$$YcdGbq-B`QO66_*|-hQdGohldQK-vIing~s~%pAMY*?g?FE{dzqC%H8|}T_Ej% zPQKT@KFkr$8yyLdrOyRKTMePRA>5MS`Cl71ty&Via=7>}Sb`@E{OZ4wb#P?rSF`lF z$b9d)Ap9IA+XeQ=DArRYI9*LaNj2<C%IKSKNfg$LV92e2%~TY}I12l;8WdQ+MoEm~ ze-hT2RE8sQ2)b>AE5QwhMi|tjxr~5z>GzE@6L6t1Q1PI~IKU7f0}HC4q$<8+$RRsp z_<$eGS#@0419V$e5FtZ{SpnsSM^9M8zhbLt#xS}6ih+W`5~01(@$eO~&%+NrsQkeH zpz)56$HMU{VPWA33KQ?UuRz7r-Y>aGW+qvh{~WwQ7~U|2hg`{yr1udKBPzmEW{9ig zd}ACGP7ng4lXDV^9ZWz5%bG<Ys@pEA;-nPNDE9&6KgOP9ceO<nB{U|0;A4j<R*;uv zD*gGt3DE;#t|8llcR=v&JX}&~$lk_I<7b1nGx$?c6#|fZgk2?ZfxQX>4C_FFd<W2u z{v+Qg(Z#nw(0<$S(b5s=jiT5?1pw?Vg%l?I5l%v*7rL~4c1Z%!sX&?H9ms~ah&g|Y z*7F9kXsP7){u{@z0+1p#8kG1?$uxD4+jhq4PXN;)_o;Nbye;g&<79L=Ps8V{Ur=x& zVgqPwi}|Hj$3XU{9B67&zCXX<B4O26pwe_KzIsc6&YVc<_gf@Mia<05H*N&x<sZvk z0*2ncsCuyk(v4%9>soBykV4-F!rM52C(ICP<rrk*`Q0js_ig}q+YZ_8NEFhwSSLF1 z7s9syUiuTz${c`?T2#A;L~~HllnsEcL-1h_2!Y%W=Qlw7h+DYll1Aa`6Odn>dGxm) z>9KP6KA3MCgG|Zh*&m-280?`>RR}J_KK}?rFKf1o0P2mv=~EtvUe=}24leGhuRW+; zRlt#z<ZE@7TA%~|O<ep-5Sd|0A(2n?H&8h;f~1ivz$Plh`y#ZZ%MV8?!>S;<>L+~! zduxy13<nMyOYC9lLddoxm{KjF#EwaR@-!&Y_Hqgf3XUOQ2!z41kbwGe)*j@8?2*7s z371C0pz7bo`dz<@{HnvB-ZsqSL!Vi~J`>y`6Tihm>4p0t#FQegjhpo4#Q@pJGeU2# ze11#(DL2#zi)}xQ?uw0OYryr4Hra-~36tJm+)uq`YJa4NF7+n=N-fuY@3o|SuwMP} zuVt#Fm#bhCO4-%|iFERn`&=lydi4^dp9LRyLYyvfOE&1?3}Q=S#~zY=d%5ul$h%Xq z1`gIK&Ou(A)AcI6KOlXH0%(W{w|~D)@ZqBJY9C)a?LFfy$dKtBfpD%cU;T)_Z9=p> zB|<oi^jQyPC*ZM{9S2(YU`ZrKJt6pmMp#zRXC0zldN2Pz<VjD7jzo!B&`@Yb<qha* zDZOAy^(~}H$N9`V&wDZE4n+ky_cBlma$qw@<7443E5FUZO+xI?iJy64;FY+WD^xwG z;D%Zyz6W1X<$)!n1NEZ`mmwZwXr1+P687{0iYn}C&cBnd;)eVfJ28Gt+F6EclQ`C* zOn@{pND|4KJ(91gbomQfQ#N-m(b$*8?44wa^pi^)WRPff&%#e|hrD57??6A{pT-`c zi7HU5(oX_rbJpHE5DtZ}L*)QXvc{n&-xja?Uv-?7{xt=h+3^bl5<#=&3LQwKH|kp4 z<B~G+ftTYk(Y-rl={0iFI6KUYOs^=c%UQ6QXCtNcnR+Z*eUA?H9^riyS;@_q1iZyJ zq*ff@32`*RFNY9$NwSO&Xs-deu?-M|;#d2Qz*$lp0yyssR54`xehTp=i1~=be<dNP zbYW9ri!|Mzq82u?D+9en&?evrtddSi9W0QM{rDZ>suV2H9P8yaW=>HX=e6bdyfC9Y z+84HpK0P}n!Iw)xZ_4&DZtLU2??SI`W8xf`TM1Ex3<HQS>f24|V{~j3WX31juU`oD z!xM=13vxdBrNA1d<`56225*kFf&vS%MGZtw(a%G1hR&XNz7{S>36saw0e#qj1Hqbv z@4P=j)*NIrTb@mP(r4BmH}=8+px&&MLS&gULr068rI;?5eR)q76_;FP6U6!YLhB6{ zT@xswG@*-$5H_}*d-1&Iv3nRK)ZGXM(}4EQwgDgmH;8)n(aI!JT1$+)7?C;bV0l`G zdjdy<hK$OVITMM`RyLox^4Vt?Z&`62gBcb6;Sz@zBCU(Vn%PqF#1ke20_~|XiHpQ< zTCdM<v(@=KJGtkKIX>x-ji84bALQfL7m0!{&p88*N5DTct|D2XCONvz)^Pa`fB`?r zUgqn-a}^RMJsBC7SY>0HWc@VWLFV@7&mlPpRdy1qi0!<`z|<RfV%n-GBWeUVqu3PW zcFwfGq@fXZNS1WOV08E{xr9QSG)SYP9TZD#`<aQku}nQL1#xR$whk5uI7ka5w8^7y z3gL*O9lTi)2HSUBhPp%IdM<8?4Gz~2(wqpLcwPe2XP_q}I?<t!8Y;;CR3PbG7rr(5 zl;V%)*8_dkiF*N6P><?`1*;L;Mzo`P4gy31NpyLsf0*8nsbl_r>s$EvypT{vI^^pj zeUQLia`)HEmbOesaCRiPy}G83YYrUuiY@ZnOIkaaIM4O!9D%0-ciCT#Tic%2ww-ab zeCNrI&D_rk1Do_=fI0_HR`vvw-1UxFvZ01xa?=-EXJuzlp4EN^;@Pep_;(qk4nIAe zMBMyKQz93(fckv(wXzg(xVv3}<hNjz0Q)Jm(^0I(NryRVsT<@*&bO5OpX9P72P)It zlv=(r?I`i}cT-Z-lf<4FAR8s`y&I8Xz`L(!lb2;vKisv~u)dn5kuQrQD~;1h934GU zMvO&*7j?qeTGsitK7mcDOt`b-f>B$BlAYsiLh&_T1u?PP9S`2)(XX`bDr4G#m~EGI zdYk*Xrvso>^1@h{g?o;)1W6C%uC3FEo^dh3k!5tmCLQpn!Az0)Td=A3K2OAhrxGyr z$jdZSDc0AaYoHeL3$#o`?ir$)LB#lHq~`COZ>H=JS4phZR~-LkYkj57)@NL}ZM&e4 znGt&%ni<uuEx0ET%KufCUvbAx<>fb161?~mRBW1IH`7uaUzk3Nf2e6EowX&5`<?Z# zL+rL~GBeb}z+dj?d{!d$@yhl>xd?%M$yW9o{Yp!Wv}+O>ce`!r$D%T`FEPFSZ}MwY zv3D>!r*&4&-<_KM`*NRjDAc49w)Bv+v`o!uT_%%GQ$<2Ou3RPq>)wWs4qw+#QA9Oc zw9v41Q7%_mC_ntJEmPwuzN>es$C;)5=H8lf7T!-rMyB;Z(-SU?>3Y%=id5v%!o$JZ zIA)bQ8qC}BOE1e=7DDwBRULpYMOa-heaOyaB;L7D7%P)vW0@l^%Xki2FYq0^TG*pr zAw}<{J6?yw%lc1b9ID@+DTt+vsaNM9vXuEbz2mw(yL~1>Oy%OI@t0jmUe>22(yr|d zzo~^ezDxpx=k37y8Y{%AejvO(zQjPx-~(%!{8M^+k5|uWhcn0L-^U^;KthjYxRS)b zzR=)|q<_t6M)KP6g-FgNVA8)Ta@(AaZAlzF16holZUAo--?{bNI>-~D3o7Ba6Uz~_ zT&UWGFkFh_`^m}uZ_Z7o(yqUX^4)i9H=9|r9vTVwJlv+F6E3X}i^CdU=;t5SYpT=V zPSd2fEt*$S`<K^9u)lKzSb#yVwd^J+3eF<PulPGSJb9dfXZ$$yD_jiKkfG{|+6Am= zanCMj->ADmB5vZ=0s-e+za*e$&AV>{4{LnK=pi<94viCK7vOyDo)iN_R5UjG=?ydD zfe@=5llze4*Z|Au?F}Q-i+p3k0x3I+Pb^6Ga=yVHWvS#1&%XMw)lznh>s5~_sXm^y zEPoDFFXU_%McEky6<jprBdNcFWD=+N+Nq{wT8(MYkpPN(d-XM+!!kT;)jLS&pKkBm z$+`g~+&J8mJclDME0n{1d&^?Ce;;wV!B`fe`%b$V^|3+JG%x=W{&GI=GBe4RytK?X zO=p{CtA(Ht<>faSe7{%iwOkA0CjU-RJnxsmG=ll-04&21H^N6vwTAj21aFmMUN;Du z8N68akXx%kl=?rZ?wKSDV5}#fr03wh&B1K*-VY1R#|{2Zz1cm0aT^7T$CzA(R4Mdh z!)w0biK2ea^gric!S%I39?KX$=m(3W78Z#<!7?hcWRM971}YpGZlwGPNyt?_%60&I zS@QKF36)wfAJ)IO%3|iV<S99-gF++QChD3_)97BrRfr{1tB2Id*riCMbmWmG^>g;* zXr4xnbN|CSarR$}Az3Tgx+dp0bOgDLE@J25VK6z(qd$}Of(PAch6YcL71G=MeWa%R zTc5yMh#Yh{Mr1^`WEq?~m>j?edkDy&40~!rsEMF_e#WVb%K^Pa1ygDrqib7|$e0ou z+VCwsTwmxas!ZtWElR%vYk9P893=F!?F}RHTFqvNtHVq}v~Q(`DN4(TId$1IMf|(- ztxxS}Q8gumQnu?iTa;#$0(WBn5e{E^HQ>tjADJfO&tQb;DtcKWE5$ypU4J8p?F~?~ zw_YD>dp503%G)VVg7wRFT0EQdxzCM-%f3wdaz2+Y!>;b&DmcZjda~1Dd5v6Lim)dh zd@}Rl_qN^cfSJota~sT7c}UwYbJpdP;@ZA_nPhA6Cvx>)J+i2UwzmIiVW^3i@9P<^ zU)iP6KeOg@YUR?%VP}>1pV`vqipQeP3giChpe1cHPr9wt&hx$2e8!oaw9)yub0ri& zfkTa4AIlh;A)TT5iEXU#42E=InNiNW@*2Z(1c&eP&t(Ua++bJ_TxHmG+5{GU@_Fe> zB?cFwSu+Q(hy8T$xi&zh_IqG^aEe)-0J@}ab;`Yvy!%AtZMitJ%FB#5F*$+fx2F!h zGx<~gKU()JS{3)wT<zWg#!>>Bspb|g%>`S~_VtC?a(&*D0*V)mo=xTZu`<0Pyxr=y zx*OB$J{K1Sm!7{qER|82EAMT~@0_-Jak+-IRtxK<j2K;J$mYlr%d72H9y+NhF6?r+ zI*Nj|{YGt?&h}r_a=z(Wfc-4USqwumQ`n~<Hjf6e#sJ5LiIK^OpzuWTZ~#@>t^9A# z*0fJ$3UM!g%6K9U*mNVPXECUiSsTd03*25|DE%o6+8MKl<VsJ<8d^;+?Umvk9~|lA z-6H2M)@GF^!7F^3X1JJMO^fN94Df57V^-&aVY0b-%JUU@xAeI|)k?EUXV;c{H=C{$ z-sXgyoZ@}8LY`%+{L>`4u`urCnb`HJ1QuzJ!Bn2)P5hO>(p!&J_X%%Vuhin}v}+9Y zkYxsDWJp(rgOQ1@CYZH@xl;XLV>O(+UhnHm)jr-bYT{3=^{Xm3#Ja3}ZvJ0KR`UZJ zsj-%H*aE2}<pKYT5sF8gTF>#y6kvf!%J~0n=pa~Z{Cjj?7?6A2cm097-n5-Fxrr^T zqx2)puCmVFFFyNXxWe?pQ8@?6`cpPRYoF~djq*@w12i6~41C=2t8Yr9yufpugv{6! z<d+RbuzBjgKQpi`EbnYnM6xmHV0wt~1O|8fPfY^#{0q2UqQZbdtpo>H-{)f=cp2u! z<S9Vd1?2tIWSRBg?O~dXsoUp7=95TF0Z*60#VMV)ef4olx~J*uOK?XD)NU($p}pi+ zQKPjQE)|=96XNrXOjGo)-#=oQ2oUwyF?$l7Jqf3Q10Z4F7+}!pL3p<o?v+{;jo<>D z#s-kgYYm`%2EL%fv+Gqp3rzMo5b(kM@$}Je7OnbsV_d^`9@dH8d?o)pRJZG$hoBal z{{oZ3cE1*O!S>Zc9zpEEuguW_Fq>!GnI@?x0z4pjTmz?HBF7<k-{|<dM<5@xonV== zyqMzUPzef1Rlq;#k{Aeja27DhC_(K2j2JhF+BhMzX{r_-rhQ04hD;SHs?>rSjv?@R z)|R@sYu_NNY7&AB3*dMA6u2#P#O&|Fzjp@-Pd|{D1TEE+<D#piN}OL(eD?L++Ndl= zf_9O}uBylvoJv3{j{RlJyb*uUGyLT9wWS{OS6lK02c#(~Lm6{mf=5kO@NvbrO0Wc= zq8P#;c$*+heZ3ACG6_{116kqX;IS$96M~2D10a3&%=@6F>V{Cr)|P({M;mEP>p&lw z>opyuocZ|bkPivrjNt*xqXiDB2fu%Vj-Z=St*c8r?Zb#*AI1*L?)bX_@uMGeUb!X? zqlVWYCGKPQ8K9vSmbfhc!2;Njv-cO9NZI}cjI?V|(kxb7bky$~WOskuJ4{vxsdO|N z@xGLNQ!vdBAA`ZQOSY*Y9}GAE`PwQ_j?uFdFt%vs4tWT*hwG=leae^uA9K^#{mUsD zA>(-@UJ&#h7O1W9+?SRo6Pvk#&ss4o@%XD48F6wwGm`L_MSwouYC#eRQ@aqnsfJ2$ zEkVD)p*L?t;PG|0lemOssbsd1?f}kMw;${U?urBbCQ`OQHH%3HhLx3#=3h!Hr#>t` zsblU!((j!|kmNw>UxSXgV6NmOQ+-~NR#f5F0I1yOX2D-UK_hX357N2JehLwkcN-BZ zVG_vob~4mY_W-st2?OEKhy<Ixpd@nv=>UQQc{Bl=#juuwFTxM1+U0O9%tK&^|D6ic ziy&7Jm-OELu$b3&MfK5gL6Eb^Zo`-->EKe`m>t=iyP%0oS=gbbCfqME212o?9xiq# zu!oRz2HjGJB9s?)#Q-GI9;Hl+*fPI%Q~%mEwp^Kn>O*7$Ne(r6t5da=;t()gcMJ0H zh8Jt$FC#R(By6gvpSGP~hgm%svQuR}4X&z;iem70B*@UQf4%NIQvOb{7s4oF6#m=| zt@`!OyO%}YFt^CI;e2N@wel<+GAD)Ay{5v=n^@1zBbE_({C$&8eZRBNkZ<>**q2AZ zSbw{`bn``wS0zHOz#^Lo`VJf4GM(yH_i4GJ3E-PskPQU+5>u$q?w+~wrk`}&-;ZO2 zs#rK6S>*{prb|3BZdPhRa3QcB)%w}Qqqx3i0yD7z+F-5-(kvrBp7i3d-VGbtS5IVk zVMI=PH;db@<|fVxL^q5mDjXfc%$p{`yPE>1Zh*8VhFIcTTHqx7-r+%~`=j<q8q3CU zkQ7kXWXXikDoZ8EWF_JzHCr?yIt%P`*9z}XcwbRb>J3m35O{j^AWKKznvLvhtAyLy z=TAsgAlCIhL|-|tWQO|x8BG1N;5u&2@dMau!{hfdn5m?{wLo0c;@zO)BZ^+jG%8Qh zuBAFEJCYVkK@-!r&kl9ZAJ1)x6~Q8$Ot#DkhW%N=5eyJ*j5UDRq%yJ2Wmq7=9@z$Q z5cKT-@=9J;$BUVHc?Y?lWUD~|TTetB7_zKfcbjBgG}+S*(#LKQVD-f5TP^F8VBk6t zqicLTQ+TTM3wv(C$r1yj&x!l&J#pEBK1L@;|DWr<?9StR;rgD;wZk$>qc#mzgkZ4j zW|8aHXyXikH>28K{Kd_-$*u~2WyNnzo1!AS{^o9$wTj8;dqI<x=IkWdG;ZjP%Uyz{ z?05?0xs-xP9l|G7sVS{?!csVzN?bSsCN{6LYz0jOaAg^#;HwAkdNZ?hDU=6>Viu#` z(DJ>6!bm+k>ZR6vDxt#;)@^URRyooRZcEi#)M@NyQ56>P35UU{p3&iDBRq17Uz@3? zi8DF21B=gE@r|nzzr~b+6!iUYOmO~HB2SN%OJwyeSgJH~(;BsKfF^UhLs6|7B<Dq_ z^@WjKVgM)?kJgruB0Swd2?T3vA+$c_bnPK2Q*{ytlm$G<fOz1FFHj+B066sdQb=aY zFW`Q>xwdl+RXW%pdh|2!I5ONSL+Hsw^c@1wT*coZLjBbjRJCZ15Z(=y>5Ogn1a#TE zKob$aU|&Z{0vCW!`Djz*(86&Sto;Mx%C_xcySq>-%OJ{zF!o@c;jh&}PQfL<vBJdd zZ;5vJRt;udl~(1j|9aA?)jFV4H!4&w_`v>41{-!2?f`r}oNs<uCnw>RrZR~dCs6{> zG|`bL=sO~h2DqWy45IWIN2wXLafVJeg#iTCwe%a}RTGyU^ILSko%|GHLTEo`Q&2dG z6xIPMIa9?FCDJ@D3g<;6dwSyU{^TM|k&P<XBwz)nAUJOS<c%ZmSq}OXSn>{tkD7b{ z!FGp7xldbk5!psOYa0g3l}KXCFZ2&kNZTcb7ZOu|3N%q}$mwe9##jS+vP7QhJKV}F zi9Er4S*J;{z*fVH7}BP=r^mZJ%WPqSu7h5{SgN!#XNsB=KjodaIFn)~yM{`RHNVWL z257tQF7YmZ)Ru!9hT{h-2Zt(v503!3wRkQSWNf@3@T?Nu2y;vL*gZ?f#K%QkZu^-M z_X9-Oxuw#S)D!p~!lj1RR=9JAz-SV_?=o6sw66I9gt|u$$BjcjIIKtBXzY99x2SY2 zIeZ{&QRx<E-h);MPl%nqQvRu3m%JOeFYT?HAtWqz0*E~@0qj*342rvg2UApfujvvH zp3>;reE@M*1IW-(SqJL_AQD=V4W#-W<{6lVvgu0<xR>RqBw184j(j{T^Z9ge1s?w0 zK}ORC7q}!?nn^x~JUYX4@%s;uVR@y3LFh*ZIP(Rt>QO27djJ!am>qthyQbZv>#VX5 z+YHJVW|9k-gqf*CvN^*>V<Vq?DfRl~a9!e(&_LyvFJ_-?G(*jsT3dcYtTG`aYjz4n z#qq7@Uf~zNZ&7Mu@dip!Evmq4n%W4l2C^2~T}h}~R0))v#Ax<K4+x%Acy8lxyr#pY zb@U6q&nlD1ONir<7u`0GY6sUK4a`34z;n^9nq>LcjojNNNCynntUdzO*W!rHF1Y_0 zD%?7?OdLKnP8Y)65e(zY9ZxVAvZ!=dInQ4f#&=xQ4W$06;WGIwOMI&DB2Byd@QgOo zDeCR|kb2Kf;7h4h0#zcOQFiU!LE(rU@jK3V$S#*XkZ~l%t^e<x1DUKl&50^rb_*>u zQ&2D>{DuV?1O45(XQ3H?pg>)>#&Mju;}rc81pLMkdsz_Qnmz!JgQ@%Ew(@Vm-4j?U zAvf8WRJ?yc{f@bxv#2Uu?3v9M8mbTYEqlu%!-67y&rvj5xrw!!R=VPnem-SK&t|ri zmy_ZIH;wO|`hrIBM4r7;+cxplS3GMPca6BX>g?xLXnrY;J5j&ePONkeJ(;e((QrF_ zWW1<|!oLhB(HKJ}UJG`io=8)%@7|RzQh#34K<Z{8B_@?_?)BYZwO^c?a7k#Z2o<_D zy~!gXqTnAvlvs(*k1c1?shN&oEhpu&@#CJl`wQudP7`jW1vsks_MVm!I#EIut>S;a zSsw3P-Uy3It$P#6VrWic1*)V>_G<`&>nz<JV$E@9O@ttLFBsFeM<?!D=F8h)(<p2D zE(v#VN&D3O3-0l+X+6KauJA9rD7Tw+F}B;1cCR-M<;$k2Oa9z;6qy7gx<d3fqz4~> zHDdh%s}AMn;g%~sV%|G%k|(!nZSW&Rni^Y$CzHe?2-_Qgkg*5;J7CKts6$ocXpc*c zK$!39kY*~1jkF7*n~h;-qhZ1}i+Uf}>EivGr89IG$v@$9tu#MBgo-H%Kj)SZywp7Y z{k&rQNxh35LjHFODu!zBXd5(cu1@>>Fd7BSa98{-eT;v*MKf@r+YwSXsb|-JDW%G4 zVEQGwuY8lZ(fx#LJ~baS$e3js^DlK@7-xO+M42HXwEF!-u#J+PYk{j_WZeezq+*Rb zXfb*__z9Ctfcr&u=a5R;pmVpj^q-%5+~|?C1yxXL5gHg=C)e1;XkAa4NcStjZ)YPr z0Qze8Mf`Vayth#OK7g?4SAPEHATmcbPvNCZRn~BV`^tDsG8eb>iWej0Y@-r+B9ryD z%Z)a@uVZH5WLliPdFDRWm^7l>O}J4<J#~7RSQ)UU^QAUMAlrNC-AoX#M3Bg@n-{;{ zPAs`wD^Py%KAV;-BRLvs`~qEA;_F1=IM`JNl@44F2E6r3L|9Yg|MXGtVAE^|5zmLm zefSC$53d%pn^c8dmdL5wV73e5x!vGQG983N+$P<7w}|EWDbeVUHvW{1)0N}5Hv{zS zk7~GSuuGC26?yx5e4cyQF@Zh3v(?|ZYC+%ojF=vWJIOfIUV*YS?<MX6!t~0x{-l!m z0(Mfl<j)=XplFh7T|pN~PPeuQe7PwhyL(^O^Vy}x{fy1Acr@dHF;_n3f0h0rzS<Tj zDpinW)i4A$%80lL=~DsI#AY`-Z0cJP8Bfk<zg!fcsd+B!;jPA;?%~)<(j0j4*X_@D zjJdNe$)JHqHMu|%5-dGPV0|_i7oUjF*s8&Kn{oF;XLiMYkbudwd*;Quamx&5Tu;X6 zk9^&6e0On&f`2@#AsNr~M#Zt$YM^*}JVjl{Yr1#dj5{lq^(M|9dps4c&kW~o+6kC+ zwoW|f<|7$!Pkye<SLZ)_j)bV84xfogBpBE5TBG;!?$|mY&yCtG<0^^qmXHcp(bv+( z*#H84dCF_;Aw&}6b>oYrM_|lPHdo{_V98LD-8XfAyV#?_1=|d4v5M(~fM`|1H<z<I zT3A!VQTflgWOe}}rXI_vN*C|V?d+G&?1-0kZ$Xd0IGtJVuZw(%x~uwOe((N{KEtg@ zUU|*k&eYNJEPCq(#?X^W5(9OYRU35m&Th%Xuyc*cc2EeZExMQHijz!wkL{f2W};hF z;4o@jJxT|w@WH118sw4vV;@Hc{D^p>eXYekWgD|As%n~haMkiYjy0i&y-EmfaNTTO z471RSKEdJ)kLRtHKP;twjoG;nE2*``Bd~yssO}A22KQRIB=<CrDhDH7{*W(4|J$tI z$6N|>c}tbNdHpKWHm|<5>hnMbrk)>`IjXM~d9i<NKh8B&)ZmVd9{G3wgz`z^l)QCr zhj_3RQWZZSY4WDx5Dmufx)Xy564;Kvxkh1<J=t!12gk{2Cnd;Pf`JI<Jdw6uoM+>= zk`0|Vdt}do{n#c0o|&05k)1HU8|0j4Nx6A7i3GpERP6?7&4(HHg`eH?F&hA!M?{qM zJ!jI#a@ny9{_&jLtwD32RIhe1wt2*}2L-8=1^KYi-2QmBwZPu=jqRmGp7Q>IayT5F z_y#^s(9@rN-ltV9+GAiCB+#5BEGThjhbo=1dHeRRTlI@<Gm~fk(<QjbUvQF6)w)&k zXwB7Z32lqTjcT|T;0-cX#PFyJU0|0<j8~pZ9Fu+re(5;H<zi>s3j;xJv$vFlFk0fT zSB!WI3Z-IK->NNN=iJ**Qn6T5wY=3=(&6yu8*}uwEK3+!jMBQq_nqhn+_Ow7YXZ|( zn}yx|*oj0;{$v_2>?)m6tg{$$fsl1Cd*<`QkSS%MizT=L#Ka>(toQKvvh2v&omoUL zhQ!;<6@?~Q1hTA;KwEY{%y?TrPF#7#^EF7IF88UOLgVkRJnKwvCzBVs97tJu4CtEE z@o<^`N)f#<Ycb__gihNX@~Ci)pA{OQ48M`K94s)#{PP)$1K%aP{rM9l4d31OYJmi- zo6N=+=brpAFd5IfZV->>%rvhnL+QP0Nv0m#xz>k0j}?r0N|RDmFokM6wzf6HwRgxZ z&-|UixOe!|@V&JT3v#CRjI55sHQ5&_`!mVvMFx_yTH>rv`UE{1wh5mbJvrwGTIBKe z7Z<L_HVY!<ienE9vzxFO?{S7hmvlZ<H+$=05O#{t8RK%+0yQV)-{1gF?zDy35?{tU z)DOS5R8DHUu?m;`%OC-wbi1e}uabdeZWS8EIsuy1gXzrgfMkG@cjdPg2M31I%Tsdt zCr3uU(WpS5olQ>!Q8LllolzW^Wou-?y}E7UT^*~0Q4<r807^o+=4G#)@rd}c1wlu_ zm(VwDjmkdT5H_~6kLhOCu-m;bDGv1P#M17ZpUdRVUa8xr-Kp?<LQc=?KHHRW{g36q z)4K$76CNrUiJ7514VBC-#aFzvbuU8Q7~Tc82Od^GImbIBhle|T{i*<KyU!qZUjIVO zzV%Vt$V)q+g$sh0$hLElvpaGLI#z7P#(0v*xUAyL@><7UZ*~*wbWQ!In4Z9cjvH>P z<yrM!&u7|qM2lS|YPb!s_4?wR9*W_IDmG{Syv9-~aF<@>wW3nii|njCxl*>wak=*l zSoqeDIB9Ncj1XiOU;k3BHm5sg7V37AFM#4HZDVTzsp2l!^GWI!al*}Uh7&<`v!A3H zSv;S8-eq;=5e;F(UzdJ6|3EgGtTF88-G@}xXSS6|yLwMwZ6&*ORtLyTyWFG`PeyOa zjK>YP<Z_TeCTd#bMXW5Q^p?m1xZ@ILk9&qH>y`+5&rYwERIpoe3y|H9EU$)`m4d_H zI*M-32W(*7l3z`T=1<bqkg=pZX>3i{_<mPS_Z)r8f**k__x-ar@K}o#nULoW(a#CU z)bQ_~2s-KLNkKETB}-cQWHedl7wN#BzG(L^ybrT4zXO26mTxdC_~@M3#H@-!2U~2P zN5|Quy!#$~6#HkkL|g90v|FrOlw`G0UjvV5%YMj$XxEr`^+Rwpy9Hq}KU*k=y%9rF zL&yy|S&j!z?gbx%`t>m!N!6VoS`+o2{puN9dse=;H@$-TX1B99SSw<;NE*OtTrDrz z=n9kOOx=CcR_tlZ0=_j3j}aHPHOl|Irg&cuCUjx20ADAqLsRI}^QPUQI*Z>$o4G{j zqUfg2JMEG-rr<5N7QAwgo*)}oW1NAS%Umx41Kg6ntJJMn-k`E)NeeAymp7IX^9wEH z?v`ha?W^u4KMg)P?^>F%050^UW1Y4uU<?{7>MHu4U9=`a`C^Fa00}8>WWW6PlCkLS zOHiJ<bnxrvsYrz+l>j@8of?K^{AN$<$A|9eqFLenBv;=M4>YmM&AlD7!gM@=%o#%% zwyPA3Al4@ZQP!Tgi#^$@3Mi{|yM=8k3Or;8Uw`OhdrkMf5p?mn9`v{JJ~ZUl6ZuTr z)^>q#FfE#fl1GqAl(;riFFl$d{=6lOKy&;H%imGW*|Ix_&lV#B963gLsHo*3;%9%0 zcs0{Ly*TS21d3U{`^**ouAp}u{PUsSHwl~l-qseYwrd__(b2t0RZIJ(CcI<c+AlfT zNh?QLs}aX^q;k^PokyWT6^sVn$F$j3MHStNf?YDgBGa$VJ<hT|8(N;NN;r2hZu;%G zkWDqWYwhq=ZKI?V@Qyqm_h<$#D)H+X+_M*efs{93H2>A}_6{LL8-<u&k?Ijw3I|RF zoG^-3wQ4xu8ZCP6#x5I2zl}Uj@<Rw8ss&o;@_zj6?^dHzY#d{-`nPuGtm~DCci5ER za-EP5$t6hSA)!(-icEn3%L4mQ096i_d8NquNUpJMgFu*f^14k!tF`c+m@2rF55^0# zM)i5;1=7~YbEc?=ZF}P6W1f~8^~8y+XB)TQguz#>y@}~^h#^z|VavpLSCfFtsNf)7 zlo9&?0!dI?h@H#2sT;?3@nxq&0t>h1N$~%#S}q2D^8QHsj+z+Y<fzG~x#AyCtGk8| zIz+CNFDhkpw2u`nDkZyW6wk9l_9bWP{5VssoT~IxF=Whcag{k2E`~4q;Vq!Bm()l? zS>`EzvNs7jmut<Vs?^WHsB|VL5XtYdJ#4j+#yLNJ>xF0<<O7vD9iTtA>PNh-&mV|P z410$TI;^-P<1EBP4LY1zkDg-YNZS~dk#5dKk+5C4hX9^}oW?7LRb~BwfCT)J?kg{+ zt|}Pjo)$1UW8T}1n{n_=)D(E-XVx!v()PnZvi)BMatG6HEgbCH@&7kW1wRxyl;dXs znP|L?Wra%r0R(1my6AGmb66P3uC|)Rf+o~*#_M5zXsY|L@s~x;hNuH|v;YOxRn$3L z=a-N=loU+e=c`YRZ5kG?SBu!gh_uI2-}Hu)VZL<CPBIqI9)6$01^^fS1KgYOMhXbD z3*T!yD{MRR#{G19$|A%A*(kb$tz~z!c(aG3nPD905}NegbY#TnPqI%hjY!4{i_z08 zj%oD7Nm#ef#4alR78(LL*70=ddvY<+#bJ>Z-?A?L8X48~*kfONmrZSayE5y5wDFu^ zz)v`b+AT}RJUP+#47?&2;9I^PKj2&U=N?q%9FSHX4gC^<lNkoiBa@}VAa4{i{Vn8N zg2t$zi4(R_v<1w8DdrptH7uY{@%i2gUt^;B{5pq7QhTV!?!hu0cv@`V6Zg|Do4#EI zmWji!^2}S|-jph%K9VN{Uwza#r@PB`p&`3gZ#QdMxd==6U(m8&RyE%U*rzWL(xkCI z`Zb#^_L~$#n8ZZky4=L?Yhc|d)DyQ)73>(isD!5-l0)>mJI*~MFUJFNH@(kYPupM6 z!o)SCOu}&)X~=R)|8({h&6gi<s4|=FPRr&Ukd8VJc!zcwM{d|>EGcEQ7w@;Q!+2Hr zjISG!1Uo;amsA#5&1`h-VOTijz072{Tk?8QDS9w%Mb)}NGg6V_&yOCnl-2OGa3~qf znmNI8{^w>mdnQ{LcB-SG^HUyi#aJTQL>@s()-5GL6KrAiJ5ycv8gPWnTsYKWl>Di) z#~m)*#Bkijf|yvb>(3f)M{GUcG3y2#hu>l~IS03K%h(&(x()_fbp^ju!`P4Fah7$3 zvu08eFzdhTf8A5!eDu*K%BCT+R4LcZwjszSf%n(TVQ>70Wh+`CC{$Udc+Tf?C-bw` zo1HX9f!i$A0tCe|i%P6*#TiM7JTB6<a|R{xJSq_yH;Mz{^r7pQsmZ!1lc+l?pQB3f zu}E%3i9B6rHw(jWw*L;+>}Z8v1ZVicGdU?O%Lm7|v;o{J=RV_1_05H=%G6YmDePud zRrHve>2=3(9_ERKE5S@VO_0lBD9mYN)N;COHYXYyR=ezG^Q*YA0hd+VP;)vf=_(83 zFN??87j&*e7WNE=$>jEnQ<)d%@jQwIO70(jOTOgR#6!|8dy|>Hj}~`HqJ3IQ6iWBx z;o;#F=2(|HMVM1n6I^C0eSAja#@=f^Fv9Vk7<Kb;Ij1OWE-$^`bGGnu5lTy5h?Z%{ zyhwn#)kd;oXl*ug{H;i{jEb)@BeW2;U%d|5adA30<(+?1`?}pCk4}%s_(I0qPx!N< zc=HhZ!${fG4r+y9;azOHsx_M2yNQ_wu=Qzb{`J%Y=gv33j+@+lx+rXwc^37zz*fEH z5<hmyeG4nC2Nz&s3jEIRu*vC3hh2?|UQ%TFwTQlD%Sux&2`sq%J)=}Ra&oLOVNNdr zgZl`d<9^%_mYwAndOv(n#}dvNUKo{okNT@Kn&zxwfnzq)-Jd^q8TPRb)};lduoAya zs&>d+%>IOW0g%ehe*}SX^GEd0R3=s)VUCms;{^7(MvFEN2O?B{9C94Db63iAIR3HU zTGHc`4HYzXTurBEOkgf1MXmvQv~uXSQZ<5^PJtH9g`0rK{8uI$;bUk=IZ@md#hehJ z12T)1NkaCCNf0FWg4C!H;EAW8?oa>D!<lRe5IUR$oX`qD?Q4Vz918w6{8}hzfCy)A zBo%+#I^+o)AS89aQh#Q5$jxV+P?};v@wl&XSI!EKaAS>C8p+l$-he$s)!dV@lFrHa zwe10*mutz?BtG>diw-j7$LX4emS74<j={np5m1AI!&87yUj~dlB?{+OBRQk5OAYHT zkfE!Eg!=~^O9M7}rX$FP)<Ryo`{-!%ksD}dDc64U?$emrD;I|={>t(Em=y62>DI!S zyOJyioQ0iWi6{ItKfJ{61x-6p;FnN!9%1*bJHiOB1^Hmg+cHc)|DF?`oQ3MM9smd8 z_yKYBL<J<F?F1rxWxr+viMkCuky1U<jPU`C7a`F$l-@yr>}AApuY?Rug8I_Z<S&pq zY)7E{4TOqEY36Q?NXqQ{jfca<v<$H*&g}y+<PC@;l{DOPXgqQ)pm>eS6xB-o*?u~b zqbO5T_-DT9530nI;;~3o371tZLc`gYd}JT#<*J;VLphXMDt?Qqncs`T8<1dh1&r03 z@;LXkzx$PqW0HnlBH79brqe$`mY@~|KM_cLC5<;03ivkt0p7mOgbxybMDhj*T}OMD z?`7K*RLc|wFi9n#fRl6{4P@Tj0H9l$FEG@L93XKYRf%<TTT%@+aJ!|Jy{6i~7WWax z*_<8*TH<0sq$2DbmQ)%%YT4UsS$i@eX@(GV>>-o1`^@`9TK3H?RLPWV7<BRZn!+hJ zKx;en3z7gREa|+w0k~Nw1i+no60IsD4hTQGUk5PJn}}lY#8MFd0BQhVG5q`INJY6A z5O@2#fbgD?-Nh#0oYgjR(Gmvkld$WWt{aF^RHH;TRDdx=A<Tz?r_VVd=r|3?Iv~14 z=l~4x?Z5XSq+1ElHG_$vhX`A30w%l4{QEwVf{3S2PPK9y-_=DbjBSfZpb^0cx+i>B z@^Z!laeNG1$IRDj*y0QaR?t^e@E+39R?PT%6?jDojyR&I|LQ3J7Z&vsCn$Yy%3jwj zP8I+2bN))yFUSG8B7rJC%Sj25_g^`r4np}RQOy9@t{hBszi>;hAN}Bp@E#py<g}^4 z#v0Sn$cTY4rMWqCV*<|_M*~1Vl0zd^m-TsqLZonbQ%2eu9!*N*h0Jmr)l@<5X|!2l z3tIz;Z9GbK8PQ{RCFwyKXUH%uO~NdSCq=W%*9eql2*`UvW>(-qNM(`}<SP<&+Xo|} zeL>5DwhmvgX(H^iLOe5O`Q$pYp*6)PlbaZw6)71vKqx+hxUiHVNIMo1mHn^wuKXR! zwhfo1W<oQz(NN47p<Wu<qK23(GxjLi$1Wj}G)l4zMhHV_LMaJZvZaJFWGPGbrN|b_ zo=SLo`|gK#>HGeI?}yj%{4mEob2zU1zMp%!&hxykE6gnbl%@V=5*&R0%>rPN+JArw zBwl7Dpr;FyMPTZ0jnBE(jHucHE$EykM>}EMzAEYXJsq@uLr3qE#5X$$eO2fYEVz4# z8c~}pyvln(KUWg2Rl2-qHC?=NyiV4B%H=(qu+m*DnWXES?`x|)eH^KKFr_m*9?3O! zme&d9S}&R@43+!|AoHfss{wO36cN+724YOg<v3Y;kTn9Iu!*|4x|On6!)j0NcTk4> zAT4PJ4CU&Na`-Etb*UpX2(0N>(<r}>BCg8e0m$2qzgr@UwaxuWr&h55>g*f64@$5i zG6kq4S4W{@E2~AxluKD~g<AeJYSw@Sxqlm{gZ?hq@H&Y5>0rs*R{<5K1&rjb*#s#N z1RG<8Y7}*tk;0zGYIjm6meQnNt_Y<stU3NMD^R?!aSn;g#|0Rac(?RMKVJX`)!RpO zqA&uVK_QATlKg?LUXu4FU0?nza#%x?6a==yc_<SHl<8Jhl(~*fpgwvi*jW~JS`Ac? zFBpbWc8uMIQ#45Yr>cRNzC|)?6+Ju+$<Tj*O5%qW4qoxnhvriR1N5P~Z?~udP5v{W z;Cc#Dt@cCdStdgyMc3M|{!v=~6WpZ->a+pT+rrht&c>N(*smv^HNc%pWdanJ8Rc+5 zuruZ|NR(HBMDCcw-GwjbD9)Q=)j(#qLABpwwhIIB{^CbT{r42VnwjW8G->F^n@+7Y z=$tlXk1Gp(Gf6f_d`e*I4xL4U1ASY_%77<tjf7s~3rTh5?qY`n`{*QPF}|_joGPG# z8UiTGEU9jzCR+r-F%JIGei;NNh@N&p!5VvsOclqVxF)SKse_%=8@yM$!`#r`isI-@ zJF>}Gxuo41=-#9FZA672Q0ng1bdkVdNX28DpJ;@g9buuK%HP<MP5k7-9m9`Mv^%G) zBns+3p(;al1IFs3P-fRLt_sewL}n1*`#>Oiu_VFA)4?9&X>+3?wlAG}TKS?QJ285C z9Mr|==R5ovuuAuH0dG06)Uq6ZtlvO}Q-tqodziKK%N6G2Gj*}F@7&91yew4Zu7HxS z<|U|Xzl=#INc45ywlX^<c_C887zhrFs|s5oO5fc1e0~MY?&C!CJUCb$L{&g}J7hCO z?o8-s2>8PcBxNazS;_a1dckg}(OBK&R)2wdC6>s7+^w&CwZDTcr;-9VxU&h`C?6r9 zjCkF?#NxB7RTHS`MuversP>kcQB<8L-XPlzN(`{RhTl0d+^Z%&d?sB5&bZ*Z@zuqA z+-bO=W{db*^OxHGL^&Q`4_wevRq63~yz{)K=eSp)L>BxC)^G0;30DbUz!))iEjqt@ z<m?Gh&T&Z@j`qVoZwc`uhK;VY+b=GBneLbe1LV>La~}>}L~5x539D?qbTZ#vjnA@y zSNf*v9#^T2%Wf2K@8KmjG`Oqx<%bbk%=de0=pajrpZ1!1e9{B*PWa54D{!)Gk<rWA zAt~a$79XviPg7sgEhLf;52U7~@@>^WOsKloZC!ZoC|k+b>iUzVxx7X4qwpK^_yYa} zV+stX+25(WQt?&0-~8uN!?@Sop9P2`tKc-1nPmqHoeHx6IY0}BF70r_2t?rBls(NA z&JJR;*xMDu*Q4C<v9U&LrVp>Y6$x8d1I%3Y`{nFlq)63zme9m#=+hVMyGMyt1DF%^ z&^{(obl5dMH#|}hbXg}PZHzXuh+z>7K4BkRdfFXRRc&7r|0<q1&2M>1<qkbkf_0lZ z!?NZYZd=?!9@UImOVuX?E*%NTdRtoZ{yi=$0OmGiq{r9$4e~_oxOQG2Gu*zePHmd< zLLoc}_N8rD*6M79%T(_^g#Zt8W+g)j-y6W_SsUx?%qxKO<Xnyps0Pz^KTk^nkza@N zCaRXZZsTT-67W9KbcdLyMOdXfbL>ZG5#pEp**l_Nd?<h;v;h2c9@M%hJ`v{ZTN`b7 zSbJ=QcLI`eMM>53i8lG>qTzFzS>vq}nb9!{Rq2@S$TAw?+z%)R?jMWUwC!S|U#QdL ztvsWq?Ay5IYVp`~e^j^sQ6h7@NYxvG;iO`pn=yw8sig}JP>Lty0nvt3G3PJX^N5}N zq9vpO%jUM0YG0^NNm+#xUMNTP-T-l|?c21jo&lh#ZHw@zJELtdKB@sCULG71>dl1T zi$FiR!?O-;IGy&5xR_JwQL#E{NT;h%N^h9E<D}|I{$jmJAwnBWil&(1r0mJyN?Y8k zbudF${t0p$?a5iZ5^iaZDjd*b+>0V^qjwpZ>U18s%iXT*7{ilGn>JA)Y%i9?rn{oL zgYd+|@CW;=Z&e8FmJE-jUe;vlPad&z|E4P^MST_$uMU!R?;pI$^X7x8Ysr90^OIw? z2iy7K9|xz>=NF9ur+>67qK|%&8G35}>c!6&>yGs4Y$vXXBW{|-Tv>(|MoPrKyQwPv zL?3BqU#v4MPCUa6&{Gk{jye2z4B8%6MB<S3S)^HEDwi-RqIk+aCERT^QMDfz94sjl zsr>YIqKvf=$F8v*2xo@g63D}Tns?P*<$F~hH1ktV`Q#YCu>?u~n-%;pXF@08-C}%K z<)h~zKVUYIZciEMsyPpBUbS@Ya-Sr&ENc-58x2nEaR(Rc2YYkYtC6s!=(g7{PDJr; zc!2j0@;Bz->{mcB%7+o(FLJa2p4W9)9U_iWlOn3JbzAt%6Vmin!K$%*rKu%g*KCTl z1@`9huGWzmw4ifT-jBj?Y$l?<U2=U(PTUjgs?Oby6SGVu%y=4EkzX(~kUOTYKw(^d z{gRY;oc=xFn>TX!*p4^#a8`u5as;1b{Q`)q7}4{e%*?fUWgx#UA?p4qIv|5YT2GD2 z!$HF5GL8$+h1jq`9RX+yqZ>5ld!>i?N|Q-0Hng!HqgeutFKQq7-Yls>Q!MVva&k5s zRbQWV3Wc?cXYQf7V9qWYFxYrQ>L;IXnm%C4h`~AsIPhc97K_2>Q+a&`>WTb^Vm0pB zY6&mBoghg?ByZmm1m5|s$gj^^llVKyOygPId`0n;L($|IHOnihV)d-$Lp}?015Yo! zGMIE_R5H4Z-ab1z0WDp|f`N%gF#u1m4~24myeiF-_D;L6oAki_)~TOygwJ#rH(2q8 z1N_M)V&p?o>x5!!mZ(vaGduPpVoAPqA2NY<G1ZXfxkc-Ql<KpASzVj2;C}2Ro?^qg zpUeN-eb<Q|wY_k55Ipc%K})sxF*(zSLk%lIl^>WTVfTnTl8KeWmL~77fKA&qY2Jk_ z+L9_V5kDn+jFG@;y__Aon&7D{5$9*^e;`FZQSMG>_l<m!;x_PluT5sme+HiFAl|sg zTq?wbc07HkXkEEP8pG<RCuc+8ddg5Wxp$|s1Vfg6fx<xX7Sl-Ll1x9hdV|v9N2a+_ zN;sCV52!}{AXzb-{G%)?$C2Oh^vjh?BhP9G0SWgqsF#&<9q~K%&3(7@#pql67beM< zDqe8O2XE=&_M176p>U(#cd$^69Ex8(gD;MBZJ!ZtLNMt5yF%(3^@{QJQ+78K2X`!; zf3@#Hf5KFK7Gq@%IKT2md`s~Yb`54E8;_ZHwYxvDw#qo48xb9|$c_HJzUr>j%5Ov- zZ@xL-k~@S>O@paqBMG7~Z)=^AJDH}qOm^{StLbA0I7Fviz6fpRQFBs-$o@Z8?CH6G z1v^wKE3jn-bu0}k3>Y*t$QcRbC%qNSY?%q9;WM=5RUt-<Ltf-{(`0bpL2`;t49@3K zb5wM}`R$3QSZ+j?CXNt{H}e0A0I|CTWu1Edi}0eeQMX-Is%d_%U8VEaqO4udzXyEE zkwypAeo@|5%>(;^vbSw(iH}^7g$OmrJR!b!_h}ih6dFFCn)$gGSs5P$!Uku1&R9RS zZ60m)SeMA=O?W-iWkvIIpC5rj$2(8$E%J_fxmPm9>2)(-?QfKwKVNtlaTn6c)Qz;U zBbU_{Z7Ii90F+eXeOv}Tr2^2?GV9SxdjS2TdkHFMd`w2#>x2IX4Q?$z065H9nWiON z&o7TRlHZ@SOiFP*Gm<k6L<B9a9?B0#0X^d!CNhenW`h%JrTFyV)>S(M@QunM;C>?| z-ghG08E46)Ls6N>#9VW@96YdwF}`3<Y1Z+{`vXq4Z$*1f>(TtidW;B7b8skV$kIxY zs47jZXdc$6l0EVV`Eo?CWE&HA8|ce#fA~Zx=Ljs?4zM8q-IWK#02ZX4)}t2yAPgp2 z6A8P3^_0y@3_I}ZgTET&;OrF6jGcA?+R<B{j_wUAG$&B?V6wwC5hKC}2q5~mVy8x{ z3<p97IZx3vi}$}+8KjwI`l7}Q=ml0s96KQ>3U8_rb;!$OLI7fn!69c&On3M>;C?^O zm4eUN&))ET#>fmA`jU29*Ak=*_cFsklnlAXV&?>={hSAO=<r3kTYRcE;~=kN$(l-1 z2>YSK7w0`2k946pi`79~fiA^ep?(b7GPx2g6;_&|4ZpADG2Cai#G7vJo}ms#F|Hs? z)ZLTI;pw|V_z0w@E%A#l7zM7B64nqa0f?;1K^7KGI~xd+7Cx>;8j-QR%)_ddMPH_R zdef&aY&bFm%bWsGbr3pk2gO1Pn-T#~B?TNiW-zU6QVYp(?Fn*|lG(#Cz3l>P!;DQw zcLP%67WxHJyVW`ta=n7ig+(7(Gy;VPelz*Bdg1lPB}EKgeu8Hc<xz5aqXcM^E6Yv= z$&&y{FR<k0*eXlYOvRQOZP+0%@??Kubg=jOT47P4=Ev+7SX0f-%#$xqLP0oej04RX z!6?=&`cMfd+4t3!f*Z)0Q{C)=bLk`STZe&r1D9~vAx{*-ugVI>t`zg&>?+hj0*_e_ zbrU>XRx~&{9u+)01JBCKjRrS%+kU@9Z#FB~6@H$F>Kp&pqO4nFqmMEI|J%n?Tn=|4 zmbzs(zJB14Cv3cljAlgSo*{s)sfC<Sx&U^tLLk8ZY^cGN>3!FsXKG_IqmwU<Lmv{u zS>l-W2$wk5nOK@%sU_jf(itpww_HZ$2k7fR?Ssaky-V(7tQ1>GkyLzM_NF4a%diFx z?&NjX-^_yy@C$h-DPeE}P#A*;<hzUo8EmYL6)9Dj+=b$;DI*4aevtr<)<jsOb6p1= zJtyhjwv)U|uy5Wnu*1CuQXXxnqJ3;{y<FoH+WPfz2ZUaDZ7uiaShO%*)O#opt$`BP zS-x*^KFd#$iGNw{g~Gjdta0uz?y<B1YYjB`;mp#k{Ukjq>ZsA*@7_}KFn`w9dnsg6 zzo4G=+-`Yqph$Rkoy?RzY5W9*waErB^DcgtN43ABpB@`7rFH?S_p0fp)cd86SMrSh zZjSEPNC3P>+H-!*3=c*%j2T1_XwiTY`%`%>_^mu3AMe0#vOol3S9`AQ?T#C$SNwS# z6-SlQ&Y<|xajhxTsU2#4fl+S(>7w4g%2?^|w%eqKEX}^8hWmny9i`!%(n@wuvZc%u z<bB4pN=2@gz@~Dv05SCL>G480Cf;Y@VMn#smq7O~-+O}k!O+w_Htt$EK=$IGJ0JAA zB)yf5B<fpoEwa$RiHYxFoSD4<<ZU0stY-jg(*Gp)`6_hHjV!g|-O39hq&FYwU0?$b zMW3kqwXrD@%nsPUuEFTRe?1ztU<8C(?g(H1s|9?ep$@EA9?drgVYz=lJ3z>1rTw;^ zbAPvh51+xnq$AwQ#o0jk^Pi829GEgrg`5Zwng4fVJOUULsPa(o9~+S&q2LWZkgBP) z``5-mV9->ZWx+o-2EznmfaSH^d85BJP8<VJw^-X5?SE|4x?>MHGOi{(y1z7H#DGDo z=gfcm#~chBC*&o{g`H9PwejDf{AY6i9m;>-%6}L5|NCAEklbZ=)BoBm=^6)NHXy;y o&*h^pcU{xL{;~@LISJo)3gtVkS}L69=oaut);7{AB-)4m2hQ`1(*OVf diff --git a/libs/application/templates/social-insurance-administration/household-supplement/assets/household-supplement-flow-chart.drawio b/libs/application/templates/social-insurance-administration/household-supplement/assets/household-supplement-flow-chart.drawio deleted file mode 100644 index c79273a3eced..000000000000 --- a/libs/application/templates/social-insurance-administration/household-supplement/assets/household-supplement-flow-chart.drawio +++ /dev/null @@ -1,158 +0,0 @@ -<mxfile host="65bd71144e"> - <diagram id="2TvxPNVq2NB_tCsKO4EG" name="Page-1"> - <mxGraphModel dx="1058" dy="1502" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> - <root> - <mxCell id="0"/> - <mxCell id="1" parent="0"/> - <mxCell id="23" value="" style="whiteSpace=wrap;html=1;fillColor=#FFFFFF;gradientColor=none;strokeColor=#666666;" vertex="1" parent="1"> - <mxGeometry x="-40" y="-90" width="720" height="810" as="geometry"/> - </mxCell> - <mxCell id="24" value="Draft" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="90" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="25" value="Tryggingastofnun submitted" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="200" y="210" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="26" value="Tryggingastofnun in review" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="465" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="27" value="Additional documents required" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="120" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="28" value="Approved" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="29" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="26" target="27"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="525" as="sourcePoint"/> - <mxPoint x="320" y="585" as="targetPoint"/> - <Array as="points"> - <mxPoint x="180" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="30" value="" style="endArrow=classic;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1" source="27" target="26"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="70" y="615" as="sourcePoint"/> - <mxPoint x="70" y="675" as="targetPoint"/> - <Array as="points"> - <mxPoint x="70" y="615"/> - <mxPoint x="70" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="31" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="24"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="200" y="240" as="sourcePoint"/> - <mxPoint x="140" y="120" as="targetPoint"/> - <Array as="points"> - <mxPoint x="140" y="240"/> - <mxPoint x="140" y="120"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="32" value="Edit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="100" y="165" width="40" height="30" as="geometry"/> - </mxCell> - <mxCell id="33" value="Reject" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="460" y="535" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="34" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="230" y="165" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="35" value="Additional documents required" style="text;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="110" y="515" width="65" height="50" as="geometry"/> - </mxCell> - <mxCell id="36" value="Approve" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="250" y="535" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="37" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="10" y="535" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="38" value="Rejected" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="400" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="39" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="26" target="38"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="340" y="545" as="sourcePoint"/> - <mxPoint x="200" y="605" as="targetPoint"/> - <Array as="points"> - <mxPoint x="460" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="40" value="TR makes a<br>state change" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="280" y="295" width="90" height="40" as="geometry"/> - </mxCell> - <mxCell id="41" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="25"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="319" y="350" as="sourcePoint"/> - <mxPoint x="318.8899999999999" y="465" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="42" value="Pre" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="-30" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="43" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="320" y="45" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="44" value="Tryggingastofnun abort" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="330" y="210" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="45" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="44" target="24"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="570" y="240" as="sourcePoint"/> - <mxPoint x="630" y="120" as="targetPoint"/> - <Array as="points"> - <mxPoint x="510" y="240"/> - <mxPoint x="510" y="120"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="46" value="Edit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="510" y="165" width="40" height="30" as="geometry"/> - </mxCell> - <mxCell id="47" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" target="26"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="391.1099999999999" y="270" as="sourcePoint"/> - <mxPoint x="449.9999999999999" y="465" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="48" value="In review" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="215" y="360" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="49" value="In review" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="359" y="360" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="50" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="30" as="sourcePoint"/> - <mxPoint x="320" y="90" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="51" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="150" as="sourcePoint"/> - <mxPoint x="390" y="210" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="52" value="Abort" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="359" y="165" width="50" height="30" as="geometry"/> - </mxCell> - <mxCell id="53" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="150" as="sourcePoint"/> - <mxPoint x="260" y="210" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="54" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="28"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="525" as="sourcePoint"/> - <mxPoint x="400" y="615" as="targetPoint"/> - <Array as="points"/> - </mxGeometry> - </mxCell> - </root> - </mxGraphModel> - </diagram> -</mxfile> \ No newline at end of file diff --git a/libs/application/templates/social-insurance-administration/household-supplement/assets/household-supplement-flow-chart.png b/libs/application/templates/social-insurance-administration/household-supplement/assets/household-supplement-flow-chart.png deleted file mode 100644 index d5278a3c18dd3573235c5dbf9cc690921cc91323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62440 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 diff --git a/libs/application/templates/social-insurance-administration/old-age-pension/assets/old-age-pension-flow-chart.drawio b/libs/application/templates/social-insurance-administration/old-age-pension/assets/old-age-pension-flow-chart.drawio deleted file mode 100644 index b716c134fe83..000000000000 --- a/libs/application/templates/social-insurance-administration/old-age-pension/assets/old-age-pension-flow-chart.drawio +++ /dev/null @@ -1,157 +0,0 @@ -<mxfile host="65bd71144e"> - <diagram id="TPfQYejgOXyKDrpABapk" name="Page-1"> - <mxGraphModel dx="1794" dy="1959" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0"> - <root> - <mxCell id="0"/> - <mxCell id="1" parent="0"/> - <mxCell id="124" value="" style="whiteSpace=wrap;html=1;fillColor=#FFFFFF;gradientColor=none;strokeColor=#666666;" parent="1" vertex="1"> - <mxGeometry x="-40" y="-90" width="720" height="810" as="geometry"/> - </mxCell> - <mxCell id="2" value="Draft" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="260" y="90" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="3" value="Tryggingastofnun submitted" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="200" y="210" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="4" value="Tryggingastofnun in review" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="260" y="465" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="6" value="Additional documents required" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="120" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="7" value="Approved" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="260" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="11" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" parent="1" source="2" target="3" edge="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="410" y="650" as="sourcePoint"/> - <mxPoint x="460" y="600" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="13" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="4" target="6" edge="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="525" as="sourcePoint"/> - <mxPoint x="320" y="585" as="targetPoint"/> - <Array as="points"> - <mxPoint x="180" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="14" value="" style="endArrow=classic;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" parent="1" source="6" target="4" edge="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="70" y="615" as="sourcePoint"/> - <mxPoint x="70" y="675" as="targetPoint"/> - <Array as="points"> - <mxPoint x="70" y="615"/> - <mxPoint x="70" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="15" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="2" edge="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="200" y="240" as="sourcePoint"/> - <mxPoint x="140" y="120" as="targetPoint"/> - <Array as="points"> - <mxPoint x="140" y="240"/> - <mxPoint x="140" y="120"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="26" value="Edit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="100" y="165" width="40" height="30" as="geometry"/> - </mxCell> - <mxCell id="28" value="Reject" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="460" y="535" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="30" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="230" y="165" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="32" value="Additional documents required" style="text;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="110" y="515" width="65" height="50" as="geometry"/> - </mxCell> - <mxCell id="37" value="Approve" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="250" y="535" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="40" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="10" y="535" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="48" value="Rejected" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="400" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="50" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="4" target="7" edge="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="330" y="535" as="sourcePoint"/> - <mxPoint x="190" y="595" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="51" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="4" target="48" edge="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="340" y="545" as="sourcePoint"/> - <mxPoint x="200" y="605" as="targetPoint"/> - <Array as="points"> - <mxPoint x="460" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="53" value="TR makes a<br>state change" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="280" y="295" width="90" height="40" as="geometry"/> - </mxCell> - <mxCell id="54" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" edge="1" source="3"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="319" y="350" as="sourcePoint"/> - <mxPoint x="318.89" y="465" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="125" value="Pre" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="-30" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="127" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="30" as="sourcePoint"/> - <mxPoint x="320" y="90" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="128" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="320" y="45" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="129" value="Tryggingastofnun abort" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="330" y="210" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="130" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="129" target="2"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="570" y="240" as="sourcePoint"/> - <mxPoint x="630" y="120" as="targetPoint"/> - <Array as="points"> - <mxPoint x="510" y="240"/> - <mxPoint x="510" y="120"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="131" value="Edit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="510" y="165" width="40" height="30" as="geometry"/> - </mxCell> - <mxCell id="132" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1" source="2" target="129"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="330" y="160" as="sourcePoint"/> - <mxPoint x="270" y="220" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="133" value="Abort" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="359" y="165" width="50" height="30" as="geometry"/> - </mxCell> - <mxCell id="134" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" target="4"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="391.11" y="270" as="sourcePoint"/> - <mxPoint x="449.9999999999999" y="465" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="136" value="In review" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="215" y="360" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="137" value="In review" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="359" y="360" width="70" height="30" as="geometry"/> - </mxCell> - </root> - </mxGraphModel> - </diagram> -</mxfile> \ No newline at end of file diff --git a/libs/application/templates/social-insurance-administration/old-age-pension/assets/old-age-pension-flow-chart.png b/libs/application/templates/social-insurance-administration/old-age-pension/assets/old-age-pension-flow-chart.png deleted file mode 100644 index 129bd286e0fdd28f9e546946d914da143bc36fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62505 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 IK(Y<_50#mnEC2ui diff --git a/libs/application/templates/social-insurance-administration/pension-supplement/src/assets/pension-supplement-flow-chart.drawio b/libs/application/templates/social-insurance-administration/pension-supplement/src/assets/pension-supplement-flow-chart.drawio deleted file mode 100644 index 31c512237e33..000000000000 --- a/libs/application/templates/social-insurance-administration/pension-supplement/src/assets/pension-supplement-flow-chart.drawio +++ /dev/null @@ -1,157 +0,0 @@ -<mxfile host="65bd71144e"> - <diagram id="NqZFgfEtZ0fkA-t-eZ1Y" name="Page-1"> - <mxGraphModel dx="2144" dy="2241" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> - <root> - <mxCell id="0"/> - <mxCell id="1" parent="0"/> - <mxCell id="22" value="" style="whiteSpace=wrap;html=1;fillColor=#FFFFFF;gradientColor=none;strokeColor=#666666;" vertex="1" parent="1"> - <mxGeometry x="-40" y="-90" width="720" height="810" as="geometry"/> - </mxCell> - <mxCell id="23" value="Draft" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="90" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="24" value="Tryggingastofnun submitted" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="200" y="210" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="25" value="Tryggingastofnun in review" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="465" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="26" value="Additional documents required" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="120" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="27" value="Approved" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="28" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1" source="23" target="24"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="410" y="650" as="sourcePoint"/> - <mxPoint x="460" y="600" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="29" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="25" target="26"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="525" as="sourcePoint"/> - <mxPoint x="320" y="585" as="targetPoint"/> - <Array as="points"> - <mxPoint x="180" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="30" value="" style="endArrow=classic;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1" source="26" target="25"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="70" y="615" as="sourcePoint"/> - <mxPoint x="70" y="675" as="targetPoint"/> - <Array as="points"> - <mxPoint x="70" y="615"/> - <mxPoint x="70" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="31" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="23"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="200" y="240" as="sourcePoint"/> - <mxPoint x="140" y="120" as="targetPoint"/> - <Array as="points"> - <mxPoint x="140" y="240"/> - <mxPoint x="140" y="120"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="32" value="Edit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="100" y="165" width="40" height="30" as="geometry"/> - </mxCell> - <mxCell id="33" value="Reject" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="460" y="535" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="34" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="230" y="165" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="35" value="Additional documents required" style="text;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="110" y="515" width="65" height="50" as="geometry"/> - </mxCell> - <mxCell id="36" value="Approve" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="250" y="535" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="37" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="10" y="535" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="38" value="Rejected" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="400" y="585" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="39" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="25" target="27"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="330" y="535" as="sourcePoint"/> - <mxPoint x="190" y="595" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="40" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="25" target="38"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="340" y="545" as="sourcePoint"/> - <mxPoint x="200" y="605" as="targetPoint"/> - <Array as="points"> - <mxPoint x="460" y="495"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="41" value="TR makes a<br>state change" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="280" y="295" width="90" height="40" as="geometry"/> - </mxCell> - <mxCell id="42" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="24"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="319" y="350" as="sourcePoint"/> - <mxPoint x="318.8899999999999" y="465.00000000000045" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="43" value="Pre" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="260" y="-30" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="44" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="320" y="30" as="sourcePoint"/> - <mxPoint x="320" y="90" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="45" value="Submit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="320" y="45" width="60" height="30" as="geometry"/> - </mxCell> - <mxCell id="46" value="Tryggingastofnun abort" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> - <mxGeometry x="330" y="210" width="120" height="60" as="geometry"/> - </mxCell> - <mxCell id="47" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="46" target="23"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="570" y="240" as="sourcePoint"/> - <mxPoint x="630" y="120" as="targetPoint"/> - <Array as="points"> - <mxPoint x="510" y="240"/> - <mxPoint x="510" y="120"/> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="48" value="Edit" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="510" y="165" width="40" height="30" as="geometry"/> - </mxCell> - <mxCell id="49" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#FFFFFF;strokeColor=#000000;" edge="1" parent="1" source="23" target="46"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="330" y="160" as="sourcePoint"/> - <mxPoint x="270" y="220" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="50" value="Abort" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="359" y="165" width="50" height="30" as="geometry"/> - </mxCell> - <mxCell id="51" value="" style="endArrow=classic;html=1;fontColor=#FFFFFF;strokeColor=#000000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" target="25"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="391.1100000000001" y="270" as="sourcePoint"/> - <mxPoint x="449.9999999999999" y="465" as="targetPoint"/> - </mxGeometry> - </mxCell> - <mxCell id="52" value="In review" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="215" y="360" width="70" height="30" as="geometry"/> - </mxCell> - <mxCell id="53" value="In review" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#000000;" vertex="1" parent="1"> - <mxGeometry x="359" y="360" width="70" height="30" as="geometry"/> - </mxCell> - </root> - </mxGraphModel> - </diagram> -</mxfile> \ No newline at end of file diff --git a/libs/application/templates/social-insurance-administration/pension-supplement/src/assets/pension-supplement-flow-chart.png b/libs/application/templates/social-insurance-administration/pension-supplement/src/assets/pension-supplement-flow-chart.png deleted file mode 100644 index 123bf2cd3546840078702bc33d28fbb30768f36a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62500 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 T%I<XR4)CL|ZLC#{a|rtn9}>!l diff --git a/libs/auth-api-lib/test/globalTeardown.ts b/libs/auth-api-lib/test/globalTeardown.ts deleted file mode 100644 index 3c68a8d91879..000000000000 --- a/libs/auth-api-lib/test/globalTeardown.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { register } from 'tsconfig-paths' - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const tsConfig = require(`../${require('../tsconfig.json').extends}`) -register({ baseUrl: './', paths: tsConfig.compilerOptions.paths }) -import { stopPostgres } from '@island.is/testing/containers' - -export default async () => { - await stopPostgres() -} diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index baf1a4cce89b..688d076cbea4 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -1123,10 +1123,12 @@ "type": "object", "properties": { "is": { - "type": "string" + "type": "string", + "default": "" }, "en": { - "type": "string" + "type": "string", + "default": "" } }, "required": [ @@ -2190,4 +2192,4 @@ } } } -} +} \ No newline at end of file diff --git a/libs/clients/health-directorate/src/clientConfig.json b/libs/clients/health-directorate/src/clientConfig.json deleted file mode 100644 index 47e5c87470b9..000000000000 --- a/libs/clients/health-directorate/src/clientConfig.json +++ /dev/null @@ -1,1455 +0,0 @@ -{ - "openapi": "3.0.1", - "info": { - "title": "Landlæknir API", - "description": "Vefþjónustur á vegum Landlæknis.", - "contact": { - "name": "Hólmfríður Pálsdóttir", - "email": "holmfridur.palsdottir@landlaeknir.is" - }, - "license": { "name": "Landlæknir", "url": "https://www.landlaeknir.is/" }, - "version": "1.0.1", - "x-links": { - "documentation": "https://www.landlaeknir.is/", - "responsibleParty": "https://www.landlaeknir.is/", - "bugReport": "https://www.landlaeknir.is/um-embaettid/abendingar/", - "featureRequest": "https://www.landlaeknir.is/" - } - }, - "paths": { - "/StarfsleyfiAMinumSidum": { - "get": { - "tags": ["StarfsleyfiAMinumSidum"], - "summary": "Sækja mín starfsleyfi", - "responses": { - "200": { - "description": "Skilar mínum starfsleyfum", - "content": { - "text/plain": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/MinarSidur" } - } - }, - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/MinarSidur" } - } - }, - "text/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/MinarSidur" } - } - } - } - }, - "400": { "description": "Kennitala er á röngu formi" }, - "404": { "description": "Starfsmaður fannst ekki" } - } - } - }, - "/StodskrarFraEmbaettiLandlaeknis/SaekjaAllaRekstraradilar": { - "get": { - "tags": ["StodskrarFraEmbaettiLandlaeknis"], - "summary": "Allir virkir rekstraraðilar í gagnagrunni embætti landlæknis", - "responses": { - "200": { - "description": "Skilar öllum Rekstraraðilum", - "content": { - "text/plain": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/Rekstraradilar" } - } - }, - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/Rekstraradilar" } - } - }, - "text/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/Rekstraradilar" } - } - } - } - }, - "400": { "description": "Villa kom upp" } - } - } - }, - "/StodskrarFraEmbaettiLandlaeknis/SaekjaAllaHeilbrigdisstarfsmenn": { - "get": { - "tags": ["StodskrarFraEmbaettiLandlaeknis"], - "summary": "Listi yfir lækna, hjúkrunarfræðingar, ljósmæður, tannlæknar...", - "responses": { - "200": { - "description": "Skilar öllum heilbrigðisstarfsmönnum", - "content": { - "text/plain": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Heilbrigdisstarfsmenn" - } - } - }, - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Heilbrigdisstarfsmenn" - } - } - }, - "text/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Heilbrigdisstarfsmenn" - } - } - } - } - }, - "400": { "description": "Villa kom upp" } - } - } - }, - "/UmsoknStarfsleyfi/NamsUpplys": { - "get": { - "tags": ["UmsoknStarfsleyfi"], - "summary": "Sækja upplýsingar um námsgögn fyrir umsóknir um starfsleyfi", - "responses": { - "200": { - "description": "Skilar námsupplýsingum", - "content": { - "text/plain": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/NamsUpplysingar" } - } - }, - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/NamsUpplysingar" } - } - }, - "text/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/NamsUpplysingar" } - } - } - } - } - } - } - }, - "/UmsoknStarfsleyfi/Starfsleyfi": { - "get": { - "tags": ["UmsoknStarfsleyfi"], - "summary": "Sækja upplýsingar um starfsleyfi fyrir umsóknir um vottorð", - "responses": { - "200": { - "description": "Skilar starfsleyfum", - "content": { - "text/plain": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StarfsleyfiUmsoknStarfsleyfi" - } - } - }, - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StarfsleyfiUmsoknStarfsleyfi" - } - } - }, - "text/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StarfsleyfiUmsoknStarfsleyfi" - } - } - } - } - }, - "400": { "description": "Kennitala er á röngu formi" } - } - } - }, - "/UmsoknStarfsleyfi/UtbuaSkjal": { - "post": { - "tags": ["UmsoknStarfsleyfi"], - "summary": "Útbúa innsiglað vottorð um starfsleyfi", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UtbuaStarfsleyfiSkjalRequest" - } - }, - "text/json": { - "schema": { - "$ref": "#/components/schemas/UtbuaStarfsleyfiSkjalRequest" - } - }, - "application/*+json": { - "schema": { - "$ref": "#/components/schemas/UtbuaStarfsleyfiSkjalRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Skilar base64 streng", - "content": { - "text/plain": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UtbuaStarfsleyfiSkjalResponse" - } - } - }, - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UtbuaStarfsleyfiSkjalResponse" - } - } - }, - "text/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UtbuaStarfsleyfiSkjalResponse" - } - } - } - } - }, - "400": { "description": "Kennitala er á röngu formi" }, - "404": { "description": "Starfsmaður fannst ekki" } - } - } - }, - "/Vottord/StarfsleyfiVottord": { - "get": { - "tags": ["Vottord"], - "summary": "Sækja upplýsingar um starfsleyfi fyrir umsóknir um vottorð", - "responses": { - "200": { - "description": "Skilar starfsleyfum", - "content": { - "text/plain": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/StarfsleyfiVottord" } - } - }, - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/StarfsleyfiVottord" } - } - }, - "text/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/StarfsleyfiVottord" } - } - } - } - }, - "400": { "description": "Kennitala er á röngu formi" }, - "404": { "description": "Starfsmaður fannst ekki" } - } - } - }, - "/Vottord/StarfstettVottord/{ssnNumber}": { - "get": { - "tags": ["Vottord"], - "summary": "Sækja upplýsingar um starfstétt fyrir umsóknir um vottorð B leið", - "parameters": [ - { - "name": "ssnNumber", - "in": "path", - "required": true, - "schema": { "type": "string", "nullable": true } - } - ], - "responses": { - "200": { - "description": "Skilar starfsleyfum", - "content": { - "text/plain": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/StarfstettVottord" } - } - }, - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/StarfstettVottord" } - } - }, - "text/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/StarfstettVottord" } - } - } - } - }, - "400": { "description": "Kennitala er á röngu formi" } - } - } - }, - "/Vottord/UtbuaSkjal": { - "post": { - "tags": ["Vottord"], - "summary": "Útbúa innsiglað vottorð um starfsleyfi", - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/UtbuaSkjalRequest" } - }, - "text/json": { - "schema": { "$ref": "#/components/schemas/UtbuaSkjalRequest" } - }, - "application/*+json": { - "schema": { "$ref": "#/components/schemas/UtbuaSkjalRequest" } - } - } - }, - "responses": { - "200": { - "description": "Skilar base64 streng", - "content": { - "text/plain": { - "schema": { "$ref": "#/components/schemas/UtbuaSkjalResponse" } - }, - "application/json": { - "schema": { "$ref": "#/components/schemas/UtbuaSkjalResponse" } - }, - "text/json": { - "schema": { "$ref": "#/components/schemas/UtbuaSkjalResponse" } - } - } - }, - "400": { "description": "Kennitala er á röngu formi" }, - "404": { "description": "Starfsmaður fannst ekki" } - } - } - }, - "/Vottord/SkraUmsokn": { - "post": { - "tags": ["Vottord"], - "summary": "Skrá inn nýja umsókn um vottorð", - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/VottordUpplB" } - }, - "text/json": { - "schema": { "$ref": "#/components/schemas/VottordUpplB" } - }, - "application/*+json": { - "schema": { "$ref": "#/components/schemas/VottordUpplB" } - } - } - }, - "responses": { - "200": { - "description": "Skilar strengnum \"Umsókn skráð\"", - "content": { - "text/plain": { "schema": { "type": "string" } }, - "application/json": { "schema": { "type": "string" } }, - "text/json": { "schema": { "type": "string" } } - } - }, - "400": { "description": "Kennitala er á röngu formi" }, - "404": { "description": "Starfsmaður fannst ekki" } - } - } - }, - "/Vottord/SkraUmsokn/Upload": { - "post": { - "tags": ["Vottord"], - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/UploadFilesItem" } - }, - "text/json": { - "schema": { "$ref": "#/components/schemas/UploadFilesItem" } - }, - "application/*+json": { - "schema": { "$ref": "#/components/schemas/UploadFilesItem" } - } - } - }, - "responses": { - "200": { - "description": "Success", - "content": { - "text/plain": { "schema": { "type": "string" } }, - "application/json": { "schema": { "type": "string" } }, - "text/json": { "schema": { "type": "string" } } - } - } - } - } - }, - "/Vottord/Reglusett": { - "post": { - "tags": ["Vottord"], - "summary": "Skrá inn nýja umsókn um vottorð", - "requestBody": { - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/ReglusettVottordB" } - }, - "text/json": { - "schema": { "$ref": "#/components/schemas/ReglusettVottordB" } - }, - "application/*+json": { - "schema": { "$ref": "#/components/schemas/ReglusettVottordB" } - } - } - }, - "responses": { - "200": { - "description": "Skilar strengnum \"Umsókn skráð\"", - "content": { - "text/plain": { "schema": { "type": "string" } }, - "application/json": { "schema": { "type": "string" } }, - "text/json": { "schema": { "type": "string" } } - } - }, - "400": { "description": "Kennitala er á röngu formi" }, - "404": { "description": "Starfsmaður fannst ekki" } - } - } - } - }, - "components": { - "schemas": { - "MinarSidur": { - "type": "object", - "properties": { - "logadili_ID": { - "type": "string", - "description": "ID á Lögaðila", - "nullable": true, - "example": "123456" - }, - "kennitala": { - "type": "string", - "description": "Kennitala á Viðkomandi", - "nullable": true, - "example": "123456-1234" - }, - "nafn": { - "type": "string", - "description": "Nafn á viðkomandi", - "nullable": true, - "example": "Jón Jónsson" - }, - "starfsstett": { - "type": "string", - "description": "Starfsstétt", - "nullable": true, - "example": "Sjúkraflutningamaður" - }, - "leyfi": { - "type": "string", - "description": "Leyfi", - "nullable": true, - "example": "Starfsleyfi" - }, - "leyfisnumer": { - "type": "string", - "description": "Leyfisnúmer", - "nullable": true, - "example": "123" - }, - "gildir_Fra": { - "type": "string", - "description": "Gildir frá dagsetning", - "format": "date-time", - "nullable": true, - "example": "2009-11-03T00:00:00.0000000" - }, - "gildir_TIl": { - "type": "string", - "description": "Gildir Til dagsetning", - "format": "date-time", - "nullable": true, - "example": "2009-11-03T00:00:00.0000000" - }, - "id": { - "type": "integer", - "description": "Einkvæmt númer færslu", - "format": "int32", - "example": 99999 - }, - "stada": { - "type": "string", - "description": "Staða starfsleyfis", - "nullable": true, - "example": "Í gildi" - } - }, - "additionalProperties": false, - "description": "Gagnaklasi fyrir skil á upplýsingum fyrir viðkomandi starfsmann" - }, - "Rekstraradilar": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "ID", - "format": "int32", - "example": 12345 - }, - "skraningarnumer": { - "type": "string", - "description": "Skráningarnúmer", - "nullable": true, - "example": "RA07-2034" - }, - "kennitala": { - "type": "string", - "description": "Kennitala", - "nullable": true, - "example": "123" - }, - "rekstraradili": { - "type": "string", - "description": "Rekstraraðili", - "nullable": true, - "example": "Jón Jónsson" - }, - "adsetur": { - "type": "string", - "description": "Aðsetur", - "nullable": true, - "example": "Sálfræðihúsið," - }, - "postfang": { - "type": "string", - "description": "Póstfang", - "nullable": true, - "example": "Hverfisgata 1" - }, - "heilbrigdisumdaemi": { - "type": "string", - "description": "Heilbrigðisumdæmi", - "nullable": true, - "example": "Höfuðborgarsvæðið" - }, - "sottvarnarumdaemi": { - "type": "string", - "description": "Sóttvarnarumdæmi", - "nullable": true, - "example": "Höfuðborgarsvæðið" - }, - "postnr": { - "type": "string", - "description": "Póstnúmer", - "nullable": true, - "example": "Höfuðborgarsvæðið" - }, - "kt_Abyrgdarmanns": { - "type": "string", - "description": "Kennitala ábyrgðarmanns", - "nullable": true, - "example": "0101012229" - }, - "nafn_AB_Adila": { - "type": "string", - "description": "Nafn AB Aðila", - "nullable": true, - "example": "Jón Jónsson" - }, - "tilheyrir": { - "type": "string", - "description": "Tilheyrir", - "nullable": true, - "example": "RA18-4534" - }, - "rekstrarform": { - "type": "string", - "description": "Rekstrarform", - "nullable": true, - "example": "E" - }, - "teg_Rekstrarform": { - "type": "string", - "description": "Tegund Rekstrarforms", - "nullable": true, - "example": "null" - }, - "svidsnumer": { - "type": "string", - "description": "Sviðsnúmer", - "nullable": true, - "example": "01" - }, - "teG_REKSTRAR": { - "type": "string", - "description": "Tegund Rekstrar", - "nullable": true, - "example": "80" - }, - "teG_REKSTRAR_HEITI": { - "type": "string", - "description": "Tegund Rekstrar Heiti", - "nullable": true, - "example": "Starfsstofa" - }, - "teG_STARFSSVIDS": { - "type": "string", - "description": "Tegund Starfssvið", - "nullable": true, - "example": "SA" - }, - "starfssvid": { - "type": "string", - "description": "Starfsvið", - "nullable": true, - "example": "Sálfræðingur" - }, - "stada": { - "type": "string", - "description": "Staða", - "nullable": true, - "example": "Virkt" - }, - "tilkynnt": { - "type": "string", - "description": "Tilkynnt", - "nullable": true, - "example": "09/01/2007 00:00:00" - }, - "aR_TILKYNNT": { - "type": "string", - "description": "Ár Tilkynnt", - "nullable": true, - "example": "2000" - }, - "maN_TILKYNNT": { - "type": "string", - "description": "Mánuður Tilkynnt", - "nullable": true, - "example": "01" - }, - "daG_TILKYNNT": { - "type": "string", - "description": "Dagsetning Tilkynnt", - "nullable": true, - "example": "02" - }, - "skrad": { - "type": "string", - "description": "Skráð", - "nullable": true, - "example": "09/01/2007 00:00:00" - }, - "stadfest": { - "type": "string", - "description": "Staðfest", - "nullable": true, - "example": "09/01/2007 00:00:00" - }, - "aR_STADFEST": { - "type": "string", - "description": "Ár staðfest", - "nullable": true, - "example": "2000" - }, - "maN_STADFEST": { - "type": "string", - "description": "Mánuður staðfest", - "nullable": true, - "example": "02" - }, - "daG_STADFESTT": { - "type": "string", - "description": "Dags. staðfest", - "nullable": true, - "example": "01" - }, - "breytt": { - "type": "string", - "description": "Breytt", - "nullable": true, - "example": "09/01/2007 00:00:00" - }, - "malsnumer": { - "type": "string", - "description": "Málsnúmer", - "nullable": true, - "example": "1231212" - }, - "tolvupostur": { - "type": "string", - "description": "Tölvupóstur", - "nullable": true, - "example": "jon@jonsson.is" - }, - "undirskR_ADILI": { - "type": "string", - "description": "Undirskrift Aðila", - "nullable": true, - "example": "Jón Jónsson" - }, - "sergrein": { - "type": "string", - "description": "Sérgrein", - "nullable": true, - "example": "SA" - }, - "thjonustuflokkur": { - "type": "string", - "description": "Þjónustuflokkur", - "nullable": true, - "example": "700" - }, - "laT_WGS84": { - "type": "string", - "description": "LAT WGS84", - "nullable": true, - "example": "65,681422560691" - }, - "lonG_WGS84": { - "type": "string", - "description": "Long WGS84", - "nullable": true, - "example": "-18,0906092729421" - } - }, - "additionalProperties": false, - "description": "Gagnaklasi fyrir skil á upplýsingum fyrir Rekstraraðila" - }, - "Heilbrigdisstarfsmenn": { - "type": "object", - "properties": { - "logadili_ID": { - "type": "integer", - "description": "ID á Lögaðila", - "format": "int32", - "example": 12 - }, - "numer": { - "type": "string", - "description": "Númer", - "nullable": true, - "example": "1234" - }, - "kennitala": { - "type": "string", - "description": "Kennitala", - "nullable": true, - "example": "0101012229" - }, - "nafn": { - "type": "string", - "description": "Nafn", - "nullable": true, - "example": "Jón Jónsson" - }, - "kyn": { - "type": "integer", - "description": "Kyn", - "format": "int32", - "example": 2 - }, - "menntun": { - "type": "string", - "description": "Menntun", - "nullable": true, - "example": "Læknir" - }, - "kandidats_ar": { - "type": "string", - "description": "Kandidats ár", - "nullable": true, - "example": "2000" - }, - "leyfisstada": { - "type": "string", - "description": "Leyfisstaða", - "nullable": true, - "example": "Almennt lækingaleyfi" - }, - "dags_Laekn_Leyfis": { - "type": "string", - "description": "Dagsetning Leyfis", - "nullable": true, - "example": "04/22/2005 00:00:00" - }, - "dags_Sergr_1": { - "type": "string", - "description": "Dags Sérgrein 1", - "nullable": true, - "example": "04/22/2005 00:00:00" - }, - "sergr_1": { - "type": "string", - "description": "Sérgrein 1", - "nullable": true, - "example": "04/22/2005 00:00:00" - }, - "dags_Sergr_2": { - "type": "string", - "description": "Dags Sérgrein 2", - "nullable": true, - "example": "Almennar lyflækningar" - }, - "sergr_2": { - "type": "string", - "description": "Sérgrein 2", - "nullable": true, - "example": "04/22/2005 00:00:00" - }, - "dags_Sergr_3": { - "type": "string", - "description": "Dags Sérgrein 3", - "nullable": true, - "example": "Líknarlækningar" - }, - "sergr_3": { - "type": "string", - "description": "Sérgrein 3", - "nullable": true, - "example": "01-01-2000" - }, - "dags_Sergr_4": { - "type": "string", - "description": "Dags Sérgrein 4", - "nullable": true, - "example": "04/22/2005 00:00:00" - }, - "sergr_4": { - "type": "string", - "description": "Sérgrein 4", - "nullable": true, - "example": "Almennar lyflækningar" - }, - "sidast_Breytt": { - "type": "string", - "description": "Síðast breytt", - "nullable": true, - "example": "04/22/2005 00:00:00" - }, - "ny_Leyfisstada": { - "type": "string", - "description": "Ný Leyfisstaða", - "nullable": true, - "example": "" - }, - "ny_Dags_Leyfisstodu": { - "type": "string", - "description": "Ný Dagsetning leyfisstöðu", - "nullable": true, - "example": "01-01-2000" - }, - "audkenni": { - "type": "string", - "description": "Auðkenni", - "nullable": true, - "example": "HJ" - } - }, - "additionalProperties": false, - "description": "Gagnaklasi fyrir skil á upplýsingum Heilbrigðisstarfsmenn" - }, - "NamsUpplysingar": { - "type": "object", - "properties": { - "id": { "type": "integer", "format": "int32" }, - "idProfession": { - "type": "string", - "description": "Auðkenni Starfstétts", - "nullable": true, - "example": "SF" - }, - "educationId": { - "type": "integer", - "description": "Prof_id", - "format": "int32", - "example": 0 - }, - "educationName": { - "type": "string", - "description": "Nafn á prófi", - "nullable": true, - "example": "Framhaldskólapróf" - }, - "educationValidFrom": { - "type": "string", - "description": "Gildir frá dagsetning á prófinu", - "format": "date-time", - "nullable": true, - "example": "2009-11-03T00:00:00.0000000" - }, - "shortId": { - "type": "string", - "description": "Stutt ID frá háskólunum. Notað til að mappa saman nám.", - "nullable": true, - "example": "HJÚ273" - }, - "dataOrder": { - "type": "integer", - "description": "Röðun prófa/gagna, 1 = lægsta stig. NoOfData = hæðsta stig", - "format": "int32", - "example": 1 - }, - "noOfData": { - "type": "integer", - "description": "Fjöldi prófa/gagna sem þarf að skila.", - "format": "int32", - "example": 2 - } - }, - "additionalProperties": false - }, - "StarfsleyfiUmsoknStarfsleyfi": { - "type": "object", - "properties": { - "ssnNumber": { - "type": "string", - "description": "Kennitala á Viðkomandi", - "nullable": true, - "example": "123456-1234" - }, - "name": { - "type": "string", - "description": "Nafn á viðkomandi", - "nullable": true, - "example": "Jón Jónsson" - }, - "idProfession": { - "type": "string", - "description": "Auðkenni Starfstétts", - "nullable": true, - "example": "SF" - }, - "professionIsl": { - "type": "string", - "description": "Heiti starfsstétt", - "nullable": true, - "example": "Sjúkraflutningamaður" - }, - "professionEn": { - "type": "string", - "description": "Heiti starfsstétt á ensku", - "nullable": true, - "example": "Emergency Medical Technician" - }, - "specialityIsl": { - "type": "string", - "description": "Leyfi", - "nullable": true, - "example": "Starfsleyfi" - }, - "specialityEn": { - "type": "string", - "description": "Leyfi á ensku", - "nullable": true, - "example": "Licence to practice" - }, - "validFrom": { - "type": "string", - "description": "Gildir frá dagsetning", - "format": "date-time", - "nullable": true, - "example": "2009-11-03T00:00:00.0000000" - }, - "validTo": { - "type": "string", - "description": "Gildir Til dagsetning", - "format": "date-time", - "nullable": true, - "example": "2009-11-03T00:00:00.0000000" - } - }, - "additionalProperties": false - }, - "Nam": { - "type": "object", - "properties": { - "educationId": { - "type": "integer", - "description": "Prof_id", - "format": "int32", - "example": 0 - }, - "graduationDate": { - "type": "string", - "description": "Útskriftadagsetning", - "format": "date-time", - "example": "2009-11-03T00:00:00.0000000" - }, - "school": { - "type": "string", - "description": "Nafn skóla", - "nullable": true, - "example": "Háskóli Íslands" - } - }, - "additionalProperties": false - }, - "UtbuaStarfsleyfiSkjalRequest": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Nafn heilbrigðisstarfsmanns", - "nullable": true, - "example": "Jón Jónsson" - }, - "dateOfBirth": { - "type": "string", - "description": "Afmælisdagur heilbrigðisstarfsmanns. Þarf að vera á 'DD.MM.YYYY' sniði", - "nullable": true, - "example": "01.01.2000" - }, - "citizenship": { - "type": "string", - "description": "Ríkisfang", - "nullable": true, - "example": "IS" - }, - "email": { - "type": "string", - "description": "Netfang heilbrigðisstarfsmanns", - "nullable": true, - "example": "jonjonsson@landlaeknir.is" - }, - "phoneNo": { - "type": "string", - "description": "Símanúmer heilbrigðisstarfsmanns", - "nullable": true, - "example": "0000000" - }, - "idProfession": { - "type": "string", - "description": "Auðkenni Starfstétt heilbrigðisstarfsmanns", - "nullable": true, - "example": "HJ" - }, - "education": { - "type": "array", - "items": { "$ref": "#/components/schemas/Nam" }, - "nullable": true - } - }, - "additionalProperties": false, - "description": "Gagnaklasi fyrir Innsigluð vottorð" - }, - "UtbuaStarfsleyfiSkjalResponse": { - "type": "object", - "properties": { - "base64String": { - "type": "string", - "description": "Base64 strengur", - "nullable": true, - "example": "\"JVBER..." - } - }, - "additionalProperties": false - }, - "StarfsleyfiVottord": { - "type": "object", - "properties": { - "ssnNumber": { - "type": "string", - "description": "Kennitala á Viðkomandi", - "nullable": true, - "example": "123456-1234" - }, - "name": { - "type": "string", - "description": "Nafn á viðkomandi", - "nullable": true, - "example": "Jón Jónsson" - }, - "idProfession": { - "type": "string", - "description": "Auðkenni Starfstétts", - "nullable": true, - "example": "SF" - }, - "professionIsl": { - "type": "string", - "description": "Heiti starfsstétt", - "nullable": true, - "example": "Sjúkraflutningamaður" - }, - "professionEn": { - "type": "string", - "description": "Heiti starfsstétt á ensku", - "nullable": true, - "example": "Emergency Medical Technician" - }, - "specialityIsl": { - "type": "string", - "description": "Leyfi", - "nullable": true, - "example": "Starfsleyfi" - }, - "specialityEn": { - "type": "string", - "description": "Leyfi á ensku", - "nullable": true, - "example": "Licence to practice" - }, - "isSpeciality": { - "type": "integer", - "description": "Er leyfið sérfræðileyfi?", - "format": "int32", - "example": 0 - }, - "validFrom": { - "type": "string", - "description": "Gildir frá dagsetning", - "format": "date-time", - "nullable": true, - "example": "2009-11-03T00:00:00.0000000" - }, - "validTo": { - "type": "string", - "description": "Gildir Til dagsetning", - "format": "date-time", - "nullable": true, - "example": "2009-11-03T00:00:00.0000000" - }, - "isRestricted": { - "type": "integer", - "description": "Er Starfsmaður með takmarkað leyfi?", - "format": "int32", - "example": 0 - } - }, - "additionalProperties": false - }, - "StarfstettVottord": { - "type": "object", - "properties": { - "ssnNumber": { - "type": "string", - "description": "Kennitala á Viðkomandi", - "nullable": true, - "example": "123456-1234" - }, - "name": { - "type": "string", - "description": "Nafn á viðkomandi", - "nullable": true, - "example": "Jón Jónsson" - }, - "idProfession": { - "type": "string", - "description": "Auðkenni Starfstétts", - "nullable": true, - "example": "SF" - }, - "professionIsl": { - "type": "string", - "description": "Heiti starfsstétt", - "nullable": true, - "example": "Sjúkraflutningamaður" - }, - "professionEn": { - "type": "string", - "description": "Heiti starfsstétt á ensku", - "nullable": true, - "example": "Emergency Medical Technician" - } - }, - "additionalProperties": false - }, - "UtbuaSkjalRequest": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Nafn heilbrigðisstarfsmanns", - "nullable": true, - "example": "Jón Jónsson" - }, - "dateOfBirth": { - "type": "string", - "description": "Afmælisdagur heilbrigðisstarfsmanns. Þarf að vera á 'DD.MM.YYYY' sniði", - "nullable": true, - "example": "01.01.2000" - }, - "email": { - "type": "string", - "description": "Netfang heilbrigðisstarfsmanns", - "nullable": true, - "example": "jonjonsson@landlaeknir.is" - }, - "phoneNo": { - "type": "string", - "description": "Símanúmer heilbrigðisstarfsmanns", - "nullable": true, - "example": "0000000" - }, - "idProfession": { - "type": "string", - "description": "Auðkenni Starfstétt heilbrigðisstarfsmanns", - "nullable": true, - "example": "HJ" - } - }, - "additionalProperties": false, - "description": "Gagnaklasi fyrir Innsigluð vottorð" - }, - "UtbuaSkjalResponse": { - "type": "object", - "properties": { - "base64String": { - "type": "string", - "description": "Base64 strengur", - "nullable": true, - "example": "\"JVBER..." - } - }, - "additionalProperties": false - }, - "AdilarItem": { - "type": "object", - "properties": { - "kennitala": { "type": "string", "nullable": true }, - "heiti": { "type": "string", "nullable": true }, - "heimili": { "type": "string", "nullable": true }, - "stadur": { "type": "string", "nullable": true }, - "postnumer": { "type": "string", "nullable": true }, - "tegund": { "type": "integer", "format": "int32" }, - "hlutverk": { "type": "string", "nullable": true }, - "netfang": { "type": "string", "nullable": true }, - "simi": { "type": "string", "nullable": true } - }, - "additionalProperties": false - }, - "NotandagognItem": { - "type": "object", - "properties": { - "guid": { "type": "string", "nullable": true }, - "flokkur": { "type": "string", "nullable": true }, - "heiti": { "type": "string", "nullable": true }, - "tegund": { "type": "string", "nullable": true }, - "gildi": { "type": "string", "nullable": true } - }, - "additionalProperties": false, - "description": "Kennitala á Viðkomandi" - }, - "GreidslaItem": { - "type": "object", - "properties": { - "upphaed": { "type": "number", "format": "double" }, - "dags": { "type": "string", "nullable": true }, - "korthafi": { "type": "string", "nullable": true }, - "kortanumer": { "type": "string", "nullable": true }, - "tegundKorts": { "type": "string", "nullable": true } - }, - "additionalProperties": false - }, - "FilesItem": { - "type": "object", - "properties": { - "flokkur": { "type": "integer", "format": "int32" }, - "heiti": { "type": "string", "nullable": true }, - "dags": { "type": "string", "nullable": true }, - "tegund": { "type": "string", "nullable": true }, - "fileID": { "type": "string", "nullable": true }, - "ending": { "type": "string", "nullable": true } - }, - "additionalProperties": false - }, - "VottordUpplB": { - "type": "object", - "properties": { - "language": { "type": "string", "nullable": true }, - "portalApplicationID": { "type": "string", "nullable": true }, - "applicationType": { "type": "string", "nullable": true }, - "applicationName": { "type": "string", "nullable": true }, - "dagssetning": { "type": "string", "nullable": true }, - "adilar": { - "type": "array", - "items": { "$ref": "#/components/schemas/AdilarItem" }, - "nullable": true - }, - "notandagogn": { - "type": "array", - "items": { "$ref": "#/components/schemas/NotandagognItem" }, - "nullable": true - }, - "greidsla": { "$ref": "#/components/schemas/GreidslaItem" }, - "files": { - "type": "array", - "items": { "$ref": "#/components/schemas/FilesItem" }, - "nullable": true - }, - "status": { "type": "integer", "format": "int32" } - }, - "additionalProperties": false - }, - "UploadFilesItem": { - "type": "object", - "properties": { - "file": { "type": "string", "nullable": true }, - "applicationID": { "type": "string", "nullable": true }, - "content": { "type": "string", "nullable": true }, - "applicationType": { "type": "string", "nullable": true } - }, - "additionalProperties": false - }, - "applicantType": { - "enum": [0, 1, 2, -2], - "type": "integer", - "description": "Type of applicants", - "format": "int32" - }, - "Adilar": { - "type": "object", - "properties": { - "kennitala": { - "type": "string", - "description": "kennitala for legal / natural persons", - "nullable": true - }, - "heiti": { - "type": "string", - "description": "Name", - "nullable": true - }, - "heimili": { - "type": "string", - "description": "Address", - "nullable": true - }, - "tegund": { "$ref": "#/components/schemas/applicantType" }, - "hlutverk": { - "type": "string", - "description": "description for the person", - "nullable": true - } - }, - "additionalProperties": false, - "description": "Information regarding legal and natural persons within the application." - }, - "Notandagogn": { - "type": "object", - "properties": { - "flokkur": { - "type": "string", - "description": "Group name", - "nullable": true - }, - "heiti": { - "type": "string", - "description": "Name of the variable", - "nullable": true - }, - "tegund": { - "type": "string", - "description": "Type of variable", - "nullable": true - }, - "gildi": { - "type": "string", - "description": "Value for inspection", - "nullable": true - } - }, - "additionalProperties": false, - "description": "Data entered by the applicant to be inspected bu the ruleset" - }, - "Reglusett": { - "type": "object", - "properties": { - "flokkur": { - "type": "string", - "description": "Groupname for the variable", - "nullable": true - }, - "heiti": { - "type": "string", - "description": "Name of the variable", - "nullable": true - }, - "tegund": { - "type": "string", - "description": "Type of variable", - "nullable": true - }, - "gildi": { - "type": "string", - "description": "The value to be set for the variable", - "nullable": true - } - }, - "additionalProperties": false, - "description": "Data the can be set by the ruleset." - }, - "ReglusettVottordB": { - "type": "object", - "properties": { - "adilar": { - "type": "array", - "items": { "$ref": "#/components/schemas/Adilar" }, - "description": "List of persons that have a role in the application", - "nullable": true - }, - "notandagogn": { - "type": "array", - "items": { "$ref": "#/components/schemas/Notandagogn" }, - "description": "Information extracted from the application the the ruleset can use.", - "nullable": true - }, - "reglusett": { - "type": "array", - "items": { "$ref": "#/components/schemas/Reglusett" }, - "description": "Variable that the ruleset can set to be used in the application.\r\nCurrently we support String, Int and Date.", - "nullable": true - }, - "applicationType": { - "type": "string", - "description": "Unique id for the application type this unique id is provided when\r\nthe application is made by the provider. This can be used to have\r\ndifferent behaviour depending on application type.", - "nullable": true - } - }, - "additionalProperties": false - } - }, - "securitySchemes": { - "Bearer": { - "type": "apiKey", - "description": "Enter 'Bearer' [space] and then your valid token in the text input below.\r\n\r\nExample: \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\"", - "name": "Authorization", - "in": "header" - } - } - }, - "security": [{ "Bearer": [] }] -} diff --git a/libs/clients/health-directorate/src/lib/apiConfiguration.ts b/libs/clients/health-directorate/src/lib/apiConfiguration.ts deleted file mode 100644 index c6cdd7897879..000000000000 --- a/libs/clients/health-directorate/src/lib/apiConfiguration.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { createEnhancedFetch } from '@island.is/clients/middlewares' -import { - ConfigType, - IdsClientConfig, - LazyDuringDevScope, - XRoadConfig, -} from '@island.is/nest/config' -import { HealthDirectorateClientConfig } from './healthDirectorateClient.config' -import { - Configuration, - StarfsleyfiAMinumSidumApi, - UmsoknStarfsleyfiApi, - VottordApi, -} from '../../gen/fetch' - -const configFactory = ( - xRoadConfig: ConfigType<typeof XRoadConfig>, - config: ConfigType<typeof HealthDirectorateClientConfig>, - idsClientConfig: ConfigType<typeof IdsClientConfig>, -) => ({ - fetchApi: createEnhancedFetch({ - name: 'clients-health-directorate', - organizationSlug: 'landlaeknir', - timeout: config.fetch.timeout, - logErrorResponseBody: true, - autoAuth: idsClientConfig.isConfigured - ? { - mode: 'tokenExchange', - issuer: idsClientConfig.issuer, - clientId: idsClientConfig.clientId, - clientSecret: idsClientConfig.clientSecret, - scope: config.fetch.scope, - } - : undefined, - }), - basePath: `${xRoadConfig.xRoadBasePath}/r1/${config.xRoadServicePath}`, - headers: { - 'X-Road-Client': xRoadConfig.xRoadClient, - Accept: 'application/json', - }, -}) - -export const exportedApis = [ - StarfsleyfiAMinumSidumApi, - VottordApi, - UmsoknStarfsleyfiApi, -].map((Api) => ({ - provide: Api, - scope: LazyDuringDevScope, - useFactory: ( - xRoadConfig: ConfigType<typeof XRoadConfig>, - config: ConfigType<typeof HealthDirectorateClientConfig>, - idsClientConfig: ConfigType<typeof IdsClientConfig>, - ) => { - return new Api( - new Configuration(configFactory(xRoadConfig, config, idsClientConfig)), - ) - }, - inject: [ - XRoadConfig.KEY, - HealthDirectorateClientConfig.KEY, - IdsClientConfig.KEY, - ], -})) diff --git a/libs/clients/health-directorate/src/lib/healthDirectorateClient.config.ts b/libs/clients/health-directorate/src/lib/healthDirectorateClient.config.ts deleted file mode 100644 index 2c53671210f1..000000000000 --- a/libs/clients/health-directorate/src/lib/healthDirectorateClient.config.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { defineConfig } from '@island.is/nest/config' -import { z } from 'zod' - -const schema = z.object({ - xRoadServicePath: z.string(), - fetch: z.object({ - scope: z.array(z.string()), - timeout: z.number().int(), - }), -}) - -export const HealthDirectorateClientConfig = defineConfig< - z.infer<typeof schema> ->({ - name: 'HealthDirectorateClientConfig', - schema, - load: (env) => ({ - xRoadServicePath: env.required( - 'XROAD_HEALTH_DIRECTORATE_PATH', - 'IS-DEV/GOV/10015/EmbaettiLandlaeknis-Protected/landlaeknir', - ), - fetch: { - scope: ['@landlaeknir.is/starfsleyfi'], - timeout: 30000, - }, - }), -}) diff --git a/libs/clients/health-directorate/src/lib/healthDirectorateClient.service.ts b/libs/clients/health-directorate/src/lib/healthDirectorateClient.service.ts deleted file mode 100644 index 022318582776..000000000000 --- a/libs/clients/health-directorate/src/lib/healthDirectorateClient.service.ts +++ /dev/null @@ -1,250 +0,0 @@ -import { Auth, AuthMiddleware, User } from '@island.is/auth-nest-tools' -import { Injectable } from '@nestjs/common' -import { - NamsUpplysingar, - StarfsleyfiAMinumSidumApi, - StarfsleyfiUmsoknStarfsleyfi, - UmsoknStarfsleyfiApi, - UtbuaStarfsleyfiSkjalResponse, - VottordApi, -} from '../../gen/fetch' -import { - HealthcareLicense, - HealthcareLicenseCertificate, - HealthcareLicenseCertificateRequest, - HealthcareWorkPermitRequest, - HealthDirectorateLicenseStatus, - HealthDirectorateLicenseToPractice, -} from './healthDirectorateClient.types' -import { isDefined } from '@island.is/shared/utils' -import format from 'date-fns/format' -import { handle404 } from '@island.is/clients/middlewares' -import { logger } from '@island.is/logging' - -@Injectable() -export class HealthDirectorateClientService { - constructor( - private readonly starfsleyfiAMinumSidumApi: StarfsleyfiAMinumSidumApi, - private readonly vottordApi: VottordApi, - private readonly umsoknStarfsleyfiApi: UmsoknStarfsleyfiApi, - ) {} - - private starfsleyfiAMinumSidumApiWithAuth(auth: Auth) { - return this.starfsleyfiAMinumSidumApi.withMiddleware( - new AuthMiddleware(auth), - ) - } - - private vottordApiWithAuth(auth: Auth) { - return this.vottordApi.withMiddleware(new AuthMiddleware(auth)) - } - - private umsoknStarfsleyfiApiWith(auth: Auth) { - return this.umsoknStarfsleyfiApi.withMiddleware(new AuthMiddleware(auth)) - } - - public async getHealthDirectorateLicenseToPractice( - auth: User, - ): Promise<Array<HealthDirectorateLicenseToPractice> | null> { - const licenses = await this.starfsleyfiAMinumSidumApiWithAuth(auth) - .starfsleyfiAMinumSidumGet() - .catch(handle404) - - if (!licenses) { - return null - } - - const mappedLicenses: Array<HealthDirectorateLicenseToPractice> = - licenses - ?.map((l) => { - if ( - !l.id || - !l.logadiliID || - !l.kennitala || - !l.nafn || - !l.starfsstett || - !l.leyfi || - !l.leyfisnumer || - !l.gildirFra - ) { - return null - } - - let status: HealthDirectorateLicenseStatus - switch (l.stada) { - case 'Í gildi': - status = 'VALID' - break - case 'Í gildi - Takmörkun': - status = 'LIMITED' - break - case 'Ógilt': - status = 'INVALID' - break - case 'Svipting': - status = 'REVOKED' - break - case 'Afsal': - status = 'WAIVED' - break - default: - status = 'UNKNOWN' - } - - return { - id: l.id, - legalEntityId: l.logadiliID, - licenseHolderNationalId: l.kennitala, - licenseHolderName: l.nafn, - profession: l.starfsstett, - practice: l.leyfi, - licenseNumber: l.leyfisnumer, - validFrom: l.gildirFra, - validTo: l.gildirTIl ?? undefined, - status, - } - }) - .filter(isDefined) ?? [] - return mappedLicenses - } - - async getMyHealthcareLicenses(auth: Auth): Promise<HealthcareLicense[]> { - const items = await this.vottordApiWithAuth( - auth, - ).vottordStarfsleyfiVottordGet() - - const result: HealthcareLicense[] = [] - - // loop through items to group together specialities per profession - for (let i = 0; i < items.length; i++) { - const item = items[i] - const professionId = item.idProfession - - let index = result.findIndex((x) => x.professionId === professionId) - - if (index === -1) { - const count = result.push({ - professionId: item.idProfession || '', - professionNameIs: item.professionIsl || '', - professionNameEn: item.professionEn || '', - specialityList: [], - isTemporary: false, - isRestricted: item.isRestricted === 1, - }) - - index = count - 1 - } - - if (item.isSpeciality) { - result[index].specialityList.push({ - specialityNameIs: item.specialityIsl || '', - specialityNameEn: item.specialityEn || '', - }) - } - - if (item.validTo) { - result[index].isTemporary = true - result[index].validTo = item.validTo - } - } - - return result - } - - async getHealthCareLicensesForWorkPermit( - auth: Auth, - ): Promise<StarfsleyfiUmsoknStarfsleyfi[] | null> { - const licenses = await this.umsoknStarfsleyfiApiWith(auth) - .umsoknStarfsleyfiStarfsleyfiGet() - .catch(handle404) - - if (!licenses) { - logger.warn( - 'Failed to fetch users healthcare licenses from Health Directorate. Unable to process application without this data with risk of giving out duplicate licenses', - ) - return null - } - - return licenses - } - - async getHealthCareWorkPermitEducationInfo( - auth: Auth, - ): Promise<NamsUpplysingar[] | null> { - const educationInfo = await this.umsoknStarfsleyfiApiWith(auth) - .umsoknStarfsleyfiNamsUpplysGet() - .catch(handle404) - - if (!educationInfo) { - logger.warn( - 'Health directorate did not provide the required education information needed to process permits. Unable to process potential permits without this data.', - ) - return null - } - - return educationInfo - } - - async submitApplicationHealthcareWorkPermit( - auth: User, - request: HealthcareWorkPermitRequest, - ): Promise<UtbuaStarfsleyfiSkjalResponse[] | null> { - const items = await this.umsoknStarfsleyfiApiWith( - auth, - ).umsoknStarfsleyfiUtbuaSkjalPost({ - utbuaStarfsleyfiSkjalRequest: { - name: request.name, - dateOfBirth: format(new Date(request.dateOfBirth), 'dd.MM.yyyy'), - citizenship: request.citizenship, - email: request.email, - phoneNo: request.phone, - idProfession: request.idProfession, - education: request.education, - }, - }) - - if (!items || !Array.isArray(items) || items.length === 0) { - logger.warn( - 'Health directorate response is missing the PDF license to practice. User has already been through payment process. Attention required.', - ) - return null - } - - if (items.some((item) => !item.base64String)) { - logger.warn( - 'Health directorate response is missing the PDF license to practice or the license number. User has already been through payment process. Attention required.', - ) - return null - } - - return items - } - - async submitApplicationHealthcareLicenseCertificate( - auth: User, - request: HealthcareLicenseCertificateRequest, - ): Promise<HealthcareLicenseCertificate[]> { - return Promise.all( - request.professionIdList.map(async (professionId) => { - const item = await this.vottordApiWithAuth(auth).vottordUtbuaSkjalPost({ - utbuaSkjalRequest: { - name: request.fullName, - dateOfBirth: format(new Date(request.dateOfBirth), 'dd.MM.yyyy'), - email: request.email, - phoneNo: request.phone, - idProfession: professionId, - }, - }) - - if (!item.base64String) { - throw new Error('Empty file') - } - - return { - professionId: professionId, - base64: item.base64String, - } - }), - ) - } -} diff --git a/libs/judicial-system/types/src/lib/comment.ts b/libs/judicial-system/types/src/lib/comment.ts deleted file mode 100644 index 2b8f1cbaf20b..000000000000 --- a/libs/judicial-system/types/src/lib/comment.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum CommentType { - POSTPONED_INDEFINITELY_EXPLANATION = 'POSTPONED_INDEFINITELY_EXPLANATION', -} diff --git a/libs/judicial-system/types/src/lib/defender.ts b/libs/judicial-system/types/src/lib/defender.ts deleted file mode 100644 index d4ae0aee081b..000000000000 --- a/libs/judicial-system/types/src/lib/defender.ts +++ /dev/null @@ -1,53 +0,0 @@ -export interface Lawyer { - name: string - practice: string - email: string - phoneNr: string - nationalId: string -} - -type LawyerFull = { - Id: number - Name: string - Title: string - Phone: string - Address: string - City: string - PostNumber: string - Email: string - Practice: string - Education: string - WebPage: string - CaseCategories: [] - FirstName: string - MiddleName: string - SurName: string - SSN: string - MailBox: string - Fax: string - GSM: string - HomePhone: string - DirectPhone: string - NonIcelandicPhone: string - PracticeResponsible: string - LawyerRepresentative: string - Sex: string - HdlLicense: string | null - HrlLicense: string | null - Insurance: string - Country: string - IsPracticing: boolean - // eslint-disable-next-line @typescript-eslint/no-explicit-any - Languages: null | any - InternationConnection: string -} - -export const mapToLawyer = (lawyer: LawyerFull): Lawyer => { - return { - name: lawyer.Name, - practice: lawyer.Practice, - email: lawyer.Email, - phoneNr: lawyer.GSM, - nationalId: lawyer.SSN.replace(/\D/g, ''), // Remove all non-numeric characters - } -} diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index 1437c04b1bd9..a6d966a6a0a3 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -14,9 +14,9 @@ import { BaseSettings } from './components/BaseSettings/BaseSettings' import { Premises } from './components/Premises/Premises' import { FieldContent } from './components/FieldContent/FieldContent' import { PreviewStepOrGroup } from './components/PreviewStepOrGroup/PreviewStepOrGroup' -import { RelevantParties } from './components/RelevantParties/RevelantParties' import { useIntl } from 'react-intl' import { m } from '../../lib/messages' +import { RelevantParties } from './components/RelevantParties/RelevantParties' export const MainContent = () => { const { @@ -29,7 +29,6 @@ export const MainContent = () => { const { activeItem } = control const [openPreview, setOpenPreview] = useState(false) const { formatMessage } = useIntl() - return ( <Box padding={2}> {activeItem.type === 'Field' ? ( @@ -37,87 +36,87 @@ export const MainContent = () => { ) : activeItem.type === 'Section' && (activeItem.data as FormSystemSection).id === "BaseSettings" ? ( <BaseSettings /> - ) : /*activeItem.type === 'Section' && + ) : activeItem.type === 'Section' && (activeItem.data as FormSystemSection).sectionType === FormSystemSectionDtoSectionTypeEnum.Premises ? ( <Premises /> ) : activeItem.type === 'Section' && (activeItem.data as FormSystemSection).sectionType === FormSystemSectionDtoSectionTypeEnum.Parties ? ( <RelevantParties /> - ) : */ openPreview ? ( - <PreviewStepOrGroup setOpenPreview={setOpenPreview} /> - ) : ( - <Stack space={2}> - <Row> - <Column span="10/10"> - <Input - label={formatMessage(m.name)} - name="name" - value={activeItem?.data?.name?.is ?? ''} - backgroundColor="blue" - onChange={(e) => - controlDispatch({ - type: 'CHANGE_NAME', - payload: { - lang: 'is', - newValue: e.target.value, - }, - }) - } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} - /> - </Column> - </Row> + ) : openPreview ? ( + <PreviewStepOrGroup setOpenPreview={setOpenPreview} /> + ) : ( + <Stack space={2}> + <Row> + <Column span="10/10"> + <Input + label={formatMessage(m.name)} + name="name" + value={activeItem?.data?.name?.is ?? ''} + backgroundColor="blue" + onChange={(e) => + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'is', + newValue: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + </Column> + </Row> + <Row> + <Column span="10/10"> + <Input + label={formatMessage(m.nameEnglish)} + name="nameEn" + value={activeItem?.data?.name?.en ?? ''} + backgroundColor="blue" + onChange={(e) => + controlDispatch({ + type: 'CHANGE_NAME', + payload: { + lang: 'en', + newValue: e.target.value, + }, + }) + } + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => e.target.value !== focus && updateActiveItem()} + /> + </Column> + </Row> + {activeItem.type === 'Screen' && ( <Row> - <Column span="10/10"> - <Input - label={formatMessage(m.nameEnglish)} - name="nameEn" - value={activeItem?.data?.name?.en ?? ''} - backgroundColor="blue" + <Column> + <Checkbox + name="multi" + label={formatMessage(m.allowMultiple)} + checked={(activeItem.data as FormSystemScreen).multiset !== 0 ?? false} onChange={(e) => controlDispatch({ - type: 'CHANGE_NAME', + type: 'TOGGLE_MULTI_SET', payload: { - lang: 'en', - newValue: e.target.value, - }, + checked: e.target.checked, + update: updateActiveItem, + } }) } - onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} /> </Column> </Row> - {activeItem.type === 'Screen' && ( - <Row> - <Column> - <Checkbox - name="multi" - label={formatMessage(m.allowMultiple)} - checked={(activeItem.data as FormSystemScreen).multiSet !== 0} - onChange={(e) => - controlDispatch({ - type: 'TOGGLE_MULTI_SET', - payload: { - checked: e.target.checked, - update: updateActiveItem, - } - }) - } - /> - </Column> - </Row> - )} - <Row> - <Column> - <Button variant="ghost" onClick={() => setOpenPreview(true)}> - {formatMessage(m.preview)} - </Button> - </Column> - </Row> - </Stack> - )} + )} + <Row> + <Column> + <Button variant="ghost" onClick={() => setOpenPreview(true)}> + {formatMessage(m.preview)} + </Button> + </Column> + </Row> + </Stack> + )} </Box> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index 0c5cd286b843..d0f44e44d392 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -110,7 +110,7 @@ export const BaseSettings = () => { <Column> <Checkbox label={formatMessage(m.allowProgress)} - checked={form.stopProgressOnValidatingScreen ?? false} + checked={form.stopProgressOnValidatingScreen !== null && form.stopProgressOnValidatingScreen !== undefined ? form.stopProgressOnValidatingScreen : false} onChange={(e) => { controlDispatch({ type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_SCREEN', diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx index b7f3dda54017..f69ae291ae66 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx @@ -25,8 +25,7 @@ import { SortableContext } from '@dnd-kit/sortable' import { createPortal } from 'react-dom' import { useIntl } from 'react-intl' import { m } from '../../../../../../lib/messages' -import { useLazyQuery } from '@apollo/client' -// eslint-disable-next-line @nx/enforce-module-boundaries +import { useMutation } from '@apollo/client' import { CREATE_LIST_ITEM, UPDATE_LIST_ITEM_DISPLAY_ORDER } from '@island.is/form-system/graphql' export const ListBuilder = () => { @@ -54,8 +53,8 @@ export const ListBuilder = () => { const { formatMessage } = useIntl() - const [createListItem] = useLazyQuery(CREATE_LIST_ITEM) - const [updateListItemDisplayOrder] = useLazyQuery(UPDATE_LIST_ITEM_DISPLAY_ORDER) + const [createListItem] = useMutation(CREATE_LIST_ITEM) + const [updateListItemDisplayOrder] = useMutation(UPDATE_LIST_ITEM_DISPLAY_ORDER) const sensors = useSensors( useSensor(PointerSensor, { @@ -121,9 +120,11 @@ export const ListBuilder = () => { updateListItemDisplayOrder({ variables: { input: { - listItemsDisplayOrderDto: listItems.filter(l => l !== null).map(l => l.id) - } - } + listItemsDisplayOrderDto: listItems + .filter((l): l is FormSystemListItem => l !== null && l !== undefined) + .map((l) => l.id), + }, + }, }) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 7ef79e5fc5e3..0ce0b95bf354 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -1,41 +1,40 @@ import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' import { useContext, useState } from 'react' import { ControlContext } from '../../../../context/ControlContext' -import { FormSystemDocumentType } from '@island.is/api/schema' +import { FormSystemFormCertificationType, FormSystemCertificationTypeDtoTypeEnum, FormSystemForm } from '@island.is/api/schema' import { useIntl } from 'react-intl' import { m } from '../../../../lib/messages' export const Premises = () => { - const { control, documentTypes, updateSettings, controlDispatch } = + const { control, controlDispatch, certificationTypes: certTypes, formUpdate } = useContext(ControlContext) - const [formDocumentTypes, setFormDocumentTypes] = useState< - FormSystemDocumentType[] + const [formCertificationTypes, setFormCertificationTypes] = useState< + FormSystemFormCertificationType[] >( - control.form?.documentTypes?.filter( - (d): d is FormSystemDocumentType => d !== null, + control.form?.certificationTypes?.filter( + (d): d is FormSystemFormCertificationType => d !== null, ) ?? [], ) - const handleCheckboxChange = (documentTypeId: number) => { - if (documentTypeId === -1) return - const newDocumentTypes = formDocumentTypes.some( - (f) => f?.id === documentTypeId, + const handleCheckboxChange = (certificationType?: FormSystemCertificationTypeDtoTypeEnum) => { + const newCertificationTypes = formCertificationTypes.some( + (f) => f?.type === certificationType, ) - ? formDocumentTypes.filter((f) => f?.id !== documentTypeId) + ? formCertificationTypes.filter((f) => f?.type !== certificationType) : ([ - ...formDocumentTypes, - documentTypes?.find((d) => d?.id === documentTypeId), - ].filter((d) => d !== undefined) as FormSystemDocumentType[]) - setFormDocumentTypes(newDocumentTypes) - updateSettings({ ...control.form, documentTypes: newDocumentTypes }) + ...formCertificationTypes, + certTypes?.find((d) => d?.type === certificationType), + ].filter((d) => d !== undefined) as FormSystemFormCertificationType[]) + setFormCertificationTypes(newCertificationTypes) + const updatedForm: FormSystemForm = { ...control.form, certificationTypes: newCertificationTypes } controlDispatch({ type: 'CHANGE_FORM_SETTINGS', payload: { - newForm: { ...control.form, documentTypes: newDocumentTypes }, + newForm: updatedForm, }, }) + formUpdate(updatedForm) } - const { formatMessage } = useIntl() return ( @@ -44,7 +43,7 @@ export const Premises = () => { <Text variant="h4">{formatMessage(m.premisesTitle)}</Text> </Box> <Stack space={2}> - {documentTypes?.map((d, i) => { + {certTypes?.map((d, i) => { return ( <Checkbox key={i} @@ -54,8 +53,8 @@ export const Premises = () => { rightContent={d?.description?.is} value={d?.type ?? ''} large - checked={formDocumentTypes?.some((f) => f?.id === d?.id)} - onChange={() => handleCheckboxChange(d?.id ?? -1)} + checked={formCertificationTypes?.some((f) => f?.type === d?.type)} + onChange={() => handleCheckboxChange(d?.type ?? undefined)} /> ) })} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 9fff628ce57d..53a6ff0d5065 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -1,6 +1,5 @@ import { FormSystemField, FormSystemFieldDtoFieldTypeEnum } from '@island.is/api/schema' import { Box, DatePicker, Text } from '@island.is/island-ui/core' -// eslint-disable-next-line @nx/enforce-module-boundaries import { Banknumber, MessageWithLink, diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx index 53a6762de427..3f9a7f60908e 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx @@ -39,7 +39,7 @@ export const PreviewStepOrGroup = ({ setOpenPreview }: Props) => { <Box marginBottom={1}> <Text variant="h3">{screen?.name?.is}</Text> </Box> - {screen?.multiSet !== 0 ? ( + {screen?.multiset !== 0 ? ( <MultiSet screen={screen as FormSystemScreen} /> ) : ( fields @@ -57,7 +57,7 @@ export const PreviewStepOrGroup = ({ setOpenPreview }: Props) => { <div> <Text variant="h2">{activeItem?.data?.name?.is}</Text> </div> - {(activeItem.data as FormSystemScreen).multiSet !== 0 ? ( + {(activeItem.data as FormSystemScreen).multiset !== 0 ? ( <MultiSet screen={activeItem.data as FormSystemScreen} /> ) : ( fields diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx new file mode 100644 index 000000000000..f497cd73aa08 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx @@ -0,0 +1,162 @@ +import { useContext, useState } from "react" +import { ControlContext } from "../../../../context/ControlContext" +import { Stack, Checkbox, Box, Text } from "@island.is/island-ui/core" +import { m } from "@island.is/form-system/ui" +import { useIntl } from "react-intl" +import { CREATE_APPLICANT, DELETE_APPLICANT } from "@island.is/form-system/graphql" +import { useMutation } from "@apollo/client" +import { FormSystemFormApplicant, FormSystemApplicantTypeEnum } from "@island.is/api/schema" +import { removeTypename } from "../../../../lib/utils/removeTypename" +import { FormApplicantTypes } from "./components/FormApplicantTypes" + +const applicantTypeCheckboxsLabel = [ + "Einstaklingur (innskráður)", + "Einstaklingur í umboði annars einstaklings", + "Einstaklingur í umboði lögaðila", + "Einstaklingur með prókúru", +] + +const applicantTypeGroups = { + individual: [FormSystemApplicantTypeEnum.Individual], + individualDelegation: [ + FormSystemApplicantTypeEnum.IndividualWithDelegationFromIndividual, + FormSystemApplicantTypeEnum.IndividualGivingDelegation, + ], + legalEntityDelegation: [ + FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity, + FormSystemApplicantTypeEnum.LegalEntity, + ], + procuration: [ + FormSystemApplicantTypeEnum.IndividualWithProcuration, + FormSystemApplicantTypeEnum.LegalEntity, + ], +} + +export const RelevantParties = () => { + const { control } = useContext(ControlContext) + const { formatMessage } = useIntl() + const [createApplicant] = useMutation(CREATE_APPLICANT) + const [deleteApplicant] = useMutation(DELETE_APPLICANT) + const { applicants, id: formId } = control.form + const [formApplicants, setFormApplicants] = useState<FormSystemFormApplicant[]>( + applicants?.filter((applicant): applicant is FormSystemFormApplicant => applicant !== null) ?? [] + ) + + const handleApplicantChange = async (typesArray: FormSystemApplicantTypeEnum[], checked: boolean) => { + if (checked) { + try { + const newApplicants = await Promise.all( + typesArray.map(async (applicantType) => { + const newApplicant = await createApplicant({ + variables: { + input: { + createFormApplicantDto: { + formId, + applicantType, + }, + }, + }, + }) + return removeTypename(newApplicant.data.formSystemCreateApplicant) + }) + ) + setFormApplicants([...formApplicants, ...newApplicants]) + } catch (e) { + console.error(e) + } + } else { + try { + await Promise.all( + typesArray.map(async (applicantType) => { + const applicant = formApplicants.find( + (a) => a.applicantType === applicantType + ) + if (applicant) { + await deleteApplicant({ + variables: { input: { id: applicant.id } }, + }) + } + }) + ) + setFormApplicants( + formApplicants.filter( + (applicant) => + applicant.applicantType !== undefined && applicant.applicantType !== null && !typesArray.includes(applicant.applicantType) + ) + ) + } catch (e) { + console.error(e) + } + } + } + + const handleCheckboxChange = (index: number, checked: boolean) => { + switch (index) { + case 0: + handleApplicantChange(applicantTypeGroups.individual, checked) + break + case 1: + handleApplicantChange(applicantTypeGroups.individualDelegation, checked) + break + case 2: { + if (checked) { + if (formApplicants.some(applicant => applicant.applicantType === FormSystemApplicantTypeEnum.LegalEntity)) { + handleApplicantChange([FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity], checked) + } else { + handleApplicantChange(applicantTypeGroups.legalEntityDelegation, checked) + } + } else { + if (!formApplicants.some(applicant => applicant.applicantType === FormSystemApplicantTypeEnum.IndividualWithProcuration)) { + handleApplicantChange(applicantTypeGroups.legalEntityDelegation, checked) + } else { + handleApplicantChange([FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity], checked) + } + } + } + break + case 3: { + if (checked) { + if (formApplicants.some(applicant => applicant.applicantType === FormSystemApplicantTypeEnum.LegalEntity)) { + handleApplicantChange([FormSystemApplicantTypeEnum.IndividualWithProcuration], checked) + } else { + handleApplicantChange(applicantTypeGroups.procuration, checked) + } + } else { + if (!formApplicants.some(applicant => applicant.applicantType === FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity)) { + handleApplicantChange(applicantTypeGroups.procuration, checked) + } else { + handleApplicantChange([FormSystemApplicantTypeEnum.IndividualWithProcuration], checked) + } + } + } + break + default: + break + } + } + + + + return ( + <Stack space={2}> + <Box marginBottom={2}> + <Text variant="h4">{formatMessage(m.selectIndividuals)}</Text> + </Box> + <Box padding={2}> + <Stack space={2}> + {applicantTypeCheckboxsLabel.map((label, index) => ( + <Checkbox + key={index} + label={label} + onChange={(e) => handleCheckboxChange(index, e.target.checked)} + /> + ))} + </Stack> + </Box> + <FormApplicantTypes + formApplicantsTypes={formApplicants} + setFormApplicantTypes={setFormApplicants} + /> + </Stack> + ) +} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx deleted file mode 100644 index e29edf12832d..000000000000 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RevelantParties.tsx +++ /dev/null @@ -1,334 +0,0 @@ -import { useContext, useState } from 'react' -import { ControlContext } from '../../../../context/ControlContext' -import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' -import { - FormSystemForm, - FormSystemFormApplicant, - FormSystemLanguageType, -} from '@island.is/api/schema' -import { EFormApplicantTypes } from '../../../../lib/utils/interfaces' -import { FormApplicantType } from './components/FormApplicantType' -import { useIntl } from 'react-intl' -import { m } from '../../../../lib/messages' - -const applicantTypeLabel = [ - 'Einstaklingur (innskráður)', - 'Einstaklingur í umboði annars einstaklings', - 'Einstaklingur í umboði lögaðila', - 'Einstaklingur með prókúru', - 'Umboðsveitandi (einstaklingur)', - 'Lögaðili', -] - -const applicantTypes = [ - 'Einstaklingur', - 'Einstaklingur_með_umboð_annars_einstaklings', - 'Einstaklingur_með_umboð_lögaðila', - 'Einstaklingur_með_prókúru', - 'Einstaklingur_umboðsveitandi', - 'Lögaðili', -] - -export const RelevantParties = () => { - // const { - // control, - // controlDispatch, - // } = useContext(ControlContext) - // const { form } = control - // const { id: formId } = form - // const [formApplicantTypes, setFormApplicantTypes] = useState< - // FormSystemFormApplicant[] - // >( - // (form.applicants ?? []).filter( - // Boolean, - // ) as FormSystemFormApplicant[], - // ) - // const [focus, setOnFocus] = useState('') - - // const createFormApplicantType = ( - // type: string, - // template: FormSystemFormApplicantType, - // ): FormSystemFormApplicant => { - // return { - // __typename: undefined, - // type, - // name: template?.nameSuggestions?.[0]?.nameSuggestion ?? { - // __typename: undefined, - // is: '', - // en: '', - // }, - // applicantTypeId: template.id, - // formId, - // } - // } - - // const isOther = (applicant: FormSystemFormApplicant) => { - // const template = applicantTypeTemplates?.find( - // (at) => at?.id === applicant.applicantTypeId, - // ) - // if (!template) { - // return true - // } - // if ( - // template?.nameSuggestions?.some( - // (ns) => ns?.nameSuggestion?.is === applicant?.name?.is, - // ) - // ) { - // return false - // } - // return true - // } - - // const saveAndUpdate = (newForm: FormSystemForm) => { - // updateSettings({ ...newForm }) - // controlDispatch({ - // type: 'CHANGE_FORM_SETTINGS', - // payload: { - // newForm: { ...newForm }, - // }, - // }) - // } - - // const handleSelect = (e: { label: string; value: string }, index: number) => { - // const newApplicantTypes = formApplicantTypes.map((f, i) => { - // if (i === index) { - // return { - // ...f, - // name: { - // __typename: undefined, - // is: e.label, - // en: e.value, - // }, - // } - // } - // return f - // }) - // saveAndUpdate({ ...form, formApplicantTypes: newApplicantTypes }) - // setFormApplicantTypes(newApplicantTypes) - // } - - // const onFocus = (value: string) => { - // setOnFocus(value) - // } - - // const blur = (value: string) => { - // if (focus !== value) { - // updateSettings({ ...form, formApplicantTypes: formApplicantTypes }) - // } - // setOnFocus('') - // } - - // const handleCheckboxChange = (checked: boolean, index: number) => { - // const updateFormApplicantTypes = ( - // newFormApplicantTypes: FormSystemFormApplicant[], - // ) => { - // const hasLegalEntity = formApplicantTypes.some( - // (f) => f.type === EFormApplicantTypes.logadili, - // ) - // const newTypes = hasLegalEntity - // ? newFormApplicantTypes.filter( - // (f) => f.type !== EFormApplicantTypes.logadili, - // ) - // : newFormApplicantTypes - // const newList = [...formApplicantTypes, ...newTypes] - // saveAndUpdate({ ...form, formApplicantTypes: newList }) - // setFormApplicantTypes([...formApplicantTypes, ...newTypes]) - // } - - // const removeFormApplicantTypes = (types: EFormApplicantTypes[]) => { - // const newList = formApplicantTypes.filter( - // (f) => !types.includes(f.type as EFormApplicantTypes), - // ) - // saveAndUpdate({ ...form, formApplicantTypes: newList }) - // setFormApplicantTypes(newList) - // } - - // if (checked) { - // if (index === 0) { - // const template = applicantTypeTemplates?.find( - // (at) => at?.type === applicantTypes[index], - // ) - // if (template !== undefined && template !== null) { - // const newFormApplicantType: FormSystemFormApplicant = - // createFormApplicantType(EFormApplicantTypes.einstaklingur, template) - // saveAndUpdate({ - // ...form, - // formApplicantTypes: [...formApplicantTypes, newFormApplicantType], - // }) - // setFormApplicantTypes([...formApplicantTypes, newFormApplicantType]) - // } - // } else if (index === 1) { - // const delegatorTemplate = applicantTypeTemplates?.find( - // (at) => at?.id === 2, - // ) - // const delegateeTemplate = applicantTypeTemplates?.find( - // (at) => at?.id === 5, - // ) - // if ( - // delegatorTemplate === undefined || - // delegatorTemplate === null || - // delegateeTemplate === undefined || - // delegateeTemplate === null - // ) { - // return - // } - // const newFormApplicantTypes: FormSystemFormApplicant[] = [ - // createFormApplicantType( - // EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, - // delegatorTemplate, - // ), - // createFormApplicantType( - // EFormApplicantTypes.einstaklingurUmbodsveitandi, - // delegateeTemplate, - // ), - // ] - // saveAndUpdate({ - // ...form, - // formApplicantTypes: [...formApplicantTypes, ...newFormApplicantTypes], - // }) - // setFormApplicantTypes([...formApplicantTypes, ...newFormApplicantTypes]) - // } else if (index === 2) { - // const delegatorTemplate = applicantTypeTemplates?.find( - // (at) => at?.id === 6, - // ) - // const delegateeTemplate = applicantTypeTemplates?.find( - // (at) => at?.id === 3, - // ) - // if ( - // delegatorTemplate === undefined || - // delegatorTemplate === null || - // delegateeTemplate === undefined || - // delegateeTemplate === null - // ) { - // return - // } - // const newFormApplicantTypes: FormSystemFormApplicant[] = [ - // createFormApplicantType( - // EFormApplicantTypes.einstaklingurMedUmbodLogadila, - // delegateeTemplate, - // ), - // createFormApplicantType( - // EFormApplicantTypes.logadili, - // delegatorTemplate, - // ), - // ] - // updateFormApplicantTypes(newFormApplicantTypes) - // } else if (index === 3) { - // const procurationHolder = applicantTypeTemplates?.find( - // (at) => at?.id === 4, - // ) - // const legalEntity = applicantTypeTemplates?.find((at) => at?.id === 6) - // if ( - // procurationHolder === undefined || - // procurationHolder === null || - // legalEntity === undefined || - // legalEntity === null - // ) { - // return - // } - - // const newFormApplicantTypes: FormSystemFormApplicant[] = [ - // createFormApplicantType( - // EFormApplicantTypes.einstaklingurMedProkuru, - // procurationHolder, - // ), - // createFormApplicantType(EFormApplicantTypes.logadili, legalEntity), - // ] - // updateFormApplicantTypes(newFormApplicantTypes) - // } - // } else { - // if (index === 0) { - // removeFormApplicantTypes([EFormApplicantTypes.einstaklingur]) - // } else if (index === 1) { - // removeFormApplicantTypes([ - // EFormApplicantTypes.einstaklingurMedUmbodAnnarsEinstaklings, - // EFormApplicantTypes.einstaklingurUmbodsveitandi, - // ]) - // } else if (index === 2) { - // if ( - // formApplicantTypes.some( - // (f) => f.type === EFormApplicantTypes.einstaklingurMedProkuru, - // ) - // ) { - // removeFormApplicantTypes([ - // EFormApplicantTypes.einstaklingurMedUmbodLogadila, - // ]) - // } else { - // removeFormApplicantTypes([ - // EFormApplicantTypes.einstaklingurMedUmbodLogadila, - // EFormApplicantTypes.logadili, - // ]) - // } - // } else if (index === 3) { - // if ( - // formApplicantTypes.some( - // (f) => f.type === EFormApplicantTypes.einstaklingurMedUmbodLogadila, - // ) - // ) { - // removeFormApplicantTypes([ - // EFormApplicantTypes.einstaklingurMedProkuru, - // ]) - // } else { - // removeFormApplicantTypes([ - // EFormApplicantTypes.einstaklingurMedProkuru, - // EFormApplicantTypes.logadili, - // ]) - // } - // } - // } - // } - - // const { formatMessage } = useIntl() - - // return ( - // <Stack space={2}> - // <Box marginBottom={2}> - // <Text variant="h4">{formatMessage(m.selectIndividuals)}</Text> - // </Box> - // <Box padding={2}> - // <Stack space={2}> - // {applicantTypeLabel.slice(0, 4).map((label, index) => ( - // <Checkbox - // key={index} - // label={label} - // checked={formApplicantTypes.some( - // (f) => f.type === applicantTypes?.[index], - // )} - // onChange={(e) => handleCheckboxChange(e.target.checked, index)} - // /> - // ))} - // </Stack> - // </Box> - // {formApplicantTypes.length > 0 && ( - // <Box marginTop={1}> - // <Text variant="h3">{formatMessage(m.defineRelevantParties)}</Text> - // </Box> - // )} - // {formApplicantTypes.map((f, i) => ( - // <FormApplicantType - // key={i} - // title={ - // f.type && applicantTypeLabel[applicantTypes.indexOf(f.type)] - // ? applicantTypeLabel[applicantTypes.indexOf(f.type)] - // : '' - // } - // name={f.name as FormSystemLanguageType} - // nameSuggestions={ - // (applicantTypeTemplates - // ?.find((at) => at?.id === f.applicantTypeId) - // ?.nameSuggestions?.map((ns) => ns?.nameSuggestion) ?? - // []) as FormSystemLanguageType[] - // } - // formApplicantType={f} - // index={i} - // handleSelect={handleSelect} - // blur={blur} - // setOnFocus={onFocus} - // setFormApplicantTypes={setFormApplicantTypes} - // isOther={isOther(f)} - // /> - // ))} - // </Stack> - // ) - return <div>RelevantParties</div> -} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx deleted file mode 100644 index 3a2d8635d083..000000000000 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantType.tsx +++ /dev/null @@ -1,161 +0,0 @@ -import React, { useContext, useState } from 'react' -import { - Box, - GridColumn as Column, - GridRow as Row, - Input, - Select, - Stack, - Text, -} from '@island.is/island-ui/core' -import { - FormSystemFormApplicantType, - FormSystemLanguageType, -} from '@island.is/api/schema' -import { useIntl } from 'react-intl' -import { m } from '../../../../../lib/messages' -import { ControlContext } from '../../../../../context/ControlContext' - -interface Props { - title: string - nameSuggestions?: FormSystemLanguageType[] - name: FormSystemLanguageType - formApplicantType: FormSystemFormApplicantType - handleSelect( - e: { - label: string - value: string - }, - index: number, - ): void - index: number - blur(value: string): void - setOnFocus(value: string): void - setFormApplicantTypes: React.Dispatch< - React.SetStateAction<FormSystemFormApplicantType[]> - > - isOther: boolean -} - -export const FormApplicantType = ({ - title, - name, - nameSuggestions, - handleSelect, - index, - blur, - setOnFocus, - setFormApplicantTypes, - isOther, -}: Props) => { - const [inputEnabled, setInputEnabled] = useState(isOther) - const other = { label: 'Annað', value: 'Annað' } - const { formatMessage } = useIntl() - const { translate } = useContext(ControlContext) - const getOptions = () => { - const options = - nameSuggestions?.map((suggestion) => { - return { - label: suggestion?.is ?? '', - value: suggestion?.en ?? '', - } - }) || [] - options.push(other) - return options - } - - const handleSelectChange = (e: { label: string; value: string }) => { - if (e.label === 'Annað') { - setInputEnabled(true) - } else { - setInputEnabled(false) - handleSelect(e, index) - } - } - - const handleInputChange = (value: string, language: 'is' | 'en') => { - setFormApplicantTypes((prev: FormSystemFormApplicantType[]) => { - const newApplicantTypes = prev.map( - (f: FormSystemFormApplicantType, i: number) => { - if (i === index) { - return { - ...f, - name: { - ...f.name, - [language]: value, - }, - } - } - return f - }, - ) - return newApplicantTypes - }) - } - - return ( - <Box marginBottom={2}> - <Stack space={2}> - <Row> - <Column> - <Box marginBottom={1}> - <Text variant="h4">{title}</Text> - </Box> - </Column> - </Row> - <Row> - <Column span="5/10"> - <Select - label={formatMessage(m.suggestions)} - name="suggestions" - backgroundColor="blue" - defaultValue={ - isOther ? other : { label: name.is ?? '', value: name.en ?? '' } - } - options={getOptions()} - onChange={(e) => - handleSelectChange(e ?? { label: '', value: '' }) - } - /> - </Column> - </Row> - <Row> - <Column span="5/10"> - <Input - label={formatMessage(m.name)} - name="name" - backgroundColor="blue" - value={name.is ?? ''} - disabled={!inputEnabled} - onFocus={(e) => setOnFocus(e.target.value)} - onBlur={(e) => blur(e.target.value)} - onChange={(e) => handleInputChange(e.target.value, 'is')} - /> - </Column> - <Column span="5/10"> - <Input - label={formatMessage(m.nameEnglish)} - name="nameEn" - backgroundColor="blue" - value={name.en ?? ''} - disabled={!inputEnabled} - onFocus={(e) => setOnFocus(e.target.value)} - onBlur={(e) => blur(e.target.value)} - onChange={(e) => handleInputChange(e.target.value, 'en')} - buttons={[ - { - label: 'Translate', - name: 'reader', - onClick: async () => { - const translation = await translate(name.is ?? '') - handleInputChange(translation, 'en') - }, - }, - ]} - /> - </Column> - </Row> - </Stack> - </Box> - ) -} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx new file mode 100644 index 000000000000..b4a8c20afbe5 --- /dev/null +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx @@ -0,0 +1,127 @@ +import { FormSystemFormApplicant } from "@island.is/api/schema" +import { Dispatch, SetStateAction, useContext } from "react" +import { + Box, + GridColumn as Column, + GridRow as Row, + Input, + Stack, + Text, +} from '@island.is/island-ui/core' +import { useIntl } from "react-intl" +import { m } from '@island.is/form-system/ui' +import { ControlContext } from "../../../../../context/ControlContext" +import { useMutation } from "@apollo/client" +import { UPDATE_APPLICANT } from "@island.is/form-system/graphql" + +interface Props { + formApplicantsTypes: FormSystemFormApplicant[] + setFormApplicantTypes: Dispatch<SetStateAction<FormSystemFormApplicant[]>> +} + +enum FormSystemApplicantTypeEnum { + Individual = 'Individual', + IndividualWithDelegationFromIndividual = 'IndividualWithDelegationFromIndividual', + IndividualWithDelegationFromLegalEntity = 'IndividualWithDelegationFromLegalEntity', + IndividualWithProcuration = 'IndividualWithProcuration', + IndividualGivingDelegation = 'IndividualGivingDelegation', + LegalEntity = 'LegalEntity', +} + +const applicantTypeLabelMap: Record<FormSystemApplicantTypeEnum, string> = { + [FormSystemApplicantTypeEnum.Individual]: 'Einstaklingur (innskráður)', + [FormSystemApplicantTypeEnum.IndividualWithDelegationFromIndividual]: 'Einstaklingur í umboði annars einstaklings', + [FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity]: 'Einstaklingur í umboði lögaðila', + [FormSystemApplicantTypeEnum.IndividualWithProcuration]: 'Einstaklingur með prókúru', + [FormSystemApplicantTypeEnum.IndividualGivingDelegation]: 'Umboðsveitandi (einstaklingur)', + [FormSystemApplicantTypeEnum.LegalEntity]: 'Lögaðili', +} + +const getApplicantTypeLabel = (type?: FormSystemApplicantTypeEnum) => { + if (!type) return '' + return applicantTypeLabelMap[type] +} + +export const FormApplicantTypes = ({ formApplicantsTypes, setFormApplicantTypes }: Props) => { + const { formatMessage } = useIntl() + const { focus, setFocus } = useContext(ControlContext) + const [updateApplicant] = useMutation(UPDATE_APPLICANT) + + const onBlurHandler = (currentString: string, applicant: FormSystemFormApplicant) => { + if (currentString !== focus) { + updateApplicant({ + variables: { + input: { + id: applicant.id, + updateFormApplicantDto: { + name: applicant.name + } + } + } + }) + setFocus('') + } + } + + return ( + <Stack space={5}> + {formApplicantsTypes.map((applicantType, index) => { + return ( + <Box key={index}> + <Row> + <Column> + <Box marginBottom={1}> + <Text variant="h4">{getApplicantTypeLabel(applicantType?.applicantType ?? undefined)}</Text> + </Box> + </Column> + </Row> + <Row> + <Column span="5/10"> + <Input + label={formatMessage(m.name)} + name="name" + value={applicantType?.name?.is ?? ''} + backgroundColor="blue" + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => onBlurHandler(e.target.value, applicantType)} + onChange={(e) => { + const updatedFormApplicantTypes = [...formApplicantsTypes] + updatedFormApplicantTypes[index] = { + ...updatedFormApplicantTypes[index], + name: { + ...updatedFormApplicantTypes[index].name, + is: e.target.value, + }, + } + setFormApplicantTypes(updatedFormApplicantTypes) + }} + /> + </Column> + <Column span="5/10"> + <Input + label={formatMessage(m.nameEnglish)} + name="nameEn" + value={applicantType?.name?.en ?? ''} + backgroundColor="blue" + onFocus={(e) => setFocus(e.target.value)} + onBlur={(e) => onBlurHandler(e.target.value, applicantType)} + onChange={(e) => { + const updatedFormApplicantTypes = [...formApplicantsTypes] + updatedFormApplicantTypes[index] = { + ...updatedFormApplicantTypes[index], + name: { + ...updatedFormApplicantTypes[index].name, + en: e.target.value, + }, + } + setFormApplicantTypes(updatedFormApplicantTypes) + }} + /> + </Column> + </Row> + </Box> + ) + })} + </Stack> + ) +} diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index 1fdd33e526bb..f57abc940505 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -5,8 +5,7 @@ import { ControlContext } from '../../../context/ControlContext' import { removeTypename } from '../../../lib/utils/removeTypename' import { useIntl } from 'react-intl' import { m } from '../../../lib/messages' -import { useLazyQuery } from '@apollo/client' -// eslint-disable-next-line @nx/enforce-module-boundaries +import { useMutation } from '@apollo/client' import { CREATE_FIELD, CREATE_SCREEN, DELETE_FIELD, DELETE_SCREEN } from '@island.is/form-system/graphql' @@ -33,26 +32,29 @@ export const NavButtons = () => { return false } - const createScreen = useLazyQuery(CREATE_SCREEN) - const createField = useLazyQuery(CREATE_FIELD) - const deleteScreen = useLazyQuery(DELETE_SCREEN) - const deleteField = useLazyQuery(DELETE_FIELD) + const createScreen = useMutation(CREATE_SCREEN) + const createField = useMutation(CREATE_FIELD) + const deleteScreen = useMutation(DELETE_SCREEN) + const deleteField = useMutation(DELETE_FIELD) const addItem = async () => { if (activeItem.type === 'Section') { const newScreen = await createScreen[0]({ variables: { input: { - id: activeItem?.data?.id, + createScreenDto: { + sectionId: activeItem?.data?.id, + } }, }, }) - if (newScreen) { + if (newScreen && !createScreen[1].loading) { + console.log('newScreen', newScreen) controlDispatch({ type: 'ADD_SCREEN', payload: { screen: removeTypename( - newScreen.data?.formSystemCreateGroup, + newScreen.data?.formSystemCreateScreen, ) as FormSystemScreen, }, }) @@ -61,7 +63,9 @@ export const NavButtons = () => { const newField = await createField[0]({ variables: { input: { - id: activeItem?.data?.id, + createFieldDto: { + screenId: activeItem?.data?.id, + } }, }, }) @@ -70,7 +74,7 @@ export const NavButtons = () => { type: 'ADD_FIELD', payload: { field: removeTypename( - newField.data?.formSystemCreateInput, + newField.data?.formSystemCreateField, ) as FormSystemField, }, }) diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 25b5c827793c..f654e2ddd515 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -27,9 +27,8 @@ import { removeTypename } from '../../lib/utils/removeTypename' import { useIntl } from 'react-intl' import { m } from '../../lib/messages' import { NavComponent } from '../NavComponent/NavComponent' -import { useLazyQuery } from '@apollo/client' -// eslint-disable-next-line @nx/enforce-module-boundaries -import { CREATE_SECTION } from '@island.is/form-system/graphql' +import { CREATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from '@island.is/form-system/graphql' +import { useMutation } from '@apollo/client' type DndAction = | 'SECTION_OVER_SECTION' @@ -39,7 +38,7 @@ type DndAction = | 'FIELD_OVER_FIELD' export const Navbar = () => { - const { control, controlDispatch, setInSettings, inSettings } = + const { control, controlDispatch, setInSettings, inSettings, updateDnD } = useContext(ControlContext) as IControlContext const { formatMessage } = useIntl() @@ -75,25 +74,41 @@ export const Navbar = () => { }, }), ) - const [createSection] = useLazyQuery(CREATE_SECTION) + const [createSection, { loading }] = useMutation(CREATE_SECTION) + const [updateDisplayOrder, { loading: updateDO }] = useMutation(UPDATE_SECTION_DISPLAY_ORDER) const addSection = async () => { const newSection = await createSection({ variables: { input: { - formId: form.id + createSectionDto: { + formId: form.id, + } }, }, }) - if (newSection) { + if (newSection && !loading) { controlDispatch({ type: 'ADD_SECTION', payload: { section: removeTypename( - newSection.data?.formSystemCreateStep, + newSection.data?.formSystemCreateSection, ) as FormSystemSection, }, }) + const updatedSections = sections?.map(s => { + return { + id: s?.id + } + }) + console.log('updatedSections', updatedSections) + updateDisplayOrder({ + variables: { + input: { + sectionsDisplayOrderDto: sections?.map((s) => { s?.id }) + } + } + }) } } @@ -191,7 +206,7 @@ export const Navbar = () => { } const onDragEnd = () => { - //formUpdate() TODO: Implement form update + updateDnD(activeItem.type) } if (inSettings) { diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx index 21005dec0822..18af2fb92182 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -5,7 +5,6 @@ import { useContext } from 'react' import { baseSettingsStep } from '../../../../lib/utils/getBaseSettingsSection' import { ControlContext } from '../../../../context/ControlContext' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' import { FormSystemSectionDtoSectionTypeEnum } from '@island.is/api/schema' diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index 16c7321d4fab..c7bad681fb8c 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -30,6 +30,7 @@ interface Props { options?: string isHeader: boolean translated?: boolean + slug?: string } interface ColumnTextProps { @@ -50,6 +51,7 @@ export const TableRow = ({ state, isHeader, translated, + slug }: Props) => { const [isOpen, setIsOpen] = useState(false) const navigate = useNavigate() @@ -157,6 +159,16 @@ export const TableRow = ({ }, { title: formatMessage(m.getJson), + onClick: () => { + navigate( + FormSystemPaths.FormApplications.replace(':slug', String(slug)), + { + state: { + slug: slug + } + } + ) + } }, ]} /> diff --git a/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx b/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx index 29e50d051a78..0542b2f8f8f0 100644 --- a/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx +++ b/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx @@ -1,5 +1,4 @@ import { Tag } from '@island.is/island-ui/core' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' import { useIntl } from 'react-intl' interface Props { diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index b73396a2b912..7502bfe4ca98 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -3,6 +3,7 @@ import { ControlAction, ControlState } from '../hooks/controlReducer' import { Maybe } from 'graphql/jsutils/Maybe' import { FormSystemFieldType, + FormSystemForm, FormSystemFormCertificationType, FormSystemListType, } from '@island.is/api/schema' @@ -29,7 +30,7 @@ export interface IControlContext { setSelectStatus: Dispatch<NavbarSelectStatus> inListBuilder: boolean setInListBuilder: Dispatch<boolean> - formUpdate: () => void + formUpdate: (updatedForm?: FormSystemForm) => void } export const ControlContext = createContext<IControlContext>({ diff --git a/libs/portals/admin/form-system/src/context/FormProvider.tsx b/libs/portals/admin/form-system/src/context/FormProvider.tsx index 152a8ec3627b..4a2978e95802 100644 --- a/libs/portals/admin/form-system/src/context/FormProvider.tsx +++ b/libs/portals/admin/form-system/src/context/FormProvider.tsx @@ -8,61 +8,79 @@ import { updateDnd } from "../lib/utils/updateDnd" import { defaultStep } from "../lib/utils/defaultStep" import { baseSettingsStep } from "../lib/utils/getBaseSettingsSection" import { updateActiveItemFn } from "../lib/utils/updateActiveItem" -import { useLazyQuery } from "@apollo/client" -// eslint-disable-next-line @nx/enforce-module-boundaries +import { useMutation } from "@apollo/client" import { UPDATE_FIELD, UPDATE_FIELDS_DISPLAY_ORDER, UPDATE_FORM, UPDATE_SCREEN, UPDATE_SCREEN_DISPLAY_ORDER, UPDATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from "@island.is/form-system/graphql" -export const FormProvider: React.FC<{ children: React.ReactNode, form: FormSystemFormResponse }> = ({ children, form }) => { +export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: FormSystemFormResponse }> = ({ children, formBuilder }) => { const [focus, setFocus] = useState<string>('') - const [inSettings, setInSettings] = useState(form?.form?.name?.is === '') + const [inSettings, setInSettings] = useState(formBuilder?.form?.name?.is === '') const [inListBuilder, setInListBuilder] = useState(false) const [selectStatus, setSelectStatus] = useState<NavbarSelectStatus>( NavbarSelectStatus.OFF, ) - const { fieldTypes, listTypes, certificationTypes } = form + + const { fieldTypes, listTypes, certificationTypes, form } = formBuilder const initialControl: ControlState = { activeItem: { type: 'Section', data: inSettings ? baseSettingsStep - : removeTypename(form?.form?.sections)?.find( + : removeTypename(form?.sections)?.find( (s: FormSystemSection) => s?.sectionType === FormSystemSectionDtoSectionTypeEnum.Input, ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, } + console.log('initialForm', form) const [control, controlDispatch] = useReducer(controlReducer, initialControl) - //const { updateForm, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder, updateSection, updateScreen, updateField } = useFormMutations() - const [updateSection] = useLazyQuery(UPDATE_SECTION) - const [updateScreen] = useLazyQuery(UPDATE_SCREEN) - const [updateField] = useLazyQuery(UPDATE_FIELD) + const updateSection = useMutation(UPDATE_SECTION) + const updateScreen = useMutation(UPDATE_SCREEN) + const updateField = useMutation(UPDATE_FIELD) const updateActiveItem = useCallback((updatedActiveItem?: ActiveItem) => updateActiveItemFn(control.activeItem, updateSection, updateScreen, updateField, updatedActiveItem), [control.activeItem, updateSection, updateScreen, updateField]) - const [updateSectionDisplayOrder] = useLazyQuery(UPDATE_SECTION_DISPLAY_ORDER) - const [updateScreenDisplayOrder] = useLazyQuery(UPDATE_SCREEN_DISPLAY_ORDER) - const [updateFieldDisplayOrder] = useLazyQuery(UPDATE_FIELDS_DISPLAY_ORDER) + const [updateSectionDisplayOrder] = useMutation(UPDATE_SECTION_DISPLAY_ORDER) + const [updateScreenDisplayOrder] = useMutation(UPDATE_SCREEN_DISPLAY_ORDER) + const [updateFieldDisplayOrder] = useMutation(UPDATE_FIELDS_DISPLAY_ORDER) const updateDragAndDrop = useCallback(() => updateDnd(control, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder), [control, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder]) - const [updateForm] = useLazyQuery(UPDATE_FORM) - const formUpdate = (updatedForm?: FormSystemForm) => { - updateForm({ - variables: { - input: { - id: control.form.id, - updateFormDto: { - ...(updatedForm ? updatedForm : control.form) + const [updateForm] = useMutation(UPDATE_FORM) + const formUpdate = async (updatedForm?: FormSystemForm) => { + const newForm = updatedForm ? updatedForm : control.form + try { + const response = await updateForm({ + variables: { + input: { + id: control.form.id, + updateFormDto: { + organizationId: newForm.organizationId, + name: newForm.name, + slug: newForm.slug, + invalidationDate: newForm.invalidationDate === null ? undefined : newForm.invalidationDate, + isTranslated: newForm.isTranslated, + applicationDaysToRemove: newForm.applicationDaysToRemove, + stopProgressOnValidatingScreen: newForm.stopProgressOnValidatingScreen, + completedMessage: newForm.completedMessage, + dependencies: newForm.dependencies ?? [], + } } } - } - }) + }) + + // Optionally handle the response + console.log('Form updated successfully:', response.data) + + } catch (err) { + // Handle the error case + console.error('Error updating form:', err.message) + } } const context: IControlContext = useMemo(() => ({ diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index 09ac9ecc4f81..450634c50604 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -5,6 +5,7 @@ import { FormSystemListItem, FormSystemSection, FormSystemFieldSettings, + FormSystemSectionDtoSectionTypeEnum, } from '@island.is/api/schema' import { UniqueIdentifier } from '@dnd-kit/core' import { arrayMove } from '@dnd-kit/sortable' @@ -195,18 +196,24 @@ export const controlReducer = ( } } // Sections - case 'ADD_SECTION': + case 'ADD_SECTION': { + const newSection = { + ...action.payload.section, + displayOrder: sections?.length ?? 0, + sectionType: FormSystemSectionDtoSectionTypeEnum.Input + } return { ...state, activeItem: { type: 'Section', - data: action.payload.section, + data: newSection, }, form: { ...form, - sections: [...(sections || []), action.payload.section], + sections: [...(sections || []), newSection], }, } + } case 'REMOVE_SECTION': { const newSections = state.form.sections?.filter( (section) => section?.id !== action.payload.id, @@ -221,7 +228,8 @@ export const controlReducer = ( } // Screens - case 'ADD_SCREEN': + case 'ADD_SCREEN': { + console.log('action.payload.screen', action.payload.screen) return { ...state, activeItem: { @@ -233,6 +241,7 @@ export const controlReducer = ( screens: [...(screens || []), action.payload.screen], }, } + } case 'REMOVE_SCREEN': { const newScreens = state.form.screens?.filter( (screen) => screen?.id !== action.payload.id, @@ -448,10 +457,10 @@ export const controlReducer = ( ...state, form: { ...form, - stopProgressOnValidatingStep: action.payload.value, + stopProgressOnValidatingScreen: action.payload.value, }, } - action.payload.update({ ...updatedState.form }) // TODO: missing endpoint + action.payload.update({ ...updatedState.form }) return updatedState } @@ -514,7 +523,7 @@ export const controlReducer = ( ...activeItem, data: { ...currentData, - multiSet: action.payload.checked ? 1 : 0, + multiset: action.payload.checked ? 1 : 0, }, } action.payload.update(newActive) @@ -831,10 +840,11 @@ export const controlReducer = ( const overIndex = sections?.findIndex( (section) => section?.id === action.payload.overId, ) as number - const updatedScreens = sections as FormSystemScreen[] + const updatedScreens = screens as FormSystemScreen[] if (sections && sections[overIndex]) { updatedScreens[activeIndex].sectionId = action.payload.overId as string } + console.log(arrayMove(updatedScreens, activeIndex, overIndex)) return { ...state, form: { diff --git a/libs/portals/admin/form-system/src/hooks/formProviderHooks.ts b/libs/portals/admin/form-system/src/hooks/formProviderHooks.ts deleted file mode 100644 index 8a28e2034690..000000000000 --- a/libs/portals/admin/form-system/src/hooks/formProviderHooks.ts +++ /dev/null @@ -1,91 +0,0 @@ -// import { MutationHookOptions, useLazyQuery } from '@apollo/client' -// // eslint-disable-next-line @nx/enforce-module-boundaries -// import { -// CREATE_FIELD, -// CREATE_LIST_ITEM, -// CREATE_SCREEN, -// CREATE_SECTION, -// DELETE_FIELD, -// DELETE_LIST_ITEM, -// DELETE_SCREEN, -// DELETE_SECTION, -// UPDATE_FIELD, -// UPDATE_FIELDS_DISPLAY_ORDER, -// UPDATE_FORM, -// UPDATE_LIST_ITEM, -// UPDATE_LIST_ITEM_DISPLAY_ORDER, -// UPDATE_SCREEN, -// UPDATE_SCREEN_DISPLAY_ORDER, -// UPDATE_SECTION, -// UPDATE_SECTION_DISPLAY_ORDER, -// } from '@island.is/form-system/graphql' - -// type MutationName = keyof typeof MUTATIONS -// type CamelCaseMutationName = typeof MUTATION_NAMES[MutationName] - -// export type FormMutations = ReturnType<typeof useFormMutations> -// export type FormMutationName = keyof FormMutations - - -// const MUTATIONS = { -// CREATE_SECTION, -// CREATE_SCREEN, -// CREATE_FIELD, -// DELETE_SECTION, -// DELETE_SCREEN, -// DELETE_FIELD, -// UPDATE_SECTION, -// UPDATE_SECTION_DISPLAY_ORDER, -// UPDATE_SCREEN, -// UPDATE_SCREEN_DISPLAY_ORDER, -// UPDATE_FIELD, -// UPDATE_FIELDS_DISPLAY_ORDER, -// CREATE_LIST_ITEM, -// DELETE_LIST_ITEM, -// UPDATE_LIST_ITEM, -// UPDATE_LIST_ITEM_DISPLAY_ORDER, -// UPDATE_FORM -// } as const - -// const MUTATION_NAMES = { -// CREATE_SECTION: 'createSection', -// CREATE_SCREEN: 'createScreen', -// CREATE_FIELD: 'createField', -// DELETE_SECTION: 'deleteSection', -// DELETE_SCREEN: 'deleteScreen', -// DELETE_FIELD: 'deleteField', -// UPDATE_SECTION: 'updateSection', -// UPDATE_SECTION_DISPLAY_ORDER: 'updateSectionDisplayOrder', -// UPDATE_SCREEN: 'updateScreen', -// UPDATE_SCREEN_DISPLAY_ORDER: 'updateScreenDisplayOrder', -// UPDATE_FIELD: 'updateField', -// UPDATE_FIELDS_DISPLAY_ORDER: 'updateFieldDisplayOrder', -// CREATE_LIST_ITEM: 'createListItem', -// DELETE_LIST_ITEM: 'deleteListItem', -// UPDATE_LIST_ITEM: 'updateListItem', -// UPDATE_LIST_ITEM_DISPLAY_ORDER: 'updateListItemDisplayOrder', -// UPDATE_FORM: 'updateForm' -// } as const - - - -// export const useFormMutations = () => { -// // eslint-disable-next-line @typescript-eslint/no-explicit-any -// const createMutationHook = (mutation: any, options: MutationHookOptions = {}) => -// useLazyQuery(mutation, { -// ...options, -// onError: (error) => { -// console.error(error, error.message) -// options.onError?.(error) -// }, -// }) - -// const hooks = (Object.entries(MUTATIONS) as [MutationName, any][]).reduce((acc, [key, mutation]) => { -// const mutationHook = createMutationHook(mutation) -// return { ...acc, [MUTATION_NAMES[key]]: mutationHook } -// }, {} as Record<CamelCaseMutationName, ReturnType<typeof createMutationHook>>) - -// return hooks -// } - - diff --git a/libs/portals/admin/form-system/src/lib/navigation.ts b/libs/portals/admin/form-system/src/lib/navigation.ts index 61cc2e09bde7..e1ab562acf32 100644 --- a/libs/portals/admin/form-system/src/lib/navigation.ts +++ b/libs/portals/admin/form-system/src/lib/navigation.ts @@ -15,5 +15,10 @@ export const formSystemNavigation: PortalNavigationItem = { path: FormSystemPaths.Form, activeIfExact: true, }, + { + name: m.rootName, + path: FormSystemPaths.FormApplications, + activeIfExact: true, + } ], } diff --git a/libs/portals/admin/form-system/src/lib/paths.ts b/libs/portals/admin/form-system/src/lib/paths.ts index 1efb298820d0..81fc5a6f5012 100644 --- a/libs/portals/admin/form-system/src/lib/paths.ts +++ b/libs/portals/admin/form-system/src/lib/paths.ts @@ -1,4 +1,6 @@ export enum FormSystemPaths { FormSystemRoot = '/umsoknarsmidur', Form = '/umsoknarsmidur/:formId', + FormApplications = '/umsoknarsmidur/application/:slug', + FormApplication = '/umsoknarsmidur/application/:slug/:id', } diff --git a/libs/portals/admin/form-system/src/lib/utils/getTranslation.ts b/libs/portals/admin/form-system/src/lib/utils/getTranslation.ts index 318e81ef3f93..51dc2da202ac 100644 --- a/libs/portals/admin/form-system/src/lib/utils/getTranslation.ts +++ b/libs/portals/admin/form-system/src/lib/utils/getTranslation.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line @nx/enforce-module-boundaries import { GET_TRANSLATION } from '@island.is/form-system/graphql' import { useMutation } from '@apollo/client' import { FormSystemTranslation } from '@island.is/api/schema' diff --git a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts index ba63e8941bb9..02c34bbcf8c3 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { LazyQueryExecFunction, OperationVariables } from '@apollo/client' +import { ApolloCache, DefaultContext, MutationFunctionOptions, MutationTuple, OperationVariables } from '@apollo/client' import { ActiveItem } from './interfaces' import { FormSystemSection, @@ -7,14 +7,18 @@ import { FormSystemField, } from '@island.is/api/schema' -export const updateActiveItemFn = ( + +export const updateActiveItemFn = async ( activeItem: ActiveItem, - updateSection: LazyQueryExecFunction<any, OperationVariables>, - updateScreen: LazyQueryExecFunction<any, OperationVariables>, - updateField: LazyQueryExecFunction<any, OperationVariables>, + sectionMutation: MutationTuple<any, OperationVariables, DefaultContext, ApolloCache<any>>, + screenMutation: MutationTuple<any, OperationVariables, DefaultContext, ApolloCache<any>>, + fieldMutation: MutationTuple<any, OperationVariables, DefaultContext, ApolloCache<any>>, currentActiveItem?: ActiveItem, ) => { const { type } = activeItem + const [updateSection, { error: sectionError }] = sectionMutation + const [updateScreen, { error: screenError }] = screenMutation + const [updateField, { error: fieldError }] = fieldMutation try { if (type === 'Section') { const { id, name, waitingText } = @@ -24,35 +28,35 @@ export const updateActiveItemFn = ( updateSection({ variables: { input: { - stepId: id, - stepUpdateDto: { - id: id, - name: name, - type: type, - waitingText: waitingText, - }, + id, + updateSectionDto: { + name, + waitingText + } }, }, }) } else if (type === 'Screen') { - const { id, name, displayOrder, multiSet, sectionId } = + const { id, name, multiset, callRuleset } = currentActiveItem ? (currentActiveItem.data as FormSystemScreen) : (activeItem.data as FormSystemScreen) + console.log('callRuleset', callRuleset) updateScreen({ variables: { input: { - id: activeItem?.data?.id, - screenUpdateDto: { - id, - name: name, - displayOrder, - multiSet, - sectionId, + id, + updateScreenDto: { + name, + multiset: multiset ? multiset : 0, + callRuleset }, }, - }, + } }) + if (screenError) { + console.error('Error updating screen: ', screenError) + } } else if (type === 'Field') { const { id, @@ -81,6 +85,9 @@ export const updateActiveItemFn = ( }) } } catch (e) { + if (e.GraphQLError) { + console.error("GraphQL errors:", e.graphQLErrors) + } console.error('Error updating active item: ', e) } } diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index c8f8ee0af01a..73f6d9db3725 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -1,34 +1,50 @@ -import { LazyQueryExecFunction, OperationVariables } from "@apollo/client" +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { ApolloCache, DefaultContext, MutationFunctionOptions, OperationVariables } from "@apollo/client" import { ControlState } from "../../hooks/controlReducer" export const updateDnd = ( control: ControlState, - updateSectionDisplayOrder: LazyQueryExecFunction<any, OperationVariables>, - updateScreenDisplayOrder: LazyQueryExecFunction<any, OperationVariables>, - updateFieldDisplayOrder: LazyQueryExecFunction<any, OperationVariables>) => { + updateSectionDisplayOrder: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>, + updateScreenDisplayOrder: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>, + updateFieldDisplayOrder: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>) => { const { type } = control.activeItem - if (type === 'Section') { - updateSectionDisplayOrder({ - variables: { - input: { - updateSectionsDisplayOrderDto: control.form.sections?.map(section => section?.id) + try { + updateSectionDisplayOrder({ + variables: { + input: { + updateSectionsDisplayOrderDto: { + sectionsDisplayOrderDto: control.form.sections?.map(section => { + return { + id: section?.id + } + }) + } + } } - } - }) + }) + } catch (err) { + console.error('Error updating section display order:', err.message) + } } else if (type === 'Screen') { - updateScreenDisplayOrder({ - variables: { - input: { - updateScreensDisplayOrderDto: control.form.screens?.map(screen => { - return { - id: screen?.id, - sectionId: screen?.sectionId + try { + updateScreenDisplayOrder({ + variables: { + input: { + updateScreensDisplayOrderDto: { + screensDisplayOrderDto: control.form.screens?.map(screen => { + return { + id: screen?.id, + sectionId: screen?.sectionId + } + }) } - }) + } } - } - }) + }) + } catch (err) { + console.error('Error updating screen display order:', err.message) + } } else if (type === 'Field') { updateFieldDisplayOrder({ variables: { diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts new file mode 100644 index 000000000000..81b7a473aecd --- /dev/null +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts @@ -0,0 +1,35 @@ +import { OperationVariables, ApolloCache, DefaultContext, MutationFunctionOptions } from "@apollo/client" +import { FormSystemForm } from "@island.is/api/schema" +import { ControlState } from "../../hooks/controlReducer" + +export const updateFormFn = async ( + control: ControlState, + updateForm: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>, + updatedForm?: FormSystemForm, +) => { + const newForm = updatedForm ? updatedForm : control.form + try { + const response = await updateForm({ + variables: { + input: { + id: control.form.id, + updateFormDto: { + organizationId: newForm.organizationId, + name: newForm.name, + slug: newForm.slug, + invalidationDate: newForm.invalidationDate === null ? undefined : newForm.invalidationDate, + isTranslated: newForm.isTranslated, + applicationDaysToRemove: newForm.applicationDaysToRemove, + stopProgressOnValidatingScreen: newForm.stopProgressOnValidatingScreen, + completedMessage: newForm.completedMessage, + dependencies: newForm.dependencies ?? [], + } + } + } + }) + console.log('Form updated successfully:', response.data) + + } catch (err) { + console.error('Error updating form:', err.message) + } +} diff --git a/libs/portals/admin/form-system/src/module.tsx b/libs/portals/admin/form-system/src/module.tsx index 32818cefc3c4..ea379b12b0e0 100644 --- a/libs/portals/admin/form-system/src/module.tsx +++ b/libs/portals/admin/form-system/src/module.tsx @@ -10,6 +10,8 @@ const Forms = lazy(() => import('./screens/Forms/Forms')) const Form = lazy(() => import('./screens/Form/Form')) +const Application = lazy(() => import('./screens/Application/Application')) + const allowedScopes: string[] = [ AdminPortalScope.formSystem, AdminPortalScope.formSystemSuperUser, @@ -34,6 +36,11 @@ export const formSystemModule: PortalModule = { element: <Form />, loader: formLoader(props), }, + { + name: m.rootName, + path: FormSystemPaths.FormApplications, + element: <Application />, + } ] }, } diff --git a/libs/portals/admin/form-system/src/screens/Application/Application.tsx b/libs/portals/admin/form-system/src/screens/Application/Application.tsx new file mode 100644 index 000000000000..d5a2692b8919 --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Application/Application.tsx @@ -0,0 +1,47 @@ +import { useAuth } from "@island.is/auth/react" +import { useLocale, useLocalizedQuery } from "@island.is/localization" +import { Params, useNavigate, useParams } from "react-router-dom" +import { CREATE_APPLICATION } from "@island.is/form-system/graphql" +import { useMutation } from "@apollo/client" +import { useEffect } from "react" + +export const Application = () => { + const { userInfo } = useAuth() + + const { formatMessage } = useLocale() + const navigate = useNavigate() + const nationalId = userInfo?.profile?.nationalId + + const { slug } = useParams() as Params + + if (!nationalId) { + return + } + + const [createApplication] = useMutation(CREATE_APPLICATION) + + useEffect(() => { + const fetchApplication = async () => { + try { + const { data } = await createApplication({ + variables: { + input: { + slug + } + } + }) + //navigate(`../${slug}/${data?.formGuid}`) + console.log(data) + } catch (e) { + console.error(e) + } + } + fetchApplication() + }, []) + + + + return <>HOHO</> +} + +export default Application diff --git a/libs/portals/admin/form-system/src/screens/Applications/Applications.tsx b/libs/portals/admin/form-system/src/screens/Applications/Applications.tsx new file mode 100644 index 000000000000..869eb19e72bb --- /dev/null +++ b/libs/portals/admin/form-system/src/screens/Applications/Applications.tsx @@ -0,0 +1,6 @@ + + +export const Applications = () => { + + return <>HOHOHO</> +} diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts index 381718be6d70..45c4ea4ffab5 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts @@ -1,7 +1,7 @@ import type { WrappedLoaderFn } from '@island.is/portals/core' import { FormSystemFormResponse } from '@island.is/api/schema' -// eslint-disable-next-line @nx/enforce-module-boundaries import { GET_FORM } from '@island.is/form-system/graphql' +import { removeTypename } from '../../lib/utils/removeTypename' export interface FormLoaderResponse { formBuilder: FormSystemFormResponse @@ -32,7 +32,7 @@ export const formLoader: WrappedLoaderFn = ({ client }) => { } return { - formBuilder: data.formSystemGetForm, + formBuilder: removeTypename(data.formSystemGetForm), } } catch (error) { throw new Error(`Failed to load form: ${error.message}`) diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index bac0d03b7615..48740c1965ef 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -10,11 +10,12 @@ export const Form = () => { const { formBuilder } = useLoaderData() as FormLoaderResponse const { form } = formBuilder - if (!form) { + if (!form || !formBuilder) { return <div>Loading...</div> } + console.log('Form', form) return ( - <FormProvider form={formBuilder}> + <FormProvider formBuilder={formBuilder}> <FormLayout /> </FormProvider> ) diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts index 35785aa72177..e01c8c8f5d9f 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts @@ -1,6 +1,5 @@ import { WrappedLoaderFn } from '@island.is/portals/core' import { FormSystemForm, FormSystemFormResponse } from '@island.is/api/schema' -// eslint-disable-next-line @nx/enforce-module-boundaries import { GET_FORMS } from '@island.is/form-system/graphql' import { removeTypename } from '../../lib/utils/removeTypename' @@ -28,9 +27,6 @@ export const formsLoader: WrappedLoaderFn = ({ client }) => { if (!data) { throw new Error('No forms were found') } - console.log('formsLoader data', data) - const dataForms = data.formSystemGetAllForms?.forms - console.log(dataForms) return { forms: data.formSystemGetAllForms?.forms?.filter( (form) => form !== null, diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index 46ceac254cb3..e3d4a3f2c0fa 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -2,9 +2,7 @@ import { Box, Button, Text, Inline } from '@island.is/island-ui/core' import { useLoaderData, useNavigate } from 'react-router-dom' import { FormSystemPaths } from '../../lib/paths' import { TableRow } from '../../components/TableRow/TableRow' -// eslint-disable-next-line @nx/enforce-module-boundaries import { CREATE_FORM } from '@island.is/form-system/graphql' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' import { FormsLoaderResponse } from './Forms.loader' import { useMutation } from '@apollo/client' @@ -17,7 +15,6 @@ export const Forms = () => { const { forms } = useLoaderData() as FormsLoaderResponse const { formatMessage } = useIntl() const [formSystemCreateFormMutation] = useMutation(CREATE_FORM) - console.log(forms) if (forms) { return ( <div> @@ -34,6 +31,7 @@ export const Forms = () => { const { data } = await formSystemCreateFormMutation({ variables: { input: { organizationId: 'a4b0db68-e169-416a-8ad9-e46b73ce2d39' } }, }) + console.log('createForm', data) navigate( FormSystemPaths.Form.replace( ':formId', @@ -55,6 +53,7 @@ export const Forms = () => { <TableRow isHeader={true} /> {forms && forms?.map((f) => { + console.log(f) return ( <TableRow key={f?.id} @@ -63,6 +62,7 @@ export const Forms = () => { org={f?.organizationId} isHeader={false} translated={f?.isTranslated ?? false} + slug={f?.slug ?? ''} /> ) })} diff --git a/libs/portals/admin/regulations-admin/src/utils/groupByArticleTitle.ts b/libs/portals/admin/regulations-admin/src/utils/groupByArticleTitle.ts deleted file mode 100644 index 96e064372852..000000000000 --- a/libs/portals/admin/regulations-admin/src/utils/groupByArticleTitle.ts +++ /dev/null @@ -1,24 +0,0 @@ -export const groupElementsByArticleTitleFromDiv = ( - div: HTMLDivElement, -): HTMLElement[][] => { - const result: HTMLElement[][] = [] - let currentGroup: HTMLElement[] = [] - - Array.from(div.children).forEach((child) => { - const element = child as HTMLElement - if (element.classList.contains('article__title')) { - if (currentGroup.length > 0) { - result.push(currentGroup) - } - currentGroup = [element] - } else { - currentGroup.push(element) - } - }) - - if (currentGroup.length > 0) { - result.push(currentGroup) - } - - return result -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/AllLists.loader.ts b/libs/portals/admin/signature-collection/src/screens/AllLists/AllLists.loader.ts deleted file mode 100644 index ce93146aa674..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/AllLists.loader.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { WrappedLoaderFn } from '@island.is/portals/core' -import { - AllListsDocument, - AllListsQuery, -} from './graphql/getAllSignatureLists.generated' -import { - SignatureCollection, - SignatureCollectionList, -} from '@island.is/api/schema' -import { - CollectionDocument, - CollectionQuery, -} from './graphql/getCollectionStatus.generated' - -export interface ListsLoaderReturn { - allLists: SignatureCollectionList[] - collectionStatus: string - collection: SignatureCollection -} - -export const listsLoader: WrappedLoaderFn = ({ client }) => { - return async ({ - params, - }): Promise<{ - allLists: SignatureCollectionList[] - collectionStatus: string - collection: SignatureCollection - }> => { - const { data: collectionStatusData } = await client.query<CollectionQuery>({ - query: CollectionDocument, - fetchPolicy: 'network-only', - }) - const collection = collectionStatusData?.signatureCollectionAdminCurrent - const { data } = await client.query<AllListsQuery>({ - query: AllListsDocument, - fetchPolicy: 'network-only', - variables: { - input: { - collectionId: collection?.id, - }, - }, - }) - - const allLists = data?.signatureCollectionAdminLists ?? [] - const collectionStatus = - collectionStatusData?.signatureCollectionAdminCurrent?.status - - return { allLists, collectionStatus, collection } - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/compareLists.graphql b/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/compareLists.graphql deleted file mode 100644 index 683676aa1612..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/compareLists.graphql +++ /dev/null @@ -1,15 +0,0 @@ -mutation BulkCompare($input: SignatureCollectionNationalIdsInput!) { - signatureCollectionAdminBulkCompareSignaturesAllLists(input: $input) { - id - listId - listTitle - signee { - name - nationalId - address - } - isDigital - valid - created - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/index.tsx b/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/index.tsx deleted file mode 100644 index 9ede275c65a1..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/index.tsx +++ /dev/null @@ -1,197 +0,0 @@ -import { - Box, - InputFileUpload, - Text, - Button, - Table as T, - UploadFile, - toast, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../../../lib/messages' -import { useState } from 'react' -import { Modal } from '@island.is/react/components' -import { useBulkCompareMutation } from './compareLists.generated' -import { format as formatNationalId } from 'kennitala' -import { SignatureCollectionSignature } from '@island.is/api/schema' -import { createFileList, getFileData } from '../../../../lib/utils' -import { Skeleton } from './skeleton' -import { useUnsignAdminMutation } from './removeSignatureFromList.generated' - -const CompareLists = ({ collectionId }: { collectionId: string }) => { - const { formatMessage } = useLocale() - const [modalIsOpen, setModalIsOpen] = useState(false) - const [fileList, setFileList] = useState<Array<UploadFile>>([]) - const [uploadResults, setUploadResults] = useState<Array<any>>() - const [compareMutation, { loading }] = useBulkCompareMutation() - const [unSignMutation] = useUnsignAdminMutation() - - const compareLists = async (nationalIds: Array<string>) => { - try { - const res = await compareMutation({ - variables: { - input: { - collectionId, - nationalIds: nationalIds, - }, - }, - }) - - if (res.data) { - setUploadResults( - res.data?.signatureCollectionAdminBulkCompareSignaturesAllLists, - ) - } - } catch (e) { - toast.error(e.message) - } - } - - const unSignFromList = async (signatureId: string) => { - try { - const res = await unSignMutation({ - variables: { - input: { - signatureId, - }, - }, - }) - - if (res.data && res.data.signatureCollectionAdminUnsign.success) { - toast.success(formatMessage(m.unsignFromListSuccess)) - setUploadResults( - uploadResults?.filter((result: SignatureCollectionSignature) => { - return result.id !== signatureId - }), - ) - } - } catch (e) { - toast.error(e.message) - } - } - - const onChange = async (newFile: File[]) => { - setFileList(createFileList(newFile, fileList)) - let data = await getFileData(newFile) - - data = data.map((d: { Kennitala: any }) => { - return String(d.Kennitala).replace('-', '') - }) - - compareLists(data) - } - - return ( - <Box marginTop={10}> - <Box - background="purple100" - borderRadius="large" - display={['block', 'flex', 'flex']} - justifyContent="spaceBetween" - alignItems="center" - padding={3} - > - <Text marginBottom={[2, 0, 0]}> - {formatMessage(m.compareListsDescription)} - </Text> - <Button - icon="documents" - iconType="outline" - variant="utility" - size="small" - onClick={() => setModalIsOpen(true)} - > - {formatMessage(m.compareLists)} - </Button> - </Box> - <Modal - id="compareLists" - isVisible={modalIsOpen} - title={formatMessage(m.compareLists)} - onClose={() => { - setFileList([]) - setModalIsOpen(false) - }} - hideOnClickOutside={false} - closeButtonLabel={''} - label={''} - > - <Text>{formatMessage(m.compareListsModalDescription)}</Text> - <Box paddingTop={5} paddingBottom={5}> - <InputFileUpload - fileList={fileList} - header={formatMessage(m.uploadHeader)} - description={formatMessage(m.uploadText)} - buttonLabel={formatMessage(m.uploadButton)} - onChange={onChange} - onRemove={() => setFileList([])} - accept=".xlsx" - multiple={false} - /> - - {fileList.length > 0 && ( - <Box marginTop={7}> - <Text variant="h3" marginBottom={1}> - {formatMessage(m.compareListsResultsHeader)} - </Text> - <Text marginBottom={5}> - {formatMessage( - uploadResults && uploadResults?.length > 0 - ? m.compareListsResultsDescription - : m.compareListsNoResultsDescription, - )} - </Text> - {uploadResults && uploadResults?.length > 0 && ( - <T.Table> - <T.Head> - <T.Row> - <T.HeadData> - {formatMessage(m.signeeNationalId)} - </T.HeadData> - <T.HeadData>{formatMessage(m.signeeName)}</T.HeadData> - <T.HeadData>{formatMessage(m.singleList)}</T.HeadData> - <T.HeadData></T.HeadData> - </T.Row> - </T.Head> - <T.Body> - {!loading ? ( - uploadResults?.map( - (result: SignatureCollectionSignature, index) => { - return ( - <T.Row key={index}> - <T.Data style={{ minWidth: '140px' }}> - {formatNationalId(result.signee.nationalId)} - </T.Data> - <T.Data style={{ minWidth: '250px' }}> - {result.signee.name} - </T.Data> - <T.Data>{result.listTitle}</T.Data> - <T.Data style={{ minWidth: '160px' }}> - <Button - variant="utility" - onClick={() => { - unSignFromList(result.id) - }} - > - {formatMessage(m.unsignFromList)} - </Button> - </T.Data> - </T.Row> - ) - }, - ) - ) : ( - <Skeleton /> - )} - </T.Body> - </T.Table> - )} - </Box> - )} - </Box> - </Modal> - </Box> - ) -} - -export default CompareLists diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/removeSignatureFromList.graphql b/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/removeSignatureFromList.graphql deleted file mode 100644 index d594ed702aa3..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/removeSignatureFromList.graphql +++ /dev/null @@ -1,6 +0,0 @@ -mutation UnsignAdmin($input: SignatureCollectionSignatureIdInput!) { - signatureCollectionAdminUnsign(input: $input) { - success - reasons - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/skeleton.tsx b/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/skeleton.tsx deleted file mode 100644 index 8f7d7f8e8ada..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/compareLists/skeleton.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { SkeletonLoader, Table as T } from '@island.is/island-ui/core' - -export const Skeleton = () => { - return ( - <T.Row> - <T.Data> - <SkeletonLoader height={50} width="100%" borderRadius="large" /> - </T.Data> - <T.Data> - <SkeletonLoader height={50} width="100%" borderRadius="large" /> - </T.Data> - <T.Data> - <SkeletonLoader height={50} width="100%" borderRadius="large" /> - </T.Data> - <T.Data> - <SkeletonLoader height={50} width="100%" borderRadius="large" /> - </T.Data> - </T.Row> - ) -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/completeCollectionProcessing/finishCollectionProcess.graphql b/libs/portals/admin/signature-collection/src/screens/AllLists/components/completeCollectionProcessing/finishCollectionProcess.graphql deleted file mode 100644 index 0c91418e5015..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/completeCollectionProcessing/finishCollectionProcess.graphql +++ /dev/null @@ -1,5 +0,0 @@ -mutation processCollection($input: SignatureCollectionIdInput!) { - signatureCollectionAdminProcess(input: $input) { - success - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/completeCollectionProcessing/index.tsx b/libs/portals/admin/signature-collection/src/screens/AllLists/components/completeCollectionProcessing/index.tsx deleted file mode 100644 index 9d20f821e91e..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/completeCollectionProcessing/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { useLocale } from '@island.is/localization' -import { Box, Button, Text, toast } from '@island.is/island-ui/core' -import { m } from '../../../../lib/messages' -import { useState } from 'react' -import { Modal } from '@island.is/react/components' -import { useRevalidator } from 'react-router-dom' -import { useProcessCollectionMutation } from './finishCollectionProcess.generated' - -const ActionCompleteCollectionProcessing = ({ - collectionId, -}: { - collectionId: string -}) => { - const { formatMessage } = useLocale() - const [modalSubmitReviewIsOpen, setModalSubmitReviewIsOpen] = useState(false) - - const [processCollectionMutation, { loading }] = - useProcessCollectionMutation() - const { revalidate } = useRevalidator() - - const completeProcessing = async () => { - try { - const res = await processCollectionMutation({ - variables: { input: { collectionId } }, - }) - if (res.data?.signatureCollectionAdminProcess.success) { - toast.success(formatMessage(m.toggleCollectionProcessSuccess)) - setModalSubmitReviewIsOpen(false) - revalidate() - } else { - toast.error(formatMessage(m.toggleCollectionProcessError)) - } - } catch (e) { - toast.error(e.message) - } - } - - return ( - <Box marginTop={10}> - <Box display="flex" justifyContent="center"> - <Box> - <Button - icon="lockClosed" - iconType="outline" - colorScheme="destructive" - variant="text" - onClick={() => setModalSubmitReviewIsOpen(true)} - > - {formatMessage(m.completeCollectionProcessing)} - </Button> - </Box> - </Box> - <Modal - id="reviewComplete" - isVisible={modalSubmitReviewIsOpen} - title={formatMessage(m.completeCollectionProcessing)} - label={formatMessage(m.completeCollectionProcessing)} - onClose={() => setModalSubmitReviewIsOpen(false)} - closeButtonLabel={''} - > - <Box marginTop={5}> - <Text> - {formatMessage(m.completeCollectionProcessingModalDescription)} - </Text> - <Box display="flex" justifyContent="flexEnd" marginTop={5}> - <Button - iconType="outline" - variant="ghost" - colorScheme="destructive" - onClick={() => completeProcessing()} - loading={loading} - > - {formatMessage(m.completeCollectionProcessing)} - </Button> - </Box> - </Box> - </Modal> - </Box> - ) -} - -export default ActionCompleteCollectionProcessing diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/candidateLookup.graphql b/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/candidateLookup.graphql deleted file mode 100644 index be79d635dd1b..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/candidateLookup.graphql +++ /dev/null @@ -1,8 +0,0 @@ -query CandidateLookup($input: SignatureCollectionNationalIdInput!) { - signatureCollectionAdminCandidateLookup(input: $input) { - nationalId - name - canCreate - canCreateInfo - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/createCollection.graphql b/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/createCollection.graphql deleted file mode 100644 index 14c65bd362e3..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/createCollection.graphql +++ /dev/null @@ -1,5 +0,0 @@ -mutation CreateCollection($input: SignatureCollectionListInput!) { - signatureCollectionAdminCreate(input: $input) { - slug - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/index.tsx b/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/index.tsx deleted file mode 100644 index 0abdc305b6e2..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/index.tsx +++ /dev/null @@ -1,179 +0,0 @@ -import { - Box, - Text, - Button, - Stack, - Input, - AlertMessage, - toast, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../../../lib/messages' -import { useEffect, useState } from 'react' -import { Modal } from '@island.is/react/components' -import { InputController } from '@island.is/shared/form-fields' -import { Control, useForm } from 'react-hook-form' -import { useCandidateLookupLazyQuery } from './candidateLookup.generated' -import { setReason } from './utils' -import { useCreateCollectionMutation } from './createCollection.generated' - -const CreateCollection = ({ collectionId }: { collectionId: string }) => { - const { formatMessage } = useLocale() - const { control } = useForm() - - const [modalIsOpen, setModalIsOpen] = useState(false) - const [nationalIdInput, setNationalIdInput] = useState('') - const [nationalIdNotFound, setNationalIdNotFound] = useState(false) - const [name, setName] = useState('') - const [canCreate, setCanCreate] = useState(true) - const [canCreateErrorReason, setCanCreateErrorReason] = useState('') - - const [candidateLookup, { loading: loadingCandidate }] = - useCandidateLookupLazyQuery() - const [createCollection, { loading }] = useCreateCollectionMutation({ - variables: { - input: { - collectionId, - owner: { - name: name, - nationalId: nationalIdInput, - phone: '', - email: '', - }, - }, - }, - }) - - const createNewCollection = async () => { - try { - const createCollectionRes = await createCollection() - if (createCollectionRes.data?.signatureCollectionAdminCreate.slug) { - toast.success(formatMessage(m.createCollectionSuccess)) - setModalIsOpen(false) - } else { - toast.error(formatMessage(m.createCollectionSuccess)) - } - } catch (e) { - toast.error(e.message) - } - } - - useEffect(() => { - if (nationalIdInput.length === 10) { - candidateLookup({ - variables: { - input: { - nationalId: nationalIdInput, - }, - }, - }).then((res) => { - if (res.data?.signatureCollectionAdminCandidateLookup?.name) { - const { name, canCreate, canCreateInfo } = - res.data.signatureCollectionAdminCandidateLookup - - setName(name) - setCanCreate(canCreate) - setCanCreateErrorReason( - setReason(String(canCreateInfo)).defaultMessage, - ) - } else { - setName('') - setNationalIdNotFound(true) - } - }) - } else { - setName('') - setNationalIdInput('') - setNationalIdNotFound(false) - setCanCreate(true) - } - }, [nationalIdInput, modalIsOpen]) - - return ( - <Box> - <Box - display="flex" - justifyContent="flexEnd" - alignItems="flexEnd" - style={{ minWidth: '150px' }} - > - <Button - variant="ghost" - size="small" - nowrap - onClick={() => { - setModalIsOpen(true) - }} - > - {formatMessage(m.createCollection)} - </Button> - </Box> - <Modal - id="createCollection" - isVisible={modalIsOpen} - title={formatMessage(m.createCollection)} - onClose={() => { - setModalIsOpen(false) - setNationalIdInput('') - setName('') - setCanCreate(true) - }} - hideOnClickOutside={false} - closeButtonLabel={''} - label={''} - > - <Text marginBottom={5}> - {formatMessage(m.createCollectionModalDescription)} - </Text> - <Stack space={3}> - <InputController - control={control as unknown as Control} - type="tel" - id="candidateNationalId" - label={formatMessage(m.candidateNationalId)} - format="######-####" - defaultValue={nationalIdInput} - onChange={(v) => - setNationalIdInput(v.target.value.replace(/\W/g, '')) - } - loading={loadingCandidate} - error={ - nationalIdNotFound - ? formatMessage(m.candidateNationalIdNotFound) - : undefined - } - /> - <Input - name="candidateName" - label={formatMessage(m.candidateName)} - readOnly - value={name} - placeholder={loadingCandidate ? 'Sæki nafn...' : ''} - /> - </Stack> - {!canCreate && ( - <Box marginTop={3}> - <AlertMessage - type="error" - title={''} - message={canCreateErrorReason} - /> - </Box> - )} - <Box display="flex" justifyContent="center" marginY={5}> - <Button - onClick={() => { - createNewCollection() - }} - disabled={!canCreate} - loading={loading} - > - {formatMessage(m.createCollection)} - </Button> - </Box> - </Modal> - </Box> - ) -} - -export default CreateCollection diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/utils.ts b/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/utils.ts deleted file mode 100644 index 0d9721481396..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/createCollection/utils.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { createCollectionErrorMessages } from '../../../../lib/messages' - -export const enum ReasonKey { - UnderAge = 'underAge', - NoCitizenship = 'noCitizenship', - NotInArea = 'notInArea', - NotISResidency = 'notISResidency', - DeniedByService = 'deniedByService', - CollectionNotOpen = 'collectionNotOpen', - NoListToRemove = 'noListToRemove', - SignatureNotFound = 'signatureNotFound', - AlreadyOwner = 'alreadyOwner', - AlreadySigned = 'alreadySigned', - NotOwner = 'notOwner', -} - -export const setReason = (res: string) => { - switch (res) { - case ReasonKey.UnderAge: - return createCollectionErrorMessages.age - case ReasonKey.NoCitizenship: - return createCollectionErrorMessages.citizenship - case ReasonKey.NotISResidency: - return createCollectionErrorMessages.residency - case ReasonKey.CollectionNotOpen: - return createCollectionErrorMessages.active - case ReasonKey.AlreadyOwner: - return createCollectionErrorMessages.owner - default: - return createCollectionErrorMessages.deniedByService - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/emptyState/EmptyImgSmall.tsx b/libs/portals/admin/signature-collection/src/screens/AllLists/components/emptyState/EmptyImgSmall.tsx deleted file mode 100644 index c47ee2a171be..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/emptyState/EmptyImgSmall.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import * as React from 'react' - -export function EmptyImageSmall(props: React.SVGProps<SVGSVGElement>) { - return ( - <svg - viewBox="0 0 183 229" - fill="none" - xmlns="http://www.w3.org/2000/svg" - {...props} - > - <path - d="M83.0684 1.38595C79.6748 3.29128 78.4645 7.5926 80.3699 10.9862L87.4842 23.653L99.783 16.7513L92.6687 4.08449C90.7552 0.682693 86.462 -0.527562 83.0684 1.38595Z" - fill="#6A2EA0" - /> - <path - d="M127.284 36.9167L112.09 45.2985L108.754 47.1384L108.214 47.441L105.974 48.6758L89.6842 57.6709L86.4296 30.9063L86.405 30.9227C83.363 25.4029 85.3665 18.4685 90.8781 15.4265C96.3896 12.3845 103.332 14.388 106.374 19.8995H106.391L127.284 36.9167ZM106.374 227.344H153.893V130.957H106.374V227.344ZM1.76074 152.406H86.3396L106.382 130.965H20.716L1.76074 152.406Z" - fill="url(#paint0_linear_12691_2271)" - /> - <path - d="M19.1949 194.855C18.5161 194.855 17.9683 194.307 17.9683 193.628V152.398C17.9683 151.719 18.5161 151.171 19.1949 151.171C19.8736 151.171 20.4215 151.719 20.4215 152.398V193.628C20.4215 194.307 19.8654 194.855 19.1949 194.855Z" - fill="#6A2EA0" - /> - <path - d="M106.374 228.571H19.1949C18.5161 228.571 17.9683 228.023 17.9683 227.344V193.628C17.9683 192.95 18.5161 192.402 19.1949 192.402C19.8736 192.402 20.4215 192.95 20.4215 193.628V226.117H105.156V131.3C105.156 130.622 105.704 130.074 106.382 130.074C107.061 130.074 107.609 130.622 107.609 131.3V227.344C107.601 228.023 107.053 228.571 106.374 228.571Z" - fill="#6A2EA0" - /> - <path - d="M86.3315 153.633H1.76079C1.08207 153.633 0.53418 153.085 0.53418 152.406C0.53418 151.727 1.08207 151.18 1.76079 151.18H85.7918L130.694 101.306C130.931 101.044 131.258 100.897 131.61 100.897H181.647C182.138 100.897 182.588 101.191 182.776 101.649C182.964 102.107 182.866 102.63 182.522 102.982L154.22 131.815C153.991 132.053 153.672 132.183 153.345 132.183H117.373C116.694 132.183 116.146 131.636 116.146 130.957C116.146 130.278 116.694 129.73 117.373 129.73H152.83L178.72 103.35H132.149L87.2474 153.224C87.0102 153.486 86.6831 153.633 86.3315 153.633Z" - fill="#6A2EA0" - /> - <path - d="M117.372 132.183H20.7154C20.0367 132.183 19.4888 131.636 19.4888 130.957C19.4888 130.278 20.0367 129.73 20.7154 129.73H117.372C118.051 129.73 118.599 130.278 118.599 130.957C118.599 131.636 118.051 132.183 117.372 132.183Z" - fill="#6A2EA0" - /> - <path - d="M51.5608 131.66C51.0783 131.66 50.6122 131.366 50.4241 130.891L15.6047 44.4726C15.3512 43.843 15.6538 43.1315 16.2835 42.878C16.9131 42.6245 17.6246 42.9271 17.8781 43.5568L52.6974 129.976C52.9509 130.605 52.6484 131.317 52.0187 131.57C51.8715 131.636 51.7161 131.66 51.5608 131.66Z" - fill="#6A2EA0" - /> - <path - d="M51.5606 131.66C51.4379 131.66 51.3153 131.644 51.1926 131.603C50.6611 131.431 38.0352 127.343 32.9733 115.911C29.7842 108.706 30.3648 100.275 34.707 90.855C39.8097 79.7828 47.6027 71.6872 55.1341 63.8533C66.7133 51.8243 78.685 39.3701 81.4572 15.5575C81.5389 14.887 82.1359 14.4045 82.8146 14.4781C83.4852 14.5599 83.9676 15.165 83.894 15.8356C81.0238 40.4741 68.7577 53.2226 56.9004 65.5542C49.1646 73.5926 41.8622 81.1812 36.9312 91.8772C32.8997 100.619 32.3192 108.371 35.2058 114.897C39.8015 125.306 51.8059 129.223 51.9286 129.256C52.5746 129.461 52.9344 130.147 52.7299 130.793C52.5664 131.325 52.0839 131.66 51.5606 131.66Z" - fill="#6A2EA0" - /> - <path - d="M16.7413 45.2414C16.2671 45.2414 15.8173 44.9715 15.621 44.5054C15.3512 43.8839 15.6292 43.1643 16.2507 42.8863L82.1851 13.8565C82.8066 13.5867 83.5262 13.8647 83.8042 14.4862C84.0741 15.1077 83.796 15.8273 83.1745 16.1053L17.2402 45.1351C17.0766 45.2087 16.9049 45.2414 16.7413 45.2414Z" - fill="#6A2EA0" - /> - <path - d="M16.7415 49.371C19.6996 49.371 22.0976 46.9729 22.0976 44.0148C22.0976 41.0566 19.6996 38.6586 16.7415 38.6586C13.7833 38.6586 11.3853 41.0566 11.3853 44.0148C11.3853 46.9729 13.7833 49.371 16.7415 49.371Z" - fill="#6A2EA0" - /> - <path - d="M89.6757 58.9057C89.2423 58.9057 88.8253 58.6767 88.6045 58.2679C88.2774 57.6709 88.49 56.9268 89.087 56.5997L126.695 35.8455C127.284 35.5184 128.036 35.731 128.363 36.3279C128.69 36.9249 128.478 37.669 127.881 37.9961L90.2727 58.7503C90.0846 58.8567 89.8802 58.9057 89.6757 58.9057Z" - fill="#6A2EA0" - /> - <path - d="M86.4047 32.1494C85.9713 32.1494 85.5461 31.9286 85.3171 31.5279C81.948 25.4275 84.1723 17.7244 90.2726 14.3635C96.3403 11.019 103.986 13.1942 107.388 19.2209C107.511 19.4008 107.584 19.6134 107.601 19.8506C107.633 20.5293 107.118 21.1017 106.439 21.1344H106.423C105.973 21.1589 105.515 20.9136 105.295 20.5047C102.58 15.5901 96.373 13.8075 91.4665 16.5142C86.6092 19.1964 84.802 25.2967 87.386 30.1868C87.4269 30.2359 87.4596 30.2931 87.4923 30.3503C87.8194 30.9473 87.6068 31.6832 87.018 32.0022C86.8136 32.1003 86.6092 32.1494 86.4047 32.1494Z" - fill="#6A2EA0" - /> - <path - d="M96.2827 26.7931C95.8574 26.7931 95.4404 26.5641 95.2114 26.1634C94.8762 25.5746 95.0888 24.8223 95.6775 24.4952L105.76 18.8365C106.349 18.5094 107.101 18.7138 107.428 19.3026C107.764 19.8913 107.551 20.6437 106.962 20.9708L96.8796 26.6295C96.6915 26.744 96.4871 26.7931 96.2827 26.7931Z" - fill="#6A2EA0" - /> - <path - d="M1.40885 153.633C1.11446 153.633 0.820072 153.526 0.591105 153.314C0.0841059 152.864 0.0432189 152.087 0.501153 151.58L19.808 130.139C20.2578 129.64 21.0346 129.591 21.5416 130.049C22.0486 130.499 22.0895 131.276 21.6316 131.783L2.31654 153.224C2.07939 153.494 1.74412 153.633 1.40885 153.633Z" - fill="#6A2EA0" - /> - <path - d="M63.7288 132.183C63.1727 132.183 62.6657 131.799 62.5349 131.235C61.8153 128.087 61.4473 124.832 61.4473 121.569C61.4473 97.822 80.7623 78.507 104.509 78.507C120.554 78.507 135.167 87.3386 142.641 101.551C142.96 102.148 142.722 102.892 142.126 103.211C141.529 103.53 140.784 103.293 140.466 102.696C133.417 89.293 119.638 80.9602 104.501 80.9602C82.1116 80.9602 63.8923 99.1794 63.8923 121.569C63.8923 124.644 64.2358 127.71 64.9227 130.687C65.078 131.349 64.661 132.004 63.9986 132.159C63.9087 132.175 63.8187 132.183 63.7288 132.183Z" - fill="#6A2EA0" - /> - <path - d="M90.0193 116.246C92.9955 116.246 95.4082 113.833 95.4082 110.857C95.4082 107.881 92.9955 105.468 90.0193 105.468C87.0431 105.468 84.6304 107.881 84.6304 110.857C84.6304 113.833 87.0431 116.246 90.0193 116.246Z" - fill="#0061FF" - /> - <defs> - <linearGradient - id="paint0_linear_12691_2271" - x1="37.7605" - y1="67.9006" - x2="175.549" - y2="205.69" - gradientUnits="userSpaceOnUse" - > - <stop stopColor="#FF4C84" /> - <stop offset="0.1681" stopColor="#DF599A" /> - <stop offset="0.7433" stopColor="#7680E2" /> - <stop offset="1" stopColor="#4C90FF" /> - </linearGradient> - </defs> - </svg> - ) -} - -export default EmptyImageSmall diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/emptyState/index.tsx b/libs/portals/admin/signature-collection/src/screens/AllLists/components/emptyState/index.tsx deleted file mode 100644 index 6e5ffea1c708..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/emptyState/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Text, Box, GridColumn, GridRow } from '@island.is/island-ui/core' -import EmptyImageSmall from './EmptyImgSmall' - -interface Props { - title: string - description: string -} - -export const EmptyState = ({ title, description }: Props) => { - return ( - <Box paddingTop={[0, 3]}> - <GridRow rowGap={3}> - <GridColumn - span={['12/12', '12/12', '12/12', '3/12', '3/12']} - order={[2, 2, 2, 1, 1]} - > - <Box - paddingLeft={[0, 0, 0, 'containerGutter']} - display="flex" - justifyContent="center" - > - <EmptyImageSmall style={{ maxHeight: 229 }} /> - </Box> - </GridColumn> - <GridColumn - span={['12/12', '12/12', '10/12', '4/12']} - offset={['0', '1/12', '1/12', '1/12', '0']} - order={[1, 1, 1, 2, 2]} - > - <Box - height="full" - display="flex" - justifyContent="center" - flexDirection="column" - > - <Text marginBottom={1} variant="h3"> - {title} - </Text> - <Text marginBottom={1} as="p"> - {description} - </Text> - </Box> - </GridColumn> - </GridRow> - </Box> - ) -} - -export default EmptyState diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/reviewCandidates/index.tsx b/libs/portals/admin/signature-collection/src/screens/AllLists/components/reviewCandidates/index.tsx deleted file mode 100644 index 1a6d1a592aa3..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/reviewCandidates/index.tsx +++ /dev/null @@ -1,165 +0,0 @@ -import { Box, Button, Table as T, toast, Text } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../../../lib/messages' -import { useEffect, useState } from 'react' -import { Modal } from '@island.is/react/components' -import { useSignatureCollectionAdminRemoveCandidateMutation } from './removeCandidate.generated' -import { SignatureCollectionCandidate } from '@island.is/api/schema' -import { formatNationalId } from '@island.is/portals/core' - -const ReviewCandidates = ({ - candidates, -}: { - candidates: Array<SignatureCollectionCandidate> -}) => { - const { formatMessage } = useLocale() - const [modalIsOpen, setModalIsOpen] = useState(false) - const [confirmModalIsOpen, setConfirmModalIsOpen] = useState(false) - const [candidateInReview, setCandidateInReview] = - useState<SignatureCollectionCandidate>() - const [signatureCollectionAdminRemoveCandidateMutation, { loading }] = - useSignatureCollectionAdminRemoveCandidateMutation() - const [allCandidates, setAllCandidates] = - useState<Array<SignatureCollectionCandidate>>(candidates) - - useEffect(() => { - if (candidates && candidates.length > 0) { - setAllCandidates(candidates) - } - }, [candidates]) - - const removeFromList = async (candidateId: string) => { - try { - const res = await signatureCollectionAdminRemoveCandidateMutation({ - variables: { - input: { - candidateId: candidateId, - }, - }, - }) - - if ( - res.data && - res.data.signatureCollectionAdminRemoveCandidate.success - ) { - toast.success(formatMessage(m.unsignFromListSuccess)) - setAllCandidates( - allCandidates?.filter((candidate: SignatureCollectionCandidate) => { - return candidate.id !== candidateId - }), - ) - } - } catch (e) { - toast.error(e.message) - } - } - - return ( - <Box marginTop={8} display="flex" justifyContent="center"> - <Box - display="flex" - justifyContent="flexEnd" - alignItems="flexEnd" - style={{ minWidth: '150px' }} - > - <Button - variant="text" - size="small" - colorScheme="destructive" - nowrap - onClick={() => { - setModalIsOpen(true) - }} - > - {formatMessage(m.reviewCandidatesModalDescription)} - </Button> - </Box> - <Modal - id="reviewCandidatesModal" - isVisible={modalIsOpen} - title={formatMessage(m.reviewCandidatesModalDescription)} - onClose={() => { - setModalIsOpen(false) - }} - hideOnClickOutside={false} - closeButtonLabel={''} - label={''} - > - <Box marginTop={3} key={candidateInReview?.id}> - <T.Table> - <T.Head> - <T.Row> - <T.HeadData></T.HeadData> - <T.HeadData>{formatMessage(m.candidate)}</T.HeadData> - <T.HeadData>{formatMessage(m.nationalId)}</T.HeadData> - <T.HeadData></T.HeadData> - </T.Row> - </T.Head> - <T.Body> - {allCandidates.map( - (candidate: SignatureCollectionCandidate, key) => ( - <T.Row> - <T.Data span={3}>{key + 1}</T.Data> - <T.Data span={3}>{candidate.name}</T.Data> - <T.Data span={3}> - {formatNationalId(candidate.nationalId)} - </T.Data> - <T.Data style={{ display: 'flex', justifyContent: 'end' }}> - <Button - variant="utility" - icon="trash" - onClick={() => { - setConfirmModalIsOpen(true) - setCandidateInReview(candidate) - }} - > - {formatMessage(m.removeCandidateFromList)} - </Button> - </T.Data> - </T.Row> - ), - )} - </T.Body> - </T.Table> - </Box> - </Modal> - <Modal - id="confirmRemoveCandidateFromListModal" - isVisible={confirmModalIsOpen} - title={ - candidateInReview?.name + - ' - ' + - formatMessage(m.removeCandidateFromListModalDescription) - } - onClose={() => { - setConfirmModalIsOpen(false) - }} - hideOnClickOutside={false} - closeButtonLabel={''} - label={''} - > - <Text> - {formatMessage(m.confirmRemoveCandidateFromList) + - ' ' + - candidateInReview?.name + - ' ?'} - </Text> - <Box display="flex" justifyContent="center" marginY={5}> - <Button - colorScheme="destructive" - loading={loading} - onClick={() => { - removeFromList(candidateInReview?.id as string) - setCandidateInReview(undefined) - setConfirmModalIsOpen(false) - }} - > - {formatMessage(m.removeCandidateFromListButton)} - </Button> - </Box> - </Modal> - </Box> - ) -} - -export default ReviewCandidates diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/components/reviewCandidates/removeCandidate.graphql b/libs/portals/admin/signature-collection/src/screens/AllLists/components/reviewCandidates/removeCandidate.graphql deleted file mode 100644 index a5dbfca7d14a..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/components/reviewCandidates/removeCandidate.graphql +++ /dev/null @@ -1,8 +0,0 @@ -mutation signatureCollectionAdminRemoveCandidate( - $input: SignatureCollectionCandidateIdInput! -) { - signatureCollectionAdminRemoveCandidate(input: $input) { - success - reasons - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/graphql/getAllSignatureLists.graphql b/libs/portals/admin/signature-collection/src/screens/AllLists/graphql/getAllSignatureLists.graphql deleted file mode 100644 index d5b77c5ee82c..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/graphql/getAllSignatureLists.graphql +++ /dev/null @@ -1,31 +0,0 @@ -query allLists($input: SignatureCollectionIdInput!) { - signatureCollectionAdminLists(input: $input) { - id - title - area { - id - name - min - max - } - endTime - startTime - candidate { - id - nationalId - name - phone - email - } - collectors { - nationalId - name - } - active - collectionId - slug - numberOfSignatures - maxReached - reviewed - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/graphql/getCollectionStatus.graphql b/libs/portals/admin/signature-collection/src/screens/AllLists/graphql/getCollectionStatus.graphql deleted file mode 100644 index 9fd7a47cb0e2..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/graphql/getCollectionStatus.graphql +++ /dev/null @@ -1,25 +0,0 @@ -query collection { - signatureCollectionAdminCurrent { - id - endTime - startTime - isActive - isPresidential - name - status - areas { - id - name - min - max - } - candidates { - id - nationalId - name - phone - email - collectionId - } - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/AllLists/index.tsx b/libs/portals/admin/signature-collection/src/screens/AllLists/index.tsx deleted file mode 100644 index 624dadff74a1..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/AllLists/index.tsx +++ /dev/null @@ -1,358 +0,0 @@ -import { - ActionCard, - Box, - FilterInput, - GridColumn, - GridContainer, - GridRow, - Text, - Stack, - Pagination, - Filter, - FilterMultiChoice, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' -import { IntroHeader, PortalNavigation } from '@island.is/portals/core' -import { SignatureCollectionPaths } from '../../lib/paths' -import { useLoaderData, useNavigate } from 'react-router-dom' -import { useEffect, useState } from 'react' -import { SignatureCollectionList } from '@island.is/api/schema' -import format from 'date-fns/format' -import { signatureCollectionNavigation } from '../../lib/navigation' -import { - CollectionStatus, - Filters, - countryAreas, - pageSize, -} from '../../lib/utils' -import CompareLists from './components/compareLists' -import { format as formatNationalId } from 'kennitala' -import CreateCollection from './components/createCollection' -import electionsCommitteeLogo from '../../../assets/electionsCommittee.svg' -import nationalRegistryLogo from '../../../assets/nationalRegistry.svg' -import ActionCompleteCollectionProcessing from './components/completeCollectionProcessing' -import ListInfo from '../List/components/listInfoAlert' -import { ListsLoaderReturn } from './AllLists.loader' -import EmptyState from './components/emptyState' -import ReviewCandidates from './components/reviewCandidates' - -const Lists = ({ allowedToProcess }: { allowedToProcess: boolean }) => { - const { formatMessage } = useLocale() - const navigate = useNavigate() - - const { allLists, collectionStatus, collection } = - useLoaderData() as ListsLoaderReturn - - const [lists, setLists] = useState(allLists) - const [page, setPage] = useState(1) - // hasInReview is used to check if any list is in review - const [hasInReview, setHasInReview] = useState(false) - const [filters, setFilters] = useState<Filters>({ - area: [], - candidate: [], - input: '', - }) - const [candidates, setCandidates] = useState< - Array<{ - label: string - value: string - }> - >([]) - - useEffect(() => { - let filteredList: SignatureCollectionList[] = allLists - - filteredList = filteredList.filter((list) => { - return ( - // Filter by area - (filters.area.length === 0 || filters.area.includes(list.area.name)) && - // Filter by candidate - (filters.candidate.length === 0 || - filters.candidate.includes(list.candidate.name)) && - // Filter by input - (filters.input.length === 0 || - list.candidate.name - .toLowerCase() - .includes(filters.input.toLowerCase()) || - list.area.name.toLowerCase().includes(filters.input.toLowerCase()) || - formatNationalId(list.candidate.nationalId).includes(filters.input)) - ) - }) - - setPage(1) - setLists(filteredList) - }, [filters]) - - useEffect(() => { - // set candidates on initial load of lists - if (lists.length > 0) { - const candidates = lists - .map((list) => { - // mapping all lists to check if any are in review - if (!list.reviewed) { - setHasInReview(true) - } - return list.candidate.name - }) - .filter((value, index, self) => self.indexOf(value) === index) - .map((candidate) => { - return { - label: candidate, - value: candidate, - } - }) - - setCandidates(candidates) - } - }, []) - - return ( - <GridContainer> - <GridRow direction="row"> - <GridColumn - span={['12/12', '5/12', '5/12', '3/12']} - offset={['0', '7/12', '7/12', '0']} - > - <PortalNavigation - navigation={signatureCollectionNavigation} - title={formatMessage(m.signatureListsTitle)} - /> - </GridColumn> - <GridColumn - paddingTop={[5, 5, 5, 0]} - offset={['0', '0', '0', '1/12']} - span={['12/12', '12/12', '12/12', '8/12']} - > - <IntroHeader - title={formatMessage(m.signatureListsTitle)} - intro={formatMessage(m.signatureListsIntro)} - img={ - allowedToProcess ? electionsCommitteeLogo : nationalRegistryLogo - } - imgPosition="right" - imgHiddenBelow="sm" - /> - {collectionStatus !== CollectionStatus.InitialActive && ( - <ListInfo - type={ - collectionStatus === CollectionStatus.InReview && !hasInReview - ? 'success' - : undefined - } - message={formatMessage( - collectionStatus === CollectionStatus.InInitialReview - ? hasInReview - ? m.signatureCollectionInInitialReview - : m.signatureCollectionProcessing - : collectionStatus === CollectionStatus.Processed - ? m.signatureCollectionProcessed - : collectionStatus === CollectionStatus.Active - ? m.signatureCollectionActive - : collectionStatus === CollectionStatus.InReview && - hasInReview - ? m.signatureCollectionInReview - : m.signatureCollectionReviewDone, - )} - /> - )} - <GridRow marginBottom={5}> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <FilterInput - name="input" - placeholder={formatMessage(m.searchInAllListsPlaceholder)} - value={filters.input} - onChange={(value) => setFilters({ ...filters, input: value })} - backgroundColor="white" - /> - </GridColumn> - <GridColumn span={['12/12', '12/12', '12/12', '6/12']}> - <Box - display="flex" - justifyContent="spaceBetween" - marginTop={[2, 2, 2, 0]} - > - <Filter - labelClear="" - labelClose="" - labelResult="" - labelOpen={formatMessage(m.filter)} - labelClearAll={formatMessage(m.clearAllFilters)} - resultCount={lists.length} - variant="popover" - onFilterClear={() => { - setFilters({ - area: [], - candidate: [], - input: '', - }) - }} - > - <FilterMultiChoice - labelClear={formatMessage(m.clearFilter)} - categories={[ - { - id: 'area', - label: formatMessage(m.countryArea), - selected: filters.area, - filters: countryAreas, - }, - { - id: 'candidate', - label: formatMessage(m.candidate), - selected: filters.candidate, - filters: candidates, - }, - ]} - onChange={(event) => - setFilters({ - ...filters, - [event.categoryId]: event.selected, - }) - } - onClear={(categoryId) => - setFilters({ - ...filters, - [categoryId]: [], - }) - } - /> - </Filter> - {lists?.length > 0 && - allowedToProcess && - collectionStatus === CollectionStatus.InInitialReview && ( - <CreateCollection collectionId={collection?.id} /> - )} - </Box> - </GridColumn> - </GridRow> - {lists?.length > 0 ? ( - <> - <Box marginBottom={2}> - {filters.input.length > 0 || - filters.area.length > 0 || - filters.candidate.length > 0 - ? lists.length > 0 && ( - <Text variant="eyebrow"> - {formatMessage(m.uploadResultsHeader)}: {lists.length} - </Text> - ) - : allLists.length > 0 && ( - <Text variant="eyebrow"> - {formatMessage(m.totalListResults)}: {allLists.length} - </Text> - )} - </Box> - <Stack space={5}> - {lists - .slice(pageSize * (page - 1), pageSize * page) - .map((list: SignatureCollectionList) => { - return ( - <ActionCard - key={list.id} - eyebrow={ - formatMessage(m.listEndTime) + - ': ' + - format(new Date(list.endTime), 'dd.MM.yyyy') - } - heading={list.title} - text={formatMessage(m.collectionTitle)} - progressMeter={{ - currentProgress: list.numberOfSignatures ?? 0, - maxProgress: list.area.min, - withLabel: true, - }} - tag={ - list.reviewed - ? { - label: m.confirmListReviewed.defaultMessage, - variant: 'mint', - outlined: false, - } - : undefined - } - cta={ - (allowedToProcess && - collectionStatus !== - CollectionStatus.InitialActive) || - !allowedToProcess - ? { - label: formatMessage(m.viewList), - variant: 'text', - icon: 'arrowForward', - onClick: () => { - navigate( - SignatureCollectionPaths.SignatureList.replace( - ':id', - list.id, - ), - ) - }, - } - : undefined - } - /> - ) - })} - </Stack> - </> - ) : filters.input.length > 0 ? ( - <Box display="flex"> - <Text>{formatMessage(m.noListsFoundBySearch)}</Text> - <Box marginLeft={1}> - <Text variant="h5">{filters.input}</Text> - </Box> - </Box> - ) : ( - <Box marginTop={10}> - <EmptyState - title={formatMessage(m.noLists)} - description={formatMessage(m.noListsDescription)} - /> - </Box> - )} - {lists?.length > 0 && ( - <Box marginTop={5}> - <Pagination - totalItems={lists.length} - itemsPerPage={pageSize} - page={page} - renderLink={(page, className, children) => ( - <Box - cursor="pointer" - className={className} - onClick={() => setPage(page)} - component="button" - > - {children} - </Box> - )} - /> - </Box> - )} - {lists?.length > 0 && allowedToProcess && ( - <Box> - {(collectionStatus === CollectionStatus.InInitialReview || - collectionStatus === CollectionStatus.InReview) && ( - <CompareLists collectionId={collection?.id} /> - )} - - {!hasInReview && - collectionStatus === CollectionStatus.InInitialReview && ( - <ActionCompleteCollectionProcessing - collectionId={collection?.id} - /> - )} - </Box> - )} - - {lists?.length > 0 && ( - <ReviewCandidates candidates={collection?.candidates ?? []} /> - )} - </GridColumn> - </GridRow> - </GridContainer> - ) -} - -export default Lists diff --git a/libs/portals/admin/signature-collection/src/screens/List/List.loader.ts b/libs/portals/admin/signature-collection/src/screens/List/List.loader.ts deleted file mode 100644 index 174eb769cc41..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/List.loader.ts +++ /dev/null @@ -1,64 +0,0 @@ -import type { WrappedLoaderFn } from '@island.is/portals/core' -import { - ListbyidDocument, - ListbyidQuery, -} from './graphql/getSignatureList.generated' -import { - SignatureCollectionList, - SignatureCollectionSignature, -} from '@island.is/api/schema' -import { - ListStatusDocument, - ListStatusQuery, -} from './graphql/getListStatus.generated' -import { - SignaturesDocument, - SignaturesQuery, -} from './graphql/getListSignees.generated' - -export const listLoader: WrappedLoaderFn = ({ client }) => { - return async ({ - params, - }): Promise<{ - list: SignatureCollectionList - allSignees: SignatureCollectionSignature[] - listStatus: string - }> => { - const { data } = await client.query<ListbyidQuery>({ - query: ListbyidDocument, - fetchPolicy: 'network-only', - variables: { - input: { - listId: params.id, - }, - }, - }) - - const { data: signeesData } = await client.query<SignaturesQuery>({ - query: SignaturesDocument, - fetchPolicy: 'network-only', - variables: { - input: { - listId: params.id, - }, - }, - }) - - const { data: listStatusData } = await client.query<ListStatusQuery>({ - query: ListStatusDocument, - fetchPolicy: 'network-only', - variables: { - input: { - listId: params.id, - }, - }, - }) - - const list = data?.signatureCollectionAdminList ?? {} - const allSignees = signeesData?.signatureCollectionAdminSignatures ?? [] - const listStatus = - listStatusData?.signatureCollectionAdminListStatus?.status ?? '' - - return { list, allSignees, listStatus } - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/completeReview/index.tsx b/libs/portals/admin/signature-collection/src/screens/List/components/completeReview/index.tsx deleted file mode 100644 index f49093060319..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/completeReview/index.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { useLocale } from '@island.is/localization' -import { Box, Button, Text, toast } from '@island.is/island-ui/core' -import { m } from '../../../../lib/messages' -import { useState } from 'react' -import { Modal } from '@island.is/react/components' -import { useToggleListReviewMutation } from './toggleListReview.generated' -import { useRevalidator } from 'react-router-dom' -import { ListStatus } from '../../../../lib/utils' - -const ActionReviewComplete = ({ - listId, - listStatus, -}: { - listId: string - listStatus: string -}) => { - const { formatMessage } = useLocale() - const [modalSubmitReviewIsOpen, setModalSubmitReviewIsOpen] = useState(false) - const [toggleListReviewMutation, { loading }] = useToggleListReviewMutation() - const { revalidate } = useRevalidator() - const listReviewed = listStatus === ListStatus.Reviewed - const modalText = listReviewed - ? formatMessage(m.confirmListReviewedToggleBack) - : formatMessage(m.confirmListReviewed) - - const toggleReview = async () => { - try { - const res = await toggleListReviewMutation({ - variables: { - input: { - listId, - }, - }, - }) - if (res.data?.signatureCollectionAdminToggleListReview.success) { - toast.success(formatMessage(m.toggleReviewSuccess)) - setModalSubmitReviewIsOpen(false) - revalidate() - } else { - toast.error(formatMessage(m.toggleReviewError)) - } - } catch (e) { - toast.error(e.message) - } - } - - return ( - <Box marginTop={10}> - <Box display="flex" justifyContent="center"> - <Box> - <Button - iconType="outline" - variant="text" - disabled={ - listStatus !== ListStatus.Reviewed && - listStatus !== ListStatus.InReview - } - icon={listReviewed ? 'lockOpened' : 'lockClosed'} - colorScheme={listReviewed ? 'default' : 'destructive'} - onClick={() => setModalSubmitReviewIsOpen(true)} - > - {modalText} - </Button> - </Box> - </Box> - <Modal - id="toggleReviewComplete" - isVisible={modalSubmitReviewIsOpen} - title={modalText} - onClose={() => setModalSubmitReviewIsOpen(false)} - label={''} - closeButtonLabel={''} - > - <Box marginTop={5}> - <Text> - {listReviewed - ? formatMessage(m.listReviewedModalDescriptionToggleBack) - : formatMessage(m.listReviewedModalDescription)} - </Text> - <Box display="flex" justifyContent="flexEnd" marginTop={5}> - <Button - iconType="outline" - variant="ghost" - colorScheme="destructive" - onClick={() => toggleReview()} - loading={loading} - > - {modalText} - </Button> - </Box> - </Box> - </Modal> - </Box> - ) -} - -export default ActionReviewComplete diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/completeReview/toggleListReview.graphql b/libs/portals/admin/signature-collection/src/screens/List/components/completeReview/toggleListReview.graphql deleted file mode 100644 index a5466a5e9060..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/completeReview/toggleListReview.graphql +++ /dev/null @@ -1,5 +0,0 @@ -mutation toggleListReview($input: SignatureCollectionListIdInput!) { - signatureCollectionAdminToggleListReview(input: $input) { - success - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/extendDeadline/extendDeadline.graphql b/libs/portals/admin/signature-collection/src/screens/List/components/extendDeadline/extendDeadline.graphql deleted file mode 100644 index 0181ee6e72fa..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/extendDeadline/extendDeadline.graphql +++ /dev/null @@ -1,5 +0,0 @@ -mutation ExtendDeadline($input: SignatureCollectionExtendDeadlineInput!) { - signatureCollectionAdminExtendDeadline(input: $input) { - success - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/extendDeadline/index.tsx b/libs/portals/admin/signature-collection/src/screens/List/components/extendDeadline/index.tsx deleted file mode 100644 index c20a228d3860..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/extendDeadline/index.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import { useLocale } from '@island.is/localization' -import { - Box, - Button, - DatePicker, - Input, - toast, -} from '@island.is/island-ui/core' -import { m } from '../../../../lib/messages' -import { useEffect, useState } from 'react' -import { Modal } from '@island.is/react/components' -import format from 'date-fns/format' -import { useExtendDeadlineMutation } from './extendDeadline.generated' -import { useRevalidator } from 'react-router-dom' - -const ActionExtendDeadline = ({ - listId, - endTime, - allowedToProcess, -}: { - listId: string - endTime: string - allowedToProcess: boolean -}) => { - const { formatMessage } = useLocale() - const [modalChangeDateIsOpen, setModalChangeDateIsOpen] = useState(false) - const [endDate, setEndDate] = useState(endTime) - const [extendDeadlineMutation, { loading }] = useExtendDeadlineMutation() - const { revalidate } = useRevalidator() - - useEffect(() => { - setEndDate(endDate) - }, [endTime]) - - const extendDeadline = async (newEndDate: string) => { - try { - const res = await extendDeadlineMutation({ - variables: { - input: { - listId, - newEndDate: newEndDate, - }, - }, - }) - if (res.data?.signatureCollectionAdminExtendDeadline.success) { - toast.success(formatMessage(m.updateListEndTimeSuccess)) - revalidate() - } else { - toast.error(formatMessage(m.updateListEndTimeError)) - } - } catch (e) { - toast.error(e.message) - } - } - - return ( - <Box> - <Box display="flex" alignItems="flexEnd"> - <Input - name="endTime" - size="sm" - label={formatMessage(m.listEndTime)} - readOnly - value={format(new Date(endDate), 'dd.MM.yyyy HH:mm')} - /> - {allowedToProcess && ( - <Box marginLeft={2}> - <Button - icon="calendar" - iconType="outline" - variant="ghost" - onClick={() => setModalChangeDateIsOpen(true)} - ></Button> - </Box> - )} - </Box> - <Modal - id="extendDeadline" - isVisible={modalChangeDateIsOpen} - title={formatMessage(m.updateListEndTime)} - label={formatMessage(m.updateListEndTime)} - onClose={() => setModalChangeDateIsOpen(false)} - closeButtonLabel={''} - > - <Box marginTop={5}> - <DatePicker - locale="is" - label={formatMessage(m.listEndTime)} - selected={new Date(endDate)} - handleChange={(date) => setEndDate(new Date(date).toISOString())} - placeholderText="" - showTimeInput - /> - <Box display="flex" justifyContent="flexEnd" marginTop={5}> - <Button - loading={loading} - onClick={() => { - extendDeadline(endDate) - setModalChangeDateIsOpen(false) - }} - > - {formatMessage(m.updateListEndTime)} - </Button> - </Box> - </Box> - </Modal> - </Box> - ) -} - -export default ActionExtendDeadline diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/listInfoAlert/index.tsx b/libs/portals/admin/signature-collection/src/screens/List/components/listInfoAlert/index.tsx deleted file mode 100644 index 096024ead585..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/listInfoAlert/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Box, AlertMessage, AlertMessageType } from '@island.is/island-ui/core' - -const ListInfo = ({ - message, - type, -}: { - message: string - type?: AlertMessageType -}) => { - return ( - <Box marginBottom={5}> - <AlertMessage message={message} type={type ? type : 'info'} /> - </Box> - ) -} - -export default ListInfo diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/paperUpload/index.tsx b/libs/portals/admin/signature-collection/src/screens/List/components/paperUpload/index.tsx deleted file mode 100644 index dcd7664f7278..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/paperUpload/index.tsx +++ /dev/null @@ -1,193 +0,0 @@ -import { - Accordion, - Box, - Checkbox, - InputFileUpload, - Text, - AccordionItem, - UploadFile, - Button, - toast, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '../../../../lib/messages' -import { useState } from 'react' -import { format as formatNationalId } from 'kennitala' -import { - ListStatus, - createFileList, - downloadFile, - getFileData, -} from '../../../../lib/utils' -import { useBulkUploadMutation } from './paperUpload.generated' -import { useRevalidator } from 'react-router-dom' - -const PaperUpload = ({ - listId, - listStatus, -}: { - listId: string - listStatus: string -}) => { - const { formatMessage } = useLocale() - const [withPaperUpload, setWithPaperUpload] = useState(false) - const [fileList, setFileList] = useState<Array<UploadFile>>([]) - const [uploadResults, setUploadResults] = useState<any>() - const [uploadMutation] = useBulkUploadMutation() - const { revalidate } = useRevalidator() - - const paperUpload = async ( - data: Array<{ nationalId: string; pageNumber: number }>, - ) => { - try { - const res = await uploadMutation({ - variables: { - input: { - listId: listId, - upload: data, - }, - }, - }) - - if (res.data) { - setUploadResults(res.data?.signatureCollectionAdminBulkUploadSignatures) - revalidate() - } - } catch (e) { - toast.error(e.message) - } - } - - const onChange = async (newFile: File[]) => { - setFileList(createFileList(newFile, fileList)) - let data = await getFileData(newFile) - - data = data.map((d: { Kennitala: any; Bls: number }) => { - return { - nationalId: String(d.Kennitala).replace('-', ''), - pageNumber: d.Bls ?? 0, - } - }) - - paperUpload(data) - } - - return ( - <Box marginTop={10}> - <Box - background={withPaperUpload ? 'purple100' : 'white'} - padding={withPaperUpload ? 5 : 0} - paddingTop={withPaperUpload ? 3 : 0} - borderRadius="large" - > - <Box - border={withPaperUpload ? undefined : 'standard'} - paddingX={withPaperUpload ? 0 : 5} - paddingY={withPaperUpload ? 0 : 3} - borderRadius="large" - > - <Box display="flex" justifyContent="spaceBetween" alignItems="center"> - <Box - onClick={() => - listStatus === ListStatus.InReview - ? setWithPaperUpload(!withPaperUpload) - : undefined - } - > - <Checkbox - label={formatMessage(m.uploadFile)} - checked={withPaperUpload} - onChange={() => setWithPaperUpload(!withPaperUpload)} - disabled={listStatus !== ListStatus.InReview} - /> - </Box> - {withPaperUpload && ( - <Button - variant="utility" - icon="document" - onClick={() => downloadFile()} - > - {formatMessage(m.downloadTemplate)} - </Button> - )} - </Box> - </Box> - {withPaperUpload && ( - <> - <Box marginY={5}> - <Text>{formatMessage(m.uploadFileDescription)}</Text> - </Box> - <Box marginBottom={3}> - <InputFileUpload - fileList={fileList} - header={formatMessage(m.uploadHeader)} - description={formatMessage(m.uploadText)} - buttonLabel={formatMessage(m.uploadButton)} - onChange={onChange} - onRemove={() => setFileList([])} - accept=".xlsx" - multiple={false} - /> - </Box> - {fileList.length > 0 && ( - <Box marginTop={7} marginBottom={3}> - <Text variant="h4">{formatMessage(m.uploadResultsHeader)}</Text> - {uploadResults && Object.keys(uploadResults).length > 0 && ( - <Accordion dividerOnTop={false}> - <AccordionItem - id="uploadSuccess" - labelVariant="default" - label={ - formatMessage(m.nationalIdsSuccess) + - ' (' + - uploadResults.success.length + - ')' - } - > - {uploadResults.success.map((res: any, index: number) => { - return ( - <Text key={index} marginBottom={1}> - {formatNationalId(res.nationalId)} - </Text> - ) - })} - </AccordionItem> - <AccordionItem - id="uploadFailed" - labelVariant="default" - labelColor="red600" - label={ - formatMessage(m.nationalIdsError) + - ' (' + - uploadResults.failed.length + - ')' - } - > - {uploadResults.failed.map((res: any, index: number) => { - return ( - <Box - key={index} - display="flex" - justifyContent="spaceBetween" - marginBottom={1} - > - <Text marginBottom={1}> - {formatNationalId(res.nationalId)} - </Text> - <Text marginBottom={1}>{res.reason}</Text> - </Box> - ) - })} - </AccordionItem> - </Accordion> - )} - </Box> - )} - </> - )} - </Box> - </Box> - ) -} - -export default PaperUpload diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/paperUpload/paperUpload.graphql b/libs/portals/admin/signature-collection/src/screens/List/components/paperUpload/paperUpload.graphql deleted file mode 100644 index 01f08af5bfcb..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/paperUpload/paperUpload.graphql +++ /dev/null @@ -1,11 +0,0 @@ -mutation BulkUpload($input: SignatureCollectionListBulkUploadInput!) { - signatureCollectionAdminBulkUploadSignatures(input: $input) { - success { - nationalId - } - failed { - nationalId - reason - } - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/signees.tsx b/libs/portals/admin/signature-collection/src/screens/List/components/signees.tsx deleted file mode 100644 index 7b8171e68c6e..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/signees.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import { - Box, - Text, - Table as T, - Pagination, - Icon, - FilterInput, - GridRow, - GridColumn, -} from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import format from 'date-fns/format' -import { useEffect, useState } from 'react' -import { useLoaderData } from 'react-router-dom' -import { format as formatNationalId } from 'kennitala' -import { m } from '../../../lib/messages' -import { SignatureCollectionSignature as Signature } from '@island.is/api/schema' -import { pageSize } from '../../../lib/utils' -import SortSignees from './sortSignees' - -const Signees = ({ numberOfSignatures }: { numberOfSignatures: number }) => { - const { formatMessage } = useLocale() - - const { allSignees } = useLoaderData() as { allSignees: Signature[] } - const [signees, setSignees] = useState(allSignees) - - const [searchTerm, setSearchTerm] = useState('') - const [page, setPage] = useState(1) - - useEffect(() => { - setSignees(allSignees) - }, [allSignees]) - - useEffect(() => { - let filteredSignees: Signature[] = allSignees - - filteredSignees = filteredSignees.filter((s) => { - return ( - s.signee.name.toLowerCase().includes(searchTerm.toLowerCase()) || - formatNationalId(s.signee.nationalId).includes(searchTerm) || - s.signee.nationalId.includes(searchTerm) - ) - }) - - setPage(1) - setSignees(filteredSignees) - }, [searchTerm]) - - return ( - <Box marginTop={7}> - <Text variant="h3">{formatMessage(m.listSigneesHeader)}</Text> - - <GridRow marginTop={2} marginBottom={4}> - <GridColumn span={['12/12', '12/12', '6/12']}> - <FilterInput - name="searchSignee" - value={searchTerm} - onChange={(v) => setSearchTerm(v)} - placeholder={formatMessage(m.searchInListPlaceholder)} - backgroundColor="white" - /> - </GridColumn> - <GridColumn span={['12/12', '12/12', '6/12']}> - <Box - display="flex" - justifyContent="spaceBetween" - alignItems="flexEnd" - height="full" - marginTop={[1, 1, 0]} - > - <SortSignees - signees={signees} - setSignees={setSignees} - setPage={setPage} - /> - {searchTerm.length > 0 && signees.length > 0 - ? signees.length > 0 && ( - <Text variant="eyebrow" textAlign="right"> - {formatMessage(m.uploadResultsHeader)}: {signees.length} - </Text> - ) - : signees.length > 0 && ( - <Text variant="eyebrow" textAlign="right"> - {/* using numberOfSignatures coming from list info for true total number of signees */} - {formatMessage(m.totalListResults)}: {numberOfSignatures} - </Text> - )} - </Box> - </GridColumn> - </GridRow> - - {signees && signees.length > 0 ? ( - <Box marginTop={3}> - <T.Table> - <T.Head> - <T.Row> - <T.HeadData>{formatMessage(m.signeeDate)}</T.HeadData> - <T.HeadData>{formatMessage(m.signeeName)}</T.HeadData> - <T.HeadData>{formatMessage(m.signeeNationalId)}</T.HeadData> - <T.HeadData>{formatMessage(m.signeeAddress)}</T.HeadData> - <T.HeadData></T.HeadData> - </T.Row> - </T.Head> - <T.Body> - {signees - .slice(pageSize * (page - 1), pageSize * page) - .map((s) => { - return ( - <T.Row key={s.id}> - <T.Data text={{ variant: 'medium' }}> - {format(new Date(s.created), 'dd.MM.yyyy HH:mm')} - </T.Data> - <T.Data text={{ variant: 'medium' }}> - {s.signee.name} - </T.Data> - <T.Data text={{ variant: 'medium' }}> - {formatNationalId(s.signee.nationalId)} - </T.Data> - <T.Data text={{ variant: 'medium' }}> - {s.signee.address} - </T.Data> - <T.Data> - {!s.isDigital && ( - <Box display="flex"> - <Text>{s.pageNumber}</Text> - <Box marginLeft={1}> - <Icon - icon="document" - type="outline" - color="blue400" - /> - </Box> - </Box> - )} - </T.Data> - </T.Row> - ) - })} - </T.Body> - </T.Table> - - <Box marginTop={3}> - <Pagination - totalItems={signees.length} - itemsPerPage={pageSize} - page={page} - renderLink={(page, className, children) => ( - <Box - cursor="pointer" - className={className} - onClick={() => setPage(page)} - component="button" - > - {children} - </Box> - )} - /> - </Box> - </Box> - ) : searchTerm.length > 0 ? ( - <Box display="flex"> - <Text>{formatMessage(m.noSigneesFoundBySearch)}</Text> - <Box marginLeft={1}> - <Text variant="h5">{searchTerm}</Text> - </Box> - </Box> - ) : ( - <Text>{formatMessage(m.noSignees)}</Text> - )} - </Box> - ) -} - -export default Signees diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/skeleton.tsx b/libs/portals/admin/signature-collection/src/screens/List/components/skeleton.tsx deleted file mode 100644 index 83608fbe826c..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/skeleton.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Box, SkeletonLoader, Stack } from '@island.is/island-ui/core' - -const Skeleton = () => { - return ( - <Stack space={2}> - <SkeletonLoader height={70} width="100%" borderRadius="large" /> - <SkeletonLoader height={350} borderRadius="large" /> - <Box display="flex" justifyContent="spaceBetween"> - <SkeletonLoader height={70} width="48%" borderRadius="large" /> - <SkeletonLoader height={70} width="48%" borderRadius="large" /> - </Box> - <SkeletonLoader height={70} width="100%" borderRadius="large" /> - <Box display="flex" justifyContent="spaceBetween"> - <SkeletonLoader height={70} width="25%" borderRadius="large" /> - <SkeletonLoader height={70} width="25%" borderRadius="large" /> - </Box> - <Box marginTop={8}> - <SkeletonLoader height={250} borderRadius="large" /> - </Box> - </Stack> - ) -} - -export default Skeleton diff --git a/libs/portals/admin/signature-collection/src/screens/List/components/sortSignees/index.tsx b/libs/portals/admin/signature-collection/src/screens/List/components/sortSignees/index.tsx deleted file mode 100644 index d2d1405bfdbe..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/components/sortSignees/index.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { useLocale } from '@island.is/localization' -import { DropdownMenu } from '@island.is/island-ui/core' -import { m } from '../../../../lib/messages' -import { SignatureCollectionSignature as Signature } from '@island.is/api/schema' - -const SortSignees = ({ - signees, - setSignees, - setPage, -}: { - signees: Signature[] - setSignees: (signees: Signature[]) => void - setPage: (page: number) => void -}) => { - const { formatMessage } = useLocale() - - const createSortItem = ( - title: string, - compareFunction: ((a: Signature, b: Signature) => number) | undefined, - ) => ({ - title, - onClick: () => { - const sorted = [...signees] - sorted.sort(compareFunction) - setSignees(sorted) - setPage(1) - }, - }) - - return ( - <DropdownMenu - title={formatMessage(m.sortBy)} - icon="swapVertical" - items={[ - createSortItem(formatMessage(m.sortAlphabeticallyAsc), (a, b) => - a.signee.name.localeCompare(b.signee.name), - ), - createSortItem(formatMessage(m.sortAlphabeticallyDesc), (a, b) => - b.signee.name.localeCompare(a.signee.name), - ), - createSortItem(formatMessage(m.sortDateAsc), (a, b) => - a.created.localeCompare(b.created), - ), - createSortItem(formatMessage(m.sortDateDesc), (a, b) => - b.created.localeCompare(a.created), - ), - ]} - /> - ) -} - -export default SortSignees diff --git a/libs/portals/admin/signature-collection/src/screens/List/graphql/getListSignees.graphql b/libs/portals/admin/signature-collection/src/screens/List/graphql/getListSignees.graphql deleted file mode 100644 index 9a2d47778bc7..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/graphql/getListSignees.graphql +++ /dev/null @@ -1,15 +0,0 @@ -query Signatures($input: SignatureCollectionListIdInput!) { - signatureCollectionAdminSignatures(input: $input) { - id - listId - signee { - name - nationalId - address - } - isDigital - pageNumber - valid - created - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/List/graphql/getListStatus.graphql b/libs/portals/admin/signature-collection/src/screens/List/graphql/getListStatus.graphql deleted file mode 100644 index fc292026299c..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/graphql/getListStatus.graphql +++ /dev/null @@ -1,5 +0,0 @@ -query ListStatus($input: SignatureCollectionListIdInput!) { - signatureCollectionAdminListStatus(input: $input) { - status - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/List/graphql/getSignatureList.graphql b/libs/portals/admin/signature-collection/src/screens/List/graphql/getSignatureList.graphql deleted file mode 100644 index 13437862abed..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/graphql/getSignatureList.graphql +++ /dev/null @@ -1,31 +0,0 @@ -query listbyid($input: SignatureCollectionListIdInput!) { - signatureCollectionAdminList(input: $input) { - id - title - area { - id - name - min - max - } - endTime - startTime - candidate { - id - nationalId - name - phone - email - } - collectors { - nationalId - name - } - active - collectionId - slug - numberOfSignatures - maxReached - reviewed - } -} diff --git a/libs/portals/admin/signature-collection/src/screens/List/index.tsx b/libs/portals/admin/signature-collection/src/screens/List/index.tsx deleted file mode 100644 index 4610b450ad2d..000000000000 --- a/libs/portals/admin/signature-collection/src/screens/List/index.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import { IntroHeader, PortalNavigation } from '@island.is/portals/core' -import { useLoaderData } from 'react-router-dom' -import { SignatureCollectionList } from '@island.is/api/schema' -import { signatureCollectionNavigation } from '../../lib/navigation' -import { useLocale } from '@island.is/localization' -import { m } from '../../lib/messages' -import { - Box, - GridColumn, - GridContainer, - GridRow, - Text, -} from '@island.is/island-ui/core' -import Signees from './components/signees' -import ActionExtendDeadline from './components/extendDeadline' -import ActionReviewComplete from './components/completeReview' -import PaperUpload from './components/paperUpload' -import ListInfo from './components/listInfoAlert' -import electionsCommitteeLogo from '../../../assets/electionsCommittee.svg' -import nationalRegistryLogo from '../../../assets/nationalRegistry.svg' -import { format as formatNationalId } from 'kennitala' -import { ListStatus } from '../../lib/utils' - -export const List = ({ allowedToProcess }: { allowedToProcess: boolean }) => { - const { list, listStatus } = useLoaderData() as { - list: SignatureCollectionList - listStatus: string - } - const { formatMessage } = useLocale() - - return ( - <GridContainer> - <GridRow direction="row"> - <GridColumn - span={['12/12', '5/12', '5/12', '3/12']} - offset={['0', '7/12', '7/12', '0']} - > - <PortalNavigation - navigation={signatureCollectionNavigation} - title={formatMessage(m.signatureListsTitle)} - /> - </GridColumn> - <GridColumn - paddingTop={[5, 5, 5, 0]} - offset={['0', '0', '0', '1/12']} - span={['12/12', '12/12', '12/12', '8/12']} - > - {!!list && ( - <> - <IntroHeader - title={list.title} - intro={ - allowedToProcess - ? formatMessage(m.singleListIntro) - : formatMessage(m.singleListIntroManage) - } - img={ - allowedToProcess - ? electionsCommitteeLogo - : nationalRegistryLogo - } - imgPosition="right" - imgHiddenBelow="sm" - /> - - <ListInfo - message={ - listStatus === ListStatus.Extendable - ? formatMessage(m.listStatusExtendableAlert) - : listStatus === ListStatus.InReview - ? formatMessage(m.listStatusInReviewAlert) - : listStatus === ListStatus.Reviewed - ? formatMessage(m.listStatusReviewedStatusAlert) - : listStatus === ListStatus.Inactive - ? formatMessage(m.listStatusReviewedStatusAlert) - : formatMessage(m.listStatusActiveAlert) - } - type={ - listStatus === ListStatus.Reviewed ? 'success' : undefined - } - /> - {!!list.collectors?.length && ( - <Box marginBottom={5}> - <Text variant="h5">{formatMessage(m.collectors)}</Text> - {list.collectors?.map((collector) => ( - <Text variant="medium" key={collector.name}> - {collector.name + - ' ' + - '(' + - formatNationalId(collector.nationalId) + - ')'} - </Text> - ))} - </Box> - )} - <Box marginBottom={5}> - <Text variant="h5">{formatMessage(m.candidateNationalId)}</Text> - <Text variant="medium"> - {formatNationalId(list.candidate.nationalId)} - </Text> - </Box> - <ActionExtendDeadline - listId={list.id} - endTime={list.endTime} - allowedToProcess={ - allowedToProcess && listStatus === ListStatus.Extendable - } - /> - <Signees numberOfSignatures={list.numberOfSignatures ?? 0} /> - {allowedToProcess && ( - <> - <PaperUpload listId={list.id} listStatus={listStatus} /> - <ActionReviewComplete - listId={list.id} - listStatus={listStatus} - /> - </> - )} - </> - )} - </GridColumn> - </GridRow> - </GridContainer> - ) -} - -export default List diff --git a/libs/portals/form-system/graphql/src/lib/fragments/applicant.ts b/libs/portals/form-system/graphql/src/lib/fragments/applicant.ts index 9ee24b75a454..1b0d6b536cf1 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/applicant.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/applicant.ts @@ -2,7 +2,7 @@ import { gql } from '@apollo/client' import { LanguageFields } from './languageFields' export const ApplicantFragment = gql` - fragment Applicant on FormSystemFormApplicant { + fragment Applicant on FormSystemApplicant { id applicantType name { diff --git a/libs/portals/form-system/graphql/src/lib/fragments/form.ts b/libs/portals/form-system/graphql/src/lib/fragments/form.ts index 5b02e1a77936..f13c4769cb1b 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/form.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/form.ts @@ -1,11 +1,11 @@ import { gql } from '@apollo/client' import { LanguageFields } from './languageFields' import { CertificateTypeFragment } from './certificateType' -import { ApplicantFragment } from './applicant' import { FieldFragment } from './field' import { ScreenFragment } from './screen' import { SectionFragment } from './section' import { DependencyFragment } from './dependency' +import { FormApplicantFragment } from './formApplicant' export const FormFragment = gql` fragment Form on FormSystemForm { @@ -29,7 +29,7 @@ export const FormFragment = gql` ...CertificateType } applicants { - ...Applicant + ...FormApplicant } sections { ...Section @@ -46,7 +46,7 @@ export const FormFragment = gql` } ${LanguageFields} ${CertificateTypeFragment} - ${ApplicantFragment} + ${FormApplicantFragment} ${SectionFragment} ${ScreenFragment} ${FieldFragment} diff --git a/libs/portals/form-system/graphql/src/lib/fragments/formApplicant.ts b/libs/portals/form-system/graphql/src/lib/fragments/formApplicant.ts new file mode 100644 index 000000000000..cba98be731c9 --- /dev/null +++ b/libs/portals/form-system/graphql/src/lib/fragments/formApplicant.ts @@ -0,0 +1,13 @@ +import { gql } from '@apollo/client' +import { LanguageFields } from './languageFields' + +export const FormApplicantFragment = gql` + fragment FormApplicant on FormSystemFormApplicant { + id + applicantType + name { + ...LanguageFields + } + } + ${LanguageFields} +` diff --git a/libs/portals/form-system/graphql/src/lib/fragments/screen.ts b/libs/portals/form-system/graphql/src/lib/fragments/screen.ts index bed7864de022..bbfe309192ff 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/screen.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/screen.ts @@ -11,7 +11,7 @@ export const ScreenFragment = gql` } displayOrder isHidden - multiSet + multiset callRuleset fields { ...Field diff --git a/libs/portals/form-system/graphql/src/lib/fragments/section.ts b/libs/portals/form-system/graphql/src/lib/fragments/section.ts index 6d0b04a08689..7976a89bdd9f 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/section.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/section.ts @@ -14,6 +14,7 @@ export const SectionFragment = gql` screens { ...Screen } + sectionType } ${LanguageFields} ${ScreenFragment} diff --git a/libs/portals/form-system/graphql/src/lib/mutations/createApplicant.ts b/libs/portals/form-system/graphql/src/lib/mutations/createApplicant.ts new file mode 100644 index 000000000000..f022d315ae01 --- /dev/null +++ b/libs/portals/form-system/graphql/src/lib/mutations/createApplicant.ts @@ -0,0 +1,11 @@ +import { gql } from '@apollo/client' +import { ApplicantFragment } from '../fragments/applicant' + +export const CREATE_APPLICANT = gql` + mutation FormSystemCreateApplicant($input: FormSystemCreateApplicantInput!) { + formSystemCreateApplicant(input: $input) { + ...Applicant + } + } + ${ApplicantFragment} +` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/getApplication.ts b/libs/portals/form-system/graphql/src/lib/mutations/createApplication.ts similarity index 59% rename from libs/portals/form-system/graphql/src/lib/mutations/getApplication.ts rename to libs/portals/form-system/graphql/src/lib/mutations/createApplication.ts index b3b80aa991de..f046db4e6075 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/getApplication.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/createApplication.ts @@ -2,8 +2,8 @@ import { gql } from '@apollo/client' import { ApplicationFragment } from '../fragments/application' export const CREATE_APPLICATION = gql` - mutation FormSystemGetApplication($input: FormSystemGetApplicationInput!) { - formSystemGetApplication(input: $input) { + mutation FormSystemCreateApplication($input: FormSystemCreateApplicationInput!) { + formSystemCreateApplication(input: $input) { ...Application } } diff --git a/libs/portals/form-system/graphql/src/lib/mutations/createField.ts b/libs/portals/form-system/graphql/src/lib/mutations/createField.ts index d501544bff12..24d47845e3a7 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/createField.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/createField.ts @@ -1,11 +1,12 @@ import { gql } from '@apollo/client' -import { FormFragment } from '../fragments/form' +import { FieldFragment } from '../fragments/field' + export const CREATE_FIELD = gql` mutation FormSystemCreateField($input: FormSystemCreateFieldInput!) { formSystemCreateField(input: $input) { - ...Form + ...Field } } - ${FormFragment} + ${FieldFragment} ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/createScreen.ts b/libs/portals/form-system/graphql/src/lib/mutations/createScreen.ts index 324c883a1af3..b859fa5af5b9 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/createScreen.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/createScreen.ts @@ -1,11 +1,12 @@ import { gql } from '@apollo/client' -import { FormFragment } from '../fragments/form' +import { ScreenFragment } from '../fragments/screen' + export const CREATE_SCREEN = gql` mutation FormSystemCreateScreen($input: FormSystemCreateScreenInput!) { formSystemCreateScreen(input: $input) { - ...Form + ...Screen } } - ${FormFragment} + ${ScreenFragment} ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/deleteApplicant.ts b/libs/portals/form-system/graphql/src/lib/mutations/deleteApplicant.ts new file mode 100644 index 000000000000..db34306d5def --- /dev/null +++ b/libs/portals/form-system/graphql/src/lib/mutations/deleteApplicant.ts @@ -0,0 +1,7 @@ +import { gql } from '@apollo/client' + +export const DELETE_APPLICANT = gql` + mutation FormSystemDeleteApplicant($input: FormSystemDeleteApplicantInput!) { + formSystemDeleteApplicant(input: $input) + } +` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/deleteField.ts b/libs/portals/form-system/graphql/src/lib/mutations/deleteField.ts index 3f049e6babed..95e80d3116f4 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/deleteField.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/deleteField.ts @@ -2,6 +2,6 @@ import { gql } from '@apollo/client' export const DELETE_FIELD = gql` mutation DeleteField($input: FormSystemDeleteFieldInput!) { - deleteField(input: $input) + formSystemDeleteField(input: $input) } ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/deleteForm.ts b/libs/portals/form-system/graphql/src/lib/mutations/deleteForm.ts index 29eb4063c81a..473d1601504b 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/deleteForm.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/deleteForm.ts @@ -2,6 +2,6 @@ import { gql } from '@apollo/client' export const DELETE_FORM = gql` mutation FormSystemDeleteForm($input: FormSystemDeleteFormInput!) { - FormSystemDeleteForm(input: $input) + formSystemDeleteForm(input: $input) } ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/index.ts b/libs/portals/form-system/graphql/src/lib/mutations/index.ts index 5c8a05acfba6..301ca38f1152 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/index.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/index.ts @@ -11,7 +11,7 @@ export { DELETE_FORM } from './deleteForm' export { DELETE_LIST_ITEM } from './deleteListItem' export { DELETE_SCREEN } from './deleteScreen' export { DELETE_SECTION } from './deleteSection' -export { CREATE_APPLICATION } from './getApplication' +export { CREATE_APPLICATION } from './createApplication' export { UPDATE_LIST_ITEM } from './updateListItem' export { UPDATE_LIST_ITEM_DISPLAY_ORDER } from './updateListItemDisplayOrder' export { UPDATE_SCREEN } from './updateScreen' @@ -19,4 +19,7 @@ export { UPDATE_SCREEN_DISPLAY_ORDER } from './updateScreenDisplayOrder' export { UPDATE_SECTION } from './updateSection' export { UPDATE_SECTION_DISPLAY_ORDER } from './updateSectionDisplayOrder' export { UPDATE_FORM } from './updateForm' -export { GET_TRANSLATION } from './getTranslation' +export { CREATE_APPLICANT } from './createApplicant' +export { DELETE_APPLICANT } from './deleteApplicant' +export { UPDATE_APPLICANT } from './updateApplicant' + diff --git a/libs/portals/form-system/graphql/src/lib/mutations/updateApplicant.ts b/libs/portals/form-system/graphql/src/lib/mutations/updateApplicant.ts new file mode 100644 index 000000000000..670af06f5593 --- /dev/null +++ b/libs/portals/form-system/graphql/src/lib/mutations/updateApplicant.ts @@ -0,0 +1,7 @@ +import { gql } from '@apollo/client' + +export const UPDATE_APPLICANT = gql` + mutation FormSystemUpdateApplicant($input: FormSystemUpdateApplicantInput!) { + formSystemUpdateApplicant(input: $input) + } +` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/updateScreen.ts b/libs/portals/form-system/graphql/src/lib/mutations/updateScreen.ts index d163a849f645..9810e553dd39 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/updateScreen.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/updateScreen.ts @@ -1,7 +1,11 @@ import { gql } from '@apollo/client' +import { ScreenFragment } from '../fragments/screen' export const UPDATE_SCREEN = gql` mutation FormSystemUpdateScreen($input: FormSystemUpdateScreenInput!) { - formSystemUpdateScreen(input: $input) + formSystemUpdateScreen(input: $input) { + ...Screen + } } + ${ScreenFragment} ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/updateScreenDisplayOrder.ts b/libs/portals/form-system/graphql/src/lib/mutations/updateScreenDisplayOrder.ts index 055ecb2d88d3..b72d99be75c5 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/updateScreenDisplayOrder.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/updateScreenDisplayOrder.ts @@ -1,9 +1,9 @@ import { gql } from '@apollo/client' export const UPDATE_SCREEN_DISPLAY_ORDER = gql` - mutation FormSystemUpdateScreenDisplayOrder( - $input: FormSystemUpdateScreenDisplayOrderInput! + mutation FormSystemUpdateScreensDisplayOrder( + $input: FormSystemUpdateScreensDisplayOrderInput! ) { - formSystemUpdateScreenDisplayOrder(input: $input) + formSystemUpdateScreensDisplayOrder(input: $input) } ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/updateSection.ts b/libs/portals/form-system/graphql/src/lib/mutations/updateSection.ts index 5d7301a6b5cd..83d955df27ab 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/updateSection.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/updateSection.ts @@ -1,7 +1,11 @@ import { gql } from '@apollo/client' +import { SectionFragment } from '../fragments/section' export const UPDATE_SECTION = gql` mutation FormSystemUpdateSection($input: FormSystemUpdateSectionInput!) { - formSystemUpdateSection(input: $input) + formSystemUpdateSection(input: $input) { + ...Section + } } + ${SectionFragment} ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/updateSectionDisplayOrder.ts b/libs/portals/form-system/graphql/src/lib/mutations/updateSectionDisplayOrder.ts index 2eaea6bf5a2a..58df32199243 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/updateSectionDisplayOrder.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/updateSectionDisplayOrder.ts @@ -1,9 +1,9 @@ import { gql } from '@apollo/client' export const UPDATE_SECTION_DISPLAY_ORDER = gql` - mutation FormSystemUpdateSectionDisplayOrder( - $input: FormSystemUpdateSectionDisplayOrderInput! + mutation FormSystemUpdateSectionsDisplayOrder( + $input: FormSystemUpdateSectionsDisplayOrderDtoInput! ) { - formSystemUpdateSectionDisplayOrder(input: $input) + formSystemUpdateSectionsDisplayOrder(input: $input) } ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/getTranslation.ts b/libs/portals/form-system/graphql/src/lib/queries/getTranslation.ts similarity index 65% rename from libs/portals/form-system/graphql/src/lib/mutations/getTranslation.ts rename to libs/portals/form-system/graphql/src/lib/queries/getTranslation.ts index 03cf76e5c55e..02a217c51819 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/getTranslation.ts +++ b/libs/portals/form-system/graphql/src/lib/queries/getTranslation.ts @@ -1,7 +1,7 @@ import { gql } from '@apollo/client' export const GET_TRANSLATION = gql` - mutation FormSystemGetTranslation($input: FormSystemGetTranslationInput!) { + query FormSystemGetTranslation($input: FormSystemGetTranslationInput!) { formSystemGetTranslation(input: $input) { translations } diff --git a/libs/portals/form-system/graphql/src/lib/queries/index.ts b/libs/portals/form-system/graphql/src/lib/queries/index.ts index 465bee59210f..332d3904c92f 100644 --- a/libs/portals/form-system/graphql/src/lib/queries/index.ts +++ b/libs/portals/form-system/graphql/src/lib/queries/index.ts @@ -2,3 +2,4 @@ export { GET_APPLICATION } from './getApplication' export { GET_FORM } from './getForm' export { GET_FORMS } from './getForms' export { GET_ORGANIZATION } from './getOrganization' +export { GET_TRANSLATION } from './getTranslation' diff --git a/libs/portals/form-system/ui-components/src/lib/messages.ts b/libs/portals/form-system/ui-components/src/lib/messages.ts index 6264e61b735f..a2b3f3f3feb0 100644 --- a/libs/portals/form-system/ui-components/src/lib/messages.ts +++ b/libs/portals/form-system/ui-components/src/lib/messages.ts @@ -31,7 +31,7 @@ export const m = defineMessages({ }, nameEnglish: { id: 'portals-admin.form-system:name-english', - defaultMessage: 'Heiti (enska)', + defaultMessage: 'Heiti á ensku', }, applicationName: { id: 'portals-admin.form-system:application-name', @@ -39,7 +39,7 @@ export const m = defineMessages({ }, applicationNameEnglish: { id: 'portals-admin.form-system:application-name-english', - defaultMessage: 'Heiti umsóknar (enska)', + defaultMessage: 'Heiti umsóknar á ensku', }, description: { id: 'portals-admin.form-system:description', @@ -47,7 +47,7 @@ export const m = defineMessages({ }, descriptionEnglish: { id: 'portals-admin.form-system:description-english', - defaultMessage: 'Lýsing (enska)', + defaultMessage: 'Lýsing á ensku', }, daysUntilExpiration: { id: 'portals-admin.form-system:days-until-expiration', @@ -279,7 +279,7 @@ export const m = defineMessages({ }, buttonTextEnglish: { id: 'portals-admin.form-system:button-text-english', - defaultMessage: 'Hnappatexti (enska)', + defaultMessage: 'Hnappatexti á ensku', }, url: { id: 'portals-admin.form-system:url', @@ -303,7 +303,7 @@ export const m = defineMessages({ }, infoEnglish: { id: 'portals-admin.form-system:info-english', - defaultMessage: 'Upplýsingabóla (enska)', + defaultMessage: 'Upplýsingabóla á ensku', }, addListItem: { id: 'portals-admin.form-system:add-list-item', diff --git a/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx b/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx new file mode 100644 index 000000000000..f0a8d00adf77 --- /dev/null +++ b/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx @@ -0,0 +1,99 @@ +import { useMutation } from "@apollo/client" +import { useAuth } from "@island.is/auth/react" +import { useLocale, useLocalizedQuery } from "@island.is/localization" +import { Params, useNavigate, useParams } from "react-router-dom" +import { CREATE_APPLICATION, CREATE_FORM } from "@island.is/form-system/graphql" + + +export const FormsScreen = () => { + const { userInfo } = useAuth() + const { formatMessage } = useLocale() + const navigate = useNavigate() + const nationalId = userInfo?.profile?.nationalId + + // Get the slug and send it to the backend with the user nationalId to either get a [formGuids] or create a new form + // If the user has no forms, create a new form + // If the user has forms, get the forms and display them + + const { slug } = useParams() as Params + + // use the slug to make a query to the backend to get the formGuids + + if (!nationalId) { + return + } + + // const { + // data, + // loading, + // error: formsError, + // refetch + // } = useLocalizedQuery(CREATE_APPLICATION, { + // variables: { + // input: { + // slug: slug, + // nationalId: nationalId + // }, + // }, + // skip: !slug, + // fetchPolicy: 'cache-and-network' + // }) + + // if (loading) { + // return <div>Loading...</div> + // } + console.log('slug', slug) + const [createFormMutation, { error }] = useMutation( + CREATE_APPLICATION, + // { + // onCompleted({ createApplication }) { + // if (slug) { + // navigate(`../${slug}/${createApplication.formGuid}`) + // } + // } + // } + ) + const [formSystemCreateFormMutation] = useMutation(CREATE_FORM) + const data = async () => { + try { + // const data = await createFormMutation({ + // variables: { + // input: { + // slug: slug + // } + // } + // }) + // console.log(data) + } catch (err) { + console.error('Error creating form:', err.message) + } + } + data() + + + const createForm = () => { + // Graphql mutation to create form + } + + // if (data) { + // // check whether the data has an array of formGuids + // // if it does, display the list of forms + // // if it doesn't, create a new form from template and redirect to + // } + + return <>HOHO</> +} + +// const FormCard = () => { +// // Display form card +// // Date of last modified +// // Title of form +// // Description of form and/or state of form +// // Display amount of steps completed +// // Delete button +// // Open form button + +// return ( +// <FormsScreen /> +// ) +// } diff --git a/libs/portals/form-system/ui-components/src/screens/index.ts b/libs/portals/form-system/ui-components/src/screens/index.ts index 83d70e8613f3..9ab3abf64597 100644 --- a/libs/portals/form-system/ui-components/src/screens/index.ts +++ b/libs/portals/form-system/ui-components/src/screens/index.ts @@ -1,2 +1,3 @@ export { ExampleScreen } from './ExampleScreen/ExampleScreen' export { FormCards } from './FormsScreen/FormCards' +export { FormsScreen } from './FormsScreen/FormsScreen' diff --git a/libs/portals/shared-modules/delegations/src/components/delegations/incoming/DelegationIncomingModal/DelegationIncomingModal.graphql b/libs/portals/shared-modules/delegations/src/components/delegations/incoming/DelegationIncomingModal/DelegationIncomingModal.graphql deleted file mode 100644 index c653c65fe1ed..000000000000 --- a/libs/portals/shared-modules/delegations/src/components/delegations/incoming/DelegationIncomingModal/DelegationIncomingModal.graphql +++ /dev/null @@ -1,32 +0,0 @@ -fragment AuthCustomDelegation on AuthCustomDelegation { - validTo - scopes { - id - name - validTo - displayName - apiScope(lang: $lang) { - ...AuthApiScope - } - } - domain { - name - displayName - organisationLogoKey - organisationLogoUrl - } -} - -query AuthDelegationsIncoming($input: AuthDelegationsInput!, $lang: String) { - authDelegations(input: $input) { - id - type - from { - nationalId - name - } - ... on AuthCustomDelegation { - ...AuthCustomDelegation - } - } -} diff --git a/libs/portals/shared-modules/delegations/src/components/delegations/incoming/DelegationIncomingModal/DelegationIncomingModal.tsx b/libs/portals/shared-modules/delegations/src/components/delegations/incoming/DelegationIncomingModal/DelegationIncomingModal.tsx deleted file mode 100644 index 4a6fe199cc24..000000000000 --- a/libs/portals/shared-modules/delegations/src/components/delegations/incoming/DelegationIncomingModal/DelegationIncomingModal.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { useEffect } from 'react' -import { useAuth } from '@island.is/auth/react' -import { Box } from '@island.is/island-ui/core' - -import { useLocale } from '@island.is/localization' -import { formatNationalId } from '@island.is/portals/core' -import { Modal, ModalProps } from '@island.is/react/components' -import { IdentityCard } from '../../../IdentityCard/IdentityCard' -import { AccessListContainer } from '../../../access/AccessList/AccessListContainer/AccessListContainer' -import { useAuthScopeTreeLazyQuery } from '../../../access/AccessList/AccessListContainer/AccessListContainer.generated' -import { AuthCustomDelegationIncoming } from '../../../../types/customDelegation' -import { m } from '../../../../lib/messages' - -type DelegationIncomingModalProps = { - delegation?: AuthCustomDelegationIncoming -} & Pick<ModalProps, 'onClose' | 'isVisible'> - -export const DelegationIncomingModal = ({ - delegation, - onClose, - ...rest -}: DelegationIncomingModalProps) => { - const { formatMessage, lang } = useLocale() - const { userInfo } = useAuth() - const [getAuthScopeTree, { data: scopeTreeData, loading: scopeTreeLoading }] = - useAuthScopeTreeLazyQuery() - - useEffect(() => { - if (delegation) { - getAuthScopeTree({ - variables: { - input: { - domain: delegation.domain.name, - lang, - }, - }, - }) - } - }, [delegation, getAuthScopeTree, lang]) - - const { authScopeTree } = scopeTreeData || {} - const fromName = delegation?.from?.name - const fromNationalId = delegation?.from?.nationalId - const toName = userInfo?.profile.name - const toNationalId = userInfo?.profile.nationalId - - return ( - <Modal - id={`delegation-incoming-view-modal-${delegation?.id}`} - eyebrow={formatMessage(m.accessControl)} - title={formatMessage(m.accessControlAccess)} - label={formatMessage(m.accessControlAccess)} - {...rest} - onClose={onClose} - closeButtonLabel={formatMessage(m.closeModal)} - > - <Box - marginTop={[4, 4, 8]} - display="flex" - flexDirection="column" - rowGap={3} - > - <Box - width="full" - display="flex" - flexDirection={['column', 'column', 'column', 'row']} - rowGap={[3, 3, 3, 0]} - columnGap={[0, 0, 0, 3]} - > - {fromName && fromNationalId && ( - <IdentityCard - label={formatMessage(m.accessOwner)} - title={fromName} - description={formatNationalId(fromNationalId)} - color="blue" - /> - )} - {toName && toNationalId && ( - <IdentityCard - label={formatMessage(m.accessHolder)} - title={toName} - description={formatNationalId(toNationalId)} - color="purple" - /> - )} - </Box> - {delegation?.domain && ( - <IdentityCard - label={formatMessage(m.domain)} - title={delegation.domain.displayName} - imgSrc={delegation.domain.organisationLogoUrl} - /> - )} - </Box> - <AccessListContainer - delegation={delegation} - scopes={delegation?.scopes} - scopeTree={authScopeTree} - loading={scopeTreeLoading} - /> - </Modal> - ) -} diff --git a/libs/service-portal/documents/src/components/DocumentActionBar/DocumentActionBar.tsx b/libs/service-portal/documents/src/components/DocumentActionBar/DocumentActionBar.tsx deleted file mode 100644 index d8c1863e4dff..000000000000 --- a/libs/service-portal/documents/src/components/DocumentActionBar/DocumentActionBar.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import { - Icon, - Box, - BoxProps, - LoadingDots, - Button, -} from '@island.is/island-ui/core' -import { useSubmitMailAction } from '../../utils/useSubmitMailAction' -import * as styles from './DocumentActionBar.css' -import { GetDocumentListInput } from '@island.is/api/schema' -import { Tooltip, m } from '@island.is/service-portal/core' -import { useLocale } from '@island.is/localization' -import { ActiveDocumentType } from '../../lib/types' - -export type DocumentActionBarProps = { - onPrintClick?: () => void - onGoBack?: () => void - refetchInboxItems?: (input?: GetDocumentListInput) => void - spacing?: BoxProps['columnGap'] - documentId: string - archived?: boolean - bookmarked?: boolean - activeDocument?: ActiveDocumentType -} -export const DocumentActionBar: React.FC<DocumentActionBarProps> = ({ - onGoBack, - onPrintClick, - spacing = 1, - documentId, - bookmarked, - archived, - refetchInboxItems, - activeDocument, -}) => { - const { - submitMailAction, - archiveSuccess, - bookmarkSuccess, - loading, - dataSuccess, - } = useSubmitMailAction({ messageId: documentId }) - - const { formatMessage } = useLocale() - - const isBookmarked = - (bookmarked && !dataSuccess.unbookmark) || bookmarkSuccess - const isArchived = (archived && !dataSuccess.unarchive) || archiveSuccess - - const getDocumentLink = ( - document: ActiveDocumentType, - type: 'pdf' | 'html', - ) => { - const uri = - type === 'html' - ? `data:text/html,${document.document.html}` - : `data:application/pdf;base64,${document.document.content}` - return encodeURI(uri) - } - - return ( - <> - {onGoBack && ( - <Box> - <button - aria-label={formatMessage(m.closeActiveDocument)} - onClick={onGoBack} - > - <Icon color="blue400" icon="arrowBack" /> - </button> - </Box> - )} - <Box className={styles.filterBtns} display="flex" columnGap={spacing}> - {!loading && ( - <> - <Tooltip - text={formatMessage( - isArchived ? m.removeFromStorage : m.addToStorage, - )} - > - <Button - circle - icon="fileTrayEmpty" - iconType={isArchived ? 'filled' : 'outline'} - onClick={async () => { - await submitMailAction(isArchived ? 'unarchive' : 'archive') - if (refetchInboxItems) { - refetchInboxItems() - } - }} - size="medium" - colorScheme="light" - /> - </Tooltip> - <Tooltip - text={formatMessage( - isBookmarked ? m.removeFavorite : m.addFavorite, - )} - > - <Button - circle - icon="star" - iconType={isBookmarked ? 'filled' : 'outline'} - onClick={async () => { - await submitMailAction( - isBookmarked ? 'unbookmark' : 'bookmark', - ) - if (refetchInboxItems) { - refetchInboxItems() - } - }} - size="medium" - colorScheme="light" - /> - </Tooltip> - </> - )} - {loading && ( - <Box display="flex" alignItems="center"> - <LoadingDots /> - </Box> - )} - {activeDocument && - (activeDocument.document.content || activeDocument.document.html) && ( - <Tooltip as="span" text={formatMessage(m.download)}> - <a - download={`${activeDocument.subject}${ - activeDocument.document.html ? '.html' : '.pdf' - }`} - href={getDocumentLink( - activeDocument, - activeDocument.document.html ? 'html' : 'pdf', - )} - aria-label={formatMessage(m.getDocument)} - > - <Button - as="span" - unfocusable - circle - icon="download" - iconType="outline" - size="medium" - colorScheme="light" - /> - </a> - </Tooltip> - )} - {onPrintClick && ( - <Tooltip text={formatMessage(m.print)}> - <Button - circle - icon="print" - iconType={'outline'} - onClick={onPrintClick} - size="medium" - colorScheme="light" - /> - </Tooltip> - )} - </Box> - </> - ) -} diff --git a/libs/service-portal/documents/src/components/DocumentActionBar/index.ts b/libs/service-portal/documents/src/components/DocumentActionBar/index.ts deleted file mode 100644 index 2207357f17fd..000000000000 --- a/libs/service-portal/documents/src/components/DocumentActionBar/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { DocumentActionBar } from './DocumentActionBar' diff --git a/libs/service-portal/documents/src/components/DocumentFilter/DocumentsFilter.tsx b/libs/service-portal/documents/src/components/DocumentFilter/DocumentsFilter.tsx deleted file mode 100644 index da2790aab08e..000000000000 --- a/libs/service-portal/documents/src/components/DocumentFilter/DocumentsFilter.tsx +++ /dev/null @@ -1,266 +0,0 @@ -import React from 'react' -import { - Box, - DatePicker, - Checkbox, - FilterMultiChoice, - AccordionItem, - Accordion, - Input, - Hidden, - Text, -} from '@island.is/island-ui/core' -import { m, Filter } from '@island.is/service-portal/core' -import { useLocale, useNamespaces } from '@island.is/localization' -import { messages } from '../../utils/messages' -import * as styles from './DocumentsFilter.css' -import DocumentsFilterTags from './DocumentsFilterTags' -import isEqual from 'lodash/isEqual' -import { defaultFilterValues, FilterValuesType } from '../../utils/types' -import { - DocumentCategory, - DocumentSender, - DocumentType, -} from '@island.is/api/schema' - -interface Props { - filterValue: FilterValuesType - debounceChange: (e: any) => void - handleClearFilters: () => void - handleShowUnread: (value: boolean) => void - handleShowArchived: (value: boolean) => void - handleShowBookmarked: (value: boolean) => void - handleCategoriesChange: (values: string[]) => void - handleSendersChange: (values: string[]) => void - handleDateFromChange: (date: Date | null) => void - handleDateToChange: (date: Date | null) => void - clearCategories: () => void - clearSenders: () => void - categories: DocumentCategory[] - senders: DocumentSender[] - documentsLength: number -} -const DocumentsFilter = ({ - filterValue, - debounceChange, - handleClearFilters, - handleShowUnread, - handleShowArchived, - handleShowBookmarked, - handleCategoriesChange, - handleSendersChange, - handleDateFromChange, - handleDateToChange, - clearCategories, - clearSenders, - categories, - senders, - documentsLength, -}: Props) => { - useNamespaces('sp.documents') - const { formatMessage, lang } = useLocale() - - const hasActiveFilters = () => !isEqual(filterValue, defaultFilterValues) - - const documentsFoundText = () => - documentsLength === 1 || (lang === 'is' && documentsLength % 10 === 1) - ? messages.foundSingular - : messages.found - - const mapToFilterItem = ( - array: DocumentCategory[] | DocumentSender[] | DocumentType[], - ) => { - return array.map((item) => { - return { - label: item.name, - value: item.id, - } - }) - } - - const sendersAvailable = mapToFilterItem(senders) - const categoriesAvailable = mapToFilterItem(categories) - return ( - <> - <Filter - resultCount={0} - variant="popover" - align="left" - reverse - labelClear={formatMessage(m.clearFilter)} - labelClearAll={formatMessage(m.clearAllFilters)} - labelOpen={formatMessage(m.openFilter)} - labelClose={formatMessage(m.closeFilter)} - fullWidthInput - filterInput={ - <Input - placeholder={formatMessage(m.searchPlaceholder)} - name="rafraen-skjol-input" - size="xs" - onChange={debounceChange} - backgroundColor="blue" - icon={{ name: 'search' }} - /> - } - onFilterClear={handleClearFilters} - > - <Box - display="flex" - flexDirection="column" - justifyContent="spaceBetween" - paddingX={3} - className={styles.unreadFilter} - > - <Box paddingTop={3}> - <Checkbox - id="show-unread" - label={formatMessage(messages.onlyShowUnread)} - checked={filterValue.showUnread} - onChange={(e) => handleShowUnread(e.target.checked)} - /> - </Box> - <Box paddingTop={1}> - <Checkbox - id="show-bookmarked" - label={formatMessage(messages.onlyShowBookmarked)} - checked={filterValue.bookmarked} - onChange={(e) => handleShowBookmarked(e.target.checked)} - /> - </Box> - <Box paddingTop={1} paddingBottom={3}> - <Checkbox - id="show-archived" - label={formatMessage(messages.onlyShowArchived)} - checked={filterValue.archived} - onChange={(e) => handleShowArchived(e.target.checked)} - /> - </Box> - <Box - borderBottomWidth="standard" - borderColor="blue200" - width="full" - /> - </Box> - <FilterMultiChoice - labelClear={formatMessage(m.clearSelected)} - singleExpand={false} - onChange={({ categoryId, selected }) => { - if (categoryId === 'senders') { - handleSendersChange(selected) - } - if (categoryId === 'categories') { - handleCategoriesChange(selected) - } - }} - onClear={(categoryId) => { - if (categoryId === 'senders') { - clearSenders() - } - if (categoryId === 'categories') { - clearCategories() - } - }} - categories={[ - { - id: 'senders', - label: formatMessage(messages.institutionLabel), - selected: [...filterValue.activeSenders], - filters: sendersAvailable, - inline: false, - singleOption: false, - }, - { - id: 'categories', - label: formatMessage(messages.groupLabel), - selected: [...filterValue.activeCategories], - filters: categoriesAvailable, - inline: false, - singleOption: false, - }, - ]} - /> - <Box className={styles.dateFilter} paddingX={3}> - <Box - borderBottomWidth="standard" - borderColor="blue200" - width="full" - /> - <Box marginTop={1}> - <Accordion - dividerOnBottom={false} - dividerOnTop={false} - singleExpand={false} - > - <AccordionItem - key="date-accordion-item" - id="date-accordion-item" - label={formatMessage(m.datesLabel)} - labelUse="h2" - labelVariant="h5" - iconVariant="small" - > - <Box display="flex" flexDirection="column"> - <Box> - <DatePicker - label={formatMessage(m.datepickerFromLabel)} - placeholderText={formatMessage(m.datepickLabel)} - locale="is" - backgroundColor="blue" - size="xs" - selected={filterValue.dateFrom} - handleChange={handleDateFromChange} - appearInline - /> - </Box> - <Box marginTop={3}> - <DatePicker - label={formatMessage(m.datepickerToLabel)} - placeholderText={formatMessage(m.datepickLabel)} - locale="is" - backgroundColor="blue" - size="xs" - selected={filterValue.dateTo} - handleChange={handleDateToChange} - appearInline - minDate={filterValue.dateFrom || undefined} - /> - </Box> - </Box> - </AccordionItem> - </Accordion> - </Box> - </Box> - </Filter> - <Hidden print> - {hasActiveFilters() && ( - <Box display="flex" flexDirection="column" marginTop={4}> - <DocumentsFilterTags - filterValue={filterValue} - categories={categoriesAvailable} - senders={sendersAvailable} - handleCategoriesChange={handleCategoriesChange} - handleSendersChange={handleSendersChange} - handleDateFromChange={handleDateFromChange} - handleDateToChange={handleDateToChange} - handleShowUnread={handleShowUnread} - handleClearFilters={handleClearFilters} - handleShowArchived={handleShowArchived} - handleShowBookmarked={handleShowBookmarked} - /> - - <Text - variant="eyebrow" - as="h3" - dataTestId="doc-found-text" - marginTop={2} - >{`${documentsLength} ${formatMessage( - documentsFoundText(), - )}`}</Text> - </Box> - )} - </Hidden> - </> - ) -} - -export default DocumentsFilter diff --git a/libs/service-portal/documents/src/components/DocumentFilter/DocumentsFilterTags.tsx b/libs/service-portal/documents/src/components/DocumentFilter/DocumentsFilterTags.tsx deleted file mode 100644 index 90fb491bdf3c..000000000000 --- a/libs/service-portal/documents/src/components/DocumentFilter/DocumentsFilterTags.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { Box, Button } from '@island.is/island-ui/core' -import { useLocale, useNamespaces } from '@island.is/localization' -import React from 'react' -import FilterTag from '../FilterTag/FilterTag' -import { m } from '@island.is/service-portal/core' -import format from 'date-fns/format' -import { dateFormat } from '@island.is/shared/constants' -import { messages } from '../../utils/messages' -import { FilterValuesType } from '../../utils/types' - -interface Props { - filterValue: FilterValuesType - handleShowUnread: (value: boolean) => void - handleCategoriesChange: (values: string[]) => void - handleSendersChange: (values: string[]) => void - handleDateFromChange: (date: Date | null) => void - handleDateToChange: (date: Date | null) => void - handleClearFilters: () => void - handleShowArchived: (value: boolean) => void - handleShowBookmarked: (value: boolean) => void - categories: { label: string; value: string }[] - senders: { label: string; value: string }[] -} -const DocumentsFilterTags = ({ - filterValue, - handleClearFilters, - handleShowUnread, - handleCategoriesChange, - handleSendersChange, - handleDateFromChange, - handleDateToChange, - handleShowArchived, - handleShowBookmarked, - categories, - senders, -}: Props) => { - useNamespaces('sp.documents') - const { formatMessage } = useLocale() - - const getCategoryTitle = (id: string) => { - if (categories.length === 0) { - return '' - } - const category = categories?.find((item) => item.value === id) - return category?.label || '' - } - - const getSenderTitle = (id: string) => { - const sender = senders?.find((item) => item.value === id) - return sender?.label || '' - } - return ( - <Box display="flex" flexWrap="wrap" rowGap={1} alignItems="center"> - {filterValue.activeCategories.length > 0 && - filterValue.activeCategories.map((activecat) => ( - <FilterTag - onClick={() => - handleCategoriesChange( - filterValue.activeCategories.filter( - (item) => item !== activecat, - ), - ) - } - key={`cat-${activecat}`} - title={getCategoryTitle(activecat)} - /> - ))} - {filterValue.activeSenders.length > 0 && - filterValue.activeSenders.map((activeSender) => ( - <FilterTag - onClick={() => - handleSendersChange( - filterValue.activeSenders.filter( - (item) => item !== activeSender, - ), - ) - } - key={`sender-${activeSender}`} - title={getSenderTitle(activeSender)} - /> - ))} - {filterValue.dateFrom && ( - <FilterTag - onClick={() => handleDateFromChange(null)} - title={`${formatMessage(m.datepickerFromLabel)} - ${format( - filterValue.dateFrom, - dateFormat.is, - )}`} - /> - )} - {filterValue.dateTo && ( - <FilterTag - onClick={() => handleDateToChange(null)} - title={`${formatMessage(m.datepickerToLabel)} - ${format( - filterValue.dateTo, - dateFormat.is, - )}`} - /> - )} - {filterValue.showUnread && ( - <FilterTag - onClick={() => handleShowUnread(false)} - title={formatMessage(messages.onlyShowUnreadShort)} - /> - )} - {filterValue.archived && ( - <FilterTag - onClick={() => handleShowArchived(false)} - title={formatMessage(messages.onlyShowArchived)} - /> - )} - {filterValue.bookmarked && ( - <FilterTag - onClick={() => handleShowBookmarked(false)} - title={formatMessage(messages.onlyShowBookmarked)} - /> - )} - <Box marginLeft={1}> - <Button - icon="reload" - size="small" - variant="text" - onClick={handleClearFilters} - > - {formatMessage(m.clearFilter)} - </Button> - </Box> - </Box> - ) -} - -export default DocumentsFilterTags diff --git a/libs/service-portal/documents/src/components/DocumentHeader/DocumentHeader.tsx b/libs/service-portal/documents/src/components/DocumentHeader/DocumentHeader.tsx deleted file mode 100644 index 1a9f3b11afa6..000000000000 --- a/libs/service-portal/documents/src/components/DocumentHeader/DocumentHeader.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { useEffect, useRef } from 'react' -import { Box, Text } from '@island.is/island-ui/core' -import AvatarImage from '../DocumentLine/AvatarImage' -import { DocumentCategory, DocumentsV2Category } from '@island.is/api/schema' -import * as styles from './DocumentHeader.css' -import { - DocumentActionBar, - DocumentActionBarProps, -} from '../DocumentActionBar/DocumentActionBar' -import { helperStyles } from '@island.is/island-ui/theme' - -type DocumentHeaderProps = { - avatar?: string - sender?: string - date?: string - category?: DocumentCategory | DocumentsV2Category - actionBar?: DocumentActionBarProps - subject?: string -} - -export const DocumentHeader: React.FC<DocumentHeaderProps> = ({ - avatar, - sender, - date, - category, - actionBar, - subject, -}) => { - const wrapper = useRef<HTMLDivElement>(null) - - useEffect(() => { - if (wrapper.current) { - wrapper.current.focus() - } - }, [wrapper]) - - return ( - <Box tabIndex={0} outline="none" ref={wrapper} display="flex"> - <p className={helperStyles.srOnly} aria-live="assertive"> - {subject} - </p> - {avatar && <AvatarImage large img={avatar} background="blue100" />} - <Box - display="flex" - flexDirection="column" - justifyContent="spaceBetween" - marginBottom={4} - marginLeft={2} - > - {sender && ( - <Text variant="medium" fontWeight="semiBold"> - {sender} - </Text> - )} - <Box - className={styles.titleText} - display="flex" - justifyContent="flexStart" - alignItems="center" - > - {date && <Text variant="medium">{date}</Text>} - {category && ( - <Box className={styles.categoryDivider}> - <Text variant="medium">{category.name ?? ''}</Text> - </Box> - )} - </Box> - </Box> - {actionBar && ( - <Box className={styles.actionBarWrapper}> - <DocumentActionBar spacing={1} {...actionBar} /> - </Box> - )} - </Box> - ) -} diff --git a/libs/service-portal/documents/src/components/DocumentHeader/index.ts b/libs/service-portal/documents/src/components/DocumentHeader/index.ts deleted file mode 100644 index ac85f39138f7..000000000000 --- a/libs/service-portal/documents/src/components/DocumentHeader/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { DocumentHeader } from './DocumentHeader' diff --git a/libs/service-portal/documents/src/components/DocumentLine/DocumentLine.tsx b/libs/service-portal/documents/src/components/DocumentLine/DocumentLine.tsx deleted file mode 100644 index a7b4dc4f74c0..000000000000 --- a/libs/service-portal/documents/src/components/DocumentLine/DocumentLine.tsx +++ /dev/null @@ -1,320 +0,0 @@ -import cn from 'classnames' -import format from 'date-fns/format' -import { FC, useEffect, useRef, useState } from 'react' - -import { - Document, - DocumentDetails, - GetDocumentListInput, -} from '@island.is/api/schema' -import { Box, Text, LoadingDots, Icon } from '@island.is/island-ui/core' -import { dateFormat } from '@island.is/shared/constants' -import { m } from '@island.is/service-portal/core' -import * as styles from './DocumentLine.css' -import { gql, useLazyQuery } from '@apollo/client' -import { useLocale } from '@island.is/localization' -import { messages } from '../../utils/messages' -import AvatarImage from './AvatarImage' -import { - matchPath, - useNavigate, - useParams, - useLocation, -} from 'react-router-dom' -import { DocumentsPaths } from '../../lib/paths' -import { FavAndStash } from '../FavAndStash' -import { useSubmitMailAction } from '../../utils/useSubmitMailAction' -import { useIsChildFocusedorHovered } from '../../hooks/useIsChildFocused' -import { ActiveDocumentType } from '../../lib/types' - -interface Props { - documentLine: Document - img?: string - onClick?: (doc: ActiveDocumentType) => void - onError?: (error?: string) => void - onLoading?: (loading: boolean) => void - setSelectLine?: (id: string) => void - refetchInboxItems?: (input?: GetDocumentListInput) => void - active: boolean - asFrame?: boolean - includeTopBorder?: boolean - selected?: boolean - bookmarked?: boolean - archived?: boolean -} - -const GET_DOCUMENT_BY_ID = gql` - query getDocumentInboxLineQuery($input: GetDocumentInput!) { - getDocument(input: $input) { - html - content - url - } - } -` -export const DocumentLine: FC<Props> = ({ - documentLine, - img, - onClick, - onError, - onLoading, - setSelectLine, - refetchInboxItems, - active, - asFrame, - includeTopBorder, - bookmarked, - archived, - selected, -}) => { - const [hasFocusOrHover, setHasFocusOrHover] = useState(false) - const [hasAvatarFocus, setHasAvatarFocus] = useState(false) - const { formatMessage } = useLocale() - const navigate = useNavigate() - const location = useLocation() - const date = format(new Date(documentLine.date), dateFormat.is) - const { id } = useParams<{ - id: string - }>() - - const { - submitMailAction, - archiveSuccess, - bookmarkSuccess, - loading: postLoading, - } = useSubmitMailAction({ messageId: documentLine.id }) - - const wrapperRef = useRef(null) - const avatarRef = useRef(null) - - const isFocused = useIsChildFocusedorHovered(wrapperRef) - - const isAvatarFocused = useIsChildFocusedorHovered(avatarRef) - - useEffect(() => { - setHasFocusOrHover(isFocused) - }, [isFocused]) - - useEffect(() => { - setHasAvatarFocus(isAvatarFocused) - }, [isAvatarFocused]) - - useEffect(() => { - if (id === documentLine.id) { - onLineClick() - } - }, [id, documentLine]) - - const displayPdf = (docContent?: DocumentDetails) => { - if (onClick) { - onClick({ - document: - docContent || (getFileByIdData?.getDocument as DocumentDetails), - id: documentLine.id, - sender: documentLine.senderName, - subject: documentLine.subject, - senderNatReg: documentLine.senderNatReg, - downloadUrl: documentLine.url, - date: date, - img, - categoryId: documentLine.categoryId ?? undefined, - }) - window.scrollTo({ - top: 0, - behavior: 'smooth', - }) - } - } - - const [getDocument, { data: getFileByIdData, loading: fileLoading }] = - useLazyQuery(GET_DOCUMENT_BY_ID, { - variables: { - input: { - id: documentLine.id, - }, - }, - fetchPolicy: 'no-cache', - onCompleted: (data) => { - const docContent = data?.getDocument - if (asFrame) { - navigate( - DocumentsPaths.ElectronicDocumentSingle.replace( - ':id', - documentLine.id, - ), - ) - } else { - displayPdf(docContent) - if (onError) { - onError(undefined) - } - } - }, - onError: () => { - if (onError) { - onError( - formatMessage(messages.documentFetchError, { - senderName: documentLine.senderName, - }), - ) - } - }, - }) - - useEffect(() => { - if (onLoading) { - onLoading(fileLoading) - } - }, [fileLoading]) - - const onLineClick = async () => { - const pathName = location.pathname - const match = matchPath( - { - path: DocumentsPaths.ElectronicDocumentSingle, - }, - pathName, - ) - if (match?.params?.id && match?.params?.id !== documentLine?.id) { - navigate(DocumentsPaths.ElectronicDocumentsRoot, { replace: true }) - } - - getFileByIdData - ? displayPdf() - : await getDocument({ - variables: { input: { id: documentLine.id } }, - }) - } - - const unread = !documentLine.opened - const isBookmarked = bookmarked || bookmarkSuccess - const isArchived = archived || archiveSuccess - - return ( - <Box className={styles.wrapper} ref={wrapperRef}> - <Box - display="flex" - position="relative" - borderColor="blue200" - borderBottomWidth="standard" - borderTopWidth={includeTopBorder ? 'standard' : undefined} - paddingX={2} - width="full" - className={cn(styles.docline, { - [styles.active]: active, - [styles.unread]: unread, - })} - > - <div ref={avatarRef}> - <AvatarImage - img={img} - onClick={(e) => { - e.stopPropagation() - if (documentLine.id && setSelectLine) { - setSelectLine(documentLine.id) - } - }} - avatar={ - (hasAvatarFocus || selected) && !asFrame ? ( - <Box - display="flex" - alignItems="center" - justifyContent="center" - background={selected ? 'blue400' : 'blue300'} - borderRadius="circle" - className={styles.checkCircle} - > - <Icon icon="checkmark" color="white" type="filled" /> - </Box> - ) : undefined - } - background={ - hasAvatarFocus - ? asFrame - ? 'white' - : 'blue200' - : documentLine.opened - ? 'blue100' - : 'white' - } - /> - </div> - <Box - width="full" - display="flex" - flexDirection="column" - paddingLeft={2} - minWidth={0} - > - {active && <div className={styles.fakeBorder} />} - <Box display="flex" flexDirection="row" justifyContent="spaceBetween"> - <Text variant="small" truncate> - {documentLine.senderName} - </Text> - <Text variant="small">{date}</Text> - </Box> - <Box display="flex" flexDirection="row" justifyContent="spaceBetween"> - <button - onClick={async () => onLineClick()} - aria-label={formatMessage(m.openDocumentAriaLabel, { - subject: documentLine.subject, - })} - type="button" - id={active ? `button-${documentLine.id}` : undefined} - className={styles.docLineButton} - > - <Text - fontWeight={unread ? 'medium' : 'regular'} - color="blue400" - truncate - > - {documentLine.subject} - </Text> - </button> - {(hasFocusOrHover || isBookmarked || isArchived) && - !postLoading && - !asFrame && ( - <FavAndStash - bookmarked={isBookmarked} - archived={isArchived} - onFav={ - isBookmarked || hasFocusOrHover - ? async (e) => { - e.stopPropagation() - await submitMailAction( - isBookmarked ? 'unbookmark' : 'bookmark', - ) - if (refetchInboxItems) { - refetchInboxItems() - } - } - : undefined - } - onStash={ - isArchived || hasFocusOrHover - ? async (e) => { - e.stopPropagation() - await submitMailAction( - isArchived ? 'unarchive' : 'archive', - ) - if (refetchInboxItems) { - refetchInboxItems() - } - } - : undefined - } - /> - )} - {(postLoading || (asFrame && fileLoading)) && ( - <Box display="flex" alignItems="center"> - <LoadingDots single /> - </Box> - )} - </Box> - </Box> - </Box> - </Box> - ) -} - -export default DocumentLine diff --git a/libs/service-portal/documents/src/components/DocumentRenderer/DocumentRenderer.tsx b/libs/service-portal/documents/src/components/DocumentRenderer/DocumentRenderer.tsx deleted file mode 100644 index e5a9761161ad..000000000000 --- a/libs/service-portal/documents/src/components/DocumentRenderer/DocumentRenderer.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { HtmlDocument } from './HTMLDocument' -import { PdfDocWithModal } from './PdfDocument' -import { UrlDocument } from './UrlDocment' -import NoPDF from '../NoPDF/NoPDF' -import { messages } from '../../utils/messages' -import { ActiveDocumentType } from '../../lib/types' -import { useLocale } from '@island.is/localization' -import { customUrl } from '../../utils/customUrlHandler' - -const parseDocmentType = (document: ActiveDocumentType) => { - const doc = document.document - const overviewUrl = document.downloadUrl - - if (doc.html && doc.html.length > 0) { - return 'html' - } - if (doc.content && doc.content.length > 0) { - return 'pdf' - } - if ((doc.url && doc.url.length > 0) || overviewUrl) { - return 'url' - } - return 'unknown' -} - -type DocumentRendererProps = { - document: ActiveDocumentType -} - -export const DocumentRenderer: React.FC<DocumentRendererProps> = ({ - document, -}) => { - const { formatMessage } = useLocale() - const type = parseDocmentType(document) - - if (type === 'unknown') return <NoPDF text={formatMessage(messages.error)} /> - - if (type === 'html') { - return <HtmlDocument html={document.document.html} /> - } - - if (type === 'pdf') { - return <PdfDocWithModal document={document} /> - } - - if (type === 'url') { - const docUrl = customUrl(document) - - return <UrlDocument url={docUrl} /> - } - - return <NoPDF /> -} diff --git a/libs/service-portal/documents/src/components/DocumentRenderer/index.ts b/libs/service-portal/documents/src/components/DocumentRenderer/index.ts deleted file mode 100644 index 1eaca774e4dd..000000000000 --- a/libs/service-portal/documents/src/components/DocumentRenderer/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { DocumentRenderer } from './DocumentRenderer' diff --git a/libs/service-portal/documents/src/components/OverviewDisplay/DesktopOverview.tsx b/libs/service-portal/documents/src/components/OverviewDisplay/DesktopOverview.tsx deleted file mode 100644 index bd0feea8aa7e..000000000000 --- a/libs/service-portal/documents/src/components/OverviewDisplay/DesktopOverview.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { FC } from 'react' -import { m } from '@island.is/service-portal/core' -import { Box, LoadingDots } from '@island.is/island-ui/core' -import { DocumentCategory } from '@island.is/api/schema' -import { useLocale, useNamespaces } from '@island.is/localization' -import { useUserInfo } from '@island.is/auth/react' -import { DocumentRenderer } from '../DocumentRenderer' -import { DocumentHeader } from '../DocumentHeader' -import { downloadFile } from '../../utils/downloadDocument' -import { ActiveDocumentType } from '../../lib/types' -import * as styles from './OverviewDisplay.css' -import NoPDF from '../NoPDF/NoPDF' -import { SERVICE_PORTAL_HEADER_HEIGHT_LG } from '@island.is/service-portal/constants' - -interface Props { - activeDocument: ActiveDocumentType | null - onRefetch: () => void - activeArchive: boolean - activeBookmark: boolean - loading?: boolean - category?: DocumentCategory -} - -export const DesktopOverview: FC<Props> = ({ - activeDocument, - onRefetch, - activeArchive, - activeBookmark, - category, - loading, -}) => { - useNamespaces('sp.documents') - const userInfo = useUserInfo() - const { formatMessage } = useLocale() - - if (loading) { - return ( - <Box - position="sticky" - style={{ top: SERVICE_PORTAL_HEADER_HEIGHT_LG + 50 }} - paddingLeft={8} - > - <Box - display="flex" - alignItems="center" - justifyContent="center" - paddingTop={6} - > - <LoadingDots /> - </Box> - </Box> - ) - } - - if (!activeDocument) { - return <NoPDF /> - } - - return ( - <Box - marginLeft={8} - marginTop={3} - padding={5} - borderRadius="large" - background="white" - className={styles.docWrap} - > - <DocumentHeader - avatar={activeDocument.img} - sender={activeDocument.sender} - date={activeDocument.date} - category={category} - subject={formatMessage(m.activeDocumentOpenAriaLabel, { - subject: activeDocument.subject, - })} - actionBar={{ - activeDocument: activeDocument, - documentId: activeDocument.id, - archived: activeArchive, - bookmarked: activeBookmark, - refetchInboxItems: onRefetch, - onPrintClick: activeDocument - ? () => downloadFile(activeDocument, userInfo) - : undefined, - }} - /> - <Box>{<DocumentRenderer document={activeDocument} />}</Box> - {activeDocument?.id && ( - <Box className={styles.reveal}> - <button - onClick={() => { - document.getElementById(`button-${activeDocument?.id}`)?.focus() - }} - > - {formatMessage(m.backToList)} - </button> - </Box> - )} - </Box> - ) -} - -export default DesktopOverview diff --git a/libs/service-portal/documents/src/components/OverviewDisplay/MobileOverview.tsx b/libs/service-portal/documents/src/components/OverviewDisplay/MobileOverview.tsx deleted file mode 100644 index bbef2d91b82a..000000000000 --- a/libs/service-portal/documents/src/components/OverviewDisplay/MobileOverview.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { FC } from 'react' -import { LoadModal, m } from '@island.is/service-portal/core' -import { Box, Text, GridColumn, GridRow } from '@island.is/island-ui/core' -import { DocumentCategory } from '@island.is/api/schema' -import { useLocale, useNamespaces } from '@island.is/localization' -import { useUserInfo } from '@island.is/auth/react' -import { DocumentRenderer } from '../../components/DocumentRenderer' -import { DocumentHeader } from '../../components/DocumentHeader' -import { DocumentActionBar } from '../../components/DocumentActionBar' -import { downloadFile } from '../../utils/downloadDocument' -import { ActiveDocumentType } from '../../lib/types' -import FocusLock from 'react-focus-lock' -import * as styles from './OverviewDisplay.css' - -interface Props { - activeDocument: ActiveDocumentType | null - onPressBack: () => void - onRefetch: () => void - activeArchive: boolean - activeBookmark: boolean - loading?: boolean - category?: DocumentCategory -} - -export const MobileOverview: FC<Props> = ({ - activeDocument, - onPressBack, - onRefetch, - activeArchive, - activeBookmark, - category, - loading, -}) => { - useNamespaces('sp.documents') - const userInfo = useUserInfo() - const { formatMessage } = useLocale() - - if (loading) { - return <LoadModal /> - } - - if (!activeDocument) { - return null - } - - return ( - <GridRow> - <GridColumn span="12/12" position="relative"> - <FocusLock autoFocus={false}> - <Box className={styles.modalBase}> - <Box className={styles.modalHeader}> - <DocumentActionBar - onGoBack={onPressBack} - documentId={activeDocument.id} - archived={activeArchive} - bookmarked={activeBookmark} - refetchInboxItems={onRefetch} - activeDocument={activeDocument} - onPrintClick={ - activeDocument - ? () => downloadFile(activeDocument, userInfo) - : undefined - } - /> - </Box> - <Box className={styles.modalContent}> - <DocumentHeader - avatar={activeDocument.img} - sender={activeDocument.sender} - date={activeDocument.date} - category={category} - subject={formatMessage(m.activeDocumentOpenAriaLabel, { - subject: activeDocument.subject, - })} - /> - <Text variant="h3" as="h3" marginBottom={3}> - {activeDocument?.subject} - </Text> - {<DocumentRenderer document={activeDocument} />} - </Box> - </Box> - </FocusLock> - </GridColumn> - </GridRow> - ) -} - -export default MobileOverview diff --git a/libs/service-portal/documents/src/components/OverviewDisplay/OverviewDocumentDisplay.tsx b/libs/service-portal/documents/src/components/OverviewDisplay/OverviewDocumentDisplay.tsx deleted file mode 100644 index a6602e59b723..000000000000 --- a/libs/service-portal/documents/src/components/OverviewDisplay/OverviewDocumentDisplay.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { FC } from 'react' -import { theme } from '@island.is/island-ui/theme' -import { DocumentCategory } from '@island.is/api/schema' -import { ActiveDocumentType } from '../../lib/types' -import useWindowSize from 'react-use/lib/useWindowSize' -import DesktopOverview from './DesktopOverview' -import MobileOverview from './MobileOverview' -import NoPDF from '../NoPDF/NoPDF' - -export interface Props { - activeDocument: ActiveDocumentType | null - onPressBack: () => void - onRefetch: () => void - activeArchive: boolean - activeBookmark: boolean - loading?: boolean - error?: { - message?: string - code: 'list' | 'single' - } - category?: DocumentCategory -} - -export const DocumentDisplay: FC<Props> = (props) => { - const { width } = useWindowSize() - - const isDesktop = width > theme.breakpoints.lg - - if (props.error?.message) { - if (props.error?.code === 'single' && !isDesktop) { - return null - } - return <NoPDF text={props.error?.message} error /> - } - - if (isDesktop) { - const { onPressBack, ...deskProps } = props - return <DesktopOverview {...deskProps} /> - } - - return <MobileOverview {...props} /> -} - -export default DocumentDisplay diff --git a/libs/service-portal/documents/src/screens/Overview/Overview.tsx b/libs/service-portal/documents/src/screens/Overview/Overview.tsx deleted file mode 100644 index ffe87e0176a7..000000000000 --- a/libs/service-portal/documents/src/screens/Overview/Overview.tsx +++ /dev/null @@ -1,564 +0,0 @@ -import { useState, useCallback, useEffect, useMemo } from 'react' -import { - Box, - Stack, - Pagination, - Text, - GridContainer, - GridColumn, - GridRow, - SkeletonLoader, - Checkbox, - toast, -} from '@island.is/island-ui/core' -import { - useListDocuments, - useOrganizations, -} from '@island.is/service-portal/graphql' -import { - GoBack, - formatPlausiblePathToParams, - m, - useScrollTopOnUpdate, -} from '@island.is/service-portal/core' -import { - DocumentCategory, - DocumentSender, - DocumentType, -} from '@island.is/api/schema' -import { useLocale, useNamespaces } from '@island.is/localization' -import { documentsSearchDocumentsInitialized } from '@island.is/plausible' -import { useLoaderData, useLocation, useNavigate } from 'react-router-dom' -import { getOrganizationLogoUrl } from '@island.is/shared/utils' -import isAfter from 'date-fns/isAfter' -import differenceInYears from 'date-fns/differenceInYears' -import DocumentsFilter from '../../components/DocumentFilter/DocumentsFilter' -import debounce from 'lodash/debounce' -import { defaultFilterValues, FilterValuesType } from '../../utils/types' -import * as styles from './Overview.css' -import { AuthDelegationType } from '@island.is/shared/types' -import DocumentLine from '../../components/DocumentLine/DocumentLine' -import { useUserInfo } from '@island.is/auth/react' -import { useKeyDown } from '../../hooks/useKeyDown' -import { usePostBulkMailActionMutation } from './BatchMailAction.generated' -import { FavAndStash } from '../../components/FavAndStash' -import { messages } from '../../utils/messages' -import DocumentDisplay from '../../components/OverviewDisplay/OverviewDocumentDisplay' -import { ActiveDocumentType } from '../../lib/types' -import { - useDocumentCategoriesQuery, - useDocumentSendersQuery, - useDocumentTypesQuery, -} from './DocumentExtra.generated' -import { DocumentsPaths } from '../../lib/paths' - -export const pageSize = 10 - -export const ServicePortalDocuments = () => { - useNamespaces('sp.documents') - const userInfo = useUserInfo() - const { formatMessage } = useLocale() - const navigate = useNavigate() - const loaderNumber = useLoaderData() as number - const [page, setPage] = useState(loaderNumber) - const [selectedLines, setSelectedLines] = useState<Array<string>>([]) - const [documentDisplayError, setDocumentDisplayError] = useState<string>() - const [docLoading, setDocLoading] = useState(false) - const [totalPages, setTotalPages] = useState<number>() - const location = useLocation() - const [activeDocument, setActiveDocument] = - useState<ActiveDocumentType | null>(null) - const isLegal = userInfo.profile.delegationType?.includes( - AuthDelegationType.LegalGuardian, - ) - - const [bulkMailAction, { loading: bulkMailActionLoading }] = - usePostBulkMailActionMutation({ - onError: (_) => toast.error(formatMessage(m.errorTitle)), - onCompleted: (data) => { - if (data.postBulkMailAction?.success) { - if (refetch) { - refetch({ - ...fetchObject(), - }) - } - } else { - toast.error(formatMessage(m.errorTitle)) - } - }, - }) - - const dateOfBirth = userInfo?.profile.dateOfBirth - let isOver15 = false - if (dateOfBirth) { - isOver15 = differenceInYears(new Date(), dateOfBirth) > 15 - } - const hideHealthData = isOver15 && isLegal - - const sortState = { - direction: 'Descending', - key: 'Date', - } - const [searchInteractionEventSent, setSearchInteractionEventSent] = - useState(false) - useScrollTopOnUpdate([page]) - - const [filterValue, setFilterValue] = - useState<FilterValuesType>(defaultFilterValues) - - const fetchObject = () => { - return { - senderKennitala: filterValue.activeSenders.join(), - dateFrom: filterValue.dateFrom?.toISOString(), - dateTo: filterValue.dateTo?.toISOString(), - categoryId: filterValue.activeCategories.join(), - subjectContains: filterValue.searchQuery, - typeId: null, - sortBy: sortState.key, - order: sortState.direction, - opened: filterValue.showUnread ? false : null, - page: page, - pageSize: pageSize, - isLegalGuardian: hideHealthData, - archived: filterValue.archived, - bookmarked: filterValue.bookmarked, - } - } - - const { data, totalCount, loading, error, refetch } = useListDocuments({ - ...fetchObject(), - }) - - const { data: categoriesData, loading: categoriesLoading } = - useDocumentCategoriesQuery() - - const { data: typesData, loading: typesLoading } = useDocumentTypesQuery() - - const { data: sendersData, loading: sendersLoading } = - useDocumentSendersQuery() - - const [categoriesAvailable, setCategoriesAvailable] = useState< - DocumentCategory[] - >([]) - - const [sendersAvailable, setSendersAvailable] = useState<DocumentSender[]>([]) - - const [typesAvailable, setTypesAvailable] = useState<DocumentType[]>([]) - useEffect(() => { - if ( - !sendersLoading && - sendersData?.getDocumentSenders && - sendersAvailable.length === 0 - ) { - setSendersAvailable(sendersData.getDocumentSenders) - } - }, [sendersLoading]) - - useEffect(() => { - if ( - !typesLoading && - typesData?.getDocumentTypes && - typesAvailable.length === 0 - ) { - setTypesAvailable(typesData.getDocumentTypes) - } - }, [typesLoading]) - - useEffect(() => { - if (location?.state?.doc) { - setActiveDocument(location?.state?.doc) - } - }, [location?.state?.doc]) - - useEffect(() => { - if ( - !categoriesLoading && - categoriesData?.getDocumentCategories && - categoriesAvailable.length === 0 - ) { - setCategoriesAvailable(categoriesData.getDocumentCategories) - } - }, [categoriesLoading]) - - const filteredDocuments = data.documents - - useEffect(() => { - const pageCount = Math.ceil(totalCount / pageSize) - if (pageCount !== totalPages && pageCount !== 0) { - setTotalPages(pageCount) - } - }, [pageSize, totalCount]) - - const { data: organizations } = useOrganizations() - - const handleDateFromInput = useCallback((value: Date | null) => { - setPage(1) - setFilterValue((oldState) => { - const { dateTo } = oldState - const dateToValue = () => { - if (!value) { - return dateTo - } - return dateTo ? (isAfter(value, dateTo) ? value : dateTo) : dateTo - } - return { - ...oldState, - dateTo: dateToValue(), - dateFrom: value, - } - }) - }, []) - - const handleDateToInput = useCallback((value: Date | null) => { - setPage(1) - setFilterValue((oldState) => ({ - ...oldState, - dateTo: value, - })) - }, []) - - const handlePageChange = useCallback((newPage: number) => { - setPage(newPage) - }, []) - - const handleCategoriesChange = useCallback((selected: string[]) => { - setPage(1) - setFilterValue((oldFilter) => ({ - ...oldFilter, - activeCategories: [...selected], - })) - }, []) - - const handleSendersChange = useCallback((selected: string[]) => { - setPage(1) - setFilterValue((oldFilter) => ({ - ...oldFilter, - activeSenders: [...selected], - })) - }, []) - - const handleClearFilters = useCallback(() => { - setPage(1) - setFilterValue({ ...defaultFilterValues }) - }, []) - - const handleShowUnread = useCallback((showUnread: boolean) => { - setPage(1) - setFilterValue((prevFilter) => ({ - ...prevFilter, - showUnread, - })) - }, []) - - const handleShowArchived = useCallback((showArchived: boolean) => { - setPage(1) - setFilterValue((prevFilter) => ({ - ...prevFilter, - archived: showArchived, - })) - }, []) - - const handleShowBookmarked = useCallback((showBookmarked: boolean) => { - setPage(1) - setFilterValue((prevFilter) => ({ - ...prevFilter, - bookmarked: showBookmarked, - })) - }, []) - - const handleSearchChange = (e: any) => { - setPage(1) - if (e) { - setFilterValue((prevFilter) => ({ - ...prevFilter, - searchQuery: e.target?.value ?? '', - })) - if (!searchInteractionEventSent) { - documentsSearchDocumentsInitialized( - formatPlausiblePathToParams(DocumentsPaths.ElectronicDocumentsRoot), - ) - setSearchInteractionEventSent(true) - } - } - } - - useEffect(() => { - return () => { - debouncedResults.cancel() - } - }) - - useKeyDown('Escape', () => { - setActiveDocument(null) - navigate(DocumentsPaths.ElectronicDocumentsRoot, { - replace: true, - }) - }) - - const debouncedResults = useMemo(() => { - return debounce(handleSearchChange, 500) - }, []) - - const activeArchive = filterValue.archived === true - - const rowDirection = error ? 'column' : 'columnReverse' - return ( - <GridContainer> - <GridRow direction={[rowDirection, rowDirection, rowDirection, 'row']}> - <GridColumn - hiddenBelow={activeDocument?.document ? 'lg' : undefined} - span={['12/12', '12/12', '12/12', '5/12']} - > - <Box marginBottom={2} printHidden marginY={3}> - <Box - className={styles.btn} - display={'inlineFlex'} - alignItems={'center'} - > - <GoBack display="inline" noUnderline marginBottom={0} /> - <Box - borderRadius={'circle'} - display={'inlineBlock'} - marginY={0} - marginX={1} - className={styles.bullet} - ></Box> - <Text - as="h1" - variant="eyebrow" - color="blue400" - fontWeight="semiBold" - > - <button - onClick={() => - navigate(DocumentsPaths.ElectronicDocumentsRoot, { - replace: true, - }) - } - > - {formatMessage(m.documents)} - </button> - </Text> - </Box> - </Box> - <DocumentsFilter - filterValue={filterValue} - categories={categoriesAvailable} - senders={sendersAvailable} - debounceChange={debouncedResults} - clearCategories={() => - setFilterValue((oldFilter) => ({ - ...oldFilter, - activeCategories: [], - })) - } - clearSenders={() => - setFilterValue((oldFilter) => ({ - ...oldFilter, - activeSenders: [], - })) - } - handleCategoriesChange={handleCategoriesChange} - handleSendersChange={handleSendersChange} - handleDateFromChange={handleDateFromInput} - handleDateToChange={handleDateToInput} - handleShowUnread={handleShowUnread} - handleShowArchived={handleShowArchived} - handleShowBookmarked={handleShowBookmarked} - handleClearFilters={handleClearFilters} - documentsLength={totalCount} - /> - <Box marginTop={4}> - <Box - background="blue100" - width="full" - borderColor="blue200" - borderBottomWidth="standard" - display="flex" - justifyContent="spaceBetween" - padding={2} - > - <Box display="flex"> - <Box className={styles.checkboxWrap} marginRight={3}> - {!activeArchive && ( - <Checkbox - name="checkbox-select-all" - checked={selectedLines.length > 0} - onChange={(e) => { - if (e.target.checked) { - const allDocumentIds = filteredDocuments.map( - (item) => item.id, - ) - setSelectedLines([...allDocumentIds]) - } else { - setSelectedLines([]) - } - }} - /> - )} - </Box> - {selectedLines.length > 0 ? null : ( - <Text variant="eyebrow">{formatMessage(m.info)}</Text> - )} - </Box> - - {selectedLines.length > 0 && !activeArchive ? ( - <FavAndStash - loading={bulkMailActionLoading} - onStash={() => - bulkMailAction({ - variables: { - input: { - messageIds: selectedLines, - action: 'archive', - status: true, - }, - }, - }) - .then(() => { - toast.success( - formatMessage(messages.successArchiveMulti), - ) - }) - .catch((e) => { - toast.error(formatMessage(m.errorTitle)) - }) - } - onFav={() => - bulkMailAction({ - variables: { - input: { - messageIds: selectedLines, - action: 'bookmark', - status: true, - }, - }, - }) - } - onRead={() => - bulkMailAction({ - variables: { - input: { - messageIds: selectedLines, - action: 'read', - status: true, - }, - }, - }) - } - /> - ) : ( - <Text variant="eyebrow">{formatMessage(m.date)}</Text> - )} - </Box> - {loading && ( - <Box marginTop={2}> - <SkeletonLoader - space={2} - repeat={pageSize} - display="block" - width="full" - height={57} - /> - </Box> - )} - <Stack space={0}> - {filteredDocuments.map((doc) => ( - <Box key={doc.id}> - <DocumentLine - img={getOrganizationLogoUrl( - doc.senderName, - organizations, - 60, - 'none', - )} - documentLine={doc} - onClick={setActiveDocument} - onError={(err) => setDocumentDisplayError(err)} - onLoading={(l) => setDocLoading(l)} - active={doc.id === activeDocument?.id} - bookmarked={!!doc.bookmarked} - selected={selectedLines.includes(doc.id)} - archived={activeArchive} - refetchInboxItems={() => { - if (refetch) { - refetch({ - ...fetchObject(), - }) - } - }} - setSelectLine={(docId) => { - if (selectedLines.includes(doc.id)) { - const filtered = selectedLines.filter( - (item) => item !== doc.id, - ) - setSelectedLines([...filtered]) - } else { - setSelectedLines([...selectedLines, docId]) - } - }} - /> - </Box> - ))} - {totalPages && ( - <Box paddingBottom={4} marginTop={4}> - <Pagination - page={page} - totalPages={totalPages} - renderLink={(page, className, children) => ( - <button - className={className} - onClick={handlePageChange.bind(null, page)} - > - {children} - </button> - )} - /> - </Box> - )} - </Stack> - </Box> - </GridColumn> - <GridColumn - span={['12/12', '12/12', '12/12', '7/12']} - position="relative" - > - <DocumentDisplay - activeDocument={activeDocument} - activeArchive={activeArchive} - activeBookmark={ - !!filteredDocuments?.filter( - (doc) => doc?.id === activeDocument?.id, - )?.[0]?.bookmarked - } - category={categoriesAvailable.find( - (i) => i.id === activeDocument?.categoryId, - )} - onPressBack={() => { - setActiveDocument(null) - navigate(DocumentsPaths.ElectronicDocumentsRoot, { - replace: true, - }) - }} - onRefetch={() => { - if (refetch) { - refetch({ - ...fetchObject(), - }) - } - }} - error={{ - message: error - ? formatMessage(messages.error) - : documentDisplayError ?? undefined, - code: error ? 'list' : 'single', - }} - loading={docLoading} - /> - </GridColumn> - </GridRow> - </GridContainer> - ) -} - -export default ServicePortalDocuments diff --git a/libs/service-portal/documents/src/utils/downloadDocument.ts b/libs/service-portal/documents/src/utils/downloadDocument.ts deleted file mode 100644 index 6e3aaff48e77..000000000000 --- a/libs/service-portal/documents/src/utils/downloadDocument.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { User } from '@island.is/auth/react' -import { ActiveDocumentType } from '../lib/types' - -export const downloadFile = async (doc: ActiveDocumentType, userInfo: User) => { - let html: string | undefined = undefined - if (doc?.document.html) { - html = doc?.document.html.length > 0 ? doc?.document.html : undefined - } - if (html) { - setTimeout(() => { - const win = window.open('', '_blank') - win && html && win.document.write(html) - win?.focus() - }, 250) - } else { - // Create form elements - const form = document.createElement('form') - const documentIdInput = document.createElement('input') - const tokenInput = document.createElement('input') - - const token = userInfo?.access_token - - if (!token) return - - form.appendChild(documentIdInput) - form.appendChild(tokenInput) - - // Form values - form.method = 'post' - form.action = doc?.downloadUrl ?? '' - form.target = '_blank' - - // Document Id values - documentIdInput.type = 'hidden' - documentIdInput.name = 'documentId' - documentIdInput.value = doc?.id ?? '' - - // National Id values - tokenInput.type = 'hidden' - tokenInput.name = '__accessToken' - tokenInput.value = token - - document.body.appendChild(form) - form.submit() - document.body.removeChild(form) - } -} diff --git a/libs/service-portal/documents/src/utils/mockData.ts b/libs/service-portal/documents/src/utils/mockData.ts deleted file mode 100644 index 9fa9d1ec10d0..000000000000 --- a/libs/service-portal/documents/src/utils/mockData.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { Document } from '@island.is/api/schema' - -export const documents: Document[] = [ - { - id: '1', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '2', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '3', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '4', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '5', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '6', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '7', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '8', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '9', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '10', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '11', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '12', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '13', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '14', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '15', - date: new Date(), - - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '16', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '17', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '18', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '19', - date: new Date(), - subject: 'Subject subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: true, - fileType: 'pdf', - url: 'https://visir.is', - }, - { - id: '20', - date: new Date(), - subject: 'UNREAD subject', - senderName: 'Ríkislögreglustjóri', - senderNatReg: 'NatReg?', - opened: false, - fileType: 'pdf', - url: 'https://visir.is', - }, -] diff --git a/libs/service-portal/documents/src/utils/useSubmitMailAction.ts b/libs/service-portal/documents/src/utils/useSubmitMailAction.ts deleted file mode 100644 index f86a94e0c7ae..000000000000 --- a/libs/service-portal/documents/src/utils/useSubmitMailAction.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { gql, useMutation } from '@apollo/client' -import { MailActions } from './types' -import { useState } from 'react' -import { toast } from '@island.is/island-ui/core' -import { useLocale } from '@island.is/localization' -import { m } from '@island.is/service-portal/core' -import { messages } from './messages' - -const POST_MAIL_ACTION = gql` - mutation PostMailActionMutation($input: PostMailActionResolverInput!) { - postMailAction(input: $input) { - success - messageId - action - } - } -` - -export const useSubmitMailAction = (input?: { messageId: string }) => { - const { formatMessage } = useLocale() - const [postMailAction, { data, loading }] = useMutation(POST_MAIL_ACTION) - - const [bookmarkSuccess, setBookmarkSuccess] = useState(false) - const [archiveSuccess, setArchiveSuccess] = useState(false) - const [dataSuccess, setDataSuccess] = useState({ - bookmark: false, - unbookmark: false, - unarchive: false, - archive: false, - }) - - const submitMailAction = async (action: MailActions) => { - try { - await postMailAction({ - variables: { - input: { - messageId: input?.messageId, - action, - }, - }, - }).then((d) => { - const actionName = d.data?.postMailAction?.action as MailActions - - if (!d.data?.postMailAction?.success) { - toast.error(formatMessage(m.errorTitle)) - return - } - - if (actionName === 'bookmark') { - setBookmarkSuccess(true) - setDataSuccess({ - ...dataSuccess, - bookmark: true, - }) - } - if (actionName === 'unbookmark') { - setBookmarkSuccess(false) - setDataSuccess({ - ...dataSuccess, - unbookmark: true, - }) - } - if (actionName === 'archive') { - setArchiveSuccess(true) - toast.success(formatMessage(messages.successArchive)) - setDataSuccess({ - ...dataSuccess, - archive: true, - }) - } - if (actionName === 'unarchive') { - setArchiveSuccess(false) - toast.success(formatMessage(messages.successUnarchive)) - setDataSuccess({ - ...dataSuccess, - unarchive: true, - }) - } - }) - } catch (err) { - toast.error(formatMessage(m.errorTitle)) - } - } - - return { - data, - submitMailAction, - loading, - archiveSuccess, - bookmarkSuccess, - dataSuccess, - } -} diff --git a/libs/service-portal/signature-collection/src/components/SignedList/index.tsx b/libs/service-portal/signature-collection/src/components/SignedList/index.tsx deleted file mode 100644 index cb732907cdca..000000000000 --- a/libs/service-portal/signature-collection/src/components/SignedList/index.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import { ActionCard, Box, Button, Text, toast } from '@island.is/island-ui/core' -import { useLocale, useNamespaces } from '@island.is/localization' -import { m } from '../../lib/messages' -import { Modal } from '@island.is/service-portal/core' -import { useState } from 'react' -import { useGetSignedList } from '../../hooks' -import format from 'date-fns/format' -import { useMutation } from '@apollo/client' -import { unSignList } from '../../hooks/graphql/mutations' -import { - SignatureCollectionSignedList, - SignatureCollectionSuccess, -} from '@island.is/api/schema' - -const SignedList = () => { - useNamespaces('sp.signatureCollection') - const { formatMessage } = useLocale() - const [modalIsOpen, setModalIsOpen] = useState(false) - - // SignedList is typically singular, although it may consist of multiple entries, which in that case will all be invalid - const { signedLists, loadingSignedLists, refetchSignedLists } = - useGetSignedList() - - const [unSign, { loading }] = useMutation(unSignList, { - variables: { - input: { - listId: - signedLists && signedLists?.length === 1 - ? signedLists[0].id - : undefined, - }, - }, - }) - - const onUnSignList = async () => { - try { - await unSign().then(({ data }) => { - if ( - ( - data as any as { - signatureCollectionUnsign: SignatureCollectionSuccess - } - ).signatureCollectionUnsign.success - ) { - toast.success(formatMessage(m.unSignSuccess)) - setModalIsOpen(false) - refetchSignedLists() - } else { - setModalIsOpen(false) - } - }) - } catch (e) { - toast.error(formatMessage(m.unSignError)) - } - } - - return ( - <Box> - {!loadingSignedLists && !!signedLists?.length && ( - <Box marginTop={[5, 7]}> - <Text marginBottom={2}>{formatMessage(m.mySigneeListsHeader)}</Text> - {signedLists?.map((list: SignatureCollectionSignedList) => { - return ( - <Box marginBottom={3} key={list.id}> - <ActionCard - heading={list.title} - eyebrow={`${ - list.isDigital - ? formatMessage(m.signedTime) - : formatMessage(m.uploadedTime) - } ${format(new Date(list.signedDate), 'dd.MM.yyyy')}`} - text={formatMessage(m.collectionTitle)} - cta={ - list.canUnsign - ? { - label: formatMessage(m.unSignList), - buttonType: { - variant: 'text', - colorScheme: 'destructive', - }, - onClick: () => setModalIsOpen(true), - icon: undefined, - } - : undefined - } - tag={ - list.isValid && !list.active - ? { - label: formatMessage(m.collectionClosed), - variant: 'red', - outlined: true, - } - : list.isValid && !list.isDigital - ? { - label: formatMessage(m.paperUploadedSignature), - variant: 'blue', - outlined: true, - } - : !list.isValid - ? { - label: formatMessage(m.signatureIsInvalid), - variant: 'red', - outlined: false, - } - : undefined - } - /> - <Modal - id="unSignList" - isVisible={modalIsOpen} - toggleClose={false} - initialVisibility={false} - onCloseModal={() => setModalIsOpen(false)} - > - <Text variant="h2" marginTop={[5, 0]}> - {formatMessage(m.unSignList)} - </Text> - <Text variant="default" marginTop={2}> - {formatMessage(m.unSignModalMessage)} - </Text> - <Box - marginTop={[7, 10]} - marginBottom={5} - display="flex" - justifyContent="center" - > - <Button - loading={loading} - colorScheme="destructive" - onClick={() => { - onUnSignList() - }} - > - {formatMessage(m.unSignModalConfirmButton)} - </Button> - </Box> - </Modal> - </Box> - ) - })} - </Box> - )} - </Box> - ) -} - -export default SignedList diff --git a/libs/service-portal/signature-collection/src/screens/CandidateView/CancelCollection/index.tsx b/libs/service-portal/signature-collection/src/screens/CandidateView/CancelCollection/index.tsx deleted file mode 100644 index 3a5b525c73b6..000000000000 --- a/libs/service-portal/signature-collection/src/screens/CandidateView/CancelCollection/index.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { Box, Button, Text, toast } from '@island.is/island-ui/core' -import { useLocale, useNamespaces } from '@island.is/localization' -import { m } from '../../../lib/messages' -import { Modal } from '@island.is/service-portal/core' -import { useState } from 'react' -import { useGetListsForUser, useIsOwner } from '../../../hooks' -import { useMutation } from '@apollo/client' -import { cancelCollectionMutation } from '../../../hooks/graphql/mutations' -import { SignatureCollectionSuccess } from '@island.is/api/schema' - -const CancelCollection = ({ collectionId }: { collectionId: string }) => { - useNamespaces('sp.signatureCollection') - const { formatMessage } = useLocale() - const [modalIsOpen, setModalIsOpen] = useState(false) - const { refetchIsOwner } = useIsOwner() - const { refetchListsForUser } = useGetListsForUser(collectionId) - const [cancelCollection, { loading }] = - useMutation<SignatureCollectionSuccess>(cancelCollectionMutation, { - variables: { input: { collectionId: collectionId } }, - }) - - const onCancelCollection = async () => { - await cancelCollection().then(({ data }) => { - if ( - ( - data as any as { - signatureCollectionCancel: SignatureCollectionSuccess - } - ).signatureCollectionCancel.success - ) { - toast.success(formatMessage(m.cancelCollectionModalToastSuccess)) - setModalIsOpen(false) - refetchIsOwner() - refetchListsForUser() - } else { - toast.error(formatMessage(m.cancelCollectionModalToastError)) - setModalIsOpen(false) - } - }) - } - - return ( - <Box marginTop={5} display={'flex'} justifyContent={'center'}> - <Modal - id="cancelCollection" - isVisible={modalIsOpen} - toggleClose={false} - initialVisibility={false} - onCloseModal={() => setModalIsOpen(false)} - disclosure={ - <Button - variant="text" - size="small" - colorScheme="destructive" - onClick={() => setModalIsOpen(true)} - > - {formatMessage(m.cancelCollectionButton)} - </Button> - } - > - <Text variant="h2" marginTop={[5, 0]}> - {formatMessage(m.cancelCollectionButton)} - </Text> - <Text variant="default" marginTop={2}> - {formatMessage(m.cancelCollectionModalMessage)} - </Text> - <Box - marginTop={[7, 10]} - marginBottom={5} - display="flex" - justifyContent="center" - > - <Button - onClick={() => onCancelCollection()} - loading={loading} - colorScheme="destructive" - > - {formatMessage(m.cancelCollectionModalConfirmButton)} - </Button> - </Box> - </Modal> - </Box> - ) -} - -export default CancelCollection diff --git a/libs/service-portal/signature-collection/src/screens/CandidateView/ViewList/index.tsx b/libs/service-portal/signature-collection/src/screens/CandidateView/ViewList/index.tsx deleted file mode 100644 index a31cd269968b..000000000000 --- a/libs/service-portal/signature-collection/src/screens/CandidateView/ViewList/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { Box, Stack, Text } from '@island.is/island-ui/core' -import { useLocale, useNamespaces } from '@island.is/localization' -import { m } from '../../../lib/messages' -import Signees from './signees' -import { useLocation } from 'react-router-dom' -import { useGetSignatureList } from '../../../hooks' -import format from 'date-fns/format' - -const ViewList = () => { - useNamespaces('sp.signatureCollection') - const { formatMessage } = useLocale() - const { pathname } = useLocation() - const listId = pathname.replace('/min-gogn/listar/medmaelasofnun/', '') - const { listInfo, loadingList } = useGetSignatureList(listId) - - return ( - <> - {!loadingList && !!listInfo && ( - <Stack space={5}> - <Box> - <Text variant="h3"> - {listInfo.candidate.name + ' - ' + listInfo.area.name} - </Text> - </Box> - <Box display={['block', 'flex']} justifyContent="spaceBetween"> - <Box> - <Text variant="h5">{formatMessage(m.listPeriod)}</Text> - <Text> - {format(new Date(listInfo.startTime), 'dd.MM.yyyy') + - ' - ' + - format(new Date(listInfo.endTime), 'dd.MM.yyyy')} - </Text> - </Box> - <Box marginTop={[2, 0]}> - <Text variant="h5">{formatMessage(m.numberOfSigns)}</Text> - <Text>{listInfo.numberOfSignatures}</Text> - </Box> - <Box marginTop={[2, 0]}> - {!!listInfo.collectors?.length && ( - <> - <Text marginTop={[2, 0]} variant="h5"> - {formatMessage(m.coOwners)} - </Text> - {listInfo.collectors?.map((collector) => ( - <Box - key={collector.name} - width="half" - display={['block', 'flex']} - justifyContent="spaceBetween" - > - <Text>{collector.name}</Text> - </Box> - ))} - </> - )} - </Box> - </Box> - <Signees /> - </Stack> - )} - </> - ) -} - -export default ViewList diff --git a/libs/service-portal/signature-collection/src/screens/CandidateView/ViewList/signees.tsx b/libs/service-portal/signature-collection/src/screens/CandidateView/ViewList/signees.tsx deleted file mode 100644 index ac5de6697886..000000000000 --- a/libs/service-portal/signature-collection/src/screens/CandidateView/ViewList/signees.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import { - Box, - Text, - Table as T, - Pagination, - FilterInput, -} from '@island.is/island-ui/core' -import { useLocale, useNamespaces } from '@island.is/localization' -import { m } from '../../../lib/messages' -import format from 'date-fns/format' -import { useEffect, useState } from 'react' -import * as styles from '../../styles.css' -import { useGetListSignees } from '../../../hooks' -import { useLocation } from 'react-router-dom' -import { format as formatNationalId } from 'kennitala' -import { SkeletonTable } from '../../skeletons' -import { SignatureCollectionSignature as Signature } from '@island.is/api/schema' - -const Signees = () => { - useNamespaces('sp.signatureCollection') - const { formatMessage } = useLocale() - const { pathname } = useLocation() - const listId = pathname.replace('/min-gogn/listar/medmaelasofnun/', '') - - const [searchTerm, setSearchTerm] = useState('') - const { listSignees, loadingSignees } = useGetListSignees(listId) - const [signees, setSignees] = useState(listSignees) - - const [page, setPage] = useState(1) - const pageSize = 10 - - useEffect(() => { - if (!loadingSignees) { - setSignees(listSignees) - } - }, [listSignees]) - - // list search - useEffect(() => { - let filteredSignees: Signature[] = listSignees - - filteredSignees = filteredSignees.filter((s) => { - return ( - s.signee.name.toLowerCase().includes(searchTerm.toLowerCase()) || - formatNationalId(s.signee.nationalId).includes(searchTerm) || - s.signee.nationalId.includes(searchTerm) - ) - }) - - setPage(1) - setSignees(filteredSignees) - }, [searchTerm]) - - return ( - <Box marginTop={[0, 5]}> - <Text variant="h4">{formatMessage(m.signeesHeader)}</Text> - <Box - display={['block', 'flex']} - justifyContent="spaceBetween" - marginTop={2} - > - <Box className={styles.searchWidth} marginBottom={[2, 0]}> - <FilterInput - name="searchSignee" - value={searchTerm} - onChange={(v) => setSearchTerm(v)} - placeholder={formatMessage(m.searchInListPlaceholder)} - backgroundColor="white" - /> - </Box> - </Box> - {!loadingSignees ? ( - signees.length > 0 ? ( - <Box marginTop={[3, 5]}> - <T.Table> - <T.Head> - <T.Row> - <T.HeadData>{formatMessage(m.signeeDate)}</T.HeadData> - <T.HeadData>{formatMessage(m.signeeName)}</T.HeadData> - <T.HeadData>{formatMessage(m.signeeNationalId)}</T.HeadData> - <T.HeadData>{formatMessage(m.signeeAddress)}</T.HeadData> - </T.Row> - </T.Head> - <T.Body> - {signees - .slice(pageSize * (page - 1), pageSize * page) - .map((s: Signature) => { - return ( - <T.Row key={s.id}> - <T.Data text={{ variant: 'medium' }}> - {format(new Date(), 'dd.MM.yyyy')} - </T.Data> - <T.Data text={{ variant: 'medium' }}> - {s.signee.name} - </T.Data> - <T.Data text={{ variant: 'medium' }}> - {formatNationalId(s.signee.nationalId)} - </T.Data> - <T.Data text={{ variant: 'medium' }}> - {s.signee.address} - </T.Data> - </T.Row> - ) - })} - </T.Body> - </T.Table> - - <Box marginTop={5}> - <Pagination - totalItems={signees.length} - itemsPerPage={pageSize} - page={page} - renderLink={(page, className, children) => ( - <Box - cursor="pointer" - className={className} - onClick={() => setPage(page)} - component="button" - > - {children} - </Box> - )} - /> - </Box> - </Box> - ) : searchTerm.length > 0 ? ( - <Box display="flex" marginTop={3}> - <Text>{formatMessage(m.noSigneesFoundBySearch)}</Text> - <Box marginLeft={1}> - <Text variant="h5">{searchTerm}</Text> - </Box> - </Box> - ) : ( - <Text marginTop={3}>{formatMessage(m.noSignees)}</Text> - ) - ) : ( - <SkeletonTable /> - )} - </Box> - ) -} - -export default Signees diff --git a/libs/service-portal/signature-collection/src/screens/CandidateView/index.tsx b/libs/service-portal/signature-collection/src/screens/CandidateView/index.tsx deleted file mode 100644 index a8bbb9a0471f..000000000000 --- a/libs/service-portal/signature-collection/src/screens/CandidateView/index.tsx +++ /dev/null @@ -1,161 +0,0 @@ -import { - ActionCard, - Box, - Button, - Stack, - Text, - toast, -} from '@island.is/island-ui/core' -import { useLocale, useNamespaces } from '@island.is/localization' -import { m } from '../../lib/messages' -import { SignatureCollectionPaths } from '../../lib/paths' -import { IntroHeader } from '@island.is/service-portal/core' -import CancelCollection from './CancelCollection' -import { useGetListsForOwner } from '../../hooks' -import format from 'date-fns/format' -import { Skeleton } from '../skeletons' -import { useNavigate } from 'react-router-dom' -import { useAuth } from '@island.is/auth/react' -import copyToClipboard from 'copy-to-clipboard' -import SignedList from '../../components/SignedList' -import { SignatureCollection } from '@island.is/api/schema' - -const CandidateView = ({ - currentCollection, -}: { - currentCollection: SignatureCollection -}) => { - useNamespaces('sp.signatureCollection') - const navigate = useNavigate() - const { userInfo: user } = useAuth() - const { formatMessage } = useLocale() - const { listsForOwner, loadingOwnerLists } = useGetListsForOwner( - currentCollection?.id || '', - ) - - return ( - <Box> - <IntroHeader - title={formatMessage(m.pageTitle)} - intro={formatMessage(m.pageDescription)} - /> - {!loadingOwnerLists && !!currentCollection ? ( - <Box> - {listsForOwner?.length === 0 && currentCollection.isActive && ( - <Button - icon="open" - iconType="outline" - onClick={() => - window.open( - `${document.location.origin}/umsoknir/medmaelasofnun/`, - ) - } - size="small" - > - {formatMessage(m.createListButton)} - </Button> - )} - <Box marginTop={[2, 7]}> - <Text variant="h3" marginBottom={2}> - {formatMessage(m.collectionTitle)} - </Text> - <Box - background="purple100" - borderRadius="large" - display={['block', 'flex', 'flex']} - justifyContent="spaceBetween" - alignItems="center" - padding={3} - > - <Box marginHeight={5}> - <Text marginBottom={[2, 0, 0]}> - {formatMessage(m.copyLinkDescription)} - </Text> - </Box> - <Button - onClick={() => { - const copied = copyToClipboard( - `${document.location.origin}${listsForOwner[0].slug}`, - ) - if (!copied) { - return toast.error(formatMessage(m.copyLinkError)) - } - toast.success(formatMessage(m.copyLinkSuccess)) - }} - variant="utility" - icon="link" - > - {formatMessage(m.copyLinkButton)} - </Button> - </Box> - - {/* Signed list */} - {!user?.profile.actor && <SignedList />} - - {/* Candidate created lists */} - <Text marginTop={[5, 7]} marginBottom={2}> - {formatMessage(m.myListsDescription)} - </Text> - <Stack space={[3, 5]}> - {listsForOwner.map((list) => { - return ( - <ActionCard - key={list.id} - backgroundColor="white" - heading={list.title} - eyebrow={ - formatMessage(m.endTime) + - ' ' + - format(new Date(list.endTime), 'dd.MM.yyyy') - } - text={formatMessage(m.collectionTitle)} - cta={ - new Date(list.endTime) > new Date() - ? { - label: formatMessage(m.viewList), - variant: 'text', - icon: 'arrowForward', - onClick: () => { - navigate( - SignatureCollectionPaths.ViewList.replace( - ':id', - list.id, - ), - ) - }, - } - : undefined - } - tag={ - new Date(list.endTime) < new Date() - ? { - label: formatMessage(m.collectionClosed), - variant: 'red', - outlined: true, - } - : undefined - } - progressMeter={{ - currentProgress: Number(list.numberOfSignatures), - maxProgress: list.area.min, - withLabel: true, - }} - /> - ) - })} - </Stack> - </Box> - {listsForOwner?.length > 0 && - !user?.profile.actor && - currentCollection.isActive && ( - <CancelCollection collectionId={currentCollection?.id} /> - )} - </Box> - ) : ( - <Skeleton /> - )} - </Box> - ) -} - -export default CandidateView diff --git a/libs/service-portal/signature-collection/src/screens/SigneeView/index.tsx b/libs/service-portal/signature-collection/src/screens/SigneeView/index.tsx deleted file mode 100644 index 8ac5c06e46e8..000000000000 --- a/libs/service-portal/signature-collection/src/screens/SigneeView/index.tsx +++ /dev/null @@ -1,139 +0,0 @@ -import { - ActionCard, - AlertMessage, - Box, - Button, - Stack, - Text, -} from '@island.is/island-ui/core' -import { useLocale, useNamespaces } from '@island.is/localization' -import { m } from '../../lib/messages' -import { EmptyState, IntroHeader } from '@island.is/service-portal/core' -import { useGetListsForUser, useGetSignedList } from '../../hooks' -import format from 'date-fns/format' -import { Skeleton } from '../skeletons' -import SignedList from '../../components/SignedList' -import { useAuth } from '@island.is/auth/react' -import { SignatureCollection } from '../../types/schema' -import { sortAlpha } from '@island.is/shared/utils' - -const SigneeView = ({ - currentCollection, -}: { - currentCollection: SignatureCollection -}) => { - useNamespaces('sp.signatureCollection') - const { userInfo: user } = useAuth() - - const { formatMessage } = useLocale() - const { signedLists, loadingSignedLists } = useGetSignedList() - const { listsForUser, loadingUserLists } = useGetListsForUser( - currentCollection?.id, - ) - - return ( - <Box> - <IntroHeader - title={formatMessage(m.pageTitle)} - intro={formatMessage(m.pageDescriptionSignee)} - /> - {!user?.profile.actor && !loadingSignedLists && !loadingUserLists ? ( - <Box> - {currentCollection?.isActive && ( - <Button - icon="open" - iconType="outline" - onClick={() => - window.open( - `${document.location.origin}/umsoknir/medmaelasofnun/`, - ) - } - size="small" - > - {formatMessage(m.createListButton)} - </Button> - )} - {listsForUser.length === 0 && signedLists.length === 0 && ( - <Box marginTop={10}> - <EmptyState - title={m.noCollectionIsActive} - description={m.noCollectionIsActiveDescription} - /> - </Box> - )} - <Box marginTop={[2, 7]}> - {/* Signed list */} - <SignedList /> - - {/* Other available lists */} - <Box marginTop={[5, 10]}> - {listsForUser.length > 0 && ( - <Text marginBottom={2}> - {formatMessage(m.mySigneeListsByAreaHeader)} - </Text> - )} - - <Stack space={3}> - {listsForUser?.sort(sortAlpha('title')).map((list) => { - return ( - <ActionCard - key={list.id} - backgroundColor="white" - heading={list.title} - eyebrow={ - formatMessage(m.endTime) + - ' ' + - format(new Date(list.endTime), 'dd.MM.yyyy') - } - text={formatMessage(m.collectionTitle)} - cta={ - new Date(list.endTime) > new Date() && !list.maxReached - ? { - label: formatMessage(m.signList), - variant: 'text', - icon: 'arrowForward', - disabled: !!signedLists.length, - onClick: () => { - window.open( - `${document.location.origin}${list.slug}`, - ) - }, - } - : undefined - } - tag={ - new Date(list.endTime) < new Date() - ? { - label: formatMessage(m.collectionClosed), - variant: 'red', - outlined: true, - } - : list.maxReached - ? { - label: formatMessage(m.collectionMaxReached), - variant: 'red', - outlined: true, - } - : undefined - } - /> - ) - })} - </Stack> - </Box> - </Box> - </Box> - ) : user?.profile.actor ? ( - <AlertMessage - type="warning" - title={formatMessage(m.actorNoAccessTitle)} - message={m.actorNoAccessDescription.defaultMessage} - /> - ) : ( - <Skeleton /> - )} - </Box> - ) -} - -export default SigneeView diff --git a/libs/service-portal/signature-collection/src/screens/index.tsx b/libs/service-portal/signature-collection/src/screens/index.tsx deleted file mode 100644 index ef4a7aa41268..000000000000 --- a/libs/service-portal/signature-collection/src/screens/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Box } from '@island.is/island-ui/core' -import { useNamespaces } from '@island.is/localization' -import OwnerView from './CandidateView' -import SigneeView from './SigneeView' -import { useGetCurrentCollection, useIsOwner } from '../hooks' - -const SignatureLists = () => { - useNamespaces('sp.signatureCollection') - - const { isOwner, loadingIsOwner } = useIsOwner() - const { currentCollection, loadingCurrentCollection } = - useGetCurrentCollection() - - return ( - <div> - {!loadingIsOwner && !loadingCurrentCollection && ( - <Box> - {isOwner.success ? ( - <OwnerView currentCollection={currentCollection} /> - ) : ( - <SigneeView currentCollection={currentCollection} /> - )} - </Box> - )} - </div> - ) -} - -export default SignatureLists diff --git a/libs/service-portal/signature-collection/src/screens/skeletons.tsx b/libs/service-portal/signature-collection/src/screens/skeletons.tsx deleted file mode 100644 index e6ac9fba5edb..000000000000 --- a/libs/service-portal/signature-collection/src/screens/skeletons.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Box, SkeletonLoader } from '@island.is/island-ui/core' - -export const Skeleton = () => { - return ( - <Box marginTop={[5, 10]}> - <SkeletonLoader height={200} borderRadius="large" repeat={4} space={3} /> - </Box> - ) -} - -export const SkeletonTable = () => { - return ( - <Box marginTop={5}> - <SkeletonLoader height={700} borderRadius="large" /> - </Box> - ) -} diff --git a/libs/service-portal/signature-collection/src/screens/styles.css.ts b/libs/service-portal/signature-collection/src/screens/styles.css.ts deleted file mode 100644 index 2bf73fa23209..000000000000 --- a/libs/service-portal/signature-collection/src/screens/styles.css.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { themeUtils } from '@island.is/island-ui/theme' -import { style } from '@vanilla-extract/css' - -export const searchWidth = style({ - minWidth: '100%', - ...themeUtils.responsiveStyle({ - xs: { - minWidth: '50%', - }, - }), -}) diff --git a/scripts/ci/_podman.sh b/scripts/ci/_podman.sh deleted file mode 100755 index a1148f00b8c2..000000000000 --- a/scripts/ci/_podman.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -euo pipefail -if [[ -n "${DEBUG:-}" || -n "${CI:-}" ]]; then set -x; fi -DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" -. "${DIR}/_docker.sh" "$@" || true - -mkargs local-cache=false -CONTAINER_BUILDER=podman container_build From d38835aacbc22093512b8beeb048b32824433103 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:08:11 +0000 Subject: [PATCH 114/129] Update dependencies: compare-versions, expo-linking, react-native-date-picker, and react-native-share --- yarn.lock | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 76b482e5aeed..202aa8a537de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13485,11 +13485,13 @@ __metadata: babel-loader: ^8.3.0 babel-plugin-formatjs: 10.3.9 babel-plugin-module-resolver: 5.0.2 + compare-versions: 6.1.1 configcat-js: 7.0.0 dynamic-color: 0.3.0 expo: 51.0.25 expo-file-system: 17.0.1 expo-haptics: 13.0.1 + expo-linking: 6.3.1 expo-local-authentication: 14.0.1 expo-notifications: 0.28.9 intl: 1.2.5 @@ -13502,6 +13504,7 @@ __metadata: react-native-app-auth: 7.2.0 react-native-blob-util: 0.19.9 react-native-code-push: 8.2.2 + react-native-date-picker: 5.0.4 react-native-device-info: 10.3.0 react-native-dialogs: 1.1.2 react-native-gesture-handler: 2.17.1 @@ -13518,7 +13521,7 @@ __metadata: react-native-quick-actions: 0.3.13 react-native-quick-base64: 2.1.2 react-native-reanimated: 3.12.1 - react-native-share: 7.1.1 + react-native-share: 10.2.1 react-native-spotlight-search: 2.0.0 react-native-svg: 15.2.0 react-native-vision-camera: 4.5.1 @@ -28532,6 +28535,13 @@ __metadata: languageName: node linkType: hard +"compare-versions@npm:6.1.1": + version: 6.1.1 + resolution: "compare-versions@npm:6.1.1" + checksum: 73fe6c4f52d22efe28f0a3be10df2afd704e10b3593360cd963e86b33a7a263c263b41a1361b69c30a0fe68bfa70fef90860c1cf2ef41502629d4402890fcd57 + languageName: node + linkType: hard + "component-emitter@npm:^1.2.0, component-emitter@npm:^1.3.0": version: 1.3.0 resolution: "component-emitter@npm:1.3.0" @@ -33577,6 +33587,16 @@ __metadata: languageName: node linkType: hard +"expo-linking@npm:6.3.1": + version: 6.3.1 + resolution: "expo-linking@npm:6.3.1" + dependencies: + expo-constants: ~16.0.0 + invariant: ^2.2.4 + checksum: 32e2dbcffc802fc6570a5a9cd7839c873f6cfc40730f1cf3cdabeb2782c30b54455d41c98708dbba2649941d5ff8cb591b85689f9c1a3b7a3fcb20011aae0cb5 + languageName: node + linkType: hard + "expo-local-authentication@npm:14.0.1": version: 14.0.1 resolution: "expo-local-authentication@npm:14.0.1" @@ -48620,6 +48640,16 @@ __metadata: languageName: node linkType: hard +"react-native-date-picker@npm:5.0.4": + version: 5.0.4 + resolution: "react-native-date-picker@npm:5.0.4" + peerDependencies: + react: ">= 17.0.1" + react-native: ">= 0.64.3" + checksum: 67db7fba5de613c61a70b5b9274daef8c7d3b6f6cdc5a6063eb61126d4df43252c501c2cb78ebda37fb0997ccb0994e949976d0fb395453580019923100e03ad + languageName: node + linkType: hard + "react-native-device-info@npm:10.3.0": version: 10.3.0 resolution: "react-native-device-info@npm:10.3.0" @@ -48828,10 +48858,10 @@ __metadata: languageName: node linkType: hard -"react-native-share@npm:7.1.1": - version: 7.1.1 - resolution: "react-native-share@npm:7.1.1" - checksum: f391e3797f1570d55922216546b096d2af386d025e6f98a1aca24142b0f51dc6c6d494c048a7a81f82947570e2d483c80467e2960b1a061961f98dfcea0f078e +"react-native-share@npm:10.2.1": + version: 10.2.1 + resolution: "react-native-share@npm:10.2.1" + checksum: 9dd4e0329b344668e04ff5421ab982e319dc3ba988d0b7990a619bd1c551beb6012623abe238a80e427f86f2bb03dd21b7afc0e957ee7348e0bd9fb39956912e languageName: node linkType: hard From c33773dbea2dfdf31482b65ebc5216b44469d2d5 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Fri, 25 Oct 2024 14:44:31 +0000 Subject: [PATCH 115/129] feat(uber-charts): Add form system API setup This commit adds the form system API setup to the uber-charts/islandis.ts file. This allows the form system service to be used in the application. --- infra/src/uber-charts/islandis.ts | 1 + yarn.lock | 24529 +++++++++++----------------- 2 files changed, 9104 insertions(+), 15426 deletions(-) diff --git a/infra/src/uber-charts/islandis.ts b/infra/src/uber-charts/islandis.ts index 54c12eff83d1..a4335b5ee787 100644 --- a/infra/src/uber-charts/islandis.ts +++ b/infra/src/uber-charts/islandis.ts @@ -60,6 +60,7 @@ import { serviceSetup as authAdminApiSetup } from '../../../apps/services/auth/a import { EnvironmentServices } from '.././dsl/types/charts' import { ServiceBuilder } from '../dsl/dsl' +import { serviceSetup as formSystemApiSetup } from '../../../apps/services/form-system/infra/form-system' const endorsement = endorsementServiceSetup({}) diff --git a/yarn.lock b/yarn.lock index 07fbc9d80f64..e227b63fa4ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,48 +5,32 @@ __metadata: version: 6 cacheKey: 8 -"@0no-co/graphql.web@npm:^1.0.0": - version: 1.0.0 - resolution: "@0no-co/graphql.web@npm:1.0.0" +"@0no-co/graphql.web@npm:^1.0.5": + version: 1.0.9 + resolution: "@0no-co/graphql.web@npm:1.0.9" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true - checksum: 54e5651dd1c3806ced064b6e0bba5b6bc958b69898a1c3fbe0c96c5a0fb7189de9f479946159dd2e20d39a1b3b655de11da0b8b2dc92761132b61949872c7277 - languageName: node - linkType: hard - -"@aashutoshrathi/word-wrap@npm:^1.2.3": - version: 1.2.6 - resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" - checksum: ada901b9e7c680d190f1d012c84217ce0063d8f5c5a7725bb91ec3c5ed99bb7572680eb2d2938a531ccbaec39a95422fcd8a6b4a13110c7d98dd75402f66a0cd + checksum: a7580304d3b545b69e11e4a7b95d0c81b5fee3d071f92b1386f0f2e4e4f69703cbe19e0a4f5c489cbb70e7b5ac1ccec3a51f529c85dfbbccf8ebd6370fd6b0e2 languageName: node linkType: hard "@adobe/css-tools@npm:^4.0.1": - version: 4.0.1 - resolution: "@adobe/css-tools@npm:4.0.1" - checksum: 80226e2229024c21da9ffa6b5cd4a34b931f071e06f45aba4777ade071d7a6c94605cf73b13718b0c4b34e8b124c65c607b82eaa53a326d3eb73d9682a04a593 - languageName: node - linkType: hard - -"@ampproject/remapping@npm:^2.1.0": - version: 2.1.2 - resolution: "@ampproject/remapping@npm:2.1.2" - dependencies: - "@jridgewell/trace-mapping": ^0.3.0 - checksum: e023f92cdd9723f3042cde3b4d922adfeef0e198aa73486b0b6c034ad36af5f96e5c0cc72b335b30b2eb9852d907efc92af6bfcd3f4b4d286177ee32a189cf92 + version: 4.4.0 + resolution: "@adobe/css-tools@npm:4.4.0" + checksum: 1f08fb49bf17fc7f2d1a86d3e739f29ca80063d28168307f1b0a962ef37501c5667271f6771966578897f2e94e43c4770fd802728a6e6495b812da54112d506a languageName: node linkType: hard "@ampproject/remapping@npm:^2.2.0": - version: 2.2.1 - resolution: "@ampproject/remapping@npm:2.2.1" + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 03c04fd526acc64a1f4df22651186f3e5ef0a9d6d6530ce4482ec9841269cf7a11dbb8af79237c282d721c5312024ff17529cd72cc4768c11e999b58e2302079 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: d3ad7b89d973df059c4e8e6d7c972cbeb1bb2f18f002a3bd04ae0707da214cb06cc06929b65aa2313b9347463df2914772298bae8b1d7973f246bb3f2ab3e8f0 languageName: node linkType: hard @@ -129,12 +113,12 @@ __metadata: linkType: hard "@anev/ts-mountebank@npm:^1.6.0": - version: 1.6.0 - resolution: "@anev/ts-mountebank@npm:1.6.0" + version: 1.8.0 + resolution: "@anev/ts-mountebank@npm:1.8.0" dependencies: - superagent: ^6.1.0 - typescript: ^4.4.2 - checksum: d60cb7f453a6f29dd215db3481a50b9bc1447405a7b99c6c79f4910f22f8c220d7bebaf707a6d857f15558ec65bff9d463427ef653751c9f3d08fb434afd6391 + superagent: ^8.1.2 + typescript: ^5.2.2 + checksum: 7ce29bdbb3ec6858f033ddc80c5043fd5afcdc7a87faadf2cb50b2c49e941c1e9a7b4165d3465158714e4a3119da407efebf40f127ba634377637e0490bb86fe languageName: node linkType: hard @@ -243,11 +227,11 @@ __metadata: linkType: hard "@apollo/cache-control-types@npm:^1.0.2": - version: 1.0.2 - resolution: "@apollo/cache-control-types@npm:1.0.2" + version: 1.0.3 + resolution: "@apollo/cache-control-types@npm:1.0.3" peerDependencies: graphql: 14.x || 15.x || 16.x - checksum: 1e00c57b45fbd8656c96cdcd254658f332c1955bd8db9274c665e1c6ef8ac881a6b6a3f953b60638ae5f59fdfce6b005adb9a5b945b694903579a9665499e823 + checksum: 1c2791f3c7fa0fc609bd42cebcb6a0d1ccfcee9b22e54c4aa5af918944ae9dbdd45d7b84670afc6de34444e9226e9e82523bc3969805b506b86fd28dc9abc9fa languageName: node linkType: hard @@ -324,26 +308,28 @@ __metadata: linkType: hard "@apollo/composition@npm:^2.1.1": - version: 2.1.3 - resolution: "@apollo/composition@npm:2.1.3" + version: 2.9.3 + resolution: "@apollo/composition@npm:2.9.3" dependencies: - "@apollo/federation-internals": ^2.1.3 - "@apollo/query-graphs": ^2.1.3 + "@apollo/federation-internals": 2.9.3 + "@apollo/query-graphs": 2.9.3 peerDependencies: graphql: ^16.5.0 - checksum: c63f443540a8af2cf9f11468a447334de94dacfac2571d7cf5c903f69887b9850ebe25ccc0a19353ce1ce5de8f4cad7f4b26e63f4c454e254f0e1f2f6cdd7fb9 + checksum: 58b00da585d378eb42bf9e1e4cf355d2cb5c096848fce76cc473c459debe846ca44f69d921b3ea51eca21af438ce9e5f22f27e69d97dfb3767e3d3e479229c09 languageName: node linkType: hard -"@apollo/federation-internals@npm:^2.1.1, @apollo/federation-internals@npm:^2.1.3": - version: 2.1.3 - resolution: "@apollo/federation-internals@npm:2.1.3" +"@apollo/federation-internals@npm:2.9.3, @apollo/federation-internals@npm:^2.1.1": + version: 2.9.3 + resolution: "@apollo/federation-internals@npm:2.9.3" dependencies: + "@types/uuid": ^9.0.0 chalk: ^4.1.0 js-levenshtein: ^1.1.6 + uuid: ^9.0.0 peerDependencies: graphql: ^16.5.0 - checksum: a80a9f1e1b7490ba8a01e17a11cea22d381c35cc9134858b7bc8a0012adf077a285d173bbe54874b685c33af619b6cf041fc8b52af8bf541e911df83a0a445fc + checksum: 1227e9c63d7e5dc8aa935a248959103675fe163423ec05d09fbbe8fa9434c040d0280248091978708ca97b0766178ac2e5f88892a20dcecf7600065924bae59c languageName: node linkType: hard @@ -399,45 +385,70 @@ __metadata: languageName: node linkType: hard -"@apollo/query-graphs@npm:^2.1.3": - version: 2.1.3 - resolution: "@apollo/query-graphs@npm:2.1.3" +"@apollo/protobufjs@npm:1.2.7": + version: 1.2.7 + resolution: "@apollo/protobufjs@npm:1.2.7" dependencies: - "@apollo/federation-internals": ^2.1.3 + "@protobufjs/aspromise": ^1.1.2 + "@protobufjs/base64": ^1.1.2 + "@protobufjs/codegen": ^2.0.4 + "@protobufjs/eventemitter": ^1.1.0 + "@protobufjs/fetch": ^1.1.0 + "@protobufjs/float": ^1.0.2 + "@protobufjs/inquire": ^1.1.0 + "@protobufjs/path": ^1.1.2 + "@protobufjs/pool": ^1.1.0 + "@protobufjs/utf8": ^1.1.0 + "@types/long": ^4.0.0 + long: ^4.0.0 + bin: + apollo-pbjs: bin/pbjs + apollo-pbts: bin/pbts + checksum: e01a33984ae06d6679f6796bb44e55260112ddd090ebc9f87d3f952c45153dd5df5c91ac4bf91ba60fb72ff8c1218059ce4bf8bb2eb08c5049c783de0098eec0 + languageName: node + linkType: hard + +"@apollo/query-graphs@npm:2.9.3": + version: 2.9.3 + resolution: "@apollo/query-graphs@npm:2.9.3" + dependencies: + "@apollo/federation-internals": 2.9.3 deep-equal: ^2.0.5 - ts-graphviz: ^0.16.0 + ts-graphviz: ^1.5.4 + uuid: ^9.0.0 peerDependencies: graphql: ^16.5.0 - checksum: 919029ce34510d1d8a747d803b8cde603ddd56f947c5bc2676eba7fd3a2f427112bffcdf19f79f71c14f19cf846f33688324876dded06c38cc51d03df8038f70 + checksum: f83c0c545f46706379e04503abc1b9be9c8b11eaa78d75d54254eebfb8417ac7304c0df3b56f198d58a8c35947425bf9a691ff5391812d564602710d8c56f848 languageName: node linkType: hard "@apollo/query-planner@npm:^2.1.1": - version: 2.1.3 - resolution: "@apollo/query-planner@npm:2.1.3" + version: 2.9.3 + resolution: "@apollo/query-planner@npm:2.9.3" dependencies: - "@apollo/federation-internals": ^2.1.3 - "@apollo/query-graphs": ^2.1.3 + "@apollo/federation-internals": 2.9.3 + "@apollo/query-graphs": 2.9.3 + "@apollo/utils.keyvaluecache": ^2.1.0 chalk: ^4.1.0 deep-equal: ^2.0.5 - pretty-format: ^28.0.0 + pretty-format: ^29.0.0 peerDependencies: graphql: ^16.5.0 - checksum: e24fc504f944b7224278a8b528e5e5a7619955f0caa3e8ed2f65ca744bd26c2a60fe714baf378ca757ec372325abad1fb82154462ce7e497be7922bfbbaa81e7 + checksum: 65aaded0777e0ced4f9bd7bb770d2f28df2dc8661355f312fae74a942b11f2d6a42cf4101347f6f1a06f034c81b6b562501edbd4a00a615d4ab41287b43d4490 languageName: node linkType: hard "@apollo/server-gateway-interface@npm:^1.0.2": - version: 1.0.4 - resolution: "@apollo/server-gateway-interface@npm:1.0.4" + version: 1.1.1 + resolution: "@apollo/server-gateway-interface@npm:1.1.1" dependencies: - "@apollo/usage-reporting-protobuf": ^4.0.0 - "@apollo/utils.fetcher": ^1.0.0 - "@apollo/utils.keyvaluecache": ^1.0.1 - "@apollo/utils.logger": ^1.0.0 + "@apollo/usage-reporting-protobuf": ^4.1.1 + "@apollo/utils.fetcher": ^2.0.0 + "@apollo/utils.keyvaluecache": ^2.1.0 + "@apollo/utils.logger": ^2.0.0 peerDependencies: graphql: 14.x || 15.x || 16.x - checksum: 1931a038d5ad4331d9794143d91d579bdb136604b4df8feeac8e9b1653cc935c1674b803120fcacff3748bdd2f2e5dbfd99ec46fc4329507fecff99379ba283c + checksum: b85ca1682258f6d022b49acf4b6cb8147a4cc38fcc0e68fa3ca6a00843bee5b84f8317af26cbe3e6a41ede6990eb7eb733c50a123441a1efab56572b7d0fd6dc languageName: node linkType: hard @@ -453,12 +464,12 @@ __metadata: languageName: node linkType: hard -"@apollo/usage-reporting-protobuf@npm:^4.0.0": - version: 4.0.0 - resolution: "@apollo/usage-reporting-protobuf@npm:4.0.0" +"@apollo/usage-reporting-protobuf@npm:^4.0.0, @apollo/usage-reporting-protobuf@npm:^4.1.1": + version: 4.1.1 + resolution: "@apollo/usage-reporting-protobuf@npm:4.1.1" dependencies: - "@apollo/protobufjs": 1.2.6 - checksum: 86a0d392932d8103bc14d0900dcd5d209eedf8aeb598c9c54fb8aa44bda59f3fab4c03f1358acdbf9c523858c24ecad12677a45e46c17a259e21f18c13a7bf49 + "@apollo/protobufjs": 1.2.7 + checksum: 899f13cfb57cfe4320e50fff84254604c25538620aa5a56bad06fb4fc929a8842237b376a5ab6d82800d9aceacc8e79ccae01a1c11e85456d4a9ed50a6fe40ee languageName: node linkType: hard @@ -481,13 +492,20 @@ __metadata: languageName: node linkType: hard -"@apollo/utils.fetcher@npm:^1.0.0, @apollo/utils.fetcher@npm:^1.1.0": +"@apollo/utils.fetcher@npm:^1.1.0": version: 1.1.1 resolution: "@apollo/utils.fetcher@npm:1.1.1" checksum: 7f2284cfddeb59775dc471d20d0a447049f32c069df429ac4aa7b733bd341f6cc9b755fd37226a73b00a4c9fa7f598cb2f5ce0a98dc22a2ce9217cc6947f5f09 languageName: node linkType: hard +"@apollo/utils.fetcher@npm:^2.0.0": + version: 2.0.1 + resolution: "@apollo/utils.fetcher@npm:2.0.1" + checksum: 9cb0e759f61c6d2bfe3319eeb273e30e52212fa79e59da0ae29ac96fa735cb1bb333b6a97c39df62e36acb0c4a15d62d1bc6b0027a9ca41f5d1c995561b668f2 + languageName: node + linkType: hard + "@apollo/utils.isnodelike@npm:^1.1.0": version: 1.1.0 resolution: "@apollo/utils.isnodelike@npm:1.1.0" @@ -507,22 +525,32 @@ __metadata: linkType: hard "@apollo/utils.keyvaluecache@npm:^1.0.1": - version: 1.0.1 - resolution: "@apollo/utils.keyvaluecache@npm:1.0.1" + version: 1.0.2 + resolution: "@apollo/utils.keyvaluecache@npm:1.0.2" dependencies: "@apollo/utils.logger": ^1.0.0 - lru-cache: ^7.10.1 - checksum: 1a5dbd2eae0575905e25d471430d431d145b767ee6f5e8efe3ba64ed44208db131f437e36cf17df6623ae6de97a87c4c8691b4a274510b52ab49f6afe9627a3b + lru-cache: 7.10.1 - 7.13.1 + checksum: e07414e44fd4d79e14c97999cb53335cffdd419f3df9364cc32e865f4802b79b50e7f3b5fbdd6a5f21b1cb01a9de290fae8dd55cc616e0e32310c5dfdb4dcc5e + languageName: node + linkType: hard + +"@apollo/utils.keyvaluecache@npm:^2.1.0": + version: 2.1.1 + resolution: "@apollo/utils.keyvaluecache@npm:2.1.1" + dependencies: + "@apollo/utils.logger": ^2.0.1 + lru-cache: ^7.14.1 + checksum: c49b297a30ef02336d605a9fd342443eb9ea7ea36b9331a2cd5f8cb1613656e5d06b4445ca09784b18c12b417bca17fe09d40e25196266e2a734da3200d27ea5 languageName: node linkType: hard "@apollo/utils.keyvaluecache@npm:^3.0.0": - version: 3.0.0 - resolution: "@apollo/utils.keyvaluecache@npm:3.0.0" + version: 3.1.0 + resolution: "@apollo/utils.keyvaluecache@npm:3.1.0" dependencies: "@apollo/utils.logger": ^3.0.0 - lru-cache: ^9.0.3 - checksum: 4cdeefa8cb1991abc53b2f636ad26b6255516086f6dea88f0502be9c46598ffa804ab512af7aa95f6903f8496fb4c649144b18f092a60a1b11d7c8a662936125 + lru-cache: ^10.0.0 + checksum: 53ec867ed0002ba06c1ce0b4877931a5437dbc5bfab9fd4bd8344cea5785529b809ff3b6eb5cd65439823dd5275eb8a252b01d80ed722d7cba9304aefe441fb6 languageName: node linkType: hard @@ -533,6 +561,13 @@ __metadata: languageName: node linkType: hard +"@apollo/utils.logger@npm:^2.0.0, @apollo/utils.logger@npm:^2.0.1": + version: 2.0.1 + resolution: "@apollo/utils.logger@npm:2.0.1" + checksum: f975c81fcc7e54669b975031349f292930dc4cc3dd6bdc58bc7fe2159e0398a7d18b28860ee324c23722b005848e258094a143d20f6989fde5837379240b0066 + languageName: node + linkType: hard + "@apollo/utils.logger@npm:^3.0.0": version: 3.0.0 resolution: "@apollo/utils.logger@npm:3.0.0" @@ -579,18 +614,18 @@ __metadata: linkType: hard "@apollo/utils.usagereporting@npm:^1.0.0": - version: 1.0.0 - resolution: "@apollo/utils.usagereporting@npm:1.0.0" + version: 1.0.1 + resolution: "@apollo/utils.usagereporting@npm:1.0.1" dependencies: + "@apollo/usage-reporting-protobuf": ^4.0.0 "@apollo/utils.dropunuseddefinitions": ^1.1.0 "@apollo/utils.printwithreducedwhitespace": ^1.1.0 "@apollo/utils.removealiases": 1.0.0 "@apollo/utils.sortast": ^1.1.0 "@apollo/utils.stripsensitiveliterals": ^1.2.0 - apollo-reporting-protobuf: ^3.3.1 peerDependencies: graphql: 14.x || 15.x || 16.x - checksum: 9f4d1b8381fc7930619c51ce96580e61e604455e01701de9c822245d3a7583553a0cc4c050450ddf80d8e556682b2ac79ed784c58a8b98b52cf097d344c5d1d8 + checksum: 20d79f2b6d177f1f78421175d7b1db6a3cb2bc2fa67e0e09850450657914f5adaa7e8d2e5f3906bc07fa4f1c5a28221f2421eb284b9170f4b0acfabdb71212f6 languageName: node linkType: hard @@ -641,7 +676,7 @@ __metadata: languageName: node linkType: hard -"@ardatan/sync-fetch@npm:0.0.1": +"@ardatan/sync-fetch@npm:^0.0.1": version: 0.0.1 resolution: "@ardatan/sync-fetch@npm:0.0.1" dependencies: @@ -684,11 +719,11 @@ __metadata: linkType: hard "@aws-crypto/ie11-detection@npm:^2.0.0": - version: 2.0.0 - resolution: "@aws-crypto/ie11-detection@npm:2.0.0" + version: 2.0.2 + resolution: "@aws-crypto/ie11-detection@npm:2.0.2" dependencies: tslib: ^1.11.1 - checksum: dd15daa1160ecdf28b9c930dcbd7f8bc96e74d7f791134974b672f5d36182274c76db4fff414385cdb8997a8b7ade991988a571aaac3184e226e2ed6428d895f + checksum: 713293deea8eefd3ab43dc05e62228571d27754e7293f8ec2fd8a0c693fbbfc55213e6599387776e3cdbc951965dc62e24e92b9c4a853e4a50d00ae6a9f6b2bd languageName: node linkType: hard @@ -737,7 +772,7 @@ __metadata: languageName: node linkType: hard -"@aws-crypto/sha256-js@npm:2.0.0, @aws-crypto/sha256-js@npm:^2.0.0": +"@aws-crypto/sha256-js@npm:2.0.0": version: 2.0.0 resolution: "@aws-crypto/sha256-js@npm:2.0.0" dependencies: @@ -759,12 +794,23 @@ __metadata: languageName: node linkType: hard +"@aws-crypto/sha256-js@npm:^2.0.0": + version: 2.0.2 + resolution: "@aws-crypto/sha256-js@npm:2.0.2" + dependencies: + "@aws-crypto/util": ^2.0.2 + "@aws-sdk/types": ^3.110.0 + tslib: ^1.11.1 + checksum: 9125ec65a2b05fce908ac2289ba97b995a299f2d717684804211df8e8bcffd8cd9b8861582240655b88f2255c46fcee34026f75c057ffb22f44b6a76cd43f65a + languageName: node + linkType: hard + "@aws-crypto/supports-web-crypto@npm:^2.0.0": - version: 2.0.0 - resolution: "@aws-crypto/supports-web-crypto@npm:2.0.0" + version: 2.0.2 + resolution: "@aws-crypto/supports-web-crypto@npm:2.0.2" dependencies: tslib: ^1.11.1 - checksum: 77fad3813a5d3c495296fb836293184d32aeddacd436bf7d1b59b93d87de4cf7c0dbf862d4eaf915259edfb7b424ea05e2ceeddbaa1588a154d0c19df455c475 + checksum: 03d04d29292dc1b76db9bc6becd05f52fa79adee0ec084f971b0767f7e73250dd0422bea57636015f8c27f38aefcd1d9c58800a4749cf35339296c8d670f3ccb languageName: node linkType: hard @@ -777,14 +823,14 @@ __metadata: languageName: node linkType: hard -"@aws-crypto/util@npm:^2.0.0": - version: 2.0.0 - resolution: "@aws-crypto/util@npm:2.0.0" +"@aws-crypto/util@npm:^2.0.0, @aws-crypto/util@npm:^2.0.2": + version: 2.0.2 + resolution: "@aws-crypto/util@npm:2.0.2" dependencies: - "@aws-sdk/types": ^3.1.0 + "@aws-sdk/types": ^3.110.0 "@aws-sdk/util-utf8-browser": ^3.0.0 tslib: ^1.11.1 - checksum: afff771bf8023218df3b224f0ad6b8f1a4cded4bdc0a4f9ff7234e7089311034b2046f8ba29d2e94810a46d5c38a2103d4828b60325cb0c49aea4d6cbb741c6a + checksum: 13cb33a39005b09c062398d361043c2224bc8ba42b1432bad52e15bc4bf9ffad4facdddc394b3cc71b3fb8d86a7ec325fd1afa107b5fde0dab84a7e32d311d7f languageName: node linkType: hard @@ -1969,14 +2015,14 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.127.0, @aws-sdk/types@npm:^3.1.0": +"@aws-sdk/types@npm:3.127.0": version: 3.127.0 resolution: "@aws-sdk/types@npm:3.127.0" checksum: 35467177421fb180ca73eb85a327c814e3aaee11a8eabbf9f048d58ec4133d7205400ce2e3c3ef70d78a64a2359f1df2926e1a0e6f169a415c2896ff6dfb66d9 languageName: node linkType: hard -"@aws-sdk/types@npm:3.662.0, @aws-sdk/types@npm:^3.222.0": +"@aws-sdk/types@npm:3.662.0": version: 3.662.0 resolution: "@aws-sdk/types@npm:3.662.0" dependencies: @@ -1986,6 +2032,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.110.0, @aws-sdk/types@npm:^3.222.0": + version: 3.679.0 + resolution: "@aws-sdk/types@npm:3.679.0" + dependencies: + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: e82a011f32ca443f2f6762f32dd002bab1654742130fd0d5734fc16c1aa8821096f53ef5dd899ee7e0eab7cb08a2584fe7b87b1efccb90a774cacd37a58c2e7e + languageName: node + linkType: hard + "@aws-sdk/url-parser@npm:3.127.0": version: 3.127.0 resolution: "@aws-sdk/url-parser@npm:3.127.0" @@ -2122,11 +2178,11 @@ __metadata: linkType: hard "@aws-sdk/util-locate-window@npm:^3.0.0": - version: 3.37.0 - resolution: "@aws-sdk/util-locate-window@npm:3.37.0" + version: 3.679.0 + resolution: "@aws-sdk/util-locate-window@npm:3.679.0" dependencies: - tslib: ^2.3.0 - checksum: d17fd73797d093a0de2e53ed3999562061858f78b88f993a83d8035fdda613c252a2fbab9abaf1d4fb595ae84e1747e17b137f8079fb99568c0c1641c54f5c4f + tslib: ^2.6.2 + checksum: a92402253aff12be137abff0f6ce1acbda89d9dfb2267753d7907479592cba3682e91ccefd21b912cf4b62bac3068b3278ab5cd79f09c46b63edf31170fa56df languageName: node linkType: hard @@ -2204,7 +2260,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-utf8-browser@npm:3.109.0, @aws-sdk/util-utf8-browser@npm:^3.0.0": +"@aws-sdk/util-utf8-browser@npm:3.109.0": version: 3.109.0 resolution: "@aws-sdk/util-utf8-browser@npm:3.109.0" dependencies: @@ -2213,6 +2269,15 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-utf8-browser@npm:^3.0.0": + version: 3.259.0 + resolution: "@aws-sdk/util-utf8-browser@npm:3.259.0" + dependencies: + tslib: ^2.3.1 + checksum: b6a1e580da1c9b62c749814182a7649a748ca4253edb4063aa521df97d25b76eae3359eb1680b86f71aac668e05cc05c514379bca39ebf4ba998ae4348412da8 + languageName: node + linkType: hard + "@aws-sdk/util-utf8-node@npm:3.109.0": version: 3.109.0 resolution: "@aws-sdk/util-utf8-node@npm:3.109.0" @@ -2245,9 +2310,9 @@ __metadata: linkType: hard "@azure/msal-common@npm:^9.0.0": - version: 9.0.0 - resolution: "@azure/msal-common@npm:9.0.0" - checksum: e4b1fcff3a95a019761e62b6a3a7a8a5a67905826771ed262b8741efa719afb992db213b74b1000b1fee6faf8041189045fd32beb9d0e69961a7ee0980539546 + version: 9.1.1 + resolution: "@azure/msal-common@npm:9.1.1" + checksum: d51d645ee485b699a0fbeab6d9bb01c91f4124704f756266e109c2d1d8ea0ca8d66a9ab81f62f9f76e7358906badcf7d2dd9911c18e20f57770ec9beb4fc4fcd languageName: node linkType: hard @@ -2271,90 +2336,20 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/code-frame@npm:7.21.4" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: e5390e6ec1ac58dcef01d4f18eaf1fd2f1325528661ff6d4a5de8979588b9f5a8e852a54a91b923846f7a5c681b217f0a45c2524eb9560553160cd963b7d592c - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.22.5": - version: 7.22.13 - resolution: "@babel/code-frame@npm:7.22.13" - dependencies: - "@babel/highlight": ^7.22.13 - chalk: ^2.4.2 - checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/code-frame@npm:7.25.9" dependencies: - "@babel/highlight": ^7.24.7 + "@babel/highlight": ^7.25.9 picocolors: ^1.0.0 - checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 + checksum: 458015f42f130bc70a19aaf016eaabb51e8c6508feb65394115972621bf864c2cc6b07ee547b1d95e2fde958e14243f79a4d0223ef6d52963820cafcf6fcf11b languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.10, @babel/compat-data@npm:^7.19.3": - version: 7.19.4 - resolution: "@babel/compat-data@npm:7.19.4" - checksum: 757fdaeb6756c2d323ff56f60fb8e670292108cda6abf762a56c0d40910ecc4d2c7e283dbdfbcee6bc28c74ad659144352609e1cb49d31e101ab13ea5ce90072 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/compat-data@npm:7.21.4" - checksum: 5f8b98c66f2ffba9f3c3a82c0cf354c52a0ec5ad4797b370dc32bdcd6e136ac4febe5e93d76ce76e175632e2dbf6ce9f46319aa689fcfafa41b6e49834fa4b66 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.22.0, @babel/compat-data@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/compat-data@npm:7.22.3" - checksum: eb001646f41459f42ccb0d39ee8bb3c3c495bc297234817044c0002689c625e3159a6678c53fd31bd98cf21f31472b73506f350fc6906e3bdfa49cb706e2af8d - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.22.5": - version: 7.22.20 - resolution: "@babel/compat-data@npm:7.22.20" - checksum: efedd1d18878c10fde95e4d82b1236a9aba41395ef798cbb651f58dbf5632dbff475736c507b8d13d4c8f44809d41c0eb2ef0d694283af9ba5dd8339b6dab451 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/compat-data@npm:7.24.7" - checksum: 1fc276825dd434fe044877367dfac84171328e75a8483a6976aa28bf833b32367e90ee6df25bdd97c287d1aa8019757adcccac9153de70b1932c0d243a978ae9 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/compat-data@npm:7.25.2" - checksum: b61bc9da7cfe249f19d08da00f4f0c20550cd9ad5bffcde787c2bf61a8a6fa5b66d92bbd89031f3a6e5495a799a2a2499f2947b6cc7964be41979377473ab132 +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/compat-data@npm:7.25.9" + checksum: 59d8c9d4907076e9a7a02ef065faec7b6f512bdaaf160dfa4e3c4476d816203a304d6e86e7104b063ac7cde571ee20dd83eb7b5260ef2e7cd06ca681bc424aa7 languageName: node linkType: hard @@ -2381,124 +2376,32 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.10, @babel/core@npm:^7.14.0, @babel/core@npm:^7.7.5": - version: 7.19.3 - resolution: "@babel/core@npm:7.19.3" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.3 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-module-transforms": ^7.19.0 - "@babel/helpers": ^7.19.0 - "@babel/parser": ^7.19.3 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.3 - "@babel/types": ^7.19.3 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: dd883311209ad5a2c65b227daeb7247d90a382c50f4c6ad60c5ee40927eb39c34f0690d93b775c0427794261b72fa8f9296589a2dbda0782366a9f1c6de00c08 - languageName: node - linkType: hard - -"@babel/core@npm:^7.10.4, @babel/core@npm:^7.13.16, @babel/core@npm:^7.20.0": - version: 7.21.4 - resolution: "@babel/core@npm:7.21.4" +"@babel/core@npm:^7.1.0, @babel/core@npm:^7.10.4, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.10, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.22.9, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.7.5": + version: 7.25.9 + resolution: "@babel/core@npm:7.25.9" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.4 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.4 - "@babel/types": ^7.21.4 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: a3beebb2cc79908a02f27a07dc381bcb34e8ecc58fa99f568ad0934c49e12111fc977ee9c5b51eb7ea2da66f63155d37c4dd96b6472eaeecfc35843ccb56bf3d - languageName: node - linkType: hard - -"@babel/core@npm:^7.18.9, @babel/core@npm:^7.23.2": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.24.7 - "@babel/generator": ^7.25.0 - "@babel/helper-compilation-targets": ^7.25.2 - "@babel/helper-module-transforms": ^7.25.2 - "@babel/helpers": ^7.25.0 - "@babel/parser": ^7.25.0 - "@babel/template": ^7.25.0 - "@babel/traverse": ^7.25.2 - "@babel/types": ^7.25.2 + "@babel/code-frame": ^7.25.9 + "@babel/generator": ^7.25.9 + "@babel/helper-compilation-targets": ^7.25.9 + "@babel/helper-module-transforms": ^7.25.9 + "@babel/helpers": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/template": ^7.25.9 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a - languageName: node - linkType: hard - -"@babel/core@npm:^7.21.3": - version: 7.22.1 - resolution: "@babel/core@npm:7.22.1" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.22.0 - "@babel/helper-compilation-targets": ^7.22.1 - "@babel/helper-module-transforms": ^7.22.1 - "@babel/helpers": ^7.22.0 - "@babel/parser": ^7.22.0 - "@babel/template": ^7.21.9 - "@babel/traverse": ^7.22.1 - "@babel/types": ^7.22.0 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: bbe45e791f223a7e692d2ea6597a73f48050abd24b119c85c48ac6504c30ce63343a2ea3f79b5847bf4b409ddd8a68b6cdc4f0272ded1d2ef6f6b1e9663432f0 - languageName: node - linkType: hard - -"@babel/core@npm:^7.22.9": - version: 7.22.17 - resolution: "@babel/core@npm:7.22.17" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.22.15 - "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-module-transforms": ^7.22.17 - "@babel/helpers": ^7.22.15 - "@babel/parser": ^7.22.16 - "@babel/template": ^7.22.15 - "@babel/traverse": ^7.22.17 - "@babel/types": ^7.22.17 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.3 - semver: ^6.3.1 - checksum: 355216a342d1b3952d7c040dd4c99ecef6b3501ba99a713703c1fec1ae73bc92a48a0c1234562bdbb4fd334b2e452f5a6c3bb282f0e613fa89e1518c91d1aea1 + checksum: 6633cd8abdd679ffefe526a6611d4721f90f76ebf1944a8501e8beccad24a4a71c07530c8245370660c6449618b9f454a3326bac85ff03d61df7bab6f0710522 languageName: node linkType: hard "@babel/eslint-parser@npm:^7.20.0": - version: 7.24.7 - resolution: "@babel/eslint-parser@npm:7.24.7" + version: 7.25.9 + resolution: "@babel/eslint-parser@npm:7.25.9" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 eslint-visitor-keys: ^2.1.0 @@ -2506,405 +2409,115 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 0e08ccecfe48cf9dacd96fb46747014b9c3683882ae6886a17a666533f0d5e99b61e31e3992ffee0efc67d805ae8be9b2a6342ce5d66a36de8d99d88c9a244a0 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.19.3, @babel/generator@npm:^7.19.4, @babel/generator@npm:^7.7.2": - version: 7.19.5 - resolution: "@babel/generator@npm:7.19.5" - dependencies: - "@babel/types": ^7.19.4 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: a66eafc540f80fc36c1b009b28bde1d12aff85e7916e7f5adf49c5a8866fecee4906b3c3c6db315d2723ea54e4e5ddfb2913fe6ab424f51dbccf753000930eaf - languageName: node - linkType: hard - -"@babel/generator@npm:^7.20.0, @babel/generator@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/generator@npm:7.21.4" - dependencies: - "@babel/types": ^7.21.4 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 9ffbb526a53bb8469b5402f7b5feac93809b09b2a9f82fcbfcdc5916268a65dae746a1f2479e03ba4fb0776facd7c892191f63baa61ab69b2cfdb24f7b92424d - languageName: node - linkType: hard - -"@babel/generator@npm:^7.20.5, @babel/generator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/generator@npm:7.24.7" - dependencies: - "@babel/types": ^7.24.7 - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.25 - jsesc: ^2.5.1 - checksum: 0ff31a73b15429f1287e4d57b439bba4a266f8c673bb445fe313b82f6d110f586776997eb723a777cd7adad9d340edd162aea4973a90112c5d0cfcaf6686844b - languageName: node - linkType: hard - -"@babel/generator@npm:^7.22.0, @babel/generator@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/generator@npm:7.22.3" - dependencies: - "@babel/types": ^7.22.3 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: ccb6426ca5b5a38f0d47a3ac9628e223d2aaaa489cbf90ffab41468795c22afe86855f68a58667f0f2673949f1810d4d5a57b826c17984eab3e28fdb34a909e6 + checksum: dd2afa122b62a5b07c1e71d1c23b2cd4d655d96609eb2ba1b1ae3ec6f415f4365b77d6669ff859aa7b75952fb63a1d29c5db6e5811fc4012841491cb2dee36e4 languageName: node linkType: hard -"@babel/generator@npm:^7.22.15, @babel/generator@npm:^7.22.9": - version: 7.22.15 - resolution: "@babel/generator@npm:7.22.15" - dependencies: - "@babel/types": ^7.22.15 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 5b2a3ccdc3634f6ea86e0a442722bcd430238369432d31f15b428a4ee8013c2f4f917b5b135bf4fc1d0a3e2f87f10fd4ce5d07955ecc2d3b9400a05c2a481374 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/generator@npm:7.23.0" +"@babel/generator@npm:7.2.0": + version: 7.2.0 + resolution: "@babel/generator@npm:7.2.0" dependencies: - "@babel/types": ^7.23.0 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 + "@babel/types": ^7.2.0 jsesc: ^2.5.1 - checksum: 8efe24adad34300f1f8ea2add420b28171a646edc70f2a1b3e1683842f23b8b7ffa7e35ef0119294e1901f45bfea5b3dc70abe1f10a1917ccdfb41bed69be5f1 + lodash: ^4.17.10 + source-map: ^0.5.0 + trim-right: ^1.0.1 + checksum: 0cfa36e3fee34908194e85a87dfcd2a92425e3810396556ae0c7987707754f1a2502cd66590fec0a5b7bf532ec021b8e2925a1119db54ed5b48f1e3c43145891 languageName: node linkType: hard -"@babel/generator@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/generator@npm:7.25.0" +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.20.0, @babel/generator@npm:^7.20.5, @babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.23.0, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/generator@npm:7.25.9" dependencies: - "@babel/types": ^7.25.0 + "@babel/types": ^7.25.9 "@jridgewell/gen-mapping": ^0.3.5 "@jridgewell/trace-mapping": ^0.3.25 - jsesc: ^2.5.1 - checksum: bf25649dde4068bff8e387319bf820f2cb3b1af7b8c0cfba0bd90880656427c8bad96cd5cb6db7058d20cffe93149ee59da16567018ceaa21ecaefbf780a785c - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.16.0, @babel/helper-annotate-as-pure@npm:^7.16.7, @babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: 53da330f1835c46f26b7bf4da31f7a496dee9fd8696cca12366b94ba19d97421ce519a74a837f687749318f94d1a37f8d1abcbf35e8ed22c32d16373b2f6198d + jsesc: ^3.0.2 + checksum: 4b8f27363e6521ca9e33d307744aeff8b6f540492eb935e597e115304d999eb228b24d43ce679e2c0337b4a98966ae28dc53f1fab86db1eb852d53e11120fd7b languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" +"@babel/helper-annotate-as-pure@npm:^7.22.5, @babel/helper-annotate-as-pure@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" dependencies: - "@babel/types": ^7.24.7 - checksum: 6178566099a6a0657db7a7fa601a54fb4731ca0b8614fbdccfd8e523c210c13963649bc8fdfd53ce7dd14d05e3dda2fb22dea5b30113c488b9eb1a906d60212e + "@babel/types": ^7.25.9 + checksum: 41edda10df1ae106a9b4fe617bf7c6df77db992992afd46192534f5cff29f9e49a303231733782dd65c5f9409714a529f215325569f14282046e9d3b7a1ffb6c languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.9" dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.9 - checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: e1bb465b3b0155702d82cfef09e3813e87a6d777cdd2c513796861eac14953340491eafea1d4109278bf4ceb48b54074c45758f042c0544d00c498090bee5a6f languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-compilation-targets@npm:7.25.9" dependencies: - "@babel/types": ^7.22.15 - checksum: 639c697a1c729f9fafa2dd4c9af2e18568190299b5907bd4c2d0bc818fcbd1e83ffeecc2af24327a7faa7ac4c34edd9d7940510a5e66296c19bad17001cf5c7a - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 71a6158a9fdebffb82fdc400d5555ba8f2e370cea81a0d578155877bdc4db7d5252b75c43b2fdf3f72b3f68348891f99bd35ae315542daad1b7ace8322b1abcb - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.16.7, @babel/helper-compilation-targets@npm:^7.17.10, @babel/helper-compilation-targets@npm:^7.19.3": - version: 7.19.3 - resolution: "@babel/helper-compilation-targets@npm:7.19.3" - dependencies: - "@babel/compat-data": ^7.19.3 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: aafcb4490c98cddb3255fff98bfbdb881b4def85a1935fd9b1f9b1f0f8b502696839f6b387fb508ca991ea72ba82ce6913bab99f21df4ce80bda2b79e91a09f5 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/helper-compilation-targets@npm:7.21.4" - dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-validator-option": ^7.21.0 - browserslist: ^4.21.3 + "@babel/compat-data": ^7.25.9 + "@babel/helper-validator-option": ^7.25.9 + browserslist: ^4.24.0 lru-cache: ^5.1.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: bf9c7d3e7e6adff9222c05d898724cd4ee91d7eb9d52222c7ad2a22955620c2872cc2d9bdf0e047df8efdb79f4e3af2a06b53f509286145feccc4d10ddc318be - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-compilation-targets@npm:7.22.1" - dependencies: - "@babel/compat-data": ^7.22.0 - "@babel/helper-validator-option": ^7.21.0 - browserslist: ^4.21.3 - lru-cache: ^5.1.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: a686a01bd3288cf95ca26faa27958d34c04e2501c4b0858c3a6558776dec20317b5635f33d64c5a635b6fbdfe462a85c30d4bfa0ae7e7ffe3467e4d06442d7c8 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.15 - resolution: "@babel/helper-compilation-targets@npm:7.22.15" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.15 - browserslist: ^4.21.9 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: ce85196769e091ae54dd39e4a80c2a9df1793da8588e335c383d536d54f06baf648d0a08fc873044f226398c4ded15c4ae9120ee18e7dfd7c639a68e3cdc9980 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-compilation-targets@npm:7.24.7" - dependencies: - "@babel/compat-data": ^7.24.7 - "@babel/helper-validator-option": ^7.24.7 - browserslist: ^4.22.2 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: dfc88bc35e223ade796c7267901728217c665adc5bc2e158f7b0ae850de14f1b7941bec4fe5950ae46236023cfbdeddd9c747c276acf9b39ca31f8dd97dc6cc6 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" - dependencies: - "@babel/compat-data": ^7.25.2 - "@babel/helper-validator-option": ^7.24.8 - browserslist: ^4.23.1 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: aed33c5496cb9db4b5e2d44e26bf8bc474074cc7f7bb5ebe1d4a20fdeb362cb3ba9e1596ca18c7484bcd6e5c3a155ab975e420d520c0ae60df81f9de04d0fd16 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": - version: 7.21.4 - resolution: "@babel/helper-create-class-features-plugin@npm:7.21.4" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-member-expression-to-functions": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/helper-split-export-declaration": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 9123ca80a4894aafdb1f0bc08e44f6be7b12ed1fbbe99c501b484f9b1a17ff296b6c90c18c222047d53c276f07f17b4de857946fa9d0aa207023b03e4cc716f2 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.22.1 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-member-expression-to-functions": ^7.22.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.22.1 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/helper-split-export-declaration": ^7.18.6 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: a132d940c345effc55f4d018db4d113be56528cc5f9bdc12d14da311d27febdde9c606c62e81d17c7ab06b44fb7995d6116ed2aceee75ffa6c5e4e2da3c106ba - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.15 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 52c500d8d164abb3a360b1b7c4b8fff77bc4a5920d3a2b41ae6e1d30617b0dc0b972c1f5db35b1752007e04a748908b4a99bc872b73549ae837e87dcdde005a3 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-create-class-features-plugin@npm:7.24.7" - dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - "@babel/helper-environment-visitor": ^7.24.7 - "@babel/helper-function-name": ^7.24.7 - "@babel/helper-member-expression-to-functions": ^7.24.7 - "@babel/helper-optimise-call-expression": ^7.24.7 - "@babel/helper-replace-supers": ^7.24.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 - "@babel/helper-split-export-declaration": ^7.24.7 semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 371a181a1717a9b0cebc97727c8ea9ca6afa34029476a684b6030f9d1ad94dcdafd7de175da10b63ae3ba79e4e82404db8ed968ebf264b768f097e5d64faab71 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.16.7, @babel/helper-create-regexp-features-plugin@npm:^7.17.12": - version: 7.17.12 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.17.12" - dependencies: - "@babel/helper-annotate-as-pure": ^7.16.7 - regexpu-core: ^5.0.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: fe49d26b0f6c58d4c1748a4d0e98b343882b428e6db43c4ba5e0aa7ff2296b3a557f0a88de9f000599bb95640a6c47c0b0c9a952b58c11f61aabb06bcc304329 + checksum: 3af536e2db358b38f968abdf7d512d425d1018fef2f485d6f131a57a7bcaed32c606b4e148bb230e1508fa42b5b2ac281855a68eb78270f54698c48a83201b9b languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": - version: 7.21.4 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.4" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 78334865db2cd1d64d103bd0d96dee2818b0387d10aa973c084e245e829df32652bca530803e397b7158af4c02b9b21d5a9601c29bdfbb8d54a3d4ad894e067b - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.3.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 52d875762110d5dac41ce21fa30a2aaa47c119ca58add190a5123b7a843da096854c0b6358c327b8e0dc2f2219a47eace69332d8a26f165f529ec402a4e6f974 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - regexpu-core: ^5.3.1 + "@babel/helper-annotate-as-pure": ^7.25.9 + "@babel/helper-member-expression-to-functions": ^7.25.9 + "@babel/helper-optimise-call-expression": ^7.25.9 + "@babel/helper-replace-supers": ^7.25.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 + "@babel/traverse": ^7.25.9 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 0243b8d4854f1dc8861b1029a46d3f6393ad72f366a5a08e36a4648aa682044f06da4c6e87a456260e1e1b33c999f898ba591a0760842c1387bcc93fbf2151a6 + checksum: 91dd5f203ed04568c70b052e2f26dfaac7c146447196c00b8ecbb6d3d2f3b517abadb985d3321a19d143adaed6fe17f7f79f8f50e0c20e9d8ad83e1027b42424 languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.24.7, @babel/helper-create-regexp-features-plugin@npm:^7.25.0": - version: 7.25.2 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.2" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - regexpu-core: ^5.3.1 + "@babel/helper-annotate-as-pure": ^7.25.9 + regexpu-core: ^6.1.1 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: df55fdc6a1f3090dd37d91347df52d9322d52affa239543808dc142f8fe35e6787e67d8612337668198fac85826fafa9e6772e6c28b7d249ec94e6fafae5da6e + checksum: 563ed361ceed3d7a9d64dd58616bf6f0befcc23620ab22d31dd6d8b751d3f99d6d210487b1a5a1e209ab4594df67bacfab7445cbfa092bfe2b719cd42ae1ba6f languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" - dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8e3fe75513302e34f6d92bd67b53890e8545e6c5bca8fe757b9979f09d68d7e259f6daea90dc9e01e332c4f8781bda31c5fe551c82a277f9bc0bec007aed497c - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.4.0": - version: 0.4.0 - resolution: "@babel/helper-define-polyfill-provider@npm:0.4.0" +"@babel/helper-define-polyfill-provider@npm:^0.4.4": + version: 0.4.4 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.4" dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 debug: ^4.1.1 lodash.debounce: ^4.0.8 resolve: ^1.14.2 - semver: ^6.1.2 peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 5dca4c5e78457c5ced366bea601efa4e8c69bf5d53b0fe540283897575c49b1b88191c8ef062110de9046e886703ed3270fcda3a87f0886cdbb549204d3ff63f + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 2453cdd79f18a4cb8653d8a7e06b2eb0d8e31bae0d35070fc5abadbddca246a36d82b758064b421cca49b48d0e696d331d54520ba8582c1d61fb706d6d831817 languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.4.2": - version: 0.4.2 - resolution: "@babel/helper-define-polyfill-provider@npm:0.4.2" +"@babel/helper-define-polyfill-provider@npm:^0.5.0": + version: 0.5.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" dependencies: "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-plugin-utils": ^7.22.5 @@ -2913,7 +2526,7 @@ __metadata: resolve: ^1.14.2 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 1f6dec0c5d0876d278fe15b71238eccc5f74c4e2efa2c78aaafa8bc2cc96336b8e68d94cd1a78497356c96e8b91b8c1f4452179820624d1702aee2f9832e6569 + checksum: d24626b819d3875cb65189d761004e9230f2b3fb60542525c4785616f4b2366741369235a864b744f54beb26d625ae4b0af0c9bb3306b61bf4fccb61e0620020 languageName: node linkType: hard @@ -2932,35 +2545,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.16.7, @babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-environment-visitor@npm:7.22.1" - checksum: a6b4bb5505453bff95518d361ac1de393f0029aeb8b690c70540f4317934c53c43cc4afcda8c752ffa8c272e63ed6b929a56eca28e4978424177b24238b21bf9 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-environment-visitor@npm:7.22.5" - checksum: 248532077d732a34cd0844eb7b078ff917c3a8ec81a7f133593f71a860a582f05b60f818dc5049c2212e5baa12289c27889a4b81d56ef409b4863db49646c4b1 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.24.7": +"@babel/helper-environment-visitor@npm:^7.18.9": version: 7.24.7 resolution: "@babel/helper-environment-visitor@npm:7.24.7" dependencies: @@ -2969,596 +2554,103 @@ __metadata: languageName: node linkType: hard -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.16.7, @babel/helper-function-name@npm:^7.17.9, @babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" - dependencies: - "@babel/template": ^7.18.10 - "@babel/types": ^7.19.0 - checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-function-name@npm:7.21.0" - dependencies: - "@babel/template": ^7.20.7 - "@babel/types": ^7.21.0 - checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-function-name@npm:7.22.5" - dependencies: - "@babel/template": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: 6b1f6ce1b1f4e513bf2c8385a557ea0dd7fa37971b9002ad19268ca4384bbe90c09681fe4c076013f33deabc63a53b341ed91e792de741b4b35e01c00238177a - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-function-name@npm:7.23.0" - dependencies: - "@babel/template": ^7.22.15 - "@babel/types": ^7.23.0 - checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-function-name@npm:7.24.7" - dependencies: - "@babel/template": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 142ee08922074dfdc0ff358e09ef9f07adf3671ab6eef4fca74dcf7a551f1a43717e7efa358c9e28d7eea84c28d7f177b7a58c70452fc312ae3b1893c5dab2a4 - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-hoist-variables@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-hoist-variables@npm:7.24.7" - dependencies: - "@babel/types": ^7.24.7 - checksum: 6cfdcf2289cd12185dcdbdf2435fa8d3447b797ac75851166de9fc8503e2fd0021db6baf8dfbecad3753e582c08e6a3f805c8d00cbed756060a877d705bd8d8d - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" - dependencies: - "@babel/types": ^7.18.9 - checksum: fcf8184e3b55051c4286b2cbedf0eccc781d0f3c9b5cbaba582eca19bf0e8d87806cdb7efc8554fcb969ceaf2b187d5ea748d40022d06ec7739fbb18c1b19a7a - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.20.7, @babel/helper-member-expression-to-functions@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.21.0" - dependencies: - "@babel/types": ^7.21.0 - checksum: 49cbb865098195fe82ba22da3a8fe630cde30dcd8ebf8ad5f9a24a2b685150c6711419879cf9d99b94dad24cff9244d8c2a890d3d7ec75502cd01fe58cff5b5d - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.22.0": - version: 7.22.3 - resolution: "@babel/helper-member-expression-to-functions@npm:7.22.3" - dependencies: - "@babel/types": ^7.22.3 - checksum: c31b7c8096e722ab7717a1e2343b26afa469172aeb1a8643e9387a14bb50d77dd032fafedf282fcde37b90dcadd2e770c0dfea745a3b1de893d607f2ccba7c0f - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-member-expression-to-functions@npm:7.22.15" - dependencies: - "@babel/types": ^7.22.15 - checksum: c7c5d01c402dd8902c2ec3093f203ed0fc3bc5f669328a084d2e663c4c06dd0415480ee8220c6f96ba9b2dc49545c0078f221fc3900ab1e65de69a12fe7b361f - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-member-expression-to-functions@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 9fecf412f85fa23b7cf55d19eb69de39f8240426a028b141c9df2aed8cfedf20b3ec3318d40312eb7a3dec9eea792828ce0d590e0ff62da3da532482f537192c - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-member-expression-to-functions@npm:7.24.8" - dependencies: - "@babel/traverse": ^7.24.8 - "@babel/types": ^7.24.8 - checksum: bf923d05d81b06857f4ca4fe9c528c9c447a58db5ea39595bb559eae2fce01a8266173db0fd6a2ec129d7bbbb9bb22f4e90008252f7c66b422c76630a878a4bc - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/helper-module-imports@npm:7.21.4" - dependencies: - "@babel/types": ^7.21.4 - checksum: bd330a2edaafeb281fbcd9357652f8d2666502567c0aad71db926e8499c773c9ea9c10dfaae30122452940326d90c8caff5c649ed8e1bf15b23f858758d3abc6 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-module-imports@npm:7.22.15" - dependencies: - "@babel/types": ^7.22.15 - checksum: ecd7e457df0a46f889228f943ef9b4a47d485d82e030676767e6a2fdcbdaa63594d8124d4b55fd160b41c201025aec01fc27580352b1c87a37c9c6f33d116702 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.0, @babel/helper-module-transforms@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-module-transforms@npm:7.19.0" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.18.6 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.0 - "@babel/types": ^7.19.0 - checksum: 4483276c66f56cf3b5b063634092ad9438c2593725de5c143ba277dda82f1501e6d73b311c1b28036f181dbe36eaeff29f24726cde37a599d4e735af294e5359 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/helper-module-transforms@npm:7.21.2" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.2 - "@babel/types": ^7.21.2 - checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.21.5, @babel/helper-module-transforms@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-module-transforms@npm:7.22.1" - dependencies: - "@babel/helper-environment-visitor": ^7.22.1 - "@babel/helper-module-imports": ^7.21.4 - "@babel/helper-simple-access": ^7.21.5 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.21.9 - "@babel/traverse": ^7.22.1 - "@babel/types": ^7.22.0 - checksum: dfa084211a93c9f0174ab07385fdbf7831bbf5c1ff3d4f984effc489f48670825ad8b817b9e9d2ec6492fde37ed6518c15944e9dd7a60b43a3d9874c9250f5f8 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.22.15, @babel/helper-module-transforms@npm:^7.22.17, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.17 - resolution: "@babel/helper-module-transforms@npm:7.22.17" - dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-module-imports": ^7.22.15 - "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.15 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 458021c74093e66179765fcc9d1c1cb694f7bdf98656f23486901d35636495c38aab4661547fac2142e13d887987d1ea30cc9fe42968376a51a99bcd207b4989 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-module-transforms@npm:7.23.0" - dependencies: - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-module-imports": ^7.22.15 - "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.20 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 6e2afffb058cf3f8ce92f5116f710dda4341c81cfcd872f9a0197ea594f7ce0ab3cb940b0590af2fe99e60d2e5448bfba6bca8156ed70a2ed4be2adc8586c891 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-transforms@npm:7.24.7" - dependencies: - "@babel/helper-environment-visitor": ^7.24.7 - "@babel/helper-module-imports": ^7.24.7 - "@babel/helper-simple-access": ^7.24.7 - "@babel/helper-split-export-declaration": ^7.24.7 - "@babel/helper-validator-identifier": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: ddff3b41c2667876b4e4e73d961168f48a5ec9560c95c8c2d109e6221f9ca36c6f90c6317eb7a47f2a3c99419c356e529a86b79174cad0d4f7a61960866b88ca - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.0, @babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" - dependencies: - "@babel/helper-module-imports": ^7.24.7 - "@babel/helper-simple-access": ^7.24.7 - "@babel/helper-validator-identifier": ^7.24.7 - "@babel/traverse": ^7.25.2 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 282d4e3308df6746289e46e9c39a0870819630af5f84d632559171e4fae6045684d771a65f62df3d569e88ccf81dc2def78b8338a449ae3a94bb421aa14fc367 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.16.7, @babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: c70ef6cc6b6ed32eeeec4482127e8be5451d0e5282d5495d5d569d39eb04d7f1d66ec99b327f45d1d5842a9ad8c22d48567e93fc502003a47de78d122e355f7c - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" - dependencies: - "@babel/types": ^7.24.7 - checksum: 280654eaf90e92bf383d7eed49019573fb35a98c9e992668f701ad099957246721044be2068cf6840cb2299e0ad393705a1981c88c23a1048096a8d59e5f79a3 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.17.12, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.19.0 - resolution: "@babel/helper-plugin-utils@npm:7.19.0" - checksum: eedc996c633c8c207921c26ec2989eae0976336ecd9b9f1ac526498f52b5d136f7cd03c32b6fdf8d46a426f907c142de28592f383c42e5fba1e904cbffa05345 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-plugin-utils@npm:7.21.5" - checksum: 6f086e9a84a50ea7df0d5639c8f9f68505af510ea3258b3c8ac8b175efdfb7f664436cb48996f71791a1350ba68f47ad3424131e8e718c5e2ad45564484cbb36 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-plugin-utils@npm:7.22.5" - checksum: c0fc7227076b6041acd2f0e818145d2e8c41968cc52fb5ca70eed48e21b8fe6dd88a0a91cbddf4951e33647336eb5ae184747ca706817ca3bef5e9e905151ff5 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-plugin-utils@npm:7.24.7" - checksum: 81f2a15751d892e4a8fce25390f973363a5b27596167861d2d6eab0f61856eb2ba389b031a9f19f669c0bd4dd601185828d3cebafd25431be7a1696f2ce3ef68 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-plugin-utils@npm:7.24.8" - checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": - version: 7.22.17 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.17" +"@babel/helper-member-expression-to-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.17 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 59307e623d00b6f5fa7f974e29081b2243e3f7bc3a89df331e8c1f8815d83f97bd092404a28b8bef5299028e3259450b5a943f34e1b32c7c55350436d218ab13 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 8e2f1979b6d596ac2a8cbf17f2cf709180fefc274ac3331408b48203fe19134ed87800774ef18838d0275c3965130bae22980d90caed756b7493631d4b2cf961 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-remap-async-to-generator@npm:7.24.7" +"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - "@babel/helper-environment-visitor": ^7.24.7 - "@babel/helper-wrap-function": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: bab7be178f875350f22a2cb9248f67fe3a8a8128db77a25607096ca7599fd972bc7049fb11ed9e95b45a3f1dd1fac3846a3279f9cbac16f337ecb0e6ca76e1fc + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 1b411ce4ca825422ef7065dffae7d8acef52023e51ad096351e3e2c05837e9bf9fca2af9ca7f28dc26d596a588863d0fedd40711a88e350b736c619a80e704e6 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-remap-async-to-generator@npm:7.25.0" +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-transforms@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - "@babel/helper-wrap-function": ^7.25.0 - "@babel/traverse": ^7.25.0 + "@babel/helper-module-imports": ^7.25.9 + "@babel/helper-simple-access": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 47f3065e43fe9d6128ddb4291ffb9cf031935379265fd13de972b5f241943121f7583efb69cd2e1ecf39e3d0f76f047547d56c3fcc2c853b326fad5465da0bd7 - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.16.7": - version: 7.19.1 - resolution: "@babel/helper-replace-supers@npm:7.19.1" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.18.9 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/traverse": ^7.19.1 - "@babel/types": ^7.19.0 - checksum: a0e4bf79ebe7d2bb5947169e47a0b4439c73fb0ec57d446cf3ea81b736721129ec373c3f94d2ebd2716b26dd65f8e6c083dac898170d42905e7ba815a2f52c25 - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-replace-supers@npm:7.20.7" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.20.7 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: b8e0087c9b0c1446e3c6f3f72b73b7e03559c6b570e2cfbe62c738676d9ebd8c369a708cf1a564ef88113b4330750a50232ee1131d303d478b7a5e65e46fbc7c + checksum: 12e50861531ff45667925c958a5d01f0a7fbd37b589d73be7f167c94595091c6842531b1b14a22049b53c56891fa596f014c94d9496685311aaa80651805fca0 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-replace-supers@npm:7.22.1" +"@babel/helper-optimise-call-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" dependencies: - "@babel/helper-environment-visitor": ^7.22.1 - "@babel/helper-member-expression-to-functions": ^7.22.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/template": ^7.21.9 - "@babel/traverse": ^7.22.1 - "@babel/types": ^7.22.0 - checksum: 4179090f7010cf9456d17ec354df10f4f647d9b57f6e0b021519d504afca977f67ca39ffe04b47369ea671a744309d0d58f436cb4c18aef000f1df3c0e1162ba + "@babel/types": ^7.25.9 + checksum: f09d0ad60c0715b9a60c31841b3246b47d67650c512ce85bbe24a3124f1a4d66377df793af393273bc6e1015b0a9c799626c48e53747581c1582b99167cc65dc languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-replace-supers@npm:7.22.9" - dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: d41471f56ff2616459d35a5df1900d5f0756ae78b1027040365325ef332d66e08e3be02a9489756d870887585ff222403a228546e93dd7019e19e59c0c0fe586 +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.25.9 + resolution: "@babel/helper-plugin-utils@npm:7.25.9" + checksum: e19ec8acf0b696756e6d84531f532c5fe508dce57aa68c75572a77798bd04587a844a9a6c8ea7d62d673e21fdc174d091c9097fb29aea1c1b49f9c6eaa80f022 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-replace-supers@npm:7.24.7" +"@babel/helper-remap-async-to-generator@npm:^7.18.9, @babel/helper-remap-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" dependencies: - "@babel/helper-environment-visitor": ^7.24.7 - "@babel/helper-member-expression-to-functions": ^7.24.7 - "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/helper-annotate-as-pure": ^7.25.9 + "@babel/helper-wrap-function": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 2bf0d113355c60d86a04e930812d36f5691f26c82d4ec1739e5ec0a4c982c9113dad3167f7c74f888a96328bd5e696372232406d8200e5979e6e0dc2af5e7c76 + checksum: ea37ad9f8f7bcc27c109963b8ebb9d22bac7a5db2a51de199cb560e251d5593fe721e46aab2ca7d3e7a24b0aa4aff0eaf9c7307af9c2fd3a1d84268579073052 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-replace-supers@npm:7.25.0" +"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-replace-supers@npm:7.25.9" dependencies: - "@babel/helper-member-expression-to-functions": ^7.24.8 - "@babel/helper-optimise-call-expression": ^7.24.7 - "@babel/traverse": ^7.25.0 + "@babel/helper-member-expression-to-functions": ^7.25.9 + "@babel/helper-optimise-call-expression": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: f669fc2487c22d40b808f94b9c3ee41129484d5ef0ba689bdd70f216ff91e10b6b021d2f8cd37e7bdd700235a2a6ae6622526344f064528190383bf661ac65f8 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.18.2, @babel/helper-simple-access@npm:^7.18.6": - version: 7.19.4 - resolution: "@babel/helper-simple-access@npm:7.19.4" - dependencies: - "@babel/types": ^7.19.4 - checksum: 964cb1ec36b69aabbb02f8d5ee1d680ebbb628611a6740958d9b05107ab16c0492044e430618ae42b1f8ea73e4e1bafe3750e8ebc959d6f3277d9cfbe1a94880 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" - dependencies: - "@babel/types": ^7.20.2 - checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-simple-access@npm:7.21.5" - dependencies: - "@babel/types": ^7.21.5 - checksum: ad212beaa24be3864c8c95bee02f840222457ccf5419991e2d3e3e39b0f75b77e7e857e0bf4ed428b1cd97acefc87f3831bdb0b9696d5ad0557421f398334fc3 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-simple-access@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.16.0" - dependencies: - "@babel/types": ^7.16.0 - checksum: b9ed2896eb253e6a85f472b0d4098ed80403758ad1a4e34b02b11e8276e3083297526758b1a3e6886e292987266f10622d7dbced3508cc22b296a74903b41cfb - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" - dependencies: - "@babel/types": ^7.20.0 - checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: 1012ef2295eb12dc073f2b9edf3425661e9b8432a3387e62a8bc27c42963f1f216ab3124228015c748770b2257b4f1fda882ca8fa34c0bf485e929ae5bc45244 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 11b28fe534ce2b1a67c4d8e51a7b5711a2a0a0cae802f74614eee54cca58c744d9a62f6f60103c41759e81c537d270bfd665bf368a6bea214c6052f2094f8407 + checksum: 84f40e12520b7023e52d289bf9d569a06284879fe23bbbacad86bec5d978b2669769f11b073fcfeb1567d8c547168323005fda88607a4681ecaeb4a5cdd48bb9 languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.16.7, @babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" +"@babel/helper-simple-access@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-simple-access@npm:7.25.9" dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 6d96c94b88e8288d15e5352c1221486bd4f62de8c7dc7c7b9f5b107ce2c79f67fec5ed71a0476e146f1fefbbbf1d69abe35dc821d80ce01fc7f472286c342421 languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.5, @babel/helper-split-export-declaration@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-split-export-declaration@npm:7.22.6" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" dependencies: - "@babel/types": ^7.22.5 - checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: fdbb5248932198bc26daa6abf0d2ac42cab9c2dbb75b7e9f40d425c8f28f09620b886d40e7f9e4e08ffc7aaa2cefe6fc2c44be7c20e81f7526634702fb615bdc languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.24.7": +"@babel/helper-split-export-declaration@npm:^7.22.5": version: 7.24.7 resolution: "@babel/helper-split-export-declaration@npm:7.24.7" dependencies: @@ -3567,444 +2659,131 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-string-parser@npm:7.21.5" - checksum: 36c0ded452f3858e67634b81960d4bde1d1cd2a56b82f4ba2926e97864816021c885f111a7cf81de88a0ed025f49d84a393256700e9acbca2d99462d648705d8 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-string-parser@npm:7.22.5" - checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-string-parser@npm:7.24.7" - checksum: 09568193044a578743dd44bf7397940c27ea693f9812d24acb700890636b376847a611cdd0393a928544e79d7ad5b8b916bd8e6e772bc8a10c48a647a96e7b1a - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-validator-identifier@npm:7.22.15" - checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-validator-option@npm:7.21.0" - checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-validator-option@npm:7.22.15" - checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-option@npm:7.24.7" - checksum: 9689166bf3f777dd424c026841c8cd651e41b21242dbfd4569a53086179a3e744c8eddd56e9d10b54142270141c91581b53af0d7c00c82d552d2540e2a919f7e - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.20.5 - resolution: "@babel/helper-wrap-function@npm:7.20.5" - dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.20.5 - "@babel/types": ^7.20.5 - checksum: 11a6fc28334368a193a9cb3ad16f29cd7603bab958433efc82ebe59fa6556c227faa24f07ce43983f7a85df826f71d441638442c4315e90a554fe0a70ca5005b - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.22.17": - version: 7.22.17 - resolution: "@babel/helper-wrap-function@npm:7.22.17" - dependencies: - "@babel/helper-function-name": ^7.22.5 - "@babel/template": ^7.22.15 - "@babel/types": ^7.22.17 - checksum: 95328b508049b6edd9cadd2ac89b4d4812ebdfa54a2ae77791939d795d88d561b31fd3669eea5d13558372cf2422eda05177d7f742690b5023c712bc3f0aec8e - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-wrap-function@npm:7.24.7" - dependencies: - "@babel/helper-function-name": ^7.24.7 - "@babel/template": ^7.24.7 - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 085bf130ed08670336e3976f5841ae44e3e10001131632e22ef234659341978d2fd37e65785f59b6cb1745481347fc3bce84b33a685cacb0a297afbe1d2b03af - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-wrap-function@npm:7.25.0" - dependencies: - "@babel/template": ^7.25.0 - "@babel/traverse": ^7.25.0 - "@babel/types": ^7.25.0 - checksum: 0095b4741704066d1687f9bbd5370bb88c733919e4275e49615f70c180208148ff5f24ab58d186ce92f8f5d28eab034ec6617e9264590cc4744c75302857629c - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.19.0": - version: 7.19.4 - resolution: "@babel/helpers@npm:7.19.4" - dependencies: - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.4 - "@babel/types": ^7.19.4 - checksum: e2684e9a79d45b95db05c7e14628e8dd1d91ad59433a3afd715bdf19d4683d9e9f84382bcc82316b678aa609ecfc41b07be0b9c49eed07c444f82a6b9e501186 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helpers@npm:7.21.0" - dependencies: - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.22.0": - version: 7.22.3 - resolution: "@babel/helpers@npm:7.22.3" - dependencies: - "@babel/template": ^7.21.9 - "@babel/traverse": ^7.22.1 - "@babel/types": ^7.22.3 - checksum: 385289ee8b87cf9af448bbb9fcf747f6e67600db5f7f64eb4ad97761ee387819bf2212b6a757008286c6bfacf4f3fc0b6de88686f2e517a70fb59996bdfbd1e9 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helpers@npm:7.22.15" - dependencies: - "@babel/template": ^7.22.15 - "@babel/traverse": ^7.22.15 - "@babel/types": ^7.22.15 - checksum: 49f61a93cbae4df3328bda67af5db743fead659ae4242571226c3596b7df78546189cdf991fed1eca33b559de8abf396a90a001f474a1bab351418f07b7ae6ef +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 6435ee0849e101681c1849868278b5aee82686ba2c1e27280e5e8aca6233af6810d39f8e4e693d2f2a44a3728a6ccfd66f72d71826a94105b86b731697cdfa99 languageName: node linkType: hard -"@babel/helpers@npm:^7.22.5": - version: 7.23.1 - resolution: "@babel/helpers@npm:7.23.1" - dependencies: - "@babel/template": ^7.22.15 - "@babel/traverse": ^7.23.0 - "@babel/types": ^7.23.0 - checksum: acfc345102045c24ea2a4d60e00dcf8220e215af3add4520e2167700661338e6a80bd56baf44bb764af05ec6621101c9afc315dc107e18c61fa6da8acbdbb893 +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 5b85918cb1a92a7f3f508ea02699e8d2422fe17ea8e82acd445006c0ef7520fbf48e3dbcdaf7b0a1d571fc3a2715a29719e5226636cb6042e15fe6ed2a590944 languageName: node linkType: hard -"@babel/helpers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helpers@npm:7.25.0" - dependencies: - "@babel/template": ^7.25.0 - "@babel/types": ^7.25.0 - checksum: 739e3704ff41a30f5eaac469b553f4d3ab02be6ced083f5925851532dfbd9efc5c347728e77b754ed0b262a4e5e384e60932a62c192d338db7e4b7f3adf9f4a7 +"@babel/helper-validator-option@npm:^7.22.5, @babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d languageName: node linkType: hard -"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" +"@babel/helper-wrap-function@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-wrap-function@npm:7.25.9" dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 + "@babel/template": ^7.25.9 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 8ec1701e60ae004415800c4a7a188f5564c73b4e4f3fdf58dd3f34a3feaa9753173f39bbd6d02e7ecc974f48155efc7940e62584435b3092c07728ee46a604ea languageName: node linkType: hard -"@babel/highlight@npm:^7.22.13": - version: 7.22.13 - resolution: "@babel/highlight@npm:7.22.13" +"@babel/helpers@npm:^7.22.5, @babel/helpers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helpers@npm:7.25.9" dependencies: - "@babel/helper-validator-identifier": ^7.22.5 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 + "@babel/template": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 82b1051c065baff1f53a85886bd05b2136c021f8d9301974d639007b7b90f674115b992a1dcf04667b37f9229d6f3eaeb1c40550f9ae46802ec4a8e388018b31 languageName: node linkType: hard -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" +"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/highlight@npm:7.25.9" dependencies: - "@babel/helper-validator-identifier": ^7.24.7 + "@babel/helper-validator-identifier": ^7.25.9 chalk: ^2.4.2 js-tokens: ^4.0.0 picocolors: ^1.0.0 - checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.0, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.3, @babel/parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/parser@npm:7.19.4" - bin: - parser: ./bin/babel-parser.js - checksum: 5ef97da97915085ff3b9c562b04fb6316074ece52d20de95f44c47b46abf87fd754cbcae769a69570a84652b736afe5bb2cb7dc117aa7ad6d81ab40eed0c613b - languageName: node - linkType: hard - -"@babel/parser@npm:^7.13.16, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/parser@npm:7.21.4" - bin: - parser: ./bin/babel-parser.js - checksum: de610ecd1bff331766d0c058023ca11a4f242bfafefc42caf926becccfb6756637d167c001987ca830dd4b34b93c629a4cef63f8c8c864a8564cdfde1989ac77 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.21.9, @babel/parser@npm:^7.22.0, @babel/parser@npm:^7.22.4": - version: 7.22.4 - resolution: "@babel/parser@npm:7.22.4" - bin: - parser: ./bin/babel-parser.js - checksum: 0ca6d3a2d9aae2504ba1bc494704b64a83140884f7379f609de69bd39b60adb58a4f8ec692fe53fef8657dd82705d01b7e6efb65e18296326bdd66f71d52d9a9 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.22.7": - version: 7.22.16 - resolution: "@babel/parser@npm:7.22.16" - bin: - parser: ./bin/babel-parser.js - checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.5, @babel/parser@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/parser@npm:7.23.0" - bin: - parser: ./bin/babel-parser.js - checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/parser@npm:7.24.7" - bin: - parser: ./bin/babel-parser.js - checksum: fc9d2c4c8712f89672edc55c0dc5cf640dcec715b56480f111f85c2bc1d507e251596e4110d65796690a96ac37a4b60432af90b3e97bb47e69d4ef83872dbbd6 + checksum: a6e0ac0a1c4bef7401915ca3442ab2b7ae4adf360262ca96b91396bfb9578abb28c316abf5e34460b780696db833b550238d9256bdaca60fade4ba7a67645064 languageName: node linkType: hard -"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3": - version: 7.25.3 - resolution: "@babel/parser@npm:7.25.3" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/parser@npm:7.25.9" dependencies: - "@babel/types": ^7.25.2 - bin: - parser: ./bin/babel-parser.js - checksum: b55aba64214fa1d66ccd0d29f476d2e55a48586920d280f88c546f81cbbececc0e01c9d05a78d6bf206e8438b9c426caa344942c1a581eecc4d365beaab8a20e - languageName: node - linkType: hard - -"@babel/parser@npm:^7.9.4": - version: 7.20.13 - resolution: "@babel/parser@npm:7.20.13" + "@babel/types": ^7.25.9 bin: parser: ./bin/babel-parser.js - checksum: 7eb2e3d9d9ad5e24b087c88d137f5701d94f049e28b9dce9f3f5c6d4d9b06a0d7c43b9106f1c02df8a204226200e0517de4bc81a339768a4ebd4c59107ea93a4 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3": - version: 7.25.3 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/traverse": ^7.25.3 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: d3dba60f360defe70eb43e35a1b17ea9dd4a99e734249e15be3d5c288019644f96f88d7ff51990118fda0845b4ad50f6d869e0382232b1d8b054d113d4eea7e2 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.0" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: fd56d1e6435f2c008ca9050ea906ff7eedcbec43f532f2bf2e7e905d8bf75bf5e4295ea9593f060394e2c8e45737266ccbf718050bad2dd7be4e7613c60d1b5b + checksum: 76e898e9feaa7e11512841c13aab1a6d81f69a19ab93b0ec941dd78407fdbfe8fb08ff54e0966567aef4f24a7b94125473f0e903fb198c010bd5456058bf3432 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d + checksum: b33d37dacf98a9c74f53959999adc37a258057668b62dba557e6865689433c53764673109eaba9102bf73b2ac4db162f0d9b89a6cca6f1b71d12f5908ec11da9 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.15" +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 8910ca21a7ec7c06f7b247d4b86c97c5aa15ef321518f44f6f490c5912fdf82c605aaa02b90892e375d82ccbedeadfdeadd922c1b836c9dd4c596871bf654753 + checksum: d3e14ab1cb9cb50246d20cab9539f2fbd1e7ef1ded73980c8ad7c0561b4d5e0b144d362225f0976d47898e04cbd40f2000e208b0913bd788346cf7791b96af91 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.0" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 13ed301b108d85867d64226bbc4032b07dd1a23aab68e9e32452c4fe3930f2198bb65bdae9c262c4104bd5e45647bc1830d25d43d356ee9a137edd8d5fab8350 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-proposal-optional-chaining": ^7.20.7 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: d610f532210bee5342f5b44a12395ccc6d904e675a297189bc1e401cc185beec09873da523466d7fec34ae1574f7a384235cba1ccc9fe7b89ba094167897c845 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.15, @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.15" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.15 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: fbefedc0da014c37f1a50a8094ce7dbbf2181ae93243f23d6ecba2499b5b20196c2124d6a4dfe3e9e0125798e80593103e456352a4beb4e5c6f7c75efb80fdac - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-transform-optional-chaining": ^7.22.3 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: d786e4d89c0674cab4fb65e804920782b2ff8319a3e6c561c81b0265451f4ac9f8ce1f9699303398636352b5177730e31c219a086b72980bf39f98faadeab3c1 + checksum: a9d1ee3fd100d3eb6799a2f2bbd785296f356c531d75c9369f71541811fa324270258a374db103ce159156d006da2f33370330558d0133e6f7584152c34997ca languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5, @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 - "@babel/plugin-transform-optional-chaining": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 + "@babel/plugin-transform-optional-chaining": ^7.25.9 peerDependencies: "@babel/core": ^7.13.0 - checksum: 07b92878ac58a98ea1fdf6a8b4ec3413ba4fa66924e28b694d63ec5b84463123fbf4d7153b56cf3cedfef4a3482c082fe3243c04f8fb2c041b32b0e29b4a9e21 + checksum: 5b298b28e156f64de51cdb03a2c5b80c7f978815ef1026f3ae8b9fc48d28bf0a83817d8fbecb61ef8fb94a7201f62cca5103cc6e7b9e8f28e38f766d7905b378 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.0" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/traverse": ^7.25.0 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: c8d08b8d6cc71451ad2a50cf7db72ab5b41c1e5e2e4d56cf6837a25a61270abd682c6b8881ab025f11a552d2024b3780519bb051459ebb71c27aed13d9917663 + checksum: c684593952ab1b40dfa4e64e98a07e7227c6db175c21bd0e6d71d2ad5d240fef4e4a984d56f05a494876542a022244fe1c1098f4116109fd90d06615e8a269b1 languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:^7.0.0, @babel/plugin-proposal-async-generator-functions@npm:^7.20.7": +"@babel/plugin-proposal-async-generator-functions@npm:^7.0.0": version: 7.20.7 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" dependencies: @@ -4018,7 +2797,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": +"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.0": version: 7.18.6 resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" dependencies: @@ -4030,19 +2809,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-static-block@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 236c0ad089e7a7acab776cc1d355330193314bfcd62e94e78f2df35817c6144d7e0e0368976778afd6b7c13e70b5068fa84d7abbf967d4f182e60d03f9ef802b - languageName: node - linkType: hard - "@babel/plugin-proposal-decorators@npm:7.22.5": version: 7.22.5 resolution: "@babel/plugin-proposal-decorators@npm:7.22.5" @@ -4058,85 +2824,31 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-decorators@npm:^7.12.9": - version: 7.21.0 - resolution: "@babel/plugin-proposal-decorators@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/plugin-syntax-decorators": ^7.21.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2889a060010af7ac2e24f7a193262e50a94e254dd86d273e25a2bec2a2f97dd95b136bb933f63448c1cdde4f38ac7877837685657aa8161699eb226d9f1eb453 - languageName: node - linkType: hard - -"@babel/plugin-proposal-decorators@npm:^7.22.7": - version: 7.22.15 - resolution: "@babel/plugin-proposal-decorators@npm:7.22.15" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.9 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/plugin-syntax-decorators": ^7.22.10 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbe8ebf46fa21035db88b751bc4b7becaf3ac87ad2f8d82838794b7396d4c9b198a3906f2409ea063c08834292a15b048cfaf38dea609939840dc53f32ac0e47 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" +"@babel/plugin-proposal-decorators@npm:^7.12.9, @babel/plugin-proposal-decorators@npm:^7.22.7": + version: 7.25.9 + resolution: "@babel/plugin-proposal-decorators@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/helper-create-class-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/plugin-syntax-decorators": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f + checksum: ff598127818ac8e704009f1a9a207766ada5f84f6ca74e9de662cb6ce32bcb846c28fd52d6c5df9c55b4eac9a2a3492aa71fbd5cef0569a14b6f12003df22af2 languageName: node linkType: hard "@babel/plugin-proposal-export-default-from@npm:^7.0.0": - version: 7.18.10 - resolution: "@babel/plugin-proposal-export-default-from@npm:7.18.10" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-default-from": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2a12387e095ccd02a1560e5dd40812a83befe581d319685ae2a95f0650a4500381c1d9c710e6e29b34a1b053f9632ee2d3827b937e1cc5c9d2555280da22df53 - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" + version: 7.25.9 + resolution: "@babel/plugin-proposal-export-default-from@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 + checksum: 0fb96b1229ed15ecfb09e6bf40be2da249007155a3deca53d319420a4d3c028c884e888c447898cbcdaa079165e045a8317be6a9205bef0041e7333822a40da9 languageName: node linkType: hard -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.0, @babel/plugin-proposal-logical-assignment-operators@npm:^7.20.7": +"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.0": version: 7.20.7 resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" dependencies: @@ -4148,7 +2860,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.0, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.0": version: 7.18.6 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" dependencies: @@ -4160,7 +2872,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-numeric-separator@npm:^7.0.0, @babel/plugin-proposal-numeric-separator@npm:^7.18.6": +"@babel/plugin-proposal-numeric-separator@npm:^7.0.0": version: 7.18.6 resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" dependencies: @@ -4172,22 +2884,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": - version: 7.18.0 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.18.0" - dependencies: - "@babel/compat-data": ^7.17.10 - "@babel/helper-compilation-targets": ^7.17.10 - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2b49bcf9a6b11fd8b6a1d4962a64f3c846a63f8340eca9824c907f75bfcff7422ca35b135607fc3ef2d4e7e77ce6b6d955b772dc3c1c39f7ed24a0d8a560ec78 - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.20.0, @babel/plugin-proposal-object-rest-spread@npm:^7.20.7": +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.20.0": version: 7.20.7 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" dependencies: @@ -4202,7 +2899,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.0.0, @babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": +"@babel/plugin-proposal-optional-catch-binding@npm:^7.0.0": version: 7.18.6 resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" dependencies: @@ -4214,7 +2911,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.20.0, @babel/plugin-proposal-optional-chaining@npm:^7.20.7, @babel/plugin-proposal-optional-chaining@npm:^7.21.0": +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.20.0": version: 7.21.0 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" dependencies: @@ -4227,18 +2924,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad - languageName: node - linkType: hard - "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": version: 7.21.0-placeholder-for-preset-env.2 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" @@ -4248,21 +2933,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-private-property-in-object@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: add881a6a836635c41d2710551fdf777e2c07c0b691bf2baacc5d658dd64107479df1038680d6e67c468bfc6f36fb8920025d6bac2a1df0a81b867537d40ae78 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6": +"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": version: 7.18.6 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" dependencies: @@ -4274,18 +2945,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.17.12 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.17.12" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.17.12 - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0e4194510415ed11849f1617fcb32d996df746ba93cd05ebbabecb63cfc02c0e97b585c97da3dcf68acdd3c8b71cfae964abe5d5baba6bd3977a475d9225ad9e - languageName: node - linkType: hard - "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -4308,7 +2967,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": +"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -4330,31 +2989,20 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-syntax-decorators@npm:7.21.0" +"@babel/plugin-syntax-decorators@npm:^7.22.5, @babel/plugin-syntax-decorators@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-decorators@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 31108e73c3e569f2795ddb4f5f1f32c13c6be97a107d41e318c8f58ca3fde0fa958af3d1a302ab64f36f73ce4d6dda7889732243561c087a7cc3b22192d42a65 + checksum: aaf58b17e6aa08f41f93897daa93c601a486233a0375b4231799fc5c4e7c98480aaad3c1c44cf391a62e428c5f6546f76488a1023a4036bb87cd61fa79f1173b languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.22.10, @babel/plugin-syntax-decorators@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/plugin-syntax-decorators@npm:7.22.10" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: baaa10fa52d76ee8b9447f7aedb1c8df7cf2ef83ae29c085c07444e691685aa8b1a326dfb7a3a0e3ae4d5f9fd083175e46ea5e2316d8200f0278f3fd54a58696 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.0, @babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" +"@babel/plugin-syntax-dynamic-import@npm:^7.8.0, @babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" dependencies: "@babel/helper-plugin-utils": ^7.8.0 peerDependencies: @@ -4363,14 +3011,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-export-default-from@npm:^7.0.0, @babel/plugin-syntax-export-default-from@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-export-default-from@npm:7.18.6" +"@babel/plugin-syntax-export-default-from@npm:^7.0.0": + version: 7.25.9 + resolution: "@babel/plugin-syntax-export-default-from@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4258156553d825abb2ebac920eae6837087b485eb8e0011e05ad1e57004a03441335325feb18185ffbfa0c33a340673e7ab79549080ff2beb4607f88936fedf2 + checksum: 8eb254c8050369f3cfac7755230ad9d39a53d1b489e03170684d6b514a0d09ad6001c38e6dfd271a439a8035a57d60b8be7d3dd80f997c6bc5c7e688ed529517 languageName: node linkType: hard @@ -4385,106 +3033,40 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-flow@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0edfd8d0a35df4d93bd5e9f859a420dd43295eaf14e4aef9bef76ce52cdbe0b57126d5b93197891357b94b4dcf587795efafb90eaf4a8737ae6e1b3020c904b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-flow@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 43b78b5fcdedb2a6d80c3d02a1a564fbfde86b73b442d616a8f318f673caa6ce0151513af5a00fcae42a512f144e70ef259d368b9537ee35d40336a6c895a7d4 - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.18.6": - version: 7.21.4 - resolution: "@babel/plugin-syntax-flow@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fe4ba7b285965c62ff820d55d260cb5b6e5282dbedddd1fb0a0f2667291dcf0fa1b3d92fa9bf90946b02b307926a0a5679fbdd31d80ceaed5971293aa1fc5744 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6a86220e0aae40164cd3ffaf80e7c076a1be02a8f3480455dddbae05fda8140f429290027604df7a11b3f3f124866e8a6d69dbfa1dda61ee7377b920ad144d5b - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2b8b5572db04a7bef1e6cd20debf447e4eef7cb012616f5eceb8fa3e23ce469b8f76ee74fd6d1e158ba17a8f58b0aec579d092fb67c5a30e83ccfbc5754916c1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c4d67be4eb1d4637e361477dbe01f5b392b037d17c1f861cfa0faa120030e137aab90a9237931b8040fd31d1e5d159e11866fa1165f78beef7a3be876a391a17 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-attributes@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.3" +"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-flow@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 48cf66ba1b6772134f4e638c42ff51a0e8037cea540733642146e031641641e8a03e4f43e6be613e2313d174f95d9b3a1f14f41db0a9fa78a8330282b5aad03c + checksum: c33f5ff3228b4ba990a414f07dfa7ca23a0251fa0fae3f935b2c1784104983c8802b190302f4d4e246e41edb41ab6762ac1bd868939abdf0ef809862afaf51c1 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.5" +"@babel/plugin-syntax-import-assertions@npm:^7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.22.5, @babel/plugin-syntax-import-assertions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 197b3c5ea2a9649347f033342cb222ab47f4645633695205c0250c6bf2af29e643753b8bb24a2db39948bef08e7c540babfd365591eb57fc110cb30b425ffc47 + checksum: 2f0c70bb379135ee205402caa42c0dda4d5d8fb64ff4ad163cab94bd8291c1a63b9dc9cf293758cecee223080d2d61e83f92c6d2a264621e24a07258c48968db languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.7" +"@babel/plugin-syntax-import-attributes@npm:^7.22.5, @babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 590dbb5d1a15264f74670b427b8d18527672c3d6c91d7bae7e65f80fd810edbc83d90e68065088644cbad3f2457ed265a54a9956fb789fcb9a5b521822b3a275 + checksum: 0ea00b9100d383680c7142e61e3aa7101e3657ec5e1bfa990871eee4ae17e2c4a0da084e8f611d349bb9612908e911e1400418eb59caa5184226b08f513c1a0a languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": +"@babel/plugin-syntax-import-meta@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -4506,2717 +3088,881 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.21.4, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-jsx@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bb7309402a1d4e155f32aa0cf216e1fa8324d6c4cfd248b03280028a015a10e46b6efd6565f515f8913918a3602b39255999c06046f7d4b8a5106be2165d724a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6d37ea972970195f1ffe1a54745ce2ae456e0ac6145fae9aa1480f297248b262ea6ebb93010eddb86ebfacb94f57c05a1fc5d232b9a67325b09060299d515c67 - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8829d30c2617ab31393d99cec2978e41f014f4ac6f01a1cecf4c4dd8320c3ec12fdc3ce121126b2d8d32f6887e99ca1a0bad53dedb1e6ad165640b92b24980ce - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.0.0, @babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" +"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.25.9, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + checksum: bb609d1ffb50b58f0c1bac8810d0e46a4f6c922aa171c458f3a19d66ee545d36e782d3bffbbc1fed0dc65a558bdce1caf5279316583c0fff5a2c1658982a8563 languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.0.0, @babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.20.0": - version: 7.21.4 - resolution: "@babel/plugin-syntax-typescript@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a59ce2477b7ae8c8945dc37dda292fef9ce46a6507b3d76b03ce7f3a6c9451a6567438b20a78ebcb3955d04095fd1ccd767075a863f79fcc30aa34dcfa441fe0 - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8ab7718fbb026d64da93681a57797d60326097fd7cb930380c8bffd9eb101689e90142c760a14b51e8e69c88a73ba3da956cb4520a3b0c65743aee5c71ef360a - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 56fe84f3044ecbf038977281648db6b63bd1301f2fff6595820dc10ee276c1d1586919d48d52a8d497ecae32c958be38f42c1c8d174dc58aad856c516dc5b35a - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.18.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2cde73725ec51118ebf410bf02d78781c03fa4d3185993fcc9d253b97443381b621c44810084c5dd68b92eb8bdfae0e5b163e91b32bebbb33852383d1815c05d - languageName: node - linkType: hard - -"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: a651d700fe63ff0ddfd7186f4ebc24447ca734f114433139e3c027bc94a900d013cf1ef2e2db8430425ba542e39ae160c3b05f06b59fd4656273a3df97679e9c - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.0.0": - version: 7.17.12 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 48f99e74f523641696d5d9fb3f5f02497eca2e97bc0e9b8230a47f388e37dc5fd84b8b29e9f5a0c82d63403f7ba5f085a28e26939678f6e917d5c01afd884b50 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.0.0-0, @babel/plugin-transform-arrow-functions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 707c209b5331c7dc79bd326128c6a6640dbd62a78da1653c844db20c4f36bf7b68454f1bc4d2d051b3fde9136fa291f276ec03a071bb00ee653069ff82f91010 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b43cabe3790c2de7710abe32df9a30005eddb2050dadd5d122c6872f679e5710e410f1b90c8f99a2aff7b614cccfecf30e7fd310236686f60d3ed43fd80b9847 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c7c281cdf37c33a584102d9fd1793e85c96d4d320cdfb7c43f1ce581323d057f13b53203994fcc7ee1f8dc1ff013498f258893aa855a06c6f830fcc4c33d6e44 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35abb6c57062802c7ce8bd96b2ef2883e3124370c688bbd67609f7d2453802fb73944df8808f893b6c67de978eb2bcf87bbfe325e46d6f39b5fcb09ece11d01a - languageName: node - linkType: hard - -"@babel/plugin-transform-async-generator-functions@npm:^7.22.15, @babel/plugin-transform-async-generator-functions@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.15" - dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-remap-async-to-generator": ^7.22.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fad98786b446ce63bde0d14a221e2617eef5a7bbca62b49d96f16ab5e1694521234cfba6145b830fbf9af16d60a8a3dbf148e8694830bd91796fe333b0599e73 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-generator-functions@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.3" - dependencies: - "@babel/helper-environment-visitor": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/helper-remap-async-to-generator": ^7.18.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0ea339f9e484df0b72eb962dca81f5e6291d674eb4de7af2cde2a7e2ff728fbc4fdad662f2e77bf5bdbd2b628e111b9a7c71c3165684147ca1bf1f891fc30a4b - languageName: node - linkType: hard - -"@babel/plugin-transform-async-generator-functions@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.0" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/helper-remap-async-to-generator": ^7.25.0 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/traverse": ^7.25.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cce2bab70ad871ac11751bede006bd4861888f4c63bc9954be38620b14cc6890a4cbc633c1062b89c5fe288ce74b9d1974cc0d43c04baeeb2b13231a236fba85 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" - dependencies: - "@babel/helper-module-imports": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-remap-async-to-generator": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 13704fb3b83effc868db2b71bfb2c77b895c56cb891954fc362e95e200afd523313b0e7cf04ce02f45b05e76017c5b5fa8070c92613727a35131bb542c253a36 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fe9ee8a5471b4317c1b9ea92410ace8126b52a600d7cfbfe1920dcac6fb0fad647d2e08beb4fd03c630eb54430e6c72db11e283e3eddc49615c68abd39430904 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" - dependencies: - "@babel/helper-module-imports": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-remap-async-to-generator": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b95f23f99dcb379a9f0a1c2a3bbea3f8dc0e1b16dc1ac8b484fe378370169290a7a63d520959a9ba1232837cf74a80e23f6facbe14fd42a3cda6d3c2d7168e62 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0": - version: 7.16.7 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": ^7.16.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 591e9f75437bb32ebf9506d28d5c9659c66c0e8e0c19b12924d808d898e68309050aadb783ccd70bb4956555067326ecfa17a402bc77eb3ece3c6863d40b9016 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 416b1341858e8ca4e524dee66044735956ced5f478b2c3b9bc11ec2285b0c25d7dbb96d79887169eb938084c95d0a89338c8b2fe70d473bd9dc92e5d9db1732c - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 249cdcbff4e778b177245f9652b014ea4f3cd245d83297f10a7bf6d97790074089aa62bcde8c08eb299c5e68f2faed346b587d3ebac44d625ba9a83a4ee27028 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.0.0": - version: 7.17.12 - resolution: "@babel/plugin-transform-block-scoping@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ea3d4d88e38367d62a1029d204c5cc0ac410b00779179c8507448001c64784bf8e34c6fa57f23d8b95a835541a2fc67d1076650b1efc99c78f699de354472e49 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 15aacaadbecf96b53a750db1be4990b0d89c7f5bc3e1794b63b49fb219638c1fd25d452d15566d7e5ddf5b5f4e1a0a0055c35c1c7aee323c7b114bf49f66f4b0 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-block-scoping@npm:7.22.15" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c7091dc000b854ce0c471588ca0704ef1ce78cff954584a9f21c1668fd0669e7c8d5396fb72fe49a2216d9b96a400d435f424f27e41a097ef6c855f9c57df195 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.22.5": - version: 7.23.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.23.0" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0cfe925cc3b5a3ad407e2253fab3ceeaa117a4b291c9cb245578880872999bca91bd83ffa0128ae9ca356330702e1ef1dcb26804f28d2cef678239caf629f73e - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b1a8f932f69ad2a47ae3e02b4cedd2a876bfc2ac9cf72a503fd706cdc87272646fe9eed81e068c0fc639647033de29f7fa0c21cddd1da0026f83dbaac97316a8 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-properties@npm:7.22.5, @babel/plugin-transform-class-properties@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b830152dfc2ff2f647f0abe76e6251babdfbef54d18c4b2c73a6bf76b1a00050a5d998dac80dc901a48514e95604324943a9dd39317073fe0928b559e0e0c579 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-properties@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-class-properties@npm:7.22.3" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4037397badb5d537d87c092da99a0278f735e66dc667a31495aa2dd5fcf1315bfe8981773d2ce502ff8048c68ab32a7c3019df714945520443e28380fa5e7f74 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-properties@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-class-properties@npm:7.24.7" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1348d7ce74da38ba52ea85b3b4289a6a86913748569ef92ef0cff30702a9eb849e5eaf59f1c6f3517059aa68115fb3067e389735dccacca39add4e2b0c67e291 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-static-block@npm:^7.22.11, @babel/plugin-transform-class-static-block@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-class-static-block@npm:7.22.11" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.11 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 69f040506fad66f1c6918d288d0e0edbc5c8a07c8b4462c1184ad2f9f08995d68b057126c213871c0853ae0c72afc60ec87492049dfacb20902e32346a448bcb - languageName: node - linkType: hard - -"@babel/plugin-transform-class-static-block@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-class-static-block@npm:7.22.3" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: f407a3354ee0720803cd3366d7d081643d37201892243deed1aa76eb9330c11bf4e548441fa6a77637262a1b61890c1aacea176ad828650b8eb3f5b4d2da9c97 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-static-block@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 324049263504f18416f1c3e24033baebfafd05480fdd885c8ebe6f2b415b0fc8e0b98d719360f9e30743cc78ac387fabc0b3c6606d2b54135756ffb92963b382 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.0.0": - version: 7.17.12 - resolution: "@babel/plugin-transform-classes@npm:7.17.12" - dependencies: - "@babel/helper-annotate-as-pure": ^7.16.7 - "@babel/helper-environment-visitor": ^7.16.7 - "@babel/helper-function-name": ^7.17.9 - "@babel/helper-optimise-call-expression": ^7.16.7 - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/helper-replace-supers": ^7.16.7 - "@babel/helper-split-export-declaration": ^7.16.7 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0127b1cc432373965edf28cbfd9e85df5bc77e974ceb80ba32691e050e8fb6792f207d1941529c81d1b9e7a6e82da26ecc445f6f547f0ad5076cd2b27adc18ac - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-classes@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 088ae152074bd0e90f64659169255bfe50393e637ec8765cb2a518848b11b0299e66b91003728fd0a41563a6fdc6b8d548ece698a314fd5447f5489c22e466b7 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.22.15, @babel/plugin-transform-classes@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-transform-classes@npm:7.22.15" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.9 - "@babel/helper-split-export-declaration": ^7.22.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d3f4d0c107dd8a3557ea3575cc777fab27efa92958b41e4a9822f7499725c1f554beae58855de16ddec0a7b694e45f59a26cea8fbde4275563f72f09c6e039a0 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-classes@npm:7.25.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - "@babel/helper-compilation-targets": ^7.24.8 - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/helper-replace-supers": ^7.25.0 - "@babel/traverse": ^7.25.0 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ff97f168e6a18fa4e7bb439f1a170dc83c470973091c22c74674769350ab572be5af017cdb64fbd261fe99d068a4ee88f1b7fa7f5ab524d84c2f2833b116e577 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.0.0": - version: 7.17.12 - resolution: "@babel/plugin-transform-computed-properties@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5d05418617e0967bec4818556b7febb6f8c40813e32035f0bd6b7dbd7b9d63e9ab7c7c8fd7bd05bab2a599dad58e7b69957d9559b41079d112c219bbc3649aa1 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/template": ^7.20.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: be70e54bda8b469146459f429e5f2bd415023b87b2d5af8b10e48f465ffb02847a3ed162ca60378c004b82db848e4d62e90010d41ded7e7176b6d8d1c2911139 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-computed-properties@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/template": ^7.20.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e819780ab30fc40d7802ffb75b397eff63ca4942a1873058f81c80f660189b78e158fa03fd3270775f0477c4c33cee3d8d40270e64404bbf24aa6cdccb197e7b - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/template": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c2a77a0f94ec71efbc569109ec14ea2aa925b333289272ced8b33c6108bdbb02caf01830ffc7e49486b62dec51911924d13f3a76f1149f40daace1898009e131 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/template": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0cf8c1b1e4ea57dec8d4612460d84fd4cdbf71a7499bb61ee34632cf89018a59eee818ffca88a8d99ee7057c20a4257044d7d463fda6daef9bf1db9fa81563cb - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.0.0": - version: 7.18.0 - resolution: "@babel/plugin-transform-destructuring@npm:7.18.0" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d85d60737c3b05c4db71bc94270e952122d360bd6ebf91b5f98cf16fb8564558b615d115354fe0ef41e2aae9c4540e6e16144284d881ecaef687693736cd2a79 - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.20.0": - version: 7.24.7 - resolution: "@babel/plugin-transform-destructuring@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b9637b27faf9d24a8119bc5a1f98a2f47c69e6441bd8fc71163500be316253a72173308a93122bcf27d8d314ace43344c976f7291cf6376767f408350c8149d4 - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-destructuring@npm:7.21.3" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 43ebbe0bfa20287e34427be7c2200ce096c20913775ea75268fb47fe0e55f9510800587e6052c42fe6dffa0daaad95dd465c3e312fd1ef9785648384c45417ac - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-destructuring@npm:7.22.15" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4bccb4765e5287f1d36119d930afb9941ea8f4f001bddb8febff716bac0e09dc58576624f3ec59470630513044dd342075fe11af16d8c1b234cb7406cffca9f0 - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.22.5": - version: 7.23.0 - resolution: "@babel/plugin-transform-destructuring@npm:7.23.0" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cd6dd454ccc2766be551e4f8a04b1acc2aa539fa19e5c7501c56cc2f8cc921dd41a7ffb78455b4c4b2f954fcab8ca4561ba7c9c7bd5af9f19465243603d18cc3 - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0b4bd3d608979a1e5bd97d9d42acd5ad405c7fffa61efac4c7afd8e86ea6c2d91ab2d94b6a98d63919571363fe76e0b03c4ff161f0f60241b895842596e4a999 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 409b658d11e3082c8f69e9cdef2d96e4d6d11256f005772425fb230cc48fd05945edbfbcb709dab293a1a2f01f9c8a5bb7b4131e632b23264039d9f95864b453 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 67b10fc6abb1f61f0e765288eb4c6d63d1d0f9fc0660e69f6f2170c56fa16bc74e49857afc644beda112b41771cd90cf52df0940d11e97e52617c77c7dcff171 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.16.7 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.16.7 - "@babel/helper-plugin-utils": ^7.16.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 554570dddfd5bfd87ab307be520f69a3d4ed2d2db677c165971b400d4c96656d0c165b318e69f1735612dcd12e04c0ee257697dc26800e8a572ca73bc05fa0f4 - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bb1280fbabaab6fab2ede585df34900712698210a3bd413f4df5bae6d8c24be36b496c92722ae676a7a67d060a4624f4d6c23b923485f906bfba8773c69f55b4 - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d1da2ff85ecb56a63f4ccfd9dc9ae69400d85f0dadf44ecddd9e71c6e5c7a9178e74e3a9637555f415a2bb14551e563f09f98534ab54f53d25e8439fdde6ba2d - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.0" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.25.0 - "@babel/helper-plugin-utils": ^7.24.8 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 608d6b0e77341189508880fd1a9f605a38d0803dd6f678ea3920ab181b17b377f6d5221ae8cf0104c7a044d30d4ddb0366bd064447695671d78457a656bb264f - languageName: node - linkType: hard - -"@babel/plugin-transform-dynamic-import@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.1" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e322a08f01cedddcd7c70aa6a74342e900df39ab13dbaa2c8175af660b1786dd26b582546fc37e16bec47181931963e173ff53ffd7c41d5f54687da5f8d457bb - languageName: node - linkType: hard - -"@babel/plugin-transform-dynamic-import@npm:^7.22.11, @babel/plugin-transform-dynamic-import@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.11" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 78fc9c532210bf9e8f231747f542318568ac360ee6c27e80853962c984283c73da3f8f8aebe83c2096090a435b356b092ed85de617a156cbe0729d847632be45 - languageName: node - linkType: hard - -"@babel/plugin-transform-dynamic-import@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 776509ff62ab40c12be814a342fc56a5cc09b91fb63032b2633414b635875fd7da03734657be0f6db2891fe6e3033b75d5ddb6f2baabd1a02e4443754a785002 - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f2d660c1b1d51ad5fec1cd5ad426a52187204068c4158f8c4aa977b31535c61b66898d532603eef21c15756827be8277f724c869b888d560f26d7fe848bb5eae - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 23c84a23eb56589fdd35a3540f9a1190615be069110a2270865223c03aee3ba4e0fc68fe14850800cf36f0712b26e4964d3026235261f58f0405a29fe8dac9b1 - languageName: node - linkType: hard - -"@babel/plugin-transform-export-namespace-from@npm:^7.22.11, @babel/plugin-transform-export-namespace-from@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.11" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 73af5883a321ed56a4bfd43c8a7de0164faebe619287706896fc6ee2f7a4e69042adaa1338c0b8b4bdb9f7e5fdceb016fb1d40694cb43ca3b8827429e8aac4bf - languageName: node - linkType: hard - -"@babel/plugin-transform-export-namespace-from@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7bb031ea6e05e8090ac18dc03c62527be29f541e9ec0c93031d77d4540c736b43384a2f2a9aef1f72b7867989f1ce2aaefb325dbc7cc49c59f55aed87a96d488 - languageName: node - linkType: hard - -"@babel/plugin-transform-export-namespace-from@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3bd3a10038f10ae0dea1ee42137f3edcf7036b5e9e570a0d1cbd0865f03658990c6c2d84fa2475f87a754e7dc5b46766c16f7ce5c9b32c3040150b6a21233a80 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.0.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/plugin-syntax-flow": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f15fe806d33705344bcef978c69add12e5e1ccfcf75c4bce6bf1100f90e858e5b40afc333aedf4aaaff0170cd8187a86df7168e59823ec883261bda2535773ba - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.20.0": - version: 7.24.7 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-flow": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 260bd95b1a90ff4af11bf8e21e6dd35b1b7863daffb12a5b2018e2806fec033a7883114dc5f0b67d594ca93fe6f2c9894944c865dd2c51affb7da0f9a6473872 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-flow": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a45951c57265c366f95db9a5e70a62cfc3eafafa3f3d23295357577b5fc139d053d45416cdbdf4a0a387e41cefc434ab94dd6c3048d03b094ff6d041dd10a0b0 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.24.7": - version: 7.25.2 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.2" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/plugin-syntax-flow": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9f7b96cbd374077eaf04b59e468976d2e89ec353807d7ac28f129f686945447df92aeb5b60acf906f3ec0f9ebef5d9f88735c7aa39af97033a6ab96c79c9a909 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.0.0": - version: 7.18.1 - resolution: "@babel/plugin-transform-for-of@npm:7.18.1" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cdc6e1f1170218cc6ac5b26b4b8f011ec5c36666101e00e0061aaa5772969b093bad5b2af8ce908c184126d5bb0c26b89dd4debb96b2375aba2e20e427a623a8 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-for-of@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2f3f86ca1fab2929fcda6a87e4303d5c635b5f96dc9a45fd4ca083308a3020c79ac33b9543eb4640ef2b79f3586a00ab2d002a7081adb9e9d7440dce30781034 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-for-of@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b6666b24e8ca1ffbf7452a0042149724e295965aad55070dc9ee992451d69d855fc9db832c1c5fb4d3dc532f4a18a2974d5f8524f5c2250dda888d05f6f3cadb - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.22.15, @babel/plugin-transform-for-of@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-transform-for-of@npm:7.22.15" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f395ae7bce31e14961460f56cf751b5d6e37dd27d7df5b1f4e49fec1c11b6f9cf71991c7ffbe6549878591e87df0d66af798cf26edfa4bfa6b4c3dba1fb2f73a - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-for-of@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a53b42dc93ab4b7d1ebd3c695b52be22b3d592f6a3dbdb3dc2fea2c8e0a7e1508fe919864c455cde552aec44ce7518625fccbb70c7063373ca228d884f4f49ea - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.0.0": - version: 7.16.7 - resolution: "@babel/plugin-transform-function-name@npm:7.16.7" - dependencies: - "@babel/helper-compilation-targets": ^7.16.7 - "@babel/helper-function-name": ^7.16.7 - "@babel/helper-plugin-utils": ^7.16.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4d97d0b84461cdd5d5aa2d010cdaf30f1f83a92a0dedd3686cbc7e90dc1249a70246f5bac0c1f3cd3f1dbfb03f7aac437776525a0c90cafd459776ea4fcc6bde - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" - dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-function-name@npm:7.22.5" - dependencies: - "@babel/helper-compilation-targets": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cff3b876357999cb8ae30e439c3ec6b0491a53b0aa6f722920a4675a6dd5b53af97a833051df4b34791fe5b3dd326ccf769d5c8e45b322aa50ee11a660b17845 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.25.1": - version: 7.25.1 - resolution: "@babel/plugin-transform-function-name@npm:7.25.1" - dependencies: - "@babel/helper-compilation-targets": ^7.24.8 - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/traverse": ^7.25.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 743f3ea03bbc5a90944849d5a880b6bd9243dddbde581a46952da76e53a0b74c1e2424133fe8129d7a152c1f8c872bcd27e0b6728d7caadabd1afa7bb892e1e0 - languageName: node - linkType: hard - -"@babel/plugin-transform-json-strings@npm:^7.22.11, @babel/plugin-transform-json-strings@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-json-strings@npm:7.22.11" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 50665e5979e66358c50e90a26db53c55917f78175127ac2fa05c7888d156d418ffb930ec0a109353db0a7c5f57c756ce01bfc9825d24cbfd2b3ec453f2ed8cba - languageName: node - linkType: hard - -"@babel/plugin-transform-json-strings@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-json-strings@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2b09a549bdd80020b390dbc91aaf0be624e42fff64026a38abad1ec6c7714551edad8a84edb555288778aa9e3bb20e9df535587466b30347b63532fb1f404731 - languageName: node - linkType: hard - -"@babel/plugin-transform-json-strings@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 88874d0b7a1ddea66c097fc0abb68801ffae194468aa44b828dde9a0e20ac5d8647943793de86092eabaa2911c96f67a6b373793d4bb9c932ef81b2711c06c2e - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.0.0": - version: 7.17.12 - resolution: "@babel/plugin-transform-literals@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 09280fc1ed23b81deafd4fcd7a35d6c0944668de2317f14c1b8b78c5c201f71a063bb8d174d2fc97d86df480ff23104c8919d3aacf19f33c2b5ada584203bf1c - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-literals@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ec37cc2ffb32667af935ab32fe28f00920ec8a1eb999aa6dc6602f2bebd8ba205a558aeedcdccdebf334381d5c57106c61f52332045730393e73410892a9735b - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/plugin-transform-literals@npm:7.25.2" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 70c9bb40e377a306bd8f500899fb72127e527517914466e95dc6bb53fa7a0f51479db244a54a771b5780fc1eab488fedd706669bf11097b81a23c81ab7423eb1 - languageName: node - linkType: hard - -"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.11, @babel/plugin-transform-logical-assignment-operators@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.11" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c664e9798e85afa7f92f07b867682dee7392046181d82f5d21bae6f2ca26dfe9c8375cdc52b7483c3fc09a983c1989f60eff9fbc4f373b0c0a74090553d05739 - languageName: node - linkType: hard - -"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b2452c6804aa440bd3fc662ee4f477c3acfa4a7f768ac66a6084a9e0774ac52cfff7cc6ea72495cc4e0728d2d7f98b65555927484dc96e9564adf1bcc5aa956e - languageName: node - linkType: hard - -"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3367ce0be243704dc6fce23e86a592c4380f01998ee5dd9f94c54b1ef7b971ac6f8a002901eb51599ac6cbdc0d067af8d1a720224fca1c40fde8bb8aab804aac - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.0.0": - version: 7.16.7 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": ^7.16.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fdf5b22abab2b770e69348ce7f99796c3e0e1e7ce266afdbe995924284704930fa989323bdbda7070db8adb45a72f39eaa1dbebf18b67fc44035ec00c6ae3300 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ec4b0e07915ddd4fda0142fd104ee61015c208608a84cfa13643a95d18760b1dc1ceb6c6e0548898b8c49e5959a994e46367260176dbabc4467f729b21868504 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2720c57aa3bf70576146ba7d6ea03227f4611852122d76d237924f7b008dafc952e6ae61a19e5024f26c665f44384bbd378466f01b6bd1305b3564a3b7fb1a5d - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-amd@npm:7.20.11" - dependencies: - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 23665c1c20c8f11c89382b588fb9651c0756d130737a7625baeaadbd3b973bc5bfba1303bedffa8fb99db1e6d848afb01016e1df2b69b18303e946890c790001 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-modules-amd@npm:7.22.5" - dependencies: - "@babel/helper-module-transforms": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7da4c4ebbbcf7d182abb59b2046b22d86eee340caf8a22a39ef6a727da2d8acfec1f714fcdcd5054110b280e4934f735e80a6848d192b6834c5d4459a014f04d - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7" - dependencies: - "@babel/helper-module-transforms": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f1dd0fb2f46c0f8f21076b8c7ccd5b33a85ce6dcb31518ea4c648d9a5bb2474cd4bd87c9b1b752e68591e24b022e334ba0d07631fef2b6b4d8a4b85cf3d581f5 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0": - version: 7.18.2 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.18.2" - dependencies: - "@babel/helper-module-transforms": ^7.18.0 - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/helper-simple-access": ^7.18.2 - babel-plugin-dynamic-import-node: ^2.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 99c1c5ce9c353e29eb680ebb5bdf27c076c6403e133a066999298de642423cc7f38cfbac02372d33ed73278da13be23c4be7d60169c3e27bd900a373e61a599a - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.2" - dependencies: - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-simple-access": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 65aa06e3e3792f39b99eb5f807034693ff0ecf80438580f7ae504f4c4448ef04147b1889ea5e6f60f3ad4a12ebbb57c6f1f979a249dadbd8d11fe22f4441918b - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.5" - dependencies: - "@babel/helper-module-transforms": ^7.21.5 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/helper-simple-access": ^7.21.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9ff7a21baaa60c08a0c86c5e468bb4b2bd85caf51ba78712d8f45e9afa2498d50d6cdf349696e08aa820cafed65f19b70e5938613db9ebb095f7aba1127f282 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.15" - dependencies: - "@babel/helper-module-transforms": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-simple-access": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f8fc85fefa6be8626a378ca38fb84c7359043e7c692c854e9ee250a05121553b7f4a58e127099efe12662ec6bebbfd304ce638a0b4563d7cbd5982f3d877321c - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.22.5": - version: 7.23.0 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0" - dependencies: - "@babel/helper-module-transforms": ^7.23.0 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-simple-access": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7fb25997194053e167c4207c319ff05362392da841bd9f42ddb3caf9c8798a5d203bd926d23ddf5830fdf05eddc82c2810f40d1287e3a4f80b07eff13d1024b5 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.7" - dependencies: - "@babel/helper-module-transforms": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-simple-access": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bfda2a0297197ed342e2a02e5f9847a489a3ae40a4a7d7f00f4aeb8544a85e9006e0c5271c8f61f39bc97975ef2717b5594cf9486694377a53433162909d64c1 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" - dependencies: - "@babel/helper-module-transforms": ^7.24.8 - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/helper-simple-access": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a4cf95b1639c33382064b44558f73ee5fac023f2a94d16e549d2bb55ceebd5cbc10fcddd505d08cd5bc97f5a64af9fd155512358b7dcf7b1a0082e8945cf21c5 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.20.11" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-identifier": ^7.19.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4546c47587f88156d66c7eb7808e903cf4bb3f6ba6ac9bc8e3af2e29e92eb9f0b3f44d52043bfd24eb25fa7827fd7b6c8bfeac0cac7584e019b87e1ecbd0e673 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.11" - dependencies: - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-module-transforms": ^7.22.9 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d0991e4bdc3352b6a9f4d12b6662e3645d892cd5c3c005ba5f14e65f1e218c6a8f7f4497e64a51d82a046e507aaa7db3143b800b0270dca1824cbd214ff3363d - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.3" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/helper-validator-identifier": ^7.19.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a12a063dad61cccf50686d3f394f9f3f6c06261160c897a4b3423309aa7c40d37bd88126cf8535701f3490b99ac93b34c947f664465d63a74477ba66ab1d82e9 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.22.5": - version: 7.23.0 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.0" - dependencies: - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-module-transforms": ^7.23.0 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.20 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2d481458b22605046badea2317d5cc5c94ac3031c2293e34c96f02063f5b02af0979c4da6a8fbc67cc249541575dc9c6d710db6b919ede70b7337a22d9fd57a7 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.0" - dependencies: - "@babel/helper-module-transforms": ^7.25.0 - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/helper-validator-identifier": ^7.24.7 - "@babel/traverse": ^7.25.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fe673bec08564e491847324bb80a1e6edfb229f5c37e58a094d51e95306e7b098e1d130fc43e992d22debd93b9beac74441ffc3f6ea5d78f6b2535896efa0728 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" - dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5" - dependencies: - "@babel/helper-module-transforms": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 46622834c54c551b231963b867adbc80854881b3e516ff29984a8da989bd81665bd70e8cba6710345248e97166689310f544aee1a5773e262845a8f1b3e5b8b4 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7" - dependencies: - "@babel/helper-module-transforms": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9ff1c464892efe042952ba778468bda6131b196a2729615bdcc3f24cdc94014f016a4616ee5643c5845bade6ba698f386833e61056d7201314b13a7fd69fac88 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.20.5 - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 528c95fb1087e212f17e1c6456df041b28a83c772b9c93d2e407c9d03b72182b0d9d126770c1d6e0b23aab052599ceaf25ed6a2c0627f4249be34a83f6fae853 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.3" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: baf3d8d785ab36df2d7396b8a255e1209eecf83ad5334121fbb9e966a95353fe2100dd3683436f4c74b3c848ec0b34817491c4d14b074e3e539e2040076173d8 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 3ee564ddee620c035b928fdc942c5d17e9c4b98329b76f9cefac65c111135d925eb94ed324064cd7556d4f5123beec79abea1d4b97d1c8a2a5c748887a2eb623 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f1c6c7b5d60a86b6d7e4dd098798e1d393d55e993a0b57a73b53640c7a94985b601a96bdacee063f809a9a700bcea3a2ff18e98fa561554484ac56b761d774bd - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-new-target@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a28043575aae52127b7287711cf0b244a28279464d979858408ca6197169b6f7e6341e5b4554a894d409245fcd696c9bf38d5f1f1c64f84a82f479bf35659920 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-new-target@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6b72112773487a881a1d6ffa680afde08bad699252020e86122180ee7a88854d5da3f15d9bca3331cf2e025df045604494a8208a2e63b486266b07c14e2ffbf3 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-new-target@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3cb94cd1076b270f768f91fdcf9dd2f6d487f8dbfff3df7ca8d07b915900b86d02769a35ba1407d16fe49499012c8f055e1741299e2c880798b953d942a8fa1b - languageName: node - linkType: hard - -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.0.0-0, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4a9221356401d87762afbc37a9e8e764afc2daf09c421117537820f8cfbed6876888372ad3a7bcfae2d45c95f026651f050ab4020b777be31d3ffb00908dbdd3 - languageName: node - linkType: hard - -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.11" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 167babecc8b8fe70796a7b7d34af667ebbf43da166c21689502e5e8cc93180b7a85979c77c9f64b7cce431b36718bd0a6df9e5e0ffea4ae22afb22cfef886372 - languageName: node - linkType: hard - -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 404c3c7eb8b99f226ce40147d350ad3df55b38ffe39856356f7cfbbb1626ce060bc1daff0663c090d53160d39fdb26ea67ca291d47211ff7746a8a0c3bbc1639 - languageName: node - linkType: hard - -"@babel/plugin-transform-numeric-separator@npm:^7.22.11, @babel/plugin-transform-numeric-separator@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.11" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: af064d06a4a041767ec396a5f258103f64785df290e038bba9f0ef454e6c914f2ac45d862bbdad8fac2c7ad47fa4e95356f29053c60c100a0160b02a995fe2a3 - languageName: node - linkType: hard - -"@babel/plugin-transform-numeric-separator@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2cbcf21d040cb9ab6ded383586620f3a84e8619fecdc222d8b3d462c706b1e8ceae2dddf530d9177291c155c80dd67100142e76a11f1e230aeda6d90273a2890 - languageName: node - linkType: hard - -"@babel/plugin-transform-numeric-separator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 561b5f1d08b2c3f92ce849f092751558b5e6cfeb7eb55c79e7375c34dd9c3066dce5e630bb439affef6adcf202b6cbcaaa23870070276fa5bb429c8f5b8c7514 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-rest-spread@npm:^7.12.13, @babel/plugin-transform-object-rest-spread@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" - dependencies: - "@babel/helper-compilation-targets": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 169d257b9800c13e1feb4c37fb05dae84f702e58b342bb76e19e82e6692b7b5337c9923ee89e3916a97c0dd04a3375bdeca14f5e126f110bbacbeb46d1886ca2 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-rest-spread@npm:^7.22.15, @babel/plugin-transform-object-rest-spread@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.15" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.22.15 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62197a6f12289c1c1bd57f3bed9f0f765ca32390bfe91e0b5561dd94dd9770f4480c4162dec98da094bc0ba99d2c2ebba68de47c019454041b0b7a68ba2ec66d - languageName: node - linkType: hard - -"@babel/plugin-transform-object-rest-spread@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.3" - dependencies: - "@babel/compat-data": ^7.22.3 - "@babel/helper-compilation-targets": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.22.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 43f4cb8eb60e76bb506cab86a6c9a98b2f4f986296a20a01f93c6a7bf3835621a22e3e85eaca094c86b03580f93e583391f4c0da0af0c9408ff1a2b35f2e96ca - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.0.0": - version: 7.16.7 - resolution: "@babel/plugin-transform-object-super@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": ^7.16.7 - "@babel/helper-replace-supers": ^7.16.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 46e3c879f4a93e904f2ecf83233d40c48c832bdbd82a67cab1f432db9aa51702e40d9e51e5800613e12299974f90f4ed3869e1273dbca8642984266320c5f341 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-object-super@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b71887877d74cb64dbccb5c0324fa67e31171e6a5311991f626650e44a4083e5436a1eaa89da78c0474fb095d4ec322d63ee778b202d33aa2e4194e1ed8e62d7 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-object-super@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-replace-supers": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f71e607a830ee50a22fa1a2686524d3339440cf9dea63032f6efbd865cfe4e35000e1e3f3492459e5c986f7c0c07dc36938bf3ce61fc9ba5f8ab732d0b64ab37 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-catch-binding@npm:^7.22.11, @babel/plugin-transform-optional-catch-binding@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.11" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f17abd90e1de67c84d63afea29c8021c74abb2794d3a6eeafb0bbe7372d3db32aefca386e392116ec63884537a4a2815d090d26264d259bacc08f6e3ed05294c - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-catch-binding@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e766bd2ac74fcd2226c8816500c788268a1fa5200498a288f10854253addb36871cd7b415e20736819e7fcb996a0e33312bc1ce6db9b540ec9dd7b946cb37dda - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7229f3a5a4facaab40f4fdfc7faabc157dc38a67d66bed7936599f4bc509e0bff636f847ac2aa45294881fce9cf8a0a460b85d2a465b7b977de9739fce9b18f6 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-chaining@npm:^7.0.0-0": - version: 7.24.7 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 877e7ce9097d475132c7f4d1244de50bb2fd37993dc4580c735f18f8cbc49282f6e77752821bcad5ca9d3528412d2c8a7ee0aa7ca71bb680ff82648e7a5fed25 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-chaining@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.15" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6b97abe0e50ca2dd8684fcef2c8d12607637e707aa9d513b7035f5e812efbde9305736b438d422103a7844e04124cad5efa4ff0e6226a57afa1210a1c7485c8e - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-chaining@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9b50a28b59250ecabeae928b8237c596e6f81f5fcdacd03a99a3777bbfea2447773936f4b5091e63b2d46e707429d9bdf22fcd0fb4b05a702bf08f554bea3ae2 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-chaining@npm:^7.22.5": - version: 7.23.0 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.0" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f702634f2b97e5260dbec0d4bde05ccb6f4d96d7bfa946481aeacfa205ca846cb6e096a38312f9d51fdbdac1f258f211138c5f7075952e46a5bf8574de6a1329 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 45e55e3a2fffb89002d3f89aef59c141610f23b60eee41e047380bffc40290b59f64fc649aa7ec5281f73d41b2065410d788acc6afaad2a9f44cad6e8af04442 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.17.12": - version: 7.17.12 - resolution: "@babel/plugin-transform-parameters@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9ed5ec61dc460835bade8fa710b42ec9f207bd448ead7e8abd46b87db0afedbb3f51284700fd2a6892fdf6544ec9b949c505c6542c5ba0a41ca4e8749af00f0 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-parameters@npm:7.21.3" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c92128d7b1fcf54e2cab186c196bbbf55a9a6de11a83328dc2602649c9dc6d16ef73712beecd776cd49bfdc624b5f56740f4a53568d3deb9505ec666bc869da3 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.22.15, @babel/plugin-transform-parameters@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-transform-parameters@npm:7.22.15" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 541188bb7d1876cad87687b5c7daf90f63d8208ae83df24acb1e2b05020ad1c78786b2723ca4054a83fcb74fb6509f30c4cacc5b538ee684224261ad5fb047c1 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-parameters@npm:7.22.3" + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: - "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-plugin-utils": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 68a30f630f5d99be7675fab23d009205302f33f1eac015418d5344983fe8f97f4eae0130f6e4f3c21b8dd8971d516346fba90b01ba3c2c15f23b47c6f4b7161a + checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-parameters@npm:7.24.7" +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.0.0, @babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.8.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ab534b03ac2eff94bc79342b8f39a4584666f5305a6c63c1964afda0b1b004e6b861e49d1683548030defe248e3590d3ff6338ee0552cb90c064f7e1479968c3 + checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:7.22.5, @babel/plugin-transform-private-methods@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 321479b4fcb6d3b3ef622ab22fd24001e43d46e680e8e41324c033d5810c84646e470f81b44cbcbef5c22e99030784f7cac92f1829974da7a47a60a7139082c3 + checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-private-methods@npm:7.22.3" +"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-plugin-utils": ^7.8.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 048501cfdf86c3de5750dc0728cf73d65f1ec4ad932e16e55b238ac0b5b805882c1fbbdb63077d95ce8beadae840cee11b767cc6918264517245e7f04baf9f63 + checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-private-methods@npm:7.24.7" +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" dependencies: - "@babel/helper-create-class-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.8.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c151548e34909be2adcceb224d8fdd70bafa393bc1559a600906f3f647317575bf40db670470934a360e90ee8084ef36dffa34ec25d387d414afd841e74cf3fe + checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.5" +"@babel/plugin-syntax-optional-chaining@npm:^7.0.0, @babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/helper-plugin-utils": ^7.8.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9ac019fb2772f3af6278a7f4b8b14b0663accb3fd123d87142ceb2fbc57fd1afa07c945d1329029b026b9ee122096ef71a3f34f257a9e04cf4245b87298c38b4 + checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.22.11, @babel/plugin-transform-private-property-in-object@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.11" +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.11 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/helper-plugin-utils": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4d029d84901e53c46dead7a46e2990a7bc62470f4e4ca58a0d063394f86652fd58fe4eea1eb941da3669cd536b559b9d058b342b59300026346b7a2a51badac8 + checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.3" +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/helper-plugin-utils": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ea3c347687672119305ba2f2ef7ca66905c1713c6652bb01deacc057178bedcf07c46b6b75e1fe8688ffed8fcabe312a735eeb0fef21dd9ab61a61db23ef6ba5 + checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" +"@babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.25.9, @babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - "@babel/helper-create-class-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8cee9473095305cc787bb653fd681719b49363281feabf677db8a552e8e41c94441408055d7e5fd5c7d41b315e634fa70b145ad0c7c54456216049df4ed57350 + checksum: 0e9821e8ba7d660c36c919654e4144a70546942ae184e85b8102f2322451eae102cbfadbcadd52ce077a2b44b400ee52394c616feab7b5b9f791b910e933fd33 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.0.0": - version: 7.16.7 - resolution: "@babel/plugin-transform-property-literals@npm:7.16.7" +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b5674458991a9b0e8738989d70faa88c7f98ed3df923c119f1225069eed72fe5e0ce947b1adc91e378f5822fbdeb7a672f496fd1c75c4babcc88169e3a7c3229 + "@babel/core": ^7.0.0 + checksum: a651d700fe63ff0ddfd7186f4ebc24447ca734f114433139e3c027bc94a900d013cf1ef2e2db8430425ba542e39ae160c3b05f06b59fd4656273a3df97679e9c languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" +"@babel/plugin-transform-arrow-functions@npm:^7.0.0, @babel/plugin-transform-arrow-functions@npm:^7.0.0-0, @babel/plugin-transform-arrow-functions@npm:^7.22.5, @babel/plugin-transform-arrow-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 + checksum: c29f081224859483accf55fb4d091db2aac0dcd0d7954bac5ca889030cc498d3f771aa20eb2e9cd8310084ec394d85fa084b97faf09298b6bc9541182b3eb5bb languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" +"@babel/plugin-transform-async-generator-functions@npm:^7.22.5, @babel/plugin-transform-async-generator-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-remap-async-to-generator": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 796176a3176106f77fcb8cd04eb34a8475ce82d6d03a88db089531b8f0453a2fb8b0c6ec9a52c27948bc0ea478becec449893741fc546dfc3930ab927e3f9f2e + checksum: 41e02c18c2a57de9f274fa2c5a1bf81a20ab5f321db29cc3051512b9c5bdf3f1a8c42f1fc282cb62343c6d50849f992eede954d5f7fb5e7df48ae0c59ea7e054 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" +"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.22.5, @babel/plugin-transform-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-module-imports": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-remap-async-to-generator": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9aeefc3aab6c6bf9d1fae1cf3a2d38c7d886fd3c6c81b7c608c477f5758aee2e7abf52f32724310fe861da61af934ee2508b78a5b5f234b9740c9134e1c14437 + checksum: b3ad50fb93c171644d501864620ed23952a46648c4df10dc9c62cc9ad08031b66bd272cfdd708faeee07c23b6251b16f29ce0350473e4c79f0c32178d38ce3a6 languageName: node linkType: hard -"@babel/plugin-transform-react-constant-elements@npm:^7.21.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-react-constant-elements@npm:7.22.3" +"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0, @babel/plugin-transform-block-scoped-functions@npm:^7.22.5, @babel/plugin-transform-block-scoped-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 33a1849de4c1993a666e835022ee7f55691778458f05f0f1b053b12a8e11ccad2659ac21160ee05072d9661507087b7152c0b02d607af2856920739e2514f8f7 + checksum: bf31896556b33a80f017af3d445ceb532ec0f5ca9d69bc211a963ac92514d172d5c24c5ac319f384d9dfa7f1a4d8dc23032c2fe3e74f98a59467ecd86f7033ae languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.22.5, @babel/plugin-transform-block-scoping@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 51c087ab9e41ef71a29335587da28417536c6f816c292e092ffc0e0985d2f032656801d4dd502213ce32481f4ba6c69402993ffa67f0818a07606ff811e4be49 + checksum: e869500cfb1995e06e64c9608543b56468639809febfcdd6fcf683bc0bf1be2431cacf2981a168a1a14f4766393e37bc9f7c96d25bc5b5f39a64a8a8ad0bf8e0 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.22.5": +"@babel/plugin-transform-class-properties@npm:7.22.5": version: 7.22.5 - resolution: "@babel/plugin-transform-react-display-name@npm:7.22.5" + resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a12bfd1e4e93055efca3ace3c34722571bda59d9740dca364d225d9c6e3ca874f134694d21715c42cc63d79efd46db9665bd4a022998767f9245f1e29d5d204d + checksum: b830152dfc2ff2f647f0abe76e6251babdfbef54d18c4b2c73a6bf76b1a00050a5d998dac80dc901a48514e95604324943a9dd39317073fe0928b559e0e0c579 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7" +"@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-create-class-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a05bf83bf5e7b31f7a3b56da1bf8e2eeec76ef52ae44435ceff66363a1717fcda45b7b4b931a2c115982175f481fc3f2d0fab23f0a43c44e6d983afc396858f0 + checksum: a8d69e2c285486b63f49193cbcf7a15e1d3a5f632c1c07d7a97f65306df7f554b30270b7378dde143f8b557d1f8f6336c643377943dec8ec405e4cd11e90b9ea languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" +"@babel/plugin-transform-class-static-block@npm:^7.22.5, @babel/plugin-transform-class-static-block@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-static-block@npm:7.25.9" dependencies: - "@babel/plugin-transform-react-jsx": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ec9fa65db66f938b75c45e99584367779ac3e0af8afc589187262e1337c7c4205ea312877813ae4df9fb93d766627b8968d74ac2ba702e4883b1dbbe4953ecee + "@babel/core": ^7.12.0 + checksum: 306db84958218c1c7e0d7e8f363fcf9970fd52dab8f4f226cbe4876fcf5466a9addee5a79214a7982a7294f014305f3f0951227ff31ba6d5d47c9d54b7d54d2b languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.22.5, @babel/plugin-transform-classes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-classes@npm:7.25.9" dependencies: - "@babel/plugin-transform-react-jsx": ^7.22.5 + "@babel/helper-annotate-as-pure": ^7.25.9 + "@babel/helper-compilation-targets": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-replace-supers": ^7.25.9 + "@babel/traverse": ^7.25.9 + globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 36bc3ff0b96bb0ef4723070a50cfdf2e72cfd903a59eba448f9fe92fea47574d6f22efd99364413719e1f3fb3c51b6c9b2990b87af088f8486a84b2a5f9e4560 + checksum: d12584f72125314cc0fa8c77586ece2888d677788ac75f7393f5da574dfe4e45a556f7e3488fab29c8777ab3e5856d7a2d79f6df02834083aaa9d766440e3c68 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7" +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.22.5, @babel/plugin-transform-computed-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" dependencies: - "@babel/plugin-transform-react-jsx": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/template": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 653d32ea5accb12d016e324ec5a584b60a8f39e60c6a5101194b73553fdefbfa3c3f06ec2410216ec2033fddae181a2f146a1d6ed59f075c488fc4570cad2e7b + checksum: f77fa4bc0c1e0031068172df28852388db6b0f91c268d037905f459607cf1e8ebab00015f9f179f4ad96e11c5f381b635cd5dc4e147a48c7ac79d195ae7542de languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.0.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.21.0" +"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.22.5, @babel/plugin-transform-destructuring@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 696f74c04a265409ccd46e333ff762e6011d394e6972128b5d97db4c1647289141bc7ebd45ab2bab99b60932f9793e8f89ee9432d3bde19962de2100456f6147 + checksum: 965f63077a904828f4adee91393f83644098533442b8217d5a135c23a759a4c252c714074c965676a60d2c33f610f579a4eeb59ffd783724393af61c0ca45fef languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.0.0": - version: 7.19.6 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.19.6" +"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.25.9, @babel/plugin-transform-dotall-regex@npm:^7.4.4": + version: 7.25.9 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.19.0 + "@babel/helper-create-regexp-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1e9e29a4efc5b79840bd4f68e404f5ab7765ce48c7bd22f12f2b185f9c782c66933bdf54a1b21879e4e56e6b50b4e88aca82789ecb1f61123af6dfa9ab16c555 + checksum: 8bdf1bb9e6e3a2cc8154ae88a3872faa6dc346d6901994505fb43ac85f858728781f1219f40b67f7bb0687c507450236cb7838ac68d457e65637f98500aa161b languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.18.6": - version: 7.19.0 - resolution: "@babel/plugin-transform-react-jsx@npm:7.19.0" +"@babel/plugin-transform-duplicate-keys@npm:^7.22.5, @babel/plugin-transform-duplicate-keys@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.19.0 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.19.0 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d7d6f0b8f24b1f6b7cf8062c4e91c59af82489a993e51859bd49c2d62a2d2b77fd40b02a9a1d0e6d874cf4ce56a05fa3564b964587d00c94ebc62593524052ec + checksum: b553eebc328797ead6be5ba5bdaf2f1222cea8a5bd33fb4ed625975d4f9b510bfb0d688d97e314cd4b4a48b279bea7b3634ad68c1b41ee143c3082db0ae74037 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.3" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.21.4 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-jsx": ^7.21.4 - "@babel/types": ^7.22.3 + "@babel/helper-create-regexp-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 063243f5767de490d10ed671223f27baababa4b89b67d1d77207f8f91f8915c485b877773472c97398aef3ce898c3570d367994d5598a0686e18ff5bf3472f31 + "@babel/core": ^7.0.0 + checksum: f7233cf596be8c6843d31951afaf2464a62a610cb89c72c818c044765827fab78403ab8a7d3a6386f838c8df574668e2a48f6c206b1d7da965aff9c6886cb8e6 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.15" +"@babel/plugin-transform-dynamic-import@npm:^7.22.5, @babel/plugin-transform-dynamic-import@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-module-imports": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-jsx": ^7.22.5 - "@babel/types": ^7.22.15 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3899054e89550c3a0ef041af7c47ee266e2e934f498ee80fefeda778a6aa177b48aa8b4d2a8bf5848de977fec564571699ab952d9fa089c4c19b45ddb121df09 + checksum: aaca1ccda819be9b2b85af47ba08ddd2210ff2dbea222f26e4cd33f97ab020884bf81a66197e50872721e9daf36ceb5659502c82199884ea74d5d75ecda5c58b languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx@npm:7.24.7" +"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5, @babel/plugin-transform-exponentiation-operator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - "@babel/helper-module-imports": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-jsx": ^7.24.7 - "@babel/types": ^7.24.7 + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ddfe494eb4b6ad567ebf0c029246df55d006512b1eb4beead73427b83af2e7e91b6d6e6954e275a92c81a5111d1e6e1fb4a62fdfc6f77c847cc7581650a7c452 + checksum: 57e1bb4135dd16782fe84b49dd360cce8f9bf5f62eb10424dcdaf221e54a8bacdf50f2541c5ac01dea9f833a6c628613d71be915290938a93454389cba4de06b languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6" +"@babel/plugin-transform-export-namespace-from@npm:^7.22.11, @babel/plugin-transform-export-namespace-from@npm:^7.22.5, @babel/plugin-transform-export-namespace-from@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 97c4873d409088f437f9084d084615948198dd87fc6723ada0e7e29c5a03623c2f3e03df3f52e7e7d4d23be32a08ea00818bff302812e48713c706713bd06219 + checksum: 4dfe8df86c5b1d085d591290874bb2d78a9063090d71567ed657a418010ad333c3f48af2c974b865f53bbb718987a065f89828d43279a7751db1a56c9229078d languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.22.5" +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.20.0, @babel/plugin-transform-flow-strip-types@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/plugin-syntax-flow": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 092021c4f404e267002099ec20b3f12dd730cb90b0d83c5feed3dc00dbe43b9c42c795a18e7c6c7d7bddea20c7dd56221b146aec81b37f2e7eb5137331c61120 + checksum: 7f51cd5cc0c3a5ce2fe31c689458706ed40284a1c59b017167c3cbef953550a843450c5cfe6896b154fb645f141a930a4fd925f46b2215d0fcc66e7758202c38 languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.7" +"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.22.5, @babel/plugin-transform-for-of@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-for-of@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d859ada3cbeb829fa3d9978a29b2d36657fcc9dcc1e4c3c3af84ec5a044a8f8db26ada406baa309e5d4d512aca53d07c520d991b891ff943bec7d8f01aae0419 + checksum: 41b56e70256a29fc26ed7fb95ece062d7ec2f3b6ea8f0686349ffd004cd4816132085ee21165b89c502ee7161cb7cfb12510961638851357945dc7bc546475b7 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" +"@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.22.5, @babel/plugin-transform-function-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-function-name@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - regenerator-transform: ^0.15.1 + "@babel/helper-compilation-targets": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 13164861e71fb23d84c6270ef5330b03c54d5d661c2c7468f28e21c4f8598558ca0c8c3cb1d996219352946e849d270a61372bc93c8fbe9676e78e3ffd0dea07 + checksum: a8d7c8d019a6eb57eab5ca1be3e3236f175557d55b1f3b11f8ad7999e3fbb1cf37905fd8cb3a349bffb4163a558e9f33b63f631597fdc97c858757deac1b2fd7 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.21.5" +"@babel/plugin-transform-json-strings@npm:^7.22.5, @babel/plugin-transform-json-strings@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-json-strings@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - regenerator-transform: ^0.15.1 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5291f6871276f57a6004f16d50ae9ad57f22a6aa2a183b8c84de8126f1066c6c9f9bbeadb282b5207fa9e7b0f57e40a8421d46cb5c60caf7e2848e98224d5639 + checksum: e2498d84761cfd05aaea53799933d55af309c9d6204e66b38778792d171e4d1311ad34f334259a3aa3407dd0446f6bd3e390a1fcb8ce2e42fe5aabed0e41bee1 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.22.10, @babel/plugin-transform-regenerator@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/plugin-transform-regenerator@npm:7.22.10" +"@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.22.5, @babel/plugin-transform-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-literals@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - regenerator-transform: ^0.15.2 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e13678d62d6fa96f11cb8b863f00e8693491e7adc88bfca3f2820f80cbac8336e7dec3a596eee6a1c4663b7ececc3564f2cd7fb44ed6d4ce84ac2bb7f39ecc6e + checksum: 3cca75823a38aab599bc151b0fa4d816b5e1b62d6e49c156aa90436deb6e13649f5505973151a10418b64f3f9d1c3da53e38a186402e0ed7ad98e482e70c0c14 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.5, @babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - regenerator-transform: ^0.15.2 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 20c6c3fb6fc9f407829087316653388d311e8c1816b007609bb09aeef254092a7157adace8b3aaa8f34be752503717cb85c88a5fe482180a9b11bcbd676063be + checksum: 8c6febb4ac53852314d28b5e2c23d5dbbff7bf1e57d61f9672e0d97531ef7778b3f0ad698dcf1179f5486e626c77127508916a65eb846a89e98a92f70ed3537b languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" +"@babel/plugin-transform-member-expression-literals@npm:^7.0.0, @babel/plugin-transform-member-expression-literals@npm:^7.22.5, @babel/plugin-transform-member-expression-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c + checksum: db92041ae87b8f59f98b50359e0bb172480f6ba22e5e76b13bdfe07122cbf0daa9cd8ad2e78dcb47939938fed88ad57ab5989346f64b3a16953fc73dea3a9b1f languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" +"@babel/plugin-transform-modules-amd@npm:^7.22.5, @babel/plugin-transform-modules-amd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-amd@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-module-transforms": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3ffd7dbc425fe8132bfec118b9817572799cab1473113a635d25ab606c1f5a2341a636c04cf6b22df3813320365ed5a965b5eeb3192320a10e4cc2c137bd8bfc + checksum: baad1f6fd0e0d38e9a9c1086a06abdc014c4c653fd452337cadfe23fb5bd8bf4368d1bc433a5ac8e6421bc0732ebb7c044cf3fb39c1b7ebe967d66e26c4e5cec languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.22.5, @babel/plugin-transform-modules-commonjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-module-transforms": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-simple-access": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3d5876954d5914d7270819479504f30c4bf5452a65c677f44e2dab2db50b3c9d4b47793c45dfad7abf4f377035dd79e4b3f554ae350df9f422201d370ce9f8dd + checksum: 4f101f0ea4a57d1d27a7976d668c63a7d0bbb0d9c1909d8ac43c785fd1496c31e6552ffd9673730c088873df1bc64f1cc4aad7c3c90413ac5e80b33e336d80e4 languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-runtime@npm:7.22.5" +"@babel/plugin-transform-modules-systemjs@npm:^7.22.5, @babel/plugin-transform-modules-systemjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" dependencies: - "@babel/helper-module-imports": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - babel-plugin-polyfill-corejs2: ^0.4.3 - babel-plugin-polyfill-corejs3: ^0.8.1 - babel-plugin-polyfill-regenerator: ^0.5.0 - semver: ^6.3.0 + "@babel/helper-module-transforms": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 52cf177045b5f61a6cfc36b45aa7629586dc00a28371a09ef03e877a627f520efd51817ad8cceabaaa25f266e069859b36a5ac5018afeaa7f37aafa9325df4d8 + checksum: bf446202f372ba92dc0db32b24b56225b6e3ad3b227e31074de8b86fdec01c273ae2536873e38dbe3ceb1cd0894209343adeaa37df208e3fa88c0c7dffec7924 languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:^7.0.0": - version: 7.21.4 - resolution: "@babel/plugin-transform-runtime@npm:7.21.4" +"@babel/plugin-transform-modules-umd@npm:^7.22.5, @babel/plugin-transform-modules-umd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-umd@npm:7.25.9" dependencies: - "@babel/helper-module-imports": ^7.21.4 - "@babel/helper-plugin-utils": ^7.20.2 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - semver: ^6.3.0 + "@babel/helper-module-transforms": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7e2e6b0d6f9762fde58738829e4d3b5e13dc88ccc1463e4eee83c8d8f50238eeb8e3699923f5ad4d7edf597515f74d67fbb14eb330225075fc7733b547e22145 + checksum: 946db66be5f04ab9ee56c424b00257276ec094aa2f148508927e6085239f76b00304fa1e33026d29eccdbe312efea15ca3d92e74a12689d7f0cdd9a7ba1a6c54 languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:^7.23.2": - version: 7.24.7 - resolution: "@babel/plugin-transform-runtime@npm:7.24.7" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" dependencies: - "@babel/helper-module-imports": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - babel-plugin-polyfill-corejs2: ^0.4.10 - babel-plugin-polyfill-corejs3: ^0.10.1 - babel-plugin-polyfill-regenerator: ^0.6.1 - semver: ^6.3.1 + "@babel/helper-create-regexp-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 98bcbbdc833d5c451189a6325f88820fe92973e119c59ce74bf28681cf4687c8280decb55b6c47f22e98c3973ae3a13521c4f51855a2b8577b230ecb1b4ca5b4 + "@babel/core": ^7.0.0 + checksum: 434346ba05cf74e3f4704b3bdd439287b95cd2a8676afcdc607810b8c38b6f4798cd69c1419726b2e4c7204e62e4a04d31b0360e91ca57a930521c9211e07789 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.0.0": - version: 7.16.7 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.16.7" +"@babel/plugin-transform-new-target@npm:^7.22.5, @babel/plugin-transform-new-target@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-new-target@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ca381ecf8f48696512172deca40af46b1f64e3497186fdc2c9009286d8f06b468c4d61cdc392dc8b0c165298117dda67be9e2ff0e99d7691b0503f1240d4c62b + checksum: f8113539919aafce52f07b2bd182c771a476fe1d5d96d813460b33a16f173f038929369c595572cadc1f7bd8cb816ce89439d056e007770ddd7b7a0878e7895f languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.0.0-0, @babel/plugin-transform-shorthand-properties@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.0.0-0, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.5, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7b524245814607188212b8eb86d8c850e5974203328455a30881b4a92c364b93353fae14bc2af5b614ef16300b75b8c1d3b8f3a08355985b4794a7feb240adc3 + checksum: 26e03b1c2c0408cc300e46d8f8cb639653ff3a7b03456d0d8afbb53c44f33a89323f51d99991dade3a5676921119bbdf869728bb7911799b5ef99ffafa2cdd24 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" +"@babel/plugin-transform-numeric-separator@npm:^7.22.5, @babel/plugin-transform-numeric-separator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 + checksum: 0528ef041ed88e8c3f51624ee87b8182a7f246fe4013f0572788e0727d20795b558f2b82e3989b5dd416cbd339500f0d88857de41b6d3b6fdacb1d5344bcc5b1 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" +"@babel/plugin-transform-object-rest-spread@npm:^7.12.13, @babel/plugin-transform-object-rest-spread@npm:^7.22.5, @babel/plugin-transform-object-rest-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-compilation-targets": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/plugin-transform-parameters": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a5ac902c56ea8effa99f681340ee61bac21094588f7aef0bc01dff98246651702e677552fa6d10e548c4ac22a3ffad047dd2f8c8f0540b68316c2c203e56818b + checksum: a8ff73e1c46a03056b3a2236bafd6b3a4b83da93afe7ee24a50d0a8088150bf85bc5e5977daa04e66ff5fb7613d02d63ad49b91ebb64cf3f3022598d722e3a7a languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.0.0": - version: 7.17.12 - resolution: "@babel/plugin-transform-spread@npm:7.17.12" +"@babel/plugin-transform-object-super@npm:^7.0.0, @babel/plugin-transform-object-super@npm:^7.22.5, @babel/plugin-transform-object-super@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-super@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-replace-supers": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3a95e4f163d598c0efc9d983e5ce3e8716998dd2af62af8102b11cb8d6383c71b74c7106adbce73cda6e48d3d3e927627847d36d76c2eb688cd0e2e07f67fb51 + checksum: 1817b5d8b80e451ae1ad9080cca884f4f16df75880a158947df76a2ed8ab404d567a7dce71dd8051ef95f90fbe3513154086a32aba55cc76027f6cbabfbd7f98 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-spread@npm:7.20.7" +"@babel/plugin-transform-optional-catch-binding@npm:^7.22.5, @babel/plugin-transform-optional-catch-binding@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8ea698a12da15718aac7489d4cde10beb8a3eea1f66167d11ab1e625033641e8b328157fd1a0b55dd6531933a160c01fc2e2e61132a385cece05f26429fd0cc2 + checksum: b46a8d1e91829f3db5c252583eb00d05a779b4660abeea5500fda0f8ffa3584fd18299443c22f7fddf0ed9dfdb73c782c43b445dc468d4f89803f2356963b406 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-spread@npm:7.22.5" +"@babel/plugin-transform-optional-chaining@npm:^7.0.0-0, @babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5587f0deb60b3dfc9b274e269031cc45ec75facccf1933ea2ea71ced9fd3ce98ed91bb36d6cd26817c14474b90ed998c5078415f0eab531caf301496ce24c95c + checksum: f1642a7094456067e82b176e1e9fd426fda7ed9df54cb6d10109fc512b622bf4b3c83acc5875125732b8622565107fdbe2d60fe3ec8685e1d1c22c38c1b57782 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-spread@npm:7.24.7" +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.22.15, @babel/plugin-transform-parameters@npm:^7.22.5, @babel/plugin-transform-parameters@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-parameters@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4c4254c8b9cceb1a8f975fa9b92257ddb08380a35c0a3721b8f4b9e13a3d82e403af2e0fba577b9f2452dd8f06bc3dea71cc53b1e2c6af595af5db52a13429d6 + checksum: d7ba2a7d05edbc85aed741289b0ff3d6289a1c25d82ac4be32c565f88a66391f46631aad59ceeed40824037f7eeaa7a0de1998db491f50e65a565cd964f78786 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.0.0, @babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" +"@babel/plugin-transform-private-methods@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 + checksum: 321479b4fcb6d3b3ef622ab22fd24001e43d46e680e8e41324c033d5810c84646e470f81b44cbcbef5c22e99030784f7cac92f1829974da7a47a60a7139082c3 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5" +"@babel/plugin-transform-private-methods@npm:^7.22.5, @babel/plugin-transform-private-methods@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 63b2c575e3e7f96c32d52ed45ee098fb7d354b35c2223b8c8e76840b32cc529ee0c0ceb5742fd082e56e91e3d82842a367ce177e82b05039af3d602c9627a729 + checksum: 6e3671b352c267847c53a170a1937210fa8151764d70d25005e711ef9b21969aaf422acc14f9f7fb86bc0e4ec43e7aefcc0ad9196ae02d262ec10f509f126a58 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" +"@babel/plugin-transform-private-property-in-object@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 118fc7a7ebf7c20411b670c8a030535fdfe4a88bc5643bb625a584dbc4c8a468da46430a20e6bf78914246962b0f18f1b9d6a62561a7762c4f34a038a5a77179 + checksum: 9ac019fb2772f3af6278a7f4b8b14b0663accb3fd123d87142ceb2fbc57fd1afa07c945d1329029b026b9ee122096ef71a3f34f257a9e04cf4245b87298c38b4 languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.0.0": - version: 7.18.2 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.2" +"@babel/plugin-transform-private-property-in-object@npm:^7.22.11, @babel/plugin-transform-private-property-in-object@npm:^7.22.5, @babel/plugin-transform-private-property-in-object@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.17.12 + "@babel/helper-annotate-as-pure": ^7.25.9 + "@babel/helper-create-class-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bc0102ed8c789e5bc01053088e2de85b82cebcd4d57af9fdc32ca62f559d3dd19c33e9d26caa71c5fd8e94152e5ce4fc4da19badc2d537620e6dea83bce7eb05 + checksum: 9ce3e983fea9b9ba677c192aa065c0b42ebdc7774be4c02135df09029ad92a55c35b004650c75952cb64d650872ed18f13ab64422c6fc891d06333762caa8a0a languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.0.0-0, @babel/plugin-transform-template-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" +"@babel/plugin-transform-property-literals@npm:^7.0.0, @babel/plugin-transform-property-literals@npm:^7.22.5, @babel/plugin-transform-property-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-property-literals@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ad44e5826f5a98c1575832dbdbd033adfe683cdff195e178528ead62507564bf02f479b282976cfd3caebad8b06d5fd7349c1cdb880dec3c56daea4f1f179619 + checksum: 436046ab07d54a9b44a384eeffec701d4e959a37a7547dda72e069e751ca7ff753d1782a8339e354b97c78a868b49ea97bf41bf5a44c6d7a3c0a05ad40eeb49c languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" +"@babel/plugin-transform-react-constant-elements@npm:^7.21.3": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-constant-elements@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 + checksum: ed59464c96cd4014f636852b4de398d2ffc22ffe3177a6c2a6058447a72839bb66a346a1db525ab60dcc5dd48ec59113a8325f785593689900358a15136e05c3 languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" +"@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.22.5, @babel/plugin-transform-react-display-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 27e9bb030654cb425381c69754be4abe6a7c75b45cd7f962cd8d604b841b2f0fb7b024f2efc1c25cc53f5b16d79d5e8cfc47cacbdaa983895b3aeefa3e7e24ff + checksum: cd7020494e6f31c287834e8929e6a718d5b0ace21232fa30feb48622c2312045504c34b347dcff9e88145c349882b296a7d6b6cc3d3447d8c85502f16471747c languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" +"@babel/plugin-transform-react-jsx-development@npm:^7.22.5, @babel/plugin-transform-react-jsx-development@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/plugin-transform-react-jsx": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 + checksum: 537d38369537f1eb56041c4b770bc0733fde1801a7f5ffef40a1217ea448f33ee2fa8e6098a58a82fd00e432c1b9426a66849496da419020c9eca3b1b1a23779 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5" +"@babel/plugin-transform-react-jsx-self@npm:^7.0.0": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 82a53a63ffc3010b689ca9a54e5f53b2718b9f4b4a9818f36f9b7dba234f38a01876680553d2716a645a61920b5e6e4aaf8d4a0064add379b27ca0b403049512 + checksum: 41c833cd7f91b1432710f91b1325706e57979b2e8da44e83d86312c78bbe96cd9ef778b4e79e4e17ab25fa32c72b909f2be7f28e876779ede28e27506c41f4ae languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8" +"@babel/plugin-transform-react-jsx-source@npm:^7.0.0": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8663a8e7347cedf181001d99c88cf794b6598c3d82f324098510fe8fb8bd22113995526a77aa35a3cc5d70ffd0617a59dd0d10311a9bf0e1a3a7d3e59b900c00 + checksum: a3e0e5672e344e9d01fb20b504fe29a84918eaa70cec512c4d4b1b035f72803261257343d8e93673365b72c371f35cf34bb0d129720bf178a4c87812c8b9c662 languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.21.3, @babel/plugin-transform-typescript@npm:^7.5.0": - version: 7.21.3 - resolution: "@babel/plugin-transform-typescript@npm:7.21.3" +"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.22.5, @babel/plugin-transform-react-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-typescript": ^7.20.0 + "@babel/helper-annotate-as-pure": ^7.25.9 + "@babel/helper-module-imports": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/plugin-syntax-jsx": ^7.25.9 + "@babel/types": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c16fd577bf43f633deb76fca2a8527d8ae25968c8efdf327c1955472c3e0257e62992473d1ad7f9ee95379ce2404699af405ea03346055adadd3478ad0ecd117 + checksum: 5c6523c3963e3c6cf4c3cc2768a3766318af05b8f6c17aff52a4010e2c170e87b2fcdc94e9c9223ae12158664df4852ce81b9c8d042c15ea8fd83d6375f9f30f languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.22.15, @babel/plugin-transform-typescript@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-transform-typescript@npm:7.22.15" +"@babel/plugin-transform-react-pure-annotations@npm:^7.22.5, @babel/plugin-transform-react-pure-annotations@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-typescript": ^7.22.5 + "@babel/helper-annotate-as-pure": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c5d96cdbf0e1512707aa1c1e3ac6b370a25fd9c545d26008ce44eb13a47bd7fd67a1eb799c98b5ccc82e33a345fda55c0055e1fe3ed97646ed405dd13020b226 + checksum: 9995c0fc7c25d3aaaa0ce84233de02eab2564ea111d0813ec5baa538eb21520402879cc787ad1ad4c2061b99cebc3beb09910e64c9592e8ccb42ae62d9e4fd9a languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-typescript@npm:7.24.7" +"@babel/plugin-transform-regenerator@npm:^7.22.5, @babel/plugin-transform-regenerator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": ^7.24.7 - "@babel/helper-create-class-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/plugin-syntax-typescript": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 + regenerator-transform: ^0.15.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6b367d1e3d6bdbe438878a76436fc6903e2b4fd7c31fa036d43865570d282679ec3f7c0306399851f2866a9b36686a0ea8c343df3750f70d427f1fe20ca54310 + checksum: 1c09e8087b476c5967282c9790fb8710e065eda77c60f6cb5da541edd59ded9d003d96f8ef640928faab4a0b35bf997673499a194973da4f0c97f0935807a482 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" +"@babel/plugin-transform-reserved-words@npm:^7.22.5, @babel/plugin-transform-reserved-words@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd + checksum: 8beda04481b25767acbd1f6b9ef7b3a9c12fbd9dcb24df45a6ad120e1dc4b247c073db60ac742f9093657d6d8c050501fc0606af042f81a3bb6a3ff862cddc47 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.21.5" +"@babel/plugin-transform-runtime@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-runtime@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.3 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 + semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6504d642d0449a275191b624bd94d3e434ae154e610bf2f0e3c109068b287d2474f68e1da64b47f21d193cd67b27ee4643877d530187670565cac46e29fd257d + checksum: 52cf177045b5f61a6cfc36b45aa7629586dc00a28371a09ef03e877a627f520efd51817ad8cceabaaa25f266e069859b36a5ac5018afeaa7f37aafa9325df4d8 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.22.10, @babel/plugin-transform-unicode-escapes@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.10" +"@babel/plugin-transform-runtime@npm:^7.0.0, @babel/plugin-transform-runtime@npm:^7.23.2": + version: 7.25.9 + resolution: "@babel/plugin-transform-runtime@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-module-imports": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + babel-plugin-polyfill-corejs2: ^0.4.10 + babel-plugin-polyfill-corejs3: ^0.10.6 + babel-plugin-polyfill-regenerator: ^0.6.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 807f40ed1324c8cb107c45358f1903384ca3f0ef1d01c5a3c5c9b271c8d8eec66936a3dcc8d75ddfceea9421420368c2e77ae3adef0a50557e778dfe296bf382 + checksum: db7f20a7a7324dbfe3b43a09f0095c69dadcf8b08567fa7c7fa6e245d97c66cdcdc330e97733b7589261c0e1046bc5cc36741b932ac5dd7757374495b57e7b02 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0, @babel/plugin-transform-shorthand-properties@npm:^7.0.0-0, @babel/plugin-transform-shorthand-properties@npm:^7.22.5, @babel/plugin-transform-shorthand-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4af0a193e1ddea6ff82b2b15cc2501b872728050bd625740b813c8062fec917d32d530ff6b41de56c15e7296becdf3336a58db81f5ca8e7c445c1306c52f3e01 + checksum: f774995d58d4e3a992b732cf3a9b8823552d471040e280264dd15e0735433d51b468fef04d75853d061309389c66bda10ce1b298297ce83999220eb0ad62741d languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.3" +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.22.5, @babel/plugin-transform-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-spread@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 666592f5f5496e7dc267fb32e5c0d1ca620a5a1b7dcfec4fec517a625d2413213f795d3905aea05f45639285578ef13351cedfc5b699aaa482841866089863f6 + checksum: 2403a5d49171b7714d5e5ecb1f598c61575a4dbe5e33e5a5f08c0ea990b75e693ca1ea983b6a96b2e3e5e7da48c8238333f525e47498c53b577c5d094d964c06 languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.5" +"@babel/plugin-transform-sticky-regex@npm:^7.0.0, @babel/plugin-transform-sticky-regex@npm:^7.22.5, @babel/plugin-transform-sticky-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2495e5f663cb388e3d888b4ba3df419ac436a5012144ac170b622ddfc221f9ea9bdba839fa2bc0185cb776b578030666406452ec7791cbf0e7a3d4c88ae9574c + checksum: 7454b00844dbe924030dd15e2b3615b36e196500c4c47e98dabc6b37a054c5b1038ecd437e910aabf0e43bf56b973cb148d3437d50f6e2332d8309568e3e979b languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7" +"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.0.0-0, @babel/plugin-transform-template-literals@npm:^7.22.5, @babel/plugin-transform-template-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-template-literals@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: aae13350c50973f5802ca7906d022a6a0cc0e3aebac9122d0450bbd51e78252d4c2032ad69385e2759fcbdd3aac5d571bd7e26258907f51f8e1a51b53be626c2 + checksum: 92eb1d6e2d95bd24abbb74fa7640d02b66ff6214e0bb616d7fda298a7821ce15132a4265d576a3502a347a3c9e94b6c69ed265bb0784664592fa076785a3d16a languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.0.0, @babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" +"@babel/plugin-transform-typeof-symbol@npm:^7.22.5, @babel/plugin-transform-typeof-symbol@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e + checksum: 3f9458840d96f61502f0e9dfaae3efe8325fa0b2151e24ea0d41307f28cdd166905419f5a43447ce0f1ae4bfd001f3906b658839a60269c254168164090b4c73 languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5" +"@babel/plugin-transform-typescript@npm:^7.22.5, @babel/plugin-transform-typescript@npm:^7.25.9, @babel/plugin-transform-typescript@npm:^7.5.0": + version: 7.25.9 + resolution: "@babel/plugin-transform-typescript@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-annotate-as-pure": ^7.25.9 + "@babel/helper-create-class-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 + "@babel/plugin-syntax-typescript": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6b5d1404c8c623b0ec9bd436c00d885a17d6a34f3f2597996343ddb9d94f6379705b21582dfd4cec2c47fd34068872e74ab6b9580116c0566b3f9447e2a7fa06 + checksum: 6dd1303f1b9f314e22c6c54568a8b9709a081ce97be757d4004f960e3e73d6b819e6b49cee6cf1fc8455511e41127a8b580fa34602de62d17ab8a0b2d0ccf183 languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7" +"@babel/plugin-transform-unicode-escapes@npm:^7.22.5, @babel/plugin-transform-unicode-escapes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1cb4e70678906e431da0a05ac3f8350025fee290304ad7482d9cfaa1ca67b2e898654de537c9268efbdad5b80d3ebadf42b4a88ea84609bd8a4cce7b11b48afd + checksum: be067e07488d804e3e82d7771f23666539d2ae5af03bf6eb8480406adf3dabd776e60c1fd5c6078dc5714b73cd80bbaca70e71d4f5d154c5c57200581602ca2f languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.3" +"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5, @babel/plugin-transform-unicode-property-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-create-regexp-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: - "@babel/core": ^7.0.0 - checksum: 992f6ae2764b1ee3bea9d948132daed22f042517cd6109a8fd2c52c03e7b930fac5a9e6e28130b0ed5a6f1cbf809c9735985352de0484b4c95fb0f6dd88614a2 + "@babel/core": ^7.0.0-0 + checksum: 201f6f46c1beb399e79aa208b94c5d54412047511795ce1e790edcd189cef73752e6a099fdfc01b3ad12205f139ae344143b62f21f44bbe02338a95e8506a911 languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5" +"@babel/plugin-transform-unicode-regex@npm:^7.0.0, @babel/plugin-transform-unicode-regex@npm:^7.22.5, @babel/plugin-transform-unicode-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-regexp-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: - "@babel/core": ^7.0.0 - checksum: c042070f980b139547f8b0179efbc049ac5930abec7fc26ed7a41d89a048d8ab17d362200e204b6f71c3c20d6991a0e74415e1a412a49adc8131c2a40c04822e + "@babel/core": ^7.0.0-0 + checksum: e8baae867526e179467c6ef5280d70390fa7388f8763a19a27c21302dd59b121032568be080749514b097097ceb9af716bf4b90638f1b3cf689aa837ba20150f languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.7" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5, @babel/plugin-transform-unicode-sets-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.24.7 - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-create-regexp-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 08a2844914f33dacd2ce1ab021ce8c1cc35dc6568521a746d8bf29c21571ee5be78787b454231c4bb3526cbbe280f1893223c82726cec5df2be5dae0a3b51837 + checksum: 4445ef20de687cb4dcc95169742a8d9013d680aa5eee9186d8e25875bbfa7ee5e2de26a91177ccf70b1db518e36886abcd44750d28db5d7a9539f0efa6839f4b languageName: node linkType: hard @@ -7310,387 +4056,94 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.20.0": - version: 7.21.4 - resolution: "@babel/preset-env@npm:7.21.4" - dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.20.7 - "@babel/plugin-proposal-async-generator-functions": ^7.20.7 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.21.0 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.20.7 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.20.7 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.21.0 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.21.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.20.0 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.20.7 - "@babel/plugin-transform-async-to-generator": ^7.20.7 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.21.0 - "@babel/plugin-transform-classes": ^7.21.0 - "@babel/plugin-transform-computed-properties": ^7.20.7 - "@babel/plugin-transform-destructuring": ^7.21.3 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.21.0 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.20.11 - "@babel/plugin-transform-modules-commonjs": ^7.21.2 - "@babel/plugin-transform-modules-systemjs": ^7.20.11 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.20.5 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.21.3 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.20.5 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.20.7 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.21.4 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1e328674c4b39e985fa81e5a8eee9aaab353dea4ff1f28f454c5e27a6498c762e25d42e827f5bfc9d7acf6c9b8bc317b5283aa7c83d9fd03c1a89e5c08f334f9 - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.20.2": - version: 7.22.4 - resolution: "@babel/preset-env@npm:7.22.4" - dependencies: - "@babel/compat-data": ^7.22.3 - "@babel/helper-compilation-targets": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.3 - "@babel/plugin-proposal-private-property-in-object": ^7.21.0 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.20.0 - "@babel/plugin-syntax-import-attributes": ^7.22.3 - "@babel/plugin-syntax-import-meta": ^7.10.4 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.21.5 - "@babel/plugin-transform-async-generator-functions": ^7.22.3 - "@babel/plugin-transform-async-to-generator": ^7.20.7 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.21.0 - "@babel/plugin-transform-class-properties": ^7.22.3 - "@babel/plugin-transform-class-static-block": ^7.22.3 - "@babel/plugin-transform-classes": ^7.21.0 - "@babel/plugin-transform-computed-properties": ^7.21.5 - "@babel/plugin-transform-destructuring": ^7.21.3 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-dynamic-import": ^7.22.1 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-export-namespace-from": ^7.22.3 - "@babel/plugin-transform-for-of": ^7.21.5 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-json-strings": ^7.22.3 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-logical-assignment-operators": ^7.22.3 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.20.11 - "@babel/plugin-transform-modules-commonjs": ^7.21.5 - "@babel/plugin-transform-modules-systemjs": ^7.22.3 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.3 - "@babel/plugin-transform-new-target": ^7.22.3 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.3 - "@babel/plugin-transform-numeric-separator": ^7.22.3 - "@babel/plugin-transform-object-rest-spread": ^7.22.3 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-optional-catch-binding": ^7.22.3 - "@babel/plugin-transform-optional-chaining": ^7.22.3 - "@babel/plugin-transform-parameters": ^7.22.3 - "@babel/plugin-transform-private-methods": ^7.22.3 - "@babel/plugin-transform-private-property-in-object": ^7.22.3 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.21.5 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.20.7 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.21.5 - "@babel/plugin-transform-unicode-property-regex": ^7.22.3 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/plugin-transform-unicode-sets-regex": ^7.22.3 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.22.4 - babel-plugin-polyfill-corejs2: ^0.4.3 - babel-plugin-polyfill-corejs3: ^0.8.1 - babel-plugin-polyfill-regenerator: ^0.5.0 - core-js-compat: ^3.30.2 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 68ae8b712e7548cb0aa593019bf22ed473bd83887c621c1f820ef0af99958d48b687c01b8aee16035cbc70edae1edc703b892e6efed14b95c8435343a2cb2bda - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.22.9": - version: 7.22.15 - resolution: "@babel/preset-env@npm:7.22.15" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.15 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.15 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.15 - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.22.5 - "@babel/plugin-syntax-import-attributes": ^7.22.5 - "@babel/plugin-syntax-import-meta": ^7.10.4 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.22.5 - "@babel/plugin-transform-async-generator-functions": ^7.22.15 - "@babel/plugin-transform-async-to-generator": ^7.22.5 - "@babel/plugin-transform-block-scoped-functions": ^7.22.5 - "@babel/plugin-transform-block-scoping": ^7.22.15 - "@babel/plugin-transform-class-properties": ^7.22.5 - "@babel/plugin-transform-class-static-block": ^7.22.11 - "@babel/plugin-transform-classes": ^7.22.15 - "@babel/plugin-transform-computed-properties": ^7.22.5 - "@babel/plugin-transform-destructuring": ^7.22.15 - "@babel/plugin-transform-dotall-regex": ^7.22.5 - "@babel/plugin-transform-duplicate-keys": ^7.22.5 - "@babel/plugin-transform-dynamic-import": ^7.22.11 - "@babel/plugin-transform-exponentiation-operator": ^7.22.5 - "@babel/plugin-transform-export-namespace-from": ^7.22.11 - "@babel/plugin-transform-for-of": ^7.22.15 - "@babel/plugin-transform-function-name": ^7.22.5 - "@babel/plugin-transform-json-strings": ^7.22.11 - "@babel/plugin-transform-literals": ^7.22.5 - "@babel/plugin-transform-logical-assignment-operators": ^7.22.11 - "@babel/plugin-transform-member-expression-literals": ^7.22.5 - "@babel/plugin-transform-modules-amd": ^7.22.5 - "@babel/plugin-transform-modules-commonjs": ^7.22.15 - "@babel/plugin-transform-modules-systemjs": ^7.22.11 - "@babel/plugin-transform-modules-umd": ^7.22.5 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.5 - "@babel/plugin-transform-new-target": ^7.22.5 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.11 - "@babel/plugin-transform-numeric-separator": ^7.22.11 - "@babel/plugin-transform-object-rest-spread": ^7.22.15 - "@babel/plugin-transform-object-super": ^7.22.5 - "@babel/plugin-transform-optional-catch-binding": ^7.22.11 - "@babel/plugin-transform-optional-chaining": ^7.22.15 - "@babel/plugin-transform-parameters": ^7.22.15 - "@babel/plugin-transform-private-methods": ^7.22.5 - "@babel/plugin-transform-private-property-in-object": ^7.22.11 - "@babel/plugin-transform-property-literals": ^7.22.5 - "@babel/plugin-transform-regenerator": ^7.22.10 - "@babel/plugin-transform-reserved-words": ^7.22.5 - "@babel/plugin-transform-shorthand-properties": ^7.22.5 - "@babel/plugin-transform-spread": ^7.22.5 - "@babel/plugin-transform-sticky-regex": ^7.22.5 - "@babel/plugin-transform-template-literals": ^7.22.5 - "@babel/plugin-transform-typeof-symbol": ^7.22.5 - "@babel/plugin-transform-unicode-escapes": ^7.22.10 - "@babel/plugin-transform-unicode-property-regex": ^7.22.5 - "@babel/plugin-transform-unicode-regex": ^7.22.5 - "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 - "@babel/preset-modules": 0.1.6-no-external-plugins - "@babel/types": ^7.22.15 - babel-plugin-polyfill-corejs2: ^0.4.5 - babel-plugin-polyfill-corejs3: ^0.8.3 - babel-plugin-polyfill-regenerator: ^0.5.2 - core-js-compat: ^3.31.0 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c3cf0223cab006cbf0c563a49a5076caa0b62e3b61b4f10ba857347fcd4f85dbb662a78e6f289e4f29f72c36974696737ae86c23da114617f5b00ab2c1c66126 - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.23.2": - version: 7.25.3 - resolution: "@babel/preset-env@npm:7.25.3" +"@babel/preset-env@npm:^7.20.0, @babel/preset-env@npm:^7.20.2, @babel/preset-env@npm:^7.22.9, @babel/preset-env@npm:^7.23.2": + version: 7.25.9 + resolution: "@babel/preset-env@npm:7.25.9" dependencies: - "@babel/compat-data": ^7.25.2 - "@babel/helper-compilation-targets": ^7.25.2 - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/helper-validator-option": ^7.24.8 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.25.3 - "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.25.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.25.0 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.24.7 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.0 + "@babel/compat-data": ^7.25.9 + "@babel/helper-compilation-targets": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-validator-option": ^7.25.9 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.25.9 + "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.25.9 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.25.9 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.25.9 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.9 "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.24.7 - "@babel/plugin-syntax-import-attributes": ^7.24.7 - "@babel/plugin-syntax-import-meta": ^7.10.4 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-syntax-import-assertions": ^7.25.9 + "@babel/plugin-syntax-import-attributes": ^7.25.9 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.24.7 - "@babel/plugin-transform-async-generator-functions": ^7.25.0 - "@babel/plugin-transform-async-to-generator": ^7.24.7 - "@babel/plugin-transform-block-scoped-functions": ^7.24.7 - "@babel/plugin-transform-block-scoping": ^7.25.0 - "@babel/plugin-transform-class-properties": ^7.24.7 - "@babel/plugin-transform-class-static-block": ^7.24.7 - "@babel/plugin-transform-classes": ^7.25.0 - "@babel/plugin-transform-computed-properties": ^7.24.7 - "@babel/plugin-transform-destructuring": ^7.24.8 - "@babel/plugin-transform-dotall-regex": ^7.24.7 - "@babel/plugin-transform-duplicate-keys": ^7.24.7 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.25.0 - "@babel/plugin-transform-dynamic-import": ^7.24.7 - "@babel/plugin-transform-exponentiation-operator": ^7.24.7 - "@babel/plugin-transform-export-namespace-from": ^7.24.7 - "@babel/plugin-transform-for-of": ^7.24.7 - "@babel/plugin-transform-function-name": ^7.25.1 - "@babel/plugin-transform-json-strings": ^7.24.7 - "@babel/plugin-transform-literals": ^7.25.2 - "@babel/plugin-transform-logical-assignment-operators": ^7.24.7 - "@babel/plugin-transform-member-expression-literals": ^7.24.7 - "@babel/plugin-transform-modules-amd": ^7.24.7 - "@babel/plugin-transform-modules-commonjs": ^7.24.8 - "@babel/plugin-transform-modules-systemjs": ^7.25.0 - "@babel/plugin-transform-modules-umd": ^7.24.7 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7 - "@babel/plugin-transform-new-target": ^7.24.7 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 - "@babel/plugin-transform-numeric-separator": ^7.24.7 - "@babel/plugin-transform-object-rest-spread": ^7.24.7 - "@babel/plugin-transform-object-super": ^7.24.7 - "@babel/plugin-transform-optional-catch-binding": ^7.24.7 - "@babel/plugin-transform-optional-chaining": ^7.24.8 - "@babel/plugin-transform-parameters": ^7.24.7 - "@babel/plugin-transform-private-methods": ^7.24.7 - "@babel/plugin-transform-private-property-in-object": ^7.24.7 - "@babel/plugin-transform-property-literals": ^7.24.7 - "@babel/plugin-transform-regenerator": ^7.24.7 - "@babel/plugin-transform-reserved-words": ^7.24.7 - "@babel/plugin-transform-shorthand-properties": ^7.24.7 - "@babel/plugin-transform-spread": ^7.24.7 - "@babel/plugin-transform-sticky-regex": ^7.24.7 - "@babel/plugin-transform-template-literals": ^7.24.7 - "@babel/plugin-transform-typeof-symbol": ^7.24.8 - "@babel/plugin-transform-unicode-escapes": ^7.24.7 - "@babel/plugin-transform-unicode-property-regex": ^7.24.7 - "@babel/plugin-transform-unicode-regex": ^7.24.7 - "@babel/plugin-transform-unicode-sets-regex": ^7.24.7 + "@babel/plugin-transform-arrow-functions": ^7.25.9 + "@babel/plugin-transform-async-generator-functions": ^7.25.9 + "@babel/plugin-transform-async-to-generator": ^7.25.9 + "@babel/plugin-transform-block-scoped-functions": ^7.25.9 + "@babel/plugin-transform-block-scoping": ^7.25.9 + "@babel/plugin-transform-class-properties": ^7.25.9 + "@babel/plugin-transform-class-static-block": ^7.25.9 + "@babel/plugin-transform-classes": ^7.25.9 + "@babel/plugin-transform-computed-properties": ^7.25.9 + "@babel/plugin-transform-destructuring": ^7.25.9 + "@babel/plugin-transform-dotall-regex": ^7.25.9 + "@babel/plugin-transform-duplicate-keys": ^7.25.9 + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.25.9 + "@babel/plugin-transform-dynamic-import": ^7.25.9 + "@babel/plugin-transform-exponentiation-operator": ^7.25.9 + "@babel/plugin-transform-export-namespace-from": ^7.25.9 + "@babel/plugin-transform-for-of": ^7.25.9 + "@babel/plugin-transform-function-name": ^7.25.9 + "@babel/plugin-transform-json-strings": ^7.25.9 + "@babel/plugin-transform-literals": ^7.25.9 + "@babel/plugin-transform-logical-assignment-operators": ^7.25.9 + "@babel/plugin-transform-member-expression-literals": ^7.25.9 + "@babel/plugin-transform-modules-amd": ^7.25.9 + "@babel/plugin-transform-modules-commonjs": ^7.25.9 + "@babel/plugin-transform-modules-systemjs": ^7.25.9 + "@babel/plugin-transform-modules-umd": ^7.25.9 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.25.9 + "@babel/plugin-transform-new-target": ^7.25.9 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.25.9 + "@babel/plugin-transform-numeric-separator": ^7.25.9 + "@babel/plugin-transform-object-rest-spread": ^7.25.9 + "@babel/plugin-transform-object-super": ^7.25.9 + "@babel/plugin-transform-optional-catch-binding": ^7.25.9 + "@babel/plugin-transform-optional-chaining": ^7.25.9 + "@babel/plugin-transform-parameters": ^7.25.9 + "@babel/plugin-transform-private-methods": ^7.25.9 + "@babel/plugin-transform-private-property-in-object": ^7.25.9 + "@babel/plugin-transform-property-literals": ^7.25.9 + "@babel/plugin-transform-regenerator": ^7.25.9 + "@babel/plugin-transform-reserved-words": ^7.25.9 + "@babel/plugin-transform-shorthand-properties": ^7.25.9 + "@babel/plugin-transform-spread": ^7.25.9 + "@babel/plugin-transform-sticky-regex": ^7.25.9 + "@babel/plugin-transform-template-literals": ^7.25.9 + "@babel/plugin-transform-typeof-symbol": ^7.25.9 + "@babel/plugin-transform-unicode-escapes": ^7.25.9 + "@babel/plugin-transform-unicode-property-regex": ^7.25.9 + "@babel/plugin-transform-unicode-regex": ^7.25.9 + "@babel/plugin-transform-unicode-sets-regex": ^7.25.9 "@babel/preset-modules": 0.1.6-no-external-plugins babel-plugin-polyfill-corejs2: ^0.4.10 - babel-plugin-polyfill-corejs3: ^0.10.4 + babel-plugin-polyfill-corejs3: ^0.10.6 babel-plugin-polyfill-regenerator: ^0.6.1 - core-js-compat: ^3.37.1 + core-js-compat: ^3.38.1 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9735a44e557f7ef4ade87f59c0d69e4af3383432a23ae7a3cba33e3741bd7812f2d6403a0d94ebfda5f4bd9fdc6250a52c4a156407029f590fde511a792e64e2 - languageName: node - linkType: hard - -"@babel/preset-flow@npm:^7.13.13": - version: 7.21.4 - resolution: "@babel/preset-flow@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-transform-flow-strip-types": ^7.21.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a3a1ac91d0bc0ed033ae46556babe3dc571ea8788c531db550d6904bd303cf50ebb84fa417c1f059c3b69d62e0792d8eceda83d820a12c2e6b8008e5518ce7b8 + checksum: b01081d36e36953e94eb5db8eee18dc4b93e4a3757f7c8e00333aba5b5798d00a76e0e3679382cb57aec0516dbe05f5c1ec2c67bd5482216864f6decd6359ae2 languageName: node linkType: hard -"@babel/preset-flow@npm:^7.22.15": - version: 7.24.7 - resolution: "@babel/preset-flow@npm:7.24.7" +"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.22.15": + version: 7.25.9 + resolution: "@babel/preset-flow@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-validator-option": ^7.24.7 - "@babel/plugin-transform-flow-strip-types": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-validator-option": ^7.25.9 + "@babel/plugin-transform-flow-strip-types": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4caca02a6e0a477eb22994d686a1fbf65b5ab0240ae77530696434dba7efff4c5dcbf9186a774168dd4c492423141a22af3f2874c356aa22429f3c83eaf34419 + checksum: b1591ea63a7ace7e34bcefa6deba9e2814d7f082e3c074e2648efb68a1a49016ccefbea024156ba28bd3042a4e768e3eb8b5ecfe433978144fdaaadd36203ba2 languageName: node linkType: hard @@ -7708,8 +4161,8 @@ __metadata: linkType: hard "@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" + version: 0.1.6 + resolution: "@babel/preset-modules@npm:0.1.6" dependencies: "@babel/helper-plugin-utils": ^7.0.0 "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 @@ -7717,8 +4170,8 @@ __metadata: "@babel/types": ^7.4.4 esutils: ^2.0.2 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 9700992d2b9526e703ab49eb8c4cd0b26bec93594d57c6b808967619df1a387565e0e58829b65b5bd6d41049071ea0152c9195b39599515fddb3e52b09a55ff0 languageName: node linkType: hard @@ -7738,35 +4191,19 @@ __metadata: languageName: node linkType: hard -"@babel/preset-react@npm:^7.18.6": - version: 7.22.3 - resolution: "@babel/preset-react@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-transform-react-display-name": ^7.18.6 - "@babel/plugin-transform-react-jsx": ^7.22.3 - "@babel/plugin-transform-react-jsx-development": ^7.18.6 - "@babel/plugin-transform-react-pure-annotations": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0b6210e8ea7485d71dfa7745e6b03e6252e3fd363cc84765c81709b51ad89bcf0a5887a82651dedfc007b7e47ae918496ee963f42c52d9ce3ddbcc5815b96bb7 - languageName: node - linkType: hard - -"@babel/preset-react@npm:^7.22.15": - version: 7.24.7 - resolution: "@babel/preset-react@npm:7.24.7" +"@babel/preset-react@npm:^7.18.6, @babel/preset-react@npm:^7.22.15": + version: 7.25.9 + resolution: "@babel/preset-react@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-validator-option": ^7.24.7 - "@babel/plugin-transform-react-display-name": ^7.24.7 - "@babel/plugin-transform-react-jsx": ^7.24.7 - "@babel/plugin-transform-react-jsx-development": ^7.24.7 - "@babel/plugin-transform-react-pure-annotations": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-validator-option": ^7.25.9 + "@babel/plugin-transform-react-display-name": ^7.25.9 + "@babel/plugin-transform-react-jsx": ^7.25.9 + "@babel/plugin-transform-react-jsx-development": ^7.25.9 + "@babel/plugin-transform-react-pure-annotations": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 76d0365b6bca808be65c4ccb3f3384c0792084add15eb537f16b3e44184216b82fa37f945339b732ceee6f06e09ba1f39f75c45e69b9811ddcc479f05555ea9c + checksum: b5650c07a744ab4024c04fae002c9043235b4ad8687de8bf759135b9c6186553f4f53fde0a4583ce4c019560b79c176f39c745cdf77645af07071d26d8ba84ce languageName: node linkType: hard @@ -7785,405 +4222,85 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.13.0": - version: 7.21.4 - resolution: "@babel/preset-typescript@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-syntax-jsx": ^7.21.4 - "@babel/plugin-transform-modules-commonjs": ^7.21.2 - "@babel/plugin-transform-typescript": ^7.21.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 83b2f2bf7be3a970acd212177525f58bbb1f2e042b675a47d021a675ae27cf00b6b6babfaf3ae5c980592c9ed1b0712e5197796b691905d25c99f9006478ea06 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.16.7, @babel/preset-typescript@npm:^7.23.0": - version: 7.24.7 - resolution: "@babel/preset-typescript@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-validator-option": ^7.24.7 - "@babel/plugin-syntax-jsx": ^7.24.7 - "@babel/plugin-transform-modules-commonjs": ^7.24.7 - "@babel/plugin-transform-typescript": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 12929b24757f3bd6548103475f86478eda4c872bc7cefd920b29591eee8f4a4f350561d888e133d632d0c9402b8615fdcec9138e5127a6567dcb22f804ff207f - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.21.0": - version: 7.21.5 - resolution: "@babel/preset-typescript@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-syntax-jsx": ^7.21.4 - "@babel/plugin-transform-modules-commonjs": ^7.21.5 - "@babel/plugin-transform-typescript": ^7.21.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e7b35c435139eec1d6bd9f57e8f3eb79bfc2da2c57a34ad9e9ea848ba4ecd72791cf4102df456604ab07c7f4518525b0764754b6dd5898036608b351e0792448 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/preset-typescript@npm:7.22.15" +"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.16.7, @babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.22.5, @babel/preset-typescript@npm:^7.23.0": + version: 7.25.9 + resolution: "@babel/preset-typescript@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.15 - "@babel/plugin-syntax-jsx": ^7.22.5 - "@babel/plugin-transform-modules-commonjs": ^7.22.15 - "@babel/plugin-transform-typescript": ^7.22.15 + "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-validator-option": ^7.25.9 + "@babel/plugin-syntax-jsx": ^7.25.9 + "@babel/plugin-transform-modules-commonjs": ^7.25.9 + "@babel/plugin-transform-typescript": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 02ac4d5c812a52357c8f517f81584725f06f385d54ccfda89dd082e0ed89a94bd9f4d9b05fa1cbdcf426e3489c1921f04c93c5acc5deea83407a64c22ad2feb4 + checksum: bb951cfc91e6d6704a0d5be3c1150f53bb70aadb91b0b294642c5e73b5dd85f88aa3fa0e71983842655e3b7e08b952a5031620c6a2577b373b15eae919f2ca0b languageName: node linkType: hard "@babel/register@npm:^7.13.16": - version: 7.21.0 - resolution: "@babel/register@npm:7.21.0" + version: 7.25.9 + resolution: "@babel/register@npm:7.25.9" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 make-dir: ^2.1.0 - pirates: ^4.0.5 + pirates: ^4.0.6 source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9745cc7520b4c5e64cc54f4851c3b78af82e1f8cffc9041f5cc0b9aef62d86a9a8617327fc975b5e0e39cb5cc0aba7ae02429884390ee93e0de29152fa849b4f - languageName: node - linkType: hard - -"@babel/regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.0, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.3.4, @babel/runtime@npm:^7.4.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2, @babel/runtime@npm:^7.9.6": - version: 7.18.6 - resolution: "@babel/runtime@npm:7.18.6" - dependencies: - regenerator-runtime: ^0.13.4 - checksum: 8b707b64ae0524db617d0c49933b258b96376a38307dc0be8fb42db5697608bcc1eba459acce541e376cff5ed5c5287d24db5780bd776b7c75ba2c2e26ff8a2c - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.18.3": - version: 7.22.6 - resolution: "@babel/runtime@npm:7.22.6" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: e585338287c4514a713babf4fdb8fc2a67adcebab3e7723a739fc62c79cfda875b314c90fd25f827afb150d781af97bc16c85bfdbfa2889f06053879a1ddb597 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.20.0": - version: 7.21.0 - resolution: "@babel/runtime@npm:7.21.0" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7": - version: 7.22.3 - resolution: "@babel/runtime@npm:7.22.3" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 8fc50785ca4cba749fed90bffca7e6fd52d4709755654e95b8d2a945fc034b56fb8c2e8a0183fea7c4abb86bf5fa77678c0ea35163b6920649833d180c34c234 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.21.0": - version: 7.24.5 - resolution: "@babel/runtime@npm:7.24.5" - dependencies: - regenerator-runtime: ^0.14.0 - checksum: 755383192f3ac32ba4c62bd4f1ae92aed5b82d2c6665f39eb28fa94546777cf5c63493ea92dd03f1c2e621b17e860f190c056684b7f234270fdc91e29beda063 + checksum: 1df38d9ed6fd60feb0a82e1926508bca8f60915ee8a12ab9f6c9714a8f13bafc7865409c7fa92604a5b79ba84f7990181b312bc469bfdfa30dd79655b3260b85 languageName: node linkType: hard -"@babel/runtime@npm:^7.22.6": - version: 7.22.15 - resolution: "@babel/runtime@npm:7.22.15" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.0, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.3.4, @babel/runtime@npm:^7.4.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2, @babel/runtime@npm:^7.9.6": + version: 7.25.9 + resolution: "@babel/runtime@npm:7.25.9" dependencies: regenerator-runtime: ^0.14.0 - checksum: 793296df1e41599a935a3d77ec01eb6088410d3fd4dbe4e92f06c6b7bb2f8355024e6d78621a3a35f44e0e23b0b59107f23d585384df4f3123256a1e1492040e - languageName: node - linkType: hard - -"@babel/template@npm:^7.0.0, @babel/template@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e - languageName: node - linkType: hard - -"@babel/template@npm:^7.12.13, @babel/template@npm:^7.18.10, @babel/template@npm:^7.3.3": - version: 7.18.10 - resolution: "@babel/template@npm:7.18.10" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.18.10 - "@babel/types": ^7.18.10 - checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 - languageName: node - linkType: hard - -"@babel/template@npm:^7.21.9": - version: 7.21.9 - resolution: "@babel/template@npm:7.21.9" - dependencies: - "@babel/code-frame": ^7.21.4 - "@babel/parser": ^7.21.9 - "@babel/types": ^7.21.5 - checksum: 6ec2c60d4d53b2a9230ab82c399ba6525df87e9a4e01e4b111e071cbad283b1362e7c99a1bc50027073f44f2de36a495a89c27112c4e7efe7ef9c8d9c84de2ec - languageName: node - linkType: hard - -"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/template@npm:7.22.15" - dependencies: - "@babel/code-frame": ^7.22.13 - "@babel/parser": ^7.22.15 - "@babel/types": ^7.22.15 - checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd - languageName: node - linkType: hard - -"@babel/template@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/template@npm:7.24.7" - dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/parser": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: ea90792fae708ddf1632e54c25fe1a86643d8c0132311f81265d2bdbdd42f9f4fac65457056c1b6ca87f7aa0d6a795b549566774bba064bdcea2034ab3960ee9 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" - dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/parser": ^7.25.0 - "@babel/types": ^7.25.0 - checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b - languageName: node - linkType: hard - -"@babel/traverse@npm:7, @babel/traverse@npm:^7.20.0, @babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/traverse@npm:7.21.4" - dependencies: - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.4 - "@babel/types": ^7.21.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: f22f067c2d9b6497abf3d4e53ea71f3aa82a21f2ed434dd69b8c5767f11f2a4c24c8d2f517d2312c9e5248e5c69395fdca1c95a2b3286122c75f5783ddb6f53c - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.3, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.4.5": - version: 7.19.4 - resolution: "@babel/traverse@npm:7.19.4" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.4 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.4 - "@babel/types": ^7.19.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 8ae1ac3dace181620cd0e3078aec99604a48302fb873193a171e37a7cc4f8909ed496f286bf08c6473f9692db36423e2601eb9c771493d19f6a5fd1a56745af5 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.1, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3": - version: 7.25.3 - resolution: "@babel/traverse@npm:7.25.3" - dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/generator": ^7.25.0 - "@babel/parser": ^7.25.3 - "@babel/template": ^7.25.0 - "@babel/types": ^7.25.2 - debug: ^4.3.1 - globals: ^11.1.0 - checksum: 5661308b1357816f1d4e2813a5dd82c6053617acc08c5c95db051b8b6577d07c4446bc861c9a5e8bf294953ac8266ae13d7d9d856b6b889fc0d34c1f51abbd8c - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.22.1": - version: 7.22.4 - resolution: "@babel/traverse@npm:7.22.4" - dependencies: - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.22.3 - "@babel/helper-environment-visitor": ^7.22.1 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.22.4 - "@babel/types": ^7.22.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 9560ae22092d5a7c52849145dd3e5aed2ffb73d61255e70e19e3fbd06bcbafbbdecea28df40a42ee3b60b01e85a42224ec841df93e867547e329091cc2f2bb6f + checksum: ce1c87b166ff728eaee91658a67fb7835314ed157b7a36d49602ffdaaa37fb1fcf2784afd00b55fe1672bec53fb38cba622a056c913611af2a44503097216229 languageName: node linkType: hard -"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17, @babel/traverse@npm:^7.22.8": - version: 7.22.17 - resolution: "@babel/traverse@npm:7.22.17" +"@babel/template@npm:^7.0.0, @babel/template@npm:^7.12.13, @babel/template@npm:^7.22.5, @babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" dependencies: - "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.22.15 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.16 - "@babel/types": ^7.22.17 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 1153ca166a0a9b3fddf67f7f7c8c5b4f88aa2c2c00261ff2fc8424a63bc93250ed3fd08b04bd526ad19e797aeb6f22161120646a570cbfe5ff2a5d2f5d28af01 + "@babel/code-frame": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 103641fea19c7f4e82dc913aa6b6ac157112a96d7c724d513288f538b84bae04fb87b1f1e495ac1736367b1bc30e10f058b30208fb25f66038e1f1eb4e426472 languageName: node linkType: hard -"@babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/traverse@npm:7.23.0" +"@babel/traverse@npm:7, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.20.0, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.4.5": + version: 7.25.9 + resolution: "@babel/traverse@npm:7.25.9" dependencies: - "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.23.0 - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-function-name": ^7.23.0 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.23.0 - "@babel/types": ^7.23.0 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 0b17fae53269e1af2cd3edba00892bc2975ad5df9eea7b84815dab07dfec2928c451066d51bc65b4be61d8499e77db7e547ce69ef2a7b0eca3f96269cb43a0b0 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/traverse@npm:7.24.7" - dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/generator": ^7.24.7 - "@babel/helper-environment-visitor": ^7.24.7 - "@babel/helper-function-name": ^7.24.7 - "@babel/helper-hoist-variables": ^7.24.7 - "@babel/helper-split-export-declaration": ^7.24.7 - "@babel/parser": ^7.24.7 - "@babel/types": ^7.24.7 + "@babel/code-frame": ^7.25.9 + "@babel/generator": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/template": ^7.25.9 + "@babel/types": ^7.25.9 debug: ^4.3.1 globals: ^11.1.0 - checksum: 7cd366afe9e7ee77e493779fdf24f67bf5595247289364f4689e29688572505eaeb886d7a8f20ebb9c29fc2de7d0895e4ff9e203e78e39ac67239724d45aa83b - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.16.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.3, @babel/types@npm:^7.19.4, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.19.4 - resolution: "@babel/types@npm:7.19.4" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 4032f6407093f80dd4f4764be676f7527d2a5c0381586967cd79683cf8af01cdc16745a381b9cef045f702f0c9b0dffd880d84ee55dad59ba01bd23d5d52a8e0 - languageName: node - linkType: hard - -"@babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/types@npm:7.21.4" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 587bc55a91ce003b0f8aa10d70070f8006560d7dc0360dc0406d306a2cb2a10154e2f9080b9c37abec76907a90b330a536406cb75e6bdc905484f37b75c73219 - languageName: node - linkType: hard - -"@babel/types@npm:^7.21.3, @babel/types@npm:^7.21.5, @babel/types@npm:^7.22.0, @babel/types@npm:^7.22.3, @babel/types@npm:^7.22.4": - version: 7.22.4 - resolution: "@babel/types@npm:7.22.4" - dependencies: - "@babel/helper-string-parser": ^7.21.5 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: ffe36bb4f4a99ad13c426a98c3b508d70736036cae4e471d9c862e3a579847ed4f480686af0fce2633f6f7c0f0d3bf02da73da36e7edd3fde0b2061951dcba9a - languageName: node - linkType: hard - -"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5": - version: 7.22.17 - resolution: "@babel/types@npm:7.22.17" - dependencies: - "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.15 - to-fast-properties: ^2.0.0 - checksum: 7382220f6eb2548f2c867a98916c3aa8a6063498d5372e5d21d8d184ba354033defb72aeba5858c1b2b42177058b896a34a7dcbae5eccd47fb0104721efa909d - languageName: node - linkType: hard - -"@babel/types@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/types@npm:7.23.0" - dependencies: - "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.20 - to-fast-properties: ^2.0.0 - checksum: 215fe04bd7feef79eeb4d33374b39909ce9cad1611c4135a4f7fdf41fe3280594105af6d7094354751514625ea92d0875aba355f53e86a92600f290e77b0e604 + checksum: 901d325662ff1dd9bc51de00862e01055fa6bc374f5297d7e3731f2f0e268bbb1d2141f53fa82860aa308ee44afdcf186a948f16c83153927925804b95a9594d languageName: node linkType: hard -"@babel/types@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/types@npm:7.24.7" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4, @babel/types@npm:^7.4.4": + version: 7.25.9 + resolution: "@babel/types@npm:7.25.9" dependencies: - "@babel/helper-string-parser": ^7.24.7 - "@babel/helper-validator-identifier": ^7.24.7 - to-fast-properties: ^2.0.0 - checksum: 3e4437fced97e02982972ce5bebd318c47d42c9be2152c0fd28c6f786cc74086cc0a8fb83b602b846e41df37f22c36254338eada1a47ef9d8a1ec92332ca3ea8 + "@babel/helper-string-parser": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + checksum: c6e2f5bdd85351c22a395bd2359a7acec595b4b544750795836d4f69aec76c07e1c78668eab04490c6bd331776e0ece42865de2ec2c5bc7a9ddee81afd7fcac6 languageName: node linkType: hard -"@babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/types@npm:7.25.2" - dependencies: - "@babel/helper-string-parser": ^7.24.8 - "@babel/helper-validator-identifier": ^7.24.7 - to-fast-properties: ^2.0.0 - checksum: f73f66ba903c6f7e38f519a33d53a67d49c07e208e59ea65250362691dc546c6da7ab90ec66ee79651ef697329872f6f97eb19a6dfcacc026fd05e76a563c5d2 +"@balena/dockerignore@npm:^1.0.2": + version: 1.0.2 + resolution: "@balena/dockerignore@npm:1.0.2" + checksum: 0d39f8fbcfd1a983a44bced54508471ab81aaaa40e2c62b46a9f97eac9d6b265790799f16919216db486331dedaacdde6ecbd6b7abe285d39bc50de111991699 languageName: node linkType: hard @@ -8202,31 +4319,31 @@ __metadata: linkType: hard "@codemirror/autocomplete@npm:^6.0.0": - version: 6.4.2 - resolution: "@codemirror/autocomplete@npm:6.4.2" + version: 6.18.1 + resolution: "@codemirror/autocomplete@npm:6.18.1" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.6.0 + "@codemirror/view": ^6.17.0 "@lezer/common": ^1.0.0 peerDependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - checksum: c6cc4edb1c412153e6f6f27926674d7f1d386d1f30d6d4f60c5b52bfa0105870b0c70449b69891937bcf082340d8b0fa6d1f9f28f5eb60adc2974ed4c73aadc1 + checksum: d488b3f76c330cc3776ef3c766347c178aa0773afd1791d2d8a7b72c4cd8a75c413bc47daba7ec29eedab954966b11ebb7c0085d12f814999ec192f060c884a9 languageName: node linkType: hard "@codemirror/commands@npm:^6.0.0, @codemirror/commands@npm:^6.1.0": - version: 6.2.1 - resolution: "@codemirror/commands@npm:6.2.1" + version: 6.7.1 + resolution: "@codemirror/commands@npm:6.7.1" dependencies: "@codemirror/language": ^6.0.0 - "@codemirror/state": ^6.2.0 - "@codemirror/view": ^6.0.0 - "@lezer/common": ^1.0.0 - checksum: 216308c57745e86bdd9cbbecc8fa6d8302c340674c3f1837894f1eeb12a91d47adeb24a1d1d76faf05f7630f6dd80b9dad974ff23f017370ebdc5329b2204262 + "@codemirror/state": ^6.4.0 + "@codemirror/view": ^6.27.0 + "@lezer/common": ^1.1.0 + checksum: 507ae0cc7f3a7bd869bca0de7e942ecb2bc0bd95a42484e5b06835ebf8caf7626c39d2bea26cefab99d07ab83ba5934afd2d07ce00dac4190aca014523f3c97e languageName: node linkType: hard @@ -8241,68 +4358,68 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0": - version: 6.6.0 - resolution: "@codemirror/language@npm:6.6.0" + version: 6.10.3 + resolution: "@codemirror/language@npm:6.10.3" dependencies: "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.0.0 - "@lezer/common": ^1.0.0 + "@codemirror/view": ^6.23.0 + "@lezer/common": ^1.1.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: bb9411620e2f231653a3f0c4429e0d19a3843bff5dbc117df4649d7bf783ec4ad809c0add8bc0887a4ec3f48b4f8f941621168e47d76101d5383f0d670af1722 + checksum: 53fb72299500f63706f78c888d6b5fd81043ea11ea2fa4c72c13c6d4794bb6f4ec29450208c56b4f40e839984b3dc73505262803fa61416baf588da389a7c577 languageName: node linkType: hard "@codemirror/lint@npm:^6.0.0": - version: 6.1.1 - resolution: "@codemirror/lint@npm:6.1.1" + version: 6.8.2 + resolution: "@codemirror/lint@npm:6.8.2" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: f58374c8c759b4bf8a9074a170d639d55e6cda105c422fb09251aac4b97dacdc7ca9e43a2bc57d45586c5326e5f332f28fef4a2bb47ff16c4a81ea6e07308e9d + checksum: 714fe911c2d600350ea8ca0f65ceb2de25ace511e71bf174a550ba0aefc9884ec4e099f0f500b55bfd0fccbd7fe3a342a0048ff5a49c8c20020ea16cc8bff3c3 languageName: node linkType: hard "@codemirror/search@npm:^6.0.0": - version: 6.2.3 - resolution: "@codemirror/search@npm:6.2.3" + version: 6.5.6 + resolution: "@codemirror/search@npm:6.5.6" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 7ab0ffab7992f5c6260313e06ec8935f55807b95ca86f0327154ea1ae0ab984cd22c2fc1a812bd6cace1db131785353689fbfd080d2e12c660e3db0295dec355 + checksum: 19dc88d09fc750563347001e83c6194bbb2a25c874bd919d2d81809e1f98d6330222ddbd284aa9758a09eeb41fd153ec7c2cf810b2ee51452c25963d7f5833d5 languageName: node linkType: hard -"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.1, @codemirror/state@npm:^6.1.4, @codemirror/state@npm:^6.2.0": - version: 6.2.0 - resolution: "@codemirror/state@npm:6.2.0" - checksum: fdc99c773dc09c700dd02bf918f06132aa8d3069c262cc4eb6ca5c810ce24ae2d7e90719ae7630a8158fd263018de6d40bd78f312e6bfba754e737b64e6c6b3d +"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.1, @codemirror/state@npm:^6.4.0": + version: 6.4.1 + resolution: "@codemirror/state@npm:6.4.1" + checksum: b81b55574091349eed4d32fc0eadb0c9688f1f7c98b681318f59138ee0f527cb4c4a97831b70547c0640f02f3127647838ae6730782de4a3dd2cc58836125d01 languageName: node linkType: hard "@codemirror/theme-one-dark@npm:^6.0.0": - version: 6.1.1 - resolution: "@codemirror/theme-one-dark@npm:6.1.1" + version: 6.1.2 + resolution: "@codemirror/theme-one-dark@npm:6.1.2" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/highlight": ^1.0.0 - checksum: e314033c77732deb6eddb44d5e43d134842dd4e174f0525161f90edb0fd4fa93e482710b7371e3ed573645b8e0c402d518d5cdae41867546cd7e2ccee8da455e + checksum: 29bc09f79534115f62658caf3d0db527fe347d058b69a8c7f580ae636827377aadd0606fd0d83dbab8d6f3b0a5df53d3253c619341b5fb93d2c8291a8efb9556 languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.6.0": - version: 6.9.1 - resolution: "@codemirror/view@npm:6.9.1" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0": + version: 6.34.1 + resolution: "@codemirror/view@npm:6.34.1" dependencies: - "@codemirror/state": ^6.1.4 - style-mod: ^4.0.0 + "@codemirror/state": ^6.4.0 + style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 485d54d338a27ebde6bec489e3008db80a2a801fe27db0d4a3c70181c8739f806f035855ba13d5b311d186ad2b130db07196e8b465ec102b0142df0689bff2f8 + checksum: 5c7bf199f0b45a3cc192f08c2ac89e5ab972f313cb4f2c979edf6e05b27bccd60c6cb42d5dacb6813ef3a928d75476eb0a00ffdeffd7431c8e9f44bab4f6e12e languageName: node linkType: hard @@ -8329,21 +4446,31 @@ __metadata: languageName: node linkType: hard -"@contentful/app-sdk@npm:^4.21.1": - version: 4.25.0 - resolution: "@contentful/app-sdk@npm:4.25.0" +"@contentful/app-sdk@npm:^4.29.0": + version: 4.29.1 + resolution: "@contentful/app-sdk@npm:4.29.1" dependencies: contentful-management: ">=7.30.0" - checksum: 6a89ea5113c612868d35168ed7ff3ad715aae554acc8267f82b3f4f42a77beb0447bacf178b8b76ac172f42215d7e804f0dcc72adc03684f50f6e871d34a12ab + checksum: 4224e0add310637845d59bc2e37f6217c47626ffb48ee64632404feea8fbf16b49fac853349d438bae1b37a170a3c746cf2747136ef73d9bf92141c6b5f67e72 + languageName: node + linkType: hard + +"@contentful/content-source-maps@npm:^0.11.0": + version: 0.11.6 + resolution: "@contentful/content-source-maps@npm:0.11.6" + dependencies: + "@vercel/stega": ^0.1.2 + json-pointer: ^0.6.2 + checksum: 5837626885adff1f6aba95b9ac36dd1da22d30da87be862db853709ef8779cb919b24b9dd77be5db9a62c3febd1a6f1ea302bca802c854297852f44914b2da97 languageName: node linkType: hard "@contentful/contentful-slatejs-adapter@npm:^15.16.5": - version: 15.16.13 - resolution: "@contentful/contentful-slatejs-adapter@npm:15.16.13" + version: 15.18.11 + resolution: "@contentful/contentful-slatejs-adapter@npm:15.18.11" dependencies: - "@contentful/rich-text-types": ^16.3.5 - checksum: 970b4e8e54272f6fff1ec8bbcca0adbedeb43469a662f036a8f8df172fdb7c867accf40c2aa6f84d1befe4806f154740776c9ee4a08f1c79af02e7c72908728d + "@contentful/rich-text-types": ^16.8.5 + checksum: 4bf3da64d4fbe5a7f5129e40fa8059094e9811d16ce7ffb43d89dba6877700274f7364619d7f92d1ba0dfb33a92346640e91d3a67c92213402366706624887e9 languageName: node linkType: hard @@ -8380,340 +4507,191 @@ __metadata: languageName: node linkType: hard -"@contentful/f36-accordion@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-accordion@npm:4.26.0" +"@contentful/f36-accordion@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-accordion@npm:4.74.1" dependencies: - "@contentful/f36-collapse": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 + "@contentful/f36-collapse": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: db585ebd2a498d45c240de0c04ad24e059c7afe93805620f73baca2d302e2b7c644ce167d5ed3ded9c2c9660d06eabc1e439fbebfe578da614a4358b0143beb1 + checksum: cb60a31518aaf7e48bfefb6e68d7f3fc3277e293617865145ac8f81cc532a4cfffeecfe4482b7152a25212bff77fd78482a5451edf110c39bdb8b717f0fb8d6c languageName: node linkType: hard -"@contentful/f36-accordion@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-accordion@npm:4.64.0" +"@contentful/f36-asset@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-asset@npm:4.74.1" dependencies: - "@contentful/f36-collapse": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: d2f61481f56af7cabe9fab16b65daec94360cc3f573765c20c5cbec8c968287879c7394dedcb69649b00b14d91d830011c95ff5bd2c12ad7752a03d4c85be048 - languageName: node - linkType: hard - -"@contentful/f36-asset@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-asset@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icon": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: eb29a668c203b0e63c91dc763cfe6612920d4c9ef06efae2bbab4ab23604dfdb4df3145bd1d9a40e47b42d2a0a3da4928650b5a961460a4fd3a8ae9ba05c095c - languageName: node - linkType: hard - -"@contentful/f36-asset@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-asset@npm:4.64.0" - dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icon": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 98771f113f550e284e4cd5de5e21d282dbb4c43822314cdeb74b6fc66023b7484163662535f7fd176cccb14b01e2081c6903123bbc02934ee78aca1ff10f97e9 - languageName: node - linkType: hard - -"@contentful/f36-autocomplete@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-autocomplete@npm:4.26.0" - dependencies: - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-forms": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-popover": ^4.26.0 - "@contentful/f36-skeleton": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 - "@contentful/f36-utils": ^4.23.2 - downshift: ^6.1.12 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icon": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 54bcb905963407ea0cc3143c72c08fd67f2d307debe267f22343b0678010fbd97e91620ad919eb5f39dd25c0d9d11ae3d1143864ceab21d1ca18048eae227782 + checksum: 3e1ffeae6a1d2a8db5d3a007849eec9ac52af4f2a9abe3d225aa0986334c8f42bae93a8cdeb08558b17806b90701327ff2a7393e61289002255b9062b5a8c260 languageName: node linkType: hard -"@contentful/f36-autocomplete@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-autocomplete@npm:4.64.0" +"@contentful/f36-autocomplete@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-autocomplete@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-forms": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-popover": ^4.64.0 - "@contentful/f36-skeleton": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-forms": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-popover": ^4.74.1 + "@contentful/f36-skeleton": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 "@contentful/f36-utils": ^4.24.3 downshift: ^6.1.12 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 0f916ab3006561a874c9e5f6750cfa778fc8b14528b3a5893029a83914f1722ddccf9b4c46a8e66c1d61ec234c3ac586a1eee1bef4240d4b0f1fc12e56fc1f8a + checksum: 16178ab92c58d0fabf4c2e1609481cf41651429262ac6b923c0c9ae471bb95126d7ff1115c01e86a9a2aced8470c444927c86d37ca641a58bb0faac355f58be7 languageName: node linkType: hard -"@contentful/f36-badge@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-badge@npm:4.26.0" +"@contentful/f36-avatar@npm:4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-avatar@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: f04325ffb167aa2049ac3ed45032afc583596af272e9ada5a035a2e015105816b118dc88b058973c5eabb344c612a0b1f9961d8bb417eb7ba14ea7f17bec5386 - languageName: node - linkType: hard - -"@contentful/f36-badge@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-badge@npm:4.64.0" - dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-image": 4.74.1 + "@contentful/f36-menu": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-tooltip": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: bc005633e56aa5ebfd698b3c9dcee6497d349066ded0f9f3b22bf52b27bf22fd056dd7ea5c96b21ca4818795289e064daad5daae364ebd33228300618cf9001e + checksum: 07612c86d1d28ffaa3872f49f83fa821782ff7871ac8214cabfc08dee3b73243b616270c99c673aa0e3c52cfffaefcc040c21a8bf5676eca74f0bc2eeccfbd82 languageName: node linkType: hard -"@contentful/f36-button@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-button@npm:4.26.0" +"@contentful/f36-badge@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-badge@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-spinner": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 23cfb2c0a6f8cf070660a88ddba5c2e8e6cb6e63b1177de86acda454a1c5188dc12a8fa864c27dcc944f6bd1437715ab7e9be2691422dac7ad9c93a31b08e5f4 + checksum: 3278f7358ce46389e542d901d4c128fda35e724d3364cf5f4ec29bb737e9a71f16216f14fe2560233cba35cf435503b34f5eecbf804a1297a40ffceb63a139e0 languageName: node linkType: hard -"@contentful/f36-button@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-button@npm:4.64.0" +"@contentful/f36-button@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-button@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-spinner": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-spinner": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-tooltip": ^4.74.1 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 6df49b87c875db553a7094b7b50a1275e657c5e4cd935efc6aa6ee5b4c4b7adfcd9232a9b5008af60be384b1647ceeed2b47990ad74038dadff789d2af0786b5 - languageName: node - linkType: hard - -"@contentful/f36-card@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-card@npm:4.26.0" - dependencies: - "@contentful/f36-asset": ^4.26.0 - "@contentful/f36-badge": ^4.26.0 - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-drag-handle": ^4.26.0 - "@contentful/f36-icon": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-menu": ^4.26.0 - "@contentful/f36-skeleton": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-tooltip": ^4.26.0 - "@contentful/f36-typography": ^4.26.0 - emotion: ^10.0.17 - truncate: ^3.0.0 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: bb9c97dae729273973f8e0a8cc97a2b88bb59623beeaa2a92a7b42ca25160a6fc455db76116d1587695180969e7862402ab213cb6b50040fb49c1d81b93fb42d - languageName: node - linkType: hard - -"@contentful/f36-card@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-card@npm:4.64.0" - dependencies: - "@contentful/f36-asset": ^4.64.0 - "@contentful/f36-badge": ^4.64.0 - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-drag-handle": ^4.64.0 - "@contentful/f36-icon": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-menu": ^4.64.0 - "@contentful/f36-skeleton": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-tooltip": ^4.64.0 - "@contentful/f36-typography": ^4.64.0 + checksum: b434723acb52f9f3f7eec0334120b4983d0c3883034fabf2d8ea8551aecd79f38dfed87ccd12fb0f2a5c18dd81ec36e5142d24482fd7f16cbc69af5353dd2ec6 + languageName: node + linkType: hard + +"@contentful/f36-card@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-card@npm:4.74.1" + dependencies: + "@contentful/f36-asset": ^4.74.1 + "@contentful/f36-badge": ^4.74.1 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-drag-handle": ^4.74.1 + "@contentful/f36-icon": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-menu": ^4.74.1 + "@contentful/f36-skeleton": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-tooltip": ^4.74.1 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 truncate: ^3.0.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: da9d20f4f0fbaadb7e165fc15a5d90e080d345559e21770d4b8e51497c3bac5a9aec429498f43bdc6285f1b46132d60492053bfc52e0e399ab9b5ebaa051e86d - languageName: node - linkType: hard - -"@contentful/f36-collapse@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-collapse@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 0a7795d841bb42def1c974056f412f6260f56bec9d5e8a98631494025f0c874110a61607458bf05c0d3cd9660d6a63f6defec68fe7edee7312ed56e36e8cbbfc + checksum: b85ed733a675da57f95596b534f55ae449dd6adbbc5fd585985e1249ad542c4b0788b37d894e3f21091cb3f5c2745a99de232ab8c9f2480c28fe41adb8754484 languageName: node linkType: hard -"@contentful/f36-collapse@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-collapse@npm:4.64.0" +"@contentful/f36-collapse@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-collapse@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 78a92d18470f27a8ff50cf9d201f90bea511abfa4b6ac8ad40de61ecbe6ce8118355fcb7ca6bb4ee97317bf0de4c4db85b8537b1ea8ea70b919e04a0b6907b0f - languageName: node - linkType: hard - -"@contentful/f36-components@npm:^4.0.27": - version: 4.26.0 - resolution: "@contentful/f36-components@npm:4.26.0" - dependencies: - "@contentful/f36-accordion": ^4.26.0 - "@contentful/f36-asset": ^4.26.0 - "@contentful/f36-autocomplete": ^4.26.0 - "@contentful/f36-badge": ^4.26.0 - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-card": ^4.26.0 - "@contentful/f36-collapse": ^4.26.0 - "@contentful/f36-copybutton": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-datepicker": ^4.26.0 - "@contentful/f36-datetime": ^4.26.0 - "@contentful/f36-drag-handle": ^4.26.0 - "@contentful/f36-entity-list": ^4.26.0 - "@contentful/f36-forms": ^4.26.0 - "@contentful/f36-icon": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-list": ^4.26.0 - "@contentful/f36-menu": ^4.26.0 - "@contentful/f36-modal": ^4.26.0 - "@contentful/f36-note": ^4.26.0 - "@contentful/f36-notification": ^4.26.0 - "@contentful/f36-pagination": ^4.26.0 - "@contentful/f36-pill": ^4.26.0 - "@contentful/f36-popover": ^4.26.0 - "@contentful/f36-skeleton": ^4.26.0 - "@contentful/f36-spinner": ^4.26.0 - "@contentful/f36-table": ^4.26.0 - "@contentful/f36-tabs": ^4.26.0 - "@contentful/f36-text-link": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-tooltip": ^4.26.0 - "@contentful/f36-typography": ^4.26.0 - "@contentful/f36-utils": ^4.23.2 - "@types/react": 16.14.22 - "@types/react-dom": 16.9.14 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 84017b77dd06ac71513089498ed1137c43054f6cc073af1da648d241e57777c8a40b989ec6175e8a258b5d3385d013ef92d9116820085954769e2fcc35d92e24 - languageName: node - linkType: hard - -"@contentful/f36-components@npm:^4.20.6, @contentful/f36-components@npm:^4.3.23, @contentful/f36-components@npm:^4.34.1, @contentful/f36-components@npm:^4.60.0": - version: 4.64.0 - resolution: "@contentful/f36-components@npm:4.64.0" - dependencies: - "@contentful/f36-accordion": ^4.64.0 - "@contentful/f36-asset": ^4.64.0 - "@contentful/f36-autocomplete": ^4.64.0 - "@contentful/f36-badge": ^4.64.0 - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-card": ^4.64.0 - "@contentful/f36-collapse": ^4.64.0 - "@contentful/f36-copybutton": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-datepicker": ^4.64.0 - "@contentful/f36-datetime": ^4.64.0 - "@contentful/f36-drag-handle": ^4.64.0 - "@contentful/f36-empty-state": ^4.64.0 - "@contentful/f36-entity-list": ^4.64.0 - "@contentful/f36-forms": ^4.64.0 - "@contentful/f36-icon": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-list": ^4.64.0 - "@contentful/f36-menu": ^4.64.0 - "@contentful/f36-modal": ^4.64.0 - "@contentful/f36-navbar": ^4.1.1 - "@contentful/f36-note": ^4.64.0 - "@contentful/f36-notification": ^4.64.0 - "@contentful/f36-pagination": ^4.64.0 - "@contentful/f36-pill": ^4.64.0 - "@contentful/f36-popover": ^4.64.0 - "@contentful/f36-skeleton": ^4.64.0 - "@contentful/f36-spinner": ^4.64.0 - "@contentful/f36-table": ^4.64.0 - "@contentful/f36-tabs": ^4.64.0 - "@contentful/f36-text-link": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-tooltip": ^4.64.0 - "@contentful/f36-typography": ^4.64.0 + checksum: e76ba038cffa3370d5df2a1e0994e3c4c9e32de6e550057fddbc2f3f260abf6c5c9b378a6a45b353800ea54a0e8ac1ca7afa0883e9cb91dcc950c7f94f47f776 + languageName: node + linkType: hard + +"@contentful/f36-components@npm:^4.0.27, @contentful/f36-components@npm:^4.70.0": + version: 4.74.1 + resolution: "@contentful/f36-components@npm:4.74.1" + dependencies: + "@contentful/f36-accordion": ^4.74.1 + "@contentful/f36-asset": ^4.74.1 + "@contentful/f36-autocomplete": ^4.74.1 + "@contentful/f36-avatar": 4.74.1 + "@contentful/f36-badge": ^4.74.1 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-card": ^4.74.1 + "@contentful/f36-collapse": ^4.74.1 + "@contentful/f36-copybutton": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-datepicker": ^4.74.1 + "@contentful/f36-datetime": ^4.74.1 + "@contentful/f36-drag-handle": ^4.74.1 + "@contentful/f36-empty-state": ^4.74.1 + "@contentful/f36-entity-list": ^4.74.1 + "@contentful/f36-forms": ^4.74.1 + "@contentful/f36-header": ^4.74.1 + "@contentful/f36-icon": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-image": 4.74.1 + "@contentful/f36-list": ^4.74.1 + "@contentful/f36-menu": ^4.74.1 + "@contentful/f36-modal": ^4.74.1 + "@contentful/f36-navbar": ^4.74.1 + "@contentful/f36-note": ^4.74.1 + "@contentful/f36-notification": ^4.74.1 + "@contentful/f36-pagination": ^4.74.1 + "@contentful/f36-pill": ^4.74.1 + "@contentful/f36-popover": ^4.74.1 + "@contentful/f36-skeleton": ^4.74.1 + "@contentful/f36-spinner": ^4.74.1 + "@contentful/f36-table": ^4.74.1 + "@contentful/f36-tabs": ^4.74.1 + "@contentful/f36-text-link": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-tooltip": ^4.74.1 + "@contentful/f36-typography": ^4.74.1 "@contentful/f36-utils": ^4.24.3 peerDependencies: "@types/react": ">=16.8" @@ -8725,65 +4703,32 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: dfe0f0b787e44b7b4fe38beec5ebf35aa07854acd3de664680fd8b0a07144ce33500f47ec5837411ed43c13968eb3c50b47891963c561aab0ed9620fb8816cf4 - languageName: node - linkType: hard - -"@contentful/f36-copybutton@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-copybutton@npm:4.26.0" - dependencies: - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-tooltip": ^4.26.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: b4b72b33142092e72c9d4659c5e254e794a06aa4fb8f836ebb05469761aa854b0b5bb9d9e750b38eccd0e827464a53b5b05b668c82e4942a7b6ad5bb3ec37ea8 + checksum: 9d8f30478ecefbaa4a4d6545d2fe867f8f434c182f9911189bcfef794e7485eebcc215b1855b0b10a283d53f585fdacdb234c56d10efeab138fadad4d6bd0e75 languageName: node linkType: hard -"@contentful/f36-copybutton@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-copybutton@npm:4.64.0" +"@contentful/f36-copybutton@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-copybutton@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-tooltip": ^4.64.0 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-tooltip": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: c4011b5ccd82a727715b45daff375d4817211f7def754378c3fdc01ea4661a534cda4d919913744f0aa93d80f3987dbbee829f87a82d79b9517a5250fad62eac + checksum: 1e625e920dec815bbad1282d8da2f1dd2b1876833638cb1fa558f8e85feb5fc532b05d0ec1bba79cf3e3fa72ecfacfb8ce9f8fdd7961e63e8ec6c7d5b9f40586 languageName: node linkType: hard -"@contentful/f36-core@npm:^4.23.2, @contentful/f36-core@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-core@npm:4.26.0" +"@contentful/f36-core@npm:^4.67.3, @contentful/f36-core@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-core@npm:4.74.1" dependencies: - "@contentful/f36-tokens": ^4.0.1 - "@emotion/core": ^10.1.1 - "@emotion/is-prop-valid": ^1.2.0 - csstype: ^3.1.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: a37b4e57e42f48796abfc8b5be9c08e0022e58c0309f77984ec756644bcbae0ed40899223504b1dd63c9f2157ba06127f9e62147b1af87d2e13bd9f6a9cd01fe - languageName: node - linkType: hard - -"@contentful/f36-core@npm:^4.45.0, @contentful/f36-core@npm:^4.63.0, @contentful/f36-core@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-core@npm:4.64.0" - dependencies: - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-tokens": ^4.1.0 "@emotion/core": ^10.1.1 "@emotion/is-prop-valid": ^1.2.0 csstype: ^3.1.1 @@ -8791,43 +4736,21 @@ __metadata: peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 756a77ffa012956ff72d837123bd0fbb7b98ab3b476fed1d0c10a437765b1a895795c6a0b7c321e4eb116db1882e3b5ce882a6f40d701576dd790cab8923a81f + checksum: 0eb8cb691ecb2d45891b6d6087c7ffb40d7a654deea7b567344eef90a54b3359821dbae114f3250192cf9b3dd9d67f3cab0779138e3a4fd3490424306fd718ce languageName: node linkType: hard -"@contentful/f36-datepicker@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-datepicker@npm:4.26.0" +"@contentful/f36-datepicker@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-datepicker@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-forms": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-popover": ^4.26.0 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/f36-typography": ^4.26.0 - date-fns: ^2.28.0 - emotion: ^10.0.17 - react-day-picker: ^8.3.5 - react-focus-lock: ^2.9.1 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: ae1b22ae7794932abe7ee354ab341d45b642afe0cb28cf7754129add97efb9d01e20dde1ef6f2bb5a5f5de11d2d76eb0d6967c34b04573b045e047b3d3a6fa05 - languageName: node - linkType: hard - -"@contentful/f36-datepicker@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-datepicker@npm:4.64.0" - dependencies: - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-forms": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-popover": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-forms": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-popover": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 date-fns: ^2.28.0 emotion: ^10.0.17 react-day-picker: ^8.7.1 @@ -8835,507 +4758,305 @@ __metadata: peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 444fcfe16197df5fbb1796b7996ed9e0eadd6842fc499e49a050ea3bbdd5236de47eb1adf73a4ad6408812ca0c5fe9cd81411d06c650576a2f543ecee4914577 - languageName: node - linkType: hard - -"@contentful/f36-datetime@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-datetime@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - dayjs: ^1.11.5 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 1b554617e8e65a6b0b3e4d62113ae0cc1d3ddfa8247cb8cd5856244b59ec1954c277c03d1ed17d44da677de4ecb642afdf6e803601e0949508caac2ee9069d07 + checksum: bab05f22721e7c041e7defa03e70b6c591f6f781e7b95c11c6184db69927a55e6a9696921ea77f677ff797ff59386bc99b4d6f93359c5293928923fe28607c00 languageName: node linkType: hard -"@contentful/f36-datetime@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-datetime@npm:4.64.0" +"@contentful/f36-datetime@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-datetime@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 dayjs: ^1.11.5 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 05b87b8378ceebd4018b02afef042f203d8d109ce3f782385ab2b5621ed777d89920b9f8c7f65d69348ff25ae15a6d3100ddad23a3ad8e12c6ddceeacbf5e662 - languageName: node - linkType: hard - -"@contentful/f36-drag-handle@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-drag-handle@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 739e43e26a3a2eefb2afe0d89462e176c2980e7772e7cec783bbb54a34cae1fff0585c2b3eac71c3fe8e06b36f03f55aa1d7c183bd1737ebb361d595febba1fb + checksum: 2e75ffd29373c1e7e39557ef243e828d7a16147d54a8575d566a0a63bdca4b59e5f7d04410d69470756f44d8bb8176fc1d042eeb1190396f59928a63dae73da1 languageName: node linkType: hard -"@contentful/f36-drag-handle@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-drag-handle@npm:4.64.0" +"@contentful/f36-drag-handle@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-drag-handle@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: ffc3aaa671a51d58f26d8ee656021337405c572bd2b44450b66560c548ae49fb7df1277a943e4774d5a6a09832df4787f193ac1d226dd3473f43e9a2ed025df3 + checksum: c3a5c5bf2d74ede06f74954e3cfd066c6114a7e0ae8e1887ec0e0a93ca75a42630556a38a146e366d769dedf673e956d58dd5c95b5edec591629efa545bd53e8 languageName: node linkType: hard -"@contentful/f36-empty-state@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-empty-state@npm:4.64.0" +"@contentful/f36-empty-state@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-empty-state@npm:4.74.1" dependencies: - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 929519f6c0a1cbb5a02c1e4d19a53f912ec9370addcdfe599378da2360206a54cad6e9151cb3ab4d2b099f7eeab1657eee86f3712ee1b97a1f757645af086232 + checksum: 63fc8bc51851502b83d03c0a992d669dcf8bbe79897af772ec348c320e25b4dd1718af7ce1b5216782a46fca13b50a0c83046d99c683d2261937aad91b7db016 languageName: node linkType: hard -"@contentful/f36-entity-list@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-entity-list@npm:4.26.0" +"@contentful/f36-entity-list@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-entity-list@npm:4.74.1" dependencies: - "@contentful/f36-badge": ^4.26.0 - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-drag-handle": ^4.26.0 - "@contentful/f36-icon": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-menu": ^4.26.0 - "@contentful/f36-skeleton": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 + "@contentful/f36-badge": ^4.74.1 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-drag-handle": ^4.74.1 + "@contentful/f36-icon": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-menu": ^4.74.1 + "@contentful/f36-skeleton": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 4ef01de4b1bad1542fb38485132ac95910d325356c9ab7612de2d3e4e42a38845391596e3afcf65b3d5d4418c7f2d009c574b687e7771709f89f7a4f30560245 + checksum: b94f8ffa4fcc4806c43af6c03591a7e4bb1556207f97cd019e0ff7658f086e09d7fd8f355fbb11a996bb171accab1fb3780f06079276d00f2b848f661879f7fb languageName: node linkType: hard -"@contentful/f36-entity-list@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-entity-list@npm:4.64.0" +"@contentful/f36-forms@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-forms@npm:4.74.1" dependencies: - "@contentful/f36-badge": ^4.64.0 - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-drag-handle": ^4.64.0 - "@contentful/f36-icon": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-menu": ^4.64.0 - "@contentful/f36-skeleton": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 9742e5824cd17f0670ee8f4153cb90b6b09a263c41cb7c7e1c26fe8f65c3c940d0a44862019ac4855ed089313d37d05d2e9d1fcd67bd152b4d973d793a4724cd - languageName: node - linkType: hard - -"@contentful/f36-forms@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-forms@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: a25175abe592ce4a7d9d80ea022b1dc7bc22a7471df16ef80cef25d2564ad9a4085ce952568ae117921a27a1debda89de92f84e050c98640224bbd7701f5618f - languageName: node - linkType: hard - -"@contentful/f36-forms@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-forms@npm:4.64.0" - dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 750a9f46e4814f015340d79cdc14de67924c28d8fbc3fe920dd0348c40a6fecd736d6e26533d68ecd122a1de21baeaafc9a5bf012a615042344c09de647f5b73 - languageName: node - linkType: hard - -"@contentful/f36-icon@npm:^4.23.2, @contentful/f36-icon@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-icon@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - checksum: c2332104c46a1aee30d36f1f88aa172143103ef3b242e8b2cb76c5693df24463329a1d7e11f2b4bec5b3a2328c56c9e91452178cfdefec43c647e8efb2e18180 + checksum: 348a0966b3d9802290346057af3140c22f04ef20ff7ec84876a3682cb8eda55c63340598405766431407d66d8c14543c71104cedbd0f0fb9a6bb24ea9bceabda languageName: node linkType: hard -"@contentful/f36-icon@npm:^4.45.0, @contentful/f36-icon@npm:^4.63.0, @contentful/f36-icon@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-icon@npm:4.64.0" +"@contentful/f36-header@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-header@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 78b7085ddd54d468bbbc8f9674b0984e37ff1e029de5fd480700734563d133c4f70c6746178c650f27fd1ad8d05699c3fafd322cf8bbfa93436b901cb6de9b9a + checksum: c8810f3e40f962aac4dbff4377090c0115482be3056b503788a251c2cf4e744a09d84006f18084fa14e4ea4fa7e53026c016941e371a8ed499da6d1f6d4d2a27 languageName: node linkType: hard -"@contentful/f36-icons@npm:^4.1.0, @contentful/f36-icons@npm:^4.23.2": - version: 4.24.0 - resolution: "@contentful/f36-icons@npm:4.24.0" +"@contentful/f36-icon@npm:^4.67.3, @contentful/f36-icon@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-icon@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.23.2 - "@contentful/f36-icon": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 0ad63efcf9afda268b5abbab016cdc6f58dc68e1e76f90495143208decc8e0d4c6aa718ca091f4b135fb0ca091ffe52db189c2007dbdbd63a82ab07521795c55 + checksum: ebb7d2be086a3e3ec118a23cb00b8855178636e885671d5c2a4313d7b0781f6b8d6a77891ade097717b6db323bd047ed6cb2ab677bc9ce16ef5d5d2c64e6ef6f languageName: node linkType: hard -"@contentful/f36-icons@npm:^4.1.1, @contentful/f36-icons@npm:^4.27.0, @contentful/f36-icons@npm:^4.28.0": - version: 4.28.0 - resolution: "@contentful/f36-icons@npm:4.28.0" +"@contentful/f36-icons@npm:^4.1.0, @contentful/f36-icons@npm:^4.29.0": + version: 4.29.0 + resolution: "@contentful/f36-icons@npm:4.29.0" dependencies: - "@contentful/f36-core": ^4.63.0 - "@contentful/f36-icon": ^4.63.0 + "@contentful/f36-core": ^4.67.3 + "@contentful/f36-icon": ^4.67.3 "@contentful/f36-tokens": ^4.0.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: d2b4076a831ee0698dba2b5a62b497fae367b840cccd7548bb27576f0a4783df921b013e309848936e1153b0a3cc3c01616cfea7bfe20155c76c2fbdbf20fda8 + checksum: 9d02a1dfdc9750709a635ba0ec5e102a917c4a45787c265305705f2e2b10abe089456cecdbf03ac798d3ef23bc92593c15e568534099c529b87fec1637ed285f languageName: node linkType: hard -"@contentful/f36-list@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-list@npm:4.26.0" +"@contentful/f36-image@npm:4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-image@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - checksum: 3eb6a1238a989c5c6b68be3b184d62d529315a5a5c22c2c4cf255ea4b5bb7d65cd055bd7e57439cbdf8a9e890d6c41299acda5906aa4661e242845d446fbe548 - languageName: node - linkType: hard - -"@contentful/f36-list@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-list@npm:4.64.0" - dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-skeleton": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 1bf62a7df055491bd1c766c2be5ee146bfbdf5a3350bca93801f121128a3eed6c8616819d0b22d17914e59d1e8f38cb7e1077eea9558dee2665f9e7cd07a597f + checksum: b63eb5c51c274cf363c792c6a8360d7ea34641b43023aa9229f8506dd7938c13ddd77205001ec4d53c8343e28d69badbf56c4a4a49bb1bc1e3e4f3b22c849aac languageName: node linkType: hard -"@contentful/f36-menu@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-menu@npm:4.26.0" +"@contentful/f36-list@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-list@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-popover": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 - "@contentful/f36-utils": ^4.23.2 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 14d921d6d35fd698e28882b22b5b113ef4776a1c26de51dabc7e02bff18884bda141a68ed63ad1028166476bc036a77a189bc78323dc180098b6901cae7ba7a7 + checksum: 1ded51c6aa66f3ad99bc0e9c646ce9616dd6671de6278d75d975fc871c75994b9db499176f68b99eb64042485c14cf393814dd34dfd793756a29f09b501add21 languageName: node linkType: hard -"@contentful/f36-menu@npm:^4.45.0, @contentful/f36-menu@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-menu@npm:4.64.0" +"@contentful/f36-menu@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-menu@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-popover": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-popover": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 6fcb15c3475b34030fb236e748bc07ab25566f453fc37ab99d51cf522c1050cdc192e254a8f750e28ebc239ba4be6f5b5bf1b7b013e5968e1b365579785f7c21 - languageName: node - linkType: hard - -"@contentful/f36-modal@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-modal@npm:4.26.0" - dependencies: - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 - "@types/react-modal": ^3.13.1 - emotion: ^10.0.17 - react-modal: ^3.16.1 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: da1c3d8f0ba0e356797f78bfc071fc8b27d0248590ff93ee1588fb8c6045ba8bfe7eb0b1804a6f188af63f62efeb71d6008504fa8568411c105fa9c284c9fa65 + checksum: a6b06082abf979e6fe9d2075ae00edcef1a95fd51e28c61d3f0fd2144185e9b34a48bf4566d4729fc68e7cd885aa78976c9cfa4b02024f5c9a956c84e05f3f10 languageName: node linkType: hard -"@contentful/f36-modal@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-modal@npm:4.64.0" +"@contentful/f36-modal@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-modal@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 "@types/react-modal": ^3.13.1 emotion: ^10.0.17 react-modal: ^3.16.1 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 81d7e7439d6d44c369c406cbc5f0e1baf9541e2f722896f05fa15a3dca9d2681a67b27d26cab59e04681fa98f5924125058d529f8ea9c4841212033c997f8028 + checksum: 87aa4e9cabb07254a1579a6b701b2bff3b02993bc90fe7c4798bf691d49321bbaf9a44677c3f808cc9f2c35d68904b29ed2dcdc71dcab644490d5c3dd7e56f21 languageName: node linkType: hard -"@contentful/f36-navbar@npm:^4.1.1": - version: 4.1.1 - resolution: "@contentful/f36-navbar@npm:4.1.1" +"@contentful/f36-navbar@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-navbar@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.45.0 - "@contentful/f36-icon": ^4.45.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-menu": ^4.45.0 - "@contentful/f36-skeleton": ^4.45.0 - "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-avatar": 4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icon": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-menu": ^4.74.1 + "@contentful/f36-skeleton": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 "@contentful/f36-utils": ^4.23.2 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: e349c627e0f6f6c669fabb3a2e306531d53d9a66f16639bf44b6dac70b6e8ac672c7b0f3b5c94d73f50d49dbec35196e787b7b80131c42e37f0b2141a1e4e723 - languageName: node - linkType: hard - -"@contentful/f36-note@npm:^4.2.8, @contentful/f36-note@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-note@npm:4.26.0" - dependencies: - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icon": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 28dabf0744f5af6ec0a6640d93683c110deeccf3d170a8a9eb5ceaad3453ec9114d742531b0e1aad119d4bc36c42553101570dcc1213aaaebeee733bab581dc6 + checksum: 284d6e1051aef692374f7e22647df0386a1599685cf54feb9be63dc59714bd9cc49793ade8e009e9c1dd1dc15c637e0f21df71f27cecca98e31145c85b8e3435 languageName: node linkType: hard -"@contentful/f36-note@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-note@npm:4.64.0" +"@contentful/f36-note@npm:^4.70.0, @contentful/f36-note@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-note@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icon": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icon": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: aaac447a2d9cec9b2aacb3289722638941ca173147ce896739c5866adefacb9db35b6ec2585ebd2a39b17b1b194272a50c7e51e1857b3368fa5bb33b148da02b + checksum: 28470b1e5adcb6a3bf772a16eb2af4dcbe94d6e85a8688bc3874e7cc8e63a6a9fd69a96a85acf21204d7f29e6cdde3c0e79d2315ca43b72ef447d8c4f3f5d7fd languageName: node linkType: hard -"@contentful/f36-notification@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-notification@npm:4.26.0" +"@contentful/f36-notification@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-notification@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-text-link": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-typography": ^4.26.0 - "@swc/helpers": ^0.4.2 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-text-link": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 react-animate-height: ^3.0.4 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: fa970a400ca3ab072b37a631b13b47b0962b2ae948e1cf8d7ad7a6018b2b7ce2b759f1483bf28d19a9f9e15b0f62fd13881c8a2fec1dc18c7f45d2ee213f720f + checksum: 994399bf831fb08c0817909d2a41dcfccda9b7586a1f6c6b2a243a98077849abbb668859bd997f4f8e616e5cae3d51538f5c4250d7f4217b214820864c9c5bfb languageName: node linkType: hard -"@contentful/f36-notification@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-notification@npm:4.64.0" +"@contentful/f36-pagination@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-pagination@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-text-link": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 - "@swc/helpers": ^0.4.14 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-forms": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 emotion: ^10.0.17 - react-animate-height: ^3.0.4 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: a6d88bd19d4faf37487e77181b4420653440441ef1e6f30f20b5ed86ac353518b0d1ea76fc80a1a2aaf093302959cdff7fc5db605fe8a6c2f098f0aeb2a7b42a + checksum: 29126275814fc3bcdb673e31a5831e7e9576d7019321017260d029ac704dcd08dfdc8e1ee6cf3ddff2599815cc810ae86e553c404a2191a25f0dfd1e1084a3ba languageName: node linkType: hard -"@contentful/f36-pagination@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-pagination@npm:4.26.0" +"@contentful/f36-pill@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-pill@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-forms": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/f36-typography": ^4.26.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - checksum: fd413d0ec7a9524dd1723a81c602e26c5ec51e900f506ca816950c3a2549d276a0b32b7f136c461ebac4a7190b17c02cf96b284628bb9697cd65c4a4095f2d95 - languageName: node - linkType: hard - -"@contentful/f36-pagination@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-pagination@npm:4.64.0" - dependencies: - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-forms": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 + "@contentful/f36-button": ^4.74.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-drag-handle": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-tooltip": ^4.74.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 61724de7673593fec87a80cd30942b90f2f6e259fa35a2f899f09ea6375734e176ae7862c659ee7b52692fe5cff112c93120334e56a34a477a5a22f2b0c3b7a2 + checksum: e9b4523160362a76606edbd4c75ee5060770b542b87988514ba73ce076836b31cc57de0bfb2a1790571f03d7fcf9eb6c9e2c798176c62c73aa8a0a237925a49b languageName: node linkType: hard -"@contentful/f36-pill@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-pill@npm:4.26.0" +"@contentful/f36-popover@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-popover@npm:4.74.1" dependencies: - "@contentful/f36-button": ^4.26.0 - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-icons": ^4.23.2 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-tooltip": ^4.26.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 42fcc2e12b4044465f5127d7e0740af369c21f13f1604046a7933f4ff5371a6ea45a3224fbb0882641bb9c0b1f51ee1ed4a2d69d9ab4768e17a348217f07c836 - languageName: node - linkType: hard - -"@contentful/f36-pill@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-pill@npm:4.64.0" - dependencies: - "@contentful/f36-button": ^4.64.0 - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-drag-handle": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-tooltip": ^4.64.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: ac24c44372356203d89bb8d34a5c0cd9fc722afa580666ef53ada92bd67cbb59db7ff005ecbcae2b31cb9eb1e16cd71b1bbe45c18901b122cae3e025d1a66004 - languageName: node - linkType: hard - -"@contentful/f36-popover@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-popover@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-utils": ^4.23.2 - "@popperjs/core": ^2.11.5 - emotion: ^10.0.17 - react-popper: ^2.3.0 - peerDependencies: - react: ">=16.8" - checksum: a38c7cc9a158d40540f109fabf12638b9ab0a79f97fc8fe76f0da8dd14bed797fecf35a2514b94e1897719c73447486cf3d3634a430ab7b0578fa13399602837 - languageName: node - linkType: hard - -"@contentful/f36-popover@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-popover@npm:4.64.0" - dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 "@contentful/f36-utils": ^4.24.3 "@popperjs/core": ^2.11.5 emotion: ^10.0.17 @@ -9343,192 +5064,98 @@ __metadata: peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 4744810fc959f668df411c2c355d6f195bb0a7f4232d5cf732cd1766809bca8cc40b4efeb036e0db2f8b3bba23db668efd95e47403f13c57dc0749c2327e90b9 + checksum: 00db909943456ba468079db34eb88bf392614360730cc961436522d4a28523d134a607655c700b21754a4bfefcb21dcc457562c3a41abd43086ce8c47f7dca43 languageName: node linkType: hard -"@contentful/f36-skeleton@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-skeleton@npm:4.26.0" +"@contentful/f36-skeleton@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-skeleton@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-table": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-table": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 1f9452308f9acabab2ba1d5fc085646ff4532d17ba031ac29b96675a823d2f53f25f13df905a19b28478f620054f39c739da2880e65b678b2caa26b79abcf95e + checksum: 3f8359253eab2603fe5b5fd26385f46e7a7d93a78fda117662fac53921517432380a9fb33b87be3e33d870a45ad36a0067be07d89e8ee762ee2e99df805f170d languageName: node linkType: hard -"@contentful/f36-skeleton@npm:^4.45.0, @contentful/f36-skeleton@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-skeleton@npm:4.64.0" +"@contentful/f36-spinner@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-spinner@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-table": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 4b904d7e75ebe9f6ca77586c26807d0132747f460c278edfe5171f7ed75e94cfe3807ec4b5f5bf3f614042bbed969e334b24cbf8b0f3798229a96197d4e34a86 - languageName: node - linkType: hard - -"@contentful/f36-spinner@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-spinner@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - checksum: 62fe1a6307752a15c3ec3d294c90b4f7358f0c81b2acce2eaf8dd3f5d67f4d769f7c4d81c2b85e26d42e24d8f548bce268c7dc452268f39a647a465c439a0a0d + checksum: 698c498c23cb342b629ed4030c29e798054c6a154ffa520bbbb2bd54bd2d7765afd40175f19cf37a3123bbb8cc8eee5ebb7b52445555b53b90c261957fd62893 languageName: node linkType: hard -"@contentful/f36-spinner@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-spinner@npm:4.64.0" +"@contentful/f36-table@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-table@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 969554b4c94d4020dbcfd335ec8dbca7291e92bd5a3fbc5d7dedb142057c3f632b5f59e4ed2ca1a49871c8f1c8926b72b4bea3c0b5fe811559da86b41cff737e - languageName: node - linkType: hard - -"@contentful/f36-table@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-table@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 28e94eb41fe9f8124cb359daf984abadbb5145d2df3c2f9c8cc99c3dc2f942709a4c68a368ef2b04713634010814ac914d27d55d90fad03acc843575efafbd21 - languageName: node - linkType: hard - -"@contentful/f36-table@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-table@npm:4.64.0" - dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-icons": ^4.28.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/f36-typography": ^4.64.0 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: abf23880f48667257aa151382aa45047b526436d4ddd1d5b29a3b7156d2e3a7f51f437e9158fcb05d2b29e5981fcc90c6b1b0207a69089f212db7ea53a5590d7 - languageName: node - linkType: hard - -"@contentful/f36-tabs@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-tabs@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@radix-ui/react-tabs": ^1.0.1 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: cc7416d31d9fde3d3791399b781fb74c84e70bba740dcd58d69da2dbf0a2323e38c52cc2666f45056488a48cda5ea949634bdb2ab5743cc6452b269190320cc3 + checksum: 1eeab9778ee5fec7391251d37cbdccc2409f032a56502d7ebd2d7c31c5495b6c5f7e18729fab2c048950a727a2b73a5f9da1166bb2d114d08b967c2112b93bb3 languageName: node linkType: hard -"@contentful/f36-tabs@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-tabs@npm:4.64.0" +"@contentful/f36-tabs@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-tabs@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 "@radix-ui/react-tabs": ^1.0.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 477327efcc6a8b58850b6b800cd3acd18a60088cc8ee1fbab3ca39f6732e842566fb475e9cbd320ad69785dc73c3a7bd0ab23fa050d369b715ee2788975d4c7e - languageName: node - linkType: hard - -"@contentful/f36-text-link@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-text-link@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - checksum: a06e818e44625606258352806014504046f36be77e9fb2aab3042beede0bc4ceb4dfcfba94cdc2969e22618bf5de8a904f47a511072cc9c668bac7873c5fdd4f + checksum: 1227f28978dc5c8e43966b1a0ea8b2242a6882ead61f7394e3141ac80fdf20a9049cd8587b48a75130be3cea66a07ad000761c7dd3cf03e31ef03417c5a07613 languageName: node linkType: hard -"@contentful/f36-text-link@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-text-link@npm:4.64.0" +"@contentful/f36-text-link@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-text-link@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 4bc1cbe3f5b08b24c10262a771cbd0fa03b1f331c260da2f347e13abfb2364058e59e7807f26a2d402985e2eb4f6134b4bfaffd6c196e683755b5613271934d2 + checksum: b42bfd65febbe44030296ffc0cc1114139dca9ac0a94cdd26aa1d8bc492910c0041084bb489126cb0425117dbc2b21a7e830c4c4af895d50ba4b8e156366f1d0 languageName: node linkType: hard -"@contentful/f36-tokens@npm:^4.0.0, @contentful/f36-tokens@npm:^4.0.1": - version: 4.0.1 - resolution: "@contentful/f36-tokens@npm:4.0.1" - checksum: 51b7f51ca58423b624aa937ecf6dc1a68deff86ca8e6f9e4523dfac959c6383a6f271e7794d0ec2b818494ef823961e343ec5687acc9658ff1bef8917c3ba72b - languageName: node - linkType: hard - -"@contentful/f36-tokens@npm:^4.0.4": - version: 4.0.5 - resolution: "@contentful/f36-tokens@npm:4.0.5" - checksum: 99f4609cd3178d2b0c2389c210405dd06fea7d5a788f457e53684a21cf2dabac818a87a611df6fcec63e48371f72668af8d5fe99a51c681c087426d4008c0e3c - languageName: node - linkType: hard - -"@contentful/f36-tooltip@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-tooltip@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/f36-utils": ^4.23.2 - "@popperjs/core": ^2.11.5 - csstype: ^3.1.1 - emotion: ^10.0.17 - react-popper: ^2.3.0 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 0b98c5aa4ed510188968c594f35541957ef2297e363b73abd9ce89cd70a6d1c69615466695d0e825110e44937478744349c259d5a9e6e16568bdb9af90983c69 +"@contentful/f36-tokens@npm:^4.0.0, @contentful/f36-tokens@npm:^4.0.1, @contentful/f36-tokens@npm:^4.0.5, @contentful/f36-tokens@npm:^4.1.0": + version: 4.1.0 + resolution: "@contentful/f36-tokens@npm:4.1.0" + checksum: dd867c33dd7f1ee5c1359ba8ad6cde99df34171a53fabb54811cb067184f3b5d4fcbb61d86cf0b9c70f1c2c66b4221379723aad80d4e4bba384a4f6543594e9a languageName: node linkType: hard -"@contentful/f36-tooltip@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-tooltip@npm:4.64.0" +"@contentful/f36-tooltip@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-tooltip@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 "@contentful/f36-utils": ^4.24.3 "@popperjs/core": ^2.11.5 csstype: ^3.1.1 @@ -9537,39 +5164,26 @@ __metadata: peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 4756c272b2826f38575f71c69601cef14d981f35ac28a2b57e4b082763ec1ab31000a679a9c0965f56494b69413b2b3c5338051122230bff935e6e3d902c6287 - languageName: node - linkType: hard - -"@contentful/f36-typography@npm:^4.26.0": - version: 4.26.0 - resolution: "@contentful/f36-typography@npm:4.26.0" - dependencies: - "@contentful/f36-core": ^4.26.0 - "@contentful/f36-tokens": ^4.0.1 - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - checksum: eef3c86d1e91fe7383f39caa32569c8f2007411093a98139fe171ebc66f8d611485518d406afc06173f6a125852a70c671bd359654e1962995d7dfe71a559f8d + checksum: 3112d2e37afdb7c073510ae0d63e4c6903e16aeecc20b6814dae3e792ba2116c01100cf6ca0e26dcc93538b59a00d0baa392a8af4e661af50b22caf10aa4f070 languageName: node linkType: hard -"@contentful/f36-typography@npm:^4.64.0": - version: 4.64.0 - resolution: "@contentful/f36-typography@npm:4.64.0" +"@contentful/f36-typography@npm:^4.74.1": + version: 4.74.1 + resolution: "@contentful/f36-typography@npm:4.74.1" dependencies: - "@contentful/f36-core": ^4.64.0 - "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-core": ^4.74.1 + "@contentful/f36-tokens": ^4.1.0 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 97ca33c46118d42b363067ac8f2e73419bdbce8cd8334cb88ba678e0e390b0825e851147b0d1dc4d2c05cb0847ed58cae0fd6331a3f92aaddd700b0dfe036342 + checksum: b30e97df3d235f24a05b071d198d3aa7e8d4fb4982954b6a71862c51c53b372685154517d6acededc4f1eeb1dcb75d3ed628ca94640496098851d0cc5d0471a1 languageName: node linkType: hard -"@contentful/f36-utils@npm:^4.19.0, @contentful/f36-utils@npm:^4.24.3": +"@contentful/f36-utils@npm:^4.23.2, @contentful/f36-utils@npm:^4.24.3": version: 4.24.3 resolution: "@contentful/f36-utils@npm:4.24.3" dependencies: @@ -9581,77 +5195,65 @@ __metadata: languageName: node linkType: hard -"@contentful/f36-utils@npm:^4.23.2": - version: 4.24.1 - resolution: "@contentful/f36-utils@npm:4.24.1" - dependencies: - emotion: ^10.0.17 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 31e9f0def987cbd0ec49c4b8117b6b05e454d80665d9b117fcd9faa9fe42a63ad2793e3bd207c0dedf82619bda1f4e04c7c8954e8b1669ec6033a3a4a1e938e6 - languageName: node - linkType: hard - "@contentful/field-editor-boolean@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-boolean@npm:1.4.8" + version: 1.4.22 + resolution: "@contentful/field-editor-boolean@npm:1.4.22" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 lodash: ^4.17.15 nanoid: ^3.1.3 peerDependencies: react: ">=16.8.0" - checksum: 1ba2d1f36c38072c52128ae284273344ae732b1b75fa3096fbd7ba4252ccf3a50336dd6c37055100fb36c88c9ed0bdc9319ff3bb06d898a453eb645f9a7efa75 + checksum: 3e29a8694a8b8faa5aee11fbb135ff6806752463b43e965c4909204323fa9d09787a4d180eea56dda66d1c6cecd7206db01e05311e973620aa349ce5ab97cc39 languageName: node linkType: hard "@contentful/field-editor-checkbox@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-checkbox@npm:1.4.8" + version: 1.4.22 + resolution: "@contentful/field-editor-checkbox@npm:1.4.22" dependencies: - "@contentful/f36-components": ^4.3.23 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: d5a407173c8347447d073948c0d669f88518928a2695e4bdcdca28c21e371cec2cae56ac51b1c4e3b3a0ac6d11fb381bd9eff5e1bc3306829ee4847d16ac7175 + checksum: 75f733cb3ae76eb1ab31c7084356c6dc57b7b5ad4abeaa8f3b0988c795363215cd44e9cc2e892a6bb9801ff8f3db9b5d15087fd3619cdcc005097e86f4f0518e languageName: node linkType: hard "@contentful/field-editor-date@npm:^1.6.8": - version: 1.6.8 - resolution: "@contentful/field-editor-date@npm:1.6.8" + version: 1.6.22 + resolution: "@contentful/field-editor-date@npm:1.6.22" dependencies: - "@contentful/f36-components": ^4.34.1 - "@contentful/f36-tokens": ^4.0.1 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 moment: ^2.20.0 peerDependencies: react: ">=16.8.0" - checksum: 2de4b3b0620ea0b845ca2647f7e22f6840424711699c82d9f0b5b722efb41150fa6a908d32aa950e8f9063a41ccf5857e737c209e792f4d21ff777f8ae639751 + checksum: 6d6219389256a4dde0f0ea509587111097502ad7db67ee5d61478921295e3037aa549084c4a1bf1c009c9b9cc1ca0987871fdf923a05048a15bd12941fe25de4 languageName: node linkType: hard -"@contentful/field-editor-dropdown@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-dropdown@npm:1.4.8" +"@contentful/field-editor-dropdown@npm:^1.4.8, @contentful/field-editor-dropdown@npm:^1.5.6": + version: 1.5.6 + resolution: "@contentful/field-editor-dropdown@npm:1.5.6" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.0 lodash: ^4.17.15 nanoid: ^3.1.3 peerDependencies: react: ">=16.8.0" - checksum: 6e66cd2c8693d7216cc8f4e832a97df37cca31f9d50799acbf062fe9a3dfe9c140f317f8f665f0fabec10c0f97406d7937551e7a9e100c74596b50b64c6810a5 + checksum: 4d33f60825424a5979281a7f5f740d08828c20bee640924f60332c3fe2b6a871f701787f28b9dab6a9c6cf51a4b4b2a161f692274b63620d138df2e1724a4293 languageName: node linkType: hard @@ -9677,69 +5279,66 @@ __metadata: linkType: hard "@contentful/field-editor-json@npm:^3.3.12": - version: 3.3.12 - resolution: "@contentful/field-editor-json@npm:3.3.12" + version: 3.3.27 + resolution: "@contentful/field-editor-json@npm:3.3.27" dependencies: "@codemirror/lang-json": ^6.0.0 - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 - "@types/deep-equal": 1.0.1 - "@types/react-codemirror": 1.0.3 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 + "@types/react-codemirror": 1.0.11 "@uiw/react-codemirror": ^4.11.4 - deep-equal: 2.2.2 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 5edada61d8e266e260ecca3cd1c05fe881de89b4afef9e2fcec6745b24b78527d9376108ab5c94c668f01f02b9582bf91fc6e40d727ab61a446911620d077d62 + checksum: fa4de770ca9a72dd2003ef65fdcdd9a4b896ce3286b888227b58189fb2c35a8c072b9ac220640a058ee36e3ce2e3a54189019bf2779a707066a96641e2b1554d languageName: node linkType: hard "@contentful/field-editor-list@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-list@npm:1.4.8" + version: 1.4.22 + resolution: "@contentful/field-editor-list@npm:1.4.22" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 9a2b25a016322ecb268e8ea85fba13e986d572d43a6e555394880ef4d6cc48160a78746fea86885125188c16a90ae897edbbfa9c300895ff7eac31368e171d99 + checksum: cb0f6f088e460cd68a204663dad518b8df674aa4eafbe4a8a30ee41e2948faa7998f3ddeaa9550ccd93d34d20975f97e583c349114210bec25f52c790c96ea0e languageName: node linkType: hard "@contentful/field-editor-location@npm:^1.3.12": - version: 1.3.12 - resolution: "@contentful/field-editor-location@npm:1.3.12" + version: 1.3.27 + resolution: "@contentful/field-editor-location@npm:1.3.27" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 - "@types/google-map-react": 2.1.7 - deep-equal: 2.2.2 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 + "@types/google-map-react": 2.1.10 emotion: ^10.0.17 - google-map-react: 2.2.0 + google-map-react: 2.2.1 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: b7fc382da1d9dd408254bd243e5268487272d49261a4ae6bc6b35717a0782b52cec1408c66771ca4e346a4f14f463d12333be913616f68983703aac102495ebe + checksum: 9f0a917bb610506f225cdd021761ff406b9439437f01d16b025d96f67eb61e1b6901696cda537a7c6dd33c57f94748da9bdb1845e82c015ea8ca709d72272405 languageName: node linkType: hard "@contentful/field-editor-markdown@npm:^1.5.9": - version: 1.5.9 - resolution: "@contentful/field-editor-markdown@npm:1.5.9" + version: 1.6.6 + resolution: "@contentful/field-editor-markdown@npm:1.6.6" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-icons": ^4.1.0 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 "@types/codemirror": 0.0.109 codemirror: ^5.65.11 - constate: ^3.2.0 + constate: ^3.3.2 emotion: ^10.0.17 lodash: ^4.17.15 react-markdown: ^8.0.7 @@ -9747,70 +5346,70 @@ __metadata: rehype-sanitize: ^6.0.0 remark-gfm: ^3.0.1 peerDependencies: - "@contentful/app-sdk": ^4.17.1 + "@contentful/app-sdk": ^4.29.0 react: ">=16.8.0" - checksum: 84b3f9862beca5708016d4efedf51798ccfcfdcee51ba5c44c9ed6a4e312e7f3c4d6506816f4c5e5aa85f0d3242b438cf1599b79c7b2b9c7f1f494a6caa6d860 + checksum: d44f053b3e7fb013097412ef24d5da612784b7262eac5d98df51c081b56287f3add2fc418648bc56a86f6ce8246ce395c1624c6abca92fb0b1ab33a5a2ed03bc languageName: node linkType: hard "@contentful/field-editor-multiple-line@npm:^1.3.10": - version: 1.3.10 - resolution: "@contentful/field-editor-multiple-line@npm:1.3.10" + version: 1.3.24 + resolution: "@contentful/field-editor-multiple-line@npm:1.3.24" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 6cda45dfd197c6e2fc269d3d64ddf68c7824aa3ded2d118162ceeb398bc7697252e73371858f2729b1dd2d17a35349c50f874026b786fc3955934e582be91e46 + checksum: 37e0e965151ece315ed8ed4bd50bfa9334501fc999b91f31a36c90dcc06a0d263cbafc3662a8ae3cbee0a10dc5568a717cbd8a9ab5e8ecc7bd1ad971533db21c languageName: node linkType: hard "@contentful/field-editor-number@npm:^1.3.10": - version: 1.3.10 - resolution: "@contentful/field-editor-number@npm:1.3.10" + version: 1.3.25 + resolution: "@contentful/field-editor-number@npm:1.3.25" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8.0" - checksum: 318aa97692959149e9de98a263077b6cc38e4011c02704d436f5a55a1354cf65c60e1617d1c2f8c3432e0ecef5f3e0d4ccedc9ec35e8d911220c0bb410f3a6c7 + checksum: 0975aadb8ca095c610b488a5f078499acb33078ba49572c86b94d5e1dc179bd86aa0d8301d24f60a73ce2ea05455183a78c01c14694903c60709f2edad5f4c3c languageName: node linkType: hard "@contentful/field-editor-radio@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-radio@npm:1.4.8" + version: 1.5.6 + resolution: "@contentful/field-editor-radio@npm:1.5.6" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-dropdown": ^1.4.8 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-dropdown": ^1.5.6 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 lodash: ^4.17.15 nanoid: ^3.1.3 peerDependencies: react: ">=16.8.0" - checksum: a9d67fc15f542ed13531dbb2997f55d5caae9d769cde9ea6f97b77f5b818642558385ab64eb11a4b841a3f3001feb1f57ce3836a55fd1d6694bba13689077e3e + checksum: 1a97c7cc95bc68c0b04b5305649dd748e9b2b511511f65325a1ee694668bc8b234e029c6bbc0248b940234a0a104148410bdde30405ff902f48fcfa086e67911 languageName: node linkType: hard "@contentful/field-editor-rating@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-rating@npm:1.4.8" + version: 1.4.22 + resolution: "@contentful/field-editor-rating@npm:1.4.22" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 002d1b369e9392c289ec47db379859b4c748a00b20ea79997e6b432356e1ad25d649d97c6726cc5a882a757dd548d905a79435e8b713e5a29bc3fd2b82f1ad7e + checksum: ae775057a32105a9497e040336136357a23ae144041c01717136934ebc611ddabb08d1c08bd99cb07acd2b2d86022348176586df571dd9937b7a03d1431f3fff languageName: node linkType: hard @@ -9844,64 +5443,61 @@ __metadata: languageName: node linkType: hard -"@contentful/field-editor-reference@npm:^5.27.1": - version: 5.27.1 - resolution: "@contentful/field-editor-reference@npm:5.27.1" +"@contentful/field-editor-reference@npm:^5.27.1, @contentful/field-editor-reference@npm:^5.31.2": + version: 5.31.2 + resolution: "@contentful/field-editor-reference@npm:5.31.2" dependencies: - "@contentful/f36-components": ^4.60.0 - "@contentful/f36-icons": ^4.27.0 - "@contentful/f36-tokens": ^4.0.4 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 "@contentful/mimetype": ^2.2.29 "@dnd-kit/core": ^6.0.8 - "@dnd-kit/modifiers": ^6.0.1 - "@dnd-kit/sortable": ^7.0.2 + "@dnd-kit/modifiers": ^7.0.0 + "@dnd-kit/sortable": ^8.0.0 "@tanstack/react-query": ^4.3.9 - "@types/deep-equal": ^1.0.1 - constate: 3.2.0 - contentful-management: ^10.14.0 || ^11.0.0 - deep-equal: 2.2.2 + constate: ^3.3.2 + contentful-management: ^11.35.1 emotion: ^10.0.17 lodash: ^4.17.15 moment: ^2.20.0 p-queue: ^4.0.0 react-intersection-observer: 9.4.0 - type-fest: 2.17.0 peerDependencies: - "@contentful/app-sdk": ^4.17.1 + "@contentful/app-sdk": ^4.29.0 react: ">=16.8.0" - checksum: af7c245d8806880f6e80878c3d1226a99c1261ea92488a7b4f419ae2704e59ec17984d1cf58750b9e38d80f0422a7f4350297ba3dc6133b7e3c65e9b5a6367d7 + checksum: 48873db9d2b25988f00dad38fe4a901c295c2f01857c355369c5195fdc6b3d6ad9773fd2968d5dec3d60813c2bcf78de0b5065e393aed16a4811f48aada663c9 languageName: node linkType: hard "@contentful/field-editor-rich-text@npm:^3.20.1": - version: 3.20.1 - resolution: "@contentful/field-editor-rich-text@npm:3.20.1" + version: 3.29.0 + resolution: "@contentful/field-editor-rich-text@npm:3.29.0" dependencies: - "@contentful/app-sdk": ^4.21.1 + "@contentful/app-sdk": ^4.29.0 "@contentful/contentful-slatejs-adapter": ^15.16.5 - "@contentful/f36-components": ^4.20.6 - "@contentful/f36-icons": ^4.1.1 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/f36-utils": ^4.19.0 - "@contentful/field-editor-reference": ^5.27.1 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/f36-utils": ^4.24.3 + "@contentful/field-editor-reference": ^5.31.2 + "@contentful/field-editor-shared": ^1.8.0 "@contentful/rich-text-plain-text-renderer": ^16.0.4 - "@contentful/rich-text-types": 16.3.0 + "@contentful/rich-text-types": 16.7.0 "@popperjs/core": ^2.11.5 - "@udecode/plate-basic-marks": 30.1.2 - "@udecode/plate-break": 30.1.2 - "@udecode/plate-common": 30.1.2 - "@udecode/plate-core": 30.1.2 - "@udecode/plate-list": 30.1.2 - "@udecode/plate-paragraph": 30.1.2 - "@udecode/plate-reset-node": 30.1.2 - "@udecode/plate-select": 30.1.2 - "@udecode/plate-serializer-docx": 30.1.2 - "@udecode/plate-serializer-html": 30.1.2 - "@udecode/plate-table": 30.1.2 - "@udecode/plate-trailing-block": 30.1.2 - constate: 3.2.0 + "@udecode/plate-basic-marks": 36.0.0 + "@udecode/plate-break": 36.0.0 + "@udecode/plate-common": 36.5.9 + "@udecode/plate-core": 36.5.9 + "@udecode/plate-list": 36.0.0 + "@udecode/plate-paragraph": 36.0.0 + "@udecode/plate-reset-node": 36.0.0 + "@udecode/plate-select": 36.0.0 + "@udecode/plate-serializer-docx": 36.0.10 + "@udecode/plate-serializer-html": 36.0.0 + "@udecode/plate-table": 36.5.9 + "@udecode/plate-trailing-block": 36.0.0 + constate: ^3.3.2 fast-deep-equal: ^3.1.3 is-hotkey: ^0.2.0 is-plain-obj: ^3.0.0 @@ -9913,53 +5509,25 @@ __metadata: peerDependencies: react: ">=16.14.0" react-dom: ">=16.14.0" - checksum: e062d28beaecf3219ee06ddb1634b8a5dcc5088226b39fae8b88d82ce58ab96d09aacb345ad60eec3545f1b132aa0532526ede59fe0cb5d18a924873a3bb4800 + checksum: bb8d8c2d2410a04429238a8a19ae682b4b7662cd9203e7e6ae6e7382a3a26e1ae8a58f046f36a02bf1a38a9d4bf12a8947916e568e0f1ea853a901db3d787e46 languageName: node linkType: hard -"@contentful/field-editor-shared@npm:^1.1.5": - version: 1.1.5 - resolution: "@contentful/field-editor-shared@npm:1.1.5" - dependencies: - "@contentful/f36-note": ^4.2.8 - "@contentful/f36-tokens": ^4.0.0 - emotion: ^10.0.17 - lodash: ^4.17.15 - lodash-es: ^4.17.15 - peerDependencies: - "@contentful/app-sdk": ^4.2.0 - react: ">=16.8.0" - checksum: 6e245b659c4e1310e1aa8cf31b37053714e7424868001f768cdd4dfce2a3dc6c2e9ab584d6ee8a7ac92282b87e623a791096b869ec9b261c94df934571ec9059 - languageName: node - linkType: hard - -"@contentful/field-editor-shared@npm:^1.4.2": - version: 1.4.2 - resolution: "@contentful/field-editor-shared@npm:1.4.2" - dependencies: - "@contentful/f36-note": ^4.2.8 - "@contentful/f36-tokens": ^4.0.0 - emotion: ^10.0.17 - lodash: ^4.17.15 - peerDependencies: - "@contentful/app-sdk": ^4.17.1 - react: ">=16.8.0" - checksum: 75f80c8188d0a9b6b216f3e9fdf81d2ad5f8a00e0d80e222f208ccabfd8472c27b8b6c1ad0298f0d6dbe224842c3d9e0005866d4fac562ee41250dd300c2e924 - languageName: node - linkType: hard - -"@contentful/field-editor-shared@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-shared@npm:1.4.8" +"@contentful/field-editor-shared@npm:^1.1.5, @contentful/field-editor-shared@npm:^1.4.2, @contentful/field-editor-shared@npm:^1.4.8, @contentful/field-editor-shared@npm:^1.8.0": + version: 1.8.0 + resolution: "@contentful/field-editor-shared@npm:1.8.0" dependencies: - "@contentful/f36-note": ^4.2.8 - "@contentful/f36-tokens": ^4.0.0 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-note": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + contentful-management: ^11.35.1 emotion: ^10.0.17 + fast-deep-equal: ^3.1.3 lodash: ^4.17.15 peerDependencies: - "@contentful/app-sdk": ^4.17.1 + "@contentful/app-sdk": ^4.29.0 react: ">=16.8.0" - checksum: 941c00b00fce075f4da8d33436312daad4e9891fb83c1aeeeb959cc7557a9936b7556deeb68e5b4b80156402fb317de332dd3439a46c6a98327007314081b935 + checksum: 6481e8565d0b1398bfd6b840816d74b0a2e005cfdf908d8a05ca6ee6914f5248d9d8247b1bd144d3effdb90885dfd6797fc70ca26ccbeeff123c7cc911e30428 languageName: node linkType: hard @@ -9980,95 +5548,95 @@ __metadata: linkType: hard "@contentful/field-editor-single-line@npm:^1.3.10": - version: 1.3.10 - resolution: "@contentful/field-editor-single-line@npm:1.3.10" + version: 1.4.9 + resolution: "@contentful/field-editor-single-line@npm:1.4.9" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 15f17ea01fb0facd7c211ac54720296c3d9405269b4af4c5b6117353e5103ef0471f90ced27b657d5f77548d7cdf3f82d9a3346709158f412bef1b0724fa1671 + checksum: 637fad2556eb4d0f7da85f90ff225ef5f7be5eed43d43755ad8be36aa358f8d480659e5dc62dff4dcb326ce512a6d704b27acbece240e842496bc38273ef474f languageName: node linkType: hard "@contentful/field-editor-slug@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-slug@npm:1.4.8" + version: 1.5.8 + resolution: "@contentful/field-editor-slug@npm:1.5.8" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-icons": ^4.1.0 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 "@types/speakingurl": ^13.0.2 emotion: ^10.0.17 lodash: ^4.17.15 - speakingurl: ^13.0.0 - use-debounce: ^7.0.0 + speakingurl: ^14.0.1 + use-debounce: ^10.0.0 peerDependencies: - "@contentful/app-sdk": ^4.17.1 + "@contentful/app-sdk": ^4.29.0 react: ">=16.8.0" - checksum: cb8c5d295e3d9a13ed24c4a8c889826b92cf135f618d2026e8deb036dd58a6aba70f24bf382b2eab2e815232f368f1d6499c0f8c388c2da3a4b561e8b10e3338 + checksum: 6f9feabbb72de60c5abc09228dd345e42c72312d1a16ccc427e4868e8e6cacf6774e26ab9ed4e56e9a705c19c1e4c97c209f034ae966f0717c1005c84cd99115 languageName: node linkType: hard "@contentful/field-editor-tags@npm:^1.4.8": - version: 1.4.8 - resolution: "@contentful/field-editor-tags@npm:1.4.8" + version: 1.4.24 + resolution: "@contentful/field-editor-tags@npm:1.4.24" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-icons": ^4.1.0 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 "@dnd-kit/core": ^6.0.8 - "@dnd-kit/modifiers": ^6.0.1 - "@dnd-kit/sortable": ^7.0.2 + "@dnd-kit/modifiers": ^7.0.0 + "@dnd-kit/sortable": ^8.0.0 emotion: ^10.0.0 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 5f586701a6fcfabf0fd6fd990221c820048fe603f5afedc95a154d902146f93835684b012ef30deaee7fdd51206c4d623a7a4f495794f7870885397488a22cf3 + checksum: e92772e3f3065a83fd7b2dede7e2ba33d15841b98ec2628259a33510d1bfeee99d6422532c08f7c7637fa79bfd82d7af6f37558c5b831ee20783ecca0be09a3a languageName: node linkType: hard "@contentful/field-editor-url@npm:^1.3.10": - version: 1.3.10 - resolution: "@contentful/field-editor-url@npm:1.3.10" + version: 1.3.24 + resolution: "@contentful/field-editor-url@npm:1.3.24" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: a31be8cb5af8e9a8cbc5bd96e35035555ffa5f0797d63be1f8b3c50d218cbbb8506c99744756d004f696ceb4b45f05849a614bfce36bc664fff837c31fb66edd + checksum: 474a22ddba224d11aaf292d9b11cbfe307b66c101f8adfc68b24b09083c4316ec699ab5901d837d2570840a82860f657030767c96d499f860a6358d20ddbb0de languageName: node linkType: hard "@contentful/field-editor-validation-errors@npm:^1.3.10": - version: 1.3.10 - resolution: "@contentful/field-editor-validation-errors@npm:1.3.10" + version: 1.3.24 + resolution: "@contentful/field-editor-validation-errors@npm:1.3.24" dependencies: - "@contentful/f36-components": ^4.0.27 - "@contentful/f36-icons": ^4.1.0 - "@contentful/f36-tokens": ^4.0.0 - "@contentful/field-editor-shared": ^1.4.8 + "@contentful/f36-components": ^4.70.0 + "@contentful/f36-icons": ^4.29.0 + "@contentful/f36-tokens": ^4.0.5 + "@contentful/field-editor-shared": ^1.8.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8.0" - checksum: 7174dc5750773d0a45c51b7d47631d27f883874c9ca215fa9d72b938e62f3881f2abba48717581411000da0bdf0dd57690a88ed68c990aa2f56265c0cd3f930d + checksum: e87ff0dbd482d2c2ecbaff6732b7e585ea9141b60d99dff77a81e52f3e8f7282022d9794a204c22828fff716b5ae100337a5682094dce613c230ea6291bf4a56 languageName: node linkType: hard "@contentful/forma-36-fcss@npm:^0.3.1": - version: 0.3.1 - resolution: "@contentful/forma-36-fcss@npm:0.3.1" + version: 0.3.5 + resolution: "@contentful/forma-36-fcss@npm:0.3.5" dependencies: - "@contentful/forma-36-tokens": ^0.10.1 - checksum: 331588ea76950e6689621fb7e7bcbeb01f8da6f027ede3108563743a66ee80e93c0f2d3fe94ef4aa806e807dbd1280230bb30c75aaf351778571b9a087584090 + "@contentful/forma-36-tokens": ^0.11.2 + checksum: 3449528e7db0ec393ebb5aa6d9345e2e1ffbe33aabd40a199cd4e7bd75b1f81396614a9cfde8bdd86b9259fb83160472e763aa718006045f22609cba1b2fd96f languageName: node linkType: hard @@ -10096,13 +5664,27 @@ __metadata: languageName: node linkType: hard -"@contentful/forma-36-tokens@npm:0.10.1, @contentful/forma-36-tokens@npm:^0.10.1": +"@contentful/forma-36-tokens@npm:0.10.1": version: 0.10.1 resolution: "@contentful/forma-36-tokens@npm:0.10.1" checksum: f5d0da85c8737e23ba56b47a7c95a18459df7f8219f42371526cca7e598dc3c3048186e50513ba692412915307e52a49673b269e794c0b24bc41334cd950a921 languageName: node linkType: hard +"@contentful/forma-36-tokens@npm:^0.10.1": + version: 0.10.2 + resolution: "@contentful/forma-36-tokens@npm:0.10.2" + checksum: 6e409ac535de212616fe12b3b1fd939a2ccc892b3d71c977f87ab327ce3834b0838608ad38db56821843d18a917765c34b1c3aa99ed2555988ef7b5fcdb7d392 + languageName: node + linkType: hard + +"@contentful/forma-36-tokens@npm:^0.11.2": + version: 0.11.2 + resolution: "@contentful/forma-36-tokens@npm:0.11.2" + checksum: e7047e4030021c7be4362a8402bc6d399886592c27fd96ef0fabbf9cd2a6e5d386ff1ee1c112c9e56ce48683012a5352723cb966650fca9e19ffb2b7fd8568f4 + languageName: node + linkType: hard + "@contentful/mimetype@npm:^1.4.0": version: 1.4.45 resolution: "@contentful/mimetype@npm:1.4.45" @@ -10113,11 +5695,11 @@ __metadata: linkType: hard "@contentful/mimetype@npm:^2.2.29": - version: 2.3.0 - resolution: "@contentful/mimetype@npm:2.3.0" + version: 2.4.1 + resolution: "@contentful/mimetype@npm:2.4.1" dependencies: lodash: ^4.17.20 - checksum: 3e3ebe550d92a4cb1c05e4fd617ae4fbe39c30aaba8a6cc8cc101768a981727bc65c149c9dd5a4a866d215942db8d15d4ce954367517474e845e9f92a9537d8c + checksum: d2a133980be10a5d9e022221a49a0683c9d60965052bd03279d3530be5abc6ecf9353eb93ce503e45d90892d7f4d7ad0cbe6be0bd5737d85e526f4a85bdb85c4 languageName: node linkType: hard @@ -10180,11 +5762,11 @@ __metadata: linkType: hard "@contentful/rich-text-plain-text-renderer@npm:^16.0.4": - version: 16.0.13 - resolution: "@contentful/rich-text-plain-text-renderer@npm:16.0.13" + version: 16.2.10 + resolution: "@contentful/rich-text-plain-text-renderer@npm:16.2.10" dependencies: - "@contentful/rich-text-types": ^16.3.5 - checksum: 91ab01f1fd840c480334abb930b0193193b1152ef15a9acffe6fde1c8ae42bf9102a01be12f8d54db6dc70c9c99e75cbfb85653604d33fe2616bf58c5417db2d + "@contentful/rich-text-types": ^16.8.5 + checksum: 9be244bdfe7f717c173ef447441cb4afd77ab2421805f03035e5139b003719a5f71b197ab0da8c234920e8eb3e87119486a2510afe31d244fc823b21cb87ae32 languageName: node linkType: hard @@ -10200,31 +5782,31 @@ __metadata: languageName: node linkType: hard -"@contentful/rich-text-types@npm:16.2.0, @contentful/rich-text-types@npm:^16.2.0": +"@contentful/rich-text-types@npm:16.2.0": version: 16.2.0 resolution: "@contentful/rich-text-types@npm:16.2.0" checksum: ec9390201e7e7c1419b61efee12845169665b336fe866132515f61ed7ab6753a997d1336b13cb2962eb48db01deef4a5a035e929344eec41f1b58227d78ecff9 languageName: node linkType: hard -"@contentful/rich-text-types@npm:16.3.0": - version: 16.3.0 - resolution: "@contentful/rich-text-types@npm:16.3.0" - checksum: 86d5a0bcc84804beb750d94cd9ed9a590c3811bf57e10e6c4b25403bbdb85c8a9bc6d336fe98e561b252c5010527398bd21c6548ffdc289bce9e01898bcdc59c +"@contentful/rich-text-types@npm:16.7.0": + version: 16.7.0 + resolution: "@contentful/rich-text-types@npm:16.7.0" + checksum: 70e1c98a00e802e9d49cb1fa1f743470ac15882c5f7663547bb649111dfe9bc1659505677bfbc0bde33033bf1dd7d187bb59db435222bb93d4505cdb6619c941 languageName: node linkType: hard "@contentful/rich-text-types@npm:^15.12.1": - version: 15.12.1 - resolution: "@contentful/rich-text-types@npm:15.12.1" - checksum: 2a0f7b2e39f04dcf00847a61b8497fe8849033180adc76102aed1fa84db9ce0523c9b2321b7949cfa2c0ed7b698d727c44d6be3cd720d5687aeff147e1db085b + version: 15.15.1 + resolution: "@contentful/rich-text-types@npm:15.15.1" + checksum: a8391e03a794fb72358e1ccc41e437c17581145e375859d6299c9132813fc3bdfeae9e558720a51857d3ab58588f13b09ff7a5a9d6ba0d2f822d4142b2ccf3ab languageName: node linkType: hard -"@contentful/rich-text-types@npm:^16.3.0, @contentful/rich-text-types@npm:^16.3.5": - version: 16.3.5 - resolution: "@contentful/rich-text-types@npm:16.3.5" - checksum: 51e438c868ae4dcae8e33a65ca9a5f025e2c208951c279663de1d2278e20ced4b6213fa9ae8306cc9c49b1bdbf62477e11542b78e6657c7dab98af3d7dbc00c0 +"@contentful/rich-text-types@npm:^16.2.0, @contentful/rich-text-types@npm:^16.3.0, @contentful/rich-text-types@npm:^16.6.1, @contentful/rich-text-types@npm:^16.8.5": + version: 16.8.5 + resolution: "@contentful/rich-text-types@npm:16.8.5" + checksum: 60f8bd00ccd87d5d2199b5c2e93aa3638b291e66bd69d4bca3fc85e3f820e96c5ab6b8d9362678424aff06f83e41dfef76c4e49a12bf766d915a9a493cd24dbb languageName: node linkType: hard @@ -10238,8 +5820,8 @@ __metadata: linkType: hard "@cypress/request@npm:^3.0.0": - version: 3.0.1 - resolution: "@cypress/request@npm:3.0.1" + version: 3.0.5 + resolution: "@cypress/request@npm:3.0.5" dependencies: aws-sign2: ~0.7.0 aws4: ^1.8.0 @@ -10247,19 +5829,19 @@ __metadata: combined-stream: ~1.0.6 extend: ~3.0.2 forever-agent: ~0.6.1 - form-data: ~2.3.2 - http-signature: ~1.3.6 + form-data: ~4.0.0 + http-signature: ~1.4.0 is-typedarray: ~1.0.0 isstream: ~0.1.2 json-stringify-safe: ~5.0.1 mime-types: ~2.1.19 performance-now: ^2.1.0 - qs: 6.10.4 + qs: 6.13.0 safe-buffer: ^5.1.2 tough-cookie: ^4.1.3 tunnel-agent: ^0.6.0 uuid: ^8.3.2 - checksum: 7175522ebdbe30e3c37973e204c437c23ce659e58d5939466615bddcd58d778f3a8ea40f087b965ae8b8138ea8d102b729c6eb18c6324f121f3778f4a2e8e727 + checksum: 7272c2c7c24c230bb976765e0ff18528f8fe995fdbe9ddf85ddec3ec12f744729130a17ad41fb91c99e733b8a1c07ce5d2553e115c66ac6e84c039117dd29680 languageName: node linkType: hard @@ -10274,13 +5856,13 @@ __metadata: linkType: hard "@dabh/diagnostics@npm:^2.0.2": - version: 2.0.2 - resolution: "@dabh/diagnostics@npm:2.0.2" + version: 2.0.3 + resolution: "@dabh/diagnostics@npm:2.0.3" dependencies: colorspace: 1.1.x enabled: 2.0.x kuler: ^2.0.0 - checksum: 4d95cc31249a840b6cc3dba3dc4345a9295265413456068a0d07b69fa0ec6a5a5bc2c39e56ec04c6509ac1f4d9c17fc80baaaddd5caa1abcdd3aaeffe2b63cec + checksum: 4879600c55c8315a0fb85fbb19057bad1adc08f0a080a8cb4e2b63f723c379bfc4283b68123a2b078d367b327dd8df12fcb27464efe791addc0a48b9df6d79a1 languageName: node linkType: hard @@ -10381,9 +5963,9 @@ __metadata: linkType: hard "@datadog/sketches-js@npm:^2.1.0": - version: 2.1.0 - resolution: "@datadog/sketches-js@npm:2.1.0" - checksum: 7980eb6a36a53c3c532f9712dfadae8fb7b626bf4e418bb7e252020e2e6cc5690e2c17057d0b462719364239df502d44487f8b50ac9c5c6923f006658e376131 + version: 2.1.1 + resolution: "@datadog/sketches-js@npm:2.1.1" + checksum: 795170bb227af48fb54490fb5c252ae7a40aa088dc2cb7cf87c86fadc616b41fd3e35fd7e8418983396d72a9da6bf6259137e2a33c3d97e534eeb300185fd0c2 languageName: node linkType: hard @@ -10394,10 +5976,10 @@ __metadata: languageName: node linkType: hard -"@discoveryjs/natural-compare@npm:^1.0.0": - version: 1.0.0 - resolution: "@discoveryjs/natural-compare@npm:1.0.0" - checksum: 5100d7b94811ad33b2c153cd8e3e5099817854c5aa700dd58ceb813224d5484ae698f2e841998ef0cad4c0ad09b094bab31745d7bbe3a84581957bb077e024c2 +"@discoveryjs/natural-compare@npm:^1.1.0": + version: 1.1.0 + resolution: "@discoveryjs/natural-compare@npm:1.1.0" + checksum: c9a965da2422efc74f6fd6feac5dfb858261a1bf0f54de6b14a3affe80d81d949d475f6959a54ca978fcda965e1933abb78840ddb03e690e59a27e06f77f1f2b languageName: node linkType: hard @@ -10439,7 +6021,20 @@ __metadata: languageName: node linkType: hard -"@dnd-kit/sortable@npm:8.0.0": +"@dnd-kit/modifiers@npm:^7.0.0": + version: 7.0.0 + resolution: "@dnd-kit/modifiers@npm:7.0.0" + dependencies: + "@dnd-kit/utilities": ^3.2.2 + tslib: ^2.0.0 + peerDependencies: + "@dnd-kit/core": ^6.1.0 + react: ">=16.8.0" + checksum: 176f76a552a2692a205f7fe647c836aa7ded7f0fdc3370407f3633c153139fe838cb85e59cbc3b156377cc8fe3fb7b72af15b97ed3de15cec904eae35f0c36e6 + languageName: node + linkType: hard + +"@dnd-kit/sortable@npm:8.0.0, @dnd-kit/sortable@npm:^8.0.0": version: 8.0.0 resolution: "@dnd-kit/sortable@npm:8.0.0" dependencies: @@ -10498,22 +6093,22 @@ __metadata: languageName: node linkType: hard -"@emotion/babel-plugin@npm:^11.11.0": - version: 11.11.0 - resolution: "@emotion/babel-plugin@npm:11.11.0" +"@emotion/babel-plugin@npm:^11.12.0": + version: 11.12.0 + resolution: "@emotion/babel-plugin@npm:11.12.0" dependencies: "@babel/helper-module-imports": ^7.16.7 "@babel/runtime": ^7.18.3 - "@emotion/hash": ^0.9.1 - "@emotion/memoize": ^0.8.1 - "@emotion/serialize": ^1.1.2 + "@emotion/hash": ^0.9.2 + "@emotion/memoize": ^0.9.0 + "@emotion/serialize": ^1.2.0 babel-plugin-macros: ^3.1.0 convert-source-map: ^1.5.0 escape-string-regexp: ^4.0.0 find-root: ^1.1.0 source-map: ^0.5.7 stylis: 4.2.0 - checksum: 6b363edccc10290f7a23242c06f88e451b5feb2ab94152b18bb8883033db5934fb0e421e2d67d09907c13837c21218a3ac28c51707778a54d6cd3706c0c2f3f9 + checksum: b5d4b3dfe97e6763794a42b5c3a027a560caa1aa6dcaf05c18e5969691368dd08245c077bad7397dcc720b53d29caeaaec1888121e68cfd9ab02ff52f6fef662 languageName: node linkType: hard @@ -10529,16 +6124,16 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.4.0": - version: 11.11.0 - resolution: "@emotion/cache@npm:11.11.0" +"@emotion/cache@npm:^11.13.0, @emotion/cache@npm:^11.4.0": + version: 11.13.1 + resolution: "@emotion/cache@npm:11.13.1" dependencies: - "@emotion/memoize": ^0.8.1 - "@emotion/sheet": ^1.2.2 - "@emotion/utils": ^1.2.1 - "@emotion/weak-memoize": ^0.3.1 + "@emotion/memoize": ^0.9.0 + "@emotion/sheet": ^1.4.0 + "@emotion/utils": ^1.4.0 + "@emotion/weak-memoize": ^0.4.0 stylis: 4.2.0 - checksum: 8eb1dc22beaa20c21a2e04c284d5a2630a018a9d51fb190e52de348c8d27f4e8ca4bbab003d68b4f6cd9cc1c569ca747a997797e0f76d6c734a660dc29decf08 + checksum: 94b161786a03a08a1e30257478fad9a9be1ac8585ddca0c6410d7411fd474fc8b0d6d1167d7d15bdb012d1fd8a1220ac2bbc79501ad9b292b83c17da0874d7de languageName: node linkType: hard @@ -10576,10 +6171,10 @@ __metadata: languageName: node linkType: hard -"@emotion/hash@npm:^0.9.1": - version: 0.9.1 - resolution: "@emotion/hash@npm:0.9.1" - checksum: 716e17e48bf9047bf9383982c071de49f2615310fb4e986738931776f5a823bc1f29c84501abe0d3df91a3803c80122d24e28b57351bca9e01356ebb33d89876 +"@emotion/hash@npm:^0.9.0, @emotion/hash@npm:^0.9.2": + version: 0.9.2 + resolution: "@emotion/hash@npm:0.9.2" + checksum: 379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387 languageName: node linkType: hard @@ -10601,21 +6196,12 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.1.0": - version: 1.1.2 - resolution: "@emotion/is-prop-valid@npm:1.1.2" - dependencies: - "@emotion/memoize": ^0.7.4 - checksum: 58b1f2d429a589f8f5bc2c33a8732cbb7bbcb17131a103511ef9a94ac754d7eeb53d627f947da480cd977f9d419fd92e244991680292f3287204159652745707 - languageName: node - linkType: hard - -"@emotion/is-prop-valid@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/is-prop-valid@npm:1.2.0" +"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0": + version: 1.3.1 + resolution: "@emotion/is-prop-valid@npm:1.3.1" dependencies: - "@emotion/memoize": ^0.8.0 - checksum: cc7a19850a4c5b24f1514665289442c8c641709e6f7711067ad550e05df331da0692a16148e85eda6f47e31b3261b64d74c5e25194d053223be16231f969d633 + "@emotion/memoize": ^0.9.0 + checksum: fe6549d54f389e1a17cb02d832af7ee85fb6ea126fc18d02ca47216e8ff19332c1983f4a0ba68602cfcd3b325ffd4ebf0b2d0c6270f1e7e6fe3fca4ba7741e1a languageName: node linkType: hard @@ -10626,20 +6212,6 @@ __metadata: languageName: node linkType: hard -"@emotion/memoize@npm:^0.7.4": - version: 0.7.5 - resolution: "@emotion/memoize@npm:0.7.5" - checksum: 83da8d4a7649a92c72f960817692bc6be13cc13e107b9f7e878d63766525ed4402881bfeb3cda61145c050281e7e260f114a0a2870515527346f2ef896b915b3 - languageName: node - linkType: hard - -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 - languageName: node - linkType: hard - "@emotion/memoize@npm:^0.8.1": version: 0.8.1 resolution: "@emotion/memoize@npm:0.8.1" @@ -10647,24 +6219,31 @@ __metadata: languageName: node linkType: hard +"@emotion/memoize@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/memoize@npm:0.9.0" + checksum: 038132359397348e378c593a773b1148cd0cf0a2285ffd067a0f63447b945f5278860d9de718f906a74c7c940ba1783ac2ca18f1c06a307b01cc0e3944e783b1 + languageName: node + linkType: hard + "@emotion/react@npm:^11.8.1": - version: 11.11.1 - resolution: "@emotion/react@npm:11.11.1" + version: 11.13.3 + resolution: "@emotion/react@npm:11.13.3" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.11.0 - "@emotion/cache": ^11.11.0 - "@emotion/serialize": ^1.1.2 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 - "@emotion/utils": ^1.2.1 - "@emotion/weak-memoize": ^0.3.1 + "@emotion/babel-plugin": ^11.12.0 + "@emotion/cache": ^11.13.0 + "@emotion/serialize": ^1.3.1 + "@emotion/use-insertion-effect-with-fallbacks": ^1.1.0 + "@emotion/utils": ^1.4.0 + "@emotion/weak-memoize": ^0.4.0 hoist-non-react-statics: ^3.3.1 peerDependencies: react: ">=16.8.0" peerDependenciesMeta: "@types/react": optional: true - checksum: aec3c36650f5f0d3d4445ff44d73dd88712b1609645b6af3e6d08049cfbc51f1785fe13dea1a1d4ab1b0800d68f2339ab11e459687180362b1ef98863155aae5 + checksum: 0b58374bf28de914b49881f0060acfb908989869ebab63a2287773fc5e91a39f15552632b03d376c3e9835c5b4f23a5ebac8b0963b29af164d46c0a77ac928f0 languageName: node linkType: hard @@ -10681,16 +6260,16 @@ __metadata: languageName: node linkType: hard -"@emotion/serialize@npm:^1.1.2": - version: 1.1.2 - resolution: "@emotion/serialize@npm:1.1.2" +"@emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.1": + version: 1.3.2 + resolution: "@emotion/serialize@npm:1.3.2" dependencies: - "@emotion/hash": ^0.9.1 - "@emotion/memoize": ^0.8.1 - "@emotion/unitless": ^0.8.1 - "@emotion/utils": ^1.2.1 + "@emotion/hash": ^0.9.2 + "@emotion/memoize": ^0.9.0 + "@emotion/unitless": ^0.10.0 + "@emotion/utils": ^1.4.1 csstype: ^3.0.2 - checksum: 413c352e657f1b5e27ea6437b3ef7dcc3860669b7ae17fd5c18bfbd44e033af1acc56b64d252284a813ca4f3b3e1b0841c42d3fb08e02d2df56fd3cd63d72986 + checksum: 8051bafe32459e1aecf716cdb66a22b090060806104cca89d4e664893b56878d3e9bb94a4657df9b7b3fd183700a9be72f7144c959ddcbd3cf7b330206919237 languageName: node linkType: hard @@ -10701,10 +6280,10 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.2": - version: 1.2.2 - resolution: "@emotion/sheet@npm:1.2.2" - checksum: d973273c9c15f1c291ca2269728bf044bd3e92a67bca87943fa9ec6c3cd2b034f9a6bfe95ef1b5d983351d128c75b547b43ff196a00a3875f7e1d269793cecfe +"@emotion/sheet@npm:^1.4.0": + version: 1.4.0 + resolution: "@emotion/sheet@npm:1.4.0" + checksum: eeb1212e3289db8e083e72e7e401cd6d1a84deece87e9ce184f7b96b9b5dbd6f070a89057255a6ff14d9865c3ce31f27c39248a053e4cdd875540359042586b4 languageName: node linkType: hard @@ -10722,19 +6301,26 @@ __metadata: languageName: node linkType: hard -"@emotion/unitless@npm:0.8.1, @emotion/unitless@npm:^0.8.1": +"@emotion/unitless@npm:0.8.1": version: 0.8.1 resolution: "@emotion/unitless@npm:0.8.1" checksum: 385e21d184d27853bb350999471f00e1429fa4e83182f46cd2c164985999d9b46d558dc8b9cc89975cb337831ce50c31ac2f33b15502e85c299892e67e7b4a88 languageName: node linkType: hard -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0, @emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": - version: 1.0.1 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" +"@emotion/unitless@npm:^0.10.0": + version: 0.10.0 + resolution: "@emotion/unitless@npm:0.10.0" + checksum: d79346df31a933e6d33518e92636afeb603ce043f3857d0a39a2ac78a09ef0be8bedff40130930cb25df1beeee12d96ee38613963886fa377c681a89970b787c + languageName: node + linkType: hard + +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0, @emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": + version: 1.1.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0" peerDependencies: react: ">=16.8.0" - checksum: 700b6e5bbb37a9231f203bb3af11295eed01d73b2293abece0bc2a2237015e944d7b5114d4887ad9a79776504aa51ed2a8b0ddbc117c54495dd01a6b22f93786 + checksum: 63665191773b27de66807c53b90091ef0d10d5161381f62726cfceecfe1d8c944f18594b8021805fc81575b64246fd5ab9c75d60efabec92f940c1c410530949 languageName: node linkType: hard @@ -10745,10 +6331,10 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/utils@npm:1.2.1" - checksum: e0b44be0705b56b079c55faff93952150be69e79b660ae70ddd5b6e09fc40eb1319654315a9f34bb479d7f4ec94be6068c061abbb9e18b9778ae180ad5d97c73 +"@emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": + version: 1.4.1 + resolution: "@emotion/utils@npm:1.4.1" + checksum: 088f6844c735981f53c84a76101cf261422301e7895cb37fea6a47e7950247ffa8ca174ca2a15d9b29a47f0fa831b432017ca7683bccbb5cfd78dda82743d856 languageName: node linkType: hard @@ -10759,10 +6345,24 @@ __metadata: languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.1": - version: 0.3.1 - resolution: "@emotion/weak-memoize@npm:0.3.1" - checksum: b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 +"@emotion/weak-memoize@npm:^0.4.0": + version: 0.4.0 + resolution: "@emotion/weak-memoize@npm:0.4.0" + checksum: db5da0e89bd752c78b6bd65a1e56231f0abebe2f71c0bd8fc47dff96408f7065b02e214080f99924f6a3bfe7ee15afc48dad999d76df86b39b16e513f7a94f52 + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/aix-ppc64@npm:0.21.5" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/aix-ppc64@npm:0.23.1" + conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -10780,6 +6380,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm64@npm:0.21.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/android-arm64@npm:0.23.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-arm@npm:0.16.17" @@ -10794,6 +6408,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm@npm:0.21.5" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/android-arm@npm:0.23.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-x64@npm:0.16.17" @@ -10808,6 +6436,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-x64@npm:0.21.5" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/android-x64@npm:0.23.1" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/darwin-arm64@npm:0.16.17" @@ -10822,6 +6464,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-arm64@npm:0.21.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/darwin-arm64@npm:0.23.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/darwin-x64@npm:0.16.17" @@ -10836,6 +6492,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-x64@npm:0.21.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/darwin-x64@npm:0.23.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/freebsd-arm64@npm:0.16.17" @@ -10850,6 +6520,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-arm64@npm:0.21.5" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/freebsd-arm64@npm:0.23.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/freebsd-x64@npm:0.16.17" @@ -10864,6 +6548,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-x64@npm:0.21.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/freebsd-x64@npm:0.23.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-arm64@npm:0.16.17" @@ -10878,6 +6576,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm64@npm:0.21.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-arm64@npm:0.23.1" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-arm@npm:0.16.17" @@ -10892,6 +6604,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm@npm:0.21.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-arm@npm:0.23.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-ia32@npm:0.16.17" @@ -10906,6 +6632,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ia32@npm:0.21.5" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-ia32@npm:0.23.1" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-loong64@npm:0.16.17" @@ -10920,6 +6660,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-loong64@npm:0.21.5" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-loong64@npm:0.23.1" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-mips64el@npm:0.16.17" @@ -10934,6 +6688,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-mips64el@npm:0.21.5" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-mips64el@npm:0.23.1" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-ppc64@npm:0.16.17" @@ -10948,6 +6716,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ppc64@npm:0.21.5" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-ppc64@npm:0.23.1" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-riscv64@npm:0.16.17" @@ -10962,6 +6744,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-riscv64@npm:0.21.5" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-riscv64@npm:0.23.1" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-s390x@npm:0.16.17" @@ -10976,6 +6772,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-s390x@npm:0.21.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-s390x@npm:0.23.1" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-x64@npm:0.16.17" @@ -10990,6 +6800,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-x64@npm:0.21.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-x64@npm:0.23.1" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/netbsd-x64@npm:0.16.17" @@ -11004,6 +6828,27 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/netbsd-x64@npm:0.21.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/netbsd-x64@npm:0.23.1" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/openbsd-arm64@npm:0.23.1" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/openbsd-x64@npm:0.16.17" @@ -11018,6 +6863,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/openbsd-x64@npm:0.21.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/openbsd-x64@npm:0.23.1" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/sunos-x64@npm:0.16.17" @@ -11032,6 +6891,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/sunos-x64@npm:0.21.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/sunos-x64@npm:0.23.1" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-arm64@npm:0.16.17" @@ -11046,6 +6919,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-arm64@npm:0.21.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/win32-arm64@npm:0.23.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-ia32@npm:0.16.17" @@ -11060,6 +6947,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-ia32@npm:0.21.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/win32-ia32@npm:0.23.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-x64@npm:0.16.17" @@ -11074,6 +6975,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-x64@npm:0.21.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/win32-x64@npm:0.23.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -11085,17 +7000,10 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0": - version: 4.10.1 - resolution: "@eslint-community/regexpp@npm:4.10.1" - checksum: 1e04bc366fb8152c9266258cd25e3fded102f1d212a9476928e3cb98c48be645df6d676728d1c596053992fb9134879fe0de23c9460035b342cceb22d3af1776 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.6.1": - version: 4.8.0 - resolution: "@eslint-community/regexpp@npm:4.8.0" - checksum: 601e6d033d556e98e8c929905bef335f20d7389762812df4d0f709d9b4d2631610dda975fb272e23b5b68e24a163b3851b114c8080a0a19fb4c141a1eff6305b +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.11.1 + resolution: "@eslint-community/regexpp@npm:4.11.1" + checksum: 6986685529d30e33c2640973c3d8e7ddd31bef3cc8cb10ad54ddc1dea12680779a2c23a45562aa1462c488137a3570e672d122fac7da22d82294382d915cec70 languageName: node linkType: hard @@ -11124,25 +7032,18 @@ __metadata: linkType: hard "@exodus/schemasafe@npm:^1.0.0-rc.2": - version: 1.0.0-rc.3 - resolution: "@exodus/schemasafe@npm:1.0.0-rc.3" - checksum: 872a1c674e7d16f8eb66d92bde5111f0d1e4e1339e7373b326e4e7d2dc8ddcd4b8de26013b3e694dfd639bf94c5be20f2875891ac0d94543d096783efdd5bee9 + version: 1.3.0 + resolution: "@exodus/schemasafe@npm:1.3.0" + checksum: 5fa00ce28d142dc39e07d8080e7967e77125bfdf59af31975b7e6395ca5265e2a8540ab7d8cc89abf8c0a483560f8dbb2994761115c995d2c473ab4b6ec74dba languageName: node linkType: hard "@expo/bunyan@npm:^4.0.0": - version: 4.0.0 - resolution: "@expo/bunyan@npm:4.0.0" + version: 4.0.1 + resolution: "@expo/bunyan@npm:4.0.1" dependencies: - mv: ~2 - safe-json-stringify: ~1 uuid: ^8.0.0 - dependenciesMeta: - mv: - optional: true - safe-json-stringify: - optional: true - checksum: dce0b66fde1c11f987bc31b9afd9b714c4295ba750780ee8861ab8a912b37a2b9dd2ab9c9fbf3a85f3adbe66c6cd85e45bc76fa37c98ee23a7db3ad24601c296 + checksum: 7a503cf202ef26bd151ef31be63fdac113a27edd1e5703aee96326c3b7bea349e09e706a18854c251b313814a05673d5041eaea4c018667d9afa2c583d821af7 languageName: node linkType: hard @@ -11243,7 +7144,7 @@ __metadata: languageName: node linkType: hard -"@expo/config-plugins@npm:8.0.8, @expo/config-plugins@npm:~8.0.8": +"@expo/config-plugins@npm:8.0.8": version: 8.0.8 resolution: "@expo/config-plugins@npm:8.0.8" dependencies: @@ -11289,11 +7190,11 @@ __metadata: languageName: node linkType: hard -"@expo/config-plugins@npm:~8.0.0": - version: 8.0.5 - resolution: "@expo/config-plugins@npm:8.0.5" +"@expo/config-plugins@npm:~8.0.8": + version: 8.0.10 + resolution: "@expo/config-plugins@npm:8.0.10" dependencies: - "@expo/config-types": ^51.0.0-unreleased + "@expo/config-types": ^51.0.3 "@expo/json-file": ~8.3.0 "@expo/plist": ^0.1.0 "@expo/sdk-runtime-versions": ^1.0.0 @@ -11308,7 +7209,7 @@ __metadata: slugify: ^1.6.6 xcode: ^3.0.1 xml2js: 0.6.0 - checksum: 9d80d788a74b59cdc8c4528671dc7adce3e37d4105346a84e77c42ac24247268a27b5742eec5953cd5f7e04df2f463c0a8e1b108d15f3ffa062976abd21e349d + checksum: 16dd818c6f52e5d0298e28a37b6fa3a6c3c5dd070c851642760f62a062058192a4b91f73e57cf9f5e1a3be4ffe9c48c46a965366756c108531b915f214dd2182 languageName: node linkType: hard @@ -11319,10 +7220,10 @@ __metadata: languageName: node linkType: hard -"@expo/config-types@npm:^51.0.0-unreleased": - version: 51.0.1 - resolution: "@expo/config-types@npm:51.0.1" - checksum: 9aac70b6713d621409c57922b927aa3933d53ffc4cb10856ccdd4adb76fc242e90aa0dd2d7505a096f31be54e7c060e11958ca69436df4266825b8b4313f2109 +"@expo/config-types@npm:^51.0.0-unreleased, @expo/config-types@npm:^51.0.3": + version: 51.0.3 + resolution: "@expo/config-types@npm:51.0.3" + checksum: c46def814a5e0d6c8358b9767a89f51239f4f1c3b4a5305ffcfa1a86e4360ac40de54a65f7c6e787be7656e4144c99a050e98b600a1edd3d6e8e20c83d8e107b languageName: node linkType: hard @@ -11346,12 +7247,12 @@ __metadata: linkType: hard "@expo/config@npm:~9.0.0, @expo/config@npm:~9.0.0-beta.0": - version: 9.0.2 - resolution: "@expo/config@npm:9.0.2" + version: 9.0.4 + resolution: "@expo/config@npm:9.0.4" dependencies: "@babel/code-frame": ~7.10.4 - "@expo/config-plugins": ~8.0.0 - "@expo/config-types": ^51.0.0-unreleased + "@expo/config-plugins": ~8.0.8 + "@expo/config-types": ^51.0.3 "@expo/json-file": ^8.3.0 getenv: ^1.0.0 glob: 7.1.6 @@ -11360,28 +7261,27 @@ __metadata: semver: ^7.6.0 slugify: ^1.3.4 sucrase: 3.34.0 - checksum: 3f452fc4f1970e21bab2f4473e389c4c6cebf5b2b0a0ec884219c17422f12442945727cbef861951fe06909006348a445370c1cfa5d2b11027c44b626d3d9a39 + checksum: a00b2690a1abbfd83f419c436dcff8590d1e8c8c0a598339ae30da57aedde49564e5bd5f71edf4d634ebe079c4008a64eb9850ee4cf69592a7506c71a36f3132 languageName: node linkType: hard "@expo/devcert@npm:^1.0.0": - version: 1.1.0 - resolution: "@expo/devcert@npm:1.1.0" + version: 1.1.4 + resolution: "@expo/devcert@npm:1.1.4" dependencies: application-config-path: ^0.1.0 command-exists: ^1.2.4 debug: ^3.1.0 eol: ^0.9.1 get-port: ^3.2.0 - glob: ^7.1.2 - lodash: ^4.17.4 + glob: ^10.4.2 + lodash: ^4.17.21 mkdirp: ^0.5.1 password-prompt: ^1.0.4 - rimraf: ^2.6.2 sudo-prompt: ^8.2.0 tmp: ^0.0.33 tslib: ^2.4.0 - checksum: bb99996d7fc31c5269afbd9ab43066090ea986006d14c8c393165f813d90c21ff9fc40f16b247778a7026714c2a743ce6e8b0df25e135711e991fa0bbfb3555b + checksum: a6bb5ba18d1d4fe5ebfa096f8d332f14bbe8bb942bc3650debf89fb68b5637bd5b7b22f9b28d5971965436bf83d442e843ac7e0e1e7408cce6e575b55c830b6d languageName: node linkType: hard @@ -11438,6 +7338,17 @@ __metadata: languageName: node linkType: hard +"@expo/json-file@npm:^9.0.0": + version: 9.0.0 + resolution: "@expo/json-file@npm:9.0.0" + dependencies: + "@babel/code-frame": ~7.10.4 + json5: ^2.2.3 + write-file-atomic: ^2.3.0 + checksum: 28a3db84a8a90eae901df14519f12d075dfd3ecd1502b07bc7c76b6c5445da0983c8d04651d71e2688722e915b56ab785a7372e23cc8e046e92f795fd36eb9d9 + languageName: node + linkType: hard + "@expo/metro-config@npm:0.18.10": version: 0.18.10 resolution: "@expo/metro-config@npm:0.18.10" @@ -11491,32 +7402,32 @@ __metadata: linkType: hard "@expo/osascript@npm:^2.0.31": - version: 2.0.33 - resolution: "@expo/osascript@npm:2.0.33" + version: 2.1.4 + resolution: "@expo/osascript@npm:2.1.4" dependencies: - "@expo/spawn-async": ^1.5.0 + "@expo/spawn-async": ^1.7.2 exec-async: ^2.2.0 - checksum: f1ae2e365ec82fcfefbdcd3ceb52da1b38c54e55a2ceb884ca06fb9259544c032b2f8133b803be152e86d79b8510fda8320811053894884819fa10b66268045d + checksum: d1b757abc83c3e0a2ba8d851bf596e2bf6d3fdbc83010df8afbb0b5e9318a5347f5af394147fb709fe529d75fc3c9749156389bf61213e71d6cc87366c1a8df7 languageName: node linkType: hard "@expo/package-manager@npm:^1.5.0": - version: 1.5.2 - resolution: "@expo/package-manager@npm:1.5.2" + version: 1.6.0 + resolution: "@expo/package-manager@npm:1.6.0" dependencies: - "@expo/json-file": ^8.3.0 + "@expo/json-file": ^9.0.0 "@expo/spawn-async": ^1.7.2 ansi-regex: ^5.0.0 chalk: ^4.0.0 find-up: ^5.0.0 - find-yarn-workspace-root: ~2.0.0 js-yaml: ^3.13.1 micromatch: ^4.0.2 - npm-package-arg: ^7.0.0 + npm-package-arg: ^11.0.0 ora: ^3.4.0 + resolve-workspace-root: ^2.0.0 split: ^1.0.1 sudo-prompt: 9.1.1 - checksum: 825e727106592bac98c82c69bf316b8b1ee20829f7f3e909cf374861b771cfa77d38b029f8b078341b2a9333004b4b90392f6f1a6a366c45ecf3f397798fb2a4 + checksum: 5afbf794c9f6352282de79bd6ca226f37da0f7d7b9ca250ee584f88cb0b3b9095a1f4448f9aff2d54fe6d1f1a0309d549e0aed5dc9bc66082fcd9e3966994e5d languageName: node linkType: hard @@ -11585,7 +7496,7 @@ __metadata: languageName: node linkType: hard -"@expo/spawn-async@npm:^1.5.0, @expo/spawn-async@npm:^1.7.2": +"@expo/spawn-async@npm:^1.7.2": version: 1.7.2 resolution: "@expo/spawn-async@npm:1.7.2" dependencies: @@ -11595,11 +7506,11 @@ __metadata: linkType: hard "@expo/vector-icons@npm:^14.0.0": - version: 14.0.2 - resolution: "@expo/vector-icons@npm:14.0.2" + version: 14.0.4 + resolution: "@expo/vector-icons@npm:14.0.4" dependencies: prop-types: ^15.8.1 - checksum: 49e27ff52eb138745313fa2c39863fb762230b0089b910d668d7f2c06b7e71a0249dc3a26bfc8725d07bdfaadab1dbcbce087b34dfc244b00a15fc02fe4866e2 + checksum: 31bd5d4e4e2f0b0620b7e8b55b0c5691875cf57c5737bd0ccef0017d0e7abee66352f3d66a58997b719bd0720cccf8f5119503c69fe1a30398747306ebefeb6e languageName: node linkType: hard @@ -11640,24 +7551,31 @@ __metadata: languageName: node linkType: hard -"@figspec/components@npm:^1.0.0": - version: 1.0.1 - resolution: "@figspec/components@npm:1.0.1" +"@fastify/busboy@npm:^2.0.0": + version: 2.1.1 + resolution: "@fastify/busboy@npm:2.1.1" + checksum: 42c32ef75e906c9a4809c1e1930a5ca6d4ddc8d138e1a8c8ba5ea07f997db32210617d23b2e4a85fe376316a41a1a0439fc6ff2dedf5126d96f45a9d80754fb2 + languageName: node + linkType: hard + +"@figspec/components@npm:^1.0.1": + version: 1.0.3 + resolution: "@figspec/components@npm:1.0.3" dependencies: lit: ^2.1.3 - checksum: db33333ad2c3925cc8264e24b4a7b7d0e3a477eaaebbff9033f78c3e2f3273e6c7dbdfb453ee16af6d1ab21d49c2c704882aabcb1a693d2cf627b1fa2494849b + checksum: 2afe175510ccb9f544a70607063e4c1dbc17b2804a81f39562b985684013e7382d00c87b4ae80187ba926e588ef6b378fbc22fcb89ff6424ebcb3f83dc1f8d72 languageName: node linkType: hard "@figspec/react@npm:^1.0.0": - version: 1.0.1 - resolution: "@figspec/react@npm:1.0.1" + version: 1.0.3 + resolution: "@figspec/react@npm:1.0.3" dependencies: - "@figspec/components": ^1.0.0 + "@figspec/components": ^1.0.1 "@lit-labs/react": ^1.0.2 peerDependencies: - react: ^16.14.0 || ^17.0.0 - checksum: 9810cab7b61613bf7412484b1be777b3af655ba0c4dddd66ce34520eac86c1260e3dd1bab5198a57042b017ce67be955defa844645952f405513a957e9ef31a8 + react: ^16.14.0 || ^17.0.0 || ^18.0.0 + checksum: 8cfc1be1d8b6aa089fb4a7461a46bc96cdd4ad40ee49b0dea46507221d6036a81644b732ed5be0e8047ef6436e776036bcf0a72db724f0f9358837270f4278cf languageName: node linkType: hard @@ -11675,51 +7593,51 @@ __metadata: languageName: node linkType: hard -"@firebase/component@npm:0.6.1": - version: 0.6.1 - resolution: "@firebase/component@npm:0.6.1" +"@firebase/component@npm:0.6.4": + version: 0.6.4 + resolution: "@firebase/component@npm:0.6.4" dependencies: - "@firebase/util": 1.9.0 + "@firebase/util": 1.9.3 tslib: ^2.1.0 - checksum: 7a30ab46f560a744433be118f0d4a7e29341c8a5d142ba71d04ad5d5ab0e2f79ff869a88e869593c83ceb28dd313c41fa70183e2855d3e000cd5c95a912c8a6b + checksum: 5d7006e4bc70508f16fe9297c351ca7eff29b59f7fd4cc99a6e28f93b62f422d0401d84b0ddc38a52f7125aa646c9a98d014a86afdd2c50caf178b1987f71ab6 languageName: node linkType: hard "@firebase/database-compat@npm:^0.3.0": - version: 0.3.1 - resolution: "@firebase/database-compat@npm:0.3.1" + version: 0.3.4 + resolution: "@firebase/database-compat@npm:0.3.4" dependencies: - "@firebase/component": 0.6.1 - "@firebase/database": 0.14.1 - "@firebase/database-types": 0.10.1 + "@firebase/component": 0.6.4 + "@firebase/database": 0.14.4 + "@firebase/database-types": 0.10.4 "@firebase/logger": 0.4.0 - "@firebase/util": 1.9.0 + "@firebase/util": 1.9.3 tslib: ^2.1.0 - checksum: df9d142dbbf7721490fe73aa87e8a4cce43f3a5ad9b01a7620a314ff9b54ed5a49a2c5943e93fdb225ec6c7c0a10ff901e72a58c8e7abab8f32f23dd1869168e + checksum: d5162718f052de9c1c4a6f82c9d42775a2f3dc84f86230a0471eb2c5c50f02837c1bc0be11805867efa2f0798f429443a5a3b9c8670ff34514516abce28ed3f8 languageName: node linkType: hard -"@firebase/database-types@npm:0.10.1, @firebase/database-types@npm:^0.10.0": - version: 0.10.1 - resolution: "@firebase/database-types@npm:0.10.1" +"@firebase/database-types@npm:0.10.4, @firebase/database-types@npm:^0.10.0": + version: 0.10.4 + resolution: "@firebase/database-types@npm:0.10.4" dependencies: "@firebase/app-types": 0.9.0 - "@firebase/util": 1.9.0 - checksum: 4cd43826844489bf352e02e24fd2d64cd5f12f17d0346c04f3e651c098bf787f5298d60718a05f2d4f5ba9a0a8b17067e8b70a90fcd54cfaa335760ed6acd0ab + "@firebase/util": 1.9.3 + checksum: 4fcecd212221eced0e84e4b4a3a069ed94cb9060da72472455dd509c4c490417e8929e390937d35e69a5629e4eb490c727bdc1e001ec8f43b097c0734d5715ad languageName: node linkType: hard -"@firebase/database@npm:0.14.1": - version: 0.14.1 - resolution: "@firebase/database@npm:0.14.1" +"@firebase/database@npm:0.14.4": + version: 0.14.4 + resolution: "@firebase/database@npm:0.14.4" dependencies: "@firebase/auth-interop-types": 0.2.1 - "@firebase/component": 0.6.1 + "@firebase/component": 0.6.4 "@firebase/logger": 0.4.0 - "@firebase/util": 1.9.0 + "@firebase/util": 1.9.3 faye-websocket: 0.11.4 tslib: ^2.1.0 - checksum: 92340f0bb0cf23fe7bc31c0a7f075f963b9bc480b8d626ec46b066eb2c5e2f40887e8a86f2b24b74017be0730cbd735d7ebb212531f364868b84db4078f61463 + checksum: cc2f520a6b92528589781a7c9d6cbd5409cff89c80d73690903a567ef91bf701d036ef872a1e3bd1797c5a85a64d9dcbf73618973360d3d76282464f06a3ff06 languageName: node linkType: hard @@ -11732,66 +7650,50 @@ __metadata: languageName: node linkType: hard -"@firebase/util@npm:1.9.0": - version: 1.9.0 - resolution: "@firebase/util@npm:1.9.0" +"@firebase/util@npm:1.9.3": + version: 1.9.3 + resolution: "@firebase/util@npm:1.9.3" dependencies: tslib: ^2.1.0 - checksum: f6fdc09ce29220d952c303e43e823bbc8fc301e0d4f953072416157c074fe30540fe6e099a0d70e2264b9cdfa2dea3dde5f1780d4fa9455c01ad9254534002f4 + checksum: b2dbd39229580df2075d102bc26a895eefdfb7ddc7bd71da6765f9ff4a61f5b67b6583e7e20676c56dc0e3f9379376fdef09a46b37b8d088b9de3eb0afbc066a languageName: node linkType: hard -"@floating-ui/core@npm:^1.3.1": - version: 1.3.1 - resolution: "@floating-ui/core@npm:1.3.1" - checksum: fe3b40fcaec95b0825c01a98330ae75b60c61c395ca012055a32f9c22ab97fde8ce1bd14fce3d242beb9dbe4564c90ce4a7a767851911d4215b9ec7721440e5b - languageName: node - linkType: hard - -"@floating-ui/core@npm:^1.4.1": - version: 1.4.1 - resolution: "@floating-ui/core@npm:1.4.1" - dependencies: - "@floating-ui/utils": ^0.1.1 - checksum: be4ab864fe17eeba5e205bd554c264b9a4895a57c573661bbf638357fa3108677fed7ba3269ec15b4da90e29274c9b626d5a15414e8d1fe691e210d02a03695c - languageName: node - linkType: hard - -"@floating-ui/dom@npm:^1.0.1": - version: 1.4.4 - resolution: "@floating-ui/dom@npm:1.4.4" +"@floating-ui/core@npm:^1.6.0": + version: 1.6.8 + resolution: "@floating-ui/core@npm:1.6.8" dependencies: - "@floating-ui/core": ^1.3.1 - checksum: e8e43c786e24f8f111a72d7d17c3a9563cab8eddf2a2b3dacc2785370a97313a8dda0f3470b2b2ef2d3b9d6f1fd706ccf786d9441e54e283ed47c90aa0c0b1e1 + "@floating-ui/utils": ^0.2.8 + checksum: 82faa6ea9d57e466779324e51308d6d49c098fb9d184a08d9bb7f4fad83f08cc070fc491f8d56f0cad44a16215fb43f9f829524288413e6c33afcb17303698de languageName: node linkType: hard -"@floating-ui/dom@npm:^1.5.1": - version: 1.5.2 - resolution: "@floating-ui/dom@npm:1.5.2" +"@floating-ui/dom@npm:^1.0.0, @floating-ui/dom@npm:^1.0.1": + version: 1.6.11 + resolution: "@floating-ui/dom@npm:1.6.11" dependencies: - "@floating-ui/core": ^1.4.1 - "@floating-ui/utils": ^0.1.1 - checksum: 3c71eed50bb22cec8f1f31750ad3d42b3b7b4b29dc6e4351100ff05a62445a5404abb71c733320f8376a8c5e78852e1cfba1b81e22bfc4ca0728f50ca8998dc5 + "@floating-ui/core": ^1.6.0 + "@floating-ui/utils": ^0.2.8 + checksum: d6413759abd06a541edfad829c45313f930310fe76a3322e74a00eb655e283db33fe3e65b5265c4072eb54db7447e11225acd355a9a02cabd1d1b0d5fc8fc21d languageName: node linkType: hard "@floating-ui/react-dom@npm:^2.0.0": - version: 2.0.2 - resolution: "@floating-ui/react-dom@npm:2.0.2" + version: 2.1.2 + resolution: "@floating-ui/react-dom@npm:2.1.2" dependencies: - "@floating-ui/dom": ^1.5.1 + "@floating-ui/dom": ^1.0.0 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 4797e1f7a19c1e531ed0d578ccdcbe58970743e5a480ba30424857fc953063f36d481f8c5d69248a8f1d521b739e94bf5e1ffb35506400dea3d914f166ed2f7f + checksum: 25bb031686e23062ed4222a8946e76b3f9021d40a48437bd747233c4964a766204b8a55f34fa8b259839af96e60db7c6e3714d81f1de06914294f90e86ffbc48 languageName: node linkType: hard -"@floating-ui/utils@npm:^0.1.1": - version: 0.1.2 - resolution: "@floating-ui/utils@npm:0.1.2" - checksum: 3e29fd3c69be2d27bb95ebe54129a6a29ea2d8112b2cbb568168cf2f1e787e6ed6305d743598469476bec28122b7ea3ea4b54a1a2d59d30dc4b4307391472299 +"@floating-ui/utils@npm:^0.2.8": + version: 0.2.8 + resolution: "@floating-ui/utils@npm:0.2.8" + checksum: deb98bba017c4e073c7ad5740d4dec33a4d3e0942d412e677ac0504f3dade15a68fc6fd164d43c93c0bb0bcc5dc5015c1f4080dfb1a6161140fe660624f7c875 languageName: node linkType: hard @@ -12165,14 +8067,14 @@ __metadata: linkType: hard "@google-cloud/firestore@npm:^6.4.0": - version: 6.4.2 - resolution: "@google-cloud/firestore@npm:6.4.2" + version: 6.8.0 + resolution: "@google-cloud/firestore@npm:6.8.0" dependencies: fast-deep-equal: ^3.1.1 functional-red-black-tree: ^1.0.1 - google-gax: ^3.5.2 - protobufjs: ^7.0.0 - checksum: c259f59905d4939f0b1fff2fdfa3db38a0436454af9e4a8939ea951ee700d5f801375ed090e77f610fbf3f02db1aeba9d70437eb6a8ca6f0ba2088c8964c58d0 + google-gax: ^3.5.7 + protobufjs: ^7.2.5 + checksum: e8e1fd7cc6fd688e771c3d2f62c2f33d23357e11ee03f6d2f2aeb0ea29378f8e62f2511936011b515bbeedf304b5e831e4f4a46b8905dbc421fe2fa521d2e43f languageName: node linkType: hard @@ -12201,8 +8103,8 @@ __metadata: linkType: hard "@google-cloud/storage@npm:^6.5.2": - version: 6.9.0 - resolution: "@google-cloud/storage@npm:6.9.0" + version: 6.12.0 + resolution: "@google-cloud/storage@npm:6.12.0" dependencies: "@google-cloud/paginator": ^3.0.7 "@google-cloud/projectify": ^3.0.0 @@ -12213,6 +8115,7 @@ __metadata: duplexify: ^4.0.0 ent: ^2.2.0 extend: ^3.0.2 + fast-xml-parser: ^4.2.2 gaxios: ^5.0.0 google-auth-library: ^8.0.1 mime: ^3.0.0 @@ -12221,16 +8124,14 @@ __metadata: retry-request: ^5.0.0 teeny-request: ^8.0.0 uuid: ^8.0.0 - checksum: 886b9aad6bd44901b22a6e77c6430bae0effc2137e6c18196d151db8b9690d80726ecc4b60ac1ba315372305010282de6b9845ef23eaa7351449d0193aac62cc + checksum: cfe44e3f4d1bacd8eeefa7885d261f421c4ff84e82abe50200b5b77e28322baf9cb67497872b9868b25b43b14197b1a155d5eb7b70afb39d3476fa4bdead3338 languageName: node linkType: hard -"@googlemaps/js-api-loader@npm:^1.7.0": - version: 1.16.6 - resolution: "@googlemaps/js-api-loader@npm:1.16.6" - dependencies: - fast-deep-equal: ^3.1.3 - checksum: 715640dfac073a706761c682bc142946ba0766926c610331411d25ba0aabf2089bcb2fdb28d7ee78b1a433647ccb5682c00a16312ee14e272fa2e27db7a16a9a +"@googlemaps/js-api-loader@npm:^1.13.8": + version: 1.16.8 + resolution: "@googlemaps/js-api-loader@npm:1.16.8" + checksum: 2f5e2ced6b83fb72f32bcfd32c85558dba967580025a53d593e5a8bb15f63eb866e4f55b86aa7f5810e1616554c02100081a9a217d16d25766e57a128b39e825 languageName: node linkType: hard @@ -12242,14 +8143,14 @@ __metadata: linkType: hard "@graphql-codegen/add@npm:^3.2.1": - version: 3.2.1 - resolution: "@graphql-codegen/add@npm:3.2.1" + version: 3.2.3 + resolution: "@graphql-codegen/add@npm:3.2.3" dependencies: - "@graphql-codegen/plugin-helpers": ^2.6.2 + "@graphql-codegen/plugin-helpers": ^3.1.1 tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 4f9c645a3cf4b6e64c8ea5cbaba95075df2f485e3fea5b2c369bcf898272d0a6665b3eb0b541dc57d3d8400b23610848c8348a469e472db1a1c558d61580dca0 + checksum: 98b1b17104b7e2fa82e9ed30e21160b02cce530d0ff72ce7794478677168ac6381a8d814cdd25d60b41b91b6446ebd592ba4820bd5ac138016f9097fa6ebc483 languageName: node linkType: hard @@ -12327,8 +8228,8 @@ __metadata: linkType: hard "@graphql-codegen/near-operation-file-preset@npm:^2.4.4": - version: 2.4.4 - resolution: "@graphql-codegen/near-operation-file-preset@npm:2.4.4" + version: 2.5.0 + resolution: "@graphql-codegen/near-operation-file-preset@npm:2.5.0" dependencies: "@graphql-codegen/add": ^3.2.1 "@graphql-codegen/plugin-helpers": ^2.7.2 @@ -12338,13 +8239,13 @@ __metadata: tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 224cf036b67abb3b7c5b288b6d289cd3fdcda51806b09d9022574b4e81bb8bec0f49875bb12a2e4cf289ad46d8f33f5c41676dc9edafb680c829df29e02fb85e + checksum: 4d66e1e3df6530d561b5bc1eb2a9341f96c1c77b3247fb4bb03e2694e2da73d64ec97249a9c3c47416e1eaca2f15b189ec108e19a599076b27f2088fcbf4daf8 languageName: node linkType: hard -"@graphql-codegen/plugin-helpers@npm:^2.6.2, @graphql-codegen/plugin-helpers@npm:^2.7.0": - version: 2.7.1 - resolution: "@graphql-codegen/plugin-helpers@npm:2.7.1" +"@graphql-codegen/plugin-helpers@npm:^2.6.2, @graphql-codegen/plugin-helpers@npm:^2.7.0, @graphql-codegen/plugin-helpers@npm:^2.7.2": + version: 2.7.2 + resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" dependencies: "@graphql-tools/utils": ^8.8.0 change-case-all: 1.0.14 @@ -12354,43 +8255,43 @@ __metadata: tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: fffb801ccccee36d729c134caa79cc5eb6a1b3717253646cd1759e2dd0e754bccb6b0b6b5341a649fd18794f8b0b970776b71907d5a7b15048521ea9eb283180 + checksum: 66e0d507ad5db60b67092ebf7632d464d56ab446ac8fd87c293e00d9016944912d8cf9199e3e026b0a9247a50f50c4118a44f49e13675db64211652cd6259b05 languageName: node linkType: hard -"@graphql-codegen/plugin-helpers@npm:^2.7.2": - version: 2.7.2 - resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" +"@graphql-codegen/plugin-helpers@npm:^3.1.1, @graphql-codegen/plugin-helpers@npm:^3.1.2": + version: 3.1.2 + resolution: "@graphql-codegen/plugin-helpers@npm:3.1.2" dependencies: - "@graphql-tools/utils": ^8.8.0 - change-case-all: 1.0.14 + "@graphql-tools/utils": ^9.0.0 + change-case-all: 1.0.15 common-tags: 1.8.2 import-from: 4.0.0 lodash: ~4.17.0 tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 66e0d507ad5db60b67092ebf7632d464d56ab446ac8fd87c293e00d9016944912d8cf9199e3e026b0a9247a50f50c4118a44f49e13675db64211652cd6259b05 + checksum: 4d0c615738570681b5ffd3c07305a35d6aa3e5fd87c9199c0a670b95529ab865b1df978ce584d5b415107a567ac484e56a48db129a6d1d2eb8a254fbd3260e39 languageName: node linkType: hard "@graphql-codegen/plugin-helpers@npm:^5.0.0": - version: 5.0.1 - resolution: "@graphql-codegen/plugin-helpers@npm:5.0.1" + version: 5.0.4 + resolution: "@graphql-codegen/plugin-helpers@npm:5.0.4" dependencies: "@graphql-tools/utils": ^10.0.0 change-case-all: 1.0.15 common-tags: 1.8.2 import-from: 4.0.0 lodash: ~4.17.0 - tslib: ~2.5.0 + tslib: ~2.6.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 97faa8f87f41292bb5263097b1613733faf07fd0ff375ac89438aa0f2cd91e163d088b63dcafcdb6d66beaba8f7d13005bb980793e71979e9ad61fdfd206a730 + checksum: 0f0272afbbc79e665fb23bb823721587470e12f77aba39426e2524386ccbb6dec8d42c0ccaf8e0b95fcda030c83cb4e6302bce3c3f7b2c1ed50c33a40619fcd0 languageName: node linkType: hard -"@graphql-codegen/schema-ast@npm:2.5.1, @graphql-codegen/schema-ast@npm:^2.5.1": +"@graphql-codegen/schema-ast@npm:2.5.1": version: 2.5.1 resolution: "@graphql-codegen/schema-ast@npm:2.5.1" dependencies: @@ -12403,6 +8304,19 @@ __metadata: languageName: node linkType: hard +"@graphql-codegen/schema-ast@npm:^2.5.1, @graphql-codegen/schema-ast@npm:^2.6.1": + version: 2.6.1 + resolution: "@graphql-codegen/schema-ast@npm:2.6.1" + dependencies: + "@graphql-codegen/plugin-helpers": ^3.1.2 + "@graphql-tools/utils": ^9.0.0 + tslib: ~2.4.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: f44338ac66e6a1f6238c33cdf65778bb467fe5a93767988135cb4e112d3be4d3c7e8aeeffe323754e8d6b0cbc5a52cb71452bfc42a15bc7031ebaa9b3d5da676 + languageName: node + linkType: hard + "@graphql-codegen/typescript-document-nodes@npm:4.0.1": version: 4.0.1 resolution: "@graphql-codegen/typescript-document-nodes@npm:4.0.1" @@ -12480,17 +8394,17 @@ __metadata: linkType: hard "@graphql-codegen/typescript@npm:^2.7.3": - version: 2.7.4 - resolution: "@graphql-codegen/typescript@npm:2.7.4" + version: 2.8.8 + resolution: "@graphql-codegen/typescript@npm:2.8.8" dependencies: - "@graphql-codegen/plugin-helpers": ^2.6.2 - "@graphql-codegen/schema-ast": ^2.5.1 - "@graphql-codegen/visitor-plugin-common": 2.12.2 + "@graphql-codegen/plugin-helpers": ^3.1.2 + "@graphql-codegen/schema-ast": ^2.6.1 + "@graphql-codegen/visitor-plugin-common": 2.13.8 auto-bind: ~4.0.0 tslib: ~2.4.0 peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 91ce69d19eead417d4ba07a59f4be19fd50a28c4bd3800f8cd69efa7e2afb05cea6e15b8d58086b67c366970a6c58f0c5179a46a9f07c7f135f642a9d6af3583 + checksum: ebc338bc88fd239b9ef70d900778791af2c68f7a0fa074d870cc5fcaee3ea182dfce8a1f366f53bcd5e81f95bb9e26e00e1b41e6b2ad3305cf7e6f44bf57d649 languageName: node linkType: hard @@ -12514,11 +8428,11 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/visitor-plugin-common@npm:2.12.2": - version: 2.12.2 - resolution: "@graphql-codegen/visitor-plugin-common@npm:2.12.2" +"@graphql-codegen/visitor-plugin-common@npm:2.13.1": + version: 2.13.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" dependencies: - "@graphql-codegen/plugin-helpers": ^2.6.2 + "@graphql-codegen/plugin-helpers": ^2.7.2 "@graphql-tools/optimize": ^1.3.0 "@graphql-tools/relay-operation-optimizer": ^6.5.0 "@graphql-tools/utils": ^8.8.0 @@ -12530,27 +8444,27 @@ __metadata: tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 325b6a2bbd297c7beff00963f4f375d2990956287d4e4976864875340728abf1bdaa9891bbd9fc2625d783689f2655befd212a03c521d3661e16dcea0e0a6de4 + checksum: 0c329aa6e435602f2f6c1569ec2091b7850f58cc5dca7ac763c38c82588545ec1110c1de587f5f3949b11ff96f94401d1e63e329607d78424583b276fd08f1ae languageName: node linkType: hard -"@graphql-codegen/visitor-plugin-common@npm:2.13.1": - version: 2.13.1 - resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" +"@graphql-codegen/visitor-plugin-common@npm:2.13.8": + version: 2.13.8 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.8" dependencies: - "@graphql-codegen/plugin-helpers": ^2.7.2 + "@graphql-codegen/plugin-helpers": ^3.1.2 "@graphql-tools/optimize": ^1.3.0 "@graphql-tools/relay-operation-optimizer": ^6.5.0 - "@graphql-tools/utils": ^8.8.0 + "@graphql-tools/utils": ^9.0.0 auto-bind: ~4.0.0 - change-case-all: 1.0.14 + change-case-all: 1.0.15 dependency-graph: ^0.11.0 graphql-tag: ^2.11.0 parse-filepath: ^1.0.2 tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 0c329aa6e435602f2f6c1569ec2091b7850f58cc5dca7ac763c38c82588545ec1110c1de587f5f3949b11ff96f94401d1e63e329607d78424583b276fd08f1ae + checksum: 4ca8074bfb84a7c6f88216c2b327a600b57da35eae9b659656592c48f197e44004dcc5c2ab500a5d3a94e2753f47903e5e113162c8a362de08e307e564d416a5 languageName: node linkType: hard @@ -12575,61 +8489,127 @@ __metadata: linkType: hard "@graphql-tools/apollo-engine-loader@npm:^7.3.6": - version: 7.3.13 - resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.13" + version: 7.3.26 + resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.26" dependencies: - "@ardatan/sync-fetch": 0.0.1 - "@graphql-tools/utils": 8.12.0 - "@whatwg-node/fetch": ^0.4.0 + "@ardatan/sync-fetch": ^0.0.1 + "@graphql-tools/utils": ^9.2.1 + "@whatwg-node/fetch": ^0.8.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: a3a11a00e039d382d4af0dc3f90efe1a54ca0686ec88ffd7aeaba7e1e26fbe1d2cf3f70e607d07b5db8974384cc22df6350a9fb0962cc0c5735b256486447bcc + checksum: 2dd0324cd677c0a399a3cda6f155e4367ac38c8f6ec8a36c50931e97ce93d70f716f95575bcfda33d5a5b3c75f0ba04c73b82d22613f1a89e3c31965f576ae22 languageName: node linkType: hard -"@graphql-tools/batch-execute@npm:8.5.6": - version: 8.5.6 - resolution: "@graphql-tools/batch-execute@npm:8.5.6" +"@graphql-tools/batch-execute@npm:^8.5.22": + version: 8.5.22 + resolution: "@graphql-tools/batch-execute@npm:8.5.22" dependencies: - "@graphql-tools/utils": 8.12.0 - dataloader: 2.1.0 + "@graphql-tools/utils": ^9.2.1 + dataloader: ^2.2.2 tslib: ^2.4.0 - value-or-promise: 1.0.11 + value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: a5afd4adfc70ba3694c194a5bbdaf425d66fedc4b83f0f41347dd1f2bc2c61fc98d4c36badc246aced7baa068de2aab336b6cb4b8b91f006a40060cfc4186959 + checksum: 4f7f7ba104737a57d0bd5b2b38b8dbf24d6db9e3ce8f8d1b8c3109702305c212b54b7642853c1584b12ce3a9136286b600076e94861c0bd1d29a218f44401224 languageName: node linkType: hard "@graphql-tools/code-file-loader@npm:^7.3.1": - version: 7.3.6 - resolution: "@graphql-tools/code-file-loader@npm:7.3.6" + version: 7.3.23 + resolution: "@graphql-tools/code-file-loader@npm:7.3.23" dependencies: - "@graphql-tools/graphql-tag-pluck": 7.3.6 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/graphql-tag-pluck": 7.5.2 + "@graphql-tools/utils": ^9.2.1 globby: ^11.0.3 tslib: ^2.4.0 unixify: ^1.0.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: a63b0c512d1a6b56fc6aebc933a779d8b155aedc060ee37fcdcacd909341024db9546d5f93b49ad676ee348e3303b048c9ef190263f3747e016f818a04c49133 + checksum: fb1dfa807b9d5798936c7fe31cf5356412d9b5a25a08d5952b607921637afbe26555cb662cf97f82dfdf47ed8e7c2a42f527238fb2defd3be4505e15fb6027c3 languageName: node linkType: hard -"@graphql-tools/delegate@npm:9.0.8": - version: 9.0.8 - resolution: "@graphql-tools/delegate@npm:9.0.8" +"@graphql-tools/delegate@npm:^9.0.31": + version: 9.0.35 + resolution: "@graphql-tools/delegate@npm:9.0.35" dependencies: - "@graphql-tools/batch-execute": 8.5.6 - "@graphql-tools/schema": 9.0.4 - "@graphql-tools/utils": 8.12.0 - dataloader: 2.1.0 - tslib: ~2.4.0 - value-or-promise: 1.0.11 + "@graphql-tools/batch-execute": ^8.5.22 + "@graphql-tools/executor": ^0.0.20 + "@graphql-tools/schema": ^9.0.19 + "@graphql-tools/utils": ^9.2.1 + dataloader: ^2.2.2 + tslib: ^2.5.0 + value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 0edc09362457d072d2da12ecbfbb48cf71fa0472d1a625575cd63a35413d3c5e7c014fc05da812327694d83ae116bbc64fe01250bf4bedf2401d14e5bfced069 + checksum: 4edd827d1767dc33ea1e28f8ceb30f82e1cdb47a9390cecc0a45f51594c6df28d11b2c2eec083e27fa45a76451c8490f2f826effc2dff9977de3fe1b66b2aadb + languageName: node + linkType: hard + +"@graphql-tools/executor-graphql-ws@npm:^0.0.14": + version: 0.0.14 + resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.14" + dependencies: + "@graphql-tools/utils": ^9.2.1 + "@repeaterjs/repeater": 3.0.4 + "@types/ws": ^8.0.0 + graphql-ws: 5.12.1 + isomorphic-ws: 5.0.0 + tslib: ^2.4.0 + ws: 8.13.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: c18f3ca3d70098017ff71045ae13de1d88c8dc0954af0d7a389aebdc831c82b678f9cf9b50ed065d5262d59a558b4f9be3b7b04e5002bae47a503493fc0b7542 + languageName: node + linkType: hard + +"@graphql-tools/executor-http@npm:^0.1.7, @graphql-tools/executor-http@npm:^0.1.9": + version: 0.1.10 + resolution: "@graphql-tools/executor-http@npm:0.1.10" + dependencies: + "@graphql-tools/utils": ^9.2.1 + "@repeaterjs/repeater": ^3.0.4 + "@whatwg-node/fetch": ^0.8.1 + dset: ^3.1.2 + extract-files: ^11.0.0 + meros: ^1.2.1 + tslib: ^2.4.0 + value-or-promise: ^1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: d5cb0b9f8deb2335cac3b0e8fa5a63e827fafd35d1dae88f4ae201f3ce0531be95a8ec3b0b7fbe618a66ad5838e3c574cf8f965c3d71b49b7dbcd7ba2e67019d + languageName: node + linkType: hard + +"@graphql-tools/executor-legacy-ws@npm:^0.0.11": + version: 0.0.11 + resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.11" + dependencies: + "@graphql-tools/utils": ^9.2.1 + "@types/ws": ^8.0.0 + isomorphic-ws: 5.0.0 + tslib: ^2.4.0 + ws: 8.13.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: f9dd5dc87537c6adb3e1fb8e083944cfd9b2a9b34016f705b7b99105e744f11290f23aee726bb05ae32411c7d07a1ebc7b5bd35445053fc44877979f0ce4cd2e + languageName: node + linkType: hard + +"@graphql-tools/executor@npm:^0.0.20": + version: 0.0.20 + resolution: "@graphql-tools/executor@npm:0.0.20" + dependencies: + "@graphql-tools/utils": ^9.2.1 + "@graphql-typed-document-node/core": 3.2.0 + "@repeaterjs/repeater": ^3.0.4 + tslib: ^2.4.0 + value-or-promise: ^1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 5390800be4a346eb7d37d51458cd9cf4a24e01014fe1b392682ea4bce2b27fc1d5c7aebcb3dafaeefcb0a89e5b307fc2060816533b61d6796e0fa0e5e1f10959 languageName: node linkType: hard @@ -12650,51 +8630,38 @@ __metadata: linkType: hard "@graphql-tools/github-loader@npm:^7.3.6": - version: 7.3.13 - resolution: "@graphql-tools/github-loader@npm:7.3.13" + version: 7.3.28 + resolution: "@graphql-tools/github-loader@npm:7.3.28" dependencies: - "@ardatan/sync-fetch": 0.0.1 - "@graphql-tools/graphql-tag-pluck": 7.3.6 - "@graphql-tools/utils": 8.12.0 - "@whatwg-node/fetch": ^0.4.0 + "@ardatan/sync-fetch": ^0.0.1 + "@graphql-tools/executor-http": ^0.1.9 + "@graphql-tools/graphql-tag-pluck": ^7.4.6 + "@graphql-tools/utils": ^9.2.1 + "@whatwg-node/fetch": ^0.8.0 tslib: ^2.4.0 + value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8a76e89df9cd2f9fa2a4cdfe3912e1857e634104152403d51b0395eb65aea656a08c1b44236ab93d6157eae0074d5428b9f3404edb4569b88c5668b6f9006763 + checksum: 1ef168d72b0615e5e05408794fef549e841c399a12b7074ae4764fee28d145aebdf50ba573f0695159edced626f5757b7825be2b246c437bbdf5457aeff13e5b languageName: node linkType: hard "@graphql-tools/graphql-file-loader@npm:^7.3.7, @graphql-tools/graphql-file-loader@npm:^7.5.0": - version: 7.5.5 - resolution: "@graphql-tools/graphql-file-loader@npm:7.5.5" + version: 7.5.17 + resolution: "@graphql-tools/graphql-file-loader@npm:7.5.17" dependencies: - "@graphql-tools/import": 6.7.6 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/import": 6.7.18 + "@graphql-tools/utils": ^9.2.1 globby: ^11.0.3 tslib: ^2.4.0 unixify: ^1.0.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: cb711db9d8f62e678a842d7e3edee6b1a0b6f8654be5a6b9c4483f776a3102843ecdcb173c2f9b530883586b48ac1eb8195aeebc9a42d26d92c2d2fa0b74c972 - languageName: node - linkType: hard - -"@graphql-tools/graphql-tag-pluck@npm:7.3.6": - version: 7.3.6 - resolution: "@graphql-tools/graphql-tag-pluck@npm:7.3.6" - dependencies: - "@babel/parser": ^7.16.8 - "@babel/traverse": ^7.16.8 - "@babel/types": ^7.16.8 - "@graphql-tools/utils": 8.12.0 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 3543a41a3b84dc014ce5d0824c8275b8d8592e55bbcd8f955a0968a6b9c00c11d82d90b6bbb533f2d09f94e07d10ec70d53696470ee32fad00d055767909d164 + checksum: f0d6768fbb03fe6c5a0a2c1fe78e2fa8c009b13d6c40a7153c61e7266348192386310ace85dd46a96fa4317a4a37c02d1959fd2a0c6eaa521446234506147cdc languageName: node linkType: hard -"@graphql-tools/graphql-tag-pluck@npm:7.5.2": +"@graphql-tools/graphql-tag-pluck@npm:7.5.2, @graphql-tools/graphql-tag-pluck@npm:^7.4.6": version: 7.5.2 resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.2" dependencies: @@ -12710,44 +8677,44 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/import@npm:6.7.6": - version: 6.7.6 - resolution: "@graphql-tools/import@npm:6.7.6" +"@graphql-tools/import@npm:6.7.18": + version: 6.7.18 + resolution: "@graphql-tools/import@npm:6.7.18" dependencies: - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/utils": ^9.2.1 resolve-from: 5.0.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 83b63dd7b45905627a7296d84102538c9450df90ad58edff601a6ebec2fd2dbae3d3d368f9f5335c62adf2ac772dcebf675f037373a5a60ef2c847a3216ff902 + checksum: 15c32c5937899a25f8c2b0dee98ca1e1245ba85a56a8a59d52c2c78693da2e95fb27f235ef95c3a576bd96843d53541b6d90931a0032c0011dea871d53b5027a languageName: node linkType: hard "@graphql-tools/json-file-loader@npm:^7.3.7, @graphql-tools/json-file-loader@npm:^7.4.1": - version: 7.4.6 - resolution: "@graphql-tools/json-file-loader@npm:7.4.6" + version: 7.4.18 + resolution: "@graphql-tools/json-file-loader@npm:7.4.18" dependencies: - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/utils": ^9.2.1 globby: ^11.0.3 tslib: ^2.4.0 unixify: ^1.0.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 53b1ae5cc88d50c9104f637316e0578422d85fd4edcd16e4ee7a8eb4405e61470ff3e6fb9b623678dc1c83c3cf219da8257ce69981b714328dc57e6c430bff29 + checksum: e6571fb10bdf29c4e5aabdc9c87d32be0d1e493a701886fc9c24efee2e0cef0df898a9a48c449f0465a89da816e9f2cf7a51e9476fbe8b7d0aefd3c18e934234 languageName: node linkType: hard "@graphql-tools/load@npm:^7.5.5, @graphql-tools/load@npm:^7.7.1": - version: 7.7.7 - resolution: "@graphql-tools/load@npm:7.7.7" + version: 7.8.14 + resolution: "@graphql-tools/load@npm:7.8.14" dependencies: - "@graphql-tools/schema": 9.0.4 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/schema": ^9.0.18 + "@graphql-tools/utils": ^9.2.1 p-limit: 3.1.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 59590c07c029b5b2427116408f91cb1f5ab359bdf0a9314a8d31cedc540c235d1daddbbc8ab6369db1ea7e654cf52ca9d4f185058290acc8c5c3183d1bb68ef7 + checksum: 12ffd6460da3d996d614faa3ced99f526247334bb671301b15ed1d2153314a8813f734d863086d154891ac4b35da090668f0ea7702508d19f8dd0f72413b585c languageName: node linkType: hard @@ -12787,40 +8754,40 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/merge@npm:8.3.6, @graphql-tools/merge@npm:^8.2.6": - version: 8.3.6 - resolution: "@graphql-tools/merge@npm:8.3.6" +"@graphql-tools/merge@npm:^8.2.6, @graphql-tools/merge@npm:^8.4.1": + version: 8.4.2 + resolution: "@graphql-tools/merge@npm:8.4.2" dependencies: - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/utils": ^9.2.1 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 3e45ebff0dce9524e72c4af1d2b9799c16515c1236290e07cd68fb2226c4e54734e2444d89a64b387b7ba991d15c6f948fdfc20c77a74b1d24babddd865ff32a + checksum: 96d57a3e810055a2883bf9d3450e88082da207ffb1406222c9fa954e47bac4a328696785fdb7eec95a030d5f75504f7b4c6484c94f248cee13e6ad25aca70c75 languageName: node linkType: hard "@graphql-tools/mock@npm:^8.1.2": - version: 8.7.6 - resolution: "@graphql-tools/mock@npm:8.7.6" + version: 8.7.20 + resolution: "@graphql-tools/mock@npm:8.7.20" dependencies: - "@graphql-tools/schema": 9.0.4 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/schema": ^9.0.18 + "@graphql-tools/utils": ^9.2.1 fast-json-stable-stringify: ^2.1.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 41fd32f9aa83cc0da2166bd1c27d779ccf4f87c290e3acc5bfeb6f77218f29ebe425843d00e34485a17347966e9d258e98cb27c01e2a95820ae68523ef5f8078 + checksum: 86eb3590236260769ab6cd8e88c44a90318ca647521ee4a593ecf74f28f864fbcfb0572b064660b27fee6b6a5701c57c5a360b252ba0656fb790ee0a929c939e languageName: node linkType: hard "@graphql-tools/optimize@npm:^1.3.0": - version: 1.3.1 - resolution: "@graphql-tools/optimize@npm:1.3.1" + version: 1.4.0 + resolution: "@graphql-tools/optimize@npm:1.4.0" dependencies: tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 4eed041bc3199a70ab426eeb10bc4af65f18fa0c5907613aec236fd7e14918d0f895e12489df6ff501562415eef64c99777a3ca6f6a4ee3c796b68e7cb778342 + checksum: bccbc596f2007ae706ee948e900f3174aa80ef043e8ae3467f735a10df0b31873bafdd20c0ef09b662171363a31e2d0859adb362bbf762da00245f8e9fd501b0 languageName: node linkType: hard @@ -12836,57 +8803,56 @@ __metadata: linkType: hard "@graphql-tools/prisma-loader@npm:^7.2.7": - version: 7.2.24 - resolution: "@graphql-tools/prisma-loader@npm:7.2.24" + version: 7.2.72 + resolution: "@graphql-tools/prisma-loader@npm:7.2.72" dependencies: - "@graphql-tools/url-loader": 7.16.4 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/url-loader": ^7.17.18 + "@graphql-tools/utils": ^9.2.1 "@types/js-yaml": ^4.0.0 "@types/json-stable-stringify": ^1.0.32 - "@types/jsonwebtoken": ^8.5.0 + "@whatwg-node/fetch": ^0.8.2 chalk: ^4.1.0 debug: ^4.3.1 dotenv: ^16.0.0 - graphql-request: ^5.0.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - isomorphic-fetch: ^3.0.0 + graphql-request: ^6.0.0 + http-proxy-agent: ^6.0.0 + https-proxy-agent: ^6.0.0 + jose: ^4.11.4 js-yaml: ^4.0.0 json-stable-stringify: ^1.0.1 - jsonwebtoken: ^8.5.1 lodash: ^4.17.20 scuid: ^1.1.0 tslib: ^2.4.0 yaml-ast-parser: ^0.0.43 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: e0012dc2be252f1bb7a29fb3aaf4c60240b639465d352c41ac926b53f2247e8c2c951c3496eb2659d870383b26f2e79b85a33e7de9139aaca3356e239a1db515 + checksum: 949506d2306ef54a8c68152b93c574148ad03c9bf3f5042fbd6aff0e6fe77c8afa3bc3ffceea239afd4ebda5cc0bd3076b5dc939645b838c472c958c75f1deaf languageName: node linkType: hard "@graphql-tools/relay-operation-optimizer@npm:^6.5.0": - version: 6.5.6 - resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.6" + version: 6.5.18 + resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.18" dependencies: "@ardatan/relay-compiler": 12.0.0 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/utils": ^9.2.1 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 12efc88c775221a333a97a517bec160b449778cf3de5377048a81d213b0f67d82c0f2de631ba31e3443355650317ea8af5a2e107a00517dbf73d8e8720e797fb + checksum: 56a8c7e6a0bf5fa4d5106276f69c08630a95659eb4300249b3dd28e2057ebb7e7815c51beadf98acdbf695cad5937988d16a3d01ca74fc120c76892968fbeb2b languageName: node linkType: hard "@graphql-tools/relay-operation-optimizer@npm:^7.0.0": - version: 7.0.0 - resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.0" + version: 7.0.2 + resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.2" dependencies: "@ardatan/relay-compiler": 12.0.0 - "@graphql-tools/utils": ^10.0.0 + "@graphql-tools/utils": ^10.5.5 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 6eb7e6d3ed6e72eb2146b8272b20e0acba154fffdac518f894ceaee320cc7ef0284117c11a93dff85b8bbee1019b982a9fdd20ecf65923d998b48730d296a56d + checksum: 6eff45ec213d193d72bb1dc67d43ababba0909ddd4700360c26a82668d5e190cebf96940f6337c117a35350aed31b2bd7c9296f2dcd4df2687dbec30e6cdcebe languageName: node linkType: hard @@ -12904,55 +8870,54 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/schema@npm:9.0.4, @graphql-tools/schema@npm:^9.0.0": - version: 9.0.4 - resolution: "@graphql-tools/schema@npm:9.0.4" +"@graphql-tools/schema@npm:^8.0.0": + version: 8.5.1 + resolution: "@graphql-tools/schema@npm:8.5.1" dependencies: - "@graphql-tools/merge": 8.3.6 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/merge": 8.3.1 + "@graphql-tools/utils": 8.9.0 tslib: ^2.4.0 value-or-promise: 1.0.11 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 0644ba225ff7fb03c6fb7f026b6a77a4ac5dd14fd10bb562ea0072bfe0258620fd4789b851b0b97007db8754d0b7d88a1061bb98bacc679b22e2eb7706e79e0e + checksum: 91363cd4371e347af40ef66f7d903b5d4f5998bfaec9214768e6a795136ef6372f9f225e05e18daacd929e23695811f15e791c6cbe082bf5b5d03b16b1f874f8 languageName: node linkType: hard -"@graphql-tools/schema@npm:^8.0.0": - version: 8.5.1 - resolution: "@graphql-tools/schema@npm:8.5.1" +"@graphql-tools/schema@npm:^9.0.0, @graphql-tools/schema@npm:^9.0.18, @graphql-tools/schema@npm:^9.0.19": + version: 9.0.19 + resolution: "@graphql-tools/schema@npm:9.0.19" dependencies: - "@graphql-tools/merge": 8.3.1 - "@graphql-tools/utils": 8.9.0 + "@graphql-tools/merge": ^8.4.1 + "@graphql-tools/utils": ^9.2.1 tslib: ^2.4.0 - value-or-promise: 1.0.11 + value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 91363cd4371e347af40ef66f7d903b5d4f5998bfaec9214768e6a795136ef6372f9f225e05e18daacd929e23695811f15e791c6cbe082bf5b5d03b16b1f874f8 + checksum: 1be91f61bf4be0c1c9aa640a6ad5b58328d5434d15e78ba73a47263420939db6741ad6723dece4611257e7e1e56518e116b76513a3014305d3f52d67aafb62fb languageName: node linkType: hard -"@graphql-tools/url-loader@npm:7.16.4, @graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.9.7": - version: 7.16.4 - resolution: "@graphql-tools/url-loader@npm:7.16.4" +"@graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.17.18, @graphql-tools/url-loader@npm:^7.9.7": + version: 7.17.18 + resolution: "@graphql-tools/url-loader@npm:7.17.18" dependencies: - "@ardatan/sync-fetch": 0.0.1 - "@graphql-tools/delegate": 9.0.8 - "@graphql-tools/utils": 8.12.0 - "@graphql-tools/wrap": 9.2.3 + "@ardatan/sync-fetch": ^0.0.1 + "@graphql-tools/delegate": ^9.0.31 + "@graphql-tools/executor-graphql-ws": ^0.0.14 + "@graphql-tools/executor-http": ^0.1.7 + "@graphql-tools/executor-legacy-ws": ^0.0.11 + "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/wrap": ^9.4.2 "@types/ws": ^8.0.0 - "@whatwg-node/fetch": ^0.4.0 - dset: ^3.1.2 - extract-files: ^11.0.0 - graphql-ws: ^5.4.1 + "@whatwg-node/fetch": ^0.8.0 isomorphic-ws: ^5.0.0 - meros: ^1.1.4 tslib: ^2.4.0 value-or-promise: ^1.0.11 - ws: ^8.3.0 + ws: ^8.12.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8ecf96e59f25930ceeb39560aacb2778cd1a31404bec2872b423c4a5a61b222af244c9bc29117098e983cf2b2ede5d27675ac2a9a16b4aacc0209a4908361400 + checksum: e4deccaa4b333a91022e9a19594e6c696c4463c94f091893c8d056e4090b2c8c5e5036b0e7bcce79f0c4c0ad2f0e6f3c8d170a765f0d5a2ba29965bee096f355 languageName: node linkType: hard @@ -12967,17 +8932,6 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/utils@npm:8.12.0, @graphql-tools/utils@npm:^8.6.5, @graphql-tools/utils@npm:^8.8.0, @graphql-tools/utils@npm:^8.9.0": - version: 8.12.0 - resolution: "@graphql-tools/utils@npm:8.12.0" - dependencies: - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 24edc6ba3bcfa9a4c1d1d37117c3f96d847beed9638325083c32c6ec9674729dc89fc8cc389d317ae5d9dba22e91443bd9788f1dc8de91a1b6f1e592112bd48f - languageName: node - linkType: hard - "@graphql-tools/utils@npm:8.8.0": version: 8.8.0 resolution: "@graphql-tools/utils@npm:8.8.0" @@ -13000,21 +8954,32 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/utils@npm:^10.0.0": - version: 10.0.10 - resolution: "@graphql-tools/utils@npm:10.0.10" +"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.5.5": + version: 10.5.5 + resolution: "@graphql-tools/utils@npm:10.5.5" dependencies: "@graphql-typed-document-node/core": ^3.1.1 - cross-inspect: 1.0.0 + cross-inspect: 1.0.1 dset: ^3.1.2 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 2b23dcf131901eec196b6b2d2a6c57c66b4b2c21eb1a1e22b9bd6e6cb53b9cf9ca630cca633398ae4a6e4aed781ed6fdaf2d93e990836c15ffec44ac1de50aa1 + checksum: bbc5ea58c286e1a9f82876570f98b29079e224a8b3568ca8df4720de8c790e1cb8772182d1411af99d6ac749b9082810e02f21f0813dc43c4d0438ef9e04e885 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^8.8.0, @graphql-tools/utils@npm:^8.9.0": + version: 8.13.1 + resolution: "@graphql-tools/utils@npm:8.13.1" + dependencies: + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: ff04fdeb29e9ac596ea53386cd5b23cd741bb14c1997c6b0ba3c34ca165bd82b528a355e8c8e2ba726eb39e833ba9cbb0851ba0addb8c6d367089a1145bf9a49 languageName: node linkType: hard -"@graphql-tools/utils@npm:^9.2.1": +"@graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.2.1": version: 9.2.1 resolution: "@graphql-tools/utils@npm:9.2.1" dependencies: @@ -13026,22 +8991,22 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/wrap@npm:9.2.3": - version: 9.2.3 - resolution: "@graphql-tools/wrap@npm:9.2.3" +"@graphql-tools/wrap@npm:^9.4.2": + version: 9.4.2 + resolution: "@graphql-tools/wrap@npm:9.4.2" dependencies: - "@graphql-tools/delegate": 9.0.8 - "@graphql-tools/schema": 9.0.4 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/delegate": ^9.0.31 + "@graphql-tools/schema": ^9.0.18 + "@graphql-tools/utils": ^9.2.1 tslib: ^2.4.0 - value-or-promise: 1.0.11 + value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: dcb130685d1206d5401d3dafe3461aef77cd508f5fe76a26a1fa403f0294fd9fa325e15ad61f7ef46b5aa73040e0ca46d0cf54103b897fe943acf452b1fa8fb9 + checksum: 294d529a4b8e90cceaaa691e3b67d932626ad59a53260166e0281506a4e1a2b9d1c018984dffd0edcf518555baee23beaa8665167226da014d4d0b58c37cd744 languageName: node linkType: hard -"@graphql-typed-document-node/core@npm:^3.1.0": +"@graphql-typed-document-node/core@npm:3.2.0, @graphql-typed-document-node/core@npm:^3.1.0, @graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": version: 3.2.0 resolution: "@graphql-typed-document-node/core@npm:3.2.0" peerDependencies: @@ -13050,37 +9015,34 @@ __metadata: languageName: node linkType: hard -"@graphql-typed-document-node/core@npm:^3.1.1": - version: 3.1.1 - resolution: "@graphql-typed-document-node/core@npm:3.1.1" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 87ff4cee308f1075f4472b80f9f9409667979940f8f701e87f0aa35ce5cf104d94b41258ea8192d05a0893475cd0f086a3929a07663b4fe8d0e805a277f07ed5 - languageName: node - linkType: hard - -"@grpc/grpc-js@npm:~1.7.0": - version: 1.7.3 - resolution: "@grpc/grpc-js@npm:1.7.3" +"@grpc/grpc-js@npm:~1.8.0": + version: 1.8.22 + resolution: "@grpc/grpc-js@npm:1.8.22" dependencies: "@grpc/proto-loader": ^0.7.0 "@types/node": ">=12.12.47" - checksum: cb05aae4599f5deac9e0f50ea458b4465c581653501b5c1f3f3a9d6bfc5120c731726914d2d0d3a8244fce60cdf86ebbfc69c9d9f39fc34f0ab0100afd4af3e4 + checksum: 4e7be493f568ce7f6d196b28d1177cab2714261c2df61a5900b5cc93e2f61362c780e57d0dae556972375006b72d39a9e0860d5c78bbe5e354a0bddf0d3da121 languageName: node linkType: hard "@grpc/proto-loader@npm:^0.7.0": - version: 0.7.4 - resolution: "@grpc/proto-loader@npm:0.7.4" + version: 0.7.13 + resolution: "@grpc/proto-loader@npm:0.7.13" dependencies: - "@types/long": ^4.0.1 lodash.camelcase: ^4.3.0 - long: ^4.0.0 - protobufjs: ^7.0.0 - yargs: ^16.2.0 + long: ^5.0.0 + protobufjs: ^7.2.5 + yargs: ^17.7.2 bin: proto-loader-gen-types: build/bin/proto-loader-gen-types.js - checksum: 7789a959060535287a74cef8e13783e9a1506ae22365a48e0cfb29f48697ac946b461fe12ee711d280c4690a333c705f504076303a806f2fef81cc3e532637ac + checksum: 399c1b8a4627f93dc31660d9636ea6bf58be5675cc7581e3df56a249369e5be02c6cd0d642c5332b0d5673bc8621619bc06fb045aa3e8f57383737b5d35930dc + languageName: node + linkType: hard + +"@hapi/hoek@npm:^11.0.4": + version: 11.0.6 + resolution: "@hapi/hoek@npm:11.0.6" + checksum: feb8f250ac43ed281dbfd1bc50824664657c989f10c02b2deeff527023c081866f79b472475ad50f8ef4ed7106571e7e29801464df60819e18a4907054418211 languageName: node linkType: hard @@ -13091,7 +9053,7 @@ __metadata: languageName: node linkType: hard -"@hapi/topo@npm:^5.0.0, @hapi/topo@npm:^5.1.0": +"@hapi/topo@npm:^5.1.0": version: 5.1.0 resolution: "@hapi/topo@npm:5.1.0" dependencies: @@ -13126,9 +9088,9 @@ __metadata: linkType: hard "@hugsmidjan/qj@npm:^4.10.2, @hugsmidjan/qj@npm:^4.19.0": - version: 4.22.1 - resolution: "@hugsmidjan/qj@npm:4.22.1" - checksum: 9bc8999a625b31f59b1ef1dc636d253440a2b55a81384cd83dad651be2b0d05ccf140bd1f5b9393c99e7e09f6bcc69db7af8963bacf087fe062e30d84659894a + version: 4.23.0 + resolution: "@hugsmidjan/qj@npm:4.23.0" + checksum: 1b746853bbdff1b4ad7f715b81d2cc4e031637b0609aff640187ef2c1bfddb2ec98ef30de3de54352af7a7ac4a124d77aedc5d57c0d09573ce253fff62bc8c39 languageName: node linkType: hard @@ -13169,13 +9131,6 @@ __metadata: languageName: node linkType: hard -"@iarna/toml@npm:^2.2.5": - version: 2.2.5 - resolution: "@iarna/toml@npm:2.2.5" - checksum: b63b2b2c4fd67969a6291543ada0303d45593801ee744b60f5390f183c03d9192bc67a217abb24be945158f1935f02840d9ffff40c0142aa171b5d3b6b6a3ea5 - languageName: node - linkType: hard - "@ide/backoff@npm:^1.0.0": version: 1.0.0 resolution: "@ide/backoff@npm:1.0.0" @@ -13333,7 +9288,7 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2": +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 @@ -13354,20 +9309,6 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/console@npm:29.5.0" - dependencies: - "@jest/types": ^29.5.0 - "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - slash: ^3.0.0 - checksum: 9f4f4b8fabd1221361b7f2e92d4a90f5f8c2e2b29077249996ab3c8b7f765175ffee795368f8d6b5b2bb3adb32dc09319f7270c7c787b0d259e624e00e0f64a5 - languageName: node - linkType: hard - "@jest/console@npm:^29.7.0": version: 29.7.0 resolution: "@jest/console@npm:29.7.0" @@ -13444,15 +9385,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect-utils@npm:29.5.0" - dependencies: - jest-get-type: ^29.4.3 - checksum: c46fb677c88535cf83cf29f0a5b1f376c6a1109ddda266ad7da1a9cbc53cb441fa402dd61fc7b111ffc99603c11a9b3357ee41a1c0e035a58830bcb360871476 - languageName: node - linkType: hard - "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -13535,44 +9467,7 @@ __metadata: languageName: node linkType: hard -"@jest/reporters@npm:^29.4.1": - version: 29.5.0 - resolution: "@jest/reporters@npm:29.5.0" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 - "@types/node": "*" - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 - istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.1.3 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 - slash: ^3.0.0 - string-length: ^4.0.1 - strip-ansi: ^6.0.0 - v8-to-istanbul: ^9.0.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 481268aac9a4a75cc49c4df1273d6b111808dec815e9d009dad717c32383ebb0cebac76e820ad1ab44e207540e1c2fe1e640d44c4f262de92ab1933e057fdeeb - languageName: node - linkType: hard - -"@jest/reporters@npm:^29.7.0": +"@jest/reporters@npm:^29.4.1, @jest/reporters@npm:^29.7.0": version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" dependencies: @@ -13609,33 +9504,6 @@ __metadata: languageName: node linkType: hard -"@jest/schemas@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/schemas@npm:28.1.3" - dependencies: - "@sinclair/typebox": ^0.24.1 - checksum: 3cf1d4b66c9c4ffda58b246de1ddcba8e6ad085af63dccdf07922511f13b68c0cc480a7bc620cb4f3099a6f134801c747e1df7bfc7a4ef4dceefbdea3e31e1de - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/schemas@npm:29.4.3" - dependencies: - "@sinclair/typebox": ^0.25.16 - checksum: ac754e245c19dc39e10ebd41dce09040214c96a4cd8efa143b82148e383e45128f24599195ab4f01433adae4ccfbe2db6574c90db2862ccd8551a86704b5bebd - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/schemas@npm:29.6.0" - dependencies: - "@sinclair/typebox": ^0.27.8 - checksum: c00511c69cf89138a7d974404d3a5060af375b5a52b9c87215d91873129b382ca11c1ff25bd6d605951404bb381ddce5f8091004a61e76457da35db1f5c51365 - languageName: node - linkType: hard - "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -13680,19 +9548,7 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:^29.4.1, @jest/test-result@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-result@npm:29.5.0" - dependencies: - "@jest/console": ^29.5.0 - "@jest/types": ^29.5.0 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: 2e8ff5242227ab960c520c3ea0f6544c595cc1c42fa3873c158e9f4f685f4ec9670ec08a4af94ae3885c0005a43550a9595191ffbc27a0965df27d9d98bbf901 - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.7.0": +"@jest/test-result@npm:^29.4.1, @jest/test-result@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-result@npm:29.7.0" dependencies: @@ -13739,30 +9595,7 @@ __metadata: languageName: node linkType: hard -"@jest/transform@npm:^29.3.1, @jest/transform@npm:^29.4.3, @jest/transform@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/transform@npm:29.5.0" - dependencies: - "@babel/core": ^7.11.6 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 - babel-plugin-istanbul: ^6.1.1 - chalk: ^4.0.0 - convert-source-map: ^2.0.0 - fast-json-stable-stringify: ^2.1.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 - jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 - micromatch: ^4.0.4 - pirates: ^4.0.4 - slash: ^3.0.0 - write-file-atomic: ^4.0.2 - checksum: d55d604085c157cf5112e165ff5ac1fa788873b3b31265fb4734ca59892ee24e44119964cc47eb6d178dd9512bbb6c576d1e20e51a201ff4e24d31e818a1c92d - languageName: node - linkType: hard - -"@jest/transform@npm:^29.7.0": +"@jest/transform@npm:^29.3.1, @jest/transform@npm:^29.4.3, @jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" dependencies: @@ -13785,6 +9618,17 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^24.9.0": + version: 24.9.0 + resolution: "@jest/types@npm:24.9.0" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^1.1.1 + "@types/yargs": ^13.0.0 + checksum: 603698f774cf22f9d16a0e0fac9e10e7db21052aebfa33db154c8a5940e0eb1fa9c079a8c91681041ad3aeee2adfa950608dd0c663130316ba034b8bca7b301c + languageName: node + linkType: hard + "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -13811,34 +9655,6 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/types@npm:29.5.0" - dependencies: - "@jest/schemas": ^29.4.3 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: 1811f94b19cf8a9460a289c4f056796cfc373480e0492692a6125a553cd1a63824bd846d7bb78820b7b6f758f6dd3c2d4558293bb676d541b2fa59c70fdf9d39 - languageName: node - linkType: hard - -"@jest/types@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/types@npm:29.6.0" - dependencies: - "@jest/schemas": ^29.6.0 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: cb793a8c04194c29059c5f3a89416e9e1f3643236d4d545fe99fa43a230be4c521e9e1d46ca97837a731545599c9afe2c5a99ff37ee4edf197be0d8d85433b05 - languageName: node - linkType: hard - "@jest/types@npm:^29.6.3": version: 29.6.3 resolution: "@jest/types@npm:29.6.3" @@ -13860,29 +9676,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.0": - version: 0.3.3 - resolution: "@jridgewell/gen-mapping@npm:0.3.3" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.5": +"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: @@ -13893,34 +9687,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.0.5 - resolution: "@jridgewell/resolve-uri@npm:3.0.5" - checksum: 1ee652b693da7979ac4007926cc3f0a32b657ffeb913e111f44e5b67153d94a2f28a1d560101cc0cf8087625468293a69a00f634a2914e1a6d0817ba2039a913 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.1.0": +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e - languageName: node - linkType: hard - "@jridgewell/set-array@npm:^1.2.1": version: 1.2.1 resolution: "@jridgewell/set-array@npm:1.2.1" @@ -13928,38 +9701,17 @@ __metadata: languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.2, @jridgewell/source-map@npm:^0.3.3": - version: 0.3.3 - resolution: "@jridgewell/source-map@npm:0.3.3" +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: ae1302146339667da5cd6541260ecbef46ae06819a60f88da8f58b3e64682f787c09359933d050dea5d2173ea7fa40f40dd4d4e7a8d325c5892cccd99aaf8959 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.11 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.11" - checksum: 3b2afaf8400fb07a36db60e901fcce6a746cdec587310ee9035939d89878e57b2dec8173b0b8f63176f647efa352294049a53c49739098eb907ff81fec2547c8 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + checksum: c9dc7d899397df95e3c9ec287b93c0b56f8e4453cd20743e2b9c8e779b1949bc3cccf6c01bb302779e46560eb45f62ea38d19fedd25370d814734268450a9f30 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0": version: 1.5.0 resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec @@ -13976,37 +9728,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.0, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.13 - resolution: "@jridgewell/trace-mapping@npm:0.3.13" - dependencies: - "@jridgewell/resolve-uri": ^3.0.3 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: e38254e830472248ca10a6ed1ae75af5e8514f0680245a5e7b53bc3c030fd8691d4d3115d80595b45d3badead68269769ed47ecbbdd67db1343a11f05700e75a - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.12": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18": - version: 0.3.18 - resolution: "@jridgewell/trace-mapping@npm:0.3.18" - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 0572669f855260808c16fe8f78f5f1b4356463b11d3f2c7c0b5580c8ba1cbf4ae53efe9f627595830856e57dbac2325ac17eb0c3dd0ec42102e6f227cc289c02 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -14023,6 +9745,15 @@ __metadata: languageName: node linkType: hard +"@jsdoc/salty@npm:^0.2.1": + version: 0.2.8 + resolution: "@jsdoc/salty@npm:0.2.8" + dependencies: + lodash: ^4.17.21 + checksum: 9e5db29e2de8ba5db716f85a35119b6e8168779215e027cb467b092215d641fe1d035e9ff7264137bf785993be7eb139aca5f5dd329ba429851f218d3ecb993c + languageName: node + linkType: hard + "@juggle/resize-observer@npm:^3.3.1, @juggle/resize-observer@npm:^3.4.0": version: 3.4.0 resolution: "@juggle/resize-observer@npm:3.4.0" @@ -14040,9 +9771,9 @@ __metadata: linkType: hard "@leichtgewicht/ip-codec@npm:^2.0.1": - version: 2.0.4 - resolution: "@leichtgewicht/ip-codec@npm:2.0.4" - checksum: 468de1f04d33de6d300892683d7c8aecbf96d1e2c5fe084f95f816e50a054d45b7c1ebfb141a1447d844b86a948733f6eebd92234da8581c84a1ad4de2946a2d + version: 2.0.5 + resolution: "@leichtgewicht/ip-codec@npm:2.0.5" + checksum: 4fcd025d0a923cb6b87b631a83436a693b255779c583158bbeacde6b4dd75b94cc1eba1c9c188de5fc36c218d160524ea08bfe4ef03a056b00ff14126d66f881 languageName: node linkType: hard @@ -14053,52 +9784,62 @@ __metadata: languageName: node linkType: hard -"@lezer/common@npm:^1.0.0": - version: 1.0.2 - resolution: "@lezer/common@npm:1.0.2" - checksum: bbcc58e07be02652bf0700d2856042ec089d5be0b95893d628b3e18192ade864fac83b61b19653e10b9f1472261a178b12318d934e9004edd5483a577c0db56b +"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0": + version: 1.2.3 + resolution: "@lezer/common@npm:1.2.3" + checksum: 9b5f52d949adae69d077f56c0b1c2295923108c3dfb241dd9f17654ff708f3eab81ff9fa7f0d0e4a668eabdcb9d961c73e75caca87c966ca1436e30e49130fcb languageName: node linkType: hard "@lezer/highlight@npm:^1.0.0": - version: 1.1.3 - resolution: "@lezer/highlight@npm:1.1.3" + version: 1.2.1 + resolution: "@lezer/highlight@npm:1.2.1" dependencies: "@lezer/common": ^1.0.0 - checksum: 90ec143ce46b32f6779c3b245f1b5a540d66686939816d3daed8318821acc4bc719466dc222336cfd483bf04a8de4fdc6f279e904cf114d4d9f786f9feccbbd8 + checksum: a8822d7e37f79ff64669eb2df4a9f9d16580e88f2b276a646092e19a9bdccac304e92510e200e35869a8b1f6c27eba5972c508d347a277e9b722d582ab7a23d5 languageName: node linkType: hard "@lezer/json@npm:^1.0.0": - version: 1.0.0 - resolution: "@lezer/json@npm:1.0.0" + version: 1.0.2 + resolution: "@lezer/json@npm:1.0.2" dependencies: + "@lezer/common": ^1.2.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 - checksum: c1ca0cdf681415b58a383a669944bed66da3aa830870d32d1e471d545cff0fe43d9ac8a0d2a318a96daa99cd5a645b1d58ba8fbdd2e8d7ca4d33a62c7582cbab + checksum: f899d13765d95599c9199fc3404cb57969031dc40ce07de30f4e648979153966581f0bee02e2f8f70463b0a5322206a97c2fe8d5d14f218888c72a6dcedf90ef languageName: node linkType: hard "@lezer/lr@npm:^1.0.0": - version: 1.3.3 - resolution: "@lezer/lr@npm:1.3.3" + version: 1.4.2 + resolution: "@lezer/lr@npm:1.4.2" dependencies: "@lezer/common": ^1.0.0 - checksum: 1804074c794005a31c54d80ab72127f19ae5be29bb627c52bc001a57b1af97a9e62732ff13e3aeb7bc53b330202b6bd3747272c64d87f257dbba533e75a183a3 + checksum: 94318ad046c7dfcc8d37e26cb85b99623c39aef60aa51ec2abb30928e7a649f38fa5520f34bd5b356f1db11b6991999589f039e87c8949b0f163be3764f029d8 languageName: node linkType: hard "@lit-labs/react@npm:^1.0.2": - version: 1.0.5 - resolution: "@lit-labs/react@npm:1.0.5" - checksum: 4868a528d528ee2721f0ba9691aa2c10b3db6d52c56b6f7b01679961512b32cbdb4ee72b78f11c9c305a9c96d53b36bce44ce4768783c05c0645cd45e4b6db83 + version: 1.2.1 + resolution: "@lit-labs/react@npm:1.2.1" + checksum: d4a544c475272630bee54d78a458630ea8b5fab74c18b922ae5046563cc359c8c505188f9f7614ab55e332863f82b179d7970d8b8bd425e77acc167a01657bed languageName: node linkType: hard -"@lit/reactive-element@npm:^1.3.0": - version: 1.3.2 - resolution: "@lit/reactive-element@npm:1.3.2" - checksum: 0a89906ddebe2fe2772d942769fc6d69c53e445d476f449690daf371e196b73b99422b7722d262b97d8233e91528ee66b821d013032f0f9fd0f3fd178b4f6a45 +"@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0": + version: 1.2.1 + resolution: "@lit-labs/ssr-dom-shim@npm:1.2.1" + checksum: 5667c44f58e16edaa257fc3ae7f752250d5250d4eb1d071b65df0f1fce0b90b42e8528787cc2673998d76d993440143a2a20c3358ce125c62df4cd193784de8d + languageName: node + linkType: hard + +"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": + version: 1.6.3 + resolution: "@lit/reactive-element@npm:1.6.3" + dependencies: + "@lit-labs/ssr-dom-shim": ^1.0.0 + checksum: 79b58631c38effeabad090070324431da8a22cf0ff665f5e4de35e4d791f984742b3d340c9c7fce996d1124a8da95febc582471b4c237236c770b1300b56ef6e languageName: node linkType: hard @@ -14119,8 +9860,8 @@ __metadata: linkType: hard "@mapbox/node-pre-gyp@npm:^1.0.0": - version: 1.0.9 - resolution: "@mapbox/node-pre-gyp@npm:1.0.9" + version: 1.0.11 + resolution: "@mapbox/node-pre-gyp@npm:1.0.11" dependencies: detect-libc: ^2.0.0 https-proxy-agent: ^5.0.0 @@ -14133,7 +9874,7 @@ __metadata: tar: ^6.1.11 bin: node-pre-gyp: bin/node-pre-gyp - checksum: 1b9c4c87a68d200daa13151d0fe033aa7aa8f7b26f3585255424dd8dfee2ec672c3e9bea4071c624469bc0aebbbcde08f8a300c8a958db52c50abadd5fb56920 + checksum: b848f6abc531a11961d780db813cc510ca5a5b6bf3184d72134089c6875a91c44d571ba6c1879470020803f7803609e7b2e6e429651c026fe202facd11d444b8 languageName: node linkType: hard @@ -14275,44 +10016,44 @@ __metadata: languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.2": - version: 3.0.2 - resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.2" +"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.2": - version: 3.0.2 - resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.2" +"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.2": - version: 3.0.2 - resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.2" +"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.2": - version: 3.0.2 - resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.2" +"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.2": - version: 3.0.2 - resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.2" +"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.2": - version: 3.0.2 - resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.2" +"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -14907,16 +10648,6 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.scandir@npm:2.1.4": - version: 2.1.4 - resolution: "@nodelib/fs.scandir@npm:2.1.4" - dependencies: - "@nodelib/fs.stat": 2.0.4 - run-parallel: ^1.1.9 - checksum: 18c2150ab52a042bd65babe5b70106e6586dc036644131c33d253ff99e5eeef2e65858ab40161530a6f22b512a65e7c7629f0f1e0f35c00ee4c606f960d375ba - languageName: node - linkType: hard - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -14927,31 +10658,14 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.stat@npm:2.0.4, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.4 - resolution: "@nodelib/fs.stat@npm:2.0.4" - checksum: d0d9745f878816d041a8b36faf5797d88ba961274178f0ad1f7fe0efef8118ca9bd0e43e4d0d85a9af911bd35122ec1580e626a83d7595fc4d60f2c1c70e2665 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5": +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.6 - resolution: "@nodelib/fs.walk@npm:1.2.6" - dependencies: - "@nodelib/fs.scandir": 2.1.4 - fastq: ^1.6.0 - checksum: d156901823b3d3de368ad68047a964523e0ce5f796c0aa7712443b1f748d8e7fc24ce2c0f18d22a177e1f1c6092bca609ab5e4cb1792c41cdc8a6989bc391139 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -14961,6 +10675,26 @@ __metadata: languageName: node linkType: hard +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 0d6e098b871eca71d875651288e1f0fa770a63478b0b50479c99dc760c64175a56b5b04f58d5581bbcc6b552b8191ab415eada093d8df9597ab3423c8cac1815 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: ^7.1.0 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.1 + lru-cache: ^10.0.1 + socks-proxy-agent: ^8.0.3 + checksum: 67de7b88cc627a79743c88bab35e023e23daf13831a8aa4e15f998b92f5507b644d8ffc3788afc8e64423c612e0785a6a92b74782ce368f49a6746084b50d874 + languageName: node + linkType: hard + "@npmcli/fs@npm:^1.0.0": version: 1.1.1 resolution: "@npmcli/fs@npm:1.1.1" @@ -15010,12 +10744,12 @@ __metadata: languageName: node linkType: hard -"@nrwl/cli@npm:*, @nrwl/cli@npm:14.0.3": - version: 14.0.3 - resolution: "@nrwl/cli@npm:14.0.3" +"@nrwl/cli@npm:*, @nrwl/cli@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/cli@npm:15.9.7" dependencies: - nx: 14.0.3 - checksum: b7f2d11f9329d4e1dbf6b071b3aaf5d1687b17bb73dac33d17c745b7007f9e5aca0d4b8d34dcc8530eb79f633111f610ee0572ee4a5236de0033cc39e0684454 + nx: 15.9.7 + checksum: 55bcd3ec4319bdcbd51184a01f5dc3c03ab2a79caa1240249f6ca11c3e33555954bfab19d9156b210bf46fea9b6d543312cd199cd1421cd9b21a84224a76dc73 languageName: node linkType: hard @@ -15161,6 +10895,69 @@ __metadata: languageName: node linkType: hard +"@nrwl/nx-darwin-arm64@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-darwin-arm64@npm:15.9.7" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@nrwl/nx-darwin-x64@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-darwin-x64@npm:15.9.7" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@nrwl/nx-linux-arm-gnueabihf@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.7" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@nrwl/nx-linux-arm64-gnu@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.9.7" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@nrwl/nx-linux-arm64-musl@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-linux-arm64-musl@npm:15.9.7" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@nrwl/nx-linux-x64-gnu@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-linux-x64-gnu@npm:15.9.7" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@nrwl/nx-linux-x64-musl@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-linux-x64-musl@npm:15.9.7" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@nrwl/nx-win32-arm64-msvc@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.9.7" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@nrwl/nx-win32-x64-msvc@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/nx-win32-x64-msvc@npm:15.9.7" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@nrwl/react@npm:19.4.0": version: 19.4.0 resolution: "@nrwl/react@npm:19.4.0" @@ -15200,14 +10997,14 @@ __metadata: languageName: node linkType: hard -"@nrwl/tao@npm:14.0.3": - version: 14.0.3 - resolution: "@nrwl/tao@npm:14.0.3" +"@nrwl/tao@npm:15.9.7": + version: 15.9.7 + resolution: "@nrwl/tao@npm:15.9.7" dependencies: - nx: 14.0.3 + nx: 15.9.7 bin: tao: index.js - checksum: 136abd0a048c46475dff57069799c787399676742cdd69fa9b583533e59735cd30c0aa0f412328949ba09bd59e26bb0d1ce30c248cb654ac7453bfcf071e463c + checksum: 8c848c72f02de776086d2ad82928e15b102b2fb943eed5943a54375f16a75f2a3d2444385ead26bf3f465139d69fd5011ca429961be3970ed8addc7187880cd1 languageName: node linkType: hard @@ -15749,27 +11546,28 @@ __metadata: linkType: hard "@oclif/core@npm:^4": - version: 4.0.17 - resolution: "@oclif/core@npm:4.0.17" + version: 4.0.30 + resolution: "@oclif/core@npm:4.0.30" dependencies: ansi-escapes: ^4.3.2 ansis: ^3.3.2 clean-stack: ^3.0.1 cli-spinners: ^2.9.2 - debug: ^4.3.5 + debug: ^4.3.7 ejs: ^3.1.10 get-package-type: ^0.1.0 globby: ^11.1.0 indent-string: ^4.0.0 - is-wsl: ^2.2.0 + is-wsl: ^3 lilconfig: ^3.1.2 minimatch: ^9.0.5 + semver: ^7.6.3 string-width: ^4.2.3 supports-color: ^8 widest-line: ^3.1.0 wordwrap: ^1.0.0 wrap-ansi: ^7.0.0 - checksum: 6ea9df6710f0109c2d8285d979cea32f62b16928f4eea1a1a1d7b323183c547a15876ba35def64ac9bd5e8569a5740713e4be5ec751e62bdd6fe3f18c9f199a7 + checksum: 27d40a01af641c67a80b4a127efe475ceb9183a717d74352e507f277f66158df41f88e43cb49c1b39414be7cc19bb4338f8ae9fc2ee1b321a07ec2e41cacdc40 languageName: node linkType: hard @@ -15782,6 +11580,13 @@ __metadata: languageName: node linkType: hard +"@one-ini/wasm@npm:0.1.1": + version: 0.1.1 + resolution: "@one-ini/wasm@npm:0.1.1" + checksum: 11de17108eae57c797e552e36b259398aede999b4a689d78be6459652edc37f3428472410590a9d328011a8751b771063a5648dd5c4205631c55d1d58e313156 + languageName: node + linkType: hard + "@open-draft/until@npm:^1.0.3": version: 1.0.3 resolution: "@open-draft/until@npm:1.0.3" @@ -15806,27 +11611,27 @@ __metadata: linkType: hard "@opentelemetry/api@npm:^1.0.1": - version: 1.2.0 - resolution: "@opentelemetry/api@npm:1.2.0" - checksum: 764efa81bf939200a8e80520a4735b23038abafc60c80420b007ae2bbb7ad843d806894414e95d974c2ef1b81d4ae8a3106804e1af7b5090240cfeb2467db099 + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 9e88e59d53ced668f3daaecfd721071c5b85a67dd386f1c6f051d1be54375d850016c881f656ffbe9a03bedae85f7e89c2f2b635313f9c9b195ad033cdc31020 languageName: node linkType: hard "@opentelemetry/core@npm:^1.14.0": - version: 1.15.1 - resolution: "@opentelemetry/core@npm:1.15.1" + version: 1.27.0 + resolution: "@opentelemetry/core@npm:1.27.0" dependencies: - "@opentelemetry/semantic-conventions": 1.15.1 + "@opentelemetry/semantic-conventions": 1.27.0 peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.5.0" - checksum: 875c75870bc3b178db20edfde90052cc09086c41736b9e31587cce428c569421b87553c4cffbf4efee9b2919030b8150bcf95af26933d52207b344ae8b397040 + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 33ff551f89f0bb95830c9f9464c43b11adf88882ec1d3a03a5b9afcc89d2aafab33c36cb5047f18667d7929d6ab40ed0121649c42d0105f1cb33ffdca48f8b13 languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:1.15.1": - version: 1.15.1 - resolution: "@opentelemetry/semantic-conventions@npm:1.15.1" - checksum: 19fab8a805a13e4b6cfaacf31607301acdd2c415e8e8afa1f8313c68110b49d9cf02a6a1cc969f67ab71b1dbfcb5c5b063392c68f46fa32d05dbae9ce245e0d0 +"@opentelemetry/semantic-conventions@npm:1.27.0": + version: 1.27.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" + checksum: 26d85f8d13c8c64024f7a84528cff41d56afc9829e7ff8a654576404f8b2c1a9c264adcc6fa5a9551bacdd938a4a464041fa9493e0a722e5605f2c2ae6752398 languageName: node linkType: hard @@ -15837,6 +11642,90 @@ __metadata: languageName: node linkType: hard +"@parcel/watcher-android-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-android-arm64@npm:2.4.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-x64@npm:2.4.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@parcel/watcher@npm:2.0.0-alpha.11": version: 2.0.0-alpha.11 resolution: "@parcel/watcher@npm:2.0.0-alpha.11" @@ -15859,6 +11748,56 @@ __metadata: languageName: node linkType: hard +"@parcel/watcher@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher@npm:2.4.1" + dependencies: + "@parcel/watcher-android-arm64": 2.4.1 + "@parcel/watcher-darwin-arm64": 2.4.1 + "@parcel/watcher-darwin-x64": 2.4.1 + "@parcel/watcher-freebsd-x64": 2.4.1 + "@parcel/watcher-linux-arm-glibc": 2.4.1 + "@parcel/watcher-linux-arm64-glibc": 2.4.1 + "@parcel/watcher-linux-arm64-musl": 2.4.1 + "@parcel/watcher-linux-x64-glibc": 2.4.1 + "@parcel/watcher-linux-x64-musl": 2.4.1 + "@parcel/watcher-win32-arm64": 2.4.1 + "@parcel/watcher-win32-ia32": 2.4.1 + "@parcel/watcher-win32-x64": 2.4.1 + detect-libc: ^1.0.3 + is-glob: ^4.0.3 + micromatch: ^4.0.5 + node-addon-api: ^7.0.0 + node-gyp: latest + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 4da70551da27e565c726b0bbd5ba5afcb2bca36dfd8619a649f0eaa41f693ddd1d630c36e53bc083895d71a3e28bc4199013e557cd13c7af6ccccab28ceecbff + languageName: node + linkType: hard + "@pdf-lib/standard-fonts@npm:^1.0.0": version: 1.0.0 resolution: "@pdf-lib/standard-fonts@npm:1.0.0" @@ -15878,72 +11817,61 @@ __metadata: linkType: hard "@peculiar/asn1-android@npm:^2.3.10": - version: 2.3.10 - resolution: "@peculiar/asn1-android@npm:2.3.10" + version: 2.3.13 + resolution: "@peculiar/asn1-android@npm:2.3.13" dependencies: - "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.13 asn1js: ^3.0.5 tslib: ^2.6.2 - checksum: 882a1b5129c9ad99abf7e8bc1b4373c454af1f8921e571a638e0ec27e77327703db0cb669cd13bc71f4c8e2e7f39e344d6c6741405184148ea1e3bd4b9d5fb59 + checksum: 49c6a55d905041bd0d5f747411c40ea7bd87b910f6ddc2a1b1553fd23fed92e17f3a3a65925f629b568a98f788c5300d62d63eccb87f54d06a2b3ad2a2aeaa0e languageName: node linkType: hard "@peculiar/asn1-ecc@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-ecc@npm:2.3.8" + version: 2.3.14 + resolution: "@peculiar/asn1-ecc@npm:2.3.14" dependencies: - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.13 + "@peculiar/asn1-x509": ^2.3.13 asn1js: ^3.0.5 tslib: ^2.6.2 - checksum: c7db2004a03f88c35fcd21957c8c15bfbf29c137a636bbc35d51dcebbc287ec253762e127d50197f0b5910600e3641a738c8ca756a15741fc09272272b0303f4 + checksum: 2fc71612c63ff7d7ea640489cf55028f54cd5f7c8e49387a80f5b6ea61f0e1ddc435e1ae005ec02edc7dea5f296c824b0f8160ea6101796790ec49014420f07b languageName: node linkType: hard "@peculiar/asn1-rsa@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-rsa@npm:2.3.8" + version: 2.3.13 + resolution: "@peculiar/asn1-rsa@npm:2.3.13" dependencies: - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.13 + "@peculiar/asn1-x509": ^2.3.13 asn1js: ^3.0.5 tslib: ^2.6.2 - checksum: d9bf0f143686b475d3cc9f9b7d948826dc8c8764bc865697705351278541f0bf31a8f788ec8ff8bf6e4150b04aa65b20853bda45d77e4abbac717d7019e6fd56 + checksum: 3d5d0c2546457422362a9a383bcfdb4333659805f6ca75cbd5b144783d8f45d533448ff64aa550682b95de1fd625db7eddbe44e9cc923092f36c8265d4cfce84 languageName: node linkType: hard -"@peculiar/asn1-schema@npm:^2.1.6": - version: 2.3.0 - resolution: "@peculiar/asn1-schema@npm:2.3.0" - dependencies: - asn1js: ^3.0.5 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - checksum: aa510c68de83be94a8d0e96ca1f7c92d2bd790867eed887c0db32d6b2fc49c5dd9d8269648e9665686ba9b2fd8469324c61e04fed50f7aad3f68a0ca0e1cde4b - languageName: node - linkType: hard - -"@peculiar/asn1-schema@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-schema@npm:2.3.8" +"@peculiar/asn1-schema@npm:^2.3.13, @peculiar/asn1-schema@npm:^2.3.8": + version: 2.3.13 + resolution: "@peculiar/asn1-schema@npm:2.3.13" dependencies: asn1js: ^3.0.5 pvtsutils: ^1.3.5 tslib: ^2.6.2 - checksum: 1f4dd421f1411df8bc52bca12b1cef710434c13ff0a8b5746ede42b10d62b5ad06a3925c4a6db53102aaf1e589947539a6955fa8554a9b8ebb1ffa38b0155a24 + checksum: 245cf398992788fc61c48a4e1263a47803bccd91807e7a419e3fe9ad44ede5e396a5f8d13215b0765774855b634fe10d730b08944e5dc085fc5ee121a7e0139e languageName: node linkType: hard -"@peculiar/asn1-x509@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-x509@npm:2.3.8" +"@peculiar/asn1-x509@npm:^2.3.13, @peculiar/asn1-x509@npm:^2.3.8": + version: 2.3.13 + resolution: "@peculiar/asn1-x509@npm:2.3.13" dependencies: - "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.13 asn1js: ^3.0.5 ipaddr.js: ^2.1.0 pvtsutils: ^1.3.5 tslib: ^2.6.2 - checksum: 23856e5d024298447afca55bd68d19a7440c0ae076437aee5ced26a0fa2e4efa3e0e4a354fa6ee9968d62ac21ee1c2186fc427942bacfc824d3a3a4d2e80d14b + checksum: b8094400138d6e982248d038443520eae00f349d519bbd763b7652dac1b5635bb7c8d952b3a5d060316c8267f09b98676c3e113023215c72f22eb420f6440b13 languageName: node linkType: hard @@ -15957,15 +11885,15 @@ __metadata: linkType: hard "@peculiar/webcrypto@npm:^1.4.0": - version: 1.4.0 - resolution: "@peculiar/webcrypto@npm:1.4.0" + version: 1.5.0 + resolution: "@peculiar/webcrypto@npm:1.5.0" dependencies: - "@peculiar/asn1-schema": ^2.1.6 + "@peculiar/asn1-schema": ^2.3.8 "@peculiar/json-schema": ^1.1.12 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - webcrypto-core: ^1.7.4 - checksum: 3a7a3c8f253170436f353a61b807d2e2e7a686e6a9607487fde6459ddfff34c8000414287a6cd904bd81e002ce4564811b3c7789a0fd932cf015df6c4002fd02 + pvtsutils: ^1.3.5 + tslib: ^2.6.2 + webcrypto-core: ^1.8.0 + checksum: 9022d7452d564a5a26fbacf477842be34736f2d9139f2f5026adc47fdeda7033193d727491503f2a829d35ab819bbfa61c82a785c49c999eac535ecd69a3a459 languageName: node linkType: hard @@ -15987,20 +11915,6 @@ __metadata: languageName: node linkType: hard -"@pkgr/utils@npm:^2.3.1": - version: 2.4.1 - resolution: "@pkgr/utils@npm:2.4.1" - dependencies: - cross-spawn: ^7.0.3 - fast-glob: ^3.2.12 - is-glob: ^4.0.3 - open: ^9.1.0 - picocolors: ^1.0.0 - tslib: ^2.5.0 - checksum: 654682860272541a40485b01e0763b155ec31faeba85b2c51e38b59c4ff1f8918c37b87b5ecbda3ff482d8486eba086e92b991fe4a8ed62efbbbdf83c0f64409 - languageName: node - linkType: hard - "@playwright/test@npm:1.29": version: 1.29.2 resolution: "@playwright/test@npm:1.29.2" @@ -16051,30 +11965,16 @@ __metadata: linkType: hard "@polka/url@npm:^1.0.0-next.20": - version: 1.0.0-next.21 - resolution: "@polka/url@npm:1.0.0-next.21" - checksum: c7654046d38984257dd639eab3dc770d1b0340916097b2fac03ce5d23506ada684e05574a69b255c32ea6a144a957c8cd84264159b545fca031c772289d88788 - languageName: node - linkType: hard - -"@popperjs/core@npm:^2.11.5, @popperjs/core@npm:^2.9.2": - version: 2.11.6 - resolution: "@popperjs/core@npm:2.11.6" - checksum: 47fb328cec1924559d759b48235c78574f2d71a8a6c4c03edb6de5d7074078371633b91e39bbf3f901b32aa8af9b9d8f82834856d2f5737a23475036b16817f0 - languageName: node - linkType: hard - -"@popperjs/core@npm:^2.4.4": - version: 2.9.2 - resolution: "@popperjs/core@npm:2.9.2" - checksum: a5916302e706b7dfbbbcd8728bafc1682b450d5ec70dd10da84a07c89a419fa72f83cbf990798589e6e69e1b520d6768176ea4bd360d7450d08a2fbc25a14e1c + version: 1.0.0-next.28 + resolution: "@polka/url@npm:1.0.0-next.28" + checksum: 7402aaf1de781d0eb0870d50cbcd394f949aee11b38a267a5c3b4e3cfee117e920693e6e93ce24c87ae2d477a59634f39d9edde8e86471cae756839b07c79af7 languageName: node linkType: hard -"@popperjs/core@npm:^2.5.4": - version: 2.11.7 - resolution: "@popperjs/core@npm:2.11.7" - checksum: 5b6553747899683452a1d28898c1b39173a4efd780e74360bfcda8eb42f1c5e819602769c81a10920fc68c881d07fb40429604517d499567eac079cfa6470f19 +"@popperjs/core@npm:^2.11.5, @popperjs/core@npm:^2.4.4, @popperjs/core@npm:^2.5.4, @popperjs/core@npm:^2.9.2": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: e5c69fdebf52a4012f6a1f14817ca8e9599cb1be73dd1387e1785e2ed5e5f0862ff817f420a87c7fc532add1f88a12e25aeb010ffcbdc98eace3d55ce2139cf0 languageName: node linkType: hard @@ -16160,15 +12060,6 @@ __metadata: languageName: node linkType: hard -"@radix-ui/primitive@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/primitive@npm:1.0.0" - dependencies: - "@babel/runtime": ^7.13.10 - checksum: 72996afaf346ec4f4c73422f14f6cb2d0de994801ba7cbb9a4a67b0050e0cd74625182c349ef8017ccae1406579d4b74a34a225ef2efe61e8e5337decf235deb - languageName: node - linkType: hard - "@radix-ui/primitive@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/primitive@npm:1.0.1" @@ -16178,6 +12069,13 @@ __metadata: languageName: node linkType: hard +"@radix-ui/primitive@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/primitive@npm:1.1.0" + checksum: 7cbf70bfd4b2200972dbd52a9366801b5a43dd844743dc97eb673b3ec8e64f5dd547538faaf9939abbfe8bb275773767ecf5a87295d90ba09c15cba2b5528c89 + languageName: node + linkType: hard + "@radix-ui/react-arrow@npm:1.0.3": version: 1.0.3 resolution: "@radix-ui/react-arrow@npm:1.0.3" @@ -16198,22 +12096,6 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-collection@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-collection@npm:1.0.1" - dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/react-compose-refs": 1.0.0 - "@radix-ui/react-context": 1.0.0 - "@radix-ui/react-primitive": 1.0.1 - "@radix-ui/react-slot": 1.0.1 - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - checksum: 4922b358baf54aa343da5235fd061a289bedef9488254696bb4eb09b320da9da91bf55e148d89f07df80afa5429804f8a203159978cddeea423e58fdea703cd0 - languageName: node - linkType: hard - "@radix-ui/react-collection@npm:1.0.3": version: 1.0.3 resolution: "@radix-ui/react-collection@npm:1.0.3" @@ -16237,14 +12119,25 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-compose-refs@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/react-compose-refs@npm:1.0.0" +"@radix-ui/react-collection@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-collection@npm:1.1.0" dependencies: - "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-context": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-slot": 1.1.0 peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - checksum: fb98be2e275a1a758ccac647780ff5b04be8dcf25dcea1592db3b691fecf719c4c0700126da605b2f512dd89caa111352b9fad59528d736b4e0e9a0e134a74a1 + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 70cee7f23cf19b0a9533723ba2ce80a40013d7b5e3588acd40e3f155cb46e0d94d9ebef58fd907d9862e2cb2b65f3f73315719597a790aefabfeae8a64566807 languageName: node linkType: hard @@ -16263,14 +12156,16 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-context@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/react-context@npm:1.0.0" - dependencies: - "@babel/runtime": ^7.13.10 +"@radix-ui/react-compose-refs@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-compose-refs@npm:1.1.0" peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - checksum: 43c6b6f2183398161fe6b109e83fff240a6b7babbb27092b815932342a89d5ca42aa9806bfae5927970eed5ff90feed04c67aa29c6721f84ae826f17fcf34ce0 + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 047a4ed5f87cb848be475507cd62836cf5af5761484681f521ea543ea7c9d59d61d42806d6208863d5e2380bf38cdf4cff73c2bbe5f52dbbe50fb04e1a13ac72 languageName: node linkType: hard @@ -16289,14 +12184,29 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-direction@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/react-direction@npm:1.0.0" - dependencies: - "@babel/runtime": ^7.13.10 +"@radix-ui/react-context@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-context@npm:1.1.0" peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - checksum: 92a40de4087b161a56957872daf204a7735bd21f2fccbd42deff322d759977d085ad3dcdae05af437b7e64e628e939e0d67e5bc468a3027e1b02e0a7dc90c485 + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: d48df5e5193a1d963a1ff7a58f08497c60ddc364216c59090c8267985bd478447dd617847ea277afe10e67c4e0c528894c8d7407082325e0650038625140558a + languageName: node + linkType: hard + +"@radix-ui/react-context@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-context@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 9a04db236685dacc2f5ab2bdcfc4c82b974998e712ab97d79b11d5b4ef073d24aa9392398c876ef6cb3c59f40299285ceee3646187ad818cdad4fe1c74469d3f languageName: node linkType: hard @@ -16315,6 +12225,19 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-direction@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-direction@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 25ad0d1d65ad08c93cebfbefdff9ef2602e53f4573a66b37d2c366ede9485e75ec6fc8e7dd7d2939b34ea5504ca0fe6ac4a3acc2f6ee9b62d131d65486eafd49 + languageName: node + linkType: hard + "@radix-ui/react-dismissable-layer@npm:1.0.4": version: 1.0.4 resolution: "@radix-ui/react-dismissable-layer@npm:1.0.4" @@ -16376,18 +12299,6 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-id@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/react-id@npm:1.0.0" - dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/react-use-layout-effect": 1.0.0 - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - checksum: ba323cedd6a6df6f6e51ed1f7f7747988ce432b47fd94d860f962b14b342dcf049eae33f8ad0b72fd7df6329a7375542921132271fba64ab0a271c93f09c48d1 - languageName: node - linkType: hard - "@radix-ui/react-id@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/react-id@npm:1.0.1" @@ -16404,6 +12315,21 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-id@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-id@npm:1.1.0" + dependencies: + "@radix-ui/react-use-layout-effect": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6fbc9d1739b3b082412da10359e63967b4f3a60383ebda4c9e56b07a722d29bee53b203b3b1418f88854a29315a7715867133bb149e6e22a027a048cdd20d970 + languageName: node + linkType: hard + "@radix-ui/react-popper@npm:1.1.2": version: 1.1.2 resolution: "@radix-ui/react-popper@npm:1.1.2" @@ -16453,30 +12379,23 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-presence@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/react-presence@npm:1.0.0" - dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/react-compose-refs": 1.0.0 - "@radix-ui/react-use-layout-effect": 1.0.0 - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - checksum: a607d67795aa265e88f1765dcc7c18bebf6d88d116cb7f529ebe5a3fbbe751a42763aff0c1c89cdd8ce7f7664355936c4070fd3d4685774aff1a80fa95f4665b - languageName: node - linkType: hard - -"@radix-ui/react-primitive@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-primitive@npm:1.0.1" +"@radix-ui/react-presence@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-presence@npm:1.1.1" dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/react-slot": 1.0.1 + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-use-layout-effect": 1.1.0 peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - checksum: 1cc86b72f926be4a42122e7e456e965de0906f16b0dc244b8448bac05905f208598c984a0dd40026f654b4a71d0235335d48a18e377b07b0ec6c6917576a8080 + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 1831b5f5d096dc197aa4c5e9952ab24494f56843b981c6a4de0d3bd16de48fd6f20f9173424c5f876ed3dbdd1336875d149f7efefe24c185238234d868944795 languageName: node linkType: hard @@ -16500,52 +12419,49 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-roving-focus@npm:1.0.2": - version: 1.0.2 - resolution: "@radix-ui/react-roving-focus@npm:1.0.2" +"@radix-ui/react-primitive@npm:2.0.0": + version: 2.0.0 + resolution: "@radix-ui/react-primitive@npm:2.0.0" dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/primitive": 1.0.0 - "@radix-ui/react-collection": 1.0.1 - "@radix-ui/react-compose-refs": 1.0.0 - "@radix-ui/react-context": 1.0.0 - "@radix-ui/react-direction": 1.0.0 - "@radix-ui/react-id": 1.0.0 - "@radix-ui/react-primitive": 1.0.1 - "@radix-ui/react-use-callback-ref": 1.0.0 - "@radix-ui/react-use-controllable-state": 1.0.0 + "@radix-ui/react-slot": 1.1.0 peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - checksum: 93e260b91198cc9b0b2a05d1e7c8c83a06c7c1b80a46d3088c3fb39a776238128c8b7e6061a5d9726246f75283321fd0858181e51a475a295dd2f3059f513f49 + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 04afc0f3a5ccf1de6e4861f755a89f31640d5a07237c5ac5bffe47bcd8fdf318257961fa56fedc823af49281800ee755752a371561c36fd92f008536a0553748 languageName: node linkType: hard -"@radix-ui/react-roving-focus@npm:1.0.4": - version: 1.0.4 - resolution: "@radix-ui/react-roving-focus@npm:1.0.4" - dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/primitive": 1.0.1 - "@radix-ui/react-collection": 1.0.3 - "@radix-ui/react-compose-refs": 1.0.1 - "@radix-ui/react-context": 1.0.1 - "@radix-ui/react-direction": 1.0.1 - "@radix-ui/react-id": 1.0.1 - "@radix-ui/react-primitive": 1.0.3 - "@radix-ui/react-use-callback-ref": 1.0.1 - "@radix-ui/react-use-controllable-state": 1.0.1 +"@radix-ui/react-roving-focus@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-roving-focus@npm:1.1.0" + dependencies: + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-collection": 1.1.0 + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-context": 1.1.0 + "@radix-ui/react-direction": 1.1.0 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-callback-ref": 1.1.0 + "@radix-ui/react-use-controllable-state": 1.1.0 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: 69b1c82c2d9db3ba71549a848f2704200dab1b2cd22d050c1e081a78b9a567dbfdc7fd0403ee010c19b79652de69924d8ca2076cd031d6552901e4213493ffc7 + checksum: 6f3a3fd047b0ac503f8a97297fba937c15653d01c883f344970f1c4206e9485572bc613f2561973f9010e96525ca87030ca5abf83a2e4dd67511f8b5afa20581 languageName: node linkType: hard @@ -16589,39 +12505,26 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-separator@npm:1.0.3": - version: 1.0.3 - resolution: "@radix-ui/react-separator@npm:1.0.3" +"@radix-ui/react-separator@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-separator@npm:1.1.0" dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-primitive": 2.0.0 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: 42f8c95e404de2ce9387040d78049808a48d423cd4c3bad8cca92c4b0bcbdcb3566b5b52a920d4e939a74b51188697f20a012221f0e630fc7f56de64096c15d2 + checksum: a7c3445603a45075dcf3559eb8f2f2e8545afeae253e67d0bde736c66b293c601974a1d6f9d7be1802d83869933dc120a7389ab98189ceb9a24659737dde0162 languageName: node linkType: hard -"@radix-ui/react-slot@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-slot@npm:1.0.1" - dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/react-compose-refs": 1.0.0 - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - checksum: a20693f8ce532bd6cbff12ba543dfcf90d451f22923bd60b57dc9e639f6e53348915e182002b33444feb6ab753434e78e2a54085bf7092aadda4418f0423763f - languageName: node - linkType: hard - -"@radix-ui/react-slot@npm:1.0.2, @radix-ui/react-slot@npm:^1.0.2": +"@radix-ui/react-slot@npm:1.0.2": version: 1.0.2 resolution: "@radix-ui/react-slot@npm:1.0.2" dependencies: @@ -16637,108 +12540,115 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-tabs@npm:^1.0.1": - version: 1.0.2 - resolution: "@radix-ui/react-tabs@npm:1.0.2" +"@radix-ui/react-slot@npm:1.1.0, @radix-ui/react-slot@npm:^1.0.2": + version: 1.1.0 + resolution: "@radix-ui/react-slot@npm:1.1.0" dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/primitive": 1.0.0 - "@radix-ui/react-context": 1.0.0 - "@radix-ui/react-direction": 1.0.0 - "@radix-ui/react-id": 1.0.0 - "@radix-ui/react-presence": 1.0.0 - "@radix-ui/react-primitive": 1.0.1 - "@radix-ui/react-roving-focus": 1.0.2 - "@radix-ui/react-use-controllable-state": 1.0.0 + "@radix-ui/react-compose-refs": 1.1.0 peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - checksum: 135f1663830f0e2ccdd04bac38bfef2460ba8b950e331ce37100a9850ee1f4249c7e912d2893893faa9df2596a3c0d15027c742b345823b1c2caef86d435e9b2 + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3c9cd90aabf08f541e20dbecb581744be01c552a0cd16e90d7c218381bcc5307aa8a6013d045864e692ba89d3d8c17bfae08df18ed18be6d223d9330ab0302fa languageName: node linkType: hard -"@radix-ui/react-toggle-group@npm:1.0.4": - version: 1.0.4 - resolution: "@radix-ui/react-toggle-group@npm:1.0.4" +"@radix-ui/react-tabs@npm:^1.0.1": + version: 1.1.1 + resolution: "@radix-ui/react-tabs@npm:1.1.1" dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/primitive": 1.0.1 - "@radix-ui/react-context": 1.0.1 - "@radix-ui/react-direction": 1.0.1 - "@radix-ui/react-primitive": 1.0.3 - "@radix-ui/react-roving-focus": 1.0.4 - "@radix-ui/react-toggle": 1.0.3 - "@radix-ui/react-use-controllable-state": 1.0.1 + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-direction": 1.1.0 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-presence": 1.1.1 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-roving-focus": 1.1.0 + "@radix-ui/react-use-controllable-state": 1.1.0 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: b6c11fbbc3ca857ff68c0fa31f293c0d0111bcc8aa0cde2566214c090907530bfcb3b862f81585c2b02d8989b5c7971acff4d5c07c429870d80bd5602e30d376 + checksum: 9ceac8a655df3c692d86247bdc2f951c4df22b1329451ca7148a545b48ba809e280e565d084d7d502cfe30370e0fcc57f80d47b57ebecd75caca6825bbf47f4a languageName: node linkType: hard -"@radix-ui/react-toggle@npm:1.0.3": - version: 1.0.3 - resolution: "@radix-ui/react-toggle@npm:1.0.3" +"@radix-ui/react-toggle-group@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-toggle-group@npm:1.1.0" dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/primitive": 1.0.1 - "@radix-ui/react-primitive": 1.0.3 - "@radix-ui/react-use-controllable-state": 1.0.1 + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-context": 1.1.0 + "@radix-ui/react-direction": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-roving-focus": 1.1.0 + "@radix-ui/react-toggle": 1.1.0 + "@radix-ui/react-use-controllable-state": 1.1.0 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: ed5407f48254f20cda542017774f259d0b2c0007ea4bd7287d10d751016dbf269cb13d1142591432c269c3ab768cde2f1ba0344743027d36bbec10af909f19de + checksum: c665a38b01fc3fc816a63c9d8d689814d17803c4075f3e383182d7613e6552b5bbf0584f68c6e98af8efd738ceba9869ef5b29419f76a80b64e3a7d61b2b41ef languageName: node linkType: hard -"@radix-ui/react-toolbar@npm:^1.0.4": - version: 1.0.4 - resolution: "@radix-ui/react-toolbar@npm:1.0.4" +"@radix-ui/react-toggle@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-toggle@npm:1.1.0" dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/primitive": 1.0.1 - "@radix-ui/react-context": 1.0.1 - "@radix-ui/react-direction": 1.0.1 - "@radix-ui/react-primitive": 1.0.3 - "@radix-ui/react-roving-focus": 1.0.4 - "@radix-ui/react-separator": 1.0.3 - "@radix-ui/react-toggle-group": 1.0.4 + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-controllable-state": 1.1.0 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: 7ebee1f8add6510108979433c5b38627e2de9d48ef2172ca15274b9edbbc106ff43bcd47ff733b03ed2215b92e7af364ff82c79e5a1728374847e2b1e315552c + checksum: 556818c9d57c024cca0533c859464ee101b69c527d2f2791fa97175fdabea4320eb0078e84bb73f2c5d5794a8a0069666bbdcfe07067fe02ebe4950917ca8e3a languageName: node linkType: hard -"@radix-ui/react-use-callback-ref@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/react-use-callback-ref@npm:1.0.0" +"@radix-ui/react-toolbar@npm:^1.0.4": + version: 1.1.0 + resolution: "@radix-ui/react-toolbar@npm:1.1.0" dependencies: - "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-context": 1.1.0 + "@radix-ui/react-direction": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-roving-focus": 1.1.0 + "@radix-ui/react-separator": 1.1.0 + "@radix-ui/react-toggle-group": 1.1.0 peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - checksum: a8dda76ba0a26e23dc6ab5003831ad7439f59ba9d696a517643b9ee6a7fb06b18ae7a8f5a3c00c530d5c8104745a466a077b7475b99b4c0f5c15f5fc29474471 + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 5453bdfd697bf5bf4ec3f86d976799d2a9e39c6a57b9d614aca7077df0f8031efb6f59ac993503152aa4e5e7988c0818212340ea764c0a92ceb204e630b58709 languageName: node linkType: hard @@ -16757,15 +12667,16 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-use-controllable-state@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/react-use-controllable-state@npm:1.0.0" - dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/react-use-callback-ref": 1.0.0 +"@radix-ui/react-use-callback-ref@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-callback-ref@npm:1.1.0" peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - checksum: 35f1e714bbe3fc9f5362a133339dd890fb96edb79b63168a99403c65dd5f2b63910e0c690255838029086719e31360fa92544a55bc902cfed4442bb3b55822e2 + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 2ec7903c67e3034b646005556f44fd975dc5204db6885fc58403e3584f27d95f0b573bc161de3d14fab9fda25150bf3b91f718d299fdfc701c736bd0bd2281fa languageName: node linkType: hard @@ -16785,30 +12696,34 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-use-escape-keydown@npm:1.0.3": - version: 1.0.3 - resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" +"@radix-ui/react-use-controllable-state@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-controllable-state@npm:1.1.0" dependencies: - "@babel/runtime": ^7.13.10 - "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-callback-ref": 1.1.0 peerDependencies: "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true - checksum: c6ed0d9ce780f67f924980eb305af1f6cce2a8acbaf043a58abe0aa3cc551d9aa76ccee14531df89bbee302ead7ecc7fce330886f82d4672c5eda52f357ef9b8 + checksum: a6c167cf8eb0744effbeab1f92ea6c0ad71838b222670c0488599f28eecd941d87ac1eed4b5d3b10df6dc7b7b2edb88a54e99d92c2942ce3b21f81d5c188f32d languageName: node linkType: hard -"@radix-ui/react-use-layout-effect@npm:1.0.0": - version: 1.0.0 - resolution: "@radix-ui/react-use-layout-effect@npm:1.0.0" +"@radix-ui/react-use-escape-keydown@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" dependencies: "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-callback-ref": 1.0.1 peerDependencies: + "@types/react": "*" react: ^16.8 || ^17.0 || ^18.0 - checksum: fcdc8cfa79bd45766ebe3de11039c58abe3fed968cb39c12b2efce5d88013c76fe096ea4cee464d42576d02fe7697779b682b4268459bca3c4e48644f5b4ac5e + peerDependenciesMeta: + "@types/react": + optional: true + checksum: c6ed0d9ce780f67f924980eb305af1f6cce2a8acbaf043a58abe0aa3cc551d9aa76ccee14531df89bbee302ead7ecc7fce330886f82d4672c5eda52f357ef9b8 languageName: node linkType: hard @@ -16827,6 +12742,19 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-use-layout-effect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-layout-effect@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 271ea0bf1cd74718895a68414a6e95537737f36e02ad08eeb61a82b229d6abda9cff3135a479e134e1f0ce2c3ff97bb85babbdce751985fb755a39b231d7ccf2 + languageName: node + linkType: hard + "@radix-ui/react-use-previous@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/react-use-previous@npm:1.0.1" @@ -17467,191 +13395,193 @@ __metadata: languageName: node linkType: hard -"@react-pdf/fns@npm:2.0.1": - version: 2.0.1 - resolution: "@react-pdf/fns@npm:2.0.1" +"@react-pdf/fns@npm:2.2.1": + version: 2.2.1 + resolution: "@react-pdf/fns@npm:2.2.1" dependencies: "@babel/runtime": ^7.20.13 - checksum: cc56f632862820c7512530c423a5506addcb6aefc46e61d952dd735c0b887fa209dddcc1ec49f89fecc30b6852f44bd2025687898d86d76d8019b35b74d0094b + checksum: 738bc27e45ee3253e9abf74924696428ac856e679ac617b030936052da773996bec3d314ca9ad67c675d3eb82c8c74a9c24a3dbd0473b66773dbaefb1f202826 languageName: node linkType: hard -"@react-pdf/font@npm:^2.3.4": - version: 2.3.4 - resolution: "@react-pdf/font@npm:2.3.4" +"@react-pdf/font@npm:^2.5.2": + version: 2.5.2 + resolution: "@react-pdf/font@npm:2.5.2" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/types": ^2.3.1 + "@react-pdf/types": ^2.6.0 cross-fetch: ^3.1.5 fontkit: ^2.0.2 is-url: ^1.2.4 - checksum: 76df022c5e389c16ed0bf6a909329028e370fa7684748527f3fe87c92d63d98f749c1726cf5b6409d66eb096e7b326c939004da7dea1db5588dfbee4799c619f + checksum: 73d7753ea13fe4b4c1469bae181b7a7fee5fb39db829253428a2010c7f28e3c8982273b6a92f63059c8e19f36a7b99d0838943121bae1f2992a8f93d44165d40 languageName: node linkType: hard -"@react-pdf/image@npm:^2.2.1": - version: 2.2.1 - resolution: "@react-pdf/image@npm:2.2.1" +"@react-pdf/image@npm:^2.3.6": + version: 2.3.6 + resolution: "@react-pdf/image@npm:2.3.6" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/png-js": ^2.2.0 + "@react-pdf/png-js": ^2.3.1 cross-fetch: ^3.1.5 - checksum: d2b3c9e5b6a23c377724072c875eaeea6389fa513ae0e88ed442d7efb0eaa373b0f195e7c6b9404297ede802d063cf20109800f4d7b951087f66bb64f7c04f1a + jay-peg: ^1.0.2 + checksum: 177e221e61714d7efd6c7c7c1f78b7dc9b343eaf6fd7d11f22ebd0830114f4188fb0be5b6dab71e734f8e9aa0f6ca0cad946011b2872f771526ab75c14a5a039 languageName: node linkType: hard -"@react-pdf/layout@npm:^3.6.0": - version: 3.6.0 - resolution: "@react-pdf/layout@npm:3.6.0" +"@react-pdf/layout@npm:^3.13.0": + version: 3.13.0 + resolution: "@react-pdf/layout@npm:3.13.0" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.0.1 - "@react-pdf/image": ^2.2.1 - "@react-pdf/pdfkit": ^3.0.2 - "@react-pdf/primitives": ^3.0.0 - "@react-pdf/stylesheet": ^4.1.5 - "@react-pdf/textkit": ^4.2.0 - "@react-pdf/types": ^2.3.1 - "@react-pdf/yoga": ^4.1.2 + "@react-pdf/fns": 2.2.1 + "@react-pdf/image": ^2.3.6 + "@react-pdf/pdfkit": ^3.2.0 + "@react-pdf/primitives": ^3.1.1 + "@react-pdf/stylesheet": ^4.3.0 + "@react-pdf/textkit": ^4.4.1 + "@react-pdf/types": ^2.6.0 cross-fetch: ^3.1.5 - emoji-regex: ^10.2.1 + emoji-regex: ^10.3.0 queue: ^6.0.1 - checksum: 65169700d84864853ba3b31988f0502ce8c9014cab64aa60f6328e20645de6c7848e341226f32e50dcbfc0c43cff999c63b581d5e2617336ccc9b501bbcc31fc + yoga-layout: ^2.0.1 + checksum: d4014cc860292d0aba6b2d174647afa5003067bb3e98b53f983cb2d32e397514f77a030b53341a082e2682f257badac98792156e0483303a7df79be5e414eaab languageName: node linkType: hard -"@react-pdf/pdfkit@npm:^3.0.2": - version: 3.0.2 - resolution: "@react-pdf/pdfkit@npm:3.0.2" +"@react-pdf/pdfkit@npm:^3.2.0": + version: 3.2.0 + resolution: "@react-pdf/pdfkit@npm:3.2.0" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/png-js": ^2.2.0 + "@react-pdf/png-js": ^2.3.1 browserify-zlib: ^0.2.0 - crypto-js: ^4.0.0 + crypto-js: ^4.2.0 fontkit: ^2.0.2 + jay-peg: ^1.0.2 vite-compatible-readable-stream: ^3.6.1 - checksum: 8ab264e699751c1eb5245eb712c62c681c916e081fdf21a60bfda993f4f39336b238c799baba20d9b9b642a0819f46edd8e93de8dad5f1ce177b6ea57fee83a4 + checksum: 2c95c9dbc332d21bae45d3480c25a062450d9598ded63a11418e373831526cb8b1986ea9d0371a75a571a4acc3a4b3832b49364e1ceb036d22cb8617a1f56019 languageName: node linkType: hard -"@react-pdf/png-js@npm:^2.2.0": - version: 2.2.0 - resolution: "@react-pdf/png-js@npm:2.2.0" +"@react-pdf/png-js@npm:^2.3.1": + version: 2.3.1 + resolution: "@react-pdf/png-js@npm:2.3.1" dependencies: browserify-zlib: ^0.2.0 - checksum: 0f1571f43dcffa93c219ede411210c83f20c81a01f0a0cb39e713c9f066fa4b7b9781602240676e937e89c0218f2940f9acb98f06165e30dc7012897d1ff8d07 + checksum: bab00c8380cb1f2126c2844568929fe04753ee8611d9d9d0f6f9d5d4fdc3c8aafd265297d354941610b9e2fadcafca6e1cd2f36b137f2847e35985d226d056bc languageName: node linkType: hard -"@react-pdf/primitives@npm:^3.0.0": - version: 3.0.1 - resolution: "@react-pdf/primitives@npm:3.0.1" - checksum: c4bea5c6c61a2bbfdc462385def8ec9a36b60320b2008643f694de4e587dd05058ff78c98aa8a5d66bd472bbe09c93a477b15fefd64db58f6e64c122adabbdf1 +"@react-pdf/primitives@npm:^3.1.1": + version: 3.1.1 + resolution: "@react-pdf/primitives@npm:3.1.1" + checksum: a52c0cfff74d29d36e2e4c1c2b8935faf2f13bbe3800901e93354ea044385d8716166e45f3a49bb729e6d9944d7a8239056f5af80b345cb2984e245b2e719c1d languageName: node linkType: hard -"@react-pdf/render@npm:^3.2.4": - version: 3.2.4 - resolution: "@react-pdf/render@npm:3.2.4" +"@react-pdf/render@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-pdf/render@npm:3.5.0" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.0.1 - "@react-pdf/primitives": ^3.0.0 - "@react-pdf/textkit": ^4.2.0 - "@react-pdf/types": ^2.3.1 + "@react-pdf/fns": 2.2.1 + "@react-pdf/primitives": ^3.1.1 + "@react-pdf/textkit": ^4.4.1 + "@react-pdf/types": ^2.6.0 abs-svg-path: ^0.1.1 - color-string: ^1.5.3 + color-string: ^1.9.1 normalize-svg-path: ^1.1.0 parse-svg-path: ^0.1.2 svg-arc-to-cubic-bezier: ^3.2.0 - checksum: 1ec8a4cf6abe4fbf2e31c7d04a0116649f1bce77daa7c531f2d65681c2e45eee0e9c40e02645cbb0d12a1921897ae07e02966c305936e0bae962b2d5adebdf09 + checksum: aac990fcac1d1b3885c119d83955a3d42aa6548156a9c9660ba72c85a208d1ddae1b19290ed06194499460c8f93564e5b894a9a05a5850a83c72a3e7e55575cf languageName: node linkType: hard "@react-pdf/renderer@npm:^3.1.9": - version: 3.1.9 - resolution: "@react-pdf/renderer@npm:3.1.9" + version: 3.4.5 + resolution: "@react-pdf/renderer@npm:3.4.5" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/font": ^2.3.4 - "@react-pdf/layout": ^3.6.0 - "@react-pdf/pdfkit": ^3.0.2 - "@react-pdf/primitives": ^3.0.0 - "@react-pdf/render": ^3.2.4 - "@react-pdf/types": ^2.3.1 + "@react-pdf/font": ^2.5.2 + "@react-pdf/layout": ^3.13.0 + "@react-pdf/pdfkit": ^3.2.0 + "@react-pdf/primitives": ^3.1.1 + "@react-pdf/render": ^3.5.0 + "@react-pdf/types": ^2.6.0 events: ^3.3.0 object-assign: ^4.1.1 prop-types: ^15.6.2 queue: ^6.0.1 scheduler: ^0.17.0 peerDependencies: - react: ^16.8.6 || ^17.0.0 || ^18.0.0 - checksum: 314099cbebc303f7c4e51ef95f4d15650d130b58c46400d41e9ef7d25d705c5f066c00c0c0bf2c493200d9e70f0a63def8638742ccf42505c48d22c2ef628f43 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: f3e9a6779654de14fd755352d22cd0099c9f78317c8a2771b62e8d9757932a4bff47b59fdde390d46bf8515e5509694a3e32a055733a1d35eab0d979a173635d languageName: node linkType: hard -"@react-pdf/stylesheet@npm:^4.1.5": - version: 4.1.5 - resolution: "@react-pdf/stylesheet@npm:4.1.5" +"@react-pdf/stylesheet@npm:^4.3.0": + version: 4.3.0 + resolution: "@react-pdf/stylesheet@npm:4.3.0" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.0.1 - "@react-pdf/types": ^2.3.1 - color-string: ^1.5.3 + "@react-pdf/fns": 2.2.1 + "@react-pdf/types": ^2.6.0 + color-string: ^1.9.1 hsl-to-hex: ^1.0.0 media-engine: ^1.0.3 postcss-value-parser: ^4.1.0 - checksum: 340d756d910fbec0e6b72521226f901dc372c96642560707b77be76b59d6e60718fa289a9751a9175e190c311bc5c58ca5c4e7b4b0ac2947d1ad0811aac23356 + checksum: 9a32aca88efdb1967fac66013607c79592e9863ded756c373da408840113411b20b16d8c1d0fe22c460f812ddaa9c03abb721b44c870ae1c171e4f4f81b45cec languageName: node linkType: hard -"@react-pdf/textkit@npm:^4.2.0": - version: 4.2.0 - resolution: "@react-pdf/textkit@npm:4.2.0" +"@react-pdf/textkit@npm:^4.4.1": + version: 4.4.1 + resolution: "@react-pdf/textkit@npm:4.4.1" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.0.1 + "@react-pdf/fns": 2.2.1 + bidi-js: ^1.0.2 hyphen: ^1.6.4 unicode-properties: ^1.4.1 - checksum: d7fb9b0bbd9ae3da224ab35d5b2bc12e0278c6a3cb8f274d6a573577389bdd18d0f97a7f2ed6af32f28bebb407f05846bbb687e466db2184fb1b267e0fc17e2f - languageName: node - linkType: hard - -"@react-pdf/types@npm:^2.3.1": - version: 2.3.1 - resolution: "@react-pdf/types@npm:2.3.1" - checksum: 12f81e4c5056962c4d1e440d53074f4cf81dd9e3963bf33116a3471769f8a0fc9b2bce5da31a53300b231d02b4a50e015a04cdd10c9b39b8f876c6518e28eaad + checksum: e07b7574bab13999a2859dd6e8ddbbe3650ae63736c77ea36fc7f355d743a8954bfa8e59f43f8d0ecd5379e239a64882d0b88eb47a654019fb7575df0a235510 languageName: node linkType: hard -"@react-pdf/yoga@npm:^4.1.2": - version: 4.1.2 - resolution: "@react-pdf/yoga@npm:4.1.2" - dependencies: - "@babel/runtime": ^7.20.13 - checksum: e226c8181fc7709c5bfa33fc2c4b4eae08f4a032fdad8b71e43b4f0e6b185152b47f51734a137cd6fe892a1e920d4a0dcec76344abca001c45ff633d0a33a1b0 +"@react-pdf/types@npm:^2.6.0": + version: 2.7.0 + resolution: "@react-pdf/types@npm:2.7.0" + checksum: 199525ef20353e9c73d1b0f63a530da9a5a519dc62f692bcfe0933d234e263c03ca04a94cbf18a4b36b2bbdc8dbb6b3df1271fa9ef4f3e6737fddd08407ef2f0 languageName: node linkType: hard -"@redocly/ajv@npm:^8.11.0": - version: 8.11.0 - resolution: "@redocly/ajv@npm:8.11.0" +"@redocly/ajv@npm:^8.11.2": + version: 8.11.2 + resolution: "@redocly/ajv@npm:8.11.2" dependencies: fast-deep-equal: ^3.1.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 3e4c7a18226aefd2016628eed88a84588c49f6e721a1009081a20873f374a3d765c6a640856f6cb6bdd1732b027e3c82ea5c06d27427bc5a8af2cf8bb69bbd9b + uri-js-replace: ^1.0.1 + checksum: be3a48afe88166fa4e958bbd2dbfc31d9f67d538e902ee07c745b3fba31c13cff2b680311db7add61851f850bf6c55536645b300007ce148b3bee4660239dd19 + languageName: node + linkType: hard + +"@redocly/config@npm:^0.12.1": + version: 0.12.1 + resolution: "@redocly/config@npm:0.12.1" + checksum: abbeb34bffe42f4ae7420154578a3f17c5e05cb95e11e4180368a80186d36ac6fc7176ad4c00debe41bfc0e9c1eee136c133cdf2b50ae79a9fe41ccbdaa1dfb9 languageName: node linkType: hard "@redocly/openapi-core@npm:^1.0.0-rc.2": - version: 1.5.0 - resolution: "@redocly/openapi-core@npm:1.5.0" + version: 1.25.8 + resolution: "@redocly/openapi-core@npm:1.25.8" dependencies: - "@redocly/ajv": ^8.11.0 - "@types/node": ^14.11.8 + "@redocly/ajv": ^8.11.2 + "@redocly/config": ^0.12.1 colorette: ^1.2.0 + https-proxy-agent: ^7.0.4 js-levenshtein: ^1.1.6 js-yaml: ^4.1.0 lodash.isequal: ^4.5.0 @@ -17659,7 +13589,7 @@ __metadata: node-fetch: ^2.6.1 pluralize: ^8.0.0 yaml-ast-parser: 0.0.43 - checksum: 49718e03605fe326c863675b9b2c3f85608ec8d5bbffad4019d487023790b5f3acb4116c5f734d8db90ec72e491bd5bcaea7e3f4766d90635b17167fdfe37ee4 + checksum: 8dc747aef2f9e5f27392745dc6fd8f76b0f2051a6f90a49436d748e66ba482d3ae4b36b0087f0882f6bd8a311b4a3c0220adbe82a132f2c7e5a2b5fb656f1654 languageName: node linkType: hard @@ -17679,6 +13609,20 @@ __metadata: languageName: node linkType: hard +"@repeaterjs/repeater@npm:3.0.4": + version: 3.0.4 + resolution: "@repeaterjs/repeater@npm:3.0.4" + checksum: cca0db3e802bc26fcce0b4a574074d9956da53bf43094de03c0e4732d05e13441279a92f0b96e2a7a39da50933684947a138c1213406eaafe39cfd4683d6c0df + languageName: node + linkType: hard + +"@repeaterjs/repeater@npm:^3.0.4": + version: 3.0.6 + resolution: "@repeaterjs/repeater@npm:3.0.6" + checksum: aae878b953162bec77c94b45f2236ddfc01a65308267c7cb30220fa2f8511654a302c0d32aad228c58241d685607d7bb35b6d528b2879355e6636ff08fddb266 + languageName: node + linkType: hard + "@rnx-kit/chromium-edge-launcher@npm:^1.0.0": version: 1.0.0 resolution: "@rnx-kit/chromium-edge-launcher@npm:1.0.0" @@ -17693,6 +13637,125 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm64@npm:4.24.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.24.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.24.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rtsao/scc@npm:^1.1.0": + version: 1.1.0 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01 + languageName: node + linkType: hard + "@rushstack/eslint-patch@npm:^1.3.3": version: 1.10.4 resolution: "@rushstack/eslint-patch@npm:1.10.4" @@ -17734,15 +13797,6 @@ __metadata: languageName: node linkType: hard -"@sideway/address@npm:^4.1.3": - version: 4.1.4 - resolution: "@sideway/address@npm:4.1.4" - dependencies: - "@hapi/hoek": ^9.0.0 - checksum: b9fca2a93ac2c975ba12e0a6d97853832fb1f4fb02393015e012b47fa916a75ca95102d77214b2a29a2784740df2407951af8c5dde054824c65577fd293c4cdb - languageName: node - linkType: hard - "@sideway/address@npm:^4.1.5": version: 4.1.5 resolution: "@sideway/address@npm:4.1.5" @@ -17790,20 +13844,6 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.24.1": - version: 0.24.46 - resolution: "@sinclair/typebox@npm:0.24.46" - checksum: 19d708fe93a42dce4ed6452a58909c841ad3484a6388a5b5d82e7ab11f8bfbd013bf34c32d6234a55532e4ff5f8ab9e1df17bb13b389aca038c7f05a8950a72a - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.25.16": - version: 0.25.24 - resolution: "@sinclair/typebox@npm:0.25.24" - checksum: 10219c58f40b8414c50b483b0550445e9710d4fe7b2c4dccb9b66533dd90ba8e024acc776026cebe81e87f06fa24b07fdd7bc30dd277eb9cc386ec50151a3026 - languageName: node - linkType: hard - "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -17829,21 +13869,12 @@ __metadata: linkType: hard "@sindresorhus/transliterate@npm:^0.1.0": - version: 0.1.1 - resolution: "@sindresorhus/transliterate@npm:0.1.1" + version: 0.1.2 + resolution: "@sindresorhus/transliterate@npm:0.1.2" dependencies: escape-string-regexp: ^2.0.0 lodash.deburr: ^4.1.0 - checksum: 6610a360cbd625f512f7f37bcc8d7012c3d99ab0e65d06ba49acd893ce6068e021d57d3e4730f35972224e2b8f8579c31f2ac7590b55b0efd2979a8523dd9aa2 - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^2.0.0": - version: 2.0.0 - resolution: "@sinonjs/commons@npm:2.0.0" - dependencies: - type-detect: 4.0.8 - checksum: 5023ba17edf2b85ed58262313b8e9b59e23c6860681a9af0200f239fe939e2b79736d04a260e8270ddd57196851dde3ba754d7230be5c5234e777ae2ca8af137 + checksum: f4a0fdf710adcad901bdd30dc02acbb33d464d7945fb2d6dc8130cf8e5e1151d66e2b9b20633f4c27c014ddba511a0a976d74304e4cbfacb8044d3c6f052d547 languageName: node linkType: hard @@ -17866,20 +13897,20 @@ __metadata: linkType: hard "@sinonjs/fake-timers@npm:^10.0.2": - version: 10.0.2 - resolution: "@sinonjs/fake-timers@npm:10.0.2" + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: - "@sinonjs/commons": ^2.0.0 - checksum: c62aa98e7cefda8dedc101ce227abc888dc46b8ff9706c5f0a8dfd9c3ada97d0a5611384738d9ba0b26b59f99c2ba24efece8e779bb08329e9e87358fa309824 + "@sinonjs/commons": ^3.0.0 + checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 languageName: node linkType: hard "@sinonjs/fake-timers@npm:^13.0.1": - version: 13.0.2 - resolution: "@sinonjs/fake-timers@npm:13.0.2" + version: 13.0.4 + resolution: "@sinonjs/fake-timers@npm:13.0.4" dependencies: "@sinonjs/commons": ^3.0.1 - checksum: f0170da0d5a18dbc88b0cc15dffbb0abec201997eeaf8ab9f47be197731e6363a2ccc4c7dd19629fe6dd6c194bb2f9801ac5b6918e601127701cb7172c2602f8 + checksum: 51c73e5c9be3b1c75250f2ee328765e49b1962dffd79f452eb0eed20bb3c58e65c135fc320cda7e7ff4fa0e0164b404cfe7f4d42b7c918910f49f1480042bd3b languageName: node linkType: hard @@ -17901,131 +13932,129 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^3.1.5": - version: 3.1.5 - resolution: "@smithy/abort-controller@npm:3.1.5" +"@smithy/abort-controller@npm:^3.1.5, @smithy/abort-controller@npm:^3.1.6": + version: 3.1.6 + resolution: "@smithy/abort-controller@npm:3.1.6" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 538c88d6dfe84d92a7dead4eb149d48bc59857df8235057727c0481e851b0ceea6aabfd5cc059c9e37e66fbadead461c85d6a7c8436e2db6681f06333e814281 + checksum: abba34cc47b6f7951402da1f94465616b84dedf55e0b0467b53f7848b9cb3e82b94869fa637278aa2f65809613e872582791053fd23299e026edada4a5ec1c1c languageName: node linkType: hard -"@smithy/chunked-blob-reader-native@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/chunked-blob-reader-native@npm:3.0.0" +"@smithy/chunked-blob-reader-native@npm:^3.0.1": + version: 3.0.1 + resolution: "@smithy/chunked-blob-reader-native@npm:3.0.1" dependencies: "@smithy/util-base64": ^3.0.0 tslib: ^2.6.2 - checksum: f97c0c0ce5e9bd2350883df3c232311aa82eb87eb387125f685900326f86fc3aca208e9004291f742f6978abf91a0c1112cc9a803cd0caf0dffbcfa9b6d0239e + checksum: b133aebc7662923f88eb859acf3dee95d54fb99effef3ed34384e137d479a8e88549f7888d037919f2821480689ea57892c9d7eeb730fa622ee9f55e3bb9a684 languageName: node linkType: hard -"@smithy/chunked-blob-reader@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/chunked-blob-reader@npm:3.0.0" +"@smithy/chunked-blob-reader@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/chunked-blob-reader@npm:4.0.0" dependencies: tslib: ^2.6.2 - checksum: 6f520884ade14f1073adb640db2f03eb22a9920f342f37958df3e98327890b741cd909b16cbbc6f70c6c8dd250d6b3a8d76841b685d4871b0403f309267def4f + checksum: 45107be7b56efc598e445bf73e45694be10b933dcd5c0c38910311c463eff473e1eb82452b11ed6772986b518565ee8f3bec68cdfefe7c4a9a0c4b9968b582d8 languageName: node linkType: hard -"@smithy/config-resolver@npm:^3.0.9": - version: 3.0.9 - resolution: "@smithy/config-resolver@npm:3.0.9" +"@smithy/config-resolver@npm:^3.0.10, @smithy/config-resolver@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/config-resolver@npm:3.0.10" dependencies: - "@smithy/node-config-provider": ^3.1.8 - "@smithy/types": ^3.5.0 + "@smithy/node-config-provider": ^3.1.9 + "@smithy/types": ^3.6.0 "@smithy/util-config-provider": ^3.0.0 - "@smithy/util-middleware": ^3.0.7 + "@smithy/util-middleware": ^3.0.8 tslib: ^2.6.2 - checksum: 87e61be2ae1690a69974c0860d455a87c696c2da163384d22b582ee0fbee322b73f5d69dea754a2d8681d1b70fd4b0ca8d993ecb13eecf54f28ba3ffabfa0c40 + checksum: 55c2355db7eabfd70f0bf288d58cb0238f43b754d91f46febf7fd04617e6107d26e2899ede2b37fbd977980bb12fdbdb688fc5f53654202e946fe3c258cef5d1 languageName: node linkType: hard -"@smithy/core@npm:^2.4.7": - version: 2.4.7 - resolution: "@smithy/core@npm:2.4.7" +"@smithy/core@npm:^2.4.7, @smithy/core@npm:^2.5.1": + version: 2.5.1 + resolution: "@smithy/core@npm:2.5.1" dependencies: - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/middleware-retry": ^3.0.22 - "@smithy/middleware-serde": ^3.0.7 - "@smithy/protocol-http": ^4.1.4 - "@smithy/smithy-client": ^3.3.6 - "@smithy/types": ^3.5.0 + "@smithy/middleware-serde": ^3.0.8 + "@smithy/protocol-http": ^4.1.5 + "@smithy/types": ^3.6.0 "@smithy/util-body-length-browser": ^3.0.0 - "@smithy/util-middleware": ^3.0.7 + "@smithy/util-middleware": ^3.0.8 + "@smithy/util-stream": ^3.2.1 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: da0ed899f2e64f4221a943f2c641a81df955316639cb52ecf3fa99b3e0fcde447a531aa9e58f959cc153ef78ec562fcc6f9b41261f8f331585583f1efa51efa5 + checksum: 9175f48eca64f6b304335e32e09c6276aadf7d26cb9180da0a120a2b07c12d8dbe51de2ccce78e98c60729ce4eefe28e7ca95c169432a8049560564d780d1a81 languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^3.2.4": - version: 3.2.4 - resolution: "@smithy/credential-provider-imds@npm:3.2.4" +"@smithy/credential-provider-imds@npm:^3.2.4, @smithy/credential-provider-imds@npm:^3.2.5": + version: 3.2.5 + resolution: "@smithy/credential-provider-imds@npm:3.2.5" dependencies: - "@smithy/node-config-provider": ^3.1.8 - "@smithy/property-provider": ^3.1.7 - "@smithy/types": ^3.5.0 - "@smithy/url-parser": ^3.0.7 + "@smithy/node-config-provider": ^3.1.9 + "@smithy/property-provider": ^3.1.8 + "@smithy/types": ^3.6.0 + "@smithy/url-parser": ^3.0.8 tslib: ^2.6.2 - checksum: d416f85450aa2402f37ea26a1052e596f92a8a1f9164524313b43ba1ceb9abd3b986c817dbcd6f4fc984054b246ec739efa786ad66ff5604777648a34fc58d54 + checksum: 4c8941e3c3806f605930c31e461b0b0fd6384f782c7df92b35e30581eca02d7c4c6d6f2b1c5cdb08fcf4823d98f0ceadc8481def968f1266f761df5dac672d8f languageName: node linkType: hard -"@smithy/eventstream-codec@npm:^3.1.6": - version: 3.1.6 - resolution: "@smithy/eventstream-codec@npm:3.1.6" +"@smithy/eventstream-codec@npm:^3.1.7": + version: 3.1.7 + resolution: "@smithy/eventstream-codec@npm:3.1.7" dependencies: "@aws-crypto/crc32": 5.2.0 - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 "@smithy/util-hex-encoding": ^3.0.0 tslib: ^2.6.2 - checksum: 9b7ec78dd0b15c2950d5f89c1240adda5240cab252ecd0e68ed55ac4da5fca4802b237341d42e8fc638c4db93f31459c40c7eb79d8dfc0446e2a925c3fdc1ba2 + checksum: e0a3b187e984ca6a248dbd591f9c4d5b981df5018c46c4cb9ebf47cf5f354be124471a121e9dc9c25ce80e089f2ed5847a15666e89c83327d7e25ea4d46fb92e languageName: node linkType: hard "@smithy/eventstream-serde-browser@npm:^3.0.10": - version: 3.0.10 - resolution: "@smithy/eventstream-serde-browser@npm:3.0.10" + version: 3.0.11 + resolution: "@smithy/eventstream-serde-browser@npm:3.0.11" dependencies: - "@smithy/eventstream-serde-universal": ^3.0.9 - "@smithy/types": ^3.5.0 + "@smithy/eventstream-serde-universal": ^3.0.10 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 292382ae41f5ca0d9d6b1791de2d7d91f93c6957c08ac7179b91d05afa1f116c754b260def0ead1d23ea8fd0f4359969db024470b74be976edadc69c931cb254 + checksum: ca430cd9541889f1e22a508247c52f84387b51c1c580bdd7acd93ca74347bcaaf1cdfbf04709ce3667afcfa0e3602bbfcb018a6290b3966411a3aa48a38f3aa7 languageName: node linkType: hard "@smithy/eventstream-serde-config-resolver@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/eventstream-serde-config-resolver@npm:3.0.7" + version: 3.0.8 + resolution: "@smithy/eventstream-serde-config-resolver@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: c1762b21c665a580bb3c89e8811e9b0a22122ebd8633db2a78693f40910b5788c3e5603c905773bec6a1a72bf0e9785a4c011fded658f6f6f2ba616fc4ac5dd6 + checksum: 44da1b399e296c713643e60ff7fbd34a62c8bba147ea515e6ba98293df11275b62ada04307750d8f8015f717bbe13d317453f47e0d02dc714debc4e043eb7105 languageName: node linkType: hard "@smithy/eventstream-serde-node@npm:^3.0.9": - version: 3.0.9 - resolution: "@smithy/eventstream-serde-node@npm:3.0.9" + version: 3.0.10 + resolution: "@smithy/eventstream-serde-node@npm:3.0.10" dependencies: - "@smithy/eventstream-serde-universal": ^3.0.9 - "@smithy/types": ^3.5.0 + "@smithy/eventstream-serde-universal": ^3.0.10 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 3f5dd216366f461d99c9100215d7e122fccf32ae78ffb6a5164277363ed1510c087bfcb3a31731f48368c179f57ea9b46ae2a19bbe3562da07cd6ada06a47e9c + checksum: 8e8f71bfa25d017f7914ad74258cf5f8c68a6bdc33ab32b126d95e0cb7ea796488d06405695f90e8af90668302e282ac8d4e66e70eca48d92d0cfa3b8e9592f2 languageName: node linkType: hard -"@smithy/eventstream-serde-universal@npm:^3.0.9": - version: 3.0.9 - resolution: "@smithy/eventstream-serde-universal@npm:3.0.9" +"@smithy/eventstream-serde-universal@npm:^3.0.10": + version: 3.0.10 + resolution: "@smithy/eventstream-serde-universal@npm:3.0.10" dependencies: - "@smithy/eventstream-codec": ^3.1.6 - "@smithy/types": ^3.5.0 + "@smithy/eventstream-codec": ^3.1.7 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: d247fdb9155063af562123dd1970f8d17a1871c3793355fc86c875bf3088aca44e6f3b17a704f4d9331a84ac9811b4592e3ecab54a90e600d6e717fc9f6781c6 + checksum: ee3717312841438f5e173866475f47aa7a56a9426657bc89fffc497c15356617688ed17d6a09533918c11fbff68ce6f7998fd9d746030a9bc25a5e353ca8e9c0 languageName: node linkType: hard @@ -18042,48 +14071,61 @@ __metadata: languageName: node linkType: hard +"@smithy/fetch-http-handler@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/fetch-http-handler@npm:4.0.0" + dependencies: + "@smithy/protocol-http": ^4.1.5 + "@smithy/querystring-builder": ^3.0.8 + "@smithy/types": ^3.6.0 + "@smithy/util-base64": ^3.0.0 + tslib: ^2.6.2 + checksum: 43fc88515227e0d66b6b6a56a8e7a7f9c9690b32c51265859d40c1f4ace3a8a9ebba78e095715fe85a508d32c4f237c09f722e1e0c86d15a3fc81edc961a5051 + languageName: node + linkType: hard + "@smithy/hash-blob-browser@npm:^3.1.6": - version: 3.1.6 - resolution: "@smithy/hash-blob-browser@npm:3.1.6" + version: 3.1.7 + resolution: "@smithy/hash-blob-browser@npm:3.1.7" dependencies: - "@smithy/chunked-blob-reader": ^3.0.0 - "@smithy/chunked-blob-reader-native": ^3.0.0 - "@smithy/types": ^3.5.0 + "@smithy/chunked-blob-reader": ^4.0.0 + "@smithy/chunked-blob-reader-native": ^3.0.1 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 4807ad388f552a5f27f168c4efa9cd88c14a2dc75a047137ccab88ef2dfb70729ef7800ca2ae12f2a41adb3149c5d4605eac81ef64880912766d6b59d258ad81 + checksum: d1e790e63147357f1c5b210cacf727f6ad75c78d8246c98a1d9af17a757ce9d2621a0a21e5171b4de9526ce731db15a1288c489c6f396d54314f74a29d667ae4 languageName: node linkType: hard "@smithy/hash-node@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/hash-node@npm:3.0.7" + version: 3.0.8 + resolution: "@smithy/hash-node@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 "@smithy/util-buffer-from": ^3.0.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 7a3b432e498efc1d8f229d58a760fae92f1d8a434eb9865b2b4dccea521bd318a97a366e0fdd2e41e2eb02ee6c78c9d3a076a993d5c970e33b0051b4d209128b + checksum: 9a2e2e8ea044008345e64406a5ecbc23a507b00eae42e71455f0b05c638a21da57a68e43d73254236203187d7943b864c750fc62f95825cc5340dd95767530c3 languageName: node linkType: hard "@smithy/hash-stream-node@npm:^3.1.6": - version: 3.1.6 - resolution: "@smithy/hash-stream-node@npm:3.1.6" + version: 3.1.7 + resolution: "@smithy/hash-stream-node@npm:3.1.7" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: e6427f7865667ad3a72eb9aace0d19718100fd4b14fb9f1e85c09b68b0b7ed608e26d1c2b9c6829be2f89aaa3fa3c122b1a5d5beea43c1026a43f70e748d8483 + checksum: 2bd580a8759a68c991fa5817d47e828029648a870ad52da8ba175819d6324603934e0d34b83139ac21ddb265f9adcaffbd696105ca0783b193fd5805dc3e3ca3 languageName: node linkType: hard "@smithy/invalid-dependency@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/invalid-dependency@npm:3.0.7" + version: 3.0.8 + resolution: "@smithy/invalid-dependency@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 6ccfd995686c12cceedf4408021d30e83b88785d77f5ab2e0ee2fab034828a782464f47828acf76d282d37daf20ffff9f27bdd1ce0499926299e560143b28cad + checksum: ad55921e703ea3396a7d03b4515c2c0100d3c494865594a8a73b160e2913cac442d61a2545bcb248fedf00bb150cce2c33827d1d12527e34070e7fd8e114d2d6 languageName: node linkType: hard @@ -18106,211 +14148,213 @@ __metadata: linkType: hard "@smithy/md5-js@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/md5-js@npm:3.0.7" + version: 3.0.8 + resolution: "@smithy/md5-js@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: d9badbd5361babc30103ef9e9a6c3b24b49d058de1ccd6765fbe1867753f9c8a97100e1ce88509fa50e1aec3135603b466c2ef21af5acba281f745a6eea0f034 + checksum: 3159a01ff4fab7ebbfa41c2ba6baa5f4c2333dafff6232dea956fc82a6354ad97a70c67f4a28e7c919a5e6be418a3c2427073948739941b194ab9bd238e13290 languageName: node linkType: hard "@smithy/middleware-content-length@npm:^3.0.9": - version: 3.0.9 - resolution: "@smithy/middleware-content-length@npm:3.0.9" + version: 3.0.10 + resolution: "@smithy/middleware-content-length@npm:3.0.10" dependencies: - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 + "@smithy/protocol-http": ^4.1.5 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 0299e2573942b5f073d5dadf45778b61db530f79356e08594eb947060c603202282f45e6fd8c8f5e64f6184ca6b987cd3e8f55dfc8d189809af3d7b47230a2d7 + checksum: 776fd9014240109328b6823be8649322390bde7aa468750920be3e6ed268a4e380f5b3fcfbe15b2b8af1b6e4b4fedda9a446b76cc247ca252b95380646ac80b5 languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^3.1.4": - version: 3.1.4 - resolution: "@smithy/middleware-endpoint@npm:3.1.4" - dependencies: - "@smithy/middleware-serde": ^3.0.7 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/shared-ini-file-loader": ^3.1.8 - "@smithy/types": ^3.5.0 - "@smithy/url-parser": ^3.0.7 - "@smithy/util-middleware": ^3.0.7 +"@smithy/middleware-endpoint@npm:^3.1.4, @smithy/middleware-endpoint@npm:^3.2.1": + version: 3.2.1 + resolution: "@smithy/middleware-endpoint@npm:3.2.1" + dependencies: + "@smithy/core": ^2.5.1 + "@smithy/middleware-serde": ^3.0.8 + "@smithy/node-config-provider": ^3.1.9 + "@smithy/shared-ini-file-loader": ^3.1.9 + "@smithy/types": ^3.6.0 + "@smithy/url-parser": ^3.0.8 + "@smithy/util-middleware": ^3.0.8 tslib: ^2.6.2 - checksum: 34cc4115fc57c9db90e6b74f4039e35e9e3cec94411173a3c0c14bacf99d86712ee51423b98b4d62695a5425a53d108fc0a2e11510df4b17a36f0496af03ddc1 + checksum: acc41e1b665b6a0c3cf2952a44b4cd1ce980866b44fe4b0ed9208a6067c3aa15ebe646623b14375be6c04ab73fa74fb95eeeca6905fc27092ce93495c77d8b9b languageName: node linkType: hard "@smithy/middleware-retry@npm:^3.0.22": - version: 3.0.22 - resolution: "@smithy/middleware-retry@npm:3.0.22" - dependencies: - "@smithy/node-config-provider": ^3.1.8 - "@smithy/protocol-http": ^4.1.4 - "@smithy/service-error-classification": ^3.0.7 - "@smithy/smithy-client": ^3.3.6 - "@smithy/types": ^3.5.0 - "@smithy/util-middleware": ^3.0.7 - "@smithy/util-retry": ^3.0.7 + version: 3.0.25 + resolution: "@smithy/middleware-retry@npm:3.0.25" + dependencies: + "@smithy/node-config-provider": ^3.1.9 + "@smithy/protocol-http": ^4.1.5 + "@smithy/service-error-classification": ^3.0.8 + "@smithy/smithy-client": ^3.4.2 + "@smithy/types": ^3.6.0 + "@smithy/util-middleware": ^3.0.8 + "@smithy/util-retry": ^3.0.8 tslib: ^2.6.2 uuid: ^9.0.1 - checksum: 426c98789e64864cedfcc0f0d75eaca820c855c6282491ed1acb52cad451b68ea61247fbd5a85b47a719387625a0074171a05ffecdb49b85bfcd85117345ac40 + checksum: d10264cbff951b3b9585b54cc0e67de6099ed67461a34d83266e197fc48bea45fc7207ed7329c567390be6f08aeb84a6e7fef5f4fd770da9cad0028fc6f61d65 languageName: node linkType: hard -"@smithy/middleware-serde@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/middleware-serde@npm:3.0.7" +"@smithy/middleware-serde@npm:^3.0.7, @smithy/middleware-serde@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/middleware-serde@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 6ec3a000049a5e3212c5814b5500b562669a75ef42f4efecf13f0726614982488b89bb3d55fd163eb655a1e58bf490e387f8f5d5bfb4fc51bb63dffd550e15e6 + checksum: 3d1ba269680bcf0cea6ea1c0e6d20eaf9de3597a687533607cc1ec49dad8669424e41bf3498dcdd21613f7791b0406db1846c2cdd6571682e4be8cb8055a85da languageName: node linkType: hard -"@smithy/middleware-stack@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/middleware-stack@npm:3.0.7" +"@smithy/middleware-stack@npm:^3.0.7, @smithy/middleware-stack@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/middleware-stack@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: f29af8abb52e58b9cbb59c5187e0758279dd7d50c350ae2ad3cf123277fb652976c72be44d0be459e6db42294a0dca24eaf0fa6aead33a9e4b7109437102246f + checksum: c4a24dcdb1db8f347d266ee97676daf1f5bb495aa6c1e59992378bebe39265be14be5c3f7cf9ae35a8ffe68476cfcfe9000a87e9b00062538359c4507f4060ea languageName: node linkType: hard -"@smithy/node-config-provider@npm:^3.1.8": - version: 3.1.8 - resolution: "@smithy/node-config-provider@npm:3.1.8" +"@smithy/node-config-provider@npm:^3.1.8, @smithy/node-config-provider@npm:^3.1.9": + version: 3.1.9 + resolution: "@smithy/node-config-provider@npm:3.1.9" dependencies: - "@smithy/property-provider": ^3.1.7 - "@smithy/shared-ini-file-loader": ^3.1.8 - "@smithy/types": ^3.5.0 + "@smithy/property-provider": ^3.1.8 + "@smithy/shared-ini-file-loader": ^3.1.9 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 20b6d0e5e2487954a1a7235ca4bd4efa81e90f5cbd25b361e70e5d173807b346646109c62ace7c32d999938cb0825fa9aea54b597e487b18879dc433676d4e0c + checksum: fc0d27ff620475f406cb0f3e8527e8dcf56449ec3faad96b9738d26ec825d1b75a55b2f28750efbde383d163c5e25bb32ad09ba59d7d40e491898b9cc6a2eb2a languageName: node linkType: hard -"@smithy/node-http-handler@npm:^3.2.4": - version: 3.2.4 - resolution: "@smithy/node-http-handler@npm:3.2.4" +"@smithy/node-http-handler@npm:^3.2.4, @smithy/node-http-handler@npm:^3.2.5": + version: 3.2.5 + resolution: "@smithy/node-http-handler@npm:3.2.5" dependencies: - "@smithy/abort-controller": ^3.1.5 - "@smithy/protocol-http": ^4.1.4 - "@smithy/querystring-builder": ^3.0.7 - "@smithy/types": ^3.5.0 + "@smithy/abort-controller": ^3.1.6 + "@smithy/protocol-http": ^4.1.5 + "@smithy/querystring-builder": ^3.0.8 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 658934366953828af04e5f8d0229f24e8ff783c1bd34b179203099321e4b41b19dfd921c3ef431d8067fc2d49a0c806d0c758fff6ea10606e092480dcf6b0f26 + checksum: ea8d4148dd760f031f9eeb2aec2480685bb1a40d7ac9c482eb3170df0316cae58433a6c803d85b046c132a19b8b4874741fae054355b5584facbd46c18889c83 languageName: node linkType: hard -"@smithy/property-provider@npm:^3.1.7": - version: 3.1.7 - resolution: "@smithy/property-provider@npm:3.1.7" +"@smithy/property-provider@npm:^3.1.7, @smithy/property-provider@npm:^3.1.8": + version: 3.1.8 + resolution: "@smithy/property-provider@npm:3.1.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: c0b9fdbfeb4100ddc27811f32af75d3b02496b2323b215f30a13f4de6f4d821597731b02123061cea23b6bb81fba91bc24ecc3cf0e8e035a8a100559b7d43e27 + checksum: acf8a3cc0cad53503870580e164b41d79e34f1129c5b6fcf99d8dc09a0a89055889430f9552bead9bafc82775fed5f5f4c8eb3f7e53d91f759bb164a3a68cea5 languageName: node linkType: hard -"@smithy/protocol-http@npm:^4.1.4": - version: 4.1.4 - resolution: "@smithy/protocol-http@npm:4.1.4" +"@smithy/protocol-http@npm:^4.1.4, @smithy/protocol-http@npm:^4.1.5": + version: 4.1.5 + resolution: "@smithy/protocol-http@npm:4.1.5" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: c0655e2031ec6ae96d63a125b76ca9bb46b3e4b8f4436ef0ea9bcf08303c1b6cdd4f0d17a1cd87cfdbe60bde34e5001d65f91d4e3eaa24cf560ed718967686de + checksum: 2e581594d03ff367ebc0a1ab0443e8b148f39a3ea810333861f4aed639239e5a261bedbb49f6555cfdb9682b88cd881715764c2dfe7e18a7a003385a0b6200d5 languageName: node linkType: hard -"@smithy/querystring-builder@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/querystring-builder@npm:3.0.7" +"@smithy/querystring-builder@npm:^3.0.7, @smithy/querystring-builder@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/querystring-builder@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 "@smithy/util-uri-escape": ^3.0.0 tslib: ^2.6.2 - checksum: 0c41ce1993ce4b7dc509bc1fa50c42000a1cb5801601fc28d9113494349c337e88f77bff998f0debf0be0eba41d67d653a6648eea0f5b3b1e0f8a3cd57229631 + checksum: b07a766fb1e94e06116aef6534a31bbd4bb1bb94844d61c67615316d19aac82f94781fab779655bc03a46d70dda9caf3ad991a3e41548fbbba92783103f4f43e languageName: node linkType: hard -"@smithy/querystring-parser@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/querystring-parser@npm:3.0.7" +"@smithy/querystring-parser@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/querystring-parser@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 5ef80af89f1c1aed44ce263d91da5ba48f0858136d1f1b041524e6cbcc7d5c5345642ff6ef876fe1469107a3cd9815fc084057be2601bcafa6ff383c21dff5d0 + checksum: 4ad9edfd96f084432157abd4953840f051ca4678963193bdc0ec7b210c79a649ddc023e327c39bd835ef7f56447dfaf2e47210738799ba9d044befacbe316a25 languageName: node linkType: hard -"@smithy/service-error-classification@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/service-error-classification@npm:3.0.7" +"@smithy/service-error-classification@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/service-error-classification@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 - checksum: a6370ee348f4b66698a193a680ab5c81e0ed4d5fac8204cbbd9967c869feceb0b6d129f8d0e4823538ab699d7f3ab3ff8151e791221ee5f97742423b0e76b321 + "@smithy/types": ^3.6.0 + checksum: cba6d33eb0e7482e557c303638416ea8678f80fa5782c97dd67e5b72741f22e2446370dc0ef9b16802d73cdfb7a5e4e5587c1d4abb5aa5ca9c33525137b4cf2b languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^3.1.8": - version: 3.1.8 - resolution: "@smithy/shared-ini-file-loader@npm:3.1.8" +"@smithy/shared-ini-file-loader@npm:^3.1.8, @smithy/shared-ini-file-loader@npm:^3.1.9": + version: 3.1.9 + resolution: "@smithy/shared-ini-file-loader@npm:3.1.9" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 0ad620cb4a641786f205e6f01ac00433afee6dbe5d14180458841cab3b9322b580caf18c9f9cf24d71d063bdf3b5716b159045e386f10f1c87847fff85272b70 + checksum: 571cc785659551d875fb76c53d116bf6f3978d1b698be096e9218dbbe1dd42efbfb174e151528103888faf7c9854e66f3e5ca395b9c359e37f876c20b22a4f97 languageName: node linkType: hard "@smithy/signature-v4@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/signature-v4@npm:4.2.0" + version: 4.2.1 + resolution: "@smithy/signature-v4@npm:4.2.1" dependencies: "@smithy/is-array-buffer": ^3.0.0 - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 + "@smithy/protocol-http": ^4.1.5 + "@smithy/types": ^3.6.0 "@smithy/util-hex-encoding": ^3.0.0 - "@smithy/util-middleware": ^3.0.7 + "@smithy/util-middleware": ^3.0.8 "@smithy/util-uri-escape": ^3.0.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: edf0fa3ee5a65dbc132dd3a9f9ca6dcbeefa33b96e701dd7de4cb965ca3000ad706bf7ec87c50a9f71a86a6610fac5315ab96d5247e6b550b75548a3d9ecb667 + checksum: 783d8c0a780fbb94084819ea624e75a72daf84c480fa3215b0edd7689041925dbbab3e2785acdfef564c5623631d09aae4915f27cfd1357d2bd0f26349041e56 languageName: node linkType: hard -"@smithy/smithy-client@npm:^3.3.6": - version: 3.3.6 - resolution: "@smithy/smithy-client@npm:3.3.6" - dependencies: - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/middleware-stack": ^3.0.7 - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 - "@smithy/util-stream": ^3.1.9 +"@smithy/smithy-client@npm:^3.3.6, @smithy/smithy-client@npm:^3.4.2": + version: 3.4.2 + resolution: "@smithy/smithy-client@npm:3.4.2" + dependencies: + "@smithy/core": ^2.5.1 + "@smithy/middleware-endpoint": ^3.2.1 + "@smithy/middleware-stack": ^3.0.8 + "@smithy/protocol-http": ^4.1.5 + "@smithy/types": ^3.6.0 + "@smithy/util-stream": ^3.2.1 tslib: ^2.6.2 - checksum: ba570b8d75f985682aab956e83a97f7c884507b63afeda01d011ef33a3306380249a1a01f2e044dbebbe650f704f46bfeebe40d51cc568cf55f10e5e5dfe29ba + checksum: 4b53e695e18bf0ed4805dd66839e272129be5384f6de5356a2adc03311f5c372766b490a3c001086aec8728f6c9bb90ca625a09e9b4c3fe875c1ee7567118f34 languageName: node linkType: hard -"@smithy/types@npm:^3.5.0": - version: 3.5.0 - resolution: "@smithy/types@npm:3.5.0" +"@smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0": + version: 3.6.0 + resolution: "@smithy/types@npm:3.6.0" dependencies: tslib: ^2.6.2 - checksum: 5d297005549991f6928daf038e0610c959423add6e435af970b8c8dcac988bf62b0cdbf4dd5df43197d9bc7af5c290792f17af6e2f5051be2ffa40dd98ab4659 + checksum: 4f581dc1c3e2dee8e1134fafb47de2c301330ea668214eb1a81d26b85acdb48a7e52008da0d15a402e998a79bed285a74b88949a5a4a3fe0aef38c28620ab795 languageName: node linkType: hard -"@smithy/url-parser@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/url-parser@npm:3.0.7" +"@smithy/url-parser@npm:^3.0.7, @smithy/url-parser@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/url-parser@npm:3.0.8" dependencies: - "@smithy/querystring-parser": ^3.0.7 - "@smithy/types": ^3.5.0 + "@smithy/querystring-parser": ^3.0.8 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: b0e4939c95de0183d90335a173d642602267070748fb95030d0949f5d113b0048c397e949b0861ed352d9c9a45221348f18a0a636d3219262da56e139232b004 + checksum: 1bf2143b298a4afdf6a8fa40f7b018ad59eb79b717e2bafcd8634c20893485c456c12fe73659d342a3d3a51cdbb10afea61fac285e7ce5fa0f66d7695ad7d10b languageName: node linkType: hard @@ -18373,41 +14417,41 @@ __metadata: linkType: hard "@smithy/util-defaults-mode-browser@npm:^3.0.22": - version: 3.0.22 - resolution: "@smithy/util-defaults-mode-browser@npm:3.0.22" + version: 3.0.25 + resolution: "@smithy/util-defaults-mode-browser@npm:3.0.25" dependencies: - "@smithy/property-provider": ^3.1.7 - "@smithy/smithy-client": ^3.3.6 - "@smithy/types": ^3.5.0 + "@smithy/property-provider": ^3.1.8 + "@smithy/smithy-client": ^3.4.2 + "@smithy/types": ^3.6.0 bowser: ^2.11.0 tslib: ^2.6.2 - checksum: 28fdf977c70f5d973230dacdf5f7e81e3f4e8858ed8f7aa2a9f7c794ebdaddd2567c7765492dcaac4c745749b59d6771d4eac9c01e2eed9c0afd206b0308e843 + checksum: 87c4b346d753712f7fe501920c6bb9712d7ec56670e49aa5d6db40ebe0f0cfa58d9e1d27e96e40c6be1721cf81bd0b2f29c077efc3b8dece074e3a6d175fa1a4 languageName: node linkType: hard "@smithy/util-defaults-mode-node@npm:^3.0.22": - version: 3.0.22 - resolution: "@smithy/util-defaults-mode-node@npm:3.0.22" - dependencies: - "@smithy/config-resolver": ^3.0.9 - "@smithy/credential-provider-imds": ^3.2.4 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/property-provider": ^3.1.7 - "@smithy/smithy-client": ^3.3.6 - "@smithy/types": ^3.5.0 + version: 3.0.25 + resolution: "@smithy/util-defaults-mode-node@npm:3.0.25" + dependencies: + "@smithy/config-resolver": ^3.0.10 + "@smithy/credential-provider-imds": ^3.2.5 + "@smithy/node-config-provider": ^3.1.9 + "@smithy/property-provider": ^3.1.8 + "@smithy/smithy-client": ^3.4.2 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 015321d014254f2f8b8a8a7cb82d8ed4000afe0b740dfedff8f2b66498c34b3e42b985ae5a2af71fd82145f11ece75b2649877fe5f7b34979c213c52978332df + checksum: e34c44bb5cbc8036765aa4f52e648a753b477b6653834291f7a2e0d82b7b58c1e741eac9a9a95d39b6f751c05013909c36ac0818e0015c24201af9d2e2fb0f5a languageName: node linkType: hard "@smithy/util-endpoints@npm:^2.1.3": - version: 2.1.3 - resolution: "@smithy/util-endpoints@npm:2.1.3" + version: 2.1.4 + resolution: "@smithy/util-endpoints@npm:2.1.4" dependencies: - "@smithy/node-config-provider": ^3.1.8 - "@smithy/types": ^3.5.0 + "@smithy/node-config-provider": ^3.1.9 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 63a362e1b521a63d9f535f4cfd4e4168e08be51f4e44a406adf840427b96f7295eee9343648a51c472a8fefa603b0f3644f876bc241b0a487d05343819f7aacf + checksum: 523df0a35807f3493cccaf1b76f88e14dedd3d9f29fe26a6f8c73cdfe09e57c67a1d3029cc585995b0f7fe20e07afa8b4dfa5f1d631a0c4c06c9f68075b61bad languageName: node linkType: hard @@ -18420,40 +14464,40 @@ __metadata: languageName: node linkType: hard -"@smithy/util-middleware@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/util-middleware@npm:3.0.7" +"@smithy/util-middleware@npm:^3.0.7, @smithy/util-middleware@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/util-middleware@npm:3.0.8" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: ed1f9751d650ba5d980a39e140f50780b655b8842b3a0f9de13aa38d87e327eabc2dda1a0b8f35fa633f46cadb223669837137ab2aa01b600753a0ddca7bcbfb + checksum: 6933c012f47c8b547b4986133a9dc2b264e9d71def155c4a9bce1bd1afbd73cb8e936c50ebc80190fc1d5bb26aee73ba012c567766dcd8a13c3d06bef841ab3c languageName: node linkType: hard -"@smithy/util-retry@npm:^3.0.7": - version: 3.0.7 - resolution: "@smithy/util-retry@npm:3.0.7" +"@smithy/util-retry@npm:^3.0.7, @smithy/util-retry@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/util-retry@npm:3.0.8" dependencies: - "@smithy/service-error-classification": ^3.0.7 - "@smithy/types": ^3.5.0 + "@smithy/service-error-classification": ^3.0.8 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 8af7ed849a7db65e9229a885490cd843c3f9b35248c661d6197a31d7cc0aa33c1790734b716e80e19b569d8149b1f6d8a3dfab4d887a155e64a3ea03bd7d504d + checksum: 5c0c63beb867828e6fd54f5fd83de412180df02de42f678df0f5a4412d10bfb5a74c22aa83a6f364c8292b5c82be94fe7af35d1ebe4e50a2c05946520f2ea870 languageName: node linkType: hard -"@smithy/util-stream@npm:^3.1.9": - version: 3.1.9 - resolution: "@smithy/util-stream@npm:3.1.9" +"@smithy/util-stream@npm:^3.1.9, @smithy/util-stream@npm:^3.2.1": + version: 3.2.1 + resolution: "@smithy/util-stream@npm:3.2.1" dependencies: - "@smithy/fetch-http-handler": ^3.2.9 - "@smithy/node-http-handler": ^3.2.4 - "@smithy/types": ^3.5.0 + "@smithy/fetch-http-handler": ^4.0.0 + "@smithy/node-http-handler": ^3.2.5 + "@smithy/types": ^3.6.0 "@smithy/util-base64": ^3.0.0 "@smithy/util-buffer-from": ^3.0.0 "@smithy/util-hex-encoding": ^3.0.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 4a9777742034ce0f5a3403bbe99c54c84cb26aa55ad5255346a006a574e658ae36b9d001666e931ef485614d288c76e33e35c8966b0af52e3fa6a7ac9772de8b + checksum: 3dc2b005d48a2e5ccb0761e7a7869f8af24d34a93eaa34f0586ba42fe79f13d48efb676e4aacbf02a54f1a225eb851d2c706c016f5f9d0b4fc127d8be69f5d90 languageName: node linkType: hard @@ -18487,20 +14531,20 @@ __metadata: linkType: hard "@smithy/util-waiter@npm:^3.1.6": - version: 3.1.6 - resolution: "@smithy/util-waiter@npm:3.1.6" + version: 3.1.7 + resolution: "@smithy/util-waiter@npm:3.1.7" dependencies: - "@smithy/abort-controller": ^3.1.5 - "@smithy/types": ^3.5.0 + "@smithy/abort-controller": ^3.1.6 + "@smithy/types": ^3.6.0 tslib: ^2.6.2 - checksum: 8375e3530c19565f98e3a6ccbf2a332939f3d01817f0d100d8fcf6033eac2233df9debef181572dce2589e76aae140a3cc713d8715d4b29f73a294a48f857575 + checksum: 190d992898d0c7d776c806657703c1ebd0ba2c24f4042ed0251dc8653799aefe12848a0445ee16cdbb05b76b5c81fc803b271957954aa614aaccb99dd3338caa languageName: node linkType: hard -"@sqltools/formatter@npm:1.2.2": - version: 1.2.2 - resolution: "@sqltools/formatter@npm:1.2.2" - checksum: 9c355f0961f93deea6540960b9ef031bd37cd5a92e3e236da05ea860cd408bf5ba039505150143202a59ca9ebf471ee607d1be4c24378320911a98bb0394fd46 +"@sqltools/formatter@npm:^1.2.2": + version: 1.2.5 + resolution: "@sqltools/formatter@npm:1.2.5" + checksum: 9b8354e715467d660daa5afe044860b5686bbb1a5cb67a60866b932effafbf5e8b429f19a8ae67cd412065a4f067161f227e182f3664a0245339d5eb1e26e355 languageName: node linkType: hard @@ -18990,13 +15034,6 @@ __metadata: languageName: node linkType: hard -"@storybook/channels@npm:7.0.24": - version: 7.0.24 - resolution: "@storybook/channels@npm:7.0.24" - checksum: 68f8fb9c0f59a21cf471aff0518aba0997e5691ca06c0d1d78a1578a9ecabce53b8d82b39a64f96d06669bfab68d99fe9d13fad6552f21df73e799e2170cd5b2 - languageName: node - linkType: hard - "@storybook/channels@npm:7.2.1": version: 7.2.1 resolution: "@storybook/channels@npm:7.2.1" @@ -19011,6 +15048,20 @@ __metadata: languageName: node linkType: hard +"@storybook/channels@npm:7.6.20": + version: 7.6.20 + resolution: "@storybook/channels@npm:7.6.20" + dependencies: + "@storybook/client-logger": 7.6.20 + "@storybook/core-events": 7.6.20 + "@storybook/global": ^5.0.0 + qs: ^6.10.0 + telejson: ^7.2.0 + tiny-invariant: ^1.3.1 + checksum: e600949b77b8ae2c865eab8e2f4022893843932c76f9f49f2ef6d8a8f62114f979d38fe93fed2d8899fa892bb1dcd353c81e292515a7bd8fbc944629939574b0 + languageName: node + linkType: hard + "@storybook/channels@npm:7.6.9": version: 7.6.9 resolution: "@storybook/channels@npm:7.6.9" @@ -19085,21 +15136,21 @@ __metadata: languageName: node linkType: hard -"@storybook/client-logger@npm:7.0.24": - version: 7.0.24 - resolution: "@storybook/client-logger@npm:7.0.24" +"@storybook/client-logger@npm:7.2.1": + version: 7.2.1 + resolution: "@storybook/client-logger@npm:7.2.1" dependencies: "@storybook/global": ^5.0.0 - checksum: fb71495535d3be50c6199b04caed286fd13de8d83e07fce5001bd4db247957b148f889c449074facfaa07fec39080de34d412985a0f4be6920cd5d34c3ce56fa + checksum: 02245de46062e317e570b7bd7a01399fa95b223676a43b25b6a1072f292876720b0055bd8a666824fdd249985f38a37753d4afe35e5095f94355aee0e9104d58 languageName: node linkType: hard -"@storybook/client-logger@npm:7.2.1": - version: 7.2.1 - resolution: "@storybook/client-logger@npm:7.2.1" +"@storybook/client-logger@npm:7.6.20": + version: 7.6.20 + resolution: "@storybook/client-logger@npm:7.6.20" dependencies: "@storybook/global": ^5.0.0 - checksum: 02245de46062e317e570b7bd7a01399fa95b223676a43b25b6a1072f292876720b0055bd8a666824fdd249985f38a37753d4afe35e5095f94355aee0e9104d58 + checksum: 98bf603df918a74bc5b34f344ba70356d8e2b889d8a5cbfb7a03c23dcf409029800319e5d3e0ff7e95545a2d4a989a53c2097eb7a36de808d287d466d4d92573 languageName: node linkType: hard @@ -19156,21 +15207,23 @@ __metadata: linkType: hard "@storybook/components@npm:^7.0.0": - version: 7.0.24 - resolution: "@storybook/components@npm:7.0.24" + version: 7.6.20 + resolution: "@storybook/components@npm:7.6.20" dependencies: - "@storybook/client-logger": 7.0.24 - "@storybook/csf": ^0.1.0 + "@radix-ui/react-select": ^1.2.2 + "@radix-ui/react-toolbar": ^1.0.4 + "@storybook/client-logger": 7.6.20 + "@storybook/csf": ^0.1.2 "@storybook/global": ^5.0.0 - "@storybook/theming": 7.0.24 - "@storybook/types": 7.0.24 + "@storybook/theming": 7.6.20 + "@storybook/types": 7.6.20 memoizerific: ^1.11.3 use-resize-observer: ^9.1.0 util-deprecate: ^1.0.2 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 7fbaf208f3e0f46b8eaabce2eb6901b04a07f0b361afe50efd378404bd19ffae0b6d507856ae9ba7ea1bcecc4e8eebad812b1ad808dcbae85f71c21fd8141c4b + checksum: 8f8bae3fb7a4d60b91c7d1e68126bea3684158991bc935618f06e9f196c57081e6a143cf540ead58ec4e8633cb5b723c56c87dd60f77958a00db2ab789e87388 languageName: node linkType: hard @@ -19259,6 +15312,15 @@ __metadata: languageName: node linkType: hard +"@storybook/core-events@npm:7.6.20": + version: 7.6.20 + resolution: "@storybook/core-events@npm:7.6.20" + dependencies: + ts-dedent: ^2.0.0 + checksum: 284f4df326200dc0bdfc74472dccab3bbed38cf8515baebe467830b562f9ace06fb6e5640b155b4ae462288b9f3257233c6b5212fcb9b2d3024f9e4d08d28457 + languageName: node + linkType: hard + "@storybook/core-events@npm:7.6.9": version: 7.6.9 resolution: "@storybook/core-events@npm:7.6.9" @@ -19434,16 +15496,7 @@ __metadata: languageName: node linkType: hard -"@storybook/csf@npm:^0.1.0": - version: 0.1.1 - resolution: "@storybook/csf@npm:0.1.1" - dependencies: - type-fest: ^2.19.0 - checksum: 1fbb827b50f0c15f21026a95d02cc096be4f9f2705ad8fd29f0a99330233606e69f6af7551d844ace2a4b8f08fcc9f81496d4d69160ba8c458698291efb60954 - languageName: node - linkType: hard - -"@storybook/csf@npm:^0.1.2": +"@storybook/csf@npm:^0.1.0, @storybook/csf@npm:^0.1.2": version: 0.1.11 resolution: "@storybook/csf@npm:0.1.11" dependencies: @@ -19853,18 +15906,18 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@npm:7.0.24": - version: 7.0.24 - resolution: "@storybook/theming@npm:7.0.24" +"@storybook/theming@npm:7.6.20": + version: 7.6.20 + resolution: "@storybook/theming@npm:7.6.20" dependencies: "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.0.24 + "@storybook/client-logger": 7.6.20 "@storybook/global": ^5.0.0 memoizerific: ^1.11.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: f44edb7f71816d4d05877b39873f64b3d1616d65c8b948d32a9160e4f9fdd550b6a8e7356d8badbe978e0bd83e39c106863e7ccb824b357dd15402b2b7bf9d11 + checksum: 2c3cbac759d300fb471acf4e01514f7728c48533c6e24c37b0351d9f0fcc9240dbdcf50067a81c3ff73b27a1da4227debb55a48ab2920368099871d1f49252ea languageName: node linkType: hard @@ -19895,27 +15948,27 @@ __metadata: languageName: node linkType: hard -"@storybook/types@npm:7.0.24": - version: 7.0.24 - resolution: "@storybook/types@npm:7.0.24" +"@storybook/types@npm:7.2.1": + version: 7.2.1 + resolution: "@storybook/types@npm:7.2.1" dependencies: - "@storybook/channels": 7.0.24 + "@storybook/channels": 7.2.1 "@types/babel__core": ^7.0.0 "@types/express": ^4.7.0 file-system-cache: 2.3.0 - checksum: 38bcd0c8a43760309281de433636c2d6ca4d59bfd99de62382afef8235b0a1dcf8fa9dae68263837962ee3a85cfd55f6e4e82adcba65cf07f48362f716c8cfec + checksum: 4ed8dd2897b413238bdebe4874af3f017660778be54582408018c2f8a54e1d6d292473324483ab1efd65dd283d46d8e96e1368b57dc53a4ad7a340c5764eed8b languageName: node linkType: hard -"@storybook/types@npm:7.2.1": - version: 7.2.1 - resolution: "@storybook/types@npm:7.2.1" +"@storybook/types@npm:7.6.20": + version: 7.6.20 + resolution: "@storybook/types@npm:7.6.20" dependencies: - "@storybook/channels": 7.2.1 + "@storybook/channels": 7.6.20 "@types/babel__core": ^7.0.0 "@types/express": ^4.7.0 file-system-cache: 2.3.0 - checksum: 4ed8dd2897b413238bdebe4874af3f017660778be54582408018c2f8a54e1d6d292473324483ab1efd65dd283d46d8e96e1368b57dc53a4ad7a340c5764eed8b + checksum: 1e0ae196c63ace6a9a0f06a42c7294cfc840665d1ff7ae6d9fd2466ed3d78387672951aa7a9064a719384938c57d8eb25c8089657710d95c546344fbc28d8df6 languageName: node linkType: hard @@ -19985,12 +16038,12 @@ __metadata: languageName: node linkType: hard -"@svgr/babel-plugin-transform-react-native-svg@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.0.0" +"@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 14e3f8ef27bb3215aa8914ea44831eb43decde4a131e4302480f23d6e75aa8c4ea9e1f8888d479b7a8ac63b828e590c03df6d72a6964676612c015f4a967fc74 + checksum: 85b434a57572f53bd2b9f0606f253e1fcf57b4a8c554ec3f2d43ed17f50d8cae200cb3aaf1ec9d626e1456e8b135dce530ae047eb0bed6d4bf98a752d6640459 languageName: node linkType: hard @@ -20003,9 +16056,9 @@ __metadata: languageName: node linkType: hard -"@svgr/babel-preset@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-preset@npm:8.0.0" +"@svgr/babel-preset@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/babel-preset@npm:8.1.0" dependencies: "@svgr/babel-plugin-add-jsx-attribute": 8.0.0 "@svgr/babel-plugin-remove-jsx-attribute": 8.0.0 @@ -20013,24 +16066,24 @@ __metadata: "@svgr/babel-plugin-replace-jsx-attribute-value": 8.0.0 "@svgr/babel-plugin-svg-dynamic-title": 8.0.0 "@svgr/babel-plugin-svg-em-dimensions": 8.0.0 - "@svgr/babel-plugin-transform-react-native-svg": 8.0.0 + "@svgr/babel-plugin-transform-react-native-svg": 8.1.0 "@svgr/babel-plugin-transform-svg-component": 8.0.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c8a4497f3fe8338831be275e9e9534b265d22c8ecd75eec0ed82cff8d287506d38fc1963ac3b1a3a27abe0582bcba73f7a76798d23cce586e840bf65a87ba990 + checksum: 3a67930f080b8891e1e8e2595716b879c944d253112bae763dce59807ba23454d162216c8d66a0a0e3d4f38a649ecd6c387e545d1e1261dd69a68e9a3392ee08 languageName: node linkType: hard -"@svgr/core@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/core@npm:8.0.0" +"@svgr/core@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/core@npm:8.1.0" dependencies: "@babel/core": ^7.21.3 - "@svgr/babel-preset": 8.0.0 + "@svgr/babel-preset": 8.1.0 camelcase: ^6.2.0 cosmiconfig: ^8.1.3 snake-case: ^3.0.4 - checksum: ce83ecbab185db72d16dbd9650f5a66c6e2705627722e593b0eaf23bfafe49cf8bb55f216016a11b8a546822c7387887d218aab8697f7b31e3d1a97d94fa0593 + checksum: da4a12865c7dc59829d58df8bd232d6c85b7115fda40da0d2f844a1a51886e2e945560596ecfc0345d37837ac457de86a931e8b8d8550e729e0c688c02250d8a languageName: node linkType: hard @@ -20044,46 +16097,46 @@ __metadata: languageName: node linkType: hard -"@svgr/plugin-jsx@npm:8.0.1": - version: 8.0.1 - resolution: "@svgr/plugin-jsx@npm:8.0.1" +"@svgr/plugin-jsx@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/plugin-jsx@npm:8.1.0" dependencies: "@babel/core": ^7.21.3 - "@svgr/babel-preset": 8.0.0 + "@svgr/babel-preset": 8.1.0 "@svgr/hast-util-to-babel-ast": 8.0.0 svg-parser: ^2.0.4 peerDependencies: "@svgr/core": "*" - checksum: c6a0fc3e757e79837cd88f41f18b35594f8c4efe1b87e673514fa7add0912388b7dc79fa2738d629c2f945395ea568fa901c9c5ca5fce827a004c03867c1c482 + checksum: 0418a9780753d3544912ee2dad5d2cf8d12e1ba74df8053651b3886aeda54d5f0f7d2dece0af5e0d838332c4f139a57f0dabaa3ca1afa4d1a765efce6a7656f2 languageName: node linkType: hard -"@svgr/plugin-svgo@npm:8.0.1": - version: 8.0.1 - resolution: "@svgr/plugin-svgo@npm:8.0.1" +"@svgr/plugin-svgo@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/plugin-svgo@npm:8.1.0" dependencies: cosmiconfig: ^8.1.3 deepmerge: ^4.3.1 svgo: ^3.0.2 peerDependencies: "@svgr/core": "*" - checksum: c5008c5dd8467f8f8b3a173462773fc37f2a8fa53989934ea802fc7a9db2147f6fee68736610a117751f2ab94773373e807d21e74db5f93b98040f1479845ec6 + checksum: 59d9d214cebaacca9ca71a561f463d8b7e5a68ca9443e4792a42d903acd52259b1790c0680bc6afecc3f00a255a6cbd7ea278a9f625bac443620ea58a590c2d0 languageName: node linkType: hard "@svgr/webpack@npm:^8.0.1": - version: 8.0.1 - resolution: "@svgr/webpack@npm:8.0.1" + version: 8.1.0 + resolution: "@svgr/webpack@npm:8.1.0" dependencies: "@babel/core": ^7.21.3 "@babel/plugin-transform-react-constant-elements": ^7.21.3 "@babel/preset-env": ^7.20.2 "@babel/preset-react": ^7.18.6 "@babel/preset-typescript": ^7.21.0 - "@svgr/core": 8.0.0 - "@svgr/plugin-jsx": 8.0.1 - "@svgr/plugin-svgo": 8.0.1 - checksum: e5e28be53ecf049056ea959040edabfc2d2e717e9ec7f4a549fa262cd1e2d9c6479836ea2eb1586196b9fee74855a0087dbb88257e872fe6b31157c5c0a52dcc + "@svgr/core": 8.1.0 + "@svgr/plugin-jsx": 8.1.0 + "@svgr/plugin-svgo": 8.1.0 + checksum: c6eec5b0cf2fb2ecd3a7a362d272eda35330b17c76802a3481f499b5d07ff8f87b31d2571043bff399b051a1767b1e2e499dbf186104d1c06d76f9f1535fac01 languageName: node linkType: hard @@ -20097,15 +16150,6 @@ __metadata: languageName: node linkType: hard -"@swc-node/core@npm:^1.8.2": - version: 1.8.2 - resolution: "@swc-node/core@npm:1.8.2" - dependencies: - "@swc/core": ^1.2.119 - checksum: e137b1751983a27ce120286960ce6d87071e2605a8467a9f6b8875b305e0328fa67b53582dfab52b5d6be8d6e86091777244a1aaa579de6d6c84e31b1f66d223 - languageName: node - linkType: hard - "@swc-node/register@npm:1.9.1": version: 1.9.1 resolution: "@swc-node/register@npm:1.9.1" @@ -20123,30 +16167,6 @@ __metadata: languageName: node linkType: hard -"@swc-node/register@npm:^1.4.2": - version: 1.4.2 - resolution: "@swc-node/register@npm:1.4.2" - dependencies: - "@swc-node/core": ^1.8.2 - "@swc-node/sourcemap-support": ^0.1.11 - chalk: 4 - debug: ^4.3.3 - pirates: ^4.0.4 - tslib: ^2.3.1 - typescript: ^4.5.3 - checksum: cb4a62f07ade0f207c42ef282243502ec24d0f8e4593973394eac94a364ac53b8c1fb3652afcd14191237ae0843eeb0fb6574ce1fc0696b017e271f06a14e248 - languageName: node - linkType: hard - -"@swc-node/sourcemap-support@npm:^0.1.11": - version: 0.1.11 - resolution: "@swc-node/sourcemap-support@npm:0.1.11" - dependencies: - source-map-support: ^0.5.21 - checksum: 1dd5007d3516c9d034757d5012a03fc05cbe63935a5432c2e414611e0f8006a591d7505fb4243842da3c88efb6dbbc419e9297f526210365bd819938baa6956d - languageName: node - linkType: hard - "@swc-node/sourcemap-support@npm:^0.5.0": version: 0.5.1 resolution: "@swc-node/sourcemap-support@npm:0.5.1" @@ -20157,27 +16177,6 @@ __metadata: languageName: node linkType: hard -"@swc/core-android-arm-eabi@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-android-arm-eabi@npm:1.2.168" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@swc/core-android-arm64@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-android-arm64@npm:1.2.168" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@swc/core-darwin-arm64@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-darwin-arm64@npm:1.2.168" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@swc/core-darwin-arm64@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-darwin-arm64@npm:1.5.7" @@ -20185,20 +16184,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-darwin-arm64@npm:1.7.6" +"@swc/core-darwin-arm64@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-darwin-arm64@npm:1.7.39" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-darwin-x64@npm:1.2.168" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@swc/core-darwin-x64@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-darwin-x64@npm:1.5.7" @@ -20206,27 +16198,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-darwin-x64@npm:1.7.6" +"@swc/core-darwin-x64@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-darwin-x64@npm:1.7.39" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-freebsd-x64@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-freebsd-x64@npm:1.2.168" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@swc/core-linux-arm-gnueabihf@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.2.168" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@swc/core-linux-arm-gnueabihf@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-arm-gnueabihf@npm:1.5.7" @@ -20234,20 +16212,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.6" +"@swc/core-linux-arm-gnueabihf@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.39" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-linux-arm64-gnu@npm:1.2.168" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@swc/core-linux-arm64-gnu@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-arm64-gnu@npm:1.5.7" @@ -20255,20 +16226,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.6" +"@swc/core-linux-arm64-gnu@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-linux-arm64-gnu@npm:1.7.39" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-linux-arm64-musl@npm:1.2.168" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@swc/core-linux-arm64-musl@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-arm64-musl@npm:1.5.7" @@ -20276,20 +16240,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.6" +"@swc/core-linux-arm64-musl@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-linux-arm64-musl@npm:1.7.39" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-linux-x64-gnu@npm:1.2.168" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@swc/core-linux-x64-gnu@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-x64-gnu@npm:1.5.7" @@ -20297,20 +16254,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.6" +"@swc/core-linux-x64-gnu@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-linux-x64-gnu@npm:1.7.39" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-linux-x64-musl@npm:1.2.168" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@swc/core-linux-x64-musl@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-x64-musl@npm:1.5.7" @@ -20318,20 +16268,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-linux-x64-musl@npm:1.7.6" +"@swc/core-linux-x64-musl@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-linux-x64-musl@npm:1.7.39" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-win32-arm64-msvc@npm:1.2.168" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@swc/core-win32-arm64-msvc@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-win32-arm64-msvc@npm:1.5.7" @@ -20339,20 +16282,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.6" +"@swc/core-win32-arm64-msvc@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-win32-arm64-msvc@npm:1.7.39" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-win32-ia32-msvc@npm:1.2.168" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@swc/core-win32-ia32-msvc@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-win32-ia32-msvc@npm:1.5.7" @@ -20360,20 +16296,13 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.6" +"@swc/core-win32-ia32-msvc@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-win32-ia32-msvc@npm:1.7.39" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.2.168": - version: 1.2.168 - resolution: "@swc/core-win32-x64-msvc@npm:1.2.168" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@swc/core-win32-x64-msvc@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-win32-x64-msvc@npm:1.5.7" @@ -20381,9 +16310,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.6": - version: 1.7.6 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.6" +"@swc/core-win32-x64-msvc@npm:1.7.39": + version: 1.7.39 + resolution: "@swc/core-win32-x64-msvc@npm:1.7.39" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -20434,72 +16363,22 @@ __metadata: languageName: node linkType: hard -"@swc/core@npm:^1.2.119, @swc/core@npm:^1.2.152": - version: 1.2.168 - resolution: "@swc/core@npm:1.2.168" - dependencies: - "@swc/core-android-arm-eabi": 1.2.168 - "@swc/core-android-arm64": 1.2.168 - "@swc/core-darwin-arm64": 1.2.168 - "@swc/core-darwin-x64": 1.2.168 - "@swc/core-freebsd-x64": 1.2.168 - "@swc/core-linux-arm-gnueabihf": 1.2.168 - "@swc/core-linux-arm64-gnu": 1.2.168 - "@swc/core-linux-arm64-musl": 1.2.168 - "@swc/core-linux-x64-gnu": 1.2.168 - "@swc/core-linux-x64-musl": 1.2.168 - "@swc/core-win32-arm64-msvc": 1.2.168 - "@swc/core-win32-ia32-msvc": 1.2.168 - "@swc/core-win32-x64-msvc": 1.2.168 - dependenciesMeta: - "@swc/core-android-arm-eabi": - optional: true - "@swc/core-android-arm64": - optional: true - "@swc/core-darwin-arm64": - optional: true - "@swc/core-darwin-x64": - optional: true - "@swc/core-freebsd-x64": - optional: true - "@swc/core-linux-arm-gnueabihf": - optional: true - "@swc/core-linux-arm64-gnu": - optional: true - "@swc/core-linux-arm64-musl": - optional: true - "@swc/core-linux-x64-gnu": - optional: true - "@swc/core-linux-x64-musl": - optional: true - "@swc/core-win32-arm64-msvc": - optional: true - "@swc/core-win32-ia32-msvc": - optional: true - "@swc/core-win32-x64-msvc": - optional: true - bin: - swcx: run_swcx.js - checksum: b5c9f1c848f1fc156bcee1b20de50e937716b29cdf6376c76c6dce708727a139d400ac823ec93954e874a9f544edec66e8d215fc61620cdcbde7ee7df0918ab6 - languageName: node - linkType: hard - "@swc/core@npm:^1.3.82": - version: 1.7.6 - resolution: "@swc/core@npm:1.7.6" - dependencies: - "@swc/core-darwin-arm64": 1.7.6 - "@swc/core-darwin-x64": 1.7.6 - "@swc/core-linux-arm-gnueabihf": 1.7.6 - "@swc/core-linux-arm64-gnu": 1.7.6 - "@swc/core-linux-arm64-musl": 1.7.6 - "@swc/core-linux-x64-gnu": 1.7.6 - "@swc/core-linux-x64-musl": 1.7.6 - "@swc/core-win32-arm64-msvc": 1.7.6 - "@swc/core-win32-ia32-msvc": 1.7.6 - "@swc/core-win32-x64-msvc": 1.7.6 + version: 1.7.39 + resolution: "@swc/core@npm:1.7.39" + dependencies: + "@swc/core-darwin-arm64": 1.7.39 + "@swc/core-darwin-x64": 1.7.39 + "@swc/core-linux-arm-gnueabihf": 1.7.39 + "@swc/core-linux-arm64-gnu": 1.7.39 + "@swc/core-linux-arm64-musl": 1.7.39 + "@swc/core-linux-x64-gnu": 1.7.39 + "@swc/core-linux-x64-musl": 1.7.39 + "@swc/core-win32-arm64-msvc": 1.7.39 + "@swc/core-win32-ia32-msvc": 1.7.39 + "@swc/core-win32-x64-msvc": 1.7.39 "@swc/counter": ^0.1.3 - "@swc/types": ^0.1.12 + "@swc/types": ^0.1.13 peerDependencies: "@swc/helpers": "*" dependenciesMeta: @@ -20526,7 +16405,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 6ecc0d5721458c35ee236ffeb8ac6c909aaf28155f9dbcdf796111ed28bc6273629bd2156547dff70368dff0bf43c6aae7e2cafbb507b31f9ab6e3aed879cd03 + checksum: f9b08de1c911f787ef5d9e727f9d32afd407092ade75b7f00d7e3977320a7ab85ec9be2a23cd1579d17aaa6df5189078609aacffb5f1945afa489f261a2ca7ff languageName: node linkType: hard @@ -20565,22 +16444,12 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:^0.4.14": - version: 0.4.36 - resolution: "@swc/helpers@npm:0.4.36" - dependencies: - legacy-swc-helpers: "npm:@swc/helpers@=0.4.14" - tslib: ^2.4.0 - checksum: 20b9f021a9711633d709ef1c231423eb079cb7ed14ad191dc9583b0b46684a95d0e87c3efd7472e7673ddbd30eb200c21490ab43ad251df8f845cd09df3d236f - languageName: node - linkType: hard - -"@swc/helpers@npm:^0.4.2, legacy-swc-helpers@npm:@swc/helpers@=0.4.14": - version: 0.4.14 - resolution: "@swc/helpers@npm:0.4.14" +"@swc/helpers@npm:^0.5.12": + version: 0.5.13 + resolution: "@swc/helpers@npm:0.5.13" dependencies: tslib: ^2.4.0 - checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 + checksum: d50c2c10da6ef940af423c6b03ad9c3c94cf9de59314b1e921a7d1bcc081a6074481c9d67b655fc8fe66a73288f98b25950743792a63882bfb5793b362494fc0 languageName: node linkType: hard @@ -20593,12 +16462,12 @@ __metadata: languageName: node linkType: hard -"@swc/types@npm:^0.1.12": - version: 0.1.12 - resolution: "@swc/types@npm:0.1.12" +"@swc/types@npm:^0.1.13": + version: 0.1.13 + resolution: "@swc/types@npm:0.1.13" dependencies: "@swc/counter": ^0.1.3 - checksum: cf7f89e46f859864075d7965582baea9c5f98830f45b1046251568c9bdf1ca484b1bf37f6d3c32b7c82ecf8cd5df89d22f05268c391819c44e49911bb1a8e71a + checksum: 4d9ef0fba20e410bee38b20b60eeb284a1284c1cf6b5f84754b6f5e467e5e0621e2db67dc31e22c524a8d63f36d0a1d530126cd97752a85f140d91bf53553e01 languageName: node linkType: hard @@ -20611,18 +16480,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:4.24.9": - version: 4.24.9 - resolution: "@tanstack/query-core@npm:4.24.9" - checksum: 7b84e960d82c046c9eef6083cbc13b21c2ed8552fe8a5f092a66ca2586af66b770ca71ad838135ef49ac8b990e5f85d34a1d8b8de13fffb3abb0fb780a64a532 +"@tanstack/query-core@npm:4.36.1": + version: 4.36.1 + resolution: "@tanstack/query-core@npm:4.36.1" + checksum: 47672094da20d89402d9fe03bb7b0462be73a76ff9ca715169738bc600a719d064d106d083a8eedae22a2c22de22f87d5eb5d31ef447aba771d9190f2117ed10 languageName: node linkType: hard "@tanstack/react-query@npm:^4.3.9": - version: 4.24.9 - resolution: "@tanstack/react-query@npm:4.24.9" + version: 4.36.1 + resolution: "@tanstack/react-query@npm:4.36.1" dependencies: - "@tanstack/query-core": 4.24.9 + "@tanstack/query-core": 4.36.1 use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -20633,7 +16502,7 @@ __metadata: optional: true react-native: optional: true - checksum: 409c945c5043d11fa2f3c219254df5b0505bdf7d9dc94821f5db495d87a38fe27e0a373144446cef42fc829d1449a64e3fa873adf37e8abe15562e5832d59516 + checksum: 1aff0a476859386f8d32253fa0d0bde7b81769a6d4d4d9cbd78778f0f955459a3bdb7ee27a0d2ee7373090f12998b45df80db0b5b313bd0a7a39d36c6e8e51c5 languageName: node linkType: hard @@ -20666,18 +16535,18 @@ __metadata: linkType: hard "@testing-library/dom@npm:^8.1.0": - version: 8.16.0 - resolution: "@testing-library/dom@npm:8.16.0" + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 - "@types/aria-query": ^4.2.0 - aria-query: ^5.0.0 + "@types/aria-query": ^5.0.1 + aria-query: 5.1.3 chalk: ^4.1.0 dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 + lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: 37aabbec872522bcb51106ecb700d9be601293e75445084b6cc195921db4b2d06d6bd4c67ad834174c129f2199c39aa540b6d17c296fcbd701dc99fd800afe36 + checksum: 06fc8dc67849aadb726cbbad0e7546afdf8923bd39acb64c576d706249bd7d0d05f08e08a31913fb621162e3b9c2bd0dce15964437f030f9fa4476326fdd3007 languageName: node linkType: hard @@ -20726,15 +16595,15 @@ __metadata: linkType: hard "@tinymce/tinymce-react@npm:^3.13.0": - version: 3.13.0 - resolution: "@tinymce/tinymce-react@npm:3.13.0" + version: 3.14.0 + resolution: "@tinymce/tinymce-react@npm:3.14.0" dependencies: prop-types: ^15.6.2 tinymce: ^5.5.1 peerDependencies: - react: ^17.0.1 || ^16.7.0 - react-dom: ^17.0.1 || ^16.7.0 - checksum: 684b84a7e7ed320e2666b00568ff665d38bf1d8d4ae96ae0b939e407c26566bbb953bc512043788daf0f849218262a15b065c29db5c6dd6fa804490800b61858 + react: ^18.0.0 || ^17.0.1 || ^16.7.0 + react-dom: ^18.0.0 || ^17.0.1 || ^16.7.0 + checksum: e8b1b83c71f297a318cc66b0546961e975e60f64c91d38395e3c46d62f9663cba49b2b78165ce5c648f7b651d5f6dc9cef66a00380fbc33d788078f9194ec638 languageName: node linkType: hard @@ -20779,30 +16648,30 @@ __metadata: linkType: hard "@tsconfig/node10@npm:^1.0.7": - version: 1.0.8 - resolution: "@tsconfig/node10@npm:1.0.8" - checksum: b8d5fffbc6b17ef64ef74f7fdbccee02a809a063ade785c3648dae59406bc207f70ea2c4296f92749b33019fa36a5ae716e42e49cc7f1bbf0fd147be0d6b970a + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 languageName: node linkType: hard "@tsconfig/node12@npm:^1.0.7": - version: 1.0.9 - resolution: "@tsconfig/node12@npm:1.0.9" - checksum: a01b2400ab3582b86b589c6d31dcd0c0656f333adecde85d6d7d4086adb059808b82692380bb169546d189bf771ae21d02544a75b57bd6da4a5dd95f8567bec9 + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a languageName: node linkType: hard "@tsconfig/node14@npm:^1.0.0": - version: 1.0.1 - resolution: "@tsconfig/node14@npm:1.0.1" - checksum: 976345e896c0f059867f94f8d0f6ddb8b1844fb62bf36b727de8a9a68f024857e5db97ed51d3325e23e0616a5e48c034ff51a8d595b3fe7e955f3587540489be + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d languageName: node linkType: hard "@tsconfig/node16@npm:^1.0.2": - version: 1.0.2 - resolution: "@tsconfig/node16@npm:1.0.2" - checksum: ca94d3639714672bbfd55f03521d3f56bb6a25479bd425da81faf21f13e1e9d15f40f97377dedbbf477a5841c5b0c8f4cd1b391f33553d750b9202c54c2c07aa + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff languageName: node linkType: hard @@ -20814,11 +16683,11 @@ __metadata: linkType: hard "@types/accepts@npm:^1.3.5": - version: 1.3.5 - resolution: "@types/accepts@npm:1.3.5" + version: 1.3.7 + resolution: "@types/accepts@npm:1.3.7" dependencies: "@types/node": "*" - checksum: 590b7580570534a640510c071e09074cf63b5958b237a728f94322567350aea4d239f8a9d897a12b15c856b992ee4d7907e9812bb079886af2c00714e7fb3f60 + checksum: 7678cf74976e16093aff6e6f9755826faf069ac1e30179276158ce46ea246348ff22ca6bdd46cef08428881337d9ceefbf00bab08a7731646eb9fc9449d6a1e7 languageName: node linkType: hard @@ -20832,11 +16701,11 @@ __metadata: linkType: hard "@types/archiver@npm:^5.1.1": - version: 5.1.1 - resolution: "@types/archiver@npm:5.1.1" + version: 5.3.4 + resolution: "@types/archiver@npm:5.3.4" dependencies: - "@types/glob": "*" - checksum: e3f1cb17ebcc5ff6be0c711305d3ed5e5248d514cc85e8440c3ae4bde04f761dcb772f549e2299c8ae325d88045e62ae34c0b3dd850eec6b39864c055d7aa634 + "@types/readdir-glob": "*" + checksum: 4ef27b99091ada9b8f13017d5b9e6d42a439e35a7858b30e040c408e081d98d8db6307b0762500288b5da38cab9823c4756b6abae1fdd2658d42bfb09eb7c5fb languageName: node linkType: hard @@ -20847,17 +16716,10 @@ __metadata: languageName: node linkType: hard -"@types/aria-query@npm:^4.2.0": - version: 4.2.1 - resolution: "@types/aria-query@npm:4.2.1" - checksum: cf60cc7aa0ed52514e8c7289776de9bb3321217d48f54c95d63e1e1eb9940689c1fd3e39d68da5eaee1541108363f0113007f67d6e32e7fbc983526f08e5f0ce - languageName: node - linkType: hard - "@types/aria-query@npm:^5.0.1": - version: 5.0.1 - resolution: "@types/aria-query@npm:5.0.1" - checksum: 69fd7cceb6113ed370591aef04b3fd0742e9a1b06dd045c43531448847b85de181495e4566f98e776b37c422a12fd71866e0a1dfd904c5ec3f84d271682901de + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: ad8b87e4ad64255db5f0a73bc2b4da9b146c38a3a8ab4d9306154334e0fc67ae64e76bfa298eebd1e71830591fb15987e5de7111bdb36a2221bdc379e3415fb0 languageName: node linkType: hard @@ -20877,33 +16739,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:*": - version: 7.20.0 - resolution: "@types/babel__core@npm:7.20.0" - dependencies: - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 49b601a0a7637f1f387442c8156bd086cfd10ff4b82b0e1994e73a6396643b5435366fb33d6b604eade8467cca594ef97adcbc412aede90bb112ebe88d0ad6df - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.1.7": - version: 7.1.19 - resolution: "@types/babel__core@npm:7.1.19" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 8c9fa87a1c2224cbec251683a58bebb0d74c497118034166aaa0491a4e2627998a6621fc71f8a60ffd27d9c0c52097defedf7637adc6618d0331c15adb302338 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.18.0": +"@types/babel__core@npm:*, @types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.1.7, @types/babel__core@npm:^7.18.0": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -20917,43 +16753,34 @@ __metadata: linkType: hard "@types/babel__generator@npm:*": - version: 7.6.2 - resolution: "@types/babel__generator@npm:7.6.2" + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" dependencies: "@babel/types": ^7.0.0 - checksum: b7764309e5f292c4a15fb587ba610e7fa290e1a2824efe16c0608abdb835de310147b4410f067bb25d817ba72bfc65c6aa0018933b02a774e744dbe51befeab6 + checksum: 5b332ea336a2efffbdeedb92b6781949b73498606ddd4205462f7d96dafd45ff3618770b41de04c4881e333dd84388bfb8afbdf6f2764cbd98be550d85c6bb48 languageName: node linkType: hard "@types/babel__helper-plugin-utils@npm:^7.10.0": - version: 7.10.0 - resolution: "@types/babel__helper-plugin-utils@npm:7.10.0" + version: 7.10.3 + resolution: "@types/babel__helper-plugin-utils@npm:7.10.3" dependencies: "@types/babel__core": "*" - checksum: 5a5fce5e8910b4728e2d0740d9fd72af86bbf6ce747d500ce82c8694200af63d45041f5c8101847f98e1cecddfeb5f13a447e592d5246cddaabbeccfcba4098e + checksum: eb27740adaad62f72f1c1eebafefc71efe8df05f3bf2c0a6ec9fad1907301c0129a1031998f37dcaf200a7a3883414dca667ed660fd8465f62b21c4cbace30e3 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.0 - resolution: "@types/babel__template@npm:7.4.0" + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 5262dc75e66fe0531b046d19f5c39d1b7e3419e340624229b52757cdedb295cb5658494b64eb234bd18cab7740c45c1d72ed2f16d1d189a765df2dc4efeed1af + checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.11.1 - resolution: "@types/babel__traverse@npm:7.11.1" - dependencies: - "@babel/types": ^7.3.0 - checksum: 7bcf7fd0c88687929467d8be08460a7b216b2df5080338bc0575f1b9dbc51ba467b44063802ebbbea1249d5e2a87fed1f02d18b36c1723cd4d957cca70d3a89b - languageName: node - linkType: hard - -"@types/babel__traverse@npm:^7.18.0": +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6, @types/babel__traverse@npm:^7.18.0": version: 7.20.6 resolution: "@types/babel__traverse@npm:7.20.6" dependencies: @@ -20963,12 +16790,12 @@ __metadata: linkType: hard "@types/body-parser@npm:*": - version: 1.19.0 - resolution: "@types/body-parser@npm:1.19.0" + version: 1.19.5 + resolution: "@types/body-parser@npm:1.19.5" dependencies: "@types/connect": "*" "@types/node": "*" - checksum: 15043566f1909e2a08dabb0a5d2642f8988545a1369bc5995fc40ee90c95200da2aa66f9240fcb19fc6af6ff4e27ff453f311b49363c14bb308c308c0751ca9b + checksum: 1e251118c4b2f61029cc43b0dc028495f2d1957fe8ee49a707fb940f86a9bd2f9754230805598278fe99958b49e9b7e66eec8ef6a50ab5c1f6b93e1ba2aaba82 languageName: node linkType: hard @@ -20983,30 +16810,30 @@ __metadata: linkType: hard "@types/bonjour@npm:^3.5.9": - version: 3.5.10 - resolution: "@types/bonjour@npm:3.5.10" + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" dependencies: "@types/node": "*" - checksum: bfcadb042a41b124c4e3de4925e3be6d35b78f93f27c4535d5ff86980dc0f8bc407ed99b9b54528952dc62834d5a779392f7a12c2947dd19330eb05a6bcae15a + checksum: e827570e097bd7d625a673c9c208af2d1a22fa3885c0a1646533cf24394c839c3e5f60ac1bc60c0ddcc69c0615078c9fb2c01b42596c7c582d895d974f2409ee languageName: node linkType: hard "@types/cacheable-request@npm:^6.0.1": - version: 6.0.2 - resolution: "@types/cacheable-request@npm:6.0.2" + version: 6.0.3 + resolution: "@types/cacheable-request@npm:6.0.3" dependencies: "@types/http-cache-semantics": "*" - "@types/keyv": "*" + "@types/keyv": ^3.1.4 "@types/node": "*" - "@types/responselike": "*" - checksum: 667d25808dbf46fe104d6f029e0281ff56058d50c7c1b9182774b3e38bb9c1124f56e4c367ba54f92dbde2d1cc573f26eb0e9748710b2822bc0fd1e5498859c6 + "@types/responselike": ^1.0.0 + checksum: d9b26403fe65ce6b0cb3720b7030104c352bcb37e4fac2a7089a25a97de59c355fa08940658751f2f347a8512aa9d18fdb66ab3ade835975b2f454f2d5befbd9 languageName: node linkType: hard "@types/caseless@npm:*": - version: 0.12.2 - resolution: "@types/caseless@npm:0.12.2" - checksum: 430d15911184ad11e0a8aa21d1ec15fcc93b90b63570c37bf16ebd34457482bfc8de3f5eb6771e0ef986ce183270d4297823b0f492c346255967e78f7292388b + version: 0.12.5 + resolution: "@types/caseless@npm:0.12.5" + checksum: f6a3628add76d27005495914c9c3873a93536957edaa5b69c63b46fe10b4649a6fecf16b676c1695f46aab851da47ec6047dcf3570fa8d9b6883492ff6d074e0 languageName: node linkType: hard @@ -21027,11 +16854,11 @@ __metadata: linkType: hard "@types/codemirror@npm:*": - version: 5.60.7 - resolution: "@types/codemirror@npm:5.60.7" + version: 5.60.15 + resolution: "@types/codemirror@npm:5.60.15" dependencies: "@types/tern": "*" - checksum: 0312ce032eb139b408588a7e7cf3b392a510a2cfa6f477f2dd20d8bca1990e5e6e5540e708f9a69d1a58e68ea7fd234b789c801aa7ef4f3b3dc32a1478b04a91 + checksum: cfad3f569de48fba3efa44fdfeba77933e231486a52cc80cff7ce6eeeed5b447a5bc2b11e2226bc00ccee332c661e53e35a15cf14eb835f434a6a402d9462f5f languageName: node linkType: hard @@ -21045,21 +16872,21 @@ __metadata: linkType: hard "@types/connect-history-api-fallback@npm:^1.3.5": - version: 1.5.0 - resolution: "@types/connect-history-api-fallback@npm:1.5.0" + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" dependencies: "@types/express-serve-static-core": "*" "@types/node": "*" - checksum: f180e7c540728d6dd3a1eb2376e445fe7f9de4ee8a5b460d5ad80062cdb6de6efc91c6851f39e9d5933b3dcd5cd370673c52343a959aa091238b6f863ea4447c + checksum: e1dee43b8570ffac02d2d47a2b4ba80d3ca0dd1840632dafb221da199e59dbe3778d3d7303c9e23c6b401f37c076935a5bc2aeae1c4e5feaefe1c371fe2073fd languageName: node linkType: hard "@types/connect@npm:*": - version: 3.4.34 - resolution: "@types/connect@npm:3.4.34" + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" dependencies: "@types/node": "*" - checksum: c6e2aa299cf3979c00602f48ce9163700f0cbfec6ba2a8e1506d08f51da0279805a478ea094252fad7c369a563ee033b359c708ab34b1763397c58d7e2df07ad + checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 languageName: node linkType: hard @@ -21086,10 +16913,10 @@ __metadata: languageName: node linkType: hard -"@types/cookiejar@npm:*": - version: 2.1.2 - resolution: "@types/cookiejar@npm:2.1.2" - checksum: f6e1903454007f86edd6c3520cbb4d553e1d4e17eaf1f77f6f75e3270f48cc828d74397a113a36942f5fe52f9fa71067bcfa738f53ad468fcca0bc52cb1cbd28 +"@types/cookiejar@npm:^2.1.5": + version: 2.1.5 + resolution: "@types/cookiejar@npm:2.1.5" + checksum: 04d5990e87b6387532d15a87d9ec9b2eb783039291193863751dcfd7fc723a3b3aa30ce4c06b03975cba58632e933772f1ff031af23eaa3ac7f94e71afa6e073 languageName: node linkType: hard @@ -21110,11 +16937,11 @@ __metadata: linkType: hard "@types/cross-spawn@npm:^6.0.2": - version: 6.0.3 - resolution: "@types/cross-spawn@npm:6.0.3" + version: 6.0.6 + resolution: "@types/cross-spawn@npm:6.0.6" dependencies: "@types/node": "*" - checksum: 06d50fa1e1370ef60b9c9085b76adec7d7bc20728fbb02b3c2061d4d922312acf1ba56a7c94d88c27a22fc6241ab6b970c936f3294038a9c97a719fbc8eb8a76 + checksum: b4172927cd1387cf037c3ade785ef46c87537b7bc2803d7f6663b4904d0c5d6f726415d1adb2fee4fecb21746738f11336076449265d46be4ce110cc3a8c8436 languageName: node linkType: hard @@ -21126,56 +16953,38 @@ __metadata: linkType: hard "@types/d3-path@npm:^2": - version: 2.0.1 - resolution: "@types/d3-path@npm:2.0.1" - checksum: 2fe04503ec56de47e2b8482e5a55e2eaf2940444f2cea00a5fb740d52d24bddfe13e900e392c1edebf2127b11557db09aeae6f5669f49a35caac4fe1a9d43b84 + version: 2.0.4 + resolution: "@types/d3-path@npm:2.0.4" + checksum: 054005eeef4420a1d2867509e25da419521086b9d2aa22b45095b77604cfef1b8208742063cac3bfd82e4ff8b0214d4c64bf5f0e08fa4c7919114d30af4fdf9d languageName: node linkType: hard "@types/d3-scale@npm:^3.0.0": - version: 3.3.2 - resolution: "@types/d3-scale@npm:3.3.2" + version: 3.3.5 + resolution: "@types/d3-scale@npm:3.3.5" dependencies: "@types/d3-time": ^2 - checksum: 65dbf85f07a4d6ac26396075b0faa1930cfebb96dc248629d4b82c22457c89161d0f070f9a5554adccee80b959e2c6d7c1ef6b7355743afe91050d71014fe3cf + checksum: e6ffe97c3022c857a88f73775930bd577fa55460f65eaf68038cd39d1b5d8e4a9941440b5ac8d382568463f04ca68d6b7c3e596f4ec6575c388db17305ca1524 languageName: node linkType: hard "@types/d3-shape@npm:^2.0.0": - version: 2.1.3 - resolution: "@types/d3-shape@npm:2.1.3" + version: 2.1.7 + resolution: "@types/d3-shape@npm:2.1.7" dependencies: "@types/d3-path": ^2 - checksum: d0855a1e2c11a4ab23367c86ef0cc104e12bf216f2c007fa5955da7179b60b0426d0e9ddbbbdf93d4342e7dd24c7bcfc3a2bc6258744e03fc44ca460a063dcc3 + checksum: c83f53a016e1ccfaa6104458b73ae2b1c87de0e4ddf8c43a11ceba87652965273a4b33e49d552be34f7d04b24fc380f21a1958f86ab1fd863da78e957e88af34 languageName: node linkType: hard "@types/d3-time@npm:^2": - version: 2.1.1 - resolution: "@types/d3-time@npm:2.1.1" - checksum: 115048d0cd312a3172ef7c03615dfbdbd8b92a93fd7b6d9ca93c49c704fcdb9575f4c57955eb54eb757b9834acaaf47fc52eae103d06246c59ae120de4559cbc - languageName: node - linkType: hard - -"@types/debug@npm:^4.0.0": - version: 4.1.8 - resolution: "@types/debug@npm:4.1.8" - dependencies: - "@types/ms": "*" - checksum: a9a9bb40a199e9724aa944e139a7659173a9b274798ea7efbc277cb084bc37d32fc4c00877c3496fac4fed70a23243d284adb75c00b5fdabb38a22154d18e5df - languageName: node - linkType: hard - -"@types/debug@npm:^4.1.5": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" - dependencies: - "@types/ms": "*" - checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc + version: 2.1.4 + resolution: "@types/d3-time@npm:2.1.4" + checksum: e5898c5520a536ea65b18d003d6d89e2def04c23ad15977240fe27558e8cc7ea5d0c362850090d5850d5fcd788cc6c6b16802c6826f932456aeebe9e2ddbce8a languageName: node linkType: hard -"@types/debug@npm:^4.1.8": +"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.5, @types/debug@npm:^4.1.8": version: 4.1.12 resolution: "@types/debug@npm:4.1.12" dependencies: @@ -21184,37 +16993,45 @@ __metadata: languageName: node linkType: hard -"@types/deep-equal@npm:1.0.1, @types/deep-equal@npm:^1.0.1": +"@types/deep-equal@npm:1.0.1": version: 1.0.1 resolution: "@types/deep-equal@npm:1.0.1" checksum: 689b5737dd0a37d173d9e1231c07f70a1a9a989087b757422e1d167ec3640fd7eb8a538bd6008b3df400c4c11ed07a6c2a92d9aafc1f98ffaa04731a9442c781 languageName: node linkType: hard +"@types/deep-equal@npm:^1.0.1": + version: 1.0.4 + resolution: "@types/deep-equal@npm:1.0.4" + checksum: db905bcb051bc9cf5dceb231a6b0b64ab2318073939a1769e043454e8c46b1eeaac1376338751d2ee7ca9294398dd62e03d4b120361b56f96f89dc87aec753e4 + languageName: node + linkType: hard + "@types/detect-port@npm:^1.3.0": - version: 1.3.3 - resolution: "@types/detect-port@npm:1.3.3" - checksum: 0dadb520286a5cfd2832d12189dc795cc3589dfd9166d1b033453fb94b0212c4067a847045833e85b0f7c73135c944cb4ccb49c8e683491845c2e8a3da5d5c1c + version: 1.3.5 + resolution: "@types/detect-port@npm:1.3.5" + checksum: 923cf04c6a05af59090743baeb9948f1938ceb98c1f7ea93db7ac310210426b385aa00005d23039ebb8019a9d13e141f5246e9c733b290885018d722a4787921 languageName: node linkType: hard "@types/docker-modem@npm:*": - version: 3.0.2 - resolution: "@types/docker-modem@npm:3.0.2" + version: 3.0.6 + resolution: "@types/docker-modem@npm:3.0.6" dependencies: "@types/node": "*" "@types/ssh2": "*" - checksum: 1f23db30e6e9bdd4c6d6e43572fb7ac7251d106a1906a9f3faabac393897712a5a9cd5a471baedc0ac8055dab3f48eda331f41a1e2c7c6bbe3c7f433e039151c + checksum: cc58e8189f6ec5a2b8ca890207402178a97ddac8c80d125dc65d8ab29034b5db736de15e99b91b2d74e66d14e26e73b6b8b33216613dd15fd3aa6b82c11a83ed languageName: node linkType: hard "@types/dockerode@npm:^3.2.5": - version: 3.3.0 - resolution: "@types/dockerode@npm:3.3.0" + version: 3.3.31 + resolution: "@types/dockerode@npm:3.3.31" dependencies: "@types/docker-modem": "*" "@types/node": "*" - checksum: e4258c5575814001caa874347a070859920da27650d22b87d59e5df6f0843ec001c9f45489edb386628044e403f8e37678ed7bee2d2f4848b5979f48b7c857ec + "@types/ssh2": "*" + checksum: f634f18dc0633f8324faefcde53bcd3d8f3c4bd74d31078cbeb65d2e1597f9abcf12c2158abfaea13dc816bae0f5fa08d0bb570d4214ab0df1ded90db5ebabfe languageName: node linkType: hard @@ -21232,26 +17049,33 @@ __metadata: languageName: node linkType: hard +"@types/domhandler@npm:^2.4.0, @types/domhandler@npm:^2.4.3": + version: 2.4.5 + resolution: "@types/domhandler@npm:2.4.5" + checksum: 0dd551361c0ec4e8736a6bcb142ca3c9eedd9b8076cded263c555c0e4adef9b07230dc85b7c94e5cd72e9796ea2533c00e4bcf97d5e06bc10e32367429985ff1 + languageName: node + linkType: hard + "@types/domutils@npm:*": - version: 1.7.3 - resolution: "@types/domutils@npm:1.7.3" + version: 1.7.8 + resolution: "@types/domutils@npm:1.7.8" dependencies: - domhandler: ^2.4.0 - checksum: caff7e8e16f491f4d7abf77d82bd388dc93eb85725a8f62a9c40e5654434bc39641866366ee24bf0bcfca2e2b0b7397932660992624c93507810031108dd3fc5 + "@types/domhandler": ^2.4.0 + checksum: ac97a3c2baf6c7ec93a3e54a30e36363dc4acaaf76b36e8b7dc5a06d626f48ce1d4beb9cd9767c1ce745825b78296528b60a128627c324c66eaec6616dc2ea42 languageName: node linkType: hard "@types/ejs@npm:^3.1.1": - version: 3.1.2 - resolution: "@types/ejs@npm:3.1.2" - checksum: e4f0745b6ed53a63c08bdfdeb019a7d0e0c400896722b44d6732b4ee6bf6061d2dc965206186b8b0ae2ecd71303c29f1af1feddbca2df0acbd7bd234a74ca518 + version: 3.1.5 + resolution: "@types/ejs@npm:3.1.5" + checksum: e142266283051f27a7f79329871b311687dede19ae20268d882e4de218c65e1311d28a300b85579ca67157a8d601b7234daa50c2f99b252b121d27b4e5b21468 languageName: node linkType: hard "@types/emscripten@npm:^1.39.6": - version: 1.39.7 - resolution: "@types/emscripten@npm:1.39.7" - checksum: 9871e4495358cc06cc45b2798022cd097d8ac2eb5b2fae7c276c6c5cadea05507150fad053c73ed346d4cbd844c50a3438604e5d7c3c2a7446b703cacb1ce172 + version: 1.39.13 + resolution: "@types/emscripten@npm:1.39.13" + checksum: 6a50f43a90db981e088c76219578a8e9eea0add3ed99d2daed3dfe8f8b755557b89ea5aea0166db2e9399882e109971f1724636101850a46cee51dc4c9337b1f languageName: node linkType: hard @@ -21269,49 +17093,29 @@ __metadata: languageName: node linkType: hard -"@types/eslint-scope@npm:^3.7.3": - version: 3.7.3 - resolution: "@types/eslint-scope@npm:3.7.3" - dependencies: - "@types/eslint": "*" - "@types/estree": "*" - checksum: 6772b05e1b92003d1f295e81bc847a61f4fbe8ddab77ffa49e84ed3f9552513bdde677eb53ef167753901282857dd1d604d9f82eddb34a233495932b2dc3dc17 - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 8.4.1 - resolution: "@types/eslint@npm:8.4.1" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: b5790997ee9d3820d16350192d41849b0e2448c9e93650acac672ddf502e35c0a5a25547172a9eec840a96687cd94ba1cee672cbd86640f8f4ff1b65960d2ab9 +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.5": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^0.0.51": +"@types/estree@npm:^0.0.51": version: 0.0.51 resolution: "@types/estree@npm:0.0.51" checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 languageName: node linkType: hard -"@types/estree@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/estree@npm:1.0.1" - checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": - version: 4.17.35 - resolution: "@types/express-serve-static-core@npm:4.17.35" +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": + version: 5.0.1 + resolution: "@types/express-serve-static-core@npm:5.0.1" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: cc8995d10c6feda475ec1b3a0e69eb0f35f21ab6b49129ad5c6f279e0bc5de8175bc04ec51304cb79a43eec3ed2f5a1e01472eb6d5f827b8c35c6ca8ad24eb6e + checksum: e9daf9bc0d83f593aa2fdcb7c3f9c0a8747bfdf6d8a5ee48ed8d8cc4dc2ed52bdc75d20f6fec9ef00a1aa5ade4c7f16668ff1c020911b50394472844813b1cdb languageName: node linkType: hard @@ -21326,29 +17130,31 @@ __metadata: languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.18": - version: 4.17.19 - resolution: "@types/express-serve-static-core@npm:4.17.19" +"@types/express-serve-static-core@npm:^4.17.18, @types/express-serve-static-core@npm:^4.17.33": + version: 4.19.6 + resolution: "@types/express-serve-static-core@npm:4.19.6" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" - checksum: fb00b18ab1dc9a4763e88ec2c4000c28e24f3396cf3106498b00320308541b54a2e33e2518c18eb069be4ebb4068b6436a7dc246b1cb093a079e81f9ea31cfc3 + "@types/send": "*" + checksum: b0576eddc2d25ccdf10e68ba09598b87a4d7b2ad04a81dc847cb39fe56beb0b6a5cc017b1e00aa0060cb3b38e700384ce96d291a116a0f1e54895564a104aae9 languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.31": - version: 4.17.33 - resolution: "@types/express-serve-static-core@npm:4.17.33" +"@types/express@npm:*": + version: 5.0.0 + resolution: "@types/express@npm:5.0.0" dependencies: - "@types/node": "*" + "@types/body-parser": "*" + "@types/express-serve-static-core": ^5.0.0 "@types/qs": "*" - "@types/range-parser": "*" - checksum: dce580d16b85f207445af9d4053d66942b27d0c72e86153089fa00feee3e96ae336b7bedb31ed4eea9e553c99d6dd356ed6e0928f135375d9f862a1a8015adf2 + "@types/serve-static": "*" + checksum: ef68d8e2b7593c930093b1e79bf4df15413773508c9acd6a1a933ed7017f2a4892a8d128b2222d7eab9a3fa43181067a378c2600d9258bd7ae917f170e962df4 languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:4.17.13": +"@types/express@npm:4.17.13": version: 4.17.13 resolution: "@types/express@npm:4.17.13" dependencies: @@ -21360,7 +17166,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:4.17.17, @types/express@npm:^4.17.13, @types/express@npm:^4.7.0": +"@types/express@npm:4.17.17": version: 4.17.17 resolution: "@types/express@npm:4.17.17" dependencies: @@ -21372,15 +17178,15 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:^4.17.14": - version: 4.17.16 - resolution: "@types/express@npm:4.17.16" +"@types/express@npm:^4.17.13, @types/express@npm:^4.17.14, @types/express@npm:^4.17.17, @types/express@npm:^4.7.0": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" dependencies: "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.31 + "@types/express-serve-static-core": ^4.17.33 "@types/qs": "*" "@types/serve-static": "*" - checksum: 43f3ed2cea6e5e83c7c1098c5152f644e975fd764443717ff9c812a1518416a9e7e9f824ffe852c118888cbfb994ed023cad08331f49b19ced469bb185cdd5cd + checksum: fb238298630370a7392c7abdc80f495ae6c716723e114705d7e3fb67e3850b3859bbfd29391463a3fb8c0b32051847935933d99e719c0478710f8098ee7091c5 languageName: node linkType: hard @@ -21405,31 +17211,41 @@ __metadata: languageName: node linkType: hard +"@types/fs-extra@npm:11.0.1": + version: 11.0.1 + resolution: "@types/fs-extra@npm:11.0.1" + dependencies: + "@types/jsonfile": "*" + "@types/node": "*" + checksum: 3e930346e5d84f419deb8ced1c582beef8cb20d0bd8a0eb145a37d75bab0572a1895f0e48a0d681d386b3a58b9a992b2d2acecc464bcaec2548f53ea00718651 + languageName: node + linkType: hard + "@types/glob@npm:*": - version: 7.1.3 - resolution: "@types/glob@npm:7.1.3" + version: 8.1.0 + resolution: "@types/glob@npm:8.1.0" dependencies: - "@types/minimatch": "*" + "@types/minimatch": ^5.1.2 "@types/node": "*" - checksum: e0eef12285f548f15d887145590594a04ccce7f7e645fb047cbac18cb093f25d507ffbcc725312294c224bb78cf980fce33e5807de8d6f8a868b4186253499d4 + checksum: 9101f3a9061e40137190f70626aa0e202369b5ec4012c3fabe6f5d229cce04772db9a94fa5a0eb39655e2e4ad105c38afbb4af56a56c0996a8c7d4fc72350e3d languageName: node linkType: hard -"@types/google-map-react@npm:2.1.7": - version: 2.1.7 - resolution: "@types/google-map-react@npm:2.1.7" +"@types/google-map-react@npm:2.1.10": + version: 2.1.10 + resolution: "@types/google-map-react@npm:2.1.10" dependencies: "@types/react": "*" - checksum: 0e8e014208e39624c861616021b4f8f8e085caaad3600418f33e6bf2481451ea97a1167ae4a2157cf3d1e397905721955a012b00e55d7c07d7e4bd95694dc69e + checksum: 92d2977c6407aa1ff72ab18330e869c4f1b51eb1f2d0800e1b73e20d400be41105107719a29b6918d4959c018442f3b6fb4dbc8c9ded184895c8c36bf4e80e7b languageName: node linkType: hard "@types/graceful-fs@npm:^4.1.2, @types/graceful-fs@npm:^4.1.3": - version: 4.1.5 - resolution: "@types/graceful-fs@npm:4.1.5" + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" dependencies: "@types/node": "*" - checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a + checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 languageName: node linkType: hard @@ -21443,9 +17259,9 @@ __metadata: linkType: hard "@types/hammerjs@npm:^2.0.36": - version: 2.0.45 - resolution: "@types/hammerjs@npm:2.0.45" - checksum: 40a29067c485a2a1f4345718104218fcf769adb1dbe091cdb6f679b3293dfa0798b207eb498ee7fd79ae8664c999117738fa0c01753f7465a639128f38c3ff5b + version: 2.0.46 + resolution: "@types/hammerjs@npm:2.0.46" + checksum: caba6ec788d19905c71092670b58514b3d1f5eee5382bf9205e8df688d51e7857b7994e2dd7aed57fac8977bdf0e456d67fbaf23440a4385b8ce25fe2af1ec39 languageName: node linkType: hard @@ -21468,12 +17284,12 @@ __metadata: linkType: hard "@types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.1 - resolution: "@types/hoist-non-react-statics@npm:3.3.1" + version: 3.3.5 + resolution: "@types/hoist-non-react-statics@npm:3.3.5" dependencies: "@types/react": "*" hoist-non-react-statics: ^3.3.0 - checksum: 2c0778570d9a01d05afabc781b32163f28409bb98f7245c38d5eaf082416fdb73034003f5825eb5e21313044e8d2d9e1f3fe2831e345d3d1b1d20bcd12270719 + checksum: b645b062a20cce6ab1245ada8274051d8e2e0b2ee5c6bd58215281d0ec6dae2f26631af4e2e7c8abe238cdcee73fcaededc429eef569e70908f82d0cc0ea31d7 languageName: node linkType: hard @@ -21485,29 +17301,44 @@ __metadata: linkType: hard "@types/htmlparser2@npm:*": - version: 3.10.2 - resolution: "@types/htmlparser2@npm:3.10.2" + version: 3.10.7 + resolution: "@types/htmlparser2@npm:3.10.7" dependencies: + "@types/domhandler": ^2.4.3 "@types/domutils": "*" "@types/node": "*" domhandler: ^2.4.0 - checksum: 6e52e23d9980b9a6686c2726ec4ce3ccd877e85822de7f8c38b8a88ba99f8e96bfadf9dbf3b5580c3be3721fed07c424efdca061ac391ad39299188b02711ca0 + checksum: 74fbd402f554ac529cc7ff1aedbdc05eabd13694a636ae91cf5842c7fe8d1a0c4253c9400b957203f01d8564615771296d22f85132be894f71eb4254dd81adb6 languageName: node linkType: hard -"@types/http-cache-semantics@npm:*, @types/http-cache-semantics@npm:4.0.1": +"@types/http-cache-semantics@npm:*": + version: 4.0.4 + resolution: "@types/http-cache-semantics@npm:4.0.4" + checksum: 7f4dd832e618bc1e271be49717d7b4066d77c2d4eed5b81198eb987e532bb3e1c7e02f45d77918185bad936f884b700c10cebe06305f50400f382ab75055f9e8 + languageName: node + linkType: hard + +"@types/http-cache-semantics@npm:4.0.1": version: 4.0.1 resolution: "@types/http-cache-semantics@npm:4.0.1" checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 languageName: node linkType: hard +"@types/http-errors@npm:*": + version: 2.0.4 + resolution: "@types/http-errors@npm:2.0.4" + checksum: 1f3d7c3b32c7524811a45690881736b3ef741bf9849ae03d32ad1ab7062608454b150a4e7f1351f83d26a418b2d65af9bdc06198f1c079d75578282884c4e8e3 + languageName: node + linkType: hard + "@types/http-proxy@npm:^1.17.8": - version: 1.17.9 - resolution: "@types/http-proxy@npm:1.17.9" + version: 1.17.15 + resolution: "@types/http-proxy@npm:1.17.15" dependencies: "@types/node": "*" - checksum: 7a6746d00729b2a9fe9f9dd3453430b099931df879ec8f7a7b5f07b1795f6d99b0512640c45a67390b1e4bacb9401e36824952aeeaf089feba8627a063cf8e00 + checksum: d96eaf4e22232b587b46256b89c20525c453216684481015cf50fb385b0b319b883749ccb77dee9af57d107e8440cdacd56f4234f65176d317e9777077ff5bf3 languageName: node linkType: hard @@ -21529,29 +17360,22 @@ __metadata: linkType: hard "@types/imap@npm:*": - version: 0.8.35 - resolution: "@types/imap@npm:0.8.35" + version: 0.8.40 + resolution: "@types/imap@npm:0.8.40" dependencies: "@types/node": "*" - checksum: 165cc50cf90300e490e622492b102555dcd5de92287f45bcf38777d8d7e2c32d0f4ccc4a799349a2e78ef888ca60a065ff7617825240fad6feb27dc83d2bab3a + checksum: 5bd33aeeca13bd3403f685048c7c8e136502dc3f5703d732748b488193c96b79295b0901ff1dd72a5cc6b826fc33572bf7376cd6533194797903f9d58cfa8e6d languageName: node linkType: hard "@types/intl@npm:^1": - version: 1.2.0 - resolution: "@types/intl@npm:1.2.0" - checksum: 95348313fee4949c6feba98bb35be45c0930ff816d7fedee8afd003282cbc004bf682ff94e6a662af5987c8fcc98bb4e8f93a4919d1ef6bbd9ce83577bd77fa6 - languageName: node - linkType: hard - -"@types/is-hotkey@npm:^0.1.1": - version: 0.1.2 - resolution: "@types/is-hotkey@npm:0.1.2" - checksum: 0b312ff15d1a91a9233cece1bcc3a6238eccf5552213388837f9be33defcbcfa0e87f6dc3636d8085f215988ae461cf797e69c55ba9c1f521453c8b8f9364d16 + version: 1.2.2 + resolution: "@types/intl@npm:1.2.2" + checksum: c278b0184f9a0c3f4f2cbdaa6087b00e7bd71bc784012e3158b48d20ad0e9ce732ac7609846627ce1c7fd69dac1b52e4b02fa881e45d1529a71c4872e9c8648d languageName: node linkType: hard -"@types/is-hotkey@npm:^0.1.8": +"@types/is-hotkey@npm:^0.1.1, @types/is-hotkey@npm:^0.1.8": version: 0.1.10 resolution: "@types/is-hotkey@npm:0.1.10" checksum: 9ecc49fb3822b3cfa8335132d54c6e577d0b14bb52d0bf1f817cdd19c442555b7523945e2ae72f6098e3c7f64b4777390f38afec3e4660343cfb471377e7fd82 @@ -21573,57 +17397,57 @@ __metadata: linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.3 - resolution: "@types/istanbul-lib-coverage@npm:2.0.3" - checksum: 0650cba4be8f464bee89b9de0b71a5ea3b5cc676ce24e1196b5d6a51542ce9e613ae4549bf19756bb33dbbbb32b47931040266100062bfb197c597d73e341eb0 + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 + checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/istanbul-reports@npm:3.0.0" +"@types/istanbul-reports@npm:^1.1.1": + version: 1.1.2 + resolution: "@types/istanbul-reports@npm:1.1.2" dependencies: + "@types/istanbul-lib-coverage": "*" "@types/istanbul-lib-report": "*" - checksum: 286a18cff19c4dac4321b9ea406a3560faf577fb2a4df5abf9d577fa81ba831c9baa7d40d03f1daf7fe613d468546b731c00b844b72fad9834c583311a35bb7b + checksum: 00866e815d1e68d0a590d691506937b79d8d65ad8eab5ed34dbfee66136c7c0f4ea65327d32046d5fe469f22abea2b294987591dc66365ebc3991f7e413b2d78 languageName: node linkType: hard -"@types/jest@npm:*": - version: 27.0.2 - resolution: "@types/jest@npm:27.0.2" +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: - jest-diff: ^27.0.0 - pretty-format: ^27.0.0 - checksum: 814ad5f5d2f277849f47e52906da4b745758e555630fc8cb46a071bde648eefeffb1b35710c530a8cea7fc4ea7c1d813812c120484bf7902ab6c5e473cdd49c9 + "@types/istanbul-lib-report": "*" + checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 languageName: node linkType: hard -"@types/jest@npm:29.5.4": - version: 29.5.4 - resolution: "@types/jest@npm:29.5.4" +"@types/jest@npm:*, @types/jest@npm:^29.2.1": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 38ed5942f44336452efd0f071eab60aaa57cd8d46530348d0a3aa5a691dcbf1366c4ca8f6ee8364efb45b4413bfefae443e5d4f469246a472a03b21ac11cd4ed + checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 languageName: node linkType: hard -"@types/jest@npm:^29.2.1": - version: 29.5.0 - resolution: "@types/jest@npm:29.5.0" +"@types/jest@npm:29.5.4": + version: 29.5.4 + resolution: "@types/jest@npm:29.5.4" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: cd877e5c56d299cceb8bfdcbb1a77723c706750dd3c3bc47403bc3599b8faff590a3b009c68bb5b11bf7a8c77d1fb01de5e124329b4a08e65f1cdda28b0ecdb8 + checksum: 38ed5942f44336452efd0f071eab60aaa57cd8d46530348d0a3aa5a691dcbf1366c4ca8f6ee8364efb45b4413bfefae443e5d4f469246a472a03b21ac11cd4ed languageName: node linkType: hard @@ -21649,9 +17473,9 @@ __metadata: linkType: hard "@types/js-yaml@npm:^4.0.0": - version: 4.0.5 - resolution: "@types/js-yaml@npm:4.0.5" - checksum: 7dcac8c50fec31643cc9d6444b5503239a861414cdfaa7ae9a38bc22597c4d850c4b8cec3d82d73b3fbca408348ce223b0408d598b32e094470dfffc6d486b4d + version: 4.0.9 + resolution: "@types/js-yaml@npm:4.0.9" + checksum: e5e5e49b5789a29fdb1f7d204f82de11cb9e8f6cb24ab064c616da5d6e1b3ccfbf95aa5d1498a9fbd3b9e745564e69b4a20b6c530b5a8bbb2d4eb830cda9bc69 languageName: node linkType: hard @@ -21666,13 +17490,6 @@ __metadata: languageName: node linkType: hard -"@types/json-buffer@npm:~3.0.0": - version: 3.0.0 - resolution: "@types/json-buffer@npm:3.0.0" - checksum: 6b0a371dd603f0eec9d00874574bae195382570e832560dadf2193ee0d1062b8e0694bbae9798bc758632361c227b1e3b19e3bd914043b498640470a2da38b77 - languageName: node - linkType: hard - "@types/json-patch@npm:0.0.30": version: 0.0.30 resolution: "@types/json-patch@npm:0.0.30" @@ -21680,14 +17497,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.7": +"@types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 @@ -21695,9 +17505,9 @@ __metadata: linkType: hard "@types/json-stable-stringify@npm:^1.0.32": - version: 1.0.32 - resolution: "@types/json-stable-stringify@npm:1.0.32" - checksum: 3091ddc8d15c6cce1a847ba1f8db21e7c2564c7b8bc6923a873801d936228f775096b517d62653fbcebedcb2a7992555dc6ed11517ef050e75525cdf1d1bce8d + version: 1.1.0 + resolution: "@types/json-stable-stringify@npm:1.1.0" + checksum: 7fdf2463b2d3ed1ffa08466842f3864b934c16061c68c5aa0aa4bc541879edaeb59ad874ffbd8b4e6714628c88ccb3b4e85dbce40badb16d104aa329212c15ba languageName: node linkType: hard @@ -21708,34 +17518,34 @@ __metadata: languageName: node linkType: hard -"@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:^8.5.0": - version: 8.5.1 - resolution: "@types/jsonwebtoken@npm:8.5.1" +"@types/jsonfile@npm:*": + version: 6.1.4 + resolution: "@types/jsonfile@npm:6.1.4" dependencies: "@types/node": "*" - checksum: 740581b0d1e18f31ce9332e26702ae2704af86f0cb0bb914ee3554517e514e97392610525f9349ea8fe3742d0f816eb86d7ab864ddbd19cef55b2db4a43883a1 + checksum: 309fda20eb5f1cf68f2df28931afdf189c5e7e6bec64ac783ce737bb98908d57f6f58757ad5da9be37b815645a6f914e2d4f3ac66c574b8fe1ba6616284d0e97 languageName: node linkType: hard -"@types/jsonwebtoken@npm:8.5.8": - version: 8.5.8 - resolution: "@types/jsonwebtoken@npm:8.5.8" +"@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:^9.0.0, @types/jsonwebtoken@npm:^9.0.2": + version: 9.0.7 + resolution: "@types/jsonwebtoken@npm:9.0.7" dependencies: "@types/node": "*" - checksum: 56738a918c543dba30786066959f801212e7fb5cd4ec53cf7b8d227711ed358834feb9e5141f7f88ec7c642bb39757330a5a8917e3b22e0ff9084940d35f0d70 + checksum: 872b62e2a50ec399d695402ccddfeb5cd66a6c3d28511f27453b932b6b67eb82c2d0ecaa864939848b88b3a8276c2492647bf5707bc82a6ac7e420d3412b9047 languageName: node linkType: hard -"@types/jsonwebtoken@npm:^9.0.0": - version: 9.0.1 - resolution: "@types/jsonwebtoken@npm:9.0.1" +"@types/jsonwebtoken@npm:8.5.8": + version: 8.5.8 + resolution: "@types/jsonwebtoken@npm:8.5.8" dependencies: "@types/node": "*" - checksum: a7f0925e9a42ad3ae970364c63c5986d40da5c83d51d3f4e624eb0f064a380376f9e3fb3f2f837390a9ab80143f5d75fd51866da30e110f6b486a3379e1c768f + checksum: 56738a918c543dba30786066959f801212e7fb5cd4ec53cf7b8d227711ed358834feb9e5141f7f88ec7c642bb39757330a5a8917e3b22e0ff9084940d35f0d70 languageName: node linkType: hard -"@types/keyv@npm:*": +"@types/keyv@npm:^3.1.4": version: 3.1.4 resolution: "@types/keyv@npm:3.1.4" dependencies: @@ -21744,10 +17554,10 @@ __metadata: languageName: node linkType: hard -"@types/linkify-it@npm:*": - version: 3.0.2 - resolution: "@types/linkify-it@npm:3.0.2" - checksum: dff8f10fafb885422474e456596f12d518ec4cdd6c33cca7a08e7c86b912d301ed91cf5a7613e148c45a12600dc9ab3d85ad16d5b48dc1aaeda151a68f16b536 +"@types/linkify-it@npm:^5": + version: 5.0.0 + resolution: "@types/linkify-it@npm:5.0.0" + checksum: ec98e03aa883f70153a17a1e6ed9e28b39a604049b485daeddae3a1482ec65cac0817520be6e301d99fd1a934b3950cf0f855655aae6ec27da2bb676ba4a148e languageName: node linkType: hard @@ -21758,31 +17568,17 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.14.149, @types/lodash@npm:^4.14.150": - version: 4.14.168 - resolution: "@types/lodash@npm:4.14.168" - checksum: 3326966ee089debde7a7d819e13b64991756e879945852c3357df14a7be837130f697c2cb451be9dd599eb7213fed0975bc9ca0f8f56b46fa73c46a83815b79c - languageName: node - linkType: hard - -"@types/lodash@npm:^4.14.167": - version: 4.14.182 - resolution: "@types/lodash@npm:4.14.182" - checksum: 7dd137aa9dbabd632408bd37009d984655164fa1ecc3f2b6eb94afe35bf0a5852cbab6183148d883e9c73a958b7fec9a9bcf7c8e45d41195add6a18c34958209 +"@types/lodash@npm:^4.14.149, @types/lodash@npm:^4.14.150, @types/lodash@npm:^4.14.167, @types/lodash@npm:^4.14.200": + version: 4.17.12 + resolution: "@types/lodash@npm:4.17.12" + checksum: 7b564e4114f09ce5ae31a2e9493592baf20bb498507f3705c5d91cf838c2298b4f6a06f2d6c8dc608fcac63e210a2b7b13388c7a5e220e15688f813521030127 languageName: node linkType: hard -"@types/lodash@npm:^4.14.200": - version: 4.17.0 - resolution: "@types/lodash@npm:4.17.0" - checksum: 3f98c0b67a93994cbc3403d4fa9dbaf52b0b6bb7f07a764d73875c2dcd5ef91222621bd5bcf8eee7b417a74d175c2f7191b9f595f8603956fd06f0674c0cba93 - languageName: node - linkType: hard - -"@types/long@npm:^4.0.0, @types/long@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/long@npm:4.0.1" - checksum: ff9653c33f5000d0f131fd98a950a0343e2e33107dd067a97ac4a3b9678e1a2e39ea44772ad920f54ef6e8f107f76bc92c2584ba905a0dc4253282a4101166d0 +"@types/long@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/long@npm:4.0.2" + checksum: d16cde7240d834cf44ba1eaec49e78ae3180e724cd667052b194a372f350d024cba8dd3f37b0864931683dab09ca935d52f0c4c1687178af5ada9fc85b0635f4 languageName: node linkType: hard @@ -21796,36 +17592,36 @@ __metadata: languageName: node linkType: hard -"@types/markdown-it@npm:^12.2.3": - version: 12.2.3 - resolution: "@types/markdown-it@npm:12.2.3" +"@types/markdown-it@npm:^14.1.1": + version: 14.1.2 + resolution: "@types/markdown-it@npm:14.1.2" dependencies: - "@types/linkify-it": "*" - "@types/mdurl": "*" - checksum: 868824a3e4d00718ba9cd4762cf16694762a670860f4b402e6e9f952b6841a2027488bdc55d05c2b960bf5078df21a9d041270af7e8949514645fe88fdb722ac + "@types/linkify-it": ^5 + "@types/mdurl": ^2 + checksum: ad66e0b377d6af09a155bb65f675d1e2cb27d20a3d407377fe4508eb29cde1e765430b99d5129f89012e2524abb5525d629f7057a59ff9fd0967e1ff645b9ec6 languageName: node linkType: hard "@types/mdast@npm:^3.0.0": - version: 3.0.3 - resolution: "@types/mdast@npm:3.0.3" + version: 3.0.15 + resolution: "@types/mdast@npm:3.0.15" dependencies: - "@types/unist": "*" - checksum: 5318624af815ac531e49de06da1d9458f1570f87274dced00353a240b2d2c4260f1fdd40c5e65784e4a4f49b0c5eb43f77faee60def723b501880ab3747b9916 + "@types/unist": ^2 + checksum: af85042a4e3af3f879bde4059fa9e76c71cb552dffc896cdcc6cf9dc1fd38e37035c2dbd6245cfa6535b433f1f0478f5549696234ccace47a64055a10c656530 languageName: node linkType: hard -"@types/mdurl@npm:*": - version: 1.0.2 - resolution: "@types/mdurl@npm:1.0.2" - checksum: 79c7e523b377f53cf1f5a240fe23d0c6cae856667692bd21bf1d064eafe5ccc40ae39a2aa0a9a51e8c94d1307228c8f6b121e847124591a9a828c3baf65e86e2 +"@types/mdurl@npm:^2": + version: 2.0.0 + resolution: "@types/mdurl@npm:2.0.0" + checksum: 78746e96c655ceed63db06382da466fd52c7e9dc54d60b12973dfdd110cae06b9439c4b90e17bb8d4461109184b3ea9f3e9f96b3e4bf4aa9fe18b6ac35f283c8 languageName: node linkType: hard "@types/mdx@npm:^2.0.0": - version: 2.0.5 - resolution: "@types/mdx@npm:2.0.5" - checksum: 1069baff0b2d0fb0bc724748e2386af626cc30f8ef99e680afb4dee566ed0aeabd31cea774212a7033f491e594a0acc234116078b252cba94ac413f91eb585a3 + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 195137b548e75a85f0558bb1ca5088aff1c01ae0fc64454da06085b7513a043356d0bb51ed559d3cbc7ad724ccd8cef2a7d07d014b89a47a74dff8875ceb3b15 languageName: node linkType: hard @@ -21836,58 +17632,48 @@ __metadata: languageName: node linkType: hard -"@types/mime-types@npm:^2.1.0": - version: 2.1.1 - resolution: "@types/mime-types@npm:2.1.1" - checksum: 106b5d556add46446a579ad25ff15d6b421851790d887edcad558c90c1e64b1defc72bfbaf4b08f208916e21d9cc45cdb951d77be51268b18221544cfe054a3c +"@types/methods@npm:^1.1.4": + version: 1.1.4 + resolution: "@types/methods@npm:1.1.4" + checksum: ad2a7178486f2fd167750f3eb920ab032a947ff2e26f55c86670a6038632d790b46f52e5b6ead5823f1e53fc68028f1e9ddd15cfead7903e04517c88debd72b1 languageName: node linkType: hard -"@types/mime@npm:*": - version: 3.0.1 - resolution: "@types/mime@npm:3.0.1" - checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 +"@types/mime-types@npm:^2.1.0": + version: 2.1.4 + resolution: "@types/mime-types@npm:2.1.4" + checksum: f8c521c54ee0c0b9f90a65356a80b1413ed27ccdc94f5c7ebb3de5d63cedb559cd2610ea55b4100805c7349606a920d96e54f2d16b2f0afa6b7cd5253967ccc9 languageName: node linkType: hard "@types/mime@npm:^1": - version: 1.3.2 - resolution: "@types/mime@npm:1.3.2" - checksum: 0493368244cced1a69cb791b485a260a422e6fcc857782e1178d1e6f219f1b161793e9f87f5fae1b219af0f50bee24fcbe733a18b4be8fdd07a38a8fb91146fd + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: e29a5f9c4776f5229d84e525b7cd7dd960b51c30a0fb9a028c0821790b82fca9f672dab56561e2acd9e8eed51d431bde52eafdfef30f643586c4162f1aecfc78 languageName: node linkType: hard -"@types/minimatch@npm:*": - version: 3.0.3 - resolution: "@types/minimatch@npm:3.0.3" - checksum: b80259d55b96ef24cb3bb961b6dc18b943f2bb8838b4d8e7bead204f3173e551a416ffa49f9aaf1dc431277fffe36214118628eacf4aea20119df8835229901b +"@types/minimatch@npm:^5.1.2": + version: 5.1.2 + resolution: "@types/minimatch@npm:5.1.2" + checksum: 0391a282860c7cb6fe262c12b99564732401bdaa5e395bee9ca323c312c1a0f45efbf34dce974682036e857db59a5c9b1da522f3d6055aeead7097264c8705a8 languageName: node linkType: hard "@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da - languageName: node - linkType: hard - -"@types/node-fetch@npm:^2.6.2": - version: 2.6.2 - resolution: "@types/node-fetch@npm:2.6.2" - dependencies: - "@types/node": "*" - form-data: ^3.0.0 - checksum: 6f73b1470000d303d25a6fb92875ea837a216656cb7474f66cdd67bb014aa81a5a11e7ac9c21fe19bee9ecb2ef87c1962bceeaec31386119d1ac86e4c30ad7a6 + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: f38d36e7b6edecd9badc9cf50474159e9da5fa6965a75186cceaf883278611b9df6669dc3a3cc122b7938d317b68a9e3d573d316fcb35d1be47ec9e468c6bd8a languageName: node linkType: hard -"@types/node-fetch@npm:^2.6.4": - version: 2.6.4 - resolution: "@types/node-fetch@npm:2.6.4" +"@types/node-fetch@npm:^2.6.2, @types/node-fetch@npm:^2.6.4": + version: 2.6.11 + resolution: "@types/node-fetch@npm:2.6.11" dependencies: "@types/node": "*" - form-data: ^3.0.0 - checksum: f3e1d881bb42269e676ecaf49f0e096ab345e22823a2b2d071d60619414817fe02df48a31a8d05adb23054028a2a65521bdb3906ceb763ab6d3339c8d8775058 + form-data: ^4.0.0 + checksum: 180e4d44c432839bdf8a25251ef8c47d51e37355ddd78c64695225de8bc5dc2b50b7bb855956d471c026bb84bd7295688a0960085e7158cbbba803053492568b languageName: node linkType: hard @@ -21900,24 +17686,26 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 17.0.25 - resolution: "@types/node@npm:17.0.25" - checksum: 6a820bd624e69ea772f52a6cdb326484eff5829443dc981939373929ade109f58c21698b9f0a831bd6ceea799e722a75dc49c5fa7a6bc32a81e1cbdfc6507b64 +"@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": + version: 22.7.9 + resolution: "@types/node@npm:22.7.9" + dependencies: + undici-types: ~6.19.2 + checksum: 02671449e61f3f7c9898da44e18af272056fee0afbbc98b11dcff7cd7c4ed6c8a45353cfdde413208d9f597e247ee68d908c83a72cae4cbdd763b0e3a45ac0cd languageName: node linkType: hard "@types/node@npm:14": - version: 14.17.19 - resolution: "@types/node@npm:14.17.19" - checksum: 3365ee4fe7878b0f1d36dc4372146322c7f4db3b0574401753084144b04356e02d15cd55db79e77dda071a06cbcc37f57c8888441fd4c8b1c24f9765c7441b2a + version: 14.18.63 + resolution: "@types/node@npm:14.18.63" + checksum: be909061a54931778c71c49dc562586c32f909c4b6197e3d71e6dac726d8bd9fccb9f599c0df99f52742b68153712b5097c0f00cac4e279fa894b0ea6719a8fd languageName: node linkType: hard -"@types/node@npm:14 || 16": - version: 16.18.23 - resolution: "@types/node@npm:16.18.23" - checksum: 00e51db28fc7a182747f37215b3f25400b1c7a8525e09fa14e55be5798891a118ebf636a49d3197335a3580fcb8222fd4ecc20c2ccff69f1c0d233fc5697465d +"@types/node@npm:14 || 16, @types/node@npm:^16.0.0": + version: 16.18.115 + resolution: "@types/node@npm:16.18.115" + checksum: a9caf3a72b8fca0a945c04b99502615f297fc9d12779147822cf10b4a3fe77161b631ae239b9522cf9ccda90fcd9d49abe255bd2012a3347f677210610760d6d languageName: node linkType: hard @@ -21928,40 +17716,19 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:>=12.12.47": - version: 18.11.18 - resolution: "@types/node@npm:18.11.18" - checksum: 03f17f9480f8d775c8a72da5ea7e9383db5f6d85aa5fefde90dd953a1449bd5e4ffde376f139da4f3744b4c83942166d2a7603969a6f8ea826edfb16e6e3b49d - languageName: node - linkType: hard - "@types/node@npm:^10.1.0": - version: 10.17.55 - resolution: "@types/node@npm:10.17.55" - checksum: d47d358995ba0c68fb5a42e1a4b17fee5f9371b60276c8c79eb978fdb1940b61965a32eecd1758c481f47aacdbb369ee94f6ad0575395042825e1eba77e0e6fd - languageName: node - linkType: hard - -"@types/node@npm:^14.11.8": - version: 14.18.63 - resolution: "@types/node@npm:14.18.63" - checksum: be909061a54931778c71c49dc562586c32f909c4b6197e3d71e6dac726d8bd9fccb9f599c0df99f52742b68153712b5097c0f00cac4e279fa894b0ea6719a8fd + version: 10.17.60 + resolution: "@types/node@npm:10.17.60" + checksum: 2cdb3a77d071ba8513e5e8306fa64bf50e3c3302390feeaeff1fd325dd25c8441369715dfc8e3701011a72fed5958c7dfa94eb9239a81b3c286caa4d97db6eef languageName: node linkType: hard -"@types/node@npm:^16.0.0": - version: 16.18.34 - resolution: "@types/node@npm:16.18.34" - checksum: 35c0ffe09687578d002ceb7e706d0ba450546aeb3d2716f28691f2af0063bd274dbde0f741d087ea217f2a8db413eb700d22dfb4f08a67986ff801423bd7be8d - languageName: node - linkType: hard - -"@types/node@npm:^18.0.0": - version: 18.19.34 - resolution: "@types/node@npm:18.19.34" +"@types/node@npm:^18.0.0, @types/node@npm:^18.11.18": + version: 18.19.59 + resolution: "@types/node@npm:18.19.59" dependencies: undici-types: ~5.26.4 - checksum: ae6369baa1529ec3564da29611ec7eb8ccb219080d717292151b6b899820d25290243d01c9240f11a63d1a42e47198cd6310fab67b6d17bea723221fea07b644 + checksum: 8e45a05aa91437d3d11a346775ac16589353070c504f91a62cd91945a384231ccbbe92009a8e1ae653f954f9de5bf8ff106cc8e26721ecab98914dc019217aef languageName: node linkType: hard @@ -21975,9 +17742,9 @@ __metadata: linkType: hard "@types/normalize-package-data@npm:^2.4.0": - version: 2.4.0 - resolution: "@types/normalize-package-data@npm:2.4.0" - checksum: fd22ba86a186a033dbe173840fd2ad091032be6d48163198869d058821acca7373d9f39cfd0caf42f3b92bc737723814fe1b4e9e90eacaa913836610aa197d3b + version: 2.4.4 + resolution: "@types/normalize-package-data@npm:2.4.4" + checksum: 65dff72b543997b7be8b0265eca7ace0e34b75c3e5fee31de11179d08fa7124a7a5587265d53d0409532ecb7f7fba662c2012807963e1f9b059653ec2c83ee05 languageName: node linkType: hard @@ -21991,9 +17758,9 @@ __metadata: linkType: hard "@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 5bf62eec37c332ad10059252fc0dab7e7da730764869c980b0714777ad3d065e490627be9f40fc52f238ffa3ac4199b19de4127196910576c2fe34dd47c7a470 languageName: node linkType: hard @@ -22016,21 +17783,21 @@ __metadata: linkType: hard "@types/passport-strategy@npm:*": - version: 0.2.35 - resolution: "@types/passport-strategy@npm:0.2.35" + version: 0.2.38 + resolution: "@types/passport-strategy@npm:0.2.38" dependencies: "@types/express": "*" "@types/passport": "*" - checksum: e5949063ad8977ce1f7cf2a5df6bc379c4d43a959c9946bfed6570ef379c6c12d1713212a29b3b5aafc631c5ebe9bfe082116f3e75ca1bf45d79dd889671532d + checksum: b580e165182b137a6e57b6b7511904e6c875a5e372f08679ec54f456dc5c2a72d86f23d9373a52d8286b207fe8240946686f9e3d50b0bc1b4f7316f336a06fa2 languageName: node linkType: hard "@types/passport@npm:*": - version: 1.0.6 - resolution: "@types/passport@npm:1.0.6" + version: 1.0.16 + resolution: "@types/passport@npm:1.0.16" dependencies: "@types/express": "*" - checksum: 0dcdb71bef13c2477e76e4237421e375c07e1f4389af0cf165f83e33716ad6ffeb238836af2fcad1674936844f34ff534fe0456afdb5d3c7f752a3278d30deed + checksum: e4a02fa338536eb82694ea548689a7214b1ca98df6a896080daa2b6a8859db02a1e6244eeefaf6f3cc9c268239bb4a7912049a9ed86192144a65c10e55219f80 languageName: node linkType: hard @@ -22062,23 +17829,16 @@ __metadata: linkType: hard "@types/pretty-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/pretty-hrtime@npm:1.0.0" - checksum: d7b291c1d1fb1d9865dcd79c6ddd4504b42cb6053b052e17ad5a1155ed89ec4dab8f4960300d89a37afa9beb3ae16f85d4717d5c0d8e8afb2f7e23dc22b33f89 - languageName: node - linkType: hard - -"@types/prop-types@npm:*": - version: 15.7.4 - resolution: "@types/prop-types@npm:15.7.4" - checksum: ef6e1899e59b876c273811b1bd845022fc66d5a3d11cb38a25b6c566b30514ae38fe20a40f67622f362a4f4f7f9224e22d8da101cff3d6e97e11d7b4c307cfc1 + version: 1.0.3 + resolution: "@types/pretty-hrtime@npm:1.0.3" + checksum: 288061dff992c8107d5c7b5a1277bbb0a314a27eb10087dea628a08fa37694a655191a69e25a212c95e61e498363c48ad9e281d23964a448f6c14100a6be0910 languageName: node linkType: hard -"@types/prop-types@npm:^15.0.0": - version: 15.7.12 - resolution: "@types/prop-types@npm:15.7.12" - checksum: ac16cc3d0a84431ffa5cfdf89579ad1e2269549f32ce0c769321fdd078f84db4fbe1b461ed5a1a496caf09e637c0e367d600c541435716a55b1d9713f5035dfe +"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0": + version: 15.7.13 + resolution: "@types/prop-types@npm:15.7.13" + checksum: 8935cad87c683c665d09a055919d617fe951cb3b2d5c00544e3a913f861a2bd8d2145b51c9aa6d2457d19f3107ab40784c40205e757232f6a80cc8b1c815513c languageName: node linkType: hard @@ -22090,16 +17850,35 @@ __metadata: linkType: hard "@types/qs@npm:*, @types/qs@npm:^6.9.5": - version: 6.9.6 - resolution: "@types/qs@npm:6.9.6" - checksum: 01871b1cf7062717ec76fcb9b29ddae1e04fcfadc1c76d86ec2571e72f27bf09ff31b094b295be8d4ca664aeec9b8965563680b31fcab7aba1ed93afac5181cd + version: 6.9.16 + resolution: "@types/qs@npm:6.9.16" + checksum: 2e8918150c12735630f7ee16b770c72949274938c30306025f68aaf977227f41fe0c698ed93db1099e04916d582ac5a1faf7e3c7061c8d885d9169f59a184b6c + languageName: node + linkType: hard + +"@types/ramda@npm:0.29.3": + version: 0.29.3 + resolution: "@types/ramda@npm:0.29.3" + dependencies: + types-ramda: ^0.29.4 + checksum: 172b18d62473d4bffb1e4e92fa293e56fa4f85fcf91b1b2c9178955f775e34065cc408e93f1171436b52e240599ecb1be51955dab07ca389bf2da98f85f820a9 languageName: node linkType: hard "@types/range-parser@npm:*": - version: 1.2.3 - resolution: "@types/range-parser@npm:1.2.3" - checksum: a0a4218214d2c599e2128a8965e9183d1f0b8fc614def43a2183cf80534d10fcf86357c823c7907e779df0ab048fd1fa3818b4c8f0f6f99ba150a3f99df7d03d + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 95640233b689dfbd85b8c6ee268812a732cf36d5affead89e806fe30da9a430767af8ef2cd661024fd97e19d61f3dec75af2df5e80ec3bea000019ab7028629a + languageName: node + linkType: hard + +"@types/react-codemirror@npm:1.0.11": + version: 1.0.11 + resolution: "@types/react-codemirror@npm:1.0.11" + dependencies: + "@types/codemirror": "*" + "@types/react": "*" + checksum: fb6a3bae3b4f163381b8858e1216849e2a3dc4f3dc16a685fe980c3c5c19957fe0abdea3efe003101e4df95ab2aeefc84ea27608fa9e93665b0f1be0e0d8d4c4 languageName: node linkType: hard @@ -22134,15 +17913,6 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:16.9.14": - version: 16.9.14 - resolution: "@types/react-dom@npm:16.9.14" - dependencies: - "@types/react": ^16 - checksum: 68a4ee88f7a56cdbfbca24b1936b9aa5dad8b40ffbf1f047ddf990454aec6e0c9da2a01c9ae87045e95236602061646c90d02f01281533e14f1970687873030f - languageName: node - linkType: hard - "@types/react-dom@npm:18.3.0": version: 18.3.0 resolution: "@types/react-dom@npm:18.3.0" @@ -22153,11 +17923,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18.0.0": - version: 18.2.6 - resolution: "@types/react-dom@npm:18.2.6" + version: 18.3.1 + resolution: "@types/react-dom@npm:18.3.1" dependencies: "@types/react": "*" - checksum: b56e42efab121a3a8013d2eb8c1688e6028a25ea6d33c4362d2846f0af3760b164b4d7c34846614024cfb8956cca70dd1743487f152e32ff89a00fe6fbd2be54 + checksum: ad28ecce3915d30dc76adc2a1373fda1745ba429cea290e16c6628df9a05fd80b6403c8e87d78b45e6c60e51df7a67add389ab62b90070fbfdc9bda8307d9953 languageName: node linkType: hard @@ -22172,11 +17942,11 @@ __metadata: linkType: hard "@types/react-infinite-scroller@npm:^1.2.3": - version: 1.2.3 - resolution: "@types/react-infinite-scroller@npm:1.2.3" + version: 1.2.5 + resolution: "@types/react-infinite-scroller@npm:1.2.5" dependencies: "@types/react": "*" - checksum: ae11063b5e114bff1f06e9d3d2ca0948a3a224f13b4a30fbfe56f84e535ee6232de9667456695bbbb409de51887d701f8558fd28c36a2ea172e8593346de85d1 + checksum: 8b56f63c35802d2593cc25b3ab03bfbeceb2a5379997364fb5cea414cc8690341fbf3902d8fc7a6db43f87c144276009cb4a7f3388f1a52091ac3a4fd7de7d33 languageName: node linkType: hard @@ -22189,7 +17959,7 @@ __metadata: languageName: node linkType: hard -"@types/react-modal@npm:3.13.1, @types/react-modal@npm:^3.13.1": +"@types/react-modal@npm:3.13.1": version: 3.13.1 resolution: "@types/react-modal@npm:3.13.1" dependencies: @@ -22198,6 +17968,15 @@ __metadata: languageName: node linkType: hard +"@types/react-modal@npm:^3.13.1": + version: 3.16.3 + resolution: "@types/react-modal@npm:3.16.3" + dependencies: + "@types/react": "*" + checksum: 53c92dfbe46aae6f4ca4d96a166fd69a4b8dc539c5e8f755086dd1471656924ca6dd0a179be746c634686a0073aef67bb9615ee8600d9536cc1521b738e48453 + languageName: node + linkType: hard + "@types/react-pdf@npm:5.0.9": version: 5.0.9 resolution: "@types/react-pdf@npm:5.0.9" @@ -22218,20 +17997,20 @@ __metadata: linkType: hard "@types/react-test-renderer@npm:^18.0.0": - version: 18.0.0 - resolution: "@types/react-test-renderer@npm:18.0.0" + version: 18.3.0 + resolution: "@types/react-test-renderer@npm:18.3.0" dependencies: "@types/react": "*" - checksum: 6afc938a1d7618d88ab8793e251f0bd5981bf3f08c1b600f74df3f8800b92589ea534dc6dcb7c8d683893fcc740bf8d7843a42bf2dae59785cfe88f004bd7b0b + checksum: c53683990bd194cb68e3987bda79c78eff41517f7a747e92f3e54217c2ce3addd031b8a45bf631982c909cc2caeeb905372f322758e05bb76c03754a3f24426e languageName: node linkType: hard "@types/react-transition-group@npm:^4.4.0": - version: 4.4.6 - resolution: "@types/react-transition-group@npm:4.4.6" + version: 4.4.11 + resolution: "@types/react-transition-group@npm:4.4.11" dependencies: "@types/react": "*" - checksum: 0872143821d7ee20a1d81e965f8b1e837837f11cd2206973f1f98655751992d9390304d58bac192c9cd923eca95bff107d8c9e3364a180240d5c2a6fd70fd7c3 + checksum: a6e3b2e4363cb019e256ae4f19dadf9d7eb199da1a5e4109bbbf6a132821884044d332e9c74b520b1e5321a7f545502443fd1ce0b18649c8b510fa4220b0e5c2 languageName: node linkType: hard @@ -22266,26 +18045,26 @@ __metadata: languageName: node linkType: hard -"@types/resize-observer-browser@npm:^0.1.5": - version: 0.1.6 - resolution: "@types/resize-observer-browser@npm:0.1.6" - checksum: e99a1e945c377bd70ed628dfc45def7187624a587be8c0e4f86386bc1d7a56e34c1c634d8f972c90865c13686d7f50ee6fec1148ffa4cd7a6568014eb6c28e8f +"@types/resize-observer-browser@npm:^0.1.6": + version: 0.1.11 + resolution: "@types/resize-observer-browser@npm:0.1.11" + checksum: 1e36bde885fb5d89d7138edce3b6dae51f14605a89cd1ffcf60e53ca1866515afe82b6fda7abb84f9c9639166f45480c9b7e512849bcc6502597984f302937c1 languageName: node linkType: hard "@types/resolve@npm:^1.20.2": - version: 1.20.2 - resolution: "@types/resolve@npm:1.20.2" - checksum: 61c2cad2499ffc8eab36e3b773945d337d848d3ac6b7b0a87c805ba814bc838ef2f262fc0f109bfd8d2e0898ff8bd80ad1025f9ff64f1f71d3d4294c9f14e5f6 + version: 1.20.6 + resolution: "@types/resolve@npm:1.20.6" + checksum: dc35f5517606b6687cd971c0281ac58bdee2c50c051b030f04647d3991688be2259c304ee97e5b5d4b9936072c36767eb5933b54611a407d6557972bb6fea4f6 languageName: node linkType: hard -"@types/responselike@npm:*, @types/responselike@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/responselike@npm:1.0.0" +"@types/responselike@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/responselike@npm:1.0.3" dependencies: "@types/node": "*" - checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 + checksum: 6ac4b35723429b11b117e813c7acc42c3af8b5554caaf1fc750404c1ae59f9b7376bc69b9e9e194a5a97357a597c2228b7173d317320f0360d617b6425212f58 languageName: node linkType: hard @@ -22296,6 +18075,16 @@ __metadata: languageName: node linkType: hard +"@types/rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/rimraf@npm:3.0.2" + dependencies: + "@types/glob": "*" + "@types/node": "*" + checksum: b47fa302f46434cba704d20465861ad250df79467d3d289f9d6490d3aeeb41e8cb32dd80bd1a8fd833d1e185ac719fbf9be12e05ad9ce9be094d8ee8f1405347 + languageName: node + linkType: hard + "@types/sanitize-html@npm:2.9.0": version: 2.9.0 resolution: "@types/sanitize-html@npm:2.9.0" @@ -22305,63 +18094,40 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.4": - version: 7.5.0 - resolution: "@types/semver@npm:7.5.0" - checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2 - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.6": - version: 7.3.9 - resolution: "@types/semver@npm:7.3.9" - checksum: 60bfcfdfa7f937be2c6f4b37ddb6714fb0f27b05fe4cbdfdd596a97d35ed95d13ee410efdd88e72a66449d0384220bf20055ab7d6b5df10de4990fbd20e5cbe0 +"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4, @types/semver@npm:^7.3.6": + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 languageName: node linkType: hard "@types/send@npm:*": - version: 0.17.1 - resolution: "@types/send@npm:0.17.1" + version: 0.17.4 + resolution: "@types/send@npm:0.17.4" dependencies: "@types/mime": ^1 "@types/node": "*" - checksum: 10b620a5960058ef009afbc17686f680d6486277c62f640845381ec4baa0ea683fdd77c3afea4803daf5fcddd3fb2972c8aa32e078939f1d4e96f83195c89793 + checksum: cf4db48251bbb03cd6452b4de6e8e09e2d75390a92fd798eca4a803df06444adc94ed050246c94c7ed46fb97be1f63607f0e1f13c3ce83d71788b3e08640e5e0 languageName: node linkType: hard "@types/serve-index@npm:^1.9.1": - version: 1.9.1 - resolution: "@types/serve-index@npm:1.9.1" + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" dependencies: "@types/express": "*" - checksum: 026f3995fb500f6df7c3fe5009e53bad6d739e20b84089f58ebfafb2f404bbbb6162bbe33f72d2f2af32d5b8d3799c8e179793f90d9ed5871fb8591190bb6056 - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.13.9 - resolution: "@types/serve-static@npm:1.13.9" - dependencies: - "@types/mime": ^1 - "@types/node": "*" - checksum: 5c5f3b64e9fe7c51fb428ef70f1f2365b897fc3c8400be6d6afc8db0f152639182b360361ebd3d0cbaeb607b125dee03bf0c50bf7e08642ff150028f05bb7381 + checksum: 72727c88d54da5b13275ebfb75dcdc4aa12417bbe9da1939e017c4c5f0c906fae843aa4e0fbfe360e7ee9df2f3d388c21abfc488f77ce58693fb57809f8ded92 languageName: node linkType: hard -"@types/serve-static@npm:^1.13.10": - version: 1.15.1 - resolution: "@types/serve-static@npm:1.15.1" +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10": + version: 1.15.7 + resolution: "@types/serve-static@npm:1.15.7" dependencies: - "@types/mime": "*" + "@types/http-errors": "*" "@types/node": "*" - checksum: 2e078bdc1e458c7dfe69e9faa83cc69194b8896cce57cb745016580543c7ab5af07fdaa8ac1765eb79524208c81017546f66056f44d1204f812d72810613de36 + "@types/send": "*" + checksum: bbbf00dbd84719da2250a462270dc68964006e8d62f41fe3741abd94504ba3688f420a49afb2b7478921a1544d3793183ffa097c5724167da777f4e0c7f1a7d6 languageName: node linkType: hard @@ -22389,9 +18155,9 @@ __metadata: linkType: hard "@types/sizzle@npm:^2.3.2": - version: 2.3.2 - resolution: "@types/sizzle@npm:2.3.2" - checksum: 783b6382934d8f12f2e21220a01c4557150f07abd18336f392664fb74ceaa9a9d59b7c859c0b82fd3f15b6484774cd0d493261fe64c78ee399bf198a8fe8d89d + version: 2.3.9 + resolution: "@types/sizzle@npm:2.3.9" + checksum: 413811a79e7e9f1d8f47e6047ae0aea1530449d612304cdda1c30018e3d053b8544861ec2c70bdeca75a0a010192e6bb78efc6fb4caaafdd65c4eee90066686a languageName: node linkType: hard @@ -22403,11 +18169,11 @@ __metadata: linkType: hard "@types/sockjs@npm:^0.3.33": - version: 0.3.33 - resolution: "@types/sockjs@npm:0.3.33" + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" dependencies: "@types/node": "*" - checksum: b9bbb2b5c5ead2fb884bb019f61a014e37410bddd295de28184e1b2e71ee6b04120c5ba7b9954617f0bdf962c13d06249ce65004490889c747c80d3f628ea842 + checksum: b4b5381122465d80ea8b158537c00bc82317222d3fb31fd7229ff25b31fa89134abfbab969118da55622236bf3d8fee75759f3959908b5688991f492008f29bc languageName: node linkType: hard @@ -22419,28 +18185,37 @@ __metadata: linkType: hard "@types/ssh2-streams@npm:*": - version: 0.1.9 - resolution: "@types/ssh2-streams@npm:0.1.9" + version: 0.1.12 + resolution: "@types/ssh2-streams@npm:0.1.12" dependencies: "@types/node": "*" - checksum: 190f3c235bf19787cd255f366d3ac9233875750095f3c73d15e72a1e67a826aed7e7c389603c5e89cb6420b87ff6dffc566f9174e546ddb7ff8c8dc2e8b00def + checksum: aa0aa45e40cfca34b4443dafa8d28ff49196c05c71867cbf0a8cdd5127be4d8a3840819543fcad16535653ca8b0e29217671ed6500ff1e7a3ad2442c5d1b40a6 + languageName: node + linkType: hard + +"@types/ssh2@npm:*": + version: 1.15.1 + resolution: "@types/ssh2@npm:1.15.1" + dependencies: + "@types/node": ^18.11.18 + checksum: 6a10b4da60817f2939cac18006a7ccbc6421facf2370a263072fc5290b1f5d445b385c5f309e93ce447bb33ad92dac18f562ccda20f092076da1c1a55da299fb languageName: node linkType: hard -"@types/ssh2@npm:*, @types/ssh2@npm:^0.5.48": - version: 0.5.49 - resolution: "@types/ssh2@npm:0.5.49" +"@types/ssh2@npm:^0.5.48": + version: 0.5.52 + resolution: "@types/ssh2@npm:0.5.52" dependencies: "@types/node": "*" "@types/ssh2-streams": "*" - checksum: e20ea52dc6f43287d327934642656f0af6ea8cc1de4cd91d30ea3376e72097595ed95cc16a5c1740061f6fa1ee0a844041dc3c4d332746b0bea71a7ca9332fea + checksum: bc1c76ac727ad73ddd59ba849cf0ea3ed2e930439e7a363aff24f04f29b74f9b1976369b869dc9a018223c9fb8ad041c09a0f07aea8cf46a8c920049188cddae languageName: node linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/stack-utils@npm:2.0.0" - checksum: b3fbae25b073116977ecb5c67d22f14567b51a7792403b0bf46e5de8f29bde3bd4ec1626afb22065495ca7f1c699c8bd66720050c94b8f8f9bcefbee79d161fd + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 languageName: node linkType: hard @@ -22452,12 +18227,14 @@ __metadata: linkType: hard "@types/superagent@npm:*": - version: 4.1.10 - resolution: "@types/superagent@npm:4.1.10" + version: 8.1.9 + resolution: "@types/superagent@npm:8.1.9" dependencies: - "@types/cookiejar": "*" + "@types/cookiejar": ^2.1.5 + "@types/methods": ^1.1.4 "@types/node": "*" - checksum: 19bef11de02b0d319459d3993612637a95005ba8f2ca18b370253bb379aa0c38fdf7cff461a6d9258e9e8ef4495b7b04b8f7f4284998305b77eccc8e05ef2750 + form-data: ^4.0.0 + checksum: 530d8c2e87706315c82c8c9696500c40621de3353bc54ea9b104947f3530243abf54d0a49a6ae219d4947606a102ceb94bedfc43b9cc49f74069a18cbb3be8e2 languageName: node linkType: hard @@ -22471,27 +18248,27 @@ __metadata: linkType: hard "@types/tern@npm:*": - version: 0.23.4 - resolution: "@types/tern@npm:0.23.4" + version: 0.23.9 + resolution: "@types/tern@npm:0.23.9" dependencies: "@types/estree": "*" - checksum: d8fd304f147ed08f1d075f09cb8d440b7f785f69c9ec5c30eadf98132fe3f58f3b1bbbd11283858bb261afac5a2039c1c255f290b0f6e4a47cd6a746f30a6aa8 + checksum: 53f229c79edf9454011f5b37c8539e0e760a130beac953d4e2126823de1ac6b0e2a45612596679fb232ec861826584fcaa272e2254a890b410575683423d56a8 languageName: node linkType: hard "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.9.5 - resolution: "@types/testing-library__jest-dom@npm:5.9.5" + version: 5.14.9 + resolution: "@types/testing-library__jest-dom@npm:5.14.9" dependencies: "@types/jest": "*" - checksum: f2ed81103acb52d54f992d826e3854551294618628997dc01f8955efd8c1d476d64715b79187371b09ec3e61e44cc10a7ffe1e427d1bda798552f83d18309056 + checksum: d364494fc2545316292e88861146146af1e3818792ca63b62a63758b2f737669b687f4aaddfcfbcb7d0e1ed7890a9bd05de23ff97f277d5e68de574497a9ee72 languageName: node linkType: hard "@types/tough-cookie@npm:*": - version: 4.0.0 - resolution: "@types/tough-cookie@npm:4.0.0" - checksum: 454fa8d4d64532992274ebf2ff5ea0061b0dd32a2282255a3e793f04a8b64a9c4c1f9e0f4ed83c514c852b7b604d69336c66c80de4a857cb41a81e9572981e7f + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: f19409d0190b179331586365912920d192733112a195e870c7f18d20ac8adb7ad0b0ff69dad430dba8bc2be09593453a719cfea92dc3bda19748fd158fe1498d languageName: node linkType: hard @@ -22510,9 +18287,9 @@ __metadata: linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.2 - resolution: "@types/trusted-types@npm:2.0.2" - checksum: 3371eef5f1c50e1c3c07a127c1207b262ba65b83dd167a1c460fc1b135a3fb0c97b9f508efebd383f239cc5dd5b7169093686a692a501fde9c3f7208657d9b0d + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3 languageName: node linkType: hard @@ -22523,28 +18300,21 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": - version: 2.0.3 - resolution: "@types/unist@npm:2.0.3" - checksum: 4427306b094561da28164e7e5250c4e6b382cb8eac40bf7e6bb0ff1e6e00c13e47aaf32e4a08fc8ba54602d07f79a39fb9ba304cc9dc886b1e3caf824649edbd - languageName: node - linkType: hard - -"@types/unist@npm:^2": - version: 2.0.10 - resolution: "@types/unist@npm:2.0.10" - checksum: e2924e18dedf45f68a5c6ccd6015cd62f1643b1b43baac1854efa21ae9e70505db94290434a23da1137d9e31eb58e54ca175982005698ac37300a1c889f6c4aa +"@types/unist@npm:*, @types/unist@npm:^3.0.0": + version: 3.0.3 + resolution: "@types/unist@npm:3.0.3" + checksum: 96e6453da9e075aaef1dc22482463898198acdc1eeb99b465e65e34303e2ec1e3b1ed4469a9118275ec284dc98019f63c3f5d49422f0e4ac707e5ab90fb3b71a languageName: node linkType: hard -"@types/unist@npm:^3.0.0": - version: 3.0.2 - resolution: "@types/unist@npm:3.0.2" - checksum: 3d04d0be69316e5f14599a0d993a208606c12818cf631fd399243d1dc7a9bd8a3917d6066baa6abc290814afbd744621484756803c80cba892c39cd4b4a85616 +"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": + version: 2.0.11 + resolution: "@types/unist@npm:2.0.11" + checksum: 6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e languageName: node linkType: hard -"@types/uuid@npm:^9.0.1": +"@types/uuid@npm:^9.0.0, @types/uuid@npm:^9.0.1": version: 9.0.8 resolution: "@types/uuid@npm:9.0.8" checksum: b8c60b7ba8250356b5088302583d1704a4e1a13558d143c549c408bf8920535602ffc12394ede77f8a8083511b023704bc66d1345792714002bfa261b17c5275 @@ -22558,35 +18328,19 @@ __metadata: languageName: node linkType: hard -"@types/validator@npm:^13.7.10": - version: 13.7.10 - resolution: "@types/validator@npm:13.7.10" - checksum: 7b142c08019f484d62c9f3074231f640c24311558f157dd253a60810dd0cb29e41ec64ca210a192b54f6de51f4fe016bfeb2c30f90fa49c9337ed54a9d8e02aa +"@types/validator@npm:^13.7.10, @types/validator@npm:^13.7.17": + version: 13.12.2 + resolution: "@types/validator@npm:13.12.2" + checksum: 4e989f76e155a93a94f53c2362d5695f0a95fb6f36e05f215b1af893e1dc70a7db2d8422c9a0c14dadb4fd3c32a7698c86bce3b81ff99116c8c7f21888875a2f languageName: node linkType: hard -"@types/validator@npm:^13.7.17": - version: 13.12.0 - resolution: "@types/validator@npm:13.12.0" - checksum: 1d814a4a9f8fbd01f834bf45215aa8111879e71045391eec8e8fda6a7acf71d8b7839a0d312098c2b9c8285963203dfb3e3680a41484d1e9b3d576f95b6d71c0 - languageName: node - linkType: hard - -"@types/ws@npm:^8.0.0": - version: 8.5.3 - resolution: "@types/ws@npm:8.5.3" +"@types/ws@npm:^8.0.0, @types/ws@npm:^8.5.5": + version: 8.5.12 + resolution: "@types/ws@npm:8.5.12" dependencies: "@types/node": "*" - checksum: 0ce46f850d41383fcdc2149bcacc86d7232fa7a233f903d2246dff86e31701a02f8566f40af5f8b56d1834779255c04ec6ec78660fe0f9b2a69cf3d71937e4ae - languageName: node - linkType: hard - -"@types/ws@npm:^8.5.1": - version: 8.5.4 - resolution: "@types/ws@npm:8.5.4" - dependencies: - "@types/node": "*" - checksum: fefbad20d211929bb996285c4e6f699b12192548afedbe4930ab4384f8a94577c9cd421acaad163cacd36b88649509970a05a0b8f20615b30c501ed5269038d1 + checksum: ddefb6ad1671f70ce73b38a5f47f471d4d493864fca7c51f002a86e5993d031294201c5dced6d5018fb8905ad46888d65c7f20dd54fc165910b69f42fba9a6d0 languageName: node linkType: hard @@ -22600,9 +18354,9 @@ __metadata: linkType: hard "@types/yargs-parser@npm:*": - version: 20.2.0 - resolution: "@types/yargs-parser@npm:20.2.0" - checksum: 54cf3f8d2c7db47e200e8c96e05b3b33ee554e78d29f3db55f04ca4b86dc6b8ff6b1349f5772268ce2d365cde0a0f4fdd92bf5933c2be2c1ea3f19f0b4599e1f + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc languageName: node linkType: hard @@ -22615,39 +18369,48 @@ __metadata: languageName: node linkType: hard +"@types/yargs@npm:^13.0.0": + version: 13.0.12 + resolution: "@types/yargs@npm:13.0.12" + dependencies: + "@types/yargs-parser": "*" + checksum: 4eb34d8c071892299646e5a3fb02a643f5a5ea8da8f4d1817001882ebbcfa4fbda235b8978732f8eb55fa16433296e2087907fe69678a69125f0dca627a91426 + languageName: node + linkType: hard + "@types/yargs@npm:^15.0.0": - version: 15.0.13 - resolution: "@types/yargs@npm:15.0.13" + version: 15.0.19 + resolution: "@types/yargs@npm:15.0.19" dependencies: "@types/yargs-parser": "*" - checksum: a6ebb0ec63f168280e02370fcf24ff29c3eb0335e1c46e3b34e04d32eb7c818446e0b7de8badb339b07c0ddba322827ce13ccb604d14a0de422335ae56b2120d + checksum: 6a509db36304825674f4f00300323dce2b4d850e75819c3db87e9e9f213ac2c4c6ed3247a3e4eed6e8e45b3f191b133a356d3391dd694d9ea27a0507d914ef4c languageName: node linkType: hard "@types/yargs@npm:^16.0.0": - version: 16.0.4 - resolution: "@types/yargs@npm:16.0.4" + version: 16.0.9 + resolution: "@types/yargs@npm:16.0.9" dependencies: "@types/yargs-parser": "*" - checksum: caa21d2c957592fe2184a8368c8cbe5a82a6c2e2f2893722e489f842dc5963293d2f3120bc06fe3933d60a3a0d1e2eb269649fd6b1947fe1820f8841ba611dd9 + checksum: 00d9276ed4e0f17a78c1ed57f644a8c14061959bd5bfab113d57f082ea4b663ba97f71b89371304a34a2dba5061e9ae4523e357e577ba61834d661f82c223bf8 languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.10 - resolution: "@types/yargs@npm:17.0.10" + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" dependencies: "@types/yargs-parser": "*" - checksum: f0673cbfc08e17239dc58952a88350d6c4db04a027a28a06fbad27d87b670e909f9cd9e66f9c64cebdd5071d1096261e33454a55868395f125297e5c50992ca8 + checksum: ee013f257472ab643cb0584cf3e1ff9b0c44bca1c9ba662395300a7f1a6c55fa9d41bd40ddff42d99f5d95febb3907c9ff600fbcb92dadbec22c6a76de7e1236 languageName: node linkType: hard "@types/yauzl@npm:^2.9.1": - version: 2.9.2 - resolution: "@types/yauzl@npm:2.9.2" + version: 2.10.3 + resolution: "@types/yauzl@npm:2.10.3" dependencies: "@types/node": "*" - checksum: dfb49abe82605615712fc694eaa4f7068fe30aa03f38c085e2c2e74408beaad30471d36da9654a811482ece2ea4405575fd99b19c0aa327ed2a9736b554bbf43 + checksum: 5ee966ea7bd6b2802f31ad4281c92c4c0b6dfa593c378a2582c58541fa113bec3d70eb0696b34ad95e8e6861a884cba6c3e351285816693ed176222f840a8c08 languageName: node linkType: hard @@ -22682,14 +18445,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^7.1.1": - version: 7.13.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.13.0" + version: 7.18.0 + resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0" dependencies: "@eslint-community/regexpp": ^4.10.0 - "@typescript-eslint/scope-manager": 7.13.0 - "@typescript-eslint/type-utils": 7.13.0 - "@typescript-eslint/utils": 7.13.0 - "@typescript-eslint/visitor-keys": 7.13.0 + "@typescript-eslint/scope-manager": 7.18.0 + "@typescript-eslint/type-utils": 7.18.0 + "@typescript-eslint/utils": 7.18.0 + "@typescript-eslint/visitor-keys": 7.18.0 graphemer: ^1.4.0 ignore: ^5.3.1 natural-compare: ^1.4.0 @@ -22700,7 +18463,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 8bb62f7d4ab3af3656e564c0dd164316e1518475e34a65495b8b2ff816ce24e6df9b1b1d3616bc128fe1d6f26247a04b01513d99e69e2cf0a8048f32b67d58c5 + checksum: dfcf150628ca2d4ccdfc20b46b0eae075c2f16ef5e70d9d2f0d746acf4c69a09f962b93befee01a529f14bbeb3e817b5aba287d7dd0edc23396bc5ed1f448c3d languageName: node linkType: hard @@ -22741,30 +18504,20 @@ __metadata: linkType: hard "@typescript-eslint/parser@npm:^7.1.1": - version: 7.13.0 - resolution: "@typescript-eslint/parser@npm:7.13.0" + version: 7.18.0 + resolution: "@typescript-eslint/parser@npm:7.18.0" dependencies: - "@typescript-eslint/scope-manager": 7.13.0 - "@typescript-eslint/types": 7.13.0 - "@typescript-eslint/typescript-estree": 7.13.0 - "@typescript-eslint/visitor-keys": 7.13.0 + "@typescript-eslint/scope-manager": 7.18.0 + "@typescript-eslint/types": 7.18.0 + "@typescript-eslint/typescript-estree": 7.18.0 + "@typescript-eslint/visitor-keys": 7.18.0 debug: ^4.3.4 peerDependencies: eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: dd7ef8380d954bb073b9d5d9f785fdc46a109d2938691f9b5fa6c227bd808bb64d8afc6ccccf217d3499deb8947d2f22ed51862e2e9563987ba3e225c58583a3 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/scope-manager@npm:5.59.9" - dependencies: - "@typescript-eslint/types": 5.59.9 - "@typescript-eslint/visitor-keys": 5.59.9 - checksum: 362c22662d844440a7e14223d8cc0722f77ff21ad8f78deb0ee3b3f21de01b8846bf25fbbf527544677e83d8ff48008b3f7d40b39ddec55994ea4a1863e9ec0a + checksum: 132b56ac3b2d90b588d61d005a70f6af322860974225b60201cbf45abf7304d67b7d8a6f0ade1c188ac4e339884e78d6dcd450417f1481998f9ddd155bab0801 languageName: node linkType: hard @@ -22778,16 +18531,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/scope-manager@npm:7.13.0" - dependencies: - "@typescript-eslint/types": 7.13.0 - "@typescript-eslint/visitor-keys": 7.13.0 - checksum: fb9663f414985e0fecd0952a9c5ff2a2e2b975cc7eb07a3fa13243b30d8aa67f9b707d636aa050b673b50a6b63aa8b5ba78a64f712e801e23f9c86e1896c3f21 - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/scope-manager@npm:7.18.0" @@ -22818,12 +18561,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/type-utils@npm:7.13.0" +"@typescript-eslint/type-utils@npm:7.18.0, @typescript-eslint/type-utils@npm:^7.3.0": + version: 7.18.0 + resolution: "@typescript-eslint/type-utils@npm:7.18.0" dependencies: - "@typescript-eslint/typescript-estree": 7.13.0 - "@typescript-eslint/utils": 7.13.0 + "@typescript-eslint/typescript-estree": 7.18.0 + "@typescript-eslint/utils": 7.18.0 debug: ^4.3.4 ts-api-utils: ^1.3.0 peerDependencies: @@ -22831,7 +18574,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 5f325fc325b166853444354e254c0d7fbb15dde2a61bbf63313cc58cb7a0546023241848671f216c268f1b87dce9c1e40b89dccae1846f2662e2cf2c99a83aef + checksum: 68fd5df5146c1a08cde20d59b4b919acab06a1b06194fe4f7ba1b928674880249890785fbbc97394142f2ef5cff5a7fba9b8a940449e7d5605306505348e38bc languageName: node linkType: hard @@ -22852,30 +18595,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:^7.3.0": - version: 7.18.0 - resolution: "@typescript-eslint/type-utils@npm:7.18.0" - dependencies: - "@typescript-eslint/typescript-estree": 7.18.0 - "@typescript-eslint/utils": 7.18.0 - debug: ^4.3.4 - ts-api-utils: ^1.3.0 - peerDependencies: - eslint: ^8.56.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 68fd5df5146c1a08cde20d59b4b919acab06a1b06194fe4f7ba1b928674880249890785fbbc97394142f2ef5cff5a7fba9b8a940449e7d5605306505348e38bc - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/types@npm:5.59.9" - checksum: 283f8fee1ee590eeccc2e0fcd3526c856c4b1e2841af2cdcd09eeac842a42cfb32f6bc8b40385380f3dbc3ee29da30f1819115eedf9e16f69ff5a160aeddd8fa - languageName: node - linkType: hard - "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -22883,13 +18602,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/types@npm:7.13.0" - checksum: 1b81398bf4d0cb2602220d3a64f3bb74cd7b1e3e75fc1aecd28b9a6d6d20314ed7dffe057db3526ef3bdaa951e401443bb82e034cdebee79b28ea3b4ca9ff50f - languageName: node - linkType: hard - "@typescript-eslint/types@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/types@npm:7.18.0" @@ -22911,24 +18623,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/typescript-estree@npm:5.59.9" - dependencies: - "@typescript-eslint/types": 5.59.9 - "@typescript-eslint/visitor-keys": 5.59.9 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: c0c9b81f20a2a4337f07bc3ccdc9c1dabd765f59096255ed9a149e91e5c9517b25c2b6655f8f073807cfc13500c7451fbd9bb62e5e572c07cc07945ab042db89 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" @@ -22947,25 +18641,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.13.0" - dependencies: - "@typescript-eslint/types": 7.13.0 - "@typescript-eslint/visitor-keys": 7.13.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - minimatch: ^9.0.4 - semver: ^7.6.0 - ts-api-utils: ^1.3.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 5a410db27ddb514344414a579e9f81a0db0e7e9f579aa624ace223655b905705a37510992a94924d9ead3c4c84c9357cf5358599036f7c44f50b56b54a791d82 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" @@ -23023,20 +18698,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/utils@npm:7.13.0" - dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 7.13.0 - "@typescript-eslint/types": 7.13.0 - "@typescript-eslint/typescript-estree": 7.13.0 - peerDependencies: - eslint: ^8.56.0 - checksum: d57c60767949e3ea9d9b33de69a18396fea0e5d2eeb13ef8bbdcfe9c8fae62bf5af25f571b1b7c480362ddb9ccd8f811df4330af595b32a46bf0b8b8ce9b598e - languageName: node - linkType: hard - "@typescript-eslint/utils@npm:7.18.0, @typescript-eslint/utils@npm:^7.3.0": version: 7.18.0 resolution: "@typescript-eslint/utils@npm:7.18.0" @@ -23065,7 +18726,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^5.10.0": +"@typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.45.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0" dependencies: @@ -23083,34 +18744,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^5.45.0": - version: 5.59.9 - resolution: "@typescript-eslint/utils@npm:5.59.9" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.59.9 - "@typescript-eslint/types": 5.59.9 - "@typescript-eslint/typescript-estree": 5.59.9 - eslint-scope: ^5.1.1 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 22ec5962886de7dcf65f99c37aad9fb189a3bef6b2b07c81887fb82a0e8bf137246da58e64fb02141352285708440be13acd7f6db1ca19e96f86724813ac4646 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/visitor-keys@npm:5.59.9" - dependencies: - "@typescript-eslint/types": 5.59.9 - eslint-visitor-keys: ^3.3.0 - checksum: 2909ce761f7fe546592cd3c43e33263d8a5fa619375fd2fdffbc72ffc33e40d6feacafb28c79f36c638fcc2225048e7cc08c61cbac6ca63723dc68610d80e3e6 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" @@ -23121,16 +18754,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.13.0" - dependencies: - "@typescript-eslint/types": 7.13.0 - eslint-visitor-keys: ^3.4.3 - checksum: 23d48e1c1b9e16e5a867615ffe7111f637224b79bd738f94282b610a0b6b7bf5e436e1422e82395243d0f58714353fc613a11ea671bb217ea99d710f93ab6a26 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/visitor-keys@npm:7.18.0" @@ -23161,49 +18784,47 @@ __metadata: languageName: node linkType: hard -"@udecode/plate-basic-marks@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-basic-marks@npm:30.1.2" - dependencies: - "@udecode/plate-common": 30.1.2 +"@udecode/plate-basic-marks@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-basic-marks@npm:36.0.0" peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 0e03dbd5a09d18aae933cdd4a3bbfb84cf281b5790e5d7aff817e955a54a018a53c44da6555d31035d859de17ff01ff858a068f207997496cbc68b72dd925fdf + checksum: 4b0e2fe0815435f8deb9a308b33bb586d99b9a483204ccb0f106869ceebdb32e5d216652970af3acb887fed78c99e00f4629a6d5bb339539baa2931869bd1fc2 languageName: node linkType: hard -"@udecode/plate-break@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-break@npm:30.1.2" - dependencies: - "@udecode/plate-common": 30.1.2 +"@udecode/plate-break@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-break@npm:36.0.0" peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 52a80fa3c86b6f4649bfab95938f79eedd0ac4983b53b105cf6511c86e021e2006b2c0844a1184e8933f4f9f7179f9bd706885f142c9d46f769df573fd3a5604 + checksum: c80d4f08cd3bc3428a6f1a471c5da9127049945ed6d620bfb8a820d352f6af286bb4d47c212f6f7244f8fade498cd459b556eed9f902c10e24a725a076266b26 languageName: node linkType: hard -"@udecode/plate-common@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-common@npm:30.1.2" +"@udecode/plate-common@npm:36.5.9": + version: 36.5.9 + resolution: "@udecode/plate-common@npm:36.5.9" dependencies: - "@udecode/plate-core": 30.1.2 - "@udecode/plate-utils": 30.1.2 - "@udecode/react-utils": 29.0.1 - "@udecode/slate": 25.0.0 - "@udecode/slate-react": 29.0.1 - "@udecode/slate-utils": 25.0.0 - "@udecode/utils": 24.3.0 + "@udecode/plate-core": 36.5.9 + "@udecode/plate-utils": 36.5.9 + "@udecode/react-utils": 33.0.0 + "@udecode/slate": 36.0.6 + "@udecode/slate-react": 36.0.6 + "@udecode/slate-utils": 36.3.9 + "@udecode/utils": 31.0.0 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" @@ -23211,30 +18832,30 @@ __metadata: slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 910ec3f2d5f5ced0042dca5d05b4a98569d3f02c07b979e58a46eac6642cfb9a17c68e7dd8c626e0351185bd78aa30b10cca2cfe353171ee9c14a3ab3bdc0d28 + checksum: da94dae567b75beb830dc7bbf47a37c8bf37aec77c7b9e252d95f634ceffab2f30b505db9d525b0d3368b41e5601bf8b716b66b4d0513a868d3fe882b890e84a languageName: node linkType: hard -"@udecode/plate-core@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-core@npm:30.1.2" +"@udecode/plate-core@npm:36.5.9": + version: 36.5.9 + resolution: "@udecode/plate-core@npm:36.5.9" dependencies: - "@udecode/slate": 25.0.0 - "@udecode/slate-react": 29.0.1 - "@udecode/slate-utils": 25.0.0 - "@udecode/utils": 24.3.0 + "@udecode/slate": 36.0.6 + "@udecode/slate-react": 36.0.6 + "@udecode/slate-utils": 36.3.9 + "@udecode/utils": 31.0.0 clsx: ^1.2.1 is-hotkey: ^0.2.0 - jotai: ^2.6.0 - jotai-optics: 0.3.1 - jotai-x: ^1.2.1 + jotai: ^2.7.1 + jotai-optics: 0.3.2 + jotai-x: ^1.2.3 lodash: ^4.17.21 - nanoid: ^3.3.6 + nanoid: ^3.3.7 optics-ts: 2.4.1 - react-hotkeys-hook: ^4.4.1 - use-deep-compare: ^1.1.0 - zustand: ^4.4.7 - zustand-x: ^3.0.1 + react-hotkeys-hook: ^4.5.0 + use-deep-compare: ^1.2.1 + zustand: ^4.5.2 + zustand-x: ^3.0.2 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" @@ -23242,243 +18863,253 @@ __metadata: slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: b6754e725973ddd05012395df6499981ce5bed0e783be1069888c7f4103ba1322c51de765987c938176f191c79368c7cd7667ec6afe6ab8e6aaf206391c0adc0 + checksum: da1a450f1eee0c4b83890839dfd72da78cc30c45209f2c76c3db0f590b2cfc0f40e73e08fd98551059cbc1b36f5ccc9b55386531eaf2079512e9f933feb8e9c5 languageName: node linkType: hard -"@udecode/plate-heading@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-heading@npm:30.1.2" - dependencies: - "@udecode/plate-common": 30.1.2 +"@udecode/plate-heading@npm:36.0.9": + version: 36.0.9 + resolution: "@udecode/plate-heading@npm:36.0.9" peerDependencies: + "@udecode/plate-common": ">=36.0.6" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: d4c5528df1b0b96bdad12947f08ea38c9e84c20a612f2bf69fe122948fd7b43fcbc531029e9428ca41e2ce4f9aab8a3ad89982bc675b4f66a5c43059612f49d1 + checksum: 187439ccff3c27139a600b9c1984b87eaf8fbfcdf4aa483b4e4023841cec41231595a3e3075baedfdd0bebda30ada33009f959046e600d5be48d51831e8eab51 languageName: node linkType: hard -"@udecode/plate-indent-list@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-indent-list@npm:30.1.2" +"@udecode/plate-indent-list@npm:36.0.1": + version: 36.0.1 + resolution: "@udecode/plate-indent-list@npm:36.0.1" dependencies: - "@udecode/plate-common": 30.1.2 - "@udecode/plate-indent": 30.1.2 - "@udecode/plate-list": 30.1.2 + "@udecode/plate-indent": 36.0.0 + "@udecode/plate-list": 36.0.0 clsx: ^1.2.1 peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 5c7ab9d17ae9f0337e6503eaa43d7ec3220ad08faa65b613d0dca1758154f59dd0cfe931b132e04a77458e52d46d453f28d511a0ec91ffe400a5b6113387ac99 + checksum: f4536daf6d46b5333e544afb25fd549eef9fb99a9977714373cd1ff5f113184b308e63a870fb7762758723af4b4dfebb3fff715dcd2227ae7fb5f2b2bfe99076 languageName: node linkType: hard -"@udecode/plate-indent@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-indent@npm:30.1.2" - dependencies: - "@udecode/plate-common": 30.1.2 +"@udecode/plate-indent@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-indent@npm:36.0.0" peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: e82e8109c94b53849b7e617c32b0ac571f1efb3de95d0d077fd5913508cf5ed342e3f1c6146069767da009eb4f9cb549890ce5e29d766bb3728ca21fd5493d8b + checksum: fcef8d9012486075e1f3c9c9fa01c196f7ed991e976ffdab1bec6e2554fbf6108d8a961c44635fac565734c9cea56a5c59ca494364e74d5c17bfd4413449f0ac languageName: node linkType: hard -"@udecode/plate-list@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-list@npm:30.1.2" +"@udecode/plate-list@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-list@npm:36.0.0" dependencies: - "@udecode/plate-common": 30.1.2 - "@udecode/plate-reset-node": 30.1.2 + "@udecode/plate-reset-node": 36.0.0 lodash: ^4.17.21 peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 247e5f222b4d1afacb4cdf003c106548d30be1d67e41522a665b6f44043457562918d32fb357731ccd298a11d72de9598f9dd4533a831c6f237ba8a865031e88 + checksum: e61d4f5b60c11f55fc7232d5bd1efbe60899ba6f203da3900edc9565ab3586334efa08c4cc12f8b324a8134fde55b1e2cef32e8c3bfaad63a5f528f44d24f1a9 languageName: node linkType: hard -"@udecode/plate-media@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-media@npm:30.1.2" +"@udecode/plate-media@npm:36.0.10": + version: 36.0.10 + resolution: "@udecode/plate-media@npm:36.0.10" dependencies: - "@udecode/plate-common": 30.1.2 js-video-url-parser: ^0.5.1 peerDependencies: + "@udecode/plate-common": ">=36.0.6" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 2379ff55a9ca51dada94e763273c0576db30df5f642ddde80018d75c670ce561608062cae5a412ba20edde8164eba30fd4283d09ce4fb6105a5e559b59fcdad7 + checksum: 1463167f1f49e7febcd2e4aa19c9f1527fba2838c63a1a352ea0e631e6ea104c6e810e749ca553b671b573e2c0f7681701f5133ff2269fd191581e272f545e1c languageName: node linkType: hard -"@udecode/plate-paragraph@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-paragraph@npm:30.1.2" - dependencies: - "@udecode/plate-common": 30.1.2 +"@udecode/plate-paragraph@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-paragraph@npm:36.0.0" peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 10864e8822d50f50a8fbdd396793be4fbd9d247289720bcc91d3aa0a9f9cd38892417a3c226e0630f50941993d4e808114d95374a3451739b064d7b187259c13 + checksum: aacae29ae6f632968da92b16b82416182ad1c0b5d57a6abdfa0f2a59bf7565b70f4563e3ec7625b40619584cb8541d33365087236253fea25dba78eb03513039 languageName: node linkType: hard -"@udecode/plate-reset-node@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-reset-node@npm:30.1.2" - dependencies: - "@udecode/plate-common": 30.1.2 +"@udecode/plate-reset-node@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-reset-node@npm:36.0.0" peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: f4d068a3da07502c4434c121ef962d2e4d530468f42dd72c58c24f815b8e654709ef28b841044d5390ab5c2e492da324e449499526d24d53c19eda7df41ffece + checksum: 0c6519acf8e7fb6152ba8a6f04cff3c294d2ee25846b1fb2bb108e26c4c01db0ea8185d2ff40943b5a0c7fa66803fb70d837aff20a91b3b13a52737e0bff95b1 languageName: node linkType: hard -"@udecode/plate-resizable@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-resizable@npm:30.1.2" - dependencies: - "@udecode/plate-common": 30.1.2 +"@udecode/plate-resizable@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-resizable@npm:36.0.0" peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: f74916898038375ba802ccb7972a330289d9bda475a1c1b41a9b2a6f035c15509cae31aaa4a3d15707672d88ae01ba39e95434a7637c0b44beee4d180da50f0c + checksum: aa3805eadfe9d02e15f535cbaa33b5d6facf3392a504a41f7a16eb91890bb0dc5badfb5aa6ed739ce3dc4132a0762b19ac3a226228a50d29b20a953129bcddcf languageName: node linkType: hard -"@udecode/plate-select@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-select@npm:30.1.2" - dependencies: - "@udecode/plate-common": 30.1.2 +"@udecode/plate-select@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-select@npm:36.0.0" peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 99a3b1e6233e617c0003d75d9b8105548cffbf29082dae396286f5a1e15152160d75a00eadd9641d284070a8cd13c81db980913d81e0cebd9ff68659af74c78b + checksum: e60cbd291e5d6d8cc205ab22aba1e7b0e303edf36dd1ec7c5ac2065fbbbed0288fe80af1105a47cd7f98e4aec3672b102e4dbab3f9adc2ea58728da8aa0e5a67 languageName: node linkType: hard -"@udecode/plate-serializer-docx@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-serializer-docx@npm:30.1.2" +"@udecode/plate-serializer-docx@npm:36.0.10": + version: 36.0.10 + resolution: "@udecode/plate-serializer-docx@npm:36.0.10" dependencies: - "@udecode/plate-common": 30.1.2 - "@udecode/plate-heading": 30.1.2 - "@udecode/plate-indent": 30.1.2 - "@udecode/plate-indent-list": 30.1.2 - "@udecode/plate-media": 30.1.2 - "@udecode/plate-paragraph": 30.1.2 - "@udecode/plate-table": 30.1.2 - validator: ^13.9.0 + "@udecode/plate-heading": 36.0.9 + "@udecode/plate-indent": 36.0.0 + "@udecode/plate-indent-list": 36.0.1 + "@udecode/plate-media": 36.0.10 + "@udecode/plate-paragraph": 36.0.0 + "@udecode/plate-table": 36.0.0 + validator: ^13.11.0 peerDependencies: + "@udecode/plate-common": ">=36.0.6" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 32d6d7b9de011e8c948c118fd6efa692cd6355ca0ac0c69e14ffed4b4860daba85be578b5e21b03ff778fc22fb8a78b9e483f286e4f35322fe9b10f6a4cb717e + checksum: 0f7c5fef6fa9bbb94a480a09d058e7f4b0f70a53768dfa06429ab0fda3efb5fa3a7c6714c333cc74efe5a42d2f50b0865cbc084c16f33928b6902756a575b510 languageName: node linkType: hard -"@udecode/plate-serializer-html@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-serializer-html@npm:30.1.2" +"@udecode/plate-serializer-html@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-serializer-html@npm:36.0.0" dependencies: - "@udecode/plate-common": 30.1.2 - html-entities: ^2.4.0 + html-entities: ^2.5.2 peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 389cd2100a40673ce1f75ae477d7b039c495f588359dcd8369106b2acd157a4ac5568f6b32ee36378be1c7a8d6a9bd63ee9a9c247aeefa43b3c7467ae379d0de + checksum: 4aaf9742afc0c995167fff7d170fa34f6a32034fbae99619a39f227c1a5c26efa8cd7011c41d1503f7b24147bbc32b0d80e867cdaf19ccf3a3af1893cb1857d5 languageName: node linkType: hard -"@udecode/plate-table@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-table@npm:30.1.2" +"@udecode/plate-table@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-table@npm:36.0.0" dependencies: - "@udecode/plate-common": 30.1.2 - "@udecode/plate-resizable": 30.1.2 + "@udecode/plate-resizable": 36.0.0 lodash: ^4.17.21 peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-react: ">=0.99.0" - checksum: 7910647d86cf29ec0d0863ada3af5af0f440ad83d26cde0317cf7968f5dda8485a664b49bcc23b43dc2aedd8e303d675b3c6b7a1c2dfbca5554fee5587274a27 + checksum: 5d72594001ce96ff9dc5a123110c49da8b6ab2d0c304c17eb32d70715eeefc8abd05d0af05cd78a1026664c2bb1dbf1cffbd2d90ea4bc861dc3a266bd313c0f8 languageName: node linkType: hard -"@udecode/plate-trailing-block@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-trailing-block@npm:30.1.2" +"@udecode/plate-table@npm:36.5.9": + version: 36.5.9 + resolution: "@udecode/plate-table@npm:36.5.9" dependencies: - "@udecode/plate-common": 30.1.2 + "@udecode/plate-resizable": 36.0.0 + lodash: ^4.17.21 + peerDependencies: + "@udecode/plate-common": ">=36.5.9" + react: ">=16.8.0" + react-dom: ">=16.8.0" + slate: ">=0.94.0" + slate-history: ">=0.93.0" + slate-react: ">=0.99.0" + checksum: 9636b0b663c67d9991d4e9c35f2c5b4afa0d7a046227381506c292512bc8ef046c4f8be0d232b0baf8a8b871177b28801571040e7d868818d7be87218c6b98f1 + languageName: node + linkType: hard + +"@udecode/plate-trailing-block@npm:36.0.0": + version: 36.0.0 + resolution: "@udecode/plate-trailing-block@npm:36.0.0" peerDependencies: + "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: b7b0c231e1b484baf2b18562bbd3d367e7efef31bc86143abe6d2aabca372e355b9fa187ff655102d0f0bd48ea5e71c38fb1244ce22f0389ac1046aab691c693 + checksum: 1d47b16c19be5390f374a9f764667f339345d673d95a838718ead6822559a8cdda2e3ead77231f5bc4774eb8b3111d02f9d55ff1239cdf478016965aaf9623de languageName: node linkType: hard -"@udecode/plate-utils@npm:30.1.2": - version: 30.1.2 - resolution: "@udecode/plate-utils@npm:30.1.2" +"@udecode/plate-utils@npm:36.5.9": + version: 36.5.9 + resolution: "@udecode/plate-utils@npm:36.5.9" dependencies: - "@udecode/plate-core": 30.1.2 - "@udecode/react-utils": 29.0.1 - "@udecode/slate": 25.0.0 - "@udecode/slate-react": 29.0.1 - "@udecode/slate-utils": 25.0.0 - "@udecode/utils": 24.3.0 + "@udecode/plate-core": 36.5.9 + "@udecode/react-utils": 33.0.0 + "@udecode/slate": 36.0.6 + "@udecode/slate-react": 36.0.6 + "@udecode/slate-utils": 36.3.9 + "@udecode/utils": 31.0.0 clsx: ^1.2.1 lodash: ^4.17.21 peerDependencies: @@ -23488,77 +19119,77 @@ __metadata: slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 87dd1e0deacb4504904d069b84d8ac670393141f929d644a948eed46ab4986fb7336fa8a4fd060ae12773ef9363ef22209b3f92fde7b3bddc7bee102dae514d4 + checksum: e4a2c843cd5d6be941078331b9504d9dcea3b7e7afa992566039d6f1ad970884a34de0aeb85d1661793dfd301aabe19f44465b41675c197eacf5167a90ecad8e languageName: node linkType: hard -"@udecode/react-utils@npm:29.0.1": - version: 29.0.1 - resolution: "@udecode/react-utils@npm:29.0.1" +"@udecode/react-utils@npm:33.0.0": + version: 33.0.0 + resolution: "@udecode/react-utils@npm:33.0.0" dependencies: "@radix-ui/react-slot": ^1.0.2 - "@udecode/utils": 24.3.0 + "@udecode/utils": 31.0.0 clsx: ^1.2.1 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 6f2b863869d4c13c673f22acc6f71d6191bb62568385f2fbc910144ab930f5fde5194a2acd36e311a78f24933be6ad2aadd57f561025b18597c178cb1d2c2c8d + checksum: 48fccdfd5ddf1bb5ff17db4e40146312053540c843e6bb30fb8ed8b0d9185bb95976ccbf87a9b0a1582b621f495a8bcf9b4dd8db9ee28d5e89b324effb27dd1d languageName: node linkType: hard -"@udecode/slate-react@npm:29.0.1": - version: 29.0.1 - resolution: "@udecode/slate-react@npm:29.0.1" +"@udecode/slate-react@npm:36.0.6": + version: 36.0.6 + resolution: "@udecode/slate-react@npm:36.0.6" dependencies: - "@udecode/react-utils": 29.0.1 - "@udecode/slate": 25.0.0 - "@udecode/utils": 24.3.0 + "@udecode/react-utils": 33.0.0 + "@udecode/slate": 36.0.6 + "@udecode/utils": 31.0.0 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-react: ">=0.99.0" - checksum: 4b17989773b39ec5d62ab11caf51a51c12ac34e9161818477ce6efb77a493b478e33f54be089c7b9b19b71ea51220b1502bcf3e38fe9f663d8ac02b8dada150f + checksum: 3511c4d87302a0a874e0a8069a41719c1a74d73333c7aa595d3f670ac22240bcc90167e87837cbbac1ad4a9193ce9f16179d5649d2c8f6db37815d047d3d1664 languageName: node linkType: hard -"@udecode/slate-utils@npm:25.0.0": - version: 25.0.0 - resolution: "@udecode/slate-utils@npm:25.0.0" +"@udecode/slate-utils@npm:36.3.9": + version: 36.3.9 + resolution: "@udecode/slate-utils@npm:36.3.9" dependencies: - "@udecode/slate": 25.0.0 - "@udecode/utils": 24.3.0 + "@udecode/slate": 36.0.6 + "@udecode/utils": 31.0.0 lodash: ^4.17.21 peerDependencies: slate: ">=0.94.0" slate-history: ">=0.93.0" - checksum: d915d0b34470350e716816dbd32041a7b346676a7a5714a4e0a457679be10c343f001aaa2ac0d59d8e6af3d2ddd33e482efba111db3dedfd2f5ba377c683593b + checksum: 265371c7ffd0ba51330963572c430f9e48ef9fe56f9b7ee13574898a2a0dc29479d807a1bec6db8a4184d09c52a3105177e34700c3b0b388b8cde5ed30b0552f languageName: node linkType: hard -"@udecode/slate@npm:25.0.0": - version: 25.0.0 - resolution: "@udecode/slate@npm:25.0.0" +"@udecode/slate@npm:36.0.6": + version: 36.0.6 + resolution: "@udecode/slate@npm:36.0.6" dependencies: - "@udecode/utils": 24.3.0 + "@udecode/utils": 31.0.0 peerDependencies: slate: ">=0.94.0" slate-history: ">=0.93.0" - checksum: ffd001258d810065371fe5a1a1db7d909f8a9e0fd582ac641cb96135b9567b55e482aaa158d92a0a4247315e9843800fc2cbd38df362978210e4479639d92bb9 + checksum: 1cf4fd01b01a24db2823843be49f2d6ff8b15158647f316602bb04a60aef2ca903041509c872b7e1db87d45454b8a67548a82e42d3a51e2b69504a9a1d1516f6 languageName: node linkType: hard -"@udecode/utils@npm:24.3.0": - version: 24.3.0 - resolution: "@udecode/utils@npm:24.3.0" - checksum: 73238a4595574dccb16642f59029ed1d21447724dd788ac593fb5b6d3b8f77d0492b7877774d64e54f9032e24c60561bc7e0165724f50016b71b5be33428fdc2 +"@udecode/utils@npm:31.0.0": + version: 31.0.0 + resolution: "@udecode/utils@npm:31.0.0" + checksum: c01722ff51ce1d964b13cc828e81f73671e2a37c65a5bce7667f8b46bede5f9411b88f96ffb652f33e5e86376a7ed7f5af45c16750bffb7b7bbfb617bbe10242 languageName: node linkType: hard -"@uiw/codemirror-extensions-basic-setup@npm:4.19.9": - version: 4.19.9 - resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.19.9" +"@uiw/codemirror-extensions-basic-setup@npm:4.23.6": + version: 4.23.6 + resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.23.6" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/commands": ^6.0.0 @@ -23575,19 +19206,19 @@ __metadata: "@codemirror/search": ">=6.0.0" "@codemirror/state": ">=6.0.0" "@codemirror/view": ">=6.0.0" - checksum: f248d1623f33b88b61dd75955441d1b5925b2b2c78d595eac1d4603dc31f107d5973d9cff42c3ade4a2493828d679a8908e5dad03a570511e6095d0028089f85 + checksum: dc5a845d80c0659883f5299150034145d9b0d1879a926d5f6a9c21d839351715ea9b5dba0272cfb869e9139d40d49e86c5df12e504874cebc8cf6e9824ec4b98 languageName: node linkType: hard "@uiw/react-codemirror@npm:^4.11.4": - version: 4.19.9 - resolution: "@uiw/react-codemirror@npm:4.19.9" + version: 4.23.6 + resolution: "@uiw/react-codemirror@npm:4.23.6" dependencies: "@babel/runtime": ^7.18.6 "@codemirror/commands": ^6.1.0 "@codemirror/state": ^6.1.1 "@codemirror/theme-one-dark": ^6.0.0 - "@uiw/codemirror-extensions-basic-setup": 4.19.9 + "@uiw/codemirror-extensions-basic-setup": 4.23.6 codemirror: ^6.0.0 peerDependencies: "@babel/runtime": ">=7.11.0" @@ -23597,14 +19228,7 @@ __metadata: codemirror: ">=6.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: ed0d9a7b927df718535bccf553fa7cdabd2cb776f74e6ae75eab0ba321bc60468b5f1b8576a12543729770a11e5438fd4fc925f3f74643985c34a2184c5ae7f6 - languageName: node - linkType: hard - -"@ungap/promise-all-settled@npm:1.1.2": - version: 1.1.2 - resolution: "@ungap/promise-all-settled@npm:1.1.2" - checksum: 08d37fdfa23a6fe8139f1305313562ebad973f3fac01bcce2773b2bda5bcb0146dfdcf3cb6a722cf0a5f2ca0bc56a827eac8f1e7b3beddc548f654addf1fc34c + checksum: 83ff09c6e5df919b3fef181798b138803a987efab4bebdaad09daae1701167cb4a734fa0b18adcc043d5a2fbd3a997bbda461d1a60972bfccdbbca21803e33fe languageName: node linkType: hard @@ -23628,12 +19252,12 @@ __metadata: linkType: hard "@urql/core@npm:>=2.3.1": - version: 4.0.4 - resolution: "@urql/core@npm:4.0.4" + version: 5.0.8 + resolution: "@urql/core@npm:5.0.8" dependencies: - "@0no-co/graphql.web": ^1.0.0 - wonka: ^6.3.0 - checksum: 35b2bfe9c8516a600028465f6a1cd40c3b2cba5b497a3550410ce563de2017d4e875d0627bb8ba284179f0c03eb4ed6d69313c66e5f482e14ee17d8e65a304a3 + "@0no-co/graphql.web": ^1.0.5 + wonka: ^6.3.2 + checksum: 2e0e1791e49585c5a28d24640d8585b8ff663e2feda73ea344a9ab213ca760466293ea16fa9a7bbc104c1ddeb1d61d320a45fda84a44f3b124b06767323df4c6 languageName: node linkType: hard @@ -23649,6 +19273,15 @@ __metadata: languageName: node linkType: hard +"@vanilla-extract/babel-plugin-debug-ids@npm:^1.1.0": + version: 1.1.0 + resolution: "@vanilla-extract/babel-plugin-debug-ids@npm:1.1.0" + dependencies: + "@babel/core": ^7.23.9 + checksum: b2feec9016ba2dd6740c2ce002d814123f38bf8fc01a6d771eff74ed8108abefdc9d6507e2045587d2a73d8a538ece867e4bfef8c5ccc2b13095a2c825160e7a + languageName: node + linkType: hard + "@vanilla-extract/babel-plugin@npm:1.1.6": version: 1.1.6 resolution: "@vanilla-extract/babel-plugin@npm:1.1.6" @@ -23660,7 +19293,7 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/css@npm:1.7.0, @vanilla-extract/css@npm:^1.6.8": +"@vanilla-extract/css@npm:1.7.0": version: 1.7.0 resolution: "@vanilla-extract/css@npm:1.7.0" dependencies: @@ -23679,6 +19312,26 @@ __metadata: languageName: node linkType: hard +"@vanilla-extract/css@npm:^1.16.0, @vanilla-extract/css@npm:^1.6.8": + version: 1.16.0 + resolution: "@vanilla-extract/css@npm:1.16.0" + dependencies: + "@emotion/hash": ^0.9.0 + "@vanilla-extract/private": ^1.0.6 + css-what: ^6.1.0 + cssesc: ^3.0.0 + csstype: ^3.0.7 + dedent: ^1.5.3 + deep-object-diff: ^1.1.9 + deepmerge: ^4.2.2 + lru-cache: ^10.4.3 + media-query-parser: ^2.0.2 + modern-ahocorasick: ^1.0.0 + picocolors: ^1.0.0 + checksum: 2a0c32105be0a7de62d9271e91dcf53e937b0d72ac0f9f7d6ee6144dc07abe00758ffeafb8f5de21e45cd9ed8e94eb1d0463f6679fdc9385043fa821b81cf574 + languageName: node + linkType: hard + "@vanilla-extract/integration@npm:^4.0.0, @vanilla-extract/integration@npm:^4.0.1": version: 4.0.1 resolution: "@vanilla-extract/integration@npm:4.0.1" @@ -23694,6 +19347,26 @@ __metadata: languageName: node linkType: hard +"@vanilla-extract/integration@npm:^7.1.10": + version: 7.1.10 + resolution: "@vanilla-extract/integration@npm:7.1.10" + dependencies: + "@babel/core": ^7.23.9 + "@babel/plugin-syntax-typescript": ^7.23.3 + "@vanilla-extract/babel-plugin-debug-ids": ^1.1.0 + "@vanilla-extract/css": ^1.16.0 + dedent: ^1.5.3 + esbuild: "npm:esbuild@>=0.17.6 <0.24.0" + eval: 0.1.8 + find-up: ^5.0.0 + javascript-stringify: ^2.0.1 + mlly: ^1.4.2 + vite: ^5.0.11 + vite-node: ^1.2.0 + checksum: cbf3cc21b59057f2528bf47f1d0c3ec23cdbc3c84c92debb9f39557f9db0f9c1dea269dbc3cff54456084d55fe9fd6ee184fd203d7d8b83f4e276aff7c1b29dd + languageName: node + linkType: hard + "@vanilla-extract/next-plugin@npm:2.0.2": version: 2.0.2 resolution: "@vanilla-extract/next-plugin@npm:2.0.2" @@ -23706,10 +19379,10 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/private@npm:^1.0.3": - version: 1.0.3 - resolution: "@vanilla-extract/private@npm:1.0.3" - checksum: 866a71ba6804edeb0735684e7723ba78f5cf0bb40d4fb538fe6bf7d73928099e341312337b2a510ac0ce96ff8a4b39eb7f7a5fad0c842532353dd20e7278f29b +"@vanilla-extract/private@npm:^1.0.3, @vanilla-extract/private@npm:^1.0.6": + version: 1.0.6 + resolution: "@vanilla-extract/private@npm:1.0.6" + checksum: 2265b02af29d8cd40f6ddeeed197fb2df1a7695f5a9821d5e3597677179be8b83bcd8fe4df4a6178544f89123d745a3c6a13599d4fe4e5873b065a8ad329f690 languageName: node linkType: hard @@ -23722,7 +19395,7 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/webpack-plugin@npm:2.1.10, @vanilla-extract/webpack-plugin@npm:^2.1.7": +"@vanilla-extract/webpack-plugin@npm:2.1.10": version: 2.1.10 resolution: "@vanilla-extract/webpack-plugin@npm:2.1.10" dependencies: @@ -23736,79 +19409,91 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-core@npm:3.0.7, @vue/compiler-core@npm:^3.0.0": - version: 3.0.7 - resolution: "@vue/compiler-core@npm:3.0.7" +"@vanilla-extract/webpack-plugin@npm:^2.1.7": + version: 2.3.14 + resolution: "@vanilla-extract/webpack-plugin@npm:2.3.14" dependencies: - "@babel/parser": ^7.12.0 - "@babel/types": ^7.12.0 - "@vue/shared": 3.0.7 - estree-walker: ^2.0.1 - source-map: ^0.6.1 - checksum: 141e0b23c2c2edcbca1488d5474787a6e47d1c4dc76cdeb5daf0c3841a65898574c2da69ae20a80c4f3383dc809a6645cde23bceff6dc5bcccf1aacff51e8c66 + "@vanilla-extract/integration": ^7.1.10 + debug: ^4.3.1 + loader-utils: ^2.0.0 + picocolors: ^1.0.0 + peerDependencies: + webpack: ^4.30.0 || ^5.20.2 + checksum: fce78d63e7859456cb877642313a9680f69bedf0f1250bbd2f0d9472a938a1c8e6886959c630646dc89e6fb322d23c5491f705814b766046324d744ad0d5cfe1 languageName: node linkType: hard -"@vue/compiler-dom@npm:3.0.7": - version: 3.0.7 - resolution: "@vue/compiler-dom@npm:3.0.7" +"@vercel/stega@npm:^0.1.2": + version: 0.1.2 + resolution: "@vercel/stega@npm:0.1.2" + checksum: b86ffc044ff6ad5754541791ff9d45b8f9c2d19bb6eb80d0910f0d162eda8a6b0322c71a1afac9510dfcfa65dba66cf10a920780c9b179bd3d49f7d8565fedf1 + languageName: node + linkType: hard + +"@vue/compiler-core@npm:3.5.12, @vue/compiler-core@npm:^3.0.0": + version: 3.5.12 + resolution: "@vue/compiler-core@npm:3.5.12" dependencies: - "@vue/compiler-core": 3.0.7 - "@vue/shared": 3.0.7 - checksum: e6f336493b98000be6808ca4a9c4f58928d4b41807d864e0be8823cb0443022d81ba74c4300312c687e41643043231f5ea05ded1fb5b16674dfddaa5b3135fd2 + "@babel/parser": ^7.25.3 + "@vue/shared": 3.5.12 + entities: ^4.5.0 + estree-walker: ^2.0.2 + source-map-js: ^1.2.0 + checksum: 341e5ded344192d71ba940d01b24e6fad400bea3ccbb093f3c57a6c952ad1ba1b6eb622ddc7be7401aebcac3875f1ebdcb6550f7fe9a3debb323d528944ae86b + languageName: node + linkType: hard + +"@vue/compiler-dom@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/compiler-dom@npm:3.5.12" + dependencies: + "@vue/compiler-core": 3.5.12 + "@vue/shared": 3.5.12 + checksum: 519c5a3ba0aca1c712abaa3e77322361339cbff0d997bee5c1ed1338145641e8d0510849ff37938396cf7fe796521d9eac47fbd1fe128ef4dc3a39b28f1e6f5a languageName: node linkType: hard "@vue/compiler-sfc@npm:^3.0.5": - version: 3.0.7 - resolution: "@vue/compiler-sfc@npm:3.0.7" - dependencies: - "@babel/parser": ^7.12.0 - "@babel/types": ^7.12.0 - "@vue/compiler-core": 3.0.7 - "@vue/compiler-dom": 3.0.7 - "@vue/compiler-ssr": 3.0.7 - "@vue/shared": 3.0.7 - consolidate: ^0.16.0 - estree-walker: ^2.0.1 - hash-sum: ^2.0.0 - lru-cache: ^5.1.1 - magic-string: ^0.25.7 - merge-source-map: ^1.1.0 - postcss: ^8.1.10 - postcss-modules: ^4.0.0 - postcss-selector-parser: ^6.0.4 - source-map: ^0.6.1 - peerDependencies: - vue: 3.0.7 - checksum: 06ebaeeadabae32a648f35a7983a61126a48ea48eefa26528edc09da12a903fc3ef68f9f32d75a961a35acda3c296bcbbc1311a0c6c234e0cd87c4391fb4692b + version: 3.5.12 + resolution: "@vue/compiler-sfc@npm:3.5.12" + dependencies: + "@babel/parser": ^7.25.3 + "@vue/compiler-core": 3.5.12 + "@vue/compiler-dom": 3.5.12 + "@vue/compiler-ssr": 3.5.12 + "@vue/shared": 3.5.12 + estree-walker: ^2.0.2 + magic-string: ^0.30.11 + postcss: ^8.4.47 + source-map-js: ^1.2.0 + checksum: cbf90d7c1f3920323056a83a0fdab90b156f4f2849beb77b173dd09298b3a12b805a05b276908f75f890823e807dabe850d97670b0d2d1136e82fe834b64e06d languageName: node linkType: hard -"@vue/compiler-ssr@npm:3.0.7": - version: 3.0.7 - resolution: "@vue/compiler-ssr@npm:3.0.7" +"@vue/compiler-ssr@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/compiler-ssr@npm:3.5.12" dependencies: - "@vue/compiler-dom": 3.0.7 - "@vue/shared": 3.0.7 - checksum: 63fe30f9676942e7c44da6eb6ac5f8cb23df2344096b72a68fceffb7b9ca7760376987c29eac1e27a31b1b89385416ae524d98e06ada957f68bdc25a9f0e783f + "@vue/compiler-dom": 3.5.12 + "@vue/shared": 3.5.12 + checksum: bddbea9e9bab2f047ea8374623cbcbe3f65f3ac904859335810b760b943e207527e738cc8b494bc55f03cbf56129c1055ce046b654f516b5123ae5231b67d022 languageName: node linkType: hard -"@vue/shared@npm:3.0.7": - version: 3.0.7 - resolution: "@vue/shared@npm:3.0.7" - checksum: 473a5acac3acb766ea6501b6ae9c7a30eb929bbb71064175052af0cdabb968fa106d112cbedb1d970d3cabaea1ef8341ab8c08249c85b9948118ce92c98081b7 +"@vue/shared@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/shared@npm:3.5.12" + checksum: 11d14773ee39525d8cdd33eb45954f5b3458db41fc2e7e91603583a8ea40ea1fe423854874c89d6f67ce4a6d361af6042cbd0eb41a127ca4a3ba99602f3b80aa languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": - version: 1.11.6 - resolution: "@webassemblyjs/ast@npm:1.11.6" +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" dependencies: "@webassemblyjs/helper-numbers": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - checksum: 38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf + checksum: 31bcc64147236bd7b1b6d29d1f419c1f5845c785e1e42dc9e3f8ca2e05a029e9393a271b84f3a5bff2a32d35f51ff59e2181a6e5f953fe88576acd6750506202 languageName: node linkType: hard @@ -23826,10 +19511,10 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" - checksum: b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: c3ffb723024130308db608e86e2bdccd4868bbb62dffb0a9a1530606496f79c87f8565bd8e02805ce64912b71f1a70ee5fb00307258b0c082c3abf961d097eca languageName: node linkType: hard @@ -23851,15 +19536,15 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" +"@webassemblyjs/helper-wasm-section@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" dependencies: - "@webassemblyjs/ast": 1.11.6 - "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/wasm-gen": 1.11.6 - checksum: b2cf751bf4552b5b9999d27bbb7692d0aca75260140195cb58ea6374d7b9c2dc69b61e10b211a0e773f66209c3ddd612137ed66097e3684d7816f854997682e9 + "@webassemblyjs/wasm-gen": 1.12.1 + checksum: c19810cdd2c90ff574139b6d8c0dda254d42d168a9e5b3d353d1bc085f1d7164ccd1b3c05592a45a939c47f7e403dc8d03572bb686642f06a3d02932f6f0bc8f languageName: node linkType: hard @@ -23888,68 +19573,75 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.11.5": - version: 1.11.6 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" +"@webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" dependencies: - "@webassemblyjs/ast": 1.11.6 - "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/helper-wasm-section": 1.11.6 - "@webassemblyjs/wasm-gen": 1.11.6 - "@webassemblyjs/wasm-opt": 1.11.6 - "@webassemblyjs/wasm-parser": 1.11.6 - "@webassemblyjs/wast-printer": 1.11.6 - checksum: 29ce75870496d6fad864d815ebb072395a8a3a04dc9c3f4e1ffdc63fc5fa58b1f34304a1117296d8240054cfdbc38aca88e71fb51483cf29ffab0a61ef27b481 + "@webassemblyjs/helper-wasm-section": 1.12.1 + "@webassemblyjs/wasm-gen": 1.12.1 + "@webassemblyjs/wasm-opt": 1.12.1 + "@webassemblyjs/wasm-parser": 1.12.1 + "@webassemblyjs/wast-printer": 1.12.1 + checksum: ae23642303f030af888d30c4ef37b08dfec7eab6851a9575a616e65d1219f880d9223913a39056dd654e49049d76e97555b285d1f7e56935047abf578cce0692 languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" +"@webassemblyjs/wasm-gen@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" dependencies: - "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/ast": 1.12.1 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 "@webassemblyjs/ieee754": 1.11.6 "@webassemblyjs/leb128": 1.11.6 "@webassemblyjs/utf8": 1.11.6 - checksum: a645a2eecbea24833c3260a249704a7f554ef4a94c6000984728e94bb2bc9140a68dfd6fd21d5e0bbb09f6dfc98e083a45760a83ae0417b41a0196ff6d45a23a + checksum: 5787626bb7f0b033044471ddd00ce0c9fe1ee4584e8b73e232051e3a4c99ba1a102700d75337151c8b6055bae77eefa4548960c610a5e4a504e356bd872138ff languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" +"@webassemblyjs/wasm-opt@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" dependencies: - "@webassemblyjs/ast": 1.11.6 - "@webassemblyjs/helper-buffer": 1.11.6 - "@webassemblyjs/wasm-gen": 1.11.6 - "@webassemblyjs/wasm-parser": 1.11.6 - checksum: b4557f195487f8e97336ddf79f7bef40d788239169aac707f6eaa2fa5fe243557c2d74e550a8e57f2788e70c7ae4e7d32f7be16101afe183d597b747a3bdd528 + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/wasm-gen": 1.12.1 + "@webassemblyjs/wasm-parser": 1.12.1 + checksum: 0e8fa8a0645304a1e18ff40d3db5a2e9233ebaa169b19fcc651d6fc9fe2cac0ce092ddee927318015ae735d9cd9c5d97c0cafb6a51dcd2932ac73587b62df991 languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": - version: 1.11.6 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" dependencies: - "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/ast": 1.12.1 "@webassemblyjs/helper-api-error": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 "@webassemblyjs/ieee754": 1.11.6 "@webassemblyjs/leb128": 1.11.6 "@webassemblyjs/utf8": 1.11.6 - checksum: 8200a8d77c15621724a23fdabe58d5571415cda98a7058f542e670ea965dd75499f5e34a48675184947c66f3df23adf55df060312e6d72d57908e3f049620d8a + checksum: 176015de3551ac068cd4505d837414f258d9ade7442bd71efb1232fa26c9f6d7d4e11a5c816caeed389943f409af7ebff6899289a992d7a70343cb47009d21a8 languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/wast-printer@npm:1.11.6" +"@webassemblyjs/wast-printer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wast-printer@npm:1.12.1" dependencies: - "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/ast": 1.12.1 "@xtuc/long": 4.2.2 - checksum: d2fa6a4c427325ec81463e9c809aa6572af6d47f619f3091bf4c4a6fc34f1da3df7caddaac50b8e7a457f8784c62cd58c6311b6cb69b0162ccd8d4c072f79cf8 + checksum: 2974b5dda8d769145ba0efd886ea94a601e61fb37114c14f9a9a7606afc23456799af652ac3052f284909bd42edc3665a76bc9b50f95f0794c053a8a1757b713 + languageName: node + linkType: hard + +"@whatwg-node/events@npm:^0.0.3": + version: 0.0.3 + resolution: "@whatwg-node/events@npm:0.0.3" + checksum: af26f40d4d0a0f5f0ee45fc6124afb8d6b33988dae96ab0fb87aa5e66d1ff08a749491b9da533ea524bbaebd4a770736f254d574a91ab4455386aa098cee8c77 languageName: node linkType: hard @@ -23970,37 +19662,47 @@ __metadata: languageName: node linkType: hard -"@whatwg-node/fetch@npm:^0.4.0": - version: 0.4.7 - resolution: "@whatwg-node/fetch@npm:0.4.7" +"@whatwg-node/fetch@npm:^0.8.0, @whatwg-node/fetch@npm:^0.8.1, @whatwg-node/fetch@npm:^0.8.2": + version: 0.8.8 + resolution: "@whatwg-node/fetch@npm:0.8.8" dependencies: "@peculiar/webcrypto": ^1.4.0 - abort-controller: ^3.0.0 + "@whatwg-node/node-fetch": ^0.3.6 busboy: ^1.6.0 - form-data-encoder: ^1.7.1 - formdata-node: ^4.3.1 - node-fetch: ^2.6.7 - undici: ^5.10.0 - web-streams-polyfill: ^3.2.0 - checksum: 0d90790355d649fa76507a1cb6a1b72f991b57f57d01c96dfd6a0d3acd1a601dd73480e8ed115493c2e5f4a32e8713eb949c26efadd76e5aeba8a484fa58447b + urlpattern-polyfill: ^8.0.0 + web-streams-polyfill: ^3.2.1 + checksum: 891407ba57e32e5af70a3b0a86980c4466dcf2ba8581b6927475c85400280b163085519e98821dd94776da9aa1b0b1e221e718009e2abed9c8a0d4721025b2ab + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.3.6": + version: 0.3.6 + resolution: "@whatwg-node/node-fetch@npm:0.3.6" + dependencies: + "@whatwg-node/events": ^0.0.3 + busboy: ^1.6.0 + fast-querystring: ^1.1.1 + fast-url-parser: ^1.1.3 + tslib: ^2.3.1 + checksum: d3d7b0a0242c0511c7b666de66d9096fb24ea251426ce76e3a26a8ca17408de5d4d4f81b5aaec840cc7025f0321fb97e06067c53f377c844a5a9473dd76491ae languageName: node linkType: hard "@wry/context@npm:^0.7.0": - version: 0.7.0 - resolution: "@wry/context@npm:0.7.0" + version: 0.7.4 + resolution: "@wry/context@npm:0.7.4" dependencies: tslib: ^2.3.0 - checksum: f4ff78023a0b949122037aae766232b7d2284dc415204d22d9ea6d7969ff8f5f29b18128bc9a40e68dc054c8a12b1bf5868a357fdb50c398c447290c3a5b0496 + checksum: 9bc8c30a31f9c7d36b616e89daa9280c03d196576a4f9fef800e9bd5de9434ba70216322faeeacc7ef1ab95f59185599d702538114045df729a5ceea50aef4e2 languageName: node linkType: hard "@wry/equality@npm:^0.5.0": - version: 0.5.3 - resolution: "@wry/equality@npm:0.5.3" + version: 0.5.7 + resolution: "@wry/equality@npm:0.5.7" dependencies: tslib: ^2.3.0 - checksum: 7ea8ded51462911217183b93cc3ffbb4d18dc02a62d4a79e0d9983463739bf54106aaeb25649bf33168120bd044b61d135018bfcf4fefad8099c13eac9238aa6 + checksum: 892f262fae362df80f199b12658ea6966949539d4a3a50c1acf00d94a367d673a38f8efa1abcb726ae9e5cc5e62fce50c540c70f797b7c8a2c4308b401dfd903 languageName: node linkType: hard @@ -24029,14 +19731,7 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:~0.7.0": - version: 0.7.10 - resolution: "@xmldom/xmldom@npm:0.7.10" - checksum: faeb5efd208f25643e469b9807b4b1bfe4f9c19540f0a24b4bb1c748cee6ee44ec441048820f9100987d1ee075f2e2bfc28e535cae5024d4566bb62b0a42be13 - languageName: node - linkType: hard - -"@xmldom/xmldom@npm:~0.7.7": +"@xmldom/xmldom@npm:~0.7.0, @xmldom/xmldom@npm:~0.7.7": version: 0.7.13 resolution: "@xmldom/xmldom@npm:0.7.13" checksum: b4054078530e5fa8ede9677425deff0fce6d965f4c477ca73f8490d8a089e60b8498a15560425a1335f5ff99ecb851ed2c734b0a9a879299a5694302f212f37a @@ -24122,6 +19817,17 @@ __metadata: languageName: node linkType: hard +"@zkochan/js-yaml@npm:0.0.6": + version: 0.0.6 + resolution: "@zkochan/js-yaml@npm:0.0.6" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: 51b81597a1d1d79c778b8fae48317eaad78d75223d0b7477ad2b35f47cf63b19504da430bb7a03b326e668b282874242cc123e323e57293be038684cb5e755f8 + languageName: node + linkType: hard + "@zkochan/js-yaml@npm:0.0.7": version: 0.0.7 resolution: "@zkochan/js-yaml@npm:0.0.7" @@ -24133,27 +19839,27 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5": - version: 2.0.5 - resolution: "abab@npm:2.0.5" - checksum: 0ec951b46d5418c2c2f923021ec193eaebdb4e802ffd5506286781b454be722a13a8430f98085cd3e204918401d9130ec6cc8f5ae19be315b3a0e857d83196e1 - languageName: node - linkType: hard - -"abab@npm:^2.0.6": +"abab@npm:^2.0.3, abab@npm:^2.0.5, abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e languageName: node linkType: hard -"abbrev@npm:1, abbrev@npm:^1.0.0": +"abbrev@npm:1": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 languageName: node linkType: hard +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 + languageName: node + linkType: hard + "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -24200,15 +19906,6 @@ __metadata: languageName: node linkType: hard -"acorn-import-assertions@npm:^1.9.0": - version: 1.9.0 - resolution: "acorn-import-assertions@npm:1.9.0" - peerDependencies: - acorn: ^8 - checksum: 944fb2659d0845c467066bdcda2e20c05abe3aaf11972116df457ce2627628a81764d800dd55031ba19de513ee0d43bb771bc679cc0eda66dc8b4fade143bc0c - languageName: node - linkType: hard - "acorn-import-attributes@npm:^1.9.5": version: 1.9.5 resolution: "acorn-import-attributes@npm:1.9.5" @@ -24218,16 +19915,7 @@ __metadata: languageName: node linkType: hard -"acorn-jsx@npm:^5.3.1": - version: 5.3.1 - resolution: "acorn-jsx@npm:5.3.1" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: daf441a9d7b59c0ea1f7fe2934c48aca604a007455129ce35fa62ec3d4c8363e2efc2d4da636d18ce0049979260ba07d8b42bc002ae95182916d2c90901529c2 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": +"acorn-jsx@npm:^5.3.1, acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: @@ -24236,18 +19924,7 @@ __metadata: languageName: node linkType: hard -"acorn-node@npm:^1.3.0": - version: 1.8.2 - resolution: "acorn-node@npm:1.8.2" - dependencies: - acorn: ^7.0.0 - acorn-walk: ^7.0.0 - xtend: ^4.0.2 - checksum: 02e1564a1ccf8bd1fcefcd01235398af4a9effaf032c5397994ddd275590a72894cb3e26e4b82579ccdda1e48ade7486aef61e771ddae3563ca452b927f443d8 - languageName: node - linkType: hard - -"acorn-walk@npm:^7.0.0, acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0": +"acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0": version: 7.2.0 resolution: "acorn-walk@npm:7.2.0" checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f @@ -24255,13 +19932,15 @@ __metadata: linkType: hard "acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: ^8.11.0 + checksum: 4ff03f42323e7cf90f1683e08606b0f460e1e6ac263d2730e3df91c7665b6f64e696db6ea27ee4bed18c2599569be61f28a8399fa170c611161a348c402ca19c languageName: node linkType: hard -"acorn@npm:^7.0.0, acorn@npm:^7.1.1, acorn@npm:^7.4.1": +"acorn@npm:^7.1.1, acorn@npm:^7.4.1": version: 7.4.1 resolution: "acorn@npm:7.4.1" bin: @@ -24270,37 +19949,19 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0": - version: 8.7.1 - resolution: "acorn@npm:8.7.1" - bin: - acorn: bin/acorn - checksum: aca0aabf98826717920ac2583fdcad0a6fbe4e583fdb6e843af2594e907455aeafe30b1e14f1757cd83ce1776773cf8296ffc3a4acf13f0bd3dfebcf1db6ae80 - languageName: node - linkType: hard - -"acorn@npm:^8.1.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.12.1, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.13.0 + resolution: "acorn@npm:8.13.0" bin: acorn: bin/acorn - checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 - languageName: node - linkType: hard - -"acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" - bin: - acorn: bin/acorn - checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d + checksum: f1541f05eb5d6ff67990d1927290809b1ebb663ac96d9c7057c935cf29c5bcaba6d39f37bd007f4bb814f162f142b0f2b2dd4b14128b8fcfaf9f0508a6f05f1c languageName: node linkType: hard "address@npm:^1.0.1": - version: 1.1.2 - resolution: "address@npm:1.1.2" - checksum: d966deee6ab9a0f96ed1d25dc73e91a248f64479c91f9daeb15237b8e3c39a02faac4e6afe8987ef9e5aea60a1593cef5882b7456ab2e6196fc0229a93ec39c2 + version: 1.2.2 + resolution: "address@npm:1.2.2" + checksum: ace439960c1e3564d8f523aff23a841904bf33a2a7c2e064f7f60a064194075758b9690e65bd9785692a4ef698a998c57eb74d145881a1cecab8ba658ddb1607 languageName: node linkType: hard @@ -24316,6 +19977,13 @@ __metadata: languageName: node linkType: hard +"adler-32@npm:~1.3.0": + version: 1.3.1 + resolution: "adler-32@npm:1.3.1" + checksum: c7f6b02df64a4392fcf1591862344f56733716a558e97a8b06a553dadeeaec792054512389000f42f371b13d2be5370e056e18db3b573944b595c4cb7742c5c6 + languageName: node + linkType: hard + "agent-base@npm:5": version: 5.1.1 resolution: "agent-base@npm:5.1.1" @@ -24332,15 +20000,6 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^4.3.0": - version: 4.3.0 - resolution: "agent-base@npm:4.3.0" - dependencies: - es6-promisify: ^5.0.0 - checksum: 0c10891060e579c67efafd6b62223666c4b4129b521eac3e9ad272a137545bcedb54ce352273b7ad21a0024060e4f1360ae9a465ac87e2af18883c937d39979f - languageName: node - linkType: hard - "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": version: 7.1.1 resolution: "agent-base@npm:7.1.1" @@ -24350,7 +20009,7 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:4.2.1, agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": +"agentkeepalive@npm:4.2.1": version: 4.2.1 resolution: "agentkeepalive@npm:4.2.1" dependencies: @@ -24361,6 +20020,15 @@ __metadata: languageName: node linkType: hard +"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: ^1.2.1 + checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 + languageName: node + linkType: hard + "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" @@ -24406,7 +20074,7 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^5.0.0, ajv-keywords@npm:^5.1.0": +"ajv-keywords@npm:^5.1.0": version: 5.1.0 resolution: "ajv-keywords@npm:5.1.0" dependencies: @@ -24417,7 +20085,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:8.12.0, ajv@npm:^8.9.0": +"ajv@npm:8.12.0": version: 8.12.0 resolution: "ajv@npm:8.12.0" dependencies: @@ -24429,7 +20097,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -24441,19 +20109,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.6.3, ajv@npm:^8.8.0": - version: 8.11.0 - resolution: "ajv@npm:8.11.0" - dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 5e0ff226806763be73e93dd7805b634f6f5921e3e90ca04acdf8db81eed9d8d3f0d4c5f1213047f45ebbf8047ffe0c840fa1ef2ec42c3a644899f69aa72b5bef - languageName: node - linkType: hard - -"ajv@npm:^8.12.0": +"ajv@npm:^8.0.0, ajv@npm:^8.12.0, ajv@npm:^8.6.3, ajv@npm:^8.9.0": version: 8.17.1 resolution: "ajv@npm:8.17.1" dependencies: @@ -24480,18 +20136,18 @@ __metadata: linkType: hard "ansi-align@npm:^3.0.0": - version: 3.0.0 - resolution: "ansi-align@npm:3.0.0" + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" dependencies: - string-width: ^3.0.0 - checksum: 6bc5f3712d28a899063845a15c5da75b2f350dda8ffac6098581619b80a85d249cdd23c3dc7b596cd31e44477382bcdedff47e31201eaa10bb9708c9fce45330 + string-width: ^4.1.0 + checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d languageName: node linkType: hard -"ansi-colors@npm:4.1.1, ansi-colors@npm:^4.1.1": - version: 4.1.1 - resolution: "ansi-colors@npm:4.1.1" - checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 +"ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e languageName: node linkType: hard @@ -24502,7 +20158,7 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^3.0.0, ansi-escapes@npm:^3.1.0": +"ansi-escapes@npm:^3.0.0": version: 3.2.0 resolution: "ansi-escapes@npm:3.2.0" checksum: 0f94695b677ea742f7f1eed961f7fd8d05670f744c6ad1f8f635362f6681dcfbc1575cb05b43abc7bb6d67e25a75fb8c7ea8f2a57330eb2c76b33f18cb2cef0a @@ -24555,16 +20211,16 @@ __metadata: linkType: hard "ansi-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "ansi-regex@npm:3.0.0" - checksum: 2ad11c416f81c39f5c65eafc88cf1d71aa91d76a2f766e75e457c2a3c43e8a003aadbf2966b61c497aa6a6940a36412486c975b3270cdfc3f413b69826189ec3 + version: 3.0.1 + resolution: "ansi-regex@npm:3.0.1" + checksum: 09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc languageName: node linkType: hard -"ansi-regex@npm:^4.1.0": - version: 4.1.0 - resolution: "ansi-regex@npm:4.1.0" - checksum: 97aa4659538d53e5e441f5ef2949a3cffcb838e57aeaad42c4194e9d7ddb37246a6526c4ca85d3940a9d1e19b11cc2e114530b54c9d700c8baf163c31779baf8 +"ansi-regex@npm:^4.0.0, ansi-regex@npm:^4.1.0": + version: 4.1.1 + resolution: "ansi-regex@npm:4.1.1" + checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 languageName: node linkType: hard @@ -24576,9 +20232,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac languageName: node linkType: hard @@ -24649,13 +20305,13 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.1, anymatch@npm:~3.1.2": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" dependencies: normalize-path: ^3.0.0 picomatch: ^2.0.4 - checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 languageName: node linkType: hard @@ -24692,16 +20348,7 @@ __metadata: languageName: node linkType: hard -"apollo-reporting-protobuf@npm:^0.8.0 || ^3.0.0, apollo-reporting-protobuf@npm:^3.3.1, apollo-reporting-protobuf@npm:^3.3.3": - version: 3.3.3 - resolution: "apollo-reporting-protobuf@npm:3.3.3" - dependencies: - "@apollo/protobufjs": 1.2.6 - checksum: 6900db30476ef2e888ecef4c291e26579eba9695dc874ca8b3d1f93064bea307689172790b9d574849e5bdb371953ea38f2caddc5abb51e1ca197197f3d56d28 - languageName: node - linkType: hard - -"apollo-reporting-protobuf@npm:^3.4.0": +"apollo-reporting-protobuf@npm:^0.8.0 || ^3.0.0, apollo-reporting-protobuf@npm:^3.4.0": version: 3.4.0 resolution: "apollo-reporting-protobuf@npm:3.4.0" dependencies: @@ -24720,8 +20367,8 @@ __metadata: linkType: hard "apollo-server-core@npm:^3.10.2": - version: 3.10.3 - resolution: "apollo-server-core@npm:3.10.3" + version: 3.13.0 + resolution: "apollo-server-core@npm:3.13.0" dependencies: "@apollo/utils.keyvaluecache": ^1.0.1 "@apollo/utils.logger": ^1.0.0 @@ -24732,22 +20379,23 @@ __metadata: "@graphql-tools/schema": ^8.0.0 "@josephg/resolvable": ^1.0.0 apollo-datasource: ^3.3.2 - apollo-reporting-protobuf: ^3.3.3 + apollo-reporting-protobuf: ^3.4.0 apollo-server-env: ^4.2.1 apollo-server-errors: ^3.3.1 - apollo-server-plugin-base: ^3.6.3 - apollo-server-types: ^3.6.3 + apollo-server-plugin-base: ^3.7.2 + apollo-server-types: ^3.8.0 async-retry: ^1.2.1 fast-json-stable-stringify: ^2.1.0 graphql-tag: ^2.11.0 loglevel: ^1.6.8 lru-cache: ^6.0.0 + node-abort-controller: ^3.0.1 sha.js: ^2.4.11 uuid: ^9.0.0 whatwg-mimetype: ^3.0.0 peerDependencies: graphql: ^15.3.0 || ^16.0.0 - checksum: 1a9c3ca29c1e664970737e83d76999d43ceb938e39026a329682fcc80fa17a564a69cb7b38110b1928d3d512ae77eeeb8ed6e160043521052c0360b0b00f0ada + checksum: 94f97f6e25cba506fa5ced2e1e88fbe1cf7abccdf4cfbd7ce218e26af02a58a1b1c9191490876a7679b8285b85eb036208353dbd833144608f730a0dab9473bd languageName: node linkType: hard @@ -24762,12 +20410,12 @@ __metadata: linkType: hard "apollo-server-env@npm:^3.0.0": - version: 3.1.0 - resolution: "apollo-server-env@npm:3.1.0" + version: 3.2.0 + resolution: "apollo-server-env@npm:3.2.0" dependencies: node-fetch: ^2.6.1 util.promisify: ^1.0.0 - checksum: 35bb002bc06c27b4339ccd193e519a130402009032fb1d90d780c3de10ee0c0e489c4778175084f3eae8f66dc62fdbb236c217b0f98e46709317d63f2f2c0332 + checksum: 84d880e48371d02860ba2124d1c0f026276f5f22cd18dcdd3cacbb7a70cc8d2cf07a4bd4f294006e928c0ef95cc31cdad2198cbc968a649633521b0084416e5c languageName: node linkType: hard @@ -24820,17 +20468,6 @@ __metadata: languageName: node linkType: hard -"apollo-server-plugin-base@npm:^3.6.3": - version: 3.6.3 - resolution: "apollo-server-plugin-base@npm:3.6.3" - dependencies: - apollo-server-types: ^3.6.3 - peerDependencies: - graphql: ^15.3.0 || ^16.0.0 - checksum: 50e690cf4c5047957c4546676f11d82f8c0bee2c0340573322f23188af27175ac49859d463c6123ebef500b3c32a0932e3e3f9fa8671e2d1a410d2e89c8608e3 - languageName: node - linkType: hard - "apollo-server-plugin-base@npm:^3.7.2": version: 3.7.2 resolution: "apollo-server-plugin-base@npm:3.7.2" @@ -24855,21 +20492,7 @@ __metadata: languageName: node linkType: hard -"apollo-server-types@npm:^3.6.2, apollo-server-types@npm:^3.6.3": - version: 3.6.3 - resolution: "apollo-server-types@npm:3.6.3" - dependencies: - "@apollo/utils.keyvaluecache": ^1.0.1 - "@apollo/utils.logger": ^1.0.0 - apollo-reporting-protobuf: ^3.3.3 - apollo-server-env: ^4.2.1 - peerDependencies: - graphql: ^15.3.0 || ^16.0.0 - checksum: ebd218e6fa8b756bb2d6954b454676907d99b8f140923b439cc1bbb200251f9df7228a9d83c5c91bb571a448cc80c2d86bc0a0eae491a4ce028e86a724cde68a - languageName: node - linkType: hard - -"apollo-server-types@npm:^3.8.0": +"apollo-server-types@npm:^3.6.2, apollo-server-types@npm:^3.8.0": version: 3.8.0 resolution: "apollo-server-types@npm:3.8.0" dependencies: @@ -24900,9 +20523,9 @@ __metadata: linkType: hard "app-root-path@npm:^3.0.0": - version: 3.0.0 - resolution: "app-root-path@npm:3.0.0" - checksum: ff91a24db2b55070f6b3e22e72ce8fe8ea847e19eb8a3cbb267f9e9ac2a8372db65114dd6798a4ed7897a6f475b90a49330b3e53bf199d47e6abb5c5279aa1d7 + version: 3.1.0 + resolution: "app-root-path@npm:3.1.0" + checksum: e3db3957aee197143a0f6c75e39fe89b19e7244f28b4f2944f7276a9c526d2a7ab2d115b4b2d70a51a65a9a3ca17506690e5b36f75a068a7e5a13f8c092389ba languageName: node linkType: hard @@ -24970,6 +20593,24 @@ __metadata: languageName: node linkType: hard +"archiver-utils@npm:^3.0.4": + version: 3.0.4 + resolution: "archiver-utils@npm:3.0.4" + dependencies: + glob: ^7.2.3 + graceful-fs: ^4.2.0 + lazystream: ^1.0.0 + lodash.defaults: ^4.2.0 + lodash.difference: ^4.5.0 + lodash.flatten: ^4.4.0 + lodash.isplainobject: ^4.0.6 + lodash.union: ^4.6.0 + normalize-path: ^3.0.0 + readable-stream: ^3.6.0 + checksum: 5c6568f1185fb6c4b85282ad3281a5a024761bf27e525de1ec54255d15ca98e19532e7b5403930273911a5c8c961aa0c1e9148d6c2810784fa6bd8a97c0021a7 + languageName: node + linkType: hard + "archiver-utils@npm:^4.0.1": version: 4.0.1 resolution: "archiver-utils@npm:4.0.1" @@ -25000,17 +20641,17 @@ __metadata: linkType: hard "archiver@npm:^5.3.0": - version: 5.3.0 - resolution: "archiver@npm:5.3.0" + version: 5.3.2 + resolution: "archiver@npm:5.3.2" dependencies: archiver-utils: ^2.1.0 - async: ^3.2.0 + async: ^3.2.4 buffer-crc32: ^0.2.1 readable-stream: ^3.6.0 - readdir-glob: ^1.0.0 + readdir-glob: ^1.1.2 tar-stream: ^2.2.0 zip-stream: ^4.1.0 - checksum: 878b275390dbab4a32dc2010fb68447d2750297226002002b27d790058d0e04c7d1566f20cf6f9c5abcca33e946cd36ed11b659c59408dabd852db005c84dfed + checksum: 7d3b9b9b51cf54d88c89fbca9b0847c120bfcf9776c7025c52dd0b62f6603dc63dc0f3f1a09582f936f67e3906b46d58954cc762a255be45e8d3e14e3cb0b0b1 languageName: node linkType: hard @@ -25032,12 +20673,12 @@ __metadata: linkType: hard "are-we-there-yet@npm:^3.0.0": - version: 3.0.0 - resolution: "are-we-there-yet@npm:3.0.0" + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" dependencies: delegates: ^1.0.0 readable-stream: ^3.6.0 - checksum: 348edfdd931b0b50868b55402c01c3f64df1d4c229ab6f063539a5025fd6c5f5bb8a0cab409bbed8d75d34762d22aa91b7c20b4204eb8177063158d9ba792981 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 languageName: node linkType: hard @@ -25072,31 +20713,15 @@ __metadata: linkType: hard "aria-hidden@npm:^1.1.1": - version: 1.2.3 - resolution: "aria-hidden@npm:1.2.3" + version: 1.2.4 + resolution: "aria-hidden@npm:1.2.4" dependencies: tslib: ^2.0.0 - checksum: 7d7d211629eef315e94ed3b064c6823d13617e609d3f9afab1c2ed86399bb8e90405f9bdd358a85506802766f3ecb468af985c67c846045a34b973bcc0289db9 + checksum: 2ac90b70d29c6349d86d90e022cf01f4885f9be193932d943a14127cf28560dd0baf068a6625f084163437a4be0578f513cf7892f4cc63bfe91aa41dce27c6b2 languageName: node linkType: hard -"aria-query@npm:5.3.0": - version: 5.3.0 - resolution: "aria-query@npm:5.3.0" - dependencies: - dequal: ^2.0.3 - checksum: 305bd73c76756117b59aba121d08f413c7ff5e80fa1b98e217a3443fcddb9a232ee790e24e432b59ae7625aebcf4c47cb01c2cac872994f0b426f5bdfcd96ba9 - languageName: node - linkType: hard - -"aria-query@npm:^5.0.0": - version: 5.0.0 - resolution: "aria-query@npm:5.0.0" - checksum: c41f98866c5a304561ee8cae55856711cddad6f3f85d8cb43cc5f79667078d9b8979ce32d244c1ff364e6463a4d0b6865804a33ccc717fed701b281cf7dc6296 - languageName: node - linkType: hard - -"aria-query@npm:^5.1.3, aria-query@npm:~5.1.3": +"aria-query@npm:5.1.3": version: 5.1.3 resolution: "aria-query@npm:5.1.3" dependencies: @@ -25105,17 +20730,23 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "array-buffer-byte-length@npm:1.0.0" +"aria-query@npm:5.3.0": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" dependencies: - call-bind: ^1.0.2 - is-array-buffer: ^3.0.1 - checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 + dequal: ^2.0.3 + checksum: 305bd73c76756117b59aba121d08f413c7ff5e80fa1b98e217a3443fcddb9a232ee790e24e432b59ae7625aebcf4c47cb01c2cac872994f0b426f5bdfcd96ba9 + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0, aria-query@npm:^5.1.3, aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: d971175c85c10df0f6d14adfe6f1292409196114ab3c62f238e208b53103686f46cc70695a4f775b73bc65f6a09b6a092fd963c4f3a5a7d690c8fc5094925717 languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.1": +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "array-buffer-byte-length@npm:1.0.1" dependencies: @@ -25146,47 +20777,7 @@ __metadata: languageName: node linkType: hard -"array-flatten@npm:^2.1.2": - version: 2.1.2 - resolution: "array-flatten@npm:2.1.2" - checksum: e8988aac1fbfcdaae343d08c9a06a6fddd2c6141721eeeea45c3cf523bf4431d29a46602929455ed548c7a3e0769928cdc630405427297e7081bd118fdec9262 - languageName: node - linkType: hard - -"array-from@npm:^2.1.1": - version: 2.1.1 - resolution: "array-from@npm:2.1.1" - checksum: 4cd5fa27aa6133b99a57c2881d2a8a66ec59b8e17a0c900f7e8ac9a0a2fae450ed682b67435467bfa71ac9328d025a760c5c46a95586a352180c5a79fc13015d - languageName: node - linkType: hard - -"array-includes@npm:^3.1.4": - version: 3.1.4 - resolution: "array-includes@npm:3.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.1 - get-intrinsic: ^1.1.1 - is-string: ^1.0.7 - checksum: 69967c38c52698f84b50a7aed5554aadc89c6ac6399b6d92ad061a5952f8423b4bba054c51d40963f791dfa294d7247cdd7988b6b1f2c5861477031c6386e1c0 - languageName: node - linkType: hard - -"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": - version: 3.1.6 - resolution: "array-includes@npm:3.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 - is-string: ^1.0.7 - checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5 - languageName: node - linkType: hard - -"array-includes@npm:^3.1.7, array-includes@npm:^3.1.8": +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": version: 3.1.8 resolution: "array-includes@npm:3.1.8" dependencies: @@ -25251,7 +20842,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.3": +"array.prototype.findlastindex@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.findlastindex@npm:1.2.5" dependencies: @@ -25265,19 +20856,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flat@npm:1.3.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.2": +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": version: 1.3.2 resolution: "array.prototype.flat@npm:1.3.2" dependencies: @@ -25289,19 +20868,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flatmap@npm:1.3.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.2": +"array.prototype.flatmap@npm:^1.3.1, array.prototype.flatmap@npm:^1.3.2": version: 1.3.2 resolution: "array.prototype.flatmap@npm:1.3.2" dependencies: @@ -25313,32 +20880,22 @@ __metadata: languageName: node linkType: hard -"array.prototype.toreversed@npm:^1.1.2": - version: 1.1.2 - resolution: "array.prototype.toreversed@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - es-shim-unscopables: ^1.0.0 - checksum: 58598193426282155297bedf950dc8d464624a0d81659822fb73124286688644cb7e0e4927a07f3ab2daaeb6617b647736cc3a5e6ca7ade5bb8e573b284e6240 - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.1": - version: 1.1.1 - resolution: "array.prototype.tosorted@npm:1.1.1" +"array.prototype.reduce@npm:^1.0.6": + version: 1.0.7 + resolution: "array.prototype.reduce@npm:1.0.7" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - get-intrinsic: ^1.1.3 - checksum: 7923324a67e70a2fc0a6e40237405d92395e45ebd76f5cb89c2a5cf1e66b47aca6baacd0cd628ffd88830b90d47fff268071493d09c9ae123645613dac2c2ca3 + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-array-method-boxes-properly: ^1.0.0 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + is-string: ^1.0.7 + checksum: 90303617bd70c8e9a81ebff041d3e10fad1a97f163699cb015b7c84a3f9e6960d9bb161a30f1d0309d6e476f166af5668c1e24f7add3202213d25f7c7f15475d languageName: node linkType: hard -"array.prototype.tosorted@npm:^1.1.3, array.prototype.tosorted@npm:^1.1.4": +"array.prototype.tosorted@npm:^1.1.1, array.prototype.tosorted@npm:^1.1.4": version: 1.1.4 resolution: "array.prototype.tosorted@npm:1.1.4" dependencies: @@ -25399,7 +20956,7 @@ __metadata: languageName: node linkType: hard -"asn1@npm:^0.2.4, asn1@npm:~0.2.3": +"asn1@npm:^0.2.6, asn1@npm:~0.2.3": version: 0.2.6 resolution: "asn1@npm:0.2.6" dependencies: @@ -25408,7 +20965,7 @@ __metadata: languageName: node linkType: hard -"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": +"asn1js@npm:^3.0.5": version: 3.0.5 resolution: "asn1js@npm:3.0.5" dependencies: @@ -25426,19 +20983,7 @@ __metadata: languageName: node linkType: hard -"assert@npm:^2.0.0": - version: 2.0.0 - resolution: "assert@npm:2.0.0" - dependencies: - es6-object-assign: ^1.1.0 - is-nan: ^1.2.1 - object-is: ^1.0.1 - util: ^0.12.0 - checksum: bb91f181a86d10588ee16c5e09c280f9811373974c29974cbe401987ea34e966699d7989a812b0e19377b511ea0bc627f5905647ce569311824848ede382cae8 - languageName: node - linkType: hard - -"assert@npm:^2.1.0": +"assert@npm:^2.0.0, assert@npm:^2.1.0": version: 2.1.0 resolution: "assert@npm:2.1.0" dependencies: @@ -25531,33 +21076,19 @@ __metadata: languageName: node linkType: hard -"async@npm:0.9.x": - version: 0.9.2 - resolution: "async@npm:0.9.2" - checksum: 87dbf129292b8a6c32a4e07f43f462498162aa86f404a7e11f978dbfdf75cfb163c26833684bb07b9d436083cd604cbbf730a57bfcbe436c6ae1ed266cdc56bb - languageName: node - linkType: hard - -"async@npm:^2.6.2": - version: 2.6.3 - resolution: "async@npm:2.6.3" +"async@npm:^2.6.4": + version: 2.6.4 + resolution: "async@npm:2.6.4" dependencies: lodash: ^4.17.14 - checksum: 5e5561ff8fca807e88738533d620488ac03a5c43fce6c937451f7e35f943d33ad06c24af3f681a48cca3d2b0002b3118faff0a128dc89438a9bf0226f712c499 + checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 languageName: node linkType: hard -"async@npm:^3.1.0, async@npm:^3.2.0, async@npm:^3.2.3": - version: 3.2.3 - resolution: "async@npm:3.2.3" - checksum: c4bee57ab2249af3dc83ca3ef9acfa8e822c0d5e5aa41bae3eaf7f673648343cd64ecd7d26091ffd357f3f044428b17b5f00098494b6cf8b6b3e9681f0636ca1 - languageName: node - linkType: hard - -"async@npm:^3.2.4": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 +"async@npm:^3.1.0, async@npm:^3.2.0, async@npm:^3.2.3, async@npm:^3.2.4": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682 languageName: node linkType: hard @@ -25576,9 +21107,9 @@ __metadata: linkType: hard "attr-accept@npm:^2.2.2": - version: 2.2.2 - resolution: "attr-accept@npm:2.2.2" - checksum: 496f7249354ab53e522510c1dc8f67a1887382187adde4dc205507d2f014836a247073b05e9d9ea51e2e9c7f71b0d2aa21730af80efa9af2d68303e5f0565c4d + version: 2.2.4 + resolution: "attr-accept@npm:2.2.4" + checksum: 7b0112e28e3eeb760f4f6bd4ecd8b2467fdb5df7d38d5f8b0a9e83af892023b1f84c594df337b446d5e5eb3f61e18b0470bd9f3aadf39e7853897cbd82cad20d languageName: node linkType: hard @@ -25590,27 +21121,20 @@ __metadata: linkType: hard "autoprefixer@npm:^10.4.9": - version: 10.4.14 - resolution: "autoprefixer@npm:10.4.14" + version: 10.4.20 + resolution: "autoprefixer@npm:10.4.20" dependencies: - browserslist: ^4.21.5 - caniuse-lite: ^1.0.30001464 - fraction.js: ^4.2.0 + browserslist: ^4.23.3 + caniuse-lite: ^1.0.30001646 + fraction.js: ^4.3.7 normalize-range: ^0.1.2 - picocolors: ^1.0.0 + picocolors: ^1.0.1 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: e9f18e664a4e4a54a8f4ec5f6b49ed228ec45afaa76efcae361c93721795dc5ab644f36d2fdfc0dea446b02a8067b9372f91542ea431994399e972781ed46d95 - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a + checksum: 187cec2ec356631932b212f76dc64f4419c117fdb2fb9eeeb40867d38ba5ca5ba734e6ceefc9e3af4eec8258e60accdf5cbf2b7708798598fde35cdc3de562d6 languageName: node linkType: hard @@ -25647,19 +21171,20 @@ __metadata: linkType: hard "aws-sdk@npm:*, aws-sdk@npm:^2.443.0": - version: 2.865.0 - resolution: "aws-sdk@npm:2.865.0" + version: 2.1691.0 + resolution: "aws-sdk@npm:2.1691.0" dependencies: buffer: 4.9.2 events: 1.1.1 ieee754: 1.1.13 - jmespath: 0.15.0 + jmespath: 0.16.0 querystring: 0.2.0 sax: 1.2.1 url: 0.10.3 - uuid: 3.3.2 - xml2js: 0.4.19 - checksum: 9a353c1de282c5b067352e54b6acb7ea0791bfc66619e22b5af10cf824a1a4f5ab6efbf91cc2a424c110b2cc1b1bb035b4971f8721e2fc9e4186e1fda1249909 + util: ^0.12.4 + uuid: 8.0.0 + xml2js: 0.6.2 + checksum: 8a7d614e98aedd7afa04792be38c377609a59424e966302aa26bec958c83f868f56a95a1bf78e8a897be243e16ea8c895c3a81f1ad794195743e8f8cc3dc8513 languageName: node linkType: hard @@ -25687,41 +21212,36 @@ __metadata: languageName: node linkType: hard -"aws4@npm:1.11.0, aws4@npm:^1.10.0, aws4@npm:^1.8.0": +"aws4@npm:1.11.0": version: 1.11.0 resolution: "aws4@npm:1.11.0" checksum: 5a00d045fd0385926d20ebebcfba5ec79d4482fe706f63c27b324d489a04c68edb0db99ed991e19eda09cb8c97dc2452059a34d97545cebf591d7a2b5a10999f languageName: node linkType: hard -"axe-core@npm:^4.2.0": - version: 4.4.1 - resolution: "axe-core@npm:4.4.1" - checksum: ad14c5b71059dc3d24ef2519b8cd96e98b4a572379396201ce449d1c4262181821d6ca9550df65b22371faf06d28bbe94d391fe5675f2a08e6550f7b5da8416d - languageName: node - linkType: hard - -"axe-core@npm:^4.6.2": - version: 4.7.2 - resolution: "axe-core@npm:4.7.2" - checksum: 5d86fa0f45213b0e54cbb5d713ce885c4a8fe3a72b92dd915a47aa396d6fd149c4a87fec53aa978511f6d941402256cfeb26f2db35129e370f25a453c688655a +"aws4@npm:^1.10.0, aws4@npm:^1.8.0": + version: 1.13.2 + resolution: "aws4@npm:1.13.2" + checksum: 9ac924e4a91c088b4928ea86b68d8c4558b0e6289ccabaae0e3e96a611bd75277c2eab6e3965821028768700516f612b929a5ce822f33a8771f74ba2a8cedb9c languageName: node linkType: hard -"axe-core@npm:^4.9.1": - version: 4.10.0 - resolution: "axe-core@npm:4.10.0" - checksum: 7eca827fd8d98d7e4b561df65437be608155c613d8f262ae9e4a6ade02c156c7362dcbc3f71b4b526edce686f7c686280236bcff1d6725e2ef8327def72a8c41 +"axe-core@npm:^4.10.0, axe-core@npm:^4.2.0, axe-core@npm:^4.6.2": + version: 4.10.2 + resolution: "axe-core@npm:4.10.2" + checksum: 2b9b1c93ea73ea9f206604e4e17bd771d2d835f077bde54517d73028b8865c69b209460e73d5b109968cbdb39ab3d28943efa5695189bd79e16421ce1706719e languageName: node linkType: hard "axios-ntlm@npm:^1.2.0": - version: 1.3.0 - resolution: "axios-ntlm@npm:1.3.0" + version: 1.4.2 + resolution: "axios-ntlm@npm:1.4.2" dependencies: - axios: ^0.21.3 + axios: ^1.6.1 + des.js: ^1.1.0 dev-null: ^0.1.1 - checksum: e502649f1565ea016372047111464bcd0318e92345261c9448c0462c9958404f78f2386c7ffbcd37d8da012f7501559a49e814b77d3006b48ad017245c27ba50 + js-md4: ^0.3.2 + checksum: 041a7da753fbc026a054cda7b38947ee1fe93403517d645cc59ca562bc715ea25d3fe83ef728711e6301aaa1648c75bf2ac5a7c97f846115b67b5250e7eb2353 languageName: node linkType: hard @@ -25736,7 +21256,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:^0.21.0, axios@npm:^0.21.1, axios@npm:^0.21.3": +"axios@npm:^0.21.1, axios@npm:^0.21.4": version: 0.21.4 resolution: "axios@npm:0.21.4" dependencies: @@ -25755,41 +21275,35 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.6.0": - version: 1.7.3 - resolution: "axios@npm:1.7.3" +"axios@npm:^1.0.0, axios@npm:^1.4.0, axios@npm:^1.6.0, axios@npm:^1.6.1, axios@npm:^1.7.4, axios@npm:^1.7.7": + version: 1.7.7 + resolution: "axios@npm:1.7.7" dependencies: follow-redirects: ^1.15.6 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: bc304d6da974922342aed7c33155934354429cdc7e1ba9d399ab9ff3ac76103f3697eeedf042a634d43cdae682182bcffd942291db42d2be45b750597cdd5eef + checksum: 882d4fe0ec694a07c7f5c1f68205eb6dc5a62aecdb632cc7a4a3d0985188ce3030e0b277e1a8260ac3f194d314ae342117660a151fabffdc5081ca0b5a8b47fe languageName: node linkType: hard -"axios@npm:^1.6.2": - version: 1.6.8 - resolution: "axios@npm:1.6.8" - dependencies: - follow-redirects: ^1.15.6 - form-data: ^4.0.0 - proxy-from-env: ^1.1.0 - checksum: bf007fa4b207d102459300698620b3b0873503c6d47bf5a8f6e43c0c64c90035a4f698b55027ca1958f61ab43723df2781c38a99711848d232cad7accbcdfcdd +"axobject-query@npm:^3.1.1": + version: 3.2.4 + resolution: "axobject-query@npm:3.2.4" + checksum: a481d82a5dcd32d8bee17f1480ba3087b34ca9a2f7be30710c31f589fd518968a92d2f224a147e15bc93954fad1ea47f1fbf9f761d6b6b41dbb43fcdffd0bce9 languageName: node linkType: hard -"axobject-query@npm:^3.1.1, axobject-query@npm:~3.1.1": - version: 3.1.1 - resolution: "axobject-query@npm:3.1.1" - dependencies: - deep-equal: ^2.0.5 - checksum: c12a5da10dc7bab75e1cda9b6a3b5fcf10eba426ddf1a17b71ef65a434ed707ede7d1c4f013ba1609e970bc8c0cddac01365080d376204314e9b294719acd8a5 +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 7d1e87bf0aa7ae7a76cd39ab627b7c48fda3dc40181303d9adce4ba1d5b5ce73b5e5403ee6626ec8e91090448c887294d6144e24b6741a976f5be9347e3ae1df languageName: node linkType: hard "b4a@npm:^1.6.4": - version: 1.6.4 - resolution: "b4a@npm:1.6.4" - checksum: 81b086f9af1f8845fbef4476307236bda3d660c158c201db976f19cdce05f41f93110ab6b12fd7a2696602a490cc43d5410ee36a56d6eef93afb0d6ca69ac3b2 + version: 1.6.7 + resolution: "b4a@npm:1.6.7" + checksum: afe4e239b49c0ef62236fe0d788ac9bd9d7eac7e9855b0d1835593cd0efcc7be394f9cc28a747a2ed2cdcb0a48c3528a551a196f472eb625457c711169c9efa2 languageName: node linkType: hard @@ -25886,30 +21400,30 @@ __metadata: linkType: hard "babel-loader@npm:^8.3.0": - version: 8.3.0 - resolution: "babel-loader@npm:8.3.0" + version: 8.4.1 + resolution: "babel-loader@npm:8.4.1" dependencies: find-cache-dir: ^3.3.1 - loader-utils: ^2.0.0 + loader-utils: ^2.0.4 make-dir: ^3.1.0 schema-utils: ^2.6.5 peerDependencies: "@babel/core": ^7.0.0 webpack: ">=2" - checksum: d48bcf9e030e598656ad3ff5fb85967db2eaaf38af5b4a4b99d25618a2057f9f100e6b231af2a46c1913206db506115ca7a8cbdf52c9c73d767070dae4352ab5 + checksum: fa02db1a7d3ebb7b4aab83e926fb51e627a00427943c9dd1b3302c8099c67fa6a242a2adeed37d95abcd39ba619edf558a1dec369ce0849c5a87dc290c90fe2f languageName: node linkType: hard "babel-loader@npm:^9.0.0, babel-loader@npm:^9.1.2": - version: 9.1.2 - resolution: "babel-loader@npm:9.1.2" + version: 9.2.1 + resolution: "babel-loader@npm:9.2.1" dependencies: - find-cache-dir: ^3.3.2 + find-cache-dir: ^4.0.0 schema-utils: ^4.0.0 peerDependencies: "@babel/core": ^7.12.0 webpack: ">=5" - checksum: f0edb8e157f9806b810ba3f2c8ca8fa489d377ae5c2b7b00c2ace900a6925641ce4ec520b9c12f70e37b94aa5366e7003e0f6271b26821643e109966ce741cb7 + checksum: e1858d7625ad7cc8cabe6bbb8657f957041ffb1308375f359e92aa1654f413bfbb86a281bbf7cd4f7fff374d571c637b117551deac0231d779a198d4e4e78331 languageName: node linkType: hard @@ -25930,23 +21444,15 @@ __metadata: linkType: hard "babel-plugin-const-enum@npm:^1.0.1": - version: 1.0.1 - resolution: "babel-plugin-const-enum@npm:1.0.1" + version: 1.2.0 + resolution: "babel-plugin-const-enum@npm:1.2.0" dependencies: "@babel/helper-plugin-utils": ^7.0.0 "@babel/plugin-syntax-typescript": ^7.3.3 + "@babel/traverse": ^7.16.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fc35514e5cf657979c86f5d51e51978f6760b6682a52f11bf1f603ffc5f6bf4752e97bac9b4b27d4a3ee03aacf6d04e0e979417bfe82a652ce4a0216354714c7 - languageName: node - linkType: hard - -"babel-plugin-dynamic-import-node@npm:^2.3.3": - version: 2.3.3 - resolution: "babel-plugin-dynamic-import-node@npm:2.3.3" - dependencies: - object.assign: ^4.1.0 - checksum: c9d24415bcc608d0db7d4c8540d8002ac2f94e2573d2eadced137a29d9eab7e25d2cbb4bc6b9db65cf6ee7430f7dd011d19c911a9a778f0533b4a05ce8292c9b + checksum: fc840a71f6717a01b63853b8bc67f75c591ebacfd0d8739c68de02da5d6e48ea38086040427d553726c0e103d2e0ee8b4207827ef26b281247f671f868f78aae languageName: node linkType: hard @@ -25999,18 +21505,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-plugin-jest-hoist@npm:29.5.0" - dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.1.14 - "@types/babel__traverse": ^7.0.6 - checksum: 099b5254073b6bc985b6d2d045ad26fb8ed30ff8ae6404c4fe8ee7cd0e98a820f69e3dfb871c7c65aae0f4b65af77046244c07bb92d49ef9005c90eedf681539 - languageName: node - linkType: hard - "babel-plugin-jest-hoist@npm:^29.6.3": version: 29.6.3 resolution: "babel-plugin-jest-hoist@npm:29.6.3" @@ -26058,20 +21552,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7db3044993f3dddb3cc3d407bc82e640964a3bfe22de05d90e1f8f7a5cb71460011ab136d3c03c6c1ba428359ebf635688cd6205e28d0469bba221985f5c6179 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.4.10": +"babel-plugin-polyfill-corejs2@npm:^0.4.10, babel-plugin-polyfill-corejs2@npm:^0.4.3": version: 0.4.11 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" dependencies: @@ -26084,33 +21565,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.3": - version: 0.4.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.4.0 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 09ba40b9f8ac66a733628b2f12722bb764bdcc4f9600b93d60f1994418a8f84bc4b1ed9ab07c9d288debbf6210413fdff0721a3a43bd89c7f77adf76b0310adc - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.4.5": - version: 0.4.5 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.5" - dependencies: - "@babel/compat-data": ^7.22.6 - "@babel/helper-define-polyfill-provider": ^0.4.2 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 33a8e06aa54e2858d211c743d179f0487b03222f9ca1bfd7c4865bca243fca942a3358cb75f6bb894ed476cbddede834811fbd6903ff589f055821146f053e1a - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.10.1, babel-plugin-polyfill-corejs3@npm:^0.10.4": +"babel-plugin-polyfill-corejs3@npm:^0.10.6": version: 0.10.6 resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" dependencies: @@ -26122,72 +21577,26 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 470bb8c59f7c0912bd77fe1b5a2e72f349b3f65bbdee1d60d6eb7e1f4a085c6f24b2dd5ab4ac6c2df6444a96b070ef6790eccc9edb6a2668c60d33133bfb62c6 - languageName: node - linkType: hard - "babel-plugin-polyfill-corejs3@npm:^0.8.1": - version: 0.8.1 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.1" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.0 - core-js-compat: ^3.30.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c23a581973c141a4687126cf964981180ef27e3eb0b34b911161db4f5caf9ba7ff60bee0ebe46d650ba09e03a6a3ac2cd6a6ae5f4f5363a148470e5cd8447df2 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.8.3": - version: 0.8.3 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.3" + version: 0.8.7 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.7" dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.2 - core-js-compat: ^3.31.0 + "@babel/helper-define-polyfill-provider": ^0.4.4 + core-js-compat: ^3.33.1 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: dcbb30e551702a82cfd4d2c375da2c317658e55f95e9edcda93b9bbfdcc8fb6e5344efcb144e04d3406859e7682afce7974c60ededd9f12072a48a83dd22a0da - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab0355efbad17d29492503230387679dfb780b63b25408990d2e4cf421012dae61d6199ddc309f4d2409ce4e9d3002d187702700dd8f4f8770ebbba651ed066c + checksum: 51bc215ab0c062bbb2225d912f69f8a6705d1837c8e01f9651307b5b937804287c1d73ebd8015689efcc02c3c21f37688b9ee6f5997635619b7a9cc4b7d9908d languageName: node linkType: hard "babel-plugin-polyfill-regenerator@npm:^0.5.0": - version: 0.5.0 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ef2bcffc7c9a5e4426fc2dbf89bf3a46999a8415c21cd741c3ab3cb4b5ab804aaa3d71ef733f0eda1bcc0b91d9d80f98d33983a66dab9b8bed166ec38f8f8ad1 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.5.2": - version: 0.5.2 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.2" + version: 0.5.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.5" dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.2 + "@babel/helper-define-polyfill-provider": ^0.5.0 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: d962200f604016a9a09bc9b4aaf60a3db7af876bb65bcefaeac04d44ac9d9ec4037cf24ce117760cc141d7046b6394c7eb0320ba9665cb4a2ee64df2be187c93 + checksum: 3a9b4828673b23cd648dcfb571eadcd9d3fadfca0361d0a7c6feeb5a30474e92faaa49f067a6e1c05e49b6a09812879992028ff3ef3446229ff132d6e1de7eb6 languageName: node linkType: hard @@ -26202,32 +21611,40 @@ __metadata: languageName: node linkType: hard -"babel-plugin-react-compiler@npm:^0.0.0-experimental-592953e-20240517": - version: 0.0.0 - resolution: "babel-plugin-react-compiler@npm:0.0.0" - checksum: 6413005e947f9ee089359e354ab279956a6c7d979c397b3fcc311fe9d6599a83d4343f2de5cb6aebf38b1ebc1dfdc05b5fe1ea37b84c4ff891b31d6d1d59b899 +"babel-plugin-react-compiler@npm:0.0.0-experimental-592953e-20240517": + version: 0.0.0-experimental-592953e-20240517 + resolution: "babel-plugin-react-compiler@npm:0.0.0-experimental-592953e-20240517" + dependencies: + "@babel/generator": 7.2.0 + "@babel/types": ^7.19.0 + chalk: 4 + invariant: ^2.2.4 + pretty-format: ^24 + zod: ^3.22.4 + zod-validation-error: ^2.1.0 + checksum: f21ff9fc0139de33f94482d600542557d34b3ecb5e70e7f765b4b912a3a15d922cd3c5bcd46ffba4a7c0e6a075d6b93629105c2b8d19d8b6ce61ca8000bde653 languageName: node linkType: hard "babel-plugin-react-native-web@npm:~0.19.10": - version: 0.19.12 - resolution: "babel-plugin-react-native-web@npm:0.19.12" - checksum: bf5378f9ed3477f0165e989cc389da60681032680c5b8147f88905c65bba5267bb296943f87d4885c22a3fcdebfa815f7e7c25ae8f8192c4579f291994a1d946 + version: 0.19.13 + resolution: "babel-plugin-react-native-web@npm:0.19.13" + checksum: 899165793b6e3416b87e830633d98b2bec6e29c89d838b86419a5a6e40b7042d3db98098393dfe3fc9be507054f5bcbf83c420cccfe5dc47c7d962acd1d313d5 languageName: node linkType: hard "babel-plugin-styled-components@npm:>= 1.12.0": - version: 2.0.7 - resolution: "babel-plugin-styled-components@npm:2.0.7" + version: 2.1.4 + resolution: "babel-plugin-styled-components@npm:2.1.4" dependencies: - "@babel/helper-annotate-as-pure": ^7.16.0 - "@babel/helper-module-imports": ^7.16.0 - babel-plugin-syntax-jsx: ^6.18.0 - lodash: ^4.17.11 - picomatch: ^2.3.0 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-module-imports": ^7.22.5 + "@babel/plugin-syntax-jsx": ^7.22.5 + lodash: ^4.17.21 + picomatch: ^2.3.1 peerDependencies: styled-components: ">= 2" - checksum: 80b06b10db02d749432a0ac43a5feedd686f6b648628d7433a39b1844260b2b7c72431f6e705c82636ee025fcfd4f6c32fc05677e44033b8a39ddcd4488b3147 + checksum: d791aed68d975dae4f73055f86cd47afa99cb402b8113acdaf5678c8b6fba2cbc15543f2debe8ed09becb198aae8be2adfe268ad41f4bca917288e073a622bf8 languageName: node linkType: hard @@ -26293,30 +21710,33 @@ __metadata: linkType: hard "babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" dependencies: "@babel/plugin-syntax-async-generators": ^7.8.4 "@babel/plugin-syntax-bigint": ^7.8.3 - "@babel/plugin-syntax-class-properties": ^7.8.3 - "@babel/plugin-syntax-import-meta": ^7.8.3 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-import-attributes": ^7.24.7 + "@babel/plugin-syntax-import-meta": ^7.10.4 "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 "@babel/plugin-syntax-object-rest-spread": ^7.8.3 "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-top-level-await": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: d118c2742498c5492c095bc8541f4076b253e705b5f1ad9a2e7d302d81a84866f0070346662355c8e25fc02caa28dc2da8d69bcd67794a0d60c4d6fab6913cc8 + checksum: 9f93fac975eaba296c436feeca1031ca0539143c4066eaf5d1ba23525a31850f03b651a1049caea7287df837a409588c8252c15627ad3903f17864c8e25ed64b languageName: node linkType: hard "babel-preset-expo@npm:~11.0.13": - version: 11.0.14 - resolution: "babel-preset-expo@npm:11.0.14" + version: 11.0.15 + resolution: "babel-preset-expo@npm:11.0.15" dependencies: "@babel/plugin-proposal-decorators": ^7.12.9 "@babel/plugin-transform-export-namespace-from": ^7.22.11 @@ -26325,10 +21745,10 @@ __metadata: "@babel/preset-react": ^7.22.15 "@babel/preset-typescript": ^7.23.0 "@react-native/babel-preset": 0.74.87 - babel-plugin-react-compiler: ^0.0.0-experimental-592953e-20240517 + babel-plugin-react-compiler: 0.0.0-experimental-592953e-20240517 babel-plugin-react-native-web: ~0.19.10 react-refresh: ^0.14.2 - checksum: b41c3fab6592fceb4ae020a0a79cb8e1d2e0354daca1d468e7db2c3033a17d654ac4627fb0b26f728809bc9810b7a1065dfd2a8a1f05fdbc83bacdc90e8e79dd + checksum: 84e36d06e0ff4fda65d4f5fbed99e29030677e847de0f81fe93ba17772b7887b292d82ec5d77be8c81c8af6a5c46c4f07016a05f0319e949c3b4e48e09cb26e2 languageName: node linkType: hard @@ -26369,19 +21789,7 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.4.3": - version: 29.5.0 - resolution: "babel-preset-jest@npm:29.5.0" - dependencies: - babel-plugin-jest-hoist: ^29.5.0 - babel-preset-current-node-syntax: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 5566ca2762766c9319b4973d018d2fa08c0fcf6415c72cc54f4c8e7199e851ea8f5e6c6730f03ed7ed44fc8beefa959dd15911f2647dee47c615ff4faeddb1ad - languageName: node - linkType: hard - -"babel-preset-jest@npm:^29.6.3": +"babel-preset-jest@npm:^29.4.3, babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" dependencies: @@ -26489,6 +21897,13 @@ __metadata: languageName: node linkType: hard +"bare-events@npm:^2.2.0": + version: 2.5.0 + resolution: "bare-events@npm:2.5.0" + checksum: 5aa10716e7f33c5dfc471fd657eee2a33f2db0f78b3c83b5cdd1a45a7e7871114a69460ea96cd838807c55eb470b9e53dd0dfda8c83cced1352cc8253cebff48 + languageName: node + linkType: hard + "base-64@npm:0.1.0": version: 0.1.0 resolution: "base-64@npm:0.1.0" @@ -26558,34 +21973,45 @@ __metadata: languageName: node linkType: hard -"bfj@npm:^5.2.1": - version: 5.3.1 - resolution: "bfj@npm:5.3.1" +"bfj@npm:^7.0.2": + version: 7.1.0 + resolution: "bfj@npm:7.1.0" dependencies: - bluebird: ^3.5.1 - check-types: ^7.3.0 - hoopy: ^0.1.2 - tryer: ^1.0.0 - checksum: c628660d36502bbd3485f952b344340cbec1c2f77e2679c416a6b0043ba80b0e3eb150237cceceecc7bedbd1bb60e2ee66e41e6c76d01aed164c779034afa900 + bluebird: ^3.7.2 + check-types: ^11.2.3 + hoopy: ^0.1.4 + jsonpath: ^1.1.1 + tryer: ^1.0.1 + checksum: 36da9ed36c60f377a3f43bb0433092af7dc40442914b8155a1330ae86b1905640baf57e9c195ab83b36d6518b27cf8ed880adff663aa444c193be149e027d722 languageName: node linkType: hard -"bfj@npm:^7.0.2": - version: 7.0.2 - resolution: "bfj@npm:7.0.2" +"bfj@npm:^8.0.0": + version: 8.0.0 + resolution: "bfj@npm:8.0.0" dependencies: - bluebird: ^3.5.5 - check-types: ^11.1.1 + bluebird: ^3.7.2 + check-types: ^11.2.3 hoopy: ^0.1.4 + jsonpath: ^1.1.1 tryer: ^1.0.1 - checksum: 0ca673234170eb3dcf00fb1d867ba274729ab05779dd19b35628c49da7adc32472b5f0bca0554ffdca15b094f9b36f16f2a8992ba8884ebd1d351d7f27abee7b + checksum: f22d49cd2661a92e7526015edac0e02858a881a36438fe4e67df320dddc08cba09e197a7e128f282abc2c26127f5abb3ca8e8b7eff0737df20e5b8c4ee6273e9 + languageName: node + linkType: hard + +"bidi-js@npm:^1.0.2": + version: 1.0.3 + resolution: "bidi-js@npm:1.0.3" + dependencies: + require-from-string: ^2.0.2 + checksum: 877c5dcfd69a35fd30fee9e49a03faf205a7a4cd04a38af7648974a659cab7b1cd51fa881d7957c07bd1fc5adf22b90a56da3617bb0885ee69d58ff41117658c languageName: node linkType: hard "big-integer@npm:1.6.x, big-integer@npm:^1.6.44": - version: 1.6.51 - resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 + version: 1.6.52 + resolution: "big-integer@npm:1.6.52" + checksum: 6e86885787a20fed96521958ae9086960e4e4b5e74d04f3ef7513d4d0ad631a9f3bde2730fc8aaa4b00419fc865f6ec573e5320234531ef37505da7da192c40b languageName: node linkType: hard @@ -26597,16 +22023,16 @@ __metadata: linkType: hard "bignumber.js@npm:^9.0.0": - version: 9.1.1 - resolution: "bignumber.js@npm:9.1.1" - checksum: ad243b7e2f9120b112d670bb3d674128f0bd2ca1745b0a6c9df0433bd2c0252c43e6315d944c2ac07b4c639e7496b425e46842773cf89c6a2dcd4f31e5c4b11e + version: 9.1.2 + resolution: "bignumber.js@npm:9.1.2" + checksum: 582c03af77ec9cb0ebd682a373ee6c66475db94a4325f92299621d544aa4bd45cb45fd60001610e94aef8ae98a0905fa538241d9638d4422d57abbeeac6fadaf languageName: node linkType: hard "binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 languageName: node linkType: hard @@ -26619,10 +22045,10 @@ __metadata: languageName: node linkType: hard -"bintrees@npm:1.0.1": - version: 1.0.1 - resolution: "bintrees@npm:1.0.1" - checksum: 71d00ce450ee7ad080a3c86ae5f05fac841bdf95c0d78f3b3bbf8f754c19d7cb732f0f9213a46ed27cbec47eb124ffe2b686bef870718a4b9918c23210b55c73 +"bintrees@npm:1.0.2": + version: 1.0.2 + resolution: "bintrees@npm:1.0.2" + checksum: 56a52b7d3634e30002b1eda740d2517a22fa8e9e2eb088e919f37c030a0ed86e364ab59e472fc770fc8751308054bb1c892979d150e11d9e11ac33bcc1b5d16e languageName: node linkType: hard @@ -26653,7 +22079,7 @@ __metadata: languageName: node linkType: hard -"bluebird@npm:^3.3.3, bluebird@npm:^3.5.0, bluebird@npm:^3.5.1, bluebird@npm:^3.5.5, bluebird@npm:^3.7.2": +"bluebird@npm:^3.3.3, bluebird@npm:^3.5.0, bluebird@npm:^3.5.1, bluebird@npm:^3.7.2": version: 3.7.2 resolution: "bluebird@npm:3.7.2" checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef @@ -26674,14 +22100,14 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^5.0.0, bn.js@npm:^5.2.1": +"bn.js@npm:^5.2.1": version: 5.2.1 resolution: "bn.js@npm:5.2.1" checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 languageName: node linkType: hard -"body-parser@npm:1.20.1, body-parser@npm:^1.19.0": +"body-parser@npm:1.20.1": version: 1.20.1 resolution: "body-parser@npm:1.20.1" dependencies: @@ -26721,6 +22147,26 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:1.20.3, body-parser@npm:^1.19.0": + version: 1.20.3 + resolution: "body-parser@npm:1.20.3" + dependencies: + bytes: 3.1.2 + content-type: ~1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: ~1.6.18 + unpipe: 1.0.0 + checksum: 1a35c59a6be8d852b00946330141c4f142c6af0f970faa87f10ad74f1ee7118078056706a05ae3093c54dabca9cd3770fa62a170a85801da1a4324f04381167d + languageName: node + linkType: hard + "body-scroll-lock@npm:^3.1.5": version: 3.1.5 resolution: "body-scroll-lock@npm:3.1.5" @@ -26729,14 +22175,12 @@ __metadata: linkType: hard "bonjour-service@npm:^1.0.11": - version: 1.1.1 - resolution: "bonjour-service@npm:1.1.1" + version: 1.2.1 + resolution: "bonjour-service@npm:1.2.1" dependencies: - array-flatten: ^2.1.2 - dns-equal: ^1.0.0 fast-deep-equal: ^3.1.3 multicast-dns: ^7.2.5 - checksum: 832d0cf78b91368fac8bb11fd7a714e46f4c4fb1bb14d7283bce614a6fb3aae2f3fe209aba5b4fa051811c1cab6921d073a83db8432fb23292f27dd4161fb0f1 + checksum: b65b3e6e3a07e97f2da5806afb76f3946d5a6426b72e849a0236dc3c9d3612fb8c5359ebade4be7eb63f74a37670c53a53be2ff17f4f709811fda77f600eb25b languageName: node linkType: hard @@ -26832,26 +22276,12 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"brfs@npm:^2.0.2": - version: 2.0.2 - resolution: "brfs@npm:2.0.2" +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" dependencies: - quote-stream: ^1.0.1 - resolve: ^1.1.5 - static-module: ^3.0.2 - through2: ^2.0.0 - bin: - brfs: bin/cmd.js - checksum: ecde84cb9e1398964c575f265bf5d667bf7277bc9f325c940e4655194a2a65901115cdd1bf33aa1cec102cae0fd3a0e2b852dcf23255b94b1bf2fed652a16285 + fill-range: ^7.1.1 + checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69 languageName: node linkType: hard @@ -26885,13 +22315,6 @@ __metadata: languageName: node linkType: hard -"browser-stdout@npm:1.3.1": - version: 1.3.1 - resolution: "browser-stdout@npm:1.3.1" - checksum: b717b19b25952dd6af483e368f9bcd6b14b87740c3d226c2977a65e84666ffd67000bddea7d911f111a9b6ddc822b234de42d52ab6507bce4119a4cc003ef7b3 - languageName: node - linkType: hard - "browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": version: 1.2.0 resolution: "browserify-aes@npm:1.2.0" @@ -26930,12 +22353,13 @@ __metadata: linkType: hard "browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": - version: 4.1.0 - resolution: "browserify-rsa@npm:4.1.0" + version: 4.1.1 + resolution: "browserify-rsa@npm:4.1.1" dependencies: - bn.js: ^5.0.0 - randombytes: ^2.0.1 - checksum: 155f0c135873efc85620571a33d884aa8810e40176125ad424ec9d85016ff105a07f6231650914a760cca66f29af0494087947b7be34880dd4599a0cd3c38e54 + bn.js: ^5.2.1 + randombytes: ^2.1.0 + safe-buffer: ^5.2.1 + checksum: 2628508646331791c29312bbf274c076a237437a17178ea9bdc75c577fb4164a0da0b137deaadf6ade623701332377c5c2ceb0ff6f991c744a576e790ec95852 languageName: node linkType: hard @@ -27039,13 +22463,6 @@ __metadata: languageName: node linkType: hard -"buffer-equal@npm:0.0.1": - version: 0.0.1 - resolution: "buffer-equal@npm:0.0.1" - checksum: ca4b52e6c01143529d957a78cb9a93e4257f172bbab30d9eb87c20ae085ed23c5e07f236ac051202dacbf3d17aba42e1455f84cba21ea79b67d57f2b05e9a613 - languageName: node - linkType: hard - "buffer-fill@npm:^1.0.0": version: 1.0.0 resolution: "buffer-fill@npm:1.0.0" @@ -27054,9 +22471,9 @@ __metadata: linkType: hard "buffer-from@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-from@npm:1.1.1" - checksum: ccc53b69736008bff764497367c4d24879ba7122bc619ee499ff47eef3a5b885ca496e87272e7ebffa0bec3804c83f84041c616f6e3318f40624e27c1d80f045 + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb languageName: node linkType: hard @@ -27105,6 +22522,23 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.2.1 + checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + languageName: node + linkType: hard + +"buildcheck@npm:~0.0.6": + version: 0.0.6 + resolution: "buildcheck@npm:0.0.6" + checksum: ad61759dc98d62e931df2c9f54ccac7b522e600c6e13bdcfdc2c9a872a818648c87765ee209c850f022174da4dd7c6a450c00357c5391705d26b9c5807c2a076 + languageName: node + linkType: hard + "builtins@npm:^1.0.3": version: 1.0.3 resolution: "builtins@npm:1.0.3" @@ -27112,15 +22546,6 @@ __metadata: languageName: node linkType: hard -"builtins@npm:^5.0.0": - version: 5.0.1 - resolution: "builtins@npm:5.0.1" - dependencies: - semver: ^7.0.0 - checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 - languageName: node - linkType: hard - "bull@npm:4.10.4": version: 4.10.4 resolution: "bull@npm:4.10.4" @@ -27137,15 +22562,6 @@ __metadata: languageName: node linkType: hard -"bundle-name@npm:^3.0.0": - version: 3.0.0 - resolution: "bundle-name@npm:3.0.0" - dependencies: - run-applescript: ^5.0.0 - checksum: edf2b1fbe6096ed32e7566947ace2ea937ee427391744d7510a2880c4b9a5b3543d3f6c551236a29e5c87d3195f8e2912516290e638c15bcbede7b37cc375615 - languageName: node - linkType: hard - "busboy@npm:1.6.0, busboy@npm:^1.0.0, busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" @@ -27176,6 +22592,13 @@ __metadata: languageName: node linkType: hard +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a + languageName: node + linkType: hard + "cacache@npm:^15.2.0": version: 15.3.0 resolution: "cacache@npm:15.3.0" @@ -27228,9 +22651,9 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.2": - version: 18.0.3 - resolution: "cacache@npm:18.0.3" +"cacache@npm:^18.0.0, cacache@npm:^18.0.2": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 @@ -27244,7 +22667,7 @@ __metadata: ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 - checksum: b717fd9b36e9c3279bfde4545c3a8f6d5a539b084ee26a9504d48f83694beb724057d26e090b97540f9cc62bea18b9f6cf671c50e18fb7dac60eda9db691714f + checksum: b7422c113b4ec750f33beeca0f426a0024c28e3172f332218f48f963e5b970647fa1ac05679fe5bb448832c51efea9fda4456b9a95c3a1af1105fe6c1833cde2 languageName: node linkType: hard @@ -27268,7 +22691,7 @@ __metadata: languageName: node linkType: hard -"cache-manager@npm:5.2.3, cache-manager@npm:^5.1.0": +"cache-manager@npm:5.2.3": version: 5.2.3 resolution: "cache-manager@npm:5.2.3" dependencies: @@ -27278,6 +22701,18 @@ __metadata: languageName: node linkType: hard +"cache-manager@npm:^5.1.0": + version: 5.7.6 + resolution: "cache-manager@npm:5.7.6" + dependencies: + eventemitter3: ^5.0.1 + lodash.clonedeep: ^4.5.0 + lru-cache: ^10.2.2 + promise-coalesce: ^1.1.2 + checksum: c61d30e2824f99f04af8e14a2e98c2274daa276cce82f64f0ac4c4bd59cf30e1ad9dec4028148206ad729196b242940476602e2f12496366d6f3f4b9da7c24c5 + languageName: node + linkType: hard + "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" @@ -27286,8 +22721,8 @@ __metadata: linkType: hard "cacheable-request@npm:^7.0.2": - version: 7.0.2 - resolution: "cacheable-request@npm:7.0.2" + version: 7.0.4 + resolution: "cacheable-request@npm:7.0.4" dependencies: clone-response: ^1.0.2 get-stream: ^5.1.0 @@ -27296,39 +22731,18 @@ __metadata: lowercase-keys: ^2.0.0 normalize-url: ^6.0.1 responselike: ^2.0.0 - checksum: 6152813982945a5c9989cb457a6c499f12edcc7ade323d2fbfd759abc860bdbd1306e08096916bb413c3c47e812f8e4c0a0cc1e112c8ce94381a960f115bc77f + checksum: 0de9df773fd4e7dd9bd118959878f8f2163867e2e1ab3575ffbecbe6e75e80513dd0c68ba30005e5e5a7b377cc6162bbc00ab1db019bb4e9cb3c2f3f7a6f1ee4 languageName: node linkType: hard "cachedir@npm:^2.3.0": - version: 2.3.0 - resolution: "cachedir@npm:2.3.0" - checksum: ec90cb0f2e6336e266aa748dbadf3da9e0b20e843e43f1591acab7a3f1451337dc2f26cb9dd833ae8cfefeffeeb43ef5b5ff62782a685f4e3c2305dd98482fcb - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.4": - version: 1.0.5 - resolution: "call-bind@npm:1.0.5" - dependencies: - function-bind: ^1.1.2 - get-intrinsic: ^1.2.1 - set-function-length: ^1.1.1 - checksum: 449e83ecbd4ba48e7eaac5af26fea3b50f8f6072202c2dd7c5a6e7a6308f2421abe5e13a3bbd55221087f76320c5e09f25a8fdad1bab2b77c68ae74d92234ea5 + version: 2.4.0 + resolution: "cachedir@npm:2.4.0" + checksum: 43198514eaa61f65b5535ed29ad651f22836fba3868ed58a6a87731f05462f317d39098fa3ac778801c25455483c9b7f32a2fcad1f690a978947431f12a0f4d0 languageName: node linkType: hard -"call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": version: 1.0.7 resolution: "call-bind@npm:1.0.7" dependencies: @@ -27342,9 +22756,9 @@ __metadata: linkType: hard "call-me-maybe@npm:^1.0.1": - version: 1.0.1 - resolution: "call-me-maybe@npm:1.0.1" - checksum: d19e9d6ac2c6a83fb1215718b64c5e233f688ebebb603bdfe4af59cde952df1f2b648530fab555bf290ea910d69d7d9665ebc916e871e0e194f47c2e48e4886b + version: 1.0.2 + resolution: "call-me-maybe@npm:1.0.2" + checksum: 42ff2d0bed5b207e3f0122589162eaaa47ba618f79ad2382fe0ba14d9e49fbf901099a6227440acc5946f86a4953e8aa2d242b330b0a5de4d090bb18f8935cae languageName: node linkType: hard @@ -27415,27 +22829,26 @@ __metadata: linkType: hard "camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": - version: 6.2.0 - resolution: "camelcase@npm:6.2.0" - checksum: 8335cfd0ecc472eae685896a42afd8c9dacd193a91f569120b931c87deb053a1ba82102031b9b48a4dbc1d18066caeacf2e4ace8c3c7f0d02936d348dc0b5a87 + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d languageName: node linkType: hard "camelize@npm:^1.0.0": - version: 1.0.0 - resolution: "camelize@npm:1.0.0" - checksum: 769f8d10071f57b974d9a51dc02f589dd7fb07ea6a7ecde1a57b52ae68657ba61fe85c60d50661b76c7dbb76b6474fbfd3356aee33cf5f025cd7fd6fb2811b73 + version: 1.0.1 + resolution: "camelize@npm:1.0.1" + checksum: 91d8611d09af725e422a23993890d22b2b72b4cabf7239651856950c76b4bf53fe0d0da7c5e4db05180e898e4e647220e78c9fbc976113bd96d603d1fcbfcb99 languageName: node linkType: hard -"camelo@npm:^1.0.0": - version: 1.1.14 - resolution: "camelo@npm:1.1.14" +"camelo@npm:^1.2.1": + version: 1.2.1 + resolution: "camelo@npm:1.2.1" dependencies: - mocha: ^8.2.0 regex-escape: ^3.4.10 uc-first-array: ^1.1.10 - checksum: d94eef63c61a130b13ac323a8d8ea17262d203e605cc59566c5d30374b6b33b6f0cc916bdef75e89ce92df9342843a8cc4d051a9cb3e128ec647037f08fc432a + checksum: d2907d58dd3d9956fe56d43bd4e4ac5bd5a84d0a55a1da974d540c6eeb8d41161f0ee3c7380cbc16a989fc423637c948838927b12f084eec989edb62e3f0da20 languageName: node linkType: hard @@ -27451,17 +22864,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001219, caniuse-lite@npm:^1.0.30001464": - version: 1.0.30001597 - resolution: "caniuse-lite@npm:1.0.30001597" - checksum: ec6a2cf0fd49f37d16732e6595939fc80a125dcd188a950bc936c61b4ad53becc0fe51bf2d9a625415de7b1cb23bd835f220e8b68d8ab951a940edeea65476fd - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001579": - version: 1.0.30001649 - resolution: "caniuse-lite@npm:1.0.30001649" - checksum: 7952512a243f22c942e0e99249def19d781ad1900db101f2d8de9d83de37db000a7dc7f226c9c99134001975e22852becf1677539c24c7ecae53467b681c400f +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001219, caniuse-lite@npm:^1.0.30001579, caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001669 + resolution: "caniuse-lite@npm:1.0.30001669" + checksum: 8ed0c69d0c6aa3b1cbc5ba4e5f5330943e7b7165e257f6955b8b73f043d07ad922265261f2b54d9bbaf02886bbdba5e6f5b16662310a13f91f17035af3212de1 languageName: node linkType: hard @@ -27538,13 +22944,12 @@ __metadata: linkType: hard "cfb@npm:^1.1.4": - version: 1.2.0 - resolution: "cfb@npm:1.2.0" + version: 1.2.2 + resolution: "cfb@npm:1.2.2" dependencies: - adler-32: ~1.2.0 + adler-32: ~1.3.0 crc-32: ~1.2.0 - printj: ~1.1.2 - checksum: 3c1bb1a7459bdff5a76c4fd39b1845c515634be1ca23a32c5eecd42dfd4f9e96bd162920a9664a9d87bc7082a00fe65d1a755404041def37af5699e7ec776f72 + checksum: cfb63a7d630a7fa415c1b25655dca66666584f29c95fb0ee90866ada1a28090857827f2ba70a9a50df28bdce05728ae58d495bce417249f305ef7b3c85840024 languageName: node linkType: hard @@ -27581,7 +22986,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^1.0.0, chalk@npm:^1.1.1, chalk@npm:^1.1.3": +"chalk@npm:^1.0.0, chalk@npm:^1.1.3": version: 1.1.3 resolution: "chalk@npm:1.1.3" dependencies: @@ -27594,7 +22999,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.4.1, chalk@npm:^2.4.2": +"chalk@npm:^2.0.1, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -27734,68 +23139,47 @@ __metadata: languageName: node linkType: hard -"check-types@npm:^11.1.1": - version: 11.1.2 - resolution: "check-types@npm:11.1.2" - checksum: 6c339a5dfe326e34a5275016c7f9464665405cd79007c057852acd677d265ddfe36236ad5567bd1e601ea88fa78bf1f882b6bc3dc7c5616c26f6b54b2c0ef4fc - languageName: node - linkType: hard - -"check-types@npm:^7.3.0": - version: 7.4.0 - resolution: "check-types@npm:7.4.0" - checksum: 1a417a70410b6676cea5a32d5785eefe3e3e9ef814ed6434934cc766a762982007e7ef6e30a9bf92aa0858e266572479eba8a1e894056743e91a9ebdac3c68c3 +"check-types@npm:^11.2.3": + version: 11.2.3 + resolution: "check-types@npm:11.2.3" + checksum: f99ff09ae65e63cfcfa40a1275c0a70d8c43ffbf9ac35095f3bf030cc70361c92e075a9975a1144329e50b4fe4620be6bedb4568c18abc96071a3e23aed3ed8e languageName: node linkType: hard -"cheerio-select@npm:^1.5.0": - version: 1.5.0 - resolution: "cheerio-select@npm:1.5.0" +"cheerio-select@npm:^2.1.0": + version: 2.1.0 + resolution: "cheerio-select@npm:2.1.0" dependencies: - css-select: ^4.1.3 - css-what: ^5.0.1 - domelementtype: ^2.2.0 - domhandler: ^4.2.0 - domutils: ^2.7.0 - checksum: d4506d8b9ad330a18f9de3a5a22138d0804063e92aac2fc020384cc52ab86d2194d2ae614fc87f0e2a62b6a6dd0c28ad23669cec64331172a9f99ad604863010 + boolbase: ^1.0.0 + css-select: ^5.1.0 + css-what: ^6.1.0 + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + domutils: ^3.0.1 + checksum: 843d6d479922f28a6c5342c935aff1347491156814de63c585a6eb73baf7bb4185c1b4383a1195dca0f12e3946d737c7763bcef0b9544c515d905c5c44c5308b languageName: node linkType: hard "cheerio@npm:^1.0.0-rc.3": - version: 1.0.0-rc.10 - resolution: "cheerio@npm:1.0.0-rc.10" - dependencies: - cheerio-select: ^1.5.0 - dom-serializer: ^1.3.2 - domhandler: ^4.2.0 - htmlparser2: ^6.1.0 - parse5: ^6.0.1 - parse5-htmlparser2-tree-adapter: ^6.0.1 - tslib: ^2.2.0 - checksum: ace2f9c5809737534b1320d11d48762013694fa905b4deacac81a634edac178c1b0534f79d7b1896a88ce489db6cb539f222317996b21c8b6923ce413dcc1a2f - languageName: node - linkType: hard - -"chokidar@npm:3.5.1": - version: 3.5.1 - resolution: "chokidar@npm:3.5.1" + version: 1.0.0 + resolution: "cheerio@npm:1.0.0" dependencies: - anymatch: ~3.1.1 - braces: ~3.0.2 - fsevents: ~2.3.1 - glob-parent: ~5.1.0 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.5.0 - dependenciesMeta: - fsevents: - optional: true - checksum: b7774e6e3aeca084d39e8542041555a11452414c744122436101243f89580fad97154ae11525e46bfa816313ae32533e2a88e8587e4d50b14ea716a9e6538978 + cheerio-select: ^2.1.0 + dom-serializer: ^2.0.0 + domhandler: ^5.0.3 + domutils: ^3.1.0 + encoding-sniffer: ^0.2.0 + htmlparser2: ^9.1.0 + parse5: ^7.1.2 + parse5-htmlparser2-tree-adapter: ^7.0.0 + parse5-parser-stream: ^7.1.2 + undici: ^6.19.5 + whatwg-mimetype: ^4.0.0 + checksum: ade4344811dcad5b5d78392506ef6bab1900c13a65222c869e745a38370d287f4b94838ac6d752883a84d937edb62b5bd0deaf70e6f38054acbfe3da4881574a languageName: node linkType: hard -"chokidar@npm:3.5.3, chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": +"chokidar@npm:3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -27814,7 +23198,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.1": +"chokidar@npm:^3.4.2, chokidar@npm:^3.5.1, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -27833,6 +23217,15 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^4.0.0": + version: 4.0.1 + resolution: "chokidar@npm:4.0.1" + dependencies: + readdirp: ^4.0.1 + checksum: 193da9786b0422a895d59c7552195d15c6c636e6a2293ae43d09e34e243e24ccd02d693f007c767846a65abbeae5fea6bfacb8fc2ddec4ea4d397620d552010d + languageName: node + linkType: hard + "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -27862,11 +23255,9 @@ __metadata: linkType: hard "chrome-trace-event@npm:^1.0.2": - version: 1.0.2 - resolution: "chrome-trace-event@npm:1.0.2" - dependencies: - tslib: ^1.9.0 - checksum: a104606fd07e6191848fa15d4031ac41c1715d025074574bdbb27d998a20d75d860a2060a5aca840bfbf97ec2ef6b72df9b387ed4109a8fc6eb5c362477c9294 + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: fcbbd9dd0cd5b48444319007cc0c15870fd8612cc0df320908aa9d5e8a244084d48571eb28bf3c58c19327d2c5838f354c2d89fac3956d8e992273437401ac19 languageName: node linkType: hard @@ -27877,17 +23268,10 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.1.1, ci-info@npm:^3.2.0": - version: 3.3.0 - resolution: "ci-info@npm:3.3.0" - checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 - languageName: node - linkType: hard - -"ci-info@npm:^3.3.0": - version: 3.8.0 - resolution: "ci-info@npm:3.8.0" - checksum: d0a4d3160497cae54294974a7246202244fff031b0a6ea20dd57b10ec510aa17399c41a1b0982142c105f3255aff2173e5c0dd7302ee1b2f28ba3debda375098 +"ci-info@npm:^3.2.0, ci-info@npm:^3.3.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 languageName: node linkType: hard @@ -27901,24 +23285,19 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 977f3f042bd4f08e368c890d91eecfbc4f91da0bc009a3c557bc4dfbf32022ad1141244ac1178d44de70fc9f3dea7add7cd9a658a34b9fae98a55d8f92331ce5 - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^1.2.2": - version: 1.2.3 - resolution: "cjs-module-lexer@npm:1.2.3" - checksum: 5ea3cb867a9bb609b6d476cd86590d105f3cfd6514db38ff71f63992ab40939c2feb68967faa15a6d2b1f90daa6416b79ea2de486e9e2485a6f8b66a21b4fb0a +"citty@npm:^0.1.6": + version: 0.1.6 + resolution: "citty@npm:0.1.6" + dependencies: + consola: ^3.2.3 + checksum: 3fbcaaea92d328deddb5aba7d629d9076d4f1aa0338f59db7ea647a8f51eedc14b7f6218c87ad03c9e3c126213ba87d13d7774f9c30d64209f4b074aa83bd6ab languageName: node linkType: hard -"cjs-module-lexer@npm:^1.2.3": - version: 1.3.1 - resolution: "cjs-module-lexer@npm:1.3.1" - checksum: 75f20ac264a397ea5c63f9c2343a51ab878043666468f275e94862f7180ec1d764a400ec0c09085dcf0db3193c74a8b571519abd2bf4be0d2be510d1377c8d4b +"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.2, cjs-module-lexer@npm:^1.2.3": + version: 1.4.1 + resolution: "cjs-module-lexer@npm:1.4.1" + checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 languageName: node linkType: hard @@ -27940,26 +23319,26 @@ __metadata: languageName: node linkType: hard -"classnames@npm:2.2.6, classnames@npm:^2.2.5, classnames@npm:^2.2.6": +"classnames@npm:2.2.6": version: 2.2.6 resolution: "classnames@npm:2.2.6" checksum: 09a4fda780158aa8399079898eabeeca0c48c28641d9e4de140db7412e5e346843039ded1af0152f755afc2cc246ff8c3d6f227bf0dcb004e070b7fa14ec54cc languageName: node linkType: hard -"classnames@npm:^2.3.1": - version: 2.3.2 - resolution: "classnames@npm:2.3.2" - checksum: 2c62199789618d95545c872787137262e741f9db13328e216b093eea91c85ef2bfb152c1f9e63027204e2559a006a92eb74147d46c800a9f96297ae1d9f96f4e +"classnames@npm:^2.2.5, classnames@npm:^2.2.6, classnames@npm:^2.3.1": + version: 2.5.1 + resolution: "classnames@npm:2.5.1" + checksum: da424a8a6f3a96a2e87d01a432ba19315503294ac7e025f9fece656db6b6a0f7b5003bb1fbb51cbb0d9624d964f1b9bb35a51c73af9b2434c7b292c42231c1e5 languageName: node linkType: hard "clean-css@npm:^5.2.2": - version: 5.3.0 - resolution: "clean-css@npm:5.3.0" + version: 5.3.3 + resolution: "clean-css@npm:5.3.3" dependencies: source-map: ~0.6.0 - checksum: 29e15ef4678e1eb571546128cb7a922c5301c1bd12ee30a6e8141c72789b8130739a9a5b335435a6ee108400336a561ebd9faabe1a7d8808eb48d39cff390cd7 + checksum: 941987c14860dd7d346d5cf121a82fd2caf8344160b1565c5387f7ccca4bbcaf885bace961be37c4f4713ce2d8c488dd89483c1add47bb779790edbfdcc79cbc languageName: node linkType: hard @@ -27996,15 +23375,15 @@ __metadata: linkType: hard "cli-color@npm:^2.0.0, cli-color@npm:^2.0.1": - version: 2.0.2 - resolution: "cli-color@npm:2.0.2" + version: 2.0.4 + resolution: "cli-color@npm:2.0.4" dependencies: d: ^1.0.1 - es5-ext: ^0.10.59 + es5-ext: ^0.10.64 es6-iterator: ^2.0.3 memoizee: ^0.4.15 timers-ext: ^0.1.7 - checksum: a1d8cb11128bb02fbffbccc92eb137a1fc280a04c50f125a884c03bfef19b8a0832636d023abd0a1c326618673ee2555785d10261daf65b840ea514da81cfe8e + checksum: ac78b5440520072b0220db7ef32958c640f8197c777e0981c6c94233039ab3891dcf5ccfc1fee52f55aa9debb9703d5191657d95e2e135f0a42d2bb737ab9030 languageName: node linkType: hard @@ -28044,7 +23423,7 @@ __metadata: languageName: node linkType: hard -"cli-highlight@npm:^2.1.10": +"cli-highlight@npm:^2.1.11": version: 2.1.11 resolution: "cli-highlight@npm:2.1.11" dependencies: @@ -28069,21 +23448,14 @@ __metadata: languageName: node linkType: hard -"cli-spinners@npm:2.6.1, cli-spinners@npm:^2.5.0": +"cli-spinners@npm:2.6.1": version: 2.6.1 resolution: "cli-spinners@npm:2.6.1" checksum: 423409baaa7a58e5104b46ca1745fbfc5888bbd0b0c5a626e052ae1387060839c8efd512fb127e25769b3dc9562db1dc1b5add6e0b93b7ef64f477feb6416a45 languageName: node linkType: hard -"cli-spinners@npm:^2.0.0": - version: 2.8.0 - resolution: "cli-spinners@npm:2.8.0" - checksum: 42bc69127706144b83b25da27e0719bdd8294efe43018e1736928a8f78a26e8d2b4dcd39af4a6401526ca647e99e302ad2b29bf19e67d1db403b977aca6abeb7 - languageName: node - linkType: hard - -"cli-spinners@npm:^2.9.2": +"cli-spinners@npm:^2.0.0, cli-spinners@npm:^2.5.0, cli-spinners@npm:^2.9.2": version: 2.9.2 resolution: "cli-spinners@npm:2.9.2" checksum: 1bd588289b28432e4676cb5d40505cfe3e53f2e4e10fbe05c8a710a154d6fe0ce7836844b00d6858f740f2ffe67cdc36e0fce9c7b6a8430e80e6388d5aa4956c @@ -28091,15 +23463,15 @@ __metadata: linkType: hard "cli-table3@npm:^0.6.0, cli-table3@npm:^0.6.1, cli-table3@npm:~0.6.1": - version: 0.6.2 - resolution: "cli-table3@npm:0.6.2" + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" dependencies: "@colors/colors": 1.5.0 string-width: ^4.2.0 dependenciesMeta: "@colors/colors": optional: true - checksum: 2f82391698b8a2a2a5e45d2adcfea5d93e557207f90455a8d4c1aac688e9b18a204d9eb4ba1d322fa123b17d64ea3dc5e11de8b005529f3c3e7dbeb27cb4d9be + checksum: ab7afbf4f8597f1c631f3ee6bb3481d0bfeac8a3b81cffb5a578f145df5c88003b6cfff46046a7acae86596fdd03db382bfa67f20973b6b57425505abc47e42c languageName: node linkType: hard @@ -28212,11 +23584,11 @@ __metadata: linkType: hard "clone-response@npm:^1.0.2": - version: 1.0.2 - resolution: "clone-response@npm:1.0.2" + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" dependencies: mimic-response: ^1.0.0 - checksum: 2d0e61547fc66276e0903be9654ada422515f5a15741691352000d47e8c00c226061221074ce2c0064d12e975e84a8687cfd35d8b405750cb4e772f87b256eda + checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e languageName: node linkType: hard @@ -28234,14 +23606,7 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^1.1.0": - version: 1.1.1 - resolution: "clsx@npm:1.1.1" - checksum: ff052650329773b9b245177305fc4c4dc3129f7b2be84af4f58dc5defa99538c61d4207be7419405a5f8f3d92007c954f4daba5a7b74e563d5de71c28c830063 - languageName: node - linkType: hard - -"clsx@npm:^1.2.1": +"clsx@npm:^1.1.0, clsx@npm:^1.2.1": version: 1.2.1 resolution: "clsx@npm:1.2.1" checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 @@ -28249,16 +23614,16 @@ __metadata: linkType: hard "clsx@npm:^2.0.0": - version: 2.0.0 - resolution: "clsx@npm:2.0.0" - checksum: a2cfb2351b254611acf92faa0daf15220f4cd648bdf96ce369d729813b85336993871a4bf6978ddea2b81b5a130478339c20d9d0b5c6fc287e5147f0c059276e + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: acd3e1ab9d8a433ecb3cc2f6a05ab95fe50b4a3cfc5ba47abb6cbf3754585fcb87b84e90c822a1f256c4198e3b41c7f6c391577ffc8678ad587fc0976b24fd57 languageName: node linkType: hard "cluster-key-slot@npm:^1.1.0": - version: 1.1.0 - resolution: "cluster-key-slot@npm:1.1.0" - checksum: fc953c75209b1ef9088081bab4e40a0b2586491c974ab93460569c014515ca5a2e31c043f185285e177007162fc353d07836d98f570c171dbe055775430e495b + version: 1.1.2 + resolution: "cluster-key-slot@npm:1.1.2" + checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681 languageName: node linkType: hard @@ -28284,8 +23649,8 @@ __metadata: linkType: hard "code-push@npm:^4.2.1": - version: 4.2.1 - resolution: "code-push@npm:4.2.1" + version: 4.2.2 + resolution: "code-push@npm:4.2.2" dependencies: appcenter-file-upload-client: 0.1.0 proxy-agent: ^6.3.0 @@ -28293,14 +23658,14 @@ __metadata: slash: ^3.0.0 superagent: ^8.0.0 yazl: ^2.5.1 - checksum: b62c319f3cef8cc99023a42c69ccbae8a33e4e831a5be8dace85722be4dc4b97d9ef2be586ec06bc4a1a8e97707b18b9885e1a176cdc898711ae68d2a51c9b15 + checksum: bf34b3772e19f2741f1f37205656247d87c1b51fb9270465f120a009aba19d95473e65496a710d194afcf3deaea6e100d409e02c3a1109878827f5b6c984110c languageName: node linkType: hard "codemirror@npm:^5.65.11": - version: 5.65.16 - resolution: "codemirror@npm:5.65.16" - checksum: 1c5036bfffcce19b1ff91d8b158dcb45faba27047c4093f55ea7ad1165975179eb47c9ef604baa9c4f4ea6bf9817886c767f33e72fa9c62710404029be3c4744 + version: 5.65.18 + resolution: "codemirror@npm:5.65.18" + checksum: 950015d587e0790cceae157423bbc70bf1da8256050c8f6739fe967045b050e22c63b332de6388ed6d9526d253a834806ace76c875006fc8078e2c15c9f275a7 languageName: node linkType: hard @@ -28332,9 +23697,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: 4efe0a1fccd517b65478a2364b33dadd0a43fc92a56f59aaece9b6186fe5177b2de471253587de7c91516f07c7268c2f6770b6cbcffc0e0ece353b766ec87e55 + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da languageName: node linkType: hard @@ -28370,7 +23735,7 @@ __metadata: languageName: node linkType: hard -"color-string@npm:^1.5.3, color-string@npm:^1.6.0, color-string@npm:^1.9.0": +"color-string@npm:^1.6.0, color-string@npm:^1.9.0, color-string@npm:^1.9.1": version: 1.9.1 resolution: "color-string@npm:1.9.1" dependencies: @@ -28409,34 +23774,27 @@ __metadata: languageName: node linkType: hard -"colord@npm:^2.9.1": +"colord@npm:^2.9.3": version: 2.9.3 resolution: "colord@npm:2.9.3" checksum: 95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 languageName: node linkType: hard -"colorette@npm:^1.0.7, colorette@npm:^1.2.0, colorette@npm:^1.2.2, colorette@npm:^1.4.0": +"colorette@npm:^1.0.7, colorette@npm:^1.2.0, colorette@npm:^1.2.2": version: 1.4.0 resolution: "colorette@npm:1.4.0" checksum: 01c3c16058b182a4ab4c126a65a75faa4d38a20fa7c845090b25453acec6c371bb2c5dceb0a2338511f17902b9d1a9af0cadd8509c9403894b79311032c256c3 languageName: node linkType: hard -"colorette@npm:^2.0.10, colorette@npm:^2.0.19, colorette@npm:^2.0.20": +"colorette@npm:^2.0.10, colorette@npm:^2.0.16, colorette@npm:^2.0.20": version: 2.0.20 resolution: "colorette@npm:2.0.20" checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d languageName: node linkType: hard -"colorette@npm:^2.0.16": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 - languageName: node - linkType: hard - "colorspace@npm:1.1.x": version: 1.1.4 resolution: "colorspace@npm:1.1.4" @@ -28487,6 +23845,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^10.0.0": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 + languageName: node + linkType: hard + "commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.20.3": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -28549,17 +23914,17 @@ __metadata: languageName: node linkType: hard -"common-tags@npm:1.8.2": - version: 1.8.2 - resolution: "common-tags@npm:1.8.2" - checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: fdb3c4f54e51e70d417ccd950c07f757582de800c0678ca388aedefefc84982039f346f9fd9a1252d08d2da9e9ef4019f580a1d1d3a10da031e4bb3c924c5818 languageName: node linkType: hard -"common-tags@npm:^1.8.0": - version: 1.8.0 - resolution: "common-tags@npm:1.8.0" - checksum: fb0cc9420d149176f2bd2b1fc9e6df622cd34eccaca60b276aa3253a7c9241e8a8ed1ec0702b2679eba7e47aeef721869c686bbd7257b75b5c44993c8462cd7f +"common-tags@npm:1.8.2, common-tags@npm:^1.8.0": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff languageName: node linkType: hard @@ -28578,50 +23943,40 @@ __metadata: linkType: hard "component-emitter@npm:^1.2.0, component-emitter@npm:^1.3.0": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b + version: 1.3.1 + resolution: "component-emitter@npm:1.3.1" + checksum: 94550aa462c7bd5a61c1bc480e28554aa306066930152d1b1844a0dd3845d4e5db7e261ddec62ae184913b3e59b55a2ad84093b9d3596a8f17c341514d6c483d languageName: node linkType: hard "component-type@npm:^1.2.1": - version: 1.2.1 - resolution: "component-type@npm:1.2.1" - checksum: 41a81f87425088c072dc99b7bd06d8c81057047a599955572bfa7f320e1f4d0b38422b2eee922e0ac6e4132376c572673dbf5eb02717898173ec11512bc06b34 - languageName: node - linkType: hard - -"compress-brotli@npm:^1.3.8": - version: 1.3.8 - resolution: "compress-brotli@npm:1.3.8" - dependencies: - "@types/json-buffer": ~3.0.0 - json-buffer: ~3.0.1 - checksum: de7589d692d40eb362f6c91070b5e51bc10b05a89eabb4a7c76c1aa21b625756f8c101c6999e4df0c4dc6199c5ca2e1353573bfdcca5615810f27485394162a5 + version: 1.2.2 + resolution: "component-type@npm:1.2.2" + checksum: ca5a9886a961985b9ebcc0a5b23f2526506eced1c2c932648e5f8960db22fffcc3a77442013c6aef0b5afa8e6b9de02ae2a23ce5c967374edaf99d74fd6d6c3e languageName: node linkType: hard -"compress-commons@npm:^4.1.0": - version: 4.1.1 - resolution: "compress-commons@npm:4.1.1" +"compress-commons@npm:^4.1.2": + version: 4.1.2 + resolution: "compress-commons@npm:4.1.2" dependencies: buffer-crc32: ^0.2.13 crc32-stream: ^4.0.2 normalize-path: ^3.0.0 readable-stream: ^3.6.0 - checksum: 0176483211a7304a4a8aa52dbcc149a4c9181ac8a04bfbcc3d1a379174bf5fa56c3b15cec19e5ae3d31f1b1ce35ebb275b792b867000c77bac7162ce4e0ca268 + checksum: b50c4b5d6b8917ea164eef81d414b1824f27e02427f9266926c80aad55f9e15f81f74c274770773c2b732c22d1081b81dedce4f133271a466151f7f36b8e9dc9 languageName: node linkType: hard "compress-commons@npm:^5.0.1": - version: 5.0.1 - resolution: "compress-commons@npm:5.0.1" + version: 5.0.3 + resolution: "compress-commons@npm:5.0.3" dependencies: crc-32: ^1.2.0 crc32-stream: ^5.0.0 normalize-path: ^3.0.0 readable-stream: ^3.6.0 - checksum: 65a68e56211a8d1dbe9dab0d35f1bd60a4df27aa01e6c3f0883080263e228c460758bab4f083637a380d4a96d2326722972a42ea1951360cc69728a3915f209f + checksum: a88c58bbde4859036396209d36928003ea3494c713e9476af51c2f720d299b96c46ed966a86707aa5dc07672c850291ed1a6802ce37dd2b532f9733b600f00b7 languageName: node linkType: hard @@ -28649,14 +24004,7 @@ __metadata: languageName: node linkType: hard -"compute-scroll-into-view@npm:^1.0.13, compute-scroll-into-view@npm:^1.0.16": - version: 1.0.17 - resolution: "compute-scroll-into-view@npm:1.0.17" - checksum: b20c05a10c37813c5a6e4bf053c00f65c88d23afed7a6bd7a2a69e05e2ffc2df3483ecfe407d36bf16b8cec8be21ae1966c9c523093a03117e567156cd79a51e - languageName: node - linkType: hard - -"compute-scroll-into-view@npm:^1.0.17": +"compute-scroll-into-view@npm:^1.0.13, compute-scroll-into-view@npm:^1.0.17, compute-scroll-into-view@npm:^1.0.20": version: 1.0.20 resolution: "compute-scroll-into-view@npm:1.0.20" checksum: f15fab29221953620735393ac1866541aab0d27d28078bedbba071a291ee9c8cc1a72bee302cf0bc06ed83c5e55afb74ebcbd634a63671ba33cf1fb1c51d3308 @@ -28677,7 +24025,7 @@ __metadata: languageName: node linkType: hard -"concat-stream@npm:^1.4.7, concat-stream@npm:^1.5.2, concat-stream@npm:^1.6.2, concat-stream@npm:~1.6.0": +"concat-stream@npm:^1.4.7, concat-stream@npm:^1.5.2, concat-stream@npm:^1.6.2": version: 1.6.2 resolution: "concat-stream@npm:1.6.2" dependencies: @@ -28689,6 +24037,13 @@ __metadata: languageName: node linkType: hard +"confbox@npm:^0.1.8": + version: 0.1.8 + resolution: "confbox@npm:0.1.8" + checksum: 5c7718ab22cf9e35a31c21ef124156076ae8c9dc65e6463d54961caf5a1d529284485a0fdf83fd23b27329f3b75b0c8c07d2e36c699f5151a2efe903343f976a + languageName: node + linkType: hard + "config-chain@npm:^1.1.13": version: 1.1.13 resolution: "config-chain@npm:1.1.13" @@ -28740,9 +24095,9 @@ __metadata: linkType: hard "confusing-browser-globals@npm:^1.0.9": - version: 1.0.10 - resolution: "confusing-browser-globals@npm:1.0.10" - checksum: 7ccdc44c2ca419cf6576c3e4336106e18d1c5337f547e461342f51aec4a10f96fdfe45414b522be3c7d24ea0b62bf4372cd37768022e4d6161707ffb2c0987e6 + version: 1.0.11 + resolution: "confusing-browser-globals@npm:1.0.11" + checksum: 3afc635abd37e566477f610e7978b15753f0e84025c25d49236f1f14d480117185516bdd40d2a2167e6bed8048641a9854964b9c067e3dcdfa6b5d0ad3c3a5ef languageName: node linkType: hard @@ -28772,6 +24127,13 @@ __metadata: languageName: node linkType: hard +"consola@npm:^3.2.3": + version: 3.2.3 + resolution: "consola@npm:3.2.3" + checksum: 32ec70e177dd2385c42e38078958cc7397be91db21af90c6f9faa0b16168b49b1c61d689338604bbb2d64370b9347a35f42a9197663a913d3a405bb0ce728499 + languageName: node + linkType: hard + "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -28779,15 +24141,6 @@ __metadata: languageName: node linkType: hard -"consolidate@npm:^0.16.0": - version: 0.16.0 - resolution: "consolidate@npm:0.16.0" - dependencies: - bluebird: ^3.7.2 - checksum: f17164ffb2c4f79b4cbf685f1c76a49f59d329a40954b436425498861dc137b46fe821b2aadafa2dcfeb7eebd46846f35bd2c36b4a704d38521b4210a22a7515 - languageName: node - linkType: hard - "constant-case@npm:^3.0.4": version: 3.0.4 resolution: "constant-case@npm:3.0.4" @@ -28815,7 +24168,7 @@ __metadata: languageName: node linkType: hard -"constate@npm:^3.2.0": +"constate@npm:^3.3.2": version: 3.3.2 resolution: "constate@npm:3.3.2" peerDependencies: @@ -28833,30 +24186,23 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - -"content-type@npm:~1.0.5": +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 languageName: node linkType: hard -"contentful-batch-libs@npm:^9.0.1": - version: 9.0.1 - resolution: "contentful-batch-libs@npm:9.0.1" +"contentful-batch-libs@npm:^9.0.1, contentful-batch-libs@npm:^9.4.1": + version: 9.7.0 + resolution: "contentful-batch-libs@npm:9.7.0" dependencies: - bfj: ^5.2.1 - figures: ^2.0.0 - https-proxy-agent: ^3.0.0 - lodash: ^4.0.1 - moment: ^2.18.1 - checksum: 68425d949db27f5c1b4c3ff8e71460de7a97d65757c91df25e384fe50784915ed69b95e4f80153891a3bd392f9ba26e1aa30f01a16ade97791d9ac71605b9300 + date-fns: ^2.28.0 + figures: 3.2.0 + https-proxy-agent: ^7.0.2 + lodash.clonedeep: ^4.5.0 + uuid: ^9.0.1 + checksum: bdf76d66cd9ec55152d25c3781638849d7f097f4e9746c72f55a873d9bd2027c0afac01da1fc3048b3b6078e03afddb1d748503307788a3bf44e8691daa196a0 languageName: node linkType: hard @@ -28907,35 +24253,34 @@ __metadata: linkType: hard "contentful-export@npm:^7.10.17": - version: 7.11.12 - resolution: "contentful-export@npm:7.11.12" + version: 7.19.158 + resolution: "contentful-export@npm:7.19.158" dependencies: - bfj: ^7.0.2 + bfj: ^8.0.0 bluebird: ^3.3.3 cli-table3: ^0.6.0 - contentful: ^8.1.7 - contentful-batch-libs: ^9.0.1 - contentful-management: ^7.3.1 - echo-cli: ^1.0.8 + contentful: ^11.0.3 + contentful-batch-libs: ^9.4.1 + contentful-management: ^11.0.1 + date-fns: ^4.1.0 figures: ^3.2.0 - fs-extra: ^9.0.0 + jsonwebtoken: ^9.0.0 listr: ^0.14.1 listr-update-renderer: ^0.5.0 listr-verbose-renderer: ^0.6.0 - lodash: ^4.17.10 - mkdirp: ^1.0.3 - moment: ^2.22.2 - request: ^2.87.0 - yargs: ^15.3.1 + lodash.startcase: ^4.4.0 + mkdirp: ^2.0.0 + node-fetch: ^2.6.7 + yargs: ^17.1.1 bin: contentful-export: bin/contentful-export - checksum: c48261ef3fd3188001fa590b905af5eb220102c71fe663bd16c20bf1a517fd23aa971b2ea21075fb635d69b819ca9d32c255f9eaafdad50edd00a8cfa352d663 + checksum: ae96cc3c11f04653aba2c7404abd102f7581ebe1c532d125759e9af8830ee12d7db624bb4e9b7b78af9078a394a58c0c368c482901f4687e389b32cdb4e3147b languageName: node linkType: hard "contentful-import@npm:^7.9.23": - version: 7.9.41 - resolution: "contentful-import@npm:7.9.41" + version: 7.9.42 + resolution: "contentful-import@npm:7.9.42" dependencies: bluebird: ^3.5.1 cli-table3: ^0.6.0 @@ -28951,7 +24296,7 @@ __metadata: yargs: ^16.0.3 bin: contentful-import: bin/contentful-import - checksum: 633671da230e8633c36835fc172d6926d6074fe8b25f74045d9a80a00d3a5cad2009ac8e3a2f0315569795d3c8f08d75bb9af10413e2d2e0269dccbc98e89ef4 + checksum: f8dbf925d19af347606d18276628fa03dc29f397a70379370ca56b469006e5f3a48c87a60830420642e1d3f59a84af25a1205c7f0962612cd10d9dc51e448c70 languageName: node linkType: hard @@ -28968,115 +24313,119 @@ __metadata: languageName: node linkType: hard -"contentful-management@npm:>=7.30.0, contentful-management@npm:^10.14.0": - version: 10.30.0 - resolution: "contentful-management@npm:10.30.0" +"contentful-management@npm:>=7.30.0, contentful-management@npm:^10.0.0 || ^11.0.0, contentful-management@npm:^11.0.1, contentful-management@npm:^11.35.1": + version: 11.35.1 + resolution: "contentful-management@npm:11.35.1" dependencies: - "@types/json-patch": 0.0.30 - axios: ^0.27.1 - contentful-sdk-core: ^7.0.1 + "@contentful/rich-text-types": ^16.6.1 + axios: ^1.7.4 + contentful-sdk-core: ^8.3.1 fast-copy: ^3.0.0 - lodash.isplainobject: ^4.0.6 - type-fest: ^3.0.0 - checksum: efac280b42717d03f14a0835b37ec25596e3ac14fce771497d13bf7895c27ed2f5b46c6b234b5587a1ee00392748f12de57eee70111847e00f78d7f5e8f8423a + checksum: 36d01911f9c2a666c08948b40c5dd4865bc139ef68179e49fd238729ee3d2857020b819543bbe16d9c74dac1f8927739865ae0cafe49cddde556cb44a41fd624 languageName: node linkType: hard -"contentful-management@npm:^10.0.0 || ^11.0.0, contentful-management@npm:^10.14.0 || ^11.0.0": - version: 11.25.0 - resolution: "contentful-management@npm:11.25.0" +"contentful-management@npm:^10.14.0": + version: 10.46.4 + resolution: "contentful-management@npm:10.46.4" dependencies: "@contentful/rich-text-types": ^16.3.0 "@types/json-patch": 0.0.30 - axios: ^1.6.2 + axios: ^1.4.0 contentful-sdk-core: ^8.1.0 fast-copy: ^3.0.0 lodash.isplainobject: ^4.0.6 type-fest: ^4.0.0 - checksum: 43a3522b89df6f584d211af57ceb9c6447ceef0b1c07f52e1131f44bb60713f419fcbffbfa3cc7d8935da422fd93c9909f59ec0f46e41fc5a72db0b2b1abfdd7 + checksum: 8604823a4958578f5fc48c7bbda193905945afbd6df4e778ffc343b676163a23cb6b0b807d1b46582ca3ca47a920a0cf18337e3125b61979390be50faa6ab77a languageName: node linkType: hard "contentful-management@npm:^7.3.1": - version: 7.11.0 - resolution: "contentful-management@npm:7.11.0" + version: 7.54.2 + resolution: "contentful-management@npm:7.54.2" dependencies: - axios: ^0.21.0 - contentful-sdk-core: ^6.7.0 + "@types/json-patch": 0.0.30 + axios: ^0.21.4 + contentful-sdk-core: ^6.10.4 fast-copy: ^2.1.0 lodash.isplainobject: ^4.0.6 - type-fest: 0.20.2 - checksum: d6cbc5fb86f4fe9d057b0a54f9295463c72e5af55837bf59aad8c628922e0f4b852943bdf4bfe5d9300484b28b965d6d95cbf17608057e6e4065c0c8f74234cf + type-fest: ^2.5.3 + checksum: 4e602f3c99d4de7000246c5478bc06bb32aafae27e57285a1df2b59100f7090f9815c52c29342929a6dd6c709fe360608317e3b2bd6d854758ec3e1766bfdd95 languageName: node linkType: hard "contentful-migration@npm:^4.0.0": - version: 4.0.10 - resolution: "contentful-migration@npm:4.0.10" + version: 4.25.2 + resolution: "contentful-migration@npm:4.25.2" dependencies: - axios: ^0.21.0 + "@hapi/hoek": ^11.0.4 + axios: ^1.7.7 bluebird: ^3.7.2 callsites: ^3.1.0 cardinal: ^2.1.1 chalk: ^4.0.0 - contentful-management: ^7.3.1 - didyoumean2: ^4.0.0 - hoek: ^6.1.3 + contentful-management: ^11.35.1 + didyoumean2: ^5.0.0 https-proxy-agent: ^5.0.0 - inquirer: ^7.1.0 - joi: ^10.6.0 + inquirer: ^8.1.2 + joi: ^17.4.0 kind-of: ^6.0.3 - listr: ^0.14.3 + listr2: ^3.13.5 lodash: ^4.17.15 + p-throttle: ^4.1.1 + uuid: ^10.0.0 yargs: ^15.3.1 bin: contentful-migration: bin/contentful-migration - checksum: 1b2b6c269cc87f1ea1cb3b78602a064a5d03e143a4600479fd252534c5b8404ef62bcf2f043888ad79c498f3fb180e754b894892d5f7c66c71fe199bdc72b47c + checksum: 352cef20fb6c96ca3348647577f724f154fd262b8b605f70aba73ba386938519616c7394655a8334cda798bb243afce428487095d558c7b90954ad32bd146d1c languageName: node linkType: hard -"contentful-resolve-response@npm:^1.3.0": - version: 1.3.0 - resolution: "contentful-resolve-response@npm:1.3.0" +"contentful-resolve-response@npm:^1.3.0, contentful-resolve-response@npm:^1.9.0": + version: 1.9.0 + resolution: "contentful-resolve-response@npm:1.9.0" dependencies: - fast-copy: ^2.1.0 - checksum: b089487a71e502de97c86dd41c0edae45ced9b6985ffc1a81a79c689f7425db6a0210e5fa8ac9de74559b16d58564cac77274a83ad12d9401e360bd96484d5b5 + fast-copy: ^2.1.7 + checksum: c9f211eb6310cfc894384db55fe4d4a371cb2f898fbcad8e4a826f2b6d0a788870edadab1bdc48222c9a85125eb066101851c76e1e25e70a240380dbf6daaa1f languageName: node linkType: hard -"contentful-sdk-core@npm:^6.5.0, contentful-sdk-core@npm:^6.7.0": - version: 6.7.0 - resolution: "contentful-sdk-core@npm:6.7.0" +"contentful-sdk-core@npm:^6.10.4, contentful-sdk-core@npm:^6.5.0": + version: 6.11.0 + resolution: "contentful-sdk-core@npm:6.11.0" dependencies: fast-copy: ^2.1.0 + lodash.isplainobject: ^4.0.6 + lodash.isstring: ^4.0.1 + p-throttle: ^4.1.1 qs: ^6.9.4 - checksum: 571f652703e99bd402a184e2e55958cc41ef3750ba66113834fcb38bd914d6e5415c50edc20eb9e8da7bec77c90faaf0e5aa2f02997edd32f271acb8ec255429 + checksum: 69ec31d085b1c1b69f5e6f9f5195c6cd60081a70ed85de6c093db2e37745cbc6cef1735bf707758d2ed8a55e7c14969395d999c416238c530d75abe7ef3f5a60 languageName: node linkType: hard "contentful-sdk-core@npm:^7.0.1": - version: 7.0.2 - resolution: "contentful-sdk-core@npm:7.0.2" + version: 7.1.0 + resolution: "contentful-sdk-core@npm:7.1.0" dependencies: - fast-copy: ^2.1.3 + fast-copy: ^2.1.7 lodash.isplainobject: ^4.0.6 lodash.isstring: ^4.0.1 p-throttle: ^4.1.1 qs: ^6.9.4 - checksum: 1893ecbeab7ca1e0c13f3c210b5381f8abd9f3debe25a1e589adcbf4514dfb2bbeb6fed4c0e8b8238fcad73bedafaae3c76f3c41041880104b53087357780baf + checksum: 9f31cef7f2d7a6247ec5473315ed9c5574d93f8afb9748bfbf2439b2c54552b3689cb48ff7512f05fdc4930b2d19363b2a7f6cea0c426d8d5cfe71b9987427e8 languageName: node linkType: hard -"contentful-sdk-core@npm:^8.1.0": - version: 8.1.2 - resolution: "contentful-sdk-core@npm:8.1.2" +"contentful-sdk-core@npm:^8.1.0, contentful-sdk-core@npm:^8.3.1": + version: 8.3.2 + resolution: "contentful-sdk-core@npm:8.3.2" dependencies: fast-copy: ^2.1.7 lodash.isplainobject: ^4.0.6 lodash.isstring: ^4.0.1 p-throttle: ^4.1.1 qs: ^6.11.2 - checksum: 146a31ce1eba65394026293a35179e5a3a390dbb7924c9530f6f0689f03c5d177b3e972e9b7890ed815eb1b1133a49912adcf977903647e00405be3770693de1 + checksum: 28a241562dace2be93e9059d7487e27290db347dc9b6884ce058909fd900f22e827219dcab01ed23bf01ca64787c754e213bc7265ccef905573e49dce26c8d2c languageName: node linkType: hard @@ -29087,7 +24436,7 @@ __metadata: languageName: node linkType: hard -"contentful@npm:8.2.0, contentful@npm:^8.1.7": +"contentful@npm:8.2.0": version: 8.2.0 resolution: "contentful@npm:8.2.0" dependencies: @@ -29100,12 +24449,25 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.5.1, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.8.0 - resolution: "convert-source-map@npm:1.8.0" +"contentful@npm:^11.0.3": + version: 11.1.4 + resolution: "contentful@npm:11.1.4" dependencies: - safe-buffer: ~5.1.1 - checksum: 985d974a2d33e1a2543ada51c93e1ba2f73eaed608dc39f229afc78f71dcc4c8b7d7c684aa647e3c6a3a204027444d69e53e169ce94e8d1fa8d7dee80c9c8fed + "@contentful/content-source-maps": ^0.11.0 + "@contentful/rich-text-types": ^16.6.1 + axios: ^1.7.4 + contentful-resolve-response: ^1.9.0 + contentful-sdk-core: ^8.3.1 + json-stringify-safe: ^5.0.1 + type-fest: ^4.0.0 + checksum: 11d7186d8275f686493d943a7443c94c7b7cf0c2c575eb19fb2278f2991c1a14bd6ae5d44d78e5cdc31df43bcd72db2d8c73eee880482fba5ab46eff2ed7c957 + languageName: node + linkType: hard + +"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 languageName: node linkType: hard @@ -29171,6 +24533,13 @@ __metadata: languageName: node linkType: hard +"cookie@npm:0.7.1": + version: 0.7.1 + resolution: "cookie@npm:0.7.1" + checksum: cec5e425549b3650eb5c3498a9ba3cde0b9cd419e3b36e4b92739d30b4d89e0b678b98c1ddc209ce7cf958cd3215671fd6ac47aec21f10c2a0cc68abd399d8a7 + languageName: node + linkType: hard + "cookie@npm:^0.4.0, cookie@npm:^0.4.1": version: 0.4.2 resolution: "cookie@npm:0.4.2" @@ -29178,21 +24547,7 @@ __metadata: languageName: node linkType: hard -"cookiejar@npm:^2.1.0": - version: 2.1.2 - resolution: "cookiejar@npm:2.1.2" - checksum: 706cad1a56db51dfb13c1fef73dab8e7fabcfdfbe5d58d463139b4af1482603291832053cc85564bc998a05784956a6cf0ac667414a0a8d7765c65ed3ed42f3e - languageName: node - linkType: hard - -"cookiejar@npm:^2.1.2": - version: 2.1.3 - resolution: "cookiejar@npm:2.1.3" - checksum: 88259983ebc52ceb23cdacfa48762b6a518a57872eff1c7ed01d214fff5cf492e2660d7d5c04700a28f1787a76811df39e8639f8e17670b3cf94ecd86e161f07 - languageName: node - linkType: hard - -"cookiejar@npm:^2.1.4": +"cookiejar@npm:^2.1.0, cookiejar@npm:^2.1.2, cookiejar@npm:^2.1.4": version: 2.1.4 resolution: "cookiejar@npm:2.1.4" checksum: c4442111963077dc0e5672359956d6556a195d31cbb35b528356ce5f184922b99ac48245ac05ed86cf993f7df157c56da10ab3efdadfed79778a0d9b1b092d5b @@ -29208,7 +24563,7 @@ __metadata: languageName: node linkType: hard -"copy-to-clipboard@npm:3.3.1, copy-to-clipboard@npm:^3, copy-to-clipboard@npm:^3.2.0": +"copy-to-clipboard@npm:3.3.1": version: 3.3.1 resolution: "copy-to-clipboard@npm:3.3.1" dependencies: @@ -29217,6 +24572,15 @@ __metadata: languageName: node linkType: hard +"copy-to-clipboard@npm:^3.2.0, copy-to-clipboard@npm:^3.3.1": + version: 3.3.3 + resolution: "copy-to-clipboard@npm:3.3.3" + dependencies: + toggle-selection: ^1.0.6 + checksum: e0a325e39b7615108e6c1c8ac110ae7b829cdc4ee3278b1df6a0e4228c490442cc86444cd643e2da344fbc424b3aab8909e2fec82f8bc75e7e5b190b7c24eecf + languageName: node + linkType: hard + "copy-webpack-plugin@npm:^10.2.4": version: 10.2.4 resolution: "copy-webpack-plugin@npm:10.2.4" @@ -29233,46 +24597,19 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.25.1": - version: 3.30.0 - resolution: "core-js-compat@npm:3.30.0" - dependencies: - browserslist: ^4.21.5 - checksum: 51a34d8a292de51f52ac2d72b18ee94743a905d4570a42214262426ebf8f026c853fee22cf4d6c61c2d95f861749421c4de48e9389f551745c5ac1477a5f929f - languageName: node - linkType: hard - -"core-js-compat@npm:^3.30.1, core-js-compat@npm:^3.30.2": - version: 3.30.2 - resolution: "core-js-compat@npm:3.30.2" - dependencies: - browserslist: ^4.21.5 - checksum: 4c81d635559eebc2f81db60f5095a235f580a2f90698113c4124c72761393592b139e30974cce6095a9a6aad6bb3cd467b24b20c32e77ed24ca74eb5944d0638 - languageName: node - linkType: hard - -"core-js-compat@npm:^3.31.0": - version: 3.32.2 - resolution: "core-js-compat@npm:3.32.2" - dependencies: - browserslist: ^4.21.10 - checksum: efca146ad71a542e6f196db5ba5aed617e48c615bdf1fbb065471b3267f833ac545bd5fc5ad0642c3d3974b955f0684ff0863d7471d7050ee0284e0a1313942e - languageName: node - linkType: hard - -"core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0": - version: 3.38.0 - resolution: "core-js-compat@npm:3.38.0" +"core-js-compat@npm:^3.30.2, core-js-compat@npm:^3.33.1, core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": + version: 3.38.1 + resolution: "core-js-compat@npm:3.38.1" dependencies: browserslist: ^4.23.3 - checksum: bd410be723e3621f7e8c7a4dce91eaefc603d95133da89c042dd961aca368c7281894bd9af14116a455a4473288fb6c121b185cb8a1e8290b8ace15aedb315f2 + checksum: a0a5673bcd59f588f0cd0b59cdacd4712b82909738a87406d334dd412eb3d273ae72b275bdd8e8fef63fca9ef12b42ed651be139c7c44c8a1acb423c8906992e languageName: node linkType: hard "core-js-pure@npm:^3.23.3": - version: 3.30.2 - resolution: "core-js-pure@npm:3.30.2" - checksum: e0e012fe94e38663d837410baac62efe05d0c7431e3fbaa70c65f51eb980da9c3add225eca04208d576bc0d92cefeca9a4f7671a65fd84fd7dfc92d8618dddfd + version: 3.38.1 + resolution: "core-js-pure@npm:3.38.1" + checksum: 95ca2e75df371571b0d41cba81e1f6335a2ba1f080e80f8edfa124ad3041880fe72e10f2144527a700a3d993dbf9f7cada3e04a927a66604bc49d0c4951567fb languageName: node linkType: hard @@ -29291,20 +24628,20 @@ __metadata: linkType: hard "core-js@npm:^3.0.0": - version: 3.15.2 - resolution: "core-js@npm:3.15.2" - checksum: f8f61569c4c3bdf50679226f5a1045551192a2f4bc3fa46a873b6fa834cff6d1634ee138a6e4bae3eea99f1b1db2d588fa693de74640447476292b41f595a4c3 + version: 3.38.1 + resolution: "core-js@npm:3.38.1" + checksum: 55703c2f6fcd537e47a5cc83e9dc9884efef61861bbefb4a96a8c95e87956db980ce314628465dd49f14e626c5e633b9e3433f3e4a1f628404a14da420eb2556 languageName: node linkType: hard -"core-util-is@npm:1.0.2, core-util-is@npm:~1.0.0": +"core-util-is@npm:1.0.2": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab languageName: node linkType: hard -"core-util-is@npm:^1.0.3": +"core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 @@ -29328,37 +24665,27 @@ __metadata: languageName: node linkType: hard -"cosmiconfig-toml-loader@npm:1.0.0": - version: 1.0.0 - resolution: "cosmiconfig-toml-loader@npm:1.0.0" - dependencies: - "@iarna/toml": ^2.2.5 - checksum: 00836a57c3c029a0d23f4eeeafc59a0be45cdf2707c5a6859020f545d50f939bfb01bc047fa41118faa92e69e25001f34d7687b05a97a469ed59fc870528b875 - languageName: node - linkType: hard - "cosmiconfig-typescript-loader@npm:^4.0.0": - version: 4.1.1 - resolution: "cosmiconfig-typescript-loader@npm:4.1.1" + version: 4.4.0 + resolution: "cosmiconfig-typescript-loader@npm:4.4.0" peerDependencies: "@types/node": "*" cosmiconfig: ">=7" ts-node: ">=10" - typescript: ">=3" - checksum: a774961868f0406d0fd75e448c2e1a0ddb95de27d477fa325a37369a2cbd892cf4d639a109082cd886840dea7707ea9bed5c38a468b52de18400c4f1d495d35a + typescript: ">=4" + checksum: d6ba546de333f9440226ab2384a7b5355d8d2e278a9ca9d838664181bc27719764af10c69eec6f07189e63121e6d654235c374bd7dc455ac8dfdef3aad6657fd languageName: node linkType: hard -"cosmiconfig@npm:7.0.1, cosmiconfig@npm:^7.0.0": - version: 7.0.1 - resolution: "cosmiconfig@npm:7.0.1" +"cosmiconfig@npm:8.0.0": + version: 8.0.0 + resolution: "cosmiconfig@npm:8.0.0" dependencies: - "@types/parse-json": ^4.0.0 import-fresh: ^3.2.1 + js-yaml: ^4.1.0 parse-json: ^5.0.0 path-type: ^4.0.0 - yaml: ^1.10.0 - checksum: 4be63e7117955fd88333d7460e4c466a90f556df6ef34efd59034d2463484e339666c41f02b523d574a797ec61f4a91918c5b89a316db2ea2f834e0d2d09465b + checksum: ff4cdf89ac1ae52e7520816622c21a9e04380d04b82d653f5139ec581aa4f7f29e096d46770bc76c4a63c225367e88a1dfa233ea791669a35101f5f9b972c7d1 languageName: node linkType: hard @@ -29399,7 +24726,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^7.0.1": +"cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" dependencies: @@ -29413,56 +24740,59 @@ __metadata: linkType: hard "cosmiconfig@npm:^8.1.3": - version: 8.2.0 - resolution: "cosmiconfig@npm:8.2.0" + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" dependencies: - import-fresh: ^3.2.1 + import-fresh: ^3.3.0 js-yaml: ^4.1.0 - parse-json: ^5.0.0 + parse-json: ^5.2.0 path-type: ^4.0.0 - checksum: 836d5d8efa750f3fb17b03d6ca74cd3154ed025dffd045304b3ef59637f662bde1e5dc88f8830080d180ec60841719cf4ea2ce73fb21ec694b16865c478ff297 + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 languageName: node linkType: hard -"cpu-features@npm:0.0.2": - version: 0.0.2 - resolution: "cpu-features@npm:0.0.2" +"cpu-features@npm:~0.0.10": + version: 0.0.10 + resolution: "cpu-features@npm:0.0.10" dependencies: - nan: ^2.14.1 + buildcheck: ~0.0.6 + nan: ^2.19.0 node-gyp: latest - checksum: 15177f9a2d465e4d84390f902c977b34f237dadb29fd8553853b13d906ffe5f15be9f091c72db4f34c71412d5ff4e0e4edf04caebc875b02d1d7ecfce2963299 + checksum: ab17e25cea0b642bdcfd163d3d872be4cc7d821e854d41048557799e990d672ee1cc7bd1d4e7c4de0309b1683d4c001d36ba8569b5035d1e7e2ff2d681f681d7 languageName: node linkType: hard "crc-32@npm:^1.2.0, crc-32@npm:~1.2.0": - version: 1.2.0 - resolution: "crc-32@npm:1.2.0" - dependencies: - exit-on-epipe: ~1.0.1 - printj: ~1.1.0 + version: 1.2.2 + resolution: "crc-32@npm:1.2.2" bin: - crc32: ./bin/crc32.njs - checksum: 7bcde8bea262f6629ac3c70e20bdfa3d058dc77091705ce8620513f76f19b41fc273ddd65a716eef9b4e33fbb61ff7f9b266653d214319aef27e4223789c6b9e + crc32: bin/crc32.njs + checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff243 languageName: node linkType: hard "crc32-stream@npm:^4.0.2": - version: 4.0.2 - resolution: "crc32-stream@npm:4.0.2" + version: 4.0.3 + resolution: "crc32-stream@npm:4.0.3" dependencies: crc-32: ^1.2.0 readable-stream: ^3.4.0 - checksum: 1099559283b86e8a55390228b57ff4d57a74cac6aa8086aa4730f84317c9f93e914aeece115352f2d706a9df7ed75327ffacd86cfe23f040aef821231b528e76 + checksum: d44d0ec6f04d8a1bed899ac3e4fbb82111ed567ea6d506be39147362af45c747887fce1032f4beca1646b4824e5a9614cd3332bfa94bbc5577ca5445e7f75ddd languageName: node linkType: hard "crc32-stream@npm:^5.0.0": - version: 5.0.0 - resolution: "crc32-stream@npm:5.0.0" + version: 5.0.1 + resolution: "crc32-stream@npm:5.0.1" dependencies: crc-32: ^1.2.0 readable-stream: ^3.4.0 - checksum: 8e5dd04f22f3fbecc623492395107fbed2114f225bd606e39e8ed338f2fc1c454ac02a05741243620ab526473cb867fa86411a44a7ffcd88457cc1c2af82d0bc + checksum: 5bd40b58488d9a4387ad799fb04d0896e7e2ca63afeedd56df9a115af3437cf83976ae07fd2402692f88efcbd2f738134a1f25366ca47e217601b6baa5388f89 languageName: node linkType: hard @@ -29540,18 +24870,18 @@ __metadata: linkType: hard "crelt@npm:^1.0.5": - version: 1.0.5 - resolution: "crelt@npm:1.0.5" - checksum: 04a618c5878e12a14a9a328a49ff6e37bed76abb88b72e661c56b5f161d8a9aca133650da6bcbc5224ad1f7f43a69325627f209e92a21002986d52a8f844b367 + version: 1.0.6 + resolution: "crelt@npm:1.0.6" + checksum: dad842093371ad702afbc0531bfca2b0a8dd920b23a42f26e66dabbed9aad9acd5b9030496359545ef3937c3aced0fd4ac39f7a2d280a23ddf9eb7fdcb94a69f languageName: node linkType: hard "cron-parser@npm:^4.2.1": - version: 4.8.1 - resolution: "cron-parser@npm:4.8.1" + version: 4.9.0 + resolution: "cron-parser@npm:4.9.0" dependencies: luxon: ^3.2.1 - checksum: e3e7b227cb45c8e3e16b5ceab9fd1b4769b878b430f009d5de26c3e20d4e0112fde6f90a663afbcd9cc2be92d73b6eefe2d939d1646f3a96704f73c63dd39b6f + checksum: 3cf248fc5cae6c19ec7124962b1cd84b76f02b9bc4f58976b3bd07624db3ef10aaf1548efcc2d2dcdab0dad4f12029d640a55ecce05ea5e1596af9db585502cf languageName: node linkType: hard @@ -29567,21 +24897,12 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.0.4": - version: 3.1.0 - resolution: "cross-fetch@npm:3.1.0" - dependencies: - node-fetch: 2.6.1 - checksum: 9849fa5ab938aa8e777a93856be2195820f6f53ddd5fc4d9cde783ea57bc0d3790d35503355cd8676c654ba8ea1a84f9e688c735ae2606b3973c7ae4b1093d4d - languageName: node - linkType: hard - "cross-fetch@npm:^3.1.5": - version: 3.1.5 - resolution: "cross-fetch@npm:3.1.5" + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" dependencies: - node-fetch: 2.6.7 - checksum: f6b8c6ee3ef993ace6277fd789c71b6acf1b504fd5f5c7128df4ef2f125a429e29cd62dc8c127523f04a5f2fa4771ed80e3f3d9695617f441425045f505cf3bb + node-fetch: ^2.6.12 + checksum: 78f993fa099eaaa041122ab037fe9503ecbbcb9daef234d1d2e0b9230a983f64d645d088c464e21a247b825a08dc444a6e7064adfa93536d3a9454b4745b3632 languageName: node linkType: hard @@ -29594,12 +24915,12 @@ __metadata: languageName: node linkType: hard -"cross-inspect@npm:1.0.0": - version: 1.0.0 - resolution: "cross-inspect@npm:1.0.0" +"cross-inspect@npm:1.0.1": + version: 1.0.1 + resolution: "cross-inspect@npm:1.0.1" dependencies: tslib: ^2.4.0 - checksum: 975c81799549627027254eb70f1c349cefb14435d580bea6f351f510c839dcb1a9288983407bac2ad317e6eff29cf1e99299606da21f404562bfa64cec502239 + checksum: 7c1e02e0a9670b62416a3ea1df7ae880fdad3aa0a857de8932c4e5f8acd71298c7e3db9da8e9da603f5692cd1879938f5e72e34a9f5d1345987bef656d117fc1 languageName: node linkType: hard @@ -29653,7 +24974,7 @@ __metadata: languageName: node linkType: hard -"crypto-js@npm:4.2.0, crypto-js@npm:^4.0.0, crypto-js@npm:^4.2.0": +"crypto-js@npm:4.2.0, crypto-js@npm:^4.2.0": version: 4.2.0 resolution: "crypto-js@npm:4.2.0" checksum: f051666dbc077c8324777f44fbd3aaea2986f198fe85092535130d17026c7c2ccf2d23ee5b29b36f7a4a07312db2fae23c9094b644cc35f7858b1b4fcaf27774 @@ -29695,40 +25016,45 @@ __metadata: languageName: node linkType: hard -"css-declaration-sorter@npm:^6.3.1": - version: 6.4.0 - resolution: "css-declaration-sorter@npm:6.4.0" +"css-declaration-sorter@npm:^7.2.0": + version: 7.2.0 + resolution: "css-declaration-sorter@npm:7.2.0" peerDependencies: postcss: ^8.0.9 - checksum: b716bc3d79154d3d618a90bd192533adf6604307c176e25e715a3b7cde587ef16971769fbf496118a376794280edf97016653477936c38c5a74cc852d6e38873 + checksum: 69b2f63a1c7c593123fabcbb353618ed01eb75f6404da9321328fbb30d603d89c47195129fadf1dc316e1406a0881400b324c2bded9438c47196e1c96ec726dd languageName: node linkType: hard -"css-in-js-utils@npm:^2.0.0": - version: 2.0.1 - resolution: "css-in-js-utils@npm:2.0.1" +"css-in-js-utils@npm:^3.1.0": + version: 3.1.0 + resolution: "css-in-js-utils@npm:3.1.0" dependencies: - hyphenate-style-name: ^1.0.2 - isobject: ^3.0.1 - checksum: c9964c4708216954c468b69bbee2d971fd759ada4f40637b8ca4d3f79caba4818d0532a4f190ac560227c08742ad063ffec7a30afddc4d96b66a18c3a008f0d8 + hyphenate-style-name: ^1.0.3 + checksum: 066318e918c04a5e5bce46b38fe81052ea6ac051bcc6d3c369a1d59ceb1546cb2b6086901ab5d22be084122ee3732169996a3dfb04d3406eaee205af77aec61b languageName: node linkType: hard "css-loader@npm:^6.4.0, css-loader@npm:^6.7.1": - version: 6.8.1 - resolution: "css-loader@npm:6.8.1" + version: 6.11.0 + resolution: "css-loader@npm:6.11.0" dependencies: icss-utils: ^5.1.0 - postcss: ^8.4.21 - postcss-modules-extract-imports: ^3.0.0 - postcss-modules-local-by-default: ^4.0.3 - postcss-modules-scope: ^3.0.0 + postcss: ^8.4.33 + postcss-modules-extract-imports: ^3.1.0 + postcss-modules-local-by-default: ^4.0.5 + postcss-modules-scope: ^3.2.0 postcss-modules-values: ^4.0.0 postcss-value-parser: ^4.2.0 - semver: ^7.3.8 + semver: ^7.5.4 peerDependencies: + "@rspack/core": 0.x || 1.x webpack: ^5.0.0 - checksum: 7c1784247bdbe76dc5c55fb1ac84f1d4177a74c47259942c9cfdb7a8e6baef11967a0bc85ac285f26bd26d5059decb848af8154a03fdb4f4894f41212f45eef3 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 5c8d35975a7121334905394e88e28f05df72f037dbed2fb8fec4be5f0b313ae73a13894ba791867d4a4190c35896da84a7fd0c54fb426db55d85ba5e714edbe3 languageName: node linkType: hard @@ -29769,15 +25095,15 @@ __metadata: linkType: hard "css-select@npm:^4.1.3": - version: 4.1.3 - resolution: "css-select@npm:4.1.3" + version: 4.3.0 + resolution: "css-select@npm:4.3.0" dependencies: boolbase: ^1.0.0 - css-what: ^5.0.0 - domhandler: ^4.2.0 - domutils: ^2.6.0 - nth-check: ^2.0.0 - checksum: 40928f1aa6c71faf36430e7f26bcbb8ab51d07b98b754caacb71906400a195df5e6c7020a94f2982f02e52027b9bd57c99419220cf7020968c3415f14e4be5f8 + css-what: ^6.0.1 + domhandler: ^4.3.1 + domutils: ^2.8.0 + nth-check: ^2.0.1 + checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 languageName: node linkType: hard @@ -29794,7 +25120,7 @@ __metadata: languageName: node linkType: hard -"css-to-react-native@npm:3.2.0": +"css-to-react-native@npm:3.2.0, css-to-react-native@npm:^3.0.0": version: 3.2.0 resolution: "css-to-react-native@npm:3.2.0" dependencies: @@ -29805,17 +25131,6 @@ __metadata: languageName: node linkType: hard -"css-to-react-native@npm:^3.0.0": - version: 3.0.0 - resolution: "css-to-react-native@npm:3.0.0" - dependencies: - camelize: ^1.0.0 - css-color-keywords: ^1.0.0 - postcss-value-parser: ^4.0.2 - checksum: 98a2e9d4fbe9cabc8b744dfdd5ec108396ce497a7b860912a95b299bd52517461281810fcb707965a021a8be39adca9587184a26fb4e926211391a1557aca3c1 - languageName: node - linkType: hard - "css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": version: 1.1.3 resolution: "css-tree@npm:1.1.3" @@ -29826,7 +25141,7 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^2.2.1": +"css-tree@npm:^2.3.1": version: 2.3.1 resolution: "css-tree@npm:2.3.1" dependencies: @@ -29853,14 +25168,14 @@ __metadata: languageName: node linkType: hard -"css-what@npm:^5.0.0, css-what@npm:^5.0.1": +"css-what@npm:^5.0.1": version: 5.1.0 resolution: "css-what@npm:5.1.0" checksum: 0b75d1bac95c885c168573c85744a6c6843d8c33345f54f717218b37ea6296b0e99bb12105930ea170fd4a921990392a7c790c16c585c1d8960c49e2b7ec39f7 languageName: node linkType: hard -"css-what@npm:^6.1.0": +"css-what@npm:^6.0.1, css-what@npm:^6.1.0": version: 6.1.0 resolution: "css-what@npm:6.1.0" checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe @@ -29890,63 +25205,64 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-default@npm:^6.0.1": - version: 6.0.1 - resolution: "cssnano-preset-default@npm:6.0.1" - dependencies: - css-declaration-sorter: ^6.3.1 - cssnano-utils: ^4.0.0 - postcss-calc: ^9.0.0 - postcss-colormin: ^6.0.0 - postcss-convert-values: ^6.0.0 - postcss-discard-comments: ^6.0.0 - postcss-discard-duplicates: ^6.0.0 - postcss-discard-empty: ^6.0.0 - postcss-discard-overridden: ^6.0.0 - postcss-merge-longhand: ^6.0.0 - postcss-merge-rules: ^6.0.1 - postcss-minify-font-values: ^6.0.0 - postcss-minify-gradients: ^6.0.0 - postcss-minify-params: ^6.0.0 - postcss-minify-selectors: ^6.0.0 - postcss-normalize-charset: ^6.0.0 - postcss-normalize-display-values: ^6.0.0 - postcss-normalize-positions: ^6.0.0 - postcss-normalize-repeat-style: ^6.0.0 - postcss-normalize-string: ^6.0.0 - postcss-normalize-timing-functions: ^6.0.0 - postcss-normalize-unicode: ^6.0.0 - postcss-normalize-url: ^6.0.0 - postcss-normalize-whitespace: ^6.0.0 - postcss-ordered-values: ^6.0.0 - postcss-reduce-initial: ^6.0.0 - postcss-reduce-transforms: ^6.0.0 - postcss-svgo: ^6.0.0 - postcss-unique-selectors: ^6.0.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 451080ae47c93e6525c7133c36426968ee758eb9115132ba481e6b12d50775f4d086635bb2f807957e017fc9d253aa876aa64800be6b3d000ada90721b9ea410 - languageName: node - linkType: hard - -"cssnano-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "cssnano-utils@npm:4.0.0" +"cssnano-preset-default@npm:^6.1.2": + version: 6.1.2 + resolution: "cssnano-preset-default@npm:6.1.2" + dependencies: + browserslist: ^4.23.0 + css-declaration-sorter: ^7.2.0 + cssnano-utils: ^4.0.2 + postcss-calc: ^9.0.1 + postcss-colormin: ^6.1.0 + postcss-convert-values: ^6.1.0 + postcss-discard-comments: ^6.0.2 + postcss-discard-duplicates: ^6.0.3 + postcss-discard-empty: ^6.0.3 + postcss-discard-overridden: ^6.0.2 + postcss-merge-longhand: ^6.0.5 + postcss-merge-rules: ^6.1.1 + postcss-minify-font-values: ^6.1.0 + postcss-minify-gradients: ^6.0.3 + postcss-minify-params: ^6.1.0 + postcss-minify-selectors: ^6.0.4 + postcss-normalize-charset: ^6.0.2 + postcss-normalize-display-values: ^6.0.2 + postcss-normalize-positions: ^6.0.2 + postcss-normalize-repeat-style: ^6.0.2 + postcss-normalize-string: ^6.0.2 + postcss-normalize-timing-functions: ^6.0.2 + postcss-normalize-unicode: ^6.1.0 + postcss-normalize-url: ^6.0.2 + postcss-normalize-whitespace: ^6.0.2 + postcss-ordered-values: ^6.0.2 + postcss-reduce-initial: ^6.1.0 + postcss-reduce-transforms: ^6.0.2 + postcss-svgo: ^6.0.3 + postcss-unique-selectors: ^6.0.4 + peerDependencies: + postcss: ^8.4.31 + checksum: 51d93e52df7141143947dc4695b5087c04b41ea153e4f4c0282ac012b62c7457c6aca244f604ae94fa3b4840903a30a1e7df38f8610e0b304d05e3065375ee56 + languageName: node + linkType: hard + +"cssnano-utils@npm:^4.0.2": + version: 4.0.2 + resolution: "cssnano-utils@npm:4.0.2" peerDependencies: - postcss: ^8.2.15 - checksum: 7db9b3eb4ec7cc7b2d1a3caf8c2d3b6b067bb8404b93dc183907325db3231e396350a50e5388beda02dab03404d5e8d226977b2b87adc11768173e0259e80219 + postcss: ^8.4.31 + checksum: f04c6854e75d847c7a43aff835e003d5bc7387ddfc476f0ad3a2d63663d0cec41047d46604c1717bf6b5a8e24e54bb519e465ff78d62c7e073c7cbe2279bebaf languageName: node linkType: hard "cssnano@npm:^6.0.1": - version: 6.0.1 - resolution: "cssnano@npm:6.0.1" + version: 6.1.2 + resolution: "cssnano@npm:6.1.2" dependencies: - cssnano-preset-default: ^6.0.1 - lilconfig: ^2.1.0 + cssnano-preset-default: ^6.1.2 + lilconfig: ^3.1.1 peerDependencies: - postcss: ^8.2.15 - checksum: 15e0777189edf2d4287ed3628f65d78c9934a2c0729e29811e85bd760653a0142477b3c2dde9e0a51438c509b2b926e6482215cd8d4e6704e3eb1ab38d1dba0c + postcss: ^8.4.31 + checksum: 65aad92c5ee0089ffd4cd933c18c65edbf7634f7c3cd833a499dc948aa7e4168be22130dfe83bde07fcdc87f7c45a02d09040b7f439498208bc90b8d5a9abcc8 languageName: node linkType: hard @@ -29996,7 +25312,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:3.1.3": +"csstype@npm:3.1.3, csstype@npm:^3.0.2, csstype@npm:^3.0.5, csstype@npm:^3.0.7, csstype@npm:^3.1.1, csstype@npm:^3.1.2": version: 3.1.3 resolution: "csstype@npm:3.1.3" checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 @@ -30004,23 +25320,9 @@ __metadata: linkType: hard "csstype@npm:^2.5.7": - version: 2.6.16 - resolution: "csstype@npm:2.6.16" - checksum: 4da90b4aa0783fe8b5bcab21b6711ef68ae9d2b04377d064f4f264bc62003657882883d255f57e3567322982f541d98c68265cee0e456d395a3fd62963b6bea7 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2, csstype@npm:^3.0.5, csstype@npm:^3.0.6, csstype@npm:^3.0.7": - version: 3.0.10 - resolution: "csstype@npm:3.0.10" - checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 - languageName: node - linkType: hard - -"csstype@npm:^3.1.1": - version: 3.1.1 - resolution: "csstype@npm:3.1.1" - checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d + version: 2.6.21 + resolution: "csstype@npm:2.6.21" + checksum: 2ce8bc832375146eccdf6115a1f8565a27015b74cce197c35103b4494955e9516b246140425ad24103864076aa3e1257ac9bab25a06c8d931dd87a6428c9dccf languageName: node linkType: hard @@ -30194,13 +25496,13 @@ __metadata: languageName: node linkType: hard -"d@npm:1, d@npm:^1.0.1": - version: 1.0.1 - resolution: "d@npm:1.0.1" +"d@npm:1, d@npm:^1.0.1, d@npm:^1.0.2": + version: 1.0.2 + resolution: "d@npm:1.0.2" dependencies: - es5-ext: ^0.10.50 - type: ^1.0.1 - checksum: 49ca0639c7b822db670de93d4fbce44b4aa072cd848c76292c9978a8cd0fff1028763020ff4b0f147bd77bfe29b4c7f82e0f71ade76b2a06100543cdfd948d19 + es5-ext: ^0.10.64 + type: ^2.7.2 + checksum: 775db1e8ced6707cddf64a5840522fcf5475d38ef49a5d615be0ac47f86ef64d15f5a73de1522b09327cc466d4dc35ea83dbfeed456f7a0fdcab138deb800355 languageName: node linkType: hard @@ -30218,13 +25520,6 @@ __metadata: languageName: node linkType: hard -"dash-ast@npm:^1.0.0": - version: 1.0.0 - resolution: "dash-ast@npm:1.0.0" - checksum: db59e5e275d8159fb3b84bcd2936470c3fecb626f6486c179a28afad141cd95a578faaa3695ad6106153ca861da99a3d891fda37757b49afab773b3a46c638e6 - languageName: node - linkType: hard - "dashdash@npm:^1.12.0": version: 1.14.1 resolution: "dashdash@npm:1.14.1" @@ -30310,14 +25605,14 @@ __metadata: languageName: node linkType: hard -"dataloader@npm:^2.1.0": +"dataloader@npm:^2.1.0, dataloader@npm:^2.2.2": version: 2.2.2 resolution: "dataloader@npm:2.2.2" checksum: 4dabd247089c29f194e94d5434d504f99156c5c214a03463c20f3f17f40398d7e179edee69a27c16e315519ac8739042a810090087ae26449a0e685156a02c65 languageName: node linkType: hard -"date-fns@npm:2.28.0, date-fns@npm:^2.0.1, date-fns@npm:^2.24.0": +"date-fns@npm:2.28.0": version: 2.28.0 resolution: "date-fns@npm:2.28.0" checksum: a0516b2e4f99b8bffc6cc5193349f185f195398385bdcaf07f17c2c4a24473c99d933eb0018be4142a86a6d46cb0b06be6440ad874f15e795acbedd6fd727a1f @@ -30338,14 +25633,7 @@ __metadata: languageName: node linkType: hard -"date-fns@npm:^2.28.0": - version: 2.29.3 - resolution: "date-fns@npm:2.29.3" - checksum: e01cf5b62af04e05dfff921bb9c9933310ed0e1ae9a81eb8653452e64dc841acf7f6e01e1a5ae5644d0337e9a7f936175fd2cb6819dc122fdd9c5e86c56be484 - languageName: node - linkType: hard - -"date-fns@npm:^2.29.3": +"date-fns@npm:^2.0.1, date-fns@npm:^2.24.0, date-fns@npm:^2.28.0, date-fns@npm:^2.29.3": version: 2.30.0 resolution: "date-fns@npm:2.30.0" dependencies: @@ -30354,6 +25642,13 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^4.1.0": + version: 4.1.0 + resolution: "date-fns@npm:4.1.0" + checksum: fb681b242cccabed45494468f64282a7d375ea970e0adbcc5dcc92dcb7aba49b2081c2c9739d41bf71ce89ed68dd73bebfe06ca35129490704775d091895710b + languageName: node + linkType: hard + "datebook@npm:7.0.8": version: 7.0.8 resolution: "datebook@npm:7.0.8" @@ -30363,24 +25658,17 @@ __metadata: languageName: node linkType: hard -"dayjs@npm:^1.10.4, dayjs@npm:^1.9.1": - version: 1.10.7 - resolution: "dayjs@npm:1.10.7" - checksum: a0a4ca95abaa03d0702161dc2c35d16121188e342f5052b9c61cdf784dab68af766f477c04f87f71c6af666fd4d13db9b9853b87265850d6093b7b04e1bb1cd7 - languageName: node - linkType: hard - -"dayjs@npm:^1.11.5, dayjs@npm:^1.8.15": - version: 1.11.7 - resolution: "dayjs@npm:1.11.7" - checksum: 5003a7c1dd9ed51385beb658231c3548700b82d3548c0cfbe549d85f2d08e90e972510282b7506941452c58d32136d6362f009c77ca55381a09c704e9f177ebb +"dayjs@npm:^1.10.4, dayjs@npm:^1.11.5, dayjs@npm:^1.8.15, dayjs@npm:^1.9.1": + version: 1.11.13 + resolution: "dayjs@npm:1.11.13" + checksum: f388db88a6aa93956c1f6121644e783391c7b738b73dbc54485578736565c8931bdfba4bb94e9b1535c6e509c97d5deb918bbe1ae6b34358d994de735055cca9 languageName: node linkType: hard "dc-polyfill@npm:^0.1.4": - version: 0.1.4 - resolution: "dc-polyfill@npm:0.1.4" - checksum: 339f71563f57982c7cf3bd5d2dcf9e8f9b307cf9175210a7fb761c1719921a2ea7f27b12b6e69d5a500bbc1dd49c5d8f164fe5d72f0bf863b2147e96d7c8c337 + version: 0.1.6 + resolution: "dc-polyfill@npm:0.1.6" + checksum: 10ef2cc568d27b2f51d3efed4ce045ff906c0934767f50d7bbb7a5b322c4ea9f096216bfa4ba8b328711342e05e7c765d5fa7503fab34eba997c783ffcfcb2bf languageName: node linkType: hard @@ -30471,7 +25759,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9, debug@npm:^2.1.3, debug@npm:^2.2.0, debug@npm:^2.6.0, debug@npm:^2.6.8, debug@npm:^2.6.9": +"debug@npm:2.6.9, debug@npm:^2.1.3, debug@npm:^2.2.0, debug@npm:^2.6.8, debug@npm:^2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: @@ -30480,31 +25768,19 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - -"debug@npm:4.3.1": - version: 4.3.1 - resolution: "debug@npm:4.3.1" +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7": + version: 4.3.7 + resolution: "debug@npm:4.3.7" dependencies: - ms: 2.1.2 + ms: ^2.1.3 peerDependenciesMeta: supports-color: optional: true - checksum: 2c3352e37d5c46b0d203317cd45ea0e26b2c99f2d9dfec8b128e6ceba90dfb65425f5331bf3020fe9929d7da8c16758e737f4f3bfc0fce6b8b3d503bae03298b + checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 languageName: node linkType: hard -"debug@npm:^3.1.0, debug@npm:^3.1.1, debug@npm:^3.2.6, debug@npm:^3.2.7": +"debug@npm:^3.1.0, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -30513,18 +25789,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.5": - version: 4.3.6 - resolution: "debug@npm:4.3.6" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 1630b748dea3c581295e02137a9f5cbe2c1d85fea35c1e6597a65ca2b16a6fce68cec61b299d480787ef310ba927dc8c92d3061faba0ad06c6a724672f66be7f - languageName: node - linkType: hard - "debuglog@npm:^1.0.0, debuglog@npm:^1.0.1": version: 1.0.1 resolution: "debuglog@npm:1.0.1" @@ -30539,13 +25803,6 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 - languageName: node - linkType: hard - "decimal.js-light@npm:^2.4.1": version: 2.5.1 resolution: "decimal.js-light@npm:2.5.1" @@ -30553,14 +25810,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.1": - version: 10.2.1 - resolution: "decimal.js@npm:10.2.1" - checksum: d2421adf209422d520c8f1a4d1fceffc2ccd0c041aa179f8d18a315ebda6a7be918f2634ac850df299dccccae6a3567c5761301a1c3693461fdef3d1de23b000 - languageName: node - linkType: hard - -"decimal.js@npm:^10.4.2": +"decimal.js@npm:^10.2.1, decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae @@ -30608,15 +25858,15 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": - version: 1.5.1 - resolution: "dedent@npm:1.5.1" +"dedent@npm:^1.0.0, dedent@npm:^1.5.3": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a + checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a languageName: node linkType: hard @@ -30629,7 +25879,7 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:2.0.5, deep-equal@npm:^2.0.5": +"deep-equal@npm:2.0.5": version: 2.0.5 resolution: "deep-equal@npm:2.0.5" dependencies: @@ -30678,6 +25928,32 @@ __metadata: languageName: node linkType: hard +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.5 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.2 + is-arguments: ^1.1.1 + is-array-buffer: ^3.0.2 + is-date-object: ^1.0.5 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + isarray: ^2.0.5 + object-is: ^1.1.5 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.5.1 + side-channel: ^1.0.4 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.1 + which-typed-array: ^1.1.13 + checksum: ee8852f23e4d20a5626c13b02f415ba443a1b30b4b3d39eaf366d59c4a85e6545d7ec917db44d476a85ae5a86064f7e5f7af7479f38f113995ba869f3a1ddc53 + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -30686,20 +25962,20 @@ __metadata: linkType: hard "deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": - version: 0.1.3 - resolution: "deep-is@npm:0.1.3" - checksum: c15b04c3848a89880c94e25b077c19b47d9a30dd99048e70e5f95d943e7b246bee1da0c1376b56b01bc045be2cae7d9b1c856e68e47e9805634327de7c6cb6d5 + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 languageName: node linkType: hard -"deep-object-diff@npm:^1.1.0": - version: 1.1.7 - resolution: "deep-object-diff@npm:1.1.7" - checksum: 543fb1ae87b138ad260691e6949e72bf7dc144825084b7ad1886bb725d2ace1c19ed1ef1280f1116243e86bf2c6b942f45c670958b1468f644613f28c5dc97ea +"deep-object-diff@npm:^1.1.0, deep-object-diff@npm:^1.1.9": + version: 1.1.9 + resolution: "deep-object-diff@npm:1.1.9" + checksum: ecd42455e4773f653595d28070295e7aaa8402db5f8ab21d0bec115a7cb4de5e207a5665514767da5f025c96597f1d3a0a4888aeb4dd49e03c996871a3aa05ef languageName: node linkType: hard -"deepmerge@npm:4.2.2, deepmerge@npm:^4.2.2": +"deepmerge@npm:4.2.2": version: 4.2.2 resolution: "deepmerge@npm:4.2.2" checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b @@ -30713,14 +25989,14 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:^4.3.0, deepmerge@npm:^4.3.1": +"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0, deepmerge@npm:^4.3.1": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 languageName: node linkType: hard -"default-browser-id@npm:3.0.0, default-browser-id@npm:^3.0.0": +"default-browser-id@npm:3.0.0": version: 3.0.0 resolution: "default-browser-id@npm:3.0.0" dependencies: @@ -30730,18 +26006,6 @@ __metadata: languageName: node linkType: hard -"default-browser@npm:^4.0.0": - version: 4.0.0 - resolution: "default-browser@npm:4.0.0" - dependencies: - bundle-name: ^3.0.0 - default-browser-id: ^3.0.0 - execa: ^7.1.1 - titleize: ^3.0.0 - checksum: 40c5af984799042b140300be5639c9742599bda76dc9eba5ac9ad5943c83dd36cebc4471eafcfddf8e0ec817166d5ba89d56f08e66a126c7c7908a179cead1a7 - languageName: node - linkType: hard - "default-gateway@npm:^4.2.0": version: 4.2.0 resolution: "default-gateway@npm:4.2.0" @@ -30762,11 +26026,11 @@ __metadata: linkType: hard "defaults@npm:^1.0.3": - version: 1.0.3 - resolution: "defaults@npm:1.0.3" + version: 1.0.4 + resolution: "defaults@npm:1.0.4" dependencies: clone: ^1.0.2 - checksum: 96e2112da6553d376afd5265ea7cbdb2a3b45535965d71ab8bb1da10c8126d168fdd5268799625324b368356d21ba2a7b3d4ec50961f11a47b7feb9de3d4413e + checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a languageName: node linkType: hard @@ -30777,18 +26041,7 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1": - version: 1.1.1 - resolution: "define-data-property@npm:1.1.1" - dependencies: - get-intrinsic: ^1.2.1 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.0 - checksum: a29855ad3f0630ea82e3c5012c812efa6ca3078d5c2aa8df06b5f597c1cde6f7254692df41945851d903e05a1668607b6d34e778f402b9ff9ffb38111f1a3f0d - languageName: node - linkType: hard - -"define-data-property@npm:^1.1.4": +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" dependencies: @@ -30806,33 +26059,7 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^3.0.0": - version: 3.0.0 - resolution: "define-lazy-prop@npm:3.0.0" - checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" - dependencies: - object-keys: ^1.0.12 - checksum: da80dba55d0cd76a5a7ab71ef6ea0ebcb7b941f803793e4e0257b384cb772038faa0c31659d244e82c4342edef841c1a1212580006a05a5068ee48223d787317 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" - dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b - languageName: node - linkType: hard - -"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -30843,22 +26070,22 @@ __metadata: languageName: node linkType: hard -"defu@npm:^6.1.2": - version: 6.1.2 - resolution: "defu@npm:6.1.2" - checksum: 2ec0ff8414d5a1ab2b8c7e9a79bbad6d97d23ea7ebf5dcf80c3c7ffd9715c30f84a3cc47b917379ea756b3db0dc4701ce6400e493a1ae1688dffcd0f884233b2 +"defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 40e3af6338f195ac1564f53d1887fa2d0429ac7e8c081204bc4d29191180059d3952b5f4e08fe5df8d59eb873aa26e9c88b56d4fac699673d4a372c93620b229 languageName: node linkType: hard -"degenerator@npm:^3.0.1": - version: 3.0.1 - resolution: "degenerator@npm:3.0.1" +"degenerator@npm:^3.0.2": + version: 3.0.4 + resolution: "degenerator@npm:3.0.4" dependencies: ast-types: ^0.13.2 escodegen: ^1.8.1 esprima: ^4.0.0 - vm2: ^3.9.3 - checksum: 110d5fa772933d21484995e518feeb2ea54e5804421edf8546900973a227dcdf621a0cbac0a5d0a13273424ea3763aba815246dfffa386483f5480d60f50bed1 + vm2: ^3.9.17 + checksum: 99c27c9456095e32c4f6e01091d2b5c249f246b574487c52bca571e1e586b02d4b74a0ea7f22f30cc953c914383d02e2038d7d476a22f2704a8c1e88b671007d languageName: node linkType: hard @@ -30963,7 +26190,7 @@ __metadata: languageName: node linkType: hard -"des.js@npm:^1.0.0": +"des.js@npm:^1.0.0, des.js@npm:^1.1.0": version: 1.1.0 resolution: "des.js@npm:1.1.0" dependencies: @@ -30980,14 +26207,7 @@ __metadata: languageName: node linkType: hard -"detect-indent@npm:^6.0.0": - version: 6.0.0 - resolution: "detect-indent@npm:6.0.0" - checksum: 0c38f362016e2d07af1c65b1ecd6ad8a91f06bfdd11383887c867a495ad286d04be2ab44027ac42444704d523982013115bd748c1541df7c9396ad76b22aaf5d - languageName: node - linkType: hard - -"detect-indent@npm:^6.1.0": +"detect-indent@npm:^6.0.0, detect-indent@npm:^6.1.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d @@ -31003,10 +26223,10 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.0": - version: 2.0.1 - resolution: "detect-libc@npm:2.0.1" - checksum: ccb05fcabbb555beb544d48080179c18523a343face9ee4e1a86605a8715b4169f94d663c21a03c310ac824592f2ba9a5270218819bb411ad7be578a527593d7 +"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 2ba6a939ae55f189aea996ac67afceb650413c7a34726ee92c40fb0deb2400d57ef94631a8a3f052055eea7efb0f99a9b5e6ce923415daa3e68221f963cfc27d languageName: node linkType: hard @@ -31025,9 +26245,9 @@ __metadata: linkType: hard "detect-node@npm:^2.0.4": - version: 2.0.5 - resolution: "detect-node@npm:2.0.5" - checksum: 1a53096f6c3d1c4a82db2e97440d7a38eff7d8e635a5613ac1fff870135b709c5a4e6af789cda17bd6f4b6f036d30a913a0fe2dec125b565f5f7767e3e401c46 + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e languageName: node linkType: hard @@ -31040,29 +26260,16 @@ __metadata: languageName: node linkType: hard -"detect-port@npm:^1.3.0": - version: 1.3.0 - resolution: "detect-port@npm:1.3.0" - dependencies: - address: ^1.0.1 - debug: ^2.6.0 - bin: - detect: ./bin/detect-port - detect-port: ./bin/detect-port - checksum: 93c40febe714f56711d1fedc2b7a9cc4cbaa0fcddec0509876c46b9dd6099ed6bfd6662a4f35e5fa0301660f48ed516829253ab0fc90b9e79b823dd77786b379 - languageName: node - linkType: hard - -"detect-port@npm:^1.5.1": - version: 1.5.1 - resolution: "detect-port@npm:1.5.1" +"detect-port@npm:^1.3.0, detect-port@npm:^1.5.1": + version: 1.6.1 + resolution: "detect-port@npm:1.6.1" dependencies: address: ^1.0.1 debug: 4 bin: detect: bin/detect-port.js detect-port: bin/detect-port.js - checksum: b48da9340481742547263d5d985e65d078592557863402ecf538511735e83575867e94f91fe74405ea19b61351feb99efccae7e55de9a151d5654e3417cea05b + checksum: 0429fa423abb15fc453face64e6ffa406e375f51f5b4421a7886962e680dc05824eae9b6ee4594ba273685c3add415ad00982b5da54802ac3de6f846173284c3 languageName: node linkType: hard @@ -31073,17 +26280,7 @@ __metadata: languageName: node linkType: hard -"dezalgo@npm:^1.0.0": - version: 1.0.3 - resolution: "dezalgo@npm:1.0.3" - dependencies: - asap: ^2.0.0 - wrappy: 1 - checksum: 8b26238db91423b2702a7a6d9629d0019c37c415e7b6e75d4b3e8d27e9464e21cac3618dd145f4d4ee96c70cc6ff034227b5b8a0e9c09015a8bdbe6dace3cfb9 - languageName: node - linkType: hard - -"dezalgo@npm:^1.0.4": +"dezalgo@npm:^1.0.0, dezalgo@npm:^1.0.4": version: 1.0.4 resolution: "dezalgo@npm:1.0.4" dependencies: @@ -31100,28 +26297,14 @@ __metadata: languageName: node linkType: hard -"didyoumean2@npm:^4.0.0": - version: 4.1.0 - resolution: "didyoumean2@npm:4.1.0" +"didyoumean2@npm:^5.0.0": + version: 5.0.0 + resolution: "didyoumean2@npm:5.0.0" dependencies: "@babel/runtime": ^7.10.2 - leven: ^3.1.0 + fastest-levenshtein: ^1.0.12 lodash.deburr: ^4.1.0 - checksum: 56ca4ea577042c70e12b5fa57638ca928db39d3d21afa9263fcb01529f9a70646f2c32751b1fc5eab53ddb576e4ad2f485f0c5a02377f107ce139738065f4583 - languageName: node - linkType: hard - -"diff-sequences@npm:^27.5.1": - version: 27.5.1 - resolution: "diff-sequences@npm:27.5.1" - checksum: a00db5554c9da7da225db2d2638d85f8e41124eccbd56cbaefb3b276dcbb1c1c2ad851c32defe2055a54a4806f030656cbf6638105fd6ce97bb87b90b32a33ca - languageName: node - linkType: hard - -"diff-sequences@npm:^29.4.3": - version: 29.4.3 - resolution: "diff-sequences@npm:29.4.3" - checksum: 28b265e04fdddcf7f9f814effe102cc95a9dec0564a579b5aed140edb24fc345c611ca52d76d725a3cab55d3888b915b5e8a4702e0f6058968a90fa5f41fcde7 + checksum: 99935a1433d31595d7f7f7f2e12c582ee634a07913856b2f7fb85923b30e3cbb24e37bea8bbe3da6ec42ad030fdc8cd2e07cca326de517730f07dfea8e05a025 languageName: node linkType: hard @@ -31132,13 +26315,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:5.0.0": - version: 5.0.0 - resolution: "diff@npm:5.0.0" - checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 - languageName: node - linkType: hard - "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -31146,14 +26322,7 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 - languageName: node - linkType: hard - -"diff@npm:^5.2.0": +"diff@npm:^5.0.0, diff@npm:^5.2.0": version: 5.2.0 resolution: "diff@npm:5.2.0" checksum: 12b63ca9c36c72bafa3effa77121f0581b4015df18bc16bac1f8e263597735649f1a173c26f7eba17fb4162b073fee61788abe49610e6c70a2641fe1895443fd @@ -31210,50 +26379,44 @@ __metadata: languageName: node linkType: hard -"dns-equal@npm:^1.0.0": - version: 1.0.0 - resolution: "dns-equal@npm:1.0.0" - checksum: a8471ac849c7c13824f053babea1bc26e2f359394dd5a460f8340d8abd13434be01e3327a5c59d212f8c8997817450efd3f3ac77bec709b21979cf0235644524 - languageName: node - linkType: hard - "dns-packet@npm:^5.2.2": - version: 5.6.0 - resolution: "dns-packet@npm:5.6.0" + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" dependencies: "@leichtgewicht/ip-codec": ^2.0.1 - checksum: 1b643814e5947a87620f8a906287079347492282964ce1c236d52c414e3e3941126b96581376b180ba6e66899e70b86b587bc1aa23e3acd9957765be952d83fc + checksum: 64c06457f0c6e143f7a0946e0aeb8de1c5f752217cfa143ef527467c00a6d78db1835cfdb6bb68333d9f9a4963cf23f410439b5262a8935cce1236f45e344b81 languageName: node linkType: hard "docker-compose@npm:^0.23.13": - version: 0.23.14 - resolution: "docker-compose@npm:0.23.14" + version: 0.23.19 + resolution: "docker-compose@npm:0.23.19" dependencies: yaml: ^1.10.2 - checksum: 0f1e18ac2d54e5409e9992eed2987f4b550a1398e69a953433f62dd7778b2545615774e58875de10128fa20881828029fd0241e09d68dbce26d1f49d85b5256a + checksum: 1704825954ec8645e4b099cc2641531955eef5a8a9729c885fab7067ae4d7935c663252e51b49878397e51cd5a3efcf2f13c8460e252aa39d14a0722c0bacfe5 languageName: node linkType: hard "docker-modem@npm:^3.0.0": - version: 3.0.3 - resolution: "docker-modem@npm:3.0.3" + version: 3.0.8 + resolution: "docker-modem@npm:3.0.8" dependencies: debug: ^4.1.1 readable-stream: ^3.5.0 split-ca: ^1.0.1 - ssh2: ^1.4.0 - checksum: 4ad495d17a7bbb29f48e3bf8ab74508848a3ca62c2dffc399fc0b9b2d1caccb1be54cc53001d5e0d56069e6cb4a91da4b017240733080b6648a66b40345e1f96 + ssh2: ^1.11.0 + checksum: e3675c9b1ad800be8fb1cb9c5621fbef20a75bfedcd6e01b69808eadd7f0165681e4e30d1700897b788a67dbf4769964fcccd19c3d66f6d2499bb7aede6b34df languageName: node linkType: hard "dockerode@npm:^3.3.1": - version: 3.3.1 - resolution: "dockerode@npm:3.3.1" + version: 3.3.5 + resolution: "dockerode@npm:3.3.5" dependencies: + "@balena/dockerignore": ^1.0.2 docker-modem: ^3.0.0 tar-fs: ~2.0.1 - checksum: 930162ae2d8a1fe0e99d9a5885b09aa438da6274d4a30cb90e73046655dbc90764eb755361a63ba08f167e257c4d649d67bce71f650461a20b97fcde0af05ca5 + checksum: 7f6650422b07fa7ea9d5801f04b1a432634446b5fe37b995b8302b953b64e93abf1bb4596c2fb574ba47aafee685ef2ab959cc86c9654add5a26d09541bbbcc6 languageName: node linkType: hard @@ -31276,9 +26439,9 @@ __metadata: linkType: hard "dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": - version: 0.5.14 - resolution: "dom-accessibility-api@npm:0.5.14" - checksum: 782c813f75a09ba6735ef03b5e1624406a3829444ae49d5bdedd272a49d437ae3354f53e02ffc8c9fd9165880250f41546538f27461f839dd4ea1234e77e8d5e + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 005eb283caef57fc1adec4d5df4dd49189b628f2f575af45decb210e04d634459e3f1ee64f18b41e2dcf200c844bc1d9279d80807e686a30d69a4756151ad248 languageName: node linkType: hard @@ -31301,12 +26464,12 @@ __metadata: linkType: hard "dom-helpers@npm:^5.0.1": - version: 5.2.0 - resolution: "dom-helpers@npm:5.2.0" + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" dependencies: "@babel/runtime": ^7.8.7 csstype: ^3.0.2 - checksum: bea3e7217c2adac5f89285b7786dbcc3a356226f6ff12934c9626689829b00e7fa7630a8f77973028d039db1aba6b882b1494854aa910422d1644486136b1e55 + checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c languageName: node linkType: hard @@ -31320,14 +26483,14 @@ __metadata: languageName: node linkType: hard -"dom-serializer@npm:^1.0.1, dom-serializer@npm:^1.3.2": - version: 1.3.2 - resolution: "dom-serializer@npm:1.3.2" +"dom-serializer@npm:^1.0.1": + version: 1.4.1 + resolution: "dom-serializer@npm:1.4.1" dependencies: domelementtype: ^2.0.1 domhandler: ^4.2.0 entities: ^2.0.0 - checksum: bff48714944d67b160db71ba244fb0f3fe72e77ef2ec8414e2eeb56f2d926e404a13456b8b83a5392e217ba47dec2ec0c368801b31481813e94d185276c3e964 + checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 languageName: node linkType: hard @@ -31349,14 +26512,7 @@ __metadata: languageName: node linkType: hard -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": - version: 2.2.0 - resolution: "domelementtype@npm:2.2.0" - checksum: 24cb386198640cd58aa36f8c987f2ea61859929106d06ffcc8f547e70cb2ed82a6dc56dcb8252b21fba1f1ea07df6e4356d60bfe57f77114ca1aed6828362629 - languageName: node - linkType: hard - -"domelementtype@npm:^2.3.0": +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 @@ -31399,12 +26555,12 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": - version: 4.2.0 - resolution: "domhandler@npm:4.2.0" +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" dependencies: domelementtype: ^2.2.0 - checksum: 7921ac317d6899525a4e6a6038137307271522175a73db58233e13c7860987e15e86654583b2c0fd02fc46a602f9bd86fd2671af13b9068b72e8b229f07b3d03 + checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa languageName: node linkType: hard @@ -31417,10 +26573,17 @@ __metadata: languageName: node linkType: hard +"dommatrix@npm:^1.0.3": + version: 1.0.3 + resolution: "dommatrix@npm:1.0.3" + checksum: 8ac727c1a14cf8de30a5b49a3bd6b2622a661b391fe1ac54e855eaa14a857ed86d63492150b5f70f912acc24fa3acc31d750259c47e9b5801de237624b0a319f + languageName: node + linkType: hard + "dompurify@npm:^2.2.8": - version: 2.4.7 - resolution: "dompurify@npm:2.4.7" - checksum: 13c047e772a1998348191554dda403950d45ef2ec75fa0b9915cc179ccea0a39ef780d283109bd72cf83a2a085af6c77664281d4d0106a737bc5f39906364efe + version: 2.5.7 + resolution: "dompurify@npm:2.5.7" + checksum: 9652139743130b5ebaf5278fadec06d9b3920019b80c205565b9b8d52cd0cea90ff690c1994c5c0da5bc9d57a94dc19236cdf1ccabdc1c6cff7c255e1e597031 languageName: node linkType: hard @@ -31434,18 +26597,18 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^2.0.0, domutils@npm:^2.5.2, domutils@npm:^2.6.0, domutils@npm:^2.7.0": - version: 2.7.0 - resolution: "domutils@npm:2.7.0" +"domutils@npm:^2.0.0, domutils@npm:^2.5.2, domutils@npm:^2.8.0": + version: 2.8.0 + resolution: "domutils@npm:2.8.0" dependencies: dom-serializer: ^1.0.1 domelementtype: ^2.2.0 domhandler: ^4.2.0 - checksum: a4da0fcc4c54f6b338111caa11c672e18968d6280e7a1ed5e01b8b09b7dc0829ab5e03821349f5b57e34811f7e96e89b8dddbe06bb8e395cf117342424667b7d + checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 languageName: node linkType: hard -"domutils@npm:^3.0.1": +"domutils@npm:^3.0.1, domutils@npm:^3.1.0": version: 3.1.0 resolution: "domutils@npm:3.1.0" dependencies: @@ -31503,14 +26666,7 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.0.0": - version: 16.0.3 - resolution: "dotenv@npm:16.0.3" - checksum: afcf03f373d7a6d62c7e9afea6328e62851d627a4e73f2e12d0a8deae1cd375892004f3021883f8aec85932cd2834b091f568ced92b4774625b321db83b827f8 - languageName: node - linkType: hard - -"dotenv@npm:^16.4.4, dotenv@npm:~16.4.5": +"dotenv@npm:^16.0.0, dotenv@npm:^16.4.4, dotenv@npm:~16.4.5": version: 16.4.5 resolution: "dotenv@npm:16.4.5" checksum: 301a12c3d44fd49888b74eb9ccf9f07a1f5df43f489e7fcb89647a2edcd84c42d6bc349dc8df099cd18f07c35c7b04685c1a4f3e6a6a9e6b30f8d48c15b7f49c @@ -31568,9 +26724,9 @@ __metadata: linkType: hard "dset@npm:^3.1.2": - version: 3.1.2 - resolution: "dset@npm:3.1.2" - checksum: 4f8066f517aa0a70af688c66e9a0a5590f0aada76f6edc7ba9ddb309e27d3a6d65c0a2e31ab2a84005d4c791e5327773cdde59b8ab169050330a0dc283663e87 + version: 3.1.4 + resolution: "dset@npm:3.1.4" + checksum: 9a7677e9ffd3c13ad850f7cf367aa94b39984006510e84c3c09b7b88bba0a5b3b7196d85a99d0c4cae4e47d67bdeca43dc1834a41d80f31bcdc86dd26121ecec languageName: node linkType: hard @@ -31583,15 +26739,6 @@ __metadata: languageName: node linkType: hard -"duplexer2@npm:~0.1.4": - version: 0.1.4 - resolution: "duplexer2@npm:0.1.4" - dependencies: - readable-stream: ^2.0.2 - checksum: 744961f03c7f54313f90555ac20284a3fb7bf22fdff6538f041a86c22499560eb6eac9d30ab5768054137cb40e6b18b40f621094e0261d7d8c35a37b7a5ad241 - languageName: node - linkType: hard - "duplexer@npm:^0.1.1, duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -31612,14 +26759,14 @@ __metadata: linkType: hard "duplexify@npm:^4.0.0": - version: 4.1.2 - resolution: "duplexify@npm:4.1.2" + version: 4.1.3 + resolution: "duplexify@npm:4.1.3" dependencies: end-of-stream: ^1.4.1 inherits: ^2.0.3 readable-stream: ^3.1.1 - stream-shift: ^1.0.0 - checksum: 964376c61c0e92f6ed0694b3ba97c84f199413dc40ab8dfdaef80b7a7f4982fcabf796214e28ed614a5bc1ec45488a29b81e7d46fa3f5ddf65bcb118c20145ad + stream-shift: ^1.0.2 + checksum: 9636a027345de3dd3c801594d01a7c73d9ce260019538beb1ee650bba7544e72f40a4d4902b52e1ab283dc32a06f210d42748773af02ff15e3064a9659deab7f languageName: node linkType: hard @@ -31674,17 +26821,17 @@ __metadata: languageName: node linkType: hard -"editorconfig@npm:^0.15.3": - version: 0.15.3 - resolution: "editorconfig@npm:0.15.3" +"editorconfig@npm:^1.0.4": + version: 1.0.4 + resolution: "editorconfig@npm:1.0.4" dependencies: - commander: ^2.19.0 - lru-cache: ^4.1.5 - semver: ^5.6.0 - sigmund: ^1.0.1 + "@one-ini/wasm": 0.1.1 + commander: ^10.0.0 + minimatch: 9.0.1 + semver: ^7.5.3 bin: editorconfig: bin/editorconfig - checksum: a94afeda19f12a4bcc4a573f0858df13dd3a2d1a3268cc0f17a6326ebe7ddd6cb0c026f8e4e73c17d34f3892bf6f8b561512d9841e70063f61da71b4c57dc5f0 + checksum: 09904f19381b3ddf132cea0762971aba887236f387be3540909e96b8eb9337e1793834e10f06890cd8e8e7bb1ba80cb13e7d50a863f227806c9ca74def4165fb languageName: node linkType: hard @@ -31695,7 +26842,7 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.10": +"ejs@npm:^3.1.10, ejs@npm:^3.1.5, ejs@npm:^3.1.7, ejs@npm:^3.1.8": version: 3.1.10 resolution: "ejs@npm:3.1.10" dependencies: @@ -31706,32 +26853,10 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.5": - version: 3.1.6 - resolution: "ejs@npm:3.1.6" - dependencies: - jake: ^10.6.1 - bin: - ejs: ./bin/cli.js - checksum: 81a9cdea0b4ded3b5a4b212b7c17e20bb07468f08394e2d519708d367957a70aef3d282a6d5d38bf6ad313ba25802b9193d4227f29b084d2ee0f28d115141d48 - languageName: node - linkType: hard - -"ejs@npm:^3.1.7, ejs@npm:^3.1.8": - version: 3.1.9 - resolution: "ejs@npm:3.1.9" - dependencies: - jake: ^10.8.5 - bin: - ejs: bin/cli.js - checksum: af6f10eb815885ff8a8cfacc42c6b6cf87daf97a4884f87a30e0c3271fedd85d76a3a297d9c33a70e735b97ee632887f85e32854b9cdd3a2d97edf931519a35f - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.3.723": - version: 1.4.137 - resolution: "electron-to-chromium@npm:1.4.137" - checksum: 639d7b94906efafcf363519c3698eecc44be46755a6a5cdc9088954329978866cc93fbd57e08b97290599b68d5226243d21de9fa50be416b8a5d3fa8fd42c3a0 + version: 1.5.45 + resolution: "electron-to-chromium@npm:1.5.45" + checksum: f2e1ad7867125501d41f763e129d130bd563efebab65f5ca88a81407e834ff81d4e1e19355714d1e7f82a4662d3531fc23a0e9e9cdfb7b9ead0eb52ddcfa4b3e languageName: node linkType: hard @@ -31764,17 +26889,10 @@ __metadata: languageName: node linkType: hard -"emoji-regex@npm:>=6.0.0 <=6.1.1": - version: 6.1.1 - resolution: "emoji-regex@npm:6.1.1" - checksum: 6c54300a743d0b7af6e52292508d4865945ac966572473b65fdf31b54d5e4d91a1a1d769ea89f541b4023aa0c8dd2a51697fd9d186a698faf2ff380d18e5a016 - languageName: node - linkType: hard - -"emoji-regex@npm:^10.2.1": - version: 10.2.1 - resolution: "emoji-regex@npm:10.2.1" - checksum: 1aa2d16881c56531fdfc03d0b36f5c2b6221cc4097499a5665b88b711dc3fb4d5b8804f0ca6f00c56e5dcf89bac75f0487eee85da1da77df3a33accc6ecbe426 +"emoji-regex@npm:^10.3.0": + version: 10.4.0 + resolution: "emoji-regex@npm:10.4.0" + checksum: a6d9a0e454829a52e664e049847776ee1fff5646617b06cd87de7c03ce1dfcce4102a3b154d5e9c8e90f8125bc120fc1fe114d523dddf60a8a161f26c72658d2 languageName: node linkType: hard @@ -31800,14 +26918,14 @@ __metadata: linkType: hard "emojic@npm:^1.1.11": - version: 1.1.16 - resolution: "emojic@npm:1.1.16" + version: 1.1.17 + resolution: "emojic@npm:1.1.17" dependencies: - camelo: ^1.0.0 + camelo: ^1.2.1 emojilib: ^2.0.2 iterate-object: ^1.2.0 r-json: ^1.1.0 - checksum: d744a0538c4aacec9f3c0e21cf1712b375cf7b292773f3b5c8fe586920add58fe89361a38aff94cace9524262852820e98c84cd0905cc6ef553d5e766ed31608 + checksum: 668f64aaec0518fc7eb9589aa970584f51b322abeeee9e98f030cffb4d468313f87adafe43ae2377aa29889be5c08144bf78faefe6a000e5c0d97c9c0737bc1c languageName: node linkType: hard @@ -31849,6 +26967,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe + languageName: node + linkType: hard + "encoding-japanese@npm:2.0.0": version: 2.0.0 resolution: "encoding-japanese@npm:2.0.0" @@ -31856,6 +26981,16 @@ __metadata: languageName: node linkType: hard +"encoding-sniffer@npm:^0.2.0": + version: 0.2.0 + resolution: "encoding-sniffer@npm:0.2.0" + dependencies: + iconv-lite: ^0.6.3 + whatwg-encoding: ^3.1.1 + checksum: 05ad76b674066e62abc80427eb9e89ecf5ed50f4d20c392f7465992d309215687e3ae1ae8b5d5694fb258f4517c759694c3b413d6c724e1024e1cf98750390eb + languageName: node + linkType: hard + "encoding@npm:^0.1.12, encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -31885,27 +27020,27 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.14.1": - version: 5.14.1 - resolution: "enhanced-resolve@npm:5.14.1" +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.7.0": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: ad2a31928b6649eed40d364838449587f731baa63863e83d2629bebaa8be1eabac18b90f89c1784bc805b0818363e99b22547159edd485d7e5ccf18cdc640642 + checksum: 4bc38cf1cea96456f97503db7280394177d1bc46f8f87c267297d04f795ac5efa81e48115a2f5b6273c781027b5b6bfc5f62b54df629e4d25fa7001a86624f59 languageName: node linkType: hard -"enhanced-resolve@npm:^5.7.0": - version: 5.9.3 - resolution: "enhanced-resolve@npm:5.9.3" +"enquirer@npm:^2.3.6": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: 64c2dbbdd608d1a4df93b6e60786c603a1faf3b2e66dfd051d62cf4cfaeeb5e800166183685587208d62e9f7afff3f78f3d5978e32cd80125ba0c83b59a79d78 + ansi-colors: ^4.1.1 + strip-ansi: ^6.0.1 + checksum: f080f11a74209647dbf347a7c6a83c8a47ae1ebf1e75073a808bc1088eb780aa54075bfecd1bcdb3e3c724520edb8e6ee05da031529436b421b71066fcc48cb5 languageName: node linkType: hard -"enquirer@npm:^2.3.6, enquirer@npm:~2.3.6": +"enquirer@npm:~2.3.6": version: 2.3.6 resolution: "enquirer@npm:2.3.6" dependencies: @@ -31915,9 +27050,11 @@ __metadata: linkType: hard "ent@npm:^2.2.0": - version: 2.2.0 - resolution: "ent@npm:2.2.0" - checksum: f588b5707d6fef36011ea10d530645912a69530a1eb0831f8708c498ac028363a7009f45cfadd28ceb4dafd9ac17ec15213f88d09ce239cd033cfe1328dd7d7d + version: 2.2.1 + resolution: "ent@npm:2.2.1" + dependencies: + punycode: ^1.4.1 + checksum: 1db6470dd21d2659b6b6edec3c857843722579bbe25ea7f6a802ec9730b8673f2d8d6dc14af2a0c580eec83309a9cf9ee0442ba2c6b7738c7d69a1d64723451f languageName: node linkType: hard @@ -31935,20 +27072,13 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.4.0": +"entities@npm:^4.2.0, entities@npm:^4.4.0, entities@npm:^4.5.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 languageName: node linkType: hard -"entities@npm:~2.1.0": - version: 2.1.0 - resolution: "entities@npm:2.1.0" - checksum: a10a877e489586a3f6a691fe49bf3fc4e58f06c8e80522f08214a5150ba457e7017b447d4913a3fa041bda06ee4c92517baa4d8d75373eaa79369e9639225ffd - languageName: node - linkType: hard - "entropy-string@npm:4.2.0": version: 4.2.0 resolution: "entropy-string@npm:4.2.0" @@ -31972,21 +27102,12 @@ __metadata: languageName: node linkType: hard -"envinfo@npm:^7.10.0": - version: 7.13.0 - resolution: "envinfo@npm:7.13.0" - bin: - envinfo: dist/cli.js - checksum: 822fc30f53bd0be67f0e25be96eb6a2562b8062f3058846bbd7ec471bd4b7835fca6436ee72c4029c8ae4a3d8f8cddbe2ee725b22291f015232d20a682bee732 - languageName: node - linkType: hard - -"envinfo@npm:^7.7.3": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" +"envinfo@npm:^7.10.0, envinfo@npm:^7.7.3": + version: 7.14.0 + resolution: "envinfo@npm:7.14.0" bin: envinfo: dist/cli.js - checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 + checksum: 137c1dd9a4d5781c4a6cdc6b695454ba3c4ba1829f73927198aa4122f11b35b59d7b2cb7e1ceea1364925a30278897548511d22f860c14253a33797d0bebd551 languageName: node linkType: hard @@ -32025,11 +27146,11 @@ __metadata: linkType: hard "error-stack-parser@npm:^2.0.6": - version: 2.0.6 - resolution: "error-stack-parser@npm:2.0.6" + version: 2.1.4 + resolution: "error-stack-parser@npm:2.1.4" dependencies: - stackframe: ^1.1.1 - checksum: bd8e048fcb1c0c74ab201271fec3b39c097a7c24bdef1718828d053c0584da5d7ad845253b5e4773803ee8e7450b23b0920e60a3b60dd403c1568c843058cb12 + stackframe: ^1.3.4 + checksum: 3b916d2d14c6682f287c8bfa28e14672f47eafe832701080e420e7cdbaebb2c50293868256a95706ac2330fe078cf5664713158b49bc30d7a5f2ac229ded0e18 languageName: node linkType: hard @@ -32097,96 +27218,10 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.18.0-next.2, es-abstract@npm:^1.19.1": - version: 1.19.5 - resolution: "es-abstract@npm:1.19.5" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - get-intrinsic: ^1.1.1 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - is-callable: ^1.2.4 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-weakref: ^1.0.2 - object-inspect: ^1.12.0 - object-keys: ^1.1.1 - object.assign: ^4.1.2 - string.prototype.trimend: ^1.0.4 - string.prototype.trimstart: ^1.0.4 - unbox-primitive: ^1.0.1 - checksum: 55199b0f179a12b3b0ec9c9f2e3a27a7561686e4f88d46f9ef32c836448a336e367c14d8f792612fc83a64113896e478259e4dffbbcffb3efdd06650f6360324 - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.0": - version: 1.20.4 - resolution: "es-abstract@npm:1.20.4" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - is-callable: ^1.2.7 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.5 - string.prototype.trimstart: ^1.0.5 - unbox-primitive: ^1.0.2 - checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 - languageName: node - linkType: hard - -"es-abstract@npm:^1.20.4": - version: 1.20.5 - resolution: "es-abstract@npm:1.20.5" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - gopd: ^1.0.1 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - is-callable: ^1.2.7 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.6 - string.prototype.trimstart: ^1.0.6 - unbox-primitive: ^1.0.2 - checksum: 00564779ddaf7fb977ab5aa2b8ea2cbd4fa2335ad5368f788bd0bb094c86bc1790335dd9c3e30374bb0af2fa54c724fb4e0c73659dcfe8e427355a56f2b65946 +"es-array-method-boxes-properly@npm:^1.0.0": + version: 1.0.0 + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 2537fcd1cecf187083890bc6f5236d3a26bf39237433587e5bf63392e88faae929dbba78ff0120681a3f6f81c23fe3816122982c160d63b38c95c830b633b826 languageName: node linkType: hard @@ -32206,23 +27241,7 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.1.1": - version: 1.1.2 - resolution: "es-get-iterator@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.0 - has-symbols: ^1.0.1 - is-arguments: ^1.1.0 - is-map: ^2.0.2 - is-set: ^2.0.2 - is-string: ^1.0.5 - isarray: ^2.0.5 - checksum: f75e66acb6a45686fa08b3ade9c9421a70d36a0c43ed4363e67f4d7aab2226cb73dd977cb48abbaf75721b946d3cd810682fcf310c7ad0867802fbf929b17dcf - languageName: node - linkType: hard - -"es-get-iterator@npm:^1.1.3": +"es-get-iterator@npm:^1.1.1, es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" dependencies: @@ -32239,9 +27258,9 @@ __metadata: languageName: node linkType: hard -"es-iterator-helpers@npm:^1.0.19": - version: 1.0.19 - resolution: "es-iterator-helpers@npm:1.0.19" +"es-iterator-helpers@npm:^1.1.0": + version: 1.1.0 + resolution: "es-iterator-helpers@npm:1.1.0" dependencies: call-bind: ^1.0.7 define-properties: ^1.2.1 @@ -32250,25 +27269,18 @@ __metadata: es-set-tostringtag: ^2.0.3 function-bind: ^1.1.2 get-intrinsic: ^1.2.4 - globalthis: ^1.0.3 + globalthis: ^1.0.4 has-property-descriptors: ^1.0.2 has-proto: ^1.0.3 has-symbols: ^1.0.3 internal-slot: ^1.0.7 - iterator.prototype: ^1.1.2 + iterator.prototype: ^1.1.3 safe-array-concat: ^1.1.2 - checksum: 7ae112b88359fbaf4b9d7d1d1358ae57c5138768c57ba3a8fb930393662653b0512bfd7917c15890d1471577fb012fee8b73b4465e59b331739e6ee94f961683 - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.2.1": - version: 1.2.1 - resolution: "es-module-lexer@npm:1.2.1" - checksum: c4145b853e1491eaa5d591e4580926d242978c38071ad3d09165c3b6d50314cc0ae3bf6e1dec81a9e53768b9299df2063d2e4a67d7742a5029ddeae6c4fc26f0 + checksum: 4ba3a32ab7ba05b85f0ae30604feeb8ffd801fe762e9df9577bd220a96b9eaa2e90af8e6bdc498e523051f293955e2f7d2bddd34de71e1428a1b8ff3fd961016 languageName: node linkType: hard -"es-module-lexer@npm:^1.4.1": +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.4.1": version: 1.5.4 resolution: "es-module-lexer@npm:1.5.4" checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f @@ -32295,16 +27307,7 @@ __metadata: languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0": - version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" - dependencies: - has: ^1.0.3 - checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.2": +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": version: 1.0.2 resolution: "es-shim-unscopables@npm:1.0.2" dependencies: @@ -32324,18 +27327,19 @@ __metadata: languageName: node linkType: hard -"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.59, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": - version: 0.10.60 - resolution: "es5-ext@npm:0.10.60" +"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.62, es5-ext@npm:^0.10.64, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2": + version: 0.10.64 + resolution: "es5-ext@npm:0.10.64" dependencies: es6-iterator: ^2.0.3 es6-symbol: ^3.1.3 + esniff: ^2.0.1 next-tick: ^1.1.0 - checksum: 382e7532ef480fbceb6f315bd394fab65aa5b00fbbc4f9adc2144eb1fd27cade6ba4c544289f10c74cf07f4e724a70e5dc374ac1504e667b72495bd244847763 + checksum: 01179fab0769fdbef213062222f99d0346724dbaccf04b87c0e6ee7f0c97edabf14be647ca1321f0497425ea7145de0fd278d1b3f3478864b8933e7136a5c645 languageName: node linkType: hard -"es6-iterator@npm:^2.0.3, es6-iterator@npm:~2.0.1": +"es6-iterator@npm:^2.0.3": version: 2.0.3 resolution: "es6-iterator@npm:2.0.3" dependencies: @@ -32346,27 +27350,6 @@ __metadata: languageName: node linkType: hard -"es6-map@npm:^0.1.5": - version: 0.1.5 - resolution: "es6-map@npm:0.1.5" - dependencies: - d: 1 - es5-ext: ~0.10.14 - es6-iterator: ~2.0.1 - es6-set: ~0.1.5 - es6-symbol: ~3.1.1 - event-emitter: ~0.3.5 - checksum: 124c4f61be1a6d3378a22950f7548dc4b1d3b6d736a80f9c96d763e4119df962315879045d4b5f8e54d645cbed5e2d742aac2211b43ee16d97f06a357d81b162 - languageName: node - linkType: hard - -"es6-object-assign@npm:^1.1.0": - version: 1.1.0 - resolution: "es6-object-assign@npm:1.1.0" - checksum: 8d4fdf63484d78b5c64cacc2c2e1165bc7b6a64b739d2a9db6a4dc8641d99cc9efb433cdd4dc3d3d6b00bfa6ce959694e4665e3255190339945c5f33b692b5d8 - languageName: node - linkType: hard - "es6-promise@npm:^3.1.2, es6-promise@npm:^3.2.1": version: 3.3.1 resolution: "es6-promise@npm:3.3.1" @@ -32374,52 +27357,13 @@ __metadata: languageName: node linkType: hard -"es6-promise@npm:^4.0.3": - version: 4.2.8 - resolution: "es6-promise@npm:4.2.8" - checksum: 95614a88873611cb9165a85d36afa7268af5c03a378b35ca7bda9508e1d4f1f6f19a788d4bc755b3fd37c8ebba40782018e02034564ff24c9d6fa37e959ad57d - languageName: node - linkType: hard - -"es6-promisify@npm:^5.0.0": - version: 5.0.0 - resolution: "es6-promisify@npm:5.0.0" - dependencies: - es6-promise: ^4.0.3 - checksum: fbed9d791598831413be84a5374eca8c24800ec71a16c1c528c43a98e2dadfb99331483d83ae6094ddb9b87e6f799a15d1553cebf756047e0865c753bc346b92 - languageName: node - linkType: hard - -"es6-set@npm:^0.1.5, es6-set@npm:~0.1.5": - version: 0.1.5 - resolution: "es6-set@npm:0.1.5" - dependencies: - d: 1 - es5-ext: ~0.10.14 - es6-iterator: ~2.0.1 - es6-symbol: 3.1.1 - event-emitter: ~0.3.5 - checksum: 8f205eb5eacfee8fbb2c70a8b8f988537d6fd4e16ab6d43511b736f5be5ae4d24b16b04acc0b1afd2f9bdb7e536d90a92875904c16590e28fcc18ca985a09f64 - languageName: node - linkType: hard - -"es6-symbol@npm:3.1.1": - version: 3.1.1 - resolution: "es6-symbol@npm:3.1.1" - dependencies: - d: 1 - es5-ext: ~0.10.14 - checksum: 0aca3bfe44d90a77f4f76588b41de5267956d0bdbf2b57120da27314f14dab35dd07cb4188cbae879e1aa1a1e1b0d0d2e2006466738bef808eef58b2c50adc99 - languageName: node - linkType: hard - -"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3, es6-symbol@npm:~3.1.1": - version: 3.1.3 - resolution: "es6-symbol@npm:3.1.3" +"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3": + version: 3.1.4 + resolution: "es6-symbol@npm:3.1.4" dependencies: - d: ^1.0.1 - ext: ^1.1.2 - checksum: cd49722c2a70f011eb02143ef1c8c70658d2660dead6641e160b94619f408b9cf66425515787ffe338affdf0285ad54f4eae30ea5bd510e33f8659ec53bcaa70 + d: ^1.0.2 + ext: ^1.7.0 + checksum: 52125ec4b5d1b6b93b8d3d42830bb19f8da21080ffcf45253b614bc6ff3e31349be202fb745d4d1af6778cdf5e38fea30e0c7e7dc37e2aecd44acc43502055f9 languageName: node linkType: hard @@ -32442,18 +27386,7 @@ __metadata: languageName: node linkType: hard -"esbuild-register@npm:^3.4.0": - version: 3.4.2 - resolution: "esbuild-register@npm:3.4.2" - dependencies: - debug: ^4.3.4 - peerDependencies: - esbuild: ">=0.12 <1" - checksum: f65d1ccb58b1ccbba376efb1fc023abe22731d9b79eead1b0120e57d4413318f063696257a5af637b527fa1d3f009095aa6edb1bf6ff69d637a9ab281fb727b3 - languageName: node - linkType: hard - -"esbuild-register@npm:^3.5.0": +"esbuild-register@npm:^3.4.0, esbuild-register@npm:^3.5.0": version: 3.6.0 resolution: "esbuild-register@npm:3.6.0" dependencies: @@ -32534,82 +27467,245 @@ __metadata: optional: true "@esbuild/netbsd-x64": optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c - languageName: node - linkType: hard - -"esbuild@npm:^0.18.0": - version: 0.18.20 - resolution: "esbuild@npm:0.18.20" - dependencies: - "@esbuild/android-arm": 0.18.20 - "@esbuild/android-arm64": 0.18.20 - "@esbuild/android-x64": 0.18.20 - "@esbuild/darwin-arm64": 0.18.20 - "@esbuild/darwin-x64": 0.18.20 - "@esbuild/freebsd-arm64": 0.18.20 - "@esbuild/freebsd-x64": 0.18.20 - "@esbuild/linux-arm": 0.18.20 - "@esbuild/linux-arm64": 0.18.20 - "@esbuild/linux-ia32": 0.18.20 - "@esbuild/linux-loong64": 0.18.20 - "@esbuild/linux-mips64el": 0.18.20 - "@esbuild/linux-ppc64": 0.18.20 - "@esbuild/linux-riscv64": 0.18.20 - "@esbuild/linux-s390x": 0.18.20 - "@esbuild/linux-x64": 0.18.20 - "@esbuild/netbsd-x64": 0.18.20 - "@esbuild/openbsd-x64": 0.18.20 - "@esbuild/sunos-x64": 0.18.20 - "@esbuild/win32-arm64": 0.18.20 - "@esbuild/win32-ia32": 0.18.20 - "@esbuild/win32-x64": 0.18.20 - dependenciesMeta: - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c + languageName: node + linkType: hard + +"esbuild@npm:^0.18.0": + version: 0.18.20 + resolution: "esbuild@npm:0.18.20" + dependencies: + "@esbuild/android-arm": 0.18.20 + "@esbuild/android-arm64": 0.18.20 + "@esbuild/android-x64": 0.18.20 + "@esbuild/darwin-arm64": 0.18.20 + "@esbuild/darwin-x64": 0.18.20 + "@esbuild/freebsd-arm64": 0.18.20 + "@esbuild/freebsd-x64": 0.18.20 + "@esbuild/linux-arm": 0.18.20 + "@esbuild/linux-arm64": 0.18.20 + "@esbuild/linux-ia32": 0.18.20 + "@esbuild/linux-loong64": 0.18.20 + "@esbuild/linux-mips64el": 0.18.20 + "@esbuild/linux-ppc64": 0.18.20 + "@esbuild/linux-riscv64": 0.18.20 + "@esbuild/linux-s390x": 0.18.20 + "@esbuild/linux-x64": 0.18.20 + "@esbuild/netbsd-x64": 0.18.20 + "@esbuild/openbsd-x64": 0.18.20 + "@esbuild/sunos-x64": 0.18.20 + "@esbuild/win32-arm64": 0.18.20 + "@esbuild/win32-ia32": 0.18.20 + "@esbuild/win32-x64": 0.18.20 + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 5d253614e50cdb6ec22095afd0c414f15688e7278a7eb4f3720a6dd1306b0909cf431e7b9437a90d065a31b1c57be60130f63fe3e8d0083b588571f31ee6ec7b + languageName: node + linkType: hard + +"esbuild@npm:^0.21.3": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": 0.21.5 + "@esbuild/android-arm": 0.21.5 + "@esbuild/android-arm64": 0.21.5 + "@esbuild/android-x64": 0.21.5 + "@esbuild/darwin-arm64": 0.21.5 + "@esbuild/darwin-x64": 0.21.5 + "@esbuild/freebsd-arm64": 0.21.5 + "@esbuild/freebsd-x64": 0.21.5 + "@esbuild/linux-arm": 0.21.5 + "@esbuild/linux-arm64": 0.21.5 + "@esbuild/linux-ia32": 0.21.5 + "@esbuild/linux-loong64": 0.21.5 + "@esbuild/linux-mips64el": 0.21.5 + "@esbuild/linux-ppc64": 0.21.5 + "@esbuild/linux-riscv64": 0.21.5 + "@esbuild/linux-s390x": 0.21.5 + "@esbuild/linux-x64": 0.21.5 + "@esbuild/netbsd-x64": 0.21.5 + "@esbuild/openbsd-x64": 0.21.5 + "@esbuild/sunos-x64": 0.21.5 + "@esbuild/win32-arm64": 0.21.5 + "@esbuild/win32-ia32": 0.21.5 + "@esbuild/win32-x64": 0.21.5 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 2911c7b50b23a9df59a7d6d4cdd3a4f85855787f374dce751148dbb13305e0ce7e880dde1608c2ab7a927fc6cec3587b80995f7fc87a64b455f8b70b55fd8ec1 + languageName: node + linkType: hard + +"esbuild@npm:esbuild@>=0.17.6 <0.24.0": + version: 0.23.1 + resolution: "esbuild@npm:0.23.1" + dependencies: + "@esbuild/aix-ppc64": 0.23.1 + "@esbuild/android-arm": 0.23.1 + "@esbuild/android-arm64": 0.23.1 + "@esbuild/android-x64": 0.23.1 + "@esbuild/darwin-arm64": 0.23.1 + "@esbuild/darwin-x64": 0.23.1 + "@esbuild/freebsd-arm64": 0.23.1 + "@esbuild/freebsd-x64": 0.23.1 + "@esbuild/linux-arm": 0.23.1 + "@esbuild/linux-arm64": 0.23.1 + "@esbuild/linux-ia32": 0.23.1 + "@esbuild/linux-loong64": 0.23.1 + "@esbuild/linux-mips64el": 0.23.1 + "@esbuild/linux-ppc64": 0.23.1 + "@esbuild/linux-riscv64": 0.23.1 + "@esbuild/linux-s390x": 0.23.1 + "@esbuild/linux-x64": 0.23.1 + "@esbuild/netbsd-x64": 0.23.1 + "@esbuild/openbsd-arm64": 0.23.1 + "@esbuild/openbsd-x64": 0.23.1 + "@esbuild/sunos-x64": 0.23.1 + "@esbuild/win32-arm64": 0.23.1 + "@esbuild/win32-ia32": 0.23.1 + "@esbuild/win32-x64": 0.23.1 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": optional: true "@esbuild/openbsd-x64": optional: true @@ -32623,14 +27719,14 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 5d253614e50cdb6ec22095afd0c414f15688e7278a7eb4f3720a6dd1306b0909cf431e7b9437a90d065a31b1c57be60130f63fe3e8d0083b588571f31ee6ec7b + checksum: 0413c3b9257327fb598427688b7186ea335bf1693746fe5713cc93c95854d6388b8ed4ad643fddf5b5ace093f7dcd9038dd58e087bf2da1f04dfb4c5571660af languageName: node linkType: hard "escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e languageName: node linkType: hard @@ -32676,7 +27772,7 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^1.11.1, escodegen@npm:^1.13.0, escodegen@npm:^1.8.1": +"escodegen@npm:^1.13.0, escodegen@npm:^1.8.1": version: 1.14.3 resolution: "escodegen@npm:1.14.3" dependencies: @@ -32695,26 +27791,7 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" - dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - optionator: ^0.8.1 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef - languageName: node - linkType: hard - -"escodegen@npm:^2.1.0": +"escodegen@npm:^2.0.0, escodegen@npm:^2.1.0": version: 2.1.0 resolution: "escodegen@npm:2.1.0" dependencies: @@ -32777,28 +27854,7 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.6": - version: 0.3.6 - resolution: "eslint-import-resolver-node@npm:0.3.6" - dependencies: - debug: ^3.2.7 - resolve: ^1.20.0 - checksum: 6266733af1e112970e855a5bcc2d2058fb5ae16ad2a6d400705a86b29552b36131ffc5581b744c23d550de844206fb55e9193691619ee4dbf225c4bde526b1c8 - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.7": - version: 0.3.7 - resolution: "eslint-import-resolver-node@npm:0.3.7" - dependencies: - debug: ^3.2.7 - is-core-module: ^2.11.0 - resolve: ^1.22.1 - checksum: 3379aacf1d2c6952c1b9666c6fa5982c3023df695430b0d391c0029f6403a7775414873d90f397e98ba6245372b6c8960e16e74d9e4a3b0c0a4582f3bdbe3d6e - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.9": +"eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.7, eslint-import-resolver-node@npm:^0.3.9": version: 0.3.9 resolution: "eslint-import-resolver-node@npm:0.3.9" dependencies: @@ -32810,45 +27866,39 @@ __metadata: linkType: hard "eslint-import-resolver-typescript@npm:^3.5.2": - version: 3.5.5 - resolution: "eslint-import-resolver-typescript@npm:3.5.5" + version: 3.6.3 + resolution: "eslint-import-resolver-typescript@npm:3.6.3" dependencies: - debug: ^4.3.4 - enhanced-resolve: ^5.12.0 - eslint-module-utils: ^2.7.4 - get-tsconfig: ^4.5.0 - globby: ^13.1.3 - is-core-module: ^2.11.0 + "@nolyfill/is-core-module": 1.0.39 + debug: ^4.3.5 + enhanced-resolve: ^5.15.0 + eslint-module-utils: ^2.8.1 + fast-glob: ^3.3.2 + get-tsconfig: ^4.7.5 + is-bun-module: ^1.0.2 is-glob: ^4.0.3 - synckit: ^0.8.5 peerDependencies: eslint: "*" eslint-plugin-import: "*" - checksum: 27e6276fdff5d377c9036362ff736ac29852106e883ff589ea9092dc57d4bc2a67a82d75134221124f05045f9a7e2114a159b2c827d1f9f64d091f7afeab0f58 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.7.4": - version: 2.8.0 - resolution: "eslint-module-utils@npm:2.8.0" - dependencies: - debug: ^3.2.7 + eslint-plugin-import-x: "*" peerDependenciesMeta: - eslint: + eslint-plugin-import: optional: true - checksum: 74c6dfea7641ebcfe174be61168541a11a14aa8d72e515f5f09af55cd0d0862686104b0524aa4b8e0ce66418a44aa38a94d2588743db5fd07a6b49ffd16921d2 + eslint-plugin-import-x: + optional: true + checksum: 1ed0cab4f3852de1b14ea6978e76c27694b253a289c2030a35847ba8ab6ac4258d513877f83ea7bc265f746d570240a6348b11d77cc9cd77589749ad86a32234 languageName: node linkType: hard -"eslint-module-utils@npm:^2.8.0": - version: 2.8.1 - resolution: "eslint-module-utils@npm:2.8.1" +"eslint-module-utils@npm:^2.12.0, eslint-module-utils@npm:^2.7.4, eslint-module-utils@npm:^2.8.1": + version: 2.12.0 + resolution: "eslint-module-utils@npm:2.12.0" dependencies: debug: ^3.2.7 peerDependenciesMeta: eslint: optional: true - checksum: 3cecd99b6baf45ffc269167da0f95dcb75e5aa67b93d73a3bab63e2a7eedd9cdd6f188eed048e2f57c1b77db82c9cbf2adac20b512fa70e597d863dd3720170d + checksum: be3ac52e0971c6f46daeb1a7e760e45c7c45f820c8cc211799f85f10f04ccbf7afc17039165d56cb2da7f7ca9cec2b3a777013cddf0b976784b37eb9efa24180 languageName: node linkType: hard @@ -32914,29 +27964,31 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.28.1": - version: 2.29.1 - resolution: "eslint-plugin-import@npm:2.29.1" + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" dependencies: - array-includes: ^3.1.7 - array.prototype.findlastindex: ^1.2.3 + "@rtsao/scc": ^1.1.0 + array-includes: ^3.1.8 + array.prototype.findlastindex: ^1.2.5 array.prototype.flat: ^1.3.2 array.prototype.flatmap: ^1.3.2 debug: ^3.2.7 doctrine: ^2.1.0 eslint-import-resolver-node: ^0.3.9 - eslint-module-utils: ^2.8.0 - hasown: ^2.0.0 - is-core-module: ^2.13.1 + eslint-module-utils: ^2.12.0 + hasown: ^2.0.2 + is-core-module: ^2.15.1 is-glob: ^4.0.3 minimatch: ^3.1.2 - object.fromentries: ^2.0.7 - object.groupby: ^1.0.1 - object.values: ^1.1.7 + object.fromentries: ^2.0.8 + object.groupby: ^1.0.3 + object.values: ^1.2.0 semver: ^6.3.1 + string.prototype.trimend: ^1.0.8 tsconfig-paths: ^3.15.0 peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: e65159aef808136d26d029b71c8c6e4cb5c628e65e5de77f1eb4c13a379315ae55c9c3afa847f43f4ff9df7e54515c77ffc6489c6a6f81f7dd7359267577468c + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: b1d2ac268b3582ff1af2a72a2c476eae4d250c100f2e335b6e102036e4a35efa530b80ec578dfc36761fabb34a635b9bf5ab071abe9d4404a4bb054fdf22d415 languageName: node linkType: hard @@ -32985,28 +28037,28 @@ __metadata: linkType: hard "eslint-plugin-jsx-a11y@npm:^6.7.1": - version: 6.9.0 - resolution: "eslint-plugin-jsx-a11y@npm:6.9.0" + version: 6.10.1 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.1" dependencies: - aria-query: ~5.1.3 + aria-query: ^5.3.2 array-includes: ^3.1.8 array.prototype.flatmap: ^1.3.2 ast-types-flow: ^0.0.8 - axe-core: ^4.9.1 - axobject-query: ~3.1.1 + axe-core: ^4.10.0 + axobject-query: ^4.1.0 damerau-levenshtein: ^1.0.8 emoji-regex: ^9.2.2 - es-iterator-helpers: ^1.0.19 + es-iterator-helpers: ^1.1.0 hasown: ^2.0.2 jsx-ast-utils: ^3.3.5 language-tags: ^1.0.9 minimatch: ^3.1.2 object.fromentries: ^2.0.8 safe-regex-test: ^1.0.3 - string.prototype.includes: ^2.0.0 + string.prototype.includes: ^2.0.1 peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 122cbd22bbd8c3e4a37f386ec183ada63a4ecfa7af7d40cd8a110777ac5ad5ff542f60644596a9e2582ed138a1cc6d96c5d5ca934105e29d5245d6c951ebc3ef + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + checksum: 6399ed556306edd454c3d835fee475e6a286aa44c8fb95b4e9245717ff26f7a251f38d75e194293d78fdbc8f2fdbf223573ac2c82dc1e2db3d5d6c137632b6ec languageName: node linkType: hard @@ -33102,44 +28154,16 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:^7.30.1": - version: 7.34.2 - resolution: "eslint-plugin-react@npm:7.34.2" - dependencies: - array-includes: ^3.1.8 - array.prototype.findlast: ^1.2.5 - array.prototype.flatmap: ^1.3.2 - array.prototype.toreversed: ^1.1.2 - array.prototype.tosorted: ^1.1.3 - doctrine: ^2.1.0 - es-iterator-helpers: ^1.0.19 - estraverse: ^5.3.0 - jsx-ast-utils: ^2.4.1 || ^3.0.0 - minimatch: ^3.1.2 - object.entries: ^1.1.8 - object.fromentries: ^2.0.8 - object.hasown: ^1.1.4 - object.values: ^1.2.0 - prop-types: ^15.8.1 - resolve: ^2.0.0-next.5 - semver: ^6.3.1 - string.prototype.matchall: ^4.0.11 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: aed331239f3a64fcd884380534ece4b8716f1eca4899c8636d04306879e6b4e7339e28e427bdd571d372b78b713025e0767e5f5b5486a8d19bff82616ebe8959 - languageName: node - linkType: hard - -"eslint-plugin-react@npm:^7.33.2": - version: 7.35.0 - resolution: "eslint-plugin-react@npm:7.35.0" +"eslint-plugin-react@npm:^7.30.1, eslint-plugin-react@npm:^7.33.2": + version: 7.37.2 + resolution: "eslint-plugin-react@npm:7.37.2" dependencies: array-includes: ^3.1.8 array.prototype.findlast: ^1.2.5 array.prototype.flatmap: ^1.3.2 array.prototype.tosorted: ^1.1.4 doctrine: ^2.1.0 - es-iterator-helpers: ^1.0.19 + es-iterator-helpers: ^1.1.0 estraverse: ^5.3.0 hasown: ^2.0.2 jsx-ast-utils: ^2.4.1 || ^3.0.0 @@ -33154,7 +28178,7 @@ __metadata: string.prototype.repeat: ^1.0.0 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: cd4d3c0567e947964643dda5fc80147e058d75f06bac47c3f086ff0cd6156286c669d98e685e3834997c4043f3922b90e6374b6c3658f22abd025dbd41acc23f + checksum: 7f5203afee7fbe3702b27fdd2b9a3c0ccbbb47d0672f58311b9d8a08dea819c9da4a87c15e8bd508f2562f327a9d29ee8bd9cd189bf758d8dc903de5648b0bfa languageName: node linkType: hard @@ -33168,8 +28192,8 @@ __metadata: linkType: hard "eslint-plugin-storybook@npm:^0.6.12": - version: 0.6.12 - resolution: "eslint-plugin-storybook@npm:0.6.12" + version: 0.6.15 + resolution: "eslint-plugin-storybook@npm:0.6.15" dependencies: "@storybook/csf": ^0.0.1 "@typescript-eslint/utils": ^5.45.0 @@ -33177,7 +28201,7 @@ __metadata: ts-dedent: ^2.2.0 peerDependencies: eslint: ">=6" - checksum: 8e0e160c71216019c291a5a03b797b5359076067d16ea03b3dec63594093d45398f028d15c47eb89f2ddb6e8db18cc7e376b02d921dacc4fb31bbc8da46363c8 + checksum: e2c4d7be3e695c88d7194c363fba8ac644b36583bf9d608aa59dcd53cc5e422f7828611ee49c7934639ce827c0206d33fa94b3ea452ffbd2c8e7254ed90bc412 languageName: node linkType: hard @@ -33208,21 +28232,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.4.1": - version: 3.4.1 - resolution: "eslint-visitor-keys@npm:3.4.1" - checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0": - version: 3.3.0 - resolution: "eslint-visitor-keys@npm:3.3.0" - checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 @@ -33277,18 +28287,19 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.0.0": - version: 9.4.1 - resolution: "espree@npm:9.4.1" +"esniff@npm:^2.0.1": + version: 2.0.1 + resolution: "esniff@npm:2.0.1" dependencies: - acorn: ^8.8.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.3.0 - checksum: 4d266b0cf81c7dfe69e542c7df0f246e78d29f5b04dda36e514eb4c7af117ee6cfbd3280e560571ed82ff6c9c3f0003c05b82583fc7a94006db7497c4fe4270e + d: ^1.0.1 + es5-ext: ^0.10.62 + event-emitter: ^0.3.5 + type: ^2.7.2 + checksum: d814c0e5c39bce9925b2e65b6d8767af72c9b54f35a65f9f3d6e8c606dce9aebe35a9599d30f15b0807743f88689f445163cfb577a425de4fb8c3c5bc16710cc languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": +"espree@npm:^9.0.0, espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" dependencies: @@ -33299,6 +28310,16 @@ __metadata: languageName: node linkType: hard +"esprima@npm:1.2.2": + version: 1.2.2 + resolution: "esprima@npm:1.2.2" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 4f10006f0e315f2f7d8cf6630e465f183512f1ab2e862b11785a133ce37ed1696573deefb5256e510eaa4368342b13b393334477f6ccdcdb8f10e782b0f5e6dc + languageName: node + linkType: hard + "esprima@npm:^2.1.0": version: 2.7.3 resolution: "esprima@npm:2.7.3" @@ -33319,21 +28340,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" - dependencies: - estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 - languageName: node - linkType: hard - -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.4.0, esquery@npm:^1.4.2": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: ^5.1.0 - checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 + checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 languageName: node linkType: hard @@ -33360,14 +28372,7 @@ __metadata: languageName: node linkType: hard -"estree-is-function@npm:^1.0.0": - version: 1.0.0 - resolution: "estree-is-function@npm:1.0.0" - checksum: eb4c0ca96f75f1fe14e4520823d40b55266377c50f81201e0172ac2c879c2770d1e6145897748b67e4855821a7e58e31e04d14ec32fd6132845dd068627b60d8 - languageName: node - linkType: hard - -"estree-walker@npm:^2.0.1": +"estree-walker@npm:^2.0.2": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc @@ -33397,7 +28402,17 @@ __metadata: languageName: node linkType: hard -"event-emitter@npm:^0.3.5, event-emitter@npm:~0.3.5": +"eval@npm:0.1.8": + version: 0.1.8 + resolution: "eval@npm:0.1.8" + dependencies: + "@types/node": "*" + require-like: ">= 0.1.1" + checksum: d005567f394cfbe60948e34982e4637d2665030f9aa7dcac581ea6f9ec6eceb87133ed3dc0ae21764aa362485c242a731dbb6371f1f1a86807c58676431e9d1a + languageName: node + linkType: hard + +"event-emitter@npm:^0.3.5": version: 0.3.5 resolution: "event-emitter@npm:0.3.5" dependencies: @@ -33449,6 +28464,13 @@ __metadata: languageName: node linkType: hard +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 543d6c858ab699303c3c32e0f0f47fc64d360bf73c3daf0ac0b5079710e340d6fe9f15487f94e66c629f5f82cd1a8678d692f3dbb6f6fcd1190e1b97fcad36f8 + languageName: node + linkType: hard + "events@npm:1.1.1": version: 1.1.1 resolution: "events@npm:1.1.1" @@ -33513,24 +28535,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0": - version: 5.0.0 - resolution: "execa@npm:5.0.0" - dependencies: - cross-spawn: ^7.0.3 - get-stream: ^6.0.0 - human-signals: ^2.1.0 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.1 - onetime: ^5.1.2 - signal-exit: ^3.0.3 - strip-final-newline: ^2.0.0 - checksum: a044367ebdcc68ca019810cb134510fc77bbc55c799122258ee0e00e289c132941ab48c2a331a036699c42bc8d479d451ae67c105fce5ce5cc813e7dd92d642b - languageName: node - linkType: hard - -"execa@npm:^5.1.1": +"execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -33547,20 +28552,20 @@ __metadata: languageName: node linkType: hard -"execa@npm:^7.1.1": - version: 7.1.1 - resolution: "execa@npm:7.1.1" +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" dependencies: cross-spawn: ^7.0.3 - get-stream: ^6.0.1 - human-signals: ^4.3.0 + get-stream: ^8.0.1 + human-signals: ^5.0.0 is-stream: ^3.0.0 merge-stream: ^2.0.0 npm-run-path: ^5.1.0 onetime: ^6.0.0 - signal-exit: ^3.0.7 + signal-exit: ^4.1.0 strip-final-newline: ^3.0.0 - checksum: 21fa46fc69314ace4068cf820142bdde5b643a5d89831c2c9349479c1555bff137a291b8e749e7efca36535e4e0a8c772c11008ca2e84d2cbd6ca141a3c8f937 + checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f languageName: node linkType: hard @@ -33601,20 +28606,7 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0": - version: 29.5.0 - resolution: "expect@npm:29.5.0" - dependencies: - "@jest/expect-utils": ^29.5.0 - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - checksum: 58f70b38693df6e5c6892db1bcd050f0e518d6f785175dc53917d4fa6a7359a048e5690e19ddcb96b65c4493881dd89a3dabdab1a84dfa55c10cdbdabf37b2d7 - languageName: node - linkType: hard - -"expect@npm:^29.7.0": +"expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: @@ -33787,6 +28779,13 @@ __metadata: languageName: node linkType: hard +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 + languageName: node + linkType: hard + "express-validator@npm:6.14.0": version: 6.14.0 resolution: "express-validator@npm:6.14.0" @@ -33797,7 +28796,7 @@ __metadata: languageName: node linkType: hard -"express@npm:4.18.2, express@npm:^4.17.3": +"express@npm:4.18.2": version: 4.18.2 resolution: "express@npm:4.18.2" dependencies: @@ -33875,12 +28874,51 @@ __metadata: languageName: node linkType: hard -"ext@npm:^1.1.2": - version: 1.4.0 - resolution: "ext@npm:1.4.0" +"express@npm:^4.17.3": + version: 4.21.1 + resolution: "express@npm:4.21.1" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: ~1.0.4 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: ~1.1.2 + on-finished: 2.4.1 + parseurl: ~1.3.3 + path-to-regexp: 0.1.10 + proxy-addr: ~2.0.7 + qs: 6.13.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 5ac2b26d8aeddda5564fc0907227d29c100f90c0ead2ead9d474dc5108e8fb306c2de2083c4e3ba326e0906466f2b73417dbac16961f4075ff9f03785fd940fe + languageName: node + linkType: hard + +"ext@npm:^1.7.0": + version: 1.7.0 + resolution: "ext@npm:1.7.0" dependencies: - type: ^2.0.0 - checksum: 70acfb68763ad888b34a1c8f2fd9ae5e7265c2470a58a7204645fea07fdbb802512944ea3820db5e643369a9364a98f01732c72e3f2ee577bc2582c3e7e370e3 + type: ^2.7.2 + checksum: ef481f9ef45434d8c867cfd09d0393b60945b7c8a1798bedc4514cb35aac342ccb8d8ecb66a513e6a2b4ec1e294a338e3124c49b29736f8e7c735721af352c31 languageName: node linkType: hard @@ -33920,13 +28958,6 @@ __metadata: languageName: node linkType: hard -"extract-files@npm:^9.0.0": - version: 9.0.0 - resolution: "extract-files@npm:9.0.0" - checksum: c31781d090f8d8f62cc541f1023b39ea863f24bd6fb3d4011922d71cbded70cef8191f2b70b43ec6cb5c5907cdad1dc5e9f29f78228936c10adc239091d8ab64 - languageName: node - linkType: hard - "extract-zip@npm:2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" @@ -33966,9 +28997,9 @@ __metadata: linkType: hard "extsprintf@npm:^1.2.0": - version: 1.4.0 - resolution: "extsprintf@npm:1.4.0" - checksum: 184dc8a413eb4b1ff16bdce797340e7ded4d28511d56a1c9afa5a95bcff6ace154063823eaf0206dbbb0d14059d74f382a15c34b7c0636fa74a7e681295eb67e + version: 1.4.1 + resolution: "extsprintf@npm:1.4.1" + checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 languageName: node linkType: hard @@ -33979,21 +29010,7 @@ __metadata: languageName: node linkType: hard -"fast-copy@npm:^2.1.0": - version: 2.1.1 - resolution: "fast-copy@npm:2.1.1" - checksum: fb091c7192d5514a632a05f3041ff597892bbfea16630853a8fff8c739c5628946ad32ccec9b69c8277a61419e9a4b751737139d8db396a9c4d9b35f1e151f76 - languageName: node - linkType: hard - -"fast-copy@npm:^2.1.1, fast-copy@npm:^2.1.3": - version: 2.1.3 - resolution: "fast-copy@npm:2.1.3" - checksum: 5d1a4a218304893ed0c4593b5d21b282202f9e74ed33fee261c0c574e81003863e0c6fd0d857451dfe15f3e1919acd8084ce52c2457c9410e61e1aea9b388029 - languageName: node - linkType: hard - -"fast-copy@npm:^2.1.7": +"fast-copy@npm:^2.1.0, fast-copy@npm:^2.1.1, fast-copy@npm:^2.1.7": version: 2.1.7 resolution: "fast-copy@npm:2.1.7" checksum: af8016c174b02bd4f706ffdf9f138511b17b748665b291fec6c5ca1922cb55da35cf86ded46b31890930bcf9b1c2481c03c793a47110ab81ec385e14972b9d7e @@ -34001,9 +29018,16 @@ __metadata: linkType: hard "fast-copy@npm:^3.0.0": - version: 3.0.1 - resolution: "fast-copy@npm:3.0.1" - checksum: 5496b5cf47df29eea479deef03b6b7188626a2cbc356b3015649062846729de6f1a9f555f937e772da8feae0a1231fab13096ed32424b2d61e4d065abc9969fe + version: 3.0.2 + resolution: "fast-copy@npm:3.0.2" + checksum: 47f584bcede08ab3198559d3e0e093a547d567715b86be2198da6e3366c3c73eed550d97b86f9fb90dae179982b89c15d68187def960f522cdce14bacdfc6184 + languageName: node + linkType: hard + +"fast-decode-uri-component@npm:^1.0.1": + version: 1.0.1 + resolution: "fast-decode-uri-component@npm:1.0.1" + checksum: 427a48fe0907e76f0e9a2c228e253b4d8a8ab21d130ee9e4bb8339c5ba4086235cf9576831f7b20955a752eae4b525a177ff9d5825dd8d416e7726939194fbee languageName: node linkType: hard @@ -34021,21 +29045,21 @@ __metadata: languageName: node linkType: hard -"fast-equals@npm:^2.0.0": - version: 2.0.3 - resolution: "fast-equals@npm:2.0.3" - checksum: ef475f52cb93f67c9452da3aed0d60a7cf63c844325cfd741b2863b2e9037a79c81e7f6786295b7f84501971626dce9e8b5d1e02c08506514a75d9cd9703240e +"fast-equals@npm:^5.0.0": + version: 5.0.1 + resolution: "fast-equals@npm:5.0.1" + checksum: fbb3b6a74f3a0fa930afac151ff7d01639159b4fddd2678b5d50708e0ba38e9ec14602222d10dadb8398187342692c04fbef5a62b1cfcc7942fe03e754e064bc languageName: node linkType: hard -"fast-fifo@npm:^1.1.0, fast-fifo@npm:^1.2.0": +"fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": version: 1.3.2 resolution: "fast-fifo@npm:1.3.2" checksum: 6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275 languageName: node linkType: hard -"fast-glob@npm:3.2.11, fast-glob@npm:^3.2.4, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9": +"fast-glob@npm:3.2.11": version: 3.2.11 resolution: "fast-glob@npm:3.2.11" dependencies: @@ -34061,20 +29085,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.5": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - dependencies: - "@nodelib/fs.stat": ^2.0.2 - "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.2 - merge2: ^1.3.0 - micromatch: ^4.0.4 - checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 - languageName: node - linkType: hard - -"fast-glob@npm:^3.3.2": +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.4, fast-glob@npm:^3.2.5, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -34115,6 +29126,15 @@ __metadata: languageName: node linkType: hard +"fast-querystring@npm:^1.1.1": + version: 1.1.2 + resolution: "fast-querystring@npm:1.1.2" + dependencies: + fast-decode-uri-component: ^1.0.1 + checksum: 7149f82ee9ac39a9c08c7ffe435b9f6deade76ae5e3675fe1835720513e8c4bc541e666b4b7b1c0c07e08f369dcf4828d00f2bee39889a90a168e1439cf27b0b + languageName: node + linkType: hard + "fast-safe-stringify@npm:2.1.1, fast-safe-stringify@npm:^2.0.6, fast-safe-stringify@npm:^2.0.7, fast-safe-stringify@npm:^2.1.1": version: 2.1.1 resolution: "fast-safe-stringify@npm:2.1.1" @@ -34137,9 +29157,18 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.1 - resolution: "fast-uri@npm:3.0.1" - checksum: 106143ff83705995225dcc559411288f3337e732bb2e264e79788f1914b6bd8f8bc3683102de60b15ba00e6ebb443633cabac77d4ebc5cb228c47cf955e199ff + version: 3.0.3 + resolution: "fast-uri@npm:3.0.3" + checksum: c52e6c86465f5c240e84a4485fb001088cc743d261a4b54b0050ce4758b1648bdbe53da1328ef9620149dca1435e3de64184f226d7c0a3656cb5837b3491e149 + languageName: node + linkType: hard + +"fast-url-parser@npm:^1.1.3": + version: 1.1.3 + resolution: "fast-url-parser@npm:1.1.3" + dependencies: + punycode: ^1.3.2 + checksum: 5043d0c4a8d775ff58504d56c096563c11b113e4cb8a2668c6f824a1cd4fb3812e2fdf76537eb24a7ce4ae7def6bd9747da630c617cf2a4b6ce0c42514e4f21c languageName: node linkType: hard @@ -34163,25 +29192,21 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:^4.0.12": - version: 4.2.0 - resolution: "fast-xml-parser@npm:4.2.0" +"fast-xml-parser@npm:^4.0.12, fast-xml-parser@npm:^4.2.2, fast-xml-parser@npm:^4.2.4": + version: 4.5.0 + resolution: "fast-xml-parser@npm:4.5.0" dependencies: strnum: ^1.0.5 bin: fxparser: src/cli/cli.js - checksum: 2e634740367781c365bd3d41608c1b39eceb8fc8a551228da09887220135cbaf16527c0d919c3334bea6ed416dc0171a6a8546a2beb3a4096f7cc32bbbc04091 + checksum: 696dc98da46f0f48eb26dfe1640a53043ea64f2420056374e62abbb5e620f092f8df3c3ff3195505a2eefab2057db3bf0ebaac63557f277934f6cce4e7da027c languageName: node linkType: hard -"fast-xml-parser@npm:^4.2.4": - version: 4.4.0 - resolution: "fast-xml-parser@npm:4.4.0" - dependencies: - strnum: ^1.0.5 - bin: - fxparser: src/cli/cli.js - checksum: ad33a4b5165a0ffcb6e17ae78825bd4619a8298844a8a8408f2ea141a0d2d9439d18865dc5254162f09fe54d510ff18e5d5c0a190869cab21fc745ee66be816b +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71 languageName: node linkType: hard @@ -34193,11 +29218,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.11.0 - resolution: "fastq@npm:1.11.0" + version: 1.17.1 + resolution: "fastq@npm:1.17.1" dependencies: reusify: ^1.0.4 - checksum: 9db0ceea9280c5f207da40c562a4e574913c18933cd74b880b01bf8e81a9a6e368ec71e89c9c1b9f4066d0275cc22600efd6dde87f713217acbf67076481734b + checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88 languageName: node linkType: hard @@ -34211,11 +29236,11 @@ __metadata: linkType: hard "fb-watchman@npm:^2.0.0": - version: 2.0.1 - resolution: "fb-watchman@npm:2.0.1" + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" dependencies: bser: 2.1.1 - checksum: 8510230778ab3a51c27dffb1b76ef2c24fab672a42742d3c0a45c2e9d1e5f20210b1fbca33486088da4a9a3958bde96b5aec0a63aac9894b4e9df65c88b2cbd6 + checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 languageName: node linkType: hard @@ -34236,17 +29261,17 @@ __metadata: linkType: hard "fbjs@npm:^3.0.0": - version: 3.0.0 - resolution: "fbjs@npm:3.0.0" + version: 3.0.5 + resolution: "fbjs@npm:3.0.5" dependencies: - cross-fetch: ^3.0.4 + cross-fetch: ^3.1.5 fbjs-css-vars: ^1.0.0 loose-envify: ^1.0.0 object-assign: ^4.1.0 promise: ^7.1.1 setimmediate: ^1.0.5 - ua-parser-js: ^0.7.18 - checksum: 85ec57d8dbeddd7c82bf8f111a3c7de1abc1f4d7c603d6ccbcc1ec8dce35ff5b7a113dd34acbf7930093e5533c37a2298a92d342077f967bef34dc7cf2f3f07e + ua-parser-js: ^1.0.35 + checksum: e609b5b64686bc96495a5c67728ed9b2710b9b3d695c5759c5f5e47c9483d1c323543ac777a86459e3694efc5712c6ce7212e944feb19752867d699568bb0e54 languageName: node linkType: hard @@ -34260,9 +29285,9 @@ __metadata: linkType: hard "fecha@npm:^4.2.0": - version: 4.2.0 - resolution: "fecha@npm:4.2.0" - checksum: 4eb4235959161446f6ec1a24e34eba7362187d2c96d9dd86ea4290e345d1efd2175ccb01bbef9ee852c6790aa7af2539d08361b0499ebc9bf23b4791f5666cd0 + version: 4.2.3 + resolution: "fecha@npm:4.2.3" + checksum: f94e2fb3acf5a7754165d04549460d3ae6c34830394d20c552197e3e000035d69732d74af04b9bed3283bf29fe2a9ebdcc0085e640b0be3cc3658b9726265e31 languageName: node linkType: hard @@ -34296,9 +29321,9 @@ __metadata: linkType: hard "fetch-retry@npm:^5.0.2": - version: 5.0.2 - resolution: "fetch-retry@npm:5.0.2" - checksum: 888d81e2a872cd47d4e5cf9156e13e7b73cb902a677f882a88fb3d8d5fb029a4238b44b07328dfb7735860b038fdc3d92acbef7f07d8633a314e4809d2f1f9c0 + version: 5.0.6 + resolution: "fetch-retry@npm:5.0.6" + checksum: 4ad8bca6ec7a7b1212e636bb422a9ae8bb9dce38df0b441c9eb77a29af99b368029d6248ff69427da67e3d43c53808b121135ea395e7fe4f8f383e0ad65b4f27 languageName: node linkType: hard @@ -34309,10 +29334,12 @@ __metadata: languageName: node linkType: hard -"figlet@npm:^1.1.1, figlet@npm:^1.2.0": - version: 1.5.2 - resolution: "figlet@npm:1.5.2" - checksum: cc860391669b44e119871d589e09a2814aa86351726a5791e0d3e2d098e4fc37171c85fcfed13f4e9000995bd004dc6dbf848da5fe458cf1477e776b7318986f +"figlet@npm:^1.2.0": + version: 1.8.0 + resolution: "figlet@npm:1.8.0" + bin: + figlet: bin/index.js + checksum: b59233a46e7f93fa08f3b7e86e6b24a9ae02cd94cfa2e9b8277311edf543a7a67ec278cd47846304f710f7dcbb9c28507ebcd113bc7b2e3094415ec229bb2a9a languageName: node linkType: hard @@ -34381,7 +29408,7 @@ __metadata: languageName: node linkType: hard -"file-system-cache@npm:2.3.0, file-system-cache@npm:^2.0.0": +"file-system-cache@npm:2.3.0": version: 2.3.0 resolution: "file-system-cache@npm:2.3.0" dependencies: @@ -34391,6 +29418,18 @@ __metadata: languageName: node linkType: hard +"file-system-cache@npm:^2.0.0": + version: 2.4.7 + resolution: "file-system-cache@npm:2.4.7" + dependencies: + "@types/fs-extra": 11.0.1 + "@types/ramda": 0.29.3 + fs-extra: 11.1.1 + ramda: 0.29.0 + checksum: e8511718a983c121525f53cb413dc6371662e69231f1736e364c496c1874ea0ee1f3284d9abd1ce87d40e6f62ab495b59794173dd9a62ce5ffab96feb93f43bf + languageName: node + linkType: hard + "file-uri-to-path@npm:1.0.0": version: 1.0.0 resolution: "file-uri-to-path@npm:1.0.0" @@ -34405,15 +29444,6 @@ __metadata: languageName: node linkType: hard -"filelist@npm:^1.0.1": - version: 1.0.2 - resolution: "filelist@npm:1.0.2" - dependencies: - minimatch: ^3.0.4 - checksum: 4d6953cb6f76c5345a52fc50222949e244946f485462ab6bae977176fff64fe5200cc1f44db175c27fc887f91cead401504c22eefcdcc064012ee44759947561 - languageName: node - linkType: hard - "filelist@npm:^1.0.4": version: 1.0.4 resolution: "filelist@npm:1.0.4" @@ -34423,12 +29453,12 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" dependencies: to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798 languageName: node linkType: hard @@ -34462,13 +29492,27 @@ __metadata: languageName: node linkType: hard +"finalhandler@npm:1.3.1": + version: 1.3.1 + resolution: "finalhandler@npm:1.3.1" + dependencies: + debug: 2.6.9 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + on-finished: 2.4.1 + parseurl: ~1.3.3 + statuses: 2.0.1 + unpipe: ~1.0.0 + checksum: a8c58cd97c9cd47679a870f6833a7b417043f5a288cd6af6d0f49b476c874a506100303a128b6d3b654c3d74fa4ff2ffed68a48a27e8630cda5c918f2977dcf4 + languageName: node + linkType: hard + "find-babel-config@npm:^2.1.1": - version: 2.1.1 - resolution: "find-babel-config@npm:2.1.1" + version: 2.1.2 + resolution: "find-babel-config@npm:2.1.2" dependencies: json5: ^2.2.3 - path-exists: ^4.0.0 - checksum: 4be54397339520e0cd49870acb10366684ffc001fd0b7bffedd0fe9d3e1d82234692d3cb4e5ba95280a35887238ba6f82dc79569a13a3749ae3931c23e0b3a99 + checksum: 268f29cb38ee086b0f953c89f762dcea30b5b0e14abee2b39516410c00b49baa6821f598bd50346c93584e5625c5740f5c8b7e34993f568787a068f84dacc8c2 languageName: node linkType: hard @@ -34483,7 +29527,7 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^3.0.0, find-cache-dir@npm:^3.3.1, find-cache-dir@npm:^3.3.2": +"find-cache-dir@npm:^3.0.0, find-cache-dir@npm:^3.3.1": version: 3.3.2 resolution: "find-cache-dir@npm:3.3.2" dependencies: @@ -34494,6 +29538,16 @@ __metadata: languageName: node linkType: hard +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" + dependencies: + common-path-prefix: ^3.0.0 + pkg-dir: ^7.0.0 + checksum: 52a456a80deeb27daa3af6e06059b63bdb9cc4af4d845fc6d6229887e505ba913cd56000349caa60bc3aa59dacdb5b4c37903d4ba34c75102d83cab330b70d2f + languageName: node + linkType: hard + "find-root@npm:^1.1.0": version: 1.1.0 resolution: "find-root@npm:1.1.0" @@ -34501,16 +29555,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:5.0.0, find-up@npm:^5.0.0, find-up@npm:~5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - "find-up@npm:^1.0.0": version: 1.1.2 resolution: "find-up@npm:1.1.2" @@ -34540,6 +29584,26 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^5.0.0, find-up@npm:~5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: ^7.1.0 + path-exists: ^5.0.0 + checksum: 9a21b7f9244a420e54c6df95b4f6fc3941efd3c3e5476f8274eb452f6a85706e7a6a90de71353ee4f091fcb4593271a6f92810a324ec542650398f928783c280 + languageName: node + linkType: hard + "find-yarn-workspace-root@npm:~2.0.0": version: 2.0.0 resolution: "find-yarn-workspace-root@npm:2.0.0" @@ -34573,12 +29637,13 @@ __metadata: linkType: hard "flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" dependencies: - flatted: ^3.1.0 + flatted: ^3.2.9 + keyv: ^4.5.3 rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 + checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec languageName: node linkType: hard @@ -34591,10 +29656,10 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.1.1 - resolution: "flatted@npm:3.1.1" - checksum: 508935e3366d95444131f0aaa801a4301f24ea5bcb900d12764e7335b46b910730cc1b5bcfcfb8eccb7c8db261ba0671c6a7ca30d10870ff7a7756dc7e731a7a +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 85ae7181650bb728c221e7644cbc9f4bf28bc556f2fc89bb21266962bdf0ce1029cc7acc44bb646cd469d9baac7c317f64e841c4c4c00516afa97320cdac7f94 languageName: node linkType: hard @@ -34606,9 +29671,9 @@ __metadata: linkType: hard "flow-parser@npm:0.*": - version: 0.203.1 - resolution: "flow-parser@npm:0.203.1" - checksum: ed9beb3d83e352ed646bd9c06fa2a96a0b71cfd6f83d7ccf75a7c16dbe844128bcefefa6c8d0f09ef1337d0e0a9a9c8dadfd25bb149ed657ce91ec63a0a5113b + version: 0.250.0 + resolution: "flow-parser@npm:0.250.0" + checksum: db4b5a6056e9853d83e2743621fa32311aa6af9633ac4eb083a51bcf4bc62dbac7df29dd9514006b4137c0a339d572d17ec6feeaa443782ed40aee17f8124d4a languageName: node linkType: hard @@ -34628,6 +29693,15 @@ __metadata: languageName: node linkType: hard +"focus-lock@npm:^1.3.5": + version: 1.3.5 + resolution: "focus-lock@npm:1.3.5" + dependencies: + tslib: ^2.0.3 + checksum: 09fb0e4402694aabafa8f7d49a656f683bbf39c94efc0c0240934d880792ef86d8c11bb7d77ef6f5d68ccfdfb7f191ecc2b38a259182a6791bcf96860a408d1c + languageName: node + linkType: hard + "folder-hash@npm:4.0.0": version: 4.0.0 resolution: "folder-hash@npm:4.0.0" @@ -34641,33 +29715,13 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0": - version: 1.14.8 - resolution: "follow-redirects@npm:1.14.8" - peerDependenciesMeta: - debug: - optional: true - checksum: 40c67899c2e3149a27e8b6498a338ff27f39fe138fde8d7f0756cb44b073ba0bfec3d52af28f20c5bdd67263d564d0d8d7b5efefd431de95c18c42f7b4aef457 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.14.9": - version: 1.15.2 - resolution: "follow-redirects@npm:1.15.2" - peerDependenciesMeta: - debug: - optional: true - checksum: faa66059b66358ba65c234c2f2a37fcec029dc22775f35d9ad6abac56003268baf41e55f9ee645957b32c7d9f62baf1f0b906e68267276f54ec4b4c597c2b190 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.15.6": - version: 1.15.6 - resolution: "follow-redirects@npm:1.15.6" +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.6": + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" peerDependenciesMeta: debug: optional: true - checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5 + checksum: 859e2bacc7a54506f2bf9aacb10d165df78c8c1b0ceb8023f966621b233717dab56e8d08baadc3ad3b9db58af290413d585c999694b7c146aaf2616340c3d2a6 languageName: node linkType: hard @@ -34703,10 +29757,10 @@ __metadata: linkType: hard "fontkit@npm:^2.0.2": - version: 2.0.2 - resolution: "fontkit@npm:2.0.2" + version: 2.0.4 + resolution: "fontkit@npm:2.0.4" dependencies: - "@swc/helpers": ^0.4.2 + "@swc/helpers": ^0.5.12 brotli: ^1.3.2 clone: ^2.1.2 dfa: ^1.2.0 @@ -34715,7 +29769,7 @@ __metadata: tiny-inflate: ^1.0.3 unicode-properties: ^1.4.0 unicode-trie: ^2.0.0 - checksum: ef5841a46cb46af56496646136a4e61f014360caacb8d69e3a4abfda9d89d66d2a68b0855494c070c4e0675fb57724c9db37154913413609ebb065d35b23838e + checksum: 5daefcfd2f3c93abedf9e086a6512310bf9c36d440de8500dd1fab001290b12e80a164b9d192163cec4738fd6218e981dbcca9c3005bfe44388dd7f9744a8a27 languageName: node linkType: hard @@ -34752,19 +29806,19 @@ __metadata: linkType: hard "foreach@npm:^2.0.4": - version: 2.0.5 - resolution: "foreach@npm:2.0.5" - checksum: dab4fbfef0b40b69ee5eab81bcb9626b8fa8b3469c8cfa26480f3e5e1ee08c40eae07048c9a967c65aeda26e774511ccc70b3f10a604c01753c6ef24361f0fc8 + version: 2.0.6 + resolution: "foreach@npm:2.0.6" + checksum: f7b68494545ee41cbd0b0425ebf5386c265dc38ef2a9b0d5cd91a1b82172e939b4cf9387f8e0ebf6db4e368fc79ed323f2198424d5c774515ac3ed9b08901c0e languageName: node linkType: hard "foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" dependencies: cross-spawn: ^7.0.0 signal-exit: ^4.0.1 - checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 + checksum: 1989698488f725b05b26bc9afc8a08f08ec41807cd7b92ad85d96004ddf8243fd3e79486b8348c64a3011ae5cc2c9f0936af989e1f28339805d8bc178a75b451 languageName: node linkType: hard @@ -34826,9 +29880,9 @@ __metadata: linkType: hard "form-data-encoder@npm:^1.7.1": - version: 1.7.2 - resolution: "form-data-encoder@npm:1.7.2" - checksum: aeebd87a1cb009e13cbb5e4e4008e6202ed5f6551eb6d9582ba8a062005178907b90f4887899d3c993de879159b6c0c940af8196725b428b4248cec5af3acf5f + version: 1.9.0 + resolution: "form-data-encoder@npm:1.9.0" + checksum: a73f617976f91b594dbd777ec5147abdb0c52d707475130f8cefc8ae9102ccf51be154b929f7c18323729c2763ac25b16055f5034bc188834e9febeb0d971d7f languageName: node linkType: hard @@ -34844,46 +29898,36 @@ __metadata: linkType: hard "form-data@npm:^2.3.1, form-data@npm:^2.3.3, form-data@npm:^2.5.0": - version: 2.5.1 - resolution: "form-data@npm:2.5.1" + version: 2.5.2 + resolution: "form-data@npm:2.5.2" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.6 mime-types: ^2.1.12 - checksum: 5134ada56cc246b293a1ac7678dba6830000603a3979cf83ff7b2f21f2e3725202237cfb89e32bcb38a1d35727efbd3c3a22e65b42321e8ade8eec01ce755d08 + safe-buffer: ^5.2.1 + checksum: 89ed3d96238d6fa874d75435e20f1aad28a1c22a88ab4e726ac4f6b0d29bef33d7e5aca51248c1070eccbbf4df94020a53842e800b2f1fb63073881a268113b4 languageName: node linkType: hard "form-data@npm:^3.0.0, form-data@npm:^3.0.1": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" + version: 3.0.2 + resolution: "form-data@npm:3.0.2" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.8 mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d + checksum: 25ffdeed693c8fc59b56082d15ad63f11688fabac2d14918fb339170020f66295e520a6659f3a698217f15c7924fbc593117ecd61d8391a146ea06d686793622 languageName: node linkType: hard -"form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" +"form-data@npm:^4.0.0, form-data@npm:~4.0.0": + version: 4.0.1 + resolution: "form-data@npm:4.0.1" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.8 mime-types: ^2.1.12 - checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c - languageName: node - linkType: hard - -"form-data@npm:~2.3.2": - version: 2.3.3 - resolution: "form-data@npm:2.3.3" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 + checksum: ccee458cd5baf234d6b57f349fe9cc5f9a2ea8fd1af5ecda501a18fd1572a6dd3bf08a49f00568afd995b6a65af34cb8dec083cf9d582c4e621836499498dd84 languageName: node linkType: hard @@ -34897,14 +29941,7 @@ __metadata: languageName: node linkType: hard -"formidable@npm:^1.2.0": - version: 1.2.2 - resolution: "formidable@npm:1.2.2" - checksum: 43b3ec9a8f8055112e1a9a40eb748cdcd86cb9076dc9a17b0caa2bc26908eeae865dbee62d7c4bc26681fb75c2f42d60323af9c9d06c843e94f51f9b46954a0a - languageName: node - linkType: hard - -"formidable@npm:^1.2.1, formidable@npm:^1.2.2": +"formidable@npm:^1.2.0, formidable@npm:^1.2.1": version: 1.2.6 resolution: "formidable@npm:1.2.6" checksum: 2b68ed07ba88302b9c63f8eda94f19a460cef6017bfda48348f09f41d2a36660c9353137991618e0e4c3db115b41e4b8f6fa63bc973b7a7c91dec66acdd02a56 @@ -34924,13 +29961,13 @@ __metadata: linkType: hard "formidable@npm:^3.2.4": - version: 3.5.1 - resolution: "formidable@npm:3.5.1" + version: 3.5.2 + resolution: "formidable@npm:3.5.2" dependencies: dezalgo: ^1.0.4 - hexoid: ^1.0.0 + hexoid: ^2.0.0 once: ^1.4.0 - checksum: 46b21496f9f985161cf7636163147b6728f9997c7e1d59433680d92619758bf6862330e6d105b5816bafcd1ab32f27ef183455991f93ef836ea731c68db62af9 + checksum: 7c7972e8a15d45e6d2315a54d77f0900e5c610aff9b5730de326e2b34630604e1eff6c9d666e5504fba4c8818ccaed682d76a4fdb718b160c6afa2c250bf6a76 languageName: node linkType: hard @@ -34959,9 +29996,9 @@ __metadata: linkType: hard "fp-ts@npm:^2.6.1": - version: 2.9.5 - resolution: "fp-ts@npm:2.9.5" - checksum: 92151abdc5d354c5b7f175554fa7beea57781b00d73bb77e114872e48cd8ac88653a95cc9771df965fa2388b807c3a82864a5c12676ed6d02131d46edb3ac242 + version: 2.16.9 + resolution: "fp-ts@npm:2.16.9" + checksum: 910a443dbd2a1a3f76527e8b9c1ccaae103cffd797b812cb2fdd7143fca5c010a05df35dca18bb7b2083249ceaec59fa0436c0c3f4b5b60bf5c62934c1a23ce5 languageName: node linkType: hard @@ -34972,10 +30009,10 @@ __metadata: languageName: node linkType: hard -"fraction.js@npm:^4.2.0": - version: 4.2.0 - resolution: "fraction.js@npm:4.2.0" - checksum: 8c76a6e21dedea87109d6171a0ac77afa14205794a565d71cb10d2925f629a3922da61bf45ea52dbc30bce4d8636dc0a27213a88cbd600eab047d82f9a3a94c5 +"fraction.js@npm:^4.3.7": + version: 4.3.7 + resolution: "fraction.js@npm:4.3.7" + checksum: e1553ae3f08e3ba0e8c06e43a3ab20b319966dfb7ddb96fd9b5d0ee11a66571af7f993229c88ebbb0d4a816eb813a24ed48207b140d442a8f76f33763b8d1f3f languageName: node linkType: hard @@ -35034,7 +30071,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:11.1.1, fs-extra@npm:^11.1.0": +"fs-extra@npm:11.1.1": version: 11.1.1 resolution: "fs-extra@npm:11.1.1" dependencies: @@ -35068,7 +30105,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.2.0": +"fs-extra@npm:^11.1.0, fs-extra@npm:^11.2.0": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" dependencies: @@ -35121,9 +30158,9 @@ __metadata: linkType: hard "fs-monkey@npm:^1.0.4": - version: 1.0.4 - resolution: "fs-monkey@npm:1.0.4" - checksum: 8b254c982905c0b7e028eab22b410dc35a5c0019c1c860456f5f54ae6a61666e1cb8c6b700d6c88cc873694c00953c935847b9959cc4dcf274aacb8673c1e8bf + version: 1.0.6 + resolution: "fs-monkey@npm:1.0.6" + checksum: 4e9986acf197581b10b79d3e63e74252681ca215ef82d4afbd98dcfe86b3f09189ac1d7e8064bc433e4e53cdb5c14fdb38773277d41bba18b1ff8bbdcab01a3a languageName: node linkType: hard @@ -35134,7 +30171,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.1, fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -35144,7 +30181,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.1#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>": +"fsevents@patch:fsevents@^2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.3#~builtin<compat/fsevents>": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin<compat/fsevents>::version=2.3.3&hash=18f3a7" dependencies: @@ -35163,13 +30200,6 @@ __metadata: languageName: node linkType: hard -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - "function-bind@npm:^1.1.2": version: 1.1.2 resolution: "function-bind@npm:1.1.2" @@ -35177,18 +30207,6 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 - languageName: node - linkType: hard - "function.prototype.name@npm:^1.1.6": version: 1.1.6 resolution: "function.prototype.name@npm:1.1.6" @@ -35208,13 +30226,6 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": - version: 1.2.2 - resolution: "functions-have-names@npm:1.2.2" - checksum: 25f44b6d1c41ac86ffdf41f25d1de81c0a5b4a3fcf4307a33cdfb23b9d4bd5d0d8bf312eaef5ad368c6500c8a9e19f692b8ce9f96aaab99db9dd936554165558 - languageName: node - linkType: hard - "functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" @@ -35230,9 +30241,9 @@ __metadata: linkType: hard "futoin-hkdf@npm:^1.3.2": - version: 1.3.3 - resolution: "futoin-hkdf@npm:1.3.3" - checksum: 7863236ce6a6d38ce0978384b5046f03714bd8511ac080d5581defb0b41dd9da1b33e9b07f763c3afae4e58b149d695e2d7776b14cb257ca78ee03d1c047d01f + version: 1.5.3 + resolution: "futoin-hkdf@npm:1.5.3" + checksum: 790da5675b31df4b9a34c19a5181f673171b5ad81fa92b91981bcfd2250692f895d6aada5ae4203212babba3c7d7a1916432e0b42c7aa88d3f70408439ec315e languageName: node linkType: hard @@ -35270,33 +30281,24 @@ __metadata: linkType: hard "gaxios@npm:^5.0.0, gaxios@npm:^5.0.1": - version: 5.0.2 - resolution: "gaxios@npm:5.0.2" + version: 5.1.3 + resolution: "gaxios@npm:5.1.3" dependencies: extend: ^3.0.2 https-proxy-agent: ^5.0.0 is-stream: ^2.0.0 - node-fetch: ^2.6.7 - checksum: 117036131cc0d0a268d2d99fffe6a6cc6a4e88dd5b77ce23d3f0b4aff1291b8af169dae20e88799adc986cf3ae507acfaeb70f6ceca8c5d6b8c28e3dde5c992a + node-fetch: ^2.6.9 + checksum: 1cf72697715c64f6db1d6fa6e9243bb57ee14b0c758338a33790ecac2675d819a1fc0c51b2fab312d9bfe8201cc981c171b70ff60adcaaec881c5bc5610c42f1 languageName: node linkType: hard -"gcp-metadata@npm:^5.0.0": - version: 5.2.0 - resolution: "gcp-metadata@npm:5.2.0" +"gcp-metadata@npm:^5.3.0": + version: 5.3.0 + resolution: "gcp-metadata@npm:5.3.0" dependencies: gaxios: ^5.0.0 json-bigint: ^1.0.0 - checksum: 4e7ed589c814bb79cbf052b0eda1d5e219fbee030f4772eca27ec1e6e1faa85ba0ef3b17ea5c3fd51a54fc5429c924b4edbb260ac147701f211fb9807b893544 - languageName: node - linkType: hard - -"generic-names@npm:^2.0.1": - version: 2.0.1 - resolution: "generic-names@npm:2.0.1" - dependencies: - loader-utils: ^1.1.0 - checksum: 5f2d6837dcddf4d7139f7c7ee4ff6ed82564123ae363aadc7a1c1c9967724da1e10d92c904b76b6ff58912465cf63cf47d87f3b400286845f289f54d5092e78f + checksum: 891ea0b902a17f33d7bae753830d23962b63af94ed071092c30496e7d26f8128ba9af43c3d38474bea29cb32a884b4bcb5720ce8b9de4a7e1108475d3d7ae219 languageName: node linkType: hard @@ -35307,13 +30309,6 @@ __metadata: languageName: node linkType: hard -"get-assigned-identifiers@npm:^1.1.0": - version: 1.2.0 - resolution: "get-assigned-identifiers@npm:1.2.0" - checksum: 5ea831c744a645ebd56fff818c80ffc583995c2ca3958236c7cfaac670242300e4f08498a9bbafd3ecbe30027d58ed50e7fa6268ecfe4b8e5c888ea7275cb56c - languageName: node - linkType: hard - "get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -35321,41 +30316,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.1, get-intrinsic@npm:^1.1.3": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": - version: 1.1.1 - resolution: "get-intrinsic@npm:1.1.1" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.1 - checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": - version: 1.2.2 - resolution: "get-intrinsic@npm:1.2.2" - dependencies: - function-bind: ^1.1.2 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - hasown: ^2.0.0 - checksum: 447ff0724df26829908dc033b62732359596fcf66027bc131ab37984afb33842d9cd458fd6cecadfe7eac22fd8a54b349799ed334cf2726025c921c7250e7417 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": +"get-intrinsic@npm:^1.0.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -35376,9 +30337,9 @@ __metadata: linkType: hard "get-npm-tarball-url@npm:^2.0.3": - version: 2.0.3 - resolution: "get-npm-tarball-url@npm:2.0.3" - checksum: 8ad48a6f1126697665e12ebf053e0d1c3b15b3c4f29ea6c458387ac68d044ea1c08f0f2eb5c0fe35447fdd2da4f2fb5c9882feb5a2ea195c773f94e762c9b886 + version: 2.1.0 + resolution: "get-npm-tarball-url@npm:2.1.0" + checksum: 02b96993ad5a04cbd0ef0577ac3cc9e2e78a7c60db6bb5e6c8fe78950fc1fc3d093314987629a2fda3083228d91a93670bde321767ca2cf89ce7f463c9e44071 languageName: node linkType: hard @@ -35428,27 +30389,17 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0": - version: 6.0.0 - resolution: "get-stream@npm:6.0.0" - checksum: 587e6a93127f9991b494a566f4971cf7a2645dfa78034818143480a80587027bdd8826cdcf80d0eff4a4a19de0d231d157280f24789fc9cc31492e1dcc1290cf - languageName: node - linkType: hard - -"get-stream@npm:^6.0.1": +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad languageName: node linkType: hard -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 01e3d3cf29e1393f05f44d2f00445c5f9ec3d1c49e8179b31795484b9c117f4c695e5e07b88b50785d5c8248a788c85d9913a79266fc77e3ef11f78f10f1b974 languageName: node linkType: hard @@ -35463,12 +30414,12 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.5.0": - version: 4.6.0 - resolution: "get-tsconfig@npm:4.6.0" +"get-tsconfig@npm:^4.7.5": + version: 4.8.1 + resolution: "get-tsconfig@npm:4.8.1" dependencies: resolve-pkg-maps: ^1.0.0 - checksum: fd2589a50e21543cf416285e5c4ac605359f49209b6c2e66bb8698fac907356e060de0a681e40881f00182b6f19771377411a88adcc78fd3954732ff54f4a54d + checksum: 12df01672e691d2ff6db8cf7fed1ddfef90ed94a5f3d822c63c147a26742026d582acd86afcd6f65db67d809625d17dd7f9d34f4d3f38f69bc2f48e19b2bdd5b languageName: node linkType: hard @@ -35524,28 +30475,27 @@ __metadata: linkType: hard "giget@npm:^1.0.0": - version: 1.1.2 - resolution: "giget@npm:1.1.2" + version: 1.2.3 + resolution: "giget@npm:1.2.3" dependencies: - colorette: ^2.0.19 - defu: ^6.1.2 - https-proxy-agent: ^5.0.1 - mri: ^1.2.0 - node-fetch-native: ^1.0.2 - pathe: ^1.1.0 - tar: ^6.1.13 + citty: ^0.1.6 + consola: ^3.2.3 + defu: ^6.1.4 + node-fetch-native: ^1.6.3 + nypm: ^0.3.8 + ohash: ^1.1.3 + pathe: ^1.1.2 + tar: ^6.2.0 bin: giget: dist/cli.mjs - checksum: 76ad0f7e792ee95dd6c4e1096697fdcce61a2a3235a6c21761fc3e0d1053342074ce71c80059d6d4363fd34152e5d7b2e58221412f300c852ff7d4a12d0321fe + checksum: ec6e9126cb210377b952c090338dee5df0f58f724666318a14a505f1d2c961b91fd1b364b86a038b24a21a5ef44702c9d6841f8726b09aeb88a74720b6b682dd languageName: node linkType: hard "github-slugger@npm:^1.0.0": - version: 1.3.0 - resolution: "github-slugger@npm:1.3.0" - dependencies: - emoji-regex: ">=6.0.0 <=6.1.1" - checksum: fe96b363df9363c78bd2f644697e2ce2a05b1b10391ac0ff918a433992b03d0dcb0b6903b1f44bee972616eb5d8799837f357cbe278fb35c5fef40b69316a8d8 + version: 1.5.0 + resolution: "github-slugger@npm:1.5.0" + checksum: c70988224578b3bdaa25df65973ffc8c24594a77a28550c3636e495e49d17aef5cdb04c04fa3f1744babef98c61eecc6a43299a13ea7f3cc33d680bf9053ffbe languageName: node linkType: hard @@ -35623,7 +30573,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:7.2.0, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": +"glob@npm:7.2.0": version: 7.2.0 resolution: "glob@npm:7.2.0" dependencies: @@ -35637,39 +30587,9 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.0.0": - version: 10.3.4 - resolution: "glob@npm:10.3.4" - dependencies: - foreground-child: ^3.1.0 - jackspeak: ^2.0.3 - minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - path-scurry: ^1.10.1 - bin: - glob: dist/cjs/src/bin.js - checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 - languageName: node - linkType: hard - -"glob@npm:^10.2.2": - version: 10.4.1 - resolution: "glob@npm:10.4.1" - dependencies: - foreground-child: ^3.1.0 - jackspeak: ^3.1.2 - minimatch: ^9.0.4 - minipass: ^7.1.2 - path-scurry: ^1.11.1 - bin: - glob: dist/esm/bin.mjs - checksum: 5d33c686c80bf6877f4284adf99a8c3cbb2a6eccbc92342943fe5d4b42c01d78c1881f2223d950c92a938d0f857e12e37b86a8e5483ab2141822e053b67d0dde - languageName: node - linkType: hard - -"glob@npm:^10.3.10": - version: 10.4.2 - resolution: "glob@npm:10.4.2" +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.3, glob@npm:^10.4.2": + version: 10.4.5 + resolution: "glob@npm:10.4.5" dependencies: foreground-child: ^3.1.0 jackspeak: ^3.1.2 @@ -35679,24 +30599,11 @@ __metadata: path-scurry: ^1.11.1 bin: glob: dist/esm/bin.mjs - checksum: bd7c0e30701136e936f414e5f6f82c7f04503f01df77408f177aa584927412f0bde0338e6ec541618cd21eacc57dde33e7b3c6c0a779cc1c6e6a0e14f3d15d9b - languageName: node - linkType: hard - -"glob@npm:^6.0.1": - version: 6.0.4 - resolution: "glob@npm:6.0.4" - dependencies: - inflight: ^1.0.4 - inherits: 2 - minimatch: 2 || 3 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: c4946c3d015ac81f704d185f2b3a55eb670100693c2cf7bc833d0efd970ec727d860d4839a5178e46a7e594b34a34661bae2f4c3405727c9fd189f84954ca3c0 + checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a languageName: node linkType: hard -"glob@npm:^7.1.7, glob@npm:^7.2.3": +"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7, glob@npm:^7.2.0, glob@npm:^7.2.3": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -35710,7 +30617,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.0": +"glob@npm:^8.0.0, glob@npm:^8.0.1": version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: @@ -35723,19 +30630,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.1": - version: 8.0.3 - resolution: "glob@npm:8.0.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 - languageName: node - linkType: hard - "glob@npm:^9.3.3": version: 9.3.5 resolution: "glob@npm:9.3.5" @@ -35749,11 +30643,11 @@ __metadata: linkType: hard "global-dirs@npm:^3.0.0": - version: 3.0.0 - resolution: "global-dirs@npm:3.0.0" + version: 3.0.1 + resolution: "global-dirs@npm:3.0.1" dependencies: ini: 2.0.0 - checksum: 953c17cf14bf6ee0e2100ae82a0d779934eed8a3ec5c94a7a4f37c5b3b592c31ea015fb9a15cf32484de13c79f4a814f3015152f3e1d65976cfbe47c1bfe4a88 + checksum: 70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438 languageName: node linkType: hard @@ -35764,21 +30658,12 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.20.0 - resolution: "globals@npm:13.20.0" - dependencies: - type-fest: ^0.20.2 - checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a - languageName: node - linkType: hard - -"globals@npm:^13.20.0": - version: 13.21.0 - resolution: "globals@npm:13.21.0" +"globals@npm:^13.19.0, globals@npm:^13.20.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" dependencies: type-fest: ^0.20.2 - checksum: 86c92ca8a04efd864c10852cd9abb1ebe6d447dcc72936783e66eaba1087d7dba5c9c3421a48d6ca722c319378754dbcc3f3f732dbe47592d7de908edf58a773 + checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c languageName: node linkType: hard @@ -35789,7 +30674,7 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.3": +"globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" dependencies: @@ -35827,43 +30712,31 @@ __metadata: languageName: node linkType: hard -"globby@npm:^13.1.3": - version: 13.1.4 - resolution: "globby@npm:13.1.4" - dependencies: - dir-glob: ^3.0.1 - fast-glob: ^3.2.11 - ignore: ^5.2.0 - merge2: ^1.4.1 - slash: ^4.0.0 - checksum: e8bc13879972082d590cd1b0e27080d90d2e12fff7eeb2cee9329c29115ace14cc5b9f899e3d6beb136ba826307a727016658919a6f383e1511d698acee81741 - languageName: node - linkType: hard - "google-auth-library@npm:^8.0.1, google-auth-library@npm:^8.0.2": - version: 8.7.0 - resolution: "google-auth-library@npm:8.7.0" + version: 8.9.0 + resolution: "google-auth-library@npm:8.9.0" dependencies: arrify: ^2.0.0 base64-js: ^1.3.0 ecdsa-sig-formatter: ^1.0.11 fast-text-encoding: ^1.0.0 gaxios: ^5.0.0 - gcp-metadata: ^5.0.0 + gcp-metadata: ^5.3.0 gtoken: ^6.1.0 jws: ^4.0.0 lru-cache: ^6.0.0 - checksum: 978d1c5f763aceddbc0218cd76fa578c8ba54a0653cefffaf61847bb8d246ebf26e7fcd276d8885b8a3354c17eef0a11cfae9e60e4df62c01cae4378d4eb78e4 + checksum: 8e0bc5f1e91804523786413bf4358e4c5ad94b1e873c725ddd03d0f1c242e2b38e26352c0f375334fbc1d94110f761b304aa0429de49b4a27ebc3875a5b56644 languageName: node linkType: hard -"google-gax@npm:^3.5.2": - version: 3.5.2 - resolution: "google-gax@npm:3.5.2" +"google-gax@npm:^3.5.7": + version: 3.6.1 + resolution: "google-gax@npm:3.6.1" dependencies: - "@grpc/grpc-js": ~1.7.0 + "@grpc/grpc-js": ~1.8.0 "@grpc/proto-loader": ^0.7.0 "@types/long": ^4.0.0 + "@types/rimraf": ^3.0.2 abort-controller: ^3.0.0 duplexify: ^4.0.0 fast-text-encoding: ^1.0.3 @@ -35872,28 +30745,28 @@ __metadata: node-fetch: ^2.6.1 object-hash: ^3.0.0 proto3-json-serializer: ^1.0.0 - protobufjs: 7.1.2 - protobufjs-cli: 1.0.2 + protobufjs: 7.2.4 + protobufjs-cli: 1.1.1 retry-request: ^5.0.0 bin: compileProtos: build/tools/compileProtos.js minifyProtoJson: build/tools/minify.js - checksum: 619a961acba742c30eaba85f5e0fb5903f8fc6713e26bf1736549cbbd43d7fac3ba3379dbc96850117263199ea8e3e74635b078e9464c7fadbbcba8822949135 + checksum: 16e5fb211d75c6a4cb4d2e62adba7bbf41d160feba74fe39435a70fc31ef8ebc740af4527a2897abab39a1806d131792b2a761da432ae1b916198c9c43aab36e languageName: node linkType: hard -"google-map-react@npm:2.2.0": - version: 2.2.0 - resolution: "google-map-react@npm:2.2.0" +"google-map-react@npm:2.2.1": + version: 2.2.1 + resolution: "google-map-react@npm:2.2.1" dependencies: - "@googlemaps/js-api-loader": ^1.7.0 + "@googlemaps/js-api-loader": ^1.13.8 "@mapbox/point-geometry": ^0.1.0 eventemitter3: ^4.0.4 prop-types: ^15.7.2 peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 4fe4155e2eebf0747f55bd9982fbab12a35b01afe69b8348834bc6eaf1e608d589c38f9cd5dff0f9bf7448d6e55c3fcfa7ecd0b62706606f1c497cd5211714f4 + checksum: 6bc082581c44ffe1e048766849308bc078ebe0a695b485d284ded9783fa4ffd9ddc4d62597fa11379fe667f17a54a2e2f6ade8e2eda78299959fe81551563a14 languageName: node linkType: hard @@ -35918,8 +30791,8 @@ __metadata: linkType: hard "got@npm:^11.7.0": - version: 11.8.5 - resolution: "got@npm:11.8.5" + version: 11.8.6 + resolution: "got@npm:11.8.6" dependencies: "@sindresorhus/is": ^4.0.0 "@szmarczak/http-timer": ^4.0.5 @@ -35932,18 +30805,11 @@ __metadata: lowercase-keys: ^2.0.0 p-cancelable: ^2.0.0 responselike: ^2.0.0 - checksum: 2de8a1bbda4e9b6b2b72b2d2100bc055a59adc1740529e631f61feb44a8b9a1f9f8590941ed9da9df0090b6d6d0ed8ffee94cd9ac086ec3409b392b33440f7d2 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.4, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9, graceful-fs@npm:~4.2.0": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + checksum: bbc783578a8d5030c8164ef7f57ce41b5ad7db2ed13371e1944bef157eeca5a7475530e07c0aaa71610d7085474d0d96222c9f4268d41db333a17e39b463f45d languageName: node linkType: hard -"graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.2.11": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.4, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9, graceful-fs@npm:~4.2.0": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -35958,43 +30824,43 @@ __metadata: linkType: hard "graphql-config@npm:^4.3.5": - version: 4.3.6 - resolution: "graphql-config@npm:4.3.6" + version: 4.5.0 + resolution: "graphql-config@npm:4.5.0" dependencies: "@graphql-tools/graphql-file-loader": ^7.3.7 "@graphql-tools/json-file-loader": ^7.3.7 "@graphql-tools/load": ^7.5.5 "@graphql-tools/merge": ^8.2.6 "@graphql-tools/url-loader": ^7.9.7 - "@graphql-tools/utils": ^8.6.5 - cosmiconfig: 7.0.1 - cosmiconfig-toml-loader: 1.0.0 - cosmiconfig-typescript-loader: ^4.0.0 - minimatch: 4.2.1 + "@graphql-tools/utils": ^9.0.0 + cosmiconfig: 8.0.0 + jiti: 1.17.1 + minimatch: 4.2.3 string-env-interpolation: 1.0.1 - ts-node: ^10.8.1 tslib: ^2.4.0 peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 528f69c2c3620b51fe3d609e65d13861bdc11ccfdfcb75d476f758dc6e3047c78117a260f69b5e7efa5f0b66da1980c352a8b4053532ffb3018377f784331e21 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + checksum: 8ab1a3ce3534598ddac2df213b6af2eecd9ebcca2268d39cc3e87a6e55749483389a6df222e9e0acd638dd2479378a5c8e8d90f980e6a54e700c4c4ae3522123 languageName: node linkType: hard -"graphql-request@npm:^5.0.0": - version: 5.0.0 - resolution: "graphql-request@npm:5.0.0" +"graphql-request@npm:^6.0.0": + version: 6.1.0 + resolution: "graphql-request@npm:6.1.0" dependencies: - "@graphql-typed-document-node/core": ^3.1.1 + "@graphql-typed-document-node/core": ^3.2.0 cross-fetch: ^3.1.5 - extract-files: ^9.0.0 - form-data: ^3.0.0 peerDependencies: graphql: 14 - 16 - checksum: 2e8900d10cded401b253a05650719321123e3b0ad5bc57523288892e0226dccf43668ec937753420084f649fb4e3f998f2547c884b746a3e91fa0a43f93e62d4 + checksum: 6d62630a0169574442320651c1f7626c0c602025c3c46b19e09417c9579bb209306ee63de9793a03be2e1701bb7f13971f8545d99bc6573e340f823af0ad35b2 languageName: node linkType: hard -"graphql-tag@npm:2.12.5, graphql-tag@npm:^2.11.0": +"graphql-tag@npm:2.12.5": version: 2.12.5 resolution: "graphql-tag@npm:2.12.5" dependencies: @@ -36005,7 +30871,7 @@ __metadata: languageName: node linkType: hard -"graphql-tag@npm:2.12.6, graphql-tag@npm:^2.10.1, graphql-tag@npm:^2.12.6": +"graphql-tag@npm:2.12.6, graphql-tag@npm:^2.10.1, graphql-tag@npm:^2.11.0, graphql-tag@npm:^2.12.6": version: 2.12.6 resolution: "graphql-tag@npm:2.12.6" dependencies: @@ -36025,42 +30891,49 @@ __metadata: languageName: node linkType: hard -"graphql-ws@npm:5.5.5": - version: 5.5.5 - resolution: "graphql-ws@npm:5.5.5" +"graphql-ws@npm:5.12.1": + version: 5.12.1 + resolution: "graphql-ws@npm:5.12.1" peerDependencies: graphql: ">=0.11 <=16" - checksum: bdb77b3e44be53d2d8d0c395066e62e74efe1123d9b5be7cc69b60d28229974e32abc79c5997095d038d169d4135cb2bcb98f0e666aa8cfeb3bb9857b960d803 + checksum: 88d587c431feba681957faecd96101bb3860e1a4765f34b8cae1c514e7f98754b5f31c6b3127775e4732f26883b0802fe426bf9f7031c16cd0b25a27ad90ec9c languageName: node linkType: hard -"graphql-ws@npm:^5.4.1": - version: 5.11.2 - resolution: "graphql-ws@npm:5.11.2" +"graphql-ws@npm:5.5.5": + version: 5.5.5 + resolution: "graphql-ws@npm:5.5.5" peerDependencies: graphql: ">=0.11 <=16" - checksum: 2c94b06c1919217dc15a0556474673de7aabcc7179a2982a87ded51856c105e4f4ee6d54a6c135a0a7f55d85a5997a6a15cff514959258885814adec6a61ff00 + checksum: bdb77b3e44be53d2d8d0c395066e62e74efe1123d9b5be7cc69b60d28229974e32abc79c5997095d038d169d4135cb2bcb98f0e666aa8cfeb3bb9857b960d803 languageName: node linkType: hard -"graphql@npm:*, graphql@npm:16.6.0": - version: 16.6.0 - resolution: "graphql@npm:16.6.0" - checksum: bf1d9e3c1938ce3c1a81e909bd3ead1ae4707c577f91cff1ca2eca474bfbc7873d5d7b942e1e9777ff5a8304421dba57a4b76d7a29eb19de8711cb70e3c2415e +"graphql@npm:*": + version: 16.9.0 + resolution: "graphql@npm:16.9.0" + checksum: 8cb3d54100e9227310383ce7f791ca48d12f15ed9f2021f23f8735f1121aafe4e5e611a853081dd935ce221724ea1ae4638faef5d2921fb1ad7c26b5f46611e9 languageName: node linkType: hard -"graphql@npm:15.8.0, graphql@npm:^15.3.0": +"graphql@npm:15.8.0": version: 15.8.0 resolution: "graphql@npm:15.8.0" checksum: 423325271db8858428641b9aca01699283d1fe5b40ef6d4ac622569ecca927019fce8196208b91dd1d8eb8114f00263fe661d241d0eb40c10e5bfd650f86ec5e languageName: node linkType: hard -"growl@npm:1.10.5": - version: 1.10.5 - resolution: "growl@npm:1.10.5" - checksum: 4b86685de6831cebcbb19f93870bea624afee61124b0a20c49017013987cd129e73a8c4baeca295728f41d21265e1f859d25ef36731b142ca59c655fea94bb1a +"graphql@npm:16.6.0": + version: 16.6.0 + resolution: "graphql@npm:16.6.0" + checksum: bf1d9e3c1938ce3c1a81e909bd3ead1ae4707c577f91cff1ca2eca474bfbc7873d5d7b942e1e9777ff5a8304421dba57a4b76d7a29eb19de8711cb70e3c2415e + languageName: node + linkType: hard + +"graphql@npm:^15.3.0": + version: 15.9.0 + resolution: "graphql@npm:15.9.0" + checksum: fecf48b878baf8bd1d943b79860554f9e0bdf8d23a8f014356209fedcc1f1353729388538842d8a4a79078ea75b3f24d504d074223c815acf9b6059837c5c934 languageName: node linkType: hard @@ -36107,7 +30980,7 @@ __metadata: languageName: node linkType: hard -"handlebars@npm:4.7.7, handlebars@npm:^4.7.7": +"handlebars@npm:4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" dependencies: @@ -36125,7 +30998,7 @@ __metadata: languageName: node linkType: hard -"handlebars@npm:4.7.8": +"handlebars@npm:4.7.8, handlebars@npm:^4.7.7": version: 4.7.8 resolution: "handlebars@npm:4.7.8" dependencies: @@ -36143,27 +31016,10 @@ __metadata: languageName: node linkType: hard -"har-schema@npm:^2.0.0": - version: 2.0.0 - resolution: "har-schema@npm:2.0.0" - checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b - languageName: node - linkType: hard - -"har-validator@npm:~5.1.3": - version: 5.1.5 - resolution: "har-validator@npm:5.1.5" - dependencies: - ajv: ^6.12.3 - har-schema: ^2.0.0 - checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 - languageName: node - linkType: hard - "harmony-reflect@npm:^1.4.6": - version: 1.6.1 - resolution: "harmony-reflect@npm:1.6.1" - checksum: 4cb91f86d262650d62c3ac713a2284ef0784a5c8be347188f97747db68d0e6d9801f09a3f12bacec59d5ec9d010cba64b8acb4c2c4827e172ef2ab215cdfef9d + version: 1.6.2 + resolution: "harmony-reflect@npm:1.6.2" + checksum: 2e5bae414cd2bfae5476147f9935dc69ee9b9a413206994dcb94c5b3208d4555da3d4313aff6fd14bd9991c1e3ef69cdda5c8fac1eb1d7afc064925839339b8c languageName: node linkType: hard @@ -36176,14 +31032,7 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1": - version: 1.0.1 - resolution: "has-bigints@npm:1.0.1" - checksum: 44ab55868174470065d2e0f8f6def1c990d12b82162a8803c679699fa8a39f966e336f2a33c185092fe8aea7e8bf2e85f1c26add5f29d98f2318bd270096b183 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.2": +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b @@ -36211,16 +31060,7 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.2": +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": version: 1.0.2 resolution: "has-property-descriptors@npm:1.0.2" dependencies: @@ -36229,37 +31069,21 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e - languageName: node - linkType: hard - -"has-proto@npm:^1.0.3": +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": version: 1.0.3 resolution: "has-proto@npm:1.0.3" checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.2": +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -36275,12 +31099,10 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.1, has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 +"has@npm:^1.0.3": + version: 1.0.4 + resolution: "has@npm:1.0.4" + checksum: 8a11ba062e0627c9578a1d08285401e39f1d071a9692ddf793199070edb5648b21c774dd733e2a181edd635bf6862731885f476f4ccf67c998d7a5ff7cef2550 languageName: node linkType: hard @@ -36305,13 +31127,6 @@ __metadata: languageName: node linkType: hard -"hash-sum@npm:^2.0.0": - version: 2.0.0 - resolution: "hash-sum@npm:2.0.0" - checksum: efeeacf09ecbd467202865403c3a1991fa15d4f4903c1148ecbe13223fdbf9ec6d7dc661e17e5ce6e776cd70d67b6ee4c82e0171318962435be45c1155175f3f - languageName: node - linkType: hard - "hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": version: 1.1.7 resolution: "hash.js@npm:1.1.7" @@ -36322,16 +31137,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0": - version: 2.0.0 - resolution: "hasown@npm:2.0.0" - dependencies: - function-bind: ^1.1.2 - checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176 - languageName: node - linkType: hard - -"hasown@npm:^2.0.1, hasown@npm:^2.0.2": +"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -36461,10 +31267,10 @@ __metadata: languageName: node linkType: hard -"hermes-estree@npm:0.20.1": - version: 0.20.1 - resolution: "hermes-estree@npm:0.20.1" - checksum: 226378c62e29a79f8e0935cc8bdefd987195c069b835a9ed1cae08109cd228f6e97a2e580d5de057e4437dc988c972b9fe7227a1d9353dc2abbe142dbd5260c6 +"hermes-estree@npm:0.23.1": + version: 0.23.1 + resolution: "hermes-estree@npm:0.23.1" + checksum: 0f63edc365099304f4cd8e91a3666a4fb5a2a47baee751dc120df9201640112865944cae93617f554af71be9827e96547f9989f4972d6964ecc121527295fec6 languageName: node linkType: hard @@ -36477,12 +31283,12 @@ __metadata: languageName: node linkType: hard -"hermes-parser@npm:0.20.1": - version: 0.20.1 - resolution: "hermes-parser@npm:0.20.1" +"hermes-parser@npm:0.23.1": + version: 0.23.1 + resolution: "hermes-parser@npm:0.23.1" dependencies: - hermes-estree: 0.20.1 - checksum: 2a0c17b5f8fbb0a377f42d480f577b5cc64eafe4d5ebc0a9cbce23b79a02042693134bef1b71163f771d67cd10a450138c8d24b9a431c487fa9ed57cba67e85c + hermes-estree: 0.23.1 + checksum: a08008928aea9ea9a2cab2c0fac3cffa21f7869ab3fabb68e5add0fe057737a0c352d7a446426f7956172ccc8f2d4a215b4fc20d1d08354fc8dc16772c248fce languageName: node linkType: hard @@ -36502,6 +31308,13 @@ __metadata: languageName: node linkType: hard +"hexoid@npm:^2.0.0": + version: 2.0.0 + resolution: "hexoid@npm:2.0.0" + checksum: 69a92b2bcd7c81c16557de017c59511643e3cb1f0d6e9e9b705859b798bfd059088e4d3cc85e9fe0a9e431007430f15393303c3e74320b5c4c28cb64fc7d8bb4 + languageName: node + linkType: hard + "hey-listen@npm:^1.0.8": version: 1.0.8 resolution: "hey-listen@npm:1.0.8" @@ -36543,13 +31356,6 @@ __metadata: languageName: node linkType: hard -"hoek@npm:4.x.x": - version: 4.2.1 - resolution: "hoek@npm:4.2.1" - checksum: 3f28857c9d4c29e0d4c0bfb0d73973529fdd700266e963f9964c59ad92a4bc08943b94c4ada97c105a20c78d4dec98e4fc2c08025660743722558e6da793fd0f - languageName: node - linkType: hard - "hoek@npm:5.x.x": version: 5.0.4 resolution: "hoek@npm:5.0.4" @@ -36557,7 +31363,7 @@ __metadata: languageName: node linkType: hard -"hoek@npm:6.x.x, hoek@npm:^6.1.3": +"hoek@npm:6.x.x": version: 6.1.3 resolution: "hoek@npm:6.1.3" checksum: d0af183df1b710290de440142d3650268ab2402c0f6cc28de044fc806a78ea5b91ed763ccffc2306204c1191724e80610c11dc4d7c259af55ad87ff9613abfec @@ -36573,7 +31379,7 @@ __metadata: languageName: node linkType: hard -"hoopy@npm:^0.1.2, hoopy@npm:^0.1.4": +"hoopy@npm:^0.1.4": version: 0.1.4 resolution: "hoopy@npm:0.1.4" checksum: cfa60c7684c5e1ee4efe26e167bc54b73f839ffb59d1d44a5c4bf891e26b4f5bcc666555219a98fec95508fea4eda3a79540c53c05cc79afc1f66f9a238f4d9e @@ -36647,21 +31453,7 @@ __metadata: languageName: node linkType: hard -"html-entities@npm:^2.1.0": - version: 2.3.3 - resolution: "html-entities@npm:2.3.3" - checksum: 92521501da8aa5f66fee27f0f022d6e9ceae62667dae93aa6a2f636afa71ad530b7fb24a18d4d6c124c9885970cac5f8a52dbf1731741161002816ae43f98196 - languageName: node - linkType: hard - -"html-entities@npm:^2.3.2": - version: 2.3.5 - resolution: "html-entities@npm:2.3.5" - checksum: 585f8a4d549b126b147c95398849a343df4cec379ad0ab87c6be1539870751cb85d3d4910c2cb4a848cc99de84307cd9a372890175b73852d5225e716e65e62f - languageName: node - linkType: hard - -"html-entities@npm:^2.4.0": +"html-entities@npm:^2.1.0, html-entities@npm:^2.3.2, html-entities@npm:^2.5.2": version: 2.5.2 resolution: "html-entities@npm:2.5.2" checksum: b23f4a07d33d49ade1994069af4e13d31650e3fb62621e92ae10ecdf01d1a98065c78fd20fdc92b4c7881612210b37c275f2c9fba9777650ab0d6f2ceb3b99b6 @@ -36693,9 +31485,9 @@ __metadata: linkType: hard "html-tags@npm:^3.1.0": - version: 3.1.0 - resolution: "html-tags@npm:3.1.0" - checksum: 67587f2d4022390d7bc34b1313773ecb0b0e0c79fb331aa3e20023eb4c862c7188a1ff775d126fcd75f4e4f08f956666a1c57688c4d24d85a77f9d4b1a42f345 + version: 3.3.1 + resolution: "html-tags@npm:3.3.1" + checksum: b4ef1d5a76b678e43cce46e3783d563607b1d550cab30b4f511211564574770aa8c658a400b100e588bc60b8234e59b35ff72c7851cc28f3b5403b13a2c6cbce languageName: node linkType: hard @@ -36723,8 +31515,8 @@ __metadata: linkType: hard "html-webpack-plugin@npm:^5.5.0": - version: 5.5.1 - resolution: "html-webpack-plugin@npm:5.5.1" + version: 5.6.3 + resolution: "html-webpack-plugin@npm:5.6.3" dependencies: "@types/html-minifier-terser": ^6.0.0 html-minifier-terser: ^6.0.2 @@ -36732,8 +31524,14 @@ __metadata: pretty-error: ^4.0.0 tapable: ^2.0.0 peerDependencies: + "@rspack/core": 0.x || 1.x webpack: ^5.20.0 - checksum: f4b43271171e6374b10a49b5231bbab94610a344d58f4f7d95cd130520feb474f98006e1ab71ea102c57fe5a107b273ff7c19e7e1bc2314d611dbb791fcc0a98 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 59e7d971b0cfd9ba34c7acaa3c161e43c62596474dd8cd35d7b690498ff5891f21296de0aa1d2e7810348caa657e938461267155dda47913b5eeca7124406270 languageName: node linkType: hard @@ -36787,17 +31585,22 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 +"htmlparser2@npm:^9.1.0": + version: 9.1.0 + resolution: "htmlparser2@npm:9.1.0" + dependencies: + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + domutils: ^3.1.0 + entities: ^4.5.0 + checksum: e5f8d5193967e4a500226f37bdf2c0f858cecb39dde14d0439f24bf2c461a4342778740d988fbaba652b0e4cb6052f7f2e99e69fc1a329a86c629032bb76e7c8 languageName: node linkType: hard -"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 +"http-cache-semantics@npm:4.1.1, http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 languageName: node linkType: hard @@ -36834,18 +31637,18 @@ __metadata: linkType: hard "http-parser-js@npm:>=0.5.1": - version: 0.5.3 - resolution: "http-parser-js@npm:0.5.3" - checksum: 6f3142c5f60ad995a6895a1dc4f70f8cef0910745366e97cbcb99caa604590dbcc11006b00989ad306837d6b820e9bfc6e801c4060ed19a0e4df83caa8577cb5 + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 6bbdf2429858e8cf13c62375b0bfb6dc3955ca0f32e58237488bc86cd2378f31d31785fd3ac4ce93f1c74e0189cf8823c91f5cb061696214fd368d2452dc871d languageName: node linkType: hard "http-post-message@npm:^0.2": - version: 0.2.3 - resolution: "http-post-message@npm:0.2.3" + version: 0.2.5 + resolution: "http-post-message@npm:0.2.5" dependencies: es6-promise: ^3.2.1 - checksum: c8b67af29b93265d9cb50227a7e5a90978e2d379275de220b44277de296819f4cb814e8820d16534e172c8c21be361491e64f7eb71313474d36787520914869b + checksum: 49789b3a3ca68e96782eb05ad45e9ed16fb4a44fb1bf9078e1b226e65bdd5e60fb00cae31d7253c4a32d9b516eb7452e4c5b53747cf065077a50b0a8f1e94efe languageName: node linkType: hard @@ -36871,6 +31674,16 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^6.0.0": + version: 6.1.1 + resolution: "http-proxy-agent@npm:6.1.1" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 020e6600cb782cbf288eae978486301c90b92f8e350f06eda76ac2494ff4b0091dcf19fd1094f7a0f3d97da3c249528d8042aca4557362f7707333e7f18defda + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" @@ -36881,7 +31694,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:2.0.6, http-proxy-middleware@npm:^2.0.3": +"http-proxy-middleware@npm:2.0.6": version: 2.0.6 resolution: "http-proxy-middleware@npm:2.0.6" dependencies: @@ -36899,6 +31712,24 @@ __metadata: languageName: node linkType: hard +"http-proxy-middleware@npm:^2.0.3": + version: 2.0.7 + resolution: "http-proxy-middleware@npm:2.0.7" + dependencies: + "@types/http-proxy": ^1.17.8 + http-proxy: ^1.18.1 + is-glob: ^4.0.1 + is-plain-obj: ^3.0.0 + micromatch: ^4.0.2 + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 18caa21145917aa1054740353916e8f03f5a3a93bede9106f1f44d84f7b174df17af1c72bf5fade5cc440c2058ee813f47cbb2bdd6ae6874af1cf33e0ac575f3 + languageName: node + linkType: hard + "http-proxy@npm:^1.18.1": version: 1.18.1 resolution: "http-proxy@npm:1.18.1" @@ -36933,32 +31764,21 @@ __metadata: languageName: node linkType: hard -"http-signature@npm:~1.2.0": - version: 1.2.0 - resolution: "http-signature@npm:1.2.0" - dependencies: - assert-plus: ^1.0.0 - jsprim: ^1.2.2 - sshpk: ^1.7.0 - checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c - languageName: node - linkType: hard - -"http-signature@npm:~1.3.6": - version: 1.3.6 - resolution: "http-signature@npm:1.3.6" +"http-signature@npm:~1.4.0": + version: 1.4.0 + resolution: "http-signature@npm:1.4.0" dependencies: assert-plus: ^1.0.0 jsprim: ^2.0.2 - sshpk: ^1.14.1 - checksum: 10be2af4764e71fee0281392937050201ee576ac755c543f570d6d87134ce5e858663fe999a7adb3e4e368e1e356d0d7fec6b9542295b875726ff615188e7a0c + sshpk: ^1.18.0 + checksum: f07f4cc0481e4461c68b9b7d1a25bf2ec4cef8e0061812b989c1e64f504b4b11f75f88022102aea05d25d47a87789599f1a310b1f8a56945a50c93e54c7ee076 languageName: node linkType: hard "http2-client@npm:^1.2.5": - version: 1.3.3 - resolution: "http2-client@npm:1.3.3" - checksum: 191f8d4b8d3b53425335f14495282bf3d2676021689765de7f5a73f5532e952a0c948ad84e8343b84a64030ed863f63de49cae72acafa024e1caea11a806ec9c + version: 1.3.5 + resolution: "http2-client@npm:1.3.5" + checksum: 075970adefeb86538fbef810d46586569a689711d4585f4969e0f167344a8e59857eddc0203b428aea83a278070ffd1b3a3192529e93c47a88c71da9295258eb languageName: node linkType: hard @@ -36972,23 +31792,13 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:5, https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" +"https-proxy-agent@npm:5, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" dependencies: agent-base: 6 debug: 4 - checksum: 165bfb090bd26d47693597661298006841ab733d0c7383a8cb2f17373387a94c903a3ac687090aa739de05e379ab6f868bae84ab4eac288ad85c328cd1ec9e53 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^3.0.0": - version: 3.0.1 - resolution: "https-proxy-agent@npm:3.0.1" - dependencies: - agent-base: ^4.3.0 - debug: ^3.1.0 - checksum: 9464b2b13462f246205365bf1b603343c3a4d43f0ffa59fc7fb970bfddf831d88e11fcecf80bd3f1fdaa890b27bcb40c4ac4bae2ed21358a7f61b93a763b2a97 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 languageName: node linkType: hard @@ -37002,23 +31812,23 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.1": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" +"https-proxy-agent@npm:^6.0.0": + version: 6.2.1 + resolution: "https-proxy-agent@npm:6.2.1" dependencies: - agent-base: 6 + agent-base: ^7.0.2 debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + checksum: d0615fb6ae69241d6faaeb9fe51e071d093fba504e5111cb64ede40e8d701b3ddc762525c96f594e7df266b00dfeb3822bd8abbda33ab6f050a3f679062d74c4 languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.2, https-proxy-agent@npm:^7.0.3": - version: 7.0.4 - resolution: "https-proxy-agent@npm:7.0.4" +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.2, https-proxy-agent@npm:^7.0.3, https-proxy-agent@npm:^7.0.4, https-proxy-agent@npm:^7.0.5": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" dependencies: agent-base: ^7.0.2 debug: 4 - checksum: daaab857a967a2519ddc724f91edbbd388d766ff141b9025b629f92b9408fc83cee8a27e11a907aede392938e9c398e240d643e178408a59e4073539cde8cfe9 + checksum: 2e1a28960f13b041a50702ee74f240add8e75146a5c37fc98f1960f0496710f6918b3a9fe1e5aba41e50f58e6df48d107edd9c405c5f0d73ac260dabf2210857 languageName: node linkType: hard @@ -37036,10 +31846,10 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^4.3.0": - version: 4.3.1 - resolution: "human-signals@npm:4.3.1" - checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1 +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 6504560d5ed91444f16bea3bd9dfc66110a339442084e56c3e7fa7bbdf3f406426d6563d662bdce67064b165eac31eeabfc0857ed170aaa612cf14ec9f9a464c languageName: node linkType: hard @@ -37060,16 +31870,16 @@ __metadata: linkType: hard "hyphen@npm:^1.6.4": - version: 1.6.5 - resolution: "hyphen@npm:1.6.5" - checksum: 8c05ac23e1c5501fc9a605abb6a40ac9a41b902e91aed3a27bfd7a93ba363c7d87b696023f7f416817b0189c4545f697f385aa96dc4308d5d331e3f0f637aa44 + version: 1.10.6 + resolution: "hyphen@npm:1.10.6" + checksum: a2b6a6b3cab3ed38574b726234cab066e4ac9d3f8f33f8df48f4694e23196019b19e04bd859a0731d2b5afa24b95b6c3bd989c844fb427625c23c8564b4b5faa languageName: node linkType: hard -"hyphenate-style-name@npm:^1.0.2": - version: 1.0.4 - resolution: "hyphenate-style-name@npm:1.0.4" - checksum: 4f5bf4b055089754924babebaa23c17845937bcca6aee95d5d015f8fa1e6814279002bd6a9e541e3fac2cd02519fc76305396727066c57c8e21a7e73e7a12137 +"hyphenate-style-name@npm:^1.0.3": + version: 1.1.0 + resolution: "hyphenate-style-name@npm:1.1.0" + checksum: b9ed74e29181d96bd58a2d0e62fc4a19879db591dba268275829ff0ae595fcdf11faafaeaa63330a45c3004664d7db1f0fc7cdb372af8ee4615ed8260302c207 languageName: node linkType: hard @@ -37098,13 +31908,6 @@ __metadata: languageName: node linkType: hard -"icss-replace-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "icss-replace-symbols@npm:1.1.0" - checksum: 24575b2c2f7e762bfc6f4beee31be9ba98a01cad521b5aa9954090a5de2b5e1bf67814c17e22f9e51b7d798238db8215a173d6c2b4726ce634ce06b68ece8045 - languageName: node - linkType: hard - "icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": version: 5.1.0 resolution: "icss-utils@npm:5.1.0" @@ -37137,31 +31940,17 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.1.8": +"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.1.8, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e languageName: node linkType: hard -"ignore@npm:^5.0.4, ignore@npm:^5.2.0": - version: 5.2.0 - resolution: "ignore@npm:5.2.0" - checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 - languageName: node - linkType: hard - -"ignore@npm:^5.0.5, ignore@npm:^5.3.1": - version: 5.3.1 - resolution: "ignore@npm:5.3.1" - checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 - languageName: node - linkType: hard - -"ignore@npm:^5.1.9, ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef +"ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.9, ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be languageName: node linkType: hard @@ -37217,9 +32006,9 @@ __metadata: linkType: hard "immer@npm:^10.0.3": - version: 10.0.4 - resolution: "immer@npm:10.0.4" - checksum: 8c69cad9adde7296b6857aadc0837b792840d46d5b5759002cfc168abe58815bd5b944a9533a03df4738d6ce3dc918cc0a88437324fd71e1fcbd2e77273c39f0 + version: 10.1.1 + resolution: "immer@npm:10.1.1" + checksum: 07c67970b7d22aded73607193d84861bf786f07d47f7d7c98bb10016c7a88f6654ad78ae1e220b3c623695b133aabbf24f5eb8d9e8060cff11e89ccd81c9c10b languageName: node linkType: hard @@ -37231,9 +32020,9 @@ __metadata: linkType: hard "immutable@npm:^4.0.0": - version: 4.3.0 - resolution: "immutable@npm:4.3.0" - checksum: bbd7ea99e2752e053323543d6ff1cc71a4b4614fa6121f321ca766db2bd2092f3f1e0a90784c5431350b7344a4f792fa002eac227062d59b9377b6c09063b58b + version: 4.3.7 + resolution: "immutable@npm:4.3.7" + checksum: 1c50eb053bb300796551604afff554066f041aa8e15926cf98f6d11d9736b62ad12531c06515dd96375258653878b4736f8051cd20b640f5f976d09fa640e3ec languageName: node linkType: hard @@ -37254,7 +32043,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -37272,26 +32061,26 @@ __metadata: linkType: hard "import-in-the-middle@npm:^1.7.4": - version: 1.7.4 - resolution: "import-in-the-middle@npm:1.7.4" + version: 1.11.2 + resolution: "import-in-the-middle@npm:1.11.2" dependencies: acorn: ^8.8.2 acorn-import-attributes: ^1.9.5 cjs-module-lexer: ^1.2.2 module-details-from-path: ^1.0.3 - checksum: 4aec486db2e12526f2df13774100dfbc043303cd6dd7c8f0a4e40012da93bb6ba21a671e8aa4c35743af68d5f2d00fc0ffb438a685450890f5853805afdafc91 + checksum: 06fb73100a918e00778779713119236cc8d3d4656aae9076a18159cfcd28eb0cc26e0a5040d11da309c5f8f8915c143b8d74e73c0734d3f5549b1813d1008bb9 languageName: node linkType: hard "import-local@npm:^3.0.2": - version: 3.0.2 - resolution: "import-local@npm:3.0.2" + version: 3.2.0 + resolution: "import-local@npm:3.2.0" dependencies: pkg-dir: ^4.2.0 resolve-cwd: ^3.0.0 bin: import-local-fixture: fixtures/cli.js - checksum: c74d9f9484c878cda1de3434613c7ff72d5dadcf20e5482542232d7c2575b713ff88701d6675fcf09a3684cb23fb407c8b333b9cbc59438712723d058d8e976c + checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 languageName: node linkType: hard @@ -37384,12 +32173,12 @@ __metadata: languageName: node linkType: hard -"inline-style-prefixer@npm:^6.0.0": - version: 6.0.0 - resolution: "inline-style-prefixer@npm:6.0.0" +"inline-style-prefixer@npm:^7.0.1": + version: 7.0.1 + resolution: "inline-style-prefixer@npm:7.0.1" dependencies: - css-in-js-utils: ^2.0.0 - checksum: 1331a6184bed03d145e3b9a98363fc7a245590ea1a495df7376a99386737893d4318f8ecf873e2be8431cff1de91512b7a4b9e36326933d5647db0088b63ef4f + css-in-js-utils: ^3.1.0 + checksum: 07a72573dfdac5e08fa18f5ce71d922861716955e230175ac415db227d9ed49443c764356cb407a92f4c85b30ebf39604165260b4dfbf3196b7736d7332c5c06 languageName: node linkType: hard @@ -37428,7 +32217,7 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:^7.0.0, inquirer@npm:^7.1.0": +"inquirer@npm:^7.0.0": version: 7.3.3 resolution: "inquirer@npm:7.3.3" dependencies: @@ -37449,32 +32238,9 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:^8.0.0": - version: 8.2.4 - resolution: "inquirer@npm:8.2.4" - dependencies: - ansi-escapes: ^4.2.1 - chalk: ^4.1.1 - cli-cursor: ^3.1.0 - cli-width: ^3.0.0 - external-editor: ^3.0.3 - figures: ^3.0.0 - lodash: ^4.17.21 - mute-stream: 0.0.8 - ora: ^5.4.1 - run-async: ^2.4.0 - rxjs: ^7.5.5 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - through: ^2.3.6 - wrap-ansi: ^7.0.0 - checksum: dfcb6529d3af443dfea2241cb471508091b51f5121a088fdb8728b23ec9b349ef0a5e13a0ef2c8e19457b0bed22f7cbbcd561f7a4529d084c562a58c605e2655 - languageName: node - linkType: hard - -"inquirer@npm:^8.1.5": - version: 8.2.5 - resolution: "inquirer@npm:8.2.5" +"inquirer@npm:^8.0.0, inquirer@npm:^8.1.2, inquirer@npm:^8.1.5": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" dependencies: ansi-escapes: ^4.2.1 chalk: ^4.1.1 @@ -37490,8 +32256,8 @@ __metadata: string-width: ^4.1.0 strip-ansi: ^6.0.0 through: ^2.3.6 - wrap-ansi: ^7.0.0 - checksum: f13ee4c444187786fb393609dedf6b30870115a57b603f2e6424f29a99abc13446fd45ee22461c33c9c40a92a60a8df62d0d6b25d74fc6676fa4cb211de55b55 + wrap-ansi: ^6.0.1 + checksum: 387ffb0a513559cc7414eb42c57556a60e302f820d6960e89d376d092e257a919961cd485a1b4de693dbb5c0de8bc58320bfd6247dfd827a873aa82a4215a240 languageName: node linkType: hard @@ -37529,29 +32295,7 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: ^1.1.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.4": - version: 1.0.6 - resolution: "internal-slot@npm:1.0.6" - dependencies: - get-intrinsic: ^1.2.2 - hasown: ^2.0.0 - side-channel: ^1.0.4 - checksum: 7872454888047553ce97a3fa1da7cc054a28ec5400a9c2e9f4dbe4fe7c1d041cb8e8301467614b80d4246d50377aad2fb58860b294ed74d6700cc346b6f89549 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.7": +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": version: 1.0.7 resolution: "internal-slot@npm:1.0.7" dependencies: @@ -37635,15 +32379,15 @@ __metadata: linkType: hard "io-ts@npm:^2.2.13": - version: 2.2.16 - resolution: "io-ts@npm:2.2.16" + version: 2.2.21 + resolution: "io-ts@npm:2.2.21" peerDependencies: fp-ts: ^2.5.0 - checksum: 1b5855682e413cc92cfb5c51d0bdb24c99e407ab4e67821a53078f5d8dedbc387840c5b240cb19dd5d542bbdd2e2317ece17674a674f3de561ca0f00ae765bba + checksum: c6ae5237e313f7428c874fa5667b3656adaa5ec29f7f34194ad8ea8894b525c89322a5b74ca560e7cd66f8334b0b48cae6c4dc517c662de72da86110140646d4 languageName: node linkType: hard -"ioredis@npm:5.3.2, ioredis@npm:^5.0.0, ioredis@npm:^5.2.3, ioredis@npm:^5.3.2": +"ioredis@npm:5.3.2": version: 5.3.2 resolution: "ioredis@npm:5.3.2" dependencies: @@ -37660,6 +32404,23 @@ __metadata: languageName: node linkType: hard +"ioredis@npm:^5.0.0, ioredis@npm:^5.2.3, ioredis@npm:^5.3.2": + version: 5.4.1 + resolution: "ioredis@npm:5.4.1" + dependencies: + "@ioredis/commands": ^1.1.1 + cluster-key-slot: ^1.1.0 + debug: ^4.3.4 + denque: ^2.1.0 + lodash.defaults: ^4.2.0 + lodash.isarguments: ^3.1.0 + redis-errors: ^1.2.0 + redis-parser: ^3.0.0 + standard-as-callback: ^2.1.0 + checksum: 92210294f75800febe7544c27b07e4892480172363b11971aa575be5b68f023bfed4bc858abc9792230c153aa80409047a358f174062c14d17536aa4499fe10b + languageName: node + linkType: hard + "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -37685,16 +32446,16 @@ __metadata: linkType: hard "ip@npm:^1.1.5": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a + version: 1.1.9 + resolution: "ip@npm:1.1.9" + checksum: b6d91fd45a856e3bd6d4f601ea0619d90f3517638f6918ebd079f959a8a6308568d8db5ef4fdf037e0d9cfdcf264f46833dfeea81ca31309cf0a7eb4b1307b84 languageName: node linkType: hard "ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 + version: 2.0.1 + resolution: "ip@npm:2.0.1" + checksum: d765c9fd212b8a99023a4cde6a558a054c298d640fec1020567494d257afd78ca77e37126b1a3ef0e053646ced79a816bf50621d38d5e768cdde0431fa3b0d35 languageName: node linkType: hard @@ -37705,17 +32466,10 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.0.1": - version: 2.0.1 - resolution: "ipaddr.js@npm:2.0.1" - checksum: dd194a394a843d470f88d17191b0948f383ed1c8e320813f850c336a0fcb5e9215d97ec26ca35ab4fbbd31392c8b3467f3e8344628029ed3710b2ff6b5d1034e - languageName: node - linkType: hard - -"ipaddr.js@npm:^2.1.0": - version: 2.1.0 - resolution: "ipaddr.js@npm:2.1.0" - checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 +"ipaddr.js@npm:^2.0.1, ipaddr.js@npm:^2.1.0": + version: 2.2.0 + resolution: "ipaddr.js@npm:2.2.0" + checksum: 770ba8451fd9bf78015e8edac0d5abd7a708cbf75f9429ca9147a9d2f3a2d60767cd5de2aab2b1e13ca6e4445bdeff42bf12ef6f151c07a5c6cf8a44328e2859 languageName: node linkType: hard @@ -37753,16 +32507,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.0": - version: 1.1.0 - resolution: "is-arguments@npm:1.1.0" - dependencies: - call-bind: ^1.0.0 - checksum: c32f8b5052061de83b2cd17e0e87ec914ac96e55bbd184e07f9b78b8360d80f7f9a34060d44ee8684249664609213f57447e0f63798e7c265ec811fd242b0077 - languageName: node - linkType: hard - -"is-arguments@npm:^1.1.1": +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -37772,18 +32517,7 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": - version: 3.0.2 - resolution: "is-array-buffer@npm:3.0.2" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.2.0 - is-typed-array: ^1.1.10 - checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.4": +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": version: 3.0.4 resolution: "is-array-buffer@npm:3.0.4" dependencies: @@ -37817,9 +32551,11 @@ __metadata: linkType: hard "is-bigint@npm:^1.0.1": - version: 1.0.1 - resolution: "is-bigint@npm:1.0.1" - checksum: 04aa6fde59d2b7929df865acb89c8d7f89f919cc149b8be11e3560b1aab8667e5d939cc8954097c496f7dda80fd5bb67f829ca80ab66cc68918e41e2c1b9c5d7 + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: ^1.0.1 + checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 languageName: node linkType: hard @@ -37833,11 +32569,12 @@ __metadata: linkType: hard "is-boolean-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-boolean-object@npm:1.1.0" + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" dependencies: - call-bind: ^1.0.0 - checksum: 3ead0446176ee42a69f87658bf12d53c135095336d34765fa65f137f378ea125429bf777f91f6dd3407db80829d742bc4fb2fdaf8d2cf6ba82a2de2a07fbbac7 + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 languageName: node linkType: hard @@ -37855,32 +32592,23 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.4": - version: 1.2.4 - resolution: "is-callable@npm:1.2.4" - checksum: 1a28d57dc435797dae04b173b65d6d1e77d4f16276e9eff973f994eadcfdc30a017e6a597f092752a083c1103cceb56c91e3dadc6692fedb9898dfaba701575f +"is-bun-module@npm:^1.0.2": + version: 1.2.1 + resolution: "is-bun-module@npm:1.2.1" + dependencies: + semver: ^7.6.3 + checksum: 1c2cbcf1a76991add1b640d2d7fe09848e8697a76f96e1289dff44133a48c97f5dc601d4a66d3f3a86217a77178d72d33d10d0c9e14194e58e70ec8df3eae41a languageName: node linkType: hard -"is-callable@npm:^1.2.7": +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac languageName: node linkType: hard -"is-ci@npm:^3.0.0": - version: 3.0.0 - resolution: "is-ci@npm:3.0.0" - dependencies: - ci-info: ^3.1.1 - bin: - is-ci: bin.js - checksum: 4b45aef32dd42dcb1f6fb3cd4b3a7ee7e18ea47516d2129005f46c3f36983506bb471382bac890973cf48a2f60d926a24461674ca2d9dc10744d82d4a876c26b - languageName: node - linkType: hard - -"is-ci@npm:^3.0.1": +"is-ci@npm:^3.0.0, is-ci@npm:^3.0.1": version: 3.0.1 resolution: "is-ci@npm:3.0.1" dependencies: @@ -37898,48 +32626,12 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0": - version: 2.12.0 - resolution: "is-core-module@npm:2.12.0" - dependencies: - has: ^1.0.3 - checksum: f7f7eb2ab71fd769ee9fb2385c095d503aa4b5ce0028c04557de03f1e67a87c85e5bac1f215945fc3c955867a139a415a3ec4c4234a0bffdf715232660f440a6 - languageName: node - linkType: hard - -"is-core-module@npm:^2.12.0, is-core-module@npm:^2.9.0": - version: 2.12.1 - resolution: "is-core-module@npm:2.12.1" - dependencies: - has: ^1.0.3 - checksum: f04ea30533b5e62764e7b2e049d3157dc0abd95ef44275b32489ea2081176ac9746ffb1cdb107445cf1ff0e0dfcad522726ca27c27ece64dadf3795428b8e468 - languageName: node - linkType: hard - -"is-core-module@npm:^2.13.0": - version: 2.13.0 - resolution: "is-core-module@npm:2.13.0" - dependencies: - has: ^1.0.3 - checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355 - languageName: node - linkType: hard - -"is-core-module@npm:^2.13.1": - version: 2.15.0 - resolution: "is-core-module@npm:2.15.0" +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1": + version: 2.15.1 + resolution: "is-core-module@npm:2.15.1" dependencies: hasown: ^2.0.2 - checksum: a9f7a52707c9b59d7164094d183bda892514fc3ba3139f245219c7abe7f6e8d3e2cdcf861f52a891a467f785f1dfa5d549f73b0ee715f4ba56e8882d335ea585 - languageName: node - linkType: hard - -"is-core-module@npm:^2.8.1": - version: 2.9.0 - resolution: "is-core-module@npm:2.9.0" - dependencies: - has: ^1.0.3 - checksum: b27034318b4b462f1c8f1dfb1b32baecd651d891a4e2d1922135daeff4141dfced2b82b07aef83ef54275c4a3526aa38da859223664d0868ca24182badb784ce + checksum: df134c168115690724b62018c37b2f5bba0d5745fa16960b329c5a00883a8bea6a5632fdb1e3efcce237c201826ba09f93197b7cd95577ea56b0df335be23633 languageName: node linkType: hard @@ -37952,14 +32644,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": - version: 1.0.2 - resolution: "is-date-object@npm:1.0.2" - checksum: ac859426e5df031abd9d1eeed32a41cc0de06e47227bd972b8bc716460a9404654b3dba78f41e8171ccf535c4bfa6d72a8d1d15a0873f9646698af415e92c2fb - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.2, is-date-object@npm:^1.0.5": +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.2, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -38182,14 +32867,14 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.1, is-map@npm:^2.0.2": - version: 2.0.2 - resolution: "is-map@npm:2.0.2" - checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc languageName: node linkType: hard -"is-nan@npm:^1.2.1, is-nan@npm:^1.3.2": +"is-nan@npm:^1.3.2": version: 1.3.2 resolution: "is-nan@npm:1.3.2" dependencies: @@ -38199,13 +32884,6 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - "is-negative-zero@npm:^2.0.3": version: 2.0.3 resolution: "is-negative-zero@npm:2.0.3" @@ -38214,9 +32892,11 @@ __metadata: linkType: hard "is-number-object@npm:^1.0.4": - version: 1.0.4 - resolution: "is-number-object@npm:1.0.4" - checksum: d8e4525b5c151f1830872bf217901b58b3a9f66d93fe2f71c2087418e03d7f5c19a3ad64afa0feb70dafd93f7b97e205e3520a8ff007be665e54b377f5b736a8 + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: ^1.0.0 + checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 languageName: node linkType: hard @@ -38257,7 +32937,7 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^2.0.0, is-plain-obj@npm:^2.1.0": +"is-plain-obj@npm:^2.0.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa @@ -38334,23 +33014,14 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.1, is-set@npm:^2.0.2": - version: 2.0.2 - resolution: "is-set@npm:2.0.2" - checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.3": +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": version: 1.0.3 resolution: "is-shared-array-buffer@npm:1.0.3" dependencies: @@ -38374,9 +33045,9 @@ __metadata: linkType: hard "is-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "is-stream@npm:2.0.0" - checksum: 4dc47738e26bc4f1b3be9070b6b9e39631144f204fc6f87db56961220add87c10a999ba26cf81699f9ef9610426f69cb08a4713feff8deb7d8cadac907826935 + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 languageName: node linkType: hard @@ -38404,24 +33075,15 @@ __metadata: linkType: hard "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.3 - resolution: "is-symbol@npm:1.0.3" - dependencies: - has-symbols: ^1.0.1 - checksum: c6d54bd01218fa202da8ce91525ca41a907819be5f000df9ab9621467e087eb36f34b2dbfa51a2a699a282e860681ffa6a787d69e944ba99a46d3df553ff2798 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.10": - version: 1.1.12 - resolution: "is-typed-array@npm:1.1.12" + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" dependencies: - which-typed-array: ^1.1.11 - checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc4771796 + has-symbols: ^1.0.2 + checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 languageName: node linkType: hard -"is-typed-array@npm:^1.1.13": +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": version: 1.1.13 resolution: "is-typed-array@npm:1.1.13" dependencies: @@ -38430,32 +33092,6 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.3": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "is-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.20.0 - for-each: ^0.3.3 - has-tostringtag: ^1.0.0 - checksum: 11910f1e58755fef43bf0074e52fa5b932bf101ec65d613e0a83d40e8e4c6e3f2ee142d624ebc7624c091d3bbe921131f8db7d36ecbbb71909f2fe310c1faa65 - languageName: node - linkType: hard - "is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -38511,10 +33147,10 @@ __metadata: languageName: node linkType: hard -"is-weakmap@npm:^2.0.1": - version: 2.0.1 - resolution: "is-weakmap@npm:2.0.1" - checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d languageName: node linkType: hard @@ -38527,13 +33163,13 @@ __metadata: languageName: node linkType: hard -"is-weakset@npm:^2.0.1": - version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 + call-bind: ^1.0.7 + get-intrinsic: ^1.2.4 + checksum: 8b6a20ee9f844613ff8f10962cfee49d981d584525f2357fee0a04dfbcde9fd607ed60cb6dab626dbcc470018ae6392e1ff74c0c1aced2d487271411ad9d85ae languageName: node linkType: hard @@ -38567,6 +33203,15 @@ __metadata: languageName: node linkType: hard +"is-wsl@npm:^3": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: ^1.0.0 + checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 + languageName: node + linkType: hard + "isarray@npm:0.0.1": version: 0.0.1 resolution: "isarray@npm:0.0.1" @@ -38588,13 +33233,6 @@ __metadata: languageName: node linkType: hard -"isemail@npm:2.x.x": - version: 2.2.1 - resolution: "isemail@npm:2.2.1" - checksum: 64b7b09a04fc09e29ff59b4de46931727bcdbc23c1eec11d895f4a0c85b28d6c98c9a36282a0cb442ca97a6ea1810c87660f3ae0b803c7b6b8bd366001c21ad1 - languageName: node - linkType: hard - "isemail@npm:3.x.x": version: 3.2.0 resolution: "isemail@npm:3.2.0" @@ -38611,6 +33249,13 @@ __metadata: languageName: node linkType: hard +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e + languageName: node + linkType: hard + "island.is@workspace:.": version: 0.0.0-use.local resolution: "island.is@workspace:." @@ -39030,7 +33675,7 @@ __metadata: languageName: node linkType: hard -"isomorphic-fetch@npm:3.0.0, isomorphic-fetch@npm:^3.0.0": +"isomorphic-fetch@npm:3.0.0": version: 3.0.0 resolution: "isomorphic-fetch@npm:3.0.0" dependencies: @@ -39050,7 +33695,7 @@ __metadata: languageName: node linkType: hard -"isomorphic-ws@npm:^5.0.0": +"isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": version: 5.0.0 resolution: "isomorphic-ws@npm:5.0.0" peerDependencies: @@ -39066,13 +33711,20 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:3.2.0, istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": +"istanbul-lib-coverage@npm:3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 languageName: node linkType: hard +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 + languageName: node + linkType: hard + "istanbul-lib-instrument@npm:^4.0.3": version: 4.0.3 resolution: "istanbul-lib-instrument@npm:4.0.3" @@ -39085,68 +33737,61 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": - version: 5.1.0 - resolution: "istanbul-lib-instrument@npm:5.1.0" +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: "@babel/core": ^7.12.3 "@babel/parser": ^7.14.7 "@istanbuljs/schema": ^0.1.2 istanbul-lib-coverage: ^3.2.0 semver: ^6.3.0 - checksum: 8b82e733c69fe9f94d2e21f3e5760c9bedb110329aa75df4bd40df95f1cac3bf38767e43f35b125cc547ceca7376b72ce7d95cc5238b7e9088345c7b589233d3 + checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 languageName: node linkType: hard "istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.0 - resolution: "istanbul-lib-instrument@npm:6.0.0" + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 + "@babel/core": ^7.23.9 + "@babel/parser": ^7.23.9 + "@istanbuljs/schema": ^0.1.3 istanbul-lib-coverage: ^3.2.0 semver: ^7.5.4 - checksum: b9dc3723a769e65dbe1b912f935088ffc07cf393fa78a3ce79022c91aabb0ad01405ffd56083cdd822e514798e9daae3ea7bfe85633b094ecb335d28eb0a3f97 + checksum: 74104c60c65c4fa0e97cc76f039226c356123893929f067bfad5f86fe839e08f5d680354a68fead3bc9c1e2f3fa6f3f53cded70778e821d911e851d349f3545a languageName: node linkType: hard "istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" dependencies: istanbul-lib-coverage: ^3.0.0 - make-dir: ^3.0.0 + make-dir: ^4.0.0 supports-color: ^7.1.0 - checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b + checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 languageName: node linkType: hard "istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.0 - resolution: "istanbul-lib-source-maps@npm:4.0.0" + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" dependencies: debug: ^4.1.1 istanbul-lib-coverage: ^3.0.0 source-map: ^0.6.1 - checksum: 292bfb4083e5f8783cdf829a7686b1a377d0c6c2119d4343c8478e948b38146c4827cddc7eee9f57605acd63c291376d67e4a84163d37c5fc78ad0f27f7e2621 + checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 languageName: node linkType: hard "istanbul-reports@npm:^3.0.2, istanbul-reports@npm:^3.1.3": - version: 3.1.4 - resolution: "istanbul-reports@npm:3.1.4" + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: 2132983355710c522f6b26808015cab9a0ee8b9f5ae0db0d3edeff40b886dd83cb670fb123cb7b32dbe59473d7c00cdde2ba6136bc0acdb20a865fccea64dfe1 - languageName: node - linkType: hard - -"items@npm:2.x.x": - version: 2.1.2 - resolution: "items@npm:2.1.2" - checksum: 29730f0085ec4585a51f25655ce9ecff0d444d3fe75bb7963fc6cbe741176d47cb6a4eb18d67019030e67ac8c9b0267579e8cebd5ed4ba50cf5d95b01650d7a0 + checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 languageName: node linkType: hard @@ -39171,33 +33816,20 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.2": - version: 1.1.2 - resolution: "iterator.prototype@npm:1.1.2" +"iterator.prototype@npm:^1.1.3": + version: 1.1.3 + resolution: "iterator.prototype@npm:1.1.3" dependencies: define-properties: ^1.2.1 get-intrinsic: ^1.2.1 has-symbols: ^1.0.3 reflect.getprototypeof: ^1.0.4 set-function-name: ^2.0.1 - checksum: d8a507e2ccdc2ce762e8a1d3f4438c5669160ac72b88b648e59a688eec6bc4e64b22338e74000518418d9e693faf2a092d2af21b9ec7dbf7763b037a54701168 + checksum: 7d2a1f8bcbba7b76f72e956faaf7b25405f4de54430c9d099992e6fb9d571717c3044604e8cdfb8e624cb881337d648030ee8b1541d544af8b338835e3f47ebe languageName: node linkType: hard -"jackspeak@npm:^2.0.3": - version: 2.3.3 - resolution: "jackspeak@npm:2.3.3" - dependencies: - "@isaacs/cliui": ^8.0.2 - "@pkgjs/parseargs": ^0.11.0 - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 4313a7c0cc44c7753c4cb9869935f0b06f4cf96827515f63f58ff46b3d2f6e29aba6b3b5151778397c3f5ae67ef8bfc48871967bd10343c27e90cff198ec7808 - languageName: node - linkType: hard - -"jackspeak@npm:^2.3.5": +"jackspeak@npm:^2.0.3, jackspeak@npm:^2.3.5": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" dependencies: @@ -39211,35 +33843,21 @@ __metadata: linkType: hard "jackspeak@npm:^3.1.2": - version: 3.4.0 - resolution: "jackspeak@npm:3.4.0" + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 350f6f311018bb175ffbe736b19c26ac0b134bb5a17a638169e89594eb0c24ab1c658ab3a2fda24ff63b3b19292e1a5ec19d2255bc526df704e8168d392bef85 - languageName: node - linkType: hard - -"jake@npm:^10.6.1": - version: 10.8.2 - resolution: "jake@npm:10.8.2" - dependencies: - async: 0.9.x - chalk: ^2.4.2 - filelist: ^1.0.1 - minimatch: ^3.0.4 - bin: - jake: ./bin/cli.js - checksum: b604c51863260e374ccd62cd0cfe0b659f72cb71beb7d5fb5137dd65b04cf9d5603abd01f9f6eaaac8f4182f396d6cfae01e0b0844c2215c9c1e200572307cf9 + checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 languageName: node linkType: hard "jake@npm:^10.8.5": - version: 10.8.7 - resolution: "jake@npm:10.8.7" + version: 10.9.2 + resolution: "jake@npm:10.9.2" dependencies: async: ^3.2.3 chalk: ^4.0.2 @@ -39247,7 +33865,7 @@ __metadata: minimatch: ^3.1.2 bin: jake: bin/cli.js - checksum: a23fd2273fb13f0d0d845502d02c791fd55ef5c6a2d207df72f72d8e1eac6d2b8ffa6caf660bc8006b3242e0daaa88a3ecc600194d72b5c6016ad56e9cd43553 + checksum: f2dc4a086b4f58446d02cb9be913c39710d9ea570218d7681bb861f7eeaecab7b458256c946aeaa7e548c5e0686cc293e6435501e4047174a3b6a504dcbfcaae languageName: node linkType: hard @@ -39258,6 +33876,15 @@ __metadata: languageName: node linkType: hard +"jay-peg@npm:^1.0.2": + version: 1.1.0 + resolution: "jay-peg@npm:1.1.0" + dependencies: + restructure: ^3.0.0 + checksum: 70a233c81a1a9d0fec865a0ccc36b2a5a910ddc8f66a6d408cb290495f1063c195b316486739b0de73ce0b7316d0512b5a336cff402e0b50c39b9c3bc6e39c0a + languageName: node + linkType: hard + "jest-changed-files@npm:^29.7.0": version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" @@ -39399,18 +34026,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^27.0.0": - version: 27.5.1 - resolution: "jest-diff@npm:27.5.1" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^27.5.1 - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: 8be27c1e1ee57b2bb2bef9c0b233c19621b4c43d53a3c26e2c00a4e805eb4ea11fe1694a06a9fb0e80ffdcfdc0d2b1cb0b85920b3f5c892327ecd1e7bd96b865 - languageName: node - linkType: hard - "jest-diff@npm:^29.4.1, jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -39423,18 +34038,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-diff@npm:29.5.0" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.4.3 - jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: dfd0f4a299b5d127779c76b40106c37854c89c3e0785098c717d52822d6620d227f6234c3a9291df204d619e799e3654159213bf93220f79c8e92a55475a3d39 - languageName: node - linkType: hard - "jest-docblock@npm:^29.7.0": version: 29.7.0 resolution: "jest-docblock@npm:29.7.0" @@ -39499,13 +34102,6 @@ __metadata: languageName: node linkType: hard -"jest-get-type@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-get-type@npm:29.4.3" - checksum: 6ac7f2dde1c65e292e4355b6c63b3a4897d7e92cb4c8afcf6d397f2682f8080e094c8b0b68205a74d269882ec06bf696a9de6cd3e1b7333531e5ed7b112605ce - languageName: node - linkType: hard - "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" @@ -39537,29 +34133,6 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-haste-map@npm:29.5.0" - dependencies: - "@jest/types": ^29.5.0 - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 - micromatch: ^4.0.4 - walker: ^1.0.8 - dependenciesMeta: - fsevents: - optional: true - checksum: 3828ff7783f168e34be2c63887f82a01634261f605dcae062d83f979a61c37739e21b9607ecb962256aea3fbe5a530a1acee062d0026fcb47c607c12796cf3b7 - languageName: node - linkType: hard - "jest-haste-map@npm:^29.7.0": version: 29.7.0 resolution: "jest-haste-map@npm:29.7.0" @@ -39593,18 +34166,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-matcher-utils@npm:29.5.0" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.5.0 - jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 1d3e8c746e484a58ce194e3aad152eff21fd0896e8b8bf3d4ab1a4e2cbfed95fb143646f4ad9fdf6e42212b9e8fc033268b58e011b044a9929df45485deb5ac9 - languageName: node - linkType: hard - "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -39634,23 +34195,6 @@ __metadata: languageName: node linkType: hard -"jest-message-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-message-util@npm:29.5.0" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.5.0 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.5.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: daddece6bbf846eb6a2ab9be9f2446e54085bef4e5cecd13d2a538fa9c01cb89d38e564c6b74fd8e12d37ed9eface8a362240ae9f21d68b214590631e7a0d8bf - languageName: node - linkType: hard - "jest-message-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" @@ -39692,14 +34236,14 @@ __metadata: linkType: hard "jest-pnp-resolver@npm:^1.2.2": - version: 1.2.2 - resolution: "jest-pnp-resolver@npm:1.2.2" + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" peerDependencies: jest-resolve: "*" peerDependenciesMeta: jest-resolve: optional: true - checksum: bd85dcc0e76e0eb0c3d56382ec140f08d25ff4068cda9d0e360bb78fb176cb726d0beab82dc0e8694cafd09f55fee7622b8bcb240afa5fad301f4ed3eebb4f47 + checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 languageName: node linkType: hard @@ -39710,13 +34254,6 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-regex-util@npm:29.4.3" - checksum: 96fc7fc28cd4dd73a63c13a526202c4bd8b351d4e5b68b1a2a2c88da3308c2a16e26feaa593083eb0bac38cca1aa9dd05025412e7de013ba963fb8e66af22b8a - languageName: node - linkType: hard - "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -39770,24 +34307,7 @@ __metadata: languageName: node linkType: hard -"jest-resolve@npm:^29.4.1": - version: 29.5.0 - resolution: "jest-resolve@npm:29.5.0" - dependencies: - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 - jest-pnp-resolver: ^1.2.2 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 - resolve: ^1.20.0 - resolve.exports: ^2.0.0 - slash: ^3.0.0 - checksum: 9a125f3cf323ceef512089339d35f3ee37f79fe16a831fb6a26773ea6a229b9e490d108fec7af334142e91845b5996de8e7cdd85a4d8d617078737d804e29c8f - languageName: node - linkType: hard - -"jest-resolve@npm:^29.7.0": +"jest-resolve@npm:^29.4.1, jest-resolve@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve@npm:29.7.0" dependencies: @@ -39936,35 +34456,7 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.0.0, jest-util@npm:^29.4.1, jest-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-util@npm:29.5.0" - dependencies: - "@jest/types": ^29.5.0 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: fd9212950d34d2ecad8c990dda0d8ea59a8a554b0c188b53ea5d6c4a0829a64f2e1d49e6e85e812014933d17426d7136da4785f9cf76fff1799de51b88bc85d3 - languageName: node - linkType: hard - -"jest-util@npm:^29.6.0": - version: 29.6.0 - resolution: "jest-util@npm:29.6.0" - dependencies: - "@jest/types": ^29.6.0 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 35b95cdfddc20c0249821bcee35e4e4355981339c618049f9be79aace712c05096b385d3abd2cfb66a7995ec37b7e56acf6421ee0c42236e4add6379fcb0ebeb - languageName: node - linkType: hard - -"jest-util@npm:^29.7.0": +"jest-util@npm:^29.0.0, jest-util@npm:^29.4.1, jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" dependencies: @@ -39992,20 +34484,6 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-validate@npm:29.5.0" - dependencies: - "@jest/types": ^29.5.0 - camelcase: ^6.2.0 - chalk: ^4.0.0 - jest-get-type: ^29.4.3 - leven: ^3.1.0 - pretty-format: ^29.5.0 - checksum: 43ca5df7cb75572a254ac3e92fbbe7be6b6a1be898cc1e887a45d55ea003f7a112717d814a674d37f9f18f52d8de40873c8f084f17664ae562736c78dd44c6a1 - languageName: node - linkType: hard - "jest-validate@npm:^29.6.3, jest-validate@npm:^29.7.0": version: 29.7.0 resolution: "jest-validate@npm:29.7.0" @@ -40047,31 +34525,7 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.4.3": - version: 29.6.0 - resolution: "jest-worker@npm:29.6.0" - dependencies: - "@types/node": "*" - jest-util: ^29.6.0 - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 505f1572b329504670b5ee1325cb23f35cc25b3f17f8244dec50e77bf45e50612c80c68d4263ac5722cb68e8cf41ec187e967b76d8060daf44beb5afc95e3e27 - languageName: node - linkType: hard - -"jest-worker@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-worker@npm:29.5.0" - dependencies: - "@types/node": "*" - jest-util: ^29.5.0 - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 1151a1ae3602b1ea7c42a8f1efe2b5a7bf927039deaa0827bf978880169899b705744e288f80a63603fb3fc2985e0071234986af7dc2c21c7a64333d8777c7c9 - languageName: node - linkType: hard - -"jest-worker@npm:^29.6.3, jest-worker@npm:^29.7.0": +"jest-worker@npm:^29.4.3, jest-worker@npm:^29.6.3, jest-worker@npm:^29.7.0": version: 29.7.0 resolution: "jest-worker@npm:29.7.0" dependencies: @@ -40109,6 +34563,15 @@ __metadata: languageName: node linkType: hard +"jiti@npm:1.17.1": + version: 1.17.1 + resolution: "jiti@npm:1.17.1" + bin: + jiti: bin/jiti.js + checksum: 56c6d8488e7e9cc6ee66a0f0d5e18db6669cb12b2e93364f393442289a9bc75a8e8c796249f59015e01c3ebdf9478e2ca8b76c30e29072c678ee00d39de757c7 + languageName: node + linkType: hard + "jmespath@npm:0.15.0": version: 0.15.0 resolution: "jmespath@npm:0.15.0" @@ -40116,7 +34579,14 @@ __metadata: languageName: node linkType: hard -"joi@npm:17.13.3": +"jmespath@npm:0.16.0": + version: 0.16.0 + resolution: "jmespath@npm:0.16.0" + checksum: 2d602493a1e4addfd1350ac8c9d54b1b03ed09e305fd863bab84a4ee1f52868cf939dd1a08c5cdea29ce9ba8f86875ebb458b6ed45dab3e1c3f2694503fb2fd9 + languageName: node + linkType: hard + +"joi@npm:17.13.3, joi@npm:^17.2.1, joi@npm:^17.4.0": version: 17.13.3 resolution: "joi@npm:17.13.3" dependencies: @@ -40129,18 +34599,6 @@ __metadata: languageName: node linkType: hard -"joi@npm:^10.6.0": - version: 10.6.0 - resolution: "joi@npm:10.6.0" - dependencies: - hoek: 4.x.x - isemail: 2.x.x - items: 2.x.x - topo: 2.x.x - checksum: 9a24dccbab07d4c73a4b4978f791c1bd4484fddb9c7588ad1787422ffbda58052ac82e8738992f587c59e63775c685db2c42f433580e8ebc6199dbd5bd05e90f - languageName: node - linkType: hard - "joi@npm:^13.4.0": version: 13.7.0 resolution: "joi@npm:13.7.0" @@ -40152,19 +34610,6 @@ __metadata: languageName: node linkType: hard -"joi@npm:^17.2.1": - version: 17.9.1 - resolution: "joi@npm:17.9.1" - dependencies: - "@hapi/hoek": ^9.0.0 - "@hapi/topo": ^5.0.0 - "@sideway/address": ^4.1.3 - "@sideway/formula": ^3.0.1 - "@sideway/pinpoint": ^2.0.0 - checksum: 055df3841e00d7ed065ef1cc3330cf69097ab2ffec3083d8b1d6edfd2e25504bf2983f5249d6f0459bcad99fe21bb0c9f6f1cc03569713af27cd5eb00ee7bb7d - languageName: node - linkType: hard - "join-component@npm:^1.1.0": version: 1.1.0 resolution: "join-component@npm:1.1.0" @@ -40173,43 +34618,43 @@ __metadata: linkType: hard "jora@npm:^1.0.0-beta.5": - version: 1.0.0-beta.6 - resolution: "jora@npm:1.0.0-beta.6" + version: 1.0.0-beta.13 + resolution: "jora@npm:1.0.0-beta.13" dependencies: - "@discoveryjs/natural-compare": ^1.0.0 - checksum: d3c60163d88069fd2b6d4df69d4bf414707354a1eb8635a7e96669934307a26730622ce2b84a7a21dd407573c3b0d2e88a34f24aa88f77d870ef9a677f87dba8 + "@discoveryjs/natural-compare": ^1.1.0 + checksum: a32c3f8f19081e2cf4e02dcd6a8563d1438e32abe2091d84ab1e6a8e7ff9abb390db69e3fe4364be2c9fe1611069a4a38db79d81af204ff1d0dfe5d60595862c languageName: node linkType: hard "jose@npm:^1.27.2": - version: 1.28.1 - resolution: "jose@npm:1.28.1" + version: 1.28.2 + resolution: "jose@npm:1.28.2" dependencies: "@panva/asn1.js": ^1.0.0 - checksum: b91458949df7df08810b7a896a10751f25d3108dfcc41af138dc01e8e5bf7f90ea510cdb3d6bc37e3a293ec7d5cc26fb587de7ce15785a8109892c412e5c0416 + checksum: d601afdc79b28ec1fc49bf089921943ac69b73312840c0e1d1dacb6fc3e9cf40d879a333652507177cc7f1cea0af1d36b2ca79f57e166297951e87abd2a96bac languageName: node linkType: hard -"jose@npm:^4.10.4": - version: 4.11.2 - resolution: "jose@npm:4.11.2" - checksum: bc9b2271c31683603857b2fd2903afa29f826fffd4bcefc0845355ed86995def87eaadf502033207996109d76698c912e5a986e279326d9629321a50504fe466 +"jose@npm:^4.10.4, jose@npm:^4.11.4, jose@npm:^4.14.6": + version: 4.15.9 + resolution: "jose@npm:4.15.9" + checksum: 41abe1c99baa3cf8a78ebbf93da8f8e50e417b7a26754c4afa21865d87527b8ac2baf66de2c5f6accc3f7d7158658dae7364043677236ea1d07895b040097f15 languageName: node linkType: hard -"jotai-optics@npm:0.3.1": - version: 0.3.1 - resolution: "jotai-optics@npm:0.3.1" +"jotai-optics@npm:0.3.2": + version: 0.3.2 + resolution: "jotai-optics@npm:0.3.2" peerDependencies: jotai: ">=1.11.0" optics-ts: "*" - checksum: fd1c531f17c6d2f113335500a9ebaa583a19202d86737c4ea8760a30dfd8a3ffa70a5d73abbba243e2de619f794a064b36b3aee1b0a35154c40dcac8c7e29d2a + checksum: c46f5faa017d252100eba2da88d87c9871175e545ba5e1b5232a973cc18ea66dbe87e6aa3ff53a960971811bceea832743976a93c7d6c2a9aa6ce58945a9b52f languageName: node linkType: hard -"jotai-x@npm:^1.2.1": - version: 1.2.3 - resolution: "jotai-x@npm:1.2.3" +"jotai-x@npm:^1.2.3": + version: 1.2.4 + resolution: "jotai-x@npm:1.2.4" peerDependencies: "@types/react": ">=17.0.0" jotai: ">=2.0.0" @@ -40219,13 +34664,13 @@ __metadata: optional: true react: optional: true - checksum: 52d42db5370fee2eb9d876636107b2a161b97e6174ec38b031024005747ef9b5aa810b7f99781844d810311c7ee7356ff072c4055814144bfa864b5957e445c5 + checksum: bf4aac8573f60b29b100c1eff5bcf09cfa136f695026d6d9f6d44f9f7c23a6c5bf6b5b36a0b82da6dfd116028ccfadab887d800a1ed240a8fa71ca989164fd2c languageName: node linkType: hard -"jotai@npm:^2.6.0": - version: 2.8.0 - resolution: "jotai@npm:2.8.0" +"jotai@npm:^2.7.1": + version: 2.10.1 + resolution: "jotai@npm:2.10.1" peerDependencies: "@types/react": ">=17.0.0" react: ">=17.0.0" @@ -40234,7 +34679,7 @@ __metadata: optional: true react: optional: true - checksum: b24e7676fb659e72fcd6ccd57b1e120b80fa9172353e5d9e9f980b29d4d176238e3fd0c1b555c51476a0a8dc0d2ea391c6b2840d3e7bfb315892e8a621fd8dfb + checksum: c9580f29fbbfce3e18f044e2bb80bb563a6d15952451a0430f28c4bd6340498bbec0537e8cf38722de117d4ec5846aa2d81489cd55e41b28d018776d2ae533e4 languageName: node linkType: hard @@ -40246,18 +34691,19 @@ __metadata: linkType: hard "js-beautify@npm:^1.14.0": - version: 1.14.3 - resolution: "js-beautify@npm:1.14.3" + version: 1.15.1 + resolution: "js-beautify@npm:1.15.1" dependencies: config-chain: ^1.1.13 - editorconfig: ^0.15.3 - glob: ^7.1.3 - nopt: ^5.0.0 + editorconfig: ^1.0.4 + glob: ^10.3.3 + js-cookie: ^3.0.5 + nopt: ^7.2.0 bin: css-beautify: js/bin/css-beautify.js html-beautify: js/bin/html-beautify.js js-beautify: js/bin/js-beautify.js - checksum: 475146747ddfa233dedfdcba2c2c29cd0895730e6627455fa5dc388b61074fd856fc874cbd18da92b8dc5c04aea25eb46aec95a1e37b2c32f0dd25fb1f4c4698 + checksum: 0428ea358cdf169da15e11a8b63f13845ee39c707f3718a3ec515eb89d585544525aa8ba5306503431c61e33e1fbfebdf2af41c461e512619d8a2f8664d6c0c4 languageName: node linkType: hard @@ -40268,6 +34714,13 @@ __metadata: languageName: node linkType: hard +"js-cookie@npm:^3.0.5": + version: 3.0.5 + resolution: "js-cookie@npm:3.0.5" + checksum: 2dbd2809c6180fbcf060c6957cb82dbb47edae0ead6bd71cbeedf448aa6b6923115003b995f7d3e3077bfe2cb76295ea6b584eb7196cca8ba0a09f389f64967a + languageName: node + linkType: hard + "js-levenshtein@npm:^1.1.6": version: 1.1.6 resolution: "js-levenshtein@npm:1.1.6" @@ -40275,6 +34728,13 @@ __metadata: languageName: node linkType: hard +"js-md4@npm:^0.3.2": + version: 0.3.2 + resolution: "js-md4@npm:0.3.2" + checksum: aa7b7cbd738b105f86fc0fa50ce2a7a6b6b329ff3f713d1bd38b12c2a72929bab5a16e658a03830faa8d656356aa89b4f77f1fbf05ffa8d095bda6d831441c2d + languageName: node + linkType: hard + "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -40296,17 +34756,6 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:4.0.0": - version: 4.0.0 - resolution: "js-yaml@npm:4.0.0" - dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: 931d6dddb3589fa272c8273366c6dffa99fd6bd26ac7b70f9bac925c28cb7ae352b964192df84f90ecd7a2ff50ab87e6d58e2148eb19c89aa155c73ed847ab92 - languageName: node - linkType: hard - "js-yaml@npm:4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -40318,7 +34767,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.0, js-yaml@npm:^3.14.1, js-yaml@npm:^3.9.0": +"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1, js-yaml@npm:^3.9.0": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -40398,28 +34847,28 @@ __metadata: languageName: node linkType: hard -"jsdoc@npm:^3.6.3": - version: 3.6.11 - resolution: "jsdoc@npm:3.6.11" +"jsdoc@npm:^4.0.0": + version: 4.0.4 + resolution: "jsdoc@npm:4.0.4" dependencies: - "@babel/parser": ^7.9.4 - "@types/markdown-it": ^12.2.3 + "@babel/parser": ^7.20.15 + "@jsdoc/salty": ^0.2.1 + "@types/markdown-it": ^14.1.1 bluebird: ^3.7.2 catharsis: ^0.9.0 escape-string-regexp: ^2.0.0 js2xmlparser: ^4.0.2 klaw: ^3.0.0 - markdown-it: ^12.3.2 - markdown-it-anchor: ^8.4.1 + markdown-it: ^14.1.0 + markdown-it-anchor: ^8.6.7 marked: ^4.0.10 mkdirp: ^1.0.4 requizzle: ^0.2.3 strip-json-comments: ^3.1.0 - taffydb: 2.6.2 underscore: ~1.13.2 bin: - jsdoc: jsdoc.js - checksum: 7920b5cba6200c8f56c9ac2ac5e89d06b6581dd1ce22e66976409fad8b68c16bfd8cd30fe9af58baeacc9f6bd9ba06d901ca4f5e234944f42a3c37e55e4ddcf0 + jsdoc: ./jsdoc.js + checksum: f4372a15a262ffd5abfe71315bbf9ad0fd3dd633ca04298702c0b0d3bacd615a35e9f11877bd7aa4e1bb04adb731a55fb15c3e14e69a8e740e86c45548ad39b6 languageName: node linkType: hard @@ -40511,12 +34960,12 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" +"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" bin: jsesc: bin/jsesc - checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 + checksum: a36d3ca40574a974d9c2063bf68c2b6141c20da8f2a36bd3279fc802563f35f0527a6c828801295bdfb2803952cf2cf387786c2c90ed564f88d5782475abfe3c languageName: node linkType: hard @@ -40529,7 +34978,7 @@ __metadata: languageName: node linkType: hard -"json-buffer@npm:3.0.1, json-buffer@npm:~3.0.1": +"json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 @@ -40604,11 +35053,14 @@ __metadata: linkType: hard "json-stable-stringify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify@npm:1.0.1" + version: 1.1.1 + resolution: "json-stable-stringify@npm:1.1.1" dependencies: - jsonify: ~0.0.0 - checksum: 65d6cbf0fca72a4136999f65f4401cf39a129f7aeff0fdd987ac3d3423a2113659294045fb8377e6e20d865cac32b1b8d70f3d87346c9786adcee60661d96ca5 + call-bind: ^1.0.5 + isarray: ^2.0.5 + jsonify: ^0.0.1 + object-keys: ^1.1.1 + checksum: e1ba06600fd278767eeff53f28e408e29c867e79abf564e7aadc3ce8f31f667258f8db278ef28831e45884dd687388fa1910f46e599fc19fb94c9afbbe3a4de8 languageName: node linkType: hard @@ -40629,18 +35081,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.1": - version: 1.0.1 - resolution: "json5@npm:1.0.1" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: e76ea23dbb8fc1348c143da628134a98adf4c5a4e8ea2adaa74a80c455fc2cdf0e2e13e6398ef819bfe92306b610ebb2002668ed9fc1af386d593691ef346fc3 - languageName: node - linkType: hard - -"json5@npm:^1.0.2": +"json5@npm:^1.0.1, json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" dependencies: @@ -40651,16 +35092,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.2.1": - version: 2.2.1 - resolution: "json5@npm:2.2.1" - bin: - json5: lib/cli.js - checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b - languageName: node - linkType: hard - -"json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -40670,14 +35102,14 @@ __metadata: linkType: hard "jsonc-eslint-parser@npm:^2.1.0": - version: 2.3.0 - resolution: "jsonc-eslint-parser@npm:2.3.0" + version: 2.4.0 + resolution: "jsonc-eslint-parser@npm:2.4.0" dependencies: acorn: ^8.5.0 eslint-visitor-keys: ^3.0.0 espree: ^9.0.0 semver: ^7.3.5 - checksum: e9343fee870a16f04fdb811b58a9469134c54a03edd58aa5654a888ebae63952cbff3ea3dcad3973465009a275282c6c0dd513e8c3850f7f485a164180085a8b + checksum: 495d8be340b464137db0bb25f8280deda2ad773cca6b8b5605325fddb50e8e317842a07ffdfa692b0adcba2d06e25d127087f2d703a63032923d1e67ee5a9efe languageName: node linkType: hard @@ -40720,10 +35152,10 @@ __metadata: languageName: node linkType: hard -"jsonify@npm:~0.0.0": - version: 0.0.0 - resolution: "jsonify@npm:0.0.0" - checksum: d8d4ed476c116e6987a460dcb82f22284686caae9f498ac87b0502c1765ac1522f4f450a4cad4cc368d202fd3b27a3860735140a82867fc6d558f5f199c38bce +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 027287e1c0294fce15f18c0ff990cfc2318e7f01fb76515f784d5cd0784abfec6fc5c2355c3a2f2cb0ad7f4aa2f5b74ebbfe4e80476c35b2d13cabdb572e1134 languageName: node linkType: hard @@ -40746,6 +35178,17 @@ __metadata: languageName: node linkType: hard +"jsonpath@npm:^1.1.1": + version: 1.1.1 + resolution: "jsonpath@npm:1.1.1" + dependencies: + esprima: 1.2.2 + static-eval: 2.0.2 + underscore: 1.12.1 + checksum: 5480d8e9e424fe2ed4ade6860b6e2cefddb21adb3a99abe0254cd9428e8ef9b0c9fb5729d6a5a514e90df50d645ccea9f3be48d627570e6222dd5dadc28eba7b + languageName: node + linkType: hard + "jsonwebtoken@npm:8.5.1, jsonwebtoken@npm:^8.5.1": version: 8.5.1 resolution: "jsonwebtoken@npm:8.5.1" @@ -40764,7 +35207,7 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:9.0.0, jsonwebtoken@npm:^9.0.0": +"jsonwebtoken@npm:9.0.0": version: 9.0.0 resolution: "jsonwebtoken@npm:9.0.0" dependencies: @@ -40776,15 +35219,21 @@ __metadata: languageName: node linkType: hard -"jsprim@npm:^1.2.2": - version: 1.4.2 - resolution: "jsprim@npm:1.4.2" +"jsonwebtoken@npm:^9.0.0": + version: 9.0.2 + resolution: "jsonwebtoken@npm:9.0.2" dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a + jws: ^3.2.2 + lodash.includes: ^4.3.0 + lodash.isboolean: ^3.0.3 + lodash.isinteger: ^4.0.4 + lodash.isnumber: ^3.0.3 + lodash.isplainobject: ^4.0.6 + lodash.isstring: ^4.0.1 + lodash.once: ^4.0.0 + ms: ^2.1.1 + semver: ^7.5.4 + checksum: fc739a6a8b33f1974f9772dca7f8493ca8df4cc31c5a09dcfdb7cff77447dcf22f4236fb2774ef3fe50df0abeb8e1c6f4c41eba82f500a804ab101e2fbc9d61a languageName: node linkType: hard @@ -40800,27 +35249,7 @@ __metadata: languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": - version: 3.2.2 - resolution: "jsx-ast-utils@npm:3.2.2" - dependencies: - array-includes: ^3.1.4 - object.assign: ^4.1.2 - checksum: 88c7ade9e1edb8e27021c9ac194184f47d6ffd3852807c3aac44b1610f7eb33359e1aa872a35008d43ed66b5f7be0f6fd8d6e0574d01cf3a4af3ceb0cd0b5988 - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^3.3.3": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" - dependencies: - array-includes: ^3.1.5 - object.assign: ^4.1.3 - checksum: a2ed78cac49a0f0c4be8b1eafe3c5257a1411341d8e7f1ac740debae003de04e5f6372bfcfbd9d082e954ffd99aac85bcda85b7c6bc11609992483f4cdc0f745 - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^3.3.5": +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3, jsx-ast-utils@npm:^3.3.5": version: 3.3.5 resolution: "jsx-ast-utils@npm:3.3.5" dependencies: @@ -40895,7 +35324,7 @@ __metadata: languageName: node linkType: hard -"jwks-rsa@npm:3.0.1, jwks-rsa@npm:^3.0.1": +"jwks-rsa@npm:3.0.1": version: 3.0.1 resolution: "jwks-rsa@npm:3.0.1" dependencies: @@ -40909,6 +35338,20 @@ __metadata: languageName: node linkType: hard +"jwks-rsa@npm:^3.0.1": + version: 3.1.0 + resolution: "jwks-rsa@npm:3.1.0" + dependencies: + "@types/express": ^4.17.17 + "@types/jsonwebtoken": ^9.0.2 + debug: ^4.3.4 + jose: ^4.14.6 + limiter: ^1.1.5 + lru-memoizer: ^2.2.0 + checksum: eef0c174b0dc7015585982de3aa6644bb8d5b355ebcfc3a40e52ab66cbb9b7c0b699089fd68b7f5d68ae01735a45251f1c1ebc35e9d749e5b84693cc871b0f93 + languageName: node + linkType: hard + "jws@npm:^3.2.2": version: 3.2.2 resolution: "jws@npm:3.2.2" @@ -40950,7 +35393,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:4.5.2, keyv@npm:^4.4.0": +"keyv@npm:4.5.2": version: 4.5.2 resolution: "keyv@npm:4.5.2" dependencies: @@ -40959,13 +35402,12 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.0.0": - version: 4.3.0 - resolution: "keyv@npm:4.3.0" +"keyv@npm:^4.0.0, keyv@npm:^4.4.0, keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" dependencies: - compress-brotli: ^1.3.8 json-buffer: 3.0.1 - checksum: abcb5885fc636fb867929234da9e1cd4f74a7da5db2c59fe5f8537372416cfa4e25b54e1c18ae9c3a0e9688452d15bf32fbba1ed9dfb57047673fe6ddb8a7bb6 + checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 languageName: node linkType: hard @@ -41013,14 +35455,7 @@ __metadata: languageName: node linkType: hard -"klona@npm:^2.0.4": - version: 2.0.5 - resolution: "klona@npm:2.0.5" - checksum: 8c976126ea252b766e648a4866e1bccff9d3b08432474ad80c559f6c7265cf7caede2498d463754d8c88c4759895edd8210c85c0d3155e6aae4968362889466f - languageName: node - linkType: hard - -"klona@npm:^2.0.5, klona@npm:^2.0.6": +"klona@npm:^2.0.4, klona@npm:^2.0.5": version: 2.0.6 resolution: "klona@npm:2.0.6" checksum: ac9ee3732e42b96feb67faae4d27cf49494e8a3bf3fa7115ce242fe04786788e0aff4741a07a45a2462e2079aa983d73d38519c85d65b70ef11447bbc3c58ce7 @@ -41041,20 +35476,13 @@ __metadata: languageName: node linkType: hard -"language-subtag-registry@npm:^0.3.20": +"language-subtag-registry@npm:^0.3.20, language-subtag-registry@npm:~0.3.2": version: 0.3.23 resolution: "language-subtag-registry@npm:0.3.23" checksum: 0b64c1a6c5431c8df648a6d25594ff280613c886f4a1a542d9b864e5472fb93e5c7856b9c41595c38fac31370328fc79fcc521712e89ea6d6866cbb8e0995d81 languageName: node linkType: hard -"language-subtag-registry@npm:~0.3.2": - version: 0.3.21 - resolution: "language-subtag-registry@npm:0.3.21" - checksum: 5f794525a5bfcefeea155a681af1c03365b60e115b688952a53c6e0b9532b09163f57f1fcb69d6150e0e805ec0350644a4cb35da98f4902562915be9f89572a1 - languageName: node - linkType: hard - "language-tags@npm:=1.0.5": version: 1.0.5 resolution: "language-tags@npm:1.0.5" @@ -41074,12 +35502,12 @@ __metadata: linkType: hard "launch-editor@npm:^2.6.0": - version: 2.6.0 - resolution: "launch-editor@npm:2.6.0" + version: 2.9.1 + resolution: "launch-editor@npm:2.9.1" dependencies: picocolors: ^1.0.0 - shell-quote: ^1.7.3 - checksum: 48e4230643e8fdb5c14c11314706d58d9f3fbafe2606be3d6e37da1918ad8bfe39dd87875c726a1b59b9f4da99d87ec3e36d4c528464f0b820f9e91e5cb1c02d + shell-quote: ^1.8.1 + checksum: bed887085a9729cc2ad050329d92a99f4c69bacccf96d1ed8c84670608a3a128a828ba8e9a8a41101c5aea5aea6f79984658e2fd11f6ba85e32e6e1ed16dbb1c languageName: node linkType: hard @@ -41216,9 +35644,9 @@ __metadata: linkType: hard "libphonenumber-js@npm:^1.10.14": - version: 1.10.18 - resolution: "libphonenumber-js@npm:1.10.18" - checksum: df0a4b8adfb79666636913f6da730ffc3bc037094e35be492d2f7a23ef26754d65a7afa5f64e04f5c5c2883193fa10bd4bea966fd28edcf0c72ddd13bd4b3625 + version: 1.11.12 + resolution: "libphonenumber-js@npm:1.11.12" + checksum: 4ac799d8b6ed5530be3c0a55aeb5eb7b15540ec22d010852f77a81c87a560a95d9ee3957c22170e88e213cf7d0aabc0d7a38953b26b2893fad346bbb25c044bd languageName: node linkType: hard @@ -41372,14 +35800,7 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:^2.1.0": - version: 2.1.0 - resolution: "lilconfig@npm:2.1.0" - checksum: 8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 - languageName: node - linkType: hard - -"lilconfig@npm:^3.1.2": +"lilconfig@npm:^3.1.1, lilconfig@npm:^3.1.2": version: 3.1.2 resolution: "lilconfig@npm:3.1.2" checksum: 4e8b83ddd1d0ad722600994e6ba5d858ddca14f0587aa6b9c8185e17548149b5e13d4d583d811e9e9323157fa8c6a527e827739794c7502b59243c58e210b8c3 @@ -41394,27 +35815,26 @@ __metadata: linkType: hard "linebreak@npm:^1.0.2": - version: 1.0.2 - resolution: "linebreak@npm:1.0.2" + version: 1.1.0 + resolution: "linebreak@npm:1.1.0" dependencies: base64-js: 0.0.8 - brfs: ^2.0.2 - unicode-trie: ^1.0.0 - checksum: 8cd469ac16781c29e77dcb2bdf8d28670e2e97bffe72a8d9be978676f37c9e4421af01dce7b2dd85d8466db58b06a68d22a0dea03b4bb77f8995bc8afe6b038a + unicode-trie: ^2.0.0 + checksum: 65cb66900b4b60d99bb761fb4143d8673ad5dd57dd850fcd921fe425a5a8e3c4416ebee76a68058a90d88b5033a50b210f522558a7e0c7d95ca907b5a2b52520 languageName: node linkType: hard "lines-and-columns@npm:^1.1.6": - version: 1.1.6 - resolution: "lines-and-columns@npm:1.1.6" - checksum: 198a5436b1fa5cf703bae719c01c686b076f0ad7e1aafd95a58d626cabff302dc0414822126f2f80b58a8c3d66cda8a7b6da064f27130f87e1d3506d6dfd0d68 + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 languageName: node linkType: hard "lines-and-columns@npm:~2.0.3": - version: 2.0.3 - resolution: "lines-and-columns@npm:2.0.3" - checksum: 5955363dfd7d3d7c476d002eb47944dbe0310d57959e2112dce004c0dc76cecfd479cf8c098fd479ff344acdf04ee0e82b455462a26492231ac152f6c48d17a1 + version: 2.0.4 + resolution: "lines-and-columns@npm:2.0.4" + checksum: f5e3e207467d3e722280c962b786dc20ebceb191821dcd771d14ab3146b6744cae28cf305ee4638805bec524ac54800e15698c853fcc53243821f88df37e4975 languageName: node linkType: hard @@ -41427,12 +35847,12 @@ __metadata: languageName: node linkType: hard -"linkify-it@npm:^3.0.1": - version: 3.0.3 - resolution: "linkify-it@npm:3.0.3" +"linkify-it@npm:^5.0.0": + version: 5.0.0 + resolution: "linkify-it@npm:5.0.0" dependencies: - uc.micro: ^1.0.1 - checksum: 31367a4bb70c5bbc9703246236b504b0a8e049bcd4e0de4291fa50f0ebdebf235b5eb54db6493cb0b1319357c6eeafc4324c9f4aa34b0b943d9f2e11a1268fbc + uc.micro: ^2.0.0 + checksum: b0b86cadaf816b64c947a83994ceaad1c15f9fe7e079776ab88699fb71afd7b8fc3fd3d0ae5ebec8c92c1d347be9ba257b8aef338c0ebf81b0d27dcf429a765a languageName: node linkType: hard @@ -41497,20 +35917,24 @@ __metadata: languageName: node linkType: hard -"listr2@npm:^3.8.3": - version: 3.12.2 - resolution: "listr2@npm:3.12.2" +"listr2@npm:^3.13.5, listr2@npm:^3.8.3": + version: 3.14.0 + resolution: "listr2@npm:3.14.0" dependencies: cli-truncate: ^2.1.0 - colorette: ^1.4.0 + colorette: ^2.0.16 log-update: ^4.0.0 p-map: ^4.0.0 - rxjs: ^6.6.7 + rfdc: ^1.3.0 + rxjs: ^7.5.1 through: ^2.3.8 wrap-ansi: ^7.0.0 peerDependencies: enquirer: ">= 2.3.0 < 3" - checksum: 92d72b9b6ae835893618c9a46015d538b8d39602208bd9dc0ddc2d73f3cb24175b5367c6af50a7a8ac6cdf2c1a0d4b398455dc4c4fce29954cb5267343a1d974 + peerDependenciesMeta: + enquirer: + optional: true + checksum: fdb8b2d6bdf5df9371ebd5082bee46c6d0ca3d1e5f2b11fbb5a127839855d5f3da9d4968fce94f0a5ec67cac2459766abbb1faeef621065ebb1829b11ef9476d languageName: node linkType: hard @@ -41535,7 +35959,7 @@ __metadata: languageName: node linkType: hard -"listr@npm:^0.14.1, listr@npm:^0.14.3": +"listr@npm:^0.14.1": version: 0.14.3 resolution: "listr@npm:0.14.3" dependencies: @@ -41552,33 +35976,34 @@ __metadata: languageName: node linkType: hard -"lit-element@npm:^3.2.0": - version: 3.2.0 - resolution: "lit-element@npm:3.2.0" +"lit-element@npm:^3.3.0": + version: 3.3.3 + resolution: "lit-element@npm:3.3.3" dependencies: + "@lit-labs/ssr-dom-shim": ^1.1.0 "@lit/reactive-element": ^1.3.0 - lit-html: ^2.2.0 - checksum: 64bd0f05f7a93921a5853e92f4b86b75affc088805f5ce0249c62a02a1d44445dea5c8319badc4cae6e5663afeb60296e3e0f63fd3af265b89fa482c8a846c3d + lit-html: ^2.8.0 + checksum: 29a596fa556e231cce7246ca3e5687ad238f299b0cb374a0934d5e6fe9adf1436e031d4fbd21b280aabfc0e21a66e6c4b52da558a908df2566d09d960f3ca93d languageName: node linkType: hard -"lit-html@npm:^2.2.0": - version: 2.2.6 - resolution: "lit-html@npm:2.2.6" +"lit-html@npm:^2.8.0": + version: 2.8.0 + resolution: "lit-html@npm:2.8.0" dependencies: "@types/trusted-types": ^2.0.2 - checksum: be0dacad92f21d1b3702616beecd73cf2dc0f73fed0c5985841a374615d2a185c62960438555620a0cfd089d99bfa2c350d8054b8d8790b2b3173c8dc93993bc + checksum: 2d70df07248bcb2f502a3afb1e91d260735024fa669669ffb1417575aa39c3092779725ac1b90f5f39e4ce78c63f431f51176bc67f532389f0285a6991573255 languageName: node linkType: hard "lit@npm:^2.1.3": - version: 2.2.6 - resolution: "lit@npm:2.2.6" + version: 2.8.0 + resolution: "lit@npm:2.8.0" dependencies: - "@lit/reactive-element": ^1.3.0 - lit-element: ^3.2.0 - lit-html: ^2.2.0 - checksum: 4a899cb669d8a7f97e8d3152ef73dede8dae5807a2cbdaeb89f912ca8c4dd5393fee03e06903d2aa8222843822e03c665617227ee2770dcd0c348e036128eb58 + "@lit/reactive-element": ^1.6.0 + lit-element: ^3.3.0 + lit-html: ^2.8.0 + checksum: 2480e733f7d022d3ecba91abc58a20968f0ca8f5fa30b3341ecf4bcf4845e674ad27b721a5ae53529cafc6ca603c015b80d0979ceb7a711e268ef20bb6bc7527 languageName: node linkType: hard @@ -41614,29 +36039,7 @@ __metadata: languageName: node linkType: hard -"loader-utils@npm:^1.1.0": - version: 1.4.0 - resolution: "loader-utils@npm:1.4.0" - dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^1.0.1 - checksum: d150b15e7a42ac47d935c8b484b79e44ff6ab4c75df7cc4cb9093350cf014ec0b17bdb60c5d6f91a37b8b218bd63b973e263c65944f58ca2573e402b9a27e717 - languageName: node - linkType: hard - -"loader-utils@npm:^2.0.0": - version: 2.0.2 - resolution: "loader-utils@npm:2.0.2" - dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^2.1.2 - checksum: 9078d1ed47cadc57f4c6ddbdb2add324ee7da544cea41de3b7f1128e8108fcd41cd3443a85b7ee8d7d8ac439148aa221922774efe4cf87506d4fb054d5889303 - languageName: node - linkType: hard - -"loader-utils@npm:^2.0.3, loader-utils@npm:^2.0.4": +"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.3, loader-utils@npm:^2.0.4": version: 2.0.4 resolution: "loader-utils@npm:2.0.4" dependencies: @@ -41675,6 +36078,15 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: ^6.0.0 + checksum: c1b653bdf29beaecb3d307dfb7c44d98a2a98a02ebe353c9ad055d1ac45d6ed4e1142563d222df9b9efebc2bcb7d4c792b507fad9e7150a04c29530b7db570f8 + languageName: node + linkType: hard + "lodash-es@npm:^4.17.15, lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" @@ -41871,6 +36283,13 @@ __metadata: languageName: node linkType: hard +"lodash.startcase@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.startcase@npm:4.4.0" + checksum: c03a4a784aca653845fe09d0ef67c902b6e49288dc45f542a4ab345a9c406a6dc194c774423fa313ee7b06283950301c1221dd2a1d8ecb2dac8dfbb9ed5606b5 + languageName: node + linkType: hard + "lodash.throttle@npm:^4.1.1": version: 4.1.1 resolution: "lodash.throttle@npm:4.1.1" @@ -41899,15 +36318,6 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:4.0.0": - version: 4.0.0 - resolution: "log-symbols@npm:4.0.0" - dependencies: - chalk: ^4.0.0 - checksum: a7c1fb5cc504ff04422460dcae3a830002426432fbed81280c8a49f4c6f5ef244c28b987636bf1c871ba6866d7024713388be391e92c0d5af6a70598fcabc46b - languageName: node - linkType: hard - "log-symbols@npm:^1.0.2": version: 1.0.2 resolution: "log-symbols@npm:1.0.2" @@ -41959,20 +36369,7 @@ __metadata: languageName: node linkType: hard -"logform@npm:^2.3.2, logform@npm:^2.4.0": - version: 2.4.0 - resolution: "logform@npm:2.4.0" - dependencies: - "@colors/colors": 1.5.0 - fecha: ^4.2.0 - ms: ^2.1.1 - safe-stable-stringify: ^2.3.1 - triple-beam: ^1.3.0 - checksum: e75ccccc1a2664612ade3c7f3d3185787198b4028e54ea2795df87901f28b3881eddd8d7e73ce03f4420dca638a1cbe6d42254179685ab2075e4ac38a71ffb6c - languageName: node - linkType: hard - -"logform@npm:^2.6.0, logform@npm:^2.6.1": +"logform@npm:^2.3.2, logform@npm:^2.4.0, logform@npm:^2.6.0, logform@npm:^2.6.1": version: 2.6.1 resolution: "logform@npm:2.6.1" dependencies: @@ -41999,17 +36396,10 @@ __metadata: languageName: node linkType: hard -"loglevel@npm:^1.6.1": - version: 1.7.1 - resolution: "loglevel@npm:1.7.1" - checksum: 715a4ae69ad75d4d3bd04e4f6e9edbc4cae4db34d1e7f54f426d8cebe2dd9fef891ca3789e839d927cdbc5fad73d789e998db0af2f11f4c40219c272bc923823 - languageName: node - linkType: hard - -"loglevel@npm:^1.6.8": - version: 1.8.0 - resolution: "loglevel@npm:1.8.0" - checksum: 41aeea17de24aba8dba68084a31fe9189648bce4f39c1277e021bb276c3c53a75b0d337395919cf271068ad40ecefabad0e4fdeb4a8f11908beee532b898f4a7 +"loglevel@npm:^1.6.1, loglevel@npm:^1.6.8": + version: 1.9.2 + resolution: "loglevel@npm:1.9.2" + checksum: 896c67b90a507bfcfc1e9a4daa7bf789a441dd70d95cd13b998d6dd46233a3bfadfb8fadb07250432bbfb53bf61e95f2520f9b11f9d3175cc460e5c251eca0af languageName: node linkType: hard @@ -42021,9 +36411,9 @@ __metadata: linkType: hard "long@npm:^5.0.0": - version: 5.2.1 - resolution: "long@npm:5.2.1" - checksum: 9264da12d1b7df67e5aa6da4498144293caf1ad12e7f092efe4e9a2d32c53f0bbf7334f7cef997080a2a3af061142558ab366efa71698d98b1cdb883477445a7 + version: 5.2.3 + resolution: "long@npm:5.2.3" + checksum: 885ede7c3de4facccbd2cacc6168bae3a02c3e836159ea4252c87b6e34d40af819824b2d4edce330bfb5c4d6e8ce3ec5864bdcf9473fa1f53a4f8225860e5897 languageName: node linkType: hard @@ -42053,13 +36443,13 @@ __metadata: linkType: hard "lop@npm:^0.4.1": - version: 0.4.1 - resolution: "lop@npm:0.4.1" + version: 0.4.2 + resolution: "lop@npm:0.4.2" dependencies: duck: ^0.1.12 option: ~0.2.1 underscore: ^1.13.1 - checksum: 0586a2601a6cc709664b40e69266fb684136d9f4041a97d76413030846f0c03f36c6a262873efbcf6ab8e5a584449e24b18722b8a7e5d58e5326359f0be08439 + checksum: 4a21fa77b8f040d032805940ef10c025b1a8a62ce4b0cd87e10bc2ef9cf2f86dca7e62790c3d1ce0b23365c1fd9e9209b75df7581c2f6576b85a1d5559c906e6 languageName: node linkType: hard @@ -42115,20 +36505,26 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": - version: 10.2.2 - resolution: "lru-cache@npm:10.2.2" - checksum: 98e8fc93691c546f719a76103ef2bee5a3ac823955c755a47641ec41f8c7fafa1baeaba466937cc1cbfa9cfd47e03536d10e2db3158a64ad91ff3a58a32c893e +"lru-cache@npm:6.0.0, lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 languageName: node linkType: hard -"lru-cache@npm:^4.1.5": - version: 4.1.5 - resolution: "lru-cache@npm:4.1.5" - dependencies: - pseudomap: ^1.0.2 - yallist: ^2.1.2 - checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a +"lru-cache@npm:7.10.1 - 7.13.1": + version: 7.13.1 + resolution: "lru-cache@npm:7.13.1" + checksum: f53c7dd098a7afd6342b23f7182629edff206c7665de79445a7f5455440e768a4d1c6ec52e1a16175580c71535c9437dfb6f6bc22ca1a0e4a7454a97cde87329 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.2.2, lru-cache@npm:^10.4.3": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a languageName: node linkType: hard @@ -42141,60 +36537,27 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lru-cache@npm:^7.10.1, lru-cache@npm:^7.13.1, lru-cache@npm:^7.7.1": - version: 7.14.0 - resolution: "lru-cache@npm:7.14.0" - checksum: efdd329f2c1bb790b71d497c6c59272e6bc2d7dd060ba55fc136becd3dd31fc8346edb446275504d94cb60d3c8385dbf5267b79b23789e409b2bdf302d13f0d7 - languageName: node - linkType: hard - -"lru-cache@npm:^7.14.0, lru-cache@npm:^7.14.1": +"lru-cache@npm:^7.13.1, lru-cache@npm:^7.14.0, lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 languageName: node linkType: hard -"lru-cache@npm:^9.0.3, lru-cache@npm:^9.1.2": +"lru-cache@npm:^9.1.2": version: 9.1.2 resolution: "lru-cache@npm:9.1.2" checksum: d3415634be3908909081fc4c56371a8d562d9081eba70543d86871b978702fffd0e9e362b83921b27a29ae2b37b90f55675aad770a54ac83bb3e4de5049d4b15 languageName: node linkType: hard -"lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 - languageName: node - linkType: hard - -"lru-cache@npm:~4.0.0": - version: 4.0.2 - resolution: "lru-cache@npm:4.0.2" - dependencies: - pseudomap: ^1.0.1 - yallist: ^2.0.0 - checksum: 1f615ef23f3316c0935533df2a14f66050502ffd0841726ea3dbaceac09a1bb80cd0c1f8799a881c4d13fe2cdebbd7919668a54eae4ec97caf66141e56b5c3bb - languageName: node - linkType: hard - -"lru-memoizer@npm:^2.1.4": - version: 2.1.4 - resolution: "lru-memoizer@npm:2.1.4" +"lru-memoizer@npm:^2.1.4, lru-memoizer@npm:^2.2.0": + version: 2.3.0 + resolution: "lru-memoizer@npm:2.3.0" dependencies: lodash.clonedeep: ^4.5.0 - lru-cache: ~4.0.0 - checksum: 8dd076e39afeb2e079287758344ba87cde278f630447e823650320e41a9e3dd8bd91ed375fa7585af95c4ae0473ba18e2fe6f12cbde7f69fc109f2ddd60423b3 + lru-cache: 6.0.0 + checksum: 3468a655b89295ddc0f069a5ebd574ff8565476efc49dfd2b666ed7bd5c6f090e6e3e35cc84714194cc154d5331007d6bbfd50b480ed3ea07303820f81ef7389 languageName: node linkType: hard @@ -42215,18 +36578,9 @@ __metadata: linkType: hard "luxon@npm:^3.2.1": - version: 3.3.0 - resolution: "luxon@npm:3.3.0" - checksum: 50cf17a0dc155c3dcacbeae8c0b7e80db425e0ba97b9cbdf12a7fc142d841ff1ab1560919f033af46240ed44e2f70c49f76e3422524c7fc8bb8d81ca47c66187 - languageName: node - linkType: hard - -"lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" - bin: - lz-string: bin/bin.js - checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 + version: 3.5.0 + resolution: "luxon@npm:3.5.0" + checksum: f290fe5788c8e51e748744f05092160d4be12150dca70f9fadc0d233e53d60ce86acd82e7d909a114730a136a77e56f0d3ebac6141bbb82fd310969a4704825b languageName: node linkType: hard @@ -42239,15 +36593,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.25.1": - version: 0.25.1 - resolution: "magic-string@npm:0.25.1" - dependencies: - sourcemap-codec: ^1.4.1 - checksum: a8048393171a2dcb5374383ca94635393172bea047da9dfbcdf00409b5dac002a22a04f44e7ca6d14d0b8841672c44baaf5a4ba2634741cfca136bf47a1be3c3 - languageName: node - linkType: hard - "magic-string@npm:0.30.0": version: 0.30.0 resolution: "magic-string@npm:0.30.0" @@ -42257,21 +36602,12 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.25.7": - version: 0.25.7 - resolution: "magic-string@npm:0.25.7" - dependencies: - sourcemap-codec: ^1.4.4 - checksum: 727a1fb70f9610304fe384f1df0251eb7d1d9dd779c07ef1225690361b71b216f26f5d934bfb11c919b5b0e7ba50f6240c823a6f2e44cfd33d4a07d7747ca829 - languageName: node - linkType: hard - -"magic-string@npm:^0.30.5": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" +"magic-string@npm:^0.30.11, magic-string@npm:^0.30.5": + version: 0.30.12 + resolution: "magic-string@npm:0.30.12" dependencies: "@jridgewell/sourcemap-codec": ^1.5.0 - checksum: e041649453c9a3f31d2e731fc10e38604d50e20d3585cd48bc7713a6e2e1a3ad3012105929ca15750d59d0a3f1904405e4b95a23b7e69dc256db3c277a73a3ca + checksum: 3f0d23b74371765f0e6cad4284eebba0ac029c7a55e39292de5aa92281afb827138cb2323d24d2924f6b31f138c3783596c5ccaa98653fe9cf122e1f81325b59 languageName: node linkType: hard @@ -42304,9 +36640,9 @@ __metadata: linkType: hard "make-cancellable-promise@npm:^1.3.1": - version: 1.3.1 - resolution: "make-cancellable-promise@npm:1.3.1" - checksum: f7ca52cdf6f22381600406c05a332e776bf9b71085d17e62a5f9860351de4fc696a9ed03e7bfdd36d3058c0307d33e97166bc210f5e8c842921a92986158361d + version: 1.3.2 + resolution: "make-cancellable-promise@npm:1.3.2" + checksum: d4dcad8211272a4d6ef979747a3d7085cdefb92cf50e096ab6a3ea8295e7578b82edaac261c7c4e3d656eadfac285f05b98856b3cf1fd14390ec2708328a9b35 languageName: node linkType: hard @@ -42320,7 +36656,7 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": +"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -42329,6 +36665,15 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: ^7.5.3 + checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + languageName: node + linkType: hard + "make-error@npm:1.x, make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" @@ -42337,9 +36682,9 @@ __metadata: linkType: hard "make-event-props@npm:^1.6.0": - version: 1.6.1 - resolution: "make-event-props@npm:1.6.1" - checksum: 0457abdaf0c5edea1a284ec58ca5afed0e3de96efd3754dca02fbe767b6d17607eb28862802bc769656e06bb6374cd0b568e960d23996798dc872d09de537f71 + version: 1.6.2 + resolution: "make-event-props@npm:1.6.2" + checksum: ded823d8b73926d94513416c75585be2cea9d9408b085eed31c20a1005147661a50852f869e1779990ddd04c8e07e1f24c766453cc9b4870bcef8d79c533a5fc languageName: node linkType: hard @@ -42367,6 +36712,26 @@ __metadata: languageName: node linkType: hard +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": ^2.0.0 + cacache: ^18.0.0 + http-cache-semantics: ^4.1.1 + is-lambda: ^1.0.1 + minipass: ^7.0.2 + minipass-fetch: ^3.0.0 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + proc-log: ^4.2.0 + promise-retry: ^2.0.1 + ssri: ^10.0.0 + checksum: 5c9fad695579b79488fa100da05777213dd9365222f85e4757630f8dd2a21a79ddd3206c78cfd6f9b37346819681782b67900ac847a57cf04190f52dda5343fd + languageName: node + linkType: hard + "make-fetch-happen@npm:^9.1.0": version: 9.1.0 resolution: "make-fetch-happen@npm:9.1.0" @@ -42400,15 +36765,6 @@ __metadata: languageName: node linkType: hard -"makeerror@npm:1.0.x": - version: 1.0.11 - resolution: "makeerror@npm:1.0.11" - dependencies: - tmpl: 1.0.x - checksum: 9a62ec2d9648c5329fdc4bc7d779a7305f32b1e55422a4f14244bc890bb43287fe013eb8d965e92a0cf4c443f3e59265b1fc3125eaedb0c2361e28b1a8de565d - languageName: node - linkType: hard - "mammoth@npm:^1.8.0": version: 1.8.0 resolution: "mammoth@npm:1.8.0" @@ -42457,28 +36813,29 @@ __metadata: languageName: node linkType: hard -"markdown-it-anchor@npm:^8.4.1": - version: 8.6.6 - resolution: "markdown-it-anchor@npm:8.6.6" +"markdown-it-anchor@npm:^8.6.7": + version: 8.6.7 + resolution: "markdown-it-anchor@npm:8.6.7" peerDependencies: "@types/markdown-it": "*" markdown-it: "*" - checksum: d67044f132cd94728227e065b2a82063a05ac5fb82a991c190fe48ac5ab308ed85f49a28e859bcf203e882af814902e67dd69724f6761c61709834b075cc6f95 + checksum: 828236768ac7f61ed5591393c1b1bfc5dbf2b6d0c58a3deec606c61dddaa12658a34450cbef37ab50a04453e618ce1efd47d86e4e52595024334898fd306225b languageName: node linkType: hard -"markdown-it@npm:^12.3.2": - version: 12.3.2 - resolution: "markdown-it@npm:12.3.2" +"markdown-it@npm:^14.1.0": + version: 14.1.0 + resolution: "markdown-it@npm:14.1.0" dependencies: argparse: ^2.0.1 - entities: ~2.1.0 - linkify-it: ^3.0.1 - mdurl: ^1.0.1 - uc.micro: ^1.0.5 + entities: ^4.4.0 + linkify-it: ^5.0.0 + mdurl: ^2.0.0 + punycode.js: ^2.3.1 + uc.micro: ^2.1.0 bin: - markdown-it: bin/markdown-it.js - checksum: 890555711c1c00fa03b936ca2b213001a3b9b37dea140d8445ae4130ce16628392aad24b12e2a0a9935336ca5951f2957a38f4e5309a2e38eab44e25ff32a41e + markdown-it: bin/markdown-it.mjs + checksum: 07296b45ebd0b13a55611a24d1b1ad002c6729ec54f558f597846994b0b7b1de79d13cd99ff3e7b6e9e027f36b63125cdcf69174da294ecabdd4e6b9fff39e5d languageName: node linkType: hard @@ -42492,9 +36849,9 @@ __metadata: linkType: hard "markdown-table@npm:^3.0.0": - version: 3.0.3 - resolution: "markdown-table@npm:3.0.3" - checksum: 8fcd3d9018311120fbb97115987f8b1665a603f3134c93fbecc5d1463380c8036f789e2a62c19432058829e594fff8db9ff81c88f83690b2f8ed6c074f8d9e10 + version: 3.0.4 + resolution: "markdown-table@npm:3.0.4" + checksum: bc24b177cbb3ef170cb38c9f191476aa63f7236ebc8980317c5e91b5bf98c8fb471cf46d8920478c5e770d7f4337326f6b5b3efbf0687c2044fd332d7a64dfcb languageName: node linkType: hard @@ -42508,11 +36865,11 @@ __metadata: linkType: hard "markdown-to-jsx@npm:^7.1.8": - version: 7.2.1 - resolution: "markdown-to-jsx@npm:7.2.1" + version: 7.5.0 + resolution: "markdown-to-jsx@npm:7.5.0" peerDependencies: react: ">= 0.14.0" - checksum: 0c8c715229044401ea48c2fc26c2554464100074959dafacdd9e4a0e849f0a190b02f39edb373bbdd95e38b8f910074b83b63d08752b8ae6be6ddcfb40ea50a0 + checksum: c9c6f1bfad5f2d9b1d3476eb0313ae3dffd0a9f14011c74efdd7c664fd32ee1842ef48abb16a496046f90361af49aa80a827e9d9c0bc04824a1986fdeb4d1852 languageName: node linkType: hard @@ -42893,10 +37250,10 @@ __metadata: languageName: node linkType: hard -"mdurl@npm:^1.0.1": - version: 1.0.1 - resolution: "mdurl@npm:1.0.1" - checksum: 71731ecba943926bfbf9f9b51e28b5945f9411c4eda80894221b47cc105afa43ba2da820732b436f0798fd3edbbffcd1fc1415843c41a87fea08a41cc1e3d02b +"mdurl@npm:^2.0.0": + version: 2.0.0 + resolution: "mdurl@npm:2.0.0" + checksum: 880bc289ef668df0bb34c5b2b5aaa7b6ea755052108cdaf4a5e5968ad01cf27e74927334acc9ebcc50a8628b65272ae6b1fd51fae1330c130e261c0466e1a3b2 languageName: node linkType: hard @@ -42907,6 +37264,15 @@ __metadata: languageName: node linkType: hard +"media-query-parser@npm:^2.0.2": + version: 2.0.2 + resolution: "media-query-parser@npm:2.0.2" + dependencies: + "@babel/runtime": ^7.12.5 + checksum: 8ef956d9e63fe6f4041988beda69843b3a6bb48228ea2923a066f6e7c8f7c5dba75fae357318c48a97ed5beae840b8425cb7e727fc1bb77acc65f2005f8945ab + languageName: node + linkType: hard + "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -42924,9 +37290,9 @@ __metadata: linkType: hard "memoize-one@npm:^5.0.0": - version: 5.1.1 - resolution: "memoize-one@npm:5.1.1" - checksum: 51a8e96cd94614909e1656843ecb9307440fbfa64994be12978bb30bc190f8e66010cb7a35d3ee641a52302ce701dcea990b636ea2ef3c1cf94a50b4651f5446 + version: 5.2.1 + resolution: "memoize-one@npm:5.2.1" + checksum: a3cba7b824ebcf24cdfcd234aa7f86f3ad6394b8d9be4c96ff756dafb8b51c7f71320785fbc2304f1af48a0467cbbd2a409efc9333025700ed523f254cb52e3d languageName: node linkType: hard @@ -42937,7 +37303,7 @@ __metadata: languageName: node linkType: hard -"memoizee@npm:0.4.15, memoizee@npm:^0.4.15": +"memoizee@npm:0.4.15": version: 0.4.15 resolution: "memoizee@npm:0.4.15" dependencies: @@ -42953,6 +37319,22 @@ __metadata: languageName: node linkType: hard +"memoizee@npm:^0.4.15": + version: 0.4.17 + resolution: "memoizee@npm:0.4.17" + dependencies: + d: ^1.0.2 + es5-ext: ^0.10.64 + es6-weak-map: ^2.0.3 + event-emitter: ^0.3.5 + is-promise: ^2.2.2 + lru-queue: ^0.1.0 + next-tick: ^1.1.0 + timers-ext: ^0.1.7 + checksum: 9f2fa3f55d3b053ddfb7f2ce47ea3f51aa88d4425fa3aee0daf48bd41ecb8f1787b2150b14bcf745d8c4be8e2c07da614d857e11f79a6951420bbb0029b05a9c + languageName: node + linkType: hard + "memoizerific@npm:^1.11.3": version: 1.11.3 resolution: "memoizerific@npm:1.11.3" @@ -43008,6 +37390,13 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:1.0.3": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 52117adbe0313d5defa771c9993fe081e2d2df9b840597e966aadafde04ae8d0e3da46bac7ca4efc37d4d2b839436582659cd49c6a43eacb3fe3050896a105d1 + languageName: node + linkType: hard + "merge-refs@npm:^1.3.0": version: 1.3.0 resolution: "merge-refs@npm:1.3.0" @@ -43020,24 +37409,6 @@ __metadata: languageName: node linkType: hard -"merge-source-map@npm:1.0.4": - version: 1.0.4 - resolution: "merge-source-map@npm:1.0.4" - dependencies: - source-map: ^0.5.6 - checksum: 86a4e60d83980393e61f069c7ae33e7899c4c012c3cd2cf50e01482e7a284bbe9c8cd08d37adbf241fc9eacfa4425241432e7461cf6559f7e9902587889660de - languageName: node - linkType: hard - -"merge-source-map@npm:^1.1.0": - version: 1.1.0 - resolution: "merge-source-map@npm:1.1.0" - dependencies: - source-map: ^0.6.1 - checksum: 945a83dcc59eff77dde709be1d3d6cb575c11cd7164a7ccdc1c6f0d463aad7c12750a510bdf84af2c05fac4615c4305d97ac90477975348bb901a905c8e92c4b - languageName: node - linkType: hard - "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -43052,15 +37423,15 @@ __metadata: languageName: node linkType: hard -"meros@npm:^1.1.4": - version: 1.2.1 - resolution: "meros@npm:1.2.1" +"meros@npm:^1.2.1": + version: 1.3.0 + resolution: "meros@npm:1.3.0" peerDependencies: "@types/node": ">=13" peerDependenciesMeta: "@types/node": optional: true - checksum: 2201c3f7c58ad2a5b5f7d6b1c644d79bde513e25cb64b51a8c41381ec74bc02cd3423425e34f60c96bf3991f1ec51d65dc8b8e3354cbb060cc9f8226b4666a5a + checksum: ea86c83fe9357d3eb2f5bad20909e12642c7bc8c10340d9bd0968b48f69ec453de14f7e5032d138ad04cb10d79b8c9fb3c9601bb515e8fbdf9bec4eed62994ad languageName: node linkType: hard @@ -43071,66 +37442,73 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.80.9": - version: 0.80.9 - resolution: "metro-babel-transformer@npm:0.80.9" +"metro-babel-transformer@npm:0.80.12": + version: 0.80.12 + resolution: "metro-babel-transformer@npm:0.80.12" dependencies: "@babel/core": ^7.20.0 - hermes-parser: 0.20.1 + flow-enums-runtime: ^0.0.6 + hermes-parser: 0.23.1 nullthrows: ^1.1.1 - checksum: 0fd9b7f3c6807163a4537939ead7d4a033b6233ba489bbc84c843dc1de7b6cddd185fee0a1c1791d05334cd8efebf434cbff486a42506843739088f3bb3c6358 + checksum: 1ea8bce0c169f3d8bf46f56da126ca52f4c8ba5ca9ffeaca987c34d269b0a3e2a54d0544bd44bfa5d0322e37f0171a52d2a2160defcbcd91ec1fd96f62b0eece languageName: node linkType: hard -"metro-cache-key@npm:0.80.9": - version: 0.80.9 - resolution: "metro-cache-key@npm:0.80.9" - checksum: 9c8547dcf6207c45ac726bcb35be43405515940eff8f9bacec354895f50e5cf2787fbb4860be7b1e10856228fd6eb0bbf8bf7065fabbaf90aa3cf9755d32ffe2 +"metro-cache-key@npm:0.80.12": + version: 0.80.12 + resolution: "metro-cache-key@npm:0.80.12" + dependencies: + flow-enums-runtime: ^0.0.6 + checksum: 7a06601180604361339d19eb833d61b79cc188a4e6ebe73188cc10fbf3a33e711d74c81d1d19a14b6581bd9dfeebe1b253684360682d033ab55909c9995b6a18 languageName: node linkType: hard -"metro-cache@npm:0.80.9": - version: 0.80.9 - resolution: "metro-cache@npm:0.80.9" +"metro-cache@npm:0.80.12": + version: 0.80.12 + resolution: "metro-cache@npm:0.80.12" dependencies: - metro-core: 0.80.9 - rimraf: ^3.0.2 - checksum: 269d2f17cd82d5a4c7ea39227c3ae4e03982ca7f6dc4a84353bc99ee5b63a8fa42a485addbadea47c91ecbea836595033913ae3c7c309c0a1caae41d4e3799df + exponential-backoff: ^3.1.1 + flow-enums-runtime: ^0.0.6 + metro-core: 0.80.12 + checksum: 724e33fdda6a3568572c36a3f2d3465ad1b5f3e8ded5ec116b98e0038826187ebdadd05f77e91ddc17fa71ff4dd91281793a940e7b619cac36044ed868abc01d languageName: node linkType: hard -"metro-config@npm:0.80.9, metro-config@npm:^0.80.3": - version: 0.80.9 - resolution: "metro-config@npm:0.80.9" +"metro-config@npm:0.80.12, metro-config@npm:^0.80.3": + version: 0.80.12 + resolution: "metro-config@npm:0.80.12" dependencies: connect: ^3.6.5 cosmiconfig: ^5.0.5 + flow-enums-runtime: ^0.0.6 jest-validate: ^29.6.3 - metro: 0.80.9 - metro-cache: 0.80.9 - metro-core: 0.80.9 - metro-runtime: 0.80.9 - checksum: 9822a2de858f4ad2d714cb2f70e51552a660ae059a490e4e7728b7b061367f6c6dce90bc4b49144e152e6dbece922a401183570b289dd6f8d595d5fcf3dfa781 + metro: 0.80.12 + metro-cache: 0.80.12 + metro-core: 0.80.12 + metro-runtime: 0.80.12 + checksum: 49496d2bc875fbb8c89639979753377888f5ce779742a4ef487d812e7c5f3f6c87dd6ae129727f614d2fe3210f7fde08041055d29772b8c86c018e2ef08e7785 languageName: node linkType: hard -"metro-core@npm:0.80.9, metro-core@npm:^0.80.3": - version: 0.80.9 - resolution: "metro-core@npm:0.80.9" +"metro-core@npm:0.80.12, metro-core@npm:^0.80.3": + version: 0.80.12 + resolution: "metro-core@npm:0.80.12" dependencies: + flow-enums-runtime: ^0.0.6 lodash.throttle: ^4.1.1 - metro-resolver: 0.80.9 - checksum: c39c4660e974bda81dae43233f7857ffb60a429bf1b5426b4ea9a3d28ce7951543d56ec5a299a3abf87149a2e8b6faeef955344e351312d70ca6d9b910db2b28 + metro-resolver: 0.80.12 + checksum: 319f3965fa76fc08987cbd0228024bdbb0eaad7406e384e48929674188f1066cbc7a233053615ebd84b3ce1bbae28f59c114885fd0a0c179a580319ed69f717e languageName: node linkType: hard -"metro-file-map@npm:0.80.9": - version: 0.80.9 - resolution: "metro-file-map@npm:0.80.9" +"metro-file-map@npm:0.80.12": + version: 0.80.12 + resolution: "metro-file-map@npm:0.80.12" dependencies: anymatch: ^3.0.3 debug: ^2.2.0 fb-watchman: ^2.0.0 + flow-enums-runtime: ^0.0.6 fsevents: ^2.3.2 graceful-fs: ^4.2.4 invariant: ^2.2.4 @@ -43142,103 +37520,111 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: e233b25f34b01cb6e9ae6ab868f74d0a7013e52a8ad47619d6ebe2c00b3df228df87fcedb0b7e3d9a0de54ee93a725df1356ee705eb5cac80076703a2e4799e4 + checksum: 5e6eafcfafe55fd8a9a6e5613394a20ed2a0ad433a394dcb830f017b8fc9d82ddcd715391e36abe5e98c651c074b99a806d3b04d76f2cadb225f9f5b1c92daef languageName: node linkType: hard -"metro-minify-terser@npm:0.80.9": - version: 0.80.9 - resolution: "metro-minify-terser@npm:0.80.9" +"metro-minify-terser@npm:0.80.12": + version: 0.80.12 + resolution: "metro-minify-terser@npm:0.80.12" dependencies: + flow-enums-runtime: ^0.0.6 terser: ^5.15.0 - checksum: 8aaea147f45332920eb5f70514ee25f65a9e091351ced0ca72ffa6c82c3478d68f962472a4e92d96cb64712bb81f69a072495e9fb7e78173b502d7c32a2a44fc + checksum: ff527b3f04c5814db139e55ceb7689aaaf0af5c7fbb0eb5d4a6f22044932dfb10bd385d388fa7b352acd03a2d078edaf43a6b5cd11cbc87a7c5502a34fc12735 languageName: node linkType: hard -"metro-resolver@npm:0.80.9": - version: 0.80.9 - resolution: "metro-resolver@npm:0.80.9" - checksum: a24f6b8ecc5edf38886080e714eddb4c1cd93345e8052997a194210b42b3c453353a95652e33770a294805cb5fae67620bfcb8432ba866b60479bebb34a6958a +"metro-resolver@npm:0.80.12": + version: 0.80.12 + resolution: "metro-resolver@npm:0.80.12" + dependencies: + flow-enums-runtime: ^0.0.6 + checksum: a520030a65afab2f3282604ef6dec802051899a356910606b8ffbc5b82a722008d9d416c8ba3d9ef9527912206586b713733b776803a6b76adac72bcb31870cd languageName: node linkType: hard -"metro-runtime@npm:0.80.9, metro-runtime@npm:^0.80.3": - version: 0.80.9 - resolution: "metro-runtime@npm:0.80.9" +"metro-runtime@npm:0.80.12, metro-runtime@npm:^0.80.3": + version: 0.80.12 + resolution: "metro-runtime@npm:0.80.12" dependencies: - "@babel/runtime": ^7.0.0 - checksum: 2d087ebc82de0796741cd77bc4af0c20117eb0dc4fc91dfad3be44eb3389bbf6caef7b1605b7907e59ef0c5532617e0b2fb6c5b64df24d03c14748173427b1d4 + "@babel/runtime": ^7.25.0 + flow-enums-runtime: ^0.0.6 + checksum: 11a6d36c7dcf9d221f7de6989556f45d4d64cd1cdd225ec96273b584138b4aa77b7afdc9e9a9488d1dc9a3d90f8e94bb68ab149079cc6ebdb8f8f8b03462cb4f languageName: node linkType: hard -"metro-source-map@npm:0.80.9, metro-source-map@npm:^0.80.3": - version: 0.80.9 - resolution: "metro-source-map@npm:0.80.9" +"metro-source-map@npm:0.80.12, metro-source-map@npm:^0.80.3": + version: 0.80.12 + resolution: "metro-source-map@npm:0.80.12" dependencies: "@babel/traverse": ^7.20.0 "@babel/types": ^7.20.0 + flow-enums-runtime: ^0.0.6 invariant: ^2.2.4 - metro-symbolicate: 0.80.9 + metro-symbolicate: 0.80.12 nullthrows: ^1.1.1 - ob1: 0.80.9 + ob1: 0.80.12 source-map: ^0.5.6 vlq: ^1.0.0 - checksum: d6423cbe4c861eead953e24bb97d774772afa6f10c75c473d4d35965300a38259ad769b54a62b6d4a73ecaaef8ad2806455bf1fc2e89d8d7839915b30a6344d6 + checksum: 39575bff8666abd0944ec71e01a0c0eacbeab48277528608e894ffa6691c4267c389ee51ad86d5cd8e96f13782b66e1f693a3c60786bb201268678232dce6130 languageName: node linkType: hard -"metro-symbolicate@npm:0.80.9": - version: 0.80.9 - resolution: "metro-symbolicate@npm:0.80.9" +"metro-symbolicate@npm:0.80.12": + version: 0.80.12 + resolution: "metro-symbolicate@npm:0.80.12" dependencies: + flow-enums-runtime: ^0.0.6 invariant: ^2.2.4 - metro-source-map: 0.80.9 + metro-source-map: 0.80.12 nullthrows: ^1.1.1 source-map: ^0.5.6 through2: ^2.0.1 vlq: ^1.0.0 bin: metro-symbolicate: src/index.js - checksum: 070c4a48632e6137e8715c234f31e9c36b8e6c0a7b8e560168c042af00c7764cd5ba0a431ea7071f193d42d73cace0a500fd4b181a296f15e49866b221288d83 + checksum: b775e4613deec421f6287918d0055c50bb2a38fe3f72581eb70b9441e4497c9c7413c2929c579b24fb76893737b6d5af83a5f6cd8c032e2a83957091f82ec5de languageName: node linkType: hard -"metro-transform-plugins@npm:0.80.9": - version: 0.80.9 - resolution: "metro-transform-plugins@npm:0.80.9" +"metro-transform-plugins@npm:0.80.12": + version: 0.80.12 + resolution: "metro-transform-plugins@npm:0.80.12" dependencies: "@babel/core": ^7.20.0 "@babel/generator": ^7.20.0 "@babel/template": ^7.0.0 "@babel/traverse": ^7.20.0 + flow-enums-runtime: ^0.0.6 nullthrows: ^1.1.1 - checksum: 3179138b38385bfd20553237a8e3d5243b26c2b3cab3742217b1dd81a69a5dfffdd71d5017d1a26b6f8282e73680879c47c143ed8fa3f71d6dabddfd3b154f8b + checksum: 85c99c367d6c0b9721af744fc980372329c6d37711177660e2d5e2dbe5e92e2cd853604eb8a513ad824eafbed84663472fa304cbbe2036957ee8688b72c2324c languageName: node linkType: hard -"metro-transform-worker@npm:0.80.9": - version: 0.80.9 - resolution: "metro-transform-worker@npm:0.80.9" +"metro-transform-worker@npm:0.80.12": + version: 0.80.12 + resolution: "metro-transform-worker@npm:0.80.12" dependencies: "@babel/core": ^7.20.0 "@babel/generator": ^7.20.0 "@babel/parser": ^7.20.0 "@babel/types": ^7.20.0 - metro: 0.80.9 - metro-babel-transformer: 0.80.9 - metro-cache: 0.80.9 - metro-cache-key: 0.80.9 - metro-minify-terser: 0.80.9 - metro-source-map: 0.80.9 - metro-transform-plugins: 0.80.9 + flow-enums-runtime: ^0.0.6 + metro: 0.80.12 + metro-babel-transformer: 0.80.12 + metro-cache: 0.80.12 + metro-cache-key: 0.80.12 + metro-minify-terser: 0.80.12 + metro-source-map: 0.80.12 + metro-transform-plugins: 0.80.12 nullthrows: ^1.1.1 - checksum: 77b108e5a150b88007631c0c7312fdafdf8525214df3f9a185f8023caef3a8f8d9c695ab75f4686ed4abfce6a0c5ea80ab117fafdc4a21de24413ef491f74acd + checksum: 90684b1f1163bfc84b11bfc01082a38de2a5dd9f7bcabc524bc84f1faff32222954f686a60bc0f464d3e46e86c4c01435111e2ed0e9767a5efbfaf205f55245e languageName: node linkType: hard -"metro@npm:0.80.9, metro@npm:^0.80.3": - version: 0.80.9 - resolution: "metro@npm:0.80.9" +"metro@npm:0.80.12, metro@npm:^0.80.3": + version: 0.80.12 + resolution: "metro@npm:0.80.12" dependencies: "@babel/code-frame": ^7.0.0 "@babel/core": ^7.20.0 @@ -43254,38 +37640,37 @@ __metadata: debug: ^2.2.0 denodeify: ^1.2.1 error-stack-parser: ^2.0.6 + flow-enums-runtime: ^0.0.6 graceful-fs: ^4.2.4 - hermes-parser: 0.20.1 + hermes-parser: 0.23.1 image-size: ^1.0.2 invariant: ^2.2.4 jest-worker: ^29.6.3 jsc-safe-url: ^0.2.2 lodash.throttle: ^4.1.1 - metro-babel-transformer: 0.80.9 - metro-cache: 0.80.9 - metro-cache-key: 0.80.9 - metro-config: 0.80.9 - metro-core: 0.80.9 - metro-file-map: 0.80.9 - metro-resolver: 0.80.9 - metro-runtime: 0.80.9 - metro-source-map: 0.80.9 - metro-symbolicate: 0.80.9 - metro-transform-plugins: 0.80.9 - metro-transform-worker: 0.80.9 + metro-babel-transformer: 0.80.12 + metro-cache: 0.80.12 + metro-cache-key: 0.80.12 + metro-config: 0.80.12 + metro-core: 0.80.12 + metro-file-map: 0.80.12 + metro-resolver: 0.80.12 + metro-runtime: 0.80.12 + metro-source-map: 0.80.12 + metro-symbolicate: 0.80.12 + metro-transform-plugins: 0.80.12 + metro-transform-worker: 0.80.12 mime-types: ^2.1.27 - node-fetch: ^2.2.0 nullthrows: ^1.1.1 - rimraf: ^3.0.2 serialize-error: ^2.1.0 source-map: ^0.5.6 strip-ansi: ^6.0.0 throat: ^5.0.0 - ws: ^7.5.1 + ws: ^7.5.10 yargs: ^17.6.2 bin: metro: src/cli.js - checksum: 085191ea2a1d599ff99a4e97d9387f22d41bc0225bc579e3a708b4a735339163706ba7807711629550d6a54039009615528f685f6669034b6e701fe73657aa7c + checksum: 8016f7448e6e0947bd38633c01c3daad47b5a29d4a7294ebe922fa3c505430f78861d85965ecfc6f41d9b209e2663cac0f23c99a80a3f941a19de564203fcdb8 languageName: node linkType: hard @@ -43685,13 +38070,13 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" dependencies: - braces: ^3.0.2 + braces: ^3.0.3 picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc + checksum: 79920eb634e6f400b464a954fcfa589c4e7c7143209488e44baf627f9affc8b1e306f41f4f0deedde97e69cb725920879462d3e750ab3bd3c1aed675bb3a8966 languageName: node linkType: hard @@ -43707,13 +38092,20 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": +"mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f languageName: node linkType: hard +"mime-db@npm:>= 1.43.0 < 2": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 3fd9380bdc0b085d0b56b580e4f89ca4fc3b823722310d795c248f0806b9a80afd5d8f4347f015ad943b9ecfa7cc0b71dffa0db96fa776d01a13474821a2c7fb + languageName: node + linkType: hard + "mime-types@npm:2.1.35, mime-types@npm:^2.0.8, mime-types@npm:^2.1.12, mime-types@npm:^2.1.25, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" @@ -43732,7 +38124,7 @@ __metadata: languageName: node linkType: hard -"mime@npm:2.6.0, mime@npm:^2.4.1": +"mime@npm:2.6.0, mime@npm:^2.0.3, mime@npm:^2.4.1, mime@npm:^2.4.4, mime@npm:^2.4.6": version: 2.6.0 resolution: "mime@npm:2.6.0" bin: @@ -43741,15 +38133,6 @@ __metadata: languageName: node linkType: hard -"mime@npm:^2.0.3, mime@npm:^2.4.4, mime@npm:^2.4.6": - version: 2.5.2 - resolution: "mime@npm:2.5.2" - bin: - mime: cli.js - checksum: dd3c93d433d41a09f6a1cfa969b653b769899f3bd573e7bfcea33bdc8b0cc4eba57daa2f95937369c2bd2b6d39d62389b11a4309fe40d1d3a1b736afdedad0ff - languageName: node - linkType: hard - "mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" @@ -43833,34 +38216,43 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:2 || 3, minimatch@npm:^3.0.0, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" +"minimatch@npm:3.0.4": + version: 3.0.4 + resolution: "minimatch@npm:3.0.4" dependencies: brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 languageName: node linkType: hard -"minimatch@npm:3.0.4, minimatch@npm:~3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" +"minimatch@npm:3.0.5": + version: 3.0.5 + resolution: "minimatch@npm:3.0.5" dependencies: brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 + checksum: a3b84b426eafca947741b864502cee02860c4e7b145de11ad98775cfcf3066fef422583bc0ffce0952ddf4750c1ccf4220b1556430d4ce10139f66247d87d69e languageName: node linkType: hard -"minimatch@npm:4.2.1": - version: 4.2.1 - resolution: "minimatch@npm:4.2.1" +"minimatch@npm:4.2.3": + version: 4.2.3 + resolution: "minimatch@npm:4.2.3" dependencies: brace-expansion: ^1.1.7 - checksum: 2b1514e3d0f29a549912f0db7ae7b82c5cab4a8f2dd0369f1c6451a325b3f12b2cf473c95873b6157bb8df183d6cf6db82ff03614b6adaaf1d7e055beccdfd01 + checksum: 3392388e3ef7de7ae9a3a48d48a27a323934452f4af81b925dfbe85ce2dc07da855e3dbcc69229888be4e5118f6c0b79847d30f3e7c0e0017b25e423c11c0409 languageName: node linkType: hard -"minimatch@npm:9.0.3, minimatch@npm:^9.0.1": +"minimatch@npm:9.0.1": + version: 9.0.1 + resolution: "minimatch@npm:9.0.1" + dependencies: + brace-expansion: ^2.0.1 + checksum: 97f5f5284bb57dc65b9415dec7f17a0f6531a33572193991c60ff18450dcfad5c2dad24ffeaf60b5261dccd63aae58cc3306e2209d57e7f88c51295a532d8ec3 + languageName: node + linkType: hard + +"minimatch@npm:9.0.3": version: 9.0.3 resolution: "minimatch@npm:9.0.3" dependencies: @@ -43869,12 +38261,21 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^3.0.0, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + languageName: node + linkType: hard + "minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": - version: 5.1.0 - resolution: "minimatch@npm:5.1.0" + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" dependencies: brace-expansion: ^2.0.1 - checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90 + checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 languageName: node linkType: hard @@ -43887,16 +38288,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.4": - version: 9.0.4 - resolution: "minimatch@npm:9.0.4" - dependencies: - brace-expansion: ^2.0.1 - checksum: cf717f597ec3eed7dabc33153482a2e8d49f4fd3c26e58fd9c71a94c5029a0838728841b93f46bf1263b65a8010e2ee800d0dc9b004ab8ba8b6d1ec07cc115b5 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.5": +"minimatch@npm:^9.0.1, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -43905,14 +38297,16 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.3, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": - version: 1.2.6 - resolution: "minimist@npm:1.2.6" - checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb +"minimatch@npm:~3.0.4": + version: 3.0.8 + resolution: "minimatch@npm:3.0.8" + dependencies: + brace-expansion: ^1.1.7 + checksum: 850cca179cad715133132693e6963b0db64ab0988c4d211415b087fc23a3e46321e2c5376a01bf5623d8782aba8bdf43c571e2e902e51fdce7175c7215c29f8b languageName: node linkType: hard -"minimist@npm:^1.2.8": +"minimist@npm:^1.1.3, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -43938,8 +38332,8 @@ __metadata: linkType: hard "minipass-fetch@npm:^1.3.2": - version: 1.3.3 - resolution: "minipass-fetch@npm:1.3.3" + version: 1.4.1 + resolution: "minipass-fetch@npm:1.4.1" dependencies: encoding: ^0.1.12 minipass: ^3.1.0 @@ -43948,7 +38342,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: bd3d825b6b08b9c208b60f5022b12e3be78d01c2fd81bcbe8476e59c5ba2c6133d34c65961c88e1a17042242d99aa6a26a30a3139ccd4c07e536c6952ae72cb9 + checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 languageName: node linkType: hard @@ -43967,6 +38361,21 @@ __metadata: languageName: node linkType: hard +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" + dependencies: + encoding: ^0.1.13 + minipass: ^7.0.3 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: 8047d273236157aab27ab7cd8eab7ea79e6ecd63e8f80c3366ec076cb9a0fed550a6935bab51764369027c414647fd8256c2a20c5445fb250c483de43350de83 + languageName: node + linkType: hard + "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" @@ -43994,21 +38403,12 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": - version: 3.1.3 - resolution: "minipass@npm:3.1.3" - dependencies: - yallist: ^4.0.0 - checksum: 74b623c1f996caafa66772301b66a1b634b20270f0d1a731ef86195d5a1a5f9984a773a1e88a6cecfd264d6c471c4c0fc8574cd96488f01c8f74c0b600021e55 - languageName: node - linkType: hard - -"minipass@npm:^3.1.6": - version: 3.3.5 - resolution: "minipass@npm:3.3.5" +"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" dependencies: yallist: ^4.0.0 - checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 languageName: node linkType: hard @@ -44019,14 +38419,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": - version: 7.0.3 - resolution: "minipass@npm:7.0.3" - checksum: 6f1614f5b5b55568a46bca5fec0e7c46dac027691db27d0e1923a8192866903144cd962ac772c0e9f89b608ea818b702709c042bce98e190d258847d85461531 - languageName: node - linkType: hard - -"minipass@npm:^7.0.3, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 @@ -44083,7 +38476,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": +"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.6": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: @@ -44103,6 +38496,27 @@ __metadata: languageName: node linkType: hard +"mkdirp@npm:^2.0.0": + version: 2.1.6 + resolution: "mkdirp@npm:2.1.6" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 8a1d09ffac585e55f41c54f445051f5bc33a7de99b952bb04c576cafdf1a67bb4bae8cb93736f7da6838771fbf75bc630430a3a59e1252047d2278690bd150ee + languageName: node + linkType: hard + +"mlly@npm:^1.4.2, mlly@npm:^1.7.2": + version: 1.7.2 + resolution: "mlly@npm:1.7.2" + dependencies: + acorn: ^8.12.1 + pathe: ^1.1.2 + pkg-types: ^1.2.0 + ufo: ^1.5.4 + checksum: 66a92b0ac4f76cac22d2d6688338fece01f2ac4afd7816cd4224525c1f9032c452075730c54c3ef7558485455d704b7141060e517785c93b276b2faa3bb04199 + languageName: node + linkType: hard + "mobx-react-lite@npm:^3.4.0": version: 3.4.3 resolution: "mobx-react-lite@npm:3.4.3" @@ -44142,39 +38556,10 @@ __metadata: languageName: node linkType: hard -"mocha@npm:^8.2.0": - version: 8.3.2 - resolution: "mocha@npm:8.3.2" - dependencies: - "@ungap/promise-all-settled": 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.1 - debug: 4.3.1 - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.1.6 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.0.0 - log-symbols: 4.0.0 - minimatch: 3.0.4 - ms: 2.1.3 - nanoid: 3.1.20 - serialize-javascript: 5.0.1 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - wide-align: 1.1.3 - workerpool: 6.1.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - bin: - _mocha: bin/_mocha - mocha: bin/mocha - checksum: 4c071723f611cdc1a84d6db4ad2f73a9862af80939c050923d6f27270943117e5ff9dee137205f5ec591c9ccd0db9543b1719d5acf378c740d22359aeb165360 +"modern-ahocorasick@npm:^1.0.0": + version: 1.0.1 + resolution: "modern-ahocorasick@npm:1.0.1" + checksum: ec83479f406511f37a966d66ce1c2b1701bb4a2cc2aabbbc257001178c9fbc48ce748c88eb10dfe72ba8b7f991a0bc7f1fa14683f444685edd1a9eeb32ecbc1e languageName: node linkType: hard @@ -44186,22 +38571,15 @@ __metadata: linkType: hard "moment-timezone@npm:^0.5.43": - version: 0.5.45 - resolution: "moment-timezone@npm:0.5.45" + version: 0.5.46 + resolution: "moment-timezone@npm:0.5.46" dependencies: moment: ^2.29.4 - checksum: a22e9f983fbe1a01757ce30685bce92e3f6efa692eb682afd47b82da3ff960b3c8c2c3883ec6715c124bc985a342b57cba1f6ba25a1c8b4c7ad766db3cd5e1d0 - languageName: node - linkType: hard - -"moment@npm:^2.18.1, moment@npm:^2.20.0, moment@npm:^2.22.2": - version: 2.29.4 - resolution: "moment@npm:2.29.4" - checksum: 0ec3f9c2bcba38dc2451b1daed5daded747f17610b92427bebe1d08d48d8b7bdd8d9197500b072d14e326dd0ccf3e326b9e3d07c5895d3d49e39b6803b76e80e + checksum: 3974b467a98e5eb5dece66187d251aa0f97b087413c9a6a607b38ae6fa67032e12a107649dd857cfbcc31c194f004eb13ecc9fcd582b6a168a9a19355ec5a2e3 languageName: node linkType: hard -"moment@npm:^2.29.4": +"moment@npm:^2.20.0, moment@npm:^2.22.2, moment@npm:^2.29.4": version: 2.30.1 resolution: "moment@npm:2.30.1" checksum: 859236bab1e88c3e5802afcf797fc801acdbd0ee509d34ea3df6eea21eb6bcc2abd4ae4e4e64aa7c986aa6cba563c6e62806218e6412a765010712e5fa121ba6 @@ -44209,13 +38587,13 @@ __metadata: linkType: hard "moo@npm:^0.5.0, moo@npm:^0.5.1": - version: 0.5.1 - resolution: "moo@npm:0.5.1" - checksum: 2d8c013f1f9aad8e5c7a9d4a03dbb4eecd91b9fe5e9446fbc7561fd38d4d161c742434acff385722542fe7b360fce9c586da62442379e62e4158ad49c7e1a6b7 + version: 0.5.2 + resolution: "moo@npm:0.5.2" + checksum: 5a41ddf1059fd0feb674d917c4774e41c877f1ca980253be4d3aae1a37f4bc513f88815041243f36f5cf67a62fb39324f3f997cf7fb17b6cb00767c165e7c499 languageName: node linkType: hard -"mri@npm:^1.1.0, mri@npm:^1.2.0": +"mri@npm:^1.1.0": version: 1.2.0 resolution: "mri@npm:1.2.0" checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 @@ -44223,9 +38601,9 @@ __metadata: linkType: hard "mrmime@npm:^1.0.0": - version: 1.0.0 - resolution: "mrmime@npm:1.0.0" - checksum: 2c72a40942af7c53bc97d1e9e9c5cb0e6541d18f736811c3a1b46fa2a2b2362480d687daa8ae8372523acaacd82426a4f7ce34b0bf1825ea83b3983e8cb91afd + version: 1.0.1 + resolution: "mrmime@npm:1.0.1" + checksum: cc979da44bbbffebaa8eaf7a45117e851f2d4cb46a3ada6ceb78130466a04c15a0de9a9ce1c8b8ba6f6e1b8618866b1352992bf1757d241c0ddca558b9f28a77 languageName: node linkType: hard @@ -44243,14 +38621,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -44272,17 +38643,17 @@ __metadata: linkType: hard "msgpackr-extract@npm:^3.0.2": - version: 3.0.2 - resolution: "msgpackr-extract@npm:3.0.2" - dependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64": 3.0.2 - "@msgpackr-extract/msgpackr-extract-darwin-x64": 3.0.2 - "@msgpackr-extract/msgpackr-extract-linux-arm": 3.0.2 - "@msgpackr-extract/msgpackr-extract-linux-arm64": 3.0.2 - "@msgpackr-extract/msgpackr-extract-linux-x64": 3.0.2 - "@msgpackr-extract/msgpackr-extract-win32-x64": 3.0.2 + version: 3.0.3 + resolution: "msgpackr-extract@npm:3.0.3" + dependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64": 3.0.3 + "@msgpackr-extract/msgpackr-extract-darwin-x64": 3.0.3 + "@msgpackr-extract/msgpackr-extract-linux-arm": 3.0.3 + "@msgpackr-extract/msgpackr-extract-linux-arm64": 3.0.3 + "@msgpackr-extract/msgpackr-extract-linux-x64": 3.0.3 + "@msgpackr-extract/msgpackr-extract-win32-x64": 3.0.3 node-gyp: latest - node-gyp-build-optional-packages: 5.0.7 + node-gyp-build-optional-packages: 5.2.2 dependenciesMeta: "@msgpackr-extract/msgpackr-extract-darwin-arm64": optional: true @@ -44298,19 +38669,19 @@ __metadata: optional: true bin: download-msgpackr-prebuilds: bin/download-prebuilds.js - checksum: 5adb809b965bac41c310e60373d54c955fe78e4d134ab036d0f9ee5b322cec0a739878d395e17c1ac82d840705896b2dafae6a8cc04ad34c14d2de4b06b58330 + checksum: 3b5ae152821feff843380f0b091afbebd80bd224e644f4410abd33d05da3159eb8b0d45c7dcf7d5226ce1d5c71cd68052f066788f46ea7a3cd8791a1c740a079 languageName: node linkType: hard "msgpackr@npm:^1.5.2": - version: 1.10.1 - resolution: "msgpackr@npm:1.10.1" + version: 1.11.0 + resolution: "msgpackr@npm:1.11.0" dependencies: msgpackr-extract: ^3.0.2 dependenciesMeta: msgpackr-extract: optional: true - checksum: e422d18b01051598b23701eebeb4b9e2c686b9c7826b20f564724837ba2b5cd4af74c91a549eaeaf8186645cc95e8196274a4a19442aa3286ac611b98069c194 + checksum: 20a1941e1a281c10a1d43d04349ae7a79bef1cbd0644f1e5acef7f98f6a6e6cd83388ee82689799f9e65623591b11f849ef2f86c8eac83492449bee5a2b055b2 languageName: node linkType: hard @@ -44386,17 +38757,6 @@ __metadata: languageName: node linkType: hard -"mv@npm:~2": - version: 2.1.1 - resolution: "mv@npm:2.1.1" - dependencies: - mkdirp: ~0.5.1 - ncp: ~2.0.0 - rimraf: ~2.4.0 - checksum: 59d4b5ebff6c265b452d6630ae8873d573c82e36fdc1ed9c34c7901a0bf2d3d357022f49db8e9bded127b743f709c7ef7befec249a2b3967578d649a8029aa06 - languageName: node - linkType: hard - "mz@npm:^2.4.0, mz@npm:^2.6.0, mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -44408,53 +38768,35 @@ __metadata: languageName: node linkType: hard -"nan@npm:^2.14.1, nan@npm:^2.15.0": - version: 2.15.0 - resolution: "nan@npm:2.15.0" +"nan@npm:^2.16.0, nan@npm:^2.17.0, nan@npm:^2.19.0, nan@npm:^2.20.0": + version: 2.22.0 + resolution: "nan@npm:2.22.0" dependencies: node-gyp: latest - checksum: 33e1bb4dfca447fe37d4bb5889be55de154828632c8d38646db67293a21afd61ed9909cdf1b886214a64707d935926c4e60e2b09de9edfc2ad58de31d6ce8f39 - languageName: node - linkType: hard - -"nan@npm:^2.16.0, nan@npm:^2.17.0": - version: 2.18.0 - resolution: "nan@npm:2.18.0" - dependencies: - node-gyp: latest - checksum: 4fe42f58456504eab3105c04a5cffb72066b5f22bd45decf33523cb17e7d6abc33cca2a19829407b9000539c5cb25f410312d4dc5b30220167a3594896ea6a0a + checksum: 222e3a090e326c72f6782d948f44ee9b81cfb2161d5fe53216f04426a273fd094deee9dcc6813096dd2397689a2b10c1a92d3885d2e73fd2488a51547beb2929 languageName: node linkType: hard "nano-css@npm:^5.2.1": - version: 5.3.1 - resolution: "nano-css@npm:5.3.1" + version: 5.6.2 + resolution: "nano-css@npm:5.6.2" dependencies: + "@jridgewell/sourcemap-codec": ^1.4.15 css-tree: ^1.1.2 - csstype: ^3.0.6 + csstype: ^3.1.2 fastest-stable-stringify: ^2.0.2 - inline-style-prefixer: ^6.0.0 - rtl-css-js: ^1.14.0 - sourcemap-codec: ^1.4.8 + inline-style-prefixer: ^7.0.1 + rtl-css-js: ^1.16.1 stacktrace-js: ^2.0.2 - stylis: ^4.0.6 + stylis: ^4.3.0 peerDependencies: react: "*" react-dom: "*" - checksum: 45517871e8c15a00769bfc9eb5e466d9c193b0a7423050eb77eb21003a1ccfd13863f01bf68490be830de019f4a0ae945d5b91eb23c5898d341ac8968ba3f18b - languageName: node - linkType: hard - -"nanoid@npm:3.1.20": - version: 3.1.20 - resolution: "nanoid@npm:3.1.20" - bin: - nanoid: bin/nanoid.cjs - checksum: f6246023d5d8313c2c16be05c18cdb189a6de50ab6418b513b34086eda4aabd12866b2cbe435548c760dc43cf11830b26b14b113afde47305398e3345795e433 + checksum: 85d5e730798387bee3090e9943801489ec4269bd376a848b75515cf0f44dc7ce53d4a9fec575081a7dff53a8a5d4b00eebdc1bbf217d75fae7195819f917aba1 languageName: node linkType: hard -"nanoid@npm:^3.1.3, nanoid@npm:^3.3.7": +"nanoid@npm:^3.1.3, nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" bin: @@ -44463,24 +38805,6 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.1": - version: 3.3.3 - resolution: "nanoid@npm:3.3.3" - bin: - nanoid: bin/nanoid.cjs - checksum: ada019402a07464a694553c61d2dca8a4353645a7d92f2830f0d487fedff403678a0bee5323a46522752b2eab95a0bc3da98b6cccaa7c0c55cd9975130e6d6f0 - languageName: node - linkType: hard - -"nanoid@npm:^3.3.6": - version: 3.3.6 - resolution: "nanoid@npm:3.3.6" - bin: - nanoid: bin/nanoid.cjs - checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -44495,15 +38819,6 @@ __metadata: languageName: node linkType: hard -"ncp@npm:~2.0.0": - version: 2.0.0 - resolution: "ncp@npm:2.0.0" - bin: - ncp: ./bin/ncp - checksum: ea9b19221da1d1c5529bdb9f8e85c9d191d156bcaae408cce5e415b7fbfd8744c288e792bd7faf1fe3b70fd44c74e22f0d43c39b209bc7ac1fb8016f70793a16 - languageName: node - linkType: hard - "nearley@npm:^2.20.1": version: 2.20.1 resolution: "nearley@npm:2.20.1" @@ -44522,25 +38837,31 @@ __metadata: linkType: hard "needle@npm:^3.1.0": - version: 3.2.0 - resolution: "needle@npm:3.2.0" + version: 3.3.1 + resolution: "needle@npm:3.3.1" dependencies: - debug: ^3.2.6 iconv-lite: ^0.6.3 sax: ^1.2.4 bin: needle: bin/needle - checksum: d6f3e8668bbaf943d28ced0ad843eff793b56025e80152e511fd02313b8974e4dd9674bcbe3d8f9aa31882adb190dafe29ea5fce03a92b4724adf4850070bcfc + checksum: ed4864d7ee85f1037ac803154868bf7151fa59399c1e55e5d93ca26a9d16e1c8ccbe9552d846ce7e2519b4bce1de3e81a501f0dc33244e02902e27cf5a9bc11d languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 languageName: node linkType: hard +"negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 7ded10aa02a0707d1d12a9973fdb5954f98547ca7beb60e31cb3a403cc6e8f11138db7a3b0128425cf836fc85d145ec4ce983b2bdf83dca436af879c2d683510 + languageName: node + linkType: hard + "neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -44568,7 +38889,7 @@ __metadata: languageName: node linkType: hard -"netmask@npm:^2.0.1, netmask@npm:^2.0.2": +"netmask@npm:^2.0.2": version: 2.0.2 resolution: "netmask@npm:2.0.2" checksum: c65cb8d3f7ea5669edddb3217e4c96910a60d0d9a4b52d9847ff6b28b2d0277cd8464eee0ef85133cdee32605c57940cacdd04a9a019079b091b6bba4cb0ec22 @@ -44614,7 +38935,7 @@ __metadata: languageName: node linkType: hard -"next-tick@npm:1, next-tick@npm:^1.1.0": +"next-tick@npm:^1.1.0": version: 1.1.0 resolution: "next-tick@npm:1.1.0" checksum: 83b5cf36027a53ee6d8b7f9c0782f2ba87f4858d977342bfc3c20c21629290a2111f8374d13a81221179603ffc4364f38374b5655d17b6a8f8a8c77bdea4fe8b @@ -44727,14 +39048,7 @@ __metadata: languageName: node linkType: hard -"node-abort-controller@npm:^3.0.1": - version: 3.0.1 - resolution: "node-abort-controller@npm:3.0.1" - checksum: 2b3d75c65249fea99e8ba22da3a8bc553f034f44dd12f5f4b38b520f718b01c88718c978f0c24c2a460fc01de9a80b567028f547b94440cb47adeacfeb82c2ee - languageName: node - linkType: hard - -"node-abort-controller@npm:^3.1.1": +"node-abort-controller@npm:^3.0.1, node-abort-controller@npm:^3.1.1": version: 3.1.1 resolution: "node-abort-controller@npm:3.1.1" checksum: 2c340916af9710328b11c0828223fc65ba320e0d082214a211311bf64c2891028e42ef276b9799188c4ada9e6e1c54cf7a0b7c05dd9d59fcdc8cd633304c8047 @@ -44768,6 +39082,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^7.0.0": + version: 7.1.1 + resolution: "node-addon-api@npm:7.1.1" + dependencies: + node-gyp: latest + checksum: 46051999e3289f205799dfaf6bcb017055d7569090f0004811110312e2db94cb4f8654602c7eb77a60a1a05142cc2b96e1b5c56ca4622c41a5c6370787faaf30 + languageName: node + linkType: hard + "node-cache@npm:^5.1.2": version: 5.1.2 resolution: "node-cache@npm:5.1.2" @@ -44802,10 +39125,10 @@ __metadata: languageName: node linkType: hard -"node-fetch-native@npm:^1.0.2": - version: 1.2.0 - resolution: "node-fetch-native@npm:1.2.0" - checksum: f18d775523fc25b9fbec05a1da99cbf40214045bcaca82c8fd949b99148890c3cead4ab1764e26a92af600d14884d846481bcebf82d56815210624f836051a10 +"node-fetch-native@npm:^1.6.3": + version: 1.6.4 + resolution: "node-fetch-native@npm:1.6.4" + checksum: 7b159f610e037e8813750096a6616ec6771e9abf868aa6e75e5b790bfc2ba2d92cf2abcce33c18fd01f2e5e5cc72de09c78bd4381e7f8c0887f7de21bd96f045 languageName: node linkType: hard @@ -44830,14 +39153,16 @@ __metadata: languageName: node linkType: hard -"node-gyp-build-optional-packages@npm:5.0.7": - version: 5.0.7 - resolution: "node-gyp-build-optional-packages@npm:5.0.7" +"node-gyp-build-optional-packages@npm:5.2.2": + version: 5.2.2 + resolution: "node-gyp-build-optional-packages@npm:5.2.2" + dependencies: + detect-libc: ^2.0.1 bin: node-gyp-build-optional-packages: bin.js node-gyp-build-optional-packages-optional: optional.js node-gyp-build-optional-packages-test: build-test.js - checksum: bcb4537af15bcb3811914ea0db8f69284ca10db1cc7543a167a4c41ae4b9b5044b133f789fdadad0b7adc6931f6ae7def3c75b0bc7b05836881aae52400163e6 + checksum: 3c10d7380901ab5febcd153d2632917fe7507edb15a3405e9ef19801834a4c2162459a67b9944887f737f8718baeb4aaf0002c829a8214011930f2de80e4b42f languageName: node linkType: hard @@ -44852,25 +39177,14 @@ __metadata: languageName: node linkType: hard -"node-gyp-build@npm:^4.2.3, node-gyp-build@npm:^4.3.0": - version: 4.4.0 - resolution: "node-gyp-build@npm:4.4.0" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 972a059f960253d254e0b23ce10f54c8982236fc0edcab85166d0b7f87443b2ce98391c877cfb2f6eeafcf03c538c5f4dd3e0bfff03828eb48634f58f4c64343 - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.5.0": - version: 4.6.0 - resolution: "node-gyp-build@npm:4.6.0" +"node-gyp-build@npm:^4.2.3, node-gyp-build@npm:^4.3.0, node-gyp-build@npm:^4.5.0": + version: 4.8.2 + resolution: "node-gyp-build@npm:4.8.2" bin: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15 + checksum: 1a57bba8c4c193f808bd8ad1484d4ebdd8106dd9f04a3e82554dc716e3a2d87d7e369e9503c145e0e6a7e2c663fec0d8aaf52bd8156342ec7fc388195f37824e languageName: node linkType: hard @@ -44915,22 +39229,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 9.3.0 - resolution: "node-gyp@npm:9.3.0" + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" dependencies: env-paths: ^2.2.0 - glob: ^7.1.4 + exponential-backoff: ^3.1.1 + glob: ^10.3.10 graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 + make-fetch-happen: ^13.0.0 + nopt: ^7.0.0 + proc-log: ^4.1.0 semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 + tar: ^6.2.1 + which: ^4.0.0 bin: node-gyp: bin/node-gyp.js - checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 + checksum: 0233759d8c19765f7fdc259a35eb046ad86c3d09e22f7384613ae2b89647dd27fcf833fdf5293d9335041e91f9b1c539494225959cdb312a5c8080b7534b926f languageName: node linkType: hard @@ -44944,12 +39258,12 @@ __metadata: linkType: hard "node-html-parser@npm:^6.1.1": - version: 6.1.5 - resolution: "node-html-parser@npm:6.1.5" + version: 6.1.13 + resolution: "node-html-parser@npm:6.1.13" dependencies: css-select: ^5.1.0 he: 1.2.0 - checksum: b54257b31954be17d473c86a2fede53d5e238708f3d88577c98881c28ab66013fd37044903f6f3cd662b56d882681fb511bca75a80a80b62f7111b32b39eebae + checksum: bf172147f5bee7ab3dbef4dce0308a2c02264bac178ebd6375cd460e0a120e916451b93601aabdd59331c467bed0e3f9bb5b362a74050254846135d5cd5dd66d languageName: node linkType: hard @@ -45020,9 +39334,9 @@ __metadata: linkType: hard "node-watch@npm:^0.7.2": - version: 0.7.3 - resolution: "node-watch@npm:0.7.3" - checksum: c745482f720613415153b9065383b77d21f2ef60ceabf64f779c1452b1dcbb8d08c71f650b93f3c1d84524371321f92a15fda468745872cacffec8289741d51a + version: 0.7.4 + resolution: "node-watch@npm:0.7.4" + checksum: effca2aa3575afdc8caae2a422d5738ecf8322962f051574c5dd3c1a399b4bf188c3ad3cb32890fc5e530604f0f037bc0160ec94b37f8d3ae4b76006a98f9df3 languageName: node linkType: hard @@ -45036,7 +39350,7 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:6.7.2, nodemailer@npm:^6.4.16": +"nodemailer@npm:6.7.2": version: 6.7.2 resolution: "nodemailer@npm:6.7.2" checksum: 3c37a40928448e2f5118a9f2f016c7a4f32228d0e6b7cc7d1834b8001374cc77280dc077a83239420f6daea4c898d9a1f336dfc2273bb7eddaf51a36bd126f72 @@ -45050,6 +39364,13 @@ __metadata: languageName: node linkType: hard +"nodemailer@npm:^6.4.16": + version: 6.9.15 + resolution: "nodemailer@npm:6.9.15" + checksum: 2d975f5c60f84acde52d79d43287c70197fe94bde4a731682f306e9636a148c49de29a5dd92ce7dc5aac068a148cd91da3401ede80f8f52b9f2bc00439f36ced + languageName: node + linkType: hard + "nopt@npm:^4.0.1": version: 4.0.3 resolution: "nopt@npm:4.0.3" @@ -45073,14 +39394,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" +"nopt@npm:^7.0.0, nopt@npm:^7.2.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" dependencies: - abbrev: ^1.0.0 + abbrev: ^2.0.0 bin: nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + checksum: 6fa729cc77ce4162cfad8abbc9ba31d4a0ff6850c3af61d59b505653bef4781ec059f8890ecfe93ee8aa0c511093369cca88bfc998101616a2904e715bbbb7c9 languageName: node linkType: hard @@ -45154,6 +39475,18 @@ __metadata: languageName: node linkType: hard +"npm-package-arg@npm:^11.0.0": + version: 11.0.3 + resolution: "npm-package-arg@npm:11.0.3" + dependencies: + hosted-git-info: ^7.0.0 + proc-log: ^4.0.0 + semver: ^7.3.5 + validate-npm-package-name: ^5.0.0 + checksum: cc6f22c39201aa14dcceeddb81bfbf7fa0484f94bcd2b3ad038e18afec5167c843cdde90c897f6034dc368faa0100c1eeee6e3f436a89e0af32ba932af4a8c28 + languageName: node + linkType: hard + "npm-package-arg@npm:^7.0.0": version: 7.0.0 resolution: "npm-package-arg@npm:7.0.0" @@ -45206,11 +39539,11 @@ __metadata: linkType: hard "npm-run-path@npm:^5.1.0": - version: 5.1.0 - resolution: "npm-run-path@npm:5.1.0" + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" dependencies: path-key: ^4.0.0 - checksum: dc184eb5ec239d6a2b990b43236845332ef12f4e0beaa9701de724aa797fe40b6bbd0157fb7639d24d3ab13f5d5cf22d223a19c6300846b8126f335f788bee66 + checksum: ae8e7a89da9594fb9c308f6555c73f618152340dcaae423e5fb3620026fefbec463618a8b761920382d666fa7a2d8d240b6fe320e8a6cdd54dc3687e2b659d25 languageName: node linkType: hard @@ -45238,15 +39571,6 @@ __metadata: languageName: node linkType: hard -"nth-check@npm:^2.0.0": - version: 2.0.0 - resolution: "nth-check@npm:2.0.0" - dependencies: - boolbase: ^1.0.0 - checksum: a22eb19616719d46a5b517f76c32e67e4a2b6a229d67ba2f3efb296e24d79687d52b904c2298cd16510215d5d2a419f8ba671f5957a3b4b73905f62ba7aafa3b - languageName: node - linkType: hard - "nth-check@npm:^2.0.1": version: 2.1.1 resolution: "nth-check@npm:2.1.1" @@ -45270,17 +39594,10 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0": - version: 2.2.0 - resolution: "nwsapi@npm:2.2.0" - checksum: 5ef4a9bc0c1a5b7f2e014aa6a4b359a257503b796618ed1ef0eb852098f77e772305bb0e92856e4bbfa3e6c75da48c0113505c76f144555ff38867229c2400a7 - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.2": - version: 2.2.5 - resolution: "nwsapi@npm:2.2.5" - checksum: 3acfe387214e2a9a03960662ad600ecb41fc24385c9de91262a881608407f02d14686e5df3e6e87af0cf7b173ed2a6a202a569ab7bef376ec1841cd9b6cbf0a6 +"nwsapi@npm:^2.2.0, nwsapi@npm:^2.2.2": + version: 2.2.13 + resolution: "nwsapi@npm:2.2.13" + checksum: d34fb7838517c3c7e8cc824e443275b08b57f6a025a860693d18c56ddcfd176e32df9bf0ae7f5a95c7a32981501caa1f9fda31b59f28aa72a4b9d01f573a8e6b languageName: node linkType: hard @@ -45295,17 +39612,27 @@ __metadata: languageName: node linkType: hard -"nx@npm:14.0.3": - version: 14.0.3 - resolution: "nx@npm:14.0.3" +"nx@npm:15.9.7": + version: 15.9.7 + resolution: "nx@npm:15.9.7" dependencies: - "@nrwl/cli": 14.0.3 - "@nrwl/tao": 14.0.3 + "@nrwl/cli": 15.9.7 + "@nrwl/nx-darwin-arm64": 15.9.7 + "@nrwl/nx-darwin-x64": 15.9.7 + "@nrwl/nx-linux-arm-gnueabihf": 15.9.7 + "@nrwl/nx-linux-arm64-gnu": 15.9.7 + "@nrwl/nx-linux-arm64-musl": 15.9.7 + "@nrwl/nx-linux-x64-gnu": 15.9.7 + "@nrwl/nx-linux-x64-musl": 15.9.7 + "@nrwl/nx-win32-arm64-msvc": 15.9.7 + "@nrwl/nx-win32-x64-msvc": 15.9.7 + "@nrwl/tao": 15.9.7 "@parcel/watcher": 2.0.4 - "@swc-node/register": ^1.4.2 - "@swc/core": ^1.2.152 - chalk: 4.1.0 - chokidar: ^3.5.1 + "@yarnpkg/lockfile": ^1.1.0 + "@yarnpkg/parsers": 3.0.0-rc.46 + "@zkochan/js-yaml": 0.0.6 + axios: ^1.0.0 + chalk: ^4.1.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: ^7.0.2 @@ -45314,27 +39641,55 @@ __metadata: fast-glob: 3.2.7 figures: 3.2.0 flat: ^5.0.2 - fs-extra: ^9.1.0 + fs-extra: ^11.1.0 glob: 7.1.4 ignore: ^5.0.4 - jsonc-parser: 3.0.0 - minimatch: 3.0.4 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: ~2.0.3 + minimatch: 3.0.5 npm-run-path: ^4.0.1 open: ^8.4.0 - rxjs: ^6.5.4 - rxjs-for-await: 0.0.2 - semver: 7.3.4 + semver: 7.5.4 string-width: ^4.2.3 + strong-log-transformer: ^2.1.0 tar-stream: ~2.2.0 tmp: ~0.2.1 - tsconfig-paths: ^3.9.0 + tsconfig-paths: ^4.1.2 tslib: ^2.3.0 v8-compile-cache: 2.3.0 - yargs: ^17.4.0 - yargs-parser: 21.0.1 + yargs: ^17.6.2 + yargs-parser: 21.1.1 + peerDependencies: + "@swc-node/register": ^1.4.2 + "@swc/core": ^1.2.173 + dependenciesMeta: + "@nrwl/nx-darwin-arm64": + optional: true + "@nrwl/nx-darwin-x64": + optional: true + "@nrwl/nx-linux-arm-gnueabihf": + optional: true + "@nrwl/nx-linux-arm64-gnu": + optional: true + "@nrwl/nx-linux-arm64-musl": + optional: true + "@nrwl/nx-linux-x64-gnu": + optional: true + "@nrwl/nx-linux-x64-musl": + optional: true + "@nrwl/nx-win32-arm64-msvc": + optional: true + "@nrwl/nx-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc-node/register": + optional: true + "@swc/core": + optional: true bin: nx: bin/nx.js - checksum: cc0a38aeed8233e6c7457361f478ec2835f6f8df4595d5cb27f1e5ca3923147d14a856b59adc11a8a6f2a0a23426365e81bbfed0f791dae0095c388d978c9291 + checksum: 6a554be82d6759e669e867e5276374c4be96e3821b9c9377d6c19a10b705b15612b8ce5851bc979e30b1473722ab09459c514527a860cc102f76d6fe782da210 languageName: node linkType: hard @@ -45422,6 +39777,22 @@ __metadata: languageName: node linkType: hard +"nypm@npm:^0.3.8": + version: 0.3.12 + resolution: "nypm@npm:0.3.12" + dependencies: + citty: ^0.1.6 + consola: ^3.2.3 + execa: ^8.0.1 + pathe: ^1.1.2 + pkg-types: ^1.2.0 + ufo: ^1.5.4 + bin: + nypm: dist/cli.mjs + checksum: 213d15a7e61a63733d14cbf2d05f0b2ac1712d900a310cb60e14f8e73c46fd7d03cdad96cbeddc8ce7fe048399492e33ca38d00f304ad1be704d6ad897499ecd + languageName: node + linkType: hard + "oas-kit-common@npm:^1.0.8": version: 1.0.8 resolution: "oas-kit-common@npm:1.0.8" @@ -45480,13 +39851,6 @@ __metadata: languageName: node linkType: hard -"oauth-sign@npm:~0.9.0": - version: 0.9.0 - resolution: "oauth-sign@npm:0.9.0" - checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 - languageName: node - linkType: hard - "oauth@npm:^0.9.15": version: 0.9.15 resolution: "oauth@npm:0.9.15" @@ -45494,10 +39858,12 @@ __metadata: languageName: node linkType: hard -"ob1@npm:0.80.9": - version: 0.80.9 - resolution: "ob1@npm:0.80.9" - checksum: 50730f4c4fd043e1d3e713a40e6c6ee04882b56abf57bc0afbfe18982ad4e64f0d7cfd0b8fc37377af37f0a0dbf1bb46eb3c1625eacff0cd834717703028cfb2 +"ob1@npm:0.80.12": + version: 0.80.12 + resolution: "ob1@npm:0.80.12" + dependencies: + flow-enums-runtime: ^0.0.6 + checksum: c78af51d6ecf47ba5198bc7eb27d0456a287589533f1445e6d595e2d067f6f8038da02a98e5faa4a6c3d0c04f77c570bc9b29c652fec55518884c40c73212f17 languageName: node linkType: hard @@ -45515,38 +39881,24 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.0, object-inspect@npm:^1.6.0, object-inspect@npm:^1.9.0": - version: 1.12.0 - resolution: "object-inspect@npm:1.12.0" - checksum: 2b36d4001a9c921c6b342e2965734519c9c58c355822243c3207fbf0aac271f8d44d30d2d570d450b2cc6f0f00b72bcdba515c37827d2560e5f22b1899a31cf4 - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.2": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 - languageName: node - linkType: hard - "object-inspect@npm:^1.13.1": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 7d9fa9221de3311dcb5c7c307ee5dc011cdd31dc43624b7c184b3840514e118e05ef0002be5388304c416c0eb592feb46e983db12577fc47e47d5752fbbfb61f + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 9f850b3c045db60e0e97746e809ee4090d6ce62195af17dd1e9438ac761394a7d8ec4f7906559aea5424eaf61e35d3e53feded2ccd5f62fcc7d9670d3c8eb353 languageName: node linkType: hard -"object-is@npm:^1.0.1, object-is@npm:^1.1.4, object-is@npm:^1.1.5": - version: 1.1.5 - resolution: "object-is@npm:1.1.5" +"object-is@npm:^1.1.4, object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe + call-bind: ^1.0.7 + define-properties: ^1.2.1 + checksum: 3ea22759967e6f2380a2cbbd0f737b42dc9ddb2dfefdb159a1b927fea57335e1b058b564bfa94417db8ad58cddab33621a035de6f5e5ad56d89f2dd03e66c6a1 languageName: node linkType: hard -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": +"object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a @@ -45567,31 +39919,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2": - version: 4.1.2 - resolution: "object.assign@npm:4.1.2" - dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - has-symbols: ^1.0.1 - object-keys: ^1.1.1 - checksum: d621d832ed7b16ac74027adb87196804a500d80d9aca536fccb7ba48d33a7e9306a75f94c1d29cbfa324bc091bfc530bc24789568efdaee6a47fcfa298993814 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.5": +"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": version: 4.1.5 resolution: "object.assign@npm:4.1.5" dependencies: @@ -45603,18 +39931,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.6": - version: 1.1.6 - resolution: "object.entries@npm:1.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0f8c47517e6a9a980241eafe3b73de11e59511883173c2b93d67424a008e47e11b77c80e431ad1d8a806f6108b225a1cab9223e53e555776c612a24297117d28 - languageName: node - linkType: hard - -"object.entries@npm:^1.1.8": +"object.entries@npm:^1.1.6, object.entries@npm:^1.1.8": version: 1.1.8 resolution: "object.entries@npm:1.1.8" dependencies: @@ -45625,18 +39942,7 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.6": - version: 2.0.6 - resolution: "object.fromentries@npm:2.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 453c6d694180c0c30df451b60eaf27a5b9bca3fb43c37908fd2b78af895803dc631242bcf05582173afa40d8d0e9c96e16e8874b39471aa53f3ac1f98a085d85 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.7, object.fromentries@npm:^2.0.8": +"object.fromentries@npm:^2.0.6, object.fromentries@npm:^2.0.8": version: 2.0.8 resolution: "object.fromentries@npm:2.0.8" dependencies: @@ -45648,18 +39954,22 @@ __metadata: languageName: node linkType: hard -"object.getownpropertydescriptors@npm:^2.1.1": - version: 2.1.2 - resolution: "object.getownpropertydescriptors@npm:2.1.2" +"object.getownpropertydescriptors@npm:^2.1.6": + version: 2.1.8 + resolution: "object.getownpropertydescriptors@npm:2.1.8" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.2 - checksum: 6c1c0162a2bea912f092dbf48699998d6f4b788a9884ee99ba41ddf25c3f0924ec56c6a55738c4ae3bd91d1203813a9a8e18e6fff1f477e2626cdbcd1a5f3ca8 + array.prototype.reduce: ^1.0.6 + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + gopd: ^1.0.1 + safe-array-concat: ^1.1.2 + checksum: 073e492700a7f61ff6c471a2ed96e72473b030a7a105617f03cab192fb4bbc0e6068ef76534ec56afd34baf26b5dc5408de59cb0140ec8abde781e00faa3e63e languageName: node linkType: hard -"object.groupby@npm:^1.0.1": +"object.groupby@npm:^1.0.3": version: 1.0.3 resolution: "object.groupby@npm:1.0.3" dependencies: @@ -45671,16 +39981,6 @@ __metadata: linkType: hard "object.hasown@npm:^1.1.2": - version: 1.1.2 - resolution: "object.hasown@npm:1.1.2" - dependencies: - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: b936572536db0cdf38eb30afd2f1026a8b6f2cc5d2c4497c9d9bbb01eaf3e980dead4fd07580cfdd098e6383e5a9db8212d3ea0c6bdd2b5e68c60aa7e3b45566 - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.4": version: 1.1.4 resolution: "object.hasown@npm:1.1.4" dependencies: @@ -45691,18 +39991,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.6": - version: 1.1.6 - resolution: "object.values@npm:1.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e - languageName: node - linkType: hard - -"object.values@npm:^1.1.7, object.values@npm:^1.2.0": +"object.values@npm:^1.1.6, object.values@npm:^1.2.0": version: 1.2.0 resolution: "object.values@npm:1.2.0" dependencies: @@ -45727,6 +40016,13 @@ __metadata: languageName: node linkType: hard +"ohash@npm:^1.1.3": + version: 1.1.4 + resolution: "ohash@npm:1.1.4" + checksum: 8c63897941e67129ac81a15cfc2bb66a7b122200c9ee244e86d3d6b7aa7f5d9f7cb98d33dfc38b169c83b77c9babcc6f66ccbc90864d1f862f10ac8b72d80d66 + languageName: node + linkType: hard + "oidc-client-ts@npm:2.4.0": version: 2.4.0 resolution: "oidc-client-ts@npm:2.4.0" @@ -45833,7 +40129,7 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.0.4, open@npm:^8.0.9, open@npm:^8.3.0": +"open@npm:^8.0.4, open@npm:^8.0.9, open@npm:^8.2.1, open@npm:^8.3.0, open@npm:^8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: @@ -45844,36 +40140,13 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.2.1, open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" - dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 - is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c - languageName: node - linkType: hard - -"open@npm:^9.1.0": - version: 9.1.0 - resolution: "open@npm:9.1.0" - dependencies: - default-browser: ^4.0.0 - define-lazy-prop: ^3.0.0 - is-inside-container: ^1.0.0 - is-wsl: ^2.2.0 - checksum: 3993c0f61d51fed8ac290e99c9c3cf45d3b6cfb3e2aa2b74cafd312c3486c22fd81df16ac8f3ab91dd8a4e3e729a16fc2480cfc406c4833416cf908acf1ae7c9 - languageName: node - linkType: hard - "openapi-sampler@npm:^1.3.1": - version: 1.4.0 - resolution: "openapi-sampler@npm:1.4.0" + version: 1.5.1 + resolution: "openapi-sampler@npm:1.5.1" dependencies: "@types/json-schema": ^7.0.7 json-pointer: 0.6.2 - checksum: d38b432e92190847eeb6533ed77b24dc912bd97f610f4b52db0d7cbbe88c8ee2d5fe498a97c23e6209385a13114b6f01b0c2c49e98c079f0b639f0133a1d657c + checksum: 35a624823c576a2d1b2b5a1a876479aacabb2e62ed522061b5ebbe9537e6ad34f0fb2ad41cc7c331799f485862c03a2c03887021f7b606591dbac2a7970d2a30 languageName: node linkType: hard @@ -45905,9 +40178,9 @@ __metadata: linkType: hard "opentracing@npm:>=0.12.1": - version: 0.14.5 - resolution: "opentracing@npm:0.14.5" - checksum: cb84f0a5d4340dfd1e023525bb743ab6a60587e022e90517b91183e68a09ccffb2cd8379d633f26cba59cbdba0047f3ae227515d45f016bf9686f6e09b2b25f4 + version: 0.14.7 + resolution: "opentracing@npm:0.14.7" + checksum: 5f7e44439062d056a2a72ac89eff463c9cf5659a2aea230ff7f5a226c5e960c195ce04ec2e2cc590140bbb9c5d2be11a5a50a23484cbe2d0e132af4309d4c904 languageName: node linkType: hard @@ -45957,16 +40230,16 @@ __metadata: linkType: hard "optionator@npm:^0.9.3": - version: 0.9.3 - resolution: "optionator@npm:0.9.3" + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: - "@aashutoshrathi/word-wrap": ^1.2.3 deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 - checksum: 09281999441f2fe9c33a5eeab76700795365a061563d66b098923eb719251a42bdbe432790d35064d0816ead9296dbeb1ad51a733edf4167c96bd5d0882e428a + word-wrap: ^1.2.5 + checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb languageName: node linkType: hard @@ -46094,6 +40367,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: ^1.0.0 + checksum: 01d9d70695187788f984226e16c903475ec6a947ee7b21948d6f597bed788e3112cc7ec2e171c1d37125057a5f45f3da21d8653e04a3a793589e12e9e80e756b + languageName: node + linkType: hard + "p-locate@npm:^3.0.0": version: 3.0.0 resolution: "p-locate@npm:3.0.0" @@ -46121,6 +40403,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: ^4.0.0 + checksum: 2bfe5234efa5e7a4e74b30a5479a193fdd9236f8f6b4d2f3f69e3d286d9a7d7ab0c118a2a50142efcf4e41625def635bd9332d6cbf9cc65d85eb0718c579ab38 + languageName: node + linkType: hard + "p-map@npm:^2.0.0": version: 2.1.0 resolution: "p-map@npm:2.1.0" @@ -46188,33 +40479,33 @@ __metadata: linkType: hard "pac-proxy-agent@npm:^7.0.1": - version: 7.0.1 - resolution: "pac-proxy-agent@npm:7.0.1" + version: 7.0.2 + resolution: "pac-proxy-agent@npm:7.0.2" dependencies: "@tootallnate/quickjs-emscripten": ^0.23.0 agent-base: ^7.0.2 debug: ^4.3.4 get-uri: ^6.0.1 http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.2 - pac-resolver: ^7.0.0 - socks-proxy-agent: ^8.0.2 - checksum: 3d4aa48ec1c19db10158ecc1c4c9a9f77792294412d225ceb3dfa45d5a06950dca9755e2db0d9b69f12769119bea0adf2b24390d9c73c8d81df75e28245ae451 + https-proxy-agent: ^7.0.5 + pac-resolver: ^7.0.1 + socks-proxy-agent: ^8.0.4 + checksum: 82772aaa489a4ad6f598b75d56daf609e7ba294a05a91cfe3101b004e2df494f0a269c98452cb47aaa4a513428e248308a156e26fee67eb78a76a58e9346921e languageName: node linkType: hard "pac-resolver@npm:^5.0.0": - version: 5.0.0 - resolution: "pac-resolver@npm:5.0.0" + version: 5.0.1 + resolution: "pac-resolver@npm:5.0.1" dependencies: - degenerator: ^3.0.1 + degenerator: ^3.0.2 ip: ^1.1.5 - netmask: ^2.0.1 - checksum: d6c0f86917bcb759136f47ded0818f14bf2b424a1c3efe6e11bdb9728e5465bfefd05c163f9808766b06605aa0d211c538583293c72dca4c499452493550f4d7 + netmask: ^2.0.2 + checksum: e3bd8aada70d173cd4cec1ac810fb56161678b7a597060a740c4a31d9c5f8cd95687b2d0fd90b69c0cafe5ef787404074f38042ba08c8d378fed48973f58e493 languageName: node linkType: hard -"pac-resolver@npm:^7.0.0": +"pac-resolver@npm:^7.0.1": version: 7.0.1 resolution: "pac-resolver@npm:7.0.1" dependencies: @@ -46225,9 +40516,9 @@ __metadata: linkType: hard "package-json-from-dist@npm:^1.0.0": - version: 1.0.0 - resolution: "package-json-from-dist@npm:1.0.0" - checksum: ac706ec856a5a03f5261e4e48fa974f24feb044d51f84f8332e2af0af04fbdbdd5bbbfb9cbbe354190409bc8307c83a9e38c6672c3c8855f709afb0006a009ea + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 languageName: node linkType: hard @@ -46271,13 +40562,6 @@ __metadata: languageName: node linkType: hard -"parent-require@npm:^1.0.0": - version: 1.0.0 - resolution: "parent-require@npm:1.0.0" - checksum: 91ecef2c8e0ecc06a7d68ebdfccec9cb8b34a7144cccda0141273c8871d4dd05856fe13b17ae1e1a32bfd769143671a6dbd2ad7ee72f55d1cb8e588dc60a8f4c - languageName: node - linkType: hard - "parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": version: 5.1.7 resolution: "parse-asn1@npm:5.1.7" @@ -46378,7 +40662,7 @@ __metadata: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^6.0.0, parse5-htmlparser2-tree-adapter@npm:^6.0.1": +"parse5-htmlparser2-tree-adapter@npm:^6.0.0": version: 6.0.1 resolution: "parse5-htmlparser2-tree-adapter@npm:6.0.1" dependencies: @@ -46387,6 +40671,25 @@ __metadata: languageName: node linkType: hard +"parse5-htmlparser2-tree-adapter@npm:^7.0.0": + version: 7.1.0 + resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" + dependencies: + domhandler: ^5.0.3 + parse5: ^7.0.0 + checksum: 98326fc5443e2149e10695adbfd0b0b3383c54398799f858b4ac2914adb199af8fcc90c2143aa5f7fd5f9482338f26ef253b468722f34d50bb215ec075d89fe9 + languageName: node + linkType: hard + +"parse5-parser-stream@npm:^7.1.2": + version: 7.1.2 + resolution: "parse5-parser-stream@npm:7.1.2" + dependencies: + parse5: ^7.0.0 + checksum: 75b232d460bce6bd0e35012750a78ef034f40ccf550b7c6cec3122395af6b4553202ad3663ad468cf537ead5a2e13b6727670395fd0ff548faccad1dc2dc93cf + languageName: node + linkType: hard + "parse5@npm:4.0.0": version: 4.0.0 resolution: "parse5@npm:4.0.0" @@ -46408,12 +40711,12 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.0.0, parse5@npm:^7.1.1": - version: 7.1.2 - resolution: "parse5@npm:7.1.2" +"parse5@npm:^7.0.0, parse5@npm:^7.1.1, parse5@npm:^7.1.2": + version: 7.2.0 + resolution: "parse5@npm:7.2.0" dependencies: - entities: ^4.4.0 - checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 + entities: ^4.5.0 + checksum: 78a3286521d5ae09837ed3112a3c817cc718ee444951aced617c46a229b9872b10b7b20941d4d0ca7176c7f37f13dbf013206abe2e5e533563d635d36a9a3dc6 languageName: node linkType: hard @@ -46472,17 +40775,7 @@ __metadata: languageName: node linkType: hard -"password-prompt@npm:^1.0.4": - version: 1.1.2 - resolution: "password-prompt@npm:1.1.2" - dependencies: - ansi-escapes: ^3.1.0 - cross-spawn: ^6.0.5 - checksum: 4763ec1b48cb311d60df37186e31f1b85ec3249a21cc17bbf8407d66c5b55cffe34b4eb529ebd044ed4ced7f3ea3fad744fe15e30a5de31645433e94cd444266 - languageName: node - linkType: hard - -"password-prompt@npm:^1.1.3": +"password-prompt@npm:^1.0.4, password-prompt@npm:^1.1.3": version: 1.1.3 resolution: "password-prompt@npm:1.1.3" dependencies: @@ -46532,6 +40825,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 8ca842868cab09423994596eb2c5ec2a971c17d1a3cb36dbf060592c730c725cd524b9067d7d2a1e031fef9ba7bd2ac6dc5ec9fb92aa693265f7be3987045254 + languageName: node + linkType: hard + "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -46583,17 +40883,7 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" - dependencies: - lru-cache: ^9.1.1 || ^10.0.0 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 - languageName: node - linkType: hard - -"path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": +"path-scurry@npm:^1.10.1, path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": version: 1.11.1 resolution: "path-scurry@npm:1.11.1" dependencies: @@ -46603,7 +40893,14 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.7, path-to-regexp@npm:^0.1.2": +"path-to-regexp@npm:0.1.10": + version: 0.1.10 + resolution: "path-to-regexp@npm:0.1.10" + checksum: ab7a3b7a0b914476d44030340b0a65d69851af2a0f33427df1476100ccb87d409c39e2182837a96b98fb38c4ef2ba6b87bdad62bb70a2c153876b8061760583c + languageName: node + linkType: hard + +"path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce @@ -46624,6 +40921,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^0.1.2": + version: 0.1.11 + resolution: "path-to-regexp@npm:0.1.11" + checksum: 02665d2795ae458f24b2f62cc7f4e8c3334d65dbd4e49a50b0494cf28d69f645ce6bf51404eab7bbf717dd36809a2c83785a54a3dda776e8fe1811ada0ba32fd + languageName: node + linkType: hard + "path-to-regexp@npm:^2.2.1": version: 2.4.0 resolution: "path-to-regexp@npm:2.4.0" @@ -46682,10 +40986,10 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.0": - version: 1.1.1 - resolution: "pathe@npm:1.1.1" - checksum: 34ab3da2e5aa832ebc6a330ffe3f73d7ba8aec6e899b53b8ec4f4018de08e40742802deb12cf5add9c73b7bf719b62c0778246bd376ca62b0fb23e0dde44b759 +"pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134 languageName: node linkType: hard @@ -46737,11 +41041,17 @@ __metadata: linkType: hard "pdfjs-dist@npm:^2.10.377": - version: 2.10.377 - resolution: "pdfjs-dist@npm:2.10.377" + version: 2.16.105 + resolution: "pdfjs-dist@npm:2.16.105" + dependencies: + dommatrix: ^1.0.3 + web-streams-polyfill: ^3.2.1 peerDependencies: - worker-loader: ^3.0.7 - checksum: 5a4c14777676e15aeca9a627cc1f368821071ae040154983edf21f1040cb89acd9b0168b43b64ac10d66f86094dcb48b33513b9810b6d422446c599fb172d5a4 + worker-loader: ^3.0.8 + peerDependenciesMeta: + worker-loader: + optional: true + checksum: 16ad2fa0ff8404fefd1a3e83f92ef1a594fcc4d3ff65512f801365c8f06d300d4a38023a867994f0b964a8e146773e6dcc9988c7c1a791917eb6371d5bd72863 languageName: node linkType: hard @@ -46789,17 +41099,10 @@ __metadata: languageName: node linkType: hard -"pg-connection-string@npm:^2.2.2": - version: 2.5.0 - resolution: "pg-connection-string@npm:2.5.0" - checksum: a6f3a068f7c9416a5b33a326811caf0dfaaee045c225b7c628b4c9b4e9a2b25bdd12a21e4c48940e1000ea223a4e608ca122d2ff3dd08c8b1db0fc9f5705133a - languageName: node - linkType: hard - -"pg-connection-string@npm:^2.6.1": - version: 2.6.4 - resolution: "pg-connection-string@npm:2.6.4" - checksum: 2c1d2ac1add1f93076f1594d217a0980f79add05dc48de6363e1c550827c78a6ee3e3b5420da9c54858f6b678cdb348aed49732ee68158b6cdb70f1d1c748cf9 +"pg-connection-string@npm:^2.2.2, pg-connection-string@npm:^2.6.1": + version: 2.7.0 + resolution: "pg-connection-string@npm:2.7.0" + checksum: 68015a8874b7ca5dad456445e4114af3d2602bac2fdb8069315ecad0ff9660ec93259b9af7186606529ac4f6f72a06831e6f20897a689b16cc7fda7ca0e247fd languageName: node linkType: hard @@ -46820,18 +41123,18 @@ __metadata: linkType: hard "pg-pool@npm:^3.2.0": - version: 3.2.2 - resolution: "pg-pool@npm:3.2.2" + version: 3.7.0 + resolution: "pg-pool@npm:3.7.0" peerDependencies: pg: ">=8.0" - checksum: 06b0faa68f247ebbb8c6810b15916a8c53abf06d3e2a28282d3ed10f684d41318241c2daecdcb4c5761e70d792f4309cff85a8a134dec40a39fabed0e489688e + checksum: 66fc1a5ad0e17b72671b9a2cd4c7a856fb08d3cb82da7af0b322590ada23127ac591111e855740405fde4f06c9de888abe9f3aa685ed6038c3232578e1fce8cf languageName: node linkType: hard "pg-protocol@npm:*, pg-protocol@npm:^1.2.2": - version: 1.5.0 - resolution: "pg-protocol@npm:1.5.0" - checksum: b839d12cafe942ef9cbc5b13c174eb2356804fb4fe8ead8279f46a36be90722d19a91409955beb8a3d5301639c44854e49749de4aef02dc361fee3e2a61fb1e4 + version: 1.7.0 + resolution: "pg-protocol@npm:1.7.0" + checksum: 2dba740f6fc4b7f9761682c4c42d183b444292cdc7638b373f5247ec995c8199c369953343479281da3c41611fe34130a80c8668348d49a399c164f802f76be2 languageName: node linkType: hard @@ -46865,25 +41168,18 @@ __metadata: linkType: hard "pgpass@npm:1.x": - version: 1.0.4 - resolution: "pgpass@npm:1.0.4" + version: 1.0.5 + resolution: "pgpass@npm:1.0.5" dependencies: - split2: ^3.1.1 - checksum: ea4751e9ecf345f1e1deccec761a28576eb9f2775a4689e61f5c010a9a812defdd06043918dcb99ebcb503f57bfce33fe34890b12011629d2fba859c21aa2fed - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 + split2: ^4.1.0 + checksum: 947ac096c031eebdf08d989de2e9f6f156b8133d6858c7c2c06c041e1e71dda6f5f3bad3c0ec1e96a09497bbc6ef89e762eefe703b5ef9cb2804392ec52ec400 languageName: node linkType: hard -"picocolors@npm:^1.0.1": - version: 1.0.1 - resolution: "picocolors@npm:1.0.1" - checksum: fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard @@ -46954,14 +41250,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.5": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 - languageName: node - linkType: hard - -"pirates@npm:^4.0.6": +"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 @@ -46969,9 +41258,9 @@ __metadata: linkType: hard "pkce-challenge@npm:^2.1.0": - version: 2.1.0 - resolution: "pkce-challenge@npm:2.1.0" - checksum: f5d37b1d841a1dd9662239da4c32d4db01c83a9a2bb665f2459721e21a4e0b8b0c4c1d6b4c169ecd8b92ba959b8d59cf0af73d0125b19686f7a05f7fa0588001 + version: 2.2.0 + resolution: "pkce-challenge@npm:2.2.0" + checksum: f1ab8af2513e0088e691edb3397ea2c14ffd9ae51ecfabc08be2e5a97a09f93f776769022efa0536de5fd6caac40de9a6d7ac38d49ee6efcabd87c87deda94bf languageName: node linkType: hard @@ -47002,6 +41291,26 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: ^6.3.0 + checksum: 94298b20a446bfbbd66604474de8a0cdd3b8d251225170970f15d9646f633e056c80520dd5b4c1d1050c9fed8f6a9e5054b141c93806439452efe72e57562c03 + languageName: node + linkType: hard + +"pkg-types@npm:^1.2.0": + version: 1.2.1 + resolution: "pkg-types@npm:1.2.1" + dependencies: + confbox: ^0.1.8 + mlly: ^1.7.2 + pathe: ^1.1.2 + checksum: d2e3ad7aef36cc92b17403e61c04db521bf0beb175ccb4d432c284239f00ec32ff37feb072a260613e9ff727911cff1127a083fd52f91b9bec6b62970f385702 + languageName: node + linkType: hard + "pkg-up@npm:^3.1.0": version: 3.1.0 resolution: "pkg-up@npm:3.1.0" @@ -47021,12 +41330,13 @@ __metadata: linkType: hard "plist@npm:^3.0.4, plist@npm:^3.0.5": - version: 3.0.6 - resolution: "plist@npm:3.0.6" + version: 3.1.0 + resolution: "plist@npm:3.1.0" dependencies: + "@xmldom/xmldom": ^0.8.8 base64-js: ^1.5.1 xmlbuilder: ^15.1.1 - checksum: e21390fab8a3c388f8f51b76c0aa187242a40537119ce865d8637630e7d7df79b21f841ec6a4668e7c68d409a6f584d696619099a6125d28011561639c0823b8 + checksum: c8ea013da8646d4c50dff82f9be39488054621cc229957621bb00add42b5d4ce3657cf58d4b10c50f7dea1a81118f825838f838baeb4e6f17fab453ecf91d424 languageName: node linkType: hard @@ -47052,22 +41362,22 @@ __metadata: linkType: hard "polished@npm:^4.1.3, polished@npm:^4.2.2": - version: 4.2.2 - resolution: "polished@npm:4.2.2" + version: 4.3.1 + resolution: "polished@npm:4.3.1" dependencies: "@babel/runtime": ^7.17.8 - checksum: 97fb927dc55cd34aeb11b31ae2a3332463f114351c86e8aa6580d7755864a0120164fdc3770e6160c8b1775052f0eda14db9a6e34402cd4b08ab2d658a593725 + checksum: a6f863c23f1d2f3f5cda3427b5885c9fb9e83b036d681e24820b143c7df40d2685bebb01c0939767120a28e1183671ae17c93db82ac30b3c20942180bb153bc7 languageName: node linkType: hard "portfinder@npm:^1.0.28": - version: 1.0.28 - resolution: "portfinder@npm:1.0.28" + version: 1.0.32 + resolution: "portfinder@npm:1.0.32" dependencies: - async: ^2.6.2 - debug: ^3.1.1 - mkdirp: ^0.5.5 - checksum: 91fef602f13f8f4c64385d0ad2a36cc9dc6be0b8d10a2628ee2c3c7b9917ab4fefb458815b82cea2abf4b785cd11c9b4e2d917ac6fa06f14b6fa880ca8f8928c + async: ^2.6.4 + debug: ^3.2.7 + mkdirp: ^0.5.6 + checksum: 116b4aed1b9e16f6d5503823d966d9ffd41b1c2339e27f54c06cd2f3015a9d8ef53e2a53b57bc0a25af0885977b692007353aa28f9a0a98a44335cb50487240d languageName: node linkType: hard @@ -47078,7 +41388,7 @@ __metadata: languageName: node linkType: hard -"postcss-calc@npm:^9.0.0": +"postcss-calc@npm:^9.0.1": version: 9.0.1 resolution: "postcss-calc@npm:9.0.1" dependencies: @@ -47090,65 +41400,65 @@ __metadata: languageName: node linkType: hard -"postcss-colormin@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-colormin@npm:6.0.0" +"postcss-colormin@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-colormin@npm:6.1.0" dependencies: - browserslist: ^4.21.4 + browserslist: ^4.23.0 caniuse-api: ^3.0.0 - colord: ^2.9.1 + colord: ^2.9.3 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: f7113758df45a198f4cf310b317e5bc49fcbd2648064245a5cddcb46e892593950592d4040136bf3b0c8fd64973b0dda3b4b0865b72b5bd94af244cf52418c67 + postcss: ^8.4.31 + checksum: 55a1525de345d953bc7f32ecaa5ee6275ef0277c27d1f97ff06a1bd1a2fedf7f254e36dc1500621f1df20c25a6d2485a74a0b527d8ff74eb90726c76efe2ac8e languageName: node linkType: hard -"postcss-convert-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-convert-values@npm:6.0.0" +"postcss-convert-values@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-convert-values@npm:6.1.0" dependencies: - browserslist: ^4.21.4 + browserslist: ^4.23.0 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 511ca9358148fc336808d0f58f1e6ad330b73c1a87f32581f3d541ffa66cb61f2a36c8e76d1defb7c54c577c83f11d9bf2eb0d27a83c963c315b8eb149935bd7 + postcss: ^8.4.31 + checksum: 43e9f66af9bdec3c76695f9dde36885abc01f662c370c490b45d895459caab2c5792f906f3ddad107129133e41485a65634da7f699eef916a636e47f6a37a299 languageName: node linkType: hard -"postcss-discard-comments@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-comments@npm:6.0.0" +"postcss-discard-comments@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-discard-comments@npm:6.0.2" peerDependencies: - postcss: ^8.2.15 - checksum: 9be073707b5ef781c616ddd32ffd98faf14bf8b40027f341d5a4fb7989fa7b017087ad54146a370fe38295b1f2568b9f5522f4e4c1a1d09fe0e01abd9f5ae00d + postcss: ^8.4.31 + checksum: c1731ccc8d1e3d910412a61395988d3033365e6532d9e5432ad7c74add8c9dcb0af0c03d4e901bf0d2b59ea4e7297a0c77a547ff2ed1b1cc065559cc0de43b4e languageName: node linkType: hard -"postcss-discard-duplicates@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-duplicates@npm:6.0.0" +"postcss-discard-duplicates@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-discard-duplicates@npm:6.0.3" peerDependencies: - postcss: ^8.2.15 - checksum: 999dfc652a60c96f782cc37fbe0d04a89bec88b5ed943f06555166eebf03c6ee47cd56947f1373d84c8161687d1ca23ff6badd1278b5482c506614cf617bc21d + postcss: ^8.4.31 + checksum: 308e3fb84c35e4703532de1efa5d6e8444cc5f167d0e40f42d7ea3fa3a37d9d636fd10729847d078e0c303eee16f8548d14b6f88a3fce4e38a2b452648465175 languageName: node linkType: hard -"postcss-discard-empty@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-empty@npm:6.0.0" +"postcss-discard-empty@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-discard-empty@npm:6.0.3" peerDependencies: - postcss: ^8.2.15 - checksum: 0d6cc604719d4a70569db77de75e60b3b7e9b99a4521879f6047d71325556e9f46d6bd13aecbbd857c35f075c503c1f8b1be442329fb8e9653c24cbf2fb42f3e + postcss: ^8.4.31 + checksum: bad305572faa066026a295faab37e718cee096589ab827b19c990c55620b2b2a1ce9f0145212651737a66086db01b2676c1927bbb8408c5f9cb42686d5959f00 languageName: node linkType: hard -"postcss-discard-overridden@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-overridden@npm:6.0.0" +"postcss-discard-overridden@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-discard-overridden@npm:6.0.2" peerDependencies: - postcss: ^8.2.15 - checksum: f2d244bb574cf2c0974c56a1af7131f3833e14515be99c68e6fa6fe82df47cb2c9befa413b9ec92f5f067567c682dc253980a0dede3cc697f6cc9135dfc17ec7 + postcss: ^8.4.31 + checksum: a38e0fe7a36f83cb9b73c1ba9ee2a48cf93c69ec0ea5753935824ffb71e958e58ae0393171c0f3d0014a397469d09bbb0d56bb5ab80f0280722967e2e273aebb languageName: node linkType: hard @@ -47179,123 +41489,110 @@ __metadata: languageName: node linkType: hard -"postcss-merge-longhand@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-merge-longhand@npm:6.0.0" +"postcss-merge-longhand@npm:^6.0.5": + version: 6.0.5 + resolution: "postcss-merge-longhand@npm:6.0.5" dependencies: postcss-value-parser: ^4.2.0 - stylehacks: ^6.0.0 + stylehacks: ^6.1.1 peerDependencies: - postcss: ^8.2.15 - checksum: 86d1eda1b845cc7bc781a18db714d8e3ed639f673a7a9f416ecae8b8822235a87724e32d06477c707b40bc2ef96a16e87d831b89188354921791fce0de50103b + postcss: ^8.4.31 + checksum: 9ae5acf47dc0c1f494684ae55672d55bba7f5ee11c9c0f266aabd7c798e9f7394c6096363cd95685fd21ef088740389121a317772cf523ca22c915009bca2617 languageName: node linkType: hard -"postcss-merge-rules@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-merge-rules@npm:6.0.1" +"postcss-merge-rules@npm:^6.1.1": + version: 6.1.1 + resolution: "postcss-merge-rules@npm:6.1.1" dependencies: - browserslist: ^4.21.4 + browserslist: ^4.23.0 caniuse-api: ^3.0.0 - cssnano-utils: ^4.0.0 - postcss-selector-parser: ^6.0.5 + cssnano-utils: ^4.0.2 + postcss-selector-parser: ^6.0.16 peerDependencies: - postcss: ^8.2.15 - checksum: db003c820319181647806f087ead22598faffee745713026b5c8ea637936dc737a55fdc8d7631731879f49ba675a880dda174f21ae62c8f5aa4b0fda1a81f19a + postcss: ^8.4.31 + checksum: 43f60a1c88806491cf752ae7871676de0e7a2a9d6d2fc6bc894068cc35a910a63d30f7c7d79545e0926c8b3a9ec583e5e8357203c40b5bad5ff58133b0c900f6 languageName: node linkType: hard -"postcss-minify-font-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-font-values@npm:6.0.0" +"postcss-minify-font-values@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-minify-font-values@npm:6.1.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 60de1e405a8849387714980d85f30c8e3df4b7b3083850086656ef50cdaf41605426373f28c0c43dcadfd1d78816b8e425571f12a024120dced1c7e8facb5073 + postcss: ^8.4.31 + checksum: 985e4dd2f89220a4442a822aad7dff016ab58a9dbb7bbca9d01c2d07d5a1e7d8c02e1c6e836abb4c9b4e825b4b80d99ee1f5899e74bf0d969095037738e6e452 languageName: node linkType: hard -"postcss-minify-gradients@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-gradients@npm:6.0.0" +"postcss-minify-gradients@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-minify-gradients@npm:6.0.3" dependencies: - colord: ^2.9.1 - cssnano-utils: ^4.0.0 + colord: ^2.9.3 + cssnano-utils: ^4.0.2 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: f2399211f78b88d122f4c7248cb2cc887b49304eb3315c7332c6216aec361113aca6fe0dac43289f70f0c3f25c97fb10cd74417aab5c2f5f51b64b1ef2c5af13 + postcss: ^8.4.31 + checksum: 89b95088c3830f829f6d4636d1be4d4f13300bf9f1577c48c25169c81e11ec0026760b9abb32112b95d2c622f09d3b737f4d2975a7842927ccb567e1002ef7b3 languageName: node linkType: hard -"postcss-minify-params@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-params@npm:6.0.0" +"postcss-minify-params@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-minify-params@npm:6.1.0" dependencies: - browserslist: ^4.21.4 - cssnano-utils: ^4.0.0 + browserslist: ^4.23.0 + cssnano-utils: ^4.0.2 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 1cd9e372cfa27a9849f6994b03cc031534b519299bd1e392062b524405ba76906d23261ab5c0bb505289343c8ffb6a44414265f96a3e04a28181493eb032af01 + postcss: ^8.4.31 + checksum: 1e1cc3057d9bcc532c70e40628e96e3aea0081d8072dffe983a270a8cd59c03ac585e57d036b70e43d4ee725f274a05a6a8efac5a715f448284e115c13f82a46 languageName: node linkType: hard -"postcss-minify-selectors@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-selectors@npm:6.0.0" +"postcss-minify-selectors@npm:^6.0.4": + version: 6.0.4 + resolution: "postcss-minify-selectors@npm:6.0.4" dependencies: - postcss-selector-parser: ^6.0.5 - peerDependencies: - postcss: ^8.2.15 - checksum: 13ce0a1055fdc4571df8d289c4e5dac983e22ac9b449af2c1418ea536b9176a5354d1a487cc0047789f0981053263675d50c7db7cba99588ecb7ff0045fba818 - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" + postcss-selector-parser: ^6.0.16 peerDependencies: - postcss: ^8.1.0 - checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 + postcss: ^8.4.31 + checksum: 150221a84422ca7627c67ee691ee51e0fe2c3583c8108801e9fc93d3be8b538c2eb04fcfdc908270d7eeaeaf01594a20b81311690a873efccb8a23aeafe1c354 languageName: node linkType: hard -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.1.0 +"postcss-modules-extract-imports@npm:^3.1.0": + version: 3.1.0 + resolution: "postcss-modules-extract-imports@npm:3.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d + checksum: b9192e0f4fb3d19431558be6f8af7ca45fc92baaad9b2778d1732a5880cd25c3df2074ce5484ae491e224f0d21345ffc2d419bd51c25b019af76d7a7af88c17f languageName: node linkType: hard -"postcss-modules-local-by-default@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-modules-local-by-default@npm:4.0.3" +"postcss-modules-local-by-default@npm:^4.0.5": + version: 4.0.5 + resolution: "postcss-modules-local-by-default@npm:4.0.5" dependencies: icss-utils: ^5.0.0 postcss-selector-parser: ^6.0.2 postcss-value-parser: ^4.1.0 peerDependencies: postcss: ^8.1.0 - checksum: 2f8083687f3d6067885f8863dd32dbbb4f779cfcc7e52c17abede9311d84faf6d3ed8760e7c54c6380281732ae1f78e5e56a28baf3c271b33f450a11c9e30485 + checksum: ca9b01f4a0a3dfb33e016299e2dfb7e85c3123292f7aec2efc0c6771b9955648598bfb4c1561f7ee9732fb27fb073681233661b32eef98baab43743f96735452 languageName: node linkType: hard -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" +"postcss-modules-scope@npm:^3.2.0": + version: 3.2.0 + resolution: "postcss-modules-scope@npm:3.2.0" dependencies: postcss-selector-parser: ^6.0.4 peerDependencies: postcss: ^8.1.0 - checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 + checksum: 2ffe7e98c1fa993192a39c8dd8ade93fc4f59fbd1336ce34fcedaee0ee3bafb29e2e23fb49189256895b30e4f21af661c6a6a16ef7b17ae2c859301e4a4459ae languageName: node linkType: hard @@ -47310,197 +41607,169 @@ __metadata: languageName: node linkType: hard -"postcss-modules@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules@npm:4.0.0" - dependencies: - generic-names: ^2.0.1 - icss-replace-symbols: ^1.1.0 - lodash.camelcase: ^4.3.0 - postcss-modules-extract-imports: ^3.0.0 - postcss-modules-local-by-default: ^4.0.0 - postcss-modules-scope: ^3.0.0 - postcss-modules-values: ^4.0.0 - string-hash: ^1.1.1 - peerDependencies: - postcss: ^8.0.0 - checksum: 8f50c241718955b94807b1066a843fc8c9a356bd28db7f9c30ddcc7dcf0b6a61d7e41c6b41ed5d6d7cfc341891f150fc69d57387910256588bbbe5bfd4ff74d6 - languageName: node - linkType: hard - -"postcss-normalize-charset@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-charset@npm:6.0.0" +"postcss-normalize-charset@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-charset@npm:6.0.2" peerDependencies: - postcss: ^8.2.15 - checksum: 186a94083f6d41dbda884bf915ff7fe9d9d19828c50dbf02a7e00c90673bec52e5962afd648220598c40940fb1ed5b93bc25697c395cd38ef30b6fd04e48580e + postcss: ^8.4.31 + checksum: 5b8aeb17d61578a8656571cd5d5eefa8d4ee7126a99a41fdd322078002a06f2ae96f649197b9c01067a5f3e38a2e4b03e0e3fda5a0ec9e3d7ad056211ce86156 languageName: node linkType: hard -"postcss-normalize-display-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-display-values@npm:6.0.0" +"postcss-normalize-display-values@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-display-values@npm:6.0.2" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 4f8da7cf817e4c66004d3b2d88603aeadc7f9b55caca1bbba27f45e81ae8c65db8ff252488c8fd9ebb3e5c62f85e475131dcee9754346320453bc2b40865afd9 + postcss: ^8.4.31 + checksum: da30a9394b0e4a269ccad8d240693a6cd564bcc60e24db67caee00f70ddfbc070ad76faed64c32e6eec9ed02e92565488b7879d4fd6c40d877c290eadbb0bb28 languageName: node linkType: hard -"postcss-normalize-positions@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-positions@npm:6.0.0" +"postcss-normalize-positions@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-positions@npm:6.0.2" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 34dedb07f906b28eb77c57be34899c5c694b81b91c6bfff1e6e9a251aa8f28fea0fdb35a7cdda0fc83e4248b078343a2d76e4485c3ef87f469b24332fa1788cd + postcss: ^8.4.31 + checksum: 44fb77583fae4d71b76e38226cf770570876bcf5af6940dc9aeac7a7e2252896b361e0249044766cff8dad445f925378f06a005d6541597573c20e599a62b516 languageName: node linkType: hard -"postcss-normalize-repeat-style@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-repeat-style@npm:6.0.0" +"postcss-normalize-repeat-style@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-repeat-style@npm:6.0.2" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: a53b994bb6594f5c48bd7083a46e6a47c1cf02843bcb864d37e7919c08a6f1d7dbbfee8a6abc2afb5d15554b667abc69d696b90d43066ceb97f835e6c8272098 + postcss: ^8.4.31 + checksum: bebdac63bec6777ead3e265fc12527b261cf8d0da1b7f0abb12bda86fd53b7058e4afe392210ac74dac012e413bb1c2a46a1138c89f82b8bf70b81711f620f8c languageName: node linkType: hard -"postcss-normalize-string@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-string@npm:6.0.0" +"postcss-normalize-string@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-string@npm:6.0.2" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 3d55f31ec0d008e7c8e8db0dc03e6e4f2cf8365f6578a0929b7098753c9db3c7de56a134d011fb3c9d8af8b004f0776169194cdfa25654af4919634cdb6ba7b0 + postcss: ^8.4.31 + checksum: 5e8e253c528b542accafc142846fb33643c342a787c86e5b68c6287c7d8f63c5ae7d4d3fc28e3daf80821cc26a91add135e58bdd62ff9c735fca65d994898c7d languageName: node linkType: hard -"postcss-normalize-timing-functions@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-timing-functions@npm:6.0.0" +"postcss-normalize-timing-functions@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-timing-functions@npm:6.0.2" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 67021374f8f18474788d8bc99d31af6a13efc5baf961c1e9f0c6b1e265fb21ac1ad56c489d988fcde9e0d049e9b62c8b0b350cc1e79d7d3bff9f00f7c97d6221 + postcss: ^8.4.31 + checksum: 1970f5aad04be11f99d51c59e27debb6fd7b49d0fa4a8879062b42c82113f8e520a284448727add3b54de85deefb8bd5fe554f618406586e9ad8fc9d060609f1 languageName: node linkType: hard -"postcss-normalize-unicode@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-unicode@npm:6.0.0" +"postcss-normalize-unicode@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-normalize-unicode@npm:6.1.0" dependencies: - browserslist: ^4.21.4 + browserslist: ^4.23.0 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 0f246bf5511ae2294d8ec0decda6abee58c62e301a3a8f6542fa090bb426359caee156b96cc1e7f4b3a3f2cd9f62b410a446cf101e710d8fa71c704cfb057a5d + postcss: ^8.4.31 + checksum: 69ef35d06242061f0c504c128b83752e0f8daa30ebb26734de7d090460910be0b2efd8b17b1d64c3c85b95831a041faad9ad0aaba80e239406a79cfad3d63568 languageName: node linkType: hard -"postcss-normalize-url@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-url@npm:6.0.0" +"postcss-normalize-url@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-url@npm:6.0.2" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 93160c02e54c45cbe8ade7122bf34e25c41ac39656b2ddb15d342ce557efc17873fc6dd1439dd8d814152ebdfbba3ee2c16601d41b085ecaad73e6f2d037cd43 + postcss: ^8.4.31 + checksum: bef51a18bbfee4fbf0381fec3c91e6c0dace36fca053bbd5f228e653d2732b6df3985525d79c4f7fc89f840ed07eb6d226e9d7503ecdc6f16d6d80cacae9df33 languageName: node linkType: hard -"postcss-normalize-whitespace@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-whitespace@npm:6.0.0" +"postcss-normalize-whitespace@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-whitespace@npm:6.0.2" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 77940955fb0b47b46468a3e17bb9b86eb2f2c572649271a4db600b981f68c9c1ed71197b58d7a351c1b2d1aee2eb79b1e11b3021eb28604fd1a8d0ded21dfb2a + postcss: ^8.4.31 + checksum: 6081eb3a4b305749eec02c00a95c2d236336a77ee636bb1d939f18d5dfa5ba82b7cf7fa072e83f9133d0bc984276596af3fe468bdd67c742ce69e9c63dbc218d languageName: node linkType: hard -"postcss-ordered-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-ordered-values@npm:6.0.0" +"postcss-ordered-values@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-ordered-values@npm:6.0.2" dependencies: - cssnano-utils: ^4.0.0 + cssnano-utils: ^4.0.2 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 162d60e9fd7d6717457194e943ba63ed6d149ae3b4f150324e65b485312be5d1c99ae140e47698e9f8943967c1575b65c922081263a8fa22a2489ed705eb0202 + postcss: ^8.4.31 + checksum: c3d96177b4ffa43754e835e30c40043cc75ab1e95eb6c55ac8723eb48c13a12e986250e63d96619bbbd1a098876a1c0c1b3b7a8e1de1108a009cf7aa0beac834 languageName: node linkType: hard -"postcss-reduce-initial@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-reduce-initial@npm:6.0.0" +"postcss-reduce-initial@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-reduce-initial@npm:6.1.0" dependencies: - browserslist: ^4.21.4 + browserslist: ^4.23.0 caniuse-api: ^3.0.0 peerDependencies: - postcss: ^8.2.15 - checksum: 988001da75b969733756d9cec9bb37cfae9a667c888c0394d8aa84af7fa6fe134cdd997b63d657900f72541310c5a396db3436367bf91908bc4c7f7ce965c511 + postcss: ^8.4.31 + checksum: 39e4034ffbf62a041b66944c5cebc4b17f656e76b97568f7f6230b0b886479e5c75b02ae4ba48c472cb0bde47489f9ed1fe6110ae8cff0d7b7165f53c2d64a12 languageName: node linkType: hard -"postcss-reduce-transforms@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-reduce-transforms@npm:6.0.0" +"postcss-reduce-transforms@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-reduce-transforms@npm:6.0.2" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 17c27b1858897ee37a4f80af0d76c5ce895466392acac1ead75cbb71ac290ab57b209f47d5d205f6ea60c1697109f09531de005ef17d8826d545bbc02891351a + postcss: ^8.4.31 + checksum: c424cc554eb5d253b7687b64925a13fc16759f058795d223854f5a20d9bca641b5f25d0559d03287e63f07a4629c24ac78156adcf604483fcad3c51721da0a08 languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.5": - version: 6.0.13 - resolution: "postcss-selector-parser@npm:6.0.13" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: f89163338a1ce3b8ece8e9055cd5a3165e79a15e1c408e18de5ad8f87796b61ec2d48a2902d179ae0c4b5de10fccd3a325a4e660596549b040bc5ad1b465f096 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.10 - resolution: "postcss-selector-parser@npm:6.0.10" +"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.16, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": + version: 6.1.2 + resolution: "postcss-selector-parser@npm:6.1.2" dependencies: cssesc: ^3.0.0 util-deprecate: ^1.0.2 - checksum: 46afaa60e3d1998bd7adf6caa374baf857cc58d3ff944e29459c9a9e4680a7fe41597bd5b755fc81d7c388357e9bf67c0251d047c640a09f148e13606b8a8608 + checksum: ce9440fc42a5419d103f4c7c1847cb75488f3ac9cbe81093b408ee9701193a509f664b4d10a2b4d82c694ee7495e022f8f482d254f92b7ffd9ed9dea696c6f84 languageName: node linkType: hard -"postcss-svgo@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-svgo@npm:6.0.0" +"postcss-svgo@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-svgo@npm:6.0.3" dependencies: postcss-value-parser: ^4.2.0 - svgo: ^3.0.2 + svgo: ^3.2.0 peerDependencies: - postcss: ^8.2.15 - checksum: 14c68b7c275dbbbbf1f954e313ff812dacea88970165d7859c1683e2530ea51cd333372b8c0d440d4e9525768f34a8dab5f0846d3445bbb478a87a99f69e9abb + postcss: ^8.4.31 + checksum: 1a7d1c8dea555884a7791e28ec2c22ea92331731067584ff5a23042a0e615f88fefde04e1140f11c262a728ef9fab6851423b40b9c47f9ae05353bd3c0ff051a languageName: node linkType: hard -"postcss-unique-selectors@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-unique-selectors@npm:6.0.0" +"postcss-unique-selectors@npm:^6.0.4": + version: 6.0.4 + resolution: "postcss-unique-selectors@npm:6.0.4" dependencies: - postcss-selector-parser: ^6.0.5 + postcss-selector-parser: ^6.0.16 peerDependencies: - postcss: ^8.2.15 - checksum: 5fbfeaf796c6442853ce3afd03ae8c306fcb83b0b7ee59cbdc9aad57a1e601e65a2a5efd1e25edaa5c7c62e05d3795f357fe95933de0868a78a5d1d1f541be34 + postcss: ^8.4.31 + checksum: b09df9943b4e858e88b30f3d279ce867a0490df806f1f947d286b0a4e95ba923f1229c385e5bf365f4f124f1edccda41ec18ccad4ba8798d829279d6dc971203 languageName: node linkType: hard @@ -47529,7 +41798,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.38, postcss@npm:~8.4.32": +"postcss@npm:8.4.38": version: 8.4.38 resolution: "postcss@npm:8.4.38" dependencies: @@ -47540,36 +41809,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.1.10": - version: 8.4.12 - resolution: "postcss@npm:8.4.12" - dependencies: - nanoid: ^3.3.1 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 248e3d0f9bbb8efaafcfda7f91627a29bdc9a19f456896886330beb28c5abea0e14c7901b35191928602e2eccbed496b1e94097d27a0b2a980854cd00c7a835f - languageName: node - linkType: hard - -"postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.24": - version: 8.4.24 - resolution: "postcss@npm:8.4.24" - dependencies: - nanoid: ^3.3.6 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 814e2126dacfea313588eda09cc99a9b4c26ec55c059188aa7a916d20d26d483483106dc5ff9e560731b59f45c5bb91b945dfadc670aed875cc90ddbbf4e787d - languageName: node - linkType: hard - -"postcss@npm:^8.4.38": - version: 8.4.41 - resolution: "postcss@npm:8.4.41" +"postcss@npm:^8.3.11, postcss@npm:^8.4.24, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.43, postcss@npm:^8.4.47, postcss@npm:~8.4.32": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" dependencies: nanoid: ^3.3.7 - picocolors: ^1.0.1 - source-map-js: ^1.2.0 - checksum: f865894929eb0f7fc2263811cc853c13b1c75103028b3f4f26df777e27b201f1abe21cb4aa4c2e901c80a04f6fb325ee22979688fe55a70e2ea82b0a517d3b6f + picocolors: ^1.1.0 + source-map-js: ^1.2.1 + checksum: f78440a9d8f97431dd2ab1ab8e1de64f12f3eff38a3d8d4a33919b96c381046a314658d2de213a5fa5eb296b656de76a3ec269fdea27f16d5ab465b916a0f52c languageName: node linkType: hard @@ -47615,7 +41862,7 @@ __metadata: languageName: node linkType: hard -"powerbi-client@npm:2.21.1, powerbi-client@npm:^2.21.1": +"powerbi-client@npm:2.21.1": version: 2.21.1 resolution: "powerbi-client@npm:2.21.1" dependencies: @@ -47627,10 +41874,22 @@ __metadata: languageName: node linkType: hard -"powerbi-models@npm:^1.11.0": - version: 1.11.0 - resolution: "powerbi-models@npm:1.11.0" - checksum: 0a3f3280a75c5daf45eaf1e59fa7e57dd03337da76a13fa37f6d13ea7945954f2d81d88a9dbc17eef324b149bb76fc9cf82390d75e714f629a85bfe99628a208 +"powerbi-client@npm:^2.21.1": + version: 2.23.1 + resolution: "powerbi-client@npm:2.23.1" + dependencies: + http-post-message: ^0.2 + powerbi-models: ^1.14.0 + powerbi-router: ^0.1 + window-post-message-proxy: ^0.2.7 + checksum: a8edc87f2470040cad875e7bba5b34e6670148a285cdb9e63fc60e7ce4ed7c0a91f886ed4e90203b0db4198f29f6689e98d7a54add4ccc3bb850793982e696ab + languageName: node + linkType: hard + +"powerbi-models@npm:^1.11.0, powerbi-models@npm:^1.14.0": + version: 1.15.2 + resolution: "powerbi-models@npm:1.15.2" + checksum: 91b674769b0d29beec51ccb2edb2abca527400ea884937ad8feee3dc27cfeb047464231524e934d29acf33b5ccf9ed9de2ffe03b16f6e6ef21e59134d5cf99d1 languageName: node linkType: hard @@ -47652,20 +41911,20 @@ __metadata: linkType: hard "preact-render-to-string@npm:^5.1.14": - version: 5.1.19 - resolution: "preact-render-to-string@npm:5.1.19" + version: 5.2.6 + resolution: "preact-render-to-string@npm:5.2.6" dependencies: pretty-format: ^3.8.0 peerDependencies: preact: ">=10" - checksum: b8b454d7b4bd93d6dcfc5e1269cfef1756e850c524e80340be62b88582cb88eb926a3edc0088f4dc2a454f56c1e09faa10bced081f25204342fd338275aa5af1 + checksum: be8d5d8fb502d422c503e68af7bcccb6facd942f3ae9a4d093ebe3f1d4f0b15c540624bdac434d53a2a8e8fb7afa4606383414e937c40933ca43445470a026ff languageName: node linkType: hard "preact@npm:^10.4.1": - version: 10.5.13 - resolution: "preact@npm:10.5.13" - checksum: afc22da600977935dd0c69c7b69f54d44cdf5d0bc50a6a1a47eafb55cce9c6bf126213b6e842f8079e7e6aca77ea763478eaba6ff75eb5bcb998273bc15b74d1 + version: 10.24.3 + resolution: "preact@npm:10.24.3" + checksum: 372f601576f52d6417a750a8732cd83c4fc133b0b136f82ea69f013092266ad0213c160b71ae421a0fc7ab04caacb651c29dbf515e3aec26d82b0a8675e8786e languageName: node linkType: hard @@ -47701,16 +41960,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.0.2": - version: 2.3.0 - resolution: "prettier@npm:2.3.0" - bin: - prettier: bin-prettier.js - checksum: e8851a45f60f2994775f96e07964646c299b8a8f9c64da4fbd8efafc20db3458bdcedac79aed34e1d5477540b3aa04f6499adc4979cb7937f8ebd058a767d8ff - languageName: node - linkType: hard - -"prettier@npm:^2.8.0": +"prettier@npm:^2.0.2, prettier@npm:^2.8.0": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: @@ -47736,6 +41986,18 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^24": + version: 24.9.0 + resolution: "pretty-format@npm:24.9.0" + dependencies: + "@jest/types": ^24.9.0 + ansi-regex: ^4.0.0 + ansi-styles: ^3.2.0 + react-is: ^16.8.4 + checksum: ba9291c8dafd50d2fea1fbad5d2863a6f94e0c8835cce9778ec03bc11bb0f52b9ed0e4ee56aaa331d022ccae2fe52b92f73465a0af58fd0edb59deb6391c6847 + languageName: node + linkType: hard + "pretty-format@npm:^26.5.2, pretty-format@npm:^26.6.2": version: 26.6.2 resolution: "pretty-format@npm:26.6.2" @@ -47748,7 +42010,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^27.0.0, pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": +"pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" dependencies: @@ -47759,30 +42021,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^28.0.0": - version: 28.1.3 - resolution: "pretty-format@npm:28.1.3" - dependencies: - "@jest/schemas": ^28.1.3 - ansi-regex: ^5.0.1 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: e69f857358a3e03d271252d7524bec758c35e44680287f36c1cb905187fbc82da9981a6eb07edfd8a03bc3cbeebfa6f5234c13a3d5b59f2bbdf9b4c4053e0a7f - languageName: node - linkType: hard - -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0": - version: 29.5.0 - resolution: "pretty-format@npm:29.5.0" - dependencies: - "@jest/schemas": ^29.4.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 4065356b558e6db25b4d41a01efb386935a6c06a0c9c104ef5ce59f2f476b8210edb8b3949b386e60ada0a6dc5ebcb2e6ccddc8c64dfd1a9943c3c3a9e7eaf89 - languageName: node - linkType: hard - -"pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -47807,7 +42046,7 @@ __metadata: languageName: node linkType: hard -"printj@npm:~1.1.0, printj@npm:~1.1.2": +"printj@npm:~1.1.0": version: 1.1.2 resolution: "printj@npm:1.1.2" bin: @@ -47830,6 +42069,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^4.0.0, proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 98f6cd012d54b5334144c5255ecb941ee171744f45fca8b43b58ae5a0c1af07352475f481cadd9848e7f0250376ee584f6aa0951a856ff8f021bdfbff4eb33fc + languageName: node + linkType: hard + "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -47860,6 +42106,13 @@ __metadata: languageName: node linkType: hard +"promise-coalesce@npm:^1.1.2": + version: 1.1.2 + resolution: "promise-coalesce@npm:1.1.2" + checksum: 6f951b5db40ca78d09ad0f72adea0a2e9c5bdb0fc5b3ef218c611e2191c6ce2e9f752f815630fd07875dd1c9f04cc7327d6bada04b662dce986ce86ab88c2d5e + languageName: node + linkType: hard + "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" @@ -47904,17 +42157,7 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1, prompts@npm:^2.4.0": - version: 2.4.1 - resolution: "prompts@npm:2.4.1" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: 05bf4865870665067b14fc54ced6c96e353f58f57658351e16bb8c12c017402582696fb42d97306b7c98efc0e2cc1ebf27ab573448d5a5da2ac18991cc9e4cad - languageName: node - linkType: hard - -"prompts@npm:^2.3.2, prompts@npm:^2.4.2": +"prompts@npm:^2.0.1, prompts@npm:^2.3.2, prompts@npm:^2.4.0, prompts@npm:^2.4.2": version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: @@ -47950,24 +42193,24 @@ __metadata: linkType: hard "proto3-json-serializer@npm:^1.0.0": - version: 1.1.0 - resolution: "proto3-json-serializer@npm:1.1.0" + version: 1.1.1 + resolution: "proto3-json-serializer@npm:1.1.1" dependencies: protobufjs: ^7.0.0 - checksum: a68f7102746a21e2fe6d7afdf89f47b94084a1165ca3062e284922ecca12f20a3ec911bc5f3fdb63fc0cfc9a0cff2b4396befb988c66061ae686d17ff0b6a9fd + checksum: 0cd94cb635a9b9b3a2d047700175be4a6c7b7a43e2698826edad17604793764bcdfc270585ea58cb94aa690211b6cdaae5bf7a22522bea68ca67a2844773b4b7 languageName: node linkType: hard -"protobufjs-cli@npm:1.0.2": - version: 1.0.2 - resolution: "protobufjs-cli@npm:1.0.2" +"protobufjs-cli@npm:1.1.1": + version: 1.1.1 + resolution: "protobufjs-cli@npm:1.1.1" dependencies: chalk: ^4.0.0 escodegen: ^1.13.0 espree: ^9.0.0 estraverse: ^5.1.0 glob: ^8.0.0 - jsdoc: ^3.6.3 + jsdoc: ^4.0.0 minimist: ^1.2.0 semver: ^7.1.2 tmp: ^0.2.1 @@ -47977,13 +42220,13 @@ __metadata: bin: pbjs: bin/pbjs pbts: bin/pbts - checksum: 75dfa8bb76ea390c4f4926120439892fce6c730ec56960e85d5f03cac9c390fd7467d1254833542d722616ab4cb64a622e6de2fb7c75e7c42972878ae447b773 + checksum: 124a2cb10d6fccdd6e8f2984b0f7d9a351d9c1efd17f237acd4a9e7c4b82d63265364b1c86bfa5c6a6fa17d7119182c4c323a8972c0078e1ac5c5f653d096f9b languageName: node linkType: hard -"protobufjs@npm:7.1.2, protobufjs@npm:^7.0.0": - version: 7.1.2 - resolution: "protobufjs@npm:7.1.2" +"protobufjs@npm:7.2.4": + version: 7.2.4 + resolution: "protobufjs@npm:7.2.4" dependencies: "@protobufjs/aspromise": ^1.1.2 "@protobufjs/base64": ^1.1.2 @@ -47997,13 +42240,13 @@ __metadata: "@protobufjs/utf8": ^1.1.0 "@types/node": ">=13.7.0" long: ^5.0.0 - checksum: ae41669b1b0372fb1d49f506f2d1f2b0fb3dc3cece85987b17bcb544e4cef7c8d27f480486cdec324146ad0a5d22a327166a7ea864a9b3e49cc3c92a5d3f6500 + checksum: a952cdf2a5e5250c16ae651b570849b6f5b20a5475c3eef63ffb290ad239aa2916adfc1cc676f7fc93c69f48113df268761c0c246f7f023118c85bdd1a170044 languageName: node linkType: hard -"protobufjs@npm:^7.2.5": - version: 7.2.6 - resolution: "protobufjs@npm:7.2.6" +"protobufjs@npm:^7.0.0, protobufjs@npm:^7.2.5": + version: 7.4.0 + resolution: "protobufjs@npm:7.4.0" dependencies: "@protobufjs/aspromise": ^1.1.2 "@protobufjs/base64": ^1.1.2 @@ -48017,7 +42260,7 @@ __metadata: "@protobufjs/utf8": ^1.1.0 "@types/node": ">=13.7.0" long: ^5.0.0 - checksum: 3c62e48f7d50017ac3b0dcd2a58e617cf858f9fba56a488bd48b9aa3482893a75540052dbcb3c12dfbaab42b1d04964611175faf06bdadcd33a4ebac982a511e + checksum: ba0e6b60541bbf818bb148e90f5eb68bd99004e29a6034ad9895a381cbd352be8dce5376e47ae21b2e05559f2505b4a5f4a3c8fa62402822c6ab4dcdfb89ffb3 languageName: node linkType: hard @@ -48091,17 +42334,10 @@ __metadata: languageName: node linkType: hard -"pseudomap@npm:^1.0.1, pseudomap@npm:^1.0.2": - version: 1.0.2 - resolution: "pseudomap@npm:1.0.2" - checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 - languageName: node - linkType: hard - -"psl@npm:^1.1.28, psl@npm:^1.1.33": - version: 1.8.0 - resolution: "psl@npm:1.8.0" - checksum: 6150048ed2da3f919478bee8a82f3828303bc0fc730fb015a48f83c9977682c7b28c60ab01425a72d82a2891a1681627aa530a991d50c086b48a3be27744bde7 +"psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d languageName: node linkType: hard @@ -48137,12 +42373,12 @@ __metadata: linkType: hard "pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" + version: 3.0.2 + resolution: "pump@npm:3.0.2" dependencies: end-of-stream: ^1.1.0 once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + checksum: e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f languageName: node linkType: hard @@ -48157,6 +42393,13 @@ __metadata: languageName: node linkType: hard +"punycode.js@npm:^2.3.1": + version: 2.3.1 + resolution: "punycode.js@npm:2.3.1" + checksum: 13466d7ed5e8dacdab8c4cc03837e7dd14218a59a40eb14a837f1f53ca396e18ef2c4ee6d7766b8ed2fc391d6a3ac489eebf2de83b3596f5a54e86df4a251b72 + languageName: node + linkType: hard + "punycode@npm:1.3.2": version: 1.3.2 resolution: "punycode@npm:1.3.2" @@ -48165,9 +42408,16 @@ __metadata: linkType: hard "punycode@npm:2.x.x, punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 + languageName: node + linkType: hard + +"punycode@npm:^1.3.2, punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 languageName: node linkType: hard @@ -48190,22 +42440,13 @@ __metadata: linkType: hard "pure-rand@npm:^6.0.0": - version: 6.0.1 - resolution: "pure-rand@npm:6.0.1" - checksum: 4bb565399993b815658a72e359f574ce4f04827a42a905105d61163ae86f456d91595a0e4241e7bce04328fae0638ae70ac0428d93ecb55971c465bd084f8648 - languageName: node - linkType: hard - -"pvtsutils@npm:^1.3.2": - version: 1.3.2 - resolution: "pvtsutils@npm:1.3.2" - dependencies: - tslib: ^2.4.0 - checksum: 9b8155611363e2f40276879f2454e60204b45be0cd0482f9373f369308a2e9c76d5d74cdf661a3f5aae8022d75ea159eb0ba38ee78fc782ee3051e4722db98d0 + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 8d53bc02bed99eca0b65b505090152ee7e9bd67dd74f8ff32ba1c883b87234067c5bf68d2614759fb217d82594d7a92919e6df80f97885e7b12b42af4bd3316a languageName: node linkType: hard -"pvtsutils@npm:^1.3.5": +"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": version: 1.3.5 resolution: "pvtsutils@npm:1.3.5" dependencies: @@ -48230,15 +42471,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.10.4": - version: 6.10.4 - resolution: "qs@npm:6.10.4" - dependencies: - side-channel: ^1.0.4 - checksum: 31e4fedd759d01eae52dde6692abab175f9af3e639993c5caaa513a2a3607b34d8058d3ae52ceeccf37c3025f22ed5e90e9ddd6c2537e19c0562ddd10dc5b1eb - languageName: node - linkType: hard - "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -48257,37 +42489,12 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.10.0, qs@npm:^6.4.0, qs@npm:^6.5.1, qs@npm:^6.9.4": - version: 6.10.3 - resolution: "qs@npm:6.10.3" - dependencies: - side-channel: ^1.0.4 - checksum: 0fac5e6c7191d0295a96d0e83c851aeb015df7e990e4d3b093897d3ac6c94e555dbd0a599739c84d7fa46d7fee282d94ba76943983935cf33bba6769539b8019 - languageName: node - linkType: hard - -"qs@npm:^6.11.0, qs@npm:^6.7.0": - version: 6.11.1 - resolution: "qs@npm:6.11.1" - dependencies: - side-channel: ^1.0.4 - checksum: 82ee78ef12a16f3372fae5b64f76f8aedecb000feea882bbff1af146c147f6eb66b08f9c3f34d7e076f28563586956318b9b2ca41141846cdd6d5ad6f241d52f - languageName: node - linkType: hard - -"qs@npm:^6.11.2": - version: 6.12.1 - resolution: "qs@npm:6.12.1" +"qs@npm:6.13.0, qs@npm:^6.10.0, qs@npm:^6.11.0, qs@npm:^6.11.2, qs@npm:^6.12.3, qs@npm:^6.4.0, qs@npm:^6.5.1, qs@npm:^6.7.0, qs@npm:^6.9.4": + version: 6.13.0 + resolution: "qs@npm:6.13.0" dependencies: side-channel: ^1.0.6 - checksum: aa761d99e65b6936ba2dd2187f2d9976afbcda38deb3ff1b3fe331d09b0c578ed79ca2abdde1271164b5be619c521ec7db9b34c23f49a074e5921372d16242d5 - languageName: node - linkType: hard - -"qs@npm:~6.5.2": - version: 6.5.2 - resolution: "qs@npm:6.5.2" - checksum: 24af7b9928ba2141233fba2912876ff100403dba1b08b20c3b490da9ea6c636760445ea2211a079e7dfa882a5cf8f738337b3748c8bdd0f93358fa8881d2db8f + checksum: e9404dc0fc2849245107108ce9ec2766cde3be1b271de0bf1021d049dc5b98d1a2901e67b431ac5509f865420a7ed80b7acb3980099fe1c118a1c5d2e1432ad8 languageName: node linkType: hard @@ -48313,9 +42520,9 @@ __metadata: linkType: hard "queue-microtask@npm:^1.2.2": - version: 1.2.2 - resolution: "queue-microtask@npm:1.2.2" - checksum: 94a7906b4ef8b22c81f0c1fa37db3799496bcefb5edf8a53f60fe2f30d254c672c0f916cd9935d818bb4a52c99eeb431ecfb814a5b7eef780966f92b6eee9c55 + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 languageName: node linkType: hard @@ -48342,19 +42549,6 @@ __metadata: languageName: node linkType: hard -"quote-stream@npm:^1.0.1": - version: 1.0.2 - resolution: "quote-stream@npm:1.0.2" - dependencies: - buffer-equal: 0.0.1 - minimist: ^1.1.3 - through2: ^2.0.0 - bin: - quote-stream: bin/cmd.js - checksum: 73a45ad41000eb23579ecf57d8e3a19795716e988d9279dc4de412f4cf90dd0c5dba792d8d0e65f6c627d3da4e7781104b41af44975614a0f5c94f666bf86468 - languageName: node - linkType: hard - "quoted-printable@npm:^1.0.0": version: 1.0.1 resolution: "quoted-printable@npm:1.0.1" @@ -48367,18 +42561,11 @@ __metadata: linkType: hard "r-json@npm:^1.1.0": - version: 1.2.10 - resolution: "r-json@npm:1.2.10" - checksum: 8ecf97b5a5d53b96f5962aa485411c7e9e406f400e1ebeaf6549c5f88f4cc219b6863423c144c8d27fbf23d5ecb32d9b88795469a08d6f3e9b9ba6c249f3d070 - languageName: node - linkType: hard - -"raf@npm:^3.4.0": - version: 3.4.1 - resolution: "raf@npm:3.4.1" + version: 1.3.0 + resolution: "r-json@npm:1.3.0" dependencies: - performance-now: ^2.1.0 - checksum: 50ba284e481c8185dbcf45fc4618ba3aec580bb50c9121385d5698cb6012fe516d2015b1df6dd407a7b7c58d44be8086108236affbce1861edd6b44637c8cd52 + w-json: 1.3.10 + checksum: 9a2aa9b92a2f4b7932c7eb45175d9c7ff078e322eecaf1ca2c9cdda346ea68e73062004c1b3631a9127e84eedf982fc816110f0c7a1d07c6b2b3344f6d621791 languageName: node linkType: hard @@ -48432,7 +42619,7 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.1, raw-body@npm:^2.2.0": +"raw-body@npm:2.5.1": version: 2.5.1 resolution: "raw-body@npm:2.5.1" dependencies: @@ -48444,7 +42631,7 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.2": +"raw-body@npm:2.5.2, raw-body@npm:^2.2.0": version: 2.5.2 resolution: "raw-body@npm:2.5.2" dependencies: @@ -48493,25 +42680,25 @@ __metadata: linkType: hard "react-animate-height@npm:^2.0.7": - version: 2.0.23 - resolution: "react-animate-height@npm:2.0.23" + version: 2.1.2 + resolution: "react-animate-height@npm:2.1.2" dependencies: classnames: ^2.2.5 prop-types: ^15.6.1 peerDependencies: react: ">=15.6.2" react-dom: ">=15.6.2" - checksum: 280f504b38a98e06323981eaa7752f568d5f761b6d511e21625adc04b0b96222b3a20224c5af9146dff23fb834064437065f834b781ba9377243427a66f1553c + checksum: 56f0db8a8a53a8e115cc9d38ce290aad4bb989e83b573a1b5a01d4b33bddf28810ae6b60cb95cd870fb11bf83eae3ef33ffd4bfd58c578e8c2a28b410e3e9885 languageName: node linkType: hard "react-animate-height@npm:^3.0.4": - version: 3.1.1 - resolution: "react-animate-height@npm:3.1.1" + version: 3.2.3 + resolution: "react-animate-height@npm:3.2.3" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 0f22eb1d9c2d2fd650a462da3db5aabcbde5f62a828053f953e17f7e65118c04acfb035408ce89ee48dc8289fcee8503c7a64e353e5e9568ea7659ab950497ec + checksum: 2289dd7df284d6323a1d06adea112ec3e0d43025ee7029eeccee6dbb05d058fcd6cc4fc9907729ca83466db7d191f68008df409f59cd3e21582846b056b5c8ec languageName: node linkType: hard @@ -48537,14 +42724,14 @@ __metadata: linkType: hard "react-copy-to-clipboard@npm:^5.0.1": - version: 5.0.3 - resolution: "react-copy-to-clipboard@npm:5.0.3" + version: 5.1.0 + resolution: "react-copy-to-clipboard@npm:5.1.0" dependencies: - copy-to-clipboard: ^3 - prop-types: ^15.5.8 + copy-to-clipboard: ^3.3.1 + prop-types: ^15.8.1 peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 - checksum: b10d846ffa283d3de4cccc8e25927cb32d5ab8bf3d21586e1665459859653583971f7db6594176a807d42bce2a443c2c0a094b1657eb75cf04b95dfb64a22d84 + react: ^15.3.0 || 16 || 17 || 18 + checksum: f00a4551b9b63c944a041a6ab46af5ef20ba1106b3bc25173e7ef9bffbfba17a613368682ab8820cfe8d4b3acc5335cd9ce20229145bcc1e6aa8d1db04c512e5 languageName: node linkType: hard @@ -48579,16 +42766,6 @@ __metadata: languageName: node linkType: hard -"react-day-picker@npm:^8.3.5": - version: 8.6.0 - resolution: "react-day-picker@npm:8.6.0" - peerDependencies: - date-fns: ^2.28.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: f5bc2f9b093ddffc5e504b48c52ca6fccd9180bd63d77641312b0df80cdf5285d440b191d6379262798ab40926936144ca216f1c2a1fb78b998105f9e49c6379 - languageName: node - linkType: hard - "react-day-picker@npm:^8.7.1": version: 8.10.1 resolution: "react-day-picker@npm:8.10.1" @@ -48600,12 +42777,12 @@ __metadata: linkType: hard "react-devtools-core@npm:^5.0.0": - version: 5.2.0 - resolution: "react-devtools-core@npm:5.2.0" + version: 5.3.2 + resolution: "react-devtools-core@npm:5.3.2" dependencies: shell-quote: ^1.6.1 ws: ^7 - checksum: 9dbe3f38561fa187a1d518406546a52562cc374e4d2ec495f3a80bee5ed58a16be2e6dedda89d5844e8d981d9adba79fc1a04348a8c0f55c590ff8bf08d4a14f + checksum: 8ae15b34f69ea16a0c6b9966c195aecf61981099409ddfe1950e1686cfae6717f93dc63285bd8f1094cc783de81c3d1e73285a82e774d2b289a17ede93d6589b languageName: node linkType: hard @@ -48619,8 +42796,8 @@ __metadata: linkType: hard "react-docgen@npm:^7.0.0": - version: 7.0.3 - resolution: "react-docgen@npm:7.0.3" + version: 7.1.0 + resolution: "react-docgen@npm:7.1.0" dependencies: "@babel/core": ^7.18.9 "@babel/traverse": ^7.18.9 @@ -48632,7 +42809,7 @@ __metadata: doctrine: ^3.0.0 resolve: ^1.22.1 strip-indent: ^4.0.0 - checksum: f5dbabd16a25b3c424c4962df4b4073d03ca124c3a5c99871f8436e30468854de115f959d0d5f03df77ad8dbe54f21e679fb48ba47bc125d61ae527bc5bcf0bf + checksum: dfdec82a4d695e8b1e31b77eef4ceac0f60e00f13725f0a18886d2737595531e58a54f4dde5db4657276d194597bd5e67a1792ca52eb42a59b67943105f24893 languageName: node linkType: hard @@ -48662,12 +42839,12 @@ __metadata: linkType: hard "react-element-popper@npm:^2.1.6": - version: 2.1.6 - resolution: "react-element-popper@npm:2.1.6" + version: 2.1.7 + resolution: "react-element-popper@npm:2.1.7" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 0140c2f78ea5b4ef92d2711ca66d96513403ffab62063cd3bdfee662d5424ceaf50f08a74da3a5e370b3160b1e345d144afa834f90bea5e06fa23c1682660ac4 + checksum: b1d918c11f9749227fa8d8d5721788f67ff1f1071899e091b61b2e4682c5001d00374791781e161ddf54d0d8f28876dfbbf8295172e5cf0fbe246c941c492066 languageName: node linkType: hard @@ -48693,13 +42870,13 @@ __metadata: linkType: hard "react-fast-compare@npm:^3.0.1": - version: 3.2.0 - resolution: "react-fast-compare@npm:3.2.0" - checksum: 8ef272c825ae329f61633ce4ce7f15aa5b84e5214d88bc0823880236e03e985a13195befa2c7a4eda7db3b017dc7985729152d88445823f652403cf36c2b86aa + version: 3.2.2 + resolution: "react-fast-compare@npm:3.2.2" + checksum: 2071415b4f76a3e6b55c84611c4d24dcb12ffc85811a2840b5a3f1ff2d1a99be1020d9437ee7c6e024c9f4cbb84ceb35e48cf84f28fcb00265ad2dfdd3947704 languageName: node linkType: hard -"react-focus-lock@npm:2.9.4, react-focus-lock@npm:^2.9.1": +"react-focus-lock@npm:2.9.4": version: 2.9.4 resolution: "react-focus-lock@npm:2.9.4" dependencies: @@ -48719,6 +42896,26 @@ __metadata: languageName: node linkType: hard +"react-focus-lock@npm:^2.9.1": + version: 2.13.2 + resolution: "react-focus-lock@npm:2.13.2" + dependencies: + "@babel/runtime": ^7.0.0 + focus-lock: ^1.3.5 + prop-types: ^15.6.2 + react-clientside-effect: ^1.2.6 + use-callback-ref: ^1.3.2 + use-sidecar: ^1.1.2 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 7ddc64f5987dca606460178efffc125ee6a357992965b72567bdde1976d618cef21bbdb0745b04d2b31367a5c61b4151271f43d493a0a6bd6978dd67b6b9d56a + languageName: node + linkType: hard + "react-hook-form@npm:7.43.3": version: 7.43.3 resolution: "react-hook-form@npm:7.43.3" @@ -48728,13 +42925,13 @@ __metadata: languageName: node linkType: hard -"react-hotkeys-hook@npm:^4.4.1": - version: 4.5.0 - resolution: "react-hotkeys-hook@npm:4.5.0" +"react-hotkeys-hook@npm:^4.5.0": + version: 4.5.1 + resolution: "react-hotkeys-hook@npm:4.5.1" peerDependencies: react: ">=16.8.1" react-dom: ">=16.8.1" - checksum: 38e331c729606ad427c852aa45bfa43fe6090c35bf7c98f202599680b81f2614d4a4f565c11c9f4cf41ccc497c1e8001fff0ad2d3a7af78a2cc8e251e30143e0 + checksum: 106c78f9211cf327e2c85aa047be2c1b59477173e31da421c8ab045340247ae23a017910a5751bf4da2caf8d5da635c9119857041a39c0152cca0752ff12b814 languageName: node linkType: hard @@ -48847,21 +43044,14 @@ __metadata: languageName: node linkType: hard -"react-is@npm:18.3.1": +"react-is@npm:18.3.1, react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.2.0": version: 18.3.1 resolution: "react-is@npm:18.3.1" checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 languageName: node linkType: hard -"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0": - version: 18.0.0 - resolution: "react-is@npm:18.0.0" - checksum: d38f6afee4d8d791cdd69c715841c01a503c9b06da6158e0893447cea6ba50cd262dca9bde84127720cf44fd05c58185eafc32accace4bb2deb03b3cdbeb6b6b - languageName: node - linkType: hard - -"react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.6": +"react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.4, react-is@npm:^16.8.6": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -48875,13 +43065,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0, react-is@npm:^18.2.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e - languageName: node - linkType: hard - "react-keyed-flatten-children@npm:1.2.0": version: 1.2.0 resolution: "react-keyed-flatten-children@npm:1.2.0" @@ -48933,7 +43116,7 @@ __metadata: languageName: node linkType: hard -"react-modal@npm:3.15.1, react-modal@npm:^3.11.2": +"react-modal@npm:3.15.1": version: 3.15.1 resolution: "react-modal@npm:3.15.1" dependencies: @@ -48948,7 +43131,7 @@ __metadata: languageName: node linkType: hard -"react-modal@npm:^3.16.1": +"react-modal@npm:^3.11.2, react-modal@npm:^3.16.1": version: 3.16.1 resolution: "react-modal@npm:3.16.1" dependencies: @@ -49369,12 +43552,12 @@ __metadata: linkType: hard "react-onclickoutside@npm:^6.12.2": - version: 6.12.2 - resolution: "react-onclickoutside@npm:6.12.2" + version: 6.13.1 + resolution: "react-onclickoutside@npm:6.13.1" peerDependencies: react: ^15.5.x || ^16.x || ^17.x || ^18.x react-dom: ^15.5.x || ^16.x || ^17.x || ^18.x - checksum: a0c7f4fbcf84e00d50b3fc18208e5fdc4e97b17daf910f176659e079038a560d2e299955804d20e6ca2bf375404d03fdb865dc7f5f85cab3e60b493be4375e77 + checksum: 6c5727bfcd6e0ecc1fd83ac865a23382b7784aa54e3d0cb67520a53f9d02a1d312b9493d150fb8fa2f912b6cf4b23b228809c2513096ef6e53c7553162c048c7 languageName: node linkType: hard @@ -49401,7 +43584,7 @@ __metadata: languageName: node linkType: hard -"react-popper@npm:2.3.0, react-popper@npm:^2.2.5, react-popper@npm:^2.3.0": +"react-popper@npm:2.3.0, react-popper@npm:^2.2.3, react-popper@npm:^2.2.5, react-popper@npm:^2.3.0": version: 2.3.0 resolution: "react-popper@npm:2.3.0" dependencies: @@ -49415,19 +43598,6 @@ __metadata: languageName: node linkType: hard -"react-popper@npm:^2.2.3": - version: 2.2.5 - resolution: "react-popper@npm:2.2.5" - dependencies: - react-fast-compare: ^3.0.1 - warning: ^4.0.2 - peerDependencies: - "@popperjs/core": ^2.0.0 - react: ^16.8.0 || ^17 - checksum: 915fcf08e1da4fd48a200074fcdd936f601ee2173f1e730cfed8a54fd47716aa8bf9cce2392463e3bcbe64a096d0baf463809ed2874b94d3a9d430ae6d817b5d - languageName: node - linkType: hard - "react-refresh@npm:^0.14.0, react-refresh@npm:^0.14.2": version: 0.14.2 resolution: "react-refresh@npm:0.14.2" @@ -49436,8 +43606,8 @@ __metadata: linkType: hard "react-remove-scroll-bar@npm:^2.3.3, react-remove-scroll-bar@npm:^2.3.4": - version: 2.3.4 - resolution: "react-remove-scroll-bar@npm:2.3.4" + version: 2.3.6 + resolution: "react-remove-scroll-bar@npm:2.3.6" dependencies: react-style-singleton: ^2.2.1 tslib: ^2.0.0 @@ -49447,7 +43617,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: b5ce5f2f98d65c97a3e975823ae4043a4ba2a3b63b5ba284b887e7853f051b5cd6afb74abde6d57b421931c52f2e1fdbb625dc858b1cb5a32c27c14ab85649d4 + checksum: e793fe110e2ea60d5724d0b60f09de1f6cd1b080df00df9e68bb9a1b985895830e703194647059fdc22402a67a89b7673a5260773b89bcd98031fd99bc91aefa languageName: node linkType: hard @@ -49490,17 +43660,16 @@ __metadata: linkType: hard "react-resize-detector@npm:^6.6.3": - version: 6.7.4 - resolution: "react-resize-detector@npm:6.7.4" + version: 6.7.8 + resolution: "react-resize-detector@npm:6.7.8" dependencies: - "@types/resize-observer-browser": ^0.1.5 - lodash.debounce: ^4.0.8 - lodash.throttle: ^4.1.1 + "@types/resize-observer-browser": ^0.1.6 + lodash: ^4.17.21 resize-observer-polyfill: ^1.5.1 peerDependencies: react: ^16.0.0 || ^17.0.0 react-dom: ^16.0.0 || ^17.0.0 - checksum: 6b97ea8e610a4d4c196d9c55700d5b2cc54de1e2d87cd20e28351ce0896e8104277ccace836d8d9bac8d3dc967f876d143543d2ec0bea077ab9450a3d61db068 + checksum: dc8acbe216f70a60466d55d4f47c1468fecf074544a1e07234461b36eefed2b222f6e550c91e7ae02983e2842308d2a48ba8383029efb5d27ac749c48e3a09ae languageName: node linkType: hard @@ -49561,17 +43730,16 @@ __metadata: linkType: hard "react-smooth@npm:^2.0.0": - version: 2.0.0 - resolution: "react-smooth@npm:2.0.0" + version: 2.0.5 + resolution: "react-smooth@npm:2.0.5" dependencies: - fast-equals: ^2.0.0 - raf: ^3.4.0 + fast-equals: ^5.0.0 react-transition-group: 2.9.0 peerDependencies: prop-types: ^15.6.0 - react: ^15.0.0 || ^16.0.0 || ^17.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 4eff3fb93067b538e046df2c56a2f99b25f4c3a2aafc1c59707d1a0150f7f0afab408afdc1a47ffa3556adbdb5c915d6035a9a28da878e68771dce7568cc6f69 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 914c17f741e8b533ff6e3d5e3285aea0625cdd0f98e04202d01351f9516dbdc0a0e297dc22cc2377d6916fb819da8d4ed999c0314a4c186592ca51870012e6f7 languageName: node linkType: hard @@ -49684,8 +43852,8 @@ __metadata: linkType: hard "react-transition-group@npm:^4.3.0, react-transition-group@npm:^4.4.1": - version: 4.4.1 - resolution: "react-transition-group@npm:4.4.1" + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" dependencies: "@babel/runtime": ^7.5.5 dom-helpers: ^5.0.1 @@ -49694,7 +43862,7 @@ __metadata: peerDependencies: react: ">=16.6.0" react-dom: ">=16.6.0" - checksum: 0bcd8af483709832e318dcef84c26ebddeb866bf4f58010286367ef0c1e7c5106e00cfc65688b9102414cb3d572c63909c2eb7ea972b4420fc70a78c10b6e8ad + checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1 languageName: node linkType: hard @@ -49857,22 +44025,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.5, readable-stream@npm:~2.3.3, readable-stream@npm:~2.3.6": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 - languageName: node - linkType: hard - -"readable-stream@npm:^2.3.8": +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -49887,18 +44040,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.0, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 - languageName: node - linkType: hard - -"readable-stream@npm:^3.0.6, readable-stream@npm:^3.6.2": +"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -49909,12 +44051,16 @@ __metadata: languageName: node linkType: hard -"readdir-glob@npm:^1.0.0": - version: 1.1.1 - resolution: "readdir-glob@npm:1.1.1" +"readable-stream@npm:^4.5.2": + version: 4.5.2 + resolution: "readable-stream@npm:4.5.2" dependencies: - minimatch: ^3.0.4 - checksum: 8dc4ff606aa9ac8f6ac628dfad918aed6514c8b427922928f2ef380a1be106d5b6f1d106af34607955ad504f89f39d83a9b42c5316ed8b96b5f75391e33a6afc + abort-controller: ^3.0.0 + buffer: ^6.0.3 + events: ^3.3.0 + process: ^0.11.10 + string_decoder: ^1.3.0 + checksum: c4030ccff010b83e4f33289c535f7830190773e274b3fcb6e2541475070bdfd69c98001c3b0cb78763fc00c8b62f514d96c2b10a8bd35d5ce45203a25fa1d33a languageName: node linkType: hard @@ -49939,12 +44085,10 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.5.0": - version: 3.5.0 - resolution: "readdirp@npm:3.5.0" - dependencies: - picomatch: ^2.2.1 - checksum: 6b1a9341e295e15d4fb40c010216cbcb6266587cd0b3ce7defabd66fa1b4e35f9fba3d64c2187fd38fadd01ccbfc5f1b33fdfb1da63b3cbf66224b7c6d75ce5a +"readdirp@npm:^4.0.1": + version: 4.0.2 + resolution: "readdirp@npm:4.0.2" + checksum: 309376e717f94fb7eb61bec21e2603243a9e2420cd2e9bf94ddf026aefea0d7377ed1a62f016d33265682e44908049a55c3cfc2307450a1421654ea008489b39 languageName: node linkType: hard @@ -50014,14 +44158,14 @@ __metadata: linkType: hard "recast@npm:^0.20.4": - version: 0.20.4 - resolution: "recast@npm:0.20.4" + version: 0.20.5 + resolution: "recast@npm:0.20.5" dependencies: ast-types: 0.14.2 esprima: ~4.0.0 source-map: ~0.6.1 tslib: ^2.0.1 - checksum: d858095cbd89908e401c5f51734c410a3a80b7dfcc099fe2e4b1ec4cf8b6f046d24830628edad5047cc3ff3cbed9828dc90271a81f5a243a4722d0a8078e6d57 + checksum: 14c35115cd9965950724cb2968f069a247fa79ce890643ab6dc3795c705b363f7b92a45238e9f765387c306763be9955f72047bb9d15b5d60b0a55f9e7912d5a languageName: node linkType: hard @@ -50038,15 +44182,15 @@ __metadata: linkType: hard "recast@npm:^0.23.1": - version: 0.23.2 - resolution: "recast@npm:0.23.2" + version: 0.23.9 + resolution: "recast@npm:0.23.9" dependencies: - assert: ^2.0.0 ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 + tiny-invariant: ^1.3.3 tslib: ^2.0.1 - checksum: 04c2617cb04c4d02a5c9e1bb75b8e7afc21d1ba7babce25303732f035c3d4b2f945d727f34c3976223d800592ea31e6641cfd33700a8699c02025040174af0b6 + checksum: be8e896a46b24e30fbeafcd111ff3beaf2b5532d241c199f833fe1c18e89f695b2704cf83f3006fa96a785851019031de0de50bd3e0fd7bb114be18bf2cad900 languageName: node linkType: hard @@ -50200,13 +44344,20 @@ __metadata: languageName: node linkType: hard -"reflect-metadata@npm:0.1.13, reflect-metadata@npm:^0.1.13": +"reflect-metadata@npm:0.1.13": version: 0.1.13 resolution: "reflect-metadata@npm:0.1.13" checksum: 798d379a7b6f6455501145419505c97dd11cbc23857a386add2b9ef15963ccf15a48d9d15507afe01d4cd74116df8a213247200bac00320bd7c11ddeaa5e8fb4 languageName: node linkType: hard +"reflect-metadata@npm:^0.1.13": + version: 0.1.14 + resolution: "reflect-metadata@npm:0.1.14" + checksum: 155ad339319cec3c2d9d84719f730f8b6a6cd2a074733ec29dbae6c89d48a2914c7d07a2350212594f3aae160fa4da4f903e6512f27ceaf968443a7c692bcad0 + languageName: node + linkType: hard + "reflect.getprototypeof@npm:^1.0.4": version: 1.0.6 resolution: "reflect.getprototypeof@npm:1.0.6" @@ -50229,21 +44380,12 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.0.1": - version: 10.0.1 - resolution: "regenerate-unicode-properties@npm:10.0.1" - dependencies: - regenerate: ^1.4.2 - checksum: 1b638b7087d8143e5be3e20e2cda197ea0440fa0bc2cc49646b2f50c5a2b1acdc54b21e4215805a5a2dd487c686b2291accd5ad00619534098d2667e76247754 - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" +"regenerate-unicode-properties@npm:^10.2.0": + version: 10.2.0 + resolution: "regenerate-unicode-properties@npm:10.2.0" dependencies: regenerate: ^1.4.2 - checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 + checksum: d5c5fc13f8b8d7e16e791637a4bfef741f8d70e267d51845ee7d5404a32fa14c75b181c4efba33e4bff8b0000a2f13e9773593713dfe5b66597df4259275ce63 languageName: node linkType: hard @@ -50254,7 +44396,7 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:0.13.7, regenerator-runtime@npm:^0.13.4": +"regenerator-runtime@npm:0.13.7": version: 0.13.7 resolution: "regenerator-runtime@npm:0.13.7" checksum: 52b66e6669152c0b1bccd95c8e11aabbfe67bb97bdf00e223bdf723b0f0052d4da5c02001d4c4bef576bdc5bcdc38a20496d1b5363b65c950c8434ed5071d9e0 @@ -50268,7 +44410,7 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.2": +"regenerator-runtime@npm:^0.13.2": version: 0.13.11 resolution: "regenerator-runtime@npm:0.13.11" checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 @@ -50276,18 +44418,9 @@ __metadata: linkType: hard "regenerator-runtime@npm:^0.14.0": - version: 0.14.0 - resolution: "regenerator-runtime@npm:0.14.0" - checksum: 1c977ad82a82a4412e4f639d65d22be376d3ebdd30da2c003eeafdaaacd03fc00c2320f18120007ee700900979284fc78a9f00da7fb593f6e6eeebc673fba9a3 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.15.1": - version: 0.15.1 - resolution: "regenerator-transform@npm:0.15.1" - dependencies: - "@babel/runtime": ^7.8.4 - checksum: 2d15bdeadbbfb1d12c93f5775493d85874dbe1d405bec323da5c61ec6e701bc9eea36167483e1a5e752de9b2df59ab9a2dfff6bf3784f2b28af2279a673d29a4 + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 9f57c93277b5585d3c83b0cf76be47b473ae8c6d9142a46ce8b0291a04bb2cf902059f0f8445dcabb3fb7378e5fe4bb4ea1e008876343d42e46d3b484534ce38 languageName: node linkType: hard @@ -50307,94 +44440,47 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.3.0, regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" +"regexp.prototype.flags@npm:^1.3.0, regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.5.0": - version: 1.5.1 - resolution: "regexp.prototype.flags@npm:1.5.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - set-function-name: ^2.0.0 - checksum: 869edff00288442f8d7fa4c9327f91d85f3b3acf8cbbef9ea7a220345cf23e9241b6def9263d2c1ebcf3a316b0aa52ad26a43a84aa02baca3381717b3e307f47 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.5.2": - version: 1.5.2 - resolution: "regexp.prototype.flags@npm:1.5.2" - dependencies: - call-bind: ^1.0.6 + call-bind: ^1.0.7 define-properties: ^1.2.1 es-errors: ^1.3.0 - set-function-name: ^2.0.1 - checksum: d7f333667d5c564e2d7a97c56c3075d64c722c9bb51b2b4df6822b2e8096d623a5e63088fb4c83df919b6951ef8113841de8b47de7224872fa6838bc5d8a7d64 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.0.1": - version: 5.0.1 - resolution: "regexpu-core@npm:5.0.1" - dependencies: - regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.0.1 - regjsgen: ^0.6.0 - regjsparser: ^0.8.2 - unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.0.0 - checksum: 6151a9700dad512fadb5564ad23246d54c880eb9417efa5e5c3658b910c1ff894d622dfd159af2ed527ffd44751bfe98682ae06c717155c254d8e2b4bab62785 + set-function-name: ^2.0.2 + checksum: 83ff0705b837f7cb6d664010a11642250f36d3f642263dd0f3bdfe8f150261aa7b26b50ee97f21c1da30ef82a580bb5afedbef5f45639d69edaafbeac9bbb0ed languageName: node linkType: hard -"regexpu-core@npm:^5.3.1": - version: 5.3.2 - resolution: "regexpu-core@npm:5.3.2" +"regexpu-core@npm:^6.1.1": + version: 6.1.1 + resolution: "regexpu-core@npm:6.1.1" dependencies: - "@babel/regjsgen": ^0.8.0 regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.1.0 - regjsparser: ^0.9.1 + regenerate-unicode-properties: ^10.2.0 + regjsgen: ^0.8.0 + regjsparser: ^0.11.0 unicode-match-property-ecmascript: ^2.0.0 unicode-match-property-value-ecmascript: ^2.1.0 - checksum: 95bb97088419f5396e07769b7de96f995f58137ad75fac5811fb5fe53737766dfff35d66a0ee66babb1eb55386ef981feaef392f9df6d671f3c124812ba24da2 + checksum: ed8e3784e81b816b237313688f28b4695d30d4e0f823dfdf130fd4313c629ac6ec67650563867a6ca9a2435f33e79f3a5001c651aee52791e346213a948de0ff languageName: node linkType: hard -"regjsgen@npm:^0.6.0": - version: 0.6.0 - resolution: "regjsgen@npm:0.6.0" - checksum: c5158ebd735e75074e41292ade1ff05d85566d205426cc61501e360c450a63baced8512ee3ae238e5c0a0e42969563c7875b08fa69d6f0402daf36bcb3e4d348 - languageName: node - linkType: hard - -"regjsparser@npm:^0.8.2": - version: 0.8.4 - resolution: "regjsparser@npm:0.8.4" - dependencies: - jsesc: ~0.5.0 - bin: - regjsparser: bin/parser - checksum: d069b932491761cda127ce11f6bd2729c3b1b394a35200ec33f1199e937423db28ceb86cf33f0a97c76ecd7c0f8db996476579eaf0d80a1f74c1934f4ca8b27a +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: a1d925ff14a4b2be774e45775ee6b33b256f89c42d480e6d85152d2133f18bd3d6af662161b226fa57466f7efec367eaf7ccd2a58c0ec2a1306667ba2ad07b0d languageName: node linkType: hard -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" +"regjsparser@npm:^0.11.0": + version: 0.11.1 + resolution: "regjsparser@npm:0.11.1" dependencies: - jsesc: ~0.5.0 + jsesc: ~3.0.2 bin: regjsparser: bin/parser - checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc + checksum: 231d60810ca12a760393d65d149aa9501ea28b02c27a61c551b4f9162fe3cf48b289423515b73b1aea52949346e78c76cd552ac7169817d31f34df348db90fb4 languageName: node linkType: hard @@ -50505,13 +44591,13 @@ __metadata: linkType: hard "remark-slug@npm:^6.0.0": - version: 6.0.0 - resolution: "remark-slug@npm:6.0.0" + version: 6.1.0 + resolution: "remark-slug@npm:6.1.0" dependencies: github-slugger: ^1.0.0 mdast-util-to-string: ^1.0.0 unist-util-visit: ^2.0.0 - checksum: d85614a0fdd7a6023f5ffae90411532d6715321153b02aab02f5d0165e116edb9719f78b207bfd74934aca6645ed551c42368a7efb6fc3b07d2bda15fe8602fb + checksum: 81fff0dcfaf6d6117ef1293bb1d26c3e25483d99c65c22434298eed93583a89ea5d7b94063d9a7f47c0647a708ce84f00ff62d274503f248feec03c344cabb20 languageName: node linkType: hard @@ -50581,34 +44667,6 @@ __metadata: languageName: node linkType: hard -"request@npm:^2.87.0": - version: 2.88.2 - resolution: "request@npm:2.88.2" - dependencies: - aws-sign2: ~0.7.0 - aws4: ^1.8.0 - caseless: ~0.12.0 - combined-stream: ~1.0.6 - extend: ~3.0.2 - forever-agent: ~0.6.1 - form-data: ~2.3.2 - har-validator: ~5.1.3 - http-signature: ~1.2.0 - is-typedarray: ~1.0.0 - isstream: ~0.1.2 - json-stringify-safe: ~5.0.1 - mime-types: ~2.1.19 - oauth-sign: ~0.9.0 - performance-now: ^2.1.0 - qs: ~6.5.2 - safe-buffer: ^5.1.2 - tough-cookie: ~2.5.0 - tunnel-agent: ^0.6.0 - uuid: ^3.3.2 - checksum: 4e112c087f6eabe7327869da2417e9d28fcd0910419edd2eb17b6acfc4bfa1dad61954525949c228705805882d8a98a86a0ea12d7f739c01ee92af7062996983 - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -50746,13 +44804,27 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:1.1.0, resolve.exports@npm:^1.1.0": +"resolve-workspace-root@npm:^2.0.0": + version: 2.0.0 + resolution: "resolve-workspace-root@npm:2.0.0" + checksum: c7222391a35ecb3514fa04d753334a86f984d8ffe06ce87506582c4c5671ac608273b8f5e6faa2055be6e196785bf751ede9a48d484de53889d721b814c097ab + languageName: node + linkType: hard + +"resolve.exports@npm:1.1.0": version: 1.1.0 resolution: "resolve.exports@npm:1.1.0" checksum: 52865af8edb088f6c7759a328584a5de6b226754f004b742523adcfe398cfbc4559515104bc2ae87b8e78b1e4de46c9baec400b3fb1f7d517b86d2d48a098a2d languageName: node linkType: hard +"resolve.exports@npm:^1.1.0": + version: 1.1.1 + resolution: "resolve.exports@npm:1.1.1" + checksum: 485aa10082eb388a569d696e17ad7b16f4186efc97dd34eadd029d95b811f21ffee13b1b733198bb4584dbb3cb296aa6f141835221fb7613b9606b84f1386655 + languageName: node + linkType: hard + "resolve.exports@npm:^2.0.0, resolve.exports@npm:^2.0.2": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" @@ -50760,46 +44832,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.5, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0": - version: 1.22.0 - resolution: "resolve@npm:1.22.0" - dependencies: - is-core-module: ^2.8.1 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: a2d14cc437b3a23996f8c7367eee5c7cf8149c586b07ca2ae00e96581ce59455555a1190be9aa92154785cf9f2042646c200d0e00e0bbd2b8a995a93a0ed3e4e - languageName: node - linkType: hard - -"resolve@npm:^1.1.7, resolve@npm:^1.22.1": - version: 1.22.3 - resolution: "resolve@npm:1.22.3" - dependencies: - is-core-module: ^2.12.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 - languageName: node - linkType: hard - -"resolve@npm:^1.19.0": - version: 1.22.4 - resolution: "resolve@npm:1.22.4" - dependencies: - is-core-module: ^2.13.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124 - languageName: node - linkType: hard - -"resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8": +"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -50812,20 +44845,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^2.0.0-next.4": - version: 2.0.0-next.4 - resolution: "resolve@npm:2.0.0-next.4" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: c438ac9a650f2030fd074219d7f12ceb983b475da2d89ad3d6dd05fbf6b7a0a8cd37d4d10b43cb1f632bc19f22246ab7f36ebda54d84a29bfb2910a0680906d3 - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.5": +"resolve@npm:^2.0.0-next.4, resolve@npm:^2.0.0-next.5": version: 2.0.0-next.5 resolution: "resolve@npm:2.0.0-next.5" dependencies: @@ -50847,46 +44867,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.5#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>": - version: 1.22.0 - resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin<compat/resolve>::version=1.22.0&hash=07638b" - dependencies: - is-core-module: ^2.8.1 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: c79ecaea36c872ee4a79e3db0d3d4160b593f2ca16e031d8283735acd01715a203607e9ded3f91f68899c2937fa0d49390cddbe0fb2852629212f3cda283f4a7 - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.1.7#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>": - version: 1.22.3 - resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin<compat/resolve>::version=1.22.3&hash=07638b" - dependencies: - is-core-module: ^2.12.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>": - version: 1.22.4 - resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin<compat/resolve>::version=1.22.4&hash=07638b" - dependencies: - is-core-module: ^2.13.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.22.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.4#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.8#~builtin<compat/resolve>": +"resolve@patch:resolve@^1.1.7#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.4#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.8#~builtin<compat/resolve>": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin<compat/resolve>::version=1.22.8&hash=07638b" dependencies: @@ -50899,20 +44880,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^2.0.0-next.4#~builtin<compat/resolve>": - version: 2.0.0-next.4 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin<compat/resolve>::version=2.0.0-next.4&hash=07638b" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 4bf9f4f8a458607af90518ff73c67a4bc1a38b5a23fef2bb0ccbd45e8be89820a1639b637b0ba377eb2be9eedfb1739a84cde24fe4cd670c8207d8fea922b011 - languageName: node - linkType: hard - -"resolve@patch:resolve@^2.0.0-next.5#~builtin<compat/resolve>": +"resolve@patch:resolve@^2.0.0-next.4#~builtin<compat/resolve>, resolve@patch:resolve@^2.0.0-next.5#~builtin<compat/resolve>": version: 2.0.0-next.5 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#~builtin<compat/resolve>::version=2.0.0-next.5&hash=07638b" dependencies: @@ -50942,11 +44910,11 @@ __metadata: linkType: hard "responselike@npm:^2.0.0": - version: 2.0.0 - resolution: "responselike@npm:2.0.0" + version: 2.0.1 + resolution: "responselike@npm:2.0.1" dependencies: lowercase-keys: ^2.0.0 - checksum: 6a4d32c37d4e88678ae0a9d69fcc90aafa15b1a3eab455bd65c06af3c6c4976afc47d07a0e5a60d277ab041a465f43bf0a581e0d7ab33786e7a7741573f2e487 + checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a languageName: node linkType: hard @@ -50988,9 +44956,9 @@ __metadata: linkType: hard "restructure@npm:^3.0.0": - version: 3.0.0 - resolution: "restructure@npm:3.0.0" - checksum: 4525b5414ec0f2dc4ad66b5fbcebbc2f49e7ad778c30ce45b8b8f776af67e2c0752eb309748d7a597add6fc064e688df2662c834ffeaaea580af6d43087dc7d3 + version: 3.0.2 + resolution: "restructure@npm:3.0.2" + checksum: f1c45d249fe1c5d43286bd0d209fefe3db556726c3eb8eb648116757e065a6f0dba2b80bf62bcc5a7681dfe888b6ace1bb6e446ab1535eb5ca7b257207ebc817 languageName: node linkType: hard @@ -51040,13 +45008,13 @@ __metadata: linkType: hard "rfdc@npm:^1.3.0": - version: 1.3.0 - resolution: "rfdc@npm:1.3.0" - checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 + version: 1.4.1 + resolution: "rfdc@npm:1.4.1" + checksum: 3b05bd55062c1d78aaabfcea43840cdf7e12099968f368e9a4c3936beb744adb41cbdb315eac6d4d8c6623005d6f87fdf16d8a10e1ff3722e84afea7281c8d13 languageName: node linkType: hard -"rimraf@npm:^2.6.1, rimraf@npm:^2.6.2, rimraf@npm:^2.7.1": +"rimraf@npm:^2.6.1, rimraf@npm:^2.7.1": version: 2.7.1 resolution: "rimraf@npm:2.7.1" dependencies: @@ -51057,7 +45025,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -51068,17 +45036,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:~2.4.0": - version: 2.4.5 - resolution: "rimraf@npm:2.4.5" - dependencies: - glob: ^6.0.1 - bin: - rimraf: ./bin.js - checksum: 036793b4055d65344ad7bea73c3f4095640af7455478fe56c19783619463e6bb4374ab3556b9e6d4d6d3dd210eb677b0955ece38813e734c294fd2687201151d - languageName: node - linkType: hard - "rimraf@npm:~2.6.2": version: 2.6.3 resolution: "rimraf@npm:2.6.3" @@ -51100,6 +45057,69 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.20.0": + version: 4.24.0 + resolution: "rollup@npm:4.24.0" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.24.0 + "@rollup/rollup-android-arm64": 4.24.0 + "@rollup/rollup-darwin-arm64": 4.24.0 + "@rollup/rollup-darwin-x64": 4.24.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.24.0 + "@rollup/rollup-linux-arm-musleabihf": 4.24.0 + "@rollup/rollup-linux-arm64-gnu": 4.24.0 + "@rollup/rollup-linux-arm64-musl": 4.24.0 + "@rollup/rollup-linux-powerpc64le-gnu": 4.24.0 + "@rollup/rollup-linux-riscv64-gnu": 4.24.0 + "@rollup/rollup-linux-s390x-gnu": 4.24.0 + "@rollup/rollup-linux-x64-gnu": 4.24.0 + "@rollup/rollup-linux-x64-musl": 4.24.0 + "@rollup/rollup-win32-arm64-msvc": 4.24.0 + "@rollup/rollup-win32-ia32-msvc": 4.24.0 + "@rollup/rollup-win32-x64-msvc": 4.24.0 + "@types/estree": 1.0.6 + fsevents: ~2.3.2 + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: b7e915b0cc43749c2c71255ff58858496460b1a75148db2abecc8e9496af83f488517768593826715f610e20e480a5ae7f1132a1408eb1d364830d6b239325cf + languageName: node + linkType: hard + "rosetta@npm:1.0.0": version: 1.0.0 resolution: "rosetta@npm:1.0.0" @@ -51117,21 +45137,12 @@ __metadata: languageName: node linkType: hard -"rtl-css-js@npm:^1.14.0": - version: 1.14.0 - resolution: "rtl-css-js@npm:1.14.0" +"rtl-css-js@npm:^1.16.1": + version: 1.16.1 + resolution: "rtl-css-js@npm:1.16.1" dependencies: "@babel/runtime": ^7.1.2 - checksum: 46e7f52058d7ac2dc7a6271f6858ce2e05f64be4d6a3eae712b52bf29c4de97fda8e30490c425bed620db87cc0b8a3ab4a457489ab0dba0868724bac27e6f893 - languageName: node - linkType: hard - -"run-applescript@npm:^5.0.0": - version: 5.0.0 - resolution: "run-applescript@npm:5.0.0" - dependencies: - execa: ^5.0.0 - checksum: d00c2dbfa5b2d774de7451194b8b125f40f65fc183de7d9dcae97f57f59433586d3c39b9001e111c38bfa24c3436c99df1bb4066a2a0c90d39a8c4cd6889af77 + checksum: 7d9ab942098eee565784ccf957f6b7dfa78ea1eec7c6bffedc6641575d274189e90752537c7bdba1f43ae6534648144f467fd6d581527455ba626a4300e62c7a languageName: node linkType: hard @@ -51152,9 +45163,9 @@ __metadata: linkType: hard "runtypes@npm:^5.0.1": - version: 5.2.0 - resolution: "runtypes@npm:5.2.0" - checksum: 5379bd67995328f68d2655238f84fbebb9876e7a57d991c2b3c1214988d32167d611910c70cf863be1fbb3a7011ea5904ae9201d3bbf2965d1ae2bd8b92f4abc + version: 5.1.0 + resolution: "runtypes@npm:5.1.0" + checksum: b5baf6eeb560b72bf90bd9629d09df85ec687eb054d80c3c1f2f0cb2a3bb796100d804a4a9b97feb9f3963a72e2ba5168e108e0f8d199adbf2dd9d35416345a5 languageName: node linkType: hard @@ -51181,7 +45192,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:*, rxjs@npm:7.8.1, rxjs@npm:^7.8.0": +"rxjs@npm:*, rxjs@npm:7.8.1, rxjs@npm:^7.5.1, rxjs@npm:^7.5.5, rxjs@npm:^7.8.0": version: 7.8.1 resolution: "rxjs@npm:7.8.1" dependencies: @@ -51199,15 +45210,6 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^7.5.5": - version: 7.5.7 - resolution: "rxjs@npm:7.5.7" - dependencies: - tslib: ^2.1.0 - checksum: edabcdb73b0f7e0f5f6e05c2077aff8c52222ac939069729704357d6406438acca831c24210db320aba269e86dbe1a400f3769c89101791885121a342fb15d9c - languageName: node - linkType: hard - "sade@npm:^1.7.3": version: 1.8.1 resolution: "sade@npm:1.8.1" @@ -51217,7 +45219,7 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.2": +"safe-array-concat@npm:^1.0.0, safe-array-concat@npm:^1.1.2": version: 1.1.2 resolution: "safe-array-concat@npm:1.1.2" dependencies: @@ -51250,24 +45252,6 @@ __metadata: languageName: node linkType: hard -"safe-json-stringify@npm:~1": - version: 1.2.0 - resolution: "safe-json-stringify@npm:1.2.0" - checksum: 5bb32db6d6a3ceb3752df51f4043a412419cd3d4fcd5680a865dfa34cd7e575ba659c077d13f52981ced084061df9c75c7fb12e391584d4264e6914c1cd3d216 - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-regex: ^1.1.4 - checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 - languageName: node - linkType: hard - "safe-regex-test@npm:^1.0.3": version: 1.0.3 resolution: "safe-regex-test@npm:1.0.3" @@ -51280,9 +45264,9 @@ __metadata: linkType: hard "safe-stable-stringify@npm:^2.3.1": - version: 2.3.1 - resolution: "safe-stable-stringify@npm:2.3.1" - checksum: a0a0bad0294c3e2a9d1bf3cf2b1096dfb83c162d09a5e4891e488cce082120bd69161d2a92aae7fc48255290f17700decae9c89a07fe139794e61b5c8b411377 + version: 2.5.0 + resolution: "safe-stable-stringify@npm:2.5.0" + checksum: d3ce103ed43c6c2f523e39607208bfb1c73aa48179fc5be53c3aa97c118390bffd4d55e012f5393b982b65eb3e0ee954dd57b547930d3f242b0053dcdb923d17 languageName: node linkType: hard @@ -51333,15 +45317,16 @@ __metadata: linkType: hard "sass@npm:^1.42.1": - version: 1.63.2 - resolution: "sass@npm:1.63.2" + version: 1.80.4 + resolution: "sass@npm:1.80.4" dependencies: - chokidar: ">=3.0.0 <4.0.0" + "@parcel/watcher": ^2.4.1 + chokidar: ^4.0.0 immutable: ^4.0.0 source-map-js: ">=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 7ffc2b789aeae4637f09195f7d24e149fc590e2c69cb209c64fdf0ed0d7f09da28097c48fda7f36d257aeb7dd8e16a9ff77b50cf78830afe6f996e6dcd957280 + checksum: 83278e922a5972c2643500044935d4989204b01500cf19e0abfa275462a7b0139f42b2a848ad82c28c756fbcd5ada32aa8e92ce3fb17814dff195e8d89193531 languageName: node linkType: hard @@ -51352,7 +45337,14 @@ __metadata: languageName: node linkType: hard -"sax@npm:>=0.6, sax@npm:>=0.6.0, sax@npm:^1.2.4, sax@npm:~1.2.4": +"sax@npm:>=0.6, sax@npm:>=0.6.0, sax@npm:^1.2.4": + version: 1.4.1 + resolution: "sax@npm:1.4.1" + checksum: 3ad64df16b743f0f2eb7c38ced9692a6d924f1cd07bbe45c39576c2cf50de8290d9d04e7b2228f924c7d05fecc4ec5cf651423278e0c7b63d260c387ef3af84a + languageName: node + linkType: hard + +"sax@npm:~1.2.4": version: 1.2.4 resolution: "sax@npm:1.2.4" checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe @@ -51396,16 +45388,7 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.0": - version: 0.23.0 - resolution: "scheduler@npm:0.23.0" - dependencies: - loose-envify: ^1.1.0 - checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a - languageName: node - linkType: hard - -"scheduler@npm:^0.23.2": +"scheduler@npm:^0.23.0, scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" dependencies: @@ -51425,41 +45408,18 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": ^7.0.8 - ajv: ^6.12.5 - ajv-keywords: ^3.5.2 - checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.2": - version: 3.2.0 - resolution: "schema-utils@npm:3.2.0" +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: e8c590c525a58e135658dbe614c60e4821f98eb4c257c962ad61f72ad1e48b23148c7edd9295dbd5f9fc525ff8c6f448af0a932871fe9c9e1f523d1dbef917c8 - languageName: node - linkType: hard - -"schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" - dependencies: - "@types/json-schema": ^7.0.9 - ajv: ^8.8.0 - ajv-formats: ^2.1.1 - ajv-keywords: ^5.0.0 - checksum: c843e92fdd1a5c145dbb6ffdae33e501867f9703afac67bdf35a685e49f85b1dcc10ea250033175a64bd9d31f0555bc6785b8359da0c90bcea30cf6dfbb55a8f + checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 languageName: node linkType: hard -"schema-utils@npm:^4.0.1, schema-utils@npm:^4.2.0": +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.0.1, schema-utils@npm:^4.2.0": version: 4.2.0 resolution: "schema-utils@npm:4.2.0" dependencies: @@ -51471,34 +45431,19 @@ __metadata: languageName: node linkType: hard -"scope-analyzer@npm:^2.0.1": - version: 2.1.1 - resolution: "scope-analyzer@npm:2.1.1" - dependencies: - array-from: ^2.1.1 - dash-ast: ^1.0.0 - es6-map: ^0.1.5 - es6-set: ^0.1.5 - es6-symbol: ^3.1.1 - estree-is-function: ^1.0.0 - get-assigned-identifiers: ^1.1.0 - checksum: 7becd67a718a23abeffae8b71ae71c1062197d185757122c85bd123afe0fecf8f7fde200b9a7d7622b187f496037d608c00303005d2554a819bcc995cdad76f2 - languageName: node - linkType: hard - "screenfull@npm:^5.0.0": - version: 5.1.0 - resolution: "screenfull@npm:5.1.0" - checksum: e8ab486ba2310055aeabd84d8f76f1c9e729669942a4b1bdd675131333076ac9ee6655fb41c2507de3be93865e120cf3641e5ff636090f9e2458170827e650c7 + version: 5.2.0 + resolution: "screenfull@npm:5.2.0" + checksum: 21eae33b780eb4679ea0ea2d14734b11168cf35049c45a2bf24ddeb39c67a788e7a8fb46d8b61ca6d8367fd67ce9dd4fc8bfe476489249c7189c2a79cf83f51a languageName: node linkType: hard "scroll-into-view-if-needed@npm:^2.2.20": - version: 2.2.27 - resolution: "scroll-into-view-if-needed@npm:2.2.27" + version: 2.2.31 + resolution: "scroll-into-view-if-needed@npm:2.2.31" dependencies: - compute-scroll-into-view: ^1.0.16 - checksum: 4f46ad5e30f2763406c87ea357214a44b0698e025d5384ef684d749462e8f2a7916a4a1c581686dceec7097a7d36c042294fc56f97c08c097073635f52e84f3f + compute-scroll-into-view: ^1.0.20 + checksum: 93b28f3723a462245b40d4120c40c542c8449473e2b157a5f8e18f04d95d66cd35249d96c625e8a440a56891f7d8905b1d026c690bdda07fcfb4f1a48d643ad1 languageName: node linkType: hard @@ -51526,9 +45471,9 @@ __metadata: linkType: hard "secure-json-parse@npm:^2.1.0": - version: 2.3.2 - resolution: "secure-json-parse@npm:2.3.2" - checksum: 53fe05d8602cc21465c9719bb04a6a6744c07eddbb6cc024dc71e74b661ae53959bfada32d7320226dc0b0e08a9ddf94e89634513efa9f9d1305c5c49cbde66d + version: 2.7.0 + resolution: "secure-json-parse@npm:2.7.0" + checksum: d9d7d5a01fc6db6115744ba23cf9e67ecfe8c524d771537c062ee05ad5c11b64c730bc58c7f33f60bd6877f96b86f0ceb9ea29644e4040cb757f6912d4dd6737 languageName: node linkType: hard @@ -51548,16 +45493,7 @@ __metadata: languageName: node linkType: hard -"selfsigned@npm:^2.1.1": - version: 2.1.1 - resolution: "selfsigned@npm:2.1.1" - dependencies: - node-forge: ^1 - checksum: aa9ce2150a54838978d5c0aee54d7ebe77649a32e4e690eb91775f71fdff773874a4fbafd0ac73d8ec3b702ff8a395c604df4f8e8868528f36fd6c15076fb43a - languageName: node - linkType: hard - -"selfsigned@npm:^2.4.1": +"selfsigned@npm:^2.1.1, selfsigned@npm:^2.4.1": version: 2.4.1 resolution: "selfsigned@npm:2.4.1" dependencies: @@ -51575,11 +45511,11 @@ __metadata: linkType: hard "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.1.0, semver@npm:^5.5.0, semver@npm:^5.6.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" + version: 5.7.2 + resolution: "semver@npm:5.7.2" bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf + semver: bin/semver + checksum: fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b686 languageName: node linkType: hard @@ -51603,36 +45539,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": - version: 7.3.5 - resolution: "semver@npm:7.3.5" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 - languageName: node - linkType: hard - -"semver@npm:^7.0.0, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -51643,23 +45550,21 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.2, semver@npm:^7.3.7, semver@npm:^7.3.8": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 +"semver@npm:7.x, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" bin: semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 languageName: node linkType: hard -"semver@npm:^7.5.2, semver@npm:^7.6.0": - version: 7.6.2 - resolution: "semver@npm:7.6.2" +"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: 40f6a95101e8d854357a644da1b8dd9d93ce786d5c6a77227bc69dbb17bea83d0d1d1d7c4cd5920a6df909f48e8bd8a5909869535007f90278289f2451d0292d + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 languageName: node linkType: hard @@ -51693,6 +45598,27 @@ __metadata: languageName: node linkType: hard +"send@npm:0.19.0": + version: 0.19.0 + resolution: "send@npm:0.19.0" + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + etag: ~1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: ~1.2.1 + statuses: 2.0.1 + checksum: 5ae11bd900c1c2575525e2aa622e856804e2f96a09281ec1e39610d089f53aa69e13fd8db84b52f001d0318cf4bb0b3b904ad532fc4c0014eb90d32db0cff55f + languageName: node + linkType: hard + "sentence-case@npm:^3.0.4": version: 3.0.4 resolution: "sentence-case@npm:3.0.4" @@ -51800,21 +45726,12 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:5.0.1": - version: 5.0.1 - resolution: "serialize-javascript@npm:5.0.1" - dependencies: - randombytes: ^2.1.0 - checksum: bb45a427690c3d2711e28499de0fbf25036af1e23c63c6a9237ed0aa572fd0941fcdefe50a2dccf26d9df8c8b86ae38659e19d8ba7afd3fbc1f1c7539a2a48d2 - languageName: node - linkType: hard - "serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": - version: 6.0.1 - resolution: "serialize-javascript@npm:6.0.1" + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" dependencies: randombytes: ^2.1.0 - checksum: 3c4f4cb61d0893b988415bdb67243637333f3f574e9e9cc9a006a2ced0b390b0b3b44aef8d51c951272a9002ec50885eefdc0298891bc27eb2fe7510ea87dc4f + checksum: c4839c6206c1d143c0f80763997a361310305751171dd95e4b57efee69b8f6edd8960a0b7fbfc45042aadff98b206d55428aee0dc276efe54f100899c7fa8ab7 languageName: node linkType: hard @@ -51846,7 +45763,7 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:1.15.0, serve-static@npm:^1.13.1": +"serve-static@npm:1.15.0": version: 1.15.0 resolution: "serve-static@npm:1.15.0" dependencies: @@ -51858,6 +45775,18 @@ __metadata: languageName: node linkType: hard +"serve-static@npm:1.16.2, serve-static@npm:^1.13.1": + version: 1.16.2 + resolution: "serve-static@npm:1.16.2" + dependencies: + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + parseurl: ~1.3.3 + send: 0.19.0 + checksum: dffc52feb4cc5c68e66d0c7f3c1824d4e989f71050aefc9bd5f822a42c54c9b814f595fc5f2b717f4c7cc05396145f3e90422af31186a93f76cf15f707019759 + languageName: node + linkType: hard + "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -51865,18 +45794,6 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.1.1": - version: 1.1.1 - resolution: "set-function-length@npm:1.1.1" - dependencies: - define-data-property: ^1.1.1 - get-intrinsic: ^1.2.1 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.0 - checksum: c131d7569cd7e110cafdfbfbb0557249b538477624dfac4fc18c376d879672fa52563b74029ca01f8f4583a8acb35bb1e873d573a24edb80d978a7ee607c6e06 - languageName: node - linkType: hard - "set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -51891,17 +45808,6 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.0": - version: 2.0.1 - resolution: "set-function-name@npm:2.0.1" - dependencies: - define-data-property: ^1.0.1 - functions-have-names: ^1.2.3 - has-property-descriptors: ^1.0.0 - checksum: 4975d17d90c40168eee2c7c9c59d023429f0a1690a89d75656306481ece0c3c1fb1ebcc0150ea546d1913e35fbd037bace91372c69e543e51fc5d1f31a9fa126 - languageName: node - linkType: hard - "set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" @@ -51974,13 +45880,6 @@ __metadata: languageName: node linkType: hard -"shallow-copy@npm:~0.0.1": - version: 0.0.1 - resolution: "shallow-copy@npm:0.0.1" - checksum: 2d249a5a57a160b439d84fbf9ed7c0a107a3d656d1bda0b73edf9476c6e6ea9d2afa79829bf33fce6677fae35b15c14e5c28f9902dc4d07a302637a225d00634 - languageName: node - linkType: hard - "shallow-equal@npm:^1.2.1": version: 1.2.1 resolution: "shallow-equal@npm:1.2.1" @@ -52034,14 +45933,7 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.6.1": - version: 1.7.3 - resolution: "shell-quote@npm:1.7.3" - checksum: aca58e73a3a5d933d02e0bdddedc53ee14f7c2ec264f97ac915b9d4482d077a38e422aa664631d60a672cd3cdb4054eb2e6c0303f54882453dacb6483e482d34 - languageName: node - linkType: hard - -"shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": +"shell-quote@npm:^1.6.1, shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" checksum: 5f01201f4ef504d4c6a9d0d283fa17075f6770bfbe4c5850b074974c68062f37929ca61700d95ad2ac8822e14e8c4b990ca0e6e9272e64befd74ce5e19f0736b @@ -52121,18 +46013,7 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.3, side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.6": +"side-channel@npm:^1.0.3, side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": version: 1.0.6 resolution: "side-channel@npm:1.0.6" dependencies: @@ -52144,13 +46025,6 @@ __metadata: languageName: node linkType: hard -"sigmund@npm:^1.0.1": - version: 1.0.1 - resolution: "sigmund@npm:1.0.1" - checksum: 793f81f8083ad75ff3903ffd93cf35be8d797e872822cf880aea27ce6db522b508d93ea52ae292bccf357ce34dd5c7faa544cc51c2216e70bbf5fcf09b62707c - languageName: node - linkType: hard - "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -52158,7 +46032,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1": +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 @@ -52514,13 +46388,13 @@ __metadata: linkType: hard "socks-proxy-agent@npm:^6.0.0": - version: 6.2.0 - resolution: "socks-proxy-agent@npm:6.2.0" + version: 6.2.1 + resolution: "socks-proxy-agent@npm:6.2.1" dependencies: agent-base: ^6.0.2 debug: ^4.3.3 socks: ^2.6.2 - checksum: 6723fd64fb50334e2b340fd0a80fd8488ffc5bc43d85b7cf1d25612044f814dd7d6ea417fd47602159941236f7f4bd15669fa5d7e1f852598a31288e1a43967b + checksum: 9ca089d489e5ee84af06741135c4b0d2022977dad27ac8d649478a114cdce87849e8d82b7c22b51501a4116e231241592946fc7fae0afc93b65030ee57084f58 languageName: node linkType: hard @@ -52535,28 +46409,18 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.2": - version: 8.0.3 - resolution: "socks-proxy-agent@npm:8.0.3" +"socks-proxy-agent@npm:^8.0.2, socks-proxy-agent@npm:^8.0.3, socks-proxy-agent@npm:^8.0.4": + version: 8.0.4 + resolution: "socks-proxy-agent@npm:8.0.4" dependencies: agent-base: ^7.1.1 debug: ^4.3.4 - socks: ^2.7.1 - checksum: 8fab38821c327c190c28f1658087bc520eb065d55bc07b4a0fdf8d1e0e7ad5d115abbb22a95f94f944723ea969dd771ad6416b1e3cde9060c4c71f705c8b85c5 - languageName: node - linkType: hard - -"socks@npm:^2.3.3, socks@npm:^2.6.2": - version: 2.6.2 - resolution: "socks@npm:2.6.2" - dependencies: - ip: ^1.1.5 - smart-buffer: ^4.2.0 - checksum: dd9194293059d737759d5c69273850ad4149f448426249325c4bea0e340d1cf3d266c3b022694b0dcf5d31f759de23657244c481fc1e8322add80b7985c36b5e + socks: ^2.8.3 + checksum: b2ec5051d85fe49072f9a250c427e0e9571fd09d5db133819192d078fd291276e1f0f50f6dbc04329b207738b1071314cee8bdbb4b12e27de42dbcf1d4233c67 languageName: node linkType: hard -"socks@npm:^2.7.1": +"socks@npm:^2.3.3, socks@npm:^2.6.2, socks@npm:^2.8.3": version: 2.8.3 resolution: "socks@npm:2.8.3" dependencies: @@ -52575,17 +46439,10 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c - languageName: node - linkType: hard - -"source-map-js@npm:^1.2.0": - version: 1.2.0 - resolution: "source-map-js@npm:1.2.0" - checksum: 791a43306d9223792e84293b00458bf102a8946e7188f3db0e4e22d8d530b5f80a4ce468eb5ec0bf585443ad55ebbd630bf379c98db0b1f317fd902500217f97 +"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b languageName: node linkType: hard @@ -52638,14 +46495,14 @@ __metadata: languageName: node linkType: hard -"source-map@npm:0.7.4, source-map@npm:^0.7.4": +"source-map@npm:0.7.4, source-map@npm:^0.7.3, source-map@npm:^0.7.4": version: 0.7.4 resolution: "source-map@npm:0.7.4" checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 languageName: node linkType: hard -"source-map@npm:^0.5.6, source-map@npm:^0.5.7": +"source-map@npm:^0.5.0, source-map@npm:^0.5.6, source-map@npm:^0.5.7": version: 0.5.7 resolution: "source-map@npm:0.5.7" checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d @@ -52659,20 +46516,6 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.7.3, source-map@npm:~0.7.2": - version: 0.7.3 - resolution: "source-map@npm:0.7.3" - checksum: cd24efb3b8fa69b64bf28e3c1b1a500de77e84260c5b7f2b873f88284df17974157cc88d386ee9b6d081f08fdd8242f3fc05c953685a6ad81aad94c7393dedea - languageName: node - linkType: hard - -"sourcemap-codec@npm:^1.4.1, sourcemap-codec@npm:^1.4.4, sourcemap-codec@npm:^1.4.8": - version: 1.4.8 - resolution: "sourcemap-codec@npm:1.4.8" - checksum: b57981c05611afef31605732b598ccf65124a9fcb03b833532659ac4d29ac0f7bfacbc0d6c5a28a03e84c7510e7e556d758d0bb57786e214660016fb94279316 - languageName: node - linkType: hard - "space-separated-tokens@npm:^1.0.0": version: 1.1.5 resolution: "space-separated-tokens@npm:1.1.5" @@ -52709,19 +46552,19 @@ __metadata: linkType: hard "spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" + version: 3.2.0 + resolution: "spdx-correct@npm:3.2.0" dependencies: spdx-expression-parse: ^3.0.0 spdx-license-ids: ^3.0.0 - checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 + checksum: e9ae98d22f69c88e7aff5b8778dc01c361ef635580e82d29e5c60a6533cc8f4d820803e67d7432581af0cc4fb49973125076ee3b90df191d153e223c004193b2 languageName: node linkType: hard "spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 + version: 2.5.0 + resolution: "spdx-exceptions@npm:2.5.0" + checksum: bb127d6e2532de65b912f7c99fc66097cdea7d64c10d3ec9b5e96524dbbd7d20e01cba818a6ddb2ae75e62bb0c63d5e277a7e555a85cbc8ab40044984fa4ae15 languageName: node linkType: hard @@ -52736,9 +46579,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.7 - resolution: "spdx-license-ids@npm:3.0.7" - checksum: b52a88aebc19b4c69049349939e1948014c4d10f52a11870431fc1cc6551de411d19e4570f5f1df2d8b7089bec921df9017a3d5199ae2468b2b432171945278e + version: 3.0.20 + resolution: "spdx-license-ids@npm:3.0.20" + checksum: 0c57750bedbcff48f3d0e266fbbdaf0aab54217e182f669542ffe0b5a902dce69e8cdfa126a131e1ddd39a9bef4662e357b2b41315d7240b4a28c0a7e782bb40 languageName: node linkType: hard @@ -52787,10 +46630,10 @@ __metadata: languageName: node linkType: hard -"speakingurl@npm:^13.0.0": - version: 13.0.0 - resolution: "speakingurl@npm:13.0.0" - checksum: 0c244c5a76624353704b779081103ef9060a65c2c371f5a660d5667d80ae01b9b9701593491359d9d100197f06a98e765b6306100416882f53c3e3d5dfd2e564 +"speakingurl@npm:^14.0.1": + version: 14.0.1 + resolution: "speakingurl@npm:14.0.1" + checksum: 5c7fb81d9b4cbda31f462f424cc2d59d9d07ca07e86f9f4e7b1c6325307646f9b82297891ce7f9e75b4bccf20ac436758e721506461b5cd6e5561e89186aa67b languageName: node linkType: hard @@ -52808,12 +46651,10 @@ __metadata: languageName: node linkType: hard -"split2@npm:^3.1.1": - version: 3.2.2 - resolution: "split2@npm:3.2.2" - dependencies: - readable-stream: ^3.0.0 - checksum: 8127ddbedd0faf31f232c0e9192fede469913aa8982aa380752e0463b2e31c2359ef6962eb2d24c125bac59eeec76873678d723b1c7ff696216a1cd071e3994a +"split2@npm:^4.1.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 05d54102546549fe4d2455900699056580cca006c0275c334611420f854da30ac999230857a85fdd9914dc2109ae50f80fda43d2a445f2aa86eccdc1dfce779d languageName: node linkType: hard @@ -52898,26 +46739,26 @@ __metadata: languageName: node linkType: hard -"ssh2@npm:^1.4.0": - version: 1.5.0 - resolution: "ssh2@npm:1.5.0" +"ssh2@npm:^1.11.0, ssh2@npm:^1.4.0": + version: 1.16.0 + resolution: "ssh2@npm:1.16.0" dependencies: - asn1: ^0.2.4 + asn1: ^0.2.6 bcrypt-pbkdf: ^1.0.2 - cpu-features: 0.0.2 - nan: ^2.15.0 + cpu-features: ~0.0.10 + nan: ^2.20.0 dependenciesMeta: cpu-features: optional: true nan: optional: true - checksum: 6a2252c12d9587eeb31c499d1d13bb14a255d08243762e1a92b2db76add8912b2c8c25103c79b92e156d598c1e2781c5523b58aa9e85aee06fea365e4cc188bb + checksum: c024c4a432aae2457852037f31c0d9bec323fb062ace3a31e4a6dd6c55842246c80e7d20ff93ffed22dde1e523250d8438bc2f7d4a1450cf4fa4887818176f0e languageName: node linkType: hard -"sshpk@npm:^1.14.1": - version: 1.17.0 - resolution: "sshpk@npm:1.17.0" +"sshpk@npm:^1.18.0": + version: 1.18.0 + resolution: "sshpk@npm:1.18.0" dependencies: asn1: ~0.2.3 assert-plus: ^1.0.0 @@ -52932,28 +46773,7 @@ __metadata: sshpk-conv: bin/sshpk-conv sshpk-sign: bin/sshpk-sign sshpk-verify: bin/sshpk-verify - checksum: ba109f65c8e6c35133b8e6ed5576abeff8aa8d614824b7275ec3ca308f081fef483607c28d97780c1e235818b0f93ed8c8b56d0a5968d5a23fd6af57718c7597 - languageName: node - linkType: hard - -"sshpk@npm:^1.7.0": - version: 1.16.1 - resolution: "sshpk@npm:1.16.1" - dependencies: - asn1: ~0.2.3 - assert-plus: ^1.0.0 - bcrypt-pbkdf: ^1.0.0 - dashdash: ^1.12.0 - ecc-jsbn: ~0.1.1 - getpass: ^0.1.1 - jsbn: ~0.1.0 - safer-buffer: ^2.0.2 - tweetnacl: ~0.14.0 - bin: - sshpk-conv: bin/sshpk-conv - sshpk-sign: bin/sshpk-sign - sshpk-verify: bin/sshpk-verify - checksum: 5e76afd1cedc780256f688b7c09327a8a650902d18e284dfeac97489a735299b03c3e72c6e8d22af03dbbe4d6f123fdfd5f3c4ed6bedbec72b9529a55051b857 + checksum: 01d43374eee3a7e37b3b82fdbecd5518cbb2e47ccbed27d2ae30f9753f22bd6ffad31225cb8ef013bc3fb7785e686cea619203ee1439a228f965558c367c3cfa languageName: node linkType: hard @@ -52967,11 +46787,11 @@ __metadata: linkType: hard "stack-generator@npm:^2.0.5": - version: 2.0.5 - resolution: "stack-generator@npm:2.0.5" + version: 2.0.10 + resolution: "stack-generator@npm:2.0.10" dependencies: - stackframe: ^1.1.1 - checksum: a85c45a6f166319b31e9298da1e05b778b768553c2126eeeccfa5c4402fc810de1c541ec0b92db63238d68b3e08f4f57544adc27255e52f25f8edcabcc9caf63 + stackframe: ^1.3.4 + checksum: 4fc3978a934424218a0aa9f398034e1f78153d5ff4f4ff9c62478c672debb47dd58de05b09fc3900530cbb526d72c93a6e6c9353bacc698e3b1c00ca3dda0c47 languageName: node linkType: hard @@ -52983,28 +46803,28 @@ __metadata: linkType: hard "stack-utils@npm:^2.0.3": - version: 2.0.5 - resolution: "stack-utils@npm:2.0.5" + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" dependencies: escape-string-regexp: ^2.0.0 - checksum: 76b69da0f5b48a34a0f93c98ee2a96544d2c4ca2557f7eef5ddb961d3bdc33870b46f498a84a7c4f4ffb781df639840e7ebf6639164ed4da5e1aeb659615b9c7 + checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 languageName: node linkType: hard -"stackframe@npm:^1.1.1": - version: 1.2.0 - resolution: "stackframe@npm:1.2.0" - checksum: 37d659bdd574e118a48c445a9a054a2b8dee6d6ad54eb16c51c7dae622c0f4994b9ff4e47d744aa6cfd14c00b477e145f34db3df78771f3e783ce8f357616d00 +"stackframe@npm:^1.3.4": + version: 1.3.4 + resolution: "stackframe@npm:1.3.4" + checksum: bae1596873595c4610993fa84f86a3387d67586401c1816ea048c0196800c0646c4d2da98c2ee80557fd9eff05877efe33b91ba6cd052658ed96ddc85d19067d languageName: node linkType: hard "stacktrace-gps@npm:^3.0.4": - version: 3.0.4 - resolution: "stacktrace-gps@npm:3.0.4" + version: 3.1.2 + resolution: "stacktrace-gps@npm:3.1.2" dependencies: source-map: 0.5.6 - stackframe: ^1.1.1 - checksum: b98cb77632d38e6cbc243da4c47ca5f4bef918985c233bb4cfe8bfdc60fde92b53ce0630b16cf24d81560f1442e2ff92ccf6e2fe19031c90fb775d8e86037d9b + stackframe: ^1.3.4 + checksum: 85daa232d138239b6ae0f4bcdd87d15d302a045d93625db17614030945b5314e204b5fbcf9bee5b6f4f9e6af5fca05f65c27fe910894b861ef6853b99470aa1c languageName: node linkType: hard @@ -53035,34 +46855,12 @@ __metadata: languageName: node linkType: hard -"static-eval@npm:^2.0.5": - version: 2.1.0 - resolution: "static-eval@npm:2.1.0" +"static-eval@npm:2.0.2": + version: 2.0.2 + resolution: "static-eval@npm:2.0.2" dependencies: - escodegen: ^1.11.1 - checksum: 21297ee9af37cd23ef92b3a4b1fd535073539b870d2bb83a4b92f6b668183f7fb552d3c791bbdcd460c62583a2c33d46e5d56e86a7f5851b65b29e19e5d28b41 - languageName: node - linkType: hard - -"static-module@npm:^3.0.2": - version: 3.0.4 - resolution: "static-module@npm:3.0.4" - dependencies: - acorn-node: ^1.3.0 - concat-stream: ~1.6.0 - convert-source-map: ^1.5.1 - duplexer2: ~0.1.4 - escodegen: ^1.11.1 - has: ^1.0.1 - magic-string: 0.25.1 - merge-source-map: 1.0.4 - object-inspect: ^1.6.0 - readable-stream: ~2.3.3 - scope-analyzer: ^2.0.1 - shallow-copy: ~0.0.1 - static-eval: ^2.0.5 - through2: ~2.0.3 - checksum: 6c2d1b71567cc7a282bd0e490995609c15da18273cbb426175877cd84352f0b03a87839dcf5b0669f8eaf0b35ea0d4582e1b4a0f2dabcd46d884f50fb689fce9 + escodegen: ^1.8.1 + checksum: 335a923c5ccb29add404ac23d0a55c0da6cee3071f6f67a7053aeac0dedc6dbfc53ac9269e9c25f403f5b7603a291ef47d7114f99bde241184f7aa3f9286dc32 languageName: node linkType: hard @@ -53097,9 +46895,9 @@ __metadata: linkType: hard "store2@npm:^2.14.2": - version: 2.14.2 - resolution: "store2@npm:2.14.2" - checksum: 6f270fc5bab99b63f45fcc7bd8b99c2714b4adf880f557ed7ffb5ed3987131251165bccde425a00928aaf044870aee79ddeef548576d093c68703ed2edec45d7 + version: 2.14.3 + resolution: "store2@npm:2.14.3" + checksum: 971a47aa479ff5491f89ee3fcbaf4ddafe0cfb55ac2f4cf4b4fc7b21d349fa3a761f79368d1573b9f65af08b3cf0f6973eed56a213b8bb4cb7e820ac048d1613 languageName: node linkType: hard @@ -53164,10 +46962,10 @@ __metadata: languageName: node linkType: hard -"stream-shift@npm:^1.0.0": - version: 1.0.1 - resolution: "stream-shift@npm:1.0.1" - checksum: 59b82b44b29ec3699b5519a49b3cedcc6db58c72fb40c04e005525dfdcab1c75c4e0c180b923c380f204bed78211b9bad8faecc7b93dece4d004c3f6ec75737b +"stream-shift@npm:^1.0.0, stream-shift@npm:^1.0.2": + version: 1.0.3 + resolution: "stream-shift@npm:1.0.3" + checksum: a24c0a3f66a8f9024bd1d579a533a53be283b4475d4e6b4b3211b964031447bdf6532dd1f3c2b0ad66752554391b7c62bd7ca4559193381f766534e723d50242 languageName: node linkType: hard @@ -53179,12 +46977,17 @@ __metadata: linkType: hard "streamx@npm:^2.15.0": - version: 2.15.1 - resolution: "streamx@npm:2.15.1" + version: 2.20.1 + resolution: "streamx@npm:2.20.1" dependencies: - fast-fifo: ^1.1.0 + bare-events: ^2.2.0 + fast-fifo: ^1.3.2 queue-tick: ^1.0.1 - checksum: 6f2b4fed68caacd28efbd44d4264f5d3c2b81b0a5de14419333dac57f2075c49ae648df8d03db632a33587a6c8ab7cb9cdb4f9a2f8305be0c2cd79af35742b15 + text-decoder: ^1.1.0 + dependenciesMeta: + bare-events: + optional: true + checksum: 48605ddd3abdd86d2e3ee945ec7c9317f36abb5303347a8fff6e4c7926a72c33ec7ac86b50734ccd1cf65602b6a38e247966e8199b24e5a7485d9cec8f5327bd languageName: node linkType: hard @@ -53195,13 +46998,6 @@ __metadata: languageName: node linkType: hard -"string-hash@npm:^1.1.1": - version: 1.1.3 - resolution: "string-hash@npm:1.1.3" - checksum: 104b8667a5e0dc71bfcd29fee09cb88c6102e27bfb07c55f95535d90587d016731d52299380052e514266f4028a7a5172e0d9ac58e2f8f5001be61dc77c0754d - languageName: node - linkType: hard - "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -53241,7 +47037,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2, string-width@npm:^2.0.0, string-width@npm:^2.1.1": +"string-width@npm:^2.0.0, string-width@npm:^2.1.1": version: 2.1.1 resolution: "string-width@npm:2.1.1" dependencies: @@ -53280,17 +47076,18 @@ __metadata: languageName: node linkType: hard -"string.prototype.includes@npm:^2.0.0": - version: 2.0.0 - resolution: "string.prototype.includes@npm:2.0.0" +"string.prototype.includes@npm:^2.0.1": + version: 2.0.1 + resolution: "string.prototype.includes@npm:2.0.1" dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.5 - checksum: cf413e7f603b0414b65fdf1e7e3670ba85fd992b31c7eadfbdd9a484b86d265f0260431e7558cdb44a318dcadd1da8442b7bb8193b9ddd0aea3c376d2a559859 + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + checksum: ed4b7058b092f30d41c4df1e3e805eeea92479d2c7a886aa30f42ae32fde8924a10cc99cccc99c29b8e18c48216608a0fe6bf887f8b4aadf9559096a758f313a languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.11": +"string.prototype.matchall@npm:^4.0.11, string.prototype.matchall@npm:^4.0.8": version: 4.0.11 resolution: "string.prototype.matchall@npm:4.0.11" dependencies: @@ -53310,30 +47107,15 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.8": - version: 4.0.8 - resolution: "string.prototype.matchall@npm:4.0.8" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - regexp.prototype.flags: ^1.4.3 - side-channel: ^1.0.4 - checksum: 952da3a818de42ad1c10b576140a5e05b4de7b34b8d9dbf00c3ac8c1293e9c0f533613a39c5cda53e0a8221f2e710bc2150e730b1c2278d60004a8a35726efb6 - languageName: node - linkType: hard - "string.prototype.padend@npm:^3.0.0": - version: 3.1.2 - resolution: "string.prototype.padend@npm:3.1.2" + version: 3.1.6 + resolution: "string.prototype.padend@npm:3.1.6" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.2 - checksum: be5ff9ac8d9c5443fc39fe92654e8e816d064f8b615703de475590b7d82c72aab97641c0a57543ca1c20e318fcc7b3692fcda24eb2c0ee5444653c1c25a61de2 + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + checksum: d9fc23c21bdfb6850756002ef09cebc420882003f29eafbd8322df77a90726bc2a64892d01f94f1fc9fc6f809414fbcbd8615610bb3cddd33512c12b6b3643a2 languageName: node linkType: hard @@ -53359,38 +47141,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimend@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 17e5aa45c3983f582693161f972c1c1fa4bbbdf22e70e582b00c91b6575f01680dc34e83005b98e31abe4d5d29e0b21fcc24690239c106c7b2315aade6a898ac - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimend@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: d44f543833112f57224e79182debadc9f4f3bf9d48a0414d6f0cbd2a86f2b3e8c0ca1f95c3f8e5b32ae83e91554d79d932fc746b411895f03f93d89ed3dfb6bc - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e - languageName: node - linkType: hard - "string.prototype.trimend@npm:^1.0.8": version: 1.0.8 resolution: "string.prototype.trimend@npm:1.0.8" @@ -53402,38 +47152,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimstart@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 3fb06818d3cccac5fa3f5f9873d984794ca0e9f6616fae6fcc745885d9efed4e17fe15f832515d9af5e16c279857fdbffdfc489ca4ed577811b017721b30302f - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimstart@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: a4857c5399ad709d159a77371eeaa8f9cc284469a0b5e1bfe405de16f1fd4166a8ea6f4180e55032f348d1b679b1599fd4301fbc7a8b72bdb3e795e43f7b1048 - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 - languageName: node - linkType: hard - "string.prototype.trimstart@npm:^1.0.8": version: 1.0.8 resolution: "string.prototype.trimstart@npm:1.0.8" @@ -53445,7 +47163,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -53597,7 +47315,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -53646,18 +47364,18 @@ __metadata: linkType: hard "style-loader@npm:^3.3.0, style-loader@npm:^3.3.1": - version: 3.3.3 - resolution: "style-loader@npm:3.3.3" + version: 3.3.4 + resolution: "style-loader@npm:3.3.4" peerDependencies: webpack: ^5.0.0 - checksum: f59c953f56f6a935bd6a1dfa409f1128fed2b66b48ce4a7a75b85862a7156e5e90ab163878962762f528ec4d510903d828da645e143fbffd26f055dc1c094078 + checksum: caac3f2fe2c3c89e49b7a2a9329e1cfa515ecf5f36b9c4885f9b218019fda207a9029939b2c35821dec177a264a007e7c391ccdd3ff7401881ce6287b9c8f38b languageName: node linkType: hard -"style-mod@npm:^4.0.0": - version: 4.0.0 - resolution: "style-mod@npm:4.0.0" - checksum: c19f73d660a94244f0715180a6141bf75d05e5b156cc956ba11970b83cd303c3f7edafe5fb61a3192da6186cc008bdcdd803a979070f9b64e13046463644043c +"style-mod@npm:^4.0.0, style-mod@npm:^4.1.0": + version: 4.1.2 + resolution: "style-mod@npm:4.1.2" + checksum: 7c5c3e82747f9bcf5f288d8d07f50848e4630fe5ff7bfe4d94cc87d6b6a2588227cbf21b4c792ac6406e5852293300a75e710714479a5c59a06af677f0825ef8 languageName: node linkType: hard @@ -53728,15 +47446,15 @@ __metadata: languageName: node linkType: hard -"stylehacks@npm:^6.0.0": - version: 6.0.0 - resolution: "stylehacks@npm:6.0.0" +"stylehacks@npm:^6.1.1": + version: 6.1.1 + resolution: "stylehacks@npm:6.1.1" dependencies: - browserslist: ^4.21.4 - postcss-selector-parser: ^6.0.4 + browserslist: ^4.23.0 + postcss-selector-parser: ^6.0.16 peerDependencies: - postcss: ^8.2.15 - checksum: b6071ab5f4451576e3a445f7304b41c43329f84d7a7987a91442febaabc1de51e62f1e37c4f37fad21990d3f573a8110bd31e09f9df7b8628465e19b1cdc702b + postcss: ^8.4.31 + checksum: 7bef69822280a23817caa43969de76d77ba34042e9f1f7baaeda8f22b1d8c20f1f839ad028552c169e158e387830f176feccd0324b07ef6ec657cba1dd0b2466 languageName: node linkType: hard @@ -53754,24 +47472,23 @@ __metadata: languageName: node linkType: hard -"stylis@npm:^4.0.6": - version: 4.0.7 - resolution: "stylis@npm:4.0.7" - checksum: 4f9fdc4b131b54cdc5988aaf23e796fcf77927c9d2f3147f6b23b8f3a9568eb38ce91b338b9d1b50a50391da32969c34ff68ff971c453fc3a5af89941c60ab06 +"stylis@npm:^4.3.0": + version: 4.3.4 + resolution: "stylis@npm:4.3.4" + checksum: 7e3a482c7bba6e0e9e3187972e958acf800b1abe99f23e081fcb5dea8e4a05eca44286c1381ce2bc7179245ddbd7bf1f74237ed413fce7491320a543bcfebda9 languageName: node linkType: hard "stylus-loader@npm:^7.1.0": - version: 7.1.2 - resolution: "stylus-loader@npm:7.1.2" + version: 7.1.3 + resolution: "stylus-loader@npm:7.1.3" dependencies: fast-glob: ^3.2.12 - klona: ^2.0.6 normalize-path: ^3.0.0 peerDependencies: stylus: ">=0.52.4" webpack: ^5.0.0 - checksum: f0971b1825163d6bfa57e13d228c2b90c4d43d0137a6e632632117e380a00b5ff87cff91bf9536ed6f8f6b50c5db3e24a4f97a2e53f3825769d752b43bc3d89b + checksum: 5f92692f19584add370ba9dd6cdb25268ce4ba22b3703de447431be49185a8a79bb80f925b530f9cbafdd2b83420a68398e68cc0d23063d1dbbb14b465b389f2 languageName: node linkType: hard @@ -53881,28 +47598,9 @@ __metadata: languageName: node linkType: hard -"superagent@npm:^6.1.0": - version: 6.1.0 - resolution: "superagent@npm:6.1.0" - dependencies: - component-emitter: ^1.3.0 - cookiejar: ^2.1.2 - debug: ^4.1.1 - fast-safe-stringify: ^2.0.7 - form-data: ^3.0.0 - formidable: ^1.2.2 - methods: ^1.1.2 - mime: ^2.4.6 - qs: ^6.9.4 - readable-stream: ^3.6.0 - semver: ^7.3.2 - checksum: 32ca1bc9805679cddeffdf5cf369da47359a0d38ee45ea668bba4116e17c247739e4084db9cc88217dd594a816e766a3dbf2431de017fbac0bc80efd6af30c1d - languageName: node - linkType: hard - -"superagent@npm:^8.0.0": - version: 8.0.9 - resolution: "superagent@npm:8.0.9" +"superagent@npm:^8.0.0, superagent@npm:^8.1.2": + version: 8.1.2 + resolution: "superagent@npm:8.1.2" dependencies: component-emitter: ^1.3.0 cookiejar: ^2.1.4 @@ -53914,7 +47612,7 @@ __metadata: mime: 2.6.0 qs: ^6.11.0 semver: ^7.3.8 - checksum: 5d00cdc7ceb5570663da80604965750e6b1b8d7d7442b7791e285c62bcd8d578a8ead0242a2426432b59a255fb42eb3a196d636157538a1392e7b6c5f1624810 + checksum: f3601c5ccae34d5ba684a03703394b5d25931f4ae2e1e31a1de809f88a9400e997ece037f9accf148a21c408f950dc829db1e4e23576a7f9fe0efa79fd5c9d2f languageName: node linkType: hard @@ -53938,15 +47636,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:8.1.1, supports-color@npm:^8, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - "supports-color@npm:^2.0.0": version: 2.0.0 resolution: "supports-color@npm:2.0.0" @@ -53972,17 +47661,16 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.0.0": - version: 2.1.0 - resolution: "supports-hyperlinks@npm:2.1.0" +"supports-color@npm:^8, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" dependencies: has-flag: ^4.0.0 - supports-color: ^7.0.0 - checksum: e4f430c870a258c9854b8bd7f166a9c1e76e3b851da84d4399d6a8f1d4a485e4ec36c16455dde80acf06c86e7c0a6df76ed22b6a4644a6ae3eced8616b3f21b5 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 languageName: node linkType: hard -"supports-hyperlinks@npm:^2.2.0": +"supports-hyperlinks@npm:^2.0.0, supports-hyperlinks@npm:^2.2.0": version: 2.3.0 resolution: "supports-hyperlinks@npm:2.3.0" dependencies: @@ -54013,19 +47701,20 @@ __metadata: languageName: node linkType: hard -"svgo@npm:^3.0.2": - version: 3.0.2 - resolution: "svgo@npm:3.0.2" +"svgo@npm:^3.0.2, svgo@npm:^3.2.0": + version: 3.3.2 + resolution: "svgo@npm:3.3.2" dependencies: "@trysound/sax": 0.2.0 commander: ^7.2.0 css-select: ^5.1.0 - css-tree: ^2.2.1 + css-tree: ^2.3.1 + css-what: ^6.1.0 csso: ^5.0.5 picocolors: ^1.0.0 bin: - svgo: bin/svgo - checksum: 381ba14aa782e71ab7033227634a3041c11fa3e2769aeaf0df43a08a615de61925108e34f55af6e7c5146f4a3109e78deabb4fa9d687e36d45d1f848b4e23d17 + svgo: ./bin/svgo + checksum: a3f8aad597dec13ab24e679c4c218147048dc1414fe04e99447c5f42a6e077b33d712d306df84674b5253b98c9b84dfbfb41fdd08552443b04946e43d03e054e languageName: node linkType: hard @@ -54037,9 +47726,9 @@ __metadata: linkType: hard "swagger-ui-dist@npm:>=4.1.3": - version: 4.6.1 - resolution: "swagger-ui-dist@npm:4.6.1" - checksum: ca867260b2e25069742fd2be9911a1f80cd00289d2cc195d7e81660cec68b483cdaae7cf65ce79a11209ec47c52461b9305e648810f0d41189f3f5ec8f1abfa4 + version: 5.17.14 + resolution: "swagger-ui-dist@npm:5.17.14" + checksum: e10f8068e370fb17cf6882c8d8b925044862ea74b67296c6d97eef42a904eed3e9ed21867cc0458cbf0de7bd2a49e79282a1a3b7e6a1ccdbba1b650d86b528bb languageName: node linkType: hard @@ -54087,12 +47776,14 @@ __metadata: linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.3 - resolution: "swc-loader@npm:0.2.3" + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": ^0.1.3 peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: 010d84d399525c0185d36d62c86c55ae017e7a90046bc8a39be4b7e07526924037868049f6037bc966da98151cb2600934b96a66279b742d3c413a718b427251 + checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb languageName: node linkType: hard @@ -54127,26 +47818,9 @@ __metadata: linkType: hard "synchronous-promise@npm:^2.0.15": - version: 2.0.15 - resolution: "synchronous-promise@npm:2.0.15" - checksum: 6079a6acd37d02eb76f250dc7ce09009151744901b320a8cfbba056b015c3d7cbf4e7467458f2d27c6393634f68521b241ea9e35fd9640f8fb59342740550472 - languageName: node - linkType: hard - -"synckit@npm:^0.8.5": - version: 0.8.5 - resolution: "synckit@npm:0.8.5" - dependencies: - "@pkgr/utils": ^2.3.1 - tslib: ^2.5.0 - checksum: 8a9560e5d8f3d94dc3cf5f7b9c83490ffa30d320093560a37b88f59483040771fd1750e76b9939abfbb1b5a23fd6dfbae77f6b338abffe7cae7329cd9b9bb86b - languageName: node - linkType: hard - -"taffydb@npm:2.6.2": - version: 2.6.2 - resolution: "taffydb@npm:2.6.2" - checksum: 8fea9cdff71735a40320c4beeb80cb98837076cb89614bc55ac5d67561f35ebae158cfc07a193a1099b5e32746433b2c086b0cd6d56f29aa7c7678e74968335b + version: 2.0.17 + resolution: "synchronous-promise@npm:2.0.17" + checksum: 7b1342c93741f3f92ebde1edf5d6ce8dde2278de948d84e9bd85e232c16c0d77c90c4940f9975be3effcb20f047cfb0f16fa311c3b4e092c22f3bf2889fb0fb4 languageName: node linkType: hard @@ -54195,13 +47869,13 @@ __metadata: linkType: hard "tar-stream@npm:^3.0.0": - version: 3.1.6 - resolution: "tar-stream@npm:3.1.6" + version: 3.1.7 + resolution: "tar-stream@npm:3.1.7" dependencies: b4a: ^1.6.4 fast-fifo: ^1.2.0 streamx: ^2.15.0 - checksum: f3627f918581976e954ff03cb8d370551053796b82564f8c7ca8fac84c48e4d042026d0854fc222171a34ff9c682b72fae91be9c9b0a112d4c54f9e4f443e9c5 + checksum: 6393a6c19082b17b8dcc8e7fd349352bb29b4b8bfe1075912b91b01743ba6bb4298f5ff0b499a3bbaf82121830e96a1a59d4f21a43c0df339e54b01789cb8cc6 languageName: node linkType: hard @@ -54220,37 +47894,28 @@ __metadata: linkType: hard "tdigest@npm:^0.1.1": - version: 0.1.1 - resolution: "tdigest@npm:0.1.1" + version: 0.1.2 + resolution: "tdigest@npm:0.1.2" dependencies: - bintrees: 1.0.1 - checksum: 4d05fd70fb0aa70aa101d01557722b7ef9a91b2ebf8dfc274ca9852220397a74e4ed6e59c55335b4b1dd0ac5e1b65d25b8d32ae01278fc3b783c40f6d84303e2 + bintrees: 1.0.2 + checksum: 44de8246752b6f8c2924685f969fd3d94c36949f22b0907e99bef2b2220726dd8467f4730ea96b06040b9aa2587c0866049640039d1b956952dfa962bc2075a3 languageName: node linkType: hard "teeny-request@npm:^8.0.0": - version: 8.0.2 - resolution: "teeny-request@npm:8.0.2" + version: 8.0.3 + resolution: "teeny-request@npm:8.0.3" dependencies: http-proxy-agent: ^5.0.0 https-proxy-agent: ^5.0.0 node-fetch: ^2.6.1 stream-events: ^1.0.5 uuid: ^9.0.0 - checksum: 9617354dfa7cc31676aa614db02f0f6cfdda3ee135f11fcfce99aab7f838ac2c37a5010995d4fe669b26779120f79a03a19d6ff7ae82dfe69677171a3303cb87 + checksum: 6682a14df3708068db147c91af5f2b2e097e2e53c03dddaef40f6f974297f2da9e6112c615af9fbc84a1685c6846b8a9e485771d1a350aa25e9ff5fcf63dd821 languageName: node linkType: hard -"telejson@npm:^7.0.3": - version: 7.1.0 - resolution: "telejson@npm:7.1.0" - dependencies: - memoizerific: ^1.11.3 - checksum: 8000e43dc862a87ab1ca342a2635641923d55c2585f85ea8c7c60293681d6f920e8b9570cc12d90ecef286f065c176da5f769f42f4828ba18a626627bed1ac07 - languageName: node - linkType: hard - -"telejson@npm:^7.2.0": +"telejson@npm:^7.0.3, telejson@npm:^7.2.0": version: 7.2.0 resolution: "telejson@npm:7.2.0" dependencies: @@ -54283,9 +47948,9 @@ __metadata: linkType: hard "templite@npm:^1.1.0": - version: 1.1.0 - resolution: "templite@npm:1.1.0" - checksum: 380a7ad18ac47f71f33a3a01beb0c99f64041b0793301861081f97d2789b78ad66624a889152c596e8bcd7927f3876c2e904811a52a4913991ec211010a052da + version: 1.2.0 + resolution: "templite@npm:1.2.0" + checksum: 4c02803b99320b1fe401ee1a4c15f1699a84dca0176d5ca847d8e3b55ce2dd7796e9ccd59209252f8fceefdc6ee41c0f92843f506c1a3d8ac45aba6ed37bb157 languageName: node linkType: hard @@ -54336,15 +48001,15 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.3, terser-webpack-plugin@npm:^5.3.7": - version: 5.3.9 - resolution: "terser-webpack-plugin@npm:5.3.9" +"terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.3": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" dependencies: - "@jridgewell/trace-mapping": ^0.3.17 + "@jridgewell/trace-mapping": ^0.3.20 jest-worker: ^27.4.5 schema-utils: ^3.1.1 serialize-javascript: ^6.0.1 - terser: ^5.16.8 + terser: ^5.26.0 peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -54354,41 +48019,13 @@ __metadata: optional: true uglify-js: optional: true - checksum: 41705713d6f9cb83287936b21e27c658891c78c4392159f5148b5623f0e8c48559869779619b058382a4c9758e7820ea034695e57dc7c474b4962b79f553bc5f + checksum: bd6e7596cf815f3353e2a53e79cbdec959a1b0276f5e5d4e63e9d7c3c5bb5306df567729da287d1c7b39d79093e56863c569c42c6c24cc34c76aa313bd2cbcea languageName: node linkType: hard -"terser@npm:^5.10.0": - version: 5.12.1 - resolution: "terser@npm:5.12.1" - dependencies: - acorn: ^8.5.0 - commander: ^2.20.0 - source-map: ~0.7.2 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: dd33af5d87a1159bcc38f354707505f1449a33d1491c512e9536f11fea7c3474cdc40e2e5fdf75f58658cfaab8ef47cb7454acd6406b2ce487675cb1978c6275 - languageName: node - linkType: hard - -"terser@npm:^5.15.0": - version: 5.16.9 - resolution: "terser@npm:5.16.9" - dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 - commander: ^2.20.0 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: b373693ee01ce08cc9b9595d57df889acbbc899d929a7fe53662330ce954d53145582f6715c9cc4839d555f5769a28fbeb203155b54e3a9c6c646db292002edd - languageName: node - linkType: hard - -"terser@npm:^5.16.8": - version: 5.17.7 - resolution: "terser@npm:5.17.7" +"terser@npm:^5.10.0, terser@npm:^5.15.0, terser@npm:^5.26.0": + version: 5.36.0 + resolution: "terser@npm:5.36.0" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -54396,7 +48033,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: b7b17b281febadf3bea9b9412d699fa24edf9b3e20fc7ad4e1a9cec276bdb65ddaa291c9663d5ab66b58834e433377477f73328574ccab2da1637a15b095811d + checksum: 489afd31901a2b170f7766948a3aa0e25da0acb41e9e35bd9f9b4751dfa2fc846e485f6fb9d34f0839a96af77f675b5fbf0a20c9aa54e0b8d7c219cf0b55e508 languageName: node linkType: hard @@ -54431,6 +48068,13 @@ __metadata: languageName: node linkType: hard +"text-decoder@npm:^1.1.0": + version: 1.2.1 + resolution: "text-decoder@npm:1.2.1" + checksum: 0f42deda4a8f111af67f81f292e823f2bdcc85057fdeef35e3a5dda6b501605a1d449927a4a440af4485fbd02198b5baf722d146a195c1b1b211cdd37292ac66 + languageName: node + linkType: hard + "text-decoding@npm:^1.0.0": version: 1.0.0 resolution: "text-decoding@npm:1.0.0" @@ -54485,13 +48129,13 @@ __metadata: linkType: hard "throttleit@npm:^1.0.0": - version: 1.0.0 - resolution: "throttleit@npm:1.0.0" - checksum: 1b2db4d2454202d589e8236c07a69d2fab838876d370030ebea237c34c0a7d1d9cf11c29f994531ebb00efd31e9728291042b7754f2798a8352ec4463455b659 + version: 1.0.1 + resolution: "throttleit@npm:1.0.1" + checksum: 32e0b12ca5810cd34dfce0408c7cb658dfd039848a073466eaac667ce6e846cafa53ac518e4b01dc6f34e6652b66fd29a5c6b666718ec5086ef328a9d029dc75 languageName: node linkType: hard -"through2@npm:^2.0.0, through2@npm:^2.0.1, through2@npm:^2.0.3, through2@npm:~2.0.3": +"through2@npm:^2.0.1, through2@npm:^2.0.3": version: 2.0.5 resolution: "through2@npm:2.0.5" dependencies: @@ -54516,12 +48160,12 @@ __metadata: linkType: hard "timers-ext@npm:^0.1.7": - version: 0.1.7 - resolution: "timers-ext@npm:0.1.7" + version: 0.1.8 + resolution: "timers-ext@npm:0.1.8" dependencies: - es5-ext: ~0.10.46 - next-tick: 1 - checksum: ef3f27a0702a88d885bcbb0317c3e3ecd094ce644da52e7f7d362394a125d9e3578292a8f8966071a980d8abbc3395725333b1856f3ae93835b46589f700d938 + es5-ext: ^0.10.64 + next-tick: ^1.1.0 + checksum: 7d37f90bdcee900aa4ba13e983905e2d16538bb13d38315f1ea3670656d91e7898f018909caedc8ebe964974ddeb3eedb5ffdc21f2329e34e6bcc353d0ee2903 languageName: node linkType: hard @@ -54539,13 +48183,20 @@ __metadata: languageName: node linkType: hard -"tiny-invariant@npm:1.3.1, tiny-invariant@npm:^1.0.0, tiny-invariant@npm:^1.3.1": +"tiny-invariant@npm:1.3.1": version: 1.3.1 resolution: "tiny-invariant@npm:1.3.1" checksum: 872dbd1ff20a21303a2fd20ce3a15602cfa7fcf9b228bd694a52e2938224313b5385a1078cb667ed7375d1612194feaca81c4ecbe93121ca1baebe344de4f84c languageName: node linkType: hard +"tiny-invariant@npm:^1.0.0, tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe + languageName: node + linkType: hard + "tiny-warning@npm:^1.0.2, tiny-warning@npm:^1.0.3": version: 1.0.3 resolution: "tiny-warning@npm:1.0.3" @@ -54569,13 +48220,6 @@ __metadata: languageName: node linkType: hard -"titleize@npm:^3.0.0": - version: 3.0.0 - resolution: "titleize@npm:3.0.0" - checksum: 71fbbeabbfb36ccd840559f67f21e356e1d03da2915b32d2ae1a60ddcc13a124be2739f696d2feb884983441d159a18649e8d956648d591bdad35c430a6b6d28 - languageName: node - linkType: hard - "tlds@npm:1.231.0": version: 1.231.0 resolution: "tlds@npm:1.231.0" @@ -54611,15 +48255,13 @@ __metadata: linkType: hard "tmp@npm:^0.2.1, tmp@npm:~0.2.1": - version: 0.2.1 - resolution: "tmp@npm:0.2.1" - dependencies: - rimraf: ^3.0.0 - checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e + version: 0.2.3 + resolution: "tmp@npm:0.2.3" + checksum: 73b5c96b6e52da7e104d9d44afb5d106bb1e16d9fa7d00dbeb9e6522e61b571fbdb165c756c62164be9a3bbe192b9b268c236d370a2a0955c7689cd2ae377b95 languageName: node linkType: hard -"tmpl@npm:1.0.5, tmpl@npm:1.0.x": +"tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 @@ -54643,13 +48285,6 @@ __metadata: languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - "to-querystring@npm:1.1.1": version: 1.1.1 resolution: "to-querystring@npm:1.1.1" @@ -54667,9 +48302,9 @@ __metadata: linkType: hard "tocbot@npm:^4.20.1": - version: 4.21.1 - resolution: "tocbot@npm:4.21.1" - checksum: c1cdccae0139a731ab007b7537b7cc71229beb0a7ad9b20bd277db2915808855720d256bfa76a868fbd608e8aab02d9fcc38a93a7beebd869cb7816a66acc148 + version: 4.31.0 + resolution: "tocbot@npm:4.31.0" + checksum: 227961edf32f5407c607658885ed361e54ba2995ed28522256441150b31f2abd6c58fe38c262db48b73429459f7bc621f8a5123ab75d56c907d16920e291326e languageName: node linkType: hard @@ -54687,15 +48322,6 @@ __metadata: languageName: node linkType: hard -"topo@npm:2.x.x": - version: 2.0.2 - resolution: "topo@npm:2.0.2" - dependencies: - hoek: 4.x.x - checksum: 02ecb8cba2aa46abb94cc2a4459bd39874ba84a712aa51d482fdcddf16ea0bf69f232e55e6a2c32653f7c15d619a29567f97c5c8cb402257ddcb6794a55720bc - languageName: node - linkType: hard - "topo@npm:3.x.x": version: 3.0.3 resolution: "topo@npm:3.0.3" @@ -54719,36 +48345,15 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0": - version: 4.0.0 - resolution: "tough-cookie@npm:4.0.0" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.1.2 - checksum: 0891b37eb7d17faa3479d47f0dce2e3007f2583094ad272f2670d120fbcc3df3b0b0a631ba96ecad49f9e2297d93ff8995ce0d3292d08dd7eabe162f5b224d69 - languageName: node - linkType: hard - -"tough-cookie@npm:^4.1.2, tough-cookie@npm:^4.1.3": - version: 4.1.3 - resolution: "tough-cookie@npm:4.1.3" +"tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.2, tough-cookie@npm:^4.1.3": + version: 4.1.4 + resolution: "tough-cookie@npm:4.1.4" dependencies: psl: ^1.1.33 punycode: ^2.1.1 universalify: ^0.2.0 url-parse: ^1.5.3 - checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc - languageName: node - linkType: hard - -"tough-cookie@npm:~2.5.0": - version: 2.5.0 - resolution: "tough-cookie@npm:2.5.0" - dependencies: - psl: ^1.1.28 - punycode: ^2.1.1 - checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 + checksum: 5815059f014c31179a303c673f753f7899a6fce94ac93712c88ea5f3c26e0c042b5f0c7a599a00f8e0feeca4615dba75c3dffc54f3c1a489978aa8205e09307c languageName: node linkType: hard @@ -54794,9 +48399,13 @@ __metadata: linkType: hard "traverse@npm:~0.6.6": - version: 0.6.7 - resolution: "traverse@npm:0.6.7" - checksum: 21018085ab72f717991597e12e2b52446962ed59df591502e4d7e1a709bc0a989f7c3d451aa7d882666ad0634f1546d696c5edecda1f2fc228777df7bb529a1e + version: 0.6.10 + resolution: "traverse@npm:0.6.10" + dependencies: + gopd: ^1.0.1 + typedarray.prototype.slice: ^1.0.3 + which-typed-array: ^1.1.15 + checksum: ff25d30726db4867c01ff1f1bd8a5e3356b920c4d674ddf6c3764179bb54766cf1ad0158bbd65667e1f5fbde2d4efbd814d7b24d44149cc31255f0cfe2ab2095 languageName: node linkType: hard @@ -54830,13 +48439,27 @@ __metadata: languageName: node linkType: hard -"triple-beam@npm:1.3.0, triple-beam@npm:^1.3.0": +"trim-right@npm:^1.0.1": + version: 1.0.1 + resolution: "trim-right@npm:1.0.1" + checksum: 9120af534e006a7424a4f9358710e6e707887b6ccf7ea69e50d6ac6464db1fe22268400def01752f09769025d480395159778153fb98d4a2f6f40d4cf5d4f3b6 + languageName: node + linkType: hard + +"triple-beam@npm:1.3.0": version: 1.3.0 resolution: "triple-beam@npm:1.3.0" checksum: 7d7b77d8625fb252c126c24984a68de462b538a8fcd1de2abd0a26421629cf3527d48e23b3c2264f08f4a6c3bc40a478a722176f4d7b6a1acc154cb70c359f2b languageName: node linkType: hard +"triple-beam@npm:^1.3.0": + version: 1.4.1 + resolution: "triple-beam@npm:1.4.1" + checksum: 2e881a3e8e076b6f2b85b9ec9dd4a900d3f5016e6d21183ed98e78f9abcc0149e7d54d79a3f432b23afde46b0885bdcdcbff789f39bc75de796316961ec07f61 + languageName: node + linkType: hard + "trough@npm:^1.0.0": version: 1.0.5 resolution: "trough@npm:1.0.5" @@ -54845,9 +48468,9 @@ __metadata: linkType: hard "trough@npm:^2.0.0": - version: 2.1.0 - resolution: "trough@npm:2.1.0" - checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886 + version: 2.2.0 + resolution: "trough@npm:2.2.0" + checksum: 6097df63169aca1f9b08c263b1b501a9b878387f46e161dde93f6d0bba7febba93c95f876a293c5ea370f6cb03bcb687b2488c8955c3cfb66c2c0161ea8c00f6 languageName: node linkType: hard @@ -54865,7 +48488,7 @@ __metadata: languageName: node linkType: hard -"tryer@npm:^1.0.0, tryer@npm:^1.0.1": +"tryer@npm:^1.0.1": version: 1.0.1 resolution: "tryer@npm:1.0.1" checksum: 1cf14d7f67c79613f054b569bfc9a89c7020d331573a812dfcf7437244e8f8e6eb6893b210cbd9cc217f67c1d72617f89793df231e4fe7d53634ed91cf3a89d1 @@ -54881,14 +48504,14 @@ __metadata: languageName: node linkType: hard -"ts-dedent@npm:2.0.0, ts-dedent@npm:^2.0.0": +"ts-dedent@npm:2.0.0": version: 2.0.0 resolution: "ts-dedent@npm:2.0.0" checksum: 6a155072be186cdf9dca922ac1c213220a09f4fff44243dd345870a3efe7bb9c1666bb69eb62c07ad01da38130e033a2f204558615fc9d2ed76294ba0a012944 languageName: node linkType: hard -"ts-dedent@npm:^2.2.0": +"ts-dedent@npm:^2.0.0, ts-dedent@npm:^2.2.0": version: 2.2.0 resolution: "ts-dedent@npm:2.2.0" checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af @@ -54911,10 +48534,10 @@ __metadata: languageName: node linkType: hard -"ts-graphviz@npm:^0.16.0": - version: 0.16.0 - resolution: "ts-graphviz@npm:0.16.0" - checksum: 608f4bb240374717a01875d54e073191120bb5c23710706d31cb294814192586689fd22b8455293cabf8ffda2ba89e9302cda6ce937cf157c4495a6915969151 +"ts-graphviz@npm:^1.5.4": + version: 1.8.2 + resolution: "ts-graphviz@npm:1.8.2" + checksum: 73723d6d9b9b29073ff659b38e8a8443a024d515a30fd77dfb00a9df0e835739f2522c303a353e63bbd39115e23b34c9d92dd66f72590cf5f92d3a447255f9b9 languageName: node linkType: hard @@ -54968,24 +48591,25 @@ __metadata: linkType: hard "ts-loader@npm:^9.3.1": - version: 9.4.3 - resolution: "ts-loader@npm:9.4.3" + version: 9.5.1 + resolution: "ts-loader@npm:9.5.1" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.0.0 micromatch: ^4.0.0 semver: ^7.3.4 + source-map: ^0.7.4 peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: 139ed53bc60717d0ca231cdffbdef7566b9feda11c72fecc697983113f1266ccca2e1cdf191f841a43afa6b87d6afe57a0caf4feecf02f30845aa7ac6f2411a4 + checksum: 7cf396e656d905388ea2a9b5e82f16d3c955fda8d3df2fbf219f4bee16ff50a3c995c44ae3e584634e9443f056cec70bb3151add3917ffb4588ecd7394bac0ec languageName: node linkType: hard "ts-log@npm:^2.2.3": - version: 2.2.5 - resolution: "ts-log@npm:2.2.5" - checksum: 28f78ab15b8555d56c089dbc243327d8ce4331219956242a29fc4cb3bad6bb0cb8234dd17a292381a1b1dba99a7e4849a2181b2e1a303e8247e9f4ca4e284f2d + version: 2.2.7 + resolution: "ts-log@npm:2.2.7" + checksum: c423a5eb54abb9471578902953814d3d0c88b3f237db016998f8998ecf982cb0f748bb8ebf93670eeba9b836ff0ce407d8065a340f3ab218ea7b9442c255b3d4 languageName: node linkType: hard @@ -54999,7 +48623,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:10.9.1, ts-node@npm:^10.8.1": +"ts-node@npm:10.9.1": version: 10.9.1 resolution: "ts-node@npm:10.9.1" dependencies: @@ -55075,6 +48699,13 @@ __metadata: languageName: node linkType: hard +"ts-toolbelt@npm:^9.6.0": + version: 9.6.0 + resolution: "ts-toolbelt@npm:9.6.0" + checksum: 9f35fd95d895a5d32ea9fd2e532a695b0bae6cbff6832b77292efa188a0ed1ed6e54f63f74a8920390f3d909a7a3adb20a144686372a8e78b420246a9bd3d58a + languageName: node + linkType: hard + "tsconfig-paths-webpack-plugin@npm:4.0.0": version: 4.0.0 resolution: "tsconfig-paths-webpack-plugin@npm:4.0.0" @@ -55086,19 +48717,7 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1, tsconfig-paths@npm:^3.9.0": - version: 3.14.1 - resolution: "tsconfig-paths@npm:3.14.1" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.1 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d - languageName: node - linkType: hard - -"tsconfig-paths@npm:^3.15.0": +"tsconfig-paths@npm:^3.14.1, tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" dependencies: @@ -55128,21 +48747,21 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.4.0, tslib@npm:^2.4.0, tslib@npm:~2.4.0": +"tslib@npm:2.4.0": version: 2.4.0 resolution: "tslib@npm:2.4.0" checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113 languageName: node linkType: hard -"tslib@npm:2.5.0, tslib@npm:^2.4.1": +"tslib@npm:2.5.0": version: 2.5.0 resolution: "tslib@npm:2.5.0" checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 languageName: node linkType: hard -"tslib@npm:2.5.3, tslib@npm:^2.5.0, tslib@npm:~2.5.0": +"tslib@npm:2.5.3, tslib@npm:~2.5.0": version: 2.5.3 resolution: "tslib@npm:2.5.3" checksum: 88902b309afaf83259131c1e13da1dceb0ad1682a213143a1346a649143924d78cf3760c448b84d796938fd76127183894f8d85cbb3bf9c4fddbfcc140c0003c @@ -55156,14 +48775,14 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.6.2, tslib@npm:^2.6.1, tslib@npm:^2.6.2": +"tslib@npm:2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad languageName: node linkType: hard -"tslib@npm:2.6.3, tslib@npm:^2.6.3": +"tslib@npm:2.6.3, tslib@npm:~2.6.0": version: 2.6.3 resolution: "tslib@npm:2.6.3" checksum: 74fce0e100f1ebd95b8995fbbd0e6c91bdd8f4c35c00d4da62e285a3363aaa534de40a80db30ecfd388ed7c313c42d930ee0eaf108e8114214b180eec3dbe6f5 @@ -55177,10 +48796,17 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1": - version: 2.3.1 - resolution: "tslib@npm:2.3.1" - checksum: de17a98d4614481f7fcb5cd53ffc1aaf8654313be0291e1bfaee4b4bb31a20494b7d218ff2e15017883e8ea9626599b3b0e0229c18383ba9dce89da2adf15cb9 +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.7.0": + version: 2.8.0 + resolution: "tslib@npm:2.8.0" + checksum: de852ecd81adfdb4870927e250763345f07dc13fe7f395ce261424966bb122a0992ad844c3ec875c9e63e72afe2220a150712984e44dfd1a8a7e538a064e3d46 + languageName: node + linkType: hard + +"tslib@npm:~2.4.0": + version: 2.4.1 + resolution: "tslib@npm:2.4.1" + checksum: 19480d6e0313292bd6505d4efe096a6b31c70e21cf08b5febf4da62e95c265c8f571f7b36fcc3d1a17e068032f59c269fab3459d6cd3ed6949eafecf64315fca languageName: node linkType: hard @@ -55250,13 +48876,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:0.20.2, type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - "type-fest@npm:1.1.3": version: 1.1.3 resolution: "type-fest@npm:1.1.3" @@ -55278,6 +48897,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 + languageName: node + linkType: hard + "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -55313,24 +48939,17 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^2.19.0, type-fest@npm:~2.19": +"type-fest@npm:^2.19.0, type-fest@npm:^2.5.3, type-fest@npm:~2.19": version: 2.19.0 resolution: "type-fest@npm:2.19.0" checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 languageName: node linkType: hard -"type-fest@npm:^3.0.0": - version: 3.6.0 - resolution: "type-fest@npm:3.6.0" - checksum: 3cb3b27fc1dc69e0a7524041d9d32cfd3786b16591952e0b2b87ca44b53acaed1bf86ee62a7cc3033a55154d44542e8b488d500d1b363d828f62a9fae9d2a043 - languageName: node - linkType: hard - "type-fest@npm:^4.0.0": - version: 4.16.0 - resolution: "type-fest@npm:4.16.0" - checksum: 586fcaa07a20c04662840f5b1a0f003c0184d8e4c621623ec85d4e0bfa6f580c4f4060d406d6800d267e9d671c4d8272b6f77ea996f0db8ebbc80987054316ec + version: 4.26.1 + resolution: "type-fest@npm:4.26.1" + checksum: 7188db3bca82afa62c69a8043fb7c5eb74e63c45e7e28efb986da1629d844286f7181bc5a8185f38989fffff0d6c96be66fd13529b01932d1b6ebe725181d31a languageName: node linkType: hard @@ -55344,17 +48963,10 @@ __metadata: languageName: node linkType: hard -"type@npm:^1.0.1": - version: 1.2.0 - resolution: "type@npm:1.2.0" - checksum: dae8c64f82c648b985caf321e9dd6e8b7f4f2e2d4f846fc6fd2c8e9dc7769382d8a52369ddbaccd59aeeceb0df7f52fb339c465be5f2e543e81e810e413451ee - languageName: node - linkType: hard - -"type@npm:^2.0.0": - version: 2.5.0 - resolution: "type@npm:2.5.0" - checksum: 0fe1bb4e8ba298b2b245fdc6bca6178887e29e2134d231e468366615b3adffd651d464eb51d8b15f8cfd168577c282a17e19bf80f036a60d4df16308a83a93c4 +"type@npm:^2.7.2": + version: 2.7.3 + resolution: "type@npm:2.7.3" + checksum: 69cfda3248847998f93b9d292fd251c10facf8d29513e2047d4684509d67bae82d910d7a00c1e9d9bbf2af242d36425b6616807d6c652c5c370c2be1f0008a47 languageName: node linkType: hard @@ -55438,6 +49050,20 @@ __metadata: languageName: node linkType: hard +"typedarray.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "typedarray.prototype.slice@npm:1.0.3" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.0 + es-errors: ^1.3.0 + typed-array-buffer: ^1.0.2 + typed-array-byte-offset: ^1.0.2 + checksum: 07bfebdfb7a67b2a80557bf4f1061d8a68ee847d7f04c91c7aa327aa90681f97e1ea3efef17b3b8f336a7f2da1d2ff95dd92de59a4788b4e6373318b27fca2c1 + languageName: node + linkType: hard + "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -55446,28 +49072,85 @@ __metadata: linkType: hard "typeorm@npm:^0.2.30": - version: 0.2.31 - resolution: "typeorm@npm:0.2.31" + version: 0.2.45 + resolution: "typeorm@npm:0.2.45" dependencies: - "@sqltools/formatter": 1.2.2 + "@sqltools/formatter": ^1.2.2 app-root-path: ^3.0.0 - buffer: ^5.5.0 + buffer: ^6.0.3 chalk: ^4.1.0 - cli-highlight: ^2.1.10 - debug: ^4.1.1 + cli-highlight: ^2.1.11 + debug: ^4.3.1 dotenv: ^8.2.0 glob: ^7.1.6 - js-yaml: ^3.14.0 + js-yaml: ^4.0.0 mkdirp: ^1.0.4 reflect-metadata: ^0.1.13 sha.js: ^2.4.11 - tslib: ^1.13.0 + tslib: ^2.1.0 + uuid: ^8.3.2 xml2js: ^0.4.23 - yargonaut: ^1.1.2 - yargs: ^16.0.3 + yargs: ^17.0.1 + zen-observable-ts: ^1.0.0 + peerDependencies: + "@sap/hana-client": ^2.11.14 + better-sqlite3: ^7.1.2 + hdb-pool: ^0.1.6 + ioredis: ^4.28.3 + mongodb: ^3.6.0 + mssql: ^6.3.1 + mysql2: ^2.2.5 + oracledb: ^5.1.0 + pg: ^8.5.1 + pg-native: ^3.0.0 + pg-query-stream: ^4.0.0 + redis: ^3.1.1 + sql.js: ^1.4.0 + sqlite3: ^5.0.2 + typeorm-aurora-data-api-driver: ^2.0.0 + peerDependenciesMeta: + "@sap/hana-client": + optional: true + better-sqlite3: + optional: true + hdb-pool: + optional: true + ioredis: + optional: true + mongodb: + optional: true + mssql: + optional: true + mysql2: + optional: true + oracledb: + optional: true + pg: + optional: true + pg-native: + optional: true + pg-query-stream: + optional: true + redis: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + typeorm-aurora-data-api-driver: + optional: true bin: typeorm: cli.js - checksum: 8d38f1950c7420ebe6155427c4e70c4487800f4ae93e666c8e935b3417e6003f493d0f42af616612f6dd12e5199787e1ea2c20b43209750e58ef8ada155b284c + checksum: b7684a52c8ba3b796fb9f7d9ea6223edd9256dbeec67c4befe39515ce684dd684d82a2d53158b738555f5c964efaf09144bdd3ced046638e89aa46483d9a696b + languageName: node + linkType: hard + +"types-ramda@npm:^0.29.4": + version: 0.29.10 + resolution: "types-ramda@npm:0.29.10" + dependencies: + ts-toolbelt: ^9.6.0 + checksum: 9308ad9ed0b53a3d108e605b59452249e0dac529972ec35d2ff9e90cb325e0960406e16e1712aa781bd1293dea49469420aeafcc30f0e72d46182287450665fc languageName: node linkType: hard @@ -55491,17 +49174,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.0, typescript@npm:^4.5.3": - version: 4.6.3 - resolution: "typescript@npm:4.6.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 255bb26c8cb846ca689dd1c3a56587af4f69055907aa2c154796ea28ee0dea871535b1c78f85a6212c77f2657843a269c3a742d09d81495b97b914bf7920415b - languageName: node - linkType: hard - -"typescript@npm:^4.3": +"typescript@npm:^4.0, typescript@npm:^4.3": version: 4.9.5 resolution: "typescript@npm:4.9.5" bin: @@ -55511,13 +49184,13 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.4.2": - version: 4.8.4 - resolution: "typescript@npm:4.8.4" +"typescript@npm:^5.2.2": + version: 5.6.3 + resolution: "typescript@npm:5.6.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 3e4f061658e0c8f36c820802fa809e0fd812b85687a9a2f5430bc3d0368e37d1c9605c3ce9b39df9a05af2ece67b1d844f9f6ea8ff42819f13bcb80f85629af0 + checksum: ba302f8822777ebefb28b554105f3e074466b671e7444ec6b75dadc008a62f46f373d9e57ceced1c433756d06c8b7dc569a7eefdf3a9573122a49205ff99021a languageName: node linkType: hard @@ -55541,17 +49214,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^4.0#~builtin<compat/typescript>, typescript@patch:typescript@^4.5.3#~builtin<compat/typescript>": - version: 4.6.3 - resolution: "typescript@patch:typescript@npm%3A4.6.3#~builtin<compat/typescript>::version=4.6.3&hash=a1c5e5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 6bf45caf847062420592e711bc9c28bf5f9a9a7fa8245343b81493e4ededae33f1774009d1234d911422d1646a2c839f44e1a23ecb111b40a60ac2ea4c1482a8 - languageName: node - linkType: hard - -"typescript@patch:typescript@^4.3#~builtin<compat/typescript>": +"typescript@patch:typescript@^4.0#~builtin<compat/typescript>, typescript@patch:typescript@^4.3#~builtin<compat/typescript>": version: 4.9.5 resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=a1c5e5" bin: @@ -55561,13 +49224,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^4.4.2#~builtin<compat/typescript>": - version: 4.8.4 - resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin<compat/typescript>::version=4.8.4&hash=a1c5e5" +"typescript@patch:typescript@^5.2.2#~builtin<compat/typescript>": + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#~builtin<compat/typescript>::version=5.6.3&hash=a1c5e5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 563a0ef47abae6df27a9a3ab38f75fc681f633ccf1a3502b1108e252e187787893de689220f4544aaf95a371a4eb3141e4a337deb9895de5ac3c1ca76430e5f0 + checksum: f9bb3f4cc757056e61272a3f47fcf3e51532bd1dafa70ddf0b4c7e18c5b8608185455bb9ddf32c0c1f847d480bf9f48e401a98cff19f3d13f02f6758eee4a10d languageName: node linkType: hard @@ -55578,10 +49241,12 @@ __metadata: languageName: node linkType: hard -"ua-parser-js@npm:^0.7.18": - version: 0.7.24 - resolution: "ua-parser-js@npm:0.7.24" - checksum: 722e0291fe6ad0d439cd29c4cd919f4e1b7262fe78e4c2149756180f8ad723ae04713839115eeb8738aca6d6258a743668090fb1e1417bc1fba27acc815a84e2 +"ua-parser-js@npm:^1.0.35": + version: 1.0.39 + resolution: "ua-parser-js@npm:1.0.39" + bin: + ua-parser-js: script/cli.js + checksum: 19455df8c2348ef53f2e150e7406d3a025a619c2fd69722a1e63363d5ba8d91731ef7585f2dce7d8f14c8782734b4d704c05f246dca5f7565b5ae7d318084f2a languageName: node linkType: hard @@ -55594,13 +49259,20 @@ __metadata: languageName: node linkType: hard -"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": +"uc.micro@npm:^1.0.1": version: 1.0.6 resolution: "uc.micro@npm:1.0.6" checksum: 6898bb556319a38e9cf175e3628689347bd26fec15fc6b29fa38e0045af63075ff3fea4cf1fdba9db46c9f0cbf07f2348cd8844889dd31ebd288c29fe0d27e7a languageName: node linkType: hard +"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0": + version: 2.1.0 + resolution: "uc.micro@npm:2.1.0" + checksum: 37197358242eb9afe367502d4638ac8c5838b78792ab218eafe48287b0ed28aaca268ec0392cc5729f6c90266744de32c06ae938549aee041fc93b0f9672d6b2 + languageName: node + linkType: hard + "ucfirst@npm:^1.0.0": version: 1.0.0 resolution: "ucfirst@npm:1.0.0" @@ -55608,21 +49280,19 @@ __metadata: languageName: node linkType: hard -"uglify-js@npm:^3.1.4": - version: 3.13.9 - resolution: "uglify-js@npm:3.13.9" - bin: - uglifyjs: bin/uglifyjs - checksum: 4592c78a2fe3148e88da8285951d721a96ade41eb81878cc1f38e81c2afae2a3446c234c801fcd20c524c3dd3385caf06b882dccb42c8f79bf1482882fe3e142 +"ufo@npm:^1.5.4": + version: 1.5.4 + resolution: "ufo@npm:1.5.4" + checksum: f244703b7d4f9f0df4f9af23921241ab73410b591f4e5b39c23e3147f3159b139a4b1fb5903189c306129f7a16b55995dac0008e0fbae88a37c3e58cbc34d833 languageName: node linkType: hard -"uglify-js@npm:^3.7.7": - version: 3.17.4 - resolution: "uglify-js@npm:3.17.4" +"uglify-js@npm:^3.1.4, uglify-js@npm:^3.7.7": + version: 3.19.3 + resolution: "uglify-js@npm:3.19.3" bin: uglifyjs: bin/uglifyjs - checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf924 + checksum: 7ed6272fba562eb6a3149cfd13cda662f115847865c03099e3995a0e7a910eba37b82d4fccf9e88271bb2bcbe505bb374967450f433c17fa27aa36d94a8d0553 languageName: node linkType: hard @@ -55644,18 +49314,6 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.1": - version: 1.0.1 - resolution: "unbox-primitive@npm:1.0.1" - dependencies: - function-bind: ^1.1.1 - has-bigints: ^1.0.1 - has-symbols: ^1.0.2 - which-boxed-primitive: ^1.0.2 - checksum: 89d950e18fb45672bc6b3c961f1e72c07beb9640c7ceed847b571ba6f7d2af570ae1a2584cfee268b9d9ea1e3293f7e33e0bc29eaeb9f8e8a0bab057ff9e6bba - languageName: node - linkType: hard - "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" @@ -55675,10 +49333,17 @@ __metadata: languageName: node linkType: hard +"underscore@npm:1.12.1": + version: 1.12.1 + resolution: "underscore@npm:1.12.1" + checksum: ec327603aa112b99fe9d74cd9bf3b3b7451465a9d2610ceab269a532e3f191650ab017903be34dc86fe406a11d04d8905a3b04dd4c129493e51bee09a3f3074c + languageName: node + linkType: hard + "underscore@npm:^1.13.1, underscore@npm:~1.13.2": - version: 1.13.6 - resolution: "underscore@npm:1.13.6" - checksum: d5cedd14a9d0d91dd38c1ce6169e4455bb931f0aaf354108e47bd46d3f2da7464d49b2171a5cf786d61963204a42d01ea1332a903b7342ad428deaafaf70ec36 + version: 1.13.7 + resolution: "underscore@npm:1.13.7" + checksum: 174b011af29e4fbe2c70eb2baa8bfab0d0336cf2f5654f364484967bc6264a86224d0134b9176e4235c8cceae00d11839f0fd4824268de04b11c78aca1241684 languageName: node linkType: hard @@ -55689,12 +49354,26 @@ __metadata: languageName: node linkType: hard -"undici@npm:^5.10.0, undici@npm:^5.8.0": - version: 5.11.0 - resolution: "undici@npm:5.11.0" +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 + languageName: node + linkType: hard + +"undici@npm:^5.8.0": + version: 5.28.4 + resolution: "undici@npm:5.28.4" dependencies: - busboy: ^1.6.0 - checksum: 20669ef4023d24a75e81ed8142829f525f16af14d61f833b5f19cfc6bed7c706adde343a190d764dcceb227eba3211222d2b194010462a2ca221a7da0487f563 + "@fastify/busboy": ^2.0.0 + checksum: a8193132d84540e4dc1895ecc8dbaa176e8a49d26084d6fbe48a292e28397cd19ec5d13bc13e604484e76f94f6e334b2bdc740d5f06a6e50c44072818d0c19f9 + languageName: node + linkType: hard + +"undici@npm:^6.19.5": + version: 6.20.1 + resolution: "undici@npm:6.20.1" + checksum: 3bb1405b406fa0e913ff4ec6fd310c9b4d950b7064ba5949b2f616c1f13070d26f5558aefb4b56b2eafb555925443ce44cb801e143d2417ecf12ddf8d5c05cf6 languageName: node linkType: hard @@ -55715,9 +49394,9 @@ __metadata: linkType: hard "unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 + version: 2.0.1 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" + checksum: 3c3dabdb1d22aef4904399f9e810d0b71c0b12b3815169d96fac97e56d5642840c6071cf709adcace2252bc6bb80242396c2ec74b37224eb015c5f7aca40bad7 languageName: node linkType: hard @@ -55731,17 +49410,10 @@ __metadata: languageName: node linkType: hard -"unicode-match-property-value-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.0.0" - checksum: 8fe6a09d9085a625cabcead5d95bdbc1a2d5d481712856092ce0347231e81a60b93a68f1b69e82b3076a07e415a72c708044efa2aa40ae23e2e7b5c99ed4a9ea - languageName: node - linkType: hard - "unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.1.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" - checksum: 8d6f5f586b9ce1ed0e84a37df6b42fdba1317a05b5df0c249962bd5da89528771e2d149837cad11aa26bcb84c35355cb9f58a10c3d41fa3b899181ece6c85220 + version: 2.2.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" + checksum: 9e3151e1d0bc6be35c4cef105e317c04090364173e8462005b5cde08a1e7c858b6586486cfebac39dc2c6c8c9ee24afb245de6d527604866edfa454fe2a35fae languageName: node linkType: hard @@ -55756,19 +49428,9 @@ __metadata: linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.0.0" - checksum: dda4d39128cbbede2ac60fbb85493d979ec65913b8a486bf7cb7a375a2346fa48cbf9dc6f1ae23376e7e8e684c2b411434891e151e865a661b40a85407db51d0 - languageName: node - linkType: hard - -"unicode-trie@npm:^1.0.0": - version: 1.0.0 - resolution: "unicode-trie@npm:1.0.0" - dependencies: - pako: ^0.2.5 - tiny-inflate: ^1.0.0 - checksum: 4d8bc130ccb7eb5b0bed9c600f06ad7534e832e9f5ddcf3e18fef1c328ff1e3ff7022d3d4ea6885ce4c4222b18304cfe2fc8d46f80798b66f850fd82db3fe8fb + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b languageName: node linkType: hard @@ -56017,7 +49679,7 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.1.0, universalify@npm:^0.1.2": +"universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff @@ -56039,9 +49701,9 @@ __metadata: linkType: hard "universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 languageName: node linkType: hard @@ -56073,14 +49735,17 @@ __metadata: linkType: hard "unplugin@npm:^1.3.1": - version: 1.4.0 - resolution: "unplugin@npm:1.4.0" + version: 1.14.1 + resolution: "unplugin@npm:1.14.1" dependencies: - acorn: ^8.9.0 - chokidar: ^3.5.3 - webpack-sources: ^3.2.3 - webpack-virtual-modules: ^0.5.0 - checksum: 49f586b07988397aa130b44710e8017a0472e825d08a218557031f08d694788b3ee61d686e67af153cb39b73132e2616c2f135222b83ff8aa2f7a89027f74600 + acorn: ^8.12.1 + webpack-virtual-modules: ^0.6.2 + peerDependencies: + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true + checksum: fa0bedf5e6e311418e30a788828221ab211700a480a397890062ba867aa1474bb06e4fe0ede16f5bd8512d25041dd1988d4108a918343030f638231de2bf7af1 languageName: node linkType: hard @@ -56109,6 +49774,13 @@ __metadata: languageName: node linkType: hard +"uri-js-replace@npm:^1.0.1": + version: 1.0.1 + resolution: "uri-js-replace@npm:1.0.1" + checksum: 9c6761023a66eea5c7ff75127e3ea733a64362e4fd232203f627ace86d5f170dc69eda80449e3457448591b8a11e566e29cc0746da6392c9f8de4d5911f57e51 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -56160,18 +49832,25 @@ __metadata: linkType: hard "url@npm:^0.11.0": - version: 0.11.0 - resolution: "url@npm:0.11.0" + version: 0.11.4 + resolution: "url@npm:0.11.4" dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90 + punycode: ^1.4.1 + qs: ^6.12.3 + checksum: c25e587723d343d5d4248892393bfa5039ded9c2c07095a9d005bc64b7cb8956d623c0d8da8d1a28f71986a7a8d80fc2e9f9cf84235e48fa435a5cb4451062c6 languageName: node linkType: hard -"use-callback-ref@npm:^1.3.0": - version: 1.3.0 - resolution: "use-callback-ref@npm:1.3.0" +"urlpattern-polyfill@npm:^8.0.0": + version: 8.0.2 + resolution: "urlpattern-polyfill@npm:8.0.2" + checksum: d2cc0905a613c77e330c426e8697ee522dd9640eda79ac51160a0f6350e103f09b8c327623880989f8ba7325e8d95267b745aa280fdcc2aead80b023e16bd09d + languageName: node + linkType: hard + +"use-callback-ref@npm:^1.3.0, use-callback-ref@npm:^1.3.2": + version: 1.3.2 + resolution: "use-callback-ref@npm:1.3.2" dependencies: tslib: ^2.0.0 peerDependencies: @@ -56180,7 +49859,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 7913df383a5a6fcb399212eedefaac2e0c6f843555202d4e3010bac3848afe38ecaa3d0d6500ad1d936fbeffd637e6c517e68edb024af5e6beca7f27f3ce7b21 + checksum: df690f2032d56aabcea0400313a04621429f45bceb4d65d38829b3680cae3856470ce72958cb7224b332189d8faef54662a283c0867dd7c769f9a5beff61787d languageName: node linkType: hard @@ -56201,23 +49880,23 @@ __metadata: languageName: node linkType: hard -"use-debounce@npm:^7.0.0": - version: 7.0.1 - resolution: "use-debounce@npm:7.0.1" +"use-debounce@npm:^10.0.0": + version: 10.0.4 + resolution: "use-debounce@npm:10.0.4" peerDependencies: - react: ">=16.8.0" - checksum: c5c1c34ccef6c11fe25fecef983a07f5a7260fce77b58f0f648f6ae08693a22a9077b5362b96154896e9ea756e6aaea303eb44550a293456cecb6f15cf87d73b + react: "*" + checksum: 59d7e014e9ac6ba57a5b1c411cf1c088b44987b898dd64a4dc73a02da66a5ecacbc3521e261d042e7d388445b69c820b43837a1533fe9def7f85adcaaec472d0 languageName: node linkType: hard -"use-deep-compare@npm:^1.1.0": - version: 1.2.1 - resolution: "use-deep-compare@npm:1.2.1" +"use-deep-compare@npm:^1.2.1": + version: 1.3.0 + resolution: "use-deep-compare@npm:1.3.0" dependencies: dequal: 2.0.3 peerDependencies: react: ">=16.8.0" - checksum: f65a880d0cf126484f5a5772c665f7d05ea7834e73d2a76a26c1c6a4101604f9f75fb836903a191ddca9eeafe5f8faa648cc712079046147affa1ea6b4b84d2f + checksum: fada69c4562a92e1e81e406c40023a8adef2d020a84802ca05b9d9a476ee174087828e3f1224bfaac5059e6ef024c66a492260111a21f22f16581dc3cbfceb52 languageName: node linkType: hard @@ -56261,12 +49940,12 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:1.2.0, use-sync-external-store@npm:^1.2.0": - version: 1.2.0 - resolution: "use-sync-external-store@npm:1.2.0" +"use-sync-external-store@npm:1.2.2, use-sync-external-store@npm:^1.2.0": + version: 1.2.2 + resolution: "use-sync-external-store@npm:1.2.2" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a + checksum: fe07c071c4da3645f112c38c0e57beb479a8838616ff4e92598256ecce527f2888c08febc7f9b2f0ce2f0e18540ba3cde41eb2035e4fafcb4f52955037098a81 languageName: node linkType: hard @@ -56301,15 +49980,17 @@ __metadata: linkType: hard "util.promisify@npm:^1.0.0": - version: 1.1.1 - resolution: "util.promisify@npm:1.1.1" + version: 1.1.2 + resolution: "util.promisify@npm:1.1.2" dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 + call-bind: ^1.0.2 + define-properties: ^1.2.0 for-each: ^0.3.3 - has-symbols: ^1.0.1 - object.getownpropertydescriptors: ^2.1.1 - checksum: ea371c30b90576862487ae4efd7182aa5855019549a4019d82629acc2709e8ccb0f38944403eebec622fff8ebb44ac3f46a52d745d5f543d30606132a4905f96 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + object.getownpropertydescriptors: ^2.1.6 + safe-array-concat: ^1.0.0 + checksum: 9a5233e7fd067ca24abe2310f9c93e6df3adb644a662fcd826454d30539d3dd1d557b75bfed4cedd4993203012ea6add6d7dd268fed35bbdac4736dce9446373 languageName: node linkType: hard @@ -56322,7 +50003,7 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.12.0, util@npm:^0.12.4, util@npm:^0.12.5": +"util@npm:^0.12.4, util@npm:^0.12.5": version: 0.12.5 resolution: "util@npm:0.12.5" dependencies: @@ -56392,7 +50073,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:9.0.0, uuid@npm:^9.0.0": +"uuid@npm:9.0.0": version: 9.0.0 resolution: "uuid@npm:9.0.0" bin: @@ -56401,12 +50082,12 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^3.3.2": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" +"uuid@npm:^10.0.0": + version: 10.0.0 + resolution: "uuid@npm:10.0.0" bin: - uuid: ./bin/uuid - checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f + uuid: dist/bin/uuid + checksum: 4b81611ade2885d2313ddd8dc865d93d8dccc13ddf901745edca8f86d99bc46d7a330d678e7532e7ebf93ce616679fb19b2e3568873ac0c14c999032acb25869 languageName: node linkType: hard @@ -56419,7 +50100,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^9.0.1": +"uuid@npm:^9.0.0, uuid@npm:^9.0.1": version: 9.0.1 resolution: "uuid@npm:9.0.1" bin: @@ -56477,13 +50158,13 @@ __metadata: linkType: hard "v8-to-istanbul@npm:^9.0.1": - version: 9.0.1 - resolution: "v8-to-istanbul@npm:9.0.1" + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" dependencies: "@jridgewell/trace-mapping": ^0.3.12 "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - checksum: a49c34bf0a3af0c11041a3952a2600913904a983bd1bc87148b5c033bc5c1d02d5a13620fcdbfa2c60bc582a2e2970185780f0c844b4c3a220abf405f8af6311 + convert-source-map: ^2.0.0 + checksum: ded42cd535d92b7fd09a71c4c67fb067487ef5551cc227bfbf2a1f159a842e4e4acddaef20b955789b8d3b455b9779d036853f4a27ce15007f6364a4d30317ae languageName: node linkType: hard @@ -56521,35 +50202,33 @@ __metadata: linkType: hard "validate-npm-package-name@npm:^5.0.0": - version: 5.0.0 - resolution: "validate-npm-package-name@npm:5.0.0" - dependencies: - builtins: ^5.0.0 - checksum: 5342a994986199b3c28e53a8452a14b2bb5085727691ea7aa0d284a6606b127c371e0925ae99b3f1ef7cc7d2c9de75f52eb61a3d1cc45e39bca1e3a9444cbb4e - languageName: node - linkType: hard - -"validator@npm:^13.7.0": - version: 13.7.0 - resolution: "validator@npm:13.7.0" - checksum: 2b83283de1222ca549a7ef57f46e8d49c6669213348db78b7045bce36a3b5843ff1e9f709ebf74574e06223461ee1f264f8cc9a26a0060a79a27de079d8286ef + version: 5.0.1 + resolution: "validate-npm-package-name@npm:5.0.1" + checksum: 0d583a1af23aeffea7748742cf22b6802458736fb8b60323ba5949763824d46f796474b0e1b9206beb716f9d75269e19dbd7795d6b038b29d561be95dd827381 languageName: node linkType: hard -"validator@npm:^13.9.0": - version: 13.11.0 - resolution: "validator@npm:13.11.0" - checksum: d1e0c27022681420756da25bc03eb08d5f0c66fb008f8ff02ebc95812b77c6be6e03d3bd05cf80ca702e23eeb73dadd66b4b3683173ea2a0bc7cc72820bee131 +"validator@npm:^13.11.0, validator@npm:^13.7.0, validator@npm:^13.9.0": + version: 13.12.0 + resolution: "validator@npm:13.12.0" + checksum: fb8f070724770b1449ea1a968605823fdb112dbd10507b2802f8841cda3e7b5c376c40f18c84e6a7b59de320a06177e471554101a85f1fa8a70bac1a84e48adf languageName: node linkType: hard -"value-or-promise@npm:1.0.11, value-or-promise@npm:^1.0.11": +"value-or-promise@npm:1.0.11": version: 1.0.11 resolution: "value-or-promise@npm:1.0.11" checksum: 13f8f2ef620118c73b4d1beee8ce6045d7182bbf15090ecfbcafb677ec43698506a5e9ace6bea5ea35c32bc612c9b1f824bb59b6581cdfb5c919052745c277d5 languageName: node linkType: hard +"value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": + version: 1.0.12 + resolution: "value-or-promise@npm:1.0.12" + checksum: f53a66c75b7447c90bbaf946a757ca09c094629cb80ba742f59c980ec3a69be0a385a0e75505dedb4e757862f1a994ca4beaf083a831f24d3ffb3d4bb18cd1e1 + languageName: node + linkType: hard + "vanilla-swipe@npm:1.2.0": version: 1.2.0 resolution: "vanilla-swipe@npm:1.2.0" @@ -56640,6 +50319,64 @@ __metadata: languageName: node linkType: hard +"vite-node@npm:^1.2.0": + version: 1.6.0 + resolution: "vite-node@npm:1.6.0" + dependencies: + cac: ^6.7.14 + debug: ^4.3.4 + pathe: ^1.1.1 + picocolors: ^1.0.0 + vite: ^5.0.0 + bin: + vite-node: vite-node.mjs + checksum: ce111c5c7a4cf65b722baa15cbc065b7bfdbf1b65576dd6372995f6a72b2b93773ec5df59f6c5f08cfe1284806597b44b832efcea50d5971102428159ff4379f + languageName: node + linkType: hard + +"vite@npm:^5.0.0, vite@npm:^5.0.11": + version: 5.4.10 + resolution: "vite@npm:5.4.10" + dependencies: + esbuild: ^0.21.3 + fsevents: ~2.3.3 + postcss: ^8.4.43 + rollup: ^4.20.0 + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 4db3b8ca3eddbc312d0a95f505d16656e74c6dfa68d3b5eb54b6d6b0f7be1df348d469c43dc69db27dadc06b802f029d654da48f392324efd665ef2c0ca9ba9e + languageName: node + linkType: hard + "vlq@npm:^1.0.0": version: 1.0.1 resolution: "vlq@npm:1.0.1" @@ -56654,15 +50391,22 @@ __metadata: languageName: node linkType: hard -"vm2@npm:^3.9.3": - version: 3.9.8 - resolution: "vm2@npm:3.9.8" +"vm2@npm:^3.9.17": + version: 3.9.19 + resolution: "vm2@npm:3.9.19" dependencies: acorn: ^8.7.0 acorn-walk: ^8.2.0 bin: vm2: bin/vm2 - checksum: 1e665a45ce76612922368462a8b98876698e866c1f201393b0b646f07a00449dc4170e987152cf1443af664ca8f2b82bb52a0760456a71912fa63f22980de7b4 + checksum: fc6cf553134145cd7bb5246985bf242b056e3fb5ea71e2eef6710b2a5d6c6119cc6bc960435ff62480ee82efb43369be8f4db07b6690916ae7d3b2e714f395d8 + languageName: node + linkType: hard + +"w-json@npm:1.3.10": + version: 1.3.10 + resolution: "w-json@npm:1.3.10" + checksum: 8535a207e579e616797efc4d5140acc7c0aefd11f0c9f846e6739816a2db8637d235492d86fc5c47bb2dba5821413d72b2d62df9184ee9d6e22e67b3f90d205b languageName: node linkType: hard @@ -56676,9 +50420,9 @@ __metadata: linkType: hard "w3c-keyname@npm:^2.2.4": - version: 2.2.6 - resolution: "w3c-keyname@npm:2.2.6" - checksum: 59a31d23ca9953c01c99ed6695fee5b6ea36eb2412d76a21fe4302ab33a3f5cd96c006a763940b6115c3d042c16d3564eeee1156832217d028af0518098b3a42 + version: 2.2.8 + resolution: "w3c-keyname@npm:2.2.8" + checksum: 95bafa4c04fa2f685a86ca1000069c1ec43ace1f8776c10f226a73296caeddd83f893db885c2c220ebeb6c52d424e3b54d7c0c1e963bbf204038ff1a944fbb07 languageName: node linkType: hard @@ -56700,16 +50444,7 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.7": - version: 1.0.7 - resolution: "walker@npm:1.0.7" - dependencies: - makeerror: 1.0.x - checksum: 4038fcf92f6ab0288267ad05008aec9e089a759f1bd32e1ea45cc2eb498eb12095ec43cf8ca2bf23a465f4580a0d33b25b89f450ba521dd27083cbc695ee6bf5 - languageName: node - linkType: hard - -"walker@npm:^1.0.8": +"walker@npm:^1.0.7, walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" dependencies: @@ -56727,23 +50462,13 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.2.0": - version: 2.3.1 - resolution: "watchpack@npm:2.3.1" - dependencies: - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.1.2 - checksum: 70a34f92842d94b5d842980f866d568d7a467de667c96ae5759c759f46587e49265863171f4650bdbafc5f3870a28f2b4453e9e847098ec4b718b38926d47d22 - languageName: node - linkType: hard - -"watchpack@npm:^2.4.0": - version: 2.4.0 - resolution: "watchpack@npm:2.4.0" +"watchpack@npm:^2.2.0, watchpack@npm:^2.4.1": + version: 2.4.2 + resolution: "watchpack@npm:2.4.2" dependencies: glob-to-regexp: ^0.4.1 graceful-fs: ^4.1.2 - checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 + checksum: 92d9d52ce3d16fd83ed6994d1dd66a4d146998882f4c362d37adfea9ab77748a5b4d1e0c65fa104797928b2d40f635efa8f9b925a6265428a69f1e1852ca3441 languageName: node linkType: hard @@ -56793,23 +50518,23 @@ __metadata: languageName: node linkType: hard -"web-streams-polyfill@npm:^3.2.0": - version: 3.2.1 - resolution: "web-streams-polyfill@npm:3.2.1" - checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02 +"web-streams-polyfill@npm:^3.2.0, web-streams-polyfill@npm:^3.2.1": + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 21ab5ea08a730a2ef8023736afe16713b4f2023ec1c7085c16c8e293ee17ed085dff63a0ad8722da30c99c4ccbd4ccd1b2e79c861829f7ef2963d7de7004c2cb languageName: node linkType: hard -"webcrypto-core@npm:^1.7.4": - version: 1.7.5 - resolution: "webcrypto-core@npm:1.7.5" +"webcrypto-core@npm:^1.8.0": + version: 1.8.1 + resolution: "webcrypto-core@npm:1.8.1" dependencies: - "@peculiar/asn1-schema": ^2.1.6 + "@peculiar/asn1-schema": ^2.3.13 "@peculiar/json-schema": ^1.1.12 - asn1js: ^3.0.1 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - checksum: f6e529ca5c1175b8ccead3547f60efa7a1f8e247aaeab3bd4f096eb9fda11cfc8e6b6fb574bbc5696f608958c491a27e9682c89204412f73fb430e5fcbe9ebac + asn1js: ^3.0.5 + pvtsutils: ^1.3.5 + tslib: ^2.7.0 + checksum: 5f8d862991bf9b36bfec53a317ceec7de95010c6d16092d2ba62b988acdfca9adfd254ef388036e610c66d0aad506d3f344574f62e06501a8c72ef961c8996b2 languageName: node linkType: hard @@ -56867,9 +50592,9 @@ __metadata: languageName: node linkType: hard -"webpack-dev-middleware@npm:^5.3.1": - version: 5.3.3 - resolution: "webpack-dev-middleware@npm:5.3.3" +"webpack-dev-middleware@npm:^5.3.4": + version: 5.3.4 + resolution: "webpack-dev-middleware@npm:5.3.4" dependencies: colorette: ^2.0.10 memfs: ^3.4.3 @@ -56878,13 +50603,13 @@ __metadata: schema-utils: ^4.0.0 peerDependencies: webpack: ^4.0.0 || ^5.0.0 - checksum: dd332cc6da61222c43d25e5a2155e23147b777ff32fdf1f1a0a8777020c072fbcef7756360ce2a13939c3f534c06b4992a4d659318c4a7fe2c0530b52a8a6621 + checksum: 90cf3e27d0714c1a745454a1794f491b7076434939340605b9ee8718ba2b85385b120939754e9fdbd6569811e749dee53eec319e0d600e70e0b0baffd8e3fb13 languageName: node linkType: hard "webpack-dev-middleware@npm:^6.1.1": - version: 6.1.1 - resolution: "webpack-dev-middleware@npm:6.1.1" + version: 6.1.3 + resolution: "webpack-dev-middleware@npm:6.1.3" dependencies: colorette: ^2.0.10 memfs: ^3.4.12 @@ -56896,13 +50621,13 @@ __metadata: peerDependenciesMeta: webpack: optional: true - checksum: 3bced6ef644b20f2e76df9db1c5209f4a73761d7d307fe29ae20bc00397d4f9727af2607f98794c6c7c57d5c1a48bfa12690168b08f5d46820b07aab2c63640c + checksum: ddedaa913cc39d7ac7f971d902f181ecc5c4ab0b91f9eda5923f0ea513ecf458f71046f2ed423cb4fc657c2177fe279186453e395bd1051f0949e265c3124665 languageName: node linkType: hard "webpack-dev-server@npm:^4.9.3": - version: 4.15.0 - resolution: "webpack-dev-server@npm:4.15.0" + version: 4.15.2 + resolution: "webpack-dev-server@npm:4.15.2" dependencies: "@types/bonjour": ^3.5.9 "@types/connect-history-api-fallback": ^1.3.5 @@ -56910,7 +50635,7 @@ __metadata: "@types/serve-index": ^1.9.1 "@types/serve-static": ^1.13.10 "@types/sockjs": ^0.3.33 - "@types/ws": ^8.5.1 + "@types/ws": ^8.5.5 ansi-html-community: ^0.0.8 bonjour-service: ^1.0.11 chokidar: ^3.5.3 @@ -56932,7 +50657,7 @@ __metadata: serve-index: ^1.9.1 sockjs: ^0.3.24 spdy: ^4.0.2 - webpack-dev-middleware: ^5.3.1 + webpack-dev-middleware: ^5.3.4 ws: ^8.13.0 peerDependencies: webpack: ^4.37.0 || ^5.0.0 @@ -56943,29 +50668,29 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 6fe375089b061be2e4ed6d6a8b20743734d304cd0c34757271c6685f97642b028f253c627f899b629c97c067c294484f906e394fd1c104ee795237b8725f2701 + checksum: 123507129cb4d55fdc5fabdd177574f31133605748372bb11353307b7a583ef25c6fd27b6addf56bf070ba44c88d5da861771c2ec55f52405082ec9efd01f039 languageName: node linkType: hard "webpack-hot-middleware@npm:^2.25.1": - version: 2.25.1 - resolution: "webpack-hot-middleware@npm:2.25.1" + version: 2.26.1 + resolution: "webpack-hot-middleware@npm:2.26.1" dependencies: ansi-html-community: 0.0.8 html-entities: ^2.1.0 - querystring: ^0.2.0 strip-ansi: ^6.0.0 - checksum: 49f05023a1e95fab2703a885c3321dfd2ff832bcece9cbfafe9dbe68bcf16a25cd5c3c455b0534e93b7448f2dd05de2ef9009394c95dfae9bbbcc740189416f7 + checksum: 78513d8d5770c59c3039ce094c49b2e2772b3f1d4ec5c124a7aabe6124a0e08429993b81129649087dc300f496822257e39135bf8b891b51aea197c1b554072a languageName: node linkType: hard "webpack-merge@npm:^5.8.0": - version: 5.8.0 - resolution: "webpack-merge@npm:5.8.0" + version: 5.10.0 + resolution: "webpack-merge@npm:5.10.0" dependencies: clone-deep: ^4.0.1 + flat: ^5.0.2 wildcard: ^2.0.0 - checksum: 88786ab91013f1bd2a683834ff381be81c245a4b0f63304a5103e90f6653f44dab496a0768287f8531761f8ad957d1f9f3ccb2cb55df0de1bd9ee343e079da26 + checksum: 1fe8bf5309add7298e1ac72fb3f2090e1dfa80c48c7e79fa48aa60b5961332c7d0d61efa8851acb805e6b91a4584537a347bc106e05e9aec87fa4f7088c62f2f languageName: node linkType: hard @@ -57005,40 +50730,46 @@ __metadata: languageName: node linkType: hard +"webpack-virtual-modules@npm:^0.6.2": + version: 0.6.2 + resolution: "webpack-virtual-modules@npm:0.6.2" + checksum: 7e8e1d63f35864c815420cc2f27da8561a1e028255040698a352717de0ba46d3b3faf16f06c1a1965217054c4c2894eb9af53a85451870e919b5707ce9c5822d + languageName: node + linkType: hard + "webpack@npm:5, webpack@npm:^5.80.0": - version: 5.86.0 - resolution: "webpack@npm:5.86.0" - dependencies: - "@types/eslint-scope": ^3.7.3 - "@types/estree": ^1.0.0 - "@webassemblyjs/ast": ^1.11.5 - "@webassemblyjs/wasm-edit": ^1.11.5 - "@webassemblyjs/wasm-parser": ^1.11.5 + version: 5.95.0 + resolution: "webpack@npm:5.95.0" + dependencies: + "@types/estree": ^1.0.5 + "@webassemblyjs/ast": ^1.12.1 + "@webassemblyjs/wasm-edit": ^1.12.1 + "@webassemblyjs/wasm-parser": ^1.12.1 acorn: ^8.7.1 - acorn-import-assertions: ^1.9.0 - browserslist: ^4.14.5 + acorn-import-attributes: ^1.9.5 + browserslist: ^4.21.10 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.14.1 + enhanced-resolve: ^5.17.1 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.9 + graceful-fs: ^4.2.11 json-parse-even-better-errors: ^2.3.1 loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^3.1.2 + schema-utils: ^3.2.0 tapable: ^2.1.1 - terser-webpack-plugin: ^5.3.7 - watchpack: ^2.4.0 + terser-webpack-plugin: ^5.3.10 + watchpack: ^2.4.1 webpack-sources: ^3.2.3 peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js - checksum: 682b1aa8328bb9d52ae66a1d0a1078af88f9e3b3b3a9c9e1ce203e669581a8e61d522420ef253130eacd510d24d7275b840c1311d50bd048d6fd7c1af186ce55 + checksum: 0c3dfe288de4d62f8f3dc25478a618894883cab739121330763b7847e43304630ea2815ae2351a5f8ff6ab7c9642caf530d503d89bda261fe2cd220e524dd5d1 languageName: node linkType: hard @@ -57078,13 +50809,29 @@ __metadata: languageName: node linkType: hard -"whatwg-fetch@npm:3.6.2, whatwg-fetch@npm:^3.0.0, whatwg-fetch@npm:^3.4.1": +"whatwg-encoding@npm:^3.1.1": + version: 3.1.1 + resolution: "whatwg-encoding@npm:3.1.1" + dependencies: + iconv-lite: 0.6.3 + checksum: f75a61422421d991e4aec775645705beaf99a16a88294d68404866f65e92441698a4f5b9fa11dd609017b132d7b286c3c1534e2de5b3e800333856325b549e3c + languageName: node + linkType: hard + +"whatwg-fetch@npm:3.6.2": version: 3.6.2 resolution: "whatwg-fetch@npm:3.6.2" checksum: ee976b7249e7791edb0d0a62cd806b29006ad7ec3a3d89145921ad8c00a3a67e4be8f3fb3ec6bc7b58498724fd568d11aeeeea1f7827e7e1e5eae6c8a275afed languageName: node linkType: hard +"whatwg-fetch@npm:^3.0.0, whatwg-fetch@npm:^3.4.1": + version: 3.6.20 + resolution: "whatwg-fetch@npm:3.6.20" + checksum: c58851ea2c4efe5c2235f13450f426824cf0253c1d45da28f45900290ae602a20aff2ab43346f16ec58917d5562e159cd691efa368354b2e82918c2146a519c5 + languageName: node + linkType: hard + "whatwg-mimetype@npm:3.0.0, whatwg-mimetype@npm:^3.0.0": version: 3.0.0 resolution: "whatwg-mimetype@npm:3.0.0" @@ -57099,6 +50846,13 @@ __metadata: languageName: node linkType: hard +"whatwg-mimetype@npm:^4.0.0": + version: 4.0.0 + resolution: "whatwg-mimetype@npm:4.0.0" + checksum: f97edd4b4ee7e46a379f3fb0e745de29fe8b839307cc774300fd49059fcdd560d38cb8fe21eae5575b8f39b022f23477cc66e40b0355c2851ce84760339cef30 + languageName: node + linkType: hard + "whatwg-url-without-unicode@npm:8.0.0-3": version: 8.0.0-3 resolution: "whatwg-url-without-unicode@npm:8.0.0-3" @@ -57166,11 +50920,11 @@ __metadata: linkType: hard "which-builtin-type@npm:^1.1.3": - version: 1.1.3 - resolution: "which-builtin-type@npm:1.1.3" + version: 1.1.4 + resolution: "which-builtin-type@npm:1.1.4" dependencies: - function.prototype.name: ^1.1.5 - has-tostringtag: ^1.0.0 + function.prototype.name: ^1.1.6 + has-tostringtag: ^1.0.2 is-async-function: ^2.0.0 is-date-object: ^1.0.5 is-finalizationregistry: ^1.0.2 @@ -57179,45 +50933,32 @@ __metadata: is-weakref: ^1.0.2 isarray: ^2.0.5 which-boxed-primitive: ^1.0.2 - which-collection: ^1.0.1 - which-typed-array: ^1.1.9 - checksum: 43730f7d8660ff9e33d1d3f9f9451c4784265ee7bf222babc35e61674a11a08e1c2925019d6c03154fcaaca4541df43abe35d2720843b9b4cbcebdcc31408f36 + which-collection: ^1.0.2 + which-typed-array: ^1.1.15 + checksum: 1f413025250072534de2a2ee25139a24d477512b532b05c85fb9aa05aef04c6e1ca8e2668acf971b777e602721dbdec4b9d6a4f37c6b9ff8f026ad030352707f languageName: node linkType: hard -"which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" +"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" dependencies: - is-map: ^2.0.1 - is-set: ^2.0.1 - is-weakmap: ^2.0.1 - is-weakset: ^2.0.1 - checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c + is-map: ^2.0.3 + is-set: ^2.0.3 + is-weakmap: ^2.0.2 + is-weakset: ^2.0.3 + checksum: c51821a331624c8197916598a738fc5aeb9a857f1e00d89f5e4c03dc7c60b4032822b8ec5696d28268bb83326456a8b8216344fb84270d18ff1d7628051879d9 languageName: node linkType: hard "which-module@npm:^2.0.0": - version: 2.0.0 - resolution: "which-module@npm:2.0.0" - checksum: 809f7fd3dfcb2cdbe0180b60d68100c88785084f8f9492b0998c051d7a8efe56784492609d3f09ac161635b78ea29219eb1418a98c15ce87d085bce905705c9c - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.9": - version: 1.1.13 - resolution: "which-typed-array@npm:1.1.13" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.4 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: 3828a0d5d72c800e369d447e54c7620742a4cc0c9baf1b5e8c17e9b6ff90d8d861a3a6dd4800f1953dbf80e5e5cec954a289e5b4a223e3bee4aeb1f8c5f33309 + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 1967b7ce17a2485544a4fdd9063599f0f773959cca24176dbe8f405e55472d748b7c549cd7920ff6abb8f1ab7db0b0f1b36de1a21c57a8ff741f4f1e792c52be languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" dependencies: @@ -57230,21 +50971,18 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.2": - version: 1.1.8 - resolution: "which-typed-array@npm:1.1.8" +"which@npm:^1.2.9": + version: 1.3.1 + resolution: "which@npm:1.3.1" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.20.0 - for-each: ^0.3.3 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.9 - checksum: bedf4d30a738e848404fe67fe0ace33433a7298cf3f5a4d4b2c624ba99c4d25f06a7fd6f3566c3d16af5f8a54f0c6293cbfded5b1208ce11812753990223b45a + isexe: ^2.0.0 + bin: + which: ./bin/which + checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 languageName: node linkType: hard -"which@npm:2.0.2, which@npm:^2.0.1, which@npm:^2.0.2": +"which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -57255,23 +50993,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" dependencies: - isexe: ^2.0.0 + isexe: ^3.1.1 bin: - which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 - languageName: node - linkType: hard - -"wide-align@npm:1.1.3": - version: 1.1.3 - resolution: "wide-align@npm:1.1.3" - dependencies: - string-width: ^1.0.2 || 2 - checksum: d09c8012652a9e6cab3e82338d1874a4d7db2ad1bd19ab43eb744acf0b9b5632ec406bdbbbb970a8f4771a7d5ef49824d038ba70aa884e7723f5b090ab87134d + node-which: bin/which.js + checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 languageName: node linkType: hard @@ -57294,18 +51023,18 @@ __metadata: linkType: hard "wildcard@npm:^2.0.0": - version: 2.0.0 - resolution: "wildcard@npm:2.0.0" - checksum: 1f4fe4c03dfc492777c60f795bbba597ac78794f1b650d68f398fbee9adb765367c516ebd4220889b6a81e9626e7228bbe0d66237abb311573c2ee1f4902a5ad + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c languageName: node linkType: hard -"window-post-message-proxy@npm:^0.2": - version: 0.2.6 - resolution: "window-post-message-proxy@npm:0.2.6" +"window-post-message-proxy@npm:^0.2, window-post-message-proxy@npm:^0.2.7": + version: 0.2.9 + resolution: "window-post-message-proxy@npm:0.2.9" dependencies: es6-promise: ^3.1.2 - checksum: e8d83e764bd7de113d53da17fdf38ac4824c092dd290439e6733ed55c57d7ced2865c4a33256b76d76d8438da6b8adbc5deb521f01eb45806cbf315ee30e2a2c + checksum: 34a180d4860cfa80638ae7192f064dfc241d4db7678eab779a605b568e721ae5a555a5420fc3221bd7ec260ed9f1e28937627cad161bed4db5abba6239628fd7 languageName: node linkType: hard @@ -57338,25 +51067,14 @@ __metadata: languageName: node linkType: hard -"winston-transport@npm:^4.5.0": - version: 4.5.0 - resolution: "winston-transport@npm:4.5.0" - dependencies: - logform: ^2.3.2 - readable-stream: ^3.6.0 - triple-beam: ^1.3.0 - checksum: a56e5678a80b88a73e77ed998fc6e19d0db19c989a356b137ec236782f2bf58ae4511b11c29163f99391fa4dc12102c7bc5738dcb6543f28877fa2819adc3ee9 - languageName: node - linkType: hard - -"winston-transport@npm:^4.7.0": - version: 4.7.1 - resolution: "winston-transport@npm:4.7.1" +"winston-transport@npm:^4.5.0, winston-transport@npm:^4.7.0": + version: 4.8.0 + resolution: "winston-transport@npm:4.8.0" dependencies: logform: ^2.6.1 - readable-stream: ^3.6.2 + readable-stream: ^4.5.2 triple-beam: ^1.3.0 - checksum: e1dc070df1eb2ab0270a369fd7e8ff2b7a714ba9cf9a3f2c9a3509eb5fe60667c64e5cd4f37b3dd64a21017a93ea63fdcb2ac9176b12d2222a9e4244439d1b35 + checksum: f84092188176d49a6f4f75321ba3e50107ac0942a51a6d7e36b80af19dafb22b57258aaa6d8220763044ea23e30bffd597d3280d2a2298e6a491fe424896bac7 languageName: node linkType: hard @@ -57420,17 +51138,17 @@ __metadata: languageName: node linkType: hard -"wonka@npm:^6.3.0": - version: 6.3.1 - resolution: "wonka@npm:6.3.1" - checksum: 8748d5c8ce5ff4cdb69d61ce64ed19bd007a7c65d46dbb11ddd2271091c51c7241cb36642a2c32dd31bfcf5841f4c370a81b3be746b118c26bb30ba21b2b8c29 +"wonka@npm:^6.3.2": + version: 6.3.4 + resolution: "wonka@npm:6.3.4" + checksum: 6bb57955cb2982fb469a7824484e6854b436f89a7f10b6a981348789d88fbc944665771adc4cc404f62416417eb47ab2b8657d898e5301ccd4a53eaac6a10508 languageName: node linkType: hard -"word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f +"word-wrap@npm:^1.2.5, word-wrap@npm:~1.2.3": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb languageName: node linkType: hard @@ -57448,13 +51166,6 @@ __metadata: languageName: node linkType: hard -"workerpool@npm:6.1.0": - version: 6.1.0 - resolution: "workerpool@npm:6.1.0" - checksum: 519d03a4d008fd95ff9e1a583afe537e6a0eecd8250452044e390db3e1dc4ce91616a8ee6c4bba9a2fda38440c2666664c31b50b5a9fd05cc43c739df54d5781 - languageName: node - linkType: hard - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -57487,7 +51198,7 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^6.2.0": +"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" dependencies: @@ -57659,6 +51370,16 @@ __metadata: languageName: node linkType: hard +"xml2js@npm:0.6.2": + version: 0.6.2 + resolution: "xml2js@npm:0.6.2" + dependencies: + sax: ">=0.6.0" + xmlbuilder: ~11.0.0 + checksum: 458a83806193008edff44562c0bdb982801d61ee7867ae58fd35fab781e69e17f40dfeb8fc05391a4648c9c54012066d3955fe5d993ffbe4dc63399023f32ac2 + languageName: node + linkType: hard + "xmlbuilder@npm:^10.0.0": version: 10.1.1 resolution: "xmlbuilder@npm:10.1.1" @@ -57723,14 +51444,14 @@ __metadata: linkType: hard "xss@npm:^1.0.8": - version: 1.0.8 - resolution: "xss@npm:1.0.8" + version: 1.0.15 + resolution: "xss@npm:1.0.15" dependencies: commander: ^2.20.3 cssfilter: 0.0.10 bin: xss: bin/xss - checksum: e43deb43a6e2fbf28aa9029fec6018e643177374994c3d0b4211c8fed54973c90e44c26fd718ac6c6e2d71759ec5920388a1338248ab96789e140bdfebff8504 + checksum: dee066ba0962105475f12ae39fecf4cd6108cb980aefad67578a349d521e6059e184c2d63695a99d58483a02f0c0d48a36816d95c0a0beb56fba60ed53ccd824 languageName: node linkType: hard @@ -57741,7 +51462,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:^4.0.2, xtend@npm:~4.0.1": +"xtend@npm:^4.0.0, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a @@ -57749,9 +51470,9 @@ __metadata: linkType: hard "y18n@npm:^4.0.0": - version: 4.0.1 - resolution: "y18n@npm:4.0.1" - checksum: b31f20cda288a92558e076ed29f5202b60ec41e5a1ddc3368464a6365038f5da6dcd9b30ee0e36c8cd8d354a7eae33d78236191d8b744d1c5199c7fd1f67f055 + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 languageName: node linkType: hard @@ -57762,13 +51483,6 @@ __metadata: languageName: node linkType: hard -"yallist@npm:^2.0.0, yallist@npm:^2.1.2": - version: 2.1.2 - resolution: "yallist@npm:2.1.2" - checksum: 9ba99409209f485b6fcb970330908a6d41fa1c933f75e08250316cce19383179a6b70a7e0721b89672ebb6199cc377bf3e432f55100da6a7d6e11902b0a642cb - languageName: node - linkType: hard - "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" @@ -57798,22 +51512,11 @@ __metadata: linkType: hard "yaml@npm:^2.2.1": - version: 2.4.5 - resolution: "yaml@npm:2.4.5" + version: 2.6.0 + resolution: "yaml@npm:2.6.0" bin: yaml: bin.mjs - checksum: f8efd407c07e095f00f3031108c9960b2b12971d10162b1ec19007200f6c987d2e28f73283f4731119aa610f177a3ea03d4a8fcf640600a25de1b74d00c69b3d - languageName: node - linkType: hard - -"yargonaut@npm:^1.1.2": - version: 1.1.4 - resolution: "yargonaut@npm:1.1.4" - dependencies: - chalk: ^1.1.1 - figlet: ^1.1.1 - parent-require: ^1.0.0 - checksum: d0ffc310a761782ae38022d88e13e84486080b2be2c43e8d5cbb987e40c3d2dd18274c39ce34e05d6bc312a4e768cd4c469d338ed60409adf6f4d870017c63a3 + checksum: e5e74fd75e01bde2c09333d529af9fbb5928c5f7f01bfdefdcb2bf753d4ef489a45cab4deac01c9448f55ca27e691612b81fe3c3a59bb8cb5b0069da0f92cf0b languageName: node linkType: hard @@ -57824,20 +51527,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:20.2.4": - version: 20.2.4 - resolution: "yargs-parser@npm:20.2.4" - checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 - languageName: node - linkType: hard - -"yargs-parser@npm:21.0.1, yargs-parser@npm:^21.0.0": - version: 21.0.1 - resolution: "yargs-parser@npm:21.0.1" - checksum: c3ea2ed12cad0377ce3096b3f138df8267edf7b1aa7d710cd502fe16af417bafe4443dd71b28158c22fcd1be5dfd0e86319597e47badf42ff83815485887323a - languageName: node - linkType: hard - "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -57872,18 +51561,6 @@ __metadata: languageName: node linkType: hard -"yargs-unparser@npm:2.0.0": - version: 2.0.0 - resolution: "yargs-unparser@npm:2.0.0" - dependencies: - camelcase: ^6.0.0 - decamelize: ^4.0.0 - flat: ^5.0.2 - is-plain-obj: ^2.1.0 - checksum: 68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 - languageName: node - linkType: hard - "yargs@npm:15.4.1, yargs@npm:^15.1.0, yargs@npm:^15.3.1": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -57903,22 +51580,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:16.2.0, yargs@npm:^16.0.0, yargs@npm:^16.0.3, yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.0 - y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 - languageName: node - linkType: hard - -"yargs@npm:17.7.2, yargs@npm:^17.0.1, yargs@npm:^17.6.2": +"yargs@npm:17.7.2, yargs@npm:^17.0.0, yargs@npm:^17.0.1, yargs@npm:^17.1.1, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -57933,33 +51595,18 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.0, yargs@npm:^17.3.1": - version: 17.6.0 - resolution: "yargs@npm:17.6.0" - dependencies: - cliui: ^8.0.1 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.3 - y18n: ^5.0.5 - yargs-parser: ^21.0.0 - checksum: 604bdb4a6395a870540d2f3fea083c8e28441f12da8fd05b172b1e68480f00ed73d76be4a05fac19de9bf55ec7729b41e81cf555cccaed700aa192e4fff64872 - languageName: node - linkType: hard - -"yargs@npm:^17.4.0": - version: 17.4.1 - resolution: "yargs@npm:17.4.1" +"yargs@npm:^16.0.0, yargs@npm:^16.0.3, yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" dependencies: cliui: ^7.0.2 escalade: ^3.1.1 get-caller-file: ^2.0.5 require-directory: ^2.1.1 - string-width: ^4.2.3 + string-width: ^4.2.0 y18n: ^5.0.5 - yargs-parser: ^21.0.0 - checksum: e9012322870d7e4e912a6ae1f63b203e365f911c0cf158be92c36edefddfb3bd38ce17eb9ef0d18858a4777f047c50589ea22dacb44bd949169ba37dc6d34bee + yargs-parser: ^20.2.2 + checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 languageName: node linkType: hard @@ -58014,7 +51661,21 @@ __metadata: languageName: node linkType: hard -"zen-observable-ts@npm:^1.2.5": +"yocto-queue@npm:^1.0.0": + version: 1.1.1 + resolution: "yocto-queue@npm:1.1.1" + checksum: f2e05b767ed3141e6372a80af9caa4715d60969227f38b1a4370d60bffe153c9c5b33a862905609afc9b375ec57cd40999810d20e5e10229a204e8bde7ef255c + languageName: node + linkType: hard + +"yoga-layout@npm:^2.0.1": + version: 2.0.1 + resolution: "yoga-layout@npm:2.0.1" + checksum: 65a83b1bf019dcb506c1b10cb0c278718b8eb9ef07c2967c1c8c66c2ce8b3edf44028fbc75e05c5b6492060add7e8e742da22b4afbb44ab199f7bae76114a92a + languageName: node + linkType: hard + +"zen-observable-ts@npm:^1.0.0, zen-observable-ts@npm:^1.2.5": version: 1.2.5 resolution: "zen-observable-ts@npm:1.2.5" dependencies: @@ -58031,24 +51692,24 @@ __metadata: linkType: hard "zip-stream@npm:^4.1.0": - version: 4.1.0 - resolution: "zip-stream@npm:4.1.0" + version: 4.1.1 + resolution: "zip-stream@npm:4.1.1" dependencies: - archiver-utils: ^2.1.0 - compress-commons: ^4.1.0 + archiver-utils: ^3.0.4 + compress-commons: ^4.1.2 readable-stream: ^3.6.0 - checksum: 4a73da856738b0634700b52f4ab3fe0bf0a532bea6820ad962d0bda0163d2d5525df4859f89a7238e204a378384e12551985049790c1894c3ac191866e85887f + checksum: 33bd5ee7017656c2ad728b5d4ba510e15bd65ce1ec180c5bbdc7a5f063256353ec482e6a2bc74de7515219d8494147924b9aae16e63fdaaf37cdf7d1ee8df125 languageName: node linkType: hard "zip-stream@npm:^5.0.1": - version: 5.0.1 - resolution: "zip-stream@npm:5.0.1" + version: 5.0.2 + resolution: "zip-stream@npm:5.0.2" dependencies: archiver-utils: ^4.0.1 compress-commons: ^5.0.1 readable-stream: ^3.6.0 - checksum: 116cee5a2c1ecce7aa440b665470653f58ef56670c6aafa1b5491c9f9335992352145502af5fa865ac82f46336905e37fb7cbc649c2be72e2152c6b91802995c + checksum: caf33dd9624d781ea2ded059c83e3e7adc963557ca399512d2da6ab6e219b35c2985f6ff1a334dd2ab241b4067db6819398c723f3fca89b51b078757df8e3c44 languageName: node linkType: hard @@ -58068,6 +51729,15 @@ __metadata: languageName: node linkType: hard +"zod-validation-error@npm:^2.1.0": + version: 2.1.0 + resolution: "zod-validation-error@npm:2.1.0" + peerDependencies: + zod: ^3.18.0 + checksum: 2331cc8d876c2df0b720b648249447b65d6b85ad0b6e60dd6515170570e6ffbe7a9adb844d44035c07d59c871048d9c45a8c429849bedeb8cbcdfa5f90101402 + languageName: node + linkType: hard + "zod@npm:3.22.4": version: 3.22.4 resolution: "zod@npm:3.22.4" @@ -58075,16 +51745,23 @@ __metadata: languageName: node linkType: hard -"zustand-x@npm:^3.0.1": - version: 3.0.3 - resolution: "zustand-x@npm:3.0.3" +"zod@npm:^3.22.4": + version: 3.23.8 + resolution: "zod@npm:3.23.8" + checksum: 15949ff82118f59c893dacd9d3c766d02b6fa2e71cf474d5aa888570c469dbf5446ac5ad562bb035bf7ac9650da94f290655c194f4a6de3e766f43febd432c5c + languageName: node + linkType: hard + +"zustand-x@npm:^3.0.2": + version: 3.0.4 + resolution: "zustand-x@npm:3.0.4" dependencies: immer: ^10.0.3 lodash.mapvalues: ^4.6.0 react-tracked: ^1.7.11 peerDependencies: zustand: ">=4.3.9" - checksum: 03d13ffe5c7ae346358831f4c3853bdc49178c718df82af289c3533f9d898a85127bcf2a0e8b2175b2ba3242bafbde539660c58b33308fb8a71fd0bdc005e987 + checksum: b14e80483ed6aa92058453e370b1a426a0946beaea27f949ab1482e196f8d21c2b57fd64e2b5bd5b34cad7735009e5ae0b6d5babb1ed1b390a38a7fda80c778b languageName: node linkType: hard @@ -58100,11 +51777,11 @@ __metadata: languageName: node linkType: hard -"zustand@npm:^4.4.7": - version: 4.5.2 - resolution: "zustand@npm:4.5.2" +"zustand@npm:^4.5.2": + version: 4.5.5 + resolution: "zustand@npm:4.5.5" dependencies: - use-sync-external-store: 1.2.0 + use-sync-external-store: 1.2.2 peerDependencies: "@types/react": ">=16.8" immer: ">=9.0.6" @@ -58116,7 +51793,7 @@ __metadata: optional: true react: optional: true - checksum: 160052a7faaefbaad1071e890a06e5d7a04f6ff6985def30a7b4471f4ddbdd1d30bb05b3688a2777cd0b717d1f0d98dad24883a5caa3deeb3afb4d83b6dabc55 + checksum: 654e47959970bc66bbf2ae80fced7e556dd488e9ee54eb678330cb036ecc7184f4b8c2cae273be28022533622c54ab6339bf3fe30d19236367c5c251b6c6679a languageName: node linkType: hard From dadfc7fd62bad0413c5f87b3565266e02148a008 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Thu, 31 Oct 2024 13:44:40 +0000 Subject: [PATCH 116/129] feat(MainContent): update checkbox label in MainContent component --- .../components/MainContent/MainContent.tsx | 2 +- package.json | 5 +- yarn.lock | 24017 ++++++++++------ 3 files changed, 15217 insertions(+), 8807 deletions(-) diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index a6d966a6a0a3..083837b6c638 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -94,7 +94,7 @@ export const MainContent = () => { <Checkbox name="multi" label={formatMessage(m.allowMultiple)} - checked={(activeItem.data as FormSystemScreen).multiset !== 0 ?? false} + checked={(activeItem.data as FormSystemScreen).multiset !== 0} onChange={(e) => controlDispatch({ type: 'TOGGLE_MULTI_SET', diff --git a/package.json b/package.json index 484f0296774d..ea67a20d57e2 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "font-awesome": "4.7.0", "form-data": "3.0.0", "formik": "2.2.9", - "framer-motion": "9.0.0", + "framer-motion": "11.11.9", "fridagar": "^3.2.0", "fuse.js": "7.0.0", "glob": "10.3.3", @@ -360,7 +360,7 @@ "@nx/webpack": "19.4.0", "@nx/workspace": "19.4.0", "@openapitools/openapi-generator-cli": "1.0.15-4.3.1", - "@playwright/test": "1.29", + "@playwright/test": "1.48", "@storybook/addon-a11y": "7.6.9", "@storybook/addon-essentials": "7.6.9", "@storybook/addon-mdx-gfm": "7.6.9", @@ -457,6 +457,7 @@ "license-checker": "25.0.1", "mailparser": "3.5.0", "next-secure-headers": "2.1.0", + "nodemailer-mock": "2.0.6", "nx": "19.4.0", "prettier": "2.6.2", "sequelize-cli": "6.4.1", diff --git a/yarn.lock b/yarn.lock index e227b63fa4ef..a46b95402123 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,32 +5,48 @@ __metadata: version: 6 cacheKey: 8 -"@0no-co/graphql.web@npm:^1.0.5": - version: 1.0.9 - resolution: "@0no-co/graphql.web@npm:1.0.9" +"@0no-co/graphql.web@npm:^1.0.0": + version: 1.0.0 + resolution: "@0no-co/graphql.web@npm:1.0.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true - checksum: a7580304d3b545b69e11e4a7b95d0c81b5fee3d071f92b1386f0f2e4e4f69703cbe19e0a4f5c489cbb70e7b5ac1ccec3a51f529c85dfbbccf8ebd6370fd6b0e2 + checksum: 54e5651dd1c3806ced064b6e0bba5b6bc958b69898a1c3fbe0c96c5a0fb7189de9f479946159dd2e20d39a1b3b655de11da0b8b2dc92761132b61949872c7277 + languageName: node + linkType: hard + +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: ada901b9e7c680d190f1d012c84217ce0063d8f5c5a7725bb91ec3c5ed99bb7572680eb2d2938a531ccbaec39a95422fcd8a6b4a13110c7d98dd75402f66a0cd languageName: node linkType: hard "@adobe/css-tools@npm:^4.0.1": - version: 4.4.0 - resolution: "@adobe/css-tools@npm:4.4.0" - checksum: 1f08fb49bf17fc7f2d1a86d3e739f29ca80063d28168307f1b0a962ef37501c5667271f6771966578897f2e94e43c4770fd802728a6e6495b812da54112d506a + version: 4.0.1 + resolution: "@adobe/css-tools@npm:4.0.1" + checksum: 80226e2229024c21da9ffa6b5cd4a34b931f071e06f45aba4777ade071d7a6c94605cf73b13718b0c4b34e8b124c65c607b82eaa53a326d3eb73d9682a04a593 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.1.0": + version: 2.1.2 + resolution: "@ampproject/remapping@npm:2.1.2" + dependencies: + "@jridgewell/trace-mapping": ^0.3.0 + checksum: e023f92cdd9723f3042cde3b4d922adfeef0e198aa73486b0b6c034ad36af5f96e5c0cc72b335b30b2eb9852d907efc92af6bfcd3f4b4d286177ee32a189cf92 languageName: node linkType: hard "@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" dependencies: - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.24 - checksum: d3ad7b89d973df059c4e8e6d7c972cbeb1bb2f18f002a3bd04ae0707da214cb06cc06929b65aa2313b9347463df2914772298bae8b1d7973f246bb3f2ab3e8f0 + "@jridgewell/gen-mapping": ^0.3.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 03c04fd526acc64a1f4df22651186f3e5ef0a9d6d6530ce4482ec9841269cf7a11dbb8af79237c282d721c5312024ff17529cd72cc4768c11e999b58e2302079 languageName: node linkType: hard @@ -113,12 +129,12 @@ __metadata: linkType: hard "@anev/ts-mountebank@npm:^1.6.0": - version: 1.8.0 - resolution: "@anev/ts-mountebank@npm:1.8.0" + version: 1.6.0 + resolution: "@anev/ts-mountebank@npm:1.6.0" dependencies: - superagent: ^8.1.2 - typescript: ^5.2.2 - checksum: 7ce29bdbb3ec6858f033ddc80c5043fd5afcdc7a87faadf2cb50b2c49e941c1e9a7b4165d3465158714e4a3119da407efebf40f127ba634377637e0490bb86fe + superagent: ^6.1.0 + typescript: ^4.4.2 + checksum: d60cb7f453a6f29dd215db3481a50b9bc1447405a7b99c6c79f4910f22f8c220d7bebaf707a6d857f15558ec65bff9d463427ef653751c9f3d08fb434afd6391 languageName: node linkType: hard @@ -227,11 +243,11 @@ __metadata: linkType: hard "@apollo/cache-control-types@npm:^1.0.2": - version: 1.0.3 - resolution: "@apollo/cache-control-types@npm:1.0.3" + version: 1.0.2 + resolution: "@apollo/cache-control-types@npm:1.0.2" peerDependencies: graphql: 14.x || 15.x || 16.x - checksum: 1c2791f3c7fa0fc609bd42cebcb6a0d1ccfcee9b22e54c4aa5af918944ae9dbdd45d7b84670afc6de34444e9226e9e82523bc3969805b506b86fd28dc9abc9fa + checksum: 1e00c57b45fbd8656c96cdcd254658f332c1955bd8db9274c665e1c6ef8ac881a6b6a3f953b60638ae5f59fdfce6b005adb9a5b945b694903579a9665499e823 languageName: node linkType: hard @@ -308,28 +324,26 @@ __metadata: linkType: hard "@apollo/composition@npm:^2.1.1": - version: 2.9.3 - resolution: "@apollo/composition@npm:2.9.3" + version: 2.1.3 + resolution: "@apollo/composition@npm:2.1.3" dependencies: - "@apollo/federation-internals": 2.9.3 - "@apollo/query-graphs": 2.9.3 + "@apollo/federation-internals": ^2.1.3 + "@apollo/query-graphs": ^2.1.3 peerDependencies: graphql: ^16.5.0 - checksum: 58b00da585d378eb42bf9e1e4cf355d2cb5c096848fce76cc473c459debe846ca44f69d921b3ea51eca21af438ce9e5f22f27e69d97dfb3767e3d3e479229c09 + checksum: c63f443540a8af2cf9f11468a447334de94dacfac2571d7cf5c903f69887b9850ebe25ccc0a19353ce1ce5de8f4cad7f4b26e63f4c454e254f0e1f2f6cdd7fb9 languageName: node linkType: hard -"@apollo/federation-internals@npm:2.9.3, @apollo/federation-internals@npm:^2.1.1": - version: 2.9.3 - resolution: "@apollo/federation-internals@npm:2.9.3" +"@apollo/federation-internals@npm:^2.1.1, @apollo/federation-internals@npm:^2.1.3": + version: 2.1.3 + resolution: "@apollo/federation-internals@npm:2.1.3" dependencies: - "@types/uuid": ^9.0.0 chalk: ^4.1.0 js-levenshtein: ^1.1.6 - uuid: ^9.0.0 peerDependencies: graphql: ^16.5.0 - checksum: 1227e9c63d7e5dc8aa935a248959103675fe163423ec05d09fbbe8fa9434c040d0280248091978708ca97b0766178ac2e5f88892a20dcecf7600065924bae59c + checksum: a80a9f1e1b7490ba8a01e17a11cea22d381c35cc9134858b7bc8a0012adf077a285d173bbe54874b685c33af619b6cf041fc8b52af8bf541e911df83a0a445fc languageName: node linkType: hard @@ -385,70 +399,45 @@ __metadata: languageName: node linkType: hard -"@apollo/protobufjs@npm:1.2.7": - version: 1.2.7 - resolution: "@apollo/protobufjs@npm:1.2.7" - dependencies: - "@protobufjs/aspromise": ^1.1.2 - "@protobufjs/base64": ^1.1.2 - "@protobufjs/codegen": ^2.0.4 - "@protobufjs/eventemitter": ^1.1.0 - "@protobufjs/fetch": ^1.1.0 - "@protobufjs/float": ^1.0.2 - "@protobufjs/inquire": ^1.1.0 - "@protobufjs/path": ^1.1.2 - "@protobufjs/pool": ^1.1.0 - "@protobufjs/utf8": ^1.1.0 - "@types/long": ^4.0.0 - long: ^4.0.0 - bin: - apollo-pbjs: bin/pbjs - apollo-pbts: bin/pbts - checksum: e01a33984ae06d6679f6796bb44e55260112ddd090ebc9f87d3f952c45153dd5df5c91ac4bf91ba60fb72ff8c1218059ce4bf8bb2eb08c5049c783de0098eec0 - languageName: node - linkType: hard - -"@apollo/query-graphs@npm:2.9.3": - version: 2.9.3 - resolution: "@apollo/query-graphs@npm:2.9.3" +"@apollo/query-graphs@npm:^2.1.3": + version: 2.1.3 + resolution: "@apollo/query-graphs@npm:2.1.3" dependencies: - "@apollo/federation-internals": 2.9.3 + "@apollo/federation-internals": ^2.1.3 deep-equal: ^2.0.5 - ts-graphviz: ^1.5.4 - uuid: ^9.0.0 + ts-graphviz: ^0.16.0 peerDependencies: graphql: ^16.5.0 - checksum: f83c0c545f46706379e04503abc1b9be9c8b11eaa78d75d54254eebfb8417ac7304c0df3b56f198d58a8c35947425bf9a691ff5391812d564602710d8c56f848 + checksum: 919029ce34510d1d8a747d803b8cde603ddd56f947c5bc2676eba7fd3a2f427112bffcdf19f79f71c14f19cf846f33688324876dded06c38cc51d03df8038f70 languageName: node linkType: hard "@apollo/query-planner@npm:^2.1.1": - version: 2.9.3 - resolution: "@apollo/query-planner@npm:2.9.3" + version: 2.1.3 + resolution: "@apollo/query-planner@npm:2.1.3" dependencies: - "@apollo/federation-internals": 2.9.3 - "@apollo/query-graphs": 2.9.3 - "@apollo/utils.keyvaluecache": ^2.1.0 + "@apollo/federation-internals": ^2.1.3 + "@apollo/query-graphs": ^2.1.3 chalk: ^4.1.0 deep-equal: ^2.0.5 - pretty-format: ^29.0.0 + pretty-format: ^28.0.0 peerDependencies: graphql: ^16.5.0 - checksum: 65aaded0777e0ced4f9bd7bb770d2f28df2dc8661355f312fae74a942b11f2d6a42cf4101347f6f1a06f034c81b6b562501edbd4a00a615d4ab41287b43d4490 + checksum: e24fc504f944b7224278a8b528e5e5a7619955f0caa3e8ed2f65ca744bd26c2a60fe714baf378ca757ec372325abad1fb82154462ce7e497be7922bfbbaa81e7 languageName: node linkType: hard "@apollo/server-gateway-interface@npm:^1.0.2": - version: 1.1.1 - resolution: "@apollo/server-gateway-interface@npm:1.1.1" + version: 1.0.4 + resolution: "@apollo/server-gateway-interface@npm:1.0.4" dependencies: - "@apollo/usage-reporting-protobuf": ^4.1.1 - "@apollo/utils.fetcher": ^2.0.0 - "@apollo/utils.keyvaluecache": ^2.1.0 - "@apollo/utils.logger": ^2.0.0 + "@apollo/usage-reporting-protobuf": ^4.0.0 + "@apollo/utils.fetcher": ^1.0.0 + "@apollo/utils.keyvaluecache": ^1.0.1 + "@apollo/utils.logger": ^1.0.0 peerDependencies: graphql: 14.x || 15.x || 16.x - checksum: b85ca1682258f6d022b49acf4b6cb8147a4cc38fcc0e68fa3ca6a00843bee5b84f8317af26cbe3e6a41ede6990eb7eb733c50a123441a1efab56572b7d0fd6dc + checksum: 1931a038d5ad4331d9794143d91d579bdb136604b4df8feeac8e9b1653cc935c1674b803120fcacff3748bdd2f2e5dbfd99ec46fc4329507fecff99379ba283c languageName: node linkType: hard @@ -464,12 +453,12 @@ __metadata: languageName: node linkType: hard -"@apollo/usage-reporting-protobuf@npm:^4.0.0, @apollo/usage-reporting-protobuf@npm:^4.1.1": - version: 4.1.1 - resolution: "@apollo/usage-reporting-protobuf@npm:4.1.1" +"@apollo/usage-reporting-protobuf@npm:^4.0.0": + version: 4.0.0 + resolution: "@apollo/usage-reporting-protobuf@npm:4.0.0" dependencies: - "@apollo/protobufjs": 1.2.7 - checksum: 899f13cfb57cfe4320e50fff84254604c25538620aa5a56bad06fb4fc929a8842237b376a5ab6d82800d9aceacc8e79ccae01a1c11e85456d4a9ed50a6fe40ee + "@apollo/protobufjs": 1.2.6 + checksum: 86a0d392932d8103bc14d0900dcd5d209eedf8aeb598c9c54fb8aa44bda59f3fab4c03f1358acdbf9c523858c24ecad12677a45e46c17a259e21f18c13a7bf49 languageName: node linkType: hard @@ -492,20 +481,13 @@ __metadata: languageName: node linkType: hard -"@apollo/utils.fetcher@npm:^1.1.0": +"@apollo/utils.fetcher@npm:^1.0.0, @apollo/utils.fetcher@npm:^1.1.0": version: 1.1.1 resolution: "@apollo/utils.fetcher@npm:1.1.1" checksum: 7f2284cfddeb59775dc471d20d0a447049f32c069df429ac4aa7b733bd341f6cc9b755fd37226a73b00a4c9fa7f598cb2f5ce0a98dc22a2ce9217cc6947f5f09 languageName: node linkType: hard -"@apollo/utils.fetcher@npm:^2.0.0": - version: 2.0.1 - resolution: "@apollo/utils.fetcher@npm:2.0.1" - checksum: 9cb0e759f61c6d2bfe3319eeb273e30e52212fa79e59da0ae29ac96fa735cb1bb333b6a97c39df62e36acb0c4a15d62d1bc6b0027a9ca41f5d1c995561b668f2 - languageName: node - linkType: hard - "@apollo/utils.isnodelike@npm:^1.1.0": version: 1.1.0 resolution: "@apollo/utils.isnodelike@npm:1.1.0" @@ -525,32 +507,22 @@ __metadata: linkType: hard "@apollo/utils.keyvaluecache@npm:^1.0.1": - version: 1.0.2 - resolution: "@apollo/utils.keyvaluecache@npm:1.0.2" + version: 1.0.1 + resolution: "@apollo/utils.keyvaluecache@npm:1.0.1" dependencies: "@apollo/utils.logger": ^1.0.0 - lru-cache: 7.10.1 - 7.13.1 - checksum: e07414e44fd4d79e14c97999cb53335cffdd419f3df9364cc32e865f4802b79b50e7f3b5fbdd6a5f21b1cb01a9de290fae8dd55cc616e0e32310c5dfdb4dcc5e - languageName: node - linkType: hard - -"@apollo/utils.keyvaluecache@npm:^2.1.0": - version: 2.1.1 - resolution: "@apollo/utils.keyvaluecache@npm:2.1.1" - dependencies: - "@apollo/utils.logger": ^2.0.1 - lru-cache: ^7.14.1 - checksum: c49b297a30ef02336d605a9fd342443eb9ea7ea36b9331a2cd5f8cb1613656e5d06b4445ca09784b18c12b417bca17fe09d40e25196266e2a734da3200d27ea5 + lru-cache: ^7.10.1 + checksum: 1a5dbd2eae0575905e25d471430d431d145b767ee6f5e8efe3ba64ed44208db131f437e36cf17df6623ae6de97a87c4c8691b4a274510b52ab49f6afe9627a3b languageName: node linkType: hard "@apollo/utils.keyvaluecache@npm:^3.0.0": - version: 3.1.0 - resolution: "@apollo/utils.keyvaluecache@npm:3.1.0" + version: 3.0.0 + resolution: "@apollo/utils.keyvaluecache@npm:3.0.0" dependencies: "@apollo/utils.logger": ^3.0.0 - lru-cache: ^10.0.0 - checksum: 53ec867ed0002ba06c1ce0b4877931a5437dbc5bfab9fd4bd8344cea5785529b809ff3b6eb5cd65439823dd5275eb8a252b01d80ed722d7cba9304aefe441fb6 + lru-cache: ^9.0.3 + checksum: 4cdeefa8cb1991abc53b2f636ad26b6255516086f6dea88f0502be9c46598ffa804ab512af7aa95f6903f8496fb4c649144b18f092a60a1b11d7c8a662936125 languageName: node linkType: hard @@ -561,13 +533,6 @@ __metadata: languageName: node linkType: hard -"@apollo/utils.logger@npm:^2.0.0, @apollo/utils.logger@npm:^2.0.1": - version: 2.0.1 - resolution: "@apollo/utils.logger@npm:2.0.1" - checksum: f975c81fcc7e54669b975031349f292930dc4cc3dd6bdc58bc7fe2159e0398a7d18b28860ee324c23722b005848e258094a143d20f6989fde5837379240b0066 - languageName: node - linkType: hard - "@apollo/utils.logger@npm:^3.0.0": version: 3.0.0 resolution: "@apollo/utils.logger@npm:3.0.0" @@ -614,18 +579,18 @@ __metadata: linkType: hard "@apollo/utils.usagereporting@npm:^1.0.0": - version: 1.0.1 - resolution: "@apollo/utils.usagereporting@npm:1.0.1" + version: 1.0.0 + resolution: "@apollo/utils.usagereporting@npm:1.0.0" dependencies: - "@apollo/usage-reporting-protobuf": ^4.0.0 "@apollo/utils.dropunuseddefinitions": ^1.1.0 "@apollo/utils.printwithreducedwhitespace": ^1.1.0 "@apollo/utils.removealiases": 1.0.0 "@apollo/utils.sortast": ^1.1.0 "@apollo/utils.stripsensitiveliterals": ^1.2.0 + apollo-reporting-protobuf: ^3.3.1 peerDependencies: graphql: 14.x || 15.x || 16.x - checksum: 20d79f2b6d177f1f78421175d7b1db6a3cb2bc2fa67e0e09850450657914f5adaa7e8d2e5f3906bc07fa4f1c5a28221f2421eb284b9170f4b0acfabdb71212f6 + checksum: 9f4d1b8381fc7930619c51ce96580e61e604455e01701de9c822245d3a7583553a0cc4c050450ddf80d8e556682b2ac79ed784c58a8b98b52cf097d344c5d1d8 languageName: node linkType: hard @@ -676,7 +641,7 @@ __metadata: languageName: node linkType: hard -"@ardatan/sync-fetch@npm:^0.0.1": +"@ardatan/sync-fetch@npm:0.0.1": version: 0.0.1 resolution: "@ardatan/sync-fetch@npm:0.0.1" dependencies: @@ -2032,7 +1997,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.110.0, @aws-sdk/types@npm:^3.222.0": +"@aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.110.0": version: 3.679.0 resolution: "@aws-sdk/types@npm:3.679.0" dependencies: @@ -2042,6 +2007,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/types@npm:^3.222.0": + version: 3.609.0 + resolution: "@aws-sdk/types@npm:3.609.0" + dependencies: + "@smithy/types": ^3.3.0 + tslib: ^2.6.2 + checksum: 522768d08f104065b0ff6a37eddaa7803186014acee1c0011b3dbd3ef841e47ae694e58f608aeec8a39d22d644d759ade996fe51d18b880617778dc2dbbe1ede + languageName: node + linkType: hard + "@aws-sdk/url-parser@npm:3.127.0": version: 3.127.0 resolution: "@aws-sdk/url-parser@npm:3.127.0" @@ -2178,11 +2153,11 @@ __metadata: linkType: hard "@aws-sdk/util-locate-window@npm:^3.0.0": - version: 3.679.0 - resolution: "@aws-sdk/util-locate-window@npm:3.679.0" + version: 3.37.0 + resolution: "@aws-sdk/util-locate-window@npm:3.37.0" dependencies: - tslib: ^2.6.2 - checksum: a92402253aff12be137abff0f6ce1acbda89d9dfb2267753d7907479592cba3682e91ccefd21b912cf4b62bac3068b3278ab5cd79f09c46b63edf31170fa56df + tslib: ^2.3.0 + checksum: d17fd73797d093a0de2e53ed3999562061858f78b88f993a83d8035fdda613c252a2fbab9abaf1d4fb595ae84e1747e17b137f8079fb99568c0c1641c54f5c4f languageName: node linkType: hard @@ -2310,9 +2285,9 @@ __metadata: linkType: hard "@azure/msal-common@npm:^9.0.0": - version: 9.1.1 - resolution: "@azure/msal-common@npm:9.1.1" - checksum: d51d645ee485b699a0fbeab6d9bb01c91f4124704f756266e109c2d1d8ea0ca8d66a9ab81f62f9f76e7358906badcf7d2dd9911c18e20f57770ec9beb4fc4fcd + version: 9.0.0 + resolution: "@azure/msal-common@npm:9.0.0" + checksum: e4b1fcff3a95a019761e62b6a3a7a8a5a67905826771ed262b8741efa719afb992db213b74b1000b1fee6faf8041189045fd32beb9d0e69961a7ee0980539546 languageName: node linkType: hard @@ -2336,20 +2311,90 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/code-frame@npm:7.25.9" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/code-frame@npm:7.18.6" dependencies: - "@babel/highlight": ^7.25.9 + "@babel/highlight": ^7.18.6 + checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/code-frame@npm:7.21.4" + dependencies: + "@babel/highlight": ^7.18.6 + checksum: e5390e6ec1ac58dcef01d4f18eaf1fd2f1325528661ff6d4a5de8979588b9f5a8e852a54a91b923846f7a5c681b217f0a45c2524eb9560553160cd963b7d592c + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.22.5": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" + dependencies: + "@babel/highlight": ^7.22.13 + chalk: ^2.4.2 + checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": ^7.24.7 picocolors: ^1.0.0 - checksum: 458015f42f130bc70a19aaf016eaabb51e8c6508feb65394115972621bf864c2cc6b07ee547b1d95e2fde958e14243f79a4d0223ef6d52963820cafcf6fcf11b + checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.17.10, @babel/compat-data@npm:^7.19.3": + version: 7.19.4 + resolution: "@babel/compat-data@npm:7.19.4" + checksum: 757fdaeb6756c2d323ff56f60fb8e670292108cda6abf762a56c0d40910ecc4d2c7e283dbdfbcee6bc28c74ad659144352609e1cb49d31e101ab13ea5ce90072 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/compat-data@npm:7.21.4" + checksum: 5f8b98c66f2ffba9f3c3a82c0cf354c52a0ec5ad4797b370dc32bdcd6e136ac4febe5e93d76ce76e175632e2dbf6ce9f46319aa689fcfafa41b6e49834fa4b66 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.0, @babel/compat-data@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/compat-data@npm:7.22.3" + checksum: eb001646f41459f42ccb0d39ee8bb3c3c495bc297234817044c0002689c625e3159a6678c53fd31bd98cf21f31472b73506f350fc6906e3bdfa49cb706e2af8d + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.5": + version: 7.22.20 + resolution: "@babel/compat-data@npm:7.22.20" + checksum: efedd1d18878c10fde95e4d82b1236a9aba41395ef798cbb651f58dbf5632dbff475736c507b8d13d4c8f44809d41c0eb2ef0d694283af9ba5dd8339b6dab451 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/compat-data@npm:7.22.9" + checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/compat-data@npm:7.24.7" + checksum: 1fc276825dd434fe044877367dfac84171328e75a8483a6976aa28bf833b32367e90ee6df25bdd97c287d1aa8019757adcccac9153de70b1932c0d243a978ae9 languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/compat-data@npm:7.25.9" - checksum: 59d8c9d4907076e9a7a02ef065faec7b6f512bdaaf160dfa4e3c4476d816203a304d6e86e7104b063ac7cde571ee20dd83eb7b5260ef2e7cd06ca681bc424aa7 +"@babel/compat-data@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/compat-data@npm:7.25.2" + checksum: b61bc9da7cfe249f19d08da00f4f0c20550cd9ad5bffcde787c2bf61a8a6fa5b66d92bbd89031f3a6e5495a799a2a2499f2947b6cc7964be41979377473ab132 languageName: node linkType: hard @@ -2376,32 +2421,124 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.10.4, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.10, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.22.9, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.7.5": - version: 7.25.9 - resolution: "@babel/core@npm:7.25.9" +"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.10, @babel/core@npm:^7.14.0, @babel/core@npm:^7.7.5": + version: 7.19.3 + resolution: "@babel/core@npm:7.19.3" + dependencies: + "@ampproject/remapping": ^2.1.0 + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.19.3 + "@babel/helper-compilation-targets": ^7.19.3 + "@babel/helper-module-transforms": ^7.19.0 + "@babel/helpers": ^7.19.0 + "@babel/parser": ^7.19.3 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.19.3 + "@babel/types": ^7.19.3 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.1 + semver: ^6.3.0 + checksum: dd883311209ad5a2c65b227daeb7247d90a382c50f4c6ad60c5ee40927eb39c34f0690d93b775c0427794261b72fa8f9296589a2dbda0782366a9f1c6de00c08 + languageName: node + linkType: hard + +"@babel/core@npm:^7.10.4, @babel/core@npm:^7.13.16, @babel/core@npm:^7.20.0": + version: 7.21.4 + resolution: "@babel/core@npm:7.21.4" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.25.9 - "@babel/generator": ^7.25.9 - "@babel/helper-compilation-targets": ^7.25.9 - "@babel/helper-module-transforms": ^7.25.9 - "@babel/helpers": ^7.25.9 - "@babel/parser": ^7.25.9 - "@babel/template": ^7.25.9 - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 + "@babel/code-frame": ^7.21.4 + "@babel/generator": ^7.21.4 + "@babel/helper-compilation-targets": ^7.21.4 + "@babel/helper-module-transforms": ^7.21.2 + "@babel/helpers": ^7.21.0 + "@babel/parser": ^7.21.4 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.21.4 + "@babel/types": ^7.21.4 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.2 + semver: ^6.3.0 + checksum: a3beebb2cc79908a02f27a07dc381bcb34e8ecc58fa99f568ad0934c49e12111fc977ee9c5b51eb7ea2da66f63155d37c4dd96b6472eaeecfc35843ccb56bf3d + languageName: node + linkType: hard + +"@babel/core@npm:^7.18.9, @babel/core@npm:^7.23.2": + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.0 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-module-transforms": ^7.25.2 + "@babel/helpers": ^7.25.0 + "@babel/parser": ^7.25.0 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.2 + "@babel/types": ^7.25.2 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 6633cd8abdd679ffefe526a6611d4721f90f76ebf1944a8501e8beccad24a4a71c07530c8245370660c6449618b9f454a3326bac85ff03d61df7bab6f0710522 + checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a + languageName: node + linkType: hard + +"@babel/core@npm:^7.21.3": + version: 7.22.1 + resolution: "@babel/core@npm:7.22.1" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.21.4 + "@babel/generator": ^7.22.0 + "@babel/helper-compilation-targets": ^7.22.1 + "@babel/helper-module-transforms": ^7.22.1 + "@babel/helpers": ^7.22.0 + "@babel/parser": ^7.22.0 + "@babel/template": ^7.21.9 + "@babel/traverse": ^7.22.1 + "@babel/types": ^7.22.0 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.2 + semver: ^6.3.0 + checksum: bbe45e791f223a7e692d2ea6597a73f48050abd24b119c85c48ac6504c30ce63343a2ea3f79b5847bf4b409ddd8a68b6cdc4f0272ded1d2ef6f6b1e9663432f0 + languageName: node + linkType: hard + +"@babel/core@npm:^7.22.9": + version: 7.22.17 + resolution: "@babel/core@npm:7.22.17" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-module-transforms": ^7.22.17 + "@babel/helpers": ^7.22.15 + "@babel/parser": ^7.22.16 + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.17 + "@babel/types": ^7.22.17 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 355216a342d1b3952d7c040dd4c99ecef6b3501ba99a713703c1fec1ae73bc92a48a0c1234562bdbb4fd334b2e452f5a6c3bb282f0e613fa89e1518c91d1aea1 languageName: node linkType: hard "@babel/eslint-parser@npm:^7.20.0": - version: 7.25.9 - resolution: "@babel/eslint-parser@npm:7.25.9" + version: 7.24.7 + resolution: "@babel/eslint-parser@npm:7.24.7" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 eslint-visitor-keys: ^2.1.0 @@ -2409,115 +2546,405 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: dd2afa122b62a5b07c1e71d1c23b2cd4d655d96609eb2ba1b1ae3ec6f415f4365b77d6669ff859aa7b75952fb63a1d29c5db6e5811fc4012841491cb2dee36e4 + checksum: 0e08ccecfe48cf9dacd96fb46747014b9c3683882ae6886a17a666533f0d5e99b61e31e3992ffee0efc67d805ae8be9b2a6342ce5d66a36de8d99d88c9a244a0 languageName: node linkType: hard -"@babel/generator@npm:7.2.0": - version: 7.2.0 - resolution: "@babel/generator@npm:7.2.0" +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.19.3, @babel/generator@npm:^7.19.4, @babel/generator@npm:^7.7.2": + version: 7.19.5 + resolution: "@babel/generator@npm:7.19.5" dependencies: - "@babel/types": ^7.2.0 + "@babel/types": ^7.19.4 + "@jridgewell/gen-mapping": ^0.3.2 jsesc: ^2.5.1 - lodash: ^4.17.10 - source-map: ^0.5.0 - trim-right: ^1.0.1 - checksum: 0cfa36e3fee34908194e85a87dfcd2a92425e3810396556ae0c7987707754f1a2502cd66590fec0a5b7bf532ec021b8e2925a1119db54ed5b48f1e3c43145891 + checksum: a66eafc540f80fc36c1b009b28bde1d12aff85e7916e7f5adf49c5a8866fecee4906b3c3c6db315d2723ea54e4e5ddfb2913fe6ab424f51dbccf753000930eaf languageName: node linkType: hard -"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.20.0, @babel/generator@npm:^7.20.5, @babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.23.0, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/generator@npm:7.25.9" +"@babel/generator@npm:^7.20.0, @babel/generator@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/generator@npm:7.21.4" dependencies: - "@babel/types": ^7.25.9 + "@babel/types": ^7.21.4 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 9ffbb526a53bb8469b5402f7b5feac93809b09b2a9f82fcbfcdc5916268a65dae746a1f2479e03ba4fb0776facd7c892191f63baa61ab69b2cfdb24f7b92424d + languageName: node + linkType: hard + +"@babel/generator@npm:^7.20.5, @babel/generator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/generator@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 "@jridgewell/gen-mapping": ^0.3.5 "@jridgewell/trace-mapping": ^0.3.25 - jsesc: ^3.0.2 - checksum: 4b8f27363e6521ca9e33d307744aeff8b6f540492eb935e597e115304d999eb228b24d43ce679e2c0337b4a98966ae28dc53f1fab86db1eb852d53e11120fd7b + jsesc: ^2.5.1 + checksum: 0ff31a73b15429f1287e4d57b439bba4a266f8c673bb445fe313b82f6d110f586776997eb723a777cd7adad9d340edd162aea4973a90112c5d0cfcaf6686844b + languageName: node + linkType: hard + +"@babel/generator@npm:^7.22.0, @babel/generator@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/generator@npm:7.22.3" + dependencies: + "@babel/types": ^7.22.3 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: ccb6426ca5b5a38f0d47a3ac9628e223d2aaaa489cbf90ffab41468795c22afe86855f68a58667f0f2673949f1810d4d5a57b826c17984eab3e28fdb34a909e6 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.22.15, @babel/generator@npm:^7.22.9": + version: 7.22.15 + resolution: "@babel/generator@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 5b2a3ccdc3634f6ea86e0a442722bcd430238369432d31f15b428a4ee8013c2f4f917b5b135bf4fc1d0a3e2f87f10fd4ce5d07955ecc2d3b9400a05c2a481374 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/generator@npm:7.23.0" + dependencies: + "@babel/types": ^7.23.0 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 8efe24adad34300f1f8ea2add420b28171a646edc70f2a1b3e1683842f23b8b7ffa7e35ef0119294e1901f45bfea5b3dc70abe1f10a1917ccdfb41bed69be5f1 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/generator@npm:7.25.0" + dependencies: + "@babel/types": ^7.25.0 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^2.5.1 + checksum: bf25649dde4068bff8e387319bf820f2cb3b1af7b8c0cfba0bd90880656427c8bad96cd5cb6db7058d20cffe93149ee59da16567018ceaa21ecaefbf780a785c + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.16.0, @babel/helper-annotate-as-pure@npm:^7.16.7, @babel/helper-annotate-as-pure@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 53da330f1835c46f26b7bf4da31f7a496dee9fd8696cca12366b94ba19d97421ce519a74a837f687749318f94d1a37f8d1abcbf35e8ed22c32d16373b2f6198d + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: 6178566099a6a0657db7a7fa601a54fb4731ca0b8614fbdccfd8e523c210c13963649bc8fdfd53ce7dd14d05e3dda2fb22dea5b30113c488b9eb1a906d60212e + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": + version: 7.18.9 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" + dependencies: + "@babel/helper-explode-assignable-expression": ^7.18.6 + "@babel/types": ^7.18.9 + checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + checksum: 639c697a1c729f9fafa2dd4c9af2e18568190299b5907bd4c2d0bc818fcbd1e83ffeecc2af24327a7faa7ac4c34edd9d7940510a5e66296c19bad17001cf5c7a + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 71a6158a9fdebffb82fdc400d5555ba8f2e370cea81a0d578155877bdc4db7d5252b75c43b2fdf3f72b3f68348891f99bd35ae315542daad1b7ace8322b1abcb + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.16.7, @babel/helper-compilation-targets@npm:^7.17.10, @babel/helper-compilation-targets@npm:^7.19.3": + version: 7.19.3 + resolution: "@babel/helper-compilation-targets@npm:7.19.3" + dependencies: + "@babel/compat-data": ^7.19.3 + "@babel/helper-validator-option": ^7.18.6 + browserslist: ^4.21.3 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: aafcb4490c98cddb3255fff98bfbdb881b4def85a1935fd9b1f9b1f0f8b502696839f6b387fb508ca991ea72ba82ce6913bab99f21df4ce80bda2b79e91a09f5 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/helper-compilation-targets@npm:7.21.4" + dependencies: + "@babel/compat-data": ^7.21.4 + "@babel/helper-validator-option": ^7.21.0 + browserslist: ^4.21.3 + lru-cache: ^5.1.1 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: bf9c7d3e7e6adff9222c05d898724cd4ee91d7eb9d52222c7ad2a22955620c2872cc2d9bdf0e047df8efdb79f4e3af2a06b53f509286145feccc4d10ddc318be languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.22.5, @babel/helper-annotate-as-pure@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" +"@babel/helper-compilation-targets@npm:^7.22.1": + version: 7.22.1 + resolution: "@babel/helper-compilation-targets@npm:7.22.1" dependencies: - "@babel/types": ^7.25.9 - checksum: 41edda10df1ae106a9b4fe617bf7c6df77db992992afd46192534f5cff29f9e49a303231733782dd65c5f9409714a529f215325569f14282046e9d3b7a1ffb6c + "@babel/compat-data": ^7.22.0 + "@babel/helper-validator-option": ^7.21.0 + browserslist: ^4.21.3 + lru-cache: ^5.1.1 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: a686a01bd3288cf95ca26faa27958d34c04e2501c4b0858c3a6558776dec20317b5635f33d64c5a635b6fbdfe462a85c30d4bfa0ae7e7ffe3467e4d06442d7c8 languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.9" +"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": + version: 7.22.15 + resolution: "@babel/helper-compilation-targets@npm:7.22.15" dependencies: - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: e1bb465b3b0155702d82cfef09e3813e87a6d777cdd2c513796861eac14953340491eafea1d4109278bf4ceb48b54074c45758f042c0544d00c498090bee5a6f + "@babel/compat-data": ^7.22.9 + "@babel/helper-validator-option": ^7.22.15 + browserslist: ^4.21.9 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: ce85196769e091ae54dd39e4a80c2a9df1793da8588e335c383d536d54f06baf648d0a08fc873044f226398c4ded15c4ae9120ee18e7dfd7c639a68e3cdc9980 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-compilation-targets@npm:7.25.9" +"@babel/helper-compilation-targets@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-compilation-targets@npm:7.24.7" dependencies: - "@babel/compat-data": ^7.25.9 - "@babel/helper-validator-option": ^7.25.9 - browserslist: ^4.24.0 + "@babel/compat-data": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + browserslist: ^4.22.2 lru-cache: ^5.1.1 semver: ^6.3.1 - checksum: 3af536e2db358b38f968abdf7d512d425d1018fef2f485d6f131a57a7bcaed32c606b4e148bb230e1508fa42b5b2ac281855a68eb78270f54698c48a83201b9b + checksum: dfc88bc35e223ade796c7267901728217c665adc5bc2e158f7b0ae850de14f1b7941bec4fe5950ae46236023cfbdeddd9c747c276acf9b39ca31f8dd97dc6cc6 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-create-class-features-plugin@npm:7.25.9" +"@babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-compilation-targets@npm:7.25.2" dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - "@babel/helper-member-expression-to-functions": ^7.25.9 - "@babel/helper-optimise-call-expression": ^7.25.9 - "@babel/helper-replace-supers": ^7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/compat-data": ^7.25.2 + "@babel/helper-validator-option": ^7.24.8 + browserslist: ^4.23.1 + lru-cache: ^5.1.1 semver: ^6.3.1 + checksum: aed33c5496cb9db4b5e2d44e26bf8bc474074cc7f7bb5ebe1d4a20fdeb362cb3ba9e1596ca18c7484bcd6e5c3a155ab975e420d520c0ae60df81f9de04d0fd16 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": + version: 7.21.4 + resolution: "@babel/helper-create-class-features-plugin@npm:7.21.4" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-member-expression-to-functions": ^7.21.0 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/helper-replace-supers": ^7.20.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/helper-split-export-declaration": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: 91dd5f203ed04568c70b052e2f26dfaac7c146447196c00b8ecbb6d3d2f3b517abadb985d3321a19d143adaed6fe17f7f79f8f50e0c20e9d8ad83e1027b42424 + checksum: 9123ca80a4894aafdb1f0bc08e44f6be7b12ed1fbbe99c501b484f9b1a17ff296b6c90c18c222047d53c276f07f17b4de857946fa9d0aa207023b03e4cc716f2 languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.9" +"@babel/helper-create-class-features-plugin@npm:^7.22.1": + version: 7.22.1 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.1" dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - regexpu-core: ^6.1.1 + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-environment-visitor": ^7.22.1 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-member-expression-to-functions": ^7.22.0 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/helper-replace-supers": ^7.22.1 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/helper-split-export-declaration": ^7.18.6 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: a132d940c345effc55f4d018db4d113be56528cc5f9bdc12d14da311d27febdde9c606c62e81d17c7ab06b44fb7995d6116ed2aceee75ffa6c5e4e2da3c106ba + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-member-expression-to-functions": ^7.22.15 + "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 563ed361ceed3d7a9d64dd58616bf6f0befcc23620ab22d31dd6d8b751d3f99d6d210487b1a5a1e209ab4594df67bacfab7445cbfa092bfe2b719cd42ae1ba6f + checksum: 52c500d8d164abb3a360b1b7c4b8fff77bc4a5920d3a2b41ae6e1d30617b0dc0b972c1f5db35b1752007e04a748908b4a99bc872b73549ae837e87dcdde005a3 languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.4.4": - version: 0.4.4 - resolution: "@babel/helper-define-polyfill-provider@npm:0.4.4" +"@babel/helper-create-class-features-plugin@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-create-class-features-plugin@npm:7.24.7" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-function-name": ^7.24.7 + "@babel/helper-member-expression-to-functions": ^7.24.7 + "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/helper-replace-supers": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 371a181a1717a9b0cebc97727c8ea9ca6afa34029476a684b6030f9d1ad94dcdafd7de175da10b63ae3ba79e4e82404db8ed968ebf264b768f097e5d64faab71 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.16.7, @babel/helper-create-regexp-features-plugin@npm:^7.17.12": + version: 7.17.12 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.17.12" dependencies: - "@babel/helper-compilation-targets": ^7.22.6 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-annotate-as-pure": ^7.16.7 + regexpu-core: ^5.0.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: fe49d26b0f6c58d4c1748a4d0e98b343882b428e6db43c4ba5e0aa7ff2296b3a557f0a88de9f000599bb95640a6c47c0b0c9a952b58c11f61aabb06bcc304329 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": + version: 7.21.4 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.4" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + regexpu-core: ^5.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 78334865db2cd1d64d103bd0d96dee2818b0387d10aa973c084e245e829df32652bca530803e397b7158af4c02b9b21d5a9601c29bdfbb8d54a3d4ad894e067b + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.22.1": + version: 7.22.1 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.1" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + regexpu-core: ^5.3.1 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 52d875762110d5dac41ce21fa30a2aaa47c119ca58add190a5123b7a843da096854c0b6358c327b8e0dc2f2219a47eace69332d8a26f165f529ec402a4e6f974 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + regexpu-core: ^5.3.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 0243b8d4854f1dc8861b1029a46d3f6393ad72f366a5a08e36a4648aa682044f06da4c6e87a456260e1e1b33c999f898ba591a0760842c1387bcc93fbf2151a6 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.24.7, @babel/helper-create-regexp-features-plugin@npm:^7.25.0": + version: 7.25.2 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.2" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + regexpu-core: ^5.3.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: df55fdc6a1f3090dd37d91347df52d9322d52affa239543808dc142f8fe35e6787e67d8612337668198fac85826fafa9e6772e6c28b7d249ec94e6fafae5da6e + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.3.3": + version: 0.3.3 + resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" + dependencies: + "@babel/helper-compilation-targets": ^7.17.7 + "@babel/helper-plugin-utils": ^7.16.7 debug: ^4.1.1 lodash.debounce: ^4.0.8 resolve: ^1.14.2 + semver: ^6.1.2 peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 2453cdd79f18a4cb8653d8a7e06b2eb0d8e31bae0d35070fc5abadbddca246a36d82b758064b421cca49b48d0e696d331d54520ba8582c1d61fb706d6d831817 + "@babel/core": ^7.4.0-0 + checksum: 8e3fe75513302e34f6d92bd67b53890e8545e6c5bca8fe757b9979f09d68d7e259f6daea90dc9e01e332c4f8781bda31c5fe551c82a277f9bc0bec007aed497c languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.5.0": - version: 0.5.0 - resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" +"@babel/helper-define-polyfill-provider@npm:^0.4.0": + version: 0.4.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.0" + dependencies: + "@babel/helper-compilation-targets": ^7.17.7 + "@babel/helper-plugin-utils": ^7.16.7 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + semver: ^6.1.2 + peerDependencies: + "@babel/core": ^7.4.0-0 + checksum: 5dca4c5e78457c5ced366bea601efa4e8c69bf5d53b0fe540283897575c49b1b88191c8ef062110de9046e886703ed3270fcda3a87f0886cdbb549204d3ff63f + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.4.2": + version: 0.4.2 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.2" dependencies: "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-plugin-utils": ^7.22.5 @@ -2526,7 +2953,7 @@ __metadata: resolve: ^1.14.2 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: d24626b819d3875cb65189d761004e9230f2b3fb60542525c4785616f4b2366741369235a864b744f54beb26d625ae4b0af0c9bb3306b61bf4fccb61e0620020 + checksum: 1f6dec0c5d0876d278fe15b71238eccc5f74c4e2efa2c78aaafa8bc2cc96336b8e68d94cd1a78497356c96e8b91b8c1f4452179820624d1702aee2f9832e6569 languageName: node linkType: hard @@ -2545,7 +2972,35 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.18.9": +"@babel/helper-environment-visitor@npm:^7.16.7, @babel/helper-environment-visitor@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/helper-environment-visitor@npm:7.18.9" + checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.22.1": + version: 7.22.1 + resolution: "@babel/helper-environment-visitor@npm:7.22.1" + checksum: a6b4bb5505453bff95518d361ac1de393f0029aeb8b690c70540f4317934c53c43cc4afcda8c752ffa8c272e63ed6b929a56eca28e4978424177b24238b21bf9 + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-environment-visitor@npm:7.22.5" + checksum: 248532077d732a34cd0844eb7b078ff917c3a8ec81a7f133593f71a860a582f05b60f818dc5049c2212e5baa12289c27889a4b81d56ef409b4863db49646c4b1 + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-environment-visitor@npm:7.24.7" dependencies: @@ -2554,103 +3009,596 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" +"@babel/helper-explode-assignable-expression@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.16.7, @babel/helper-function-name@npm:^7.17.9, @babel/helper-function-name@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/helper-function-name@npm:7.19.0" + dependencies: + "@babel/template": ^7.18.10 + "@babel/types": ^7.19.0 + checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-function-name@npm:7.21.0" + dependencies: + "@babel/template": ^7.20.7 + "@babel/types": ^7.21.0 + checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-function-name@npm:7.22.5" + dependencies: + "@babel/template": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: 6b1f6ce1b1f4e513bf2c8385a557ea0dd7fa37971b9002ad19268ca4384bbe90c09681fe4c076013f33deabc63a53b341ed91e792de741b4b35e01c00238177a + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": ^7.22.15 + "@babel/types": ^7.23.0 + checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-function-name@npm:7.24.7" + dependencies: + "@babel/template": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 142ee08922074dfdc0ff358e09ef9f07adf3671ab6eef4fca74dcf7a551f1a43717e7efa358c9e28d7eea84c28d7f177b7a58c70452fc312ae3b1893c5dab2a4 + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-hoist-variables@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-hoist-variables@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: 6cfdcf2289cd12185dcdbdf2435fa8d3447b797ac75851166de9fc8503e2fd0021db6baf8dfbecad3753e582c08e6a3f805c8d00cbed756060a877d705bd8d8d + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" + dependencies: + "@babel/types": ^7.18.9 + checksum: fcf8184e3b55051c4286b2cbedf0eccc781d0f3c9b5cbaba582eca19bf0e8d87806cdb7efc8554fcb969ceaf2b187d5ea748d40022d06ec7739fbb18c1b19a7a + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.20.7, @babel/helper-member-expression-to-functions@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.21.0" + dependencies: + "@babel/types": ^7.21.0 + checksum: 49cbb865098195fe82ba22da3a8fe630cde30dcd8ebf8ad5f9a24a2b685150c6711419879cf9d99b94dad24cff9244d8c2a890d3d7ec75502cd01fe58cff5b5d + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.22.0": + version: 7.22.3 + resolution: "@babel/helper-member-expression-to-functions@npm:7.22.3" + dependencies: + "@babel/types": ^7.22.3 + checksum: c31b7c8096e722ab7717a1e2343b26afa469172aeb1a8643e9387a14bb50d77dd032fafedf282fcde37b90dcadd2e770c0dfea745a3b1de893d607f2ccba7c0f + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-member-expression-to-functions@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + checksum: c7c5d01c402dd8902c2ec3093f203ed0fc3bc5f669328a084d2e663c4c06dd0415480ee8220c6f96ba9b2dc49545c0078f221fc3900ab1e65de69a12fe7b361f + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 9fecf412f85fa23b7cf55d19eb69de39f8240426a028b141c9df2aed8cfedf20b3ec3318d40312eb7a3dec9eea792828ce0d590e0ff62da3da532482f537192c + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-member-expression-to-functions@npm:7.24.8" + dependencies: + "@babel/traverse": ^7.24.8 + "@babel/types": ^7.24.8 + checksum: bf923d05d81b06857f4ca4fe9c528c9c447a58db5ea39595bb559eae2fce01a8266173db0fd6a2ec129d7bbbb9bb22f4e90008252f7c66b422c76630a878a4bc + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-module-imports@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/helper-module-imports@npm:7.21.4" + dependencies: + "@babel/types": ^7.21.4 + checksum: bd330a2edaafeb281fbcd9357652f8d2666502567c0aad71db926e8499c773c9ea9c10dfaae30122452940326d90c8caff5c649ed8e1bf15b23f858758d3abc6 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + checksum: ecd7e457df0a46f889228f943ef9b4a47d485d82e030676767e6a2fdcbdaa63594d8124d4b55fd160b41c201025aec01fc27580352b1c87a37c9c6f33d116702 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.18.0, @babel/helper-module-transforms@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/helper-module-transforms@npm:7.19.0" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-simple-access": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/helper-validator-identifier": ^7.18.6 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.19.0 + "@babel/types": ^7.19.0 + checksum: 4483276c66f56cf3b5b063634092ad9438c2593725de5c143ba277dda82f1501e6d73b311c1b28036f181dbe36eaeff29f24726cde37a599d4e735af294e5359 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.2": + version: 7.21.2 + resolution: "@babel/helper-module-transforms@npm:7.21.2" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-simple-access": ^7.20.2 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/helper-validator-identifier": ^7.19.1 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.21.2 + "@babel/types": ^7.21.2 + checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.21.5, @babel/helper-module-transforms@npm:^7.22.1": + version: 7.22.1 + resolution: "@babel/helper-module-transforms@npm:7.22.1" + dependencies: + "@babel/helper-environment-visitor": ^7.22.1 + "@babel/helper-module-imports": ^7.21.4 + "@babel/helper-simple-access": ^7.21.5 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/helper-validator-identifier": ^7.19.1 + "@babel/template": ^7.21.9 + "@babel/traverse": ^7.22.1 + "@babel/types": ^7.22.0 + checksum: dfa084211a93c9f0174ab07385fdbf7831bbf5c1ff3d4f984effc489f48670825ad8b817b9e9d2ec6492fde37ed6518c15944e9dd7a60b43a3d9874c9250f5f8 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.22.15, @babel/helper-module-transforms@npm:^7.22.17, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.17 + resolution: "@babel/helper-module-transforms@npm:7.22.17" + dependencies: + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-module-imports": ^7.22.15 + "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-validator-identifier": ^7.22.15 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 458021c74093e66179765fcc9d1c1cb694f7bdf98656f23486901d35636495c38aab4661547fac2142e13d887987d1ea30cc9fe42968376a51a99bcd207b4989 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-module-transforms@npm:7.23.0" + dependencies: + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-module-imports": ^7.22.15 + "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-validator-identifier": ^7.22.20 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 6e2afffb058cf3f8ce92f5116f710dda4341c81cfcd872f9a0197ea594f7ce0ab3cb940b0590af2fe99e60d2e5448bfba6bca8156ed70a2ed4be2adc8586c891 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-transforms@npm:7.24.7" + dependencies: + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: ddff3b41c2667876b4e4e73d961168f48a5ec9560c95c8c2d109e6221f9ca36c6f90c6317eb7a47f2a3c99419c356e529a86b79174cad0d4f7a61960866b88ca + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.0, @babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" + dependencies: + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + "@babel/traverse": ^7.25.2 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 282d4e3308df6746289e46e9c39a0870819630af5f84d632559171e4fae6045684d771a65f62df3d569e88ccf81dc2def78b8338a449ae3a94bb421aa14fc367 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.16.7, @babel/helper-optimise-call-expression@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: c70ef6cc6b6ed32eeeec4482127e8be5451d0e5282d5495d5d569d39eb04d7f1d66ec99b327f45d1d5842a9ad8c22d48567e93fc502003a47de78d122e355f7c + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: 280654eaf90e92bf383d7eed49019573fb35a98c9e992668f701ad099957246721044be2068cf6840cb2299e0ad393705a1981c88c23a1048096a8d59e5f79a3 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.17.12, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.19.0 + resolution: "@babel/helper-plugin-utils@npm:7.19.0" + checksum: eedc996c633c8c207921c26ec2989eae0976336ecd9b9f1ac526498f52b5d136f7cd03c32b6fdf8d46a426f907c142de28592f383c42e5fba1e904cbffa05345 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.20.2": + version: 7.20.2 + resolution: "@babel/helper-plugin-utils@npm:7.20.2" + checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/helper-plugin-utils@npm:7.21.5" + checksum: 6f086e9a84a50ea7df0d5639c8f9f68505af510ea3258b3c8ac8b175efdfb7f664436cb48996f71791a1350ba68f47ad3424131e8e718c5e2ad45564484cbb36 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-plugin-utils@npm:7.22.5" + checksum: c0fc7227076b6041acd2f0e818145d2e8c41968cc52fb5ca70eed48e21b8fe6dd88a0a91cbddf4951e33647336eb5ae184747ca706817ca3bef5e9e905151ff5 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-plugin-utils@npm:7.24.7" + checksum: 81f2a15751d892e4a8fce25390f973363a5b27596167861d2d6eab0f61856eb2ba389b031a9f19f669c0bd4dd601185828d3cebafd25431be7a1696f2ce3ef68 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-plugin-utils@npm:7.24.8" + checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-wrap-function": ^7.18.9 + "@babel/types": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": + version: 7.22.17 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.17" dependencies: - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 8e2f1979b6d596ac2a8cbf17f2cf709180fefc274ac3331408b48203fe19134ed87800774ef18838d0275c3965130bae22980d90caed756b7493631d4b2cf961 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-wrap-function": ^7.22.17 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 59307e623d00b6f5fa7f974e29081b2243e3f7bc3a89df331e8c1f8815d83f97bd092404a28b8bef5299028e3259450b5a943f34e1b32c7c55350436d218ab13 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-imports@npm:7.25.9" +"@babel/helper-remap-async-to-generator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-remap-async-to-generator@npm:7.24.7" dependencies: - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 1b411ce4ca825422ef7065dffae7d8acef52023e51ad096351e3e2c05837e9bf9fca2af9ca7f28dc26d596a588863d0fedd40711a88e350b736c619a80e704e6 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-wrap-function": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: bab7be178f875350f22a2cb9248f67fe3a8a8128db77a25607096ca7599fd972bc7049fb11ed9e95b45a3f1dd1fac3846a3279f9cbac16f337ecb0e6ca76e1fc languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-transforms@npm:7.25.9" +"@babel/helper-remap-async-to-generator@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.0" dependencies: - "@babel/helper-module-imports": ^7.25.9 - "@babel/helper-simple-access": ^7.25.9 - "@babel/helper-validator-identifier": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-wrap-function": ^7.25.0 + "@babel/traverse": ^7.25.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 12e50861531ff45667925c958a5d01f0a7fbd37b589d73be7f167c94595091c6842531b1b14a22049b53c56891fa596f014c94d9496685311aaa80651805fca0 + checksum: 47f3065e43fe9d6128ddb4291ffb9cf031935379265fd13de972b5f241943121f7583efb69cd2e1ecf39e3d0f76f047547d56c3fcc2c853b326fad5465da0bd7 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.16.7": + version: 7.19.1 + resolution: "@babel/helper-replace-supers@npm:7.19.1" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-member-expression-to-functions": ^7.18.9 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/traverse": ^7.19.1 + "@babel/types": ^7.19.0 + checksum: a0e4bf79ebe7d2bb5947169e47a0b4439c73fb0ec57d446cf3ea81b736721129ec373c3f94d2ebd2716b26dd65f8e6c083dac898170d42905e7ba815a2f52c25 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/helper-replace-supers@npm:7.20.7" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-member-expression-to-functions": ^7.20.7 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.20.7 + "@babel/types": ^7.20.7 + checksum: b8e0087c9b0c1446e3c6f3f72b73b7e03559c6b570e2cfbe62c738676d9ebd8c369a708cf1a564ef88113b4330750a50232ee1131d303d478b7a5e65e46fbc7c languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" +"@babel/helper-replace-supers@npm:^7.22.1": + version: 7.22.1 + resolution: "@babel/helper-replace-supers@npm:7.22.1" dependencies: - "@babel/types": ^7.25.9 - checksum: f09d0ad60c0715b9a60c31841b3246b47d67650c512ce85bbe24a3124f1a4d66377df793af393273bc6e1015b0a9c799626c48e53747581c1582b99167cc65dc + "@babel/helper-environment-visitor": ^7.22.1 + "@babel/helper-member-expression-to-functions": ^7.22.0 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/template": ^7.21.9 + "@babel/traverse": ^7.22.1 + "@babel/types": ^7.22.0 + checksum: 4179090f7010cf9456d17ec354df10f4f647d9b57f6e0b021519d504afca977f67ca39ffe04b47369ea671a744309d0d58f436cb4c18aef000f1df3c0e1162ba languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.25.9 - resolution: "@babel/helper-plugin-utils@npm:7.25.9" - checksum: e19ec8acf0b696756e6d84531f532c5fe508dce57aa68c75572a77798bd04587a844a9a6c8ea7d62d673e21fdc174d091c9097fb29aea1c1b49f9c6eaa80f022 +"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-replace-supers@npm:7.22.9" + dependencies: + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-member-expression-to-functions": ^7.22.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d41471f56ff2616459d35a5df1900d5f0756ae78b1027040365325ef332d66e08e3be02a9489756d870887585ff222403a228546e93dd7019e19e59c0c0fe586 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.18.9, @babel/helper-remap-async-to-generator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" +"@babel/helper-replace-supers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-replace-supers@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - "@babel/helper-wrap-function": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-member-expression-to-functions": ^7.24.7 + "@babel/helper-optimise-call-expression": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: ea37ad9f8f7bcc27c109963b8ebb9d22bac7a5db2a51de199cb560e251d5593fe721e46aab2ca7d3e7a24b0aa4aff0eaf9c7307af9c2fd3a1d84268579073052 + checksum: 2bf0d113355c60d86a04e930812d36f5691f26c82d4ec1739e5ec0a4c982c9113dad3167f7c74f888a96328bd5e696372232406d8200e5979e6e0dc2af5e7c76 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-replace-supers@npm:7.25.9" +"@babel/helper-replace-supers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-replace-supers@npm:7.25.0" dependencies: - "@babel/helper-member-expression-to-functions": ^7.25.9 - "@babel/helper-optimise-call-expression": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/helper-member-expression-to-functions": ^7.24.8 + "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/traverse": ^7.25.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 84f40e12520b7023e52d289bf9d569a06284879fe23bbbacad86bec5d978b2669769f11b073fcfeb1567d8c547168323005fda88607a4681ecaeb4a5cdd48bb9 + checksum: f669fc2487c22d40b808f94b9c3ee41129484d5ef0ba689bdd70f216ff91e10b6b021d2f8cd37e7bdd700235a2a6ae6622526344f064528190383bf661ac65f8 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.18.2, @babel/helper-simple-access@npm:^7.18.6": + version: 7.19.4 + resolution: "@babel/helper-simple-access@npm:7.19.4" + dependencies: + "@babel/types": ^7.19.4 + checksum: 964cb1ec36b69aabbb02f8d5ee1d680ebbb628611a6740958d9b05107ab16c0492044e430618ae42b1f8ea73e4e1bafe3750e8ebc959d6f3277d9cfbe1a94880 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.20.2": + version: 7.20.2 + resolution: "@babel/helper-simple-access@npm:7.20.2" + dependencies: + "@babel/types": ^7.20.2 + checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/helper-simple-access@npm:7.21.5" + dependencies: + "@babel/types": ^7.21.5 + checksum: ad212beaa24be3864c8c95bee02f840222457ccf5419991e2d3e3e39b0f75b77e7e857e0bf4ed428b1cd97acefc87f3831bdb0b9696d5ad0557421f398334fc3 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: b9ed2896eb253e6a85f472b0d4098ed80403758ad1a4e34b02b11e8276e3083297526758b1a3e6886e292987266f10622d7dbced3508cc22b296a74903b41cfb + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" + dependencies: + "@babel/types": ^7.20.0 + checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 1012ef2295eb12dc073f2b9edf3425661e9b8432a3387e62a8bc27c42963f1f216ab3124228015c748770b2257b4f1fda882ca8fa34c0bf485e929ae5bc45244 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 11b28fe534ce2b1a67c4d8e51a7b5711a2a0a0cae802f74614eee54cca58c744d9a62f6f60103c41759e81c537d270bfd665bf368a6bea214c6052f2094f8407 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-simple-access@npm:7.25.9" +"@babel/helper-split-export-declaration@npm:^7.16.7, @babel/helper-split-export-declaration@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-split-export-declaration@npm:7.18.6" dependencies: - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 6d96c94b88e8288d15e5352c1221486bd4f62de8c7dc7c7b9f5b107ce2c79f67fec5ed71a0476e146f1fefbbbf1d69abe35dc821d80ce01fc7f472286c342421 + "@babel/types": ^7.18.6 + checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" +"@babel/helper-split-export-declaration@npm:^7.22.5, @babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: fdbb5248932198bc26daa6abf0d2ac42cab9c2dbb75b7e9f40d425c8f28f09620b886d40e7f9e4e08ffc7aaa2cefe6fc2c44be7c20e81f7526634702fb615bdc + "@babel/types": ^7.22.5 + checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.5": +"@babel/helper-split-export-declaration@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-split-export-declaration@npm:7.24.7" dependencies: @@ -2659,131 +3607,444 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-string-parser@npm:7.25.9" - checksum: 6435ee0849e101681c1849868278b5aee82686ba2c1e27280e5e8aca6233af6810d39f8e4e693d2f2a44a3728a6ccfd66f72d71826a94105b86b731697cdfa99 +"@babel/helper-string-parser@npm:^7.19.4": + version: 7.19.4 + resolution: "@babel/helper-string-parser@npm:7.19.4" + checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/helper-string-parser@npm:7.21.5" + checksum: 36c0ded452f3858e67634b81960d4bde1d1cd2a56b82f4ba2926e97864816021c885f111a7cf81de88a0ed025f49d84a393256700e9acbca2d99462d648705d8 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-string-parser@npm:7.22.5" + checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-string-parser@npm:7.24.7" + checksum: 09568193044a578743dd44bf7397940c27ea693f9812d24acb700890636b376847a611cdd0393a928544e79d7ad5b8b916bd8e6e772bc8a10c48a647a96e7b1a + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": + version: 7.19.1 + resolution: "@babel/helper-validator-identifier@npm:7.19.1" + checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-validator-identifier@npm:7.22.15" + checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-validator-option@npm:7.18.6" + checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-validator-option@npm:7.21.0" + checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-validator-option@npm:7.22.15" + checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-option@npm:7.24.7" + checksum: 9689166bf3f777dd424c026841c8cd651e41b21242dbfd4569a53086179a3e744c8eddd56e9d10b54142270141c91581b53af0d7c00c82d552d2540e2a919f7e + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.18.9": + version: 7.20.5 + resolution: "@babel/helper-wrap-function@npm:7.20.5" + dependencies: + "@babel/helper-function-name": ^7.19.0 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.20.5 + "@babel/types": ^7.20.5 + checksum: 11a6fc28334368a193a9cb3ad16f29cd7603bab958433efc82ebe59fa6556c227faa24f07ce43983f7a85df826f71d441638442c4315e90a554fe0a70ca5005b + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.22.17": + version: 7.22.17 + resolution: "@babel/helper-wrap-function@npm:7.22.17" + dependencies: + "@babel/helper-function-name": ^7.22.5 + "@babel/template": ^7.22.15 + "@babel/types": ^7.22.17 + checksum: 95328b508049b6edd9cadd2ac89b4d4812ebdfa54a2ae77791939d795d88d561b31fd3669eea5d13558372cf2422eda05177d7f742690b5023c712bc3f0aec8e + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-wrap-function@npm:7.24.7" + dependencies: + "@babel/helper-function-name": ^7.24.7 + "@babel/template": ^7.24.7 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 085bf130ed08670336e3976f5841ae44e3e10001131632e22ef234659341978d2fd37e65785f59b6cb1745481347fc3bce84b33a685cacb0a297afbe1d2b03af + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-wrap-function@npm:7.25.0" + dependencies: + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 0095b4741704066d1687f9bbd5370bb88c733919e4275e49615f70c180208148ff5f24ab58d186ce92f8f5d28eab034ec6617e9264590cc4744c75302857629c + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.19.0": + version: 7.19.4 + resolution: "@babel/helpers@npm:7.19.4" + dependencies: + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.19.4 + "@babel/types": ^7.19.4 + checksum: e2684e9a79d45b95db05c7e14628e8dd1d91ad59433a3afd715bdf19d4683d9e9f84382bcc82316b678aa609ecfc41b07be0b9c49eed07c444f82a6b9e501186 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helpers@npm:7.21.0" + dependencies: + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.21.0 + "@babel/types": ^7.21.0 + checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.22.0": + version: 7.22.3 + resolution: "@babel/helpers@npm:7.22.3" + dependencies: + "@babel/template": ^7.21.9 + "@babel/traverse": ^7.22.1 + "@babel/types": ^7.22.3 + checksum: 385289ee8b87cf9af448bbb9fcf747f6e67600db5f7f64eb4ad97761ee387819bf2212b6a757008286c6bfacf4f3fc0b6de88686f2e517a70fb59996bdfbd1e9 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helpers@npm:7.22.15" + dependencies: + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 49f61a93cbae4df3328bda67af5db743fead659ae4242571226c3596b7df78546189cdf991fed1eca33b559de8abf396a90a001f474a1bab351418f07b7ae6ef languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-identifier@npm:7.25.9" - checksum: 5b85918cb1a92a7f3f508ea02699e8d2422fe17ea8e82acd445006c0ef7520fbf48e3dbcdaf7b0a1d571fc3a2715a29719e5226636cb6042e15fe6ed2a590944 +"@babel/helpers@npm:^7.22.5": + version: 7.23.1 + resolution: "@babel/helpers@npm:7.23.1" + dependencies: + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.23.0 + "@babel/types": ^7.23.0 + checksum: acfc345102045c24ea2a4d60e00dcf8220e215af3add4520e2167700661338e6a80bd56baf44bb764af05ec6621101c9afc315dc107e18c61fa6da8acbdbb893 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.22.5, @babel/helper-validator-option@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-option@npm:7.25.9" - checksum: 9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d +"@babel/helpers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helpers@npm:7.25.0" + dependencies: + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 739e3704ff41a30f5eaac469b553f4d3ab02be6ced083f5925851532dfbd9efc5c347728e77b754ed0b262a4e5e384e60932a62c192d338db7e4b7f3adf9f4a7 languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-wrap-function@npm:7.25.9" +"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/highlight@npm:7.18.6" dependencies: - "@babel/template": ^7.25.9 - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 8ec1701e60ae004415800c4a7a188f5564c73b4e4f3fdf58dd3f34a3feaa9753173f39bbd6d02e7ecc974f48155efc7940e62584435b3092c07728ee46a604ea + "@babel/helper-validator-identifier": ^7.18.6 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 languageName: node linkType: hard -"@babel/helpers@npm:^7.22.5, @babel/helpers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helpers@npm:7.25.9" +"@babel/highlight@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/highlight@npm:7.22.13" dependencies: - "@babel/template": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 82b1051c065baff1f53a85886bd05b2136c021f8d9301974d639007b7b90f674115b992a1dcf04667b37f9229d6f3eaeb1c40550f9ae46802ec4a8e388018b31 + "@babel/helper-validator-identifier": ^7.22.5 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 languageName: node linkType: hard -"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/highlight@npm:7.25.9" +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" dependencies: - "@babel/helper-validator-identifier": ^7.25.9 + "@babel/helper-validator-identifier": ^7.24.7 chalk: ^2.4.2 js-tokens: ^4.0.0 picocolors: ^1.0.0 - checksum: a6e0ac0a1c4bef7401915ca3442ab2b7ae4adf360262ca96b91396bfb9578abb28c316abf5e34460b780696db833b550238d9256bdaca60fade4ba7a67645064 + checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.0, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.3, @babel/parser@npm:^7.19.4": + version: 7.19.4 + resolution: "@babel/parser@npm:7.19.4" + bin: + parser: ./bin/babel-parser.js + checksum: 5ef97da97915085ff3b9c562b04fb6316074ece52d20de95f44c47b46abf87fd754cbcae769a69570a84652b736afe5bb2cb7dc117aa7ad6d81ab40eed0c613b + languageName: node + linkType: hard + +"@babel/parser@npm:^7.13.16, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/parser@npm:7.21.4" + bin: + parser: ./bin/babel-parser.js + checksum: de610ecd1bff331766d0c058023ca11a4f242bfafefc42caf926becccfb6756637d167c001987ca830dd4b34b93c629a4cef63f8c8c864a8564cdfde1989ac77 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.21.9, @babel/parser@npm:^7.22.0, @babel/parser@npm:^7.22.4": + version: 7.22.4 + resolution: "@babel/parser@npm:7.22.4" + bin: + parser: ./bin/babel-parser.js + checksum: 0ca6d3a2d9aae2504ba1bc494704b64a83140884f7379f609de69bd39b60adb58a4f8ec692fe53fef8657dd82705d01b7e6efb65e18296326bdd66f71d52d9a9 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.22.7": + version: 7.22.16 + resolution: "@babel/parser@npm:7.22.16" + bin: + parser: ./bin/babel-parser.js + checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd + languageName: node + linkType: hard + +"@babel/parser@npm:^7.22.5, @babel/parser@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/parser@npm:7.23.0" + bin: + parser: ./bin/babel-parser.js + checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/parser@npm:7.24.7" + bin: + parser: ./bin/babel-parser.js + checksum: fc9d2c4c8712f89672edc55c0dc5cf640dcec715b56480f111f85c2bc1d507e251596e4110d65796690a96ac37a4b60432af90b3e97bb47e69d4ef83872dbbd6 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/parser@npm:7.25.9" +"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/parser@npm:7.25.3" dependencies: - "@babel/types": ^7.25.9 + "@babel/types": ^7.25.2 + bin: + parser: ./bin/babel-parser.js + checksum: b55aba64214fa1d66ccd0d29f476d2e55a48586920d280f88c546f81cbbececc0e01c9d05a78d6bf206e8438b9c426caa344942c1a581eecc4d365beaab8a20e + languageName: node + linkType: hard + +"@babel/parser@npm:^7.9.4": + version: 7.20.13 + resolution: "@babel/parser@npm:7.20.13" bin: parser: ./bin/babel-parser.js - checksum: 76e898e9feaa7e11512841c13aab1a6d81f69a19ab93b0ec941dd78407fdbfe8fb08ff54e0966567aef4f24a7b94125473f0e903fb198c010bd5456058bf3432 + checksum: 7eb2e3d9d9ad5e24b087c88d137f5701d94f049e28b9dce9f3f5c6d4d9b06a0d7c43b9106f1c02df8a204226200e0517de4bc81a339768a4ebd4c59107ea93a4 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d3dba60f360defe70eb43e35a1b17ea9dd4a99e734249e15be3d5c288019644f96f88d7ff51990118fda0845b4ad50f6d869e0382232b1d8b054d113d4eea7e2 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: fd56d1e6435f2c008ca9050ea906ff7eedcbec43f532f2bf2e7e905d8bf75bf5e4295ea9593f060394e2c8e45737266ccbf718050bad2dd7be4e7613c60d1b5b languageName: node linkType: hard -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: b33d37dacf98a9c74f53959999adc37a258057668b62dba557e6865689433c53764673109eaba9102bf73b2ac4db162f0d9b89a6cca6f1b71d12f5908ec11da9 + checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d languageName: node linkType: hard -"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.9" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.15" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: d3e14ab1cb9cb50246d20cab9539f2fbd1e7ef1ded73980c8ad7c0561b4d5e0b144d362225f0976d47898e04cbd40f2000e208b0913bd788346cf7791b96af91 + checksum: 8910ca21a7ec7c06f7b247d4b86c97c5aa15ef321518f44f6f490c5912fdf82c605aaa02b90892e375d82ccbedeadfdeadd922c1b836c9dd4c596871bf654753 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.9" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.0" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.8 peerDependencies: "@babel/core": ^7.0.0 - checksum: a9d1ee3fd100d3eb6799a2f2bbd785296f356c531d75c9369f71541811fa324270258a374db103ce159156d006da2f33370330558d0133e6f7584152c34997ca + checksum: 13ed301b108d85867d64226bbc4032b07dd1a23aab68e9e32452c4fe3930f2198bb65bdae9c262c4104bd5e45647bc1830d25d43d356ee9a137edd8d5fab8350 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/plugin-proposal-optional-chaining": ^7.20.7 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: d610f532210bee5342f5b44a12395ccc6d904e675a297189bc1e401cc185beec09873da523466d7fec34ae1574f7a384235cba1ccc9fe7b89ba094167897c845 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.15, @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.15 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: fbefedc0da014c37f1a50a8094ce7dbbf2181ae93243f23d6ecba2499b5b20196c2124d6a4dfe3e9e0125798e80593103e456352a4beb4e5c6f7c75efb80fdac + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/plugin-transform-optional-chaining": ^7.22.3 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: d786e4d89c0674cab4fb65e804920782b2ff8319a3e6c561c81b0265451f4ac9f8ce1f9699303398636352b5177730e31c219a086b72980bf39f98faadeab3c1 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5, @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.9" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 - "@babel/plugin-transform-optional-chaining": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.7 peerDependencies: "@babel/core": ^7.13.0 - checksum: 5b298b28e156f64de51cdb03a2c5b80c7f978815ef1026f3ae8b9fc48d28bf0a83817d8fbecb61ef8fb94a7201f62cca5103cc6e7b9e8f28e38f766d7905b378 + checksum: 07b92878ac58a98ea1fdf6a8b4ec3413ba4fa66924e28b694d63ec5b84463123fbf4d7153b56cf3cedfef4a3482c082fe3243c04f8fb2c041b32b0e29b4a9e21 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.9" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.0" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: c684593952ab1b40dfa4e64e98a07e7227c6db175c21bd0e6d71d2ad5d240fef4e4a984d56f05a494876542a022244fe1c1098f4116109fd90d06615e8a269b1 + checksum: c8d08b8d6cc71451ad2a50cf7db72ab5b41c1e5e2e4d56cf6837a25a61270abd682c6b8881ab025f11a552d2024b3780519bb051459ebb71c27aed13d9917663 languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:^7.0.0": +"@babel/plugin-proposal-async-generator-functions@npm:^7.0.0, @babel/plugin-proposal-async-generator-functions@npm:^7.20.7": version: 7.20.7 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" dependencies: @@ -2797,7 +4058,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.0": +"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" dependencies: @@ -2809,6 +4070,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-class-static-block@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.21.0 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 236c0ad089e7a7acab776cc1d355330193314bfcd62e94e78f2df35817c6144d7e0e0368976778afd6b7c13e70b5068fa84d7abbf967d4f182e60d03f9ef802b + languageName: node + linkType: hard + "@babel/plugin-proposal-decorators@npm:7.22.5": version: 7.22.5 resolution: "@babel/plugin-proposal-decorators@npm:7.22.5" @@ -2824,31 +4098,85 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-decorators@npm:^7.12.9, @babel/plugin-proposal-decorators@npm:^7.22.7": - version: 7.25.9 - resolution: "@babel/plugin-proposal-decorators@npm:7.25.9" +"@babel/plugin-proposal-decorators@npm:^7.12.9": + version: 7.21.0 + resolution: "@babel/plugin-proposal-decorators@npm:7.21.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.21.0 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-replace-supers": ^7.20.7 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/plugin-syntax-decorators": ^7.21.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2889a060010af7ac2e24f7a193262e50a94e254dd86d273e25a2bec2a2f97dd95b136bb933f63448c1cdde4f38ac7877837685657aa8161699eb226d9f1eb453 + languageName: node + linkType: hard + +"@babel/plugin-proposal-decorators@npm:^7.22.7": + version: 7.22.15 + resolution: "@babel/plugin-proposal-decorators@npm:7.22.15" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/plugin-syntax-decorators": ^7.22.10 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bbe8ebf46fa21035db88b751bc4b7becaf3ac87ad2f8d82838794b7396d4c9b198a3906f2409ea063c08834292a15b048cfaf38dea609939840dc53f32ac0e47 + languageName: node + linkType: hard + +"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" dependencies: - "@babel/helper-create-class-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/plugin-syntax-decorators": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ff598127818ac8e704009f1a9a207766ada5f84f6ca74e9de662cb6ce32bcb846c28fd52d6c5df9c55b4eac9a2a3492aa71fbd5cef0569a14b6f12003df22af2 + checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f languageName: node linkType: hard "@babel/plugin-proposal-export-default-from@npm:^7.0.0": - version: 7.25.9 - resolution: "@babel/plugin-proposal-export-default-from@npm:7.25.9" + version: 7.18.10 + resolution: "@babel/plugin-proposal-export-default-from@npm:7.18.10" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + "@babel/plugin-syntax-export-default-from": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2a12387e095ccd02a1560e5dd40812a83befe581d319685ae2a95f0650a4500381c1d9c710e6e29b34a1b053f9632ee2d3827b937e1cc5c9d2555280da22df53 + languageName: node + linkType: hard + +"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef + languageName: node + linkType: hard + +"@babel/plugin-proposal-json-strings@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/plugin-syntax-json-strings": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0fb96b1229ed15ecfb09e6bf40be2da249007155a3deca53d319420a4d3c028c884e888c447898cbcdaa079165e045a8317be6a9205bef0041e7333822a40da9 + checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 languageName: node linkType: hard -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.0": +"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.0, @babel/plugin-proposal-logical-assignment-operators@npm:^7.20.7": version: 7.20.7 resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" dependencies: @@ -2860,7 +4188,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.0": +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.0, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" dependencies: @@ -2872,7 +4200,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-numeric-separator@npm:^7.0.0": +"@babel/plugin-proposal-numeric-separator@npm:^7.0.0, @babel/plugin-proposal-numeric-separator@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" dependencies: @@ -2884,7 +4212,22 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.20.0": +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": + version: 7.18.0 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.18.0" + dependencies: + "@babel/compat-data": ^7.17.10 + "@babel/helper-compilation-targets": ^7.17.10 + "@babel/helper-plugin-utils": ^7.17.12 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2b49bcf9a6b11fd8b6a1d4962a64f3c846a63f8340eca9824c907f75bfcff7422ca35b135607fc3ef2d4e7e77ce6b6d955b772dc3c1c39f7ed24a0d8a560ec78 + languageName: node + linkType: hard + +"@babel/plugin-proposal-object-rest-spread@npm:^7.20.0, @babel/plugin-proposal-object-rest-spread@npm:^7.20.7": version: 7.20.7 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" dependencies: @@ -2899,7 +4242,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.0.0": +"@babel/plugin-proposal-optional-catch-binding@npm:^7.0.0, @babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" dependencies: @@ -2911,7 +4254,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.20.0": +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.20.0, @babel/plugin-proposal-optional-chaining@npm:^7.20.7, @babel/plugin-proposal-optional-chaining@npm:^7.21.0": version: 7.21.0 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" dependencies: @@ -2924,6 +4267,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-private-methods@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad + languageName: node + linkType: hard + "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": version: 7.21.0-placeholder-for-preset-env.2 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" @@ -2933,7 +4288,21 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": +"@babel/plugin-proposal-private-property-in-object@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.21.0 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: add881a6a836635c41d2710551fdf777e2c07c0b691bf2baacc5d658dd64107479df1038680d6e67c468bfc6f36fb8920025d6bac2a1df0a81b867537d40ae78 + languageName: node + linkType: hard + +"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" dependencies: @@ -2945,6 +4314,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": + version: 7.17.12 + resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.17.12" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.17.12 + "@babel/helper-plugin-utils": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0e4194510415ed11849f1617fcb32d996df746ba93cd05ebbabecb63cfc02c0e97b585c97da3dcf68acdd3c8b71cfae964abe5d5baba6bd3977a475d9225ad9e + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -2967,7 +4348,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13": +"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -2989,36 +4370,47 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.22.5, @babel/plugin-syntax-decorators@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-decorators@npm:7.25.9" +"@babel/plugin-syntax-decorators@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/plugin-syntax-decorators@npm:7.21.0" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.20.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: aaf58b17e6aa08f41f93897daa93c601a486233a0375b4231799fc5c4e7c98480aaad3c1c44cf391a62e428c5f6546f76488a1023a4036bb87cd61fa79f1173b + checksum: 31108e73c3e569f2795ddb4f5f1f32c13c6be97a107d41e318c8f58ca3fde0fa958af3d1a302ab64f36f73ce4d6dda7889732243561c087a7cc3b22192d42a65 languageName: node linkType: hard -"@babel/plugin-syntax-dynamic-import@npm:^7.8.0, @babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" +"@babel/plugin-syntax-decorators@npm:^7.22.10, @babel/plugin-syntax-decorators@npm:^7.22.5": + version: 7.22.10 + resolution: "@babel/plugin-syntax-decorators@npm:7.22.10" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: baaa10fa52d76ee8b9447f7aedb1c8df7cf2ef83ae29c085c07444e691685aa8b1a326dfb7a3a0e3ae4d5f9fd083175e46ea5e2316d8200f0278f3fd54a58696 + languageName: node + linkType: hard + +"@babel/plugin-syntax-dynamic-import@npm:^7.8.0, @babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 peerDependencies: "@babel/core": ^7.0.0-0 checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd languageName: node linkType: hard -"@babel/plugin-syntax-export-default-from@npm:^7.0.0": - version: 7.25.9 - resolution: "@babel/plugin-syntax-export-default-from@npm:7.25.9" +"@babel/plugin-syntax-export-default-from@npm:^7.0.0, @babel/plugin-syntax-export-default-from@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-export-default-from@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8eb254c8050369f3cfac7755230ad9d39a53d1b489e03170684d6b514a0d09ad6001c38e6dfd271a439a8035a57d60b8be7d3dd80f997c6bc5c7e688ed529517 + checksum: 4258156553d825abb2ebac920eae6837087b485eb8e0011e05ad1e57004a03441335325feb18185ffbfa0c33a340673e7ab79549080ff2beb4607f88936fedf2 languageName: node linkType: hard @@ -3033,40 +4425,106 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-flow@npm:7.25.9" +"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-flow@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0edfd8d0a35df4d93bd5e9f859a420dd43295eaf14e4aef9bef76ce52cdbe0b57126d5b93197891357b94b4dcf587795efafb90eaf4a8737ae6e1b3020c904b9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-flow@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 43b78b5fcdedb2a6d80c3d02a1a564fbfde86b73b442d616a8f318f673caa6ce0151513af5a00fcae42a512f144e70ef259d368b9537ee35d40336a6c895a7d4 + languageName: node + linkType: hard + +"@babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.18.6": + version: 7.21.4 + resolution: "@babel/plugin-syntax-flow@npm:7.21.4" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fe4ba7b285965c62ff820d55d260cb5b6e5282dbedddd1fb0a0f2667291dcf0fa1b3d92fa9bf90946b02b307926a0a5679fbdd31d80ceaed5971293aa1fc5744 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" + dependencies: + "@babel/helper-plugin-utils": ^7.19.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6a86220e0aae40164cd3ffaf80e7c076a1be02a8f3480455dddbae05fda8140f429290027604df7a11b3f3f124866e8a6d69dbfa1dda61ee7377b920ad144d5b + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2b8b5572db04a7bef1e6cd20debf447e4eef7cb012616f5eceb8fa3e23ce469b8f76ee74fd6d1e158ba17a8f58b0aec579d092fb67c5a30e83ccfbc5754916c1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c4d67be4eb1d4637e361477dbe01f5b392b037d17c1f861cfa0faa120030e137aab90a9237931b8040fd31d1e5d159e11866fa1165f78beef7a3be876a391a17 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.3" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.21.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c33f5ff3228b4ba990a414f07dfa7ca23a0251fa0fae3f935b2c1784104983c8802b190302f4d4e246e41edb41ab6762ac1bd868939abdf0ef809862afaf51c1 + checksum: 48cf66ba1b6772134f4e638c42ff51a0e8037cea540733642146e031641641e8a03e4f43e6be613e2313d174f95d9b3a1f14f41db0a9fa78a8330282b5aad03c languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.22.5, @babel/plugin-syntax-import-assertions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.9" +"@babel/plugin-syntax-import-attributes@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2f0c70bb379135ee205402caa42c0dda4d5d8fb64ff4ad163cab94bd8291c1a63b9dc9cf293758cecee223080d2d61e83f92c6d2a264621e24a07258c48968db + checksum: 197b3c5ea2a9649347f033342cb222ab47f4645633695205c0250c6bf2af29e643753b8bb24a2db39948bef08e7c540babfd365591eb57fc110cb30b425ffc47 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.22.5, @babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.9" +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0ea00b9100d383680c7142e61e3aa7101e3657ec5e1bfa990871eee4ae17e2c4a0da084e8f611d349bb9612908e911e1400418eb59caa5184226b08f513c1a0a + checksum: 590dbb5d1a15264f74670b427b8d18527672c3d6c91d7bae7e65f80fd810edbc83d90e68065088644cbad3f2457ed265a54a9956fb789fcb9a5b521822b3a275 languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.10.4": +"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -3088,881 +4546,2717 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.25.9, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" +"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.21.4, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.21.4 + resolution: "@babel/plugin-syntax-jsx@npm:7.21.4" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bb7309402a1d4e155f32aa0cf216e1fa8324d6c4cfd248b03280028a015a10e46b6efd6565f515f8913918a3602b39255999c06046f7d4b8a5106be2165d724a + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6d37ea972970195f1ffe1a54745ce2ae456e0ac6145fae9aa1480f297248b262ea6ebb93010eddb86ebfacb94f57c05a1fc5d232b9a67325b09060299d515c67 + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8829d30c2617ab31393d99cec2978e41f014f4ac6f01a1cecf4c4dd8320c3ec12fdc3ce121126b2d8d32f6887e99ca1a0bad53dedb1e6ad165640b92b24980ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bb609d1ffb50b58f0c1bac8810d0e46a4f6c922aa171c458f3a19d66ee545d36e782d3bffbbc1fed0dc65a558bdce1caf5279316583c0fff5a2c1658982a8563 + checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 languageName: node linkType: hard -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: - "@babel/helper-plugin-utils": ^7.10.4 + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.0.0, @babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.0.0, @babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.20.0": + version: 7.21.4 + resolution: "@babel/plugin-syntax-typescript@npm:7.21.4" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a59ce2477b7ae8c8945dc37dda292fef9ce46a6507b3d76b03ce7f3a6c9451a6567438b20a78ebcb3955d04095fd1ccd767075a863f79fcc30aa34dcfa441fe0 + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8ab7718fbb026d64da93681a57797d60326097fd7cb930380c8bffd9eb101689e90142c760a14b51e8e69c88a73ba3da956cb4520a3b0c65743aee5c71ef360a + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 56fe84f3044ecbf038977281648db6b63bd1301f2fff6595820dc10ee276c1d1586919d48d52a8d497ecae32c958be38f42c1c8d174dc58aad856c516dc5b35a + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.18.6 + resolution: "@babel/plugin-syntax-typescript@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2cde73725ec51118ebf410bf02d78781c03fa4d3185993fcc9d253b97443381b621c44810084c5dd68b92eb8bdfae0e5b163e91b32bebbb33852383d1815c05d + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: a651d700fe63ff0ddfd7186f4ebc24447ca734f114433139e3c027bc94a900d013cf1ef2e2db8430425ba542e39ae160c3b05f06b59fd4656273a3df97679e9c + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.0.0": + version: 7.17.12 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.17.12" + dependencies: + "@babel/helper-plugin-utils": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 48f99e74f523641696d5d9fb3f5f02497eca2e97bc0e9b8230a47f388e37dc5fd84b8b29e9f5a0c82d63403f7ba5f085a28e26939678f6e917d5c01afd884b50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.0.0-0, @babel/plugin-transform-arrow-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 707c209b5331c7dc79bd326128c6a6640dbd62a78da1653c844db20c4f36bf7b68454f1bc4d2d051b3fde9136fa291f276ec03a071bb00ee653069ff82f91010 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b43cabe3790c2de7710abe32df9a30005eddb2050dadd5d122c6872f679e5710e410f1b90c8f99a2aff7b614cccfecf30e7fd310236686f60d3ed43fd80b9847 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.21.5" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c7c281cdf37c33a584102d9fd1793e85c96d4d320cdfb7c43f1ce581323d057f13b53203994fcc7ee1f8dc1ff013498f258893aa855a06c6f830fcc4c33d6e44 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 35abb6c57062802c7ce8bd96b2ef2883e3124370c688bbd67609f7d2453802fb73944df8808f893b6c67de978eb2bcf87bbfe325e46d6f39b5fcb09ece11d01a + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.22.15, @babel/plugin-transform-async-generator-functions@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.15" + dependencies: + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.9 + "@babel/plugin-syntax-async-generators": ^7.8.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fad98786b446ce63bde0d14a221e2617eef5a7bbca62b49d96f16ab5e1694521234cfba6145b830fbf9af16d60a8a3dbf148e8694830bd91796fe333b0599e73 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.3" + dependencies: + "@babel/helper-environment-visitor": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-remap-async-to-generator": ^7.18.9 + "@babel/plugin-syntax-async-generators": ^7.8.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0ea339f9e484df0b72eb962dca81f5e6291d674eb4de7af2cde2a7e2ff728fbc4fdad662f2e77bf5bdbd2b628e111b9a7c71c3165684147ca1bf1f891fc30a4b + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-remap-async-to-generator": ^7.25.0 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cce2bab70ad871ac11751bede006bd4861888f4c63bc9954be38620b14cc6890a4cbc633c1062b89c5fe288ce74b9d1974cc0d43c04baeeb2b13231a236fba85 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" + dependencies: + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-remap-async-to-generator": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 13704fb3b83effc868db2b71bfb2c77b895c56cb891954fc362e95e200afd523313b0e7cf04ce02f45b05e76017c5b5fa8070c92613727a35131bb542c253a36 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" + dependencies: + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-remap-async-to-generator": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fe9ee8a5471b4317c1b9ea92410ace8126b52a600d7cfbfe1920dcac6fb0fad647d2e08beb4fd03c630eb54430e6c72db11e283e3eddc49615c68abd39430904 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" + dependencies: + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b95f23f99dcb379a9f0a1c2a3bbea3f8dc0e1b16dc1ac8b484fe378370169290a7a63d520959a9ba1232837cf74a80e23f6facbe14fd42a3cda6d3c2d7168e62 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0": + version: 7.16.7 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 591e9f75437bb32ebf9506d28d5c9659c66c0e8e0c19b12924d808d898e68309050aadb783ccd70bb4956555067326ecfa17a402bc77eb3ece3c6863d40b9016 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 416b1341858e8ca4e524dee66044735956ced5f478b2c3b9bc11ec2285b0c25d7dbb96d79887169eb938084c95d0a89338c8b2fe70d473bd9dc92e5d9db1732c + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 249cdcbff4e778b177245f9652b014ea4f3cd245d83297f10a7bf6d97790074089aa62bcde8c08eb299c5e68f2faed346b587d3ebac44d625ba9a83a4ee27028 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.0.0": + version: 7.17.12 + resolution: "@babel/plugin-transform-block-scoping@npm:7.17.12" + dependencies: + "@babel/helper-plugin-utils": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ea3d4d88e38367d62a1029d204c5cc0ac410b00779179c8507448001c64784bf8e34c6fa57f23d8b95a835541a2fc67d1076650b1efc99c78f699de354472e49 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 15aacaadbecf96b53a750db1be4990b0d89c7f5bc3e1794b63b49fb219638c1fd25d452d15566d7e5ddf5b5f4e1a0a0055c35c1c7aee323c7b114bf49f66f4b0 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-block-scoping@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c7091dc000b854ce0c471588ca0704ef1ce78cff954584a9f21c1668fd0669e7c8d5396fb72fe49a2216d9b96a400d435f424f27e41a097ef6c855f9c57df195 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.22.5": + version: 7.23.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.23.0" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0cfe925cc3b5a3ad407e2253fab3ceeaa117a4b291c9cb245578880872999bca91bd83ffa0128ae9ca356330702e1ef1dcb26804f28d2cef678239caf629f73e + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b1a8f932f69ad2a47ae3e02b4cedd2a876bfc2ac9cf72a503fd706cdc87272646fe9eed81e068c0fc639647033de29f7fa0c21cddd1da0026f83dbaac97316a8 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:7.22.5, @babel/plugin-transform-class-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b830152dfc2ff2f647f0abe76e6251babdfbef54d18c4b2c73a6bf76b1a00050a5d998dac80dc901a48514e95604324943a9dd39317073fe0928b559e0e0c579 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-class-properties@npm:7.22.3" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4037397badb5d537d87c092da99a0278f735e66dc667a31495aa2dd5fcf1315bfe8981773d2ce502ff8048c68ab32a7c3019df714945520443e28380fa5e7f74 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-properties@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1348d7ce74da38ba52ea85b3b4289a6a86913748569ef92ef0cff30702a9eb849e5eaf59f1c6f3517059aa68115fb3067e389735dccacca39add4e2b0c67e291 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.22.11, @babel/plugin-transform-class-static-block@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-class-static-block@npm:7.22.11" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.11 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 69f040506fad66f1c6918d288d0e0edbc5c8a07c8b4462c1184ad2f9f08995d68b057126c213871c0853ae0c72afc60ec87492049dfacb20902e32346a448bcb + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-class-static-block@npm:7.22.3" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: f407a3354ee0720803cd3366d7d081643d37201892243deed1aa76eb9330c11bf4e548441fa6a77637262a1b61890c1aacea176ad828650b8eb3f5b4d2da9c97 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 324049263504f18416f1c3e24033baebfafd05480fdd885c8ebe6f2b415b0fc8e0b98d719360f9e30743cc78ac387fabc0b3c6606d2b54135756ffb92963b382 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.0.0": + version: 7.17.12 + resolution: "@babel/plugin-transform-classes@npm:7.17.12" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.7 + "@babel/helper-environment-visitor": ^7.16.7 + "@babel/helper-function-name": ^7.17.9 + "@babel/helper-optimise-call-expression": ^7.16.7 + "@babel/helper-plugin-utils": ^7.17.12 + "@babel/helper-replace-supers": ^7.16.7 + "@babel/helper-split-export-declaration": ^7.16.7 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0127b1cc432373965edf28cbfd9e85df5bc77e974ceb80ba32691e050e8fb6792f207d1941529c81d1b9e7a6e82da26ecc445f6f547f0ad5076cd2b27adc18ac + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/plugin-transform-classes@npm:7.21.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-compilation-targets": ^7.20.7 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-replace-supers": ^7.20.7 + "@babel/helper-split-export-declaration": ^7.18.6 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 088ae152074bd0e90f64659169255bfe50393e637ec8765cb2a518848b11b0299e66b91003728fd0a41563a6fdc6b8d548ece698a314fd5447f5489c22e466b7 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.22.15, @babel/plugin-transform-classes@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-classes@npm:7.22.15" + dependencies: + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 + "@babel/helper-split-export-declaration": ^7.22.6 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d3f4d0c107dd8a3557ea3575cc777fab27efa92958b41e4a9822f7499725c1f554beae58855de16ddec0a7b694e45f59a26cea8fbde4275563f72f09c6e039a0 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-classes@npm:7.25.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-compilation-targets": ^7.24.8 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-replace-supers": ^7.25.0 + "@babel/traverse": ^7.25.0 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ff97f168e6a18fa4e7bb439f1a170dc83c470973091c22c74674769350ab572be5af017cdb64fbd261fe99d068a4ee88f1b7fa7f5ab524d84c2f2833b116e577 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.0.0": + version: 7.17.12 + resolution: "@babel/plugin-transform-computed-properties@npm:7.17.12" + dependencies: + "@babel/helper-plugin-utils": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5d05418617e0967bec4818556b7febb6f8c40813e32035f0bd6b7dbd7b9d63e9ab7c7c8fd7bd05bab2a599dad58e7b69957d9559b41079d112c219bbc3649aa1 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/template": ^7.20.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: be70e54bda8b469146459f429e5f2bd415023b87b2d5af8b10e48f465ffb02847a3ed162ca60378c004b82db848e4d62e90010d41ded7e7176b6d8d1c2911139 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/plugin-transform-computed-properties@npm:7.21.5" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/template": ^7.20.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e819780ab30fc40d7802ffb75b397eff63ca4942a1873058f81c80f660189b78e158fa03fd3270775f0477c4c33cee3d8d40270e64404bbf24aa6cdccb197e7b + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/template": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c2a77a0f94ec71efbc569109ec14ea2aa925b333289272ced8b33c6108bdbb02caf01830ffc7e49486b62dec51911924d13f3a76f1149f40daace1898009e131 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/template": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0cf8c1b1e4ea57dec8d4612460d84fd4cdbf71a7499bb61ee34632cf89018a59eee818ffca88a8d99ee7057c20a4257044d7d463fda6daef9bf1db9fa81563cb + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.0.0": + version: 7.18.0 + resolution: "@babel/plugin-transform-destructuring@npm:7.18.0" + dependencies: + "@babel/helper-plugin-utils": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d85d60737c3b05c4db71bc94270e952122d360bd6ebf91b5f98cf16fb8564558b615d115354fe0ef41e2aae9c4540e6e16144284d881ecaef687693736cd2a79 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.20.0": + version: 7.24.7 + resolution: "@babel/plugin-transform-destructuring@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b9637b27faf9d24a8119bc5a1f98a2f47c69e6441bd8fc71163500be316253a72173308a93122bcf27d8d314ace43344c976f7291cf6376767f408350c8149d4 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.21.3": + version: 7.21.3 + resolution: "@babel/plugin-transform-destructuring@npm:7.21.3" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 43ebbe0bfa20287e34427be7c2200ce096c20913775ea75268fb47fe0e55f9510800587e6052c42fe6dffa0daaad95dd465c3e312fd1ef9785648384c45417ac + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-destructuring@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4bccb4765e5287f1d36119d930afb9941ea8f4f001bddb8febff716bac0e09dc58576624f3ec59470630513044dd342075fe11af16d8c1b234cb7406cffca9f0 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.22.5": + version: 7.23.0 + resolution: "@babel/plugin-transform-destructuring@npm:7.23.0" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cd6dd454ccc2766be551e4f8a04b1acc2aa539fa19e5c7501c56cc2f8cc921dd41a7ffb78455b4c4b2f954fcab8ca4561ba7c9c7bd5af9f19465243603d18cc3 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0b4bd3d608979a1e5bd97d9d42acd5ad405c7fffa61efac4c7afd8e86ea6c2d91ab2d94b6a98d63919571363fe76e0b03c4ff161f0f60241b895842596e4a999 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 409b658d11e3082c8f69e9cdef2d96e4d6d11256f005772425fb230cc48fd05945edbfbcb709dab293a1a2f01f9c8a5bb7b4131e632b23264039d9f95864b453 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 67b10fc6abb1f61f0e765288eb4c6d63d1d0f9fc0660e69f6f2170c56fa16bc74e49857afc644beda112b41771cd90cf52df0940d11e97e52617c77c7dcff171 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.4.4": + version: 7.16.7 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.16.7 + "@babel/helper-plugin-utils": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 554570dddfd5bfd87ab307be520f69a3d4ed2d2db677c165971b400d4c96656d0c165b318e69f1735612dcd12e04c0ee257697dc26800e8a572ca73bc05fa0f4 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bb1280fbabaab6fab2ede585df34900712698210a3bd413f4df5bae6d8c24be36b496c92722ae676a7a67d060a4624f4d6c23b923485f906bfba8773c69f55b4 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d1da2ff85ecb56a63f4ccfd9dc9ae69400d85f0dadf44ecddd9e71c6e5c7a9178e74e3a9637555f415a2bb14551e563f09f98534ab54f53d25e8439fdde6ba2d + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.25.0 + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 608d6b0e77341189508880fd1a9f605a38d0803dd6f678ea3920ab181b17b377f6d5221ae8cf0104c7a044d30d4ddb0366bd064447695671d78457a656bb264f + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.22.1": + version: 7.22.1 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.1" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e322a08f01cedddcd7c70aa6a74342e900df39ab13dbaa2c8175af660b1786dd26b582546fc37e16bec47181931963e173ff53ffd7c41d5f54687da5f8d457bb + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.22.11, @babel/plugin-transform-dynamic-import@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 78fc9c532210bf9e8f231747f542318568ac360ee6c27e80853962c984283c73da3f8f8aebe83c2096090a435b356b092ed85de617a156cbe0729d847632be45 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 776509ff62ab40c12be814a342fc56a5cc09b91fb63032b2633414b635875fd7da03734657be0f6db2891fe6e3033b75d5ddb6f2baabd1a02e4443754a785002 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f2d660c1b1d51ad5fec1cd5ad426a52187204068c4158f8c4aa977b31535c61b66898d532603eef21c15756827be8277f724c869b888d560f26d7fe848bb5eae + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 23c84a23eb56589fdd35a3540f9a1190615be069110a2270865223c03aee3ba4e0fc68fe14850800cf36f0712b26e4964d3026235261f58f0405a29fe8dac9b1 + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.22.11, @babel/plugin-transform-export-namespace-from@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 73af5883a321ed56a4bfd43c8a7de0164faebe619287706896fc6ee2f7a4e69042adaa1338c0b8b4bdb9f7e5fdceb016fb1d40694cb43ca3b8827429e8aac4bf + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7bb031ea6e05e8090ac18dc03c62527be29f541e9ec0c93031d77d4540c736b43384a2f2a9aef1f72b7867989f1ce2aaefb325dbc7cc49c59f55aed87a96d488 + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3bd3a10038f10ae0dea1ee42137f3edcf7036b5e9e570a0d1cbd0865f03658990c6c2d84fa2475f87a754e7dc5b46766c16f7ce5c9b32c3040150b6a21233a80 + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0": + version: 7.13.0 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.13.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-flow": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f15fe806d33705344bcef978c69add12e5e1ccfcf75c4bce6bf1100f90e858e5b40afc333aedf4aaaff0170cd8187a86df7168e59823ec883261bda2535773ba + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.20.0": + version: 7.24.7 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-flow": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 260bd95b1a90ff4af11bf8e21e6dd35b1b7863daffb12a5b2018e2806fec033a7883114dc5f0b67d594ca93fe6f2c9894944c865dd2c51affb7da0f9a6473872 + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-flow": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a45951c57265c366f95db9a5e70a62cfc3eafafa3f3d23295357577b5fc139d053d45416cdbdf4a0a387e41cefc434ab94dd6c3048d03b094ff6d041dd10a0b0 + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.24.7": + version: 7.25.2 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.2" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/plugin-syntax-flow": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9f7b96cbd374077eaf04b59e468976d2e89ec353807d7ac28f129f686945447df92aeb5b60acf906f3ec0f9ebef5d9f88735c7aa39af97033a6ab96c79c9a909 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.0.0": + version: 7.18.1 + resolution: "@babel/plugin-transform-for-of@npm:7.18.1" + dependencies: + "@babel/helper-plugin-utils": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cdc6e1f1170218cc6ac5b26b4b8f011ec5c36666101e00e0061aaa5772969b093bad5b2af8ce908c184126d5bb0c26b89dd4debb96b2375aba2e20e427a623a8 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/plugin-transform-for-of@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2f3f86ca1fab2929fcda6a87e4303d5c635b5f96dc9a45fd4ca083308a3020c79ac33b9543eb4640ef2b79f3586a00ab2d002a7081adb9e9d7440dce30781034 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/plugin-transform-for-of@npm:7.21.5" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b6666b24e8ca1ffbf7452a0042149724e295965aad55070dc9ee992451d69d855fc9db832c1c5fb4d3dc532f4a18a2974d5f8524f5c2250dda888d05f6f3cadb + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.22.15, @babel/plugin-transform-for-of@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-for-of@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f395ae7bce31e14961460f56cf751b5d6e37dd27d7df5b1f4e49fec1c11b6f9cf71991c7ffbe6549878591e87df0d66af798cf26edfa4bfa6b4c3dba1fb2f73a + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-for-of@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a53b42dc93ab4b7d1ebd3c695b52be22b3d592f6a3dbdb3dc2fea2c8e0a7e1508fe919864c455cde552aec44ce7518625fccbb70c7063373ca228d884f4f49ea + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.0.0": + version: 7.16.7 + resolution: "@babel/plugin-transform-function-name@npm:7.16.7" + dependencies: + "@babel/helper-compilation-targets": ^7.16.7 + "@babel/helper-function-name": ^7.16.7 + "@babel/helper-plugin-utils": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4d97d0b84461cdd5d5aa2d010cdaf30f1f83a92a0dedd3686cbc7e90dc1249a70246f5bac0c1f3cd3f1dbfb03f7aac437776525a0c90cafd459776ea4fcc6bde + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-function-name@npm:7.18.9" + dependencies: + "@babel/helper-compilation-targets": ^7.18.9 + "@babel/helper-function-name": ^7.18.9 + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-function-name@npm:7.22.5" + dependencies: + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cff3b876357999cb8ae30e439c3ec6b0491a53b0aa6f722920a4675a6dd5b53af97a833051df4b34791fe5b3dd326ccf769d5c8e45b322aa50ee11a660b17845 + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.25.1": + version: 7.25.1 + resolution: "@babel/plugin-transform-function-name@npm:7.25.1" + dependencies: + "@babel/helper-compilation-targets": ^7.24.8 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 743f3ea03bbc5a90944849d5a880b6bd9243dddbde581a46952da76e53a0b74c1e2424133fe8129d7a152c1f8c872bcd27e0b6728d7caadabd1afa7bb892e1e0 + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.22.11, @babel/plugin-transform-json-strings@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-json-strings@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-json-strings": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 50665e5979e66358c50e90a26db53c55917f78175127ac2fa05c7888d156d418ffb930ec0a109353db0a7c5f57c756ce01bfc9825d24cbfd2b3ec453f2ed8cba + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-json-strings@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-json-strings": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2b09a549bdd80020b390dbc91aaf0be624e42fff64026a38abad1ec6c7714551edad8a84edb555288778aa9e3bb20e9df535587466b30347b63532fb1f404731 + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-json-strings": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 88874d0b7a1ddea66c097fc0abb68801ffae194468aa44b828dde9a0e20ac5d8647943793de86092eabaa2911c96f67a6b373793d4bb9c932ef81b2711c06c2e + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.0.0": + version: 7.17.12 + resolution: "@babel/plugin-transform-literals@npm:7.17.12" + dependencies: + "@babel/helper-plugin-utils": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 09280fc1ed23b81deafd4fcd7a35d6c0944668de2317f14c1b8b78c5c201f71a063bb8d174d2fc97d86df480ff23104c8919d3aacf19f33c2b5ada584203bf1c + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-literals@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-literals@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ec37cc2ffb32667af935ab32fe28f00920ec8a1eb999aa6dc6602f2bebd8ba205a558aeedcdccdebf334381d5c57106c61f52332045730393e73410892a9735b + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/plugin-transform-literals@npm:7.25.2" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 70c9bb40e377a306bd8f500899fb72127e527517914466e95dc6bb53fa7a0f51479db244a54a771b5780fc1eab488fedd706669bf11097b81a23c81ab7423eb1 + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.11, @babel/plugin-transform-logical-assignment-operators@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c664e9798e85afa7f92f07b867682dee7392046181d82f5d21bae6f2ca26dfe9c8375cdc52b7483c3fc09a983c1989f60eff9fbc4f373b0c0a74090553d05739 + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b2452c6804aa440bd3fc662ee4f477c3acfa4a7f768ac66a6084a9e0774ac52cfff7cc6ea72495cc4e0728d2d7f98b65555927484dc96e9564adf1bcc5aa956e + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3367ce0be243704dc6fce23e86a592c4380f01998ee5dd9f94c54b1ef7b971ac6f8a002901eb51599ac6cbdc0d067af8d1a720224fca1c40fde8bb8aab804aac + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.0.0": + version: 7.16.7 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fdf5b22abab2b770e69348ce7f99796c3e0e1e7ce266afdbe995924284704930fa989323bdbda7070db8adb45a72f39eaa1dbebf18b67fc44035ec00c6ae3300 + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ec4b0e07915ddd4fda0142fd104ee61015c208608a84cfa13643a95d18760b1dc1ceb6c6e0548898b8c49e5959a994e46367260176dbabc4467f729b21868504 + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2720c57aa3bf70576146ba7d6ea03227f4611852122d76d237924f7b008dafc952e6ae61a19e5024f26c665f44384bbd378466f01b6bd1305b3564a3b7fb1a5d + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.20.11": + version: 7.20.11 + resolution: "@babel/plugin-transform-modules-amd@npm:7.20.11" + dependencies: + "@babel/helper-module-transforms": ^7.20.11 + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 23665c1c20c8f11c89382b588fb9651c0756d130737a7625baeaadbd3b973bc5bfba1303bedffa8fb99db1e6d848afb01016e1df2b69b18303e946890c790001 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-amd@npm:7.22.5" + dependencies: + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7da4c4ebbbcf7d182abb59b2046b22d86eee340caf8a22a39ef6a727da2d8acfec1f714fcdcd5054110b280e4934f735e80a6848d192b6834c5d4459a014f04d + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7" + dependencies: + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f1dd0fb2f46c0f8f21076b8c7ccd5b33a85ce6dcb31518ea4c648d9a5bb2474cd4bd87c9b1b752e68591e24b022e334ba0d07631fef2b6b4d8a4b85cf3d581f5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0": + version: 7.18.2 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.18.2" + dependencies: + "@babel/helper-module-transforms": ^7.18.0 + "@babel/helper-plugin-utils": ^7.17.12 + "@babel/helper-simple-access": ^7.18.2 + babel-plugin-dynamic-import-node: ^2.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 99c1c5ce9c353e29eb680ebb5bdf27c076c6403e133a066999298de642423cc7f38cfbac02372d33ed73278da13be23c4be7d60169c3e27bd900a373e61a599a + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.21.2": + version: 7.21.2 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.2" + dependencies: + "@babel/helper-module-transforms": ^7.21.2 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-simple-access": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 65aa06e3e3792f39b99eb5f807034693ff0ecf80438580f7ae504f4c4448ef04147b1889ea5e6f60f3ad4a12ebbb57c6f1f979a249dadbd8d11fe22f4441918b + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.5" + dependencies: + "@babel/helper-module-transforms": ^7.21.5 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-simple-access": ^7.21.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d9ff7a21baaa60c08a0c86c5e468bb4b2bd85caf51ba78712d8f45e9afa2498d50d6cdf349696e08aa820cafed65f19b70e5938613db9ebb095f7aba1127f282 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.15" + dependencies: + "@babel/helper-module-transforms": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-simple-access": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f8fc85fefa6be8626a378ca38fb84c7359043e7c692c854e9ee250a05121553b7f4a58e127099efe12662ec6bebbfd304ce638a0b4563d7cbd5982f3d877321c + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.22.5": + version: 7.23.0 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0" + dependencies: + "@babel/helper-module-transforms": ^7.23.0 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-simple-access": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7fb25997194053e167c4207c319ff05362392da841bd9f42ddb3caf9c8798a5d203bd926d23ddf5830fdf05eddc82c2810f40d1287e3a4f80b07eff13d1024b5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.7" + dependencies: + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bfda2a0297197ed342e2a02e5f9847a489a3ae40a4a7d7f00f4aeb8544a85e9006e0c5271c8f61f39bc97975ef2717b5594cf9486694377a53433162909d64c1 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" + dependencies: + "@babel/helper-module-transforms": ^7.24.8 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-simple-access": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a4cf95b1639c33382064b44558f73ee5fac023f2a94d16e549d2bb55ceebd5cbc10fcddd505d08cd5bc97f5a64af9fd155512358b7dcf7b1a0082e8945cf21c5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.20.11": + version: 7.20.11 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.20.11" + dependencies: + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-module-transforms": ^7.20.11 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-validator-identifier": ^7.19.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4546c47587f88156d66c7eb7808e903cf4bb3f6ba6ac9bc8e3af2e29e92eb9f0b3f44d52043bfd24eb25fa7827fd7b6c8bfeac0cac7584e019b87e1ecbd0e673 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.11" + dependencies: + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-module-transforms": ^7.22.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d0991e4bdc3352b6a9f4d12b6662e3645d892cd5c3c005ba5f14e65f1e218c6a8f7f4497e64a51d82a046e507aaa7db3143b800b0270dca1824cbd214ff3363d + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.3" + dependencies: + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-module-transforms": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-validator-identifier": ^7.19.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a12a063dad61cccf50686d3f394f9f3f6c06261160c897a4b3423309aa7c40d37bd88126cf8535701f3490b99ac93b34c947f664465d63a74477ba66ab1d82e9 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.22.5": + version: 7.23.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.0" + dependencies: + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-module-transforms": ^7.23.0 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2d481458b22605046badea2317d5cc5c94ac3031c2293e34c96f02063f5b02af0979c4da6a8fbc67cc249541575dc9c6d710db6b919ede70b7337a22d9fd57a7 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.0" + dependencies: + "@babel/helper-module-transforms": ^7.25.0 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fe673bec08564e491847324bb80a1e6edfb229f5c37e58a094d51e95306e7b098e1d130fc43e992d22debd93b9beac74441ffc3f6ea5d78f6b2535896efa0728 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" + dependencies: + "@babel/helper-module-transforms": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5" + dependencies: + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 46622834c54c551b231963b867adbc80854881b3e516ff29984a8da989bd81665bd70e8cba6710345248e97166689310f544aee1a5773e262845a8f1b3e5b8b4 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7" + dependencies: + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9ff1c464892efe042952ba778468bda6131b196a2729615bdcc3f24cdc94014f016a4616ee5643c5845bade6ba698f386833e61056d7201314b13a7fd69fac88 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.20.5 + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 528c95fb1087e212f17e1c6456df041b28a83c772b9c93d2e407c9d03b72182b0d9d126770c1d6e0b23aab052599ceaf25ed6a2c0627f4249be34a83f6fae853 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: baf3d8d785ab36df2d7396b8a255e1209eecf83ad5334121fbb9e966a95353fe2100dd3683436f4c74b3c848ec0b34817491c4d14b074e3e539e2040076173d8 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 3ee564ddee620c035b928fdc942c5d17e9c4b98329b76f9cefac65c111135d925eb94ed324064cd7556d4f5123beec79abea1d4b97d1c8a2a5c748887a2eb623 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: f1c6c7b5d60a86b6d7e4dd098798e1d393d55e993a0b57a73b53640c7a94985b601a96bdacee063f809a9a700bcea3a2ff18e98fa561554484ac56b761d774bd + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-new-target@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-new-target@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a28043575aae52127b7287711cf0b244a28279464d979858408ca6197169b6f7e6341e5b4554a894d409245fcd696c9bf38d5f1f1c64f84a82f479bf35659920 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-new-target@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6b72112773487a881a1d6ffa680afde08bad699252020e86122180ee7a88854d5da3f15d9bca3331cf2e025df045604494a8208a2e63b486266b07c14e2ffbf3 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-new-target@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3cb94cd1076b270f768f91fdcf9dd2f6d487f8dbfff3df7ca8d07b915900b86d02769a35ba1407d16fe49499012c8f055e1741299e2c880798b953d942a8fa1b + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.0.0-0, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4a9221356401d87762afbc37a9e8e764afc2daf09c421117537820f8cfbed6876888372ad3a7bcfae2d45c95f026651f050ab4020b777be31d3ffb00908dbdd3 + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 167babecc8b8fe70796a7b7d34af667ebbf43da166c21689502e5e8cc93180b7a85979c77c9f64b7cce431b36718bd0a6df9e5e0ffea4ae22afb22cfef886372 + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 404c3c7eb8b99f226ce40147d350ad3df55b38ffe39856356f7cfbbb1626ce060bc1daff0663c090d53160d39fdb26ea67ca291d47211ff7746a8a0c3bbc1639 + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.22.11, @babel/plugin-transform-numeric-separator@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: af064d06a4a041767ec396a5f258103f64785df290e038bba9f0ef454e6c914f2ac45d862bbdad8fac2c7ad47fa4e95356f29053c60c100a0160b02a995fe2a3 + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2cbcf21d040cb9ab6ded383586620f3a84e8619fecdc222d8b3d462c706b1e8ceae2dddf530d9177291c155c80dd67100142e76a11f1e230aeda6d90273a2890 + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 561b5f1d08b2c3f92ce849f092751558b5e6cfeb7eb55c79e7375c34dd9c3066dce5e630bb439affef6adcf202b6cbcaaa23870070276fa5bb429c8f5b8c7514 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.12.13, @babel/plugin-transform-object-rest-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" + dependencies: + "@babel/helper-compilation-targets": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 169d257b9800c13e1feb4c37fb05dae84f702e58b342bb76e19e82e6692b7b5337c9923ee89e3916a97c0dd04a3375bdeca14f5e126f110bbacbeb46d1886ca2 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.22.15, @babel/plugin-transform-object-rest-spread@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.15" + dependencies: + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.22.15 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 62197a6f12289c1c1bd57f3bed9f0f765ca32390bfe91e0b5561dd94dd9770f4480c4162dec98da094bc0ba99d2c2ebba68de47c019454041b0b7a68ba2ec66d + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.3" + dependencies: + "@babel/compat-data": ^7.22.3 + "@babel/helper-compilation-targets": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.22.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 43f4cb8eb60e76bb506cab86a6c9a98b2f4f986296a20a01f93c6a7bf3835621a22e3e85eaca094c86b03580f93e583391f4c0da0af0c9408ff1a2b35f2e96ca + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.0.0": + version: 7.16.7 + resolution: "@babel/plugin-transform-object-super@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-replace-supers": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 46e3c879f4a93e904f2ecf83233d40c48c832bdbd82a67cab1f432db9aa51702e40d9e51e5800613e12299974f90f4ed3869e1273dbca8642984266320c5f341 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-object-super@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-replace-supers": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-object-super@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b71887877d74cb64dbccb5c0324fa67e31171e6a5311991f626650e44a4083e5436a1eaa89da78c0474fb095d4ec322d63ee778b202d33aa2e4194e1ed8e62d7 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-object-super@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-replace-supers": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f71e607a830ee50a22fa1a2686524d3339440cf9dea63032f6efbd865cfe4e35000e1e3f3492459e5c986f7c0c07dc36938bf3ce61fc9ba5f8ab732d0b64ab37 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.22.11, @babel/plugin-transform-optional-catch-binding@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.11" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f17abd90e1de67c84d63afea29c8021c74abb2794d3a6eeafb0bbe7372d3db32aefca386e392116ec63884537a4a2815d090d26264d259bacc08f6e3ed05294c + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e766bd2ac74fcd2226c8816500c788268a1fa5200498a288f10854253addb36871cd7b415e20736819e7fcb996a0e33312bc1ce6db9b540ec9dd7b946cb37dda + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7229f3a5a4facaab40f4fdfc7faabc157dc38a67d66bed7936599f4bc509e0bff636f847ac2aa45294881fce9cf8a0a460b85d2a465b7b977de9739fce9b18f6 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.0.0-0": + version: 7.24.7 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 877e7ce9097d475132c7f4d1244de50bb2fd37993dc4580c735f18f8cbc49282f6e77752821bcad5ca9d3528412d2c8a7ee0aa7ca71bb680ff82648e7a5fed25 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6b97abe0e50ca2dd8684fcef2c8d12607637e707aa9d513b7035f5e812efbde9305736b438d422103a7844e04124cad5efa4ff0e6226a57afa1210a1c7485c8e + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9b50a28b59250ecabeae928b8237c596e6f81f5fcdacd03a99a3777bbfea2447773936f4b5091e63b2d46e707429d9bdf22fcd0fb4b05a702bf08f554bea3ae2 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.22.5": + version: 7.23.0 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.0" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f702634f2b97e5260dbec0d4bde05ccb6f4d96d7bfa946481aeacfa205ca846cb6e096a38312f9d51fdbdac1f258f211138c5f7075952e46a5bf8574de6a1329 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 45e55e3a2fffb89002d3f89aef59c141610f23b60eee41e047380bffc40290b59f64fc649aa7ec5281f73d41b2065410d788acc6afaad2a9f44cad6e8af04442 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.17.12": + version: 7.17.12 + resolution: "@babel/plugin-transform-parameters@npm:7.17.12" + dependencies: + "@babel/helper-plugin-utils": ^7.17.12 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d9ed5ec61dc460835bade8fa710b42ec9f207bd448ead7e8abd46b87db0afedbb3f51284700fd2a6892fdf6544ec9b949c505c6542c5ba0a41ca4e8749af00f0 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.21.3": + version: 7.21.3 + resolution: "@babel/plugin-transform-parameters@npm:7.21.3" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c92128d7b1fcf54e2cab186c196bbbf55a9a6de11a83328dc2602649c9dc6d16ef73712beecd776cd49bfdc624b5f56740f4a53568d3deb9505ec666bc869da3 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.22.15, @babel/plugin-transform-parameters@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-parameters@npm:7.22.15" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 541188bb7d1876cad87687b5c7daf90f63d8208ae83df24acb1e2b05020ad1c78786b2723ca4054a83fcb74fb6509f30c4cacc5b538ee684224261ad5fb047c1 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-parameters@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + checksum: 68a30f630f5d99be7675fab23d009205302f33f1eac015418d5344983fe8f97f4eae0130f6e4f3c21b8dd8971d516346fba90b01ba3c2c15f23b47c6f4b7161a languageName: node linkType: hard -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.0.0, @babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" +"@babel/plugin-transform-parameters@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-parameters@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + checksum: ab534b03ac2eff94bc79342b8f39a4584666f5305a6c63c1964afda0b1b004e6b861e49d1683548030defe248e3590d3ff6338ee0552cb90c064f7e1479968c3 languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" +"@babel/plugin-transform-private-methods@npm:7.22.5, @babel/plugin-transform-private-methods@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.10.4 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + checksum: 321479b4fcb6d3b3ef622ab22fd24001e43d46e680e8e41324c033d5810c84646e470f81b44cbcbef5c22e99030784f7cac92f1829974da7a47a60a7139082c3 languageName: node linkType: hard -"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" +"@babel/plugin-transform-private-methods@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-private-methods@npm:7.22.3" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-create-class-features-plugin": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + checksum: 048501cfdf86c3de5750dc0728cf73d65f1ec4ad932e16e55b238ac0b5b805882c1fbbdb63077d95ce8beadae840cee11b767cc6918264517245e7f04baf9f63 languageName: node linkType: hard -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" +"@babel/plugin-transform-private-methods@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-methods@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + checksum: c151548e34909be2adcceb224d8fdd70bafa393bc1559a600906f3f647317575bf40db670470934a360e90ee8084ef36dffa34ec25d387d414afd841e74cf3fe languageName: node linkType: hard -"@babel/plugin-syntax-optional-chaining@npm:^7.0.0, @babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" +"@babel/plugin-transform-private-property-in-object@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + checksum: 9ac019fb2772f3af6278a7f4b8b14b0663accb3fd123d87142ceb2fbc57fd1afa07c945d1329029b026b9ee122096ef71a3f34f257a9e04cf4245b87298c38b4 languageName: node linkType: hard -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" +"@babel/plugin-transform-private-property-in-object@npm:^7.22.11, @babel/plugin-transform-private-property-in-object@npm:^7.22.5": + version: 7.22.11 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.11" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.11 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda + checksum: 4d029d84901e53c46dead7a46e2990a7bc62470f4e4ca58a0d063394f86652fd58fe4eea1eb941da3669cd536b559b9d058b342b59300026346b7a2a51badac8 languageName: node linkType: hard -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" +"@babel/plugin-transform-private-property-in-object@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.3" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + checksum: ea3c347687672119305ba2f2ef7ca66905c1713c6652bb01deacc057178bedcf07c46b6b75e1fe8688ffed8fcabe312a735eeb0fef21dd9ab61a61db23ef6ba5 languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.25.9, @babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" +"@babel/plugin-transform-private-property-in-object@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0e9821e8ba7d660c36c919654e4144a70546942ae184e85b8102f2322451eae102cbfadbcadd52ce077a2b44b400ee52394c616feab7b5b9f791b910e933fd33 + checksum: 8cee9473095305cc787bb653fd681719b49363281feabf677db8a552e8e41c94441408055d7e5fd5c7d41b315e634fa70b145ad0c7c54456216049df4ed57350 languageName: node linkType: hard -"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" +"@babel/plugin-transform-property-literals@npm:^7.0.0": + version: 7.16.7 + resolution: "@babel/plugin-transform-property-literals@npm:7.16.7" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.16.7 peerDependencies: - "@babel/core": ^7.0.0 - checksum: a651d700fe63ff0ddfd7186f4ebc24447ca734f114433139e3c027bc94a900d013cf1ef2e2db8430425ba542e39ae160c3b05f06b59fd4656273a3df97679e9c + "@babel/core": ^7.0.0-0 + checksum: b5674458991a9b0e8738989d70faa88c7f98ed3df923c119f1225069eed72fe5e0ce947b1adc91e378f5822fbdeb7a672f496fd1c75c4babcc88169e3a7c3229 languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.0.0, @babel/plugin-transform-arrow-functions@npm:^7.0.0-0, @babel/plugin-transform-arrow-functions@npm:^7.22.5, @babel/plugin-transform-arrow-functions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" +"@babel/plugin-transform-property-literals@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c29f081224859483accf55fb4d091db2aac0dcd0d7954bac5ca889030cc498d3f771aa20eb2e9cd8310084ec394d85fa084b97faf09298b6bc9541182b3eb5bb + checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.22.5, @babel/plugin-transform-async-generator-functions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.9" +"@babel/plugin-transform-property-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-remap-async-to-generator": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 41e02c18c2a57de9f274fa2c5a1bf81a20ab5f321db29cc3051512b9c5bdf3f1a8c42f1fc282cb62343c6d50849f992eede954d5f7fb5e7df48ae0c59ea7e054 + checksum: 796176a3176106f77fcb8cd04eb34a8475ce82d6d03a88db089531b8f0453a2fb8b0c6ec9a52c27948bc0ea478becec449893741fc546dfc3930ab927e3f9f2e languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.22.5, @babel/plugin-transform-async-to-generator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" +"@babel/plugin-transform-property-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" dependencies: - "@babel/helper-module-imports": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-remap-async-to-generator": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b3ad50fb93c171644d501864620ed23952a46648c4df10dc9c62cc9ad08031b66bd272cfdd708faeee07c23b6251b16f29ce0350473e4c79f0c32178d38ce3a6 + checksum: 9aeefc3aab6c6bf9d1fae1cf3a2d38c7d886fd3c6c81b7c608c477f5758aee2e7abf52f32724310fe861da61af934ee2508b78a5b5f234b9740c9134e1c14437 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0, @babel/plugin-transform-block-scoped-functions@npm:^7.22.5, @babel/plugin-transform-block-scoped-functions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.9" +"@babel/plugin-transform-react-constant-elements@npm:^7.21.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-react-constant-elements@npm:7.22.3" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.21.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bf31896556b33a80f017af3d445ceb532ec0f5ca9d69bc211a963ac92514d172d5c24c5ac319f384d9dfa7f1a4d8dc23032c2fe3e74f98a59467ecd86f7033ae + checksum: 33a1849de4c1993a666e835022ee7f55691778458f05f0f1b053b12a8e11ccad2659ac21160ee05072d9661507087b7152c0b02d607af2856920739e2514f8f7 languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.22.5, @babel/plugin-transform-block-scoping@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-block-scoping@npm:7.25.9" +"@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e869500cfb1995e06e64c9608543b56468639809febfcdd6fcf683bc0bf1be2431cacf2981a168a1a14f4766393e37bc9f7c96d25bc5b5f39a64a8a8ad0bf8e0 + checksum: 51c087ab9e41ef71a29335587da28417536c6f816c292e092ffc0e0985d2f032656801d4dd502213ce32481f4ba6c69402993ffa67f0818a07606ff811e4be49 languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:7.22.5": +"@babel/plugin-transform-react-display-name@npm:^7.22.5": version: 7.22.5 - resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" + resolution: "@babel/plugin-transform-react-display-name@npm:7.22.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b830152dfc2ff2f647f0abe76e6251babdfbef54d18c4b2c73a6bf76b1a00050a5d998dac80dc901a48514e95604324943a9dd39317073fe0928b559e0e0c579 + checksum: a12bfd1e4e93055efca3ace3c34722571bda59d9740dca364d225d9c6e3ca874f134694d21715c42cc63d79efd46db9665bd4a022998767f9245f1e29d5d204d languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" +"@babel/plugin-transform-react-display-name@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a8d69e2c285486b63f49193cbcf7a15e1d3a5f632c1c07d7a97f65306df7f554b30270b7378dde143f8b557d1f8f6336c643377943dec8ec405e4cd11e90b9ea + checksum: a05bf83bf5e7b31f7a3b56da1bf8e2eeec76ef52ae44435ceff66363a1717fcda45b7b4b931a2c115982175f481fc3f2d0fab23f0a43c44e6d983afc396858f0 languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.22.5, @babel/plugin-transform-class-static-block@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-class-static-block@npm:7.25.9" +"@babel/plugin-transform-react-jsx-development@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" dependencies: - "@babel/helper-create-class-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/plugin-transform-react-jsx": ^7.18.6 peerDependencies: - "@babel/core": ^7.12.0 - checksum: 306db84958218c1c7e0d7e8f363fcf9970fd52dab8f4f226cbe4876fcf5466a9addee5a79214a7982a7294f014305f3f0951227ff31ba6d5d47c9d54b7d54d2b + "@babel/core": ^7.0.0-0 + checksum: ec9fa65db66f938b75c45e99584367779ac3e0af8afc589187262e1337c7c4205ea312877813ae4df9fb93d766627b8968d74ac2ba702e4883b1dbbe4953ecee languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.22.5, @babel/plugin-transform-classes@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-classes@npm:7.25.9" +"@babel/plugin-transform-react-jsx-development@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - "@babel/helper-compilation-targets": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-replace-supers": ^7.25.9 - "@babel/traverse": ^7.25.9 - globals: ^11.1.0 + "@babel/plugin-transform-react-jsx": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d12584f72125314cc0fa8c77586ece2888d677788ac75f7393f5da574dfe4e45a556f7e3488fab29c8777ab3e5856d7a2d79f6df02834083aaa9d766440e3c68 + checksum: 36bc3ff0b96bb0ef4723070a50cfdf2e72cfd903a59eba448f9fe92fea47574d6f22efd99364413719e1f3fb3c51b6c9b2990b87af088f8486a84b2a5f9e4560 languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.22.5, @babel/plugin-transform-computed-properties@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" +"@babel/plugin-transform-react-jsx-development@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/template": ^7.25.9 + "@babel/plugin-transform-react-jsx": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f77fa4bc0c1e0031068172df28852388db6b0f91c268d037905f459607cf1e8ebab00015f9f179f4ad96e11c5f381b635cd5dc4e147a48c7ac79d195ae7542de + checksum: 653d32ea5accb12d016e324ec5a584b60a8f39e60c6a5101194b73553fdefbfa3c3f06ec2410216ec2033fddae181a2f146a1d6ed59f075c488fc4570cad2e7b languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.22.5, @babel/plugin-transform-destructuring@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" +"@babel/plugin-transform-react-jsx-self@npm:^7.0.0": + version: 7.21.0 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.21.0" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.20.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 965f63077a904828f4adee91393f83644098533442b8217d5a135c23a759a4c252c714074c965676a60d2c33f610f579a4eeb59ffd783724393af61c0ca45fef + checksum: 696f74c04a265409ccd46e333ff762e6011d394e6972128b5d97db4c1647289141bc7ebd45ab2bab99b60932f9793e8f89ee9432d3bde19962de2100456f6147 languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.25.9, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.25.9 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" +"@babel/plugin-transform-react-jsx-source@npm:^7.0.0": + version: 7.19.6 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.19.6" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8bdf1bb9e6e3a2cc8154ae88a3872faa6dc346d6901994505fb43ac85f858728781f1219f40b67f7bb0687c507450236cb7838ac68d457e65637f98500aa161b + checksum: 1e9e29a4efc5b79840bd4f68e404f5ab7765ce48c7bd22f12f2b185f9c782c66933bdf54a1b21879e4e56e6b50b4e88aca82789ecb1f61123af6dfa9ab16c555 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.22.5, @babel/plugin-transform-duplicate-keys@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.9" +"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.18.6": + version: 7.19.0 + resolution: "@babel/plugin-transform-react-jsx@npm:7.19.0" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-plugin-utils": ^7.19.0 + "@babel/plugin-syntax-jsx": ^7.18.6 + "@babel/types": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b553eebc328797ead6be5ba5bdaf2f1222cea8a5bd33fb4ed625975d4f9b510bfb0d688d97e314cd4b4a48b279bea7b3634ad68c1b41ee143c3082db0ae74037 + checksum: d7d6f0b8f24b1f6b7cf8062c4e91c59af82489a993e51859bd49c2d62a2d2b77fd40b02a9a1d0e6d874cf4ce56a05fa3564b964587d00c94ebc62593524052ec languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.9" +"@babel/plugin-transform-react-jsx@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-react-jsx@npm:7.22.3" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-module-imports": ^7.21.4 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-jsx": ^7.21.4 + "@babel/types": ^7.22.3 peerDependencies: - "@babel/core": ^7.0.0 - checksum: f7233cf596be8c6843d31951afaf2464a62a610cb89c72c818c044765827fab78403ab8a7d3a6386f838c8df574668e2a48f6c206b1d7da965aff9c6886cb8e6 + "@babel/core": ^7.0.0-0 + checksum: 063243f5767de490d10ed671223f27baababa4b89b67d1d77207f8f91f8915c485b877773472c97398aef3ce898c3570d367994d5598a0686e18ff5bf3472f31 languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.22.5, @babel/plugin-transform-dynamic-import@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.9" +"@babel/plugin-transform-react-jsx@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-react-jsx@npm:7.22.15" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-module-imports": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-jsx": ^7.22.5 + "@babel/types": ^7.22.15 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: aaca1ccda819be9b2b85af47ba08ddd2210ff2dbea222f26e4cd33f97ab020884bf81a66197e50872721e9daf36ceb5659502c82199884ea74d5d75ecda5c58b + checksum: 3899054e89550c3a0ef041af7c47ee266e2e934f498ee80fefeda778a6aa177b48aa8b4d2a8bf5848de977fec564571699ab952d9fa089c4c19b45ddb121df09 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5, @babel/plugin-transform-exponentiation-operator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.9" +"@babel/plugin-transform-react-jsx@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-react-jsx@npm:7.24.7" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-jsx": ^7.24.7 + "@babel/types": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 57e1bb4135dd16782fe84b49dd360cce8f9bf5f62eb10424dcdaf221e54a8bacdf50f2541c5ac01dea9f833a6c628613d71be915290938a93454389cba4de06b + checksum: ddfe494eb4b6ad567ebf0c029246df55d006512b1eb4beead73427b83af2e7e91b6d6e6954e275a92c81a5111d1e6e1fb4a62fdfc6f77c847cc7581650a7c452 languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.22.11, @babel/plugin-transform-export-namespace-from@npm:^7.22.5, @babel/plugin-transform-export-namespace-from@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" +"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4dfe8df86c5b1d085d591290874bb2d78a9063090d71567ed657a418010ad333c3f48af2c974b865f53bbb718987a065f89828d43279a7751db1a56c9229078d + checksum: 97c4873d409088f437f9084d084615948198dd87fc6723ada0e7e29c5a03623c2f3e03df3f52e7e7d4d23be32a08ea00818bff302812e48713c706713bd06219 languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.20.0, @babel/plugin-transform-flow-strip-types@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.9" +"@babel/plugin-transform-react-pure-annotations@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/plugin-syntax-flow": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7f51cd5cc0c3a5ce2fe31c689458706ed40284a1c59b017167c3cbef953550a843450c5cfe6896b154fb645f141a930a4fd925f46b2215d0fcc66e7758202c38 + checksum: 092021c4f404e267002099ec20b3f12dd730cb90b0d83c5feed3dc00dbe43b9c42c795a18e7c6c7d7bddea20c7dd56221b146aec81b37f2e7eb5137331c61120 languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.22.5, @babel/plugin-transform-for-of@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-for-of@npm:7.25.9" +"@babel/plugin-transform-react-pure-annotations@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 41b56e70256a29fc26ed7fb95ece062d7ec2f3b6ea8f0686349ffd004cd4816132085ee21165b89c502ee7161cb7cfb12510961638851357945dc7bc546475b7 + checksum: d859ada3cbeb829fa3d9978a29b2d36657fcc9dcc1e4c3c3af84ec5a044a8f8db26ada406baa309e5d4d512aca53d07c520d991b891ff943bec7d8f01aae0419 languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.22.5, @babel/plugin-transform-function-name@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-function-name@npm:7.25.9" +"@babel/plugin-transform-regenerator@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" dependencies: - "@babel/helper-compilation-targets": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/helper-plugin-utils": ^7.20.2 + regenerator-transform: ^0.15.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a8d7c8d019a6eb57eab5ca1be3e3236f175557d55b1f3b11f8ad7999e3fbb1cf37905fd8cb3a349bffb4163a558e9f33b63f631597fdc97c858757deac1b2fd7 + checksum: 13164861e71fb23d84c6270ef5330b03c54d5d661c2c7468f28e21c4f8598558ca0c8c3cb1d996219352946e849d270a61372bc93c8fbe9676e78e3ffd0dea07 languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.22.5, @babel/plugin-transform-json-strings@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-json-strings@npm:7.25.9" +"@babel/plugin-transform-regenerator@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/plugin-transform-regenerator@npm:7.21.5" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.21.5 + regenerator-transform: ^0.15.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e2498d84761cfd05aaea53799933d55af309c9d6204e66b38778792d171e4d1311ad34f334259a3aa3407dd0446f6bd3e390a1fcb8ce2e42fe5aabed0e41bee1 + checksum: 5291f6871276f57a6004f16d50ae9ad57f22a6aa2a183b8c84de8126f1066c6c9f9bbeadb282b5207fa9e7b0f57e40a8421d46cb5c60caf7e2848e98224d5639 languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.22.5, @babel/plugin-transform-literals@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-literals@npm:7.25.9" +"@babel/plugin-transform-regenerator@npm:^7.22.10, @babel/plugin-transform-regenerator@npm:^7.22.5": + version: 7.22.10 + resolution: "@babel/plugin-transform-regenerator@npm:7.22.10" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 + regenerator-transform: ^0.15.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3cca75823a38aab599bc151b0fa4d816b5e1b62d6e49c156aa90436deb6e13649f5505973151a10418b64f3f9d1c3da53e38a186402e0ed7ad98e482e70c0c14 + checksum: e13678d62d6fa96f11cb8b863f00e8693491e7adc88bfca3f2820f80cbac8336e7dec3a596eee6a1c4663b7ececc3564f2cd7fb44ed6d4ce84ac2bb7f39ecc6e languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.5, @babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" +"@babel/plugin-transform-regenerator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 + regenerator-transform: ^0.15.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8c6febb4ac53852314d28b5e2c23d5dbbff7bf1e57d61f9672e0d97531ef7778b3f0ad698dcf1179f5486e626c77127508916a65eb846a89e98a92f70ed3537b + checksum: 20c6c3fb6fc9f407829087316653388d311e8c1816b007609bb09aeef254092a7157adace8b3aaa8f34be752503717cb85c88a5fe482180a9b11bcbd676063be languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.0.0, @babel/plugin-transform-member-expression-literals@npm:^7.22.5, @babel/plugin-transform-member-expression-literals@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.9" +"@babel/plugin-transform-reserved-words@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: db92041ae87b8f59f98b50359e0bb172480f6ba22e5e76b13bdfe07122cbf0daa9cd8ad2e78dcb47939938fed88ad57ab5989346f64b3a16953fc73dea3a9b1f + checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.22.5, @babel/plugin-transform-modules-amd@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-amd@npm:7.25.9" +"@babel/plugin-transform-reserved-words@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: baad1f6fd0e0d38e9a9c1086a06abdc014c4c653fd452337cadfe23fb5bd8bf4368d1bc433a5ac8e6421bc0732ebb7c044cf3fb39c1b7ebe967d66e26c4e5cec + checksum: 3ffd7dbc425fe8132bfec118b9817572799cab1473113a635d25ab606c1f5a2341a636c04cf6b22df3813320365ed5a965b5eeb3192320a10e4cc2c137bd8bfc languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.22.5, @babel/plugin-transform-modules-commonjs@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.9" +"@babel/plugin-transform-reserved-words@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" dependencies: - "@babel/helper-module-transforms": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-simple-access": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4f101f0ea4a57d1d27a7976d668c63a7d0bbb0d9c1909d8ac43c785fd1496c31e6552ffd9673730c088873df1bc64f1cc4aad7c3c90413ac5e80b33e336d80e4 + checksum: 3d5876954d5914d7270819479504f30c4bf5452a65c677f44e2dab2db50b3c9d4b47793c45dfad7abf4f377035dd79e4b3f554ae350df9f422201d370ce9f8dd languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.22.5, @babel/plugin-transform-modules-systemjs@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" +"@babel/plugin-transform-runtime@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-runtime@npm:7.22.5" dependencies: - "@babel/helper-module-transforms": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-validator-identifier": ^7.25.9 - "@babel/traverse": ^7.25.9 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.3 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 + semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bf446202f372ba92dc0db32b24b56225b6e3ad3b227e31074de8b86fdec01c273ae2536873e38dbe3ceb1cd0894209343adeaa37df208e3fa88c0c7dffec7924 + checksum: 52cf177045b5f61a6cfc36b45aa7629586dc00a28371a09ef03e877a627f520efd51817ad8cceabaaa25f266e069859b36a5ac5018afeaa7f37aafa9325df4d8 languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.22.5, @babel/plugin-transform-modules-umd@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-umd@npm:7.25.9" +"@babel/plugin-transform-runtime@npm:^7.0.0": + version: 7.21.4 + resolution: "@babel/plugin-transform-runtime@npm:7.21.4" dependencies: - "@babel/helper-module-transforms": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-module-imports": ^7.21.4 + "@babel/helper-plugin-utils": ^7.20.2 + babel-plugin-polyfill-corejs2: ^0.3.3 + babel-plugin-polyfill-corejs3: ^0.6.0 + babel-plugin-polyfill-regenerator: ^0.4.1 + semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 946db66be5f04ab9ee56c424b00257276ec094aa2f148508927e6085239f76b00304fa1e33026d29eccdbe312efea15ca3d92e74a12689d7f0cdd9a7ba1a6c54 + checksum: 7e2e6b0d6f9762fde58738829e4d3b5e13dc88ccc1463e4eee83c8d8f50238eeb8e3699923f5ad4d7edf597515f74d67fbb14eb330225075fc7733b547e22145 languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" +"@babel/plugin-transform-runtime@npm:^7.23.2": + version: 7.24.7 + resolution: "@babel/plugin-transform-runtime@npm:7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + babel-plugin-polyfill-corejs2: ^0.4.10 + babel-plugin-polyfill-corejs3: ^0.10.1 + babel-plugin-polyfill-regenerator: ^0.6.1 + semver: ^6.3.1 peerDependencies: - "@babel/core": ^7.0.0 - checksum: 434346ba05cf74e3f4704b3bdd439287b95cd2a8676afcdc607810b8c38b6f4798cd69c1419726b2e4c7204e62e4a04d31b0360e91ca57a930521c9211e07789 + "@babel/core": ^7.0.0-0 + checksum: 98bcbbdc833d5c451189a6325f88820fe92973e119c59ce74bf28681cf4687c8280decb55b6c47f22e98c3973ae3a13521c4f51855a2b8577b230ecb1b4ca5b4 languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.22.5, @babel/plugin-transform-new-target@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-new-target@npm:7.25.9" +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0": + version: 7.16.7 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.16.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.16.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f8113539919aafce52f07b2bd182c771a476fe1d5d96d813460b33a16f173f038929369c595572cadc1f7bd8cb816ce89439d056e007770ddd7b7a0878e7895f + checksum: ca381ecf8f48696512172deca40af46b1f64e3497186fdc2c9009286d8f06b468c4d61cdc392dc8b0c165298117dda67be9e2ff0e99d7691b0503f1240d4c62b languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.0.0-0, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.5, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.9" +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0-0, @babel/plugin-transform-shorthand-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 26e03b1c2c0408cc300e46d8f8cb639653ff3a7b03456d0d8afbb53c44f33a89323f51d99991dade3a5676921119bbdf869728bb7911799b5ef99ffafa2cdd24 + checksum: 7b524245814607188212b8eb86d8c850e5974203328455a30881b4a92c364b93353fae14bc2af5b614ef16300b75b8c1d3b8f3a08355985b4794a7feb240adc3 languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.22.5, @babel/plugin-transform-numeric-separator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" +"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0528ef041ed88e8c3f51624ee87b8182a7f246fe4013f0572788e0727d20795b558f2b82e3989b5dd416cbd339500f0d88857de41b6d3b6fdacb1d5344bcc5b1 + checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.12.13, @babel/plugin-transform-object-rest-spread@npm:^7.22.5, @babel/plugin-transform-object-rest-spread@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" +"@babel/plugin-transform-shorthand-properties@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" dependencies: - "@babel/helper-compilation-targets": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/plugin-transform-parameters": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a8ff73e1c46a03056b3a2236bafd6b3a4b83da93afe7ee24a50d0a8088150bf85bc5e5977daa04e66ff5fb7613d02d63ad49b91ebb64cf3f3022598d722e3a7a + checksum: a5ac902c56ea8effa99f681340ee61bac21094588f7aef0bc01dff98246651702e677552fa6d10e548c4ac22a3ffad047dd2f8c8f0540b68316c2c203e56818b languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.0.0, @babel/plugin-transform-object-super@npm:^7.22.5, @babel/plugin-transform-object-super@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-object-super@npm:7.25.9" +"@babel/plugin-transform-spread@npm:^7.0.0": + version: 7.17.12 + resolution: "@babel/plugin-transform-spread@npm:7.17.12" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-replace-supers": ^7.25.9 + "@babel/helper-plugin-utils": ^7.17.12 + "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1817b5d8b80e451ae1ad9080cca884f4f16df75880a158947df76a2ed8ab404d567a7dce71dd8051ef95f90fbe3513154086a32aba55cc76027f6cbabfbd7f98 + checksum: 3a95e4f163d598c0efc9d983e5ce3e8716998dd2af62af8102b11cb8d6383c71b74c7106adbce73cda6e48d3d3e927627847d36d76c2eb688cd0e2e07f67fb51 languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.22.5, @babel/plugin-transform-optional-catch-binding@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" +"@babel/plugin-transform-spread@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/plugin-transform-spread@npm:7.20.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b46a8d1e91829f3db5c252583eb00d05a779b4660abeea5500fda0f8ffa3584fd18299443c22f7fddf0ed9dfdb73c782c43b445dc468d4f89803f2356963b406 + checksum: 8ea698a12da15718aac7489d4cde10beb8a3eea1f66167d11ab1e625033641e8b328157fd1a0b55dd6531933a160c01fc2e2e61132a385cece05f26429fd0cc2 languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.0.0-0, @babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" +"@babel/plugin-transform-spread@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-spread@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f1642a7094456067e82b176e1e9fd426fda7ed9df54cb6d10109fc512b622bf4b3c83acc5875125732b8622565107fdbe2d60fe3ec8685e1d1c22c38c1b57782 + checksum: 5587f0deb60b3dfc9b274e269031cc45ec75facccf1933ea2ea71ced9fd3ce98ed91bb36d6cd26817c14474b90ed998c5078415f0eab531caf301496ce24c95c languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.22.15, @babel/plugin-transform-parameters@npm:^7.22.5, @babel/plugin-transform-parameters@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-parameters@npm:7.25.9" +"@babel/plugin-transform-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-spread@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d7ba2a7d05edbc85aed741289b0ff3d6289a1c25d82ac4be32c565f88a66391f46631aad59ceeed40824037f7eeaa7a0de1998db491f50e65a565cd964f78786 + checksum: 4c4254c8b9cceb1a8f975fa9b92257ddb08380a35c0a3721b8f4b9e13a3d82e403af2e0fba577b9f2452dd8f06bc3dea71cc53b1e2c6af595af5db52a13429d6 languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" +"@babel/plugin-transform-sticky-regex@npm:^7.0.0, @babel/plugin-transform-sticky-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 321479b4fcb6d3b3ef622ab22fd24001e43d46e680e8e41324c033d5810c84646e470f81b44cbcbef5c22e99030784f7cac92f1829974da7a47a60a7139082c3 + checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.22.5, @babel/plugin-transform-private-methods@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" +"@babel/plugin-transform-sticky-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6e3671b352c267847c53a170a1937210fa8151764d70d25005e711ef9b21969aaf422acc14f9f7fb86bc0e4ec43e7aefcc0ad9196ae02d262ec10f509f126a58 + checksum: 63b2c575e3e7f96c32d52ed45ee098fb7d354b35c2223b8c8e76840b32cc529ee0c0ceb5742fd082e56e91e3d82842a367ce177e82b05039af3d602c9627a729 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.5" +"@babel/plugin-transform-sticky-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9ac019fb2772f3af6278a7f4b8b14b0663accb3fd123d87142ceb2fbc57fd1afa07c945d1329029b026b9ee122096ef71a3f34f257a9e04cf4245b87298c38b4 + checksum: 118fc7a7ebf7c20411b670c8a030535fdfe4a88bc5643bb625a584dbc4c8a468da46430a20e6bf78914246962b0f18f1b9d6a62561a7762c4f34a038a5a77179 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.22.11, @babel/plugin-transform-private-property-in-object@npm:^7.22.5, @babel/plugin-transform-private-property-in-object@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" +"@babel/plugin-transform-template-literals@npm:^7.0.0": + version: 7.18.2 + resolution: "@babel/plugin-transform-template-literals@npm:7.18.2" dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - "@babel/helper-create-class-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.17.12 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9ce3e983fea9b9ba677c192aa065c0b42ebdc7774be4c02135df09029ad92a55c35b004650c75952cb64d650872ed18f13ab64422c6fc891d06333762caa8a0a + checksum: bc0102ed8c789e5bc01053088e2de85b82cebcd4d57af9fdc32ca62f559d3dd19c33e9d26caa71c5fd8e94152e5ce4fc4da19badc2d537620e6dea83bce7eb05 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.0.0, @babel/plugin-transform-property-literals@npm:^7.22.5, @babel/plugin-transform-property-literals@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-property-literals@npm:7.25.9" +"@babel/plugin-transform-template-literals@npm:^7.0.0-0, @babel/plugin-transform-template-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 436046ab07d54a9b44a384eeffec701d4e959a37a7547dda72e069e751ca7ff753d1782a8339e354b97c78a868b49ea97bf41bf5a44c6d7a3c0a05ad40eeb49c + checksum: ad44e5826f5a98c1575832dbdbd033adfe683cdff195e178528ead62507564bf02f479b282976cfd3caebad8b06d5fd7349c1cdb880dec3c56daea4f1f179619 languageName: node linkType: hard -"@babel/plugin-transform-react-constant-elements@npm:^7.21.3": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-constant-elements@npm:7.25.9" +"@babel/plugin-transform-template-literals@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ed59464c96cd4014f636852b4de398d2ffc22ffe3177a6c2a6058447a72839bb66a346a1db525ab60dcc5dd48ec59113a8325f785593689900358a15136e05c3 + checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.22.5, @babel/plugin-transform-react-display-name@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" +"@babel/plugin-transform-template-literals@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cd7020494e6f31c287834e8929e6a718d5b0ace21232fa30feb48622c2312045504c34b347dcff9e88145c349882b296a7d6b6cc3d3447d8c85502f16471747c + checksum: 27e9bb030654cb425381c69754be4abe6a7c75b45cd7f962cd8d604b841b2f0fb7b024f2efc1c25cc53f5b16d79d5e8cfc47cacbdaa983895b3aeefa3e7e24ff languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.22.5, @babel/plugin-transform-react-jsx-development@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" +"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" dependencies: - "@babel/plugin-transform-react-jsx": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 537d38369537f1eb56041c4b770bc0733fde1801a7f5ffef40a1217ea448f33ee2fa8e6098a58a82fd00e432c1b9426a66849496da419020c9eca3b1b1a23779 + checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.0.0": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" +"@babel/plugin-transform-typeof-symbol@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 41c833cd7f91b1432710f91b1325706e57979b2e8da44e83d86312c78bbe96cd9ef778b4e79e4e17ab25fa32c72b909f2be7f28e876779ede28e27506c41f4ae + checksum: 82a53a63ffc3010b689ca9a54e5f53b2718b9f4b4a9818f36f9b7dba234f38a01876680553d2716a645a61920b5e6e4aaf8d4a0064add379b27ca0b403049512 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.0.0": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" +"@babel/plugin-transform-typeof-symbol@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.8 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a3e0e5672e344e9d01fb20b504fe29a84918eaa70cec512c4d4b1b035f72803261257343d8e93673365b72c371f35cf34bb0d129720bf178a4c87812c8b9c662 + checksum: 8663a8e7347cedf181001d99c88cf794b6598c3d82f324098510fe8fb8bd22113995526a77aa35a3cc5d70ffd0617a59dd0d10311a9bf0e1a3a7d3e59b900c00 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.22.5, @babel/plugin-transform-react-jsx@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" +"@babel/plugin-transform-typescript@npm:^7.21.3, @babel/plugin-transform-typescript@npm:^7.5.0": + version: 7.21.3 + resolution: "@babel/plugin-transform-typescript@npm:7.21.3" dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - "@babel/helper-module-imports": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/plugin-syntax-jsx": ^7.25.9 - "@babel/types": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.21.0 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-typescript": ^7.20.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5c6523c3963e3c6cf4c3cc2768a3766318af05b8f6c17aff52a4010e2c170e87b2fcdc94e9c9223ae12158664df4852ce81b9c8d042c15ea8fd83d6375f9f30f + checksum: c16fd577bf43f633deb76fca2a8527d8ae25968c8efdf327c1955472c3e0257e62992473d1ad7f9ee95379ce2404699af405ea03346055adadd3478ad0ecd117 languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.22.5, @babel/plugin-transform-react-pure-annotations@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" +"@babel/plugin-transform-typescript@npm:^7.22.15, @babel/plugin-transform-typescript@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-typescript@npm:7.22.15" dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/plugin-syntax-typescript": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9995c0fc7c25d3aaaa0ce84233de02eab2564ea111d0813ec5baa538eb21520402879cc787ad1ad4c2061b99cebc3beb09910e64c9592e8ccb42ae62d9e4fd9a + checksum: c5d96cdbf0e1512707aa1c1e3ac6b370a25fd9c545d26008ce44eb13a47bd7fd67a1eb799c98b5ccc82e33a345fda55c0055e1fe3ed97646ed405dd13020b226 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.22.5, @babel/plugin-transform-regenerator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" +"@babel/plugin-transform-typescript@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-typescript@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - regenerator-transform: ^0.15.2 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-typescript": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1c09e8087b476c5967282c9790fb8710e065eda77c60f6cb5da541edd59ded9d003d96f8ef640928faab4a0b35bf997673499a194973da4f0c97f0935807a482 + checksum: 6b367d1e3d6bdbe438878a76436fc6903e2b4fd7c31fa036d43865570d282679ec3f7c0306399851f2866a9b36686a0ea8c343df3750f70d427f1fe20ca54310 languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.22.5, @babel/plugin-transform-reserved-words@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" +"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": + version: 7.18.10 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.18.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8beda04481b25767acbd1f6b9ef7b3a9c12fbd9dcb24df45a6ad120e1dc4b247c073db60ac742f9093657d6d8c050501fc0606af042f81a3bb6a3ff862cddc47 + checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-runtime@npm:7.22.5" +"@babel/plugin-transform-unicode-escapes@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.21.5" dependencies: - "@babel/helper-module-imports": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - babel-plugin-polyfill-corejs2: ^0.4.3 - babel-plugin-polyfill-corejs3: ^0.8.1 - babel-plugin-polyfill-regenerator: ^0.5.0 - semver: ^6.3.0 + "@babel/helper-plugin-utils": ^7.21.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 52cf177045b5f61a6cfc36b45aa7629586dc00a28371a09ef03e877a627f520efd51817ad8cceabaaa25f266e069859b36a5ac5018afeaa7f37aafa9325df4d8 + checksum: 6504d642d0449a275191b624bd94d3e434ae154e610bf2f0e3c109068b287d2474f68e1da64b47f21d193cd67b27ee4643877d530187670565cac46e29fd257d languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:^7.0.0, @babel/plugin-transform-runtime@npm:^7.23.2": - version: 7.25.9 - resolution: "@babel/plugin-transform-runtime@npm:7.25.9" +"@babel/plugin-transform-unicode-escapes@npm:^7.22.10, @babel/plugin-transform-unicode-escapes@npm:^7.22.5": + version: 7.22.10 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.10" dependencies: - "@babel/helper-module-imports": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - babel-plugin-polyfill-corejs2: ^0.4.10 - babel-plugin-polyfill-corejs3: ^0.10.6 - babel-plugin-polyfill-regenerator: ^0.6.1 - semver: ^6.3.1 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: db7f20a7a7324dbfe3b43a09f0095c69dadcf8b08567fa7c7fa6e245d97c66cdcdc330e97733b7589261c0e1046bc5cc36741b932ac5dd7757374495b57e7b02 + checksum: 807f40ed1324c8cb107c45358f1903384ca3f0ef1d01c5a3c5c9b271c8d8eec66936a3dcc8d75ddfceea9421420368c2e77ae3adef0a50557e778dfe296bf382 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.0.0, @babel/plugin-transform-shorthand-properties@npm:^7.0.0-0, @babel/plugin-transform-shorthand-properties@npm:^7.22.5, @babel/plugin-transform-shorthand-properties@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" +"@babel/plugin-transform-unicode-escapes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f774995d58d4e3a992b732cf3a9b8823552d471040e280264dd15e0735433d51b468fef04d75853d061309389c66bda10ce1b298297ce83999220eb0ad62741d + checksum: 4af0a193e1ddea6ff82b2b15cc2501b872728050bd625740b813c8062fec917d32d530ff6b41de56c15e7296becdf3336a58db81f5ca8e7c445c1306c52f3e01 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.22.5, @babel/plugin-transform-spread@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-spread@npm:7.25.9" +"@babel/plugin-transform-unicode-property-regex@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.3" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2403a5d49171b7714d5e5ecb1f598c61575a4dbe5e33e5a5f08c0ea990b75e693ca1ea983b6a96b2e3e5e7da48c8238333f525e47498c53b577c5d094d964c06 + checksum: 666592f5f5496e7dc267fb32e5c0d1ca620a5a1b7dcfec4fec517a625d2413213f795d3905aea05f45639285578ef13351cedfc5b699aaa482841866089863f6 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.0.0, @babel/plugin-transform-sticky-regex@npm:^7.22.5, @babel/plugin-transform-sticky-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" +"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7454b00844dbe924030dd15e2b3615b36e196500c4c47e98dabc6b37a054c5b1038ecd437e910aabf0e43bf56b973cb148d3437d50f6e2332d8309568e3e979b + checksum: 2495e5f663cb388e3d888b4ba3df419ac436a5012144ac170b622ddfc221f9ea9bdba839fa2bc0185cb776b578030666406452ec7791cbf0e7a3d4c88ae9574c languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.0.0-0, @babel/plugin-transform-template-literals@npm:^7.22.5, @babel/plugin-transform-template-literals@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.25.9" +"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 92eb1d6e2d95bd24abbb74fa7640d02b66ff6214e0bb616d7fda298a7821ce15132a4265d576a3502a347a3c9e94b6c69ed265bb0784664592fa076785a3d16a + checksum: aae13350c50973f5802ca7906d022a6a0cc0e3aebac9122d0450bbd51e78252d4c2032ad69385e2759fcbdd3aac5d571bd7e26258907f51f8e1a51b53be626c2 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.22.5, @babel/plugin-transform-typeof-symbol@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.9" +"@babel/plugin-transform-unicode-regex@npm:^7.0.0, @babel/plugin-transform-unicode-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3f9458840d96f61502f0e9dfaae3efe8325fa0b2151e24ea0d41307f28cdd166905419f5a43447ce0f1ae4bfd001f3906b658839a60269c254168164090b4c73 + checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.22.5, @babel/plugin-transform-typescript@npm:^7.25.9, @babel/plugin-transform-typescript@npm:^7.5.0": - version: 7.25.9 - resolution: "@babel/plugin-transform-typescript@npm:7.25.9" +"@babel/plugin-transform-unicode-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - "@babel/helper-create-class-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 - "@babel/plugin-syntax-typescript": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6dd1303f1b9f314e22c6c54568a8b9709a081ce97be757d4004f960e3e73d6b819e6b49cee6cf1fc8455511e41127a8b580fa34602de62d17ab8a0b2d0ccf183 + checksum: 6b5d1404c8c623b0ec9bd436c00d885a17d6a34f3f2597996343ddb9d94f6379705b21582dfd4cec2c47fd34068872e74ab6b9580116c0566b3f9447e2a7fa06 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.22.5, @babel/plugin-transform-unicode-escapes@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.9" +"@babel/plugin-transform-unicode-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: be067e07488d804e3e82d7771f23666539d2ae5af03bf6eb8480406adf3dabd776e60c1fd5c6078dc5714b73cd80bbaca70e71d4f5d154c5c57200581602ca2f + checksum: 1cb4e70678906e431da0a05ac3f8350025fee290304ad7482d9cfaa1ca67b2e898654de537c9268efbdad5b80d3ebadf42b4a88ea84609bd8a4cce7b11b48afd languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5, @babel/plugin-transform-unicode-property-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.9" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.3": + version: 7.22.3 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.3" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 201f6f46c1beb399e79aa208b94c5d54412047511795ce1e790edcd189cef73752e6a099fdfc01b3ad12205f139ae344143b62f21f44bbe02338a95e8506a911 + "@babel/core": ^7.0.0 + checksum: 992f6ae2764b1ee3bea9d948132daed22f042517cd6109a8fd2c52c03e7b930fac5a9e6e28130b0ed5a6f1cbf809c9735985352de0484b4c95fb0f6dd88614a2 languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.0.0, @babel/plugin-transform-unicode-regex@npm:^7.22.5, @babel/plugin-transform-unicode-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e8baae867526e179467c6ef5280d70390fa7388f8763a19a27c21302dd59b121032568be080749514b097097ceb9af716bf4b90638f1b3cf689aa837ba20150f + "@babel/core": ^7.0.0 + checksum: c042070f980b139547f8b0179efbc049ac5930abec7fc26ed7a41d89a048d8ab17d362200e204b6f71c3c20d6991a0e74415e1a412a49adc8131c2a40c04822e languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5, @babel/plugin-transform-unicode-sets-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.9" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: 4445ef20de687cb4dcc95169742a8d9013d680aa5eee9186d8e25875bbfa7ee5e2de26a91177ccf70b1db518e36886abcd44750d28db5d7a9539f0efa6839f4b + checksum: 08a2844914f33dacd2ce1ab021ce8c1cc35dc6568521a746d8bf29c21571ee5be78787b454231c4bb3526cbbe280f1893223c82726cec5df2be5dae0a3b51837 languageName: node linkType: hard @@ -4056,94 +7350,387 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.20.0, @babel/preset-env@npm:^7.20.2, @babel/preset-env@npm:^7.22.9, @babel/preset-env@npm:^7.23.2": - version: 7.25.9 - resolution: "@babel/preset-env@npm:7.25.9" +"@babel/preset-env@npm:^7.20.0": + version: 7.21.4 + resolution: "@babel/preset-env@npm:7.21.4" + dependencies: + "@babel/compat-data": ^7.21.4 + "@babel/helper-compilation-targets": ^7.21.4 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-validator-option": ^7.21.0 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.20.7 + "@babel/plugin-proposal-async-generator-functions": ^7.20.7 + "@babel/plugin-proposal-class-properties": ^7.18.6 + "@babel/plugin-proposal-class-static-block": ^7.21.0 + "@babel/plugin-proposal-dynamic-import": ^7.18.6 + "@babel/plugin-proposal-export-namespace-from": ^7.18.9 + "@babel/plugin-proposal-json-strings": ^7.18.6 + "@babel/plugin-proposal-logical-assignment-operators": ^7.20.7 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 + "@babel/plugin-proposal-numeric-separator": ^7.18.6 + "@babel/plugin-proposal-object-rest-spread": ^7.20.7 + "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 + "@babel/plugin-proposal-optional-chaining": ^7.21.0 + "@babel/plugin-proposal-private-methods": ^7.18.6 + "@babel/plugin-proposal-private-property-in-object": ^7.21.0 + "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-import-assertions": ^7.20.0 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-transform-arrow-functions": ^7.20.7 + "@babel/plugin-transform-async-to-generator": ^7.20.7 + "@babel/plugin-transform-block-scoped-functions": ^7.18.6 + "@babel/plugin-transform-block-scoping": ^7.21.0 + "@babel/plugin-transform-classes": ^7.21.0 + "@babel/plugin-transform-computed-properties": ^7.20.7 + "@babel/plugin-transform-destructuring": ^7.21.3 + "@babel/plugin-transform-dotall-regex": ^7.18.6 + "@babel/plugin-transform-duplicate-keys": ^7.18.9 + "@babel/plugin-transform-exponentiation-operator": ^7.18.6 + "@babel/plugin-transform-for-of": ^7.21.0 + "@babel/plugin-transform-function-name": ^7.18.9 + "@babel/plugin-transform-literals": ^7.18.9 + "@babel/plugin-transform-member-expression-literals": ^7.18.6 + "@babel/plugin-transform-modules-amd": ^7.20.11 + "@babel/plugin-transform-modules-commonjs": ^7.21.2 + "@babel/plugin-transform-modules-systemjs": ^7.20.11 + "@babel/plugin-transform-modules-umd": ^7.18.6 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.20.5 + "@babel/plugin-transform-new-target": ^7.18.6 + "@babel/plugin-transform-object-super": ^7.18.6 + "@babel/plugin-transform-parameters": ^7.21.3 + "@babel/plugin-transform-property-literals": ^7.18.6 + "@babel/plugin-transform-regenerator": ^7.20.5 + "@babel/plugin-transform-reserved-words": ^7.18.6 + "@babel/plugin-transform-shorthand-properties": ^7.18.6 + "@babel/plugin-transform-spread": ^7.20.7 + "@babel/plugin-transform-sticky-regex": ^7.18.6 + "@babel/plugin-transform-template-literals": ^7.18.9 + "@babel/plugin-transform-typeof-symbol": ^7.18.9 + "@babel/plugin-transform-unicode-escapes": ^7.18.10 + "@babel/plugin-transform-unicode-regex": ^7.18.6 + "@babel/preset-modules": ^0.1.5 + "@babel/types": ^7.21.4 + babel-plugin-polyfill-corejs2: ^0.3.3 + babel-plugin-polyfill-corejs3: ^0.6.0 + babel-plugin-polyfill-regenerator: ^0.4.1 + core-js-compat: ^3.25.1 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1e328674c4b39e985fa81e5a8eee9aaab353dea4ff1f28f454c5e27a6498c762e25d42e827f5bfc9d7acf6c9b8bc317b5283aa7c83d9fd03c1a89e5c08f334f9 + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.20.2": + version: 7.22.4 + resolution: "@babel/preset-env@npm:7.22.4" + dependencies: + "@babel/compat-data": ^7.22.3 + "@babel/helper-compilation-targets": ^7.22.1 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-validator-option": ^7.21.0 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.3 + "@babel/plugin-proposal-private-property-in-object": ^7.21.0 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-import-assertions": ^7.20.0 + "@babel/plugin-syntax-import-attributes": ^7.22.3 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 + "@babel/plugin-transform-arrow-functions": ^7.21.5 + "@babel/plugin-transform-async-generator-functions": ^7.22.3 + "@babel/plugin-transform-async-to-generator": ^7.20.7 + "@babel/plugin-transform-block-scoped-functions": ^7.18.6 + "@babel/plugin-transform-block-scoping": ^7.21.0 + "@babel/plugin-transform-class-properties": ^7.22.3 + "@babel/plugin-transform-class-static-block": ^7.22.3 + "@babel/plugin-transform-classes": ^7.21.0 + "@babel/plugin-transform-computed-properties": ^7.21.5 + "@babel/plugin-transform-destructuring": ^7.21.3 + "@babel/plugin-transform-dotall-regex": ^7.18.6 + "@babel/plugin-transform-duplicate-keys": ^7.18.9 + "@babel/plugin-transform-dynamic-import": ^7.22.1 + "@babel/plugin-transform-exponentiation-operator": ^7.18.6 + "@babel/plugin-transform-export-namespace-from": ^7.22.3 + "@babel/plugin-transform-for-of": ^7.21.5 + "@babel/plugin-transform-function-name": ^7.18.9 + "@babel/plugin-transform-json-strings": ^7.22.3 + "@babel/plugin-transform-literals": ^7.18.9 + "@babel/plugin-transform-logical-assignment-operators": ^7.22.3 + "@babel/plugin-transform-member-expression-literals": ^7.18.6 + "@babel/plugin-transform-modules-amd": ^7.20.11 + "@babel/plugin-transform-modules-commonjs": ^7.21.5 + "@babel/plugin-transform-modules-systemjs": ^7.22.3 + "@babel/plugin-transform-modules-umd": ^7.18.6 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.3 + "@babel/plugin-transform-new-target": ^7.22.3 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.3 + "@babel/plugin-transform-numeric-separator": ^7.22.3 + "@babel/plugin-transform-object-rest-spread": ^7.22.3 + "@babel/plugin-transform-object-super": ^7.18.6 + "@babel/plugin-transform-optional-catch-binding": ^7.22.3 + "@babel/plugin-transform-optional-chaining": ^7.22.3 + "@babel/plugin-transform-parameters": ^7.22.3 + "@babel/plugin-transform-private-methods": ^7.22.3 + "@babel/plugin-transform-private-property-in-object": ^7.22.3 + "@babel/plugin-transform-property-literals": ^7.18.6 + "@babel/plugin-transform-regenerator": ^7.21.5 + "@babel/plugin-transform-reserved-words": ^7.18.6 + "@babel/plugin-transform-shorthand-properties": ^7.18.6 + "@babel/plugin-transform-spread": ^7.20.7 + "@babel/plugin-transform-sticky-regex": ^7.18.6 + "@babel/plugin-transform-template-literals": ^7.18.9 + "@babel/plugin-transform-typeof-symbol": ^7.18.9 + "@babel/plugin-transform-unicode-escapes": ^7.21.5 + "@babel/plugin-transform-unicode-property-regex": ^7.22.3 + "@babel/plugin-transform-unicode-regex": ^7.18.6 + "@babel/plugin-transform-unicode-sets-regex": ^7.22.3 + "@babel/preset-modules": ^0.1.5 + "@babel/types": ^7.22.4 + babel-plugin-polyfill-corejs2: ^0.4.3 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 + core-js-compat: ^3.30.2 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 68ae8b712e7548cb0aa593019bf22ed473bd83887c621c1f820ef0af99958d48b687c01b8aee16035cbc70edae1edc703b892e6efed14b95c8435343a2cb2bda + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.22.9": + version: 7.22.15 + resolution: "@babel/preset-env@npm:7.22.15" + dependencies: + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.15 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.15 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.15 + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-import-assertions": ^7.22.5 + "@babel/plugin-syntax-import-attributes": ^7.22.5 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 + "@babel/plugin-transform-arrow-functions": ^7.22.5 + "@babel/plugin-transform-async-generator-functions": ^7.22.15 + "@babel/plugin-transform-async-to-generator": ^7.22.5 + "@babel/plugin-transform-block-scoped-functions": ^7.22.5 + "@babel/plugin-transform-block-scoping": ^7.22.15 + "@babel/plugin-transform-class-properties": ^7.22.5 + "@babel/plugin-transform-class-static-block": ^7.22.11 + "@babel/plugin-transform-classes": ^7.22.15 + "@babel/plugin-transform-computed-properties": ^7.22.5 + "@babel/plugin-transform-destructuring": ^7.22.15 + "@babel/plugin-transform-dotall-regex": ^7.22.5 + "@babel/plugin-transform-duplicate-keys": ^7.22.5 + "@babel/plugin-transform-dynamic-import": ^7.22.11 + "@babel/plugin-transform-exponentiation-operator": ^7.22.5 + "@babel/plugin-transform-export-namespace-from": ^7.22.11 + "@babel/plugin-transform-for-of": ^7.22.15 + "@babel/plugin-transform-function-name": ^7.22.5 + "@babel/plugin-transform-json-strings": ^7.22.11 + "@babel/plugin-transform-literals": ^7.22.5 + "@babel/plugin-transform-logical-assignment-operators": ^7.22.11 + "@babel/plugin-transform-member-expression-literals": ^7.22.5 + "@babel/plugin-transform-modules-amd": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.15 + "@babel/plugin-transform-modules-systemjs": ^7.22.11 + "@babel/plugin-transform-modules-umd": ^7.22.5 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.5 + "@babel/plugin-transform-new-target": ^7.22.5 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.11 + "@babel/plugin-transform-numeric-separator": ^7.22.11 + "@babel/plugin-transform-object-rest-spread": ^7.22.15 + "@babel/plugin-transform-object-super": ^7.22.5 + "@babel/plugin-transform-optional-catch-binding": ^7.22.11 + "@babel/plugin-transform-optional-chaining": ^7.22.15 + "@babel/plugin-transform-parameters": ^7.22.15 + "@babel/plugin-transform-private-methods": ^7.22.5 + "@babel/plugin-transform-private-property-in-object": ^7.22.11 + "@babel/plugin-transform-property-literals": ^7.22.5 + "@babel/plugin-transform-regenerator": ^7.22.10 + "@babel/plugin-transform-reserved-words": ^7.22.5 + "@babel/plugin-transform-shorthand-properties": ^7.22.5 + "@babel/plugin-transform-spread": ^7.22.5 + "@babel/plugin-transform-sticky-regex": ^7.22.5 + "@babel/plugin-transform-template-literals": ^7.22.5 + "@babel/plugin-transform-typeof-symbol": ^7.22.5 + "@babel/plugin-transform-unicode-escapes": ^7.22.10 + "@babel/plugin-transform-unicode-property-regex": ^7.22.5 + "@babel/plugin-transform-unicode-regex": ^7.22.5 + "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 + "@babel/preset-modules": 0.1.6-no-external-plugins + "@babel/types": ^7.22.15 + babel-plugin-polyfill-corejs2: ^0.4.5 + babel-plugin-polyfill-corejs3: ^0.8.3 + babel-plugin-polyfill-regenerator: ^0.5.2 + core-js-compat: ^3.31.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c3cf0223cab006cbf0c563a49a5076caa0b62e3b61b4f10ba857347fcd4f85dbb662a78e6f289e4f29f72c36974696737ae86c23da114617f5b00ab2c1c66126 + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.23.2": + version: 7.25.3 + resolution: "@babel/preset-env@npm:7.25.3" dependencies: - "@babel/compat-data": ^7.25.9 - "@babel/helper-compilation-targets": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-validator-option": ^7.25.9 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.25.9 - "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.25.9 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.25.9 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.25.9 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.9 + "@babel/compat-data": ^7.25.2 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-validator-option": ^7.24.8 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.25.3 + "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.25.0 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.25.0 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.24.7 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.0 "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-import-assertions": ^7.25.9 - "@babel/plugin-syntax-import-attributes": ^7.25.9 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-import-assertions": ^7.24.7 + "@babel/plugin-syntax-import-attributes": ^7.24.7 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.25.9 - "@babel/plugin-transform-async-generator-functions": ^7.25.9 - "@babel/plugin-transform-async-to-generator": ^7.25.9 - "@babel/plugin-transform-block-scoped-functions": ^7.25.9 - "@babel/plugin-transform-block-scoping": ^7.25.9 - "@babel/plugin-transform-class-properties": ^7.25.9 - "@babel/plugin-transform-class-static-block": ^7.25.9 - "@babel/plugin-transform-classes": ^7.25.9 - "@babel/plugin-transform-computed-properties": ^7.25.9 - "@babel/plugin-transform-destructuring": ^7.25.9 - "@babel/plugin-transform-dotall-regex": ^7.25.9 - "@babel/plugin-transform-duplicate-keys": ^7.25.9 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.25.9 - "@babel/plugin-transform-dynamic-import": ^7.25.9 - "@babel/plugin-transform-exponentiation-operator": ^7.25.9 - "@babel/plugin-transform-export-namespace-from": ^7.25.9 - "@babel/plugin-transform-for-of": ^7.25.9 - "@babel/plugin-transform-function-name": ^7.25.9 - "@babel/plugin-transform-json-strings": ^7.25.9 - "@babel/plugin-transform-literals": ^7.25.9 - "@babel/plugin-transform-logical-assignment-operators": ^7.25.9 - "@babel/plugin-transform-member-expression-literals": ^7.25.9 - "@babel/plugin-transform-modules-amd": ^7.25.9 - "@babel/plugin-transform-modules-commonjs": ^7.25.9 - "@babel/plugin-transform-modules-systemjs": ^7.25.9 - "@babel/plugin-transform-modules-umd": ^7.25.9 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.25.9 - "@babel/plugin-transform-new-target": ^7.25.9 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.25.9 - "@babel/plugin-transform-numeric-separator": ^7.25.9 - "@babel/plugin-transform-object-rest-spread": ^7.25.9 - "@babel/plugin-transform-object-super": ^7.25.9 - "@babel/plugin-transform-optional-catch-binding": ^7.25.9 - "@babel/plugin-transform-optional-chaining": ^7.25.9 - "@babel/plugin-transform-parameters": ^7.25.9 - "@babel/plugin-transform-private-methods": ^7.25.9 - "@babel/plugin-transform-private-property-in-object": ^7.25.9 - "@babel/plugin-transform-property-literals": ^7.25.9 - "@babel/plugin-transform-regenerator": ^7.25.9 - "@babel/plugin-transform-reserved-words": ^7.25.9 - "@babel/plugin-transform-shorthand-properties": ^7.25.9 - "@babel/plugin-transform-spread": ^7.25.9 - "@babel/plugin-transform-sticky-regex": ^7.25.9 - "@babel/plugin-transform-template-literals": ^7.25.9 - "@babel/plugin-transform-typeof-symbol": ^7.25.9 - "@babel/plugin-transform-unicode-escapes": ^7.25.9 - "@babel/plugin-transform-unicode-property-regex": ^7.25.9 - "@babel/plugin-transform-unicode-regex": ^7.25.9 - "@babel/plugin-transform-unicode-sets-regex": ^7.25.9 + "@babel/plugin-transform-arrow-functions": ^7.24.7 + "@babel/plugin-transform-async-generator-functions": ^7.25.0 + "@babel/plugin-transform-async-to-generator": ^7.24.7 + "@babel/plugin-transform-block-scoped-functions": ^7.24.7 + "@babel/plugin-transform-block-scoping": ^7.25.0 + "@babel/plugin-transform-class-properties": ^7.24.7 + "@babel/plugin-transform-class-static-block": ^7.24.7 + "@babel/plugin-transform-classes": ^7.25.0 + "@babel/plugin-transform-computed-properties": ^7.24.7 + "@babel/plugin-transform-destructuring": ^7.24.8 + "@babel/plugin-transform-dotall-regex": ^7.24.7 + "@babel/plugin-transform-duplicate-keys": ^7.24.7 + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.25.0 + "@babel/plugin-transform-dynamic-import": ^7.24.7 + "@babel/plugin-transform-exponentiation-operator": ^7.24.7 + "@babel/plugin-transform-export-namespace-from": ^7.24.7 + "@babel/plugin-transform-for-of": ^7.24.7 + "@babel/plugin-transform-function-name": ^7.25.1 + "@babel/plugin-transform-json-strings": ^7.24.7 + "@babel/plugin-transform-literals": ^7.25.2 + "@babel/plugin-transform-logical-assignment-operators": ^7.24.7 + "@babel/plugin-transform-member-expression-literals": ^7.24.7 + "@babel/plugin-transform-modules-amd": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.8 + "@babel/plugin-transform-modules-systemjs": ^7.25.0 + "@babel/plugin-transform-modules-umd": ^7.24.7 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7 + "@babel/plugin-transform-new-target": ^7.24.7 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 + "@babel/plugin-transform-numeric-separator": ^7.24.7 + "@babel/plugin-transform-object-rest-spread": ^7.24.7 + "@babel/plugin-transform-object-super": ^7.24.7 + "@babel/plugin-transform-optional-catch-binding": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.8 + "@babel/plugin-transform-parameters": ^7.24.7 + "@babel/plugin-transform-private-methods": ^7.24.7 + "@babel/plugin-transform-private-property-in-object": ^7.24.7 + "@babel/plugin-transform-property-literals": ^7.24.7 + "@babel/plugin-transform-regenerator": ^7.24.7 + "@babel/plugin-transform-reserved-words": ^7.24.7 + "@babel/plugin-transform-shorthand-properties": ^7.24.7 + "@babel/plugin-transform-spread": ^7.24.7 + "@babel/plugin-transform-sticky-regex": ^7.24.7 + "@babel/plugin-transform-template-literals": ^7.24.7 + "@babel/plugin-transform-typeof-symbol": ^7.24.8 + "@babel/plugin-transform-unicode-escapes": ^7.24.7 + "@babel/plugin-transform-unicode-property-regex": ^7.24.7 + "@babel/plugin-transform-unicode-regex": ^7.24.7 + "@babel/plugin-transform-unicode-sets-regex": ^7.24.7 "@babel/preset-modules": 0.1.6-no-external-plugins babel-plugin-polyfill-corejs2: ^0.4.10 - babel-plugin-polyfill-corejs3: ^0.10.6 + babel-plugin-polyfill-corejs3: ^0.10.4 babel-plugin-polyfill-regenerator: ^0.6.1 - core-js-compat: ^3.38.1 + core-js-compat: ^3.37.1 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b01081d36e36953e94eb5db8eee18dc4b93e4a3757f7c8e00333aba5b5798d00a76e0e3679382cb57aec0516dbe05f5c1ec2c67bd5482216864f6decd6359ae2 + checksum: 9735a44e557f7ef4ade87f59c0d69e4af3383432a23ae7a3cba33e3741bd7812f2d6403a0d94ebfda5f4bd9fdc6250a52c4a156407029f590fde511a792e64e2 + languageName: node + linkType: hard + +"@babel/preset-flow@npm:^7.13.13": + version: 7.21.4 + resolution: "@babel/preset-flow@npm:7.21.4" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-validator-option": ^7.21.0 + "@babel/plugin-transform-flow-strip-types": ^7.21.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a3a1ac91d0bc0ed033ae46556babe3dc571ea8788c531db550d6904bd303cf50ebb84fa417c1f059c3b69d62e0792d8eceda83d820a12c2e6b8008e5518ce7b8 languageName: node linkType: hard -"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.22.15": - version: 7.25.9 - resolution: "@babel/preset-flow@npm:7.25.9" +"@babel/preset-flow@npm:^7.22.15": + version: 7.24.7 + resolution: "@babel/preset-flow@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-validator-option": ^7.25.9 - "@babel/plugin-transform-flow-strip-types": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-transform-flow-strip-types": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b1591ea63a7ace7e34bcefa6deba9e2814d7f082e3c074e2648efb68a1a49016ccefbea024156ba28bd3042a4e768e3eb8b5ecfe433978144fdaaadd36203ba2 + checksum: 4caca02a6e0a477eb22994d686a1fbf65b5ab0240ae77530696434dba7efff4c5dcbf9186a774168dd4c492423141a22af3f2874c356aa22429f3c83eaf34419 languageName: node linkType: hard @@ -4161,8 +7748,8 @@ __metadata: linkType: hard "@babel/preset-modules@npm:^0.1.5": - version: 0.1.6 - resolution: "@babel/preset-modules@npm:0.1.6" + version: 0.1.5 + resolution: "@babel/preset-modules@npm:0.1.5" dependencies: "@babel/helper-plugin-utils": ^7.0.0 "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 @@ -4170,8 +7757,8 @@ __metadata: "@babel/types": ^7.4.4 esutils: ^2.0.2 peerDependencies: - "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - checksum: 9700992d2b9526e703ab49eb8c4cd0b26bec93594d57c6b808967619df1a387565e0e58829b65b5bd6d41049071ea0152c9195b39599515fddb3e52b09a55ff0 + "@babel/core": ^7.0.0-0 + checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 languageName: node linkType: hard @@ -4191,19 +7778,35 @@ __metadata: languageName: node linkType: hard -"@babel/preset-react@npm:^7.18.6, @babel/preset-react@npm:^7.22.15": - version: 7.25.9 - resolution: "@babel/preset-react@npm:7.25.9" +"@babel/preset-react@npm:^7.18.6": + version: 7.22.3 + resolution: "@babel/preset-react@npm:7.22.3" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-validator-option": ^7.21.0 + "@babel/plugin-transform-react-display-name": ^7.18.6 + "@babel/plugin-transform-react-jsx": ^7.22.3 + "@babel/plugin-transform-react-jsx-development": ^7.18.6 + "@babel/plugin-transform-react-pure-annotations": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0b6210e8ea7485d71dfa7745e6b03e6252e3fd363cc84765c81709b51ad89bcf0a5887a82651dedfc007b7e47ae918496ee963f42c52d9ce3ddbcc5815b96bb7 + languageName: node + linkType: hard + +"@babel/preset-react@npm:^7.22.15": + version: 7.24.7 + resolution: "@babel/preset-react@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-validator-option": ^7.25.9 - "@babel/plugin-transform-react-display-name": ^7.25.9 - "@babel/plugin-transform-react-jsx": ^7.25.9 - "@babel/plugin-transform-react-jsx-development": ^7.25.9 - "@babel/plugin-transform-react-pure-annotations": ^7.25.9 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-transform-react-display-name": ^7.24.7 + "@babel/plugin-transform-react-jsx": ^7.24.7 + "@babel/plugin-transform-react-jsx-development": ^7.24.7 + "@babel/plugin-transform-react-pure-annotations": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b5650c07a744ab4024c04fae002c9043235b4ad8687de8bf759135b9c6186553f4f53fde0a4583ce4c019560b79c176f39c745cdf77645af07071d26d8ba84ce + checksum: 76d0365b6bca808be65c4ccb3f3384c0792084add15eb537f16b3e44184216b82fa37f945339b732ceee6f06e09ba1f39f75c45e69b9811ddcc479f05555ea9c languageName: node linkType: hard @@ -4222,85 +7825,405 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.16.7, @babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.22.5, @babel/preset-typescript@npm:^7.23.0": - version: 7.25.9 - resolution: "@babel/preset-typescript@npm:7.25.9" +"@babel/preset-typescript@npm:^7.13.0": + version: 7.21.4 + resolution: "@babel/preset-typescript@npm:7.21.4" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-validator-option": ^7.21.0 + "@babel/plugin-syntax-jsx": ^7.21.4 + "@babel/plugin-transform-modules-commonjs": ^7.21.2 + "@babel/plugin-transform-typescript": ^7.21.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 83b2f2bf7be3a970acd212177525f58bbb1f2e042b675a47d021a675ae27cf00b6b6babfaf3ae5c980592c9ed1b0712e5197796b691905d25c99f9006478ea06 + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.16.7, @babel/preset-typescript@npm:^7.23.0": + version: 7.24.7 + resolution: "@babel/preset-typescript@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-syntax-jsx": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.7 + "@babel/plugin-transform-typescript": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 12929b24757f3bd6548103475f86478eda4c872bc7cefd920b29591eee8f4a4f350561d888e133d632d0c9402b8615fdcec9138e5127a6567dcb22f804ff207f + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.21.0": + version: 7.21.5 + resolution: "@babel/preset-typescript@npm:7.21.5" + dependencies: + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/helper-validator-option": ^7.21.0 + "@babel/plugin-syntax-jsx": ^7.21.4 + "@babel/plugin-transform-modules-commonjs": ^7.21.5 + "@babel/plugin-transform-typescript": ^7.21.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e7b35c435139eec1d6bd9f57e8f3eb79bfc2da2c57a34ad9e9ea848ba4ecd72791cf4102df456604ab07c7f4518525b0764754b6dd5898036608b351e0792448 + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/preset-typescript@npm:7.22.15" dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-validator-option": ^7.25.9 - "@babel/plugin-syntax-jsx": ^7.25.9 - "@babel/plugin-transform-modules-commonjs": ^7.25.9 - "@babel/plugin-transform-typescript": ^7.25.9 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.15 + "@babel/plugin-syntax-jsx": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.15 + "@babel/plugin-transform-typescript": ^7.22.15 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bb951cfc91e6d6704a0d5be3c1150f53bb70aadb91b0b294642c5e73b5dd85f88aa3fa0e71983842655e3b7e08b952a5031620c6a2577b373b15eae919f2ca0b + checksum: 02ac4d5c812a52357c8f517f81584725f06f385d54ccfda89dd082e0ed89a94bd9f4d9b05fa1cbdcf426e3489c1921f04c93c5acc5deea83407a64c22ad2feb4 languageName: node linkType: hard "@babel/register@npm:^7.13.16": - version: 7.25.9 - resolution: "@babel/register@npm:7.25.9" + version: 7.21.0 + resolution: "@babel/register@npm:7.21.0" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 make-dir: ^2.1.0 - pirates: ^4.0.6 + pirates: ^4.0.5 source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1df38d9ed6fd60feb0a82e1926508bca8f60915ee8a12ab9f6c9714a8f13bafc7865409c7fa92604a5b79ba84f7990181b312bc469bfdfa30dd79655b3260b85 + checksum: 9745cc7520b4c5e64cc54f4851c3b78af82e1f8cffc9041f5cc0b9aef62d86a9a8617327fc975b5e0e39cb5cc0aba7ae02429884390ee93e0de29152fa849b4f + languageName: node + linkType: hard + +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.0, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.3.4, @babel/runtime@npm:^7.4.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2, @babel/runtime@npm:^7.9.6": + version: 7.18.6 + resolution: "@babel/runtime@npm:7.18.6" + dependencies: + regenerator-runtime: ^0.13.4 + checksum: 8b707b64ae0524db617d0c49933b258b96376a38307dc0be8fb42db5697608bcc1eba459acce541e376cff5ed5c5287d24db5780bd776b7c75ba2c2e26ff8a2c + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.18.3": + version: 7.22.6 + resolution: "@babel/runtime@npm:7.22.6" + dependencies: + regenerator-runtime: ^0.13.11 + checksum: e585338287c4514a713babf4fdb8fc2a67adcebab3e7723a739fc62c79cfda875b314c90fd25f827afb150d781af97bc16c85bfdbfa2889f06053879a1ddb597 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.20.0": + version: 7.21.0 + resolution: "@babel/runtime@npm:7.21.0" + dependencies: + regenerator-runtime: ^0.13.11 + checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7": + version: 7.22.3 + resolution: "@babel/runtime@npm:7.22.3" + dependencies: + regenerator-runtime: ^0.13.11 + checksum: 8fc50785ca4cba749fed90bffca7e6fd52d4709755654e95b8d2a945fc034b56fb8c2e8a0183fea7c4abb86bf5fa77678c0ea35163b6920649833d180c34c234 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.21.0": + version: 7.24.5 + resolution: "@babel/runtime@npm:7.24.5" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: 755383192f3ac32ba4c62bd4f1ae92aed5b82d2c6665f39eb28fa94546777cf5c63493ea92dd03f1c2e621b17e860f190c056684b7f234270fdc91e29beda063 languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.0, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.3.4, @babel/runtime@npm:^7.4.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2, @babel/runtime@npm:^7.9.6": - version: 7.25.9 - resolution: "@babel/runtime@npm:7.25.9" +"@babel/runtime@npm:^7.22.6": + version: 7.22.15 + resolution: "@babel/runtime@npm:7.22.15" dependencies: regenerator-runtime: ^0.14.0 - checksum: ce1c87b166ff728eaee91658a67fb7835314ed157b7a36d49602ffdaaa37fb1fcf2784afd00b55fe1672bec53fb38cba622a056c913611af2a44503097216229 + checksum: 793296df1e41599a935a3d77ec01eb6088410d3fd4dbe4e92f06c6b7bb2f8355024e6d78621a3a35f44e0e23b0b59107f23d585384df4f3123256a1e1492040e + languageName: node + linkType: hard + +"@babel/template@npm:^7.0.0, @babel/template@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/template@npm:7.20.7" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e + languageName: node + linkType: hard + +"@babel/template@npm:^7.12.13, @babel/template@npm:^7.18.10, @babel/template@npm:^7.3.3": + version: 7.18.10 + resolution: "@babel/template@npm:7.18.10" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/parser": ^7.18.10 + "@babel/types": ^7.18.10 + checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 + languageName: node + linkType: hard + +"@babel/template@npm:^7.21.9": + version: 7.21.9 + resolution: "@babel/template@npm:7.21.9" + dependencies: + "@babel/code-frame": ^7.21.4 + "@babel/parser": ^7.21.9 + "@babel/types": ^7.21.5 + checksum: 6ec2c60d4d53b2a9230ab82c399ba6525df87e9a4e01e4b111e071cbad283b1362e7c99a1bc50027073f44f2de36a495a89c27112c4e7efe7ef9c8d9c84de2ec languageName: node linkType: hard -"@babel/template@npm:^7.0.0, @babel/template@npm:^7.12.13, @babel/template@npm:^7.22.5, @babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": - version: 7.25.9 - resolution: "@babel/template@npm:7.25.9" +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" dependencies: - "@babel/code-frame": ^7.25.9 - "@babel/parser": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 103641fea19c7f4e82dc913aa6b6ac157112a96d7c724d513288f538b84bae04fb87b1f1e495ac1736367b1bc30e10f058b30208fb25f66038e1f1eb4e426472 + "@babel/code-frame": ^7.22.13 + "@babel/parser": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd languageName: node linkType: hard -"@babel/traverse@npm:7, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.20.0, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.4.5": - version: 7.25.9 - resolution: "@babel/traverse@npm:7.25.9" +"@babel/template@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/template@npm:7.24.7" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ea90792fae708ddf1632e54c25fe1a86643d8c0132311f81265d2bdbdd42f9f4fac65457056c1b6ca87f7aa0d6a795b549566774bba064bdcea2034ab3960ee9 + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/parser": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b + languageName: node + linkType: hard + +"@babel/traverse@npm:7, @babel/traverse@npm:^7.20.0, @babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/traverse@npm:7.21.4" + dependencies: + "@babel/code-frame": ^7.21.4 + "@babel/generator": ^7.21.4 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.21.4 + "@babel/types": ^7.21.4 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: f22f067c2d9b6497abf3d4e53ea71f3aa82a21f2ed434dd69b8c5767f11f2a4c24c8d2f517d2312c9e5248e5c69395fdca1c95a2b3286122c75f5783ddb6f53c + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.3, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.4.5": + version: 7.19.4 + resolution: "@babel/traverse@npm:7.19.4" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.19.4 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.19.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.19.4 + "@babel/types": ^7.19.4 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 8ae1ac3dace181620cd0e3078aec99604a48302fb873193a171e37a7cc4f8909ed496f286bf08c6473f9692db36423e2601eb9c771493d19f6a5fd1a56745af5 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.1, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/traverse@npm:7.25.3" dependencies: - "@babel/code-frame": ^7.25.9 - "@babel/generator": ^7.25.9 - "@babel/parser": ^7.25.9 - "@babel/template": ^7.25.9 - "@babel/types": ^7.25.9 + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.0 + "@babel/parser": ^7.25.3 + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.2 debug: ^4.3.1 globals: ^11.1.0 - checksum: 901d325662ff1dd9bc51de00862e01055fa6bc374f5297d7e3731f2f0e268bbb1d2141f53fa82860aa308ee44afdcf186a948f16c83153927925804b95a9594d + checksum: 5661308b1357816f1d4e2813a5dd82c6053617acc08c5c95db051b8b6577d07c4446bc861c9a5e8bf294953ac8266ae13d7d9d856b6b889fc0d34c1f51abbd8c languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4, @babel/types@npm:^7.4.4": - version: 7.25.9 - resolution: "@babel/types@npm:7.25.9" +"@babel/traverse@npm:^7.22.1": + version: 7.22.4 + resolution: "@babel/traverse@npm:7.22.4" dependencies: - "@babel/helper-string-parser": ^7.25.9 - "@babel/helper-validator-identifier": ^7.25.9 - checksum: c6e2f5bdd85351c22a395bd2359a7acec595b4b544750795836d4f69aec76c07e1c78668eab04490c6bd331776e0ece42865de2ec2c5bc7a9ddee81afd7fcac6 + "@babel/code-frame": ^7.21.4 + "@babel/generator": ^7.22.3 + "@babel/helper-environment-visitor": ^7.22.1 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.22.4 + "@babel/types": ^7.22.4 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 9560ae22092d5a7c52849145dd3e5aed2ffb73d61255e70e19e3fbd06bcbafbbdecea28df40a42ee3b60b01e85a42224ec841df93e867547e329091cc2f2bb6f languageName: node linkType: hard -"@balena/dockerignore@npm:^1.0.2": - version: 1.0.2 - resolution: "@balena/dockerignore@npm:1.0.2" - checksum: 0d39f8fbcfd1a983a44bced54508471ab81aaaa40e2c62b46a9f97eac9d6b265790799f16919216db486331dedaacdde6ecbd6b7abe285d39bc50de111991699 +"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17, @babel/traverse@npm:^7.22.8": + version: 7.22.17 + resolution: "@babel/traverse@npm:7.22.17" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 + "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-function-name": ^7.22.5 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.22.16 + "@babel/types": ^7.22.17 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 1153ca166a0a9b3fddf67f7f7c8c5b4f88aa2c2c00261ff2fc8424a63bc93250ed3fd08b04bd526ad19e797aeb6f22161120646a570cbfe5ff2a5d2f5d28af01 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/traverse@npm:7.23.0" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.0 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.23.0 + "@babel/types": ^7.23.0 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 0b17fae53269e1af2cd3edba00892bc2975ad5df9eea7b84815dab07dfec2928c451066d51bc65b4be61d8499e77db7e547ce69ef2a7b0eca3f96269cb43a0b0 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/traverse@npm:7.24.7" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-function-name": ^7.24.7 + "@babel/helper-hoist-variables": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/types": ^7.24.7 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 7cd366afe9e7ee77e493779fdf24f67bf5595247289364f4689e29688572505eaeb886d7a8f20ebb9c29fc2de7d0895e4ff9e203e78e39ac67239724d45aa83b + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.16.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.3, @babel/types@npm:^7.19.4, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.19.4 + resolution: "@babel/types@npm:7.19.4" + dependencies: + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: 4032f6407093f80dd4f4764be676f7527d2a5c0381586967cd79683cf8af01cdc16745a381b9cef045f702f0c9b0dffd880d84ee55dad59ba01bd23d5d52a8e0 + languageName: node + linkType: hard + +"@babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/types@npm:7.21.4" + dependencies: + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: 587bc55a91ce003b0f8aa10d70070f8006560d7dc0360dc0406d306a2cb2a10154e2f9080b9c37abec76907a90b330a536406cb75e6bdc905484f37b75c73219 + languageName: node + linkType: hard + +"@babel/types@npm:^7.21.3, @babel/types@npm:^7.21.5, @babel/types@npm:^7.22.0, @babel/types@npm:^7.22.3, @babel/types@npm:^7.22.4": + version: 7.22.4 + resolution: "@babel/types@npm:7.22.4" + dependencies: + "@babel/helper-string-parser": ^7.21.5 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: ffe36bb4f4a99ad13c426a98c3b508d70736036cae4e471d9c862e3a579847ed4f480686af0fce2633f6f7c0f0d3bf02da73da36e7edd3fde0b2061951dcba9a + languageName: node + linkType: hard + +"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5": + version: 7.22.17 + resolution: "@babel/types@npm:7.22.17" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.15 + to-fast-properties: ^2.0.0 + checksum: 7382220f6eb2548f2c867a98916c3aa8a6063498d5372e5d21d8d184ba354033defb72aeba5858c1b2b42177058b896a34a7dcbae5eccd47fb0104721efa909d + languageName: node + linkType: hard + +"@babel/types@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/types@npm:7.23.0" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 + to-fast-properties: ^2.0.0 + checksum: 215fe04bd7feef79eeb4d33374b39909ce9cad1611c4135a4f7fdf41fe3280594105af6d7094354751514625ea92d0875aba355f53e86a92600f290e77b0e604 + languageName: node + linkType: hard + +"@babel/types@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/types@npm:7.24.7" + dependencies: + "@babel/helper-string-parser": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: 3e4437fced97e02982972ce5bebd318c47d42c9be2152c0fd28c6f786cc74086cc0a8fb83b602b846e41df37f22c36254338eada1a47ef9d8a1ec92332ca3ea8 + languageName: node + linkType: hard + +"@babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/types@npm:7.25.2" + dependencies: + "@babel/helper-string-parser": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: f73f66ba903c6f7e38f519a33d53a67d49c07e208e59ea65250362691dc546c6da7ab90ec66ee79651ef697329872f6f97eb19a6dfcacc026fd05e76a563c5d2 languageName: node linkType: hard @@ -4319,31 +8242,31 @@ __metadata: linkType: hard "@codemirror/autocomplete@npm:^6.0.0": - version: 6.18.1 - resolution: "@codemirror/autocomplete@npm:6.18.1" + version: 6.4.2 + resolution: "@codemirror/autocomplete@npm:6.4.2" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.17.0 + "@codemirror/view": ^6.6.0 "@lezer/common": ^1.0.0 peerDependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - checksum: d488b3f76c330cc3776ef3c766347c178aa0773afd1791d2d8a7b72c4cd8a75c413bc47daba7ec29eedab954966b11ebb7c0085d12f814999ec192f060c884a9 + checksum: c6cc4edb1c412153e6f6f27926674d7f1d386d1f30d6d4f60c5b52bfa0105870b0c70449b69891937bcf082340d8b0fa6d1f9f28f5eb60adc2974ed4c73aadc1 languageName: node linkType: hard "@codemirror/commands@npm:^6.0.0, @codemirror/commands@npm:^6.1.0": - version: 6.7.1 - resolution: "@codemirror/commands@npm:6.7.1" + version: 6.2.1 + resolution: "@codemirror/commands@npm:6.2.1" dependencies: "@codemirror/language": ^6.0.0 - "@codemirror/state": ^6.4.0 - "@codemirror/view": ^6.27.0 - "@lezer/common": ^1.1.0 - checksum: 507ae0cc7f3a7bd869bca0de7e942ecb2bc0bd95a42484e5b06835ebf8caf7626c39d2bea26cefab99d07ab83ba5934afd2d07ce00dac4190aca014523f3c97e + "@codemirror/state": ^6.2.0 + "@codemirror/view": ^6.0.0 + "@lezer/common": ^1.0.0 + checksum: 216308c57745e86bdd9cbbecc8fa6d8302c340674c3f1837894f1eeb12a91d47adeb24a1d1d76faf05f7630f6dd80b9dad974ff23f017370ebdc5329b2204262 languageName: node linkType: hard @@ -4358,68 +8281,68 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0": - version: 6.10.3 - resolution: "@codemirror/language@npm:6.10.3" + version: 6.6.0 + resolution: "@codemirror/language@npm:6.6.0" dependencies: "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.23.0 - "@lezer/common": ^1.1.0 + "@codemirror/view": ^6.0.0 + "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: 53fb72299500f63706f78c888d6b5fd81043ea11ea2fa4c72c13c6d4794bb6f4ec29450208c56b4f40e839984b3dc73505262803fa61416baf588da389a7c577 + checksum: bb9411620e2f231653a3f0c4429e0d19a3843bff5dbc117df4649d7bf783ec4ad809c0add8bc0887a4ec3f48b4f8f941621168e47d76101d5383f0d670af1722 languageName: node linkType: hard "@codemirror/lint@npm:^6.0.0": - version: 6.8.2 - resolution: "@codemirror/lint@npm:6.8.2" + version: 6.1.1 + resolution: "@codemirror/lint@npm:6.1.1" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 714fe911c2d600350ea8ca0f65ceb2de25ace511e71bf174a550ba0aefc9884ec4e099f0f500b55bfd0fccbd7fe3a342a0048ff5a49c8c20020ea16cc8bff3c3 + checksum: f58374c8c759b4bf8a9074a170d639d55e6cda105c422fb09251aac4b97dacdc7ca9e43a2bc57d45586c5326e5f332f28fef4a2bb47ff16c4a81ea6e07308e9d languageName: node linkType: hard "@codemirror/search@npm:^6.0.0": - version: 6.5.6 - resolution: "@codemirror/search@npm:6.5.6" + version: 6.2.3 + resolution: "@codemirror/search@npm:6.2.3" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 19dc88d09fc750563347001e83c6194bbb2a25c874bd919d2d81809e1f98d6330222ddbd284aa9758a09eeb41fd153ec7c2cf810b2ee51452c25963d7f5833d5 + checksum: 7ab0ffab7992f5c6260313e06ec8935f55807b95ca86f0327154ea1ae0ab984cd22c2fc1a812bd6cace1db131785353689fbfd080d2e12c660e3db0295dec355 languageName: node linkType: hard -"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.1, @codemirror/state@npm:^6.4.0": - version: 6.4.1 - resolution: "@codemirror/state@npm:6.4.1" - checksum: b81b55574091349eed4d32fc0eadb0c9688f1f7c98b681318f59138ee0f527cb4c4a97831b70547c0640f02f3127647838ae6730782de4a3dd2cc58836125d01 +"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.1, @codemirror/state@npm:^6.1.4, @codemirror/state@npm:^6.2.0": + version: 6.2.0 + resolution: "@codemirror/state@npm:6.2.0" + checksum: fdc99c773dc09c700dd02bf918f06132aa8d3069c262cc4eb6ca5c810ce24ae2d7e90719ae7630a8158fd263018de6d40bd78f312e6bfba754e737b64e6c6b3d languageName: node linkType: hard "@codemirror/theme-one-dark@npm:^6.0.0": - version: 6.1.2 - resolution: "@codemirror/theme-one-dark@npm:6.1.2" + version: 6.1.1 + resolution: "@codemirror/theme-one-dark@npm:6.1.1" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/highlight": ^1.0.0 - checksum: 29bc09f79534115f62658caf3d0db527fe347d058b69a8c7f580ae636827377aadd0606fd0d83dbab8d6f3b0a5df53d3253c619341b5fb93d2c8291a8efb9556 + checksum: e314033c77732deb6eddb44d5e43d134842dd4e174f0525161f90edb0fd4fa93e482710b7371e3ed573645b8e0c402d518d5cdae41867546cd7e2ccee8da455e languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0": - version: 6.34.1 - resolution: "@codemirror/view@npm:6.34.1" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.6.0": + version: 6.9.1 + resolution: "@codemirror/view@npm:6.9.1" dependencies: - "@codemirror/state": ^6.4.0 - style-mod: ^4.1.0 + "@codemirror/state": ^6.1.4 + style-mod: ^4.0.0 w3c-keyname: ^2.2.4 - checksum: 5c7bf199f0b45a3cc192f08c2ac89e5ab972f313cb4f2c979edf6e05b27bccd60c6cb42d5dacb6813ef3a928d75476eb0a00ffdeffd7431c8e9f44bab4f6e12e + checksum: 485d54d338a27ebde6bec489e3008db80a2a801fe27db0d4a3c70181c8739f806f035855ba13d5b311d186ad2b130db07196e8b465ec102b0142df0689bff2f8 languageName: node linkType: hard @@ -4446,31 +8369,21 @@ __metadata: languageName: node linkType: hard -"@contentful/app-sdk@npm:^4.29.0": - version: 4.29.1 - resolution: "@contentful/app-sdk@npm:4.29.1" +"@contentful/app-sdk@npm:^4.21.1": + version: 4.25.0 + resolution: "@contentful/app-sdk@npm:4.25.0" dependencies: contentful-management: ">=7.30.0" - checksum: 4224e0add310637845d59bc2e37f6217c47626ffb48ee64632404feea8fbf16b49fac853349d438bae1b37a170a3c746cf2747136ef73d9bf92141c6b5f67e72 - languageName: node - linkType: hard - -"@contentful/content-source-maps@npm:^0.11.0": - version: 0.11.6 - resolution: "@contentful/content-source-maps@npm:0.11.6" - dependencies: - "@vercel/stega": ^0.1.2 - json-pointer: ^0.6.2 - checksum: 5837626885adff1f6aba95b9ac36dd1da22d30da87be862db853709ef8779cb919b24b9dd77be5db9a62c3febd1a6f1ea302bca802c854297852f44914b2da97 + checksum: 6a89ea5113c612868d35168ed7ff3ad715aae554acc8267f82b3f4f42a77beb0447bacf178b8b76ac172f42215d7e804f0dcc72adc03684f50f6e871d34a12ab languageName: node linkType: hard "@contentful/contentful-slatejs-adapter@npm:^15.16.5": - version: 15.18.11 - resolution: "@contentful/contentful-slatejs-adapter@npm:15.18.11" + version: 15.16.13 + resolution: "@contentful/contentful-slatejs-adapter@npm:15.16.13" dependencies: - "@contentful/rich-text-types": ^16.8.5 - checksum: 4bf3da64d4fbe5a7f5129e40fa8059094e9811d16ce7ffb43d89dba6877700274f7364619d7f92d1ba0dfb33a92346640e91d3a67c92213402366706624887e9 + "@contentful/rich-text-types": ^16.3.5 + checksum: 970b4e8e54272f6fff1ec8bbcca0adbedeb43469a662f036a8f8df172fdb7c867accf40c2aa6f84d1befe4806f154740776c9ee4a08f1c79af02e7c72908728d languageName: node linkType: hard @@ -4507,191 +8420,340 @@ __metadata: languageName: node linkType: hard -"@contentful/f36-accordion@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-accordion@npm:4.74.1" +"@contentful/f36-accordion@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-accordion@npm:4.26.0" dependencies: - "@contentful/f36-collapse": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-collapse": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: db585ebd2a498d45c240de0c04ad24e059c7afe93805620f73baca2d302e2b7c644ce167d5ed3ded9c2c9660d06eabc1e439fbebfe578da614a4358b0143beb1 + languageName: node + linkType: hard + +"@contentful/f36-accordion@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-accordion@npm:4.64.0" + dependencies: + "@contentful/f36-collapse": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: cb60a31518aaf7e48bfefb6e68d7f3fc3277e293617865145ac8f81cc532a4cfffeecfe4482b7152a25212bff77fd78482a5451edf110c39bdb8b717f0fb8d6c + checksum: d2f61481f56af7cabe9fab16b65daec94360cc3f573765c20c5cbec8c968287879c7394dedcb69649b00b14d91d830011c95ff5bd2c12ad7752a03d4c85be048 languageName: node linkType: hard -"@contentful/f36-asset@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-asset@npm:4.74.1" +"@contentful/f36-asset@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-asset@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icon": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icon": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 3e1ffeae6a1d2a8db5d3a007849eec9ac52af4f2a9abe3d225aa0986334c8f42bae93a8cdeb08558b17806b90701327ff2a7393e61289002255b9062b5a8c260 + checksum: eb29a668c203b0e63c91dc763cfe6612920d4c9ef06efae2bbab4ab23604dfdb4df3145bd1d9a40e47b42d2a0a3da4928650b5a961460a4fd3a8ae9ba05c095c languageName: node linkType: hard -"@contentful/f36-autocomplete@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-autocomplete@npm:4.74.1" +"@contentful/f36-asset@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-asset@npm:4.64.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-forms": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-popover": ^4.74.1 - "@contentful/f36-skeleton": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icon": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 98771f113f550e284e4cd5de5e21d282dbb4c43822314cdeb74b6fc66023b7484163662535f7fd176cccb14b01e2081c6903123bbc02934ee78aca1ff10f97e9 + languageName: node + linkType: hard + +"@contentful/f36-autocomplete@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-autocomplete@npm:4.26.0" + dependencies: + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-forms": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-popover": ^4.26.0 + "@contentful/f36-skeleton": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 + "@contentful/f36-utils": ^4.23.2 + downshift: ^6.1.12 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 54bcb905963407ea0cc3143c72c08fd67f2d307debe267f22343b0678010fbd97e91620ad919eb5f39dd25c0d9d11ae3d1143864ceab21d1ca18048eae227782 + languageName: node + linkType: hard + +"@contentful/f36-autocomplete@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-autocomplete@npm:4.64.0" + dependencies: + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-forms": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-popover": ^4.64.0 + "@contentful/f36-skeleton": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 "@contentful/f36-utils": ^4.24.3 downshift: ^6.1.12 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 16178ab92c58d0fabf4c2e1609481cf41651429262ac6b923c0c9ae471bb95126d7ff1115c01e86a9a2aced8470c444927c86d37ca641a58bb0faac355f58be7 + checksum: 0f916ab3006561a874c9e5f6750cfa778fc8b14528b3a5893029a83914f1722ddccf9b4c46a8e66c1d61ec234c3ac586a1eee1bef4240d4b0f1fc12e56fc1f8a languageName: node linkType: hard -"@contentful/f36-avatar@npm:4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-avatar@npm:4.74.1" +"@contentful/f36-badge@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-badge@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-image": 4.74.1 - "@contentful/f36-menu": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-tooltip": ^4.74.1 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 07612c86d1d28ffaa3872f49f83fa821782ff7871ac8214cabfc08dee3b73243b616270c99c673aa0e3c52cfffaefcc040c21a8bf5676eca74f0bc2eeccfbd82 + checksum: f04325ffb167aa2049ac3ed45032afc583596af272e9ada5a035a2e015105816b118dc88b058973c5eabb344c612a0b1f9961d8bb417eb7ba14ea7f17bec5386 languageName: node linkType: hard -"@contentful/f36-badge@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-badge@npm:4.74.1" +"@contentful/f36-badge@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-badge@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 3278f7358ce46389e542d901d4c128fda35e724d3364cf5f4ec29bb737e9a71f16216f14fe2560233cba35cf435503b34f5eecbf804a1297a40ffceb63a139e0 + checksum: bc005633e56aa5ebfd698b3c9dcee6497d349066ded0f9f3b22bf52b27bf22fd056dd7ea5c96b21ca4818795289e064daad5daae364ebd33228300618cf9001e languageName: node linkType: hard -"@contentful/f36-button@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-button@npm:4.74.1" +"@contentful/f36-button@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-button@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-spinner": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-tooltip": ^4.74.1 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-spinner": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 23cfb2c0a6f8cf070660a88ddba5c2e8e6cb6e63b1177de86acda454a1c5188dc12a8fa864c27dcc944f6bd1437715ab7e9be2691422dac7ad9c93a31b08e5f4 + languageName: node + linkType: hard + +"@contentful/f36-button@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-button@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-spinner": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: b434723acb52f9f3f7eec0334120b4983d0c3883034fabf2d8ea8551aecd79f38dfed87ccd12fb0f2a5c18dd81ec36e5142d24482fd7f16cbc69af5353dd2ec6 - languageName: node - linkType: hard - -"@contentful/f36-card@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-card@npm:4.74.1" - dependencies: - "@contentful/f36-asset": ^4.74.1 - "@contentful/f36-badge": ^4.74.1 - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-drag-handle": ^4.74.1 - "@contentful/f36-icon": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-menu": ^4.74.1 - "@contentful/f36-skeleton": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-tooltip": ^4.74.1 - "@contentful/f36-typography": ^4.74.1 + checksum: 6df49b87c875db553a7094b7b50a1275e657c5e4cd935efc6aa6ee5b4c4b7adfcd9232a9b5008af60be384b1647ceeed2b47990ad74038dadff789d2af0786b5 + languageName: node + linkType: hard + +"@contentful/f36-card@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-card@npm:4.26.0" + dependencies: + "@contentful/f36-asset": ^4.26.0 + "@contentful/f36-badge": ^4.26.0 + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-drag-handle": ^4.26.0 + "@contentful/f36-icon": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-menu": ^4.26.0 + "@contentful/f36-skeleton": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-tooltip": ^4.26.0 + "@contentful/f36-typography": ^4.26.0 + emotion: ^10.0.17 + truncate: ^3.0.0 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: bb9c97dae729273973f8e0a8cc97a2b88bb59623beeaa2a92a7b42ca25160a6fc455db76116d1587695180969e7862402ab213cb6b50040fb49c1d81b93fb42d + languageName: node + linkType: hard + +"@contentful/f36-card@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-card@npm:4.64.0" + dependencies: + "@contentful/f36-asset": ^4.64.0 + "@contentful/f36-badge": ^4.64.0 + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-drag-handle": ^4.64.0 + "@contentful/f36-icon": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-menu": ^4.64.0 + "@contentful/f36-skeleton": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-tooltip": ^4.64.0 + "@contentful/f36-typography": ^4.64.0 emotion: ^10.0.17 truncate: ^3.0.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: b85ed733a675da57f95596b534f55ae449dd6adbbc5fd585985e1249ad542c4b0788b37d894e3f21091cb3f5c2745a99de232ab8c9f2480c28fe41adb8754484 + checksum: da9d20f4f0fbaadb7e165fc15a5d90e080d345559e21770d4b8e51497c3bac5a9aec429498f43bdc6285f1b46132d60492053bfc52e0e399ab9b5ebaa051e86d + languageName: node + linkType: hard + +"@contentful/f36-collapse@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-collapse@npm:4.26.0" + dependencies: + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 0a7795d841bb42def1c974056f412f6260f56bec9d5e8a98631494025f0c874110a61607458bf05c0d3cd9660d6a63f6defec68fe7edee7312ed56e36e8cbbfc languageName: node linkType: hard -"@contentful/f36-collapse@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-collapse@npm:4.74.1" +"@contentful/f36-collapse@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-collapse@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: e76ba038cffa3370d5df2a1e0994e3c4c9e32de6e550057fddbc2f3f260abf6c5c9b378a6a45b353800ea54a0e8ac1ca7afa0883e9cb91dcc950c7f94f47f776 - languageName: node - linkType: hard - -"@contentful/f36-components@npm:^4.0.27, @contentful/f36-components@npm:^4.70.0": - version: 4.74.1 - resolution: "@contentful/f36-components@npm:4.74.1" - dependencies: - "@contentful/f36-accordion": ^4.74.1 - "@contentful/f36-asset": ^4.74.1 - "@contentful/f36-autocomplete": ^4.74.1 - "@contentful/f36-avatar": 4.74.1 - "@contentful/f36-badge": ^4.74.1 - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-card": ^4.74.1 - "@contentful/f36-collapse": ^4.74.1 - "@contentful/f36-copybutton": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-datepicker": ^4.74.1 - "@contentful/f36-datetime": ^4.74.1 - "@contentful/f36-drag-handle": ^4.74.1 - "@contentful/f36-empty-state": ^4.74.1 - "@contentful/f36-entity-list": ^4.74.1 - "@contentful/f36-forms": ^4.74.1 - "@contentful/f36-header": ^4.74.1 - "@contentful/f36-icon": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-image": 4.74.1 - "@contentful/f36-list": ^4.74.1 - "@contentful/f36-menu": ^4.74.1 - "@contentful/f36-modal": ^4.74.1 - "@contentful/f36-navbar": ^4.74.1 - "@contentful/f36-note": ^4.74.1 - "@contentful/f36-notification": ^4.74.1 - "@contentful/f36-pagination": ^4.74.1 - "@contentful/f36-pill": ^4.74.1 - "@contentful/f36-popover": ^4.74.1 - "@contentful/f36-skeleton": ^4.74.1 - "@contentful/f36-spinner": ^4.74.1 - "@contentful/f36-table": ^4.74.1 - "@contentful/f36-tabs": ^4.74.1 - "@contentful/f36-text-link": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-tooltip": ^4.74.1 - "@contentful/f36-typography": ^4.74.1 + checksum: 78a92d18470f27a8ff50cf9d201f90bea511abfa4b6ac8ad40de61ecbe6ce8118355fcb7ca6bb4ee97317bf0de4c4db85b8537b1ea8ea70b919e04a0b6907b0f + languageName: node + linkType: hard + +"@contentful/f36-components@npm:^4.0.27": + version: 4.26.0 + resolution: "@contentful/f36-components@npm:4.26.0" + dependencies: + "@contentful/f36-accordion": ^4.26.0 + "@contentful/f36-asset": ^4.26.0 + "@contentful/f36-autocomplete": ^4.26.0 + "@contentful/f36-badge": ^4.26.0 + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-card": ^4.26.0 + "@contentful/f36-collapse": ^4.26.0 + "@contentful/f36-copybutton": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-datepicker": ^4.26.0 + "@contentful/f36-datetime": ^4.26.0 + "@contentful/f36-drag-handle": ^4.26.0 + "@contentful/f36-entity-list": ^4.26.0 + "@contentful/f36-forms": ^4.26.0 + "@contentful/f36-icon": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-list": ^4.26.0 + "@contentful/f36-menu": ^4.26.0 + "@contentful/f36-modal": ^4.26.0 + "@contentful/f36-note": ^4.26.0 + "@contentful/f36-notification": ^4.26.0 + "@contentful/f36-pagination": ^4.26.0 + "@contentful/f36-pill": ^4.26.0 + "@contentful/f36-popover": ^4.26.0 + "@contentful/f36-skeleton": ^4.26.0 + "@contentful/f36-spinner": ^4.26.0 + "@contentful/f36-table": ^4.26.0 + "@contentful/f36-tabs": ^4.26.0 + "@contentful/f36-text-link": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-tooltip": ^4.26.0 + "@contentful/f36-typography": ^4.26.0 + "@contentful/f36-utils": ^4.23.2 + "@types/react": 16.14.22 + "@types/react-dom": 16.9.14 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 84017b77dd06ac71513089498ed1137c43054f6cc073af1da648d241e57777c8a40b989ec6175e8a258b5d3385d013ef92d9116820085954769e2fcc35d92e24 + languageName: node + linkType: hard + +"@contentful/f36-components@npm:^4.20.6, @contentful/f36-components@npm:^4.3.23, @contentful/f36-components@npm:^4.34.1, @contentful/f36-components@npm:^4.60.0": + version: 4.64.0 + resolution: "@contentful/f36-components@npm:4.64.0" + dependencies: + "@contentful/f36-accordion": ^4.64.0 + "@contentful/f36-asset": ^4.64.0 + "@contentful/f36-autocomplete": ^4.64.0 + "@contentful/f36-badge": ^4.64.0 + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-card": ^4.64.0 + "@contentful/f36-collapse": ^4.64.0 + "@contentful/f36-copybutton": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-datepicker": ^4.64.0 + "@contentful/f36-datetime": ^4.64.0 + "@contentful/f36-drag-handle": ^4.64.0 + "@contentful/f36-empty-state": ^4.64.0 + "@contentful/f36-entity-list": ^4.64.0 + "@contentful/f36-forms": ^4.64.0 + "@contentful/f36-icon": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-list": ^4.64.0 + "@contentful/f36-menu": ^4.64.0 + "@contentful/f36-modal": ^4.64.0 + "@contentful/f36-navbar": ^4.1.1 + "@contentful/f36-note": ^4.64.0 + "@contentful/f36-notification": ^4.64.0 + "@contentful/f36-pagination": ^4.64.0 + "@contentful/f36-pill": ^4.64.0 + "@contentful/f36-popover": ^4.64.0 + "@contentful/f36-skeleton": ^4.64.0 + "@contentful/f36-spinner": ^4.64.0 + "@contentful/f36-table": ^4.64.0 + "@contentful/f36-tabs": ^4.64.0 + "@contentful/f36-text-link": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-tooltip": ^4.64.0 + "@contentful/f36-typography": ^4.64.0 "@contentful/f36-utils": ^4.24.3 peerDependencies: "@types/react": ">=16.8" @@ -4703,32 +8765,49 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 9d8f30478ecefbaa4a4d6545d2fe867f8f434c182f9911189bcfef794e7485eebcc215b1855b0b10a283d53f585fdacdb234c56d10efeab138fadad4d6bd0e75 + checksum: dfe0f0b787e44b7b4fe38beec5ebf35aa07854acd3de664680fd8b0a07144ce33500f47ec5837411ed43c13968eb3c50b47891963c561aab0ed9620fb8816cf4 languageName: node linkType: hard -"@contentful/f36-copybutton@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-copybutton@npm:4.74.1" +"@contentful/f36-copybutton@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-copybutton@npm:4.26.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-tooltip": ^4.74.1 + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-tooltip": ^4.26.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 1e625e920dec815bbad1282d8da2f1dd2b1876833638cb1fa558f8e85feb5fc532b05d0ec1bba79cf3e3fa72ecfacfb8ce9f8fdd7961e63e8ec6c7d5b9f40586 + checksum: b4b72b33142092e72c9d4659c5e254e794a06aa4fb8f836ebb05469761aa854b0b5bb9d9e750b38eccd0e827464a53b5b05b668c82e4942a7b6ad5bb3ec37ea8 languageName: node linkType: hard -"@contentful/f36-core@npm:^4.67.3, @contentful/f36-core@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-core@npm:4.74.1" +"@contentful/f36-copybutton@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-copybutton@npm:4.64.0" dependencies: - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-tooltip": ^4.64.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: c4011b5ccd82a727715b45daff375d4817211f7def754378c3fdc01ea4661a534cda4d919913744f0aa93d80f3987dbbee829f87a82d79b9517a5250fad62eac + languageName: node + linkType: hard + +"@contentful/f36-core@npm:^4.23.2, @contentful/f36-core@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-core@npm:4.26.0" + dependencies: + "@contentful/f36-tokens": ^4.0.1 "@emotion/core": ^10.1.1 "@emotion/is-prop-valid": ^1.2.0 csstype: ^3.1.1 @@ -4736,21 +8815,59 @@ __metadata: peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 0eb8cb691ecb2d45891b6d6087c7ffb40d7a654deea7b567344eef90a54b3359821dbae114f3250192cf9b3dd9d67f3cab0779138e3a4fd3490424306fd718ce + checksum: a37b4e57e42f48796abfc8b5be9c08e0022e58c0309f77984ec756644bcbae0ed40899223504b1dd63c9f2157ba06127f9e62147b1af87d2e13bd9f6a9cd01fe languageName: node linkType: hard -"@contentful/f36-datepicker@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-datepicker@npm:4.74.1" +"@contentful/f36-core@npm:^4.45.0, @contentful/f36-core@npm:^4.63.0, @contentful/f36-core@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-core@npm:4.64.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-forms": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-popover": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-tokens": ^4.0.4 + "@emotion/core": ^10.1.1 + "@emotion/is-prop-valid": ^1.2.0 + csstype: ^3.1.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 756a77ffa012956ff72d837123bd0fbb7b98ab3b476fed1d0c10a437765b1a895795c6a0b7c321e4eb116db1882e3b5ce882a6f40d701576dd790cab8923a81f + languageName: node + linkType: hard + +"@contentful/f36-datepicker@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-datepicker@npm:4.26.0" + dependencies: + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-forms": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-popover": ^4.26.0 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/f36-typography": ^4.26.0 + date-fns: ^2.28.0 + emotion: ^10.0.17 + react-day-picker: ^8.3.5 + react-focus-lock: ^2.9.1 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: ae1b22ae7794932abe7ee354ab341d45b642afe0cb28cf7754129add97efb9d01e20dde1ef6f2bb5a5f5de11d2d76eb0d6967c34b04573b045e047b3d3a6fa05 + languageName: node + linkType: hard + +"@contentful/f36-datepicker@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-datepicker@npm:4.64.0" + dependencies: + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-forms": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-popover": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 date-fns: ^2.28.0 emotion: ^10.0.17 react-day-picker: ^8.7.1 @@ -4758,305 +8875,507 @@ __metadata: peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: bab05f22721e7c041e7defa03e70b6c591f6f781e7b95c11c6184db69927a55e6a9696921ea77f677ff797ff59386bc99b4d6f93359c5293928923fe28607c00 + checksum: 444fcfe16197df5fbb1796b7996ed9e0eadd6842fc499e49a050ea3bbdd5236de47eb1adf73a4ad6408812ca0c5fe9cd81411d06c650576a2f543ecee4914577 languageName: node linkType: hard -"@contentful/f36-datetime@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-datetime@npm:4.74.1" +"@contentful/f36-datetime@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-datetime@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 dayjs: ^1.11.5 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 2e75ffd29373c1e7e39557ef243e828d7a16147d54a8575d566a0a63bdca4b59e5f7d04410d69470756f44d8bb8176fc1d042eeb1190396f59928a63dae73da1 + checksum: 1b554617e8e65a6b0b3e4d62113ae0cc1d3ddfa8247cb8cd5856244b59ec1954c277c03d1ed17d44da677de4ecb642afdf6e803601e0949508caac2ee9069d07 languageName: node linkType: hard -"@contentful/f36-drag-handle@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-drag-handle@npm:4.74.1" +"@contentful/f36-datetime@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-datetime@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + dayjs: ^1.11.5 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 05b87b8378ceebd4018b02afef042f203d8d109ce3f782385ab2b5621ed777d89920b9f8c7f65d69348ff25ae15a6d3100ddad23a3ad8e12c6ddceeacbf5e662 + languageName: node + linkType: hard + +"@contentful/f36-drag-handle@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-drag-handle@npm:4.26.0" + dependencies: + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 739e43e26a3a2eefb2afe0d89462e176c2980e7772e7cec783bbb54a34cae1fff0585c2b3eac71c3fe8e06b36f03f55aa1d7c183bd1737ebb361d595febba1fb + languageName: node + linkType: hard + +"@contentful/f36-drag-handle@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-drag-handle@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: c3a5c5bf2d74ede06f74954e3cfd066c6114a7e0ae8e1887ec0e0a93ca75a42630556a38a146e366d769dedf673e956d58dd5c95b5edec591629efa545bd53e8 + checksum: ffc3aaa671a51d58f26d8ee656021337405c572bd2b44450b66560c548ae49fb7df1277a943e4774d5a6a09832df4787f193ac1d226dd3473f43e9a2ed025df3 languageName: node linkType: hard -"@contentful/f36-empty-state@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-empty-state@npm:4.74.1" +"@contentful/f36-empty-state@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-empty-state@npm:4.64.0" dependencies: - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 63fc8bc51851502b83d03c0a992d669dcf8bbe79897af772ec348c320e25b4dd1718af7ce1b5216782a46fca13b50a0c83046d99c683d2261937aad91b7db016 + checksum: 929519f6c0a1cbb5a02c1e4d19a53f912ec9370addcdfe599378da2360206a54cad6e9151cb3ab4d2b099f7eeab1657eee86f3712ee1b97a1f757645af086232 languageName: node linkType: hard -"@contentful/f36-entity-list@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-entity-list@npm:4.74.1" +"@contentful/f36-entity-list@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-entity-list@npm:4.26.0" dependencies: - "@contentful/f36-badge": ^4.74.1 - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-drag-handle": ^4.74.1 - "@contentful/f36-icon": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-menu": ^4.74.1 - "@contentful/f36-skeleton": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-badge": ^4.26.0 + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-drag-handle": ^4.26.0 + "@contentful/f36-icon": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-menu": ^4.26.0 + "@contentful/f36-skeleton": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: b94f8ffa4fcc4806c43af6c03591a7e4bb1556207f97cd019e0ff7658f086e09d7fd8f355fbb11a996bb171accab1fb3780f06079276d00f2b848f661879f7fb + checksum: 4ef01de4b1bad1542fb38485132ac95910d325356c9ab7612de2d3e4e42a38845391596e3afcf65b3d5d4418c7f2d009c574b687e7771709f89f7a4f30560245 languageName: node linkType: hard -"@contentful/f36-forms@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-forms@npm:4.74.1" +"@contentful/f36-entity-list@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-entity-list@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-badge": ^4.64.0 + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-drag-handle": ^4.64.0 + "@contentful/f36-icon": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-menu": ^4.64.0 + "@contentful/f36-skeleton": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 9742e5824cd17f0670ee8f4153cb90b6b09a263c41cb7c7e1c26fe8f65c3c940d0a44862019ac4855ed089313d37d05d2e9d1fcd67bd152b4d973d793a4724cd + languageName: node + linkType: hard + +"@contentful/f36-forms@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-forms@npm:4.26.0" + dependencies: + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: a25175abe592ce4a7d9d80ea022b1dc7bc22a7471df16ef80cef25d2564ad9a4085ce952568ae117921a27a1debda89de92f84e050c98640224bbd7701f5618f + languageName: node + linkType: hard + +"@contentful/f36-forms@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-forms@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 348a0966b3d9802290346057af3140c22f04ef20ff7ec84876a3682cb8eda55c63340598405766431407d66d8c14543c71104cedbd0f0fb9a6bb24ea9bceabda + checksum: 750a9f46e4814f015340d79cdc14de67924c28d8fbc3fe920dd0348c40a6fecd736d6e26533d68ecd122a1de21baeaafc9a5bf012a615042344c09de647f5b73 languageName: node linkType: hard -"@contentful/f36-header@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-header@npm:4.74.1" +"@contentful/f36-icon@npm:^4.23.2, @contentful/f36-icon@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-icon@npm:4.26.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + checksum: c2332104c46a1aee30d36f1f88aa172143103ef3b242e8b2cb76c5693df24463329a1d7e11f2b4bec5b3a2328c56c9e91452178cfdefec43c647e8efb2e18180 + languageName: node + linkType: hard + +"@contentful/f36-icon@npm:^4.45.0, @contentful/f36-icon@npm:^4.63.0, @contentful/f36-icon@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-icon@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: c8810f3e40f962aac4dbff4377090c0115482be3056b503788a251c2cf4e744a09d84006f18084fa14e4ea4fa7e53026c016941e371a8ed499da6d1f6d4d2a27 + checksum: 78b7085ddd54d468bbbc8f9674b0984e37ff1e029de5fd480700734563d133c4f70c6746178c650f27fd1ad8d05699c3fafd322cf8bbfa93436b901cb6de9b9a languageName: node linkType: hard -"@contentful/f36-icon@npm:^4.67.3, @contentful/f36-icon@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-icon@npm:4.74.1" +"@contentful/f36-icons@npm:^4.1.0, @contentful/f36-icons@npm:^4.23.2": + version: 4.24.0 + resolution: "@contentful/f36-icons@npm:4.24.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.23.2 + "@contentful/f36-icon": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: ebb7d2be086a3e3ec118a23cb00b8855178636e885671d5c2a4313d7b0781f6b8d6a77891ade097717b6db323bd047ed6cb2ab677bc9ce16ef5d5d2c64e6ef6f + checksum: 0ad63efcf9afda268b5abbab016cdc6f58dc68e1e76f90495143208decc8e0d4c6aa718ca091f4b135fb0ca091ffe52db189c2007dbdbd63a82ab07521795c55 languageName: node linkType: hard -"@contentful/f36-icons@npm:^4.1.0, @contentful/f36-icons@npm:^4.29.0": - version: 4.29.0 - resolution: "@contentful/f36-icons@npm:4.29.0" +"@contentful/f36-icons@npm:^4.1.1, @contentful/f36-icons@npm:^4.27.0, @contentful/f36-icons@npm:^4.28.0": + version: 4.28.0 + resolution: "@contentful/f36-icons@npm:4.28.0" dependencies: - "@contentful/f36-core": ^4.67.3 - "@contentful/f36-icon": ^4.67.3 + "@contentful/f36-core": ^4.63.0 + "@contentful/f36-icon": ^4.63.0 "@contentful/f36-tokens": ^4.0.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 9d02a1dfdc9750709a635ba0ec5e102a917c4a45787c265305705f2e2b10abe089456cecdbf03ac798d3ef23bc92593c15e568534099c529b87fec1637ed285f + checksum: d2b4076a831ee0698dba2b5a62b497fae367b840cccd7548bb27576f0a4783df921b013e309848936e1153b0a3cc3c01616cfea7bfe20155c76c2fbdbf20fda8 + languageName: node + linkType: hard + +"@contentful/f36-list@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-list@npm:4.26.0" + dependencies: + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + checksum: 3eb6a1238a989c5c6b68be3b184d62d529315a5a5c22c2c4cf255ea4b5bb7d65cd055bd7e57439cbdf8a9e890d6c41299acda5906aa4661e242845d446fbe548 languageName: node linkType: hard -"@contentful/f36-image@npm:4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-image@npm:4.74.1" +"@contentful/f36-list@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-list@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-skeleton": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: b63eb5c51c274cf363c792c6a8360d7ea34641b43023aa9229f8506dd7938c13ddd77205001ec4d53c8343e28d69badbf56c4a4a49bb1bc1e3e4f3b22c849aac + checksum: 1bf62a7df055491bd1c766c2be5ee146bfbdf5a3350bca93801f121128a3eed6c8616819d0b22d17914e59d1e8f38cb7e1077eea9558dee2665f9e7cd07a597f languageName: node linkType: hard -"@contentful/f36-list@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-list@npm:4.74.1" +"@contentful/f36-menu@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-menu@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-popover": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 + "@contentful/f36-utils": ^4.23.2 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 1ded51c6aa66f3ad99bc0e9c646ce9616dd6671de6278d75d975fc871c75994b9db499176f68b99eb64042485c14cf393814dd34dfd793756a29f09b501add21 + checksum: 14d921d6d35fd698e28882b22b5b113ef4776a1c26de51dabc7e02bff18884bda141a68ed63ad1028166476bc036a77a189bc78323dc180098b6901cae7ba7a7 languageName: node linkType: hard -"@contentful/f36-menu@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-menu@npm:4.74.1" +"@contentful/f36-menu@npm:^4.45.0, @contentful/f36-menu@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-menu@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-popover": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-popover": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: a6b06082abf979e6fe9d2075ae00edcef1a95fd51e28c61d3f0fd2144185e9b34a48bf4566d4729fc68e7cd885aa78976c9cfa4b02024f5c9a956c84e05f3f10 + checksum: 6fcb15c3475b34030fb236e748bc07ab25566f453fc37ab99d51cf522c1050cdc192e254a8f750e28ebc239ba4be6f5b5bf1b7b013e5968e1b365579785f7c21 languageName: node linkType: hard -"@contentful/f36-modal@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-modal@npm:4.74.1" +"@contentful/f36-modal@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-modal@npm:4.26.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 "@types/react-modal": ^3.13.1 emotion: ^10.0.17 react-modal: ^3.16.1 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 87aa4e9cabb07254a1579a6b701b2bff3b02993bc90fe7c4798bf691d49321bbaf9a44677c3f808cc9f2c35d68904b29ed2dcdc71dcab644490d5c3dd7e56f21 + checksum: da1c3d8f0ba0e356797f78bfc071fc8b27d0248590ff93ee1588fb8c6045ba8bfe7eb0b1804a6f188af63f62efeb71d6008504fa8568411c105fa9c284c9fa65 languageName: node linkType: hard -"@contentful/f36-navbar@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-navbar@npm:4.74.1" +"@contentful/f36-modal@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-modal@npm:4.64.0" dependencies: - "@contentful/f36-avatar": 4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icon": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-menu": ^4.74.1 - "@contentful/f36-skeleton": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 + "@types/react-modal": ^3.13.1 + emotion: ^10.0.17 + react-modal: ^3.16.1 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 81d7e7439d6d44c369c406cbc5f0e1baf9541e2f722896f05fa15a3dca9d2681a67b27d26cab59e04681fa98f5924125058d529f8ea9c4841212033c997f8028 + languageName: node + linkType: hard + +"@contentful/f36-navbar@npm:^4.1.1": + version: 4.1.1 + resolution: "@contentful/f36-navbar@npm:4.1.1" + dependencies: + "@contentful/f36-core": ^4.45.0 + "@contentful/f36-icon": ^4.45.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-menu": ^4.45.0 + "@contentful/f36-skeleton": ^4.45.0 + "@contentful/f36-tokens": ^4.0.1 "@contentful/f36-utils": ^4.23.2 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 284d6e1051aef692374f7e22647df0386a1599685cf54feb9be63dc59714bd9cc49793ade8e009e9c1dd1dc15c637e0f21df71f27cecca98e31145c85b8e3435 + checksum: e349c627e0f6f6c669fabb3a2e306531d53d9a66f16639bf44b6dac70b6e8ac672c7b0f3b5c94d73f50d49dbec35196e787b7b80131c42e37f0b2141a1e4e723 + languageName: node + linkType: hard + +"@contentful/f36-note@npm:^4.2.8, @contentful/f36-note@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-note@npm:4.26.0" + dependencies: + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icon": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 28dabf0744f5af6ec0a6640d93683c110deeccf3d170a8a9eb5ceaad3453ec9114d742531b0e1aad119d4bc36c42553101570dcc1213aaaebeee733bab581dc6 languageName: node linkType: hard -"@contentful/f36-note@npm:^4.70.0, @contentful/f36-note@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-note@npm:4.74.1" +"@contentful/f36-note@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-note@npm:4.64.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icon": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icon": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 28470b1e5adcb6a3bf772a16eb2af4dcbe94d6e85a8688bc3874e7cc8e63a6a9fd69a96a85acf21204d7f29e6cdde3c0e79d2315ca43b72ef447d8c4f3f5d7fd + checksum: aaac447a2d9cec9b2aacb3289722638941ca173147ce896739c5866adefacb9db35b6ec2585ebd2a39b17b1b194272a50c7e51e1857b3368fa5bb33b148da02b languageName: node linkType: hard -"@contentful/f36-notification@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-notification@npm:4.74.1" +"@contentful/f36-notification@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-notification@npm:4.26.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-text-link": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-text-link": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-typography": ^4.26.0 + "@swc/helpers": ^0.4.2 emotion: ^10.0.17 react-animate-height: ^3.0.4 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 994399bf831fb08c0817909d2a41dcfccda9b7586a1f6c6b2a243a98077849abbb668859bd997f4f8e616e5cae3d51538f5c4250d7f4217b214820864c9c5bfb + checksum: fa970a400ca3ab072b37a631b13b47b0962b2ae948e1cf8d7ad7a6018b2b7ce2b759f1483bf28d19a9f9e15b0f62fd13881c8a2fec1dc18c7f45d2ee213f720f + languageName: node + linkType: hard + +"@contentful/f36-notification@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-notification@npm:4.64.0" + dependencies: + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-text-link": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 + "@swc/helpers": ^0.4.14 + emotion: ^10.0.17 + react-animate-height: ^3.0.4 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: a6d88bd19d4faf37487e77181b4420653440441ef1e6f30f20b5ed86ac353518b0d1ea76fc80a1a2aaf093302959cdff7fc5db605fe8a6c2f098f0aeb2a7b42a + languageName: node + linkType: hard + +"@contentful/f36-pagination@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-pagination@npm:4.26.0" + dependencies: + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-forms": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/f36-typography": ^4.26.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + checksum: fd413d0ec7a9524dd1723a81c602e26c5ec51e900f506ca816950c3a2549d276a0b32b7f136c461ebac4a7190b17c02cf96b284628bb9697cd65c4a4095f2d95 + languageName: node + linkType: hard + +"@contentful/f36-pagination@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-pagination@npm:4.64.0" + dependencies: + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-forms": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 61724de7673593fec87a80cd30942b90f2f6e259fa35a2f899f09ea6375734e176ae7862c659ee7b52692fe5cff112c93120334e56a34a477a5a22f2b0c3b7a2 languageName: node linkType: hard -"@contentful/f36-pagination@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-pagination@npm:4.74.1" +"@contentful/f36-pill@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-pill@npm:4.26.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-forms": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 + "@contentful/f36-button": ^4.26.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-icons": ^4.23.2 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-tooltip": ^4.26.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 29126275814fc3bcdb673e31a5831e7e9576d7019321017260d029ac704dcd08dfdc8e1ee6cf3ddff2599815cc810ae86e553c404a2191a25f0dfd1e1084a3ba + checksum: 42fcc2e12b4044465f5127d7e0740af369c21f13f1604046a7933f4ff5371a6ea45a3224fbb0882641bb9c0b1f51ee1ed4a2d69d9ab4768e17a348217f07c836 languageName: node linkType: hard -"@contentful/f36-pill@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-pill@npm:4.74.1" +"@contentful/f36-pill@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-pill@npm:4.64.0" dependencies: - "@contentful/f36-button": ^4.74.1 - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-drag-handle": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-tooltip": ^4.74.1 + "@contentful/f36-button": ^4.64.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-drag-handle": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-tooltip": ^4.64.0 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: e9b4523160362a76606edbd4c75ee5060770b542b87988514ba73ce076836b31cc57de0bfb2a1790571f03d7fcf9eb6c9e2c798176c62c73aa8a0a237925a49b + checksum: ac24c44372356203d89bb8d34a5c0cd9fc722afa580666ef53ada92bd67cbb59db7ff005ecbcae2b31cb9eb1e16cd71b1bbe45c18901b122cae3e025d1a66004 languageName: node linkType: hard -"@contentful/f36-popover@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-popover@npm:4.74.1" +"@contentful/f36-popover@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-popover@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-utils": ^4.23.2 + "@popperjs/core": ^2.11.5 + emotion: ^10.0.17 + react-popper: ^2.3.0 + peerDependencies: + react: ">=16.8" + checksum: a38c7cc9a158d40540f109fabf12638b9ab0a79f97fc8fe76f0da8dd14bed797fecf35a2514b94e1897719c73447486cf3d3634a430ab7b0578fa13399602837 + languageName: node + linkType: hard + +"@contentful/f36-popover@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-popover@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 "@contentful/f36-utils": ^4.24.3 "@popperjs/core": ^2.11.5 emotion: ^10.0.17 @@ -5064,98 +9383,192 @@ __metadata: peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 00db909943456ba468079db34eb88bf392614360730cc961436522d4a28523d134a607655c700b21754a4bfefcb21dcc457562c3a41abd43086ce8c47f7dca43 + checksum: 4744810fc959f668df411c2c355d6f195bb0a7f4232d5cf732cd1766809bca8cc40b4efeb036e0db2f8b3bba23db668efd95e47403f13c57dc0749c2327e90b9 languageName: node linkType: hard -"@contentful/f36-skeleton@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-skeleton@npm:4.74.1" +"@contentful/f36-skeleton@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-skeleton@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-table": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-table": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 3f8359253eab2603fe5b5fd26385f46e7a7d93a78fda117662fac53921517432380a9fb33b87be3e33d870a45ad36a0067be07d89e8ee762ee2e99df805f170d + checksum: 1f9452308f9acabab2ba1d5fc085646ff4532d17ba031ac29b96675a823d2f53f25f13df905a19b28478f620054f39c739da2880e65b678b2caa26b79abcf95e languageName: node linkType: hard -"@contentful/f36-spinner@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-spinner@npm:4.74.1" +"@contentful/f36-skeleton@npm:^4.45.0, @contentful/f36-skeleton@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-skeleton@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-table": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 698c498c23cb342b629ed4030c29e798054c6a154ffa520bbbb2bd54bd2d7765afd40175f19cf37a3123bbb8cc8eee5ebb7b52445555b53b90c261957fd62893 + checksum: 4b904d7e75ebe9f6ca77586c26807d0132747f460c278edfe5171f7ed75e94cfe3807ec4b5f5bf3f614042bbed969e334b24cbf8b0f3798229a96197d4e34a86 languageName: node linkType: hard -"@contentful/f36-table@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-table@npm:4.74.1" +"@contentful/f36-spinner@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-spinner@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.1.0 - "@contentful/f36-typography": ^4.74.1 - "@contentful/f36-utils": ^4.24.3 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + checksum: 62fe1a6307752a15c3ec3d294c90b4f7358f0c81b2acce2eaf8dd3f5d67f4d769f7c4d81c2b85e26d42e24d8f548bce268c7dc452268f39a647a465c439a0a0d + languageName: node + linkType: hard + +"@contentful/f36-spinner@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-spinner@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 1eeab9778ee5fec7391251d37cbdccc2409f032a56502d7ebd2d7c31c5495b6c5f7e18729fab2c048950a727a2b73a5f9da1166bb2d114d08b967c2112b93bb3 + checksum: 969554b4c94d4020dbcfd335ec8dbca7291e92bd5a3fbc5d7dedb142057c3f632b5f59e4ed2ca1a49871c8f1c8926b72b4bea3c0b5fe811559da86b41cff737e languageName: node linkType: hard -"@contentful/f36-tabs@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-tabs@npm:4.74.1" +"@contentful/f36-table@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-table@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 28e94eb41fe9f8124cb359daf984abadbb5145d2df3c2f9c8cc99c3dc2f942709a4c68a368ef2b04713634010814ac914d27d55d90fad03acc843575efafbd21 + languageName: node + linkType: hard + +"@contentful/f36-table@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-table@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-icons": ^4.28.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/f36-typography": ^4.64.0 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: abf23880f48667257aa151382aa45047b526436d4ddd1d5b29a3b7156d2e3a7f51f437e9158fcb05d2b29e5981fcc90c6b1b0207a69089f212db7ea53a5590d7 + languageName: node + linkType: hard + +"@contentful/f36-tabs@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-tabs@npm:4.26.0" + dependencies: + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 "@radix-ui/react-tabs": ^1.0.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 1227f28978dc5c8e43966b1a0ea8b2242a6882ead61f7394e3141ac80fdf20a9049cd8587b48a75130be3cea66a07ad000761c7dd3cf03e31ef03417c5a07613 + checksum: cc7416d31d9fde3d3791399b781fb74c84e70bba740dcd58d69da2dbf0a2323e38c52cc2666f45056488a48cda5ea949634bdb2ab5743cc6452b269190320cc3 languageName: node linkType: hard -"@contentful/f36-text-link@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-text-link@npm:4.74.1" +"@contentful/f36-tabs@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-tabs@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + "@radix-ui/react-tabs": ^1.0.1 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: b42bfd65febbe44030296ffc0cc1114139dca9ac0a94cdd26aa1d8bc492910c0041084bb489126cb0425117dbc2b21a7e830c4c4af895d50ba4b8e156366f1d0 + checksum: 477327efcc6a8b58850b6b800cd3acd18a60088cc8ee1fbab3ca39f6732e842566fb475e9cbd320ad69785dc73c3a7bd0ab23fa050d369b715ee2788975d4c7e languageName: node linkType: hard -"@contentful/f36-tokens@npm:^4.0.0, @contentful/f36-tokens@npm:^4.0.1, @contentful/f36-tokens@npm:^4.0.5, @contentful/f36-tokens@npm:^4.1.0": - version: 4.1.0 - resolution: "@contentful/f36-tokens@npm:4.1.0" - checksum: dd867c33dd7f1ee5c1359ba8ad6cde99df34171a53fabb54811cb067184f3b5d4fcbb61d86cf0b9c70f1c2c66b4221379723aad80d4e4bba384a4f6543594e9a +"@contentful/f36-text-link@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-text-link@npm:4.26.0" + dependencies: + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + checksum: a06e818e44625606258352806014504046f36be77e9fb2aab3042beede0bc4ceb4dfcfba94cdc2969e22618bf5de8a904f47a511072cc9c668bac7873c5fdd4f + languageName: node + linkType: hard + +"@contentful/f36-text-link@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-text-link@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 4bc1cbe3f5b08b24c10262a771cbd0fa03b1f331c260da2f347e13abfb2364058e59e7807f26a2d402985e2eb4f6134b4bfaffd6c196e683755b5613271934d2 languageName: node linkType: hard -"@contentful/f36-tooltip@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-tooltip@npm:4.74.1" +"@contentful/f36-tokens@npm:^4.0.0, @contentful/f36-tokens@npm:^4.0.1": + version: 4.0.1 + resolution: "@contentful/f36-tokens@npm:4.0.1" + checksum: 51b7f51ca58423b624aa937ecf6dc1a68deff86ca8e6f9e4523dfac959c6383a6f271e7794d0ec2b818494ef823961e343ec5687acc9658ff1bef8917c3ba72b + languageName: node + linkType: hard + +"@contentful/f36-tokens@npm:^4.0.4": + version: 4.0.5 + resolution: "@contentful/f36-tokens@npm:4.0.5" + checksum: 99f4609cd3178d2b0c2389c210405dd06fea7d5a788f457e53684a21cf2dabac818a87a611df6fcec63e48371f72668af8d5fe99a51c681c087426d4008c0e3c + languageName: node + linkType: hard + +"@contentful/f36-tooltip@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-tooltip@npm:4.26.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/f36-utils": ^4.23.2 + "@popperjs/core": ^2.11.5 + csstype: ^3.1.1 + emotion: ^10.0.17 + react-popper: ^2.3.0 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 0b98c5aa4ed510188968c594f35541957ef2297e363b73abd9ce89cd70a6d1c69615466695d0e825110e44937478744349c259d5a9e6e16568bdb9af90983c69 + languageName: node + linkType: hard + +"@contentful/f36-tooltip@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-tooltip@npm:4.64.0" + dependencies: + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 "@contentful/f36-utils": ^4.24.3 "@popperjs/core": ^2.11.5 csstype: ^3.1.1 @@ -5164,26 +9577,39 @@ __metadata: peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 3112d2e37afdb7c073510ae0d63e4c6903e16aeecc20b6814dae3e792ba2116c01100cf6ca0e26dcc93538b59a00d0baa392a8af4e661af50b22caf10aa4f070 + checksum: 4756c272b2826f38575f71c69601cef14d981f35ac28a2b57e4b082763ec1ab31000a679a9c0965f56494b69413b2b3c5338051122230bff935e6e3d902c6287 + languageName: node + linkType: hard + +"@contentful/f36-typography@npm:^4.26.0": + version: 4.26.0 + resolution: "@contentful/f36-typography@npm:4.26.0" + dependencies: + "@contentful/f36-core": ^4.26.0 + "@contentful/f36-tokens": ^4.0.1 + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + checksum: eef3c86d1e91fe7383f39caa32569c8f2007411093a98139fe171ebc66f8d611485518d406afc06173f6a125852a70c671bd359654e1962995d7dfe71a559f8d languageName: node linkType: hard -"@contentful/f36-typography@npm:^4.74.1": - version: 4.74.1 - resolution: "@contentful/f36-typography@npm:4.74.1" +"@contentful/f36-typography@npm:^4.64.0": + version: 4.64.0 + resolution: "@contentful/f36-typography@npm:4.64.0" dependencies: - "@contentful/f36-core": ^4.74.1 - "@contentful/f36-tokens": ^4.1.0 + "@contentful/f36-core": ^4.64.0 + "@contentful/f36-tokens": ^4.0.4 "@contentful/f36-utils": ^4.24.3 emotion: ^10.0.17 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: b30e97df3d235f24a05b071d198d3aa7e8d4fb4982954b6a71862c51c53b372685154517d6acededc4f1eeb1dcb75d3ed628ca94640496098851d0cc5d0471a1 + checksum: 97ca33c46118d42b363067ac8f2e73419bdbce8cd8334cb88ba678e0e390b0825e851147b0d1dc4d2c05cb0847ed58cae0fd6331a3f92aaddd700b0dfe036342 languageName: node linkType: hard -"@contentful/f36-utils@npm:^4.23.2, @contentful/f36-utils@npm:^4.24.3": +"@contentful/f36-utils@npm:^4.19.0, @contentful/f36-utils@npm:^4.24.3": version: 4.24.3 resolution: "@contentful/f36-utils@npm:4.24.3" dependencies: @@ -5195,65 +9621,77 @@ __metadata: languageName: node linkType: hard +"@contentful/f36-utils@npm:^4.23.2": + version: 4.24.1 + resolution: "@contentful/f36-utils@npm:4.24.1" + dependencies: + emotion: ^10.0.17 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 31e9f0def987cbd0ec49c4b8117b6b05e454d80665d9b117fcd9faa9fe42a63ad2793e3bd207c0dedf82619bda1f4e04c7c8954e8b1669ec6033a3a4a1e938e6 + languageName: node + linkType: hard + "@contentful/field-editor-boolean@npm:^1.4.8": - version: 1.4.22 - resolution: "@contentful/field-editor-boolean@npm:1.4.22" + version: 1.4.8 + resolution: "@contentful/field-editor-boolean@npm:1.4.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 lodash: ^4.17.15 nanoid: ^3.1.3 peerDependencies: react: ">=16.8.0" - checksum: 3e29a8694a8b8faa5aee11fbb135ff6806752463b43e965c4909204323fa9d09787a4d180eea56dda66d1c6cecd7206db01e05311e973620aa349ce5ab97cc39 + checksum: 1ba2d1f36c38072c52128ae284273344ae732b1b75fa3096fbd7ba4252ccf3a50336dd6c37055100fb36c88c9ed0bdc9319ff3bb06d898a453eb645f9a7efa75 languageName: node linkType: hard "@contentful/field-editor-checkbox@npm:^1.4.8": - version: 1.4.22 - resolution: "@contentful/field-editor-checkbox@npm:1.4.22" + version: 1.4.8 + resolution: "@contentful/field-editor-checkbox@npm:1.4.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.3.23 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 75f733cb3ae76eb1ab31c7084356c6dc57b7b5ad4abeaa8f3b0988c795363215cd44e9cc2e892a6bb9801ff8f3db9b5d15087fd3619cdcc005097e86f4f0518e + checksum: d5a407173c8347447d073948c0d669f88518928a2695e4bdcdca28c21e371cec2cae56ac51b1c4e3b3a0ac6d11fb381bd9eff5e1bc3306829ee4847d16ac7175 languageName: node linkType: hard "@contentful/field-editor-date@npm:^1.6.8": - version: 1.6.22 - resolution: "@contentful/field-editor-date@npm:1.6.22" + version: 1.6.8 + resolution: "@contentful/field-editor-date@npm:1.6.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.34.1 + "@contentful/f36-tokens": ^4.0.1 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 moment: ^2.20.0 peerDependencies: react: ">=16.8.0" - checksum: 6d6219389256a4dde0f0ea509587111097502ad7db67ee5d61478921295e3037aa549084c4a1bf1c009c9b9cc1ca0987871fdf923a05048a15bd12941fe25de4 + checksum: 2de4b3b0620ea0b845ca2647f7e22f6840424711699c82d9f0b5b722efb41150fa6a908d32aa950e8f9063a41ccf5857e737c209e792f4d21ff777f8ae639751 languageName: node linkType: hard -"@contentful/field-editor-dropdown@npm:^1.4.8, @contentful/field-editor-dropdown@npm:^1.5.6": - version: 1.5.6 - resolution: "@contentful/field-editor-dropdown@npm:1.5.6" +"@contentful/field-editor-dropdown@npm:^1.4.8": + version: 1.4.8 + resolution: "@contentful/field-editor-dropdown@npm:1.4.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.0 lodash: ^4.17.15 nanoid: ^3.1.3 peerDependencies: react: ">=16.8.0" - checksum: 4d33f60825424a5979281a7f5f740d08828c20bee640924f60332c3fe2b6a871f701787f28b9dab6a9c6cf51a4b4b2a161f692274b63620d138df2e1724a4293 + checksum: 6e66cd2c8693d7216cc8f4e832a97df37cca31f9d50799acbf062fe9a3dfe9c140f317f8f665f0fabec10c0f97406d7937551e7a9e100c74596b50b64c6810a5 languageName: node linkType: hard @@ -5279,66 +9717,69 @@ __metadata: linkType: hard "@contentful/field-editor-json@npm:^3.3.12": - version: 3.3.27 - resolution: "@contentful/field-editor-json@npm:3.3.27" + version: 3.3.12 + resolution: "@contentful/field-editor-json@npm:3.3.12" dependencies: "@codemirror/lang-json": ^6.0.0 - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 - "@types/react-codemirror": 1.0.11 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 + "@types/deep-equal": 1.0.1 + "@types/react-codemirror": 1.0.3 "@uiw/react-codemirror": ^4.11.4 + deep-equal: 2.2.2 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: fa4de770ca9a72dd2003ef65fdcdd9a4b896ce3286b888227b58189fb2c35a8c072b9ac220640a058ee36e3ce2e3a54189019bf2779a707066a96641e2b1554d + checksum: 5edada61d8e266e260ecca3cd1c05fe881de89b4afef9e2fcec6745b24b78527d9376108ab5c94c668f01f02b9582bf91fc6e40d727ab61a446911620d077d62 languageName: node linkType: hard "@contentful/field-editor-list@npm:^1.4.8": - version: 1.4.22 - resolution: "@contentful/field-editor-list@npm:1.4.22" + version: 1.4.8 + resolution: "@contentful/field-editor-list@npm:1.4.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: cb0f6f088e460cd68a204663dad518b8df674aa4eafbe4a8a30ee41e2948faa7998f3ddeaa9550ccd93d34d20975f97e583c349114210bec25f52c790c96ea0e + checksum: 9a2b25a016322ecb268e8ea85fba13e986d572d43a6e555394880ef4d6cc48160a78746fea86885125188c16a90ae897edbbfa9c300895ff7eac31368e171d99 languageName: node linkType: hard "@contentful/field-editor-location@npm:^1.3.12": - version: 1.3.27 - resolution: "@contentful/field-editor-location@npm:1.3.27" + version: 1.3.12 + resolution: "@contentful/field-editor-location@npm:1.3.12" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 - "@types/google-map-react": 2.1.10 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 + "@types/google-map-react": 2.1.7 + deep-equal: 2.2.2 emotion: ^10.0.17 - google-map-react: 2.2.1 + google-map-react: 2.2.0 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 9f0a917bb610506f225cdd021761ff406b9439437f01d16b025d96f67eb61e1b6901696cda537a7c6dd33c57f94748da9bdb1845e82c015ea8ca709d72272405 + checksum: b7fc382da1d9dd408254bd243e5268487272d49261a4ae6bc6b35717a0782b52cec1408c66771ca4e346a4f14f463d12333be913616f68983703aac102495ebe languageName: node linkType: hard "@contentful/field-editor-markdown@npm:^1.5.9": - version: 1.6.6 - resolution: "@contentful/field-editor-markdown@npm:1.6.6" + version: 1.5.9 + resolution: "@contentful/field-editor-markdown@npm:1.5.9" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-icons": ^4.1.0 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 "@types/codemirror": 0.0.109 codemirror: ^5.65.11 - constate: ^3.3.2 + constate: ^3.2.0 emotion: ^10.0.17 lodash: ^4.17.15 react-markdown: ^8.0.7 @@ -5346,70 +9787,70 @@ __metadata: rehype-sanitize: ^6.0.0 remark-gfm: ^3.0.1 peerDependencies: - "@contentful/app-sdk": ^4.29.0 + "@contentful/app-sdk": ^4.17.1 react: ">=16.8.0" - checksum: d44f053b3e7fb013097412ef24d5da612784b7262eac5d98df51c081b56287f3add2fc418648bc56a86f6ce8246ce395c1624c6abca92fb0b1ab33a5a2ed03bc + checksum: 84b3f9862beca5708016d4efedf51798ccfcfdcee51ba5c44c9ed6a4e312e7f3c4d6506816f4c5e5aa85f0d3242b438cf1599b79c7b2b9c7f1f494a6caa6d860 languageName: node linkType: hard "@contentful/field-editor-multiple-line@npm:^1.3.10": - version: 1.3.24 - resolution: "@contentful/field-editor-multiple-line@npm:1.3.24" + version: 1.3.10 + resolution: "@contentful/field-editor-multiple-line@npm:1.3.10" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 37e0e965151ece315ed8ed4bd50bfa9334501fc999b91f31a36c90dcc06a0d263cbafc3662a8ae3cbee0a10dc5568a717cbd8a9ab5e8ecc7bd1ad971533db21c + checksum: 6cda45dfd197c6e2fc269d3d64ddf68c7824aa3ded2d118162ceeb398bc7697252e73371858f2729b1dd2d17a35349c50f874026b786fc3955934e582be91e46 languageName: node linkType: hard "@contentful/field-editor-number@npm:^1.3.10": - version: 1.3.25 - resolution: "@contentful/field-editor-number@npm:1.3.25" + version: 1.3.10 + resolution: "@contentful/field-editor-number@npm:1.3.10" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 peerDependencies: react: ">=16.8.0" - checksum: 0975aadb8ca095c610b488a5f078499acb33078ba49572c86b94d5e1dc179bd86aa0d8301d24f60a73ce2ea05455183a78c01c14694903c60709f2edad5f4c3c + checksum: 318aa97692959149e9de98a263077b6cc38e4011c02704d436f5a55a1354cf65c60e1617d1c2f8c3432e0ecef5f3e0d4ccedc9ec35e8d911220c0bb410f3a6c7 languageName: node linkType: hard "@contentful/field-editor-radio@npm:^1.4.8": - version: 1.5.6 - resolution: "@contentful/field-editor-radio@npm:1.5.6" + version: 1.4.8 + resolution: "@contentful/field-editor-radio@npm:1.4.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-dropdown": ^1.5.6 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-dropdown": ^1.4.8 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 lodash: ^4.17.15 nanoid: ^3.1.3 peerDependencies: react: ">=16.8.0" - checksum: 1a97c7cc95bc68c0b04b5305649dd748e9b2b511511f65325a1ee694668bc8b234e029c6bbc0248b940234a0a104148410bdde30405ff902f48fcfa086e67911 + checksum: a9d67fc15f542ed13531dbb2997f55d5caae9d769cde9ea6f97b77f5b818642558385ab64eb11a4b841a3f3001feb1f57ce3836a55fd1d6694bba13689077e3e languageName: node linkType: hard "@contentful/field-editor-rating@npm:^1.4.8": - version: 1.4.22 - resolution: "@contentful/field-editor-rating@npm:1.4.22" + version: 1.4.8 + resolution: "@contentful/field-editor-rating@npm:1.4.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: ae775057a32105a9497e040336136357a23ae144041c01717136934ebc611ddabb08d1c08bd99cb07acd2b2d86022348176586df571dd9937b7a03d1431f3fff + checksum: 002d1b369e9392c289ec47db379859b4c748a00b20ea79997e6b432356e1ad25d649d97c6726cc5a882a757dd548d905a79435e8b713e5a29bc3fd2b82f1ad7e languageName: node linkType: hard @@ -5443,61 +9884,64 @@ __metadata: languageName: node linkType: hard -"@contentful/field-editor-reference@npm:^5.27.1, @contentful/field-editor-reference@npm:^5.31.2": - version: 5.31.2 - resolution: "@contentful/field-editor-reference@npm:5.31.2" +"@contentful/field-editor-reference@npm:^5.27.1": + version: 5.27.1 + resolution: "@contentful/field-editor-reference@npm:5.27.1" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.60.0 + "@contentful/f36-icons": ^4.27.0 + "@contentful/f36-tokens": ^4.0.4 + "@contentful/field-editor-shared": ^1.4.8 "@contentful/mimetype": ^2.2.29 "@dnd-kit/core": ^6.0.8 - "@dnd-kit/modifiers": ^7.0.0 - "@dnd-kit/sortable": ^8.0.0 + "@dnd-kit/modifiers": ^6.0.1 + "@dnd-kit/sortable": ^7.0.2 "@tanstack/react-query": ^4.3.9 - constate: ^3.3.2 - contentful-management: ^11.35.1 + "@types/deep-equal": ^1.0.1 + constate: 3.2.0 + contentful-management: ^10.14.0 || ^11.0.0 + deep-equal: 2.2.2 emotion: ^10.0.17 lodash: ^4.17.15 moment: ^2.20.0 p-queue: ^4.0.0 react-intersection-observer: 9.4.0 + type-fest: 2.17.0 peerDependencies: - "@contentful/app-sdk": ^4.29.0 + "@contentful/app-sdk": ^4.17.1 react: ">=16.8.0" - checksum: 48873db9d2b25988f00dad38fe4a901c295c2f01857c355369c5195fdc6b3d6ad9773fd2968d5dec3d60813c2bcf78de0b5065e393aed16a4811f48aada663c9 + checksum: af7c245d8806880f6e80878c3d1226a99c1261ea92488a7b4f419ae2704e59ec17984d1cf58750b9e38d80f0422a7f4350297ba3dc6133b7e3c65e9b5a6367d7 languageName: node linkType: hard "@contentful/field-editor-rich-text@npm:^3.20.1": - version: 3.29.0 - resolution: "@contentful/field-editor-rich-text@npm:3.29.0" + version: 3.20.1 + resolution: "@contentful/field-editor-rich-text@npm:3.20.1" dependencies: - "@contentful/app-sdk": ^4.29.0 + "@contentful/app-sdk": ^4.21.1 "@contentful/contentful-slatejs-adapter": ^15.16.5 - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/f36-utils": ^4.24.3 - "@contentful/field-editor-reference": ^5.31.2 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.20.6 + "@contentful/f36-icons": ^4.1.1 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/f36-utils": ^4.19.0 + "@contentful/field-editor-reference": ^5.27.1 + "@contentful/field-editor-shared": ^1.4.8 "@contentful/rich-text-plain-text-renderer": ^16.0.4 - "@contentful/rich-text-types": 16.7.0 + "@contentful/rich-text-types": 16.3.0 "@popperjs/core": ^2.11.5 - "@udecode/plate-basic-marks": 36.0.0 - "@udecode/plate-break": 36.0.0 - "@udecode/plate-common": 36.5.9 - "@udecode/plate-core": 36.5.9 - "@udecode/plate-list": 36.0.0 - "@udecode/plate-paragraph": 36.0.0 - "@udecode/plate-reset-node": 36.0.0 - "@udecode/plate-select": 36.0.0 - "@udecode/plate-serializer-docx": 36.0.10 - "@udecode/plate-serializer-html": 36.0.0 - "@udecode/plate-table": 36.5.9 - "@udecode/plate-trailing-block": 36.0.0 - constate: ^3.3.2 + "@udecode/plate-basic-marks": 30.1.2 + "@udecode/plate-break": 30.1.2 + "@udecode/plate-common": 30.1.2 + "@udecode/plate-core": 30.1.2 + "@udecode/plate-list": 30.1.2 + "@udecode/plate-paragraph": 30.1.2 + "@udecode/plate-reset-node": 30.1.2 + "@udecode/plate-select": 30.1.2 + "@udecode/plate-serializer-docx": 30.1.2 + "@udecode/plate-serializer-html": 30.1.2 + "@udecode/plate-table": 30.1.2 + "@udecode/plate-trailing-block": 30.1.2 + constate: 3.2.0 fast-deep-equal: ^3.1.3 is-hotkey: ^0.2.0 is-plain-obj: ^3.0.0 @@ -5509,25 +9953,53 @@ __metadata: peerDependencies: react: ">=16.14.0" react-dom: ">=16.14.0" - checksum: bb8d8c2d2410a04429238a8a19ae682b4b7662cd9203e7e6ae6e7382a3a26e1ae8a58f046f36a02bf1a38a9d4bf12a8947916e568e0f1ea853a901db3d787e46 + checksum: e062d28beaecf3219ee06ddb1634b8a5dcc5088226b39fae8b88d82ce58ab96d09aacb345ad60eec3545f1b132aa0532526ede59fe0cb5d18a924873a3bb4800 languageName: node linkType: hard -"@contentful/field-editor-shared@npm:^1.1.5, @contentful/field-editor-shared@npm:^1.4.2, @contentful/field-editor-shared@npm:^1.4.8, @contentful/field-editor-shared@npm:^1.8.0": - version: 1.8.0 - resolution: "@contentful/field-editor-shared@npm:1.8.0" +"@contentful/field-editor-shared@npm:^1.1.5": + version: 1.1.5 + resolution: "@contentful/field-editor-shared@npm:1.1.5" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-note": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - contentful-management: ^11.35.1 + "@contentful/f36-note": ^4.2.8 + "@contentful/f36-tokens": ^4.0.0 + emotion: ^10.0.17 + lodash: ^4.17.15 + lodash-es: ^4.17.15 + peerDependencies: + "@contentful/app-sdk": ^4.2.0 + react: ">=16.8.0" + checksum: 6e245b659c4e1310e1aa8cf31b37053714e7424868001f768cdd4dfce2a3dc6c2e9ab584d6ee8a7ac92282b87e623a791096b869ec9b261c94df934571ec9059 + languageName: node + linkType: hard + +"@contentful/field-editor-shared@npm:^1.4.2": + version: 1.4.2 + resolution: "@contentful/field-editor-shared@npm:1.4.2" + dependencies: + "@contentful/f36-note": ^4.2.8 + "@contentful/f36-tokens": ^4.0.0 emotion: ^10.0.17 - fast-deep-equal: ^3.1.3 lodash: ^4.17.15 peerDependencies: - "@contentful/app-sdk": ^4.29.0 + "@contentful/app-sdk": ^4.17.1 react: ">=16.8.0" - checksum: 6481e8565d0b1398bfd6b840816d74b0a2e005cfdf908d8a05ca6ee6914f5248d9d8247b1bd144d3effdb90885dfd6797fc70ca26ccbeeff123c7cc911e30428 + checksum: 75f80c8188d0a9b6b216f3e9fdf81d2ad5f8a00e0d80e222f208ccabfd8472c27b8b6c1ad0298f0d6dbe224842c3d9e0005866d4fac562ee41250dd300c2e924 + languageName: node + linkType: hard + +"@contentful/field-editor-shared@npm:^1.4.8": + version: 1.4.8 + resolution: "@contentful/field-editor-shared@npm:1.4.8" + dependencies: + "@contentful/f36-note": ^4.2.8 + "@contentful/f36-tokens": ^4.0.0 + emotion: ^10.0.17 + lodash: ^4.17.15 + peerDependencies: + "@contentful/app-sdk": ^4.17.1 + react: ">=16.8.0" + checksum: 941c00b00fce075f4da8d33436312daad4e9891fb83c1aeeeb959cc7557a9936b7556deeb68e5b4b80156402fb317de332dd3439a46c6a98327007314081b935 languageName: node linkType: hard @@ -5548,95 +10020,95 @@ __metadata: linkType: hard "@contentful/field-editor-single-line@npm:^1.3.10": - version: 1.4.9 - resolution: "@contentful/field-editor-single-line@npm:1.4.9" + version: 1.3.10 + resolution: "@contentful/field-editor-single-line@npm:1.3.10" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 637fad2556eb4d0f7da85f90ff225ef5f7be5eed43d43755ad8be36aa358f8d480659e5dc62dff4dcb326ce512a6d704b27acbece240e842496bc38273ef474f + checksum: 15f17ea01fb0facd7c211ac54720296c3d9405269b4af4c5b6117353e5103ef0471f90ced27b657d5f77548d7cdf3f82d9a3346709158f412bef1b0724fa1671 languageName: node linkType: hard "@contentful/field-editor-slug@npm:^1.4.8": - version: 1.5.8 - resolution: "@contentful/field-editor-slug@npm:1.5.8" + version: 1.4.8 + resolution: "@contentful/field-editor-slug@npm:1.4.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-icons": ^4.1.0 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 "@types/speakingurl": ^13.0.2 emotion: ^10.0.17 lodash: ^4.17.15 - speakingurl: ^14.0.1 - use-debounce: ^10.0.0 + speakingurl: ^13.0.0 + use-debounce: ^7.0.0 peerDependencies: - "@contentful/app-sdk": ^4.29.0 + "@contentful/app-sdk": ^4.17.1 react: ">=16.8.0" - checksum: 6f9feabbb72de60c5abc09228dd345e42c72312d1a16ccc427e4868e8e6cacf6774e26ab9ed4e56e9a705c19c1e4c97c209f034ae966f0717c1005c84cd99115 + checksum: cb8c5d295e3d9a13ed24c4a8c889826b92cf135f618d2026e8deb036dd58a6aba70f24bf382b2eab2e815232f368f1d6499c0f8c388c2da3a4b561e8b10e3338 languageName: node linkType: hard "@contentful/field-editor-tags@npm:^1.4.8": - version: 1.4.24 - resolution: "@contentful/field-editor-tags@npm:1.4.24" + version: 1.4.8 + resolution: "@contentful/field-editor-tags@npm:1.4.8" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-icons": ^4.1.0 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 "@dnd-kit/core": ^6.0.8 - "@dnd-kit/modifiers": ^7.0.0 - "@dnd-kit/sortable": ^8.0.0 + "@dnd-kit/modifiers": ^6.0.1 + "@dnd-kit/sortable": ^7.0.2 emotion: ^10.0.0 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: e92772e3f3065a83fd7b2dede7e2ba33d15841b98ec2628259a33510d1bfeee99d6422532c08f7c7637fa79bfd82d7af6f37558c5b831ee20783ecca0be09a3a + checksum: 5f586701a6fcfabf0fd6fd990221c820048fe603f5afedc95a154d902146f93835684b012ef30deaee7fdd51206c4d623a7a4f495794f7870885397488a22cf3 languageName: node linkType: hard "@contentful/field-editor-url@npm:^1.3.10": - version: 1.3.24 - resolution: "@contentful/field-editor-url@npm:1.3.24" + version: 1.3.10 + resolution: "@contentful/field-editor-url@npm:1.3.10" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 lodash: ^4.17.15 peerDependencies: react: ">=16.8.0" - checksum: 474a22ddba224d11aaf292d9b11cbfe307b66c101f8adfc68b24b09083c4316ec699ab5901d837d2570840a82860f657030767c96d499f860a6358d20ddbb0de + checksum: a31be8cb5af8e9a8cbc5bd96e35035555ffa5f0797d63be1f8b3c50d218cbbb8506c99744756d004f696ceb4b45f05849a614bfce36bc664fff837c31fb66edd languageName: node linkType: hard "@contentful/field-editor-validation-errors@npm:^1.3.10": - version: 1.3.24 - resolution: "@contentful/field-editor-validation-errors@npm:1.3.24" + version: 1.3.10 + resolution: "@contentful/field-editor-validation-errors@npm:1.3.10" dependencies: - "@contentful/f36-components": ^4.70.0 - "@contentful/f36-icons": ^4.29.0 - "@contentful/f36-tokens": ^4.0.5 - "@contentful/field-editor-shared": ^1.8.0 + "@contentful/f36-components": ^4.0.27 + "@contentful/f36-icons": ^4.1.0 + "@contentful/f36-tokens": ^4.0.0 + "@contentful/field-editor-shared": ^1.4.8 emotion: ^10.0.17 peerDependencies: react: ">=16.8.0" - checksum: e87ff0dbd482d2c2ecbaff6732b7e585ea9141b60d99dff77a81e52f3e8f7282022d9794a204c22828fff716b5ae100337a5682094dce613c230ea6291bf4a56 + checksum: 7174dc5750773d0a45c51b7d47631d27f883874c9ca215fa9d72b938e62f3881f2abba48717581411000da0bdf0dd57690a88ed68c990aa2f56265c0cd3f930d languageName: node linkType: hard "@contentful/forma-36-fcss@npm:^0.3.1": - version: 0.3.5 - resolution: "@contentful/forma-36-fcss@npm:0.3.5" + version: 0.3.1 + resolution: "@contentful/forma-36-fcss@npm:0.3.1" dependencies: - "@contentful/forma-36-tokens": ^0.11.2 - checksum: 3449528e7db0ec393ebb5aa6d9345e2e1ffbe33aabd40a199cd4e7bd75b1f81396614a9cfde8bdd86b9259fb83160472e763aa718006045f22609cba1b2fd96f + "@contentful/forma-36-tokens": ^0.10.1 + checksum: 331588ea76950e6689621fb7e7bcbeb01f8da6f027ede3108563743a66ee80e93c0f2d3fe94ef4aa806e807dbd1280230bb30c75aaf351778571b9a087584090 languageName: node linkType: hard @@ -5664,27 +10136,13 @@ __metadata: languageName: node linkType: hard -"@contentful/forma-36-tokens@npm:0.10.1": +"@contentful/forma-36-tokens@npm:0.10.1, @contentful/forma-36-tokens@npm:^0.10.1": version: 0.10.1 resolution: "@contentful/forma-36-tokens@npm:0.10.1" checksum: f5d0da85c8737e23ba56b47a7c95a18459df7f8219f42371526cca7e598dc3c3048186e50513ba692412915307e52a49673b269e794c0b24bc41334cd950a921 languageName: node linkType: hard -"@contentful/forma-36-tokens@npm:^0.10.1": - version: 0.10.2 - resolution: "@contentful/forma-36-tokens@npm:0.10.2" - checksum: 6e409ac535de212616fe12b3b1fd939a2ccc892b3d71c977f87ab327ce3834b0838608ad38db56821843d18a917765c34b1c3aa99ed2555988ef7b5fcdb7d392 - languageName: node - linkType: hard - -"@contentful/forma-36-tokens@npm:^0.11.2": - version: 0.11.2 - resolution: "@contentful/forma-36-tokens@npm:0.11.2" - checksum: e7047e4030021c7be4362a8402bc6d399886592c27fd96ef0fabbf9cd2a6e5d386ff1ee1c112c9e56ce48683012a5352723cb966650fca9e19ffb2b7fd8568f4 - languageName: node - linkType: hard - "@contentful/mimetype@npm:^1.4.0": version: 1.4.45 resolution: "@contentful/mimetype@npm:1.4.45" @@ -5695,11 +10153,11 @@ __metadata: linkType: hard "@contentful/mimetype@npm:^2.2.29": - version: 2.4.1 - resolution: "@contentful/mimetype@npm:2.4.1" + version: 2.3.0 + resolution: "@contentful/mimetype@npm:2.3.0" dependencies: lodash: ^4.17.20 - checksum: d2a133980be10a5d9e022221a49a0683c9d60965052bd03279d3530be5abc6ecf9353eb93ce503e45d90892d7f4d7ad0cbe6be0bd5737d85e526f4a85bdb85c4 + checksum: 3e3ebe550d92a4cb1c05e4fd617ae4fbe39c30aaba8a6cc8cc101768a981727bc65c149c9dd5a4a866d215942db8d15d4ce954367517474e845e9f92a9537d8c languageName: node linkType: hard @@ -5762,11 +10220,11 @@ __metadata: linkType: hard "@contentful/rich-text-plain-text-renderer@npm:^16.0.4": - version: 16.2.10 - resolution: "@contentful/rich-text-plain-text-renderer@npm:16.2.10" + version: 16.0.13 + resolution: "@contentful/rich-text-plain-text-renderer@npm:16.0.13" dependencies: - "@contentful/rich-text-types": ^16.8.5 - checksum: 9be244bdfe7f717c173ef447441cb4afd77ab2421805f03035e5139b003719a5f71b197ab0da8c234920e8eb3e87119486a2510afe31d244fc823b21cb87ae32 + "@contentful/rich-text-types": ^16.3.5 + checksum: 91ab01f1fd840c480334abb930b0193193b1152ef15a9acffe6fde1c8ae42bf9102a01be12f8d54db6dc70c9c99e75cbfb85653604d33fe2616bf58c5417db2d languageName: node linkType: hard @@ -5782,31 +10240,31 @@ __metadata: languageName: node linkType: hard -"@contentful/rich-text-types@npm:16.2.0": +"@contentful/rich-text-types@npm:16.2.0, @contentful/rich-text-types@npm:^16.2.0": version: 16.2.0 resolution: "@contentful/rich-text-types@npm:16.2.0" checksum: ec9390201e7e7c1419b61efee12845169665b336fe866132515f61ed7ab6753a997d1336b13cb2962eb48db01deef4a5a035e929344eec41f1b58227d78ecff9 languageName: node linkType: hard -"@contentful/rich-text-types@npm:16.7.0": - version: 16.7.0 - resolution: "@contentful/rich-text-types@npm:16.7.0" - checksum: 70e1c98a00e802e9d49cb1fa1f743470ac15882c5f7663547bb649111dfe9bc1659505677bfbc0bde33033bf1dd7d187bb59db435222bb93d4505cdb6619c941 +"@contentful/rich-text-types@npm:16.3.0": + version: 16.3.0 + resolution: "@contentful/rich-text-types@npm:16.3.0" + checksum: 86d5a0bcc84804beb750d94cd9ed9a590c3811bf57e10e6c4b25403bbdb85c8a9bc6d336fe98e561b252c5010527398bd21c6548ffdc289bce9e01898bcdc59c languageName: node linkType: hard "@contentful/rich-text-types@npm:^15.12.1": - version: 15.15.1 - resolution: "@contentful/rich-text-types@npm:15.15.1" - checksum: a8391e03a794fb72358e1ccc41e437c17581145e375859d6299c9132813fc3bdfeae9e558720a51857d3ab58588f13b09ff7a5a9d6ba0d2f822d4142b2ccf3ab + version: 15.12.1 + resolution: "@contentful/rich-text-types@npm:15.12.1" + checksum: 2a0f7b2e39f04dcf00847a61b8497fe8849033180adc76102aed1fa84db9ce0523c9b2321b7949cfa2c0ed7b698d727c44d6be3cd720d5687aeff147e1db085b languageName: node linkType: hard -"@contentful/rich-text-types@npm:^16.2.0, @contentful/rich-text-types@npm:^16.3.0, @contentful/rich-text-types@npm:^16.6.1, @contentful/rich-text-types@npm:^16.8.5": - version: 16.8.5 - resolution: "@contentful/rich-text-types@npm:16.8.5" - checksum: 60f8bd00ccd87d5d2199b5c2e93aa3638b291e66bd69d4bca3fc85e3f820e96c5ab6b8d9362678424aff06f83e41dfef76c4e49a12bf766d915a9a493cd24dbb +"@contentful/rich-text-types@npm:^16.3.0, @contentful/rich-text-types@npm:^16.3.5": + version: 16.3.5 + resolution: "@contentful/rich-text-types@npm:16.3.5" + checksum: 51e438c868ae4dcae8e33a65ca9a5f025e2c208951c279663de1d2278e20ced4b6213fa9ae8306cc9c49b1bdbf62477e11542b78e6657c7dab98af3d7dbc00c0 languageName: node linkType: hard @@ -5820,8 +10278,8 @@ __metadata: linkType: hard "@cypress/request@npm:^3.0.0": - version: 3.0.5 - resolution: "@cypress/request@npm:3.0.5" + version: 3.0.1 + resolution: "@cypress/request@npm:3.0.1" dependencies: aws-sign2: ~0.7.0 aws4: ^1.8.0 @@ -5829,19 +10287,19 @@ __metadata: combined-stream: ~1.0.6 extend: ~3.0.2 forever-agent: ~0.6.1 - form-data: ~4.0.0 - http-signature: ~1.4.0 + form-data: ~2.3.2 + http-signature: ~1.3.6 is-typedarray: ~1.0.0 isstream: ~0.1.2 json-stringify-safe: ~5.0.1 mime-types: ~2.1.19 performance-now: ^2.1.0 - qs: 6.13.0 + qs: 6.10.4 safe-buffer: ^5.1.2 tough-cookie: ^4.1.3 tunnel-agent: ^0.6.0 uuid: ^8.3.2 - checksum: 7272c2c7c24c230bb976765e0ff18528f8fe995fdbe9ddf85ddec3ec12f744729130a17ad41fb91c99e733b8a1c07ce5d2553e115c66ac6e84c039117dd29680 + checksum: 7175522ebdbe30e3c37973e204c437c23ce659e58d5939466615bddcd58d778f3a8ea40f087b965ae8b8138ea8d102b729c6eb18c6324f121f3778f4a2e8e727 languageName: node linkType: hard @@ -5856,13 +10314,13 @@ __metadata: linkType: hard "@dabh/diagnostics@npm:^2.0.2": - version: 2.0.3 - resolution: "@dabh/diagnostics@npm:2.0.3" + version: 2.0.2 + resolution: "@dabh/diagnostics@npm:2.0.2" dependencies: colorspace: 1.1.x enabled: 2.0.x kuler: ^2.0.0 - checksum: 4879600c55c8315a0fb85fbb19057bad1adc08f0a080a8cb4e2b63f723c379bfc4283b68123a2b078d367b327dd8df12fcb27464efe791addc0a48b9df6d79a1 + checksum: 4d95cc31249a840b6cc3dba3dc4345a9295265413456068a0d07b69fa0ec6a5a5bc2c39e56ec04c6509ac1f4d9c17fc80baaaddd5caa1abcdd3aaeffe2b63cec languageName: node linkType: hard @@ -5963,9 +10421,9 @@ __metadata: linkType: hard "@datadog/sketches-js@npm:^2.1.0": - version: 2.1.1 - resolution: "@datadog/sketches-js@npm:2.1.1" - checksum: 795170bb227af48fb54490fb5c252ae7a40aa088dc2cb7cf87c86fadc616b41fd3e35fd7e8418983396d72a9da6bf6259137e2a33c3d97e534eeb300185fd0c2 + version: 2.1.0 + resolution: "@datadog/sketches-js@npm:2.1.0" + checksum: 7980eb6a36a53c3c532f9712dfadae8fb7b626bf4e418bb7e252020e2e6cc5690e2c17057d0b462719364239df502d44487f8b50ac9c5c6923f006658e376131 languageName: node linkType: hard @@ -5976,10 +10434,10 @@ __metadata: languageName: node linkType: hard -"@discoveryjs/natural-compare@npm:^1.1.0": - version: 1.1.0 - resolution: "@discoveryjs/natural-compare@npm:1.1.0" - checksum: c9a965da2422efc74f6fd6feac5dfb858261a1bf0f54de6b14a3affe80d81d949d475f6959a54ca978fcda965e1933abb78840ddb03e690e59a27e06f77f1f2b +"@discoveryjs/natural-compare@npm:^1.0.0": + version: 1.0.0 + resolution: "@discoveryjs/natural-compare@npm:1.0.0" + checksum: 5100d7b94811ad33b2c153cd8e3e5099817854c5aa700dd58ceb813224d5484ae698f2e841998ef0cad4c0ad09b094bab31745d7bbe3a84581957bb077e024c2 languageName: node linkType: hard @@ -6021,20 +10479,7 @@ __metadata: languageName: node linkType: hard -"@dnd-kit/modifiers@npm:^7.0.0": - version: 7.0.0 - resolution: "@dnd-kit/modifiers@npm:7.0.0" - dependencies: - "@dnd-kit/utilities": ^3.2.2 - tslib: ^2.0.0 - peerDependencies: - "@dnd-kit/core": ^6.1.0 - react: ">=16.8.0" - checksum: 176f76a552a2692a205f7fe647c836aa7ded7f0fdc3370407f3633c153139fe838cb85e59cbc3b156377cc8fe3fb7b72af15b97ed3de15cec904eae35f0c36e6 - languageName: node - linkType: hard - -"@dnd-kit/sortable@npm:8.0.0, @dnd-kit/sortable@npm:^8.0.0": +"@dnd-kit/sortable@npm:8.0.0": version: 8.0.0 resolution: "@dnd-kit/sortable@npm:8.0.0" dependencies: @@ -6093,22 +10538,22 @@ __metadata: languageName: node linkType: hard -"@emotion/babel-plugin@npm:^11.12.0": - version: 11.12.0 - resolution: "@emotion/babel-plugin@npm:11.12.0" +"@emotion/babel-plugin@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/babel-plugin@npm:11.11.0" dependencies: "@babel/helper-module-imports": ^7.16.7 "@babel/runtime": ^7.18.3 - "@emotion/hash": ^0.9.2 - "@emotion/memoize": ^0.9.0 - "@emotion/serialize": ^1.2.0 + "@emotion/hash": ^0.9.1 + "@emotion/memoize": ^0.8.1 + "@emotion/serialize": ^1.1.2 babel-plugin-macros: ^3.1.0 convert-source-map: ^1.5.0 escape-string-regexp: ^4.0.0 find-root: ^1.1.0 source-map: ^0.5.7 stylis: 4.2.0 - checksum: b5d4b3dfe97e6763794a42b5c3a027a560caa1aa6dcaf05c18e5969691368dd08245c077bad7397dcc720b53d29caeaaec1888121e68cfd9ab02ff52f6fef662 + checksum: 6b363edccc10290f7a23242c06f88e451b5feb2ab94152b18bb8883033db5934fb0e421e2d67d09907c13837c21218a3ac28c51707778a54d6cd3706c0c2f3f9 languageName: node linkType: hard @@ -6124,16 +10569,16 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.13.0, @emotion/cache@npm:^11.4.0": - version: 11.13.1 - resolution: "@emotion/cache@npm:11.13.1" +"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.4.0": + version: 11.11.0 + resolution: "@emotion/cache@npm:11.11.0" dependencies: - "@emotion/memoize": ^0.9.0 - "@emotion/sheet": ^1.4.0 - "@emotion/utils": ^1.4.0 - "@emotion/weak-memoize": ^0.4.0 + "@emotion/memoize": ^0.8.1 + "@emotion/sheet": ^1.2.2 + "@emotion/utils": ^1.2.1 + "@emotion/weak-memoize": ^0.3.1 stylis: 4.2.0 - checksum: 94b161786a03a08a1e30257478fad9a9be1ac8585ddca0c6410d7411fd474fc8b0d6d1167d7d15bdb012d1fd8a1220ac2bbc79501ad9b292b83c17da0874d7de + checksum: 8eb1dc22beaa20c21a2e04c284d5a2630a018a9d51fb190e52de348c8d27f4e8ca4bbab003d68b4f6cd9cc1c569ca747a997797e0f76d6c734a660dc29decf08 languageName: node linkType: hard @@ -6171,10 +10616,10 @@ __metadata: languageName: node linkType: hard -"@emotion/hash@npm:^0.9.0, @emotion/hash@npm:^0.9.2": - version: 0.9.2 - resolution: "@emotion/hash@npm:0.9.2" - checksum: 379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387 +"@emotion/hash@npm:^0.9.1": + version: 0.9.1 + resolution: "@emotion/hash@npm:0.9.1" + checksum: 716e17e48bf9047bf9383982c071de49f2615310fb4e986738931776f5a823bc1f29c84501abe0d3df91a3803c80122d24e28b57351bca9e01356ebb33d89876 languageName: node linkType: hard @@ -6187,21 +10632,21 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^0.8.2": - version: 0.8.8 - resolution: "@emotion/is-prop-valid@npm:0.8.8" +"@emotion/is-prop-valid@npm:^1.1.0": + version: 1.1.2 + resolution: "@emotion/is-prop-valid@npm:1.1.2" dependencies: - "@emotion/memoize": 0.7.4 - checksum: bb7ec6d48c572c540e24e47cc94fc2f8dec2d6a342ae97bc9c8b6388d9b8d283862672172a1bb62d335c02662afe6291e10c71e9b8642664a8b43416cdceffac + "@emotion/memoize": ^0.7.4 + checksum: 58b1f2d429a589f8f5bc2c33a8732cbb7bbcb17131a103511ef9a94ac754d7eeb53d627f947da480cd977f9d419fd92e244991680292f3287204159652745707 languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0": - version: 1.3.1 - resolution: "@emotion/is-prop-valid@npm:1.3.1" +"@emotion/is-prop-valid@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/is-prop-valid@npm:1.2.0" dependencies: - "@emotion/memoize": ^0.9.0 - checksum: fe6549d54f389e1a17cb02d832af7ee85fb6ea126fc18d02ca47216e8ff19332c1983f4a0ba68602cfcd3b325ffd4ebf0b2d0c6270f1e7e6fe3fca4ba7741e1a + "@emotion/memoize": ^0.8.0 + checksum: cc7a19850a4c5b24f1514665289442c8c641709e6f7711067ad550e05df331da0692a16148e85eda6f47e31b3261b64d74c5e25194d053223be16231f969d633 languageName: node linkType: hard @@ -6212,6 +10657,20 @@ __metadata: languageName: node linkType: hard +"@emotion/memoize@npm:^0.7.4": + version: 0.7.5 + resolution: "@emotion/memoize@npm:0.7.5" + checksum: 83da8d4a7649a92c72f960817692bc6be13cc13e107b9f7e878d63766525ed4402881bfeb3cda61145c050281e7e260f114a0a2870515527346f2ef896b915b3 + languageName: node + linkType: hard + +"@emotion/memoize@npm:^0.8.0": + version: 0.8.0 + resolution: "@emotion/memoize@npm:0.8.0" + checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 + languageName: node + linkType: hard + "@emotion/memoize@npm:^0.8.1": version: 0.8.1 resolution: "@emotion/memoize@npm:0.8.1" @@ -6219,31 +10678,24 @@ __metadata: languageName: node linkType: hard -"@emotion/memoize@npm:^0.9.0": - version: 0.9.0 - resolution: "@emotion/memoize@npm:0.9.0" - checksum: 038132359397348e378c593a773b1148cd0cf0a2285ffd067a0f63447b945f5278860d9de718f906a74c7c940ba1783ac2ca18f1c06a307b01cc0e3944e783b1 - languageName: node - linkType: hard - "@emotion/react@npm:^11.8.1": - version: 11.13.3 - resolution: "@emotion/react@npm:11.13.3" + version: 11.11.1 + resolution: "@emotion/react@npm:11.11.1" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.12.0 - "@emotion/cache": ^11.13.0 - "@emotion/serialize": ^1.3.1 - "@emotion/use-insertion-effect-with-fallbacks": ^1.1.0 - "@emotion/utils": ^1.4.0 - "@emotion/weak-memoize": ^0.4.0 + "@emotion/babel-plugin": ^11.11.0 + "@emotion/cache": ^11.11.0 + "@emotion/serialize": ^1.1.2 + "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 + "@emotion/utils": ^1.2.1 + "@emotion/weak-memoize": ^0.3.1 hoist-non-react-statics: ^3.3.1 peerDependencies: react: ">=16.8.0" peerDependenciesMeta: "@types/react": optional: true - checksum: 0b58374bf28de914b49881f0060acfb908989869ebab63a2287773fc5e91a39f15552632b03d376c3e9835c5b4f23a5ebac8b0963b29af164d46c0a77ac928f0 + checksum: aec3c36650f5f0d3d4445ff44d73dd88712b1609645b6af3e6d08049cfbc51f1785fe13dea1a1d4ab1b0800d68f2339ab11e459687180362b1ef98863155aae5 languageName: node linkType: hard @@ -6260,16 +10712,16 @@ __metadata: languageName: node linkType: hard -"@emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.1": - version: 1.3.2 - resolution: "@emotion/serialize@npm:1.3.2" +"@emotion/serialize@npm:^1.1.2": + version: 1.1.2 + resolution: "@emotion/serialize@npm:1.1.2" dependencies: - "@emotion/hash": ^0.9.2 - "@emotion/memoize": ^0.9.0 - "@emotion/unitless": ^0.10.0 - "@emotion/utils": ^1.4.1 + "@emotion/hash": ^0.9.1 + "@emotion/memoize": ^0.8.1 + "@emotion/unitless": ^0.8.1 + "@emotion/utils": ^1.2.1 csstype: ^3.0.2 - checksum: 8051bafe32459e1aecf716cdb66a22b090060806104cca89d4e664893b56878d3e9bb94a4657df9b7b3fd183700a9be72f7144c959ddcbd3cf7b330206919237 + checksum: 413c352e657f1b5e27ea6437b3ef7dcc3860669b7ae17fd5c18bfbd44e033af1acc56b64d252284a813ca4f3b3e1b0841c42d3fb08e02d2df56fd3cd63d72986 languageName: node linkType: hard @@ -6280,10 +10732,10 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.4.0": - version: 1.4.0 - resolution: "@emotion/sheet@npm:1.4.0" - checksum: eeb1212e3289db8e083e72e7e401cd6d1a84deece87e9ce184f7b96b9b5dbd6f070a89057255a6ff14d9865c3ce31f27c39248a053e4cdd875540359042586b4 +"@emotion/sheet@npm:^1.2.2": + version: 1.2.2 + resolution: "@emotion/sheet@npm:1.2.2" + checksum: d973273c9c15f1c291ca2269728bf044bd3e92a67bca87943fa9ec6c3cd2b034f9a6bfe95ef1b5d983351d128c75b547b43ff196a00a3875f7e1d269793cecfe languageName: node linkType: hard @@ -6301,26 +10753,19 @@ __metadata: languageName: node linkType: hard -"@emotion/unitless@npm:0.8.1": +"@emotion/unitless@npm:0.8.1, @emotion/unitless@npm:^0.8.1": version: 0.8.1 resolution: "@emotion/unitless@npm:0.8.1" checksum: 385e21d184d27853bb350999471f00e1429fa4e83182f46cd2c164985999d9b46d558dc8b9cc89975cb337831ce50c31ac2f33b15502e85c299892e67e7b4a88 languageName: node linkType: hard -"@emotion/unitless@npm:^0.10.0": - version: 0.10.0 - resolution: "@emotion/unitless@npm:0.10.0" - checksum: d79346df31a933e6d33518e92636afeb603ce043f3857d0a39a2ac78a09ef0be8bedff40130930cb25df1beeee12d96ee38613963886fa377c681a89970b787c - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0, @emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": - version: 1.1.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0" +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0, @emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": + version: 1.0.1 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" peerDependencies: react: ">=16.8.0" - checksum: 63665191773b27de66807c53b90091ef0d10d5161381f62726cfceecfe1d8c944f18594b8021805fc81575b64246fd5ab9c75d60efabec92f940c1c410530949 + checksum: 700b6e5bbb37a9231f203bb3af11295eed01d73b2293abece0bc2a2237015e944d7b5114d4887ad9a79776504aa51ed2a8b0ddbc117c54495dd01a6b22f93786 languageName: node linkType: hard @@ -6331,10 +10776,10 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": - version: 1.4.1 - resolution: "@emotion/utils@npm:1.4.1" - checksum: 088f6844c735981f53c84a76101cf261422301e7895cb37fea6a47e7950247ffa8ca174ca2a15d9b29a47f0fa831b432017ca7683bccbb5cfd78dda82743d856 +"@emotion/utils@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/utils@npm:1.2.1" + checksum: e0b44be0705b56b079c55faff93952150be69e79b660ae70ddd5b6e09fc40eb1319654315a9f34bb479d7f4ec94be6068c061abbb9e18b9778ae180ad5d97c73 languageName: node linkType: hard @@ -6345,24 +10790,10 @@ __metadata: languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.4.0": - version: 0.4.0 - resolution: "@emotion/weak-memoize@npm:0.4.0" - checksum: db5da0e89bd752c78b6bd65a1e56231f0abebe2f71c0bd8fc47dff96408f7065b02e214080f99924f6a3bfe7ee15afc48dad999d76df86b39b16e513f7a94f52 - languageName: node - linkType: hard - -"@esbuild/aix-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/aix-ppc64@npm:0.21.5" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/aix-ppc64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/aix-ppc64@npm:0.23.1" - conditions: os=aix & cpu=ppc64 +"@emotion/weak-memoize@npm:^0.3.1": + version: 0.3.1 + resolution: "@emotion/weak-memoize@npm:0.3.1" + checksum: b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 languageName: node linkType: hard @@ -6380,20 +10811,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm64@npm:0.21.5" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-arm64@npm:0.23.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-arm@npm:0.16.17" @@ -6408,20 +10825,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm@npm:0.21.5" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-arm@npm:0.23.1" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-x64@npm:0.16.17" @@ -6436,20 +10839,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-x64@npm:0.21.5" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-x64@npm:0.23.1" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/darwin-arm64@npm:0.16.17" @@ -6464,20 +10853,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-arm64@npm:0.21.5" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/darwin-arm64@npm:0.23.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/darwin-x64@npm:0.16.17" @@ -6492,20 +10867,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-x64@npm:0.21.5" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/darwin-x64@npm:0.23.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/freebsd-arm64@npm:0.16.17" @@ -6520,20 +10881,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-arm64@npm:0.21.5" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/freebsd-arm64@npm:0.23.1" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/freebsd-x64@npm:0.16.17" @@ -6548,20 +10895,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-x64@npm:0.21.5" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/freebsd-x64@npm:0.23.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-arm64@npm:0.16.17" @@ -6576,20 +10909,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm64@npm:0.21.5" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-arm64@npm:0.23.1" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-arm@npm:0.16.17" @@ -6604,20 +10923,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm@npm:0.21.5" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-arm@npm:0.23.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-ia32@npm:0.16.17" @@ -6632,20 +10937,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ia32@npm:0.21.5" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-ia32@npm:0.23.1" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-loong64@npm:0.16.17" @@ -6660,20 +10951,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-loong64@npm:0.21.5" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-loong64@npm:0.23.1" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-mips64el@npm:0.16.17" @@ -6688,20 +10965,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-mips64el@npm:0.21.5" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-mips64el@npm:0.23.1" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-ppc64@npm:0.16.17" @@ -6716,20 +10979,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ppc64@npm:0.21.5" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-ppc64@npm:0.23.1" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-riscv64@npm:0.16.17" @@ -6744,20 +10993,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-riscv64@npm:0.21.5" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-riscv64@npm:0.23.1" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-s390x@npm:0.16.17" @@ -6772,20 +11007,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-s390x@npm:0.21.5" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-s390x@npm:0.23.1" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-x64@npm:0.16.17" @@ -6800,20 +11021,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-x64@npm:0.21.5" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-x64@npm:0.23.1" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/netbsd-x64@npm:0.16.17" @@ -6828,27 +11035,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/netbsd-x64@npm:0.21.5" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/netbsd-x64@npm:0.23.1" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/openbsd-arm64@npm:0.23.1" - conditions: os=openbsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/openbsd-x64@npm:0.16.17" @@ -6863,20 +11049,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/openbsd-x64@npm:0.21.5" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/openbsd-x64@npm:0.23.1" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/sunos-x64@npm:0.16.17" @@ -6891,20 +11063,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/sunos-x64@npm:0.21.5" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/sunos-x64@npm:0.23.1" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-arm64@npm:0.16.17" @@ -6919,20 +11077,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-arm64@npm:0.21.5" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-arm64@npm:0.23.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-ia32@npm:0.16.17" @@ -6947,20 +11091,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-ia32@npm:0.21.5" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-ia32@npm:0.23.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-x64@npm:0.16.17" @@ -6975,20 +11105,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-x64@npm:0.21.5" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-x64@npm:0.23.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -7000,10 +11116,17 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.11.1 - resolution: "@eslint-community/regexpp@npm:4.11.1" - checksum: 6986685529d30e33c2640973c3d8e7ddd31bef3cc8cb10ad54ddc1dea12680779a2c23a45562aa1462c488137a3570e672d122fac7da22d82294382d915cec70 +"@eslint-community/regexpp@npm:^4.10.0": + version: 4.10.1 + resolution: "@eslint-community/regexpp@npm:4.10.1" + checksum: 1e04bc366fb8152c9266258cd25e3fded102f1d212a9476928e3cb98c48be645df6d676728d1c596053992fb9134879fe0de23c9460035b342cceb22d3af1776 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.6.1": + version: 4.8.0 + resolution: "@eslint-community/regexpp@npm:4.8.0" + checksum: 601e6d033d556e98e8c929905bef335f20d7389762812df4d0f709d9b4d2631610dda975fb272e23b5b68e24a163b3851b114c8080a0a19fb4c141a1eff6305b languageName: node linkType: hard @@ -7032,18 +11155,25 @@ __metadata: linkType: hard "@exodus/schemasafe@npm:^1.0.0-rc.2": - version: 1.3.0 - resolution: "@exodus/schemasafe@npm:1.3.0" - checksum: 5fa00ce28d142dc39e07d8080e7967e77125bfdf59af31975b7e6395ca5265e2a8540ab7d8cc89abf8c0a483560f8dbb2994761115c995d2c473ab4b6ec74dba + version: 1.0.0-rc.3 + resolution: "@exodus/schemasafe@npm:1.0.0-rc.3" + checksum: 872a1c674e7d16f8eb66d92bde5111f0d1e4e1339e7373b326e4e7d2dc8ddcd4b8de26013b3e694dfd639bf94c5be20f2875891ac0d94543d096783efdd5bee9 languageName: node linkType: hard "@expo/bunyan@npm:^4.0.0": - version: 4.0.1 - resolution: "@expo/bunyan@npm:4.0.1" + version: 4.0.0 + resolution: "@expo/bunyan@npm:4.0.0" dependencies: + mv: ~2 + safe-json-stringify: ~1 uuid: ^8.0.0 - checksum: 7a503cf202ef26bd151ef31be63fdac113a27edd1e5703aee96326c3b7bea349e09e706a18854c251b313814a05673d5041eaea4c018667d9afa2c583d821af7 + dependenciesMeta: + mv: + optional: true + safe-json-stringify: + optional: true + checksum: dce0b66fde1c11f987bc31b9afd9b714c4295ba750780ee8861ab8a912b37a2b9dd2ab9c9fbf3a85f3adbe66c6cd85e45bc76fa37c98ee23a7db3ad24601c296 languageName: node linkType: hard @@ -7144,7 +11274,7 @@ __metadata: languageName: node linkType: hard -"@expo/config-plugins@npm:8.0.8": +"@expo/config-plugins@npm:8.0.8, @expo/config-plugins@npm:~8.0.8": version: 8.0.8 resolution: "@expo/config-plugins@npm:8.0.8" dependencies: @@ -7190,11 +11320,11 @@ __metadata: languageName: node linkType: hard -"@expo/config-plugins@npm:~8.0.8": - version: 8.0.10 - resolution: "@expo/config-plugins@npm:8.0.10" +"@expo/config-plugins@npm:~8.0.0": + version: 8.0.5 + resolution: "@expo/config-plugins@npm:8.0.5" dependencies: - "@expo/config-types": ^51.0.3 + "@expo/config-types": ^51.0.0-unreleased "@expo/json-file": ~8.3.0 "@expo/plist": ^0.1.0 "@expo/sdk-runtime-versions": ^1.0.0 @@ -7209,7 +11339,7 @@ __metadata: slugify: ^1.6.6 xcode: ^3.0.1 xml2js: 0.6.0 - checksum: 16dd818c6f52e5d0298e28a37b6fa3a6c3c5dd070c851642760f62a062058192a4b91f73e57cf9f5e1a3be4ffe9c48c46a965366756c108531b915f214dd2182 + checksum: 9d80d788a74b59cdc8c4528671dc7adce3e37d4105346a84e77c42ac24247268a27b5742eec5953cd5f7e04df2f463c0a8e1b108d15f3ffa062976abd21e349d languageName: node linkType: hard @@ -7220,10 +11350,10 @@ __metadata: languageName: node linkType: hard -"@expo/config-types@npm:^51.0.0-unreleased, @expo/config-types@npm:^51.0.3": - version: 51.0.3 - resolution: "@expo/config-types@npm:51.0.3" - checksum: c46def814a5e0d6c8358b9767a89f51239f4f1c3b4a5305ffcfa1a86e4360ac40de54a65f7c6e787be7656e4144c99a050e98b600a1edd3d6e8e20c83d8e107b +"@expo/config-types@npm:^51.0.0-unreleased": + version: 51.0.1 + resolution: "@expo/config-types@npm:51.0.1" + checksum: 9aac70b6713d621409c57922b927aa3933d53ffc4cb10856ccdd4adb76fc242e90aa0dd2d7505a096f31be54e7c060e11958ca69436df4266825b8b4313f2109 languageName: node linkType: hard @@ -7247,12 +11377,12 @@ __metadata: linkType: hard "@expo/config@npm:~9.0.0, @expo/config@npm:~9.0.0-beta.0": - version: 9.0.4 - resolution: "@expo/config@npm:9.0.4" + version: 9.0.2 + resolution: "@expo/config@npm:9.0.2" dependencies: "@babel/code-frame": ~7.10.4 - "@expo/config-plugins": ~8.0.8 - "@expo/config-types": ^51.0.3 + "@expo/config-plugins": ~8.0.0 + "@expo/config-types": ^51.0.0-unreleased "@expo/json-file": ^8.3.0 getenv: ^1.0.0 glob: 7.1.6 @@ -7261,27 +11391,28 @@ __metadata: semver: ^7.6.0 slugify: ^1.3.4 sucrase: 3.34.0 - checksum: a00b2690a1abbfd83f419c436dcff8590d1e8c8c0a598339ae30da57aedde49564e5bd5f71edf4d634ebe079c4008a64eb9850ee4cf69592a7506c71a36f3132 + checksum: 3f452fc4f1970e21bab2f4473e389c4c6cebf5b2b0a0ec884219c17422f12442945727cbef861951fe06909006348a445370c1cfa5d2b11027c44b626d3d9a39 languageName: node linkType: hard "@expo/devcert@npm:^1.0.0": - version: 1.1.4 - resolution: "@expo/devcert@npm:1.1.4" + version: 1.1.0 + resolution: "@expo/devcert@npm:1.1.0" dependencies: application-config-path: ^0.1.0 command-exists: ^1.2.4 debug: ^3.1.0 eol: ^0.9.1 get-port: ^3.2.0 - glob: ^10.4.2 - lodash: ^4.17.21 + glob: ^7.1.2 + lodash: ^4.17.4 mkdirp: ^0.5.1 password-prompt: ^1.0.4 + rimraf: ^2.6.2 sudo-prompt: ^8.2.0 tmp: ^0.0.33 tslib: ^2.4.0 - checksum: a6bb5ba18d1d4fe5ebfa096f8d332f14bbe8bb942bc3650debf89fb68b5637bd5b7b22f9b28d5971965436bf83d442e843ac7e0e1e7408cce6e575b55c830b6d + checksum: bb99996d7fc31c5269afbd9ab43066090ea986006d14c8c393165f813d90c21ff9fc40f16b247778a7026714c2a743ce6e8b0df25e135711e991fa0bbfb3555b languageName: node linkType: hard @@ -7338,17 +11469,6 @@ __metadata: languageName: node linkType: hard -"@expo/json-file@npm:^9.0.0": - version: 9.0.0 - resolution: "@expo/json-file@npm:9.0.0" - dependencies: - "@babel/code-frame": ~7.10.4 - json5: ^2.2.3 - write-file-atomic: ^2.3.0 - checksum: 28a3db84a8a90eae901df14519f12d075dfd3ecd1502b07bc7c76b6c5445da0983c8d04651d71e2688722e915b56ab785a7372e23cc8e046e92f795fd36eb9d9 - languageName: node - linkType: hard - "@expo/metro-config@npm:0.18.10": version: 0.18.10 resolution: "@expo/metro-config@npm:0.18.10" @@ -7376,8 +11496,8 @@ __metadata: linkType: hard "@expo/metro-config@npm:~0.18.6": - version: 0.18.11 - resolution: "@expo/metro-config@npm:0.18.11" + version: 0.18.7 + resolution: "@expo/metro-config@npm:0.18.7" dependencies: "@babel/core": ^7.20.0 "@babel/generator": ^7.20.5 @@ -7397,37 +11517,37 @@ __metadata: lightningcss: ~1.19.0 postcss: ~8.4.32 resolve-from: ^5.0.0 - checksum: 4de79b97c6d818a487c6eaa83a55d3d9d1a1b28262507d74ad407fa22c2c32658d2cd2fa38babf82c32cf58239aff2c5d85e130609eaa34ed29a8e20a295cd7f + checksum: f9212492ed5bb1d28bb506280055d7488f1d7d2013f65fdaaec8158de07cdd46c887d30ae206d65b89fee24bf1def20b28caf1563f54c3daabe02ad0d210ee3e languageName: node linkType: hard "@expo/osascript@npm:^2.0.31": - version: 2.1.4 - resolution: "@expo/osascript@npm:2.1.4" + version: 2.0.33 + resolution: "@expo/osascript@npm:2.0.33" dependencies: - "@expo/spawn-async": ^1.7.2 + "@expo/spawn-async": ^1.5.0 exec-async: ^2.2.0 - checksum: d1b757abc83c3e0a2ba8d851bf596e2bf6d3fdbc83010df8afbb0b5e9318a5347f5af394147fb709fe529d75fc3c9749156389bf61213e71d6cc87366c1a8df7 + checksum: f1ae2e365ec82fcfefbdcd3ceb52da1b38c54e55a2ceb884ca06fb9259544c032b2f8133b803be152e86d79b8510fda8320811053894884819fa10b66268045d languageName: node linkType: hard "@expo/package-manager@npm:^1.5.0": - version: 1.6.0 - resolution: "@expo/package-manager@npm:1.6.0" + version: 1.5.2 + resolution: "@expo/package-manager@npm:1.5.2" dependencies: - "@expo/json-file": ^9.0.0 + "@expo/json-file": ^8.3.0 "@expo/spawn-async": ^1.7.2 ansi-regex: ^5.0.0 chalk: ^4.0.0 find-up: ^5.0.0 + find-yarn-workspace-root: ~2.0.0 js-yaml: ^3.13.1 micromatch: ^4.0.2 - npm-package-arg: ^11.0.0 + npm-package-arg: ^7.0.0 ora: ^3.4.0 - resolve-workspace-root: ^2.0.0 split: ^1.0.1 sudo-prompt: 9.1.1 - checksum: 5afbf794c9f6352282de79bd6ca226f37da0f7d7b9ca250ee584f88cb0b3b9095a1f4448f9aff2d54fe6d1f1a0309d549e0aed5dc9bc66082fcd9e3966994e5d + checksum: 825e727106592bac98c82c69bf316b8b1ee20829f7f3e909cf374861b771cfa77d38b029f8b078341b2a9333004b4b90392f6f1a6a366c45ecf3f397798fb2a4 languageName: node linkType: hard @@ -7496,7 +11616,7 @@ __metadata: languageName: node linkType: hard -"@expo/spawn-async@npm:^1.7.2": +"@expo/spawn-async@npm:^1.5.0, @expo/spawn-async@npm:^1.7.2": version: 1.7.2 resolution: "@expo/spawn-async@npm:1.7.2" dependencies: @@ -7506,11 +11626,11 @@ __metadata: linkType: hard "@expo/vector-icons@npm:^14.0.0": - version: 14.0.4 - resolution: "@expo/vector-icons@npm:14.0.4" + version: 14.0.2 + resolution: "@expo/vector-icons@npm:14.0.2" dependencies: prop-types: ^15.8.1 - checksum: 31bd5d4e4e2f0b0620b7e8b55b0c5691875cf57c5737bd0ccef0017d0e7abee66352f3d66a58997b719bd0720cccf8f5119503c69fe1a30398747306ebefeb6e + checksum: 49e27ff52eb138745313fa2c39863fb762230b0089b910d668d7f2c06b7e71a0249dc3a26bfc8725d07bdfaadab1dbcbce087b34dfc244b00a15fc02fe4866e2 languageName: node linkType: hard @@ -7551,31 +11671,24 @@ __metadata: languageName: node linkType: hard -"@fastify/busboy@npm:^2.0.0": - version: 2.1.1 - resolution: "@fastify/busboy@npm:2.1.1" - checksum: 42c32ef75e906c9a4809c1e1930a5ca6d4ddc8d138e1a8c8ba5ea07f997db32210617d23b2e4a85fe376316a41a1a0439fc6ff2dedf5126d96f45a9d80754fb2 - languageName: node - linkType: hard - -"@figspec/components@npm:^1.0.1": - version: 1.0.3 - resolution: "@figspec/components@npm:1.0.3" +"@figspec/components@npm:^1.0.0": + version: 1.0.1 + resolution: "@figspec/components@npm:1.0.1" dependencies: lit: ^2.1.3 - checksum: 2afe175510ccb9f544a70607063e4c1dbc17b2804a81f39562b985684013e7382d00c87b4ae80187ba926e588ef6b378fbc22fcb89ff6424ebcb3f83dc1f8d72 + checksum: db33333ad2c3925cc8264e24b4a7b7d0e3a477eaaebbff9033f78c3e2f3273e6c7dbdfb453ee16af6d1ab21d49c2c704882aabcb1a693d2cf627b1fa2494849b languageName: node linkType: hard "@figspec/react@npm:^1.0.0": - version: 1.0.3 - resolution: "@figspec/react@npm:1.0.3" + version: 1.0.1 + resolution: "@figspec/react@npm:1.0.1" dependencies: - "@figspec/components": ^1.0.1 + "@figspec/components": ^1.0.0 "@lit-labs/react": ^1.0.2 peerDependencies: - react: ^16.14.0 || ^17.0.0 || ^18.0.0 - checksum: 8cfc1be1d8b6aa089fb4a7461a46bc96cdd4ad40ee49b0dea46507221d6036a81644b732ed5be0e8047ef6436e776036bcf0a72db724f0f9358837270f4278cf + react: ^16.14.0 || ^17.0.0 + checksum: 9810cab7b61613bf7412484b1be777b3af655ba0c4dddd66ce34520eac86c1260e3dd1bab5198a57042b017ce67be955defa844645952f405513a957e9ef31a8 languageName: node linkType: hard @@ -7593,51 +11706,51 @@ __metadata: languageName: node linkType: hard -"@firebase/component@npm:0.6.4": - version: 0.6.4 - resolution: "@firebase/component@npm:0.6.4" +"@firebase/component@npm:0.6.1": + version: 0.6.1 + resolution: "@firebase/component@npm:0.6.1" dependencies: - "@firebase/util": 1.9.3 + "@firebase/util": 1.9.0 tslib: ^2.1.0 - checksum: 5d7006e4bc70508f16fe9297c351ca7eff29b59f7fd4cc99a6e28f93b62f422d0401d84b0ddc38a52f7125aa646c9a98d014a86afdd2c50caf178b1987f71ab6 + checksum: 7a30ab46f560a744433be118f0d4a7e29341c8a5d142ba71d04ad5d5ab0e2f79ff869a88e869593c83ceb28dd313c41fa70183e2855d3e000cd5c95a912c8a6b languageName: node linkType: hard "@firebase/database-compat@npm:^0.3.0": - version: 0.3.4 - resolution: "@firebase/database-compat@npm:0.3.4" + version: 0.3.1 + resolution: "@firebase/database-compat@npm:0.3.1" dependencies: - "@firebase/component": 0.6.4 - "@firebase/database": 0.14.4 - "@firebase/database-types": 0.10.4 + "@firebase/component": 0.6.1 + "@firebase/database": 0.14.1 + "@firebase/database-types": 0.10.1 "@firebase/logger": 0.4.0 - "@firebase/util": 1.9.3 + "@firebase/util": 1.9.0 tslib: ^2.1.0 - checksum: d5162718f052de9c1c4a6f82c9d42775a2f3dc84f86230a0471eb2c5c50f02837c1bc0be11805867efa2f0798f429443a5a3b9c8670ff34514516abce28ed3f8 + checksum: df9d142dbbf7721490fe73aa87e8a4cce43f3a5ad9b01a7620a314ff9b54ed5a49a2c5943e93fdb225ec6c7c0a10ff901e72a58c8e7abab8f32f23dd1869168e languageName: node linkType: hard -"@firebase/database-types@npm:0.10.4, @firebase/database-types@npm:^0.10.0": - version: 0.10.4 - resolution: "@firebase/database-types@npm:0.10.4" +"@firebase/database-types@npm:0.10.1, @firebase/database-types@npm:^0.10.0": + version: 0.10.1 + resolution: "@firebase/database-types@npm:0.10.1" dependencies: "@firebase/app-types": 0.9.0 - "@firebase/util": 1.9.3 - checksum: 4fcecd212221eced0e84e4b4a3a069ed94cb9060da72472455dd509c4c490417e8929e390937d35e69a5629e4eb490c727bdc1e001ec8f43b097c0734d5715ad + "@firebase/util": 1.9.0 + checksum: 4cd43826844489bf352e02e24fd2d64cd5f12f17d0346c04f3e651c098bf787f5298d60718a05f2d4f5ba9a0a8b17067e8b70a90fcd54cfaa335760ed6acd0ab languageName: node linkType: hard -"@firebase/database@npm:0.14.4": - version: 0.14.4 - resolution: "@firebase/database@npm:0.14.4" +"@firebase/database@npm:0.14.1": + version: 0.14.1 + resolution: "@firebase/database@npm:0.14.1" dependencies: "@firebase/auth-interop-types": 0.2.1 - "@firebase/component": 0.6.4 + "@firebase/component": 0.6.1 "@firebase/logger": 0.4.0 - "@firebase/util": 1.9.3 + "@firebase/util": 1.9.0 faye-websocket: 0.11.4 tslib: ^2.1.0 - checksum: cc2f520a6b92528589781a7c9d6cbd5409cff89c80d73690903a567ef91bf701d036ef872a1e3bd1797c5a85a64d9dcbf73618973360d3d76282464f06a3ff06 + checksum: 92340f0bb0cf23fe7bc31c0a7f075f963b9bc480b8d626ec46b066eb2c5e2f40887e8a86f2b24b74017be0730cbd735d7ebb212531f364868b84db4078f61463 languageName: node linkType: hard @@ -7650,50 +11763,66 @@ __metadata: languageName: node linkType: hard -"@firebase/util@npm:1.9.3": - version: 1.9.3 - resolution: "@firebase/util@npm:1.9.3" +"@firebase/util@npm:1.9.0": + version: 1.9.0 + resolution: "@firebase/util@npm:1.9.0" dependencies: tslib: ^2.1.0 - checksum: b2dbd39229580df2075d102bc26a895eefdfb7ddc7bd71da6765f9ff4a61f5b67b6583e7e20676c56dc0e3f9379376fdef09a46b37b8d088b9de3eb0afbc066a + checksum: f6fdc09ce29220d952c303e43e823bbc8fc301e0d4f953072416157c074fe30540fe6e099a0d70e2264b9cdfa2dea3dde5f1780d4fa9455c01ad9254534002f4 languageName: node linkType: hard -"@floating-ui/core@npm:^1.6.0": - version: 1.6.8 - resolution: "@floating-ui/core@npm:1.6.8" +"@floating-ui/core@npm:^1.3.1": + version: 1.3.1 + resolution: "@floating-ui/core@npm:1.3.1" + checksum: fe3b40fcaec95b0825c01a98330ae75b60c61c395ca012055a32f9c22ab97fde8ce1bd14fce3d242beb9dbe4564c90ce4a7a767851911d4215b9ec7721440e5b + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.4.1": + version: 1.4.1 + resolution: "@floating-ui/core@npm:1.4.1" dependencies: - "@floating-ui/utils": ^0.2.8 - checksum: 82faa6ea9d57e466779324e51308d6d49c098fb9d184a08d9bb7f4fad83f08cc070fc491f8d56f0cad44a16215fb43f9f829524288413e6c33afcb17303698de + "@floating-ui/utils": ^0.1.1 + checksum: be4ab864fe17eeba5e205bd554c264b9a4895a57c573661bbf638357fa3108677fed7ba3269ec15b4da90e29274c9b626d5a15414e8d1fe691e210d02a03695c languageName: node linkType: hard -"@floating-ui/dom@npm:^1.0.0, @floating-ui/dom@npm:^1.0.1": - version: 1.6.11 - resolution: "@floating-ui/dom@npm:1.6.11" +"@floating-ui/dom@npm:^1.0.1": + version: 1.4.4 + resolution: "@floating-ui/dom@npm:1.4.4" + dependencies: + "@floating-ui/core": ^1.3.1 + checksum: e8e43c786e24f8f111a72d7d17c3a9563cab8eddf2a2b3dacc2785370a97313a8dda0f3470b2b2ef2d3b9d6f1fd706ccf786d9441e54e283ed47c90aa0c0b1e1 + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.5.1": + version: 1.5.2 + resolution: "@floating-ui/dom@npm:1.5.2" dependencies: - "@floating-ui/core": ^1.6.0 - "@floating-ui/utils": ^0.2.8 - checksum: d6413759abd06a541edfad829c45313f930310fe76a3322e74a00eb655e283db33fe3e65b5265c4072eb54db7447e11225acd355a9a02cabd1d1b0d5fc8fc21d + "@floating-ui/core": ^1.4.1 + "@floating-ui/utils": ^0.1.1 + checksum: 3c71eed50bb22cec8f1f31750ad3d42b3b7b4b29dc6e4351100ff05a62445a5404abb71c733320f8376a8c5e78852e1cfba1b81e22bfc4ca0728f50ca8998dc5 languageName: node linkType: hard "@floating-ui/react-dom@npm:^2.0.0": - version: 2.1.2 - resolution: "@floating-ui/react-dom@npm:2.1.2" + version: 2.0.2 + resolution: "@floating-ui/react-dom@npm:2.0.2" dependencies: - "@floating-ui/dom": ^1.0.0 + "@floating-ui/dom": ^1.5.1 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 25bb031686e23062ed4222a8946e76b3f9021d40a48437bd747233c4964a766204b8a55f34fa8b259839af96e60db7c6e3714d81f1de06914294f90e86ffbc48 + checksum: 4797e1f7a19c1e531ed0d578ccdcbe58970743e5a480ba30424857fc953063f36d481f8c5d69248a8f1d521b739e94bf5e1ffb35506400dea3d914f166ed2f7f languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.8": - version: 0.2.8 - resolution: "@floating-ui/utils@npm:0.2.8" - checksum: deb98bba017c4e073c7ad5740d4dec33a4d3e0942d412e677ac0504f3dade15a68fc6fd164d43c93c0bb0bcc5dc5015c1f4080dfb1a6161140fe660624f7c875 +"@floating-ui/utils@npm:^0.1.1": + version: 0.1.2 + resolution: "@floating-ui/utils@npm:0.1.2" + checksum: 3e29fd3c69be2d27bb95ebe54129a6a29ea2d8112b2cbb568168cf2f1e787e6ed6305d743598469476bec28122b7ea3ea4b54a1a2d59d30dc4b4307391472299 languageName: node linkType: hard @@ -8067,14 +12196,14 @@ __metadata: linkType: hard "@google-cloud/firestore@npm:^6.4.0": - version: 6.8.0 - resolution: "@google-cloud/firestore@npm:6.8.0" + version: 6.4.2 + resolution: "@google-cloud/firestore@npm:6.4.2" dependencies: fast-deep-equal: ^3.1.1 functional-red-black-tree: ^1.0.1 - google-gax: ^3.5.7 - protobufjs: ^7.2.5 - checksum: e8e1fd7cc6fd688e771c3d2f62c2f33d23357e11ee03f6d2f2aeb0ea29378f8e62f2511936011b515bbeedf304b5e831e4f4a46b8905dbc421fe2fa521d2e43f + google-gax: ^3.5.2 + protobufjs: ^7.0.0 + checksum: c259f59905d4939f0b1fff2fdfa3db38a0436454af9e4a8939ea951ee700d5f801375ed090e77f610fbf3f02db1aeba9d70437eb6a8ca6f0ba2088c8964c58d0 languageName: node linkType: hard @@ -8103,8 +12232,8 @@ __metadata: linkType: hard "@google-cloud/storage@npm:^6.5.2": - version: 6.12.0 - resolution: "@google-cloud/storage@npm:6.12.0" + version: 6.9.0 + resolution: "@google-cloud/storage@npm:6.9.0" dependencies: "@google-cloud/paginator": ^3.0.7 "@google-cloud/projectify": ^3.0.0 @@ -8115,7 +12244,6 @@ __metadata: duplexify: ^4.0.0 ent: ^2.2.0 extend: ^3.0.2 - fast-xml-parser: ^4.2.2 gaxios: ^5.0.0 google-auth-library: ^8.0.1 mime: ^3.0.0 @@ -8124,14 +12252,16 @@ __metadata: retry-request: ^5.0.0 teeny-request: ^8.0.0 uuid: ^8.0.0 - checksum: cfe44e3f4d1bacd8eeefa7885d261f421c4ff84e82abe50200b5b77e28322baf9cb67497872b9868b25b43b14197b1a155d5eb7b70afb39d3476fa4bdead3338 + checksum: 886b9aad6bd44901b22a6e77c6430bae0effc2137e6c18196d151db8b9690d80726ecc4b60ac1ba315372305010282de6b9845ef23eaa7351449d0193aac62cc languageName: node linkType: hard -"@googlemaps/js-api-loader@npm:^1.13.8": - version: 1.16.8 - resolution: "@googlemaps/js-api-loader@npm:1.16.8" - checksum: 2f5e2ced6b83fb72f32bcfd32c85558dba967580025a53d593e5a8bb15f63eb866e4f55b86aa7f5810e1616554c02100081a9a217d16d25766e57a128b39e825 +"@googlemaps/js-api-loader@npm:^1.7.0": + version: 1.16.6 + resolution: "@googlemaps/js-api-loader@npm:1.16.6" + dependencies: + fast-deep-equal: ^3.1.3 + checksum: 715640dfac073a706761c682bc142946ba0766926c610331411d25ba0aabf2089bcb2fdb28d7ee78b1a433647ccb5682c00a16312ee14e272fa2e27db7a16a9a languageName: node linkType: hard @@ -8143,14 +12273,14 @@ __metadata: linkType: hard "@graphql-codegen/add@npm:^3.2.1": - version: 3.2.3 - resolution: "@graphql-codegen/add@npm:3.2.3" + version: 3.2.1 + resolution: "@graphql-codegen/add@npm:3.2.1" dependencies: - "@graphql-codegen/plugin-helpers": ^3.1.1 + "@graphql-codegen/plugin-helpers": ^2.6.2 tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 98b1b17104b7e2fa82e9ed30e21160b02cce530d0ff72ce7794478677168ac6381a8d814cdd25d60b41b91b6446ebd592ba4820bd5ac138016f9097fa6ebc483 + checksum: 4f9c645a3cf4b6e64c8ea5cbaba95075df2f485e3fea5b2c369bcf898272d0a6665b3eb0b541dc57d3d8400b23610848c8348a469e472db1a1c558d61580dca0 languageName: node linkType: hard @@ -8228,8 +12358,8 @@ __metadata: linkType: hard "@graphql-codegen/near-operation-file-preset@npm:^2.4.4": - version: 2.5.0 - resolution: "@graphql-codegen/near-operation-file-preset@npm:2.5.0" + version: 2.4.4 + resolution: "@graphql-codegen/near-operation-file-preset@npm:2.4.4" dependencies: "@graphql-codegen/add": ^3.2.1 "@graphql-codegen/plugin-helpers": ^2.7.2 @@ -8239,13 +12369,13 @@ __metadata: tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 4d66e1e3df6530d561b5bc1eb2a9341f96c1c77b3247fb4bb03e2694e2da73d64ec97249a9c3c47416e1eaca2f15b189ec108e19a599076b27f2088fcbf4daf8 + checksum: 224cf036b67abb3b7c5b288b6d289cd3fdcda51806b09d9022574b4e81bb8bec0f49875bb12a2e4cf289ad46d8f33f5c41676dc9edafb680c829df29e02fb85e languageName: node linkType: hard -"@graphql-codegen/plugin-helpers@npm:^2.6.2, @graphql-codegen/plugin-helpers@npm:^2.7.0, @graphql-codegen/plugin-helpers@npm:^2.7.2": - version: 2.7.2 - resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" +"@graphql-codegen/plugin-helpers@npm:^2.6.2, @graphql-codegen/plugin-helpers@npm:^2.7.0": + version: 2.7.1 + resolution: "@graphql-codegen/plugin-helpers@npm:2.7.1" dependencies: "@graphql-tools/utils": ^8.8.0 change-case-all: 1.0.14 @@ -8255,43 +12385,43 @@ __metadata: tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 66e0d507ad5db60b67092ebf7632d464d56ab446ac8fd87c293e00d9016944912d8cf9199e3e026b0a9247a50f50c4118a44f49e13675db64211652cd6259b05 + checksum: fffb801ccccee36d729c134caa79cc5eb6a1b3717253646cd1759e2dd0e754bccb6b0b6b5341a649fd18794f8b0b970776b71907d5a7b15048521ea9eb283180 languageName: node linkType: hard -"@graphql-codegen/plugin-helpers@npm:^3.1.1, @graphql-codegen/plugin-helpers@npm:^3.1.2": - version: 3.1.2 - resolution: "@graphql-codegen/plugin-helpers@npm:3.1.2" +"@graphql-codegen/plugin-helpers@npm:^2.7.2": + version: 2.7.2 + resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" dependencies: - "@graphql-tools/utils": ^9.0.0 - change-case-all: 1.0.15 + "@graphql-tools/utils": ^8.8.0 + change-case-all: 1.0.14 common-tags: 1.8.2 import-from: 4.0.0 lodash: ~4.17.0 tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 4d0c615738570681b5ffd3c07305a35d6aa3e5fd87c9199c0a670b95529ab865b1df978ce584d5b415107a567ac484e56a48db129a6d1d2eb8a254fbd3260e39 + checksum: 66e0d507ad5db60b67092ebf7632d464d56ab446ac8fd87c293e00d9016944912d8cf9199e3e026b0a9247a50f50c4118a44f49e13675db64211652cd6259b05 languageName: node linkType: hard "@graphql-codegen/plugin-helpers@npm:^5.0.0": - version: 5.0.4 - resolution: "@graphql-codegen/plugin-helpers@npm:5.0.4" + version: 5.0.1 + resolution: "@graphql-codegen/plugin-helpers@npm:5.0.1" dependencies: "@graphql-tools/utils": ^10.0.0 change-case-all: 1.0.15 common-tags: 1.8.2 import-from: 4.0.0 lodash: ~4.17.0 - tslib: ~2.6.0 + tslib: ~2.5.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 0f0272afbbc79e665fb23bb823721587470e12f77aba39426e2524386ccbb6dec8d42c0ccaf8e0b95fcda030c83cb4e6302bce3c3f7b2c1ed50c33a40619fcd0 + checksum: 97faa8f87f41292bb5263097b1613733faf07fd0ff375ac89438aa0f2cd91e163d088b63dcafcdb6d66beaba8f7d13005bb980793e71979e9ad61fdfd206a730 languageName: node linkType: hard -"@graphql-codegen/schema-ast@npm:2.5.1": +"@graphql-codegen/schema-ast@npm:2.5.1, @graphql-codegen/schema-ast@npm:^2.5.1": version: 2.5.1 resolution: "@graphql-codegen/schema-ast@npm:2.5.1" dependencies: @@ -8304,19 +12434,6 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/schema-ast@npm:^2.5.1, @graphql-codegen/schema-ast@npm:^2.6.1": - version: 2.6.1 - resolution: "@graphql-codegen/schema-ast@npm:2.6.1" - dependencies: - "@graphql-codegen/plugin-helpers": ^3.1.2 - "@graphql-tools/utils": ^9.0.0 - tslib: ~2.4.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: f44338ac66e6a1f6238c33cdf65778bb467fe5a93767988135cb4e112d3be4d3c7e8aeeffe323754e8d6b0cbc5a52cb71452bfc42a15bc7031ebaa9b3d5da676 - languageName: node - linkType: hard - "@graphql-codegen/typescript-document-nodes@npm:4.0.1": version: 4.0.1 resolution: "@graphql-codegen/typescript-document-nodes@npm:4.0.1" @@ -8394,17 +12511,17 @@ __metadata: linkType: hard "@graphql-codegen/typescript@npm:^2.7.3": - version: 2.8.8 - resolution: "@graphql-codegen/typescript@npm:2.8.8" + version: 2.7.4 + resolution: "@graphql-codegen/typescript@npm:2.7.4" dependencies: - "@graphql-codegen/plugin-helpers": ^3.1.2 - "@graphql-codegen/schema-ast": ^2.6.1 - "@graphql-codegen/visitor-plugin-common": 2.13.8 + "@graphql-codegen/plugin-helpers": ^2.6.2 + "@graphql-codegen/schema-ast": ^2.5.1 + "@graphql-codegen/visitor-plugin-common": 2.12.2 auto-bind: ~4.0.0 tslib: ~2.4.0 peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: ebc338bc88fd239b9ef70d900778791af2c68f7a0fa074d870cc5fcaee3ea182dfce8a1f366f53bcd5e81f95bb9e26e00e1b41e6b2ad3305cf7e6f44bf57d649 + checksum: 91ce69d19eead417d4ba07a59f4be19fd50a28c4bd3800f8cd69efa7e2afb05cea6e15b8d58086b67c366970a6c58f0c5179a46a9f07c7f135f642a9d6af3583 languageName: node linkType: hard @@ -8428,11 +12545,11 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/visitor-plugin-common@npm:2.13.1": - version: 2.13.1 - resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" +"@graphql-codegen/visitor-plugin-common@npm:2.12.2": + version: 2.12.2 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.12.2" dependencies: - "@graphql-codegen/plugin-helpers": ^2.7.2 + "@graphql-codegen/plugin-helpers": ^2.6.2 "@graphql-tools/optimize": ^1.3.0 "@graphql-tools/relay-operation-optimizer": ^6.5.0 "@graphql-tools/utils": ^8.8.0 @@ -8444,27 +12561,27 @@ __metadata: tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 0c329aa6e435602f2f6c1569ec2091b7850f58cc5dca7ac763c38c82588545ec1110c1de587f5f3949b11ff96f94401d1e63e329607d78424583b276fd08f1ae + checksum: 325b6a2bbd297c7beff00963f4f375d2990956287d4e4976864875340728abf1bdaa9891bbd9fc2625d783689f2655befd212a03c521d3661e16dcea0e0a6de4 languageName: node linkType: hard -"@graphql-codegen/visitor-plugin-common@npm:2.13.8": - version: 2.13.8 - resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.8" +"@graphql-codegen/visitor-plugin-common@npm:2.13.1": + version: 2.13.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" dependencies: - "@graphql-codegen/plugin-helpers": ^3.1.2 + "@graphql-codegen/plugin-helpers": ^2.7.2 "@graphql-tools/optimize": ^1.3.0 "@graphql-tools/relay-operation-optimizer": ^6.5.0 - "@graphql-tools/utils": ^9.0.0 + "@graphql-tools/utils": ^8.8.0 auto-bind: ~4.0.0 - change-case-all: 1.0.15 + change-case-all: 1.0.14 dependency-graph: ^0.11.0 graphql-tag: ^2.11.0 parse-filepath: ^1.0.2 tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 4ca8074bfb84a7c6f88216c2b327a600b57da35eae9b659656592c48f197e44004dcc5c2ab500a5d3a94e2753f47903e5e113162c8a362de08e307e564d416a5 + checksum: 0c329aa6e435602f2f6c1569ec2091b7850f58cc5dca7ac763c38c82588545ec1110c1de587f5f3949b11ff96f94401d1e63e329607d78424583b276fd08f1ae languageName: node linkType: hard @@ -8489,127 +12606,61 @@ __metadata: linkType: hard "@graphql-tools/apollo-engine-loader@npm:^7.3.6": - version: 7.3.26 - resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.26" + version: 7.3.13 + resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.13" dependencies: - "@ardatan/sync-fetch": ^0.0.1 - "@graphql-tools/utils": ^9.2.1 - "@whatwg-node/fetch": ^0.8.0 + "@ardatan/sync-fetch": 0.0.1 + "@graphql-tools/utils": 8.12.0 + "@whatwg-node/fetch": ^0.4.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 2dd0324cd677c0a399a3cda6f155e4367ac38c8f6ec8a36c50931e97ce93d70f716f95575bcfda33d5a5b3c75f0ba04c73b82d22613f1a89e3c31965f576ae22 + checksum: a3a11a00e039d382d4af0dc3f90efe1a54ca0686ec88ffd7aeaba7e1e26fbe1d2cf3f70e607d07b5db8974384cc22df6350a9fb0962cc0c5735b256486447bcc languageName: node linkType: hard -"@graphql-tools/batch-execute@npm:^8.5.22": - version: 8.5.22 - resolution: "@graphql-tools/batch-execute@npm:8.5.22" +"@graphql-tools/batch-execute@npm:8.5.6": + version: 8.5.6 + resolution: "@graphql-tools/batch-execute@npm:8.5.6" dependencies: - "@graphql-tools/utils": ^9.2.1 - dataloader: ^2.2.2 + "@graphql-tools/utils": 8.12.0 + dataloader: 2.1.0 tslib: ^2.4.0 - value-or-promise: ^1.0.12 + value-or-promise: 1.0.11 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 4f7f7ba104737a57d0bd5b2b38b8dbf24d6db9e3ce8f8d1b8c3109702305c212b54b7642853c1584b12ce3a9136286b600076e94861c0bd1d29a218f44401224 + checksum: a5afd4adfc70ba3694c194a5bbdaf425d66fedc4b83f0f41347dd1f2bc2c61fc98d4c36badc246aced7baa068de2aab336b6cb4b8b91f006a40060cfc4186959 languageName: node linkType: hard "@graphql-tools/code-file-loader@npm:^7.3.1": - version: 7.3.23 - resolution: "@graphql-tools/code-file-loader@npm:7.3.23" + version: 7.3.6 + resolution: "@graphql-tools/code-file-loader@npm:7.3.6" dependencies: - "@graphql-tools/graphql-tag-pluck": 7.5.2 - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/graphql-tag-pluck": 7.3.6 + "@graphql-tools/utils": 8.12.0 globby: ^11.0.3 tslib: ^2.4.0 unixify: ^1.0.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: fb1dfa807b9d5798936c7fe31cf5356412d9b5a25a08d5952b607921637afbe26555cb662cf97f82dfdf47ed8e7c2a42f527238fb2defd3be4505e15fb6027c3 - languageName: node - linkType: hard - -"@graphql-tools/delegate@npm:^9.0.31": - version: 9.0.35 - resolution: "@graphql-tools/delegate@npm:9.0.35" - dependencies: - "@graphql-tools/batch-execute": ^8.5.22 - "@graphql-tools/executor": ^0.0.20 - "@graphql-tools/schema": ^9.0.19 - "@graphql-tools/utils": ^9.2.1 - dataloader: ^2.2.2 - tslib: ^2.5.0 - value-or-promise: ^1.0.12 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 4edd827d1767dc33ea1e28f8ceb30f82e1cdb47a9390cecc0a45f51594c6df28d11b2c2eec083e27fa45a76451c8490f2f826effc2dff9977de3fe1b66b2aadb - languageName: node - linkType: hard - -"@graphql-tools/executor-graphql-ws@npm:^0.0.14": - version: 0.0.14 - resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.14" - dependencies: - "@graphql-tools/utils": ^9.2.1 - "@repeaterjs/repeater": 3.0.4 - "@types/ws": ^8.0.0 - graphql-ws: 5.12.1 - isomorphic-ws: 5.0.0 - tslib: ^2.4.0 - ws: 8.13.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: c18f3ca3d70098017ff71045ae13de1d88c8dc0954af0d7a389aebdc831c82b678f9cf9b50ed065d5262d59a558b4f9be3b7b04e5002bae47a503493fc0b7542 + checksum: a63b0c512d1a6b56fc6aebc933a779d8b155aedc060ee37fcdcacd909341024db9546d5f93b49ad676ee348e3303b048c9ef190263f3747e016f818a04c49133 languageName: node linkType: hard -"@graphql-tools/executor-http@npm:^0.1.7, @graphql-tools/executor-http@npm:^0.1.9": - version: 0.1.10 - resolution: "@graphql-tools/executor-http@npm:0.1.10" - dependencies: - "@graphql-tools/utils": ^9.2.1 - "@repeaterjs/repeater": ^3.0.4 - "@whatwg-node/fetch": ^0.8.1 - dset: ^3.1.2 - extract-files: ^11.0.0 - meros: ^1.2.1 - tslib: ^2.4.0 - value-or-promise: ^1.0.12 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: d5cb0b9f8deb2335cac3b0e8fa5a63e827fafd35d1dae88f4ae201f3ce0531be95a8ec3b0b7fbe618a66ad5838e3c574cf8f965c3d71b49b7dbcd7ba2e67019d - languageName: node - linkType: hard - -"@graphql-tools/executor-legacy-ws@npm:^0.0.11": - version: 0.0.11 - resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.11" - dependencies: - "@graphql-tools/utils": ^9.2.1 - "@types/ws": ^8.0.0 - isomorphic-ws: 5.0.0 - tslib: ^2.4.0 - ws: 8.13.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: f9dd5dc87537c6adb3e1fb8e083944cfd9b2a9b34016f705b7b99105e744f11290f23aee726bb05ae32411c7d07a1ebc7b5bd35445053fc44877979f0ce4cd2e - languageName: node - linkType: hard - -"@graphql-tools/executor@npm:^0.0.20": - version: 0.0.20 - resolution: "@graphql-tools/executor@npm:0.0.20" +"@graphql-tools/delegate@npm:9.0.8": + version: 9.0.8 + resolution: "@graphql-tools/delegate@npm:9.0.8" dependencies: - "@graphql-tools/utils": ^9.2.1 - "@graphql-typed-document-node/core": 3.2.0 - "@repeaterjs/repeater": ^3.0.4 - tslib: ^2.4.0 - value-or-promise: ^1.0.12 + "@graphql-tools/batch-execute": 8.5.6 + "@graphql-tools/schema": 9.0.4 + "@graphql-tools/utils": 8.12.0 + dataloader: 2.1.0 + tslib: ~2.4.0 + value-or-promise: 1.0.11 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 5390800be4a346eb7d37d51458cd9cf4a24e01014fe1b392682ea4bce2b27fc1d5c7aebcb3dafaeefcb0a89e5b307fc2060816533b61d6796e0fa0e5e1f10959 + checksum: 0edc09362457d072d2da12ecbfbb48cf71fa0472d1a625575cd63a35413d3c5e7c014fc05da812327694d83ae116bbc64fe01250bf4bedf2401d14e5bfced069 languageName: node linkType: hard @@ -8630,38 +12681,51 @@ __metadata: linkType: hard "@graphql-tools/github-loader@npm:^7.3.6": - version: 7.3.28 - resolution: "@graphql-tools/github-loader@npm:7.3.28" + version: 7.3.13 + resolution: "@graphql-tools/github-loader@npm:7.3.13" dependencies: - "@ardatan/sync-fetch": ^0.0.1 - "@graphql-tools/executor-http": ^0.1.9 - "@graphql-tools/graphql-tag-pluck": ^7.4.6 - "@graphql-tools/utils": ^9.2.1 - "@whatwg-node/fetch": ^0.8.0 + "@ardatan/sync-fetch": 0.0.1 + "@graphql-tools/graphql-tag-pluck": 7.3.6 + "@graphql-tools/utils": 8.12.0 + "@whatwg-node/fetch": ^0.4.0 tslib: ^2.4.0 - value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1ef168d72b0615e5e05408794fef549e841c399a12b7074ae4764fee28d145aebdf50ba573f0695159edced626f5757b7825be2b246c437bbdf5457aeff13e5b + checksum: 8a76e89df9cd2f9fa2a4cdfe3912e1857e634104152403d51b0395eb65aea656a08c1b44236ab93d6157eae0074d5428b9f3404edb4569b88c5668b6f9006763 languageName: node linkType: hard "@graphql-tools/graphql-file-loader@npm:^7.3.7, @graphql-tools/graphql-file-loader@npm:^7.5.0": - version: 7.5.17 - resolution: "@graphql-tools/graphql-file-loader@npm:7.5.17" + version: 7.5.5 + resolution: "@graphql-tools/graphql-file-loader@npm:7.5.5" dependencies: - "@graphql-tools/import": 6.7.18 - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/import": 6.7.6 + "@graphql-tools/utils": 8.12.0 globby: ^11.0.3 tslib: ^2.4.0 unixify: ^1.0.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: f0d6768fbb03fe6c5a0a2c1fe78e2fa8c009b13d6c40a7153c61e7266348192386310ace85dd46a96fa4317a4a37c02d1959fd2a0c6eaa521446234506147cdc + checksum: cb711db9d8f62e678a842d7e3edee6b1a0b6f8654be5a6b9c4483f776a3102843ecdcb173c2f9b530883586b48ac1eb8195aeebc9a42d26d92c2d2fa0b74c972 languageName: node linkType: hard -"@graphql-tools/graphql-tag-pluck@npm:7.5.2, @graphql-tools/graphql-tag-pluck@npm:^7.4.6": +"@graphql-tools/graphql-tag-pluck@npm:7.3.6": + version: 7.3.6 + resolution: "@graphql-tools/graphql-tag-pluck@npm:7.3.6" + dependencies: + "@babel/parser": ^7.16.8 + "@babel/traverse": ^7.16.8 + "@babel/types": ^7.16.8 + "@graphql-tools/utils": 8.12.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 3543a41a3b84dc014ce5d0824c8275b8d8592e55bbcd8f955a0968a6b9c00c11d82d90b6bbb533f2d09f94e07d10ec70d53696470ee32fad00d055767909d164 + languageName: node + linkType: hard + +"@graphql-tools/graphql-tag-pluck@npm:7.5.2": version: 7.5.2 resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.2" dependencies: @@ -8677,44 +12741,44 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/import@npm:6.7.18": - version: 6.7.18 - resolution: "@graphql-tools/import@npm:6.7.18" +"@graphql-tools/import@npm:6.7.6": + version: 6.7.6 + resolution: "@graphql-tools/import@npm:6.7.6" dependencies: - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/utils": 8.12.0 resolve-from: 5.0.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 15c32c5937899a25f8c2b0dee98ca1e1245ba85a56a8a59d52c2c78693da2e95fb27f235ef95c3a576bd96843d53541b6d90931a0032c0011dea871d53b5027a + checksum: 83b63dd7b45905627a7296d84102538c9450df90ad58edff601a6ebec2fd2dbae3d3d368f9f5335c62adf2ac772dcebf675f037373a5a60ef2c847a3216ff902 languageName: node linkType: hard "@graphql-tools/json-file-loader@npm:^7.3.7, @graphql-tools/json-file-loader@npm:^7.4.1": - version: 7.4.18 - resolution: "@graphql-tools/json-file-loader@npm:7.4.18" + version: 7.4.6 + resolution: "@graphql-tools/json-file-loader@npm:7.4.6" dependencies: - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/utils": 8.12.0 globby: ^11.0.3 tslib: ^2.4.0 unixify: ^1.0.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: e6571fb10bdf29c4e5aabdc9c87d32be0d1e493a701886fc9c24efee2e0cef0df898a9a48c449f0465a89da816e9f2cf7a51e9476fbe8b7d0aefd3c18e934234 + checksum: 53b1ae5cc88d50c9104f637316e0578422d85fd4edcd16e4ee7a8eb4405e61470ff3e6fb9b623678dc1c83c3cf219da8257ce69981b714328dc57e6c430bff29 languageName: node linkType: hard "@graphql-tools/load@npm:^7.5.5, @graphql-tools/load@npm:^7.7.1": - version: 7.8.14 - resolution: "@graphql-tools/load@npm:7.8.14" + version: 7.7.7 + resolution: "@graphql-tools/load@npm:7.7.7" dependencies: - "@graphql-tools/schema": ^9.0.18 - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/schema": 9.0.4 + "@graphql-tools/utils": 8.12.0 p-limit: 3.1.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 12ffd6460da3d996d614faa3ced99f526247334bb671301b15ed1d2153314a8813f734d863086d154891ac4b35da090668f0ea7702508d19f8dd0f72413b585c + checksum: 59590c07c029b5b2427116408f91cb1f5ab359bdf0a9314a8d31cedc540c235d1daddbbc8ab6369db1ea7e654cf52ca9d4f185058290acc8c5c3183d1bb68ef7 languageName: node linkType: hard @@ -8754,40 +12818,40 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/merge@npm:^8.2.6, @graphql-tools/merge@npm:^8.4.1": - version: 8.4.2 - resolution: "@graphql-tools/merge@npm:8.4.2" +"@graphql-tools/merge@npm:8.3.6, @graphql-tools/merge@npm:^8.2.6": + version: 8.3.6 + resolution: "@graphql-tools/merge@npm:8.3.6" dependencies: - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/utils": 8.12.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 96d57a3e810055a2883bf9d3450e88082da207ffb1406222c9fa954e47bac4a328696785fdb7eec95a030d5f75504f7b4c6484c94f248cee13e6ad25aca70c75 + checksum: 3e45ebff0dce9524e72c4af1d2b9799c16515c1236290e07cd68fb2226c4e54734e2444d89a64b387b7ba991d15c6f948fdfc20c77a74b1d24babddd865ff32a languageName: node linkType: hard "@graphql-tools/mock@npm:^8.1.2": - version: 8.7.20 - resolution: "@graphql-tools/mock@npm:8.7.20" + version: 8.7.6 + resolution: "@graphql-tools/mock@npm:8.7.6" dependencies: - "@graphql-tools/schema": ^9.0.18 - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/schema": 9.0.4 + "@graphql-tools/utils": 8.12.0 fast-json-stable-stringify: ^2.1.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 86eb3590236260769ab6cd8e88c44a90318ca647521ee4a593ecf74f28f864fbcfb0572b064660b27fee6b6a5701c57c5a360b252ba0656fb790ee0a929c939e + checksum: 41fd32f9aa83cc0da2166bd1c27d779ccf4f87c290e3acc5bfeb6f77218f29ebe425843d00e34485a17347966e9d258e98cb27c01e2a95820ae68523ef5f8078 languageName: node linkType: hard "@graphql-tools/optimize@npm:^1.3.0": - version: 1.4.0 - resolution: "@graphql-tools/optimize@npm:1.4.0" + version: 1.3.1 + resolution: "@graphql-tools/optimize@npm:1.3.1" dependencies: tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: bccbc596f2007ae706ee948e900f3174aa80ef043e8ae3467f735a10df0b31873bafdd20c0ef09b662171363a31e2d0859adb362bbf762da00245f8e9fd501b0 + checksum: 4eed041bc3199a70ab426eeb10bc4af65f18fa0c5907613aec236fd7e14918d0f895e12489df6ff501562415eef64c99777a3ca6f6a4ee3c796b68e7cb778342 languageName: node linkType: hard @@ -8803,56 +12867,57 @@ __metadata: linkType: hard "@graphql-tools/prisma-loader@npm:^7.2.7": - version: 7.2.72 - resolution: "@graphql-tools/prisma-loader@npm:7.2.72" + version: 7.2.24 + resolution: "@graphql-tools/prisma-loader@npm:7.2.24" dependencies: - "@graphql-tools/url-loader": ^7.17.18 - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/url-loader": 7.16.4 + "@graphql-tools/utils": 8.12.0 "@types/js-yaml": ^4.0.0 "@types/json-stable-stringify": ^1.0.32 - "@whatwg-node/fetch": ^0.8.2 + "@types/jsonwebtoken": ^8.5.0 chalk: ^4.1.0 debug: ^4.3.1 dotenv: ^16.0.0 - graphql-request: ^6.0.0 - http-proxy-agent: ^6.0.0 - https-proxy-agent: ^6.0.0 - jose: ^4.11.4 + graphql-request: ^5.0.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + isomorphic-fetch: ^3.0.0 js-yaml: ^4.0.0 json-stable-stringify: ^1.0.1 + jsonwebtoken: ^8.5.1 lodash: ^4.17.20 scuid: ^1.1.0 tslib: ^2.4.0 yaml-ast-parser: ^0.0.43 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 949506d2306ef54a8c68152b93c574148ad03c9bf3f5042fbd6aff0e6fe77c8afa3bc3ffceea239afd4ebda5cc0bd3076b5dc939645b838c472c958c75f1deaf + checksum: e0012dc2be252f1bb7a29fb3aaf4c60240b639465d352c41ac926b53f2247e8c2c951c3496eb2659d870383b26f2e79b85a33e7de9139aaca3356e239a1db515 languageName: node linkType: hard "@graphql-tools/relay-operation-optimizer@npm:^6.5.0": - version: 6.5.18 - resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.18" + version: 6.5.6 + resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.6" dependencies: "@ardatan/relay-compiler": 12.0.0 - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/utils": 8.12.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 56a8c7e6a0bf5fa4d5106276f69c08630a95659eb4300249b3dd28e2057ebb7e7815c51beadf98acdbf695cad5937988d16a3d01ca74fc120c76892968fbeb2b + checksum: 12efc88c775221a333a97a517bec160b449778cf3de5377048a81d213b0f67d82c0f2de631ba31e3443355650317ea8af5a2e107a00517dbf73d8e8720e797fb languageName: node linkType: hard "@graphql-tools/relay-operation-optimizer@npm:^7.0.0": - version: 7.0.2 - resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.2" + version: 7.0.0 + resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.0" dependencies: "@ardatan/relay-compiler": 12.0.0 - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.0.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 6eff45ec213d193d72bb1dc67d43ababba0909ddd4700360c26a82668d5e190cebf96940f6337c117a35350aed31b2bd7c9296f2dcd4df2687dbec30e6cdcebe + checksum: 6eb7e6d3ed6e72eb2146b8272b20e0acba154fffdac518f894ceaee320cc7ef0284117c11a93dff85b8bbee1019b982a9fdd20ecf65923d998b48730d296a56d languageName: node linkType: hard @@ -8870,54 +12935,55 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/schema@npm:^8.0.0": - version: 8.5.1 - resolution: "@graphql-tools/schema@npm:8.5.1" +"@graphql-tools/schema@npm:9.0.4, @graphql-tools/schema@npm:^9.0.0": + version: 9.0.4 + resolution: "@graphql-tools/schema@npm:9.0.4" dependencies: - "@graphql-tools/merge": 8.3.1 - "@graphql-tools/utils": 8.9.0 + "@graphql-tools/merge": 8.3.6 + "@graphql-tools/utils": 8.12.0 tslib: ^2.4.0 value-or-promise: 1.0.11 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 91363cd4371e347af40ef66f7d903b5d4f5998bfaec9214768e6a795136ef6372f9f225e05e18daacd929e23695811f15e791c6cbe082bf5b5d03b16b1f874f8 + checksum: 0644ba225ff7fb03c6fb7f026b6a77a4ac5dd14fd10bb562ea0072bfe0258620fd4789b851b0b97007db8754d0b7d88a1061bb98bacc679b22e2eb7706e79e0e languageName: node linkType: hard -"@graphql-tools/schema@npm:^9.0.0, @graphql-tools/schema@npm:^9.0.18, @graphql-tools/schema@npm:^9.0.19": - version: 9.0.19 - resolution: "@graphql-tools/schema@npm:9.0.19" +"@graphql-tools/schema@npm:^8.0.0": + version: 8.5.1 + resolution: "@graphql-tools/schema@npm:8.5.1" dependencies: - "@graphql-tools/merge": ^8.4.1 - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/merge": 8.3.1 + "@graphql-tools/utils": 8.9.0 tslib: ^2.4.0 - value-or-promise: ^1.0.12 + value-or-promise: 1.0.11 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1be91f61bf4be0c1c9aa640a6ad5b58328d5434d15e78ba73a47263420939db6741ad6723dece4611257e7e1e56518e116b76513a3014305d3f52d67aafb62fb + checksum: 91363cd4371e347af40ef66f7d903b5d4f5998bfaec9214768e6a795136ef6372f9f225e05e18daacd929e23695811f15e791c6cbe082bf5b5d03b16b1f874f8 languageName: node linkType: hard -"@graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.17.18, @graphql-tools/url-loader@npm:^7.9.7": - version: 7.17.18 - resolution: "@graphql-tools/url-loader@npm:7.17.18" +"@graphql-tools/url-loader@npm:7.16.4, @graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.9.7": + version: 7.16.4 + resolution: "@graphql-tools/url-loader@npm:7.16.4" dependencies: - "@ardatan/sync-fetch": ^0.0.1 - "@graphql-tools/delegate": ^9.0.31 - "@graphql-tools/executor-graphql-ws": ^0.0.14 - "@graphql-tools/executor-http": ^0.1.7 - "@graphql-tools/executor-legacy-ws": ^0.0.11 - "@graphql-tools/utils": ^9.2.1 - "@graphql-tools/wrap": ^9.4.2 + "@ardatan/sync-fetch": 0.0.1 + "@graphql-tools/delegate": 9.0.8 + "@graphql-tools/utils": 8.12.0 + "@graphql-tools/wrap": 9.2.3 "@types/ws": ^8.0.0 - "@whatwg-node/fetch": ^0.8.0 + "@whatwg-node/fetch": ^0.4.0 + dset: ^3.1.2 + extract-files: ^11.0.0 + graphql-ws: ^5.4.1 isomorphic-ws: ^5.0.0 + meros: ^1.1.4 tslib: ^2.4.0 value-or-promise: ^1.0.11 - ws: ^8.12.0 + ws: ^8.3.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: e4deccaa4b333a91022e9a19594e6c696c4463c94f091893c8d056e4090b2c8c5e5036b0e7bcce79f0c4c0ad2f0e6f3c8d170a765f0d5a2ba29965bee096f355 + checksum: 8ecf96e59f25930ceeb39560aacb2778cd1a31404bec2872b423c4a5a61b222af244c9bc29117098e983cf2b2ede5d27675ac2a9a16b4aacc0209a4908361400 languageName: node linkType: hard @@ -8932,6 +12998,17 @@ __metadata: languageName: node linkType: hard +"@graphql-tools/utils@npm:8.12.0, @graphql-tools/utils@npm:^8.6.5, @graphql-tools/utils@npm:^8.8.0, @graphql-tools/utils@npm:^8.9.0": + version: 8.12.0 + resolution: "@graphql-tools/utils@npm:8.12.0" + dependencies: + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 24edc6ba3bcfa9a4c1d1d37117c3f96d847beed9638325083c32c6ec9674729dc89fc8cc389d317ae5d9dba22e91443bd9788f1dc8de91a1b6f1e592112bd48f + languageName: node + linkType: hard + "@graphql-tools/utils@npm:8.8.0": version: 8.8.0 resolution: "@graphql-tools/utils@npm:8.8.0" @@ -8954,32 +13031,21 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.5.5": - version: 10.5.5 - resolution: "@graphql-tools/utils@npm:10.5.5" +"@graphql-tools/utils@npm:^10.0.0": + version: 10.0.10 + resolution: "@graphql-tools/utils@npm:10.0.10" dependencies: "@graphql-typed-document-node/core": ^3.1.1 - cross-inspect: 1.0.1 + cross-inspect: 1.0.0 dset: ^3.1.2 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: bbc5ea58c286e1a9f82876570f98b29079e224a8b3568ca8df4720de8c790e1cb8772182d1411af99d6ac749b9082810e02f21f0813dc43c4d0438ef9e04e885 - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:^8.8.0, @graphql-tools/utils@npm:^8.9.0": - version: 8.13.1 - resolution: "@graphql-tools/utils@npm:8.13.1" - dependencies: - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: ff04fdeb29e9ac596ea53386cd5b23cd741bb14c1997c6b0ba3c34ca165bd82b528a355e8c8e2ba726eb39e833ba9cbb0851ba0addb8c6d367089a1145bf9a49 + checksum: 2b23dcf131901eec196b6b2d2a6c57c66b4b2c21eb1a1e22b9bd6e6cb53b9cf9ca630cca633398ae4a6e4aed781ed6fdaf2d93e990836c15ffec44ac1de50aa1 languageName: node linkType: hard -"@graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.2.1": +"@graphql-tools/utils@npm:^9.2.1": version: 9.2.1 resolution: "@graphql-tools/utils@npm:9.2.1" dependencies: @@ -8991,22 +13057,22 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/wrap@npm:^9.4.2": - version: 9.4.2 - resolution: "@graphql-tools/wrap@npm:9.4.2" +"@graphql-tools/wrap@npm:9.2.3": + version: 9.2.3 + resolution: "@graphql-tools/wrap@npm:9.2.3" dependencies: - "@graphql-tools/delegate": ^9.0.31 - "@graphql-tools/schema": ^9.0.18 - "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/delegate": 9.0.8 + "@graphql-tools/schema": 9.0.4 + "@graphql-tools/utils": 8.12.0 tslib: ^2.4.0 - value-or-promise: ^1.0.12 + value-or-promise: 1.0.11 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 294d529a4b8e90cceaaa691e3b67d932626ad59a53260166e0281506a4e1a2b9d1c018984dffd0edcf518555baee23beaa8665167226da014d4d0b58c37cd744 + checksum: dcb130685d1206d5401d3dafe3461aef77cd508f5fe76a26a1fa403f0294fd9fa325e15ad61f7ef46b5aa73040e0ca46d0cf54103b897fe943acf452b1fa8fb9 languageName: node linkType: hard -"@graphql-typed-document-node/core@npm:3.2.0, @graphql-typed-document-node/core@npm:^3.1.0, @graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": +"@graphql-typed-document-node/core@npm:^3.1.0": version: 3.2.0 resolution: "@graphql-typed-document-node/core@npm:3.2.0" peerDependencies: @@ -9015,34 +13081,37 @@ __metadata: languageName: node linkType: hard -"@grpc/grpc-js@npm:~1.8.0": - version: 1.8.22 - resolution: "@grpc/grpc-js@npm:1.8.22" +"@graphql-typed-document-node/core@npm:^3.1.1": + version: 3.1.1 + resolution: "@graphql-typed-document-node/core@npm:3.1.1" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 87ff4cee308f1075f4472b80f9f9409667979940f8f701e87f0aa35ce5cf104d94b41258ea8192d05a0893475cd0f086a3929a07663b4fe8d0e805a277f07ed5 + languageName: node + linkType: hard + +"@grpc/grpc-js@npm:~1.7.0": + version: 1.7.3 + resolution: "@grpc/grpc-js@npm:1.7.3" dependencies: "@grpc/proto-loader": ^0.7.0 "@types/node": ">=12.12.47" - checksum: 4e7be493f568ce7f6d196b28d1177cab2714261c2df61a5900b5cc93e2f61362c780e57d0dae556972375006b72d39a9e0860d5c78bbe5e354a0bddf0d3da121 + checksum: cb05aae4599f5deac9e0f50ea458b4465c581653501b5c1f3f3a9d6bfc5120c731726914d2d0d3a8244fce60cdf86ebbfc69c9d9f39fc34f0ab0100afd4af3e4 languageName: node linkType: hard "@grpc/proto-loader@npm:^0.7.0": - version: 0.7.13 - resolution: "@grpc/proto-loader@npm:0.7.13" + version: 0.7.4 + resolution: "@grpc/proto-loader@npm:0.7.4" dependencies: + "@types/long": ^4.0.1 lodash.camelcase: ^4.3.0 - long: ^5.0.0 - protobufjs: ^7.2.5 - yargs: ^17.7.2 + long: ^4.0.0 + protobufjs: ^7.0.0 + yargs: ^16.2.0 bin: proto-loader-gen-types: build/bin/proto-loader-gen-types.js - checksum: 399c1b8a4627f93dc31660d9636ea6bf58be5675cc7581e3df56a249369e5be02c6cd0d642c5332b0d5673bc8621619bc06fb045aa3e8f57383737b5d35930dc - languageName: node - linkType: hard - -"@hapi/hoek@npm:^11.0.4": - version: 11.0.6 - resolution: "@hapi/hoek@npm:11.0.6" - checksum: feb8f250ac43ed281dbfd1bc50824664657c989f10c02b2deeff527023c081866f79b472475ad50f8ef4ed7106571e7e29801464df60819e18a4907054418211 + checksum: 7789a959060535287a74cef8e13783e9a1506ae22365a48e0cfb29f48697ac946b461fe12ee711d280c4690a333c705f504076303a806f2fef81cc3e532637ac languageName: node linkType: hard @@ -9053,7 +13122,7 @@ __metadata: languageName: node linkType: hard -"@hapi/topo@npm:^5.1.0": +"@hapi/topo@npm:^5.0.0, @hapi/topo@npm:^5.1.0": version: 5.1.0 resolution: "@hapi/topo@npm:5.1.0" dependencies: @@ -9088,9 +13157,9 @@ __metadata: linkType: hard "@hugsmidjan/qj@npm:^4.10.2, @hugsmidjan/qj@npm:^4.19.0": - version: 4.23.0 - resolution: "@hugsmidjan/qj@npm:4.23.0" - checksum: 1b746853bbdff1b4ad7f715b81d2cc4e031637b0609aff640187ef2c1bfddb2ec98ef30de3de54352af7a7ac4a124d77aedc5d57c0d09573ce253fff62bc8c39 + version: 4.22.1 + resolution: "@hugsmidjan/qj@npm:4.22.1" + checksum: 9bc8999a625b31f59b1ef1dc636d253440a2b55a81384cd83dad651be2b0d05ccf140bd1f5b9393c99e7e09f6bcc69db7af8963bacf087fe062e30d84659894a languageName: node linkType: hard @@ -9131,6 +13200,13 @@ __metadata: languageName: node linkType: hard +"@iarna/toml@npm:^2.2.5": + version: 2.2.5 + resolution: "@iarna/toml@npm:2.2.5" + checksum: b63b2b2c4fd67969a6291543ada0303d45593801ee744b60f5390f183c03d9192bc67a217abb24be945158f1935f02840d9ffff40c0142aa171b5d3b6b6a3ea5 + languageName: node + linkType: hard + "@ide/backoff@npm:^1.0.0": version: 1.0.0 resolution: "@ide/backoff@npm:1.0.0" @@ -9288,7 +13364,7 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": +"@istanbuljs/schema@npm:^0.1.2": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 @@ -9309,6 +13385,20 @@ __metadata: languageName: node linkType: hard +"@jest/console@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/console@npm:29.5.0" + dependencies: + "@jest/types": ^29.5.0 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 + slash: ^3.0.0 + checksum: 9f4f4b8fabd1221361b7f2e92d4a90f5f8c2e2b29077249996ab3c8b7f765175ffee795368f8d6b5b2bb3adb32dc09319f7270c7c787b0d259e624e00e0f64a5 + languageName: node + linkType: hard + "@jest/console@npm:^29.7.0": version: 29.7.0 resolution: "@jest/console@npm:29.7.0" @@ -9385,6 +13475,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/expect-utils@npm:29.5.0" + dependencies: + jest-get-type: ^29.4.3 + checksum: c46fb677c88535cf83cf29f0a5b1f376c6a1109ddda266ad7da1a9cbc53cb441fa402dd61fc7b111ffc99603c11a9b3357ee41a1c0e035a58830bcb360871476 + languageName: node + linkType: hard + "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -9467,7 +13566,44 @@ __metadata: languageName: node linkType: hard -"@jest/reporters@npm:^29.4.1, @jest/reporters@npm:^29.7.0": +"@jest/reporters@npm:^29.4.1": + version: 29.5.0 + resolution: "@jest/reporters@npm:29.5.0" + dependencies: + "@bcoe/v8-coverage": ^0.2.3 + "@jest/console": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 + "@jridgewell/trace-mapping": ^0.3.15 + "@types/node": "*" + chalk: ^4.0.0 + collect-v8-coverage: ^1.0.0 + exit: ^0.1.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + istanbul-lib-coverage: ^3.0.0 + istanbul-lib-instrument: ^5.1.0 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.1.3 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 + jest-worker: ^29.5.0 + slash: ^3.0.0 + string-length: ^4.0.1 + strip-ansi: ^6.0.0 + v8-to-istanbul: ^9.0.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 481268aac9a4a75cc49c4df1273d6b111808dec815e9d009dad717c32383ebb0cebac76e820ad1ab44e207540e1c2fe1e640d44c4f262de92ab1933e057fdeeb + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" dependencies: @@ -9504,6 +13640,33 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/schemas@npm:28.1.3" + dependencies: + "@sinclair/typebox": ^0.24.1 + checksum: 3cf1d4b66c9c4ffda58b246de1ddcba8e6ad085af63dccdf07922511f13b68c0cc480a7bc620cb4f3099a6f134801c747e1df7bfc7a4ef4dceefbdea3e31e1de + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.4.3": + version: 29.4.3 + resolution: "@jest/schemas@npm:29.4.3" + dependencies: + "@sinclair/typebox": ^0.25.16 + checksum: ac754e245c19dc39e10ebd41dce09040214c96a4cd8efa143b82148e383e45128f24599195ab4f01433adae4ccfbe2db6574c90db2862ccd8551a86704b5bebd + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/schemas@npm:29.6.0" + dependencies: + "@sinclair/typebox": ^0.27.8 + checksum: c00511c69cf89138a7d974404d3a5060af375b5a52b9c87215d91873129b382ca11c1ff25bd6d605951404bb381ddce5f8091004a61e76457da35db1f5c51365 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -9548,7 +13711,19 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:^29.4.1, @jest/test-result@npm:^29.7.0": +"@jest/test-result@npm:^29.4.1, @jest/test-result@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/test-result@npm:29.5.0" + dependencies: + "@jest/console": ^29.5.0 + "@jest/types": ^29.5.0 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: 2e8ff5242227ab960c520c3ea0f6544c595cc1c42fa3873c158e9f4f685f4ec9670ec08a4af94ae3885c0005a43550a9595191ffbc27a0965df27d9d98bbf901 + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-result@npm:29.7.0" dependencies: @@ -9595,7 +13770,30 @@ __metadata: languageName: node linkType: hard -"@jest/transform@npm:^29.3.1, @jest/transform@npm:^29.4.3, @jest/transform@npm:^29.7.0": +"@jest/transform@npm:^29.3.1, @jest/transform@npm:^29.4.3, @jest/transform@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/transform@npm:29.5.0" + dependencies: + "@babel/core": ^7.11.6 + "@jest/types": ^29.5.0 + "@jridgewell/trace-mapping": ^0.3.15 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.5.0 + jest-regex-util: ^29.4.3 + jest-util: ^29.5.0 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + write-file-atomic: ^4.0.2 + checksum: d55d604085c157cf5112e165ff5ac1fa788873b3b31265fb4734ca59892ee24e44119964cc47eb6d178dd9512bbb6c576d1e20e51a201ff4e24d31e818a1c92d + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" dependencies: @@ -9618,17 +13816,6 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^24.9.0": - version: 24.9.0 - resolution: "@jest/types@npm:24.9.0" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^1.1.1 - "@types/yargs": ^13.0.0 - checksum: 603698f774cf22f9d16a0e0fac9e10e7db21052aebfa33db154c8a5940e0eb1fa9c079a8c91681041ad3aeee2adfa950608dd0c663130316ba034b8bca7b301c - languageName: node - linkType: hard - "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -9655,6 +13842,34 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/types@npm:29.5.0" + dependencies: + "@jest/schemas": ^29.4.3 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: 1811f94b19cf8a9460a289c4f056796cfc373480e0492692a6125a553cd1a63824bd846d7bb78820b7b6f758f6dd3c2d4558293bb676d541b2fa59c70fdf9d39 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/types@npm:29.6.0" + dependencies: + "@jest/schemas": ^29.6.0 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: cb793a8c04194c29059c5f3a89416e9e1f3643236d4d545fe99fa43a230be4c521e9e1d46ca97837a731545599c9afe2c5a99ff37ee4edf197be0d8d85433b05 + languageName: node + linkType: hard + "@jest/types@npm:^29.6.3": version: 29.6.3 resolution: "@jest/types@npm:29.6.3" @@ -9676,7 +13891,29 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": +"@jridgewell/gen-mapping@npm:^0.3.0": + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" + dependencies: + "@jridgewell/set-array": ^1.0.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.2": + version: 0.3.2 + resolution: "@jridgewell/gen-mapping@npm:0.3.2" + dependencies: + "@jridgewell/set-array": ^1.0.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: @@ -9687,13 +13924,34 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": +"@jridgewell/resolve-uri@npm:3.1.0": + version: 3.1.0 + resolution: "@jridgewell/resolve-uri@npm:3.1.0" + checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.0.5 + resolution: "@jridgewell/resolve-uri@npm:3.0.5" + checksum: 1ee652b693da7979ac4007926cc3f0a32b657ffeb913e111f44e5b67153d94a2f28a1d560101cc0cf8087625468293a69a00f634a2914e1a6d0817ba2039a913 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 languageName: node linkType: hard +"@jridgewell/set-array@npm:^1.0.1": + version: 1.1.2 + resolution: "@jridgewell/set-array@npm:1.1.2" + checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e + languageName: node + linkType: hard + "@jridgewell/set-array@npm:^1.2.1": version: 1.2.1 resolution: "@jridgewell/set-array@npm:1.2.1" @@ -9701,17 +13959,38 @@ __metadata: languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.3": - version: 0.3.6 - resolution: "@jridgewell/source-map@npm:0.3.6" +"@jridgewell/source-map@npm:^0.3.2, @jridgewell/source-map@npm:^0.3.3": + version: 0.3.3 + resolution: "@jridgewell/source-map@npm:0.3.3" dependencies: - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.25 - checksum: c9dc7d899397df95e3c9ec287b93c0b56f8e4453cd20743e2b9c8e779b1949bc3cccf6c01bb302779e46560eb45f62ea38d19fedd25370d814734268450a9f30 + "@jridgewell/gen-mapping": ^0.3.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: ae1302146339667da5cd6541260ecbef46ae06819a60f88da8f58b3e64682f787c09359933d050dea5d2173ea7fa40f40dd4d4e7a8d325c5892cccd99aaf8959 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:1.4.14": + version: 1.4.14 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" + checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.11 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.11" + checksum: 3b2afaf8400fb07a36db60e901fcce6a746cdec587310ee9035939d89878e57b2dec8173b0b8f63176f647efa352294049a53c49739098eb907ff81fec2547c8 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.5.0": version: 1.5.0 resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec @@ -9728,7 +14007,37 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.0, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.13 + resolution: "@jridgewell/trace-mapping@npm:0.3.13" + dependencies: + "@jridgewell/resolve-uri": ^3.0.3 + "@jridgewell/sourcemap-codec": ^1.4.10 + checksum: e38254e830472248ca10a6ed1ae75af5e8514f0680245a5e7b53bc3c030fd8691d4d3115d80595b45d3badead68269769ed47ecbbdd67db1343a11f05700e75a + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12": + version: 0.3.17 + resolution: "@jridgewell/trace-mapping@npm:0.3.17" + dependencies: + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18": + version: 0.3.18 + resolution: "@jridgewell/trace-mapping@npm:0.3.18" + dependencies: + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + checksum: 0572669f855260808c16fe8f78f5f1b4356463b11d3f2c7c0b5580c8ba1cbf4ae53efe9f627595830856e57dbac2325ac17eb0c3dd0ec42102e6f227cc289c02 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -9745,15 +14054,6 @@ __metadata: languageName: node linkType: hard -"@jsdoc/salty@npm:^0.2.1": - version: 0.2.8 - resolution: "@jsdoc/salty@npm:0.2.8" - dependencies: - lodash: ^4.17.21 - checksum: 9e5db29e2de8ba5db716f85a35119b6e8168779215e027cb467b092215d641fe1d035e9ff7264137bf785993be7eb139aca5f5dd329ba429851f218d3ecb993c - languageName: node - linkType: hard - "@juggle/resize-observer@npm:^3.3.1, @juggle/resize-observer@npm:^3.4.0": version: 3.4.0 resolution: "@juggle/resize-observer@npm:3.4.0" @@ -9771,9 +14071,9 @@ __metadata: linkType: hard "@leichtgewicht/ip-codec@npm:^2.0.1": - version: 2.0.5 - resolution: "@leichtgewicht/ip-codec@npm:2.0.5" - checksum: 4fcd025d0a923cb6b87b631a83436a693b255779c583158bbeacde6b4dd75b94cc1eba1c9c188de5fc36c218d160524ea08bfe4ef03a056b00ff14126d66f881 + version: 2.0.4 + resolution: "@leichtgewicht/ip-codec@npm:2.0.4" + checksum: 468de1f04d33de6d300892683d7c8aecbf96d1e2c5fe084f95f816e50a054d45b7c1ebfb141a1447d844b86a948733f6eebd92234da8581c84a1ad4de2946a2d languageName: node linkType: hard @@ -9784,62 +14084,52 @@ __metadata: languageName: node linkType: hard -"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0": - version: 1.2.3 - resolution: "@lezer/common@npm:1.2.3" - checksum: 9b5f52d949adae69d077f56c0b1c2295923108c3dfb241dd9f17654ff708f3eab81ff9fa7f0d0e4a668eabdcb9d961c73e75caca87c966ca1436e30e49130fcb +"@lezer/common@npm:^1.0.0": + version: 1.0.2 + resolution: "@lezer/common@npm:1.0.2" + checksum: bbcc58e07be02652bf0700d2856042ec089d5be0b95893d628b3e18192ade864fac83b61b19653e10b9f1472261a178b12318d934e9004edd5483a577c0db56b languageName: node linkType: hard "@lezer/highlight@npm:^1.0.0": - version: 1.2.1 - resolution: "@lezer/highlight@npm:1.2.1" + version: 1.1.3 + resolution: "@lezer/highlight@npm:1.1.3" dependencies: "@lezer/common": ^1.0.0 - checksum: a8822d7e37f79ff64669eb2df4a9f9d16580e88f2b276a646092e19a9bdccac304e92510e200e35869a8b1f6c27eba5972c508d347a277e9b722d582ab7a23d5 + checksum: 90ec143ce46b32f6779c3b245f1b5a540d66686939816d3daed8318821acc4bc719466dc222336cfd483bf04a8de4fdc6f279e904cf114d4d9f786f9feccbbd8 languageName: node linkType: hard "@lezer/json@npm:^1.0.0": - version: 1.0.2 - resolution: "@lezer/json@npm:1.0.2" + version: 1.0.0 + resolution: "@lezer/json@npm:1.0.0" dependencies: - "@lezer/common": ^1.2.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 - checksum: f899d13765d95599c9199fc3404cb57969031dc40ce07de30f4e648979153966581f0bee02e2f8f70463b0a5322206a97c2fe8d5d14f218888c72a6dcedf90ef + checksum: c1ca0cdf681415b58a383a669944bed66da3aa830870d32d1e471d545cff0fe43d9ac8a0d2a318a96daa99cd5a645b1d58ba8fbdd2e8d7ca4d33a62c7582cbab languageName: node linkType: hard "@lezer/lr@npm:^1.0.0": - version: 1.4.2 - resolution: "@lezer/lr@npm:1.4.2" + version: 1.3.3 + resolution: "@lezer/lr@npm:1.3.3" dependencies: "@lezer/common": ^1.0.0 - checksum: 94318ad046c7dfcc8d37e26cb85b99623c39aef60aa51ec2abb30928e7a649f38fa5520f34bd5b356f1db11b6991999589f039e87c8949b0f163be3764f029d8 + checksum: 1804074c794005a31c54d80ab72127f19ae5be29bb627c52bc001a57b1af97a9e62732ff13e3aeb7bc53b330202b6bd3747272c64d87f257dbba533e75a183a3 languageName: node linkType: hard "@lit-labs/react@npm:^1.0.2": - version: 1.2.1 - resolution: "@lit-labs/react@npm:1.2.1" - checksum: d4a544c475272630bee54d78a458630ea8b5fab74c18b922ae5046563cc359c8c505188f9f7614ab55e332863f82b179d7970d8b8bd425e77acc167a01657bed - languageName: node - linkType: hard - -"@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0": - version: 1.2.1 - resolution: "@lit-labs/ssr-dom-shim@npm:1.2.1" - checksum: 5667c44f58e16edaa257fc3ae7f752250d5250d4eb1d071b65df0f1fce0b90b42e8528787cc2673998d76d993440143a2a20c3358ce125c62df4cd193784de8d + version: 1.0.5 + resolution: "@lit-labs/react@npm:1.0.5" + checksum: 4868a528d528ee2721f0ba9691aa2c10b3db6d52c56b6f7b01679961512b32cbdb4ee72b78f11c9c305a9c96d53b36bce44ce4768783c05c0645cd45e4b6db83 languageName: node linkType: hard -"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": - version: 1.6.3 - resolution: "@lit/reactive-element@npm:1.6.3" - dependencies: - "@lit-labs/ssr-dom-shim": ^1.0.0 - checksum: 79b58631c38effeabad090070324431da8a22cf0ff665f5e4de35e4d791f984742b3d340c9c7fce996d1124a8da95febc582471b4c237236c770b1300b56ef6e +"@lit/reactive-element@npm:^1.3.0": + version: 1.3.2 + resolution: "@lit/reactive-element@npm:1.3.2" + checksum: 0a89906ddebe2fe2772d942769fc6d69c53e445d476f449690daf371e196b73b99422b7722d262b97d8233e91528ee66b821d013032f0f9fd0f3fd178b4f6a45 languageName: node linkType: hard @@ -9860,8 +14150,8 @@ __metadata: linkType: hard "@mapbox/node-pre-gyp@npm:^1.0.0": - version: 1.0.11 - resolution: "@mapbox/node-pre-gyp@npm:1.0.11" + version: 1.0.9 + resolution: "@mapbox/node-pre-gyp@npm:1.0.9" dependencies: detect-libc: ^2.0.0 https-proxy-agent: ^5.0.0 @@ -9874,7 +14164,7 @@ __metadata: tar: ^6.1.11 bin: node-pre-gyp: bin/node-pre-gyp - checksum: b848f6abc531a11961d780db813cc510ca5a5b6bf3184d72134089c6875a91c44d571ba6c1879470020803f7803609e7b2e6e429651c026fe202facd11d444b8 + checksum: 1b9c4c87a68d200daa13151d0fe033aa7aa8f7b26f3585255424dd8dfee2ec672c3e9bea4071c624469bc0aebbbcde08f8a300c8a958db52c50abadd5fb56920 languageName: node linkType: hard @@ -9951,109 +14241,44 @@ __metadata: languageName: node linkType: hard -"@motionone/animation@npm:^10.18.0": - version: 10.18.0 - resolution: "@motionone/animation@npm:10.18.0" - dependencies: - "@motionone/easing": ^10.18.0 - "@motionone/types": ^10.17.1 - "@motionone/utils": ^10.18.0 - tslib: ^2.3.1 - checksum: 841cb9f4843a89e5e4560b9f960f52cbe78afc86f87c769f71e9edb3aadd53fb87982b7e11914428f228b29fd580756be531369c2ffac06432550afa4e87d1c3 - languageName: node - linkType: hard - -"@motionone/dom@npm:^10.15.3": - version: 10.18.0 - resolution: "@motionone/dom@npm:10.18.0" - dependencies: - "@motionone/animation": ^10.18.0 - "@motionone/generators": ^10.18.0 - "@motionone/types": ^10.17.1 - "@motionone/utils": ^10.18.0 - hey-listen: ^1.0.8 - tslib: ^2.3.1 - checksum: b11f5366b05d1a93d7df0c91923f0339412e5eb65de2010b1d0484bcbb8027d352334722ce6b839f1be776585d849d1bcbee9d96b2445f6bb6e82301fe67bbeb - languageName: node - linkType: hard - -"@motionone/easing@npm:^10.18.0": - version: 10.18.0 - resolution: "@motionone/easing@npm:10.18.0" - dependencies: - "@motionone/utils": ^10.18.0 - tslib: ^2.3.1 - checksum: 6bd37f7a9d5a88f868cc0ad6e47d2ba8d9fefd7da84fccfea7ed77ec08c2e6d1e42df88dda462665102a5cf03f748231a1a077de7054b5a8ccb0fbf36f61b1e7 - languageName: node - linkType: hard - -"@motionone/generators@npm:^10.18.0": - version: 10.18.0 - resolution: "@motionone/generators@npm:10.18.0" - dependencies: - "@motionone/types": ^10.17.1 - "@motionone/utils": ^10.18.0 - tslib: ^2.3.1 - checksum: 51a0e075681697b11d0771998cac8c76a745f00141502f81adb953896992b7f49478965e4afe696bc83361afaae8d2f1057d71c25b21035fe67258ff73764f1c - languageName: node - linkType: hard - -"@motionone/types@npm:^10.17.1": - version: 10.17.1 - resolution: "@motionone/types@npm:10.17.1" - checksum: 3fa74db64e371e61a7f7669d7d541d11c9a8dd871032d59c69041e3b2e07a67ad2ed8767cb9273bac90eed4e1f76efc1f14c8673c2e9a288f6070ee0fef64a25 - languageName: node - linkType: hard - -"@motionone/utils@npm:^10.18.0": - version: 10.18.0 - resolution: "@motionone/utils@npm:10.18.0" - dependencies: - "@motionone/types": ^10.17.1 - hey-listen: ^1.0.8 - tslib: ^2.3.1 - checksum: a27f9afde693a0cbbbcb33962b12bbe40dd2cfa514b0732f3c7953c5ef4beed738e1e8172a2de89e3b9f74a253ef0a70d7f3efb730be97b77d7176a3ffacb67a - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3" +"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3" +"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3" +"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.2" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3" +"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3" +"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.2" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3" +"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -10648,6 +14873,16 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.scandir@npm:2.1.4": + version: 2.1.4 + resolution: "@nodelib/fs.scandir@npm:2.1.4" + dependencies: + "@nodelib/fs.stat": 2.0.4 + run-parallel: ^1.1.9 + checksum: 18c2150ab52a042bd65babe5b70106e6586dc036644131c33d253ff99e5eeef2e65858ab40161530a6f22b512a65e7c7629f0f1e0f35c00ee4c606f960d375ba + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -10658,40 +14893,37 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": +"@nodelib/fs.stat@npm:2.0.4, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.4 + resolution: "@nodelib/fs.stat@npm:2.0.4" + checksum: d0d9745f878816d041a8b36faf5797d88ba961274178f0ad1f7fe0efef8118ca9bd0e43e4d0d85a9af911bd35122ec1580e626a83d7595fc4d60f2c1c70e2665 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.6 + resolution: "@nodelib/fs.walk@npm:1.2.6" dependencies: - "@nodelib/fs.scandir": 2.1.5 + "@nodelib/fs.scandir": 2.1.4 fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 - languageName: node - linkType: hard - -"@nolyfill/is-core-module@npm:1.0.39": - version: 1.0.39 - resolution: "@nolyfill/is-core-module@npm:1.0.39" - checksum: 0d6e098b871eca71d875651288e1f0fa770a63478b0b50479c99dc760c64175a56b5b04f58d5581bbcc6b552b8191ab415eada093d8df9597ab3423c8cac1815 + checksum: d156901823b3d3de368ad68047a964523e0ce5f796c0aa7712443b1f748d8e7fc24ce2c0f18d22a177e1f1c6092bca609ab5e4cb1792c41cdc8a6989bc391139 languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" +"@nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: - agent-base: ^7.1.0 - http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.1 - lru-cache: ^10.0.1 - socks-proxy-agent: ^8.0.3 - checksum: 67de7b88cc627a79743c88bab35e023e23daf13831a8aa4e15f998b92f5507b644d8ffc3788afc8e64423c612e0785a6a92b74782ce368f49a6746084b50d874 + "@nodelib/fs.scandir": 2.1.5 + fastq: ^1.6.0 + checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 languageName: node linkType: hard @@ -10744,12 +14976,12 @@ __metadata: languageName: node linkType: hard -"@nrwl/cli@npm:*, @nrwl/cli@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/cli@npm:15.9.7" +"@nrwl/cli@npm:*, @nrwl/cli@npm:14.0.3": + version: 14.0.3 + resolution: "@nrwl/cli@npm:14.0.3" dependencies: - nx: 15.9.7 - checksum: 55bcd3ec4319bdcbd51184a01f5dc3c03ab2a79caa1240249f6ca11c3e33555954bfab19d9156b210bf46fea9b6d543312cd199cd1421cd9b21a84224a76dc73 + nx: 14.0.3 + checksum: b7f2d11f9329d4e1dbf6b071b3aaf5d1687b17bb73dac33d17c745b7007f9e5aca0d4b8d34dcc8530eb79f633111f610ee0572ee4a5236de0033cc39e0684454 languageName: node linkType: hard @@ -10895,69 +15127,6 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-darwin-arm64@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-darwin-arm64@npm:15.9.7" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@nrwl/nx-darwin-x64@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-darwin-x64@npm:15.9.7" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@nrwl/nx-linux-arm-gnueabihf@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.7" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@nrwl/nx-linux-arm64-gnu@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.9.7" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@nrwl/nx-linux-arm64-musl@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-linux-arm64-musl@npm:15.9.7" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@nrwl/nx-linux-x64-gnu@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-linux-x64-gnu@npm:15.9.7" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@nrwl/nx-linux-x64-musl@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-linux-x64-musl@npm:15.9.7" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@nrwl/nx-win32-arm64-msvc@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.9.7" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@nrwl/nx-win32-x64-msvc@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/nx-win32-x64-msvc@npm:15.9.7" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@nrwl/react@npm:19.4.0": version: 19.4.0 resolution: "@nrwl/react@npm:19.4.0" @@ -10997,14 +15166,14 @@ __metadata: languageName: node linkType: hard -"@nrwl/tao@npm:15.9.7": - version: 15.9.7 - resolution: "@nrwl/tao@npm:15.9.7" +"@nrwl/tao@npm:14.0.3": + version: 14.0.3 + resolution: "@nrwl/tao@npm:14.0.3" dependencies: - nx: 15.9.7 + nx: 14.0.3 bin: tao: index.js - checksum: 8c848c72f02de776086d2ad82928e15b102b2fb943eed5943a54375f16a75f2a3d2444385ead26bf3f465139d69fd5011ca429961be3970ed8addc7187880cd1 + checksum: 136abd0a048c46475dff57069799c787399676742cdd69fa9b583533e59735cd30c0aa0f412328949ba09bd59e26bb0d1ce30c248cb654ac7453bfcf071e463c languageName: node linkType: hard @@ -11546,8 +15715,8 @@ __metadata: linkType: hard "@oclif/core@npm:^4": - version: 4.0.30 - resolution: "@oclif/core@npm:4.0.30" + version: 4.0.31 + resolution: "@oclif/core@npm:4.0.31" dependencies: ansi-escapes: ^4.3.2 ansis: ^3.3.2 @@ -11558,7 +15727,7 @@ __metadata: get-package-type: ^0.1.0 globby: ^11.1.0 indent-string: ^4.0.0 - is-wsl: ^3 + is-wsl: ^2.2.0 lilconfig: ^3.1.2 minimatch: ^9.0.5 semver: ^7.6.3 @@ -11567,7 +15736,7 @@ __metadata: widest-line: ^3.1.0 wordwrap: ^1.0.0 wrap-ansi: ^7.0.0 - checksum: 27d40a01af641c67a80b4a127efe475ceb9183a717d74352e507f277f66158df41f88e43cb49c1b39414be7cc19bb4338f8ae9fc2ee1b321a07ec2e41cacdc40 + checksum: 61e7d695937b35b6a171a68dc432816818c1a7638d49332c085e35ca37db1c175a8f60ecf9d4e7c4d70c367ea68adaddb4e10893201b422b756cd5bdbf4d3a53 languageName: node linkType: hard @@ -11580,13 +15749,6 @@ __metadata: languageName: node linkType: hard -"@one-ini/wasm@npm:0.1.1": - version: 0.1.1 - resolution: "@one-ini/wasm@npm:0.1.1" - checksum: 11de17108eae57c797e552e36b259398aede999b4a689d78be6459652edc37f3428472410590a9d328011a8751b771063a5648dd5c4205631c55d1d58e313156 - languageName: node - linkType: hard - "@open-draft/until@npm:^1.0.3": version: 1.0.3 resolution: "@open-draft/until@npm:1.0.3" @@ -11611,27 +15773,27 @@ __metadata: linkType: hard "@opentelemetry/api@npm:^1.0.1": - version: 1.9.0 - resolution: "@opentelemetry/api@npm:1.9.0" - checksum: 9e88e59d53ced668f3daaecfd721071c5b85a67dd386f1c6f051d1be54375d850016c881f656ffbe9a03bedae85f7e89c2f2b635313f9c9b195ad033cdc31020 + version: 1.2.0 + resolution: "@opentelemetry/api@npm:1.2.0" + checksum: 764efa81bf939200a8e80520a4735b23038abafc60c80420b007ae2bbb7ad843d806894414e95d974c2ef1b81d4ae8a3106804e1af7b5090240cfeb2467db099 languageName: node linkType: hard "@opentelemetry/core@npm:^1.14.0": - version: 1.27.0 - resolution: "@opentelemetry/core@npm:1.27.0" + version: 1.15.1 + resolution: "@opentelemetry/core@npm:1.15.1" dependencies: - "@opentelemetry/semantic-conventions": 1.27.0 + "@opentelemetry/semantic-conventions": 1.15.1 peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 33ff551f89f0bb95830c9f9464c43b11adf88882ec1d3a03a5b9afcc89d2aafab33c36cb5047f18667d7929d6ab40ed0121649c42d0105f1cb33ffdca48f8b13 + "@opentelemetry/api": ">=1.0.0 <1.5.0" + checksum: 875c75870bc3b178db20edfde90052cc09086c41736b9e31587cce428c569421b87553c4cffbf4efee9b2919030b8150bcf95af26933d52207b344ae8b397040 languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" - checksum: 26d85f8d13c8c64024f7a84528cff41d56afc9829e7ff8a654576404f8b2c1a9c264adcc6fa5a9551bacdd938a4a464041fa9493e0a722e5605f2c2ae6752398 +"@opentelemetry/semantic-conventions@npm:1.15.1": + version: 1.15.1 + resolution: "@opentelemetry/semantic-conventions@npm:1.15.1" + checksum: 19fab8a805a13e4b6cfaacf31607301acdd2c415e8e8afa1f8313c68110b49d9cf02a6a1cc969f67ab71b1dbfcb5c5b063392c68f46fa32d05dbae9ce245e0d0 languageName: node linkType: hard @@ -11642,90 +15804,6 @@ __metadata: languageName: node linkType: hard -"@parcel/watcher-android-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-android-arm64@npm:2.4.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@parcel/watcher-darwin-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@parcel/watcher-darwin-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@parcel/watcher-freebsd-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@parcel/watcher-linux-arm-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - -"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@parcel/watcher-linux-arm64-musl@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@parcel/watcher-linux-x64-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@parcel/watcher-linux-x64-musl@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@parcel/watcher-win32-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@parcel/watcher-win32-ia32@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@parcel/watcher-win32-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-x64@npm:2.4.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@parcel/watcher@npm:2.0.0-alpha.11": version: 2.0.0-alpha.11 resolution: "@parcel/watcher@npm:2.0.0-alpha.11" @@ -11748,56 +15826,6 @@ __metadata: languageName: node linkType: hard -"@parcel/watcher@npm:^2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher@npm:2.4.1" - dependencies: - "@parcel/watcher-android-arm64": 2.4.1 - "@parcel/watcher-darwin-arm64": 2.4.1 - "@parcel/watcher-darwin-x64": 2.4.1 - "@parcel/watcher-freebsd-x64": 2.4.1 - "@parcel/watcher-linux-arm-glibc": 2.4.1 - "@parcel/watcher-linux-arm64-glibc": 2.4.1 - "@parcel/watcher-linux-arm64-musl": 2.4.1 - "@parcel/watcher-linux-x64-glibc": 2.4.1 - "@parcel/watcher-linux-x64-musl": 2.4.1 - "@parcel/watcher-win32-arm64": 2.4.1 - "@parcel/watcher-win32-ia32": 2.4.1 - "@parcel/watcher-win32-x64": 2.4.1 - detect-libc: ^1.0.3 - is-glob: ^4.0.3 - micromatch: ^4.0.5 - node-addon-api: ^7.0.0 - node-gyp: latest - dependenciesMeta: - "@parcel/watcher-android-arm64": - optional: true - "@parcel/watcher-darwin-arm64": - optional: true - "@parcel/watcher-darwin-x64": - optional: true - "@parcel/watcher-freebsd-x64": - optional: true - "@parcel/watcher-linux-arm-glibc": - optional: true - "@parcel/watcher-linux-arm64-glibc": - optional: true - "@parcel/watcher-linux-arm64-musl": - optional: true - "@parcel/watcher-linux-x64-glibc": - optional: true - "@parcel/watcher-linux-x64-musl": - optional: true - "@parcel/watcher-win32-arm64": - optional: true - "@parcel/watcher-win32-ia32": - optional: true - "@parcel/watcher-win32-x64": - optional: true - checksum: 4da70551da27e565c726b0bbd5ba5afcb2bca36dfd8619a649f0eaa41f693ddd1d630c36e53bc083895d71a3e28bc4199013e557cd13c7af6ccccab28ceecbff - languageName: node - linkType: hard - "@pdf-lib/standard-fonts@npm:^1.0.0": version: 1.0.0 resolution: "@pdf-lib/standard-fonts@npm:1.0.0" @@ -11817,61 +15845,72 @@ __metadata: linkType: hard "@peculiar/asn1-android@npm:^2.3.10": - version: 2.3.13 - resolution: "@peculiar/asn1-android@npm:2.3.13" + version: 2.3.10 + resolution: "@peculiar/asn1-android@npm:2.3.10" dependencies: - "@peculiar/asn1-schema": ^2.3.13 + "@peculiar/asn1-schema": ^2.3.8 asn1js: ^3.0.5 tslib: ^2.6.2 - checksum: 49c6a55d905041bd0d5f747411c40ea7bd87b910f6ddc2a1b1553fd23fed92e17f3a3a65925f629b568a98f788c5300d62d63eccb87f54d06a2b3ad2a2aeaa0e + checksum: 882a1b5129c9ad99abf7e8bc1b4373c454af1f8921e571a638e0ec27e77327703db0cb669cd13bc71f4c8e2e7f39e344d6c6741405184148ea1e3bd4b9d5fb59 languageName: node linkType: hard "@peculiar/asn1-ecc@npm:^2.3.8": - version: 2.3.14 - resolution: "@peculiar/asn1-ecc@npm:2.3.14" + version: 2.3.8 + resolution: "@peculiar/asn1-ecc@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.13 - "@peculiar/asn1-x509": ^2.3.13 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 asn1js: ^3.0.5 tslib: ^2.6.2 - checksum: 2fc71612c63ff7d7ea640489cf55028f54cd5f7c8e49387a80f5b6ea61f0e1ddc435e1ae005ec02edc7dea5f296c824b0f8160ea6101796790ec49014420f07b + checksum: c7db2004a03f88c35fcd21957c8c15bfbf29c137a636bbc35d51dcebbc287ec253762e127d50197f0b5910600e3641a738c8ca756a15741fc09272272b0303f4 languageName: node linkType: hard "@peculiar/asn1-rsa@npm:^2.3.8": - version: 2.3.13 - resolution: "@peculiar/asn1-rsa@npm:2.3.13" + version: 2.3.8 + resolution: "@peculiar/asn1-rsa@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.13 - "@peculiar/asn1-x509": ^2.3.13 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 asn1js: ^3.0.5 tslib: ^2.6.2 - checksum: 3d5d0c2546457422362a9a383bcfdb4333659805f6ca75cbd5b144783d8f45d533448ff64aa550682b95de1fd625db7eddbe44e9cc923092f36c8265d4cfce84 + checksum: d9bf0f143686b475d3cc9f9b7d948826dc8c8764bc865697705351278541f0bf31a8f788ec8ff8bf6e4150b04aa65b20853bda45d77e4abbac717d7019e6fd56 languageName: node linkType: hard -"@peculiar/asn1-schema@npm:^2.3.13, @peculiar/asn1-schema@npm:^2.3.8": - version: 2.3.13 - resolution: "@peculiar/asn1-schema@npm:2.3.13" +"@peculiar/asn1-schema@npm:^2.1.6": + version: 2.3.0 + resolution: "@peculiar/asn1-schema@npm:2.3.0" + dependencies: + asn1js: ^3.0.5 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: aa510c68de83be94a8d0e96ca1f7c92d2bd790867eed887c0db32d6b2fc49c5dd9d8269648e9665686ba9b2fd8469324c61e04fed50f7aad3f68a0ca0e1cde4b + languageName: node + linkType: hard + +"@peculiar/asn1-schema@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-schema@npm:2.3.8" dependencies: asn1js: ^3.0.5 pvtsutils: ^1.3.5 tslib: ^2.6.2 - checksum: 245cf398992788fc61c48a4e1263a47803bccd91807e7a419e3fe9ad44ede5e396a5f8d13215b0765774855b634fe10d730b08944e5dc085fc5ee121a7e0139e + checksum: 1f4dd421f1411df8bc52bca12b1cef710434c13ff0a8b5746ede42b10d62b5ad06a3925c4a6db53102aaf1e589947539a6955fa8554a9b8ebb1ffa38b0155a24 languageName: node linkType: hard -"@peculiar/asn1-x509@npm:^2.3.13, @peculiar/asn1-x509@npm:^2.3.8": - version: 2.3.13 - resolution: "@peculiar/asn1-x509@npm:2.3.13" +"@peculiar/asn1-x509@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-x509@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.13 + "@peculiar/asn1-schema": ^2.3.8 asn1js: ^3.0.5 ipaddr.js: ^2.1.0 pvtsutils: ^1.3.5 tslib: ^2.6.2 - checksum: b8094400138d6e982248d038443520eae00f349d519bbd763b7652dac1b5635bb7c8d952b3a5d060316c8267f09b98676c3e113023215c72f22eb420f6440b13 + checksum: 23856e5d024298447afca55bd68d19a7440c0ae076437aee5ced26a0fa2e4efa3e0e4a354fa6ee9968d62ac21ee1c2186fc427942bacfc824d3a3a4d2e80d14b languageName: node linkType: hard @@ -11885,15 +15924,15 @@ __metadata: linkType: hard "@peculiar/webcrypto@npm:^1.4.0": - version: 1.5.0 - resolution: "@peculiar/webcrypto@npm:1.5.0" + version: 1.4.0 + resolution: "@peculiar/webcrypto@npm:1.4.0" dependencies: - "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-schema": ^2.1.6 "@peculiar/json-schema": ^1.1.12 - pvtsutils: ^1.3.5 - tslib: ^2.6.2 - webcrypto-core: ^1.8.0 - checksum: 9022d7452d564a5a26fbacf477842be34736f2d9139f2f5026adc47fdeda7033193d727491503f2a829d35ab819bbfa61c82a785c49c999eac535ecd69a3a459 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + webcrypto-core: ^1.7.4 + checksum: 3a7a3c8f253170436f353a61b807d2e2e7a686e6a9607487fde6459ddfff34c8000414287a6cd904bd81e002ce4564811b3c7789a0fd932cf015df6c4002fd02 languageName: node linkType: hard @@ -11915,15 +15954,28 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:1.29": - version: 1.29.2 - resolution: "@playwright/test@npm:1.29.2" +"@pkgr/utils@npm:^2.3.1": + version: 2.4.1 + resolution: "@pkgr/utils@npm:2.4.1" dependencies: - "@types/node": "*" - playwright-core: 1.29.2 + cross-spawn: ^7.0.3 + fast-glob: ^3.2.12 + is-glob: ^4.0.3 + open: ^9.1.0 + picocolors: ^1.0.0 + tslib: ^2.5.0 + checksum: 654682860272541a40485b01e0763b155ec31faeba85b2c51e38b59c4ff1f8918c37b87b5ecbda3ff482d8486eba086e92b991fe4a8ed62efbbbdf83c0f64409 + languageName: node + linkType: hard + +"@playwright/test@npm:1.48": + version: 1.48.2 + resolution: "@playwright/test@npm:1.48.2" + dependencies: + playwright: 1.48.2 bin: playwright: cli.js - checksum: 614cd4ed3baa4e41a6c7865f3c49733caef2c9d5a1aae5832b3d145ffdb0be2dd9d30136c0cb8aed5f9d452782baf2f380e5b12092958bf9fa7578a6d5fa61bf + checksum: 926e9411c800bbbf188271fe399f93d2abb1e50aac7844a44a698b3c6dae6f874a3715b1bf6d2f367dd53adb87d9f5d80d03ef71060901a59b6e227d8ed23826 languageName: node linkType: hard @@ -11965,16 +16017,30 @@ __metadata: linkType: hard "@polka/url@npm:^1.0.0-next.20": - version: 1.0.0-next.28 - resolution: "@polka/url@npm:1.0.0-next.28" - checksum: 7402aaf1de781d0eb0870d50cbcd394f949aee11b38a267a5c3b4e3cfee117e920693e6e93ce24c87ae2d477a59634f39d9edde8e86471cae756839b07c79af7 + version: 1.0.0-next.21 + resolution: "@polka/url@npm:1.0.0-next.21" + checksum: c7654046d38984257dd639eab3dc770d1b0340916097b2fac03ce5d23506ada684e05574a69b255c32ea6a144a957c8cd84264159b545fca031c772289d88788 + languageName: node + linkType: hard + +"@popperjs/core@npm:^2.11.5, @popperjs/core@npm:^2.9.2": + version: 2.11.6 + resolution: "@popperjs/core@npm:2.11.6" + checksum: 47fb328cec1924559d759b48235c78574f2d71a8a6c4c03edb6de5d7074078371633b91e39bbf3f901b32aa8af9b9d8f82834856d2f5737a23475036b16817f0 + languageName: node + linkType: hard + +"@popperjs/core@npm:^2.4.4": + version: 2.9.2 + resolution: "@popperjs/core@npm:2.9.2" + checksum: a5916302e706b7dfbbbcd8728bafc1682b450d5ec70dd10da84a07c89a419fa72f83cbf990798589e6e69e1b520d6768176ea4bd360d7450d08a2fbc25a14e1c languageName: node linkType: hard -"@popperjs/core@npm:^2.11.5, @popperjs/core@npm:^2.4.4, @popperjs/core@npm:^2.5.4, @popperjs/core@npm:^2.9.2": - version: 2.11.8 - resolution: "@popperjs/core@npm:2.11.8" - checksum: e5c69fdebf52a4012f6a1f14817ca8e9599cb1be73dd1387e1785e2ed5e5f0862ff817f420a87c7fc532add1f88a12e25aeb010ffcbdc98eace3d55ce2139cf0 +"@popperjs/core@npm:^2.5.4": + version: 2.11.7 + resolution: "@popperjs/core@npm:2.11.7" + checksum: 5b6553747899683452a1d28898c1b39173a4efd780e74360bfcda8eb42f1c5e819602769c81a10920fc68c881d07fb40429604517d499567eac079cfa6470f19 languageName: node linkType: hard @@ -12060,6 +16126,15 @@ __metadata: languageName: node linkType: hard +"@radix-ui/primitive@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/primitive@npm:1.0.0" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 72996afaf346ec4f4c73422f14f6cb2d0de994801ba7cbb9a4a67b0050e0cd74625182c349ef8017ccae1406579d4b74a34a225ef2efe61e8e5337decf235deb + languageName: node + linkType: hard + "@radix-ui/primitive@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/primitive@npm:1.0.1" @@ -12069,13 +16144,6 @@ __metadata: languageName: node linkType: hard -"@radix-ui/primitive@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/primitive@npm:1.1.0" - checksum: 7cbf70bfd4b2200972dbd52a9366801b5a43dd844743dc97eb673b3ec8e64f5dd547538faaf9939abbfe8bb275773767ecf5a87295d90ba09c15cba2b5528c89 - languageName: node - linkType: hard - "@radix-ui/react-arrow@npm:1.0.3": version: 1.0.3 resolution: "@radix-ui/react-arrow@npm:1.0.3" @@ -12096,6 +16164,22 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-collection@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-collection@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.0 + "@radix-ui/react-context": 1.0.0 + "@radix-ui/react-primitive": 1.0.1 + "@radix-ui/react-slot": 1.0.1 + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + checksum: 4922b358baf54aa343da5235fd061a289bedef9488254696bb4eb09b320da9da91bf55e148d89f07df80afa5429804f8a203159978cddeea423e58fdea703cd0 + languageName: node + linkType: hard + "@radix-ui/react-collection@npm:1.0.3": version: 1.0.3 resolution: "@radix-ui/react-collection@npm:1.0.3" @@ -12119,25 +16203,14 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-collection@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-collection@npm:1.1.0" +"@radix-ui/react-compose-refs@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/react-compose-refs@npm:1.0.0" dependencies: - "@radix-ui/react-compose-refs": 1.1.0 - "@radix-ui/react-context": 1.1.0 - "@radix-ui/react-primitive": 2.0.0 - "@radix-ui/react-slot": 1.1.0 + "@babel/runtime": ^7.13.10 peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - checksum: 70cee7f23cf19b0a9533723ba2ce80a40013d7b5e3588acd40e3f155cb46e0d94d9ebef58fd907d9862e2cb2b65f3f73315719597a790aefabfeae8a64566807 + react: ^16.8 || ^17.0 || ^18.0 + checksum: fb98be2e275a1a758ccac647780ff5b04be8dcf25dcea1592db3b691fecf719c4c0700126da605b2f512dd89caa111352b9fad59528d736b4e0e9a0e134a74a1 languageName: node linkType: hard @@ -12156,16 +16229,14 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-compose-refs@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-compose-refs@npm:1.1.0" +"@radix-ui/react-context@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/react-context@npm:1.0.0" + dependencies: + "@babel/runtime": ^7.13.10 peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 047a4ed5f87cb848be475507cd62836cf5af5761484681f521ea543ea7c9d59d61d42806d6208863d5e2380bf38cdf4cff73c2bbe5f52dbbe50fb04e1a13ac72 + react: ^16.8 || ^17.0 || ^18.0 + checksum: 43c6b6f2183398161fe6b109e83fff240a6b7babbb27092b815932342a89d5ca42aa9806bfae5927970eed5ff90feed04c67aa29c6721f84ae826f17fcf34ce0 languageName: node linkType: hard @@ -12184,29 +16255,14 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-context@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-context@npm:1.1.0" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - checksum: d48df5e5193a1d963a1ff7a58f08497c60ddc364216c59090c8267985bd478447dd617847ea277afe10e67c4e0c528894c8d7407082325e0650038625140558a - languageName: node - linkType: hard - -"@radix-ui/react-context@npm:1.1.1": - version: 1.1.1 - resolution: "@radix-ui/react-context@npm:1.1.1" +"@radix-ui/react-direction@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/react-direction@npm:1.0.0" + dependencies: + "@babel/runtime": ^7.13.10 peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 9a04db236685dacc2f5ab2bdcfc4c82b974998e712ab97d79b11d5b4ef073d24aa9392398c876ef6cb3c59f40299285ceee3646187ad818cdad4fe1c74469d3f + react: ^16.8 || ^17.0 || ^18.0 + checksum: 92a40de4087b161a56957872daf204a7735bd21f2fccbd42deff322d759977d085ad3dcdae05af437b7e64e628e939e0d67e5bc468a3027e1b02e0a7dc90c485 languageName: node linkType: hard @@ -12225,19 +16281,6 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-direction@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-direction@npm:1.1.0" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 25ad0d1d65ad08c93cebfbefdff9ef2602e53f4573a66b37d2c366ede9485e75ec6fc8e7dd7d2939b34ea5504ca0fe6ac4a3acc2f6ee9b62d131d65486eafd49 - languageName: node - linkType: hard - "@radix-ui/react-dismissable-layer@npm:1.0.4": version: 1.0.4 resolution: "@radix-ui/react-dismissable-layer@npm:1.0.4" @@ -12299,34 +16342,31 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-id@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-id@npm:1.0.1" +"@radix-ui/react-id@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/react-id@npm:1.0.0" dependencies: "@babel/runtime": ^7.13.10 - "@radix-ui/react-use-layout-effect": 1.0.1 + "@radix-ui/react-use-layout-effect": 1.0.0 peerDependencies: - "@types/react": "*" react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 446a453d799cc790dd2a1583ff8328da88271bff64530b5a17c102fa7fb35eece3cf8985359d416f65e330cd81aa7b8fe984ea125fc4f4eaf4b3801d698e49fe + checksum: ba323cedd6a6df6f6e51ed1f7f7747988ce432b47fd94d860f962b14b342dcf049eae33f8ad0b72fd7df6329a7375542921132271fba64ab0a271c93f09c48d1 languageName: node linkType: hard -"@radix-ui/react-id@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-id@npm:1.1.0" +"@radix-ui/react-id@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-id@npm:1.0.1" dependencies: - "@radix-ui/react-use-layout-effect": 1.1.0 + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-layout-effect": 1.0.1 peerDependencies: "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 6fbc9d1739b3b082412da10359e63967b4f3a60383ebda4c9e56b07a722d29bee53b203b3b1418f88854a29315a7715867133bb149e6e22a027a048cdd20d970 + checksum: 446a453d799cc790dd2a1583ff8328da88271bff64530b5a17c102fa7fb35eece3cf8985359d416f65e330cd81aa7b8fe984ea125fc4f4eaf4b3801d698e49fe languageName: node linkType: hard @@ -12379,23 +16419,30 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-presence@npm:1.1.1": - version: 1.1.1 - resolution: "@radix-ui/react-presence@npm:1.1.1" +"@radix-ui/react-presence@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/react-presence@npm:1.0.0" dependencies: - "@radix-ui/react-compose-refs": 1.1.0 - "@radix-ui/react-use-layout-effect": 1.1.0 + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.0 + "@radix-ui/react-use-layout-effect": 1.0.0 peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - checksum: 1831b5f5d096dc197aa4c5e9952ab24494f56843b981c6a4de0d3bd16de48fd6f20f9173424c5f876ed3dbdd1336875d149f7efefe24c185238234d868944795 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + checksum: a607d67795aa265e88f1765dcc7c18bebf6d88d116cb7f529ebe5a3fbbe751a42763aff0c1c89cdd8ce7f7664355936c4070fd3d4685774aff1a80fa95f4665b + languageName: node + linkType: hard + +"@radix-ui/react-primitive@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-primitive@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-slot": 1.0.1 + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + checksum: 1cc86b72f926be4a42122e7e456e965de0906f16b0dc244b8448bac05905f208598c984a0dd40026f654b4a71d0235335d48a18e377b07b0ec6c6917576a8080 languageName: node linkType: hard @@ -12419,49 +16466,52 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-primitive@npm:2.0.0": - version: 2.0.0 - resolution: "@radix-ui/react-primitive@npm:2.0.0" +"@radix-ui/react-roving-focus@npm:1.0.2": + version: 1.0.2 + resolution: "@radix-ui/react-roving-focus@npm:1.0.2" dependencies: - "@radix-ui/react-slot": 1.1.0 + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.0 + "@radix-ui/react-collection": 1.0.1 + "@radix-ui/react-compose-refs": 1.0.0 + "@radix-ui/react-context": 1.0.0 + "@radix-ui/react-direction": 1.0.0 + "@radix-ui/react-id": 1.0.0 + "@radix-ui/react-primitive": 1.0.1 + "@radix-ui/react-use-callback-ref": 1.0.0 + "@radix-ui/react-use-controllable-state": 1.0.0 peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - checksum: 04afc0f3a5ccf1de6e4861f755a89f31640d5a07237c5ac5bffe47bcd8fdf318257961fa56fedc823af49281800ee755752a371561c36fd92f008536a0553748 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + checksum: 93e260b91198cc9b0b2a05d1e7c8c83a06c7c1b80a46d3088c3fb39a776238128c8b7e6061a5d9726246f75283321fd0858181e51a475a295dd2f3059f513f49 languageName: node linkType: hard -"@radix-ui/react-roving-focus@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-roving-focus@npm:1.1.0" - dependencies: - "@radix-ui/primitive": 1.1.0 - "@radix-ui/react-collection": 1.1.0 - "@radix-ui/react-compose-refs": 1.1.0 - "@radix-ui/react-context": 1.1.0 - "@radix-ui/react-direction": 1.1.0 - "@radix-ui/react-id": 1.1.0 - "@radix-ui/react-primitive": 2.0.0 - "@radix-ui/react-use-callback-ref": 1.1.0 - "@radix-ui/react-use-controllable-state": 1.1.0 +"@radix-ui/react-roving-focus@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-roving-focus@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-collection": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-id": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-controllable-state": 1.0.1 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: 6f3a3fd047b0ac503f8a97297fba937c15653d01c883f344970f1c4206e9485572bc613f2561973f9010e96525ca87030ca5abf83a2e4dd67511f8b5afa20581 + checksum: 69b1c82c2d9db3ba71549a848f2704200dab1b2cd22d050c1e081a78b9a567dbfdc7fd0403ee010c19b79652de69924d8ca2076cd031d6552901e4213493ffc7 languageName: node linkType: hard @@ -12505,26 +16555,39 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-separator@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-separator@npm:1.1.0" +"@radix-ui/react-separator@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-separator@npm:1.0.3" dependencies: - "@radix-ui/react-primitive": 2.0.0 + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: a7c3445603a45075dcf3559eb8f2f2e8545afeae253e67d0bde736c66b293c601974a1d6f9d7be1802d83869933dc120a7389ab98189ceb9a24659737dde0162 + checksum: 42f8c95e404de2ce9387040d78049808a48d423cd4c3bad8cca92c4b0bcbdcb3566b5b52a920d4e939a74b51188697f20a012221f0e630fc7f56de64096c15d2 + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-slot@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.0 + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + checksum: a20693f8ce532bd6cbff12ba543dfcf90d451f22923bd60b57dc9e639f6e53348915e182002b33444feb6ab753434e78e2a54085bf7092aadda4418f0423763f languageName: node linkType: hard -"@radix-ui/react-slot@npm:1.0.2": +"@radix-ui/react-slot@npm:1.0.2, @radix-ui/react-slot@npm:^1.0.2": version: 1.0.2 resolution: "@radix-ui/react-slot@npm:1.0.2" dependencies: @@ -12540,115 +16603,108 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-slot@npm:1.1.0, @radix-ui/react-slot@npm:^1.0.2": - version: 1.1.0 - resolution: "@radix-ui/react-slot@npm:1.1.0" +"@radix-ui/react-tabs@npm:^1.0.1": + version: 1.0.2 + resolution: "@radix-ui/react-tabs@npm:1.0.2" dependencies: - "@radix-ui/react-compose-refs": 1.1.0 + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.0 + "@radix-ui/react-context": 1.0.0 + "@radix-ui/react-direction": 1.0.0 + "@radix-ui/react-id": 1.0.0 + "@radix-ui/react-presence": 1.0.0 + "@radix-ui/react-primitive": 1.0.1 + "@radix-ui/react-roving-focus": 1.0.2 + "@radix-ui/react-use-controllable-state": 1.0.0 peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 3c9cd90aabf08f541e20dbecb581744be01c552a0cd16e90d7c218381bcc5307aa8a6013d045864e692ba89d3d8c17bfae08df18ed18be6d223d9330ab0302fa + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + checksum: 135f1663830f0e2ccdd04bac38bfef2460ba8b950e331ce37100a9850ee1f4249c7e912d2893893faa9df2596a3c0d15027c742b345823b1c2caef86d435e9b2 languageName: node linkType: hard -"@radix-ui/react-tabs@npm:^1.0.1": - version: 1.1.1 - resolution: "@radix-ui/react-tabs@npm:1.1.1" +"@radix-ui/react-toggle-group@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-toggle-group@npm:1.0.4" dependencies: - "@radix-ui/primitive": 1.1.0 - "@radix-ui/react-context": 1.1.1 - "@radix-ui/react-direction": 1.1.0 - "@radix-ui/react-id": 1.1.0 - "@radix-ui/react-presence": 1.1.1 - "@radix-ui/react-primitive": 2.0.0 - "@radix-ui/react-roving-focus": 1.1.0 - "@radix-ui/react-use-controllable-state": 1.1.0 + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-roving-focus": 1.0.4 + "@radix-ui/react-toggle": 1.0.3 + "@radix-ui/react-use-controllable-state": 1.0.1 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: 9ceac8a655df3c692d86247bdc2f951c4df22b1329451ca7148a545b48ba809e280e565d084d7d502cfe30370e0fcc57f80d47b57ebecd75caca6825bbf47f4a + checksum: b6c11fbbc3ca857ff68c0fa31f293c0d0111bcc8aa0cde2566214c090907530bfcb3b862f81585c2b02d8989b5c7971acff4d5c07c429870d80bd5602e30d376 languageName: node linkType: hard -"@radix-ui/react-toggle-group@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-toggle-group@npm:1.1.0" +"@radix-ui/react-toggle@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-toggle@npm:1.0.3" dependencies: - "@radix-ui/primitive": 1.1.0 - "@radix-ui/react-context": 1.1.0 - "@radix-ui/react-direction": 1.1.0 - "@radix-ui/react-primitive": 2.0.0 - "@radix-ui/react-roving-focus": 1.1.0 - "@radix-ui/react-toggle": 1.1.0 - "@radix-ui/react-use-controllable-state": 1.1.0 + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-controllable-state": 1.0.1 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: c665a38b01fc3fc816a63c9d8d689814d17803c4075f3e383182d7613e6552b5bbf0584f68c6e98af8efd738ceba9869ef5b29419f76a80b64e3a7d61b2b41ef + checksum: ed5407f48254f20cda542017774f259d0b2c0007ea4bd7287d10d751016dbf269cb13d1142591432c269c3ab768cde2f1ba0344743027d36bbec10af909f19de languageName: node linkType: hard -"@radix-ui/react-toggle@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-toggle@npm:1.1.0" +"@radix-ui/react-toolbar@npm:^1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-toolbar@npm:1.0.4" dependencies: - "@radix-ui/primitive": 1.1.0 - "@radix-ui/react-primitive": 2.0.0 - "@radix-ui/react-use-controllable-state": 1.1.0 + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-roving-focus": 1.0.4 + "@radix-ui/react-separator": 1.0.3 + "@radix-ui/react-toggle-group": 1.0.4 peerDependencies: "@types/react": "*" "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: 556818c9d57c024cca0533c859464ee101b69c527d2f2791fa97175fdabea4320eb0078e84bb73f2c5d5794a8a0069666bbdcfe07067fe02ebe4950917ca8e3a + checksum: 7ebee1f8add6510108979433c5b38627e2de9d48ef2172ca15274b9edbbc106ff43bcd47ff733b03ed2215b92e7af364ff82c79e5a1728374847e2b1e315552c languageName: node linkType: hard -"@radix-ui/react-toolbar@npm:^1.0.4": - version: 1.1.0 - resolution: "@radix-ui/react-toolbar@npm:1.1.0" +"@radix-ui/react-use-callback-ref@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/react-use-callback-ref@npm:1.0.0" dependencies: - "@radix-ui/primitive": 1.1.0 - "@radix-ui/react-context": 1.1.0 - "@radix-ui/react-direction": 1.1.0 - "@radix-ui/react-primitive": 2.0.0 - "@radix-ui/react-roving-focus": 1.1.0 - "@radix-ui/react-separator": 1.1.0 - "@radix-ui/react-toggle-group": 1.1.0 + "@babel/runtime": ^7.13.10 peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - checksum: 5453bdfd697bf5bf4ec3f86d976799d2a9e39c6a57b9d614aca7077df0f8031efb6f59ac993503152aa4e5e7988c0818212340ea764c0a92ceb204e630b58709 + react: ^16.8 || ^17.0 || ^18.0 + checksum: a8dda76ba0a26e23dc6ab5003831ad7439f59ba9d696a517643b9ee6a7fb06b18ae7a8f5a3c00c530d5c8104745a466a077b7475b99b4c0f5c15f5fc29474471 languageName: node linkType: hard @@ -12667,16 +16723,15 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-use-callback-ref@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-use-callback-ref@npm:1.1.0" +"@radix-ui/react-use-controllable-state@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/react-use-controllable-state@npm:1.0.0" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-callback-ref": 1.0.0 peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 2ec7903c67e3034b646005556f44fd975dc5204db6885fc58403e3584f27d95f0b573bc161de3d14fab9fda25150bf3b91f718d299fdfc701c736bd0bd2281fa + react: ^16.8 || ^17.0 || ^18.0 + checksum: 35f1e714bbe3fc9f5362a133339dd890fb96edb79b63168a99403c65dd5f2b63910e0c690255838029086719e31360fa92544a55bc902cfed4442bb3b55822e2 languageName: node linkType: hard @@ -12696,21 +16751,6 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-use-controllable-state@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-use-controllable-state@npm:1.1.0" - dependencies: - "@radix-ui/react-use-callback-ref": 1.1.0 - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - checksum: a6c167cf8eb0744effbeab1f92ea6c0ad71838b222670c0488599f28eecd941d87ac1eed4b5d3b10df6dc7b7b2edb88a54e99d92c2942ce3b21f81d5c188f32d - languageName: node - linkType: hard - "@radix-ui/react-use-escape-keydown@npm:1.0.3": version: 1.0.3 resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" @@ -12727,31 +16767,29 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-use-layout-effect@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-use-layout-effect@npm:1.0.1" +"@radix-ui/react-use-layout-effect@npm:1.0.0": + version: 1.0.0 + resolution: "@radix-ui/react-use-layout-effect@npm:1.0.0" dependencies: "@babel/runtime": ^7.13.10 peerDependencies: - "@types/react": "*" react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: bed9c7e8de243a5ec3b93bb6a5860950b0dba359b6680c84d57c7a655e123dec9b5891c5dfe81ab970652e7779fe2ad102a23177c7896dde95f7340817d47ae5 + checksum: fcdc8cfa79bd45766ebe3de11039c58abe3fed968cb39c12b2efce5d88013c76fe096ea4cee464d42576d02fe7697779b682b4268459bca3c4e48644f5b4ac5e languageName: node linkType: hard -"@radix-ui/react-use-layout-effect@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-use-layout-effect@npm:1.1.0" +"@radix-ui/react-use-layout-effect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-layout-effect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 peerDependencies: "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 271ea0bf1cd74718895a68414a6e95537737f36e02ad08eeb61a82b229d6abda9cff3135a479e134e1f0ce2c3ff97bb85babbdce751985fb755a39b231d7ccf2 + checksum: bed9c7e8de243a5ec3b93bb6a5860950b0dba359b6680c84d57c7a655e123dec9b5891c5dfe81ab970652e7779fe2ad102a23177c7896dde95f7340817d47ae5 languageName: node linkType: hard @@ -13395,193 +17433,191 @@ __metadata: languageName: node linkType: hard -"@react-pdf/fns@npm:2.2.1": - version: 2.2.1 - resolution: "@react-pdf/fns@npm:2.2.1" +"@react-pdf/fns@npm:2.0.1": + version: 2.0.1 + resolution: "@react-pdf/fns@npm:2.0.1" dependencies: "@babel/runtime": ^7.20.13 - checksum: 738bc27e45ee3253e9abf74924696428ac856e679ac617b030936052da773996bec3d314ca9ad67c675d3eb82c8c74a9c24a3dbd0473b66773dbaefb1f202826 + checksum: cc56f632862820c7512530c423a5506addcb6aefc46e61d952dd735c0b887fa209dddcc1ec49f89fecc30b6852f44bd2025687898d86d76d8019b35b74d0094b languageName: node linkType: hard -"@react-pdf/font@npm:^2.5.2": - version: 2.5.2 - resolution: "@react-pdf/font@npm:2.5.2" +"@react-pdf/font@npm:^2.3.4": + version: 2.3.4 + resolution: "@react-pdf/font@npm:2.3.4" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/types": ^2.6.0 + "@react-pdf/types": ^2.3.1 cross-fetch: ^3.1.5 fontkit: ^2.0.2 is-url: ^1.2.4 - checksum: 73d7753ea13fe4b4c1469bae181b7a7fee5fb39db829253428a2010c7f28e3c8982273b6a92f63059c8e19f36a7b99d0838943121bae1f2992a8f93d44165d40 + checksum: 76df022c5e389c16ed0bf6a909329028e370fa7684748527f3fe87c92d63d98f749c1726cf5b6409d66eb096e7b326c939004da7dea1db5588dfbee4799c619f languageName: node linkType: hard -"@react-pdf/image@npm:^2.3.6": - version: 2.3.6 - resolution: "@react-pdf/image@npm:2.3.6" +"@react-pdf/image@npm:^2.2.1": + version: 2.2.1 + resolution: "@react-pdf/image@npm:2.2.1" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/png-js": ^2.3.1 + "@react-pdf/png-js": ^2.2.0 cross-fetch: ^3.1.5 - jay-peg: ^1.0.2 - checksum: 177e221e61714d7efd6c7c7c1f78b7dc9b343eaf6fd7d11f22ebd0830114f4188fb0be5b6dab71e734f8e9aa0f6ca0cad946011b2872f771526ab75c14a5a039 + checksum: d2b3c9e5b6a23c377724072c875eaeea6389fa513ae0e88ed442d7efb0eaa373b0f195e7c6b9404297ede802d063cf20109800f4d7b951087f66bb64f7c04f1a languageName: node linkType: hard -"@react-pdf/layout@npm:^3.13.0": - version: 3.13.0 - resolution: "@react-pdf/layout@npm:3.13.0" +"@react-pdf/layout@npm:^3.6.0": + version: 3.6.0 + resolution: "@react-pdf/layout@npm:3.6.0" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.2.1 - "@react-pdf/image": ^2.3.6 - "@react-pdf/pdfkit": ^3.2.0 - "@react-pdf/primitives": ^3.1.1 - "@react-pdf/stylesheet": ^4.3.0 - "@react-pdf/textkit": ^4.4.1 - "@react-pdf/types": ^2.6.0 + "@react-pdf/fns": 2.0.1 + "@react-pdf/image": ^2.2.1 + "@react-pdf/pdfkit": ^3.0.2 + "@react-pdf/primitives": ^3.0.0 + "@react-pdf/stylesheet": ^4.1.5 + "@react-pdf/textkit": ^4.2.0 + "@react-pdf/types": ^2.3.1 + "@react-pdf/yoga": ^4.1.2 cross-fetch: ^3.1.5 - emoji-regex: ^10.3.0 + emoji-regex: ^10.2.1 queue: ^6.0.1 - yoga-layout: ^2.0.1 - checksum: d4014cc860292d0aba6b2d174647afa5003067bb3e98b53f983cb2d32e397514f77a030b53341a082e2682f257badac98792156e0483303a7df79be5e414eaab + checksum: 65169700d84864853ba3b31988f0502ce8c9014cab64aa60f6328e20645de6c7848e341226f32e50dcbfc0c43cff999c63b581d5e2617336ccc9b501bbcc31fc languageName: node linkType: hard -"@react-pdf/pdfkit@npm:^3.2.0": - version: 3.2.0 - resolution: "@react-pdf/pdfkit@npm:3.2.0" +"@react-pdf/pdfkit@npm:^3.0.2": + version: 3.0.2 + resolution: "@react-pdf/pdfkit@npm:3.0.2" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/png-js": ^2.3.1 + "@react-pdf/png-js": ^2.2.0 browserify-zlib: ^0.2.0 - crypto-js: ^4.2.0 + crypto-js: ^4.0.0 fontkit: ^2.0.2 - jay-peg: ^1.0.2 vite-compatible-readable-stream: ^3.6.1 - checksum: 2c95c9dbc332d21bae45d3480c25a062450d9598ded63a11418e373831526cb8b1986ea9d0371a75a571a4acc3a4b3832b49364e1ceb036d22cb8617a1f56019 + checksum: 8ab264e699751c1eb5245eb712c62c681c916e081fdf21a60bfda993f4f39336b238c799baba20d9b9b642a0819f46edd8e93de8dad5f1ce177b6ea57fee83a4 languageName: node linkType: hard -"@react-pdf/png-js@npm:^2.3.1": - version: 2.3.1 - resolution: "@react-pdf/png-js@npm:2.3.1" +"@react-pdf/png-js@npm:^2.2.0": + version: 2.2.0 + resolution: "@react-pdf/png-js@npm:2.2.0" dependencies: browserify-zlib: ^0.2.0 - checksum: bab00c8380cb1f2126c2844568929fe04753ee8611d9d9d0f6f9d5d4fdc3c8aafd265297d354941610b9e2fadcafca6e1cd2f36b137f2847e35985d226d056bc + checksum: 0f1571f43dcffa93c219ede411210c83f20c81a01f0a0cb39e713c9f066fa4b7b9781602240676e937e89c0218f2940f9acb98f06165e30dc7012897d1ff8d07 languageName: node linkType: hard -"@react-pdf/primitives@npm:^3.1.1": - version: 3.1.1 - resolution: "@react-pdf/primitives@npm:3.1.1" - checksum: a52c0cfff74d29d36e2e4c1c2b8935faf2f13bbe3800901e93354ea044385d8716166e45f3a49bb729e6d9944d7a8239056f5af80b345cb2984e245b2e719c1d +"@react-pdf/primitives@npm:^3.0.0": + version: 3.0.1 + resolution: "@react-pdf/primitives@npm:3.0.1" + checksum: c4bea5c6c61a2bbfdc462385def8ec9a36b60320b2008643f694de4e587dd05058ff78c98aa8a5d66bd472bbe09c93a477b15fefd64db58f6e64c122adabbdf1 languageName: node linkType: hard -"@react-pdf/render@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-pdf/render@npm:3.5.0" +"@react-pdf/render@npm:^3.2.4": + version: 3.2.4 + resolution: "@react-pdf/render@npm:3.2.4" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.2.1 - "@react-pdf/primitives": ^3.1.1 - "@react-pdf/textkit": ^4.4.1 - "@react-pdf/types": ^2.6.0 + "@react-pdf/fns": 2.0.1 + "@react-pdf/primitives": ^3.0.0 + "@react-pdf/textkit": ^4.2.0 + "@react-pdf/types": ^2.3.1 abs-svg-path: ^0.1.1 - color-string: ^1.9.1 + color-string: ^1.5.3 normalize-svg-path: ^1.1.0 parse-svg-path: ^0.1.2 svg-arc-to-cubic-bezier: ^3.2.0 - checksum: aac990fcac1d1b3885c119d83955a3d42aa6548156a9c9660ba72c85a208d1ddae1b19290ed06194499460c8f93564e5b894a9a05a5850a83c72a3e7e55575cf + checksum: 1ec8a4cf6abe4fbf2e31c7d04a0116649f1bce77daa7c531f2d65681c2e45eee0e9c40e02645cbb0d12a1921897ae07e02966c305936e0bae962b2d5adebdf09 languageName: node linkType: hard "@react-pdf/renderer@npm:^3.1.9": - version: 3.4.5 - resolution: "@react-pdf/renderer@npm:3.4.5" + version: 3.1.9 + resolution: "@react-pdf/renderer@npm:3.1.9" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/font": ^2.5.2 - "@react-pdf/layout": ^3.13.0 - "@react-pdf/pdfkit": ^3.2.0 - "@react-pdf/primitives": ^3.1.1 - "@react-pdf/render": ^3.5.0 - "@react-pdf/types": ^2.6.0 + "@react-pdf/font": ^2.3.4 + "@react-pdf/layout": ^3.6.0 + "@react-pdf/pdfkit": ^3.0.2 + "@react-pdf/primitives": ^3.0.0 + "@react-pdf/render": ^3.2.4 + "@react-pdf/types": ^2.3.1 events: ^3.3.0 object-assign: ^4.1.1 prop-types: ^15.6.2 queue: ^6.0.1 scheduler: ^0.17.0 peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: f3e9a6779654de14fd755352d22cd0099c9f78317c8a2771b62e8d9757932a4bff47b59fdde390d46bf8515e5509694a3e32a055733a1d35eab0d979a173635d + react: ^16.8.6 || ^17.0.0 || ^18.0.0 + checksum: 314099cbebc303f7c4e51ef95f4d15650d130b58c46400d41e9ef7d25d705c5f066c00c0c0bf2c493200d9e70f0a63def8638742ccf42505c48d22c2ef628f43 languageName: node linkType: hard -"@react-pdf/stylesheet@npm:^4.3.0": - version: 4.3.0 - resolution: "@react-pdf/stylesheet@npm:4.3.0" +"@react-pdf/stylesheet@npm:^4.1.5": + version: 4.1.5 + resolution: "@react-pdf/stylesheet@npm:4.1.5" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.2.1 - "@react-pdf/types": ^2.6.0 - color-string: ^1.9.1 + "@react-pdf/fns": 2.0.1 + "@react-pdf/types": ^2.3.1 + color-string: ^1.5.3 hsl-to-hex: ^1.0.0 media-engine: ^1.0.3 postcss-value-parser: ^4.1.0 - checksum: 9a32aca88efdb1967fac66013607c79592e9863ded756c373da408840113411b20b16d8c1d0fe22c460f812ddaa9c03abb721b44c870ae1c171e4f4f81b45cec + checksum: 340d756d910fbec0e6b72521226f901dc372c96642560707b77be76b59d6e60718fa289a9751a9175e190c311bc5c58ca5c4e7b4b0ac2947d1ad0811aac23356 languageName: node linkType: hard -"@react-pdf/textkit@npm:^4.4.1": - version: 4.4.1 - resolution: "@react-pdf/textkit@npm:4.4.1" +"@react-pdf/textkit@npm:^4.2.0": + version: 4.2.0 + resolution: "@react-pdf/textkit@npm:4.2.0" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.2.1 - bidi-js: ^1.0.2 + "@react-pdf/fns": 2.0.1 hyphen: ^1.6.4 unicode-properties: ^1.4.1 - checksum: e07b7574bab13999a2859dd6e8ddbbe3650ae63736c77ea36fc7f355d743a8954bfa8e59f43f8d0ecd5379e239a64882d0b88eb47a654019fb7575df0a235510 + checksum: d7fb9b0bbd9ae3da224ab35d5b2bc12e0278c6a3cb8f274d6a573577389bdd18d0f97a7f2ed6af32f28bebb407f05846bbb687e466db2184fb1b267e0fc17e2f languageName: node linkType: hard -"@react-pdf/types@npm:^2.6.0": - version: 2.7.0 - resolution: "@react-pdf/types@npm:2.7.0" - checksum: 199525ef20353e9c73d1b0f63a530da9a5a519dc62f692bcfe0933d234e263c03ca04a94cbf18a4b36b2bbdc8dbb6b3df1271fa9ef4f3e6737fddd08407ef2f0 +"@react-pdf/types@npm:^2.3.1": + version: 2.3.1 + resolution: "@react-pdf/types@npm:2.3.1" + checksum: 12f81e4c5056962c4d1e440d53074f4cf81dd9e3963bf33116a3471769f8a0fc9b2bce5da31a53300b231d02b4a50e015a04cdd10c9b39b8f876c6518e28eaad languageName: node linkType: hard -"@redocly/ajv@npm:^8.11.2": - version: 8.11.2 - resolution: "@redocly/ajv@npm:8.11.2" +"@react-pdf/yoga@npm:^4.1.2": + version: 4.1.2 + resolution: "@react-pdf/yoga@npm:4.1.2" dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js-replace: ^1.0.1 - checksum: be3a48afe88166fa4e958bbd2dbfc31d9f67d538e902ee07c745b3fba31c13cff2b680311db7add61851f850bf6c55536645b300007ce148b3bee4660239dd19 + "@babel/runtime": ^7.20.13 + checksum: e226c8181fc7709c5bfa33fc2c4b4eae08f4a032fdad8b71e43b4f0e6b185152b47f51734a137cd6fe892a1e920d4a0dcec76344abca001c45ff633d0a33a1b0 languageName: node linkType: hard -"@redocly/config@npm:^0.12.1": - version: 0.12.1 - resolution: "@redocly/config@npm:0.12.1" - checksum: abbeb34bffe42f4ae7420154578a3f17c5e05cb95e11e4180368a80186d36ac6fc7176ad4c00debe41bfc0e9c1eee136c133cdf2b50ae79a9fe41ccbdaa1dfb9 +"@redocly/ajv@npm:^8.11.0": + version: 8.11.0 + resolution: "@redocly/ajv@npm:8.11.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 3e4c7a18226aefd2016628eed88a84588c49f6e721a1009081a20873f374a3d765c6a640856f6cb6bdd1732b027e3c82ea5c06d27427bc5a8af2cf8bb69bbd9b languageName: node linkType: hard "@redocly/openapi-core@npm:^1.0.0-rc.2": - version: 1.25.8 - resolution: "@redocly/openapi-core@npm:1.25.8" + version: 1.5.0 + resolution: "@redocly/openapi-core@npm:1.5.0" dependencies: - "@redocly/ajv": ^8.11.2 - "@redocly/config": ^0.12.1 + "@redocly/ajv": ^8.11.0 + "@types/node": ^14.11.8 colorette: ^1.2.0 - https-proxy-agent: ^7.0.4 js-levenshtein: ^1.1.6 js-yaml: ^4.1.0 lodash.isequal: ^4.5.0 @@ -13589,7 +17625,7 @@ __metadata: node-fetch: ^2.6.1 pluralize: ^8.0.0 yaml-ast-parser: 0.0.43 - checksum: 8dc747aef2f9e5f27392745dc6fd8f76b0f2051a6f90a49436d748e66ba482d3ae4b36b0087f0882f6bd8a311b4a3c0220adbe82a132f2c7e5a2b5fb656f1654 + checksum: 49718e03605fe326c863675b9b2c3f85608ec8d5bbffad4019d487023790b5f3acb4116c5f734d8db90ec72e491bd5bcaea7e3f4766d90635b17167fdfe37ee4 languageName: node linkType: hard @@ -13609,20 +17645,6 @@ __metadata: languageName: node linkType: hard -"@repeaterjs/repeater@npm:3.0.4": - version: 3.0.4 - resolution: "@repeaterjs/repeater@npm:3.0.4" - checksum: cca0db3e802bc26fcce0b4a574074d9956da53bf43094de03c0e4732d05e13441279a92f0b96e2a7a39da50933684947a138c1213406eaafe39cfd4683d6c0df - languageName: node - linkType: hard - -"@repeaterjs/repeater@npm:^3.0.4": - version: 3.0.6 - resolution: "@repeaterjs/repeater@npm:3.0.6" - checksum: aae878b953162bec77c94b45f2236ddfc01a65308267c7cb30220fa2f8511654a302c0d32aad228c58241d685607d7bb35b6d528b2879355e6636ff08fddb266 - languageName: node - linkType: hard - "@rnx-kit/chromium-edge-launcher@npm:^1.0.0": version: 1.0.0 resolution: "@rnx-kit/chromium-edge-launcher@npm:1.0.0" @@ -13637,125 +17659,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@rollup/rollup-android-arm64@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-android-arm64@npm:4.24.0" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-arm64@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.24.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-x64@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.24.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm-musleabihf@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-musl@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-riscv64-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-s390x-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.0" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-musl@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-win32-arm64-msvc@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-ia32-msvc@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@rollup/rollup-win32-x64-msvc@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@rtsao/scc@npm:^1.1.0": - version: 1.1.0 - resolution: "@rtsao/scc@npm:1.1.0" - checksum: 17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01 - languageName: node - linkType: hard - "@rushstack/eslint-patch@npm:^1.3.3": version: 1.10.4 resolution: "@rushstack/eslint-patch@npm:1.10.4" @@ -13797,6 +17700,15 @@ __metadata: languageName: node linkType: hard +"@sideway/address@npm:^4.1.3": + version: 4.1.4 + resolution: "@sideway/address@npm:4.1.4" + dependencies: + "@hapi/hoek": ^9.0.0 + checksum: b9fca2a93ac2c975ba12e0a6d97853832fb1f4fb02393015e012b47fa916a75ca95102d77214b2a29a2784740df2407951af8c5dde054824c65577fd293c4cdb + languageName: node + linkType: hard + "@sideway/address@npm:^4.1.5": version: 4.1.5 resolution: "@sideway/address@npm:4.1.5" @@ -13844,6 +17756,20 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.24.1": + version: 0.24.46 + resolution: "@sinclair/typebox@npm:0.24.46" + checksum: 19d708fe93a42dce4ed6452a58909c841ad3484a6388a5b5d82e7ab11f8bfbd013bf34c32d6234a55532e4ff5f8ab9e1df17bb13b389aca038c7f05a8950a72a + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.25.16": + version: 0.25.24 + resolution: "@sinclair/typebox@npm:0.25.24" + checksum: 10219c58f40b8414c50b483b0550445e9710d4fe7b2c4dccb9b66533dd90ba8e024acc776026cebe81e87f06fa24b07fdd7bc30dd277eb9cc386ec50151a3026 + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -13869,12 +17795,21 @@ __metadata: linkType: hard "@sindresorhus/transliterate@npm:^0.1.0": - version: 0.1.2 - resolution: "@sindresorhus/transliterate@npm:0.1.2" + version: 0.1.1 + resolution: "@sindresorhus/transliterate@npm:0.1.1" dependencies: escape-string-regexp: ^2.0.0 lodash.deburr: ^4.1.0 - checksum: f4a0fdf710adcad901bdd30dc02acbb33d464d7945fb2d6dc8130cf8e5e1151d66e2b9b20633f4c27c014ddba511a0a976d74304e4cbfacb8044d3c6f052d547 + checksum: 6610a360cbd625f512f7f37bcc8d7012c3d99ab0e65d06ba49acd893ce6068e021d57d3e4730f35972224e2b8f8579c31f2ac7590b55b0efd2979a8523dd9aa2 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^2.0.0": + version: 2.0.0 + resolution: "@sinonjs/commons@npm:2.0.0" + dependencies: + type-detect: 4.0.8 + checksum: 5023ba17edf2b85ed58262313b8e9b59e23c6860681a9af0200f239fe939e2b79736d04a260e8270ddd57196851dde3ba754d7230be5c5234e777ae2ca8af137 languageName: node linkType: hard @@ -13897,20 +17832,20 @@ __metadata: linkType: hard "@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" + version: 10.0.2 + resolution: "@sinonjs/fake-timers@npm:10.0.2" dependencies: - "@sinonjs/commons": ^3.0.0 - checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 + "@sinonjs/commons": ^2.0.0 + checksum: c62aa98e7cefda8dedc101ce227abc888dc46b8ff9706c5f0a8dfd9c3ada97d0a5611384738d9ba0b26b59f99c2ba24efece8e779bb08329e9e87358fa309824 languageName: node linkType: hard "@sinonjs/fake-timers@npm:^13.0.1": - version: 13.0.4 - resolution: "@sinonjs/fake-timers@npm:13.0.4" + version: 13.0.5 + resolution: "@sinonjs/fake-timers@npm:13.0.5" dependencies: "@sinonjs/commons": ^3.0.1 - checksum: 51c73e5c9be3b1c75250f2ee328765e49b1962dffd79f452eb0eed20bb3c58e65c135fc320cda7e7ff4fa0e0164b404cfe7f4d42b7c918910f49f1480042bd3b + checksum: b1c6ba87fadb7666d3aa126c9e8b4ac32b2d9e84c9e5fd074aa24cab3c8342fd655459de014b08e603be1e6c24c9f9716d76d6d2a36c50f59bb0091be61601dd languageName: node linkType: hard @@ -14338,6 +18273,15 @@ __metadata: languageName: node linkType: hard +"@smithy/types@npm:^3.3.0": + version: 3.3.0 + resolution: "@smithy/types@npm:3.3.0" + dependencies: + tslib: ^2.6.2 + checksum: 29bb5f83c41e32f8d4094a2aba2d3dfbd763ab5943784a700f3fa22df0dcf0ccac1b1907f7a87fbb9f6f2269fcd4750524bcb48f892249e200ffe397c0981309 + languageName: node + linkType: hard + "@smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0": version: 3.6.0 resolution: "@smithy/types@npm:3.6.0" @@ -14541,10 +18485,10 @@ __metadata: languageName: node linkType: hard -"@sqltools/formatter@npm:^1.2.2": - version: 1.2.5 - resolution: "@sqltools/formatter@npm:1.2.5" - checksum: 9b8354e715467d660daa5afe044860b5686bbb1a5cb67a60866b932effafbf5e8b429f19a8ae67cd412065a4f067161f227e182f3664a0245339d5eb1e26e355 +"@sqltools/formatter@npm:1.2.2": + version: 1.2.2 + resolution: "@sqltools/formatter@npm:1.2.2" + checksum: 9c355f0961f93deea6540960b9ef031bd37cd5a92e3e236da05ea860cd408bf5ba039505150143202a59ca9ebf471ee607d1be4c24378320911a98bb0394fd46 languageName: node linkType: hard @@ -15034,6 +18978,13 @@ __metadata: languageName: node linkType: hard +"@storybook/channels@npm:7.0.24": + version: 7.0.24 + resolution: "@storybook/channels@npm:7.0.24" + checksum: 68f8fb9c0f59a21cf471aff0518aba0997e5691ca06c0d1d78a1578a9ecabce53b8d82b39a64f96d06669bfab68d99fe9d13fad6552f21df73e799e2170cd5b2 + languageName: node + linkType: hard + "@storybook/channels@npm:7.2.1": version: 7.2.1 resolution: "@storybook/channels@npm:7.2.1" @@ -15048,20 +18999,6 @@ __metadata: languageName: node linkType: hard -"@storybook/channels@npm:7.6.20": - version: 7.6.20 - resolution: "@storybook/channels@npm:7.6.20" - dependencies: - "@storybook/client-logger": 7.6.20 - "@storybook/core-events": 7.6.20 - "@storybook/global": ^5.0.0 - qs: ^6.10.0 - telejson: ^7.2.0 - tiny-invariant: ^1.3.1 - checksum: e600949b77b8ae2c865eab8e2f4022893843932c76f9f49f2ef6d8a8f62114f979d38fe93fed2d8899fa892bb1dcd353c81e292515a7bd8fbc944629939574b0 - languageName: node - linkType: hard - "@storybook/channels@npm:7.6.9": version: 7.6.9 resolution: "@storybook/channels@npm:7.6.9" @@ -15136,21 +19073,21 @@ __metadata: languageName: node linkType: hard -"@storybook/client-logger@npm:7.2.1": - version: 7.2.1 - resolution: "@storybook/client-logger@npm:7.2.1" +"@storybook/client-logger@npm:7.0.24": + version: 7.0.24 + resolution: "@storybook/client-logger@npm:7.0.24" dependencies: "@storybook/global": ^5.0.0 - checksum: 02245de46062e317e570b7bd7a01399fa95b223676a43b25b6a1072f292876720b0055bd8a666824fdd249985f38a37753d4afe35e5095f94355aee0e9104d58 + checksum: fb71495535d3be50c6199b04caed286fd13de8d83e07fce5001bd4db247957b148f889c449074facfaa07fec39080de34d412985a0f4be6920cd5d34c3ce56fa languageName: node linkType: hard -"@storybook/client-logger@npm:7.6.20": - version: 7.6.20 - resolution: "@storybook/client-logger@npm:7.6.20" +"@storybook/client-logger@npm:7.2.1": + version: 7.2.1 + resolution: "@storybook/client-logger@npm:7.2.1" dependencies: "@storybook/global": ^5.0.0 - checksum: 98bf603df918a74bc5b34f344ba70356d8e2b889d8a5cbfb7a03c23dcf409029800319e5d3e0ff7e95545a2d4a989a53c2097eb7a36de808d287d466d4d92573 + checksum: 02245de46062e317e570b7bd7a01399fa95b223676a43b25b6a1072f292876720b0055bd8a666824fdd249985f38a37753d4afe35e5095f94355aee0e9104d58 languageName: node linkType: hard @@ -15207,23 +19144,21 @@ __metadata: linkType: hard "@storybook/components@npm:^7.0.0": - version: 7.6.20 - resolution: "@storybook/components@npm:7.6.20" + version: 7.0.24 + resolution: "@storybook/components@npm:7.0.24" dependencies: - "@radix-ui/react-select": ^1.2.2 - "@radix-ui/react-toolbar": ^1.0.4 - "@storybook/client-logger": 7.6.20 - "@storybook/csf": ^0.1.2 + "@storybook/client-logger": 7.0.24 + "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/theming": 7.6.20 - "@storybook/types": 7.6.20 + "@storybook/theming": 7.0.24 + "@storybook/types": 7.0.24 memoizerific: ^1.11.3 use-resize-observer: ^9.1.0 util-deprecate: ^1.0.2 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 8f8bae3fb7a4d60b91c7d1e68126bea3684158991bc935618f06e9f196c57081e6a143cf540ead58ec4e8633cb5b723c56c87dd60f77958a00db2ab789e87388 + checksum: 7fbaf208f3e0f46b8eaabce2eb6901b04a07f0b361afe50efd378404bd19ffae0b6d507856ae9ba7ea1bcecc4e8eebad812b1ad808dcbae85f71c21fd8141c4b languageName: node linkType: hard @@ -15312,15 +19247,6 @@ __metadata: languageName: node linkType: hard -"@storybook/core-events@npm:7.6.20": - version: 7.6.20 - resolution: "@storybook/core-events@npm:7.6.20" - dependencies: - ts-dedent: ^2.0.0 - checksum: 284f4df326200dc0bdfc74472dccab3bbed38cf8515baebe467830b562f9ace06fb6e5640b155b4ae462288b9f3257233c6b5212fcb9b2d3024f9e4d08d28457 - languageName: node - linkType: hard - "@storybook/core-events@npm:7.6.9": version: 7.6.9 resolution: "@storybook/core-events@npm:7.6.9" @@ -15496,7 +19422,16 @@ __metadata: languageName: node linkType: hard -"@storybook/csf@npm:^0.1.0, @storybook/csf@npm:^0.1.2": +"@storybook/csf@npm:^0.1.0": + version: 0.1.1 + resolution: "@storybook/csf@npm:0.1.1" + dependencies: + type-fest: ^2.19.0 + checksum: 1fbb827b50f0c15f21026a95d02cc096be4f9f2705ad8fd29f0a99330233606e69f6af7551d844ace2a4b8f08fcc9f81496d4d69160ba8c458698291efb60954 + languageName: node + linkType: hard + +"@storybook/csf@npm:^0.1.2": version: 0.1.11 resolution: "@storybook/csf@npm:0.1.11" dependencies: @@ -15906,18 +19841,18 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@npm:7.6.20": - version: 7.6.20 - resolution: "@storybook/theming@npm:7.6.20" +"@storybook/theming@npm:7.0.24": + version: 7.0.24 + resolution: "@storybook/theming@npm:7.0.24" dependencies: "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.6.20 + "@storybook/client-logger": 7.0.24 "@storybook/global": ^5.0.0 memoizerific: ^1.11.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 2c3cbac759d300fb471acf4e01514f7728c48533c6e24c37b0351d9f0fcc9240dbdcf50067a81c3ff73b27a1da4227debb55a48ab2920368099871d1f49252ea + checksum: f44edb7f71816d4d05877b39873f64b3d1616d65c8b948d32a9160e4f9fdd550b6a8e7356d8badbe978e0bd83e39c106863e7ccb824b357dd15402b2b7bf9d11 languageName: node linkType: hard @@ -15948,27 +19883,27 @@ __metadata: languageName: node linkType: hard -"@storybook/types@npm:7.2.1": - version: 7.2.1 - resolution: "@storybook/types@npm:7.2.1" +"@storybook/types@npm:7.0.24": + version: 7.0.24 + resolution: "@storybook/types@npm:7.0.24" dependencies: - "@storybook/channels": 7.2.1 + "@storybook/channels": 7.0.24 "@types/babel__core": ^7.0.0 "@types/express": ^4.7.0 file-system-cache: 2.3.0 - checksum: 4ed8dd2897b413238bdebe4874af3f017660778be54582408018c2f8a54e1d6d292473324483ab1efd65dd283d46d8e96e1368b57dc53a4ad7a340c5764eed8b + checksum: 38bcd0c8a43760309281de433636c2d6ca4d59bfd99de62382afef8235b0a1dcf8fa9dae68263837962ee3a85cfd55f6e4e82adcba65cf07f48362f716c8cfec languageName: node linkType: hard -"@storybook/types@npm:7.6.20": - version: 7.6.20 - resolution: "@storybook/types@npm:7.6.20" +"@storybook/types@npm:7.2.1": + version: 7.2.1 + resolution: "@storybook/types@npm:7.2.1" dependencies: - "@storybook/channels": 7.6.20 + "@storybook/channels": 7.2.1 "@types/babel__core": ^7.0.0 "@types/express": ^4.7.0 file-system-cache: 2.3.0 - checksum: 1e0ae196c63ace6a9a0f06a42c7294cfc840665d1ff7ae6d9fd2466ed3d78387672951aa7a9064a719384938c57d8eb25c8089657710d95c546344fbc28d8df6 + checksum: 4ed8dd2897b413238bdebe4874af3f017660778be54582408018c2f8a54e1d6d292473324483ab1efd65dd283d46d8e96e1368b57dc53a4ad7a340c5764eed8b languageName: node linkType: hard @@ -16038,12 +19973,12 @@ __metadata: languageName: node linkType: hard -"@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0" +"@svgr/babel-plugin-transform-react-native-svg@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 85b434a57572f53bd2b9f0606f253e1fcf57b4a8c554ec3f2d43ed17f50d8cae200cb3aaf1ec9d626e1456e8b135dce530ae047eb0bed6d4bf98a752d6640459 + checksum: 14e3f8ef27bb3215aa8914ea44831eb43decde4a131e4302480f23d6e75aa8c4ea9e1f8888d479b7a8ac63b828e590c03df6d72a6964676612c015f4a967fc74 languageName: node linkType: hard @@ -16056,9 +19991,9 @@ __metadata: languageName: node linkType: hard -"@svgr/babel-preset@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/babel-preset@npm:8.1.0" +"@svgr/babel-preset@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-preset@npm:8.0.0" dependencies: "@svgr/babel-plugin-add-jsx-attribute": 8.0.0 "@svgr/babel-plugin-remove-jsx-attribute": 8.0.0 @@ -16066,24 +20001,24 @@ __metadata: "@svgr/babel-plugin-replace-jsx-attribute-value": 8.0.0 "@svgr/babel-plugin-svg-dynamic-title": 8.0.0 "@svgr/babel-plugin-svg-em-dimensions": 8.0.0 - "@svgr/babel-plugin-transform-react-native-svg": 8.1.0 + "@svgr/babel-plugin-transform-react-native-svg": 8.0.0 "@svgr/babel-plugin-transform-svg-component": 8.0.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3a67930f080b8891e1e8e2595716b879c944d253112bae763dce59807ba23454d162216c8d66a0a0e3d4f38a649ecd6c387e545d1e1261dd69a68e9a3392ee08 + checksum: c8a4497f3fe8338831be275e9e9534b265d22c8ecd75eec0ed82cff8d287506d38fc1963ac3b1a3a27abe0582bcba73f7a76798d23cce586e840bf65a87ba990 languageName: node linkType: hard -"@svgr/core@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/core@npm:8.1.0" +"@svgr/core@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/core@npm:8.0.0" dependencies: "@babel/core": ^7.21.3 - "@svgr/babel-preset": 8.1.0 + "@svgr/babel-preset": 8.0.0 camelcase: ^6.2.0 cosmiconfig: ^8.1.3 snake-case: ^3.0.4 - checksum: da4a12865c7dc59829d58df8bd232d6c85b7115fda40da0d2f844a1a51886e2e945560596ecfc0345d37837ac457de86a931e8b8d8550e729e0c688c02250d8a + checksum: ce83ecbab185db72d16dbd9650f5a66c6e2705627722e593b0eaf23bfafe49cf8bb55f216016a11b8a546822c7387887d218aab8697f7b31e3d1a97d94fa0593 languageName: node linkType: hard @@ -16097,46 +20032,46 @@ __metadata: languageName: node linkType: hard -"@svgr/plugin-jsx@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/plugin-jsx@npm:8.1.0" +"@svgr/plugin-jsx@npm:8.0.1": + version: 8.0.1 + resolution: "@svgr/plugin-jsx@npm:8.0.1" dependencies: "@babel/core": ^7.21.3 - "@svgr/babel-preset": 8.1.0 + "@svgr/babel-preset": 8.0.0 "@svgr/hast-util-to-babel-ast": 8.0.0 svg-parser: ^2.0.4 peerDependencies: "@svgr/core": "*" - checksum: 0418a9780753d3544912ee2dad5d2cf8d12e1ba74df8053651b3886aeda54d5f0f7d2dece0af5e0d838332c4f139a57f0dabaa3ca1afa4d1a765efce6a7656f2 + checksum: c6a0fc3e757e79837cd88f41f18b35594f8c4efe1b87e673514fa7add0912388b7dc79fa2738d629c2f945395ea568fa901c9c5ca5fce827a004c03867c1c482 languageName: node linkType: hard -"@svgr/plugin-svgo@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/plugin-svgo@npm:8.1.0" +"@svgr/plugin-svgo@npm:8.0.1": + version: 8.0.1 + resolution: "@svgr/plugin-svgo@npm:8.0.1" dependencies: cosmiconfig: ^8.1.3 deepmerge: ^4.3.1 svgo: ^3.0.2 peerDependencies: "@svgr/core": "*" - checksum: 59d9d214cebaacca9ca71a561f463d8b7e5a68ca9443e4792a42d903acd52259b1790c0680bc6afecc3f00a255a6cbd7ea278a9f625bac443620ea58a590c2d0 + checksum: c5008c5dd8467f8f8b3a173462773fc37f2a8fa53989934ea802fc7a9db2147f6fee68736610a117751f2ab94773373e807d21e74db5f93b98040f1479845ec6 languageName: node linkType: hard "@svgr/webpack@npm:^8.0.1": - version: 8.1.0 - resolution: "@svgr/webpack@npm:8.1.0" + version: 8.0.1 + resolution: "@svgr/webpack@npm:8.0.1" dependencies: "@babel/core": ^7.21.3 "@babel/plugin-transform-react-constant-elements": ^7.21.3 "@babel/preset-env": ^7.20.2 "@babel/preset-react": ^7.18.6 "@babel/preset-typescript": ^7.21.0 - "@svgr/core": 8.1.0 - "@svgr/plugin-jsx": 8.1.0 - "@svgr/plugin-svgo": 8.1.0 - checksum: c6eec5b0cf2fb2ecd3a7a362d272eda35330b17c76802a3481f499b5d07ff8f87b31d2571043bff399b051a1767b1e2e499dbf186104d1c06d76f9f1535fac01 + "@svgr/core": 8.0.0 + "@svgr/plugin-jsx": 8.0.1 + "@svgr/plugin-svgo": 8.0.1 + checksum: e5e28be53ecf049056ea959040edabfc2d2e717e9ec7f4a549fa262cd1e2d9c6479836ea2eb1586196b9fee74855a0087dbb88257e872fe6b31157c5c0a52dcc languageName: node linkType: hard @@ -16150,6 +20085,15 @@ __metadata: languageName: node linkType: hard +"@swc-node/core@npm:^1.8.2": + version: 1.8.2 + resolution: "@swc-node/core@npm:1.8.2" + dependencies: + "@swc/core": ^1.2.119 + checksum: e137b1751983a27ce120286960ce6d87071e2605a8467a9f6b8875b305e0328fa67b53582dfab52b5d6be8d6e86091777244a1aaa579de6d6c84e31b1f66d223 + languageName: node + linkType: hard + "@swc-node/register@npm:1.9.1": version: 1.9.1 resolution: "@swc-node/register@npm:1.9.1" @@ -16167,6 +20111,30 @@ __metadata: languageName: node linkType: hard +"@swc-node/register@npm:^1.4.2": + version: 1.4.2 + resolution: "@swc-node/register@npm:1.4.2" + dependencies: + "@swc-node/core": ^1.8.2 + "@swc-node/sourcemap-support": ^0.1.11 + chalk: 4 + debug: ^4.3.3 + pirates: ^4.0.4 + tslib: ^2.3.1 + typescript: ^4.5.3 + checksum: cb4a62f07ade0f207c42ef282243502ec24d0f8e4593973394eac94a364ac53b8c1fb3652afcd14191237ae0843eeb0fb6574ce1fc0696b017e271f06a14e248 + languageName: node + linkType: hard + +"@swc-node/sourcemap-support@npm:^0.1.11": + version: 0.1.11 + resolution: "@swc-node/sourcemap-support@npm:0.1.11" + dependencies: + source-map-support: ^0.5.21 + checksum: 1dd5007d3516c9d034757d5012a03fc05cbe63935a5432c2e414611e0f8006a591d7505fb4243842da3c88efb6dbbc419e9297f526210365bd819938baa6956d + languageName: node + linkType: hard + "@swc-node/sourcemap-support@npm:^0.5.0": version: 0.5.1 resolution: "@swc-node/sourcemap-support@npm:0.5.1" @@ -16177,6 +20145,27 @@ __metadata: languageName: node linkType: hard +"@swc/core-android-arm-eabi@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-android-arm-eabi@npm:1.2.168" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@swc/core-android-arm64@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-android-arm64@npm:1.2.168" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-darwin-arm64@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-darwin-arm64@npm:1.2.168" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@swc/core-darwin-arm64@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-darwin-arm64@npm:1.5.7" @@ -16184,13 +20173,20 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-darwin-arm64@npm:1.7.39" +"@swc/core-darwin-arm64@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-darwin-arm64@npm:1.7.6" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard +"@swc/core-darwin-x64@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-darwin-x64@npm:1.2.168" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@swc/core-darwin-x64@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-darwin-x64@npm:1.5.7" @@ -16198,13 +20194,27 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-darwin-x64@npm:1.7.39" +"@swc/core-darwin-x64@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-darwin-x64@npm:1.7.6" conditions: os=darwin & cpu=x64 languageName: node linkType: hard +"@swc/core-freebsd-x64@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-freebsd-x64@npm:1.2.168" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@swc/core-linux-arm-gnueabihf@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.2.168" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@swc/core-linux-arm-gnueabihf@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-arm-gnueabihf@npm:1.5.7" @@ -16212,13 +20222,20 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.39" +"@swc/core-linux-arm-gnueabihf@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.6" conditions: os=linux & cpu=arm languageName: node linkType: hard +"@swc/core-linux-arm64-gnu@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-linux-arm64-gnu@npm:1.2.168" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@swc/core-linux-arm64-gnu@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-arm64-gnu@npm:1.5.7" @@ -16226,13 +20243,20 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.39" +"@swc/core-linux-arm64-gnu@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-linux-arm64-gnu@npm:1.7.6" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard +"@swc/core-linux-arm64-musl@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-linux-arm64-musl@npm:1.2.168" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@swc/core-linux-arm64-musl@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-arm64-musl@npm:1.5.7" @@ -16240,13 +20264,20 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.39" +"@swc/core-linux-arm64-musl@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-linux-arm64-musl@npm:1.7.6" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard +"@swc/core-linux-x64-gnu@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-linux-x64-gnu@npm:1.2.168" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@swc/core-linux-x64-gnu@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-x64-gnu@npm:1.5.7" @@ -16254,13 +20285,20 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.39" +"@swc/core-linux-x64-gnu@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-linux-x64-gnu@npm:1.7.6" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard +"@swc/core-linux-x64-musl@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-linux-x64-musl@npm:1.2.168" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@swc/core-linux-x64-musl@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-linux-x64-musl@npm:1.5.7" @@ -16268,13 +20306,20 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-x64-musl@npm:1.7.39" +"@swc/core-linux-x64-musl@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-linux-x64-musl@npm:1.7.6" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard +"@swc/core-win32-arm64-msvc@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-win32-arm64-msvc@npm:1.2.168" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@swc/core-win32-arm64-msvc@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-win32-arm64-msvc@npm:1.5.7" @@ -16282,13 +20327,20 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.39" +"@swc/core-win32-arm64-msvc@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-win32-arm64-msvc@npm:1.7.6" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard +"@swc/core-win32-ia32-msvc@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-win32-ia32-msvc@npm:1.2.168" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@swc/core-win32-ia32-msvc@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-win32-ia32-msvc@npm:1.5.7" @@ -16296,13 +20348,20 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.39" +"@swc/core-win32-ia32-msvc@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-win32-ia32-msvc@npm:1.7.6" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard +"@swc/core-win32-x64-msvc@npm:1.2.168": + version: 1.2.168 + resolution: "@swc/core-win32-x64-msvc@npm:1.2.168" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@swc/core-win32-x64-msvc@npm:1.5.7": version: 1.5.7 resolution: "@swc/core-win32-x64-msvc@npm:1.5.7" @@ -16310,9 +20369,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.39" +"@swc/core-win32-x64-msvc@npm:1.7.6": + version: 1.7.6 + resolution: "@swc/core-win32-x64-msvc@npm:1.7.6" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -16363,22 +20422,72 @@ __metadata: languageName: node linkType: hard +"@swc/core@npm:^1.2.119, @swc/core@npm:^1.2.152": + version: 1.2.168 + resolution: "@swc/core@npm:1.2.168" + dependencies: + "@swc/core-android-arm-eabi": 1.2.168 + "@swc/core-android-arm64": 1.2.168 + "@swc/core-darwin-arm64": 1.2.168 + "@swc/core-darwin-x64": 1.2.168 + "@swc/core-freebsd-x64": 1.2.168 + "@swc/core-linux-arm-gnueabihf": 1.2.168 + "@swc/core-linux-arm64-gnu": 1.2.168 + "@swc/core-linux-arm64-musl": 1.2.168 + "@swc/core-linux-x64-gnu": 1.2.168 + "@swc/core-linux-x64-musl": 1.2.168 + "@swc/core-win32-arm64-msvc": 1.2.168 + "@swc/core-win32-ia32-msvc": 1.2.168 + "@swc/core-win32-x64-msvc": 1.2.168 + dependenciesMeta: + "@swc/core-android-arm-eabi": + optional: true + "@swc/core-android-arm64": + optional: true + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-freebsd-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + bin: + swcx: run_swcx.js + checksum: b5c9f1c848f1fc156bcee1b20de50e937716b29cdf6376c76c6dce708727a139d400ac823ec93954e874a9f544edec66e8d215fc61620cdcbde7ee7df0918ab6 + languageName: node + linkType: hard + "@swc/core@npm:^1.3.82": - version: 1.7.39 - resolution: "@swc/core@npm:1.7.39" - dependencies: - "@swc/core-darwin-arm64": 1.7.39 - "@swc/core-darwin-x64": 1.7.39 - "@swc/core-linux-arm-gnueabihf": 1.7.39 - "@swc/core-linux-arm64-gnu": 1.7.39 - "@swc/core-linux-arm64-musl": 1.7.39 - "@swc/core-linux-x64-gnu": 1.7.39 - "@swc/core-linux-x64-musl": 1.7.39 - "@swc/core-win32-arm64-msvc": 1.7.39 - "@swc/core-win32-ia32-msvc": 1.7.39 - "@swc/core-win32-x64-msvc": 1.7.39 + version: 1.7.6 + resolution: "@swc/core@npm:1.7.6" + dependencies: + "@swc/core-darwin-arm64": 1.7.6 + "@swc/core-darwin-x64": 1.7.6 + "@swc/core-linux-arm-gnueabihf": 1.7.6 + "@swc/core-linux-arm64-gnu": 1.7.6 + "@swc/core-linux-arm64-musl": 1.7.6 + "@swc/core-linux-x64-gnu": 1.7.6 + "@swc/core-linux-x64-musl": 1.7.6 + "@swc/core-win32-arm64-msvc": 1.7.6 + "@swc/core-win32-ia32-msvc": 1.7.6 + "@swc/core-win32-x64-msvc": 1.7.6 "@swc/counter": ^0.1.3 - "@swc/types": ^0.1.13 + "@swc/types": ^0.1.12 peerDependencies: "@swc/helpers": "*" dependenciesMeta: @@ -16405,7 +20514,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: f9b08de1c911f787ef5d9e727f9d32afd407092ade75b7f00d7e3977320a7ab85ec9be2a23cd1579d17aaa6df5189078609aacffb5f1945afa489f261a2ca7ff + checksum: 6ecc0d5721458c35ee236ffeb8ac6c909aaf28155f9dbcdf796111ed28bc6273629bd2156547dff70368dff0bf43c6aae7e2cafbb507b31f9ab6e3aed879cd03 languageName: node linkType: hard @@ -16444,12 +20553,22 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:^0.5.12": - version: 0.5.13 - resolution: "@swc/helpers@npm:0.5.13" +"@swc/helpers@npm:^0.4.14": + version: 0.4.36 + resolution: "@swc/helpers@npm:0.4.36" + dependencies: + legacy-swc-helpers: "npm:@swc/helpers@=0.4.14" + tslib: ^2.4.0 + checksum: 20b9f021a9711633d709ef1c231423eb079cb7ed14ad191dc9583b0b46684a95d0e87c3efd7472e7673ddbd30eb200c21490ab43ad251df8f845cd09df3d236f + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.4.2, legacy-swc-helpers@npm:@swc/helpers@=0.4.14": + version: 0.4.14 + resolution: "@swc/helpers@npm:0.4.14" dependencies: tslib: ^2.4.0 - checksum: d50c2c10da6ef940af423c6b03ad9c3c94cf9de59314b1e921a7d1bcc081a6074481c9d67b655fc8fe66a73288f98b25950743792a63882bfb5793b362494fc0 + checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 languageName: node linkType: hard @@ -16462,12 +20581,12 @@ __metadata: languageName: node linkType: hard -"@swc/types@npm:^0.1.13": - version: 0.1.13 - resolution: "@swc/types@npm:0.1.13" +"@swc/types@npm:^0.1.12": + version: 0.1.12 + resolution: "@swc/types@npm:0.1.12" dependencies: "@swc/counter": ^0.1.3 - checksum: 4d9ef0fba20e410bee38b20b60eeb284a1284c1cf6b5f84754b6f5e467e5e0621e2db67dc31e22c524a8d63f36d0a1d530126cd97752a85f140d91bf53553e01 + checksum: cf7f89e46f859864075d7965582baea9c5f98830f45b1046251568c9bdf1ca484b1bf37f6d3c32b7c82ecf8cd5df89d22f05268c391819c44e49911bb1a8e71a languageName: node linkType: hard @@ -16480,18 +20599,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:4.36.1": - version: 4.36.1 - resolution: "@tanstack/query-core@npm:4.36.1" - checksum: 47672094da20d89402d9fe03bb7b0462be73a76ff9ca715169738bc600a719d064d106d083a8eedae22a2c22de22f87d5eb5d31ef447aba771d9190f2117ed10 +"@tanstack/query-core@npm:4.24.9": + version: 4.24.9 + resolution: "@tanstack/query-core@npm:4.24.9" + checksum: 7b84e960d82c046c9eef6083cbc13b21c2ed8552fe8a5f092a66ca2586af66b770ca71ad838135ef49ac8b990e5f85d34a1d8b8de13fffb3abb0fb780a64a532 languageName: node linkType: hard "@tanstack/react-query@npm:^4.3.9": - version: 4.36.1 - resolution: "@tanstack/react-query@npm:4.36.1" + version: 4.24.9 + resolution: "@tanstack/react-query@npm:4.24.9" dependencies: - "@tanstack/query-core": 4.36.1 + "@tanstack/query-core": 4.24.9 use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -16502,7 +20621,7 @@ __metadata: optional: true react-native: optional: true - checksum: 1aff0a476859386f8d32253fa0d0bde7b81769a6d4d4d9cbd78778f0f955459a3bdb7ee27a0d2ee7373090f12998b45df80db0b5b313bd0a7a39d36c6e8e51c5 + checksum: 409c945c5043d11fa2f3c219254df5b0505bdf7d9dc94821f5db495d87a38fe27e0a373144446cef42fc829d1449a64e3fa873adf37e8abe15562e5832d59516 languageName: node linkType: hard @@ -16535,18 +20654,18 @@ __metadata: linkType: hard "@testing-library/dom@npm:^8.1.0": - version: 8.20.1 - resolution: "@testing-library/dom@npm:8.20.1" + version: 8.16.0 + resolution: "@testing-library/dom@npm:8.16.0" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 - "@types/aria-query": ^5.0.1 - aria-query: 5.1.3 + "@types/aria-query": ^4.2.0 + aria-query: ^5.0.0 chalk: ^4.1.0 dom-accessibility-api: ^0.5.9 - lz-string: ^1.5.0 + lz-string: ^1.4.4 pretty-format: ^27.0.2 - checksum: 06fc8dc67849aadb726cbbad0e7546afdf8923bd39acb64c576d706249bd7d0d05f08e08a31913fb621162e3b9c2bd0dce15964437f030f9fa4476326fdd3007 + checksum: 37aabbec872522bcb51106ecb700d9be601293e75445084b6cc195921db4b2d06d6bd4c67ad834174c129f2199c39aa540b6d17c296fcbd701dc99fd800afe36 languageName: node linkType: hard @@ -16595,15 +20714,15 @@ __metadata: linkType: hard "@tinymce/tinymce-react@npm:^3.13.0": - version: 3.14.0 - resolution: "@tinymce/tinymce-react@npm:3.14.0" + version: 3.13.0 + resolution: "@tinymce/tinymce-react@npm:3.13.0" dependencies: prop-types: ^15.6.2 tinymce: ^5.5.1 peerDependencies: - react: ^18.0.0 || ^17.0.1 || ^16.7.0 - react-dom: ^18.0.0 || ^17.0.1 || ^16.7.0 - checksum: e8b1b83c71f297a318cc66b0546961e975e60f64c91d38395e3c46d62f9663cba49b2b78165ce5c648f7b651d5f6dc9cef66a00380fbc33d788078f9194ec638 + react: ^17.0.1 || ^16.7.0 + react-dom: ^17.0.1 || ^16.7.0 + checksum: 684b84a7e7ed320e2666b00568ff665d38bf1d8d4ae96ae0b939e407c26566bbb953bc512043788daf0f849218262a15b065c29db5c6dd6fa804490800b61858 languageName: node linkType: hard @@ -16648,30 +20767,30 @@ __metadata: linkType: hard "@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 + version: 1.0.8 + resolution: "@tsconfig/node10@npm:1.0.8" + checksum: b8d5fffbc6b17ef64ef74f7fdbccee02a809a063ade785c3648dae59406bc207f70ea2c4296f92749b33019fa36a5ae716e42e49cc7f1bbf0fd147be0d6b970a languageName: node linkType: hard "@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a + version: 1.0.9 + resolution: "@tsconfig/node12@npm:1.0.9" + checksum: a01b2400ab3582b86b589c6d31dcd0c0656f333adecde85d6d7d4086adb059808b82692380bb169546d189bf771ae21d02544a75b57bd6da4a5dd95f8567bec9 languageName: node linkType: hard "@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d + version: 1.0.1 + resolution: "@tsconfig/node14@npm:1.0.1" + checksum: 976345e896c0f059867f94f8d0f6ddb8b1844fb62bf36b727de8a9a68f024857e5db97ed51d3325e23e0616a5e48c034ff51a8d595b3fe7e955f3587540489be languageName: node linkType: hard "@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff + version: 1.0.2 + resolution: "@tsconfig/node16@npm:1.0.2" + checksum: ca94d3639714672bbfd55f03521d3f56bb6a25479bd425da81faf21f13e1e9d15f40f97377dedbbf477a5841c5b0c8f4cd1b391f33553d750b9202c54c2c07aa languageName: node linkType: hard @@ -16683,11 +20802,11 @@ __metadata: linkType: hard "@types/accepts@npm:^1.3.5": - version: 1.3.7 - resolution: "@types/accepts@npm:1.3.7" + version: 1.3.5 + resolution: "@types/accepts@npm:1.3.5" dependencies: "@types/node": "*" - checksum: 7678cf74976e16093aff6e6f9755826faf069ac1e30179276158ce46ea246348ff22ca6bdd46cef08428881337d9ceefbf00bab08a7731646eb9fc9449d6a1e7 + checksum: 590b7580570534a640510c071e09074cf63b5958b237a728f94322567350aea4d239f8a9d897a12b15c856b992ee4d7907e9812bb079886af2c00714e7fb3f60 languageName: node linkType: hard @@ -16701,11 +20820,11 @@ __metadata: linkType: hard "@types/archiver@npm:^5.1.1": - version: 5.3.4 - resolution: "@types/archiver@npm:5.3.4" + version: 5.1.1 + resolution: "@types/archiver@npm:5.1.1" dependencies: - "@types/readdir-glob": "*" - checksum: 4ef27b99091ada9b8f13017d5b9e6d42a439e35a7858b30e040c408e081d98d8db6307b0762500288b5da38cab9823c4756b6abae1fdd2658d42bfb09eb7c5fb + "@types/glob": "*" + checksum: e3f1cb17ebcc5ff6be0c711305d3ed5e5248d514cc85e8440c3ae4bde04f761dcb772f549e2299c8ae325d88045e62ae34c0b3dd850eec6b39864c055d7aa634 languageName: node linkType: hard @@ -16716,10 +20835,17 @@ __metadata: languageName: node linkType: hard +"@types/aria-query@npm:^4.2.0": + version: 4.2.1 + resolution: "@types/aria-query@npm:4.2.1" + checksum: cf60cc7aa0ed52514e8c7289776de9bb3321217d48f54c95d63e1e1eb9940689c1fd3e39d68da5eaee1541108363f0113007f67d6e32e7fbc983526f08e5f0ce + languageName: node + linkType: hard + "@types/aria-query@npm:^5.0.1": - version: 5.0.4 - resolution: "@types/aria-query@npm:5.0.4" - checksum: ad8b87e4ad64255db5f0a73bc2b4da9b146c38a3a8ab4d9306154334e0fc67ae64e76bfa298eebd1e71830591fb15987e5de7111bdb36a2221bdc379e3415fb0 + version: 5.0.1 + resolution: "@types/aria-query@npm:5.0.1" + checksum: 69fd7cceb6113ed370591aef04b3fd0742e9a1b06dd045c43531448847b85de181495e4566f98e776b37c422a12fd71866e0a1dfd904c5ec3f84d271682901de languageName: node linkType: hard @@ -16739,7 +20865,33 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:*, @types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.1.7, @types/babel__core@npm:^7.18.0": +"@types/babel__core@npm:*": + version: 7.20.0 + resolution: "@types/babel__core@npm:7.20.0" + dependencies: + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: 49b601a0a7637f1f387442c8156bd086cfd10ff4b82b0e1994e73a6396643b5435366fb33d6b604eade8467cca594ef97adcbc412aede90bb112ebe88d0ad6df + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.1.7": + version: 7.1.19 + resolution: "@types/babel__core@npm:7.1.19" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: 8c9fa87a1c2224cbec251683a58bebb0d74c497118034166aaa0491a4e2627998a6621fc71f8a60ffd27d9c0c52097defedf7637adc6618d0331c15adb302338 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.18.0": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -16753,34 +20905,43 @@ __metadata: linkType: hard "@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" + version: 7.6.2 + resolution: "@types/babel__generator@npm:7.6.2" dependencies: "@babel/types": ^7.0.0 - checksum: 5b332ea336a2efffbdeedb92b6781949b73498606ddd4205462f7d96dafd45ff3618770b41de04c4881e333dd84388bfb8afbdf6f2764cbd98be550d85c6bb48 + checksum: b7764309e5f292c4a15fb587ba610e7fa290e1a2824efe16c0608abdb835de310147b4410f067bb25d817ba72bfc65c6aa0018933b02a774e744dbe51befeab6 languageName: node linkType: hard "@types/babel__helper-plugin-utils@npm:^7.10.0": - version: 7.10.3 - resolution: "@types/babel__helper-plugin-utils@npm:7.10.3" + version: 7.10.0 + resolution: "@types/babel__helper-plugin-utils@npm:7.10.0" dependencies: "@types/babel__core": "*" - checksum: eb27740adaad62f72f1c1eebafefc71efe8df05f3bf2c0a6ec9fad1907301c0129a1031998f37dcaf200a7a3883414dca667ed660fd8465f62b21c4cbace30e3 + checksum: 5a5fce5e8910b4728e2d0740d9fd72af86bbf6ce747d500ce82c8694200af63d45041f5c8101847f98e1cecddfeb5f13a447e592d5246cddaabbeccfcba4098e languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" + version: 7.4.0 + resolution: "@types/babel__template@npm:7.4.0" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 + checksum: 5262dc75e66fe0531b046d19f5c39d1b7e3419e340624229b52757cdedb295cb5658494b64eb234bd18cab7740c45c1d72ed2f16d1d189a765df2dc4efeed1af languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6, @types/babel__traverse@npm:^7.18.0": +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.11.1 + resolution: "@types/babel__traverse@npm:7.11.1" + dependencies: + "@babel/types": ^7.3.0 + checksum: 7bcf7fd0c88687929467d8be08460a7b216b2df5080338bc0575f1b9dbc51ba467b44063802ebbbea1249d5e2a87fed1f02d18b36c1723cd4d957cca70d3a89b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:^7.18.0": version: 7.20.6 resolution: "@types/babel__traverse@npm:7.20.6" dependencies: @@ -16790,12 +20951,12 @@ __metadata: linkType: hard "@types/body-parser@npm:*": - version: 1.19.5 - resolution: "@types/body-parser@npm:1.19.5" + version: 1.19.0 + resolution: "@types/body-parser@npm:1.19.0" dependencies: "@types/connect": "*" "@types/node": "*" - checksum: 1e251118c4b2f61029cc43b0dc028495f2d1957fe8ee49a707fb940f86a9bd2f9754230805598278fe99958b49e9b7e66eec8ef6a50ab5c1f6b93e1ba2aaba82 + checksum: 15043566f1909e2a08dabb0a5d2642f8988545a1369bc5995fc40ee90c95200da2aa66f9240fcb19fc6af6ff4e27ff453f311b49363c14bb308c308c0751ca9b languageName: node linkType: hard @@ -16810,30 +20971,30 @@ __metadata: linkType: hard "@types/bonjour@npm:^3.5.9": - version: 3.5.13 - resolution: "@types/bonjour@npm:3.5.13" + version: 3.5.10 + resolution: "@types/bonjour@npm:3.5.10" dependencies: "@types/node": "*" - checksum: e827570e097bd7d625a673c9c208af2d1a22fa3885c0a1646533cf24394c839c3e5f60ac1bc60c0ddcc69c0615078c9fb2c01b42596c7c582d895d974f2409ee + checksum: bfcadb042a41b124c4e3de4925e3be6d35b78f93f27c4535d5ff86980dc0f8bc407ed99b9b54528952dc62834d5a779392f7a12c2947dd19330eb05a6bcae15a languageName: node linkType: hard "@types/cacheable-request@npm:^6.0.1": - version: 6.0.3 - resolution: "@types/cacheable-request@npm:6.0.3" + version: 6.0.2 + resolution: "@types/cacheable-request@npm:6.0.2" dependencies: "@types/http-cache-semantics": "*" - "@types/keyv": ^3.1.4 + "@types/keyv": "*" "@types/node": "*" - "@types/responselike": ^1.0.0 - checksum: d9b26403fe65ce6b0cb3720b7030104c352bcb37e4fac2a7089a25a97de59c355fa08940658751f2f347a8512aa9d18fdb66ab3ade835975b2f454f2d5befbd9 + "@types/responselike": "*" + checksum: 667d25808dbf46fe104d6f029e0281ff56058d50c7c1b9182774b3e38bb9c1124f56e4c367ba54f92dbde2d1cc573f26eb0e9748710b2822bc0fd1e5498859c6 languageName: node linkType: hard "@types/caseless@npm:*": - version: 0.12.5 - resolution: "@types/caseless@npm:0.12.5" - checksum: f6a3628add76d27005495914c9c3873a93536957edaa5b69c63b46fe10b4649a6fecf16b676c1695f46aab851da47ec6047dcf3570fa8d9b6883492ff6d074e0 + version: 0.12.2 + resolution: "@types/caseless@npm:0.12.2" + checksum: 430d15911184ad11e0a8aa21d1ec15fcc93b90b63570c37bf16ebd34457482bfc8de3f5eb6771e0ef986ce183270d4297823b0f492c346255967e78f7292388b languageName: node linkType: hard @@ -16854,11 +21015,11 @@ __metadata: linkType: hard "@types/codemirror@npm:*": - version: 5.60.15 - resolution: "@types/codemirror@npm:5.60.15" + version: 5.60.7 + resolution: "@types/codemirror@npm:5.60.7" dependencies: "@types/tern": "*" - checksum: cfad3f569de48fba3efa44fdfeba77933e231486a52cc80cff7ce6eeeed5b447a5bc2b11e2226bc00ccee332c661e53e35a15cf14eb835f434a6a402d9462f5f + checksum: 0312ce032eb139b408588a7e7cf3b392a510a2cfa6f477f2dd20d8bca1990e5e6e5540e708f9a69d1a58e68ea7fd234b789c801aa7ef4f3b3dc32a1478b04a91 languageName: node linkType: hard @@ -16872,21 +21033,21 @@ __metadata: linkType: hard "@types/connect-history-api-fallback@npm:^1.3.5": - version: 1.5.4 - resolution: "@types/connect-history-api-fallback@npm:1.5.4" + version: 1.5.0 + resolution: "@types/connect-history-api-fallback@npm:1.5.0" dependencies: "@types/express-serve-static-core": "*" "@types/node": "*" - checksum: e1dee43b8570ffac02d2d47a2b4ba80d3ca0dd1840632dafb221da199e59dbe3778d3d7303c9e23c6b401f37c076935a5bc2aeae1c4e5feaefe1c371fe2073fd + checksum: f180e7c540728d6dd3a1eb2376e445fe7f9de4ee8a5b460d5ad80062cdb6de6efc91c6851f39e9d5933b3dcd5cd370673c52343a959aa091238b6f863ea4447c languageName: node linkType: hard "@types/connect@npm:*": - version: 3.4.38 - resolution: "@types/connect@npm:3.4.38" + version: 3.4.34 + resolution: "@types/connect@npm:3.4.34" dependencies: "@types/node": "*" - checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 + checksum: c6e2aa299cf3979c00602f48ce9163700f0cbfec6ba2a8e1506d08f51da0279805a478ea094252fad7c369a563ee033b359c708ab34b1763397c58d7e2df07ad languageName: node linkType: hard @@ -16913,10 +21074,10 @@ __metadata: languageName: node linkType: hard -"@types/cookiejar@npm:^2.1.5": - version: 2.1.5 - resolution: "@types/cookiejar@npm:2.1.5" - checksum: 04d5990e87b6387532d15a87d9ec9b2eb783039291193863751dcfd7fc723a3b3aa30ce4c06b03975cba58632e933772f1ff031af23eaa3ac7f94e71afa6e073 +"@types/cookiejar@npm:*": + version: 2.1.2 + resolution: "@types/cookiejar@npm:2.1.2" + checksum: f6e1903454007f86edd6c3520cbb4d553e1d4e17eaf1f77f6f75e3270f48cc828d74397a113a36942f5fe52f9fa71067bcfa738f53ad468fcca0bc52cb1cbd28 languageName: node linkType: hard @@ -16937,11 +21098,11 @@ __metadata: linkType: hard "@types/cross-spawn@npm:^6.0.2": - version: 6.0.6 - resolution: "@types/cross-spawn@npm:6.0.6" + version: 6.0.3 + resolution: "@types/cross-spawn@npm:6.0.3" dependencies: "@types/node": "*" - checksum: b4172927cd1387cf037c3ade785ef46c87537b7bc2803d7f6663b4904d0c5d6f726415d1adb2fee4fecb21746738f11336076449265d46be4ce110cc3a8c8436 + checksum: 06d50fa1e1370ef60b9c9085b76adec7d7bc20728fbb02b3c2061d4d922312acf1ba56a7c94d88c27a22fc6241ab6b970c936f3294038a9c97a719fbc8eb8a76 languageName: node linkType: hard @@ -16953,38 +21114,56 @@ __metadata: linkType: hard "@types/d3-path@npm:^2": - version: 2.0.4 - resolution: "@types/d3-path@npm:2.0.4" - checksum: 054005eeef4420a1d2867509e25da419521086b9d2aa22b45095b77604cfef1b8208742063cac3bfd82e4ff8b0214d4c64bf5f0e08fa4c7919114d30af4fdf9d + version: 2.0.1 + resolution: "@types/d3-path@npm:2.0.1" + checksum: 2fe04503ec56de47e2b8482e5a55e2eaf2940444f2cea00a5fb740d52d24bddfe13e900e392c1edebf2127b11557db09aeae6f5669f49a35caac4fe1a9d43b84 languageName: node linkType: hard "@types/d3-scale@npm:^3.0.0": - version: 3.3.5 - resolution: "@types/d3-scale@npm:3.3.5" + version: 3.3.2 + resolution: "@types/d3-scale@npm:3.3.2" dependencies: "@types/d3-time": ^2 - checksum: e6ffe97c3022c857a88f73775930bd577fa55460f65eaf68038cd39d1b5d8e4a9941440b5ac8d382568463f04ca68d6b7c3e596f4ec6575c388db17305ca1524 + checksum: 65dbf85f07a4d6ac26396075b0faa1930cfebb96dc248629d4b82c22457c89161d0f070f9a5554adccee80b959e2c6d7c1ef6b7355743afe91050d71014fe3cf languageName: node linkType: hard "@types/d3-shape@npm:^2.0.0": - version: 2.1.7 - resolution: "@types/d3-shape@npm:2.1.7" + version: 2.1.3 + resolution: "@types/d3-shape@npm:2.1.3" dependencies: "@types/d3-path": ^2 - checksum: c83f53a016e1ccfaa6104458b73ae2b1c87de0e4ddf8c43a11ceba87652965273a4b33e49d552be34f7d04b24fc380f21a1958f86ab1fd863da78e957e88af34 + checksum: d0855a1e2c11a4ab23367c86ef0cc104e12bf216f2c007fa5955da7179b60b0426d0e9ddbbbdf93d4342e7dd24c7bcfc3a2bc6258744e03fc44ca460a063dcc3 languageName: node linkType: hard "@types/d3-time@npm:^2": - version: 2.1.4 - resolution: "@types/d3-time@npm:2.1.4" - checksum: e5898c5520a536ea65b18d003d6d89e2def04c23ad15977240fe27558e8cc7ea5d0c362850090d5850d5fcd788cc6c6b16802c6826f932456aeebe9e2ddbce8a + version: 2.1.1 + resolution: "@types/d3-time@npm:2.1.1" + checksum: 115048d0cd312a3172ef7c03615dfbdbd8b92a93fd7b6d9ca93c49c704fcdb9575f4c57955eb54eb757b9834acaaf47fc52eae103d06246c59ae120de4559cbc + languageName: node + linkType: hard + +"@types/debug@npm:^4.0.0": + version: 4.1.8 + resolution: "@types/debug@npm:4.1.8" + dependencies: + "@types/ms": "*" + checksum: a9a9bb40a199e9724aa944e139a7659173a9b274798ea7efbc277cb084bc37d32fc4c00877c3496fac4fed70a23243d284adb75c00b5fdabb38a22154d18e5df + languageName: node + linkType: hard + +"@types/debug@npm:^4.1.5": + version: 4.1.7 + resolution: "@types/debug@npm:4.1.7" + dependencies: + "@types/ms": "*" + checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc languageName: node linkType: hard -"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.5, @types/debug@npm:^4.1.8": +"@types/debug@npm:^4.1.8": version: 4.1.12 resolution: "@types/debug@npm:4.1.12" dependencies: @@ -16993,45 +21172,37 @@ __metadata: languageName: node linkType: hard -"@types/deep-equal@npm:1.0.1": +"@types/deep-equal@npm:1.0.1, @types/deep-equal@npm:^1.0.1": version: 1.0.1 resolution: "@types/deep-equal@npm:1.0.1" checksum: 689b5737dd0a37d173d9e1231c07f70a1a9a989087b757422e1d167ec3640fd7eb8a538bd6008b3df400c4c11ed07a6c2a92d9aafc1f98ffaa04731a9442c781 languageName: node linkType: hard -"@types/deep-equal@npm:^1.0.1": - version: 1.0.4 - resolution: "@types/deep-equal@npm:1.0.4" - checksum: db905bcb051bc9cf5dceb231a6b0b64ab2318073939a1769e043454e8c46b1eeaac1376338751d2ee7ca9294398dd62e03d4b120361b56f96f89dc87aec753e4 - languageName: node - linkType: hard - "@types/detect-port@npm:^1.3.0": - version: 1.3.5 - resolution: "@types/detect-port@npm:1.3.5" - checksum: 923cf04c6a05af59090743baeb9948f1938ceb98c1f7ea93db7ac310210426b385aa00005d23039ebb8019a9d13e141f5246e9c733b290885018d722a4787921 + version: 1.3.3 + resolution: "@types/detect-port@npm:1.3.3" + checksum: 0dadb520286a5cfd2832d12189dc795cc3589dfd9166d1b033453fb94b0212c4067a847045833e85b0f7c73135c944cb4ccb49c8e683491845c2e8a3da5d5c1c languageName: node linkType: hard "@types/docker-modem@npm:*": - version: 3.0.6 - resolution: "@types/docker-modem@npm:3.0.6" + version: 3.0.2 + resolution: "@types/docker-modem@npm:3.0.2" dependencies: "@types/node": "*" "@types/ssh2": "*" - checksum: cc58e8189f6ec5a2b8ca890207402178a97ddac8c80d125dc65d8ab29034b5db736de15e99b91b2d74e66d14e26e73b6b8b33216613dd15fd3aa6b82c11a83ed + checksum: 1f23db30e6e9bdd4c6d6e43572fb7ac7251d106a1906a9f3faabac393897712a5a9cd5a471baedc0ac8055dab3f48eda331f41a1e2c7c6bbe3c7f433e039151c languageName: node linkType: hard "@types/dockerode@npm:^3.2.5": - version: 3.3.31 - resolution: "@types/dockerode@npm:3.3.31" + version: 3.3.0 + resolution: "@types/dockerode@npm:3.3.0" dependencies: "@types/docker-modem": "*" "@types/node": "*" - "@types/ssh2": "*" - checksum: f634f18dc0633f8324faefcde53bcd3d8f3c4bd74d31078cbeb65d2e1597f9abcf12c2158abfaea13dc816bae0f5fa08d0bb570d4214ab0df1ded90db5ebabfe + checksum: e4258c5575814001caa874347a070859920da27650d22b87d59e5df6f0843ec001c9f45489edb386628044e403f8e37678ed7bee2d2f4848b5979f48b7c857ec languageName: node linkType: hard @@ -17049,33 +21220,26 @@ __metadata: languageName: node linkType: hard -"@types/domhandler@npm:^2.4.0, @types/domhandler@npm:^2.4.3": - version: 2.4.5 - resolution: "@types/domhandler@npm:2.4.5" - checksum: 0dd551361c0ec4e8736a6bcb142ca3c9eedd9b8076cded263c555c0e4adef9b07230dc85b7c94e5cd72e9796ea2533c00e4bcf97d5e06bc10e32367429985ff1 - languageName: node - linkType: hard - "@types/domutils@npm:*": - version: 1.7.8 - resolution: "@types/domutils@npm:1.7.8" + version: 1.7.3 + resolution: "@types/domutils@npm:1.7.3" dependencies: - "@types/domhandler": ^2.4.0 - checksum: ac97a3c2baf6c7ec93a3e54a30e36363dc4acaaf76b36e8b7dc5a06d626f48ce1d4beb9cd9767c1ce745825b78296528b60a128627c324c66eaec6616dc2ea42 + domhandler: ^2.4.0 + checksum: caff7e8e16f491f4d7abf77d82bd388dc93eb85725a8f62a9c40e5654434bc39641866366ee24bf0bcfca2e2b0b7397932660992624c93507810031108dd3fc5 languageName: node linkType: hard "@types/ejs@npm:^3.1.1": - version: 3.1.5 - resolution: "@types/ejs@npm:3.1.5" - checksum: e142266283051f27a7f79329871b311687dede19ae20268d882e4de218c65e1311d28a300b85579ca67157a8d601b7234daa50c2f99b252b121d27b4e5b21468 + version: 3.1.2 + resolution: "@types/ejs@npm:3.1.2" + checksum: e4f0745b6ed53a63c08bdfdeb019a7d0e0c400896722b44d6732b4ee6bf6061d2dc965206186b8b0ae2ecd71303c29f1af1feddbca2df0acbd7bd234a74ca518 languageName: node linkType: hard "@types/emscripten@npm:^1.39.6": - version: 1.39.13 - resolution: "@types/emscripten@npm:1.39.13" - checksum: 6a50f43a90db981e088c76219578a8e9eea0add3ed99d2daed3dfe8f8b755557b89ea5aea0166db2e9399882e109971f1724636101850a46cee51dc4c9337b1f + version: 1.39.7 + resolution: "@types/emscripten@npm:1.39.7" + checksum: 9871e4495358cc06cc45b2798022cd097d8ac2eb5b2fae7c276c6c5cadea05507150fad053c73ed346d4cbd844c50a3438604e5d7c3c2a7446b703cacb1ce172 languageName: node linkType: hard @@ -17093,29 +21257,49 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.5": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.3 + resolution: "@types/eslint-scope@npm:3.7.3" + dependencies: + "@types/eslint": "*" + "@types/estree": "*" + checksum: 6772b05e1b92003d1f295e81bc847a61f4fbe8ddab77ffa49e84ed3f9552513bdde677eb53ef167753901282857dd1d604d9f82eddb34a233495932b2dc3dc17 + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 8.4.1 + resolution: "@types/eslint@npm:8.4.1" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: b5790997ee9d3820d16350192d41849b0e2448c9e93650acac672ddf502e35c0a5a25547172a9eec840a96687cd94ba1cee672cbd86640f8f4ff1b65960d2ab9 languageName: node linkType: hard -"@types/estree@npm:^0.0.51": +"@types/estree@npm:*, @types/estree@npm:^0.0.51": version: 0.0.51 resolution: "@types/estree@npm:0.0.51" checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 languageName: node linkType: hard -"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": - version: 5.0.1 - resolution: "@types/express-serve-static-core@npm:5.0.1" +"@types/estree@npm:^1.0.0": + version: 1.0.1 + resolution: "@types/estree@npm:1.0.1" + checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": + version: 4.17.35 + resolution: "@types/express-serve-static-core@npm:4.17.35" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: e9daf9bc0d83f593aa2fdcb7c3f9c0a8747bfdf6d8a5ee48ed8d8cc4dc2ed52bdc75d20f6fec9ef00a1aa5ade4c7f16668ff1c020911b50394472844813b1cdb + checksum: cc8995d10c6feda475ec1b3a0e69eb0f35f21ab6b49129ad5c6f279e0bc5de8175bc04ec51304cb79a43eec3ed2f5a1e01472eb6d5f827b8c35c6ca8ad24eb6e languageName: node linkType: hard @@ -17130,31 +21314,29 @@ __metadata: languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.18, @types/express-serve-static-core@npm:^4.17.33": - version: 4.19.6 - resolution: "@types/express-serve-static-core@npm:4.19.6" +"@types/express-serve-static-core@npm:^4.17.18": + version: 4.17.19 + resolution: "@types/express-serve-static-core@npm:4.17.19" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" - "@types/send": "*" - checksum: b0576eddc2d25ccdf10e68ba09598b87a4d7b2ad04a81dc847cb39fe56beb0b6a5cc017b1e00aa0060cb3b38e700384ce96d291a116a0f1e54895564a104aae9 + checksum: fb00b18ab1dc9a4763e88ec2c4000c28e24f3396cf3106498b00320308541b54a2e33e2518c18eb069be4ebb4068b6436a7dc246b1cb093a079e81f9ea31cfc3 languageName: node linkType: hard -"@types/express@npm:*": - version: 5.0.0 - resolution: "@types/express@npm:5.0.0" +"@types/express-serve-static-core@npm:^4.17.31": + version: 4.17.33 + resolution: "@types/express-serve-static-core@npm:4.17.33" dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^5.0.0 + "@types/node": "*" "@types/qs": "*" - "@types/serve-static": "*" - checksum: ef68d8e2b7593c930093b1e79bf4df15413773508c9acd6a1a933ed7017f2a4892a8d128b2222d7eab9a3fa43181067a378c2600d9258bd7ae917f170e962df4 + "@types/range-parser": "*" + checksum: dce580d16b85f207445af9d4053d66942b27d0c72e86153089fa00feee3e96ae336b7bedb31ed4eea9e553c99d6dd356ed6e0928f135375d9f862a1a8015adf2 languageName: node linkType: hard -"@types/express@npm:4.17.13": +"@types/express@npm:*, @types/express@npm:4.17.13": version: 4.17.13 resolution: "@types/express@npm:4.17.13" dependencies: @@ -17166,7 +21348,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:4.17.17": +"@types/express@npm:4.17.17, @types/express@npm:^4.17.13, @types/express@npm:^4.7.0": version: 4.17.17 resolution: "@types/express@npm:4.17.17" dependencies: @@ -17178,15 +21360,15 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:^4.17.13, @types/express@npm:^4.17.14, @types/express@npm:^4.17.17, @types/express@npm:^4.7.0": - version: 4.17.21 - resolution: "@types/express@npm:4.17.21" +"@types/express@npm:^4.17.14": + version: 4.17.16 + resolution: "@types/express@npm:4.17.16" dependencies: "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.33 + "@types/express-serve-static-core": ^4.17.31 "@types/qs": "*" "@types/serve-static": "*" - checksum: fb238298630370a7392c7abdc80f495ae6c716723e114705d7e3fb67e3850b3859bbfd29391463a3fb8c0b32051847935933d99e719c0478710f8098ee7091c5 + checksum: 43f3ed2cea6e5e83c7c1098c5152f644e975fd764443717ff9c812a1518416a9e7e9f824ffe852c118888cbfb994ed023cad08331f49b19ced469bb185cdd5cd languageName: node linkType: hard @@ -17211,41 +21393,31 @@ __metadata: languageName: node linkType: hard -"@types/fs-extra@npm:11.0.1": - version: 11.0.1 - resolution: "@types/fs-extra@npm:11.0.1" - dependencies: - "@types/jsonfile": "*" - "@types/node": "*" - checksum: 3e930346e5d84f419deb8ced1c582beef8cb20d0bd8a0eb145a37d75bab0572a1895f0e48a0d681d386b3a58b9a992b2d2acecc464bcaec2548f53ea00718651 - languageName: node - linkType: hard - "@types/glob@npm:*": - version: 8.1.0 - resolution: "@types/glob@npm:8.1.0" + version: 7.1.3 + resolution: "@types/glob@npm:7.1.3" dependencies: - "@types/minimatch": ^5.1.2 + "@types/minimatch": "*" "@types/node": "*" - checksum: 9101f3a9061e40137190f70626aa0e202369b5ec4012c3fabe6f5d229cce04772db9a94fa5a0eb39655e2e4ad105c38afbb4af56a56c0996a8c7d4fc72350e3d + checksum: e0eef12285f548f15d887145590594a04ccce7f7e645fb047cbac18cb093f25d507ffbcc725312294c224bb78cf980fce33e5807de8d6f8a868b4186253499d4 languageName: node linkType: hard -"@types/google-map-react@npm:2.1.10": - version: 2.1.10 - resolution: "@types/google-map-react@npm:2.1.10" +"@types/google-map-react@npm:2.1.7": + version: 2.1.7 + resolution: "@types/google-map-react@npm:2.1.7" dependencies: "@types/react": "*" - checksum: 92d2977c6407aa1ff72ab18330e869c4f1b51eb1f2d0800e1b73e20d400be41105107719a29b6918d4959c018442f3b6fb4dbc8c9ded184895c8c36bf4e80e7b + checksum: 0e8e014208e39624c861616021b4f8f8e085caaad3600418f33e6bf2481451ea97a1167ae4a2157cf3d1e397905721955a012b00e55d7c07d7e4bd95694dc69e languageName: node linkType: hard "@types/graceful-fs@npm:^4.1.2, @types/graceful-fs@npm:^4.1.3": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" + version: 4.1.5 + resolution: "@types/graceful-fs@npm:4.1.5" dependencies: "@types/node": "*" - checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 + checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a languageName: node linkType: hard @@ -17259,9 +21431,9 @@ __metadata: linkType: hard "@types/hammerjs@npm:^2.0.36": - version: 2.0.46 - resolution: "@types/hammerjs@npm:2.0.46" - checksum: caba6ec788d19905c71092670b58514b3d1f5eee5382bf9205e8df688d51e7857b7994e2dd7aed57fac8977bdf0e456d67fbaf23440a4385b8ce25fe2af1ec39 + version: 2.0.45 + resolution: "@types/hammerjs@npm:2.0.45" + checksum: 40a29067c485a2a1f4345718104218fcf769adb1dbe091cdb6f679b3293dfa0798b207eb498ee7fd79ae8664c999117738fa0c01753f7465a639128f38c3ff5b languageName: node linkType: hard @@ -17284,12 +21456,12 @@ __metadata: linkType: hard "@types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.5 - resolution: "@types/hoist-non-react-statics@npm:3.3.5" + version: 3.3.1 + resolution: "@types/hoist-non-react-statics@npm:3.3.1" dependencies: "@types/react": "*" hoist-non-react-statics: ^3.3.0 - checksum: b645b062a20cce6ab1245ada8274051d8e2e0b2ee5c6bd58215281d0ec6dae2f26631af4e2e7c8abe238cdcee73fcaededc429eef569e70908f82d0cc0ea31d7 + checksum: 2c0778570d9a01d05afabc781b32163f28409bb98f7245c38d5eaf082416fdb73034003f5825eb5e21313044e8d2d9e1f3fe2831e345d3d1b1d20bcd12270719 languageName: node linkType: hard @@ -17301,44 +21473,29 @@ __metadata: linkType: hard "@types/htmlparser2@npm:*": - version: 3.10.7 - resolution: "@types/htmlparser2@npm:3.10.7" + version: 3.10.2 + resolution: "@types/htmlparser2@npm:3.10.2" dependencies: - "@types/domhandler": ^2.4.3 "@types/domutils": "*" "@types/node": "*" domhandler: ^2.4.0 - checksum: 74fbd402f554ac529cc7ff1aedbdc05eabd13694a636ae91cf5842c7fe8d1a0c4253c9400b957203f01d8564615771296d22f85132be894f71eb4254dd81adb6 + checksum: 6e52e23d9980b9a6686c2726ec4ce3ccd877e85822de7f8c38b8a88ba99f8e96bfadf9dbf3b5580c3be3721fed07c424efdca061ac391ad39299188b02711ca0 languageName: node linkType: hard -"@types/http-cache-semantics@npm:*": - version: 4.0.4 - resolution: "@types/http-cache-semantics@npm:4.0.4" - checksum: 7f4dd832e618bc1e271be49717d7b4066d77c2d4eed5b81198eb987e532bb3e1c7e02f45d77918185bad936f884b700c10cebe06305f50400f382ab75055f9e8 - languageName: node - linkType: hard - -"@types/http-cache-semantics@npm:4.0.1": +"@types/http-cache-semantics@npm:*, @types/http-cache-semantics@npm:4.0.1": version: 4.0.1 resolution: "@types/http-cache-semantics@npm:4.0.1" checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 languageName: node linkType: hard -"@types/http-errors@npm:*": - version: 2.0.4 - resolution: "@types/http-errors@npm:2.0.4" - checksum: 1f3d7c3b32c7524811a45690881736b3ef741bf9849ae03d32ad1ab7062608454b150a4e7f1351f83d26a418b2d65af9bdc06198f1c079d75578282884c4e8e3 - languageName: node - linkType: hard - "@types/http-proxy@npm:^1.17.8": - version: 1.17.15 - resolution: "@types/http-proxy@npm:1.17.15" + version: 1.17.9 + resolution: "@types/http-proxy@npm:1.17.9" dependencies: "@types/node": "*" - checksum: d96eaf4e22232b587b46256b89c20525c453216684481015cf50fb385b0b319b883749ccb77dee9af57d107e8440cdacd56f4234f65176d317e9777077ff5bf3 + checksum: 7a6746d00729b2a9fe9f9dd3453430b099931df879ec8f7a7b5f07b1795f6d99b0512640c45a67390b1e4bacb9401e36824952aeeaf089feba8627a063cf8e00 languageName: node linkType: hard @@ -17360,22 +21517,29 @@ __metadata: linkType: hard "@types/imap@npm:*": - version: 0.8.40 - resolution: "@types/imap@npm:0.8.40" + version: 0.8.35 + resolution: "@types/imap@npm:0.8.35" dependencies: "@types/node": "*" - checksum: 5bd33aeeca13bd3403f685048c7c8e136502dc3f5703d732748b488193c96b79295b0901ff1dd72a5cc6b826fc33572bf7376cd6533194797903f9d58cfa8e6d + checksum: 165cc50cf90300e490e622492b102555dcd5de92287f45bcf38777d8d7e2c32d0f4ccc4a799349a2e78ef888ca60a065ff7617825240fad6feb27dc83d2bab3a languageName: node linkType: hard "@types/intl@npm:^1": - version: 1.2.2 - resolution: "@types/intl@npm:1.2.2" - checksum: c278b0184f9a0c3f4f2cbdaa6087b00e7bd71bc784012e3158b48d20ad0e9ce732ac7609846627ce1c7fd69dac1b52e4b02fa881e45d1529a71c4872e9c8648d + version: 1.2.0 + resolution: "@types/intl@npm:1.2.0" + checksum: 95348313fee4949c6feba98bb35be45c0930ff816d7fedee8afd003282cbc004bf682ff94e6a662af5987c8fcc98bb4e8f93a4919d1ef6bbd9ce83577bd77fa6 languageName: node linkType: hard -"@types/is-hotkey@npm:^0.1.1, @types/is-hotkey@npm:^0.1.8": +"@types/is-hotkey@npm:^0.1.1": + version: 0.1.2 + resolution: "@types/is-hotkey@npm:0.1.2" + checksum: 0b312ff15d1a91a9233cece1bcc3a6238eccf5552213388837f9be33defcbcfa0e87f6dc3636d8085f215988ae461cf797e69c55ba9c1f521453c8b8f9364d16 + languageName: node + linkType: hard + +"@types/is-hotkey@npm:^0.1.8": version: 0.1.10 resolution: "@types/is-hotkey@npm:0.1.10" checksum: 9ecc49fb3822b3cfa8335132d54c6e577d0b14bb52d0bf1f817cdd19c442555b7523945e2ae72f6098e3c7f64b4777390f38afec3e4660343cfb471377e7fd82 @@ -17397,57 +21561,57 @@ __metadata: linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 + version: 2.0.3 + resolution: "@types/istanbul-lib-coverage@npm:2.0.3" + checksum: 0650cba4be8f464bee89b9de0b71a5ea3b5cc676ce24e1196b5d6a51542ce9e613ae4549bf19756bb33dbbbb32b47931040266100062bfb197c597d73e341eb0 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" + version: 3.0.0 + resolution: "@types/istanbul-lib-report@npm:3.0.0" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 + checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 languageName: node linkType: hard -"@types/istanbul-reports@npm:^1.1.1": - version: 1.1.2 - resolution: "@types/istanbul-reports@npm:1.1.2" +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.0 + resolution: "@types/istanbul-reports@npm:3.0.0" dependencies: - "@types/istanbul-lib-coverage": "*" "@types/istanbul-lib-report": "*" - checksum: 00866e815d1e68d0a590d691506937b79d8d65ad8eab5ed34dbfee66136c7c0f4ea65327d32046d5fe469f22abea2b294987591dc66365ebc3991f7e413b2d78 + checksum: 286a18cff19c4dac4321b9ea406a3560faf577fb2a4df5abf9d577fa81ba831c9baa7d40d03f1daf7fe613d468546b731c00b844b72fad9834c583311a35bb7b languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" +"@types/jest@npm:*": + version: 27.0.2 + resolution: "@types/jest@npm:27.0.2" dependencies: - "@types/istanbul-lib-report": "*" - checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 + jest-diff: ^27.0.0 + pretty-format: ^27.0.0 + checksum: 814ad5f5d2f277849f47e52906da4b745758e555630fc8cb46a071bde648eefeffb1b35710c530a8cea7fc4ea7c1d813812c120484bf7902ab6c5e473cdd49c9 languageName: node linkType: hard -"@types/jest@npm:*, @types/jest@npm:^29.2.1": - version: 29.5.14 - resolution: "@types/jest@npm:29.5.14" +"@types/jest@npm:29.5.4": + version: 29.5.4 + resolution: "@types/jest@npm:29.5.4" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 + checksum: 38ed5942f44336452efd0f071eab60aaa57cd8d46530348d0a3aa5a691dcbf1366c4ca8f6ee8364efb45b4413bfefae443e5d4f469246a472a03b21ac11cd4ed languageName: node linkType: hard -"@types/jest@npm:29.5.4": - version: 29.5.4 - resolution: "@types/jest@npm:29.5.4" +"@types/jest@npm:^29.2.1": + version: 29.5.0 + resolution: "@types/jest@npm:29.5.0" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 38ed5942f44336452efd0f071eab60aaa57cd8d46530348d0a3aa5a691dcbf1366c4ca8f6ee8364efb45b4413bfefae443e5d4f469246a472a03b21ac11cd4ed + checksum: cd877e5c56d299cceb8bfdcbb1a77723c706750dd3c3bc47403bc3599b8faff590a3b009c68bb5b11bf7a8c77d1fb01de5e124329b4a08e65f1cdda28b0ecdb8 languageName: node linkType: hard @@ -17473,9 +21637,9 @@ __metadata: linkType: hard "@types/js-yaml@npm:^4.0.0": - version: 4.0.9 - resolution: "@types/js-yaml@npm:4.0.9" - checksum: e5e5e49b5789a29fdb1f7d204f82de11cb9e8f6cb24ab064c616da5d6e1b3ccfbf95aa5d1498a9fbd3b9e745564e69b4a20b6c530b5a8bbb2d4eb830cda9bc69 + version: 4.0.5 + resolution: "@types/js-yaml@npm:4.0.5" + checksum: 7dcac8c50fec31643cc9d6444b5503239a861414cdfaa7ae9a38bc22597c4d850c4b8cec3d82d73b3fbca408348ce223b0408d598b32e094470dfffc6d486b4d languageName: node linkType: hard @@ -17490,6 +21654,13 @@ __metadata: languageName: node linkType: hard +"@types/json-buffer@npm:~3.0.0": + version: 3.0.0 + resolution: "@types/json-buffer@npm:3.0.0" + checksum: 6b0a371dd603f0eec9d00874574bae195382570e832560dadf2193ee0d1062b8e0694bbae9798bc758632361c227b1e3b19e3bd914043b498640470a2da38b77 + languageName: node + linkType: hard + "@types/json-patch@npm:0.0.30": version: 0.0.30 resolution: "@types/json-patch@npm:0.0.30" @@ -17497,7 +21668,14 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.11 + resolution: "@types/json-schema@npm:7.0.11" + checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.7": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 @@ -17505,9 +21683,9 @@ __metadata: linkType: hard "@types/json-stable-stringify@npm:^1.0.32": - version: 1.1.0 - resolution: "@types/json-stable-stringify@npm:1.1.0" - checksum: 7fdf2463b2d3ed1ffa08466842f3864b934c16061c68c5aa0aa4bc541879edaeb59ad874ffbd8b4e6714628c88ccb3b4e85dbce40badb16d104aa329212c15ba + version: 1.0.32 + resolution: "@types/json-stable-stringify@npm:1.0.32" + checksum: 3091ddc8d15c6cce1a847ba1f8db21e7c2564c7b8bc6923a873801d936228f775096b517d62653fbcebedcb2a7992555dc6ed11517ef050e75525cdf1d1bce8d languageName: node linkType: hard @@ -17518,34 +21696,34 @@ __metadata: languageName: node linkType: hard -"@types/jsonfile@npm:*": - version: 6.1.4 - resolution: "@types/jsonfile@npm:6.1.4" +"@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:^8.5.0": + version: 8.5.1 + resolution: "@types/jsonwebtoken@npm:8.5.1" dependencies: "@types/node": "*" - checksum: 309fda20eb5f1cf68f2df28931afdf189c5e7e6bec64ac783ce737bb98908d57f6f58757ad5da9be37b815645a6f914e2d4f3ac66c574b8fe1ba6616284d0e97 + checksum: 740581b0d1e18f31ce9332e26702ae2704af86f0cb0bb914ee3554517e514e97392610525f9349ea8fe3742d0f816eb86d7ab864ddbd19cef55b2db4a43883a1 languageName: node linkType: hard -"@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:^9.0.0, @types/jsonwebtoken@npm:^9.0.2": - version: 9.0.7 - resolution: "@types/jsonwebtoken@npm:9.0.7" +"@types/jsonwebtoken@npm:8.5.8": + version: 8.5.8 + resolution: "@types/jsonwebtoken@npm:8.5.8" dependencies: "@types/node": "*" - checksum: 872b62e2a50ec399d695402ccddfeb5cd66a6c3d28511f27453b932b6b67eb82c2d0ecaa864939848b88b3a8276c2492647bf5707bc82a6ac7e420d3412b9047 + checksum: 56738a918c543dba30786066959f801212e7fb5cd4ec53cf7b8d227711ed358834feb9e5141f7f88ec7c642bb39757330a5a8917e3b22e0ff9084940d35f0d70 languageName: node linkType: hard -"@types/jsonwebtoken@npm:8.5.8": - version: 8.5.8 - resolution: "@types/jsonwebtoken@npm:8.5.8" +"@types/jsonwebtoken@npm:^9.0.0": + version: 9.0.1 + resolution: "@types/jsonwebtoken@npm:9.0.1" dependencies: "@types/node": "*" - checksum: 56738a918c543dba30786066959f801212e7fb5cd4ec53cf7b8d227711ed358834feb9e5141f7f88ec7c642bb39757330a5a8917e3b22e0ff9084940d35f0d70 + checksum: a7f0925e9a42ad3ae970364c63c5986d40da5c83d51d3f4e624eb0f064a380376f9e3fb3f2f837390a9ab80143f5d75fd51866da30e110f6b486a3379e1c768f languageName: node linkType: hard -"@types/keyv@npm:^3.1.4": +"@types/keyv@npm:*": version: 3.1.4 resolution: "@types/keyv@npm:3.1.4" dependencies: @@ -17554,10 +21732,10 @@ __metadata: languageName: node linkType: hard -"@types/linkify-it@npm:^5": - version: 5.0.0 - resolution: "@types/linkify-it@npm:5.0.0" - checksum: ec98e03aa883f70153a17a1e6ed9e28b39a604049b485daeddae3a1482ec65cac0817520be6e301d99fd1a934b3950cf0f855655aae6ec27da2bb676ba4a148e +"@types/linkify-it@npm:*": + version: 3.0.2 + resolution: "@types/linkify-it@npm:3.0.2" + checksum: dff8f10fafb885422474e456596f12d518ec4cdd6c33cca7a08e7c86b912d301ed91cf5a7613e148c45a12600dc9ab3d85ad16d5b48dc1aaeda151a68f16b536 languageName: node linkType: hard @@ -17568,17 +21746,31 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.14.149, @types/lodash@npm:^4.14.150, @types/lodash@npm:^4.14.167, @types/lodash@npm:^4.14.200": - version: 4.17.12 - resolution: "@types/lodash@npm:4.17.12" - checksum: 7b564e4114f09ce5ae31a2e9493592baf20bb498507f3705c5d91cf838c2298b4f6a06f2d6c8dc608fcac63e210a2b7b13388c7a5e220e15688f813521030127 +"@types/lodash@npm:^4.14.149, @types/lodash@npm:^4.14.150": + version: 4.14.168 + resolution: "@types/lodash@npm:4.14.168" + checksum: 3326966ee089debde7a7d819e13b64991756e879945852c3357df14a7be837130f697c2cb451be9dd599eb7213fed0975bc9ca0f8f56b46fa73c46a83815b79c languageName: node linkType: hard -"@types/long@npm:^4.0.0": - version: 4.0.2 - resolution: "@types/long@npm:4.0.2" - checksum: d16cde7240d834cf44ba1eaec49e78ae3180e724cd667052b194a372f350d024cba8dd3f37b0864931683dab09ca935d52f0c4c1687178af5ada9fc85b0635f4 +"@types/lodash@npm:^4.14.167": + version: 4.14.182 + resolution: "@types/lodash@npm:4.14.182" + checksum: 7dd137aa9dbabd632408bd37009d984655164fa1ecc3f2b6eb94afe35bf0a5852cbab6183148d883e9c73a958b7fec9a9bcf7c8e45d41195add6a18c34958209 + languageName: node + linkType: hard + +"@types/lodash@npm:^4.14.200": + version: 4.17.0 + resolution: "@types/lodash@npm:4.17.0" + checksum: 3f98c0b67a93994cbc3403d4fa9dbaf52b0b6bb7f07a764d73875c2dcd5ef91222621bd5bcf8eee7b417a74d175c2f7191b9f595f8603956fd06f0674c0cba93 + languageName: node + linkType: hard + +"@types/long@npm:^4.0.0, @types/long@npm:^4.0.1": + version: 4.0.1 + resolution: "@types/long@npm:4.0.1" + checksum: ff9653c33f5000d0f131fd98a950a0343e2e33107dd067a97ac4a3b9678e1a2e39ea44772ad920f54ef6e8f107f76bc92c2584ba905a0dc4253282a4101166d0 languageName: node linkType: hard @@ -17592,36 +21784,36 @@ __metadata: languageName: node linkType: hard -"@types/markdown-it@npm:^14.1.1": - version: 14.1.2 - resolution: "@types/markdown-it@npm:14.1.2" +"@types/markdown-it@npm:^12.2.3": + version: 12.2.3 + resolution: "@types/markdown-it@npm:12.2.3" dependencies: - "@types/linkify-it": ^5 - "@types/mdurl": ^2 - checksum: ad66e0b377d6af09a155bb65f675d1e2cb27d20a3d407377fe4508eb29cde1e765430b99d5129f89012e2524abb5525d629f7057a59ff9fd0967e1ff645b9ec6 + "@types/linkify-it": "*" + "@types/mdurl": "*" + checksum: 868824a3e4d00718ba9cd4762cf16694762a670860f4b402e6e9f952b6841a2027488bdc55d05c2b960bf5078df21a9d041270af7e8949514645fe88fdb722ac languageName: node linkType: hard "@types/mdast@npm:^3.0.0": - version: 3.0.15 - resolution: "@types/mdast@npm:3.0.15" + version: 3.0.3 + resolution: "@types/mdast@npm:3.0.3" dependencies: - "@types/unist": ^2 - checksum: af85042a4e3af3f879bde4059fa9e76c71cb552dffc896cdcc6cf9dc1fd38e37035c2dbd6245cfa6535b433f1f0478f5549696234ccace47a64055a10c656530 + "@types/unist": "*" + checksum: 5318624af815ac531e49de06da1d9458f1570f87274dced00353a240b2d2c4260f1fdd40c5e65784e4a4f49b0c5eb43f77faee60def723b501880ab3747b9916 languageName: node linkType: hard -"@types/mdurl@npm:^2": - version: 2.0.0 - resolution: "@types/mdurl@npm:2.0.0" - checksum: 78746e96c655ceed63db06382da466fd52c7e9dc54d60b12973dfdd110cae06b9439c4b90e17bb8d4461109184b3ea9f3e9f96b3e4bf4aa9fe18b6ac35f283c8 +"@types/mdurl@npm:*": + version: 1.0.2 + resolution: "@types/mdurl@npm:1.0.2" + checksum: 79c7e523b377f53cf1f5a240fe23d0c6cae856667692bd21bf1d064eafe5ccc40ae39a2aa0a9a51e8c94d1307228c8f6b121e847124591a9a828c3baf65e86e2 languageName: node linkType: hard "@types/mdx@npm:^2.0.0": - version: 2.0.13 - resolution: "@types/mdx@npm:2.0.13" - checksum: 195137b548e75a85f0558bb1ca5088aff1c01ae0fc64454da06085b7513a043356d0bb51ed559d3cbc7ad724ccd8cef2a7d07d014b89a47a74dff8875ceb3b15 + version: 2.0.5 + resolution: "@types/mdx@npm:2.0.5" + checksum: 1069baff0b2d0fb0bc724748e2386af626cc30f8ef99e680afb4dee566ed0aeabd31cea774212a7033f491e594a0acc234116078b252cba94ac413f91eb585a3 languageName: node linkType: hard @@ -17632,48 +21824,58 @@ __metadata: languageName: node linkType: hard -"@types/methods@npm:^1.1.4": - version: 1.1.4 - resolution: "@types/methods@npm:1.1.4" - checksum: ad2a7178486f2fd167750f3eb920ab032a947ff2e26f55c86670a6038632d790b46f52e5b6ead5823f1e53fc68028f1e9ddd15cfead7903e04517c88debd72b1 +"@types/mime-types@npm:^2.1.0": + version: 2.1.1 + resolution: "@types/mime-types@npm:2.1.1" + checksum: 106b5d556add46446a579ad25ff15d6b421851790d887edcad558c90c1e64b1defc72bfbaf4b08f208916e21d9cc45cdb951d77be51268b18221544cfe054a3c languageName: node linkType: hard -"@types/mime-types@npm:^2.1.0": - version: 2.1.4 - resolution: "@types/mime-types@npm:2.1.4" - checksum: f8c521c54ee0c0b9f90a65356a80b1413ed27ccdc94f5c7ebb3de5d63cedb559cd2610ea55b4100805c7349606a920d96e54f2d16b2f0afa6b7cd5253967ccc9 +"@types/mime@npm:*": + version: 3.0.1 + resolution: "@types/mime@npm:3.0.1" + checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 languageName: node linkType: hard "@types/mime@npm:^1": - version: 1.3.5 - resolution: "@types/mime@npm:1.3.5" - checksum: e29a5f9c4776f5229d84e525b7cd7dd960b51c30a0fb9a028c0821790b82fca9f672dab56561e2acd9e8eed51d431bde52eafdfef30f643586c4162f1aecfc78 + version: 1.3.2 + resolution: "@types/mime@npm:1.3.2" + checksum: 0493368244cced1a69cb791b485a260a422e6fcc857782e1178d1e6f219f1b161793e9f87f5fae1b219af0f50bee24fcbe733a18b4be8fdd07a38a8fb91146fd languageName: node linkType: hard -"@types/minimatch@npm:^5.1.2": - version: 5.1.2 - resolution: "@types/minimatch@npm:5.1.2" - checksum: 0391a282860c7cb6fe262c12b99564732401bdaa5e395bee9ca323c312c1a0f45efbf34dce974682036e857db59a5c9b1da522f3d6055aeead7097264c8705a8 +"@types/minimatch@npm:*": + version: 3.0.3 + resolution: "@types/minimatch@npm:3.0.3" + checksum: b80259d55b96ef24cb3bb961b6dc18b943f2bb8838b4d8e7bead204f3173e551a416ffa49f9aaf1dc431277fffe36214118628eacf4aea20119df8835229901b languageName: node linkType: hard "@types/ms@npm:*": - version: 0.7.34 - resolution: "@types/ms@npm:0.7.34" - checksum: f38d36e7b6edecd9badc9cf50474159e9da5fa6965a75186cceaf883278611b9df6669dc3a3cc122b7938d317b68a9e3d573d316fcb35d1be47ec9e468c6bd8a + version: 0.7.31 + resolution: "@types/ms@npm:0.7.31" + checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da languageName: node linkType: hard -"@types/node-fetch@npm:^2.6.2, @types/node-fetch@npm:^2.6.4": - version: 2.6.11 - resolution: "@types/node-fetch@npm:2.6.11" +"@types/node-fetch@npm:^2.6.2": + version: 2.6.2 + resolution: "@types/node-fetch@npm:2.6.2" dependencies: "@types/node": "*" - form-data: ^4.0.0 - checksum: 180e4d44c432839bdf8a25251ef8c47d51e37355ddd78c64695225de8bc5dc2b50b7bb855956d471c026bb84bd7295688a0960085e7158cbbba803053492568b + form-data: ^3.0.0 + checksum: 6f73b1470000d303d25a6fb92875ea837a216656cb7474f66cdd67bb014aa81a5a11e7ac9c21fe19bee9ecb2ef87c1962bceeaec31386119d1ac86e4c30ad7a6 + languageName: node + linkType: hard + +"@types/node-fetch@npm:^2.6.4": + version: 2.6.4 + resolution: "@types/node-fetch@npm:2.6.4" + dependencies: + "@types/node": "*" + form-data: ^3.0.0 + checksum: f3e1d881bb42269e676ecaf49f0e096ab345e22823a2b2d071d60619414817fe02df48a31a8d05adb23054028a2a65521bdb3906ceb763ab6d3339c8d8775058 languageName: node linkType: hard @@ -17686,26 +21888,24 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": - version: 22.7.9 - resolution: "@types/node@npm:22.7.9" - dependencies: - undici-types: ~6.19.2 - checksum: 02671449e61f3f7c9898da44e18af272056fee0afbbc98b11dcff7cd7c4ed6c8a45353cfdde413208d9f597e247ee68d908c83a72cae4cbdd763b0e3a45ac0cd +"@types/node@npm:*, @types/node@npm:>=13.7.0": + version: 17.0.25 + resolution: "@types/node@npm:17.0.25" + checksum: 6a820bd624e69ea772f52a6cdb326484eff5829443dc981939373929ade109f58c21698b9f0a831bd6ceea799e722a75dc49c5fa7a6bc32a81e1cbdfc6507b64 languageName: node linkType: hard "@types/node@npm:14": - version: 14.18.63 - resolution: "@types/node@npm:14.18.63" - checksum: be909061a54931778c71c49dc562586c32f909c4b6197e3d71e6dac726d8bd9fccb9f599c0df99f52742b68153712b5097c0f00cac4e279fa894b0ea6719a8fd + version: 14.17.19 + resolution: "@types/node@npm:14.17.19" + checksum: 3365ee4fe7878b0f1d36dc4372146322c7f4db3b0574401753084144b04356e02d15cd55db79e77dda071a06cbcc37f57c8888441fd4c8b1c24f9765c7441b2a languageName: node linkType: hard -"@types/node@npm:14 || 16, @types/node@npm:^16.0.0": - version: 16.18.115 - resolution: "@types/node@npm:16.18.115" - checksum: a9caf3a72b8fca0a945c04b99502615f297fc9d12779147822cf10b4a3fe77161b631ae239b9522cf9ccda90fcd9d49abe255bd2012a3347f677210610760d6d +"@types/node@npm:14 || 16": + version: 16.18.23 + resolution: "@types/node@npm:16.18.23" + checksum: 00e51db28fc7a182747f37215b3f25400b1c7a8525e09fa14e55be5798891a118ebf636a49d3197335a3580fcb8222fd4ecc20c2ccff69f1c0d233fc5697465d languageName: node linkType: hard @@ -17716,19 +21916,40 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:>=12.12.47": + version: 18.11.18 + resolution: "@types/node@npm:18.11.18" + checksum: 03f17f9480f8d775c8a72da5ea7e9383db5f6d85aa5fefde90dd953a1449bd5e4ffde376f139da4f3744b4c83942166d2a7603969a6f8ea826edfb16e6e3b49d + languageName: node + linkType: hard + "@types/node@npm:^10.1.0": - version: 10.17.60 - resolution: "@types/node@npm:10.17.60" - checksum: 2cdb3a77d071ba8513e5e8306fa64bf50e3c3302390feeaeff1fd325dd25c8441369715dfc8e3701011a72fed5958c7dfa94eb9239a81b3c286caa4d97db6eef + version: 10.17.55 + resolution: "@types/node@npm:10.17.55" + checksum: d47d358995ba0c68fb5a42e1a4b17fee5f9371b60276c8c79eb978fdb1940b61965a32eecd1758c481f47aacdbb369ee94f6ad0575395042825e1eba77e0e6fd + languageName: node + linkType: hard + +"@types/node@npm:^14.11.8": + version: 14.18.63 + resolution: "@types/node@npm:14.18.63" + checksum: be909061a54931778c71c49dc562586c32f909c4b6197e3d71e6dac726d8bd9fccb9f599c0df99f52742b68153712b5097c0f00cac4e279fa894b0ea6719a8fd languageName: node linkType: hard -"@types/node@npm:^18.0.0, @types/node@npm:^18.11.18": - version: 18.19.59 - resolution: "@types/node@npm:18.19.59" +"@types/node@npm:^16.0.0": + version: 16.18.34 + resolution: "@types/node@npm:16.18.34" + checksum: 35c0ffe09687578d002ceb7e706d0ba450546aeb3d2716f28691f2af0063bd274dbde0f741d087ea217f2a8db413eb700d22dfb4f08a67986ff801423bd7be8d + languageName: node + linkType: hard + +"@types/node@npm:^18.0.0": + version: 18.19.34 + resolution: "@types/node@npm:18.19.34" dependencies: undici-types: ~5.26.4 - checksum: 8e45a05aa91437d3d11a346775ac16589353070c504f91a62cd91945a384231ccbbe92009a8e1ae653f954f9de5bf8ff106cc8e26721ecab98914dc019217aef + checksum: ae6369baa1529ec3564da29611ec7eb8ccb219080d717292151b6b899820d25290243d01c9240f11a63d1a42e47198cd6310fab67b6d17bea723221fea07b644 languageName: node linkType: hard @@ -17742,9 +21963,9 @@ __metadata: linkType: hard "@types/normalize-package-data@npm:^2.4.0": - version: 2.4.4 - resolution: "@types/normalize-package-data@npm:2.4.4" - checksum: 65dff72b543997b7be8b0265eca7ace0e34b75c3e5fee31de11179d08fa7124a7a5587265d53d0409532ecb7f7fba662c2012807963e1f9b059653ec2c83ee05 + version: 2.4.0 + resolution: "@types/normalize-package-data@npm:2.4.0" + checksum: fd22ba86a186a033dbe173840fd2ad091032be6d48163198869d058821acca7373d9f39cfd0caf42f3b92bc737723814fe1b4e9e90eacaa913836610aa197d3b languageName: node linkType: hard @@ -17758,9 +21979,9 @@ __metadata: linkType: hard "@types/parse-json@npm:^4.0.0": - version: 4.0.2 - resolution: "@types/parse-json@npm:4.0.2" - checksum: 5bf62eec37c332ad10059252fc0dab7e7da730764869c980b0714777ad3d065e490627be9f40fc52f238ffa3ac4199b19de4127196910576c2fe34dd47c7a470 + version: 4.0.0 + resolution: "@types/parse-json@npm:4.0.0" + checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b languageName: node linkType: hard @@ -17783,21 +22004,21 @@ __metadata: linkType: hard "@types/passport-strategy@npm:*": - version: 0.2.38 - resolution: "@types/passport-strategy@npm:0.2.38" + version: 0.2.35 + resolution: "@types/passport-strategy@npm:0.2.35" dependencies: "@types/express": "*" "@types/passport": "*" - checksum: b580e165182b137a6e57b6b7511904e6c875a5e372f08679ec54f456dc5c2a72d86f23d9373a52d8286b207fe8240946686f9e3d50b0bc1b4f7316f336a06fa2 + checksum: e5949063ad8977ce1f7cf2a5df6bc379c4d43a959c9946bfed6570ef379c6c12d1713212a29b3b5aafc631c5ebe9bfe082116f3e75ca1bf45d79dd889671532d languageName: node linkType: hard "@types/passport@npm:*": - version: 1.0.16 - resolution: "@types/passport@npm:1.0.16" + version: 1.0.6 + resolution: "@types/passport@npm:1.0.6" dependencies: "@types/express": "*" - checksum: e4a02fa338536eb82694ea548689a7214b1ca98df6a896080daa2b6a8859db02a1e6244eeefaf6f3cc9c268239bb4a7912049a9ed86192144a65c10e55219f80 + checksum: 0dcdb71bef13c2477e76e4237421e375c07e1f4389af0cf165f83e33716ad6ffeb238836af2fcad1674936844f34ff534fe0456afdb5d3c7f752a3278d30deed languageName: node linkType: hard @@ -17829,16 +22050,23 @@ __metadata: linkType: hard "@types/pretty-hrtime@npm:^1.0.0": - version: 1.0.3 - resolution: "@types/pretty-hrtime@npm:1.0.3" - checksum: 288061dff992c8107d5c7b5a1277bbb0a314a27eb10087dea628a08fa37694a655191a69e25a212c95e61e498363c48ad9e281d23964a448f6c14100a6be0910 + version: 1.0.0 + resolution: "@types/pretty-hrtime@npm:1.0.0" + checksum: d7b291c1d1fb1d9865dcd79c6ddd4504b42cb6053b052e17ad5a1155ed89ec4dab8f4960300d89a37afa9beb3ae16f85d4717d5c0d8e8afb2f7e23dc22b33f89 languageName: node linkType: hard -"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0": - version: 15.7.13 - resolution: "@types/prop-types@npm:15.7.13" - checksum: 8935cad87c683c665d09a055919d617fe951cb3b2d5c00544e3a913f861a2bd8d2145b51c9aa6d2457d19f3107ab40784c40205e757232f6a80cc8b1c815513c +"@types/prop-types@npm:*": + version: 15.7.4 + resolution: "@types/prop-types@npm:15.7.4" + checksum: ef6e1899e59b876c273811b1bd845022fc66d5a3d11cb38a25b6c566b30514ae38fe20a40f67622f362a4f4f7f9224e22d8da101cff3d6e97e11d7b4c307cfc1 + languageName: node + linkType: hard + +"@types/prop-types@npm:^15.0.0": + version: 15.7.12 + resolution: "@types/prop-types@npm:15.7.12" + checksum: ac16cc3d0a84431ffa5cfdf89579ad1e2269549f32ce0c769321fdd078f84db4fbe1b461ed5a1a496caf09e637c0e367d600c541435716a55b1d9713f5035dfe languageName: node linkType: hard @@ -17850,35 +22078,16 @@ __metadata: linkType: hard "@types/qs@npm:*, @types/qs@npm:^6.9.5": - version: 6.9.16 - resolution: "@types/qs@npm:6.9.16" - checksum: 2e8918150c12735630f7ee16b770c72949274938c30306025f68aaf977227f41fe0c698ed93db1099e04916d582ac5a1faf7e3c7061c8d885d9169f59a184b6c - languageName: node - linkType: hard - -"@types/ramda@npm:0.29.3": - version: 0.29.3 - resolution: "@types/ramda@npm:0.29.3" - dependencies: - types-ramda: ^0.29.4 - checksum: 172b18d62473d4bffb1e4e92fa293e56fa4f85fcf91b1b2c9178955f775e34065cc408e93f1171436b52e240599ecb1be51955dab07ca389bf2da98f85f820a9 + version: 6.9.6 + resolution: "@types/qs@npm:6.9.6" + checksum: 01871b1cf7062717ec76fcb9b29ddae1e04fcfadc1c76d86ec2571e72f27bf09ff31b094b295be8d4ca664aeec9b8965563680b31fcab7aba1ed93afac5181cd languageName: node linkType: hard "@types/range-parser@npm:*": - version: 1.2.7 - resolution: "@types/range-parser@npm:1.2.7" - checksum: 95640233b689dfbd85b8c6ee268812a732cf36d5affead89e806fe30da9a430767af8ef2cd661024fd97e19d61f3dec75af2df5e80ec3bea000019ab7028629a - languageName: node - linkType: hard - -"@types/react-codemirror@npm:1.0.11": - version: 1.0.11 - resolution: "@types/react-codemirror@npm:1.0.11" - dependencies: - "@types/codemirror": "*" - "@types/react": "*" - checksum: fb6a3bae3b4f163381b8858e1216849e2a3dc4f3dc16a685fe980c3c5c19957fe0abdea3efe003101e4df95ab2aeefc84ea27608fa9e93665b0f1be0e0d8d4c4 + version: 1.2.3 + resolution: "@types/range-parser@npm:1.2.3" + checksum: a0a4218214d2c599e2128a8965e9183d1f0b8fc614def43a2183cf80534d10fcf86357c823c7907e779df0ab048fd1fa3818b4c8f0f6f99ba150a3f99df7d03d languageName: node linkType: hard @@ -17913,6 +22122,15 @@ __metadata: languageName: node linkType: hard +"@types/react-dom@npm:16.9.14": + version: 16.9.14 + resolution: "@types/react-dom@npm:16.9.14" + dependencies: + "@types/react": ^16 + checksum: 68a4ee88f7a56cdbfbca24b1936b9aa5dad8b40ffbf1f047ddf990454aec6e0c9da2a01c9ae87045e95236602061646c90d02f01281533e14f1970687873030f + languageName: node + linkType: hard + "@types/react-dom@npm:18.3.0": version: 18.3.0 resolution: "@types/react-dom@npm:18.3.0" @@ -17923,11 +22141,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18.0.0": - version: 18.3.1 - resolution: "@types/react-dom@npm:18.3.1" + version: 18.2.6 + resolution: "@types/react-dom@npm:18.2.6" dependencies: "@types/react": "*" - checksum: ad28ecce3915d30dc76adc2a1373fda1745ba429cea290e16c6628df9a05fd80b6403c8e87d78b45e6c60e51df7a67add389ab62b90070fbfdc9bda8307d9953 + checksum: b56e42efab121a3a8013d2eb8c1688e6028a25ea6d33c4362d2846f0af3760b164b4d7c34846614024cfb8956cca70dd1743487f152e32ff89a00fe6fbd2be54 languageName: node linkType: hard @@ -17942,11 +22160,11 @@ __metadata: linkType: hard "@types/react-infinite-scroller@npm:^1.2.3": - version: 1.2.5 - resolution: "@types/react-infinite-scroller@npm:1.2.5" + version: 1.2.3 + resolution: "@types/react-infinite-scroller@npm:1.2.3" dependencies: "@types/react": "*" - checksum: 8b56f63c35802d2593cc25b3ab03bfbeceb2a5379997364fb5cea414cc8690341fbf3902d8fc7a6db43f87c144276009cb4a7f3388f1a52091ac3a4fd7de7d33 + checksum: ae11063b5e114bff1f06e9d3d2ca0948a3a224f13b4a30fbfe56f84e535ee6232de9667456695bbbb409de51887d701f8558fd28c36a2ea172e8593346de85d1 languageName: node linkType: hard @@ -17959,7 +22177,7 @@ __metadata: languageName: node linkType: hard -"@types/react-modal@npm:3.13.1": +"@types/react-modal@npm:3.13.1, @types/react-modal@npm:^3.13.1": version: 3.13.1 resolution: "@types/react-modal@npm:3.13.1" dependencies: @@ -17968,15 +22186,6 @@ __metadata: languageName: node linkType: hard -"@types/react-modal@npm:^3.13.1": - version: 3.16.3 - resolution: "@types/react-modal@npm:3.16.3" - dependencies: - "@types/react": "*" - checksum: 53c92dfbe46aae6f4ca4d96a166fd69a4b8dc539c5e8f755086dd1471656924ca6dd0a179be746c634686a0073aef67bb9615ee8600d9536cc1521b738e48453 - languageName: node - linkType: hard - "@types/react-pdf@npm:5.0.9": version: 5.0.9 resolution: "@types/react-pdf@npm:5.0.9" @@ -17997,20 +22206,20 @@ __metadata: linkType: hard "@types/react-test-renderer@npm:^18.0.0": - version: 18.3.0 - resolution: "@types/react-test-renderer@npm:18.3.0" + version: 18.0.0 + resolution: "@types/react-test-renderer@npm:18.0.0" dependencies: "@types/react": "*" - checksum: c53683990bd194cb68e3987bda79c78eff41517f7a747e92f3e54217c2ce3addd031b8a45bf631982c909cc2caeeb905372f322758e05bb76c03754a3f24426e + checksum: 6afc938a1d7618d88ab8793e251f0bd5981bf3f08c1b600f74df3f8800b92589ea534dc6dcb7c8d683893fcc740bf8d7843a42bf2dae59785cfe88f004bd7b0b languageName: node linkType: hard "@types/react-transition-group@npm:^4.4.0": - version: 4.4.11 - resolution: "@types/react-transition-group@npm:4.4.11" + version: 4.4.6 + resolution: "@types/react-transition-group@npm:4.4.6" dependencies: "@types/react": "*" - checksum: a6e3b2e4363cb019e256ae4f19dadf9d7eb199da1a5e4109bbbf6a132821884044d332e9c74b520b1e5321a7f545502443fd1ce0b18649c8b510fa4220b0e5c2 + checksum: 0872143821d7ee20a1d81e965f8b1e837837f11cd2206973f1f98655751992d9390304d58bac192c9cd923eca95bff107d8c9e3364a180240d5c2a6fd70fd7c3 languageName: node linkType: hard @@ -18045,26 +22254,26 @@ __metadata: languageName: node linkType: hard -"@types/resize-observer-browser@npm:^0.1.6": - version: 0.1.11 - resolution: "@types/resize-observer-browser@npm:0.1.11" - checksum: 1e36bde885fb5d89d7138edce3b6dae51f14605a89cd1ffcf60e53ca1866515afe82b6fda7abb84f9c9639166f45480c9b7e512849bcc6502597984f302937c1 +"@types/resize-observer-browser@npm:^0.1.5": + version: 0.1.6 + resolution: "@types/resize-observer-browser@npm:0.1.6" + checksum: e99a1e945c377bd70ed628dfc45def7187624a587be8c0e4f86386bc1d7a56e34c1c634d8f972c90865c13686d7f50ee6fec1148ffa4cd7a6568014eb6c28e8f languageName: node linkType: hard "@types/resolve@npm:^1.20.2": - version: 1.20.6 - resolution: "@types/resolve@npm:1.20.6" - checksum: dc35f5517606b6687cd971c0281ac58bdee2c50c051b030f04647d3991688be2259c304ee97e5b5d4b9936072c36767eb5933b54611a407d6557972bb6fea4f6 + version: 1.20.2 + resolution: "@types/resolve@npm:1.20.2" + checksum: 61c2cad2499ffc8eab36e3b773945d337d848d3ac6b7b0a87c805ba814bc838ef2f262fc0f109bfd8d2e0898ff8bd80ad1025f9ff64f1f71d3d4294c9f14e5f6 languageName: node linkType: hard -"@types/responselike@npm:^1.0.0": - version: 1.0.3 - resolution: "@types/responselike@npm:1.0.3" +"@types/responselike@npm:*, @types/responselike@npm:^1.0.0": + version: 1.0.0 + resolution: "@types/responselike@npm:1.0.0" dependencies: "@types/node": "*" - checksum: 6ac4b35723429b11b117e813c7acc42c3af8b5554caaf1fc750404c1ae59f9b7376bc69b9e9e194a5a97357a597c2228b7173d317320f0360d617b6425212f58 + checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 languageName: node linkType: hard @@ -18075,16 +22284,6 @@ __metadata: languageName: node linkType: hard -"@types/rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "@types/rimraf@npm:3.0.2" - dependencies: - "@types/glob": "*" - "@types/node": "*" - checksum: b47fa302f46434cba704d20465861ad250df79467d3d289f9d6490d3aeeb41e8cb32dd80bd1a8fd833d1e185ac719fbf9be12e05ad9ce9be094d8ee8f1405347 - languageName: node - linkType: hard - "@types/sanitize-html@npm:2.9.0": version: 2.9.0 resolution: "@types/sanitize-html@npm:2.9.0" @@ -18094,40 +22293,63 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4, @types/semver@npm:^7.3.6": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 +"@types/semver@npm:^7.3.12": + version: 7.3.13 + resolution: "@types/semver@npm:7.3.13" + checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 + languageName: node + linkType: hard + +"@types/semver@npm:^7.3.4": + version: 7.5.0 + resolution: "@types/semver@npm:7.5.0" + checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2 + languageName: node + linkType: hard + +"@types/semver@npm:^7.3.6": + version: 7.3.9 + resolution: "@types/semver@npm:7.3.9" + checksum: 60bfcfdfa7f937be2c6f4b37ddb6714fb0f27b05fe4cbdfdd596a97d35ed95d13ee410efdd88e72a66449d0384220bf20055ab7d6b5df10de4990fbd20e5cbe0 languageName: node linkType: hard "@types/send@npm:*": - version: 0.17.4 - resolution: "@types/send@npm:0.17.4" + version: 0.17.1 + resolution: "@types/send@npm:0.17.1" dependencies: "@types/mime": ^1 "@types/node": "*" - checksum: cf4db48251bbb03cd6452b4de6e8e09e2d75390a92fd798eca4a803df06444adc94ed050246c94c7ed46fb97be1f63607f0e1f13c3ce83d71788b3e08640e5e0 + checksum: 10b620a5960058ef009afbc17686f680d6486277c62f640845381ec4baa0ea683fdd77c3afea4803daf5fcddd3fb2972c8aa32e078939f1d4e96f83195c89793 languageName: node linkType: hard "@types/serve-index@npm:^1.9.1": - version: 1.9.4 - resolution: "@types/serve-index@npm:1.9.4" + version: 1.9.1 + resolution: "@types/serve-index@npm:1.9.1" dependencies: "@types/express": "*" - checksum: 72727c88d54da5b13275ebfb75dcdc4aa12417bbe9da1939e017c4c5f0c906fae843aa4e0fbfe360e7ee9df2f3d388c21abfc488f77ce58693fb57809f8ded92 + checksum: 026f3995fb500f6df7c3fe5009e53bad6d739e20b84089f58ebfafb2f404bbbb6162bbe33f72d2f2af32d5b8d3799c8e179793f90d9ed5871fb8591190bb6056 + languageName: node + linkType: hard + +"@types/serve-static@npm:*": + version: 1.13.9 + resolution: "@types/serve-static@npm:1.13.9" + dependencies: + "@types/mime": ^1 + "@types/node": "*" + checksum: 5c5f3b64e9fe7c51fb428ef70f1f2365b897fc3c8400be6d6afc8db0f152639182b360361ebd3d0cbaeb607b125dee03bf0c50bf7e08642ff150028f05bb7381 languageName: node linkType: hard -"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10": - version: 1.15.7 - resolution: "@types/serve-static@npm:1.15.7" +"@types/serve-static@npm:^1.13.10": + version: 1.15.1 + resolution: "@types/serve-static@npm:1.15.1" dependencies: - "@types/http-errors": "*" + "@types/mime": "*" "@types/node": "*" - "@types/send": "*" - checksum: bbbf00dbd84719da2250a462270dc68964006e8d62f41fe3741abd94504ba3688f420a49afb2b7478921a1544d3793183ffa097c5724167da777f4e0c7f1a7d6 + checksum: 2e078bdc1e458c7dfe69e9faa83cc69194b8896cce57cb745016580543c7ab5af07fdaa8ac1765eb79524208c81017546f66056f44d1204f812d72810613de36 languageName: node linkType: hard @@ -18155,9 +22377,9 @@ __metadata: linkType: hard "@types/sizzle@npm:^2.3.2": - version: 2.3.9 - resolution: "@types/sizzle@npm:2.3.9" - checksum: 413811a79e7e9f1d8f47e6047ae0aea1530449d612304cdda1c30018e3d053b8544861ec2c70bdeca75a0a010192e6bb78efc6fb4caaafdd65c4eee90066686a + version: 2.3.2 + resolution: "@types/sizzle@npm:2.3.2" + checksum: 783b6382934d8f12f2e21220a01c4557150f07abd18336f392664fb74ceaa9a9d59b7c859c0b82fd3f15b6484774cd0d493261fe64c78ee399bf198a8fe8d89d languageName: node linkType: hard @@ -18169,11 +22391,11 @@ __metadata: linkType: hard "@types/sockjs@npm:^0.3.33": - version: 0.3.36 - resolution: "@types/sockjs@npm:0.3.36" + version: 0.3.33 + resolution: "@types/sockjs@npm:0.3.33" dependencies: "@types/node": "*" - checksum: b4b5381122465d80ea8b158537c00bc82317222d3fb31fd7229ff25b31fa89134abfbab969118da55622236bf3d8fee75759f3959908b5688991f492008f29bc + checksum: b9bbb2b5c5ead2fb884bb019f61a014e37410bddd295de28184e1b2e71ee6b04120c5ba7b9954617f0bdf962c13d06249ce65004490889c747c80d3f628ea842 languageName: node linkType: hard @@ -18185,37 +22407,28 @@ __metadata: linkType: hard "@types/ssh2-streams@npm:*": - version: 0.1.12 - resolution: "@types/ssh2-streams@npm:0.1.12" + version: 0.1.9 + resolution: "@types/ssh2-streams@npm:0.1.9" dependencies: "@types/node": "*" - checksum: aa0aa45e40cfca34b4443dafa8d28ff49196c05c71867cbf0a8cdd5127be4d8a3840819543fcad16535653ca8b0e29217671ed6500ff1e7a3ad2442c5d1b40a6 - languageName: node - linkType: hard - -"@types/ssh2@npm:*": - version: 1.15.1 - resolution: "@types/ssh2@npm:1.15.1" - dependencies: - "@types/node": ^18.11.18 - checksum: 6a10b4da60817f2939cac18006a7ccbc6421facf2370a263072fc5290b1f5d445b385c5f309e93ce447bb33ad92dac18f562ccda20f092076da1c1a55da299fb + checksum: 190f3c235bf19787cd255f366d3ac9233875750095f3c73d15e72a1e67a826aed7e7c389603c5e89cb6420b87ff6dffc566f9174e546ddb7ff8c8dc2e8b00def languageName: node linkType: hard -"@types/ssh2@npm:^0.5.48": - version: 0.5.52 - resolution: "@types/ssh2@npm:0.5.52" +"@types/ssh2@npm:*, @types/ssh2@npm:^0.5.48": + version: 0.5.49 + resolution: "@types/ssh2@npm:0.5.49" dependencies: "@types/node": "*" "@types/ssh2-streams": "*" - checksum: bc1c76ac727ad73ddd59ba849cf0ea3ed2e930439e7a363aff24f04f29b74f9b1976369b869dc9a018223c9fb8ad041c09a0f07aea8cf46a8c920049188cddae + checksum: e20ea52dc6f43287d327934642656f0af6ea8cc1de4cd91d30ea3376e72097595ed95cc16a5c1740061f6fa1ee0a844041dc3c4d332746b0bea71a7ca9332fea languageName: node linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 + version: 2.0.0 + resolution: "@types/stack-utils@npm:2.0.0" + checksum: b3fbae25b073116977ecb5c67d22f14567b51a7792403b0bf46e5de8f29bde3bd4ec1626afb22065495ca7f1c699c8bd66720050c94b8f8f9bcefbee79d161fd languageName: node linkType: hard @@ -18227,14 +22440,12 @@ __metadata: linkType: hard "@types/superagent@npm:*": - version: 8.1.9 - resolution: "@types/superagent@npm:8.1.9" + version: 4.1.10 + resolution: "@types/superagent@npm:4.1.10" dependencies: - "@types/cookiejar": ^2.1.5 - "@types/methods": ^1.1.4 + "@types/cookiejar": "*" "@types/node": "*" - form-data: ^4.0.0 - checksum: 530d8c2e87706315c82c8c9696500c40621de3353bc54ea9b104947f3530243abf54d0a49a6ae219d4947606a102ceb94bedfc43b9cc49f74069a18cbb3be8e2 + checksum: 19bef11de02b0d319459d3993612637a95005ba8f2ca18b370253bb379aa0c38fdf7cff461a6d9258e9e8ef4495b7b04b8f7f4284998305b77eccc8e05ef2750 languageName: node linkType: hard @@ -18248,27 +22459,27 @@ __metadata: linkType: hard "@types/tern@npm:*": - version: 0.23.9 - resolution: "@types/tern@npm:0.23.9" + version: 0.23.4 + resolution: "@types/tern@npm:0.23.4" dependencies: "@types/estree": "*" - checksum: 53f229c79edf9454011f5b37c8539e0e760a130beac953d4e2126823de1ac6b0e2a45612596679fb232ec861826584fcaa272e2254a890b410575683423d56a8 + checksum: d8fd304f147ed08f1d075f09cb8d440b7f785f69c9ec5c30eadf98132fe3f58f3b1bbbd11283858bb261afac5a2039c1c255f290b0f6e4a47cd6a746f30a6aa8 languageName: node linkType: hard "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.9 - resolution: "@types/testing-library__jest-dom@npm:5.14.9" + version: 5.9.5 + resolution: "@types/testing-library__jest-dom@npm:5.9.5" dependencies: "@types/jest": "*" - checksum: d364494fc2545316292e88861146146af1e3818792ca63b62a63758b2f737669b687f4aaddfcfbcb7d0e1ed7890a9bd05de23ff97f277d5e68de574497a9ee72 + checksum: f2ed81103acb52d54f992d826e3854551294618628997dc01f8955efd8c1d476d64715b79187371b09ec3e61e44cc10a7ffe1e427d1bda798552f83d18309056 languageName: node linkType: hard "@types/tough-cookie@npm:*": - version: 4.0.5 - resolution: "@types/tough-cookie@npm:4.0.5" - checksum: f19409d0190b179331586365912920d192733112a195e870c7f18d20ac8adb7ad0b0ff69dad430dba8bc2be09593453a719cfea92dc3bda19748fd158fe1498d + version: 4.0.0 + resolution: "@types/tough-cookie@npm:4.0.0" + checksum: 454fa8d4d64532992274ebf2ff5ea0061b0dd32a2282255a3e793f04a8b64a9c4c1f9e0f4ed83c514c852b7b604d69336c66c80de4a857cb41a81e9572981e7f languageName: node linkType: hard @@ -18287,9 +22498,9 @@ __metadata: linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.7 - resolution: "@types/trusted-types@npm:2.0.7" - checksum: 8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3 + version: 2.0.2 + resolution: "@types/trusted-types@npm:2.0.2" + checksum: 3371eef5f1c50e1c3c07a127c1207b262ba65b83dd167a1c460fc1b135a3fb0c97b9f508efebd383f239cc5dd5b7169093686a692a501fde9c3f7208657d9b0d languageName: node linkType: hard @@ -18300,21 +22511,28 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^3.0.0": - version: 3.0.3 - resolution: "@types/unist@npm:3.0.3" - checksum: 96e6453da9e075aaef1dc22482463898198acdc1eeb99b465e65e34303e2ec1e3b1ed4469a9118275ec284dc98019f63c3f5d49422f0e4ac707e5ab90fb3b71a +"@types/unist@npm:*, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": + version: 2.0.3 + resolution: "@types/unist@npm:2.0.3" + checksum: 4427306b094561da28164e7e5250c4e6b382cb8eac40bf7e6bb0ff1e6e00c13e47aaf32e4a08fc8ba54602d07f79a39fb9ba304cc9dc886b1e3caf824649edbd languageName: node linkType: hard -"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": - version: 2.0.11 - resolution: "@types/unist@npm:2.0.11" - checksum: 6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e +"@types/unist@npm:^2": + version: 2.0.10 + resolution: "@types/unist@npm:2.0.10" + checksum: e2924e18dedf45f68a5c6ccd6015cd62f1643b1b43baac1854efa21ae9e70505db94290434a23da1137d9e31eb58e54ca175982005698ac37300a1c889f6c4aa languageName: node linkType: hard -"@types/uuid@npm:^9.0.0, @types/uuid@npm:^9.0.1": +"@types/unist@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/unist@npm:3.0.2" + checksum: 3d04d0be69316e5f14599a0d993a208606c12818cf631fd399243d1dc7a9bd8a3917d6066baa6abc290814afbd744621484756803c80cba892c39cd4b4a85616 + languageName: node + linkType: hard + +"@types/uuid@npm:^9.0.1": version: 9.0.8 resolution: "@types/uuid@npm:9.0.8" checksum: b8c60b7ba8250356b5088302583d1704a4e1a13558d143c549c408bf8920535602ffc12394ede77f8a8083511b023704bc66d1345792714002bfa261b17c5275 @@ -18328,19 +22546,35 @@ __metadata: languageName: node linkType: hard -"@types/validator@npm:^13.7.10, @types/validator@npm:^13.7.17": - version: 13.12.2 - resolution: "@types/validator@npm:13.12.2" - checksum: 4e989f76e155a93a94f53c2362d5695f0a95fb6f36e05f215b1af893e1dc70a7db2d8422c9a0c14dadb4fd3c32a7698c86bce3b81ff99116c8c7f21888875a2f +"@types/validator@npm:^13.7.10": + version: 13.7.10 + resolution: "@types/validator@npm:13.7.10" + checksum: 7b142c08019f484d62c9f3074231f640c24311558f157dd253a60810dd0cb29e41ec64ca210a192b54f6de51f4fe016bfeb2c30f90fa49c9337ed54a9d8e02aa languageName: node linkType: hard -"@types/ws@npm:^8.0.0, @types/ws@npm:^8.5.5": - version: 8.5.12 - resolution: "@types/ws@npm:8.5.12" +"@types/validator@npm:^13.7.17": + version: 13.12.0 + resolution: "@types/validator@npm:13.12.0" + checksum: 1d814a4a9f8fbd01f834bf45215aa8111879e71045391eec8e8fda6a7acf71d8b7839a0d312098c2b9c8285963203dfb3e3680a41484d1e9b3d576f95b6d71c0 + languageName: node + linkType: hard + +"@types/ws@npm:^8.0.0": + version: 8.5.3 + resolution: "@types/ws@npm:8.5.3" dependencies: "@types/node": "*" - checksum: ddefb6ad1671f70ce73b38a5f47f471d4d493864fca7c51f002a86e5993d031294201c5dced6d5018fb8905ad46888d65c7f20dd54fc165910b69f42fba9a6d0 + checksum: 0ce46f850d41383fcdc2149bcacc86d7232fa7a233f903d2246dff86e31701a02f8566f40af5f8b56d1834779255c04ec6ec78660fe0f9b2a69cf3d71937e4ae + languageName: node + linkType: hard + +"@types/ws@npm:^8.5.1": + version: 8.5.4 + resolution: "@types/ws@npm:8.5.4" + dependencies: + "@types/node": "*" + checksum: fefbad20d211929bb996285c4e6f699b12192548afedbe4930ab4384f8a94577c9cd421acaad163cacd36b88649509970a05a0b8f20615b30c501ed5269038d1 languageName: node linkType: hard @@ -18354,9 +22588,9 @@ __metadata: linkType: hard "@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc + version: 20.2.0 + resolution: "@types/yargs-parser@npm:20.2.0" + checksum: 54cf3f8d2c7db47e200e8c96e05b3b33ee554e78d29f3db55f04ca4b86dc6b8ff6b1349f5772268ce2d365cde0a0f4fdd92bf5933c2be2c1ea3f19f0b4599e1f languageName: node linkType: hard @@ -18369,48 +22603,39 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^13.0.0": - version: 13.0.12 - resolution: "@types/yargs@npm:13.0.12" - dependencies: - "@types/yargs-parser": "*" - checksum: 4eb34d8c071892299646e5a3fb02a643f5a5ea8da8f4d1817001882ebbcfa4fbda235b8978732f8eb55fa16433296e2087907fe69678a69125f0dca627a91426 - languageName: node - linkType: hard - "@types/yargs@npm:^15.0.0": - version: 15.0.19 - resolution: "@types/yargs@npm:15.0.19" + version: 15.0.13 + resolution: "@types/yargs@npm:15.0.13" dependencies: "@types/yargs-parser": "*" - checksum: 6a509db36304825674f4f00300323dce2b4d850e75819c3db87e9e9f213ac2c4c6ed3247a3e4eed6e8e45b3f191b133a356d3391dd694d9ea27a0507d914ef4c + checksum: a6ebb0ec63f168280e02370fcf24ff29c3eb0335e1c46e3b34e04d32eb7c818446e0b7de8badb339b07c0ddba322827ce13ccb604d14a0de422335ae56b2120d languageName: node linkType: hard "@types/yargs@npm:^16.0.0": - version: 16.0.9 - resolution: "@types/yargs@npm:16.0.9" + version: 16.0.4 + resolution: "@types/yargs@npm:16.0.4" dependencies: "@types/yargs-parser": "*" - checksum: 00d9276ed4e0f17a78c1ed57f644a8c14061959bd5bfab113d57f082ea4b663ba97f71b89371304a34a2dba5061e9ae4523e357e577ba61834d661f82c223bf8 + checksum: caa21d2c957592fe2184a8368c8cbe5a82a6c2e2f2893722e489f842dc5963293d2f3120bc06fe3933d60a3a0d1e2eb269649fd6b1947fe1820f8841ba611dd9 languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.33 - resolution: "@types/yargs@npm:17.0.33" + version: 17.0.10 + resolution: "@types/yargs@npm:17.0.10" dependencies: "@types/yargs-parser": "*" - checksum: ee013f257472ab643cb0584cf3e1ff9b0c44bca1c9ba662395300a7f1a6c55fa9d41bd40ddff42d99f5d95febb3907c9ff600fbcb92dadbec22c6a76de7e1236 + checksum: f0673cbfc08e17239dc58952a88350d6c4db04a027a28a06fbad27d87b670e909f9cd9e66f9c64cebdd5071d1096261e33454a55868395f125297e5c50992ca8 languageName: node linkType: hard "@types/yauzl@npm:^2.9.1": - version: 2.10.3 - resolution: "@types/yauzl@npm:2.10.3" + version: 2.9.2 + resolution: "@types/yauzl@npm:2.9.2" dependencies: "@types/node": "*" - checksum: 5ee966ea7bd6b2802f31ad4281c92c4c0b6dfa593c378a2582c58541fa113bec3d70eb0696b34ad95e8e6861a884cba6c3e351285816693ed176222f840a8c08 + checksum: dfb49abe82605615712fc694eaa4f7068fe30aa03f38c085e2c2e74408beaad30471d36da9654a811482ece2ea4405575fd99b19c0aa327ed2a9736b554bbf43 languageName: node linkType: hard @@ -18445,14 +22670,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^7.1.1": - version: 7.18.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0" + version: 7.13.0 + resolution: "@typescript-eslint/eslint-plugin@npm:7.13.0" dependencies: "@eslint-community/regexpp": ^4.10.0 - "@typescript-eslint/scope-manager": 7.18.0 - "@typescript-eslint/type-utils": 7.18.0 - "@typescript-eslint/utils": 7.18.0 - "@typescript-eslint/visitor-keys": 7.18.0 + "@typescript-eslint/scope-manager": 7.13.0 + "@typescript-eslint/type-utils": 7.13.0 + "@typescript-eslint/utils": 7.13.0 + "@typescript-eslint/visitor-keys": 7.13.0 graphemer: ^1.4.0 ignore: ^5.3.1 natural-compare: ^1.4.0 @@ -18463,7 +22688,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: dfcf150628ca2d4ccdfc20b46b0eae075c2f16ef5e70d9d2f0d746acf4c69a09f962b93befee01a529f14bbeb3e817b5aba287d7dd0edc23396bc5ed1f448c3d + checksum: 8bb62f7d4ab3af3656e564c0dd164316e1518475e34a65495b8b2ff816ce24e6df9b1b1d3616bc128fe1d6f26247a04b01513d99e69e2cf0a8048f32b67d58c5 languageName: node linkType: hard @@ -18504,20 +22729,30 @@ __metadata: linkType: hard "@typescript-eslint/parser@npm:^7.1.1": - version: 7.18.0 - resolution: "@typescript-eslint/parser@npm:7.18.0" + version: 7.13.0 + resolution: "@typescript-eslint/parser@npm:7.13.0" dependencies: - "@typescript-eslint/scope-manager": 7.18.0 - "@typescript-eslint/types": 7.18.0 - "@typescript-eslint/typescript-estree": 7.18.0 - "@typescript-eslint/visitor-keys": 7.18.0 + "@typescript-eslint/scope-manager": 7.13.0 + "@typescript-eslint/types": 7.13.0 + "@typescript-eslint/typescript-estree": 7.13.0 + "@typescript-eslint/visitor-keys": 7.13.0 debug: ^4.3.4 peerDependencies: eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 132b56ac3b2d90b588d61d005a70f6af322860974225b60201cbf45abf7304d67b7d8a6f0ade1c188ac4e339884e78d6dcd450417f1481998f9ddd155bab0801 + checksum: dd7ef8380d954bb073b9d5d9f785fdc46a109d2938691f9b5fa6c227bd808bb64d8afc6ccccf217d3499deb8947d2f22ed51862e2e9563987ba3e225c58583a3 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.59.9": + version: 5.59.9 + resolution: "@typescript-eslint/scope-manager@npm:5.59.9" + dependencies: + "@typescript-eslint/types": 5.59.9 + "@typescript-eslint/visitor-keys": 5.59.9 + checksum: 362c22662d844440a7e14223d8cc0722f77ff21ad8f78deb0ee3b3f21de01b8846bf25fbbf527544677e83d8ff48008b3f7d40b39ddec55994ea4a1863e9ec0a languageName: node linkType: hard @@ -18531,6 +22766,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/scope-manager@npm:7.13.0" + dependencies: + "@typescript-eslint/types": 7.13.0 + "@typescript-eslint/visitor-keys": 7.13.0 + checksum: fb9663f414985e0fecd0952a9c5ff2a2e2b975cc7eb07a3fa13243b30d8aa67f9b707d636aa050b673b50a6b63aa8b5ba78a64f712e801e23f9c86e1896c3f21 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/scope-manager@npm:7.18.0" @@ -18561,12 +22806,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.18.0, @typescript-eslint/type-utils@npm:^7.3.0": - version: 7.18.0 - resolution: "@typescript-eslint/type-utils@npm:7.18.0" +"@typescript-eslint/type-utils@npm:7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/type-utils@npm:7.13.0" dependencies: - "@typescript-eslint/typescript-estree": 7.18.0 - "@typescript-eslint/utils": 7.18.0 + "@typescript-eslint/typescript-estree": 7.13.0 + "@typescript-eslint/utils": 7.13.0 debug: ^4.3.4 ts-api-utils: ^1.3.0 peerDependencies: @@ -18574,7 +22819,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 68fd5df5146c1a08cde20d59b4b919acab06a1b06194fe4f7ba1b928674880249890785fbbc97394142f2ef5cff5a7fba9b8a940449e7d5605306505348e38bc + checksum: 5f325fc325b166853444354e254c0d7fbb15dde2a61bbf63313cc58cb7a0546023241848671f216c268f1b87dce9c1e40b89dccae1846f2662e2cf2c99a83aef languageName: node linkType: hard @@ -18595,6 +22840,30 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:^7.3.0": + version: 7.18.0 + resolution: "@typescript-eslint/type-utils@npm:7.18.0" + dependencies: + "@typescript-eslint/typescript-estree": 7.18.0 + "@typescript-eslint/utils": 7.18.0 + debug: ^4.3.4 + ts-api-utils: ^1.3.0 + peerDependencies: + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 68fd5df5146c1a08cde20d59b4b919acab06a1b06194fe4f7ba1b928674880249890785fbbc97394142f2ef5cff5a7fba9b8a940449e7d5605306505348e38bc + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.59.9": + version: 5.59.9 + resolution: "@typescript-eslint/types@npm:5.59.9" + checksum: 283f8fee1ee590eeccc2e0fcd3526c856c4b1e2841af2cdcd09eeac842a42cfb32f6bc8b40385380f3dbc3ee29da30f1819115eedf9e16f69ff5a160aeddd8fa + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -18602,6 +22871,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/types@npm:7.13.0" + checksum: 1b81398bf4d0cb2602220d3a64f3bb74cd7b1e3e75fc1aecd28b9a6d6d20314ed7dffe057db3526ef3bdaa951e401443bb82e034cdebee79b28ea3b4ca9ff50f + languageName: node + linkType: hard + "@typescript-eslint/types@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/types@npm:7.18.0" @@ -18623,6 +22899,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:5.59.9": + version: 5.59.9 + resolution: "@typescript-eslint/typescript-estree@npm:5.59.9" + dependencies: + "@typescript-eslint/types": 5.59.9 + "@typescript-eslint/visitor-keys": 5.59.9 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: c0c9b81f20a2a4337f07bc3ccdc9c1dabd765f59096255ed9a149e91e5c9517b25c2b6655f8f073807cfc13500c7451fbd9bb62e5e572c07cc07945ab042db89 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" @@ -18641,6 +22935,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.13.0" + dependencies: + "@typescript-eslint/types": 7.13.0 + "@typescript-eslint/visitor-keys": 7.13.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^1.3.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 5a410db27ddb514344414a579e9f81a0db0e7e9f579aa624ace223655b905705a37510992a94924d9ead3c4c84c9357cf5358599036f7c44f50b56b54a791d82 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" @@ -18698,6 +23011,20 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/utils@npm:7.13.0" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@typescript-eslint/scope-manager": 7.13.0 + "@typescript-eslint/types": 7.13.0 + "@typescript-eslint/typescript-estree": 7.13.0 + peerDependencies: + eslint: ^8.56.0 + checksum: d57c60767949e3ea9d9b33de69a18396fea0e5d2eeb13ef8bbdcfe9c8fae62bf5af25f571b1b7c480362ddb9ccd8f811df4330af595b32a46bf0b8b8ce9b598e + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:7.18.0, @typescript-eslint/utils@npm:^7.3.0": version: 7.18.0 resolution: "@typescript-eslint/utils@npm:7.18.0" @@ -18726,7 +23053,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.45.0": +"@typescript-eslint/utils@npm:^5.10.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0" dependencies: @@ -18744,6 +23071,34 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:^5.45.0": + version: 5.59.9 + resolution: "@typescript-eslint/utils@npm:5.59.9" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@types/json-schema": ^7.0.9 + "@types/semver": ^7.3.12 + "@typescript-eslint/scope-manager": 5.59.9 + "@typescript-eslint/types": 5.59.9 + "@typescript-eslint/typescript-estree": 5.59.9 + eslint-scope: ^5.1.1 + semver: ^7.3.7 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 22ec5962886de7dcf65f99c37aad9fb189a3bef6b2b07c81887fb82a0e8bf137246da58e64fb02141352285708440be13acd7f6db1ca19e96f86724813ac4646 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.59.9": + version: 5.59.9 + resolution: "@typescript-eslint/visitor-keys@npm:5.59.9" + dependencies: + "@typescript-eslint/types": 5.59.9 + eslint-visitor-keys: ^3.3.0 + checksum: 2909ce761f7fe546592cd3c43e33263d8a5fa619375fd2fdffbc72ffc33e40d6feacafb28c79f36c638fcc2225048e7cc08c61cbac6ca63723dc68610d80e3e6 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" @@ -18754,6 +23109,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:7.13.0": + version: 7.13.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.13.0" + dependencies: + "@typescript-eslint/types": 7.13.0 + eslint-visitor-keys: ^3.4.3 + checksum: 23d48e1c1b9e16e5a867615ffe7111f637224b79bd738f94282b610a0b6b7bf5e436e1422e82395243d0f58714353fc613a11ea671bb217ea99d710f93ab6a26 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/visitor-keys@npm:7.18.0" @@ -18784,47 +23149,49 @@ __metadata: languageName: node linkType: hard -"@udecode/plate-basic-marks@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-basic-marks@npm:36.0.0" +"@udecode/plate-basic-marks@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-basic-marks@npm:30.1.2" + dependencies: + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 4b0e2fe0815435f8deb9a308b33bb586d99b9a483204ccb0f106869ceebdb32e5d216652970af3acb887fed78c99e00f4629a6d5bb339539baa2931869bd1fc2 + checksum: 0e03dbd5a09d18aae933cdd4a3bbfb84cf281b5790e5d7aff817e955a54a018a53c44da6555d31035d859de17ff01ff858a068f207997496cbc68b72dd925fdf languageName: node linkType: hard -"@udecode/plate-break@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-break@npm:36.0.0" +"@udecode/plate-break@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-break@npm:30.1.2" + dependencies: + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: c80d4f08cd3bc3428a6f1a471c5da9127049945ed6d620bfb8a820d352f6af286bb4d47c212f6f7244f8fade498cd459b556eed9f902c10e24a725a076266b26 + checksum: 52a80fa3c86b6f4649bfab95938f79eedd0ac4983b53b105cf6511c86e021e2006b2c0844a1184e8933f4f9f7179f9bd706885f142c9d46f769df573fd3a5604 languageName: node linkType: hard -"@udecode/plate-common@npm:36.5.9": - version: 36.5.9 - resolution: "@udecode/plate-common@npm:36.5.9" +"@udecode/plate-common@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-common@npm:30.1.2" dependencies: - "@udecode/plate-core": 36.5.9 - "@udecode/plate-utils": 36.5.9 - "@udecode/react-utils": 33.0.0 - "@udecode/slate": 36.0.6 - "@udecode/slate-react": 36.0.6 - "@udecode/slate-utils": 36.3.9 - "@udecode/utils": 31.0.0 + "@udecode/plate-core": 30.1.2 + "@udecode/plate-utils": 30.1.2 + "@udecode/react-utils": 29.0.1 + "@udecode/slate": 25.0.0 + "@udecode/slate-react": 29.0.1 + "@udecode/slate-utils": 25.0.0 + "@udecode/utils": 24.3.0 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" @@ -18832,30 +23199,30 @@ __metadata: slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: da94dae567b75beb830dc7bbf47a37c8bf37aec77c7b9e252d95f634ceffab2f30b505db9d525b0d3368b41e5601bf8b716b66b4d0513a868d3fe882b890e84a + checksum: 910ec3f2d5f5ced0042dca5d05b4a98569d3f02c07b979e58a46eac6642cfb9a17c68e7dd8c626e0351185bd78aa30b10cca2cfe353171ee9c14a3ab3bdc0d28 languageName: node linkType: hard -"@udecode/plate-core@npm:36.5.9": - version: 36.5.9 - resolution: "@udecode/plate-core@npm:36.5.9" +"@udecode/plate-core@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-core@npm:30.1.2" dependencies: - "@udecode/slate": 36.0.6 - "@udecode/slate-react": 36.0.6 - "@udecode/slate-utils": 36.3.9 - "@udecode/utils": 31.0.0 + "@udecode/slate": 25.0.0 + "@udecode/slate-react": 29.0.1 + "@udecode/slate-utils": 25.0.0 + "@udecode/utils": 24.3.0 clsx: ^1.2.1 is-hotkey: ^0.2.0 - jotai: ^2.7.1 - jotai-optics: 0.3.2 - jotai-x: ^1.2.3 + jotai: ^2.6.0 + jotai-optics: 0.3.1 + jotai-x: ^1.2.1 lodash: ^4.17.21 - nanoid: ^3.3.7 + nanoid: ^3.3.6 optics-ts: 2.4.1 - react-hotkeys-hook: ^4.5.0 - use-deep-compare: ^1.2.1 - zustand: ^4.5.2 - zustand-x: ^3.0.2 + react-hotkeys-hook: ^4.4.1 + use-deep-compare: ^1.1.0 + zustand: ^4.4.7 + zustand-x: ^3.0.1 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" @@ -18863,253 +23230,243 @@ __metadata: slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: da1a450f1eee0c4b83890839dfd72da78cc30c45209f2c76c3db0f590b2cfc0f40e73e08fd98551059cbc1b36f5ccc9b55386531eaf2079512e9f933feb8e9c5 + checksum: b6754e725973ddd05012395df6499981ce5bed0e783be1069888c7f4103ba1322c51de765987c938176f191c79368c7cd7667ec6afe6ab8e6aaf206391c0adc0 languageName: node linkType: hard -"@udecode/plate-heading@npm:36.0.9": - version: 36.0.9 - resolution: "@udecode/plate-heading@npm:36.0.9" +"@udecode/plate-heading@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-heading@npm:30.1.2" + dependencies: + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.6" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 187439ccff3c27139a600b9c1984b87eaf8fbfcdf4aa483b4e4023841cec41231595a3e3075baedfdd0bebda30ada33009f959046e600d5be48d51831e8eab51 + checksum: d4c5528df1b0b96bdad12947f08ea38c9e84c20a612f2bf69fe122948fd7b43fcbc531029e9428ca41e2ce4f9aab8a3ad89982bc675b4f66a5c43059612f49d1 languageName: node linkType: hard -"@udecode/plate-indent-list@npm:36.0.1": - version: 36.0.1 - resolution: "@udecode/plate-indent-list@npm:36.0.1" +"@udecode/plate-indent-list@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-indent-list@npm:30.1.2" dependencies: - "@udecode/plate-indent": 36.0.0 - "@udecode/plate-list": 36.0.0 + "@udecode/plate-common": 30.1.2 + "@udecode/plate-indent": 30.1.2 + "@udecode/plate-list": 30.1.2 clsx: ^1.2.1 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: f4536daf6d46b5333e544afb25fd549eef9fb99a9977714373cd1ff5f113184b308e63a870fb7762758723af4b4dfebb3fff715dcd2227ae7fb5f2b2bfe99076 + checksum: 5c7ab9d17ae9f0337e6503eaa43d7ec3220ad08faa65b613d0dca1758154f59dd0cfe931b132e04a77458e52d46d453f28d511a0ec91ffe400a5b6113387ac99 languageName: node linkType: hard -"@udecode/plate-indent@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-indent@npm:36.0.0" +"@udecode/plate-indent@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-indent@npm:30.1.2" + dependencies: + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: fcef8d9012486075e1f3c9c9fa01c196f7ed991e976ffdab1bec6e2554fbf6108d8a961c44635fac565734c9cea56a5c59ca494364e74d5c17bfd4413449f0ac + checksum: e82e8109c94b53849b7e617c32b0ac571f1efb3de95d0d077fd5913508cf5ed342e3f1c6146069767da009eb4f9cb549890ce5e29d766bb3728ca21fd5493d8b languageName: node linkType: hard -"@udecode/plate-list@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-list@npm:36.0.0" +"@udecode/plate-list@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-list@npm:30.1.2" dependencies: - "@udecode/plate-reset-node": 36.0.0 + "@udecode/plate-common": 30.1.2 + "@udecode/plate-reset-node": 30.1.2 lodash: ^4.17.21 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: e61d4f5b60c11f55fc7232d5bd1efbe60899ba6f203da3900edc9565ab3586334efa08c4cc12f8b324a8134fde55b1e2cef32e8c3bfaad63a5f528f44d24f1a9 + checksum: 247e5f222b4d1afacb4cdf003c106548d30be1d67e41522a665b6f44043457562918d32fb357731ccd298a11d72de9598f9dd4533a831c6f237ba8a865031e88 languageName: node linkType: hard -"@udecode/plate-media@npm:36.0.10": - version: 36.0.10 - resolution: "@udecode/plate-media@npm:36.0.10" +"@udecode/plate-media@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-media@npm:30.1.2" dependencies: + "@udecode/plate-common": 30.1.2 js-video-url-parser: ^0.5.1 peerDependencies: - "@udecode/plate-common": ">=36.0.6" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 1463167f1f49e7febcd2e4aa19c9f1527fba2838c63a1a352ea0e631e6ea104c6e810e749ca553b671b573e2c0f7681701f5133ff2269fd191581e272f545e1c + checksum: 2379ff55a9ca51dada94e763273c0576db30df5f642ddde80018d75c670ce561608062cae5a412ba20edde8164eba30fd4283d09ce4fb6105a5e559b59fcdad7 languageName: node linkType: hard -"@udecode/plate-paragraph@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-paragraph@npm:36.0.0" +"@udecode/plate-paragraph@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-paragraph@npm:30.1.2" + dependencies: + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: aacae29ae6f632968da92b16b82416182ad1c0b5d57a6abdfa0f2a59bf7565b70f4563e3ec7625b40619584cb8541d33365087236253fea25dba78eb03513039 + checksum: 10864e8822d50f50a8fbdd396793be4fbd9d247289720bcc91d3aa0a9f9cd38892417a3c226e0630f50941993d4e808114d95374a3451739b064d7b187259c13 languageName: node linkType: hard -"@udecode/plate-reset-node@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-reset-node@npm:36.0.0" +"@udecode/plate-reset-node@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-reset-node@npm:30.1.2" + dependencies: + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 0c6519acf8e7fb6152ba8a6f04cff3c294d2ee25846b1fb2bb108e26c4c01db0ea8185d2ff40943b5a0c7fa66803fb70d837aff20a91b3b13a52737e0bff95b1 + checksum: f4d068a3da07502c4434c121ef962d2e4d530468f42dd72c58c24f815b8e654709ef28b841044d5390ab5c2e492da324e449499526d24d53c19eda7df41ffece languageName: node linkType: hard -"@udecode/plate-resizable@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-resizable@npm:36.0.0" +"@udecode/plate-resizable@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-resizable@npm:30.1.2" + dependencies: + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: aa3805eadfe9d02e15f535cbaa33b5d6facf3392a504a41f7a16eb91890bb0dc5badfb5aa6ed739ce3dc4132a0762b19ac3a226228a50d29b20a953129bcddcf + checksum: f74916898038375ba802ccb7972a330289d9bda475a1c1b41a9b2a6f035c15509cae31aaa4a3d15707672d88ae01ba39e95434a7637c0b44beee4d180da50f0c languageName: node linkType: hard -"@udecode/plate-select@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-select@npm:36.0.0" +"@udecode/plate-select@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-select@npm:30.1.2" + dependencies: + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: e60cbd291e5d6d8cc205ab22aba1e7b0e303edf36dd1ec7c5ac2065fbbbed0288fe80af1105a47cd7f98e4aec3672b102e4dbab3f9adc2ea58728da8aa0e5a67 + checksum: 99a3b1e6233e617c0003d75d9b8105548cffbf29082dae396286f5a1e15152160d75a00eadd9641d284070a8cd13c81db980913d81e0cebd9ff68659af74c78b languageName: node linkType: hard -"@udecode/plate-serializer-docx@npm:36.0.10": - version: 36.0.10 - resolution: "@udecode/plate-serializer-docx@npm:36.0.10" +"@udecode/plate-serializer-docx@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-serializer-docx@npm:30.1.2" dependencies: - "@udecode/plate-heading": 36.0.9 - "@udecode/plate-indent": 36.0.0 - "@udecode/plate-indent-list": 36.0.1 - "@udecode/plate-media": 36.0.10 - "@udecode/plate-paragraph": 36.0.0 - "@udecode/plate-table": 36.0.0 - validator: ^13.11.0 + "@udecode/plate-common": 30.1.2 + "@udecode/plate-heading": 30.1.2 + "@udecode/plate-indent": 30.1.2 + "@udecode/plate-indent-list": 30.1.2 + "@udecode/plate-media": 30.1.2 + "@udecode/plate-paragraph": 30.1.2 + "@udecode/plate-table": 30.1.2 + validator: ^13.9.0 peerDependencies: - "@udecode/plate-common": ">=36.0.6" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 0f7c5fef6fa9bbb94a480a09d058e7f4b0f70a53768dfa06429ab0fda3efb5fa3a7c6714c333cc74efe5a42d2f50b0865cbc084c16f33928b6902756a575b510 + checksum: 32d6d7b9de011e8c948c118fd6efa692cd6355ca0ac0c69e14ffed4b4860daba85be578b5e21b03ff778fc22fb8a78b9e483f286e4f35322fe9b10f6a4cb717e languageName: node linkType: hard -"@udecode/plate-serializer-html@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-serializer-html@npm:36.0.0" +"@udecode/plate-serializer-html@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-serializer-html@npm:30.1.2" dependencies: - html-entities: ^2.5.2 + "@udecode/plate-common": 30.1.2 + html-entities: ^2.4.0 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 4aaf9742afc0c995167fff7d170fa34f6a32034fbae99619a39f227c1a5c26efa8cd7011c41d1503f7b24147bbc32b0d80e867cdaf19ccf3a3af1893cb1857d5 + checksum: 389cd2100a40673ce1f75ae477d7b039c495f588359dcd8369106b2acd157a4ac5568f6b32ee36378be1c7a8d6a9bd63ee9a9c247aeefa43b3c7467ae379d0de languageName: node linkType: hard -"@udecode/plate-table@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-table@npm:36.0.0" +"@udecode/plate-table@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-table@npm:30.1.2" dependencies: - "@udecode/plate-resizable": 36.0.0 + "@udecode/plate-common": 30.1.2 + "@udecode/plate-resizable": 30.1.2 lodash: ^4.17.21 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-react: ">=0.99.0" - checksum: 5d72594001ce96ff9dc5a123110c49da8b6ab2d0c304c17eb32d70715eeefc8abd05d0af05cd78a1026664c2bb1dbf1cffbd2d90ea4bc861dc3a266bd313c0f8 + checksum: 7910647d86cf29ec0d0863ada3af5af0f440ad83d26cde0317cf7968f5dda8485a664b49bcc23b43dc2aedd8e303d675b3c6b7a1c2dfbca5554fee5587274a27 languageName: node linkType: hard -"@udecode/plate-table@npm:36.5.9": - version: 36.5.9 - resolution: "@udecode/plate-table@npm:36.5.9" +"@udecode/plate-trailing-block@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-trailing-block@npm:30.1.2" dependencies: - "@udecode/plate-resizable": 36.0.0 - lodash: ^4.17.21 - peerDependencies: - "@udecode/plate-common": ">=36.5.9" - react: ">=16.8.0" - react-dom: ">=16.8.0" - slate: ">=0.94.0" - slate-history: ">=0.93.0" - slate-react: ">=0.99.0" - checksum: 9636b0b663c67d9991d4e9c35f2c5b4afa0d7a046227381506c292512bc8ef046c4f8be0d232b0baf8a8b871177b28801571040e7d868818d7be87218c6b98f1 - languageName: node - linkType: hard - -"@udecode/plate-trailing-block@npm:36.0.0": - version: 36.0.0 - resolution: "@udecode/plate-trailing-block@npm:36.0.0" + "@udecode/plate-common": 30.1.2 peerDependencies: - "@udecode/plate-common": ">=36.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: 1d47b16c19be5390f374a9f764667f339345d673d95a838718ead6822559a8cdda2e3ead77231f5bc4774eb8b3111d02f9d55ff1239cdf478016965aaf9623de + checksum: b7b0c231e1b484baf2b18562bbd3d367e7efef31bc86143abe6d2aabca372e355b9fa187ff655102d0f0bd48ea5e71c38fb1244ce22f0389ac1046aab691c693 languageName: node linkType: hard -"@udecode/plate-utils@npm:36.5.9": - version: 36.5.9 - resolution: "@udecode/plate-utils@npm:36.5.9" +"@udecode/plate-utils@npm:30.1.2": + version: 30.1.2 + resolution: "@udecode/plate-utils@npm:30.1.2" dependencies: - "@udecode/plate-core": 36.5.9 - "@udecode/react-utils": 33.0.0 - "@udecode/slate": 36.0.6 - "@udecode/slate-react": 36.0.6 - "@udecode/slate-utils": 36.3.9 - "@udecode/utils": 31.0.0 + "@udecode/plate-core": 30.1.2 + "@udecode/react-utils": 29.0.1 + "@udecode/slate": 25.0.0 + "@udecode/slate-react": 29.0.1 + "@udecode/slate-utils": 25.0.0 + "@udecode/utils": 24.3.0 clsx: ^1.2.1 lodash: ^4.17.21 peerDependencies: @@ -19119,77 +23476,77 @@ __metadata: slate-history: ">=0.93.0" slate-hyperscript: ">=0.66.0" slate-react: ">=0.99.0" - checksum: e4a2c843cd5d6be941078331b9504d9dcea3b7e7afa992566039d6f1ad970884a34de0aeb85d1661793dfd301aabe19f44465b41675c197eacf5167a90ecad8e + checksum: 87dd1e0deacb4504904d069b84d8ac670393141f929d644a948eed46ab4986fb7336fa8a4fd060ae12773ef9363ef22209b3f92fde7b3bddc7bee102dae514d4 languageName: node linkType: hard -"@udecode/react-utils@npm:33.0.0": - version: 33.0.0 - resolution: "@udecode/react-utils@npm:33.0.0" +"@udecode/react-utils@npm:29.0.1": + version: 29.0.1 + resolution: "@udecode/react-utils@npm:29.0.1" dependencies: "@radix-ui/react-slot": ^1.0.2 - "@udecode/utils": 31.0.0 + "@udecode/utils": 24.3.0 clsx: ^1.2.1 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 48fccdfd5ddf1bb5ff17db4e40146312053540c843e6bb30fb8ed8b0d9185bb95976ccbf87a9b0a1582b621f495a8bcf9b4dd8db9ee28d5e89b324effb27dd1d + checksum: 6f2b863869d4c13c673f22acc6f71d6191bb62568385f2fbc910144ab930f5fde5194a2acd36e311a78f24933be6ad2aadd57f561025b18597c178cb1d2c2c8d languageName: node linkType: hard -"@udecode/slate-react@npm:36.0.6": - version: 36.0.6 - resolution: "@udecode/slate-react@npm:36.0.6" +"@udecode/slate-react@npm:29.0.1": + version: 29.0.1 + resolution: "@udecode/slate-react@npm:29.0.1" dependencies: - "@udecode/react-utils": 33.0.0 - "@udecode/slate": 36.0.6 - "@udecode/utils": 31.0.0 + "@udecode/react-utils": 29.0.1 + "@udecode/slate": 25.0.0 + "@udecode/utils": 24.3.0 peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" slate-history: ">=0.93.0" slate-react: ">=0.99.0" - checksum: 3511c4d87302a0a874e0a8069a41719c1a74d73333c7aa595d3f670ac22240bcc90167e87837cbbac1ad4a9193ce9f16179d5649d2c8f6db37815d047d3d1664 + checksum: 4b17989773b39ec5d62ab11caf51a51c12ac34e9161818477ce6efb77a493b478e33f54be089c7b9b19b71ea51220b1502bcf3e38fe9f663d8ac02b8dada150f languageName: node linkType: hard -"@udecode/slate-utils@npm:36.3.9": - version: 36.3.9 - resolution: "@udecode/slate-utils@npm:36.3.9" +"@udecode/slate-utils@npm:25.0.0": + version: 25.0.0 + resolution: "@udecode/slate-utils@npm:25.0.0" dependencies: - "@udecode/slate": 36.0.6 - "@udecode/utils": 31.0.0 + "@udecode/slate": 25.0.0 + "@udecode/utils": 24.3.0 lodash: ^4.17.21 peerDependencies: slate: ">=0.94.0" slate-history: ">=0.93.0" - checksum: 265371c7ffd0ba51330963572c430f9e48ef9fe56f9b7ee13574898a2a0dc29479d807a1bec6db8a4184d09c52a3105177e34700c3b0b388b8cde5ed30b0552f + checksum: d915d0b34470350e716816dbd32041a7b346676a7a5714a4e0a457679be10c343f001aaa2ac0d59d8e6af3d2ddd33e482efba111db3dedfd2f5ba377c683593b languageName: node linkType: hard -"@udecode/slate@npm:36.0.6": - version: 36.0.6 - resolution: "@udecode/slate@npm:36.0.6" +"@udecode/slate@npm:25.0.0": + version: 25.0.0 + resolution: "@udecode/slate@npm:25.0.0" dependencies: - "@udecode/utils": 31.0.0 + "@udecode/utils": 24.3.0 peerDependencies: slate: ">=0.94.0" slate-history: ">=0.93.0" - checksum: 1cf4fd01b01a24db2823843be49f2d6ff8b15158647f316602bb04a60aef2ca903041509c872b7e1db87d45454b8a67548a82e42d3a51e2b69504a9a1d1516f6 + checksum: ffd001258d810065371fe5a1a1db7d909f8a9e0fd582ac641cb96135b9567b55e482aaa158d92a0a4247315e9843800fc2cbd38df362978210e4479639d92bb9 languageName: node linkType: hard -"@udecode/utils@npm:31.0.0": - version: 31.0.0 - resolution: "@udecode/utils@npm:31.0.0" - checksum: c01722ff51ce1d964b13cc828e81f73671e2a37c65a5bce7667f8b46bede5f9411b88f96ffb652f33e5e86376a7ed7f5af45c16750bffb7b7bbfb617bbe10242 +"@udecode/utils@npm:24.3.0": + version: 24.3.0 + resolution: "@udecode/utils@npm:24.3.0" + checksum: 73238a4595574dccb16642f59029ed1d21447724dd788ac593fb5b6d3b8f77d0492b7877774d64e54f9032e24c60561bc7e0165724f50016b71b5be33428fdc2 languageName: node linkType: hard -"@uiw/codemirror-extensions-basic-setup@npm:4.23.6": - version: 4.23.6 - resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.23.6" +"@uiw/codemirror-extensions-basic-setup@npm:4.19.9": + version: 4.19.9 + resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.19.9" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/commands": ^6.0.0 @@ -19206,19 +23563,19 @@ __metadata: "@codemirror/search": ">=6.0.0" "@codemirror/state": ">=6.0.0" "@codemirror/view": ">=6.0.0" - checksum: dc5a845d80c0659883f5299150034145d9b0d1879a926d5f6a9c21d839351715ea9b5dba0272cfb869e9139d40d49e86c5df12e504874cebc8cf6e9824ec4b98 + checksum: f248d1623f33b88b61dd75955441d1b5925b2b2c78d595eac1d4603dc31f107d5973d9cff42c3ade4a2493828d679a8908e5dad03a570511e6095d0028089f85 languageName: node linkType: hard "@uiw/react-codemirror@npm:^4.11.4": - version: 4.23.6 - resolution: "@uiw/react-codemirror@npm:4.23.6" + version: 4.19.9 + resolution: "@uiw/react-codemirror@npm:4.19.9" dependencies: "@babel/runtime": ^7.18.6 "@codemirror/commands": ^6.1.0 "@codemirror/state": ^6.1.1 "@codemirror/theme-one-dark": ^6.0.0 - "@uiw/codemirror-extensions-basic-setup": 4.23.6 + "@uiw/codemirror-extensions-basic-setup": 4.19.9 codemirror: ^6.0.0 peerDependencies: "@babel/runtime": ">=7.11.0" @@ -19228,7 +23585,14 @@ __metadata: codemirror: ">=6.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 83ff09c6e5df919b3fef181798b138803a987efab4bebdaad09daae1701167cb4a734fa0b18adcc043d5a2fbd3a997bbda461d1a60972bfccdbbca21803e33fe + checksum: ed0d9a7b927df718535bccf553fa7cdabd2cb776f74e6ae75eab0ba321bc60468b5f1b8576a12543729770a11e5438fd4fc925f3f74643985c34a2184c5ae7f6 + languageName: node + linkType: hard + +"@ungap/promise-all-settled@npm:1.1.2": + version: 1.1.2 + resolution: "@ungap/promise-all-settled@npm:1.1.2" + checksum: 08d37fdfa23a6fe8139f1305313562ebad973f3fac01bcce2773b2bda5bcb0146dfdcf3cb6a722cf0a5f2ca0bc56a827eac8f1e7b3beddc548f654addf1fc34c languageName: node linkType: hard @@ -19252,12 +23616,12 @@ __metadata: linkType: hard "@urql/core@npm:>=2.3.1": - version: 5.0.8 - resolution: "@urql/core@npm:5.0.8" + version: 4.0.4 + resolution: "@urql/core@npm:4.0.4" dependencies: - "@0no-co/graphql.web": ^1.0.5 - wonka: ^6.3.2 - checksum: 2e0e1791e49585c5a28d24640d8585b8ff663e2feda73ea344a9ab213ca760466293ea16fa9a7bbc104c1ddeb1d61d320a45fda84a44f3b124b06767323df4c6 + "@0no-co/graphql.web": ^1.0.0 + wonka: ^6.3.0 + checksum: 35b2bfe9c8516a600028465f6a1cd40c3b2cba5b497a3550410ce563de2017d4e875d0627bb8ba284179f0c03eb4ed6d69313c66e5f482e14ee17d8e65a304a3 languageName: node linkType: hard @@ -19273,15 +23637,6 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/babel-plugin-debug-ids@npm:^1.1.0": - version: 1.1.0 - resolution: "@vanilla-extract/babel-plugin-debug-ids@npm:1.1.0" - dependencies: - "@babel/core": ^7.23.9 - checksum: b2feec9016ba2dd6740c2ce002d814123f38bf8fc01a6d771eff74ed8108abefdc9d6507e2045587d2a73d8a538ece867e4bfef8c5ccc2b13095a2c825160e7a - languageName: node - linkType: hard - "@vanilla-extract/babel-plugin@npm:1.1.6": version: 1.1.6 resolution: "@vanilla-extract/babel-plugin@npm:1.1.6" @@ -19293,7 +23648,7 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/css@npm:1.7.0": +"@vanilla-extract/css@npm:1.7.0, @vanilla-extract/css@npm:^1.6.8": version: 1.7.0 resolution: "@vanilla-extract/css@npm:1.7.0" dependencies: @@ -19312,26 +23667,6 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/css@npm:^1.16.0, @vanilla-extract/css@npm:^1.6.8": - version: 1.16.0 - resolution: "@vanilla-extract/css@npm:1.16.0" - dependencies: - "@emotion/hash": ^0.9.0 - "@vanilla-extract/private": ^1.0.6 - css-what: ^6.1.0 - cssesc: ^3.0.0 - csstype: ^3.0.7 - dedent: ^1.5.3 - deep-object-diff: ^1.1.9 - deepmerge: ^4.2.2 - lru-cache: ^10.4.3 - media-query-parser: ^2.0.2 - modern-ahocorasick: ^1.0.0 - picocolors: ^1.0.0 - checksum: 2a0c32105be0a7de62d9271e91dcf53e937b0d72ac0f9f7d6ee6144dc07abe00758ffeafb8f5de21e45cd9ed8e94eb1d0463f6679fdc9385043fa821b81cf574 - languageName: node - linkType: hard - "@vanilla-extract/integration@npm:^4.0.0, @vanilla-extract/integration@npm:^4.0.1": version: 4.0.1 resolution: "@vanilla-extract/integration@npm:4.0.1" @@ -19347,26 +23682,6 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/integration@npm:^7.1.10": - version: 7.1.10 - resolution: "@vanilla-extract/integration@npm:7.1.10" - dependencies: - "@babel/core": ^7.23.9 - "@babel/plugin-syntax-typescript": ^7.23.3 - "@vanilla-extract/babel-plugin-debug-ids": ^1.1.0 - "@vanilla-extract/css": ^1.16.0 - dedent: ^1.5.3 - esbuild: "npm:esbuild@>=0.17.6 <0.24.0" - eval: 0.1.8 - find-up: ^5.0.0 - javascript-stringify: ^2.0.1 - mlly: ^1.4.2 - vite: ^5.0.11 - vite-node: ^1.2.0 - checksum: cbf3cc21b59057f2528bf47f1d0c3ec23cdbc3c84c92debb9f39557f9db0f9c1dea269dbc3cff54456084d55fe9fd6ee184fd203d7d8b83f4e276aff7c1b29dd - languageName: node - linkType: hard - "@vanilla-extract/next-plugin@npm:2.0.2": version: 2.0.2 resolution: "@vanilla-extract/next-plugin@npm:2.0.2" @@ -19379,10 +23694,10 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/private@npm:^1.0.3, @vanilla-extract/private@npm:^1.0.6": - version: 1.0.6 - resolution: "@vanilla-extract/private@npm:1.0.6" - checksum: 2265b02af29d8cd40f6ddeeed197fb2df1a7695f5a9821d5e3597677179be8b83bcd8fe4df4a6178544f89123d745a3c6a13599d4fe4e5873b065a8ad329f690 +"@vanilla-extract/private@npm:^1.0.3": + version: 1.0.3 + resolution: "@vanilla-extract/private@npm:1.0.3" + checksum: 866a71ba6804edeb0735684e7723ba78f5cf0bb40d4fb538fe6bf7d73928099e341312337b2a510ac0ce96ff8a4b39eb7f7a5fad0c842532353dd20e7278f29b languageName: node linkType: hard @@ -19395,7 +23710,7 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/webpack-plugin@npm:2.1.10": +"@vanilla-extract/webpack-plugin@npm:2.1.10, @vanilla-extract/webpack-plugin@npm:^2.1.7": version: 2.1.10 resolution: "@vanilla-extract/webpack-plugin@npm:2.1.10" dependencies: @@ -19409,91 +23724,79 @@ __metadata: languageName: node linkType: hard -"@vanilla-extract/webpack-plugin@npm:^2.1.7": - version: 2.3.14 - resolution: "@vanilla-extract/webpack-plugin@npm:2.3.14" - dependencies: - "@vanilla-extract/integration": ^7.1.10 - debug: ^4.3.1 - loader-utils: ^2.0.0 - picocolors: ^1.0.0 - peerDependencies: - webpack: ^4.30.0 || ^5.20.2 - checksum: fce78d63e7859456cb877642313a9680f69bedf0f1250bbd2f0d9472a938a1c8e6886959c630646dc89e6fb322d23c5491f705814b766046324d744ad0d5cfe1 - languageName: node - linkType: hard - -"@vercel/stega@npm:^0.1.2": - version: 0.1.2 - resolution: "@vercel/stega@npm:0.1.2" - checksum: b86ffc044ff6ad5754541791ff9d45b8f9c2d19bb6eb80d0910f0d162eda8a6b0322c71a1afac9510dfcfa65dba66cf10a920780c9b179bd3d49f7d8565fedf1 - languageName: node - linkType: hard - -"@vue/compiler-core@npm:3.5.12, @vue/compiler-core@npm:^3.0.0": - version: 3.5.12 - resolution: "@vue/compiler-core@npm:3.5.12" +"@vue/compiler-core@npm:3.0.7, @vue/compiler-core@npm:^3.0.0": + version: 3.0.7 + resolution: "@vue/compiler-core@npm:3.0.7" dependencies: - "@babel/parser": ^7.25.3 - "@vue/shared": 3.5.12 - entities: ^4.5.0 - estree-walker: ^2.0.2 - source-map-js: ^1.2.0 - checksum: 341e5ded344192d71ba940d01b24e6fad400bea3ccbb093f3c57a6c952ad1ba1b6eb622ddc7be7401aebcac3875f1ebdcb6550f7fe9a3debb323d528944ae86b + "@babel/parser": ^7.12.0 + "@babel/types": ^7.12.0 + "@vue/shared": 3.0.7 + estree-walker: ^2.0.1 + source-map: ^0.6.1 + checksum: 141e0b23c2c2edcbca1488d5474787a6e47d1c4dc76cdeb5daf0c3841a65898574c2da69ae20a80c4f3383dc809a6645cde23bceff6dc5bcccf1aacff51e8c66 languageName: node linkType: hard -"@vue/compiler-dom@npm:3.5.12": - version: 3.5.12 - resolution: "@vue/compiler-dom@npm:3.5.12" +"@vue/compiler-dom@npm:3.0.7": + version: 3.0.7 + resolution: "@vue/compiler-dom@npm:3.0.7" dependencies: - "@vue/compiler-core": 3.5.12 - "@vue/shared": 3.5.12 - checksum: 519c5a3ba0aca1c712abaa3e77322361339cbff0d997bee5c1ed1338145641e8d0510849ff37938396cf7fe796521d9eac47fbd1fe128ef4dc3a39b28f1e6f5a + "@vue/compiler-core": 3.0.7 + "@vue/shared": 3.0.7 + checksum: e6f336493b98000be6808ca4a9c4f58928d4b41807d864e0be8823cb0443022d81ba74c4300312c687e41643043231f5ea05ded1fb5b16674dfddaa5b3135fd2 languageName: node linkType: hard "@vue/compiler-sfc@npm:^3.0.5": - version: 3.5.12 - resolution: "@vue/compiler-sfc@npm:3.5.12" - dependencies: - "@babel/parser": ^7.25.3 - "@vue/compiler-core": 3.5.12 - "@vue/compiler-dom": 3.5.12 - "@vue/compiler-ssr": 3.5.12 - "@vue/shared": 3.5.12 - estree-walker: ^2.0.2 - magic-string: ^0.30.11 - postcss: ^8.4.47 - source-map-js: ^1.2.0 - checksum: cbf90d7c1f3920323056a83a0fdab90b156f4f2849beb77b173dd09298b3a12b805a05b276908f75f890823e807dabe850d97670b0d2d1136e82fe834b64e06d + version: 3.0.7 + resolution: "@vue/compiler-sfc@npm:3.0.7" + dependencies: + "@babel/parser": ^7.12.0 + "@babel/types": ^7.12.0 + "@vue/compiler-core": 3.0.7 + "@vue/compiler-dom": 3.0.7 + "@vue/compiler-ssr": 3.0.7 + "@vue/shared": 3.0.7 + consolidate: ^0.16.0 + estree-walker: ^2.0.1 + hash-sum: ^2.0.0 + lru-cache: ^5.1.1 + magic-string: ^0.25.7 + merge-source-map: ^1.1.0 + postcss: ^8.1.10 + postcss-modules: ^4.0.0 + postcss-selector-parser: ^6.0.4 + source-map: ^0.6.1 + peerDependencies: + vue: 3.0.7 + checksum: 06ebaeeadabae32a648f35a7983a61126a48ea48eefa26528edc09da12a903fc3ef68f9f32d75a961a35acda3c296bcbbc1311a0c6c234e0cd87c4391fb4692b languageName: node linkType: hard -"@vue/compiler-ssr@npm:3.5.12": - version: 3.5.12 - resolution: "@vue/compiler-ssr@npm:3.5.12" +"@vue/compiler-ssr@npm:3.0.7": + version: 3.0.7 + resolution: "@vue/compiler-ssr@npm:3.0.7" dependencies: - "@vue/compiler-dom": 3.5.12 - "@vue/shared": 3.5.12 - checksum: bddbea9e9bab2f047ea8374623cbcbe3f65f3ac904859335810b760b943e207527e738cc8b494bc55f03cbf56129c1055ce046b654f516b5123ae5231b67d022 + "@vue/compiler-dom": 3.0.7 + "@vue/shared": 3.0.7 + checksum: 63fe30f9676942e7c44da6eb6ac5f8cb23df2344096b72a68fceffb7b9ca7760376987c29eac1e27a31b1b89385416ae524d98e06ada957f68bdc25a9f0e783f languageName: node linkType: hard -"@vue/shared@npm:3.5.12": - version: 3.5.12 - resolution: "@vue/shared@npm:3.5.12" - checksum: 11d14773ee39525d8cdd33eb45954f5b3458db41fc2e7e91603583a8ea40ea1fe423854874c89d6f67ce4a6d361af6042cbd0eb41a127ca4a3ba99602f3b80aa +"@vue/shared@npm:3.0.7": + version: 3.0.7 + resolution: "@vue/shared@npm:3.0.7" + checksum: 473a5acac3acb766ea6501b6ae9c7a30eb929bbb71064175052af0cdabb968fa106d112cbedb1d970d3cabaea1ef8341ab8c08249c85b9948118ce92c98081b7 languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/ast@npm:1.12.1" +"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/ast@npm:1.11.6" dependencies: "@webassemblyjs/helper-numbers": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - checksum: 31bcc64147236bd7b1b6d29d1f419c1f5845c785e1e42dc9e3f8ca2e05a029e9393a271b84f3a5bff2a32d35f51ff59e2181a6e5f953fe88576acd6750506202 + checksum: 38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf languageName: node linkType: hard @@ -19511,10 +23814,10 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" - checksum: c3ffb723024130308db608e86e2bdccd4868bbb62dffb0a9a1530606496f79c87f8565bd8e02805ce64912b71f1a70ee5fb00307258b0c082c3abf961d097eca +"@webassemblyjs/helper-buffer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" + checksum: b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 languageName: node linkType: hard @@ -19536,15 +23839,15 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" +"@webassemblyjs/helper-wasm-section@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/wasm-gen": 1.12.1 - checksum: c19810cdd2c90ff574139b6d8c0dda254d42d168a9e5b3d353d1bc085f1d7164ccd1b3c05592a45a939c47f7e403dc8d03572bb686642f06a3d02932f6f0bc8f + "@webassemblyjs/wasm-gen": 1.11.6 + checksum: b2cf751bf4552b5b9999d27bbb7692d0aca75260140195cb58ea6374d7b9c2dc69b61e10b211a0e773f66209c3ddd612137ed66097e3684d7816f854997682e9 languageName: node linkType: hard @@ -19573,75 +23876,68 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" +"@webassemblyjs/wasm-edit@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/helper-wasm-section": 1.12.1 - "@webassemblyjs/wasm-gen": 1.12.1 - "@webassemblyjs/wasm-opt": 1.12.1 - "@webassemblyjs/wasm-parser": 1.12.1 - "@webassemblyjs/wast-printer": 1.12.1 - checksum: ae23642303f030af888d30c4ef37b08dfec7eab6851a9575a616e65d1219f880d9223913a39056dd654e49049d76e97555b285d1f7e56935047abf578cce0692 + "@webassemblyjs/helper-wasm-section": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-opt": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + "@webassemblyjs/wast-printer": 1.11.6 + checksum: 29ce75870496d6fad864d815ebb072395a8a3a04dc9c3f4e1ffdc63fc5fa58b1f34304a1117296d8240054cfdbc38aca88e71fb51483cf29ffab0a61ef27b481 languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" +"@webassemblyjs/wasm-gen@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/ast": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 "@webassemblyjs/ieee754": 1.11.6 "@webassemblyjs/leb128": 1.11.6 "@webassemblyjs/utf8": 1.11.6 - checksum: 5787626bb7f0b033044471ddd00ce0c9fe1ee4584e8b73e232051e3a4c99ba1a102700d75337151c8b6055bae77eefa4548960c610a5e4a504e356bd872138ff + checksum: a645a2eecbea24833c3260a249704a7f554ef4a94c6000984728e94bb2bc9140a68dfd6fd21d5e0bbb09f6dfc98e083a45760a83ae0417b41a0196ff6d45a23a languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" +"@webassemblyjs/wasm-opt@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 - "@webassemblyjs/wasm-gen": 1.12.1 - "@webassemblyjs/wasm-parser": 1.12.1 - checksum: 0e8fa8a0645304a1e18ff40d3db5a2e9233ebaa169b19fcc651d6fc9fe2cac0ce092ddee927318015ae735d9cd9c5d97c0cafb6a51dcd2932ac73587b62df991 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + checksum: b4557f195487f8e97336ddf79f7bef40d788239169aac707f6eaa2fa5fe243557c2d74e550a8e57f2788e70c7ae4e7d32f7be16101afe183d597b747a3bdd528 languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" +"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/ast": 1.11.6 "@webassemblyjs/helper-api-error": 1.11.6 "@webassemblyjs/helper-wasm-bytecode": 1.11.6 "@webassemblyjs/ieee754": 1.11.6 "@webassemblyjs/leb128": 1.11.6 "@webassemblyjs/utf8": 1.11.6 - checksum: 176015de3551ac068cd4505d837414f258d9ade7442bd71efb1232fa26c9f6d7d4e11a5c816caeed389943f409af7ebff6899289a992d7a70343cb47009d21a8 + checksum: 8200a8d77c15621724a23fdabe58d5571415cda98a7058f542e670ea965dd75499f5e34a48675184947c66f3df23adf55df060312e6d72d57908e3f049620d8a languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wast-printer@npm:1.12.1" +"@webassemblyjs/wast-printer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wast-printer@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/ast": 1.11.6 "@xtuc/long": 4.2.2 - checksum: 2974b5dda8d769145ba0efd886ea94a601e61fb37114c14f9a9a7606afc23456799af652ac3052f284909bd42edc3665a76bc9b50f95f0794c053a8a1757b713 - languageName: node - linkType: hard - -"@whatwg-node/events@npm:^0.0.3": - version: 0.0.3 - resolution: "@whatwg-node/events@npm:0.0.3" - checksum: af26f40d4d0a0f5f0ee45fc6124afb8d6b33988dae96ab0fb87aa5e66d1ff08a749491b9da533ea524bbaebd4a770736f254d574a91ab4455386aa098cee8c77 + checksum: d2fa6a4c427325ec81463e9c809aa6572af6d47f619f3091bf4c4a6fc34f1da3df7caddaac50b8e7a457f8784c62cd58c6311b6cb69b0162ccd8d4c072f79cf8 languageName: node linkType: hard @@ -19662,47 +23958,37 @@ __metadata: languageName: node linkType: hard -"@whatwg-node/fetch@npm:^0.8.0, @whatwg-node/fetch@npm:^0.8.1, @whatwg-node/fetch@npm:^0.8.2": - version: 0.8.8 - resolution: "@whatwg-node/fetch@npm:0.8.8" +"@whatwg-node/fetch@npm:^0.4.0": + version: 0.4.7 + resolution: "@whatwg-node/fetch@npm:0.4.7" dependencies: "@peculiar/webcrypto": ^1.4.0 - "@whatwg-node/node-fetch": ^0.3.6 - busboy: ^1.6.0 - urlpattern-polyfill: ^8.0.0 - web-streams-polyfill: ^3.2.1 - checksum: 891407ba57e32e5af70a3b0a86980c4466dcf2ba8581b6927475c85400280b163085519e98821dd94776da9aa1b0b1e221e718009e2abed9c8a0d4721025b2ab - languageName: node - linkType: hard - -"@whatwg-node/node-fetch@npm:^0.3.6": - version: 0.3.6 - resolution: "@whatwg-node/node-fetch@npm:0.3.6" - dependencies: - "@whatwg-node/events": ^0.0.3 + abort-controller: ^3.0.0 busboy: ^1.6.0 - fast-querystring: ^1.1.1 - fast-url-parser: ^1.1.3 - tslib: ^2.3.1 - checksum: d3d7b0a0242c0511c7b666de66d9096fb24ea251426ce76e3a26a8ca17408de5d4d4f81b5aaec840cc7025f0321fb97e06067c53f377c844a5a9473dd76491ae + form-data-encoder: ^1.7.1 + formdata-node: ^4.3.1 + node-fetch: ^2.6.7 + undici: ^5.10.0 + web-streams-polyfill: ^3.2.0 + checksum: 0d90790355d649fa76507a1cb6a1b72f991b57f57d01c96dfd6a0d3acd1a601dd73480e8ed115493c2e5f4a32e8713eb949c26efadd76e5aeba8a484fa58447b languageName: node linkType: hard "@wry/context@npm:^0.7.0": - version: 0.7.4 - resolution: "@wry/context@npm:0.7.4" + version: 0.7.0 + resolution: "@wry/context@npm:0.7.0" dependencies: tslib: ^2.3.0 - checksum: 9bc8c30a31f9c7d36b616e89daa9280c03d196576a4f9fef800e9bd5de9434ba70216322faeeacc7ef1ab95f59185599d702538114045df729a5ceea50aef4e2 + checksum: f4ff78023a0b949122037aae766232b7d2284dc415204d22d9ea6d7969ff8f5f29b18128bc9a40e68dc054c8a12b1bf5868a357fdb50c398c447290c3a5b0496 languageName: node linkType: hard "@wry/equality@npm:^0.5.0": - version: 0.5.7 - resolution: "@wry/equality@npm:0.5.7" + version: 0.5.3 + resolution: "@wry/equality@npm:0.5.3" dependencies: tslib: ^2.3.0 - checksum: 892f262fae362df80f199b12658ea6966949539d4a3a50c1acf00d94a367d673a38f8efa1abcb726ae9e5cc5e62fce50c540c70f797b7c8a2c4308b401dfd903 + checksum: 7ea8ded51462911217183b93cc3ffbb4d18dc02a62d4a79e0d9983463739bf54106aaeb25649bf33168120bd044b61d135018bfcf4fefad8099c13eac9238aa6 languageName: node linkType: hard @@ -19731,7 +24017,14 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:~0.7.0, @xmldom/xmldom@npm:~0.7.7": +"@xmldom/xmldom@npm:~0.7.0": + version: 0.7.10 + resolution: "@xmldom/xmldom@npm:0.7.10" + checksum: faeb5efd208f25643e469b9807b4b1bfe4f9c19540f0a24b4bb1c748cee6ee44ec441048820f9100987d1ee075f2e2bfc28e535cae5024d4566bb62b0a42be13 + languageName: node + linkType: hard + +"@xmldom/xmldom@npm:~0.7.7": version: 0.7.13 resolution: "@xmldom/xmldom@npm:0.7.13" checksum: b4054078530e5fa8ede9677425deff0fce6d965f4c477ca73f8490d8a089e60b8498a15560425a1335f5ff99ecb851ed2c734b0a9a879299a5694302f212f37a @@ -19817,17 +24110,6 @@ __metadata: languageName: node linkType: hard -"@zkochan/js-yaml@npm:0.0.6": - version: 0.0.6 - resolution: "@zkochan/js-yaml@npm:0.0.6" - dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: 51b81597a1d1d79c778b8fae48317eaad78d75223d0b7477ad2b35f47cf63b19504da430bb7a03b326e668b282874242cc123e323e57293be038684cb5e755f8 - languageName: node - linkType: hard - "@zkochan/js-yaml@npm:0.0.7": version: 0.0.7 resolution: "@zkochan/js-yaml@npm:0.0.7" @@ -19839,27 +24121,27 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5, abab@npm:^2.0.6": +"abab@npm:^2.0.3, abab@npm:^2.0.5": + version: 2.0.5 + resolution: "abab@npm:2.0.5" + checksum: 0ec951b46d5418c2c2f923021ec193eaebdb4e802ffd5506286781b454be722a13a8430f98085cd3e204918401d9130ec6cc8f5ae19be315b3a0e857d83196e1 + languageName: node + linkType: hard + +"abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e languageName: node linkType: hard -"abbrev@npm:1": +"abbrev@npm:1, abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 - languageName: node - linkType: hard - "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -19906,6 +24188,15 @@ __metadata: languageName: node linkType: hard +"acorn-import-assertions@npm:^1.9.0": + version: 1.9.0 + resolution: "acorn-import-assertions@npm:1.9.0" + peerDependencies: + acorn: ^8 + checksum: 944fb2659d0845c467066bdcda2e20c05abe3aaf11972116df457ce2627628a81764d800dd55031ba19de513ee0d43bb771bc679cc0eda66dc8b4fade143bc0c + languageName: node + linkType: hard + "acorn-import-attributes@npm:^1.9.5": version: 1.9.5 resolution: "acorn-import-attributes@npm:1.9.5" @@ -19915,7 +24206,16 @@ __metadata: languageName: node linkType: hard -"acorn-jsx@npm:^5.3.1, acorn-jsx@npm:^5.3.2": +"acorn-jsx@npm:^5.3.1": + version: 5.3.1 + resolution: "acorn-jsx@npm:5.3.1" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: daf441a9d7b59c0ea1f7fe2934c48aca604a007455129ce35fa62ec3d4c8363e2efc2d4da636d18ce0049979260ba07d8b42bc002ae95182916d2c90901529c2 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: @@ -19924,7 +24224,18 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0": +"acorn-node@npm:^1.3.0": + version: 1.8.2 + resolution: "acorn-node@npm:1.8.2" + dependencies: + acorn: ^7.0.0 + acorn-walk: ^7.0.0 + xtend: ^4.0.2 + checksum: 02e1564a1ccf8bd1fcefcd01235398af4a9effaf032c5397994ddd275590a72894cb3e26e4b82579ccdda1e48ade7486aef61e771ddae3563ca452b927f443d8 + languageName: node + linkType: hard + +"acorn-walk@npm:^7.0.0, acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0": version: 7.2.0 resolution: "acorn-walk@npm:7.2.0" checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f @@ -19932,15 +24243,13 @@ __metadata: linkType: hard "acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" - dependencies: - acorn: ^8.11.0 - checksum: 4ff03f42323e7cf90f1683e08606b0f460e1e6ac263d2730e3df91c7665b6f64e696db6ea27ee4bed18c2599569be61f28a8399fa170c611161a348c402ca19c + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 languageName: node linkType: hard -"acorn@npm:^7.1.1, acorn@npm:^7.4.1": +"acorn@npm:^7.0.0, acorn@npm:^7.1.1, acorn@npm:^7.4.1": version: 7.4.1 resolution: "acorn@npm:7.4.1" bin: @@ -19949,19 +24258,37 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.12.1, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.13.0 - resolution: "acorn@npm:8.13.0" +"acorn@npm:^8.0.4, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0": + version: 8.7.1 + resolution: "acorn@npm:8.7.1" + bin: + acorn: bin/acorn + checksum: aca0aabf98826717920ac2583fdcad0a6fbe4e583fdb6e843af2594e907455aeafe30b1e14f1757cd83ce1776773cf8296ffc3a4acf13f0bd3dfebcf1db6ae80 + languageName: node + linkType: hard + +"acorn@npm:^8.1.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2": + version: 8.8.2 + resolution: "acorn@npm:8.8.2" + bin: + acorn: bin/acorn + checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 + languageName: node + linkType: hard + +"acorn@npm:^8.9.0": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" bin: acorn: bin/acorn - checksum: f1541f05eb5d6ff67990d1927290809b1ebb663ac96d9c7057c935cf29c5bcaba6d39f37bd007f4bb814f162f142b0f2b2dd4b14128b8fcfaf9f0508a6f05f1c + checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d languageName: node linkType: hard "address@npm:^1.0.1": - version: 1.2.2 - resolution: "address@npm:1.2.2" - checksum: ace439960c1e3564d8f523aff23a841904bf33a2a7c2e064f7f60a064194075758b9690e65bd9785692a4ef698a998c57eb74d145881a1cecab8ba658ddb1607 + version: 1.1.2 + resolution: "address@npm:1.1.2" + checksum: d966deee6ab9a0f96ed1d25dc73e91a248f64479c91f9daeb15237b8e3c39a02faac4e6afe8987ef9e5aea60a1593cef5882b7456ab2e6196fc0229a93ec39c2 languageName: node linkType: hard @@ -19977,13 +24304,6 @@ __metadata: languageName: node linkType: hard -"adler-32@npm:~1.3.0": - version: 1.3.1 - resolution: "adler-32@npm:1.3.1" - checksum: c7f6b02df64a4392fcf1591862344f56733716a558e97a8b06a553dadeeaec792054512389000f42f371b13d2be5370e056e18db3b573944b595c4cb7742c5c6 - languageName: node - linkType: hard - "agent-base@npm:5": version: 5.1.1 resolution: "agent-base@npm:5.1.1" @@ -20000,6 +24320,15 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:^4.3.0": + version: 4.3.0 + resolution: "agent-base@npm:4.3.0" + dependencies: + es6-promisify: ^5.0.0 + checksum: 0c10891060e579c67efafd6b62223666c4b4129b521eac3e9ad272a137545bcedb54ce352273b7ad21a0024060e4f1360ae9a465ac87e2af18883c937d39979f + languageName: node + linkType: hard + "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": version: 7.1.1 resolution: "agent-base@npm:7.1.1" @@ -20009,7 +24338,7 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:4.2.1": +"agentkeepalive@npm:4.2.1, agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": version: 4.2.1 resolution: "agentkeepalive@npm:4.2.1" dependencies: @@ -20020,15 +24349,6 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": - version: 4.5.0 - resolution: "agentkeepalive@npm:4.5.0" - dependencies: - humanize-ms: ^1.2.1 - checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 - languageName: node - linkType: hard - "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" @@ -20074,7 +24394,7 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^5.1.0": +"ajv-keywords@npm:^5.0.0, ajv-keywords@npm:^5.1.0": version: 5.1.0 resolution: "ajv-keywords@npm:5.1.0" dependencies: @@ -20085,7 +24405,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:8.12.0": +"ajv@npm:8.12.0, ajv@npm:^8.9.0": version: 8.12.0 resolution: "ajv@npm:8.12.0" dependencies: @@ -20097,7 +24417,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -20109,7 +24429,19 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.12.0, ajv@npm:^8.6.3, ajv@npm:^8.9.0": +"ajv@npm:^8.0.0, ajv@npm:^8.6.3, ajv@npm:^8.8.0": + version: 8.11.0 + resolution: "ajv@npm:8.11.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 5e0ff226806763be73e93dd7805b634f6f5921e3e90ca04acdf8db81eed9d8d3f0d4c5f1213047f45ebbf8047ffe0c840fa1ef2ec42c3a644899f69aa72b5bef + languageName: node + linkType: hard + +"ajv@npm:^8.12.0": version: 8.17.1 resolution: "ajv@npm:8.17.1" dependencies: @@ -20136,18 +24468,18 @@ __metadata: linkType: hard "ansi-align@npm:^3.0.0": - version: 3.0.1 - resolution: "ansi-align@npm:3.0.1" + version: 3.0.0 + resolution: "ansi-align@npm:3.0.0" dependencies: - string-width: ^4.1.0 - checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d + string-width: ^3.0.0 + checksum: 6bc5f3712d28a899063845a15c5da75b2f350dda8ffac6098581619b80a85d249cdd23c3dc7b596cd31e44477382bcdedff47e31201eaa10bb9708c9fce45330 languageName: node linkType: hard -"ansi-colors@npm:^4.1.1": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e +"ansi-colors@npm:4.1.1, ansi-colors@npm:^4.1.1": + version: 4.1.1 + resolution: "ansi-colors@npm:4.1.1" + checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 languageName: node linkType: hard @@ -20158,7 +24490,7 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^3.0.0": +"ansi-escapes@npm:^3.0.0, ansi-escapes@npm:^3.1.0": version: 3.2.0 resolution: "ansi-escapes@npm:3.2.0" checksum: 0f94695b677ea742f7f1eed961f7fd8d05670f744c6ad1f8f635362f6681dcfbc1575cb05b43abc7bb6d67e25a75fb8c7ea8f2a57330eb2c76b33f18cb2cef0a @@ -20211,16 +24543,16 @@ __metadata: linkType: hard "ansi-regex@npm:^3.0.0": - version: 3.0.1 - resolution: "ansi-regex@npm:3.0.1" - checksum: 09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc + version: 3.0.0 + resolution: "ansi-regex@npm:3.0.0" + checksum: 2ad11c416f81c39f5c65eafc88cf1d71aa91d76a2f766e75e457c2a3c43e8a003aadbf2966b61c497aa6a6940a36412486c975b3270cdfc3f413b69826189ec3 languageName: node linkType: hard -"ansi-regex@npm:^4.0.0, ansi-regex@npm:^4.1.0": - version: 4.1.1 - resolution: "ansi-regex@npm:4.1.1" - checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 +"ansi-regex@npm:^4.1.0": + version: 4.1.0 + resolution: "ansi-regex@npm:4.1.0" + checksum: 97aa4659538d53e5e441f5ef2949a3cffcb838e57aeaad42c4194e9d7ddb37246a6526c4ca85d3940a9d1e19b11cc2e114530b54c9d700c8baf163c31779baf8 languageName: node linkType: hard @@ -20232,9 +24564,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 languageName: node linkType: hard @@ -20305,13 +24637,13 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.1, anymatch@npm:~3.1.2": + version: 3.1.2 + resolution: "anymatch@npm:3.1.2" dependencies: normalize-path: ^3.0.0 picomatch: ^2.0.4 - checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 languageName: node linkType: hard @@ -20348,7 +24680,16 @@ __metadata: languageName: node linkType: hard -"apollo-reporting-protobuf@npm:^0.8.0 || ^3.0.0, apollo-reporting-protobuf@npm:^3.4.0": +"apollo-reporting-protobuf@npm:^0.8.0 || ^3.0.0, apollo-reporting-protobuf@npm:^3.3.1, apollo-reporting-protobuf@npm:^3.3.3": + version: 3.3.3 + resolution: "apollo-reporting-protobuf@npm:3.3.3" + dependencies: + "@apollo/protobufjs": 1.2.6 + checksum: 6900db30476ef2e888ecef4c291e26579eba9695dc874ca8b3d1f93064bea307689172790b9d574849e5bdb371953ea38f2caddc5abb51e1ca197197f3d56d28 + languageName: node + linkType: hard + +"apollo-reporting-protobuf@npm:^3.4.0": version: 3.4.0 resolution: "apollo-reporting-protobuf@npm:3.4.0" dependencies: @@ -20367,8 +24708,8 @@ __metadata: linkType: hard "apollo-server-core@npm:^3.10.2": - version: 3.13.0 - resolution: "apollo-server-core@npm:3.13.0" + version: 3.10.3 + resolution: "apollo-server-core@npm:3.10.3" dependencies: "@apollo/utils.keyvaluecache": ^1.0.1 "@apollo/utils.logger": ^1.0.0 @@ -20379,23 +24720,22 @@ __metadata: "@graphql-tools/schema": ^8.0.0 "@josephg/resolvable": ^1.0.0 apollo-datasource: ^3.3.2 - apollo-reporting-protobuf: ^3.4.0 + apollo-reporting-protobuf: ^3.3.3 apollo-server-env: ^4.2.1 apollo-server-errors: ^3.3.1 - apollo-server-plugin-base: ^3.7.2 - apollo-server-types: ^3.8.0 + apollo-server-plugin-base: ^3.6.3 + apollo-server-types: ^3.6.3 async-retry: ^1.2.1 fast-json-stable-stringify: ^2.1.0 graphql-tag: ^2.11.0 loglevel: ^1.6.8 lru-cache: ^6.0.0 - node-abort-controller: ^3.0.1 sha.js: ^2.4.11 uuid: ^9.0.0 whatwg-mimetype: ^3.0.0 peerDependencies: graphql: ^15.3.0 || ^16.0.0 - checksum: 94f97f6e25cba506fa5ced2e1e88fbe1cf7abccdf4cfbd7ce218e26af02a58a1b1c9191490876a7679b8285b85eb036208353dbd833144608f730a0dab9473bd + checksum: 1a9c3ca29c1e664970737e83d76999d43ceb938e39026a329682fcc80fa17a564a69cb7b38110b1928d3d512ae77eeeb8ed6e160043521052c0360b0b00f0ada languageName: node linkType: hard @@ -20410,12 +24750,12 @@ __metadata: linkType: hard "apollo-server-env@npm:^3.0.0": - version: 3.2.0 - resolution: "apollo-server-env@npm:3.2.0" + version: 3.1.0 + resolution: "apollo-server-env@npm:3.1.0" dependencies: node-fetch: ^2.6.1 util.promisify: ^1.0.0 - checksum: 84d880e48371d02860ba2124d1c0f026276f5f22cd18dcdd3cacbb7a70cc8d2cf07a4bd4f294006e928c0ef95cc31cdad2198cbc968a649633521b0084416e5c + checksum: 35bb002bc06c27b4339ccd193e519a130402009032fb1d90d780c3de10ee0c0e489c4778175084f3eae8f66dc62fdbb236c217b0f98e46709317d63f2f2c0332 languageName: node linkType: hard @@ -20468,6 +24808,17 @@ __metadata: languageName: node linkType: hard +"apollo-server-plugin-base@npm:^3.6.3": + version: 3.6.3 + resolution: "apollo-server-plugin-base@npm:3.6.3" + dependencies: + apollo-server-types: ^3.6.3 + peerDependencies: + graphql: ^15.3.0 || ^16.0.0 + checksum: 50e690cf4c5047957c4546676f11d82f8c0bee2c0340573322f23188af27175ac49859d463c6123ebef500b3c32a0932e3e3f9fa8671e2d1a410d2e89c8608e3 + languageName: node + linkType: hard + "apollo-server-plugin-base@npm:^3.7.2": version: 3.7.2 resolution: "apollo-server-plugin-base@npm:3.7.2" @@ -20492,7 +24843,21 @@ __metadata: languageName: node linkType: hard -"apollo-server-types@npm:^3.6.2, apollo-server-types@npm:^3.8.0": +"apollo-server-types@npm:^3.6.2, apollo-server-types@npm:^3.6.3": + version: 3.6.3 + resolution: "apollo-server-types@npm:3.6.3" + dependencies: + "@apollo/utils.keyvaluecache": ^1.0.1 + "@apollo/utils.logger": ^1.0.0 + apollo-reporting-protobuf: ^3.3.3 + apollo-server-env: ^4.2.1 + peerDependencies: + graphql: ^15.3.0 || ^16.0.0 + checksum: ebd218e6fa8b756bb2d6954b454676907d99b8f140923b439cc1bbb200251f9df7228a9d83c5c91bb571a448cc80c2d86bc0a0eae491a4ce028e86a724cde68a + languageName: node + linkType: hard + +"apollo-server-types@npm:^3.8.0": version: 3.8.0 resolution: "apollo-server-types@npm:3.8.0" dependencies: @@ -20523,9 +24888,9 @@ __metadata: linkType: hard "app-root-path@npm:^3.0.0": - version: 3.1.0 - resolution: "app-root-path@npm:3.1.0" - checksum: e3db3957aee197143a0f6c75e39fe89b19e7244f28b4f2944f7276a9c526d2a7ab2d115b4b2d70a51a65a9a3ca17506690e5b36f75a068a7e5a13f8c092389ba + version: 3.0.0 + resolution: "app-root-path@npm:3.0.0" + checksum: ff91a24db2b55070f6b3e22e72ce8fe8ea847e19eb8a3cbb267f9e9ac2a8372db65114dd6798a4ed7897a6f475b90a49330b3e53bf199d47e6abb5c5279aa1d7 languageName: node linkType: hard @@ -20593,24 +24958,6 @@ __metadata: languageName: node linkType: hard -"archiver-utils@npm:^3.0.4": - version: 3.0.4 - resolution: "archiver-utils@npm:3.0.4" - dependencies: - glob: ^7.2.3 - graceful-fs: ^4.2.0 - lazystream: ^1.0.0 - lodash.defaults: ^4.2.0 - lodash.difference: ^4.5.0 - lodash.flatten: ^4.4.0 - lodash.isplainobject: ^4.0.6 - lodash.union: ^4.6.0 - normalize-path: ^3.0.0 - readable-stream: ^3.6.0 - checksum: 5c6568f1185fb6c4b85282ad3281a5a024761bf27e525de1ec54255d15ca98e19532e7b5403930273911a5c8c961aa0c1e9148d6c2810784fa6bd8a97c0021a7 - languageName: node - linkType: hard - "archiver-utils@npm:^4.0.1": version: 4.0.1 resolution: "archiver-utils@npm:4.0.1" @@ -20641,17 +24988,17 @@ __metadata: linkType: hard "archiver@npm:^5.3.0": - version: 5.3.2 - resolution: "archiver@npm:5.3.2" + version: 5.3.0 + resolution: "archiver@npm:5.3.0" dependencies: archiver-utils: ^2.1.0 - async: ^3.2.4 + async: ^3.2.0 buffer-crc32: ^0.2.1 readable-stream: ^3.6.0 - readdir-glob: ^1.1.2 + readdir-glob: ^1.0.0 tar-stream: ^2.2.0 zip-stream: ^4.1.0 - checksum: 7d3b9b9b51cf54d88c89fbca9b0847c120bfcf9776c7025c52dd0b62f6603dc63dc0f3f1a09582f936f67e3906b46d58954cc762a255be45e8d3e14e3cb0b0b1 + checksum: 878b275390dbab4a32dc2010fb68447d2750297226002002b27d790058d0e04c7d1566f20cf6f9c5abcca33e946cd36ed11b659c59408dabd852db005c84dfed languageName: node linkType: hard @@ -20673,12 +25020,12 @@ __metadata: linkType: hard "are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" + version: 3.0.0 + resolution: "are-we-there-yet@npm:3.0.0" dependencies: delegates: ^1.0.0 readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + checksum: 348edfdd931b0b50868b55402c01c3f64df1d4c229ab6f063539a5025fd6c5f5bb8a0cab409bbed8d75d34762d22aa91b7c20b4204eb8177063158d9ba792981 languageName: node linkType: hard @@ -20713,20 +25060,11 @@ __metadata: linkType: hard "aria-hidden@npm:^1.1.1": - version: 1.2.4 - resolution: "aria-hidden@npm:1.2.4" + version: 1.2.3 + resolution: "aria-hidden@npm:1.2.3" dependencies: tslib: ^2.0.0 - checksum: 2ac90b70d29c6349d86d90e022cf01f4885f9be193932d943a14127cf28560dd0baf068a6625f084163437a4be0578f513cf7892f4cc63bfe91aa41dce27c6b2 - languageName: node - linkType: hard - -"aria-query@npm:5.1.3": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" - dependencies: - deep-equal: ^2.0.5 - checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b + checksum: 7d7d211629eef315e94ed3b064c6823d13617e609d3f9afab1c2ed86399bb8e90405f9bdd358a85506802766f3ecb468af985c67c846045a34b973bcc0289db9 languageName: node linkType: hard @@ -20739,14 +25077,33 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0, aria-query@npm:^5.1.3, aria-query@npm:^5.3.2": - version: 5.3.2 - resolution: "aria-query@npm:5.3.2" - checksum: d971175c85c10df0f6d14adfe6f1292409196114ab3c62f238e208b53103686f46cc70695a4f775b73bc65f6a09b6a092fd963c4f3a5a7d690c8fc5094925717 +"aria-query@npm:^5.0.0": + version: 5.0.0 + resolution: "aria-query@npm:5.0.0" + checksum: c41f98866c5a304561ee8cae55856711cddad6f3f85d8cb43cc5f79667078d9b8979ce32d244c1ff364e6463a4d0b6865804a33ccc717fed701b281cf7dc6296 languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": +"aria-query@npm:^5.1.3, aria-query@npm:~5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: ^2.0.5 + checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "array-buffer-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + is-array-buffer: ^3.0.1 + checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "array-buffer-byte-length@npm:1.0.1" dependencies: @@ -20777,7 +25134,47 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": +"array-flatten@npm:^2.1.2": + version: 2.1.2 + resolution: "array-flatten@npm:2.1.2" + checksum: e8988aac1fbfcdaae343d08c9a06a6fddd2c6141721eeeea45c3cf523bf4431d29a46602929455ed548c7a3e0769928cdc630405427297e7081bd118fdec9262 + languageName: node + linkType: hard + +"array-from@npm:^2.1.1": + version: 2.1.1 + resolution: "array-from@npm:2.1.1" + checksum: 4cd5fa27aa6133b99a57c2881d2a8a66ec59b8e17a0c900f7e8ac9a0a2fae450ed682b67435467bfa71ac9328d025a760c5c46a95586a352180c5a79fc13015d + languageName: node + linkType: hard + +"array-includes@npm:^3.1.4": + version: 3.1.4 + resolution: "array-includes@npm:3.1.4" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.19.1 + get-intrinsic: ^1.1.1 + is-string: ^1.0.7 + checksum: 69967c38c52698f84b50a7aed5554aadc89c6ac6399b6d92ad061a5952f8423b4bba054c51d40963f791dfa294d7247cdd7988b6b1f2c5861477031c6386e1c0 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": + version: 3.1.6 + resolution: "array-includes@npm:3.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + get-intrinsic: ^1.1.3 + is-string: ^1.0.7 + checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.7, array-includes@npm:^3.1.8": version: 3.1.8 resolution: "array-includes@npm:3.1.8" dependencies: @@ -20842,7 +25239,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.5": +"array.prototype.findlastindex@npm:^1.2.3": version: 1.2.5 resolution: "array.prototype.findlastindex@npm:1.2.5" dependencies: @@ -20856,7 +25253,19 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": +"array.prototype.flat@npm:^1.3.1": + version: 1.3.1 + resolution: "array.prototype.flat@npm:1.3.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.2": version: 1.3.2 resolution: "array.prototype.flat@npm:1.3.2" dependencies: @@ -20868,7 +25277,19 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.1, array.prototype.flatmap@npm:^1.3.2": +"array.prototype.flatmap@npm:^1.3.1": + version: 1.3.1 + resolution: "array.prototype.flatmap@npm:1.3.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2": version: 1.3.2 resolution: "array.prototype.flatmap@npm:1.3.2" dependencies: @@ -20880,22 +25301,32 @@ __metadata: languageName: node linkType: hard -"array.prototype.reduce@npm:^1.0.6": - version: 1.0.7 - resolution: "array.prototype.reduce@npm:1.0.7" +"array.prototype.toreversed@npm:^1.1.2": + version: 1.1.2 + resolution: "array.prototype.toreversed@npm:1.1.2" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-array-method-boxes-properly: ^1.0.0 - es-errors: ^1.3.0 - es-object-atoms: ^1.0.0 - is-string: ^1.0.7 - checksum: 90303617bd70c8e9a81ebff041d3e10fad1a97f163699cb015b7c84a3f9e6960d9bb161a30f1d0309d6e476f166af5668c1e24f7add3202213d25f7c7f15475d + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + es-shim-unscopables: ^1.0.0 + checksum: 58598193426282155297bedf950dc8d464624a0d81659822fb73124286688644cb7e0e4927a07f3ab2daaeb6617b647736cc3a5e6ca7ade5bb8e573b284e6240 languageName: node linkType: hard -"array.prototype.tosorted@npm:^1.1.1, array.prototype.tosorted@npm:^1.1.4": +"array.prototype.tosorted@npm:^1.1.1": + version: 1.1.1 + resolution: "array.prototype.tosorted@npm:1.1.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + get-intrinsic: ^1.1.3 + checksum: 7923324a67e70a2fc0a6e40237405d92395e45ebd76f5cb89c2a5cf1e66b47aca6baacd0cd628ffd88830b90d47fff268071493d09c9ae123645613dac2c2ca3 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.3, array.prototype.tosorted@npm:^1.1.4": version: 1.1.4 resolution: "array.prototype.tosorted@npm:1.1.4" dependencies: @@ -20956,7 +25387,7 @@ __metadata: languageName: node linkType: hard -"asn1@npm:^0.2.6, asn1@npm:~0.2.3": +"asn1@npm:^0.2.4, asn1@npm:~0.2.3": version: 0.2.6 resolution: "asn1@npm:0.2.6" dependencies: @@ -20965,7 +25396,7 @@ __metadata: languageName: node linkType: hard -"asn1js@npm:^3.0.5": +"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": version: 3.0.5 resolution: "asn1js@npm:3.0.5" dependencies: @@ -20983,7 +25414,19 @@ __metadata: languageName: node linkType: hard -"assert@npm:^2.0.0, assert@npm:^2.1.0": +"assert@npm:^2.0.0": + version: 2.0.0 + resolution: "assert@npm:2.0.0" + dependencies: + es6-object-assign: ^1.1.0 + is-nan: ^1.2.1 + object-is: ^1.0.1 + util: ^0.12.0 + checksum: bb91f181a86d10588ee16c5e09c280f9811373974c29974cbe401987ea34e966699d7989a812b0e19377b511ea0bc627f5905647ce569311824848ede382cae8 + languageName: node + linkType: hard + +"assert@npm:^2.1.0": version: 2.1.0 resolution: "assert@npm:2.1.0" dependencies: @@ -21076,19 +25519,33 @@ __metadata: languageName: node linkType: hard -"async@npm:^2.6.4": - version: 2.6.4 - resolution: "async@npm:2.6.4" +"async@npm:0.9.x": + version: 0.9.2 + resolution: "async@npm:0.9.2" + checksum: 87dbf129292b8a6c32a4e07f43f462498162aa86f404a7e11f978dbfdf75cfb163c26833684bb07b9d436083cd604cbbf730a57bfcbe436c6ae1ed266cdc56bb + languageName: node + linkType: hard + +"async@npm:^2.6.2": + version: 2.6.3 + resolution: "async@npm:2.6.3" dependencies: lodash: ^4.17.14 - checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 + checksum: 5e5561ff8fca807e88738533d620488ac03a5c43fce6c937451f7e35f943d33ad06c24af3f681a48cca3d2b0002b3118faff0a128dc89438a9bf0226f712c499 + languageName: node + linkType: hard + +"async@npm:^3.1.0, async@npm:^3.2.0, async@npm:^3.2.3": + version: 3.2.3 + resolution: "async@npm:3.2.3" + checksum: c4bee57ab2249af3dc83ca3ef9acfa8e822c0d5e5aa41bae3eaf7f673648343cd64ecd7d26091ffd357f3f044428b17b5f00098494b6cf8b6b3e9681f0636ca1 languageName: node linkType: hard -"async@npm:^3.1.0, async@npm:^3.2.0, async@npm:^3.2.3, async@npm:^3.2.4": - version: 3.2.6 - resolution: "async@npm:3.2.6" - checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682 +"async@npm:^3.2.4": + version: 3.2.4 + resolution: "async@npm:3.2.4" + checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 languageName: node linkType: hard @@ -21107,9 +25564,9 @@ __metadata: linkType: hard "attr-accept@npm:^2.2.2": - version: 2.2.4 - resolution: "attr-accept@npm:2.2.4" - checksum: 7b0112e28e3eeb760f4f6bd4ecd8b2467fdb5df7d38d5f8b0a9e83af892023b1f84c594df337b446d5e5eb3f61e18b0470bd9f3aadf39e7853897cbd82cad20d + version: 2.2.2 + resolution: "attr-accept@npm:2.2.2" + checksum: 496f7249354ab53e522510c1dc8f67a1887382187adde4dc205507d2f014836a247073b05e9d9ea51e2e9c7f71b0d2aa21730af80efa9af2d68303e5f0565c4d languageName: node linkType: hard @@ -21121,20 +25578,27 @@ __metadata: linkType: hard "autoprefixer@npm:^10.4.9": - version: 10.4.20 - resolution: "autoprefixer@npm:10.4.20" + version: 10.4.14 + resolution: "autoprefixer@npm:10.4.14" dependencies: - browserslist: ^4.23.3 - caniuse-lite: ^1.0.30001646 - fraction.js: ^4.3.7 + browserslist: ^4.21.5 + caniuse-lite: ^1.0.30001464 + fraction.js: ^4.2.0 normalize-range: ^0.1.2 - picocolors: ^1.0.1 + picocolors: ^1.0.0 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: 187cec2ec356631932b212f76dc64f4419c117fdb2fb9eeeb40867d38ba5ca5ba734e6ceefc9e3af4eec8258e60accdf5cbf2b7708798598fde35cdc3de562d6 + checksum: e9f18e664a4e4a54a8f4ec5f6b49ed228ec45afaa76efcae361c93721795dc5ab644f36d2fdfc0dea446b02a8067b9372f91542ea431994399e972781ed46d95 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.5": + version: 1.0.5 + resolution: "available-typed-arrays@npm:1.0.5" + checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a languageName: node linkType: hard @@ -21212,36 +25676,48 @@ __metadata: languageName: node linkType: hard -"aws4@npm:1.11.0": +"aws4@npm:1.11.0, aws4@npm:^1.8.0": version: 1.11.0 resolution: "aws4@npm:1.11.0" checksum: 5a00d045fd0385926d20ebebcfba5ec79d4482fe706f63c27b324d489a04c68edb0db99ed991e19eda09cb8c97dc2452059a34d97545cebf591d7a2b5a10999f languageName: node linkType: hard -"aws4@npm:^1.10.0, aws4@npm:^1.8.0": +"aws4@npm:^1.10.0": version: 1.13.2 resolution: "aws4@npm:1.13.2" checksum: 9ac924e4a91c088b4928ea86b68d8c4558b0e6289ccabaae0e3e96a611bd75277c2eab6e3965821028768700516f612b929a5ce822f33a8771f74ba2a8cedb9c languageName: node linkType: hard -"axe-core@npm:^4.10.0, axe-core@npm:^4.2.0, axe-core@npm:^4.6.2": - version: 4.10.2 - resolution: "axe-core@npm:4.10.2" - checksum: 2b9b1c93ea73ea9f206604e4e17bd771d2d835f077bde54517d73028b8865c69b209460e73d5b109968cbdb39ab3d28943efa5695189bd79e16421ce1706719e +"axe-core@npm:^4.2.0": + version: 4.4.1 + resolution: "axe-core@npm:4.4.1" + checksum: ad14c5b71059dc3d24ef2519b8cd96e98b4a572379396201ce449d1c4262181821d6ca9550df65b22371faf06d28bbe94d391fe5675f2a08e6550f7b5da8416d + languageName: node + linkType: hard + +"axe-core@npm:^4.6.2": + version: 4.7.2 + resolution: "axe-core@npm:4.7.2" + checksum: 5d86fa0f45213b0e54cbb5d713ce885c4a8fe3a72b92dd915a47aa396d6fd149c4a87fec53aa978511f6d941402256cfeb26f2db35129e370f25a453c688655a + languageName: node + linkType: hard + +"axe-core@npm:^4.9.1": + version: 4.10.0 + resolution: "axe-core@npm:4.10.0" + checksum: 7eca827fd8d98d7e4b561df65437be608155c613d8f262ae9e4a6ade02c156c7362dcbc3f71b4b526edce686f7c686280236bcff1d6725e2ef8327def72a8c41 languageName: node linkType: hard "axios-ntlm@npm:^1.2.0": - version: 1.4.2 - resolution: "axios-ntlm@npm:1.4.2" + version: 1.3.0 + resolution: "axios-ntlm@npm:1.3.0" dependencies: - axios: ^1.6.1 - des.js: ^1.1.0 + axios: ^0.21.3 dev-null: ^0.1.1 - js-md4: ^0.3.2 - checksum: 041a7da753fbc026a054cda7b38947ee1fe93403517d645cc59ca562bc715ea25d3fe83ef728711e6301aaa1648c75bf2ac5a7c97f846115b67b5250e7eb2353 + checksum: e502649f1565ea016372047111464bcd0318e92345261c9448c0462c9958404f78f2386c7ffbcd37d8da012f7501559a49e814b77d3006b48ad017245c27ba50 languageName: node linkType: hard @@ -21256,7 +25732,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:^0.21.1, axios@npm:^0.21.4": +"axios@npm:^0.21.0, axios@npm:^0.21.1, axios@npm:^0.21.3": version: 0.21.4 resolution: "axios@npm:0.21.4" dependencies: @@ -21275,35 +25751,41 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.0.0, axios@npm:^1.4.0, axios@npm:^1.6.0, axios@npm:^1.6.1, axios@npm:^1.7.4, axios@npm:^1.7.7": - version: 1.7.7 - resolution: "axios@npm:1.7.7" +"axios@npm:^1.6.0": + version: 1.7.3 + resolution: "axios@npm:1.7.3" dependencies: follow-redirects: ^1.15.6 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 882d4fe0ec694a07c7f5c1f68205eb6dc5a62aecdb632cc7a4a3d0985188ce3030e0b277e1a8260ac3f194d314ae342117660a151fabffdc5081ca0b5a8b47fe + checksum: bc304d6da974922342aed7c33155934354429cdc7e1ba9d399ab9ff3ac76103f3697eeedf042a634d43cdae682182bcffd942291db42d2be45b750597cdd5eef languageName: node linkType: hard -"axobject-query@npm:^3.1.1": - version: 3.2.4 - resolution: "axobject-query@npm:3.2.4" - checksum: a481d82a5dcd32d8bee17f1480ba3087b34ca9a2f7be30710c31f589fd518968a92d2f224a147e15bc93954fad1ea47f1fbf9f761d6b6b41dbb43fcdffd0bce9 +"axios@npm:^1.6.2": + version: 1.6.8 + resolution: "axios@npm:1.6.8" + dependencies: + follow-redirects: ^1.15.6 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: bf007fa4b207d102459300698620b3b0873503c6d47bf5a8f6e43c0c64c90035a4f698b55027ca1958f61ab43723df2781c38a99711848d232cad7accbcdfcdd languageName: node linkType: hard -"axobject-query@npm:^4.1.0": - version: 4.1.0 - resolution: "axobject-query@npm:4.1.0" - checksum: 7d1e87bf0aa7ae7a76cd39ab627b7c48fda3dc40181303d9adce4ba1d5b5ce73b5e5403ee6626ec8e91090448c887294d6144e24b6741a976f5be9347e3ae1df +"axobject-query@npm:^3.1.1, axobject-query@npm:~3.1.1": + version: 3.1.1 + resolution: "axobject-query@npm:3.1.1" + dependencies: + deep-equal: ^2.0.5 + checksum: c12a5da10dc7bab75e1cda9b6a3b5fcf10eba426ddf1a17b71ef65a434ed707ede7d1c4f013ba1609e970bc8c0cddac01365080d376204314e9b294719acd8a5 languageName: node linkType: hard "b4a@npm:^1.6.4": - version: 1.6.7 - resolution: "b4a@npm:1.6.7" - checksum: afe4e239b49c0ef62236fe0d788ac9bd9d7eac7e9855b0d1835593cd0efcc7be394f9cc28a747a2ed2cdcb0a48c3528a551a196f472eb625457c711169c9efa2 + version: 1.6.4 + resolution: "b4a@npm:1.6.4" + checksum: 81b086f9af1f8845fbef4476307236bda3d660c158c201db976f19cdce05f41f93110ab6b12fd7a2696602a490cc43d5410ee36a56d6eef93afb0d6ca69ac3b2 languageName: node linkType: hard @@ -21400,30 +25882,30 @@ __metadata: linkType: hard "babel-loader@npm:^8.3.0": - version: 8.4.1 - resolution: "babel-loader@npm:8.4.1" + version: 8.3.0 + resolution: "babel-loader@npm:8.3.0" dependencies: find-cache-dir: ^3.3.1 - loader-utils: ^2.0.4 + loader-utils: ^2.0.0 make-dir: ^3.1.0 schema-utils: ^2.6.5 peerDependencies: "@babel/core": ^7.0.0 webpack: ">=2" - checksum: fa02db1a7d3ebb7b4aab83e926fb51e627a00427943c9dd1b3302c8099c67fa6a242a2adeed37d95abcd39ba619edf558a1dec369ce0849c5a87dc290c90fe2f + checksum: d48bcf9e030e598656ad3ff5fb85967db2eaaf38af5b4a4b99d25618a2057f9f100e6b231af2a46c1913206db506115ca7a8cbdf52c9c73d767070dae4352ab5 languageName: node linkType: hard "babel-loader@npm:^9.0.0, babel-loader@npm:^9.1.2": - version: 9.2.1 - resolution: "babel-loader@npm:9.2.1" + version: 9.1.2 + resolution: "babel-loader@npm:9.1.2" dependencies: - find-cache-dir: ^4.0.0 + find-cache-dir: ^3.3.2 schema-utils: ^4.0.0 peerDependencies: "@babel/core": ^7.12.0 webpack: ">=5" - checksum: e1858d7625ad7cc8cabe6bbb8657f957041ffb1308375f359e92aa1654f413bfbb86a281bbf7cd4f7fff374d571c637b117551deac0231d779a198d4e4e78331 + checksum: f0edb8e157f9806b810ba3f2c8ca8fa489d377ae5c2b7b00c2ace900a6925641ce4ec520b9c12f70e37b94aa5366e7003e0f6271b26821643e109966ce741cb7 languageName: node linkType: hard @@ -21444,15 +25926,23 @@ __metadata: linkType: hard "babel-plugin-const-enum@npm:^1.0.1": - version: 1.2.0 - resolution: "babel-plugin-const-enum@npm:1.2.0" + version: 1.0.1 + resolution: "babel-plugin-const-enum@npm:1.0.1" dependencies: "@babel/helper-plugin-utils": ^7.0.0 "@babel/plugin-syntax-typescript": ^7.3.3 - "@babel/traverse": ^7.16.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fc840a71f6717a01b63853b8bc67f75c591ebacfd0d8739c68de02da5d6e48ea38086040427d553726c0e103d2e0ee8b4207827ef26b281247f671f868f78aae + checksum: fc35514e5cf657979c86f5d51e51978f6760b6682a52f11bf1f603ffc5f6bf4752e97bac9b4b27d4a3ee03aacf6d04e0e979417bfe82a652ce4a0216354714c7 + languageName: node + linkType: hard + +"babel-plugin-dynamic-import-node@npm:^2.3.3": + version: 2.3.3 + resolution: "babel-plugin-dynamic-import-node@npm:2.3.3" + dependencies: + object.assign: ^4.1.0 + checksum: c9d24415bcc608d0db7d4c8540d8002ac2f94e2573d2eadced137a29d9eab7e25d2cbb4bc6b9db65cf6ee7430f7dd011d19c911a9a778f0533b4a05ce8292c9b languageName: node linkType: hard @@ -21505,6 +25995,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-jest-hoist@npm:^29.5.0": + version: 29.5.0 + resolution: "babel-plugin-jest-hoist@npm:29.5.0" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.1.14 + "@types/babel__traverse": ^7.0.6 + checksum: 099b5254073b6bc985b6d2d045ad26fb8ed30ff8ae6404c4fe8ee7cd0e98a820f69e3dfb871c7c65aae0f4b65af77046244c07bb92d49ef9005c90eedf681539 + languageName: node + linkType: hard + "babel-plugin-jest-hoist@npm:^29.6.3": version: 29.6.3 resolution: "babel-plugin-jest-hoist@npm:29.6.3" @@ -21552,7 +26054,20 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.10, babel-plugin-polyfill-corejs2@npm:^0.4.3": +"babel-plugin-polyfill-corejs2@npm:^0.3.3": + version: 0.3.3 + resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" + dependencies: + "@babel/compat-data": ^7.17.7 + "@babel/helper-define-polyfill-provider": ^0.3.3 + semver: ^6.1.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7db3044993f3dddb3cc3d407bc82e640964a3bfe22de05d90e1f8f7a5cb71460011ab136d3c03c6c1ba428359ebf635688cd6205e28d0469bba221985f5c6179 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.10": version: 0.4.11 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" dependencies: @@ -21565,7 +26080,33 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.10.6": +"babel-plugin-polyfill-corejs2@npm:^0.4.3": + version: 0.4.3 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.3" + dependencies: + "@babel/compat-data": ^7.17.7 + "@babel/helper-define-polyfill-provider": ^0.4.0 + semver: ^6.1.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 09ba40b9f8ac66a733628b2f12722bb764bdcc4f9600b93d60f1994418a8f84bc4b1ed9ab07c9d288debbf6210413fdff0721a3a43bd89c7f77adf76b0310adc + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.5": + version: 0.4.5 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.5" + dependencies: + "@babel/compat-data": ^7.22.6 + "@babel/helper-define-polyfill-provider": ^0.4.2 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 33a8e06aa54e2858d211c743d179f0487b03222f9ca1bfd7c4865bca243fca942a3358cb75f6bb894ed476cbddede834811fbd6903ff589f055821146f053e1a + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.10.1, babel-plugin-polyfill-corejs3@npm:^0.10.4": version: 0.10.6 resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" dependencies: @@ -21577,26 +26118,72 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs3@npm:^0.6.0": + version: 0.6.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.3.3 + core-js-compat: ^3.25.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 470bb8c59f7c0912bd77fe1b5a2e72f349b3f65bbdee1d60d6eb7e1f4a085c6f24b2dd5ab4ac6c2df6444a96b070ef6790eccc9edb6a2668c60d33133bfb62c6 + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs3@npm:^0.8.1": - version: 0.8.7 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.7" + version: 0.8.1 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.1" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.4.0 + core-js-compat: ^3.30.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c23a581973c141a4687126cf964981180ef27e3eb0b34b911161db4f5caf9ba7ff60bee0ebe46d650ba09e03a6a3ac2cd6a6ae5f4f5363a148470e5cd8447df2 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.8.3": + version: 0.8.3 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.3" dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.4 - core-js-compat: ^3.33.1 + "@babel/helper-define-polyfill-provider": ^0.4.2 + core-js-compat: ^3.31.0 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 51bc215ab0c062bbb2225d912f69f8a6705d1837c8e01f9651307b5b937804287c1d73ebd8015689efcc02c3c21f37688b9ee6f5997635619b7a9cc4b7d9908d + checksum: dcbb30e551702a82cfd4d2c375da2c317658e55f95e9edcda93b9bbfdcc8fb6e5344efcb144e04d3406859e7682afce7974c60ededd9f12072a48a83dd22a0da + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.4.1": + version: 0.4.1 + resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ab0355efbad17d29492503230387679dfb780b63b25408990d2e4cf421012dae61d6199ddc309f4d2409ce4e9d3002d187702700dd8f4f8770ebbba651ed066c languageName: node linkType: hard "babel-plugin-polyfill-regenerator@npm:^0.5.0": - version: 0.5.5 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.5" + version: 0.5.0 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.0" dependencies: - "@babel/helper-define-polyfill-provider": ^0.5.0 + "@babel/helper-define-polyfill-provider": ^0.4.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ef2bcffc7c9a5e4426fc2dbf89bf3a46999a8415c21cd741c3ab3cb4b5ab804aaa3d71ef733f0eda1bcc0b91d9d80f98d33983a66dab9b8bed166ec38f8f8ad1 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.5.2": + version: 0.5.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.2" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.4.2 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 3a9b4828673b23cd648dcfb571eadcd9d3fadfca0361d0a7c6feeb5a30474e92faaa49f067a6e1c05e49b6a09812879992028ff3ef3446229ff132d6e1de7eb6 + checksum: d962200f604016a9a09bc9b4aaf60a3db7af876bb65bcefaeac04d44ac9d9ec4037cf24ce117760cc141d7046b6394c7eb0320ba9665cb4a2ee64df2be187c93 languageName: node linkType: hard @@ -21611,40 +26198,32 @@ __metadata: languageName: node linkType: hard -"babel-plugin-react-compiler@npm:0.0.0-experimental-592953e-20240517": - version: 0.0.0-experimental-592953e-20240517 - resolution: "babel-plugin-react-compiler@npm:0.0.0-experimental-592953e-20240517" - dependencies: - "@babel/generator": 7.2.0 - "@babel/types": ^7.19.0 - chalk: 4 - invariant: ^2.2.4 - pretty-format: ^24 - zod: ^3.22.4 - zod-validation-error: ^2.1.0 - checksum: f21ff9fc0139de33f94482d600542557d34b3ecb5e70e7f765b4b912a3a15d922cd3c5bcd46ffba4a7c0e6a075d6b93629105c2b8d19d8b6ce61ca8000bde653 +"babel-plugin-react-compiler@npm:^0.0.0-experimental-592953e-20240517": + version: 0.0.0 + resolution: "babel-plugin-react-compiler@npm:0.0.0" + checksum: 6413005e947f9ee089359e354ab279956a6c7d979c397b3fcc311fe9d6599a83d4343f2de5cb6aebf38b1ebc1dfdc05b5fe1ea37b84c4ff891b31d6d1d59b899 languageName: node linkType: hard "babel-plugin-react-native-web@npm:~0.19.10": - version: 0.19.13 - resolution: "babel-plugin-react-native-web@npm:0.19.13" - checksum: 899165793b6e3416b87e830633d98b2bec6e29c89d838b86419a5a6e40b7042d3db98098393dfe3fc9be507054f5bcbf83c420cccfe5dc47c7d962acd1d313d5 + version: 0.19.12 + resolution: "babel-plugin-react-native-web@npm:0.19.12" + checksum: bf5378f9ed3477f0165e989cc389da60681032680c5b8147f88905c65bba5267bb296943f87d4885c22a3fcdebfa815f7e7c25ae8f8192c4579f291994a1d946 languageName: node linkType: hard "babel-plugin-styled-components@npm:>= 1.12.0": - version: 2.1.4 - resolution: "babel-plugin-styled-components@npm:2.1.4" + version: 2.0.7 + resolution: "babel-plugin-styled-components@npm:2.0.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-module-imports": ^7.22.5 - "@babel/plugin-syntax-jsx": ^7.22.5 - lodash: ^4.17.21 - picomatch: ^2.3.1 + "@babel/helper-annotate-as-pure": ^7.16.0 + "@babel/helper-module-imports": ^7.16.0 + babel-plugin-syntax-jsx: ^6.18.0 + lodash: ^4.17.11 + picomatch: ^2.3.0 peerDependencies: styled-components: ">= 2" - checksum: d791aed68d975dae4f73055f86cd47afa99cb402b8113acdaf5678c8b6fba2cbc15543f2debe8ed09becb198aae8be2adfe268ad41f4bca917288e073a622bf8 + checksum: 80b06b10db02d749432a0ac43a5feedd686f6b648628d7433a39b1844260b2b7c72431f6e705c82636ee025fcfd4f6c32fc05677e44033b8a39ddcd4488b3147 languageName: node linkType: hard @@ -21710,33 +26289,30 @@ __metadata: linkType: hard "babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" + version: 1.0.1 + resolution: "babel-preset-current-node-syntax@npm:1.0.1" dependencies: "@babel/plugin-syntax-async-generators": ^7.8.4 "@babel/plugin-syntax-bigint": ^7.8.3 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-import-attributes": ^7.24.7 - "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-class-properties": ^7.8.3 + "@babel/plugin-syntax-import-meta": ^7.8.3 "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-numeric-separator": ^7.8.3 "@babel/plugin-syntax-object-rest-spread": ^7.8.3 "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0 - checksum: 9f93fac975eaba296c436feeca1031ca0539143c4066eaf5d1ba23525a31850f03b651a1049caea7287df837a409588c8252c15627ad3903f17864c8e25ed64b + checksum: d118c2742498c5492c095bc8541f4076b253e705b5f1ad9a2e7d302d81a84866f0070346662355c8e25fc02caa28dc2da8d69bcd67794a0d60c4d6fab6913cc8 languageName: node linkType: hard "babel-preset-expo@npm:~11.0.13": - version: 11.0.15 - resolution: "babel-preset-expo@npm:11.0.15" + version: 11.0.13 + resolution: "babel-preset-expo@npm:11.0.13" dependencies: "@babel/plugin-proposal-decorators": ^7.12.9 "@babel/plugin-transform-export-namespace-from": ^7.22.11 @@ -21745,10 +26321,10 @@ __metadata: "@babel/preset-react": ^7.22.15 "@babel/preset-typescript": ^7.23.0 "@react-native/babel-preset": 0.74.87 - babel-plugin-react-compiler: 0.0.0-experimental-592953e-20240517 + babel-plugin-react-compiler: ^0.0.0-experimental-592953e-20240517 babel-plugin-react-native-web: ~0.19.10 react-refresh: ^0.14.2 - checksum: 84e36d06e0ff4fda65d4f5fbed99e29030677e847de0f81fe93ba17772b7887b292d82ec5d77be8c81c8af6a5c46c4f07016a05f0319e949c3b4e48e09cb26e2 + checksum: 6bfc721da903591bf94c73b711ead8ce5d28739fa6b5c893581c4c5f70f164aa6930982300066d412ce81e0c11e9e531e5c339751b05f002a37909e096f54b06 languageName: node linkType: hard @@ -21789,7 +26365,19 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.4.3, babel-preset-jest@npm:^29.6.3": +"babel-preset-jest@npm:^29.4.3": + version: 29.5.0 + resolution: "babel-preset-jest@npm:29.5.0" + dependencies: + babel-plugin-jest-hoist: ^29.5.0 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 5566ca2762766c9319b4973d018d2fa08c0fcf6415c72cc54f4c8e7199e851ea8f5e6c6730f03ed7ed44fc8beefa959dd15911f2647dee47c615ff4faeddb1ad + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" dependencies: @@ -21897,13 +26485,6 @@ __metadata: languageName: node linkType: hard -"bare-events@npm:^2.2.0": - version: 2.5.0 - resolution: "bare-events@npm:2.5.0" - checksum: 5aa10716e7f33c5dfc471fd657eee2a33f2db0f78b3c83b5cdd1a45a7e7871114a69460ea96cd838807c55eb470b9e53dd0dfda8c83cced1352cc8253cebff48 - languageName: node - linkType: hard - "base-64@npm:0.1.0": version: 0.1.0 resolution: "base-64@npm:0.1.0" @@ -21973,45 +26554,34 @@ __metadata: languageName: node linkType: hard -"bfj@npm:^7.0.2": - version: 7.1.0 - resolution: "bfj@npm:7.1.0" +"bfj@npm:^5.2.1": + version: 5.3.1 + resolution: "bfj@npm:5.3.1" dependencies: - bluebird: ^3.7.2 - check-types: ^11.2.3 - hoopy: ^0.1.4 - jsonpath: ^1.1.1 - tryer: ^1.0.1 - checksum: 36da9ed36c60f377a3f43bb0433092af7dc40442914b8155a1330ae86b1905640baf57e9c195ab83b36d6518b27cf8ed880adff663aa444c193be149e027d722 + bluebird: ^3.5.1 + check-types: ^7.3.0 + hoopy: ^0.1.2 + tryer: ^1.0.0 + checksum: c628660d36502bbd3485f952b344340cbec1c2f77e2679c416a6b0043ba80b0e3eb150237cceceecc7bedbd1bb60e2ee66e41e6c76d01aed164c779034afa900 languageName: node linkType: hard -"bfj@npm:^8.0.0": - version: 8.0.0 - resolution: "bfj@npm:8.0.0" +"bfj@npm:^7.0.2": + version: 7.0.2 + resolution: "bfj@npm:7.0.2" dependencies: - bluebird: ^3.7.2 - check-types: ^11.2.3 + bluebird: ^3.5.5 + check-types: ^11.1.1 hoopy: ^0.1.4 - jsonpath: ^1.1.1 tryer: ^1.0.1 - checksum: f22d49cd2661a92e7526015edac0e02858a881a36438fe4e67df320dddc08cba09e197a7e128f282abc2c26127f5abb3ca8e8b7eff0737df20e5b8c4ee6273e9 - languageName: node - linkType: hard - -"bidi-js@npm:^1.0.2": - version: 1.0.3 - resolution: "bidi-js@npm:1.0.3" - dependencies: - require-from-string: ^2.0.2 - checksum: 877c5dcfd69a35fd30fee9e49a03faf205a7a4cd04a38af7648974a659cab7b1cd51fa881d7957c07bd1fc5adf22b90a56da3617bb0885ee69d58ff41117658c + checksum: 0ca673234170eb3dcf00fb1d867ba274729ab05779dd19b35628c49da7adc32472b5f0bca0554ffdca15b094f9b36f16f2a8992ba8884ebd1d351d7f27abee7b languageName: node linkType: hard "big-integer@npm:1.6.x, big-integer@npm:^1.6.44": - version: 1.6.52 - resolution: "big-integer@npm:1.6.52" - checksum: 6e86885787a20fed96521958ae9086960e4e4b5e74d04f3ef7513d4d0ad631a9f3bde2730fc8aaa4b00419fc865f6ec573e5320234531ef37505da7da192c40b + version: 1.6.51 + resolution: "big-integer@npm:1.6.51" + checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 languageName: node linkType: hard @@ -22023,16 +26593,16 @@ __metadata: linkType: hard "bignumber.js@npm:^9.0.0": - version: 9.1.2 - resolution: "bignumber.js@npm:9.1.2" - checksum: 582c03af77ec9cb0ebd682a373ee6c66475db94a4325f92299621d544aa4bd45cb45fd60001610e94aef8ae98a0905fa538241d9638d4422d57abbeeac6fadaf + version: 9.1.1 + resolution: "bignumber.js@npm:9.1.1" + checksum: ad243b7e2f9120b112d670bb3d674128f0bd2ca1745b0a6c9df0433bd2c0252c43e6315d944c2ac07b4c639e7496b425e46842773cf89c6a2dcd4f31e5c4b11e languageName: node linkType: hard "binary-extensions@npm:^2.0.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 languageName: node linkType: hard @@ -22045,10 +26615,10 @@ __metadata: languageName: node linkType: hard -"bintrees@npm:1.0.2": - version: 1.0.2 - resolution: "bintrees@npm:1.0.2" - checksum: 56a52b7d3634e30002b1eda740d2517a22fa8e9e2eb088e919f37c030a0ed86e364ab59e472fc770fc8751308054bb1c892979d150e11d9e11ac33bcc1b5d16e +"bintrees@npm:1.0.1": + version: 1.0.1 + resolution: "bintrees@npm:1.0.1" + checksum: 71d00ce450ee7ad080a3c86ae5f05fac841bdf95c0d78f3b3bbf8f754c19d7cb732f0f9213a46ed27cbec47eb124ffe2b686bef870718a4b9918c23210b55c73 languageName: node linkType: hard @@ -22079,7 +26649,7 @@ __metadata: languageName: node linkType: hard -"bluebird@npm:^3.3.3, bluebird@npm:^3.5.0, bluebird@npm:^3.5.1, bluebird@npm:^3.7.2": +"bluebird@npm:^3.3.3, bluebird@npm:^3.5.0, bluebird@npm:^3.5.1, bluebird@npm:^3.5.5, bluebird@npm:^3.7.2": version: 3.7.2 resolution: "bluebird@npm:3.7.2" checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef @@ -22100,14 +26670,14 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^5.2.1": +"bn.js@npm:^5.0.0, bn.js@npm:^5.2.1": version: 5.2.1 resolution: "bn.js@npm:5.2.1" checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 languageName: node linkType: hard -"body-parser@npm:1.20.1": +"body-parser@npm:1.20.1, body-parser@npm:^1.19.0": version: 1.20.1 resolution: "body-parser@npm:1.20.1" dependencies: @@ -22147,26 +26717,6 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.3, body-parser@npm:^1.19.0": - version: 1.20.3 - resolution: "body-parser@npm:1.20.3" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: 1a35c59a6be8d852b00946330141c4f142c6af0f970faa87f10ad74f1ee7118078056706a05ae3093c54dabca9cd3770fa62a170a85801da1a4324f04381167d - languageName: node - linkType: hard - "body-scroll-lock@npm:^3.1.5": version: 3.1.5 resolution: "body-scroll-lock@npm:3.1.5" @@ -22175,12 +26725,14 @@ __metadata: linkType: hard "bonjour-service@npm:^1.0.11": - version: 1.2.1 - resolution: "bonjour-service@npm:1.2.1" + version: 1.1.1 + resolution: "bonjour-service@npm:1.1.1" dependencies: + array-flatten: ^2.1.2 + dns-equal: ^1.0.0 fast-deep-equal: ^3.1.3 multicast-dns: ^7.2.5 - checksum: b65b3e6e3a07e97f2da5806afb76f3946d5a6426b72e849a0236dc3c9d3612fb8c5359ebade4be7eb63f74a37670c53a53be2ff17f4f709811fda77f600eb25b + checksum: 832d0cf78b91368fac8bb11fd7a714e46f4c4fb1bb14d7283bce614a6fb3aae2f3fe209aba5b4fa051811c1cab6921d073a83db8432fb23292f27dd4161fb0f1 languageName: node linkType: hard @@ -22276,12 +26828,26 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.3, braces@npm:~3.0.2": - version: 3.0.3 - resolution: "braces@npm:3.0.3" +"braces@npm:^3.0.2, braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: ^7.0.1 + checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + languageName: node + linkType: hard + +"brfs@npm:^2.0.2": + version: 2.0.2 + resolution: "brfs@npm:2.0.2" dependencies: - fill-range: ^7.1.1 - checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69 + quote-stream: ^1.0.1 + resolve: ^1.1.5 + static-module: ^3.0.2 + through2: ^2.0.0 + bin: + brfs: bin/cmd.js + checksum: ecde84cb9e1398964c575f265bf5d667bf7277bc9f325c940e4655194a2a65901115cdd1bf33aa1cec102cae0fd3a0e2b852dcf23255b94b1bf2fed652a16285 languageName: node linkType: hard @@ -22315,6 +26881,13 @@ __metadata: languageName: node linkType: hard +"browser-stdout@npm:1.3.1": + version: 1.3.1 + resolution: "browser-stdout@npm:1.3.1" + checksum: b717b19b25952dd6af483e368f9bcd6b14b87740c3d226c2977a65e84666ffd67000bddea7d911f111a9b6ddc822b234de42d52ab6507bce4119a4cc003ef7b3 + languageName: node + linkType: hard + "browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": version: 1.2.0 resolution: "browserify-aes@npm:1.2.0" @@ -22353,13 +26926,12 @@ __metadata: linkType: hard "browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": - version: 4.1.1 - resolution: "browserify-rsa@npm:4.1.1" + version: 4.1.0 + resolution: "browserify-rsa@npm:4.1.0" dependencies: - bn.js: ^5.2.1 - randombytes: ^2.1.0 - safe-buffer: ^5.2.1 - checksum: 2628508646331791c29312bbf274c076a237437a17178ea9bdc75c577fb4164a0da0b137deaadf6ade623701332377c5c2ceb0ff6f991c744a576e790ec95852 + bn.js: ^5.0.0 + randombytes: ^2.0.1 + checksum: 155f0c135873efc85620571a33d884aa8810e40176125ad424ec9d85016ff105a07f6231650914a760cca66f29af0494087947b7be34880dd4599a0cd3c38e54 languageName: node linkType: hard @@ -22463,6 +27035,13 @@ __metadata: languageName: node linkType: hard +"buffer-equal@npm:0.0.1": + version: 0.0.1 + resolution: "buffer-equal@npm:0.0.1" + checksum: ca4b52e6c01143529d957a78cb9a93e4257f172bbab30d9eb87c20ae085ed23c5e07f236ac051202dacbf3d17aba42e1455f84cba21ea79b67d57f2b05e9a613 + languageName: node + linkType: hard + "buffer-fill@npm:^1.0.0": version: 1.0.0 resolution: "buffer-fill@npm:1.0.0" @@ -22471,9 +27050,9 @@ __metadata: linkType: hard "buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + version: 1.1.1 + resolution: "buffer-from@npm:1.1.1" + checksum: ccc53b69736008bff764497367c4d24879ba7122bc619ee499ff47eef3a5b885ca496e87272e7ebffa0bec3804c83f84041c616f6e3318f40624e27c1d80f045 languageName: node linkType: hard @@ -22532,13 +27111,6 @@ __metadata: languageName: node linkType: hard -"buildcheck@npm:~0.0.6": - version: 0.0.6 - resolution: "buildcheck@npm:0.0.6" - checksum: ad61759dc98d62e931df2c9f54ccac7b522e600c6e13bdcfdc2c9a872a818648c87765ee209c850f022174da4dd7c6a450c00357c5391705d26b9c5807c2a076 - languageName: node - linkType: hard - "builtins@npm:^1.0.3": version: 1.0.3 resolution: "builtins@npm:1.0.3" @@ -22546,6 +27118,15 @@ __metadata: languageName: node linkType: hard +"builtins@npm:^5.0.0": + version: 5.0.1 + resolution: "builtins@npm:5.0.1" + dependencies: + semver: ^7.0.0 + checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 + languageName: node + linkType: hard + "bull@npm:4.10.4": version: 4.10.4 resolution: "bull@npm:4.10.4" @@ -22562,6 +27143,15 @@ __metadata: languageName: node linkType: hard +"bundle-name@npm:^3.0.0": + version: 3.0.0 + resolution: "bundle-name@npm:3.0.0" + dependencies: + run-applescript: ^5.0.0 + checksum: edf2b1fbe6096ed32e7566947ace2ea937ee427391744d7510a2880c4b9a5b3543d3f6c551236a29e5c87d3195f8e2912516290e638c15bcbede7b37cc375615 + languageName: node + linkType: hard + "busboy@npm:1.6.0, busboy@npm:^1.0.0, busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" @@ -22592,13 +27182,6 @@ __metadata: languageName: node linkType: hard -"cac@npm:^6.7.14": - version: 6.7.14 - resolution: "cac@npm:6.7.14" - checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a - languageName: node - linkType: hard - "cacache@npm:^15.2.0": version: 15.3.0 resolution: "cacache@npm:15.3.0" @@ -22651,9 +27234,9 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0, cacache@npm:^18.0.2": - version: 18.0.4 - resolution: "cacache@npm:18.0.4" +"cacache@npm:^18.0.2": + version: 18.0.3 + resolution: "cacache@npm:18.0.3" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 @@ -22667,7 +27250,7 @@ __metadata: ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 - checksum: b7422c113b4ec750f33beeca0f426a0024c28e3172f332218f48f963e5b970647fa1ac05679fe5bb448832c51efea9fda4456b9a95c3a1af1105fe6c1833cde2 + checksum: b717fd9b36e9c3279bfde4545c3a8f6d5a539b084ee26a9504d48f83694beb724057d26e090b97540f9cc62bea18b9f6cf671c50e18fb7dac60eda9db691714f languageName: node linkType: hard @@ -22691,7 +27274,7 @@ __metadata: languageName: node linkType: hard -"cache-manager@npm:5.2.3": +"cache-manager@npm:5.2.3, cache-manager@npm:^5.1.0": version: 5.2.3 resolution: "cache-manager@npm:5.2.3" dependencies: @@ -22701,18 +27284,6 @@ __metadata: languageName: node linkType: hard -"cache-manager@npm:^5.1.0": - version: 5.7.6 - resolution: "cache-manager@npm:5.7.6" - dependencies: - eventemitter3: ^5.0.1 - lodash.clonedeep: ^4.5.0 - lru-cache: ^10.2.2 - promise-coalesce: ^1.1.2 - checksum: c61d30e2824f99f04af8e14a2e98c2274daa276cce82f64f0ac4c4bd59cf30e1ad9dec4028148206ad729196b242940476602e2f12496366d6f3f4b9da7c24c5 - languageName: node - linkType: hard - "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" @@ -22721,8 +27292,8 @@ __metadata: linkType: hard "cacheable-request@npm:^7.0.2": - version: 7.0.4 - resolution: "cacheable-request@npm:7.0.4" + version: 7.0.2 + resolution: "cacheable-request@npm:7.0.2" dependencies: clone-response: ^1.0.2 get-stream: ^5.1.0 @@ -22731,18 +27302,39 @@ __metadata: lowercase-keys: ^2.0.0 normalize-url: ^6.0.1 responselike: ^2.0.0 - checksum: 0de9df773fd4e7dd9bd118959878f8f2163867e2e1ab3575ffbecbe6e75e80513dd0c68ba30005e5e5a7b377cc6162bbc00ab1db019bb4e9cb3c2f3f7a6f1ee4 + checksum: 6152813982945a5c9989cb457a6c499f12edcc7ade323d2fbfd759abc860bdbd1306e08096916bb413c3c47e812f8e4c0a0cc1e112c8ce94381a960f115bc77f languageName: node linkType: hard "cachedir@npm:^2.3.0": - version: 2.4.0 - resolution: "cachedir@npm:2.4.0" - checksum: 43198514eaa61f65b5535ed29ad651f22836fba3868ed58a6a87731f05462f317d39098fa3ac778801c25455483c9b7f32a2fcad1f690a978947431f12a0f4d0 + version: 2.3.0 + resolution: "cachedir@npm:2.3.0" + checksum: ec90cb0f2e6336e266aa748dbadf3da9e0b20e843e43f1591acab7a3f1451337dc2f26cb9dd833ae8cfefeffeeb43ef5b5ff62782a685f4e3c2305dd98482fcb languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" + dependencies: + function-bind: ^1.1.1 + get-intrinsic: ^1.0.2 + checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.4": + version: 1.0.5 + resolution: "call-bind@npm:1.0.5" + dependencies: + function-bind: ^1.1.2 + get-intrinsic: ^1.2.1 + set-function-length: ^1.1.1 + checksum: 449e83ecbd4ba48e7eaac5af26fea3b50f8f6072202c2dd7c5a6e7a6308f2421abe5e13a3bbd55221087f76320c5e09f25a8fdad1bab2b77c68ae74d92234ea5 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": version: 1.0.7 resolution: "call-bind@npm:1.0.7" dependencies: @@ -22756,9 +27348,9 @@ __metadata: linkType: hard "call-me-maybe@npm:^1.0.1": - version: 1.0.2 - resolution: "call-me-maybe@npm:1.0.2" - checksum: 42ff2d0bed5b207e3f0122589162eaaa47ba618f79ad2382fe0ba14d9e49fbf901099a6227440acc5946f86a4953e8aa2d242b330b0a5de4d090bb18f8935cae + version: 1.0.1 + resolution: "call-me-maybe@npm:1.0.1" + checksum: d19e9d6ac2c6a83fb1215718b64c5e233f688ebebb603bdfe4af59cde952df1f2b648530fab555bf290ea910d69d7d9665ebc916e871e0e194f47c2e48e4886b languageName: node linkType: hard @@ -22829,26 +27421,27 @@ __metadata: linkType: hard "camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + version: 6.2.0 + resolution: "camelcase@npm:6.2.0" + checksum: 8335cfd0ecc472eae685896a42afd8c9dacd193a91f569120b931c87deb053a1ba82102031b9b48a4dbc1d18066caeacf2e4ace8c3c7f0d02936d348dc0b5a87 languageName: node linkType: hard "camelize@npm:^1.0.0": - version: 1.0.1 - resolution: "camelize@npm:1.0.1" - checksum: 91d8611d09af725e422a23993890d22b2b72b4cabf7239651856950c76b4bf53fe0d0da7c5e4db05180e898e4e647220e78c9fbc976113bd96d603d1fcbfcb99 + version: 1.0.0 + resolution: "camelize@npm:1.0.0" + checksum: 769f8d10071f57b974d9a51dc02f589dd7fb07ea6a7ecde1a57b52ae68657ba61fe85c60d50661b76c7dbb76b6474fbfd3356aee33cf5f025cd7fd6fb2811b73 languageName: node linkType: hard -"camelo@npm:^1.2.1": - version: 1.2.1 - resolution: "camelo@npm:1.2.1" +"camelo@npm:^1.0.0": + version: 1.1.14 + resolution: "camelo@npm:1.1.14" dependencies: + mocha: ^8.2.0 regex-escape: ^3.4.10 uc-first-array: ^1.1.10 - checksum: d2907d58dd3d9956fe56d43bd4e4ac5bd5a84d0a55a1da974d540c6eeb8d41161f0ee3c7380cbc16a989fc423637c948838927b12f084eec989edb62e3f0da20 + checksum: d94eef63c61a130b13ac323a8d8ea17262d203e605cc59566c5d30374b6b33b6f0cc916bdef75e89ce92df9342843a8cc4d051a9cb3e128ec647037f08fc432a languageName: node linkType: hard @@ -22864,10 +27457,17 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001219, caniuse-lite@npm:^1.0.30001579, caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001669 - resolution: "caniuse-lite@npm:1.0.30001669" - checksum: 8ed0c69d0c6aa3b1cbc5ba4e5f5330943e7b7165e257f6955b8b73f043d07ad922265261f2b54d9bbaf02886bbdba5e6f5b16662310a13f91f17035af3212de1 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001219, caniuse-lite@npm:^1.0.30001464": + version: 1.0.30001597 + resolution: "caniuse-lite@npm:1.0.30001597" + checksum: ec6a2cf0fd49f37d16732e6595939fc80a125dcd188a950bc936c61b4ad53becc0fe51bf2d9a625415de7b1cb23bd835f220e8b68d8ab951a940edeea65476fd + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001579": + version: 1.0.30001649 + resolution: "caniuse-lite@npm:1.0.30001649" + checksum: 7952512a243f22c942e0e99249def19d781ad1900db101f2d8de9d83de37db000a7dc7f226c9c99134001975e22852becf1677539c24c7ecae53467b681c400f languageName: node linkType: hard @@ -22944,12 +27544,13 @@ __metadata: linkType: hard "cfb@npm:^1.1.4": - version: 1.2.2 - resolution: "cfb@npm:1.2.2" + version: 1.2.0 + resolution: "cfb@npm:1.2.0" dependencies: - adler-32: ~1.3.0 + adler-32: ~1.2.0 crc-32: ~1.2.0 - checksum: cfb63a7d630a7fa415c1b25655dca66666584f29c95fb0ee90866ada1a28090857827f2ba70a9a50df28bdce05728ae58d495bce417249f305ef7b3c85840024 + printj: ~1.1.2 + checksum: 3c1bb1a7459bdff5a76c4fd39b1845c515634be1ca23a32c5eecd42dfd4f9e96bd162920a9664a9d87bc7082a00fe65d1a755404041def37af5699e7ec776f72 languageName: node linkType: hard @@ -22986,7 +27587,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^1.0.0, chalk@npm:^1.1.3": +"chalk@npm:^1.0.0, chalk@npm:^1.1.1, chalk@npm:^1.1.3": version: 1.1.3 resolution: "chalk@npm:1.1.3" dependencies: @@ -22999,7 +27600,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.1, chalk@npm:^2.4.1, chalk@npm:^2.4.2": +"chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -23139,47 +27740,68 @@ __metadata: languageName: node linkType: hard -"check-types@npm:^11.2.3": - version: 11.2.3 - resolution: "check-types@npm:11.2.3" - checksum: f99ff09ae65e63cfcfa40a1275c0a70d8c43ffbf9ac35095f3bf030cc70361c92e075a9975a1144329e50b4fe4620be6bedb4568c18abc96071a3e23aed3ed8e +"check-types@npm:^11.1.1": + version: 11.1.2 + resolution: "check-types@npm:11.1.2" + checksum: 6c339a5dfe326e34a5275016c7f9464665405cd79007c057852acd677d265ddfe36236ad5567bd1e601ea88fa78bf1f882b6bc3dc7c5616c26f6b54b2c0ef4fc languageName: node linkType: hard -"cheerio-select@npm:^2.1.0": - version: 2.1.0 - resolution: "cheerio-select@npm:2.1.0" +"check-types@npm:^7.3.0": + version: 7.4.0 + resolution: "check-types@npm:7.4.0" + checksum: 1a417a70410b6676cea5a32d5785eefe3e3e9ef814ed6434934cc766a762982007e7ef6e30a9bf92aa0858e266572479eba8a1e894056743e91a9ebdac3c68c3 + languageName: node + linkType: hard + +"cheerio-select@npm:^1.5.0": + version: 1.5.0 + resolution: "cheerio-select@npm:1.5.0" dependencies: - boolbase: ^1.0.0 - css-select: ^5.1.0 - css-what: ^6.1.0 - domelementtype: ^2.3.0 - domhandler: ^5.0.3 - domutils: ^3.0.1 - checksum: 843d6d479922f28a6c5342c935aff1347491156814de63c585a6eb73baf7bb4185c1b4383a1195dca0f12e3946d737c7763bcef0b9544c515d905c5c44c5308b + css-select: ^4.1.3 + css-what: ^5.0.1 + domelementtype: ^2.2.0 + domhandler: ^4.2.0 + domutils: ^2.7.0 + checksum: d4506d8b9ad330a18f9de3a5a22138d0804063e92aac2fc020384cc52ab86d2194d2ae614fc87f0e2a62b6a6dd0c28ad23669cec64331172a9f99ad604863010 languageName: node linkType: hard "cheerio@npm:^1.0.0-rc.3": - version: 1.0.0 - resolution: "cheerio@npm:1.0.0" + version: 1.0.0-rc.10 + resolution: "cheerio@npm:1.0.0-rc.10" dependencies: - cheerio-select: ^2.1.0 - dom-serializer: ^2.0.0 - domhandler: ^5.0.3 - domutils: ^3.1.0 - encoding-sniffer: ^0.2.0 - htmlparser2: ^9.1.0 - parse5: ^7.1.2 - parse5-htmlparser2-tree-adapter: ^7.0.0 - parse5-parser-stream: ^7.1.2 - undici: ^6.19.5 - whatwg-mimetype: ^4.0.0 - checksum: ade4344811dcad5b5d78392506ef6bab1900c13a65222c869e745a38370d287f4b94838ac6d752883a84d937edb62b5bd0deaf70e6f38054acbfe3da4881574a + cheerio-select: ^1.5.0 + dom-serializer: ^1.3.2 + domhandler: ^4.2.0 + htmlparser2: ^6.1.0 + parse5: ^6.0.1 + parse5-htmlparser2-tree-adapter: ^6.0.1 + tslib: ^2.2.0 + checksum: ace2f9c5809737534b1320d11d48762013694fa905b4deacac81a634edac178c1b0534f79d7b1896a88ce489db6cb539f222317996b21c8b6923ce413dcc1a2f languageName: node linkType: hard -"chokidar@npm:3.5.3": +"chokidar@npm:3.5.1": + version: 3.5.1 + resolution: "chokidar@npm:3.5.1" + dependencies: + anymatch: ~3.1.1 + braces: ~3.0.2 + fsevents: ~2.3.1 + glob-parent: ~5.1.0 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.5.0 + dependenciesMeta: + fsevents: + optional: true + checksum: b7774e6e3aeca084d39e8542041555a11452414c744122436101243f89580fad97154ae11525e46bfa816313ae32533e2a88e8587e4d50b14ea716a9e6538978 + languageName: node + linkType: hard + +"chokidar@npm:3.5.3, chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -23198,7 +27820,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.4.2, chokidar@npm:^3.5.1, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": +"chokidar@npm:^3.5.1": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -23217,15 +27839,6 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^4.0.0": - version: 4.0.1 - resolution: "chokidar@npm:4.0.1" - dependencies: - readdirp: ^4.0.1 - checksum: 193da9786b0422a895d59c7552195d15c6c636e6a2293ae43d09e34e243e24ccd02d693f007c767846a65abbeae5fea6bfacb8fc2ddec4ea4d397620d552010d - languageName: node - linkType: hard - "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -23255,9 +27868,11 @@ __metadata: linkType: hard "chrome-trace-event@npm:^1.0.2": - version: 1.0.4 - resolution: "chrome-trace-event@npm:1.0.4" - checksum: fcbbd9dd0cd5b48444319007cc0c15870fd8612cc0df320908aa9d5e8a244084d48571eb28bf3c58c19327d2c5838f354c2d89fac3956d8e992273437401ac19 + version: 1.0.2 + resolution: "chrome-trace-event@npm:1.0.2" + dependencies: + tslib: ^1.9.0 + checksum: a104606fd07e6191848fa15d4031ac41c1715d025074574bdbb27d998a20d75d860a2060a5aca840bfbf97ec2ef6b72df9b387ed4109a8fc6eb5c362477c9294 languageName: node linkType: hard @@ -23268,10 +27883,17 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0, ci-info@npm:^3.3.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 +"ci-info@npm:^3.1.1, ci-info@npm:^3.2.0": + version: 3.3.0 + resolution: "ci-info@npm:3.3.0" + checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 + languageName: node + linkType: hard + +"ci-info@npm:^3.3.0": + version: 3.8.0 + resolution: "ci-info@npm:3.8.0" + checksum: d0a4d3160497cae54294974a7246202244fff031b0a6ea20dd57b10ec510aa17399c41a1b0982142c105f3255aff2173e5c0dd7302ee1b2f28ba3debda375098 languageName: node linkType: hard @@ -23285,19 +27907,24 @@ __metadata: languageName: node linkType: hard -"citty@npm:^0.1.6": - version: 0.1.6 - resolution: "citty@npm:0.1.6" - dependencies: - consola: ^3.2.3 - checksum: 3fbcaaea92d328deddb5aba7d629d9076d4f1aa0338f59db7ea647a8f51eedc14b7f6218c87ad03c9e3c126213ba87d13d7774f9c30d64209f4b074aa83bd6ab +"cjs-module-lexer@npm:^1.0.0": + version: 1.2.2 + resolution: "cjs-module-lexer@npm:1.2.2" + checksum: 977f3f042bd4f08e368c890d91eecfbc4f91da0bc009a3c557bc4dfbf32022ad1141244ac1178d44de70fc9f3dea7add7cd9a658a34b9fae98a55d8f92331ce5 languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.2, cjs-module-lexer@npm:^1.2.3": - version: 1.4.1 - resolution: "cjs-module-lexer@npm:1.4.1" - checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 +"cjs-module-lexer@npm:^1.2.2": + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 5ea3cb867a9bb609b6d476cd86590d105f3cfd6514db38ff71f63992ab40939c2feb68967faa15a6d2b1f90daa6416b79ea2de486e9e2485a6f8b66a21b4fb0a + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.2.3": + version: 1.3.1 + resolution: "cjs-module-lexer@npm:1.3.1" + checksum: 75f20ac264a397ea5c63f9c2343a51ab878043666468f275e94862f7180ec1d764a400ec0c09085dcf0db3193c74a8b571519abd2bf4be0d2be510d1377c8d4b languageName: node linkType: hard @@ -23319,26 +27946,26 @@ __metadata: languageName: node linkType: hard -"classnames@npm:2.2.6": +"classnames@npm:2.2.6, classnames@npm:^2.2.5, classnames@npm:^2.2.6": version: 2.2.6 resolution: "classnames@npm:2.2.6" checksum: 09a4fda780158aa8399079898eabeeca0c48c28641d9e4de140db7412e5e346843039ded1af0152f755afc2cc246ff8c3d6f227bf0dcb004e070b7fa14ec54cc languageName: node linkType: hard -"classnames@npm:^2.2.5, classnames@npm:^2.2.6, classnames@npm:^2.3.1": - version: 2.5.1 - resolution: "classnames@npm:2.5.1" - checksum: da424a8a6f3a96a2e87d01a432ba19315503294ac7e025f9fece656db6b6a0f7b5003bb1fbb51cbb0d9624d964f1b9bb35a51c73af9b2434c7b292c42231c1e5 +"classnames@npm:^2.3.1": + version: 2.3.2 + resolution: "classnames@npm:2.3.2" + checksum: 2c62199789618d95545c872787137262e741f9db13328e216b093eea91c85ef2bfb152c1f9e63027204e2559a006a92eb74147d46c800a9f96297ae1d9f96f4e languageName: node linkType: hard "clean-css@npm:^5.2.2": - version: 5.3.3 - resolution: "clean-css@npm:5.3.3" + version: 5.3.0 + resolution: "clean-css@npm:5.3.0" dependencies: source-map: ~0.6.0 - checksum: 941987c14860dd7d346d5cf121a82fd2caf8344160b1565c5387f7ccca4bbcaf885bace961be37c4f4713ce2d8c488dd89483c1add47bb779790edbfdcc79cbc + checksum: 29e15ef4678e1eb571546128cb7a922c5301c1bd12ee30a6e8141c72789b8130739a9a5b335435a6ee108400336a561ebd9faabe1a7d8808eb48d39cff390cd7 languageName: node linkType: hard @@ -23375,15 +28002,15 @@ __metadata: linkType: hard "cli-color@npm:^2.0.0, cli-color@npm:^2.0.1": - version: 2.0.4 - resolution: "cli-color@npm:2.0.4" + version: 2.0.2 + resolution: "cli-color@npm:2.0.2" dependencies: d: ^1.0.1 - es5-ext: ^0.10.64 + es5-ext: ^0.10.59 es6-iterator: ^2.0.3 memoizee: ^0.4.15 timers-ext: ^0.1.7 - checksum: ac78b5440520072b0220db7ef32958c640f8197c777e0981c6c94233039ab3891dcf5ccfc1fee52f55aa9debb9703d5191657d95e2e135f0a42d2bb737ab9030 + checksum: a1d8cb11128bb02fbffbccc92eb137a1fc280a04c50f125a884c03bfef19b8a0832636d023abd0a1c326618673ee2555785d10261daf65b840ea514da81cfe8e languageName: node linkType: hard @@ -23423,7 +28050,7 @@ __metadata: languageName: node linkType: hard -"cli-highlight@npm:^2.1.11": +"cli-highlight@npm:^2.1.10": version: 2.1.11 resolution: "cli-highlight@npm:2.1.11" dependencies: @@ -23448,14 +28075,21 @@ __metadata: languageName: node linkType: hard -"cli-spinners@npm:2.6.1": +"cli-spinners@npm:2.6.1, cli-spinners@npm:^2.5.0": version: 2.6.1 resolution: "cli-spinners@npm:2.6.1" checksum: 423409baaa7a58e5104b46ca1745fbfc5888bbd0b0c5a626e052ae1387060839c8efd512fb127e25769b3dc9562db1dc1b5add6e0b93b7ef64f477feb6416a45 languageName: node linkType: hard -"cli-spinners@npm:^2.0.0, cli-spinners@npm:^2.5.0, cli-spinners@npm:^2.9.2": +"cli-spinners@npm:^2.0.0": + version: 2.8.0 + resolution: "cli-spinners@npm:2.8.0" + checksum: 42bc69127706144b83b25da27e0719bdd8294efe43018e1736928a8f78a26e8d2b4dcd39af4a6401526ca647e99e302ad2b29bf19e67d1db403b977aca6abeb7 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.9.2": version: 2.9.2 resolution: "cli-spinners@npm:2.9.2" checksum: 1bd588289b28432e4676cb5d40505cfe3e53f2e4e10fbe05c8a710a154d6fe0ce7836844b00d6858f740f2ffe67cdc36e0fce9c7b6a8430e80e6388d5aa4956c @@ -23463,15 +28097,15 @@ __metadata: linkType: hard "cli-table3@npm:^0.6.0, cli-table3@npm:^0.6.1, cli-table3@npm:~0.6.1": - version: 0.6.5 - resolution: "cli-table3@npm:0.6.5" + version: 0.6.2 + resolution: "cli-table3@npm:0.6.2" dependencies: "@colors/colors": 1.5.0 string-width: ^4.2.0 dependenciesMeta: "@colors/colors": optional: true - checksum: ab7afbf4f8597f1c631f3ee6bb3481d0bfeac8a3b81cffb5a578f145df5c88003b6cfff46046a7acae86596fdd03db382bfa67f20973b6b57425505abc47e42c + checksum: 2f82391698b8a2a2a5e45d2adcfea5d93e557207f90455a8d4c1aac688e9b18a204d9eb4ba1d322fa123b17d64ea3dc5e11de8b005529f3c3e7dbeb27cb4d9be languageName: node linkType: hard @@ -23584,11 +28218,11 @@ __metadata: linkType: hard "clone-response@npm:^1.0.2": - version: 1.0.3 - resolution: "clone-response@npm:1.0.3" + version: 1.0.2 + resolution: "clone-response@npm:1.0.2" dependencies: mimic-response: ^1.0.0 - checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e + checksum: 2d0e61547fc66276e0903be9654ada422515f5a15741691352000d47e8c00c226061221074ce2c0064d12e975e84a8687cfd35d8b405750cb4e772f87b256eda languageName: node linkType: hard @@ -23606,7 +28240,14 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^1.1.0, clsx@npm:^1.2.1": +"clsx@npm:^1.1.0": + version: 1.1.1 + resolution: "clsx@npm:1.1.1" + checksum: ff052650329773b9b245177305fc4c4dc3129f7b2be84af4f58dc5defa99538c61d4207be7419405a5f8f3d92007c954f4daba5a7b74e563d5de71c28c830063 + languageName: node + linkType: hard + +"clsx@npm:^1.2.1": version: 1.2.1 resolution: "clsx@npm:1.2.1" checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 @@ -23614,16 +28255,16 @@ __metadata: linkType: hard "clsx@npm:^2.0.0": - version: 2.1.1 - resolution: "clsx@npm:2.1.1" - checksum: acd3e1ab9d8a433ecb3cc2f6a05ab95fe50b4a3cfc5ba47abb6cbf3754585fcb87b84e90c822a1f256c4198e3b41c7f6c391577ffc8678ad587fc0976b24fd57 + version: 2.0.0 + resolution: "clsx@npm:2.0.0" + checksum: a2cfb2351b254611acf92faa0daf15220f4cd648bdf96ce369d729813b85336993871a4bf6978ddea2b81b5a130478339c20d9d0b5c6fc287e5147f0c059276e languageName: node linkType: hard "cluster-key-slot@npm:^1.1.0": - version: 1.1.2 - resolution: "cluster-key-slot@npm:1.1.2" - checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681 + version: 1.1.0 + resolution: "cluster-key-slot@npm:1.1.0" + checksum: fc953c75209b1ef9088081bab4e40a0b2586491c974ab93460569c014515ca5a2e31c043f185285e177007162fc353d07836d98f570c171dbe055775430e495b languageName: node linkType: hard @@ -23649,8 +28290,8 @@ __metadata: linkType: hard "code-push@npm:^4.2.1": - version: 4.2.2 - resolution: "code-push@npm:4.2.2" + version: 4.2.1 + resolution: "code-push@npm:4.2.1" dependencies: appcenter-file-upload-client: 0.1.0 proxy-agent: ^6.3.0 @@ -23658,14 +28299,14 @@ __metadata: slash: ^3.0.0 superagent: ^8.0.0 yazl: ^2.5.1 - checksum: bf34b3772e19f2741f1f37205656247d87c1b51fb9270465f120a009aba19d95473e65496a710d194afcf3deaea6e100d409e02c3a1109878827f5b6c984110c + checksum: b62c319f3cef8cc99023a42c69ccbae8a33e4e831a5be8dace85722be4dc4b97d9ef2be586ec06bc4a1a8e97707b18b9885e1a176cdc898711ae68d2a51c9b15 languageName: node linkType: hard "codemirror@npm:^5.65.11": - version: 5.65.18 - resolution: "codemirror@npm:5.65.18" - checksum: 950015d587e0790cceae157423bbc70bf1da8256050c8f6739fe967045b050e22c63b332de6388ed6d9526d253a834806ace76c875006fc8078e2c15c9f275a7 + version: 5.65.16 + resolution: "codemirror@npm:5.65.16" + checksum: 1c5036bfffcce19b1ff91d8b158dcb45faba27047c4093f55ea7ad1165975179eb47c9ef604baa9c4f4ea6bf9817886c767f33e72fa9c62710404029be3c4744 languageName: node linkType: hard @@ -23697,9 +28338,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da + version: 1.0.1 + resolution: "collect-v8-coverage@npm:1.0.1" + checksum: 4efe0a1fccd517b65478a2364b33dadd0a43fc92a56f59aaece9b6186fe5177b2de471253587de7c91516f07c7268c2f6770b6cbcffc0e0ece353b766ec87e55 languageName: node linkType: hard @@ -23735,7 +28376,7 @@ __metadata: languageName: node linkType: hard -"color-string@npm:^1.6.0, color-string@npm:^1.9.0, color-string@npm:^1.9.1": +"color-string@npm:^1.5.3, color-string@npm:^1.6.0, color-string@npm:^1.9.0": version: 1.9.1 resolution: "color-string@npm:1.9.1" dependencies: @@ -23774,27 +28415,34 @@ __metadata: languageName: node linkType: hard -"colord@npm:^2.9.3": +"colord@npm:^2.9.1": version: 2.9.3 resolution: "colord@npm:2.9.3" checksum: 95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 languageName: node linkType: hard -"colorette@npm:^1.0.7, colorette@npm:^1.2.0, colorette@npm:^1.2.2": +"colorette@npm:^1.0.7, colorette@npm:^1.2.0, colorette@npm:^1.2.2, colorette@npm:^1.4.0": version: 1.4.0 resolution: "colorette@npm:1.4.0" checksum: 01c3c16058b182a4ab4c126a65a75faa4d38a20fa7c845090b25453acec6c371bb2c5dceb0a2338511f17902b9d1a9af0cadd8509c9403894b79311032c256c3 languageName: node linkType: hard -"colorette@npm:^2.0.10, colorette@npm:^2.0.16, colorette@npm:^2.0.20": +"colorette@npm:^2.0.10, colorette@npm:^2.0.19, colorette@npm:^2.0.20": version: 2.0.20 resolution: "colorette@npm:2.0.20" checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d languageName: node linkType: hard +"colorette@npm:^2.0.16": + version: 2.0.19 + resolution: "colorette@npm:2.0.19" + checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 + languageName: node + linkType: hard + "colorspace@npm:1.1.x": version: 1.1.4 resolution: "colorspace@npm:1.1.4" @@ -23845,13 +28493,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^10.0.0": - version: 10.0.1 - resolution: "commander@npm:10.0.1" - checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 - languageName: node - linkType: hard - "commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.20.3": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -23914,20 +28555,20 @@ __metadata: languageName: node linkType: hard -"common-path-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "common-path-prefix@npm:3.0.0" - checksum: fdb3c4f54e51e70d417ccd950c07f757582de800c0678ca388aedefefc84982039f346f9fd9a1252d08d2da9e9ef4019f580a1d1d3a10da031e4bb3c924c5818 - languageName: node - linkType: hard - -"common-tags@npm:1.8.2, common-tags@npm:^1.8.0": +"common-tags@npm:1.8.2": version: 1.8.2 resolution: "common-tags@npm:1.8.2" checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff languageName: node linkType: hard +"common-tags@npm:^1.8.0": + version: 1.8.0 + resolution: "common-tags@npm:1.8.0" + checksum: fb0cc9420d149176f2bd2b1fc9e6df622cd34eccaca60b276aa3253a7c9241e8a8ed1ec0702b2679eba7e47aeef721869c686bbd7257b75b5c44993c8462cd7f + languageName: node + linkType: hard + "commondir@npm:^1.0.1": version: 1.0.1 resolution: "commondir@npm:1.0.1" @@ -23943,40 +28584,50 @@ __metadata: linkType: hard "component-emitter@npm:^1.2.0, component-emitter@npm:^1.3.0": - version: 1.3.1 - resolution: "component-emitter@npm:1.3.1" - checksum: 94550aa462c7bd5a61c1bc480e28554aa306066930152d1b1844a0dd3845d4e5db7e261ddec62ae184913b3e59b55a2ad84093b9d3596a8f17c341514d6c483d + version: 1.3.0 + resolution: "component-emitter@npm:1.3.0" + checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b languageName: node linkType: hard "component-type@npm:^1.2.1": - version: 1.2.2 - resolution: "component-type@npm:1.2.2" - checksum: ca5a9886a961985b9ebcc0a5b23f2526506eced1c2c932648e5f8960db22fffcc3a77442013c6aef0b5afa8e6b9de02ae2a23ce5c967374edaf99d74fd6d6c3e + version: 1.2.1 + resolution: "component-type@npm:1.2.1" + checksum: 41a81f87425088c072dc99b7bd06d8c81057047a599955572bfa7f320e1f4d0b38422b2eee922e0ac6e4132376c572673dbf5eb02717898173ec11512bc06b34 languageName: node linkType: hard -"compress-commons@npm:^4.1.2": - version: 4.1.2 - resolution: "compress-commons@npm:4.1.2" +"compress-brotli@npm:^1.3.8": + version: 1.3.8 + resolution: "compress-brotli@npm:1.3.8" + dependencies: + "@types/json-buffer": ~3.0.0 + json-buffer: ~3.0.1 + checksum: de7589d692d40eb362f6c91070b5e51bc10b05a89eabb4a7c76c1aa21b625756f8c101c6999e4df0c4dc6199c5ca2e1353573bfdcca5615810f27485394162a5 + languageName: node + linkType: hard + +"compress-commons@npm:^4.1.0": + version: 4.1.1 + resolution: "compress-commons@npm:4.1.1" dependencies: buffer-crc32: ^0.2.13 crc32-stream: ^4.0.2 normalize-path: ^3.0.0 readable-stream: ^3.6.0 - checksum: b50c4b5d6b8917ea164eef81d414b1824f27e02427f9266926c80aad55f9e15f81f74c274770773c2b732c22d1081b81dedce4f133271a466151f7f36b8e9dc9 + checksum: 0176483211a7304a4a8aa52dbcc149a4c9181ac8a04bfbcc3d1a379174bf5fa56c3b15cec19e5ae3d31f1b1ce35ebb275b792b867000c77bac7162ce4e0ca268 languageName: node linkType: hard "compress-commons@npm:^5.0.1": - version: 5.0.3 - resolution: "compress-commons@npm:5.0.3" + version: 5.0.1 + resolution: "compress-commons@npm:5.0.1" dependencies: crc-32: ^1.2.0 crc32-stream: ^5.0.0 normalize-path: ^3.0.0 readable-stream: ^3.6.0 - checksum: a88c58bbde4859036396209d36928003ea3494c713e9476af51c2f720d299b96c46ed966a86707aa5dc07672c850291ed1a6802ce37dd2b532f9733b600f00b7 + checksum: 65a68e56211a8d1dbe9dab0d35f1bd60a4df27aa01e6c3f0883080263e228c460758bab4f083637a380d4a96d2326722972a42ea1951360cc69728a3915f209f languageName: node linkType: hard @@ -24004,7 +28655,14 @@ __metadata: languageName: node linkType: hard -"compute-scroll-into-view@npm:^1.0.13, compute-scroll-into-view@npm:^1.0.17, compute-scroll-into-view@npm:^1.0.20": +"compute-scroll-into-view@npm:^1.0.13, compute-scroll-into-view@npm:^1.0.16": + version: 1.0.17 + resolution: "compute-scroll-into-view@npm:1.0.17" + checksum: b20c05a10c37813c5a6e4bf053c00f65c88d23afed7a6bd7a2a69e05e2ffc2df3483ecfe407d36bf16b8cec8be21ae1966c9c523093a03117e567156cd79a51e + languageName: node + linkType: hard + +"compute-scroll-into-view@npm:^1.0.17": version: 1.0.20 resolution: "compute-scroll-into-view@npm:1.0.20" checksum: f15fab29221953620735393ac1866541aab0d27d28078bedbba071a291ee9c8cc1a72bee302cf0bc06ed83c5e55afb74ebcbd634a63671ba33cf1fb1c51d3308 @@ -24025,7 +28683,7 @@ __metadata: languageName: node linkType: hard -"concat-stream@npm:^1.4.7, concat-stream@npm:^1.5.2, concat-stream@npm:^1.6.2": +"concat-stream@npm:^1.4.7, concat-stream@npm:^1.5.2, concat-stream@npm:^1.6.2, concat-stream@npm:~1.6.0": version: 1.6.2 resolution: "concat-stream@npm:1.6.2" dependencies: @@ -24037,13 +28695,6 @@ __metadata: languageName: node linkType: hard -"confbox@npm:^0.1.8": - version: 0.1.8 - resolution: "confbox@npm:0.1.8" - checksum: 5c7718ab22cf9e35a31c21ef124156076ae8c9dc65e6463d54961caf5a1d529284485a0fdf83fd23b27329f3b75b0c8c07d2e36c699f5151a2efe903343f976a - languageName: node - linkType: hard - "config-chain@npm:^1.1.13": version: 1.1.13 resolution: "config-chain@npm:1.1.13" @@ -24095,9 +28746,9 @@ __metadata: linkType: hard "confusing-browser-globals@npm:^1.0.9": - version: 1.0.11 - resolution: "confusing-browser-globals@npm:1.0.11" - checksum: 3afc635abd37e566477f610e7978b15753f0e84025c25d49236f1f14d480117185516bdd40d2a2167e6bed8048641a9854964b9c067e3dcdfa6b5d0ad3c3a5ef + version: 1.0.10 + resolution: "confusing-browser-globals@npm:1.0.10" + checksum: 7ccdc44c2ca419cf6576c3e4336106e18d1c5337f547e461342f51aec4a10f96fdfe45414b522be3c7d24ea0b62bf4372cd37768022e4d6161707ffb2c0987e6 languageName: node linkType: hard @@ -24127,13 +28778,6 @@ __metadata: languageName: node linkType: hard -"consola@npm:^3.2.3": - version: 3.2.3 - resolution: "consola@npm:3.2.3" - checksum: 32ec70e177dd2385c42e38078958cc7397be91db21af90c6f9faa0b16168b49b1c61d689338604bbb2d64370b9347a35f42a9197663a913d3a405bb0ce728499 - languageName: node - linkType: hard - "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -24141,6 +28785,15 @@ __metadata: languageName: node linkType: hard +"consolidate@npm:^0.16.0": + version: 0.16.0 + resolution: "consolidate@npm:0.16.0" + dependencies: + bluebird: ^3.7.2 + checksum: f17164ffb2c4f79b4cbf685f1c76a49f59d329a40954b436425498861dc137b46fe821b2aadafa2dcfeb7eebd46846f35bd2c36b4a704d38521b4210a22a7515 + languageName: node + linkType: hard + "constant-case@npm:^3.0.4": version: 3.0.4 resolution: "constant-case@npm:3.0.4" @@ -24168,7 +28821,7 @@ __metadata: languageName: node linkType: hard -"constate@npm:^3.3.2": +"constate@npm:^3.2.0": version: 3.3.2 resolution: "constate@npm:3.3.2" peerDependencies: @@ -24186,23 +28839,30 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": +"content-type@npm:~1.0.4": + version: 1.0.4 + resolution: "content-type@npm:1.0.4" + checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 + languageName: node + linkType: hard + +"content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 languageName: node linkType: hard -"contentful-batch-libs@npm:^9.0.1, contentful-batch-libs@npm:^9.4.1": - version: 9.7.0 - resolution: "contentful-batch-libs@npm:9.7.0" +"contentful-batch-libs@npm:^9.0.1": + version: 9.0.1 + resolution: "contentful-batch-libs@npm:9.0.1" dependencies: - date-fns: ^2.28.0 - figures: 3.2.0 - https-proxy-agent: ^7.0.2 - lodash.clonedeep: ^4.5.0 - uuid: ^9.0.1 - checksum: bdf76d66cd9ec55152d25c3781638849d7f097f4e9746c72f55a873d9bd2027c0afac01da1fc3048b3b6078e03afddb1d748503307788a3bf44e8691daa196a0 + bfj: ^5.2.1 + figures: ^2.0.0 + https-proxy-agent: ^3.0.0 + lodash: ^4.0.1 + moment: ^2.18.1 + checksum: 68425d949db27f5c1b4c3ff8e71460de7a97d65757c91df25e384fe50784915ed69b95e4f80153891a3bd392f9ba26e1aa30f01a16ade97791d9ac71605b9300 languageName: node linkType: hard @@ -24253,34 +28913,35 @@ __metadata: linkType: hard "contentful-export@npm:^7.10.17": - version: 7.19.158 - resolution: "contentful-export@npm:7.19.158" + version: 7.11.12 + resolution: "contentful-export@npm:7.11.12" dependencies: - bfj: ^8.0.0 + bfj: ^7.0.2 bluebird: ^3.3.3 cli-table3: ^0.6.0 - contentful: ^11.0.3 - contentful-batch-libs: ^9.4.1 - contentful-management: ^11.0.1 - date-fns: ^4.1.0 + contentful: ^8.1.7 + contentful-batch-libs: ^9.0.1 + contentful-management: ^7.3.1 + echo-cli: ^1.0.8 figures: ^3.2.0 - jsonwebtoken: ^9.0.0 + fs-extra: ^9.0.0 listr: ^0.14.1 listr-update-renderer: ^0.5.0 listr-verbose-renderer: ^0.6.0 - lodash.startcase: ^4.4.0 - mkdirp: ^2.0.0 - node-fetch: ^2.6.7 - yargs: ^17.1.1 + lodash: ^4.17.10 + mkdirp: ^1.0.3 + moment: ^2.22.2 + request: ^2.87.0 + yargs: ^15.3.1 bin: contentful-export: bin/contentful-export - checksum: ae96cc3c11f04653aba2c7404abd102f7581ebe1c532d125759e9af8830ee12d7db624bb4e9b7b78af9078a394a58c0c368c482901f4687e389b32cdb4e3147b + checksum: c48261ef3fd3188001fa590b905af5eb220102c71fe663bd16c20bf1a517fd23aa971b2ea21075fb635d69b819ca9d32c255f9eaafdad50edd00a8cfa352d663 languageName: node linkType: hard "contentful-import@npm:^7.9.23": - version: 7.9.42 - resolution: "contentful-import@npm:7.9.42" + version: 7.9.41 + resolution: "contentful-import@npm:7.9.41" dependencies: bluebird: ^3.5.1 cli-table3: ^0.6.0 @@ -24296,7 +28957,7 @@ __metadata: yargs: ^16.0.3 bin: contentful-import: bin/contentful-import - checksum: f8dbf925d19af347606d18276628fa03dc29f397a70379370ca56b469006e5f3a48c87a60830420642e1d3f59a84af25a1205c7f0962612cd10d9dc51e448c70 + checksum: 633671da230e8633c36835fc172d6926d6074fe8b25f74045d9a80a00d3a5cad2009ac8e3a2f0315569795d3c8f08d75bb9af10413e2d2e0269dccbc98e89ef4 languageName: node linkType: hard @@ -24313,119 +28974,115 @@ __metadata: languageName: node linkType: hard -"contentful-management@npm:>=7.30.0, contentful-management@npm:^10.0.0 || ^11.0.0, contentful-management@npm:^11.0.1, contentful-management@npm:^11.35.1": - version: 11.35.1 - resolution: "contentful-management@npm:11.35.1" +"contentful-management@npm:>=7.30.0, contentful-management@npm:^10.14.0": + version: 10.30.0 + resolution: "contentful-management@npm:10.30.0" dependencies: - "@contentful/rich-text-types": ^16.6.1 - axios: ^1.7.4 - contentful-sdk-core: ^8.3.1 + "@types/json-patch": 0.0.30 + axios: ^0.27.1 + contentful-sdk-core: ^7.0.1 fast-copy: ^3.0.0 - checksum: 36d01911f9c2a666c08948b40c5dd4865bc139ef68179e49fd238729ee3d2857020b819543bbe16d9c74dac1f8927739865ae0cafe49cddde556cb44a41fd624 + lodash.isplainobject: ^4.0.6 + type-fest: ^3.0.0 + checksum: efac280b42717d03f14a0835b37ec25596e3ac14fce771497d13bf7895c27ed2f5b46c6b234b5587a1ee00392748f12de57eee70111847e00f78d7f5e8f8423a languageName: node linkType: hard -"contentful-management@npm:^10.14.0": - version: 10.46.4 - resolution: "contentful-management@npm:10.46.4" +"contentful-management@npm:^10.0.0 || ^11.0.0, contentful-management@npm:^10.14.0 || ^11.0.0": + version: 11.25.0 + resolution: "contentful-management@npm:11.25.0" dependencies: "@contentful/rich-text-types": ^16.3.0 "@types/json-patch": 0.0.30 - axios: ^1.4.0 + axios: ^1.6.2 contentful-sdk-core: ^8.1.0 fast-copy: ^3.0.0 lodash.isplainobject: ^4.0.6 type-fest: ^4.0.0 - checksum: 8604823a4958578f5fc48c7bbda193905945afbd6df4e778ffc343b676163a23cb6b0b807d1b46582ca3ca47a920a0cf18337e3125b61979390be50faa6ab77a + checksum: 43a3522b89df6f584d211af57ceb9c6447ceef0b1c07f52e1131f44bb60713f419fcbffbfa3cc7d8935da422fd93c9909f59ec0f46e41fc5a72db0b2b1abfdd7 languageName: node linkType: hard "contentful-management@npm:^7.3.1": - version: 7.54.2 - resolution: "contentful-management@npm:7.54.2" + version: 7.11.0 + resolution: "contentful-management@npm:7.11.0" dependencies: - "@types/json-patch": 0.0.30 - axios: ^0.21.4 - contentful-sdk-core: ^6.10.4 + axios: ^0.21.0 + contentful-sdk-core: ^6.7.0 fast-copy: ^2.1.0 lodash.isplainobject: ^4.0.6 - type-fest: ^2.5.3 - checksum: 4e602f3c99d4de7000246c5478bc06bb32aafae27e57285a1df2b59100f7090f9815c52c29342929a6dd6c709fe360608317e3b2bd6d854758ec3e1766bfdd95 + type-fest: 0.20.2 + checksum: d6cbc5fb86f4fe9d057b0a54f9295463c72e5af55837bf59aad8c628922e0f4b852943bdf4bfe5d9300484b28b965d6d95cbf17608057e6e4065c0c8f74234cf languageName: node linkType: hard "contentful-migration@npm:^4.0.0": - version: 4.25.2 - resolution: "contentful-migration@npm:4.25.2" + version: 4.0.10 + resolution: "contentful-migration@npm:4.0.10" dependencies: - "@hapi/hoek": ^11.0.4 - axios: ^1.7.7 + axios: ^0.21.0 bluebird: ^3.7.2 callsites: ^3.1.0 cardinal: ^2.1.1 chalk: ^4.0.0 - contentful-management: ^11.35.1 - didyoumean2: ^5.0.0 + contentful-management: ^7.3.1 + didyoumean2: ^4.0.0 + hoek: ^6.1.3 https-proxy-agent: ^5.0.0 - inquirer: ^8.1.2 - joi: ^17.4.0 + inquirer: ^7.1.0 + joi: ^10.6.0 kind-of: ^6.0.3 - listr2: ^3.13.5 + listr: ^0.14.3 lodash: ^4.17.15 - p-throttle: ^4.1.1 - uuid: ^10.0.0 yargs: ^15.3.1 bin: contentful-migration: bin/contentful-migration - checksum: 352cef20fb6c96ca3348647577f724f154fd262b8b605f70aba73ba386938519616c7394655a8334cda798bb243afce428487095d558c7b90954ad32bd146d1c + checksum: 1b2b6c269cc87f1ea1cb3b78602a064a5d03e143a4600479fd252534c5b8404ef62bcf2f043888ad79c498f3fb180e754b894892d5f7c66c71fe199bdc72b47c languageName: node linkType: hard -"contentful-resolve-response@npm:^1.3.0, contentful-resolve-response@npm:^1.9.0": - version: 1.9.0 - resolution: "contentful-resolve-response@npm:1.9.0" +"contentful-resolve-response@npm:^1.3.0": + version: 1.3.0 + resolution: "contentful-resolve-response@npm:1.3.0" dependencies: - fast-copy: ^2.1.7 - checksum: c9f211eb6310cfc894384db55fe4d4a371cb2f898fbcad8e4a826f2b6d0a788870edadab1bdc48222c9a85125eb066101851c76e1e25e70a240380dbf6daaa1f + fast-copy: ^2.1.0 + checksum: b089487a71e502de97c86dd41c0edae45ced9b6985ffc1a81a79c689f7425db6a0210e5fa8ac9de74559b16d58564cac77274a83ad12d9401e360bd96484d5b5 languageName: node linkType: hard -"contentful-sdk-core@npm:^6.10.4, contentful-sdk-core@npm:^6.5.0": - version: 6.11.0 - resolution: "contentful-sdk-core@npm:6.11.0" +"contentful-sdk-core@npm:^6.5.0, contentful-sdk-core@npm:^6.7.0": + version: 6.7.0 + resolution: "contentful-sdk-core@npm:6.7.0" dependencies: fast-copy: ^2.1.0 - lodash.isplainobject: ^4.0.6 - lodash.isstring: ^4.0.1 - p-throttle: ^4.1.1 qs: ^6.9.4 - checksum: 69ec31d085b1c1b69f5e6f9f5195c6cd60081a70ed85de6c093db2e37745cbc6cef1735bf707758d2ed8a55e7c14969395d999c416238c530d75abe7ef3f5a60 + checksum: 571f652703e99bd402a184e2e55958cc41ef3750ba66113834fcb38bd914d6e5415c50edc20eb9e8da7bec77c90faaf0e5aa2f02997edd32f271acb8ec255429 languageName: node linkType: hard "contentful-sdk-core@npm:^7.0.1": - version: 7.1.0 - resolution: "contentful-sdk-core@npm:7.1.0" + version: 7.0.2 + resolution: "contentful-sdk-core@npm:7.0.2" dependencies: - fast-copy: ^2.1.7 + fast-copy: ^2.1.3 lodash.isplainobject: ^4.0.6 lodash.isstring: ^4.0.1 p-throttle: ^4.1.1 qs: ^6.9.4 - checksum: 9f31cef7f2d7a6247ec5473315ed9c5574d93f8afb9748bfbf2439b2c54552b3689cb48ff7512f05fdc4930b2d19363b2a7f6cea0c426d8d5cfe71b9987427e8 + checksum: 1893ecbeab7ca1e0c13f3c210b5381f8abd9f3debe25a1e589adcbf4514dfb2bbeb6fed4c0e8b8238fcad73bedafaae3c76f3c41041880104b53087357780baf languageName: node linkType: hard -"contentful-sdk-core@npm:^8.1.0, contentful-sdk-core@npm:^8.3.1": - version: 8.3.2 - resolution: "contentful-sdk-core@npm:8.3.2" +"contentful-sdk-core@npm:^8.1.0": + version: 8.1.2 + resolution: "contentful-sdk-core@npm:8.1.2" dependencies: fast-copy: ^2.1.7 lodash.isplainobject: ^4.0.6 lodash.isstring: ^4.0.1 p-throttle: ^4.1.1 qs: ^6.11.2 - checksum: 28a241562dace2be93e9059d7487e27290db347dc9b6884ce058909fd900f22e827219dcab01ed23bf01ca64787c754e213bc7265ccef905573e49dce26c8d2c + checksum: 146a31ce1eba65394026293a35179e5a3a390dbb7924c9530f6f0689f03c5d177b3e972e9b7890ed815eb1b1133a49912adcf977903647e00405be3770693de1 languageName: node linkType: hard @@ -24436,7 +29093,7 @@ __metadata: languageName: node linkType: hard -"contentful@npm:8.2.0": +"contentful@npm:8.2.0, contentful@npm:^8.1.7": version: 8.2.0 resolution: "contentful@npm:8.2.0" dependencies: @@ -24449,25 +29106,12 @@ __metadata: languageName: node linkType: hard -"contentful@npm:^11.0.3": - version: 11.1.4 - resolution: "contentful@npm:11.1.4" +"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.5.1, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": + version: 1.8.0 + resolution: "convert-source-map@npm:1.8.0" dependencies: - "@contentful/content-source-maps": ^0.11.0 - "@contentful/rich-text-types": ^16.6.1 - axios: ^1.7.4 - contentful-resolve-response: ^1.9.0 - contentful-sdk-core: ^8.3.1 - json-stringify-safe: ^5.0.1 - type-fest: ^4.0.0 - checksum: 11d7186d8275f686493d943a7443c94c7b7cf0c2c575eb19fb2278f2991c1a14bd6ae5d44d78e5cdc31df43bcd72db2d8c73eee880482fba5ab46eff2ed7c957 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 + safe-buffer: ~5.1.1 + checksum: 985d974a2d33e1a2543ada51c93e1ba2f73eaed608dc39f229afc78f71dcc4c8b7d7c684aa647e3c6a3a204027444d69e53e169ce94e8d1fa8d7dee80c9c8fed languageName: node linkType: hard @@ -24533,13 +29177,6 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.7.1": - version: 0.7.1 - resolution: "cookie@npm:0.7.1" - checksum: cec5e425549b3650eb5c3498a9ba3cde0b9cd419e3b36e4b92739d30b4d89e0b678b98c1ddc209ce7cf958cd3215671fd6ac47aec21f10c2a0cc68abd399d8a7 - languageName: node - linkType: hard - "cookie@npm:^0.4.0, cookie@npm:^0.4.1": version: 0.4.2 resolution: "cookie@npm:0.4.2" @@ -24547,7 +29184,21 @@ __metadata: languageName: node linkType: hard -"cookiejar@npm:^2.1.0, cookiejar@npm:^2.1.2, cookiejar@npm:^2.1.4": +"cookiejar@npm:^2.1.0": + version: 2.1.2 + resolution: "cookiejar@npm:2.1.2" + checksum: 706cad1a56db51dfb13c1fef73dab8e7fabcfdfbe5d58d463139b4af1482603291832053cc85564bc998a05784956a6cf0ac667414a0a8d7765c65ed3ed42f3e + languageName: node + linkType: hard + +"cookiejar@npm:^2.1.2": + version: 2.1.3 + resolution: "cookiejar@npm:2.1.3" + checksum: 88259983ebc52ceb23cdacfa48762b6a518a57872eff1c7ed01d214fff5cf492e2660d7d5c04700a28f1787a76811df39e8639f8e17670b3cf94ecd86e161f07 + languageName: node + linkType: hard + +"cookiejar@npm:^2.1.4": version: 2.1.4 resolution: "cookiejar@npm:2.1.4" checksum: c4442111963077dc0e5672359956d6556a195d31cbb35b528356ce5f184922b99ac48245ac05ed86cf993f7df157c56da10ab3efdadfed79778a0d9b1b092d5b @@ -24563,7 +29214,7 @@ __metadata: languageName: node linkType: hard -"copy-to-clipboard@npm:3.3.1": +"copy-to-clipboard@npm:3.3.1, copy-to-clipboard@npm:^3, copy-to-clipboard@npm:^3.2.0": version: 3.3.1 resolution: "copy-to-clipboard@npm:3.3.1" dependencies: @@ -24572,15 +29223,6 @@ __metadata: languageName: node linkType: hard -"copy-to-clipboard@npm:^3.2.0, copy-to-clipboard@npm:^3.3.1": - version: 3.3.3 - resolution: "copy-to-clipboard@npm:3.3.3" - dependencies: - toggle-selection: ^1.0.6 - checksum: e0a325e39b7615108e6c1c8ac110ae7b829cdc4ee3278b1df6a0e4228c490442cc86444cd643e2da344fbc424b3aab8909e2fec82f8bc75e7e5b190b7c24eecf - languageName: node - linkType: hard - "copy-webpack-plugin@npm:^10.2.4": version: 10.2.4 resolution: "copy-webpack-plugin@npm:10.2.4" @@ -24597,19 +29239,46 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.30.2, core-js-compat@npm:^3.33.1, core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": - version: 3.38.1 - resolution: "core-js-compat@npm:3.38.1" +"core-js-compat@npm:^3.25.1": + version: 3.30.0 + resolution: "core-js-compat@npm:3.30.0" + dependencies: + browserslist: ^4.21.5 + checksum: 51a34d8a292de51f52ac2d72b18ee94743a905d4570a42214262426ebf8f026c853fee22cf4d6c61c2d95f861749421c4de48e9389f551745c5ac1477a5f929f + languageName: node + linkType: hard + +"core-js-compat@npm:^3.30.1, core-js-compat@npm:^3.30.2": + version: 3.30.2 + resolution: "core-js-compat@npm:3.30.2" + dependencies: + browserslist: ^4.21.5 + checksum: 4c81d635559eebc2f81db60f5095a235f580a2f90698113c4124c72761393592b139e30974cce6095a9a6aad6bb3cd467b24b20c32e77ed24ca74eb5944d0638 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.31.0": + version: 3.32.2 + resolution: "core-js-compat@npm:3.32.2" + dependencies: + browserslist: ^4.21.10 + checksum: efca146ad71a542e6f196db5ba5aed617e48c615bdf1fbb065471b3267f833ac545bd5fc5ad0642c3d3974b955f0684ff0863d7471d7050ee0284e0a1313942e + languageName: node + linkType: hard + +"core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0": + version: 3.38.0 + resolution: "core-js-compat@npm:3.38.0" dependencies: browserslist: ^4.23.3 - checksum: a0a5673bcd59f588f0cd0b59cdacd4712b82909738a87406d334dd412eb3d273ae72b275bdd8e8fef63fca9ef12b42ed651be139c7c44c8a1acb423c8906992e + checksum: bd410be723e3621f7e8c7a4dce91eaefc603d95133da89c042dd961aca368c7281894bd9af14116a455a4473288fb6c121b185cb8a1e8290b8ace15aedb315f2 languageName: node linkType: hard "core-js-pure@npm:^3.23.3": - version: 3.38.1 - resolution: "core-js-pure@npm:3.38.1" - checksum: 95ca2e75df371571b0d41cba81e1f6335a2ba1f080e80f8edfa124ad3041880fe72e10f2144527a700a3d993dbf9f7cada3e04a927a66604bc49d0c4951567fb + version: 3.30.2 + resolution: "core-js-pure@npm:3.30.2" + checksum: e0e012fe94e38663d837410baac62efe05d0c7431e3fbaa70c65f51eb980da9c3add225eca04208d576bc0d92cefeca9a4f7671a65fd84fd7dfc92d8618dddfd languageName: node linkType: hard @@ -24628,20 +29297,20 @@ __metadata: linkType: hard "core-js@npm:^3.0.0": - version: 3.38.1 - resolution: "core-js@npm:3.38.1" - checksum: 55703c2f6fcd537e47a5cc83e9dc9884efef61861bbefb4a96a8c95e87956db980ce314628465dd49f14e626c5e633b9e3433f3e4a1f628404a14da420eb2556 + version: 3.15.2 + resolution: "core-js@npm:3.15.2" + checksum: f8f61569c4c3bdf50679226f5a1045551192a2f4bc3fa46a873b6fa834cff6d1634ee138a6e4bae3eea99f1b1db2d588fa693de74640447476292b41f595a4c3 languageName: node linkType: hard -"core-util-is@npm:1.0.2": +"core-util-is@npm:1.0.2, core-util-is@npm:~1.0.0": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab languageName: node linkType: hard -"core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0": +"core-util-is@npm:^1.0.3": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 @@ -24665,27 +29334,37 @@ __metadata: languageName: node linkType: hard +"cosmiconfig-toml-loader@npm:1.0.0": + version: 1.0.0 + resolution: "cosmiconfig-toml-loader@npm:1.0.0" + dependencies: + "@iarna/toml": ^2.2.5 + checksum: 00836a57c3c029a0d23f4eeeafc59a0be45cdf2707c5a6859020f545d50f939bfb01bc047fa41118faa92e69e25001f34d7687b05a97a469ed59fc870528b875 + languageName: node + linkType: hard + "cosmiconfig-typescript-loader@npm:^4.0.0": - version: 4.4.0 - resolution: "cosmiconfig-typescript-loader@npm:4.4.0" + version: 4.1.1 + resolution: "cosmiconfig-typescript-loader@npm:4.1.1" peerDependencies: "@types/node": "*" cosmiconfig: ">=7" ts-node: ">=10" - typescript: ">=4" - checksum: d6ba546de333f9440226ab2384a7b5355d8d2e278a9ca9d838664181bc27719764af10c69eec6f07189e63121e6d654235c374bd7dc455ac8dfdef3aad6657fd + typescript: ">=3" + checksum: a774961868f0406d0fd75e448c2e1a0ddb95de27d477fa325a37369a2cbd892cf4d639a109082cd886840dea7707ea9bed5c38a468b52de18400c4f1d495d35a languageName: node linkType: hard -"cosmiconfig@npm:8.0.0": - version: 8.0.0 - resolution: "cosmiconfig@npm:8.0.0" +"cosmiconfig@npm:7.0.1, cosmiconfig@npm:^7.0.0": + version: 7.0.1 + resolution: "cosmiconfig@npm:7.0.1" dependencies: + "@types/parse-json": ^4.0.0 import-fresh: ^3.2.1 - js-yaml: ^4.1.0 parse-json: ^5.0.0 path-type: ^4.0.0 - checksum: ff4cdf89ac1ae52e7520816622c21a9e04380d04b82d653f5139ec581aa4f7f29e096d46770bc76c4a63c225367e88a1dfa233ea791669a35101f5f9b972c7d1 + yaml: ^1.10.0 + checksum: 4be63e7117955fd88333d7460e4c466a90f556df6ef34efd59034d2463484e339666c41f02b523d574a797ec61f4a91918c5b89a316db2ea2f834e0d2d09465b languageName: node linkType: hard @@ -24726,7 +29405,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": +"cosmiconfig@npm:^7.0.1": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" dependencies: @@ -24740,59 +29419,56 @@ __metadata: linkType: hard "cosmiconfig@npm:^8.1.3": - version: 8.3.6 - resolution: "cosmiconfig@npm:8.3.6" + version: 8.2.0 + resolution: "cosmiconfig@npm:8.2.0" dependencies: - import-fresh: ^3.3.0 + import-fresh: ^3.2.1 js-yaml: ^4.1.0 - parse-json: ^5.2.0 + parse-json: ^5.0.0 path-type: ^4.0.0 - peerDependencies: - typescript: ">=4.9.5" - peerDependenciesMeta: - typescript: - optional: true - checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 + checksum: 836d5d8efa750f3fb17b03d6ca74cd3154ed025dffd045304b3ef59637f662bde1e5dc88f8830080d180ec60841719cf4ea2ce73fb21ec694b16865c478ff297 languageName: node linkType: hard -"cpu-features@npm:~0.0.10": - version: 0.0.10 - resolution: "cpu-features@npm:0.0.10" +"cpu-features@npm:0.0.2": + version: 0.0.2 + resolution: "cpu-features@npm:0.0.2" dependencies: - buildcheck: ~0.0.6 - nan: ^2.19.0 + nan: ^2.14.1 node-gyp: latest - checksum: ab17e25cea0b642bdcfd163d3d872be4cc7d821e854d41048557799e990d672ee1cc7bd1d4e7c4de0309b1683d4c001d36ba8569b5035d1e7e2ff2d681f681d7 + checksum: 15177f9a2d465e4d84390f902c977b34f237dadb29fd8553853b13d906ffe5f15be9f091c72db4f34c71412d5ff4e0e4edf04caebc875b02d1d7ecfce2963299 languageName: node linkType: hard "crc-32@npm:^1.2.0, crc-32@npm:~1.2.0": - version: 1.2.2 - resolution: "crc-32@npm:1.2.2" + version: 1.2.0 + resolution: "crc-32@npm:1.2.0" + dependencies: + exit-on-epipe: ~1.0.1 + printj: ~1.1.0 bin: - crc32: bin/crc32.njs - checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff243 + crc32: ./bin/crc32.njs + checksum: 7bcde8bea262f6629ac3c70e20bdfa3d058dc77091705ce8620513f76f19b41fc273ddd65a716eef9b4e33fbb61ff7f9b266653d214319aef27e4223789c6b9e languageName: node linkType: hard "crc32-stream@npm:^4.0.2": - version: 4.0.3 - resolution: "crc32-stream@npm:4.0.3" + version: 4.0.2 + resolution: "crc32-stream@npm:4.0.2" dependencies: crc-32: ^1.2.0 readable-stream: ^3.4.0 - checksum: d44d0ec6f04d8a1bed899ac3e4fbb82111ed567ea6d506be39147362af45c747887fce1032f4beca1646b4824e5a9614cd3332bfa94bbc5577ca5445e7f75ddd + checksum: 1099559283b86e8a55390228b57ff4d57a74cac6aa8086aa4730f84317c9f93e914aeece115352f2d706a9df7ed75327ffacd86cfe23f040aef821231b528e76 languageName: node linkType: hard "crc32-stream@npm:^5.0.0": - version: 5.0.1 - resolution: "crc32-stream@npm:5.0.1" + version: 5.0.0 + resolution: "crc32-stream@npm:5.0.0" dependencies: crc-32: ^1.2.0 readable-stream: ^3.4.0 - checksum: 5bd40b58488d9a4387ad799fb04d0896e7e2ca63afeedd56df9a115af3437cf83976ae07fd2402692f88efcbd2f738134a1f25366ca47e217601b6baa5388f89 + checksum: 8e5dd04f22f3fbecc623492395107fbed2114f225bd606e39e8ed338f2fc1c454ac02a05741243620ab526473cb867fa86411a44a7ffcd88457cc1c2af82d0bc languageName: node linkType: hard @@ -24870,18 +29546,18 @@ __metadata: linkType: hard "crelt@npm:^1.0.5": - version: 1.0.6 - resolution: "crelt@npm:1.0.6" - checksum: dad842093371ad702afbc0531bfca2b0a8dd920b23a42f26e66dabbed9aad9acd5b9030496359545ef3937c3aced0fd4ac39f7a2d280a23ddf9eb7fdcb94a69f + version: 1.0.5 + resolution: "crelt@npm:1.0.5" + checksum: 04a618c5878e12a14a9a328a49ff6e37bed76abb88b72e661c56b5f161d8a9aca133650da6bcbc5224ad1f7f43a69325627f209e92a21002986d52a8f844b367 languageName: node linkType: hard "cron-parser@npm:^4.2.1": - version: 4.9.0 - resolution: "cron-parser@npm:4.9.0" + version: 4.8.1 + resolution: "cron-parser@npm:4.8.1" dependencies: luxon: ^3.2.1 - checksum: 3cf248fc5cae6c19ec7124962b1cd84b76f02b9bc4f58976b3bd07624db3ef10aaf1548efcc2d2dcdab0dad4f12029d640a55ecce05ea5e1596af9db585502cf + checksum: e3e7b227cb45c8e3e16b5ceab9fd1b4769b878b430f009d5de26c3e20d4e0112fde6f90a663afbcd9cc2be92d73b6eefe2d939d1646f3a96704f73c63dd39b6f languageName: node linkType: hard @@ -24897,12 +29573,21 @@ __metadata: languageName: node linkType: hard +"cross-fetch@npm:^3.0.4": + version: 3.1.0 + resolution: "cross-fetch@npm:3.1.0" + dependencies: + node-fetch: 2.6.1 + checksum: 9849fa5ab938aa8e777a93856be2195820f6f53ddd5fc4d9cde783ea57bc0d3790d35503355cd8676c654ba8ea1a84f9e688c735ae2606b3973c7ae4b1093d4d + languageName: node + linkType: hard + "cross-fetch@npm:^3.1.5": - version: 3.1.8 - resolution: "cross-fetch@npm:3.1.8" + version: 3.1.5 + resolution: "cross-fetch@npm:3.1.5" dependencies: - node-fetch: ^2.6.12 - checksum: 78f993fa099eaaa041122ab037fe9503ecbbcb9daef234d1d2e0b9230a983f64d645d088c464e21a247b825a08dc444a6e7064adfa93536d3a9454b4745b3632 + node-fetch: 2.6.7 + checksum: f6b8c6ee3ef993ace6277fd789c71b6acf1b504fd5f5c7128df4ef2f125a429e29cd62dc8c127523f04a5f2fa4771ed80e3f3d9695617f441425045f505cf3bb languageName: node linkType: hard @@ -24915,12 +29600,12 @@ __metadata: languageName: node linkType: hard -"cross-inspect@npm:1.0.1": - version: 1.0.1 - resolution: "cross-inspect@npm:1.0.1" +"cross-inspect@npm:1.0.0": + version: 1.0.0 + resolution: "cross-inspect@npm:1.0.0" dependencies: tslib: ^2.4.0 - checksum: 7c1e02e0a9670b62416a3ea1df7ae880fdad3aa0a857de8932c4e5f8acd71298c7e3db9da8e9da603f5692cd1879938f5e72e34a9f5d1345987bef656d117fc1 + checksum: 975c81799549627027254eb70f1c349cefb14435d580bea6f351f510c839dcb1a9288983407bac2ad317e6eff29cf1e99299606da21f404562bfa64cec502239 languageName: node linkType: hard @@ -24974,7 +29659,7 @@ __metadata: languageName: node linkType: hard -"crypto-js@npm:4.2.0, crypto-js@npm:^4.2.0": +"crypto-js@npm:4.2.0, crypto-js@npm:^4.0.0, crypto-js@npm:^4.2.0": version: 4.2.0 resolution: "crypto-js@npm:4.2.0" checksum: f051666dbc077c8324777f44fbd3aaea2986f198fe85092535130d17026c7c2ccf2d23ee5b29b36f7a4a07312db2fae23c9094b644cc35f7858b1b4fcaf27774 @@ -25016,45 +29701,40 @@ __metadata: languageName: node linkType: hard -"css-declaration-sorter@npm:^7.2.0": - version: 7.2.0 - resolution: "css-declaration-sorter@npm:7.2.0" +"css-declaration-sorter@npm:^6.3.1": + version: 6.4.0 + resolution: "css-declaration-sorter@npm:6.4.0" peerDependencies: postcss: ^8.0.9 - checksum: 69b2f63a1c7c593123fabcbb353618ed01eb75f6404da9321328fbb30d603d89c47195129fadf1dc316e1406a0881400b324c2bded9438c47196e1c96ec726dd + checksum: b716bc3d79154d3d618a90bd192533adf6604307c176e25e715a3b7cde587ef16971769fbf496118a376794280edf97016653477936c38c5a74cc852d6e38873 languageName: node linkType: hard -"css-in-js-utils@npm:^3.1.0": - version: 3.1.0 - resolution: "css-in-js-utils@npm:3.1.0" +"css-in-js-utils@npm:^2.0.0": + version: 2.0.1 + resolution: "css-in-js-utils@npm:2.0.1" dependencies: - hyphenate-style-name: ^1.0.3 - checksum: 066318e918c04a5e5bce46b38fe81052ea6ac051bcc6d3c369a1d59ceb1546cb2b6086901ab5d22be084122ee3732169996a3dfb04d3406eaee205af77aec61b + hyphenate-style-name: ^1.0.2 + isobject: ^3.0.1 + checksum: c9964c4708216954c468b69bbee2d971fd759ada4f40637b8ca4d3f79caba4818d0532a4f190ac560227c08742ad063ffec7a30afddc4d96b66a18c3a008f0d8 languageName: node linkType: hard "css-loader@npm:^6.4.0, css-loader@npm:^6.7.1": - version: 6.11.0 - resolution: "css-loader@npm:6.11.0" + version: 6.8.1 + resolution: "css-loader@npm:6.8.1" dependencies: icss-utils: ^5.1.0 - postcss: ^8.4.33 - postcss-modules-extract-imports: ^3.1.0 - postcss-modules-local-by-default: ^4.0.5 - postcss-modules-scope: ^3.2.0 + postcss: ^8.4.21 + postcss-modules-extract-imports: ^3.0.0 + postcss-modules-local-by-default: ^4.0.3 + postcss-modules-scope: ^3.0.0 postcss-modules-values: ^4.0.0 postcss-value-parser: ^4.2.0 - semver: ^7.5.4 + semver: ^7.3.8 peerDependencies: - "@rspack/core": 0.x || 1.x webpack: ^5.0.0 - peerDependenciesMeta: - "@rspack/core": - optional: true - webpack: - optional: true - checksum: 5c8d35975a7121334905394e88e28f05df72f037dbed2fb8fec4be5f0b313ae73a13894ba791867d4a4190c35896da84a7fd0c54fb426db55d85ba5e714edbe3 + checksum: 7c1784247bdbe76dc5c55fb1ac84f1d4177a74c47259942c9cfdb7a8e6baef11967a0bc85ac285f26bd26d5059decb848af8154a03fdb4f4894f41212f45eef3 languageName: node linkType: hard @@ -25095,15 +29775,15 @@ __metadata: linkType: hard "css-select@npm:^4.1.3": - version: 4.3.0 - resolution: "css-select@npm:4.3.0" + version: 4.1.3 + resolution: "css-select@npm:4.1.3" dependencies: boolbase: ^1.0.0 - css-what: ^6.0.1 - domhandler: ^4.3.1 - domutils: ^2.8.0 - nth-check: ^2.0.1 - checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 + css-what: ^5.0.0 + domhandler: ^4.2.0 + domutils: ^2.6.0 + nth-check: ^2.0.0 + checksum: 40928f1aa6c71faf36430e7f26bcbb8ab51d07b98b754caacb71906400a195df5e6c7020a94f2982f02e52027b9bd57c99419220cf7020968c3415f14e4be5f8 languageName: node linkType: hard @@ -25120,7 +29800,7 @@ __metadata: languageName: node linkType: hard -"css-to-react-native@npm:3.2.0, css-to-react-native@npm:^3.0.0": +"css-to-react-native@npm:3.2.0": version: 3.2.0 resolution: "css-to-react-native@npm:3.2.0" dependencies: @@ -25131,6 +29811,17 @@ __metadata: languageName: node linkType: hard +"css-to-react-native@npm:^3.0.0": + version: 3.0.0 + resolution: "css-to-react-native@npm:3.0.0" + dependencies: + camelize: ^1.0.0 + css-color-keywords: ^1.0.0 + postcss-value-parser: ^4.0.2 + checksum: 98a2e9d4fbe9cabc8b744dfdd5ec108396ce497a7b860912a95b299bd52517461281810fcb707965a021a8be39adca9587184a26fb4e926211391a1557aca3c1 + languageName: node + linkType: hard + "css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": version: 1.1.3 resolution: "css-tree@npm:1.1.3" @@ -25141,7 +29832,7 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^2.3.1": +"css-tree@npm:^2.2.1": version: 2.3.1 resolution: "css-tree@npm:2.3.1" dependencies: @@ -25168,14 +29859,14 @@ __metadata: languageName: node linkType: hard -"css-what@npm:^5.0.1": +"css-what@npm:^5.0.0, css-what@npm:^5.0.1": version: 5.1.0 resolution: "css-what@npm:5.1.0" checksum: 0b75d1bac95c885c168573c85744a6c6843d8c33345f54f717218b37ea6296b0e99bb12105930ea170fd4a921990392a7c790c16c585c1d8960c49e2b7ec39f7 languageName: node linkType: hard -"css-what@npm:^6.0.1, css-what@npm:^6.1.0": +"css-what@npm:^6.1.0": version: 6.1.0 resolution: "css-what@npm:6.1.0" checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe @@ -25205,64 +29896,63 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-default@npm:^6.1.2": - version: 6.1.2 - resolution: "cssnano-preset-default@npm:6.1.2" - dependencies: - browserslist: ^4.23.0 - css-declaration-sorter: ^7.2.0 - cssnano-utils: ^4.0.2 - postcss-calc: ^9.0.1 - postcss-colormin: ^6.1.0 - postcss-convert-values: ^6.1.0 - postcss-discard-comments: ^6.0.2 - postcss-discard-duplicates: ^6.0.3 - postcss-discard-empty: ^6.0.3 - postcss-discard-overridden: ^6.0.2 - postcss-merge-longhand: ^6.0.5 - postcss-merge-rules: ^6.1.1 - postcss-minify-font-values: ^6.1.0 - postcss-minify-gradients: ^6.0.3 - postcss-minify-params: ^6.1.0 - postcss-minify-selectors: ^6.0.4 - postcss-normalize-charset: ^6.0.2 - postcss-normalize-display-values: ^6.0.2 - postcss-normalize-positions: ^6.0.2 - postcss-normalize-repeat-style: ^6.0.2 - postcss-normalize-string: ^6.0.2 - postcss-normalize-timing-functions: ^6.0.2 - postcss-normalize-unicode: ^6.1.0 - postcss-normalize-url: ^6.0.2 - postcss-normalize-whitespace: ^6.0.2 - postcss-ordered-values: ^6.0.2 - postcss-reduce-initial: ^6.1.0 - postcss-reduce-transforms: ^6.0.2 - postcss-svgo: ^6.0.3 - postcss-unique-selectors: ^6.0.4 - peerDependencies: - postcss: ^8.4.31 - checksum: 51d93e52df7141143947dc4695b5087c04b41ea153e4f4c0282ac012b62c7457c6aca244f604ae94fa3b4840903a30a1e7df38f8610e0b304d05e3065375ee56 - languageName: node - linkType: hard - -"cssnano-utils@npm:^4.0.2": - version: 4.0.2 - resolution: "cssnano-utils@npm:4.0.2" +"cssnano-preset-default@npm:^6.0.1": + version: 6.0.1 + resolution: "cssnano-preset-default@npm:6.0.1" + dependencies: + css-declaration-sorter: ^6.3.1 + cssnano-utils: ^4.0.0 + postcss-calc: ^9.0.0 + postcss-colormin: ^6.0.0 + postcss-convert-values: ^6.0.0 + postcss-discard-comments: ^6.0.0 + postcss-discard-duplicates: ^6.0.0 + postcss-discard-empty: ^6.0.0 + postcss-discard-overridden: ^6.0.0 + postcss-merge-longhand: ^6.0.0 + postcss-merge-rules: ^6.0.1 + postcss-minify-font-values: ^6.0.0 + postcss-minify-gradients: ^6.0.0 + postcss-minify-params: ^6.0.0 + postcss-minify-selectors: ^6.0.0 + postcss-normalize-charset: ^6.0.0 + postcss-normalize-display-values: ^6.0.0 + postcss-normalize-positions: ^6.0.0 + postcss-normalize-repeat-style: ^6.0.0 + postcss-normalize-string: ^6.0.0 + postcss-normalize-timing-functions: ^6.0.0 + postcss-normalize-unicode: ^6.0.0 + postcss-normalize-url: ^6.0.0 + postcss-normalize-whitespace: ^6.0.0 + postcss-ordered-values: ^6.0.0 + postcss-reduce-initial: ^6.0.0 + postcss-reduce-transforms: ^6.0.0 + postcss-svgo: ^6.0.0 + postcss-unique-selectors: ^6.0.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 451080ae47c93e6525c7133c36426968ee758eb9115132ba481e6b12d50775f4d086635bb2f807957e017fc9d253aa876aa64800be6b3d000ada90721b9ea410 + languageName: node + linkType: hard + +"cssnano-utils@npm:^4.0.0": + version: 4.0.0 + resolution: "cssnano-utils@npm:4.0.0" peerDependencies: - postcss: ^8.4.31 - checksum: f04c6854e75d847c7a43aff835e003d5bc7387ddfc476f0ad3a2d63663d0cec41047d46604c1717bf6b5a8e24e54bb519e465ff78d62c7e073c7cbe2279bebaf + postcss: ^8.2.15 + checksum: 7db9b3eb4ec7cc7b2d1a3caf8c2d3b6b067bb8404b93dc183907325db3231e396350a50e5388beda02dab03404d5e8d226977b2b87adc11768173e0259e80219 languageName: node linkType: hard "cssnano@npm:^6.0.1": - version: 6.1.2 - resolution: "cssnano@npm:6.1.2" + version: 6.0.1 + resolution: "cssnano@npm:6.0.1" dependencies: - cssnano-preset-default: ^6.1.2 - lilconfig: ^3.1.1 + cssnano-preset-default: ^6.0.1 + lilconfig: ^2.1.0 peerDependencies: - postcss: ^8.4.31 - checksum: 65aad92c5ee0089ffd4cd933c18c65edbf7634f7c3cd833a499dc948aa7e4168be22130dfe83bde07fcdc87f7c45a02d09040b7f439498208bc90b8d5a9abcc8 + postcss: ^8.2.15 + checksum: 15e0777189edf2d4287ed3628f65d78c9934a2c0729e29811e85bd760653a0142477b3c2dde9e0a51438c509b2b926e6482215cd8d4e6704e3eb1ab38d1dba0c languageName: node linkType: hard @@ -25312,7 +30002,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:3.1.3, csstype@npm:^3.0.2, csstype@npm:^3.0.5, csstype@npm:^3.0.7, csstype@npm:^3.1.1, csstype@npm:^3.1.2": +"csstype@npm:3.1.3": version: 3.1.3 resolution: "csstype@npm:3.1.3" checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 @@ -25320,9 +30010,23 @@ __metadata: linkType: hard "csstype@npm:^2.5.7": - version: 2.6.21 - resolution: "csstype@npm:2.6.21" - checksum: 2ce8bc832375146eccdf6115a1f8565a27015b74cce197c35103b4494955e9516b246140425ad24103864076aa3e1257ac9bab25a06c8d931dd87a6428c9dccf + version: 2.6.16 + resolution: "csstype@npm:2.6.16" + checksum: 4da90b4aa0783fe8b5bcab21b6711ef68ae9d2b04377d064f4f264bc62003657882883d255f57e3567322982f541d98c68265cee0e456d395a3fd62963b6bea7 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2, csstype@npm:^3.0.5, csstype@npm:^3.0.6, csstype@npm:^3.0.7": + version: 3.0.10 + resolution: "csstype@npm:3.0.10" + checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 + languageName: node + linkType: hard + +"csstype@npm:^3.1.1": + version: 3.1.1 + resolution: "csstype@npm:3.1.1" + checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d languageName: node linkType: hard @@ -25496,13 +30200,13 @@ __metadata: languageName: node linkType: hard -"d@npm:1, d@npm:^1.0.1, d@npm:^1.0.2": - version: 1.0.2 - resolution: "d@npm:1.0.2" +"d@npm:1, d@npm:^1.0.1": + version: 1.0.1 + resolution: "d@npm:1.0.1" dependencies: - es5-ext: ^0.10.64 - type: ^2.7.2 - checksum: 775db1e8ced6707cddf64a5840522fcf5475d38ef49a5d615be0ac47f86ef64d15f5a73de1522b09327cc466d4dc35ea83dbfeed456f7a0fdcab138deb800355 + es5-ext: ^0.10.50 + type: ^1.0.1 + checksum: 49ca0639c7b822db670de93d4fbce44b4aa072cd848c76292c9978a8cd0fff1028763020ff4b0f147bd77bfe29b4c7f82e0f71ade76b2a06100543cdfd948d19 languageName: node linkType: hard @@ -25520,6 +30224,13 @@ __metadata: languageName: node linkType: hard +"dash-ast@npm:^1.0.0": + version: 1.0.0 + resolution: "dash-ast@npm:1.0.0" + checksum: db59e5e275d8159fb3b84bcd2936470c3fecb626f6486c179a28afad141cd95a578faaa3695ad6106153ca861da99a3d891fda37757b49afab773b3a46c638e6 + languageName: node + linkType: hard + "dashdash@npm:^1.12.0": version: 1.14.1 resolution: "dashdash@npm:1.14.1" @@ -25605,14 +30316,14 @@ __metadata: languageName: node linkType: hard -"dataloader@npm:^2.1.0, dataloader@npm:^2.2.2": +"dataloader@npm:^2.1.0": version: 2.2.2 resolution: "dataloader@npm:2.2.2" checksum: 4dabd247089c29f194e94d5434d504f99156c5c214a03463c20f3f17f40398d7e179edee69a27c16e315519ac8739042a810090087ae26449a0e685156a02c65 languageName: node linkType: hard -"date-fns@npm:2.28.0": +"date-fns@npm:2.28.0, date-fns@npm:^2.0.1, date-fns@npm:^2.24.0": version: 2.28.0 resolution: "date-fns@npm:2.28.0" checksum: a0516b2e4f99b8bffc6cc5193349f185f195398385bdcaf07f17c2c4a24473c99d933eb0018be4142a86a6d46cb0b06be6440ad874f15e795acbedd6fd727a1f @@ -25633,7 +30344,14 @@ __metadata: languageName: node linkType: hard -"date-fns@npm:^2.0.1, date-fns@npm:^2.24.0, date-fns@npm:^2.28.0, date-fns@npm:^2.29.3": +"date-fns@npm:^2.28.0": + version: 2.29.3 + resolution: "date-fns@npm:2.29.3" + checksum: e01cf5b62af04e05dfff921bb9c9933310ed0e1ae9a81eb8653452e64dc841acf7f6e01e1a5ae5644d0337e9a7f936175fd2cb6819dc122fdd9c5e86c56be484 + languageName: node + linkType: hard + +"date-fns@npm:^2.29.3": version: 2.30.0 resolution: "date-fns@npm:2.30.0" dependencies: @@ -25642,13 +30360,6 @@ __metadata: languageName: node linkType: hard -"date-fns@npm:^4.1.0": - version: 4.1.0 - resolution: "date-fns@npm:4.1.0" - checksum: fb681b242cccabed45494468f64282a7d375ea970e0adbcc5dcc92dcb7aba49b2081c2c9739d41bf71ce89ed68dd73bebfe06ca35129490704775d091895710b - languageName: node - linkType: hard - "datebook@npm:7.0.8": version: 7.0.8 resolution: "datebook@npm:7.0.8" @@ -25658,17 +30369,24 @@ __metadata: languageName: node linkType: hard -"dayjs@npm:^1.10.4, dayjs@npm:^1.11.5, dayjs@npm:^1.8.15, dayjs@npm:^1.9.1": - version: 1.11.13 - resolution: "dayjs@npm:1.11.13" - checksum: f388db88a6aa93956c1f6121644e783391c7b738b73dbc54485578736565c8931bdfba4bb94e9b1535c6e509c97d5deb918bbe1ae6b34358d994de735055cca9 +"dayjs@npm:^1.10.4, dayjs@npm:^1.9.1": + version: 1.10.7 + resolution: "dayjs@npm:1.10.7" + checksum: a0a4ca95abaa03d0702161dc2c35d16121188e342f5052b9c61cdf784dab68af766f477c04f87f71c6af666fd4d13db9b9853b87265850d6093b7b04e1bb1cd7 + languageName: node + linkType: hard + +"dayjs@npm:^1.11.5, dayjs@npm:^1.8.15": + version: 1.11.7 + resolution: "dayjs@npm:1.11.7" + checksum: 5003a7c1dd9ed51385beb658231c3548700b82d3548c0cfbe549d85f2d08e90e972510282b7506941452c58d32136d6362f009c77ca55381a09c704e9f177ebb languageName: node linkType: hard "dc-polyfill@npm:^0.1.4": - version: 0.1.6 - resolution: "dc-polyfill@npm:0.1.6" - checksum: 10ef2cc568d27b2f51d3efed4ce045ff906c0934767f50d7bbb7a5b322c4ea9f096216bfa4ba8b328711342e05e7c765d5fa7503fab34eba997c783ffcfcb2bf + version: 0.1.4 + resolution: "dc-polyfill@npm:0.1.4" + checksum: 339f71563f57982c7cf3bd5d2dcf9e8f9b307cf9175210a7fb761c1719921a2ea7f27b12b6e69d5a500bbc1dd49c5d8f164fe5d72f0bf863b2147e96d7c8c337 languageName: node linkType: hard @@ -25759,7 +30477,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9, debug@npm:^2.1.3, debug@npm:^2.2.0, debug@npm:^2.6.8, debug@npm:^2.6.9": +"debug@npm:2.6.9, debug@npm:^2.1.3, debug@npm:^2.2.0, debug@npm:^2.6.0, debug@npm:^2.6.8, debug@npm:^2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: @@ -25768,19 +30486,31 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7": - version: 4.3.7 - resolution: "debug@npm:4.3.7" +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" dependencies: - ms: ^2.1.3 + ms: 2.1.2 peerDependenciesMeta: supports-color: optional: true - checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 languageName: node linkType: hard -"debug@npm:^3.1.0, debug@npm:^3.2.7": +"debug@npm:4.3.1": + version: 4.3.1 + resolution: "debug@npm:4.3.1" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 2c3352e37d5c46b0d203317cd45ea0e26b2c99f2d9dfec8b128e6ceba90dfb65425f5331bf3020fe9929d7da8c16758e737f4f3bfc0fce6b8b3d503bae03298b + languageName: node + linkType: hard + +"debug@npm:^3.1.0, debug@npm:^3.1.1, debug@npm:^3.2.6, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -25789,6 +30519,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.3.5, debug@npm:^4.3.7": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 + languageName: node + linkType: hard + "debuglog@npm:^1.0.0, debuglog@npm:^1.0.1": version: 1.0.1 resolution: "debuglog@npm:1.0.1" @@ -25803,6 +30545,13 @@ __metadata: languageName: node linkType: hard +"decamelize@npm:^4.0.0": + version: 4.0.0 + resolution: "decamelize@npm:4.0.0" + checksum: b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 + languageName: node + linkType: hard + "decimal.js-light@npm:^2.4.1": version: 2.5.1 resolution: "decimal.js-light@npm:2.5.1" @@ -25810,7 +30559,14 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.1, decimal.js@npm:^10.4.2": +"decimal.js@npm:^10.2.1": + version: 10.2.1 + resolution: "decimal.js@npm:10.2.1" + checksum: d2421adf209422d520c8f1a4d1fceffc2ccd0c041aa179f8d18a315ebda6a7be918f2634ac850df299dccccae6a3567c5761301a1c3693461fdef3d1de23b000 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae @@ -25858,15 +30614,15 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0, dedent@npm:^1.5.3": - version: 1.5.3 - resolution: "dedent@npm:1.5.3" +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a + checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a languageName: node linkType: hard @@ -25879,7 +30635,7 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:2.0.5": +"deep-equal@npm:2.0.5, deep-equal@npm:^2.0.5": version: 2.0.5 resolution: "deep-equal@npm:2.0.5" dependencies: @@ -25928,32 +30684,6 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:^2.0.5": - version: 2.2.3 - resolution: "deep-equal@npm:2.2.3" - dependencies: - array-buffer-byte-length: ^1.0.0 - call-bind: ^1.0.5 - es-get-iterator: ^1.1.3 - get-intrinsic: ^1.2.2 - is-arguments: ^1.1.1 - is-array-buffer: ^3.0.2 - is-date-object: ^1.0.5 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - isarray: ^2.0.5 - object-is: ^1.1.5 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.5.1 - side-channel: ^1.0.4 - which-boxed-primitive: ^1.0.2 - which-collection: ^1.0.1 - which-typed-array: ^1.1.13 - checksum: ee8852f23e4d20a5626c13b02f415ba443a1b30b4b3d39eaf366d59c4a85e6545d7ec917db44d476a85ae5a86064f7e5f7af7479f38f113995ba869f3a1ddc53 - languageName: node - linkType: hard - "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -25962,20 +30692,20 @@ __metadata: linkType: hard "deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 + version: 0.1.3 + resolution: "deep-is@npm:0.1.3" + checksum: c15b04c3848a89880c94e25b077c19b47d9a30dd99048e70e5f95d943e7b246bee1da0c1376b56b01bc045be2cae7d9b1c856e68e47e9805634327de7c6cb6d5 languageName: node linkType: hard -"deep-object-diff@npm:^1.1.0, deep-object-diff@npm:^1.1.9": - version: 1.1.9 - resolution: "deep-object-diff@npm:1.1.9" - checksum: ecd42455e4773f653595d28070295e7aaa8402db5f8ab21d0bec115a7cb4de5e207a5665514767da5f025c96597f1d3a0a4888aeb4dd49e03c996871a3aa05ef +"deep-object-diff@npm:^1.1.0": + version: 1.1.7 + resolution: "deep-object-diff@npm:1.1.7" + checksum: 543fb1ae87b138ad260691e6949e72bf7dc144825084b7ad1886bb725d2ace1c19ed1ef1280f1116243e86bf2c6b942f45c670958b1468f644613f28c5dc97ea languageName: node linkType: hard -"deepmerge@npm:4.2.2": +"deepmerge@npm:4.2.2, deepmerge@npm:^4.2.2": version: 4.2.2 resolution: "deepmerge@npm:4.2.2" checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b @@ -25989,14 +30719,14 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0, deepmerge@npm:^4.3.1": +"deepmerge@npm:^4.3.0, deepmerge@npm:^4.3.1": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 languageName: node linkType: hard -"default-browser-id@npm:3.0.0": +"default-browser-id@npm:3.0.0, default-browser-id@npm:^3.0.0": version: 3.0.0 resolution: "default-browser-id@npm:3.0.0" dependencies: @@ -26006,6 +30736,18 @@ __metadata: languageName: node linkType: hard +"default-browser@npm:^4.0.0": + version: 4.0.0 + resolution: "default-browser@npm:4.0.0" + dependencies: + bundle-name: ^3.0.0 + default-browser-id: ^3.0.0 + execa: ^7.1.1 + titleize: ^3.0.0 + checksum: 40c5af984799042b140300be5639c9742599bda76dc9eba5ac9ad5943c83dd36cebc4471eafcfddf8e0ec817166d5ba89d56f08e66a126c7c7908a179cead1a7 + languageName: node + linkType: hard + "default-gateway@npm:^4.2.0": version: 4.2.0 resolution: "default-gateway@npm:4.2.0" @@ -26026,11 +30768,11 @@ __metadata: linkType: hard "defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" + version: 1.0.3 + resolution: "defaults@npm:1.0.3" dependencies: clone: ^1.0.2 - checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a + checksum: 96e2112da6553d376afd5265ea7cbdb2a3b45535965d71ab8bb1da10c8126d168fdd5268799625324b368356d21ba2a7b3d4ec50961f11a47b7feb9de3d4413e languageName: node linkType: hard @@ -26041,7 +30783,18 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1": + version: 1.1.1 + resolution: "define-data-property@npm:1.1.1" + dependencies: + get-intrinsic: ^1.2.1 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.0 + checksum: a29855ad3f0630ea82e3c5012c812efa6ca3078d5c2aa8df06b5f597c1cde6f7254692df41945851d903e05a1668607b6d34e778f402b9ff9ffb38111f1a3f0d + languageName: node + linkType: hard + +"define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" dependencies: @@ -26059,7 +30812,33 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3": + version: 1.1.3 + resolution: "define-properties@npm:1.1.3" + dependencies: + object-keys: ^1.0.12 + checksum: da80dba55d0cd76a5a7ab71ef6ea0ebcb7b941f803793e4e0257b384cb772038faa0c31659d244e82c4342edef841c1a1212580006a05a5068ee48223d787317 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.4": + version: 1.1.4 + resolution: "define-properties@npm:1.1.4" + dependencies: + has-property-descriptors: ^1.0.0 + object-keys: ^1.1.1 + checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b + languageName: node + linkType: hard + +"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -26070,22 +30849,22 @@ __metadata: languageName: node linkType: hard -"defu@npm:^6.1.4": - version: 6.1.4 - resolution: "defu@npm:6.1.4" - checksum: 40e3af6338f195ac1564f53d1887fa2d0429ac7e8c081204bc4d29191180059d3952b5f4e08fe5df8d59eb873aa26e9c88b56d4fac699673d4a372c93620b229 +"defu@npm:^6.1.2": + version: 6.1.2 + resolution: "defu@npm:6.1.2" + checksum: 2ec0ff8414d5a1ab2b8c7e9a79bbad6d97d23ea7ebf5dcf80c3c7ffd9715c30f84a3cc47b917379ea756b3db0dc4701ce6400e493a1ae1688dffcd0f884233b2 languageName: node linkType: hard -"degenerator@npm:^3.0.2": - version: 3.0.4 - resolution: "degenerator@npm:3.0.4" +"degenerator@npm:^3.0.1": + version: 3.0.1 + resolution: "degenerator@npm:3.0.1" dependencies: ast-types: ^0.13.2 escodegen: ^1.8.1 esprima: ^4.0.0 - vm2: ^3.9.17 - checksum: 99c27c9456095e32c4f6e01091d2b5c249f246b574487c52bca571e1e586b02d4b74a0ea7f22f30cc953c914383d02e2038d7d476a22f2704a8c1e88b671007d + vm2: ^3.9.3 + checksum: 110d5fa772933d21484995e518feeb2ea54e5804421edf8546900973a227dcdf621a0cbac0a5d0a13273424ea3763aba815246dfffa386483f5480d60f50bed1 languageName: node linkType: hard @@ -26190,7 +30969,7 @@ __metadata: languageName: node linkType: hard -"des.js@npm:^1.0.0, des.js@npm:^1.1.0": +"des.js@npm:^1.0.0": version: 1.1.0 resolution: "des.js@npm:1.1.0" dependencies: @@ -26207,7 +30986,14 @@ __metadata: languageName: node linkType: hard -"detect-indent@npm:^6.0.0, detect-indent@npm:^6.1.0": +"detect-indent@npm:^6.0.0": + version: 6.0.0 + resolution: "detect-indent@npm:6.0.0" + checksum: 0c38f362016e2d07af1c65b1ecd6ad8a91f06bfdd11383887c867a495ad286d04be2ab44027ac42444704d523982013115bd748c1541df7c9396ad76b22aaf5d + languageName: node + linkType: hard + +"detect-indent@npm:^6.1.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d @@ -26223,10 +31009,10 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1": - version: 2.0.3 - resolution: "detect-libc@npm:2.0.3" - checksum: 2ba6a939ae55f189aea996ac67afceb650413c7a34726ee92c40fb0deb2400d57ef94631a8a3f052055eea7efb0f99a9b5e6ce923415daa3e68221f963cfc27d +"detect-libc@npm:^2.0.0": + version: 2.0.1 + resolution: "detect-libc@npm:2.0.1" + checksum: ccb05fcabbb555beb544d48080179c18523a343face9ee4e1a86605a8715b4169f94d663c21a03c310ac824592f2ba9a5270218819bb411ad7be578a527593d7 languageName: node linkType: hard @@ -26245,9 +31031,9 @@ __metadata: linkType: hard "detect-node@npm:^2.0.4": - version: 2.1.0 - resolution: "detect-node@npm:2.1.0" - checksum: 832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e + version: 2.0.5 + resolution: "detect-node@npm:2.0.5" + checksum: 1a53096f6c3d1c4a82db2e97440d7a38eff7d8e635a5613ac1fff870135b709c5a4e6af789cda17bd6f4b6f036d30a913a0fe2dec125b565f5f7767e3e401c46 languageName: node linkType: hard @@ -26260,16 +31046,29 @@ __metadata: languageName: node linkType: hard -"detect-port@npm:^1.3.0, detect-port@npm:^1.5.1": - version: 1.6.1 - resolution: "detect-port@npm:1.6.1" +"detect-port@npm:^1.3.0": + version: 1.3.0 + resolution: "detect-port@npm:1.3.0" + dependencies: + address: ^1.0.1 + debug: ^2.6.0 + bin: + detect: ./bin/detect-port + detect-port: ./bin/detect-port + checksum: 93c40febe714f56711d1fedc2b7a9cc4cbaa0fcddec0509876c46b9dd6099ed6bfd6662a4f35e5fa0301660f48ed516829253ab0fc90b9e79b823dd77786b379 + languageName: node + linkType: hard + +"detect-port@npm:^1.5.1": + version: 1.5.1 + resolution: "detect-port@npm:1.5.1" dependencies: address: ^1.0.1 debug: 4 bin: detect: bin/detect-port.js detect-port: bin/detect-port.js - checksum: 0429fa423abb15fc453face64e6ffa406e375f51f5b4421a7886962e680dc05824eae9b6ee4594ba273685c3add415ad00982b5da54802ac3de6f846173284c3 + checksum: b48da9340481742547263d5d985e65d078592557863402ecf538511735e83575867e94f91fe74405ea19b61351feb99efccae7e55de9a151d5654e3417cea05b languageName: node linkType: hard @@ -26280,7 +31079,17 @@ __metadata: languageName: node linkType: hard -"dezalgo@npm:^1.0.0, dezalgo@npm:^1.0.4": +"dezalgo@npm:^1.0.0": + version: 1.0.3 + resolution: "dezalgo@npm:1.0.3" + dependencies: + asap: ^2.0.0 + wrappy: 1 + checksum: 8b26238db91423b2702a7a6d9629d0019c37c415e7b6e75d4b3e8d27e9464e21cac3618dd145f4d4ee96c70cc6ff034227b5b8a0e9c09015a8bdbe6dace3cfb9 + languageName: node + linkType: hard + +"dezalgo@npm:^1.0.4": version: 1.0.4 resolution: "dezalgo@npm:1.0.4" dependencies: @@ -26297,14 +31106,28 @@ __metadata: languageName: node linkType: hard -"didyoumean2@npm:^5.0.0": - version: 5.0.0 - resolution: "didyoumean2@npm:5.0.0" +"didyoumean2@npm:^4.0.0": + version: 4.1.0 + resolution: "didyoumean2@npm:4.1.0" dependencies: "@babel/runtime": ^7.10.2 - fastest-levenshtein: ^1.0.12 + leven: ^3.1.0 lodash.deburr: ^4.1.0 - checksum: 99935a1433d31595d7f7f7f2e12c582ee634a07913856b2f7fb85923b30e3cbb24e37bea8bbe3da6ec42ad030fdc8cd2e07cca326de517730f07dfea8e05a025 + checksum: 56ca4ea577042c70e12b5fa57638ca928db39d3d21afa9263fcb01529f9a70646f2c32751b1fc5eab53ddb576e4ad2f485f0c5a02377f107ce139738065f4583 + languageName: node + linkType: hard + +"diff-sequences@npm:^27.5.1": + version: 27.5.1 + resolution: "diff-sequences@npm:27.5.1" + checksum: a00db5554c9da7da225db2d2638d85f8e41124eccbd56cbaefb3b276dcbb1c1c2ad851c32defe2055a54a4806f030656cbf6638105fd6ce97bb87b90b32a33ca + languageName: node + linkType: hard + +"diff-sequences@npm:^29.4.3": + version: 29.4.3 + resolution: "diff-sequences@npm:29.4.3" + checksum: 28b265e04fdddcf7f9f814effe102cc95a9dec0564a579b5aed140edb24fc345c611ca52d76d725a3cab55d3888b915b5e8a4702e0f6058968a90fa5f41fcde7 languageName: node linkType: hard @@ -26315,6 +31138,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:5.0.0": + version: 5.0.0 + resolution: "diff@npm:5.0.0" + checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -26322,7 +31152,14 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0, diff@npm:^5.2.0": +"diff@npm:^5.0.0": + version: 5.1.0 + resolution: "diff@npm:5.1.0" + checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 + languageName: node + linkType: hard + +"diff@npm:^5.2.0": version: 5.2.0 resolution: "diff@npm:5.2.0" checksum: 12b63ca9c36c72bafa3effa77121f0581b4015df18bc16bac1f8e263597735649f1a173c26f7eba17fb4162b073fee61788abe49610e6c70a2641fe1895443fd @@ -26379,44 +31216,50 @@ __metadata: languageName: node linkType: hard +"dns-equal@npm:^1.0.0": + version: 1.0.0 + resolution: "dns-equal@npm:1.0.0" + checksum: a8471ac849c7c13824f053babea1bc26e2f359394dd5a460f8340d8abd13434be01e3327a5c59d212f8c8997817450efd3f3ac77bec709b21979cf0235644524 + languageName: node + linkType: hard + "dns-packet@npm:^5.2.2": - version: 5.6.1 - resolution: "dns-packet@npm:5.6.1" + version: 5.6.0 + resolution: "dns-packet@npm:5.6.0" dependencies: "@leichtgewicht/ip-codec": ^2.0.1 - checksum: 64c06457f0c6e143f7a0946e0aeb8de1c5f752217cfa143ef527467c00a6d78db1835cfdb6bb68333d9f9a4963cf23f410439b5262a8935cce1236f45e344b81 + checksum: 1b643814e5947a87620f8a906287079347492282964ce1c236d52c414e3e3941126b96581376b180ba6e66899e70b86b587bc1aa23e3acd9957765be952d83fc languageName: node linkType: hard "docker-compose@npm:^0.23.13": - version: 0.23.19 - resolution: "docker-compose@npm:0.23.19" + version: 0.23.14 + resolution: "docker-compose@npm:0.23.14" dependencies: yaml: ^1.10.2 - checksum: 1704825954ec8645e4b099cc2641531955eef5a8a9729c885fab7067ae4d7935c663252e51b49878397e51cd5a3efcf2f13c8460e252aa39d14a0722c0bacfe5 + checksum: 0f1e18ac2d54e5409e9992eed2987f4b550a1398e69a953433f62dd7778b2545615774e58875de10128fa20881828029fd0241e09d68dbce26d1f49d85b5256a languageName: node linkType: hard "docker-modem@npm:^3.0.0": - version: 3.0.8 - resolution: "docker-modem@npm:3.0.8" + version: 3.0.3 + resolution: "docker-modem@npm:3.0.3" dependencies: debug: ^4.1.1 readable-stream: ^3.5.0 split-ca: ^1.0.1 - ssh2: ^1.11.0 - checksum: e3675c9b1ad800be8fb1cb9c5621fbef20a75bfedcd6e01b69808eadd7f0165681e4e30d1700897b788a67dbf4769964fcccd19c3d66f6d2499bb7aede6b34df + ssh2: ^1.4.0 + checksum: 4ad495d17a7bbb29f48e3bf8ab74508848a3ca62c2dffc399fc0b9b2d1caccb1be54cc53001d5e0d56069e6cb4a91da4b017240733080b6648a66b40345e1f96 languageName: node linkType: hard "dockerode@npm:^3.3.1": - version: 3.3.5 - resolution: "dockerode@npm:3.3.5" + version: 3.3.1 + resolution: "dockerode@npm:3.3.1" dependencies: - "@balena/dockerignore": ^1.0.2 docker-modem: ^3.0.0 tar-fs: ~2.0.1 - checksum: 7f6650422b07fa7ea9d5801f04b1a432634446b5fe37b995b8302b953b64e93abf1bb4596c2fb574ba47aafee685ef2ab959cc86c9654add5a26d09541bbbcc6 + checksum: 930162ae2d8a1fe0e99d9a5885b09aa438da6274d4a30cb90e73046655dbc90764eb755361a63ba08f167e257c4d649d67bce71f650461a20b97fcde0af05ca5 languageName: node linkType: hard @@ -26439,9 +31282,9 @@ __metadata: linkType: hard "dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": - version: 0.5.16 - resolution: "dom-accessibility-api@npm:0.5.16" - checksum: 005eb283caef57fc1adec4d5df4dd49189b628f2f575af45decb210e04d634459e3f1ee64f18b41e2dcf200c844bc1d9279d80807e686a30d69a4756151ad248 + version: 0.5.14 + resolution: "dom-accessibility-api@npm:0.5.14" + checksum: 782c813f75a09ba6735ef03b5e1624406a3829444ae49d5bdedd272a49d437ae3354f53e02ffc8c9fd9165880250f41546538f27461f839dd4ea1234e77e8d5e languageName: node linkType: hard @@ -26464,12 +31307,12 @@ __metadata: linkType: hard "dom-helpers@npm:^5.0.1": - version: 5.2.1 - resolution: "dom-helpers@npm:5.2.1" + version: 5.2.0 + resolution: "dom-helpers@npm:5.2.0" dependencies: "@babel/runtime": ^7.8.7 csstype: ^3.0.2 - checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c + checksum: bea3e7217c2adac5f89285b7786dbcc3a356226f6ff12934c9626689829b00e7fa7630a8f77973028d039db1aba6b882b1494854aa910422d1644486136b1e55 languageName: node linkType: hard @@ -26483,14 +31326,14 @@ __metadata: languageName: node linkType: hard -"dom-serializer@npm:^1.0.1": - version: 1.4.1 - resolution: "dom-serializer@npm:1.4.1" +"dom-serializer@npm:^1.0.1, dom-serializer@npm:^1.3.2": + version: 1.3.2 + resolution: "dom-serializer@npm:1.3.2" dependencies: domelementtype: ^2.0.1 domhandler: ^4.2.0 entities: ^2.0.0 - checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 + checksum: bff48714944d67b160db71ba244fb0f3fe72e77ef2ec8414e2eeb56f2d926e404a13456b8b83a5392e217ba47dec2ec0c368801b31481813e94d185276c3e964 languageName: node linkType: hard @@ -26512,7 +31355,14 @@ __metadata: languageName: node linkType: hard -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": + version: 2.2.0 + resolution: "domelementtype@npm:2.2.0" + checksum: 24cb386198640cd58aa36f8c987f2ea61859929106d06ffcc8f547e70cb2ed82a6dc56dcb8252b21fba1f1ea07df6e4356d60bfe57f77114ca1aed6828362629 + languageName: node + linkType: hard + +"domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 @@ -26555,12 +31405,12 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": + version: 4.2.0 + resolution: "domhandler@npm:4.2.0" dependencies: domelementtype: ^2.2.0 - checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa + checksum: 7921ac317d6899525a4e6a6038137307271522175a73db58233e13c7860987e15e86654583b2c0fd02fc46a602f9bd86fd2671af13b9068b72e8b229f07b3d03 languageName: node linkType: hard @@ -26573,17 +31423,10 @@ __metadata: languageName: node linkType: hard -"dommatrix@npm:^1.0.3": - version: 1.0.3 - resolution: "dommatrix@npm:1.0.3" - checksum: 8ac727c1a14cf8de30a5b49a3bd6b2622a661b391fe1ac54e855eaa14a857ed86d63492150b5f70f912acc24fa3acc31d750259c47e9b5801de237624b0a319f - languageName: node - linkType: hard - "dompurify@npm:^2.2.8": - version: 2.5.7 - resolution: "dompurify@npm:2.5.7" - checksum: 9652139743130b5ebaf5278fadec06d9b3920019b80c205565b9b8d52cd0cea90ff690c1994c5c0da5bc9d57a94dc19236cdf1ccabdc1c6cff7c255e1e597031 + version: 2.4.7 + resolution: "dompurify@npm:2.4.7" + checksum: 13c047e772a1998348191554dda403950d45ef2ec75fa0b9915cc179ccea0a39ef780d283109bd72cf83a2a085af6c77664281d4d0106a737bc5f39906364efe languageName: node linkType: hard @@ -26597,18 +31440,18 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^2.0.0, domutils@npm:^2.5.2, domutils@npm:^2.8.0": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" +"domutils@npm:^2.0.0, domutils@npm:^2.5.2, domutils@npm:^2.6.0, domutils@npm:^2.7.0": + version: 2.7.0 + resolution: "domutils@npm:2.7.0" dependencies: dom-serializer: ^1.0.1 domelementtype: ^2.2.0 domhandler: ^4.2.0 - checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 + checksum: a4da0fcc4c54f6b338111caa11c672e18968d6280e7a1ed5e01b8b09b7dc0829ab5e03821349f5b57e34811f7e96e89b8dddbe06bb8e395cf117342424667b7d languageName: node linkType: hard -"domutils@npm:^3.0.1, domutils@npm:^3.1.0": +"domutils@npm:^3.0.1": version: 3.1.0 resolution: "domutils@npm:3.1.0" dependencies: @@ -26666,7 +31509,14 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.0.0, dotenv@npm:^16.4.4, dotenv@npm:~16.4.5": +"dotenv@npm:^16.0.0": + version: 16.0.3 + resolution: "dotenv@npm:16.0.3" + checksum: afcf03f373d7a6d62c7e9afea6328e62851d627a4e73f2e12d0a8deae1cd375892004f3021883f8aec85932cd2834b091f568ced92b4774625b321db83b827f8 + languageName: node + linkType: hard + +"dotenv@npm:^16.4.4, dotenv@npm:~16.4.5": version: 16.4.5 resolution: "dotenv@npm:16.4.5" checksum: 301a12c3d44fd49888b74eb9ccf9f07a1f5df43f489e7fcb89647a2edcd84c42d6bc349dc8df099cd18f07c35c7b04685c1a4f3e6a6a9e6b30f8d48c15b7f49c @@ -26724,9 +31574,9 @@ __metadata: linkType: hard "dset@npm:^3.1.2": - version: 3.1.4 - resolution: "dset@npm:3.1.4" - checksum: 9a7677e9ffd3c13ad850f7cf367aa94b39984006510e84c3c09b7b88bba0a5b3b7196d85a99d0c4cae4e47d67bdeca43dc1834a41d80f31bcdc86dd26121ecec + version: 3.1.2 + resolution: "dset@npm:3.1.2" + checksum: 4f8066f517aa0a70af688c66e9a0a5590f0aada76f6edc7ba9ddb309e27d3a6d65c0a2e31ab2a84005d4c791e5327773cdde59b8ab169050330a0dc283663e87 languageName: node linkType: hard @@ -26739,6 +31589,15 @@ __metadata: languageName: node linkType: hard +"duplexer2@npm:~0.1.4": + version: 0.1.4 + resolution: "duplexer2@npm:0.1.4" + dependencies: + readable-stream: ^2.0.2 + checksum: 744961f03c7f54313f90555ac20284a3fb7bf22fdff6538f041a86c22499560eb6eac9d30ab5768054137cb40e6b18b40f621094e0261d7d8c35a37b7a5ad241 + languageName: node + linkType: hard + "duplexer@npm:^0.1.1, duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -26759,14 +31618,14 @@ __metadata: linkType: hard "duplexify@npm:^4.0.0": - version: 4.1.3 - resolution: "duplexify@npm:4.1.3" + version: 4.1.2 + resolution: "duplexify@npm:4.1.2" dependencies: end-of-stream: ^1.4.1 inherits: ^2.0.3 readable-stream: ^3.1.1 - stream-shift: ^1.0.2 - checksum: 9636a027345de3dd3c801594d01a7c73d9ce260019538beb1ee650bba7544e72f40a4d4902b52e1ab283dc32a06f210d42748773af02ff15e3064a9659deab7f + stream-shift: ^1.0.0 + checksum: 964376c61c0e92f6ed0694b3ba97c84f199413dc40ab8dfdaef80b7a7f4982fcabf796214e28ed614a5bc1ec45488a29b81e7d46fa3f5ddf65bcb118c20145ad languageName: node linkType: hard @@ -26821,17 +31680,17 @@ __metadata: languageName: node linkType: hard -"editorconfig@npm:^1.0.4": - version: 1.0.4 - resolution: "editorconfig@npm:1.0.4" +"editorconfig@npm:^0.15.3": + version: 0.15.3 + resolution: "editorconfig@npm:0.15.3" dependencies: - "@one-ini/wasm": 0.1.1 - commander: ^10.0.0 - minimatch: 9.0.1 - semver: ^7.5.3 + commander: ^2.19.0 + lru-cache: ^4.1.5 + semver: ^5.6.0 + sigmund: ^1.0.1 bin: editorconfig: bin/editorconfig - checksum: 09904f19381b3ddf132cea0762971aba887236f387be3540909e96b8eb9337e1793834e10f06890cd8e8e7bb1ba80cb13e7d50a863f227806c9ca74def4165fb + checksum: a94afeda19f12a4bcc4a573f0858df13dd3a2d1a3268cc0f17a6326ebe7ddd6cb0c026f8e4e73c17d34f3892bf6f8b561512d9841e70063f61da71b4c57dc5f0 languageName: node linkType: hard @@ -26842,7 +31701,7 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.10, ejs@npm:^3.1.5, ejs@npm:^3.1.7, ejs@npm:^3.1.8": +"ejs@npm:^3.1.10": version: 3.1.10 resolution: "ejs@npm:3.1.10" dependencies: @@ -26853,10 +31712,32 @@ __metadata: languageName: node linkType: hard +"ejs@npm:^3.1.5": + version: 3.1.6 + resolution: "ejs@npm:3.1.6" + dependencies: + jake: ^10.6.1 + bin: + ejs: ./bin/cli.js + checksum: 81a9cdea0b4ded3b5a4b212b7c17e20bb07468f08394e2d519708d367957a70aef3d282a6d5d38bf6ad313ba25802b9193d4227f29b084d2ee0f28d115141d48 + languageName: node + linkType: hard + +"ejs@npm:^3.1.7, ejs@npm:^3.1.8": + version: 3.1.9 + resolution: "ejs@npm:3.1.9" + dependencies: + jake: ^10.8.5 + bin: + ejs: bin/cli.js + checksum: af6f10eb815885ff8a8cfacc42c6b6cf87daf97a4884f87a30e0c3271fedd85d76a3a297d9c33a70e735b97ee632887f85e32854b9cdd3a2d97edf931519a35f + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.3.723": - version: 1.5.45 - resolution: "electron-to-chromium@npm:1.5.45" - checksum: f2e1ad7867125501d41f763e129d130bd563efebab65f5ca88a81407e834ff81d4e1e19355714d1e7f82a4662d3531fc23a0e9e9cdfb7b9ead0eb52ddcfa4b3e + version: 1.4.137 + resolution: "electron-to-chromium@npm:1.4.137" + checksum: 639d7b94906efafcf363519c3698eecc44be46755a6a5cdc9088954329978866cc93fbd57e08b97290599b68d5226243d21de9fa50be416b8a5d3fa8fd42c3a0 languageName: node linkType: hard @@ -26889,10 +31770,17 @@ __metadata: languageName: node linkType: hard -"emoji-regex@npm:^10.3.0": - version: 10.4.0 - resolution: "emoji-regex@npm:10.4.0" - checksum: a6d9a0e454829a52e664e049847776ee1fff5646617b06cd87de7c03ce1dfcce4102a3b154d5e9c8e90f8125bc120fc1fe114d523dddf60a8a161f26c72658d2 +"emoji-regex@npm:>=6.0.0 <=6.1.1": + version: 6.1.1 + resolution: "emoji-regex@npm:6.1.1" + checksum: 6c54300a743d0b7af6e52292508d4865945ac966572473b65fdf31b54d5e4d91a1a1d769ea89f541b4023aa0c8dd2a51697fd9d186a698faf2ff380d18e5a016 + languageName: node + linkType: hard + +"emoji-regex@npm:^10.2.1": + version: 10.2.1 + resolution: "emoji-regex@npm:10.2.1" + checksum: 1aa2d16881c56531fdfc03d0b36f5c2b6221cc4097499a5665b88b711dc3fb4d5b8804f0ca6f00c56e5dcf89bac75f0487eee85da1da77df3a33accc6ecbe426 languageName: node linkType: hard @@ -26918,14 +31806,14 @@ __metadata: linkType: hard "emojic@npm:^1.1.11": - version: 1.1.17 - resolution: "emojic@npm:1.1.17" + version: 1.1.16 + resolution: "emojic@npm:1.1.16" dependencies: - camelo: ^1.2.1 + camelo: ^1.0.0 emojilib: ^2.0.2 iterate-object: ^1.2.0 r-json: ^1.1.0 - checksum: 668f64aaec0518fc7eb9589aa970584f51b322abeeee9e98f030cffb4d468313f87adafe43ae2377aa29889be5c08144bf78faefe6a000e5c0d97c9c0737bc1c + checksum: d744a0538c4aacec9f3c0e21cf1712b375cf7b292773f3b5c8fe586920add58fe89361a38aff94cace9524262852820e98c84cd0905cc6ef553d5e766ed31608 languageName: node linkType: hard @@ -26967,13 +31855,6 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:~2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe - languageName: node - linkType: hard - "encoding-japanese@npm:2.0.0": version: 2.0.0 resolution: "encoding-japanese@npm:2.0.0" @@ -26981,16 +31862,6 @@ __metadata: languageName: node linkType: hard -"encoding-sniffer@npm:^0.2.0": - version: 0.2.0 - resolution: "encoding-sniffer@npm:0.2.0" - dependencies: - iconv-lite: ^0.6.3 - whatwg-encoding: ^3.1.1 - checksum: 05ad76b674066e62abc80427eb9e89ecf5ed50f4d20c392f7465992d309215687e3ae1ae8b5d5694fb258f4517c759694c3b413d6c724e1024e1cf98750390eb - languageName: node - linkType: hard - "encoding@npm:^0.1.12, encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -27020,27 +31891,27 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.7.0": - version: 5.17.1 - resolution: "enhanced-resolve@npm:5.17.1" +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.14.1": + version: 5.14.1 + resolution: "enhanced-resolve@npm:5.14.1" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: 4bc38cf1cea96456f97503db7280394177d1bc46f8f87c267297d04f795ac5efa81e48115a2f5b6273c781027b5b6bfc5f62b54df629e4d25fa7001a86624f59 + checksum: ad2a31928b6649eed40d364838449587f731baa63863e83d2629bebaa8be1eabac18b90f89c1784bc805b0818363e99b22547159edd485d7e5ccf18cdc640642 languageName: node linkType: hard -"enquirer@npm:^2.3.6": - version: 2.4.1 - resolution: "enquirer@npm:2.4.1" +"enhanced-resolve@npm:^5.7.0": + version: 5.9.3 + resolution: "enhanced-resolve@npm:5.9.3" dependencies: - ansi-colors: ^4.1.1 - strip-ansi: ^6.0.1 - checksum: f080f11a74209647dbf347a7c6a83c8a47ae1ebf1e75073a808bc1088eb780aa54075bfecd1bcdb3e3c724520edb8e6ee05da031529436b421b71066fcc48cb5 + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: 64c2dbbdd608d1a4df93b6e60786c603a1faf3b2e66dfd051d62cf4cfaeeb5e800166183685587208d62e9f7afff3f78f3d5978e32cd80125ba0c83b59a79d78 languageName: node linkType: hard -"enquirer@npm:~2.3.6": +"enquirer@npm:^2.3.6, enquirer@npm:~2.3.6": version: 2.3.6 resolution: "enquirer@npm:2.3.6" dependencies: @@ -27050,11 +31921,9 @@ __metadata: linkType: hard "ent@npm:^2.2.0": - version: 2.2.1 - resolution: "ent@npm:2.2.1" - dependencies: - punycode: ^1.4.1 - checksum: 1db6470dd21d2659b6b6edec3c857843722579bbe25ea7f6a802ec9730b8673f2d8d6dc14af2a0c580eec83309a9cf9ee0442ba2c6b7738c7d69a1d64723451f + version: 2.2.0 + resolution: "ent@npm:2.2.0" + checksum: f588b5707d6fef36011ea10d530645912a69530a1eb0831f8708c498ac028363a7009f45cfadd28ceb4dafd9ac17ec15213f88d09ce239cd033cfe1328dd7d7d languageName: node linkType: hard @@ -27072,13 +31941,20 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.4.0, entities@npm:^4.5.0": +"entities@npm:^4.2.0, entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 languageName: node linkType: hard +"entities@npm:~2.1.0": + version: 2.1.0 + resolution: "entities@npm:2.1.0" + checksum: a10a877e489586a3f6a691fe49bf3fc4e58f06c8e80522f08214a5150ba457e7017b447d4913a3fa041bda06ee4c92517baa4d8d75373eaa79369e9639225ffd + languageName: node + linkType: hard + "entropy-string@npm:4.2.0": version: 4.2.0 resolution: "entropy-string@npm:4.2.0" @@ -27102,12 +31978,21 @@ __metadata: languageName: node linkType: hard -"envinfo@npm:^7.10.0, envinfo@npm:^7.7.3": - version: 7.14.0 - resolution: "envinfo@npm:7.14.0" +"envinfo@npm:^7.10.0": + version: 7.13.0 + resolution: "envinfo@npm:7.13.0" bin: envinfo: dist/cli.js - checksum: 137c1dd9a4d5781c4a6cdc6b695454ba3c4ba1829f73927198aa4122f11b35b59d7b2cb7e1ceea1364925a30278897548511d22f860c14253a33797d0bebd551 + checksum: 822fc30f53bd0be67f0e25be96eb6a2562b8062f3058846bbd7ec471bd4b7835fca6436ee72c4029c8ae4a3d8f8cddbe2ee725b22291f015232d20a682bee732 + languageName: node + linkType: hard + +"envinfo@npm:^7.7.3": + version: 7.8.1 + resolution: "envinfo@npm:7.8.1" + bin: + envinfo: dist/cli.js + checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 languageName: node linkType: hard @@ -27146,11 +32031,11 @@ __metadata: linkType: hard "error-stack-parser@npm:^2.0.6": - version: 2.1.4 - resolution: "error-stack-parser@npm:2.1.4" + version: 2.0.6 + resolution: "error-stack-parser@npm:2.0.6" dependencies: - stackframe: ^1.3.4 - checksum: 3b916d2d14c6682f287c8bfa28e14672f47eafe832701080e420e7cdbaebb2c50293868256a95706ac2330fe078cf5664713158b49bc30d7a5f2ac229ded0e18 + stackframe: ^1.1.1 + checksum: bd8e048fcb1c0c74ab201271fec3b39c097a7c24bdef1718828d053c0584da5d7ad845253b5e4773803ee8e7450b23b0920e60a3b60dd403c1568c843058cb12 languageName: node linkType: hard @@ -27218,10 +32103,96 @@ __metadata: languageName: node linkType: hard -"es-array-method-boxes-properly@npm:^1.0.0": - version: 1.0.0 - resolution: "es-array-method-boxes-properly@npm:1.0.0" - checksum: 2537fcd1cecf187083890bc6f5236d3a26bf39237433587e5bf63392e88faae929dbba78ff0120681a3f6f81c23fe3816122982c160d63b38c95c830b633b826 +"es-abstract@npm:^1.18.0-next.2, es-abstract@npm:^1.19.1": + version: 1.19.5 + resolution: "es-abstract@npm:1.19.5" + dependencies: + call-bind: ^1.0.2 + es-to-primitive: ^1.2.1 + function-bind: ^1.1.1 + get-intrinsic: ^1.1.1 + get-symbol-description: ^1.0.0 + has: ^1.0.3 + has-symbols: ^1.0.3 + internal-slot: ^1.0.3 + is-callable: ^1.2.4 + is-negative-zero: ^2.0.2 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + is-string: ^1.0.7 + is-weakref: ^1.0.2 + object-inspect: ^1.12.0 + object-keys: ^1.1.1 + object.assign: ^4.1.2 + string.prototype.trimend: ^1.0.4 + string.prototype.trimstart: ^1.0.4 + unbox-primitive: ^1.0.1 + checksum: 55199b0f179a12b3b0ec9c9f2e3a27a7561686e4f88d46f9ef32c836448a336e367c14d8f792612fc83a64113896e478259e4dffbbcffb3efdd06650f6360324 + languageName: node + linkType: hard + +"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.0": + version: 1.20.4 + resolution: "es-abstract@npm:1.20.4" + dependencies: + call-bind: ^1.0.2 + es-to-primitive: ^1.2.1 + function-bind: ^1.1.1 + function.prototype.name: ^1.1.5 + get-intrinsic: ^1.1.3 + get-symbol-description: ^1.0.0 + has: ^1.0.3 + has-property-descriptors: ^1.0.0 + has-symbols: ^1.0.3 + internal-slot: ^1.0.3 + is-callable: ^1.2.7 + is-negative-zero: ^2.0.2 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + is-string: ^1.0.7 + is-weakref: ^1.0.2 + object-inspect: ^1.12.2 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.4.3 + safe-regex-test: ^1.0.0 + string.prototype.trimend: ^1.0.5 + string.prototype.trimstart: ^1.0.5 + unbox-primitive: ^1.0.2 + checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 + languageName: node + linkType: hard + +"es-abstract@npm:^1.20.4": + version: 1.20.5 + resolution: "es-abstract@npm:1.20.5" + dependencies: + call-bind: ^1.0.2 + es-to-primitive: ^1.2.1 + function-bind: ^1.1.1 + function.prototype.name: ^1.1.5 + get-intrinsic: ^1.1.3 + get-symbol-description: ^1.0.0 + gopd: ^1.0.1 + has: ^1.0.3 + has-property-descriptors: ^1.0.0 + has-symbols: ^1.0.3 + internal-slot: ^1.0.3 + is-callable: ^1.2.7 + is-negative-zero: ^2.0.2 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + is-string: ^1.0.7 + is-weakref: ^1.0.2 + object-inspect: ^1.12.2 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.4.3 + safe-regex-test: ^1.0.0 + string.prototype.trimend: ^1.0.6 + string.prototype.trimstart: ^1.0.6 + unbox-primitive: ^1.0.2 + checksum: 00564779ddaf7fb977ab5aa2b8ea2cbd4fa2335ad5368f788bd0bb094c86bc1790335dd9c3e30374bb0af2fa54c724fb4e0c73659dcfe8e427355a56f2b65946 languageName: node linkType: hard @@ -27241,7 +32212,23 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.1.1, es-get-iterator@npm:^1.1.3": +"es-get-iterator@npm:^1.1.1": + version: 1.1.2 + resolution: "es-get-iterator@npm:1.1.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.0 + has-symbols: ^1.0.1 + is-arguments: ^1.1.0 + is-map: ^2.0.2 + is-set: ^2.0.2 + is-string: ^1.0.5 + isarray: ^2.0.5 + checksum: f75e66acb6a45686fa08b3ade9c9421a70d36a0c43ed4363e67f4d7aab2226cb73dd977cb48abbaf75721b946d3cd810682fcf310c7ad0867802fbf929b17dcf + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" dependencies: @@ -27258,9 +32245,9 @@ __metadata: languageName: node linkType: hard -"es-iterator-helpers@npm:^1.1.0": - version: 1.1.0 - resolution: "es-iterator-helpers@npm:1.1.0" +"es-iterator-helpers@npm:^1.0.19": + version: 1.0.19 + resolution: "es-iterator-helpers@npm:1.0.19" dependencies: call-bind: ^1.0.7 define-properties: ^1.2.1 @@ -27269,18 +32256,25 @@ __metadata: es-set-tostringtag: ^2.0.3 function-bind: ^1.1.2 get-intrinsic: ^1.2.4 - globalthis: ^1.0.4 + globalthis: ^1.0.3 has-property-descriptors: ^1.0.2 has-proto: ^1.0.3 has-symbols: ^1.0.3 internal-slot: ^1.0.7 - iterator.prototype: ^1.1.3 + iterator.prototype: ^1.1.2 safe-array-concat: ^1.1.2 - checksum: 4ba3a32ab7ba05b85f0ae30604feeb8ffd801fe762e9df9577bd220a96b9eaa2e90af8e6bdc498e523051f293955e2f7d2bddd34de71e1428a1b8ff3fd961016 + checksum: 7ae112b88359fbaf4b9d7d1d1358ae57c5138768c57ba3a8fb930393662653b0512bfd7917c15890d1471577fb012fee8b73b4465e59b331739e6ee94f961683 languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.4.1": +"es-module-lexer@npm:^1.2.1": + version: 1.2.1 + resolution: "es-module-lexer@npm:1.2.1" + checksum: c4145b853e1491eaa5d591e4580926d242978c38071ad3d09165c3b6d50314cc0ae3bf6e1dec81a9e53768b9299df2063d2e4a67d7742a5029ddeae6c4fc26f0 + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.4.1": version: 1.5.4 resolution: "es-module-lexer@npm:1.5.4" checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f @@ -27307,7 +32301,16 @@ __metadata: languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": +"es-shim-unscopables@npm:^1.0.0": + version: 1.0.0 + resolution: "es-shim-unscopables@npm:1.0.0" + dependencies: + has: ^1.0.3 + checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.2": version: 1.0.2 resolution: "es-shim-unscopables@npm:1.0.2" dependencies: @@ -27327,19 +32330,18 @@ __metadata: languageName: node linkType: hard -"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.62, es5-ext@npm:^0.10.64, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2": - version: 0.10.64 - resolution: "es5-ext@npm:0.10.64" +"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.59, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": + version: 0.10.60 + resolution: "es5-ext@npm:0.10.60" dependencies: es6-iterator: ^2.0.3 es6-symbol: ^3.1.3 - esniff: ^2.0.1 next-tick: ^1.1.0 - checksum: 01179fab0769fdbef213062222f99d0346724dbaccf04b87c0e6ee7f0c97edabf14be647ca1321f0497425ea7145de0fd278d1b3f3478864b8933e7136a5c645 + checksum: 382e7532ef480fbceb6f315bd394fab65aa5b00fbbc4f9adc2144eb1fd27cade6ba4c544289f10c74cf07f4e724a70e5dc374ac1504e667b72495bd244847763 languageName: node linkType: hard -"es6-iterator@npm:^2.0.3": +"es6-iterator@npm:^2.0.3, es6-iterator@npm:~2.0.1": version: 2.0.3 resolution: "es6-iterator@npm:2.0.3" dependencies: @@ -27350,6 +32352,27 @@ __metadata: languageName: node linkType: hard +"es6-map@npm:^0.1.5": + version: 0.1.5 + resolution: "es6-map@npm:0.1.5" + dependencies: + d: 1 + es5-ext: ~0.10.14 + es6-iterator: ~2.0.1 + es6-set: ~0.1.5 + es6-symbol: ~3.1.1 + event-emitter: ~0.3.5 + checksum: 124c4f61be1a6d3378a22950f7548dc4b1d3b6d736a80f9c96d763e4119df962315879045d4b5f8e54d645cbed5e2d742aac2211b43ee16d97f06a357d81b162 + languageName: node + linkType: hard + +"es6-object-assign@npm:^1.1.0": + version: 1.1.0 + resolution: "es6-object-assign@npm:1.1.0" + checksum: 8d4fdf63484d78b5c64cacc2c2e1165bc7b6a64b739d2a9db6a4dc8641d99cc9efb433cdd4dc3d3d6b00bfa6ce959694e4665e3255190339945c5f33b692b5d8 + languageName: node + linkType: hard + "es6-promise@npm:^3.1.2, es6-promise@npm:^3.2.1": version: 3.3.1 resolution: "es6-promise@npm:3.3.1" @@ -27357,13 +32380,52 @@ __metadata: languageName: node linkType: hard -"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3": - version: 3.1.4 - resolution: "es6-symbol@npm:3.1.4" +"es6-promise@npm:^4.0.3": + version: 4.2.8 + resolution: "es6-promise@npm:4.2.8" + checksum: 95614a88873611cb9165a85d36afa7268af5c03a378b35ca7bda9508e1d4f1f6f19a788d4bc755b3fd37c8ebba40782018e02034564ff24c9d6fa37e959ad57d + languageName: node + linkType: hard + +"es6-promisify@npm:^5.0.0": + version: 5.0.0 + resolution: "es6-promisify@npm:5.0.0" + dependencies: + es6-promise: ^4.0.3 + checksum: fbed9d791598831413be84a5374eca8c24800ec71a16c1c528c43a98e2dadfb99331483d83ae6094ddb9b87e6f799a15d1553cebf756047e0865c753bc346b92 + languageName: node + linkType: hard + +"es6-set@npm:^0.1.5, es6-set@npm:~0.1.5": + version: 0.1.5 + resolution: "es6-set@npm:0.1.5" + dependencies: + d: 1 + es5-ext: ~0.10.14 + es6-iterator: ~2.0.1 + es6-symbol: 3.1.1 + event-emitter: ~0.3.5 + checksum: 8f205eb5eacfee8fbb2c70a8b8f988537d6fd4e16ab6d43511b736f5be5ae4d24b16b04acc0b1afd2f9bdb7e536d90a92875904c16590e28fcc18ca985a09f64 + languageName: node + linkType: hard + +"es6-symbol@npm:3.1.1": + version: 3.1.1 + resolution: "es6-symbol@npm:3.1.1" + dependencies: + d: 1 + es5-ext: ~0.10.14 + checksum: 0aca3bfe44d90a77f4f76588b41de5267956d0bdbf2b57120da27314f14dab35dd07cb4188cbae879e1aa1a1e1b0d0d2e2006466738bef808eef58b2c50adc99 + languageName: node + linkType: hard + +"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3, es6-symbol@npm:~3.1.1": + version: 3.1.3 + resolution: "es6-symbol@npm:3.1.3" dependencies: - d: ^1.0.2 - ext: ^1.7.0 - checksum: 52125ec4b5d1b6b93b8d3d42830bb19f8da21080ffcf45253b614bc6ff3e31349be202fb745d4d1af6778cdf5e38fea30e0c7e7dc37e2aecd44acc43502055f9 + d: ^1.0.1 + ext: ^1.1.2 + checksum: cd49722c2a70f011eb02143ef1c8c70658d2660dead6641e160b94619f408b9cf66425515787ffe338affdf0285ad54f4eae30ea5bd510e33f8659ec53bcaa70 languageName: node linkType: hard @@ -27386,7 +32448,18 @@ __metadata: languageName: node linkType: hard -"esbuild-register@npm:^3.4.0, esbuild-register@npm:^3.5.0": +"esbuild-register@npm:^3.4.0": + version: 3.4.2 + resolution: "esbuild-register@npm:3.4.2" + dependencies: + debug: ^4.3.4 + peerDependencies: + esbuild: ">=0.12 <1" + checksum: f65d1ccb58b1ccbba376efb1fc023abe22731d9b79eead1b0120e57d4413318f063696257a5af637b527fa1d3f009095aa6edb1bf6ff69d637a9ab281fb727b3 + languageName: node + linkType: hard + +"esbuild-register@npm:^3.5.0": version: 3.6.0 resolution: "esbuild-register@npm:3.6.0" dependencies: @@ -27479,198 +32552,37 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c - languageName: node - linkType: hard - -"esbuild@npm:^0.18.0": - version: 0.18.20 - resolution: "esbuild@npm:0.18.20" - dependencies: - "@esbuild/android-arm": 0.18.20 - "@esbuild/android-arm64": 0.18.20 - "@esbuild/android-x64": 0.18.20 - "@esbuild/darwin-arm64": 0.18.20 - "@esbuild/darwin-x64": 0.18.20 - "@esbuild/freebsd-arm64": 0.18.20 - "@esbuild/freebsd-x64": 0.18.20 - "@esbuild/linux-arm": 0.18.20 - "@esbuild/linux-arm64": 0.18.20 - "@esbuild/linux-ia32": 0.18.20 - "@esbuild/linux-loong64": 0.18.20 - "@esbuild/linux-mips64el": 0.18.20 - "@esbuild/linux-ppc64": 0.18.20 - "@esbuild/linux-riscv64": 0.18.20 - "@esbuild/linux-s390x": 0.18.20 - "@esbuild/linux-x64": 0.18.20 - "@esbuild/netbsd-x64": 0.18.20 - "@esbuild/openbsd-x64": 0.18.20 - "@esbuild/sunos-x64": 0.18.20 - "@esbuild/win32-arm64": 0.18.20 - "@esbuild/win32-ia32": 0.18.20 - "@esbuild/win32-x64": 0.18.20 - dependenciesMeta: - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 5d253614e50cdb6ec22095afd0c414f15688e7278a7eb4f3720a6dd1306b0909cf431e7b9437a90d065a31b1c57be60130f63fe3e8d0083b588571f31ee6ec7b - languageName: node - linkType: hard - -"esbuild@npm:^0.21.3": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" - dependencies: - "@esbuild/aix-ppc64": 0.21.5 - "@esbuild/android-arm": 0.21.5 - "@esbuild/android-arm64": 0.21.5 - "@esbuild/android-x64": 0.21.5 - "@esbuild/darwin-arm64": 0.21.5 - "@esbuild/darwin-x64": 0.21.5 - "@esbuild/freebsd-arm64": 0.21.5 - "@esbuild/freebsd-x64": 0.21.5 - "@esbuild/linux-arm": 0.21.5 - "@esbuild/linux-arm64": 0.21.5 - "@esbuild/linux-ia32": 0.21.5 - "@esbuild/linux-loong64": 0.21.5 - "@esbuild/linux-mips64el": 0.21.5 - "@esbuild/linux-ppc64": 0.21.5 - "@esbuild/linux-riscv64": 0.21.5 - "@esbuild/linux-s390x": 0.21.5 - "@esbuild/linux-x64": 0.21.5 - "@esbuild/netbsd-x64": 0.21.5 - "@esbuild/openbsd-x64": 0.21.5 - "@esbuild/sunos-x64": 0.21.5 - "@esbuild/win32-arm64": 0.21.5 - "@esbuild/win32-ia32": 0.21.5 - "@esbuild/win32-x64": 0.21.5 - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 2911c7b50b23a9df59a7d6d4cdd3a4f85855787f374dce751148dbb13305e0ce7e880dde1608c2ab7a927fc6cec3587b80995f7fc87a64b455f8b70b55fd8ec1 - languageName: node - linkType: hard - -"esbuild@npm:esbuild@>=0.17.6 <0.24.0": - version: 0.23.1 - resolution: "esbuild@npm:0.23.1" - dependencies: - "@esbuild/aix-ppc64": 0.23.1 - "@esbuild/android-arm": 0.23.1 - "@esbuild/android-arm64": 0.23.1 - "@esbuild/android-x64": 0.23.1 - "@esbuild/darwin-arm64": 0.23.1 - "@esbuild/darwin-x64": 0.23.1 - "@esbuild/freebsd-arm64": 0.23.1 - "@esbuild/freebsd-x64": 0.23.1 - "@esbuild/linux-arm": 0.23.1 - "@esbuild/linux-arm64": 0.23.1 - "@esbuild/linux-ia32": 0.23.1 - "@esbuild/linux-loong64": 0.23.1 - "@esbuild/linux-mips64el": 0.23.1 - "@esbuild/linux-ppc64": 0.23.1 - "@esbuild/linux-riscv64": 0.23.1 - "@esbuild/linux-s390x": 0.23.1 - "@esbuild/linux-x64": 0.23.1 - "@esbuild/netbsd-x64": 0.23.1 - "@esbuild/openbsd-arm64": 0.23.1 - "@esbuild/openbsd-x64": 0.23.1 - "@esbuild/sunos-x64": 0.23.1 - "@esbuild/win32-arm64": 0.23.1 - "@esbuild/win32-ia32": 0.23.1 - "@esbuild/win32-x64": 0.23.1 + checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c + languageName: node + linkType: hard + +"esbuild@npm:^0.18.0": + version: 0.18.20 + resolution: "esbuild@npm:0.18.20" + dependencies: + "@esbuild/android-arm": 0.18.20 + "@esbuild/android-arm64": 0.18.20 + "@esbuild/android-x64": 0.18.20 + "@esbuild/darwin-arm64": 0.18.20 + "@esbuild/darwin-x64": 0.18.20 + "@esbuild/freebsd-arm64": 0.18.20 + "@esbuild/freebsd-x64": 0.18.20 + "@esbuild/linux-arm": 0.18.20 + "@esbuild/linux-arm64": 0.18.20 + "@esbuild/linux-ia32": 0.18.20 + "@esbuild/linux-loong64": 0.18.20 + "@esbuild/linux-mips64el": 0.18.20 + "@esbuild/linux-ppc64": 0.18.20 + "@esbuild/linux-riscv64": 0.18.20 + "@esbuild/linux-s390x": 0.18.20 + "@esbuild/linux-x64": 0.18.20 + "@esbuild/netbsd-x64": 0.18.20 + "@esbuild/openbsd-x64": 0.18.20 + "@esbuild/sunos-x64": 0.18.20 + "@esbuild/win32-arm64": 0.18.20 + "@esbuild/win32-ia32": 0.18.20 + "@esbuild/win32-x64": 0.18.20 dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true "@esbuild/android-arm": optional: true "@esbuild/android-arm64": @@ -27705,8 +32617,6 @@ __metadata: optional: true "@esbuild/netbsd-x64": optional: true - "@esbuild/openbsd-arm64": - optional: true "@esbuild/openbsd-x64": optional: true "@esbuild/sunos-x64": @@ -27719,14 +32629,14 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 0413c3b9257327fb598427688b7186ea335bf1693746fe5713cc93c95854d6388b8ed4ad643fddf5b5ace093f7dcd9038dd58e087bf2da1f04dfb4c5571660af + checksum: 5d253614e50cdb6ec22095afd0c414f15688e7278a7eb4f3720a6dd1306b0909cf431e7b9437a90d065a31b1c57be60130f63fe3e8d0083b588571f31ee6ec7b languageName: node linkType: hard "escalade@npm:^3.1.1": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e + version: 3.1.1 + resolution: "escalade@npm:3.1.1" + checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 languageName: node linkType: hard @@ -27772,7 +32682,7 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^1.13.0, escodegen@npm:^1.8.1": +"escodegen@npm:^1.11.1, escodegen@npm:^1.13.0, escodegen@npm:^1.8.1": version: 1.14.3 resolution: "escodegen@npm:1.14.3" dependencies: @@ -27791,7 +32701,26 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0, escodegen@npm:^2.1.0": +"escodegen@npm:^2.0.0": + version: 2.0.0 + resolution: "escodegen@npm:2.0.0" + dependencies: + esprima: ^4.0.1 + estraverse: ^5.2.0 + esutils: ^2.0.2 + optionator: ^0.8.1 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef + languageName: node + linkType: hard + +"escodegen@npm:^2.1.0": version: 2.1.0 resolution: "escodegen@npm:2.1.0" dependencies: @@ -27854,7 +32783,28 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.7, eslint-import-resolver-node@npm:^0.3.9": +"eslint-import-resolver-node@npm:^0.3.6": + version: 0.3.6 + resolution: "eslint-import-resolver-node@npm:0.3.6" + dependencies: + debug: ^3.2.7 + resolve: ^1.20.0 + checksum: 6266733af1e112970e855a5bcc2d2058fb5ae16ad2a6d400705a86b29552b36131ffc5581b744c23d550de844206fb55e9193691619ee4dbf225c4bde526b1c8 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.7": + version: 0.3.7 + resolution: "eslint-import-resolver-node@npm:0.3.7" + dependencies: + debug: ^3.2.7 + is-core-module: ^2.11.0 + resolve: ^1.22.1 + checksum: 3379aacf1d2c6952c1b9666c6fa5982c3023df695430b0d391c0029f6403a7775414873d90f397e98ba6245372b6c8960e16e74d9e4a3b0c0a4582f3bdbe3d6e + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.9": version: 0.3.9 resolution: "eslint-import-resolver-node@npm:0.3.9" dependencies: @@ -27866,39 +32816,45 @@ __metadata: linkType: hard "eslint-import-resolver-typescript@npm:^3.5.2": - version: 3.6.3 - resolution: "eslint-import-resolver-typescript@npm:3.6.3" + version: 3.5.5 + resolution: "eslint-import-resolver-typescript@npm:3.5.5" dependencies: - "@nolyfill/is-core-module": 1.0.39 - debug: ^4.3.5 - enhanced-resolve: ^5.15.0 - eslint-module-utils: ^2.8.1 - fast-glob: ^3.3.2 - get-tsconfig: ^4.7.5 - is-bun-module: ^1.0.2 + debug: ^4.3.4 + enhanced-resolve: ^5.12.0 + eslint-module-utils: ^2.7.4 + get-tsconfig: ^4.5.0 + globby: ^13.1.3 + is-core-module: ^2.11.0 is-glob: ^4.0.3 + synckit: ^0.8.5 peerDependencies: eslint: "*" eslint-plugin-import: "*" - eslint-plugin-import-x: "*" + checksum: 27e6276fdff5d377c9036362ff736ac29852106e883ff589ea9092dc57d4bc2a67a82d75134221124f05045f9a7e2114a159b2c827d1f9f64d091f7afeab0f58 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.7.4": + version: 2.8.0 + resolution: "eslint-module-utils@npm:2.8.0" + dependencies: + debug: ^3.2.7 peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: + eslint: optional: true - checksum: 1ed0cab4f3852de1b14ea6978e76c27694b253a289c2030a35847ba8ab6ac4258d513877f83ea7bc265f746d570240a6348b11d77cc9cd77589749ad86a32234 + checksum: 74c6dfea7641ebcfe174be61168541a11a14aa8d72e515f5f09af55cd0d0862686104b0524aa4b8e0ce66418a44aa38a94d2588743db5fd07a6b49ffd16921d2 languageName: node linkType: hard -"eslint-module-utils@npm:^2.12.0, eslint-module-utils@npm:^2.7.4, eslint-module-utils@npm:^2.8.1": - version: 2.12.0 - resolution: "eslint-module-utils@npm:2.12.0" +"eslint-module-utils@npm:^2.8.0": + version: 2.8.1 + resolution: "eslint-module-utils@npm:2.8.1" dependencies: debug: ^3.2.7 peerDependenciesMeta: eslint: optional: true - checksum: be3ac52e0971c6f46daeb1a7e760e45c7c45f820c8cc211799f85f10f04ccbf7afc17039165d56cb2da7f7ca9cec2b3a777013cddf0b976784b37eb9efa24180 + checksum: 3cecd99b6baf45ffc269167da0f95dcb75e5aa67b93d73a3bab63e2a7eedd9cdd6f188eed048e2f57c1b77db82c9cbf2adac20b512fa70e597d863dd3720170d languageName: node linkType: hard @@ -27964,31 +32920,29 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.28.1": - version: 2.31.0 - resolution: "eslint-plugin-import@npm:2.31.0" + version: 2.29.1 + resolution: "eslint-plugin-import@npm:2.29.1" dependencies: - "@rtsao/scc": ^1.1.0 - array-includes: ^3.1.8 - array.prototype.findlastindex: ^1.2.5 + array-includes: ^3.1.7 + array.prototype.findlastindex: ^1.2.3 array.prototype.flat: ^1.3.2 array.prototype.flatmap: ^1.3.2 debug: ^3.2.7 doctrine: ^2.1.0 eslint-import-resolver-node: ^0.3.9 - eslint-module-utils: ^2.12.0 - hasown: ^2.0.2 - is-core-module: ^2.15.1 + eslint-module-utils: ^2.8.0 + hasown: ^2.0.0 + is-core-module: ^2.13.1 is-glob: ^4.0.3 minimatch: ^3.1.2 - object.fromentries: ^2.0.8 - object.groupby: ^1.0.3 - object.values: ^1.2.0 + object.fromentries: ^2.0.7 + object.groupby: ^1.0.1 + object.values: ^1.1.7 semver: ^6.3.1 - string.prototype.trimend: ^1.0.8 tsconfig-paths: ^3.15.0 peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - checksum: b1d2ac268b3582ff1af2a72a2c476eae4d250c100f2e335b6e102036e4a35efa530b80ec578dfc36761fabb34a635b9bf5ab071abe9d4404a4bb054fdf22d415 + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: e65159aef808136d26d029b71c8c6e4cb5c628e65e5de77f1eb4c13a379315ae55c9c3afa847f43f4ff9df7e54515c77ffc6489c6a6f81f7dd7359267577468c languageName: node linkType: hard @@ -28037,28 +32991,28 @@ __metadata: linkType: hard "eslint-plugin-jsx-a11y@npm:^6.7.1": - version: 6.10.1 - resolution: "eslint-plugin-jsx-a11y@npm:6.10.1" + version: 6.9.0 + resolution: "eslint-plugin-jsx-a11y@npm:6.9.0" dependencies: - aria-query: ^5.3.2 + aria-query: ~5.1.3 array-includes: ^3.1.8 array.prototype.flatmap: ^1.3.2 ast-types-flow: ^0.0.8 - axe-core: ^4.10.0 - axobject-query: ^4.1.0 + axe-core: ^4.9.1 + axobject-query: ~3.1.1 damerau-levenshtein: ^1.0.8 emoji-regex: ^9.2.2 - es-iterator-helpers: ^1.1.0 + es-iterator-helpers: ^1.0.19 hasown: ^2.0.2 jsx-ast-utils: ^3.3.5 language-tags: ^1.0.9 minimatch: ^3.1.2 object.fromentries: ^2.0.8 safe-regex-test: ^1.0.3 - string.prototype.includes: ^2.0.1 + string.prototype.includes: ^2.0.0 peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - checksum: 6399ed556306edd454c3d835fee475e6a286aa44c8fb95b4e9245717ff26f7a251f38d75e194293d78fdbc8f2fdbf223573ac2c82dc1e2db3d5d6c137632b6ec + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 122cbd22bbd8c3e4a37f386ec183ada63a4ecfa7af7d40cd8a110777ac5ad5ff542f60644596a9e2582ed138a1cc6d96c5d5ca934105e29d5245d6c951ebc3ef languageName: node linkType: hard @@ -28154,16 +33108,44 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:^7.30.1, eslint-plugin-react@npm:^7.33.2": - version: 7.37.2 - resolution: "eslint-plugin-react@npm:7.37.2" +"eslint-plugin-react@npm:^7.30.1": + version: 7.34.2 + resolution: "eslint-plugin-react@npm:7.34.2" + dependencies: + array-includes: ^3.1.8 + array.prototype.findlast: ^1.2.5 + array.prototype.flatmap: ^1.3.2 + array.prototype.toreversed: ^1.1.2 + array.prototype.tosorted: ^1.1.3 + doctrine: ^2.1.0 + es-iterator-helpers: ^1.0.19 + estraverse: ^5.3.0 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.1.2 + object.entries: ^1.1.8 + object.fromentries: ^2.0.8 + object.hasown: ^1.1.4 + object.values: ^1.2.0 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.5 + semver: ^6.3.1 + string.prototype.matchall: ^4.0.11 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: aed331239f3a64fcd884380534ece4b8716f1eca4899c8636d04306879e6b4e7339e28e427bdd571d372b78b713025e0767e5f5b5486a8d19bff82616ebe8959 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.33.2": + version: 7.35.0 + resolution: "eslint-plugin-react@npm:7.35.0" dependencies: array-includes: ^3.1.8 array.prototype.findlast: ^1.2.5 array.prototype.flatmap: ^1.3.2 array.prototype.tosorted: ^1.1.4 doctrine: ^2.1.0 - es-iterator-helpers: ^1.1.0 + es-iterator-helpers: ^1.0.19 estraverse: ^5.3.0 hasown: ^2.0.2 jsx-ast-utils: ^2.4.1 || ^3.0.0 @@ -28178,7 +33160,7 @@ __metadata: string.prototype.repeat: ^1.0.0 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 7f5203afee7fbe3702b27fdd2b9a3c0ccbbb47d0672f58311b9d8a08dea819c9da4a87c15e8bd508f2562f327a9d29ee8bd9cd189bf758d8dc903de5648b0bfa + checksum: cd4d3c0567e947964643dda5fc80147e058d75f06bac47c3f086ff0cd6156286c669d98e685e3834997c4043f3922b90e6374b6c3658f22abd025dbd41acc23f languageName: node linkType: hard @@ -28192,8 +33174,8 @@ __metadata: linkType: hard "eslint-plugin-storybook@npm:^0.6.12": - version: 0.6.15 - resolution: "eslint-plugin-storybook@npm:0.6.15" + version: 0.6.12 + resolution: "eslint-plugin-storybook@npm:0.6.12" dependencies: "@storybook/csf": ^0.0.1 "@typescript-eslint/utils": ^5.45.0 @@ -28201,7 +33183,7 @@ __metadata: ts-dedent: ^2.2.0 peerDependencies: eslint: ">=6" - checksum: e2c4d7be3e695c88d7194c363fba8ac644b36583bf9d608aa59dcd53cc5e422f7828611ee49c7934639ce827c0206d33fa94b3ea452ffbd2c8e7254ed90bc412 + checksum: 8e0e160c71216019c291a5a03b797b5359076067d16ea03b3dec63594093d45398f028d15c47eb89f2ddb6e8db18cc7e376b02d921dacc4fb31bbc8da46363c8 languageName: node linkType: hard @@ -28232,7 +33214,21 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.4.1": + version: 3.4.1 + resolution: "eslint-visitor-keys@npm:3.4.1" + checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0": + version: 3.3.0 + resolution: "eslint-visitor-keys@npm:3.3.0" + checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 @@ -28287,19 +33283,18 @@ __metadata: languageName: node linkType: hard -"esniff@npm:^2.0.1": - version: 2.0.1 - resolution: "esniff@npm:2.0.1" +"espree@npm:^9.0.0": + version: 9.4.1 + resolution: "espree@npm:9.4.1" dependencies: - d: ^1.0.1 - es5-ext: ^0.10.62 - event-emitter: ^0.3.5 - type: ^2.7.2 - checksum: d814c0e5c39bce9925b2e65b6d8767af72c9b54f35a65f9f3d6e8c606dce9aebe35a9599d30f15b0807743f88689f445163cfb577a425de4fb8c3c5bc16710cc + acorn: ^8.8.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.3.0 + checksum: 4d266b0cf81c7dfe69e542c7df0f246e78d29f5b04dda36e514eb4c7af117ee6cfbd3280e560571ed82ff6c9c3f0003c05b82583fc7a94006db7497c4fe4270e languageName: node linkType: hard -"espree@npm:^9.0.0, espree@npm:^9.6.0, espree@npm:^9.6.1": +"espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" dependencies: @@ -28310,16 +33305,6 @@ __metadata: languageName: node linkType: hard -"esprima@npm:1.2.2": - version: 1.2.2 - resolution: "esprima@npm:1.2.2" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 4f10006f0e315f2f7d8cf6630e465f183512f1ab2e862b11785a133ce37ed1696573deefb5256e510eaa4368342b13b393334477f6ccdcdb8f10e782b0f5e6dc - languageName: node - linkType: hard - "esprima@npm:^2.1.0": version: 2.7.3 resolution: "esprima@npm:2.7.3" @@ -28340,12 +33325,21 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0, esquery@npm:^1.4.2": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" +"esquery@npm:^1.4.0": + version: 1.4.0 + resolution: "esquery@npm:1.4.0" + dependencies: + estraverse: ^5.1.0 + checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" dependencies: estraverse: ^5.1.0 - checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 languageName: node linkType: hard @@ -28372,7 +33366,14 @@ __metadata: languageName: node linkType: hard -"estree-walker@npm:^2.0.2": +"estree-is-function@npm:^1.0.0": + version: 1.0.0 + resolution: "estree-is-function@npm:1.0.0" + checksum: eb4c0ca96f75f1fe14e4520823d40b55266377c50f81201e0172ac2c879c2770d1e6145897748b67e4855821a7e58e31e04d14ec32fd6132845dd068627b60d8 + languageName: node + linkType: hard + +"estree-walker@npm:^2.0.1": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc @@ -28402,17 +33403,7 @@ __metadata: languageName: node linkType: hard -"eval@npm:0.1.8": - version: 0.1.8 - resolution: "eval@npm:0.1.8" - dependencies: - "@types/node": "*" - require-like: ">= 0.1.1" - checksum: d005567f394cfbe60948e34982e4637d2665030f9aa7dcac581ea6f9ec6eceb87133ed3dc0ae21764aa362485c242a731dbb6371f1f1a86807c58676431e9d1a - languageName: node - linkType: hard - -"event-emitter@npm:^0.3.5": +"event-emitter@npm:^0.3.5, event-emitter@npm:~0.3.5": version: 0.3.5 resolution: "event-emitter@npm:0.3.5" dependencies: @@ -28464,13 +33455,6 @@ __metadata: languageName: node linkType: hard -"eventemitter3@npm:^5.0.1": - version: 5.0.1 - resolution: "eventemitter3@npm:5.0.1" - checksum: 543d6c858ab699303c3c32e0f0f47fc64d360bf73c3daf0ac0b5079710e340d6fe9f15487f94e66c629f5f82cd1a8678d692f3dbb6f6fcd1190e1b97fcad36f8 - languageName: node - linkType: hard - "events@npm:1.1.1": version: 1.1.1 resolution: "events@npm:1.1.1" @@ -28535,7 +33519,24 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0, execa@npm:^5.1.1": +"execa@npm:^5.0.0": + version: 5.0.0 + resolution: "execa@npm:5.0.0" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.0 + human-signals: ^2.1.0 + is-stream: ^2.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^4.0.1 + onetime: ^5.1.2 + signal-exit: ^3.0.3 + strip-final-newline: ^2.0.0 + checksum: a044367ebdcc68ca019810cb134510fc77bbc55c799122258ee0e00e289c132941ab48c2a331a036699c42bc8d479d451ae67c105fce5ce5cc813e7dd92d642b + languageName: node + linkType: hard + +"execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -28552,20 +33553,20 @@ __metadata: languageName: node linkType: hard -"execa@npm:^8.0.1": - version: 8.0.1 - resolution: "execa@npm:8.0.1" +"execa@npm:^7.1.1": + version: 7.1.1 + resolution: "execa@npm:7.1.1" dependencies: cross-spawn: ^7.0.3 - get-stream: ^8.0.1 - human-signals: ^5.0.0 + get-stream: ^6.0.1 + human-signals: ^4.3.0 is-stream: ^3.0.0 merge-stream: ^2.0.0 npm-run-path: ^5.1.0 onetime: ^6.0.0 - signal-exit: ^4.1.0 + signal-exit: ^3.0.7 strip-final-newline: ^3.0.0 - checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f + checksum: 21fa46fc69314ace4068cf820142bdde5b643a5d89831c2c9349479c1555bff137a291b8e749e7efca36535e4e0a8c772c11008ca2e84d2cbd6ca141a3c8f937 languageName: node linkType: hard @@ -28606,7 +33607,20 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.7.0": +"expect@npm:^29.0.0": + version: 29.5.0 + resolution: "expect@npm:29.5.0" + dependencies: + "@jest/expect-utils": ^29.5.0 + jest-get-type: ^29.4.3 + jest-matcher-utils: ^29.5.0 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 + checksum: 58f70b38693df6e5c6892db1bcd050f0e518d6f785175dc53917d4fa6a7359a048e5690e19ddcb96b65c4493881dd89a3dabdab1a84dfa55c10cdbdabf37b2d7 + languageName: node + linkType: hard + +"expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: @@ -28663,13 +33677,13 @@ __metadata: linkType: hard "expo-font@npm:~12.0.9": - version: 12.0.10 - resolution: "expo-font@npm:12.0.10" + version: 12.0.9 + resolution: "expo-font@npm:12.0.9" dependencies: fontfaceobserver: ^2.1.0 peerDependencies: expo: "*" - checksum: c8fdc046158d4c2d71d81fcd9ba115bc0e142bc0d637ae9b5fea04cd816c62c051f63e44685530109106565d29feca2035ef6123c56cf9c951d0a2775a8cd9a7 + checksum: adad225ed6002d5d527808b8f463bc59a1a1626fb2ff34918dcbd2172757977c056101f737ed9523f6d55e0aa88a64988002eb9b6d22f379d5956883f7451379 languageName: node linkType: hard @@ -28779,13 +33793,6 @@ __metadata: languageName: node linkType: hard -"exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 - languageName: node - linkType: hard - "express-validator@npm:6.14.0": version: 6.14.0 resolution: "express-validator@npm:6.14.0" @@ -28796,7 +33803,7 @@ __metadata: languageName: node linkType: hard -"express@npm:4.18.2": +"express@npm:4.18.2, express@npm:^4.17.3": version: 4.18.2 resolution: "express@npm:4.18.2" dependencies: @@ -28874,51 +33881,12 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.17.3": - version: 4.21.1 - resolution: "express@npm:4.21.1" - dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: ~2.0.0 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: ~1.1.2 - on-finished: 2.4.1 - parseurl: ~1.3.3 - path-to-regexp: 0.1.10 - proxy-addr: ~2.0.7 - qs: 6.13.0 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: 5ac2b26d8aeddda5564fc0907227d29c100f90c0ead2ead9d474dc5108e8fb306c2de2083c4e3ba326e0906466f2b73417dbac16961f4075ff9f03785fd940fe - languageName: node - linkType: hard - -"ext@npm:^1.7.0": - version: 1.7.0 - resolution: "ext@npm:1.7.0" +"ext@npm:^1.1.2": + version: 1.4.0 + resolution: "ext@npm:1.4.0" dependencies: - type: ^2.7.2 - checksum: ef481f9ef45434d8c867cfd09d0393b60945b7c8a1798bedc4514cb35aac342ccb8d8ecb66a513e6a2b4ec1e294a338e3124c49b29736f8e7c735721af352c31 + type: ^2.0.0 + checksum: 70acfb68763ad888b34a1c8f2fd9ae5e7265c2470a58a7204645fea07fdbb802512944ea3820db5e643369a9364a98f01732c72e3f2ee577bc2582c3e7e370e3 languageName: node linkType: hard @@ -28958,6 +33926,13 @@ __metadata: languageName: node linkType: hard +"extract-files@npm:^9.0.0": + version: 9.0.0 + resolution: "extract-files@npm:9.0.0" + checksum: c31781d090f8d8f62cc541f1023b39ea863f24bd6fb3d4011922d71cbded70cef8191f2b70b43ec6cb5c5907cdad1dc5e9f29f78228936c10adc239091d8ab64 + languageName: node + linkType: hard + "extract-zip@npm:2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" @@ -28997,9 +33972,9 @@ __metadata: linkType: hard "extsprintf@npm:^1.2.0": - version: 1.4.1 - resolution: "extsprintf@npm:1.4.1" - checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 + version: 1.4.0 + resolution: "extsprintf@npm:1.4.0" + checksum: 184dc8a413eb4b1ff16bdce797340e7ded4d28511d56a1c9afa5a95bcff6ace154063823eaf0206dbbb0d14059d74f382a15c34b7c0636fa74a7e681295eb67e languageName: node linkType: hard @@ -29010,7 +33985,21 @@ __metadata: languageName: node linkType: hard -"fast-copy@npm:^2.1.0, fast-copy@npm:^2.1.1, fast-copy@npm:^2.1.7": +"fast-copy@npm:^2.1.0": + version: 2.1.1 + resolution: "fast-copy@npm:2.1.1" + checksum: fb091c7192d5514a632a05f3041ff597892bbfea16630853a8fff8c739c5628946ad32ccec9b69c8277a61419e9a4b751737139d8db396a9c4d9b35f1e151f76 + languageName: node + linkType: hard + +"fast-copy@npm:^2.1.1, fast-copy@npm:^2.1.3": + version: 2.1.3 + resolution: "fast-copy@npm:2.1.3" + checksum: 5d1a4a218304893ed0c4593b5d21b282202f9e74ed33fee261c0c574e81003863e0c6fd0d857451dfe15f3e1919acd8084ce52c2457c9410e61e1aea9b388029 + languageName: node + linkType: hard + +"fast-copy@npm:^2.1.7": version: 2.1.7 resolution: "fast-copy@npm:2.1.7" checksum: af8016c174b02bd4f706ffdf9f138511b17b748665b291fec6c5ca1922cb55da35cf86ded46b31890930bcf9b1c2481c03c793a47110ab81ec385e14972b9d7e @@ -29018,16 +34007,9 @@ __metadata: linkType: hard "fast-copy@npm:^3.0.0": - version: 3.0.2 - resolution: "fast-copy@npm:3.0.2" - checksum: 47f584bcede08ab3198559d3e0e093a547d567715b86be2198da6e3366c3c73eed550d97b86f9fb90dae179982b89c15d68187def960f522cdce14bacdfc6184 - languageName: node - linkType: hard - -"fast-decode-uri-component@npm:^1.0.1": - version: 1.0.1 - resolution: "fast-decode-uri-component@npm:1.0.1" - checksum: 427a48fe0907e76f0e9a2c228e253b4d8a8ab21d130ee9e4bb8339c5ba4086235cf9576831f7b20955a752eae4b525a177ff9d5825dd8d416e7726939194fbee + version: 3.0.1 + resolution: "fast-copy@npm:3.0.1" + checksum: 5496b5cf47df29eea479deef03b6b7188626a2cbc356b3015649062846729de6f1a9f555f937e772da8feae0a1231fab13096ed32424b2d61e4d065abc9969fe languageName: node linkType: hard @@ -29045,21 +34027,21 @@ __metadata: languageName: node linkType: hard -"fast-equals@npm:^5.0.0": - version: 5.0.1 - resolution: "fast-equals@npm:5.0.1" - checksum: fbb3b6a74f3a0fa930afac151ff7d01639159b4fddd2678b5d50708e0ba38e9ec14602222d10dadb8398187342692c04fbef5a62b1cfcc7942fe03e754e064bc +"fast-equals@npm:^2.0.0": + version: 2.0.3 + resolution: "fast-equals@npm:2.0.3" + checksum: ef475f52cb93f67c9452da3aed0d60a7cf63c844325cfd741b2863b2e9037a79c81e7f6786295b7f84501971626dce9e8b5d1e02c08506514a75d9cd9703240e languageName: node linkType: hard -"fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": +"fast-fifo@npm:^1.1.0, fast-fifo@npm:^1.2.0": version: 1.3.2 resolution: "fast-fifo@npm:1.3.2" checksum: 6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275 languageName: node linkType: hard -"fast-glob@npm:3.2.11": +"fast-glob@npm:3.2.11, fast-glob@npm:^3.2.4, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9": version: 3.2.11 resolution: "fast-glob@npm:3.2.11" dependencies: @@ -29085,7 +34067,20 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.4, fast-glob@npm:^3.2.5, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.5": + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.4 + checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 + languageName: node + linkType: hard + +"fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -29126,15 +34121,6 @@ __metadata: languageName: node linkType: hard -"fast-querystring@npm:^1.1.1": - version: 1.1.2 - resolution: "fast-querystring@npm:1.1.2" - dependencies: - fast-decode-uri-component: ^1.0.1 - checksum: 7149f82ee9ac39a9c08c7ffe435b9f6deade76ae5e3675fe1835720513e8c4bc541e666b4b7b1c0c07e08f369dcf4828d00f2bee39889a90a168e1439cf27b0b - languageName: node - linkType: hard - "fast-safe-stringify@npm:2.1.1, fast-safe-stringify@npm:^2.0.6, fast-safe-stringify@npm:^2.0.7, fast-safe-stringify@npm:^2.1.1": version: 2.1.1 resolution: "fast-safe-stringify@npm:2.1.1" @@ -29157,18 +34143,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.3 - resolution: "fast-uri@npm:3.0.3" - checksum: c52e6c86465f5c240e84a4485fb001088cc743d261a4b54b0050ce4758b1648bdbe53da1328ef9620149dca1435e3de64184f226d7c0a3656cb5837b3491e149 - languageName: node - linkType: hard - -"fast-url-parser@npm:^1.1.3": - version: 1.1.3 - resolution: "fast-url-parser@npm:1.1.3" - dependencies: - punycode: ^1.3.2 - checksum: 5043d0c4a8d775ff58504d56c096563c11b113e4cb8a2668c6f824a1cd4fb3812e2fdf76537eb24a7ce4ae7def6bd9747da630c617cf2a4b6ce0c42514e4f21c + version: 3.0.1 + resolution: "fast-uri@npm:3.0.1" + checksum: 106143ff83705995225dcc559411288f3337e732bb2e264e79788f1914b6bd8f8bc3683102de60b15ba00e6ebb443633cabac77d4ebc5cb228c47cf955e199ff languageName: node linkType: hard @@ -29192,21 +34169,25 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:^4.0.12, fast-xml-parser@npm:^4.2.2, fast-xml-parser@npm:^4.2.4": - version: 4.5.0 - resolution: "fast-xml-parser@npm:4.5.0" +"fast-xml-parser@npm:^4.0.12": + version: 4.2.0 + resolution: "fast-xml-parser@npm:4.2.0" dependencies: strnum: ^1.0.5 bin: fxparser: src/cli/cli.js - checksum: 696dc98da46f0f48eb26dfe1640a53043ea64f2420056374e62abbb5e620f092f8df3c3ff3195505a2eefab2057db3bf0ebaac63557f277934f6cce4e7da027c + checksum: 2e634740367781c365bd3d41608c1b39eceb8fc8a551228da09887220135cbaf16527c0d919c3334bea6ed416dc0171a6a8546a2beb3a4096f7cc32bbbc04091 languageName: node linkType: hard -"fastest-levenshtein@npm:^1.0.12": - version: 1.0.16 - resolution: "fastest-levenshtein@npm:1.0.16" - checksum: a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71 +"fast-xml-parser@npm:^4.2.4": + version: 4.4.0 + resolution: "fast-xml-parser@npm:4.4.0" + dependencies: + strnum: ^1.0.5 + bin: + fxparser: src/cli/cli.js + checksum: ad33a4b5165a0ffcb6e17ae78825bd4619a8298844a8a8408f2ea141a0d2d9439d18865dc5254162f09fe54d510ff18e5d5c0a190869cab21fc745ee66be816b languageName: node linkType: hard @@ -29218,11 +34199,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" + version: 1.11.0 + resolution: "fastq@npm:1.11.0" dependencies: reusify: ^1.0.4 - checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88 + checksum: 9db0ceea9280c5f207da40c562a4e574913c18933cd74b880b01bf8e81a9a6e368ec71e89c9c1b9f4066d0275cc22600efd6dde87f713217acbf67076481734b languageName: node linkType: hard @@ -29236,11 +34217,11 @@ __metadata: linkType: hard "fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" + version: 2.0.1 + resolution: "fb-watchman@npm:2.0.1" dependencies: bser: 2.1.1 - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 + checksum: 8510230778ab3a51c27dffb1b76ef2c24fab672a42742d3c0a45c2e9d1e5f20210b1fbca33486088da4a9a3958bde96b5aec0a63aac9894b4e9df65c88b2cbd6 languageName: node linkType: hard @@ -29261,17 +34242,17 @@ __metadata: linkType: hard "fbjs@npm:^3.0.0": - version: 3.0.5 - resolution: "fbjs@npm:3.0.5" + version: 3.0.0 + resolution: "fbjs@npm:3.0.0" dependencies: - cross-fetch: ^3.1.5 + cross-fetch: ^3.0.4 fbjs-css-vars: ^1.0.0 loose-envify: ^1.0.0 object-assign: ^4.1.0 promise: ^7.1.1 setimmediate: ^1.0.5 - ua-parser-js: ^1.0.35 - checksum: e609b5b64686bc96495a5c67728ed9b2710b9b3d695c5759c5f5e47c9483d1c323543ac777a86459e3694efc5712c6ce7212e944feb19752867d699568bb0e54 + ua-parser-js: ^0.7.18 + checksum: 85ec57d8dbeddd7c82bf8f111a3c7de1abc1f4d7c603d6ccbcc1ec8dce35ff5b7a113dd34acbf7930093e5533c37a2298a92d342077f967bef34dc7cf2f3f07e languageName: node linkType: hard @@ -29285,9 +34266,9 @@ __metadata: linkType: hard "fecha@npm:^4.2.0": - version: 4.2.3 - resolution: "fecha@npm:4.2.3" - checksum: f94e2fb3acf5a7754165d04549460d3ae6c34830394d20c552197e3e000035d69732d74af04b9bed3283bf29fe2a9ebdcc0085e640b0be3cc3658b9726265e31 + version: 4.2.0 + resolution: "fecha@npm:4.2.0" + checksum: 4eb4235959161446f6ec1a24e34eba7362187d2c96d9dd86ea4290e345d1efd2175ccb01bbef9ee852c6790aa7af2539d08361b0499ebc9bf23b4791f5666cd0 languageName: node linkType: hard @@ -29321,9 +34302,9 @@ __metadata: linkType: hard "fetch-retry@npm:^5.0.2": - version: 5.0.6 - resolution: "fetch-retry@npm:5.0.6" - checksum: 4ad8bca6ec7a7b1212e636bb422a9ae8bb9dce38df0b441c9eb77a29af99b368029d6248ff69427da67e3d43c53808b121135ea395e7fe4f8f383e0ad65b4f27 + version: 5.0.2 + resolution: "fetch-retry@npm:5.0.2" + checksum: 888d81e2a872cd47d4e5cf9156e13e7b73cb902a677f882a88fb3d8d5fb029a4238b44b07328dfb7735860b038fdc3d92acbef7f07d8633a314e4809d2f1f9c0 languageName: node linkType: hard @@ -29334,12 +34315,10 @@ __metadata: languageName: node linkType: hard -"figlet@npm:^1.2.0": - version: 1.8.0 - resolution: "figlet@npm:1.8.0" - bin: - figlet: bin/index.js - checksum: b59233a46e7f93fa08f3b7e86e6b24a9ae02cd94cfa2e9b8277311edf543a7a67ec278cd47846304f710f7dcbb9c28507ebcd113bc7b2e3094415ec229bb2a9a +"figlet@npm:^1.1.1, figlet@npm:^1.2.0": + version: 1.5.2 + resolution: "figlet@npm:1.5.2" + checksum: cc860391669b44e119871d589e09a2814aa86351726a5791e0d3e2d098e4fc37171c85fcfed13f4e9000995bd004dc6dbf848da5fe458cf1477e776b7318986f languageName: node linkType: hard @@ -29408,7 +34387,7 @@ __metadata: languageName: node linkType: hard -"file-system-cache@npm:2.3.0": +"file-system-cache@npm:2.3.0, file-system-cache@npm:^2.0.0": version: 2.3.0 resolution: "file-system-cache@npm:2.3.0" dependencies: @@ -29418,18 +34397,6 @@ __metadata: languageName: node linkType: hard -"file-system-cache@npm:^2.0.0": - version: 2.4.7 - resolution: "file-system-cache@npm:2.4.7" - dependencies: - "@types/fs-extra": 11.0.1 - "@types/ramda": 0.29.3 - fs-extra: 11.1.1 - ramda: 0.29.0 - checksum: e8511718a983c121525f53cb413dc6371662e69231f1736e364c496c1874ea0ee1f3284d9abd1ce87d40e6f62ab495b59794173dd9a62ce5ffab96feb93f43bf - languageName: node - linkType: hard - "file-uri-to-path@npm:1.0.0": version: 1.0.0 resolution: "file-uri-to-path@npm:1.0.0" @@ -29444,6 +34411,15 @@ __metadata: languageName: node linkType: hard +"filelist@npm:^1.0.1": + version: 1.0.2 + resolution: "filelist@npm:1.0.2" + dependencies: + minimatch: ^3.0.4 + checksum: 4d6953cb6f76c5345a52fc50222949e244946f485462ab6bae977176fff64fe5200cc1f44db175c27fc887f91cead401504c22eefcdcc064012ee44759947561 + languageName: node + linkType: hard + "filelist@npm:^1.0.4": version: 1.0.4 resolution: "filelist@npm:1.0.4" @@ -29453,12 +34429,12 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^7.1.1": - version: 7.1.1 - resolution: "fill-range@npm:7.1.1" +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" dependencies: to-regex-range: ^5.0.1 - checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798 + checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 languageName: node linkType: hard @@ -29492,27 +34468,13 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:1.3.1": - version: 1.3.1 - resolution: "finalhandler@npm:1.3.1" - dependencies: - debug: 2.6.9 - encodeurl: ~2.0.0 - escape-html: ~1.0.3 - on-finished: 2.4.1 - parseurl: ~1.3.3 - statuses: 2.0.1 - unpipe: ~1.0.0 - checksum: a8c58cd97c9cd47679a870f6833a7b417043f5a288cd6af6d0f49b476c874a506100303a128b6d3b654c3d74fa4ff2ffed68a48a27e8630cda5c918f2977dcf4 - languageName: node - linkType: hard - "find-babel-config@npm:^2.1.1": - version: 2.1.2 - resolution: "find-babel-config@npm:2.1.2" + version: 2.1.1 + resolution: "find-babel-config@npm:2.1.1" dependencies: json5: ^2.2.3 - checksum: 268f29cb38ee086b0f953c89f762dcea30b5b0e14abee2b39516410c00b49baa6821f598bd50346c93584e5625c5740f5c8b7e34993f568787a068f84dacc8c2 + path-exists: ^4.0.0 + checksum: 4be54397339520e0cd49870acb10366684ffc001fd0b7bffedd0fe9d3e1d82234692d3cb4e5ba95280a35887238ba6f82dc79569a13a3749ae3931c23e0b3a99 languageName: node linkType: hard @@ -29527,7 +34489,7 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^3.0.0, find-cache-dir@npm:^3.3.1": +"find-cache-dir@npm:^3.0.0, find-cache-dir@npm:^3.3.1, find-cache-dir@npm:^3.3.2": version: 3.3.2 resolution: "find-cache-dir@npm:3.3.2" dependencies: @@ -29538,16 +34500,6 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "find-cache-dir@npm:4.0.0" - dependencies: - common-path-prefix: ^3.0.0 - pkg-dir: ^7.0.0 - checksum: 52a456a80deeb27daa3af6e06059b63bdb9cc4af4d845fc6d6229887e505ba913cd56000349caa60bc3aa59dacdb5b4c37903d4ba34c75102d83cab330b70d2f - languageName: node - linkType: hard - "find-root@npm:^1.1.0": version: 1.1.0 resolution: "find-root@npm:1.1.0" @@ -29555,6 +34507,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:5.0.0, find-up@npm:^5.0.0, find-up@npm:~5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + "find-up@npm:^1.0.0": version: 1.1.2 resolution: "find-up@npm:1.1.2" @@ -29584,26 +34546,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^5.0.0, find-up@npm:~5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"find-up@npm:^6.3.0": - version: 6.3.0 - resolution: "find-up@npm:6.3.0" - dependencies: - locate-path: ^7.1.0 - path-exists: ^5.0.0 - checksum: 9a21b7f9244a420e54c6df95b4f6fc3941efd3c3e5476f8274eb452f6a85706e7a6a90de71353ee4f091fcb4593271a6f92810a324ec542650398f928783c280 - languageName: node - linkType: hard - "find-yarn-workspace-root@npm:~2.0.0": version: 2.0.0 resolution: "find-yarn-workspace-root@npm:2.0.0" @@ -29637,13 +34579,12 @@ __metadata: linkType: hard "flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" + version: 3.0.4 + resolution: "flat-cache@npm:3.0.4" dependencies: - flatted: ^3.2.9 - keyv: ^4.5.3 + flatted: ^3.1.0 rimraf: ^3.0.2 - checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec + checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 languageName: node linkType: hard @@ -29656,10 +34597,10 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.2.9": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 85ae7181650bb728c221e7644cbc9f4bf28bc556f2fc89bb21266962bdf0ce1029cc7acc44bb646cd469d9baac7c317f64e841c4c4c00516afa97320cdac7f94 +"flatted@npm:^3.1.0": + version: 3.1.1 + resolution: "flatted@npm:3.1.1" + checksum: 508935e3366d95444131f0aaa801a4301f24ea5bcb900d12764e7335b46b910730cc1b5bcfcfb8eccb7c8db261ba0671c6a7ca30d10870ff7a7756dc7e731a7a languageName: node linkType: hard @@ -29671,9 +34612,9 @@ __metadata: linkType: hard "flow-parser@npm:0.*": - version: 0.250.0 - resolution: "flow-parser@npm:0.250.0" - checksum: db4b5a6056e9853d83e2743621fa32311aa6af9633ac4eb083a51bcf4bc62dbac7df29dd9514006b4137c0a339d572d17ec6feeaa443782ed40aee17f8124d4a + version: 0.203.1 + resolution: "flow-parser@npm:0.203.1" + checksum: ed9beb3d83e352ed646bd9c06fa2a96a0b71cfd6f83d7ccf75a7c16dbe844128bcefefa6c8d0f09ef1337d0e0a9a9c8dadfd25bb149ed657ce91ec63a0a5113b languageName: node linkType: hard @@ -29693,15 +34634,6 @@ __metadata: languageName: node linkType: hard -"focus-lock@npm:^1.3.5": - version: 1.3.5 - resolution: "focus-lock@npm:1.3.5" - dependencies: - tslib: ^2.0.3 - checksum: 09fb0e4402694aabafa8f7d49a656f683bbf39c94efc0c0240934d880792ef86d8c11bb7d77ef6f5d68ccfdfb7f191ecc2b38a259182a6791bcf96860a408d1c - languageName: node - linkType: hard - "folder-hash@npm:4.0.0": version: 4.0.0 resolution: "folder-hash@npm:4.0.0" @@ -29715,13 +34647,33 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.6": - version: 1.15.9 - resolution: "follow-redirects@npm:1.15.9" +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0": + version: 1.14.8 + resolution: "follow-redirects@npm:1.14.8" peerDependenciesMeta: debug: optional: true - checksum: 859e2bacc7a54506f2bf9aacb10d165df78c8c1b0ceb8023f966621b233717dab56e8d08baadc3ad3b9db58af290413d585c999694b7c146aaf2616340c3d2a6 + checksum: 40c67899c2e3149a27e8b6498a338ff27f39fe138fde8d7f0756cb44b073ba0bfec3d52af28f20c5bdd67263d564d0d8d7b5efefd431de95c18c42f7b4aef457 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.14.9": + version: 1.15.2 + resolution: "follow-redirects@npm:1.15.2" + peerDependenciesMeta: + debug: + optional: true + checksum: faa66059b66358ba65c234c2f2a37fcec029dc22775f35d9ad6abac56003268baf41e55f9ee645957b32c7d9f62baf1f0b906e68267276f54ec4b4c597c2b190 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" + peerDependenciesMeta: + debug: + optional: true + checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5 languageName: node linkType: hard @@ -29757,10 +34709,10 @@ __metadata: linkType: hard "fontkit@npm:^2.0.2": - version: 2.0.4 - resolution: "fontkit@npm:2.0.4" + version: 2.0.2 + resolution: "fontkit@npm:2.0.2" dependencies: - "@swc/helpers": ^0.5.12 + "@swc/helpers": ^0.4.2 brotli: ^1.3.2 clone: ^2.1.2 dfa: ^1.2.0 @@ -29769,7 +34721,7 @@ __metadata: tiny-inflate: ^1.0.3 unicode-properties: ^1.4.0 unicode-trie: ^2.0.0 - checksum: 5daefcfd2f3c93abedf9e086a6512310bf9c36d440de8500dd1fab001290b12e80a164b9d192163cec4738fd6218e981dbcca9c3005bfe44388dd7f9744a8a27 + checksum: ef5841a46cb46af56496646136a4e61f014360caacb8d69e3a4abfda9d89d66d2a68b0855494c070c4e0675fb57724c9db37154913413609ebb065d35b23838e languageName: node linkType: hard @@ -29806,19 +34758,19 @@ __metadata: linkType: hard "foreach@npm:^2.0.4": - version: 2.0.6 - resolution: "foreach@npm:2.0.6" - checksum: f7b68494545ee41cbd0b0425ebf5386c265dc38ef2a9b0d5cd91a1b82172e939b4cf9387f8e0ebf6db4e368fc79ed323f2198424d5c774515ac3ed9b08901c0e + version: 2.0.5 + resolution: "foreach@npm:2.0.5" + checksum: dab4fbfef0b40b69ee5eab81bcb9626b8fa8b3469c8cfa26480f3e5e1ee08c40eae07048c9a967c65aeda26e774511ccc70b3f10a604c01753c6ef24361f0fc8 languageName: node linkType: hard "foreground-child@npm:^3.1.0": - version: 3.3.0 - resolution: "foreground-child@npm:3.3.0" + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" dependencies: cross-spawn: ^7.0.0 signal-exit: ^4.0.1 - checksum: 1989698488f725b05b26bc9afc8a08f08ec41807cd7b92ad85d96004ddf8243fd3e79486b8348c64a3011ae5cc2c9f0936af989e1f28339805d8bc178a75b451 + checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 languageName: node linkType: hard @@ -29880,9 +34832,9 @@ __metadata: linkType: hard "form-data-encoder@npm:^1.7.1": - version: 1.9.0 - resolution: "form-data-encoder@npm:1.9.0" - checksum: a73f617976f91b594dbd777ec5147abdb0c52d707475130f8cefc8ae9102ccf51be154b929f7c18323729c2763ac25b16055f5034bc188834e9febeb0d971d7f + version: 1.7.2 + resolution: "form-data-encoder@npm:1.7.2" + checksum: aeebd87a1cb009e13cbb5e4e4008e6202ed5f6551eb6d9582ba8a062005178907b90f4887899d3c993de879159b6c0c940af8196725b428b4248cec5af3acf5f languageName: node linkType: hard @@ -29898,36 +34850,46 @@ __metadata: linkType: hard "form-data@npm:^2.3.1, form-data@npm:^2.3.3, form-data@npm:^2.5.0": - version: 2.5.2 - resolution: "form-data@npm:2.5.2" + version: 2.5.1 + resolution: "form-data@npm:2.5.1" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.6 mime-types: ^2.1.12 - safe-buffer: ^5.2.1 - checksum: 89ed3d96238d6fa874d75435e20f1aad28a1c22a88ab4e726ac4f6b0d29bef33d7e5aca51248c1070eccbbf4df94020a53842e800b2f1fb63073881a268113b4 + checksum: 5134ada56cc246b293a1ac7678dba6830000603a3979cf83ff7b2f21f2e3725202237cfb89e32bcb38a1d35727efbd3c3a22e65b42321e8ade8eec01ce755d08 languageName: node linkType: hard "form-data@npm:^3.0.0, form-data@npm:^3.0.1": - version: 3.0.2 - resolution: "form-data@npm:3.0.2" + version: 3.0.1 + resolution: "form-data@npm:3.0.1" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.8 mime-types: ^2.1.12 - checksum: 25ffdeed693c8fc59b56082d15ad63f11688fabac2d14918fb339170020f66295e520a6659f3a698217f15c7924fbc593117ecd61d8391a146ea06d686793622 + checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d languageName: node linkType: hard -"form-data@npm:^4.0.0, form-data@npm:~4.0.0": - version: 4.0.1 - resolution: "form-data@npm:4.0.1" +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.8 mime-types: ^2.1.12 - checksum: ccee458cd5baf234d6b57f349fe9cc5f9a2ea8fd1af5ecda501a18fd1572a6dd3bf08a49f00568afd995b6a65af34cb8dec083cf9d582c4e621836499498dd84 + checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c + languageName: node + linkType: hard + +"form-data@npm:~2.3.2": + version: 2.3.3 + resolution: "form-data@npm:2.3.3" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 languageName: node linkType: hard @@ -29941,7 +34903,14 @@ __metadata: languageName: node linkType: hard -"formidable@npm:^1.2.0, formidable@npm:^1.2.1": +"formidable@npm:^1.2.0": + version: 1.2.2 + resolution: "formidable@npm:1.2.2" + checksum: 43b3ec9a8f8055112e1a9a40eb748cdcd86cb9076dc9a17b0caa2bc26908eeae865dbee62d7c4bc26681fb75c2f42d60323af9c9d06c843e94f51f9b46954a0a + languageName: node + linkType: hard + +"formidable@npm:^1.2.1, formidable@npm:^1.2.2": version: 1.2.6 resolution: "formidable@npm:1.2.6" checksum: 2b68ed07ba88302b9c63f8eda94f19a460cef6017bfda48348f09f41d2a36660c9353137991618e0e4c3db115b41e4b8f6fa63bc973b7a7c91dec66acdd02a56 @@ -29961,13 +34930,13 @@ __metadata: linkType: hard "formidable@npm:^3.2.4": - version: 3.5.2 - resolution: "formidable@npm:3.5.2" + version: 3.5.1 + resolution: "formidable@npm:3.5.1" dependencies: dezalgo: ^1.0.4 - hexoid: ^2.0.0 + hexoid: ^1.0.0 once: ^1.4.0 - checksum: 7c7972e8a15d45e6d2315a54d77f0900e5c610aff9b5730de326e2b34630604e1eff6c9d666e5504fba4c8818ccaed682d76a4fdb718b160c6afa2c250bf6a76 + checksum: 46b21496f9f985161cf7636163147b6728f9997c7e1d59433680d92619758bf6862330e6d105b5816bafcd1ab32f27ef183455991f93ef836ea731c68db62af9 languageName: node linkType: hard @@ -29996,9 +34965,9 @@ __metadata: linkType: hard "fp-ts@npm:^2.6.1": - version: 2.16.9 - resolution: "fp-ts@npm:2.16.9" - checksum: 910a443dbd2a1a3f76527e8b9c1ccaae103cffd797b812cb2fdd7143fca5c010a05df35dca18bb7b2083249ceaec59fa0436c0c3f4b5b60bf5c62934c1a23ce5 + version: 2.9.5 + resolution: "fp-ts@npm:2.9.5" + checksum: 92151abdc5d354c5b7f175554fa7beea57781b00d73bb77e114872e48cd8ac88653a95cc9771df965fa2388b807c3a82864a5c12676ed6d02131d46edb3ac242 languageName: node linkType: hard @@ -30009,28 +34978,30 @@ __metadata: languageName: node linkType: hard -"fraction.js@npm:^4.3.7": - version: 4.3.7 - resolution: "fraction.js@npm:4.3.7" - checksum: e1553ae3f08e3ba0e8c06e43a3ab20b319966dfb7ddb96fd9b5d0ee11a66571af7f993229c88ebbb0d4a816eb813a24ed48207b140d442a8f76f33763b8d1f3f +"fraction.js@npm:^4.2.0": + version: 4.2.0 + resolution: "fraction.js@npm:4.2.0" + checksum: 8c76a6e21dedea87109d6171a0ac77afa14205794a565d71cb10d2925f629a3922da61bf45ea52dbc30bce4d8636dc0a27213a88cbd600eab047d82f9a3a94c5 languageName: node linkType: hard -"framer-motion@npm:9.0.0": - version: 9.0.0 - resolution: "framer-motion@npm:9.0.0" +"framer-motion@npm:11.11.9": + version: 11.11.9 + resolution: "framer-motion@npm:11.11.9" dependencies: - "@emotion/is-prop-valid": ^0.8.2 - "@motionone/dom": ^10.15.3 - hey-listen: ^1.0.8 tslib: ^2.4.0 peerDependencies: + "@emotion/is-prop-valid": "*" react: ^18.0.0 react-dom: ^18.0.0 - dependenciesMeta: + peerDependenciesMeta: "@emotion/is-prop-valid": optional: true - checksum: eaafa53fc5e48dc6ea241c6259fa192bd467fb46bda416bf0d0855a81ed48761f66905bb9f39185746c3a39e7bc6c2474a407153bbed553a25e9f3578c624c80 + react: + optional: true + react-dom: + optional: true + checksum: d2918aa3de0746cadb60af7f940c72d17b0d2869b66992f47d6a187abc3599cbf6520188ea8131c9fd7fe65cd87783fbfce3d2115f833b1488a8d73509e5789a languageName: node linkType: hard @@ -30071,7 +35042,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:11.1.1": +"fs-extra@npm:11.1.1, fs-extra@npm:^11.1.0": version: 11.1.1 resolution: "fs-extra@npm:11.1.1" dependencies: @@ -30105,7 +35076,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.1.0, fs-extra@npm:^11.2.0": +"fs-extra@npm:^11.2.0": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" dependencies: @@ -30158,9 +35129,9 @@ __metadata: linkType: hard "fs-monkey@npm:^1.0.4": - version: 1.0.6 - resolution: "fs-monkey@npm:1.0.6" - checksum: 4e9986acf197581b10b79d3e63e74252681ca215ef82d4afbd98dcfe86b3f09189ac1d7e8064bc433e4e53cdb5c14fdb38773277d41bba18b1ff8bbdcab01a3a + version: 1.0.4 + resolution: "fs-monkey@npm:1.0.4" + checksum: 8b254c982905c0b7e028eab22b410dc35a5c0019c1c860456f5f54ae6a61666e1cb8c6b700d6c88cc873694c00953c935847b9959cc4dcf274aacb8673c1e8bf languageName: node linkType: hard @@ -30171,7 +35142,17 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: latest + checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.1, fsevents@npm:~2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -30181,7 +35162,16 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.3#~builtin<compat/fsevents>": +"fsevents@patch:fsevents@2.3.2#~builtin<compat/fsevents>": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=18f3a7" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@^2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.1#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin<compat/fsevents>::version=2.3.3&hash=18f3a7" dependencies: @@ -30200,6 +35190,13 @@ __metadata: languageName: node linkType: hard +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a + languageName: node + linkType: hard + "function-bind@npm:^1.1.2": version: 1.1.2 resolution: "function-bind@npm:1.1.2" @@ -30207,6 +35204,18 @@ __metadata: languageName: node linkType: hard +"function.prototype.name@npm:^1.1.5": + version: 1.1.5 + resolution: "function.prototype.name@npm:1.1.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.19.0 + functions-have-names: ^1.2.2 + checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 + languageName: node + linkType: hard + "function.prototype.name@npm:^1.1.6": version: 1.1.6 resolution: "function.prototype.name@npm:1.1.6" @@ -30226,6 +35235,13 @@ __metadata: languageName: node linkType: hard +"functions-have-names@npm:^1.2.2": + version: 1.2.2 + resolution: "functions-have-names@npm:1.2.2" + checksum: 25f44b6d1c41ac86ffdf41f25d1de81c0a5b4a3fcf4307a33cdfb23b9d4bd5d0d8bf312eaef5ad368c6500c8a9e19f692b8ce9f96aaab99db9dd936554165558 + languageName: node + linkType: hard + "functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" @@ -30241,9 +35257,9 @@ __metadata: linkType: hard "futoin-hkdf@npm:^1.3.2": - version: 1.5.3 - resolution: "futoin-hkdf@npm:1.5.3" - checksum: 790da5675b31df4b9a34c19a5181f673171b5ad81fa92b91981bcfd2250692f895d6aada5ae4203212babba3c7d7a1916432e0b42c7aa88d3f70408439ec315e + version: 1.3.3 + resolution: "futoin-hkdf@npm:1.3.3" + checksum: 7863236ce6a6d38ce0978384b5046f03714bd8511ac080d5581defb0b41dd9da1b33e9b07f763c3afae4e58b149d695e2d7776b14cb257ca78ee03d1c047d01f languageName: node linkType: hard @@ -30281,24 +35297,33 @@ __metadata: linkType: hard "gaxios@npm:^5.0.0, gaxios@npm:^5.0.1": - version: 5.1.3 - resolution: "gaxios@npm:5.1.3" + version: 5.0.2 + resolution: "gaxios@npm:5.0.2" dependencies: extend: ^3.0.2 https-proxy-agent: ^5.0.0 is-stream: ^2.0.0 - node-fetch: ^2.6.9 - checksum: 1cf72697715c64f6db1d6fa6e9243bb57ee14b0c758338a33790ecac2675d819a1fc0c51b2fab312d9bfe8201cc981c171b70ff60adcaaec881c5bc5610c42f1 + node-fetch: ^2.6.7 + checksum: 117036131cc0d0a268d2d99fffe6a6cc6a4e88dd5b77ce23d3f0b4aff1291b8af169dae20e88799adc986cf3ae507acfaeb70f6ceca8c5d6b8c28e3dde5c992a languageName: node linkType: hard -"gcp-metadata@npm:^5.3.0": - version: 5.3.0 - resolution: "gcp-metadata@npm:5.3.0" +"gcp-metadata@npm:^5.0.0": + version: 5.2.0 + resolution: "gcp-metadata@npm:5.2.0" dependencies: gaxios: ^5.0.0 json-bigint: ^1.0.0 - checksum: 891ea0b902a17f33d7bae753830d23962b63af94ed071092c30496e7d26f8128ba9af43c3d38474bea29cb32a884b4bcb5720ce8b9de4a7e1108475d3d7ae219 + checksum: 4e7ed589c814bb79cbf052b0eda1d5e219fbee030f4772eca27ec1e6e1faa85ba0ef3b17ea5c3fd51a54fc5429c924b4edbb260ac147701f211fb9807b893544 + languageName: node + linkType: hard + +"generic-names@npm:^2.0.1": + version: 2.0.1 + resolution: "generic-names@npm:2.0.1" + dependencies: + loader-utils: ^1.1.0 + checksum: 5f2d6837dcddf4d7139f7c7ee4ff6ed82564123ae363aadc7a1c1c9967724da1e10d92c904b76b6ff58912465cf63cf47d87f3b400286845f289f54d5092e78f languageName: node linkType: hard @@ -30309,6 +35334,13 @@ __metadata: languageName: node linkType: hard +"get-assigned-identifiers@npm:^1.1.0": + version: 1.2.0 + resolution: "get-assigned-identifiers@npm:1.2.0" + checksum: 5ea831c744a645ebd56fff818c80ffc583995c2ca3958236c7cfaac670242300e4f08498a9bbafd3ecbe30027d58ed50e7fa6268ecfe4b8e5c888ea7275cb56c + languageName: node + linkType: hard + "get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -30316,7 +35348,41 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": +"get-intrinsic@npm:^1.0.1, get-intrinsic@npm:^1.1.3": + version: 1.1.3 + resolution: "get-intrinsic@npm:1.1.3" + dependencies: + function-bind: ^1.1.1 + has: ^1.0.3 + has-symbols: ^1.0.3 + checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": + version: 1.1.1 + resolution: "get-intrinsic@npm:1.1.1" + dependencies: + function-bind: ^1.1.1 + has: ^1.0.3 + has-symbols: ^1.0.1 + checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": + version: 1.2.2 + resolution: "get-intrinsic@npm:1.2.2" + dependencies: + function-bind: ^1.1.2 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + hasown: ^2.0.0 + checksum: 447ff0724df26829908dc033b62732359596fcf66027bc131ab37984afb33842d9cd458fd6cecadfe7eac22fd8a54b349799ed334cf2726025c921c7250e7417 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -30337,9 +35403,9 @@ __metadata: linkType: hard "get-npm-tarball-url@npm:^2.0.3": - version: 2.1.0 - resolution: "get-npm-tarball-url@npm:2.1.0" - checksum: 02b96993ad5a04cbd0ef0577ac3cc9e2e78a7c60db6bb5e6c8fe78950fc1fc3d093314987629a2fda3083228d91a93670bde321767ca2cf89ce7f463c9e44071 + version: 2.0.3 + resolution: "get-npm-tarball-url@npm:2.0.3" + checksum: 8ad48a6f1126697665e12ebf053e0d1c3b15b3c4f29ea6c458387ac68d044ea1c08f0f2eb5c0fe35447fdd2da4f2fb5c9882feb5a2ea195c773f94e762c9b886 languageName: node linkType: hard @@ -30389,17 +35455,27 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": +"get-stream@npm:^6.0.0": + version: 6.0.0 + resolution: "get-stream@npm:6.0.0" + checksum: 587e6a93127f9991b494a566f4971cf7a2645dfa78034818143480a80587027bdd8826cdcf80d0eff4a4a19de0d231d157280f24789fc9cc31492e1dcc1290cf + languageName: node + linkType: hard + +"get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad languageName: node linkType: hard -"get-stream@npm:^8.0.1": - version: 8.0.1 - resolution: "get-stream@npm:8.0.1" - checksum: 01e3d3cf29e1393f05f44d2f00445c5f9ec3d1c49e8179b31795484b9c117f4c695e5e07b88b50785d5c8248a788c85d9913a79266fc77e3ef11f78f10f1b974 +"get-symbol-description@npm:^1.0.0": + version: 1.0.0 + resolution: "get-symbol-description@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 languageName: node linkType: hard @@ -30414,12 +35490,12 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.5": - version: 4.8.1 - resolution: "get-tsconfig@npm:4.8.1" +"get-tsconfig@npm:^4.5.0": + version: 4.6.0 + resolution: "get-tsconfig@npm:4.6.0" dependencies: resolve-pkg-maps: ^1.0.0 - checksum: 12df01672e691d2ff6db8cf7fed1ddfef90ed94a5f3d822c63c147a26742026d582acd86afcd6f65db67d809625d17dd7f9d34f4d3f38f69bc2f48e19b2bdd5b + checksum: fd2589a50e21543cf416285e5c4ac605359f49209b6c2e66bb8698fac907356e060de0a681e40881f00182b6f19771377411a88adcc78fd3954732ff54f4a54d languageName: node linkType: hard @@ -30475,27 +35551,28 @@ __metadata: linkType: hard "giget@npm:^1.0.0": - version: 1.2.3 - resolution: "giget@npm:1.2.3" + version: 1.1.2 + resolution: "giget@npm:1.1.2" dependencies: - citty: ^0.1.6 - consola: ^3.2.3 - defu: ^6.1.4 - node-fetch-native: ^1.6.3 - nypm: ^0.3.8 - ohash: ^1.1.3 - pathe: ^1.1.2 - tar: ^6.2.0 + colorette: ^2.0.19 + defu: ^6.1.2 + https-proxy-agent: ^5.0.1 + mri: ^1.2.0 + node-fetch-native: ^1.0.2 + pathe: ^1.1.0 + tar: ^6.1.13 bin: giget: dist/cli.mjs - checksum: ec6e9126cb210377b952c090338dee5df0f58f724666318a14a505f1d2c961b91fd1b364b86a038b24a21a5ef44702c9d6841f8726b09aeb88a74720b6b682dd + checksum: 76ad0f7e792ee95dd6c4e1096697fdcce61a2a3235a6c21761fc3e0d1053342074ce71c80059d6d4363fd34152e5d7b2e58221412f300c852ff7d4a12d0321fe languageName: node linkType: hard "github-slugger@npm:^1.0.0": - version: 1.5.0 - resolution: "github-slugger@npm:1.5.0" - checksum: c70988224578b3bdaa25df65973ffc8c24594a77a28550c3636e495e49d17aef5cdb04c04fa3f1744babef98c61eecc6a43299a13ea7f3cc33d680bf9053ffbe + version: 1.3.0 + resolution: "github-slugger@npm:1.3.0" + dependencies: + emoji-regex: ">=6.0.0 <=6.1.1" + checksum: fe96b363df9363c78bd2f644697e2ce2a05b1b10391ac0ff918a433992b03d0dcb0b6903b1f44bee972616eb5d8799837f357cbe278fb35c5fef40b69316a8d8 languageName: node linkType: hard @@ -30573,7 +35650,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:7.2.0": +"glob@npm:7.2.0, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": version: 7.2.0 resolution: "glob@npm:7.2.0" dependencies: @@ -30587,9 +35664,39 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.3, glob@npm:^10.4.2": - version: 10.4.5 - resolution: "glob@npm:10.4.5" +"glob@npm:^10.0.0": + version: 10.3.4 + resolution: "glob@npm:10.3.4" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^2.0.3 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 + bin: + glob: dist/cjs/src/bin.js + checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 + languageName: node + linkType: hard + +"glob@npm:^10.2.2": + version: 10.4.1 + resolution: "glob@npm:10.4.1" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + path-scurry: ^1.11.1 + bin: + glob: dist/esm/bin.mjs + checksum: 5d33c686c80bf6877f4284adf99a8c3cbb2a6eccbc92342943fe5d4b42c01d78c1881f2223d950c92a938d0f857e12e37b86a8e5483ab2141822e053b67d0dde + languageName: node + linkType: hard + +"glob@npm:^10.3.10": + version: 10.4.2 + resolution: "glob@npm:10.4.2" dependencies: foreground-child: ^3.1.0 jackspeak: ^3.1.2 @@ -30599,11 +35706,24 @@ __metadata: path-scurry: ^1.11.1 bin: glob: dist/esm/bin.mjs - checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a + checksum: bd7c0e30701136e936f414e5f6f82c7f04503f01df77408f177aa584927412f0bde0338e6ec541618cd21eacc57dde33e7b3c6c0a779cc1c6e6a0e14f3d15d9b + languageName: node + linkType: hard + +"glob@npm:^6.0.1": + version: 6.0.4 + resolution: "glob@npm:6.0.4" + dependencies: + inflight: ^1.0.4 + inherits: 2 + minimatch: 2 || 3 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: c4946c3d015ac81f704d185f2b3a55eb670100693c2cf7bc833d0efd970ec727d860d4839a5178e46a7e594b34a34661bae2f4c3405727c9fd189f84954ca3c0 languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7, glob@npm:^7.2.0, glob@npm:^7.2.3": +"glob@npm:^7.1.7, glob@npm:^7.2.3": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -30617,7 +35737,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.0, glob@npm:^8.0.1": +"glob@npm:^8.0.0": version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: @@ -30630,6 +35750,19 @@ __metadata: languageName: node linkType: hard +"glob@npm:^8.0.1": + version: 8.0.3 + resolution: "glob@npm:8.0.3" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^5.0.1 + once: ^1.3.0 + checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 + languageName: node + linkType: hard + "glob@npm:^9.3.3": version: 9.3.5 resolution: "glob@npm:9.3.5" @@ -30643,11 +35776,11 @@ __metadata: linkType: hard "global-dirs@npm:^3.0.0": - version: 3.0.1 - resolution: "global-dirs@npm:3.0.1" + version: 3.0.0 + resolution: "global-dirs@npm:3.0.0" dependencies: ini: 2.0.0 - checksum: 70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438 + checksum: 953c17cf14bf6ee0e2100ae82a0d779934eed8a3ec5c94a7a4f37c5b3b592c31ea015fb9a15cf32484de13c79f4a814f3015152f3e1d65976cfbe47c1bfe4a88 languageName: node linkType: hard @@ -30658,12 +35791,21 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0, globals@npm:^13.20.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" +"globals@npm:^13.19.0": + version: 13.20.0 + resolution: "globals@npm:13.20.0" dependencies: type-fest: ^0.20.2 - checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c + checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a + languageName: node + linkType: hard + +"globals@npm:^13.20.0": + version: 13.21.0 + resolution: "globals@npm:13.21.0" + dependencies: + type-fest: ^0.20.2 + checksum: 86c92ca8a04efd864c10852cd9abb1ebe6d447dcc72936783e66eaba1087d7dba5c9c3421a48d6ca722c319378754dbcc3f3f732dbe47592d7de908edf58a773 languageName: node linkType: hard @@ -30674,7 +35816,7 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": +"globalthis@npm:^1.0.3": version: 1.0.4 resolution: "globalthis@npm:1.0.4" dependencies: @@ -30712,31 +35854,43 @@ __metadata: languageName: node linkType: hard +"globby@npm:^13.1.3": + version: 13.1.4 + resolution: "globby@npm:13.1.4" + dependencies: + dir-glob: ^3.0.1 + fast-glob: ^3.2.11 + ignore: ^5.2.0 + merge2: ^1.4.1 + slash: ^4.0.0 + checksum: e8bc13879972082d590cd1b0e27080d90d2e12fff7eeb2cee9329c29115ace14cc5b9f899e3d6beb136ba826307a727016658919a6f383e1511d698acee81741 + languageName: node + linkType: hard + "google-auth-library@npm:^8.0.1, google-auth-library@npm:^8.0.2": - version: 8.9.0 - resolution: "google-auth-library@npm:8.9.0" + version: 8.7.0 + resolution: "google-auth-library@npm:8.7.0" dependencies: arrify: ^2.0.0 base64-js: ^1.3.0 ecdsa-sig-formatter: ^1.0.11 fast-text-encoding: ^1.0.0 gaxios: ^5.0.0 - gcp-metadata: ^5.3.0 + gcp-metadata: ^5.0.0 gtoken: ^6.1.0 jws: ^4.0.0 lru-cache: ^6.0.0 - checksum: 8e0bc5f1e91804523786413bf4358e4c5ad94b1e873c725ddd03d0f1c242e2b38e26352c0f375334fbc1d94110f761b304aa0429de49b4a27ebc3875a5b56644 + checksum: 978d1c5f763aceddbc0218cd76fa578c8ba54a0653cefffaf61847bb8d246ebf26e7fcd276d8885b8a3354c17eef0a11cfae9e60e4df62c01cae4378d4eb78e4 languageName: node linkType: hard -"google-gax@npm:^3.5.7": - version: 3.6.1 - resolution: "google-gax@npm:3.6.1" +"google-gax@npm:^3.5.2": + version: 3.5.2 + resolution: "google-gax@npm:3.5.2" dependencies: - "@grpc/grpc-js": ~1.8.0 + "@grpc/grpc-js": ~1.7.0 "@grpc/proto-loader": ^0.7.0 "@types/long": ^4.0.0 - "@types/rimraf": ^3.0.2 abort-controller: ^3.0.0 duplexify: ^4.0.0 fast-text-encoding: ^1.0.3 @@ -30745,28 +35899,28 @@ __metadata: node-fetch: ^2.6.1 object-hash: ^3.0.0 proto3-json-serializer: ^1.0.0 - protobufjs: 7.2.4 - protobufjs-cli: 1.1.1 + protobufjs: 7.1.2 + protobufjs-cli: 1.0.2 retry-request: ^5.0.0 bin: compileProtos: build/tools/compileProtos.js minifyProtoJson: build/tools/minify.js - checksum: 16e5fb211d75c6a4cb4d2e62adba7bbf41d160feba74fe39435a70fc31ef8ebc740af4527a2897abab39a1806d131792b2a761da432ae1b916198c9c43aab36e + checksum: 619a961acba742c30eaba85f5e0fb5903f8fc6713e26bf1736549cbbd43d7fac3ba3379dbc96850117263199ea8e3e74635b078e9464c7fadbbcba8822949135 languageName: node linkType: hard -"google-map-react@npm:2.2.1": - version: 2.2.1 - resolution: "google-map-react@npm:2.2.1" +"google-map-react@npm:2.2.0": + version: 2.2.0 + resolution: "google-map-react@npm:2.2.0" dependencies: - "@googlemaps/js-api-loader": ^1.13.8 + "@googlemaps/js-api-loader": ^1.7.0 "@mapbox/point-geometry": ^0.1.0 eventemitter3: ^4.0.4 prop-types: ^15.7.2 peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 6bc082581c44ffe1e048766849308bc078ebe0a695b485d284ded9783fa4ffd9ddc4d62597fa11379fe667f17a54a2e2f6ade8e2eda78299959fe81551563a14 + checksum: 4fe4155e2eebf0747f55bd9982fbab12a35b01afe69b8348834bc6eaf1e608d589c38f9cd5dff0f9bf7448d6e55c3fcfa7ecd0b62706606f1c497cd5211714f4 languageName: node linkType: hard @@ -30791,8 +35945,8 @@ __metadata: linkType: hard "got@npm:^11.7.0": - version: 11.8.6 - resolution: "got@npm:11.8.6" + version: 11.8.5 + resolution: "got@npm:11.8.5" dependencies: "@sindresorhus/is": ^4.0.0 "@szmarczak/http-timer": ^4.0.5 @@ -30805,11 +35959,18 @@ __metadata: lowercase-keys: ^2.0.0 p-cancelable: ^2.0.0 responselike: ^2.0.0 - checksum: bbc783578a8d5030c8164ef7f57ce41b5ad7db2ed13371e1944bef157eeca5a7475530e07c0aaa71610d7085474d0d96222c9f4268d41db333a17e39b463f45d + checksum: 2de8a1bbda4e9b6b2b72b2d2100bc055a59adc1740529e631f61feb44a8b9a1f9f8590941ed9da9df0090b6d6d0ed8ffee94cd9ac086ec3409b392b33440f7d2 languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.4, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9, graceful-fs@npm:~4.2.0": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.4, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9, graceful-fs@npm:~4.2.0": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.2.11": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -30824,43 +35985,43 @@ __metadata: linkType: hard "graphql-config@npm:^4.3.5": - version: 4.5.0 - resolution: "graphql-config@npm:4.5.0" + version: 4.3.6 + resolution: "graphql-config@npm:4.3.6" dependencies: "@graphql-tools/graphql-file-loader": ^7.3.7 "@graphql-tools/json-file-loader": ^7.3.7 "@graphql-tools/load": ^7.5.5 "@graphql-tools/merge": ^8.2.6 "@graphql-tools/url-loader": ^7.9.7 - "@graphql-tools/utils": ^9.0.0 - cosmiconfig: 8.0.0 - jiti: 1.17.1 - minimatch: 4.2.3 + "@graphql-tools/utils": ^8.6.5 + cosmiconfig: 7.0.1 + cosmiconfig-toml-loader: 1.0.0 + cosmiconfig-typescript-loader: ^4.0.0 + minimatch: 4.2.1 string-env-interpolation: 1.0.1 + ts-node: ^10.8.1 tslib: ^2.4.0 peerDependencies: - cosmiconfig-toml-loader: ^1.0.0 graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - peerDependenciesMeta: - cosmiconfig-toml-loader: - optional: true - checksum: 8ab1a3ce3534598ddac2df213b6af2eecd9ebcca2268d39cc3e87a6e55749483389a6df222e9e0acd638dd2479378a5c8e8d90f980e6a54e700c4c4ae3522123 + checksum: 528f69c2c3620b51fe3d609e65d13861bdc11ccfdfcb75d476f758dc6e3047c78117a260f69b5e7efa5f0b66da1980c352a8b4053532ffb3018377f784331e21 languageName: node linkType: hard -"graphql-request@npm:^6.0.0": - version: 6.1.0 - resolution: "graphql-request@npm:6.1.0" +"graphql-request@npm:^5.0.0": + version: 5.0.0 + resolution: "graphql-request@npm:5.0.0" dependencies: - "@graphql-typed-document-node/core": ^3.2.0 + "@graphql-typed-document-node/core": ^3.1.1 cross-fetch: ^3.1.5 + extract-files: ^9.0.0 + form-data: ^3.0.0 peerDependencies: graphql: 14 - 16 - checksum: 6d62630a0169574442320651c1f7626c0c602025c3c46b19e09417c9579bb209306ee63de9793a03be2e1701bb7f13971f8545d99bc6573e340f823af0ad35b2 + checksum: 2e8900d10cded401b253a05650719321123e3b0ad5bc57523288892e0226dccf43668ec937753420084f649fb4e3f998f2547c884b746a3e91fa0a43f93e62d4 languageName: node linkType: hard -"graphql-tag@npm:2.12.5": +"graphql-tag@npm:2.12.5, graphql-tag@npm:^2.11.0": version: 2.12.5 resolution: "graphql-tag@npm:2.12.5" dependencies: @@ -30871,7 +36032,7 @@ __metadata: languageName: node linkType: hard -"graphql-tag@npm:2.12.6, graphql-tag@npm:^2.10.1, graphql-tag@npm:^2.11.0, graphql-tag@npm:^2.12.6": +"graphql-tag@npm:2.12.6, graphql-tag@npm:^2.10.1, graphql-tag@npm:^2.12.6": version: 2.12.6 resolution: "graphql-tag@npm:2.12.6" dependencies: @@ -30891,49 +36052,42 @@ __metadata: languageName: node linkType: hard -"graphql-ws@npm:5.12.1": - version: 5.12.1 - resolution: "graphql-ws@npm:5.12.1" +"graphql-ws@npm:5.5.5": + version: 5.5.5 + resolution: "graphql-ws@npm:5.5.5" peerDependencies: graphql: ">=0.11 <=16" - checksum: 88d587c431feba681957faecd96101bb3860e1a4765f34b8cae1c514e7f98754b5f31c6b3127775e4732f26883b0802fe426bf9f7031c16cd0b25a27ad90ec9c + checksum: bdb77b3e44be53d2d8d0c395066e62e74efe1123d9b5be7cc69b60d28229974e32abc79c5997095d038d169d4135cb2bcb98f0e666aa8cfeb3bb9857b960d803 languageName: node linkType: hard -"graphql-ws@npm:5.5.5": - version: 5.5.5 - resolution: "graphql-ws@npm:5.5.5" +"graphql-ws@npm:^5.4.1": + version: 5.11.2 + resolution: "graphql-ws@npm:5.11.2" peerDependencies: graphql: ">=0.11 <=16" - checksum: bdb77b3e44be53d2d8d0c395066e62e74efe1123d9b5be7cc69b60d28229974e32abc79c5997095d038d169d4135cb2bcb98f0e666aa8cfeb3bb9857b960d803 + checksum: 2c94b06c1919217dc15a0556474673de7aabcc7179a2982a87ded51856c105e4f4ee6d54a6c135a0a7f55d85a5997a6a15cff514959258885814adec6a61ff00 languageName: node linkType: hard -"graphql@npm:*": - version: 16.9.0 - resolution: "graphql@npm:16.9.0" - checksum: 8cb3d54100e9227310383ce7f791ca48d12f15ed9f2021f23f8735f1121aafe4e5e611a853081dd935ce221724ea1ae4638faef5d2921fb1ad7c26b5f46611e9 +"graphql@npm:*, graphql@npm:16.6.0": + version: 16.6.0 + resolution: "graphql@npm:16.6.0" + checksum: bf1d9e3c1938ce3c1a81e909bd3ead1ae4707c577f91cff1ca2eca474bfbc7873d5d7b942e1e9777ff5a8304421dba57a4b76d7a29eb19de8711cb70e3c2415e languageName: node linkType: hard -"graphql@npm:15.8.0": +"graphql@npm:15.8.0, graphql@npm:^15.3.0": version: 15.8.0 resolution: "graphql@npm:15.8.0" checksum: 423325271db8858428641b9aca01699283d1fe5b40ef6d4ac622569ecca927019fce8196208b91dd1d8eb8114f00263fe661d241d0eb40c10e5bfd650f86ec5e languageName: node linkType: hard -"graphql@npm:16.6.0": - version: 16.6.0 - resolution: "graphql@npm:16.6.0" - checksum: bf1d9e3c1938ce3c1a81e909bd3ead1ae4707c577f91cff1ca2eca474bfbc7873d5d7b942e1e9777ff5a8304421dba57a4b76d7a29eb19de8711cb70e3c2415e - languageName: node - linkType: hard - -"graphql@npm:^15.3.0": - version: 15.9.0 - resolution: "graphql@npm:15.9.0" - checksum: fecf48b878baf8bd1d943b79860554f9e0bdf8d23a8f014356209fedcc1f1353729388538842d8a4a79078ea75b3f24d504d074223c815acf9b6059837c5c934 +"growl@npm:1.10.5": + version: 1.10.5 + resolution: "growl@npm:1.10.5" + checksum: 4b86685de6831cebcbb19f93870bea624afee61124b0a20c49017013987cd129e73a8c4baeca295728f41d21265e1f859d25ef36731b142ca59c655fea94bb1a languageName: node linkType: hard @@ -30980,7 +36134,7 @@ __metadata: languageName: node linkType: hard -"handlebars@npm:4.7.7": +"handlebars@npm:4.7.7, handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" dependencies: @@ -30998,7 +36152,7 @@ __metadata: languageName: node linkType: hard -"handlebars@npm:4.7.8, handlebars@npm:^4.7.7": +"handlebars@npm:4.7.8": version: 4.7.8 resolution: "handlebars@npm:4.7.8" dependencies: @@ -31016,10 +36170,27 @@ __metadata: languageName: node linkType: hard +"har-schema@npm:^2.0.0": + version: 2.0.0 + resolution: "har-schema@npm:2.0.0" + checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b + languageName: node + linkType: hard + +"har-validator@npm:~5.1.3": + version: 5.1.5 + resolution: "har-validator@npm:5.1.5" + dependencies: + ajv: ^6.12.3 + har-schema: ^2.0.0 + checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 + languageName: node + linkType: hard + "harmony-reflect@npm:^1.4.6": - version: 1.6.2 - resolution: "harmony-reflect@npm:1.6.2" - checksum: 2e5bae414cd2bfae5476147f9935dc69ee9b9a413206994dcb94c5b3208d4555da3d4313aff6fd14bd9991c1e3ef69cdda5c8fac1eb1d7afc064925839339b8c + version: 1.6.1 + resolution: "harmony-reflect@npm:1.6.1" + checksum: 4cb91f86d262650d62c3ac713a2284ef0784a5c8be347188f97747db68d0e6d9801f09a3f12bacec59d5ec9d010cba64b8acb4c2c4827e172ef2ab215cdfef9d languageName: node linkType: hard @@ -31032,7 +36203,14 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": +"has-bigints@npm:^1.0.1": + version: 1.0.1 + resolution: "has-bigints@npm:1.0.1" + checksum: 44ab55868174470065d2e0f8f6def1c990d12b82162a8803c679699fa8a39f966e336f2a33c185092fe8aea7e8bf2e85f1c26add5f29d98f2318bd270096b183 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b @@ -31060,7 +36238,16 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": +"has-property-descriptors@npm:^1.0.0": + version: 1.0.0 + resolution: "has-property-descriptors@npm:1.0.0" + dependencies: + get-intrinsic: ^1.1.1 + checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.2": version: 1.0.2 resolution: "has-property-descriptors@npm:1.0.2" dependencies: @@ -31069,21 +36256,37 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": +"has-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "has-proto@npm:1.0.1" + checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e + languageName: node + linkType: hard + +"has-proto@npm:^1.0.3": version: 1.0.3 resolution: "has-proto@npm:1.0.3" checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": +"has-tostringtag@npm:^1.0.0": + version: 1.0.0 + resolution: "has-tostringtag@npm:1.0.0" + dependencies: + has-symbols: ^1.0.2 + checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -31099,10 +36302,12 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.3": - version: 1.0.4 - resolution: "has@npm:1.0.4" - checksum: 8a11ba062e0627c9578a1d08285401e39f1d071a9692ddf793199070edb5648b21c774dd733e2a181edd635bf6862731885f476f4ccf67c998d7a5ff7cef2550 +"has@npm:^1.0.1, has@npm:^1.0.3": + version: 1.0.3 + resolution: "has@npm:1.0.3" + dependencies: + function-bind: ^1.1.1 + checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 languageName: node linkType: hard @@ -31127,6 +36332,13 @@ __metadata: languageName: node linkType: hard +"hash-sum@npm:^2.0.0": + version: 2.0.0 + resolution: "hash-sum@npm:2.0.0" + checksum: efeeacf09ecbd467202865403c3a1991fa15d4f4903c1148ecbe13223fdbf9ec6d7dc661e17e5ce6e776cd70d67b6ee4c82e0171318962435be45c1155175f3f + languageName: node + linkType: hard + "hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": version: 1.1.7 resolution: "hash.js@npm:1.1.7" @@ -31137,7 +36349,16 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": +"hasown@npm:^2.0.0": + version: 2.0.0 + resolution: "hasown@npm:2.0.0" + dependencies: + function-bind: ^1.1.2 + checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176 + languageName: node + linkType: hard + +"hasown@npm:^2.0.1, hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -31267,10 +36488,10 @@ __metadata: languageName: node linkType: hard -"hermes-estree@npm:0.23.1": - version: 0.23.1 - resolution: "hermes-estree@npm:0.23.1" - checksum: 0f63edc365099304f4cd8e91a3666a4fb5a2a47baee751dc120df9201640112865944cae93617f554af71be9827e96547f9989f4972d6964ecc121527295fec6 +"hermes-estree@npm:0.20.1": + version: 0.20.1 + resolution: "hermes-estree@npm:0.20.1" + checksum: 226378c62e29a79f8e0935cc8bdefd987195c069b835a9ed1cae08109cd228f6e97a2e580d5de057e4437dc988c972b9fe7227a1d9353dc2abbe142dbd5260c6 languageName: node linkType: hard @@ -31283,12 +36504,12 @@ __metadata: languageName: node linkType: hard -"hermes-parser@npm:0.23.1": - version: 0.23.1 - resolution: "hermes-parser@npm:0.23.1" +"hermes-parser@npm:0.20.1": + version: 0.20.1 + resolution: "hermes-parser@npm:0.20.1" dependencies: - hermes-estree: 0.23.1 - checksum: a08008928aea9ea9a2cab2c0fac3cffa21f7869ab3fabb68e5add0fe057737a0c352d7a446426f7956172ccc8f2d4a215b4fc20d1d08354fc8dc16772c248fce + hermes-estree: 0.20.1 + checksum: 2a0c17b5f8fbb0a377f42d480f577b5cc64eafe4d5ebc0a9cbce23b79a02042693134bef1b71163f771d67cd10a450138c8d24b9a431c487fa9ed57cba67e85c languageName: node linkType: hard @@ -31308,20 +36529,6 @@ __metadata: languageName: node linkType: hard -"hexoid@npm:^2.0.0": - version: 2.0.0 - resolution: "hexoid@npm:2.0.0" - checksum: 69a92b2bcd7c81c16557de017c59511643e3cb1f0d6e9e9b705859b798bfd059088e4d3cc85e9fe0a9e431007430f15393303c3e74320b5c4c28cb64fc7d8bb4 - languageName: node - linkType: hard - -"hey-listen@npm:^1.0.8": - version: 1.0.8 - resolution: "hey-listen@npm:1.0.8" - checksum: 6bad60b367688f5348e25e7ca3276a74b59ac5a09b0455e6ff8ab7d4a9e38cd2116c708a7dcd8a954d27253ce1d8717ec891d175723ea739885b828cf44e4072 - languageName: node - linkType: hard - "highcharts@npm:^9.2.2": version: 9.3.3 resolution: "highcharts@npm:9.3.3" @@ -31356,6 +36563,13 @@ __metadata: languageName: node linkType: hard +"hoek@npm:4.x.x": + version: 4.2.1 + resolution: "hoek@npm:4.2.1" + checksum: 3f28857c9d4c29e0d4c0bfb0d73973529fdd700266e963f9964c59ad92a4bc08943b94c4ada97c105a20c78d4dec98e4fc2c08025660743722558e6da793fd0f + languageName: node + linkType: hard + "hoek@npm:5.x.x": version: 5.0.4 resolution: "hoek@npm:5.0.4" @@ -31363,7 +36577,7 @@ __metadata: languageName: node linkType: hard -"hoek@npm:6.x.x": +"hoek@npm:6.x.x, hoek@npm:^6.1.3": version: 6.1.3 resolution: "hoek@npm:6.1.3" checksum: d0af183df1b710290de440142d3650268ab2402c0f6cc28de044fc806a78ea5b91ed763ccffc2306204c1191724e80610c11dc4d7c259af55ad87ff9613abfec @@ -31379,7 +36593,7 @@ __metadata: languageName: node linkType: hard -"hoopy@npm:^0.1.4": +"hoopy@npm:^0.1.2, hoopy@npm:^0.1.4": version: 0.1.4 resolution: "hoopy@npm:0.1.4" checksum: cfa60c7684c5e1ee4efe26e167bc54b73f839ffb59d1d44a5c4bf891e26b4f5bcc666555219a98fec95508fea4eda3a79540c53c05cc79afc1f66f9a238f4d9e @@ -31453,7 +36667,21 @@ __metadata: languageName: node linkType: hard -"html-entities@npm:^2.1.0, html-entities@npm:^2.3.2, html-entities@npm:^2.5.2": +"html-entities@npm:^2.1.0": + version: 2.3.3 + resolution: "html-entities@npm:2.3.3" + checksum: 92521501da8aa5f66fee27f0f022d6e9ceae62667dae93aa6a2f636afa71ad530b7fb24a18d4d6c124c9885970cac5f8a52dbf1731741161002816ae43f98196 + languageName: node + linkType: hard + +"html-entities@npm:^2.3.2": + version: 2.3.5 + resolution: "html-entities@npm:2.3.5" + checksum: 585f8a4d549b126b147c95398849a343df4cec379ad0ab87c6be1539870751cb85d3d4910c2cb4a848cc99de84307cd9a372890175b73852d5225e716e65e62f + languageName: node + linkType: hard + +"html-entities@npm:^2.4.0": version: 2.5.2 resolution: "html-entities@npm:2.5.2" checksum: b23f4a07d33d49ade1994069af4e13d31650e3fb62621e92ae10ecdf01d1a98065c78fd20fdc92b4c7881612210b37c275f2c9fba9777650ab0d6f2ceb3b99b6 @@ -31485,9 +36713,9 @@ __metadata: linkType: hard "html-tags@npm:^3.1.0": - version: 3.3.1 - resolution: "html-tags@npm:3.3.1" - checksum: b4ef1d5a76b678e43cce46e3783d563607b1d550cab30b4f511211564574770aa8c658a400b100e588bc60b8234e59b35ff72c7851cc28f3b5403b13a2c6cbce + version: 3.1.0 + resolution: "html-tags@npm:3.1.0" + checksum: 67587f2d4022390d7bc34b1313773ecb0b0e0c79fb331aa3e20023eb4c862c7188a1ff775d126fcd75f4e4f08f956666a1c57688c4d24d85a77f9d4b1a42f345 languageName: node linkType: hard @@ -31515,8 +36743,8 @@ __metadata: linkType: hard "html-webpack-plugin@npm:^5.5.0": - version: 5.6.3 - resolution: "html-webpack-plugin@npm:5.6.3" + version: 5.5.1 + resolution: "html-webpack-plugin@npm:5.5.1" dependencies: "@types/html-minifier-terser": ^6.0.0 html-minifier-terser: ^6.0.2 @@ -31524,14 +36752,8 @@ __metadata: pretty-error: ^4.0.0 tapable: ^2.0.0 peerDependencies: - "@rspack/core": 0.x || 1.x webpack: ^5.20.0 - peerDependenciesMeta: - "@rspack/core": - optional: true - webpack: - optional: true - checksum: 59e7d971b0cfd9ba34c7acaa3c161e43c62596474dd8cd35d7b690498ff5891f21296de0aa1d2e7810348caa657e938461267155dda47913b5eeca7124406270 + checksum: f4b43271171e6374b10a49b5231bbab94610a344d58f4f7d95cd130520feb474f98006e1ab71ea102c57fe5a107b273ff7c19e7e1bc2314d611dbb791fcc0a98 languageName: node linkType: hard @@ -31585,25 +36807,20 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^9.1.0": - version: 9.1.0 - resolution: "htmlparser2@npm:9.1.0" - dependencies: - domelementtype: ^2.3.0 - domhandler: ^5.0.3 - domutils: ^3.1.0 - entities: ^4.5.0 - checksum: e5f8d5193967e4a500226f37bdf2c0f858cecb39dde14d0439f24bf2c461a4342778740d988fbaba652b0e4cb6052f7f2e99e69fc1a329a86c629032bb76e7c8 - languageName: node - linkType: hard - -"http-cache-semantics@npm:4.1.1, http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": +"http-cache-semantics@npm:4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 languageName: node linkType: hard +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": + version: 4.1.0 + resolution: "http-cache-semantics@npm:4.1.0" + checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 + languageName: node + linkType: hard + "http-deceiver@npm:^1.2.7": version: 1.2.7 resolution: "http-deceiver@npm:1.2.7" @@ -31637,18 +36854,18 @@ __metadata: linkType: hard "http-parser-js@npm:>=0.5.1": - version: 0.5.8 - resolution: "http-parser-js@npm:0.5.8" - checksum: 6bbdf2429858e8cf13c62375b0bfb6dc3955ca0f32e58237488bc86cd2378f31d31785fd3ac4ce93f1c74e0189cf8823c91f5cb061696214fd368d2452dc871d + version: 0.5.3 + resolution: "http-parser-js@npm:0.5.3" + checksum: 6f3142c5f60ad995a6895a1dc4f70f8cef0910745366e97cbcb99caa604590dbcc11006b00989ad306837d6b820e9bfc6e801c4060ed19a0e4df83caa8577cb5 languageName: node linkType: hard "http-post-message@npm:^0.2": - version: 0.2.5 - resolution: "http-post-message@npm:0.2.5" + version: 0.2.3 + resolution: "http-post-message@npm:0.2.3" dependencies: es6-promise: ^3.2.1 - checksum: 49789b3a3ca68e96782eb05ad45e9ed16fb4a44fb1bf9078e1b226e65bdd5e60fb00cae31d7253c4a32d9b516eb7452e4c5b53747cf065077a50b0a8f1e94efe + checksum: c8b67af29b93265d9cb50227a7e5a90978e2d379275de220b44277de296819f4cb814e8820d16534e172c8c21be361491e64f7eb71313474d36787520914869b languageName: node linkType: hard @@ -31674,16 +36891,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^6.0.0": - version: 6.1.1 - resolution: "http-proxy-agent@npm:6.1.1" - dependencies: - agent-base: ^7.1.0 - debug: ^4.3.4 - checksum: 020e6600cb782cbf288eae978486301c90b92f8e350f06eda76ac2494ff4b0091dcf19fd1094f7a0f3d97da3c249528d8042aca4557362f7707333e7f18defda - languageName: node - linkType: hard - "http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" @@ -31694,7 +36901,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:2.0.6": +"http-proxy-middleware@npm:2.0.6, http-proxy-middleware@npm:^2.0.3": version: 2.0.6 resolution: "http-proxy-middleware@npm:2.0.6" dependencies: @@ -31712,24 +36919,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.3": - version: 2.0.7 - resolution: "http-proxy-middleware@npm:2.0.7" - dependencies: - "@types/http-proxy": ^1.17.8 - http-proxy: ^1.18.1 - is-glob: ^4.0.1 - is-plain-obj: ^3.0.0 - micromatch: ^4.0.2 - peerDependencies: - "@types/express": ^4.17.13 - peerDependenciesMeta: - "@types/express": - optional: true - checksum: 18caa21145917aa1054740353916e8f03f5a3a93bede9106f1f44d84f7b174df17af1c72bf5fade5cc440c2058ee813f47cbb2bdd6ae6874af1cf33e0ac575f3 - languageName: node - linkType: hard - "http-proxy@npm:^1.18.1": version: 1.18.1 resolution: "http-proxy@npm:1.18.1" @@ -31764,21 +36953,32 @@ __metadata: languageName: node linkType: hard -"http-signature@npm:~1.4.0": - version: 1.4.0 - resolution: "http-signature@npm:1.4.0" +"http-signature@npm:~1.2.0": + version: 1.2.0 + resolution: "http-signature@npm:1.2.0" + dependencies: + assert-plus: ^1.0.0 + jsprim: ^1.2.2 + sshpk: ^1.7.0 + checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c + languageName: node + linkType: hard + +"http-signature@npm:~1.3.6": + version: 1.3.6 + resolution: "http-signature@npm:1.3.6" dependencies: assert-plus: ^1.0.0 jsprim: ^2.0.2 - sshpk: ^1.18.0 - checksum: f07f4cc0481e4461c68b9b7d1a25bf2ec4cef8e0061812b989c1e64f504b4b11f75f88022102aea05d25d47a87789599f1a310b1f8a56945a50c93e54c7ee076 + sshpk: ^1.14.1 + checksum: 10be2af4764e71fee0281392937050201ee576ac755c543f570d6d87134ce5e858663fe999a7adb3e4e368e1e356d0d7fec6b9542295b875726ff615188e7a0c languageName: node linkType: hard "http2-client@npm:^1.2.5": - version: 1.3.5 - resolution: "http2-client@npm:1.3.5" - checksum: 075970adefeb86538fbef810d46586569a689711d4585f4969e0f167344a8e59857eddc0203b428aea83a278070ffd1b3a3192529e93c47a88c71da9295258eb + version: 1.3.3 + resolution: "http2-client@npm:1.3.3" + checksum: 191f8d4b8d3b53425335f14495282bf3d2676021689765de7f5a73f5532e952a0c948ad84e8343b84a64030ed863f63de49cae72acafa024e1caea11a806ec9c languageName: node linkType: hard @@ -31792,13 +36992,23 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:5, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" +"https-proxy-agent@npm:5, https-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "https-proxy-agent@npm:5.0.0" dependencies: agent-base: 6 debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + checksum: 165bfb090bd26d47693597661298006841ab733d0c7383a8cb2f17373387a94c903a3ac687090aa739de05e379ab6f868bae84ab4eac288ad85c328cd1ec9e53 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^3.0.0": + version: 3.0.1 + resolution: "https-proxy-agent@npm:3.0.1" + dependencies: + agent-base: ^4.3.0 + debug: ^3.1.0 + checksum: 9464b2b13462f246205365bf1b603343c3a4d43f0ffa59fc7fb970bfddf831d88e11fcecf80bd3f1fdaa890b27bcb40c4ac4bae2ed21358a7f61b93a763b2a97 languageName: node linkType: hard @@ -31812,23 +37022,23 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^6.0.0": - version: 6.2.1 - resolution: "https-proxy-agent@npm:6.2.1" +"https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" dependencies: - agent-base: ^7.0.2 + agent-base: 6 debug: 4 - checksum: d0615fb6ae69241d6faaeb9fe51e071d093fba504e5111cb64ede40e8d701b3ddc762525c96f594e7df266b00dfeb3822bd8abbda33ab6f050a3f679062d74c4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.2, https-proxy-agent@npm:^7.0.3, https-proxy-agent@npm:^7.0.4, https-proxy-agent@npm:^7.0.5": - version: 7.0.5 - resolution: "https-proxy-agent@npm:7.0.5" +"https-proxy-agent@npm:^7.0.2, https-proxy-agent@npm:^7.0.3": + version: 7.0.4 + resolution: "https-proxy-agent@npm:7.0.4" dependencies: agent-base: ^7.0.2 debug: 4 - checksum: 2e1a28960f13b041a50702ee74f240add8e75146a5c37fc98f1960f0496710f6918b3a9fe1e5aba41e50f58e6df48d107edd9c405c5f0d73ac260dabf2210857 + checksum: daaab857a967a2519ddc724f91edbbd388d766ff141b9025b629f92b9408fc83cee8a27e11a907aede392938e9c398e240d643e178408a59e4073539cde8cfe9 languageName: node linkType: hard @@ -31846,10 +37056,10 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^5.0.0": - version: 5.0.0 - resolution: "human-signals@npm:5.0.0" - checksum: 6504560d5ed91444f16bea3bd9dfc66110a339442084e56c3e7fa7bbdf3f406426d6563d662bdce67064b165eac31eeabfc0857ed170aaa612cf14ec9f9a464c +"human-signals@npm:^4.3.0": + version: 4.3.1 + resolution: "human-signals@npm:4.3.1" + checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1 languageName: node linkType: hard @@ -31870,16 +37080,16 @@ __metadata: linkType: hard "hyphen@npm:^1.6.4": - version: 1.10.6 - resolution: "hyphen@npm:1.10.6" - checksum: a2b6a6b3cab3ed38574b726234cab066e4ac9d3f8f33f8df48f4694e23196019b19e04bd859a0731d2b5afa24b95b6c3bd989c844fb427625c23c8564b4b5faa + version: 1.6.5 + resolution: "hyphen@npm:1.6.5" + checksum: 8c05ac23e1c5501fc9a605abb6a40ac9a41b902e91aed3a27bfd7a93ba363c7d87b696023f7f416817b0189c4545f697f385aa96dc4308d5d331e3f0f637aa44 languageName: node linkType: hard -"hyphenate-style-name@npm:^1.0.3": - version: 1.1.0 - resolution: "hyphenate-style-name@npm:1.1.0" - checksum: b9ed74e29181d96bd58a2d0e62fc4a19879db591dba268275829ff0ae595fcdf11faafaeaa63330a45c3004664d7db1f0fc7cdb372af8ee4615ed8260302c207 +"hyphenate-style-name@npm:^1.0.2": + version: 1.0.4 + resolution: "hyphenate-style-name@npm:1.0.4" + checksum: 4f5bf4b055089754924babebaa23c17845937bcca6aee95d5d015f8fa1e6814279002bd6a9e541e3fac2cd02519fc76305396727066c57c8e21a7e73e7a12137 languageName: node linkType: hard @@ -31908,6 +37118,13 @@ __metadata: languageName: node linkType: hard +"icss-replace-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "icss-replace-symbols@npm:1.1.0" + checksum: 24575b2c2f7e762bfc6f4beee31be9ba98a01cad521b5aa9954090a5de2b5e1bf67814c17e22f9e51b7d798238db8215a173d6c2b4726ce634ce06b68ece8045 + languageName: node + linkType: hard + "icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": version: 5.1.0 resolution: "icss-utils@npm:5.1.0" @@ -31947,10 +37164,24 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.9, ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": - version: 5.3.2 - resolution: "ignore@npm:5.3.2" - checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be +"ignore@npm:^5.0.4, ignore@npm:^5.2.0": + version: 5.2.0 + resolution: "ignore@npm:5.2.0" + checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 + languageName: node + linkType: hard + +"ignore@npm:^5.0.5, ignore@npm:^5.3.1": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 + languageName: node + linkType: hard + +"ignore@npm:^5.1.9, ignore@npm:^5.2.4": + version: 5.2.4 + resolution: "ignore@npm:5.2.4" + checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef languageName: node linkType: hard @@ -32006,9 +37237,9 @@ __metadata: linkType: hard "immer@npm:^10.0.3": - version: 10.1.1 - resolution: "immer@npm:10.1.1" - checksum: 07c67970b7d22aded73607193d84861bf786f07d47f7d7c98bb10016c7a88f6654ad78ae1e220b3c623695b133aabbf24f5eb8d9e8060cff11e89ccd81c9c10b + version: 10.0.4 + resolution: "immer@npm:10.0.4" + checksum: 8c69cad9adde7296b6857aadc0837b792840d46d5b5759002cfc168abe58815bd5b944a9533a03df4738d6ce3dc918cc0a88437324fd71e1fcbd2e77273c39f0 languageName: node linkType: hard @@ -32020,9 +37251,9 @@ __metadata: linkType: hard "immutable@npm:^4.0.0": - version: 4.3.7 - resolution: "immutable@npm:4.3.7" - checksum: 1c50eb053bb300796551604afff554066f041aa8e15926cf98f6d11d9736b62ad12531c06515dd96375258653878b4736f8051cd20b640f5f976d09fa640e3ec + version: 4.3.0 + resolution: "immutable@npm:4.3.0" + checksum: bbd7ea99e2752e053323543d6ff1cc71a4b4614fa6121f321ca766db2bd2092f3f1e0a90784c5431350b7344a4f792fa002eac227062d59b9377b6c09063b58b languageName: node linkType: hard @@ -32043,7 +37274,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": +"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -32061,26 +37292,26 @@ __metadata: linkType: hard "import-in-the-middle@npm:^1.7.4": - version: 1.11.2 - resolution: "import-in-the-middle@npm:1.11.2" + version: 1.7.4 + resolution: "import-in-the-middle@npm:1.7.4" dependencies: acorn: ^8.8.2 acorn-import-attributes: ^1.9.5 cjs-module-lexer: ^1.2.2 module-details-from-path: ^1.0.3 - checksum: 06fb73100a918e00778779713119236cc8d3d4656aae9076a18159cfcd28eb0cc26e0a5040d11da309c5f8f8915c143b8d74e73c0734d3f5549b1813d1008bb9 + checksum: 4aec486db2e12526f2df13774100dfbc043303cd6dd7c8f0a4e40012da93bb6ba21a671e8aa4c35743af68d5f2d00fc0ffb438a685450890f5853805afdafc91 languageName: node linkType: hard "import-local@npm:^3.0.2": - version: 3.2.0 - resolution: "import-local@npm:3.2.0" + version: 3.0.2 + resolution: "import-local@npm:3.0.2" dependencies: pkg-dir: ^4.2.0 resolve-cwd: ^3.0.0 bin: import-local-fixture: fixtures/cli.js - checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 + checksum: c74d9f9484c878cda1de3434613c7ff72d5dadcf20e5482542232d7c2575b713ff88701d6675fcf09a3684cb23fb407c8b333b9cbc59438712723d058d8e976c languageName: node linkType: hard @@ -32173,12 +37404,12 @@ __metadata: languageName: node linkType: hard -"inline-style-prefixer@npm:^7.0.1": - version: 7.0.1 - resolution: "inline-style-prefixer@npm:7.0.1" +"inline-style-prefixer@npm:^6.0.0": + version: 6.0.0 + resolution: "inline-style-prefixer@npm:6.0.0" dependencies: - css-in-js-utils: ^3.1.0 - checksum: 07a72573dfdac5e08fa18f5ce71d922861716955e230175ac415db227d9ed49443c764356cb407a92f4c85b30ebf39604165260b4dfbf3196b7736d7332c5c06 + css-in-js-utils: ^2.0.0 + checksum: 1331a6184bed03d145e3b9a98363fc7a245590ea1a495df7376a99386737893d4318f8ecf873e2be8431cff1de91512b7a4b9e36326933d5647db0088b63ef4f languageName: node linkType: hard @@ -32217,7 +37448,7 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:^7.0.0": +"inquirer@npm:^7.0.0, inquirer@npm:^7.1.0": version: 7.3.3 resolution: "inquirer@npm:7.3.3" dependencies: @@ -32238,9 +37469,9 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:^8.0.0, inquirer@npm:^8.1.2, inquirer@npm:^8.1.5": - version: 8.2.6 - resolution: "inquirer@npm:8.2.6" +"inquirer@npm:^8.0.0": + version: 8.2.4 + resolution: "inquirer@npm:8.2.4" dependencies: ansi-escapes: ^4.2.1 chalk: ^4.1.1 @@ -32256,8 +37487,31 @@ __metadata: string-width: ^4.1.0 strip-ansi: ^6.0.0 through: ^2.3.6 - wrap-ansi: ^6.0.1 - checksum: 387ffb0a513559cc7414eb42c57556a60e302f820d6960e89d376d092e257a919961cd485a1b4de693dbb5c0de8bc58320bfd6247dfd827a873aa82a4215a240 + wrap-ansi: ^7.0.0 + checksum: dfcb6529d3af443dfea2241cb471508091b51f5121a088fdb8728b23ec9b349ef0a5e13a0ef2c8e19457b0bed22f7cbbcd561f7a4529d084c562a58c605e2655 + languageName: node + linkType: hard + +"inquirer@npm:^8.1.5": + version: 8.2.5 + resolution: "inquirer@npm:8.2.5" + dependencies: + ansi-escapes: ^4.2.1 + chalk: ^4.1.1 + cli-cursor: ^3.1.0 + cli-width: ^3.0.0 + external-editor: ^3.0.3 + figures: ^3.0.0 + lodash: ^4.17.21 + mute-stream: 0.0.8 + ora: ^5.4.1 + run-async: ^2.4.0 + rxjs: ^7.5.5 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + through: ^2.3.6 + wrap-ansi: ^7.0.0 + checksum: f13ee4c444187786fb393609dedf6b30870115a57b603f2e6424f29a99abc13446fd45ee22461c33c9c40a92a60a8df62d0d6b25d74fc6676fa4cb211de55b55 languageName: node linkType: hard @@ -32295,7 +37549,29 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": +"internal-slot@npm:^1.0.3": + version: 1.0.3 + resolution: "internal-slot@npm:1.0.3" + dependencies: + get-intrinsic: ^1.1.0 + has: ^1.0.3 + side-channel: ^1.0.4 + checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.4": + version: 1.0.6 + resolution: "internal-slot@npm:1.0.6" + dependencies: + get-intrinsic: ^1.2.2 + hasown: ^2.0.0 + side-channel: ^1.0.4 + checksum: 7872454888047553ce97a3fa1da7cc054a28ec5400a9c2e9f4dbe4fe7c1d041cb8e8301467614b80d4246d50377aad2fb58860b294ed74d6700cc346b6f89549 + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.7": version: 1.0.7 resolution: "internal-slot@npm:1.0.7" dependencies: @@ -32379,15 +37655,15 @@ __metadata: linkType: hard "io-ts@npm:^2.2.13": - version: 2.2.21 - resolution: "io-ts@npm:2.2.21" + version: 2.2.16 + resolution: "io-ts@npm:2.2.16" peerDependencies: fp-ts: ^2.5.0 - checksum: c6ae5237e313f7428c874fa5667b3656adaa5ec29f7f34194ad8ea8894b525c89322a5b74ca560e7cd66f8334b0b48cae6c4dc517c662de72da86110140646d4 + checksum: 1b5855682e413cc92cfb5c51d0bdb24c99e407ab4e67821a53078f5d8dedbc387840c5b240cb19dd5d542bbdd2e2317ece17674a674f3de561ca0f00ae765bba languageName: node linkType: hard -"ioredis@npm:5.3.2": +"ioredis@npm:5.3.2, ioredis@npm:^5.0.0, ioredis@npm:^5.2.3, ioredis@npm:^5.3.2": version: 5.3.2 resolution: "ioredis@npm:5.3.2" dependencies: @@ -32404,23 +37680,6 @@ __metadata: languageName: node linkType: hard -"ioredis@npm:^5.0.0, ioredis@npm:^5.2.3, ioredis@npm:^5.3.2": - version: 5.4.1 - resolution: "ioredis@npm:5.4.1" - dependencies: - "@ioredis/commands": ^1.1.1 - cluster-key-slot: ^1.1.0 - debug: ^4.3.4 - denque: ^2.1.0 - lodash.defaults: ^4.2.0 - lodash.isarguments: ^3.1.0 - redis-errors: ^1.2.0 - redis-parser: ^3.0.0 - standard-as-callback: ^2.1.0 - checksum: 92210294f75800febe7544c27b07e4892480172363b11971aa575be5b68f023bfed4bc858abc9792230c153aa80409047a358f174062c14d17536aa4499fe10b - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -32446,16 +37705,16 @@ __metadata: linkType: hard "ip@npm:^1.1.5": - version: 1.1.9 - resolution: "ip@npm:1.1.9" - checksum: b6d91fd45a856e3bd6d4f601ea0619d90f3517638f6918ebd079f959a8a6308568d8db5ef4fdf037e0d9cfdcf264f46833dfeea81ca31309cf0a7eb4b1307b84 + version: 1.1.5 + resolution: "ip@npm:1.1.5" + checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a languageName: node linkType: hard "ip@npm:^2.0.0": - version: 2.0.1 - resolution: "ip@npm:2.0.1" - checksum: d765c9fd212b8a99023a4cde6a558a054c298d640fec1020567494d257afd78ca77e37126b1a3ef0e053646ced79a816bf50621d38d5e768cdde0431fa3b0d35 + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 languageName: node linkType: hard @@ -32466,10 +37725,17 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.0.1, ipaddr.js@npm:^2.1.0": - version: 2.2.0 - resolution: "ipaddr.js@npm:2.2.0" - checksum: 770ba8451fd9bf78015e8edac0d5abd7a708cbf75f9429ca9147a9d2f3a2d60767cd5de2aab2b1e13ca6e4445bdeff42bf12ef6f151c07a5c6cf8a44328e2859 +"ipaddr.js@npm:^2.0.1": + version: 2.0.1 + resolution: "ipaddr.js@npm:2.0.1" + checksum: dd194a394a843d470f88d17191b0948f383ed1c8e320813f850c336a0fcb5e9215d97ec26ca35ab4fbbd31392c8b3467f3e8344628029ed3710b2ff6b5d1034e + languageName: node + linkType: hard + +"ipaddr.js@npm:^2.1.0": + version: 2.1.0 + resolution: "ipaddr.js@npm:2.1.0" + checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 languageName: node linkType: hard @@ -32507,7 +37773,16 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.0": + version: 1.1.0 + resolution: "is-arguments@npm:1.1.0" + dependencies: + call-bind: ^1.0.0 + checksum: c32f8b5052061de83b2cd17e0e87ec914ac96e55bbd184e07f9b78b8360d80f7f9a34060d44ee8684249664609213f57447e0f63798e7c265ec811fd242b0077 + languageName: node + linkType: hard + +"is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -32517,7 +37792,18 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": +"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": + version: 3.0.2 + resolution: "is-array-buffer@npm:3.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + is-typed-array: ^1.1.10 + checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4": version: 3.0.4 resolution: "is-array-buffer@npm:3.0.4" dependencies: @@ -32551,11 +37837,9 @@ __metadata: linkType: hard "is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + version: 1.0.1 + resolution: "is-bigint@npm:1.0.1" + checksum: 04aa6fde59d2b7929df865acb89c8d7f89f919cc149b8be11e3560b1aab8667e5d939cc8954097c496f7dda80fd5bb67f829ca80ab66cc68918e41e2c1b9c5d7 languageName: node linkType: hard @@ -32569,12 +37853,11 @@ __metadata: linkType: hard "is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" + version: 1.1.0 + resolution: "is-boolean-object@npm:1.1.0" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + call-bind: ^1.0.0 + checksum: 3ead0446176ee42a69f87658bf12d53c135095336d34765fa65f137f378ea125429bf777f91f6dd3407db80829d742bc4fb2fdaf8d2cf6ba82a2de2a07fbbac7 languageName: node linkType: hard @@ -32592,23 +37875,32 @@ __metadata: languageName: node linkType: hard -"is-bun-module@npm:^1.0.2": - version: 1.2.1 - resolution: "is-bun-module@npm:1.2.1" - dependencies: - semver: ^7.6.3 - checksum: 1c2cbcf1a76991add1b640d2d7fe09848e8697a76f96e1289dff44133a48c97f5dc601d4a66d3f3a86217a77178d72d33d10d0c9e14194e58e70ec8df3eae41a +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.4": + version: 1.2.4 + resolution: "is-callable@npm:1.2.4" + checksum: 1a28d57dc435797dae04b173b65d6d1e77d4f16276e9eff973f994eadcfdc30a017e6a597f092752a083c1103cceb56c91e3dadc6692fedb9898dfaba701575f languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac languageName: node linkType: hard -"is-ci@npm:^3.0.0, is-ci@npm:^3.0.1": +"is-ci@npm:^3.0.0": + version: 3.0.0 + resolution: "is-ci@npm:3.0.0" + dependencies: + ci-info: ^3.1.1 + bin: + is-ci: bin.js + checksum: 4b45aef32dd42dcb1f6fb3cd4b3a7ee7e18ea47516d2129005f46c3f36983506bb471382bac890973cf48a2f60d926a24461674ca2d9dc10744d82d4a876c26b + languageName: node + linkType: hard + +"is-ci@npm:^3.0.1": version: 3.0.1 resolution: "is-ci@npm:3.0.1" dependencies: @@ -32626,12 +37918,48 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1": - version: 2.15.1 - resolution: "is-core-module@npm:2.15.1" +"is-core-module@npm:^2.11.0": + version: 2.12.0 + resolution: "is-core-module@npm:2.12.0" + dependencies: + has: ^1.0.3 + checksum: f7f7eb2ab71fd769ee9fb2385c095d503aa4b5ce0028c04557de03f1e67a87c85e5bac1f215945fc3c955867a139a415a3ec4c4234a0bffdf715232660f440a6 + languageName: node + linkType: hard + +"is-core-module@npm:^2.12.0, is-core-module@npm:^2.9.0": + version: 2.12.1 + resolution: "is-core-module@npm:2.12.1" + dependencies: + has: ^1.0.3 + checksum: f04ea30533b5e62764e7b2e049d3157dc0abd95ef44275b32489ea2081176ac9746ffb1cdb107445cf1ff0e0dfcad522726ca27c27ece64dadf3795428b8e468 + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0": + version: 2.13.0 + resolution: "is-core-module@npm:2.13.0" + dependencies: + has: ^1.0.3 + checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355 + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.1": + version: 2.15.0 + resolution: "is-core-module@npm:2.15.0" dependencies: hasown: ^2.0.2 - checksum: df134c168115690724b62018c37b2f5bba0d5745fa16960b329c5a00883a8bea6a5632fdb1e3efcce237c201826ba09f93197b7cd95577ea56b0df335be23633 + checksum: a9f7a52707c9b59d7164094d183bda892514fc3ba3139f245219c7abe7f6e8d3e2cdcf861f52a891a467f785f1dfa5d549f73b0ee715f4ba56e8882d335ea585 + languageName: node + linkType: hard + +"is-core-module@npm:^2.8.1": + version: 2.9.0 + resolution: "is-core-module@npm:2.9.0" + dependencies: + has: ^1.0.3 + checksum: b27034318b4b462f1c8f1dfb1b32baecd651d891a4e2d1922135daeff4141dfced2b82b07aef83ef54275c4a3526aa38da859223664d0868ca24182badb784ce languageName: node linkType: hard @@ -32644,7 +37972,14 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.2, is-date-object@npm:^1.0.5": +"is-date-object@npm:^1.0.1": + version: 1.0.2 + resolution: "is-date-object@npm:1.0.2" + checksum: ac859426e5df031abd9d1eeed32a41cc0de06e47227bd972b8bc716460a9404654b3dba78f41e8171ccf535c4bfa6d72a8d1d15a0873f9646698af415e92c2fb + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.2, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -32867,14 +38202,14 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.2, is-map@npm:^2.0.3": - version: 2.0.3 - resolution: "is-map@npm:2.0.3" - checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc +"is-map@npm:^2.0.1, is-map@npm:^2.0.2": + version: 2.0.2 + resolution: "is-map@npm:2.0.2" + checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 languageName: node linkType: hard -"is-nan@npm:^1.3.2": +"is-nan@npm:^1.2.1, is-nan@npm:^1.3.2": version: 1.3.2 resolution: "is-nan@npm:1.3.2" dependencies: @@ -32884,6 +38219,13 @@ __metadata: languageName: node linkType: hard +"is-negative-zero@npm:^2.0.2": + version: 2.0.2 + resolution: "is-negative-zero@npm:2.0.2" + checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a + languageName: node + linkType: hard + "is-negative-zero@npm:^2.0.3": version: 2.0.3 resolution: "is-negative-zero@npm:2.0.3" @@ -32892,11 +38234,9 @@ __metadata: linkType: hard "is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + version: 1.0.4 + resolution: "is-number-object@npm:1.0.4" + checksum: d8e4525b5c151f1830872bf217901b58b3a9f66d93fe2f71c2087418e03d7f5c19a3ad64afa0feb70dafd93f7b97e205e3520a8ff007be665e54b377f5b736a8 languageName: node linkType: hard @@ -32937,7 +38277,7 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^2.0.0": +"is-plain-obj@npm:^2.0.0, is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa @@ -33014,14 +38354,23 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.2, is-set@npm:^2.0.3": - version: 2.0.3 - resolution: "is-set@npm:2.0.3" - checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe +"is-set@npm:^2.0.1, is-set@npm:^2.0.2": + version: 2.0.2 + resolution: "is-set@npm:2.0.2" + checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "is-shared-array-buffer@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": +"is-shared-array-buffer@npm:^1.0.3": version: 1.0.3 resolution: "is-shared-array-buffer@npm:1.0.3" dependencies: @@ -33045,9 +38394,9 @@ __metadata: linkType: hard "is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + version: 2.0.0 + resolution: "is-stream@npm:2.0.0" + checksum: 4dc47738e26bc4f1b3be9070b6b9e39631144f204fc6f87db56961220add87c10a999ba26cf81699f9ef9610426f69cb08a4713feff8deb7d8cadac907826935 languageName: node linkType: hard @@ -33075,15 +38424,24 @@ __metadata: linkType: hard "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" + version: 1.0.3 + resolution: "is-symbol@npm:1.0.3" dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + has-symbols: ^1.0.1 + checksum: c6d54bd01218fa202da8ce91525ca41a907819be5f000df9ab9621467e087eb36f34b2dbfa51a2a699a282e860681ffa6a787d69e944ba99a46d3df553ff2798 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.10": + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" + dependencies: + which-typed-array: ^1.1.11 + checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc4771796 languageName: node linkType: hard -"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": +"is-typed-array@npm:^1.1.13": version: 1.1.13 resolution: "is-typed-array@npm:1.1.13" dependencies: @@ -33092,6 +38450,32 @@ __metadata: languageName: node linkType: hard +"is-typed-array@npm:^1.1.3": + version: 1.1.10 + resolution: "is-typed-array@npm:1.1.10" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.9": + version: 1.1.9 + resolution: "is-typed-array@npm:1.1.9" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + es-abstract: ^1.20.0 + for-each: ^0.3.3 + has-tostringtag: ^1.0.0 + checksum: 11910f1e58755fef43bf0074e52fa5b932bf101ec65d613e0a83d40e8e4c6e3f2ee142d624ebc7624c091d3bbe921131f8db7d36ecbbb71909f2fe310c1faa65 + languageName: node + linkType: hard + "is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -33147,10 +38531,10 @@ __metadata: languageName: node linkType: hard -"is-weakmap@npm:^2.0.2": - version: 2.0.2 - resolution: "is-weakmap@npm:2.0.2" - checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d +"is-weakmap@npm:^2.0.1": + version: 2.0.1 + resolution: "is-weakmap@npm:2.0.1" + checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 languageName: node linkType: hard @@ -33163,13 +38547,13 @@ __metadata: languageName: node linkType: hard -"is-weakset@npm:^2.0.3": - version: 2.0.3 - resolution: "is-weakset@npm:2.0.3" +"is-weakset@npm:^2.0.1": + version: 2.0.2 + resolution: "is-weakset@npm:2.0.2" dependencies: - call-bind: ^1.0.7 - get-intrinsic: ^1.2.4 - checksum: 8b6a20ee9f844613ff8f10962cfee49d981d584525f2357fee0a04dfbcde9fd607ed60cb6dab626dbcc470018ae6392e1ff74c0c1aced2d487271411ad9d85ae + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 languageName: node linkType: hard @@ -33203,15 +38587,6 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^3": - version: 3.1.0 - resolution: "is-wsl@npm:3.1.0" - dependencies: - is-inside-container: ^1.0.0 - checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 - languageName: node - linkType: hard - "isarray@npm:0.0.1": version: 0.0.1 resolution: "isarray@npm:0.0.1" @@ -33233,6 +38608,13 @@ __metadata: languageName: node linkType: hard +"isemail@npm:2.x.x": + version: 2.2.1 + resolution: "isemail@npm:2.2.1" + checksum: 64b7b09a04fc09e29ff59b4de46931727bcdbc23c1eec11d895f4a0c85b28d6c98c9a36282a0cb442ca97a6ea1810c87660f3ae0b803c7b6b8bd366001c21ad1 + languageName: node + linkType: hard + "isemail@npm:3.x.x": version: 3.2.0 resolution: "isemail@npm:3.2.0" @@ -33249,13 +38631,6 @@ __metadata: languageName: node linkType: hard -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e - languageName: node - linkType: hard - "island.is@workspace:.": version: 0.0.0-use.local resolution: "island.is@workspace:." @@ -33352,7 +38727,7 @@ __metadata: "@nx/webpack": 19.4.0 "@nx/workspace": 19.4.0 "@openapitools/openapi-generator-cli": 1.0.15-4.3.1 - "@playwright/test": 1.29 + "@playwright/test": 1.48 "@react-pdf/renderer": ^3.1.9 "@rehooks/component-size": 1.0.3 "@simplewebauthn/server": 10.0.0 @@ -33508,7 +38883,7 @@ __metadata: font-awesome: 4.7.0 form-data: 3.0.0 formik: 2.2.9 - framer-motion: 9.0.0 + framer-motion: 11.11.9 fridagar: ^3.2.0 fuse.js: 7.0.0 glob: 10.3.3 @@ -33566,6 +38941,7 @@ __metadata: node-gyp: 9.1.0 node-html-markdown: 1.3.0 nodemailer: 6.7.2 + nodemailer-mock: 2.0.6 nx: 19.4.0 oidc-client-ts: 2.4.0 openapi3-ts: 2.0.0 @@ -33675,7 +39051,7 @@ __metadata: languageName: node linkType: hard -"isomorphic-fetch@npm:3.0.0": +"isomorphic-fetch@npm:3.0.0, isomorphic-fetch@npm:^3.0.0": version: 3.0.0 resolution: "isomorphic-fetch@npm:3.0.0" dependencies: @@ -33695,7 +39071,7 @@ __metadata: languageName: node linkType: hard -"isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": +"isomorphic-ws@npm:^5.0.0": version: 5.0.0 resolution: "isomorphic-ws@npm:5.0.0" peerDependencies: @@ -33711,20 +39087,13 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:3.2.0": +"istanbul-lib-coverage@npm:3.2.0, istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 - languageName: node - linkType: hard - "istanbul-lib-instrument@npm:^4.0.3": version: 4.0.3 resolution: "istanbul-lib-instrument@npm:4.0.3" @@ -33737,61 +39106,68 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" +"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": + version: 5.1.0 + resolution: "istanbul-lib-instrument@npm:5.1.0" dependencies: "@babel/core": ^7.12.3 "@babel/parser": ^7.14.7 "@istanbuljs/schema": ^0.1.2 istanbul-lib-coverage: ^3.2.0 semver: ^6.3.0 - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 + checksum: 8b82e733c69fe9f94d2e21f3e5760c9bedb110329aa75df4bd40df95f1cac3bf38767e43f35b125cc547ceca7376b72ce7d95cc5238b7e9088345c7b589233d3 languageName: node linkType: hard "istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.3 - resolution: "istanbul-lib-instrument@npm:6.0.3" + version: 6.0.0 + resolution: "istanbul-lib-instrument@npm:6.0.0" dependencies: - "@babel/core": ^7.23.9 - "@babel/parser": ^7.23.9 - "@istanbuljs/schema": ^0.1.3 + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 istanbul-lib-coverage: ^3.2.0 semver: ^7.5.4 - checksum: 74104c60c65c4fa0e97cc76f039226c356123893929f067bfad5f86fe839e08f5d680354a68fead3bc9c1e2f3fa6f3f53cded70778e821d911e851d349f3545a + checksum: b9dc3723a769e65dbe1b912f935088ffc07cf393fa78a3ce79022c91aabb0ad01405ffd56083cdd822e514798e9daae3ea7bfe85633b094ecb335d28eb0a3f97 languageName: node linkType: hard "istanbul-lib-report@npm:^3.0.0": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" + version: 3.0.0 + resolution: "istanbul-lib-report@npm:3.0.0" dependencies: istanbul-lib-coverage: ^3.0.0 - make-dir: ^4.0.0 + make-dir: ^3.0.0 supports-color: ^7.1.0 - checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 + checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b languageName: node linkType: hard "istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" + version: 4.0.0 + resolution: "istanbul-lib-source-maps@npm:4.0.0" dependencies: debug: ^4.1.1 istanbul-lib-coverage: ^3.0.0 source-map: ^0.6.1 - checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + checksum: 292bfb4083e5f8783cdf829a7686b1a377d0c6c2119d4343c8478e948b38146c4827cddc7eee9f57605acd63c291376d67e4a84163d37c5fc78ad0f27f7e2621 languageName: node linkType: hard "istanbul-reports@npm:^3.0.2, istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" + version: 3.1.4 + resolution: "istanbul-reports@npm:3.1.4" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 + checksum: 2132983355710c522f6b26808015cab9a0ee8b9f5ae0db0d3edeff40b886dd83cb670fb123cb7b32dbe59473d7c00cdde2ba6136bc0acdb20a865fccea64dfe1 + languageName: node + linkType: hard + +"items@npm:2.x.x": + version: 2.1.2 + resolution: "items@npm:2.1.2" + checksum: 29730f0085ec4585a51f25655ce9ecff0d444d3fe75bb7963fc6cbe741176d47cb6a4eb18d67019030e67ac8c9b0267579e8cebd5ed4ba50cf5d95b01650d7a0 languageName: node linkType: hard @@ -33816,20 +39192,33 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.3": - version: 1.1.3 - resolution: "iterator.prototype@npm:1.1.3" +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" dependencies: define-properties: ^1.2.1 get-intrinsic: ^1.2.1 has-symbols: ^1.0.3 reflect.getprototypeof: ^1.0.4 set-function-name: ^2.0.1 - checksum: 7d2a1f8bcbba7b76f72e956faaf7b25405f4de54430c9d099992e6fb9d571717c3044604e8cdfb8e624cb881337d648030ee8b1541d544af8b338835e3f47ebe + checksum: d8a507e2ccdc2ce762e8a1d3f4438c5669160ac72b88b648e59a688eec6bc4e64b22338e74000518418d9e693faf2a092d2af21b9ec7dbf7763b037a54701168 + languageName: node + linkType: hard + +"jackspeak@npm:^2.0.3": + version: 2.3.3 + resolution: "jackspeak@npm:2.3.3" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 4313a7c0cc44c7753c4cb9869935f0b06f4cf96827515f63f58ff46b3d2f6e29aba6b3b5151778397c3f5ae67ef8bfc48871967bd10343c27e90cff198ec7808 languageName: node linkType: hard -"jackspeak@npm:^2.0.3, jackspeak@npm:^2.3.5": +"jackspeak@npm:^2.3.5": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" dependencies: @@ -33843,21 +39232,35 @@ __metadata: linkType: hard "jackspeak@npm:^3.1.2": - version: 3.4.3 - resolution: "jackspeak@npm:3.4.3" + version: 3.4.0 + resolution: "jackspeak@npm:3.4.0" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 + checksum: 350f6f311018bb175ffbe736b19c26ac0b134bb5a17a638169e89594eb0c24ab1c658ab3a2fda24ff63b3b19292e1a5ec19d2255bc526df704e8168d392bef85 + languageName: node + linkType: hard + +"jake@npm:^10.6.1": + version: 10.8.2 + resolution: "jake@npm:10.8.2" + dependencies: + async: 0.9.x + chalk: ^2.4.2 + filelist: ^1.0.1 + minimatch: ^3.0.4 + bin: + jake: ./bin/cli.js + checksum: b604c51863260e374ccd62cd0cfe0b659f72cb71beb7d5fb5137dd65b04cf9d5603abd01f9f6eaaac8f4182f396d6cfae01e0b0844c2215c9c1e200572307cf9 languageName: node linkType: hard "jake@npm:^10.8.5": - version: 10.9.2 - resolution: "jake@npm:10.9.2" + version: 10.8.7 + resolution: "jake@npm:10.8.7" dependencies: async: ^3.2.3 chalk: ^4.0.2 @@ -33865,7 +39268,7 @@ __metadata: minimatch: ^3.1.2 bin: jake: bin/cli.js - checksum: f2dc4a086b4f58446d02cb9be913c39710d9ea570218d7681bb861f7eeaecab7b458256c946aeaa7e548c5e0686cc293e6435501e4047174a3b6a504dcbfcaae + checksum: a23fd2273fb13f0d0d845502d02c791fd55ef5c6a2d207df72f72d8e1eac6d2b8ffa6caf660bc8006b3242e0daaa88a3ecc600194d72b5c6016ad56e9cd43553 languageName: node linkType: hard @@ -33876,15 +39279,6 @@ __metadata: languageName: node linkType: hard -"jay-peg@npm:^1.0.2": - version: 1.1.0 - resolution: "jay-peg@npm:1.1.0" - dependencies: - restructure: ^3.0.0 - checksum: 70a233c81a1a9d0fec865a0ccc36b2a5a910ddc8f66a6d408cb290495f1063c195b316486739b0de73ce0b7316d0512b5a336cff402e0b50c39b9c3bc6e39c0a - languageName: node - linkType: hard - "jest-changed-files@npm:^29.7.0": version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" @@ -34026,6 +39420,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:^27.0.0": + version: 27.5.1 + resolution: "jest-diff@npm:27.5.1" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^27.5.1 + jest-get-type: ^27.5.1 + pretty-format: ^27.5.1 + checksum: 8be27c1e1ee57b2bb2bef9c0b233c19621b4c43d53a3c26e2c00a4e805eb4ea11fe1694a06a9fb0e80ffdcfdc0d2b1cb0b85920b3f5c892327ecd1e7bd96b865 + languageName: node + linkType: hard + "jest-diff@npm:^29.4.1, jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -34038,6 +39444,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-diff@npm:29.5.0" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.4.3 + jest-get-type: ^29.4.3 + pretty-format: ^29.5.0 + checksum: dfd0f4a299b5d127779c76b40106c37854c89c3e0785098c717d52822d6620d227f6234c3a9291df204d619e799e3654159213bf93220f79c8e92a55475a3d39 + languageName: node + linkType: hard + "jest-docblock@npm:^29.7.0": version: 29.7.0 resolution: "jest-docblock@npm:29.7.0" @@ -34102,6 +39520,13 @@ __metadata: languageName: node linkType: hard +"jest-get-type@npm:^29.4.3": + version: 29.4.3 + resolution: "jest-get-type@npm:29.4.3" + checksum: 6ac7f2dde1c65e292e4355b6c63b3a4897d7e92cb4c8afcf6d397f2682f8080e094c8b0b68205a74d269882ec06bf696a9de6cd3e1b7333531e5ed7b112605ce + languageName: node + linkType: hard + "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" @@ -34133,6 +39558,29 @@ __metadata: languageName: node linkType: hard +"jest-haste-map@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-haste-map@npm:29.5.0" + dependencies: + "@jest/types": ^29.5.0 + "@types/graceful-fs": ^4.1.3 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^29.4.3 + jest-util: ^29.5.0 + jest-worker: ^29.5.0 + micromatch: ^4.0.4 + walker: ^1.0.8 + dependenciesMeta: + fsevents: + optional: true + checksum: 3828ff7783f168e34be2c63887f82a01634261f605dcae062d83f979a61c37739e21b9607ecb962256aea3fbe5a530a1acee062d0026fcb47c607c12796cf3b7 + languageName: node + linkType: hard + "jest-haste-map@npm:^29.7.0": version: 29.7.0 resolution: "jest-haste-map@npm:29.7.0" @@ -34166,6 +39614,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-matcher-utils@npm:29.5.0" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.5.0 + jest-get-type: ^29.4.3 + pretty-format: ^29.5.0 + checksum: 1d3e8c746e484a58ce194e3aad152eff21fd0896e8b8bf3d4ab1a4e2cbfed95fb143646f4ad9fdf6e42212b9e8fc033268b58e011b044a9929df45485deb5ac9 + languageName: node + linkType: hard + "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -34195,6 +39655,23 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-message-util@npm:29.5.0" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.5.0 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.5.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: daddece6bbf846eb6a2ab9be9f2446e54085bef4e5cecd13d2a538fa9c01cb89d38e564c6b74fd8e12d37ed9eface8a362240ae9f21d68b214590631e7a0d8bf + languageName: node + linkType: hard + "jest-message-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" @@ -34236,14 +39713,14 @@ __metadata: linkType: hard "jest-pnp-resolver@npm:^1.2.2": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" + version: 1.2.2 + resolution: "jest-pnp-resolver@npm:1.2.2" peerDependencies: jest-resolve: "*" peerDependenciesMeta: jest-resolve: optional: true - checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 + checksum: bd85dcc0e76e0eb0c3d56382ec140f08d25ff4068cda9d0e360bb78fb176cb726d0beab82dc0e8694cafd09f55fee7622b8bcb240afa5fad301f4ed3eebb4f47 languageName: node linkType: hard @@ -34254,6 +39731,13 @@ __metadata: languageName: node linkType: hard +"jest-regex-util@npm:^29.4.3": + version: 29.4.3 + resolution: "jest-regex-util@npm:29.4.3" + checksum: 96fc7fc28cd4dd73a63c13a526202c4bd8b351d4e5b68b1a2a2c88da3308c2a16e26feaa593083eb0bac38cca1aa9dd05025412e7de013ba963fb8e66af22b8a + languageName: node + linkType: hard + "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -34307,7 +39791,24 @@ __metadata: languageName: node linkType: hard -"jest-resolve@npm:^29.4.1, jest-resolve@npm:^29.7.0": +"jest-resolve@npm:^29.4.1": + version: 29.5.0 + resolution: "jest-resolve@npm:29.5.0" + dependencies: + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.5.0 + jest-pnp-resolver: ^1.2.2 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 + resolve: ^1.20.0 + resolve.exports: ^2.0.0 + slash: ^3.0.0 + checksum: 9a125f3cf323ceef512089339d35f3ee37f79fe16a831fb6a26773ea6a229b9e490d108fec7af334142e91845b5996de8e7cdd85a4d8d617078737d804e29c8f + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve@npm:29.7.0" dependencies: @@ -34456,7 +39957,35 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.0.0, jest-util@npm:^29.4.1, jest-util@npm:^29.7.0": +"jest-util@npm:^29.0.0, jest-util@npm:^29.4.1, jest-util@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-util@npm:29.5.0" + dependencies: + "@jest/types": ^29.5.0 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: fd9212950d34d2ecad8c990dda0d8ea59a8a554b0c188b53ea5d6c4a0829a64f2e1d49e6e85e812014933d17426d7136da4785f9cf76fff1799de51b88bc85d3 + languageName: node + linkType: hard + +"jest-util@npm:^29.6.0": + version: 29.6.0 + resolution: "jest-util@npm:29.6.0" + dependencies: + "@jest/types": ^29.6.0 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: 35b95cdfddc20c0249821bcee35e4e4355981339c618049f9be79aace712c05096b385d3abd2cfb66a7995ec37b7e56acf6421ee0c42236e4add6379fcb0ebeb + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" dependencies: @@ -34484,6 +40013,20 @@ __metadata: languageName: node linkType: hard +"jest-validate@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-validate@npm:29.5.0" + dependencies: + "@jest/types": ^29.5.0 + camelcase: ^6.2.0 + chalk: ^4.0.0 + jest-get-type: ^29.4.3 + leven: ^3.1.0 + pretty-format: ^29.5.0 + checksum: 43ca5df7cb75572a254ac3e92fbbe7be6b6a1be898cc1e887a45d55ea003f7a112717d814a674d37f9f18f52d8de40873c8f084f17664ae562736c78dd44c6a1 + languageName: node + linkType: hard + "jest-validate@npm:^29.6.3, jest-validate@npm:^29.7.0": version: 29.7.0 resolution: "jest-validate@npm:29.7.0" @@ -34525,7 +40068,31 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.4.3, jest-worker@npm:^29.6.3, jest-worker@npm:^29.7.0": +"jest-worker@npm:^29.4.3": + version: 29.6.0 + resolution: "jest-worker@npm:29.6.0" + dependencies: + "@types/node": "*" + jest-util: ^29.6.0 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 505f1572b329504670b5ee1325cb23f35cc25b3f17f8244dec50e77bf45e50612c80c68d4263ac5722cb68e8cf41ec187e967b76d8060daf44beb5afc95e3e27 + languageName: node + linkType: hard + +"jest-worker@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-worker@npm:29.5.0" + dependencies: + "@types/node": "*" + jest-util: ^29.5.0 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 1151a1ae3602b1ea7c42a8f1efe2b5a7bf927039deaa0827bf978880169899b705744e288f80a63603fb3fc2985e0071234986af7dc2c21c7a64333d8777c7c9 + languageName: node + linkType: hard + +"jest-worker@npm:^29.6.3, jest-worker@npm:^29.7.0": version: 29.7.0 resolution: "jest-worker@npm:29.7.0" dependencies: @@ -34563,15 +40130,6 @@ __metadata: languageName: node linkType: hard -"jiti@npm:1.17.1": - version: 1.17.1 - resolution: "jiti@npm:1.17.1" - bin: - jiti: bin/jiti.js - checksum: 56c6d8488e7e9cc6ee66a0f0d5e18db6669cb12b2e93364f393442289a9bc75a8e8c796249f59015e01c3ebdf9478e2ca8b76c30e29072c678ee00d39de757c7 - languageName: node - linkType: hard - "jmespath@npm:0.15.0": version: 0.15.0 resolution: "jmespath@npm:0.15.0" @@ -34586,7 +40144,7 @@ __metadata: languageName: node linkType: hard -"joi@npm:17.13.3, joi@npm:^17.2.1, joi@npm:^17.4.0": +"joi@npm:17.13.3": version: 17.13.3 resolution: "joi@npm:17.13.3" dependencies: @@ -34599,6 +40157,18 @@ __metadata: languageName: node linkType: hard +"joi@npm:^10.6.0": + version: 10.6.0 + resolution: "joi@npm:10.6.0" + dependencies: + hoek: 4.x.x + isemail: 2.x.x + items: 2.x.x + topo: 2.x.x + checksum: 9a24dccbab07d4c73a4b4978f791c1bd4484fddb9c7588ad1787422ffbda58052ac82e8738992f587c59e63775c685db2c42f433580e8ebc6199dbd5bd05e90f + languageName: node + linkType: hard + "joi@npm:^13.4.0": version: 13.7.0 resolution: "joi@npm:13.7.0" @@ -34610,6 +40180,19 @@ __metadata: languageName: node linkType: hard +"joi@npm:^17.2.1": + version: 17.9.1 + resolution: "joi@npm:17.9.1" + dependencies: + "@hapi/hoek": ^9.0.0 + "@hapi/topo": ^5.0.0 + "@sideway/address": ^4.1.3 + "@sideway/formula": ^3.0.1 + "@sideway/pinpoint": ^2.0.0 + checksum: 055df3841e00d7ed065ef1cc3330cf69097ab2ffec3083d8b1d6edfd2e25504bf2983f5249d6f0459bcad99fe21bb0c9f6f1cc03569713af27cd5eb00ee7bb7d + languageName: node + linkType: hard + "join-component@npm:^1.1.0": version: 1.1.0 resolution: "join-component@npm:1.1.0" @@ -34618,43 +40201,43 @@ __metadata: linkType: hard "jora@npm:^1.0.0-beta.5": - version: 1.0.0-beta.13 - resolution: "jora@npm:1.0.0-beta.13" + version: 1.0.0-beta.6 + resolution: "jora@npm:1.0.0-beta.6" dependencies: - "@discoveryjs/natural-compare": ^1.1.0 - checksum: a32c3f8f19081e2cf4e02dcd6a8563d1438e32abe2091d84ab1e6a8e7ff9abb390db69e3fe4364be2c9fe1611069a4a38db79d81af204ff1d0dfe5d60595862c + "@discoveryjs/natural-compare": ^1.0.0 + checksum: d3c60163d88069fd2b6d4df69d4bf414707354a1eb8635a7e96669934307a26730622ce2b84a7a21dd407573c3b0d2e88a34f24aa88f77d870ef9a677f87dba8 languageName: node linkType: hard "jose@npm:^1.27.2": - version: 1.28.2 - resolution: "jose@npm:1.28.2" + version: 1.28.1 + resolution: "jose@npm:1.28.1" dependencies: "@panva/asn1.js": ^1.0.0 - checksum: d601afdc79b28ec1fc49bf089921943ac69b73312840c0e1d1dacb6fc3e9cf40d879a333652507177cc7f1cea0af1d36b2ca79f57e166297951e87abd2a96bac + checksum: b91458949df7df08810b7a896a10751f25d3108dfcc41af138dc01e8e5bf7f90ea510cdb3d6bc37e3a293ec7d5cc26fb587de7ce15785a8109892c412e5c0416 languageName: node linkType: hard -"jose@npm:^4.10.4, jose@npm:^4.11.4, jose@npm:^4.14.6": - version: 4.15.9 - resolution: "jose@npm:4.15.9" - checksum: 41abe1c99baa3cf8a78ebbf93da8f8e50e417b7a26754c4afa21865d87527b8ac2baf66de2c5f6accc3f7d7158658dae7364043677236ea1d07895b040097f15 +"jose@npm:^4.10.4": + version: 4.11.2 + resolution: "jose@npm:4.11.2" + checksum: bc9b2271c31683603857b2fd2903afa29f826fffd4bcefc0845355ed86995def87eaadf502033207996109d76698c912e5a986e279326d9629321a50504fe466 languageName: node linkType: hard -"jotai-optics@npm:0.3.2": - version: 0.3.2 - resolution: "jotai-optics@npm:0.3.2" +"jotai-optics@npm:0.3.1": + version: 0.3.1 + resolution: "jotai-optics@npm:0.3.1" peerDependencies: jotai: ">=1.11.0" optics-ts: "*" - checksum: c46f5faa017d252100eba2da88d87c9871175e545ba5e1b5232a973cc18ea66dbe87e6aa3ff53a960971811bceea832743976a93c7d6c2a9aa6ce58945a9b52f + checksum: fd1c531f17c6d2f113335500a9ebaa583a19202d86737c4ea8760a30dfd8a3ffa70a5d73abbba243e2de619f794a064b36b3aee1b0a35154c40dcac8c7e29d2a languageName: node linkType: hard -"jotai-x@npm:^1.2.3": - version: 1.2.4 - resolution: "jotai-x@npm:1.2.4" +"jotai-x@npm:^1.2.1": + version: 1.2.3 + resolution: "jotai-x@npm:1.2.3" peerDependencies: "@types/react": ">=17.0.0" jotai: ">=2.0.0" @@ -34664,13 +40247,13 @@ __metadata: optional: true react: optional: true - checksum: bf4aac8573f60b29b100c1eff5bcf09cfa136f695026d6d9f6d44f9f7c23a6c5bf6b5b36a0b82da6dfd116028ccfadab887d800a1ed240a8fa71ca989164fd2c + checksum: 52d42db5370fee2eb9d876636107b2a161b97e6174ec38b031024005747ef9b5aa810b7f99781844d810311c7ee7356ff072c4055814144bfa864b5957e445c5 languageName: node linkType: hard -"jotai@npm:^2.7.1": - version: 2.10.1 - resolution: "jotai@npm:2.10.1" +"jotai@npm:^2.6.0": + version: 2.8.0 + resolution: "jotai@npm:2.8.0" peerDependencies: "@types/react": ">=17.0.0" react: ">=17.0.0" @@ -34679,7 +40262,7 @@ __metadata: optional: true react: optional: true - checksum: c9580f29fbbfce3e18f044e2bb80bb563a6d15952451a0430f28c4bd6340498bbec0537e8cf38722de117d4ec5846aa2d81489cd55e41b28d018776d2ae533e4 + checksum: b24e7676fb659e72fcd6ccd57b1e120b80fa9172353e5d9e9f980b29d4d176238e3fd0c1b555c51476a0a8dc0d2ea391c6b2840d3e7bfb315892e8a621fd8dfb languageName: node linkType: hard @@ -34691,19 +40274,18 @@ __metadata: linkType: hard "js-beautify@npm:^1.14.0": - version: 1.15.1 - resolution: "js-beautify@npm:1.15.1" + version: 1.14.3 + resolution: "js-beautify@npm:1.14.3" dependencies: config-chain: ^1.1.13 - editorconfig: ^1.0.4 - glob: ^10.3.3 - js-cookie: ^3.0.5 - nopt: ^7.2.0 + editorconfig: ^0.15.3 + glob: ^7.1.3 + nopt: ^5.0.0 bin: css-beautify: js/bin/css-beautify.js html-beautify: js/bin/html-beautify.js js-beautify: js/bin/js-beautify.js - checksum: 0428ea358cdf169da15e11a8b63f13845ee39c707f3718a3ec515eb89d585544525aa8ba5306503431c61e33e1fbfebdf2af41c461e512619d8a2f8664d6c0c4 + checksum: 475146747ddfa233dedfdcba2c2c29cd0895730e6627455fa5dc388b61074fd856fc874cbd18da92b8dc5c04aea25eb46aec95a1e37b2c32f0dd25fb1f4c4698 languageName: node linkType: hard @@ -34714,13 +40296,6 @@ __metadata: languageName: node linkType: hard -"js-cookie@npm:^3.0.5": - version: 3.0.5 - resolution: "js-cookie@npm:3.0.5" - checksum: 2dbd2809c6180fbcf060c6957cb82dbb47edae0ead6bd71cbeedf448aa6b6923115003b995f7d3e3077bfe2cb76295ea6b584eb7196cca8ba0a09f389f64967a - languageName: node - linkType: hard - "js-levenshtein@npm:^1.1.6": version: 1.1.6 resolution: "js-levenshtein@npm:1.1.6" @@ -34728,13 +40303,6 @@ __metadata: languageName: node linkType: hard -"js-md4@npm:^0.3.2": - version: 0.3.2 - resolution: "js-md4@npm:0.3.2" - checksum: aa7b7cbd738b105f86fc0fa50ce2a7a6b6b329ff3f713d1bd38b12c2a72929bab5a16e658a03830faa8d656356aa89b4f77f1fbf05ffa8d095bda6d831441c2d - languageName: node - linkType: hard - "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -34756,6 +40324,17 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:4.0.0": + version: 4.0.0 + resolution: "js-yaml@npm:4.0.0" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: 931d6dddb3589fa272c8273366c6dffa99fd6bd26ac7b70f9bac925c28cb7ae352b964192df84f90ecd7a2ff50ab87e6d58e2148eb19c89aa155c73ed847ab92 + languageName: node + linkType: hard + "js-yaml@npm:4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -34767,7 +40346,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1, js-yaml@npm:^3.9.0": +"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.0, js-yaml@npm:^3.14.1, js-yaml@npm:^3.9.0": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -34847,28 +40426,28 @@ __metadata: languageName: node linkType: hard -"jsdoc@npm:^4.0.0": - version: 4.0.4 - resolution: "jsdoc@npm:4.0.4" +"jsdoc@npm:^3.6.3": + version: 3.6.11 + resolution: "jsdoc@npm:3.6.11" dependencies: - "@babel/parser": ^7.20.15 - "@jsdoc/salty": ^0.2.1 - "@types/markdown-it": ^14.1.1 + "@babel/parser": ^7.9.4 + "@types/markdown-it": ^12.2.3 bluebird: ^3.7.2 catharsis: ^0.9.0 escape-string-regexp: ^2.0.0 js2xmlparser: ^4.0.2 klaw: ^3.0.0 - markdown-it: ^14.1.0 - markdown-it-anchor: ^8.6.7 + markdown-it: ^12.3.2 + markdown-it-anchor: ^8.4.1 marked: ^4.0.10 mkdirp: ^1.0.4 requizzle: ^0.2.3 strip-json-comments: ^3.1.0 + taffydb: 2.6.2 underscore: ~1.13.2 bin: - jsdoc: ./jsdoc.js - checksum: f4372a15a262ffd5abfe71315bbf9ad0fd3dd633ca04298702c0b0d3bacd615a35e9f11877bd7aa4e1bb04adb731a55fb15c3e14e69a8e740e86c45548ad39b6 + jsdoc: jsdoc.js + checksum: 7920b5cba6200c8f56c9ac2ac5e89d06b6581dd1ce22e66976409fad8b68c16bfd8cd30fe9af58baeacc9f6bd9ba06d901ca4f5e234944f42a3c37e55e4ddcf0 languageName: node linkType: hard @@ -34960,12 +40539,12 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": - version: 3.0.2 - resolution: "jsesc@npm:3.0.2" +"jsesc@npm:~0.5.0": + version: 0.5.0 + resolution: "jsesc@npm:0.5.0" bin: jsesc: bin/jsesc - checksum: a36d3ca40574a974d9c2063bf68c2b6141c20da8f2a36bd3279fc802563f35f0527a6c828801295bdfb2803952cf2cf387786c2c90ed564f88d5782475abfe3c + checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 languageName: node linkType: hard @@ -34978,7 +40557,7 @@ __metadata: languageName: node linkType: hard -"json-buffer@npm:3.0.1": +"json-buffer@npm:3.0.1, json-buffer@npm:~3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 @@ -35053,14 +40632,11 @@ __metadata: linkType: hard "json-stable-stringify@npm:^1.0.1": - version: 1.1.1 - resolution: "json-stable-stringify@npm:1.1.1" + version: 1.0.1 + resolution: "json-stable-stringify@npm:1.0.1" dependencies: - call-bind: ^1.0.5 - isarray: ^2.0.5 - jsonify: ^0.0.1 - object-keys: ^1.1.1 - checksum: e1ba06600fd278767eeff53f28e408e29c867e79abf564e7aadc3ce8f31f667258f8db278ef28831e45884dd687388fa1910f46e599fc19fb94c9afbbe3a4de8 + jsonify: ~0.0.0 + checksum: 65d6cbf0fca72a4136999f65f4401cf39a129f7aeff0fdd987ac3d3423a2113659294045fb8377e6e20d865cac32b1b8d70f3d87346c9786adcee60661d96ca5 languageName: node linkType: hard @@ -35081,7 +40657,18 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.1, json5@npm:^1.0.2": +"json5@npm:^1.0.1": + version: 1.0.1 + resolution: "json5@npm:1.0.1" + dependencies: + minimist: ^1.2.0 + bin: + json5: lib/cli.js + checksum: e76ea23dbb8fc1348c143da628134a98adf4c5a4e8ea2adaa74a80c455fc2cdf0e2e13e6398ef819bfe92306b610ebb2002668ed9fc1af386d593691ef346fc3 + languageName: node + linkType: hard + +"json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" dependencies: @@ -35092,7 +40679,16 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.1.2, json5@npm:^2.2.1": + version: 2.2.1 + resolution: "json5@npm:2.2.1" + bin: + json5: lib/cli.js + checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b + languageName: node + linkType: hard + +"json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -35102,14 +40698,14 @@ __metadata: linkType: hard "jsonc-eslint-parser@npm:^2.1.0": - version: 2.4.0 - resolution: "jsonc-eslint-parser@npm:2.4.0" + version: 2.3.0 + resolution: "jsonc-eslint-parser@npm:2.3.0" dependencies: acorn: ^8.5.0 eslint-visitor-keys: ^3.0.0 espree: ^9.0.0 semver: ^7.3.5 - checksum: 495d8be340b464137db0bb25f8280deda2ad773cca6b8b5605325fddb50e8e317842a07ffdfa692b0adcba2d06e25d127087f2d703a63032923d1e67ee5a9efe + checksum: e9343fee870a16f04fdb811b58a9469134c54a03edd58aa5654a888ebae63952cbff3ea3dcad3973465009a275282c6c0dd513e8c3850f7f485a164180085a8b languageName: node linkType: hard @@ -35152,10 +40748,10 @@ __metadata: languageName: node linkType: hard -"jsonify@npm:^0.0.1": - version: 0.0.1 - resolution: "jsonify@npm:0.0.1" - checksum: 027287e1c0294fce15f18c0ff990cfc2318e7f01fb76515f784d5cd0784abfec6fc5c2355c3a2f2cb0ad7f4aa2f5b74ebbfe4e80476c35b2d13cabdb572e1134 +"jsonify@npm:~0.0.0": + version: 0.0.0 + resolution: "jsonify@npm:0.0.0" + checksum: d8d4ed476c116e6987a460dcb82f22284686caae9f498ac87b0502c1765ac1522f4f450a4cad4cc368d202fd3b27a3860735140a82867fc6d558f5f199c38bce languageName: node linkType: hard @@ -35178,17 +40774,6 @@ __metadata: languageName: node linkType: hard -"jsonpath@npm:^1.1.1": - version: 1.1.1 - resolution: "jsonpath@npm:1.1.1" - dependencies: - esprima: 1.2.2 - static-eval: 2.0.2 - underscore: 1.12.1 - checksum: 5480d8e9e424fe2ed4ade6860b6e2cefddb21adb3a99abe0254cd9428e8ef9b0c9fb5729d6a5a514e90df50d645ccea9f3be48d627570e6222dd5dadc28eba7b - languageName: node - linkType: hard - "jsonwebtoken@npm:8.5.1, jsonwebtoken@npm:^8.5.1": version: 8.5.1 resolution: "jsonwebtoken@npm:8.5.1" @@ -35207,7 +40792,7 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:9.0.0": +"jsonwebtoken@npm:9.0.0, jsonwebtoken@npm:^9.0.0": version: 9.0.0 resolution: "jsonwebtoken@npm:9.0.0" dependencies: @@ -35219,21 +40804,15 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:^9.0.0": - version: 9.0.2 - resolution: "jsonwebtoken@npm:9.0.2" +"jsprim@npm:^1.2.2": + version: 1.4.2 + resolution: "jsprim@npm:1.4.2" dependencies: - jws: ^3.2.2 - lodash.includes: ^4.3.0 - lodash.isboolean: ^3.0.3 - lodash.isinteger: ^4.0.4 - lodash.isnumber: ^3.0.3 - lodash.isplainobject: ^4.0.6 - lodash.isstring: ^4.0.1 - lodash.once: ^4.0.0 - ms: ^2.1.1 - semver: ^7.5.4 - checksum: fc739a6a8b33f1974f9772dca7f8493ca8df4cc31c5a09dcfdb7cff77447dcf22f4236fb2774ef3fe50df0abeb8e1c6f4c41eba82f500a804ab101e2fbc9d61a + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a languageName: node linkType: hard @@ -35249,7 +40828,27 @@ __metadata: languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3, jsx-ast-utils@npm:^3.3.5": +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": + version: 3.2.2 + resolution: "jsx-ast-utils@npm:3.2.2" + dependencies: + array-includes: ^3.1.4 + object.assign: ^4.1.2 + checksum: 88c7ade9e1edb8e27021c9ac194184f47d6ffd3852807c3aac44b1610f7eb33359e1aa872a35008d43ed66b5f7be0f6fd8d6e0574d01cf3a4af3ceb0cd0b5988 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^3.3.3": + version: 3.3.3 + resolution: "jsx-ast-utils@npm:3.3.3" + dependencies: + array-includes: ^3.1.5 + object.assign: ^4.1.3 + checksum: a2ed78cac49a0f0c4be8b1eafe3c5257a1411341d8e7f1ac740debae003de04e5f6372bfcfbd9d082e954ffd99aac85bcda85b7c6bc11609992483f4cdc0f745 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^3.3.5": version: 3.3.5 resolution: "jsx-ast-utils@npm:3.3.5" dependencies: @@ -35324,7 +40923,7 @@ __metadata: languageName: node linkType: hard -"jwks-rsa@npm:3.0.1": +"jwks-rsa@npm:3.0.1, jwks-rsa@npm:^3.0.1": version: 3.0.1 resolution: "jwks-rsa@npm:3.0.1" dependencies: @@ -35338,20 +40937,6 @@ __metadata: languageName: node linkType: hard -"jwks-rsa@npm:^3.0.1": - version: 3.1.0 - resolution: "jwks-rsa@npm:3.1.0" - dependencies: - "@types/express": ^4.17.17 - "@types/jsonwebtoken": ^9.0.2 - debug: ^4.3.4 - jose: ^4.14.6 - limiter: ^1.1.5 - lru-memoizer: ^2.2.0 - checksum: eef0c174b0dc7015585982de3aa6644bb8d5b355ebcfc3a40e52ab66cbb9b7c0b699089fd68b7f5d68ae01735a45251f1c1ebc35e9d749e5b84693cc871b0f93 - languageName: node - linkType: hard - "jws@npm:^3.2.2": version: 3.2.2 resolution: "jws@npm:3.2.2" @@ -35393,7 +40978,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:4.5.2": +"keyv@npm:4.5.2, keyv@npm:^4.4.0": version: 4.5.2 resolution: "keyv@npm:4.5.2" dependencies: @@ -35402,12 +40987,13 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.0.0, keyv@npm:^4.4.0, keyv@npm:^4.5.3": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" +"keyv@npm:^4.0.0": + version: 4.3.0 + resolution: "keyv@npm:4.3.0" dependencies: + compress-brotli: ^1.3.8 json-buffer: 3.0.1 - checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 + checksum: abcb5885fc636fb867929234da9e1cd4f74a7da5db2c59fe5f8537372416cfa4e25b54e1c18ae9c3a0e9688452d15bf32fbba1ed9dfb57047673fe6ddb8a7bb6 languageName: node linkType: hard @@ -35455,7 +41041,14 @@ __metadata: languageName: node linkType: hard -"klona@npm:^2.0.4, klona@npm:^2.0.5": +"klona@npm:^2.0.4": + version: 2.0.5 + resolution: "klona@npm:2.0.5" + checksum: 8c976126ea252b766e648a4866e1bccff9d3b08432474ad80c559f6c7265cf7caede2498d463754d8c88c4759895edd8210c85c0d3155e6aae4968362889466f + languageName: node + linkType: hard + +"klona@npm:^2.0.5, klona@npm:^2.0.6": version: 2.0.6 resolution: "klona@npm:2.0.6" checksum: ac9ee3732e42b96feb67faae4d27cf49494e8a3bf3fa7115ce242fe04786788e0aff4741a07a45a2462e2079aa983d73d38519c85d65b70ef11447bbc3c58ce7 @@ -35476,13 +41069,20 @@ __metadata: languageName: node linkType: hard -"language-subtag-registry@npm:^0.3.20, language-subtag-registry@npm:~0.3.2": +"language-subtag-registry@npm:^0.3.20": version: 0.3.23 resolution: "language-subtag-registry@npm:0.3.23" checksum: 0b64c1a6c5431c8df648a6d25594ff280613c886f4a1a542d9b864e5472fb93e5c7856b9c41595c38fac31370328fc79fcc521712e89ea6d6866cbb8e0995d81 languageName: node linkType: hard +"language-subtag-registry@npm:~0.3.2": + version: 0.3.21 + resolution: "language-subtag-registry@npm:0.3.21" + checksum: 5f794525a5bfcefeea155a681af1c03365b60e115b688952a53c6e0b9532b09163f57f1fcb69d6150e0e805ec0350644a4cb35da98f4902562915be9f89572a1 + languageName: node + linkType: hard + "language-tags@npm:=1.0.5": version: 1.0.5 resolution: "language-tags@npm:1.0.5" @@ -35502,12 +41102,12 @@ __metadata: linkType: hard "launch-editor@npm:^2.6.0": - version: 2.9.1 - resolution: "launch-editor@npm:2.9.1" + version: 2.6.0 + resolution: "launch-editor@npm:2.6.0" dependencies: picocolors: ^1.0.0 - shell-quote: ^1.8.1 - checksum: bed887085a9729cc2ad050329d92a99f4c69bacccf96d1ed8c84670608a3a128a828ba8e9a8a41101c5aea5aea6f79984658e2fd11f6ba85e32e6e1ed16dbb1c + shell-quote: ^1.7.3 + checksum: 48e4230643e8fdb5c14c11314706d58d9f3fbafe2606be3d6e37da1918ad8bfe39dd87875c726a1b59b9f4da99d87ec3e36d4c528464f0b820f9e91e5cb1c02d languageName: node linkType: hard @@ -35644,9 +41244,9 @@ __metadata: linkType: hard "libphonenumber-js@npm:^1.10.14": - version: 1.11.12 - resolution: "libphonenumber-js@npm:1.11.12" - checksum: 4ac799d8b6ed5530be3c0a55aeb5eb7b15540ec22d010852f77a81c87a560a95d9ee3957c22170e88e213cf7d0aabc0d7a38953b26b2893fad346bbb25c044bd + version: 1.10.18 + resolution: "libphonenumber-js@npm:1.10.18" + checksum: df0a4b8adfb79666636913f6da730ffc3bc037094e35be492d2f7a23ef26754d65a7afa5f64e04f5c5c2883193fa10bd4bea966fd28edcf0c72ddd13bd4b3625 languageName: node linkType: hard @@ -35800,7 +41400,14 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:^3.1.1, lilconfig@npm:^3.1.2": +"lilconfig@npm:^2.1.0": + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: 8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 + languageName: node + linkType: hard + +"lilconfig@npm:^3.1.2": version: 3.1.2 resolution: "lilconfig@npm:3.1.2" checksum: 4e8b83ddd1d0ad722600994e6ba5d858ddca14f0587aa6b9c8185e17548149b5e13d4d583d811e9e9323157fa8c6a527e827739794c7502b59243c58e210b8c3 @@ -35815,26 +41422,27 @@ __metadata: linkType: hard "linebreak@npm:^1.0.2": - version: 1.1.0 - resolution: "linebreak@npm:1.1.0" + version: 1.0.2 + resolution: "linebreak@npm:1.0.2" dependencies: base64-js: 0.0.8 - unicode-trie: ^2.0.0 - checksum: 65cb66900b4b60d99bb761fb4143d8673ad5dd57dd850fcd921fe425a5a8e3c4416ebee76a68058a90d88b5033a50b210f522558a7e0c7d95ca907b5a2b52520 + brfs: ^2.0.2 + unicode-trie: ^1.0.0 + checksum: 8cd469ac16781c29e77dcb2bdf8d28670e2e97bffe72a8d9be978676f37c9e4421af01dce7b2dd85d8466db58b06a68d22a0dea03b4bb77f8995bc8afe6b038a languageName: node linkType: hard "lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + version: 1.1.6 + resolution: "lines-and-columns@npm:1.1.6" + checksum: 198a5436b1fa5cf703bae719c01c686b076f0ad7e1aafd95a58d626cabff302dc0414822126f2f80b58a8c3d66cda8a7b6da064f27130f87e1d3506d6dfd0d68 languageName: node linkType: hard "lines-and-columns@npm:~2.0.3": - version: 2.0.4 - resolution: "lines-and-columns@npm:2.0.4" - checksum: f5e3e207467d3e722280c962b786dc20ebceb191821dcd771d14ab3146b6744cae28cf305ee4638805bec524ac54800e15698c853fcc53243821f88df37e4975 + version: 2.0.3 + resolution: "lines-and-columns@npm:2.0.3" + checksum: 5955363dfd7d3d7c476d002eb47944dbe0310d57959e2112dce004c0dc76cecfd479cf8c098fd479ff344acdf04ee0e82b455462a26492231ac152f6c48d17a1 languageName: node linkType: hard @@ -35847,12 +41455,12 @@ __metadata: languageName: node linkType: hard -"linkify-it@npm:^5.0.0": - version: 5.0.0 - resolution: "linkify-it@npm:5.0.0" +"linkify-it@npm:^3.0.1": + version: 3.0.3 + resolution: "linkify-it@npm:3.0.3" dependencies: - uc.micro: ^2.0.0 - checksum: b0b86cadaf816b64c947a83994ceaad1c15f9fe7e079776ab88699fb71afd7b8fc3fd3d0ae5ebec8c92c1d347be9ba257b8aef338c0ebf81b0d27dcf429a765a + uc.micro: ^1.0.1 + checksum: 31367a4bb70c5bbc9703246236b504b0a8e049bcd4e0de4291fa50f0ebdebf235b5eb54db6493cb0b1319357c6eeafc4324c9f4aa34b0b943d9f2e11a1268fbc languageName: node linkType: hard @@ -35917,24 +41525,20 @@ __metadata: languageName: node linkType: hard -"listr2@npm:^3.13.5, listr2@npm:^3.8.3": - version: 3.14.0 - resolution: "listr2@npm:3.14.0" +"listr2@npm:^3.8.3": + version: 3.12.2 + resolution: "listr2@npm:3.12.2" dependencies: cli-truncate: ^2.1.0 - colorette: ^2.0.16 + colorette: ^1.4.0 log-update: ^4.0.0 p-map: ^4.0.0 - rfdc: ^1.3.0 - rxjs: ^7.5.1 + rxjs: ^6.6.7 through: ^2.3.8 wrap-ansi: ^7.0.0 peerDependencies: enquirer: ">= 2.3.0 < 3" - peerDependenciesMeta: - enquirer: - optional: true - checksum: fdb8b2d6bdf5df9371ebd5082bee46c6d0ca3d1e5f2b11fbb5a127839855d5f3da9d4968fce94f0a5ec67cac2459766abbb1faeef621065ebb1829b11ef9476d + checksum: 92d72b9b6ae835893618c9a46015d538b8d39602208bd9dc0ddc2d73f3cb24175b5367c6af50a7a8ac6cdf2c1a0d4b398455dc4c4fce29954cb5267343a1d974 languageName: node linkType: hard @@ -35959,7 +41563,7 @@ __metadata: languageName: node linkType: hard -"listr@npm:^0.14.1": +"listr@npm:^0.14.1, listr@npm:^0.14.3": version: 0.14.3 resolution: "listr@npm:0.14.3" dependencies: @@ -35976,34 +41580,33 @@ __metadata: languageName: node linkType: hard -"lit-element@npm:^3.3.0": - version: 3.3.3 - resolution: "lit-element@npm:3.3.3" +"lit-element@npm:^3.2.0": + version: 3.2.0 + resolution: "lit-element@npm:3.2.0" dependencies: - "@lit-labs/ssr-dom-shim": ^1.1.0 "@lit/reactive-element": ^1.3.0 - lit-html: ^2.8.0 - checksum: 29a596fa556e231cce7246ca3e5687ad238f299b0cb374a0934d5e6fe9adf1436e031d4fbd21b280aabfc0e21a66e6c4b52da558a908df2566d09d960f3ca93d + lit-html: ^2.2.0 + checksum: 64bd0f05f7a93921a5853e92f4b86b75affc088805f5ce0249c62a02a1d44445dea5c8319badc4cae6e5663afeb60296e3e0f63fd3af265b89fa482c8a846c3d languageName: node linkType: hard -"lit-html@npm:^2.8.0": - version: 2.8.0 - resolution: "lit-html@npm:2.8.0" +"lit-html@npm:^2.2.0": + version: 2.2.6 + resolution: "lit-html@npm:2.2.6" dependencies: "@types/trusted-types": ^2.0.2 - checksum: 2d70df07248bcb2f502a3afb1e91d260735024fa669669ffb1417575aa39c3092779725ac1b90f5f39e4ce78c63f431f51176bc67f532389f0285a6991573255 + checksum: be0dacad92f21d1b3702616beecd73cf2dc0f73fed0c5985841a374615d2a185c62960438555620a0cfd089d99bfa2c350d8054b8d8790b2b3173c8dc93993bc languageName: node linkType: hard "lit@npm:^2.1.3": - version: 2.8.0 - resolution: "lit@npm:2.8.0" + version: 2.2.6 + resolution: "lit@npm:2.2.6" dependencies: - "@lit/reactive-element": ^1.6.0 - lit-element: ^3.3.0 - lit-html: ^2.8.0 - checksum: 2480e733f7d022d3ecba91abc58a20968f0ca8f5fa30b3341ecf4bcf4845e674ad27b721a5ae53529cafc6ca603c015b80d0979ceb7a711e268ef20bb6bc7527 + "@lit/reactive-element": ^1.3.0 + lit-element: ^3.2.0 + lit-html: ^2.2.0 + checksum: 4a899cb669d8a7f97e8d3152ef73dede8dae5807a2cbdaeb89f912ca8c4dd5393fee03e06903d2aa8222843822e03c665617227ee2770dcd0c348e036128eb58 languageName: node linkType: hard @@ -36039,7 +41642,29 @@ __metadata: languageName: node linkType: hard -"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.3, loader-utils@npm:^2.0.4": +"loader-utils@npm:^1.1.0": + version: 1.4.0 + resolution: "loader-utils@npm:1.4.0" + dependencies: + big.js: ^5.2.2 + emojis-list: ^3.0.0 + json5: ^1.0.1 + checksum: d150b15e7a42ac47d935c8b484b79e44ff6ab4c75df7cc4cb9093350cf014ec0b17bdb60c5d6f91a37b8b218bd63b973e263c65944f58ca2573e402b9a27e717 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.0": + version: 2.0.2 + resolution: "loader-utils@npm:2.0.2" + dependencies: + big.js: ^5.2.2 + emojis-list: ^3.0.0 + json5: ^2.1.2 + checksum: 9078d1ed47cadc57f4c6ddbdb2add324ee7da544cea41de3b7f1128e8108fcd41cd3443a85b7ee8d7d8ac439148aa221922774efe4cf87506d4fb054d5889303 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.3, loader-utils@npm:^2.0.4": version: 2.0.4 resolution: "loader-utils@npm:2.0.4" dependencies: @@ -36078,15 +41703,6 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^7.1.0": - version: 7.2.0 - resolution: "locate-path@npm:7.2.0" - dependencies: - p-locate: ^6.0.0 - checksum: c1b653bdf29beaecb3d307dfb7c44d98a2a98a02ebe353c9ad055d1ac45d6ed4e1142563d222df9b9efebc2bcb7d4c792b507fad9e7150a04c29530b7db570f8 - languageName: node - linkType: hard - "lodash-es@npm:^4.17.15, lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" @@ -36283,13 +41899,6 @@ __metadata: languageName: node linkType: hard -"lodash.startcase@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.startcase@npm:4.4.0" - checksum: c03a4a784aca653845fe09d0ef67c902b6e49288dc45f542a4ab345a9c406a6dc194c774423fa313ee7b06283950301c1221dd2a1d8ecb2dac8dfbb9ed5606b5 - languageName: node - linkType: hard - "lodash.throttle@npm:^4.1.1": version: 4.1.1 resolution: "lodash.throttle@npm:4.1.1" @@ -36318,6 +41927,15 @@ __metadata: languageName: node linkType: hard +"log-symbols@npm:4.0.0": + version: 4.0.0 + resolution: "log-symbols@npm:4.0.0" + dependencies: + chalk: ^4.0.0 + checksum: a7c1fb5cc504ff04422460dcae3a830002426432fbed81280c8a49f4c6f5ef244c28b987636bf1c871ba6866d7024713388be391e92c0d5af6a70598fcabc46b + languageName: node + linkType: hard + "log-symbols@npm:^1.0.2": version: 1.0.2 resolution: "log-symbols@npm:1.0.2" @@ -36369,7 +41987,20 @@ __metadata: languageName: node linkType: hard -"logform@npm:^2.3.2, logform@npm:^2.4.0, logform@npm:^2.6.0, logform@npm:^2.6.1": +"logform@npm:^2.3.2, logform@npm:^2.4.0": + version: 2.4.0 + resolution: "logform@npm:2.4.0" + dependencies: + "@colors/colors": 1.5.0 + fecha: ^4.2.0 + ms: ^2.1.1 + safe-stable-stringify: ^2.3.1 + triple-beam: ^1.3.0 + checksum: e75ccccc1a2664612ade3c7f3d3185787198b4028e54ea2795df87901f28b3881eddd8d7e73ce03f4420dca638a1cbe6d42254179685ab2075e4ac38a71ffb6c + languageName: node + linkType: hard + +"logform@npm:^2.6.0, logform@npm:^2.6.1": version: 2.6.1 resolution: "logform@npm:2.6.1" dependencies: @@ -36396,10 +42027,17 @@ __metadata: languageName: node linkType: hard -"loglevel@npm:^1.6.1, loglevel@npm:^1.6.8": - version: 1.9.2 - resolution: "loglevel@npm:1.9.2" - checksum: 896c67b90a507bfcfc1e9a4daa7bf789a441dd70d95cd13b998d6dd46233a3bfadfb8fadb07250432bbfb53bf61e95f2520f9b11f9d3175cc460e5c251eca0af +"loglevel@npm:^1.6.1": + version: 1.7.1 + resolution: "loglevel@npm:1.7.1" + checksum: 715a4ae69ad75d4d3bd04e4f6e9edbc4cae4db34d1e7f54f426d8cebe2dd9fef891ca3789e839d927cdbc5fad73d789e998db0af2f11f4c40219c272bc923823 + languageName: node + linkType: hard + +"loglevel@npm:^1.6.8": + version: 1.8.0 + resolution: "loglevel@npm:1.8.0" + checksum: 41aeea17de24aba8dba68084a31fe9189648bce4f39c1277e021bb276c3c53a75b0d337395919cf271068ad40ecefabad0e4fdeb4a8f11908beee532b898f4a7 languageName: node linkType: hard @@ -36411,9 +42049,9 @@ __metadata: linkType: hard "long@npm:^5.0.0": - version: 5.2.3 - resolution: "long@npm:5.2.3" - checksum: 885ede7c3de4facccbd2cacc6168bae3a02c3e836159ea4252c87b6e34d40af819824b2d4edce330bfb5c4d6e8ce3ec5864bdcf9473fa1f53a4f8225860e5897 + version: 5.2.1 + resolution: "long@npm:5.2.1" + checksum: 9264da12d1b7df67e5aa6da4498144293caf1ad12e7f092efe4e9a2d32c53f0bbf7334f7cef997080a2a3af061142558ab366efa71698d98b1cdb883477445a7 languageName: node linkType: hard @@ -36505,26 +42143,20 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:6.0.0, lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lru-cache@npm:7.10.1 - 7.13.1": - version: 7.13.1 - resolution: "lru-cache@npm:7.13.1" - checksum: f53c7dd098a7afd6342b23f7182629edff206c7665de79445a7f5455440e768a4d1c6ec52e1a16175580c71535c9437dfb6f6bc22ca1a0e4a7454a97cde87329 +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.2.2 + resolution: "lru-cache@npm:10.2.2" + checksum: 98e8fc93691c546f719a76103ef2bee5a3ac823955c755a47641ec41f8c7fafa1baeaba466937cc1cbfa9cfd47e03536d10e2db3158a64ad91ff3a58a32c893e languageName: node linkType: hard -"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.2.2, lru-cache@npm:^10.4.3": - version: 10.4.3 - resolution: "lru-cache@npm:10.4.3" - checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a +"lru-cache@npm:^4.1.5": + version: 4.1.5 + resolution: "lru-cache@npm:4.1.5" + dependencies: + pseudomap: ^1.0.2 + yallist: ^2.1.2 + checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a languageName: node linkType: hard @@ -36537,27 +42169,60 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.13.1, lru-cache@npm:^7.14.0, lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + languageName: node + linkType: hard + +"lru-cache@npm:^7.10.1, lru-cache@npm:^7.13.1, lru-cache@npm:^7.7.1": + version: 7.14.0 + resolution: "lru-cache@npm:7.14.0" + checksum: efdd329f2c1bb790b71d497c6c59272e6bc2d7dd060ba55fc136becd3dd31fc8346edb446275504d94cb60d3c8385dbf5267b79b23789e409b2bdf302d13f0d7 + languageName: node + linkType: hard + +"lru-cache@npm:^7.14.0, lru-cache@npm:^7.14.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 languageName: node linkType: hard -"lru-cache@npm:^9.1.2": +"lru-cache@npm:^9.0.3, lru-cache@npm:^9.1.2": version: 9.1.2 resolution: "lru-cache@npm:9.1.2" checksum: d3415634be3908909081fc4c56371a8d562d9081eba70543d86871b978702fffd0e9e362b83921b27a29ae2b37b90f55675aad770a54ac83bb3e4de5049d4b15 languageName: node linkType: hard -"lru-memoizer@npm:^2.1.4, lru-memoizer@npm:^2.2.0": - version: 2.3.0 - resolution: "lru-memoizer@npm:2.3.0" +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.1 + resolution: "lru-cache@npm:10.0.1" + checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 + languageName: node + linkType: hard + +"lru-cache@npm:~4.0.0": + version: 4.0.2 + resolution: "lru-cache@npm:4.0.2" + dependencies: + pseudomap: ^1.0.1 + yallist: ^2.0.0 + checksum: 1f615ef23f3316c0935533df2a14f66050502ffd0841726ea3dbaceac09a1bb80cd0c1f8799a881c4d13fe2cdebbd7919668a54eae4ec97caf66141e56b5c3bb + languageName: node + linkType: hard + +"lru-memoizer@npm:^2.1.4": + version: 2.1.4 + resolution: "lru-memoizer@npm:2.1.4" dependencies: lodash.clonedeep: ^4.5.0 - lru-cache: 6.0.0 - checksum: 3468a655b89295ddc0f069a5ebd574ff8565476efc49dfd2b666ed7bd5c6f090e6e3e35cc84714194cc154d5331007d6bbfd50b480ed3ea07303820f81ef7389 + lru-cache: ~4.0.0 + checksum: 8dd076e39afeb2e079287758344ba87cde278f630447e823650320e41a9e3dd8bd91ed375fa7585af95c4ae0473ba18e2fe6f12cbde7f69fc109f2ddd60423b3 languageName: node linkType: hard @@ -36578,9 +42243,18 @@ __metadata: linkType: hard "luxon@npm:^3.2.1": - version: 3.5.0 - resolution: "luxon@npm:3.5.0" - checksum: f290fe5788c8e51e748744f05092160d4be12150dca70f9fadc0d233e53d60ce86acd82e7d909a114730a136a77e56f0d3ebac6141bbb82fd310969a4704825b + version: 3.3.0 + resolution: "luxon@npm:3.3.0" + checksum: 50cf17a0dc155c3dcacbeae8c0b7e80db425e0ba97b9cbdf12a7fc142d841ff1ab1560919f033af46240ed44e2f70c49f76e3422524c7fc8bb8d81ca47c66187 + languageName: node + linkType: hard + +"lz-string@npm:^1.4.4": + version: 1.4.4 + resolution: "lz-string@npm:1.4.4" + bin: + lz-string: bin/bin.js + checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 languageName: node linkType: hard @@ -36593,6 +42267,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:0.25.1": + version: 0.25.1 + resolution: "magic-string@npm:0.25.1" + dependencies: + sourcemap-codec: ^1.4.1 + checksum: a8048393171a2dcb5374383ca94635393172bea047da9dfbcdf00409b5dac002a22a04f44e7ca6d14d0b8841672c44baaf5a4ba2634741cfca136bf47a1be3c3 + languageName: node + linkType: hard + "magic-string@npm:0.30.0": version: 0.30.0 resolution: "magic-string@npm:0.30.0" @@ -36602,12 +42285,21 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.11, magic-string@npm:^0.30.5": - version: 0.30.12 - resolution: "magic-string@npm:0.30.12" +"magic-string@npm:^0.25.7": + version: 0.25.7 + resolution: "magic-string@npm:0.25.7" + dependencies: + sourcemap-codec: ^1.4.4 + checksum: 727a1fb70f9610304fe384f1df0251eb7d1d9dd779c07ef1225690361b71b216f26f5d934bfb11c919b5b0e7ba50f6240c823a6f2e44cfd33d4a07d7747ca829 + languageName: node + linkType: hard + +"magic-string@npm:^0.30.5": + version: 0.30.11 + resolution: "magic-string@npm:0.30.11" dependencies: "@jridgewell/sourcemap-codec": ^1.5.0 - checksum: 3f0d23b74371765f0e6cad4284eebba0ac029c7a55e39292de5aa92281afb827138cb2323d24d2924f6b31f138c3783596c5ccaa98653fe9cf122e1f81325b59 + checksum: e041649453c9a3f31d2e731fc10e38604d50e20d3585cd48bc7713a6e2e1a3ad3012105929ca15750d59d0a3f1904405e4b95a23b7e69dc256db3c277a73a3ca languageName: node linkType: hard @@ -36640,9 +42332,9 @@ __metadata: linkType: hard "make-cancellable-promise@npm:^1.3.1": - version: 1.3.2 - resolution: "make-cancellable-promise@npm:1.3.2" - checksum: d4dcad8211272a4d6ef979747a3d7085cdefb92cf50e096ab6a3ea8295e7578b82edaac261c7c4e3d656eadfac285f05b98856b3cf1fd14390ec2708328a9b35 + version: 1.3.1 + resolution: "make-cancellable-promise@npm:1.3.1" + checksum: f7ca52cdf6f22381600406c05a332e776bf9b71085d17e62a5f9860351de4fc696a9ed03e7bfdd36d3058c0307d33e97166bc210f5e8c842921a92986158361d languageName: node linkType: hard @@ -36656,7 +42348,7 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": +"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -36665,15 +42357,6 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" - dependencies: - semver: ^7.5.3 - checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a - languageName: node - linkType: hard - "make-error@npm:1.x, make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" @@ -36682,9 +42365,9 @@ __metadata: linkType: hard "make-event-props@npm:^1.6.0": - version: 1.6.2 - resolution: "make-event-props@npm:1.6.2" - checksum: ded823d8b73926d94513416c75585be2cea9d9408b085eed31c20a1005147661a50852f869e1779990ddd04c8e07e1f24c766453cc9b4870bcef8d79c533a5fc + version: 1.6.1 + resolution: "make-event-props@npm:1.6.1" + checksum: 0457abdaf0c5edea1a284ec58ca5afed0e3de96efd3754dca02fbe767b6d17607eb28862802bc769656e06bb6374cd0b568e960d23996798dc872d09de537f71 languageName: node linkType: hard @@ -36712,26 +42395,6 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.1 - resolution: "make-fetch-happen@npm:13.0.1" - dependencies: - "@npmcli/agent": ^2.0.0 - cacache: ^18.0.0 - http-cache-semantics: ^4.1.1 - is-lambda: ^1.0.1 - minipass: ^7.0.2 - minipass-fetch: ^3.0.0 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - proc-log: ^4.2.0 - promise-retry: ^2.0.1 - ssri: ^10.0.0 - checksum: 5c9fad695579b79488fa100da05777213dd9365222f85e4757630f8dd2a21a79ddd3206c78cfd6f9b37346819681782b67900ac847a57cf04190f52dda5343fd - languageName: node - linkType: hard - "make-fetch-happen@npm:^9.1.0": version: 9.1.0 resolution: "make-fetch-happen@npm:9.1.0" @@ -36765,6 +42428,15 @@ __metadata: languageName: node linkType: hard +"makeerror@npm:1.0.x": + version: 1.0.11 + resolution: "makeerror@npm:1.0.11" + dependencies: + tmpl: 1.0.x + checksum: 9a62ec2d9648c5329fdc4bc7d779a7305f32b1e55422a4f14244bc890bb43287fe013eb8d965e92a0cf4c443f3e59265b1fc3125eaedb0c2361e28b1a8de565d + languageName: node + linkType: hard + "mammoth@npm:^1.8.0": version: 1.8.0 resolution: "mammoth@npm:1.8.0" @@ -36813,29 +42485,28 @@ __metadata: languageName: node linkType: hard -"markdown-it-anchor@npm:^8.6.7": - version: 8.6.7 - resolution: "markdown-it-anchor@npm:8.6.7" +"markdown-it-anchor@npm:^8.4.1": + version: 8.6.6 + resolution: "markdown-it-anchor@npm:8.6.6" peerDependencies: "@types/markdown-it": "*" markdown-it: "*" - checksum: 828236768ac7f61ed5591393c1b1bfc5dbf2b6d0c58a3deec606c61dddaa12658a34450cbef37ab50a04453e618ce1efd47d86e4e52595024334898fd306225b + checksum: d67044f132cd94728227e065b2a82063a05ac5fb82a991c190fe48ac5ab308ed85f49a28e859bcf203e882af814902e67dd69724f6761c61709834b075cc6f95 languageName: node linkType: hard -"markdown-it@npm:^14.1.0": - version: 14.1.0 - resolution: "markdown-it@npm:14.1.0" +"markdown-it@npm:^12.3.2": + version: 12.3.2 + resolution: "markdown-it@npm:12.3.2" dependencies: argparse: ^2.0.1 - entities: ^4.4.0 - linkify-it: ^5.0.0 - mdurl: ^2.0.0 - punycode.js: ^2.3.1 - uc.micro: ^2.1.0 + entities: ~2.1.0 + linkify-it: ^3.0.1 + mdurl: ^1.0.1 + uc.micro: ^1.0.5 bin: - markdown-it: bin/markdown-it.mjs - checksum: 07296b45ebd0b13a55611a24d1b1ad002c6729ec54f558f597846994b0b7b1de79d13cd99ff3e7b6e9e027f36b63125cdcf69174da294ecabdd4e6b9fff39e5d + markdown-it: bin/markdown-it.js + checksum: 890555711c1c00fa03b936ca2b213001a3b9b37dea140d8445ae4130ce16628392aad24b12e2a0a9935336ca5951f2957a38f4e5309a2e38eab44e25ff32a41e languageName: node linkType: hard @@ -36849,9 +42520,9 @@ __metadata: linkType: hard "markdown-table@npm:^3.0.0": - version: 3.0.4 - resolution: "markdown-table@npm:3.0.4" - checksum: bc24b177cbb3ef170cb38c9f191476aa63f7236ebc8980317c5e91b5bf98c8fb471cf46d8920478c5e770d7f4337326f6b5b3efbf0687c2044fd332d7a64dfcb + version: 3.0.3 + resolution: "markdown-table@npm:3.0.3" + checksum: 8fcd3d9018311120fbb97115987f8b1665a603f3134c93fbecc5d1463380c8036f789e2a62c19432058829e594fff8db9ff81c88f83690b2f8ed6c074f8d9e10 languageName: node linkType: hard @@ -36865,11 +42536,11 @@ __metadata: linkType: hard "markdown-to-jsx@npm:^7.1.8": - version: 7.5.0 - resolution: "markdown-to-jsx@npm:7.5.0" + version: 7.2.1 + resolution: "markdown-to-jsx@npm:7.2.1" peerDependencies: react: ">= 0.14.0" - checksum: c9c6f1bfad5f2d9b1d3476eb0313ae3dffd0a9f14011c74efdd7c664fd32ee1842ef48abb16a496046f90361af49aa80a827e9d9c0bc04824a1986fdeb4d1852 + checksum: 0c8c715229044401ea48c2fc26c2554464100074959dafacdd9e4a0e849f0a190b02f39edb373bbdd95e38b8f910074b83b63d08752b8ae6be6ddcfb40ea50a0 languageName: node linkType: hard @@ -37250,10 +42921,10 @@ __metadata: languageName: node linkType: hard -"mdurl@npm:^2.0.0": - version: 2.0.0 - resolution: "mdurl@npm:2.0.0" - checksum: 880bc289ef668df0bb34c5b2b5aaa7b6ea755052108cdaf4a5e5968ad01cf27e74927334acc9ebcc50a8628b65272ae6b1fd51fae1330c130e261c0466e1a3b2 +"mdurl@npm:^1.0.1": + version: 1.0.1 + resolution: "mdurl@npm:1.0.1" + checksum: 71731ecba943926bfbf9f9b51e28b5945f9411c4eda80894221b47cc105afa43ba2da820732b436f0798fd3edbbffcd1fc1415843c41a87fea08a41cc1e3d02b languageName: node linkType: hard @@ -37264,15 +42935,6 @@ __metadata: languageName: node linkType: hard -"media-query-parser@npm:^2.0.2": - version: 2.0.2 - resolution: "media-query-parser@npm:2.0.2" - dependencies: - "@babel/runtime": ^7.12.5 - checksum: 8ef956d9e63fe6f4041988beda69843b3a6bb48228ea2923a066f6e7c8f7c5dba75fae357318c48a97ed5beae840b8425cb7e727fc1bb77acc65f2005f8945ab - languageName: node - linkType: hard - "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -37290,9 +42952,9 @@ __metadata: linkType: hard "memoize-one@npm:^5.0.0": - version: 5.2.1 - resolution: "memoize-one@npm:5.2.1" - checksum: a3cba7b824ebcf24cdfcd234aa7f86f3ad6394b8d9be4c96ff756dafb8b51c7f71320785fbc2304f1af48a0467cbbd2a409efc9333025700ed523f254cb52e3d + version: 5.1.1 + resolution: "memoize-one@npm:5.1.1" + checksum: 51a8e96cd94614909e1656843ecb9307440fbfa64994be12978bb30bc190f8e66010cb7a35d3ee641a52302ce701dcea990b636ea2ef3c1cf94a50b4651f5446 languageName: node linkType: hard @@ -37303,7 +42965,7 @@ __metadata: languageName: node linkType: hard -"memoizee@npm:0.4.15": +"memoizee@npm:0.4.15, memoizee@npm:^0.4.15": version: 0.4.15 resolution: "memoizee@npm:0.4.15" dependencies: @@ -37319,22 +42981,6 @@ __metadata: languageName: node linkType: hard -"memoizee@npm:^0.4.15": - version: 0.4.17 - resolution: "memoizee@npm:0.4.17" - dependencies: - d: ^1.0.2 - es5-ext: ^0.10.64 - es6-weak-map: ^2.0.3 - event-emitter: ^0.3.5 - is-promise: ^2.2.2 - lru-queue: ^0.1.0 - next-tick: ^1.1.0 - timers-ext: ^0.1.7 - checksum: 9f2fa3f55d3b053ddfb7f2ce47ea3f51aa88d4425fa3aee0daf48bd41ecb8f1787b2150b14bcf745d8c4be8e2c07da614d857e11f79a6951420bbb0029b05a9c - languageName: node - linkType: hard - "memoizerific@npm:^1.11.3": version: 1.11.3 resolution: "memoizerific@npm:1.11.3" @@ -37390,13 +43036,6 @@ __metadata: languageName: node linkType: hard -"merge-descriptors@npm:1.0.3": - version: 1.0.3 - resolution: "merge-descriptors@npm:1.0.3" - checksum: 52117adbe0313d5defa771c9993fe081e2d2df9b840597e966aadafde04ae8d0e3da46bac7ca4efc37d4d2b839436582659cd49c6a43eacb3fe3050896a105d1 - languageName: node - linkType: hard - "merge-refs@npm:^1.3.0": version: 1.3.0 resolution: "merge-refs@npm:1.3.0" @@ -37409,6 +43048,24 @@ __metadata: languageName: node linkType: hard +"merge-source-map@npm:1.0.4": + version: 1.0.4 + resolution: "merge-source-map@npm:1.0.4" + dependencies: + source-map: ^0.5.6 + checksum: 86a4e60d83980393e61f069c7ae33e7899c4c012c3cd2cf50e01482e7a284bbe9c8cd08d37adbf241fc9eacfa4425241432e7461cf6559f7e9902587889660de + languageName: node + linkType: hard + +"merge-source-map@npm:^1.1.0": + version: 1.1.0 + resolution: "merge-source-map@npm:1.1.0" + dependencies: + source-map: ^0.6.1 + checksum: 945a83dcc59eff77dde709be1d3d6cb575c11cd7164a7ccdc1c6f0d463aad7c12750a510bdf84af2c05fac4615c4305d97ac90477975348bb901a905c8e92c4b + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -37423,15 +43080,15 @@ __metadata: languageName: node linkType: hard -"meros@npm:^1.2.1": - version: 1.3.0 - resolution: "meros@npm:1.3.0" +"meros@npm:^1.1.4": + version: 1.2.1 + resolution: "meros@npm:1.2.1" peerDependencies: "@types/node": ">=13" peerDependenciesMeta: "@types/node": optional: true - checksum: ea86c83fe9357d3eb2f5bad20909e12642c7bc8c10340d9bd0968b48f69ec453de14f7e5032d138ad04cb10d79b8c9fb3c9601bb515e8fbdf9bec4eed62994ad + checksum: 2201c3f7c58ad2a5b5f7d6b1c644d79bde513e25cb64b51a8c41381ec74bc02cd3423425e34f60c96bf3991f1ec51d65dc8b8e3354cbb060cc9f8226b4666a5a languageName: node linkType: hard @@ -37442,73 +43099,66 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.80.12": - version: 0.80.12 - resolution: "metro-babel-transformer@npm:0.80.12" +"metro-babel-transformer@npm:0.80.9": + version: 0.80.9 + resolution: "metro-babel-transformer@npm:0.80.9" dependencies: "@babel/core": ^7.20.0 - flow-enums-runtime: ^0.0.6 - hermes-parser: 0.23.1 + hermes-parser: 0.20.1 nullthrows: ^1.1.1 - checksum: 1ea8bce0c169f3d8bf46f56da126ca52f4c8ba5ca9ffeaca987c34d269b0a3e2a54d0544bd44bfa5d0322e37f0171a52d2a2160defcbcd91ec1fd96f62b0eece + checksum: 0fd9b7f3c6807163a4537939ead7d4a033b6233ba489bbc84c843dc1de7b6cddd185fee0a1c1791d05334cd8efebf434cbff486a42506843739088f3bb3c6358 languageName: node linkType: hard -"metro-cache-key@npm:0.80.12": - version: 0.80.12 - resolution: "metro-cache-key@npm:0.80.12" - dependencies: - flow-enums-runtime: ^0.0.6 - checksum: 7a06601180604361339d19eb833d61b79cc188a4e6ebe73188cc10fbf3a33e711d74c81d1d19a14b6581bd9dfeebe1b253684360682d033ab55909c9995b6a18 +"metro-cache-key@npm:0.80.9": + version: 0.80.9 + resolution: "metro-cache-key@npm:0.80.9" + checksum: 9c8547dcf6207c45ac726bcb35be43405515940eff8f9bacec354895f50e5cf2787fbb4860be7b1e10856228fd6eb0bbf8bf7065fabbaf90aa3cf9755d32ffe2 languageName: node linkType: hard -"metro-cache@npm:0.80.12": - version: 0.80.12 - resolution: "metro-cache@npm:0.80.12" +"metro-cache@npm:0.80.9": + version: 0.80.9 + resolution: "metro-cache@npm:0.80.9" dependencies: - exponential-backoff: ^3.1.1 - flow-enums-runtime: ^0.0.6 - metro-core: 0.80.12 - checksum: 724e33fdda6a3568572c36a3f2d3465ad1b5f3e8ded5ec116b98e0038826187ebdadd05f77e91ddc17fa71ff4dd91281793a940e7b619cac36044ed868abc01d + metro-core: 0.80.9 + rimraf: ^3.0.2 + checksum: 269d2f17cd82d5a4c7ea39227c3ae4e03982ca7f6dc4a84353bc99ee5b63a8fa42a485addbadea47c91ecbea836595033913ae3c7c309c0a1caae41d4e3799df languageName: node linkType: hard -"metro-config@npm:0.80.12, metro-config@npm:^0.80.3": - version: 0.80.12 - resolution: "metro-config@npm:0.80.12" +"metro-config@npm:0.80.9, metro-config@npm:^0.80.3": + version: 0.80.9 + resolution: "metro-config@npm:0.80.9" dependencies: connect: ^3.6.5 cosmiconfig: ^5.0.5 - flow-enums-runtime: ^0.0.6 jest-validate: ^29.6.3 - metro: 0.80.12 - metro-cache: 0.80.12 - metro-core: 0.80.12 - metro-runtime: 0.80.12 - checksum: 49496d2bc875fbb8c89639979753377888f5ce779742a4ef487d812e7c5f3f6c87dd6ae129727f614d2fe3210f7fde08041055d29772b8c86c018e2ef08e7785 + metro: 0.80.9 + metro-cache: 0.80.9 + metro-core: 0.80.9 + metro-runtime: 0.80.9 + checksum: 9822a2de858f4ad2d714cb2f70e51552a660ae059a490e4e7728b7b061367f6c6dce90bc4b49144e152e6dbece922a401183570b289dd6f8d595d5fcf3dfa781 languageName: node linkType: hard -"metro-core@npm:0.80.12, metro-core@npm:^0.80.3": - version: 0.80.12 - resolution: "metro-core@npm:0.80.12" +"metro-core@npm:0.80.9, metro-core@npm:^0.80.3": + version: 0.80.9 + resolution: "metro-core@npm:0.80.9" dependencies: - flow-enums-runtime: ^0.0.6 lodash.throttle: ^4.1.1 - metro-resolver: 0.80.12 - checksum: 319f3965fa76fc08987cbd0228024bdbb0eaad7406e384e48929674188f1066cbc7a233053615ebd84b3ce1bbae28f59c114885fd0a0c179a580319ed69f717e + metro-resolver: 0.80.9 + checksum: c39c4660e974bda81dae43233f7857ffb60a429bf1b5426b4ea9a3d28ce7951543d56ec5a299a3abf87149a2e8b6faeef955344e351312d70ca6d9b910db2b28 languageName: node linkType: hard -"metro-file-map@npm:0.80.12": - version: 0.80.12 - resolution: "metro-file-map@npm:0.80.12" +"metro-file-map@npm:0.80.9": + version: 0.80.9 + resolution: "metro-file-map@npm:0.80.9" dependencies: anymatch: ^3.0.3 debug: ^2.2.0 fb-watchman: ^2.0.0 - flow-enums-runtime: ^0.0.6 fsevents: ^2.3.2 graceful-fs: ^4.2.4 invariant: ^2.2.4 @@ -37520,111 +43170,103 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: 5e6eafcfafe55fd8a9a6e5613394a20ed2a0ad433a394dcb830f017b8fc9d82ddcd715391e36abe5e98c651c074b99a806d3b04d76f2cadb225f9f5b1c92daef + checksum: e233b25f34b01cb6e9ae6ab868f74d0a7013e52a8ad47619d6ebe2c00b3df228df87fcedb0b7e3d9a0de54ee93a725df1356ee705eb5cac80076703a2e4799e4 languageName: node linkType: hard -"metro-minify-terser@npm:0.80.12": - version: 0.80.12 - resolution: "metro-minify-terser@npm:0.80.12" +"metro-minify-terser@npm:0.80.9": + version: 0.80.9 + resolution: "metro-minify-terser@npm:0.80.9" dependencies: - flow-enums-runtime: ^0.0.6 terser: ^5.15.0 - checksum: ff527b3f04c5814db139e55ceb7689aaaf0af5c7fbb0eb5d4a6f22044932dfb10bd385d388fa7b352acd03a2d078edaf43a6b5cd11cbc87a7c5502a34fc12735 + checksum: 8aaea147f45332920eb5f70514ee25f65a9e091351ced0ca72ffa6c82c3478d68f962472a4e92d96cb64712bb81f69a072495e9fb7e78173b502d7c32a2a44fc languageName: node linkType: hard -"metro-resolver@npm:0.80.12": - version: 0.80.12 - resolution: "metro-resolver@npm:0.80.12" - dependencies: - flow-enums-runtime: ^0.0.6 - checksum: a520030a65afab2f3282604ef6dec802051899a356910606b8ffbc5b82a722008d9d416c8ba3d9ef9527912206586b713733b776803a6b76adac72bcb31870cd +"metro-resolver@npm:0.80.9": + version: 0.80.9 + resolution: "metro-resolver@npm:0.80.9" + checksum: a24f6b8ecc5edf38886080e714eddb4c1cd93345e8052997a194210b42b3c453353a95652e33770a294805cb5fae67620bfcb8432ba866b60479bebb34a6958a languageName: node linkType: hard -"metro-runtime@npm:0.80.12, metro-runtime@npm:^0.80.3": - version: 0.80.12 - resolution: "metro-runtime@npm:0.80.12" +"metro-runtime@npm:0.80.9, metro-runtime@npm:^0.80.3": + version: 0.80.9 + resolution: "metro-runtime@npm:0.80.9" dependencies: - "@babel/runtime": ^7.25.0 - flow-enums-runtime: ^0.0.6 - checksum: 11a6d36c7dcf9d221f7de6989556f45d4d64cd1cdd225ec96273b584138b4aa77b7afdc9e9a9488d1dc9a3d90f8e94bb68ab149079cc6ebdb8f8f8b03462cb4f + "@babel/runtime": ^7.0.0 + checksum: 2d087ebc82de0796741cd77bc4af0c20117eb0dc4fc91dfad3be44eb3389bbf6caef7b1605b7907e59ef0c5532617e0b2fb6c5b64df24d03c14748173427b1d4 languageName: node linkType: hard -"metro-source-map@npm:0.80.12, metro-source-map@npm:^0.80.3": - version: 0.80.12 - resolution: "metro-source-map@npm:0.80.12" +"metro-source-map@npm:0.80.9, metro-source-map@npm:^0.80.3": + version: 0.80.9 + resolution: "metro-source-map@npm:0.80.9" dependencies: "@babel/traverse": ^7.20.0 "@babel/types": ^7.20.0 - flow-enums-runtime: ^0.0.6 invariant: ^2.2.4 - metro-symbolicate: 0.80.12 + metro-symbolicate: 0.80.9 nullthrows: ^1.1.1 - ob1: 0.80.12 + ob1: 0.80.9 source-map: ^0.5.6 vlq: ^1.0.0 - checksum: 39575bff8666abd0944ec71e01a0c0eacbeab48277528608e894ffa6691c4267c389ee51ad86d5cd8e96f13782b66e1f693a3c60786bb201268678232dce6130 + checksum: d6423cbe4c861eead953e24bb97d774772afa6f10c75c473d4d35965300a38259ad769b54a62b6d4a73ecaaef8ad2806455bf1fc2e89d8d7839915b30a6344d6 languageName: node linkType: hard -"metro-symbolicate@npm:0.80.12": - version: 0.80.12 - resolution: "metro-symbolicate@npm:0.80.12" +"metro-symbolicate@npm:0.80.9": + version: 0.80.9 + resolution: "metro-symbolicate@npm:0.80.9" dependencies: - flow-enums-runtime: ^0.0.6 invariant: ^2.2.4 - metro-source-map: 0.80.12 + metro-source-map: 0.80.9 nullthrows: ^1.1.1 source-map: ^0.5.6 through2: ^2.0.1 vlq: ^1.0.0 bin: metro-symbolicate: src/index.js - checksum: b775e4613deec421f6287918d0055c50bb2a38fe3f72581eb70b9441e4497c9c7413c2929c579b24fb76893737b6d5af83a5f6cd8c032e2a83957091f82ec5de + checksum: 070c4a48632e6137e8715c234f31e9c36b8e6c0a7b8e560168c042af00c7764cd5ba0a431ea7071f193d42d73cace0a500fd4b181a296f15e49866b221288d83 languageName: node linkType: hard -"metro-transform-plugins@npm:0.80.12": - version: 0.80.12 - resolution: "metro-transform-plugins@npm:0.80.12" +"metro-transform-plugins@npm:0.80.9": + version: 0.80.9 + resolution: "metro-transform-plugins@npm:0.80.9" dependencies: "@babel/core": ^7.20.0 "@babel/generator": ^7.20.0 "@babel/template": ^7.0.0 "@babel/traverse": ^7.20.0 - flow-enums-runtime: ^0.0.6 nullthrows: ^1.1.1 - checksum: 85c99c367d6c0b9721af744fc980372329c6d37711177660e2d5e2dbe5e92e2cd853604eb8a513ad824eafbed84663472fa304cbbe2036957ee8688b72c2324c + checksum: 3179138b38385bfd20553237a8e3d5243b26c2b3cab3742217b1dd81a69a5dfffdd71d5017d1a26b6f8282e73680879c47c143ed8fa3f71d6dabddfd3b154f8b languageName: node linkType: hard -"metro-transform-worker@npm:0.80.12": - version: 0.80.12 - resolution: "metro-transform-worker@npm:0.80.12" +"metro-transform-worker@npm:0.80.9": + version: 0.80.9 + resolution: "metro-transform-worker@npm:0.80.9" dependencies: "@babel/core": ^7.20.0 "@babel/generator": ^7.20.0 "@babel/parser": ^7.20.0 "@babel/types": ^7.20.0 - flow-enums-runtime: ^0.0.6 - metro: 0.80.12 - metro-babel-transformer: 0.80.12 - metro-cache: 0.80.12 - metro-cache-key: 0.80.12 - metro-minify-terser: 0.80.12 - metro-source-map: 0.80.12 - metro-transform-plugins: 0.80.12 + metro: 0.80.9 + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-minify-terser: 0.80.9 + metro-source-map: 0.80.9 + metro-transform-plugins: 0.80.9 nullthrows: ^1.1.1 - checksum: 90684b1f1163bfc84b11bfc01082a38de2a5dd9f7bcabc524bc84f1faff32222954f686a60bc0f464d3e46e86c4c01435111e2ed0e9767a5efbfaf205f55245e + checksum: 77b108e5a150b88007631c0c7312fdafdf8525214df3f9a185f8023caef3a8f8d9c695ab75f4686ed4abfce6a0c5ea80ab117fafdc4a21de24413ef491f74acd languageName: node linkType: hard -"metro@npm:0.80.12, metro@npm:^0.80.3": - version: 0.80.12 - resolution: "metro@npm:0.80.12" +"metro@npm:0.80.9, metro@npm:^0.80.3": + version: 0.80.9 + resolution: "metro@npm:0.80.9" dependencies: "@babel/code-frame": ^7.0.0 "@babel/core": ^7.20.0 @@ -37640,37 +43282,38 @@ __metadata: debug: ^2.2.0 denodeify: ^1.2.1 error-stack-parser: ^2.0.6 - flow-enums-runtime: ^0.0.6 graceful-fs: ^4.2.4 - hermes-parser: 0.23.1 + hermes-parser: 0.20.1 image-size: ^1.0.2 invariant: ^2.2.4 jest-worker: ^29.6.3 jsc-safe-url: ^0.2.2 lodash.throttle: ^4.1.1 - metro-babel-transformer: 0.80.12 - metro-cache: 0.80.12 - metro-cache-key: 0.80.12 - metro-config: 0.80.12 - metro-core: 0.80.12 - metro-file-map: 0.80.12 - metro-resolver: 0.80.12 - metro-runtime: 0.80.12 - metro-source-map: 0.80.12 - metro-symbolicate: 0.80.12 - metro-transform-plugins: 0.80.12 - metro-transform-worker: 0.80.12 + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-config: 0.80.9 + metro-core: 0.80.9 + metro-file-map: 0.80.9 + metro-resolver: 0.80.9 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 + metro-symbolicate: 0.80.9 + metro-transform-plugins: 0.80.9 + metro-transform-worker: 0.80.9 mime-types: ^2.1.27 + node-fetch: ^2.2.0 nullthrows: ^1.1.1 + rimraf: ^3.0.2 serialize-error: ^2.1.0 source-map: ^0.5.6 strip-ansi: ^6.0.0 throat: ^5.0.0 - ws: ^7.5.10 + ws: ^7.5.1 yargs: ^17.6.2 bin: metro: src/cli.js - checksum: 8016f7448e6e0947bd38633c01c3daad47b5a29d4a7294ebe922fa3c505430f78861d85965ecfc6f41d9b209e2663cac0f23c99a80a3f941a19de564203fcdb8 + checksum: 085191ea2a1d599ff99a4e97d9387f22d41bc0225bc579e3a708b4a735339163706ba7807711629550d6a54039009615528f685f6669034b6e701fe73657aa7c languageName: node linkType: hard @@ -38070,13 +43713,13 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": - version: 4.0.8 - resolution: "micromatch@npm:4.0.8" +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" dependencies: - braces: ^3.0.3 + braces: ^3.0.2 picomatch: ^2.3.1 - checksum: 79920eb634e6f400b464a954fcfa589c4e7c7143209488e44baf627f9affc8b1e306f41f4f0deedde97e69cb725920879462d3e750ab3bd3c1aed675bb3a8966 + checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc languageName: node linkType: hard @@ -38092,20 +43735,13 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0": +"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f languageName: node linkType: hard -"mime-db@npm:>= 1.43.0 < 2": - version: 1.53.0 - resolution: "mime-db@npm:1.53.0" - checksum: 3fd9380bdc0b085d0b56b580e4f89ca4fc3b823722310d795c248f0806b9a80afd5d8f4347f015ad943b9ecfa7cc0b71dffa0db96fa776d01a13474821a2c7fb - languageName: node - linkType: hard - "mime-types@npm:2.1.35, mime-types@npm:^2.0.8, mime-types@npm:^2.1.12, mime-types@npm:^2.1.25, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" @@ -38124,7 +43760,7 @@ __metadata: languageName: node linkType: hard -"mime@npm:2.6.0, mime@npm:^2.0.3, mime@npm:^2.4.1, mime@npm:^2.4.4, mime@npm:^2.4.6": +"mime@npm:2.6.0, mime@npm:^2.4.1": version: 2.6.0 resolution: "mime@npm:2.6.0" bin: @@ -38133,6 +43769,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:^2.0.3, mime@npm:^2.4.4, mime@npm:^2.4.6": + version: 2.5.2 + resolution: "mime@npm:2.5.2" + bin: + mime: cli.js + checksum: dd3c93d433d41a09f6a1cfa969b653b769899f3bd573e7bfcea33bdc8b0cc4eba57daa2f95937369c2bd2b6d39d62389b11a4309fe40d1d3a1b736afdedad0ff + languageName: node + linkType: hard + "mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" @@ -38216,43 +43861,34 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" +"minimatch@npm:2 || 3, minimatch@npm:^3.0.0, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a languageName: node linkType: hard -"minimatch@npm:3.0.5": - version: 3.0.5 - resolution: "minimatch@npm:3.0.5" +"minimatch@npm:3.0.4, minimatch@npm:~3.0.4": + version: 3.0.4 + resolution: "minimatch@npm:3.0.4" dependencies: brace-expansion: ^1.1.7 - checksum: a3b84b426eafca947741b864502cee02860c4e7b145de11ad98775cfcf3066fef422583bc0ffce0952ddf4750c1ccf4220b1556430d4ce10139f66247d87d69e + checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 languageName: node linkType: hard -"minimatch@npm:4.2.3": - version: 4.2.3 - resolution: "minimatch@npm:4.2.3" +"minimatch@npm:4.2.1": + version: 4.2.1 + resolution: "minimatch@npm:4.2.1" dependencies: brace-expansion: ^1.1.7 - checksum: 3392388e3ef7de7ae9a3a48d48a27a323934452f4af81b925dfbe85ce2dc07da855e3dbcc69229888be4e5118f6c0b79847d30f3e7c0e0017b25e423c11c0409 - languageName: node - linkType: hard - -"minimatch@npm:9.0.1": - version: 9.0.1 - resolution: "minimatch@npm:9.0.1" - dependencies: - brace-expansion: ^2.0.1 - checksum: 97f5f5284bb57dc65b9415dec7f17a0f6531a33572193991c60ff18450dcfad5c2dad24ffeaf60b5261dccd63aae58cc3306e2209d57e7f88c51295a532d8ec3 + checksum: 2b1514e3d0f29a549912f0db7ae7b82c5cab4a8f2dd0369f1c6451a325b3f12b2cf473c95873b6157bb8df183d6cf6db82ff03614b6adaaf1d7e055beccdfd01 languageName: node linkType: hard -"minimatch@npm:9.0.3": +"minimatch@npm:9.0.3, minimatch@npm:^9.0.1": version: 9.0.3 resolution: "minimatch@npm:9.0.3" dependencies: @@ -38261,21 +43897,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.0, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - "minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" + version: 5.1.0 + resolution: "minimatch@npm:5.1.0" dependencies: brace-expansion: ^2.0.1 - checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 + checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90 languageName: node linkType: hard @@ -38288,7 +43915,16 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": +"minimatch@npm:^9.0.4": + version: 9.0.4 + resolution: "minimatch@npm:9.0.4" + dependencies: + brace-expansion: ^2.0.1 + checksum: cf717f597ec3eed7dabc33153482a2e8d49f4fd3c26e58fd9c71a94c5029a0838728841b93f46bf1263b65a8010e2ee800d0dc9b004ab8ba8b6d1ec07cc115b5 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -38297,16 +43933,14 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:~3.0.4": - version: 3.0.8 - resolution: "minimatch@npm:3.0.8" - dependencies: - brace-expansion: ^1.1.7 - checksum: 850cca179cad715133132693e6963b0db64ab0988c4d211415b087fc23a3e46321e2c5376a01bf5623d8782aba8bdf43c571e2e902e51fdce7175c7215c29f8b +"minimist@npm:^1.1.3, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": + version: 1.2.6 + resolution: "minimist@npm:1.2.6" + checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb languageName: node linkType: hard -"minimist@npm:^1.1.3, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": +"minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -38332,8 +43966,8 @@ __metadata: linkType: hard "minipass-fetch@npm:^1.3.2": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" + version: 1.3.3 + resolution: "minipass-fetch@npm:1.3.3" dependencies: encoding: ^0.1.12 minipass: ^3.1.0 @@ -38342,7 +43976,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 + checksum: bd3d825b6b08b9c208b60f5022b12e3be78d01c2fd81bcbe8476e59c5ba2c6133d34c65961c88e1a17042242d99aa6a26a30a3139ccd4c07e536c6952ae72cb9 languageName: node linkType: hard @@ -38361,21 +43995,6 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.5 - resolution: "minipass-fetch@npm:3.0.5" - dependencies: - encoding: ^0.1.13 - minipass: ^7.0.3 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: 8047d273236157aab27ab7cd8eab7ea79e6ecd63e8f80c3366ec076cb9a0fed550a6935bab51764369027c414647fd8256c2a20c5445fb250c483de43350de83 - languageName: node - linkType: hard - "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" @@ -38403,12 +44022,21 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" +"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": + version: 3.1.3 + resolution: "minipass@npm:3.1.3" dependencies: yallist: ^4.0.0 - checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + checksum: 74b623c1f996caafa66772301b66a1b634b20270f0d1a731ef86195d5a1a5f9984a773a1e88a6cecfd264d6c471c4c0fc8574cd96488f01c8f74c0b600021e55 + languageName: node + linkType: hard + +"minipass@npm:^3.1.6": + version: 3.3.5 + resolution: "minipass@npm:3.3.5" + dependencies: + yallist: ^4.0.0 + checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e languageName: node linkType: hard @@ -38419,7 +44047,14 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.0.3 + resolution: "minipass@npm:7.0.3" + checksum: 6f1614f5b5b55568a46bca5fec0e7c46dac027691db27d0e1923a8192866903144cd962ac772c0e9f89b608ea818b702709c042bce98e190d258847d85461531 + languageName: node + linkType: hard + +"minipass@npm:^7.0.3, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 @@ -38476,7 +44111,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.6": +"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: @@ -38496,27 +44131,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^2.0.0": - version: 2.1.6 - resolution: "mkdirp@npm:2.1.6" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 8a1d09ffac585e55f41c54f445051f5bc33a7de99b952bb04c576cafdf1a67bb4bae8cb93736f7da6838771fbf75bc630430a3a59e1252047d2278690bd150ee - languageName: node - linkType: hard - -"mlly@npm:^1.4.2, mlly@npm:^1.7.2": - version: 1.7.2 - resolution: "mlly@npm:1.7.2" - dependencies: - acorn: ^8.12.1 - pathe: ^1.1.2 - pkg-types: ^1.2.0 - ufo: ^1.5.4 - checksum: 66a92b0ac4f76cac22d2d6688338fece01f2ac4afd7816cd4224525c1f9032c452075730c54c3ef7558485455d704b7141060e517785c93b276b2faa3bb04199 - languageName: node - linkType: hard - "mobx-react-lite@npm:^3.4.0": version: 3.4.3 resolution: "mobx-react-lite@npm:3.4.3" @@ -38556,10 +44170,39 @@ __metadata: languageName: node linkType: hard -"modern-ahocorasick@npm:^1.0.0": - version: 1.0.1 - resolution: "modern-ahocorasick@npm:1.0.1" - checksum: ec83479f406511f37a966d66ce1c2b1701bb4a2cc2aabbbc257001178c9fbc48ce748c88eb10dfe72ba8b7f991a0bc7f1fa14683f444685edd1a9eeb32ecbc1e +"mocha@npm:^8.2.0": + version: 8.3.2 + resolution: "mocha@npm:8.3.2" + dependencies: + "@ungap/promise-all-settled": 1.1.2 + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.1 + debug: 4.3.1 + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.1.6 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 4.0.0 + log-symbols: 4.0.0 + minimatch: 3.0.4 + ms: 2.1.3 + nanoid: 3.1.20 + serialize-javascript: 5.0.1 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + which: 2.0.2 + wide-align: 1.1.3 + workerpool: 6.1.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + bin: + _mocha: bin/_mocha + mocha: bin/mocha + checksum: 4c071723f611cdc1a84d6db4ad2f73a9862af80939c050923d6f27270943117e5ff9dee137205f5ec591c9ccd0db9543b1719d5acf378c740d22359aeb165360 languageName: node linkType: hard @@ -38571,15 +44214,22 @@ __metadata: linkType: hard "moment-timezone@npm:^0.5.43": - version: 0.5.46 - resolution: "moment-timezone@npm:0.5.46" + version: 0.5.45 + resolution: "moment-timezone@npm:0.5.45" dependencies: moment: ^2.29.4 - checksum: 3974b467a98e5eb5dece66187d251aa0f97b087413c9a6a607b38ae6fa67032e12a107649dd857cfbcc31c194f004eb13ecc9fcd582b6a168a9a19355ec5a2e3 + checksum: a22e9f983fbe1a01757ce30685bce92e3f6efa692eb682afd47b82da3ff960b3c8c2c3883ec6715c124bc985a342b57cba1f6ba25a1c8b4c7ad766db3cd5e1d0 languageName: node linkType: hard -"moment@npm:^2.20.0, moment@npm:^2.22.2, moment@npm:^2.29.4": +"moment@npm:^2.18.1, moment@npm:^2.20.0, moment@npm:^2.22.2": + version: 2.29.4 + resolution: "moment@npm:2.29.4" + checksum: 0ec3f9c2bcba38dc2451b1daed5daded747f17610b92427bebe1d08d48d8b7bdd8d9197500b072d14e326dd0ccf3e326b9e3d07c5895d3d49e39b6803b76e80e + languageName: node + linkType: hard + +"moment@npm:^2.29.4": version: 2.30.1 resolution: "moment@npm:2.30.1" checksum: 859236bab1e88c3e5802afcf797fc801acdbd0ee509d34ea3df6eea21eb6bcc2abd4ae4e4e64aa7c986aa6cba563c6e62806218e6412a765010712e5fa121ba6 @@ -38587,13 +44237,13 @@ __metadata: linkType: hard "moo@npm:^0.5.0, moo@npm:^0.5.1": - version: 0.5.2 - resolution: "moo@npm:0.5.2" - checksum: 5a41ddf1059fd0feb674d917c4774e41c877f1ca980253be4d3aae1a37f4bc513f88815041243f36f5cf67a62fb39324f3f997cf7fb17b6cb00767c165e7c499 + version: 0.5.1 + resolution: "moo@npm:0.5.1" + checksum: 2d8c013f1f9aad8e5c7a9d4a03dbb4eecd91b9fe5e9446fbc7561fd38d4d161c742434acff385722542fe7b360fce9c586da62442379e62e4158ad49c7e1a6b7 languageName: node linkType: hard -"mri@npm:^1.1.0": +"mri@npm:^1.1.0, mri@npm:^1.2.0": version: 1.2.0 resolution: "mri@npm:1.2.0" checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 @@ -38601,9 +44251,9 @@ __metadata: linkType: hard "mrmime@npm:^1.0.0": - version: 1.0.1 - resolution: "mrmime@npm:1.0.1" - checksum: cc979da44bbbffebaa8eaf7a45117e851f2d4cb46a3ada6ceb78130466a04c15a0de9a9ce1c8b8ba6f6e1b8618866b1352992bf1757d241c0ddca558b9f28a77 + version: 1.0.0 + resolution: "mrmime@npm:1.0.0" + checksum: 2c72a40942af7c53bc97d1e9e9c5cb0e6541d18f736811c3a1b46fa2a2b2362480d687daa8ae8372523acaacd82426a4f7ce34b0bf1825ea83b3983e8cb91afd languageName: node linkType: hard @@ -38621,6 +44271,13 @@ __metadata: languageName: node linkType: hard +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + "ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -38643,17 +44300,17 @@ __metadata: linkType: hard "msgpackr-extract@npm:^3.0.2": - version: 3.0.3 - resolution: "msgpackr-extract@npm:3.0.3" - dependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64": 3.0.3 - "@msgpackr-extract/msgpackr-extract-darwin-x64": 3.0.3 - "@msgpackr-extract/msgpackr-extract-linux-arm": 3.0.3 - "@msgpackr-extract/msgpackr-extract-linux-arm64": 3.0.3 - "@msgpackr-extract/msgpackr-extract-linux-x64": 3.0.3 - "@msgpackr-extract/msgpackr-extract-win32-x64": 3.0.3 + version: 3.0.2 + resolution: "msgpackr-extract@npm:3.0.2" + dependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64": 3.0.2 + "@msgpackr-extract/msgpackr-extract-darwin-x64": 3.0.2 + "@msgpackr-extract/msgpackr-extract-linux-arm": 3.0.2 + "@msgpackr-extract/msgpackr-extract-linux-arm64": 3.0.2 + "@msgpackr-extract/msgpackr-extract-linux-x64": 3.0.2 + "@msgpackr-extract/msgpackr-extract-win32-x64": 3.0.2 node-gyp: latest - node-gyp-build-optional-packages: 5.2.2 + node-gyp-build-optional-packages: 5.0.7 dependenciesMeta: "@msgpackr-extract/msgpackr-extract-darwin-arm64": optional: true @@ -38669,19 +44326,19 @@ __metadata: optional: true bin: download-msgpackr-prebuilds: bin/download-prebuilds.js - checksum: 3b5ae152821feff843380f0b091afbebd80bd224e644f4410abd33d05da3159eb8b0d45c7dcf7d5226ce1d5c71cd68052f066788f46ea7a3cd8791a1c740a079 + checksum: 5adb809b965bac41c310e60373d54c955fe78e4d134ab036d0f9ee5b322cec0a739878d395e17c1ac82d840705896b2dafae6a8cc04ad34c14d2de4b06b58330 languageName: node linkType: hard "msgpackr@npm:^1.5.2": - version: 1.11.0 - resolution: "msgpackr@npm:1.11.0" + version: 1.10.1 + resolution: "msgpackr@npm:1.10.1" dependencies: msgpackr-extract: ^3.0.2 dependenciesMeta: msgpackr-extract: optional: true - checksum: 20a1941e1a281c10a1d43d04349ae7a79bef1cbd0644f1e5acef7f98f6a6e6cd83388ee82689799f9e65623591b11f849ef2f86c8eac83492449bee5a2b055b2 + checksum: e422d18b01051598b23701eebeb4b9e2c686b9c7826b20f564724837ba2b5cd4af74c91a549eaeaf8186645cc95e8196274a4a19442aa3286ac611b98069c194 languageName: node linkType: hard @@ -38757,6 +44414,17 @@ __metadata: languageName: node linkType: hard +"mv@npm:~2": + version: 2.1.1 + resolution: "mv@npm:2.1.1" + dependencies: + mkdirp: ~0.5.1 + ncp: ~2.0.0 + rimraf: ~2.4.0 + checksum: 59d4b5ebff6c265b452d6630ae8873d573c82e36fdc1ed9c34c7901a0bf2d3d357022f49db8e9bded127b743f709c7ef7befec249a2b3967578d649a8029aa06 + languageName: node + linkType: hard + "mz@npm:^2.4.0, mz@npm:^2.6.0, mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -38768,35 +44436,53 @@ __metadata: languageName: node linkType: hard -"nan@npm:^2.16.0, nan@npm:^2.17.0, nan@npm:^2.19.0, nan@npm:^2.20.0": - version: 2.22.0 - resolution: "nan@npm:2.22.0" +"nan@npm:^2.14.1, nan@npm:^2.15.0": + version: 2.15.0 + resolution: "nan@npm:2.15.0" + dependencies: + node-gyp: latest + checksum: 33e1bb4dfca447fe37d4bb5889be55de154828632c8d38646db67293a21afd61ed9909cdf1b886214a64707d935926c4e60e2b09de9edfc2ad58de31d6ce8f39 + languageName: node + linkType: hard + +"nan@npm:^2.16.0, nan@npm:^2.17.0": + version: 2.18.0 + resolution: "nan@npm:2.18.0" dependencies: node-gyp: latest - checksum: 222e3a090e326c72f6782d948f44ee9b81cfb2161d5fe53216f04426a273fd094deee9dcc6813096dd2397689a2b10c1a92d3885d2e73fd2488a51547beb2929 + checksum: 4fe42f58456504eab3105c04a5cffb72066b5f22bd45decf33523cb17e7d6abc33cca2a19829407b9000539c5cb25f410312d4dc5b30220167a3594896ea6a0a languageName: node linkType: hard "nano-css@npm:^5.2.1": - version: 5.6.2 - resolution: "nano-css@npm:5.6.2" + version: 5.3.1 + resolution: "nano-css@npm:5.3.1" dependencies: - "@jridgewell/sourcemap-codec": ^1.4.15 css-tree: ^1.1.2 - csstype: ^3.1.2 + csstype: ^3.0.6 fastest-stable-stringify: ^2.0.2 - inline-style-prefixer: ^7.0.1 - rtl-css-js: ^1.16.1 + inline-style-prefixer: ^6.0.0 + rtl-css-js: ^1.14.0 + sourcemap-codec: ^1.4.8 stacktrace-js: ^2.0.2 - stylis: ^4.3.0 + stylis: ^4.0.6 peerDependencies: react: "*" react-dom: "*" - checksum: 85d5e730798387bee3090e9943801489ec4269bd376a848b75515cf0f44dc7ce53d4a9fec575081a7dff53a8a5d4b00eebdc1bbf217d75fae7195819f917aba1 + checksum: 45517871e8c15a00769bfc9eb5e466d9c193b0a7423050eb77eb21003a1ccfd13863f01bf68490be830de019f4a0ae945d5b91eb23c5898d341ac8968ba3f18b languageName: node linkType: hard -"nanoid@npm:^3.1.3, nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": +"nanoid@npm:3.1.20": + version: 3.1.20 + resolution: "nanoid@npm:3.1.20" + bin: + nanoid: bin/nanoid.cjs + checksum: f6246023d5d8313c2c16be05c18cdb189a6de50ab6418b513b34086eda4aabd12866b2cbe435548c760dc43cf11830b26b14b113afde47305398e3345795e433 + languageName: node + linkType: hard + +"nanoid@npm:^3.1.3, nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" bin: @@ -38805,6 +44491,24 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.1": + version: 3.3.3 + resolution: "nanoid@npm:3.3.3" + bin: + nanoid: bin/nanoid.cjs + checksum: ada019402a07464a694553c61d2dca8a4353645a7d92f2830f0d487fedff403678a0bee5323a46522752b2eab95a0bc3da98b6cccaa7c0c55cd9975130e6d6f0 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.6": + version: 3.3.6 + resolution: "nanoid@npm:3.3.6" + bin: + nanoid: bin/nanoid.cjs + checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -38819,6 +44523,15 @@ __metadata: languageName: node linkType: hard +"ncp@npm:~2.0.0": + version: 2.0.0 + resolution: "ncp@npm:2.0.0" + bin: + ncp: ./bin/ncp + checksum: ea9b19221da1d1c5529bdb9f8e85c9d191d156bcaae408cce5e415b7fbfd8744c288e792bd7faf1fe3b70fd44c74e22f0d43c39b209bc7ac1fb8016f70793a16 + languageName: node + linkType: hard + "nearley@npm:^2.20.1": version: 2.20.1 resolution: "nearley@npm:2.20.1" @@ -38837,31 +44550,25 @@ __metadata: linkType: hard "needle@npm:^3.1.0": - version: 3.3.1 - resolution: "needle@npm:3.3.1" + version: 3.2.0 + resolution: "needle@npm:3.2.0" dependencies: + debug: ^3.2.6 iconv-lite: ^0.6.3 sax: ^1.2.4 bin: needle: bin/needle - checksum: ed4864d7ee85f1037ac803154868bf7151fa59399c1e55e5d93ca26a9d16e1c8ccbe9552d846ce7e2519b4bce1de3e81a501f0dc33244e02902e27cf5a9bc11d + checksum: d6f3e8668bbaf943d28ced0ad843eff793b56025e80152e511fd02313b8974e4dd9674bcbe3d8f9aa31882adb190dafe29ea5fce03a92b4724adf4850070bcfc languageName: node linkType: hard -"negotiator@npm:0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 languageName: node linkType: hard -"negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": - version: 0.6.4 - resolution: "negotiator@npm:0.6.4" - checksum: 7ded10aa02a0707d1d12a9973fdb5954f98547ca7beb60e31cb3a403cc6e8f11138db7a3b0128425cf836fc85d145ec4ce983b2bdf83dca436af879c2d683510 - languageName: node - linkType: hard - "neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -38889,7 +44596,7 @@ __metadata: languageName: node linkType: hard -"netmask@npm:^2.0.2": +"netmask@npm:^2.0.1, netmask@npm:^2.0.2": version: 2.0.2 resolution: "netmask@npm:2.0.2" checksum: c65cb8d3f7ea5669edddb3217e4c96910a60d0d9a4b52d9847ff6b28b2d0277cd8464eee0ef85133cdee32605c57940cacdd04a9a019079b091b6bba4cb0ec22 @@ -38935,7 +44642,7 @@ __metadata: languageName: node linkType: hard -"next-tick@npm:^1.1.0": +"next-tick@npm:1, next-tick@npm:^1.1.0": version: 1.1.0 resolution: "next-tick@npm:1.1.0" checksum: 83b5cf36027a53ee6d8b7f9c0782f2ba87f4858d977342bfc3c20c21629290a2111f8374d13a81221179603ffc4364f38374b5655d17b6a8f8a8c77bdea4fe8b @@ -39048,7 +44755,14 @@ __metadata: languageName: node linkType: hard -"node-abort-controller@npm:^3.0.1, node-abort-controller@npm:^3.1.1": +"node-abort-controller@npm:^3.0.1": + version: 3.0.1 + resolution: "node-abort-controller@npm:3.0.1" + checksum: 2b3d75c65249fea99e8ba22da3a8bc553f034f44dd12f5f4b38b520f718b01c88718c978f0c24c2a460fc01de9a80b567028f547b94440cb47adeacfeb82c2ee + languageName: node + linkType: hard + +"node-abort-controller@npm:^3.1.1": version: 3.1.1 resolution: "node-abort-controller@npm:3.1.1" checksum: 2c340916af9710328b11c0828223fc65ba320e0d082214a211311bf64c2891028e42ef276b9799188c4ada9e6e1c54cf7a0b7c05dd9d59fcdc8cd633304c8047 @@ -39082,15 +44796,6 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^7.0.0": - version: 7.1.1 - resolution: "node-addon-api@npm:7.1.1" - dependencies: - node-gyp: latest - checksum: 46051999e3289f205799dfaf6bcb017055d7569090f0004811110312e2db94cb4f8654602c7eb77a60a1a05142cc2b96e1b5c56ca4622c41a5c6370787faaf30 - languageName: node - linkType: hard - "node-cache@npm:^5.1.2": version: 5.1.2 resolution: "node-cache@npm:5.1.2" @@ -39125,10 +44830,10 @@ __metadata: languageName: node linkType: hard -"node-fetch-native@npm:^1.6.3": - version: 1.6.4 - resolution: "node-fetch-native@npm:1.6.4" - checksum: 7b159f610e037e8813750096a6616ec6771e9abf868aa6e75e5b790bfc2ba2d92cf2abcce33c18fd01f2e5e5cc72de09c78bd4381e7f8c0887f7de21bd96f045 +"node-fetch-native@npm:^1.0.2": + version: 1.2.0 + resolution: "node-fetch-native@npm:1.2.0" + checksum: f18d775523fc25b9fbec05a1da99cbf40214045bcaca82c8fd949b99148890c3cead4ab1764e26a92af600d14884d846481bcebf82d56815210624f836051a10 languageName: node linkType: hard @@ -39153,16 +44858,14 @@ __metadata: languageName: node linkType: hard -"node-gyp-build-optional-packages@npm:5.2.2": - version: 5.2.2 - resolution: "node-gyp-build-optional-packages@npm:5.2.2" - dependencies: - detect-libc: ^2.0.1 +"node-gyp-build-optional-packages@npm:5.0.7": + version: 5.0.7 + resolution: "node-gyp-build-optional-packages@npm:5.0.7" bin: node-gyp-build-optional-packages: bin.js node-gyp-build-optional-packages-optional: optional.js node-gyp-build-optional-packages-test: build-test.js - checksum: 3c10d7380901ab5febcd153d2632917fe7507edb15a3405e9ef19801834a4c2162459a67b9944887f737f8718baeb4aaf0002c829a8214011930f2de80e4b42f + checksum: bcb4537af15bcb3811914ea0db8f69284ca10db1cc7543a167a4c41ae4b9b5044b133f789fdadad0b7adc6931f6ae7def3c75b0bc7b05836881aae52400163e6 languageName: node linkType: hard @@ -39177,14 +44880,25 @@ __metadata: languageName: node linkType: hard -"node-gyp-build@npm:^4.2.3, node-gyp-build@npm:^4.3.0, node-gyp-build@npm:^4.5.0": - version: 4.8.2 - resolution: "node-gyp-build@npm:4.8.2" +"node-gyp-build@npm:^4.2.3, node-gyp-build@npm:^4.3.0": + version: 4.4.0 + resolution: "node-gyp-build@npm:4.4.0" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 972a059f960253d254e0b23ce10f54c8982236fc0edcab85166d0b7f87443b2ce98391c877cfb2f6eeafcf03c538c5f4dd3e0bfff03828eb48634f58f4c64343 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.5.0": + version: 4.6.0 + resolution: "node-gyp-build@npm:4.6.0" bin: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 1a57bba8c4c193f808bd8ad1484d4ebdd8106dd9f04a3e82554dc716e3a2d87d7e369e9503c145e0e6a7e2c663fec0d8aaf52bd8156342ec7fc388195f37824e + checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15 languageName: node linkType: hard @@ -39229,22 +44943,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.2.0 - resolution: "node-gyp@npm:10.2.0" + version: 9.3.0 + resolution: "node-gyp@npm:9.3.0" dependencies: env-paths: ^2.2.0 - exponential-backoff: ^3.1.1 - glob: ^10.3.10 + glob: ^7.1.4 graceful-fs: ^4.2.6 - make-fetch-happen: ^13.0.0 - nopt: ^7.0.0 - proc-log: ^4.1.0 + make-fetch-happen: ^10.0.3 + nopt: ^6.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 semver: ^7.3.5 - tar: ^6.2.1 - which: ^4.0.0 + tar: ^6.1.2 + which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 0233759d8c19765f7fdc259a35eb046ad86c3d09e22f7384613ae2b89647dd27fcf833fdf5293d9335041e91f9b1c539494225959cdb312a5c8080b7534b926f + checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 languageName: node linkType: hard @@ -39258,12 +44972,12 @@ __metadata: linkType: hard "node-html-parser@npm:^6.1.1": - version: 6.1.13 - resolution: "node-html-parser@npm:6.1.13" + version: 6.1.5 + resolution: "node-html-parser@npm:6.1.5" dependencies: css-select: ^5.1.0 he: 1.2.0 - checksum: bf172147f5bee7ab3dbef4dce0308a2c02264bac178ebd6375cd460e0a120e916451b93601aabdd59331c467bed0e3f9bb5b362a74050254846135d5cd5dd66d + checksum: b54257b31954be17d473c86a2fede53d5e238708f3d88577c98881c28ab66013fd37044903f6f3cd662b56d882681fb511bca75a80a80b62f7111b32b39eebae languageName: node linkType: hard @@ -39334,9 +45048,9 @@ __metadata: linkType: hard "node-watch@npm:^0.7.2": - version: 0.7.4 - resolution: "node-watch@npm:0.7.4" - checksum: effca2aa3575afdc8caae2a422d5738ecf8322962f051574c5dd3c1a399b4bf188c3ad3cb32890fc5e530604f0f037bc0160ec94b37f8d3ae4b76006a98f9df3 + version: 0.7.3 + resolution: "node-watch@npm:0.7.3" + checksum: c745482f720613415153b9065383b77d21f2ef60ceabf64f779c1452b1dcbb8d08c71f650b93f3c1d84524371321f92a15fda468745872cacffec8289741d51a languageName: node linkType: hard @@ -39350,7 +45064,18 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:6.7.2": +"nodemailer-mock@npm:2.0.6": + version: 2.0.6 + resolution: "nodemailer-mock@npm:2.0.6" + dependencies: + debug: ^4.3.4 + peerDependencies: + nodemailer: ^6.x + checksum: bdf9de2c5841ac27a5bdbb4f243532f527b1eeff809f7155a5391d9eef6c2d15123feed1d315120c598f47e490f073d523963c4239634a47aabf09e6efc16520 + languageName: node + linkType: hard + +"nodemailer@npm:6.7.2, nodemailer@npm:^6.4.16": version: 6.7.2 resolution: "nodemailer@npm:6.7.2" checksum: 3c37a40928448e2f5118a9f2f016c7a4f32228d0e6b7cc7d1834b8001374cc77280dc077a83239420f6daea4c898d9a1f336dfc2273bb7eddaf51a36bd126f72 @@ -39364,13 +45089,6 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:^6.4.16": - version: 6.9.15 - resolution: "nodemailer@npm:6.9.15" - checksum: 2d975f5c60f84acde52d79d43287c70197fe94bde4a731682f306e9636a148c49de29a5dd92ce7dc5aac068a148cd91da3401ede80f8f52b9f2bc00439f36ced - languageName: node - linkType: hard - "nopt@npm:^4.0.1": version: 4.0.3 resolution: "nopt@npm:4.0.3" @@ -39394,14 +45112,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0, nopt@npm:^7.2.0": - version: 7.2.1 - resolution: "nopt@npm:7.2.1" +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" dependencies: - abbrev: ^2.0.0 + abbrev: ^1.0.0 bin: nopt: bin/nopt.js - checksum: 6fa729cc77ce4162cfad8abbc9ba31d4a0ff6850c3af61d59b505653bef4781ec059f8890ecfe93ee8aa0c511093369cca88bfc998101616a2904e715bbbb7c9 + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac languageName: node linkType: hard @@ -39475,18 +45193,6 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:^11.0.0": - version: 11.0.3 - resolution: "npm-package-arg@npm:11.0.3" - dependencies: - hosted-git-info: ^7.0.0 - proc-log: ^4.0.0 - semver: ^7.3.5 - validate-npm-package-name: ^5.0.0 - checksum: cc6f22c39201aa14dcceeddb81bfbf7fa0484f94bcd2b3ad038e18afec5167c843cdde90c897f6034dc368faa0100c1eeee6e3f436a89e0af32ba932af4a8c28 - languageName: node - linkType: hard - "npm-package-arg@npm:^7.0.0": version: 7.0.0 resolution: "npm-package-arg@npm:7.0.0" @@ -39539,11 +45245,11 @@ __metadata: linkType: hard "npm-run-path@npm:^5.1.0": - version: 5.3.0 - resolution: "npm-run-path@npm:5.3.0" + version: 5.1.0 + resolution: "npm-run-path@npm:5.1.0" dependencies: path-key: ^4.0.0 - checksum: ae8e7a89da9594fb9c308f6555c73f618152340dcaae423e5fb3620026fefbec463618a8b761920382d666fa7a2d8d240b6fe320e8a6cdd54dc3687e2b659d25 + checksum: dc184eb5ec239d6a2b990b43236845332ef12f4e0beaa9701de724aa797fe40b6bbd0157fb7639d24d3ab13f5d5cf22d223a19c6300846b8126f335f788bee66 languageName: node linkType: hard @@ -39571,6 +45277,15 @@ __metadata: languageName: node linkType: hard +"nth-check@npm:^2.0.0": + version: 2.0.0 + resolution: "nth-check@npm:2.0.0" + dependencies: + boolbase: ^1.0.0 + checksum: a22eb19616719d46a5b517f76c32e67e4a2b6a229d67ba2f3efb296e24d79687d52b904c2298cd16510215d5d2a419f8ba671f5957a3b4b73905f62ba7aafa3b + languageName: node + linkType: hard + "nth-check@npm:^2.0.1": version: 2.1.1 resolution: "nth-check@npm:2.1.1" @@ -39594,10 +45309,17 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0, nwsapi@npm:^2.2.2": - version: 2.2.13 - resolution: "nwsapi@npm:2.2.13" - checksum: d34fb7838517c3c7e8cc824e443275b08b57f6a025a860693d18c56ddcfd176e32df9bf0ae7f5a95c7a32981501caa1f9fda31b59f28aa72a4b9d01f573a8e6b +"nwsapi@npm:^2.2.0": + version: 2.2.0 + resolution: "nwsapi@npm:2.2.0" + checksum: 5ef4a9bc0c1a5b7f2e014aa6a4b359a257503b796618ed1ef0eb852098f77e772305bb0e92856e4bbfa3e6c75da48c0113505c76f144555ff38867229c2400a7 + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.2": + version: 2.2.5 + resolution: "nwsapi@npm:2.2.5" + checksum: 3acfe387214e2a9a03960662ad600ecb41fc24385c9de91262a881608407f02d14686e5df3e6e87af0cf7b173ed2a6a202a569ab7bef376ec1841cd9b6cbf0a6 languageName: node linkType: hard @@ -39612,27 +45334,17 @@ __metadata: languageName: node linkType: hard -"nx@npm:15.9.7": - version: 15.9.7 - resolution: "nx@npm:15.9.7" +"nx@npm:14.0.3": + version: 14.0.3 + resolution: "nx@npm:14.0.3" dependencies: - "@nrwl/cli": 15.9.7 - "@nrwl/nx-darwin-arm64": 15.9.7 - "@nrwl/nx-darwin-x64": 15.9.7 - "@nrwl/nx-linux-arm-gnueabihf": 15.9.7 - "@nrwl/nx-linux-arm64-gnu": 15.9.7 - "@nrwl/nx-linux-arm64-musl": 15.9.7 - "@nrwl/nx-linux-x64-gnu": 15.9.7 - "@nrwl/nx-linux-x64-musl": 15.9.7 - "@nrwl/nx-win32-arm64-msvc": 15.9.7 - "@nrwl/nx-win32-x64-msvc": 15.9.7 - "@nrwl/tao": 15.9.7 + "@nrwl/cli": 14.0.3 + "@nrwl/tao": 14.0.3 "@parcel/watcher": 2.0.4 - "@yarnpkg/lockfile": ^1.1.0 - "@yarnpkg/parsers": 3.0.0-rc.46 - "@zkochan/js-yaml": 0.0.6 - axios: ^1.0.0 - chalk: ^4.1.0 + "@swc-node/register": ^1.4.2 + "@swc/core": ^1.2.152 + chalk: 4.1.0 + chokidar: ^3.5.1 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: ^7.0.2 @@ -39641,55 +45353,27 @@ __metadata: fast-glob: 3.2.7 figures: 3.2.0 flat: ^5.0.2 - fs-extra: ^11.1.0 + fs-extra: ^9.1.0 glob: 7.1.4 ignore: ^5.0.4 - js-yaml: 4.1.0 - jsonc-parser: 3.2.0 - lines-and-columns: ~2.0.3 - minimatch: 3.0.5 + jsonc-parser: 3.0.0 + minimatch: 3.0.4 npm-run-path: ^4.0.1 open: ^8.4.0 - semver: 7.5.4 + rxjs: ^6.5.4 + rxjs-for-await: 0.0.2 + semver: 7.3.4 string-width: ^4.2.3 - strong-log-transformer: ^2.1.0 tar-stream: ~2.2.0 tmp: ~0.2.1 - tsconfig-paths: ^4.1.2 + tsconfig-paths: ^3.9.0 tslib: ^2.3.0 v8-compile-cache: 2.3.0 - yargs: ^17.6.2 - yargs-parser: 21.1.1 - peerDependencies: - "@swc-node/register": ^1.4.2 - "@swc/core": ^1.2.173 - dependenciesMeta: - "@nrwl/nx-darwin-arm64": - optional: true - "@nrwl/nx-darwin-x64": - optional: true - "@nrwl/nx-linux-arm-gnueabihf": - optional: true - "@nrwl/nx-linux-arm64-gnu": - optional: true - "@nrwl/nx-linux-arm64-musl": - optional: true - "@nrwl/nx-linux-x64-gnu": - optional: true - "@nrwl/nx-linux-x64-musl": - optional: true - "@nrwl/nx-win32-arm64-msvc": - optional: true - "@nrwl/nx-win32-x64-msvc": - optional: true - peerDependenciesMeta: - "@swc-node/register": - optional: true - "@swc/core": - optional: true + yargs: ^17.4.0 + yargs-parser: 21.0.1 bin: nx: bin/nx.js - checksum: 6a554be82d6759e669e867e5276374c4be96e3821b9c9377d6c19a10b705b15612b8ce5851bc979e30b1473722ab09459c514527a860cc102f76d6fe782da210 + checksum: cc0a38aeed8233e6c7457361f478ec2835f6f8df4595d5cb27f1e5ca3923147d14a856b59adc11a8a6f2a0a23426365e81bbfed0f791dae0095c388d978c9291 languageName: node linkType: hard @@ -39777,22 +45461,6 @@ __metadata: languageName: node linkType: hard -"nypm@npm:^0.3.8": - version: 0.3.12 - resolution: "nypm@npm:0.3.12" - dependencies: - citty: ^0.1.6 - consola: ^3.2.3 - execa: ^8.0.1 - pathe: ^1.1.2 - pkg-types: ^1.2.0 - ufo: ^1.5.4 - bin: - nypm: dist/cli.mjs - checksum: 213d15a7e61a63733d14cbf2d05f0b2ac1712d900a310cb60e14f8e73c46fd7d03cdad96cbeddc8ce7fe048399492e33ca38d00f304ad1be704d6ad897499ecd - languageName: node - linkType: hard - "oas-kit-common@npm:^1.0.8": version: 1.0.8 resolution: "oas-kit-common@npm:1.0.8" @@ -39851,6 +45519,13 @@ __metadata: languageName: node linkType: hard +"oauth-sign@npm:~0.9.0": + version: 0.9.0 + resolution: "oauth-sign@npm:0.9.0" + checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 + languageName: node + linkType: hard + "oauth@npm:^0.9.15": version: 0.9.15 resolution: "oauth@npm:0.9.15" @@ -39858,12 +45533,10 @@ __metadata: languageName: node linkType: hard -"ob1@npm:0.80.12": - version: 0.80.12 - resolution: "ob1@npm:0.80.12" - dependencies: - flow-enums-runtime: ^0.0.6 - checksum: c78af51d6ecf47ba5198bc7eb27d0456a287589533f1445e6d595e2d067f6f8038da02a98e5faa4a6c3d0c04f77c570bc9b29c652fec55518884c40c73212f17 +"ob1@npm:0.80.9": + version: 0.80.9 + resolution: "ob1@npm:0.80.9" + checksum: 50730f4c4fd043e1d3e713a40e6c6ee04882b56abf57bc0afbfe18982ad4e64f0d7cfd0b8fc37377af37f0a0dbf1bb46eb3c1625eacff0cd834717703028cfb2 languageName: node linkType: hard @@ -39881,24 +45554,38 @@ __metadata: languageName: node linkType: hard +"object-inspect@npm:^1.12.0, object-inspect@npm:^1.6.0, object-inspect@npm:^1.9.0": + version: 1.12.0 + resolution: "object-inspect@npm:1.12.0" + checksum: 2b36d4001a9c921c6b342e2965734519c9c58c355822243c3207fbf0aac271f8d44d30d2d570d450b2cc6f0f00b72bcdba515c37827d2560e5f22b1899a31cf4 + languageName: node + linkType: hard + +"object-inspect@npm:^1.12.2": + version: 1.12.2 + resolution: "object-inspect@npm:1.12.2" + checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 + languageName: node + linkType: hard + "object-inspect@npm:^1.13.1": - version: 1.13.2 - resolution: "object-inspect@npm:1.13.2" - checksum: 9f850b3c045db60e0e97746e809ee4090d6ce62195af17dd1e9438ac761394a7d8ec4f7906559aea5424eaf61e35d3e53feded2ccd5f62fcc7d9670d3c8eb353 + version: 1.13.1 + resolution: "object-inspect@npm:1.13.1" + checksum: 7d9fa9221de3311dcb5c7c307ee5dc011cdd31dc43624b7c184b3840514e118e05ef0002be5388304c416c0eb592feb46e983db12577fc47e47d5752fbbfb61f languageName: node linkType: hard -"object-is@npm:^1.1.4, object-is@npm:^1.1.5": - version: 1.1.6 - resolution: "object-is@npm:1.1.6" +"object-is@npm:^1.0.1, object-is@npm:^1.1.4, object-is@npm:^1.1.5": + version: 1.1.5 + resolution: "object-is@npm:1.1.5" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - checksum: 3ea22759967e6f2380a2cbbd0f737b42dc9ddb2dfefdb159a1b927fea57335e1b058b564bfa94417db8ad58cddab33621a035de6f5e5ad56d89f2dd03e66c6a1 + call-bind: ^1.0.2 + define-properties: ^1.1.3 + checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe languageName: node linkType: hard -"object-keys@npm:^1.1.1": +"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a @@ -39919,7 +45606,31 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": +"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2": + version: 4.1.2 + resolution: "object.assign@npm:4.1.2" + dependencies: + call-bind: ^1.0.0 + define-properties: ^1.1.3 + has-symbols: ^1.0.1 + object-keys: ^1.1.1 + checksum: d621d832ed7b16ac74027adb87196804a500d80d9aca536fccb7ba48d33a7e9306a75f94c1d29cbfa324bc091bfc530bc24789568efdaee6a47fcfa298993814 + languageName: node + linkType: hard + +"object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": + version: 4.1.4 + resolution: "object.assign@npm:4.1.4" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + has-symbols: ^1.0.3 + object-keys: ^1.1.1 + checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 + languageName: node + linkType: hard + +"object.assign@npm:^4.1.5": version: 4.1.5 resolution: "object.assign@npm:4.1.5" dependencies: @@ -39931,7 +45642,18 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.6, object.entries@npm:^1.1.8": +"object.entries@npm:^1.1.6": + version: 1.1.6 + resolution: "object.entries@npm:1.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 0f8c47517e6a9a980241eafe3b73de11e59511883173c2b93d67424a008e47e11b77c80e431ad1d8a806f6108b225a1cab9223e53e555776c612a24297117d28 + languageName: node + linkType: hard + +"object.entries@npm:^1.1.8": version: 1.1.8 resolution: "object.entries@npm:1.1.8" dependencies: @@ -39942,7 +45664,18 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.6, object.fromentries@npm:^2.0.8": +"object.fromentries@npm:^2.0.6": + version: 2.0.6 + resolution: "object.fromentries@npm:2.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 453c6d694180c0c30df451b60eaf27a5b9bca3fb43c37908fd2b78af895803dc631242bcf05582173afa40d8d0e9c96e16e8874b39471aa53f3ac1f98a085d85 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.7, object.fromentries@npm:^2.0.8": version: 2.0.8 resolution: "object.fromentries@npm:2.0.8" dependencies: @@ -39954,22 +45687,18 @@ __metadata: languageName: node linkType: hard -"object.getownpropertydescriptors@npm:^2.1.6": - version: 2.1.8 - resolution: "object.getownpropertydescriptors@npm:2.1.8" +"object.getownpropertydescriptors@npm:^2.1.1": + version: 2.1.2 + resolution: "object.getownpropertydescriptors@npm:2.1.2" dependencies: - array.prototype.reduce: ^1.0.6 - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-object-atoms: ^1.0.0 - gopd: ^1.0.1 - safe-array-concat: ^1.1.2 - checksum: 073e492700a7f61ff6c471a2ed96e72473b030a7a105617f03cab192fb4bbc0e6068ef76534ec56afd34baf26b5dc5408de59cb0140ec8abde781e00faa3e63e + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.18.0-next.2 + checksum: 6c1c0162a2bea912f092dbf48699998d6f4b788a9884ee99ba41ddf25c3f0924ec56c6a55738c4ae3bd91d1203813a9a8e18e6fff1f477e2626cdbcd1a5f3ca8 languageName: node linkType: hard -"object.groupby@npm:^1.0.3": +"object.groupby@npm:^1.0.1": version: 1.0.3 resolution: "object.groupby@npm:1.0.3" dependencies: @@ -39981,6 +45710,16 @@ __metadata: linkType: hard "object.hasown@npm:^1.1.2": + version: 1.1.2 + resolution: "object.hasown@npm:1.1.2" + dependencies: + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: b936572536db0cdf38eb30afd2f1026a8b6f2cc5d2c4497c9d9bbb01eaf3e980dead4fd07580cfdd098e6383e5a9db8212d3ea0c6bdd2b5e68c60aa7e3b45566 + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.4": version: 1.1.4 resolution: "object.hasown@npm:1.1.4" dependencies: @@ -39991,7 +45730,18 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.6, object.values@npm:^1.2.0": +"object.values@npm:^1.1.6": + version: 1.1.6 + resolution: "object.values@npm:1.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e + languageName: node + linkType: hard + +"object.values@npm:^1.1.7, object.values@npm:^1.2.0": version: 1.2.0 resolution: "object.values@npm:1.2.0" dependencies: @@ -40016,13 +45766,6 @@ __metadata: languageName: node linkType: hard -"ohash@npm:^1.1.3": - version: 1.1.4 - resolution: "ohash@npm:1.1.4" - checksum: 8c63897941e67129ac81a15cfc2bb66a7b122200c9ee244e86d3d6b7aa7f5d9f7cb98d33dfc38b169c83b77c9babcc6f66ccbc90864d1f862f10ac8b72d80d66 - languageName: node - linkType: hard - "oidc-client-ts@npm:2.4.0": version: 2.4.0 resolution: "oidc-client-ts@npm:2.4.0" @@ -40129,7 +45872,7 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.0.4, open@npm:^8.0.9, open@npm:^8.2.1, open@npm:^8.3.0, open@npm:^8.4.0": +"open@npm:^8.0.4, open@npm:^8.0.9, open@npm:^8.3.0": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: @@ -40140,13 +45883,36 @@ __metadata: languageName: node linkType: hard +"open@npm:^8.2.1, open@npm:^8.4.0": + version: 8.4.0 + resolution: "open@npm:8.4.0" + dependencies: + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + languageName: node + linkType: hard + +"open@npm:^9.1.0": + version: 9.1.0 + resolution: "open@npm:9.1.0" + dependencies: + default-browser: ^4.0.0 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + is-wsl: ^2.2.0 + checksum: 3993c0f61d51fed8ac290e99c9c3cf45d3b6cfb3e2aa2b74cafd312c3486c22fd81df16ac8f3ab91dd8a4e3e729a16fc2480cfc406c4833416cf908acf1ae7c9 + languageName: node + linkType: hard + "openapi-sampler@npm:^1.3.1": - version: 1.5.1 - resolution: "openapi-sampler@npm:1.5.1" + version: 1.4.0 + resolution: "openapi-sampler@npm:1.4.0" dependencies: "@types/json-schema": ^7.0.7 json-pointer: 0.6.2 - checksum: 35a624823c576a2d1b2b5a1a876479aacabb2e62ed522061b5ebbe9537e6ad34f0fb2ad41cc7c331799f485862c03a2c03887021f7b606591dbac2a7970d2a30 + checksum: d38b432e92190847eeb6533ed77b24dc912bd97f610f4b52db0d7cbbe88c8ee2d5fe498a97c23e6209385a13114b6f01b0c2c49e98c079f0b639f0133a1d657c languageName: node linkType: hard @@ -40178,9 +45944,9 @@ __metadata: linkType: hard "opentracing@npm:>=0.12.1": - version: 0.14.7 - resolution: "opentracing@npm:0.14.7" - checksum: 5f7e44439062d056a2a72ac89eff463c9cf5659a2aea230ff7f5a226c5e960c195ce04ec2e2cc590140bbb9c5d2be11a5a50a23484cbe2d0e132af4309d4c904 + version: 0.14.5 + resolution: "opentracing@npm:0.14.5" + checksum: cb84f0a5d4340dfd1e023525bb743ab6a60587e022e90517b91183e68a09ccffb2cd8379d633f26cba59cbdba0047f3ae227515d45f016bf9686f6e09b2b25f4 languageName: node linkType: hard @@ -40230,16 +45996,16 @@ __metadata: linkType: hard "optionator@npm:^0.9.3": - version: 0.9.4 - resolution: "optionator@npm:0.9.4" + version: 0.9.3 + resolution: "optionator@npm:0.9.3" dependencies: + "@aashutoshrathi/word-wrap": ^1.2.3 deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 - word-wrap: ^1.2.5 - checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb + checksum: 09281999441f2fe9c33a5eeab76700795365a061563d66b098923eb719251a42bdbe432790d35064d0816ead9296dbeb1ad51a733edf4167c96bd5d0882e428a languageName: node linkType: hard @@ -40367,15 +46133,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^4.0.0": - version: 4.0.0 - resolution: "p-limit@npm:4.0.0" - dependencies: - yocto-queue: ^1.0.0 - checksum: 01d9d70695187788f984226e16c903475ec6a947ee7b21948d6f597bed788e3112cc7ec2e171c1d37125057a5f45f3da21d8653e04a3a793589e12e9e80e756b - languageName: node - linkType: hard - "p-locate@npm:^3.0.0": version: 3.0.0 resolution: "p-locate@npm:3.0.0" @@ -40403,15 +46160,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^6.0.0": - version: 6.0.0 - resolution: "p-locate@npm:6.0.0" - dependencies: - p-limit: ^4.0.0 - checksum: 2bfe5234efa5e7a4e74b30a5479a193fdd9236f8f6b4d2f3f69e3d286d9a7d7ab0c118a2a50142efcf4e41625def635bd9332d6cbf9cc65d85eb0718c579ab38 - languageName: node - linkType: hard - "p-map@npm:^2.0.0": version: 2.1.0 resolution: "p-map@npm:2.1.0" @@ -40479,33 +46227,33 @@ __metadata: linkType: hard "pac-proxy-agent@npm:^7.0.1": - version: 7.0.2 - resolution: "pac-proxy-agent@npm:7.0.2" + version: 7.0.1 + resolution: "pac-proxy-agent@npm:7.0.1" dependencies: "@tootallnate/quickjs-emscripten": ^0.23.0 agent-base: ^7.0.2 debug: ^4.3.4 get-uri: ^6.0.1 http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.5 - pac-resolver: ^7.0.1 - socks-proxy-agent: ^8.0.4 - checksum: 82772aaa489a4ad6f598b75d56daf609e7ba294a05a91cfe3101b004e2df494f0a269c98452cb47aaa4a513428e248308a156e26fee67eb78a76a58e9346921e + https-proxy-agent: ^7.0.2 + pac-resolver: ^7.0.0 + socks-proxy-agent: ^8.0.2 + checksum: 3d4aa48ec1c19db10158ecc1c4c9a9f77792294412d225ceb3dfa45d5a06950dca9755e2db0d9b69f12769119bea0adf2b24390d9c73c8d81df75e28245ae451 languageName: node linkType: hard "pac-resolver@npm:^5.0.0": - version: 5.0.1 - resolution: "pac-resolver@npm:5.0.1" + version: 5.0.0 + resolution: "pac-resolver@npm:5.0.0" dependencies: - degenerator: ^3.0.2 + degenerator: ^3.0.1 ip: ^1.1.5 - netmask: ^2.0.2 - checksum: e3bd8aada70d173cd4cec1ac810fb56161678b7a597060a740c4a31d9c5f8cd95687b2d0fd90b69c0cafe5ef787404074f38042ba08c8d378fed48973f58e493 + netmask: ^2.0.1 + checksum: d6c0f86917bcb759136f47ded0818f14bf2b424a1c3efe6e11bdb9728e5465bfefd05c163f9808766b06605aa0d211c538583293c72dca4c499452493550f4d7 languageName: node linkType: hard -"pac-resolver@npm:^7.0.1": +"pac-resolver@npm:^7.0.0": version: 7.0.1 resolution: "pac-resolver@npm:7.0.1" dependencies: @@ -40516,9 +46264,9 @@ __metadata: linkType: hard "package-json-from-dist@npm:^1.0.0": - version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1" - checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 + version: 1.0.0 + resolution: "package-json-from-dist@npm:1.0.0" + checksum: ac706ec856a5a03f5261e4e48fa974f24feb044d51f84f8332e2af0af04fbdbdd5bbbfb9cbbe354190409bc8307c83a9e38c6672c3c8855f709afb0006a009ea languageName: node linkType: hard @@ -40562,6 +46310,13 @@ __metadata: languageName: node linkType: hard +"parent-require@npm:^1.0.0": + version: 1.0.0 + resolution: "parent-require@npm:1.0.0" + checksum: 91ecef2c8e0ecc06a7d68ebdfccec9cb8b34a7144cccda0141273c8871d4dd05856fe13b17ae1e1a32bfd769143671a6dbd2ad7ee72f55d1cb8e588dc60a8f4c + languageName: node + linkType: hard + "parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": version: 5.1.7 resolution: "parse-asn1@npm:5.1.7" @@ -40662,7 +46417,7 @@ __metadata: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^6.0.0": +"parse5-htmlparser2-tree-adapter@npm:^6.0.0, parse5-htmlparser2-tree-adapter@npm:^6.0.1": version: 6.0.1 resolution: "parse5-htmlparser2-tree-adapter@npm:6.0.1" dependencies: @@ -40671,25 +46426,6 @@ __metadata: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^7.0.0": - version: 7.1.0 - resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" - dependencies: - domhandler: ^5.0.3 - parse5: ^7.0.0 - checksum: 98326fc5443e2149e10695adbfd0b0b3383c54398799f858b4ac2914adb199af8fcc90c2143aa5f7fd5f9482338f26ef253b468722f34d50bb215ec075d89fe9 - languageName: node - linkType: hard - -"parse5-parser-stream@npm:^7.1.2": - version: 7.1.2 - resolution: "parse5-parser-stream@npm:7.1.2" - dependencies: - parse5: ^7.0.0 - checksum: 75b232d460bce6bd0e35012750a78ef034f40ccf550b7c6cec3122395af6b4553202ad3663ad468cf537ead5a2e13b6727670395fd0ff548faccad1dc2dc93cf - languageName: node - linkType: hard - "parse5@npm:4.0.0": version: 4.0.0 resolution: "parse5@npm:4.0.0" @@ -40711,12 +46447,12 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.0.0, parse5@npm:^7.1.1, parse5@npm:^7.1.2": - version: 7.2.0 - resolution: "parse5@npm:7.2.0" +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" dependencies: - entities: ^4.5.0 - checksum: 78a3286521d5ae09837ed3112a3c817cc718ee444951aced617c46a229b9872b10b7b20941d4d0ca7176c7f37f13dbf013206abe2e5e533563d635d36a9a3dc6 + entities: ^4.4.0 + checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 languageName: node linkType: hard @@ -40775,7 +46511,17 @@ __metadata: languageName: node linkType: hard -"password-prompt@npm:^1.0.4, password-prompt@npm:^1.1.3": +"password-prompt@npm:^1.0.4": + version: 1.1.2 + resolution: "password-prompt@npm:1.1.2" + dependencies: + ansi-escapes: ^3.1.0 + cross-spawn: ^6.0.5 + checksum: 4763ec1b48cb311d60df37186e31f1b85ec3249a21cc17bbf8407d66c5b55cffe34b4eb529ebd044ed4ced7f3ea3fad744fe15e30a5de31645433e94cd444266 + languageName: node + linkType: hard + +"password-prompt@npm:^1.1.3": version: 1.1.3 resolution: "password-prompt@npm:1.1.3" dependencies: @@ -40825,13 +46571,6 @@ __metadata: languageName: node linkType: hard -"path-exists@npm:^5.0.0": - version: 5.0.0 - resolution: "path-exists@npm:5.0.0" - checksum: 8ca842868cab09423994596eb2c5ec2a971c17d1a3cb36dbf060592c730c725cd524b9067d7d2a1e031fef9ba7bd2ac6dc5ec9fb92aa693265f7be3987045254 - languageName: node - linkType: hard - "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -40883,7 +46622,17 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.1, path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": version: 1.11.1 resolution: "path-scurry@npm:1.11.1" dependencies: @@ -40893,14 +46642,7 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.10": - version: 0.1.10 - resolution: "path-to-regexp@npm:0.1.10" - checksum: ab7a3b7a0b914476d44030340b0a65d69851af2a0f33427df1476100ccb87d409c39e2182837a96b98fb38c4ef2ba6b87bdad62bb70a2c153876b8061760583c - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.7": +"path-to-regexp@npm:0.1.7, path-to-regexp@npm:^0.1.2": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce @@ -40921,13 +46663,6 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:^0.1.2": - version: 0.1.11 - resolution: "path-to-regexp@npm:0.1.11" - checksum: 02665d2795ae458f24b2f62cc7f4e8c3334d65dbd4e49a50b0494cf28d69f645ce6bf51404eab7bbf717dd36809a2c83785a54a3dda776e8fe1811ada0ba32fd - languageName: node - linkType: hard - "path-to-regexp@npm:^2.2.1": version: 2.4.0 resolution: "path-to-regexp@npm:2.4.0" @@ -40986,10 +46721,10 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.1, pathe@npm:^1.1.2": - version: 1.1.2 - resolution: "pathe@npm:1.1.2" - checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134 +"pathe@npm:^1.1.0": + version: 1.1.1 + resolution: "pathe@npm:1.1.1" + checksum: 34ab3da2e5aa832ebc6a330ffe3f73d7ba8aec6e899b53b8ec4f4018de08e40742802deb12cf5add9c73b7bf719b62c0778246bd376ca62b0fb23e0dde44b759 languageName: node linkType: hard @@ -41041,17 +46776,11 @@ __metadata: linkType: hard "pdfjs-dist@npm:^2.10.377": - version: 2.16.105 - resolution: "pdfjs-dist@npm:2.16.105" - dependencies: - dommatrix: ^1.0.3 - web-streams-polyfill: ^3.2.1 + version: 2.10.377 + resolution: "pdfjs-dist@npm:2.10.377" peerDependencies: - worker-loader: ^3.0.8 - peerDependenciesMeta: - worker-loader: - optional: true - checksum: 16ad2fa0ff8404fefd1a3e83f92ef1a594fcc4d3ff65512f801365c8f06d300d4a38023a867994f0b964a8e146773e6dcc9988c7c1a791917eb6371d5bd72863 + worker-loader: ^3.0.7 + checksum: 5a4c14777676e15aeca9a627cc1f368821071ae040154983edf21f1040cb89acd9b0168b43b64ac10d66f86094dcb48b33513b9810b6d422446c599fb172d5a4 languageName: node linkType: hard @@ -41099,10 +46828,17 @@ __metadata: languageName: node linkType: hard -"pg-connection-string@npm:^2.2.2, pg-connection-string@npm:^2.6.1": - version: 2.7.0 - resolution: "pg-connection-string@npm:2.7.0" - checksum: 68015a8874b7ca5dad456445e4114af3d2602bac2fdb8069315ecad0ff9660ec93259b9af7186606529ac4f6f72a06831e6f20897a689b16cc7fda7ca0e247fd +"pg-connection-string@npm:^2.2.2": + version: 2.5.0 + resolution: "pg-connection-string@npm:2.5.0" + checksum: a6f3a068f7c9416a5b33a326811caf0dfaaee045c225b7c628b4c9b4e9a2b25bdd12a21e4c48940e1000ea223a4e608ca122d2ff3dd08c8b1db0fc9f5705133a + languageName: node + linkType: hard + +"pg-connection-string@npm:^2.6.1": + version: 2.6.4 + resolution: "pg-connection-string@npm:2.6.4" + checksum: 2c1d2ac1add1f93076f1594d217a0980f79add05dc48de6363e1c550827c78a6ee3e3b5420da9c54858f6b678cdb348aed49732ee68158b6cdb70f1d1c748cf9 languageName: node linkType: hard @@ -41123,18 +46859,18 @@ __metadata: linkType: hard "pg-pool@npm:^3.2.0": - version: 3.7.0 - resolution: "pg-pool@npm:3.7.0" + version: 3.2.2 + resolution: "pg-pool@npm:3.2.2" peerDependencies: pg: ">=8.0" - checksum: 66fc1a5ad0e17b72671b9a2cd4c7a856fb08d3cb82da7af0b322590ada23127ac591111e855740405fde4f06c9de888abe9f3aa685ed6038c3232578e1fce8cf + checksum: 06b0faa68f247ebbb8c6810b15916a8c53abf06d3e2a28282d3ed10f684d41318241c2daecdcb4c5761e70d792f4309cff85a8a134dec40a39fabed0e489688e languageName: node linkType: hard "pg-protocol@npm:*, pg-protocol@npm:^1.2.2": - version: 1.7.0 - resolution: "pg-protocol@npm:1.7.0" - checksum: 2dba740f6fc4b7f9761682c4c42d183b444292cdc7638b373f5247ec995c8199c369953343479281da3c41611fe34130a80c8668348d49a399c164f802f76be2 + version: 1.5.0 + resolution: "pg-protocol@npm:1.5.0" + checksum: b839d12cafe942ef9cbc5b13c174eb2356804fb4fe8ead8279f46a36be90722d19a91409955beb8a3d5301639c44854e49749de4aef02dc361fee3e2a61fb1e4 languageName: node linkType: hard @@ -41168,18 +46904,25 @@ __metadata: linkType: hard "pgpass@npm:1.x": - version: 1.0.5 - resolution: "pgpass@npm:1.0.5" + version: 1.0.4 + resolution: "pgpass@npm:1.0.4" dependencies: - split2: ^4.1.0 - checksum: 947ac096c031eebdf08d989de2e9f6f156b8133d6858c7c2c06c041e1e71dda6f5f3bad3c0ec1e96a09497bbc6ef89e762eefe703b5ef9cb2804392ec52ec400 + split2: ^3.1.1 + checksum: ea4751e9ecf345f1e1deccec761a28576eb9f2775a4689e61f5c010a9a812defdd06043918dcb99ebcb503f57bfce33fe34890b12011629d2fba859c21aa2fed languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.1": + version: 1.0.1 + resolution: "picocolors@npm:1.0.1" + checksum: fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 languageName: node linkType: hard @@ -41250,7 +46993,14 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.6": +"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.5": + version: 4.0.5 + resolution: "pirates@npm:4.0.5" + checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 + languageName: node + linkType: hard + +"pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 @@ -41258,9 +47008,9 @@ __metadata: linkType: hard "pkce-challenge@npm:^2.1.0": - version: 2.2.0 - resolution: "pkce-challenge@npm:2.2.0" - checksum: f1ab8af2513e0088e691edb3397ea2c14ffd9ae51ecfabc08be2e5a97a09f93f776769022efa0536de5fd6caac40de9a6d7ac38d49ee6efcabd87c87deda94bf + version: 2.1.0 + resolution: "pkce-challenge@npm:2.1.0" + checksum: f5d37b1d841a1dd9662239da4c32d4db01c83a9a2bb665f2459721e21a4e0b8b0c4c1d6b4c169ecd8b92ba959b8d59cf0af73d0125b19686f7a05f7fa0588001 languageName: node linkType: hard @@ -41291,26 +47041,6 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^7.0.0": - version: 7.0.0 - resolution: "pkg-dir@npm:7.0.0" - dependencies: - find-up: ^6.3.0 - checksum: 94298b20a446bfbbd66604474de8a0cdd3b8d251225170970f15d9646f633e056c80520dd5b4c1d1050c9fed8f6a9e5054b141c93806439452efe72e57562c03 - languageName: node - linkType: hard - -"pkg-types@npm:^1.2.0": - version: 1.2.1 - resolution: "pkg-types@npm:1.2.1" - dependencies: - confbox: ^0.1.8 - mlly: ^1.7.2 - pathe: ^1.1.2 - checksum: d2e3ad7aef36cc92b17403e61c04db521bf0beb175ccb4d432c284239f00ec32ff37feb072a260613e9ff727911cff1127a083fd52f91b9bec6b62970f385702 - languageName: node - linkType: hard - "pkg-up@npm:^3.1.0": version: 3.1.0 resolution: "pkg-up@npm:3.1.0" @@ -41320,23 +47050,37 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.29.2": - version: 1.29.2 - resolution: "playwright-core@npm:1.29.2" +"playwright-core@npm:1.48.2": + version: 1.48.2 + resolution: "playwright-core@npm:1.48.2" + bin: + playwright-core: cli.js + checksum: a73ecea379f13f757ec38299871256a130d4abec5688369969a6b1ef6104c67f731a27c9a503a988c3e5b1141048552a3ed8c4d061cb631ff2ebab606835c10a + languageName: node + linkType: hard + +"playwright@npm:1.48.2": + version: 1.48.2 + resolution: "playwright@npm:1.48.2" + dependencies: + fsevents: 2.3.2 + playwright-core: 1.48.2 + dependenciesMeta: + fsevents: + optional: true bin: playwright: cli.js - checksum: 19e00e162a24eb99878408518930346c1d2c8ce83bb02993e3dd890c99df4530240cfebe4ec4e5aca01656462695b6328fb8f913cf2e229c2c73941623ac524e + checksum: 69ffb28b5a94fc21a9bd3439feb363ffebb21c6b00e6d08ffc225787be49005d6b57072ebb043e78378252850f2b7712f8478e6685138a8e445d6fda94a31e28 languageName: node linkType: hard "plist@npm:^3.0.4, plist@npm:^3.0.5": - version: 3.1.0 - resolution: "plist@npm:3.1.0" + version: 3.0.6 + resolution: "plist@npm:3.0.6" dependencies: - "@xmldom/xmldom": ^0.8.8 base64-js: ^1.5.1 xmlbuilder: ^15.1.1 - checksum: c8ea013da8646d4c50dff82f9be39488054621cc229957621bb00add42b5d4ce3657cf58d4b10c50f7dea1a81118f825838f838baeb4e6f17fab453ecf91d424 + checksum: e21390fab8a3c388f8f51b76c0aa187242a40537119ce865d8637630e7d7df79b21f841ec6a4668e7c68d409a6f584d696619099a6125d28011561639c0823b8 languageName: node linkType: hard @@ -41362,22 +47106,22 @@ __metadata: linkType: hard "polished@npm:^4.1.3, polished@npm:^4.2.2": - version: 4.3.1 - resolution: "polished@npm:4.3.1" + version: 4.2.2 + resolution: "polished@npm:4.2.2" dependencies: "@babel/runtime": ^7.17.8 - checksum: a6f863c23f1d2f3f5cda3427b5885c9fb9e83b036d681e24820b143c7df40d2685bebb01c0939767120a28e1183671ae17c93db82ac30b3c20942180bb153bc7 + checksum: 97fb927dc55cd34aeb11b31ae2a3332463f114351c86e8aa6580d7755864a0120164fdc3770e6160c8b1775052f0eda14db9a6e34402cd4b08ab2d658a593725 languageName: node linkType: hard "portfinder@npm:^1.0.28": - version: 1.0.32 - resolution: "portfinder@npm:1.0.32" + version: 1.0.28 + resolution: "portfinder@npm:1.0.28" dependencies: - async: ^2.6.4 - debug: ^3.2.7 - mkdirp: ^0.5.6 - checksum: 116b4aed1b9e16f6d5503823d966d9ffd41b1c2339e27f54c06cd2f3015a9d8ef53e2a53b57bc0a25af0885977b692007353aa28f9a0a98a44335cb50487240d + async: ^2.6.2 + debug: ^3.1.1 + mkdirp: ^0.5.5 + checksum: 91fef602f13f8f4c64385d0ad2a36cc9dc6be0b8d10a2628ee2c3c7b9917ab4fefb458815b82cea2abf4b785cd11c9b4e2d917ac6fa06f14b6fa880ca8f8928c languageName: node linkType: hard @@ -41388,7 +47132,7 @@ __metadata: languageName: node linkType: hard -"postcss-calc@npm:^9.0.1": +"postcss-calc@npm:^9.0.0": version: 9.0.1 resolution: "postcss-calc@npm:9.0.1" dependencies: @@ -41400,65 +47144,65 @@ __metadata: languageName: node linkType: hard -"postcss-colormin@npm:^6.1.0": - version: 6.1.0 - resolution: "postcss-colormin@npm:6.1.0" +"postcss-colormin@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-colormin@npm:6.0.0" dependencies: - browserslist: ^4.23.0 + browserslist: ^4.21.4 caniuse-api: ^3.0.0 - colord: ^2.9.3 + colord: ^2.9.1 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 55a1525de345d953bc7f32ecaa5ee6275ef0277c27d1f97ff06a1bd1a2fedf7f254e36dc1500621f1df20c25a6d2485a74a0b527d8ff74eb90726c76efe2ac8e + postcss: ^8.2.15 + checksum: f7113758df45a198f4cf310b317e5bc49fcbd2648064245a5cddcb46e892593950592d4040136bf3b0c8fd64973b0dda3b4b0865b72b5bd94af244cf52418c67 languageName: node linkType: hard -"postcss-convert-values@npm:^6.1.0": - version: 6.1.0 - resolution: "postcss-convert-values@npm:6.1.0" +"postcss-convert-values@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-convert-values@npm:6.0.0" dependencies: - browserslist: ^4.23.0 + browserslist: ^4.21.4 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 43e9f66af9bdec3c76695f9dde36885abc01f662c370c490b45d895459caab2c5792f906f3ddad107129133e41485a65634da7f699eef916a636e47f6a37a299 + postcss: ^8.2.15 + checksum: 511ca9358148fc336808d0f58f1e6ad330b73c1a87f32581f3d541ffa66cb61f2a36c8e76d1defb7c54c577c83f11d9bf2eb0d27a83c963c315b8eb149935bd7 languageName: node linkType: hard -"postcss-discard-comments@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-discard-comments@npm:6.0.2" +"postcss-discard-comments@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-discard-comments@npm:6.0.0" peerDependencies: - postcss: ^8.4.31 - checksum: c1731ccc8d1e3d910412a61395988d3033365e6532d9e5432ad7c74add8c9dcb0af0c03d4e901bf0d2b59ea4e7297a0c77a547ff2ed1b1cc065559cc0de43b4e + postcss: ^8.2.15 + checksum: 9be073707b5ef781c616ddd32ffd98faf14bf8b40027f341d5a4fb7989fa7b017087ad54146a370fe38295b1f2568b9f5522f4e4c1a1d09fe0e01abd9f5ae00d languageName: node linkType: hard -"postcss-discard-duplicates@npm:^6.0.3": - version: 6.0.3 - resolution: "postcss-discard-duplicates@npm:6.0.3" +"postcss-discard-duplicates@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-discard-duplicates@npm:6.0.0" peerDependencies: - postcss: ^8.4.31 - checksum: 308e3fb84c35e4703532de1efa5d6e8444cc5f167d0e40f42d7ea3fa3a37d9d636fd10729847d078e0c303eee16f8548d14b6f88a3fce4e38a2b452648465175 + postcss: ^8.2.15 + checksum: 999dfc652a60c96f782cc37fbe0d04a89bec88b5ed943f06555166eebf03c6ee47cd56947f1373d84c8161687d1ca23ff6badd1278b5482c506614cf617bc21d languageName: node linkType: hard -"postcss-discard-empty@npm:^6.0.3": - version: 6.0.3 - resolution: "postcss-discard-empty@npm:6.0.3" +"postcss-discard-empty@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-discard-empty@npm:6.0.0" peerDependencies: - postcss: ^8.4.31 - checksum: bad305572faa066026a295faab37e718cee096589ab827b19c990c55620b2b2a1ce9f0145212651737a66086db01b2676c1927bbb8408c5f9cb42686d5959f00 + postcss: ^8.2.15 + checksum: 0d6cc604719d4a70569db77de75e60b3b7e9b99a4521879f6047d71325556e9f46d6bd13aecbbd857c35f075c503c1f8b1be442329fb8e9653c24cbf2fb42f3e languageName: node linkType: hard -"postcss-discard-overridden@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-discard-overridden@npm:6.0.2" +"postcss-discard-overridden@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-discard-overridden@npm:6.0.0" peerDependencies: - postcss: ^8.4.31 - checksum: a38e0fe7a36f83cb9b73c1ba9ee2a48cf93c69ec0ea5753935824ffb71e958e58ae0393171c0f3d0014a397469d09bbb0d56bb5ab80f0280722967e2e273aebb + postcss: ^8.2.15 + checksum: f2d244bb574cf2c0974c56a1af7131f3833e14515be99c68e6fa6fe82df47cb2c9befa413b9ec92f5f067567c682dc253980a0dede3cc697f6cc9135dfc17ec7 languageName: node linkType: hard @@ -41489,110 +47233,123 @@ __metadata: languageName: node linkType: hard -"postcss-merge-longhand@npm:^6.0.5": - version: 6.0.5 - resolution: "postcss-merge-longhand@npm:6.0.5" +"postcss-merge-longhand@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-merge-longhand@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 - stylehacks: ^6.1.1 + stylehacks: ^6.0.0 peerDependencies: - postcss: ^8.4.31 - checksum: 9ae5acf47dc0c1f494684ae55672d55bba7f5ee11c9c0f266aabd7c798e9f7394c6096363cd95685fd21ef088740389121a317772cf523ca22c915009bca2617 + postcss: ^8.2.15 + checksum: 86d1eda1b845cc7bc781a18db714d8e3ed639f673a7a9f416ecae8b8822235a87724e32d06477c707b40bc2ef96a16e87d831b89188354921791fce0de50103b languageName: node linkType: hard -"postcss-merge-rules@npm:^6.1.1": - version: 6.1.1 - resolution: "postcss-merge-rules@npm:6.1.1" +"postcss-merge-rules@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-merge-rules@npm:6.0.1" dependencies: - browserslist: ^4.23.0 + browserslist: ^4.21.4 caniuse-api: ^3.0.0 - cssnano-utils: ^4.0.2 - postcss-selector-parser: ^6.0.16 + cssnano-utils: ^4.0.0 + postcss-selector-parser: ^6.0.5 peerDependencies: - postcss: ^8.4.31 - checksum: 43f60a1c88806491cf752ae7871676de0e7a2a9d6d2fc6bc894068cc35a910a63d30f7c7d79545e0926c8b3a9ec583e5e8357203c40b5bad5ff58133b0c900f6 + postcss: ^8.2.15 + checksum: db003c820319181647806f087ead22598faffee745713026b5c8ea637936dc737a55fdc8d7631731879f49ba675a880dda174f21ae62c8f5aa4b0fda1a81f19a languageName: node linkType: hard -"postcss-minify-font-values@npm:^6.1.0": - version: 6.1.0 - resolution: "postcss-minify-font-values@npm:6.1.0" +"postcss-minify-font-values@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-minify-font-values@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 985e4dd2f89220a4442a822aad7dff016ab58a9dbb7bbca9d01c2d07d5a1e7d8c02e1c6e836abb4c9b4e825b4b80d99ee1f5899e74bf0d969095037738e6e452 + postcss: ^8.2.15 + checksum: 60de1e405a8849387714980d85f30c8e3df4b7b3083850086656ef50cdaf41605426373f28c0c43dcadfd1d78816b8e425571f12a024120dced1c7e8facb5073 languageName: node linkType: hard -"postcss-minify-gradients@npm:^6.0.3": - version: 6.0.3 - resolution: "postcss-minify-gradients@npm:6.0.3" +"postcss-minify-gradients@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-minify-gradients@npm:6.0.0" dependencies: - colord: ^2.9.3 - cssnano-utils: ^4.0.2 + colord: ^2.9.1 + cssnano-utils: ^4.0.0 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 89b95088c3830f829f6d4636d1be4d4f13300bf9f1577c48c25169c81e11ec0026760b9abb32112b95d2c622f09d3b737f4d2975a7842927ccb567e1002ef7b3 + postcss: ^8.2.15 + checksum: f2399211f78b88d122f4c7248cb2cc887b49304eb3315c7332c6216aec361113aca6fe0dac43289f70f0c3f25c97fb10cd74417aab5c2f5f51b64b1ef2c5af13 languageName: node linkType: hard -"postcss-minify-params@npm:^6.1.0": - version: 6.1.0 - resolution: "postcss-minify-params@npm:6.1.0" +"postcss-minify-params@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-minify-params@npm:6.0.0" dependencies: - browserslist: ^4.23.0 - cssnano-utils: ^4.0.2 + browserslist: ^4.21.4 + cssnano-utils: ^4.0.0 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 1e1cc3057d9bcc532c70e40628e96e3aea0081d8072dffe983a270a8cd59c03ac585e57d036b70e43d4ee725f274a05a6a8efac5a715f448284e115c13f82a46 + postcss: ^8.2.15 + checksum: 1cd9e372cfa27a9849f6994b03cc031534b519299bd1e392062b524405ba76906d23261ab5c0bb505289343c8ffb6a44414265f96a3e04a28181493eb032af01 languageName: node linkType: hard -"postcss-minify-selectors@npm:^6.0.4": - version: 6.0.4 - resolution: "postcss-minify-selectors@npm:6.0.4" +"postcss-minify-selectors@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-minify-selectors@npm:6.0.0" dependencies: - postcss-selector-parser: ^6.0.16 + postcss-selector-parser: ^6.0.5 peerDependencies: - postcss: ^8.4.31 - checksum: 150221a84422ca7627c67ee691ee51e0fe2c3583c8108801e9fc93d3be8b538c2eb04fcfdc908270d7eeaeaf01594a20b81311690a873efccb8a23aeafe1c354 + postcss: ^8.2.15 + checksum: 13ce0a1055fdc4571df8d289c4e5dac983e22ac9b449af2c1418ea536b9176a5354d1a487cc0047789f0981053263675d50c7db7cba99588ecb7ff0045fba818 languageName: node linkType: hard -"postcss-modules-extract-imports@npm:^3.1.0": - version: 3.1.0 - resolution: "postcss-modules-extract-imports@npm:3.1.0" +"postcss-modules-extract-imports@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-modules-extract-imports@npm:3.0.0" peerDependencies: postcss: ^8.1.0 - checksum: b9192e0f4fb3d19431558be6f8af7ca45fc92baaad9b2778d1732a5880cd25c3df2074ce5484ae491e224f0d21345ffc2d419bd51c25b019af76d7a7af88c17f + checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 languageName: node linkType: hard -"postcss-modules-local-by-default@npm:^4.0.5": - version: 4.0.5 - resolution: "postcss-modules-local-by-default@npm:4.0.5" +"postcss-modules-local-by-default@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules-local-by-default@npm:4.0.0" dependencies: icss-utils: ^5.0.0 postcss-selector-parser: ^6.0.2 postcss-value-parser: ^4.1.0 peerDependencies: postcss: ^8.1.0 - checksum: ca9b01f4a0a3dfb33e016299e2dfb7e85c3123292f7aec2efc0c6771b9955648598bfb4c1561f7ee9732fb27fb073681233661b32eef98baab43743f96735452 + checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d languageName: node linkType: hard -"postcss-modules-scope@npm:^3.2.0": - version: 3.2.0 - resolution: "postcss-modules-scope@npm:3.2.0" +"postcss-modules-local-by-default@npm:^4.0.3": + version: 4.0.3 + resolution: "postcss-modules-local-by-default@npm:4.0.3" + dependencies: + icss-utils: ^5.0.0 + postcss-selector-parser: ^6.0.2 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.1.0 + checksum: 2f8083687f3d6067885f8863dd32dbbb4f779cfcc7e52c17abede9311d84faf6d3ed8760e7c54c6380281732ae1f78e5e56a28baf3c271b33f450a11c9e30485 + languageName: node + linkType: hard + +"postcss-modules-scope@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-modules-scope@npm:3.0.0" dependencies: postcss-selector-parser: ^6.0.4 peerDependencies: postcss: ^8.1.0 - checksum: 2ffe7e98c1fa993192a39c8dd8ade93fc4f59fbd1336ce34fcedaee0ee3bafb29e2e23fb49189256895b30e4f21af661c6a6a16ef7b17ae2c859301e4a4459ae + checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 languageName: node linkType: hard @@ -41607,169 +47364,197 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-charset@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-normalize-charset@npm:6.0.2" +"postcss-modules@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules@npm:4.0.0" + dependencies: + generic-names: ^2.0.1 + icss-replace-symbols: ^1.1.0 + lodash.camelcase: ^4.3.0 + postcss-modules-extract-imports: ^3.0.0 + postcss-modules-local-by-default: ^4.0.0 + postcss-modules-scope: ^3.0.0 + postcss-modules-values: ^4.0.0 + string-hash: ^1.1.1 peerDependencies: - postcss: ^8.4.31 - checksum: 5b8aeb17d61578a8656571cd5d5eefa8d4ee7126a99a41fdd322078002a06f2ae96f649197b9c01067a5f3e38a2e4b03e0e3fda5a0ec9e3d7ad056211ce86156 + postcss: ^8.0.0 + checksum: 8f50c241718955b94807b1066a843fc8c9a356bd28db7f9c30ddcc7dcf0b6a61d7e41c6b41ed5d6d7cfc341891f150fc69d57387910256588bbbe5bfd4ff74d6 languageName: node linkType: hard -"postcss-normalize-display-values@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-normalize-display-values@npm:6.0.2" +"postcss-normalize-charset@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-charset@npm:6.0.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 186a94083f6d41dbda884bf915ff7fe9d9d19828c50dbf02a7e00c90673bec52e5962afd648220598c40940fb1ed5b93bc25697c395cd38ef30b6fd04e48580e + languageName: node + linkType: hard + +"postcss-normalize-display-values@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-display-values@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: da30a9394b0e4a269ccad8d240693a6cd564bcc60e24db67caee00f70ddfbc070ad76faed64c32e6eec9ed02e92565488b7879d4fd6c40d877c290eadbb0bb28 + postcss: ^8.2.15 + checksum: 4f8da7cf817e4c66004d3b2d88603aeadc7f9b55caca1bbba27f45e81ae8c65db8ff252488c8fd9ebb3e5c62f85e475131dcee9754346320453bc2b40865afd9 languageName: node linkType: hard -"postcss-normalize-positions@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-normalize-positions@npm:6.0.2" +"postcss-normalize-positions@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-positions@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 44fb77583fae4d71b76e38226cf770570876bcf5af6940dc9aeac7a7e2252896b361e0249044766cff8dad445f925378f06a005d6541597573c20e599a62b516 + postcss: ^8.2.15 + checksum: 34dedb07f906b28eb77c57be34899c5c694b81b91c6bfff1e6e9a251aa8f28fea0fdb35a7cdda0fc83e4248b078343a2d76e4485c3ef87f469b24332fa1788cd languageName: node linkType: hard -"postcss-normalize-repeat-style@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-normalize-repeat-style@npm:6.0.2" +"postcss-normalize-repeat-style@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-repeat-style@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: bebdac63bec6777ead3e265fc12527b261cf8d0da1b7f0abb12bda86fd53b7058e4afe392210ac74dac012e413bb1c2a46a1138c89f82b8bf70b81711f620f8c + postcss: ^8.2.15 + checksum: a53b994bb6594f5c48bd7083a46e6a47c1cf02843bcb864d37e7919c08a6f1d7dbbfee8a6abc2afb5d15554b667abc69d696b90d43066ceb97f835e6c8272098 languageName: node linkType: hard -"postcss-normalize-string@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-normalize-string@npm:6.0.2" +"postcss-normalize-string@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-string@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 5e8e253c528b542accafc142846fb33643c342a787c86e5b68c6287c7d8f63c5ae7d4d3fc28e3daf80821cc26a91add135e58bdd62ff9c735fca65d994898c7d + postcss: ^8.2.15 + checksum: 3d55f31ec0d008e7c8e8db0dc03e6e4f2cf8365f6578a0929b7098753c9db3c7de56a134d011fb3c9d8af8b004f0776169194cdfa25654af4919634cdb6ba7b0 languageName: node linkType: hard -"postcss-normalize-timing-functions@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-normalize-timing-functions@npm:6.0.2" +"postcss-normalize-timing-functions@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-timing-functions@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 1970f5aad04be11f99d51c59e27debb6fd7b49d0fa4a8879062b42c82113f8e520a284448727add3b54de85deefb8bd5fe554f618406586e9ad8fc9d060609f1 + postcss: ^8.2.15 + checksum: 67021374f8f18474788d8bc99d31af6a13efc5baf961c1e9f0c6b1e265fb21ac1ad56c489d988fcde9e0d049e9b62c8b0b350cc1e79d7d3bff9f00f7c97d6221 languageName: node linkType: hard -"postcss-normalize-unicode@npm:^6.1.0": - version: 6.1.0 - resolution: "postcss-normalize-unicode@npm:6.1.0" +"postcss-normalize-unicode@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-unicode@npm:6.0.0" dependencies: - browserslist: ^4.23.0 + browserslist: ^4.21.4 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 69ef35d06242061f0c504c128b83752e0f8daa30ebb26734de7d090460910be0b2efd8b17b1d64c3c85b95831a041faad9ad0aaba80e239406a79cfad3d63568 + postcss: ^8.2.15 + checksum: 0f246bf5511ae2294d8ec0decda6abee58c62e301a3a8f6542fa090bb426359caee156b96cc1e7f4b3a3f2cd9f62b410a446cf101e710d8fa71c704cfb057a5d languageName: node linkType: hard -"postcss-normalize-url@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-normalize-url@npm:6.0.2" +"postcss-normalize-url@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-url@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: bef51a18bbfee4fbf0381fec3c91e6c0dace36fca053bbd5f228e653d2732b6df3985525d79c4f7fc89f840ed07eb6d226e9d7503ecdc6f16d6d80cacae9df33 + postcss: ^8.2.15 + checksum: 93160c02e54c45cbe8ade7122bf34e25c41ac39656b2ddb15d342ce557efc17873fc6dd1439dd8d814152ebdfbba3ee2c16601d41b085ecaad73e6f2d037cd43 languageName: node linkType: hard -"postcss-normalize-whitespace@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-normalize-whitespace@npm:6.0.2" +"postcss-normalize-whitespace@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-normalize-whitespace@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: 6081eb3a4b305749eec02c00a95c2d236336a77ee636bb1d939f18d5dfa5ba82b7cf7fa072e83f9133d0bc984276596af3fe468bdd67c742ce69e9c63dbc218d + postcss: ^8.2.15 + checksum: 77940955fb0b47b46468a3e17bb9b86eb2f2c572649271a4db600b981f68c9c1ed71197b58d7a351c1b2d1aee2eb79b1e11b3021eb28604fd1a8d0ded21dfb2a languageName: node linkType: hard -"postcss-ordered-values@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-ordered-values@npm:6.0.2" +"postcss-ordered-values@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-ordered-values@npm:6.0.0" dependencies: - cssnano-utils: ^4.0.2 + cssnano-utils: ^4.0.0 postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: c3d96177b4ffa43754e835e30c40043cc75ab1e95eb6c55ac8723eb48c13a12e986250e63d96619bbbd1a098876a1c0c1b3b7a8e1de1108a009cf7aa0beac834 + postcss: ^8.2.15 + checksum: 162d60e9fd7d6717457194e943ba63ed6d149ae3b4f150324e65b485312be5d1c99ae140e47698e9f8943967c1575b65c922081263a8fa22a2489ed705eb0202 languageName: node linkType: hard -"postcss-reduce-initial@npm:^6.1.0": - version: 6.1.0 - resolution: "postcss-reduce-initial@npm:6.1.0" +"postcss-reduce-initial@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-reduce-initial@npm:6.0.0" dependencies: - browserslist: ^4.23.0 + browserslist: ^4.21.4 caniuse-api: ^3.0.0 peerDependencies: - postcss: ^8.4.31 - checksum: 39e4034ffbf62a041b66944c5cebc4b17f656e76b97568f7f6230b0b886479e5c75b02ae4ba48c472cb0bde47489f9ed1fe6110ae8cff0d7b7165f53c2d64a12 + postcss: ^8.2.15 + checksum: 988001da75b969733756d9cec9bb37cfae9a667c888c0394d8aa84af7fa6fe134cdd997b63d657900f72541310c5a396db3436367bf91908bc4c7f7ce965c511 languageName: node linkType: hard -"postcss-reduce-transforms@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-reduce-transforms@npm:6.0.2" +"postcss-reduce-transforms@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-reduce-transforms@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: - postcss: ^8.4.31 - checksum: c424cc554eb5d253b7687b64925a13fc16759f058795d223854f5a20d9bca641b5f25d0559d03287e63f07a4629c24ac78156adcf604483fcad3c51721da0a08 + postcss: ^8.2.15 + checksum: 17c27b1858897ee37a4f80af0d76c5ce895466392acac1ead75cbb71ac290ab57b209f47d5d205f6ea60c1697109f09531de005ef17d8826d545bbc02891351a languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.16, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.1.2 - resolution: "postcss-selector-parser@npm:6.1.2" +"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.5": + version: 6.0.13 + resolution: "postcss-selector-parser@npm:6.0.13" dependencies: cssesc: ^3.0.0 util-deprecate: ^1.0.2 - checksum: ce9440fc42a5419d103f4c7c1847cb75488f3ac9cbe81093b408ee9701193a509f664b4d10a2b4d82c694ee7495e022f8f482d254f92b7ffd9ed9dea696c6f84 + checksum: f89163338a1ce3b8ece8e9055cd5a3165e79a15e1c408e18de5ad8f87796b61ec2d48a2902d179ae0c4b5de10fccd3a325a4e660596549b040bc5ad1b465f096 languageName: node linkType: hard -"postcss-svgo@npm:^6.0.3": - version: 6.0.3 - resolution: "postcss-svgo@npm:6.0.3" +"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": + version: 6.0.10 + resolution: "postcss-selector-parser@npm:6.0.10" + dependencies: + cssesc: ^3.0.0 + util-deprecate: ^1.0.2 + checksum: 46afaa60e3d1998bd7adf6caa374baf857cc58d3ff944e29459c9a9e4680a7fe41597bd5b755fc81d7c388357e9bf67c0251d047c640a09f148e13606b8a8608 + languageName: node + linkType: hard + +"postcss-svgo@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-svgo@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 - svgo: ^3.2.0 + svgo: ^3.0.2 peerDependencies: - postcss: ^8.4.31 - checksum: 1a7d1c8dea555884a7791e28ec2c22ea92331731067584ff5a23042a0e615f88fefde04e1140f11c262a728ef9fab6851423b40b9c47f9ae05353bd3c0ff051a + postcss: ^8.2.15 + checksum: 14c68b7c275dbbbbf1f954e313ff812dacea88970165d7859c1683e2530ea51cd333372b8c0d440d4e9525768f34a8dab5f0846d3445bbb478a87a99f69e9abb languageName: node linkType: hard -"postcss-unique-selectors@npm:^6.0.4": - version: 6.0.4 - resolution: "postcss-unique-selectors@npm:6.0.4" +"postcss-unique-selectors@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-unique-selectors@npm:6.0.0" dependencies: - postcss-selector-parser: ^6.0.16 + postcss-selector-parser: ^6.0.5 peerDependencies: - postcss: ^8.4.31 - checksum: b09df9943b4e858e88b30f3d279ce867a0490df806f1f947d286b0a4e95ba923f1229c385e5bf365f4f124f1edccda41ec18ccad4ba8798d829279d6dc971203 + postcss: ^8.2.15 + checksum: 5fbfeaf796c6442853ce3afd03ae8c306fcb83b0b7ee59cbdc9aad57a1e601e65a2a5efd1e25edaa5c7c62e05d3795f357fe95933de0868a78a5d1d1f541be34 languageName: node linkType: hard @@ -41798,7 +47583,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.38": +"postcss@npm:8.4.38, postcss@npm:~8.4.32": version: 8.4.38 resolution: "postcss@npm:8.4.38" dependencies: @@ -41809,14 +47594,36 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.3.11, postcss@npm:^8.4.24, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.43, postcss@npm:^8.4.47, postcss@npm:~8.4.32": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" +"postcss@npm:^8.1.10": + version: 8.4.12 + resolution: "postcss@npm:8.4.12" + dependencies: + nanoid: ^3.3.1 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: 248e3d0f9bbb8efaafcfda7f91627a29bdc9a19f456896886330beb28c5abea0e14c7901b35191928602e2eccbed496b1e94097d27a0b2a980854cd00c7a835f + languageName: node + linkType: hard + +"postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.24": + version: 8.4.24 + resolution: "postcss@npm:8.4.24" + dependencies: + nanoid: ^3.3.6 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: 814e2126dacfea313588eda09cc99a9b4c26ec55c059188aa7a916d20d26d483483106dc5ff9e560731b59f45c5bb91b945dfadc670aed875cc90ddbbf4e787d + languageName: node + linkType: hard + +"postcss@npm:^8.4.38": + version: 8.4.41 + resolution: "postcss@npm:8.4.41" dependencies: nanoid: ^3.3.7 - picocolors: ^1.1.0 - source-map-js: ^1.2.1 - checksum: f78440a9d8f97431dd2ab1ab8e1de64f12f3eff38a3d8d4a33919b96c381046a314658d2de213a5fa5eb296b656de76a3ec269fdea27f16d5ab465b916a0f52c + picocolors: ^1.0.1 + source-map-js: ^1.2.0 + checksum: f865894929eb0f7fc2263811cc853c13b1c75103028b3f4f26df777e27b201f1abe21cb4aa4c2e901c80a04f6fb325ee22979688fe55a70e2ea82b0a517d3b6f languageName: node linkType: hard @@ -41862,7 +47669,7 @@ __metadata: languageName: node linkType: hard -"powerbi-client@npm:2.21.1": +"powerbi-client@npm:2.21.1, powerbi-client@npm:^2.21.1": version: 2.21.1 resolution: "powerbi-client@npm:2.21.1" dependencies: @@ -41874,22 +47681,10 @@ __metadata: languageName: node linkType: hard -"powerbi-client@npm:^2.21.1": - version: 2.23.1 - resolution: "powerbi-client@npm:2.23.1" - dependencies: - http-post-message: ^0.2 - powerbi-models: ^1.14.0 - powerbi-router: ^0.1 - window-post-message-proxy: ^0.2.7 - checksum: a8edc87f2470040cad875e7bba5b34e6670148a285cdb9e63fc60e7ce4ed7c0a91f886ed4e90203b0db4198f29f6689e98d7a54add4ccc3bb850793982e696ab - languageName: node - linkType: hard - -"powerbi-models@npm:^1.11.0, powerbi-models@npm:^1.14.0": - version: 1.15.2 - resolution: "powerbi-models@npm:1.15.2" - checksum: 91b674769b0d29beec51ccb2edb2abca527400ea884937ad8feee3dc27cfeb047464231524e934d29acf33b5ccf9ed9de2ffe03b16f6e6ef21e59134d5cf99d1 +"powerbi-models@npm:^1.11.0": + version: 1.11.0 + resolution: "powerbi-models@npm:1.11.0" + checksum: 0a3f3280a75c5daf45eaf1e59fa7e57dd03337da76a13fa37f6d13ea7945954f2d81d88a9dbc17eef324b149bb76fc9cf82390d75e714f629a85bfe99628a208 languageName: node linkType: hard @@ -41911,20 +47706,20 @@ __metadata: linkType: hard "preact-render-to-string@npm:^5.1.14": - version: 5.2.6 - resolution: "preact-render-to-string@npm:5.2.6" + version: 5.1.19 + resolution: "preact-render-to-string@npm:5.1.19" dependencies: pretty-format: ^3.8.0 peerDependencies: preact: ">=10" - checksum: be8d5d8fb502d422c503e68af7bcccb6facd942f3ae9a4d093ebe3f1d4f0b15c540624bdac434d53a2a8e8fb7afa4606383414e937c40933ca43445470a026ff + checksum: b8b454d7b4bd93d6dcfc5e1269cfef1756e850c524e80340be62b88582cb88eb926a3edc0088f4dc2a454f56c1e09faa10bced081f25204342fd338275aa5af1 languageName: node linkType: hard "preact@npm:^10.4.1": - version: 10.24.3 - resolution: "preact@npm:10.24.3" - checksum: 372f601576f52d6417a750a8732cd83c4fc133b0b136f82ea69f013092266ad0213c160b71ae421a0fc7ab04caacb651c29dbf515e3aec26d82b0a8675e8786e + version: 10.5.13 + resolution: "preact@npm:10.5.13" + checksum: afc22da600977935dd0c69c7b69f54d44cdf5d0bc50a6a1a47eafb55cce9c6bf126213b6e842f8079e7e6aca77ea763478eaba6ff75eb5bcb998273bc15b74d1 languageName: node linkType: hard @@ -41960,7 +47755,16 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.0.2, prettier@npm:^2.8.0": +"prettier@npm:^2.0.2": + version: 2.3.0 + resolution: "prettier@npm:2.3.0" + bin: + prettier: bin-prettier.js + checksum: e8851a45f60f2994775f96e07964646c299b8a8f9c64da4fbd8efafc20db3458bdcedac79aed34e1d5477540b3aa04f6499adc4979cb7937f8ebd058a767d8ff + languageName: node + linkType: hard + +"prettier@npm:^2.8.0": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: @@ -41986,18 +47790,6 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^24": - version: 24.9.0 - resolution: "pretty-format@npm:24.9.0" - dependencies: - "@jest/types": ^24.9.0 - ansi-regex: ^4.0.0 - ansi-styles: ^3.2.0 - react-is: ^16.8.4 - checksum: ba9291c8dafd50d2fea1fbad5d2863a6f94e0c8835cce9778ec03bc11bb0f52b9ed0e4ee56aaa331d022ccae2fe52b92f73465a0af58fd0edb59deb6391c6847 - languageName: node - linkType: hard - "pretty-format@npm:^26.5.2, pretty-format@npm:^26.6.2": version: 26.6.2 resolution: "pretty-format@npm:26.6.2" @@ -42010,7 +47802,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": +"pretty-format@npm:^27.0.0, pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" dependencies: @@ -42021,7 +47813,30 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": +"pretty-format@npm:^28.0.0": + version: 28.1.3 + resolution: "pretty-format@npm:28.1.3" + dependencies: + "@jest/schemas": ^28.1.3 + ansi-regex: ^5.0.1 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: e69f857358a3e03d271252d7524bec758c35e44680287f36c1cb905187fbc82da9981a6eb07edfd8a03bc3cbeebfa6f5234c13a3d5b59f2bbdf9b4c4053e0a7f + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0": + version: 29.5.0 + resolution: "pretty-format@npm:29.5.0" + dependencies: + "@jest/schemas": ^29.4.3 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 4065356b558e6db25b4d41a01efb386935a6c06a0c9c104ef5ce59f2f476b8210edb8b3949b386e60ada0a6dc5ebcb2e6ccddc8c64dfd1a9943c3c3a9e7eaf89 + languageName: node + linkType: hard + +"pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -42046,7 +47861,7 @@ __metadata: languageName: node linkType: hard -"printj@npm:~1.1.0": +"printj@npm:~1.1.0, printj@npm:~1.1.2": version: 1.1.2 resolution: "printj@npm:1.1.2" bin: @@ -42069,13 +47884,6 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^4.0.0, proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": - version: 4.2.0 - resolution: "proc-log@npm:4.2.0" - checksum: 98f6cd012d54b5334144c5255ecb941ee171744f45fca8b43b58ae5a0c1af07352475f481cadd9848e7f0250376ee584f6aa0951a856ff8f021bdfbff4eb33fc - languageName: node - linkType: hard - "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -42106,13 +47914,6 @@ __metadata: languageName: node linkType: hard -"promise-coalesce@npm:^1.1.2": - version: 1.1.2 - resolution: "promise-coalesce@npm:1.1.2" - checksum: 6f951b5db40ca78d09ad0f72adea0a2e9c5bdb0fc5b3ef218c611e2191c6ce2e9f752f815630fd07875dd1c9f04cc7327d6bada04b662dce986ce86ab88c2d5e - languageName: node - linkType: hard - "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" @@ -42157,7 +47958,17 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1, prompts@npm:^2.3.2, prompts@npm:^2.4.0, prompts@npm:^2.4.2": +"prompts@npm:^2.0.1, prompts@npm:^2.4.0": + version: 2.4.1 + resolution: "prompts@npm:2.4.1" + dependencies: + kleur: ^3.0.3 + sisteransi: ^1.0.5 + checksum: 05bf4865870665067b14fc54ced6c96e353f58f57658351e16bb8c12c017402582696fb42d97306b7c98efc0e2cc1ebf27ab573448d5a5da2ac18991cc9e4cad + languageName: node + linkType: hard + +"prompts@npm:^2.3.2, prompts@npm:^2.4.2": version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: @@ -42193,24 +48004,24 @@ __metadata: linkType: hard "proto3-json-serializer@npm:^1.0.0": - version: 1.1.1 - resolution: "proto3-json-serializer@npm:1.1.1" + version: 1.1.0 + resolution: "proto3-json-serializer@npm:1.1.0" dependencies: protobufjs: ^7.0.0 - checksum: 0cd94cb635a9b9b3a2d047700175be4a6c7b7a43e2698826edad17604793764bcdfc270585ea58cb94aa690211b6cdaae5bf7a22522bea68ca67a2844773b4b7 + checksum: a68f7102746a21e2fe6d7afdf89f47b94084a1165ca3062e284922ecca12f20a3ec911bc5f3fdb63fc0cfc9a0cff2b4396befb988c66061ae686d17ff0b6a9fd languageName: node linkType: hard -"protobufjs-cli@npm:1.1.1": - version: 1.1.1 - resolution: "protobufjs-cli@npm:1.1.1" +"protobufjs-cli@npm:1.0.2": + version: 1.0.2 + resolution: "protobufjs-cli@npm:1.0.2" dependencies: chalk: ^4.0.0 escodegen: ^1.13.0 espree: ^9.0.0 estraverse: ^5.1.0 glob: ^8.0.0 - jsdoc: ^4.0.0 + jsdoc: ^3.6.3 minimist: ^1.2.0 semver: ^7.1.2 tmp: ^0.2.1 @@ -42220,13 +48031,13 @@ __metadata: bin: pbjs: bin/pbjs pbts: bin/pbts - checksum: 124a2cb10d6fccdd6e8f2984b0f7d9a351d9c1efd17f237acd4a9e7c4b82d63265364b1c86bfa5c6a6fa17d7119182c4c323a8972c0078e1ac5c5f653d096f9b + checksum: 75dfa8bb76ea390c4f4926120439892fce6c730ec56960e85d5f03cac9c390fd7467d1254833542d722616ab4cb64a622e6de2fb7c75e7c42972878ae447b773 languageName: node linkType: hard -"protobufjs@npm:7.2.4": - version: 7.2.4 - resolution: "protobufjs@npm:7.2.4" +"protobufjs@npm:7.1.2, protobufjs@npm:^7.0.0": + version: 7.1.2 + resolution: "protobufjs@npm:7.1.2" dependencies: "@protobufjs/aspromise": ^1.1.2 "@protobufjs/base64": ^1.1.2 @@ -42240,13 +48051,13 @@ __metadata: "@protobufjs/utf8": ^1.1.0 "@types/node": ">=13.7.0" long: ^5.0.0 - checksum: a952cdf2a5e5250c16ae651b570849b6f5b20a5475c3eef63ffb290ad239aa2916adfc1cc676f7fc93c69f48113df268761c0c246f7f023118c85bdd1a170044 + checksum: ae41669b1b0372fb1d49f506f2d1f2b0fb3dc3cece85987b17bcb544e4cef7c8d27f480486cdec324146ad0a5d22a327166a7ea864a9b3e49cc3c92a5d3f6500 languageName: node linkType: hard -"protobufjs@npm:^7.0.0, protobufjs@npm:^7.2.5": - version: 7.4.0 - resolution: "protobufjs@npm:7.4.0" +"protobufjs@npm:^7.2.5": + version: 7.2.6 + resolution: "protobufjs@npm:7.2.6" dependencies: "@protobufjs/aspromise": ^1.1.2 "@protobufjs/base64": ^1.1.2 @@ -42260,7 +48071,7 @@ __metadata: "@protobufjs/utf8": ^1.1.0 "@types/node": ">=13.7.0" long: ^5.0.0 - checksum: ba0e6b60541bbf818bb148e90f5eb68bd99004e29a6034ad9895a381cbd352be8dce5376e47ae21b2e05559f2505b4a5f4a3c8fa62402822c6ab4dcdfb89ffb3 + checksum: 3c62e48f7d50017ac3b0dcd2a58e617cf858f9fba56a488bd48b9aa3482893a75540052dbcb3c12dfbaab42b1d04964611175faf06bdadcd33a4ebac982a511e languageName: node linkType: hard @@ -42334,10 +48145,17 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d +"pseudomap@npm:^1.0.1, pseudomap@npm:^1.0.2": + version: 1.0.2 + resolution: "pseudomap@npm:1.0.2" + checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 + languageName: node + linkType: hard + +"psl@npm:^1.1.28, psl@npm:^1.1.33": + version: 1.8.0 + resolution: "psl@npm:1.8.0" + checksum: 6150048ed2da3f919478bee8a82f3828303bc0fc730fb015a48f83c9977682c7b28c60ab01425a72d82a2891a1681627aa530a991d50c086b48a3be27744bde7 languageName: node linkType: hard @@ -42373,12 +48191,12 @@ __metadata: linkType: hard "pump@npm:^3.0.0": - version: 3.0.2 - resolution: "pump@npm:3.0.2" + version: 3.0.0 + resolution: "pump@npm:3.0.0" dependencies: end-of-stream: ^1.1.0 once: ^1.3.1 - checksum: e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f + checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 languageName: node linkType: hard @@ -42393,13 +48211,6 @@ __metadata: languageName: node linkType: hard -"punycode.js@npm:^2.3.1": - version: 2.3.1 - resolution: "punycode.js@npm:2.3.1" - checksum: 13466d7ed5e8dacdab8c4cc03837e7dd14218a59a40eb14a837f1f53ca396e18ef2c4ee6d7766b8ed2fc391d6a3ac489eebf2de83b3596f5a54e86df4a251b72 - languageName: node - linkType: hard - "punycode@npm:1.3.2": version: 1.3.2 resolution: "punycode@npm:1.3.2" @@ -42408,16 +48219,9 @@ __metadata: linkType: hard "punycode@npm:2.x.x, punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 - languageName: node - linkType: hard - -"punycode@npm:^1.3.2, punycode@npm:^1.4.1": - version: 1.4.1 - resolution: "punycode@npm:1.4.1" - checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 + version: 2.1.1 + resolution: "punycode@npm:2.1.1" + checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 languageName: node linkType: hard @@ -42440,13 +48244,22 @@ __metadata: linkType: hard "pure-rand@npm:^6.0.0": - version: 6.1.0 - resolution: "pure-rand@npm:6.1.0" - checksum: 8d53bc02bed99eca0b65b505090152ee7e9bd67dd74f8ff32ba1c883b87234067c5bf68d2614759fb217d82594d7a92919e6df80f97885e7b12b42af4bd3316a + version: 6.0.1 + resolution: "pure-rand@npm:6.0.1" + checksum: 4bb565399993b815658a72e359f574ce4f04827a42a905105d61163ae86f456d91595a0e4241e7bce04328fae0638ae70ac0428d93ecb55971c465bd084f8648 languageName: node linkType: hard -"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": +"pvtsutils@npm:^1.3.2": + version: 1.3.2 + resolution: "pvtsutils@npm:1.3.2" + dependencies: + tslib: ^2.4.0 + checksum: 9b8155611363e2f40276879f2454e60204b45be0cd0482f9373f369308a2e9c76d5d74cdf661a3f5aae8022d75ea159eb0ba38ee78fc782ee3051e4722db98d0 + languageName: node + linkType: hard + +"pvtsutils@npm:^1.3.5": version: 1.3.5 resolution: "pvtsutils@npm:1.3.5" dependencies: @@ -42471,6 +48284,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:6.10.4": + version: 6.10.4 + resolution: "qs@npm:6.10.4" + dependencies: + side-channel: ^1.0.4 + checksum: 31e4fedd759d01eae52dde6692abab175f9af3e639993c5caaa513a2a3607b34d8058d3ae52ceeccf37c3025f22ed5e90e9ddd6c2537e19c0562ddd10dc5b1eb + languageName: node + linkType: hard + "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -42489,12 +48311,37 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.13.0, qs@npm:^6.10.0, qs@npm:^6.11.0, qs@npm:^6.11.2, qs@npm:^6.12.3, qs@npm:^6.4.0, qs@npm:^6.5.1, qs@npm:^6.7.0, qs@npm:^6.9.4": - version: 6.13.0 - resolution: "qs@npm:6.13.0" +"qs@npm:^6.10.0, qs@npm:^6.4.0, qs@npm:^6.5.1, qs@npm:^6.9.4": + version: 6.10.3 + resolution: "qs@npm:6.10.3" + dependencies: + side-channel: ^1.0.4 + checksum: 0fac5e6c7191d0295a96d0e83c851aeb015df7e990e4d3b093897d3ac6c94e555dbd0a599739c84d7fa46d7fee282d94ba76943983935cf33bba6769539b8019 + languageName: node + linkType: hard + +"qs@npm:^6.11.0, qs@npm:^6.7.0": + version: 6.11.1 + resolution: "qs@npm:6.11.1" + dependencies: + side-channel: ^1.0.4 + checksum: 82ee78ef12a16f3372fae5b64f76f8aedecb000feea882bbff1af146c147f6eb66b08f9c3f34d7e076f28563586956318b9b2ca41141846cdd6d5ad6f241d52f + languageName: node + linkType: hard + +"qs@npm:^6.11.2": + version: 6.12.1 + resolution: "qs@npm:6.12.1" dependencies: side-channel: ^1.0.6 - checksum: e9404dc0fc2849245107108ce9ec2766cde3be1b271de0bf1021d049dc5b98d1a2901e67b431ac5509f865420a7ed80b7acb3980099fe1c118a1c5d2e1432ad8 + checksum: aa761d99e65b6936ba2dd2187f2d9976afbcda38deb3ff1b3fe331d09b0c578ed79ca2abdde1271164b5be619c521ec7db9b34c23f49a074e5921372d16242d5 + languageName: node + linkType: hard + +"qs@npm:~6.5.2": + version: 6.5.2 + resolution: "qs@npm:6.5.2" + checksum: 24af7b9928ba2141233fba2912876ff100403dba1b08b20c3b490da9ea6c636760445ea2211a079e7dfa882a5cf8f738337b3748c8bdd0f93358fa8881d2db8f languageName: node linkType: hard @@ -42520,9 +48367,9 @@ __metadata: linkType: hard "queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + version: 1.2.2 + resolution: "queue-microtask@npm:1.2.2" + checksum: 94a7906b4ef8b22c81f0c1fa37db3799496bcefb5edf8a53f60fe2f30d254c672c0f916cd9935d818bb4a52c99eeb431ecfb814a5b7eef780966f92b6eee9c55 languageName: node linkType: hard @@ -42549,6 +48396,19 @@ __metadata: languageName: node linkType: hard +"quote-stream@npm:^1.0.1": + version: 1.0.2 + resolution: "quote-stream@npm:1.0.2" + dependencies: + buffer-equal: 0.0.1 + minimist: ^1.1.3 + through2: ^2.0.0 + bin: + quote-stream: bin/cmd.js + checksum: 73a45ad41000eb23579ecf57d8e3a19795716e988d9279dc4de412f4cf90dd0c5dba792d8d0e65f6c627d3da4e7781104b41af44975614a0f5c94f666bf86468 + languageName: node + linkType: hard + "quoted-printable@npm:^1.0.0": version: 1.0.1 resolution: "quoted-printable@npm:1.0.1" @@ -42561,11 +48421,18 @@ __metadata: linkType: hard "r-json@npm:^1.1.0": - version: 1.3.0 - resolution: "r-json@npm:1.3.0" + version: 1.2.10 + resolution: "r-json@npm:1.2.10" + checksum: 8ecf97b5a5d53b96f5962aa485411c7e9e406f400e1ebeaf6549c5f88f4cc219b6863423c144c8d27fbf23d5ecb32d9b88795469a08d6f3e9b9ba6c249f3d070 + languageName: node + linkType: hard + +"raf@npm:^3.4.0": + version: 3.4.1 + resolution: "raf@npm:3.4.1" dependencies: - w-json: 1.3.10 - checksum: 9a2aa9b92a2f4b7932c7eb45175d9c7ff078e322eecaf1ca2c9cdda346ea68e73062004c1b3631a9127e84eedf982fc816110f0c7a1d07c6b2b3344f6d621791 + performance-now: ^2.1.0 + checksum: 50ba284e481c8185dbcf45fc4618ba3aec580bb50c9121385d5698cb6012fe516d2015b1df6dd407a7b7c58d44be8086108236affbce1861edd6b44637c8cd52 languageName: node linkType: hard @@ -42619,7 +48486,7 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.1": +"raw-body@npm:2.5.1, raw-body@npm:^2.2.0": version: 2.5.1 resolution: "raw-body@npm:2.5.1" dependencies: @@ -42631,7 +48498,7 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.2, raw-body@npm:^2.2.0": +"raw-body@npm:2.5.2": version: 2.5.2 resolution: "raw-body@npm:2.5.2" dependencies: @@ -42680,25 +48547,25 @@ __metadata: linkType: hard "react-animate-height@npm:^2.0.7": - version: 2.1.2 - resolution: "react-animate-height@npm:2.1.2" + version: 2.0.23 + resolution: "react-animate-height@npm:2.0.23" dependencies: classnames: ^2.2.5 prop-types: ^15.6.1 peerDependencies: react: ">=15.6.2" react-dom: ">=15.6.2" - checksum: 56f0db8a8a53a8e115cc9d38ce290aad4bb989e83b573a1b5a01d4b33bddf28810ae6b60cb95cd870fb11bf83eae3ef33ffd4bfd58c578e8c2a28b410e3e9885 + checksum: 280f504b38a98e06323981eaa7752f568d5f761b6d511e21625adc04b0b96222b3a20224c5af9146dff23fb834064437065f834b781ba9377243427a66f1553c languageName: node linkType: hard "react-animate-height@npm:^3.0.4": - version: 3.2.3 - resolution: "react-animate-height@npm:3.2.3" + version: 3.1.1 + resolution: "react-animate-height@npm:3.1.1" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 2289dd7df284d6323a1d06adea112ec3e0d43025ee7029eeccee6dbb05d058fcd6cc4fc9907729ca83466db7d191f68008df409f59cd3e21582846b056b5c8ec + checksum: 0f22eb1d9c2d2fd650a462da3db5aabcbde5f62a828053f953e17f7e65118c04acfb035408ce89ee48dc8289fcee8503c7a64e353e5e9568ea7659ab950497ec languageName: node linkType: hard @@ -42724,14 +48591,14 @@ __metadata: linkType: hard "react-copy-to-clipboard@npm:^5.0.1": - version: 5.1.0 - resolution: "react-copy-to-clipboard@npm:5.1.0" + version: 5.0.3 + resolution: "react-copy-to-clipboard@npm:5.0.3" dependencies: - copy-to-clipboard: ^3.3.1 - prop-types: ^15.8.1 + copy-to-clipboard: ^3 + prop-types: ^15.5.8 peerDependencies: - react: ^15.3.0 || 16 || 17 || 18 - checksum: f00a4551b9b63c944a041a6ab46af5ef20ba1106b3bc25173e7ef9bffbfba17a613368682ab8820cfe8d4b3acc5335cd9ce20229145bcc1e6aa8d1db04c512e5 + react: ^15.3.0 || ^16.0.0 || ^17.0.0 + checksum: b10d846ffa283d3de4cccc8e25927cb32d5ab8bf3d21586e1665459859653583971f7db6594176a807d42bce2a443c2c0a094b1657eb75cf04b95dfb64a22d84 languageName: node linkType: hard @@ -42766,6 +48633,16 @@ __metadata: languageName: node linkType: hard +"react-day-picker@npm:^8.3.5": + version: 8.6.0 + resolution: "react-day-picker@npm:8.6.0" + peerDependencies: + date-fns: ^2.28.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: f5bc2f9b093ddffc5e504b48c52ca6fccd9180bd63d77641312b0df80cdf5285d440b191d6379262798ab40926936144ca216f1c2a1fb78b998105f9e49c6379 + languageName: node + linkType: hard + "react-day-picker@npm:^8.7.1": version: 8.10.1 resolution: "react-day-picker@npm:8.10.1" @@ -42777,12 +48654,12 @@ __metadata: linkType: hard "react-devtools-core@npm:^5.0.0": - version: 5.3.2 - resolution: "react-devtools-core@npm:5.3.2" + version: 5.2.0 + resolution: "react-devtools-core@npm:5.2.0" dependencies: shell-quote: ^1.6.1 ws: ^7 - checksum: 8ae15b34f69ea16a0c6b9966c195aecf61981099409ddfe1950e1686cfae6717f93dc63285bd8f1094cc783de81c3d1e73285a82e774d2b289a17ede93d6589b + checksum: 9dbe3f38561fa187a1d518406546a52562cc374e4d2ec495f3a80bee5ed58a16be2e6dedda89d5844e8d981d9adba79fc1a04348a8c0f55c590ff8bf08d4a14f languageName: node linkType: hard @@ -42796,8 +48673,8 @@ __metadata: linkType: hard "react-docgen@npm:^7.0.0": - version: 7.1.0 - resolution: "react-docgen@npm:7.1.0" + version: 7.0.3 + resolution: "react-docgen@npm:7.0.3" dependencies: "@babel/core": ^7.18.9 "@babel/traverse": ^7.18.9 @@ -42809,7 +48686,7 @@ __metadata: doctrine: ^3.0.0 resolve: ^1.22.1 strip-indent: ^4.0.0 - checksum: dfdec82a4d695e8b1e31b77eef4ceac0f60e00f13725f0a18886d2737595531e58a54f4dde5db4657276d194597bd5e67a1792ca52eb42a59b67943105f24893 + checksum: f5dbabd16a25b3c424c4962df4b4073d03ca124c3a5c99871f8436e30468854de115f959d0d5f03df77ad8dbe54f21e679fb48ba47bc125d61ae527bc5bcf0bf languageName: node linkType: hard @@ -42870,13 +48747,13 @@ __metadata: linkType: hard "react-fast-compare@npm:^3.0.1": - version: 3.2.2 - resolution: "react-fast-compare@npm:3.2.2" - checksum: 2071415b4f76a3e6b55c84611c4d24dcb12ffc85811a2840b5a3f1ff2d1a99be1020d9437ee7c6e024c9f4cbb84ceb35e48cf84f28fcb00265ad2dfdd3947704 + version: 3.2.0 + resolution: "react-fast-compare@npm:3.2.0" + checksum: 8ef272c825ae329f61633ce4ce7f15aa5b84e5214d88bc0823880236e03e985a13195befa2c7a4eda7db3b017dc7985729152d88445823f652403cf36c2b86aa languageName: node linkType: hard -"react-focus-lock@npm:2.9.4": +"react-focus-lock@npm:2.9.4, react-focus-lock@npm:^2.9.1": version: 2.9.4 resolution: "react-focus-lock@npm:2.9.4" dependencies: @@ -42896,26 +48773,6 @@ __metadata: languageName: node linkType: hard -"react-focus-lock@npm:^2.9.1": - version: 2.13.2 - resolution: "react-focus-lock@npm:2.13.2" - dependencies: - "@babel/runtime": ^7.0.0 - focus-lock: ^1.3.5 - prop-types: ^15.6.2 - react-clientside-effect: ^1.2.6 - use-callback-ref: ^1.3.2 - use-sidecar: ^1.1.2 - peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 7ddc64f5987dca606460178efffc125ee6a357992965b72567bdde1976d618cef21bbdb0745b04d2b31367a5c61b4151271f43d493a0a6bd6978dd67b6b9d56a - languageName: node - linkType: hard - "react-hook-form@npm:7.43.3": version: 7.43.3 resolution: "react-hook-form@npm:7.43.3" @@ -42925,13 +48782,13 @@ __metadata: languageName: node linkType: hard -"react-hotkeys-hook@npm:^4.5.0": - version: 4.5.1 - resolution: "react-hotkeys-hook@npm:4.5.1" +"react-hotkeys-hook@npm:^4.4.1": + version: 4.5.0 + resolution: "react-hotkeys-hook@npm:4.5.0" peerDependencies: react: ">=16.8.1" react-dom: ">=16.8.1" - checksum: 106c78f9211cf327e2c85aa047be2c1b59477173e31da421c8ab045340247ae23a017910a5751bf4da2caf8d5da635c9119857041a39c0152cca0752ff12b814 + checksum: 38e331c729606ad427c852aa45bfa43fe6090c35bf7c98f202599680b81f2614d4a4f565c11c9f4cf41ccc497c1e8001fff0ad2d3a7af78a2cc8e251e30143e0 languageName: node linkType: hard @@ -43044,14 +48901,21 @@ __metadata: languageName: node linkType: hard -"react-is@npm:18.3.1, react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.2.0": +"react-is@npm:18.3.1": version: 18.3.1 resolution: "react-is@npm:18.3.1" checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.4, react-is@npm:^16.8.6": +"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0": + version: 18.0.0 + resolution: "react-is@npm:18.0.0" + checksum: d38f6afee4d8d791cdd69c715841c01a503c9b06da6158e0893447cea6ba50cd262dca9bde84127720cf44fd05c58185eafc32accace4bb2deb03b3cdbeb6b6b + languageName: node + linkType: hard + +"react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.6": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -43065,6 +48929,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^18.0.0, react-is@npm:^18.2.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e + languageName: node + linkType: hard + "react-keyed-flatten-children@npm:1.2.0": version: 1.2.0 resolution: "react-keyed-flatten-children@npm:1.2.0" @@ -43116,7 +48987,7 @@ __metadata: languageName: node linkType: hard -"react-modal@npm:3.15.1": +"react-modal@npm:3.15.1, react-modal@npm:^3.11.2": version: 3.15.1 resolution: "react-modal@npm:3.15.1" dependencies: @@ -43131,7 +49002,7 @@ __metadata: languageName: node linkType: hard -"react-modal@npm:^3.11.2, react-modal@npm:^3.16.1": +"react-modal@npm:^3.16.1": version: 3.16.1 resolution: "react-modal@npm:3.16.1" dependencies: @@ -43552,12 +49423,12 @@ __metadata: linkType: hard "react-onclickoutside@npm:^6.12.2": - version: 6.13.1 - resolution: "react-onclickoutside@npm:6.13.1" + version: 6.12.2 + resolution: "react-onclickoutside@npm:6.12.2" peerDependencies: react: ^15.5.x || ^16.x || ^17.x || ^18.x react-dom: ^15.5.x || ^16.x || ^17.x || ^18.x - checksum: 6c5727bfcd6e0ecc1fd83ac865a23382b7784aa54e3d0cb67520a53f9d02a1d312b9493d150fb8fa2f912b6cf4b23b228809c2513096ef6e53c7553162c048c7 + checksum: a0c7f4fbcf84e00d50b3fc18208e5fdc4e97b17daf910f176659e079038a560d2e299955804d20e6ca2bf375404d03fdb865dc7f5f85cab3e60b493be4375e77 languageName: node linkType: hard @@ -43584,7 +49455,7 @@ __metadata: languageName: node linkType: hard -"react-popper@npm:2.3.0, react-popper@npm:^2.2.3, react-popper@npm:^2.2.5, react-popper@npm:^2.3.0": +"react-popper@npm:2.3.0, react-popper@npm:^2.2.5, react-popper@npm:^2.3.0": version: 2.3.0 resolution: "react-popper@npm:2.3.0" dependencies: @@ -43598,6 +49469,19 @@ __metadata: languageName: node linkType: hard +"react-popper@npm:^2.2.3": + version: 2.2.5 + resolution: "react-popper@npm:2.2.5" + dependencies: + react-fast-compare: ^3.0.1 + warning: ^4.0.2 + peerDependencies: + "@popperjs/core": ^2.0.0 + react: ^16.8.0 || ^17 + checksum: 915fcf08e1da4fd48a200074fcdd936f601ee2173f1e730cfed8a54fd47716aa8bf9cce2392463e3bcbe64a096d0baf463809ed2874b94d3a9d430ae6d817b5d + languageName: node + linkType: hard + "react-refresh@npm:^0.14.0, react-refresh@npm:^0.14.2": version: 0.14.2 resolution: "react-refresh@npm:0.14.2" @@ -43606,8 +49490,8 @@ __metadata: linkType: hard "react-remove-scroll-bar@npm:^2.3.3, react-remove-scroll-bar@npm:^2.3.4": - version: 2.3.6 - resolution: "react-remove-scroll-bar@npm:2.3.6" + version: 2.3.4 + resolution: "react-remove-scroll-bar@npm:2.3.4" dependencies: react-style-singleton: ^2.2.1 tslib: ^2.0.0 @@ -43617,7 +49501,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: e793fe110e2ea60d5724d0b60f09de1f6cd1b080df00df9e68bb9a1b985895830e703194647059fdc22402a67a89b7673a5260773b89bcd98031fd99bc91aefa + checksum: b5ce5f2f98d65c97a3e975823ae4043a4ba2a3b63b5ba284b887e7853f051b5cd6afb74abde6d57b421931c52f2e1fdbb625dc858b1cb5a32c27c14ab85649d4 languageName: node linkType: hard @@ -43660,16 +49544,17 @@ __metadata: linkType: hard "react-resize-detector@npm:^6.6.3": - version: 6.7.8 - resolution: "react-resize-detector@npm:6.7.8" + version: 6.7.4 + resolution: "react-resize-detector@npm:6.7.4" dependencies: - "@types/resize-observer-browser": ^0.1.6 - lodash: ^4.17.21 + "@types/resize-observer-browser": ^0.1.5 + lodash.debounce: ^4.0.8 + lodash.throttle: ^4.1.1 resize-observer-polyfill: ^1.5.1 peerDependencies: react: ^16.0.0 || ^17.0.0 react-dom: ^16.0.0 || ^17.0.0 - checksum: dc8acbe216f70a60466d55d4f47c1468fecf074544a1e07234461b36eefed2b222f6e550c91e7ae02983e2842308d2a48ba8383029efb5d27ac749c48e3a09ae + checksum: 6b97ea8e610a4d4c196d9c55700d5b2cc54de1e2d87cd20e28351ce0896e8104277ccace836d8d9bac8d3dc967f876d143543d2ec0bea077ab9450a3d61db068 languageName: node linkType: hard @@ -43730,16 +49615,17 @@ __metadata: linkType: hard "react-smooth@npm:^2.0.0": - version: 2.0.5 - resolution: "react-smooth@npm:2.0.5" + version: 2.0.0 + resolution: "react-smooth@npm:2.0.0" dependencies: - fast-equals: ^5.0.0 + fast-equals: ^2.0.0 + raf: ^3.4.0 react-transition-group: 2.9.0 peerDependencies: prop-types: ^15.6.0 - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 914c17f741e8b533ff6e3d5e3285aea0625cdd0f98e04202d01351f9516dbdc0a0e297dc22cc2377d6916fb819da8d4ed999c0314a4c186592ca51870012e6f7 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 4eff3fb93067b538e046df2c56a2f99b25f4c3a2aafc1c59707d1a0150f7f0afab408afdc1a47ffa3556adbdb5c915d6035a9a28da878e68771dce7568cc6f69 languageName: node linkType: hard @@ -43852,8 +49738,8 @@ __metadata: linkType: hard "react-transition-group@npm:^4.3.0, react-transition-group@npm:^4.4.1": - version: 4.4.5 - resolution: "react-transition-group@npm:4.4.5" + version: 4.4.1 + resolution: "react-transition-group@npm:4.4.1" dependencies: "@babel/runtime": ^7.5.5 dom-helpers: ^5.0.1 @@ -43862,7 +49748,7 @@ __metadata: peerDependencies: react: ">=16.6.0" react-dom: ">=16.6.0" - checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1 + checksum: 0bcd8af483709832e318dcef84c26ebddeb866bf4f58010286367ef0c1e7c5106e00cfc65688b9102414cb3d572c63909c2eb7ea972b4420fc70a78c10b6e8ad languageName: node linkType: hard @@ -44025,7 +49911,22 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.5, readable-stream@npm:~2.3.3, readable-stream@npm:~2.3.6": + version: 2.3.7 + resolution: "readable-stream@npm:2.3.7" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.3 + isarray: ~1.0.0 + process-nextick-args: ~2.0.0 + safe-buffer: ~5.1.1 + string_decoder: ~1.1.1 + util-deprecate: ~1.0.1 + checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 + languageName: node + linkType: hard + +"readable-stream@npm:^2.3.8": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -44040,7 +49941,18 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": +"readable-stream@npm:^3.0.0, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": + version: 3.6.0 + resolution: "readable-stream@npm:3.6.0" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 + languageName: node + linkType: hard + +"readable-stream@npm:^3.0.6": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -44064,6 +49976,15 @@ __metadata: languageName: node linkType: hard +"readdir-glob@npm:^1.0.0": + version: 1.1.1 + resolution: "readdir-glob@npm:1.1.1" + dependencies: + minimatch: ^3.0.4 + checksum: 8dc4ff606aa9ac8f6ac628dfad918aed6514c8b427922928f2ef380a1be106d5b6f1d106af34607955ad504f89f39d83a9b42c5316ed8b96b5f75391e33a6afc + languageName: node + linkType: hard + "readdir-glob@npm:^1.1.2": version: 1.1.3 resolution: "readdir-glob@npm:1.1.3" @@ -44085,10 +50006,12 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:^4.0.1": - version: 4.0.2 - resolution: "readdirp@npm:4.0.2" - checksum: 309376e717f94fb7eb61bec21e2603243a9e2420cd2e9bf94ddf026aefea0d7377ed1a62f016d33265682e44908049a55c3cfc2307450a1421654ea008489b39 +"readdirp@npm:~3.5.0": + version: 3.5.0 + resolution: "readdirp@npm:3.5.0" + dependencies: + picomatch: ^2.2.1 + checksum: 6b1a9341e295e15d4fb40c010216cbcb6266587cd0b3ce7defabd66fa1b4e35f9fba3d64c2187fd38fadd01ccbfc5f1b33fdfb1da63b3cbf66224b7c6d75ce5a languageName: node linkType: hard @@ -44158,14 +50081,14 @@ __metadata: linkType: hard "recast@npm:^0.20.4": - version: 0.20.5 - resolution: "recast@npm:0.20.5" + version: 0.20.4 + resolution: "recast@npm:0.20.4" dependencies: ast-types: 0.14.2 esprima: ~4.0.0 source-map: ~0.6.1 tslib: ^2.0.1 - checksum: 14c35115cd9965950724cb2968f069a247fa79ce890643ab6dc3795c705b363f7b92a45238e9f765387c306763be9955f72047bb9d15b5d60b0a55f9e7912d5a + checksum: d858095cbd89908e401c5f51734c410a3a80b7dfcc099fe2e4b1ec4cf8b6f046d24830628edad5047cc3ff3cbed9828dc90271a81f5a243a4722d0a8078e6d57 languageName: node linkType: hard @@ -44182,15 +50105,15 @@ __metadata: linkType: hard "recast@npm:^0.23.1": - version: 0.23.9 - resolution: "recast@npm:0.23.9" + version: 0.23.2 + resolution: "recast@npm:0.23.2" dependencies: + assert: ^2.0.0 ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 - tiny-invariant: ^1.3.3 tslib: ^2.0.1 - checksum: be8e896a46b24e30fbeafcd111ff3beaf2b5532d241c199f833fe1c18e89f695b2704cf83f3006fa96a785851019031de0de50bd3e0fd7bb114be18bf2cad900 + checksum: 04c2617cb04c4d02a5c9e1bb75b8e7afc21d1ba7babce25303732f035c3d4b2f945d727f34c3976223d800592ea31e6641cfd33700a8699c02025040174af0b6 languageName: node linkType: hard @@ -44344,20 +50267,13 @@ __metadata: languageName: node linkType: hard -"reflect-metadata@npm:0.1.13": +"reflect-metadata@npm:0.1.13, reflect-metadata@npm:^0.1.13": version: 0.1.13 resolution: "reflect-metadata@npm:0.1.13" checksum: 798d379a7b6f6455501145419505c97dd11cbc23857a386add2b9ef15963ccf15a48d9d15507afe01d4cd74116df8a213247200bac00320bd7c11ddeaa5e8fb4 languageName: node linkType: hard -"reflect-metadata@npm:^0.1.13": - version: 0.1.14 - resolution: "reflect-metadata@npm:0.1.14" - checksum: 155ad339319cec3c2d9d84719f730f8b6a6cd2a074733ec29dbae6c89d48a2914c7d07a2350212594f3aae160fa4da4f903e6512f27ceaf968443a7c692bcad0 - languageName: node - linkType: hard - "reflect.getprototypeof@npm:^1.0.4": version: 1.0.6 resolution: "reflect.getprototypeof@npm:1.0.6" @@ -44380,12 +50296,21 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.2.0": - version: 10.2.0 - resolution: "regenerate-unicode-properties@npm:10.2.0" +"regenerate-unicode-properties@npm:^10.0.1": + version: 10.0.1 + resolution: "regenerate-unicode-properties@npm:10.0.1" + dependencies: + regenerate: ^1.4.2 + checksum: 1b638b7087d8143e5be3e20e2cda197ea0440fa0bc2cc49646b2f50c5a2b1acdc54b21e4215805a5a2dd487c686b2291accd5ad00619534098d2667e76247754 + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.1.0": + version: 10.1.0 + resolution: "regenerate-unicode-properties@npm:10.1.0" dependencies: regenerate: ^1.4.2 - checksum: d5c5fc13f8b8d7e16e791637a4bfef741f8d70e267d51845ee7d5404a32fa14c75b181c4efba33e4bff8b0000a2f13e9773593713dfe5b66597df4259275ce63 + checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 languageName: node linkType: hard @@ -44396,7 +50321,7 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:0.13.7": +"regenerator-runtime@npm:0.13.7, regenerator-runtime@npm:^0.13.4": version: 0.13.7 resolution: "regenerator-runtime@npm:0.13.7" checksum: 52b66e6669152c0b1bccd95c8e11aabbfe67bb97bdf00e223bdf723b0f0052d4da5c02001d4c4bef576bdc5bcdc38a20496d1b5363b65c950c8434ed5071d9e0 @@ -44410,7 +50335,7 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.2": +"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.2": version: 0.13.11 resolution: "regenerator-runtime@npm:0.13.11" checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 @@ -44418,9 +50343,18 @@ __metadata: linkType: hard "regenerator-runtime@npm:^0.14.0": - version: 0.14.1 - resolution: "regenerator-runtime@npm:0.14.1" - checksum: 9f57c93277b5585d3c83b0cf76be47b473ae8c6d9142a46ce8b0291a04bb2cf902059f0f8445dcabb3fb7378e5fe4bb4ea1e008876343d42e46d3b484534ce38 + version: 0.14.0 + resolution: "regenerator-runtime@npm:0.14.0" + checksum: 1c977ad82a82a4412e4f639d65d22be376d3ebdd30da2c003eeafdaaacd03fc00c2320f18120007ee700900979284fc78a9f00da7fb593f6e6eeebc673fba9a3 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.1": + version: 0.15.1 + resolution: "regenerator-transform@npm:0.15.1" + dependencies: + "@babel/runtime": ^7.8.4 + checksum: 2d15bdeadbbfb1d12c93f5775493d85874dbe1d405bec323da5c61ec6e701bc9eea36167483e1a5e752de9b2df59ab9a2dfff6bf3784f2b28af2279a673d29a4 languageName: node linkType: hard @@ -44440,47 +50374,94 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.3.0, regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": - version: 1.5.3 - resolution: "regexp.prototype.flags@npm:1.5.3" +"regexp.prototype.flags@npm:^1.3.0, regexp.prototype.flags@npm:^1.4.3": + version: 1.4.3 + resolution: "regexp.prototype.flags@npm:1.4.3" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.2 + define-properties: ^1.1.3 + functions-have-names: ^1.2.2 + checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.0": + version: 1.5.1 + resolution: "regexp.prototype.flags@npm:1.5.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + set-function-name: ^2.0.0 + checksum: 869edff00288442f8d7fa4c9327f91d85f3b3acf8cbbef9ea7a220345cf23e9241b6def9263d2c1ebcf3a316b0aa52ad26a43a84aa02baca3381717b3e307f47 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" + dependencies: + call-bind: ^1.0.6 define-properties: ^1.2.1 es-errors: ^1.3.0 - set-function-name: ^2.0.2 - checksum: 83ff0705b837f7cb6d664010a11642250f36d3f642263dd0f3bdfe8f150261aa7b26b50ee97f21c1da30ef82a580bb5afedbef5f45639d69edaafbeac9bbb0ed + set-function-name: ^2.0.1 + checksum: d7f333667d5c564e2d7a97c56c3075d64c722c9bb51b2b4df6822b2e8096d623a5e63088fb4c83df919b6951ef8113841de8b47de7224872fa6838bc5d8a7d64 languageName: node linkType: hard -"regexpu-core@npm:^6.1.1": - version: 6.1.1 - resolution: "regexpu-core@npm:6.1.1" +"regexpu-core@npm:^5.0.1": + version: 5.0.1 + resolution: "regexpu-core@npm:5.0.1" + dependencies: + regenerate: ^1.4.2 + regenerate-unicode-properties: ^10.0.1 + regjsgen: ^0.6.0 + regjsparser: ^0.8.2 + unicode-match-property-ecmascript: ^2.0.0 + unicode-match-property-value-ecmascript: ^2.0.0 + checksum: 6151a9700dad512fadb5564ad23246d54c880eb9417efa5e5c3658b910c1ff894d622dfd159af2ed527ffd44751bfe98682ae06c717155c254d8e2b4bab62785 + languageName: node + linkType: hard + +"regexpu-core@npm:^5.3.1": + version: 5.3.2 + resolution: "regexpu-core@npm:5.3.2" dependencies: + "@babel/regjsgen": ^0.8.0 regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.2.0 - regjsgen: ^0.8.0 - regjsparser: ^0.11.0 + regenerate-unicode-properties: ^10.1.0 + regjsparser: ^0.9.1 unicode-match-property-ecmascript: ^2.0.0 unicode-match-property-value-ecmascript: ^2.1.0 - checksum: ed8e3784e81b816b237313688f28b4695d30d4e0f823dfdf130fd4313c629ac6ec67650563867a6ca9a2435f33e79f3a5001c651aee52791e346213a948de0ff + checksum: 95bb97088419f5396e07769b7de96f995f58137ad75fac5811fb5fe53737766dfff35d66a0ee66babb1eb55386ef981feaef392f9df6d671f3c124812ba24da2 languageName: node linkType: hard -"regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "regjsgen@npm:0.8.0" - checksum: a1d925ff14a4b2be774e45775ee6b33b256f89c42d480e6d85152d2133f18bd3d6af662161b226fa57466f7efec367eaf7ccd2a58c0ec2a1306667ba2ad07b0d +"regjsgen@npm:^0.6.0": + version: 0.6.0 + resolution: "regjsgen@npm:0.6.0" + checksum: c5158ebd735e75074e41292ade1ff05d85566d205426cc61501e360c450a63baced8512ee3ae238e5c0a0e42969563c7875b08fa69d6f0402daf36bcb3e4d348 languageName: node linkType: hard -"regjsparser@npm:^0.11.0": - version: 0.11.1 - resolution: "regjsparser@npm:0.11.1" +"regjsparser@npm:^0.8.2": + version: 0.8.4 + resolution: "regjsparser@npm:0.8.4" + dependencies: + jsesc: ~0.5.0 + bin: + regjsparser: bin/parser + checksum: d069b932491761cda127ce11f6bd2729c3b1b394a35200ec33f1199e937423db28ceb86cf33f0a97c76ecd7c0f8db996476579eaf0d80a1f74c1934f4ca8b27a + languageName: node + linkType: hard + +"regjsparser@npm:^0.9.1": + version: 0.9.1 + resolution: "regjsparser@npm:0.9.1" dependencies: - jsesc: ~3.0.2 + jsesc: ~0.5.0 bin: regjsparser: bin/parser - checksum: 231d60810ca12a760393d65d149aa9501ea28b02c27a61c551b4f9162fe3cf48b289423515b73b1aea52949346e78c76cd552ac7169817d31f34df348db90fb4 + checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc languageName: node linkType: hard @@ -44591,13 +50572,13 @@ __metadata: linkType: hard "remark-slug@npm:^6.0.0": - version: 6.1.0 - resolution: "remark-slug@npm:6.1.0" + version: 6.0.0 + resolution: "remark-slug@npm:6.0.0" dependencies: github-slugger: ^1.0.0 mdast-util-to-string: ^1.0.0 unist-util-visit: ^2.0.0 - checksum: 81fff0dcfaf6d6117ef1293bb1d26c3e25483d99c65c22434298eed93583a89ea5d7b94063d9a7f47c0647a708ce84f00ff62d274503f248feec03c344cabb20 + checksum: d85614a0fdd7a6023f5ffae90411532d6715321153b02aab02f5d0165e116edb9719f78b207bfd74934aca6645ed551c42368a7efb6fc3b07d2bda15fe8602fb languageName: node linkType: hard @@ -44667,6 +50648,34 @@ __metadata: languageName: node linkType: hard +"request@npm:^2.87.0": + version: 2.88.2 + resolution: "request@npm:2.88.2" + dependencies: + aws-sign2: ~0.7.0 + aws4: ^1.8.0 + caseless: ~0.12.0 + combined-stream: ~1.0.6 + extend: ~3.0.2 + forever-agent: ~0.6.1 + form-data: ~2.3.2 + har-validator: ~5.1.3 + http-signature: ~1.2.0 + is-typedarray: ~1.0.0 + isstream: ~0.1.2 + json-stringify-safe: ~5.0.1 + mime-types: ~2.1.19 + oauth-sign: ~0.9.0 + performance-now: ^2.1.0 + qs: ~6.5.2 + safe-buffer: ^5.1.2 + tough-cookie: ~2.5.0 + tunnel-agent: ^0.6.0 + uuid: ^3.3.2 + checksum: 4e112c087f6eabe7327869da2417e9d28fcd0910419edd2eb17b6acfc4bfa1dad61954525949c228705805882d8a98a86a0ea12d7f739c01ee92af7062996983 + languageName: node + linkType: hard + "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -44804,27 +50813,13 @@ __metadata: languageName: node linkType: hard -"resolve-workspace-root@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve-workspace-root@npm:2.0.0" - checksum: c7222391a35ecb3514fa04d753334a86f984d8ffe06ce87506582c4c5671ac608273b8f5e6faa2055be6e196785bf751ede9a48d484de53889d721b814c097ab - languageName: node - linkType: hard - -"resolve.exports@npm:1.1.0": +"resolve.exports@npm:1.1.0, resolve.exports@npm:^1.1.0": version: 1.1.0 resolution: "resolve.exports@npm:1.1.0" checksum: 52865af8edb088f6c7759a328584a5de6b226754f004b742523adcfe398cfbc4559515104bc2ae87b8e78b1e4de46c9baec400b3fb1f7d517b86d2d48a098a2d languageName: node linkType: hard -"resolve.exports@npm:^1.1.0": - version: 1.1.1 - resolution: "resolve.exports@npm:1.1.1" - checksum: 485aa10082eb388a569d696e17ad7b16f4186efc97dd34eadd029d95b811f21ffee13b1b733198bb4584dbb3cb296aa6f141835221fb7613b9606b84f1386655 - languageName: node - linkType: hard - "resolve.exports@npm:^2.0.0, resolve.exports@npm:^2.0.2": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" @@ -44832,7 +50827,46 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8": +"resolve@npm:^1.1.5, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0": + version: 1.22.0 + resolution: "resolve@npm:1.22.0" + dependencies: + is-core-module: ^2.8.1 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: a2d14cc437b3a23996f8c7367eee5c7cf8149c586b07ca2ae00e96581ce59455555a1190be9aa92154785cf9f2042646c200d0e00e0bbd2b8a995a93a0ed3e4e + languageName: node + linkType: hard + +"resolve@npm:^1.1.7, resolve@npm:^1.22.1": + version: 1.22.3 + resolution: "resolve@npm:1.22.3" + dependencies: + is-core-module: ^2.12.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 + languageName: node + linkType: hard + +"resolve@npm:^1.19.0": + version: 1.22.4 + resolution: "resolve@npm:1.22.4" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124 + languageName: node + linkType: hard + +"resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -44845,7 +50879,20 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^2.0.0-next.4, resolve@npm:^2.0.0-next.5": +"resolve@npm:^2.0.0-next.4": + version: 2.0.0-next.4 + resolution: "resolve@npm:2.0.0-next.4" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: c438ac9a650f2030fd074219d7f12ceb983b475da2d89ad3d6dd05fbf6b7a0a8cd37d4d10b43cb1f632bc19f22246ab7f36ebda54d84a29bfb2910a0680906d3 + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.5": version: 2.0.0-next.5 resolution: "resolve@npm:2.0.0-next.5" dependencies: @@ -44867,7 +50914,46 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.7#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.4#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.8#~builtin<compat/resolve>": +"resolve@patch:resolve@^1.1.5#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>": + version: 1.22.0 + resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin<compat/resolve>::version=1.22.0&hash=07638b" + dependencies: + is-core-module: ^2.8.1 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: c79ecaea36c872ee4a79e3db0d3d4160b593f2ca16e031d8283735acd01715a203607e9ded3f91f68899c2937fa0d49390cddbe0fb2852629212f3cda283f4a7 + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.1.7#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>": + version: 1.22.3 + resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin<compat/resolve>::version=1.22.3&hash=07638b" + dependencies: + is-core-module: ^2.12.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>": + version: 1.22.4 + resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin<compat/resolve>::version=1.22.4&hash=07638b" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.22.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.4#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.8#~builtin<compat/resolve>": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin<compat/resolve>::version=1.22.8&hash=07638b" dependencies: @@ -44880,7 +50966,20 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^2.0.0-next.4#~builtin<compat/resolve>, resolve@patch:resolve@^2.0.0-next.5#~builtin<compat/resolve>": +"resolve@patch:resolve@^2.0.0-next.4#~builtin<compat/resolve>": + version: 2.0.0-next.4 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin<compat/resolve>::version=2.0.0-next.4&hash=07638b" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 4bf9f4f8a458607af90518ff73c67a4bc1a38b5a23fef2bb0ccbd45e8be89820a1639b637b0ba377eb2be9eedfb1739a84cde24fe4cd670c8207d8fea922b011 + languageName: node + linkType: hard + +"resolve@patch:resolve@^2.0.0-next.5#~builtin<compat/resolve>": version: 2.0.0-next.5 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#~builtin<compat/resolve>::version=2.0.0-next.5&hash=07638b" dependencies: @@ -44910,11 +51009,11 @@ __metadata: linkType: hard "responselike@npm:^2.0.0": - version: 2.0.1 - resolution: "responselike@npm:2.0.1" + version: 2.0.0 + resolution: "responselike@npm:2.0.0" dependencies: lowercase-keys: ^2.0.0 - checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a + checksum: 6a4d32c37d4e88678ae0a9d69fcc90aafa15b1a3eab455bd65c06af3c6c4976afc47d07a0e5a60d277ab041a465f43bf0a581e0d7ab33786e7a7741573f2e487 languageName: node linkType: hard @@ -44956,9 +51055,9 @@ __metadata: linkType: hard "restructure@npm:^3.0.0": - version: 3.0.2 - resolution: "restructure@npm:3.0.2" - checksum: f1c45d249fe1c5d43286bd0d209fefe3db556726c3eb8eb648116757e065a6f0dba2b80bf62bcc5a7681dfe888b6ace1bb6e446ab1535eb5ca7b257207ebc817 + version: 3.0.0 + resolution: "restructure@npm:3.0.0" + checksum: 4525b5414ec0f2dc4ad66b5fbcebbc2f49e7ad778c30ce45b8b8f776af67e2c0752eb309748d7a597add6fc064e688df2662c834ffeaaea580af6d43087dc7d3 languageName: node linkType: hard @@ -45008,13 +51107,13 @@ __metadata: linkType: hard "rfdc@npm:^1.3.0": - version: 1.4.1 - resolution: "rfdc@npm:1.4.1" - checksum: 3b05bd55062c1d78aaabfcea43840cdf7e12099968f368e9a4c3936beb744adb41cbdb315eac6d4d8c6623005d6f87fdf16d8a10e1ff3722e84afea7281c8d13 + version: 1.3.0 + resolution: "rfdc@npm:1.3.0" + checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 languageName: node linkType: hard -"rimraf@npm:^2.6.1, rimraf@npm:^2.7.1": +"rimraf@npm:^2.6.1, rimraf@npm:^2.6.2, rimraf@npm:^2.7.1": version: 2.7.1 resolution: "rimraf@npm:2.7.1" dependencies: @@ -45025,7 +51124,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -45036,6 +51135,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:~2.4.0": + version: 2.4.5 + resolution: "rimraf@npm:2.4.5" + dependencies: + glob: ^6.0.1 + bin: + rimraf: ./bin.js + checksum: 036793b4055d65344ad7bea73c3f4095640af7455478fe56c19783619463e6bb4374ab3556b9e6d4d6d3dd210eb677b0955ece38813e734c294fd2687201151d + languageName: node + linkType: hard + "rimraf@npm:~2.6.2": version: 2.6.3 resolution: "rimraf@npm:2.6.3" @@ -45057,69 +51167,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.20.0": - version: 4.24.0 - resolution: "rollup@npm:4.24.0" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.24.0 - "@rollup/rollup-android-arm64": 4.24.0 - "@rollup/rollup-darwin-arm64": 4.24.0 - "@rollup/rollup-darwin-x64": 4.24.0 - "@rollup/rollup-linux-arm-gnueabihf": 4.24.0 - "@rollup/rollup-linux-arm-musleabihf": 4.24.0 - "@rollup/rollup-linux-arm64-gnu": 4.24.0 - "@rollup/rollup-linux-arm64-musl": 4.24.0 - "@rollup/rollup-linux-powerpc64le-gnu": 4.24.0 - "@rollup/rollup-linux-riscv64-gnu": 4.24.0 - "@rollup/rollup-linux-s390x-gnu": 4.24.0 - "@rollup/rollup-linux-x64-gnu": 4.24.0 - "@rollup/rollup-linux-x64-musl": 4.24.0 - "@rollup/rollup-win32-arm64-msvc": 4.24.0 - "@rollup/rollup-win32-ia32-msvc": 4.24.0 - "@rollup/rollup-win32-x64-msvc": 4.24.0 - "@types/estree": 1.0.6 - fsevents: ~2.3.2 - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: b7e915b0cc43749c2c71255ff58858496460b1a75148db2abecc8e9496af83f488517768593826715f610e20e480a5ae7f1132a1408eb1d364830d6b239325cf - languageName: node - linkType: hard - "rosetta@npm:1.0.0": version: 1.0.0 resolution: "rosetta@npm:1.0.0" @@ -45137,12 +51184,21 @@ __metadata: languageName: node linkType: hard -"rtl-css-js@npm:^1.16.1": - version: 1.16.1 - resolution: "rtl-css-js@npm:1.16.1" +"rtl-css-js@npm:^1.14.0": + version: 1.14.0 + resolution: "rtl-css-js@npm:1.14.0" dependencies: "@babel/runtime": ^7.1.2 - checksum: 7d9ab942098eee565784ccf957f6b7dfa78ea1eec7c6bffedc6641575d274189e90752537c7bdba1f43ae6534648144f467fd6d581527455ba626a4300e62c7a + checksum: 46e7f52058d7ac2dc7a6271f6858ce2e05f64be4d6a3eae712b52bf29c4de97fda8e30490c425bed620db87cc0b8a3ab4a457489ab0dba0868724bac27e6f893 + languageName: node + linkType: hard + +"run-applescript@npm:^5.0.0": + version: 5.0.0 + resolution: "run-applescript@npm:5.0.0" + dependencies: + execa: ^5.0.0 + checksum: d00c2dbfa5b2d774de7451194b8b125f40f65fc183de7d9dcae97f57f59433586d3c39b9001e111c38bfa24c3436c99df1bb4066a2a0c90d39a8c4cd6889af77 languageName: node linkType: hard @@ -45163,9 +51219,9 @@ __metadata: linkType: hard "runtypes@npm:^5.0.1": - version: 5.1.0 - resolution: "runtypes@npm:5.1.0" - checksum: b5baf6eeb560b72bf90bd9629d09df85ec687eb054d80c3c1f2f0cb2a3bb796100d804a4a9b97feb9f3963a72e2ba5168e108e0f8d199adbf2dd9d35416345a5 + version: 5.2.0 + resolution: "runtypes@npm:5.2.0" + checksum: 5379bd67995328f68d2655238f84fbebb9876e7a57d991c2b3c1214988d32167d611910c70cf863be1fbb3a7011ea5904ae9201d3bbf2965d1ae2bd8b92f4abc languageName: node linkType: hard @@ -45192,7 +51248,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:*, rxjs@npm:7.8.1, rxjs@npm:^7.5.1, rxjs@npm:^7.5.5, rxjs@npm:^7.8.0": +"rxjs@npm:*, rxjs@npm:7.8.1, rxjs@npm:^7.8.0": version: 7.8.1 resolution: "rxjs@npm:7.8.1" dependencies: @@ -45210,6 +51266,15 @@ __metadata: languageName: node linkType: hard +"rxjs@npm:^7.5.5": + version: 7.5.7 + resolution: "rxjs@npm:7.5.7" + dependencies: + tslib: ^2.1.0 + checksum: edabcdb73b0f7e0f5f6e05c2077aff8c52222ac939069729704357d6406438acca831c24210db320aba269e86dbe1a400f3769c89101791885121a342fb15d9c + languageName: node + linkType: hard + "sade@npm:^1.7.3": version: 1.8.1 resolution: "sade@npm:1.8.1" @@ -45219,7 +51284,7 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.0.0, safe-array-concat@npm:^1.1.2": +"safe-array-concat@npm:^1.1.2": version: 1.1.2 resolution: "safe-array-concat@npm:1.1.2" dependencies: @@ -45252,6 +51317,24 @@ __metadata: languageName: node linkType: hard +"safe-json-stringify@npm:~1": + version: 1.2.0 + resolution: "safe-json-stringify@npm:1.2.0" + checksum: 5bb32db6d6a3ceb3752df51f4043a412419cd3d4fcd5680a865dfa34cd7e575ba659c077d13f52981ced084061df9c75c7fb12e391584d4264e6914c1cd3d216 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-regex-test@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + is-regex: ^1.1.4 + checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 + languageName: node + linkType: hard + "safe-regex-test@npm:^1.0.3": version: 1.0.3 resolution: "safe-regex-test@npm:1.0.3" @@ -45264,9 +51347,9 @@ __metadata: linkType: hard "safe-stable-stringify@npm:^2.3.1": - version: 2.5.0 - resolution: "safe-stable-stringify@npm:2.5.0" - checksum: d3ce103ed43c6c2f523e39607208bfb1c73aa48179fc5be53c3aa97c118390bffd4d55e012f5393b982b65eb3e0ee954dd57b547930d3f242b0053dcdb923d17 + version: 2.3.1 + resolution: "safe-stable-stringify@npm:2.3.1" + checksum: a0a0bad0294c3e2a9d1bf3cf2b1096dfb83c162d09a5e4891e488cce082120bd69161d2a92aae7fc48255290f17700decae9c89a07fe139794e61b5c8b411377 languageName: node linkType: hard @@ -45317,16 +51400,15 @@ __metadata: linkType: hard "sass@npm:^1.42.1": - version: 1.80.4 - resolution: "sass@npm:1.80.4" + version: 1.63.2 + resolution: "sass@npm:1.63.2" dependencies: - "@parcel/watcher": ^2.4.1 - chokidar: ^4.0.0 + chokidar: ">=3.0.0 <4.0.0" immutable: ^4.0.0 source-map-js: ">=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 83278e922a5972c2643500044935d4989204b01500cf19e0abfa275462a7b0139f42b2a848ad82c28c756fbcd5ada32aa8e92ce3fb17814dff195e8d89193531 + checksum: 7ffc2b789aeae4637f09195f7d24e149fc590e2c69cb209c64fdf0ed0d7f09da28097c48fda7f36d257aeb7dd8e16a9ff77b50cf78830afe6f996e6dcd957280 languageName: node linkType: hard @@ -45337,14 +51419,7 @@ __metadata: languageName: node linkType: hard -"sax@npm:>=0.6, sax@npm:>=0.6.0, sax@npm:^1.2.4": - version: 1.4.1 - resolution: "sax@npm:1.4.1" - checksum: 3ad64df16b743f0f2eb7c38ced9692a6d924f1cd07bbe45c39576c2cf50de8290d9d04e7b2228f924c7d05fecc4ec5cf651423278e0c7b63d260c387ef3af84a - languageName: node - linkType: hard - -"sax@npm:~1.2.4": +"sax@npm:>=0.6, sax@npm:>=0.6.0, sax@npm:^1.2.4, sax@npm:~1.2.4": version: 1.2.4 resolution: "sax@npm:1.2.4" checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe @@ -45388,7 +51463,16 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.0, scheduler@npm:^0.23.2": +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: ^1.1.0 + checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a + languageName: node + linkType: hard + +"scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" dependencies: @@ -45408,18 +51492,41 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": - version: 3.3.0 - resolution: "schema-utils@npm:3.3.0" +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1": + version: 3.1.1 + resolution: "schema-utils@npm:3.1.1" + dependencies: + "@types/json-schema": ^7.0.8 + ajv: ^6.12.5 + ajv-keywords: ^3.5.2 + checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce + languageName: node + linkType: hard + +"schema-utils@npm:^3.1.2": + version: 3.2.0 + resolution: "schema-utils@npm:3.2.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 + checksum: e8c590c525a58e135658dbe614c60e4821f98eb4c257c962ad61f72ad1e48b23148c7edd9295dbd5f9fc525ff8c6f448af0a932871fe9c9e1f523d1dbef917c8 + languageName: node + linkType: hard + +"schema-utils@npm:^4.0.0": + version: 4.0.0 + resolution: "schema-utils@npm:4.0.0" + dependencies: + "@types/json-schema": ^7.0.9 + ajv: ^8.8.0 + ajv-formats: ^2.1.1 + ajv-keywords: ^5.0.0 + checksum: c843e92fdd1a5c145dbb6ffdae33e501867f9703afac67bdf35a685e49f85b1dcc10ea250033175a64bd9d31f0555bc6785b8359da0c90bcea30cf6dfbb55a8f languageName: node linkType: hard -"schema-utils@npm:^4.0.0, schema-utils@npm:^4.0.1, schema-utils@npm:^4.2.0": +"schema-utils@npm:^4.0.1, schema-utils@npm:^4.2.0": version: 4.2.0 resolution: "schema-utils@npm:4.2.0" dependencies: @@ -45431,19 +51538,34 @@ __metadata: languageName: node linkType: hard +"scope-analyzer@npm:^2.0.1": + version: 2.1.1 + resolution: "scope-analyzer@npm:2.1.1" + dependencies: + array-from: ^2.1.1 + dash-ast: ^1.0.0 + es6-map: ^0.1.5 + es6-set: ^0.1.5 + es6-symbol: ^3.1.1 + estree-is-function: ^1.0.0 + get-assigned-identifiers: ^1.1.0 + checksum: 7becd67a718a23abeffae8b71ae71c1062197d185757122c85bd123afe0fecf8f7fde200b9a7d7622b187f496037d608c00303005d2554a819bcc995cdad76f2 + languageName: node + linkType: hard + "screenfull@npm:^5.0.0": - version: 5.2.0 - resolution: "screenfull@npm:5.2.0" - checksum: 21eae33b780eb4679ea0ea2d14734b11168cf35049c45a2bf24ddeb39c67a788e7a8fb46d8b61ca6d8367fd67ce9dd4fc8bfe476489249c7189c2a79cf83f51a + version: 5.1.0 + resolution: "screenfull@npm:5.1.0" + checksum: e8ab486ba2310055aeabd84d8f76f1c9e729669942a4b1bdd675131333076ac9ee6655fb41c2507de3be93865e120cf3641e5ff636090f9e2458170827e650c7 languageName: node linkType: hard "scroll-into-view-if-needed@npm:^2.2.20": - version: 2.2.31 - resolution: "scroll-into-view-if-needed@npm:2.2.31" + version: 2.2.27 + resolution: "scroll-into-view-if-needed@npm:2.2.27" dependencies: - compute-scroll-into-view: ^1.0.20 - checksum: 93b28f3723a462245b40d4120c40c542c8449473e2b157a5f8e18f04d95d66cd35249d96c625e8a440a56891f7d8905b1d026c690bdda07fcfb4f1a48d643ad1 + compute-scroll-into-view: ^1.0.16 + checksum: 4f46ad5e30f2763406c87ea357214a44b0698e025d5384ef684d749462e8f2a7916a4a1c581686dceec7097a7d36c042294fc56f97c08c097073635f52e84f3f languageName: node linkType: hard @@ -45471,9 +51593,9 @@ __metadata: linkType: hard "secure-json-parse@npm:^2.1.0": - version: 2.7.0 - resolution: "secure-json-parse@npm:2.7.0" - checksum: d9d7d5a01fc6db6115744ba23cf9e67ecfe8c524d771537c062ee05ad5c11b64c730bc58c7f33f60bd6877f96b86f0ceb9ea29644e4040cb757f6912d4dd6737 + version: 2.3.2 + resolution: "secure-json-parse@npm:2.3.2" + checksum: 53fe05d8602cc21465c9719bb04a6a6744c07eddbb6cc024dc71e74b661ae53959bfada32d7320226dc0b0e08a9ddf94e89634513efa9f9d1305c5c49cbde66d languageName: node linkType: hard @@ -45493,7 +51615,16 @@ __metadata: languageName: node linkType: hard -"selfsigned@npm:^2.1.1, selfsigned@npm:^2.4.1": +"selfsigned@npm:^2.1.1": + version: 2.1.1 + resolution: "selfsigned@npm:2.1.1" + dependencies: + node-forge: ^1 + checksum: aa9ce2150a54838978d5c0aee54d7ebe77649a32e4e690eb91775f71fdff773874a4fbafd0ac73d8ec3b702ff8a395c604df4f8e8868528f36fd6c15076fb43a + languageName: node + linkType: hard + +"selfsigned@npm:^2.4.1": version: 2.4.1 resolution: "selfsigned@npm:2.4.1" dependencies: @@ -45511,11 +51642,11 @@ __metadata: linkType: hard "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.1.0, semver@npm:^5.5.0, semver@npm:^5.6.0": - version: 5.7.2 - resolution: "semver@npm:5.7.2" + version: 5.7.1 + resolution: "semver@npm:5.7.1" bin: - semver: bin/semver - checksum: fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b686 + semver: ./bin/semver + checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf languageName: node linkType: hard @@ -45539,7 +51670,36 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.5.4": +"semver@npm:7.x, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": + version: 7.3.5 + resolution: "semver@npm:7.3.5" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 + languageName: node + linkType: hard + +"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": + version: 6.3.0 + resolution: "semver@npm:6.3.0" + bin: + semver: ./bin/semver.js + checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + languageName: node + linkType: hard + +"semver@npm:^7.0.0, semver@npm:^7.5.3, semver@npm:^7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -45550,21 +51710,32 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": - version: 7.6.3 - resolution: "semver@npm:7.6.3" +"semver@npm:^7.1.2, semver@npm:^7.3.7, semver@npm:^7.3.8": + version: 7.3.8 + resolution: "semver@npm:7.3.8" + dependencies: + lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.3.0, semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" +"semver@npm:^7.5.2, semver@npm:^7.6.0": + version: 7.6.2 + resolution: "semver@npm:7.6.2" bin: semver: bin/semver.js - checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + checksum: 40f6a95101e8d854357a644da1b8dd9d93ce786d5c6a77227bc69dbb17bea83d0d1d1d7c4cd5920a6df909f48e8bd8a5909869535007f90278289f2451d0292d + languageName: node + linkType: hard + +"semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 languageName: node linkType: hard @@ -45598,27 +51769,6 @@ __metadata: languageName: node linkType: hard -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: ~1.2.1 - statuses: 2.0.1 - checksum: 5ae11bd900c1c2575525e2aa622e856804e2f96a09281ec1e39610d089f53aa69e13fd8db84b52f001d0318cf4bb0b3b904ad532fc4c0014eb90d32db0cff55f - languageName: node - linkType: hard - "sentence-case@npm:^3.0.4": version: 3.0.4 resolution: "sentence-case@npm:3.0.4" @@ -45726,12 +51876,21 @@ __metadata: languageName: node linkType: hard +"serialize-javascript@npm:5.0.1": + version: 5.0.1 + resolution: "serialize-javascript@npm:5.0.1" + dependencies: + randombytes: ^2.1.0 + checksum: bb45a427690c3d2711e28499de0fbf25036af1e23c63c6a9237ed0aa572fd0941fcdefe50a2dccf26d9df8c8b86ae38659e19d8ba7afd3fbc1f1c7539a2a48d2 + languageName: node + linkType: hard + "serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" + version: 6.0.1 + resolution: "serialize-javascript@npm:6.0.1" dependencies: randombytes: ^2.1.0 - checksum: c4839c6206c1d143c0f80763997a361310305751171dd95e4b57efee69b8f6edd8960a0b7fbfc45042aadff98b206d55428aee0dc276efe54f100899c7fa8ab7 + checksum: 3c4f4cb61d0893b988415bdb67243637333f3f574e9e9cc9a006a2ced0b390b0b3b44aef8d51c951272a9002ec50885eefdc0298891bc27eb2fe7510ea87dc4f languageName: node linkType: hard @@ -45763,7 +51922,7 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:1.15.0": +"serve-static@npm:1.15.0, serve-static@npm:^1.13.1": version: 1.15.0 resolution: "serve-static@npm:1.15.0" dependencies: @@ -45775,18 +51934,6 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:1.16.2, serve-static@npm:^1.13.1": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" - dependencies: - encodeurl: ~2.0.0 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.19.0 - checksum: dffc52feb4cc5c68e66d0c7f3c1824d4e989f71050aefc9bd5f822a42c54c9b814f595fc5f2b717f4c7cc05396145f3e90422af31186a93f76cf15f707019759 - languageName: node - linkType: hard - "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -45794,6 +51941,18 @@ __metadata: languageName: node linkType: hard +"set-function-length@npm:^1.1.1": + version: 1.1.1 + resolution: "set-function-length@npm:1.1.1" + dependencies: + define-data-property: ^1.1.1 + get-intrinsic: ^1.2.1 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.0 + checksum: c131d7569cd7e110cafdfbfbb0557249b538477624dfac4fc18c376d879672fa52563b74029ca01f8f4583a8acb35bb1e873d573a24edb80d978a7ee607c6e06 + languageName: node + linkType: hard + "set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -45808,6 +51967,17 @@ __metadata: languageName: node linkType: hard +"set-function-name@npm:^2.0.0": + version: 2.0.1 + resolution: "set-function-name@npm:2.0.1" + dependencies: + define-data-property: ^1.0.1 + functions-have-names: ^1.2.3 + has-property-descriptors: ^1.0.0 + checksum: 4975d17d90c40168eee2c7c9c59d023429f0a1690a89d75656306481ece0c3c1fb1ebcc0150ea546d1913e35fbd037bace91372c69e543e51fc5d1f31a9fa126 + languageName: node + linkType: hard + "set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" @@ -45880,6 +52050,13 @@ __metadata: languageName: node linkType: hard +"shallow-copy@npm:~0.0.1": + version: 0.0.1 + resolution: "shallow-copy@npm:0.0.1" + checksum: 2d249a5a57a160b439d84fbf9ed7c0a107a3d656d1bda0b73edf9476c6e6ea9d2afa79829bf33fce6677fae35b15c14e5c28f9902dc4d07a302637a225d00634 + languageName: node + linkType: hard + "shallow-equal@npm:^1.2.1": version: 1.2.1 resolution: "shallow-equal@npm:1.2.1" @@ -45933,7 +52110,14 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.6.1, shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": +"shell-quote@npm:^1.6.1": + version: 1.7.3 + resolution: "shell-quote@npm:1.7.3" + checksum: aca58e73a3a5d933d02e0bdddedc53ee14f7c2ec264f97ac915b9d4482d077a38e422aa664631d60a672cd3cdb4054eb2e6c0303f54882453dacb6483e482d34 + languageName: node + linkType: hard + +"shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" checksum: 5f01201f4ef504d4c6a9d0d283fa17075f6770bfbe4c5850b074974c68062f37929ca61700d95ad2ac8822e14e8c4b990ca0e6e9272e64befd74ce5e19f0736b @@ -46013,7 +52197,18 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.3, side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": +"side-channel@npm:^1.0.3, side-channel@npm:^1.0.4": + version: 1.0.4 + resolution: "side-channel@npm:1.0.4" + dependencies: + call-bind: ^1.0.0 + get-intrinsic: ^1.0.2 + object-inspect: ^1.9.0 + checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.6": version: 1.0.6 resolution: "side-channel@npm:1.0.6" dependencies: @@ -46025,6 +52220,13 @@ __metadata: languageName: node linkType: hard +"sigmund@npm:^1.0.1": + version: 1.0.1 + resolution: "sigmund@npm:1.0.1" + checksum: 793f81f8083ad75ff3903ffd93cf35be8d797e872822cf880aea27ce6db522b508d93ea52ae292bccf357ce34dd5c7faa544cc51c2216e70bbf5fcf09b62707c + languageName: node + linkType: hard + "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -46032,7 +52234,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": +"signal-exit@npm:^4.0.1": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 @@ -46388,13 +52590,13 @@ __metadata: linkType: hard "socks-proxy-agent@npm:^6.0.0": - version: 6.2.1 - resolution: "socks-proxy-agent@npm:6.2.1" + version: 6.2.0 + resolution: "socks-proxy-agent@npm:6.2.0" dependencies: agent-base: ^6.0.2 debug: ^4.3.3 socks: ^2.6.2 - checksum: 9ca089d489e5ee84af06741135c4b0d2022977dad27ac8d649478a114cdce87849e8d82b7c22b51501a4116e231241592946fc7fae0afc93b65030ee57084f58 + checksum: 6723fd64fb50334e2b340fd0a80fd8488ffc5bc43d85b7cf1d25612044f814dd7d6ea417fd47602159941236f7f4bd15669fa5d7e1f852598a31288e1a43967b languageName: node linkType: hard @@ -46409,18 +52611,28 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.2, socks-proxy-agent@npm:^8.0.3, socks-proxy-agent@npm:^8.0.4": - version: 8.0.4 - resolution: "socks-proxy-agent@npm:8.0.4" +"socks-proxy-agent@npm:^8.0.2": + version: 8.0.3 + resolution: "socks-proxy-agent@npm:8.0.3" dependencies: agent-base: ^7.1.1 debug: ^4.3.4 - socks: ^2.8.3 - checksum: b2ec5051d85fe49072f9a250c427e0e9571fd09d5db133819192d078fd291276e1f0f50f6dbc04329b207738b1071314cee8bdbb4b12e27de42dbcf1d4233c67 + socks: ^2.7.1 + checksum: 8fab38821c327c190c28f1658087bc520eb065d55bc07b4a0fdf8d1e0e7ad5d115abbb22a95f94f944723ea969dd771ad6416b1e3cde9060c4c71f705c8b85c5 + languageName: node + linkType: hard + +"socks@npm:^2.3.3, socks@npm:^2.6.2": + version: 2.6.2 + resolution: "socks@npm:2.6.2" + dependencies: + ip: ^1.1.5 + smart-buffer: ^4.2.0 + checksum: dd9194293059d737759d5c69273850ad4149f448426249325c4bea0e340d1cf3d266c3b022694b0dcf5d31f759de23657244c481fc1e8322add80b7985c36b5e languageName: node linkType: hard -"socks@npm:^2.3.3, socks@npm:^2.6.2, socks@npm:^2.8.3": +"socks@npm:^2.7.1": version: 2.8.3 resolution: "socks@npm:2.8.3" dependencies: @@ -46439,10 +52651,17 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": - version: 1.2.1 - resolution: "source-map-js@npm:1.2.1" - checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b +"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": + version: 1.0.2 + resolution: "source-map-js@npm:1.0.2" + checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c + languageName: node + linkType: hard + +"source-map-js@npm:^1.2.0": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 791a43306d9223792e84293b00458bf102a8946e7188f3db0e4e22d8d530b5f80a4ce468eb5ec0bf585443ad55ebbd630bf379c98db0b1f317fd902500217f97 languageName: node linkType: hard @@ -46495,14 +52714,14 @@ __metadata: languageName: node linkType: hard -"source-map@npm:0.7.4, source-map@npm:^0.7.3, source-map@npm:^0.7.4": +"source-map@npm:0.7.4, source-map@npm:^0.7.4": version: 0.7.4 resolution: "source-map@npm:0.7.4" checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 languageName: node linkType: hard -"source-map@npm:^0.5.0, source-map@npm:^0.5.6, source-map@npm:^0.5.7": +"source-map@npm:^0.5.6, source-map@npm:^0.5.7": version: 0.5.7 resolution: "source-map@npm:0.5.7" checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d @@ -46516,6 +52735,20 @@ __metadata: languageName: node linkType: hard +"source-map@npm:^0.7.3, source-map@npm:~0.7.2": + version: 0.7.3 + resolution: "source-map@npm:0.7.3" + checksum: cd24efb3b8fa69b64bf28e3c1b1a500de77e84260c5b7f2b873f88284df17974157cc88d386ee9b6d081f08fdd8242f3fc05c953685a6ad81aad94c7393dedea + languageName: node + linkType: hard + +"sourcemap-codec@npm:^1.4.1, sourcemap-codec@npm:^1.4.4, sourcemap-codec@npm:^1.4.8": + version: 1.4.8 + resolution: "sourcemap-codec@npm:1.4.8" + checksum: b57981c05611afef31605732b598ccf65124a9fcb03b833532659ac4d29ac0f7bfacbc0d6c5a28a03e84c7510e7e556d758d0bb57786e214660016fb94279316 + languageName: node + linkType: hard + "space-separated-tokens@npm:^1.0.0": version: 1.1.5 resolution: "space-separated-tokens@npm:1.1.5" @@ -46552,19 +52785,19 @@ __metadata: linkType: hard "spdx-correct@npm:^3.0.0": - version: 3.2.0 - resolution: "spdx-correct@npm:3.2.0" + version: 3.1.1 + resolution: "spdx-correct@npm:3.1.1" dependencies: spdx-expression-parse: ^3.0.0 spdx-license-ids: ^3.0.0 - checksum: e9ae98d22f69c88e7aff5b8778dc01c361ef635580e82d29e5c60a6533cc8f4d820803e67d7432581af0cc4fb49973125076ee3b90df191d153e223c004193b2 + checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 languageName: node linkType: hard "spdx-exceptions@npm:^2.1.0": - version: 2.5.0 - resolution: "spdx-exceptions@npm:2.5.0" - checksum: bb127d6e2532de65b912f7c99fc66097cdea7d64c10d3ec9b5e96524dbbd7d20e01cba818a6ddb2ae75e62bb0c63d5e277a7e555a85cbc8ab40044984fa4ae15 + version: 2.3.0 + resolution: "spdx-exceptions@npm:2.3.0" + checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 languageName: node linkType: hard @@ -46579,9 +52812,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.20 - resolution: "spdx-license-ids@npm:3.0.20" - checksum: 0c57750bedbcff48f3d0e266fbbdaf0aab54217e182f669542ffe0b5a902dce69e8cdfa126a131e1ddd39a9bef4662e357b2b41315d7240b4a28c0a7e782bb40 + version: 3.0.7 + resolution: "spdx-license-ids@npm:3.0.7" + checksum: b52a88aebc19b4c69049349939e1948014c4d10f52a11870431fc1cc6551de411d19e4570f5f1df2d8b7089bec921df9017a3d5199ae2468b2b432171945278e languageName: node linkType: hard @@ -46630,10 +52863,10 @@ __metadata: languageName: node linkType: hard -"speakingurl@npm:^14.0.1": - version: 14.0.1 - resolution: "speakingurl@npm:14.0.1" - checksum: 5c7fb81d9b4cbda31f462f424cc2d59d9d07ca07e86f9f4e7b1c6325307646f9b82297891ce7f9e75b4bccf20ac436758e721506461b5cd6e5561e89186aa67b +"speakingurl@npm:^13.0.0": + version: 13.0.0 + resolution: "speakingurl@npm:13.0.0" + checksum: 0c244c5a76624353704b779081103ef9060a65c2c371f5a660d5667d80ae01b9b9701593491359d9d100197f06a98e765b6306100416882f53c3e3d5dfd2e564 languageName: node linkType: hard @@ -46651,10 +52884,12 @@ __metadata: languageName: node linkType: hard -"split2@npm:^4.1.0": - version: 4.2.0 - resolution: "split2@npm:4.2.0" - checksum: 05d54102546549fe4d2455900699056580cca006c0275c334611420f854da30ac999230857a85fdd9914dc2109ae50f80fda43d2a445f2aa86eccdc1dfce779d +"split2@npm:^3.1.1": + version: 3.2.2 + resolution: "split2@npm:3.2.2" + dependencies: + readable-stream: ^3.0.0 + checksum: 8127ddbedd0faf31f232c0e9192fede469913aa8982aa380752e0463b2e31c2359ef6962eb2d24c125bac59eeec76873678d723b1c7ff696216a1cd071e3994a languageName: node linkType: hard @@ -46739,26 +52974,26 @@ __metadata: languageName: node linkType: hard -"ssh2@npm:^1.11.0, ssh2@npm:^1.4.0": - version: 1.16.0 - resolution: "ssh2@npm:1.16.0" +"ssh2@npm:^1.4.0": + version: 1.5.0 + resolution: "ssh2@npm:1.5.0" dependencies: - asn1: ^0.2.6 + asn1: ^0.2.4 bcrypt-pbkdf: ^1.0.2 - cpu-features: ~0.0.10 - nan: ^2.20.0 + cpu-features: 0.0.2 + nan: ^2.15.0 dependenciesMeta: cpu-features: optional: true nan: optional: true - checksum: c024c4a432aae2457852037f31c0d9bec323fb062ace3a31e4a6dd6c55842246c80e7d20ff93ffed22dde1e523250d8438bc2f7d4a1450cf4fa4887818176f0e + checksum: 6a2252c12d9587eeb31c499d1d13bb14a255d08243762e1a92b2db76add8912b2c8c25103c79b92e156d598c1e2781c5523b58aa9e85aee06fea365e4cc188bb languageName: node linkType: hard -"sshpk@npm:^1.18.0": - version: 1.18.0 - resolution: "sshpk@npm:1.18.0" +"sshpk@npm:^1.14.1": + version: 1.17.0 + resolution: "sshpk@npm:1.17.0" dependencies: asn1: ~0.2.3 assert-plus: ^1.0.0 @@ -46773,7 +53008,28 @@ __metadata: sshpk-conv: bin/sshpk-conv sshpk-sign: bin/sshpk-sign sshpk-verify: bin/sshpk-verify - checksum: 01d43374eee3a7e37b3b82fdbecd5518cbb2e47ccbed27d2ae30f9753f22bd6ffad31225cb8ef013bc3fb7785e686cea619203ee1439a228f965558c367c3cfa + checksum: ba109f65c8e6c35133b8e6ed5576abeff8aa8d614824b7275ec3ca308f081fef483607c28d97780c1e235818b0f93ed8c8b56d0a5968d5a23fd6af57718c7597 + languageName: node + linkType: hard + +"sshpk@npm:^1.7.0": + version: 1.16.1 + resolution: "sshpk@npm:1.16.1" + dependencies: + asn1: ~0.2.3 + assert-plus: ^1.0.0 + bcrypt-pbkdf: ^1.0.0 + dashdash: ^1.12.0 + ecc-jsbn: ~0.1.1 + getpass: ^0.1.1 + jsbn: ~0.1.0 + safer-buffer: ^2.0.2 + tweetnacl: ~0.14.0 + bin: + sshpk-conv: bin/sshpk-conv + sshpk-sign: bin/sshpk-sign + sshpk-verify: bin/sshpk-verify + checksum: 5e76afd1cedc780256f688b7c09327a8a650902d18e284dfeac97489a735299b03c3e72c6e8d22af03dbbe4d6f123fdfd5f3c4ed6bedbec72b9529a55051b857 languageName: node linkType: hard @@ -46787,11 +53043,11 @@ __metadata: linkType: hard "stack-generator@npm:^2.0.5": - version: 2.0.10 - resolution: "stack-generator@npm:2.0.10" + version: 2.0.5 + resolution: "stack-generator@npm:2.0.5" dependencies: - stackframe: ^1.3.4 - checksum: 4fc3978a934424218a0aa9f398034e1f78153d5ff4f4ff9c62478c672debb47dd58de05b09fc3900530cbb526d72c93a6e6c9353bacc698e3b1c00ca3dda0c47 + stackframe: ^1.1.1 + checksum: a85c45a6f166319b31e9298da1e05b778b768553c2126eeeccfa5c4402fc810de1c541ec0b92db63238d68b3e08f4f57544adc27255e52f25f8edcabcc9caf63 languageName: node linkType: hard @@ -46803,28 +53059,28 @@ __metadata: linkType: hard "stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" + version: 2.0.5 + resolution: "stack-utils@npm:2.0.5" dependencies: escape-string-regexp: ^2.0.0 - checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 + checksum: 76b69da0f5b48a34a0f93c98ee2a96544d2c4ca2557f7eef5ddb961d3bdc33870b46f498a84a7c4f4ffb781df639840e7ebf6639164ed4da5e1aeb659615b9c7 languageName: node linkType: hard -"stackframe@npm:^1.3.4": - version: 1.3.4 - resolution: "stackframe@npm:1.3.4" - checksum: bae1596873595c4610993fa84f86a3387d67586401c1816ea048c0196800c0646c4d2da98c2ee80557fd9eff05877efe33b91ba6cd052658ed96ddc85d19067d +"stackframe@npm:^1.1.1": + version: 1.2.0 + resolution: "stackframe@npm:1.2.0" + checksum: 37d659bdd574e118a48c445a9a054a2b8dee6d6ad54eb16c51c7dae622c0f4994b9ff4e47d744aa6cfd14c00b477e145f34db3df78771f3e783ce8f357616d00 languageName: node linkType: hard "stacktrace-gps@npm:^3.0.4": - version: 3.1.2 - resolution: "stacktrace-gps@npm:3.1.2" + version: 3.0.4 + resolution: "stacktrace-gps@npm:3.0.4" dependencies: source-map: 0.5.6 - stackframe: ^1.3.4 - checksum: 85daa232d138239b6ae0f4bcdd87d15d302a045d93625db17614030945b5314e204b5fbcf9bee5b6f4f9e6af5fca05f65c27fe910894b861ef6853b99470aa1c + stackframe: ^1.1.1 + checksum: b98cb77632d38e6cbc243da4c47ca5f4bef918985c233bb4cfe8bfdc60fde92b53ce0630b16cf24d81560f1442e2ff92ccf6e2fe19031c90fb775d8e86037d9b languageName: node linkType: hard @@ -46855,12 +53111,34 @@ __metadata: languageName: node linkType: hard -"static-eval@npm:2.0.2": - version: 2.0.2 - resolution: "static-eval@npm:2.0.2" +"static-eval@npm:^2.0.5": + version: 2.1.0 + resolution: "static-eval@npm:2.1.0" dependencies: - escodegen: ^1.8.1 - checksum: 335a923c5ccb29add404ac23d0a55c0da6cee3071f6f67a7053aeac0dedc6dbfc53ac9269e9c25f403f5b7603a291ef47d7114f99bde241184f7aa3f9286dc32 + escodegen: ^1.11.1 + checksum: 21297ee9af37cd23ef92b3a4b1fd535073539b870d2bb83a4b92f6b668183f7fb552d3c791bbdcd460c62583a2c33d46e5d56e86a7f5851b65b29e19e5d28b41 + languageName: node + linkType: hard + +"static-module@npm:^3.0.2": + version: 3.0.4 + resolution: "static-module@npm:3.0.4" + dependencies: + acorn-node: ^1.3.0 + concat-stream: ~1.6.0 + convert-source-map: ^1.5.1 + duplexer2: ~0.1.4 + escodegen: ^1.11.1 + has: ^1.0.1 + magic-string: 0.25.1 + merge-source-map: 1.0.4 + object-inspect: ^1.6.0 + readable-stream: ~2.3.3 + scope-analyzer: ^2.0.1 + shallow-copy: ~0.0.1 + static-eval: ^2.0.5 + through2: ~2.0.3 + checksum: 6c2d1b71567cc7a282bd0e490995609c15da18273cbb426175877cd84352f0b03a87839dcf5b0669f8eaf0b35ea0d4582e1b4a0f2dabcd46d884f50fb689fce9 languageName: node linkType: hard @@ -46895,9 +53173,9 @@ __metadata: linkType: hard "store2@npm:^2.14.2": - version: 2.14.3 - resolution: "store2@npm:2.14.3" - checksum: 971a47aa479ff5491f89ee3fcbaf4ddafe0cfb55ac2f4cf4b4fc7b21d349fa3a761f79368d1573b9f65af08b3cf0f6973eed56a213b8bb4cb7e820ac048d1613 + version: 2.14.2 + resolution: "store2@npm:2.14.2" + checksum: 6f270fc5bab99b63f45fcc7bd8b99c2714b4adf880f557ed7ffb5ed3987131251165bccde425a00928aaf044870aee79ddeef548576d093c68703ed2edec45d7 languageName: node linkType: hard @@ -46962,10 +53240,10 @@ __metadata: languageName: node linkType: hard -"stream-shift@npm:^1.0.0, stream-shift@npm:^1.0.2": - version: 1.0.3 - resolution: "stream-shift@npm:1.0.3" - checksum: a24c0a3f66a8f9024bd1d579a533a53be283b4475d4e6b4b3211b964031447bdf6532dd1f3c2b0ad66752554391b7c62bd7ca4559193381f766534e723d50242 +"stream-shift@npm:^1.0.0": + version: 1.0.1 + resolution: "stream-shift@npm:1.0.1" + checksum: 59b82b44b29ec3699b5519a49b3cedcc6db58c72fb40c04e005525dfdcab1c75c4e0c180b923c380f204bed78211b9bad8faecc7b93dece4d004c3f6ec75737b languageName: node linkType: hard @@ -46977,17 +53255,12 @@ __metadata: linkType: hard "streamx@npm:^2.15.0": - version: 2.20.1 - resolution: "streamx@npm:2.20.1" + version: 2.15.1 + resolution: "streamx@npm:2.15.1" dependencies: - bare-events: ^2.2.0 - fast-fifo: ^1.3.2 + fast-fifo: ^1.1.0 queue-tick: ^1.0.1 - text-decoder: ^1.1.0 - dependenciesMeta: - bare-events: - optional: true - checksum: 48605ddd3abdd86d2e3ee945ec7c9317f36abb5303347a8fff6e4c7926a72c33ec7ac86b50734ccd1cf65602b6a38e247966e8199b24e5a7485d9cec8f5327bd + checksum: 6f2b4fed68caacd28efbd44d4264f5d3c2b81b0a5de14419333dac57f2075c49ae648df8d03db632a33587a6c8ab7cb9cdb4f9a2f8305be0c2cd79af35742b15 languageName: node linkType: hard @@ -46998,6 +53271,13 @@ __metadata: languageName: node linkType: hard +"string-hash@npm:^1.1.1": + version: 1.1.3 + resolution: "string-hash@npm:1.1.3" + checksum: 104b8667a5e0dc71bfcd29fee09cb88c6102e27bfb07c55f95535d90587d016731d52299380052e514266f4028a7a5172e0d9ac58e2f8f5001be61dc77c0754d + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -47037,7 +53317,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^2.0.0, string-width@npm:^2.1.1": +"string-width@npm:^1.0.2 || 2, string-width@npm:^2.0.0, string-width@npm:^2.1.1": version: 2.1.1 resolution: "string-width@npm:2.1.1" dependencies: @@ -47076,18 +53356,17 @@ __metadata: languageName: node linkType: hard -"string.prototype.includes@npm:^2.0.1": - version: 2.0.1 - resolution: "string.prototype.includes@npm:2.0.1" +"string.prototype.includes@npm:^2.0.0": + version: 2.0.0 + resolution: "string.prototype.includes@npm:2.0.0" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.3 - checksum: ed4b7058b092f30d41c4df1e3e805eeea92479d2c7a886aa30f42ae32fde8924a10cc99cccc99c29b8e18c48216608a0fe6bf887f8b4aadf9559096a758f313a + define-properties: ^1.1.3 + es-abstract: ^1.17.5 + checksum: cf413e7f603b0414b65fdf1e7e3670ba85fd992b31c7eadfbdd9a484b86d265f0260431e7558cdb44a318dcadd1da8442b7bb8193b9ddd0aea3c376d2a559859 languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.11, string.prototype.matchall@npm:^4.0.8": +"string.prototype.matchall@npm:^4.0.11": version: 4.0.11 resolution: "string.prototype.matchall@npm:4.0.11" dependencies: @@ -47107,15 +53386,30 @@ __metadata: languageName: node linkType: hard +"string.prototype.matchall@npm:^4.0.8": + version: 4.0.8 + resolution: "string.prototype.matchall@npm:4.0.8" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + internal-slot: ^1.0.3 + regexp.prototype.flags: ^1.4.3 + side-channel: ^1.0.4 + checksum: 952da3a818de42ad1c10b576140a5e05b4de7b34b8d9dbf00c3ac8c1293e9c0f533613a39c5cda53e0a8221f2e710bc2150e730b1c2278d60004a8a35726efb6 + languageName: node + linkType: hard + "string.prototype.padend@npm:^3.0.0": - version: 3.1.6 - resolution: "string.prototype.padend@npm:3.1.6" + version: 3.1.2 + resolution: "string.prototype.padend@npm:3.1.2" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-object-atoms: ^1.0.0 - checksum: d9fc23c21bdfb6850756002ef09cebc420882003f29eafbd8322df77a90726bc2a64892d01f94f1fc9fc6f809414fbcbd8615610bb3cddd33512c12b6b3643a2 + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.18.0-next.2 + checksum: be5ff9ac8d9c5443fc39fe92654e8e816d064f8b615703de475590b7d82c72aab97641c0a57543ca1c20e318fcc7b3692fcda24eb2c0ee5444653c1c25a61de2 languageName: node linkType: hard @@ -47141,6 +53435,38 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimend@npm:^1.0.4": + version: 1.0.4 + resolution: "string.prototype.trimend@npm:1.0.4" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + checksum: 17e5aa45c3983f582693161f972c1c1fa4bbbdf22e70e582b00c91b6575f01680dc34e83005b98e31abe4d5d29e0b21fcc24690239c106c7b2315aade6a898ac + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.5": + version: 1.0.5 + resolution: "string.prototype.trimend@npm:1.0.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.19.5 + checksum: d44f543833112f57224e79182debadc9f4f3bf9d48a0414d6f0cbd2a86f2b3e8c0ca1f95c3f8e5b32ae83e91554d79d932fc746b411895f03f93d89ed3dfb6bc + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.6": + version: 1.0.6 + resolution: "string.prototype.trimend@npm:1.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + languageName: node + linkType: hard + "string.prototype.trimend@npm:^1.0.8": version: 1.0.8 resolution: "string.prototype.trimend@npm:1.0.8" @@ -47152,6 +53478,38 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimstart@npm:^1.0.4": + version: 1.0.4 + resolution: "string.prototype.trimstart@npm:1.0.4" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + checksum: 3fb06818d3cccac5fa3f5f9873d984794ca0e9f6616fae6fcc745885d9efed4e17fe15f832515d9af5e16c279857fdbffdfc489ca4ed577811b017721b30302f + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.5": + version: 1.0.5 + resolution: "string.prototype.trimstart@npm:1.0.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.19.5 + checksum: a4857c5399ad709d159a77371eeaa8f9cc284469a0b5e1bfe405de16f1fd4166a8ea6f4180e55032f348d1b679b1599fd4301fbc7a8b72bdb3e795e43f7b1048 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.6": + version: 1.0.6 + resolution: "string.prototype.trimstart@npm:1.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 + languageName: node + linkType: hard + "string.prototype.trimstart@npm:^1.0.8": version: 1.0.8 resolution: "string.prototype.trimstart@npm:1.0.8" @@ -47315,7 +53673,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -47364,18 +53722,18 @@ __metadata: linkType: hard "style-loader@npm:^3.3.0, style-loader@npm:^3.3.1": - version: 3.3.4 - resolution: "style-loader@npm:3.3.4" + version: 3.3.3 + resolution: "style-loader@npm:3.3.3" peerDependencies: webpack: ^5.0.0 - checksum: caac3f2fe2c3c89e49b7a2a9329e1cfa515ecf5f36b9c4885f9b218019fda207a9029939b2c35821dec177a264a007e7c391ccdd3ff7401881ce6287b9c8f38b + checksum: f59c953f56f6a935bd6a1dfa409f1128fed2b66b48ce4a7a75b85862a7156e5e90ab163878962762f528ec4d510903d828da645e143fbffd26f055dc1c094078 languageName: node linkType: hard -"style-mod@npm:^4.0.0, style-mod@npm:^4.1.0": - version: 4.1.2 - resolution: "style-mod@npm:4.1.2" - checksum: 7c5c3e82747f9bcf5f288d8d07f50848e4630fe5ff7bfe4d94cc87d6b6a2588227cbf21b4c792ac6406e5852293300a75e710714479a5c59a06af677f0825ef8 +"style-mod@npm:^4.0.0": + version: 4.0.0 + resolution: "style-mod@npm:4.0.0" + checksum: c19f73d660a94244f0715180a6141bf75d05e5b156cc956ba11970b83cd303c3f7edafe5fb61a3192da6186cc008bdcdd803a979070f9b64e13046463644043c languageName: node linkType: hard @@ -47446,15 +53804,15 @@ __metadata: languageName: node linkType: hard -"stylehacks@npm:^6.1.1": - version: 6.1.1 - resolution: "stylehacks@npm:6.1.1" +"stylehacks@npm:^6.0.0": + version: 6.0.0 + resolution: "stylehacks@npm:6.0.0" dependencies: - browserslist: ^4.23.0 - postcss-selector-parser: ^6.0.16 + browserslist: ^4.21.4 + postcss-selector-parser: ^6.0.4 peerDependencies: - postcss: ^8.4.31 - checksum: 7bef69822280a23817caa43969de76d77ba34042e9f1f7baaeda8f22b1d8c20f1f839ad028552c169e158e387830f176feccd0324b07ef6ec657cba1dd0b2466 + postcss: ^8.2.15 + checksum: b6071ab5f4451576e3a445f7304b41c43329f84d7a7987a91442febaabc1de51e62f1e37c4f37fad21990d3f573a8110bd31e09f9df7b8628465e19b1cdc702b languageName: node linkType: hard @@ -47472,23 +53830,24 @@ __metadata: languageName: node linkType: hard -"stylis@npm:^4.3.0": - version: 4.3.4 - resolution: "stylis@npm:4.3.4" - checksum: 7e3a482c7bba6e0e9e3187972e958acf800b1abe99f23e081fcb5dea8e4a05eca44286c1381ce2bc7179245ddbd7bf1f74237ed413fce7491320a543bcfebda9 +"stylis@npm:^4.0.6": + version: 4.0.7 + resolution: "stylis@npm:4.0.7" + checksum: 4f9fdc4b131b54cdc5988aaf23e796fcf77927c9d2f3147f6b23b8f3a9568eb38ce91b338b9d1b50a50391da32969c34ff68ff971c453fc3a5af89941c60ab06 languageName: node linkType: hard "stylus-loader@npm:^7.1.0": - version: 7.1.3 - resolution: "stylus-loader@npm:7.1.3" + version: 7.1.2 + resolution: "stylus-loader@npm:7.1.2" dependencies: fast-glob: ^3.2.12 + klona: ^2.0.6 normalize-path: ^3.0.0 peerDependencies: stylus: ">=0.52.4" webpack: ^5.0.0 - checksum: 5f92692f19584add370ba9dd6cdb25268ce4ba22b3703de447431be49185a8a79bb80f925b530f9cbafdd2b83420a68398e68cc0d23063d1dbbb14b465b389f2 + checksum: f0971b1825163d6bfa57e13d228c2b90c4d43d0137a6e632632117e380a00b5ff87cff91bf9536ed6f8f6b50c5db3e24a4f97a2e53f3825769d752b43bc3d89b languageName: node linkType: hard @@ -47598,9 +53957,28 @@ __metadata: languageName: node linkType: hard -"superagent@npm:^8.0.0, superagent@npm:^8.1.2": - version: 8.1.2 - resolution: "superagent@npm:8.1.2" +"superagent@npm:^6.1.0": + version: 6.1.0 + resolution: "superagent@npm:6.1.0" + dependencies: + component-emitter: ^1.3.0 + cookiejar: ^2.1.2 + debug: ^4.1.1 + fast-safe-stringify: ^2.0.7 + form-data: ^3.0.0 + formidable: ^1.2.2 + methods: ^1.1.2 + mime: ^2.4.6 + qs: ^6.9.4 + readable-stream: ^3.6.0 + semver: ^7.3.2 + checksum: 32ca1bc9805679cddeffdf5cf369da47359a0d38ee45ea668bba4116e17c247739e4084db9cc88217dd594a816e766a3dbf2431de017fbac0bc80efd6af30c1d + languageName: node + linkType: hard + +"superagent@npm:^8.0.0": + version: 8.0.9 + resolution: "superagent@npm:8.0.9" dependencies: component-emitter: ^1.3.0 cookiejar: ^2.1.4 @@ -47612,7 +53990,7 @@ __metadata: mime: 2.6.0 qs: ^6.11.0 semver: ^7.3.8 - checksum: f3601c5ccae34d5ba684a03703394b5d25931f4ae2e1e31a1de809f88a9400e997ece037f9accf148a21c408f950dc829db1e4e23576a7f9fe0efa79fd5c9d2f + checksum: 5d00cdc7ceb5570663da80604965750e6b1b8d7d7442b7791e285c62bcd8d578a8ead0242a2426432b59a255fb42eb3a196d636157538a1392e7b6c5f1624810 languageName: node linkType: hard @@ -47636,6 +54014,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:8.1.1, supports-color@npm:^8, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + "supports-color@npm:^2.0.0": version: 2.0.0 resolution: "supports-color@npm:2.0.0" @@ -47661,16 +54048,17 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" +"supports-hyperlinks@npm:^2.0.0": + version: 2.1.0 + resolution: "supports-hyperlinks@npm:2.1.0" dependencies: has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + supports-color: ^7.0.0 + checksum: e4f430c870a258c9854b8bd7f166a9c1e76e3b851da84d4399d6a8f1d4a485e4ec36c16455dde80acf06c86e7c0a6df76ed22b6a4644a6ae3eced8616b3f21b5 languageName: node linkType: hard -"supports-hyperlinks@npm:^2.0.0, supports-hyperlinks@npm:^2.2.0": +"supports-hyperlinks@npm:^2.2.0": version: 2.3.0 resolution: "supports-hyperlinks@npm:2.3.0" dependencies: @@ -47701,20 +54089,19 @@ __metadata: languageName: node linkType: hard -"svgo@npm:^3.0.2, svgo@npm:^3.2.0": - version: 3.3.2 - resolution: "svgo@npm:3.3.2" +"svgo@npm:^3.0.2": + version: 3.0.2 + resolution: "svgo@npm:3.0.2" dependencies: "@trysound/sax": 0.2.0 commander: ^7.2.0 css-select: ^5.1.0 - css-tree: ^2.3.1 - css-what: ^6.1.0 + css-tree: ^2.2.1 csso: ^5.0.5 picocolors: ^1.0.0 bin: - svgo: ./bin/svgo - checksum: a3f8aad597dec13ab24e679c4c218147048dc1414fe04e99447c5f42a6e077b33d712d306df84674b5253b98c9b84dfbfb41fdd08552443b04946e43d03e054e + svgo: bin/svgo + checksum: 381ba14aa782e71ab7033227634a3041c11fa3e2769aeaf0df43a08a615de61925108e34f55af6e7c5146f4a3109e78deabb4fa9d687e36d45d1f848b4e23d17 languageName: node linkType: hard @@ -47726,9 +54113,9 @@ __metadata: linkType: hard "swagger-ui-dist@npm:>=4.1.3": - version: 5.17.14 - resolution: "swagger-ui-dist@npm:5.17.14" - checksum: e10f8068e370fb17cf6882c8d8b925044862ea74b67296c6d97eef42a904eed3e9ed21867cc0458cbf0de7bd2a49e79282a1a3b7e6a1ccdbba1b650d86b528bb + version: 4.6.1 + resolution: "swagger-ui-dist@npm:4.6.1" + checksum: ca867260b2e25069742fd2be9911a1f80cd00289d2cc195d7e81660cec68b483cdaae7cf65ce79a11209ec47c52461b9305e648810f0d41189f3f5ec8f1abfa4 languageName: node linkType: hard @@ -47776,14 +54163,12 @@ __metadata: linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.6 - resolution: "swc-loader@npm:0.2.6" - dependencies: - "@swc/counter": ^0.1.3 + version: 0.2.3 + resolution: "swc-loader@npm:0.2.3" peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb + checksum: 010d84d399525c0185d36d62c86c55ae017e7a90046bc8a39be4b7e07526924037868049f6037bc966da98151cb2600934b96a66279b742d3c413a718b427251 languageName: node linkType: hard @@ -47818,9 +54203,26 @@ __metadata: linkType: hard "synchronous-promise@npm:^2.0.15": - version: 2.0.17 - resolution: "synchronous-promise@npm:2.0.17" - checksum: 7b1342c93741f3f92ebde1edf5d6ce8dde2278de948d84e9bd85e232c16c0d77c90c4940f9975be3effcb20f047cfb0f16fa311c3b4e092c22f3bf2889fb0fb4 + version: 2.0.15 + resolution: "synchronous-promise@npm:2.0.15" + checksum: 6079a6acd37d02eb76f250dc7ce09009151744901b320a8cfbba056b015c3d7cbf4e7467458f2d27c6393634f68521b241ea9e35fd9640f8fb59342740550472 + languageName: node + linkType: hard + +"synckit@npm:^0.8.5": + version: 0.8.5 + resolution: "synckit@npm:0.8.5" + dependencies: + "@pkgr/utils": ^2.3.1 + tslib: ^2.5.0 + checksum: 8a9560e5d8f3d94dc3cf5f7b9c83490ffa30d320093560a37b88f59483040771fd1750e76b9939abfbb1b5a23fd6dfbae77f6b338abffe7cae7329cd9b9bb86b + languageName: node + linkType: hard + +"taffydb@npm:2.6.2": + version: 2.6.2 + resolution: "taffydb@npm:2.6.2" + checksum: 8fea9cdff71735a40320c4beeb80cb98837076cb89614bc55ac5d67561f35ebae158cfc07a193a1099b5e32746433b2c086b0cd6d56f29aa7c7678e74968335b languageName: node linkType: hard @@ -47869,13 +54271,13 @@ __metadata: linkType: hard "tar-stream@npm:^3.0.0": - version: 3.1.7 - resolution: "tar-stream@npm:3.1.7" + version: 3.1.6 + resolution: "tar-stream@npm:3.1.6" dependencies: b4a: ^1.6.4 fast-fifo: ^1.2.0 streamx: ^2.15.0 - checksum: 6393a6c19082b17b8dcc8e7fd349352bb29b4b8bfe1075912b91b01743ba6bb4298f5ff0b499a3bbaf82121830e96a1a59d4f21a43c0df339e54b01789cb8cc6 + checksum: f3627f918581976e954ff03cb8d370551053796b82564f8c7ca8fac84c48e4d042026d0854fc222171a34ff9c682b72fae91be9c9b0a112d4c54f9e4f443e9c5 languageName: node linkType: hard @@ -47894,28 +54296,37 @@ __metadata: linkType: hard "tdigest@npm:^0.1.1": - version: 0.1.2 - resolution: "tdigest@npm:0.1.2" + version: 0.1.1 + resolution: "tdigest@npm:0.1.1" dependencies: - bintrees: 1.0.2 - checksum: 44de8246752b6f8c2924685f969fd3d94c36949f22b0907e99bef2b2220726dd8467f4730ea96b06040b9aa2587c0866049640039d1b956952dfa962bc2075a3 + bintrees: 1.0.1 + checksum: 4d05fd70fb0aa70aa101d01557722b7ef9a91b2ebf8dfc274ca9852220397a74e4ed6e59c55335b4b1dd0ac5e1b65d25b8d32ae01278fc3b783c40f6d84303e2 languageName: node linkType: hard "teeny-request@npm:^8.0.0": - version: 8.0.3 - resolution: "teeny-request@npm:8.0.3" + version: 8.0.2 + resolution: "teeny-request@npm:8.0.2" dependencies: http-proxy-agent: ^5.0.0 https-proxy-agent: ^5.0.0 node-fetch: ^2.6.1 stream-events: ^1.0.5 uuid: ^9.0.0 - checksum: 6682a14df3708068db147c91af5f2b2e097e2e53c03dddaef40f6f974297f2da9e6112c615af9fbc84a1685c6846b8a9e485771d1a350aa25e9ff5fcf63dd821 + checksum: 9617354dfa7cc31676aa614db02f0f6cfdda3ee135f11fcfce99aab7f838ac2c37a5010995d4fe669b26779120f79a03a19d6ff7ae82dfe69677171a3303cb87 languageName: node linkType: hard -"telejson@npm:^7.0.3, telejson@npm:^7.2.0": +"telejson@npm:^7.0.3": + version: 7.1.0 + resolution: "telejson@npm:7.1.0" + dependencies: + memoizerific: ^1.11.3 + checksum: 8000e43dc862a87ab1ca342a2635641923d55c2585f85ea8c7c60293681d6f920e8b9570cc12d90ecef286f065c176da5f769f42f4828ba18a626627bed1ac07 + languageName: node + linkType: hard + +"telejson@npm:^7.2.0": version: 7.2.0 resolution: "telejson@npm:7.2.0" dependencies: @@ -47948,9 +54359,9 @@ __metadata: linkType: hard "templite@npm:^1.1.0": - version: 1.2.0 - resolution: "templite@npm:1.2.0" - checksum: 4c02803b99320b1fe401ee1a4c15f1699a84dca0176d5ca847d8e3b55ce2dd7796e9ccd59209252f8fceefdc6ee41c0f92843f506c1a3d8ac45aba6ed37bb157 + version: 1.1.0 + resolution: "templite@npm:1.1.0" + checksum: 380a7ad18ac47f71f33a3a01beb0c99f64041b0793301861081f97d2789b78ad66624a889152c596e8bcd7927f3876c2e904811a52a4913991ec211010a052da languageName: node linkType: hard @@ -48001,15 +54412,15 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.3": - version: 5.3.10 - resolution: "terser-webpack-plugin@npm:5.3.10" +"terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.3, terser-webpack-plugin@npm:^5.3.7": + version: 5.3.9 + resolution: "terser-webpack-plugin@npm:5.3.9" dependencies: - "@jridgewell/trace-mapping": ^0.3.20 + "@jridgewell/trace-mapping": ^0.3.17 jest-worker: ^27.4.5 schema-utils: ^3.1.1 serialize-javascript: ^6.0.1 - terser: ^5.26.0 + terser: ^5.16.8 peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -48019,13 +54430,41 @@ __metadata: optional: true uglify-js: optional: true - checksum: bd6e7596cf815f3353e2a53e79cbdec959a1b0276f5e5d4e63e9d7c3c5bb5306df567729da287d1c7b39d79093e56863c569c42c6c24cc34c76aa313bd2cbcea + checksum: 41705713d6f9cb83287936b21e27c658891c78c4392159f5148b5623f0e8c48559869779619b058382a4c9758e7820ea034695e57dc7c474b4962b79f553bc5f languageName: node linkType: hard -"terser@npm:^5.10.0, terser@npm:^5.15.0, terser@npm:^5.26.0": - version: 5.36.0 - resolution: "terser@npm:5.36.0" +"terser@npm:^5.10.0": + version: 5.12.1 + resolution: "terser@npm:5.12.1" + dependencies: + acorn: ^8.5.0 + commander: ^2.20.0 + source-map: ~0.7.2 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: dd33af5d87a1159bcc38f354707505f1449a33d1491c512e9536f11fea7c3474cdc40e2e5fdf75f58658cfaab8ef47cb7454acd6406b2ce487675cb1978c6275 + languageName: node + linkType: hard + +"terser@npm:^5.15.0": + version: 5.16.9 + resolution: "terser@npm:5.16.9" + dependencies: + "@jridgewell/source-map": ^0.3.2 + acorn: ^8.5.0 + commander: ^2.20.0 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: b373693ee01ce08cc9b9595d57df889acbbc899d929a7fe53662330ce954d53145582f6715c9cc4839d555f5769a28fbeb203155b54e3a9c6c646db292002edd + languageName: node + linkType: hard + +"terser@npm:^5.16.8": + version: 5.17.7 + resolution: "terser@npm:5.17.7" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -48033,7 +54472,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 489afd31901a2b170f7766948a3aa0e25da0acb41e9e35bd9f9b4751dfa2fc846e485f6fb9d34f0839a96af77f675b5fbf0a20c9aa54e0b8d7c219cf0b55e508 + checksum: b7b17b281febadf3bea9b9412d699fa24edf9b3e20fc7ad4e1a9cec276bdb65ddaa291c9663d5ab66b58834e433377477f73328574ccab2da1637a15b095811d languageName: node linkType: hard @@ -48068,13 +54507,6 @@ __metadata: languageName: node linkType: hard -"text-decoder@npm:^1.1.0": - version: 1.2.1 - resolution: "text-decoder@npm:1.2.1" - checksum: 0f42deda4a8f111af67f81f292e823f2bdcc85057fdeef35e3a5dda6b501605a1d449927a4a440af4485fbd02198b5baf722d146a195c1b1b211cdd37292ac66 - languageName: node - linkType: hard - "text-decoding@npm:^1.0.0": version: 1.0.0 resolution: "text-decoding@npm:1.0.0" @@ -48129,13 +54561,13 @@ __metadata: linkType: hard "throttleit@npm:^1.0.0": - version: 1.0.1 - resolution: "throttleit@npm:1.0.1" - checksum: 32e0b12ca5810cd34dfce0408c7cb658dfd039848a073466eaac667ce6e846cafa53ac518e4b01dc6f34e6652b66fd29a5c6b666718ec5086ef328a9d029dc75 + version: 1.0.0 + resolution: "throttleit@npm:1.0.0" + checksum: 1b2db4d2454202d589e8236c07a69d2fab838876d370030ebea237c34c0a7d1d9cf11c29f994531ebb00efd31e9728291042b7754f2798a8352ec4463455b659 languageName: node linkType: hard -"through2@npm:^2.0.1, through2@npm:^2.0.3": +"through2@npm:^2.0.0, through2@npm:^2.0.1, through2@npm:^2.0.3, through2@npm:~2.0.3": version: 2.0.5 resolution: "through2@npm:2.0.5" dependencies: @@ -48160,12 +54592,12 @@ __metadata: linkType: hard "timers-ext@npm:^0.1.7": - version: 0.1.8 - resolution: "timers-ext@npm:0.1.8" + version: 0.1.7 + resolution: "timers-ext@npm:0.1.7" dependencies: - es5-ext: ^0.10.64 - next-tick: ^1.1.0 - checksum: 7d37f90bdcee900aa4ba13e983905e2d16538bb13d38315f1ea3670656d91e7898f018909caedc8ebe964974ddeb3eedb5ffdc21f2329e34e6bcc353d0ee2903 + es5-ext: ~0.10.46 + next-tick: 1 + checksum: ef3f27a0702a88d885bcbb0317c3e3ecd094ce644da52e7f7d362394a125d9e3578292a8f8966071a980d8abbc3395725333b1856f3ae93835b46589f700d938 languageName: node linkType: hard @@ -48183,20 +54615,13 @@ __metadata: languageName: node linkType: hard -"tiny-invariant@npm:1.3.1": +"tiny-invariant@npm:1.3.1, tiny-invariant@npm:^1.0.0, tiny-invariant@npm:^1.3.1": version: 1.3.1 resolution: "tiny-invariant@npm:1.3.1" checksum: 872dbd1ff20a21303a2fd20ce3a15602cfa7fcf9b228bd694a52e2938224313b5385a1078cb667ed7375d1612194feaca81c4ecbe93121ca1baebe344de4f84c languageName: node linkType: hard -"tiny-invariant@npm:^1.0.0, tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": - version: 1.3.3 - resolution: "tiny-invariant@npm:1.3.3" - checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe - languageName: node - linkType: hard - "tiny-warning@npm:^1.0.2, tiny-warning@npm:^1.0.3": version: 1.0.3 resolution: "tiny-warning@npm:1.0.3" @@ -48220,6 +54645,13 @@ __metadata: languageName: node linkType: hard +"titleize@npm:^3.0.0": + version: 3.0.0 + resolution: "titleize@npm:3.0.0" + checksum: 71fbbeabbfb36ccd840559f67f21e356e1d03da2915b32d2ae1a60ddcc13a124be2739f696d2feb884983441d159a18649e8d956648d591bdad35c430a6b6d28 + languageName: node + linkType: hard + "tlds@npm:1.231.0": version: 1.231.0 resolution: "tlds@npm:1.231.0" @@ -48255,13 +54687,15 @@ __metadata: linkType: hard "tmp@npm:^0.2.1, tmp@npm:~0.2.1": - version: 0.2.3 - resolution: "tmp@npm:0.2.3" - checksum: 73b5c96b6e52da7e104d9d44afb5d106bb1e16d9fa7d00dbeb9e6522e61b571fbdb165c756c62164be9a3bbe192b9b268c236d370a2a0955c7689cd2ae377b95 + version: 0.2.1 + resolution: "tmp@npm:0.2.1" + dependencies: + rimraf: ^3.0.0 + checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e languageName: node linkType: hard -"tmpl@npm:1.0.5": +"tmpl@npm:1.0.5, tmpl@npm:1.0.x": version: 1.0.5 resolution: "tmpl@npm:1.0.5" checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 @@ -48285,6 +54719,13 @@ __metadata: languageName: node linkType: hard +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + languageName: node + linkType: hard + "to-querystring@npm:1.1.1": version: 1.1.1 resolution: "to-querystring@npm:1.1.1" @@ -48302,9 +54743,9 @@ __metadata: linkType: hard "tocbot@npm:^4.20.1": - version: 4.31.0 - resolution: "tocbot@npm:4.31.0" - checksum: 227961edf32f5407c607658885ed361e54ba2995ed28522256441150b31f2abd6c58fe38c262db48b73429459f7bc621f8a5123ab75d56c907d16920e291326e + version: 4.21.1 + resolution: "tocbot@npm:4.21.1" + checksum: c1cdccae0139a731ab007b7537b7cc71229beb0a7ad9b20bd277db2915808855720d256bfa76a868fbd608e8aab02d9fcc38a93a7beebd869cb7816a66acc148 languageName: node linkType: hard @@ -48322,6 +54763,15 @@ __metadata: languageName: node linkType: hard +"topo@npm:2.x.x": + version: 2.0.2 + resolution: "topo@npm:2.0.2" + dependencies: + hoek: 4.x.x + checksum: 02ecb8cba2aa46abb94cc2a4459bd39874ba84a712aa51d482fdcddf16ea0bf69f232e55e6a2c32653f7c15d619a29567f97c5c8cb402257ddcb6794a55720bc + languageName: node + linkType: hard + "topo@npm:3.x.x": version: 3.0.3 resolution: "topo@npm:3.0.3" @@ -48345,15 +54795,36 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.2, tough-cookie@npm:^4.1.3": - version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" +"tough-cookie@npm:^4.0.0": + version: 4.0.0 + resolution: "tough-cookie@npm:4.0.0" + dependencies: + psl: ^1.1.33 + punycode: ^2.1.1 + universalify: ^0.1.2 + checksum: 0891b37eb7d17faa3479d47f0dce2e3007f2583094ad272f2670d120fbcc3df3b0b0a631ba96ecad49f9e2297d93ff8995ce0d3292d08dd7eabe162f5b224d69 + languageName: node + linkType: hard + +"tough-cookie@npm:^4.1.2, tough-cookie@npm:^4.1.3": + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" dependencies: psl: ^1.1.33 punycode: ^2.1.1 universalify: ^0.2.0 url-parse: ^1.5.3 - checksum: 5815059f014c31179a303c673f753f7899a6fce94ac93712c88ea5f3c26e0c042b5f0c7a599a00f8e0feeca4615dba75c3dffc54f3c1a489978aa8205e09307c + checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc + languageName: node + linkType: hard + +"tough-cookie@npm:~2.5.0": + version: 2.5.0 + resolution: "tough-cookie@npm:2.5.0" + dependencies: + psl: ^1.1.28 + punycode: ^2.1.1 + checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 languageName: node linkType: hard @@ -48399,13 +54870,9 @@ __metadata: linkType: hard "traverse@npm:~0.6.6": - version: 0.6.10 - resolution: "traverse@npm:0.6.10" - dependencies: - gopd: ^1.0.1 - typedarray.prototype.slice: ^1.0.3 - which-typed-array: ^1.1.15 - checksum: ff25d30726db4867c01ff1f1bd8a5e3356b920c4d674ddf6c3764179bb54766cf1ad0158bbd65667e1f5fbde2d4efbd814d7b24d44149cc31255f0cfe2ab2095 + version: 0.6.7 + resolution: "traverse@npm:0.6.7" + checksum: 21018085ab72f717991597e12e2b52446962ed59df591502e4d7e1a709bc0a989f7c3d451aa7d882666ad0634f1546d696c5edecda1f2fc228777df7bb529a1e languageName: node linkType: hard @@ -48439,27 +54906,13 @@ __metadata: languageName: node linkType: hard -"trim-right@npm:^1.0.1": - version: 1.0.1 - resolution: "trim-right@npm:1.0.1" - checksum: 9120af534e006a7424a4f9358710e6e707887b6ccf7ea69e50d6ac6464db1fe22268400def01752f09769025d480395159778153fb98d4a2f6f40d4cf5d4f3b6 - languageName: node - linkType: hard - -"triple-beam@npm:1.3.0": +"triple-beam@npm:1.3.0, triple-beam@npm:^1.3.0": version: 1.3.0 resolution: "triple-beam@npm:1.3.0" checksum: 7d7b77d8625fb252c126c24984a68de462b538a8fcd1de2abd0a26421629cf3527d48e23b3c2264f08f4a6c3bc40a478a722176f4d7b6a1acc154cb70c359f2b languageName: node linkType: hard -"triple-beam@npm:^1.3.0": - version: 1.4.1 - resolution: "triple-beam@npm:1.4.1" - checksum: 2e881a3e8e076b6f2b85b9ec9dd4a900d3f5016e6d21183ed98e78f9abcc0149e7d54d79a3f432b23afde46b0885bdcdcbff789f39bc75de796316961ec07f61 - languageName: node - linkType: hard - "trough@npm:^1.0.0": version: 1.0.5 resolution: "trough@npm:1.0.5" @@ -48468,9 +54921,9 @@ __metadata: linkType: hard "trough@npm:^2.0.0": - version: 2.2.0 - resolution: "trough@npm:2.2.0" - checksum: 6097df63169aca1f9b08c263b1b501a9b878387f46e161dde93f6d0bba7febba93c95f876a293c5ea370f6cb03bcb687b2488c8955c3cfb66c2c0161ea8c00f6 + version: 2.1.0 + resolution: "trough@npm:2.1.0" + checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886 languageName: node linkType: hard @@ -48488,7 +54941,7 @@ __metadata: languageName: node linkType: hard -"tryer@npm:^1.0.1": +"tryer@npm:^1.0.0, tryer@npm:^1.0.1": version: 1.0.1 resolution: "tryer@npm:1.0.1" checksum: 1cf14d7f67c79613f054b569bfc9a89c7020d331573a812dfcf7437244e8f8e6eb6893b210cbd9cc217f67c1d72617f89793df231e4fe7d53634ed91cf3a89d1 @@ -48504,14 +54957,14 @@ __metadata: languageName: node linkType: hard -"ts-dedent@npm:2.0.0": +"ts-dedent@npm:2.0.0, ts-dedent@npm:^2.0.0": version: 2.0.0 resolution: "ts-dedent@npm:2.0.0" checksum: 6a155072be186cdf9dca922ac1c213220a09f4fff44243dd345870a3efe7bb9c1666bb69eb62c07ad01da38130e033a2f204558615fc9d2ed76294ba0a012944 languageName: node linkType: hard -"ts-dedent@npm:^2.0.0, ts-dedent@npm:^2.2.0": +"ts-dedent@npm:^2.2.0": version: 2.2.0 resolution: "ts-dedent@npm:2.2.0" checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af @@ -48534,10 +54987,10 @@ __metadata: languageName: node linkType: hard -"ts-graphviz@npm:^1.5.4": - version: 1.8.2 - resolution: "ts-graphviz@npm:1.8.2" - checksum: 73723d6d9b9b29073ff659b38e8a8443a024d515a30fd77dfb00a9df0e835739f2522c303a353e63bbd39115e23b34c9d92dd66f72590cf5f92d3a447255f9b9 +"ts-graphviz@npm:^0.16.0": + version: 0.16.0 + resolution: "ts-graphviz@npm:0.16.0" + checksum: 608f4bb240374717a01875d54e073191120bb5c23710706d31cb294814192586689fd22b8455293cabf8ffda2ba89e9302cda6ce937cf157c4495a6915969151 languageName: node linkType: hard @@ -48591,25 +55044,24 @@ __metadata: linkType: hard "ts-loader@npm:^9.3.1": - version: 9.5.1 - resolution: "ts-loader@npm:9.5.1" + version: 9.4.3 + resolution: "ts-loader@npm:9.4.3" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.0.0 micromatch: ^4.0.0 semver: ^7.3.4 - source-map: ^0.7.4 peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: 7cf396e656d905388ea2a9b5e82f16d3c955fda8d3df2fbf219f4bee16ff50a3c995c44ae3e584634e9443f056cec70bb3151add3917ffb4588ecd7394bac0ec + checksum: 139ed53bc60717d0ca231cdffbdef7566b9feda11c72fecc697983113f1266ccca2e1cdf191f841a43afa6b87d6afe57a0caf4feecf02f30845aa7ac6f2411a4 languageName: node linkType: hard "ts-log@npm:^2.2.3": - version: 2.2.7 - resolution: "ts-log@npm:2.2.7" - checksum: c423a5eb54abb9471578902953814d3d0c88b3f237db016998f8998ecf982cb0f748bb8ebf93670eeba9b836ff0ce407d8065a340f3ab218ea7b9442c255b3d4 + version: 2.2.5 + resolution: "ts-log@npm:2.2.5" + checksum: 28f78ab15b8555d56c089dbc243327d8ce4331219956242a29fc4cb3bad6bb0cb8234dd17a292381a1b1dba99a7e4849a2181b2e1a303e8247e9f4ca4e284f2d languageName: node linkType: hard @@ -48623,7 +55075,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:10.9.1": +"ts-node@npm:10.9.1, ts-node@npm:^10.8.1": version: 10.9.1 resolution: "ts-node@npm:10.9.1" dependencies: @@ -48699,13 +55151,6 @@ __metadata: languageName: node linkType: hard -"ts-toolbelt@npm:^9.6.0": - version: 9.6.0 - resolution: "ts-toolbelt@npm:9.6.0" - checksum: 9f35fd95d895a5d32ea9fd2e532a695b0bae6cbff6832b77292efa188a0ed1ed6e54f63f74a8920390f3d909a7a3adb20a144686372a8e78b420246a9bd3d58a - languageName: node - linkType: hard - "tsconfig-paths-webpack-plugin@npm:4.0.0": version: 4.0.0 resolution: "tsconfig-paths-webpack-plugin@npm:4.0.0" @@ -48717,7 +55162,19 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1, tsconfig-paths@npm:^3.15.0": +"tsconfig-paths@npm:^3.14.1, tsconfig-paths@npm:^3.9.0": + version: 3.14.1 + resolution: "tsconfig-paths@npm:3.14.1" + dependencies: + "@types/json5": ^0.0.29 + json5: ^1.0.1 + minimist: ^1.2.6 + strip-bom: ^3.0.0 + checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" dependencies: @@ -48747,21 +55204,21 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.4.0": +"tslib@npm:2.4.0, tslib@npm:^2.4.0, tslib@npm:~2.4.0": version: 2.4.0 resolution: "tslib@npm:2.4.0" checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113 languageName: node linkType: hard -"tslib@npm:2.5.0": +"tslib@npm:2.5.0, tslib@npm:^2.4.1": version: 2.5.0 resolution: "tslib@npm:2.5.0" checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 languageName: node linkType: hard -"tslib@npm:2.5.3, tslib@npm:~2.5.0": +"tslib@npm:2.5.3, tslib@npm:^2.5.0, tslib@npm:~2.5.0": version: 2.5.3 resolution: "tslib@npm:2.5.3" checksum: 88902b309afaf83259131c1e13da1dceb0ad1682a213143a1346a649143924d78cf3760c448b84d796938fd76127183894f8d85cbb3bf9c4fddbfcc140c0003c @@ -48775,14 +55232,14 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.6.2": +"tslib@npm:2.6.2, tslib@npm:^2.6.1, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad languageName: node linkType: hard -"tslib@npm:2.6.3, tslib@npm:~2.6.0": +"tslib@npm:2.6.3, tslib@npm:^2.6.3": version: 2.6.3 resolution: "tslib@npm:2.6.3" checksum: 74fce0e100f1ebd95b8995fbbd0e6c91bdd8f4c35c00d4da62e285a3363aaa534de40a80db30ecfd388ed7c313c42d930ee0eaf108e8114214b180eec3dbe6f5 @@ -48796,17 +55253,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.7.0": - version: 2.8.0 - resolution: "tslib@npm:2.8.0" - checksum: de852ecd81adfdb4870927e250763345f07dc13fe7f395ce261424966bb122a0992ad844c3ec875c9e63e72afe2220a150712984e44dfd1a8a7e538a064e3d46 - languageName: node - linkType: hard - -"tslib@npm:~2.4.0": - version: 2.4.1 - resolution: "tslib@npm:2.4.1" - checksum: 19480d6e0313292bd6505d4efe096a6b31c70e21cf08b5febf4da62e95c265c8f571f7b36fcc3d1a17e068032f59c269fab3459d6cd3ed6949eafecf64315fca +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1": + version: 2.3.1 + resolution: "tslib@npm:2.3.1" + checksum: de17a98d4614481f7fcb5cd53ffc1aaf8654313be0291e1bfaee4b4bb31a20494b7d218ff2e15017883e8ea9626599b3b0e0229c18383ba9dce89da2adf15cb9 languageName: node linkType: hard @@ -48876,6 +55326,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:0.20.2, type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 + languageName: node + linkType: hard + "type-fest@npm:1.1.3": version: 1.1.3 resolution: "type-fest@npm:1.1.3" @@ -48897,13 +55354,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -48939,17 +55389,24 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^2.19.0, type-fest@npm:^2.5.3, type-fest@npm:~2.19": +"type-fest@npm:^2.19.0, type-fest@npm:~2.19": version: 2.19.0 resolution: "type-fest@npm:2.19.0" checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 languageName: node linkType: hard +"type-fest@npm:^3.0.0": + version: 3.6.0 + resolution: "type-fest@npm:3.6.0" + checksum: 3cb3b27fc1dc69e0a7524041d9d32cfd3786b16591952e0b2b87ca44b53acaed1bf86ee62a7cc3033a55154d44542e8b488d500d1b363d828f62a9fae9d2a043 + languageName: node + linkType: hard + "type-fest@npm:^4.0.0": - version: 4.26.1 - resolution: "type-fest@npm:4.26.1" - checksum: 7188db3bca82afa62c69a8043fb7c5eb74e63c45e7e28efb986da1629d844286f7181bc5a8185f38989fffff0d6c96be66fd13529b01932d1b6ebe725181d31a + version: 4.16.0 + resolution: "type-fest@npm:4.16.0" + checksum: 586fcaa07a20c04662840f5b1a0f003c0184d8e4c621623ec85d4e0bfa6f580c4f4060d406d6800d267e9d671c4d8272b6f77ea996f0db8ebbc80987054316ec languageName: node linkType: hard @@ -48963,10 +55420,17 @@ __metadata: languageName: node linkType: hard -"type@npm:^2.7.2": - version: 2.7.3 - resolution: "type@npm:2.7.3" - checksum: 69cfda3248847998f93b9d292fd251c10facf8d29513e2047d4684509d67bae82d910d7a00c1e9d9bbf2af242d36425b6616807d6c652c5c370c2be1f0008a47 +"type@npm:^1.0.1": + version: 1.2.0 + resolution: "type@npm:1.2.0" + checksum: dae8c64f82c648b985caf321e9dd6e8b7f4f2e2d4f846fc6fd2c8e9dc7769382d8a52369ddbaccd59aeeceb0df7f52fb339c465be5f2e543e81e810e413451ee + languageName: node + linkType: hard + +"type@npm:^2.0.0": + version: 2.5.0 + resolution: "type@npm:2.5.0" + checksum: 0fe1bb4e8ba298b2b245fdc6bca6178887e29e2134d231e468366615b3adffd651d464eb51d8b15f8cfd168577c282a17e19bf80f036a60d4df16308a83a93c4 languageName: node linkType: hard @@ -49050,20 +55514,6 @@ __metadata: languageName: node linkType: hard -"typedarray.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "typedarray.prototype.slice@npm:1.0.3" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.0 - es-errors: ^1.3.0 - typed-array-buffer: ^1.0.2 - typed-array-byte-offset: ^1.0.2 - checksum: 07bfebdfb7a67b2a80557bf4f1061d8a68ee847d7f04c91c7aa327aa90681f97e1ea3efef17b3b8f336a7f2da1d2ff95dd92de59a4788b4e6373318b27fca2c1 - languageName: node - linkType: hard - "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -49072,85 +55522,28 @@ __metadata: linkType: hard "typeorm@npm:^0.2.30": - version: 0.2.45 - resolution: "typeorm@npm:0.2.45" + version: 0.2.31 + resolution: "typeorm@npm:0.2.31" dependencies: - "@sqltools/formatter": ^1.2.2 + "@sqltools/formatter": 1.2.2 app-root-path: ^3.0.0 - buffer: ^6.0.3 + buffer: ^5.5.0 chalk: ^4.1.0 - cli-highlight: ^2.1.11 - debug: ^4.3.1 + cli-highlight: ^2.1.10 + debug: ^4.1.1 dotenv: ^8.2.0 glob: ^7.1.6 - js-yaml: ^4.0.0 + js-yaml: ^3.14.0 mkdirp: ^1.0.4 reflect-metadata: ^0.1.13 sha.js: ^2.4.11 - tslib: ^2.1.0 - uuid: ^8.3.2 + tslib: ^1.13.0 xml2js: ^0.4.23 - yargs: ^17.0.1 - zen-observable-ts: ^1.0.0 - peerDependencies: - "@sap/hana-client": ^2.11.14 - better-sqlite3: ^7.1.2 - hdb-pool: ^0.1.6 - ioredis: ^4.28.3 - mongodb: ^3.6.0 - mssql: ^6.3.1 - mysql2: ^2.2.5 - oracledb: ^5.1.0 - pg: ^8.5.1 - pg-native: ^3.0.0 - pg-query-stream: ^4.0.0 - redis: ^3.1.1 - sql.js: ^1.4.0 - sqlite3: ^5.0.2 - typeorm-aurora-data-api-driver: ^2.0.0 - peerDependenciesMeta: - "@sap/hana-client": - optional: true - better-sqlite3: - optional: true - hdb-pool: - optional: true - ioredis: - optional: true - mongodb: - optional: true - mssql: - optional: true - mysql2: - optional: true - oracledb: - optional: true - pg: - optional: true - pg-native: - optional: true - pg-query-stream: - optional: true - redis: - optional: true - sql.js: - optional: true - sqlite3: - optional: true - typeorm-aurora-data-api-driver: - optional: true + yargonaut: ^1.1.2 + yargs: ^16.0.3 bin: typeorm: cli.js - checksum: b7684a52c8ba3b796fb9f7d9ea6223edd9256dbeec67c4befe39515ce684dd684d82a2d53158b738555f5c964efaf09144bdd3ced046638e89aa46483d9a696b - languageName: node - linkType: hard - -"types-ramda@npm:^0.29.4": - version: 0.29.10 - resolution: "types-ramda@npm:0.29.10" - dependencies: - ts-toolbelt: ^9.6.0 - checksum: 9308ad9ed0b53a3d108e605b59452249e0dac529972ec35d2ff9e90cb325e0960406e16e1712aa781bd1293dea49469420aeafcc30f0e72d46182287450665fc + checksum: 8d38f1950c7420ebe6155427c4e70c4487800f4ae93e666c8e935b3417e6003f493d0f42af616612f6dd12e5199787e1ea2c20b43209750e58ef8ada155b284c languageName: node linkType: hard @@ -49174,7 +55567,17 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.0, typescript@npm:^4.3": +"typescript@npm:^4.0, typescript@npm:^4.5.3": + version: 4.6.3 + resolution: "typescript@npm:4.6.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 255bb26c8cb846ca689dd1c3a56587af4f69055907aa2c154796ea28ee0dea871535b1c78f85a6212c77f2657843a269c3a742d09d81495b97b914bf7920415b + languageName: node + linkType: hard + +"typescript@npm:^4.3": version: 4.9.5 resolution: "typescript@npm:4.9.5" bin: @@ -49184,13 +55587,13 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.2.2": - version: 5.6.3 - resolution: "typescript@npm:5.6.3" +"typescript@npm:^4.4.2": + version: 4.8.4 + resolution: "typescript@npm:4.8.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ba302f8822777ebefb28b554105f3e074466b671e7444ec6b75dadc008a62f46f373d9e57ceced1c433756d06c8b7dc569a7eefdf3a9573122a49205ff99021a + checksum: 3e4f061658e0c8f36c820802fa809e0fd812b85687a9a2f5430bc3d0368e37d1c9605c3ce9b39df9a05af2ece67b1d844f9f6ea8ff42819f13bcb80f85629af0 languageName: node linkType: hard @@ -49214,7 +55617,17 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^4.0#~builtin<compat/typescript>, typescript@patch:typescript@^4.3#~builtin<compat/typescript>": +"typescript@patch:typescript@^4.0#~builtin<compat/typescript>, typescript@patch:typescript@^4.5.3#~builtin<compat/typescript>": + version: 4.6.3 + resolution: "typescript@patch:typescript@npm%3A4.6.3#~builtin<compat/typescript>::version=4.6.3&hash=a1c5e5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 6bf45caf847062420592e711bc9c28bf5f9a9a7fa8245343b81493e4ededae33f1774009d1234d911422d1646a2c839f44e1a23ecb111b40a60ac2ea4c1482a8 + languageName: node + linkType: hard + +"typescript@patch:typescript@^4.3#~builtin<compat/typescript>": version: 4.9.5 resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=a1c5e5" bin: @@ -49224,13 +55637,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^5.2.2#~builtin<compat/typescript>": - version: 5.6.3 - resolution: "typescript@patch:typescript@npm%3A5.6.3#~builtin<compat/typescript>::version=5.6.3&hash=a1c5e5" +"typescript@patch:typescript@^4.4.2#~builtin<compat/typescript>": + version: 4.8.4 + resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin<compat/typescript>::version=4.8.4&hash=a1c5e5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: f9bb3f4cc757056e61272a3f47fcf3e51532bd1dafa70ddf0b4c7e18c5b8608185455bb9ddf32c0c1f847d480bf9f48e401a98cff19f3d13f02f6758eee4a10d + checksum: 563a0ef47abae6df27a9a3ab38f75fc681f633ccf1a3502b1108e252e187787893de689220f4544aaf95a371a4eb3141e4a337deb9895de5ac3c1ca76430e5f0 languageName: node linkType: hard @@ -49241,12 +55654,10 @@ __metadata: languageName: node linkType: hard -"ua-parser-js@npm:^1.0.35": - version: 1.0.39 - resolution: "ua-parser-js@npm:1.0.39" - bin: - ua-parser-js: script/cli.js - checksum: 19455df8c2348ef53f2e150e7406d3a025a619c2fd69722a1e63363d5ba8d91731ef7585f2dce7d8f14c8782734b4d704c05f246dca5f7565b5ae7d318084f2a +"ua-parser-js@npm:^0.7.18": + version: 0.7.24 + resolution: "ua-parser-js@npm:0.7.24" + checksum: 722e0291fe6ad0d439cd29c4cd919f4e1b7262fe78e4c2149756180f8ad723ae04713839115eeb8738aca6d6258a743668090fb1e1417bc1fba27acc815a84e2 languageName: node linkType: hard @@ -49259,20 +55670,13 @@ __metadata: languageName: node linkType: hard -"uc.micro@npm:^1.0.1": +"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": version: 1.0.6 resolution: "uc.micro@npm:1.0.6" checksum: 6898bb556319a38e9cf175e3628689347bd26fec15fc6b29fa38e0045af63075ff3fea4cf1fdba9db46c9f0cbf07f2348cd8844889dd31ebd288c29fe0d27e7a languageName: node linkType: hard -"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0": - version: 2.1.0 - resolution: "uc.micro@npm:2.1.0" - checksum: 37197358242eb9afe367502d4638ac8c5838b78792ab218eafe48287b0ed28aaca268ec0392cc5729f6c90266744de32c06ae938549aee041fc93b0f9672d6b2 - languageName: node - linkType: hard - "ucfirst@npm:^1.0.0": version: 1.0.0 resolution: "ucfirst@npm:1.0.0" @@ -49280,19 +55684,21 @@ __metadata: languageName: node linkType: hard -"ufo@npm:^1.5.4": - version: 1.5.4 - resolution: "ufo@npm:1.5.4" - checksum: f244703b7d4f9f0df4f9af23921241ab73410b591f4e5b39c23e3147f3159b139a4b1fb5903189c306129f7a16b55995dac0008e0fbae88a37c3e58cbc34d833 +"uglify-js@npm:^3.1.4": + version: 3.13.9 + resolution: "uglify-js@npm:3.13.9" + bin: + uglifyjs: bin/uglifyjs + checksum: 4592c78a2fe3148e88da8285951d721a96ade41eb81878cc1f38e81c2afae2a3446c234c801fcd20c524c3dd3385caf06b882dccb42c8f79bf1482882fe3e142 languageName: node linkType: hard -"uglify-js@npm:^3.1.4, uglify-js@npm:^3.7.7": - version: 3.19.3 - resolution: "uglify-js@npm:3.19.3" +"uglify-js@npm:^3.7.7": + version: 3.17.4 + resolution: "uglify-js@npm:3.17.4" bin: uglifyjs: bin/uglifyjs - checksum: 7ed6272fba562eb6a3149cfd13cda662f115847865c03099e3995a0e7a910eba37b82d4fccf9e88271bb2bcbe505bb374967450f433c17fa27aa36d94a8d0553 + checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf924 languageName: node linkType: hard @@ -49314,6 +55720,18 @@ __metadata: languageName: node linkType: hard +"unbox-primitive@npm:^1.0.1": + version: 1.0.1 + resolution: "unbox-primitive@npm:1.0.1" + dependencies: + function-bind: ^1.1.1 + has-bigints: ^1.0.1 + has-symbols: ^1.0.2 + which-boxed-primitive: ^1.0.2 + checksum: 89d950e18fb45672bc6b3c961f1e72c07beb9640c7ceed847b571ba6f7d2af570ae1a2584cfee268b9d9ea1e3293f7e33e0bc29eaeb9f8e8a0bab057ff9e6bba + languageName: node + linkType: hard + "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" @@ -49333,17 +55751,10 @@ __metadata: languageName: node linkType: hard -"underscore@npm:1.12.1": - version: 1.12.1 - resolution: "underscore@npm:1.12.1" - checksum: ec327603aa112b99fe9d74cd9bf3b3b7451465a9d2610ceab269a532e3f191650ab017903be34dc86fe406a11d04d8905a3b04dd4c129493e51bee09a3f3074c - languageName: node - linkType: hard - "underscore@npm:^1.13.1, underscore@npm:~1.13.2": - version: 1.13.7 - resolution: "underscore@npm:1.13.7" - checksum: 174b011af29e4fbe2c70eb2baa8bfab0d0336cf2f5654f364484967bc6264a86224d0134b9176e4235c8cceae00d11839f0fd4824268de04b11c78aca1241684 + version: 1.13.6 + resolution: "underscore@npm:1.13.6" + checksum: d5cedd14a9d0d91dd38c1ce6169e4455bb931f0aaf354108e47bd46d3f2da7464d49b2171a5cf786d61963204a42d01ea1332a903b7342ad428deaafaf70ec36 languageName: node linkType: hard @@ -49354,26 +55765,12 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.2": - version: 6.19.8 - resolution: "undici-types@npm:6.19.8" - checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 - languageName: node - linkType: hard - -"undici@npm:^5.8.0": - version: 5.28.4 - resolution: "undici@npm:5.28.4" +"undici@npm:^5.10.0, undici@npm:^5.8.0": + version: 5.11.0 + resolution: "undici@npm:5.11.0" dependencies: - "@fastify/busboy": ^2.0.0 - checksum: a8193132d84540e4dc1895ecc8dbaa176e8a49d26084d6fbe48a292e28397cd19ec5d13bc13e604484e76f94f6e334b2bdc740d5f06a6e50c44072818d0c19f9 - languageName: node - linkType: hard - -"undici@npm:^6.19.5": - version: 6.20.1 - resolution: "undici@npm:6.20.1" - checksum: 3bb1405b406fa0e913ff4ec6fd310c9b4d950b7064ba5949b2f616c1f13070d26f5558aefb4b56b2eafb555925443ce44cb801e143d2417ecf12ddf8d5c05cf6 + busboy: ^1.6.0 + checksum: 20669ef4023d24a75e81ed8142829f525f16af14d61f833b5f19cfc6bed7c706adde343a190d764dcceb227eba3211222d2b194010462a2ca221a7da0487f563 languageName: node linkType: hard @@ -49394,9 +55791,9 @@ __metadata: linkType: hard "unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.1 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" - checksum: 3c3dabdb1d22aef4904399f9e810d0b71c0b12b3815169d96fac97e56d5642840c6071cf709adcace2252bc6bb80242396c2ec74b37224eb015c5f7aca40bad7 + version: 2.0.0 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" + checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 languageName: node linkType: hard @@ -49410,10 +55807,17 @@ __metadata: languageName: node linkType: hard +"unicode-match-property-value-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.0.0" + checksum: 8fe6a09d9085a625cabcead5d95bdbc1a2d5d481712856092ce0347231e81a60b93a68f1b69e82b3076a07e415a72c708044efa2aa40ae23e2e7b5c99ed4a9ea + languageName: node + linkType: hard + "unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.2.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" - checksum: 9e3151e1d0bc6be35c4cef105e317c04090364173e8462005b5cde08a1e7c858b6586486cfebac39dc2c6c8c9ee24afb245de6d527604866edfa454fe2a35fae + version: 2.1.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" + checksum: 8d6f5f586b9ce1ed0e84a37df6b42fdba1317a05b5df0c249962bd5da89528771e2d149837cad11aa26bcb84c35355cb9f58a10c3d41fa3b899181ece6c85220 languageName: node linkType: hard @@ -49428,9 +55832,19 @@ __metadata: linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b + version: 2.0.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.0.0" + checksum: dda4d39128cbbede2ac60fbb85493d979ec65913b8a486bf7cb7a375a2346fa48cbf9dc6f1ae23376e7e8e684c2b411434891e151e865a661b40a85407db51d0 + languageName: node + linkType: hard + +"unicode-trie@npm:^1.0.0": + version: 1.0.0 + resolution: "unicode-trie@npm:1.0.0" + dependencies: + pako: ^0.2.5 + tiny-inflate: ^1.0.0 + checksum: 4d8bc130ccb7eb5b0bed9c600f06ad7534e832e9f5ddcf3e18fef1c328ff1e3ff7022d3d4ea6885ce4c4222b18304cfe2fc8d46f80798b66f850fd82db3fe8fb languageName: node linkType: hard @@ -49679,7 +56093,7 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.1.0": +"universalify@npm:^0.1.0, universalify@npm:^0.1.2": version: 0.1.2 resolution: "universalify@npm:0.1.2" checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff @@ -49701,9 +56115,9 @@ __metadata: linkType: hard "universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 + version: 2.0.0 + resolution: "universalify@npm:2.0.0" + checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 languageName: node linkType: hard @@ -49735,17 +56149,14 @@ __metadata: linkType: hard "unplugin@npm:^1.3.1": - version: 1.14.1 - resolution: "unplugin@npm:1.14.1" + version: 1.4.0 + resolution: "unplugin@npm:1.4.0" dependencies: - acorn: ^8.12.1 - webpack-virtual-modules: ^0.6.2 - peerDependencies: - webpack-sources: ^3 - peerDependenciesMeta: - webpack-sources: - optional: true - checksum: fa0bedf5e6e311418e30a788828221ab211700a480a397890062ba867aa1474bb06e4fe0ede16f5bd8512d25041dd1988d4108a918343030f638231de2bf7af1 + acorn: ^8.9.0 + chokidar: ^3.5.3 + webpack-sources: ^3.2.3 + webpack-virtual-modules: ^0.5.0 + checksum: 49f586b07988397aa130b44710e8017a0472e825d08a218557031f08d694788b3ee61d686e67af153cb39b73132e2616c2f135222b83ff8aa2f7a89027f74600 languageName: node linkType: hard @@ -49774,13 +56185,6 @@ __metadata: languageName: node linkType: hard -"uri-js-replace@npm:^1.0.1": - version: 1.0.1 - resolution: "uri-js-replace@npm:1.0.1" - checksum: 9c6761023a66eea5c7ff75127e3ea733a64362e4fd232203f627ace86d5f170dc69eda80449e3457448591b8a11e566e29cc0746da6392c9f8de4d5911f57e51 - languageName: node - linkType: hard - "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -49832,25 +56236,18 @@ __metadata: linkType: hard "url@npm:^0.11.0": - version: 0.11.4 - resolution: "url@npm:0.11.4" + version: 0.11.0 + resolution: "url@npm:0.11.0" dependencies: - punycode: ^1.4.1 - qs: ^6.12.3 - checksum: c25e587723d343d5d4248892393bfa5039ded9c2c07095a9d005bc64b7cb8956d623c0d8da8d1a28f71986a7a8d80fc2e9f9cf84235e48fa435a5cb4451062c6 - languageName: node - linkType: hard - -"urlpattern-polyfill@npm:^8.0.0": - version: 8.0.2 - resolution: "urlpattern-polyfill@npm:8.0.2" - checksum: d2cc0905a613c77e330c426e8697ee522dd9640eda79ac51160a0f6350e103f09b8c327623880989f8ba7325e8d95267b745aa280fdcc2aead80b023e16bd09d + punycode: 1.3.2 + querystring: 0.2.0 + checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90 languageName: node linkType: hard -"use-callback-ref@npm:^1.3.0, use-callback-ref@npm:^1.3.2": - version: 1.3.2 - resolution: "use-callback-ref@npm:1.3.2" +"use-callback-ref@npm:^1.3.0": + version: 1.3.0 + resolution: "use-callback-ref@npm:1.3.0" dependencies: tslib: ^2.0.0 peerDependencies: @@ -49859,7 +56256,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: df690f2032d56aabcea0400313a04621429f45bceb4d65d38829b3680cae3856470ce72958cb7224b332189d8faef54662a283c0867dd7c769f9a5beff61787d + checksum: 7913df383a5a6fcb399212eedefaac2e0c6f843555202d4e3010bac3848afe38ecaa3d0d6500ad1d936fbeffd637e6c517e68edb024af5e6beca7f27f3ce7b21 languageName: node linkType: hard @@ -49880,23 +56277,23 @@ __metadata: languageName: node linkType: hard -"use-debounce@npm:^10.0.0": - version: 10.0.4 - resolution: "use-debounce@npm:10.0.4" +"use-debounce@npm:^7.0.0": + version: 7.0.1 + resolution: "use-debounce@npm:7.0.1" peerDependencies: - react: "*" - checksum: 59d7e014e9ac6ba57a5b1c411cf1c088b44987b898dd64a4dc73a02da66a5ecacbc3521e261d042e7d388445b69c820b43837a1533fe9def7f85adcaaec472d0 + react: ">=16.8.0" + checksum: c5c1c34ccef6c11fe25fecef983a07f5a7260fce77b58f0f648f6ae08693a22a9077b5362b96154896e9ea756e6aaea303eb44550a293456cecb6f15cf87d73b languageName: node linkType: hard -"use-deep-compare@npm:^1.2.1": - version: 1.3.0 - resolution: "use-deep-compare@npm:1.3.0" +"use-deep-compare@npm:^1.1.0": + version: 1.2.1 + resolution: "use-deep-compare@npm:1.2.1" dependencies: dequal: 2.0.3 peerDependencies: react: ">=16.8.0" - checksum: fada69c4562a92e1e81e406c40023a8adef2d020a84802ca05b9d9a476ee174087828e3f1224bfaac5059e6ef024c66a492260111a21f22f16581dc3cbfceb52 + checksum: f65a880d0cf126484f5a5772c665f7d05ea7834e73d2a76a26c1c6a4101604f9f75fb836903a191ddca9eeafe5f8faa648cc712079046147affa1ea6b4b84d2f languageName: node linkType: hard @@ -49940,12 +56337,12 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:1.2.2, use-sync-external-store@npm:^1.2.0": - version: 1.2.2 - resolution: "use-sync-external-store@npm:1.2.2" +"use-sync-external-store@npm:1.2.0, use-sync-external-store@npm:^1.2.0": + version: 1.2.0 + resolution: "use-sync-external-store@npm:1.2.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: fe07c071c4da3645f112c38c0e57beb479a8838616ff4e92598256ecce527f2888c08febc7f9b2f0ce2f0e18540ba3cde41eb2035e4fafcb4f52955037098a81 + checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a languageName: node linkType: hard @@ -49980,17 +56377,15 @@ __metadata: linkType: hard "util.promisify@npm:^1.0.0": - version: 1.1.2 - resolution: "util.promisify@npm:1.1.2" + version: 1.1.1 + resolution: "util.promisify@npm:1.1.1" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 + call-bind: ^1.0.0 + define-properties: ^1.1.3 for-each: ^0.3.3 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - object.getownpropertydescriptors: ^2.1.6 - safe-array-concat: ^1.0.0 - checksum: 9a5233e7fd067ca24abe2310f9c93e6df3adb644a662fcd826454d30539d3dd1d557b75bfed4cedd4993203012ea6add6d7dd268fed35bbdac4736dce9446373 + has-symbols: ^1.0.1 + object.getownpropertydescriptors: ^2.1.1 + checksum: ea371c30b90576862487ae4efd7182aa5855019549a4019d82629acc2709e8ccb0f38944403eebec622fff8ebb44ac3f46a52d745d5f543d30606132a4905f96 languageName: node linkType: hard @@ -50003,7 +56398,7 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.12.4, util@npm:^0.12.5": +"util@npm:^0.12.0, util@npm:^0.12.4, util@npm:^0.12.5": version: 0.12.5 resolution: "util@npm:0.12.5" dependencies: @@ -50073,7 +56468,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:9.0.0": +"uuid@npm:9.0.0, uuid@npm:^9.0.0": version: 9.0.0 resolution: "uuid@npm:9.0.0" bin: @@ -50082,12 +56477,12 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" +"uuid@npm:^3.3.2": + version: 3.4.0 + resolution: "uuid@npm:3.4.0" bin: - uuid: dist/bin/uuid - checksum: 4b81611ade2885d2313ddd8dc865d93d8dccc13ddf901745edca8f86d99bc46d7a330d678e7532e7ebf93ce616679fb19b2e3568873ac0c14c999032acb25869 + uuid: ./bin/uuid + checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f languageName: node linkType: hard @@ -50100,7 +56495,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^9.0.0, uuid@npm:^9.0.1": +"uuid@npm:^9.0.1": version: 9.0.1 resolution: "uuid@npm:9.0.1" bin: @@ -50158,13 +56553,13 @@ __metadata: linkType: hard "v8-to-istanbul@npm:^9.0.1": - version: 9.3.0 - resolution: "v8-to-istanbul@npm:9.3.0" + version: 9.0.1 + resolution: "v8-to-istanbul@npm:9.0.1" dependencies: "@jridgewell/trace-mapping": ^0.3.12 "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^2.0.0 - checksum: ded42cd535d92b7fd09a71c4c67fb067487ef5551cc227bfbf2a1f159a842e4e4acddaef20b955789b8d3b455b9779d036853f4a27ce15007f6364a4d30317ae + convert-source-map: ^1.6.0 + checksum: a49c34bf0a3af0c11041a3952a2600913904a983bd1bc87148b5c033bc5c1d02d5a13620fcdbfa2c60bc582a2e2970185780f0c844b4c3a220abf405f8af6311 languageName: node linkType: hard @@ -50202,30 +56597,32 @@ __metadata: linkType: hard "validate-npm-package-name@npm:^5.0.0": - version: 5.0.1 - resolution: "validate-npm-package-name@npm:5.0.1" - checksum: 0d583a1af23aeffea7748742cf22b6802458736fb8b60323ba5949763824d46f796474b0e1b9206beb716f9d75269e19dbd7795d6b038b29d561be95dd827381 + version: 5.0.0 + resolution: "validate-npm-package-name@npm:5.0.0" + dependencies: + builtins: ^5.0.0 + checksum: 5342a994986199b3c28e53a8452a14b2bb5085727691ea7aa0d284a6606b127c371e0925ae99b3f1ef7cc7d2c9de75f52eb61a3d1cc45e39bca1e3a9444cbb4e languageName: node linkType: hard -"validator@npm:^13.11.0, validator@npm:^13.7.0, validator@npm:^13.9.0": - version: 13.12.0 - resolution: "validator@npm:13.12.0" - checksum: fb8f070724770b1449ea1a968605823fdb112dbd10507b2802f8841cda3e7b5c376c40f18c84e6a7b59de320a06177e471554101a85f1fa8a70bac1a84e48adf +"validator@npm:^13.7.0": + version: 13.7.0 + resolution: "validator@npm:13.7.0" + checksum: 2b83283de1222ca549a7ef57f46e8d49c6669213348db78b7045bce36a3b5843ff1e9f709ebf74574e06223461ee1f264f8cc9a26a0060a79a27de079d8286ef languageName: node linkType: hard -"value-or-promise@npm:1.0.11": - version: 1.0.11 - resolution: "value-or-promise@npm:1.0.11" - checksum: 13f8f2ef620118c73b4d1beee8ce6045d7182bbf15090ecfbcafb677ec43698506a5e9ace6bea5ea35c32bc612c9b1f824bb59b6581cdfb5c919052745c277d5 +"validator@npm:^13.9.0": + version: 13.11.0 + resolution: "validator@npm:13.11.0" + checksum: d1e0c27022681420756da25bc03eb08d5f0c66fb008f8ff02ebc95812b77c6be6e03d3bd05cf80ca702e23eeb73dadd66b4b3683173ea2a0bc7cc72820bee131 languageName: node linkType: hard -"value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": - version: 1.0.12 - resolution: "value-or-promise@npm:1.0.12" - checksum: f53a66c75b7447c90bbaf946a757ca09c094629cb80ba742f59c980ec3a69be0a385a0e75505dedb4e757862f1a994ca4beaf083a831f24d3ffb3d4bb18cd1e1 +"value-or-promise@npm:1.0.11, value-or-promise@npm:^1.0.11": + version: 1.0.11 + resolution: "value-or-promise@npm:1.0.11" + checksum: 13f8f2ef620118c73b4d1beee8ce6045d7182bbf15090ecfbcafb677ec43698506a5e9ace6bea5ea35c32bc612c9b1f824bb59b6581cdfb5c919052745c277d5 languageName: node linkType: hard @@ -50319,64 +56716,6 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:^1.2.0": - version: 1.6.0 - resolution: "vite-node@npm:1.6.0" - dependencies: - cac: ^6.7.14 - debug: ^4.3.4 - pathe: ^1.1.1 - picocolors: ^1.0.0 - vite: ^5.0.0 - bin: - vite-node: vite-node.mjs - checksum: ce111c5c7a4cf65b722baa15cbc065b7bfdbf1b65576dd6372995f6a72b2b93773ec5df59f6c5f08cfe1284806597b44b832efcea50d5971102428159ff4379f - languageName: node - linkType: hard - -"vite@npm:^5.0.0, vite@npm:^5.0.11": - version: 5.4.10 - resolution: "vite@npm:5.4.10" - dependencies: - esbuild: ^0.21.3 - fsevents: ~2.3.3 - postcss: ^8.4.43 - rollup: ^4.20.0 - peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 - less: "*" - lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: 4db3b8ca3eddbc312d0a95f505d16656e74c6dfa68d3b5eb54b6d6b0f7be1df348d469c43dc69db27dadc06b802f029d654da48f392324efd665ef2c0ca9ba9e - languageName: node - linkType: hard - "vlq@npm:^1.0.0": version: 1.0.1 resolution: "vlq@npm:1.0.1" @@ -50391,22 +56730,15 @@ __metadata: languageName: node linkType: hard -"vm2@npm:^3.9.17": - version: 3.9.19 - resolution: "vm2@npm:3.9.19" +"vm2@npm:^3.9.3": + version: 3.9.8 + resolution: "vm2@npm:3.9.8" dependencies: acorn: ^8.7.0 acorn-walk: ^8.2.0 bin: vm2: bin/vm2 - checksum: fc6cf553134145cd7bb5246985bf242b056e3fb5ea71e2eef6710b2a5d6c6119cc6bc960435ff62480ee82efb43369be8f4db07b6690916ae7d3b2e714f395d8 - languageName: node - linkType: hard - -"w-json@npm:1.3.10": - version: 1.3.10 - resolution: "w-json@npm:1.3.10" - checksum: 8535a207e579e616797efc4d5140acc7c0aefd11f0c9f846e6739816a2db8637d235492d86fc5c47bb2dba5821413d72b2d62df9184ee9d6e22e67b3f90d205b + checksum: 1e665a45ce76612922368462a8b98876698e866c1f201393b0b646f07a00449dc4170e987152cf1443af664ca8f2b82bb52a0760456a71912fa63f22980de7b4 languageName: node linkType: hard @@ -50420,9 +56752,9 @@ __metadata: linkType: hard "w3c-keyname@npm:^2.2.4": - version: 2.2.8 - resolution: "w3c-keyname@npm:2.2.8" - checksum: 95bafa4c04fa2f685a86ca1000069c1ec43ace1f8776c10f226a73296caeddd83f893db885c2c220ebeb6c52d424e3b54d7c0c1e963bbf204038ff1a944fbb07 + version: 2.2.6 + resolution: "w3c-keyname@npm:2.2.6" + checksum: 59a31d23ca9953c01c99ed6695fee5b6ea36eb2412d76a21fe4302ab33a3f5cd96c006a763940b6115c3d042c16d3564eeee1156832217d028af0518098b3a42 languageName: node linkType: hard @@ -50444,7 +56776,16 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.7, walker@npm:^1.0.8": +"walker@npm:^1.0.7": + version: 1.0.7 + resolution: "walker@npm:1.0.7" + dependencies: + makeerror: 1.0.x + checksum: 4038fcf92f6ab0288267ad05008aec9e089a759f1bd32e1ea45cc2eb498eb12095ec43cf8ca2bf23a465f4580a0d33b25b89f450ba521dd27083cbc695ee6bf5 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" dependencies: @@ -50462,13 +56803,23 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.2.0, watchpack@npm:^2.4.1": - version: 2.4.2 - resolution: "watchpack@npm:2.4.2" +"watchpack@npm:^2.2.0": + version: 2.3.1 + resolution: "watchpack@npm:2.3.1" + dependencies: + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.1.2 + checksum: 70a34f92842d94b5d842980f866d568d7a467de667c96ae5759c759f46587e49265863171f4650bdbafc5f3870a28f2b4453e9e847098ec4b718b38926d47d22 + languageName: node + linkType: hard + +"watchpack@npm:^2.4.0": + version: 2.4.0 + resolution: "watchpack@npm:2.4.0" dependencies: glob-to-regexp: ^0.4.1 graceful-fs: ^4.1.2 - checksum: 92d9d52ce3d16fd83ed6994d1dd66a4d146998882f4c362d37adfea9ab77748a5b4d1e0c65fa104797928b2d40f635efa8f9b925a6265428a69f1e1852ca3441 + checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 languageName: node linkType: hard @@ -50518,23 +56869,23 @@ __metadata: languageName: node linkType: hard -"web-streams-polyfill@npm:^3.2.0, web-streams-polyfill@npm:^3.2.1": - version: 3.3.3 - resolution: "web-streams-polyfill@npm:3.3.3" - checksum: 21ab5ea08a730a2ef8023736afe16713b4f2023ec1c7085c16c8e293ee17ed085dff63a0ad8722da30c99c4ccbd4ccd1b2e79c861829f7ef2963d7de7004c2cb +"web-streams-polyfill@npm:^3.2.0": + version: 3.2.1 + resolution: "web-streams-polyfill@npm:3.2.1" + checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02 languageName: node linkType: hard -"webcrypto-core@npm:^1.8.0": - version: 1.8.1 - resolution: "webcrypto-core@npm:1.8.1" +"webcrypto-core@npm:^1.7.4": + version: 1.7.5 + resolution: "webcrypto-core@npm:1.7.5" dependencies: - "@peculiar/asn1-schema": ^2.3.13 + "@peculiar/asn1-schema": ^2.1.6 "@peculiar/json-schema": ^1.1.12 - asn1js: ^3.0.5 - pvtsutils: ^1.3.5 - tslib: ^2.7.0 - checksum: 5f8d862991bf9b36bfec53a317ceec7de95010c6d16092d2ba62b988acdfca9adfd254ef388036e610c66d0aad506d3f344574f62e06501a8c72ef961c8996b2 + asn1js: ^3.0.1 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: f6e529ca5c1175b8ccead3547f60efa7a1f8e247aaeab3bd4f096eb9fda11cfc8e6b6fb574bbc5696f608958c491a27e9682c89204412f73fb430e5fcbe9ebac languageName: node linkType: hard @@ -50592,9 +56943,9 @@ __metadata: languageName: node linkType: hard -"webpack-dev-middleware@npm:^5.3.4": - version: 5.3.4 - resolution: "webpack-dev-middleware@npm:5.3.4" +"webpack-dev-middleware@npm:^5.3.1": + version: 5.3.3 + resolution: "webpack-dev-middleware@npm:5.3.3" dependencies: colorette: ^2.0.10 memfs: ^3.4.3 @@ -50603,13 +56954,13 @@ __metadata: schema-utils: ^4.0.0 peerDependencies: webpack: ^4.0.0 || ^5.0.0 - checksum: 90cf3e27d0714c1a745454a1794f491b7076434939340605b9ee8718ba2b85385b120939754e9fdbd6569811e749dee53eec319e0d600e70e0b0baffd8e3fb13 + checksum: dd332cc6da61222c43d25e5a2155e23147b777ff32fdf1f1a0a8777020c072fbcef7756360ce2a13939c3f534c06b4992a4d659318c4a7fe2c0530b52a8a6621 languageName: node linkType: hard "webpack-dev-middleware@npm:^6.1.1": - version: 6.1.3 - resolution: "webpack-dev-middleware@npm:6.1.3" + version: 6.1.1 + resolution: "webpack-dev-middleware@npm:6.1.1" dependencies: colorette: ^2.0.10 memfs: ^3.4.12 @@ -50621,13 +56972,13 @@ __metadata: peerDependenciesMeta: webpack: optional: true - checksum: ddedaa913cc39d7ac7f971d902f181ecc5c4ab0b91f9eda5923f0ea513ecf458f71046f2ed423cb4fc657c2177fe279186453e395bd1051f0949e265c3124665 + checksum: 3bced6ef644b20f2e76df9db1c5209f4a73761d7d307fe29ae20bc00397d4f9727af2607f98794c6c7c57d5c1a48bfa12690168b08f5d46820b07aab2c63640c languageName: node linkType: hard "webpack-dev-server@npm:^4.9.3": - version: 4.15.2 - resolution: "webpack-dev-server@npm:4.15.2" + version: 4.15.0 + resolution: "webpack-dev-server@npm:4.15.0" dependencies: "@types/bonjour": ^3.5.9 "@types/connect-history-api-fallback": ^1.3.5 @@ -50635,7 +56986,7 @@ __metadata: "@types/serve-index": ^1.9.1 "@types/serve-static": ^1.13.10 "@types/sockjs": ^0.3.33 - "@types/ws": ^8.5.5 + "@types/ws": ^8.5.1 ansi-html-community: ^0.0.8 bonjour-service: ^1.0.11 chokidar: ^3.5.3 @@ -50657,7 +57008,7 @@ __metadata: serve-index: ^1.9.1 sockjs: ^0.3.24 spdy: ^4.0.2 - webpack-dev-middleware: ^5.3.4 + webpack-dev-middleware: ^5.3.1 ws: ^8.13.0 peerDependencies: webpack: ^4.37.0 || ^5.0.0 @@ -50668,29 +57019,29 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 123507129cb4d55fdc5fabdd177574f31133605748372bb11353307b7a583ef25c6fd27b6addf56bf070ba44c88d5da861771c2ec55f52405082ec9efd01f039 + checksum: 6fe375089b061be2e4ed6d6a8b20743734d304cd0c34757271c6685f97642b028f253c627f899b629c97c067c294484f906e394fd1c104ee795237b8725f2701 languageName: node linkType: hard "webpack-hot-middleware@npm:^2.25.1": - version: 2.26.1 - resolution: "webpack-hot-middleware@npm:2.26.1" + version: 2.25.1 + resolution: "webpack-hot-middleware@npm:2.25.1" dependencies: ansi-html-community: 0.0.8 html-entities: ^2.1.0 + querystring: ^0.2.0 strip-ansi: ^6.0.0 - checksum: 78513d8d5770c59c3039ce094c49b2e2772b3f1d4ec5c124a7aabe6124a0e08429993b81129649087dc300f496822257e39135bf8b891b51aea197c1b554072a + checksum: 49f05023a1e95fab2703a885c3321dfd2ff832bcece9cbfafe9dbe68bcf16a25cd5c3c455b0534e93b7448f2dd05de2ef9009394c95dfae9bbbcc740189416f7 languageName: node linkType: hard "webpack-merge@npm:^5.8.0": - version: 5.10.0 - resolution: "webpack-merge@npm:5.10.0" + version: 5.8.0 + resolution: "webpack-merge@npm:5.8.0" dependencies: clone-deep: ^4.0.1 - flat: ^5.0.2 wildcard: ^2.0.0 - checksum: 1fe8bf5309add7298e1ac72fb3f2090e1dfa80c48c7e79fa48aa60b5961332c7d0d61efa8851acb805e6b91a4584537a347bc106e05e9aec87fa4f7088c62f2f + checksum: 88786ab91013f1bd2a683834ff381be81c245a4b0f63304a5103e90f6653f44dab496a0768287f8531761f8ad957d1f9f3ccb2cb55df0de1bd9ee343e079da26 languageName: node linkType: hard @@ -50730,46 +57081,40 @@ __metadata: languageName: node linkType: hard -"webpack-virtual-modules@npm:^0.6.2": - version: 0.6.2 - resolution: "webpack-virtual-modules@npm:0.6.2" - checksum: 7e8e1d63f35864c815420cc2f27da8561a1e028255040698a352717de0ba46d3b3faf16f06c1a1965217054c4c2894eb9af53a85451870e919b5707ce9c5822d - languageName: node - linkType: hard - "webpack@npm:5, webpack@npm:^5.80.0": - version: 5.95.0 - resolution: "webpack@npm:5.95.0" - dependencies: - "@types/estree": ^1.0.5 - "@webassemblyjs/ast": ^1.12.1 - "@webassemblyjs/wasm-edit": ^1.12.1 - "@webassemblyjs/wasm-parser": ^1.12.1 + version: 5.86.0 + resolution: "webpack@npm:5.86.0" + dependencies: + "@types/eslint-scope": ^3.7.3 + "@types/estree": ^1.0.0 + "@webassemblyjs/ast": ^1.11.5 + "@webassemblyjs/wasm-edit": ^1.11.5 + "@webassemblyjs/wasm-parser": ^1.11.5 acorn: ^8.7.1 - acorn-import-attributes: ^1.9.5 - browserslist: ^4.21.10 + acorn-import-assertions: ^1.9.0 + browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.17.1 + enhanced-resolve: ^5.14.1 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.11 + graceful-fs: ^4.2.9 json-parse-even-better-errors: ^2.3.1 loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^3.2.0 + schema-utils: ^3.1.2 tapable: ^2.1.1 - terser-webpack-plugin: ^5.3.10 - watchpack: ^2.4.1 + terser-webpack-plugin: ^5.3.7 + watchpack: ^2.4.0 webpack-sources: ^3.2.3 peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js - checksum: 0c3dfe288de4d62f8f3dc25478a618894883cab739121330763b7847e43304630ea2815ae2351a5f8ff6ab7c9642caf530d503d89bda261fe2cd220e524dd5d1 + checksum: 682b1aa8328bb9d52ae66a1d0a1078af88f9e3b3b3a9c9e1ce203e669581a8e61d522420ef253130eacd510d24d7275b840c1311d50bd048d6fd7c1af186ce55 languageName: node linkType: hard @@ -50809,29 +57154,13 @@ __metadata: languageName: node linkType: hard -"whatwg-encoding@npm:^3.1.1": - version: 3.1.1 - resolution: "whatwg-encoding@npm:3.1.1" - dependencies: - iconv-lite: 0.6.3 - checksum: f75a61422421d991e4aec775645705beaf99a16a88294d68404866f65e92441698a4f5b9fa11dd609017b132d7b286c3c1534e2de5b3e800333856325b549e3c - languageName: node - linkType: hard - -"whatwg-fetch@npm:3.6.2": +"whatwg-fetch@npm:3.6.2, whatwg-fetch@npm:^3.0.0, whatwg-fetch@npm:^3.4.1": version: 3.6.2 resolution: "whatwg-fetch@npm:3.6.2" checksum: ee976b7249e7791edb0d0a62cd806b29006ad7ec3a3d89145921ad8c00a3a67e4be8f3fb3ec6bc7b58498724fd568d11aeeeea1f7827e7e1e5eae6c8a275afed languageName: node linkType: hard -"whatwg-fetch@npm:^3.0.0, whatwg-fetch@npm:^3.4.1": - version: 3.6.20 - resolution: "whatwg-fetch@npm:3.6.20" - checksum: c58851ea2c4efe5c2235f13450f426824cf0253c1d45da28f45900290ae602a20aff2ab43346f16ec58917d5562e159cd691efa368354b2e82918c2146a519c5 - languageName: node - linkType: hard - "whatwg-mimetype@npm:3.0.0, whatwg-mimetype@npm:^3.0.0": version: 3.0.0 resolution: "whatwg-mimetype@npm:3.0.0" @@ -50846,13 +57175,6 @@ __metadata: languageName: node linkType: hard -"whatwg-mimetype@npm:^4.0.0": - version: 4.0.0 - resolution: "whatwg-mimetype@npm:4.0.0" - checksum: f97edd4b4ee7e46a379f3fb0e745de29fe8b839307cc774300fd49059fcdd560d38cb8fe21eae5575b8f39b022f23477cc66e40b0355c2851ce84760339cef30 - languageName: node - linkType: hard - "whatwg-url-without-unicode@npm:8.0.0-3": version: 8.0.0-3 resolution: "whatwg-url-without-unicode@npm:8.0.0-3" @@ -50920,11 +57242,11 @@ __metadata: linkType: hard "which-builtin-type@npm:^1.1.3": - version: 1.1.4 - resolution: "which-builtin-type@npm:1.1.4" + version: 1.1.3 + resolution: "which-builtin-type@npm:1.1.3" dependencies: - function.prototype.name: ^1.1.6 - has-tostringtag: ^1.0.2 + function.prototype.name: ^1.1.5 + has-tostringtag: ^1.0.0 is-async-function: ^2.0.0 is-date-object: ^1.0.5 is-finalizationregistry: ^1.0.2 @@ -50933,32 +57255,45 @@ __metadata: is-weakref: ^1.0.2 isarray: ^2.0.5 which-boxed-primitive: ^1.0.2 - which-collection: ^1.0.2 - which-typed-array: ^1.1.15 - checksum: 1f413025250072534de2a2ee25139a24d477512b532b05c85fb9aa05aef04c6e1ca8e2668acf971b777e602721dbdec4b9d6a4f37c6b9ff8f026ad030352707f + which-collection: ^1.0.1 + which-typed-array: ^1.1.9 + checksum: 43730f7d8660ff9e33d1d3f9f9451c4784265ee7bf222babc35e61674a11a08e1c2925019d6c03154fcaaca4541df43abe35d2720843b9b4cbcebdcc31408f36 languageName: node linkType: hard -"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": - version: 1.0.2 - resolution: "which-collection@npm:1.0.2" +"which-collection@npm:^1.0.1": + version: 1.0.1 + resolution: "which-collection@npm:1.0.1" dependencies: - is-map: ^2.0.3 - is-set: ^2.0.3 - is-weakmap: ^2.0.2 - is-weakset: ^2.0.3 - checksum: c51821a331624c8197916598a738fc5aeb9a857f1e00d89f5e4c03dc7c60b4032822b8ec5696d28268bb83326456a8b8216344fb84270d18ff1d7628051879d9 + is-map: ^2.0.1 + is-set: ^2.0.1 + is-weakmap: ^2.0.1 + is-weakset: ^2.0.1 + checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c languageName: node linkType: hard "which-module@npm:^2.0.0": - version: 2.0.1 - resolution: "which-module@npm:2.0.1" - checksum: 1967b7ce17a2485544a4fdd9063599f0f773959cca24176dbe8f405e55472d748b7c549cd7920ff6abb8f1ab7db0b0f1b36de1a21c57a8ff741f4f1e792c52be + version: 2.0.0 + resolution: "which-module@npm:2.0.0" + checksum: 809f7fd3dfcb2cdbe0180b60d68100c88785084f8f9492b0998c051d7a8efe56784492609d3f09ac161635b78ea29219eb1418a98c15ce87d085bce905705c9c languageName: node linkType: hard -"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": +"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.9": + version: 1.1.13 + resolution: "which-typed-array@npm:1.1.13" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.4 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + checksum: 3828a0d5d72c800e369d447e54c7620742a4cc0c9baf1b5e8c17e9b6ff90d8d861a3a6dd4800f1953dbf80e5e5cec954a289e5b4a223e3bee4aeb1f8c5f33309 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" dependencies: @@ -50971,18 +57306,21 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" +"which-typed-array@npm:^1.1.2": + version: 1.1.8 + resolution: "which-typed-array@npm:1.1.8" dependencies: - isexe: ^2.0.0 - bin: - which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + es-abstract: ^1.20.0 + for-each: ^0.3.3 + has-tostringtag: ^1.0.0 + is-typed-array: ^1.1.9 + checksum: bedf4d30a738e848404fe67fe0ace33433a7298cf3f5a4d4b2c624ba99c4d25f06a7fd6f3566c3d16af5f8a54f0c6293cbfded5b1208ce11812753990223b45a languageName: node linkType: hard -"which@npm:^2.0.1, which@npm:^2.0.2": +"which@npm:2.0.2, which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -50993,14 +57331,23 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" +"which@npm:^1.2.9": + version: 1.3.1 + resolution: "which@npm:1.3.1" dependencies: - isexe: ^3.1.1 + isexe: ^2.0.0 bin: - node-which: bin/which.js - checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 + which: ./bin/which + checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 + languageName: node + linkType: hard + +"wide-align@npm:1.1.3": + version: 1.1.3 + resolution: "wide-align@npm:1.1.3" + dependencies: + string-width: ^1.0.2 || 2 + checksum: d09c8012652a9e6cab3e82338d1874a4d7db2ad1bd19ab43eb744acf0b9b5632ec406bdbbbb970a8f4771a7d5ef49824d038ba70aa884e7723f5b090ab87134d languageName: node linkType: hard @@ -51023,18 +57370,18 @@ __metadata: linkType: hard "wildcard@npm:^2.0.0": - version: 2.0.1 - resolution: "wildcard@npm:2.0.1" - checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c + version: 2.0.0 + resolution: "wildcard@npm:2.0.0" + checksum: 1f4fe4c03dfc492777c60f795bbba597ac78794f1b650d68f398fbee9adb765367c516ebd4220889b6a81e9626e7228bbe0d66237abb311573c2ee1f4902a5ad languageName: node linkType: hard -"window-post-message-proxy@npm:^0.2, window-post-message-proxy@npm:^0.2.7": - version: 0.2.9 - resolution: "window-post-message-proxy@npm:0.2.9" +"window-post-message-proxy@npm:^0.2": + version: 0.2.6 + resolution: "window-post-message-proxy@npm:0.2.6" dependencies: es6-promise: ^3.1.2 - checksum: 34a180d4860cfa80638ae7192f064dfc241d4db7678eab779a605b568e721ae5a555a5420fc3221bd7ec260ed9f1e28937627cad161bed4db5abba6239628fd7 + checksum: e8d83e764bd7de113d53da17fdf38ac4824c092dd290439e6733ed55c57d7ced2865c4a33256b76d76d8438da6b8adbc5deb521f01eb45806cbf315ee30e2a2c languageName: node linkType: hard @@ -51067,7 +57414,18 @@ __metadata: languageName: node linkType: hard -"winston-transport@npm:^4.5.0, winston-transport@npm:^4.7.0": +"winston-transport@npm:^4.5.0": + version: 4.5.0 + resolution: "winston-transport@npm:4.5.0" + dependencies: + logform: ^2.3.2 + readable-stream: ^3.6.0 + triple-beam: ^1.3.0 + checksum: a56e5678a80b88a73e77ed998fc6e19d0db19c989a356b137ec236782f2bf58ae4511b11c29163f99391fa4dc12102c7bc5738dcb6543f28877fa2819adc3ee9 + languageName: node + linkType: hard + +"winston-transport@npm:^4.7.0": version: 4.8.0 resolution: "winston-transport@npm:4.8.0" dependencies: @@ -51138,17 +57496,17 @@ __metadata: languageName: node linkType: hard -"wonka@npm:^6.3.2": - version: 6.3.4 - resolution: "wonka@npm:6.3.4" - checksum: 6bb57955cb2982fb469a7824484e6854b436f89a7f10b6a981348789d88fbc944665771adc4cc404f62416417eb47ab2b8657d898e5301ccd4a53eaac6a10508 +"wonka@npm:^6.3.0": + version: 6.3.1 + resolution: "wonka@npm:6.3.1" + checksum: 8748d5c8ce5ff4cdb69d61ce64ed19bd007a7c65d46dbb11ddd2271091c51c7241cb36642a2c32dd31bfcf5841f4c370a81b3be746b118c26bb30ba21b2b8c29 languageName: node linkType: hard -"word-wrap@npm:^1.2.5, word-wrap@npm:~1.2.3": - version: 1.2.5 - resolution: "word-wrap@npm:1.2.5" - checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb +"word-wrap@npm:~1.2.3": + version: 1.2.3 + resolution: "word-wrap@npm:1.2.3" + checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f languageName: node linkType: hard @@ -51166,6 +57524,13 @@ __metadata: languageName: node linkType: hard +"workerpool@npm:6.1.0": + version: 6.1.0 + resolution: "workerpool@npm:6.1.0" + checksum: 519d03a4d008fd95ff9e1a583afe537e6a0eecd8250452044e390db3e1dc4ce91616a8ee6c4bba9a2fda38440c2666664c31b50b5a9fd05cc43c739df54d5781 + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -51198,7 +57563,7 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": +"wrap-ansi@npm:^6.2.0": version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" dependencies: @@ -51444,14 +57809,14 @@ __metadata: linkType: hard "xss@npm:^1.0.8": - version: 1.0.15 - resolution: "xss@npm:1.0.15" + version: 1.0.8 + resolution: "xss@npm:1.0.8" dependencies: commander: ^2.20.3 cssfilter: 0.0.10 bin: xss: bin/xss - checksum: dee066ba0962105475f12ae39fecf4cd6108cb980aefad67578a349d521e6059e184c2d63695a99d58483a02f0c0d48a36816d95c0a0beb56fba60ed53ccd824 + checksum: e43deb43a6e2fbf28aa9029fec6018e643177374994c3d0b4211c8fed54973c90e44c26fd718ac6c6e2d71759ec5920388a1338248ab96789e140bdfebff8504 languageName: node linkType: hard @@ -51462,7 +57827,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:~4.0.1": +"xtend@npm:^4.0.0, xtend@npm:^4.0.2, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a @@ -51470,9 +57835,9 @@ __metadata: linkType: hard "y18n@npm:^4.0.0": - version: 4.0.3 - resolution: "y18n@npm:4.0.3" - checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 + version: 4.0.1 + resolution: "y18n@npm:4.0.1" + checksum: b31f20cda288a92558e076ed29f5202b60ec41e5a1ddc3368464a6365038f5da6dcd9b30ee0e36c8cd8d354a7eae33d78236191d8b744d1c5199c7fd1f67f055 languageName: node linkType: hard @@ -51483,6 +57848,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^2.0.0, yallist@npm:^2.1.2": + version: 2.1.2 + resolution: "yallist@npm:2.1.2" + checksum: 9ba99409209f485b6fcb970330908a6d41fa1c933f75e08250316cce19383179a6b70a7e0721b89672ebb6199cc377bf3e432f55100da6a7d6e11902b0a642cb + languageName: node + linkType: hard + "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" @@ -51512,11 +57884,22 @@ __metadata: linkType: hard "yaml@npm:^2.2.1": - version: 2.6.0 - resolution: "yaml@npm:2.6.0" + version: 2.4.5 + resolution: "yaml@npm:2.4.5" bin: yaml: bin.mjs - checksum: e5e74fd75e01bde2c09333d529af9fbb5928c5f7f01bfdefdcb2bf753d4ef489a45cab4deac01c9448f55ca27e691612b81fe3c3a59bb8cb5b0069da0f92cf0b + checksum: f8efd407c07e095f00f3031108c9960b2b12971d10162b1ec19007200f6c987d2e28f73283f4731119aa610f177a3ea03d4a8fcf640600a25de1b74d00c69b3d + languageName: node + linkType: hard + +"yargonaut@npm:^1.1.2": + version: 1.1.4 + resolution: "yargonaut@npm:1.1.4" + dependencies: + chalk: ^1.1.1 + figlet: ^1.1.1 + parent-require: ^1.0.0 + checksum: d0ffc310a761782ae38022d88e13e84486080b2be2c43e8d5cbb987e40c3d2dd18274c39ce34e05d6bc312a4e768cd4c469d338ed60409adf6f4d870017c63a3 languageName: node linkType: hard @@ -51527,6 +57910,20 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:20.2.4": + version: 20.2.4 + resolution: "yargs-parser@npm:20.2.4" + checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 + languageName: node + linkType: hard + +"yargs-parser@npm:21.0.1, yargs-parser@npm:^21.0.0": + version: 21.0.1 + resolution: "yargs-parser@npm:21.0.1" + checksum: c3ea2ed12cad0377ce3096b3f138df8267edf7b1aa7d710cd502fe16af417bafe4443dd71b28158c22fcd1be5dfd0e86319597e47badf42ff83815485887323a + languageName: node + linkType: hard + "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -51561,6 +57958,18 @@ __metadata: languageName: node linkType: hard +"yargs-unparser@npm:2.0.0": + version: 2.0.0 + resolution: "yargs-unparser@npm:2.0.0" + dependencies: + camelcase: ^6.0.0 + decamelize: ^4.0.0 + flat: ^5.0.2 + is-plain-obj: ^2.1.0 + checksum: 68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 + languageName: node + linkType: hard + "yargs@npm:15.4.1, yargs@npm:^15.1.0, yargs@npm:^15.3.1": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -51580,7 +57989,22 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.0.0, yargs@npm:^17.0.1, yargs@npm:^17.1.1, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": +"yargs@npm:16.2.0, yargs@npm:^16.0.0, yargs@npm:^16.0.3, yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: ^7.0.2 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.0 + y18n: ^5.0.5 + yargs-parser: ^20.2.2 + checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 + languageName: node + linkType: hard + +"yargs@npm:17.7.2, yargs@npm:^17.0.1, yargs@npm:^17.6.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -51595,18 +58019,33 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^16.0.0, yargs@npm:^16.0.3, yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" +"yargs@npm:^17.0.0, yargs@npm:^17.3.1": + version: 17.6.0 + resolution: "yargs@npm:17.6.0" + dependencies: + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.0.0 + checksum: 604bdb4a6395a870540d2f3fea083c8e28441f12da8fd05b172b1e68480f00ed73d76be4a05fac19de9bf55ec7729b41e81cf555cccaed700aa192e4fff64872 + languageName: node + linkType: hard + +"yargs@npm:^17.4.0": + version: 17.4.1 + resolution: "yargs@npm:17.4.1" dependencies: cliui: ^7.0.2 escalade: ^3.1.1 get-caller-file: ^2.0.5 require-directory: ^2.1.1 - string-width: ^4.2.0 + string-width: ^4.2.3 y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 + yargs-parser: ^21.0.0 + checksum: e9012322870d7e4e912a6ae1f63b203e365f911c0cf158be92c36edefddfb3bd38ce17eb9ef0d18858a4777f047c50589ea22dacb44bd949169ba37dc6d34bee languageName: node linkType: hard @@ -51661,21 +58100,7 @@ __metadata: languageName: node linkType: hard -"yocto-queue@npm:^1.0.0": - version: 1.1.1 - resolution: "yocto-queue@npm:1.1.1" - checksum: f2e05b767ed3141e6372a80af9caa4715d60969227f38b1a4370d60bffe153c9c5b33a862905609afc9b375ec57cd40999810d20e5e10229a204e8bde7ef255c - languageName: node - linkType: hard - -"yoga-layout@npm:^2.0.1": - version: 2.0.1 - resolution: "yoga-layout@npm:2.0.1" - checksum: 65a83b1bf019dcb506c1b10cb0c278718b8eb9ef07c2967c1c8c66c2ce8b3edf44028fbc75e05c5b6492060add7e8e742da22b4afbb44ab199f7bae76114a92a - languageName: node - linkType: hard - -"zen-observable-ts@npm:^1.0.0, zen-observable-ts@npm:^1.2.5": +"zen-observable-ts@npm:^1.2.5": version: 1.2.5 resolution: "zen-observable-ts@npm:1.2.5" dependencies: @@ -51692,24 +58117,24 @@ __metadata: linkType: hard "zip-stream@npm:^4.1.0": - version: 4.1.1 - resolution: "zip-stream@npm:4.1.1" + version: 4.1.0 + resolution: "zip-stream@npm:4.1.0" dependencies: - archiver-utils: ^3.0.4 - compress-commons: ^4.1.2 + archiver-utils: ^2.1.0 + compress-commons: ^4.1.0 readable-stream: ^3.6.0 - checksum: 33bd5ee7017656c2ad728b5d4ba510e15bd65ce1ec180c5bbdc7a5f063256353ec482e6a2bc74de7515219d8494147924b9aae16e63fdaaf37cdf7d1ee8df125 + checksum: 4a73da856738b0634700b52f4ab3fe0bf0a532bea6820ad962d0bda0163d2d5525df4859f89a7238e204a378384e12551985049790c1894c3ac191866e85887f languageName: node linkType: hard "zip-stream@npm:^5.0.1": - version: 5.0.2 - resolution: "zip-stream@npm:5.0.2" + version: 5.0.1 + resolution: "zip-stream@npm:5.0.1" dependencies: archiver-utils: ^4.0.1 compress-commons: ^5.0.1 readable-stream: ^3.6.0 - checksum: caf33dd9624d781ea2ded059c83e3e7adc963557ca399512d2da6ab6e219b35c2985f6ff1a334dd2ab241b4067db6819398c723f3fca89b51b078757df8e3c44 + checksum: 116cee5a2c1ecce7aa440b665470653f58ef56670c6aafa1b5491c9f9335992352145502af5fa865ac82f46336905e37fb7cbc649c2be72e2152c6b91802995c languageName: node linkType: hard @@ -51729,15 +58154,6 @@ __metadata: languageName: node linkType: hard -"zod-validation-error@npm:^2.1.0": - version: 2.1.0 - resolution: "zod-validation-error@npm:2.1.0" - peerDependencies: - zod: ^3.18.0 - checksum: 2331cc8d876c2df0b720b648249447b65d6b85ad0b6e60dd6515170570e6ffbe7a9adb844d44035c07d59c871048d9c45a8c429849bedeb8cbcdfa5f90101402 - languageName: node - linkType: hard - "zod@npm:3.22.4": version: 3.22.4 resolution: "zod@npm:3.22.4" @@ -51745,23 +58161,16 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.22.4": - version: 3.23.8 - resolution: "zod@npm:3.23.8" - checksum: 15949ff82118f59c893dacd9d3c766d02b6fa2e71cf474d5aa888570c469dbf5446ac5ad562bb035bf7ac9650da94f290655c194f4a6de3e766f43febd432c5c - languageName: node - linkType: hard - -"zustand-x@npm:^3.0.2": - version: 3.0.4 - resolution: "zustand-x@npm:3.0.4" +"zustand-x@npm:^3.0.1": + version: 3.0.3 + resolution: "zustand-x@npm:3.0.3" dependencies: immer: ^10.0.3 lodash.mapvalues: ^4.6.0 react-tracked: ^1.7.11 peerDependencies: zustand: ">=4.3.9" - checksum: b14e80483ed6aa92058453e370b1a426a0946beaea27f949ab1482e196f8d21c2b57fd64e2b5bd5b34cad7735009e5ae0b6d5babb1ed1b390a38a7fda80c778b + checksum: 03d13ffe5c7ae346358831f4c3853bdc49178c718df82af289c3533f9d898a85127bcf2a0e8b2175b2ba3242bafbde539660c58b33308fb8a71fd0bdc005e987 languageName: node linkType: hard @@ -51777,11 +58186,11 @@ __metadata: languageName: node linkType: hard -"zustand@npm:^4.5.2": - version: 4.5.5 - resolution: "zustand@npm:4.5.5" +"zustand@npm:^4.4.7": + version: 4.5.2 + resolution: "zustand@npm:4.5.2" dependencies: - use-sync-external-store: 1.2.2 + use-sync-external-store: 1.2.0 peerDependencies: "@types/react": ">=16.8" immer: ">=9.0.6" @@ -51793,7 +58202,7 @@ __metadata: optional: true react: optional: true - checksum: 654e47959970bc66bbf2ae80fced7e556dd488e9ee54eb678330cb036ecc7184f4b8c2cae273be28022533622c54ab6339bf3fe30d19236367c5c251b6c6679a + checksum: 160052a7faaefbaad1071e890a06e5d7a04f6ff6985def30a7b4471f4ddbdd1d30bb05b3688a2777cd0b717d1f0d98dad24883a5caa3deeb3afb4d83b6dabc55 languageName: node linkType: hard From eb14b5eeb02c44e48af8684c6f1241c0728c7615 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:09:47 +0000 Subject: [PATCH 117/129] The entire form builder project is finally adjusted to work with the new backend --- .eslintrc.json | 2 +- apps/portals/form-system/src/lib/routes.tsx | 2 +- .../form-system/src/screens/FormsScreen.tsx | 18 +- libs/api/domains/form-system/project.json | 19 +- .../form-system/src/dto/applicant.input.ts | 33 +- .../src/dto/certification.input.ts | 47 +- .../form-system/src/dto/field.input.ts | 42 +- .../src/dto/fieldSettings.input.ts | 8 +- .../form-system/src/dto/fieldType.input.ts | 14 +- .../domains/form-system/src/dto/form.input.ts | 62 +- .../form-system/src/dto/listItem.input.ts | 33 +- .../form-system/src/dto/screen.input.ts | 3 + .../form-system/src/dto/section.input.ts | 10 +- .../form-system/src/dto/value.input.ts | 77 +- .../src/lib/applicants/applicants.resolver.ts | 13 +- .../src/lib/applicants/applicants.service.ts | 33 +- .../lib/applications/applications.resolver.ts | 2 +- .../certification/certification.resolver.ts | 41 + .../certification/certification.service.ts | 63 + .../src/lib/fields/fields.resolver.ts | 8 +- .../src/lib/fields/fields.service.ts | 4 +- .../form-system/src/lib/form-system.module.ts | 6 +- .../src/lib/forms/forms.resolver.ts | 6 +- .../src/lib/forms/forms.service.ts | 5 +- .../src/lib/listItems/listItems.resolver.ts | 13 +- .../src/lib/listItems/listItems.service.ts | 8 +- .../organizations/organizations.service.ts | 2 +- .../src/lib/screens/screens.resolver.ts | 4 +- .../src/lib/screens/screens.service.ts | 6 +- .../src/lib/sections/sections.resolver.ts | 8 +- .../src/lib/sections/sections.service.ts | 8 +- .../src/lib/services/services.resolver.ts | 2 +- .../src/lib/services/services.service.ts | 2 +- .../form-system/src/models/applicant.model.ts | 17 +- .../src/models/applications.model.ts | 4 + .../src/models/certification.model.ts | 32 + .../form-system/src/models/field.model.ts | 16 +- .../src/models/fieldSettings.model.ts | 8 +- .../form-system/src/models/fieldType.model.ts | 14 +- .../form-system/src/models/form.model.ts | 17 +- .../src/models/formApplicant.model.ts | 11 +- .../src/models/formCertificationType.model.ts | 18 - .../form-system/src/models/month.model.ts | 13 + .../form-system/src/models/value.model.ts | 65 + .../clients/form-system/src/clientConfig.json | 1615 ++++++++++++----- .../src/lib/FormSystemApiProvider.ts | 9 +- .../src/lib/FormSystemClient.config.ts | 1 - .../form-system/src/lib/form-system.module.ts | 14 +- .../src/components/FormLayout/FormLayout.tsx | 2 +- .../components/MainContent/MainContent.tsx | 5 +- .../components/BaseSettings/BaseSettings.tsx | 7 +- .../components/FieldContent/FieldContent.tsx | 17 +- .../FieldContent/components/BaseInput.tsx | 21 +- .../FieldSettings/FieldSettings.tsx | 18 +- .../FieldSettings/components/ListSettings.tsx | 18 +- .../components/MessageWithLinkSettings.tsx | 3 +- .../components/ToggleConnection.tsx | 3 +- .../components/UploadSettings.tsx | 58 +- .../components/ListBuilder/ListBuilder.tsx | 94 +- .../ListBuilder/components/ListItem.tsx | 60 +- .../components/Premises/Premises.tsx | 100 +- .../components/Preview/Preveiw.tsx | 38 +- .../RelevantParties/RelevantParties.tsx | 80 +- .../components/FormApplicantTypes.tsx | 59 +- .../components/NavComponent/NavComponent.tsx | 14 +- .../NavComponent/components/NavButtons.tsx | 7 +- .../src/components/Navbar/Navbar.tsx | 68 +- .../Navbar/components/NavbarTab/NavbarTab.tsx | 3 +- .../components/NavbarSelect/NavbarSelect.tsx | 3 +- .../src/components/TableRow/TableRow.tsx | 18 +- .../TranslationTag/TranslationTag.tsx | 4 +- .../form-system/src/context/ControlContext.ts | 11 +- .../form-system/src/context/FormProvider.tsx | 51 +- .../form-system/src/hooks/controlReducer.ts | 197 +- .../admin/form-system/src/lib/messages.ts | 437 ----- .../admin/form-system/src/lib/navigation.ts | 3 +- .../form-system/src/lib/utils/fieldTypes.ts | 52 +- .../src/lib/utils/removeTypename.ts | 6 + .../src/lib/utils/updateActiveItem.ts | 21 +- .../form-system/src/lib/utils/updateDnd.ts | 2 +- .../form-system/src/lib/utils/updateFormFn.ts | 1 + libs/portals/admin/form-system/src/module.tsx | 9 +- .../src/screens/Application/Application.tsx | 47 - .../src/screens/Applications/Applications.tsx | 6 - .../src/screens/Form/Form.loader.ts | 1 - .../form-system/src/screens/Form/Form.tsx | 1 - .../form-system/src/screens/Forms/Forms.tsx | 2 - .../graphql/src/lib/fragments/applicant.ts | 8 +- .../src/lib/fragments/certificateType.ts | 4 +- .../graphql/src/lib/fragments/dependency.ts | 1 + .../graphql/src/lib/fragments/field.ts | 11 + .../graphql/src/lib/fragments/fieldType.ts | 4 +- .../graphql/src/lib/fragments/form.ts | 7 +- .../src/lib/fragments/formApplicant.ts | 8 +- .../graphql/src/lib/fragments/formResponse.ts | 5 + .../graphql/src/lib/fragments/value.ts | 37 + .../src/lib/mutations/createCertification.ts | 10 + .../src/lib/mutations/deleteCertification.ts | 7 + .../graphql/src/lib/mutations/index.ts | 2 + .../graphql/src/lib/mutations/updateField.ts | 4 +- .../mutations/updateListItemDisplayOrder.ts | 6 +- .../mutations/updateSectionDisplayOrder.ts | 2 +- .../form-system/ui-components/jest.config.ts | 9 - .../form-system/ui-components/project.json | 13 +- .../HomestayOverview/HomestayOverview.tsx | 2 +- .../components/field-components/List/List.tsx | 1 + .../field-components/Radio/Radio.tsx | 2 +- .../components/form-stepper/formStepper.tsx | 29 + .../ui-components/src/components/index.ts | 1 + .../ui-components/src/lib/enums.ts | 90 + .../ui-components/src/lib/index.ts | 1 + .../ui-components/tsconfig.lib.json | 7 - tsconfig.base.json | 418 +++-- 113 files changed, 2913 insertions(+), 1781 deletions(-) create mode 100644 libs/api/domains/form-system/src/lib/certification/certification.resolver.ts create mode 100644 libs/api/domains/form-system/src/lib/certification/certification.service.ts create mode 100644 libs/api/domains/form-system/src/models/certification.model.ts delete mode 100644 libs/api/domains/form-system/src/models/formCertificationType.model.ts create mode 100644 libs/api/domains/form-system/src/models/month.model.ts create mode 100644 libs/api/domains/form-system/src/models/value.model.ts delete mode 100644 libs/portals/admin/form-system/src/lib/messages.ts delete mode 100644 libs/portals/admin/form-system/src/screens/Application/Application.tsx delete mode 100644 libs/portals/admin/form-system/src/screens/Applications/Applications.tsx create mode 100644 libs/portals/form-system/graphql/src/lib/fragments/value.ts create mode 100644 libs/portals/form-system/graphql/src/lib/mutations/createCertification.ts create mode 100644 libs/portals/form-system/graphql/src/lib/mutations/deleteCertification.ts create mode 100644 libs/portals/form-system/ui-components/src/components/form-stepper/formStepper.tsx create mode 100644 libs/portals/form-system/ui-components/src/lib/enums.ts diff --git a/.eslintrc.json b/.eslintrc.json index de6535442e17..ae70071d9445 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -57,7 +57,7 @@ "lib:react-spa", "lib:react", "lib:dom", - "lib:js", + "lib:js" ] }, { diff --git a/apps/portals/form-system/src/lib/routes.tsx b/apps/portals/form-system/src/lib/routes.tsx index e39146b8fece..2e60e1d273e8 100644 --- a/apps/portals/form-system/src/lib/routes.tsx +++ b/apps/portals/form-system/src/lib/routes.tsx @@ -22,7 +22,7 @@ export const routes: RouteObject[] = [ // path: '/:slug', // Forms screen where a new form is created if the user has not created a form before, otherwise the user sees a list of formerly created forms with the option to create a new one - element: <FormsScreen /> + element: <FormsScreen />, }, { path: '/:slug/:id', diff --git a/apps/portals/form-system/src/screens/FormsScreen.tsx b/apps/portals/form-system/src/screens/FormsScreen.tsx index 0a833e85438e..b4907047fbb7 100644 --- a/apps/portals/form-system/src/screens/FormsScreen.tsx +++ b/apps/portals/form-system/src/screens/FormsScreen.tsx @@ -1,9 +1,8 @@ -import { useMutation } from "@apollo/client" -import { useAuth } from "@island.is/auth/react" -import { useLocale, useLocalizedQuery } from "@island.is/localization" -import { Params, useNavigate, useParams } from "react-router-dom" -import { CREATE_APPLICATION, CREATE_FORM } from "@island.is/form-system/graphql" - +import { useMutation } from '@apollo/client' +import { useAuth } from '@island.is/auth/react' +import { useLocale, useLocalizedQuery } from '@island.is/localization' +import { Params, useNavigate, useParams } from 'react-router-dom' +import { CREATE_APPLICATION, CREATE_FORM } from '@island.is/form-system/graphql' export const FormsScreen = () => { const { userInfo } = useAuth() @@ -59,9 +58,9 @@ export const FormsScreen = () => { const data = await createFormMutation({ variables: { input: { - slug: slug - } - } + slug: slug, + }, + }, }) console.log(data) } catch (err) { @@ -70,7 +69,6 @@ export const FormsScreen = () => { } data() - const createForm = () => { // Graphql mutation to create form } diff --git a/libs/api/domains/form-system/project.json b/libs/api/domains/form-system/project.json index 0232a6fc2627..25110253cd4a 100644 --- a/libs/api/domains/form-system/project.json +++ b/libs/api/domains/form-system/project.json @@ -6,20 +6,14 @@ "targets": { "lint": { "executor": "@nx/linter:eslint", - "outputs": [ - "{options.outputFile}" - ], + "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": [ - "libs/api/domains/form-system/**/*.ts" - ] + "lintFilePatterns": ["libs/api/domains/form-system/**/*.ts"] } }, "test": { "executor": "@nx/jest:jest", - "outputs": [ - "{workspaceRoot}/coverage/{projectRoot}" - ], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/api/domains/form-system/jest.config.ts", "passWithNoTests": true @@ -32,8 +26,5 @@ } } }, - "tags": [ - "lib:api", - "scope:api" - ] -} \ No newline at end of file + "tags": ["lib:api", "scope:api"] +} diff --git a/libs/api/domains/form-system/src/dto/applicant.input.ts b/libs/api/domains/form-system/src/dto/applicant.input.ts index a892dc95b9c8..e6d82834b366 100644 --- a/libs/api/domains/form-system/src/dto/applicant.input.ts +++ b/libs/api/domains/form-system/src/dto/applicant.input.ts @@ -1,18 +1,13 @@ -import { Field, InputType, registerEnumType } from '@nestjs/graphql' -import { CreateFormApplicantDtoApplicantTypeEnum } from '@island.is/clients/form-system' +import { Field, InputType } from '@nestjs/graphql' import { LanguageTypeInput } from './languageType.input' -registerEnumType(CreateFormApplicantDtoApplicantTypeEnum, { - name: 'FormSystemCreateFormApplicantDtoApplicantTypeEnum', -}) - @InputType('FormSystemCreateApplicantDtoInput') export class FormSystemCreateApplicantDtoInput { @Field(() => String, { nullable: true }) formId?: string - @Field(() => CreateFormApplicantDtoApplicantTypeEnum, { nullable: true }) - applicantType?: CreateFormApplicantDtoApplicantTypeEnum + @Field(() => String, { nullable: true }) + applicantTypeId?: string } @InputType('FormSystemUpdateApplicantDtoInput') @@ -24,7 +19,7 @@ export class FormSystemUpdateApplicantDtoInput { @InputType('FormSystemCreateApplicantInput') export class CreateApplicantInput { @Field(() => FormSystemCreateApplicantDtoInput, { nullable: true }) - createFormApplicantDto?: FormSystemCreateApplicantDtoInput + createFormApplicantTypeDto?: FormSystemCreateApplicantDtoInput } @InputType('FormSystemDeleteApplicantInput') @@ -39,5 +34,23 @@ export class UpdateApplicantInput { id?: string @Field(() => FormSystemUpdateApplicantDtoInput, { nullable: true }) - updateFormApplicantDto?: FormSystemUpdateApplicantDtoInput + updateFormApplicantTypeDto?: FormSystemUpdateApplicantDtoInput +} + +@InputType('FormSystemFormApplicantInput') +export class FormApplicantInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => LanguageTypeInput, { nullable: true }) + description?: LanguageTypeInput + + @Field(() => String, { nullable: true }) + applicantTypeId?: string + + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput + + @Field(() => [LanguageTypeInput], { nullable: true }) + nameSuggestions?: LanguageTypeInput[] } diff --git a/libs/api/domains/form-system/src/dto/certification.input.ts b/libs/api/domains/form-system/src/dto/certification.input.ts index f895d0d8ab1e..41aec0c326d5 100644 --- a/libs/api/domains/form-system/src/dto/certification.input.ts +++ b/libs/api/domains/form-system/src/dto/certification.input.ts @@ -1,11 +1,6 @@ -import { Field, InputType, registerEnumType } from '@nestjs/graphql' -import { CertificationTypeDtoTypeEnum } from '@island.is/clients/form-system' +import { Field, InputType } from '@nestjs/graphql' import { LanguageTypeInput } from './languageType.input' -registerEnumType(CertificationTypeDtoTypeEnum, { - name: 'FormSystemCertificationTypeDtoTypeEnum', -}) - @InputType('FormSystemCertificationInput') export class CertificationInput { @Field(() => String, { nullable: true }) @@ -17,6 +12,42 @@ export class CertificationInput { @Field(() => LanguageTypeInput, { nullable: true }) description?: LanguageTypeInput - @Field(() => CertificationTypeDtoTypeEnum, { nullable: true }) - type?: CertificationTypeDtoTypeEnum + @Field(() => Boolean, { nullable: true }) + isCommon?: boolean + + @Field(() => String, { nullable: true }) + certificationTypeId?: string + + @Field(() => String, { nullable: true }) + organizationCertificationId?: string +} + +@InputType('FormSystemFormCertificationTypeDtoInput') +export class FormCertificationTypeDtoInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => String, { nullable: true }) + certificationTypeId?: string +} + +@InputType('FormSystemCreateCertificationDtoInput') +export class CreateCertificationDtoInput { + @Field(() => String, { nullable: true }) + formId?: string + + @Field(() => String, { nullable: true }) + certificationTypeId?: string +} + +@InputType('FormSystemCreateCertificationInput') +export class CreateCertificationInput { + @Field(() => CreateCertificationDtoInput, { nullable: true }) + createFormCertificationTypeDto?: CreateCertificationDtoInput +} + +@InputType('FormSystemDeleteCertificationInput') +export class DeleteCertificationInput { + @Field(() => String, { nullable: true }) + id?: string } diff --git a/libs/api/domains/form-system/src/dto/field.input.ts b/libs/api/domains/form-system/src/dto/field.input.ts index 43365a330d8d..5092a023da86 100644 --- a/libs/api/domains/form-system/src/dto/field.input.ts +++ b/libs/api/domains/form-system/src/dto/field.input.ts @@ -1,16 +1,19 @@ -import { Field, InputType, Int, registerEnumType } from '@nestjs/graphql' -import { FieldDtoFieldTypeEnum } from '@island.is/clients/form-system' +import { Field, InputType, Int } from '@nestjs/graphql' import { FieldSettingsInput } from './fieldSettings.input' import { LanguageTypeInput } from './languageType.input' - -registerEnumType(FieldDtoFieldTypeEnum, { - name: 'FormSystemFieldDtoFieldTypeEnum', -}) +import { ListItemInput } from './listItem.input' +import { ValueDtoInput } from './value.input' @InputType('FormSystemCreateFieldDtoInput') export class CreateFieldDtoInput { @Field(() => String, { nullable: true }) screenId?: string + + @Field(() => String, { nullable: true }) + fieldType?: string + + @Field(() => Int, { nullable: true }) + displayOrder?: number } @InputType('FormSystemCreateFieldInput') @@ -51,11 +54,17 @@ export class UpdateFieldDtoInput { @Field(() => Boolean, { nullable: true }) isPartOfMultiset?: boolean + @Field(() => Boolean, { nullable: true }) + isRequired?: boolean + + @Field(() => Boolean, { nullable: true }) + isHidden?: boolean + @Field(() => FieldSettingsInput, { nullable: true }) fieldSettings?: FieldSettingsInput - @Field(() => FieldDtoFieldTypeEnum, { nullable: true }) - fieldType?: FieldDtoFieldTypeEnum + @Field(() => String, { nullable: true }) + fieldType?: string } @InputType('FormSystemUpdateFieldInput') @@ -88,12 +97,21 @@ export class FieldInput { @Field(() => Boolean, { nullable: true }) isPartOfMultiset?: boolean + @Field(() => Boolean, { nullable: true }) + isHidden?: boolean + + @Field(() => Boolean, { nullable: true }) + isRequired?: boolean + @Field(() => FieldSettingsInput, { nullable: true }) fieldSettings?: FieldSettingsInput - @Field(() => FieldDtoFieldTypeEnum, { nullable: true }) - fieldType?: FieldDtoFieldTypeEnum + @Field(() => String, { nullable: true }) + fieldType?: string - @Field(() => Boolean, { nullable: true }) - isRequired?: boolean + @Field(() => [ListItemInput], { nullable: 'itemsAndList' }) + list?: ListItemInput[] + + @Field(() => [ValueDtoInput], { nullable: 'itemsAndList' }) + values?: ValueDtoInput[] } diff --git a/libs/api/domains/form-system/src/dto/fieldSettings.input.ts b/libs/api/domains/form-system/src/dto/fieldSettings.input.ts index b7eddc934c91..fb46f9f04c36 100644 --- a/libs/api/domains/form-system/src/dto/fieldSettings.input.ts +++ b/libs/api/domains/form-system/src/dto/fieldSettings.input.ts @@ -22,11 +22,11 @@ export class FieldSettingsInput { @Field(() => Date, { nullable: true }) maxDate?: Date - @Field(() => String, { nullable: true }) - minAmount?: string + @Field(() => Int, { nullable: true }) + minAmount?: number - @Field(() => String, { nullable: true }) - maxAmount?: string + @Field(() => Int, { nullable: true }) + maxAmount?: number @Field(() => Int, { nullable: true }) year?: number diff --git a/libs/api/domains/form-system/src/dto/fieldType.input.ts b/libs/api/domains/form-system/src/dto/fieldType.input.ts index f03c5b274c12..01bf22122ed3 100644 --- a/libs/api/domains/form-system/src/dto/fieldType.input.ts +++ b/libs/api/domains/form-system/src/dto/fieldType.input.ts @@ -1,20 +1,13 @@ -import { Field, InputType, registerEnumType } from '@nestjs/graphql' -import { FieldTypeDtoTypeEnum } from '@island.is/clients/form-system' +import { Field, InputType } from '@nestjs/graphql' import { FieldSettingsInput } from './fieldSettings.input' import { LanguageTypeInput } from './languageType.input' - -registerEnumType(FieldTypeDtoTypeEnum, { - name: 'FormSystemFieldTypeDtoTypeEnum', -}) +import { ValueInput } from './value.input' @InputType('FormSystemFieldTypeInput') export class FieldTypeInput { @Field(() => String, { nullable: true }) id?: string - @Field(() => FieldTypeDtoTypeEnum, { nullable: true }) - type?: FieldTypeDtoTypeEnum - @Field(() => LanguageTypeInput, { nullable: true }) name?: LanguageTypeInput @@ -26,4 +19,7 @@ export class FieldTypeInput { @Field(() => FieldSettingsInput, { nullable: true }) fieldSettings?: FieldSettingsInput + + @Field(() => [ValueInput], { nullable: 'itemsAndList' }) + values?: ValueInput[] } diff --git a/libs/api/domains/form-system/src/dto/form.input.ts b/libs/api/domains/form-system/src/dto/form.input.ts index bab483295cc3..f2e4ca40adc5 100644 --- a/libs/api/domains/form-system/src/dto/form.input.ts +++ b/libs/api/domains/form-system/src/dto/form.input.ts @@ -1,22 +1,15 @@ -import { Field, InputType, Int, registerEnumType } from '@nestjs/graphql' +import { Field, InputType, Int } from '@nestjs/graphql' import { SectionInput } from './section.input' import { ScreenInput } from './screen.input' import { FieldInput } from './field.input' import { LanguageTypeInput } from './languageType.input' -import { - CertificationTypeDtoTypeEnum, - FormApplicantDtoApplicantTypeEnum, -} from '@island.is/clients/form-system' import { FieldTypeInput } from './fieldType.input' import { ListTypeInput } from './listType.input' - -registerEnumType(FormApplicantDtoApplicantTypeEnum, { - name: 'FormSystemFormApplicantDtoApplicantTypeEnum', -}) - -registerEnumType(CertificationTypeDtoTypeEnum, { - name: 'FormSystemCertificationTypeDtoTypeEnum', -}) +import { FormApplicantInput } from './applicant.input' +import { + CertificationInput, + FormCertificationTypeDtoInput, +} from './certification.input' @InputType('FormSystemDependencyInput') export class DependencyInput { @@ -25,6 +18,9 @@ export class DependencyInput { @Field(() => [String], { nullable: 'itemsAndList' }) childProps?: string[] + + @Field(() => Boolean, { nullable: true }) + isSelected?: boolean } @InputType('FormSystemCreateFormInput') @@ -51,33 +47,6 @@ export class GetAllFormsInput { organizationId?: string } -@InputType('FormSystemFormApplicantInput') -export class FormApplicantInput { - @Field(() => String, { nullable: true }) - id?: string - - @Field(() => FormApplicantDtoApplicantTypeEnum, { nullable: true }) - applicantType?: FormApplicantDtoApplicantTypeEnum - - @Field(() => LanguageTypeInput, { nullable: true }) - name?: LanguageTypeInput -} - -@InputType('FormSystemFormCertificationTypeInput') -export class FormCertificationTypeInput { - @Field(() => String, { nullable: true }) - id?: string - - @Field(() => LanguageTypeInput, { nullable: true }) - name?: LanguageTypeInput - - @Field(() => LanguageTypeInput, { nullable: true }) - description?: LanguageTypeInput - - @Field(() => CertificationTypeDtoTypeEnum, { nullable: true }) - type?: CertificationTypeDtoTypeEnum -} - @InputType('FormSystemUpdateFormDtoInput') export class UpdateFormDtoInput { @Field(() => String, { nullable: true }) @@ -155,11 +124,11 @@ export class FormInput { @Field(() => LanguageTypeInput, { nullable: true }) completedMessage?: LanguageTypeInput - @Field(() => [FormCertificationTypeInput], { nullable: 'itemsAndList' }) - certificationTypes?: FormCertificationTypeInput[] + @Field(() => [FormCertificationTypeDtoInput], { nullable: 'itemsAndList' }) + certificationTypes?: FormCertificationTypeDtoInput[] @Field(() => [FormApplicantInput], { nullable: 'itemsAndList' }) - applicants?: FormApplicantInput[] + applicantTypes?: FormApplicantInput[] @Field(() => [SectionInput], { nullable: 'itemsAndList' }) sections?: SectionInput[] @@ -182,8 +151,11 @@ export class FormResponseInput { @Field(() => [FieldTypeInput], { nullable: 'itemsAndList' }) fieldTypes?: FieldTypeInput[] - @Field(() => [FormCertificationTypeInput], { nullable: 'itemsAndList' }) - certificationTypes?: FormCertificationTypeInput[] + @Field(() => [CertificationInput], { nullable: 'itemsAndList' }) + certificationTypes?: CertificationInput[] + + @Field(() => [FormApplicantInput], { nullable: 'itemsAndList' }) + applicantTypes?: FormApplicantInput[] @Field(() => [ListTypeInput], { nullable: 'itemsAndList' }) listTypes?: ListTypeInput[] diff --git a/libs/api/domains/form-system/src/dto/listItem.input.ts b/libs/api/domains/form-system/src/dto/listItem.input.ts index 2e44a5f128ba..5fee3e734594 100644 --- a/libs/api/domains/form-system/src/dto/listItem.input.ts +++ b/libs/api/domains/form-system/src/dto/listItem.input.ts @@ -1,8 +1,8 @@ import { Field, InputType, Int } from '@nestjs/graphql' import { LanguageTypeInput } from './languageType.input' -@InputType('FormSystemCreateListItemInput') -export class CreateListItemInput { +@InputType('FormSystemCreateListItemDtoInput') +export class CreateListItemDtoInput { @Field(() => String, { nullable: true }) fieldId?: string @@ -10,14 +10,20 @@ export class CreateListItemInput { displayOrder?: number } +@InputType('FormSystemCreateListItemInput') +export class CreateListItemInput { + @Field(() => CreateListItemDtoInput, { nullable: true }) + createListItemDto?: CreateListItemDtoInput +} + @InputType('FormSystemDeleteListItemInput') export class DeleteListItemInput { @Field(() => String, { nullable: true }) id?: string } -@InputType('FormSystemUpdateListItemInput') -export class UpdateListItemInput { +@InputType('FormSystemUpdateListItemDtoInput') +export class UpdateListItemDto { @Field(() => LanguageTypeInput, { nullable: true }) label?: LanguageTypeInput @@ -31,18 +37,33 @@ export class UpdateListItemInput { isSelected?: boolean } +@InputType('FormSystemUpdateListItemInput') +export class UpdateListItemInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => UpdateListItemDto, { nullable: true }) + updateListItemDto?: UpdateListItemDto +} + @InputType('FormSystemListItemDisplayOrderInput') export class ListItemDisplayOrderInput { @Field(() => String, { nullable: true }) id?: string } -@InputType('FormSystemUpdateListItemsDisplayOrderInput') -export class UpdateListItemsDisplayOrderInput { +@InputType('FormSystemUpdateListItemsDisplayOrderDtoInput') +export class UpdateListItemsDisplayOrderDtoInput { @Field(() => [ListItemDisplayOrderInput], { nullable: 'itemsAndList' }) listItemsDisplayOrderDto?: ListItemDisplayOrderInput[] } +@InputType('FormSystemUpdateListItemsDisplayOrderInput') +export class UpdateListItemDisplayOrderInput { + @Field(() => UpdateListItemsDisplayOrderDtoInput, { nullable: true }) + updateListItemsDisplayOrderDto?: UpdateListItemsDisplayOrderDtoInput +} + @InputType('FormSystemListItemInput') export class ListItemInput { @Field(() => String, { nullable: true }) diff --git a/libs/api/domains/form-system/src/dto/screen.input.ts b/libs/api/domains/form-system/src/dto/screen.input.ts index 39c1a0a8e19f..6e8d74461d04 100644 --- a/libs/api/domains/form-system/src/dto/screen.input.ts +++ b/libs/api/domains/form-system/src/dto/screen.input.ts @@ -6,6 +6,9 @@ import { FieldInput } from './field.input' export class CreateScreenDtoInput { @Field(() => String, { nullable: true }) sectionId?: string + + @Field(() => Int, { nullable: true }) + displayOrder?: number } @InputType('FormSystemCreateScreenInput') diff --git a/libs/api/domains/form-system/src/dto/section.input.ts b/libs/api/domains/form-system/src/dto/section.input.ts index a3544c034758..a230db7ae175 100644 --- a/libs/api/domains/form-system/src/dto/section.input.ts +++ b/libs/api/domains/form-system/src/dto/section.input.ts @@ -19,6 +19,12 @@ export class UpdateSectionsDisplayOrderDtoInput { sectionsDisplayOrderDto?: SectionDisplayOrderInput[] } +@InputType('FormSystemUpdateSectionsDisplayOrderInput') +export class UpdateSectionsDisplayOrderInput { + @Field(() => UpdateSectionsDisplayOrderDtoInput, { nullable: true }) + updateSectionsDisplayOrderDto?: UpdateSectionsDisplayOrderDtoInput +} + @InputType('FormSystemUpdateSectionDtoInput') export class UpdateSectionDtoInput { @Field(() => LanguageTypeInput, { nullable: true }) @@ -43,11 +49,13 @@ export class DeleteSectionInput { id?: string } - @InputType('FormSystemCreateSectionDtoInput') export class CreateSectionDtoInput { @Field(() => String, { nullable: true }) formId?: string + + @Field(() => Int, { nullable: true }) + displayOrder?: number } @InputType('FormSystemCreateSectionInput') diff --git a/libs/api/domains/form-system/src/dto/value.input.ts b/libs/api/domains/form-system/src/dto/value.input.ts index 94634fbee2f3..be8f2226b017 100644 --- a/libs/api/domains/form-system/src/dto/value.input.ts +++ b/libs/api/domains/form-system/src/dto/value.input.ts @@ -1 +1,76 @@ -import { InputType, Field } from '@nestjs/graphql' +import { InputType, Field, Int } from '@nestjs/graphql' + +@InputType('FormSystemMonthInput') +export class MonthInput { + @Field(() => Int, { nullable: true }) + month?: number + + @Field(() => Int, { nullable: true }) + amount?: number + + @Field(() => [Int], { nullable: true }) + days?: number[] +} + +@InputType('FormSystemValueInput') +export class ValueInput { + @Field(() => String, { nullable: true }) + text?: string + + @Field(() => Int, { nullable: true }) + number?: number + + @Field(() => Date, { nullable: true }) + date?: Date + + @Field(() => String, { nullable: true }) + kennitala?: string + + @Field(() => String, { nullable: true }) + name?: string + + @Field(() => String, { nullable: true }) + address?: string + + @Field(() => String, { nullable: true }) + postalCode?: string + + @Field(() => String, { nullable: true }) + municipality?: string + + @Field(() => String, { nullable: true }) + jobTitle?: string + + @Field(() => String, { nullable: true }) + altName?: string + + @Field(() => String, { nullable: true }) + homestayNumber?: string + + @Field(() => Int, { nullable: true }) + totalDays?: number + + @Field(() => Int, { nullable: true }) + totalAmount?: number + + @Field(() => Int, { nullable: true }) + year?: number + + @Field(() => Boolean, { nullable: true }) + isNullReport?: boolean + + @Field(() => [MonthInput], { nullable: true }) + months?: MonthInput[] +} + +@InputType('FormSystemValueDtoInput') +export class ValueDtoInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => Int, { nullable: true }) + order?: number + + @Field(() => ValueInput, { nullable: true }) + json?: ValueInput +} diff --git a/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts b/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts index 135dc5f91ba4..18fe0c3d78ed 100644 --- a/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts @@ -8,14 +8,17 @@ import { import { Audit } from '@island.is/nest/audit' import { ApplicantsService } from './applicants.service' import { Applicant } from '../../models/applicant.model' -import { CreateApplicantInput, DeleteApplicantInput, UpdateApplicantInput } from '../../dto/applicant.input' - +import { + CreateApplicantInput, + DeleteApplicantInput, + UpdateApplicantInput, +} from '../../dto/applicant.input' @Resolver() @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class ApplicantsResolver { - constructor(private readonly applicantsService: ApplicantsService) { } + constructor(private readonly applicantsService: ApplicantsService) {} @Mutation(() => Applicant, { name: 'formSystemCreateApplicant', @@ -29,7 +32,7 @@ export class ApplicantsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteApplicant', - nullable: true + nullable: true, }) async deleteApplicant( @Args('input') input: DeleteApplicantInput, @@ -40,7 +43,7 @@ export class ApplicantsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateApplicant', - nullable: true + nullable: true, }) async updateApplicant( @Args('input') input: UpdateApplicantInput, diff --git a/libs/api/domains/form-system/src/lib/applicants/applicants.service.ts b/libs/api/domains/form-system/src/lib/applicants/applicants.service.ts index 28c34ef93825..117839bb9c49 100644 --- a/libs/api/domains/form-system/src/lib/applicants/applicants.service.ts +++ b/libs/api/domains/form-system/src/lib/applicants/applicants.service.ts @@ -3,8 +3,17 @@ import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { ApolloError } from '@apollo/client' import { handle4xx } from '../../utils/errorHandler' -import { FormApplicantsApi, FormApplicantsControllerCreateRequest, FormApplicantsControllerDeleteRequest, FormApplicantsControllerUpdateRequest } from '@island.is/clients/form-system' -import { CreateApplicantInput, DeleteApplicantInput, UpdateApplicantInput } from '../../dto/applicant.input' +import { + FormApplicantTypesApi, + FormApplicantTypesControllerCreateRequest, + FormApplicantTypesControllerDeleteRequest, + FormApplicantTypesControllerUpdateRequest, +} from '@island.is/clients/form-system' +import { + CreateApplicantInput, + DeleteApplicantInput, + UpdateApplicantInput, +} from '../../dto/applicant.input' import { Applicant } from '../../models/applicant.model' @Injectable() @@ -12,7 +21,7 @@ export class ApplicantsService { constructor( @Inject(LOGGER_PROVIDER) private logger: Logger, - private formApplicantsApi: FormApplicantsApi, + private formApplicantTypesApi: FormApplicantTypesApi, ) { } // eslint-disable-next-line @@ -27,7 +36,7 @@ export class ApplicantsService { } private applicantsApiWithAuth(auth: User) { - return this.formApplicantsApi.withMiddleware(new AuthMiddleware(auth)) + return this.formApplicantTypesApi.withMiddleware(new AuthMiddleware(auth)) } async createApplicant( @@ -35,7 +44,9 @@ export class ApplicantsService { input: CreateApplicantInput, ): Promise<Applicant> { const response = await this.applicantsApiWithAuth(auth) - .formApplicantsControllerCreate(input as FormApplicantsControllerCreateRequest) + .formApplicantTypesControllerCreate( + input as FormApplicantTypesControllerCreateRequest, + ) .catch((e) => handle4xx(e, this.handleError, 'failed to create applicant'), ) @@ -48,10 +59,12 @@ export class ApplicantsService { async deleteApplicant( auth: User, - input: DeleteApplicantInput + input: DeleteApplicantInput, ): Promise<void> { const response = await this.applicantsApiWithAuth(auth) - .formApplicantsControllerDelete(input as FormApplicantsControllerDeleteRequest) + .formApplicantTypesControllerDelete( + input as FormApplicantTypesControllerDeleteRequest, + ) .catch((e) => handle4xx(e, this.handleError, 'failed to delete applicant'), ) @@ -64,10 +77,12 @@ export class ApplicantsService { async updateApplicant( auth: User, - input: UpdateApplicantInput + input: UpdateApplicantInput, ): Promise<void> { const response = await this.applicantsApiWithAuth(auth) - .formApplicantsControllerUpdate(input as FormApplicantsControllerUpdateRequest) + .formApplicantTypesControllerUpdate( + input as FormApplicantTypesControllerUpdateRequest, + ) .catch((e) => handle4xx(e, this.handleError, 'failed to update applicant'), ) diff --git a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts index afb178998d24..4ed0ec6fce2c 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts @@ -17,7 +17,7 @@ import { @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class ApplicationsResolver { - constructor(private readonly applicationsService: ApplicationsService) { } + constructor(private readonly applicationsService: ApplicationsService) {} @Query(() => Application, { name: 'formSystemGetApplication', diff --git a/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts b/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts new file mode 100644 index 000000000000..961730227a81 --- /dev/null +++ b/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts @@ -0,0 +1,41 @@ +import { UseGuards } from '@nestjs/common' +import { Args, Mutation, Resolver } from '@nestjs/graphql' +import { + CurrentUser, + IdsUserGuard, + type User, +} from '@island.is/auth-nest-tools' +import { Audit } from '@island.is/nest/audit' +import { CertificationsService } from './certification.service' +import { CreateCertificationInput, DeleteCertificationInput } from '../../dto/certification.input' +import { FormCertificationTypeDto } from '../../models/certification.model' + +@Resolver() +@UseGuards(IdsUserGuard) +@Audit({ namespace: '@island.is/api/form-system' }) +export class CertificationsResolver { + constructor(private readonly certificationsService: CertificationsService) { } + + @Mutation(() => FormCertificationTypeDto, { + name: 'formSystemCreateCertification', + }) + async createCertification( + @Args('input', { type: () => CreateCertificationInput }) + input: CreateCertificationInput, + @CurrentUser() user: User, + ): Promise<FormCertificationTypeDto> { + return this.certificationsService.createCertification(user, input) + } + + @Mutation(() => Boolean, { + name: 'formSystemDeleteCertification', + nullable: true + }) + async deleteCertification( + @Args('input', { type: () => DeleteCertificationInput }) + input: DeleteCertificationInput, + @CurrentUser() user: User, + ): Promise<void> { + return this.certificationsService.deleteCertification(user, input) + } +} diff --git a/libs/api/domains/form-system/src/lib/certification/certification.service.ts b/libs/api/domains/form-system/src/lib/certification/certification.service.ts new file mode 100644 index 000000000000..2cb6b14eeb53 --- /dev/null +++ b/libs/api/domains/form-system/src/lib/certification/certification.service.ts @@ -0,0 +1,63 @@ +import { Injectable, Inject } from '@nestjs/common' +import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' +import { AuthMiddleware, User } from '@island.is/auth-nest-tools' +import { ApolloError } from '@apollo/client' +import { handle4xx } from '../../utils/errorHandler' +import { FormCertificationTypeDto, FormCertificationTypesApi, FormCertificationTypesControllerCreateRequest, FormCertificationTypesControllerDeleteRequest } from '@island.is/clients/form-system' +import { CreateCertificationInput, DeleteCertificationInput } from '../../dto/certification.input' + +@Injectable() +export class CertificationsService { + constructor( + @Inject(LOGGER_PROVIDER) + private logger: Logger, + private certificationsApi: FormCertificationTypesApi + ) { } + + // eslint-disable-next-line + handleError(error: any, errorDetail?: string): ApolloError | null { + const err = { + error: JSON.stringify(error), + category: 'forms-service', + } + this.logger.error(errorDetail || 'Error in certifications service', err) + + throw new ApolloError(error.message) + } + + private certificationsApiWithAuth(auth: User) { + return this.certificationsApi.withMiddleware(new AuthMiddleware(auth)) + } + + async createCertification( + auth: User, + input: CreateCertificationInput + ): Promise<FormCertificationTypeDto> { + const response = await this.certificationsApiWithAuth(auth) + .formCertificationTypesControllerCreate( + input as FormCertificationTypesControllerCreateRequest + ) + .catch((e) => + handle4xx(e, this.handleError, 'failed to create certification'), + ) + + if (!response || response instanceof ApolloError) { + return { + id: '', + certificationTypeId: '', + } + } + return response + } + + async deleteCertification( + auth: User, + input: DeleteCertificationInput + ): Promise<void> { + await this.certificationsApiWithAuth(auth) + .formCertificationTypesControllerDelete(input as FormCertificationTypesControllerDeleteRequest) + .catch((e) => + handle4xx(e, this.handleError, 'failed to delete certification'), + ) + } +} diff --git a/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts b/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts index 51654bfe7aca..db1f0feb5f57 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts @@ -1,5 +1,5 @@ import { UseGuards } from '@nestjs/common' -import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' +import { Args, Mutation, Resolver } from '@nestjs/graphql' import { CurrentUser, IdsUserGuard, @@ -33,7 +33,7 @@ export class FieldsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateField', - nullable: true + nullable: true, }) async updateField( @Args('input', { type: () => UpdateFieldInput }) input: UpdateFieldInput, @@ -44,7 +44,7 @@ export class FieldsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteField', - nullable: true + nullable: true, }) async deleteField( @Args('input', { type: () => DeleteFieldInput }) input: DeleteFieldInput, @@ -55,7 +55,7 @@ export class FieldsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateFieldsDisplayOrder', - nullable: true + nullable: true, }) async updateFieldsDisplayOrder( @Args('input', { type: () => UpdateFieldsDisplayOrderInput }) diff --git a/libs/api/domains/form-system/src/lib/fields/fields.service.ts b/libs/api/domains/form-system/src/lib/fields/fields.service.ts index b4a70bc74650..81ae26a9014b 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.service.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.service.ts @@ -32,8 +32,7 @@ export class FieldsService { error: JSON.stringify(error), category: 'forms-service', } - //this.logger.error(errorDetail || 'Error in fields service', err) - console.error(error) + // this.logger.error(errorDetail || 'Error in fields service', err) throw new ApolloError(error.message) } @@ -67,7 +66,6 @@ export class FieldsService { const response = await this.fieldsApiWithAuth(auth) .fieldsControllerUpdate(input as unknown as FieldsControllerUpdateRequest) .catch((e) => handle4xx(e, this.handleError, 'failed to update field')) - if (!response || response instanceof ApolloError) { return } diff --git a/libs/api/domains/form-system/src/lib/form-system.module.ts b/libs/api/domains/form-system/src/lib/form-system.module.ts index 12e1cd8a7b08..7fef13044a9a 100644 --- a/libs/api/domains/form-system/src/lib/form-system.module.ts +++ b/libs/api/domains/form-system/src/lib/form-system.module.ts @@ -19,6 +19,8 @@ import { ServicesService } from './services/services.service' import { ApplicantsResolver } from './applicants/applicants.resolver' import { ApplicantsService } from './applicants/applicants.service' import { LoggingModule } from '@island.is/logging' +import { CertificationsResolver } from './certification/certification.resolver' +import { CertificationsService } from './certification/certification.service' @Module({ providers: [ @@ -40,8 +42,10 @@ import { LoggingModule } from '@island.is/logging' ServicesService, ApplicantsResolver, ApplicantsService, + CertificationsResolver, + CertificationsService, ], exports: [], imports: [FormSystemClientModule, LoggingModule], }) -export class FormSystemModule { } +export class FormSystemModule {} diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index 84cb04a94a38..e2b24f3f7659 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -20,7 +20,7 @@ import { FormResponse } from '../../models/form.model' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class FormsResolver { - constructor(private readonly formsService: FormsService) { } + constructor(private readonly formsService: FormsService) {} @Mutation(() => FormResponse, { name: 'formSystemCreateForm', @@ -34,7 +34,7 @@ export class FormsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteForm', - nullable: true + nullable: true, }) async deleteForm( @Args('input', { type: () => DeleteFormInput }) input: DeleteFormInput, @@ -65,7 +65,7 @@ export class FormsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateForm', - nullable: true + nullable: true, }) async updateForm( @Args('input', { type: () => UpdateFormInput }) input: UpdateFormInput, diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 1f1d1a3d729d..8c084c37ba32 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -34,8 +34,7 @@ export class FormsService { error: JSON.stringify(error), category: 'forms-service', } - //this.logger.error(errorDetail || 'Error in forms service', err) - console.error(error) + this.logger.error(errorDetail || 'Error in forms service', err) throw new ApolloError(error.message) } @@ -46,7 +45,7 @@ export class FormsService { async createForm(auth: User, input: CreateFormInput): Promise<FormResponse> { const response = await this.formsApiWithAuth(auth) .formsControllerCreate({ - createFormDto: input as CreateFormDto + createFormDto: input as CreateFormDto, }) .catch((e) => handle4xx(e, this.handleError, 'failed to create form')) diff --git a/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts b/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts index 66f61b2057ea..c38442be6d2c 100644 --- a/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts +++ b/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts @@ -9,6 +9,7 @@ import { Audit } from '@island.is/nest/audit' import { CreateListItemInput, DeleteListItemInput, + UpdateListItemDisplayOrderInput, UpdateListItemInput, } from '../../dto/listItem.input' import { ListItemsService } from './listItems.service' @@ -18,7 +19,7 @@ import { ListItem } from '../../models/listItem.model' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class ListItemsResolver { - constructor(private readonly listItemsService: ListItemsService) { } + constructor(private readonly listItemsService: ListItemsService) {} @Mutation(() => ListItem, { name: 'formSystemCreateListItem', @@ -33,7 +34,7 @@ export class ListItemsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteListItem', - nullable: true + nullable: true, }) async deleteListItem( @Args('input', { type: () => DeleteListItemInput }) @@ -45,7 +46,7 @@ export class ListItemsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateListItem', - nullable: true + nullable: true, }) async updateListItem( @Args('input', { type: () => UpdateListItemInput }) @@ -57,11 +58,11 @@ export class ListItemsResolver { @Mutation(() => Boolean, { name: 'formSystemUpdateListItemsDisplayOrder', - nullable: true + nullable: true, }) async updateListItemsDisplayOrder( - @Args('input', { type: () => UpdateListItemInput }) - input: UpdateListItemInput, + @Args('input', { type: () => UpdateListItemDisplayOrderInput }) + input: UpdateListItemDisplayOrderInput, @CurrentUser() user: User, ): Promise<void> { return this.listItemsService.updateListItemsDisplayOrder(user, input) diff --git a/libs/api/domains/form-system/src/lib/listItems/listItems.service.ts b/libs/api/domains/form-system/src/lib/listItems/listItems.service.ts index 94b257c8a72b..140f3053a7b8 100644 --- a/libs/api/domains/form-system/src/lib/listItems/listItems.service.ts +++ b/libs/api/domains/form-system/src/lib/listItems/listItems.service.ts @@ -8,10 +8,12 @@ import { ListItemsApi, ListItemsControllerDeleteRequest, ListItemsControllerUpdateRequest, + ListItemsControllerUpdateDisplayOrderRequest, } from '@island.is/clients/form-system' import { CreateListItemInput, DeleteListItemInput, + UpdateListItemDisplayOrderInput, UpdateListItemInput, } from '../../dto/listItem.input' import { ListItem } from '../../models/listItem.model' @@ -83,10 +85,12 @@ export class ListItemsService { async updateListItemsDisplayOrder( auth: User, - input: UpdateListItemInput, + input: UpdateListItemDisplayOrderInput, ): Promise<void> { const response = await this.listItemsApiWithAuth(auth) - .listItemsControllerUpdate(input as ListItemsControllerUpdateRequest) + .listItemsControllerUpdateDisplayOrder( + input as ListItemsControllerUpdateDisplayOrderRequest, + ) .catch((e) => handle4xx(e, this.handleError, 'failed to update list item'), ) diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.service.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.service.ts index bc97de4aeb75..e8eedbef0ac8 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.service.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.service.ts @@ -17,7 +17,7 @@ export class OrganizationsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private organizationsApi: OrganizationsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts b/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts index d4ac247495bc..c560fe0f752e 100644 --- a/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts +++ b/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts @@ -19,7 +19,7 @@ import { Screen } from '../../models/screen.model' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class ScreensResolver { - constructor(private readonly screensService: ScreensService) { } + constructor(private readonly screensService: ScreensService) {} @Mutation(() => Screen, { name: 'formSystemCreateScreen', @@ -33,7 +33,7 @@ export class ScreensResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteScreen', - nullable: true + nullable: true, }) async deleteScreen( @Args('input') input: DeleteScreenInput, diff --git a/libs/api/domains/form-system/src/lib/screens/screens.service.ts b/libs/api/domains/form-system/src/lib/screens/screens.service.ts index 1208f8c15f2f..284ca4149217 100644 --- a/libs/api/domains/form-system/src/lib/screens/screens.service.ts +++ b/libs/api/domains/form-system/src/lib/screens/screens.service.ts @@ -22,8 +22,8 @@ import { Screen } from '../../models/screen.model' @Injectable() export class ScreensService { constructor( - // @Inject(LOGGER_PROVIDER) - // private logger: Logger, + @Inject(LOGGER_PROVIDER) + private logger: Logger, private screensApi: ScreensApi, ) { } @@ -33,7 +33,7 @@ export class ScreensService { error: JSON.stringify(error), category: 'forms-service', } - //this.logger.error(errorDetail || 'Error in screens service', err) + this.logger.error(errorDetail || 'Error in screens service', err) throw new ApolloError(error.message) } diff --git a/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts b/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts index 487a4f666c4e..20f7b4177b87 100644 --- a/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts +++ b/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts @@ -11,7 +11,7 @@ import { CreateSectionInput, DeleteSectionInput, UpdateSectionInput, - UpdateSectionsDisplayOrderDtoInput, + UpdateSectionsDisplayOrderInput, } from '../../dto/section.input' import { Section } from '../../models/section.model' @@ -34,7 +34,7 @@ export class SectionsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteSection', - nullable: true + nullable: true, }) async deleteSection( @Args('input', { type: () => DeleteSectionInput }) @@ -60,8 +60,8 @@ export class SectionsResolver { nullable: true, }) async updateSectionsDisplayOrder( - @Args('input', { type: () => UpdateSectionsDisplayOrderDtoInput }) - input: UpdateSectionsDisplayOrderDtoInput, + @Args('input', { type: () => UpdateSectionsDisplayOrderInput }) + input: UpdateSectionsDisplayOrderInput, @CurrentUser() user: User, ): Promise<void> { return this.sectionsService.updateSectionsDisplayOrder(user, input) diff --git a/libs/api/domains/form-system/src/lib/sections/sections.service.ts b/libs/api/domains/form-system/src/lib/sections/sections.service.ts index c5e34337cb0a..fd6a82900885 100644 --- a/libs/api/domains/form-system/src/lib/sections/sections.service.ts +++ b/libs/api/domains/form-system/src/lib/sections/sections.service.ts @@ -14,7 +14,7 @@ import { CreateSectionInput, DeleteSectionInput, UpdateSectionInput, - UpdateSectionsDisplayOrderDtoInput, + UpdateSectionsDisplayOrderInput, } from '../../dto/section.input' import { Section } from '../../models/section.model' @@ -79,7 +79,7 @@ export class SectionsService { async updateSectionsDisplayOrder( auth: User, - input: UpdateSectionsDisplayOrderDtoInput, + input: UpdateSectionsDisplayOrderInput, ): Promise<void> { const response = await this.sectionsApiWithAuth(auth) .sectionsControllerUpdateDisplayOrder( @@ -94,9 +94,9 @@ export class SectionsService { ) if (!response || response instanceof ApolloError) { - return void 0 + return } - return response + return } } diff --git a/libs/api/domains/form-system/src/lib/services/services.resolver.ts b/libs/api/domains/form-system/src/lib/services/services.resolver.ts index b6e2be26f6e2..cfe75d27d683 100644 --- a/libs/api/domains/form-system/src/lib/services/services.resolver.ts +++ b/libs/api/domains/form-system/src/lib/services/services.resolver.ts @@ -14,7 +14,7 @@ import { GetTranslationInput } from '../../dto/service.input' @UseGuards(IdsUserGuard) @Audit({ namespace: '@island.is/api/form-system' }) export class ServicesResolver { - constructor(private readonly formSystemServices: ServicesService) { } + constructor(private readonly formSystemServices: ServicesService) {} @Mutation(() => Translation, { name: 'formSystemGetTranslation', diff --git a/libs/api/domains/form-system/src/lib/services/services.service.ts b/libs/api/domains/form-system/src/lib/services/services.service.ts index fc8b04445f62..8203c8da6dfd 100644 --- a/libs/api/domains/form-system/src/lib/services/services.service.ts +++ b/libs/api/domains/form-system/src/lib/services/services.service.ts @@ -11,7 +11,7 @@ export class ServicesService { constructor( @Inject(LOGGER_PROVIDER) private logger: Logger, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/models/applicant.model.ts b/libs/api/domains/form-system/src/models/applicant.model.ts index 3466fa41360e..739b12c09d53 100644 --- a/libs/api/domains/form-system/src/models/applicant.model.ts +++ b/libs/api/domains/form-system/src/models/applicant.model.ts @@ -1,19 +1,20 @@ -import { Field, ObjectType, registerEnumType } from '@nestjs/graphql' -import { FormApplicantDtoApplicantTypeEnum } from '@island.is/clients/form-system' +import { Field, ObjectType } from '@nestjs/graphql' import { LanguageType } from './languageType.model' -registerEnumType(FormApplicantDtoApplicantTypeEnum, { - name: 'FormSystemApplicantTypeEnum', -}) - @ObjectType('FormSystemApplicant') export class Applicant { @Field(() => String, { nullable: true }) id?: string - @Field(() => FormApplicantDtoApplicantTypeEnum, { nullable: true }) - applicantType?: FormApplicantDtoApplicantTypeEnum + @Field(() => LanguageType, { nullable: true }) + description?: LanguageType + + @Field(() => String, { nullable: true }) + applicantTypeId?: string @Field(() => LanguageType, { nullable: true }) name?: LanguageType + + @Field(() => [LanguageType], { nullable: true }) + nameSuggestions?: LanguageType[] } diff --git a/libs/api/domains/form-system/src/models/applications.model.ts b/libs/api/domains/form-system/src/models/applications.model.ts index 7084ce4cfe01..5bc62cb07718 100644 --- a/libs/api/domains/form-system/src/models/applications.model.ts +++ b/libs/api/domains/form-system/src/models/applications.model.ts @@ -1,6 +1,7 @@ import { Field, ObjectType } from '@nestjs/graphql' import { Organization } from './organization.model' import { Section } from './section.model' +import { LanguageType } from './languageType.model' @ObjectType('FormSystemApplication') export class Application { @@ -16,6 +17,9 @@ export class Application { @Field(() => String, { nullable: true }) slug?: string + @Field(() => LanguageType, { nullable: true }) + formName?: LanguageType + @Field(() => Date, { nullable: true }) created?: Date diff --git a/libs/api/domains/form-system/src/models/certification.model.ts b/libs/api/domains/form-system/src/models/certification.model.ts new file mode 100644 index 000000000000..4c77c5bc6307 --- /dev/null +++ b/libs/api/domains/form-system/src/models/certification.model.ts @@ -0,0 +1,32 @@ +import { ObjectType, Field } from '@nestjs/graphql' +import { LanguageType } from './languageType.model' + +@ObjectType('FormSystemFormCertificationType') +export class FormCertificationType { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => LanguageType, { nullable: true }) + name?: LanguageType + + @Field(() => LanguageType, { nullable: true }) + description?: LanguageType + + @Field(() => Boolean, { nullable: true }) + isCommon?: boolean + + @Field(() => String, { nullable: true }) + certificationTypeId?: string + + @Field(() => String, { nullable: true }) + organizationCertificationId?: string +} + +@ObjectType('FormSystemFormCertificationTypeDto') +export class FormCertificationTypeDto { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => String, { nullable: true }) + certificationTypeId?: string +} diff --git a/libs/api/domains/form-system/src/models/field.model.ts b/libs/api/domains/form-system/src/models/field.model.ts index 741f0c62f813..22c452678e75 100644 --- a/libs/api/domains/form-system/src/models/field.model.ts +++ b/libs/api/domains/form-system/src/models/field.model.ts @@ -1,7 +1,8 @@ import { Field as FieldType, Int, ObjectType } from '@nestjs/graphql' -import { FieldDtoFieldTypeEnum } from '@island.is/clients/form-system' import { FieldSettings } from './fieldSettings.model' import { LanguageType } from './languageType.model' +import { ListItem } from './listItem.model' +import { ValueDto } from './value.model' @ObjectType('FormSystemField') export class Field { @@ -26,8 +27,17 @@ export class Field { @FieldType(() => FieldSettings, { nullable: true }) fieldSettings?: FieldSettings - @FieldType(() => FieldDtoFieldTypeEnum, { nullable: true }) - fieldType?: FieldDtoFieldTypeEnum + @FieldType(() => String, { nullable: true }) + fieldType?: string + + @FieldType(() => [ListItem], { nullable: 'itemsAndList' }) + list?: ListItem[] + + @FieldType(() => [ValueDto], { nullable: 'itemsAndList' }) + values?: ValueDto[] + + @FieldType(() => Boolean, { nullable: true }) + isHidden?: boolean @FieldType(() => Boolean, { nullable: true }) isRequired?: boolean diff --git a/libs/api/domains/form-system/src/models/fieldSettings.model.ts b/libs/api/domains/form-system/src/models/fieldSettings.model.ts index b83c6ec0cb5c..fd162cd8cc93 100644 --- a/libs/api/domains/form-system/src/models/fieldSettings.model.ts +++ b/libs/api/domains/form-system/src/models/fieldSettings.model.ts @@ -22,11 +22,11 @@ export class FieldSettings { @Field(() => Date, { nullable: true }) maxDate?: Date - @Field(() => String, { nullable: true }) - minAmount?: string + @Field(() => Int, { nullable: true }) + minAmount?: number - @Field(() => String, { nullable: true }) - maxAmount?: string + @Field(() => Int, { nullable: true }) + maxAmount?: number @Field(() => Int, { nullable: true }) year?: number diff --git a/libs/api/domains/form-system/src/models/fieldType.model.ts b/libs/api/domains/form-system/src/models/fieldType.model.ts index d7c666fbcb0c..57077a9f5e33 100644 --- a/libs/api/domains/form-system/src/models/fieldType.model.ts +++ b/libs/api/domains/form-system/src/models/fieldType.model.ts @@ -1,20 +1,13 @@ -import { Field, ObjectType, registerEnumType } from '@nestjs/graphql' +import { Field, ObjectType } from '@nestjs/graphql' import { LanguageType } from './languageType.model' import { FieldSettings } from './fieldSettings.model' -import { FieldTypeDtoTypeEnum } from '@island.is/clients/form-system' - -registerEnumType(FieldTypeDtoTypeEnum, { - name: 'FormSystemFieldTypeDtoTypeEnum', -}) +import { Value } from './value.model' @ObjectType('FormSystemFieldType') export class FieldType { @Field(() => String, { nullable: true }) id?: string - @Field(() => FieldTypeDtoTypeEnum, { nullable: true }) - type?: FieldTypeDtoTypeEnum - @Field(() => LanguageType, { nullable: true }) name?: LanguageType @@ -26,4 +19,7 @@ export class FieldType { @Field(() => FieldSettings, { nullable: true }) fieldSettings?: FieldSettings + + @Field(() => [Value], { nullable: 'itemsAndList' }) + values?: Value[] } diff --git a/libs/api/domains/form-system/src/models/form.model.ts b/libs/api/domains/form-system/src/models/form.model.ts index 39dd46da62b3..cbc6d067f9b3 100644 --- a/libs/api/domains/form-system/src/models/form.model.ts +++ b/libs/api/domains/form-system/src/models/form.model.ts @@ -1,6 +1,9 @@ import { Field, ObjectType, Int } from '@nestjs/graphql' import { Field as FieldModel } from './field.model' -import { FormCertificationType } from './formCertificationType.model' +import { + FormCertificationType, + FormCertificationTypeDto, +} from './certification.model' import { FormApplicant } from './formApplicant.model' import { Section } from './section.model' import { ListType } from './listItem.model' @@ -15,6 +18,9 @@ export class Dependency { @Field(() => [String], { nullable: 'itemsAndList' }) childProps?: string[] + + @Field(() => Boolean, { nullable: true }) + isSelected?: boolean } @ObjectType('FormSystemForm') @@ -55,11 +61,11 @@ export class Form { @Field(() => LanguageType, { nullable: true }) completedMessage?: LanguageType - @Field(() => [FormCertificationType], { nullable: 'itemsAndList' }) - certificationTypes?: FormCertificationType[] + @Field(() => [FormCertificationTypeDto], { nullable: 'itemsAndList' }) + certificationTypes?: FormCertificationTypeDto[] @Field(() => [FormApplicant], { nullable: 'itemsAndList' }) - applicants?: FormApplicant[] + applicantTypes?: FormApplicant[] @Field(() => [Section], { nullable: 'itemsAndList' }) sections?: Section[] @@ -85,6 +91,9 @@ export class FormResponse { @Field(() => [FormCertificationType], { nullable: 'itemsAndList' }) certificationTypes?: FormCertificationType[] + @Field(() => [FormApplicant], { nullable: 'itemsAndList' }) + applicantTypes?: FormApplicant[] + @Field(() => [ListType], { nullable: 'itemsAndList' }) listTypes?: ListType[] diff --git a/libs/api/domains/form-system/src/models/formApplicant.model.ts b/libs/api/domains/form-system/src/models/formApplicant.model.ts index 5d436ce2b049..69e21ac33985 100644 --- a/libs/api/domains/form-system/src/models/formApplicant.model.ts +++ b/libs/api/domains/form-system/src/models/formApplicant.model.ts @@ -1,5 +1,4 @@ import { ObjectType, Field } from '@nestjs/graphql' -import { FormApplicantDtoApplicantTypeEnum } from '@island.is/clients/form-system' import { LanguageType } from './languageType.model' @ObjectType('FormSystemFormApplicant') @@ -7,9 +6,15 @@ export class FormApplicant { @Field(() => String, { nullable: true }) id?: string - @Field(() => FormApplicantDtoApplicantTypeEnum, { nullable: true }) - applicantType?: FormApplicantDtoApplicantTypeEnum + @Field(() => LanguageType, { nullable: true }) + description?: LanguageType + + @Field(() => String, { nullable: true }) + applicantTypeId?: string @Field(() => LanguageType, { nullable: true }) name?: LanguageType + + @Field(() => [LanguageType], { nullable: true }) + nameSuggestions?: LanguageType[] } diff --git a/libs/api/domains/form-system/src/models/formCertificationType.model.ts b/libs/api/domains/form-system/src/models/formCertificationType.model.ts deleted file mode 100644 index a998dd1f45c8..000000000000 --- a/libs/api/domains/form-system/src/models/formCertificationType.model.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ObjectType, Field } from '@nestjs/graphql' -import { CertificationTypeDtoTypeEnum } from '@island.is/clients/form-system' -import { LanguageType } from './languageType.model' - -@ObjectType('FormSystemFormCertificationType') -export class FormCertificationType { - @Field(() => String, { nullable: true }) - id?: string - - @Field(() => LanguageType, { nullable: true }) - name?: LanguageType - - @Field(() => LanguageType, { nullable: true }) - description?: LanguageType - - @Field(() => CertificationTypeDtoTypeEnum, { nullable: true }) - type?: CertificationTypeDtoTypeEnum -} diff --git a/libs/api/domains/form-system/src/models/month.model.ts b/libs/api/domains/form-system/src/models/month.model.ts new file mode 100644 index 000000000000..4ac0266d4d56 --- /dev/null +++ b/libs/api/domains/form-system/src/models/month.model.ts @@ -0,0 +1,13 @@ +import { Field, Int, ObjectType } from "@nestjs/graphql"; + +@ObjectType('FormSystemMonth') +export class Month { + @Field(() => Int, { nullable: true }) + month?: number + + @Field(() => Int, { nullable: true }) + amount?: number + + @Field(() => [Int], { nullable: true }) + days?: number[] +} diff --git a/libs/api/domains/form-system/src/models/value.model.ts b/libs/api/domains/form-system/src/models/value.model.ts new file mode 100644 index 000000000000..087e14958c7f --- /dev/null +++ b/libs/api/domains/form-system/src/models/value.model.ts @@ -0,0 +1,65 @@ +import { Field, Int, ObjectType } from '@nestjs/graphql' +import { Month } from './month.model' + +@ObjectType('FormSystemValue') +export class Value { + @Field(() => String, { nullable: true }) + text?: string + + @Field(() => Int, { nullable: true }) + number?: number + + @Field(() => Date, { nullable: true }) + date?: Date + + @Field(() => String, { nullable: true }) + kennitala?: string + + @Field(() => String, { nullable: true }) + name?: string + + @Field(() => String, { nullable: true }) + address?: string + + @Field(() => String, { nullable: true }) + postalCode?: string + + @Field(() => String, { nullable: true }) + municipality?: string + + @Field(() => String, { nullable: true }) + jobTitle?: string + + @Field(() => String, { nullable: true }) + altName?: string + + @Field(() => String, { nullable: true }) + homestayNumber?: string + + @Field(() => Int, { nullable: true }) + totalDays?: number + + @Field(() => Int, { nullable: true }) + totalAmount?: number + + @Field(() => Int, { nullable: true }) + year?: number + + @Field(() => Boolean, { nullable: true }) + isNullReport?: boolean + + @Field(() => [Month], { nullable: true }) + months?: Month[] +} + +@ObjectType('FormSystemValueDto') +export class ValueDto { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => Int, { nullable: true }) + order?: number + + @Field(() => Value, { nullable: true }) + json?: Value +} diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index 688d076cbea4..b07f27f8876d 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -514,14 +514,7 @@ }, "responses": { "201": { - "description": "Updates a section", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SectionDto" - } - } - } + "description": "Updates a section" } }, "tags": [ @@ -920,6 +913,38 @@ "tags": [ "applications" ] + }, + "put": { + "operationId": "ApplicationsController_update", + "summary": "Update application dependencies", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateApplicationDto" + } + } + } + }, + "responses": { + "204": { + "description": "Update application dependencies" + } + }, + "tags": [ + "applications" + ] } }, "/applications/{slug}": { @@ -936,6 +961,16 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateApplicationDto" + } + } + } + }, "responses": { "201": { "description": "Create new application", @@ -953,6 +988,38 @@ ] } }, + "/values": { + "post": { + "operationId": "ValuesController_create", + "summary": "Creates a new value", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateValueDto" + } + } + } + }, + "responses": { + "201": { + "description": "Creates a new value", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValueDto" + } + } + } + } + }, + "tags": [ + "values" + ] + } + }, "/values/{id}": { "put": { "operationId": "ValuesController_update", @@ -972,7 +1039,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Object" + "$ref": "#/components/schemas/UpdateValueDto" } } } @@ -992,43 +1059,65 @@ "tags": [ "values" ] + }, + "delete": { + "operationId": "ValuesController_delete", + "summary": "Delete value by id", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Delete value by id" + } + }, + "tags": [ + "values" + ] } }, - "/formApplicants": { + "/formApplicantTypes": { "post": { - "operationId": "FormApplicantsController_create", - "summary": "Create new form applicant", + "operationId": "FormApplicantTypesController_create", + "summary": "Add form applicant type", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateFormApplicantDto" + "$ref": "#/components/schemas/CreateFormApplicantTypeDto" } } } }, "responses": { "201": { - "description": "Create new form applicant", + "description": "Add form applicant type", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FormApplicantDto" + "$ref": "#/components/schemas/FormApplicantTypeDto" } } } } }, "tags": [ - "form applicants" + "form applicant types" ] } }, - "/formApplicants/{id}": { + "/formApplicantTypes/{id}": { "put": { - "operationId": "FormApplicantsController_update", + "operationId": "FormApplicantTypesController_update", "summary": "Update form applicant", "parameters": [ { @@ -1045,7 +1134,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateFormApplicantDto" + "$ref": "#/components/schemas/UpdateFormApplicantTypeDto" } } } @@ -1056,11 +1145,11 @@ } }, "tags": [ - "form applicants" + "form applicant types" ] }, "delete": { - "operationId": "FormApplicantsController_delete", + "operationId": "FormApplicantTypesController_delete", "summary": "Delete form applicant", "parameters": [ { @@ -1078,144 +1167,492 @@ } }, "tags": [ - "form applicants" + "form applicant types" ] } - } - }, - "info": { - "title": "Form System API", - "description": "This is an API for formbuilder and form-rendering (application) system", - "version": "1.0", - "contact": {} - }, - "tags": [], - "servers": [ - { - "url": "http://localhost:3434" - } - ], - "components": { - "schemas": { - "Liveness": { - "type": "object", - "properties": { - "ok": { - "type": "boolean" + }, + "/formCertificationTypes": { + "post": { + "operationId": "FormCertificationTypesController_create", + "summary": "Add form certification type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFormCertificationTypeDto" + } + } } }, - "required": [ - "ok" - ] - }, - "Version": { - "type": "object", - "properties": { - "version": { - "type": "string" + "responses": { + "201": { + "description": "Add form certification type", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormCertificationTypeDto" + } + } + } } }, - "required": [ - "version" + "tags": [ + "form certification types" ] - }, - "LanguageType": { - "type": "object", - "properties": { - "is": { - "type": "string", - "default": "" - }, - "en": { - "type": "string", - "default": "" + } + }, + "/formCertificationTypes/{id}": { + "delete": { + "operationId": "FormCertificationTypesController_delete", + "summary": "Remove form certification type", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove form certification type" } }, - "required": [ - "is", - "en" + "tags": [ + "form certification types" ] - }, - "CreateOrganizationDto": { - "type": "object", - "properties": { - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "nationalId": { - "type": "string" + } + }, + "/formUrls": { + "post": { + "operationId": "FormUrlsController_create", + "summary": "Add form url", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFormUrlDto" + } + } } }, - "required": [ - "name", - "nationalId" - ] - }, - "Dependency": { - "type": "object", - "properties": { - "parentProp": { - "type": "string" - }, - "childProps": { - "type": "array", - "items": { - "type": "string" + "responses": { + "201": { + "description": "Add form url", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormUrlDto" + } + } } } }, - "required": [ - "parentProp", - "childProps" + "tags": [ + "form urls" ] - }, - "CertificationTypeDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "description": { - "$ref": "#/components/schemas/LanguageType" - }, - "type": { - "type": "string", - "enum": [ - "estateGuardianshipCertificateStamped", - "estateGuardianshipCertificateUnstamped", - "residenceCertificate", - "indebtednessCertificate", - "criminalRecordStamped", - "criminalRecordUnstamped" - ] + } + }, + "/formUrls/{id}": { + "delete": { + "operationId": "FormUrlsController_delete", + "summary": "Remove form url", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove form url" } }, - "required": [ - "id", - "name", - "description", - "type" + "tags": [ + "form urls" ] - }, - "FormApplicantDto": { - "type": "object", - "properties": { - "id": { + } + }, + "/organizationCertificationTypes": { + "post": { + "operationId": "OrganizationCertificationTypesController_create", + "summary": "Add organization certification type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationCertificationTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add organization certification type", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationCertificationTypeDto" + } + } + } + } + }, + "tags": [ + "organization certification types" + ] + } + }, + "/organizationCertificationTypes/{id}": { + "delete": { + "operationId": "OrganizationCertificationTypesController_delete", + "summary": "Remove organization certification type", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove organization certification type" + } + }, + "tags": [ + "organization certification types" + ] + } + }, + "/organizationFieldTypes": { + "post": { + "operationId": "OrganizationFieldTypesController_create", + "summary": "Add organization field type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationFieldTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add organization field type", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationFieldTypeDto" + } + } + } + } + }, + "tags": [ + "organization field types" + ] + } + }, + "/organizationFieldTypes/{id}": { + "delete": { + "operationId": "OrganizationFieldTypesController_delete", + "summary": "Remove organization field type", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove organization field type" + } + }, + "tags": [ + "organization field types" + ] + } + }, + "/organizationListTypes": { + "post": { + "operationId": "OrganizationListTypesController_create", + "summary": "Add organization list type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationListTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add organization list type", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationListTypeDto" + } + } + } + } + }, + "tags": [ + "organization list types" + ] + } + }, + "/organizationListTypes/{id}": { + "delete": { + "operationId": "OrganizationListTypesController_delete", + "summary": "Remove organization list type", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove organization list type" + } + }, + "tags": [ + "organization list types" + ] + } + }, + "/organizationUrls": { + "post": { + "operationId": "OrganizationUrlsController_create", + "summary": "Add organization url", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationUrlDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add organization url", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUrlDto" + } + } + } + } + }, + "tags": [ + "organization urls" + ] + } + }, + "/organizationUrls/{id}": { + "put": { + "operationId": "OrganizationUrlsController_update", + "summary": "Update an organization url", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateOrganizationUrlDto" + } + } + } + }, + "responses": { + "201": { + "description": "Update an organization url" + } + }, + "tags": [ + "organization urls" + ] + }, + "delete": { + "operationId": "OrganizationUrlsController_delete", + "summary": "Remove organization url", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove organization url" + } + }, + "tags": [ + "organization urls" + ] + } + } + }, + "info": { + "title": "Form System API", + "description": "This is an API for formbuilder and form-rendering (application) system", + "version": "1.0", + "contact": {} + }, + "tags": [], + "servers": [ + { + "url": "http://localhost:3434" + } + ], + "components": { + "schemas": { + "Liveness": { + "type": "object", + "properties": { + "ok": { + "type": "boolean" + } + }, + "required": [ + "ok" + ] + }, + "Version": { + "type": "object", + "properties": { + "version": { "type": "string" + } + }, + "required": [ + "version" + ] + }, + "LanguageType": { + "type": "object", + "properties": { + "is": { + "type": "string", + "default": "" }, - "applicantType": { + "en": { "type": "string", - "enum": [ - "individual", - "individualWithDelegationFromIndividual", - "individualWithDelegationFromLegalEntity", - "individualWithProcuration", - "individualGivingDelegation", - "legalEntity" - ] + "default": "" + } + }, + "required": [ + "is", + "en" + ] + }, + "CreateOrganizationDto": { + "type": "object", + "properties": { + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "nationalId": { + "type": "string" + } + }, + "required": [ + "name", + "nationalId" + ] + }, + "Dependency": { + "type": "object", + "properties": { + "parentProp": { + "type": "string" + }, + "childProps": { + "type": "array", + "items": { + "type": "string" + } + }, + "isSelected": { + "type": "boolean" + } + }, + "required": [ + "parentProp", + "childProps", + "isSelected" + ] + }, + "FormCertificationTypeDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "certificationTypeId": { + "type": "string" + } + }, + "required": [ + "id", + "certificationTypeId" + ] + }, + "FormApplicantTypeDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "applicantTypeId": { + "type": "string" }, "name": { "$ref": "#/components/schemas/LanguageType" @@ -1223,10 +1660,120 @@ }, "required": [ "id", - "applicantType", + "applicantTypeId", "name" ] }, + "FormUrlDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "organizationUrlId": { + "type": "string" + }, + "url": { + "type": "string" + }, + "isXroad": { + "type": "boolean" + }, + "isTest": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "method": { + "type": "string" + } + }, + "required": [ + "id", + "organizationUrlId", + "url", + "isXroad", + "isTest", + "type", + "method" + ] + }, + "FieldSettings": { + "type": "object", + "properties": { + "minValue": { + "type": "number" + }, + "maxValue": { + "type": "number" + }, + "minLength": { + "type": "number" + }, + "maxLength": { + "type": "number" + }, + "minDate": { + "format": "date-time", + "type": "string" + }, + "maxDate": { + "format": "date-time", + "type": "string" + }, + "minAmount": { + "type": "number" + }, + "maxAmount": { + "type": "number" + }, + "year": { + "type": "number" + }, + "hasLink": { + "type": "boolean" + }, + "url": { + "type": "string" + }, + "buttonText": { + "$ref": "#/components/schemas/LanguageType" + }, + "isLarge": { + "type": "boolean" + }, + "hasPropertyInput": { + "type": "boolean" + }, + "hasPropertyList": { + "type": "boolean" + }, + "listType": { + "type": "string", + "enum": [ + "9e1600f7-7d25-4997-9e8d-16e6d15cd901", + "2cd6cda1-ab72-4746-bb38-16b95b89ae75", + "1df24f32-1481-4775-81eb-0cf0a5eb9328", + "7aa0396f-2574-40cb-8ea4-299a5b62b22d", + "7bfc3703-af37-455b-b9a1-8b612f46184b", + "f50779b3-464c-42e3-9cc3-8914886f9bf7" + ] + }, + "fileTypes": { + "type": "string" + }, + "fileMaxSize": { + "type": "number" + }, + "maxFiles": { + "type": "number" + }, + "timeInterval": { + "type": "string" + } + } + }, "ListItemDto": { "type": "object", "properties": { @@ -1257,72 +1804,100 @@ "isSelected" ] }, - "FieldSettingsDto": { + "Month": { "type": "object", "properties": { - "minValue": { + "month": { "type": "number" }, - "maxValue": { + "amount": { "type": "number" }, - "minLength": { - "type": "number" + "days": { + "type": "array", + "items": { + "type": "number" + } + } + } + }, + "ValueType": { + "type": "object", + "properties": { + "text": { + "type": "string" }, - "maxLength": { + "number": { "type": "number" }, - "minDate": { + "date": { "format": "date-time", "type": "string" }, - "maxDate": { - "format": "date-time", + "listValue": { "type": "string" }, - "minAmount": { + "nationalId": { "type": "string" }, - "maxAmount": { + "name": { "type": "string" }, - "year": { - "type": "number" + "address": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "municipality": { + "type": "string" + }, + "jobTitle": { + "type": "string" + }, + "altName": { + "type": "string" }, - "hasLink": { - "type": "boolean" + "homestayNumber": { + "type": "string" }, - "url": { + "propertyNumber": { "type": "string" }, - "buttonText": { - "$ref": "#/components/schemas/LanguageType" + "totalDays": { + "type": "number" }, - "hasPropertyInput": { - "type": "boolean" + "totalAmount": { + "type": "number" }, - "hasPropertyList": { + "year": { + "type": "number" + }, + "isNullReport": { "type": "boolean" }, - "list": { + "months": { "type": "array", "items": { - "$ref": "#/components/schemas/ListItemDto" + "$ref": "#/components/schemas/Month" } }, - "listType": { + "email": { "type": "string" }, - "fileTypes": { + "iskNumber": { "type": "string" }, - "fileMaxSize": { - "type": "number" + "checkboxValue": { + "type": "boolean" }, - "maxFiles": { - "type": "number" + "phoneNumber": { + "type": "string" }, - "timeInterval": { + "bankAccount": { + "type": "string" + }, + "time": { "type": "string" } } @@ -1333,12 +1908,16 @@ "id": { "type": "string" }, + "order": { + "type": "number" + }, "json": { - "$ref": "#/components/schemas/" + "$ref": "#/components/schemas/ValueType" } }, "required": [ "id", + "order", "json" ] }, @@ -1363,36 +1942,23 @@ "isPartOfMultiset": { "type": "boolean" }, + "isRequired": { + "type": "boolean" + }, + "isHidden": { + "type": "boolean" + }, "fieldSettings": { - "$ref": "#/components/schemas/FieldSettingsDto" + "$ref": "#/components/schemas/FieldSettings" }, "fieldType": { - "type": "string", - "enum": [ - "default", - "email", - "propertyNumber", - "iskNumberbox", - "checkbox", - "datePicker", - "numberbox", - "payer", - "nationaIdEstate", - "phoneNumber", - "message", - "radioButtons", - "document", - "bankAccount", - "nationalId", - "homestayNumber", - "iskSumbox", - "dropdownList", - "nationalIdAll", - "timeInput", - "homestayOverview", - "payment", - "textbox" - ] + "type": "string" + }, + "list": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ListItemDto" + } }, "values": { "type": "array", @@ -1408,8 +1974,9 @@ "displayOrder", "description", "isPartOfMultiset", - "fieldType", - "values" + "isRequired", + "isHidden", + "fieldType" ] }, "ScreenDto": { @@ -1430,6 +1997,9 @@ "isHidden": { "type": "boolean" }, + "isCompleted": { + "type": "boolean" + }, "multiset": { "type": "number" }, @@ -1449,6 +2019,7 @@ "name", "displayOrder", "isHidden", + "isCompleted", "multiset", "callRuleset" ] @@ -1535,6 +2106,16 @@ "derivedFrom": { "type": "number" }, + "status": { + "type": "string", + "enum": [ + "a9d495ea-433a-46d4-84ba-8604cc8c7d40", + "3ea7923b-e2a8-499d-b2db-42336bfe7c0b", + "06459c6f-9f1e-4ddd-bbd8-e553d9a4363e", + "c095bb71-b4ab-4a7c-9be4-4621b62591ce", + "11c9db90-2065-45d5-b649-c98001c10dcb" + ] + }, "stopProgressOnValidatingScreen": { "type": "boolean" }, @@ -1550,13 +2131,19 @@ "certificationTypes": { "type": "array", "items": { - "$ref": "#/components/schemas/CertificationTypeDto" + "$ref": "#/components/schemas/FormCertificationTypeDto" + } + }, + "applicantTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FormApplicantTypeDto" } }, - "applicants": { + "urls": { "type": "array", "items": { - "$ref": "#/components/schemas/FormApplicantDto" + "$ref": "#/components/schemas/FormUrlDto" } }, "sections": { @@ -1588,6 +2175,7 @@ "isTranslated", "applicationDaysToRemove", "derivedFrom", + "status", "stopProgressOnValidatingScreen" ] }, @@ -1641,40 +2229,12 @@ "organizationId" ] }, - "FieldTypeDto": { + "FieldType": { "type": "object", "properties": { "id": { "type": "string" }, - "type": { - "type": "string", - "enum": [ - "default", - "email", - "propertyNumber", - "iskNumberbox", - "checkbox", - "datePicker", - "numberbox", - "payer", - "nationaIdEstate", - "phoneNumber", - "message", - "radioButtons", - "document", - "bankAccount", - "nationalId", - "homestayNumber", - "iskSumbox", - "dropdownList", - "nationalIdAll", - "timeInput", - "homestayOverview", - "payment", - "textbox" - ] - }, "name": { "$ref": "#/components/schemas/LanguageType" }, @@ -1685,18 +2245,23 @@ "type": "boolean" }, "fieldSettings": { - "$ref": "#/components/schemas/FieldSettingsDto" + "$ref": "#/components/schemas/FieldSettings" + }, + "values": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ValueDto" + } } }, "required": [ "id", - "type", "name", "description", "isCommon" ] }, - "ListTypeDto": { + "CertificationType": { "type": "object", "properties": { "id": { @@ -1708,9 +2273,53 @@ "description": { "$ref": "#/components/schemas/LanguageType" }, - "type": { + "isCommon": { + "type": "boolean" + } + }, + "required": [ + "id", + "name", + "description", + "isCommon" + ] + }, + "ApplicantType": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "description": { + "$ref": "#/components/schemas/LanguageType" + }, + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "nameSuggestions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguageType" + } + } + }, + "required": [ + "id", + "description" + ] + }, + "ListType": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "description": { + "$ref": "#/components/schemas/LanguageType" + }, "isCommon": { "type": "boolean" } @@ -1719,10 +2328,40 @@ "id", "name", "description", - "type", "isCommon" ] }, + "OrganizationUrlDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "isXroad": { + "type": "boolean" + }, + "isTest": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "method": { + "type": "string" + } + }, + "required": [ + "id", + "url", + "isXroad", + "isTest", + "type", + "method" + ] + }, "FormResponseDto": { "type": "object", "properties": { @@ -1732,19 +2371,31 @@ "fieldTypes": { "type": "array", "items": { - "$ref": "#/components/schemas/FieldTypeDto" + "$ref": "#/components/schemas/FieldType" } }, "certificationTypes": { "type": "array", "items": { - "$ref": "#/components/schemas/CertificationTypeDto" + "$ref": "#/components/schemas/CertificationType" + } + }, + "applicantTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApplicantType" } }, "listTypes": { "type": "array", "items": { - "$ref": "#/components/schemas/ListTypeDto" + "$ref": "#/components/schemas/ListType" + } + }, + "urls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganizationUrlDto" } }, "forms": { @@ -1796,10 +2447,14 @@ "properties": { "formId": { "type": "string" + }, + "displayOrder": { + "type": "number" } }, "required": [ - "formId" + "formId", + "displayOrder" ] }, "UpdateSectionDto": { @@ -1811,10 +2466,7 @@ "waitingText": { "$ref": "#/components/schemas/LanguageType" } - }, - "required": [ - "name" - ] + } }, "SectionDisplayOrderDto": { "type": "object", @@ -1846,10 +2498,14 @@ "properties": { "sectionId": { "type": "string" + }, + "displayOrder": { + "type": "number" } }, "required": [ - "sectionId" + "sectionId", + "displayOrder" ] }, "UpdateScreenDto": { @@ -1862,118 +2518,57 @@ "type": "number" }, "callRuleset": { - "type": "boolean" - } - }, - "required": [ - "name", - "multiset", - "callRuleset" - ] - }, - "ScreenDisplayOrderDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "sectionId": { - "type": "string" - } - }, - "required": [ - "id", - "sectionId" - ] - }, - "UpdateScreensDisplayOrderDto": { - "type": "object", - "properties": { - "screensDisplayOrderDto": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ScreenDisplayOrderDto" - } - } - }, - "required": [ - "screensDisplayOrderDto" - ] - }, - "CreateFieldDto": { - "type": "object", - "properties": { - "screenId": { - "type": "string" - } - }, - "required": [ - "screenId" - ] - }, - "UpdateFieldSettingsDto": { - "type": "object", - "properties": { - "minValue": { - "type": "number" - }, - "maxValue": { - "type": "number" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - }, - "minDate": { - "format": "date-time", - "type": "string" - }, - "maxDate": { - "format": "date-time", - "type": "string" - }, - "minAmount": { - "type": "string" - }, - "maxAmount": { - "type": "string" - }, - "year": { - "type": "number" - }, - "hasLink": { - "type": "boolean" - }, - "url": { - "type": "string" - }, - "buttonText": { - "$ref": "#/components/schemas/LanguageType" - }, - "hasPropertyInput": { - "type": "boolean" - }, - "hasPropertyList": { - "type": "boolean" - }, - "listType": { + "type": "boolean" + } + } + }, + "ScreenDisplayOrderDto": { + "type": "object", + "properties": { + "id": { "type": "string" }, - "fileTypes": { + "sectionId": { + "type": "string" + } + }, + "required": [ + "id", + "sectionId" + ] + }, + "UpdateScreensDisplayOrderDto": { + "type": "object", + "properties": { + "screensDisplayOrderDto": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScreenDisplayOrderDto" + } + } + }, + "required": [ + "screensDisplayOrderDto" + ] + }, + "CreateFieldDto": { + "type": "object", + "properties": { + "screenId": { "type": "string" }, - "fileMaxSize": { - "type": "number" + "fieldType": { + "type": "string" }, - "maxFiles": { + "displayOrder": { "type": "number" - }, - "timeInterval": { - "type": "string" } - } + }, + "required": [ + "screenId", + "fieldType", + "displayOrder" + ] }, "UpdateFieldDto": { "type": "object", @@ -1987,45 +2582,41 @@ "isPartOfMultiset": { "type": "boolean" }, + "isRequired": { + "type": "boolean" + }, "fieldSettings": { - "$ref": "#/components/schemas/UpdateFieldSettingsDto" + "$ref": "#/components/schemas/FieldSettings" }, "fieldType": { "type": "string", "enum": [ - "default", - "email", - "propertyNumber", - "iskNumberbox", - "checkbox", - "datePicker", - "numberbox", - "payer", - "nationaIdEstate", - "phoneNumber", - "message", - "radioButtons", - "document", - "bankAccount", - "nationalId", - "homestayNumber", - "iskSumbox", - "dropdownList", - "nationalIdAll", - "timeInput", - "homestayOverview", - "payment", - "textbox" + "b6a7e297-22fd-4426-a4e1-04a11a2e8914", + "eee2840d-a26f-4e9b-a21b-e4478c09e546", + "16603815-3db5-4aec-9bc7-56c1207bb79f", + "cdd63941-ff33-49d1-8b23-0293e413a281", + "f1d14fe1-9e70-4ab2-8f95-8a06a9cf9f48", + "0420775e-ab81-47fc-85af-6c40be3844ac", + "720fb3a3-6a85-456e-8173-b5913e219dc5", + "1f56b93b-8290-4409-8fe0-1b297338e672", + "dc50f154-0dfa-4597-80b8-6f3d9ebc36b1", + "d6c292c7-4e7c-44a6-bb7e-b956122598b0", + "ff7f8580-0419-4f07-9551-fc407d6fb796", + "f806a35b-12c9-4d24-8845-024f77e077f7", + "0e104698-4e58-4874-97a2-a8fd8d3ab7c4", + "1955db2d-c1e3-42ed-b6c5-a668c6136e38", + "cd73ebb6-6573-490a-9bd1-1e693a9229eb", + "6df647aa-27c8-48b1-8ac9-05e8b4251892", + "15a57466-0be3-451d-988d-5b807fea3459", + "7cbbe78f-cd5f-4fb9-a77c-86af2bf986b1", + "ac3fa8a0-9258-49d1-aff2-1dacf31538f0", + "94819d53-69b6-464b-abda-3bb6299d2511", + "83f6f77d-1ca7-4f99-8806-05cec59a48e4", + "6a616adc-80ab-47c1-8037-1d9a8dc68a5c", + "d4143c45-6d45-4052-93c6-42d46572a874" ] } - }, - "required": [ - "name", - "description", - "isPartOfMultiset", - "fieldSettings", - "fieldType" - ] + } }, "FieldDisplayOrderDto": { "type": "object", @@ -2086,12 +2677,7 @@ "isSelected": { "type": "boolean" } - }, - "required": [ - "label", - "value", - "isSelected" - ] + } }, "ListItemDisplayOrderDto": { "type": "object", @@ -2124,8 +2710,8 @@ "id": { "type": "string" }, - "organization": { - "$ref": "#/components/schemas/OrganizationDto" + "organizationName": { + "$ref": "#/components/schemas/LanguageType" }, "formId": { "type": "string" @@ -2133,6 +2719,9 @@ "formName": { "$ref": "#/components/schemas/LanguageType" }, + "isTest": { + "type": "boolean" + }, "slug": { "type": "string" }, @@ -2144,6 +2733,29 @@ "format": "date-time", "type": "string" }, + "dependencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Dependency" + } + }, + "completed": { + "type": "array", + "items": { + "type": "string" + } + }, + "status": { + "type": "string", + "enum": [ + "ee2545cc-b27f-4d75-bc82-b57f9d10c1b3", + "7108cc27-9834-46d4-b651-a369bbadc522", + "22b3ab87-4d42-4987-b6fe-33abcf05f112", + "f7ee473d-66b9-4a1d-b416-5b1e161a580f", + "f5203b2c-6507-482e-ab75-e82954f9377a", + "2497f6f3-4b7e-4a6b-bc1e-9084ea2ad72f" + ] + }, "sections": { "type": "array", "items": { @@ -2152,34 +2764,80 @@ } } }, - "Object": { + "CreateApplicationDto": { + "type": "object", + "properties": { + "isTest": { + "type": "boolean" + } + }, + "required": [ + "isTest" + ] + }, + "UpdateApplicationDto": { + "type": "object", + "properties": { + "dependencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Dependency" + } + }, + "completed": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "CreateValueDto": { + "type": "object", + "properties": { + "order": { + "type": "number" + }, + "fieldId": { + "type": "string" + }, + "applicationId": { + "type": "string" + } + }, + "required": [ + "order", + "fieldId", + "applicationId" + ] + }, + "UpdateValueDto": { "type": "object", - "properties": {} + "properties": { + "json": { + "$ref": "#/components/schemas/ValueType" + } + }, + "required": [ + "json" + ] }, - "CreateFormApplicantDto": { + "CreateFormApplicantTypeDto": { "type": "object", "properties": { "formId": { "type": "string" }, - "applicantType": { - "type": "string", - "enum": [ - "individual", - "individualWithDelegationFromIndividual", - "individualWithDelegationFromLegalEntity", - "individualWithProcuration", - "individualGivingDelegation", - "legalEntity" - ] + "applicantTypeId": { + "type": "string" } }, "required": [ "formId", - "applicantType" + "applicantTypeId" ] }, - "UpdateFormApplicantDto": { + "UpdateFormApplicantTypeDto": { "type": "object", "properties": { "name": { @@ -2189,6 +2847,155 @@ "required": [ "name" ] + }, + "CreateFormCertificationTypeDto": { + "type": "object", + "properties": { + "formId": { + "type": "string" + }, + "certificationTypeId": { + "type": "string" + } + }, + "required": [ + "formId", + "certificationTypeId" + ] + }, + "CreateFormUrlDto": { + "type": "object", + "properties": { + "formId": { + "type": "string" + }, + "organizationUrlId": { + "type": "string" + } + }, + "required": [ + "formId", + "organizationUrlId" + ] + }, + "CreateOrganizationCertificationTypeDto": { + "type": "object", + "properties": { + "organizationId": { + "type": "string" + }, + "certificationTypeId": { + "type": "string" + } + }, + "required": [ + "organizationId", + "certificationTypeId" + ] + }, + "OrganizationCertificationTypeDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "certificationTypeId": { + "type": "string" + } + }, + "required": [ + "id", + "certificationTypeId" + ] + }, + "CreateOrganizationFieldTypeDto": { + "type": "object", + "properties": { + "organizationId": { + "type": "string" + }, + "fieldTypeId": { + "type": "string" + } + }, + "required": [ + "organizationId", + "fieldTypeId" + ] + }, + "OrganizationFieldTypeDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "fieldTypeId": { + "type": "string" + } + }, + "required": [ + "id", + "fieldTypeId" + ] + }, + "CreateOrganizationListTypeDto": { + "type": "object", + "properties": { + "organizationId": { + "type": "string" + }, + "listTypeId": { + "type": "string" + } + }, + "required": [ + "organizationId", + "listTypeId" + ] + }, + "OrganizationListTypeDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "listTypeId": { + "type": "string" + } + }, + "required": [ + "id", + "listTypeId" + ] + }, + "CreateOrganizationUrlDto": { + "type": "object", + "properties": { + "organizationId": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "organizationId", + "type" + ] + }, + "UpdateOrganizationUrlDto": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "isXroad": { + "type": "boolean" + }, + "method": { + "type": "string" + } + } } } } diff --git a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts index 25529b9bd86f..f96053e5dedc 100644 --- a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts +++ b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts @@ -11,7 +11,10 @@ import { OrganizationsApi, ScreensApi, SectionsApi, - FormApplicantsApi, + FormApplicantTypesApi, + FormCertificationTypesApi, + ValuesApi, + } from '../../gen/fetch' const provideApi = <T>( @@ -43,4 +46,6 @@ export const ListItemsApiProvider = provideApi(ListItemsApi) export const OrganizationsApiProvider = provideApi(OrganizationsApi) export const ScreensApiProvider = provideApi(ScreensApi) export const SectionsApiProvider = provideApi(SectionsApi) -export const FormApplicantProvider = provideApi(FormApplicantsApi) +export const FormApplicantProvider = provideApi(FormApplicantTypesApi) +export const CertificationsProvider = provideApi(FormCertificationTypesApi) +export const ValuesProvider = provideApi(ValuesApi) diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index af2a677aed5d..05ee08402912 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -12,7 +12,6 @@ export const FormSystemClientConfig = defineConfig({ return { basePath: env.required( 'FORM_SYSTEM_API_BASE_PATH', - //'http://form-system-api.svc.kubernetes.local', 'http://localhost:3434' ), } diff --git a/libs/clients/form-system/src/lib/form-system.module.ts b/libs/clients/form-system/src/lib/form-system.module.ts index a9f3f55468ee..d626bd41c504 100644 --- a/libs/clients/form-system/src/lib/form-system.module.ts +++ b/libs/clients/form-system/src/lib/form-system.module.ts @@ -1,6 +1,7 @@ import { Module } from '@nestjs/common' import { ApplicationsApiProvider, + CertificationsProvider, FieldsApiProvider, FormApplicantProvider, FormsApiProvider, @@ -8,16 +9,19 @@ import { OrganizationsApiProvider, ScreensApiProvider, SectionsApiProvider, + ValuesProvider, } from './FormSystemApiProvider' import { ApplicationsApi, FieldsApi, - FormApplicantsApi, + FormApplicantTypesApi, + FormCertificationTypesApi, FormsApi, ListItemsApi, OrganizationsApi, ScreensApi, SectionsApi, + ValuesApi, } from '../../gen/fetch' @Module({ @@ -30,7 +34,9 @@ import { OrganizationsApiProvider, ScreensApiProvider, SectionsApiProvider, - FormApplicantProvider + FormApplicantProvider, + CertificationsProvider, + ValuesProvider ], exports: [ ApplicationsApi, @@ -40,7 +46,9 @@ import { OrganizationsApi, ScreensApi, SectionsApi, - FormApplicantsApi + FormApplicantTypesApi, + FormCertificationTypesApi, + ValuesApi ], }) export class FormSystemClientModule { } diff --git a/libs/portals/admin/form-system/src/components/FormLayout/FormLayout.tsx b/libs/portals/admin/form-system/src/components/FormLayout/FormLayout.tsx index 075412fa9a08..ee3f7554366b 100644 --- a/libs/portals/admin/form-system/src/components/FormLayout/FormLayout.tsx +++ b/libs/portals/admin/form-system/src/components/FormLayout/FormLayout.tsx @@ -1,6 +1,6 @@ import { GridRow as Row, GridColumn as Column } from '@island.is/island-ui/core' -import { NavbarColumn } from './components/NavbarColumn' import { MainContentColumn } from './components/MainColumns' +import { NavbarColumn } from './components/NavbarColumn' export const FormLayout = () => ( <Row> diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index 083837b6c638..8c4bb5eeebfe 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -15,8 +15,9 @@ import { Premises } from './components/Premises/Premises' import { FieldContent } from './components/FieldContent/FieldContent' import { PreviewStepOrGroup } from './components/PreviewStepOrGroup/PreviewStepOrGroup' import { useIntl } from 'react-intl' -import { m } from '../../lib/messages' import { RelevantParties } from './components/RelevantParties/RelevantParties' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const MainContent = () => { const { @@ -94,7 +95,7 @@ export const MainContent = () => { <Checkbox name="multi" label={formatMessage(m.allowMultiple)} - checked={(activeItem.data as FormSystemScreen).multiset !== 0} + checked={(activeItem.data as FormSystemScreen).multiset !== 0 && (activeItem.data as FormSystemScreen).multiset !== null} onChange={(e) => controlDispatch({ type: 'TOGGLE_MULTI_SET', diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index d0f44e44d392..d93f0c7b2351 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -9,7 +9,8 @@ import { import { useContext } from 'react' import { ControlContext } from '../../../../context/ControlContext' import { useIntl } from 'react-intl' -import { m } from '../../../../lib/messages' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const BaseSettings = () => { const { @@ -56,10 +57,6 @@ export const BaseSettings = () => { payload: { lang: 'en', newValue: e.target.value }, }) } - // buttons={translationButtons( - // form?.name?.is ?? '', - // 'CHANGE_FORM_NAME', - // )} /> </Column> </Row> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/FieldContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/FieldContent.tsx index 56a53786da85..8d23aa84fd67 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/FieldContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/FieldContent.tsx @@ -1,4 +1,4 @@ -import { useContext } from 'react' +import { useContext, useEffect } from 'react' import { ControlContext } from '../../../../context/ControlContext' import { Stack } from '@island.is/island-ui/core' import { BaseInput } from './components/BaseInput' @@ -13,12 +13,13 @@ export const FieldContent = () => { if (inListBuilder) { return <ListBuilder /> + } else { + return ( + <Stack space={2}> + <BaseInput /> + <FieldSettings /> + <Preview data={currentItem} /> + </Stack> + ) } - return ( - <Stack space={2}> - <BaseInput /> - <FieldSettings /> - {currentItem.fieldType !== 'Default' && <Preview data={currentItem} />} - </Stack> - ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx index f3d1d641080b..7d4de43c47c7 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx @@ -12,9 +12,9 @@ import { } from '@island.is/island-ui/core' import { SingleValue } from 'react-select' import { useIntl } from 'react-intl' -import { m } from '../../../../../lib/messages' import { fieldTypesSelectObject } from '../../../../../lib/utils/fieldTypes' - +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const BaseInput = () => { const { @@ -27,11 +27,12 @@ export const BaseInput = () => { } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemField - const selectList = fieldTypesSelectObject() - const defaultValue = selectList.find((i) => i.value === currentItem?.fieldType) + const defaultValue = fieldTypes?.find(fieldType => fieldType?.id === currentItem.fieldType) + const defaultOption: Option<string> | undefined = defaultValue + ? { value: defaultValue.id ?? '', label: defaultValue.name?.is ?? '' } + : undefined const { formatMessage } = useIntl() - return ( <Stack space={2}> <Row> @@ -43,19 +44,19 @@ export const BaseInput = () => { placeholder={formatMessage(m.chooseType)} backgroundColor="blue" isSearchable - value={defaultValue} - onChange={(e: SingleValue<Option<string>>) => + value={defaultOption} + onChange={(e: SingleValue<Option<string>>) => { controlDispatch({ type: 'CHANGE_FIELD_TYPE', payload: { newValue: e?.value ?? '', fieldSettings: - fieldTypes?.find((i) => i?.type === e?.value) + fieldTypes?.find((i) => i?.id === e?.value) ?.fieldSettings ?? {}, update: updateActiveItem, }, }) - } + }} /> </Column> </Row> @@ -157,7 +158,7 @@ export const BaseInput = () => { <Column span="5/10"> <Checkbox label={formatMessage(m.required)} - //checked={currentItem.isRequired ?? false} // uncomment when isRequired is added to the schema + checked={currentItem.isRequired ?? false} // uncomment when isRequired is added to the schema onChange={() => controlDispatch({ type: 'CHANGE_IS_REQUIRED', diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx index 11114545926e..9de1452bc1e3 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx @@ -1,25 +1,25 @@ import { useContext } from 'react' import { ControlContext } from '../../../../../../context/ControlContext' -import { FormSystemField, FormSystemFieldDtoFieldTypeEnum } from '@island.is/api/schema' +import { FormSystemField } from '@island.is/api/schema' import { MessageWithLinkSettings } from './components/MessageWithLinkSettings' import { TextFieldSettings } from './components/TextFieldSettings' import { ListSettings } from './components/ListSettings' import { ToggleConnection } from './components/ToggleConnection' import { FileUploadSettings } from './components/UploadSettings' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { FieldTypesEnum } from '@island.is/form-system/ui' export const FieldSettings = () => { const { control } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemField return ( <> - {currentItem.fieldType === FormSystemFieldDtoFieldTypeEnum.Message && <MessageWithLinkSettings />} - {currentItem.fieldType === FormSystemFieldDtoFieldTypeEnum.Document && <FileUploadSettings />} - {currentItem.fieldType === FormSystemFieldDtoFieldTypeEnum.Textbox && <TextFieldSettings />} - {currentItem.fieldType === FormSystemFieldDtoFieldTypeEnum.DropdownList && <ListSettings />} - {currentItem.fieldType === FormSystemFieldDtoFieldTypeEnum.RadioButtons && <ListSettings />} - {['Checkbox'].includes(currentItem.fieldType as string) && ( - <ToggleConnection /> - )} + {currentItem.fieldType === FieldTypesEnum.MESSAGE && <MessageWithLinkSettings />} + {currentItem.fieldType === FieldTypesEnum.DOCUMENT && <FileUploadSettings />} + {currentItem.fieldType === FieldTypesEnum.TEXTBOX && <TextFieldSettings />} + {currentItem.fieldType === FieldTypesEnum.DROPDOWN_LIST && <ListSettings />} + {currentItem.fieldType === FieldTypesEnum.RADIO_BUTTONS && <ListSettings />} + {currentItem.fieldType === FieldTypesEnum.CHECKBOX && <ToggleConnection />} </> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx index a27f2f60c73d..6605a78e8e47 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx @@ -9,9 +9,10 @@ import { Button, RadioButton, } from '@island.is/island-ui/core' -import { FormSystemField, FormSystemFieldDtoFieldTypeEnum } from '@island.is/api/schema' +import { FormSystemField } from '@island.is/api/schema' import { useIntl } from 'react-intl' -import { m } from '../../../../../../../lib/messages' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { FieldTypesEnum, m } from '@island.is/form-system/ui' const predeterminedLists = [ { @@ -74,7 +75,7 @@ export const ListSettings = () => { return ( <Stack space={2}> - {currentItem.fieldType === FormSystemFieldDtoFieldTypeEnum.DropdownList && ( + {currentItem.fieldType === FieldTypesEnum.DROPDOWN_LIST && ( <> <Row> <Column> @@ -103,11 +104,12 @@ export const ListSettings = () => { </> )} {radio[0] && ( - <Column span="5/10"> - <Button variant="ghost" onClick={() => setInListBuilder(true)}> - {formatMessage(m.listBuilder)} - </Button> - </Column> + <Button + variant="ghost" + onClick={() => setInListBuilder(true)} + > + {formatMessage(m.listBuilder)} + </Button> )} {radio[1] && ( <Column span="5/10"> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx index 7274a4259f1a..4dcd55412b4c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx @@ -9,7 +9,8 @@ import { } from '@island.is/island-ui/core' import { FormSystemField } from '@island.is/api/schema' import { useIntl } from 'react-intl' -import { m } from '../../../../../../../lib/messages' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const MessageWithLinkSettings = () => { const { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx index 6a43b123a7c1..4ffcd39e2781 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx @@ -9,7 +9,8 @@ import { FormSystemField } from '@island.is/api/schema' import { ControlContext } from '../../../../../../../context/ControlContext' import { NavbarSelectStatus } from '../../../../../../../lib/utils/interfaces' import { useIntl } from 'react-intl' -import { m } from '../../../../../../../lib/messages' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const ToggleConnection = () => { const { control, selectStatus, setSelectStatus } = useContext(ControlContext) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/UploadSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/UploadSettings.tsx index e5c7bae8056c..ea0908a9f75d 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/UploadSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/UploadSettings.tsx @@ -9,56 +9,12 @@ import { Option, } from '@island.is/island-ui/core' import { useContext } from 'react' -import { fileTypes } from '../../../../../../../lib/utils/fileTypes' +import { fileSizes, fileTypes } from '../../../../../../../lib/utils/fileTypes' import { ControlContext } from '../../../../../../../context/ControlContext' import { FormSystemField } from '@island.is/api/schema' -import { m } from '../../../../../../../lib/messages' import { useIntl } from 'react-intl' - -const fileSizes = { - fileSizes: [ - { - label: '1 mb', - value: 1048576, - }, - { - label: '2 mb', - value: 2097152, - }, - { - label: '3 mb', - value: 3145728, - }, - { - label: '4 mb', - value: 4194304, - }, - { - label: '5 mb', - value: 5242880, - }, - { - label: '6 mb', - value: 6291456, - }, - { - label: '7 mb', - value: 7340032, - }, - { - label: '8 mb', - value: 8388608, - }, - { - label: '9 mb', - value: 9437184, - }, - { - label: '10 mb', - value: 10485760, - }, - ], -} +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const FileUploadSettings = () => { const { control, controlDispatch, updateActiveItem } = @@ -67,7 +23,7 @@ export const FileUploadSettings = () => { const currentItem = activeItem.data as FormSystemField const { fieldSettings } = currentItem - const fileSizeOptions = fileSizes.fileSizes.map((size) => ({ + const fileSizeOptions = fileSizes.map((size) => ({ label: size.label, value: size.value, })) @@ -99,7 +55,7 @@ export const FileUploadSettings = () => { controlDispatch({ type: 'SET_FILE_UPLOAD_SETTINGS', payload: { - property: 'maxSize', + property: 'fileMaxSize', value: e?.value, update: updateActiveItem, }, @@ -121,7 +77,7 @@ export const FileUploadSettings = () => { controlDispatch({ type: 'SET_FILE_UPLOAD_SETTINGS', payload: { - property: 'amount', + property: 'maxFiles', value: e?.value, update: updateActiveItem, }, @@ -147,7 +103,7 @@ export const FileUploadSettings = () => { controlDispatch({ type: 'SET_FILE_UPLOAD_SETTINGS', payload: { - property: 'types', + property: 'fileTypes', checked: e.target.checked, value: key, update: updateActiveItem, diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx index f69ae291ae66..c4520482ccf4 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx @@ -24,11 +24,16 @@ import { ListItem } from './components/ListItem' import { SortableContext } from '@dnd-kit/sortable' import { createPortal } from 'react-dom' import { useIntl } from 'react-intl' -import { m } from '../../../../../../lib/messages' import { useMutation } from '@apollo/client' -import { CREATE_LIST_ITEM, UPDATE_LIST_ITEM_DISPLAY_ORDER } from '@island.is/form-system/graphql' +import { CREATE_LIST_ITEM, UPDATE_LIST_ITEM, UPDATE_LIST_ITEM_DISPLAY_ORDER } from '@island.is/form-system/graphql' +import { removeTypename } from '../../../../../../lib/utils/removeTypename' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const ListBuilder = () => { + const [createListItem] = useMutation(CREATE_LIST_ITEM) + const [updateListItemDisplayOrder] = useMutation(UPDATE_LIST_ITEM_DISPLAY_ORDER) + const [updateListItem] = useMutation(UPDATE_LIST_ITEM) const { control, controlDispatch, @@ -38,7 +43,7 @@ export const ListBuilder = () => { const currentItem = control.activeItem.data as FormSystemField const { activeListItem } = control const listItems = - currentItem?.fieldSettings?.list ?? ([] as FormSystemListItem[]) + currentItem?.list ?? ([] as FormSystemListItem[]) const listItemIds = useMemo( () => listItems @@ -53,9 +58,6 @@ export const ListBuilder = () => { const { formatMessage } = useIntl() - const [createListItem] = useMutation(CREATE_LIST_ITEM) - const [updateListItemDisplayOrder] = useMutation(UPDATE_LIST_ITEM_DISPLAY_ORDER) - const sensors = useSensors( useSensor(PointerSensor, { activationConstraint: { @@ -65,24 +67,27 @@ export const ListBuilder = () => { ) const addListItem = async () => { - - const newListItem = await createListItem({ - variables: { - input: { - createListItemDto: { - fieldId: currentItem.id, - displayOrder: listItems.length, + try { + const newListItem = await createListItem({ + variables: { + input: { + createListItemDto: { + fieldId: currentItem.id, + displayOrder: listItems.length, + } } } - } - }) - controlDispatch({ - type: 'ADD_LIST_ITEM', - payload: { - newListItem: newListItem.data.createListItem - } - }) - setConnecting((prev) => [...prev, false]) + }) + controlDispatch({ + type: 'ADD_LIST_ITEM', + payload: { + newListItem: removeTypename(newListItem.data.formSystemCreateListItem) + } + }) + setConnecting((prev) => [...prev, false]) + } catch (e) { + console.error('Error creating list item:', e.message) + } } const onDragStart = (event: DragStartEvent) => { @@ -120,9 +125,15 @@ export const ListBuilder = () => { updateListItemDisplayOrder({ variables: { input: { - listItemsDisplayOrderDto: listItems - .filter((l): l is FormSystemListItem => l !== null && l !== undefined) - .map((l) => l.id), + updateListItemsDisplayOrderDto: { + listItemsDisplayOrderDto: listItems + .filter((l): l is FormSystemListItem => l !== null && l !== undefined) + .map((l) => { + return { + id: l.id, + } + }), + } }, }, }) @@ -136,6 +147,37 @@ export const ListBuilder = () => { setConnecting(listItems.map(() => false)) }, [listItems]) + const toggleListItemSelected = (id: string, checked: boolean) => { + const listItemToUpdate = listItems.find((l) => l?.id === id) + if (listItemToUpdate) { + updateListItem({ + variables: { + input: { + id: id, + updateListItemDto: { + isSelected: checked, + } + } + } + }) + } + if (checked) { + const otherSelected = listItems.find((l) => l?.isSelected && l?.id !== id) + if (otherSelected) { + updateListItem({ + variables: { + input: { + id: otherSelected.id, + updateListItemDto: { + isSelected: false, + } + } + } + }) + } + } + } + return ( <Box display="flex" @@ -170,6 +212,7 @@ export const ListBuilder = () => { index={i} connecting={connecting ? connecting[i] : false} setConnecting={setConnecting} + toggleSelected={toggleListItemSelected} /> ) })} @@ -189,6 +232,7 @@ export const ListBuilder = () => { index={0} connecting={false} setConnecting={setConnecting} + toggleSelected={toggleListItemSelected} /> )} </DragOverlay>, diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx index 2a0c2f9a88c2..6b66a841c5cf 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx @@ -9,18 +9,22 @@ import { import { Dispatch, SetStateAction, useContext } from 'react' import { ControlContext } from '../../../../../../../context/ControlContext' import { useSortable } from '@dnd-kit/sortable' -import { FormSystemField, FormSystemFieldDtoFieldTypeEnum, FormSystemListItem } from '@island.is/api/schema' +import { FormSystemField, FormSystemListItem } from '@island.is/api/schema' import { NavbarSelectStatus } from '../../../../../../../lib/utils/interfaces' import { useIntl } from 'react-intl' -import { m } from '../../../../../../../lib/messages' import * as styles from './ListItem.css' import { getTranslation } from '../../../../../../../lib/utils/getTranslation' +import { useMutation } from '@apollo/client' +import { DELETE_LIST_ITEM, UPDATE_LIST_ITEM } from '@island.is/form-system/graphql' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { FieldTypesEnum, m } from '@island.is/form-system/ui' interface Props { listItem: FormSystemListItem connecting: boolean index: number setConnecting: Dispatch<SetStateAction<boolean[]>> + toggleSelected: (id: string, checked: boolean) => void } export const ListItem = ({ @@ -28,6 +32,7 @@ export const ListItem = ({ connecting, index, setConnecting, + toggleSelected }: Props) => { const { control, @@ -35,11 +40,10 @@ export const ListItem = ({ setFocus, focus, setSelectStatus, - updateActiveItem, } = useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemField - const isRadio = currentItem.fieldType === FormSystemFieldDtoFieldTypeEnum.RadioButtons + const isRadio = currentItem.fieldType === FieldTypesEnum.RADIO_BUTTONS const { setNodeRef, attributes, listeners, isDragging } = useSortable({ id: listItem.id ?? '', @@ -47,6 +51,8 @@ export const ListItem = ({ }) const { formatMessage } = useIntl() + const [deleteListItem] = useMutation(DELETE_LIST_ITEM) + const [updateListItem] = useMutation(UPDATE_LIST_ITEM) if (isDragging) { return ( @@ -61,6 +67,25 @@ export const ListItem = ({ ) } + const listItemUpdate = () => { + try { + updateListItem({ + variables: { + input: { + id: listItem.id, + updateListItemDto: { + label: listItem.label, + description: listItem.description, + isSelected: listItem.isSelected, + } + } + } + }) + } catch (e) { + console.error('Error updating list item', e) + } + } + return ( <Box ref={setNodeRef} @@ -82,7 +107,7 @@ export const ListItem = ({ display="flex" flexDirection="row" alignItems="center" - style={{ width: '30%' }} + style={{ width: '50%' }} justifyContent="spaceBetween" > <ToggleSwitchCheckbox @@ -106,29 +131,36 @@ export const ListItem = ({ <ToggleSwitchCheckbox label={formatMessage(m.selected)} checked={listItem.isSelected ?? false} - onChange={() => + onChange={(e) => { + toggleSelected(listItem.id ?? '', e) controlDispatch({ type: 'SET_LIST_ITEM_SELECTED', payload: { id: listItem.id ?? '' }, }) - } + }} /> </Box> <Box display="flex" flexDirection="row" alignItems="center"> <Box marginRight={2} style={{ cursor: 'pointer' }} - onClick={() => + onClick={() => { controlDispatch({ type: 'REMOVE_LIST_ITEM', payload: { id: listItem.id ?? '', - update: updateActiveItem, }, }) - } + deleteListItem({ + variables: { + input: { + id: listItem.id ?? '', + } + } + }) + }} > <Icon icon="trash" color="blue400" /> </Box> @@ -146,7 +178,7 @@ export const ListItem = ({ size="sm" value={listItem?.label?.is ?? ''} onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onBlur={(e) => e.target.value !== focus && listItemUpdate()} onChange={(e) => controlDispatch({ type: 'CHANGE_LIST_ITEM', @@ -168,7 +200,7 @@ export const ListItem = ({ size="sm" value={listItem?.label?.en ?? ''} onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onBlur={(e) => e.target.value !== focus && listItemUpdate()} onChange={(e) => controlDispatch({ type: 'CHANGE_LIST_ITEM', @@ -212,7 +244,7 @@ export const ListItem = ({ size="sm" value={listItem?.description?.is ?? ''} onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onBlur={(e) => e.target.value !== focus && listItemUpdate()} onChange={(e) => controlDispatch({ type: 'CHANGE_LIST_ITEM', @@ -234,7 +266,7 @@ export const ListItem = ({ size="sm" value={listItem?.description?.en ?? ''} onFocus={(e) => setFocus(e.target.value)} - onBlur={(e) => e.target.value !== focus && updateActiveItem()} + onBlur={(e) => e.target.value !== focus && listItemUpdate()} onChange={(e) => controlDispatch({ type: 'CHANGE_LIST_ITEM', diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 0ce0b95bf354..e6f2ee70d63f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -1,42 +1,81 @@ import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' import { useContext, useState } from 'react' import { ControlContext } from '../../../../context/ControlContext' -import { FormSystemFormCertificationType, FormSystemCertificationTypeDtoTypeEnum, FormSystemForm } from '@island.is/api/schema' +import { FormSystemFormCertificationType, Maybe, FormSystemFormCertificationTypeDto } from '@island.is/api/schema' import { useIntl } from 'react-intl' -import { m } from '../../../../lib/messages' +import { useMutation } from '@apollo/client' +import { CREATE_CERTIFICATION, DELETE_CERTIFICATION } from '@island.is/form-system/graphql' +import { removeTypename } from '../../../../lib/utils/removeTypename' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const Premises = () => { - const { control, controlDispatch, certificationTypes: certTypes, formUpdate } = + const { control, controlDispatch, certificationTypes: certTypes } = useContext(ControlContext) + const { certificationTypes } = control.form const [formCertificationTypes, setFormCertificationTypes] = useState< - FormSystemFormCertificationType[] - >( - control.form?.certificationTypes?.filter( - (d): d is FormSystemFormCertificationType => d !== null, - ) ?? [], - ) + FormSystemFormCertificationTypeDto[] + >((certificationTypes ?? []).filter((type): type is FormSystemFormCertificationTypeDto => type !== null)) + const [createCertification] = useMutation(CREATE_CERTIFICATION) + const [deleteCertification] = useMutation(DELETE_CERTIFICATION) + - const handleCheckboxChange = (certificationType?: FormSystemCertificationTypeDtoTypeEnum) => { - const newCertificationTypes = formCertificationTypes.some( - (f) => f?.type === certificationType, - ) - ? formCertificationTypes.filter((f) => f?.type !== certificationType) - : ([ - ...formCertificationTypes, - certTypes?.find((d) => d?.type === certificationType), - ].filter((d) => d !== undefined) as FormSystemFormCertificationType[]) - setFormCertificationTypes(newCertificationTypes) - const updatedForm: FormSystemForm = { ...control.form, certificationTypes: newCertificationTypes } - controlDispatch({ - type: 'CHANGE_FORM_SETTINGS', - payload: { - newForm: updatedForm, - }, - }) - formUpdate(updatedForm) + const handleCheckboxChange = async (certificationTemplate: FormSystemFormCertificationType, checked: boolean) => { + if (checked) { + try { + const newCertificate = await createCertification({ + variables: { + input: { + createFormCertificationTypeDto: { + formId: control.form.id, + certificationTypeId: certificationTemplate.id as string, + } + } + } + }).then((res) => { + return removeTypename(res.data?.formSystemCreateCertification) + }) + controlDispatch({ + type: 'CHANGE_CERTIFICATION', + payload: { + certificate: newCertificate as FormSystemFormCertificationTypeDto, + checked: true + } + }) + setFormCertificationTypes([...formCertificationTypes, newCertificate]) + } catch (e) { + console.error(e) + } + } else { + const certificationToDelete = formCertificationTypes.find(certification => certification.certificationTypeId === certificationTemplate.id) + try { + await deleteCertification({ + variables: { + input: { + id: certificationToDelete?.id + } + } + }) + controlDispatch({ + type: 'CHANGE_CERTIFICATION', + payload: { + certificate: certificationToDelete as FormSystemFormCertificationTypeDto, + checked: false + } + }) + setFormCertificationTypes(formCertificationTypes.filter(certification => certification.id !== certificationToDelete?.id)) + } catch (e) { + console.error(e) + } + } } const { formatMessage } = useIntl() + const isChecked = (certificationTypeId?: Maybe<string> | undefined): boolean => { + if (!certificationTypeId) return false + return formCertificationTypes.some(certification => certification?.certificationTypeId === certificationTypeId) + } + return ( <div> <Box padding={2} marginBottom={2}> @@ -44,6 +83,7 @@ export const Premises = () => { </Box> <Stack space={2}> {certTypes?.map((d, i) => { + if (!d) return null return ( <Checkbox key={i} @@ -51,10 +91,10 @@ export const Premises = () => { name={d?.name?.is ?? ''} subLabel={d?.description?.is} rightContent={d?.description?.is} - value={d?.type ?? ''} + value={d?.id ?? ''} large - checked={formCertificationTypes?.some((f) => f?.type === d?.type)} - onChange={() => handleCheckboxChange(d?.type ?? undefined)} + checked={isChecked(d?.id)} + onChange={(e) => handleCheckboxChange(d as FormSystemFormCertificationType, e.target.checked)} /> ) })} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 53a6ff0d5065..13060ecb5cc7 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -1,5 +1,6 @@ -import { FormSystemField, FormSystemFieldDtoFieldTypeEnum } from '@island.is/api/schema' +import { FormSystemField } from '@island.is/api/schema' import { Box, DatePicker, Text } from '@island.is/island-ui/core' +// eslint-disable-next-line @nx/enforce-module-boundaries import { Banknumber, MessageWithLink, @@ -15,7 +16,8 @@ import { Checkbox, List, HomestayOverview, - m + m, + FieldTypesEnum } from '@island.is/form-system/ui' import { useIntl } from 'react-intl' @@ -25,19 +27,19 @@ interface Props { } export const Preview = ({ data }: Props) => { - const { fieldType: type } = data + const type = data.fieldType as unknown as FieldTypesEnum const { formatMessage } = useIntl() return ( <Box padding={2} background="blue100"> - {type === FormSystemFieldDtoFieldTypeEnum.Message && <MessageWithLink item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.BankAccount && ( + {type === FieldTypesEnum.MESSAGE && <MessageWithLink item={data} />} + {type === FieldTypesEnum.BANK_ACCOUNT && ( <div> <Text variant="h5">{data?.name?.is}</Text> <Banknumber item={data} /> </div> )} - {type === FormSystemFieldDtoFieldTypeEnum.Email && <Email item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.DatePicker && ( + {type === FieldTypesEnum.EMAIL && <Email item={data} />} + {type === FieldTypesEnum.DATE_PICKER && ( <Box marginTop={2} width="half"> <DatePicker label={ @@ -49,17 +51,17 @@ export const Preview = ({ data }: Props) => { /> </Box> )} - {type === FormSystemFieldDtoFieldTypeEnum.NationalId && <NationalId item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.Document && <FileUpload item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.Textbox && <TextInput item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.DropdownList && <List item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.RadioButtons && <Radio item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.IskNumberbox && <CurrencyField item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.Checkbox && <Checkbox item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.PhoneNumber && <PhoneNumber item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.TimeInput && <TimeInput item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.PropertyNumber && <PropertyNumber item={data} />} - {type === FormSystemFieldDtoFieldTypeEnum.HomestayOverview && <HomestayOverview />} + {type === FieldTypesEnum.NATIONAL_ID && <NationalId item={data} />} + {type === FieldTypesEnum.DOCUMENT && <FileUpload item={data} />} + {type === FieldTypesEnum.TEXTBOX && <TextInput item={data} />} + {type === FieldTypesEnum.DROPDOWN_LIST && <List item={data} />} + {type === FieldTypesEnum.RADIO_BUTTONS && <Radio item={data} />} + {type === FieldTypesEnum.ISK_NUMBERBOX && <CurrencyField item={data} />} + {type === FieldTypesEnum.CHECKBOX && <Checkbox item={data} />} + {type === FieldTypesEnum.PHONE_NUMBER && <PhoneNumber item={data} />} + {type === FieldTypesEnum.TIME_INPUT && <TimeInput item={data} />} + {type === FieldTypesEnum.PROPERTY_NUMBER && <PropertyNumber item={data} />} + {type === FieldTypesEnum.HOMESTAY_OVERVIEW && <HomestayOverview />} </Box> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx index f497cd73aa08..07709aaa3902 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx @@ -1,58 +1,52 @@ import { useContext, useState } from "react" import { ControlContext } from "../../../../context/ControlContext" import { Stack, Checkbox, Box, Text } from "@island.is/island-ui/core" -import { m } from "@island.is/form-system/ui" import { useIntl } from "react-intl" import { CREATE_APPLICANT, DELETE_APPLICANT } from "@island.is/form-system/graphql" import { useMutation } from "@apollo/client" -import { FormSystemFormApplicant, FormSystemApplicantTypeEnum } from "@island.is/api/schema" +import { FormSystemFormApplicant } from "@island.is/api/schema" +// eslint-disable-next-line @nx/enforce-module-boundaries +import { ApplicantTypesEnum, m } from '@island.is/form-system/ui' import { removeTypename } from "../../../../lib/utils/removeTypename" import { FormApplicantTypes } from "./components/FormApplicantTypes" -const applicantTypeCheckboxsLabel = [ - "Einstaklingur (innskráður)", - "Einstaklingur í umboði annars einstaklings", - "Einstaklingur í umboði lögaðila", - "Einstaklingur með prókúru", -] - const applicantTypeGroups = { - individual: [FormSystemApplicantTypeEnum.Individual], + individual: [ApplicantTypesEnum.INDIVIDUAL], individualDelegation: [ - FormSystemApplicantTypeEnum.IndividualWithDelegationFromIndividual, - FormSystemApplicantTypeEnum.IndividualGivingDelegation, + ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_INDIVIDUAL, + ApplicantTypesEnum.INDIVIDUAL_GIVING_DELEGATION, ], legalEntityDelegation: [ - FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity, - FormSystemApplicantTypeEnum.LegalEntity, + ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY, + ApplicantTypesEnum.LEGAL_ENTITY, ], procuration: [ - FormSystemApplicantTypeEnum.IndividualWithProcuration, - FormSystemApplicantTypeEnum.LegalEntity, + ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION, + ApplicantTypesEnum.LEGAL_ENTITY, ], } export const RelevantParties = () => { - const { control } = useContext(ControlContext) - const { formatMessage } = useIntl() const [createApplicant] = useMutation(CREATE_APPLICANT) const [deleteApplicant] = useMutation(DELETE_APPLICANT) - const { applicants, id: formId } = control.form + const { control, applicantTypes } = useContext(ControlContext) + const { formatMessage } = useIntl() + const { applicantTypes: applicants, id: formId } = control.form const [formApplicants, setFormApplicants] = useState<FormSystemFormApplicant[]>( applicants?.filter((applicant): applicant is FormSystemFormApplicant => applicant !== null) ?? [] ) - const handleApplicantChange = async (typesArray: FormSystemApplicantTypeEnum[], checked: boolean) => { + const handleApplicantChange = async (typesArray: string[], checked: boolean) => { if (checked) { try { const newApplicants = await Promise.all( - typesArray.map(async (applicantType) => { + typesArray.map(async (applicantTypeId) => { const newApplicant = await createApplicant({ variables: { input: { - createFormApplicantDto: { + createFormApplicantTypeDto: { formId, - applicantType, + applicantTypeId, }, }, }, @@ -69,7 +63,7 @@ export const RelevantParties = () => { await Promise.all( typesArray.map(async (applicantType) => { const applicant = formApplicants.find( - (a) => a.applicantType === applicantType + (a) => a.applicantTypeId === applicantType ) if (applicant) { await deleteApplicant({ @@ -81,7 +75,7 @@ export const RelevantParties = () => { setFormApplicants( formApplicants.filter( (applicant) => - applicant.applicantType !== undefined && applicant.applicantType !== null && !typesArray.includes(applicant.applicantType) + applicant.applicantTypeId !== undefined && applicant.applicantTypeId !== null && !typesArray.includes(applicant.applicantTypeId) ) ) } catch (e) { @@ -100,32 +94,32 @@ export const RelevantParties = () => { break case 2: { if (checked) { - if (formApplicants.some(applicant => applicant.applicantType === FormSystemApplicantTypeEnum.LegalEntity)) { - handleApplicantChange([FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity], checked) + if (formApplicants.some(applicant => applicant.id === ApplicantTypesEnum.LEGAL_ENTITY)) { + handleApplicantChange([ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY], checked) } else { handleApplicantChange(applicantTypeGroups.legalEntityDelegation, checked) } } else { - if (!formApplicants.some(applicant => applicant.applicantType === FormSystemApplicantTypeEnum.IndividualWithProcuration)) { + if (!formApplicants.some(applicant => applicant.id === ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION)) { handleApplicantChange(applicantTypeGroups.legalEntityDelegation, checked) } else { - handleApplicantChange([FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity], checked) + handleApplicantChange([ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY], checked) } } } break case 3: { if (checked) { - if (formApplicants.some(applicant => applicant.applicantType === FormSystemApplicantTypeEnum.LegalEntity)) { - handleApplicantChange([FormSystemApplicantTypeEnum.IndividualWithProcuration], checked) + if (formApplicants.some(applicant => applicant.id === ApplicantTypesEnum.LEGAL_ENTITY)) { + handleApplicantChange([ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION], checked) } else { handleApplicantChange(applicantTypeGroups.procuration, checked) } } else { - if (!formApplicants.some(applicant => applicant.applicantType === FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity)) { + if (!formApplicants.some(applicant => applicant.id === ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY)) { handleApplicantChange(applicantTypeGroups.procuration, checked) } else { - handleApplicantChange([FormSystemApplicantTypeEnum.IndividualWithProcuration], checked) + handleApplicantChange([ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION], checked) } } } @@ -135,8 +129,6 @@ export const RelevantParties = () => { } } - - return ( <Stack space={2}> <Box marginBottom={2}> @@ -144,13 +136,17 @@ export const RelevantParties = () => { </Box> <Box padding={2}> <Stack space={2}> - {applicantTypeCheckboxsLabel.map((label, index) => ( - <Checkbox - key={index} - label={label} - onChange={(e) => handleCheckboxChange(index, e.target.checked)} - /> - ))} + {applicantTypes?.map((applicant, index) => { + if (index > 3) return null + return ( + <Checkbox + key={index} + label={applicant?.description?.is} + checked={formApplicants.some(a => a.applicantTypeId === applicant?.id)} + onChange={(e) => handleCheckboxChange(index, e.target.checked)} + /> + ) + })} </Stack> </Box> <FormApplicantTypes diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx index b4a8c20afbe5..32d41033337f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx @@ -9,60 +9,49 @@ import { Text, } from '@island.is/island-ui/core' import { useIntl } from "react-intl" -import { m } from '@island.is/form-system/ui' import { ControlContext } from "../../../../../context/ControlContext" import { useMutation } from "@apollo/client" import { UPDATE_APPLICANT } from "@island.is/form-system/graphql" +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' + interface Props { formApplicantsTypes: FormSystemFormApplicant[] setFormApplicantTypes: Dispatch<SetStateAction<FormSystemFormApplicant[]>> } -enum FormSystemApplicantTypeEnum { - Individual = 'Individual', - IndividualWithDelegationFromIndividual = 'IndividualWithDelegationFromIndividual', - IndividualWithDelegationFromLegalEntity = 'IndividualWithDelegationFromLegalEntity', - IndividualWithProcuration = 'IndividualWithProcuration', - IndividualGivingDelegation = 'IndividualGivingDelegation', - LegalEntity = 'LegalEntity', -} - -const applicantTypeLabelMap: Record<FormSystemApplicantTypeEnum, string> = { - [FormSystemApplicantTypeEnum.Individual]: 'Einstaklingur (innskráður)', - [FormSystemApplicantTypeEnum.IndividualWithDelegationFromIndividual]: 'Einstaklingur í umboði annars einstaklings', - [FormSystemApplicantTypeEnum.IndividualWithDelegationFromLegalEntity]: 'Einstaklingur í umboði lögaðila', - [FormSystemApplicantTypeEnum.IndividualWithProcuration]: 'Einstaklingur með prókúru', - [FormSystemApplicantTypeEnum.IndividualGivingDelegation]: 'Umboðsveitandi (einstaklingur)', - [FormSystemApplicantTypeEnum.LegalEntity]: 'Lögaðili', -} - -const getApplicantTypeLabel = (type?: FormSystemApplicantTypeEnum) => { - if (!type) return '' - return applicantTypeLabelMap[type] -} - export const FormApplicantTypes = ({ formApplicantsTypes, setFormApplicantTypes }: Props) => { const { formatMessage } = useIntl() - const { focus, setFocus } = useContext(ControlContext) + const { focus, setFocus, applicantTypes } = useContext(ControlContext) const [updateApplicant] = useMutation(UPDATE_APPLICANT) const onBlurHandler = (currentString: string, applicant: FormSystemFormApplicant) => { if (currentString !== focus) { - updateApplicant({ - variables: { - input: { - id: applicant.id, - updateFormApplicantDto: { - name: applicant.name + try { + updateApplicant({ + variables: { + input: { + id: applicant.id, + updateFormApplicantTypeDto: { + name: applicant.name + } } } - } - }) - setFocus('') + }) + setFocus('') + } catch (e) { + console.error('Error updating applicant', e) + } } } + const getApplicantTypeLabel = (type?: string) => { + if (!type) return '' + const applicantType = applicantTypes?.find(applicant => applicant?.id === type) + return applicantType?.description?.is ?? '' + } + return ( <Stack space={5}> {formApplicantsTypes.map((applicantType, index) => { @@ -71,7 +60,7 @@ export const FormApplicantTypes = ({ formApplicantsTypes, setFormApplicantTypes <Row> <Column> <Box marginBottom={1}> - <Text variant="h4">{getApplicantTypeLabel(applicantType?.applicantType ?? undefined)}</Text> + <Text variant="h4">{getApplicantTypeLabel(applicantType?.applicantTypeId as string)}</Text> </Box> </Column> </Row> diff --git a/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx b/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx index 7dd80d4ef10a..6eced03fd0c0 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx @@ -40,9 +40,15 @@ export const NavComponent = ({ ? activeListItem?.id ?? '' : activeItem?.data?.id ?? '' - const connected = form.dependencies?.some( - (dep) => dep?.parentProp === activeGuid && dep?.childProps && dep.childProps.length > 0, - ) + const connected = () => { + const hasDependency = form.dependencies?.find((dep) => { + return dep?.parentProp === activeGuid + }) + if (hasDependency) { + return hasDependency.childProps?.includes(data.id as string) ?? false + } + return false + } const [editMode] = useState(false) @@ -155,7 +161,7 @@ export const NavComponent = ({ {selectable && ( <Box className={cn(styles.selectableComponent)} marginLeft="auto"> <Checkbox - checked={connected} + checked={connected()} onChange={() => controlDispatch({ type: 'TOGGLE_DEPENDENCY', diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index f57abc940505..480fbbdc6172 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -4,9 +4,10 @@ import { FormSystemScreen, FormSystemField } from '@island.is/api/schema' import { ControlContext } from '../../../context/ControlContext' import { removeTypename } from '../../../lib/utils/removeTypename' import { useIntl } from 'react-intl' -import { m } from '../../../lib/messages' import { useMutation } from '@apollo/client' import { CREATE_FIELD, CREATE_SCREEN, DELETE_FIELD, DELETE_SCREEN } from '@island.is/form-system/graphql' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { FieldTypesEnum, m } from '@island.is/form-system/ui' export const NavButtons = () => { @@ -44,12 +45,12 @@ export const NavButtons = () => { input: { createScreenDto: { sectionId: activeItem?.data?.id, + displayOrder: screens?.length } }, }, }) if (newScreen && !createScreen[1].loading) { - console.log('newScreen', newScreen) controlDispatch({ type: 'ADD_SCREEN', payload: { @@ -65,6 +66,8 @@ export const NavButtons = () => { input: { createFieldDto: { screenId: activeItem?.data?.id, + fieldType: FieldTypesEnum.TEXTBOX, + displayOrder: fields?.length ?? 0 } }, }, diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index f654e2ddd515..56f67984c48c 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -25,10 +25,11 @@ import { ControlContext, IControlContext } from '../../context/ControlContext' import { ItemType } from '../../lib/utils/interfaces' import { removeTypename } from '../../lib/utils/removeTypename' import { useIntl } from 'react-intl' -import { m } from '../../lib/messages' import { NavComponent } from '../NavComponent/NavComponent' import { CREATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from '@island.is/form-system/graphql' import { useMutation } from '@apollo/client' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' type DndAction = | 'SECTION_OVER_SECTION' @@ -75,40 +76,47 @@ export const Navbar = () => { }), ) const [createSection, { loading }] = useMutation(CREATE_SECTION) - const [updateDisplayOrder, { loading: updateDO }] = useMutation(UPDATE_SECTION_DISPLAY_ORDER) + const [updateDisplayOrder] = useMutation(UPDATE_SECTION_DISPLAY_ORDER) const addSection = async () => { - const newSection = await createSection({ - variables: { - input: { - createSectionDto: { - formId: form.id, - } - }, - }, - }) - if (newSection && !loading) { - controlDispatch({ - type: 'ADD_SECTION', - payload: { - section: removeTypename( - newSection.data?.formSystemCreateSection, - ) as FormSystemSection, - }, - }) - const updatedSections = sections?.map(s => { - return { - id: s?.id - } - }) - console.log('updatedSections', updatedSections) - updateDisplayOrder({ + try { + const newSection = await createSection({ variables: { input: { - sectionsDisplayOrderDto: sections?.map((s) => { s?.id }) - } - } + createSectionDto: { + formId: form.id, + displayOrder: sections?.length ?? 0, + } + }, + }, }) + if (newSection && !loading) { + controlDispatch({ + type: 'ADD_SECTION', + payload: { + section: removeTypename( + newSection.data?.formSystemCreateSection, + ) as FormSystemSection, + }, + }) + const updatedSections = sections?.map(s => { + return { + id: s?.id + } + }) + updateDisplayOrder({ + variables: { + input: { + updateSectionsDisplayOrderDto: { + sectionsDisplayOrderDto: [...(updatedSections ?? []), { id: newSection.data?.formSystemCreateSection.id }] + } + } + } + }) + } + } catch (err) { + console.error('Error creating section:', err.message) + } } diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx index 18af2fb92182..038815f37186 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -5,8 +5,9 @@ import { useContext } from 'react' import { baseSettingsStep } from '../../../../lib/utils/getBaseSettingsSection' import { ControlContext } from '../../../../context/ControlContext' import { useIntl } from 'react-intl' -import { m } from '@island.is/form-system/ui' import { FormSystemSectionDtoSectionTypeEnum } from '@island.is/api/schema' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const NavbarTab = () => { const { control, controlDispatch, inSettings, setInSettings } = diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx index 82d2fb9c8d83..659b1079b576 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx @@ -10,7 +10,8 @@ import { } from '@island.is/api/schema' import { NavbarSelectStatus } from '../../lib/utils/interfaces' import { useIntl } from 'react-intl' -import { m } from '../../lib/messages' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const NavbarSelect = () => { const { control, selectStatus } = useContext(ControlContext) diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index c7bad681fb8c..367a28785137 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -14,11 +14,11 @@ import { useNavigate } from 'react-router-dom' import { TranslationTag } from '../TranslationTag/TranslationTag' import { FormSystemPaths } from '../../lib/paths' import { - LicenseProviderEnum, ApplicationTemplateStatus, } from '../../lib/utils/interfaces' import { useIntl } from 'react-intl' -import { m } from '../../lib/messages' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' interface Props { id?: string | null @@ -60,11 +60,10 @@ export const TableRow = ({ <> <Box className={styles.header}> <Row> - <Column span="1/12"> - <Text variant="medium">{formatMessage(m.number)}</Text> - </Column> - <Column span="4/12"> - <Text variant="medium">{formatMessage(m.name)}</Text> + <Column span="5/12"> + <Box paddingLeft={2}> + <Text variant="medium">{formatMessage(m.name)}</Text> + </Box> </Column> <Column span="2/12"> <Text variant="medium">{formatMessage(m.lastModified)}</Text> @@ -94,10 +93,7 @@ export const TableRow = ({ style={{ cursor: '' }} > <Row key={id}> - <Column span="1/12"> - <ColumnText text={id ? id : ''} /> - </Column> - <Column span="4/12"> + <Column span="5/12" > <ColumnText text={name ? name : ''} /> </Column> <Column span="2/12"> diff --git a/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx b/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx index 0542b2f8f8f0..662082dc7919 100644 --- a/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx +++ b/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx @@ -1,6 +1,8 @@ import { Tag } from '@island.is/island-ui/core' -import { m } from '@island.is/form-system/ui' import { useIntl } from 'react-intl' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' + interface Props { translated: boolean } diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index 7502bfe4ca98..772bf9036393 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -1,9 +1,10 @@ -import { Dispatch, createContext } from 'react' +import { Dispatch, SetStateAction, createContext } from 'react' import { ControlAction, ControlState } from '../hooks/controlReducer' import { Maybe } from 'graphql/jsutils/Maybe' import { FormSystemFieldType, FormSystemForm, + FormSystemFormApplicant, FormSystemFormCertificationType, FormSystemListType, } from '@island.is/api/schema' @@ -28,9 +29,10 @@ export interface IControlContext { updateDnD: (type: ItemType) => void selectStatus: NavbarSelectStatus setSelectStatus: Dispatch<NavbarSelectStatus> + setInListBuilder: Dispatch<SetStateAction<boolean>> inListBuilder: boolean - setInListBuilder: Dispatch<boolean> formUpdate: (updatedForm?: FormSystemForm) => void + applicantTypes: Maybe<Maybe<FormSystemFormApplicant>[]> | undefined } export const ControlContext = createContext<IControlContext>({ @@ -59,11 +61,12 @@ export const ControlContext = createContext<IControlContext>({ setSelectStatus: function (_value: NavbarSelectStatus): void { throw new Error('Function not implemented.') }, - inListBuilder: false, - setInListBuilder: function (_value: boolean): void { + setInListBuilder: function (_value: SetStateAction<boolean>): void { throw new Error('Function not implemented.') }, + inListBuilder: false, formUpdate: function (): void { throw new Error('Function not implemented.') }, + applicantTypes: [] as Maybe<Maybe<FormSystemFormApplicant>[]>, }) diff --git a/libs/portals/admin/form-system/src/context/FormProvider.tsx b/libs/portals/admin/form-system/src/context/FormProvider.tsx index 4a2978e95802..c53bd1f0ccad 100644 --- a/libs/portals/admin/form-system/src/context/FormProvider.tsx +++ b/libs/portals/admin/form-system/src/context/FormProvider.tsx @@ -10,19 +10,17 @@ import { baseSettingsStep } from "../lib/utils/getBaseSettingsSection" import { updateActiveItemFn } from "../lib/utils/updateActiveItem" import { useMutation } from "@apollo/client" import { UPDATE_FIELD, UPDATE_FIELDS_DISPLAY_ORDER, UPDATE_FORM, UPDATE_SCREEN, UPDATE_SCREEN_DISPLAY_ORDER, UPDATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from "@island.is/form-system/graphql" - - +import { updateFormFn } from "../lib/utils/updateFormFn" export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: FormSystemFormResponse }> = ({ children, formBuilder }) => { const [focus, setFocus] = useState<string>('') const [inSettings, setInSettings] = useState(formBuilder?.form?.name?.is === '') - const [inListBuilder, setInListBuilder] = useState(false) + const [inListBuilder, setInListBuilder] = useState<boolean>(false) const [selectStatus, setSelectStatus] = useState<NavbarSelectStatus>( NavbarSelectStatus.OFF, ) - const { fieldTypes, listTypes, certificationTypes, form } = formBuilder - + const { fieldTypes, listTypes, certificationTypes, applicantTypes, form } = formBuilder const initialControl: ControlState = { activeItem: { type: 'Section', @@ -35,13 +33,12 @@ export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: Fo activeListItem: null, form: removeTypename(form) as FormSystemForm, } - console.log('initialForm', form) - const [control, controlDispatch] = useReducer(controlReducer, initialControl) const updateSection = useMutation(UPDATE_SECTION) const updateScreen = useMutation(UPDATE_SCREEN) const updateField = useMutation(UPDATE_FIELD) + const updateActiveItem = useCallback((updatedActiveItem?: ActiveItem) => updateActiveItemFn(control.activeItem, updateSection, updateScreen, updateField, updatedActiveItem), [control.activeItem, updateSection, updateScreen, updateField]) @@ -52,36 +49,9 @@ export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: Fo updateDnd(control, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder), [control, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder]) const [updateForm] = useMutation(UPDATE_FORM) - const formUpdate = async (updatedForm?: FormSystemForm) => { - const newForm = updatedForm ? updatedForm : control.form - try { - const response = await updateForm({ - variables: { - input: { - id: control.form.id, - updateFormDto: { - organizationId: newForm.organizationId, - name: newForm.name, - slug: newForm.slug, - invalidationDate: newForm.invalidationDate === null ? undefined : newForm.invalidationDate, - isTranslated: newForm.isTranslated, - applicationDaysToRemove: newForm.applicationDaysToRemove, - stopProgressOnValidatingScreen: newForm.stopProgressOnValidatingScreen, - completedMessage: newForm.completedMessage, - dependencies: newForm.dependencies ?? [], - } - } - } - }) - - // Optionally handle the response - console.log('Form updated successfully:', response.data) - - } catch (err) { - // Handle the error case - console.error('Error updating form:', err.message) - } - } + const formUpdate = useCallback((updatedForm?: FormSystemForm) => { + updateFormFn(control, updateForm, updatedForm) + }, [control, updateForm]) const context: IControlContext = useMemo(() => ({ control, @@ -97,10 +67,11 @@ export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: Fo updateDnD: updateDragAndDrop, selectStatus, setSelectStatus, - inListBuilder, setInListBuilder, - formUpdate - }), [control, controlDispatch]) + inListBuilder, + formUpdate, + applicantTypes + }), [control, controlDispatch, inListBuilder, selectStatus]) return ( <ControlContext.Provider value={context}> diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index 450634c50604..4c9abb46f705 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -6,6 +6,7 @@ import { FormSystemSection, FormSystemFieldSettings, FormSystemSectionDtoSectionTypeEnum, + FormSystemFormCertificationTypeDto, } from '@island.is/api/schema' import { UniqueIdentifier } from '@dnd-kit/core' import { arrayMove } from '@dnd-kit/sortable' @@ -101,6 +102,13 @@ type ChangeActions = update: (updatedActiveItem?: ActiveItem) => void } } + | { + type: 'CHANGE_CERTIFICATION' + payload: { + certificate: FormSystemFormCertificationTypeDto + checked: boolean + } + } type InputSettingsActions = | { @@ -116,7 +124,7 @@ type InputSettingsActions = | { type: 'SET_FILE_UPLOAD_SETTINGS' payload: { - property: 'isMulti' | 'maxSize' | 'amount' | 'types' + property: 'isMulti' | 'fileMaxSize' | 'maxFiles' | 'fileTypes' checked?: boolean value?: string | number update: (updatedActiveItem?: ActiveItem) => void @@ -140,7 +148,6 @@ type InputSettingsActions = type: 'REMOVE_LIST_ITEM' payload: { id: UniqueIdentifier - update: (updatedActiveItem?: ActiveItem) => void } } | { @@ -181,7 +188,6 @@ export const controlReducer = ( action: ControlAction, ): ControlState => { const { form, activeItem } = state - // const { stepsList: steps, groupsList: groups, inputsList: inputs } = form const { sections, screens, fields } = form switch (action.type) { case 'SET_ACTIVE_ITEM': @@ -229,7 +235,6 @@ export const controlReducer = ( // Screens case 'ADD_SCREEN': { - console.log('action.payload.screen', action.payload.screen) return { ...state, activeItem: { @@ -303,7 +308,7 @@ export const controlReducer = ( ...activeItem, data: { ...activeItem.data, - type: newValue, + fieldType: newValue, fieldSettings: removeTypename(fieldSettings), }, } @@ -345,27 +350,27 @@ export const controlReducer = ( } /* Uncomment and finish when field has isRequired property */ - // case 'CHANGE_IS_REQUIRED': { - // const currentData = activeItem.data as FormSystemField - // const newActive = { - // ...activeItem, - // data: { - // ...currentData, - // isRequired: !currentData?.isRequired, - // }, - // } - // action.payload.update(newActive) - // return { - // ...state, - // activeItem: newActive, - // form: { - // ...form, - // inputsList: inputs?.map((i) => - // i?.guid === currentData?.guid ? newActive.data : i, - // ), - // }, - // } - // } + case 'CHANGE_IS_REQUIRED': { + const currentData = activeItem.data as FormSystemField + const newActive = { + ...activeItem, + data: { + ...currentData, + isRequired: !currentData?.isRequired, + }, + } + action.payload.update(newActive) + return { + ...state, + activeItem: newActive, + form: { + ...form, + fields: fields?.map((i) => + i?.id === currentData?.id ? newActive.data : i, + ), + }, + } + } // Change case 'CHANGE_NAME': { @@ -482,7 +487,7 @@ export const controlReducer = ( const updatedChildProps = dependency?.childProps?.filter( (child) => child !== itemId, ) - if (updatedChildProps?.length) { + if ((updatedChildProps?.length ?? 0) > 0) { updatedDependencies = updatedDependencies.map((dep) => dep?.parentProp === activeId ? { ...dep, childProps: updatedChildProps } @@ -503,7 +508,7 @@ export const controlReducer = ( } else { updatedDependencies = [ ...updatedDependencies, - { parentProp: activeId, childProps: [itemId] }, + { parentProp: activeId, childProps: [itemId], isSelected: false }, ] } const updatedForm = { @@ -538,6 +543,18 @@ export const controlReducer = ( }, } } + + case 'CHANGE_CERTIFICATION': { + const { certificate, checked } = action.payload + const updatedCertifications = checked ? [...form.certificationTypes ?? [], certificate] : form.certificationTypes?.filter((c) => c?.id !== certificate.id) + return { + ...state, + form: { + ...form, + certificationTypes: updatedCertifications, + }, + } + } // Input settings case 'SET_MESSAGE_WITH_LINK_SETTINGS': { const field = activeItem.data as FormSystemField @@ -565,7 +582,7 @@ export const controlReducer = ( return { ...state, activeItem: { - type: 'Section', + type: 'Field', data: newField, }, form: { @@ -593,7 +610,7 @@ export const controlReducer = ( fieldSettings: { ...field.fieldSettings, [property]: - property === 'types' + property === 'fileTypes' ? updateFileTypesArray() : property === 'isMulti' ? checked @@ -643,31 +660,18 @@ export const controlReducer = ( case 'SET_LIST_ITEM_SELECTED': { const { id } = action.payload const field = activeItem.data as FormSystemField - const list = field.fieldSettings?.list ?? [] + const list = field.list ?? [] const newField = { ...field, - fieldSettings: { - ...field.fieldSettings, - list: list - .filter((l): l is FormSystemListItem => l !== null && l !== undefined) - .map((l: FormSystemListItem) => - l.id === id - ? { ...l, isSelected: !l.isSelected } - : { ...l, isSelected: false }, - ), - }, - } - //TODO - // updateField[0]({ - // variables: { - // input: { - // id: id, - // updateFieldDto: { - // updateFieldDto: newField - // } - // } - // } - // }) + list: list + .filter((l): l is FormSystemListItem => l !== null && l !== undefined) + .map((l: FormSystemListItem) => + l.id === id + ? { ...l, isSelected: !l.isSelected } + : { ...l, isSelected: false }, + ), + } + return { ...state, activeItem: { @@ -683,25 +687,13 @@ export const controlReducer = ( } } case 'REMOVE_LIST_ITEM': { - const { id, update } = action.payload + const { id } = action.payload const field = activeItem.data as FormSystemField - const list = field.fieldSettings?.list ?? [] + const list = field.list ?? [] const newField = { ...field, - fieldSettings: { - ...field.fieldSettings, - list: list.filter((l: FormSystemListItem | null | undefined): l is FormSystemListItem => l !== null && l !== undefined && l.id !== id), - }, + list: list.filter((l: FormSystemListItem | null | undefined): l is FormSystemListItem => l !== null && l !== undefined && l.id !== id), } - update({ type: 'Field', data: newField }) - //TODO - // deleteListItem[0]({ - // variables: { - // input: { - // id: id - // } - // } - // }) return { ...state, activeItem: { @@ -719,14 +711,11 @@ export const controlReducer = ( case 'ADD_LIST_ITEM': { const field = activeItem.data as FormSystemField - const list = field.fieldSettings?.list ?? [] const newField = { ...field, - fieldSettings: { - ...field.fieldSettings, - list: [...list, action.payload.newListItem], - }, + list: [...(field?.list ?? []), action.payload.newListItem], } + return { ...state, activeItem: { @@ -743,7 +732,7 @@ export const controlReducer = ( } case 'CHANGE_LIST_ITEM': { const field = activeItem.data as FormSystemField - const list = field.fieldSettings?.list as FormSystemListItem[] + const list = field.list as FormSystemListItem[] const { property, lang, value, id } = action.payload const listItem = list?.find((l) => l?.id === id) as FormSystemListItem @@ -757,25 +746,13 @@ export const controlReducer = ( const newField = { ...field, - fieldSettings: { - ...field.fieldSettings, - list: list.filter(l => l !== null).map((l: FormSystemListItem) => { - if (l.id === id) { - return newListItem - } - return l - }), - }, - } - //TODO - // updateListItem[0]({ - // variables: { - // input: { - // id: id, - // updateListItemDto: newListItem - // } - // } - // }) + list: list.filter(l => l !== null).map((l: FormSystemListItem) => { + if (l.id === id) { + return newListItem + } + return l + }) + } return { ...state, @@ -844,7 +821,6 @@ export const controlReducer = ( if (sections && sections[overIndex]) { updatedScreens[activeIndex].sectionId = action.payload.overId as string } - console.log(arrayMove(updatedScreens, activeIndex, overIndex)) return { ...state, form: { @@ -897,17 +873,17 @@ export const controlReducer = ( const overIndex = screens?.findIndex( (screen) => screen?.id === action.payload.overId, ) as number - const updatedInputs = fields?.map((input) => ({ + const updatedFields = fields?.map((input) => ({ ...input, })) as FormSystemField[] if (screens && screens[overIndex]) { - updatedInputs[activeIndex].id = action.payload.overId as string + updatedFields[activeIndex].screenId = action.payload.overId as string } return { ...state, form: { ...form, - fields: arrayMove(updatedInputs, activeIndex, overIndex) + fields: arrayMove(updatedFields, activeIndex, overIndex) }, } } @@ -918,20 +894,20 @@ export const controlReducer = ( const overIndex = fields?.findIndex( (field) => field?.id === action.payload.overId, ) as number - const updatedInputs = fields as FormSystemField[] - if (updatedInputs[activeIndex] && updatedInputs[overIndex]) { + const updatedFields = fields as FormSystemField[] + if (updatedFields[activeIndex] && updatedFields[overIndex]) { if ( - updatedInputs[activeIndex].id !== - updatedInputs[overIndex].id + updatedFields[activeIndex].screenId !== + updatedFields[overIndex].screenId ) { - updatedInputs[activeIndex].id = - updatedInputs[overIndex].id + updatedFields[activeIndex].screenId = + updatedFields[overIndex].screenId return { ...state, form: { ...form, fields: arrayMove( - updatedInputs, + updatedFields, activeIndex, overIndex - 1, ) @@ -942,7 +918,7 @@ export const controlReducer = ( ...state, form: { ...form, - fields: arrayMove(updatedInputs, activeIndex, overIndex) + fields: arrayMove(updatedFields, activeIndex, overIndex) }, } } @@ -950,7 +926,7 @@ export const controlReducer = ( } case 'LIST_ITEM_OVER_LIST_ITEM': { const fieldItem = activeItem.data as FormSystemField - const list = fieldItem.fieldSettings?.list as FormSystemListItem[] + const list = fieldItem.list as FormSystemListItem[] const { activeId, overId } = action.payload if (!list) { return state @@ -964,12 +940,9 @@ export const controlReducer = ( const newField: FormSystemField = { ...fieldItem, - fieldSettings: { - ...fieldItem.fieldSettings, - list: arrayMove<FormSystemListItem>(list, activeIndex, overIndex).map( - (l: FormSystemListItem, i: number) => ({ ...l, displayOrder: i }), - ), - }, + list: arrayMove<FormSystemListItem>(list, activeIndex, overIndex).map( + (l: FormSystemListItem, i: number) => ({ ...l, displayOrder: i }), + ) } return { ...state, diff --git a/libs/portals/admin/form-system/src/lib/messages.ts b/libs/portals/admin/form-system/src/lib/messages.ts deleted file mode 100644 index 1e5390d675fd..000000000000 --- a/libs/portals/admin/form-system/src/lib/messages.ts +++ /dev/null @@ -1,437 +0,0 @@ -import { defineMessages } from 'react-intl' - -export const m = defineMessages({ - rootName: { - id: 'portals-admin.form-system:application-builder', - defaultMessage: 'Umsóknarsmiður', - }, - template: { - id: 'portals-admin.form-system:template', - defaultMessage: 'Forskrift', - }, - organisation: { - id: 'portals-admin.form-system:organisation', - defaultMessage: 'Stofnun', - }, - state: { - id: 'portals-admin.form-system:state', - defaultMessage: 'Staða', - }, - name: { - id: 'portals-admin.form-system:name', - defaultMessage: 'Heiti', - }, - nameEnglish: { - id: 'portals-admin.form-system:name-english', - defaultMessage: 'Heiti (enska)', - }, - applicationName: { - id: 'portals-admin.form-system:application-name', - defaultMessage: 'Heiti umsóknar', - }, - applicationNameEnglish: { - id: 'portals-admin.form-system:application-name-english', - defaultMessage: 'Heiti umsóknar (enska)', - }, - description: { - id: 'portals-admin.form-system:description', - defaultMessage: 'Lýsing', - }, - descriptionEnglish: { - id: 'portals-admin.form-system:description-english', - defaultMessage: 'Lýsing (enska)', - }, - daysUntilExpiration: { - id: 'portals-admin.form-system:days-until-expiration', - defaultMessage: 'Líftími umsóknar', - }, - deadline: { - id: 'portals-admin.form-system:deadline', - defaultMessage: 'Umsóknarfrestur', - }, - basicSettings: { - id: 'portals-admin.form-system:basic-settings', - defaultMessage: 'Grunnstillingar', - }, - allowProgress: { - id: 'portals-admin.form-system:allow-progress', - defaultMessage: - 'Leyfa notanda að halda áfram í umsókninni með ógild/óútfyllt gildi', - }, - premisesTitle: { - id: 'portals-admin.form-system:premises-title', - defaultMessage: - 'Í þessu skrefi óskum við eftir samþykki fyrir því að upplýsingar um hlutaðeigandi aðila verði sóttar af Mínum síðum. Að auki er hægt að óska eftir heimild fyrir því að einhver af eftirfarandi vottorðum verði sótt í viðeigandi vefþjónustur', - }, - premises: { - id: 'portals-admin.form-system:premises', - defaultMessage: 'Forsendur', - }, - estateGuardianshipCertificate: { - id: 'portals-admin.form-system:estate-guardianship-certificate', - defaultMessage: 'Búsforræðisvottorð', - }, - estateGuardianshipCertificateWithoutSeal: { - id: 'portals-admin.form-system:estate-guardianship-certificate-without-seal', - defaultMessage: 'Búsforræðisvottorð án stimpils', - }, - certificateOfResidence: { - id: 'portals-admin.form-system:certificate-of-residence', - defaultMessage: 'Búsetuvottorð', - }, - noDebtCertificate: { - id: 'portals-admin.form-system:no-debt-certificate', - defaultMessage: 'Skuldleysisvottorð', - }, - criminalRecord: { - id: 'portals-admin.form-system:criminal-record', - defaultMessage: 'Sakavottorð', - }, - criminalRecordWithoutSeal: { - id: 'portals-admin.form-system:criminal-record-without-seal', - defaultMessage: 'Sakavottorð án stimpils', - }, - relevantParties: { - id: 'portals-admin.form-system:relevant-parties', - defaultMessage: 'Hlutaðeigandi aðilar', - }, - selectIndividuals: { - id: 'portals-admin.form-system:select-individuals', - defaultMessage: 'Veldu þá einstaklinga sem mega opna þessa umsókn', - }, - individual: { - id: 'portals-admin.form-system:individual', - defaultMessage: 'Einstaklingur (innskráður)', - }, - individualOnBehalfPerson: { - id: 'portals-admin.form-system:individual-on-behalf-person', - defaultMessage: 'Einstaklingur í umboði annars einstaklings', - }, - individualOnBehalfLegalEntity: { - id: 'portals-admin.form-system:individual-on-behalf-legal-entity', - defaultMessage: 'Einstaklingur í umboði lögaðila', - }, - individualWithPowerOfAttorney: { - id: 'portals-admin.form-system:individual-with-power-of-attorney', - defaultMessage: 'Einstaklingur með prókúru', - }, - defineRelevantParties: { - id: 'portals-admin.form-system:define-relevant-parties', - defaultMessage: 'Skilgreindu hlutaðeigandi aðila', - }, - step: { - id: 'portals-admin.form-system:step', - defaultMessage: 'Skref', - }, - group: { - id: 'portals-admin.form-system:group', - defaultMessage: 'Hópur', - }, - input: { - id: 'portals-admin.form-system:input', - defaultMessage: 'Innsláttur', - }, - allowMultiple: { - id: 'portals-admin.form-system:allow-multiple', - defaultMessage: 'Er fjölval', - }, - saveAndContinue: { - id: 'portals-admin.form-system:save-and-continue', - defaultMessage: 'Vista og halda áfram', - }, - addStep: { - id: 'portals-admin.form-system:add-step', - defaultMessage: 'Bæta við skrefi', - }, - allowFileTypes: { - id: 'portals-admin.form-system:allow-file-types', - defaultMessage: 'Leyfa eftirfarandi skjalatýpur', - }, - allowedFileTypes: { - id: 'portals-admin.form-system:allowed-file-types', - defaultMessage: 'Eftirfarandi skjalatýpur eru leyfðar', - }, - // Input types - bankAccount: { - id: 'portals-admin.form-system:bank-account', - defaultMessage: 'Bankareikningur', - }, - bank: { - id: 'portals-admin.form-system:bank', - defaultMessage: 'Banki', - }, - ledger: { - id: 'portals-admin.form-system:ledger', - defaultMessage: 'Höfuðbók', - }, - accountNumber: { - id: 'portals-admin.form-system:account-number', - defaultMessage: 'Reikningsnúmer', - }, - datePicker: { - id: 'portals-admin.form-system:date-picker', - defaultMessage: 'Dagsetningarval', - }, - propertyNumber: { - id: 'portals-admin.form-system:property-number', - defaultMessage: 'Fasteignanúmer', - }, - dropdownList: { - id: 'portals-admin.form-system:dropdown-list', - defaultMessage: 'Fellilisti', - }, - listBuilder: { - id: 'portals-admin.form-system:list-builder', - defaultMessage: 'Listasmiður', - }, - homestayNumber: { - id: 'portals-admin.form-system:homestay-number', - defaultMessage: 'Heimagistingarnúmer', - }, - homestayOverview: { - id: 'portals-admin.form-system:homestay-overview', - defaultMessage: 'Heimagistingaryfirlit', - }, - timeInput: { - id: 'portals-admin.form-system:time-input', - defaultMessage: 'Klukkinnsláttur', - }, - iskNumberBox: { - id: 'portals-admin.form-system:currency-number', - defaultMessage: 'Krónutölubox', - }, - iskSumBox: { - id: 'portals-admin.form-system:currency-sum', - defaultMessage: 'Krónutölusamtala', - }, - textBox: { - id: 'portals-admin.form-system:text-box', - defaultMessage: 'Textainnsláttur', - }, - message: { - id: 'portals-admin.form-system:message', - defaultMessage: 'Textalýsing', - }, - // Labels and placeholders - maxFileSize: { - id: 'portals-admin.form-system:max-file-size', - defaultMessage: 'Hámarksstærð skráa', - }, - selectMaxFileSize: { - id: 'portals-admin.form-system:select-max-file-size', - defaultMessage: 'Veldu hámarksstærð', - }, - maxFileAmount: { - id: 'portals-admin.form-system:max-file-amount', - defaultMessage: 'Hámarksfjöldi skráa', - }, - selectMaxFileAmount: { - id: 'portals-admin.form-system:select-max-file-amount', - defaultMessage: 'Veldu hámarksfjölda', - }, - previewAllowedFileTypes: { - id: 'portals-admin.form-system:preview-allowed-file-types', - defaultMessage: 'Eftirfarandi skjalatýpur eru leyfðar', - }, - fileUploadButton: { - id: 'portals-admin.form-system:file-upload-button', - defaultMessage: 'Veldu skjöl til að hlaða upp', - }, - customList: { - id: 'portals-admin.form-system:custom-list', - defaultMessage: 'Nýr fellilisti', - }, - predeterminedLists: { - id: 'portals-admin.form-system:predetermined-lists', - defaultMessage: 'Tilbúnir fellilistar', - }, - max120Days: { - id: 'portals-admin.form-system:max-120-days', - defaultMessage: 'Hámark 120 daga', - }, - chooseDate: { - id: 'portals-admin.form-system:choose-date', - defaultMessage: 'Veldu dagsetningu', - }, - chooseListType: { - id: 'portals-admin.form-system:choose-list-type', - defaultMessage: 'Veldu lista tegund', - }, - addLink: { - id: 'portals-admin.form-system:add-link', - defaultMessage: 'Bæta við hlekk', - }, - buttonText: { - id: 'portals-admin.form-system:button-text', - defaultMessage: 'Hnappatexti', - }, - buttonTextEnglish: { - id: 'portals-admin.form-system:button-text-english', - defaultMessage: 'Hnappatexti (enska)', - }, - url: { - id: 'portals-admin.form-system:url', - defaultMessage: 'Vefslóð', - }, - largeTextArea: { - id: 'portals-admin.form-system:large-text-area', - defaultMessage: 'Stór textasvæði', - }, - connect: { - id: 'portals-admin.form-system:connect', - defaultMessage: 'Tengja', - }, - selected: { - id: 'portals-admin.form-system:selected', - defaultMessage: 'Sjálfvalið', - }, - info: { - id: 'portals-admin.form-system:info', - defaultMessage: 'Upplýsingabóla', - }, - infoEnglish: { - id: 'portals-admin.form-system:info-english', - defaultMessage: 'Upplýsingabóla (enska)', - }, - addListItem: { - id: 'portals-admin.form-system:add-list-item', - defaultMessage: '+ Bæta við gildi', - }, - finish: { - id: 'portals-admin.form-system:finish', - defaultMessage: 'Ljúka', - }, - type: { - id: 'portals-admin.form-system:type', - defaultMessage: 'Tegund', - }, - chooseType: { - id: 'portals-admin.form-system:choose-type', - defaultMessage: 'Veldu tegund', - }, - required: { - id: 'portals-admin.form-system:required', - defaultMessage: 'Krafist', - }, - email: { - id: 'portals-admin.form-system:email', - defaultMessage: 'Netfang', - }, - namePerson: { - id: 'portals-admin.form-system:name-person', - defaultMessage: 'Nafn', - }, - suggestions: { - id: 'portals-admin.form-system:suggestions', - defaultMessage: 'Tillögur', - }, - preview: { - id: 'portals-admin.form-system:preview', - defaultMessage: 'Skoða', - }, - lastModified: { - id: 'portals-admin.form-system:last-modified', - defaultMessage: 'Síðast breytt', - }, - translations: { - id: 'portals-admin.form-system:translations', - defaultMessage: 'Þýðingar', - }, - number: { - id: 'portals-admin.form-system:number', - defaultMessage: 'Númer', - }, - actions: { - id: 'portals-admin.form-system:actions', - defaultMessage: 'Aðgerðir', - }, - edit: { - id: 'portals-admin.form-system:edit', - defaultMessage: 'Breyta', - }, - copy: { - id: 'portals-admin.form-system:copy', - defaultMessage: 'Afrita', - }, - translateToEnglish: { - id: 'portals-admin.form-system:translate-to-english', - defaultMessage: 'Þýðing enska', - }, - getUrl: { - id: 'portals-admin.form-system:get-url', - defaultMessage: 'Sækja slóð', - }, - getJson: { - id: 'portals-admin.form-system:get-json', - defaultMessage: 'Sækja JSON', - }, - address: { - id: 'portals-admin.form-system:address', - defaultMessage: 'Heimilisfang', - }, - city: { - id: 'portals-admin.form-system:city', - defaultMessage: 'Staður', - }, - properties: { - id: 'portals-admin.form-system:properties', - defaultMessage: 'Eignir', - }, - chooseProperty: { - id: 'portals-admin.form-system:choose-property', - defaultMessage: 'Veldu eign', - }, - enterPropertyNumber: { - id: 'portals-admin.form-system:enter-property-number', - defaultMessage: 'Sláðu inn fasteignanúmer', - }, - propertyChoice: { - id: 'portals-admin.form-system:property-choice', - defaultMessage: 'Velja fasteign', - }, - propertyNumberInput: { - id: 'portals-admin.form-system:property-number-input', - defaultMessage: 'Skrá fasteignanúmer', - }, - addGroupHover: { - id: 'portals-admin.form-system:add-step-hover', - defaultMessage: 'Bæta við hópi', - }, - addInputHover: { - id: 'portals-admin.form-system:add-input-hover', - defaultMessage: 'Bæta við innslætti', - }, - areYouSure: { - id: 'portals-admin.form-system:are-you-sure', - defaultMessage: 'Ertu viss?', - }, - completelySure: { - id: 'portals-admin.form-system:completely-sure', - defaultMessage: 'Alveg viss?', - }, - confirm: { - id: 'portals-admin.form-system:confirm', - defaultMessage: 'Staðfesta', - }, - cancel: { - id: 'portals-admin.form-system:cancel', - defaultMessage: 'Hætta við', - }, - delete: { - id: 'portals-admin.form-system:delete', - defaultMessage: 'Eyða', - }, - // Error messages - invalidEmail: { - id: 'portals-admin.form-system:invalid-email', - defaultMessage: 'Ógilt netfang', - }, - maxFileError: { - id: 'portals-admin.form-system:max-file-error', - defaultMessage: 'Hámarksfjöldi skráa er', - }, - nationalId: { - id: 'portals-admin.form-system:national-id', - defaultMessage: 'Kennitala', - }, -}) diff --git a/libs/portals/admin/form-system/src/lib/navigation.ts b/libs/portals/admin/form-system/src/lib/navigation.ts index e1ab562acf32..4b7d96cf9402 100644 --- a/libs/portals/admin/form-system/src/lib/navigation.ts +++ b/libs/portals/admin/form-system/src/lib/navigation.ts @@ -1,6 +1,7 @@ import { PortalNavigationItem } from '@island.is/portals/core' -import { m } from './messages' import { FormSystemPaths } from './paths' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { m } from '@island.is/form-system/ui' export const formSystemNavigation: PortalNavigationItem = { name: m.rootName, diff --git a/libs/portals/admin/form-system/src/lib/utils/fieldTypes.ts b/libs/portals/admin/form-system/src/lib/utils/fieldTypes.ts index c522efee29e0..92cea9fa6c2e 100644 --- a/libs/portals/admin/form-system/src/lib/utils/fieldTypes.ts +++ b/libs/portals/admin/form-system/src/lib/utils/fieldTypes.ts @@ -1,34 +1,36 @@ import { Option } from '@island.is/island-ui/core' +// eslint-disable-next-line @nx/enforce-module-boundaries +import { FieldTypesEnum } from '@island.is/form-system/ui' + //TODO: use the enum from the schema /* eslint-disable @typescript-eslint/naming-convention */ enum FieldTypes { - Bank_account = 'Bankareikningur', - Date_picker = 'Dagsetningarval', - Default = 'Default', - Dropdown_list = 'Fellilisti', - Payer = 'Greiðandi', - Payment = 'Greiðsla', - Checkbox = 'Hakbox', - Homestay_number = 'Heimagistingarnúmer', - Homestay_overview = 'Heimagistingaryfirlit', - National_id = 'Kennitala', - National_id_all = 'Kennitala (allt)', - National_id_estate = 'Kennitala (dánarbú)', - Time_input = 'Klúkkuinnsláttur', - ISK_numberbox = 'Krónutölubox', - ISK_sumbox = 'Krónutölusumma', - Email = 'Netfang', - Property_number = 'Fasteignanúmer', - Phone_number = 'Símanúmer', - Document = 'Skjal', - Message = 'Textalýsing', - Textbox = 'Textabox', - Numberbox = 'Tölubox', - Radio_buttons = 'Valhnappar', + BANK_ACCOUNT = 'Bankareikningur', + DATE_PICKER = 'Dagsetningarval', + DROPDOWN_LIST = 'Fellilisti', + PAYER = 'Greiðandi', + PAYMENT = 'Greiðsla', + CHECKBOX = 'Hakbox', + HOMESTAY_NUMBER = 'Heimagistingarnúmer', + HOMESTAY_OVERVIEW = 'Heimagistingaryfirlit', + NATIONAL_ID = 'Kennitala', + NATIONAL_ID_ALL = 'Kennitala (allt)', + NATIONAL_ID_ESTATE = 'Kennitala (dánarbú)', + TIME_INPUT = 'Klúkkuinnsláttur', + ISK_NUMBERBOX = 'Krónutölubox', + ISK_SUMBOX = 'Krónutölusumma', + EMAIL = 'Netfang', + PROPERTY_NUMBER = 'Fasteignanúmer', + PHONE_NUMBER = 'Símanúmer', + DOCUMENT = 'Skjal', + MESSAGE = 'Textalýsing', + TEXTBOX = 'Textabox', + NUMBERBOX = 'Tölubox', + RADIO_BUTTONS = 'Valhnappar', } export const getFieldTypeValue = (type: string) => { - return FieldTypes[type as keyof typeof FieldTypes] || FieldTypes.Default + return FieldTypes[type as keyof typeof FieldTypes] } export const getFieldTypeKey = (value: string) => { @@ -42,7 +44,7 @@ export const getFieldTypeKey = (value: string) => { export const fieldTypesSelectObject = (): readonly Option<string>[] => { const fieldTypes = Object.keys(FieldTypes).map((key) => ({ label: FieldTypes[key as keyof typeof FieldTypes], - value: key, + value: FieldTypesEnum[key as keyof typeof FieldTypes], })) return fieldTypes } diff --git a/libs/portals/admin/form-system/src/lib/utils/removeTypename.ts b/libs/portals/admin/form-system/src/lib/utils/removeTypename.ts index 0199df24cfd6..786c06a442de 100644 --- a/libs/portals/admin/form-system/src/lib/utils/removeTypename.ts +++ b/libs/portals/admin/form-system/src/lib/utils/removeTypename.ts @@ -13,5 +13,11 @@ export const removeTypename = (obj: any): any => { newObj[key] = removeTypename(value) } } + // if the key is fieldSettings remove all properties where the values are null + if (newObj.fieldSettings) { + newObj.fieldSettings = Object.fromEntries( + Object.entries(newObj.fieldSettings).filter(([_, v]) => v !== null), + ) + } return newObj } diff --git a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts index 02c34bbcf8c3..3eb180185635 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { ApolloCache, DefaultContext, MutationFunctionOptions, MutationTuple, OperationVariables } from '@apollo/client' +import { ApolloCache, DefaultContext, MutationTuple, OperationVariables } from '@apollo/client' import { ActiveItem } from './interfaces' import { FormSystemSection, @@ -16,9 +16,9 @@ export const updateActiveItemFn = async ( currentActiveItem?: ActiveItem, ) => { const { type } = activeItem - const [updateSection, { error: sectionError }] = sectionMutation - const [updateScreen, { error: screenError }] = screenMutation - const [updateField, { error: fieldError }] = fieldMutation + const [updateSection] = sectionMutation + const [updateScreen] = screenMutation + const [updateField] = fieldMutation try { if (type === 'Section') { const { id, name, waitingText } = @@ -41,7 +41,6 @@ export const updateActiveItemFn = async ( currentActiveItem ? (currentActiveItem.data as FormSystemScreen) : (activeItem.data as FormSystemScreen) - console.log('callRuleset', callRuleset) updateScreen({ variables: { input: { @@ -54,9 +53,6 @@ export const updateActiveItemFn = async ( }, } }) - if (screenError) { - console.error('Error updating screen: ', screenError) - } } else if (type === 'Field') { const { id, @@ -64,7 +60,9 @@ export const updateActiveItemFn = async ( description, isPartOfMultiset, fieldSettings, - fieldType + fieldType, + isRequired, + isHidden } = currentActiveItem ? (currentActiveItem.data as FormSystemField) : (activeItem.data as FormSystemField) @@ -72,13 +70,14 @@ export const updateActiveItemFn = async ( variables: { input: { id: id, - fieldUpdateDto: { - id, + updateFieldDto: { name, description, isPartOfMultiset, fieldSettings, fieldType, + isRequired: isRequired ? isRequired : false, + isHidden: isHidden ? isHidden : false, }, }, }, diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index 73f6d9db3725..6ae5f4965267 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -2,7 +2,7 @@ import { ApolloCache, DefaultContext, MutationFunctionOptions, OperationVariables } from "@apollo/client" import { ControlState } from "../../hooks/controlReducer" -export const updateDnd = ( +export const updateDnd = async ( control: ControlState, updateSectionDisplayOrder: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>, updateScreenDisplayOrder: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>, diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts index 81b7a473aecd..1682a8b702b4 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { OperationVariables, ApolloCache, DefaultContext, MutationFunctionOptions } from "@apollo/client" import { FormSystemForm } from "@island.is/api/schema" import { ControlState } from "../../hooks/controlReducer" diff --git a/libs/portals/admin/form-system/src/module.tsx b/libs/portals/admin/form-system/src/module.tsx index ea379b12b0e0..bde64e74ce60 100644 --- a/libs/portals/admin/form-system/src/module.tsx +++ b/libs/portals/admin/form-system/src/module.tsx @@ -1,17 +1,15 @@ import { lazy } from 'react' import { AdminPortalScope } from '@island.is/auth/scopes' -import { m } from './lib/messages' import { PortalModule } from '@island.is/portals/core' import { FormSystemPaths } from './lib/paths' import { formsLoader } from './screens/Forms/Forms.loader' import { formLoader } from './screens/Form/Form.loader' +import { m } from '@island.is/form-system/ui' const Forms = lazy(() => import('./screens/Forms/Forms')) const Form = lazy(() => import('./screens/Form/Form')) -const Application = lazy(() => import('./screens/Application/Application')) - const allowedScopes: string[] = [ AdminPortalScope.formSystem, AdminPortalScope.formSystemSuperUser, @@ -35,11 +33,6 @@ export const formSystemModule: PortalModule = { path: FormSystemPaths.Form, element: <Form />, loader: formLoader(props), - }, - { - name: m.rootName, - path: FormSystemPaths.FormApplications, - element: <Application />, } ] }, diff --git a/libs/portals/admin/form-system/src/screens/Application/Application.tsx b/libs/portals/admin/form-system/src/screens/Application/Application.tsx deleted file mode 100644 index d5a2692b8919..000000000000 --- a/libs/portals/admin/form-system/src/screens/Application/Application.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { useAuth } from "@island.is/auth/react" -import { useLocale, useLocalizedQuery } from "@island.is/localization" -import { Params, useNavigate, useParams } from "react-router-dom" -import { CREATE_APPLICATION } from "@island.is/form-system/graphql" -import { useMutation } from "@apollo/client" -import { useEffect } from "react" - -export const Application = () => { - const { userInfo } = useAuth() - - const { formatMessage } = useLocale() - const navigate = useNavigate() - const nationalId = userInfo?.profile?.nationalId - - const { slug } = useParams() as Params - - if (!nationalId) { - return - } - - const [createApplication] = useMutation(CREATE_APPLICATION) - - useEffect(() => { - const fetchApplication = async () => { - try { - const { data } = await createApplication({ - variables: { - input: { - slug - } - } - }) - //navigate(`../${slug}/${data?.formGuid}`) - console.log(data) - } catch (e) { - console.error(e) - } - } - fetchApplication() - }, []) - - - - return <>HOHO</> -} - -export default Application diff --git a/libs/portals/admin/form-system/src/screens/Applications/Applications.tsx b/libs/portals/admin/form-system/src/screens/Applications/Applications.tsx deleted file mode 100644 index 869eb19e72bb..000000000000 --- a/libs/portals/admin/form-system/src/screens/Applications/Applications.tsx +++ /dev/null @@ -1,6 +0,0 @@ - - -export const Applications = () => { - - return <>HOHOHO</> -} diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts index 45c4ea4ffab5..6177c0b61386 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Form/Form.loader.ts @@ -26,7 +26,6 @@ export const formLoader: WrappedLoaderFn = ({ client }) => { }, }, }) - console.log(data) if (!loading && !data) { throw new Error('No form data found') } diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index 48740c1965ef..c4b150bd39be 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -13,7 +13,6 @@ export const Form = () => { if (!form || !formBuilder) { return <div>Loading...</div> } - console.log('Form', form) return ( <FormProvider formBuilder={formBuilder}> <FormLayout /> diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index e3d4a3f2c0fa..ef766db23e4b 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -31,7 +31,6 @@ export const Forms = () => { const { data } = await formSystemCreateFormMutation({ variables: { input: { organizationId: 'a4b0db68-e169-416a-8ad9-e46b73ce2d39' } }, }) - console.log('createForm', data) navigate( FormSystemPaths.Form.replace( ':formId', @@ -53,7 +52,6 @@ export const Forms = () => { <TableRow isHeader={true} /> {forms && forms?.map((f) => { - console.log(f) return ( <TableRow key={f?.id} diff --git a/libs/portals/form-system/graphql/src/lib/fragments/applicant.ts b/libs/portals/form-system/graphql/src/lib/fragments/applicant.ts index 1b0d6b536cf1..4638e875992d 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/applicant.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/applicant.ts @@ -4,10 +4,16 @@ import { LanguageFields } from './languageFields' export const ApplicantFragment = gql` fragment Applicant on FormSystemApplicant { id - applicantType + description { + ...LanguageFields + } + applicantTypeId name { ...LanguageFields } + nameSuggestions { + ...LanguageFields + } } ${LanguageFields} ` diff --git a/libs/portals/form-system/graphql/src/lib/fragments/certificateType.ts b/libs/portals/form-system/graphql/src/lib/fragments/certificateType.ts index 8bc1916f28e5..890eaa25ce10 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/certificateType.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/certificateType.ts @@ -10,7 +10,9 @@ export const CertificateTypeFragment = gql` description { ...LanguageFields } - type + isCommon + certificationTypeId + organizationCertificationId } ${LanguageFields} ` diff --git a/libs/portals/form-system/graphql/src/lib/fragments/dependency.ts b/libs/portals/form-system/graphql/src/lib/fragments/dependency.ts index 651343662182..ad27f6c54672 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/dependency.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/dependency.ts @@ -4,5 +4,6 @@ export const DependencyFragment = gql` fragment Dependency on FormSystemDependency { parentProp childProps + isSelected } ` diff --git a/libs/portals/form-system/graphql/src/lib/fragments/field.ts b/libs/portals/form-system/graphql/src/lib/fragments/field.ts index 110ea92ded4a..3edeec5b6311 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/field.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/field.ts @@ -1,6 +1,8 @@ import { gql } from '@apollo/client' import { LanguageFields } from './languageFields' import { FieldSettingsFragment } from './fieldSettings' +import { ListItemFragment } from './listItem' +import { ValueDtoFragment } from './value' export const FieldFragment = gql` fragment Field on FormSystemField { @@ -17,8 +19,17 @@ export const FieldFragment = gql` ...FieldSettings } fieldType + list { + ...ListItem + } + values { + ...ValueDto + } isRequired + isHidden } + ${ValueDtoFragment} + ${ListItemFragment} ${LanguageFields} ${FieldSettingsFragment} ` diff --git a/libs/portals/form-system/graphql/src/lib/fragments/fieldType.ts b/libs/portals/form-system/graphql/src/lib/fragments/fieldType.ts index ee13468c6067..656d0a0cf98c 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/fieldType.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/fieldType.ts @@ -5,7 +5,6 @@ import { LanguageFields } from './languageFields' export const FieldTypeFragment = gql` fragment FieldType on FormSystemFieldType { id - type name { ...LanguageFields } @@ -16,6 +15,9 @@ export const FieldTypeFragment = gql` fieldSettings { ...FieldSettings } + values { + ...Value + } } ${LanguageFields} ${FieldSettingsFragment} diff --git a/libs/portals/form-system/graphql/src/lib/fragments/form.ts b/libs/portals/form-system/graphql/src/lib/fragments/form.ts index f13c4769cb1b..3e21b5e4bff6 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/form.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/form.ts @@ -1,6 +1,5 @@ import { gql } from '@apollo/client' import { LanguageFields } from './languageFields' -import { CertificateTypeFragment } from './certificateType' import { FieldFragment } from './field' import { ScreenFragment } from './screen' import { SectionFragment } from './section' @@ -26,9 +25,10 @@ export const FormFragment = gql` ...LanguageFields } certificationTypes { - ...CertificateType + id + certificationTypeId } - applicants { + applicantTypes { ...FormApplicant } sections { @@ -45,7 +45,6 @@ export const FormFragment = gql` } } ${LanguageFields} - ${CertificateTypeFragment} ${FormApplicantFragment} ${SectionFragment} ${ScreenFragment} diff --git a/libs/portals/form-system/graphql/src/lib/fragments/formApplicant.ts b/libs/portals/form-system/graphql/src/lib/fragments/formApplicant.ts index cba98be731c9..df1b3acc68c1 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/formApplicant.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/formApplicant.ts @@ -4,10 +4,16 @@ import { LanguageFields } from './languageFields' export const FormApplicantFragment = gql` fragment FormApplicant on FormSystemFormApplicant { id - applicantType + description { + ...LanguageFields + } + applicantTypeId name { ...LanguageFields } + nameSuggestions { + ...LanguageFields + } } ${LanguageFields} ` diff --git a/libs/portals/form-system/graphql/src/lib/fragments/formResponse.ts b/libs/portals/form-system/graphql/src/lib/fragments/formResponse.ts index a7047fc2a2b9..73f69d3c933d 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/formResponse.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/formResponse.ts @@ -3,6 +3,7 @@ import { FormFragment } from './form' import { FieldTypeFragment } from './fieldType' import { CertificateTypeFragment } from './certificateType' import { ListTypeFragment } from './listType' +import { FormApplicantFragment } from './formApplicant' export const FormResponseFragment = gql` fragment FormResponse on FormSystemFormResponse { @@ -15,6 +16,9 @@ export const FormResponseFragment = gql` certificationTypes { ...CertificateType } + applicantTypes { + ...FormApplicant + } listTypes { ...ListType } @@ -22,6 +26,7 @@ export const FormResponseFragment = gql` ...Form } } + ${FormApplicantFragment} ${FormFragment} ${FieldTypeFragment} ${CertificateTypeFragment} diff --git a/libs/portals/form-system/graphql/src/lib/fragments/value.ts b/libs/portals/form-system/graphql/src/lib/fragments/value.ts new file mode 100644 index 000000000000..cb9f27bec570 --- /dev/null +++ b/libs/portals/form-system/graphql/src/lib/fragments/value.ts @@ -0,0 +1,37 @@ +import { gql } from '@apollo/client' + +export const ValueFragment = gql` + fragment Value on FormSystemValue { + text + number + date + kennitala + name + address + postalCode + municipality + jobTitle + altName + homestayNumber + totalDays + totalAmount + year + isNullReport + months { + month + amount + days + } + } +` + +export const ValueDtoFragment = gql` + fragment ValueDto on FormSystemValueDto { + id + order + json { + ...Value + } + } + ${ValueFragment} +` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/createCertification.ts b/libs/portals/form-system/graphql/src/lib/mutations/createCertification.ts new file mode 100644 index 000000000000..3e178b727702 --- /dev/null +++ b/libs/portals/form-system/graphql/src/lib/mutations/createCertification.ts @@ -0,0 +1,10 @@ +import { gql } from '@apollo/client' + +export const CREATE_CERTIFICATION = gql` + mutation FormSystemCreateCertification($input: FormSystemCreateCertificationInput!) { + formSystemCreateCertification(input: $input) { + id + certificationTypeId + } +} +` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/deleteCertification.ts b/libs/portals/form-system/graphql/src/lib/mutations/deleteCertification.ts new file mode 100644 index 000000000000..fe6303c2d125 --- /dev/null +++ b/libs/portals/form-system/graphql/src/lib/mutations/deleteCertification.ts @@ -0,0 +1,7 @@ +import { gql } from '@apollo/client' + +export const DELETE_CERTIFICATION = gql` + mutation FormSystemDeleteCertification($input: FormSystemDeleteCertificationInput!) { + formSystemDeleteCertification(input: $input) + } +` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/index.ts b/libs/portals/form-system/graphql/src/lib/mutations/index.ts index 301ca38f1152..8d2ad520845c 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/index.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/index.ts @@ -22,4 +22,6 @@ export { UPDATE_FORM } from './updateForm' export { CREATE_APPLICANT } from './createApplicant' export { DELETE_APPLICANT } from './deleteApplicant' export { UPDATE_APPLICANT } from './updateApplicant' +export { CREATE_CERTIFICATION } from './createCertification' +export { DELETE_CERTIFICATION } from './deleteCertification' diff --git a/libs/portals/form-system/graphql/src/lib/mutations/updateField.ts b/libs/portals/form-system/graphql/src/lib/mutations/updateField.ts index 10236cfe65f7..bb52ae261bc7 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/updateField.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/updateField.ts @@ -1,7 +1,7 @@ import { gql } from '@apollo/client' export const UPDATE_FIELD = gql` - mutation UpdateField($input: UpdateFieldInput!) { - updateField(input: $input) + mutation FormSystemUpdateField($input: FormSystemUpdateFieldInput!) { + formSystemUpdateField(input: $input) } ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/updateListItemDisplayOrder.ts b/libs/portals/form-system/graphql/src/lib/mutations/updateListItemDisplayOrder.ts index 81276dd188a4..2261cd3a251b 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/updateListItemDisplayOrder.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/updateListItemDisplayOrder.ts @@ -1,9 +1,9 @@ import { gql } from '@apollo/client' export const UPDATE_LIST_ITEM_DISPLAY_ORDER = gql` - mutation FormSystemUpdateListItemDisplayOrder( - $input: FormSystemUpdateListItemDisplayOrderInput! + mutation FormSystemUpdateListItemsDisplayOrder( + $input: FormSystemUpdateListItemsDisplayOrderInput! ) { - formSystemUpdateListItemDisplayOrder(input: $input) + formSystemUpdateListItemsDisplayOrder(input: $input) } ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/updateSectionDisplayOrder.ts b/libs/portals/form-system/graphql/src/lib/mutations/updateSectionDisplayOrder.ts index 58df32199243..61ee3583e342 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/updateSectionDisplayOrder.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/updateSectionDisplayOrder.ts @@ -2,7 +2,7 @@ import { gql } from '@apollo/client' export const UPDATE_SECTION_DISPLAY_ORDER = gql` mutation FormSystemUpdateSectionsDisplayOrder( - $input: FormSystemUpdateSectionsDisplayOrderDtoInput! + $input: FormSystemUpdateSectionsDisplayOrderInput! ) { formSystemUpdateSectionsDisplayOrder(input: $input) } diff --git a/libs/portals/form-system/ui-components/jest.config.ts b/libs/portals/form-system/ui-components/jest.config.ts index 3117010b42ca..f67f6d4938cb 100644 --- a/libs/portals/form-system/ui-components/jest.config.ts +++ b/libs/portals/form-system/ui-components/jest.config.ts @@ -1,21 +1,12 @@ /* eslint-disable */ export default { -<<<<<<<< HEAD:libs/portals/form-system/ui-components/jest.config.ts displayName: 'portals-form-system-ui-components', preset: '../../../../jest.preset.js', -======== - displayName: 'financial-statement-cemetery', - preset: '../../../../../jest.preset.js', ->>>>>>>> dd03c10c0a65f67627212406bfd78261dec7d631:libs/application/templates/inao/financial-statement-cemetery/jest.config.ts transform: { '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }], }, moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], coverageDirectory: -<<<<<<<< HEAD:libs/portals/form-system/ui-components/jest.config.ts '../../../../coverage/libs/portals/form-system/ui-components', -======== - '../../../../../coverage/libs/application/templates/inao/financial-statement-cemetery', ->>>>>>>> dd03c10c0a65f67627212406bfd78261dec7d631:libs/application/templates/inao/financial-statement-cemetery/jest.config.ts } diff --git a/libs/portals/form-system/ui-components/project.json b/libs/portals/form-system/ui-components/project.json index 9a4eea16e778..3d0a924ea072 100644 --- a/libs/portals/form-system/ui-components/project.json +++ b/libs/portals/form-system/ui-components/project.json @@ -3,17 +3,22 @@ "$schema": "../../../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "libs/portals/form-system/ui-components/src", "projectType": "library", - "tags": [], "targets": { "lint": { "executor": "@nx/eslint:lint" }, "test": { "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "outputs": [ + "{workspaceRoot}/coverage/{projectRoot}" + ], "options": { "jestConfig": "libs/portals/form-system/ui-components/jest.config.ts" } } - } -} + }, + "tags": [ + "lib:form-system", + "scope:form-system" + ] +} \ No newline at end of file diff --git a/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/HomestayOverview.tsx b/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/HomestayOverview.tsx index 1ea963b06c29..3f57679312af 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/HomestayOverview.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/HomestayOverview.tsx @@ -23,7 +23,7 @@ interface YearOption { label: string } -export const HomestayOverview: React.FC = () => { +export const HomestayOverview = () => { const { formatMessage } = useIntl() const datePickerRef = useRef(null) const currentYear = new Date().getFullYear() diff --git a/libs/portals/form-system/ui-components/src/components/field-components/List/List.tsx b/libs/portals/form-system/ui-components/src/components/field-components/List/List.tsx index bb712c839e68..ccca852eef43 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/List/List.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/List/List.tsx @@ -27,6 +27,7 @@ export const List = ({ item }: Props) => { value: item?.label?.is ?? '' })) ?? [] + console.log('item', item) return ( <Select name="list" diff --git a/libs/portals/form-system/ui-components/src/components/field-components/Radio/Radio.tsx b/libs/portals/form-system/ui-components/src/components/field-components/Radio/Radio.tsx index 71e215274dcb..90b1120a914d 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/Radio/Radio.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/Radio/Radio.tsx @@ -7,7 +7,7 @@ interface Props { } export const Radio = ({ item }: Props) => { - const radioButtons = item.fieldSettings?.list as FormSystemListItem[] + const radioButtons = item.list as FormSystemListItem[] const [radioChecked, setRadioChecked] = useState<boolean[]>([]) useEffect(() => { diff --git a/libs/portals/form-system/ui-components/src/components/form-stepper/formStepper.tsx b/libs/portals/form-system/ui-components/src/components/form-stepper/formStepper.tsx new file mode 100644 index 000000000000..16e246f58e3a --- /dev/null +++ b/libs/portals/form-system/ui-components/src/components/form-stepper/formStepper.tsx @@ -0,0 +1,29 @@ +import { FormStepperV2, Section, Text } from '@island.is/island-ui/core' +import { FormSystemSection } from '@island.is/api/schema' + +interface Props { + sections: FormSystemSection[] +} + +export const FormStepper = ({ sections }: Props) => { + + const currentSection = sections.find(section => section.isCompleted === false || section.isCompleted === null) + const currentScreen = currentSection?.screens?.find(screen => screen) + + return ( + <FormStepperV2 + sections={sections.map((section, sectionIndex) => + <Section + sectionIndex={sectionIndex} + section={section?.name?.is ?? ''} + isComplete={section?.isCompleted ?? false} + isActive={section.id === currentSection?.id} + subSections={section?.screens?.map((screen, screenIndex) => { + return ( + <Text key={screenIndex} > {screen?.name?.is ?? ''}</Text > + ) + })} + />)} + /> + ) +} diff --git a/libs/portals/form-system/ui-components/src/components/index.ts b/libs/portals/form-system/ui-components/src/components/index.ts index 7fb7f711e76f..37c242dd81dd 100644 --- a/libs/portals/form-system/ui-components/src/components/index.ts +++ b/libs/portals/form-system/ui-components/src/components/index.ts @@ -1 +1,2 @@ export * from './field-components' +export * from './form-stepper/formStepper' diff --git a/libs/portals/form-system/ui-components/src/lib/enums.ts b/libs/portals/form-system/ui-components/src/lib/enums.ts new file mode 100644 index 000000000000..ce65076e7af0 --- /dev/null +++ b/libs/portals/form-system/ui-components/src/lib/enums.ts @@ -0,0 +1,90 @@ +export const FieldTypesEnum = { + TEXTBOX: 'b6a7e297-22fd-4426-a4e1-04a11a2e8914', + EMAIL: 'd6c292c7-4e7c-44a6-bb7e-b956122598b0', + PROPERTY_NUMBER: 'ff7f8580-0419-4f07-9551-fc407d6fb796', + ISK_NUMBERBOX: 'f806a35b-12c9-4d24-8845-024f77e077f7', + CHECKBOX: '1955db2d-c1e3-42ed-b6c5-a668c6136e38', + DATE_PICKER: '720fb3a3-6a85-456e-8173-b5913e219dc5', + NUMBERBOX: 'eee2840d-a26f-4e9b-a21b-e4478c09e546', + PAYER: 'cd73ebb6-6573-490a-9bd1-1e693a9229eb', + NATIONAL_ID_ESTATE: '15a57466-0be3-451d-988d-5b807fea3459', + PHONE_NUMBER: 'ac3fa8a0-9258-49d1-aff2-1dacf31538f0', + MESSAGE: '16603815-3db5-4aec-9bc7-56c1207bb79f', + RADIO_BUTTONS: 'dc50f154-0dfa-4597-80b8-6f3d9ebc36b1', + DOCUMENT: '6a616adc-80ab-47c1-8037-1d9a8dc68a5c', + BANK_ACCOUNT: '94819d53-69b6-464b-abda-3bb6299d2511', + NATIONAL_ID: '6df647aa-27c8-48b1-8ac9-05e8b4251892', + HOMESTAY_NUMBER: 'f1d14fe1-9e70-4ab2-8f95-8a06a9cf9f48', + ISK_SUMBOX: '0e104698-4e58-4874-97a2-a8fd8d3ab7c4', + DROPDOWN_LIST: '1f56b93b-8290-4409-8fe0-1b297338e672', + NATIONAL_ID_ALL: '7cbbe78f-cd5f-4fb9-a77c-86af2bf986b1', + TIME_INPUT: '83f6f77d-1ca7-4f99-8806-05cec59a48e4', + HOMESTAY_OVERVIEW: 'cdd63941-ff33-49d1-8b23-0293e413a281', + PAYMENT: 'd4143c45-6d45-4052-93c6-42d46572a874', + CANDIDATE: '0420775e-ab81-47fc-85af-6c40be3844ac', +} as const + +export const CertificationTypesEnum = { + ESTATE_GUARDIANSHIP_CERTIFICATE_STAMPED: + '329e9b75-62a6-41af-a1cb-2052d26ac31b', + ESTATE_GUARDIANSHIP_CERTIFICATE_UNSTAMPED: + '37b8a86e-5787-4007-be40-d3f7b0070cca', + RESIDENCE_CERTIFICATE: 'fa035b40-4324-4140-8747-d163ef645b28', + INDEBTEDNESS_CERTIFICATE: '5ec5b516-a152-4761-b0e0-ba5aa4ffae61', + CRIMINAL_RECORD_STAMPED: 'b3f37a69-2700-45f5-88e6-03fc09fcf6cc', + CRIMINAL_RECORD_UNSTAMPED: '72127323-56f3-40ff-8ae4-68c20e80ff37', +} as const + +export const ApplicantTypesEnum = { + INDIVIDUAL: 'd999c588-19b4-4254-9c5d-4dcc6e817e50', + INDIVIDUAL_WITH_DELEGATION_FROM_INDIVIDUAL: + 'a46a5bb8-7f24-4767-abf7-13b6a3b24be8', + INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY: + 'a9a16cf0-349b-4a7c-b174-4fa608d463ef', + INDIVIDUAL_WITH_PROCURATION: '7f815b3d-3ce0-4cfc-86c0-66066c20f479', + INDIVIDUAL_GIVING_DELEGATION: '4dbe615a-84bd-4a38-9f97-0a574c05f807', + LEGAL_ENTITY: 'df099315-b101-4b43-b7dc-8de5f6aa2e21', +} as const + +export const ListTypesEnum = { + CUSTOM: '9e1600f7-7d25-4997-9e8d-16e6d15cd901', + MUNICIPALITIES: '2cd6cda1-ab72-4746-bb38-16b95b89ae75', + COUNTRIES: '1df24f32-1481-4775-81eb-0cf0a5eb9328', + POSTAL_CODES: '7aa0396f-2574-40cb-8ea4-299a5b62b22d', + MASTERS_TRADES: '7bfc3703-af37-455b-b9a1-8b612f46184b', + REGISTRATION_CATEGORIES_OF_ACTIVITIES: 'f50779b3-464c-42e3-9cc3-8914886f9bf7', +} as const + +export const SectionTypes = { + PREMISES: 'premises', + PARTIES: 'parties', + INPUT: 'input', + PAYMENT: 'payment', +} as const + +export const UrlMethods = { + SEND_TO_ZENDESK: '4c277cc4-ed10-44fd-8847-7b35a11d0b73', + SEND_NUDGE: 'eab969e7-80b6-4775-b669-c337e850e814', + SEND_DATA: '3d11b2fd-1d0c-421c-b32a-d5cf0ac83ec1', +} as const + +export const UrlTypes = { + DATA: '11251c06-b514-4fdd-b485-c7ce1c71e6c1', + VALIDATION: '4ff8aaeb-e2db-46de-93bc-73572aba588a', +} as const + +export const ApplicationStatus = { + IN_PROGRESS: 'ee2545cc-b27f-4d75-bc82-b57f9d10c1b3', + DONE: '385bbb3d-8dd6-4725-9f9c-90effc070de2', + SENT_IN: '22b3ab87-4d42-4987-b6fe-33abcf05f112', + ALL_DATA_HAS_BEEN_RECIEVED_BY_ORGANIZATION: 'ec63e29f-4c9f-4dc4-8e05-68956d3e1453', +} as const + +export type FieldTypesEnum = typeof FieldTypesEnum[keyof typeof FieldTypesEnum] +export type CertificationTypesEnum = typeof CertificationTypesEnum[keyof typeof CertificationTypesEnum] +export type ApplicantTypesEnum = typeof ApplicantTypesEnum[keyof typeof ApplicantTypesEnum] +export type ListTypesEnum = typeof ListTypesEnum[keyof typeof ListTypesEnum] +export type SectionTypes = typeof SectionTypes[keyof typeof SectionTypes] +export type UrlMethods = typeof UrlMethods[keyof typeof UrlMethods] +export type UrlTypes = typeof UrlTypes[keyof typeof UrlTypes] +export type ApplicationStatus = typeof ApplicationStatus[keyof typeof ApplicationStatus] diff --git a/libs/portals/form-system/ui-components/src/lib/index.ts b/libs/portals/form-system/ui-components/src/lib/index.ts index a4ecab2f8e03..dfcd0a6f468b 100644 --- a/libs/portals/form-system/ui-components/src/lib/index.ts +++ b/libs/portals/form-system/ui-components/src/lib/index.ts @@ -1 +1,2 @@ export { m } from './messages' +export * from './enums' diff --git a/libs/portals/form-system/ui-components/tsconfig.lib.json b/libs/portals/form-system/ui-components/tsconfig.lib.json index 33f4bca7ceab..038d2d844c31 100644 --- a/libs/portals/form-system/ui-components/tsconfig.lib.json +++ b/libs/portals/form-system/ui-components/tsconfig.lib.json @@ -8,13 +8,6 @@ // "@nx/react/typings/image.d.ts" ] }, -<<<<<<<< HEAD:libs/portals/form-system/ui-components/tsconfig.lib.json -======== - "files": [ - "../../../../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../../../../node_modules/@nx/react/typings/image.d.ts" - ], ->>>>>>>> dd03c10c0a65f67627212406bfd78261dec7d631:libs/application/templates/inao/financial-statement-cemetery/tsconfig.lib.json "exclude": [ "jest.config.ts", "src/**/*.spec.ts", diff --git a/tsconfig.base.json b/tsconfig.base.json index f366622239e9..bf4288c59dbf 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -32,15 +32,21 @@ "@island.is/api/domains/aircraft-registry": [ "libs/api/domains/aircraft-registry/src/index.ts" ], - "@island.is/api/domains/aosh": ["libs/api/domains/aosh/src/index.ts"], + "@island.is/api/domains/aosh": [ + "libs/api/domains/aosh/src/index.ts" + ], "@island.is/api/domains/api-catalogue": [ "libs/api/domains/api-catalogue/src/index.ts" ], "@island.is/api/domains/application": [ "libs/api/domains/application/src/index.ts" ], - "@island.is/api/domains/assets": ["libs/api/domains/assets/src/index.ts"], - "@island.is/api/domains/auth": ["libs/api/domains/auth/src/index.ts"], + "@island.is/api/domains/assets": [ + "libs/api/domains/assets/src/index.ts" + ], + "@island.is/api/domains/auth": [ + "libs/api/domains/auth/src/index.ts" + ], "@island.is/api/domains/auth-admin": [ "libs/api/domains/auth-admin/src/index.ts" ], @@ -245,9 +251,15 @@ "@island.is/api/domains/work-machines": [ "libs/api/domains/work-machines/src/index.ts" ], - "@island.is/api/mocks": ["libs/api/mocks/src/index.ts"], - "@island.is/api/mocks-react": ["libs/api/mocks/src/react.ts"], - "@island.is/api/schema": ["libs/api/schema/src/index.ts"], + "@island.is/api/mocks": [ + "libs/api/mocks/src/index.ts" + ], + "@island.is/api/mocks-react": [ + "libs/api/mocks/src/react.ts" + ], + "@island.is/api/schema": [ + "libs/api/schema/src/index.ts" + ], "@island.is/application/api/core": [ "libs/application/api/core/src/index.ts" ], @@ -260,7 +272,9 @@ "@island.is/application/api/payment": [ "libs/application/api/payment/src/index.ts" ], - "@island.is/application/core": ["libs/application/core/src/index.ts"], + "@island.is/application/core": [ + "libs/application/core/src/index.ts" + ], "@island.is/application/core/messages": [ "libs/application/core/src/lib/messages.ts" ], @@ -552,7 +566,9 @@ "@island.is/application/testing": [ "libs/application/testing/src/index.ts" ], - "@island.is/application/types": ["libs/application/types/src/index.ts"], + "@island.is/application/types": [ + "libs/application/types/src/index.ts" + ], "@island.is/application/ui-components": [ "libs/application/ui-components/src/index.ts" ], @@ -565,13 +581,27 @@ "@island.is/application/ui-shell": [ "libs/application/ui-shell/src/index.ts" ], - "@island.is/application/utils": ["libs/application/utils/src/index.ts"], - "@island.is/auth-api-lib": ["libs/auth-api-lib/src/index.ts"], - "@island.is/auth-nest-tools": ["libs/auth-nest-tools/src/index.ts"], - "@island.is/auth/react": ["libs/auth/react/src/index.ts"], - "@island.is/auth/scopes": ["libs/auth/scopes/src/index.ts"], - "@island.is/auth/shared": ["libs/auth/shared/src/index.ts"], - "@island.is/cache": ["libs/cache/src/index.ts"], + "@island.is/application/utils": [ + "libs/application/utils/src/index.ts" + ], + "@island.is/auth-api-lib": [ + "libs/auth-api-lib/src/index.ts" + ], + "@island.is/auth-nest-tools": [ + "libs/auth-nest-tools/src/index.ts" + ], + "@island.is/auth/react": [ + "libs/auth/react/src/index.ts" + ], + "@island.is/auth/scopes": [ + "libs/auth/scopes/src/index.ts" + ], + "@island.is/auth/shared": [ + "libs/auth/shared/src/index.ts" + ], + "@island.is/cache": [ + "libs/cache/src/index.ts" + ], "@island.is/clients-rsk-relationships": [ "libs/clients/rsk/relationships/src/index.ts" ], @@ -593,7 +623,9 @@ "@island.is/clients/aosh/transfer-of-machine-ownership": [ "libs/clients/aosh/transfer-of-machine-ownership/src/index.ts" ], - "@island.is/clients/assets": ["libs/clients/assets/src/index.ts"], + "@island.is/clients/assets": [ + "libs/clients/assets/src/index.ts" + ], "@island.is/clients/auth/admin-api": [ "libs/clients/auth/admin-api/src/index.ts" ], @@ -612,7 +644,9 @@ "@island.is/clients/charge-fjs-v2": [ "libs/clients/charge-fjs-v2/src/index.ts" ], - "@island.is/clients/cms": ["libs/clients/cms/src/index.ts"], + "@island.is/clients/cms": [ + "libs/clients/cms/src/index.ts" + ], "@island.is/clients/consultation-portal": [ "libs/clients/consultation-portal/src/index.ts" ], @@ -631,11 +665,15 @@ "@island.is/clients/district-commissioners-licenses": [ "libs/clients/district-commissioners-licenses/src/index.ts" ], - "@island.is/clients/dmr": ["libs/clients/dmr/src/index.ts"], + "@island.is/clients/dmr": [ + "libs/clients/dmr/src/index.ts" + ], "@island.is/clients/document-provider": [ "libs/clients/document-provider/src/index.ts" ], - "@island.is/clients/documents": ["libs/clients/documents/src/index.ts"], + "@island.is/clients/documents": [ + "libs/clients/documents/src/index.ts" + ], "@island.is/clients/documents-v2": [ "libs/clients/documents-v2/src/index.ts" ], @@ -654,8 +692,12 @@ "@island.is/clients/energy-funds": [ "libs/clients/energy-funds/src/index.ts" ], - "@island.is/clients/finance": ["libs/clients/finance/src/index.ts"], - "@island.is/clients/finance-v2": ["libs/clients/finance-v2/src/index.ts"], + "@island.is/clients/finance": [ + "libs/clients/finance/src/index.ts" + ], + "@island.is/clients/finance-v2": [ + "libs/clients/finance-v2/src/index.ts" + ], "@island.is/clients/financial-statements-inao": [ "libs/clients/financial-statements-inao/src/index.ts" ], @@ -665,7 +707,9 @@ "@island.is/clients/fishing-license": [ "libs/clients/fishing-license/src/index.ts" ], - "@island.is/clients/fiskistofa": ["libs/clients/fiskistofa/src/index.ts"], + "@island.is/clients/fiskistofa": [ + "libs/clients/fiskistofa/src/index.ts" + ], "@island.is/clients/form-system": [ "libs/clients/form-system/src/index.ts" ], @@ -675,7 +719,9 @@ "@island.is/clients/hms-housing-benefits": [ "libs/clients/hms-housing-benefits/src/index.ts" ], - "@island.is/clients/hms-loans": ["libs/clients/hms-loans/src/index.ts"], + "@island.is/clients/hms-loans": [ + "libs/clients/hms-loans/src/index.ts" + ], "@island.is/clients/housing-benefit-calculator": [ "libs/clients/housing-benefit-calculator/src/index.ts" ], @@ -691,12 +737,18 @@ "@island.is/clients/icelandic-health-insurance/rights-portal": [ "libs/clients/icelandic-health-insurance/rights-portal/src/index.ts" ], - "@island.is/clients/identity": ["libs/clients/identity/src/index.ts"], - "@island.is/clients/inna": ["libs/clients/inna/src/index.ts"], + "@island.is/clients/identity": [ + "libs/clients/identity/src/index.ts" + ], + "@island.is/clients/inna": [ + "libs/clients/inna/src/index.ts" + ], "@island.is/clients/intellectual-properties": [ "libs/clients/intellectual-properties/src/index.ts" ], - "@island.is/clients/islykill": ["libs/clients/islykill/src/index.ts"], + "@island.is/clients/islykill": [ + "libs/clients/islykill/src/index.ts" + ], "@island.is/clients/judicial-administration": [ "libs/clients/judicial-administration/src/index.ts" ], @@ -709,9 +761,15 @@ "@island.is/clients/middlewares": [ "libs/clients/middlewares/src/index.ts" ], - "@island.is/clients/mms": ["libs/clients/mms/general/src/index.ts"], - "@island.is/clients/mms/frigg": ["libs/clients/mms/frigg/src/index.ts"], - "@island.is/clients/mms/grade": ["libs/clients/mms/grade/src/index.ts"], + "@island.is/clients/mms": [ + "libs/clients/mms/general/src/index.ts" + ], + "@island.is/clients/mms/frigg": [ + "libs/clients/mms/frigg/src/index.ts" + ], + "@island.is/clients/mms/grade": [ + "libs/clients/mms/grade/src/index.ts" + ], "@island.is/clients/municipalities-financial-aid": [ "libs/clients/municipalities-financial-aid/src/index.ts" ], @@ -730,8 +788,12 @@ "@island.is/clients/official-journal-of-iceland/application": [ "libs/clients/official-journal-of-iceland/application/src/index.ts" ], - "@island.is/clients/p-card": ["libs/clients/p-card/src/index.ts"], - "@island.is/clients/passports": ["libs/clients/passports/src/index.ts"], + "@island.is/clients/p-card": [ + "libs/clients/p-card/src/index.ts" + ], + "@island.is/clients/passports": [ + "libs/clients/passports/src/index.ts" + ], "@island.is/clients/payment-schedule": [ "libs/clients/payment-schedule/src/index.ts" ], @@ -747,7 +809,9 @@ "@island.is/clients/rsk/personal-tax-return": [ "libs/clients/rsk/personal-tax-return/src/index.ts" ], - "@island.is/clients/sessions": ["libs/clients/sessions/src/index.ts"], + "@island.is/clients/sessions": [ + "libs/clients/sessions/src/index.ts" + ], "@island.is/clients/ship-registry": [ "libs/clients/ship-registry/src/index.ts" ], @@ -763,8 +827,12 @@ "@island.is/clients/social-insurance-administration": [ "libs/clients/social-insurance-administration/src/index.ts" ], - "@island.is/clients/statistics": ["libs/clients/statistics/src/index.ts"], - "@island.is/clients/syslumenn": ["libs/clients/syslumenn/src/index.ts"], + "@island.is/clients/statistics": [ + "libs/clients/statistics/src/index.ts" + ], + "@island.is/clients/syslumenn": [ + "libs/clients/syslumenn/src/index.ts" + ], "@island.is/clients/transport-authority/digital-tachograph-drivers-card": [ "libs/clients/transport-authority/digital-tachograph-drivers-card/src/index.ts" ], @@ -831,24 +899,36 @@ "@island.is/clients/vehicle-service-fjs-v1": [ "libs/clients/vehicle-service-fjs-v1/src/index.ts" ], - "@island.is/clients/vehicles": ["libs/clients/vehicles/src/index.ts"], + "@island.is/clients/vehicles": [ + "libs/clients/vehicles/src/index.ts" + ], "@island.is/clients/vehicles-mileage": [ "libs/clients/vehicles-mileage/src/index.ts" ], - "@island.is/clients/vmst": ["libs/clients/vmst/src/index.ts"], + "@island.is/clients/vmst": [ + "libs/clients/vmst/src/index.ts" + ], "@island.is/clients/work-machines": [ "libs/clients/work-machines/src/index.ts" ], "@island.is/clients/workpoint/arborg": [ "libs/clients/workpoint/arborg/src/index.ts" ], - "@island.is/clients/zendesk": ["libs/clients/zendesk/src/index.ts"], - "@island.is/cms": ["libs/cms/src/index.ts"], - "@island.is/cms-translations": ["libs/cms-translations/src/index.ts"], + "@island.is/clients/zendesk": [ + "libs/clients/zendesk/src/index.ts" + ], + "@island.is/cms": [ + "libs/cms/src/index.ts" + ], + "@island.is/cms-translations": [ + "libs/cms-translations/src/index.ts" + ], "@island.is/cms-translations/test": [ "libs/cms-translations/src/test/index.ts" ], - "@island.is/consultation-portal/*": ["apps/consultation-portal/*"], + "@island.is/consultation-portal/*": [ + "apps/consultation-portal/*" + ], "@island.is/content-search-index-manager": [ "libs/content-search-index-manager/src/index.ts" ], @@ -864,11 +944,21 @@ "@island.is/content-search-toolkit": [ "libs/content-search-toolkit/src/index.ts" ], - "@island.is/dokobit-signing": ["libs/dokobit-signing/src/index.ts"], - "@island.is/email-service": ["libs/email-service/src/index.ts"], - "@island.is/feature-flags": ["libs/feature-flags/src/index.ts"], - "@island.is/file-storage": ["libs/file-storage/src/index.ts"], - "@island.is/financial-aid-web/osk/*": ["apps/financial-aid/web-osk/*"], + "@island.is/dokobit-signing": [ + "libs/dokobit-signing/src/index.ts" + ], + "@island.is/email-service": [ + "libs/email-service/src/index.ts" + ], + "@island.is/feature-flags": [ + "libs/feature-flags/src/index.ts" + ], + "@island.is/file-storage": [ + "libs/file-storage/src/index.ts" + ], + "@island.is/financial-aid-web/osk/*": [ + "apps/financial-aid/web-osk/*" + ], "@island.is/financial-aid-web/veita/*": [ "apps/financial-aid/web-veita/*" ], @@ -881,7 +971,9 @@ "@island.is/financial-aid/shared/lib": [ "libs/financial-aid/shared/src/lib/index.ts" ], - "@island.is/form-system": ["libs/portals/admin/form-system/src/index.ts"], + "@island.is/form-system": [ + "libs/portals/admin/form-system/src/index.ts" + ], "@island.is/form-system/graphql": [ "libs/portals/form-system/graphql/src/index.ts" ], @@ -894,23 +986,45 @@ "@island.is/infra-express-server": [ "libs/infra-express-server/src/index.ts" ], - "@island.is/infra-metrics": ["libs/infra-metrics/src/index.ts"], - "@island.is/infra-monitoring": ["libs/infra-monitoring/src/index.ts"], - "@island.is/infra-nest-server": ["libs/infra-nest-server/src/index.ts"], - "@island.is/infra-next-server": ["libs/infra-next-server/src/index.ts"], - "@island.is/infra-tracing": ["libs/infra-tracing/src/index.ts"], - "@island.is/island-ui-native": ["apps/native/island-ui/src/index.ts"], + "@island.is/infra-metrics": [ + "libs/infra-metrics/src/index.ts" + ], + "@island.is/infra-monitoring": [ + "libs/infra-monitoring/src/index.ts" + ], + "@island.is/infra-nest-server": [ + "libs/infra-nest-server/src/index.ts" + ], + "@island.is/infra-next-server": [ + "libs/infra-next-server/src/index.ts" + ], + "@island.is/infra-tracing": [ + "libs/infra-tracing/src/index.ts" + ], + "@island.is/island-ui-native": [ + "apps/native/island-ui/src/index.ts" + ], "@island.is/island-ui/contentful": [ "libs/island-ui/contentful/src/index.ts" ], - "@island.is/island-ui/core": ["libs/island-ui/core/src/index.ts"], - "@island.is/island-ui/core/types": ["libs/island-ui/core/types.ts"], - "@island.is/island-ui/theme": ["libs/island-ui/theme/src/index.ts"], - "@island.is/island-ui/utils": ["libs/island-ui/utils/src/index.ts"], + "@island.is/island-ui/core": [ + "libs/island-ui/core/src/index.ts" + ], + "@island.is/island-ui/core/types": [ + "libs/island-ui/core/types.ts" + ], + "@island.is/island-ui/theme": [ + "libs/island-ui/theme/src/index.ts" + ], + "@island.is/island-ui/utils": [ + "libs/island-ui/utils/src/index.ts" + ], "@island.is/island-ui/vanilla-extract-utils": [ "libs/island-ui/vanilla-extract-utils/src/index.ts" ], - "@island.is/judicial-system-web/*": ["apps/judicial-system/web/*"], + "@island.is/judicial-system-web/*": [ + "apps/judicial-system/web/*" + ], "@island.is/judicial-system/audit-trail": [ "libs/judicial-system/audit-trail/src/index.ts" ], @@ -938,30 +1052,66 @@ "@island.is/libs/portals/form-system": [ "libs/portals/form-system/src/index.ts" ], - "@island.is/localization": ["libs/localization/src/index.ts"], - "@island.is/logging": ["libs/logging/src/index.ts"], - "@island.is/message-queue": ["libs/message-queue/src/index.ts"], - "@island.is/nest/audit": ["libs/nest/audit/src/index.ts"], - "@island.is/nest/aws": ["libs/nest/aws/src/index.ts"], - "@island.is/nest/config": ["libs/nest/config/src/index.ts"], - "@island.is/nest/core": ["libs/nest/core/src/index.ts"], - "@island.is/nest/dataloader": ["libs/nest/dataloader/src/index.ts"], - "@island.is/nest/feature-flags": ["libs/nest/feature-flags/src/index.ts"], - "@island.is/nest/graphql": ["libs/nest/graphql/src/index.ts"], - "@island.is/nest/pagination": ["libs/nest/pagination/src/index.ts"], - "@island.is/nest/problem": ["libs/nest/problem/src/index.ts"], - "@island.is/nest/sequelize": ["libs/nest/sequelize/src/index.ts"], - "@island.is/nest/swagger": ["libs/nest/swagger/src/index.ts"], - "@island.is/next-ids-auth": ["libs/next-ids-auth/src/index.ts"], - "@island.is/nova-sms": ["libs/nova-sms/src/index.ts"], - "@island.is/plausible": ["libs/plausible/src/index.ts"], + "@island.is/localization": [ + "libs/localization/src/index.ts" + ], + "@island.is/logging": [ + "libs/logging/src/index.ts" + ], + "@island.is/message-queue": [ + "libs/message-queue/src/index.ts" + ], + "@island.is/nest/audit": [ + "libs/nest/audit/src/index.ts" + ], + "@island.is/nest/aws": [ + "libs/nest/aws/src/index.ts" + ], + "@island.is/nest/config": [ + "libs/nest/config/src/index.ts" + ], + "@island.is/nest/core": [ + "libs/nest/core/src/index.ts" + ], + "@island.is/nest/dataloader": [ + "libs/nest/dataloader/src/index.ts" + ], + "@island.is/nest/feature-flags": [ + "libs/nest/feature-flags/src/index.ts" + ], + "@island.is/nest/graphql": [ + "libs/nest/graphql/src/index.ts" + ], + "@island.is/nest/pagination": [ + "libs/nest/pagination/src/index.ts" + ], + "@island.is/nest/problem": [ + "libs/nest/problem/src/index.ts" + ], + "@island.is/nest/sequelize": [ + "libs/nest/sequelize/src/index.ts" + ], + "@island.is/nest/swagger": [ + "libs/nest/swagger/src/index.ts" + ], + "@island.is/next-ids-auth": [ + "libs/next-ids-auth/src/index.ts" + ], + "@island.is/nova-sms": [ + "libs/nova-sms/src/index.ts" + ], + "@island.is/plausible": [ + "libs/plausible/src/index.ts" + ], "@island.is/portals/admin/air-discount-scheme": [ "libs/portals/admin/air-discount-scheme/src/index.ts" ], "@island.is/portals/admin/application-system": [ "libs/portals/admin/application-system/src/index.ts" ], - "@island.is/portals/admin/core": ["libs/portals/admin/core/src/index.ts"], + "@island.is/portals/admin/core": [ + "libs/portals/admin/core/src/index.ts" + ], "@island.is/portals/admin/document-provider": [ "libs/portals/admin/document-provider/src/index.ts" ], @@ -983,21 +1133,33 @@ "@island.is/portals/admin/signature-collection": [ "libs/portals/admin/signature-collection/src/index.ts" ], - "@island.is/portals/core": ["libs/portals/core/src/index.ts"], + "@island.is/portals/core": [ + "libs/portals/core/src/index.ts" + ], "@island.is/portals/shared-modules/delegations": [ "libs/portals/shared-modules/delegations/src/index.ts" ], "@island.is/portals/shared-modules/delegations/messages": [ "libs/portals/shared-modules/delegations/src/lib/messages.ts" ], - "@island.is/react-spa/shared": ["libs/react-spa/shared/src/index.ts"], - "@island.is/react/components": ["libs/react/components/src/index.ts"], + "@island.is/react-spa/shared": [ + "libs/react-spa/shared/src/index.ts" + ], + "@island.is/react/components": [ + "libs/react/components/src/index.ts" + ], "@island.is/react/feature-flags": [ "libs/react/feature-flags/src/index.ts" ], - "@island.is/regulations": ["libs/regulations/src/index.ts"], - "@island.is/regulations/*": ["libs/regulations/src/sub/*"], - "@island.is/residence-history": ["libs/residence-history/src/index.ts"], + "@island.is/regulations": [ + "libs/regulations/src/index.ts" + ], + "@island.is/regulations/*": [ + "libs/regulations/src/sub/*" + ], + "@island.is/residence-history": [ + "libs/residence-history/src/index.ts" + ], "@island.is/service-portal/air-discount": [ "libs/service-portal/air-discount/src/index.ts" ], @@ -1103,41 +1265,87 @@ "@island.is/services/auth/testing": [ "libs/services/auth/testing/src/index.ts" ], - "@island.is/services/license": ["libs/services/license/src/index.ts"], - "@island.is/shared/components": ["libs/shared/components/src/index.ts"], - "@island.is/shared/connected": ["libs/shared/connected/src/index.ts"], - "@island.is/shared/constants": ["libs/shared/constants/src/index.ts"], - "@island.is/shared/form-fields": ["libs/shared/form-fields/src/index.ts"], - "@island.is/shared/mocking": ["libs/shared/mocking/src/index.ts"], - "@island.is/shared/pii": ["libs/shared/pii/src/index.ts"], - "@island.is/shared/problem": ["libs/shared/problem/src/index.ts"], - "@island.is/shared/table": ["libs/shared/table/src/index.ts"], + "@island.is/services/license": [ + "libs/services/license/src/index.ts" + ], + "@island.is/shared/components": [ + "libs/shared/components/src/index.ts" + ], + "@island.is/shared/connected": [ + "libs/shared/connected/src/index.ts" + ], + "@island.is/shared/constants": [ + "libs/shared/constants/src/index.ts" + ], + "@island.is/shared/form-fields": [ + "libs/shared/form-fields/src/index.ts" + ], + "@island.is/shared/mocking": [ + "libs/shared/mocking/src/index.ts" + ], + "@island.is/shared/pii": [ + "libs/shared/pii/src/index.ts" + ], + "@island.is/shared/problem": [ + "libs/shared/problem/src/index.ts" + ], + "@island.is/shared/table": [ + "libs/shared/table/src/index.ts" + ], "@island.is/shared/translations": [ "libs/shared/translations/src/index.ts" ], - "@island.is/shared/types": ["libs/shared/types/src/index.ts"], - "@island.is/shared/utils": ["libs/shared/utils/src/index.ts"], - "@island.is/shared/utils/server": ["libs/shared/utils/src/server.ts"], - "@island.is/skilavottord-web/*": ["apps/skilavottord/web/*"], + "@island.is/shared/types": [ + "libs/shared/types/src/index.ts" + ], + "@island.is/shared/utils": [ + "libs/shared/utils/src/index.ts" + ], + "@island.is/shared/utils/server": [ + "libs/shared/utils/src/server.ts" + ], + "@island.is/skilavottord-web/*": [ + "apps/skilavottord/web/*" + ], "@island.is/skilavottord/consts": [ "libs/skilavottord/consts/src/index.ts" ], - "@island.is/skilavottord/types": ["libs/skilavottord/types/src/index.ts"], - "@island.is/testing/containers": ["libs/testing/containers/src/index.ts"], - "@island.is/testing/e2e": ["libs/testing/e2e/src/index.ts"], - "@island.is/testing/fixtures": ["libs/testing/fixtures/src/index.ts"], - "@island.is/testing/nest": ["libs/testing/nest/src/index.ts"], - "@island.is/university-gateway": ["libs/university-gateway/src/index.ts"], - "@island.is/user-monitoring": ["libs/user-monitoring/src/index.ts"], - "@island.is/web/*": ["apps/web/*"], - "@island.is/web/component*": ["apps/web/component*/real.ts"], + "@island.is/skilavottord/types": [ + "libs/skilavottord/types/src/index.ts" + ], + "@island.is/testing/containers": [ + "libs/testing/containers/src/index.ts" + ], + "@island.is/testing/e2e": [ + "libs/testing/e2e/src/index.ts" + ], + "@island.is/testing/fixtures": [ + "libs/testing/fixtures/src/index.ts" + ], + "@island.is/testing/nest": [ + "libs/testing/nest/src/index.ts" + ], + "@island.is/university-gateway": [ + "libs/university-gateway/src/index.ts" + ], + "@island.is/user-monitoring": [ + "libs/user-monitoring/src/index.ts" + ], + "@island.is/web/*": [ + "apps/web/*" + ], + "@island.is/web/component*": [ + "apps/web/component*/real.ts" + ], "api/domains/financial-statement-cemetery": [ "libs/api/domains/financial-statement-cemetery/src/index.ts" ], "application/templates/inao/financial-statement-political-party": [ "libs/application/templates/inao/financial-statement-political-party/src/index.ts" ], - "delegation-admin": ["libs/portals/admin/delegation-admin/src/index.ts"] + "delegation-admin": [ + "libs/portals/admin/delegation-admin/src/index.ts" + ] } } -} +} \ No newline at end of file From 7b27d736c8e57e2edcbf8ec3781139e014a5098c Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Tue, 26 Nov 2024 12:06:35 +0000 Subject: [PATCH 118/129] refactor: remove unnecessary comments and console logs across various components --- .../form-system/src/lib/fields/fields.service.ts | 2 +- .../form-system/src/lib/screens/screens.service.ts | 1 - .../src/components/MainContent/MainContent.tsx | 1 - .../components/BaseSettings/BaseSettings.tsx | 1 - .../components/FieldContent/FieldContent.tsx | 2 +- .../FieldContent/components/BaseInput.tsx | 3 +-- .../components/FieldSettings/FieldSettings.tsx | 1 - .../FieldSettings/components/ListSettings.tsx | 1 - .../components/MessageWithLinkSettings.tsx | 1 - .../FieldSettings/components/TextFieldSettings.tsx | 5 ++++- .../FieldSettings/components/ToggleConnection.tsx | 5 ++--- .../FieldSettings/components/UploadSettings.tsx | 1 - .../components/ListBuilder/ListBuilder.tsx | 1 - .../components/ListBuilder/components/ListItem.tsx | 1 - .../MainContent/components/Premises/Premises.tsx | 1 - .../MainContent/components/Preview/Preveiw.tsx | 1 - .../components/RelevantParties/RelevantParties.tsx | 1 - .../components/FormApplicantTypes.tsx | 1 - .../NavComponent/components/NavButtons.tsx | 1 - .../form-system/src/components/Navbar/Navbar.tsx | 1 - .../Navbar/components/NavbarTab/NavbarTab.tsx | 1 - .../src/components/NavbarSelect/NavbarSelect.tsx | 1 - .../src/components/TableRow/TableRow.tsx | 13 +------------ .../components/TranslationTag/TranslationTag.tsx | 1 - .../admin/form-system/src/context/ControlContext.ts | 1 - .../admin/form-system/src/context/FormProvider.tsx | 8 ++++---- .../admin/form-system/src/hooks/controlReducer.ts | 1 - .../portals/admin/form-system/src/lib/navigation.ts | 1 - .../admin/form-system/src/lib/utils/fieldTypes.ts | 2 -- .../src/lib/utils/getTranslationButtons.ts | 6 +----- .../admin/form-system/src/screens/Forms/Forms.tsx | 2 +- libs/portals/form-system/ui-components/project.json | 9 ++++++++- .../form-system/ui-components/src/lib/messages.ts | 6 +++++- 33 files changed, 29 insertions(+), 55 deletions(-) diff --git a/libs/api/domains/form-system/src/lib/fields/fields.service.ts b/libs/api/domains/form-system/src/lib/fields/fields.service.ts index 81ae26a9014b..72b8a3a19f1a 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.service.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.service.ts @@ -32,7 +32,7 @@ export class FieldsService { error: JSON.stringify(error), category: 'forms-service', } - // this.logger.error(errorDetail || 'Error in fields service', err) + this.logger.error(errorDetail || 'Error in fields service', err) throw new ApolloError(error.message) } diff --git a/libs/api/domains/form-system/src/lib/screens/screens.service.ts b/libs/api/domains/form-system/src/lib/screens/screens.service.ts index 284ca4149217..f17c490ec477 100644 --- a/libs/api/domains/form-system/src/lib/screens/screens.service.ts +++ b/libs/api/domains/form-system/src/lib/screens/screens.service.ts @@ -50,7 +50,6 @@ export class ScreensService { if (!response || response instanceof ApolloError) { return {} } - console.log(response) return response } diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index 8c4bb5eeebfe..1f7794b5a2b5 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -16,7 +16,6 @@ import { FieldContent } from './components/FieldContent/FieldContent' import { PreviewStepOrGroup } from './components/PreviewStepOrGroup/PreviewStepOrGroup' import { useIntl } from 'react-intl' import { RelevantParties } from './components/RelevantParties/RelevantParties' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const MainContent = () => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index d93f0c7b2351..16bd7b16f8db 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -9,7 +9,6 @@ import { import { useContext } from 'react' import { ControlContext } from '../../../../context/ControlContext' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const BaseSettings = () => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/FieldContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/FieldContent.tsx index 8d23aa84fd67..17445bde5a4a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/FieldContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/FieldContent.tsx @@ -1,4 +1,4 @@ -import { useContext, useEffect } from 'react' +import { useContext } from 'react' import { ControlContext } from '../../../../context/ControlContext' import { Stack } from '@island.is/island-ui/core' import { BaseInput } from './components/BaseInput' diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx index 7d4de43c47c7..5ddd9d0f8656 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx @@ -13,7 +13,6 @@ import { import { SingleValue } from 'react-select' import { useIntl } from 'react-intl' import { fieldTypesSelectObject } from '../../../../../lib/utils/fieldTypes' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const BaseInput = () => { @@ -158,7 +157,7 @@ export const BaseInput = () => { <Column span="5/10"> <Checkbox label={formatMessage(m.required)} - checked={currentItem.isRequired ?? false} // uncomment when isRequired is added to the schema + checked={currentItem.isRequired ?? false} onChange={() => controlDispatch({ type: 'CHANGE_IS_REQUIRED', diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx index 9de1452bc1e3..d1d113c32d3f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx @@ -6,7 +6,6 @@ import { TextFieldSettings } from './components/TextFieldSettings' import { ListSettings } from './components/ListSettings' import { ToggleConnection } from './components/ToggleConnection' import { FileUploadSettings } from './components/UploadSettings' -// eslint-disable-next-line @nx/enforce-module-boundaries import { FieldTypesEnum } from '@island.is/form-system/ui' export const FieldSettings = () => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx index 6605a78e8e47..e0b8c1ce18fd 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx @@ -11,7 +11,6 @@ import { } from '@island.is/island-ui/core' import { FormSystemField } from '@island.is/api/schema' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { FieldTypesEnum, m } from '@island.is/form-system/ui' const predeterminedLists = [ diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx index 4dcd55412b4c..6f0787fd85be 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx @@ -9,7 +9,6 @@ import { } from '@island.is/island-ui/core' import { FormSystemField } from '@island.is/api/schema' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const MessageWithLinkSettings = () => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/TextFieldSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/TextFieldSettings.tsx index 50dd852e8e86..72d124ac406f 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/TextFieldSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/TextFieldSettings.tsx @@ -2,6 +2,8 @@ import { useContext } from 'react' import { ControlContext } from '../../../../../../../context/ControlContext' import { FormSystemField } from '@island.is/api/schema' import { Checkbox } from '@island.is/island-ui/core' +import { useIntl } from 'react-intl' +import { m } from '@island.is/form-system/ui' export const TextFieldSettings = () => { const { control, controlDispatch, updateActiveItem } = @@ -9,11 +11,12 @@ export const TextFieldSettings = () => { const { activeItem } = control const currentItem = activeItem.data as FormSystemField const { fieldSettings } = currentItem + const { formatMessage } = useIntl() return ( <Checkbox checked={fieldSettings?.isLarge ?? false} - label="Stórt textasvæði" + label={formatMessage(m.largeTextArea)} onChange={(e) => controlDispatch({ type: 'SET_FIELD_SETTINGS', diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx index 4ffcd39e2781..8ca7b0e92d71 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx @@ -9,7 +9,6 @@ import { FormSystemField } from '@island.is/api/schema' import { ControlContext } from '../../../../../../../context/ControlContext' import { NavbarSelectStatus } from '../../../../../../../lib/utils/interfaces' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const ToggleConnection = () => { @@ -24,7 +23,7 @@ export const ToggleConnection = () => { <Row> <Column> <ToggleSwitchCheckbox - name="Tengja" + name="connect" label={formatMessage(m.connect)} checked={selectStatus === NavbarSelectStatus.NORMAL} onChange={(e) => @@ -36,7 +35,7 @@ export const ToggleConnection = () => { </Column> {hasConnections && ( <Column> - <Text variant="eyebrow"> Hefur tengingar</Text> + <Text variant="eyebrow">{formatMessage(m.hasConnections)}</Text> </Column> )} </Row> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/UploadSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/UploadSettings.tsx index ea0908a9f75d..822ff62660dc 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/UploadSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/UploadSettings.tsx @@ -13,7 +13,6 @@ import { fileSizes, fileTypes } from '../../../../../../../lib/utils/fileTypes' import { ControlContext } from '../../../../../../../context/ControlContext' import { FormSystemField } from '@island.is/api/schema' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const FileUploadSettings = () => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx index c4520482ccf4..ec1f7ea21b3a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx @@ -27,7 +27,6 @@ import { useIntl } from 'react-intl' import { useMutation } from '@apollo/client' import { CREATE_LIST_ITEM, UPDATE_LIST_ITEM, UPDATE_LIST_ITEM_DISPLAY_ORDER } from '@island.is/form-system/graphql' import { removeTypename } from '../../../../../../lib/utils/removeTypename' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const ListBuilder = () => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx index 6b66a841c5cf..ddeecf17fde1 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx @@ -16,7 +16,6 @@ import * as styles from './ListItem.css' import { getTranslation } from '../../../../../../../lib/utils/getTranslation' import { useMutation } from '@apollo/client' import { DELETE_LIST_ITEM, UPDATE_LIST_ITEM } from '@island.is/form-system/graphql' -// eslint-disable-next-line @nx/enforce-module-boundaries import { FieldTypesEnum, m } from '@island.is/form-system/ui' interface Props { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index e6f2ee70d63f..0427b9469536 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -6,7 +6,6 @@ import { useIntl } from 'react-intl' import { useMutation } from '@apollo/client' import { CREATE_CERTIFICATION, DELETE_CERTIFICATION } from '@island.is/form-system/graphql' import { removeTypename } from '../../../../lib/utils/removeTypename' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const Premises = () => { diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 13060ecb5cc7..8007e8c3f11b 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -1,6 +1,5 @@ import { FormSystemField } from '@island.is/api/schema' import { Box, DatePicker, Text } from '@island.is/island-ui/core' -// eslint-disable-next-line @nx/enforce-module-boundaries import { Banknumber, MessageWithLink, diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx index 07709aaa3902..b57944a5f23d 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx @@ -5,7 +5,6 @@ import { useIntl } from "react-intl" import { CREATE_APPLICANT, DELETE_APPLICANT } from "@island.is/form-system/graphql" import { useMutation } from "@apollo/client" import { FormSystemFormApplicant } from "@island.is/api/schema" -// eslint-disable-next-line @nx/enforce-module-boundaries import { ApplicantTypesEnum, m } from '@island.is/form-system/ui' import { removeTypename } from "../../../../lib/utils/removeTypename" import { FormApplicantTypes } from "./components/FormApplicantTypes" diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx index 32d41033337f..aec9f3091d20 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx @@ -12,7 +12,6 @@ import { useIntl } from "react-intl" import { ControlContext } from "../../../../../context/ControlContext" import { useMutation } from "@apollo/client" import { UPDATE_APPLICANT } from "@island.is/form-system/graphql" -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index 480fbbdc6172..c411c6814999 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -6,7 +6,6 @@ import { removeTypename } from '../../../lib/utils/removeTypename' import { useIntl } from 'react-intl' import { useMutation } from '@apollo/client' import { CREATE_FIELD, CREATE_SCREEN, DELETE_FIELD, DELETE_SCREEN } from '@island.is/form-system/graphql' -// eslint-disable-next-line @nx/enforce-module-boundaries import { FieldTypesEnum, m } from '@island.is/form-system/ui' diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 56f67984c48c..2b6d7201ba4e 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -28,7 +28,6 @@ import { useIntl } from 'react-intl' import { NavComponent } from '../NavComponent/NavComponent' import { CREATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from '@island.is/form-system/graphql' import { useMutation } from '@apollo/client' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' type DndAction = diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx index 038815f37186..c1959dbca136 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -6,7 +6,6 @@ import { baseSettingsStep } from '../../../../lib/utils/getBaseSettingsSection' import { ControlContext } from '../../../../context/ControlContext' import { useIntl } from 'react-intl' import { FormSystemSectionDtoSectionTypeEnum } from '@island.is/api/schema' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const NavbarTab = () => { diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx index 659b1079b576..5f7cf88cc2e3 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx @@ -10,7 +10,6 @@ import { } from '@island.is/api/schema' import { NavbarSelectStatus } from '../../lib/utils/interfaces' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const NavbarSelect = () => { diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index 367a28785137..b1ff9567f7c2 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -17,7 +17,6 @@ import { ApplicationTemplateStatus, } from '../../lib/utils/interfaces' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' interface Props { @@ -154,17 +153,7 @@ export const TableRow = ({ title: 'Export', }, { - title: formatMessage(m.getJson), - onClick: () => { - navigate( - FormSystemPaths.FormApplications.replace(':slug', String(slug)), - { - state: { - slug: slug - } - } - ) - } + title: 'Json' }, ]} /> diff --git a/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx b/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx index 662082dc7919..1c59e91075fd 100644 --- a/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx +++ b/libs/portals/admin/form-system/src/components/TranslationTag/TranslationTag.tsx @@ -1,6 +1,5 @@ import { Tag } from '@island.is/island-ui/core' import { useIntl } from 'react-intl' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' interface Props { diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index 772bf9036393..d24ba6b00e14 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -14,7 +14,6 @@ import { NavbarSelectStatus, } from '../lib/utils/interfaces' -// Removed formUpdate and updateSettings from the context export interface IControlContext { control: ControlState controlDispatch: Dispatch<ControlAction> diff --git a/libs/portals/admin/form-system/src/context/FormProvider.tsx b/libs/portals/admin/form-system/src/context/FormProvider.tsx index c53bd1f0ccad..9bde9925c489 100644 --- a/libs/portals/admin/form-system/src/context/FormProvider.tsx +++ b/libs/portals/admin/form-system/src/context/FormProvider.tsx @@ -38,17 +38,17 @@ export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: Fo const updateSection = useMutation(UPDATE_SECTION) const updateScreen = useMutation(UPDATE_SCREEN) const updateField = useMutation(UPDATE_FIELD) + const [updateSectionDisplayOrder] = useMutation(UPDATE_SECTION_DISPLAY_ORDER) + const [updateScreenDisplayOrder] = useMutation(UPDATE_SCREEN_DISPLAY_ORDER) + const [updateFieldDisplayOrder] = useMutation(UPDATE_FIELDS_DISPLAY_ORDER) + const [updateForm] = useMutation(UPDATE_FORM) const updateActiveItem = useCallback((updatedActiveItem?: ActiveItem) => updateActiveItemFn(control.activeItem, updateSection, updateScreen, updateField, updatedActiveItem), [control.activeItem, updateSection, updateScreen, updateField]) - const [updateSectionDisplayOrder] = useMutation(UPDATE_SECTION_DISPLAY_ORDER) - const [updateScreenDisplayOrder] = useMutation(UPDATE_SCREEN_DISPLAY_ORDER) - const [updateFieldDisplayOrder] = useMutation(UPDATE_FIELDS_DISPLAY_ORDER) const updateDragAndDrop = useCallback(() => updateDnd(control, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder), [control, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder]) - const [updateForm] = useMutation(UPDATE_FORM) const formUpdate = useCallback((updatedForm?: FormSystemForm) => { updateFormFn(control, updateForm, updatedForm) }, [control, updateForm]) diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index 4c9abb46f705..de7a2434b4a5 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -348,7 +348,6 @@ export const controlReducer = ( }, } } - /* Uncomment and finish when field has isRequired property */ case 'CHANGE_IS_REQUIRED': { const currentData = activeItem.data as FormSystemField diff --git a/libs/portals/admin/form-system/src/lib/navigation.ts b/libs/portals/admin/form-system/src/lib/navigation.ts index 4b7d96cf9402..1f85429d8ae2 100644 --- a/libs/portals/admin/form-system/src/lib/navigation.ts +++ b/libs/portals/admin/form-system/src/lib/navigation.ts @@ -1,6 +1,5 @@ import { PortalNavigationItem } from '@island.is/portals/core' import { FormSystemPaths } from './paths' -// eslint-disable-next-line @nx/enforce-module-boundaries import { m } from '@island.is/form-system/ui' export const formSystemNavigation: PortalNavigationItem = { diff --git a/libs/portals/admin/form-system/src/lib/utils/fieldTypes.ts b/libs/portals/admin/form-system/src/lib/utils/fieldTypes.ts index 92cea9fa6c2e..40314167dee7 100644 --- a/libs/portals/admin/form-system/src/lib/utils/fieldTypes.ts +++ b/libs/portals/admin/form-system/src/lib/utils/fieldTypes.ts @@ -1,8 +1,6 @@ import { Option } from '@island.is/island-ui/core' -// eslint-disable-next-line @nx/enforce-module-boundaries import { FieldTypesEnum } from '@island.is/form-system/ui' -//TODO: use the enum from the schema /* eslint-disable @typescript-eslint/naming-convention */ enum FieldTypes { BANK_ACCOUNT = 'Bankareikningur', diff --git a/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts b/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts index 1f05ac32f82c..94b8fa7f8f29 100644 --- a/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts +++ b/libs/portals/admin/form-system/src/lib/utils/getTranslationButtons.ts @@ -1,6 +1,5 @@ import { Dispatch } from 'react' import { ControlAction } from '../../hooks/controlReducer' -import { translate } from './translation' type Types = 'CHANGE_NAME' | 'CHANGE_FORM_NAME' | 'CHANGE_DESCRIPTION' type Icon = @@ -109,10 +108,7 @@ export const getTranslationButtons = ( label: 'Translate', name: 'reader', onClick: async () => { - const translation = await translate(text).catch((e) => { - console.error('Translation failed', e) - return text - }) + const translation = '' controlDispatch({ type: type, payload: { diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index ef766db23e4b..e3c2a02a0596 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -3,10 +3,10 @@ import { useLoaderData, useNavigate } from 'react-router-dom' import { FormSystemPaths } from '../../lib/paths' import { TableRow } from '../../components/TableRow/TableRow' import { CREATE_FORM } from '@island.is/form-system/graphql' -import { m } from '@island.is/form-system/ui' import { FormsLoaderResponse } from './Forms.loader' import { useMutation } from '@apollo/client' import { useIntl } from 'react-intl' +import { m } from '@island.is/form-system/ui' diff --git a/libs/portals/form-system/ui-components/project.json b/libs/portals/form-system/ui-components/project.json index 3d0a924ea072..400cc12da6b9 100644 --- a/libs/portals/form-system/ui-components/project.json +++ b/libs/portals/form-system/ui-components/project.json @@ -13,7 +13,14 @@ "{workspaceRoot}/coverage/{projectRoot}" ], "options": { - "jestConfig": "libs/portals/form-system/ui-components/jest.config.ts" + "jestConfig": "libs/portals/form-system/ui-components/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } } } }, diff --git a/libs/portals/form-system/ui-components/src/lib/messages.ts b/libs/portals/form-system/ui-components/src/lib/messages.ts index a2b3f3f3feb0..189b3afaa700 100644 --- a/libs/portals/form-system/ui-components/src/lib/messages.ts +++ b/libs/portals/form-system/ui-components/src/lib/messages.ts @@ -287,12 +287,16 @@ export const m = defineMessages({ }, largeTextArea: { id: 'portals-admin.form-system:large-text-area', - defaultMessage: 'Stór textasvæði', + defaultMessage: 'Stórt textasvæði', }, connect: { id: 'portals-admin.form-system:connect', defaultMessage: 'Tengja', }, + hasConnections: { + id: 'portals-admin.form-system:has-connections', + defaultMessage: 'Hefur tengingar', + }, selected: { id: 'portals-admin.form-system:selected', defaultMessage: 'Sjálfvalið', From 8ee99a636ec60dc82e9adc448b3abfa0a15abf82 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Mon, 9 Dec 2024 11:32:34 +0000 Subject: [PATCH 119/129] about to pull main --- .../form-system/src/dto/application.input.ts | 2 +- .../lib/applications/applications.service.ts | 8 +- .../clients/form-system/src/clientConfig.json | 2962 +++++++---------- 3 files changed, 1158 insertions(+), 1814 deletions(-) diff --git a/libs/api/domains/form-system/src/dto/application.input.ts b/libs/api/domains/form-system/src/dto/application.input.ts index 9377dcca19d6..7c158ddd2351 100644 --- a/libs/api/domains/form-system/src/dto/application.input.ts +++ b/libs/api/domains/form-system/src/dto/application.input.ts @@ -11,7 +11,7 @@ export class CreateApplicationInput { @InputType('FormSystemGetApplicationInput') export class GetApplicationInput { @Field(() => String, { nullable: true }) - id?: string + formId?: string } @InputType('FormSystemApplicationInput') diff --git a/libs/api/domains/form-system/src/lib/applications/applications.service.ts b/libs/api/domains/form-system/src/lib/applications/applications.service.ts index bb169d6274de..c10b87e4936a 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.service.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.service.ts @@ -6,7 +6,7 @@ import { handle4xx } from '../../utils/errorHandler' import { ApplicationsApi, ApplicationsControllerCreateRequest, - ApplicationsControllerGetApplicationRequest, + ApplicationsControllerGetPreviewRequest, } from '@island.is/clients/form-system' import { CreateApplicationInput, @@ -20,7 +20,7 @@ export class ApplicationsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private applicationsApi: ApplicationsApi, - ) {} + ) { } // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -60,8 +60,8 @@ export class ApplicationsService { input: GetApplicationInput, ): Promise<Application> { const response = await this.applicationsApiWithAuth(auth) - .applicationsControllerGetApplication( - input as ApplicationsControllerGetApplicationRequest, + .applicationsControllerGetPreview( + input as ApplicationsControllerGetPreviewRequest, ) .catch((e) => handle4xx(e, this.handleError, 'failed to get application')) diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index b07f27f8876d..ed0c942da091 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -205,7 +205,6 @@ "/organizations": { "post": { "operationId": "OrganizationsController_create", - "summary": "Create an organization", "parameters": [], "requestBody": { "required": true, @@ -219,14 +218,7 @@ }, "responses": { "201": { - "description": "Create an organization", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganizationDto" - } - } - } + "description": "" } }, "tags": [ @@ -235,15 +227,58 @@ }, "get": { "operationId": "OrganizationsController_findAll", - "summary": "Get all Organizations", + "description": "Get all Organizations", "parameters": [], "responses": { - "201": { - "description": "Get all Organizations", + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganizationsResponseDto" + } + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrganizationsResponseDto" + "$ref": "#/components/schemas/HttpProblemResponse" } } } @@ -257,7 +292,7 @@ "/organizations/{id}": { "get": { "operationId": "OrganizationsController_findOne", - "summary": "Get an organization by id", + "description": "Get Organization by id", "parameters": [ { "name": "id", @@ -269,8 +304,8 @@ } ], "responses": { - "201": { - "description": "Get an organization by id", + "200": { + "description": "", "content": { "application/json": { "schema": { @@ -278,6 +313,46 @@ } } } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } } }, "tags": [ @@ -288,7 +363,6 @@ "/forms": { "post": { "operationId": "FormsController_create", - "summary": "Create new form", "parameters": [], "requestBody": { "required": true, @@ -320,7 +394,7 @@ "/forms/organization/{organizationId}": { "get": { "operationId": "FormsController_findAll", - "summary": "Get all forms belonging to organization", + "description": "Get all forms belonging to organization", "parameters": [ { "name": "organizationId", @@ -332,8 +406,8 @@ } ], "responses": { - "201": { - "description": "Get all forms belonging to organization", + "200": { + "description": "", "content": { "application/json": { "schema": { @@ -341,6 +415,46 @@ } } } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } } }, "tags": [ @@ -351,7 +465,7 @@ "/forms/{id}": { "get": { "operationId": "FormsController_findOne", - "summary": "Get FormResponse by formId", + "description": "Get FormResponse by formId", "parameters": [ { "name": "id", @@ -363,8 +477,8 @@ } ], "responses": { - "201": { - "description": "Get FormResponse by formId", + "200": { + "description": "", "content": { "application/json": { "schema": { @@ -372,38 +486,46 @@ } } } - } - }, - "tags": [ - "forms" - ] - }, - "put": { - "operationId": "FormsController_updateForm", - "summary": "Update form", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateFormDto" + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } } } - } - }, - "responses": { - "201": { - "description": "Update form" } }, "tags": [ @@ -412,7 +534,6 @@ }, "delete": { "operationId": "FormsController_delete", - "summary": "Delete form", "parameters": [ { "name": "id", @@ -424,8 +545,8 @@ } ], "responses": { - "204": { - "description": "Delete field" + "200": { + "description": "" } }, "tags": [ @@ -436,7 +557,6 @@ "/sections": { "post": { "operationId": "SectionsController_create", - "summary": "Creates a new section", "parameters": [], "requestBody": { "required": true, @@ -450,14 +570,7 @@ }, "responses": { "201": { - "description": "Creates a new section", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SectionDto" - } - } - } + "description": "" } }, "tags": [ @@ -466,7 +579,7 @@ }, "put": { "operationId": "SectionsController_updateDisplayOrder", - "summary": "Update display order of sections", + "description": "Update display order of sections", "parameters": [], "requestBody": { "required": true, @@ -480,7 +593,47 @@ }, "responses": { "204": { - "description": "Update display order of sections" + "description": "" + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } } }, "tags": [ @@ -489,9 +642,8 @@ } }, "/sections/{id}": { - "put": { - "operationId": "SectionsController_update", - "summary": "Updates a section", + "delete": { + "operationId": "SectionsController_delete", "parameters": [ { "name": "id", @@ -502,28 +654,17 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSectionDto" - } - } - } - }, "responses": { - "201": { - "description": "Updates a section" + "200": { + "description": "" } }, "tags": [ "sections" ] }, - "delete": { - "operationId": "SectionsController_delete", - "summary": "Delete section by id", + "put": { + "operationId": "SectionsController_update", "parameters": [ { "name": "id", @@ -534,9 +675,19 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSectionDto" + } + } + } + }, "responses": { - "204": { - "description": "Delete section by id" + "200": { + "description": "" } }, "tags": [ @@ -547,7 +698,6 @@ "/screens": { "post": { "operationId": "ScreensController_create", - "summary": "Creates a new screen", "parameters": [], "requestBody": { "required": true, @@ -561,14 +711,7 @@ }, "responses": { "201": { - "description": "Creates a new screen", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ScreenDto" - } - } - } + "description": "" } }, "tags": [ @@ -577,7 +720,7 @@ }, "put": { "operationId": "ScreensController_updateDisplayOrder", - "summary": "Update display order of screens", + "description": "Update display order of screens", "parameters": [], "requestBody": { "required": true, @@ -591,18 +734,57 @@ }, "responses": { "204": { - "description": "Update display order of screens" - } - }, - "tags": [ - "screens" - ] - } - }, - "/screens/{id}": { + "description": "" + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + } + }, + "tags": [ + "screens" + ] + } + }, + "/screens/{id}": { "put": { "operationId": "ScreensController_update", - "summary": "Updates screen", "parameters": [ { "name": "id", @@ -624,15 +806,8 @@ } }, "responses": { - "201": { - "description": "Updates a screen", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ScreenDto" - } - } - } + "200": { + "description": "" } }, "tags": [ @@ -641,7 +816,6 @@ }, "delete": { "operationId": "ScreensController_delete", - "summary": "Delete screen by id", "parameters": [ { "name": "id", @@ -653,8 +827,8 @@ } ], "responses": { - "204": { - "description": "Delete screen by id" + "200": { + "description": "" } }, "tags": [ @@ -665,7 +839,6 @@ "/fields": { "post": { "operationId": "FieldsController_create", - "summary": "Create a field", "parameters": [], "requestBody": { "required": true, @@ -679,14 +852,7 @@ }, "responses": { "201": { - "description": "Create a field", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FieldDto" - } - } - } + "description": "" } }, "tags": [ @@ -695,7 +861,7 @@ }, "put": { "operationId": "FieldsController_updateDisplayOrder", - "summary": "Update display order of fields", + "description": "Update display order of fields", "parameters": [], "requestBody": { "required": true, @@ -709,7 +875,47 @@ }, "responses": { "204": { - "description": "Update display order of fields" + "description": "" + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } } }, "tags": [ @@ -718,9 +924,77 @@ } }, "/fields/{id}": { + "get": { + "operationId": "FieldsController_findOne", + "description": "Get Field by id", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FieldDto" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + } + }, + "tags": [ + "fields" + ] + }, "put": { "operationId": "FieldsController_update", - "summary": "Update field", "parameters": [ { "name": "id", @@ -742,8 +1016,8 @@ } }, "responses": { - "204": { - "description": "Update field" + "200": { + "description": "" } }, "tags": [ @@ -752,7 +1026,6 @@ }, "delete": { "operationId": "FieldsController_delete", - "summary": "Delete field by id", "parameters": [ { "name": "id", @@ -764,8 +1037,8 @@ } ], "responses": { - "204": { - "description": "Delete field by id" + "200": { + "description": "" } }, "tags": [ @@ -776,7 +1049,6 @@ "/listItems": { "post": { "operationId": "ListItemsController_create", - "summary": "Create a list item", "parameters": [], "requestBody": { "required": true, @@ -790,14 +1062,7 @@ }, "responses": { "201": { - "description": "Create a list item", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListItemDto" - } - } - } + "description": "" } }, "tags": [ @@ -806,7 +1071,7 @@ }, "put": { "operationId": "ListItemsController_updateDisplayOrder", - "summary": "Update display order of list items", + "description": "Update display order of list items", "parameters": [], "requestBody": { "required": true, @@ -820,7 +1085,47 @@ }, "responses": { "204": { - "description": "Update display order of list items" + "description": "" + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } } }, "tags": [ @@ -831,7 +1136,6 @@ "/listItems/{id}": { "put": { "operationId": "ListItemsController_update", - "summary": "Update list item", "parameters": [ { "name": "id", @@ -853,8 +1157,8 @@ } }, "responses": { - "204": { - "description": "Update list item" + "200": { + "description": "" } }, "tags": [ @@ -863,7 +1167,6 @@ }, "delete": { "operationId": "ListItemsController_delete", - "summary": "Delete list item", "parameters": [ { "name": "id", @@ -875,8 +1178,8 @@ } ], "responses": { - "204": { - "description": "Delete of list items" + "200": { + "description": "" } }, "tags": [ @@ -884,13 +1187,13 @@ ] } }, - "/applications/{id}": { + "/applications": { "get": { - "operationId": "ApplicationsController_getApplication", - "summary": "Get an application by id", + "operationId": "ApplicationsController_getPreview", + "description": "Get application preview", "parameters": [ { - "name": "id", + "name": "formId", "required": true, "in": "path", "schema": { @@ -899,8 +1202,8 @@ } ], "responses": { - "201": { - "description": "Get an application by id", + "200": { + "description": "", "content": { "application/json": { "schema": { @@ -908,38 +1211,46 @@ } } } - } - }, - "tags": [ - "applications" - ] - }, - "put": { - "operationId": "ApplicationsController_update", - "summary": "Update application dependencies", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateApplicationDto" + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpProblemResponse" + } } } - } - }, - "responses": { - "204": { - "description": "Update application dependencies" } }, "tags": [ @@ -950,7 +1261,7 @@ "/applications/{slug}": { "post": { "operationId": "ApplicationsController_create", - "summary": "Create new application", + "description": "Create new application", "parameters": [ { "name": "slug", @@ -961,19 +1272,9 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateApplicationDto" - } - } - } - }, "responses": { - "201": { - "description": "Create new application", + "200": { + "description": "", "content": { "application/json": { "schema": { @@ -981,1255 +1282,121 @@ } } } - } - }, - "tags": [ - "applications" - ] - } - }, - "/values": { - "post": { - "operationId": "ValuesController_create", - "summary": "Creates a new value", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateValueDto" - } - } - } - }, - "responses": { - "201": { - "description": "Creates a new value", + }, + "400": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ValueDto" + "$ref": "#/components/schemas/HttpProblemResponse" } } } - } - }, - "tags": [ - "values" - ] - } - }, - "/values/{id}": { - "put": { - "operationId": "ValuesController_update", - "summary": "Update a value", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateValueDto" - } - } - } - }, - "responses": { - "201": { - "description": "Update a value", + }, + "401": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ValueDto" + "$ref": "#/components/schemas/HttpProblemResponse" } } } - } - }, - "tags": [ - "values" - ] - }, - "delete": { - "operationId": "ValuesController_delete", - "summary": "Delete value by id", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Delete value by id" - } - }, - "tags": [ - "values" - ] - } - }, - "/formApplicantTypes": { - "post": { - "operationId": "FormApplicantTypesController_create", - "summary": "Add form applicant type", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateFormApplicantTypeDto" - } - } - } - }, - "responses": { - "201": { - "description": "Add form applicant type", + }, + "403": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FormApplicantTypeDto" + "$ref": "#/components/schemas/HttpProblemResponse" } } } - } - }, - "tags": [ - "form applicant types" - ] - } - }, - "/formApplicantTypes/{id}": { - "put": { - "operationId": "FormApplicantTypesController_update", - "summary": "Update form applicant", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateFormApplicantTypeDto" - } - } - } - }, - "responses": { - "201": { - "description": "Update form applicant" - } - }, - "tags": [ - "form applicant types" - ] - }, - "delete": { - "operationId": "FormApplicantTypesController_delete", - "summary": "Delete form applicant", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Delete form applicant" - } - }, - "tags": [ - "form applicant types" - ] - } - }, - "/formCertificationTypes": { - "post": { - "operationId": "FormCertificationTypesController_create", - "summary": "Add form certification type", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateFormCertificationTypeDto" - } - } - } - }, - "responses": { - "201": { - "description": "Add form certification type", + }, + "500": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FormCertificationTypeDto" + "$ref": "#/components/schemas/HttpProblemResponse" } } } } }, "tags": [ - "form certification types" + "applications" ] } - }, - "/formCertificationTypes/{id}": { - "delete": { - "operationId": "FormCertificationTypesController_delete", - "summary": "Remove form certification type", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Remove form certification type" + } + }, + "info": { + "title": "Form System API", + "description": "This is an API for formbuilder and form-rendering (application) system", + "version": "1.0", + "contact": {} + }, + "tags": [], + "servers": [ + { + "url": "http://localhost:3434" + } + ], + "components": { + "schemas": { + "Liveness": { + "type": "object", + "properties": { + "ok": { + "type": "boolean" } }, - "tags": [ - "form certification types" + "required": [ + "ok" ] - } - }, - "/formUrls": { - "post": { - "operationId": "FormUrlsController_create", - "summary": "Add form url", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateFormUrlDto" - } - } + }, + "Version": { + "type": "object", + "properties": { + "version": { + "type": "string" } }, - "responses": { - "201": { - "description": "Add form url", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FormUrlDto" - } - } - } + "required": [ + "version" + ] + }, + "LanguageType": { + "type": "object", + "properties": { + "is": { + "type": "string" + }, + "en": { + "type": "string" } }, - "tags": [ - "form urls" - ] - } - }, - "/formUrls/{id}": { - "delete": { - "operationId": "FormUrlsController_delete", - "summary": "Remove form url", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Remove form url" - } - }, - "tags": [ - "form urls" - ] - } - }, - "/organizationCertificationTypes": { - "post": { - "operationId": "OrganizationCertificationTypesController_create", - "summary": "Add organization certification type", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrganizationCertificationTypeDto" - } - } - } - }, - "responses": { - "201": { - "description": "Add organization certification type", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganizationCertificationTypeDto" - } - } - } - } - }, - "tags": [ - "organization certification types" - ] - } - }, - "/organizationCertificationTypes/{id}": { - "delete": { - "operationId": "OrganizationCertificationTypesController_delete", - "summary": "Remove organization certification type", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Remove organization certification type" - } - }, - "tags": [ - "organization certification types" - ] - } - }, - "/organizationFieldTypes": { - "post": { - "operationId": "OrganizationFieldTypesController_create", - "summary": "Add organization field type", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrganizationFieldTypeDto" - } - } - } - }, - "responses": { - "201": { - "description": "Add organization field type", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganizationFieldTypeDto" - } - } - } - } - }, - "tags": [ - "organization field types" - ] - } - }, - "/organizationFieldTypes/{id}": { - "delete": { - "operationId": "OrganizationFieldTypesController_delete", - "summary": "Remove organization field type", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Remove organization field type" - } - }, - "tags": [ - "organization field types" - ] - } - }, - "/organizationListTypes": { - "post": { - "operationId": "OrganizationListTypesController_create", - "summary": "Add organization list type", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrganizationListTypeDto" - } - } - } - }, - "responses": { - "201": { - "description": "Add organization list type", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganizationListTypeDto" - } - } - } - } - }, - "tags": [ - "organization list types" - ] - } - }, - "/organizationListTypes/{id}": { - "delete": { - "operationId": "OrganizationListTypesController_delete", - "summary": "Remove organization list type", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Remove organization list type" - } - }, - "tags": [ - "organization list types" - ] - } - }, - "/organizationUrls": { - "post": { - "operationId": "OrganizationUrlsController_create", - "summary": "Add organization url", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrganizationUrlDto" - } - } - } - }, - "responses": { - "201": { - "description": "Add organization url", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganizationUrlDto" - } - } - } - } - }, - "tags": [ - "organization urls" - ] - } - }, - "/organizationUrls/{id}": { - "put": { - "operationId": "OrganizationUrlsController_update", - "summary": "Update an organization url", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOrganizationUrlDto" - } - } - } - }, - "responses": { - "201": { - "description": "Update an organization url" - } - }, - "tags": [ - "organization urls" - ] - }, - "delete": { - "operationId": "OrganizationUrlsController_delete", - "summary": "Remove organization url", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Remove organization url" - } - }, - "tags": [ - "organization urls" - ] - } - } - }, - "info": { - "title": "Form System API", - "description": "This is an API for formbuilder and form-rendering (application) system", - "version": "1.0", - "contact": {} - }, - "tags": [], - "servers": [ - { - "url": "http://localhost:3434" - } - ], - "components": { - "schemas": { - "Liveness": { - "type": "object", - "properties": { - "ok": { - "type": "boolean" - } - }, - "required": [ - "ok" - ] - }, - "Version": { - "type": "object", - "properties": { - "version": { - "type": "string" - } - }, - "required": [ - "version" - ] - }, - "LanguageType": { - "type": "object", - "properties": { - "is": { - "type": "string", - "default": "" - }, - "en": { - "type": "string", - "default": "" - } - }, - "required": [ - "is", - "en" - ] - }, - "CreateOrganizationDto": { - "type": "object", - "properties": { - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "nationalId": { - "type": "string" - } - }, - "required": [ - "name", - "nationalId" - ] - }, - "Dependency": { - "type": "object", - "properties": { - "parentProp": { - "type": "string" - }, - "childProps": { - "type": "array", - "items": { - "type": "string" - } - }, - "isSelected": { - "type": "boolean" - } - }, - "required": [ - "parentProp", - "childProps", - "isSelected" - ] - }, - "FormCertificationTypeDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "certificationTypeId": { - "type": "string" - } - }, - "required": [ - "id", - "certificationTypeId" - ] - }, - "FormApplicantTypeDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "applicantTypeId": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/LanguageType" - } - }, - "required": [ - "id", - "applicantTypeId", - "name" - ] - }, - "FormUrlDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "organizationUrlId": { - "type": "string" - }, - "url": { - "type": "string" - }, - "isXroad": { - "type": "boolean" - }, - "isTest": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "method": { - "type": "string" - } - }, - "required": [ - "id", - "organizationUrlId", - "url", - "isXroad", - "isTest", - "type", - "method" - ] - }, - "FieldSettings": { - "type": "object", - "properties": { - "minValue": { - "type": "number" - }, - "maxValue": { - "type": "number" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - }, - "minDate": { - "format": "date-time", - "type": "string" - }, - "maxDate": { - "format": "date-time", - "type": "string" - }, - "minAmount": { - "type": "number" - }, - "maxAmount": { - "type": "number" - }, - "year": { - "type": "number" - }, - "hasLink": { - "type": "boolean" - }, - "url": { - "type": "string" - }, - "buttonText": { - "$ref": "#/components/schemas/LanguageType" - }, - "isLarge": { - "type": "boolean" - }, - "hasPropertyInput": { - "type": "boolean" - }, - "hasPropertyList": { - "type": "boolean" - }, - "listType": { - "type": "string", - "enum": [ - "9e1600f7-7d25-4997-9e8d-16e6d15cd901", - "2cd6cda1-ab72-4746-bb38-16b95b89ae75", - "1df24f32-1481-4775-81eb-0cf0a5eb9328", - "7aa0396f-2574-40cb-8ea4-299a5b62b22d", - "7bfc3703-af37-455b-b9a1-8b612f46184b", - "f50779b3-464c-42e3-9cc3-8914886f9bf7" - ] - }, - "fileTypes": { - "type": "string" - }, - "fileMaxSize": { - "type": "number" - }, - "maxFiles": { - "type": "number" - }, - "timeInterval": { - "type": "string" - } - } - }, - "ListItemDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "label": { - "$ref": "#/components/schemas/LanguageType" - }, - "description": { - "$ref": "#/components/schemas/LanguageType" - }, - "value": { - "type": "string" - }, - "displayOrder": { - "type": "number" - }, - "isSelected": { - "type": "boolean" - } - }, - "required": [ - "id", - "label", - "value", - "displayOrder", - "isSelected" - ] - }, - "Month": { - "type": "object", - "properties": { - "month": { - "type": "number" - }, - "amount": { - "type": "number" - }, - "days": { - "type": "array", - "items": { - "type": "number" - } - } - } - }, - "ValueType": { - "type": "object", - "properties": { - "text": { - "type": "string" - }, - "number": { - "type": "number" - }, - "date": { - "format": "date-time", - "type": "string" - }, - "listValue": { - "type": "string" - }, - "nationalId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "address": { - "type": "string" - }, - "postalCode": { - "type": "string" - }, - "municipality": { - "type": "string" - }, - "jobTitle": { - "type": "string" - }, - "altName": { - "type": "string" - }, - "homestayNumber": { - "type": "string" - }, - "propertyNumber": { - "type": "string" - }, - "totalDays": { - "type": "number" - }, - "totalAmount": { - "type": "number" - }, - "year": { - "type": "number" - }, - "isNullReport": { - "type": "boolean" - }, - "months": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Month" - } - }, - "email": { - "type": "string" - }, - "iskNumber": { - "type": "string" - }, - "checkboxValue": { - "type": "boolean" - }, - "phoneNumber": { - "type": "string" - }, - "bankAccount": { - "type": "string" - }, - "time": { - "type": "string" - } - } - }, - "ValueDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "order": { - "type": "number" - }, - "json": { - "$ref": "#/components/schemas/ValueType" - } - }, - "required": [ - "id", - "order", - "json" - ] - }, - "FieldDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "screenId": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "displayOrder": { - "type": "number" - }, - "description": { - "$ref": "#/components/schemas/LanguageType" - }, - "isPartOfMultiset": { - "type": "boolean" - }, - "isRequired": { - "type": "boolean" - }, - "isHidden": { - "type": "boolean" - }, - "fieldSettings": { - "$ref": "#/components/schemas/FieldSettings" - }, - "fieldType": { - "type": "string" - }, - "list": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ListItemDto" - } - }, - "values": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ValueDto" - } - } - }, - "required": [ - "id", - "screenId", - "name", - "displayOrder", - "description", - "isPartOfMultiset", - "isRequired", - "isHidden", - "fieldType" - ] - }, - "ScreenDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "sectionId": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "displayOrder": { - "type": "number" - }, - "isHidden": { - "type": "boolean" - }, - "isCompleted": { - "type": "boolean" - }, - "multiset": { - "type": "number" - }, - "callRuleset": { - "type": "boolean" - }, - "fields": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FieldDto" - } - } - }, - "required": [ - "id", - "sectionId", - "name", - "displayOrder", - "isHidden", - "isCompleted", - "multiset", - "callRuleset" - ] - }, - "SectionDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "sectionType": { - "type": "string", - "enum": [ - "premises", - "parties", - "input", - "payment" - ] - }, - "displayOrder": { - "type": "number" - }, - "waitingText": { - "$ref": "#/components/schemas/LanguageType" - }, - "isHidden": { - "type": "boolean" - }, - "isCompleted": { - "type": "boolean" - }, - "screens": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ScreenDto" - } - } - }, - "required": [ - "id", - "name", - "sectionType", - "displayOrder", - "isHidden", - "isCompleted" - ] - }, - "FormDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "slug": { - "type": "string" - }, - "invalidationDate": { - "format": "date-time", - "type": "string" - }, - "created": { - "format": "date-time", - "type": "string" - }, - "modified": { - "format": "date-time", - "type": "string" - }, - "isTranslated": { - "type": "boolean" - }, - "applicationDaysToRemove": { - "type": "number" - }, - "derivedFrom": { - "type": "number" - }, - "status": { - "type": "string", - "enum": [ - "a9d495ea-433a-46d4-84ba-8604cc8c7d40", - "3ea7923b-e2a8-499d-b2db-42336bfe7c0b", - "06459c6f-9f1e-4ddd-bbd8-e553d9a4363e", - "c095bb71-b4ab-4a7c-9be4-4621b62591ce", - "11c9db90-2065-45d5-b649-c98001c10dcb" - ] - }, - "stopProgressOnValidatingScreen": { - "type": "boolean" - }, - "completedMessage": { - "$ref": "#/components/schemas/LanguageType" - }, - "dependencies": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Dependency" - } - }, - "certificationTypes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FormCertificationTypeDto" - } - }, - "applicantTypes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FormApplicantTypeDto" - } - }, - "urls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FormUrlDto" - } - }, - "sections": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SectionDto" - } - }, - "screens": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ScreenDto" - } - }, - "fields": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FieldDto" - } - } - }, - "required": [ - "id", - "organizationId", - "name", - "slug", - "created", - "modified", - "isTranslated", - "applicationDaysToRemove", - "derivedFrom", - "status", - "stopProgressOnValidatingScreen" - ] - }, - "OrganizationDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "nationalId": { - "type": "string" - }, - "forms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FormDto" - } - } - }, - "required": [ - "id", - "name", - "nationalId" - ] - }, - "OrganizationsResponseDto": { - "type": "object", - "properties": { - "organizations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganizationDto" - } - } - }, - "required": [ - "organizations" + "required": [ + "is", + "en" ] }, - "CreateFormDto": { + "CreateOrganizationDto": { "type": "object", "properties": { - "organizationId": { + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "nationalId": { "type": "string" } }, "required": [ - "organizationId" + "name", + "nationalId" ] }, - "FieldType": { + "CertificationTypeDto": { "type": "object", "properties": { "id": { @@ -2241,174 +1408,308 @@ "description": { "$ref": "#/components/schemas/LanguageType" }, - "isCommon": { - "type": "boolean" - }, - "fieldSettings": { - "$ref": "#/components/schemas/FieldSettings" - }, - "values": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ValueDto" - } + "type": { + "type": "string", + "enum": [ + "estateGuardianshipCertificateStamped", + "estateGuardianshipCertificateUnstamped", + "residenceCertificate", + "indebtednessCertificate", + "criminalRecordStamped", + "criminalRecordUnstamped" + ] } }, "required": [ "id", "name", "description", - "isCommon" + "type" ] }, - "CertificationType": { + "FormApplicantDto": { "type": "object", "properties": { "id": { "type": "string" }, + "applicantType": { + "type": "string", + "enum": [ + "individual", + "individualWithDelegationFromIndividual", + "individualWithDelegationFromLegalEntity", + "individualWithProcuration", + "individualGivingDelegation", + "legalEntity" + ] + }, "name": { "$ref": "#/components/schemas/LanguageType" + } + }, + "required": [ + "id", + "applicantType", + "name" + ] + }, + "ListItemDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "label": { + "$ref": "#/components/schemas/LanguageType" }, "description": { "$ref": "#/components/schemas/LanguageType" }, - "isCommon": { + "value": { + "type": "string" + }, + "displayOrder": { + "type": "number" + }, + "isSelected": { "type": "boolean" } }, "required": [ "id", - "name", - "description", - "isCommon" + "label", + "value", + "displayOrder", + "isSelected" ] }, - "ApplicantType": { + "FieldSettingsDto": { "type": "object", "properties": { - "id": { + "minValue": { + "type": "number" + }, + "maxValue": { + "type": "number" + }, + "minLength": { + "type": "number" + }, + "maxLength": { + "type": "number" + }, + "minDate": { + "format": "date-time", "type": "string" }, - "description": { - "$ref": "#/components/schemas/LanguageType" + "maxDate": { + "format": "date-time", + "type": "string" }, - "name": { - "$ref": "#/components/schemas/LanguageType" + "minAmount": { + "type": "string" + }, + "maxAmount": { + "type": "string" + }, + "year": { + "type": "number" + }, + "hasLink": { + "type": "boolean" + }, + "url": { + "type": "string" + }, + "buttonText": { + "type": "string" }, - "nameSuggestions": { + "hasPropertyInput": { + "type": "boolean" + }, + "hasPropertyList": { + "type": "boolean" + }, + "list": { "type": "array", "items": { - "$ref": "#/components/schemas/LanguageType" + "$ref": "#/components/schemas/ListItemDto" } + }, + "listType": { + "type": "string" + }, + "fileTypes": { + "type": "string" + }, + "fileMaxSize": { + "type": "number" + }, + "maxFiles": { + "type": "number" + }, + "timeInterval": { + "type": "string" } - }, - "required": [ - "id", - "description" - ] + } }, - "ListType": { + "FieldDto": { "type": "object", "properties": { "id": { "type": "string" }, + "screenId": { + "type": "string" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, + "displayOrder": { + "type": "number" + }, "description": { "$ref": "#/components/schemas/LanguageType" }, - "isCommon": { + "isPartOfMultiset": { "type": "boolean" + }, + "fieldSettings": { + "$ref": "#/components/schemas/FieldSettingsDto" + }, + "fieldType": { + "type": "string", + "enum": [ + "default", + "email", + "propertyNumber", + "iskNumberbox", + "checkbox", + "datePicker", + "numberbox", + "payer", + "nationaIdEstate", + "phoneNumber", + "message", + "radioButtons", + "document", + "bankAccount", + "nationalId", + "homestayNumber", + "iskSumbox", + "dropdownList", + "nationalIdAll", + "timeInput", + "homestayOverview", + "payment", + "textbox" + ] } }, "required": [ "id", + "screenId", "name", + "displayOrder", "description", - "isCommon" + "isPartOfMultiset", + "fieldType" ] }, - "OrganizationUrlDto": { + "ScreenDto": { "type": "object", "properties": { "id": { "type": "string" }, - "url": { + "sectionId": { "type": "string" }, - "isXroad": { - "type": "boolean" + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "displayOrder": { + "type": "number" }, - "isTest": { + "isHidden": { "type": "boolean" }, - "type": { - "type": "string" + "multiset": { + "type": "number" }, - "method": { - "type": "string" + "callRuleset": { + "type": "boolean" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDto" + } } }, "required": [ "id", - "url", - "isXroad", - "isTest", - "type", - "method" + "sectionId", + "name", + "displayOrder", + "isHidden", + "multiset", + "callRuleset" ] }, - "FormResponseDto": { + "SectionDto": { "type": "object", "properties": { - "form": { - "$ref": "#/components/schemas/FormDto" + "id": { + "type": "string" }, - "fieldTypes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FieldType" - } + "name": { + "$ref": "#/components/schemas/LanguageType" }, - "certificationTypes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CertificationType" - } + "sectionType": { + "type": "string", + "enum": [ + "premises", + "parties", + "input", + "payment" + ] }, - "applicantTypes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ApplicantType" - } + "displayOrder": { + "type": "number" }, - "listTypes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ListType" - } + "waitingText": { + "$ref": "#/components/schemas/LanguageType" }, - "urls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganizationUrlDto" - } + "isHidden": { + "type": "boolean" }, - "forms": { + "isCompleted": { + "type": "boolean" + }, + "screens": { "type": "array", "items": { - "$ref": "#/components/schemas/FormDto" + "$ref": "#/components/schemas/ScreenDto" } } - } + }, + "required": [ + "id", + "name", + "sectionType", + "displayOrder", + "isHidden", + "isCompleted" + ] }, - "UpdateFormDto": { + "FormDto": { "type": "object", "properties": { + "id": { + "type": "string" + }, "organizationId": { "type": "string" }, @@ -2422,578 +1723,621 @@ "format": "date-time", "type": "string" }, + "created": { + "format": "date-time", + "type": "string" + }, + "modified": { + "format": "date-time", + "type": "string" + }, "isTranslated": { "type": "boolean" }, "applicationDaysToRemove": { "type": "number" }, + "derivedFrom": { + "type": "number" + }, "stopProgressOnValidatingScreen": { "type": "boolean" }, - "completedMessage": { - "$ref": "#/components/schemas/LanguageType" + "completedMessage": { + "$ref": "#/components/schemas/LanguageType" + }, + "certificationTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CertificationTypeDto" + } + }, + "applicants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FormApplicantDto" + } + }, + "sections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SectionDto" + } }, - "dependencies": { + "screens": { "type": "array", "items": { - "$ref": "#/components/schemas/Dependency" + "$ref": "#/components/schemas/ScreenDto" } - } - } - }, - "CreateSectionDto": { - "type": "object", - "properties": { - "formId": { - "type": "string" }, - "displayOrder": { - "type": "number" + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDto" + } } }, "required": [ - "formId", - "displayOrder" + "id", + "organizationId", + "name", + "slug", + "created", + "modified", + "isTranslated", + "applicationDaysToRemove", + "derivedFrom", + "stopProgressOnValidatingScreen" ] }, - "UpdateSectionDto": { + "OrganizationDto": { "type": "object", "properties": { + "id": { + "type": "string" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, - "waitingText": { - "$ref": "#/components/schemas/LanguageType" - } - } - }, - "SectionDisplayOrderDto": { - "type": "object", - "properties": { - "id": { + "nationalId": { "type": "string" + }, + "forms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FormDto" + } } }, "required": [ - "id" + "id", + "name", + "nationalId" ] }, - "UpdateSectionsDisplayOrderDto": { + "OrganizationsResponseDto": { "type": "object", "properties": { - "sectionsDisplayOrderDto": { + "organizations": { "type": "array", "items": { - "$ref": "#/components/schemas/SectionDisplayOrderDto" + "$ref": "#/components/schemas/OrganizationDto" } } }, "required": [ - "sectionsDisplayOrderDto" + "organizations" ] }, - "CreateScreenDto": { + "HttpProblemResponse": { "type": "object", "properties": { - "sectionId": { - "type": "string" + "type": { + "type": "object", + "description": "A URI reference that identifies the problem type" }, - "displayOrder": { - "type": "number" - } - }, - "required": [ - "sectionId", - "displayOrder" - ] - }, - "UpdateScreenDto": { - "type": "object", - "properties": { - "name": { - "$ref": "#/components/schemas/LanguageType" + "title": { + "type": "string", + "description": "A short, human-readable summary of the problem type" }, - "multiset": { - "type": "number" + "status": { + "type": "number", + "description": "The HTTP status code" }, - "callRuleset": { - "type": "boolean" - } - } - }, - "ScreenDisplayOrderDto": { - "type": "object", - "properties": { - "id": { - "type": "string" + "detail": { + "type": "string", + "description": "A human-readable explanation specific to this occurrence of the problem" }, - "sectionId": { - "type": "string" + "instance": { + "type": "string", + "description": "A URI reference that identifies the specific occurrence of the problem." } }, "required": [ - "id", - "sectionId" + "type", + "title" ] }, - "UpdateScreensDisplayOrderDto": { + "CreateFormDto": { "type": "object", "properties": { - "screensDisplayOrderDto": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ScreenDisplayOrderDto" - } + "organizationId": { + "type": "string" } }, "required": [ - "screensDisplayOrderDto" + "organizationId" ] }, - "CreateFieldDto": { + "FieldTypeDto": { "type": "object", "properties": { - "screenId": { + "id": { "type": "string" }, - "fieldType": { - "type": "string" + "type": { + "type": "string", + "enum": [ + "default", + "email", + "propertyNumber", + "iskNumberbox", + "checkbox", + "datePicker", + "numberbox", + "payer", + "nationaIdEstate", + "phoneNumber", + "message", + "radioButtons", + "document", + "bankAccount", + "nationalId", + "homestayNumber", + "iskSumbox", + "dropdownList", + "nationalIdAll", + "timeInput", + "homestayOverview", + "payment", + "textbox" + ] }, - "displayOrder": { - "type": "number" - } - }, - "required": [ - "screenId", - "fieldType", - "displayOrder" - ] - }, - "UpdateFieldDto": { - "type": "object", - "properties": { "name": { "$ref": "#/components/schemas/LanguageType" }, "description": { "$ref": "#/components/schemas/LanguageType" }, - "isPartOfMultiset": { - "type": "boolean" - }, - "isRequired": { + "isCommon": { "type": "boolean" }, "fieldSettings": { - "$ref": "#/components/schemas/FieldSettings" - }, - "fieldType": { - "type": "string", - "enum": [ - "b6a7e297-22fd-4426-a4e1-04a11a2e8914", - "eee2840d-a26f-4e9b-a21b-e4478c09e546", - "16603815-3db5-4aec-9bc7-56c1207bb79f", - "cdd63941-ff33-49d1-8b23-0293e413a281", - "f1d14fe1-9e70-4ab2-8f95-8a06a9cf9f48", - "0420775e-ab81-47fc-85af-6c40be3844ac", - "720fb3a3-6a85-456e-8173-b5913e219dc5", - "1f56b93b-8290-4409-8fe0-1b297338e672", - "dc50f154-0dfa-4597-80b8-6f3d9ebc36b1", - "d6c292c7-4e7c-44a6-bb7e-b956122598b0", - "ff7f8580-0419-4f07-9551-fc407d6fb796", - "f806a35b-12c9-4d24-8845-024f77e077f7", - "0e104698-4e58-4874-97a2-a8fd8d3ab7c4", - "1955db2d-c1e3-42ed-b6c5-a668c6136e38", - "cd73ebb6-6573-490a-9bd1-1e693a9229eb", - "6df647aa-27c8-48b1-8ac9-05e8b4251892", - "15a57466-0be3-451d-988d-5b807fea3459", - "7cbbe78f-cd5f-4fb9-a77c-86af2bf986b1", - "ac3fa8a0-9258-49d1-aff2-1dacf31538f0", - "94819d53-69b6-464b-abda-3bb6299d2511", - "83f6f77d-1ca7-4f99-8806-05cec59a48e4", - "6a616adc-80ab-47c1-8037-1d9a8dc68a5c", - "d4143c45-6d45-4052-93c6-42d46572a874" - ] - } - } - }, - "FieldDisplayOrderDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "screenId": { - "type": "string" + "$ref": "#/components/schemas/FieldSettingsDto" } }, "required": [ "id", - "screenId" - ] - }, - "UpdateFieldsDisplayOrderDto": { - "type": "object", - "properties": { - "fieldsDisplayOrderDto": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FieldDisplayOrderDto" - } - } - }, - "required": [ - "fieldsDisplayOrderDto" + "type", + "name", + "description", + "isCommon" ] }, - "CreateListItemDto": { + "ListTypeDto": { "type": "object", "properties": { - "fieldId": { + "id": { "type": "string" }, - "displayOrder": { - "type": "number" - } - }, - "required": [ - "fieldId", - "displayOrder" - ] - }, - "UpdateListItemDto": { - "type": "object", - "properties": { - "label": { + "name": { "$ref": "#/components/schemas/LanguageType" }, "description": { "$ref": "#/components/schemas/LanguageType" }, - "value": { + "type": { "type": "string" }, - "isSelected": { + "isCommon": { "type": "boolean" } - } - }, - "ListItemDisplayOrderDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - } }, "required": [ - "id" + "id", + "name", + "description", + "type", + "isCommon" ] }, - "UpdateListItemsDisplayOrderDto": { + "FormResponseDto": { "type": "object", "properties": { - "listItemsDisplayOrderDto": { + "form": { + "$ref": "#/components/schemas/FormDto" + }, + "fieldTypes": { "type": "array", "items": { - "$ref": "#/components/schemas/ListItemDisplayOrderDto" - } - } - }, - "required": [ - "listItemsDisplayOrderDto" - ] - }, - "ApplicationDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "organizationName": { - "$ref": "#/components/schemas/LanguageType" - }, - "formId": { - "type": "string" - }, - "formName": { - "$ref": "#/components/schemas/LanguageType" - }, - "isTest": { - "type": "boolean" - }, - "slug": { - "type": "string" - }, - "created": { - "format": "date-time", - "type": "string" - }, - "modified": { - "format": "date-time", - "type": "string" + "$ref": "#/components/schemas/FieldTypeDto" + } }, - "dependencies": { + "certificationTypes": { "type": "array", "items": { - "$ref": "#/components/schemas/Dependency" + "$ref": "#/components/schemas/CertificationTypeDto" } }, - "completed": { + "listTypes": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/ListTypeDto" } }, - "status": { - "type": "string", - "enum": [ - "ee2545cc-b27f-4d75-bc82-b57f9d10c1b3", - "7108cc27-9834-46d4-b651-a369bbadc522", - "22b3ab87-4d42-4987-b6fe-33abcf05f112", - "f7ee473d-66b9-4a1d-b416-5b1e161a580f", - "f5203b2c-6507-482e-ab75-e82954f9377a", - "2497f6f3-4b7e-4a6b-bc1e-9084ea2ad72f" - ] - }, - "sections": { + "forms": { "type": "array", "items": { - "$ref": "#/components/schemas/SectionDto" + "$ref": "#/components/schemas/FormDto" } } } }, - "CreateApplicationDto": { + "CreateSectionDto": { "type": "object", "properties": { - "isTest": { - "type": "boolean" + "formId": { + "type": "string" } }, "required": [ - "isTest" + "formId" ] }, - "UpdateApplicationDto": { + "UpdateSectionDto": { "type": "object", "properties": { - "dependencies": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Dependency" - } + "name": { + "$ref": "#/components/schemas/LanguageType" }, - "completed": { - "type": "array", - "items": { - "type": "string" - } + "waitingText": { + "$ref": "#/components/schemas/LanguageType" } - } + }, + "required": [ + "name" + ] }, - "CreateValueDto": { + "SectionDisplayOrderDto": { "type": "object", "properties": { - "order": { - "type": "number" - }, - "fieldId": { - "type": "string" - }, - "applicationId": { + "id": { "type": "string" } }, "required": [ - "order", - "fieldId", - "applicationId" + "id" ] }, - "UpdateValueDto": { + "UpdateSectionsDisplayOrderDto": { "type": "object", "properties": { - "json": { - "$ref": "#/components/schemas/ValueType" + "sectionsDisplayOrderDto": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SectionDisplayOrderDto" + } } }, "required": [ - "json" + "sectionsDisplayOrderDto" ] }, - "CreateFormApplicantTypeDto": { + "CreateScreenDto": { "type": "object", "properties": { - "formId": { - "type": "string" - }, - "applicantTypeId": { + "sectionId": { "type": "string" } }, "required": [ - "formId", - "applicantTypeId" + "sectionId" ] }, - "UpdateFormApplicantTypeDto": { + "UpdateScreenDto": { "type": "object", "properties": { "name": { "$ref": "#/components/schemas/LanguageType" + }, + "multiset": { + "type": "number" + }, + "callRuleset": { + "type": "boolean" } }, "required": [ - "name" + "name", + "multiset", + "callRuleset" ] }, - "CreateFormCertificationTypeDto": { + "ScreenDisplayOrderDto": { "type": "object", "properties": { - "formId": { + "id": { "type": "string" }, - "certificationTypeId": { + "sectionId": { "type": "string" } }, "required": [ - "formId", - "certificationTypeId" + "id", + "sectionId" ] }, - "CreateFormUrlDto": { + "UpdateScreensDisplayOrderDto": { "type": "object", "properties": { - "formId": { - "type": "string" - }, - "organizationUrlId": { + "screensDisplayOrderDto": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScreenDisplayOrderDto" + } + } + }, + "required": [ + "screensDisplayOrderDto" + ] + }, + "CreateFieldDto": { + "type": "object", + "properties": { + "screenId": { "type": "string" } }, "required": [ - "formId", - "organizationUrlId" + "screenId" ] }, - "CreateOrganizationCertificationTypeDto": { + "UpdateFieldSettingsDto": { "type": "object", "properties": { - "organizationId": { + "minValue": { + "type": "number" + }, + "maxValue": { + "type": "number" + }, + "minLength": { + "type": "number" + }, + "maxLength": { + "type": "number" + }, + "minDate": { + "format": "date-time", + "type": "string" + }, + "maxDate": { + "format": "date-time", + "type": "string" + }, + "minAmount": { + "type": "string" + }, + "maxAmount": { + "type": "string" + }, + "year": { + "type": "number" + }, + "hasLink": { + "type": "boolean" + }, + "url": { + "type": "string" + }, + "buttonText": { + "type": "string" + }, + "hasPropertyInput": { + "type": "boolean" + }, + "hasPropertyList": { + "type": "boolean" + }, + "listType": { + "type": "string" + }, + "fileTypes": { "type": "string" }, - "certificationTypeId": { + "fileMaxSize": { + "type": "number" + }, + "maxFiles": { + "type": "number" + }, + "timeInterval": { "type": "string" } + } + }, + "UpdateFieldDto": { + "type": "object", + "properties": { + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "description": { + "$ref": "#/components/schemas/LanguageType" + }, + "isPartOfMultiset": { + "type": "boolean" + }, + "fieldSettings": { + "$ref": "#/components/schemas/UpdateFieldSettingsDto" + }, + "fieldType": { + "type": "string", + "enum": [ + "default", + "email", + "propertyNumber", + "iskNumberbox", + "checkbox", + "datePicker", + "numberbox", + "payer", + "nationaIdEstate", + "phoneNumber", + "message", + "radioButtons", + "document", + "bankAccount", + "nationalId", + "homestayNumber", + "iskSumbox", + "dropdownList", + "nationalIdAll", + "timeInput", + "homestayOverview", + "payment", + "textbox" + ] + } }, "required": [ - "organizationId", - "certificationTypeId" + "name", + "description", + "isPartOfMultiset", + "fieldSettings", + "fieldType" ] }, - "OrganizationCertificationTypeDto": { + "FieldDisplayOrderDto": { "type": "object", "properties": { "id": { "type": "string" }, - "certificationTypeId": { + "screenId": { "type": "string" } }, "required": [ "id", - "certificationTypeId" + "screenId" ] }, - "CreateOrganizationFieldTypeDto": { + "UpdateFieldsDisplayOrderDto": { "type": "object", "properties": { - "organizationId": { - "type": "string" - }, - "fieldTypeId": { - "type": "string" + "fieldsDisplayOrderDto": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDisplayOrderDto" + } } }, "required": [ - "organizationId", - "fieldTypeId" + "fieldsDisplayOrderDto" ] }, - "OrganizationFieldTypeDto": { + "CreateListItemDto": { "type": "object", "properties": { - "id": { + "fieldId": { "type": "string" }, - "fieldTypeId": { - "type": "string" + "displayOrder": { + "type": "number" } }, "required": [ - "id", - "fieldTypeId" + "fieldId", + "displayOrder" ] }, - "CreateOrganizationListTypeDto": { + "UpdateListItemDto": { "type": "object", "properties": { - "organizationId": { - "type": "string" + "label": { + "$ref": "#/components/schemas/LanguageType" }, - "listTypeId": { + "description": { + "$ref": "#/components/schemas/LanguageType" + }, + "value": { "type": "string" + }, + "isSelected": { + "type": "boolean" } }, "required": [ - "organizationId", - "listTypeId" + "label", + "value", + "isSelected" ] }, - "OrganizationListTypeDto": { + "ListItemDisplayOrderDto": { "type": "object", "properties": { "id": { "type": "string" - }, - "listTypeId": { - "type": "string" } }, "required": [ - "id", - "listTypeId" + "id" ] }, - "CreateOrganizationUrlDto": { + "UpdateListItemsDisplayOrderDto": { "type": "object", "properties": { - "organizationId": { - "type": "string" - }, - "type": { - "type": "string" + "listItemsDisplayOrderDto": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ListItemDisplayOrderDto" + } } }, "required": [ - "organizationId", - "type" + "listItemsDisplayOrderDto" ] }, - "UpdateOrganizationUrlDto": { + "ApplicationDto": { "type": "object", "properties": { - "url": { + "id": { "type": "string" }, - "isXroad": { - "type": "boolean" + "organization": { + "$ref": "#/components/schemas/OrganizationDto" + }, + "formId": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "created": { + "format": "date-time", + "type": "string" }, - "method": { + "modified": { + "format": "date-time", "type": "string" + }, + "sections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SectionDto" + } } } } From c87dc50300ee3dac52bc65fbca9a81a95b0b3967 Mon Sep 17 00:00:00 2001 From: Hyosam <138776707+Hyosam@users.noreply.github.com> Date: Mon, 9 Dec 2024 13:36:39 +0000 Subject: [PATCH 120/129] Fixed forms resolver --- .../form-system/src/lib/forms/forms.resolver.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index d141c09a6fca..86217185f83f 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -8,17 +8,9 @@ import { CodeOwner } from '@island.is/nest/core' import { CodeOwners } from '@island.is/shared/constants' import { UseGuards } from '@nestjs/common' import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' -import { - CreateFormInput, - DeleteFormInput, - GetFormInput, - GetFormsInput, - UpdateFormInput, -} from '../../dto/forms.input' -import { UpdateFormSettingsInput } from '../../dto/updateFormSettings.input' -import { FormListResponse } from '../../models/formListResponse.model' -import { FormResponse } from '../../models/formResponse.model' import { FormsService } from './forms.service' +import { CreateFormInput, DeleteFormInput, GetFormInput, GetAllFormsInput, UpdateFormInput } from '../../dto/form.input' +import { FormResponse } from '../../models/form.model' @Resolver() @UseGuards(IdsUserGuard) From 4ea7123ebb1d41a33d542d6df0964edaf552c810 Mon Sep 17 00:00:00 2001 From: Hyosam <hyo-sam.nandkisore@advania.is> Date: Tue, 10 Dec 2024 10:57:06 +0000 Subject: [PATCH 121/129] Merge branch 'main' of https://github.com/island-is/island.is into HEAD --- infra/src/uber-charts/islandis.ts | 6 +- .../form-system/src/dto/section.input.ts | 9 +- .../src/lib/applicants/applicants.resolver.ts | 5 +- .../lib/applications/applications.resolver.ts | 5 +- .../lib/applications/applications.service.ts | 6 +- .../certification/certification.resolver.ts | 3 + .../src/lib/fields/fields.resolver.ts | 3 + .../src/lib/listItems/listItems.resolver.ts | 5 +- .../organizations/organizations.resolver.ts | 5 +- .../src/lib/screens/screens.resolver.ts | 5 +- .../src/lib/sections/sections.resolver.ts | 3 + .../form-system/src/models/section.model.ts | 5 +- .../clients/form-system/src/clientConfig.json | 3046 +++++++++++------ .../components/MainContent/MainContent.tsx | 8 +- .../components/NavComponent/NavComponent.tsx | 4 +- .../src/components/Navbar/Navbar.tsx | 9 +- .../Navbar/components/NavbarTab/NavbarTab.tsx | 5 +- .../components/NavbarSelect/NavbarSelect.tsx | 5 +- .../form-system/src/context/FormProvider.tsx | 5 +- .../form-system/src/hooks/controlReducer.ts | 4 +- .../form-system/src/lib/utils/defaultStep.tsx | 5 +- .../ui-components/src/lib/enums.ts | 9 +- yarn.lock | 13 + 23 files changed, 1991 insertions(+), 1182 deletions(-) diff --git a/infra/src/uber-charts/islandis.ts b/infra/src/uber-charts/islandis.ts index b99211f88ccd..0e848142e089 100644 --- a/infra/src/uber-charts/islandis.ts +++ b/infra/src/uber-charts/islandis.ts @@ -106,9 +106,9 @@ const authAdminApi = authAdminApiSetup() const universityGatewayService = universityGatewaySetup() const universityGatewayWorker = universityGatewayWorkerSetup() -const userNotificationService = userNotificationServiceSetup({ - userProfileApi: servicePortalApi, -}) +// const userNotificationService = userNotificationServiceSetup({ +// userProfileApi: servicePortalApi, +// }) const formSystemApi = formSystemApiSetup() diff --git a/libs/api/domains/form-system/src/dto/section.input.ts b/libs/api/domains/form-system/src/dto/section.input.ts index a230db7ae175..f0824b6585d1 100644 --- a/libs/api/domains/form-system/src/dto/section.input.ts +++ b/libs/api/domains/form-system/src/dto/section.input.ts @@ -1,12 +1,7 @@ import { Field, InputType, Int, registerEnumType } from '@nestjs/graphql' -import { SectionDtoSectionTypeEnum } from '@island.is/clients/form-system' import { LanguageTypeInput } from './languageType.input' import { ScreenInput } from './screen.input' -registerEnumType(SectionDtoSectionTypeEnum, { - name: 'FormSystemSectionDtoSectionTypeEnum', -}) - @InputType('FormSystemSectionDisplayOrderInput') export class SectionDisplayOrderInput { @Field(() => String, { nullable: true }) @@ -72,8 +67,8 @@ export class SectionInput { @Field(() => LanguageTypeInput, { nullable: true }) name?: LanguageTypeInput - @Field(() => SectionDtoSectionTypeEnum, { nullable: true }) - sectionType?: SectionDtoSectionTypeEnum + @Field(() => String, { nullable: true }) + sectionType?: string @Field(() => Int, { nullable: true }) displayOrder?: number diff --git a/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts b/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts index 18fe0c3d78ed..03a6584387f6 100644 --- a/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts @@ -1,4 +1,6 @@ import { UseGuards } from '@nestjs/common' +import { CodeOwner } from '@island.is/nest/core' +import { CodeOwners } from '@island.is/shared/constants' import { Args, Mutation, Resolver } from '@nestjs/graphql' import { CurrentUser, @@ -16,9 +18,10 @@ import { @Resolver() @UseGuards(IdsUserGuard) +@CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ApplicantsResolver { - constructor(private readonly applicantsService: ApplicantsService) {} + constructor(private readonly applicantsService: ApplicantsService) { } @Mutation(() => Applicant, { name: 'formSystemCreateApplicant', diff --git a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts index 4ed0ec6fce2c..645d4a8c48b4 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts @@ -1,4 +1,6 @@ import { UseGuards } from '@nestjs/common' +import { CodeOwner } from '@island.is/nest/core' +import { CodeOwners } from '@island.is/shared/constants' import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' import { CurrentUser, @@ -15,9 +17,10 @@ import { @Resolver() @UseGuards(IdsUserGuard) +@CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ApplicationsResolver { - constructor(private readonly applicationsService: ApplicationsService) {} + constructor(private readonly applicationsService: ApplicationsService) { } @Query(() => Application, { name: 'formSystemGetApplication', diff --git a/libs/api/domains/form-system/src/lib/applications/applications.service.ts b/libs/api/domains/form-system/src/lib/applications/applications.service.ts index c10b87e4936a..b4d6dcb26e32 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.service.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.service.ts @@ -6,7 +6,7 @@ import { handle4xx } from '../../utils/errorHandler' import { ApplicationsApi, ApplicationsControllerCreateRequest, - ApplicationsControllerGetPreviewRequest, + ApplicationsControllerGetApplicationRequest, } from '@island.is/clients/form-system' import { CreateApplicationInput, @@ -60,8 +60,8 @@ export class ApplicationsService { input: GetApplicationInput, ): Promise<Application> { const response = await this.applicationsApiWithAuth(auth) - .applicationsControllerGetPreview( - input as ApplicationsControllerGetPreviewRequest, + .applicationsControllerGetApplication( + input as ApplicationsControllerGetApplicationRequest, ) .catch((e) => handle4xx(e, this.handleError, 'failed to get application')) diff --git a/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts b/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts index 961730227a81..c7fc4d7472d9 100644 --- a/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts +++ b/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts @@ -1,4 +1,6 @@ import { UseGuards } from '@nestjs/common' +import { CodeOwner } from '@island.is/nest/core' +import { CodeOwners } from '@island.is/shared/constants' import { Args, Mutation, Resolver } from '@nestjs/graphql' import { CurrentUser, @@ -12,6 +14,7 @@ import { FormCertificationTypeDto } from '../../models/certification.model' @Resolver() @UseGuards(IdsUserGuard) +@CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class CertificationsResolver { constructor(private readonly certificationsService: CertificationsService) { } diff --git a/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts b/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts index db1f0feb5f57..2cefb198e7b7 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts @@ -1,4 +1,6 @@ import { UseGuards } from '@nestjs/common' +import { CodeOwner } from '@island.is/nest/core' +import { CodeOwners } from '@island.is/shared/constants' import { Args, Mutation, Resolver } from '@nestjs/graphql' import { CurrentUser, @@ -17,6 +19,7 @@ import { Field } from '../../models/field.model' @Resolver() @UseGuards(IdsUserGuard) +@CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class FieldsResolver { constructor(private readonly fieldsService: FieldsService) { } diff --git a/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts b/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts index c38442be6d2c..b5609cd23364 100644 --- a/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts +++ b/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts @@ -1,4 +1,6 @@ import { UseGuards } from '@nestjs/common' +import { CodeOwner } from '@island.is/nest/core' +import { CodeOwners } from '@island.is/shared/constants' import { Args, Mutation, Resolver } from '@nestjs/graphql' import { CurrentUser, @@ -17,9 +19,10 @@ import { ListItem } from '../../models/listItem.model' @Resolver() @UseGuards(IdsUserGuard) +@CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ListItemsResolver { - constructor(private readonly listItemsService: ListItemsService) {} + constructor(private readonly listItemsService: ListItemsService) { } @Mutation(() => ListItem, { name: 'formSystemCreateListItem', diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts index e024fe72d072..287e5cc5b8dd 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts @@ -1,17 +1,16 @@ import { CodeOwner } from '@island.is/nest/core' import { CodeOwners } from '@island.is/shared/constants' import { Args, Mutation, Resolver, Query } from '@nestjs/graphql' -import { OrganizationsService } from './organizations.services' -import { CreateOrganizationInput } from '../../dto/organization.input' +import { OrganizationsService } from './organizations.service' import { CurrentUser, IdsUserGuard, type User, } from '@island.is/auth-nest-tools' import { Audit } from '@island.is/nest/audit' -import { OrganizationsService } from './organizations.service' import { Organization } from '../../models/organization.model' import { GetOrganizationInput } from '../../dto/organization.input' +import { UseGuards } from '@nestjs/common' @Resolver() @UseGuards(IdsUserGuard) diff --git a/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts b/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts index c560fe0f752e..c7a66b33b290 100644 --- a/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts +++ b/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts @@ -1,4 +1,6 @@ import { UseGuards } from '@nestjs/common' +import { CodeOwner } from '@island.is/nest/core' +import { CodeOwners } from '@island.is/shared/constants' import { Args, Mutation, Resolver } from '@nestjs/graphql' import { CurrentUser, @@ -17,9 +19,10 @@ import { Screen } from '../../models/screen.model' @Resolver() @UseGuards(IdsUserGuard) +@CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ScreensResolver { - constructor(private readonly screensService: ScreensService) {} + constructor(private readonly screensService: ScreensService) { } @Mutation(() => Screen, { name: 'formSystemCreateScreen', diff --git a/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts b/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts index 20f7b4177b87..55c60691a5bc 100644 --- a/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts +++ b/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts @@ -1,4 +1,6 @@ import { UseGuards } from '@nestjs/common' +import { CodeOwner } from '@island.is/nest/core' +import { CodeOwners } from '@island.is/shared/constants' import { Args, Mutation, Resolver } from '@nestjs/graphql' import { CurrentUser, @@ -17,6 +19,7 @@ import { Section } from '../../models/section.model' @Resolver() @UseGuards(IdsUserGuard) +@CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class SectionsResolver { constructor(private readonly sectionsService: SectionsService) { } diff --git a/libs/api/domains/form-system/src/models/section.model.ts b/libs/api/domains/form-system/src/models/section.model.ts index 9845536036de..b4b4d5499ff1 100644 --- a/libs/api/domains/form-system/src/models/section.model.ts +++ b/libs/api/domains/form-system/src/models/section.model.ts @@ -1,5 +1,4 @@ import { Field, ObjectType, Int } from '@nestjs/graphql' -import { SectionDtoSectionTypeEnum } from '@island.is/clients/form-system' import { LanguageType } from './languageType.model' import { Screen as ScreenModel } from './screen.model' @@ -11,8 +10,8 @@ export class Section { @Field(() => LanguageType, { nullable: true }) name?: LanguageType - @Field(() => SectionDtoSectionTypeEnum, { nullable: true }) - sectionType?: SectionDtoSectionTypeEnum + @Field(() => String, { nullable: true }) + sectionType?: string @Field(() => Int, { nullable: true }) displayOrder?: number diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index ed0c942da091..981cad4e4891 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -205,6 +205,7 @@ "/organizations": { "post": { "operationId": "OrganizationsController_create", + "summary": "Create an organization", "parameters": [], "requestBody": { "required": true, @@ -218,7 +219,14 @@ }, "responses": { "201": { - "description": "" + "description": "Create an organization", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationDto" + } + } + } } }, "tags": [ @@ -227,58 +235,15 @@ }, "get": { "operationId": "OrganizationsController_findAll", - "description": "Get all Organizations", + "summary": "Get all Organizations", "parameters": [], "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganizationsResponseDto" - } - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "500": { - "description": "", + "201": { + "description": "Get all Organizations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" + "$ref": "#/components/schemas/OrganizationsResponseDto" } } } @@ -292,7 +257,7 @@ "/organizations/{id}": { "get": { "operationId": "OrganizationsController_findOne", - "description": "Get Organization by id", + "summary": "Get an organization by id", "parameters": [ { "name": "id", @@ -304,8 +269,8 @@ } ], "responses": { - "200": { - "description": "", + "201": { + "description": "Get an organization by id", "content": { "application/json": { "schema": { @@ -313,46 +278,6 @@ } } } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } } }, "tags": [ @@ -363,6 +288,7 @@ "/forms": { "post": { "operationId": "FormsController_create", + "summary": "Create new form", "parameters": [], "requestBody": { "required": true, @@ -394,7 +320,7 @@ "/forms/organization/{organizationId}": { "get": { "operationId": "FormsController_findAll", - "description": "Get all forms belonging to organization", + "summary": "Get all forms belonging to organization", "parameters": [ { "name": "organizationId", @@ -406,8 +332,8 @@ } ], "responses": { - "200": { - "description": "", + "201": { + "description": "Get all forms belonging to organization", "content": { "application/json": { "schema": { @@ -415,46 +341,6 @@ } } } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } } }, "tags": [ @@ -465,7 +351,7 @@ "/forms/{id}": { "get": { "operationId": "FormsController_findOne", - "description": "Get FormResponse by formId", + "summary": "Get FormResponse by formId", "parameters": [ { "name": "id", @@ -477,8 +363,8 @@ } ], "responses": { - "200": { - "description": "", + "201": { + "description": "Get FormResponse by formId", "content": { "application/json": { "schema": { @@ -486,54 +372,47 @@ } } } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } + } + }, + "tags": [ + "forms" + ] + }, + "put": { + "operationId": "FormsController_updateForm", + "summary": "Update form", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateFormDto" } } } }, + "responses": { + "201": { + "description": "Update form" + } + }, "tags": [ "forms" ] }, "delete": { "operationId": "FormsController_delete", + "summary": "Delete form", "parameters": [ { "name": "id", @@ -545,8 +424,8 @@ } ], "responses": { - "200": { - "description": "" + "204": { + "description": "Delete field" } }, "tags": [ @@ -557,6 +436,7 @@ "/sections": { "post": { "operationId": "SectionsController_create", + "summary": "Creates a new section", "parameters": [], "requestBody": { "required": true, @@ -570,7 +450,14 @@ }, "responses": { "201": { - "description": "" + "description": "Creates a new section", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SectionDto" + } + } + } } }, "tags": [ @@ -579,7 +466,7 @@ }, "put": { "operationId": "SectionsController_updateDisplayOrder", - "description": "Update display order of sections", + "summary": "Update display order of sections", "parameters": [], "requestBody": { "required": true, @@ -593,47 +480,7 @@ }, "responses": { "204": { - "description": "" - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } + "description": "Update display order of sections" } }, "tags": [ @@ -642,8 +489,9 @@ } }, "/sections/{id}": { - "delete": { - "operationId": "SectionsController_delete", + "put": { + "operationId": "SectionsController_update", + "summary": "Updates a section", "parameters": [ { "name": "id", @@ -654,17 +502,28 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSectionDto" + } + } + } + }, "responses": { - "200": { - "description": "" + "201": { + "description": "Updates a section" } }, "tags": [ "sections" ] }, - "put": { - "operationId": "SectionsController_update", + "delete": { + "operationId": "SectionsController_delete", + "summary": "Delete section by id", "parameters": [ { "name": "id", @@ -675,19 +534,9 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSectionDto" - } - } - } - }, "responses": { - "200": { - "description": "" + "204": { + "description": "Delete section by id" } }, "tags": [ @@ -698,6 +547,7 @@ "/screens": { "post": { "operationId": "ScreensController_create", + "summary": "Creates a new screen", "parameters": [], "requestBody": { "required": true, @@ -711,7 +561,14 @@ }, "responses": { "201": { - "description": "" + "description": "Creates a new screen", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScreenDto" + } + } + } } }, "tags": [ @@ -720,7 +577,7 @@ }, "put": { "operationId": "ScreensController_updateDisplayOrder", - "description": "Update display order of screens", + "summary": "Update display order of screens", "parameters": [], "requestBody": { "required": true, @@ -734,47 +591,7 @@ }, "responses": { "204": { - "description": "" - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } + "description": "Update display order of screens" } }, "tags": [ @@ -785,6 +602,7 @@ "/screens/{id}": { "put": { "operationId": "ScreensController_update", + "summary": "Updates screen", "parameters": [ { "name": "id", @@ -806,8 +624,15 @@ } }, "responses": { - "200": { - "description": "" + "201": { + "description": "Updates a screen", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScreenDto" + } + } + } } }, "tags": [ @@ -816,6 +641,7 @@ }, "delete": { "operationId": "ScreensController_delete", + "summary": "Delete screen by id", "parameters": [ { "name": "id", @@ -827,8 +653,8 @@ } ], "responses": { - "200": { - "description": "" + "204": { + "description": "Delete screen by id" } }, "tags": [ @@ -839,6 +665,7 @@ "/fields": { "post": { "operationId": "FieldsController_create", + "summary": "Create a field", "parameters": [], "requestBody": { "required": true, @@ -852,7 +679,14 @@ }, "responses": { "201": { - "description": "" + "description": "Create a field", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FieldDto" + } + } + } } }, "tags": [ @@ -861,7 +695,7 @@ }, "put": { "operationId": "FieldsController_updateDisplayOrder", - "description": "Update display order of fields", + "summary": "Update display order of fields", "parameters": [], "requestBody": { "required": true, @@ -875,47 +709,7 @@ }, "responses": { "204": { - "description": "" - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } + "description": "Update display order of fields" } }, "tags": [ @@ -924,77 +718,9 @@ } }, "/fields/{id}": { - "get": { - "operationId": "FieldsController_findOne", - "description": "Get Field by id", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FieldDto" - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - } - }, - "tags": [ - "fields" - ] - }, "put": { "operationId": "FieldsController_update", + "summary": "Update field", "parameters": [ { "name": "id", @@ -1016,8 +742,8 @@ } }, "responses": { - "200": { - "description": "" + "204": { + "description": "Update field" } }, "tags": [ @@ -1026,6 +752,7 @@ }, "delete": { "operationId": "FieldsController_delete", + "summary": "Delete field by id", "parameters": [ { "name": "id", @@ -1037,8 +764,8 @@ } ], "responses": { - "200": { - "description": "" + "204": { + "description": "Delete field by id" } }, "tags": [ @@ -1049,6 +776,7 @@ "/listItems": { "post": { "operationId": "ListItemsController_create", + "summary": "Create a list item", "parameters": [], "requestBody": { "required": true, @@ -1062,7 +790,14 @@ }, "responses": { "201": { - "description": "" + "description": "Create a list item", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListItemDto" + } + } + } } }, "tags": [ @@ -1071,7 +806,7 @@ }, "put": { "operationId": "ListItemsController_updateDisplayOrder", - "description": "Update display order of list items", + "summary": "Update display order of list items", "parameters": [], "requestBody": { "required": true, @@ -1085,47 +820,7 @@ }, "responses": { "204": { - "description": "" - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } + "description": "Update display order of list items" } }, "tags": [ @@ -1136,6 +831,7 @@ "/listItems/{id}": { "put": { "operationId": "ListItemsController_update", + "summary": "Update list item", "parameters": [ { "name": "id", @@ -1157,8 +853,8 @@ } }, "responses": { - "200": { - "description": "" + "204": { + "description": "Update list item" } }, "tags": [ @@ -1167,6 +863,7 @@ }, "delete": { "operationId": "ListItemsController_delete", + "summary": "Delete list item", "parameters": [ { "name": "id", @@ -1178,8 +875,8 @@ } ], "responses": { - "200": { - "description": "" + "204": { + "description": "Delete of list items" } }, "tags": [ @@ -1187,13 +884,13 @@ ] } }, - "/applications": { + "/applications/{id}": { "get": { - "operationId": "ApplicationsController_getPreview", - "description": "Get application preview", + "operationId": "ApplicationsController_getApplication", + "summary": "Get an application by id", "parameters": [ { - "name": "formId", + "name": "id", "required": true, "in": "path", "schema": { @@ -1202,8 +899,8 @@ } ], "responses": { - "200": { - "description": "", + "201": { + "description": "Get an application by id", "content": { "application/json": { "schema": { @@ -1211,48 +908,40 @@ } } } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } + } + }, + "tags": [ + "applications" + ] + }, + "put": { + "operationId": "ApplicationsController_update", + "summary": "Update application dependencies", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateApplicationDto" } } } }, + "responses": { + "204": { + "description": "Update application dependencies" + } + }, "tags": [ "applications" ] @@ -1261,7 +950,7 @@ "/applications/{slug}": { "post": { "operationId": "ApplicationsController_create", - "description": "Create new application", + "summary": "Create new application", "parameters": [ { "name": "slug", @@ -1272,131 +961,1372 @@ } } ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApplicationDto" - } + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateApplicationDto" } } - }, - "400": { - "description": "", + } + }, + "responses": { + "201": { + "description": "Create new application", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" + "$ref": "#/components/schemas/ApplicationDto" } } } + } + }, + "tags": [ + "applications" + ] + } + }, + "/applications/submit/{id}": { + "post": { + "operationId": "ApplicationsController_submit", + "summary": "Submit application", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Submit application" + } + }, + "tags": [ + "applications" + ] + } + }, + "/applications/organization/{organizationId}": { + "get": { + "operationId": "ApplicationsController_findAll", + "summary": "Get all applications belonging to organization", + "parameters": [ + { + "name": "organizationId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } }, - "401": { - "description": "", + { + "name": "page", + "required": true, + "in": "query", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": true, + "in": "query", + "schema": { + "type": "number" + } + }, + { + "name": "isTest", + "required": true, + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "201": { + "description": "Get all applications belonging to organization", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationListDto" + } + } + } + } + }, + "tags": [ + "applications" + ] + } + }, + "/values": { + "post": { + "operationId": "ValuesController_create", + "summary": "Creates a new value", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateValueDto" + } + } + } + }, + "responses": { + "201": { + "description": "Creates a new value", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValueDto" + } + } + } + } + }, + "tags": [ + "values" + ] + } + }, + "/values/{id}": { + "put": { + "operationId": "ValuesController_update", + "summary": "Update a value", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateValueDto" + } + } + } + }, + "responses": { + "201": { + "description": "Update a value", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValueDto" + } + } + } + } + }, + "tags": [ + "values" + ] + }, + "delete": { + "operationId": "ValuesController_delete", + "summary": "Delete value by id", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Delete value by id" + } + }, + "tags": [ + "values" + ] + } + }, + "/formApplicantTypes": { + "post": { + "operationId": "FormApplicantTypesController_create", + "summary": "Add form applicant type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFormApplicantTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add form applicant type", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormApplicantTypeDto" + } + } + } + } + }, + "tags": [ + "form applicant types" + ] + } + }, + "/formApplicantTypes/{id}": { + "put": { + "operationId": "FormApplicantTypesController_update", + "summary": "Update form applicant", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateFormApplicantTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Update form applicant" + } + }, + "tags": [ + "form applicant types" + ] + }, + "delete": { + "operationId": "FormApplicantTypesController_delete", + "summary": "Delete form applicant", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Delete form applicant" + } + }, + "tags": [ + "form applicant types" + ] + } + }, + "/formCertificationTypes": { + "post": { + "operationId": "FormCertificationTypesController_create", + "summary": "Add form certification type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFormCertificationTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add form certification type", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" + "$ref": "#/components/schemas/FormCertificationTypeDto" } } } + } + }, + "tags": [ + "form certification types" + ] + } + }, + "/formCertificationTypes/{id}": { + "delete": { + "operationId": "FormCertificationTypesController_delete", + "summary": "Remove form certification type", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove form certification type" + } + }, + "tags": [ + "form certification types" + ] + } + }, + "/formUrls": { + "post": { + "operationId": "FormUrlsController_create", + "summary": "Add form url", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFormUrlDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add form url", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormUrlDto" + } + } + } + } + }, + "tags": [ + "form urls" + ] + } + }, + "/formUrls/{id}": { + "delete": { + "operationId": "FormUrlsController_delete", + "summary": "Remove form url", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove form url" + } + }, + "tags": [ + "form urls" + ] + } + }, + "/organizationCertificationTypes": { + "post": { + "operationId": "OrganizationCertificationTypesController_create", + "summary": "Add organization certification type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationCertificationTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add organization certification type", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationCertificationTypeDto" + } + } + } + } + }, + "tags": [ + "organization certification types" + ] + } + }, + "/organizationCertificationTypes/{id}": { + "delete": { + "operationId": "OrganizationCertificationTypesController_delete", + "summary": "Remove organization certification type", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove organization certification type" + } + }, + "tags": [ + "organization certification types" + ] + } + }, + "/organizationFieldTypes": { + "post": { + "operationId": "OrganizationFieldTypesController_create", + "summary": "Add organization field type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationFieldTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add organization field type", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationFieldTypeDto" + } + } + } + } + }, + "tags": [ + "organization field types" + ] + } + }, + "/organizationFieldTypes/{id}": { + "delete": { + "operationId": "OrganizationFieldTypesController_delete", + "summary": "Remove organization field type", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove organization field type" + } + }, + "tags": [ + "organization field types" + ] + } + }, + "/organizationListTypes": { + "post": { + "operationId": "OrganizationListTypesController_create", + "summary": "Add organization list type", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationListTypeDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add organization list type", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationListTypeDto" + } + } + } + } + }, + "tags": [ + "organization list types" + ] + } + }, + "/organizationListTypes/{id}": { + "delete": { + "operationId": "OrganizationListTypesController_delete", + "summary": "Remove organization list type", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove organization list type" + } + }, + "tags": [ + "organization list types" + ] + } + }, + "/organizationUrls": { + "post": { + "operationId": "OrganizationUrlsController_create", + "summary": "Add organization url", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationUrlDto" + } + } + } + }, + "responses": { + "201": { + "description": "Add organization url", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUrlDto" + } + } + } + } + }, + "tags": [ + "organization urls" + ] + } + }, + "/organizationUrls/{id}": { + "put": { + "operationId": "OrganizationUrlsController_update", + "summary": "Update an organization url", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateOrganizationUrlDto" + } + } + } + }, + "responses": { + "201": { + "description": "Update an organization url" + } + }, + "tags": [ + "organization urls" + ] + }, + "delete": { + "operationId": "OrganizationUrlsController_delete", + "summary": "Remove organization url", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Remove organization url" + } + }, + "tags": [ + "organization urls" + ] + } + } + }, + "info": { + "title": "Form System API", + "description": "This is an API for formbuilder and form-rendering (application) system", + "version": "1.0", + "contact": {} + }, + "tags": [], + "servers": [ + { + "url": "http://localhost:3434" + } + ], + "components": { + "schemas": { + "Liveness": { + "type": "object", + "properties": { + "ok": { + "type": "boolean" + } + }, + "required": [ + "ok" + ] + }, + "Version": { + "type": "object", + "properties": { + "version": { + "type": "string" + } + }, + "required": [ + "version" + ] + }, + "LanguageType": { + "type": "object", + "properties": { + "is": { + "type": "string", + "default": "" + }, + "en": { + "type": "string", + "default": "" + } + }, + "required": [ + "is", + "en" + ] + }, + "CreateOrganizationDto": { + "type": "object", + "properties": { + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "nationalId": { + "type": "string" + } + }, + "required": [ + "name", + "nationalId" + ] + }, + "Dependency": { + "type": "object", + "properties": { + "parentProp": { + "type": "string" + }, + "childProps": { + "type": "array", + "items": { + "type": "string" + } + }, + "isSelected": { + "type": "boolean" + } + }, + "required": [ + "parentProp", + "childProps", + "isSelected" + ] + }, + "FormCertificationTypeDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "certificationTypeId": { + "type": "string" + } + }, + "required": [ + "id", + "certificationTypeId" + ] + }, + "FormApplicantTypeDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "applicantTypeId": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/LanguageType" + } + }, + "required": [ + "id", + "applicantTypeId", + "name" + ] + }, + "FormUrlDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "organizationUrlId": { + "type": "string" + }, + "url": { + "type": "string" + }, + "isXroad": { + "type": "boolean" + }, + "isTest": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "method": { + "type": "string" + } + }, + "required": [ + "id", + "organizationUrlId", + "url", + "isXroad", + "isTest", + "type", + "method" + ] + }, + "FieldSettings": { + "type": "object", + "properties": { + "minValue": { + "type": "number" + }, + "maxValue": { + "type": "number" + }, + "minLength": { + "type": "number" + }, + "maxLength": { + "type": "number" + }, + "minDate": { + "format": "date-time", + "type": "string" + }, + "maxDate": { + "format": "date-time", + "type": "string" + }, + "minAmount": { + "type": "number" + }, + "maxAmount": { + "type": "number" + }, + "year": { + "type": "number" + }, + "hasLink": { + "type": "boolean" + }, + "url": { + "type": "string" + }, + "buttonText": { + "$ref": "#/components/schemas/LanguageType" + }, + "isLarge": { + "type": "boolean" + }, + "hasPropertyInput": { + "type": "boolean" + }, + "hasPropertyList": { + "type": "boolean" + }, + "listType": { + "type": "string", + "enum": [ + "9e1600f7-7d25-4997-9e8d-16e6d15cd901", + "2cd6cda1-ab72-4746-bb38-16b95b89ae75", + "1df24f32-1481-4775-81eb-0cf0a5eb9328", + "7aa0396f-2574-40cb-8ea4-299a5b62b22d", + "7bfc3703-af37-455b-b9a1-8b612f46184b", + "f50779b3-464c-42e3-9cc3-8914886f9bf7" + ] + }, + "fileTypes": { + "type": "string" + }, + "fileMaxSize": { + "type": "number" + }, + "maxFiles": { + "type": "number" + }, + "timeInterval": { + "type": "string" + } + } + }, + "ListItemDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "label": { + "$ref": "#/components/schemas/LanguageType" + }, + "description": { + "$ref": "#/components/schemas/LanguageType" + }, + "value": { + "type": "string" + }, + "displayOrder": { + "type": "number" + }, + "isSelected": { + "type": "boolean" + } + }, + "required": [ + "id", + "label", + "value", + "displayOrder", + "isSelected" + ] + }, + "Month": { + "type": "object", + "properties": { + "month": { + "type": "number" + }, + "amount": { + "type": "number" + }, + "days": { + "type": "array", + "items": { + "type": "number" + } + } + } + }, + "ValueType": { + "type": "object", + "properties": { + "text": { + "type": "string" + }, + "number": { + "type": "number" + }, + "date": { + "format": "date-time", + "type": "string" + }, + "listValue": { + "type": "string" + }, + "nationalId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "address": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "municipality": { + "type": "string" + }, + "jobTitle": { + "type": "string" + }, + "altName": { + "type": "string" + }, + "homestayNumber": { + "type": "string" + }, + "propertyNumber": { + "type": "string" + }, + "totalDays": { + "type": "number" + }, + "totalAmount": { + "type": "number" + }, + "year": { + "type": "number" + }, + "isNullReport": { + "type": "boolean" + }, + "months": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Month" + } + }, + "email": { + "type": "string" + }, + "iskNumber": { + "type": "string" + }, + "checkboxValue": { + "type": "boolean" + }, + "phoneNumber": { + "type": "string" + }, + "bankAccount": { + "type": "string" + }, + "time": { + "type": "string" + }, + "s3Key": { + "type": "string" + } + } + }, + "ApplicationEventDto": { + "type": "object", + "properties": { + "created": { + "format": "date-time", + "type": "string" + }, + "eventType": { + "type": "string" + }, + "isFileEvent": { + "type": "boolean" + } + } + }, + "ValueDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "order": { + "type": "number" + }, + "json": { + "$ref": "#/components/schemas/ValueType" + }, + "events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApplicationEventDto" + } + } + }, + "required": [ + "id", + "order", + "events" + ] + }, + "FieldDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "screenId": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "displayOrder": { + "type": "number" + }, + "description": { + "$ref": "#/components/schemas/LanguageType" + }, + "isPartOfMultiset": { + "type": "boolean" + }, + "isRequired": { + "type": "boolean" }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } + "isHidden": { + "type": "boolean" + }, + "fieldSettings": { + "$ref": "#/components/schemas/FieldSettings" + }, + "fieldType": { + "type": "string" + }, + "list": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ListItemDto" } }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HttpProblemResponse" - } - } + "values": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ValueDto" } } }, - "tags": [ - "applications" + "required": [ + "id", + "screenId", + "name", + "displayOrder", + "description", + "isPartOfMultiset", + "isRequired", + "isHidden", + "fieldType" ] - } - } - }, - "info": { - "title": "Form System API", - "description": "This is an API for formbuilder and form-rendering (application) system", - "version": "1.0", - "contact": {} - }, - "tags": [], - "servers": [ - { - "url": "http://localhost:3434" - } - ], - "components": { - "schemas": { - "Liveness": { + }, + "ScreenDto": { "type": "object", "properties": { - "ok": { + "id": { + "type": "string" + }, + "sectionId": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "displayOrder": { + "type": "number" + }, + "isHidden": { + "type": "boolean" + }, + "isCompleted": { + "type": "boolean" + }, + "multiset": { + "type": "number" + }, + "callRuleset": { "type": "boolean" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDto" + } } }, "required": [ - "ok" + "id", + "sectionId", + "name", + "displayOrder", + "isHidden", + "isCompleted", + "multiset", + "callRuleset" ] }, - "Version": { + "SectionDto": { "type": "object", "properties": { - "version": { + "id": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "sectionType": { "type": "string" + }, + "displayOrder": { + "type": "number" + }, + "waitingText": { + "$ref": "#/components/schemas/LanguageType" + }, + "isHidden": { + "type": "boolean" + }, + "isCompleted": { + "type": "boolean" + }, + "screens": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScreenDto" + } } }, "required": [ - "version" + "id", + "name", + "sectionType", + "displayOrder", + "isHidden", + "isCompleted" ] }, - "LanguageType": { + "FormDto": { "type": "object", "properties": { - "is": { + "id": { "type": "string" }, - "en": { + "organizationId": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/LanguageType" + }, + "slug": { + "type": "string" + }, + "invalidationDate": { + "format": "date-time", + "type": "string" + }, + "created": { + "format": "date-time", + "type": "string" + }, + "modified": { + "format": "date-time", "type": "string" + }, + "isTranslated": { + "type": "boolean" + }, + "applicationDaysToRemove": { + "type": "number" + }, + "derivedFrom": { + "type": "number" + }, + "status": { + "type": "string", + "enum": [ + "a9d495ea-433a-46d4-84ba-8604cc8c7d40", + "3ea7923b-e2a8-499d-b2db-42336bfe7c0b", + "06459c6f-9f1e-4ddd-bbd8-e553d9a4363e", + "c095bb71-b4ab-4a7c-9be4-4621b62591ce", + "11c9db90-2065-45d5-b649-c98001c10dcb" + ] + }, + "stopProgressOnValidatingScreen": { + "type": "boolean" + }, + "completedMessage": { + "$ref": "#/components/schemas/LanguageType" + }, + "dependencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Dependency" + } + }, + "certificationTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FormCertificationTypeDto" + } + }, + "applicantTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FormApplicantTypeDto" + } + }, + "urls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FormUrlDto" + } + }, + "sections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SectionDto" + } + }, + "screens": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScreenDto" + } + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDto" + } } }, "required": [ - "is", - "en" + "id", + "organizationId", + "name", + "slug", + "created", + "modified", + "isTranslated", + "applicationDaysToRemove", + "derivedFrom", + "status", + "stopProgressOnValidatingScreen" ] }, - "CreateOrganizationDto": { + "OrganizationDto": { "type": "object", "properties": { + "id": { + "type": "string" + }, "name": { "$ref": "#/components/schemas/LanguageType" }, "nationalId": { "type": "string" + }, + "forms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FormDto" + } } }, "required": [ + "id", "name", "nationalId" ] }, - "CertificationTypeDto": { + "OrganizationsResponseDto": { + "type": "object", + "properties": { + "organizations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganizationDto" + } + } + }, + "required": [ + "organizations" + ] + }, + "CreateFormDto": { + "type": "object", + "properties": { + "organizationId": { + "type": "string" + } + }, + "required": [ + "organizationId" + ] + }, + "FieldType": { "type": "object", "properties": { "id": { @@ -1408,308 +2338,174 @@ "description": { "$ref": "#/components/schemas/LanguageType" }, - "type": { - "type": "string", - "enum": [ - "estateGuardianshipCertificateStamped", - "estateGuardianshipCertificateUnstamped", - "residenceCertificate", - "indebtednessCertificate", - "criminalRecordStamped", - "criminalRecordUnstamped" - ] + "isCommon": { + "type": "boolean" + }, + "fieldSettings": { + "$ref": "#/components/schemas/FieldSettings" + }, + "values": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ValueDto" + } } }, "required": [ "id", "name", "description", - "type" + "isCommon" ] }, - "FormApplicantDto": { + "CertificationType": { "type": "object", "properties": { "id": { "type": "string" }, - "applicantType": { - "type": "string", - "enum": [ - "individual", - "individualWithDelegationFromIndividual", - "individualWithDelegationFromLegalEntity", - "individualWithProcuration", - "individualGivingDelegation", - "legalEntity" - ] - }, "name": { "$ref": "#/components/schemas/LanguageType" - } - }, - "required": [ - "id", - "applicantType", - "name" - ] - }, - "ListItemDto": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "label": { - "$ref": "#/components/schemas/LanguageType" }, "description": { "$ref": "#/components/schemas/LanguageType" }, - "value": { - "type": "string" - }, - "displayOrder": { - "type": "number" - }, - "isSelected": { + "isCommon": { "type": "boolean" } }, "required": [ "id", - "label", - "value", - "displayOrder", - "isSelected" + "name", + "description", + "isCommon" ] }, - "FieldSettingsDto": { + "ApplicantType": { "type": "object", "properties": { - "minValue": { - "type": "number" - }, - "maxValue": { - "type": "number" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - }, - "minDate": { - "format": "date-time", - "type": "string" - }, - "maxDate": { - "format": "date-time", - "type": "string" - }, - "minAmount": { - "type": "string" - }, - "maxAmount": { - "type": "string" - }, - "year": { - "type": "number" - }, - "hasLink": { - "type": "boolean" - }, - "url": { - "type": "string" - }, - "buttonText": { + "id": { "type": "string" }, - "hasPropertyInput": { - "type": "boolean" + "description": { + "$ref": "#/components/schemas/LanguageType" }, - "hasPropertyList": { - "type": "boolean" + "name": { + "$ref": "#/components/schemas/LanguageType" }, - "list": { + "nameSuggestions": { "type": "array", "items": { - "$ref": "#/components/schemas/ListItemDto" + "$ref": "#/components/schemas/LanguageType" } - }, - "listType": { - "type": "string" - }, - "fileTypes": { - "type": "string" - }, - "fileMaxSize": { - "type": "number" - }, - "maxFiles": { - "type": "number" - }, - "timeInterval": { - "type": "string" } - } + }, + "required": [ + "id", + "description" + ] }, - "FieldDto": { + "ListType": { "type": "object", "properties": { "id": { "type": "string" }, - "screenId": { - "type": "string" - }, "name": { "$ref": "#/components/schemas/LanguageType" }, - "displayOrder": { - "type": "number" - }, "description": { "$ref": "#/components/schemas/LanguageType" }, - "isPartOfMultiset": { + "isCommon": { "type": "boolean" - }, - "fieldSettings": { - "$ref": "#/components/schemas/FieldSettingsDto" - }, - "fieldType": { - "type": "string", - "enum": [ - "default", - "email", - "propertyNumber", - "iskNumberbox", - "checkbox", - "datePicker", - "numberbox", - "payer", - "nationaIdEstate", - "phoneNumber", - "message", - "radioButtons", - "document", - "bankAccount", - "nationalId", - "homestayNumber", - "iskSumbox", - "dropdownList", - "nationalIdAll", - "timeInput", - "homestayOverview", - "payment", - "textbox" - ] } }, "required": [ "id", - "screenId", "name", - "displayOrder", "description", - "isPartOfMultiset", - "fieldType" + "isCommon" ] }, - "ScreenDto": { + "OrganizationUrlDto": { "type": "object", "properties": { "id": { "type": "string" }, - "sectionId": { + "url": { "type": "string" }, - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "displayOrder": { - "type": "number" - }, - "isHidden": { + "isXroad": { "type": "boolean" }, - "multiset": { - "type": "number" - }, - "callRuleset": { + "isTest": { "type": "boolean" }, - "fields": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FieldDto" - } + "type": { + "type": "string" + }, + "method": { + "type": "string" } }, "required": [ "id", - "sectionId", - "name", - "displayOrder", - "isHidden", - "multiset", - "callRuleset" + "url", + "isXroad", + "isTest", + "type", + "method" ] }, - "SectionDto": { + "FormResponseDto": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/LanguageType" + "form": { + "$ref": "#/components/schemas/FormDto" }, - "sectionType": { - "type": "string", - "enum": [ - "premises", - "parties", - "input", - "payment" - ] + "fieldTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldType" + } }, - "displayOrder": { - "type": "number" + "certificationTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CertificationType" + } }, - "waitingText": { - "$ref": "#/components/schemas/LanguageType" + "applicantTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApplicantType" + } }, - "isHidden": { - "type": "boolean" + "listTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ListType" + } }, - "isCompleted": { - "type": "boolean" + "urls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganizationUrlDto" + } }, - "screens": { + "forms": { "type": "array", "items": { - "$ref": "#/components/schemas/ScreenDto" + "$ref": "#/components/schemas/FormDto" } } - }, - "required": [ - "id", - "name", - "sectionType", - "displayOrder", - "isHidden", - "isCompleted" - ] + } }, - "FormDto": { + "UpdateFormDto": { "type": "object", "properties": { - "id": { - "type": "string" - }, "organizationId": { "type": "string" }, @@ -1723,621 +2519,607 @@ "format": "date-time", "type": "string" }, - "created": { - "format": "date-time", - "type": "string" - }, - "modified": { - "format": "date-time", - "type": "string" - }, "isTranslated": { "type": "boolean" }, "applicationDaysToRemove": { "type": "number" }, - "derivedFrom": { - "type": "number" - }, "stopProgressOnValidatingScreen": { "type": "boolean" }, "completedMessage": { "$ref": "#/components/schemas/LanguageType" }, - "certificationTypes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CertificationTypeDto" - } - }, - "applicants": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FormApplicantDto" - } - }, - "sections": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SectionDto" - } - }, - "screens": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ScreenDto" - } - }, - "fields": { + "dependencies": { "type": "array", "items": { - "$ref": "#/components/schemas/FieldDto" + "$ref": "#/components/schemas/Dependency" } } + } + }, + "CreateSectionDto": { + "type": "object", + "properties": { + "formId": { + "type": "string" + }, + "displayOrder": { + "type": "number" + } }, "required": [ - "id", - "organizationId", - "name", - "slug", - "created", - "modified", - "isTranslated", - "applicationDaysToRemove", - "derivedFrom", - "stopProgressOnValidatingScreen" + "formId", + "displayOrder" ] }, - "OrganizationDto": { + "UpdateSectionDto": { "type": "object", "properties": { - "id": { - "type": "string" - }, "name": { "$ref": "#/components/schemas/LanguageType" }, - "nationalId": { + "waitingText": { + "$ref": "#/components/schemas/LanguageType" + } + } + }, + "SectionDisplayOrderDto": { + "type": "object", + "properties": { + "id": { "type": "string" - }, - "forms": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FormDto" - } } }, "required": [ - "id", - "name", - "nationalId" + "id" ] }, - "OrganizationsResponseDto": { + "UpdateSectionsDisplayOrderDto": { "type": "object", "properties": { - "organizations": { + "sectionsDisplayOrderDto": { "type": "array", "items": { - "$ref": "#/components/schemas/OrganizationDto" + "$ref": "#/components/schemas/SectionDisplayOrderDto" } } }, "required": [ - "organizations" + "sectionsDisplayOrderDto" ] }, - "HttpProblemResponse": { + "CreateScreenDto": { "type": "object", "properties": { - "type": { - "type": "object", - "description": "A URI reference that identifies the problem type" + "sectionId": { + "type": "string" }, - "title": { - "type": "string", - "description": "A short, human-readable summary of the problem type" + "displayOrder": { + "type": "number" + } + }, + "required": [ + "sectionId", + "displayOrder" + ] + }, + "UpdateScreenDto": { + "type": "object", + "properties": { + "name": { + "$ref": "#/components/schemas/LanguageType" }, - "status": { - "type": "number", - "description": "The HTTP status code" + "multiset": { + "type": "number" }, - "detail": { - "type": "string", - "description": "A human-readable explanation specific to this occurrence of the problem" + "callRuleset": { + "type": "boolean" + } + } + }, + "ScreenDisplayOrderDto": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "instance": { - "type": "string", - "description": "A URI reference that identifies the specific occurrence of the problem." + "sectionId": { + "type": "string" } }, "required": [ - "type", - "title" + "id", + "sectionId" ] }, - "CreateFormDto": { + "UpdateScreensDisplayOrderDto": { "type": "object", "properties": { - "organizationId": { - "type": "string" + "screensDisplayOrderDto": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScreenDisplayOrderDto" + } } }, "required": [ - "organizationId" + "screensDisplayOrderDto" ] }, - "FieldTypeDto": { + "CreateFieldDto": { "type": "object", "properties": { - "id": { + "screenId": { "type": "string" }, - "type": { - "type": "string", - "enum": [ - "default", - "email", - "propertyNumber", - "iskNumberbox", - "checkbox", - "datePicker", - "numberbox", - "payer", - "nationaIdEstate", - "phoneNumber", - "message", - "radioButtons", - "document", - "bankAccount", - "nationalId", - "homestayNumber", - "iskSumbox", - "dropdownList", - "nationalIdAll", - "timeInput", - "homestayOverview", - "payment", - "textbox" - ] + "fieldType": { + "type": "string" }, + "displayOrder": { + "type": "number" + } + }, + "required": [ + "screenId", + "fieldType", + "displayOrder" + ] + }, + "UpdateFieldDto": { + "type": "object", + "properties": { "name": { "$ref": "#/components/schemas/LanguageType" }, "description": { "$ref": "#/components/schemas/LanguageType" }, - "isCommon": { + "isPartOfMultiset": { + "type": "boolean" + }, + "isRequired": { "type": "boolean" }, "fieldSettings": { - "$ref": "#/components/schemas/FieldSettingsDto" + "$ref": "#/components/schemas/FieldSettings" + }, + "fieldType": { + "type": "string", + "enum": [ + "b6a7e297-22fd-4426-a4e1-04a11a2e8914", + "eee2840d-a26f-4e9b-a21b-e4478c09e546", + "16603815-3db5-4aec-9bc7-56c1207bb79f", + "cdd63941-ff33-49d1-8b23-0293e413a281", + "f1d14fe1-9e70-4ab2-8f95-8a06a9cf9f48", + "0420775e-ab81-47fc-85af-6c40be3844ac", + "720fb3a3-6a85-456e-8173-b5913e219dc5", + "1f56b93b-8290-4409-8fe0-1b297338e672", + "dc50f154-0dfa-4597-80b8-6f3d9ebc36b1", + "d6c292c7-4e7c-44a6-bb7e-b956122598b0", + "ff7f8580-0419-4f07-9551-fc407d6fb796", + "f806a35b-12c9-4d24-8845-024f77e077f7", + "0e104698-4e58-4874-97a2-a8fd8d3ab7c4", + "1955db2d-c1e3-42ed-b6c5-a668c6136e38", + "cd73ebb6-6573-490a-9bd1-1e693a9229eb", + "6df647aa-27c8-48b1-8ac9-05e8b4251892", + "15a57466-0be3-451d-988d-5b807fea3459", + "7cbbe78f-cd5f-4fb9-a77c-86af2bf986b1", + "ac3fa8a0-9258-49d1-aff2-1dacf31538f0", + "94819d53-69b6-464b-abda-3bb6299d2511", + "83f6f77d-1ca7-4f99-8806-05cec59a48e4", + "6a616adc-80ab-47c1-8037-1d9a8dc68a5c", + "d4143c45-6d45-4052-93c6-42d46572a874" + ] + } + } + }, + "FieldDisplayOrderDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "screenId": { + "type": "string" } }, "required": [ "id", - "type", - "name", - "description", - "isCommon" + "screenId" ] }, - "ListTypeDto": { + "UpdateFieldsDisplayOrderDto": { "type": "object", "properties": { - "id": { + "fieldsDisplayOrderDto": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDisplayOrderDto" + } + } + }, + "required": [ + "fieldsDisplayOrderDto" + ] + }, + "CreateListItemDto": { + "type": "object", + "properties": { + "fieldId": { "type": "string" }, - "name": { + "displayOrder": { + "type": "number" + } + }, + "required": [ + "fieldId", + "displayOrder" + ] + }, + "UpdateListItemDto": { + "type": "object", + "properties": { + "label": { "$ref": "#/components/schemas/LanguageType" }, "description": { "$ref": "#/components/schemas/LanguageType" }, - "type": { + "value": { "type": "string" }, - "isCommon": { + "isSelected": { "type": "boolean" } + } + }, + "ListItemDisplayOrderDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + } }, "required": [ - "id", - "name", - "description", - "type", - "isCommon" + "id" ] }, - "FormResponseDto": { + "UpdateListItemsDisplayOrderDto": { "type": "object", "properties": { - "form": { - "$ref": "#/components/schemas/FormDto" + "listItemsDisplayOrderDto": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ListItemDisplayOrderDto" + } + } + }, + "required": [ + "listItemsDisplayOrderDto" + ] + }, + "ApplicationEvent": { + "type": "object", + "properties": {} + }, + "ApplicationDto": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "fieldTypes": { + "organizationName": { + "$ref": "#/components/schemas/LanguageType" + }, + "formId": { + "type": "string" + }, + "formName": { + "$ref": "#/components/schemas/LanguageType" + }, + "isTest": { + "type": "boolean" + }, + "slug": { + "type": "string" + }, + "created": { + "format": "date-time", + "type": "string" + }, + "modified": { + "format": "date-time", + "type": "string" + }, + "submittedAt": { + "format": "date-time", + "type": "string" + }, + "dependencies": { "type": "array", "items": { - "$ref": "#/components/schemas/FieldTypeDto" + "$ref": "#/components/schemas/Dependency" } }, - "certificationTypes": { + "completed": { "type": "array", "items": { - "$ref": "#/components/schemas/CertificationTypeDto" + "type": "string" } }, - "listTypes": { + "status": { + "type": "string", + "enum": [ + "ee2545cc-b27f-4d75-bc82-b57f9d10c1b3", + "22b3ab87-4d42-4987-b6fe-33abcf05f112", + "2497f6f3-4b7e-4a6b-bc1e-9084ea2ad72f" + ] + }, + "events": { "type": "array", "items": { - "$ref": "#/components/schemas/ListTypeDto" + "$ref": "#/components/schemas/ApplicationEvent" } }, - "forms": { + "sections": { "type": "array", "items": { - "$ref": "#/components/schemas/FormDto" + "$ref": "#/components/schemas/SectionDto" } } } }, - "CreateSectionDto": { + "CreateApplicationDto": { "type": "object", "properties": { - "formId": { - "type": "string" + "isTest": { + "type": "boolean" } }, "required": [ - "formId" + "isTest" ] }, - "UpdateSectionDto": { + "UpdateApplicationDto": { "type": "object", "properties": { - "name": { - "$ref": "#/components/schemas/LanguageType" + "dependencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Dependency" + } }, - "waitingText": { - "$ref": "#/components/schemas/LanguageType" - } - }, - "required": [ - "name" - ] - }, - "SectionDisplayOrderDto": { - "type": "object", - "properties": { - "id": { - "type": "string" + "completed": { + "type": "array", + "items": { + "type": "string" + } } - }, - "required": [ - "id" - ] + } }, - "UpdateSectionsDisplayOrderDto": { + "ApplicationListDto": { "type": "object", "properties": { - "sectionsDisplayOrderDto": { + "applications": { "type": "array", "items": { - "$ref": "#/components/schemas/SectionDisplayOrderDto" + "$ref": "#/components/schemas/ApplicationDto" } + }, + "total": { + "type": "number" } - }, - "required": [ - "sectionsDisplayOrderDto" - ] + } }, - "CreateScreenDto": { + "CreateValueDto": { "type": "object", "properties": { - "sectionId": { + "order": { + "type": "number" + }, + "fieldId": { + "type": "string" + }, + "fieldType": { + "type": "string" + }, + "applicationId": { "type": "string" } }, "required": [ - "sectionId" + "order", + "fieldId", + "fieldType", + "applicationId" ] }, - "UpdateScreenDto": { + "UpdateValueDto": { "type": "object", "properties": { - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "multiset": { - "type": "number" - }, - "callRuleset": { - "type": "boolean" + "json": { + "$ref": "#/components/schemas/ValueType" } }, "required": [ - "name", - "multiset", - "callRuleset" + "json" ] }, - "ScreenDisplayOrderDto": { + "CreateFormApplicantTypeDto": { "type": "object", "properties": { - "id": { + "formId": { "type": "string" }, - "sectionId": { + "applicantTypeId": { "type": "string" } }, "required": [ - "id", - "sectionId" + "formId", + "applicantTypeId" ] }, - "UpdateScreensDisplayOrderDto": { + "UpdateFormApplicantTypeDto": { "type": "object", "properties": { - "screensDisplayOrderDto": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ScreenDisplayOrderDto" - } + "name": { + "$ref": "#/components/schemas/LanguageType" } }, "required": [ - "screensDisplayOrderDto" + "name" ] }, - "CreateFieldDto": { + "CreateFormCertificationTypeDto": { "type": "object", "properties": { - "screenId": { + "formId": { + "type": "string" + }, + "certificationTypeId": { "type": "string" } }, "required": [ - "screenId" + "formId", + "certificationTypeId" ] }, - "UpdateFieldSettingsDto": { + "CreateFormUrlDto": { "type": "object", "properties": { - "minValue": { - "type": "number" - }, - "maxValue": { - "type": "number" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - }, - "minDate": { - "format": "date-time", - "type": "string" - }, - "maxDate": { - "format": "date-time", - "type": "string" - }, - "minAmount": { - "type": "string" - }, - "maxAmount": { - "type": "string" - }, - "year": { - "type": "number" - }, - "hasLink": { - "type": "boolean" - }, - "url": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "hasPropertyInput": { - "type": "boolean" - }, - "hasPropertyList": { - "type": "boolean" - }, - "listType": { - "type": "string" - }, - "fileTypes": { + "formId": { "type": "string" }, - "fileMaxSize": { - "type": "number" - }, - "maxFiles": { - "type": "number" - }, - "timeInterval": { + "organizationUrlId": { "type": "string" } - } + }, + "required": [ + "formId", + "organizationUrlId" + ] }, - "UpdateFieldDto": { + "CreateOrganizationCertificationTypeDto": { "type": "object", "properties": { - "name": { - "$ref": "#/components/schemas/LanguageType" - }, - "description": { - "$ref": "#/components/schemas/LanguageType" - }, - "isPartOfMultiset": { - "type": "boolean" - }, - "fieldSettings": { - "$ref": "#/components/schemas/UpdateFieldSettingsDto" + "organizationId": { + "type": "string" }, - "fieldType": { - "type": "string", - "enum": [ - "default", - "email", - "propertyNumber", - "iskNumberbox", - "checkbox", - "datePicker", - "numberbox", - "payer", - "nationaIdEstate", - "phoneNumber", - "message", - "radioButtons", - "document", - "bankAccount", - "nationalId", - "homestayNumber", - "iskSumbox", - "dropdownList", - "nationalIdAll", - "timeInput", - "homestayOverview", - "payment", - "textbox" - ] + "certificationTypeId": { + "type": "string" } }, "required": [ - "name", - "description", - "isPartOfMultiset", - "fieldSettings", - "fieldType" + "organizationId", + "certificationTypeId" ] }, - "FieldDisplayOrderDto": { + "OrganizationCertificationTypeDto": { "type": "object", "properties": { "id": { "type": "string" }, - "screenId": { + "certificationTypeId": { "type": "string" } }, "required": [ "id", - "screenId" + "certificationTypeId" ] }, - "UpdateFieldsDisplayOrderDto": { + "CreateOrganizationFieldTypeDto": { "type": "object", "properties": { - "fieldsDisplayOrderDto": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FieldDisplayOrderDto" - } + "organizationId": { + "type": "string" + }, + "fieldTypeId": { + "type": "string" } }, "required": [ - "fieldsDisplayOrderDto" + "organizationId", + "fieldTypeId" ] }, - "CreateListItemDto": { + "OrganizationFieldTypeDto": { "type": "object", "properties": { - "fieldId": { + "id": { "type": "string" }, - "displayOrder": { - "type": "number" + "fieldTypeId": { + "type": "string" } }, "required": [ - "fieldId", - "displayOrder" + "id", + "fieldTypeId" ] }, - "UpdateListItemDto": { + "CreateOrganizationListTypeDto": { "type": "object", "properties": { - "label": { - "$ref": "#/components/schemas/LanguageType" - }, - "description": { - "$ref": "#/components/schemas/LanguageType" - }, - "value": { + "organizationId": { "type": "string" }, - "isSelected": { - "type": "boolean" + "listTypeId": { + "type": "string" } }, "required": [ - "label", - "value", - "isSelected" + "organizationId", + "listTypeId" ] }, - "ListItemDisplayOrderDto": { + "OrganizationListTypeDto": { "type": "object", "properties": { "id": { "type": "string" + }, + "listTypeId": { + "type": "string" } }, "required": [ - "id" + "id", + "listTypeId" ] }, - "UpdateListItemsDisplayOrderDto": { + "CreateOrganizationUrlDto": { "type": "object", "properties": { - "listItemsDisplayOrderDto": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ListItemDisplayOrderDto" - } + "organizationId": { + "type": "string" + }, + "type": { + "type": "string" } }, "required": [ - "listItemsDisplayOrderDto" + "organizationId", + "type" ] }, - "ApplicationDto": { + "UpdateOrganizationUrlDto": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "organization": { - "$ref": "#/components/schemas/OrganizationDto" - }, - "formId": { - "type": "string" - }, - "slug": { + "url": { "type": "string" }, - "created": { - "format": "date-time", - "type": "string" + "isXroad": { + "type": "boolean" }, - "modified": { - "format": "date-time", + "method": { "type": "string" - }, - "sections": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SectionDto" - } } } } diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index 1f7794b5a2b5..3f9534cb334a 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -9,14 +9,14 @@ import { } from '@island.is/island-ui/core' import { useContext, useState } from 'react' import { ControlContext } from '../../context/ControlContext' -import { FormSystemSectionDtoSectionTypeEnum, FormSystemSection, FormSystemScreen } from '@island.is/api/schema' +import { FormSystemSection, FormSystemScreen } from '@island.is/api/schema' import { BaseSettings } from './components/BaseSettings/BaseSettings' import { Premises } from './components/Premises/Premises' import { FieldContent } from './components/FieldContent/FieldContent' import { PreviewStepOrGroup } from './components/PreviewStepOrGroup/PreviewStepOrGroup' import { useIntl } from 'react-intl' import { RelevantParties } from './components/RelevantParties/RelevantParties' -import { m } from '@island.is/form-system/ui' +import { m, SectionTypes } from '@island.is/form-system/ui' export const MainContent = () => { const { @@ -37,10 +37,10 @@ export const MainContent = () => { (activeItem.data as FormSystemSection).id === "BaseSettings" ? ( <BaseSettings /> ) : activeItem.type === 'Section' && - (activeItem.data as FormSystemSection).sectionType === FormSystemSectionDtoSectionTypeEnum.Premises ? ( + (activeItem.data as FormSystemSection).sectionType === SectionTypes.PREMISES ? ( <Premises /> ) : activeItem.type === 'Section' && - (activeItem.data as FormSystemSection).sectionType === FormSystemSectionDtoSectionTypeEnum.Parties ? ( + (activeItem.data as FormSystemSection).sectionType === SectionTypes.PARTIES ? ( <RelevantParties /> ) : openPreview ? ( <PreviewStepOrGroup setOpenPreview={setOpenPreview} /> diff --git a/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx b/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx index 6eced03fd0c0..d549279173f1 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx @@ -3,7 +3,6 @@ import { FormSystemSection, FormSystemScreen, FormSystemField, - FormSystemSectionDtoSectionTypeEnum, } from '@island.is/api/schema' import { ItemType, NavbarSelectStatus } from '../../lib/utils/interfaces' import { useSortable } from '@dnd-kit/sortable' @@ -14,6 +13,7 @@ import cn from 'classnames' import { Box, Checkbox } from '@island.is/island-ui/core' import { truncateName } from '../../lib/utils/truncateText' import { NavButtons } from './components/NavButtons' +import { SectionTypes } from '@island.is/form-system/ui' type Props = { type: ItemType @@ -132,7 +132,7 @@ export const NavComponent = ({ }} > {!( - type === 'Section' && (data as FormSystemSection).sectionType !== FormSystemSectionDtoSectionTypeEnum.Input + type === 'Section' && (data as FormSystemSection).sectionType !== SectionTypes.INPUT ) && <NavButtons />} </Box> )} diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index 2b6d7201ba4e..b114431b52bc 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -19,7 +19,6 @@ import { FormSystemField, FormSystemSection, Maybe, - FormSystemSectionDtoSectionTypeEnum, } from '@island.is/api/schema' import { ControlContext, IControlContext } from '../../context/ControlContext' import { ItemType } from '../../lib/utils/interfaces' @@ -28,7 +27,7 @@ import { useIntl } from 'react-intl' import { NavComponent } from '../NavComponent/NavComponent' import { CREATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from '@island.is/form-system/graphql' import { useMutation } from '@apollo/client' -import { m } from '@island.is/form-system/ui' +import { m, SectionTypes } from '@island.is/form-system/ui' type DndAction = | 'SECTION_OVER_SECTION' @@ -232,7 +231,7 @@ export const Navbar = () => { </div> {sections ?.filter((s): s is FormSystemSection => s !== null && s !== undefined) - .filter((s) => s.sectionType !== FormSystemSectionDtoSectionTypeEnum.Input) + .filter((s) => s.sectionType !== SectionTypes.INPUT) .map((s) => ( <Box key={s.id}> <NavComponent @@ -249,7 +248,7 @@ export const Navbar = () => { size="small" onClick={() => { setInSettings(false) - const section = sections?.find((s) => s?.sectionType === FormSystemSectionDtoSectionTypeEnum.Input) + const section = sections?.find((s) => s?.sectionType === SectionTypes.INPUT) if (section) { controlDispatch({ type: 'SET_ACTIVE_ITEM', @@ -291,7 +290,7 @@ export const Navbar = () => { ?.filter( (s): s is FormSystemSection => s !== null && s !== undefined, ) - .filter((s) => s.sectionType === FormSystemSectionDtoSectionTypeEnum.Input) + .filter((s) => s.sectionType === SectionTypes.INPUT) .map((s, i) => ( <Box key={s.id}> <NavComponent diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx index c1959dbca136..2fc3f854a3b8 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -5,8 +5,7 @@ import { useContext } from 'react' import { baseSettingsStep } from '../../../../lib/utils/getBaseSettingsSection' import { ControlContext } from '../../../../context/ControlContext' import { useIntl } from 'react-intl' -import { FormSystemSectionDtoSectionTypeEnum } from '@island.is/api/schema' -import { m } from '@island.is/form-system/ui' +import { m, SectionTypes } from '@island.is/form-system/ui' export const NavbarTab = () => { const { control, controlDispatch, inSettings, setInSettings } = @@ -22,7 +21,7 @@ export const NavbarTab = () => { [styles.selected]: !inSettings, })} onClick={() => { - const section = sections?.find((s) => s?.sectionType === FormSystemSectionDtoSectionTypeEnum.Input) + const section = sections?.find((s) => s?.sectionType === SectionTypes.INPUT) controlDispatch({ type: 'SET_ACTIVE_ITEM', payload: { diff --git a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx index 5f7cf88cc2e3..20c2b2679795 100644 --- a/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx +++ b/libs/portals/admin/form-system/src/components/NavbarSelect/NavbarSelect.tsx @@ -6,11 +6,10 @@ import { FormSystemSection, FormSystemScreen, FormSystemField, - FormSystemSectionDtoSectionTypeEnum, } from '@island.is/api/schema' import { NavbarSelectStatus } from '../../lib/utils/interfaces' import { useIntl } from 'react-intl' -import { m } from '@island.is/form-system/ui' +import { m, SectionTypes } from '@island.is/form-system/ui' export const NavbarSelect = () => { const { control, selectStatus } = useContext(ControlContext) @@ -25,7 +24,7 @@ export const NavbarSelect = () => { </Box> {sections ?.filter((s): s is FormSystemSection => s !== null && s !== undefined) - .filter((s) => s.sectionType === FormSystemSectionDtoSectionTypeEnum.Input) + .filter((s) => s.sectionType === SectionTypes.INPUT) .map((s) => ( <Box key={s.id}> <SelectNavComponent diff --git a/libs/portals/admin/form-system/src/context/FormProvider.tsx b/libs/portals/admin/form-system/src/context/FormProvider.tsx index 9bde9925c489..01e3496eadea 100644 --- a/libs/portals/admin/form-system/src/context/FormProvider.tsx +++ b/libs/portals/admin/form-system/src/context/FormProvider.tsx @@ -1,6 +1,6 @@ import { useCallback, useMemo, useReducer, useState } from "react" import { ControlContext, IControlContext } from "./ControlContext" -import { FormSystemForm, FormSystemFormResponse, FormSystemSection, FormSystemSectionDtoSectionTypeEnum } from "@island.is/api/schema" +import { FormSystemForm, FormSystemFormResponse, FormSystemSection } from "@island.is/api/schema" import { ControlState, controlReducer } from "../hooks/controlReducer" import { ActiveItem, NavbarSelectStatus } from "../lib/utils/interfaces" import { removeTypename } from "../lib/utils/removeTypename" @@ -11,6 +11,7 @@ import { updateActiveItemFn } from "../lib/utils/updateActiveItem" import { useMutation } from "@apollo/client" import { UPDATE_FIELD, UPDATE_FIELDS_DISPLAY_ORDER, UPDATE_FORM, UPDATE_SCREEN, UPDATE_SCREEN_DISPLAY_ORDER, UPDATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from "@island.is/form-system/graphql" import { updateFormFn } from "../lib/utils/updateFormFn" +import { SectionTypes } from '@island.is/form-system/ui' export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: FormSystemFormResponse }> = ({ children, formBuilder }) => { const [focus, setFocus] = useState<string>('') @@ -27,7 +28,7 @@ export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: Fo data: inSettings ? baseSettingsStep : removeTypename(form?.sections)?.find( - (s: FormSystemSection) => s?.sectionType === FormSystemSectionDtoSectionTypeEnum.Input, + (s: FormSystemSection) => s?.sectionType === SectionTypes.INPUT, ) ?? defaultStep, }, activeListItem: null, diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index de7a2434b4a5..5c4b81dd7fea 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -5,13 +5,13 @@ import { FormSystemListItem, FormSystemSection, FormSystemFieldSettings, - FormSystemSectionDtoSectionTypeEnum, FormSystemFormCertificationTypeDto, } from '@island.is/api/schema' import { UniqueIdentifier } from '@dnd-kit/core' import { arrayMove } from '@dnd-kit/sortable' import { removeTypename } from '../lib/utils/removeTypename' import { ActiveItem } from '../lib/utils/interfaces' +import { SectionTypes } from '@island.is/form-system/ui' type ActiveItemActions = | { type: 'SET_ACTIVE_ITEM'; payload: { activeItem: ActiveItem } } @@ -206,7 +206,7 @@ export const controlReducer = ( const newSection = { ...action.payload.section, displayOrder: sections?.length ?? 0, - sectionType: FormSystemSectionDtoSectionTypeEnum.Input + sectionType: SectionTypes.INPUT, } return { ...state, diff --git a/libs/portals/admin/form-system/src/lib/utils/defaultStep.tsx b/libs/portals/admin/form-system/src/lib/utils/defaultStep.tsx index adc1d7982749..c9b151d390ee 100644 --- a/libs/portals/admin/form-system/src/lib/utils/defaultStep.tsx +++ b/libs/portals/admin/form-system/src/lib/utils/defaultStep.tsx @@ -1,5 +1,6 @@ import { uuid } from 'uuidv4' -import { FormSystemSection, FormSystemSectionDtoSectionTypeEnum } from '@island.is/api/schema' +import { FormSystemSection } from '@island.is/api/schema' +import { SectionTypes } from '@island.is/form-system/ui' export const defaultStep: FormSystemSection = { id: uuid(), @@ -8,7 +9,7 @@ export const defaultStep: FormSystemSection = { is: '', en: '', }, - sectionType: FormSystemSectionDtoSectionTypeEnum.Input, + sectionType: SectionTypes.INPUT, waitingText: { is: '', en: '', diff --git a/libs/portals/form-system/ui-components/src/lib/enums.ts b/libs/portals/form-system/ui-components/src/lib/enums.ts index ce65076e7af0..1719aeb9471e 100644 --- a/libs/portals/form-system/ui-components/src/lib/enums.ts +++ b/libs/portals/form-system/ui-components/src/lib/enums.ts @@ -1,3 +1,4 @@ + export const FieldTypesEnum = { TEXTBOX: 'b6a7e297-22fd-4426-a4e1-04a11a2e8914', EMAIL: 'd6c292c7-4e7c-44a6-bb7e-b956122598b0', @@ -56,10 +57,10 @@ export const ListTypesEnum = { } as const export const SectionTypes = { - PREMISES: 'premises', - PARTIES: 'parties', - INPUT: 'input', - PAYMENT: 'payment', + PREMISES: '72f8db2b-8b6a-4e6d-964b-003f3b802ff1', + PARTIES: 'f9f69a74-c72c-48a8-bfc0-a452cde4b8d1', + INPUT: '94786b44-e3ce-4463-a7a3-e1073fe8fb81', + PAYMENT: '6017215a-ed8b-4115-b1b0-ae08fa4b763c', } as const export const UrlMethods = { diff --git a/yarn.lock b/yarn.lock index 7cef58f7bd75..7fa18bcbb2cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49918,6 +49918,19 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^4.5.2": + version: 4.5.2 + resolution: "readable-stream@npm:4.5.2" + dependencies: + abort-controller: ^3.0.0 + buffer: ^6.0.3 + events: ^3.3.0 + process: ^0.11.10 + string_decoder: ^1.3.0 + checksum: c4030ccff010b83e4f33289c535f7830190773e274b3fcb6e2541475070bdfd69c98001c3b0cb78763fc00c8b62f514d96c2b10a8bd35d5ce45203a25fa1d33a + languageName: node + linkType: hard + "readable-web-to-node-stream@npm:^3.0.0": version: 3.0.2 resolution: "readable-web-to-node-stream@npm:3.0.2" From f8dad9ef104fa0256ddacdfd072e173423453ba0 Mon Sep 17 00:00:00 2001 From: andes-it <builders@andes.is> Date: Tue, 10 Dec 2024 11:02:30 +0000 Subject: [PATCH 122/129] chore: charts update dirty files --- charts/islandis/values.dev.yaml | 2 +- charts/services/api/values.dev.yaml | 2 +- charts/services/portals-admin/values.dev.yaml | 1 + charts/services/portals-admin/values.prod.yaml | 1 + charts/services/portals-admin/values.staging.yaml | 1 + 5 files changed, 5 insertions(+), 2 deletions(-) diff --git a/charts/islandis/values.dev.yaml b/charts/islandis/values.dev.yaml index 28321ff60847..9b9c03d1a505 100644 --- a/charts/islandis/values.dev.yaml +++ b/charts/islandis/values.dev.yaml @@ -303,7 +303,7 @@ api: FINANCIAL_STATEMENTS_INAO_TOKEN_ENDPOINT: 'https://login.microsoftonline.com/05a20268-aaea-4bb5-bb78-960b0462185e/oauth2/v2.0/token' FISHING_LICENSE_XROAD_PROVIDER_ID: 'IS-DEV/GOV/10012/Fiskistofa-Protected/veidileyfi-v1' FISKISTOFA_ZENTER_CLIENT_ID: '1114' - FORM_SYSTEM_API_BASE_PATH: 'https://profun.island.is/umsoknarkerfi' + FORM_SYSTEM_API_BASE_PATH: 'http://localhost:3434' HSN_WEB_FORM_ID: '1dimJFHLFYtnhoYEA3JxRK' HUNTING_LICENSE_PASS_TEMPLATE_ID: '1da72d52-a93a-4d0f-8463-1933a2bd210b' ICELANDIC_NAMES_REGISTRY_BACKEND_URL: 'http://web-icelandic-names-registry-backend.icelandic-names-registry.svc.cluster.local' diff --git a/charts/services/api/values.dev.yaml b/charts/services/api/values.dev.yaml index e1ea92a280b8..be5eb1bff1b7 100644 --- a/charts/services/api/values.dev.yaml +++ b/charts/services/api/values.dev.yaml @@ -52,7 +52,7 @@ env: FINANCIAL_STATEMENTS_INAO_TOKEN_ENDPOINT: 'https://login.microsoftonline.com/05a20268-aaea-4bb5-bb78-960b0462185e/oauth2/v2.0/token' FISHING_LICENSE_XROAD_PROVIDER_ID: 'IS-DEV/GOV/10012/Fiskistofa-Protected/veidileyfi-v1' FISKISTOFA_ZENTER_CLIENT_ID: '1114' - FORM_SYSTEM_API_BASE_PATH: 'https://profun.island.is/umsoknarkerfi' + FORM_SYSTEM_API_BASE_PATH: 'http://localhost:3434' HSN_WEB_FORM_ID: '1dimJFHLFYtnhoYEA3JxRK' HUNTING_LICENSE_PASS_TEMPLATE_ID: '1da72d52-a93a-4d0f-8463-1933a2bd210b' ICELANDIC_NAMES_REGISTRY_BACKEND_URL: 'http://web-icelandic-names-registry-backend.icelandic-names-registry.svc.cluster.local' diff --git a/charts/services/portals-admin/values.dev.yaml b/charts/services/portals-admin/values.dev.yaml index dca1469e538e..547674915e31 100644 --- a/charts/services/portals-admin/values.dev.yaml +++ b/charts/services/portals-admin/values.dev.yaml @@ -75,6 +75,7 @@ resources: memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' + FORM_SYSTEM_MIDEIND_KEY: '/k8s/portals-admin/FORM_SYSTEM_MIDEIND_KEY' SI_PUBLIC_CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' SI_PUBLIC_DD_RUM_APPLICATION_ID: '/k8s/DD_RUM_APPLICATION_ID' SI_PUBLIC_DD_RUM_CLIENT_TOKEN: '/k8s/DD_RUM_CLIENT_TOKEN' diff --git a/charts/services/portals-admin/values.prod.yaml b/charts/services/portals-admin/values.prod.yaml index 8b5e7cff49f5..0f26c1993a6c 100644 --- a/charts/services/portals-admin/values.prod.yaml +++ b/charts/services/portals-admin/values.prod.yaml @@ -78,6 +78,7 @@ resources: memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' + FORM_SYSTEM_MIDEIND_KEY: '/k8s/portals-admin/FORM_SYSTEM_MIDEIND_KEY' SI_PUBLIC_CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' SI_PUBLIC_DD_RUM_APPLICATION_ID: '/k8s/DD_RUM_APPLICATION_ID' SI_PUBLIC_DD_RUM_CLIENT_TOKEN: '/k8s/DD_RUM_CLIENT_TOKEN' diff --git a/charts/services/portals-admin/values.staging.yaml b/charts/services/portals-admin/values.staging.yaml index 7db3b0717c80..cb28c40fb0ac 100644 --- a/charts/services/portals-admin/values.staging.yaml +++ b/charts/services/portals-admin/values.staging.yaml @@ -75,6 +75,7 @@ resources: memory: '256Mi' secrets: CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' + FORM_SYSTEM_MIDEIND_KEY: '/k8s/portals-admin/FORM_SYSTEM_MIDEIND_KEY' SI_PUBLIC_CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY' SI_PUBLIC_DD_RUM_APPLICATION_ID: '/k8s/DD_RUM_APPLICATION_ID' SI_PUBLIC_DD_RUM_CLIENT_TOKEN: '/k8s/DD_RUM_CLIENT_TOKEN' From 180e689b451ee26080c22014305daa00f81eb6ee Mon Sep 17 00:00:00 2001 From: Hyosam <hyo-sam.nandkisore@advania.is> Date: Tue, 17 Dec 2024 11:05:46 +0000 Subject: [PATCH 123/129] Linting and debugging --- .../form-system/src/screens/FormsScreen.tsx | 14 +- .../form-system/src/dto/application.input.ts | 28 + .../domains/form-system/src/dto/form.input.ts | 36 ++ .../form-system/src/dto/section.input.ts | 2 +- .../form-system/src/dto/value.input.ts | 46 +- .../src/lib/applicants/applicants.resolver.ts | 2 +- .../src/lib/applicants/applicants.service.ts | 2 +- .../lib/applications/applications.resolver.ts | 2 +- .../lib/applications/applications.service.ts | 2 +- .../certification/certification.resolver.ts | 9 +- .../certification/certification.service.ts | 26 +- .../src/lib/fields/fields.resolver.ts | 2 +- .../src/lib/fields/fields.service.ts | 2 +- .../src/lib/forms/forms.resolver.ts | 10 +- .../src/lib/forms/forms.service.ts | 8 +- .../src/lib/listItems/listItems.resolver.ts | 2 +- .../organizations/organizations.resolver.ts | 2 +- .../src/lib/screens/screens.resolver.ts | 2 +- .../src/lib/sections/sections.resolver.ts | 2 +- .../src/lib/sections/sections.service.ts | 2 +- .../src/lib/services/services.resolver.ts | 2 +- .../src/models/applications.model.ts | 42 +- .../form-system/src/models/form.model.ts | 30 + .../form-system/src/models/month.model.ts | 2 +- .../form-system/src/models/value.model.ts | 35 +- .../clients/form-system/src/clientConfig.json | 560 ++++++------------ .../src/lib/FormSystemApiProvider.ts | 1 - .../src/lib/FormSystemClient.config.ts | 6 +- .../form-system/src/lib/form-system.module.ts | 6 +- libs/portals/admin/form-system/project.json | 19 +- .../FormLayout/components/MainColumns.tsx | 5 +- .../FormLayout/components/NavbarColumn.tsx | 17 +- .../components/MainContent/MainContent.tsx | 24 +- .../components/BaseSettings/BaseSettings.tsx | 18 +- .../FieldContent/components/BaseInput.tsx | 4 +- .../FieldSettings/FieldSettings.tsx | 24 +- .../FieldSettings/components/ListSettings.tsx | 9 +- .../components/MessageWithLinkSettings.tsx | 9 +- .../components/ToggleConnection.tsx | 7 +- .../components/ListBuilder/ListBuilder.tsx | 64 +- .../ListBuilder/components/ListItem.tsx | 44 +- .../components/Premises/Premises.tsx | 80 ++- .../components/Preview/Preveiw.tsx | 7 +- .../PreviewStepOrGroup/PreviewStepOrGroup.tsx | 9 +- .../RelevantParties/RelevantParties.tsx | 142 +++-- .../components/FormApplicantTypes.tsx | 41 +- .../components/NavComponent/NavComponent.tsx | 6 +- .../NavComponent/components/NavButtons.tsx | 24 +- .../src/components/Navbar/Navbar.tsx | 41 +- .../Navbar/components/NavbarTab/NavbarTab.tsx | 4 +- .../src/components/TableRow/TableRow.tsx | 10 +- .../form-system/src/context/ControlContext.ts | 4 +- .../form-system/src/context/FormProvider.tsx | 134 +++-- .../form-system/src/hooks/controlReducer.ts | 293 +++++---- .../admin/form-system/src/lib/navigation.ts | 2 +- .../src/lib/utils/updateActiveItem.ts | 59 +- .../form-system/src/lib/utils/updateDnd.ts | 77 ++- .../form-system/src/lib/utils/updateFormFn.ts | 37 +- libs/portals/admin/form-system/src/module.tsx | 2 +- .../form-system/src/screens/Form/Form.tsx | 3 - .../src/screens/Forms/Forms.loader.ts | 6 +- .../form-system/src/screens/Forms/Forms.tsx | 8 +- .../graphql/src/lib/fragments/application.ts | 14 +- .../graphql/src/lib/fragments/form.ts | 1 + .../graphql/src/lib/fragments/value.ts | 11 +- .../src/lib/mutations/createApplication.ts | 4 +- .../src/lib/mutations/createCertification.ts | 6 +- .../graphql/src/lib/mutations/createField.ts | 1 - .../graphql/src/lib/mutations/createScreen.ts | 1 - .../src/lib/mutations/deleteCertification.ts | 4 +- .../graphql/src/lib/mutations/index.ts | 1 - .../graphql/src/lib/queries/getTranslation.ts | 2 +- .../form-system/ui-components/project.json | 11 +- .../Banknumber/Banknumber.tsx | 2 +- .../field-components/Checkbox/Checkbox.tsx | 2 +- .../FileUpload/FileUpload.tsx | 10 +- .../HomestayOverview/HomestayOverview.tsx | 43 +- .../HomestayOverview/icelandicLocale.ts | 48 +- .../HomestayOverview/styles.css.ts | 22 +- .../components/field-components/List/List.tsx | 4 +- .../NationalId/NationalId.tsx | 1 - .../field-components/TextInput/TextInput.tsx | 2 +- .../components/form-stepper/formStepper.tsx | 16 +- .../ui-components/src/lib/enums.ts | 13 +- .../ui-components/src/lib/messages.ts | 15 +- .../screens/ExampleScreen/ExampleScreen.tsx | 7 +- .../src/screens/FormsScreen/FormsScreen.tsx | 12 +- .../src/utils/currencyFormatter.ts | 14 +- .../ui-components/tsconfig.lib.json | 2 +- 89 files changed, 1324 insertions(+), 1063 deletions(-) diff --git a/apps/portals/form-system/src/screens/FormsScreen.tsx b/apps/portals/form-system/src/screens/FormsScreen.tsx index b4907047fbb7..911245568599 100644 --- a/apps/portals/form-system/src/screens/FormsScreen.tsx +++ b/apps/portals/form-system/src/screens/FormsScreen.tsx @@ -1,26 +1,20 @@ import { useMutation } from '@apollo/client' -import { useAuth } from '@island.is/auth/react' -import { useLocale, useLocalizedQuery } from '@island.is/localization' +import { useLocale } from '@island.is/localization' import { Params, useNavigate, useParams } from 'react-router-dom' import { CREATE_APPLICATION, CREATE_FORM } from '@island.is/form-system/graphql' export const FormsScreen = () => { - const { userInfo } = useAuth() const { formatMessage } = useLocale() const navigate = useNavigate() - const nationalId = userInfo?.profile?.nationalId - // Get the slug and send it to the backend with the user nationalId to either get a [formGuids] or create a new form + // Get the slug and send it to the backend with the user nationalId to either get a [formId] or create a new form // If the user has no forms, create a new form // If the user has forms, get the forms and display them const { slug } = useParams() as Params - // use the slug to make a query to the backend to get the formGuids + // use the slug to make a query to the backend to get the formId - if (!nationalId) { - return - } // const { // data, @@ -79,7 +73,7 @@ export const FormsScreen = () => { // // if it doesn't, create a new form from template and redirect to // } - return <>HOHO</> + return <>Test</> } // const FormCard = () => { diff --git a/libs/api/domains/form-system/src/dto/application.input.ts b/libs/api/domains/form-system/src/dto/application.input.ts index 7c158ddd2351..af094550c4b1 100644 --- a/libs/api/domains/form-system/src/dto/application.input.ts +++ b/libs/api/domains/form-system/src/dto/application.input.ts @@ -1,6 +1,7 @@ import { Field, InputType } from '@nestjs/graphql' import { OrganizationInput } from './organization.input' import { SectionInput } from './section.input' +import { DependencyInput } from './form.input' @InputType('FormSystemCreateApplicationInput') export class CreateApplicationInput { @@ -14,6 +15,18 @@ export class GetApplicationInput { formId?: string } +@InputType('FormSystemApplicationEventDtoInput') +export class ApplicationEventDtoInput { + @Field(() => Date, { nullable: true }) + created?: Date + + @Field(() => String, { nullable: true }) + eventType?: string + + @Field(() => Boolean, { nullable: true }) + isFileEvent?: boolean +} + @InputType('FormSystemApplicationInput') export class ApplicationInput { @Field(() => String, { nullable: true }) @@ -34,6 +47,21 @@ export class ApplicationInput { @Field(() => Date, { nullable: true }) modified?: Date + @Field(() => Date, { nullable: true }) + submittedAt?: Date + + @Field(() => [DependencyInput], { nullable: true }) + dependencies?: DependencyInput[] + + @Field(() => [String], { nullable: 'itemsAndList' }) + completed?: string[] + + @Field(() => String, { nullable: true }) + status?: string + + @Field(() => [ApplicationEventDtoInput], { nullable: true }) + events?: ApplicationEventDtoInput[] + @Field(() => [SectionInput], { nullable: 'itemsAndList' }) sections?: SectionInput[] } diff --git a/libs/api/domains/form-system/src/dto/form.input.ts b/libs/api/domains/form-system/src/dto/form.input.ts index f2e4ca40adc5..d620837877f5 100644 --- a/libs/api/domains/form-system/src/dto/form.input.ts +++ b/libs/api/domains/form-system/src/dto/form.input.ts @@ -47,6 +47,30 @@ export class GetAllFormsInput { organizationId?: string } +@InputType('FormSystemFormUrlInput') +export class FormUrlInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => String, { nullable: true }) + organizationUrlId?: string + + @Field(() => String, { nullable: true }) + url?: string + + @Field(() => Boolean, { nullable: true }) + isXroad?: boolean + + @Field(() => Boolean, { nullable: true }) + isTest?: boolean + + @Field(() => String, { nullable: true }) + type?: string + + @Field(() => String, { nullable: true }) + method?: string +} + @InputType('FormSystemUpdateFormDtoInput') export class UpdateFormDtoInput { @Field(() => String, { nullable: true }) @@ -75,6 +99,12 @@ export class UpdateFormDtoInput { @Field(() => [DependencyInput], { nullable: 'itemsAndList' }) dependencies?: DependencyInput[] + + @Field(() => String, { nullable: true }) + status?: string + + @Field(() => [FormUrlInput], { nullable: true }) + urls?: FormUrlInput[] } @InputType('FormSystemUpdateFormInput') @@ -141,6 +171,12 @@ export class FormInput { @Field(() => [DependencyInput], { nullable: 'itemsAndList' }) dependencies?: DependencyInput[] + + @Field(() => String, { nullable: true }) + status?: string + + @Field(() => [FormUrlInput], { nullable: 'itemsAndList' }) + urls?: FormUrlInput[] } @InputType('FormSystemFormResponseInput') diff --git a/libs/api/domains/form-system/src/dto/section.input.ts b/libs/api/domains/form-system/src/dto/section.input.ts index f0824b6585d1..97246a371012 100644 --- a/libs/api/domains/form-system/src/dto/section.input.ts +++ b/libs/api/domains/form-system/src/dto/section.input.ts @@ -1,4 +1,4 @@ -import { Field, InputType, Int, registerEnumType } from '@nestjs/graphql' +import { Field, InputType, Int } from '@nestjs/graphql' import { LanguageTypeInput } from './languageType.input' import { ScreenInput } from './screen.input' diff --git a/libs/api/domains/form-system/src/dto/value.input.ts b/libs/api/domains/form-system/src/dto/value.input.ts index be8f2226b017..5465ff9a8640 100644 --- a/libs/api/domains/form-system/src/dto/value.input.ts +++ b/libs/api/domains/form-system/src/dto/value.input.ts @@ -24,7 +24,7 @@ export class ValueInput { date?: Date @Field(() => String, { nullable: true }) - kennitala?: string + nationalId?: string @Field(() => String, { nullable: true }) name?: string @@ -47,6 +47,9 @@ export class ValueInput { @Field(() => String, { nullable: true }) homestayNumber?: string + @Field(() => String, { nullable: true }) + propertyNumber?: string + @Field(() => Int, { nullable: true }) totalDays?: number @@ -59,8 +62,44 @@ export class ValueInput { @Field(() => Boolean, { nullable: true }) isNullReport?: boolean - @Field(() => [MonthInput], { nullable: true }) + @Field(() => [MonthInput], { nullable: 'itemsAndList' }) months?: MonthInput[] + + @Field(() => String, { nullable: true }) + listValue?: string + + @Field(() => String, { nullable: true }) + email?: string + + @Field(() => String, { nullable: true }) + iskNumber?: string + + @Field(() => Boolean, { nullable: true }) + checkboxValue?: boolean + + @Field(() => String, { nullable: true }) + phoneNumber?: string + + @Field(() => String, { nullable: true }) + bankAccount?: string + + @Field(() => String, { nullable: true }) + time?: string + + @Field(() => String, { nullable: true }) + s3Key?: string +} + +@InputType('FormSystemApplicationEventDtoInput') +export class ApplicationEventDtoInput { + @Field(() => Date, { nullable: true }) + created?: Date + + @Field(() => String, { nullable: true }) + eventType?: string + + @Field(() => Boolean, { nullable: true }) + isFileEvent?: boolean } @InputType('FormSystemValueDtoInput') @@ -73,4 +112,7 @@ export class ValueDtoInput { @Field(() => ValueInput, { nullable: true }) json?: ValueInput + + @Field(() => [ApplicationEventDtoInput], { nullable: 'itemsAndList' }) + events?: ApplicationEventDtoInput[] } diff --git a/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts b/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts index 03a6584387f6..131c7326aaef 100644 --- a/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applicants/applicants.resolver.ts @@ -21,7 +21,7 @@ import { @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ApplicantsResolver { - constructor(private readonly applicantsService: ApplicantsService) { } + constructor(private readonly applicantsService: ApplicantsService) {} @Mutation(() => Applicant, { name: 'formSystemCreateApplicant', diff --git a/libs/api/domains/form-system/src/lib/applicants/applicants.service.ts b/libs/api/domains/form-system/src/lib/applicants/applicants.service.ts index 117839bb9c49..647af240e47e 100644 --- a/libs/api/domains/form-system/src/lib/applicants/applicants.service.ts +++ b/libs/api/domains/form-system/src/lib/applicants/applicants.service.ts @@ -22,7 +22,7 @@ export class ApplicantsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private formApplicantTypesApi: FormApplicantTypesApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts index 645d4a8c48b4..bdc4f81246e1 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts @@ -20,7 +20,7 @@ import { @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ApplicationsResolver { - constructor(private readonly applicationsService: ApplicationsService) { } + constructor(private readonly applicationsService: ApplicationsService) {} @Query(() => Application, { name: 'formSystemGetApplication', diff --git a/libs/api/domains/form-system/src/lib/applications/applications.service.ts b/libs/api/domains/form-system/src/lib/applications/applications.service.ts index b4d6dcb26e32..bb169d6274de 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.service.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.service.ts @@ -20,7 +20,7 @@ export class ApplicationsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private applicationsApi: ApplicationsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts b/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts index c7fc4d7472d9..99bc6cef2e02 100644 --- a/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts +++ b/libs/api/domains/form-system/src/lib/certification/certification.resolver.ts @@ -9,7 +9,10 @@ import { } from '@island.is/auth-nest-tools' import { Audit } from '@island.is/nest/audit' import { CertificationsService } from './certification.service' -import { CreateCertificationInput, DeleteCertificationInput } from '../../dto/certification.input' +import { + CreateCertificationInput, + DeleteCertificationInput, +} from '../../dto/certification.input' import { FormCertificationTypeDto } from '../../models/certification.model' @Resolver() @@ -17,7 +20,7 @@ import { FormCertificationTypeDto } from '../../models/certification.model' @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class CertificationsResolver { - constructor(private readonly certificationsService: CertificationsService) { } + constructor(private readonly certificationsService: CertificationsService) {} @Mutation(() => FormCertificationTypeDto, { name: 'formSystemCreateCertification', @@ -32,7 +35,7 @@ export class CertificationsResolver { @Mutation(() => Boolean, { name: 'formSystemDeleteCertification', - nullable: true + nullable: true, }) async deleteCertification( @Args('input', { type: () => DeleteCertificationInput }) diff --git a/libs/api/domains/form-system/src/lib/certification/certification.service.ts b/libs/api/domains/form-system/src/lib/certification/certification.service.ts index 2cb6b14eeb53..e02dc3a59059 100644 --- a/libs/api/domains/form-system/src/lib/certification/certification.service.ts +++ b/libs/api/domains/form-system/src/lib/certification/certification.service.ts @@ -3,16 +3,24 @@ import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { ApolloError } from '@apollo/client' import { handle4xx } from '../../utils/errorHandler' -import { FormCertificationTypeDto, FormCertificationTypesApi, FormCertificationTypesControllerCreateRequest, FormCertificationTypesControllerDeleteRequest } from '@island.is/clients/form-system' -import { CreateCertificationInput, DeleteCertificationInput } from '../../dto/certification.input' +import { + FormCertificationTypeDto, + FormCertificationTypesApi, + FormCertificationTypesControllerCreateRequest, + FormCertificationTypesControllerDeleteRequest, +} from '@island.is/clients/form-system' +import { + CreateCertificationInput, + DeleteCertificationInput, +} from '../../dto/certification.input' @Injectable() export class CertificationsService { constructor( @Inject(LOGGER_PROVIDER) private logger: Logger, - private certificationsApi: FormCertificationTypesApi - ) { } + private certificationsApi: FormCertificationTypesApi, + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -31,11 +39,11 @@ export class CertificationsService { async createCertification( auth: User, - input: CreateCertificationInput + input: CreateCertificationInput, ): Promise<FormCertificationTypeDto> { const response = await this.certificationsApiWithAuth(auth) .formCertificationTypesControllerCreate( - input as FormCertificationTypesControllerCreateRequest + input as FormCertificationTypesControllerCreateRequest, ) .catch((e) => handle4xx(e, this.handleError, 'failed to create certification'), @@ -52,10 +60,12 @@ export class CertificationsService { async deleteCertification( auth: User, - input: DeleteCertificationInput + input: DeleteCertificationInput, ): Promise<void> { await this.certificationsApiWithAuth(auth) - .formCertificationTypesControllerDelete(input as FormCertificationTypesControllerDeleteRequest) + .formCertificationTypesControllerDelete( + input as FormCertificationTypesControllerDeleteRequest, + ) .catch((e) => handle4xx(e, this.handleError, 'failed to delete certification'), ) diff --git a/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts b/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts index 2cefb198e7b7..99869e7f7eb5 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.resolver.ts @@ -22,7 +22,7 @@ import { Field } from '../../models/field.model' @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class FieldsResolver { - constructor(private readonly fieldsService: FieldsService) { } + constructor(private readonly fieldsService: FieldsService) {} @Mutation(() => Field, { name: 'formSystemCreateField', diff --git a/libs/api/domains/form-system/src/lib/fields/fields.service.ts b/libs/api/domains/form-system/src/lib/fields/fields.service.ts index 72b8a3a19f1a..521ae6c83492 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.service.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.service.ts @@ -24,7 +24,7 @@ export class FieldsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private fieldsApi: FieldsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts index 86217185f83f..4da1a65301e2 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.resolver.ts @@ -9,7 +9,13 @@ import { CodeOwners } from '@island.is/shared/constants' import { UseGuards } from '@nestjs/common' import { Args, Mutation, Query, Resolver } from '@nestjs/graphql' import { FormsService } from './forms.service' -import { CreateFormInput, DeleteFormInput, GetFormInput, GetAllFormsInput, UpdateFormInput } from '../../dto/form.input' +import { + CreateFormInput, + DeleteFormInput, + GetFormInput, + GetAllFormsInput, + UpdateFormInput, +} from '../../dto/form.input' import { FormResponse } from '../../models/form.model' @Resolver() @@ -17,7 +23,7 @@ import { FormResponse } from '../../models/form.model' @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class FormsResolver { - constructor(private readonly formsService: FormsService) { } + constructor(private readonly formsService: FormsService) {} @Mutation(() => FormResponse, { name: 'formSystemCreateForm', diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 8c084c37ba32..c6e436191dd4 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -26,7 +26,7 @@ export class FormsService { constructor( @Inject(LOGGER_PROVIDER) private readonly logger: Logger, private formsService: FormsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -34,6 +34,7 @@ export class FormsService { error: JSON.stringify(error), category: 'forms-service', } + console.error(err) this.logger.error(errorDetail || 'Error in forms service', err) throw new ApolloError(error.message) } @@ -48,11 +49,9 @@ export class FormsService { createFormDto: input as CreateFormDto, }) .catch((e) => handle4xx(e, this.handleError, 'failed to create form')) - if (!response || response instanceof ApolloError) { return {} } - return response as FormResponse } @@ -71,9 +70,8 @@ export class FormsService { async getForm(auth: User, input: GetFormInput): Promise<FormResponse> { const response = await this.formsApiWithAuth(auth) .formsControllerFindOne(input as FormsControllerFindOneRequest) - //.catch((e) => console.error(e)) + .catch((e) => console.error(e)) .catch((e) => handle4xx(e, this.handleError, 'failed to get form')) - if (!response || response instanceof ApolloError) { return {} } diff --git a/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts b/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts index b5609cd23364..4ecac23ff1a0 100644 --- a/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts +++ b/libs/api/domains/form-system/src/lib/listItems/listItems.resolver.ts @@ -22,7 +22,7 @@ import { ListItem } from '../../models/listItem.model' @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ListItemsResolver { - constructor(private readonly listItemsService: ListItemsService) { } + constructor(private readonly listItemsService: ListItemsService) {} @Mutation(() => ListItem, { name: 'formSystemCreateListItem', diff --git a/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts b/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts index 287e5cc5b8dd..0b3b3b10b8c3 100644 --- a/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts +++ b/libs/api/domains/form-system/src/lib/organizations/organizations.resolver.ts @@ -17,7 +17,7 @@ import { UseGuards } from '@nestjs/common' @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class OrganizationsResolver { - constructor(private readonly organizationsService: OrganizationsService) { } + constructor(private readonly organizationsService: OrganizationsService) {} @Query(() => Organization, { name: 'formSystemGetOrganization', diff --git a/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts b/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts index c7a66b33b290..caa11533164c 100644 --- a/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts +++ b/libs/api/domains/form-system/src/lib/screens/screens.resolver.ts @@ -22,7 +22,7 @@ import { Screen } from '../../models/screen.model' @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ScreensResolver { - constructor(private readonly screensService: ScreensService) { } + constructor(private readonly screensService: ScreensService) {} @Mutation(() => Screen, { name: 'formSystemCreateScreen', diff --git a/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts b/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts index 55c60691a5bc..f64c21f7e6f0 100644 --- a/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts +++ b/libs/api/domains/form-system/src/lib/sections/sections.resolver.ts @@ -22,7 +22,7 @@ import { Section } from '../../models/section.model' @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class SectionsResolver { - constructor(private readonly sectionsService: SectionsService) { } + constructor(private readonly sectionsService: SectionsService) {} @Mutation(() => Section, { name: 'formSystemCreateSection', diff --git a/libs/api/domains/form-system/src/lib/sections/sections.service.ts b/libs/api/domains/form-system/src/lib/sections/sections.service.ts index fd6a82900885..1400fef1e51c 100644 --- a/libs/api/domains/form-system/src/lib/sections/sections.service.ts +++ b/libs/api/domains/form-system/src/lib/sections/sections.service.ts @@ -24,7 +24,7 @@ export class SectionsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private sectionsService: SectionsApi, - ) { } + ) {} // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/services/services.resolver.ts b/libs/api/domains/form-system/src/lib/services/services.resolver.ts index 9e15a31f386c..9dcb3bf34ae5 100644 --- a/libs/api/domains/form-system/src/lib/services/services.resolver.ts +++ b/libs/api/domains/form-system/src/lib/services/services.resolver.ts @@ -17,7 +17,7 @@ import { GetTranslationInput } from '../../dto/service.input' @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ServicesResolver { - constructor(private readonly formSystemServices: ServicesService) { } + constructor(private readonly formSystemServices: ServicesService) {} @Mutation(() => Translation, { name: 'formSystemGetTranslation', diff --git a/libs/api/domains/form-system/src/models/applications.model.ts b/libs/api/domains/form-system/src/models/applications.model.ts index 5bc62cb07718..d1016edd8ac3 100644 --- a/libs/api/domains/form-system/src/models/applications.model.ts +++ b/libs/api/domains/form-system/src/models/applications.model.ts @@ -1,31 +1,61 @@ import { Field, ObjectType } from '@nestjs/graphql' -import { Organization } from './organization.model' import { Section } from './section.model' import { LanguageType } from './languageType.model' +import { Dependency } from './form.model' + +@ObjectType('FormSystemApplicationEventDto') +export class ApplicationEventDto { + @Field(() => Date, { nullable: true }) + created?: Date + + @Field(() => String, { nullable: true }) + eventType?: string + + @Field(() => Boolean, { nullable: true }) + isFileEvent?: boolean +} @ObjectType('FormSystemApplication') export class Application { @Field(() => String, { nullable: true }) id?: string - @Field(() => Organization, { nullable: true }) - organization?: Organization + @Field(() => LanguageType, { nullable: true }) + organizationName?: LanguageType @Field(() => String, { nullable: true }) formId?: string - @Field(() => String, { nullable: true }) - slug?: string - @Field(() => LanguageType, { nullable: true }) formName?: LanguageType + @Field(() => Boolean, { nullable: true }) + isTest?: boolean + + @Field(() => String, { nullable: true }) + slug?: string + @Field(() => Date, { nullable: true }) created?: Date @Field(() => Date, { nullable: true }) modified?: Date + @Field(() => Date, { nullable: true }) + submittedAt?: Date + + @Field(() => [Dependency], { nullable: 'itemsAndList' }) + dependencies?: Dependency[] + + @Field(() => [String], { nullable: 'itemsAndList' }) + completed?: string[] + + @Field(() => String, { nullable: true }) + status?: string + + @Field(() => [ApplicationEventDto], { nullable: 'itemsAndList' }) + events?: ApplicationEventDto[] + @Field(() => [Section], { nullable: 'itemsAndList' }) sections?: Section[] } diff --git a/libs/api/domains/form-system/src/models/form.model.ts b/libs/api/domains/form-system/src/models/form.model.ts index cbc6d067f9b3..67fda21bd49b 100644 --- a/libs/api/domains/form-system/src/models/form.model.ts +++ b/libs/api/domains/form-system/src/models/form.model.ts @@ -23,6 +23,30 @@ export class Dependency { isSelected?: boolean } +@ObjectType('FormSystemFormUrl') +export class FormUrl { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => String, { nullable: true }) + organizationUrlId?: string + + @Field(() => String, { nullable: true }) + url?: string + + @Field(() => Boolean, { nullable: true }) + isXroad?: boolean + + @Field(() => Boolean, { nullable: true }) + isTest?: boolean + + @Field(() => String, { nullable: true }) + type?: string + + @Field(() => String, { nullable: true }) + method?: string +} + @ObjectType('FormSystemForm') export class Form { @Field(() => String, { nullable: true }) @@ -78,6 +102,12 @@ export class Form { @Field(() => [Dependency], { nullable: 'itemsAndList' }) dependencies?: Dependency[] + + @Field(() => String, { nullable: true }) + status?: string + + @Field(() => [FormUrl], { nullable: 'itemsAndList' }) + urls?: FormUrl[] } @ObjectType('FormSystemFormResponse') diff --git a/libs/api/domains/form-system/src/models/month.model.ts b/libs/api/domains/form-system/src/models/month.model.ts index 4ac0266d4d56..451316f563f1 100644 --- a/libs/api/domains/form-system/src/models/month.model.ts +++ b/libs/api/domains/form-system/src/models/month.model.ts @@ -1,4 +1,4 @@ -import { Field, Int, ObjectType } from "@nestjs/graphql"; +import { Field, Int, ObjectType } from '@nestjs/graphql' @ObjectType('FormSystemMonth') export class Month { diff --git a/libs/api/domains/form-system/src/models/value.model.ts b/libs/api/domains/form-system/src/models/value.model.ts index 087e14958c7f..5fbd4e232db6 100644 --- a/libs/api/domains/form-system/src/models/value.model.ts +++ b/libs/api/domains/form-system/src/models/value.model.ts @@ -1,5 +1,6 @@ import { Field, Int, ObjectType } from '@nestjs/graphql' import { Month } from './month.model' +import { ApplicationEventDto } from './applications.model' @ObjectType('FormSystemValue') export class Value { @@ -13,7 +14,7 @@ export class Value { date?: Date @Field(() => String, { nullable: true }) - kennitala?: string + nationalId?: string @Field(() => String, { nullable: true }) name?: string @@ -36,6 +37,9 @@ export class Value { @Field(() => String, { nullable: true }) homestayNumber?: string + @Field(() => String, { nullable: true }) + propertyNumber?: string + @Field(() => Int, { nullable: true }) totalDays?: number @@ -48,8 +52,32 @@ export class Value { @Field(() => Boolean, { nullable: true }) isNullReport?: boolean - @Field(() => [Month], { nullable: true }) + @Field(() => [Month], { nullable: 'itemsAndList' }) months?: Month[] + + @Field(() => String, { nullable: true }) + listValue?: string + + @Field(() => String, { nullable: true }) + email?: string + + @Field(() => String, { nullable: true }) + iskNumber?: string + + @Field(() => Boolean, { nullable: true }) + checkboxValue?: boolean + + @Field(() => String, { nullable: true }) + phoneNumber?: string + + @Field(() => String, { nullable: true }) + bankAccount?: string + + @Field(() => String, { nullable: true }) + time?: string + + @Field(() => String, { nullable: true }) + s3Key?: string } @ObjectType('FormSystemValueDto') @@ -62,4 +90,7 @@ export class ValueDto { @Field(() => Value, { nullable: true }) json?: Value + + @Field(() => [ApplicationEventDto], { nullable: 'itemsAndList' }) + events?: ApplicationEventDto[] } diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index 981cad4e4891..a63fc35f87f3 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -17,9 +17,7 @@ } } }, - "tags": [ - "internal" - ] + "tags": ["internal"] } }, "/version": { @@ -38,9 +36,7 @@ } } }, - "tags": [ - "internal" - ] + "tags": ["internal"] } }, "/health/check": { @@ -229,9 +225,7 @@ } } }, - "tags": [ - "organizations" - ] + "tags": ["organizations"] }, "get": { "operationId": "OrganizationsController_findAll", @@ -249,9 +243,7 @@ } } }, - "tags": [ - "organizations" - ] + "tags": ["organizations"] } }, "/organizations/{id}": { @@ -280,9 +272,7 @@ } } }, - "tags": [ - "organizations" - ] + "tags": ["organizations"] } }, "/forms": { @@ -312,9 +302,7 @@ } } }, - "tags": [ - "forms" - ] + "tags": ["forms"] } }, "/forms/organization/{organizationId}": { @@ -343,15 +331,13 @@ } } }, - "tags": [ - "forms" - ] + "tags": ["forms"] } }, "/forms/{id}": { "get": { "operationId": "FormsController_findOne", - "summary": "Get FormResponse by formId", + "summary": "Get form by idd", "parameters": [ { "name": "id", @@ -364,7 +350,7 @@ ], "responses": { "201": { - "description": "Get FormResponse by formId", + "description": "Get form by id", "content": { "application/json": { "schema": { @@ -374,9 +360,7 @@ } } }, - "tags": [ - "forms" - ] + "tags": ["forms"] }, "put": { "operationId": "FormsController_updateForm", @@ -406,9 +390,7 @@ "description": "Update form" } }, - "tags": [ - "forms" - ] + "tags": ["forms"] }, "delete": { "operationId": "FormsController_delete", @@ -428,9 +410,65 @@ "description": "Delete field" } }, - "tags": [ - "forms" - ] + "tags": ["forms"] + } + }, + "/forms/changePublished/{id}": { + "put": { + "operationId": "FormsController_changePublishedForm", + "summary": "Change published form", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Change published form", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormResponseDto" + } + } + } + } + }, + "tags": ["forms"] + } + }, + "/forms/publish/{id}": { + "put": { + "operationId": "FormsController_publish", + "summary": "Publish form", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Publish form", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormResponseDto" + } + } + } + } + }, + "tags": ["forms"] } }, "/sections": { @@ -460,9 +498,7 @@ } } }, - "tags": [ - "sections" - ] + "tags": ["sections"] }, "put": { "operationId": "SectionsController_updateDisplayOrder", @@ -483,9 +519,7 @@ "description": "Update display order of sections" } }, - "tags": [ - "sections" - ] + "tags": ["sections"] } }, "/sections/{id}": { @@ -517,9 +551,7 @@ "description": "Updates a section" } }, - "tags": [ - "sections" - ] + "tags": ["sections"] }, "delete": { "operationId": "SectionsController_delete", @@ -539,9 +571,7 @@ "description": "Delete section by id" } }, - "tags": [ - "sections" - ] + "tags": ["sections"] } }, "/screens": { @@ -571,9 +601,7 @@ } } }, - "tags": [ - "screens" - ] + "tags": ["screens"] }, "put": { "operationId": "ScreensController_updateDisplayOrder", @@ -594,9 +622,7 @@ "description": "Update display order of screens" } }, - "tags": [ - "screens" - ] + "tags": ["screens"] } }, "/screens/{id}": { @@ -635,9 +661,7 @@ } } }, - "tags": [ - "screens" - ] + "tags": ["screens"] }, "delete": { "operationId": "ScreensController_delete", @@ -657,9 +681,7 @@ "description": "Delete screen by id" } }, - "tags": [ - "screens" - ] + "tags": ["screens"] } }, "/fields": { @@ -689,9 +711,7 @@ } } }, - "tags": [ - "fields" - ] + "tags": ["fields"] }, "put": { "operationId": "FieldsController_updateDisplayOrder", @@ -712,9 +732,7 @@ "description": "Update display order of fields" } }, - "tags": [ - "fields" - ] + "tags": ["fields"] } }, "/fields/{id}": { @@ -746,9 +764,7 @@ "description": "Update field" } }, - "tags": [ - "fields" - ] + "tags": ["fields"] }, "delete": { "operationId": "FieldsController_delete", @@ -768,9 +784,7 @@ "description": "Delete field by id" } }, - "tags": [ - "fields" - ] + "tags": ["fields"] } }, "/listItems": { @@ -800,9 +814,7 @@ } } }, - "tags": [ - "list items" - ] + "tags": ["list items"] }, "put": { "operationId": "ListItemsController_updateDisplayOrder", @@ -823,9 +835,7 @@ "description": "Update display order of list items" } }, - "tags": [ - "list items" - ] + "tags": ["list items"] } }, "/listItems/{id}": { @@ -857,9 +867,7 @@ "description": "Update list item" } }, - "tags": [ - "list items" - ] + "tags": ["list items"] }, "delete": { "operationId": "ListItemsController_delete", @@ -879,9 +887,7 @@ "description": "Delete of list items" } }, - "tags": [ - "list items" - ] + "tags": ["list items"] } }, "/applications/{id}": { @@ -910,9 +916,7 @@ } } }, - "tags": [ - "applications" - ] + "tags": ["applications"] }, "put": { "operationId": "ApplicationsController_update", @@ -942,9 +946,7 @@ "description": "Update application dependencies" } }, - "tags": [ - "applications" - ] + "tags": ["applications"] } }, "/applications/{slug}": { @@ -983,9 +985,7 @@ } } }, - "tags": [ - "applications" - ] + "tags": ["applications"] } }, "/applications/submit/{id}": { @@ -1007,9 +1007,30 @@ "description": "Submit application" } }, - "tags": [ - "applications" - ] + "tags": ["applications"] + } + }, + "/applications/validateScreen": { + "post": { + "operationId": "ApplicationsController_validateScreen", + "summary": "validate and save input values of a screen", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScreenDto" + } + } + } + }, + "responses": { + "201": { + "description": "validate and save input values of a screen" + } + }, + "tags": ["applications"] } }, "/applications/organization/{organizationId}": { @@ -1062,9 +1083,7 @@ } } }, - "tags": [ - "applications" - ] + "tags": ["applications"] } }, "/values": { @@ -1094,9 +1113,7 @@ } } }, - "tags": [ - "values" - ] + "tags": ["values"] } }, "/values/{id}": { @@ -1135,9 +1152,7 @@ } } }, - "tags": [ - "values" - ] + "tags": ["values"] }, "delete": { "operationId": "ValuesController_delete", @@ -1157,9 +1172,7 @@ "description": "Delete value by id" } }, - "tags": [ - "values" - ] + "tags": ["values"] } }, "/formApplicantTypes": { @@ -1189,9 +1202,7 @@ } } }, - "tags": [ - "form applicant types" - ] + "tags": ["form applicant types"] } }, "/formApplicantTypes/{id}": { @@ -1223,9 +1234,7 @@ "description": "Update form applicant" } }, - "tags": [ - "form applicant types" - ] + "tags": ["form applicant types"] }, "delete": { "operationId": "FormApplicantTypesController_delete", @@ -1245,9 +1254,7 @@ "description": "Delete form applicant" } }, - "tags": [ - "form applicant types" - ] + "tags": ["form applicant types"] } }, "/formCertificationTypes": { @@ -1277,9 +1284,7 @@ } } }, - "tags": [ - "form certification types" - ] + "tags": ["form certification types"] } }, "/formCertificationTypes/{id}": { @@ -1301,9 +1306,7 @@ "description": "Remove form certification type" } }, - "tags": [ - "form certification types" - ] + "tags": ["form certification types"] } }, "/formUrls": { @@ -1333,9 +1336,7 @@ } } }, - "tags": [ - "form urls" - ] + "tags": ["form urls"] } }, "/formUrls/{id}": { @@ -1357,9 +1358,7 @@ "description": "Remove form url" } }, - "tags": [ - "form urls" - ] + "tags": ["form urls"] } }, "/organizationCertificationTypes": { @@ -1389,9 +1388,7 @@ } } }, - "tags": [ - "organization certification types" - ] + "tags": ["organization certification types"] } }, "/organizationCertificationTypes/{id}": { @@ -1413,9 +1410,7 @@ "description": "Remove organization certification type" } }, - "tags": [ - "organization certification types" - ] + "tags": ["organization certification types"] } }, "/organizationFieldTypes": { @@ -1445,9 +1440,7 @@ } } }, - "tags": [ - "organization field types" - ] + "tags": ["organization field types"] } }, "/organizationFieldTypes/{id}": { @@ -1469,9 +1462,7 @@ "description": "Remove organization field type" } }, - "tags": [ - "organization field types" - ] + "tags": ["organization field types"] } }, "/organizationListTypes": { @@ -1501,9 +1492,7 @@ } } }, - "tags": [ - "organization list types" - ] + "tags": ["organization list types"] } }, "/organizationListTypes/{id}": { @@ -1525,9 +1514,7 @@ "description": "Remove organization list type" } }, - "tags": [ - "organization list types" - ] + "tags": ["organization list types"] } }, "/organizationUrls": { @@ -1557,9 +1544,7 @@ } } }, - "tags": [ - "organization urls" - ] + "tags": ["organization urls"] } }, "/organizationUrls/{id}": { @@ -1591,9 +1576,7 @@ "description": "Update an organization url" } }, - "tags": [ - "organization urls" - ] + "tags": ["organization urls"] }, "delete": { "operationId": "OrganizationUrlsController_delete", @@ -1613,9 +1596,7 @@ "description": "Remove organization url" } }, - "tags": [ - "organization urls" - ] + "tags": ["organization urls"] } } }, @@ -1640,9 +1621,7 @@ "type": "boolean" } }, - "required": [ - "ok" - ] + "required": ["ok"] }, "Version": { "type": "object", @@ -1651,9 +1630,7 @@ "type": "string" } }, - "required": [ - "version" - ] + "required": ["version"] }, "LanguageType": { "type": "object", @@ -1667,10 +1644,7 @@ "default": "" } }, - "required": [ - "is", - "en" - ] + "required": ["is", "en"] }, "CreateOrganizationDto": { "type": "object", @@ -1682,10 +1656,7 @@ "type": "string" } }, - "required": [ - "name", - "nationalId" - ] + "required": ["name", "nationalId"] }, "Dependency": { "type": "object", @@ -1703,11 +1674,7 @@ "type": "boolean" } }, - "required": [ - "parentProp", - "childProps", - "isSelected" - ] + "required": ["parentProp", "childProps", "isSelected"] }, "FormCertificationTypeDto": { "type": "object", @@ -1719,10 +1686,7 @@ "type": "string" } }, - "required": [ - "id", - "certificationTypeId" - ] + "required": ["id", "certificationTypeId"] }, "FormApplicantTypeDto": { "type": "object", @@ -1737,11 +1701,7 @@ "$ref": "#/components/schemas/LanguageType" } }, - "required": [ - "id", - "applicantTypeId", - "name" - ] + "required": ["id", "applicantTypeId", "name"] }, "FormUrlDto": { "type": "object", @@ -1875,13 +1835,7 @@ "type": "boolean" } }, - "required": [ - "id", - "label", - "value", - "displayOrder", - "isSelected" - ] + "required": ["id", "label", "value", "displayOrder", "isSelected"] }, "Month": { "type": "object", @@ -2018,11 +1972,7 @@ } } }, - "required": [ - "id", - "order", - "events" - ] + "required": ["id", "order", "events"] }, "FieldDto": { "type": "object", @@ -2201,17 +2151,10 @@ "type": "number" }, "derivedFrom": { - "type": "number" + "type": "string" }, "status": { - "type": "string", - "enum": [ - "a9d495ea-433a-46d4-84ba-8604cc8c7d40", - "3ea7923b-e2a8-499d-b2db-42336bfe7c0b", - "06459c6f-9f1e-4ddd-bbd8-e553d9a4363e", - "c095bb71-b4ab-4a7c-9be4-4621b62591ce", - "11c9db90-2065-45d5-b649-c98001c10dcb" - ] + "type": "string" }, "stopProgressOnValidatingScreen": { "type": "boolean" @@ -2295,11 +2238,7 @@ } } }, - "required": [ - "id", - "name", - "nationalId" - ] + "required": ["id", "name", "nationalId"] }, "OrganizationsResponseDto": { "type": "object", @@ -2311,9 +2250,7 @@ } } }, - "required": [ - "organizations" - ] + "required": ["organizations"] }, "CreateFormDto": { "type": "object", @@ -2322,9 +2259,7 @@ "type": "string" } }, - "required": [ - "organizationId" - ] + "required": ["organizationId"] }, "FieldType": { "type": "object", @@ -2351,12 +2286,7 @@ } } }, - "required": [ - "id", - "name", - "description", - "isCommon" - ] + "required": ["id", "name", "description", "isCommon"] }, "CertificationType": { "type": "object", @@ -2374,12 +2304,7 @@ "type": "boolean" } }, - "required": [ - "id", - "name", - "description", - "isCommon" - ] + "required": ["id", "name", "description", "isCommon"] }, "ApplicantType": { "type": "object", @@ -2400,10 +2325,7 @@ } } }, - "required": [ - "id", - "description" - ] + "required": ["id", "description"] }, "ListType": { "type": "object", @@ -2421,12 +2343,7 @@ "type": "boolean" } }, - "required": [ - "id", - "name", - "description", - "isCommon" - ] + "required": ["id", "name", "description", "isCommon"] }, "OrganizationUrlDto": { "type": "object", @@ -2450,14 +2367,7 @@ "type": "string" } }, - "required": [ - "id", - "url", - "isXroad", - "isTest", - "type", - "method" - ] + "required": ["id", "url", "isXroad", "isTest", "type", "method"] }, "FormResponseDto": { "type": "object", @@ -2549,10 +2459,7 @@ "type": "number" } }, - "required": [ - "formId", - "displayOrder" - ] + "required": ["formId", "displayOrder"] }, "UpdateSectionDto": { "type": "object", @@ -2572,9 +2479,7 @@ "type": "string" } }, - "required": [ - "id" - ] + "required": ["id"] }, "UpdateSectionsDisplayOrderDto": { "type": "object", @@ -2586,9 +2491,7 @@ } } }, - "required": [ - "sectionsDisplayOrderDto" - ] + "required": ["sectionsDisplayOrderDto"] }, "CreateScreenDto": { "type": "object", @@ -2600,10 +2503,7 @@ "type": "number" } }, - "required": [ - "sectionId", - "displayOrder" - ] + "required": ["sectionId", "displayOrder"] }, "UpdateScreenDto": { "type": "object", @@ -2629,10 +2529,7 @@ "type": "string" } }, - "required": [ - "id", - "sectionId" - ] + "required": ["id", "sectionId"] }, "UpdateScreensDisplayOrderDto": { "type": "object", @@ -2644,9 +2541,7 @@ } } }, - "required": [ - "screensDisplayOrderDto" - ] + "required": ["screensDisplayOrderDto"] }, "CreateFieldDto": { "type": "object", @@ -2661,11 +2556,7 @@ "type": "number" } }, - "required": [ - "screenId", - "fieldType", - "displayOrder" - ] + "required": ["screenId", "fieldType", "displayOrder"] }, "UpdateFieldDto": { "type": "object", @@ -2686,32 +2577,7 @@ "$ref": "#/components/schemas/FieldSettings" }, "fieldType": { - "type": "string", - "enum": [ - "b6a7e297-22fd-4426-a4e1-04a11a2e8914", - "eee2840d-a26f-4e9b-a21b-e4478c09e546", - "16603815-3db5-4aec-9bc7-56c1207bb79f", - "cdd63941-ff33-49d1-8b23-0293e413a281", - "f1d14fe1-9e70-4ab2-8f95-8a06a9cf9f48", - "0420775e-ab81-47fc-85af-6c40be3844ac", - "720fb3a3-6a85-456e-8173-b5913e219dc5", - "1f56b93b-8290-4409-8fe0-1b297338e672", - "dc50f154-0dfa-4597-80b8-6f3d9ebc36b1", - "d6c292c7-4e7c-44a6-bb7e-b956122598b0", - "ff7f8580-0419-4f07-9551-fc407d6fb796", - "f806a35b-12c9-4d24-8845-024f77e077f7", - "0e104698-4e58-4874-97a2-a8fd8d3ab7c4", - "1955db2d-c1e3-42ed-b6c5-a668c6136e38", - "cd73ebb6-6573-490a-9bd1-1e693a9229eb", - "6df647aa-27c8-48b1-8ac9-05e8b4251892", - "15a57466-0be3-451d-988d-5b807fea3459", - "7cbbe78f-cd5f-4fb9-a77c-86af2bf986b1", - "ac3fa8a0-9258-49d1-aff2-1dacf31538f0", - "94819d53-69b6-464b-abda-3bb6299d2511", - "83f6f77d-1ca7-4f99-8806-05cec59a48e4", - "6a616adc-80ab-47c1-8037-1d9a8dc68a5c", - "d4143c45-6d45-4052-93c6-42d46572a874" - ] + "type": "string" } } }, @@ -2725,10 +2591,7 @@ "type": "string" } }, - "required": [ - "id", - "screenId" - ] + "required": ["id", "screenId"] }, "UpdateFieldsDisplayOrderDto": { "type": "object", @@ -2740,9 +2603,7 @@ } } }, - "required": [ - "fieldsDisplayOrderDto" - ] + "required": ["fieldsDisplayOrderDto"] }, "CreateListItemDto": { "type": "object", @@ -2754,10 +2615,7 @@ "type": "number" } }, - "required": [ - "fieldId", - "displayOrder" - ] + "required": ["fieldId", "displayOrder"] }, "UpdateListItemDto": { "type": "object", @@ -2783,9 +2641,7 @@ "type": "string" } }, - "required": [ - "id" - ] + "required": ["id"] }, "UpdateListItemsDisplayOrderDto": { "type": "object", @@ -2797,13 +2653,7 @@ } } }, - "required": [ - "listItemsDisplayOrderDto" - ] - }, - "ApplicationEvent": { - "type": "object", - "properties": {} + "required": ["listItemsDisplayOrderDto"] }, "ApplicationDto": { "type": "object", @@ -2851,17 +2701,12 @@ } }, "status": { - "type": "string", - "enum": [ - "ee2545cc-b27f-4d75-bc82-b57f9d10c1b3", - "22b3ab87-4d42-4987-b6fe-33abcf05f112", - "2497f6f3-4b7e-4a6b-bc1e-9084ea2ad72f" - ] + "type": "string" }, "events": { "type": "array", "items": { - "$ref": "#/components/schemas/ApplicationEvent" + "$ref": "#/components/schemas/ApplicationEventDto" } }, "sections": { @@ -2879,9 +2724,7 @@ "type": "boolean" } }, - "required": [ - "isTest" - ] + "required": ["isTest"] }, "UpdateApplicationDto": { "type": "object", @@ -2930,12 +2773,7 @@ "type": "string" } }, - "required": [ - "order", - "fieldId", - "fieldType", - "applicationId" - ] + "required": ["order", "fieldId", "fieldType", "applicationId"] }, "UpdateValueDto": { "type": "object", @@ -2944,9 +2782,7 @@ "$ref": "#/components/schemas/ValueType" } }, - "required": [ - "json" - ] + "required": ["json"] }, "CreateFormApplicantTypeDto": { "type": "object", @@ -2958,10 +2794,7 @@ "type": "string" } }, - "required": [ - "formId", - "applicantTypeId" - ] + "required": ["formId", "applicantTypeId"] }, "UpdateFormApplicantTypeDto": { "type": "object", @@ -2970,9 +2803,7 @@ "$ref": "#/components/schemas/LanguageType" } }, - "required": [ - "name" - ] + "required": ["name"] }, "CreateFormCertificationTypeDto": { "type": "object", @@ -2984,10 +2815,7 @@ "type": "string" } }, - "required": [ - "formId", - "certificationTypeId" - ] + "required": ["formId", "certificationTypeId"] }, "CreateFormUrlDto": { "type": "object", @@ -2999,10 +2827,7 @@ "type": "string" } }, - "required": [ - "formId", - "organizationUrlId" - ] + "required": ["formId", "organizationUrlId"] }, "CreateOrganizationCertificationTypeDto": { "type": "object", @@ -3014,10 +2839,7 @@ "type": "string" } }, - "required": [ - "organizationId", - "certificationTypeId" - ] + "required": ["organizationId", "certificationTypeId"] }, "OrganizationCertificationTypeDto": { "type": "object", @@ -3029,10 +2851,7 @@ "type": "string" } }, - "required": [ - "id", - "certificationTypeId" - ] + "required": ["id", "certificationTypeId"] }, "CreateOrganizationFieldTypeDto": { "type": "object", @@ -3044,10 +2863,7 @@ "type": "string" } }, - "required": [ - "organizationId", - "fieldTypeId" - ] + "required": ["organizationId", "fieldTypeId"] }, "OrganizationFieldTypeDto": { "type": "object", @@ -3059,10 +2875,7 @@ "type": "string" } }, - "required": [ - "id", - "fieldTypeId" - ] + "required": ["id", "fieldTypeId"] }, "CreateOrganizationListTypeDto": { "type": "object", @@ -3074,10 +2887,7 @@ "type": "string" } }, - "required": [ - "organizationId", - "listTypeId" - ] + "required": ["organizationId", "listTypeId"] }, "OrganizationListTypeDto": { "type": "object", @@ -3089,10 +2899,7 @@ "type": "string" } }, - "required": [ - "id", - "listTypeId" - ] + "required": ["id", "listTypeId"] }, "CreateOrganizationUrlDto": { "type": "object", @@ -3104,10 +2911,7 @@ "type": "string" } }, - "required": [ - "organizationId", - "type" - ] + "required": ["organizationId", "type"] }, "UpdateOrganizationUrlDto": { "type": "object", @@ -3125,4 +2929,4 @@ } } } -} \ No newline at end of file +} diff --git a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts index f96053e5dedc..f2a65d608fe3 100644 --- a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts +++ b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts @@ -14,7 +14,6 @@ import { FormApplicantTypesApi, FormCertificationTypesApi, ValuesApi, - } from '../../gen/fetch' const provideApi = <T>( diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index e16df31b420b..d97274dc0a4f 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -12,10 +12,8 @@ export const FormSystemClientConfig = defineConfig({ return { // TODO: Switch to .required() when we have a value in all environments. basePath: - env.optional( - 'FORM_SYSTEM_API_BASE_PATH', - 'https://profun.island.is/umsoknarkerfi', - ) ?? '', + env.optional('FORM_SYSTEM_API_BASE_PATH', 'http://172.19.80.1:3434') ?? + '', } }, }) diff --git a/libs/clients/form-system/src/lib/form-system.module.ts b/libs/clients/form-system/src/lib/form-system.module.ts index d626bd41c504..f5679428caa4 100644 --- a/libs/clients/form-system/src/lib/form-system.module.ts +++ b/libs/clients/form-system/src/lib/form-system.module.ts @@ -36,7 +36,7 @@ import { SectionsApiProvider, FormApplicantProvider, CertificationsProvider, - ValuesProvider + ValuesProvider, ], exports: [ ApplicationsApi, @@ -48,7 +48,7 @@ import { SectionsApi, FormApplicantTypesApi, FormCertificationTypesApi, - ValuesApi + ValuesApi, ], }) -export class FormSystemClientModule { } +export class FormSystemClientModule {} diff --git a/libs/portals/admin/form-system/project.json b/libs/portals/admin/form-system/project.json index dc092429a770..46ca4c492bb1 100644 --- a/libs/portals/admin/form-system/project.json +++ b/libs/portals/admin/form-system/project.json @@ -7,28 +7,19 @@ "targets": { "lint": { "executor": "@nx/linter:eslint", - "outputs": [ - "{options.outputFile}" - ], + "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": [ - "libs/portals/admin/form-system/**/*.ts" - ] + "lintFilePatterns": ["libs/portals/admin/form-system/**/*.ts"] } }, "test": { "executor": "@nx/jest:jest", - "outputs": [ - "{workspaceRoot}/coverage/{projectRoot}" - ], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/portals/admin/form-system/jest.config.ts", "passWithNoTests": true } } }, - "tags": [ - "scope:portals-admin", - "lib:portals-admin" - ] -} \ No newline at end of file + "tags": ["scope:portals-admin", "lib:portals-admin"] +} diff --git a/libs/portals/admin/form-system/src/components/FormLayout/components/MainColumns.tsx b/libs/portals/admin/form-system/src/components/FormLayout/components/MainColumns.tsx index 51c189783094..b15ba4a73c73 100644 --- a/libs/portals/admin/form-system/src/components/FormLayout/components/MainColumns.tsx +++ b/libs/portals/admin/form-system/src/components/FormLayout/components/MainColumns.tsx @@ -1,6 +1,5 @@ -import { Box } from "@island.is/island-ui/core" -import { MainContent } from "../../MainContent/MainContent" - +import { Box } from '@island.is/island-ui/core' +import { MainContent } from '../../MainContent/MainContent' export const MainContentColumn = () => { return ( diff --git a/libs/portals/admin/form-system/src/components/FormLayout/components/NavbarColumn.tsx b/libs/portals/admin/form-system/src/components/FormLayout/components/NavbarColumn.tsx index 610ee5356490..95b914502edf 100644 --- a/libs/portals/admin/form-system/src/components/FormLayout/components/NavbarColumn.tsx +++ b/libs/portals/admin/form-system/src/components/FormLayout/components/NavbarColumn.tsx @@ -1,15 +1,10 @@ -import { useContext } from "react" -import { ControlContext } from "../../../context/ControlContext" -import { NavbarSelectStatus } from "../../../lib/utils/interfaces" -import { NavbarSelect } from "../../NavbarSelect/NavbarSelect" -import { Navbar } from "../../Navbar/Navbar" - +import { useContext } from 'react' +import { ControlContext } from '../../../context/ControlContext' +import { NavbarSelectStatus } from '../../../lib/utils/interfaces' +import { NavbarSelect } from '../../NavbarSelect/NavbarSelect' +import { Navbar } from '../../Navbar/Navbar' export const NavbarColumn = () => { const { selectStatus } = useContext(ControlContext) - return selectStatus !== NavbarSelectStatus.OFF ? ( - <NavbarSelect /> - ) : ( - <Navbar /> - ) + return selectStatus !== NavbarSelectStatus.OFF ? <NavbarSelect /> : <Navbar /> } diff --git a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx index 3f9534cb334a..13bdaf7f68f2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/MainContent.tsx @@ -19,13 +19,8 @@ import { RelevantParties } from './components/RelevantParties/RelevantParties' import { m, SectionTypes } from '@island.is/form-system/ui' export const MainContent = () => { - const { - control, - controlDispatch, - updateActiveItem, - setFocus, - focus - } = useContext(ControlContext) + const { control, controlDispatch, updateActiveItem, setFocus, focus } = + useContext(ControlContext) const { activeItem } = control const [openPreview, setOpenPreview] = useState(false) const { formatMessage } = useIntl() @@ -34,13 +29,15 @@ export const MainContent = () => { {activeItem.type === 'Field' ? ( <FieldContent /> ) : activeItem.type === 'Section' && - (activeItem.data as FormSystemSection).id === "BaseSettings" ? ( + (activeItem.data as FormSystemSection).id === 'BaseSettings' ? ( <BaseSettings /> ) : activeItem.type === 'Section' && - (activeItem.data as FormSystemSection).sectionType === SectionTypes.PREMISES ? ( + (activeItem.data as FormSystemSection).sectionType === + SectionTypes.PREMISES ? ( <Premises /> ) : activeItem.type === 'Section' && - (activeItem.data as FormSystemSection).sectionType === SectionTypes.PARTIES ? ( + (activeItem.data as FormSystemSection).sectionType === + SectionTypes.PARTIES ? ( <RelevantParties /> ) : openPreview ? ( <PreviewStepOrGroup setOpenPreview={setOpenPreview} /> @@ -94,14 +91,17 @@ export const MainContent = () => { <Checkbox name="multi" label={formatMessage(m.allowMultiple)} - checked={(activeItem.data as FormSystemScreen).multiset !== 0 && (activeItem.data as FormSystemScreen).multiset !== null} + checked={ + (activeItem.data as FormSystemScreen).multiset !== 0 && + (activeItem.data as FormSystemScreen).multiset !== null + } onChange={(e) => controlDispatch({ type: 'TOGGLE_MULTI_SET', payload: { checked: e.target.checked, update: updateActiveItem, - } + }, }) } /> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx index 16bd7b16f8db..21afc7f3833b 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/BaseSettings/BaseSettings.tsx @@ -12,13 +12,8 @@ import { useIntl } from 'react-intl' import { m } from '@island.is/form-system/ui' export const BaseSettings = () => { - const { - control, - controlDispatch, - setFocus, - focus, - formUpdate - } = useContext(ControlContext) + const { control, controlDispatch, setFocus, focus, formUpdate } = + useContext(ControlContext) const { form } = control const { formatMessage } = useIntl() return ( @@ -106,13 +101,18 @@ export const BaseSettings = () => { <Column> <Checkbox label={formatMessage(m.allowProgress)} - checked={form.stopProgressOnValidatingScreen !== null && form.stopProgressOnValidatingScreen !== undefined ? form.stopProgressOnValidatingScreen : false} + checked={ + form.stopProgressOnValidatingScreen !== null && + form.stopProgressOnValidatingScreen !== undefined + ? form.stopProgressOnValidatingScreen + : false + } onChange={(e) => { controlDispatch({ type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_SCREEN', payload: { value: e.target.checked, - update: formUpdate + update: formUpdate, }, }) }} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx index 5ddd9d0f8656..5aff53507c05 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/BaseInput.tsx @@ -27,7 +27,9 @@ export const BaseInput = () => { const { activeItem } = control const currentItem = activeItem.data as FormSystemField const selectList = fieldTypesSelectObject() - const defaultValue = fieldTypes?.find(fieldType => fieldType?.id === currentItem.fieldType) + const defaultValue = fieldTypes?.find( + (fieldType) => fieldType?.id === currentItem.fieldType, + ) const defaultOption: Option<string> | undefined = defaultValue ? { value: defaultValue.id ?? '', label: defaultValue.name?.is ?? '' } : undefined diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx index d1d113c32d3f..7952beff6f11 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/FieldSettings.tsx @@ -13,12 +13,24 @@ export const FieldSettings = () => { const currentItem = control.activeItem.data as FormSystemField return ( <> - {currentItem.fieldType === FieldTypesEnum.MESSAGE && <MessageWithLinkSettings />} - {currentItem.fieldType === FieldTypesEnum.DOCUMENT && <FileUploadSettings />} - {currentItem.fieldType === FieldTypesEnum.TEXTBOX && <TextFieldSettings />} - {currentItem.fieldType === FieldTypesEnum.DROPDOWN_LIST && <ListSettings />} - {currentItem.fieldType === FieldTypesEnum.RADIO_BUTTONS && <ListSettings />} - {currentItem.fieldType === FieldTypesEnum.CHECKBOX && <ToggleConnection />} + {currentItem.fieldType === FieldTypesEnum.MESSAGE && ( + <MessageWithLinkSettings /> + )} + {currentItem.fieldType === FieldTypesEnum.DOCUMENT && ( + <FileUploadSettings /> + )} + {currentItem.fieldType === FieldTypesEnum.TEXTBOX && ( + <TextFieldSettings /> + )} + {currentItem.fieldType === FieldTypesEnum.DROPDOWN_LIST && ( + <ListSettings /> + )} + {currentItem.fieldType === FieldTypesEnum.RADIO_BUTTONS && ( + <ListSettings /> + )} + {currentItem.fieldType === FieldTypesEnum.CHECKBOX && ( + <ToggleConnection /> + )} </> ) } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx index e0b8c1ce18fd..790a4078d88d 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ListSettings.tsx @@ -82,7 +82,7 @@ export const ListSettings = () => { <RadioButton label={formatMessage(m.customList)} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} checked={radio[0]} /> </Box> @@ -94,7 +94,7 @@ export const ListSettings = () => { <RadioButton label={formatMessage(m.predeterminedLists)} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} checked={radio[1]} /> </Box> @@ -103,10 +103,7 @@ export const ListSettings = () => { </> )} {radio[0] && ( - <Button - variant="ghost" - onClick={() => setInListBuilder(true)} - > + <Button variant="ghost" onClick={() => setInListBuilder(true)}> {formatMessage(m.listBuilder)} </Button> )} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx index 6f0787fd85be..3e81f1945142 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/MessageWithLinkSettings.tsx @@ -12,13 +12,8 @@ import { useIntl } from 'react-intl' import { m } from '@island.is/form-system/ui' export const MessageWithLinkSettings = () => { - const { - control, - controlDispatch, - focus, - setFocus, - updateActiveItem, - } = useContext(ControlContext) + const { control, controlDispatch, focus, setFocus, updateActiveItem } = + useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemField const { fieldSettings } = currentItem const { formatMessage } = useIntl() diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx index 8ca7b0e92d71..a6d2c5e7b736 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/FieldSettings/components/ToggleConnection.tsx @@ -14,10 +14,13 @@ import { m } from '@island.is/form-system/ui' export const ToggleConnection = () => { const { control, selectStatus, setSelectStatus } = useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemField - const currentItemDependency = control.form.dependencies?.find(dep => dep?.parentProp === currentItem.id) + const currentItemDependency = control.form.dependencies?.find( + (dep) => dep?.parentProp === currentItem.id, + ) const hasConnections = currentItemDependency !== undefined && - currentItemDependency?.childProps && currentItemDependency.childProps.length > 0 + currentItemDependency?.childProps && + currentItemDependency.childProps.length > 0 const { formatMessage } = useIntl() return ( <Row> diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx index ec1f7ea21b3a..b173cfae452c 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/ListBuilder.tsx @@ -1,6 +1,10 @@ import { useContext, useEffect, useMemo, useState } from 'react' import { ControlContext } from '../../../../../../context/ControlContext' -import { FormSystemField, FormSystemListItem, Maybe } from '@island.is/api/schema' +import { + FormSystemField, + FormSystemListItem, + Maybe, +} from '@island.is/api/schema' import { GridRow as Row, GridColumn as Column, @@ -17,7 +21,7 @@ import { PointerSensor, useSensor, useSensors, - UniqueIdentifier + UniqueIdentifier, } from '@dnd-kit/core' import { NavbarSelectStatus } from '../../../../../../lib/utils/interfaces' import { ListItem } from './components/ListItem' @@ -25,24 +29,25 @@ import { SortableContext } from '@dnd-kit/sortable' import { createPortal } from 'react-dom' import { useIntl } from 'react-intl' import { useMutation } from '@apollo/client' -import { CREATE_LIST_ITEM, UPDATE_LIST_ITEM, UPDATE_LIST_ITEM_DISPLAY_ORDER } from '@island.is/form-system/graphql' +import { + CREATE_LIST_ITEM, + UPDATE_LIST_ITEM, + UPDATE_LIST_ITEM_DISPLAY_ORDER, +} from '@island.is/form-system/graphql' import { removeTypename } from '../../../../../../lib/utils/removeTypename' import { m } from '@island.is/form-system/ui' export const ListBuilder = () => { const [createListItem] = useMutation(CREATE_LIST_ITEM) - const [updateListItemDisplayOrder] = useMutation(UPDATE_LIST_ITEM_DISPLAY_ORDER) + const [updateListItemDisplayOrder] = useMutation( + UPDATE_LIST_ITEM_DISPLAY_ORDER, + ) const [updateListItem] = useMutation(UPDATE_LIST_ITEM) - const { - control, - controlDispatch, - setSelectStatus, - setInListBuilder, - } = useContext(ControlContext) + const { control, controlDispatch, setSelectStatus, setInListBuilder } = + useContext(ControlContext) const currentItem = control.activeItem.data as FormSystemField const { activeListItem } = control - const listItems = - currentItem?.list ?? ([] as FormSystemListItem[]) + const listItems = currentItem?.list ?? ([] as FormSystemListItem[]) const listItemIds = useMemo( () => listItems @@ -53,7 +58,9 @@ export const ListBuilder = () => { .map((l: FormSystemListItem) => l?.id as UniqueIdentifier), [listItems], ) - const [connecting, setConnecting] = useState<boolean[]>(listItems.map(() => false)) + const [connecting, setConnecting] = useState<boolean[]>( + listItems.map(() => false), + ) const { formatMessage } = useIntl() @@ -73,15 +80,17 @@ export const ListBuilder = () => { createListItemDto: { fieldId: currentItem.id, displayOrder: listItems.length, - } - } - } + }, + }, + }, }) controlDispatch({ type: 'ADD_LIST_ITEM', payload: { - newListItem: removeTypename(newListItem.data.formSystemCreateListItem) - } + newListItem: removeTypename( + newListItem.data.formSystemCreateListItem, + ), + }, }) setConnecting((prev) => [...prev, false]) } catch (e) { @@ -113,7 +122,6 @@ export const ListBuilder = () => { }) } - const onDragEnd = () => { controlDispatch({ type: 'SET_ACTIVE_LIST_ITEM', @@ -126,13 +134,15 @@ export const ListBuilder = () => { input: { updateListItemsDisplayOrderDto: { listItemsDisplayOrderDto: listItems - .filter((l): l is FormSystemListItem => l !== null && l !== undefined) + .filter( + (l): l is FormSystemListItem => l !== null && l !== undefined, + ) .map((l) => { return { id: l.id, } }), - } + }, }, }, }) @@ -155,9 +165,9 @@ export const ListBuilder = () => { id: id, updateListItemDto: { isSelected: checked, - } - } - } + }, + }, + }, }) } if (checked) { @@ -169,9 +179,9 @@ export const ListBuilder = () => { id: otherSelected.id, updateListItemDto: { isSelected: false, - } - } - } + }, + }, + }, }) } } diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx index ddeecf17fde1..fd7475cc60be 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/FieldContent/components/ListBuilder/components/ListItem.tsx @@ -15,7 +15,10 @@ import { useIntl } from 'react-intl' import * as styles from './ListItem.css' import { getTranslation } from '../../../../../../../lib/utils/getTranslation' import { useMutation } from '@apollo/client' -import { DELETE_LIST_ITEM, UPDATE_LIST_ITEM } from '@island.is/form-system/graphql' +import { + DELETE_LIST_ITEM, + UPDATE_LIST_ITEM, +} from '@island.is/form-system/graphql' import { FieldTypesEnum, m } from '@island.is/form-system/ui' interface Props { @@ -31,15 +34,10 @@ export const ListItem = ({ connecting, index, setConnecting, - toggleSelected + toggleSelected, }: Props) => { - const { - control, - controlDispatch, - setFocus, - focus, - setSelectStatus, - } = useContext(ControlContext) + const { control, controlDispatch, setFocus, focus, setSelectStatus } = + useContext(ControlContext) const { activeItem } = control const currentItem = activeItem.data as FormSystemField const isRadio = currentItem.fieldType === FieldTypesEnum.RADIO_BUTTONS @@ -76,9 +74,9 @@ export const ListItem = ({ label: listItem.label, description: listItem.description, isSelected: listItem.isSelected, - } - } - } + }, + }, + }, }) } catch (e) { console.error('Error updating list item', e) @@ -135,7 +133,7 @@ export const ListItem = ({ controlDispatch({ type: 'SET_LIST_ITEM_SELECTED', payload: { - id: listItem.id ?? '' + id: listItem.id ?? '', }, }) }} @@ -156,8 +154,8 @@ export const ListItem = ({ variables: { input: { id: listItem.id ?? '', - } - } + }, + }, }) }} > @@ -185,7 +183,7 @@ export const ListItem = ({ property: 'label', lang: 'is', value: e.target.value, - id: listItem.id ?? '' + id: listItem.id ?? '', }, }) } @@ -207,7 +205,7 @@ export const ListItem = ({ property: 'label', lang: 'en', value: e.target.value, - id: listItem.id ?? '' + id: listItem.id ?? '', }, }) } @@ -216,14 +214,16 @@ export const ListItem = ({ label: 'Translate', name: 'reader', onClick: async () => { - const translation = await getTranslation(listItem?.label?.is ?? '') + const translation = await getTranslation( + listItem?.label?.is ?? '', + ) controlDispatch({ type: 'CHANGE_LIST_ITEM', payload: { property: 'label', lang: 'en', value: translation ?? '', - id: listItem.id ?? '' + id: listItem.id ?? '', }, }) }, @@ -251,7 +251,7 @@ export const ListItem = ({ property: 'description', lang: 'is', value: e.target.value, - id: listItem.id ?? '' + id: listItem.id ?? '', }, }) } @@ -273,7 +273,7 @@ export const ListItem = ({ property: 'description', lang: 'en', value: e.target.value, - id: listItem.id ?? '' + id: listItem.id ?? '', }, }) } @@ -291,7 +291,7 @@ export const ListItem = ({ property: 'description', lang: 'en', value: translation ?? '', - id: listItem.id ?? '' + id: listItem.id ?? '', }, }) }, diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx index 0427b9469536..c019fcd34909 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Premises/Premises.tsx @@ -1,25 +1,41 @@ import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' import { useContext, useState } from 'react' import { ControlContext } from '../../../../context/ControlContext' -import { FormSystemFormCertificationType, Maybe, FormSystemFormCertificationTypeDto } from '@island.is/api/schema' +import { + FormSystemFormCertificationType, + Maybe, + FormSystemFormCertificationTypeDto, +} from '@island.is/api/schema' import { useIntl } from 'react-intl' import { useMutation } from '@apollo/client' -import { CREATE_CERTIFICATION, DELETE_CERTIFICATION } from '@island.is/form-system/graphql' +import { + CREATE_CERTIFICATION, + DELETE_CERTIFICATION, +} from '@island.is/form-system/graphql' import { removeTypename } from '../../../../lib/utils/removeTypename' import { m } from '@island.is/form-system/ui' export const Premises = () => { - const { control, controlDispatch, certificationTypes: certTypes } = - useContext(ControlContext) + const { + control, + controlDispatch, + certificationTypes: certTypes, + } = useContext(ControlContext) const { certificationTypes } = control.form const [formCertificationTypes, setFormCertificationTypes] = useState< FormSystemFormCertificationTypeDto[] - >((certificationTypes ?? []).filter((type): type is FormSystemFormCertificationTypeDto => type !== null)) + >( + (certificationTypes ?? []).filter( + (type): type is FormSystemFormCertificationTypeDto => type !== null, + ), + ) const [createCertification] = useMutation(CREATE_CERTIFICATION) const [deleteCertification] = useMutation(DELETE_CERTIFICATION) - - const handleCheckboxChange = async (certificationTemplate: FormSystemFormCertificationType, checked: boolean) => { + const handleCheckboxChange = async ( + certificationTemplate: FormSystemFormCertificationType, + checked: boolean, + ) => { if (checked) { try { const newCertificate = await createCertification({ @@ -28,9 +44,9 @@ export const Premises = () => { createFormCertificationTypeDto: { formId: control.form.id, certificationTypeId: certificationTemplate.id as string, - } - } - } + }, + }, + }, }).then((res) => { return removeTypename(res.data?.formSystemCreateCertification) }) @@ -38,31 +54,39 @@ export const Premises = () => { type: 'CHANGE_CERTIFICATION', payload: { certificate: newCertificate as FormSystemFormCertificationTypeDto, - checked: true - } + checked: true, + }, }) setFormCertificationTypes([...formCertificationTypes, newCertificate]) } catch (e) { console.error(e) } } else { - const certificationToDelete = formCertificationTypes.find(certification => certification.certificationTypeId === certificationTemplate.id) + const certificationToDelete = formCertificationTypes.find( + (certification) => + certification.certificationTypeId === certificationTemplate.id, + ) try { await deleteCertification({ variables: { input: { - id: certificationToDelete?.id - } - } + id: certificationToDelete?.id, + }, + }, }) controlDispatch({ type: 'CHANGE_CERTIFICATION', payload: { - certificate: certificationToDelete as FormSystemFormCertificationTypeDto, - checked: false - } + certificate: + certificationToDelete as FormSystemFormCertificationTypeDto, + checked: false, + }, }) - setFormCertificationTypes(formCertificationTypes.filter(certification => certification.id !== certificationToDelete?.id)) + setFormCertificationTypes( + formCertificationTypes.filter( + (certification) => certification.id !== certificationToDelete?.id, + ), + ) } catch (e) { console.error(e) } @@ -70,9 +94,14 @@ export const Premises = () => { } const { formatMessage } = useIntl() - const isChecked = (certificationTypeId?: Maybe<string> | undefined): boolean => { + const isChecked = ( + certificationTypeId?: Maybe<string> | undefined, + ): boolean => { if (!certificationTypeId) return false - return formCertificationTypes.some(certification => certification?.certificationTypeId === certificationTypeId) + return formCertificationTypes.some( + (certification) => + certification?.certificationTypeId === certificationTypeId, + ) } return ( @@ -93,7 +122,12 @@ export const Premises = () => { value={d?.id ?? ''} large checked={isChecked(d?.id)} - onChange={(e) => handleCheckboxChange(d as FormSystemFormCertificationType, e.target.checked)} + onChange={(e) => + handleCheckboxChange( + d as FormSystemFormCertificationType, + e.target.checked, + ) + } /> ) })} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx index 8007e8c3f11b..bd3e32bb842b 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/Preview/Preveiw.tsx @@ -16,11 +16,10 @@ import { List, HomestayOverview, m, - FieldTypesEnum + FieldTypesEnum, } from '@island.is/form-system/ui' import { useIntl } from 'react-intl' - interface Props { data: FormSystemField } @@ -59,7 +58,9 @@ export const Preview = ({ data }: Props) => { {type === FieldTypesEnum.CHECKBOX && <Checkbox item={data} />} {type === FieldTypesEnum.PHONE_NUMBER && <PhoneNumber item={data} />} {type === FieldTypesEnum.TIME_INPUT && <TimeInput item={data} />} - {type === FieldTypesEnum.PROPERTY_NUMBER && <PropertyNumber item={data} />} + {type === FieldTypesEnum.PROPERTY_NUMBER && ( + <PropertyNumber item={data} /> + )} {type === FieldTypesEnum.HOMESTAY_OVERVIEW && <HomestayOverview />} </Box> ) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx index 3f9a7f60908e..4e2e8e5f1eb2 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/PreviewStepOrGroup/PreviewStepOrGroup.tsx @@ -45,7 +45,10 @@ export const PreviewStepOrGroup = ({ setOpenPreview }: Props) => { fields ?.filter((field) => field?.screenId === screen?.id) .map((field) => ( - <Preview key={field?.id} data={field as FormSystemField} /> + <Preview + key={field?.id} + data={field as FormSystemField} + /> )) )} </Box> @@ -62,7 +65,9 @@ export const PreviewStepOrGroup = ({ setOpenPreview }: Props) => { ) : ( fields ?.filter((field) => field?.screenId === activeItem?.data?.id) - .map((field) => <Preview key={field?.id} data={field as FormSystemField} />) + .map((field) => ( + <Preview key={field?.id} data={field as FormSystemField} /> + )) )} </div> )} diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx index b57944a5f23d..47c63b03bcc3 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/RelevantParties.tsx @@ -1,13 +1,16 @@ -import { useContext, useState } from "react" -import { ControlContext } from "../../../../context/ControlContext" -import { Stack, Checkbox, Box, Text } from "@island.is/island-ui/core" -import { useIntl } from "react-intl" -import { CREATE_APPLICANT, DELETE_APPLICANT } from "@island.is/form-system/graphql" -import { useMutation } from "@apollo/client" -import { FormSystemFormApplicant } from "@island.is/api/schema" +import { useContext, useState } from 'react' +import { ControlContext } from '../../../../context/ControlContext' +import { Stack, Checkbox, Box, Text } from '@island.is/island-ui/core' +import { useIntl } from 'react-intl' +import { + CREATE_APPLICANT, + DELETE_APPLICANT, +} from '@island.is/form-system/graphql' +import { useMutation } from '@apollo/client' +import { FormSystemFormApplicant } from '@island.is/api/schema' import { ApplicantTypesEnum, m } from '@island.is/form-system/ui' -import { removeTypename } from "../../../../lib/utils/removeTypename" -import { FormApplicantTypes } from "./components/FormApplicantTypes" +import { removeTypename } from '../../../../lib/utils/removeTypename' +import { FormApplicantTypes } from './components/FormApplicantTypes' const applicantTypeGroups = { individual: [ApplicantTypesEnum.INDIVIDUAL], @@ -31,11 +34,18 @@ export const RelevantParties = () => { const { control, applicantTypes } = useContext(ControlContext) const { formatMessage } = useIntl() const { applicantTypes: applicants, id: formId } = control.form - const [formApplicants, setFormApplicants] = useState<FormSystemFormApplicant[]>( - applicants?.filter((applicant): applicant is FormSystemFormApplicant => applicant !== null) ?? [] + const [formApplicants, setFormApplicants] = useState< + FormSystemFormApplicant[] + >( + applicants?.filter( + (applicant): applicant is FormSystemFormApplicant => applicant !== null, + ) ?? [], ) - const handleApplicantChange = async (typesArray: string[], checked: boolean) => { + const handleApplicantChange = async ( + typesArray: string[], + checked: boolean, + ) => { if (checked) { try { const newApplicants = await Promise.all( @@ -51,7 +61,7 @@ export const RelevantParties = () => { }, }) return removeTypename(newApplicant.data.formSystemCreateApplicant) - }) + }), ) setFormApplicants([...formApplicants, ...newApplicants]) } catch (e) { @@ -62,20 +72,22 @@ export const RelevantParties = () => { await Promise.all( typesArray.map(async (applicantType) => { const applicant = formApplicants.find( - (a) => a.applicantTypeId === applicantType + (a) => a.applicantTypeId === applicantType, ) if (applicant) { await deleteApplicant({ variables: { input: { id: applicant.id } }, }) } - }) + }), ) setFormApplicants( formApplicants.filter( (applicant) => - applicant.applicantTypeId !== undefined && applicant.applicantTypeId !== null && !typesArray.includes(applicant.applicantTypeId) - ) + applicant.applicantTypeId !== undefined && + applicant.applicantTypeId !== null && + !typesArray.includes(applicant.applicantTypeId), + ), ) } catch (e) { console.error(e) @@ -91,37 +103,81 @@ export const RelevantParties = () => { case 1: handleApplicantChange(applicantTypeGroups.individualDelegation, checked) break - case 2: { - if (checked) { - if (formApplicants.some(applicant => applicant.id === ApplicantTypesEnum.LEGAL_ENTITY)) { - handleApplicantChange([ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY], checked) - } else { - handleApplicantChange(applicantTypeGroups.legalEntityDelegation, checked) - } - } else { - if (!formApplicants.some(applicant => applicant.id === ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION)) { - handleApplicantChange(applicantTypeGroups.legalEntityDelegation, checked) + case 2: + { + if (checked) { + if ( + formApplicants.some( + (applicant) => applicant.id === ApplicantTypesEnum.LEGAL_ENTITY, + ) + ) { + handleApplicantChange( + [ + ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY, + ], + checked, + ) + } else { + handleApplicantChange( + applicantTypeGroups.legalEntityDelegation, + checked, + ) + } } else { - handleApplicantChange([ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY], checked) + if ( + !formApplicants.some( + (applicant) => + applicant.id === + ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION, + ) + ) { + handleApplicantChange( + applicantTypeGroups.legalEntityDelegation, + checked, + ) + } else { + handleApplicantChange( + [ + ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY, + ], + checked, + ) + } } } - } break - case 3: { - if (checked) { - if (formApplicants.some(applicant => applicant.id === ApplicantTypesEnum.LEGAL_ENTITY)) { - handleApplicantChange([ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION], checked) - } else { - handleApplicantChange(applicantTypeGroups.procuration, checked) - } - } else { - if (!formApplicants.some(applicant => applicant.id === ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY)) { - handleApplicantChange(applicantTypeGroups.procuration, checked) + case 3: + { + if (checked) { + if ( + formApplicants.some( + (applicant) => applicant.id === ApplicantTypesEnum.LEGAL_ENTITY, + ) + ) { + handleApplicantChange( + [ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION], + checked, + ) + } else { + handleApplicantChange(applicantTypeGroups.procuration, checked) + } } else { - handleApplicantChange([ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION], checked) + if ( + !formApplicants.some( + (applicant) => + applicant.id === + ApplicantTypesEnum.INDIVIDUAL_WITH_DELEGATION_FROM_LEGAL_ENTITY, + ) + ) { + handleApplicantChange(applicantTypeGroups.procuration, checked) + } else { + handleApplicantChange( + [ApplicantTypesEnum.INDIVIDUAL_WITH_PROCURATION], + checked, + ) + } } } - } break default: break @@ -141,7 +197,9 @@ export const RelevantParties = () => { <Checkbox key={index} label={applicant?.description?.is} - checked={formApplicants.some(a => a.applicantTypeId === applicant?.id)} + checked={formApplicants.some( + (a) => a.applicantTypeId === applicant?.id, + )} onChange={(e) => handleCheckboxChange(index, e.target.checked)} /> ) diff --git a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx index aec9f3091d20..36afc63566e3 100644 --- a/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx +++ b/libs/portals/admin/form-system/src/components/MainContent/components/RelevantParties/components/FormApplicantTypes.tsx @@ -1,5 +1,5 @@ -import { FormSystemFormApplicant } from "@island.is/api/schema" -import { Dispatch, SetStateAction, useContext } from "react" +import { FormSystemFormApplicant } from '@island.is/api/schema' +import { Dispatch, SetStateAction, useContext } from 'react' import { Box, GridColumn as Column, @@ -8,24 +8,29 @@ import { Stack, Text, } from '@island.is/island-ui/core' -import { useIntl } from "react-intl" -import { ControlContext } from "../../../../../context/ControlContext" -import { useMutation } from "@apollo/client" -import { UPDATE_APPLICANT } from "@island.is/form-system/graphql" +import { useIntl } from 'react-intl' +import { ControlContext } from '../../../../../context/ControlContext' +import { useMutation } from '@apollo/client' +import { UPDATE_APPLICANT } from '@island.is/form-system/graphql' import { m } from '@island.is/form-system/ui' - interface Props { formApplicantsTypes: FormSystemFormApplicant[] setFormApplicantTypes: Dispatch<SetStateAction<FormSystemFormApplicant[]>> } -export const FormApplicantTypes = ({ formApplicantsTypes, setFormApplicantTypes }: Props) => { +export const FormApplicantTypes = ({ + formApplicantsTypes, + setFormApplicantTypes, +}: Props) => { const { formatMessage } = useIntl() const { focus, setFocus, applicantTypes } = useContext(ControlContext) const [updateApplicant] = useMutation(UPDATE_APPLICANT) - const onBlurHandler = (currentString: string, applicant: FormSystemFormApplicant) => { + const onBlurHandler = ( + currentString: string, + applicant: FormSystemFormApplicant, + ) => { if (currentString !== focus) { try { updateApplicant({ @@ -33,10 +38,10 @@ export const FormApplicantTypes = ({ formApplicantsTypes, setFormApplicantTypes input: { id: applicant.id, updateFormApplicantTypeDto: { - name: applicant.name - } - } - } + name: applicant.name, + }, + }, + }, }) setFocus('') } catch (e) { @@ -47,7 +52,9 @@ export const FormApplicantTypes = ({ formApplicantsTypes, setFormApplicantTypes const getApplicantTypeLabel = (type?: string) => { if (!type) return '' - const applicantType = applicantTypes?.find(applicant => applicant?.id === type) + const applicantType = applicantTypes?.find( + (applicant) => applicant?.id === type, + ) return applicantType?.description?.is ?? '' } @@ -59,7 +66,11 @@ export const FormApplicantTypes = ({ formApplicantsTypes, setFormApplicantTypes <Row> <Column> <Box marginBottom={1}> - <Text variant="h4">{getApplicantTypeLabel(applicantType?.applicantTypeId as string)}</Text> + <Text variant="h4"> + {getApplicantTypeLabel( + applicantType?.applicantTypeId as string, + )} + </Text> </Box> </Column> </Row> diff --git a/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx b/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx index d549279173f1..30285f7a8da5 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/NavComponent.tsx @@ -69,7 +69,8 @@ export const NavComponent = ({ [styles.navComponent.step]: type === 'Section' && focusComponent, [styles.navComponent.group]: type === 'Screen' && focusComponent, [styles.navComponent.input]: type === 'Field' && focusComponent, - [styles.navComponent.stepSelect]: type === 'Section' && !focusComponent, + [styles.navComponent.stepSelect]: + type === 'Section' && !focusComponent, [styles.navComponent.groupSelect]: type === 'Screen' && !focusComponent, [styles.navComponent.inputSelect]: @@ -132,7 +133,8 @@ export const NavComponent = ({ }} > {!( - type === 'Section' && (data as FormSystemSection).sectionType !== SectionTypes.INPUT + type === 'Section' && + (data as FormSystemSection).sectionType !== SectionTypes.INPUT ) && <NavButtons />} </Box> )} diff --git a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx index c411c6814999..93e3a0ef3d9c 100644 --- a/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx +++ b/libs/portals/admin/form-system/src/components/NavComponent/components/NavButtons.tsx @@ -5,10 +5,14 @@ import { ControlContext } from '../../../context/ControlContext' import { removeTypename } from '../../../lib/utils/removeTypename' import { useIntl } from 'react-intl' import { useMutation } from '@apollo/client' -import { CREATE_FIELD, CREATE_SCREEN, DELETE_FIELD, DELETE_SCREEN } from '@island.is/form-system/graphql' +import { + CREATE_FIELD, + CREATE_SCREEN, + DELETE_FIELD, + DELETE_SCREEN, +} from '@island.is/form-system/graphql' import { FieldTypesEnum, m } from '@island.is/form-system/ui' - export const NavButtons = () => { const { control, controlDispatch } = useContext(ControlContext) const { activeItem, form } = control @@ -22,12 +26,12 @@ export const NavButtons = () => { const containsGroupOrInput = (): boolean | undefined => { const { type } = activeItem if (type === 'Section') { - return screens?.some((screen) => screen?.sectionId === activeItem?.data?.id) + return screens?.some( + (screen) => screen?.sectionId === activeItem?.data?.id, + ) } if (type === 'Screen') { - return fields?.some( - (field) => field?.screenId === activeItem?.data?.id, - ) + return fields?.some((field) => field?.screenId === activeItem?.data?.id) } return false } @@ -44,8 +48,8 @@ export const NavButtons = () => { input: { createScreenDto: { sectionId: activeItem?.data?.id, - displayOrder: screens?.length - } + displayOrder: screens?.length, + }, }, }, }) @@ -66,8 +70,8 @@ export const NavButtons = () => { createFieldDto: { screenId: activeItem?.data?.id, fieldType: FieldTypesEnum.TEXTBOX, - displayOrder: fields?.length ?? 0 - } + displayOrder: fields?.length ?? 0, + }, }, }, }) diff --git a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx index b114431b52bc..6cc05e496c30 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/Navbar.tsx @@ -25,7 +25,10 @@ import { ItemType } from '../../lib/utils/interfaces' import { removeTypename } from '../../lib/utils/removeTypename' import { useIntl } from 'react-intl' import { NavComponent } from '../NavComponent/NavComponent' -import { CREATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from '@island.is/form-system/graphql' +import { + CREATE_SECTION, + UPDATE_SECTION_DISPLAY_ORDER, +} from '@island.is/form-system/graphql' import { useMutation } from '@apollo/client' import { m, SectionTypes } from '@island.is/form-system/ui' @@ -84,7 +87,7 @@ export const Navbar = () => { createSectionDto: { formId: form.id, displayOrder: sections?.length ?? 0, - } + }, }, }, }) @@ -97,24 +100,26 @@ export const Navbar = () => { ) as FormSystemSection, }, }) - const updatedSections = sections?.map(s => { + const updatedSections = sections?.map((s) => { return { - id: s?.id + id: s?.id, } }) updateDisplayOrder({ variables: { input: { updateSectionsDisplayOrderDto: { - sectionsDisplayOrderDto: [...(updatedSections ?? []), { id: newSection.data?.formSystemCreateSection.id }] - } - } - } + sectionsDisplayOrderDto: [ + ...(updatedSections ?? []), + { id: newSection.data?.formSystemCreateSection.id }, + ], + }, + }, + }, }) } } catch (err) { console.error('Error creating section:', err.message) - } } @@ -122,13 +127,13 @@ export const Navbar = () => { const data = type === 'Section' ? sections?.find( - (item: Maybe<FormSystemSection> | undefined) => item?.id === id, - ) + (item: Maybe<FormSystemSection> | undefined) => item?.id === id, + ) : type === 'Screen' - ? screens?.find( + ? screens?.find( (item: Maybe<FormSystemScreen> | undefined) => item?.id === id, ) - : fields?.find( + : fields?.find( (item: Maybe<FormSystemField> | undefined) => item?.id === id, ) if (id === baseSettingsStep.id) { @@ -248,7 +253,9 @@ export const Navbar = () => { size="small" onClick={() => { setInSettings(false) - const section = sections?.find((s) => s?.sectionType === SectionTypes.INPUT) + const section = sections?.find( + (s) => s?.sectionType === SectionTypes.INPUT, + ) if (section) { controlDispatch({ type: 'SET_ACTIVE_ITEM', @@ -352,9 +359,9 @@ export const Navbar = () => { type={activeItem.type} data={ activeItem.data as - | FormSystemScreen - | FormSystemSection - | FormSystemField + | FormSystemScreen + | FormSystemSection + | FormSystemField } active={activeItem.data?.id === activeItem.data?.id} focusComponent={focusComponent} diff --git a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx index 2fc3f854a3b8..02fad79aedd4 100644 --- a/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx +++ b/libs/portals/admin/form-system/src/components/Navbar/components/NavbarTab/NavbarTab.tsx @@ -21,7 +21,9 @@ export const NavbarTab = () => { [styles.selected]: !inSettings, })} onClick={() => { - const section = sections?.find((s) => s?.sectionType === SectionTypes.INPUT) + const section = sections?.find( + (s) => s?.sectionType === SectionTypes.INPUT, + ) controlDispatch({ type: 'SET_ACTIVE_ITEM', payload: { diff --git a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx index b1ff9567f7c2..00c8ebf86f37 100644 --- a/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx +++ b/libs/portals/admin/form-system/src/components/TableRow/TableRow.tsx @@ -13,9 +13,7 @@ import { AnimatePresence, motion } from 'framer-motion' import { useNavigate } from 'react-router-dom' import { TranslationTag } from '../TranslationTag/TranslationTag' import { FormSystemPaths } from '../../lib/paths' -import { - ApplicationTemplateStatus, -} from '../../lib/utils/interfaces' +import { ApplicationTemplateStatus } from '../../lib/utils/interfaces' import { useIntl } from 'react-intl' import { m } from '@island.is/form-system/ui' @@ -50,7 +48,7 @@ export const TableRow = ({ state, isHeader, translated, - slug + slug, }: Props) => { const [isOpen, setIsOpen] = useState(false) const navigate = useNavigate() @@ -92,7 +90,7 @@ export const TableRow = ({ style={{ cursor: '' }} > <Row key={id}> - <Column span="5/12" > + <Column span="5/12"> <ColumnText text={name ? name : ''} /> </Column> <Column span="2/12"> @@ -153,7 +151,7 @@ export const TableRow = ({ title: 'Export', }, { - title: 'Json' + title: 'Json', }, ]} /> diff --git a/libs/portals/admin/form-system/src/context/ControlContext.ts b/libs/portals/admin/form-system/src/context/ControlContext.ts index d24ba6b00e14..8223bb209675 100644 --- a/libs/portals/admin/form-system/src/context/ControlContext.ts +++ b/libs/portals/admin/form-system/src/context/ControlContext.ts @@ -17,7 +17,9 @@ import { export interface IControlContext { control: ControlState controlDispatch: Dispatch<ControlAction> - certificationTypes: Maybe<Maybe<FormSystemFormCertificationType>[]> | undefined + certificationTypes: + | Maybe<Maybe<FormSystemFormCertificationType>[]> + | undefined fieldTypes: Maybe<Maybe<FormSystemFieldType>[]> | undefined listTypes: Maybe<Maybe<FormSystemListType>[]> | undefined setInSettings: Dispatch<boolean> diff --git a/libs/portals/admin/form-system/src/context/FormProvider.tsx b/libs/portals/admin/form-system/src/context/FormProvider.tsx index 01e3496eadea..0d6111c902d6 100644 --- a/libs/portals/admin/form-system/src/context/FormProvider.tsx +++ b/libs/portals/admin/form-system/src/context/FormProvider.tsx @@ -1,35 +1,53 @@ -import { useCallback, useMemo, useReducer, useState } from "react" -import { ControlContext, IControlContext } from "./ControlContext" -import { FormSystemForm, FormSystemFormResponse, FormSystemSection } from "@island.is/api/schema" -import { ControlState, controlReducer } from "../hooks/controlReducer" -import { ActiveItem, NavbarSelectStatus } from "../lib/utils/interfaces" -import { removeTypename } from "../lib/utils/removeTypename" -import { updateDnd } from "../lib/utils/updateDnd" -import { defaultStep } from "../lib/utils/defaultStep" -import { baseSettingsStep } from "../lib/utils/getBaseSettingsSection" -import { updateActiveItemFn } from "../lib/utils/updateActiveItem" -import { useMutation } from "@apollo/client" -import { UPDATE_FIELD, UPDATE_FIELDS_DISPLAY_ORDER, UPDATE_FORM, UPDATE_SCREEN, UPDATE_SCREEN_DISPLAY_ORDER, UPDATE_SECTION, UPDATE_SECTION_DISPLAY_ORDER } from "@island.is/form-system/graphql" -import { updateFormFn } from "../lib/utils/updateFormFn" +import { useCallback, useMemo, useReducer, useState } from 'react' +import { ControlContext, IControlContext } from './ControlContext' +import { + FormSystemForm, + FormSystemFormResponse, + FormSystemSection, +} from '@island.is/api/schema' +import { ControlState, controlReducer } from '../hooks/controlReducer' +import { ActiveItem, NavbarSelectStatus } from '../lib/utils/interfaces' +import { removeTypename } from '../lib/utils/removeTypename' +import { updateDnd } from '../lib/utils/updateDnd' +import { defaultStep } from '../lib/utils/defaultStep' +import { baseSettingsStep } from '../lib/utils/getBaseSettingsSection' +import { updateActiveItemFn } from '../lib/utils/updateActiveItem' +import { useMutation } from '@apollo/client' +import { + UPDATE_FIELD, + UPDATE_FIELDS_DISPLAY_ORDER, + UPDATE_FORM, + UPDATE_SCREEN, + UPDATE_SCREEN_DISPLAY_ORDER, + UPDATE_SECTION, + UPDATE_SECTION_DISPLAY_ORDER, +} from '@island.is/form-system/graphql' +import { updateFormFn } from '../lib/utils/updateFormFn' import { SectionTypes } from '@island.is/form-system/ui' -export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: FormSystemFormResponse }> = ({ children, formBuilder }) => { +export const FormProvider: React.FC<{ + children: React.ReactNode + formBuilder: FormSystemFormResponse +}> = ({ children, formBuilder }) => { const [focus, setFocus] = useState<string>('') - const [inSettings, setInSettings] = useState(formBuilder?.form?.name?.is === '') + const [inSettings, setInSettings] = useState( + formBuilder?.form?.name?.is === '', + ) const [inListBuilder, setInListBuilder] = useState<boolean>(false) const [selectStatus, setSelectStatus] = useState<NavbarSelectStatus>( NavbarSelectStatus.OFF, ) - const { fieldTypes, listTypes, certificationTypes, applicantTypes, form } = formBuilder + const { fieldTypes, listTypes, certificationTypes, applicantTypes, form } = + formBuilder const initialControl: ControlState = { activeItem: { type: 'Section', data: inSettings ? baseSettingsStep : removeTypename(form?.sections)?.find( - (s: FormSystemSection) => s?.sectionType === SectionTypes.INPUT, - ) ?? defaultStep, + (s: FormSystemSection) => s?.sectionType === SectionTypes.INPUT, + ) ?? defaultStep, }, activeListItem: null, form: removeTypename(form) as FormSystemForm, @@ -44,35 +62,63 @@ export const FormProvider: React.FC<{ children: React.ReactNode, formBuilder: Fo const [updateFieldDisplayOrder] = useMutation(UPDATE_FIELDS_DISPLAY_ORDER) const [updateForm] = useMutation(UPDATE_FORM) - const updateActiveItem = useCallback((updatedActiveItem?: ActiveItem) => - updateActiveItemFn(control.activeItem, updateSection, updateScreen, updateField, updatedActiveItem), [control.activeItem, updateSection, updateScreen, updateField]) + const updateActiveItem = useCallback( + (updatedActiveItem?: ActiveItem) => + updateActiveItemFn( + control.activeItem, + updateSection, + updateScreen, + updateField, + updatedActiveItem, + ), + [control.activeItem, updateSection, updateScreen, updateField], + ) - const updateDragAndDrop = useCallback(() => - updateDnd(control, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder), [control, updateSectionDisplayOrder, updateScreenDisplayOrder, updateFieldDisplayOrder]) + const updateDragAndDrop = useCallback( + () => + updateDnd( + control, + updateSectionDisplayOrder, + updateScreenDisplayOrder, + updateFieldDisplayOrder, + ), + [ + control, + updateSectionDisplayOrder, + updateScreenDisplayOrder, + updateFieldDisplayOrder, + ], + ) - const formUpdate = useCallback((updatedForm?: FormSystemForm) => { - updateFormFn(control, updateForm, updatedForm) - }, [control, updateForm]) + const formUpdate = useCallback( + (updatedForm?: FormSystemForm) => { + updateFormFn(control, updateForm, updatedForm) + }, + [control, updateForm], + ) - const context: IControlContext = useMemo(() => ({ - control, - controlDispatch, - certificationTypes, - fieldTypes, - listTypes, - setInSettings, - inSettings, - updateActiveItem, - focus, - setFocus, - updateDnD: updateDragAndDrop, - selectStatus, - setSelectStatus, - setInListBuilder, - inListBuilder, - formUpdate, - applicantTypes - }), [control, controlDispatch, inListBuilder, selectStatus]) + const context: IControlContext = useMemo( + () => ({ + control, + controlDispatch, + certificationTypes, + fieldTypes, + listTypes, + setInSettings, + inSettings, + updateActiveItem, + focus, + setFocus, + updateDnD: updateDragAndDrop, + selectStatus, + setSelectStatus, + setInListBuilder, + inListBuilder, + formUpdate, + applicantTypes, + }), + [control, controlDispatch, inListBuilder, selectStatus], + ) return ( <ControlContext.Provider value={context}> diff --git a/libs/portals/admin/form-system/src/hooks/controlReducer.ts b/libs/portals/admin/form-system/src/hooks/controlReducer.ts index 5c4b81dd7fea..b2ed391170d4 100644 --- a/libs/portals/admin/form-system/src/hooks/controlReducer.ts +++ b/libs/portals/admin/form-system/src/hooks/controlReducer.ts @@ -16,9 +16,9 @@ import { SectionTypes } from '@island.is/form-system/ui' type ActiveItemActions = | { type: 'SET_ACTIVE_ITEM'; payload: { activeItem: ActiveItem } } | { - type: 'SET_ACTIVE_LIST_ITEM' - payload: { listItem: FormSystemListItem | null } - } + type: 'SET_ACTIVE_LIST_ITEM' + payload: { listItem: FormSystemListItem | null } + } type ScreenActions = | { type: 'ADD_SCREEN'; payload: { screen: FormSystemScreen } } @@ -28,21 +28,21 @@ type FieldActions = | { type: 'ADD_FIELD'; payload: { field: FormSystemField } } | { type: 'REMOVE_FIELD'; payload: { id: string } } | { - type: 'CHANGE_FIELD_TYPE' - payload: { - newValue: string - fieldSettings: FormSystemFieldSettings - update: (updatedActiveItem?: ActiveItem) => void + type: 'CHANGE_FIELD_TYPE' + payload: { + newValue: string + fieldSettings: FormSystemFieldSettings + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'CHANGE_DESCRIPTION' - payload: { lang: 'en' | 'is'; newValue: string } - } + type: 'CHANGE_DESCRIPTION' + payload: { lang: 'en' | 'is'; newValue: string } + } | { - type: 'CHANGE_IS_REQUIRED' - payload: { update: (updatedActiveItem?: ActiveItem) => void } - } + type: 'CHANGE_IS_REQUIRED' + payload: { update: (updatedActiveItem?: ActiveItem) => void } + } type SectionActions = | { type: 'ADD_SECTION'; payload: { section: FormSystemSection } } @@ -50,123 +50,123 @@ type SectionActions = type DndActions = | { - type: 'SECTION_OVER_SECTION' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'SECTION_OVER_SECTION' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'SCREEN_OVER_SECTION' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'SCREEN_OVER_SECTION' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'SCREEN_OVER_SCREEN' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'SCREEN_OVER_SCREEN' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'FIELD_OVER_SCREEN' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'FIELD_OVER_SCREEN' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'FIELD_OVER_FIELD' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'FIELD_OVER_FIELD' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } | { - type: 'LIST_ITEM_OVER_LIST_ITEM' - payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } - } + type: 'LIST_ITEM_OVER_LIST_ITEM' + payload: { activeId: UniqueIdentifier; overId: UniqueIdentifier } + } type ChangeActions = | { type: 'CHANGE_NAME'; payload: { lang: 'en' | 'is'; newValue: string } } | { - type: 'CHANGE_FORM_NAME' - payload: { lang: 'en' | 'is'; newValue: string } - } + type: 'CHANGE_FORM_NAME' + payload: { lang: 'en' | 'is'; newValue: string } + } | { type: 'CHANGE_APPLICATION_DAYS_TO_REMOVE'; payload: { value: number } } | { type: 'CHANGE_INVALIDATION_DATE'; payload: { value: Date } } | { - type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_SCREEN' - payload: { value: boolean; update: (updatedForm: FormSystemForm) => void } - } + type: 'CHANGE_STOP_PROGRESS_ON_VALIDATING_SCREEN' + payload: { value: boolean; update: (updatedForm: FormSystemForm) => void } + } | { type: 'CHANGE_FORM_SETTINGS'; payload: { newForm: FormSystemForm } } | { - type: 'TOGGLE_DEPENDENCY' - payload: { - activeId: string - itemId: string - update: (updatedForm: FormSystemForm) => void + type: 'TOGGLE_DEPENDENCY' + payload: { + activeId: string + itemId: string + update: (updatedForm: FormSystemForm) => void + } } - } | { - type: 'TOGGLE_MULTI_SET' - payload: { - checked: boolean - update: (updatedActiveItem?: ActiveItem) => void + type: 'TOGGLE_MULTI_SET' + payload: { + checked: boolean + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'CHANGE_CERTIFICATION' - payload: { - certificate: FormSystemFormCertificationTypeDto - checked: boolean + type: 'CHANGE_CERTIFICATION' + payload: { + certificate: FormSystemFormCertificationTypeDto + checked: boolean + } } - } type InputSettingsActions = | { - type: 'SET_MESSAGE_WITH_LINK_SETTINGS' - payload: { - property: 'buttonText' | 'url' | 'hasLink' - value?: string - checked?: boolean - lang?: 'is' | 'en' - update?: (updatedActiveItem?: ActiveItem) => void + type: 'SET_MESSAGE_WITH_LINK_SETTINGS' + payload: { + property: 'buttonText' | 'url' | 'hasLink' + value?: string + checked?: boolean + lang?: 'is' | 'en' + update?: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'SET_FILE_UPLOAD_SETTINGS' - payload: { - property: 'isMulti' | 'fileMaxSize' | 'maxFiles' | 'fileTypes' - checked?: boolean - value?: string | number - update: (updatedActiveItem?: ActiveItem) => void + type: 'SET_FILE_UPLOAD_SETTINGS' + payload: { + property: 'isMulti' | 'fileMaxSize' | 'maxFiles' | 'fileTypes' + checked?: boolean + value?: string | number + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'SET_FIELD_SETTINGS' - payload: { - property: 'isLarge' - value: boolean - update: (updatedActiveItem?: ActiveItem) => void + type: 'SET_FIELD_SETTINGS' + payload: { + property: 'isLarge' + value: boolean + update: (updatedActiveItem?: ActiveItem) => void + } } - } | { - type: 'SET_LIST_ITEM_SELECTED' - payload: { - id: UniqueIdentifier + type: 'SET_LIST_ITEM_SELECTED' + payload: { + id: UniqueIdentifier + } } - } | { - type: 'REMOVE_LIST_ITEM' - payload: { - id: UniqueIdentifier + type: 'REMOVE_LIST_ITEM' + payload: { + id: UniqueIdentifier + } } - } | { - type: 'CHANGE_LIST_ITEM' - payload: { - property: 'label' | 'description' - lang: 'is' | 'en' - value: string - id: UniqueIdentifier + type: 'CHANGE_LIST_ITEM' + payload: { + property: 'label' | 'description' + lang: 'is' | 'en' + value: string + id: UniqueIdentifier + } } - } - | { type: 'ADD_LIST_ITEM', payload: { newListItem: FormSystemListItem } } + | { type: 'ADD_LIST_ITEM'; payload: { newListItem: FormSystemListItem } } | { - type: 'SET_LIST_TYPE' - payload: { - listType: string - update: (updatedActiveItem?: ActiveItem) => void + type: 'SET_LIST_TYPE' + payload: { + listType: string + update: (updatedActiveItem?: ActiveItem) => void + } } - } export type ControlAction = | ActiveItemActions @@ -413,9 +413,7 @@ export const controlReducer = ( ? (updatedList as FormSystemScreen[]) : form.screens, fields: - type === 'Field' - ? (updatedList as FormSystemField[]) - : form.fields, + type === 'Field' ? (updatedList as FormSystemField[]) : form.fields, }, } } @@ -545,7 +543,9 @@ export const controlReducer = ( case 'CHANGE_CERTIFICATION': { const { certificate, checked } = action.payload - const updatedCertifications = checked ? [...form.certificationTypes ?? [], certificate] : form.certificationTypes?.filter((c) => c?.id !== certificate.id) + const updatedCertifications = checked + ? [...(form.certificationTypes ?? []), certificate] + : form.certificationTypes?.filter((c) => c?.id !== certificate.id) return { ...state, form: { @@ -567,11 +567,11 @@ export const controlReducer = ( [property]: property === 'hasLink' ? checked : value, ...(property === 'buttonText' ? { - buttonText: { - ...field.fieldSettings?.buttonText, - [lang]: value, - }, - } + buttonText: { + ...field.fieldSettings?.buttonText, + [lang]: value, + }, + } : {}), }, } @@ -586,9 +586,7 @@ export const controlReducer = ( }, form: { ...form, - fields: fields?.map((i) => - i?.id === field.id ? newField : i, - ), + fields: fields?.map((i) => (i?.id === field.id ? newField : i)), }, } } @@ -612,8 +610,8 @@ export const controlReducer = ( property === 'fileTypes' ? updateFileTypesArray() : property === 'isMulti' - ? checked - : value, + ? checked + : value, }, } update({ type: 'Field', data: newField }) @@ -625,9 +623,7 @@ export const controlReducer = ( }, form: { ...form, - fields: fields?.map((i) => - i?.id === field.id ? newField : i, - ), + fields: fields?.map((i) => (i?.id === field.id ? newField : i)), }, } } @@ -650,9 +646,7 @@ export const controlReducer = ( }, form: { ...form, - fields: fields?.map((i) => - i?.id === field.id ? newField : i, - ), + fields: fields?.map((i) => (i?.id === field.id ? newField : i)), }, } } @@ -679,9 +673,7 @@ export const controlReducer = ( }, form: { ...form, - fields: fields?.map((i) => - i?.id === field.id ? newField : i, - ), + fields: fields?.map((i) => (i?.id === field.id ? newField : i)), }, } } @@ -691,7 +683,10 @@ export const controlReducer = ( const list = field.list ?? [] const newField = { ...field, - list: list.filter((l: FormSystemListItem | null | undefined): l is FormSystemListItem => l !== null && l !== undefined && l.id !== id), + list: list.filter( + (l: FormSystemListItem | null | undefined): l is FormSystemListItem => + l !== null && l !== undefined && l.id !== id, + ), } return { ...state, @@ -701,9 +696,7 @@ export const controlReducer = ( }, form: { ...form, - fields: fields?.map((i) => - i?.id === field.id ? newField : i, - ), + fields: fields?.map((i) => (i?.id === field.id ? newField : i)), }, } } @@ -723,9 +716,7 @@ export const controlReducer = ( }, form: { ...form, - fields: fields?.map((i) => - i?.id === field.id ? newField : i, - ), + fields: fields?.map((i) => (i?.id === field.id ? newField : i)), }, } } @@ -745,12 +736,14 @@ export const controlReducer = ( const newField = { ...field, - list: list.filter(l => l !== null).map((l: FormSystemListItem) => { - if (l.id === id) { - return newListItem - } - return l - }) + list: list + .filter((l) => l !== null) + .map((l: FormSystemListItem) => { + if (l.id === id) { + return newListItem + } + return l + }), } return { @@ -761,9 +754,7 @@ export const controlReducer = ( }, form: { ...form, - fields: fields?.map((i) => - i?.id === field.id ? newField : i, - ), + fields: fields?.map((i) => (i?.id === field.id ? newField : i)), }, } } @@ -786,9 +777,7 @@ export const controlReducer = ( }, form: { ...form, - fields: fields?.map((f) => - f?.id === field.id ? newField : f, - ), + fields: fields?.map((f) => (f?.id === field.id ? newField : f)), }, } } @@ -824,7 +813,7 @@ export const controlReducer = ( ...state, form: { ...form, - screens: arrayMove(updatedScreens, activeIndex, activeIndex) + screens: arrayMove(updatedScreens, activeIndex, activeIndex), }, } } @@ -847,11 +836,7 @@ export const controlReducer = ( ...state, form: { ...form, - screens: arrayMove( - updatedScreens, - activeIndex, - overIndex - 1, - ), + screens: arrayMove(updatedScreens, activeIndex, overIndex - 1), }, } } @@ -859,7 +844,7 @@ export const controlReducer = ( ...state, form: { ...form, - screens: arrayMove(updatedScreens, activeIndex, overIndex) + screens: arrayMove(updatedScreens, activeIndex, overIndex), }, } } @@ -882,7 +867,7 @@ export const controlReducer = ( ...state, form: { ...form, - fields: arrayMove(updatedFields, activeIndex, overIndex) + fields: arrayMove(updatedFields, activeIndex, overIndex), }, } } @@ -905,11 +890,7 @@ export const controlReducer = ( ...state, form: { ...form, - fields: arrayMove( - updatedFields, - activeIndex, - overIndex - 1, - ) + fields: arrayMove(updatedFields, activeIndex, overIndex - 1), }, } } @@ -917,7 +898,7 @@ export const controlReducer = ( ...state, form: { ...form, - fields: arrayMove(updatedFields, activeIndex, overIndex) + fields: arrayMove(updatedFields, activeIndex, overIndex), }, } } @@ -933,15 +914,13 @@ export const controlReducer = ( const activeIndex = list.findIndex( (listItem) => listItem?.id === activeId, ) - const overIndex = list.findIndex( - (listItem) => listItem?.id === overId, - ) + const overIndex = list.findIndex((listItem) => listItem?.id === overId) const newField: FormSystemField = { ...fieldItem, list: arrayMove<FormSystemListItem>(list, activeIndex, overIndex).map( (l: FormSystemListItem, i: number) => ({ ...l, displayOrder: i }), - ) + ), } return { ...state, diff --git a/libs/portals/admin/form-system/src/lib/navigation.ts b/libs/portals/admin/form-system/src/lib/navigation.ts index 1f85429d8ae2..5a34d8473232 100644 --- a/libs/portals/admin/form-system/src/lib/navigation.ts +++ b/libs/portals/admin/form-system/src/lib/navigation.ts @@ -19,6 +19,6 @@ export const formSystemNavigation: PortalNavigationItem = { name: m.rootName, path: FormSystemPaths.FormApplications, activeIfExact: true, - } + }, ], } diff --git a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts index 3eb180185635..f21a69ce036e 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateActiveItem.ts @@ -1,5 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { ApolloCache, DefaultContext, MutationTuple, OperationVariables } from '@apollo/client' +import { + ApolloCache, + DefaultContext, + MutationTuple, + OperationVariables, +} from '@apollo/client' import { ActiveItem } from './interfaces' import { FormSystemSection, @@ -7,12 +12,26 @@ import { FormSystemField, } from '@island.is/api/schema' - export const updateActiveItemFn = async ( activeItem: ActiveItem, - sectionMutation: MutationTuple<any, OperationVariables, DefaultContext, ApolloCache<any>>, - screenMutation: MutationTuple<any, OperationVariables, DefaultContext, ApolloCache<any>>, - fieldMutation: MutationTuple<any, OperationVariables, DefaultContext, ApolloCache<any>>, + sectionMutation: MutationTuple< + any, + OperationVariables, + DefaultContext, + ApolloCache<any> + >, + screenMutation: MutationTuple< + any, + OperationVariables, + DefaultContext, + ApolloCache<any> + >, + fieldMutation: MutationTuple< + any, + OperationVariables, + DefaultContext, + ApolloCache<any> + >, currentActiveItem?: ActiveItem, ) => { const { type } = activeItem @@ -21,26 +40,24 @@ export const updateActiveItemFn = async ( const [updateField] = fieldMutation try { if (type === 'Section') { - const { id, name, waitingText } = - currentActiveItem - ? (currentActiveItem.data as FormSystemSection) - : (activeItem.data as FormSystemSection) + const { id, name, waitingText } = currentActiveItem + ? (currentActiveItem.data as FormSystemSection) + : (activeItem.data as FormSystemSection) updateSection({ variables: { input: { id, updateSectionDto: { name, - waitingText - } + waitingText, + }, }, }, }) } else if (type === 'Screen') { - const { id, name, multiset, callRuleset } = - currentActiveItem - ? (currentActiveItem.data as FormSystemScreen) - : (activeItem.data as FormSystemScreen) + const { id, name, multiset, callRuleset } = currentActiveItem + ? (currentActiveItem.data as FormSystemScreen) + : (activeItem.data as FormSystemScreen) updateScreen({ variables: { input: { @@ -48,10 +65,10 @@ export const updateActiveItemFn = async ( updateScreenDto: { name, multiset: multiset ? multiset : 0, - callRuleset + callRuleset, }, }, - } + }, }) } else if (type === 'Field') { const { @@ -62,10 +79,10 @@ export const updateActiveItemFn = async ( fieldSettings, fieldType, isRequired, - isHidden + isHidden, } = currentActiveItem - ? (currentActiveItem.data as FormSystemField) - : (activeItem.data as FormSystemField) + ? (currentActiveItem.data as FormSystemField) + : (activeItem.data as FormSystemField) updateField({ variables: { input: { @@ -85,7 +102,7 @@ export const updateActiveItemFn = async ( } } catch (e) { if (e.GraphQLError) { - console.error("GraphQL errors:", e.graphQLErrors) + console.error('GraphQL errors:', e.graphQLErrors) } console.error('Error updating active item: ', e) } diff --git a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts index 6ae5f4965267..9c6b459a19b2 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateDnd.ts @@ -1,12 +1,45 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { ApolloCache, DefaultContext, MutationFunctionOptions, OperationVariables } from "@apollo/client" -import { ControlState } from "../../hooks/controlReducer" +import { + ApolloCache, + DefaultContext, + MutationFunctionOptions, + OperationVariables, +} from '@apollo/client' +import { ControlState } from '../../hooks/controlReducer' export const updateDnd = async ( control: ControlState, - updateSectionDisplayOrder: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>, - updateScreenDisplayOrder: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>, - updateFieldDisplayOrder: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>) => { + updateSectionDisplayOrder: ( + options?: + | MutationFunctionOptions< + any, + OperationVariables, + DefaultContext, + ApolloCache<any> + > + | undefined, + ) => Promise<any>, + updateScreenDisplayOrder: ( + options?: + | MutationFunctionOptions< + any, + OperationVariables, + DefaultContext, + ApolloCache<any> + > + | undefined, + ) => Promise<any>, + updateFieldDisplayOrder: ( + options?: + | MutationFunctionOptions< + any, + OperationVariables, + DefaultContext, + ApolloCache<any> + > + | undefined, + ) => Promise<any>, +) => { const { type } = control.activeItem if (type === 'Section') { try { @@ -14,14 +47,14 @@ export const updateDnd = async ( variables: { input: { updateSectionsDisplayOrderDto: { - sectionsDisplayOrderDto: control.form.sections?.map(section => { + sectionsDisplayOrderDto: control.form.sections?.map((section) => { return { - id: section?.id + id: section?.id, } - }) - } - } - } + }), + }, + }, + }, }) } catch (err) { console.error('Error updating section display order:', err.message) @@ -32,15 +65,15 @@ export const updateDnd = async ( variables: { input: { updateScreensDisplayOrderDto: { - screensDisplayOrderDto: control.form.screens?.map(screen => { + screensDisplayOrderDto: control.form.screens?.map((screen) => { return { id: screen?.id, - sectionId: screen?.sectionId + sectionId: screen?.sectionId, } - }) - } - } - } + }), + }, + }, + }, }) } catch (err) { console.error('Error updating screen display order:', err.message) @@ -49,14 +82,14 @@ export const updateDnd = async ( updateFieldDisplayOrder({ variables: { input: { - updateFieldsDisplayOrderDto: control.form.fields?.map(field => { + updateFieldsDisplayOrderDto: control.form.fields?.map((field) => { return { id: field?.id, - screenId: field?.screenId + screenId: field?.screenId, } - }) - } - } + }), + }, + }, }) } } diff --git a/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts b/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts index 1682a8b702b4..7da435fd35f2 100644 --- a/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts +++ b/libs/portals/admin/form-system/src/lib/utils/updateFormFn.ts @@ -1,11 +1,25 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { OperationVariables, ApolloCache, DefaultContext, MutationFunctionOptions } from "@apollo/client" -import { FormSystemForm } from "@island.is/api/schema" -import { ControlState } from "../../hooks/controlReducer" +import { + OperationVariables, + ApolloCache, + DefaultContext, + MutationFunctionOptions, +} from '@apollo/client' +import { FormSystemForm } from '@island.is/api/schema' +import { ControlState } from '../../hooks/controlReducer' export const updateFormFn = async ( control: ControlState, - updateForm: (options?: MutationFunctionOptions<any, OperationVariables, DefaultContext, ApolloCache<any>> | undefined) => Promise<any>, + updateForm: ( + options?: + | MutationFunctionOptions< + any, + OperationVariables, + DefaultContext, + ApolloCache<any> + > + | undefined, + ) => Promise<any>, updatedForm?: FormSystemForm, ) => { const newForm = updatedForm ? updatedForm : control.form @@ -18,18 +32,21 @@ export const updateFormFn = async ( organizationId: newForm.organizationId, name: newForm.name, slug: newForm.slug, - invalidationDate: newForm.invalidationDate === null ? undefined : newForm.invalidationDate, + invalidationDate: + newForm.invalidationDate === null + ? undefined + : newForm.invalidationDate, isTranslated: newForm.isTranslated, applicationDaysToRemove: newForm.applicationDaysToRemove, - stopProgressOnValidatingScreen: newForm.stopProgressOnValidatingScreen, + stopProgressOnValidatingScreen: + newForm.stopProgressOnValidatingScreen, completedMessage: newForm.completedMessage, dependencies: newForm.dependencies ?? [], - } - } - } + }, + }, + }, }) console.log('Form updated successfully:', response.data) - } catch (err) { console.error('Error updating form:', err.message) } diff --git a/libs/portals/admin/form-system/src/module.tsx b/libs/portals/admin/form-system/src/module.tsx index bde64e74ce60..3c6249d9f681 100644 --- a/libs/portals/admin/form-system/src/module.tsx +++ b/libs/portals/admin/form-system/src/module.tsx @@ -33,7 +33,7 @@ export const formSystemModule: PortalModule = { path: FormSystemPaths.Form, element: <Form />, loader: formLoader(props), - } + }, ] }, } diff --git a/libs/portals/admin/form-system/src/screens/Form/Form.tsx b/libs/portals/admin/form-system/src/screens/Form/Form.tsx index c4b150bd39be..e24e4501ae15 100644 --- a/libs/portals/admin/form-system/src/screens/Form/Form.tsx +++ b/libs/portals/admin/form-system/src/screens/Form/Form.tsx @@ -3,9 +3,6 @@ import { FormLoaderResponse } from './Form.loader' import { FormProvider } from '../../context/FormProvider' import { FormLayout } from '../../components/FormLayout/FormLayout' - - - export const Form = () => { const { formBuilder } = useLoaderData() as FormLoaderResponse const { form } = formBuilder diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts index e01c8c8f5d9f..09912313126f 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.loader.ts @@ -28,9 +28,9 @@ export const formsLoader: WrappedLoaderFn = ({ client }) => { throw new Error('No forms were found') } return { - forms: data.formSystemGetAllForms?.forms?.filter( - (form) => form !== null, - ).map(form => removeTypename(form)) as FormSystemForm[], + forms: data.formSystemGetAllForms?.forms + ?.filter((form) => form !== null) + .map((form) => removeTypename(form)) as FormSystemForm[], } } } diff --git a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx index e3c2a02a0596..9b27ff1e7f68 100644 --- a/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx +++ b/libs/portals/admin/form-system/src/screens/Forms/Forms.tsx @@ -8,8 +8,6 @@ import { useMutation } from '@apollo/client' import { useIntl } from 'react-intl' import { m } from '@island.is/form-system/ui' - - export const Forms = () => { const navigate = useNavigate() const { forms } = useLoaderData() as FormsLoaderResponse @@ -29,7 +27,11 @@ export const Forms = () => { size="medium" onClick={async () => { const { data } = await formSystemCreateFormMutation({ - variables: { input: { organizationId: 'a4b0db68-e169-416a-8ad9-e46b73ce2d39' } }, + variables: { + input: { + organizationId: 'a4b0db68-e169-416a-8ad9-e46b73ce2d39', + }, + }, }) navigate( FormSystemPaths.Form.replace( diff --git a/libs/portals/form-system/graphql/src/lib/fragments/application.ts b/libs/portals/form-system/graphql/src/lib/fragments/application.ts index 2cce733b2d2c..ba28d0bcfe2f 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/application.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/application.ts @@ -1,21 +1,27 @@ import { gql } from '@apollo/client' -import { OrganizationFragment } from './organization' import { SectionFragment } from './section' +import { LanguageFields } from './languageFields' export const ApplicationFragment = gql` fragment Application on FormSystemApplication { id - organization { - ...Organization + organizationName { + ...LanguageFields } formId + formName { + ...LanguageFields + } + isTest slug created modified sections { ...Section } + completed + status } - ${OrganizationFragment} + ${LanguageFields} ${SectionFragment} ` diff --git a/libs/portals/form-system/graphql/src/lib/fragments/form.ts b/libs/portals/form-system/graphql/src/lib/fragments/form.ts index 3e21b5e4bff6..263350de3ae9 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/form.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/form.ts @@ -43,6 +43,7 @@ export const FormFragment = gql` dependencies { ...Dependency } + status } ${LanguageFields} ${FormApplicantFragment} diff --git a/libs/portals/form-system/graphql/src/lib/fragments/value.ts b/libs/portals/form-system/graphql/src/lib/fragments/value.ts index cb9f27bec570..f094262ccbb6 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/value.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/value.ts @@ -5,7 +5,7 @@ export const ValueFragment = gql` text number date - kennitala + nationalId name address postalCode @@ -13,6 +13,7 @@ export const ValueFragment = gql` jobTitle altName homestayNumber + propertyNumber totalDays totalAmount year @@ -22,6 +23,14 @@ export const ValueFragment = gql` amount days } + listValue + email + iskNumber + checkboxValue + phoneNumber + bankAccount + time + s3Key } ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/createApplication.ts b/libs/portals/form-system/graphql/src/lib/mutations/createApplication.ts index f046db4e6075..6361c0b76d3c 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/createApplication.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/createApplication.ts @@ -2,7 +2,9 @@ import { gql } from '@apollo/client' import { ApplicationFragment } from '../fragments/application' export const CREATE_APPLICATION = gql` - mutation FormSystemCreateApplication($input: FormSystemCreateApplicationInput!) { + mutation FormSystemCreateApplication( + $input: FormSystemCreateApplicationInput! + ) { formSystemCreateApplication(input: $input) { ...Application } diff --git a/libs/portals/form-system/graphql/src/lib/mutations/createCertification.ts b/libs/portals/form-system/graphql/src/lib/mutations/createCertification.ts index 3e178b727702..53c40e4211d3 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/createCertification.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/createCertification.ts @@ -1,10 +1,12 @@ import { gql } from '@apollo/client' export const CREATE_CERTIFICATION = gql` - mutation FormSystemCreateCertification($input: FormSystemCreateCertificationInput!) { + mutation FormSystemCreateCertification( + $input: FormSystemCreateCertificationInput! + ) { formSystemCreateCertification(input: $input) { id certificationTypeId + } } -} ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/createField.ts b/libs/portals/form-system/graphql/src/lib/mutations/createField.ts index 24d47845e3a7..e7c4be85847f 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/createField.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/createField.ts @@ -1,7 +1,6 @@ import { gql } from '@apollo/client' import { FieldFragment } from '../fragments/field' - export const CREATE_FIELD = gql` mutation FormSystemCreateField($input: FormSystemCreateFieldInput!) { formSystemCreateField(input: $input) { diff --git a/libs/portals/form-system/graphql/src/lib/mutations/createScreen.ts b/libs/portals/form-system/graphql/src/lib/mutations/createScreen.ts index b859fa5af5b9..2676b5eab04a 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/createScreen.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/createScreen.ts @@ -1,7 +1,6 @@ import { gql } from '@apollo/client' import { ScreenFragment } from '../fragments/screen' - export const CREATE_SCREEN = gql` mutation FormSystemCreateScreen($input: FormSystemCreateScreenInput!) { formSystemCreateScreen(input: $input) { diff --git a/libs/portals/form-system/graphql/src/lib/mutations/deleteCertification.ts b/libs/portals/form-system/graphql/src/lib/mutations/deleteCertification.ts index fe6303c2d125..db0abeb74622 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/deleteCertification.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/deleteCertification.ts @@ -1,7 +1,9 @@ import { gql } from '@apollo/client' export const DELETE_CERTIFICATION = gql` - mutation FormSystemDeleteCertification($input: FormSystemDeleteCertificationInput!) { + mutation FormSystemDeleteCertification( + $input: FormSystemDeleteCertificationInput! + ) { formSystemDeleteCertification(input: $input) } ` diff --git a/libs/portals/form-system/graphql/src/lib/mutations/index.ts b/libs/portals/form-system/graphql/src/lib/mutations/index.ts index 8d2ad520845c..01c81c422e69 100644 --- a/libs/portals/form-system/graphql/src/lib/mutations/index.ts +++ b/libs/portals/form-system/graphql/src/lib/mutations/index.ts @@ -24,4 +24,3 @@ export { DELETE_APPLICANT } from './deleteApplicant' export { UPDATE_APPLICANT } from './updateApplicant' export { CREATE_CERTIFICATION } from './createCertification' export { DELETE_CERTIFICATION } from './deleteCertification' - diff --git a/libs/portals/form-system/graphql/src/lib/queries/getTranslation.ts b/libs/portals/form-system/graphql/src/lib/queries/getTranslation.ts index 02a217c51819..14af361b405b 100644 --- a/libs/portals/form-system/graphql/src/lib/queries/getTranslation.ts +++ b/libs/portals/form-system/graphql/src/lib/queries/getTranslation.ts @@ -4,6 +4,6 @@ export const GET_TRANSLATION = gql` query FormSystemGetTranslation($input: FormSystemGetTranslationInput!) { formSystemGetTranslation(input: $input) { translations + } } -} ` diff --git a/libs/portals/form-system/ui-components/project.json b/libs/portals/form-system/ui-components/project.json index 400cc12da6b9..f274198f78c4 100644 --- a/libs/portals/form-system/ui-components/project.json +++ b/libs/portals/form-system/ui-components/project.json @@ -9,9 +9,7 @@ }, "test": { "executor": "@nx/jest:jest", - "outputs": [ - "{workspaceRoot}/coverage/{projectRoot}" - ], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/portals/form-system/ui-components/jest.config.ts", "passWithNoTests": true @@ -24,8 +22,5 @@ } } }, - "tags": [ - "lib:form-system", - "scope:form-system" - ] -} \ No newline at end of file + "tags": ["lib:form-system", "scope:form-system"] +} diff --git a/libs/portals/form-system/ui-components/src/components/field-components/Banknumber/Banknumber.tsx b/libs/portals/form-system/ui-components/src/components/field-components/Banknumber/Banknumber.tsx index be1403f8a4b5..bdb3f5eb8881 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/Banknumber/Banknumber.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/Banknumber/Banknumber.tsx @@ -19,7 +19,7 @@ export const Banknumber = ({ item }: Props) => { const inputRefs = [ useRef<HTMLInputElement | HTMLTextAreaElement>(), useRef<HTMLInputElement | HTMLTextAreaElement>(), - useRef<HTMLInputElement | HTMLTextAreaElement>() + useRef<HTMLInputElement | HTMLTextAreaElement>(), ] const { formatMessage } = useIntl() diff --git a/libs/portals/form-system/ui-components/src/components/field-components/Checkbox/Checkbox.tsx b/libs/portals/form-system/ui-components/src/components/field-components/Checkbox/Checkbox.tsx index 7a6095bc173b..a038297b454a 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/Checkbox/Checkbox.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/Checkbox/Checkbox.tsx @@ -11,7 +11,7 @@ export const Checkbox = ({ item }: Props) => { name="checkbox" label={item?.name?.is ?? ''} // eslint-disable-next-line @typescript-eslint/no-empty-function - onChange={() => { }} + onChange={() => {}} /> ) } diff --git a/libs/portals/form-system/ui-components/src/components/field-components/FileUpload/FileUpload.tsx b/libs/portals/form-system/ui-components/src/components/field-components/FileUpload/FileUpload.tsx index 523cc640f333..0e458b865d72 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/FileUpload/FileUpload.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/FileUpload/FileUpload.tsx @@ -49,17 +49,15 @@ export const FileUpload = ({ item }: Props) => { name="fileUpload" fileList={fileList} header={item?.name?.is ?? ''} - description={`${formatMessage( - m.previewAllowedFileTypes, - )}: ${types?.map((f: string) => `${f} `)}`} + description={`${formatMessage(m.previewAllowedFileTypes)}: ${types?.map( + (f: string) => `${f} `, + )}`} buttonLabel={formatMessage(m.fileUploadButton)} onChange={onChange} onRemove={onRemove} errorMessage={fileList.length > 0 ? error : undefined} accept={ - types?.map( - (t: string) => fileTypes[t as keyof typeof fileTypes], - ) ?? [] + types?.map((t: string) => fileTypes[t as keyof typeof fileTypes]) ?? [] } showFileSize maxSize={item?.fieldSettings?.fileMaxSize ?? 1} diff --git a/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/HomestayOverview.tsx b/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/HomestayOverview.tsx index 3f57679312af..3ecfe8108788 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/HomestayOverview.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/HomestayOverview.tsx @@ -9,12 +9,15 @@ import { Text, RadioButton, Box, - Input + Input, } from '@island.is/island-ui/core' import { SingleValue } from 'react-select' import { icelandicLocale } from './icelandicLocale' import * as styles from './styles.css' -import { addCurrencyFormatting, getSumFromArray } from '../../../utils/currencyFormatter' +import { + addCurrencyFormatting, + getSumFromArray, +} from '../../../utils/currencyFormatter' import { useIntl } from 'react-intl' import { m } from '../../../lib/messages' @@ -57,8 +60,8 @@ export const HomestayOverview = () => { const handleDateChange = (dates: DateObject[]) => { setSelectedDates(dates) - if (dates.filter(d => d.monthIndex === currentMonth).length === 0) { - setMonthArray(prev => { + if (dates.filter((d) => d.monthIndex === currentMonth).length === 0) { + setMonthArray((prev) => { const newArr = [...prev] newArr[currentMonth] = '' return newArr @@ -66,10 +69,13 @@ export const HomestayOverview = () => { } } - const handleMonthChange = (date: DateObject) => setCurrentMonth(date.month.index) + const handleMonthChange = (date: DateObject) => + setCurrentMonth(date.month.index) - const handleMonthTotalChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => { - setMonthArray(prev => { + const handleMonthTotalChange = ( + e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, + ) => { + setMonthArray((prev) => { const newArray = [...prev] newArray[currentMonth] = addCurrencyFormatting(e) return newArray @@ -77,7 +83,9 @@ export const HomestayOverview = () => { } const monthName = icelandicLocale.months[currentMonth][0] - const selectedDatesThisMonth = selectedDates.filter(d => d.monthIndex === currentMonth).length + const selectedDatesThisMonth = selectedDates.filter( + (d) => d.monthIndex === currentMonth, + ).length return ( <Stack space={3}> @@ -105,7 +113,7 @@ export const HomestayOverview = () => { <RadioButton label={formatMessage(value ? m.yes : m.no)} large - backgroundColor='white' + backgroundColor="white" onChange={() => handleRadio(value)} checked={radio === value} /> @@ -126,7 +134,9 @@ export const HomestayOverview = () => { highlightToday={false} maxDate={maxDate} minDate={minDate} - currentDate={new DateObject({ year: selectedYear, month: 1, day: 1 })} + currentDate={ + new DateObject({ year: selectedYear, month: 1, day: 1 }) + } ref={datePickerRef} locale={icelandicLocale} className={styles.calendar} @@ -146,7 +156,9 @@ export const HomestayOverview = () => { {selectedDatesThisMonth > 0 && ( <Input name="monthTotal" - label={`${formatMessage(m.amountIn)} ${monthName.toLowerCase()}`} + label={`${formatMessage( + m.amountIn, + )} ${monthName.toLowerCase()}`} size="sm" onChange={handleMonthTotalChange} value={monthArray[currentMonth]} @@ -157,7 +169,10 @@ export const HomestayOverview = () => { <Stack space={1}> {[ { label: m.totalDays, value: selectedDates.length }, - { label: m.totalAmount, value: `${getSumFromArray(monthArray)} kr.` } + { + label: m.totalAmount, + value: `${getSumFromArray(monthArray)} kr.`, + }, ].map(({ label, value }) => ( <Box key={label.id} @@ -165,7 +180,9 @@ export const HomestayOverview = () => { flexDirection="row" justifyContent="spaceBetween" > - <Text fontWeight='semiBold'>{`${formatMessage(label)}:`}</Text> + <Text fontWeight="semiBold">{`${formatMessage( + label, + )}:`}</Text> <Text>{value}</Text> </Box> ))} diff --git a/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/icelandicLocale.ts b/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/icelandicLocale.ts index 1b838639b8f3..25f228e1267b 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/icelandicLocale.ts +++ b/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/icelandicLocale.ts @@ -1,33 +1,31 @@ export const icelandicLocale = { - name: "Icelandic", + name: 'Icelandic', months: [ - ["Janúar", "Jan"], - ["Febrúar", "Feb"], - ["Mars", "Mar"], - ["Apríl", "Apr"], - ["Maí", "Maí"], - ["Júní", "Jún"], - ["Júlí", "Júl"], - ["Ágúst", "Ágú"], - ["September", "Sep"], - ["Október", "Okt"], - ["Nóvember", "Nóv"], - ["Desember", "Des"], + ['Janúar', 'Jan'], + ['Febrúar', 'Feb'], + ['Mars', 'Mar'], + ['Apríl', 'Apr'], + ['Maí', 'Maí'], + ['Júní', 'Jún'], + ['Júlí', 'Júl'], + ['Ágúst', 'Ágú'], + ['September', 'Sep'], + ['Október', 'Okt'], + ['Nóvember', 'Nóv'], + ['Desember', 'Des'], ], weekDays: [ - ["Laugardagur", "Lau"], - ["Sunnudagur", "Sun"], - ["Mánudagur", "Mán"], - ["Þriðjudagur", "Þri"], - ["Miðvikudagur", "Mið"], - ["Fimmtudagur", "Fim"], - ["Föstudagur", "Fös"], + ['Laugardagur', 'Lau'], + ['Sunnudagur', 'Sun'], + ['Mánudagur', 'Mán'], + ['Þriðjudagur', 'Þri'], + ['Miðvikudagur', 'Mið'], + ['Fimmtudagur', 'Fim'], + ['Föstudagur', 'Fös'], ], - digits: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], + digits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], meridiems: [ - ["F.h.", "Fh"], - ["E.h.", "Eh"], + ['F.h.', 'Fh'], + ['E.h.', 'Eh'], ], } - - diff --git a/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/styles.css.ts b/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/styles.css.ts index 0172f4565e35..106583fc7b3e 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/styles.css.ts +++ b/libs/portals/form-system/ui-components/src/components/field-components/HomestayOverview/styles.css.ts @@ -1,39 +1,39 @@ -import { style, globalStyle } from '@vanilla-extract/css'; +import { style, globalStyle } from '@vanilla-extract/css' -const scaleFactor = 1.7; // Adjust this value to make the calendar larger or smaller +const scaleFactor = 1.7 // Adjust this value to make the calendar larger or smaller export const calendar = style({ fontSize: `${16 * scaleFactor}px`, // Base font size -}); +}) globalStyle(`${calendar} .rmdp-wrapper`, { width: `${300 * scaleFactor}px`, - padding: 5 -}); + padding: 5, +}) globalStyle(`${calendar} .rmdp-header-values`, { fontSize: `${14 * scaleFactor}px`, height: `${40 * scaleFactor}px`, -}); +}) globalStyle(`${calendar} .rmdp-week-day`, { height: `${35 * scaleFactor}px`, fontSize: `${13 * scaleFactor}px`, -}); +}) globalStyle(`${calendar} .rmdp-day`, { width: `${35 * scaleFactor}px`, height: `${35 * scaleFactor}px`, -}); +}) globalStyle(`${calendar} .rmdp-day span`, { fontSize: `${14 * scaleFactor}px`, -}); +}) globalStyle(`${calendar} .rmdp-arrow-container`, { width: `${30 * 1.2}px`, height: `${30 * 1.2}px`, -}); +}) // globalStyle(`${calendar} .rmdp-arrow`, { // borderWidth: `${2 * scaleFactor}px`, @@ -41,4 +41,4 @@ globalStyle(`${calendar} .rmdp-arrow-container`, { globalStyle(`${calendar} .rmdp-panel-body::-webkit-scrollbar`, { width: `${5 * scaleFactor}px`, -}); +}) diff --git a/libs/portals/form-system/ui-components/src/components/field-components/List/List.tsx b/libs/portals/form-system/ui-components/src/components/field-components/List/List.tsx index ccca852eef43..55a0b31b0c57 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/List/List.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/List/List.tsx @@ -24,7 +24,7 @@ export const List = ({ item }: Props) => { const mapToListItems = (items: any[]): ListItem[] => items?.map((item) => ({ label: item?.label?.is ?? '', - value: item?.label?.is ?? '' + value: item?.label?.is ?? '', })) ?? [] console.log('item', item) @@ -36,7 +36,7 @@ export const List = ({ item }: Props) => { required={item.isRequired ?? false} placeholder={ listTypePlaceholder[ - item.fieldSettings?.listType as keyof typeof listTypePlaceholder + item.fieldSettings?.listType as keyof typeof listTypePlaceholder ] ?? 'Select an option' } /> diff --git a/libs/portals/form-system/ui-components/src/components/field-components/NationalId/NationalId.tsx b/libs/portals/form-system/ui-components/src/components/field-components/NationalId/NationalId.tsx index be770272cb88..a8a6891bae83 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/NationalId/NationalId.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/NationalId/NationalId.tsx @@ -3,7 +3,6 @@ import { FormSystemField } from '@island.is/api/schema' import { useIntl } from 'react-intl' import { m } from '../../../lib/messages' - interface Props { item: FormSystemField } diff --git a/libs/portals/form-system/ui-components/src/components/field-components/TextInput/TextInput.tsx b/libs/portals/form-system/ui-components/src/components/field-components/TextInput/TextInput.tsx index 389ef5711ef5..be595731aa82 100644 --- a/libs/portals/form-system/ui-components/src/components/field-components/TextInput/TextInput.tsx +++ b/libs/portals/form-system/ui-components/src/components/field-components/TextInput/TextInput.tsx @@ -13,7 +13,7 @@ export const TextInput = ({ item }: Props) => { label={item?.name?.is ?? ''} name="text" textarea={fieldSettings?.isLarge ?? false} - required={item?.isRequired ?? false} + required={item.isRequired ?? false} /> ) } diff --git a/libs/portals/form-system/ui-components/src/components/form-stepper/formStepper.tsx b/libs/portals/form-system/ui-components/src/components/form-stepper/formStepper.tsx index 16e246f58e3a..6a095e98f6d2 100644 --- a/libs/portals/form-system/ui-components/src/components/form-stepper/formStepper.tsx +++ b/libs/portals/form-system/ui-components/src/components/form-stepper/formStepper.tsx @@ -6,24 +6,24 @@ interface Props { } export const FormStepper = ({ sections }: Props) => { - - const currentSection = sections.find(section => section.isCompleted === false || section.isCompleted === null) - const currentScreen = currentSection?.screens?.find(screen => screen) + const currentSection = sections.find( + (section) => section.isCompleted === false || section.isCompleted === null, + ) + const currentScreen = currentSection?.screens?.find((screen) => screen) return ( <FormStepperV2 - sections={sections.map((section, sectionIndex) => + sections={sections.map((section, sectionIndex) => ( <Section sectionIndex={sectionIndex} section={section?.name?.is ?? ''} isComplete={section?.isCompleted ?? false} isActive={section.id === currentSection?.id} subSections={section?.screens?.map((screen, screenIndex) => { - return ( - <Text key={screenIndex} > {screen?.name?.is ?? ''}</Text > - ) + return <Text key={screenIndex}> {screen?.name?.is ?? ''}</Text> })} - />)} + /> + ))} /> ) } diff --git a/libs/portals/form-system/ui-components/src/lib/enums.ts b/libs/portals/form-system/ui-components/src/lib/enums.ts index 1719aeb9471e..bde1b46a7402 100644 --- a/libs/portals/form-system/ui-components/src/lib/enums.ts +++ b/libs/portals/form-system/ui-components/src/lib/enums.ts @@ -1,4 +1,3 @@ - export const FieldTypesEnum = { TEXTBOX: 'b6a7e297-22fd-4426-a4e1-04a11a2e8914', EMAIL: 'd6c292c7-4e7c-44a6-bb7e-b956122598b0', @@ -78,14 +77,18 @@ export const ApplicationStatus = { IN_PROGRESS: 'ee2545cc-b27f-4d75-bc82-b57f9d10c1b3', DONE: '385bbb3d-8dd6-4725-9f9c-90effc070de2', SENT_IN: '22b3ab87-4d42-4987-b6fe-33abcf05f112', - ALL_DATA_HAS_BEEN_RECIEVED_BY_ORGANIZATION: 'ec63e29f-4c9f-4dc4-8e05-68956d3e1453', + ALL_DATA_HAS_BEEN_RECIEVED_BY_ORGANIZATION: + 'ec63e29f-4c9f-4dc4-8e05-68956d3e1453', } as const export type FieldTypesEnum = typeof FieldTypesEnum[keyof typeof FieldTypesEnum] -export type CertificationTypesEnum = typeof CertificationTypesEnum[keyof typeof CertificationTypesEnum] -export type ApplicantTypesEnum = typeof ApplicantTypesEnum[keyof typeof ApplicantTypesEnum] +export type CertificationTypesEnum = + typeof CertificationTypesEnum[keyof typeof CertificationTypesEnum] +export type ApplicantTypesEnum = + typeof ApplicantTypesEnum[keyof typeof ApplicantTypesEnum] export type ListTypesEnum = typeof ListTypesEnum[keyof typeof ListTypesEnum] export type SectionTypes = typeof SectionTypes[keyof typeof SectionTypes] export type UrlMethods = typeof UrlMethods[keyof typeof UrlMethods] export type UrlTypes = typeof UrlTypes[keyof typeof UrlTypes] -export type ApplicationStatus = typeof ApplicationStatus[keyof typeof ApplicationStatus] +export type ApplicationStatus = + typeof ApplicationStatus[keyof typeof ApplicationStatus] diff --git a/libs/portals/form-system/ui-components/src/lib/messages.ts b/libs/portals/form-system/ui-components/src/lib/messages.ts index 189b3afaa700..9027e15e98f9 100644 --- a/libs/portals/form-system/ui-components/src/lib/messages.ts +++ b/libs/portals/form-system/ui-components/src/lib/messages.ts @@ -222,7 +222,7 @@ export const m = defineMessages({ }, phoneNumber: { id: 'portals-admin.form-system:phone-number', - defaultMessage: 'Símanúmer' + defaultMessage: 'Símanúmer', }, // Labels and placeholders maxFileSize: { @@ -447,27 +447,28 @@ export const m = defineMessages({ }, homestayOverviewRadio: { id: 'portals-admin-form-system:homestay-overview-radio', - defaultMessage: 'Var eignin eitthvað í útleigu á almanaksárinu sem er valið?' + defaultMessage: + 'Var eignin eitthvað í útleigu á almanaksárinu sem er valið?', }, yes: { id: 'portals-admin-form-system:yes', - defaultMessage: 'Já' + defaultMessage: 'Já', }, no: { id: 'portals-admin-form-system:no', - defaultMessage: 'Nei' + defaultMessage: 'Nei', }, amountIn: { id: 'portals-admin-form-system:amount-in', - defaultMessage: 'Upphæð í' + defaultMessage: 'Upphæð í', }, totalDays: { id: 'portals-admin-form-system:total-days', - defaultMessage: 'Heildarfjöldi daga' + defaultMessage: 'Heildarfjöldi daga', }, totalAmount: { id: 'portals-admin-form-system:total-amount', - defaultMessage: 'Heildarupphæð' + defaultMessage: 'Heildarupphæð', }, // Error messages invalidEmail: { diff --git a/libs/portals/form-system/ui-components/src/screens/ExampleScreen/ExampleScreen.tsx b/libs/portals/form-system/ui-components/src/screens/ExampleScreen/ExampleScreen.tsx index 7b00f89d43d8..fbbc7498f116 100644 --- a/libs/portals/form-system/ui-components/src/screens/ExampleScreen/ExampleScreen.tsx +++ b/libs/portals/form-system/ui-components/src/screens/ExampleScreen/ExampleScreen.tsx @@ -1,6 +1,6 @@ -import { useAuth } from "@island.is/auth/react" -import { useLocale, useLocalizedQuery } from "@island.is/localization" -import { useNavigate, useParams } from "react-router-dom" +import { useAuth } from '@island.is/auth/react' +import { useLocale, useLocalizedQuery } from '@island.is/localization' +import { useNavigate, useParams } from 'react-router-dom' export const ExampleScreen = () => { return ( @@ -10,7 +10,6 @@ export const ExampleScreen = () => { ) } - type Params = { slug: string } diff --git a/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx b/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx index f0a8d00adf77..0a53a007fcee 100644 --- a/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx +++ b/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx @@ -1,9 +1,8 @@ -import { useMutation } from "@apollo/client" -import { useAuth } from "@island.is/auth/react" -import { useLocale, useLocalizedQuery } from "@island.is/localization" -import { Params, useNavigate, useParams } from "react-router-dom" -import { CREATE_APPLICATION, CREATE_FORM } from "@island.is/form-system/graphql" - +import { useMutation } from '@apollo/client' +import { useAuth } from '@island.is/auth/react' +import { useLocale, useLocalizedQuery } from '@island.is/localization' +import { Params, useNavigate, useParams } from 'react-router-dom' +import { CREATE_APPLICATION, CREATE_FORM } from '@island.is/form-system/graphql' export const FormsScreen = () => { const { userInfo } = useAuth() @@ -70,7 +69,6 @@ export const FormsScreen = () => { } data() - const createForm = () => { // Graphql mutation to create form } diff --git a/libs/portals/form-system/ui-components/src/utils/currencyFormatter.ts b/libs/portals/form-system/ui-components/src/utils/currencyFormatter.ts index db9cfac71e2b..b042e18a8f44 100644 --- a/libs/portals/form-system/ui-components/src/utils/currencyFormatter.ts +++ b/libs/portals/form-system/ui-components/src/utils/currencyFormatter.ts @@ -1,17 +1,23 @@ -import { ChangeEvent } from "react" +import { ChangeEvent } from 'react' export const removeCurrencyFormatting = (value: string): string => { return value.replace(/\D/g, '') } -export const addCurrencyFormatting = (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>): string => { +export const addCurrencyFormatting = ( + e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, +): string => { const inputValue = e.target.value.replace(/\D/g, '') const formattedValue = inputValue.replace(/\B(?=(\d{3})+(?!\d))/g, '.') return formattedValue } export const getSumFromArray = (arr: string[]): string => { - const cleanedNumbers = arr.filter(num => num !== '').map(num => parseFloat(removeCurrencyFormatting(num))) - const totalSum = cleanedNumbers.reduce((acc, curr) => acc + curr, 0).toString() + const cleanedNumbers = arr + .filter((num) => num !== '') + .map((num) => parseFloat(removeCurrencyFormatting(num))) + const totalSum = cleanedNumbers + .reduce((acc, curr) => acc + curr, 0) + .toString() return totalSum.replace(/\B(?=(\d{3})+(?!\d))/g, '.') } diff --git a/libs/portals/form-system/ui-components/tsconfig.lib.json b/libs/portals/form-system/ui-components/tsconfig.lib.json index 038d2d844c31..a63139462884 100644 --- a/libs/portals/form-system/ui-components/tsconfig.lib.json +++ b/libs/portals/form-system/ui-components/tsconfig.lib.json @@ -3,7 +3,7 @@ "compilerOptions": { "outDir": "../../../../dist/out-tsc", "types": [ - "node", + "node" // "@nx/react/typings/cssmodule.d.ts", // "@nx/react/typings/image.d.ts" ] From d1d30edc8f9febd1b2a4f640b9f466d128dc222c Mon Sep 17 00:00:00 2001 From: Hyosam <hyo-sam.nandkisore@advania.is> Date: Tue, 17 Dec 2024 11:13:03 +0000 Subject: [PATCH 124/129] merge confict fix --- package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 813abe354709..4024810cdd83 100644 --- a/package.json +++ b/package.json @@ -521,4 +521,4 @@ "yarn": "3.2.3" }, "packageManager": "yarn@3.2.3" -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index def59c0751f4..dda88f816856 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39480,11 +39480,11 @@ __metadata: react-is: 18.3.1 react-keyed-flatten-children: 1.2.0 react-modal: 3.15.1 + react-multi-date-picker: 4.5.2 react-native: 0.74.5 react-native-svg: 15.2.0 react-native-svg-transformer: 1.3.0 react-native-web: ^0.19.11 - react-multi-date-picker: 4.5.2 react-number-format: 4.9.1 react-pdf: 9.1.0 react-popper: 2.3.0 From fbc9698158e4a81dd061011b8a896538aa47bde7 Mon Sep 17 00:00:00 2001 From: Hyosam <hyo-sam.nandkisore@advania.is> Date: Thu, 19 Dec 2024 11:35:55 +0000 Subject: [PATCH 125/129] removed form-system application from apps/portals/ --- apps/portals/form-system/.babelrc | 11 -- apps/portals/form-system/.eslintrc.json | 18 --- apps/portals/form-system/infra/form-system.ts | 63 ----------- apps/portals/form-system/jest.config.ts | 11 -- apps/portals/form-system/project.json | 103 ------------------ apps/portals/form-system/src/app/App.tsx | 20 ---- apps/portals/form-system/src/assets/.gitkeep | 0 apps/portals/form-system/src/auth.ts | 24 ---- .../src/components/Router/Router.tsx | 32 ------ .../src/environments/environment.ts | 32 ------ apps/portals/form-system/src/favicon.ico | Bin 15086 -> 0 bytes apps/portals/form-system/src/index.src.html | 53 --------- apps/portals/form-system/src/lib/messages.ts | 8 -- apps/portals/form-system/src/lib/routes.tsx | 32 ------ apps/portals/form-system/src/main.tsx | 33 ------ apps/portals/form-system/src/polyfills.ts | 7 -- .../form-system/src/screens/FormsScreen.tsx | 91 ---------------- apps/portals/form-system/src/styles.css | 1 - apps/portals/form-system/tsconfig.app.json | 27 ----- apps/portals/form-system/tsconfig.json | 20 ---- apps/portals/form-system/tsconfig.spec.json | 21 ---- apps/portals/form-system/webpack.config.js | 23 ---- infra/src/uber-charts/islandis.ts | 2 +- 23 files changed, 1 insertion(+), 631 deletions(-) delete mode 100644 apps/portals/form-system/.babelrc delete mode 100644 apps/portals/form-system/.eslintrc.json delete mode 100644 apps/portals/form-system/infra/form-system.ts delete mode 100644 apps/portals/form-system/jest.config.ts delete mode 100644 apps/portals/form-system/project.json delete mode 100644 apps/portals/form-system/src/app/App.tsx delete mode 100644 apps/portals/form-system/src/assets/.gitkeep delete mode 100644 apps/portals/form-system/src/auth.ts delete mode 100644 apps/portals/form-system/src/components/Router/Router.tsx delete mode 100644 apps/portals/form-system/src/environments/environment.ts delete mode 100644 apps/portals/form-system/src/favicon.ico delete mode 100644 apps/portals/form-system/src/index.src.html delete mode 100644 apps/portals/form-system/src/lib/messages.ts delete mode 100644 apps/portals/form-system/src/lib/routes.tsx delete mode 100644 apps/portals/form-system/src/main.tsx delete mode 100644 apps/portals/form-system/src/polyfills.ts delete mode 100644 apps/portals/form-system/src/screens/FormsScreen.tsx delete mode 100644 apps/portals/form-system/src/styles.css delete mode 100644 apps/portals/form-system/tsconfig.app.json delete mode 100644 apps/portals/form-system/tsconfig.json delete mode 100644 apps/portals/form-system/tsconfig.spec.json delete mode 100644 apps/portals/form-system/webpack.config.js diff --git a/apps/portals/form-system/.babelrc b/apps/portals/form-system/.babelrc deleted file mode 100644 index 88ee27b140c6..000000000000 --- a/apps/portals/form-system/.babelrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "presets": [ - [ - "@nx/react/babel", - { - "runtime": "automatic" - } - ] - ], - "plugins": [] -} diff --git a/apps/portals/form-system/.eslintrc.json b/apps/portals/form-system/.eslintrc.json deleted file mode 100644 index 75b85077debb..000000000000 --- a/apps/portals/form-system/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["plugin:@nx/react", "../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/apps/portals/form-system/infra/form-system.ts b/apps/portals/form-system/infra/form-system.ts deleted file mode 100644 index 34b3a3b90076..000000000000 --- a/apps/portals/form-system/infra/form-system.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { ref, service, ServiceBuilder } from '../../../../infra/src/dsl/dsl' - -export const serviceSetup = (services: { - api: ServiceBuilder<'api'> -}): ServiceBuilder<'portals-form-system'> => - service('portals-form-system') - .namespace('portals-form-system') - .liveness('/liveness') - .readiness('/readiness') - .replicaCount({ - default: 2, - max: 30, - min: 2, - }) - .resources({ - limits: { cpu: '400m', memory: '512Mi' }, - requests: { cpu: '200m', memory: '256Mi' }, - }) - .env({ - BASEPATH: '/form', - SI_PUBLIC_GRAPHQL_PATH: { - dev: 'http://localhost:4445', - prod: '', - staging: '', - local: ref((h) => `http://${h.svc(services.api)}`), - }, - SI_PUBLIC_IDENTITY_SERVER_ISSUER_URL: { - dev: 'https://identity-server.dev01.devland.is', - staging: 'https://identity-server.staging01.devland.is', - prod: 'https://innskra.island.is', - }, - SI_PUBLIC_ENVIRONMENT: ref((h) => h.env.type), - }) - .secrets({ - SI_PUBLIC_CONFIGCAT_SDK_KEY: '/k8s/configcat/CONFIGCAT_SDK_KEY', - SI_PUBLIC_DD_RUM_APPLICATION_ID: '/k8s/DD_RUM_APPLICATION_ID', - SI_PUBLIC_DD_RUM_CLIENT_TOKEN: '/k8s/DD_RUM_CLIENT_TOKEN', - }) - .ingress({ - primary: { - host: { - dev: ['beta'], - staging: ['beta'], - prod: ['', 'www.island.is'], - }, - extraAnnotations: { - dev: { - 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', - 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', - }, - staging: { - 'nginx.ingress.kubernetes.io/enable-global-auth': 'false', - 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', - 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', - }, - prod: { - 'nginx.ingress.kubernetes.io/proxy-buffering': 'on', - 'nginx.ingress.kubernetes.io/proxy-buffer-size': '8k', - }, - }, - paths: ['/form'], - }, - }) diff --git a/apps/portals/form-system/jest.config.ts b/apps/portals/form-system/jest.config.ts deleted file mode 100644 index 163ef9743ee4..000000000000 --- a/apps/portals/form-system/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'portals-form-system', - preset: '../../../jest.preset.js', - transform: { - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', - '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }], - }, - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], - coverageDirectory: '../../../coverage/apps/portals/form-system', -} diff --git a/apps/portals/form-system/project.json b/apps/portals/form-system/project.json deleted file mode 100644 index 8a967d557d49..000000000000 --- a/apps/portals/form-system/project.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "name": "portals-form-system", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "apps/portals/form-system/src", - "projectType": "application", - "targets": { - "build": { - "executor": "@nx/webpack:webpack", - "outputs": ["{options.outputPath}"], - "defaultConfiguration": "production", - "options": { - "compiler": "babel", - "outputPath": "dist/apps/portals/form-system", - "index": "apps/portals/form-system/src/index.html", - "baseHref": "/form/", - "main": "apps/portals/form-system/src/main.tsx", - "polyfills": "apps/portals/form-system/src/polyfills.ts", - "tsConfig": "apps/portals/form-system/tsconfig.app.json", - "assets": [ - "apps/portals/form-system/src/favicon.ico", - "apps/portals/form-system/src/assets" - ], - "styles": ["apps/portals/form-system/src/styles.css"], - "scripts": [], - "webpackConfig": "apps/portals/form-system/webpack.config.js" - }, - "configurations": { - "production": { - "fileReplacements": [ - { - "replace": "apps/portals/form-system/src/environments/environment.ts", - "with": "apps/portals/form-system/src/environments/environment.prod.ts" - } - ], - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false - } - }, - "dependsOn": [ - { - "target": "generateDevIndexHTML" - } - ] - }, - "generateDevIndexHTML": { - "executor": "nx:run-commands", - "options": { - "commands": [ - "node scripts/dockerfile-assets/bash/extract-environment.js apps/portals/form-system/src" - ] - }, - "outputs": ["{workspaceRoot}/apps/portals/form-system/src/index.html"] - }, - "serve": { - "executor": "@nx/webpack:dev-server", - "defaultConfiguration": "development", - "options": { - "buildTarget": "portals-form-system:build", - "hmr": true - }, - "configurations": { - "development": { - "buildTarget": "portals-form-system:build:development" - }, - "production": { - "buildTarget": "portals-form-system:build:production", - "hmr": false - } - }, - "dependsOn": [ - { - "target": "generateDevIndexHTML" - } - ] - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["apps/portals/form-system/**/*.{ts,tsx,js,jsx}"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], - "options": { - "jestConfig": "apps/portals/form-system/jest.config.ts", - "passWithNoTests": true - }, - "configurations": { - "ci": { - "ci": true, - "codeCoverage": true - } - } - } - }, - "tags": [] -} diff --git a/apps/portals/form-system/src/app/App.tsx b/apps/portals/form-system/src/app/App.tsx deleted file mode 100644 index 407667a10b40..000000000000 --- a/apps/portals/form-system/src/app/App.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { ApolloProvider } from '@apollo/client' -import { initializeClient } from '@island.is/form-system/graphql' -import environment from '../environments/environment' -import { defaultLanguage } from '@island.is/shared/constants' -import { LocaleProvider } from '@island.is/localization' -import { AuthProvider } from '@island.is/auth/react' -import { BASE_PATH } from '../lib/routes' -import { Router } from '../components/Router/Router' - -export const App = () => ( - <ApolloProvider client={initializeClient(environment.baseApiUrl)}> - <LocaleProvider locale={defaultLanguage} messages={{}}> - <AuthProvider basePath={BASE_PATH}> - <Router /> - </AuthProvider> - </LocaleProvider> - </ApolloProvider> -) - -export default App diff --git a/apps/portals/form-system/src/assets/.gitkeep b/apps/portals/form-system/src/assets/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/apps/portals/form-system/src/auth.ts b/apps/portals/form-system/src/auth.ts deleted file mode 100644 index f2bc006a0b56..000000000000 --- a/apps/portals/form-system/src/auth.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { configure, configureMock } from '@island.is/auth/react' - -import environment from './environments/environment' - -const userMocked = process.env.API_MOCKS === 'true' - -if (userMocked) { - configureMock({ - profile: { name: 'Mock', locale: 'is', nationalId: '0000000000' }, - scopes: [], - }) -} else { - configure({ - baseUrl: `${window.location.origin}/form`, - redirectPath: '/signin-oidc', - redirectPathSilent: '/silent/signin-oidc', - switchUserRedirectUrl: '/', - authority: environment.identityServer.authority, - client_id: '@island.is/web', - scope: ['openid', 'profile'], - post_logout_redirect_uri: `${window.location.origin}`, - userStorePrefix: 'ap.', - }) -} diff --git a/apps/portals/form-system/src/components/Router/Router.tsx b/apps/portals/form-system/src/components/Router/Router.tsx deleted file mode 100644 index 3e0a09663473..000000000000 --- a/apps/portals/form-system/src/components/Router/Router.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { useLocale } from '@island.is/localization' -import { useAuth } from '@island.is/auth/react' -import { useRef } from 'react' -import { RouterProvider, createBrowserRouter } from 'react-router-dom' -import { LoadingScreen } from '@island.is/react/components' -import { m } from '../../lib/messages' -import { BASE_PATH, routes } from '../../lib/routes' - -export const Router = () => { - const { formatMessage } = useLocale() - const { userInfo } = useAuth() - const router = useRef<ReturnType<typeof createBrowserRouter>>() - - if (!userInfo) { - return <LoadingScreen ariaLabel={formatMessage(m.loginMessage)} /> - } - - if (!router.current) { - router.current = createBrowserRouter(routes, { - basename: BASE_PATH, - }) - } - - return ( - <RouterProvider - router={router.current} - fallbackElement={ - <LoadingScreen ariaLabel={formatMessage(m.loginMessage)} /> - } - /> - ) -} diff --git a/apps/portals/form-system/src/environments/environment.ts b/apps/portals/form-system/src/environments/environment.ts deleted file mode 100644 index 324f347521f5..000000000000 --- a/apps/portals/form-system/src/environments/environment.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { getStaticEnv } from '@island.is/shared/utils' - -const devConfig = { - production: false, - baseApiUrl: 'http://localhost:4200', - identityServer: { - authority: 'https://identity-server.dev01.devland.is', - }, - featureFlagSdkKey: '', // ?? - DD_RUM_CLIENT_TOKEN: 'unknown', - DD_RUM_APPLICATION_ID: 'unknown', - APP_VERSION: 'unknown', - ENVIRONMENT: 'unknown', -} - -const prodConfig = { - production: true, - baseApiUrl: '', - identityServer: { - authority: getStaticEnv('SI_PUBLIC_IDENTITY_SERVER_ISSUER_URL'), - }, - featureFlagSdkKey: '', - DD_RUM_CLIENT_TOKEN: 'unknown', - DD_RUM_APPLICATION_ID: 'unknown', - APP_VERSION: 'unknown', - ENVIRONMENT: 'unknown', -} - -export default getStaticEnv('PROD_MODE') === 'true' || -process.env.NODE_ENV === 'production' - ? prodConfig - : devConfig diff --git a/apps/portals/form-system/src/favicon.ico b/apps/portals/form-system/src/favicon.ico deleted file mode 100644 index 317ebcb2336e0833a22dddf0ab287849f26fda57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 X*GBfq^a!*Sks)$E_17kl@BRM)`^nwN diff --git a/apps/portals/form-system/src/index.src.html b/apps/portals/form-system/src/index.src.html deleted file mode 100644 index 3cc1fc5e36e9..000000000000 --- a/apps/portals/form-system/src/index.src.html +++ /dev/null @@ -1,53 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8" /> - <title>Umsóknir - Ísland.is - - - - - - - - - - - - - - - - - - - - - - - - - -
- - diff --git a/apps/portals/form-system/src/lib/messages.ts b/apps/portals/form-system/src/lib/messages.ts deleted file mode 100644 index e625da806106..000000000000 --- a/apps/portals/form-system/src/lib/messages.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { defineMessages } from 'react-intl' - -export const m = defineMessages({ - loginMessage: { - id: 'form.system:loginLoading', - defaultMessage: 'Er að vinna í innskráningu', - }, -}) diff --git a/apps/portals/form-system/src/lib/routes.tsx b/apps/portals/form-system/src/lib/routes.tsx deleted file mode 100644 index 2e60e1d273e8..000000000000 --- a/apps/portals/form-system/src/lib/routes.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { Outlet, RouteObject } from 'react-router-dom' -import { UserProfileLocale } from '@island.is/shared/components' -import { ExampleScreen } from '@island.is/form-system/ui' -import { FormsScreen } from '../screens/FormsScreen' - -export const BASE_PATH = '/form' - -export const routes: RouteObject[] = [ - { - element: ( - <> - - - - ), - children: [ - { - index: true, - element: , - }, - { - // - path: '/:slug', - // Forms screen where a new form is created if the user has not created a form before, otherwise the user sees a list of formerly created forms with the option to create a new one - element: , - }, - { - path: '/:slug/:id', - }, - ], - }, -] diff --git a/apps/portals/form-system/src/main.tsx b/apps/portals/form-system/src/main.tsx deleted file mode 100644 index 59b243e10a3d..000000000000 --- a/apps/portals/form-system/src/main.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import '@island.is/api/mocks' -import { userMonitoring } from '@island.is/user-monitoring' -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' - -import { isRunningOnEnvironment } from '@island.is/shared/utils' - -import './auth' -import environment from './environments/environment' -import { App } from './app/App' - -if (!isRunningOnEnvironment('local')) { - userMonitoring.initDdRum({ - service: 'admin-portal', - applicationId: environment.DD_RUM_APPLICATION_ID, - clientToken: environment.DD_RUM_CLIENT_TOKEN, - env: environment.ENVIRONMENT, - version: environment.APP_VERSION, - }) -} - -const rootEl = document.getElementById('root') - -if (!rootEl) { - throw new Error('Root element not found') -} - -const root = createRoot(rootEl) -root.render( - - - , -) diff --git a/apps/portals/form-system/src/polyfills.ts b/apps/portals/form-system/src/polyfills.ts deleted file mode 100644 index 53c485753e6e..000000000000 --- a/apps/portals/form-system/src/polyfills.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Polyfill stable language features. These imports will be optimized by `@babel/preset-env`. - * - * See: https://github.com/zloirock/core-js#babel - */ -import 'core-js/stable' -import 'regenerator-runtime/runtime' diff --git a/apps/portals/form-system/src/screens/FormsScreen.tsx b/apps/portals/form-system/src/screens/FormsScreen.tsx deleted file mode 100644 index 911245568599..000000000000 --- a/apps/portals/form-system/src/screens/FormsScreen.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import { useMutation } from '@apollo/client' -import { useLocale } from '@island.is/localization' -import { Params, useNavigate, useParams } from 'react-router-dom' -import { CREATE_APPLICATION, CREATE_FORM } from '@island.is/form-system/graphql' - -export const FormsScreen = () => { - const { formatMessage } = useLocale() - const navigate = useNavigate() - - // Get the slug and send it to the backend with the user nationalId to either get a [formId] or create a new form - // If the user has no forms, create a new form - // If the user has forms, get the forms and display them - - const { slug } = useParams() as Params - - // use the slug to make a query to the backend to get the formId - - - // const { - // data, - // loading, - // error: formsError, - // refetch - // } = useLocalizedQuery(CREATE_APPLICATION, { - // variables: { - // input: { - // slug: slug, - // nationalId: nationalId - // }, - // }, - // skip: !slug, - // fetchPolicy: 'cache-and-network' - // }) - - // if (loading) { - // return
Loading...
- // } - console.log('slug', slug) - const [createFormMutation, { error }] = useMutation( - CREATE_APPLICATION, - // { - // onCompleted({ createApplication }) { - // if (slug) { - // navigate(`../${slug}/${createApplication.formGuid}`) - // } - // } - // } - ) - const [formSystemCreateFormMutation] = useMutation(CREATE_FORM) - const data = async () => { - try { - const data = await createFormMutation({ - variables: { - input: { - slug: slug, - }, - }, - }) - console.log(data) - } catch (err) { - console.error('Error creating form:', err.message) - } - } - data() - - const createForm = () => { - // Graphql mutation to create form - } - - // if (data) { - // // check whether the data has an array of formGuids - // // if it does, display the list of forms - // // if it doesn't, create a new form from template and redirect to - // } - - return <>Test -} - -// const FormCard = () => { -// // Display form card -// // Date of last modified -// // Title of form -// // Description of form and/or state of form -// // Display amount of steps completed -// // Delete button -// // Open form button - -// return ( -// -// ) -// } diff --git a/apps/portals/form-system/src/styles.css b/apps/portals/form-system/src/styles.css deleted file mode 100644 index 90d4ee0072ce..000000000000 --- a/apps/portals/form-system/src/styles.css +++ /dev/null @@ -1 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ diff --git a/apps/portals/form-system/tsconfig.app.json b/apps/portals/form-system/tsconfig.app.json deleted file mode 100644 index c8a4d7e7d8e5..000000000000 --- a/apps/portals/form-system/tsconfig.app.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "types": [ - "node", - "@nx/react/typings/cssmodule.d.ts", - "@nx/react/typings/image.d.ts" - ] - }, - "files": [ - "../../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": [ - "**/*.spec.ts", - "**/*.test.ts", - "**/*.spec.tsx", - "**/*.test.tsx", - "**/*.spec.js", - "**/*.test.js", - "**/*.spec.jsx", - "**/*.test.jsx", - "jest.config.ts" - ], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] -} diff --git a/apps/portals/form-system/tsconfig.json b/apps/portals/form-system/tsconfig.json deleted file mode 100644 index 5168ad6ac9f9..000000000000 --- a/apps/portals/form-system/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react-jsx", - "allowJs": false, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.app.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "extends": "../../../tsconfig.base.json" -} diff --git a/apps/portals/form-system/tsconfig.spec.json b/apps/portals/form-system/tsconfig.spec.json deleted file mode 100644 index 0114a9db502e..000000000000 --- a/apps/portals/form-system/tsconfig.spec.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": [ - "jest.config.ts", - "src/**/*.test.ts", - "src/**/*.spec.ts", - "src/**/*.test.tsx", - "src/**/*.spec.tsx", - "src/**/*.test.js", - "src/**/*.spec.js", - "src/**/*.test.jsx", - "src/**/*.spec.jsx", - "src/**/*.d.ts" - ], - "types": ["@nx/react/typings/cssmodule.d.ts", "@nx/react/typings/image.d.ts"] -} diff --git a/apps/portals/form-system/webpack.config.js b/apps/portals/form-system/webpack.config.js deleted file mode 100644 index 6f9c404b1b27..000000000000 --- a/apps/portals/form-system/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const nrwlConfig = require('./../../../libs/shared/webpack/nrwl-config') -const { composePlugins, withNx } = require('@nx/webpack') -const { withReact } = require('@nx/react') - -const isDev = process.env.NODE_ENV === 'development' - -module.exports = composePlugins(withNx(), withReact(), nrwlConfig, (config) => { - // App specific config - config.stats.chunks = false - config.stats.modules = false - - if (isDev) { - config.devtool = 'eval-cheap-module-source-map' - } - - return { - ...config, - node: { - global: true, - }, - } -}) diff --git a/infra/src/uber-charts/islandis.ts b/infra/src/uber-charts/islandis.ts index 0e848142e089..8770c8d392bf 100644 --- a/infra/src/uber-charts/islandis.ts +++ b/infra/src/uber-charts/islandis.ts @@ -161,7 +161,7 @@ const externalContractsTests = externalContractsTestsSetup() export const Services: EnvironmentServices = { prod: [ appSystemApi, - appSystemForm, + appSystemForm, @ servicePortal, servicePortalApi, adminPortal, From 951c227031f3303d033c9ae516f9754d7989fbfc Mon Sep 17 00:00:00 2001 From: Hyosam Date: Mon, 13 Jan 2025 14:01:14 +0000 Subject: [PATCH 126/129] refactor: Remove unused auth imports from form-system components --- infra/src/uber-charts/islandis.ts | 2 +- libs/portals/form-system/graphql/src/lib/client.ts | 3 +-- .../src/screens/ExampleScreen/ExampleScreen.tsx | 1 - .../ui-components/src/screens/FormsScreen/FormsScreen.tsx | 7 ------- 4 files changed, 2 insertions(+), 11 deletions(-) diff --git a/infra/src/uber-charts/islandis.ts b/infra/src/uber-charts/islandis.ts index 8770c8d392bf..0e848142e089 100644 --- a/infra/src/uber-charts/islandis.ts +++ b/infra/src/uber-charts/islandis.ts @@ -161,7 +161,7 @@ const externalContractsTests = externalContractsTestsSetup() export const Services: EnvironmentServices = { prod: [ appSystemApi, - appSystemForm, @ + appSystemForm, servicePortal, servicePortalApi, adminPortal, diff --git a/libs/portals/form-system/graphql/src/lib/client.ts b/libs/portals/form-system/graphql/src/lib/client.ts index 4e84a334907c..e4980462bab5 100644 --- a/libs/portals/form-system/graphql/src/lib/client.ts +++ b/libs/portals/form-system/graphql/src/lib/client.ts @@ -1,6 +1,5 @@ import { RetryLink } from '@apollo/client/link/retry' import { onError } from '@apollo/client/link/error' -import { authLink } from '@island.is/auth/react' import fetch from 'cross-fetch' import { ApolloClient, @@ -30,7 +29,7 @@ export const initializeClient = (baseApiUrl: string) => { }) return new ApolloClient({ - link: ApolloLink.from([retryLink, errorLink, authLink, httpLink]), + link: ApolloLink.from([retryLink, errorLink, httpLink]), cache: new InMemoryCache(), }) } diff --git a/libs/portals/form-system/ui-components/src/screens/ExampleScreen/ExampleScreen.tsx b/libs/portals/form-system/ui-components/src/screens/ExampleScreen/ExampleScreen.tsx index fbbc7498f116..79772d612f3d 100644 --- a/libs/portals/form-system/ui-components/src/screens/ExampleScreen/ExampleScreen.tsx +++ b/libs/portals/form-system/ui-components/src/screens/ExampleScreen/ExampleScreen.tsx @@ -1,4 +1,3 @@ -import { useAuth } from '@island.is/auth/react' import { useLocale, useLocalizedQuery } from '@island.is/localization' import { useNavigate, useParams } from 'react-router-dom' diff --git a/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx b/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx index 0a53a007fcee..206391ea7680 100644 --- a/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx +++ b/libs/portals/form-system/ui-components/src/screens/FormsScreen/FormsScreen.tsx @@ -1,14 +1,11 @@ import { useMutation } from '@apollo/client' -import { useAuth } from '@island.is/auth/react' import { useLocale, useLocalizedQuery } from '@island.is/localization' import { Params, useNavigate, useParams } from 'react-router-dom' import { CREATE_APPLICATION, CREATE_FORM } from '@island.is/form-system/graphql' export const FormsScreen = () => { - const { userInfo } = useAuth() const { formatMessage } = useLocale() const navigate = useNavigate() - const nationalId = userInfo?.profile?.nationalId // Get the slug and send it to the backend with the user nationalId to either get a [formGuids] or create a new form // If the user has no forms, create a new form @@ -18,10 +15,6 @@ export const FormsScreen = () => { // use the slug to make a query to the backend to get the formGuids - if (!nationalId) { - return - } - // const { // data, // loading, From 39e07ffdf78e6a753eaaf47f49720e4596197d31 Mon Sep 17 00:00:00 2001 From: Hyosam Date: Tue, 14 Jan 2025 12:12:17 +0000 Subject: [PATCH 127/129] fix: Update formatting and change API base path in configuration --- libs/api/domains/form-system/src/lib/fields/fields.service.ts | 2 +- libs/clients/form-system/src/lib/FormSystemClient.config.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/api/domains/form-system/src/lib/fields/fields.service.ts b/libs/api/domains/form-system/src/lib/fields/fields.service.ts index 521ae6c83492..72b8a3a19f1a 100644 --- a/libs/api/domains/form-system/src/lib/fields/fields.service.ts +++ b/libs/api/domains/form-system/src/lib/fields/fields.service.ts @@ -24,7 +24,7 @@ export class FieldsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private fieldsApi: FieldsApi, - ) {} + ) { } // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/clients/form-system/src/lib/FormSystemClient.config.ts b/libs/clients/form-system/src/lib/FormSystemClient.config.ts index d97274dc0a4f..d81633a49404 100644 --- a/libs/clients/form-system/src/lib/FormSystemClient.config.ts +++ b/libs/clients/form-system/src/lib/FormSystemClient.config.ts @@ -12,7 +12,7 @@ export const FormSystemClientConfig = defineConfig({ return { // TODO: Switch to .required() when we have a value in all environments. basePath: - env.optional('FORM_SYSTEM_API_BASE_PATH', 'http://172.19.80.1:3434') ?? + env.optional('FORM_SYSTEM_API_BASE_PATH', 'http://bakendi:3434') ?? '', } }, From a287c1410033fe531bf31fca13fcd08ac112f61b Mon Sep 17 00:00:00 2001 From: Hyosam Date: Fri, 17 Jan 2025 13:59:23 +0000 Subject: [PATCH 128/129] feat(form-system): add models and resolvers for form applicant types --- .../form-system/src/dto/applicant.input.ts | 31 + .../form-system/src/dto/application.input.ts | 25 +- .../src/dto/certification.input.ts | 6 + .../src/dto/formApplicantType.input.ts | 32 + .../lib/applications/applications.resolver.ts | 53 +- .../lib/applications/applications.service.ts | 74 ++- .../formApplicantTypes.resolver.ts | 54 ++ .../formApplicantTypes.service.ts | 63 ++ .../src/lib/forms/forms.service.ts | 4 +- .../src/lib/values/values.resolver.ts | 0 .../src/lib/values/values.service.ts | 0 .../src/models/applications.model.ts | 12 +- .../src/models/formApplicantTypes.model.ts | 14 + .../models/formCertificationTypes.model.ts | 10 + .../clients/form-system/src/clientConfig.json | 552 +++++++++++------- .../src/lib/FormSystemApiProvider.ts | 3 +- .../form-system/src/lib/form-system.module.ts | 6 +- 17 files changed, 712 insertions(+), 227 deletions(-) create mode 100644 libs/api/domains/form-system/src/dto/formApplicantType.input.ts create mode 100644 libs/api/domains/form-system/src/lib/formApplicantTypes/formApplicantTypes.resolver.ts create mode 100644 libs/api/domains/form-system/src/lib/formApplicantTypes/formApplicantTypes.service.ts delete mode 100644 libs/api/domains/form-system/src/lib/values/values.resolver.ts delete mode 100644 libs/api/domains/form-system/src/lib/values/values.service.ts create mode 100644 libs/api/domains/form-system/src/models/formApplicantTypes.model.ts create mode 100644 libs/api/domains/form-system/src/models/formCertificationTypes.model.ts diff --git a/libs/api/domains/form-system/src/dto/applicant.input.ts b/libs/api/domains/form-system/src/dto/applicant.input.ts index e6d82834b366..c6927e728791 100644 --- a/libs/api/domains/form-system/src/dto/applicant.input.ts +++ b/libs/api/domains/form-system/src/dto/applicant.input.ts @@ -1,5 +1,6 @@ import { Field, InputType } from '@nestjs/graphql' import { LanguageTypeInput } from './languageType.input' +import { DependencyInput } from './form.input' @InputType('FormSystemCreateApplicantDtoInput') export class FormSystemCreateApplicantDtoInput { @@ -37,6 +38,15 @@ export class UpdateApplicantInput { updateFormApplicantTypeDto?: FormSystemUpdateApplicantDtoInput } +@InputType('FormSystemUpdateApplicationDependenciesInput') +export class UpdateApplicationDependenciesInput { + @Field(() => [DependencyInput], { nullable: 'itemsAndList' }) + dependencies?: DependencyInput[] + + @Field(() => [String], { nullable: 'itemsAndList' }) + completed?: string[] +} + @InputType('FormSystemFormApplicantInput') export class FormApplicantInput { @Field(() => String, { nullable: true }) @@ -54,3 +64,24 @@ export class FormApplicantInput { @Field(() => [LanguageTypeInput], { nullable: true }) nameSuggestions?: LanguageTypeInput[] } + +@InputType('FormSystemFormApplicantTypeDtoInput') +export class FormApplicantTypeDtoInput { + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput +} + +@InputType('FormSystemFormApplicantTypeUpdateInput') +export class FormApplicantTypeUpdateInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => FormApplicantTypeDtoInput, { nullable: true }) + updateFormApplicantTypeDto?: FormApplicantTypeDtoInput +} + +@InputType('FormSystemFormApplicantTypeDeleteInput') +export class FormApplicantTypeDeleteInput { + @Field(() => String, { nullable: true }) + id?: string +} \ No newline at end of file diff --git a/libs/api/domains/form-system/src/dto/application.input.ts b/libs/api/domains/form-system/src/dto/application.input.ts index af094550c4b1..363941d21a8a 100644 --- a/libs/api/domains/form-system/src/dto/application.input.ts +++ b/libs/api/domains/form-system/src/dto/application.input.ts @@ -1,4 +1,4 @@ -import { Field, InputType } from '@nestjs/graphql' +import { Field, InputType, Int } from '@nestjs/graphql' import { OrganizationInput } from './organization.input' import { SectionInput } from './section.input' import { DependencyInput } from './form.input' @@ -12,7 +12,28 @@ export class CreateApplicationInput { @InputType('FormSystemGetApplicationInput') export class GetApplicationInput { @Field(() => String, { nullable: true }) - formId?: string + id?: string +} + +@InputType('FormSystemSubmitScreenInput') +export class SubmitScreenInput { + @Field(() => String, { nullable: true }) + screenId?: string +} + +@InputType('FormSystemGetApplicationsByOrganizationInput') +export class GetApplicationsByOrganizationInput { + @Field(() => String, { nullable: true }) + organizationId?: string + + @Field(() => Int, { nullable: true }) + page?: number + + @Field(() => Int, { nullable: true }) + limit?: number + + @Field(() => Boolean, { nullable: true }) + isTest?: boolean } @InputType('FormSystemApplicationEventDtoInput') diff --git a/libs/api/domains/form-system/src/dto/certification.input.ts b/libs/api/domains/form-system/src/dto/certification.input.ts index 41aec0c326d5..226195d8a2e0 100644 --- a/libs/api/domains/form-system/src/dto/certification.input.ts +++ b/libs/api/domains/form-system/src/dto/certification.input.ts @@ -51,3 +51,9 @@ export class DeleteCertificationInput { @Field(() => String, { nullable: true }) id?: string } + +@InputType('FormSystemCreateFormCertificationTypeInput') +export class FormCertificationTypeCreateInput { + @Field(() => FormCertificationTypeDtoInput, { nullable: true }) + createFormCertificationTypeDto?: FormCertificationTypeDtoInput +} \ No newline at end of file diff --git a/libs/api/domains/form-system/src/dto/formApplicantType.input.ts b/libs/api/domains/form-system/src/dto/formApplicantType.input.ts new file mode 100644 index 000000000000..524ea0521fe9 --- /dev/null +++ b/libs/api/domains/form-system/src/dto/formApplicantType.input.ts @@ -0,0 +1,32 @@ +import { Field, InputType } from '@nestjs/graphql' +import { LanguageTypeInput } from './languageType.input' + +@InputType('FormSystemFormApplicantTypeInput') +export class FormApplicantTypeCreateInput { + @Field(() => String, { nullable: true }) + formId?: string + + @Field(() => String, { nullable: true }) + applicantTypeId?: string +} + +@InputType('FormSystemFormApplicantTypeDtoInput') +export class FormApplicantTypeDtoInput { + @Field(() => LanguageTypeInput, { nullable: true }) + name?: LanguageTypeInput +} + +@InputType('FormSystemFormApplicantTypeUpdateInput') +export class FormApplicantTypeUpdateInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => FormApplicantTypeDtoInput, { nullable: true }) + updateFormApplicantTypeDto?: FormApplicantTypeDtoInput +} + +@InputType('FormSystemFormApplicantTypeDeleteInput') +export class FormApplicantTypeDeleteInput { + @Field(() => String, { nullable: true }) + id?: string +} \ No newline at end of file diff --git a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts index bdc4f81246e1..c755364dca5e 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.resolver.ts @@ -9,18 +9,21 @@ import { } from '@island.is/auth-nest-tools' import { Audit } from '@island.is/nest/audit' import { ApplicationsService } from './applications.service' -import { Application } from '../../models/applications.model' +import { Application, ApplicationListDto } from '../../models/applications.model' import { CreateApplicationInput, GetApplicationInput, + GetApplicationsByOrganizationInput, + SubmitScreenInput, } from '../../dto/application.input' +import { UpdateApplicationDependenciesInput } from '../../dto/applicant.input' @Resolver() @UseGuards(IdsUserGuard) @CodeOwner(CodeOwners.Advania) @Audit({ namespace: '@island.is/api/form-system' }) export class ApplicationsResolver { - constructor(private readonly applicationsService: ApplicationsService) {} + constructor(private readonly applicationsService: ApplicationsService) { } @Query(() => Application, { name: 'formSystemGetApplication', @@ -33,7 +36,7 @@ export class ApplicationsResolver { return this.applicationsService.getApplication(user, input) } - @Mutation(() => Application, { + @Mutation(() => Boolean, { name: 'formSystemCreateApplication', }) async createApplication( @@ -43,4 +46,48 @@ export class ApplicationsResolver { ): Promise { return this.applicationsService.createApplication(user, input) } + + @Mutation(() => Boolean, { + name: 'formSystemUpdateApplicationDependencies', + }) + async updateApplicationDependencies( + @Args('input', { type: () => UpdateApplicationDependenciesInput }) + input: UpdateApplicationDependenciesInput, + @CurrentUser() user: User, + ): Promise { + return this.applicationsService.updateDependencies(user, input) + } + + @Mutation(() => Boolean, { + name: 'formSystemSubmitApplication' + }) + async submitApplication( + @Args('input', { type: () => GetApplicationInput }) + input: GetApplicationInput, + @CurrentUser() user: User, + ): Promise { + return this.applicationsService.submitApplication(user, input) + } + + @Mutation(() => Boolean, { + name: 'formSystemSubmitScreen', + }) + async submitScreen( + @Args('input', { type: () => SubmitScreenInput }) + input: SubmitScreenInput, + @CurrentUser() user: User, + ): Promise { + return this.applicationsService.submitScreen(user, input) + } + + @Query(() => ApplicationListDto, { + name: 'formSystemGetApplicationsByOrganization', + }) + async getApplicationsByOrganization( + @Args('input', { type: () => GetApplicationsByOrganizationInput }) + input: GetApplicationsByOrganizationInput, + @CurrentUser() user: User, + ): Promise { + return this.applicationsService.getAllApplicationsByOrganization(user, input) + } } diff --git a/libs/api/domains/form-system/src/lib/applications/applications.service.ts b/libs/api/domains/form-system/src/lib/applications/applications.service.ts index bb169d6274de..d2f756f9ccde 100644 --- a/libs/api/domains/form-system/src/lib/applications/applications.service.ts +++ b/libs/api/domains/form-system/src/lib/applications/applications.service.ts @@ -4,15 +4,23 @@ import { AuthMiddleware, User } from '@island.is/auth-nest-tools' import { ApolloError } from '@apollo/client' import { handle4xx } from '../../utils/errorHandler' import { + ApplicationListDto, ApplicationsApi, ApplicationsControllerCreateRequest, + ApplicationsControllerFindAllRequest, ApplicationsControllerGetApplicationRequest, + ApplicationsControllerSubmitRequest, + ApplicationsControllerSubmitScreenRequest, + ApplicationsControllerUpdateRequest, } from '@island.is/clients/form-system' import { CreateApplicationInput, GetApplicationInput, + GetApplicationsByOrganizationInput, + SubmitScreenInput, } from '../../dto/application.input' import { Application } from '../../models/applications.model' +import { UpdateApplicationDependenciesInput } from '../../dto/applicant.input' @Injectable() export class ApplicationsService { @@ -20,7 +28,7 @@ export class ApplicationsService { @Inject(LOGGER_PROVIDER) private logger: Logger, private applicationsApi: ApplicationsApi, - ) {} + ) { } // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { @@ -71,4 +79,68 @@ export class ApplicationsService { return response as Application } + + async updateDependencies( + auth: User, + input: UpdateApplicationDependenciesInput + ): Promise { + const response = await this.applicationsApiWithAuth(auth) + .applicationsControllerUpdate( + input as ApplicationsControllerUpdateRequest + ) + .catch((e) => handle4xx(e, this.handleError, 'failed to update application dependencies')) + + if (!response || response instanceof ApolloError) { + return + } + return response + } + + async submitApplication( + auth: User, + input: GetApplicationInput + ): Promise { + const response = await this.applicationsApiWithAuth(auth) + .applicationsControllerSubmit( + input as ApplicationsControllerSubmitRequest + ) + .catch((e) => handle4xx(e, this.handleError, 'failed to submit application')) + + if (!response || response instanceof ApolloError) { + return + } + return response + } + + async submitScreen( + auth: User, + input: SubmitScreenInput + ): Promise { + const response = await this.applicationsApiWithAuth(auth) + .applicationsControllerSubmitScreen( + input as ApplicationsControllerSubmitScreenRequest + ) + .catch((e) => handle4xx(e, this.handleError, 'failed to submit screen')) + + if (!response || response instanceof ApolloError) { + return + } + return response + } + + async getAllApplicationsByOrganization( + auth: User, + input: GetApplicationsByOrganizationInput + ): Promise { + const response = await this.applicationsApiWithAuth(auth) + .applicationsControllerFindAll( + input as ApplicationsControllerFindAllRequest + ) + .catch((e) => handle4xx(e, this.handleError, 'failed to get applications by organization')) + + if (!response || response instanceof ApolloError) { + return {} + } + return response + } } diff --git a/libs/api/domains/form-system/src/lib/formApplicantTypes/formApplicantTypes.resolver.ts b/libs/api/domains/form-system/src/lib/formApplicantTypes/formApplicantTypes.resolver.ts new file mode 100644 index 000000000000..3248b1810bb1 --- /dev/null +++ b/libs/api/domains/form-system/src/lib/formApplicantTypes/formApplicantTypes.resolver.ts @@ -0,0 +1,54 @@ +import { UseGuards } from '@nestjs/common' +import { CodeOwner } from '@island.is/nest/core' +import { CodeOwners } from '@island.is/shared/constants' +import { Args, Mutation, Resolver } from '@nestjs/graphql' +import { + CurrentUser, + IdsUserGuard, + type User, +} from '@island.is/auth-nest-tools' +import { Audit } from '@island.is/nest/audit' +import { FormApplicantTypesService } from './formApplicantTypes.service' +import { FormApplicantType } from '../../models/formApplicantTypes.model' +import { FormApplicantTypeCreateInput, FormApplicantTypeDeleteInput, FormApplicantTypeUpdateInput } from '../../dto/formApplicantType.input' + +@Resolver() +@UseGuards(IdsUserGuard) +@CodeOwner(CodeOwners.Advania) +@Audit({ namespace: '@island.is/api/form-system' }) +export class FormApplicantTypesResolver { + constructor(private readonly formApplicantTypesService: FormApplicantTypesService) { } + + @Mutation(() => FormApplicantType, { + name: 'formSystemCreateFormApplicantType', + }) + async createFormApplicantType( + @Args('input', { type: () => FormApplicantTypeCreateInput }) + input: FormApplicantTypeCreateInput, + @CurrentUser() user: User, + ): Promise { + return this.formApplicantTypesService.createFormApplicantType(user, input) + } + + @Mutation(() => Boolean, { + name: 'formSystemDeleteFormApplicantType', + }) + async deleteFormApplicantType( + @Args('input', { type: () => FormApplicantTypeDeleteInput }) + input: FormApplicantTypeDeleteInput, + @CurrentUser() user: User + ): Promise { + return this.formApplicantTypesService.deleteFormApplicantType(user, input) + } + + @Mutation(() => Boolean, { + name: 'formSystemUpdateFormApplicantType' + }) + async updateFormApplicantType( + @Args('input', { type: () => FormApplicantTypeUpdateInput }) + input: FormApplicantTypeUpdateInput, + @CurrentUser() user: User + ): Promise { + return this.formApplicantTypesService.updateFormApplicantType(user, input) + } +} \ No newline at end of file diff --git a/libs/api/domains/form-system/src/lib/formApplicantTypes/formApplicantTypes.service.ts b/libs/api/domains/form-system/src/lib/formApplicantTypes/formApplicantTypes.service.ts new file mode 100644 index 000000000000..9b5798ab9f87 --- /dev/null +++ b/libs/api/domains/form-system/src/lib/formApplicantTypes/formApplicantTypes.service.ts @@ -0,0 +1,63 @@ +import { Inject, Injectable } from "@nestjs/common" +import { LOGGER_PROVIDER, type Logger } from '@island.is/logging' +import { AuthMiddleware, User } from '@island.is/auth-nest-tools' +import { ApolloError } from '@apollo/client' +import { handle4xx } from '../../utils/errorHandler' +import { FormApplicantTypesApi, FormApplicantTypesControllerCreateRequest, FormApplicantTypesControllerDeleteRequest, FormApplicantTypesControllerUpdateRequest } from '@island.is/clients/form-system' +import { FormApplicantTypeDeleteInput, FormApplicantTypeCreateInput, FormApplicantTypeUpdateInput } from "../../dto/formApplicantType.input" +import { FormApplicantType } from "../../models/formApplicantTypes.model" + +@Injectable() +export class FormApplicantTypesService { + constructor( + @Inject(LOGGER_PROVIDER) + private logger: Logger, + private formApplicantTypesApi: FormApplicantTypesApi, + ) { } + + // eslint-disable-next-line + handleError(error: any, errorDetail?: string): ApolloError | null { + const err = { + error: JSON.stringify(error), + category: 'forms-service', + } + this.logger.error(errorDetail || 'Error in form applicant types service', err) + throw new ApolloError(error.message) + } + + private formApplicantTypesApiWithAuth(auth: User) { + return this.formApplicantTypesApi.withMiddleware(new AuthMiddleware(auth)) + } + + async createFormApplicantType(auth: User, input: FormApplicantTypeCreateInput): Promise { + const response = await this.formApplicantTypesApiWithAuth(auth) + .formApplicantTypesControllerCreate(input as FormApplicantTypesControllerCreateRequest) + .catch((e) => handle4xx(e, this.handleError, 'failed to create form applicant type')) + + if (!response || response instanceof ApolloError) { + return {} + } + return response + } + + async deleteFormApplicantType(auth: User, input: FormApplicantTypeDeleteInput): Promise { + const response = await this.formApplicantTypesApiWithAuth(auth) + .formApplicantTypesControllerDelete(input as FormApplicantTypesControllerDeleteRequest) + .catch((e) => handle4xx(e, this.handleError, 'failed to delete form applicant type')) + + if (!response || response instanceof ApolloError) { + return + } + } + + async updateFormApplicantType(auth: User, input: FormApplicantTypeUpdateInput): Promise { + const response = await this.formApplicantTypesApiWithAuth(auth) + .formApplicantTypesControllerUpdate(input as FormApplicantTypesControllerUpdateRequest) + .catch((e) => handle4xx(e, this.handleError, 'failed to update form applicant type')) + + if (!response || response instanceof ApolloError) { + return + } + return response + } +} \ No newline at end of file diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index c6e436191dd4..244cb8ae936a 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -11,6 +11,7 @@ import { FormsControllerFindAllRequest, FormsControllerFindOneRequest, FormsControllerUpdateFormRequest, + FormUrlsApi, } from '@island.is/clients/form-system' import { CreateFormInput, @@ -26,7 +27,8 @@ export class FormsService { constructor( @Inject(LOGGER_PROVIDER) private readonly logger: Logger, private formsService: FormsApi, - ) {} + private formsUrlService: FormUrlsApi + ) { } // eslint-disable-next-line handleError(error: any, errorDetail?: string): ApolloError | null { diff --git a/libs/api/domains/form-system/src/lib/values/values.resolver.ts b/libs/api/domains/form-system/src/lib/values/values.resolver.ts deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/libs/api/domains/form-system/src/lib/values/values.service.ts b/libs/api/domains/form-system/src/lib/values/values.service.ts deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/libs/api/domains/form-system/src/models/applications.model.ts b/libs/api/domains/form-system/src/models/applications.model.ts index d1016edd8ac3..a5021a59d447 100644 --- a/libs/api/domains/form-system/src/models/applications.model.ts +++ b/libs/api/domains/form-system/src/models/applications.model.ts @@ -1,4 +1,4 @@ -import { Field, ObjectType } from '@nestjs/graphql' +import { Field, Int, ObjectType } from '@nestjs/graphql' import { Section } from './section.model' import { LanguageType } from './languageType.model' import { Dependency } from './form.model' @@ -59,3 +59,13 @@ export class Application { @Field(() => [Section], { nullable: 'itemsAndList' }) sections?: Section[] } + +@ObjectType('FormSystemApplicationListDto') +export class ApplicationListDto { + @Field(() => [Application], { nullable: 'itemsAndList' }) + applications?: Application[] + + @Field(() => Int, { nullable: true }) + total?: number +} + diff --git a/libs/api/domains/form-system/src/models/formApplicantTypes.model.ts b/libs/api/domains/form-system/src/models/formApplicantTypes.model.ts new file mode 100644 index 000000000000..89393bb7111e --- /dev/null +++ b/libs/api/domains/form-system/src/models/formApplicantTypes.model.ts @@ -0,0 +1,14 @@ +import { Field, ObjectType } from "@nestjs/graphql"; +import { LanguageType } from "./languageType.model"; + +@ObjectType('FormSystemFormApplicantType') +export class FormApplicantType { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => String, { nullable: true }) + applicantTypeId?: string + + @Field(() => LanguageType, { nullable: true }) + name?: LanguageType +} \ No newline at end of file diff --git a/libs/api/domains/form-system/src/models/formCertificationTypes.model.ts b/libs/api/domains/form-system/src/models/formCertificationTypes.model.ts new file mode 100644 index 000000000000..22db347eb908 --- /dev/null +++ b/libs/api/domains/form-system/src/models/formCertificationTypes.model.ts @@ -0,0 +1,10 @@ +import { Field, ObjectType } from "@nestjs/graphql" + +@ObjectType('FormSystemFormCertificationType') +export class FormCertificationType { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => String, { nullable: true }) + certificationTypeId?: string +} \ No newline at end of file diff --git a/libs/clients/form-system/src/clientConfig.json b/libs/clients/form-system/src/clientConfig.json index a63fc35f87f3..6a66239be41f 100644 --- a/libs/clients/form-system/src/clientConfig.json +++ b/libs/clients/form-system/src/clientConfig.json @@ -17,7 +17,9 @@ } } }, - "tags": ["internal"] + "tags": [ + "internal" + ] } }, "/version": { @@ -36,7 +38,9 @@ } } }, - "tags": ["internal"] + "tags": [ + "internal" + ] } }, "/health/check": { @@ -225,7 +229,9 @@ } } }, - "tags": ["organizations"] + "tags": [ + "organizations" + ] }, "get": { "operationId": "OrganizationsController_findAll", @@ -243,7 +249,9 @@ } } }, - "tags": ["organizations"] + "tags": [ + "organizations" + ] } }, "/organizations/{id}": { @@ -272,7 +280,9 @@ } } }, - "tags": ["organizations"] + "tags": [ + "organizations" + ] } }, "/forms": { @@ -302,7 +312,9 @@ } } }, - "tags": ["forms"] + "tags": [ + "forms" + ] } }, "/forms/organization/{organizationId}": { @@ -331,7 +343,9 @@ } } }, - "tags": ["forms"] + "tags": [ + "forms" + ] } }, "/forms/{id}": { @@ -360,7 +374,9 @@ } } }, - "tags": ["forms"] + "tags": [ + "forms" + ] }, "put": { "operationId": "FormsController_updateForm", @@ -390,7 +406,9 @@ "description": "Update form" } }, - "tags": ["forms"] + "tags": [ + "forms" + ] }, "delete": { "operationId": "FormsController_delete", @@ -410,7 +428,9 @@ "description": "Delete field" } }, - "tags": ["forms"] + "tags": [ + "forms" + ] } }, "/forms/changePublished/{id}": { @@ -439,7 +459,9 @@ } } }, - "tags": ["forms"] + "tags": [ + "forms" + ] } }, "/forms/publish/{id}": { @@ -468,7 +490,9 @@ } } }, - "tags": ["forms"] + "tags": [ + "forms" + ] } }, "/sections": { @@ -498,7 +522,9 @@ } } }, - "tags": ["sections"] + "tags": [ + "sections" + ] }, "put": { "operationId": "SectionsController_updateDisplayOrder", @@ -519,7 +545,9 @@ "description": "Update display order of sections" } }, - "tags": ["sections"] + "tags": [ + "sections" + ] } }, "/sections/{id}": { @@ -551,7 +579,9 @@ "description": "Updates a section" } }, - "tags": ["sections"] + "tags": [ + "sections" + ] }, "delete": { "operationId": "SectionsController_delete", @@ -571,7 +601,9 @@ "description": "Delete section by id" } }, - "tags": ["sections"] + "tags": [ + "sections" + ] } }, "/screens": { @@ -601,7 +633,9 @@ } } }, - "tags": ["screens"] + "tags": [ + "screens" + ] }, "put": { "operationId": "ScreensController_updateDisplayOrder", @@ -622,7 +656,9 @@ "description": "Update display order of screens" } }, - "tags": ["screens"] + "tags": [ + "screens" + ] } }, "/screens/{id}": { @@ -661,7 +697,9 @@ } } }, - "tags": ["screens"] + "tags": [ + "screens" + ] }, "delete": { "operationId": "ScreensController_delete", @@ -681,7 +719,9 @@ "description": "Delete screen by id" } }, - "tags": ["screens"] + "tags": [ + "screens" + ] } }, "/fields": { @@ -711,7 +751,9 @@ } } }, - "tags": ["fields"] + "tags": [ + "fields" + ] }, "put": { "operationId": "FieldsController_updateDisplayOrder", @@ -732,7 +774,9 @@ "description": "Update display order of fields" } }, - "tags": ["fields"] + "tags": [ + "fields" + ] } }, "/fields/{id}": { @@ -764,7 +808,9 @@ "description": "Update field" } }, - "tags": ["fields"] + "tags": [ + "fields" + ] }, "delete": { "operationId": "FieldsController_delete", @@ -784,7 +830,9 @@ "description": "Delete field by id" } }, - "tags": ["fields"] + "tags": [ + "fields" + ] } }, "/listItems": { @@ -814,7 +862,9 @@ } } }, - "tags": ["list items"] + "tags": [ + "list items" + ] }, "put": { "operationId": "ListItemsController_updateDisplayOrder", @@ -835,7 +885,9 @@ "description": "Update display order of list items" } }, - "tags": ["list items"] + "tags": [ + "list items" + ] } }, "/listItems/{id}": { @@ -867,7 +919,9 @@ "description": "Update list item" } }, - "tags": ["list items"] + "tags": [ + "list items" + ] }, "delete": { "operationId": "ListItemsController_delete", @@ -887,7 +941,9 @@ "description": "Delete of list items" } }, - "tags": ["list items"] + "tags": [ + "list items" + ] } }, "/applications/{id}": { @@ -916,7 +972,9 @@ } } }, - "tags": ["applications"] + "tags": [ + "applications" + ] }, "put": { "operationId": "ApplicationsController_update", @@ -946,7 +1004,9 @@ "description": "Update application dependencies" } }, - "tags": ["applications"] + "tags": [ + "applications" + ] } }, "/applications/{slug}": { @@ -985,7 +1045,9 @@ } } }, - "tags": ["applications"] + "tags": [ + "applications" + ] } }, "/applications/submit/{id}": { @@ -1007,20 +1069,31 @@ "description": "Submit application" } }, - "tags": ["applications"] + "tags": [ + "applications" + ] } }, - "/applications/validateScreen": { + "/applications/submitScreen{screenId}": { "post": { - "operationId": "ApplicationsController_validateScreen", + "operationId": "ApplicationsController_submitScreen", "summary": "validate and save input values of a screen", - "parameters": [], + "parameters": [ + { + "name": "screenId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScreenDto" + "$ref": "#/components/schemas/ApplicationDto" } } } @@ -1030,7 +1103,9 @@ "description": "validate and save input values of a screen" } }, - "tags": ["applications"] + "tags": [ + "applications" + ] } }, "/applications/organization/{organizationId}": { @@ -1083,96 +1158,9 @@ } } }, - "tags": ["applications"] - } - }, - "/values": { - "post": { - "operationId": "ValuesController_create", - "summary": "Creates a new value", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateValueDto" - } - } - } - }, - "responses": { - "201": { - "description": "Creates a new value", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ValueDto" - } - } - } - } - }, - "tags": ["values"] - } - }, - "/values/{id}": { - "put": { - "operationId": "ValuesController_update", - "summary": "Update a value", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateValueDto" - } - } - } - }, - "responses": { - "201": { - "description": "Update a value", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ValueDto" - } - } - } - } - }, - "tags": ["values"] - }, - "delete": { - "operationId": "ValuesController_delete", - "summary": "Delete value by id", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Delete value by id" - } - }, - "tags": ["values"] + "tags": [ + "applications" + ] } }, "/formApplicantTypes": { @@ -1202,7 +1190,9 @@ } } }, - "tags": ["form applicant types"] + "tags": [ + "form applicant types" + ] } }, "/formApplicantTypes/{id}": { @@ -1234,7 +1224,9 @@ "description": "Update form applicant" } }, - "tags": ["form applicant types"] + "tags": [ + "form applicant types" + ] }, "delete": { "operationId": "FormApplicantTypesController_delete", @@ -1254,7 +1246,9 @@ "description": "Delete form applicant" } }, - "tags": ["form applicant types"] + "tags": [ + "form applicant types" + ] } }, "/formCertificationTypes": { @@ -1284,7 +1278,9 @@ } } }, - "tags": ["form certification types"] + "tags": [ + "form certification types" + ] } }, "/formCertificationTypes/{id}": { @@ -1306,7 +1302,9 @@ "description": "Remove form certification type" } }, - "tags": ["form certification types"] + "tags": [ + "form certification types" + ] } }, "/formUrls": { @@ -1336,7 +1334,9 @@ } } }, - "tags": ["form urls"] + "tags": [ + "form urls" + ] } }, "/formUrls/{id}": { @@ -1358,7 +1358,9 @@ "description": "Remove form url" } }, - "tags": ["form urls"] + "tags": [ + "form urls" + ] } }, "/organizationCertificationTypes": { @@ -1388,7 +1390,9 @@ } } }, - "tags": ["organization certification types"] + "tags": [ + "organization certification types" + ] } }, "/organizationCertificationTypes/{id}": { @@ -1410,7 +1414,9 @@ "description": "Remove organization certification type" } }, - "tags": ["organization certification types"] + "tags": [ + "organization certification types" + ] } }, "/organizationFieldTypes": { @@ -1440,7 +1446,9 @@ } } }, - "tags": ["organization field types"] + "tags": [ + "organization field types" + ] } }, "/organizationFieldTypes/{id}": { @@ -1462,7 +1470,9 @@ "description": "Remove organization field type" } }, - "tags": ["organization field types"] + "tags": [ + "organization field types" + ] } }, "/organizationListTypes": { @@ -1492,7 +1502,9 @@ } } }, - "tags": ["organization list types"] + "tags": [ + "organization list types" + ] } }, "/organizationListTypes/{id}": { @@ -1514,7 +1526,9 @@ "description": "Remove organization list type" } }, - "tags": ["organization list types"] + "tags": [ + "organization list types" + ] } }, "/organizationUrls": { @@ -1544,7 +1558,9 @@ } } }, - "tags": ["organization urls"] + "tags": [ + "organization urls" + ] } }, "/organizationUrls/{id}": { @@ -1576,7 +1592,9 @@ "description": "Update an organization url" } }, - "tags": ["organization urls"] + "tags": [ + "organization urls" + ] }, "delete": { "operationId": "OrganizationUrlsController_delete", @@ -1596,7 +1614,9 @@ "description": "Remove organization url" } }, - "tags": ["organization urls"] + "tags": [ + "organization urls" + ] } } }, @@ -1621,7 +1641,9 @@ "type": "boolean" } }, - "required": ["ok"] + "required": [ + "ok" + ] }, "Version": { "type": "object", @@ -1630,7 +1652,9 @@ "type": "string" } }, - "required": ["version"] + "required": [ + "version" + ] }, "LanguageType": { "type": "object", @@ -1644,7 +1668,10 @@ "default": "" } }, - "required": ["is", "en"] + "required": [ + "is", + "en" + ] }, "CreateOrganizationDto": { "type": "object", @@ -1656,7 +1683,10 @@ "type": "string" } }, - "required": ["name", "nationalId"] + "required": [ + "name", + "nationalId" + ] }, "Dependency": { "type": "object", @@ -1674,7 +1704,11 @@ "type": "boolean" } }, - "required": ["parentProp", "childProps", "isSelected"] + "required": [ + "parentProp", + "childProps", + "isSelected" + ] }, "FormCertificationTypeDto": { "type": "object", @@ -1686,7 +1720,10 @@ "type": "string" } }, - "required": ["id", "certificationTypeId"] + "required": [ + "id", + "certificationTypeId" + ] }, "FormApplicantTypeDto": { "type": "object", @@ -1701,7 +1738,11 @@ "$ref": "#/components/schemas/LanguageType" } }, - "required": ["id", "applicantTypeId", "name"] + "required": [ + "id", + "applicantTypeId", + "name" + ] }, "FormUrlDto": { "type": "object", @@ -1835,7 +1876,13 @@ "type": "boolean" } }, - "required": ["id", "label", "value", "displayOrder", "isSelected"] + "required": [ + "id", + "label", + "value", + "displayOrder", + "isSelected" + ] }, "Month": { "type": "object", @@ -1972,7 +2019,11 @@ } } }, - "required": ["id", "order", "events"] + "required": [ + "id", + "order", + "events" + ] }, "FieldDto": { "type": "object", @@ -2238,7 +2289,11 @@ } } }, - "required": ["id", "name", "nationalId"] + "required": [ + "id", + "name", + "nationalId" + ] }, "OrganizationsResponseDto": { "type": "object", @@ -2250,7 +2305,9 @@ } } }, - "required": ["organizations"] + "required": [ + "organizations" + ] }, "CreateFormDto": { "type": "object", @@ -2259,7 +2316,9 @@ "type": "string" } }, - "required": ["organizationId"] + "required": [ + "organizationId" + ] }, "FieldType": { "type": "object", @@ -2286,7 +2345,12 @@ } } }, - "required": ["id", "name", "description", "isCommon"] + "required": [ + "id", + "name", + "description", + "isCommon" + ] }, "CertificationType": { "type": "object", @@ -2304,7 +2368,12 @@ "type": "boolean" } }, - "required": ["id", "name", "description", "isCommon"] + "required": [ + "id", + "name", + "description", + "isCommon" + ] }, "ApplicantType": { "type": "object", @@ -2325,7 +2394,10 @@ } } }, - "required": ["id", "description"] + "required": [ + "id", + "description" + ] }, "ListType": { "type": "object", @@ -2343,7 +2415,12 @@ "type": "boolean" } }, - "required": ["id", "name", "description", "isCommon"] + "required": [ + "id", + "name", + "description", + "isCommon" + ] }, "OrganizationUrlDto": { "type": "object", @@ -2367,7 +2444,14 @@ "type": "string" } }, - "required": ["id", "url", "isXroad", "isTest", "type", "method"] + "required": [ + "id", + "url", + "isXroad", + "isTest", + "type", + "method" + ] }, "FormResponseDto": { "type": "object", @@ -2459,7 +2543,10 @@ "type": "number" } }, - "required": ["formId", "displayOrder"] + "required": [ + "formId", + "displayOrder" + ] }, "UpdateSectionDto": { "type": "object", @@ -2479,7 +2566,9 @@ "type": "string" } }, - "required": ["id"] + "required": [ + "id" + ] }, "UpdateSectionsDisplayOrderDto": { "type": "object", @@ -2491,7 +2580,9 @@ } } }, - "required": ["sectionsDisplayOrderDto"] + "required": [ + "sectionsDisplayOrderDto" + ] }, "CreateScreenDto": { "type": "object", @@ -2503,7 +2594,10 @@ "type": "number" } }, - "required": ["sectionId", "displayOrder"] + "required": [ + "sectionId", + "displayOrder" + ] }, "UpdateScreenDto": { "type": "object", @@ -2529,7 +2623,10 @@ "type": "string" } }, - "required": ["id", "sectionId"] + "required": [ + "id", + "sectionId" + ] }, "UpdateScreensDisplayOrderDto": { "type": "object", @@ -2541,7 +2638,9 @@ } } }, - "required": ["screensDisplayOrderDto"] + "required": [ + "screensDisplayOrderDto" + ] }, "CreateFieldDto": { "type": "object", @@ -2556,7 +2655,11 @@ "type": "number" } }, - "required": ["screenId", "fieldType", "displayOrder"] + "required": [ + "screenId", + "fieldType", + "displayOrder" + ] }, "UpdateFieldDto": { "type": "object", @@ -2591,7 +2694,10 @@ "type": "string" } }, - "required": ["id", "screenId"] + "required": [ + "id", + "screenId" + ] }, "UpdateFieldsDisplayOrderDto": { "type": "object", @@ -2603,7 +2709,9 @@ } } }, - "required": ["fieldsDisplayOrderDto"] + "required": [ + "fieldsDisplayOrderDto" + ] }, "CreateListItemDto": { "type": "object", @@ -2615,7 +2723,10 @@ "type": "number" } }, - "required": ["fieldId", "displayOrder"] + "required": [ + "fieldId", + "displayOrder" + ] }, "UpdateListItemDto": { "type": "object", @@ -2641,7 +2752,9 @@ "type": "string" } }, - "required": ["id"] + "required": [ + "id" + ] }, "UpdateListItemsDisplayOrderDto": { "type": "object", @@ -2653,7 +2766,9 @@ } } }, - "required": ["listItemsDisplayOrderDto"] + "required": [ + "listItemsDisplayOrderDto" + ] }, "ApplicationDto": { "type": "object", @@ -2714,6 +2829,12 @@ "items": { "$ref": "#/components/schemas/SectionDto" } + }, + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ValueDto" + } } } }, @@ -2724,7 +2845,9 @@ "type": "boolean" } }, - "required": ["isTest"] + "required": [ + "isTest" + ] }, "UpdateApplicationDto": { "type": "object", @@ -2757,33 +2880,6 @@ } } }, - "CreateValueDto": { - "type": "object", - "properties": { - "order": { - "type": "number" - }, - "fieldId": { - "type": "string" - }, - "fieldType": { - "type": "string" - }, - "applicationId": { - "type": "string" - } - }, - "required": ["order", "fieldId", "fieldType", "applicationId"] - }, - "UpdateValueDto": { - "type": "object", - "properties": { - "json": { - "$ref": "#/components/schemas/ValueType" - } - }, - "required": ["json"] - }, "CreateFormApplicantTypeDto": { "type": "object", "properties": { @@ -2794,7 +2890,10 @@ "type": "string" } }, - "required": ["formId", "applicantTypeId"] + "required": [ + "formId", + "applicantTypeId" + ] }, "UpdateFormApplicantTypeDto": { "type": "object", @@ -2803,7 +2902,9 @@ "$ref": "#/components/schemas/LanguageType" } }, - "required": ["name"] + "required": [ + "name" + ] }, "CreateFormCertificationTypeDto": { "type": "object", @@ -2815,7 +2916,10 @@ "type": "string" } }, - "required": ["formId", "certificationTypeId"] + "required": [ + "formId", + "certificationTypeId" + ] }, "CreateFormUrlDto": { "type": "object", @@ -2827,7 +2931,10 @@ "type": "string" } }, - "required": ["formId", "organizationUrlId"] + "required": [ + "formId", + "organizationUrlId" + ] }, "CreateOrganizationCertificationTypeDto": { "type": "object", @@ -2839,7 +2946,10 @@ "type": "string" } }, - "required": ["organizationId", "certificationTypeId"] + "required": [ + "organizationId", + "certificationTypeId" + ] }, "OrganizationCertificationTypeDto": { "type": "object", @@ -2851,7 +2961,10 @@ "type": "string" } }, - "required": ["id", "certificationTypeId"] + "required": [ + "id", + "certificationTypeId" + ] }, "CreateOrganizationFieldTypeDto": { "type": "object", @@ -2863,7 +2976,10 @@ "type": "string" } }, - "required": ["organizationId", "fieldTypeId"] + "required": [ + "organizationId", + "fieldTypeId" + ] }, "OrganizationFieldTypeDto": { "type": "object", @@ -2875,7 +2991,10 @@ "type": "string" } }, - "required": ["id", "fieldTypeId"] + "required": [ + "id", + "fieldTypeId" + ] }, "CreateOrganizationListTypeDto": { "type": "object", @@ -2887,7 +3006,10 @@ "type": "string" } }, - "required": ["organizationId", "listTypeId"] + "required": [ + "organizationId", + "listTypeId" + ] }, "OrganizationListTypeDto": { "type": "object", @@ -2899,7 +3021,10 @@ "type": "string" } }, - "required": ["id", "listTypeId"] + "required": [ + "id", + "listTypeId" + ] }, "CreateOrganizationUrlDto": { "type": "object", @@ -2911,7 +3036,10 @@ "type": "string" } }, - "required": ["organizationId", "type"] + "required": [ + "organizationId", + "type" + ] }, "UpdateOrganizationUrlDto": { "type": "object", @@ -2929,4 +3057,4 @@ } } } -} +} \ No newline at end of file diff --git a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts index f2a65d608fe3..ac99944ea89a 100644 --- a/libs/clients/form-system/src/lib/FormSystemApiProvider.ts +++ b/libs/clients/form-system/src/lib/FormSystemApiProvider.ts @@ -13,7 +13,6 @@ import { SectionsApi, FormApplicantTypesApi, FormCertificationTypesApi, - ValuesApi, } from '../../gen/fetch' const provideApi = ( @@ -47,4 +46,4 @@ export const ScreensApiProvider = provideApi(ScreensApi) export const SectionsApiProvider = provideApi(SectionsApi) export const FormApplicantProvider = provideApi(FormApplicantTypesApi) export const CertificationsProvider = provideApi(FormCertificationTypesApi) -export const ValuesProvider = provideApi(ValuesApi) + diff --git a/libs/clients/form-system/src/lib/form-system.module.ts b/libs/clients/form-system/src/lib/form-system.module.ts index f5679428caa4..8216840741ad 100644 --- a/libs/clients/form-system/src/lib/form-system.module.ts +++ b/libs/clients/form-system/src/lib/form-system.module.ts @@ -9,7 +9,6 @@ import { OrganizationsApiProvider, ScreensApiProvider, SectionsApiProvider, - ValuesProvider, } from './FormSystemApiProvider' import { ApplicationsApi, @@ -21,7 +20,6 @@ import { OrganizationsApi, ScreensApi, SectionsApi, - ValuesApi, } from '../../gen/fetch' @Module({ @@ -36,7 +34,6 @@ import { SectionsApiProvider, FormApplicantProvider, CertificationsProvider, - ValuesProvider, ], exports: [ ApplicationsApi, @@ -48,7 +45,6 @@ import { SectionsApi, FormApplicantTypesApi, FormCertificationTypesApi, - ValuesApi, ], }) -export class FormSystemClientModule {} +export class FormSystemClientModule { } From 07bbd1241aeebeace63387edf941383b7b475810 Mon Sep 17 00:00:00 2001 From: Hyosam Date: Thu, 23 Jan 2025 13:55:22 +0000 Subject: [PATCH 129/129] feat(form-system): add OrganizationUrl and OrganizationUrlInput types with related fields --- .../domains/form-system/src/dto/form.input.ts | 24 +++++++++++++++++++ .../src/lib/forms/forms.service.ts | 2 +- .../form-system/src/models/form.model.ts | 24 +++++++++++++++++++ .../graphql/src/lib/fragments/form.ts | 9 +++++++ .../graphql/src/lib/fragments/formResponse.ts | 8 +++++++ 5 files changed, 66 insertions(+), 1 deletion(-) diff --git a/libs/api/domains/form-system/src/dto/form.input.ts b/libs/api/domains/form-system/src/dto/form.input.ts index d620837877f5..cd9b6e2811ae 100644 --- a/libs/api/domains/form-system/src/dto/form.input.ts +++ b/libs/api/domains/form-system/src/dto/form.input.ts @@ -71,6 +71,27 @@ export class FormUrlInput { method?: string } +@InputType('FormSystemOrganizationUrlInput') +export class OrganizationUrlInput { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => String, { nullable: true }) + url?: string + + @Field(() => Boolean, { nullable: true }) + isXroad?: boolean + + @Field(() => Boolean, { nullable: true }) + isTest?: boolean + + @Field(() => String, { nullable: true }) + type?: string + + @Field(() => String, { nullable: true }) + method?: string +} + @InputType('FormSystemUpdateFormDtoInput') export class UpdateFormDtoInput { @Field(() => String, { nullable: true }) @@ -198,4 +219,7 @@ export class FormResponseInput { @Field(() => [FormInput], { nullable: 'itemsAndList' }) forms?: FormInput[] + + @Field(() => [OrganizationUrlInput], { nullable: 'itemsAndList' }) + urls?: OrganizationUrlInput[] } diff --git a/libs/api/domains/form-system/src/lib/forms/forms.service.ts b/libs/api/domains/form-system/src/lib/forms/forms.service.ts index 244cb8ae936a..cef03aac247f 100644 --- a/libs/api/domains/form-system/src/lib/forms/forms.service.ts +++ b/libs/api/domains/form-system/src/lib/forms/forms.service.ts @@ -27,7 +27,7 @@ export class FormsService { constructor( @Inject(LOGGER_PROVIDER) private readonly logger: Logger, private formsService: FormsApi, - private formsUrlService: FormUrlsApi + // private formsUrlService: FormUrlsApi ) { } // eslint-disable-next-line diff --git a/libs/api/domains/form-system/src/models/form.model.ts b/libs/api/domains/form-system/src/models/form.model.ts index 67fda21bd49b..0e233b2ecc62 100644 --- a/libs/api/domains/form-system/src/models/form.model.ts +++ b/libs/api/domains/form-system/src/models/form.model.ts @@ -110,6 +110,27 @@ export class Form { urls?: FormUrl[] } +@ObjectType('FormSystemOrganizationUrl') +export class OrganizationUrl { + @Field(() => String, { nullable: true }) + id?: string + + @Field(() => String, { nullable: true }) + url?: string + + @Field(() => Boolean, { nullable: true }) + isXroad?: boolean + + @Field(() => Boolean, { nullable: true }) + isTest?: boolean + + @Field(() => String, { nullable: true }) + type?: string + + @Field(() => String, { nullable: true }) + method?: string +} + @ObjectType('FormSystemFormResponse') export class FormResponse { @Field(() => Form, { nullable: true }) @@ -129,4 +150,7 @@ export class FormResponse { @Field(() => [Form], { nullable: 'itemsAndList' }) forms?: Form[] + + @Field(() => [OrganizationUrl], { nullable: 'itemsAndList' }) + urls?: OrganizationUrl[] } diff --git a/libs/portals/form-system/graphql/src/lib/fragments/form.ts b/libs/portals/form-system/graphql/src/lib/fragments/form.ts index 263350de3ae9..67df3b43faff 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/form.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/form.ts @@ -44,6 +44,15 @@ export const FormFragment = gql` ...Dependency } status + urls { + id + organizationUrlId + url + isXroad + isTest + type + method + } } ${LanguageFields} ${FormApplicantFragment} diff --git a/libs/portals/form-system/graphql/src/lib/fragments/formResponse.ts b/libs/portals/form-system/graphql/src/lib/fragments/formResponse.ts index 73f69d3c933d..d059e1950342 100644 --- a/libs/portals/form-system/graphql/src/lib/fragments/formResponse.ts +++ b/libs/portals/form-system/graphql/src/lib/fragments/formResponse.ts @@ -25,6 +25,14 @@ export const FormResponseFragment = gql` forms { ...Form } + urls { + id + url + isXroad + isTest + type + method + } } ${FormApplicantFragment} ${FormFragment}